{"version":3,"sources":["../../../node_modules/@wix/ambassador-forms-v4-form/types.impl.ts","../../../node_modules/prosemirror-model/dist/index.js","../../../node_modules/prosemirror-transform/dist/index.js","../../../node_modules/prosemirror-state/dist/index.js","../../../node_modules/w3c-keyname/index.js","../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/common.enums.ts","../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/common.ts","../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/decoration_anchor.ts","../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/decoration_color.ts","../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/decoration_fontfamily.ts","../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/decoration_fontsize.enums.ts","../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/decoration_fontsize.ts","../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/decoration_link.ts","../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/decoration_mention.ts","../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/decoration_spoiler.ts","../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/node_blockquote.ts","../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/node_caption.ts","../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/node_card.enums.ts","../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/node_card.ts","../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/node_code_block.ts","../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/node_heading.ts","../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/node_layout.enums.ts","../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/node_layout.ts","../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/node_layout_cell.ts","../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/node_list.ts","../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/node_paragraph.ts","../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/plugin_app_embed.enums.ts","../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/plugin_app_embed.ts","../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/plugin_audio.ts","../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/plugin_button.enums.ts","../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/plugin_button.ts","../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/plugin_collapsible_list.enums.ts","../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/plugin_collapsible_list.ts","../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/plugin_divider.enums.ts","../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/plugin_divider.ts","../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/plugin_embed.ts","../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/plugin_file.enums.ts","../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/plugin_file.ts","../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/plugin_gallery.enums.ts","../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/plugin_gallery.ts","../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/plugin_gif.enums.ts","../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/plugin_gif.ts","../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/plugin_html.enums.ts","../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/plugin_html.ts","../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/plugin_image.ts","../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/plugin_link_preview.enums.ts","../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/plugin_link_preview.ts","../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/plugin_map.enums.ts","../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/plugin_map.ts","../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/plugin_poll.enums.ts","../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/plugin_poll.ts","../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/plugin_shape.ts","../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/plugin_table.ts","../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/plugin_table_cell.enums.ts","../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/plugin_table_cell.ts","../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/plugin_video.ts","../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/rich_content.enums.ts","../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/struct.enums.ts","../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/struct.ts","../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/rich_content.ts","../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/index.ts","../../../node_modules/fp-ts-esm/es6/function.js","../../../node_modules/fp-ts-esm/es6/internal.js","../../../node_modules/fp-ts-esm/es6/Apply.js","../../../node_modules/fp-ts-esm/es6/Chain.js","../../../node_modules/fp-ts-esm/es6/FromEither.js","../../../node_modules/fp-ts-esm/es6/Functor.js","../../../node_modules/fp-ts-esm/es6/Eq.js","../../../node_modules/fp-ts-esm/es6/Ord.js","../../../node_modules/fp-ts-esm/es6/Magma.js","../../../node_modules/fp-ts-esm/es6/Semigroup.js","../../../node_modules/fp-ts-esm/es6/ReadonlyNonEmptyArray.js","../../../node_modules/fp-ts-esm/es6/NonEmptyArray.js","../../../node_modules/fp-ts-esm/es6/number.js","../../../node_modules/fp-ts-esm/es6/Separated.js","../../../node_modules/fp-ts-esm/es6/Witherable.js","../../../node_modules/fp-ts-esm/es6/Zero.js","../../../node_modules/fp-ts-esm/es6/ReadonlyArray.js","../../../node_modules/fp-ts-esm/es6/Array.js","../../../node_modules/fp-ts-esm/es6/Applicative.js","../../../node_modules/fp-ts-esm/es6/Predicate.js","../../../node_modules/fp-ts-esm/es6/Option.js","../../../node_modules/fp-ts-esm/es6/Tree.js","../../../node_modules/fp-ts-esm/es6/Const.js","../../../node_modules/fp-ts-esm/es6/Endomorphism.js","../../../node_modules/fp-ts-esm/es6/Monoid.js","../../../node_modules/fp-ts-esm/es6/pipeable.js","../../../node_modules/fp-ts-esm/es6/ReadonlyMap.js","../../../node_modules/fp-ts-esm/es6/ReadonlySet.js","../../../node_modules/fp-ts-esm/es6/string.js","../../../node_modules/fp-ts-esm/es6/ReadonlyRecord.js","../../../node_modules/fp-ts-esm/es6/ChainRec.js","../../../node_modules/fp-ts-esm/es6/Either.js","../../../node_modules/monocle-ts-esm/es6/internal.js","../../../node_modules/monocle-ts-esm/es6/At.js","../../../node_modules/monocle-ts-esm/es6/Iso.js","../../../node_modules/monocle-ts-esm/es6/Ix.js","../../../node_modules/monocle-ts-esm/es6/Lens.js","../../../node_modules/monocle-ts-esm/es6/Optional.js","../../../node_modules/monocle-ts-esm/es6/Prism.js","../../../node_modules/monocle-ts-esm/es6/Traversal.js","../../../node_modules/monocle-ts-esm/es6/index.js","../../../node_modules/@wix/ricos/src/ricos-content/extractor-infra.ts","../../../node_modules/lodash/lodash.js","../../../node_modules/@wix/ricos/src/ricos-content/converters/generateRandomId.ts","../../../node_modules/@wix/ricos/src/ricos-content/modifier-infra.ts","../../../node_modules/@wix/ricos/src/ricos-styles/theme-constants.ts","../../../node_modules/classnames/index.js","../../../node_modules/fp-ts-esm/es6/Record.js","../../../node_modules/fp-ts-esm/es6/ReadonlyTuple.js","../../../node_modules/fp-ts-esm/es6/Tuple.js","../../../node_modules/@wix/ricos/src/ricos-content/utils.ts","../../../node_modules/@wix/ricos/src/ricos-content/lib/utils.ts","../../../node_modules/@wix/ricos/src/ricos-styles/decorations/empty-decoration.ts","../../../node_modules/@wix/ricos/src/ricos-styles/decorations/bold-decoration.ts","../../../node_modules/@wix/ricos/src/ricos-styles/decorations/color-decoration.ts","../../../node_modules/@wix/ricos/src/ricos-styles/decorations/font-size-decoration.ts","../../../node_modules/@wix/ricos/src/ricos-styles/decorations/italic-decoration.ts","../../../node_modules/@wix/ricos/src/ricos-styles/decorations/utils.ts","../../../node_modules/@wix/ricos/src/ricos-styles/decorations/decorations.ts","../../../node_modules/@wix/ricos/src/ricos-styles/decorations/index.ts","../../../node_modules/@wix/ricos/src/ricos-styles/document-style/node-style.ts","../../../node_modules/@wix/ricos/src/ricos-styles/document-style/text-style.ts","../../../node_modules/@wix/ricos/src/ricos-styles/themeStrategy/palettes/wixPaletteUtils.ts","../../../node_modules/@wix/ricos/src/ricos-styles/themeStrategy/palettes/index.ts","../../../node_modules/@wix/ricos/src/ricos-styles/themeStrategy/themeUtils.ts","../../../node_modules/@wix/ricos/src/ricos-styles/themeStrategy/generators/identifiers.ts","../../../node_modules/@wix/ricos/src/ricos-styles/themeStrategy/generators/palette.ts","../../../node_modules/@wix/ricos/src/ricos-styles/textual-theme/custom-style.ts","../../../node_modules/@wix/ricos/src/ricos-styles/textual-theme/empty-custom-style.ts","../../../node_modules/@wix/ricos/src/ricos-styles/textual-theme/custom-styles.ts","../../../node_modules/@wix/ricos/src/ricos-styles/text-style-transformer.ts","../../../node_modules/@wix/ricos/src/ricos-styles/themeStrategy/generators/customStyles.ts","../../../node_modules/@wix/ricos/src/ricos-styles/themeStrategy/generators/typography.ts","../../../node_modules/@wix/ricos/src/ricos-styles/themeStrategy/build-theme-css-vars.ts","../../../node_modules/@wix/ricos/src/ricos-schema/next-schema/generated/ricos_document.ts","../../../node_modules/@wix/ricos/dist/es/ricos-schema/next-schema/generated/ricos_document.jtd.json.js","../../../node_modules/@wix/ricos/src/ricos-schema/next-schema/plugin-names.ts","../../../node_modules/@wix/ricos/src/ricos-schema/next-schema/unicode-base64.ts","../../../node_modules/json-to-ast/build.js","../../../node_modules/@wix/ricos/src/ricos-schema/next-schema/validator/pointerUtils.ts","../../../node_modules/@wix/ricos/src/ricos-schema/next-schema/json-typedef-js-fork/schema.ts","../../../node_modules/@wix/ricos/src/ricos-schema/next-schema/json-typedef-js-fork/validate.ts","../../../node_modules/@wix/ricos/src/ricos-schema/next-schema/plugin-to-feature.ts","../../../node_modules/@wix/ricos/src/ricos-schema/next-schema/validator/validate-ricos-document.ts","../../../node_modules/@wix/ricos/src/ricos-schema/next-schema/validator/parseFromString.ts","../../../node_modules/@wix/ricos/src/ricos-schema/next-schema/version.ts","../../../node_modules/@wix/ricos/src/ricos-schema/next-schema/index.ts","../../../node_modules/@wix/ricos/src/_shared/pm-node-types.ts","../../../node_modules/@wix/ricos/src/ricos-styles/resolve-theme.ts","../../../node_modules/@wix/ricos/src/ricos-styles/z-index-service.ts","../../../node_modules/@wix/ricos/src/ricos-styles/index.ts","../../../node_modules/@wix/ricos/src/ricos-content/consts.ts","../../../node_modules/fp-ts-esm/es6/boolean.js","../../../node_modules/@wix/ricos/src/ricos-content/fp-utils.ts","../../../node_modules/@wix/ricos/src/ricos-content/getTextDirection.ts","../../../node_modules/@wix/ricos/src/wix-rich-content-common/Components/AccessibilityListener.tsx","../../../node_modules/@wix/ricos/src/wix-rich-content-common/consts.ts","../../../node_modules/@wix/ricos/src/wix-rich-content-common/Utils/anchor.ts","../../../node_modules/@wix/ricos/src/wix-rich-content-common/Utils/contexts.tsx","../../../node_modules/@wix/ricos/src/wix-rich-content-common/Utils/getListSymbol.ts","../../../node_modules/@wix/ricos/src/wix-rich-content-common/Utils/linkConverters.ts","../../../node_modules/@wix/ricos/src/wix-rich-content-common/Utils/normalizeOffset.ts","../../../node_modules/@wix/ricos/src/wix-rich-content-common/Utils/rtlUtils.ts","../../../node_modules/@wix/ricos/src/wix-rich-content-common/Utils/ssrUtils.ts","../../../node_modules/@wix/ricos/src/wix-rich-content-common/Utils/uuid.ts","../../../node_modules/jotai/esm/vanilla.mjs","../../../node_modules/jotai/esm/index.mjs","../../../node_modules/prosemirror-dev-tools/dist/esm/state/global.js","../../../node_modules/@compiled/react/src/runtime/dev-warnings.ts","../../../node_modules/@compiled/react/src/runtime/is-server-environment.ts","../../../node_modules/@compiled/react/src/runtime/sheet.ts","../../../node_modules/@compiled/react/src/runtime/style-cache.tsx","../../../node_modules/@compiled/react/src/runtime/style.tsx","../../../node_modules/@compiled/react/src/runtime/ax.ts","../../../node_modules/@compiled/react/src/runtime/css-custom-property.ts","../../../node_modules/@compiled/react/src/runtime/index.ts","../../../node_modules/@compiled/react/src/runtime.ts","../../../node_modules/prosemirror-dev-tools/dist/esm/theme.js","../../../node_modules/prosemirror-dev-tools/dist/esm/dev-tools-collapsed.js","../../../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../../../node_modules/@babel/runtime/helpers/esm/typeof.js","../../../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../../../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../../../node_modules/@babel/runtime/helpers/esm/createClass.js","../../../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../../../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../../../node_modules/@babel/runtime/helpers/esm/inherits.js","../../../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../../../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../../../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../../../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../../../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../../../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../../../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../../../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../../../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../../../node_modules/react-is/cjs/react-is.development.js","../../../node_modules/react-is/index.js","../../../node_modules/object-assign/index.js","../../../node_modules/prop-types/lib/ReactPropTypesSecret.js","../../../node_modules/prop-types/lib/has.js","../../../node_modules/prop-types/checkPropTypes.js","../../../node_modules/prop-types/factoryWithTypeCheckers.js","../../../node_modules/prop-types/index.js","../../../node_modules/lodash.debounce/index.js","../../../node_modules/react-dock/lib/esm/autoprefix.js","../../../node_modules/react-dock/lib/esm/Dock.js","../../../node_modules/react-dock/lib/esm/index.js","../../../node_modules/prosemirror-dev-tools/dist/esm/components/tabs.js","../../../node_modules/prosemirror-dev-tools/dist/esm/utils/format-selection-object.js","../../../node_modules/prosemirror-dev-tools/dist/esm/components/split-view.js","../../../node_modules/@babel/runtime/helpers/esm/extends.js","../../../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../../../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../../../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../../../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../../../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../../../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../../../node_modules/react-json-tree/lib/esm/objType.js","../../../node_modules/react-json-tree/lib/esm/JSONArrow.js","../../../node_modules/react-json-tree/lib/esm/getCollectionEntries.js","../../../node_modules/react-json-tree/lib/esm/ItemRange.js","../../../node_modules/react-json-tree/lib/esm/JSONNestedNode.js","../../../node_modules/react-json-tree/lib/esm/JSONObjectNode.js","../../../node_modules/react-json-tree/lib/esm/JSONArrayNode.js","../../../node_modules/react-json-tree/lib/esm/JSONIterableNode.js","../../../node_modules/react-json-tree/lib/esm/JSONValueNode.js","../../../node_modules/react-json-tree/lib/esm/JSONNode.js","../../../node_modules/base16/lib/threezerotwofour.js","../../../node_modules/base16/lib/apathy.js","../../../node_modules/base16/lib/ashes.js","../../../node_modules/base16/lib/atelier-dune.js","../../../node_modules/base16/lib/atelier-forest.js","../../../node_modules/base16/lib/atelier-heath.js","../../../node_modules/base16/lib/atelier-lakeside.js","../../../node_modules/base16/lib/atelier-seaside.js","../../../node_modules/base16/lib/bespin.js","../../../node_modules/base16/lib/brewer.js","../../../node_modules/base16/lib/bright.js","../../../node_modules/base16/lib/chalk.js","../../../node_modules/base16/lib/codeschool.js","../../../node_modules/base16/lib/colors.js","../../../node_modules/base16/lib/default.js","../../../node_modules/base16/lib/eighties.js","../../../node_modules/base16/lib/embers.js","../../../node_modules/base16/lib/flat.js","../../../node_modules/base16/lib/google.js","../../../node_modules/base16/lib/grayscale.js","../../../node_modules/base16/lib/greenscreen.js","../../../node_modules/base16/lib/harmonic.js","../../../node_modules/base16/lib/hopscotch.js","../../../node_modules/base16/lib/isotope.js","../../../node_modules/base16/lib/marrakesh.js","../../../node_modules/base16/lib/mocha.js","../../../node_modules/base16/lib/monokai.js","../../../node_modules/base16/lib/ocean.js","../../../node_modules/base16/lib/paraiso.js","../../../node_modules/base16/lib/pop.js","../../../node_modules/base16/lib/railscasts.js","../../../node_modules/base16/lib/shapeshifter.js","../../../node_modules/base16/lib/solarized.js","../../../node_modules/base16/lib/summerfruit.js","../../../node_modules/base16/lib/tomorrow.js","../../../node_modules/base16/lib/tube.js","../../../node_modules/base16/lib/twilight.js","../../../node_modules/base16/lib/index.js","../../../node_modules/color-name/index.js","../../../node_modules/simple-swizzle/node_modules/is-arrayish/index.js","../../../node_modules/simple-swizzle/index.js","../../../node_modules/color-string/index.js","../../../node_modules/color-convert/node_modules/color-name/index.js","../../../node_modules/color-convert/conversions.js","../../../node_modules/color-convert/route.js","../../../node_modules/color-convert/index.js","../../../node_modules/react-base16-styling/node_modules/color/index.js","../../../node_modules/lodash.curry/index.js","../../../node_modules/react-base16-styling/lib/esm/colorConverters.js","../../../node_modules/react-base16-styling/lib/esm/types.js","../../../node_modules/react-base16-styling/lib/esm/index.js","../../../node_modules/react-json-tree/lib/esm/themes/solarized.js","../../../node_modules/react-json-tree/lib/esm/createStylingFromTheme.js","../../../node_modules/react-json-tree/lib/esm/index.js","../../../node_modules/prosemirror-dev-tools/dist/esm/components/json-tree.js","../../../node_modules/prosemirror-dev-tools/dist/esm/components/heading.js","../../../node_modules/prosemirror-dev-tools/dist/esm/state/editor-state.js","../../../node_modules/prosemirror-dev-tools/dist/esm/state/active-marks.js","../../../node_modules/prosemirror-dev-tools/dist/esm/state/expand-path.js","../../../node_modules/prosemirror-dev-tools/dist/esm/utils/find-node.js","../../../node_modules/prosemirror-dev-tools/dist/esm/utils/log-node-from-json.js","../../../node_modules/prosemirror-dev-tools/dist/esm/tabs/state.js","../../../node_modules/prosemirror-dev-tools/dist/esm/components/info-panel.js","../../../node_modules/prosemirror-dev-tools/dist/esm/components/list.js","../../../node_modules/prosemirror-dev-tools/dist/esm/components/json-diff.js","../../../node_modules/prosemirror-dev-tools/dist/esm/components/highlighter.js","../../../node_modules/html/lib/html.js","../../../node_modules/prosemirror-dev-tools/node_modules/nanoid/index.browser.js","../../../node_modules/prosemirror-dev-tools/dist/esm/state/history.js","../../../node_modules/prosemirror-dev-tools/dist/esm/tabs/history.js","../../../node_modules/prosemirror-dev-tools/dist/esm/state/schema.js","../../../node_modules/prosemirror-dev-tools/dist/esm/tabs/schema.js","../../../node_modules/prosemirror-dev-tools/dist/esm/components/search-bar.js","../../../node_modules/prosemirror-dev-tools/dist/esm/components/button.js","../../../node_modules/prosemirror-dev-tools/dist/esm/tabs/plugins.js","../../../node_modules/prosemirror-dev-tools/dist/esm/state/node-colors.js","../../../node_modules/prosemirror-dev-tools/dist/esm/tabs/structure.js","../../../node_modules/jotai/esm/vanilla/utils.mjs","../../../node_modules/jotai/esm/utils.mjs","../../../node_modules/prosemirror-dev-tools/dist/esm/state/snapshots.js","../../../node_modules/prosemirror-dev-tools/dist/esm/state/get-editor-state.js","../../../node_modules/prosemirror-dev-tools/dist/esm/state/editor-view.js","../../../node_modules/prosemirror-dev-tools/dist/esm/tabs/snapshots.js","../../../node_modules/prosemirror-dev-tools/dist/esm/components/css-reset.js","../../../node_modules/prosemirror-dev-tools/dist/esm/state/node-picker.js","../../../node_modules/prosemirror-dev-tools/dist/esm/components/node-picker/index.js","../../../node_modules/prosemirror-dev-tools/dist/esm/components/save-snapshot-button.js","../../../node_modules/prosemirror-dev-tools/dist/esm/dev-tools-expanded.js","../../../node_modules/prosemirror-dev-tools/dist/esm/hooks/use-resize-document.js","../../../node_modules/prosemirror-dev-tools/dist/esm/utils/subscribe-on-updates.js","../../../node_modules/prosemirror-dev-tools/dist/esm/state/idle-scheduler.js","../../../node_modules/prosemirror-dev-tools/dist/esm/state/json-diff-worker.js","../../../node_modules/jsondiffpatch/dist/empty.js","../../../node_modules/jsondiffpatch/dist/jsondiffpatch.umd.js","../../../node_modules/prosemirror-dev-tools/dist/esm/state/json-diff-main.js","../../../node_modules/prosemirror-dev-tools/dist/esm/hooks/use-subscribe-to-editor-view.js","../../../node_modules/prosemirror-dev-tools/dist/esm/hooks/use-rollback-history.js","../../../node_modules/prosemirror-dev-tools/dist/esm/dev-tools.js","../../../node_modules/prosemirror-dev-tools/dist/esm/index.js","../../../node_modules/@wix/ricos/dist/es/wix-rich-content-common/devTools/add-dev-tools-click-listener.js","../../../node_modules/@wix/ricos/src/wix-rich-content-common/Utils/is-defined.ts","../../../node_modules/@wix/ricos/src/wix-rich-content-common/index.ts","../../../node_modules/@wix/ricos/src/ricos-content/version/versioningUtils.ts","../../../node_modules/@wix/ricos/src/ricos-content/version/index.ts","../../../node_modules/uc.micro/properties/Any/regex.mjs","../../../node_modules/uc.micro/categories/Cc/regex.mjs","../../../node_modules/uc.micro/categories/Cf/regex.mjs","../../../node_modules/uc.micro/categories/P/regex.mjs","../../../node_modules/uc.micro/categories/S/regex.mjs","../../../node_modules/uc.micro/categories/Z/regex.mjs","../../../node_modules/uc.micro/index.mjs","../../../node_modules/linkify-it/lib/re.mjs","../../../node_modules/linkify-it/index.mjs","../../../node_modules/@wix/ricos/src/_shared/link/linkify/linkify.ts","../../../node_modules/@wix/ricos/dist/es/ricos-schema/legacy/statics/bulleted_list.defaults.json.js","../../../node_modules/@wix/ricos/dist/es/ricos-schema/legacy/statics/ordered_list.defaults.json.js","../../../node_modules/@wix/ricos/dist/es/ricos-schema/legacy/statics/paragraph.defaults.json.js","../../../node_modules/@wix/ricos/dist/es/ricos-schema/legacy/statics/table.defaults.json.js","../../../node_modules/@wix/ricos/src/ricos-content/RicosContentAPI/modify.ts","../../../node_modules/@wix/ricos/src/ricos-content/normalize-ricos-document.ts","../../../node_modules/@wix/ricos/src/ricos-content/index.ts","../../../node_modules/@wix/ricos/src/ricos-types/pluginTypes.ts","../../../node_modules/@wix/ricos/src/ricos-types/index.ts","../../../node_modules/@wix/ricos/src/_shared/use-context-selector.ts","../../../node_modules/@wix/ricos/src/wix-rich-content-common/statics/styles/general.scss","../../../node_modules/@wix/ricos/src/editor-common/statics/styles/general.scss","../../../node_modules/@wix/ricos/src/plugin-shape/utils/consts.ts","../../../node_modules/@wix/ricos/src/_shared/node-styles.ts","../../../node_modules/@wix/ricos/src/ricos-context/DevContext.tsx","../../../node_modules/@wix/ricos/src/ricos-context/RicosContext.tsx","../../../node_modules/@wix/ricos/src/ricos-context/SchemaContext.tsx","../../../node_modules/@wix/ricos/src/ricos-context/viewer/AlignmentContext.tsx","../../../node_modules/@wix/ricos/src/ricos-context/viewer/ContentTraverserContext.tsx","../../../node_modules/@wix/ricos/src/ricos-context/viewer/DirectionHandledContext.tsx","../../../node_modules/@wix/ricos/src/ricos-viewer-next/ContentViewer/utils/node-tree-traversal.ts","../../../node_modules/@wix/ricos/src/ricos-context/viewer/NodeTreeMapContext.tsx","../../../node_modules/@wix/ricos/src/ricos-context/viewer/RicosNodeViewContext.tsx","../../../node_modules/@wix/ricos/src/ricos-context/viewer/SpoilerContext.tsx","../../../node_modules/@wix/ricos/src/ricos-context/viewer/ViewerContext.tsx","../../../node_modules/@wix/ricos/src/ricos-context/viewer/VisibleIndentationContext.tsx","../../../node_modules/@wix/ricos/src/ricos-context/viewer/index.ts","../../../node_modules/@wix/ricos/src/ricos-context/ZIndexContext.tsx","../../../node_modules/@wix/ricos/src/ricos-context/index.ts","../../../node_modules/@wix/sdk-context/build/browser/index.mjs","../../../node_modules/@wix/sdk/node_modules/@wix/sdk-types/build/browser/index.mjs","../../../node_modules/@wix/sdk/build/ambassador-modules.js","../../../node_modules/@wix/sdk/build/common.js","../../../node_modules/@wix/sdk/build/fetch-error.js","../../../node_modules/@wix/sdk/build/helpers.js","../../../node_modules/@wix/sdk/build/host-modules.js","../../../node_modules/@wix/sdk/build/bi/biHeaderGenerator.js","../../../node_modules/@wix/sdk/node_modules/@wix/sdk-runtime/build/context.js","../../../node_modules/@wix/sdk/node_modules/@wix/sdk-runtime/build/utils.js","../../../node_modules/@wix/sdk/node_modules/@wix/sdk-runtime/build/transform-error.js","../../../node_modules/@wix/sdk/build/rest-modules.js","../../../node_modules/@wix/sdk/build/modified-fields-manipulator.js","../../../node_modules/@wix/sdk/build/nanoevents.js","../../../node_modules/@wix/sdk/build/event-handlers-modules.js","../../../node_modules/@wix/sdk/build/service-plugin-modules.js","../../../node_modules/@wix/sdk/build/wixClient.js","../../../node_modules/@wix/ricos/src/_shared/request-service-provider/use-get-wix-client-promise.ts","../../../node_modules/@wix/ricos/src/_shared/log-invariant.ts","../../../node_modules/@wix/wix-ui-icons-common/dist/esm/default/general/dist/components/AddSmall.js","../../../node_modules/@wix/wix-ui-icons-common/dist/esm/default/general/dist/components/DeleteSmall.js","../../../node_modules/@wix/wix-ui-icons-common/dist/esm/default/general/dist/components/Globe.js","../../../node_modules/@wix/wix-ui-icons-common/dist/esm/default/general/dist/components/StatusAlert.js","../../../node_modules/@wix/wix-ui-icons-common/dist/esm/default/general/dist/components/StatusAlertSmall.js","../../../node_modules/@wix/wix-ui-icons-common/dist/esm/default/general/dist/index.js","../../../node_modules/@wix/wix-ui-icons-common/dist/esm/default/general/index.js","../../../node_modules/@wix/wix-ui-icons-common/dist/esm/index.js","../../../node_modules/lodash/_freeGlobal.js","../../../node_modules/lodash/_root.js","../../../node_modules/lodash/_Symbol.js","../../../node_modules/lodash/_arrayMap.js","../../../node_modules/lodash/isArray.js","../../../node_modules/lodash/_getRawTag.js","../../../node_modules/lodash/_objectToString.js","../../../node_modules/lodash/_baseGetTag.js","../../../node_modules/lodash/isObjectLike.js","../../../node_modules/lodash/isSymbol.js","../../../node_modules/lodash/_baseToString.js","../../../node_modules/lodash/toString.js","../../../node_modules/lodash/uniqueId.js","../../../node_modules/@wix/design-system/dist/esm/stylable-esm-runtime.js","../../../node_modules/@wix/design-system/dist/esm/Foundation/stylable/colors.st.css.js","../../../node_modules/@wix/design-system/dist/esm/Foundation/stylable/shadows.st.css.js","../../../node_modules/@wix/design-system/dist/esm/Foundation/stylable/typography.st.css.js","../../../node_modules/@wix/design-system/dist/esm/Foundation/stylable/default-scroll-bar.st.css.js","../../../node_modules/@wix/design-system/dist/esm/Text/Text.st.css.js","../../../node_modules/@wix/design-system/dist/esm/Foundation/stylable/easing.st.css.js","../../../node_modules/@wix/design-system/dist/esm/Popover/Popover.st.css.js","../../../node_modules/@wix/wix-ui-icons-common/dist/esm/default/system/dist/components/CircleLoaderCheck.js","../../../node_modules/@wix/wix-ui-icons-common/dist/esm/default/system/dist/components/CircleLoaderCheckSmall.js","../../../node_modules/@wix/wix-ui-icons-common/dist/esm/default/system/dist/components/FormFieldError.js","../../../node_modules/@wix/wix-ui-icons-common/dist/esm/default/system/dist/components/FormFieldErrorSmall.js","../../../node_modules/@wix/wix-ui-icons-common/dist/esm/default/system/dist/components/ToggleOn.js","../../../node_modules/@wix/wix-ui-icons-common/dist/esm/default/system/dist/index.js","../../../node_modules/@wix/wix-ui-icons-common/dist/esm/default/system/index.js","../../../node_modules/@wix/design-system/src/Loader/components/Arc.tsx","../../../node_modules/lodash/isObject.js","../../../node_modules/lodash/now.js","../../../node_modules/lodash/_trimmedEndIndex.js","../../../node_modules/lodash/_baseTrim.js","../../../node_modules/lodash/toNumber.js","../../../node_modules/lodash/debounce.js","../../../node_modules/shallowequal/index.js","../../../node_modules/@wix/design-system/dist/esm/Tooltip/Tooltip.st.css.js","../../../node_modules/@wix/design-system/dist/esm/common/Ellipsis/Ellipsis.st.css.js","../../../node_modules/@wix/design-system/src/utils/ReactPortal/ReactPortal.tsx","../../../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../../../node_modules/object-keys/isArguments.js","../../../node_modules/object-keys/implementation.js","../../../node_modules/object-keys/index.js","../../../node_modules/has-symbols/shams.js","../../../node_modules/has-tostringtag/shams.js","../../../node_modules/es-object-atoms/index.js","../../../node_modules/es-errors/index.js","../../../node_modules/es-errors/eval.js","../../../node_modules/es-errors/range.js","../../../node_modules/es-errors/ref.js","../../../node_modules/es-errors/syntax.js","../../../node_modules/es-errors/type.js","../../../node_modules/es-errors/uri.js","../../../node_modules/math-intrinsics/abs.js","../../../node_modules/math-intrinsics/floor.js","../../../node_modules/math-intrinsics/max.js","../../../node_modules/math-intrinsics/min.js","../../../node_modules/math-intrinsics/pow.js","../../../node_modules/math-intrinsics/round.js","../../../node_modules/math-intrinsics/isNaN.js","../../../node_modules/math-intrinsics/sign.js","../../../node_modules/gopd/gOPD.js","../../../node_modules/gopd/index.js","../../../node_modules/es-define-property/index.js","../../../node_modules/has-symbols/index.js","../../../node_modules/get-proto/Reflect.getPrototypeOf.js","../../../node_modules/get-proto/Object.getPrototypeOf.js","../../../node_modules/function-bind/implementation.js","../../../node_modules/function-bind/index.js","../../../node_modules/call-bind-apply-helpers/functionCall.js","../../../node_modules/call-bind-apply-helpers/functionApply.js","../../../node_modules/call-bind-apply-helpers/reflectApply.js","../../../node_modules/call-bind-apply-helpers/actualApply.js","../../../node_modules/call-bind-apply-helpers/index.js","../../../node_modules/dunder-proto/get.js","../../../node_modules/get-proto/index.js","../../../node_modules/hasown/index.js","../../../node_modules/get-intrinsic/index.js","../../../node_modules/define-data-property/index.js","../../../node_modules/has-property-descriptors/index.js","../../../node_modules/set-function-length/index.js","../../../node_modules/call-bind-apply-helpers/applyBind.js","../../../node_modules/call-bind/index.js","../../../node_modules/call-bind/callBound.js","../../../node_modules/is-arguments/index.js","../../../node_modules/define-properties/index.js","../../../node_modules/object-is/implementation.js","../../../node_modules/object-is/polyfill.js","../../../node_modules/object-is/shim.js","../../../node_modules/object-is/index.js","../../../node_modules/call-bound/index.js","../../../node_modules/is-regex/index.js","../../../node_modules/functions-have-names/index.js","../../../node_modules/set-function-name/index.js","../../../node_modules/regexp.prototype.flags/implementation.js","../../../node_modules/regexp.prototype.flags/polyfill.js","../../../node_modules/regexp.prototype.flags/shim.js","../../../node_modules/regexp.prototype.flags/index.js","../../../node_modules/is-date-object/index.js","../../../node_modules/deep-equal/index.js","../../../node_modules/popper.js/src/utils/debounce.js","../../../node_modules/popper.js/src/utils/isFunction.js","../../../node_modules/popper.js/src/utils/getStyleComputedProperty.js","../../../node_modules/popper.js/src/utils/getParentNode.js","../../../node_modules/popper.js/src/utils/getScrollParent.js","../../../node_modules/popper.js/src/utils/getReferenceNode.js","../../../node_modules/popper.js/src/utils/isIE.js","../../../node_modules/popper.js/src/utils/getOffsetParent.js","../../../node_modules/popper.js/src/utils/isOffsetContainer.js","../../../node_modules/popper.js/src/utils/getRoot.js","../../../node_modules/popper.js/src/utils/findCommonOffsetParent.js","../../../node_modules/popper.js/src/utils/getScroll.js","../../../node_modules/popper.js/src/utils/includeScroll.js","../../../node_modules/popper.js/src/utils/getBordersSize.js","../../../node_modules/popper.js/src/utils/getWindowSizes.js","../../../node_modules/popper.js/src/utils/getClientRect.js","../../../node_modules/popper.js/src/utils/getBoundingClientRect.js","../../../node_modules/popper.js/src/utils/getOffsetRectRelativeToArbitraryNode.js","../../../node_modules/popper.js/src/utils/getViewportOffsetRectRelativeToArtbitraryNode.js","../../../node_modules/popper.js/src/utils/isFixed.js","../../../node_modules/popper.js/src/utils/getFixedPositionOffsetParent.js","../../../node_modules/popper.js/src/utils/getBoundaries.js","../../../node_modules/popper.js/src/utils/computeAutoPlacement.js","../../../node_modules/popper.js/src/utils/getReferenceOffsets.js","../../../node_modules/popper.js/src/utils/getOuterSizes.js","../../../node_modules/popper.js/src/utils/getOppositePlacement.js","../../../node_modules/popper.js/src/utils/getPopperOffsets.js","../../../node_modules/popper.js/src/utils/find.js","../../../node_modules/popper.js/src/utils/findIndex.js","../../../node_modules/popper.js/src/utils/runModifiers.js","../../../node_modules/popper.js/src/methods/update.js","../../../node_modules/popper.js/src/utils/isModifierEnabled.js","../../../node_modules/popper.js/src/utils/getSupportedPropertyName.js","../../../node_modules/popper.js/src/methods/destroy.js","../../../node_modules/popper.js/src/utils/getWindow.js","../../../node_modules/popper.js/src/utils/setupEventListeners.js","../../../node_modules/popper.js/src/methods/enableEventListeners.js","../../../node_modules/popper.js/src/utils/removeEventListeners.js","../../../node_modules/popper.js/src/methods/disableEventListeners.js","../../../node_modules/popper.js/src/utils/isNumeric.js","../../../node_modules/popper.js/src/utils/setStyles.js","../../../node_modules/popper.js/src/utils/setAttributes.js","../../../node_modules/popper.js/src/modifiers/applyStyle.js","../../../node_modules/popper.js/src/utils/getRoundedOffsets.js","../../../node_modules/popper.js/src/modifiers/computeStyle.js","../../../node_modules/popper.js/src/utils/isModifierRequired.js","../../../node_modules/popper.js/src/modifiers/arrow.js","../../../node_modules/popper.js/src/utils/getOppositeVariation.js","../../../node_modules/popper.js/src/utils/clockwise.js","../../../node_modules/popper.js/src/modifiers/flip.js","../../../node_modules/popper.js/src/modifiers/keepTogether.js","../../../node_modules/popper.js/src/modifiers/offset.js","../../../node_modules/popper.js/src/modifiers/preventOverflow.js","../../../node_modules/popper.js/src/modifiers/shift.js","../../../node_modules/popper.js/src/modifiers/hide.js","../../../node_modules/popper.js/src/modifiers/inner.js","../../../node_modules/popper.js/src/utils/isBrowser.js","../../../node_modules/popper.js/src/methods/placements.js","../../../node_modules/popper.js/src/modifiers/index.js","../../../node_modules/popper.js/src/methods/defaults.js","../../../node_modules/popper.js/src/index.js","../../../node_modules/gud/index.js","../../../node_modules/warning/warning.js","../../../node_modules/@hypnosphi/create-react-context/lib/implementation.js","../../../node_modules/@hypnosphi/create-react-context/lib/index.js","../../../node_modules/react-popper/lib/esm/Manager.js","../../../node_modules/react-popper/lib/esm/utils.js","../../../node_modules/react-popper/lib/esm/Popper.js","../../../node_modules/react-popper/lib/esm/Reference.js","../../../node_modules/react-popper/lib/esm/index.js","../../../node_modules/dom-helpers/esm/hasClass.js","../../../node_modules/dom-helpers/esm/addClass.js","../../../node_modules/dom-helpers/esm/removeClass.js","../../../node_modules/react-transition-group/esm/config.js","../../../node_modules/react-transition-group/esm/utils/PropTypes.js","../../../node_modules/react-transition-group/esm/TransitionGroupContext.js","../../../node_modules/react-transition-group/esm/utils/reflow.js","../../../node_modules/react-transition-group/esm/Transition.js","../../../node_modules/react-transition-group/esm/CSSTransition.js","../../../node_modules/react-transition-group/esm/index.js","../../../node_modules/@wix/design-system/src/Popover/PopoverCore/utils/ClickOutside.tsx","../../../node_modules/@wix/design-system/src/Popover/PopoverCore/utils/modifiers.ts","../../../node_modules/@wix/design-system/src/Popover/PopoverCore/utils/filter-data-props.ts","../../../node_modules/@wix/design-system/src/Popover/PopoverCore/utils/utils.ts","../../../node_modules/@wix/design-system/src/Popover/PopoverCore/utils/helpers.ts","../../../node_modules/lodash/_overArg.js","../../../node_modules/lodash/_getPrototype.js","../../../node_modules/lodash/isPlainObject.js","../../../node_modules/lodash/isElement.js","../../../node_modules/@wix/design-system/src/Popover/PopoverCore/utils/getAppendToElement.ts","../../../node_modules/@wix/design-system/src/WixDesignSystemProvider/context.ts","../../../node_modules/@wix/design-system/src/utils/mergeRefs.ts","../../../node_modules/@wix/design-system/src/common/ZIndex/index.ts","../../../node_modules/@wix/design-system/src/Popover/PopoverCore/PopoverCore.tsx","../../../node_modules/@wix/design-system/src/utils/deprecationLog.ts","../../../node_modules/@wix/design-system/src/Popover/Popover.tsx","../../../node_modules/@wix/design-system/src/Popover/Popover.types.ts","../../../node_modules/@wix/design-system/src/Popover/index.ts","../../../node_modules/@wix/design-system/src/WixStyleReactMaskingProvider/context.ts","../../../node_modules/@wix/design-system/src/Text/RawText.tsx","../../../node_modules/@wix/design-system/src/Tooltip/constants.ts","../../../node_modules/@wix/design-system/src/common/useEventCallback/useEventCallback.tsx","../../../node_modules/@wix/design-system/src/Tooltip/Tooltip.tsx","../../../node_modules/@wix/design-system/dist/esm/Tooltip/Tooltip.types.js","../../../node_modules/@wix/design-system/src/Tooltip/index.ts","../../../node_modules/@wix/design-system/dist/esm/common/Ellipsis/components/TextComponent/TextComponent.st.css.js","../../../node_modules/@wix/design-system/src/common/Ellipsis/components/TextComponent/TextComponent.tsx","../../../node_modules/@wix/design-system/src/common/Ellipsis/components/TextComponent/index.ts","../../../node_modules/@wix/design-system/src/common/Ellipsis/Ellipsis.tsx","../../../node_modules/@wix/design-system/dist/esm/common/Ellipsis/Ellipsis.types.js","../../../node_modules/@wix/design-system/src/common/Ellipsis/EllipsisUtils.ts","../../../node_modules/@wix/design-system/src/common/Ellipsis/index.ts","../../../node_modules/@wix/design-system/dist/esm/Heading/Heading.st.css.js","../../../node_modules/@wix/design-system/src/Heading/Heading.constants.ts","../../../node_modules/@wix/design-system/src/Heading/Heading.tsx","../../../node_modules/@wix/design-system/dist/esm/Heading/Heading.types.js","../../../node_modules/@wix/design-system/src/Heading/index.ts","../../../node_modules/@wix/design-system/src/Loader/Loader.constants.ts","../../../node_modules/@wix/design-system/dist/esm/Loader/Loader.st.css.js","../../../node_modules/@wix/design-system/src/Loader/Loader.tsx","../../../node_modules/@wix/design-system/src/utils/filterObject.ts","../../../node_modules/@wix/design-system/src/utils/generateDataAttr.js","../../../node_modules/@wix/design-system/dist/esm/common/Focusable/Focusable.st.css.js","../../../node_modules/@wix/design-system/dist/esm/Button/ButtonCore/ButtonCore.st.css.js","../../../node_modules/hoist-non-react-methods/lib/index.js","../../../node_modules/@wix/design-system/src/common/hocUtils.js","../../../node_modules/@wix/design-system/src/common/Focusable/Focusable.tsx","../../../node_modules/@wix/design-system/src/common/Focusable/index.ts","../../../node_modules/@wix/design-system/src/Button/ButtonCore/constants.ts","../../../node_modules/@wix/design-system/src/Button/ButtonCore/utils.ts","../../../node_modules/@wix/design-system/src/Button/ButtonCore/ButtonCore.tsx","../../../node_modules/@wix/design-system/src/Button/ButtonCore/index.ts","../../../node_modules/@wix/design-system/dist/esm/Box/Box.st.css.js","../../../node_modules/@wix/design-system/dist/esm/Foundation/stylable/spacing.st.css.js","../../../node_modules/@wix/design-system/src/Box/Box.constants.ts","../../../node_modules/@wix/design-system/src/Box/utils/formatSpacingValues.ts","../../../node_modules/@wix/design-system/src/Box/utils/formatSizeValues.ts","../../../node_modules/@wix/design-system/src/Box/Box.tsx","../../../node_modules/@wix/design-system/dist/esm/Box/Box.types.js","../../../node_modules/@wix/design-system/src/Box/index.ts","../../../node_modules/@swc/helpers/esm/_check_private_redeclaration.js","../../../node_modules/@swc/helpers/esm/_class_private_field_init.js","../../../node_modules/tabbable/src/index.js","../../../node_modules/tslib/tslib.es6.mjs","../../../node_modules/@wix/design-system/src/Button/Button.constants.ts","../../../node_modules/@wix/design-system/src/WixStyleReactDefaultsOverrideProvider/WixStyleReactDefaultsOverrideProvider.ts","../../../node_modules/@wix/design-system/src/WixStyleReactDefaultsOverrideProvider/index.ts","../../../node_modules/@wix/design-system/dist/esm/Loader/Loader.types.js","../../../node_modules/@wix/design-system/src/Loader/index.ts","../../../node_modules/@wix/design-system/dist/esm/Button/Button.st.css.js","../../../node_modules/@wix/design-system/src/Button/Button.tsx","../../../node_modules/@wix/design-system/src/Button/Button.types.ts","../../../node_modules/@wix/design-system/src/Button/index.ts","../../../node_modules/memoize-one/dist/memoize-one.esm.js","../../../node_modules/lodash/_listCacheClear.js","../../../node_modules/lodash/eq.js","../../../node_modules/lodash/_assocIndexOf.js","../../../node_modules/lodash/_listCacheDelete.js","../../../node_modules/lodash/_listCacheGet.js","../../../node_modules/lodash/_listCacheHas.js","../../../node_modules/lodash/_listCacheSet.js","../../../node_modules/lodash/_ListCache.js","../../../node_modules/lodash/_stackClear.js","../../../node_modules/lodash/_stackDelete.js","../../../node_modules/lodash/_stackGet.js","../../../node_modules/lodash/_stackHas.js","../../../node_modules/lodash/isFunction.js","../../../node_modules/lodash/_coreJsData.js","../../../node_modules/lodash/_isMasked.js","../../../node_modules/lodash/_toSource.js","../../../node_modules/lodash/_baseIsNative.js","../../../node_modules/lodash/_getValue.js","../../../node_modules/lodash/_getNative.js","../../../node_modules/lodash/_Map.js","../../../node_modules/lodash/_nativeCreate.js","../../../node_modules/lodash/_hashClear.js","../../../node_modules/lodash/_hashDelete.js","../../../node_modules/lodash/_hashGet.js","../../../node_modules/lodash/_hashHas.js","../../../node_modules/lodash/_hashSet.js","../../../node_modules/lodash/_Hash.js","../../../node_modules/lodash/_mapCacheClear.js","../../../node_modules/lodash/_isKeyable.js","../../../node_modules/lodash/_getMapData.js","../../../node_modules/lodash/_mapCacheDelete.js","../../../node_modules/lodash/_mapCacheGet.js","../../../node_modules/lodash/_mapCacheHas.js","../../../node_modules/lodash/_mapCacheSet.js","../../../node_modules/lodash/_MapCache.js","../../../node_modules/lodash/_stackSet.js","../../../node_modules/lodash/_Stack.js","../../../node_modules/lodash/_arrayEach.js","../../../node_modules/lodash/_defineProperty.js","../../../node_modules/lodash/_baseAssignValue.js","../../../node_modules/lodash/_assignValue.js","../../../node_modules/lodash/_copyObject.js","../../../node_modules/lodash/_baseTimes.js","../../../node_modules/lodash/_baseIsArguments.js","../../../node_modules/lodash/isArguments.js","../../../node_modules/lodash/stubFalse.js","../../../node_modules/lodash/isBuffer.js","../../../node_modules/lodash/_isIndex.js","../../../node_modules/lodash/isLength.js","../../../node_modules/lodash/_baseIsTypedArray.js","../../../node_modules/lodash/_baseUnary.js","../../../node_modules/lodash/_nodeUtil.js","../../../node_modules/lodash/isTypedArray.js","../../../node_modules/lodash/_arrayLikeKeys.js","../../../node_modules/lodash/_isPrototype.js","../../../node_modules/lodash/_nativeKeys.js","../../../node_modules/lodash/_baseKeys.js","../../../node_modules/lodash/isArrayLike.js","../../../node_modules/lodash/keys.js","../../../node_modules/lodash/_baseAssign.js","../../../node_modules/lodash/_nativeKeysIn.js","../../../node_modules/lodash/_baseKeysIn.js","../../../node_modules/lodash/keysIn.js","../../../node_modules/lodash/_baseAssignIn.js","../../../node_modules/lodash/_cloneBuffer.js","../../../node_modules/lodash/_copyArray.js","../../../node_modules/lodash/_arrayFilter.js","../../../node_modules/lodash/stubArray.js","../../../node_modules/lodash/_getSymbols.js","../../../node_modules/lodash/_copySymbols.js","../../../node_modules/lodash/_arrayPush.js","../../../node_modules/lodash/_getSymbolsIn.js","../../../node_modules/lodash/_copySymbolsIn.js","../../../node_modules/lodash/_baseGetAllKeys.js","../../../node_modules/lodash/_getAllKeys.js","../../../node_modules/lodash/_getAllKeysIn.js","../../../node_modules/lodash/_DataView.js","../../../node_modules/lodash/_Promise.js","../../../node_modules/lodash/_Set.js","../../../node_modules/lodash/_WeakMap.js","../../../node_modules/lodash/_getTag.js","../../../node_modules/lodash/_initCloneArray.js","../../../node_modules/lodash/_Uint8Array.js","../../../node_modules/lodash/_cloneArrayBuffer.js","../../../node_modules/lodash/_cloneDataView.js","../../../node_modules/lodash/_cloneRegExp.js","../../../node_modules/lodash/_cloneSymbol.js","../../../node_modules/lodash/_cloneTypedArray.js","../../../node_modules/lodash/_initCloneByTag.js","../../../node_modules/lodash/_baseCreate.js","../../../node_modules/lodash/_initCloneObject.js","../../../node_modules/lodash/_baseIsMap.js","../../../node_modules/lodash/isMap.js","../../../node_modules/lodash/_baseIsSet.js","../../../node_modules/lodash/isSet.js","../../../node_modules/lodash/_baseClone.js","../../../node_modules/lodash/cloneDeep.js","../../../node_modules/@wix/design-system/src/index.js","../../../node_modules/@wix/image-kit/src/helpers/imageServiceConstants.ts","../../../node_modules/@wix/image-kit/src/helpers/utils.ts","../../../node_modules/@wix/image-kit/src/helpers/imageServiceUtils.ts","../../../node_modules/@wix/image-kit/src/helpers/imageServiceFeatureSupportObject.ts","../../../node_modules/@wix/image-kit/src/helpers/populateFeatureSupport.ts","../../../node_modules/@wix/image-kit/src/engines/attributes/backgroundAttributes.ts","../../../node_modules/@wix/image-kit/src/engines/attributes/imgAttributes.ts","../../../node_modules/@wix/image-kit/src/engines/attributes/SVGAttributes.ts","../../../node_modules/@wix/image-kit/src/engines/attributes.ts","../../../node_modules/@wix/image-kit/src/helpers/browserFeatureSupport.ts","../../../node_modules/@wix/image-kit/src/helpers/imageTransformParts.ts","../../../node_modules/@wix/image-kit/src/helpers/imageTransformOptions.ts","../../../node_modules/@wix/image-kit/src/api/transform.ts","../../../node_modules/@wix/image-kit/src/engines/transforms.ts","../../../node_modules/@wix/image-kit/src/api/uri.ts","../../../node_modules/@wix/image-kit/src/api/srcset.ts","../../../node_modules/@wix/image-kit/src/helpers/imagePlaceholderUtils.ts","../../../node_modules/@wix/image-kit/src/api/max/api.ts","../../../node_modules/@wix/image-kit/src/api/uri/index.ts","../../../node_modules/@wix/image-kit/src/sdk/api.ts","../../../node_modules/@wix/image-kit/src/sdk/index.ts","../../../node_modules/@wix/image-kit/src/helpers/responsiveImageUtils.ts","../../../node_modules/@wix/image-kit/dist/esm/types.js","../../../node_modules/@wix/image-kit/src/api/max/index.ts","webpack:/image-client-api/webpack/universalModuleDefinition","webpack:/image-client-api/webpack/bootstrap","webpack:/image-client-api/src/helpers/imageServiceConstants.js","webpack:/image-client-api/src/helpers/imageServiceUtils.js","webpack:/image-client-api/src/helpers/utils.js","webpack:/image-client-api/src/api/transform.js","webpack:/image-client-api/src/helpers/imageServiceFeatureSupportObject.js","webpack:/image-client-api/src/helpers/imageTransformParts.js","webpack:/image-client-api/src/helpers/imageTransformOptions.js","webpack:/image-client-api/src/api/uri.js","webpack:/image-client-api/src/engines/transforms.js","webpack:/image-client-api/src/sdk/index.js","webpack:/image-client-api/src/api/uri/index.js","../../../node_modules/@wix/ricos/src/wix-rich-content-common/lib/imageUtils.ts","../../../node_modules/@wix/ricos/src/_shared/link/is-valid-te-url.ts","../../../node_modules/@wix/ricos/src/_shared/uncreachable.ts","../../../node_modules/@wix/ricos/src/ricos-common-plugins/gap-spacer/gap-spacer-nodes.ts","../../../node_modules/focus-trap/index.js","../../../node_modules/@wix/ricos/src/_shared/ts-utils/keys.ts","../../../node_modules/@wix/ricos/src/_shared/focus-manager/focus-trap-react.tsx","../../../node_modules/@wix/ricos/src/_shared/focus-manager/focus-manager.tsx","../../../node_modules/@wix/ricos/src/_shared/is-ssr.ts","../../../node_modules/@wix/ricos/src/_shared/request-service-provider/parse-instance.ts","../../../node_modules/@wix/ricos/src/_shared/request-service-provider/wix-instance-context.tsx","../../../node_modules/@wix/ricos/src/ricos-common-plugins/gap-spacer/gap-spacer-component/gap-spacer-styles.scss","../../../node_modules/@wix/ricos/src/ricos-common-plugins/layout/shared-with-viewer.ts","../../../node_modules/@wix/ricos/src/ricos-common-plugins/layout/get-normalized-col-spans.ts","../../../node_modules/@wix/ricos/src/_shared/line-spacing-utils.ts","../../../node_modules/@wix/ricos/src/ricos-content/RicosContentAPI/extract.ts","../../../node_modules/@wix/ricos/src/ricos-content/lib/extract.ts","../../../node_modules/@wix/ricos/src/_shared/media/media-url-consts.ts","../../../node_modules/@wix/ricos/src/_shared/url/is-page-url.ts","../../../node_modules/@wix/ricos/src/_shared/url/get-based-url.ts","../../../node_modules/@wix/ricos/src/_shared/link/is-malicious-url.ts","../../../node_modules/@wix/ricos/src/_shared/link/normalize-href.ts","../../../node_modules/@wix/ricos/src/_shared/url/get-href-url.ts","../../../node_modules/@wix/ricos/src/_shared/link/get-link-href-url.ts","../../../node_modules/@wix/ricos/src/plugin-gallery/defaults.ts","../../../node_modules/pro-gallery-lib/src/common/constants/viewMode.ts","../../../node_modules/pro-gallery-lib/src/common/constants/urlTypes.ts","../../../node_modules/pro-gallery-lib/src/common/constants/socialNetworks.ts","../../../node_modules/pro-gallery-lib/src/common/constants/resizeMethods.ts","../../../node_modules/pro-gallery-lib/src/common/constants/deviceType.ts","../../../node_modules/pro-gallery-lib/src/common/constants/events.ts","../../../node_modules/pro-gallery-lib/src/common/constants/layoutParams_crop_method.js","../../../node_modules/pro-gallery-lib/src/common/constants/layoutParams_crop_alignment.js","../../../node_modules/pro-gallery-lib/src/core/helpers/optionsMap.js","../../../node_modules/pro-gallery-lib/src/common/constants/layoutParams_structure_galleryLayout.js","../../../node_modules/pro-gallery-lib/src/common/constants/layoutParams_structure_groupsOrder.js","../../../node_modules/pro-gallery-lib/src/common/constants/layoutParams_structure_layoutOrientation.js","../../../node_modules/pro-gallery-lib/src/common/constants/layoutParams_structure_responsiveMode.js","../../../node_modules/pro-gallery-lib/src/common/constants/layoutParams_structure_scrollDirection.js","../../../node_modules/pro-gallery-lib/src/common/constants/layoutParams_groups_allowedGroupTypes.js","../../../node_modules/pro-gallery-lib/src/common/constants/layoutParams_thumbnails_alignment.js","../../../node_modules/pro-gallery-lib/src/common/constants/layoutParams_navigationArrows_verticalAlignment.js","../../../node_modules/pro-gallery-lib/src/common/constants/layoutParams_navigationArrows_position.js","../../../node_modules/pro-gallery-lib/src/common/constants/layoutParams_navigationArrows_type.ts","../../../node_modules/pro-gallery-lib/src/common/constants/layoutParams_navigationArrows_container_type.ts","../../../node_modules/pro-gallery-lib/src/common/constants/layoutParams_info_layout.js","../../../node_modules/pro-gallery-lib/src/common/constants/layoutParams_info_sizeUnits.js","../../../node_modules/pro-gallery-lib/src/common/constants/layoutParams_info_placement.ts","../../../node_modules/pro-gallery-lib/src/common/constants/layoutParams_targetItemSize_unit.js","../../../node_modules/pro-gallery-lib/src/common/constants/behaviourParams_item_clickAction.js","../../../node_modules/pro-gallery-lib/src/common/constants/playTrigger.js","../../../node_modules/pro-gallery-lib/src/common/constants/behaviourParams_item_overlay_hoveringBehaviour.js","../../../node_modules/pro-gallery-lib/src/common/constants/behaviourParams_item_overlay_hoverAnimation.js","../../../node_modules/pro-gallery-lib/src/common/constants/behaviourParams_item_overlay_position.js","../../../node_modules/pro-gallery-lib/src/common/constants/behaviourParams_item_overlay_sizeUnits.js","../../../node_modules/pro-gallery-lib/src/common/constants/behaviourParams_item_content_hoverAnimation.js","../../../node_modules/pro-gallery-lib/src/common/constants/behaviourParams_item_content_placementAnimation.js","../../../node_modules/pro-gallery-lib/src/common/constants/behaviourParams_item_content_loader.js","../../../node_modules/pro-gallery-lib/src/common/constants/behaviourParams_item_secondaryMedia_trigger.js","../../../node_modules/pro-gallery-lib/src/common/constants/behaviourParams_item_secondaryMedia_behaviour.js","../../../node_modules/pro-gallery-lib/src/common/constants/behaviourParams_gallery_layoutDirection.js","../../../node_modules/pro-gallery-lib/src/common/constants/behaviourParams_gallery_scrollAnimation.js","../../../node_modules/pro-gallery-lib/src/common/constants/behaviourParams_gallery_vertical_loadMore_amount.js","../../../node_modules/pro-gallery-lib/src/common/constants/behaviourParams_gallery_horizontal_slideAnimation.js","../../../node_modules/pro-gallery-lib/src/common/constants/behaviourParams_gallery_horizontal_slideTransition.js","../../../node_modules/pro-gallery-lib/src/common/constants/behaviourParams_gallery_horizontal_autoSlide_behaviour.js","../../../node_modules/pro-gallery-lib/src/common/constants/behaviourParams_gallery_horizontal_slideshowInfo_buttonsAlignment.js","../../../node_modules/pro-gallery-lib/src/common/constants/stylingParams_itemResolutionMode.js","../../../node_modules/pro-gallery-lib/src/common/constants/layoutParams_thumbnails_position.ts","../../../node_modules/pro-gallery-lib/src/common/constants/behaviourParams_item_threeDimensionalScene_controls.ts","../../../node_modules/pro-gallery-lib/src/common/constants/index.ts","../../../node_modules/pro-gallery-lib/src/core/helpers/optionsUtils.ts","../../../node_modules/pro-gallery-lib/src/common/defaultOptions.ts","../../../node_modules/pro-gallery-lib/src/settings/utils/constants.js","../../../node_modules/pro-gallery-lib/src/settings/options/layoutParams_structure_galleryRatio_value.js","../../../node_modules/pro-gallery-lib/src/settings/options/layoutParams_structure_galleryRatio_includeExternalInfo.js","../../../node_modules/pro-gallery-lib/src/core/helpers/dimensionsHelper.js","../../../node_modules/pro-gallery-lib/src/common/utils/lodash.ts","../../../node_modules/pro-gallery-lib/src/common/window/window.mock.js","../../../node_modules/pro-gallery-lib/src/common/window/windowWrapper.js","../../../node_modules/pro-gallery-lib/src/common/window/viewModeWrapper.js","../../../node_modules/pro-gallery-lib/src/common/utils/index.js","../../../node_modules/pro-gallery-lib/src/core/helpers/textBoxDimensionsHelper.js","../../../node_modules/pro-gallery-lib/src/settings/utils/utils.js","../../../node_modules/pro-gallery-lib/src/settings/options/behaviourParams_gallery_horizontal_slideAnimation.js","../../../node_modules/pro-gallery-lib/src/settings/options/layoutParams_structure_scrollDirection.js","../../../node_modules/pro-gallery-lib/src/settings/options/layoutParams_navigationArrows_enable.js","../../../node_modules/pro-gallery-lib/src/settings/options/layoutParams_navigationArrows_position.js","../../../node_modules/pro-gallery-lib/src/core/helpers/layoutHelper.ts","../../../node_modules/pro-gallery-lib/src/core/presets/alternateGallery.js","../../../node_modules/pro-gallery-lib/src/core/presets/bricksGallery.js","../../../node_modules/pro-gallery-lib/src/core/presets/collageGallery.js","../../../node_modules/pro-gallery-lib/src/core/presets/fullsizeGallery.js","../../../node_modules/pro-gallery-lib/src/core/presets/columnGallery.js","../../../node_modules/pro-gallery-lib/src/core/presets/gridGallery.js","../../../node_modules/pro-gallery-lib/src/core/presets/masonryGallery.js","../../../node_modules/pro-gallery-lib/src/core/presets/mixGallery.js","../../../node_modules/pro-gallery-lib/src/core/presets/panoramaGallery.js","../../../node_modules/pro-gallery-lib/src/core/presets/sliderGallery.js","../../../node_modules/pro-gallery-lib/src/core/presets/disableAnimationsForSlideshowLayouts.js","../../../node_modules/pro-gallery-lib/src/core/presets/slideshowGallery.js","../../../node_modules/pro-gallery-lib/src/core/presets/thumbnailsGallery.js","../../../node_modules/pro-gallery-lib/src/core/presets/emptyGallery.js","../../../node_modules/pro-gallery-lib/src/core/presets/designedPresetGallery.js","../../../node_modules/pro-gallery-lib/src/core/presets/presets.js","../../../node_modules/pro-gallery-lib/src/core/helpers/migratorStore.ts","../../../node_modules/pro-gallery-lib/src/core/helpers/optionsConverter.ts","../../../node_modules/pro-gallery-lib/src/common/validateTypes/standaloneValidateCode.js","../../../node_modules/pro-gallery-lib/src/common/validateTypes/validateTypes.ts","../../../node_modules/pro-gallery-lib/src/core/helpers/thumbnailsLogic.ts","../../../node_modules/pro-gallery-lib/src/index.ts","../../../node_modules/pro-layouts/src/logic/utils.js","../../../node_modules/pro-layouts/src/logic/item.js","../../../node_modules/pro-layouts/src/logic/group.js","../../../node_modules/pro-layouts/src/logic/strip.js","../../../node_modules/pro-layouts/src/logic/column.js","../../../node_modules/pro-layouts/src/logic/layoutsStore.js","../../../node_modules/pro-layouts/src/logic/layouter.js","../../../node_modules/pro-layouts/src/classes/galleryItem.js","../../../node_modules/pro-layouts/src/classes/galleryGroup.js","../../../node_modules/pro-layouts/src/classes/itemsHelper.js","../../../node_modules/pro-layouts/src/index.ts","../../../node_modules/pro-gallery-blueprints/src/Blueprints.js","../../../node_modules/pro-gallery-blueprints/src/BlueprintsManager.js","../../../node_modules/pro-gallery-blueprints/src/index.ts","../../../node_modules/pro-gallery/src/components/gallery/proGallery/galleryDebugMessage.js","../../../node_modules/pro-gallery/src/components/item/printOnlySource.tsx","../../../node_modules/pro-gallery/src/components/item/imageRenderer.js","../../../node_modules/pro-gallery/src/components/item/imageItem.js","../../../node_modules/pro-gallery/src/components/hoc/withMagnified.js","../../../node_modules/pro-gallery/src/components/item/imageWithMagnified.js","../../../node_modules/pro-gallery/src/context/GalleryContext.js","../../../node_modules/pro-gallery/src/components/svgs/components/play_background.js","../../../node_modules/pro-gallery/src/components/svgs/components/play_triangle.js","../../../node_modules/pro-gallery/src/components/helpers/proxy.ts","../../../node_modules/pro-gallery/src/components/helpers/emitter.ts","../../../node_modules/pro-gallery/src/components/helpers/mouseCursorPosition.tsx","../../../node_modules/pro-gallery/src/components/item/media/playButton.tsx","../../../node_modules/pro-gallery/src/components/svgs/components/rotate_arrow.js","../../../node_modules/pro-gallery/src/components/item/media/rotateArrow.tsx","../../../node_modules/pro-gallery/src/components/item/media/GalleryUI.tsx","../../../node_modules/pro-gallery/src/components/item/videos/IframeVideoPlayer.tsx","../../../node_modules/pro-gallery/src/components/item/media/mediaItem.tsx","../../../node_modules/three/build/three.module.js","../../../node_modules/three/examples/jsm/loaders/GLTFLoader.js","../../../node_modules/three/examples/jsm/loaders/DRACOLoader.js","../../../node_modules/three/examples/jsm/controls/OrbitControls.js","../../../node_modules/three/examples/jsm/environments/RoomEnvironment.js","../../../node_modules/three/examples/jsm/loaders/RGBELoader.js","../../../node_modules/pro-gallery/src/components/helpers/3dManager.ts","../../../node_modules/pro-gallery/src/components/item/3d/hooks.ts","../../../node_modules/pro-gallery/src/components/item/3d/3dItem.tsx","../../../node_modules/pro-gallery/src/components/item/3d/3dItemWrapper.tsx","../../../node_modules/pro-gallery/src/components/hoc/withSecondMedia.js","../../../node_modules/pro-gallery/src/components/item/textItem.js","../../../node_modules/pro-gallery/src/components/item/itemHover.js","../../../node_modules/pro-gallery/src/components/item/itemHelper.js","../../../node_modules/pro-gallery/src/components/helpers/cssScrollHelper.js","../../../node_modules/pro-gallery/src/components/item/itemViewStyleProvider.js","../../../node_modules/pro-gallery/src/components/item/videos/getStyle.js","../../../node_modules/react-player/node_modules/load-script/index.js","../../../node_modules/deepmerge/dist/cjs.js","../../../node_modules/react-player/lib/utils.js","../../../node_modules/react-player/lib/patterns.js","../../../node_modules/react-player/lib/players/YouTube.js","../../../node_modules/react-player/lib/players/SoundCloud.js","../../../node_modules/react-player/lib/players/Vimeo.js","../../../node_modules/react-player/lib/players/Facebook.js","../../../node_modules/react-player/lib/players/Streamable.js","../../../node_modules/react-player/lib/players/Wistia.js","../../../node_modules/react-player/lib/players/Twitch.js","../../../node_modules/react-player/lib/players/DailyMotion.js","../../../node_modules/react-player/lib/players/Mixcloud.js","../../../node_modules/react-player/lib/players/Vidyard.js","../../../node_modules/react-player/lib/players/Kaltura.js","../../../node_modules/react-player/lib/players/FilePlayer.js","../../../node_modules/react-player/lib/players/index.js","../../../node_modules/react-fast-compare/index.js","../../../node_modules/react-player/lib/props.js","../../../node_modules/react-player/lib/Player.js","../../../node_modules/react-player/lib/Preview.js","../../../node_modules/react-player/lib/ReactPlayer.js","../../../node_modules/react-player/lib/index.js","../../../node_modules/@vimeo/player/dist/player.es.js","../../../node_modules/hls.js/dist/src/utils/logger.ts","../../../node_modules/hls.js/dist/src/loader/date-range.ts","../../../node_modules/hls.js/dist/src/utils/numeric-encoding-utils.ts","../../../node_modules/hls.js/dist/src/utils/keysystem-util.ts","../../../node_modules/hls.js/dist/src/utils/mediakeys-helper.ts","../../../node_modules/hls.js/dist/src/utils/typed-array.ts","../../../node_modules/hls.js/dist/src/demux/id3.ts","../../../node_modules/hls.js/dist/src/utils/mp4-tools.ts","../../../node_modules/hls.js/dist/src/loader/level-key.ts","../../../node_modules/hls.js/dist/src/utils/variable-substitution.ts","../../../node_modules/hls.js/dist/src/utils/mediasource-helper.ts","../../../node_modules/hls.js/dist/src/utils/codecs.ts","../../../node_modules/hls.js/dist/src/loader/m3u8-parser.ts","../../../node_modules/hls.js/dist/src/loader/playlist-loader.ts","../../../node_modules/hls.js/dist/src/utils/texttrack-utils.ts","../../../node_modules/hls.js/dist/src/controller/id3-track-controller.ts","../../../node_modules/hls.js/dist/src/types/level.ts","../../../node_modules/hls.js/dist/src/controller/level-helper.ts","../../../node_modules/hls.js/dist/src/utils/error-helper.ts","../../../node_modules/hls.js/dist/src/controller/fragment-finders.ts","../../../node_modules/hls.js/dist/src/controller/error-controller.ts","../../../node_modules/hls.js/dist/src/controller/level-controller.ts","../../../node_modules/hls.js/dist/src/controller/fragment-tracker.ts","../../../node_modules/hls.js/dist/src/loader/fragment-loader.ts","../../../node_modules/hls.js/dist/src/types/transmuxer.ts","../../../node_modules/hls.js/dist/src/utils/discontinuities.ts","../../../node_modules/hls.js/dist/src/crypt/aes-decryptor.ts","../../../node_modules/hls.js/dist/src/is-supported.ts","../../../node_modules/hls.js/dist/src/demux/inject-worker.ts","../../../node_modules/hls.js/dist/src/demux/dummy-demuxed-track.ts","../../../node_modules/hls.js/dist/src/demux/adts.ts","../../../node_modules/hls.js/dist/src/demux/mpegaudio.ts","../../../node_modules/hls.js/dist/src/demux/tsdemuxer.ts","../../../node_modules/hls.js/dist/src/utils/timescale-conversion.ts","../../../node_modules/hls.js/dist/src/remux/mp4-remuxer.ts","../../../node_modules/hls.js/dist/src/remux/passthrough-remuxer.ts","../../../node_modules/hls.js/dist/src/demux/transmuxer.ts","../../../node_modules/hls.js/dist/src/demux/chunk-cache.ts","../../../node_modules/hls.js/dist/src/utils/media-option-attributes.ts","../../../node_modules/hls.js/dist/src/controller/subtitle-track-controller.ts","../../../node_modules/hls.js/dist/src/utils/cea-608-parser.ts","../../../node_modules/hls.js/dist/src/utils/vttparser.ts","../../../node_modules/hls.js/dist/src/utils/webvtt-parser.ts","../../../node_modules/hls.js/dist/src/utils/imsc1-ttml-parser.ts","../../../node_modules/hls.js/dist/src/controller/timeline-controller.ts","../../../node_modules/hls.js/dist/src/controller/content-steering-controller.ts","../../../node_modules/hls.js/dist/src/utils/fetch-loader.ts","../../../node_modules/hls.js/dist/src/config.ts","../../../node_modules/hls.js/dist/src/polyfills/number.ts","../../../node_modules/hls.js/dist/src/events.ts","../../../node_modules/hls.js/dist/src/errors.ts","../../../node_modules/hls.js/dist/src/utils/attr-list.ts","../../../node_modules/hls.js/dist/src/loader/load-stats.ts","../../../node_modules/hls.js/dist/src/loader/fragment.ts","../../../node_modules/hls.js/dist/src/loader/level-details.ts","../../../node_modules/hls.js/dist/src/utils/hex.ts","../../../node_modules/hls.js/dist/src/types/loader.ts","../../../node_modules/hls.js/dist/src/types/demuxer.ts","../../../node_modules/hls.js/dist/src/controller/latency-controller.ts","../../../node_modules/hls.js/dist/src/utils/binary-search.ts","../../../node_modules/hls.js/dist/src/controller/base-playlist-controller.ts","../../../node_modules/hls.js/dist/src/loader/key-loader.ts","../../../node_modules/hls.js/dist/src/task-loop.ts","../../../node_modules/hls.js/dist/src/utils/buffer-helper.ts","../../../node_modules/hls.js/dist/src/crypt/aes-crypto.ts","../../../node_modules/hls.js/dist/src/crypt/fast-aes-key.ts","../../../node_modules/hls.js/dist/src/crypt/decrypter.ts","../../../node_modules/hls.js/dist/src/utils/time-ranges.ts","../../../node_modules/hls.js/dist/src/controller/base-stream-controller.ts","../../../node_modules/hls.js/dist/src/demux/base-audio-demuxer.ts","../../../node_modules/hls.js/dist/src/demux/aacdemuxer.ts","../../../node_modules/hls.js/dist/src/demux/mp4demuxer.ts","../../../node_modules/hls.js/dist/src/demux/exp-golomb.ts","../../../node_modules/hls.js/dist/src/demux/sample-aes.ts","../../../node_modules/hls.js/dist/src/demux/mp3demuxer.ts","../../../node_modules/hls.js/dist/src/remux/aac-helper.ts","../../../node_modules/hls.js/dist/src/remux/mp4-generator.ts","../../../node_modules/hls.js/dist/src/demux/transmuxer-interface.ts","../../../node_modules/hls.js/dist/src/controller/gap-controller.ts","../../../node_modules/hls.js/dist/src/controller/stream-controller.ts","../../../node_modules/hls.js/dist/src/utils/ewma.ts","../../../node_modules/hls.js/dist/src/utils/ewma-bandwidth-estimator.ts","../../../node_modules/hls.js/dist/src/controller/abr-controller.ts","../../../node_modules/hls.js/dist/src/controller/audio-stream-controller.ts","../../../node_modules/hls.js/dist/src/controller/audio-track-controller.ts","../../../node_modules/hls.js/dist/src/controller/subtitle-stream-controller.ts","../../../node_modules/hls.js/dist/src/controller/buffer-operation-queue.ts","../../../node_modules/hls.js/dist/src/controller/buffer-controller.ts","../../../node_modules/hls.js/dist/src/utils/output-filter.ts","../../../node_modules/hls.js/dist/src/utils/vttcue.ts","../../../node_modules/hls.js/dist/src/controller/cap-level-controller.ts","../../../node_modules/hls.js/dist/src/controller/fps-controller.ts","../../../node_modules/hls.js/dist/src/controller/eme-controller.ts","../../../node_modules/hls.js/dist/src/types/cmcd.ts","../../../node_modules/hls.js/dist/src/controller/cmcd-controller.ts","../../../node_modules/hls.js/dist/src/utils/xhr-loader.ts","../../../node_modules/hls.js/dist/src/utils/cues.ts","../../../node_modules/hls.js/dist/src/hls.ts","../../../node_modules/hls.js/dist/node_modules/url-toolkit/src/url-toolkit.js","../../../node_modules/hls.js/dist/node_modules/eventemitter3/index.js","../../../node_modules/pro-gallery/src/components/item/videos/videoItem.js","../../../node_modules/pro-gallery/src/components/item/videos/videoItemWrapper.tsx","../../../node_modules/pro-gallery/src/components/item/pure.js","../../../node_modules/pro-gallery/src/components/gallery/proGallery/scrollLessAnimationHelper.js","../../../node_modules/pro-gallery/src/components/item/itemView.js","../../../node_modules/pro-gallery/src/components/helpers/virtualization.ts","../../../node_modules/pro-gallery/src/components/gallery/proGallery/galleryView.js","../../../node_modules/pro-gallery/src/components/group/groupView.js","../../../node_modules/pro-gallery/src/components/svgs/components/play.js","../../../node_modules/pro-gallery/src/components/svgs/components/pause.js","../../../node_modules/pro-gallery/src/components/gallery/proGallery/navigationPanel.js","../../../node_modules/pro-gallery/src/components/svgs/components/defaultArrow.js","../../../node_modules/pro-gallery/src/components/svgs/components/arrow2.js","../../../node_modules/pro-gallery/src/components/svgs/components/arrow3.js","../../../node_modules/pro-gallery/src/components/svgs/components/arrow4.js","../../../node_modules/pro-gallery/src/components/svgs/components/arrow5.js","../../../node_modules/pro-gallery/src/components/svgs/components/arrow6.js","../../../node_modules/pro-gallery/src/components/svgs/components/arrow7.js","../../../node_modules/pro-gallery/src/components/svgs/arrowsIconsData.js","../../../node_modules/pro-gallery/src/components/svgs/index.js","../../../node_modules/pro-gallery/src/components/helpers/navigationArrowUtils.js","../../../node_modules/pro-gallery/src/components/gallery/proGallery/navigationArrows.js","../../../node_modules/pro-gallery/src/components/gallery/proGallery/slideshowView.js","../../../node_modules/pro-gallery/src/components/gallery/proGallery/galleryHelpers.js","../../../node_modules/pro-gallery/src/components/helpers/scrollHelper.js","../../../node_modules/pro-gallery/src/components/gallery/proGallery/galleryScrollIndicator.js","../../../node_modules/pro-gallery/src/components/helpers/cssLayoutsHelper.js","../../../node_modules/pro-gallery/src/components/helpers/mediaScrollHelper/utils.js","../../../node_modules/pro-gallery/src/components/helpers/mediaScrollHelper/mediaScrollHelper.ts","../../../node_modules/pro-gallery/src/components/helpers/mediaScrollHelper/mediaScrollHelperWrapper.ts","../../../node_modules/pro-gallery/src/components/helpers/layoutUtils.js","../../../node_modules/pro-gallery/src/components/gallery/proGallery/galleryContainer.js","../../../node_modules/pro-gallery/src/components/gallery/proGallery/proGallery.js","../../../node_modules/pro-gallery/src/components/gallery/typeValidator/shouldValidate.js","../../../node_modules/pro-gallery/src/components/gallery/proGallery/viewModeWrapper.tsx","../../../node_modules/pro-gallery/src/components/gallery/typeValidator/typeErrorsUI.js","../../../node_modules/pro-gallery/src/components/gallery/typeValidator/validateTypes.ts","../../../node_modules/pro-gallery/src/components/gallery/index.tsx","../../../node_modules/pro-gallery/src/index.ts","../../../node_modules/@wix/ricos/src/_shared/media/is-absolute-url.ts","../../../node_modules/@wix/ricos/src/_shared/media/get-absolute-url.ts","../../../node_modules/@wix/ricos/src/_shared/media/resize-media-url.ts","../../../node_modules/@wix/ricos/src/_shared/media/convert-to-gallery-item.ts","../../../node_modules/@wix/ricos/src/ricos-content/TranslatableAPI/utils.ts","../../../node_modules/@wix/ricos/src/_shared/bi-strategy/ricos-bi-callbacks.ts","../../../node_modules/node_modules/@wix/wix-bi-logger-client/lib/assert.js","../../../node_modules/@wix/ricos/src/bundled-dependencies/wix-web-bi-logger.ts","../../../node_modules/@wix/ricos/src/_shared/bi-strategy/ricos-bi-logger.ts","../../../node_modules/@wix/ricos/src/_shared/bi-strategy/bi-strategy.ts","../../../node_modules/@wix/ricos/src/_shared/bi-strategy/index.ts","../../../node_modules/@wix/ricos/src/wix-rich-content-common/lib/overrides.tsx","../../../node_modules/@wix/ricos/src/wix-rich-content-common/devTools/theme.ts","../../../node_modules/@wix/ricos/src/wix-rich-content-common/devTools/components/Tabs.tsx","../../../node_modules/@wix/ricos/src/wix-rich-content-common/devTools/logo.tsx","../../../node_modules/@wix/ricos/src/wix-rich-content-common/devTools/components/Button.tsx","../../../node_modules/@wix/ricos/src/wix-rich-content-common/devTools/tabs/rich-content-tree.tsx","../../../node_modules/@lezer/common/dist/index.js","../../../node_modules/@lezer/lr/dist/index.js","../../../node_modules/@lezer/highlight/dist/index.js","../../../node_modules/@lezer/json/dist/index.js","../../../node_modules/@marijn/find-cluster-break/src/index.js","../../../node_modules/@codemirror/state/dist/index.js","../../../node_modules/style-mod/src/style-mod.js","../../../node_modules/crelt/index.js","../../../node_modules/@codemirror/view/dist/index.js","../../../node_modules/@codemirror/language/dist/index.js","../../../node_modules/@codemirror/lang-json/dist/index.js","../../../node_modules/@codemirror/lint/dist/index.js","../../../node_modules/@codemirror/commands/dist/index.js","../../../node_modules/@codemirror/search/dist/index.js","../../../node_modules/@codemirror/autocomplete/dist/index.js","../../../node_modules/@uiw/codemirror-extensions-basic-setup/esm/index.js","../../../node_modules/@codemirror/theme-one-dark/dist/index.js","../../../node_modules/@uiw/react-codemirror/esm/theme/light.js","../../../node_modules/@uiw/react-codemirror/esm/getDefaultExtensions.js","../../../node_modules/@uiw/react-codemirror/esm/utils.js","../../../node_modules/@uiw/react-codemirror/esm/timeoutLatch.js","../../../node_modules/@uiw/react-codemirror/esm/useCodeMirror.js","../../../node_modules/@uiw/react-codemirror/esm/index.js","../../../node_modules/@wix/ricos/src/wix-rich-content-common/devTools/tabs/ricos-content-editor/autofix-api.ts","../../../node_modules/@uiw/codemirror-themes/esm/index.js","../../../node_modules/@wix/ricos/src/wix-rich-content-common/devTools/tabs/ricos-content-editor/code-mirror-theme.ts","../../../node_modules/@wix/ricos/src/wix-rich-content-common/devTools/tabs/ricos-content-editor/ricos-content-editor.tsx","../../../node_modules/@wix/ricos/src/wix-rich-content-common/devTools/tabs/ricos-network-conditions.tsx","../../../node_modules/@wix/ricos/src/wix-rich-content-common/devTools/tabs/ricos-props.tsx","../../../node_modules/@wix/ricos/src/wix-rich-content-common/devTools/tabs/ricos-rendering.tsx","../../../node_modules/@wix/ricos/src/wix-rich-content-common/devTools/tabs/ricos-schema.tsx","../../../node_modules/@wix/ricos/src/wix-rich-content-common/devTools/RicosDevTools.tsx","../../../node_modules/@wix/ricos/src/wix-rich-content-common/devTools/RicosDevToolsLazy.tsx","../../../node_modules/@wix/ricos/src/wix-rich-content-common/devTools/shouldShowDebuggingInfo.ts","../../../node_modules/@wix/ricos/src/wix-rich-content-common/lib/devTools.ts","../../../node_modules/@wix/ricos/src/wix-rich-content-common/Utils/ricosContentAnalytics.ts","../../../node_modules/@wix/ricos/src/wix-rich-content-common/lib/ricosContentAnalytics.ts","../../../node_modules/@wix/ricos/src/_shared/media/fullscreen-resize-media-url.ts","../../../node_modules/@wix/ricos/src/ricos-viewer-next/modals/fullscreen/data-hooks.ts","../../../node_modules/@wix/ricos/src/ricos-viewer-next/modals/fullscreen/fullscreen.scss","../../../node_modules/@wix/ricos/src/ricos-viewer-next/modals/fullscreen/fullscreen-modal.tsx","../../../node_modules/@wix/ricos/src/_shared/bi-helpers-context/bi-helpers-context.tsx","../../../node_modules/@wix/ricos/dist/es/ricos-viewer-next/translations/locale/messages_ar.json","../../../node_modules/@wix/ricos/dist/es/ricos-viewer-next/translations/locale/messages_bg.json","../../../node_modules/@wix/ricos/dist/es/ricos-viewer-next/translations/locale/messages_ca.json","../../../node_modules/@wix/ricos/dist/es/ricos-viewer-next/translations/locale/messages_cs.json","../../../node_modules/@wix/ricos/dist/es/ricos-viewer-next/translations/locale/messages_da.json","../../../node_modules/@wix/ricos/dist/es/ricos-viewer-next/translations/locale/messages_de.json","../../../node_modules/@wix/ricos/dist/es/ricos-viewer-next/translations/locale/messages_el.json","../../../node_modules/@wix/ricos/dist/es/ricos-viewer-next/translations/locale/messages_en.json","../../../node_modules/@wix/ricos/dist/es/ricos-viewer-next/translations/locale/messages_es.json","../../../node_modules/@wix/ricos/dist/es/ricos-viewer-next/translations/locale/messages_fi.json","../../../node_modules/@wix/ricos/dist/es/ricos-viewer-next/translations/locale/messages_fr.json","../../../node_modules/@wix/ricos/dist/es/ricos-viewer-next/translations/locale/messages_he.json","../../../node_modules/@wix/ricos/dist/es/ricos-viewer-next/translations/locale/messages_hi.json","../../../node_modules/@wix/ricos/dist/es/ricos-viewer-next/translations/locale/messages_hr.json","../../../node_modules/@wix/ricos/dist/es/ricos-viewer-next/translations/locale/messages_hu.json","../../../node_modules/@wix/ricos/dist/es/ricos-viewer-next/translations/locale/messages_id.json","../../../node_modules/@wix/ricos/dist/es/ricos-viewer-next/translations/locale/messages_it.json","../../../node_modules/@wix/ricos/dist/es/ricos-viewer-next/translations/locale/messages_ja.json","../../../node_modules/@wix/ricos/dist/es/ricos-viewer-next/translations/locale/messages_ko.json","../../../node_modules/@wix/ricos/dist/es/ricos-viewer-next/translations/locale/messages_lt.json","../../../node_modules/@wix/ricos/dist/es/ricos-viewer-next/translations/locale/messages_lv.json","../../../node_modules/@wix/ricos/dist/es/ricos-viewer-next/translations/locale/messages_ms.json","../../../node_modules/@wix/ricos/dist/es/ricos-viewer-next/translations/locale/messages_nl.json","../../../node_modules/@wix/ricos/dist/es/ricos-viewer-next/translations/locale/messages_no.json","../../../node_modules/@wix/ricos/dist/es/ricos-viewer-next/translations/locale/messages_pl.json","../../../node_modules/@wix/ricos/dist/es/ricos-viewer-next/translations/locale/messages_pt.json","../../../node_modules/@wix/ricos/dist/es/ricos-viewer-next/translations/locale/messages_ro.json","../../../node_modules/@wix/ricos/dist/es/ricos-viewer-next/translations/locale/messages_ru.json","../../../node_modules/@wix/ricos/dist/es/ricos-viewer-next/translations/locale/messages_sk.json","../../../node_modules/@wix/ricos/dist/es/ricos-viewer-next/translations/locale/messages_sl.json","../../../node_modules/@wix/ricos/dist/es/ricos-viewer-next/translations/locale/messages_sv.json","../../../node_modules/@wix/ricos/dist/es/ricos-viewer-next/translations/locale/messages_th.json","../../../node_modules/@wix/ricos/dist/es/ricos-viewer-next/translations/locale/messages_tl.json","../../../node_modules/@wix/ricos/dist/es/ricos-viewer-next/translations/locale/messages_tr.json","../../../node_modules/@wix/ricos/dist/es/ricos-viewer-next/translations/locale/messages_uk.json","../../../node_modules/@wix/ricos/dist/es/ricos-viewer-next/translations/locale/messages_vi.json","../../../node_modules/@wix/ricos/dist/es/ricos-viewer-next/translations/locale/messages_zh.json","../../../node_modules/@wix/ricos/src/text-selection-toolbar/statics/styles/viewer-inline-toolbar.scss","../../../node_modules/@wix/ricos/src/text-selection-toolbar/TextSelectionListener.tsx","../../../node_modules/@wix/ricos/src/text-selection-toolbar/TextSelectionToolbar.tsx","../../../node_modules/@wix/ricos/src/text-selection-toolbar/icons/twitter.tsx","../../../node_modules/@wix/ricos/src/text-selection-toolbar/TwitterButton.tsx","../../../node_modules/@wix/ricos/src/text-selection-toolbar/index.ts","../../../node_modules/@wix/ricos/src/ricos-viewer-next/TextSelectionToolbar.tsx","../../../node_modules/@wix/ricos/src/link-preview-popover/LinkPreviewPopoverListener.ts","../../../node_modules/@wix/ricos/src/link-preview-popover/statics/styles/link-preview-popover.scss","../../../node_modules/@wix/ricos/src/link-preview-popover/LinkPreviewPopoverViewer.tsx","../../../node_modules/@wix/ricos/src/link-preview-popover/LinkPreviewPopover.tsx","../../../node_modules/@wix/ricos/src/ricos-viewer-next/LinkPreviewPopover.tsx","../../form-multiline-address/src/lib/constants.ts","webpack:/_wix_locale_dataset_javascript/webpack/universalModuleDefinition","webpack:/_wix_locale_dataset_javascript/webpack/bootstrap","webpack:/_wix_locale_dataset_javascript/webpack/runtime/create%20fake%20namespace%20object","webpack:/_wix_locale_dataset_javascript/webpack/runtime/define%20property%20getters","webpack:/_wix_locale_dataset_javascript/webpack/runtime/hasOwnProperty%20shorthand","webpack:/_wix_locale_dataset_javascript/webpack/runtime/make%20namespace%20object","webpack:/_wix_locale_dataset_javascript/address-format.ts","webpack:/_wix_locale_dataset_javascript/constants.ts","webpack:/_wix_locale_dataset_javascript/index.ts","../../form-multiline-address/src/lib/apply-validation-properties.ts","../../form-multiline-address/src/lib/apply-view-properties.ts","../../form-multiline-address/src/lib/country-codes.ts","../../form-multiline-address/src/lib/get-country-field.ts","../../form-multiline-address/src/lib/map-subdivision-replaced-by.ts","../../form-multiline-address/src/lib/multiline-address-toolkit.ts","../../form-multiline-address/src/lib/get-validation.ts","../../form-multiline-address/src/lib/format-multiline-address.ts","../../form-multiline-address/src/index.ts","../../../node_modules/libphonenumber-js/source/tools/semver-compare.js","../../../node_modules/libphonenumber-js/source/helpers/isObject.js","../../../node_modules/libphonenumber-js/source/metadata.js","../../../node_modules/libphonenumber-js/source/helpers/checkNumberLength.js","../../../node_modules/libphonenumber-js/source/isPossible.js","../../../node_modules/libphonenumber-js/source/helpers/matchesEntirely.js","../../../node_modules/libphonenumber-js/source/helpers/getNumberType.js","../../../node_modules/libphonenumber-js/source/isValid.js","../../../node_modules/libphonenumber-js/source/helpers/getPossibleCountriesForNumber.js","../../../node_modules/libphonenumber-js/source/constants.js","../../../node_modules/libphonenumber-js/source/helpers/stripIddPrefix.js","../../../node_modules/libphonenumber-js/source/helpers/extractNationalNumberFromPossiblyIncompleteNumber.js","../../../node_modules/libphonenumber-js/source/helpers/getCountryByNationalNumber.js","../../../node_modules/libphonenumber-js/source/helpers/getCountryByCallingCode.js","../../../node_modules/libphonenumber-js/source/helpers/extractNationalNumber.js","../../../node_modules/libphonenumber-js/source/getCountryCallingCode.js","../../../node_modules/libphonenumber-js/source/helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js","../../../node_modules/libphonenumber-js/source/helpers/extractCountryCallingCode.js","../../../node_modules/libphonenumber-js/source/helpers/applyInternationalSeparatorStyle.js","../../../node_modules/libphonenumber-js/source/helpers/formatNationalNumberUsingFormat.js","../../../node_modules/libphonenumber-js/source/helpers/getIddPrefix.js","../../../node_modules/libphonenumber-js/source/helpers/extension/createExtensionPattern.js","../../../node_modules/libphonenumber-js/source/helpers/isViablePhoneNumber.js","../../../node_modules/libphonenumber-js/source/helpers/RFC3966.js","../../../node_modules/libphonenumber-js/source/format.js","../../../node_modules/libphonenumber-js/source/PhoneNumber.js","../../../node_modules/libphonenumber-js/source/ParseError.js","../../../node_modules/libphonenumber-js/source/helpers/extension/extractExtension.js","../../../node_modules/libphonenumber-js/source/helpers/parseDigits.js","../../../node_modules/libphonenumber-js/source/parseIncompletePhoneNumber.js","../../../node_modules/libphonenumber-js/source/helpers/extractPhoneContext.js","../../../node_modules/libphonenumber-js/source/helpers/extractFormattedPhoneNumberFromPossibleRfc3966NumberUri.js","../../../node_modules/libphonenumber-js/source/parse.js","../../../node_modules/libphonenumber-js/source/parsePhoneNumberWithError_.js","../../../node_modules/libphonenumber-js/source/normalizeArguments.js","../../../node_modules/libphonenumber-js/source/parsePhoneNumberWithError.js","../../../node_modules/libphonenumber-js/source/parsePhoneNumber_.js","../../../node_modules/libphonenumber-js/source/parsePhoneNumber.js","../../../node_modules/libphonenumber-js/source/isValidPhoneNumber.js","../../../node_modules/libphonenumber-js/source/AsYouTypeState.js","../../../node_modules/libphonenumber-js/source/AsYouTypeFormatter.util.js","../../../node_modules/libphonenumber-js/source/AsYouTypeFormatter.complete.js","../../../node_modules/libphonenumber-js/source/AsYouTypeFormatter.PatternParser.js","../../../node_modules/libphonenumber-js/source/AsYouTypeFormatter.PatternMatcher.js","../../../node_modules/libphonenumber-js/source/AsYouTypeFormatter.js","../../../node_modules/libphonenumber-js/source/AsYouTypeParser.js","../../../node_modules/libphonenumber-js/source/AsYouType.js","../../../node_modules/libphonenumber-js/core/index.js","../../../node_modules/@wix/ambassador-forms-v1-validation-result/types.impl.ts","../../form-validator/src/lib/submission-validation/schema-validation-properties.ts","../../form-validator/src/lib/submission-validation/errors.ts","../../form-validator/src/lib/error-derivation/helpers.ts","../../form-validator/src/lib/error-derivation/types.ts","../../form-validator/src/lib/error-derivation/error-derivers.ts","../../form-validator/src/lib/error-derivation/index.ts","../../form-validator/src/lib/utils/deep-omit-empty-data.ts","../../../node_modules/ajv/lib/compile/codegen/code.ts","../../../node_modules/ajv/lib/compile/codegen/scope.ts","../../../node_modules/ajv/lib/compile/codegen/index.ts","../../../node_modules/ajv/lib/compile/util.ts","../../../node_modules/ajv/lib/compile/names.ts","../../../node_modules/ajv/lib/compile/errors.ts","../../../node_modules/ajv/lib/compile/validate/boolSchema.ts","../../../node_modules/ajv/lib/compile/rules.ts","../../../node_modules/ajv/lib/compile/validate/applicability.ts","../../../node_modules/ajv/lib/compile/validate/dataType.ts","../../../node_modules/ajv/lib/compile/validate/defaults.ts","../../../node_modules/ajv/lib/vocabularies/code.ts","../../../node_modules/ajv/lib/compile/validate/keyword.ts","../../../node_modules/ajv/lib/compile/validate/subschema.ts","../../../node_modules/fast-deep-equal/index.js","../../../node_modules/json-schema-traverse/index.js","../../../node_modules/ajv/lib/compile/resolve.ts","../../../node_modules/ajv/lib/compile/validate/index.ts","../../../node_modules/ajv/lib/runtime/validation_error.ts","../../../node_modules/ajv/lib/compile/ref_error.ts","../../../node_modules/ajv/lib/compile/index.ts","../../../node_modules/ajv/dist/refs/data.json","../../../node_modules/fast-uri/lib/utils.js","../../../node_modules/fast-uri/lib/schemes.js","../../../node_modules/fast-uri/index.js","../../../node_modules/ajv/lib/runtime/uri.ts","../../../node_modules/ajv/lib/core.ts","../../../node_modules/ajv/lib/vocabularies/core/id.ts","../../../node_modules/ajv/lib/vocabularies/core/ref.ts","../../../node_modules/ajv/lib/vocabularies/core/index.ts","../../../node_modules/ajv/lib/vocabularies/validation/limitNumber.ts","../../../node_modules/ajv/lib/vocabularies/validation/multipleOf.ts","../../../node_modules/ajv/lib/runtime/ucs2length.ts","../../../node_modules/ajv/lib/vocabularies/validation/limitLength.ts","../../../node_modules/ajv/lib/vocabularies/validation/pattern.ts","../../../node_modules/ajv/lib/vocabularies/validation/limitProperties.ts","../../../node_modules/ajv/lib/vocabularies/validation/required.ts","../../../node_modules/ajv/lib/vocabularies/validation/limitItems.ts","../../../node_modules/ajv/lib/runtime/equal.ts","../../../node_modules/ajv/lib/vocabularies/validation/uniqueItems.ts","../../../node_modules/ajv/lib/vocabularies/validation/const.ts","../../../node_modules/ajv/lib/vocabularies/validation/enum.ts","../../../node_modules/ajv/lib/vocabularies/validation/index.ts","../../../node_modules/ajv/lib/vocabularies/applicator/additionalItems.ts","../../../node_modules/ajv/lib/vocabularies/applicator/items.ts","../../../node_modules/ajv/lib/vocabularies/applicator/prefixItems.ts","../../../node_modules/ajv/lib/vocabularies/applicator/items2020.ts","../../../node_modules/ajv/lib/vocabularies/applicator/contains.ts","../../../node_modules/ajv/lib/vocabularies/applicator/dependencies.ts","../../../node_modules/ajv/lib/vocabularies/applicator/propertyNames.ts","../../../node_modules/ajv/lib/vocabularies/applicator/additionalProperties.ts","../../../node_modules/ajv/lib/vocabularies/applicator/properties.ts","../../../node_modules/ajv/lib/vocabularies/applicator/patternProperties.ts","../../../node_modules/ajv/lib/vocabularies/applicator/not.ts","../../../node_modules/ajv/lib/vocabularies/applicator/anyOf.ts","../../../node_modules/ajv/lib/vocabularies/applicator/oneOf.ts","../../../node_modules/ajv/lib/vocabularies/applicator/allOf.ts","../../../node_modules/ajv/lib/vocabularies/applicator/if.ts","../../../node_modules/ajv/lib/vocabularies/applicator/thenElse.ts","../../../node_modules/ajv/lib/vocabularies/applicator/index.ts","../../../node_modules/ajv/lib/vocabularies/format/format.ts","../../../node_modules/ajv/lib/vocabularies/format/index.ts","../../../node_modules/ajv/lib/vocabularies/metadata.ts","../../../node_modules/ajv/lib/vocabularies/draft7.ts","../../../node_modules/ajv/lib/vocabularies/discriminator/types.ts","../../../node_modules/ajv/lib/vocabularies/discriminator/index.ts","../../../node_modules/ajv/dist/refs/json-schema-draft-07.json","../../../node_modules/ajv/lib/ajv.ts","../../../node_modules/ajv-errors/src/index.ts","../../../node_modules/ajv-formats/src/formats.ts","../../../node_modules/ajv-formats/src/limit.ts","../../../node_modules/ajv-formats/src/index.ts","../../../node_modules/ajv-keywords/src/definitions/uniqueItemProperties.ts","../../../node_modules/ajv-keywords/src/keywords/uniqueItemProperties.ts","../../form-validator/src/lib/utils/lang.ts","../../form-validator/src/lib/submission-validation/ajv/currency-validation.ts","../../form-validator/src/lib/submission-validation/ajv/email-validation.ts","../../form-validator/src/lib/submission-validation/ajv/language-validation.ts","../../form-validator/src/lib/submission-validation/ajv/timezone-validation.ts","../../form-validator/src/lib/submission-validation/ajv/ajv-custom-formats.ts","../../../node_modules/libphonenumber-js/metadata.max.json.js","../../../node_modules/libphonenumber-js/max/exports/withMetadataArgument.js","../../../node_modules/libphonenumber-js/max/exports/parsePhoneNumberWithError.js","../../../node_modules/libphonenumber-js/max/index.js","../../form-validator/src/lib/submission-validation/ajv/ajv-custom-keywords.ts","../../form-validator/src/lib/submission-validation/create-ajv-schema-validator.ts","../../form-validator/src/lib/submission-validation/mappers/property-types.ts","../../form-validator/src/lib/submission-validation/mappers/form-schema-mapper.ts","../../form-validator/src/lib/submission-validation/mappers/platformised-fields/form-schema-mapper-platformised.ts","../../form-validator/src/lib/utils/validation.ts","../../form-validator/src/lib/submission-validation/mappers/boolean-schema-property-mapper.ts","../../form-validator/src/lib/submission-validation/mappers/number-schema-property-mapper.ts","../../form-validator/src/lib/submission-validation/mappers/array-schema-property-mapper.ts","../../form-validator/src/lib/submission-validation/mappers/integer-schema-property-mapper.ts","../../form-validator/src/lib/submission-validation/mappers/predefined-schema-property-mapper.ts","../../../node_modules/dayjs/dayjs.min.js","../../../node_modules/dayjs/plugin/timezone.js","../../../node_modules/dayjs/plugin/utc.js","../../form-validator/src/lib/calling-country-codes.ts","../../form-validator/src/lib/submission-validation/mappers/string-format-options-mapper.ts","../../form-validator/src/lib/submission-validation/mappers/string-schema-property-mapper.ts","../../form-validator/src/lib/submission-validation/mappers/property-schema-mapper.ts","../../form-validator/src/lib/submission-validation/mappers/object-schema-property-mapper.ts","../../form-validator/src/lib/submission-validation/mappers/platformised-fields/array-schema-property-mapper-platformised.ts","../../form-validator/src/lib/submission-validation/mappers/platformised-fields/string-input-field-schema-mapper.ts","../../form-validator/src/lib/submission-validation/mappers/platformised-fields/transform-platformised-field-to-validation.ts","../../form-validator/src/lib/submission-validation/form-validator.ts","../../form-validator/src/lib/backward-compatibility/field-utils.ts","../../form-validator/src/lib/backward-compatibility/compare-shema-backward-compatibility.ts","../../../node_modules/@wix/ambassador-forms-v4-restrictions/types.impl.ts","../../form-validator/src/lib/paid-restrictions/validate-premium-restrictions.ts","../../form-validator/src/lib/schema-validation/default-value-utils.ts","../../form-validator/src/lib/schema-validation/form-schema-validator.ts","../../form-validator/src/index.ts","../../../node_modules/ts-util-is/src/index.ts","../../../node_modules/ts-util-is/index.ts","../../../node_modules/ts-dot-prop/src/index.ts","../../../node_modules/ts-dot-prop/index.ts","../../../node_modules/js-rules-engine/src/condition.ts","../../../node_modules/js-rules-engine/src/operator.ts","../../../node_modules/js-rules-engine/src/default-operators.ts","../../../node_modules/js-rules-engine/src/engine.ts","../../../node_modules/js-rules-engine/src/default-engine.ts","../../../node_modules/js-rules-engine/dist/interfaces.js","../../../node_modules/js-rules-engine/src/rule.ts","../../../node_modules/js-rules-engine/src/index.ts","../../../node_modules/dayjs/plugin/isSameOrAfter.js","../../../node_modules/dayjs/plugin/isSameOrBefore.js","../../form-fields/dist/esm/assets/locale/viewer/messages_en.json","../../../node_modules/@wix/json-proto-serializer/node_modules/long/src/long.js","../../../node_modules/lodash.clonedeep/index.js","../../../node_modules/@wix/json-proto-serializer/src/index.ts","../../../node_modules/@wix/headers/src/globals.ts","../../../node_modules/@wix/headers/src/cookies.ts","../../../node_modules/@wix/headers/src/headers/csrf.ts","../../../node_modules/@wix/headers/src/headers/x-wix-brand.ts","../../../node_modules/@wix/headers/src/headers/consent-policy.ts","../../../node_modules/@wix/headers/src/headers/authorization.ts","../../../node_modules/@wix/headers/src/utils.ts","../../../node_modules/@wix/headers/src/headers/artifact-id.ts","../../../node_modules/@wix/headers/src/headers/common-config.ts","../../../node_modules/base-64/base64.js","../../../node_modules/@wix/headers/src/headers/linguist.ts","../../../node_modules/@wix/headers/src/errors.ts","../../../node_modules/@wix/headers/src/assert.ts","../../../node_modules/@wix/headers/src/index.ts","../../../node_modules/@wix/ambassador/src/runtime/utils.ts","../../../node_modules/redaxios/src/index.js","../../../node_modules/@wix/ambassador/src/runtime/http.ts","../../../node_modules/@wix/ambassador/runtime/http.js","../../../node_modules/@wix/ambassador-wix-atlas-service-web/src/types.ts","../../../node_modules/@wix/ambassador-wix-atlas-service-web/src/http.ts","../../form-fields/src/ui/address-input/atlas-service.ts","../../form-fields/src/ui/file-upload/file-format.tsx","../../form-fields/src/utils/date-format-parts.ts","../../form-fields/src/constants/input-field-types.ts","../../form-fields/src/constants/readonly-field-types.ts","../../form-fields/src/constants/field-types.ts","../../form-fields/src/constants/empty-values.ts","../../form-fields/src/constants/default-values.ts","../../form-fields/src/constants/experiments.tsx","../../form-fields/src/constants/breakpoints.ts","../../form-fields/src/contexts/form-status-provider.tsx","../../form-fields/src/contexts/ricos-viewer-context.ts","../../../node_modules/@wix/ricos/src/ricos-content/converters/draft/toDraft/convertStructToJson.ts","../../../node_modules/@wix/ricos/src/ricos-content/converters/draft/struct-refined-types.ts","../../../node_modules/@wix/ricos/src/_shared/bi-strategy/use-bi-helpers.ts","../../../node_modules/@wix/ricos/src/_shared/use-iframe-sandbox-domain.ts","../../../node_modules/@wix/ricos/src/ricos-viewer-next/RicosViewerNext.tsx","../../../node_modules/@wix/ricos/src/ricos-viewer-next/utils.ts","../../../node_modules/@wix/ricos/src/wix-rich-content-common/lib/linkConverters.ts","../../../node_modules/@wix/ricos/src/ricos-viewer-next/biUtils/applyGenericParams.ts","../../../node_modules/@wix/ricos/src/ricos-viewer-next/is-viewer-plugin.ts","../../../node_modules/@wix/ricos/src/ricos-viewer-next/pluginsStrategy.ts","../../../node_modules/@wix/ricos/src/ricos-viewer-next/ContentViewer/TranslatedContentViewer.tsx","../../../node_modules/@wix/ricos/src/ricos-content/RicosContentAPI/extract-next.ts","../../../node_modules/@wix/ricos/src/ricos-viewer-next/modals/fullscreen/fullscreen-provider.tsx","../../../node_modules/@wix/ricos/dist/es/ricos-viewer-next/translations/vitalTranslations.json.js","../../../node_modules/@wix/ricos/src/ricos-viewer-next/ContentViewer/ContentViewer.tsx","../../../node_modules/@wix/ricos/src/ricos-viewer-next/statics/rich-content-viewer.scss","../../../node_modules/@wix/ricos/src/ricos-viewer-next/statics/rtl.scss","../../../node_modules/@wix/ricos/src/ricos-viewer-next/ContentViewer/components/Anchor.tsx","../../../node_modules/@wix/ricos/src/ricos-viewer-next/ContentViewer/components/AddAnchors.tsx","../../../node_modules/@wix/ricos/src/ricos-viewer-next/ContentViewer/ContentTraverser.tsx","../../../node_modules/@wix/ricos/src/ricos-common-plugins/bold/viewer.tsx","../../../node_modules/@wix/ricos/src/ricos-common-plugins/font-size/viewer.tsx","../../../node_modules/@wix/ricos/src/ricos-common-plugins/italic/viewer.tsx","../../../node_modules/@wix/ricos/src/ricos-common-plugins/strikethrough/viewer.tsx","../../../node_modules/@wix/ricos/src/ricos-common-plugins/subscript/viewer.tsx","../../../node_modules/@wix/ricos/src/ricos-common-plugins/superscript/viewer.tsx","../../../node_modules/@wix/ricos/src/ricos-common-plugins/underline/viewer.tsx","../../../node_modules/@wix/ricos/src/ricos-common-plugins/viewer.ts","../../../node_modules/@wix/ricos/src/ricos-viewer-next/ContentViewer/rericos/decorators/breakoutDecorator.tsx","../../../node_modules/@wix/ricos/src/ricos-viewer-next/ContentViewer/rericos/decorators/nodeViewDecorators.ts","../../../node_modules/@wix/ricos/src/ricos-viewer-next/ContentViewer/rericos/decorators/index.ts","../../../node_modules/@wix/ricos/src/ricos-viewer-next/ContentViewer/rericos/renderers/index.ts","../../../node_modules/@wix/ricos/src/ricos-viewer-next/ContentViewer/rericos/renderers/blockquote/blockquote.tsx","../../../node_modules/@wix/ricos/src/ricos-viewer-next/statics/indentation.scss","../../../node_modules/@wix/ricos/src/ricos-viewer-next/ContentViewer/rericos/utils/Anchorable.tsx","../../../node_modules/@wix/ricos/src/ricos-viewer-next/ContentViewer/rericos/utils/paywallSeo.ts","../../../node_modules/@wix/ricos/src/ricos-viewer-next/ContentViewer/rericos/renderers/consts.ts","../../../node_modules/@wix/ricos/src/ricos-viewer-next/ContentViewer/rericos/renderers/blockquote/blockquote.scss","../../../node_modules/@wix/ricos/src/ricos-viewer-next/ContentViewer/rericos/renderers/codeblock/codeblock.tsx","../../../node_modules/@wix/ricos/src/ricos-viewer-next/statics/alignment.scss","../../../node_modules/@wix/ricos/src/ricos-viewer-next/ContentViewer/rericos/renderers/codeblock/codeblock.scss","../../../node_modules/@wix/ricos/src/ricos-viewer-next/ContentViewer/rericos/renderers/heading/heading.tsx","../../../node_modules/@wix/ricos/src/ricos-viewer-next/ContentViewer/rericos/renderers/heading/heading.scss","../../../node_modules/@wix/ricos/src/ricos-viewer-next/ContentViewer/rericos/renderers/layout/cell.tsx","../../../node_modules/@wix/ricos/src/ricos-viewer-next/ContentViewer/rericos/renderers/layout/layout.scss","../../../node_modules/@wix/ricos/src/ricos-viewer-next/ContentViewer/rericos/renderers/layout/layout.tsx","../../../node_modules/@wix/ricos/src/ui-components/layout-background-loader/layout-background-loader.scss","../../../node_modules/@wix/ricos/src/ui-components/layout-background-loader/layout-background-loader.tsx","../../../node_modules/@wix/ricos/src/ricos-viewer-next/ContentViewer/rericos/renderers/lists/bulletedList.tsx","../../../node_modules/@wix/ricos/src/ricos-viewer-next/ContentViewer/rericos/renderers/lists/lists.scss","../../../node_modules/@wix/ricos/src/ricos-viewer-next/ContentViewer/rericos/renderers/lists/listItem.tsx","../../../node_modules/@wix/ricos/src/ricos-viewer-next/ContentViewer/rericos/renderers/lists/getStartMargin.ts","../../../node_modules/@wix/ricos/src/ricos-viewer-next/ContentViewer/rericos/renderers/lists/orderedList.tsx","../../../node_modules/@wix/ricos/src/ricos-viewer-next/ContentViewer/rericos/renderers/paragraph/paragraph.tsx","../../../node_modules/@wix/ricos/src/ricos-viewer-next/ContentViewer/rericos/renderers/paragraph/paragraph.scss","../../../node_modules/@wix/ricos/src/ricos-viewer-next/ContentViewer/rericos/renderers/text/text.tsx","../../../node_modules/@wix/ricos/src/ricos-viewer-next/ContentViewer/rericos/renderers/plugins/getPluginRenderers.tsx","../../../node_modules/@wix/ricos/src/ricos-viewer-next/ContentViewer/rericos/renderers/plugins/fromExternalNode.tsx","../../../node_modules/@wix/ricos/src/ricos-viewer-next/ContentViewer/rericos/renderers/plugins/getClassNames.ts","../../../node_modules/@wix/ricos/src/ricos-viewer-next/ContentViewer/rericos/renderers/plugins/plugin.scss","../../../node_modules/@wix/ricos/src/ricos-viewer-next/ContentViewer/rericos/renderers/plugins/nodeViewContainer.tsx","../../../node_modules/@wix/ricos/src/ricos-viewer-next/ContentViewer/components/ErrorBoundary.tsx","../../../node_modules/@wix/ricos/src/ricos-viewer-next/ContentViewer/rericos/renderers/plugins/ContainerElement.tsx","../../../node_modules/@wix/ricos/src/ricos-viewer-next/ContentViewer/rericos/renderers/plugins/LinkViewerWrapper.tsx","../../../node_modules/@wix/ricos/src/ricos-viewer-next/ContentViewer/rericos/renderers/plugins/link-viewer-wrapper.scss","../../../node_modules/@wix/ricos/src/ricos-viewer-next/ContentViewer/rericos/utils/SpoilerManager.tsx","../../../node_modules/@wix/ricos/src/ricos-common-plugins/gap-spacer/gap-spacer-viewer.tsx","../../../node_modules/@wix/ricos/src/ricos-viewer-next/ContentViewer/components/gap-spacer.tsx","../../../node_modules/@wix/ricos/src/ricos-viewer-next/ContentViewer/RicosNodesRenderer.tsx","../../../node_modules/@wix/ricos/src/index.ts","../../../node_modules/@wix/ricos/src/plugin-link/nodeViewDecorators/anchor.tsx","../../../node_modules/@wix/ricos/src/plugin-link/nodeViewDecorators/link.tsx","../../form-fields/src/contexts/config-context.ts","../../form-fields/src/ui/ricos-viewer/ricos-html-attributes-plugin.tsx","../../form-fields/src/contexts/unique-field-suffix-context.tsx","../../form-fields/src/contexts/focused-field-provider.tsx","../../form-fields/src/contexts/events-context.tsx","../../form-fields/src/contexts/scroll-provider.tsx","../../form-fields/src/contexts/translation-context.ts","../../form-fields/src/contexts/experiments-context.ts","../../form-schema/src/services/generate-uuid.ts","../../form-schema/src/services/add-field-to-schema.ts","../../form-fields/src/contexts/bi-context.ts","../../form-fields/src/ui/shared/numeric-input-utils.ts","../../form-fields/src/field-settings/settings-shared/availability/availability.ts","../../form-fields/src/date-localization/local-date.ts","../../form-fields/src/date-localization/get-first-day-of-the-week.ts","../../form-fields/src/services/get-image-url.ts","../../../node_modules/@wix/sdk-runtime/build/constants.js","../../../node_modules/@wix/sdk-runtime/build/rename-all-nested-keys.js","../../../node_modules/@wix/sdk-runtime/build/transformations/transform-paths.js","../../../node_modules/@wix/sdk-runtime/build/utils.js","../../../node_modules/@wix/sdk-runtime/build/transform-error.js","../../../node_modules/@wix/sdk-runtime/build/context.js","../../../node_modules/@wix/sdk-runtime/build/context-v2.js","../../../node_modules/@wix/sdk-runtime/build/rest-modules.js","../../form-fields/src/utils/format-currency.ts","../../form-fields/src/contexts/http-client-context.ts","../../../node_modules/libphonenumber-js/metadata.min.json.js","../../../node_modules/libphonenumber-js/min/exports/withMetadataArgument.js","../../../node_modules/libphonenumber-js/min/exports/parsePhoneNumber.js","../../../node_modules/libphonenumber-js/min/exports/isValidPhoneNumber.js","../../../node_modules/libphonenumber-js/min/exports/AsYouType.js","../../../node_modules/libphonenumber-js/min/exports/isSupportedCountry.js","../../form-fields/src/contexts/form-context.ts","../../form-fields/src/contexts/panorama-context.ts","../../form-fields/src/contexts/forced-state-context.ts","../../form-fields/src/ui/form/contexts/external-data-context.tsx","../../form-fields/src/ui/form/contexts/form-fields-context.ts","../../form-fields/src/contexts/form-view-context.tsx","../../form-fields/src/ui/form/types/form-view.ts","../../form-fields/src/utils/grid-styles.ts","../../form-fields/src/field-layout/default-field-layout.tsx","../../form-fields/src/ui/form/components/grid/grid.tsx","../../form-fields/dist/esm/animations/grid-animations.module.scss","../../form-fields/src/ui/form/components/form/focusable.tsx","../../form-fields/src/ui/form/components/grid/grid-options.ts","../../form-fields/dist/esm/ui/form/components/grid/grid.module.scss","../../form-fields/src/contexts/field-actions-context.ts","../../form-fields/src/contexts/field-validation-context.ts","../../form-fields/src/contexts/form-values-context.tsx","../../form-fields/src/services/multiline-address.ts","../../../node_modules/@wix/bi-logger-forms-platform-uou/src/v2/index.ts","../../form-fields/src/ui/form/components/form/input-field.tsx","../../form-fields/src/contexts/field-attributes-context.ts","../../form-fields/src/contexts/field-props-context.ts","../../form-fields/src/ui/date-field/date-field-utils.ts","../../form-fields/src/ui/date-picker/helpers.ts","../../form-fields/src/ui/date-time-field/date-time-field-utils.ts","../../form-fields/src/field-error/get-translated-error.ts","../../form-fields/src/constants/locale.ts","../../form-fields/src/field-error/use-error.ts","../../form-fields/src/services/field-attributes.ts","../../form-fields/src/ui/form/components/form/nested-form-field.tsx","../../form-fields/src/ui/form/components/form/read-only-field.tsx","../../form-fields/src/fields/submit-button/submit-button/utils.ts","../../form-fields/src/fields/submit-button/submit-button/use-submit-button.ts","../../form-fields/src/ui/form/components/form/submit-button-field.tsx","../../form-fields/src/ui/form/components/form/form-field.tsx","../../form-fields/src/ui/form/components/form/create-form-fields.tsx","../../form-fields/src/ui/form/components/form/form.tsx","../../form-fields/src/utils/map-by-field.ts","../../form-fields/src/utils/sort-fields.ts","../../../node_modules/@wix/ambassador-forms-v1-form-template/types.impl.ts","../../../node_modules/@wix/ambassador-forms-v2-form-template/types.impl.ts","../../form-transformer/src/lib/to-v1/make-validation-of-input-field.ts","../../form-transformer/src/lib/to-v1/make-view-of-display-properties.ts","../../form-transformer/src/lib/to-v1/make-view-of-input-field.ts","../../form-transformer/src/lib/to-v1/transform-field-to-v1.ts","../../form-fields/src/services/form-view.ts","../../form-fields/src/contexts/address-forms-context.ts","../../form-fields/src/contexts/field-initial-data-context.ts","../../form-fields/src/fields/multiline-address/multiline-address/address.ts","../../form-fields/src/fields/vat-id/vat-id-validation.ts","../../form-fields/src/fields/vat-id/brazil-vat-id-validator.ts","../../form-fields/src/fields/vat-id/israel-vat-id-validator.ts","../../form-fields/src/fields/contacts-birthdate/contacts-birthdate/contacts-birthdate-validation.tsx","../../form-fields/src/ui/donation-field/donation-field-utils.ts","../../form-fields/src/field-settings/settings-shared/products/product-price.ts","../../form-fields/src/ui/payment-input-field/payment-input-field-utils.ts","../../form-fields/src/field-rule/inputs/utils.ts","../../form-fields/src/services/normalize-default-value.ts","../../../node_modules/src/utils.ts","../../../node_modules/src/equals.ts","../../../node_modules/src/comparator.ts","../../../node_modules/src/index.ts","../../form-mapper/src/lib/submission-mapper.ts","../../form-conditions/src/lib/apply-item-properties-override.ts","../../form-conditions/src/lib/transform-path-to-v2.ts","../../form-conditions/src/lib/utils.ts","../../form-conditions/src/lib/evaluate-override-condition.ts","../../form-conditions/src/lib/set-up-operators.ts","../../form-conditions/src/lib/condition-operators.ts","../../form-conditions/src/lib/operators/any.ts","../../form-conditions/src/lib/operators/array-equals.ts","../../form-conditions/src/lib/operators/between.ts","../../form-conditions/src/lib/operators/checked.ts","../../form-conditions/src/lib/operators/contains.ts","../../form-conditions/src/lib/operators/equal.ts","../../form-conditions/src/lib/operators/greater-than.ts","../../form-conditions/src/lib/operators/in.ts","../../form-conditions/src/lib/operators/is-date-newer-than.ts","../../form-conditions/src/lib/operators/is-date-older-than.ts","../../form-conditions/src/lib/operators/less-than.ts","../../form-conditions/src/lib/apply-overrides.ts","../../nested-form-overrides/src/lib/array-utils.ts","../../nested-form-overrides/src/lib/lang-utils.ts","../../nested-form-overrides/src/lib/object-utils.ts","../../nested-form-overrides/src/lib/nested-form-overrides.ts","../../form-viewer/src/services/validation.ts","../../form-viewer/src/services/apply-nested-forms.ts","../../form-viewer/src/services/additional-field-validation.ts","../../form-viewer/src/services/get-field-errors.ts","../../form-viewer/src/services/form-overrides.ts","../../form-viewer/src/components/form/all-overrides.ts","../../form-viewer/src/components/form/clear-fields.ts","../../form-viewer/src/components/form/get-step-index.ts","../../form-viewer/src/hooks/form-values.ts","../../form-viewer/src/components/form/autofill.ts","../../form-viewer/src/hooks/use-form-values/normalize-values.ts","../../form-viewer/src/services/utils.ts","../../form-viewer/src/hooks/use-form-values/use-form-values.ts","../../form-viewer/src/hooks/use-form-view.ts","../../form-viewer/src/hooks/use-report-field-edit.ts","../../form-viewer/src/hooks/use-scroll-to-first-error.ts","../../form-viewer/src/hooks/use-submit/use-submit.ts","../../../node_modules/@wix/bi-logger-forms-data/src/v2/index.ts","../../form-viewer/src/contexts/submit-status-context.tsx","../../form-viewer/src/features/monitoring/interactions.ts","../../form-viewer/src/types/bi.ts","../../form-viewer/src/hooks/use-submit/utils.ts","../../form-viewer/src/hooks/use-validation.ts","../../form-viewer/src/hooks/use-form.ts","../../../node_modules/@wix/wix-ui-icons-common/dist/esm/on-stage/general/dist/components/Delete.js","../../../node_modules/@wix/wix-ui-icons-common/dist/esm/on-stage/general/dist/components/Download.js","../../../node_modules/@wix/wix-ui-icons-common/dist/esm/on-stage/general/dist/components/Edit.js","../../../node_modules/@wix/wix-ui-icons-common/dist/esm/on-stage/general/dist/components/ErrorSmall.js","../../../node_modules/@wix/wix-ui-icons-common/dist/esm/on-stage/general/dist/components/TextStyleSmall.js","../../form-viewer/src/tpa/widget/host-context.tsx","../../form-viewer/src/components/form/use-form-bi.ts","../../form-viewer/src/components/root/form-viewer-provider.tsx","../src/utils/normalize-schema.ts","../src/mappers/field-type-map.ts","../src/utils/mappers.tsx","../src/hooks/use-form.tsx","../src/context/create-i18n.tsx","../src/context/form-context.tsx","../../form-fields/src/services/find-child.ts","../../form-fields/src/ui/field-description/field-description-headless.tsx","../../form-fields/src/ui/field-error/field-error-headless.tsx","../../form-fields/src/ui/field-rich-label/field-rich-label-headless.tsx","../../form-fields/src/ui/checkbox-field/checkbox-field-headless.tsx","../../../node_modules/ts-debounce/src/index.ts","../../form-fields/src/ui/field-label/field-label-headless.tsx","../../form-fields/src/hooks/use-focus.ts","../../form-fields/src/ui/fieldset/fieldset-headless.tsx","../../form-fields/src/ui/checkbox-group-field/checkbox-group-field-utils.ts","../../form-fields/src/ui/checkbox-group-field/checkbox-group-field-headless.tsx","../../form-fields/src/ui/date-picker/month-select/helpers.ts","../../form-fields/src/ui/date-input-field/date-input-field-headless.tsx","../../../node_modules/@internationalized/date/dist/packages/@internationalized/date/src/utils.ts","../../../node_modules/@internationalized/date/dist/packages/@internationalized/date/src/calendars/GregorianCalendar.ts","../../../node_modules/@internationalized/date/dist/packages/@internationalized/date/src/queries.ts","../../../node_modules/@internationalized/date/dist/packages/@internationalized/date/src/conversion.ts","../../../node_modules/@internationalized/date/dist/packages/@internationalized/date/src/manipulation.ts","../../../node_modules/@internationalized/date/dist/packages/@internationalized/date/src/string.ts","../../../node_modules/@internationalized/date/dist/packages/@internationalized/date/src/CalendarDate.ts","../../form-fields/src/ui/date-picker-field/date-picker-field-headless.tsx","../../form-fields/src/ui/date-time-field/date-time-field-headless.tsx","../../form-fields/src/ui/shared/payment-field-utils.ts","../../form-fields/src/ui/donation-field/donation-field-headless.tsx","../../form-fields/src/ui/dropdown-field/dropdown-field-headless.tsx","../../form-fields/src/ui/file-upload/use-upload-file.tsx","../../form-fields/src/ui/file-upload/use-file-upload-controller.ts","../../form-fields/src/ui/file-upload/file-upload-headless/drop-zone.tsx","../../form-fields/src/ui/file-upload/file-upload-headless/file-upload-context.tsx","../../form-fields/src/ui/file-upload/file-upload-headless/file.tsx","../../form-fields/src/ui/file-upload/file-upload-headless/progress-circle.tsx","../../form-fields/src/ui/file-upload/file-upload-headless/files.tsx","../../form-fields/src/ui/file-upload/file-upload-headless/file-upload-headless.tsx","../../form-fields/src/ui/fixed-payment-field/fixed-payment-field-headless.tsx","../../form-fields/src/ui/login-bar/login-bar-headless.tsx","../../form-fields/src/ui/multiline-address-field/headless/multiline-address-field-headless.tsx","../../form-fields/src/fields/multiline-address/multiline-address/address-autofill-context.tsx","../../form-fields/src/fields/multiline-address/multiline-address/country-code-context.tsx","../../form-fields/src/fields/multiline-address/multiline-address/remove-gaps.ts","../../form-fields/src/utils/apply-multiline-address-settings.ts","../../form-fields/src/utils/field-id-overrides.ts","../../form-fields/src/ui/multiline-address-field/headless/address-fields-context.tsx","../../form-fields/src/hooks/use-address-label.ts","../../form-fields/src/ui/multiline-address-field/headless/address-line-2-field-headless.tsx","../../../node_modules/@wix/sdk-runtime/build/transformations/float.js","../../../node_modules/@wix/sdk-runtime/build/transformations/address.js","../../../node_modules/@wix/auto_sdk_atlas_places/src/atlas-v2-place-places.http.ts","../../../node_modules/@wix/auto_sdk_atlas_places/src/atlas-v2-place-places.universal.ts","../../../node_modules/@wix/auto_sdk_atlas_places/src/atlas-v2-place-places.public.ts","../../../node_modules/@wix/auto_sdk_atlas_places/src/atlas-v2-place-places.context.ts","../../../node_modules/@wix/auto_sdk_atlas_autocomplete/src/atlas-v2-prediction-autocomplete.http.ts","../../../node_modules/@wix/auto_sdk_atlas_autocomplete/src/atlas-v2-prediction-autocomplete.universal.ts","../../../node_modules/@wix/auto_sdk_atlas_autocomplete/src/atlas-v2-prediction-autocomplete.public.ts","../../../node_modules/@wix/auto_sdk_atlas_autocomplete/src/atlas-v2-prediction-autocomplete.context.ts","../../form-fields/src/ui/address-input/use-debounced-callback.ts","../../form-fields/src/ui/address-input/use-is-mounted.ts","../../form-fields/src/ui/multiline-address-field/headless/use-atlas-headless.ts","../../form-fields/src/ui/multiline-address-field/headless/address-line-field-headless.tsx","../../form-fields/src/ui/multiline-address-field/headless/city-field-headless.tsx","../../form-fields/src/ui/multiline-address-field/headless/country-field-headless.tsx","../../form-fields/src/ui/multiline-address-field/headless/postal-code-field-headless.tsx","../../form-fields/src/ui/address-input/postal-code.ts","../../form-fields/src/ui/address-input/use-atlas.ts","../../form-fields/src/ui/address-input/use-japan-autocomplete.ts","../../form-fields/src/ui/multiline-address-field/headless/street-name-field-headless.tsx","../../form-fields/src/ui/multiline-address-field/headless/street-number-field-headless.tsx","../../form-fields/src/ui/multiline-address-field/headless/subdivision-field-headless.tsx","../../form-fields/src/ui/shared/use-invoke-callback.ts","../../form-fields/src/ui/number-input-field/number-input-field-headless.tsx","../../form-fields/src/ui/payment-input-field/payment-input-headless.tsx","../../form-fields/src/ui/phone-input-field/phone-input-field-headless.tsx","../../form-fields/src/ui/phone-input-field/phone-input/phone-input-utils.ts","../../form-fields/src/ui/phone-input-field/phone-input/use-countries.ts","../../form-fields/src/ui/phone-input-field/phone-input/use-phone-input-logic.ts","../../form-fields/src/field-settings/settings-shared/options/options-list/types.ts","../../form-fields/src/fields/product-list/product-list-settings/select-mode-setting/get-select-mode.ts","../../form-fields/src/ui/product-list/product-list-headless.tsx","../../form-fields/src/ui/radio-group-field/radio-group-field-utils.ts","../../form-fields/src/ui/radio-group-field/radio-group-field-headless.tsx","../../form-fields/src/ui/rating-input-field/rating-input-field-headless.tsx","../../form-fields/src/ui/ricos-viewer/ricos-viewer-headless.tsx","../../../node_modules/signature_pad/src/point.ts","../../../node_modules/signature_pad/src/bezier.ts","../../../node_modules/signature_pad/src/signature_event_target.ts","../../../node_modules/signature_pad/src/throttle.ts","../../../node_modules/signature_pad/src/signature_pad.ts","../../form-fields/src/ui/signature-field/signature-types.ts","../../form-fields/src/ui/signature-field/use-upload-signature.tsx","../../form-fields/src/ui/signature-field/utils/canvas.ts","../../form-fields/src/ui/signature-field/utils/constants.ts","../../form-fields/src/ui/signature-field/utils/points.ts","../../form-fields/src/ui/signature-field/utils/text.ts","../../form-fields/src/ui/signature-field/utils/data-url.ts","../../form-fields/src/ui/signature-field/use-signature-value.ts","../../form-fields/src/ui/signature-field/use-signature-field.ts","../../form-fields/src/ui/signature-field/utils/drawer.ts","../../form-fields/src/ui/signature-field/signature-field-headless.tsx","../../form-fields/src/ui/submit-button-field/submit-button-loader.tsx","../../form-fields/src/ui/submit-button-field/submit-button-headless.tsx","../../form-fields/src/ui/tags-field/tags-field-utils.ts","../../form-fields/src/ui/tags-field/tags-field-headless.tsx","../../form-fields/src/ui/text-area-field/text-area-field-headless.tsx","../../form-fields/src/ui/text-input-field/text-input-headless.tsx","../../form-fields/src/ui/time-input-field/time-input-field-headless.tsx"],"names":["SortOrder","WebhookIdentityType","AppointmentFormat","MeetingType","StaffStrategySelection","AlignmentEnumAlignment","ImageFit","ImagePosition","NumberOfColumns","FirstDayOfWeekEnumFirstDayOfWeek","DefaultCountryConfigType","ContactAutofill","CountFormsFieldset","DisplayFieldDisplayFieldType","FieldFieldType","AddressInfoTag","FormFieldContactInfoContactField","FormFieldContactInfoEmailInfoTag","FormFieldContactInfoPhoneInfoTag","ConfirmationLevel","AddressComponentType","ArrayComponentType","InputFieldBooleanComponentType","InputFieldInputType","InputFieldNumberComponentType","ObjectArrayComponentType","InputFieldPaymentComponentType","InputFieldSchedulingComponentType","InputFieldStringComponentType","InputFieldWixFileComponentType","ArrayItemsItemType","DayOfWeek","PropertiesTypePropertiesTypeEnum","StringTypeFormatEnumFormat","UploadFileFormat","SpamFilterProtectionLevel","SubmissionAccess","ValidationFormat","Format","Tag","ContactField","EmailInfoTag","PhoneInfoTag","OptInLevel","Fieldset","Kind","OverrideEntityType","FieldInputType","ListDeletedFormsOrder","ListFormsOrderEnumListFormsOrder","ListFormsOrder","FilterType","PriceType","ProductType","ResultsDisplay","RequiredIndicator","RequiredIndicatorPlacement","ChangeableProperty","Operator","OverrideEntityTypeEnumOverrideEntityType","UrlTargetEnumTarget","SubmitSuccessAction","SubscriptionChannel","AppType","CardStylesAlignment","CardStylesLayout","CardStylesType","AspectRatio","ImageStylesPosition","Resizing","Placement","StylesBackgroundType","Type","CardDataBackgroundType","ImagePositionPosition","ImageScalingScaling","Direction","InitialExpandedItems","DecorationType","Alignment","LineStyle","Width","ViewMode","FontType","Crop","Orientation","LayoutType","ThumbnailsAlignment","GIFType","GradientType","Source","BackdropType","LayoutDataBackgroundType","Origin","DesignTarget","LayoutDataImagePosition","Scaling","ResponsivenessBehaviour","VerticalAlignmentAlignment","Target","Position","MapType","NodeType","NullValue","PluginContainerDataAlignment","WidthType","BackgroundType","PollLayoutDirection","PollLayoutType","ViewRole","VoteRole","ColumnSize","SmartBlockDataType","VerticalAlignment","TextAlignment","Indentation","ListStyle","inner","size","index","offset","content","dist","insert","last","marks","result","min","max","name","types","typeName","type","nfa","compile","edge","expr","cur","node","set","states","match","defaults","prop","doc","space","Node","nodeStart","first","found","_","json","fragment","string","i","top","add","wrap","range","e","init_dist","map","id","parent","matches","close","TransformError","self","head","selection","config","TextStyle_TextAlignment","Link_Target","PluginContainerData_Alignment","Gradient_Type","FontSizeData_fontType","CardData_ImageScaling_Scaling","CardData_ImagePosition_Position","CardData_Background_Type","LayoutData_ImagePosition","LayoutData_ResponsivenessBehaviour","LayoutData_DesignTarget","LayoutData_VerticalAlignment_Alignment","LayoutData_ImageScaling_Scaling","LayoutData_Banner_Origin","LayoutData_Background_Type","LayoutData_Backdrop_Type","AppEmbedData_AppType","AppEmbedData_ImageStyles_Position","AppEmbedData_ImageStyles_AspectRatio","AppEmbedData_ImageStyles_Resizing","AppEmbedData_RibbonStyles_Placement","AppEmbedData_CardStyles_Type","AppEmbedData_CardStyles_Alignment","AppEmbedData_CardStyles_Layout","ButtonData_Type","ButtonData_Styles_Background_Type","CollapsibleListData_InitialExpandedItems","CollapsibleListData_Direction","DividerData_LineStyle","DividerData_Width","DividerData_Alignment","FileData_PDFSettings_ViewMode","GalleryOptions_Layout_Type","GalleryOptions_Layout_Orientation","GalleryOptions_ItemStyle_Crop","GalleryOptions_Thumbnails_Alignment","GIFData_GIFType","HTMLData_Source","LinkPreviewData_Styles_Position","PollData_Poll_Settings_Permissions_ViewRole","PollData_Poll_Settings_Permissions_VoteRole","PollData_Layout_PollLayout_Type","PollData_Layout_PollLayout_Direction","PollData_Design_PollDesign_Background_Type","TableCellData_VerticalAlignment","Node_Type","Decoration_Type","as","constant","concatAll","r","init","left","right","C","reduceWithIndex","append","of","getSemigroup","getMonoid","fromPredicate","some","none","ap","flatMap","reduce","foldMap","reduceRight","zero","compact","filterMap","traverse","isNone","fold","tree","_map","_ap","_reduce","_foldMap","_reduceRight","_extend","_traverse","extend","sequence","URI","make","struct","empty","pipe","Eq","Ord","isEmpty","Functor","FromEither","isLeft","matchW","init_internal","get","props","a","optional","iso","asOptional","asTraversal","compose","Semigroupoid","modify","prism","filter","traversal","fromTraversable","lens","nodesAccessor","undefined","collection","placeholder","runInContext","context","Array","Date","Error","Function","Math","Object","RegExp","String","TypeError","hasOwnProperty","Buffer","Symbol","Uint8Array","defineProperty","DataView","Map","Promise","Set","WeakMap","lodash","isArray","isObject","copyArray","isRight","iteratee","values","Stack","isTypedArray","keys","number","getTag","key","setTimeout","includes","isFunction","object","identity","indexOf","clearTimeout","regexp","guard","getData","ary","operator","pair","noop","isPartial","othValue","flatten","transform","difference","findIndex","findLastIndex","intersection","join","remove","reverse","tail","union","uniq","chain","tap","toArray","clone","every","find","findLast","isString","partition","sortBy","now","bind","curry","debounce","delay","flip","throttle","cloneDeep","isElement","isEqual","isFinite","isInteger","isNaN","isNumber","isRegExp","assign","at","has","mapKeys","merge","pick","update","clamp","camelCase","escape","pad","parseInt","repeat","replace","split","startsWith","template","unescape","flow","uniqueId","value","nodesSetter","root","hasOwn","classNames","classes","fst","snd","init_utils","import_lodash","_Decorations","decorations","styles","init_decorations","_RicosNodeStyle","nodeStyle","_RicosTextStyle","textStyle","_CustomStyles","theme","tuple","toVars","PluginContainerData_Width_Type","global","commonjsGlobal","createCommonjsModule","module","Control","ZWJ","Break","codePointAt","c","substring","location","exports","padStart","_extends","defaultSettings","error","tokenize","nextChar","literal","parse","isMobile","layer","firstRight","Component","init_consts","React","atom","useContext","useReducer","nextVersion","useEffect","useDebugValue","useCallback","_a","createContext","React3","init_runtime","o","t","typeOf","Element","Fragment","Suspense","getOwnPropertySymbols","isValidElement","validate","checker","isNode","require_lodash","ownKeys","_objectSpread","Dock","PropTypes","init_esm","_5","_13","_20","_19","_18","_17","_16","_15","_14","_12","_11","_10","_9","_8","_7","_6","_4","_3","_2","TabList","TabsStyled","TabStyled","SplitView","testId","SplitViewCol","import_prop_types","JSONArrow","_unsupportedIterableToArray","F","_arrayLikeToArray","idx","_createSuper","_isNativeReflectConstruct","ItemRange","renderChildNodes","postprocessValue","JSONNestedNode","getItemString","createItemString","labelRenderer","JSONObjectNode","_excluded","JSONArrayNode","_createForOfIteratorHelper","JSONIterableNode","JSONValueNode","valueRenderer","JSONNode","swizzle","keyword","require_color_name","Color","invertColor","merger","mergeStyling","mergeStylings","getStylingByKeys","invertBase16Theme","isStylingConfig","getBase16Theme","invertTheme","colorMap","valueColorMap","getDefaultThemeStyling","arrow","getStateFromProps","expandRootNode","defaultItemString","defaultLabelRenderer","noCustomNode","JSONTree","_33","_32","_25","_24","_23","_22","_21","Heading","HeadingWithButton","HeadingButton","_toConsumableArray","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","currentNode","res","logNodeFromJSON","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_nonIterableRest","JSONTreeWrapper","_31","_30","_29","_28","_27","_26","Section","Group","GroupRow","Key","ValueNum","LogNodeButton","InfoPanel","ListItem","background","_defineProperty","Updated","White","Deleted","Added","CustomPre","highlight","Highlighter","Parser","tag_check","comment","indent_character","indent_size","max_char","brace_style","text","_typeof","obj","_regeneratorRuntime","define","tryCatch","AsyncIterator","next","serializer","nanoid","history","_x","_x2","isSelected","isPrevious","isDimmed","init_history","formatTimestamp","init_schema","SearchBar","useState","Button","_plugin","handleClickSort","handleSortAsc","handleSortDes","GraphWrapper","BlockNodeContentView","BlockNodeContentViewWithInline","BlockNodeView","Side","tooltip","StartSide","Bar","Center","InlineNodeView","createJSONStorage","defaultStorage","memoizeAtom","EditorState","init_snapshots","ActionButton","ListItemTitle","CSSReset","width","height","init_node_picker","NodePickerHighlight","NodePickerTrigger","SaveSnapshotButton","CloseButton","handler","_classCallCheck","_defineProperties","_createClass","IdleScheduler","request","cancel","asyncGeneratorStep","_asyncToGenerator","import_nanoid","JsonDiffWorker","_diff","classCallCheck","createClass","Processor","process","Pipe","log","prepend","Context","push","DiffContext","PatchContext","ReverseContext","collectChildrenPatchFilter","defaultMatch","index2","lengthMatrix","backtrack","hash2","compare","reverseArrayDeltaIndex","diff_match_patch","longtext","shorttext","score","html","patch","getDiffMatchPatch","diff","textDeltaReverse","DiffPatcher","unpatch","trimUnderscore","arrayKeyToSortNumber","arrayKeyComparer","BaseFormatter","format","parseTextDiff","base","HtmlFormatter","getElementText","eachByQuery","eachChildren","svg","showUnchanged","hideUnchanged","AnnotatedFormatter","wrapPropertyName","formatAnyChange","JSONFormatter","compareByIndexDesc","opsByDescendingOrder","partitionOps","isMoveOp","isRemoveOp","reorderOps","ConsoleFormatter","JsonDiffMain","ReactDOM","addDevToolsClickListener","keyDownHandler","clickListener","e2","applyDevTools","keyUpHandler","init_version","regex_default","init_regex","tlds","shift","createContextOrig","isSSR","useLayoutEffect","useRef","batchedUpdates","createElement","styleDataHash","injectCss","general_default","init_general_scss","useMemo","nodeViewDecorators","renderers","status","errorBuilder","flattened","handlers","React54","React55","React56","React57","React58","_namespace_","_style_","st","React59","React60","React61","React62","React63","shallowEqual","require_shams","require_implementation","concatty","slicy","Empty","doEval","stringToPath","getBaseIntrinsic","hasPropertyDescriptors","functionsHaveNames","require_polyfill","require_shim","deepEqual","microtaskDebounce","fn","called","resolve","then","taskDebounce","scheduled","timeoutDuration","functionToCheck","getType","toString","call","getStyleComputedProperty","element","property","nodeType","window","ownerDocument","defaultView","css","getComputedStyle","getParentNode","nodeName","parentNode","host","getScrollParent","document","body","overflow","overflowX","overflowY","test","getReferenceNode","reference","referenceNode","isIE","version","isIE11","isIE10","getOffsetParent","documentElement","noOffsetParent","offsetParent","nextElementSibling","isOffsetContainer","firstElementChild","getRoot","findCommonOffsetParent","element1","element2","order","compareDocumentPosition","DOCUMENT_POSITION_FOLLOWING","start","end","createRange","setStart","setEnd","commonAncestorContainer","contains","element1root","getScroll","side","upperSide","scrollingElement","includeScroll","rect","subtract","scrollTop","scrollLeft","modifier","bottom","getBordersSize","axis","sideA","sideB","parseFloat","getSize","computedStyle","getWindowSizes","getClientRect","offsets","getBoundingClientRect","sizes","clientWidth","clientHeight","horizScrollbar","offsetWidth","vertScrollbar","offsetHeight","getOffsetRectRelativeToArbitraryNode","children","fixedPosition","runIsIE","isHTML","childrenRect","parentRect","scrollParent","borderTopWidth","borderLeftWidth","marginTop","marginLeft","getViewportOffsetRectRelativeToArtbitraryNode","excludeScroll","relativeOffset","innerWidth","innerHeight","isFixed","getFixedPositionOffsetParent","parentElement","el","getBoundaries","popper","padding","boundariesElement","boundaries","boundariesNode","isPaddingNumber","getArea","computeAutoPlacement","placement","refRect","rects","sortedAreas","sort","b","area","filteredAreas","computedPlacement","length","variation","getReferenceOffsets","state","commonOffsetParent","getOuterSizes","x","marginBottom","y","marginRight","getOppositePlacement","hash","matched","getPopperOffsets","referenceOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","arr","check","prototype","runModifiers","modifiers","data","ends","modifiersToRun","slice","forEach","warn","enabled","isDestroyed","options","positionFixed","originalPlacement","position","isCreated","onCreate","onUpdate","isModifierEnabled","modifierName","getSupportedPropertyName","prefixes","upperProp","charAt","toUpperCase","prefix","toCheck","style","destroy","removeAttribute","willChange","disableEventListeners","removeOnDestroy","removeChild","getWindow","attachToScrollParents","event","callback","scrollParents","isBody","target","addEventListener","passive","setupEventListeners","updateBound","scrollElement","eventsEnabled","enableEventListeners","scheduleUpdate","removeEventListeners","removeEventListener","isNumeric","n","setStyles","unit","setAttributes","attributes","setAttribute","applyStyle","instance","arrowElement","arrowStyles","applyStyleOnLoad","modifierOptions","getRoundedOffsets","shouldRound","round","floor","noRound","v","referenceWidth","popperWidth","isVertical","isVariation","sameWidthParity","bothOddWidth","horizontalToInteger","verticalToInteger","computeStyle","legacyGpuAccelerationOption","gpuAcceleration","offsetParentRect","devicePixelRatio","isFirefox","prefixedProperty","invertTop","invertLeft","isModifierRequired","requestingName","requestedName","requesting","isRequired","requested","querySelector","len","sideCapitalized","toLowerCase","altSide","opSide","arrowElementSize","center","popperMarginSide","popperBorderSide","sideValue","getOppositeVariation","clockwise","counter","validPlacements","concat","flipped","placementOpposite","flipOrder","behavior","BEHAVIORS","FLIP","CLOCKWISE","COUNTERCLOCKWISE","step","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariationByRef","flipVariations","flippedVariationByContent","flipVariationsByContent","flippedVariation","keepTogether","toValue","str","parseOffset","basePlacement","useHeight","fragments","frag","trim","divider","search","splitRegex","ops","op","mergeWithPrevious","preventOverflow","transformProp","popperStyles","priority","escapeWithReference","shiftvariation","shiftOffsets","hide","bound","subtractLength","supportsMicroTasks","Popper","navigator","longerTimeoutBrowsers","isBrowser","userAgent","MSInputMethodContext","documentMode","placements","requestAnimationFrame","Defaults","jquery","onLoad","Utils","PopperUtils","warning","printWarning","_possibleConstructorReturn","_inherits","Provider","Consumer","require_lib","Manager","React66","unwrapArray","safeInvoke","setRef","React67","InnerPopper","React68","InnerReference","forceReflow","Transition","timeout","removeClass","addClass","CSSTransition","React72","isTestEnv","React73","classnames","init_helpers","init_context","PureComponent","init_Popover","showTooltip","init_constants","forwardRef","useImperativeHandle","init_Tooltip","init_TextComponent","init_Ellipsis","init_Heading","hoistNonReactMethods","defaultConfig","Focusable","init_Focusable","dataHooks","isStatelessComponent","import_classnames","React85","init_ButtonCore","vars","stVars","init_Box","candidateSelectors","candidateSelector","NoElement","getRootNode","isInert","isContentEditable","getCandidates","getCandidatesIteratively","hasTabIndex","getTabIndex","getSortOrderTabIndex","sortOrderedTabbables","isInput","isHiddenInput","isDetailsWithSummary","getCheckedRadio","isTabbableRadio","isRadio","isNonTabbableRadio","isNodeAttached","isZeroArea","isHidden","isDisabledFromFieldset","isNodeMatchingSelectorFocusable","isNodeMatchingSelectorTabbable","isValidShadowRootTabbable","sortByOrder","tabbable","focusable","isTabbable","focusableCandidateSelector","isFocusable","msMatchesSelector","webkitMatchesSelector","_element$getRootNode","lookUp","_node$getAttribute","inertAtt","getAttribute","inert","_node$getAttribute2","attValue","includeContainer","candidates","apply","querySelectorAll","unshift","elements","elementsToCheck","from","tagName","assigned","assignedElements","nestedCandidates","scopeParent","validCandidate","shadowRoot","getShadowRoot","validShadowRoot","shadowRootFilter","tabIndex","isScope","documentOrder","child","nodes","form","checked","radioScope","queryRadios","radioSet","CSS","err","console","message","_nodeRoot","nodeRoot","nodeRootHost","attached","_nodeRootHost","_nodeRootHost$ownerDo","_node$ownerDocument","_nodeRoot2","_nodeRootHost2","_nodeRootHost2$ownerD","_node$getBoundingClie","_ref","displayCheck","visibility","isDirectSummary","nodeUnderDetails","originalNode","rootNode","assignedSlot","getClientRects","disabled","item","shadowHostNode","regularTabbables","orderedTabbables","candidateTabindex","acc","sortable","container","init_WixStyleReactDefaultsOverrideProvider","init_Loader","init_Button","require_isArguments","fileName","isPNG","isJPG","isWEBP","isAVIF","fileType","init_uri","init_api","init_types","factory","amd","this","installedModules","__webpack_require__","moduleId","l","modules","m","d","getter","enumerable","toStringTag","mode","__esModule","ns","create","p","s","JPG","JPEG","PNG","WEBP","WIX_ICO_MP","WIX_MP","GIF","SVG","UNRECOGNIZED","supportedExtensions","alignTypes","CENTER","TOP","TOP_LEFT","TOP_RIGHT","BOTTOM","BOTTOM_LEFT","BOTTOM_RIGHT","LEFT","RIGHT","alignTypesMap","top_left","top_right","bottom_left","bottom_right","transformTypes","FIT","FILL","FILL_FOCAL","CROP","LEGACY_CROP","LEGACY_FILL","fittingTypes","SCALE_TO_FILL","SCALE_TO_FIT","STRETCH","ORIGINAL_SIZE","TILE","TILE_HORIZONTAL","TILE_VERTICAL","FIT_AND_TILE","LEGACY_STRIP_TILE","LEGACY_STRIP_TILE_HORIZONTAL","LEGACY_STRIP_TILE_VERTICAL","LEGACY_STRIP_SCALE_TO_FILL","LEGACY_STRIP_SCALE_TO_FIT","LEGACY_STRIP_FIT_AND_TILE","LEGACY_STRIP_ORIGINAL_SIZE","LEGACY_ORIGINAL_SIZE","LEGACY_FIT_WIDTH","LEGACY_FIT_HEIGHT","LEGACY_FULL","LEGACY_BG_FIT_AND_TILE","LEGACY_BG_FIT_AND_TILE_HORIZONTAL","LEGACY_BG_FIT_AND_TILE_VERTICAL","LEGACY_BG_NORMAL","htmlTag","BG","IMG","upscaleMethods","AUTO","CLASSIC","SUPER","upscaleMethodsValues","classic","super","defaultUSM","radius","amount","threshold","emptyData","uri","img","attr","imageQuality","HIGH","MEDIUM","LOW","TINY","imageFilters","CONTRAST","BRIGHTNESS","SATURATION","HUE","BLUR","imageScaleDefaults","quality","maxUpscale","webp","LOSSLESS","LOSSY","ALPHA","ANIMATION","SAFE_TRANSFORMED_AREA","MAX_TRANSFORMED_IMAGE_WIDTH","SUPER_UPSCALE_MODELS","MAX_DEVICE_PIXEL_RATIO","API_VERSION","utils","require","constants","globalFeatureSupportObject","checkWEBPSupport","webpImg","Image","onload","isWebpFeature","getFeature","setFeature","src","lossy","lossless","alpha","animation","isImageTypeSupported","supportedImageExtensions","getFileExtension","isExternalUrl","url","exec","getScaleFactor","sWidth","sHeight","dWidth","dHeight","transformType","getClassicScaleData","imageKey","getImageQualityKey","optimizedScaleFactor","upscaleMethodValue","forceUSM","getAutoScaleData","getSuperScaleData","scaleFactor","imageWidth","imageHeight","roundToFixed","precision","truncatePrecision","pow","toFixed","populateGlobalFeatureSupport","isWEBPBrowserSupport","isLosssyJPG","isLosslessPNG","isAlphaPNG","isObjectFitBrowserSupport","isImageTransformApplicable","isValidRequest","fittingType","getFileType","getFileName","fileExtensionRegexp","illegalChars","encodeURIComponent","illegalCharsRegex","extension","trimmed","getAlignedRect","sRect","dRect","alignment","getOverlappingRect","getTransformData","upscaleMethod","DAR","pixelAspectRatio","_getSafeTransformData","dimensionScaleFactor","sqrt","tWidth","tHeight","_getOptimizedScaleDat","auto","cssUpscaleNeeded","getAlignment","getPreferredImageQuality","getDimension","getFocalPoint","focalPoint","fp","getUpscaleString","arguments","sources","source","array","imageServiceUtils","transformParts","transformOptions","transformsObj","fileExtension","isWEBPSupport","isCropped","parts","progressive","watermark","unsharpMask","filters","setTransformParts","setTransformOptions","globalFeaturesSupportObj","isObjectFitBrowser","feature","getFitPart","transformedData","upscale","getCropPart","crop","cropped","focalPointX","focalPointY","clonedTarget","isValidImageFilter","filterValue","minValue","maxValue","transformData","defaultQuality","usm","transformPart","filterOptions","transforms","transformObj","getImageURI","fitTemplate","fillTemplate","fillFocalTemplate","cropTemplate","legacyCropTemplate","legacyFillTemplate","upscaleTemplate","qualityTemplate","unSharpMaskTemplate","nonProgressiveTemplate","watermarkTemplate","filterTemplatesMap","_filterTemplatesMap","transformsObjStrArr","legacyFillStr","fitStr","fillStr","fillFocalStr","transformsStr","filterName","imageClientApi","wixStatic","wixStaticWithMedia","HAS_MEDIA_PREFIX_RE","getURL","getScaleToFitImageURL","relativeUrl","sourceWidth","sourceHeight","targetWidth","targetHeight","getScaleToFillImageURL","getCropImageURL","cropX","cropY","cropWidth","cropHeight","getURI","imageClientAPI","activeFocusTraps","isSelectableInput","isEscapeEvent","isTabEvent","isKeyForward","isKeyBackward","valueOrHandler","getActualTarget","internalTrapStack","createFocusTrap","activateTrap","trapStack","trap","activeTrap","pause","trapIndex","splice","deactivateTrap","unpause","select","keyCode","shiftKey","_len","params","_key","composedPath","userOptions","returnFocusOnDeactivate","escapeDeactivates","delayInitialFocus","containers","containerGroups","tabbableGroups","nodeFocusedBeforeActivation","mostRecentlyFocusedNode","active","paused","delayInitialFocusTimer","recentNavEvent","getOption","configOverrideOptions","optionName","configOptionName","findContainerIndex","tabbableNodes","getNodeForOption","_ref2","_ref2$hasFallback","hasFallback","_ref2$params","optionValue","getInitialFocusNode","tabbableOptions","activeElement","firstTabbableGroup","firstTabbableNode","updateTabbableNodes","focusableNodes","lastTabbableNode","firstDomTabbableNode","lastDomTabbableNode","posTabIndexesFound","nextTabbableNode","forward","nodeIdx","group","g","getActiveElement","tryFocus","focus","preventScroll","getReturnFocusNode","previousActiveElement","findNextNavNode","_ref3","_ref3$isBackward","isBackward","destinationNode","containerIndex","containerGroup","startOfGroupIndex","_ref4","destinationGroupIndex","destinationGroup","lastOfGroupIndex","_ref5","checkPointerDown","clickOutsideDeactivates","deactivate","returnFocus","allowOutsideClick","preventDefault","checkFocusIn","targetContained","Document","stopImmediatePropagation","nextNode","navAcrossContainers","mruContainerIdx","mruTabIdx","checkKeyNav","checkTabKey","checkEscapeKey","checkClick","addListeners","capture","removeListeners","checkDomRemoval","mutations","isFocusedNodeRemoved","mutation","removedNodes","mutationObserver","MutationObserver","updateObservedNodes","disconnect","observe","subtree","childList","activate","activateOptions","onActivate","onPostActivate","checkCanFocusTrap","finishActivation","deactivateOptions","onDeactivate","onPostDeactivate","checkCanReturnFocus","finishDeactivation","pauseOptions","onPause","onPostPause","unpauseOptions","onUnpause","onPostUnpause","updateContainerElements","containerElements","elementsAsArray","Boolean","init_extract","_obj","option","defaultOptions","elem","currentTime","change","behaviourParams_gallery_horizontal_slideAnimation_default","init_behaviourParams_gallery_horizontal_slideAnimation","layoutParams_structure_scrollDirection_default","init_layoutParams_structure_scrollDirection","layoutParams_navigationArrows_position_default","init_layoutParams_navigationArrows_position","createOptions","LAYOUTS","populateWithDefaultOptions","strip","resizeMethod","requiredWidth","requiredHeight","sharpParams","mediaUrl","reasons","oldItemsParams","oldOptions","oldContainerParams","containerHasChanged","customImageRenderer","createUrl","alt","listener","mouseFollowerValue","uuid","c2","normalize","renderer","scene","useCache","disposeTexture","drawBuffers","scissor","viewport","_canvas","createCanvas","texture","info","_projScreenMatrix","_vector2","currentRenderList","parameters","framebuffer","Cache","Loader","meta","ax","indices","depth","fov","aspect","joint","cameraL","cameraR","left2","right2","top2","cameras","clip","propertyName","parser","decoder","accessor","isSupported","URL","sourceURI","worker","domElement","panLeft","panUp","pan","buffer","RGBELoader","opacity","sceneManager","ThreeDItem","isMergeableObject","getConfig","onLoaded","sdk","canPlayFile","_getRequireWildcardCache","_setPrototypeOf","_getPrototypeOf","_assertThisInitialized","YouTube","play","getDuration","SoundCloud","Vimeo","Facebook","Streamable","Wistia","Twitch","DailyMotion","Player","Mixcloud","Vidyard","Kaltura","FilePlayer","Hls","cache","Preview","createReactPlayer","_class","fallback","oEmbedParameters","handleError","onMessage","timer","builtInProp","Item","reject","iframe","language","consolePrintFn","func","exportLoggerFunctions","debugConfig","functions","exportedLogger","enableLogs","fakeLogger","isDateRangeCueAttribute","attrName","isSCTE35Attribute","base64Decode","base64encodedStr","atob","charCodeAt","getKeyIdBytes","keyIdbytes","strToUtf8array","subarray","paddedkeyIdbytes","changeEndianness","keyId","swap","to","convertDataUriToArrayBytes","colonsplit","keydata","semicolonsplit","commasplit","isbase64","keySystemFormatToKeySystemDomain","KeySystemFormats","FAIRPLAY","KeySystems","PLAYREADY","WIDEVINE","CLEARKEY","keySystemIdToKeySystemDomain","systemId","KeySystemIds","keySystemDomainToKeySystemFormat","keySystem","getKeySystemsForConfig","drmSystems","widevineLicenseUrl","keySystemsToAttempt","getSupportedMediaKeySystemConfigurations","audioCodecs","videoCodecs","drmSystemOptions","initDataTypes","createMediaKeySystemConfigurations","baseConfig","persistentState","distinctiveIdentifier","sessionTypes","sessionType","audioCapabilities","codec","contentType","robustness","audioRobustness","encryptionScheme","audioEncryptionScheme","videoCapabilities","videoRobustness","videoEncryptionScheme","sliceUint8","getTextDecoder","TextDecoder","bin2str","fromCharCode","readUint16","val","readUint32","readSint32","writeUint32","findBox","path","results","byteLength","endbox","subresults","parseSegmentIndex","sidx","references","timescale","earliestPresentationTime","firstOffset","startByte","referencesCount","referenceIndex","referenceInfo","referenceSize","referenceType","logger","subsegmentDuration","duration","parseInitSegment","initSegment","traks","trak","tkhd","trackId","mdhd","hdlr","hdlrType","soun","ElementaryStreamTypes","AUDIO","vide","VIDEO","stsd","trex","track","default","flags","patchEncyptionData","decryptdata","isCommonEncryption","sampleEntries","encBoxes","isAudio","enc","encBoxChildren","sinfBoxes","sinf","tenc","parseSinf","tencKeyId","Hex","hexDump","schm","scheme","getStartDTS","initData","fmp4","traf","tfdt","tfhd","baseTime","UINT32_MAX","scale","startTime","rawDuration","videoDuration","audioDuration","trafs","trackDefault","tfhdFlags","sampleDuration","truns","j","computeRawDurationFromSamples","sampleCount","sidxDuration","sidxs","dur","ref","trun","offsetStartDTS","timeOffset","baseMediaDecodeTime","upper","lower","segmentValidRange","segmentedRange","valid","remainder","moofs","byteOffset","appendUint8Array","data1","data2","temp","parseSamples","seiSamples","videoData","samples","isHEVCFlavor","moof","moofOffset","baseDataOffsetPresent","sampleDescriptionIndexPresent","defaultSampleDurationPresent","defaultSampleDuration","defaultSampleSizePresent","defaultSampleSize","defaultSampleFlagsPresent","tfhdOffset","isHEVC","dataOffsetPresent","dataOffset","firstSampleFlagsPresent","sampleDurationPresent","sampleSizePresent","sampleSize","sampleFlagsPresent","sampleCompositionOffsetsPresent","compositionOffset","trunOffset","sampleOffset","ix","naluTotalSize","naluSize","isSEIMessage","parseSEIMessageFromNALu","delimit","baseCodec","naluHeader","naluType","unescapedData","headerSize","pts","discardEPB","seiPtr","payloadType","payloadSize","endOfCaptions","leftOver","countryCode","providerCode","userStructure","userDataType","firstByte","totalCCs","totalBytes","byteArray","bytes","uuidStrArray","userDataBytes","userData","utf8ArrayToStr","EPBPositions","newLength","newData","sourceIndex","parseEmsg","schemeIdUri","timeScale","presentationTimeDelta","presentationTime","eventDuration","leftPresentationTime","rightPresentationTime","Number","isSafeInteger","MAX_SAFE_INTEGER","payload","mp4Box","mp4pssh","keyids","RangeError","kids","kidCount","setUint32","dataSize","parsePssh","ArrayBuffer","view","boxSize","getUint32","dataSizeOrKidCount","createInitializationVector","segmentNumber","uint8View","hasVariableReferences","VARIABLE_REPLACEMENT_REGEX","substituteVariablesInAttributes","parsed","attributeNames","variableList","hasVariableRefs","substituteVariables","variableReference","variableName","variableValue","playlistParsingError","addVariableDefinition","parentUrl","NAME","VALUE","QUERYPARAM","searchParams","importVariableDefinition","sourceVariableList","IMPORT","getMediaSource","MediaSource","WebKitMediaSource","isCodecType","typeCodes","sampleEntryCodesISO","isCodecSupportedInMp4","_MediaSource$isTypeSu","isTypeSupported","parseKey","keyTagAttributes","baseurl","_keyAttrs$METHOD","_keyAttrs$KEYFORMAT","keyAttrs","AttrList","decryptmethod","METHOD","decrypturi","decryptiv","hexadecimalInteger","decryptkeyformatversions","KEYFORMATVERSIONS","decryptkeyformat","KEYFORMAT","IV","resolvedUri","M3U8Parser","keyFormatVersions","LevelKey","parseStartTimeOffset","startAttributes","startAttrs","startTimeOffset","decimalFloatingPoint","_isFiniteNumber3","setCodecs","codecs","level","filtered","preferred","lastIndexOf","unknownCodecs","assignCodec","media","groupItem","codecProperty","codecValue","backfillProgramDateTimes","firstPdtIndex","fragPrev","programDateTime","assignProgramDateTime","prevFrag","rawProgramDateTime","endProgramDateTime","_isFiniteNumber4","setInitSegment","mapAttrs","levelkeys","relurl","BYTERANGE","setByteRange","sn","setFragLevelKeys","encryptedFragments","mapContextToLevelType","PlaylistContextType","AUDIO_TRACK","PlaylistLevelType","SUBTITLE_TRACK","SUBTITLE","MAIN","getResponseUrl","response","sendAddTrackEvent","videoEl","Event","createEvent","initEvent","dispatchEvent","addCueToTrack","cue","cues","getCueById","addCue","debug","textTrackCue","TextTrackCue","endTime","err2","clearCurrentCues","removeCue","removeCuesInRange","predicate","getCuesInRange","getFirstCueIndexAfterTime","time","mid","cuesFound","firstCueInRange","getCueClass","WebKitDataCue","VTTCue","dateRangeDateToTimelineSeconds","date","getTime","hexToArrayBuffer","getSkipValue","details","msn","canSkipUntil","canSkipDateRanges","endSN","snChangeGoal","HlsSkip","v2","Yes","No","updateFromToPTS","fragFrom","fragTo","fragToPTS","startPTS","_isFiniteNumber","contiguous","cc","minEndPTS","updateFragPTSDTS","endPTS","startDTS","endDTS","parsedMediaDuration","maxStartPTS","fragStartPts","fragEndPts","_isFiniteNumber2","deltaPTS","abs","drift","startSN","fragIdx","fragmentHint","PTSKnown","alignedSliding","mergeDetails","oldDetails","newDetails","currentInitSegment","oldFragments","oldInit","ccOffset","PTSFrag","mapFragmentIntersection","oldFrag","newFrag","_isFiniteNumber5","elementaryStreams","loader","stats","urlId","fragmentsToCheck","_currentInitSegment","skippedSegments","deltaUpdateFailed","startCC","dateRanges","mergeDateRanges","recentlyRemovedDateranges","newFragments","mapPartIntersection","partList","oldPart","newPart","adjustSliding","totalduration","driftStartTime","driftStart","advancedDateTime","advanced","driftEndTime","driftEnd","oldDateRanges","deltaDateRanges","dateRange","DateRange","isValid","JSON","stringify","oldParts","newParts","intersectionFn","delta","newFrags","oldFrags","addSliding","computeReloadInterval","distanceToLiveEdgeMs","Infinity","reloadInterval","targetduration","updated","liveEdgeMaxTargetDurations","lastSegmentDuration","getFragmentWithSN","fragCurrent","levelDetails","getPartWith","partIndex","_level$details","findPart","part","isTimeoutError","ErrorDetails","FRAG_LOAD_TIMEOUT","KEY_LOAD_TIMEOUT","LEVEL_LOAD_TIMEOUT","MANIFEST_LOAD_TIMEOUT","getRetryConfig","loadPolicy","isTimeout","getRetryDelay","retryConfig","retryCount","backoffFactor","backoff","retryDelayMs","maxRetryDelayMs","getLoaderConfigWithoutReties","loderConfig","errorRetry","timeoutRetry","shouldRetry","httpStatus","maxNumRetry","retryForHttpStatus","onLine","findFragmentByPDT","PDTValue","maxFragLookUpTolerance","startPDT","endPDT","seg","pdtWithinToleranceTest","findFragmentByPTS","fragPrevious","bufferEnd","fragNext","fragmentWithinToleranceTest","foundFragment","BinarySearch","candidate","candidateLookupTolerance","pdtBufferEnd","findFragWithCC","checkExpired","penalizedRendition","currentPenaltyState","performance","lastErrorPerfMs","RENDITION_PENALTY_DURATION_MS","lastErrorDetails","FRAG_GAP","candidateFrag","gap","errors","lastCandidateError","addGroupId","audioGroupIds","textGroupIds","assignTrackIdsByGroup","tracks","groups","groupId","fragmentEntity","_fragmentEntity$range","_fragmentEntity$range2","_fragmentEntity$range3","buffered","video","partial","audio","audiovideo","getFragmentKey","createLoaderContext","segment","loaderContext","responseType","headers","rangeStart","rangeEnd","byteRangeStartOffset","byteRangeEndOffset","_frag$decryptdata","byteRangeStart","byteRangeEnd","method","fragmentLen","resetIV","createGapLoadError","errorData","ErrorTypes","MEDIA_ERROR","fatal","networkDetails","aborted","LoadError","getNewPerformanceTiming","executeStart","executeEnd","findFirstFragWithCC","firstFrag","currentFrag","shouldAlignOnDiscontinuities","lastFrag","lastLevel","endCC","findDiscontinuousReferenceFrag","prevDetails","curDetails","prevFrags","curFrags","prevStartFrag","adjustFragmentStart","sliding","adjustSlidingStart","alignStream","alignDiscontinuities","alignPDT","referenceFrag","lastDetails","hasProgramDateTime","lastPDT","newPDT","alignMediaPlaylistByPDT","refDetails","refFragments","middleFrag","refFrag","refPDT","targetPDT","removePadding","outputBytes","paddingBytes","getUint8","getSourceBuffer","SourceBuffer","WebKitSourceBuffer","mediaSource","sourceBuffer","sourceBufferValidAPI","appendBuffer","changeTypeSupported","_sourceBuffer$prototy","changeType","hasUMDWorker","__HLS_WORKER_BUNDLE__","injectWorker","blob","Blob","objectURL","createObjectURL","Worker","loadWorker","scriptURL","href","dummyTrack","inputTimeScale","pid","sequenceNumber","dropped","getAudioConfig","observer","audioCodec","adtsObjectType","adtsExtensionSamplingIndex","adtsChannelConfig","manifestCodec","adtsSamplingRates","adtsSamplingIndex","trigger","Events","ERROR","FRAG_PARSING_ERROR","reason","samplerate","channelCount","isHeaderPattern","getHeaderLength","getFullFrameLength","canGetFrameLength","isHeader","canParse","probe","headerLength","frameLength","newOffset","initTrackConfig","getFrameDuration","parseFrameHeader","appendFrame","frameIndex","frameDuration","stamp","header","missing","sample","parseHeader","samplesPerFrame","sampleRate","dts","mpegVersion","mpegLayer","bitRateIndex","sampleRateIndex","paddingBit","channelMode","columnInBitrates","bitRate","BitratesMap","columnInSampleRates","SamplingRateMap","sampleCoefficient","SamplesCoefficients","bytesInSlot","BytesInSlot","chromeVersion","needChromeFix","createAVCSample","frame","units","parsePID","parsePAT","parsePMT","typeSupported","isSampleAes","avc","id3","segmentCodec","sectionLength","tableEnd","programInfoLength","mpeg","mp3","parsePES","stream","pesLen","pesHdrLen","pesPts","pesDts","pesPrefix","pesFlags","payloadStartOffset","pesData","dataLen","pushAccessUnit","avcSample","avcTrack","nbSamples","lastSample","toTimescaleFromBase","destScale","srcBase","toTimescaleFromScale","srcScale","toMsFromMpegTsClock","MPEG_TS_CLOCK_FREQ_HZ","toMpegTsClockFromTimescale","normalizePts","findKeyframeIndex","flushTextTrackMetadataCueSamples","initPTS","initDTS","flushTextTrackUserdataCueSamples","isInvalidInitPts","minDuration","getParsedTrackCodec","parsedCodec","getEncryptionType","decryptData","encryptionType","iv","isPromise","concatUint8Arrays","chunks","dataLength","chunk","subtitleOptionsIdentical","trackList1","trackList2","subtitleAttributesIdentical","attrs","attrs1","attrs2","stableRenditionId","subtitleAttribute","filterSubtitleTracks","textTrackList","kind","label","setLastCmd","cmdHistory","hasCmdRepeated","createCmdHistory","parseTimeStamp","input","computeSeconds","h","f","parseOptions","keyValueDelim","groupDelim","kv","k","parseCue","regionList","oInput","consumeTimeStamp","ts","consumeCueSettings","settings","Settings","vals","region","integer","percent","vertical","line","lineAlign","snapToLines","align","skipWhitespace","fixLineBreaks","generateCueId","parseWebVTT","vttByteArray","vttCCs","callBack","errorCallBack","VTTParser","vttLines","LINEBREAKS","init90kHz","cueTime","timestampMapMPEGTS","timestampMapLOCAL","parsingError","inHeader","oncue","currCC","cueOffset","webVttMpegTsMapOffset","new","calculateOffset","presentationOffset","decodeURIComponent","onparsingerror","onflush","timestamp","cueString2millis","flush","parseIMSC1","ttmlList","mdat","syncTime","ttml","parseTTML","DOMParser","xmlDoc","parseFromString","tt","getElementsByTagName","defaultRateInfo","frameRate","subFrameRate","frameRateMultiplier","tickRate","rateInfo","styleElements","collectionToDictionary","getElementCollection","regionElements","cueElements","cueElement","cueText","getTextContent","hasAttribute","parseTtmlTime","timestampParsingError","getTtmlStyles","textAlign","textAlignToLineAlign","fromElement","parentName","childName","elementsWithId","dict","childNodes","_node$childNodes","textContent","ttsNs","regionStyle","styleAttributes","regionStyleName","getAttributeNS","hasAttributeNS","timeAttributeValue","seconds","HMSF_REGEX","parseHoursMinutesSecondsFrames","TIME_UNIT_REGEX","parseTimeUnits","frames","canReuseVttTextTrack","inUseTrack","manifestTrack","textTrack1","textTrack2","x1","x2","y1","y2","newVTTCCs","prevCC","cloneRenditionGroups","groupCloneMap","uriReplacement","cloneId","audioGroupId","clonedTracks","clonedTrack","performUriReplacement","stableId","perOptionKey","HOST","PARAMS","perOptionUris","perVariantUri","fetchSupported","fetch","AbortController","ReadableStream","Request","getRequestParameters","signal","initParams","credentials","Headers","getByteRangeLength","byteRangeHeader","getContentLength","contentRange","byteRangeLength","contentLength","getRequest","timelineConfig","cueHandler","Cues","enableWebVTT","enableIMSC1","enableCEA708Captions","captionsTextTrack1Label","captionsTextTrack1LanguageCode","captionsTextTrack2Label","captionsTextTrack2LanguageCode","captionsTextTrack3Label","captionsTextTrack3LanguageCode","captionsTextTrack4Label","captionsTextTrack4LanguageCode","renderTextTracksNatively","mergeConfig","userConfig","liveSyncDurationCount","liveMaxLatencyDurationCount","liveSyncDuration","liveMaxLatencyDuration","defaultsCopy","deepCpy","deprecatedSettingTypes","deprecatedSettings","policyName","policyNotSet","report","setting","deprecatedSetting","maxLoadTimeMs","maxTimeToFirstByteMs","enableStreamingMode","currentLoader","FetchLoader","XhrLoader","canStreamProgressively","enableSoftwareAES","isFiniteNumber","DECIMAL_RESOLUTION_REGEX","ATTR_LIST_REGEX","LoadStats","BaseSegment","Part","DEFAULT_TARGET_DURATION","LevelDetails","requestMediaKeySystemAccess","isFooter","getID3Data","readSize","getTimeStamp","isTimeStampFrame","getFrameData","getID3Frames","decodeFrame","decodePrivFrame","decodeTextFrame","decodeURLFrame","readTimeStamp","RemuxerTrackIdConfig","keyUriToKeyIdMap","MASTER_PLAYLIST_REGEX","MASTER_PLAYLIST_MEDIA_REGEX","IS_MEDIA_PLAYLIST","LEVEL_PLAYLIST_REGEX_FAST","LEVEL_PLAYLIST_REGEX_SLOW","PlaylistLoader","MetadataSchema","MIN_CUE_DURATION","MAX_CUE_ENDTIME","ID3TrackController","LatencyController","HdcpLevels","HlsUrlParameters","Level","NetworkErrorAction","ErrorActionFlags","ErrorController","BasePlaylistController","chromeOrFirefox","LevelController","FragmentState","FragmentTracker","MIN_CHUNK_SIZE","FragmentLoader","KeyLoader","TaskLoop","noopBuffered","BufferHelper","ChunkMetadata","AESCrypto","FastAESKey","AESDecryptor","CHUNK_SIZE","Decrypter","TimeRanges","State","BaseStreamController","BaseAudioDemuxer","initPTSFn","AACDemuxer","emsgSchemePattern","MP4Demuxer","ExpGolomb","SampleAesDecrypter","PACKET_LENGTH","TSDemuxer","MP3Demuxer","AAC","MP4","MAX_SILENT_FRAME_DURATION","AAC_SAMPLES_PER_FRAME","MPEG_AUDIO_SAMPLE_PER_FRAME","safariWebkitVersion","MP4Remuxer","Mp4Sample","Mp4SampleFlags","PassThroughRemuxer","muxConfig","Transmuxer","emptyResult","TransmuxConfig","TransmuxState","TransmuxerInterface","STALL_MINIMUM_DURATION_MS","MAX_START_GAP_JUMP","SKIP_BUFFER_HOLE_STEP_SECONDS","SKIP_BUFFER_RANGE_START","GapController","TICK_INTERVAL","StreamController","EWMA","EwmaBandWidthEstimator","AbrController","ChunkCache","AudioStreamController","AudioTrackController","SubtitleStreamController","BufferableInstance","SubtitleTrackController","BufferOperationQueue","VIDEO_CODEC_PROFILE_REPACE","BufferController","specialCea608CharsCodes","getCharForByte","NR_ROWS","NR_COLS","rowsLowCh1","rowsHighCh1","rowsLowCh2","rowsHighCh2","backgroundColors","CaptionsLogger","numArrayToHexArray","PenState","StyledUnicodeChar","Row","CaptionScreen","Cea608Channel","Cea608Parser","OutputFilter","StringDecoder","IMSC1_CODEC","TimelineController","CapLevelController","FPSController","LOGGER_PREFIX","EMEController","EMEKeyError","CMCDVersion","CMCDObjectType","CMCDStreamingFormatHLS","CMCDController","PATHWAY_PENALTY_DURATION_MS","ContentSteeringController","AGE_HEADER_LINE_REGEX","FetchError","WHITESPACE_CHAR","defaultLoadPolicy","hlsDefaultConfig","trace","constructor","parseAttrList","clientAttrs","decimalInteger","intValue","stringValue","hexadecimalIntegerAsNumber","optionalFloat","defaultValue","enumeratedString","bool","decimalResolution","quote","lastIndex","dateRangeAttr","dateRangeWithSameId","_startDate","_endDate","_badValueForSameId","previousAttr","ID","endDate","class","CLASS","startDate","plannedDuration","endOnNext","loaded","retry","total","chunkCount","bwEstimate","loading","parsing","buffering","AUDIOVIDEO","_byteRange","_url","previous","byteRange","buildAbsoluteURL","alwaysNormalize","_decryptdata","tagList","keyLoader","bitrateTest","title","endList","NONE","getDecryptData","keyFormats","encrypted","_this$_decryptdata","setKeyFormat","keyFormat","abortRequests","_this$loader","_this$keyLoader","abort","setElementaryStreamInfo","clearElementaryStreamInfo","partAttrs","fragOffset","independent","baseUrl","averagetargetduration","live","ageHeader","availabilityDelay","misses","m3u8","canBlockReload","partHoldBack","holdBack","partTarget","preloadHint","renditionReports","tuneInGoal","reloaded","partSnDiff","lastPartSn","partIndexDiff","lastPartIndex","levelTargetDuration","runTime","runDuration","partEnd","fragmentEnd","_this$partList","_this$fragments","age","_this$partList2","_this$partList3","front","id3Data","frameData","owner","privateData","description","timeStampFrame","pts33Bit","exitOnNull","decoded","decode","char2","char3","out","clearKeyUriToKeyIdMap","formatversions","pssh","keyBytes","PlayReadyKeySystemUUID","keyBytesUtf16","Uint16Array","keyByteStr","xmlKeyBytes","keyData","nodeValue","keyIdArray","padded","dv","a3ds","alac","alaw","dra1","dtsc","dtse","dtsh","enca","g719","g726","m4ae","mha1","mha2","mhm1","mhm2","mlpa","mp4a","Opus","opus","samr","sawb","sawp","sevc","sqcp","ssmv","twos","ulaw","avc1","avc2","avc3","avc4","avcp","av01","drac","dva1","dvav","dvh1","dvhe","encv","hev1","hvc1","mjp2","mp4v","mvc1","mvc2","mvc3","mvc4","resv","rv60","s263","svc1","svc2","vp08","vp09","stpp","wvtt","findGroup","mediaGroupId","convertAVC1ToAVCOTI","avcdata","isMediaPlaylist","parseMasterPlaylist","contentSteering","levels","sessionData","sessionKeys","levelsWithKnownCodecs","_level$unknownCodecs","bitrate","resolution","CODECS","videoCodec","tag","sessionAttrs","dataId","sessionKey","variableAttributes","contentSteeringAttributes","pathwayId","stripUnknownCodecLevels","parseMasterPlaylistMedia","groupsByType","SUBTITLES","textCodec","TYPE","medias","instreamId","LANGUAGE","autoselect","forced","lang","groupCodec","parseLevelPlaylist","levelUrlId","multivariantVariableList","currentSN","currentPart","discontinuityCounter","createNextFrag","value1","value2","skipAttrs","levelKey","serverControlAttrs","partInfAttrs","previousFragmentPart","preloadHintAttrs","renditionReportAttrs","pop","fragmentLength","firstFragment","lastFragment","lastSn","MANIFEST","LEVEL","hls","loaders","registerListeners","startLoad","startPosition","stopLoad","destroyInternalLoaders","on","MANIFEST_LOADING","onManifestLoading","LEVEL_LOADING","onLevelLoading","AUDIO_TRACK_LOADING","onAudioTrackLoading","SUBTITLE_TRACK_LOADING","onSubtitleTrackLoading","unregisterListeners","off","createInternalLoader","PLoader","pLoader","InternalLoader","getInternalLoader","resetInternalLoader","contextType","load","deliveryDirectives","_context$deliveryDire","manifestLoadPolicy","playlistLoadPolicy","audioTracks","subtitleTracks","targetDuration","maxLowLatencyPlaylistRefresh","legacyRetryCompatibility","loaderConfig","maxRetry","retryDelay","maxRetryDelay","loaderCallbacks","onSuccess","handleManifestParsingError","handleTrackOrLevelPlaylist","handleMasterPlaylist","onError","handleNetworkError","onTimeout","parsedResult","subtitles","captions","embeddedAudioFound","audioTrack","MANIFEST_LOADED","levelId","levelType","singleLevel","handlePlaylistLoaded","NETWORK_ERROR","MANIFEST_PARSING_ERROR","code","UNKNOWN","MANIFEST_LOAD_ERROR","LEVEL_LOAD_ERROR","AUDIO_TRACK_LOAD_TIMEOUT","AUDIO_TRACK_LOAD_ERROR","SUBTITLE_TRACK_LOAD_TIMEOUT","SUBTITLE_LOAD_ERROR","levelIndex","LEVEL_EMPTY_ERROR","LEVEL_PARSING_ERROR","getCacheAge","LEVEL_LOADED","AUDIO_TRACK_LOADED","SUBTITLE_TRACK_LOADED","audioId3","emsg","Cue","POSITIVE_INFINITY","MAX_VALUE","id3Track","dateRangeCuesAppended","_registerListeners","_unregisterListeners","MEDIA_ATTACHED","onMediaAttached","MEDIA_DETACHING","onMediaDetaching","FRAG_PARSING_METADATA","onFragParsingMetadata","BUFFER_FLUSHING","onBufferFlushing","LEVEL_UPDATED","onLevelUpdated","createTrack","getID3Track","textTracks","textTrack","addTextTrack","enableEmsgMetadataCues","enableID3MetadataCues","ID3","timeDiff","updateId3CueEnds","_this$id3Track","startOffset","endOffset","enableDateRangeMetadataCues","ids","idsToRemove","dateTimeOffset","appendedDateRangeCues","durationKnown","nextDateRangeWithSameClass","filterMapArray","stallCount","_latency","timeupdateHandler","timeupdate","latency","maxLatency","targetLatency","lowLatencyMode","maxLiveSyncOnStallIncrease","liveSyncOnStallIncrease","liveSyncPosition","liveEdge","estimateLiveEdge","syncPosition","edgeStalled","maxLevelUpdateAge","forwardBufferLength","bufferedRanges","_this$levelDetails","BUFFER_STALLED_ERROR","computeLatency","maxLiveSyncPlaybackRate","distanceFromTarget","liveMinLatencyDuration","inLiveRange","rate","exp","playbackRate","skip","addDirectives","_attrs","codecSet","fragmentError","loadError","realBitrate","_urlId","maxBitrate","newValue","_this$audioGroupIds","textGroupId","_this$textGroupIds","addFallback","list","comparisonFn","minIndex","maxIndex","currentIndex","currentElement","comparisonResult","DoNothing","SendEndCallback","SendAlternateToPenaltyBox","RemoveAlternatePermanently","InsertDiscontinuity","RetryRequest","None","MoveAllAlternatesMatchingHost","MoveAllAlternatesMatchingHDCP","SwitchToSDR","playlistError","penalizedRenditions","onErrorOut","getVariantLevelIndex","loadLevel","_data$frag","_data$level","FRAG_LOAD_ERROR","KEY_LOAD_ERROR","errorAction","getFragRetryOrSwitchAction","action","FRAG_DECRYPT_ERROR","_data$context","_data$context$levelDe","getPlaylistRetryOrSwitchAction","levelRetry","getLevelSwitchAction","KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED","restrictedHdcpLevel","hdcpLevel","BUFFER_ADD_CODEC_ERROR","REMUX_ALLOC_ERROR","INTERNAL_EXCEPTION","BUFFER_APPENDING_ERROR","BUFFER_APPEND_ERROR","BUFFER_FULL_ERROR","LEVEL_SWITCH_ERROR","BUFFER_SEEK_OVER_HOLE","BUFFER_NUDGE_ON_STALL","KEY_SYSTEM_ERROR","_data$response","variantLevelIndex","fragLoadPolicy","keyLoadPolicy","fragmentErrors","_data$response2","autoLevelEnabled","_data$frag2","_data$context2","nextLevel","minAutoLevel","maxAutoLevel","fragErrorType","playlistErrorType","playlistErrorGroupId","levelCandidate","fragCandidate","nextAutoLevel","_data$errorAction","sendAlternateToPenaltyBox","resolved","switchLevel","redundantFailover","maxHdcpLevel","nextLoadLevel","redundantLevels","errorUrlId","penalizeRendition","newUrlId","lv","logPrefix","requestScheduled","canLoad","clearTimer","loadPlaylist","switchParams","playlistUri","foundIndex","currentGoal","hlsUrlParameters","shouldLoadPlaylist","playlist","shouldReloadPlaylist","playlistLoaded","previousDetails","elapsed","endSn","hasParts","lastPart","nextSnStartIndex","lastAdvanced","cdnAge","segments","getDeliveryDirectives","bufferInfo","mainForwardBufferInfo","estimatedTimeUntilUpdate","previousDeliveryDirectives","checkRetry","errorEvent","errorDetails","_errorEvent$context","contentSteeringController","_levels","_firstLevel","_startLevel","currentLevel","currentLevelIndex","manualLevelIndex","steering","onParsedComplete","onManifestLoaded","onLevelLoaded","LEVELS_UPDATED","onLevelsUpdated","AUDIO_TRACK_SWITCHED","onAudioTrackSwitched","FRAG_LOADED","onFragLoaded","resetLevels","levelSet","levelFromSet","levelParsed","_levelParsed$audioCod","FRAMERATE","PATHWAY","RESOLUTION","contentSteeringPrefix","filterAndSortMediaOptions","unfilteredLevels","resolutionFound","videoCodecFound","audioCodecFound","MANIFEST_INCOMPATIBLE_CODECS_ERROR","unsortedLevels","SCORE","firstLevelInPlaylist","filterParsedLevels","audioOnly","edata","firstLevel","altAudio","MANIFEST_PARSED","autoStartLoad","forceStartLoad","newLevel","OTHER_ERROR","lastLevelIndex","lastPathwayId","levelSwitchingData","LEVEL_SWITCHING","manualLevel","startLevel","configStartLevel","_data$deliveryDirecti2","curLevel","_data$deliveryDirecti","removeLevel","filterLevelAndGroupByIdIndex","NOT_LOADED","APPENDING","PARTIAL","OK","activePartLists","endListFragments","timeRanges","bufferPadding","hasGaps","BUFFER_APPENDED","onBufferAppended","FRAG_BUFFERED","onFragBuffered","getAppendedFrag","activeParts","activePart","appendedPTS","getBufferedFrag","detectEvictedFragments","elementaryStream","timeRange","playlistType","appendedPart","appendedPartSn","removeFragment","esData","isNotBuffered","isTimeBuffered","detectPartialFragments","fragKey","isFragHint","streamInfo","getBufferedTimes","removeParts","snToKeep","fragBuffered","force","getPartialFragment","bestFragment","timePadding","bestOverlap","isEndListAppended","lastFragmentEntity","getState","hasFragment","_this$activePartLists","removeFragmentsInRange","withGapOnly","unbufferedOnly","snToRemove","removeAllFragments","partLoadTimeout","onProgress","FragmentILoader","fLoader","DefaultILoader","tags","highWaterMark","resetLoader","onAbort","INTERNAL_ABORTED","loadPart","updateStatsFromPart","partLoadedData","fragStats","partStats","partTotal","estTotalParts","estLoadedParts","estRemainingParts","estRemainingBytes","fragLoading","partLoading","keyUriToKeyInfo","emeController","detach","keyInfo","mediaKeySessionContext","createKeyLoadError","loadClear","loadingFrag","emeEnabled","selectKeySystemFormat","keySystemFormat","loadInternal","_keyInfo","_keyInfo2","keyLoadPromise","_keyInfo$mediaKeySess","keyStatus","keyLoadedData","loadKeyHTTP","loadKeyEME","keySessionContextPromise","loadKey","keySessionContext","catch","_boundTick","_tickTimer","_tickInterval","_tickCallCount","tick","onHandlerDestroying","onHandlerDestroyed","clearNextTick","clearInterval","hasInterval","hasNextTick","setInterval","millis","doTick","tickImmediate","isBuffered","getBuffered","pos","maxHoleDuration","vbuffered","bufferedInfo","nextStart","buffered2","buf2len","buf2end","bufferLen","bufferStartNext","bufferStart","transmuxing","subtle","aesIV","decrypt","expandKey","importKey","rcon","subMix","Uint32Array","invSubMix","sBox","invSBox","ksRows","keySize","keySchedule","invKeySchedule","initTable","uint8ArrayToUint32Array_","arrayBuffer","newArray","subMix0","subMix1","subMix2","subMix3","invSubMix0","invSubMix1","invSubMix2","invSubMix3","xi","sx","x4","x8","keyBuffer","sameKey","ksRow","invKsRow","sbox","prev","networkToHostOrderSwap","word","inputArrayBuffer","nRounds","invSBOX","initVector","initVector0","initVector1","initVector2","initVector3","inputInt32","Int32Array","outputInt32","t0","t1","t2","t3","s0","s1","s2","s3","inputWords0","inputWords1","inputWords2","inputWords3","swapWord","removePKCS7Padding","logEnabled","softwareDecrypter","fastAesKey","remainderData","currentIV","currentResult","useSoftware","browserCrypto","crypto","webkitSubtle","isSync","reset","softwareDecrypt","decryptResult","webCryptoDecrypt","logOnce","currentChunk","getValidChunk","aesKey","onWebCryptoError","splitPoint","msg","STOPPED","IDLE","KEY_LOADING","FRAG_LOADING","FRAG_LOADING_WAITING_RETRY","WAITING_TRACK","PARSING","PARSED","ENDED","WAITING_INIT_PTS","WAITING_LEVEL","fragmentTracker","transmuxer","_state","mediaBuffer","lastCurrentTime","nextLoadPosition","loadedmetadata","retryDate","fragmentLoader","levelLastLoaded","startFragRequested","decrypter","onvseeking","onvended","onTickEnd","resetTransmuxer","_streamEnded","lastPartBuffered","getLevelDetails","_this$levels$this$lev","onMediaSeeking","onMediaEnded","ended","maxBufferHole","resetLoadingState","tolerance","fragStartOffset","fragEndOffset","pastFragment","loadFragment","targetBufferTime","_loadFragForPlayback","progressCallback","fragContextChanged","_handleFragmentLoadProgress","_doFragLoad","_handleFragmentLoadComplete","resetFragmentLoading","clearTrackerIfNeeded","_this$mediaBuffer","fragState","getFwdBufferInfo","minForwardBufferLength","maxBufferLength","reduceMaxBufferLength","checkLiveUpdate","flushMainBuffer","flushScope","_loadInitSegment","decryptedData","FRAG_DECRYPTED","tstart","tdecrypt","fragBufferedComplete","_frag$startPTS","_frag$endPTS","_this$fragCurrent","_this$fragPrevious","NaN","seekToStartPos","fragLoadedEndData","partsLoaded","complete","fragLoaded","chunkMeta","keyLoadingPromise","KEY_LOADED","getNextPart","doFragPartsLoad","handleFragLoadError","loadedEndOfParts","dataOnProgress","all","fragLoadedData","fromPart","initialPartList","loadedPart","nextPart","handleFragLoadAborted","_handleTransmuxerFlush","getCurrentContext","updateLevelTiming","bufferFragmentData","noBacktracking","_buffer","BUFFER_APPENDING","flushBufferGap","fragDuration","segmentFraction","bufferable","getLoadPosition","getFwdBufferInfoAtPos","bufferedFragAtPos","getMaxBufferLength","levelBitrate","maxBufLen","maxBufferSize","maxMaxBufferLength","minLength","fragOrPart","getNextFragment","fragLen","initialLiveManifestSize","getInitialLiveFragment","getFragmentAtPosition","mapToInitFragWhenRequired","isLoopLoading","trackerState","getNextFragmentLoopLoading","gapStart","nextFragment","nextbufferInfo","independentAttrOmitted","targetSN","liveStart","loadingParts","lookupTolerance","curSNIdx","sameLevel","nextFrag","synchronizeToLiveEdge","withinSlidingWindow","readyState","alignPlaylists","slidingStart","firstLevelLoad","aligned","alignedSlidingStart","waitForCdnTuneIn","advancePartLimit","setStartPosition","offsetInMultivariantPlaylist","onFragmentOrKeyLoadError","filterType","_this$fragCurrent2","gapTagEncountered","_this$levelLastLoaded","resetStartWhenNotLoaded","resetFragmentErrors","reduceLengthAndFlushBuffer","flushBuffer","afterBufferFlushed","bufferType","bufferedTimeRanges","resetWhenMissingContext","_this$levelLastLoaded2","removeUnbufferedFrags","_this$transmuxer","parsedDuration","LEVEL_PTS_UPDATED","FRAG_PARSED","recoverWorkerError","_this$levelLastLoaded3","_this$fragCurrent3","nextState","previousState","_audioTrack","_id3Track","cachedData","basePTS","lastPTS","resetInitSegment","trackDuration","resetTimeStamp","deaultTimestamp","resetContiguity","demux","lastDataIndex","partialData","videoTrack","demuxSampleAes","ADTS","txtTrack","captionTrack","videoSamples","segmentedData","extractID3Track","emsgs","emsgInfo","bytesAvailable","bitsAvailable","loadWord","workingBytes","availableBytes","skipBits","count","skipBytes","readBits","bits","valu","skipLZ","leadingZeroCount","skipUEG","skipEG","readUEG","clz","readEG","readBoolean","readUByte","readUShort","readUInt","skipScalingList","lastScale","nextScale","deltaScale","readSPS","frameCropLeftOffset","frameCropRightOffset","frameCropTopOffset","frameCropBottomOffset","numRefFramesInPicOrderCntCycle","scalingListCount","profileIdc","chromaFormatIdc","picOrderCntType","picWidthInMbsMinus1","picHeightInMapUnitsMinus1","frameMbsOnlyFlag","pixelRatio","aspectRatioIdc","ceil","readSliceType","decryptBuffer","encryptedData","decryptAacSample","sampleIndex","curUnit","encryptedBuffer","decryptedBuffer","decryptAacSamples","getAvcEncryptedData","decodedData","encryptedDataLen","Int8Array","outputPos","inputPos","getAvcDecryptedUnit","uint8DecryptedData","decryptAvcSample","unitIndex","decryptAvcSamples","curUnits","sampleAes","pmtParsed","_duration","_pmtId","_avcTrack","_txtTrack","aacOverFlow","syncOffset","scanwindow","foundPat","packetStart","tsPackets","pes","avcId","avcData","audioId","id3Id","audioData","unknownPID","pmtId","tsPacketErrors","stt","atf","parseAVCPES","parseAACPES","parseMPEGPES","parseID3PES","parsedPIDs","emit","demuxResult","extractRemainingSamples","parseAVCNALu","spsfound","audFound","_avcSample2","iskey","sliceType","_avcSample","sps","expGolombDecoder","codecarray","codecstring","pps","getLastNalUnit","_avcSample3","lastUnit","naluState","lastState","unitType","lastUnitStart","lastUnitType","tmp","frameMissingBytes","sampleLength","frameOverflowBytes","recoverable","MpegAudio","id3Sample","getSilentFrame","avcC","btrt","dinf","dref","esds","ftyp","mdia","mfhd","minf","moov","mvex","mvhd","pasp","sdtp","stbl","stco","stsc","stsz","stts","vmhd","smhd","videoHdlr","audioHdlr","HDLR_TYPES","STTS","STSC","STCO","STSZ","VMHD","SMHD","STSD","majorBrand","avc1Brand","minorVersion","FTYP","box","DINF","upperWordDuration","lowerWordDuration","boxes","dependsOn","isDependedOn","hasRedundancy","avcc","hSpacing","vSpacing","configlen","sampleDependencyTable","upperWordBaseMediaDecodeTime","lowerWordBaseMediaDecodeTime","arraylen","cts","isLeading","paddingValue","isNonSync","degradPrio","movie","vendor","ISGenerated","_initPTS","_initDTS","nextAvcDts","nextAudioPts","videoSampleDuration","isAudioContiguous","isVideoContiguous","defaultTimeStamp","resetNextTimestamp","getVideoStartPts","rolloverDetected","minPTS","remux","accurateTimeOffset","audioTimeOffset","videoTimeOffset","hasAudio","hasVideo","enoughAudioSamples","enoughVideoSamples","canRemuxAvc","generateIS","firstKeyFrameIndex","firstKeyFramePTS","forceKeyFrameOnDiscontinuity","tsDelta","audiovideoTimestampDelta","remuxAudio","audioTrackLength","remuxVideo","firstKeyFrame","audioSamples","computePTSDTS","metadata","inputSamples","outputSamples","mp4SampleDuration","firstDTS","lastDTS","maxPTS","NEGATIVE_INFINITY","sortSamples","initTime","deltadts","deltapts","inputDuration","averageSampleDuration","foundHole","foundOverlap","firstPTS","nbNalu","naluLen","nbUnits","sampleLen","mdatSize","MUX_ERROR","stretchedLastFrame","minDtsDelta","minPtsDelta","maxDtsDelta","maxPtsDelta","avcSampleUnits","mp4SampleLength","unitData","unitDataLen","ptsDelta","lastFrameDuration","stretchShortVideoTrack","gapTolerance","deltaToFrameEnd","compositionTimeOffset","nextDts","nextPts","nb","mp4timeScale","inputSampleDuration","rawMPEG","alignedWithVideo","timeOffsetMpegTS","maxAudioFramesDrift","newStamp","fillFrame","audioSample","prevSample","unitLen","remuxEmptyAudio","silentFrame","isKeyframe","emitInitSegment","initTracks","lastEndTime","defaultInitPTS","generateInitSegment","_initData","_initData2","decodeTime","async","demuxer","remuxer","decryptionPromise","transmuxConfig","currentTransmuxState","configure","uintData","discontinuity","trackSwitch","initSegmentChange","defaultInitPts","initSegmentData","getDecrypter","resetMuxers","needsProbing","configureTransmuxer","resetInitialTimestamp","transmux","currentState","transmuxResults","demuxResultOrPromise","flushRemux","remuxResult","transmuxSampleAes","transmuxUnencrypted","mux","Remuxer","Demuxer","EventEmitter","onTransmuxComplete","onFlush","useWorker","workerContext","onwmsg","enableWorker","forwardMessage","ev","mp4","canCreateWorker","workerPath","onWorkerMessage","onerror","filename","lineno","postMessage","cmd","resetWorker","revokeObjectURL","terminate","removeAllListeners","_frag$initSegment","_lastFrag$initSegment","snDiff","partDiff","transmuxResult","handleTransmuxComplete","transmuxerError","asyncFlush","handleFlushResult","_this$workerContext","logType","nudgeRetry","stallReported","stalled","moved","seeking","poll","activeFrag","seeked","beginSeek","stalledDuration","hasEnoughBuffer","noBufferGap","startJump","isLive","maxStartGapJump","partialOrGap","_trySkipBufferHole","tnow","_reportStall","bufferedWithHoles","_tryFixBufferStall","stalledDurationMs","targetTime","highBufferWatchdogPeriod","_tryNudgeBuffer","bufferStarved","waiting","gapLength","startGap","startFrag","startProvisioned","moreToLoad","provisioned","nudgeMaxRetry","nudgeOffset","audioCodecSwap","gapController","_forceStartLoad","fragPlaying","onvplaying","onvseeked","fragLastKbps","couldBacktrack","backtrackFragment","audioCodecSwitch","videoBuffer","onManifestParsed","FRAG_LOAD_EMERGENCY_ABORTED","onFragLoadEmergencyAborted","AUDIO_TRACK_SWITCHING","onAudioTrackSwitching","BUFFER_CREATED","onBufferCreated","BUFFER_FLUSHED","onBufferFlushed","testBandwidth","_levels$level","_this$media","doTickIdle","checkBuffer","checkFragmentChanged","startFragPrefetch","levelInfo","getMainFwdBufferInfo","BUFFER_EOS","_this$backtrackFragme","backtrackSn","backtrackFrag","_loadBitrateTestFrag","followingBufferedFrag","immediateLevelSwitch","abortCurrentFrag","nextLevelSwitch","fetchdelay","fragPlayingCurrent","nextLevelId","bufferedFrag","nextBufferedFrag","maxStart","startPts","onMediaPlaying","onMediaSeeked","BUFFER_RESET","aac","heaac","_curLevel$details","newLevelId","_getAudioCodec","_handleTransmuxComplete","fromAltAudio","mediaTrack","alternate","swapAudioCodec","defaultAudioCodec","_id3$samples","mapFragment","_bufferInitSegment","FRAG_PARSING_INIT_SEGMENT","INIT_PTS_FOUND","isFirstFragment","isFirstInDiscontinuity","emittedID3","emittedText","FRAG_PARSING_USERDATA","ua","levelCodec","BUFFER_CODECS","trackName","fragCurrentLevel","FRAG_CHANGED","LEVEL_SWITCHED","currentProgramDateTime","epocMs","halfLife","estimate","weight","alpha_","estimate_","totalWeight_","adjAlpha","getTotalWeight","getEstimate","zeroFactor","slow","fast","defaultEstimate","defaultTTFB","defaultEstimate_","minWeight_","minDelayMs_","slow_","fast_","defaultTTFB_","ttfb_","durationMs","numBytes","numBits","durationS","bandwidthInBps","sampleTTFB","ttfb","canEstimate","getEstimateTTFB","lastLevelLoadSec","lastLoadedFragLevel","_nextAutoLevel","onCheck","_abandonRulesCheck","partCurrent","bitrateTestDelay","bwEstimator","abrEwmaSlowVoD","abrEwmaFastVoD","abrEwmaDefaultEstimate","onFragLoading","onLevelSwitching","_data$part","ignoreFragment","getTimeToLoadFrag","timeToFirstByteSec","bandwidth","fragSizeBits","isSwitch","fragLoadSec","playlistLoadSec","abrEwmaSlowLive","abrEwmaFastLive","timeLoading","ttfbEstimate","bufferStarvationDelay","loadedFirstByte","expectedLen","timeStreaming","loadRate","fragLoadedDelay","bwe","fragLevelNextLoadedDelay","levelNextBitrate","abrMaxWithRealBitrate","loadedBytes","loadedDuration","fragBufferedData","processingMs","forcedAutoLevel","nextABRAutoLevel","getNextABRAutoLevel","currentFragDuration","avgbw","bestLevel","findBestLevel","abrBandWidthFactor","abrBandWidthUpFactor","maxStarvationDelay","bwFactor","bwUpFactor","maxLoadingDelay","currentBw","maxFetchDuration","currentCodecSet","ttfbEstimateSec","levelSkippedMin","levelSkippedMax","avgDuration","adjustedbw","fetchDuration","videoTrackCC","waitingVideoCC","bufferedTrack","switchingTrack","waitingData","mainDetails","bufferFlushed","cachedTrackLoadedData","AUDIO_TRACKS_UPDATED","onAudioTracksUpdated","onAudioTrackLoaded","onBufferReset","onInitPtsFound","_levels$trackId","clearWaitingFragment","waitingFragmentAtPosition","trackDetails","mainBufferInfo","atGap","atBufferSyncLimit","mainFrag","mainBufferLength","maxConfigBuffer","mediaPlaylist","_track$details","completeAudioSwitch","_track$details2","bufferedAttributes","switchAttributes","CHANNELS","tracksInGroup","currentTrack","selectDefaultTrack","trackInActiveGroup","audioTracksUpdated","selectInitialTrack","setAudioTrack","newId","lastTrack","findTrackId","currentTrackId","tracksBuffered","SUBTITLE_TRACKS_UPDATED","onSubtitleTracksUpdated","SUBTITLE_TRACK_SWITCH","onSubtitleTrackSwitch","onSubtitleTrackLoaded","SUBTITLE_FRAG_PROCESSED","onSubtitleFragProcessed","success","fragStart","fragEnd","endOffsetSubtitles","mediaBufferTimeRanges","mainSlidingStartFragment","foundFrag","timeranges","getRange","DOMException","queuedDefaultTrack","trackChangeListener","onTextTracksChanged","asyncPollTrackChange","pollTrackChange","useTextTrackPolling","subtitlePollingInterval","_subtitleDisplay","subtitleDisplay","toggleTrackModes","subtitleTrack","initialTrackId","subtitleTracksUpdated","setSubtitleTrack","groupTracks","oldTrack","nextTrack","_tracks$newId","sourceBufferReference","buffers","queues","operation","queue","executeNext","insertAbort","appendBlocker","execute","promise","onStart","onComplete","sb","updating","shiftAndExecuteNext","current","_objectUrl","operationQueue","listeners","bufferCodecEventsExpected","_bufferCodecEventsTotal","lastMpegAudioChunk","appendError","pendingTracks","_onMediaSourceOpen","_onMediaEmptied","updateMediaElementDuration","checkPendingTracks","_onMediaSourceClose","_onMediaSourceEnded","_initSourceBuffer","hasSourceTypes","getSourceBufferTypes","MEDIA_ATTACHING","onMediaAttaching","onBufferAppending","onBufferCodecs","onBufferEos","onFragParsed","onFragChanged","codecEvents","ms","endOfStream","MEDIA_DETACHED","removeBufferListeners","removeSourceBuffer","sourceBufferCount","currentCodec","nextCodec","mimeType","appendChangeType","eventData","chunkStats","bufferAppendingStart","fragBuffering","partBuffering","checkTimestampOffset","timestampOffset","appendExecutor","QUOTA_EXCEEDED_ERR","appendErrorMaxRetry","flushOperation","removeExecutor","buffersAppendedTo","onUnblocked","blockBuffers","flushBackBuffer","ending","sourceBufferTypes","backBufferLength","liveBackBufferLength","maxBackBufferLength","targetBackBufferPosition","BACK_BUFFER_REACHED","LIVE_BACK_BUFFER_REACHED","levelDuration","mediaDuration","msDuration","liveDurationInfinity","updateSeekableRange","setLiveSeekableRange","pendingTracksCount","createSourceBuffers","BUFFER_INCOMPATIBLE_CODECS_ERROR","addSourceBuffer","sbName","addBufferListener","_onSBUpdateStart","_onSBUpdateEnd","_onSBUpdateError","removeStart","removeEnd","blockingOperations","byte","charCode","verboseLevel","severity","numArray","hexArray","foreground","underline","italics","flash","attribs","isDefault","equals","other","copy","newPenState","uchar","penState","setChar","setPenState","newChar","chars","currPenState","cueStartTime","equal","setCursor","absPos","moveCursor","relPos","newPos","backSpace","insertChar","char","clearFromPos","startPos","clear","clearToEndOfRow","getTextString","setPenStyles","currChar","rows","currRow","nrRollUpRows","lastOutputScreen","row","setPen","setPAC","pacData","newRow","topRowIndex","prevLineTime","indent","prevPos","color","setBkgData","bkgData","setRollUpRows","nrRows","rollUp","getDisplayText","topRow","asOneRow","displayText","rowNr","rowText","getTextAndFormat","channelNumber","outputFilter","chNr","verbose","displayedMemory","nonDisplayedMemory","currRollUpRow","writeScreen","getHandler","setHandler","newHandler","setMode","newMode","insertChars","screen","outputDataUpdate","ccRCL","ccBS","ccAOF","ccAON","ccDER","ccRU","ccFON","ccRDC","ccTR","ccRTD","ccEDM","ccCR","ccENM","ccEOC","ccTO","nrCols","ccMIDROW","secondByte","colorIndex","colors","dispatch","newCue","dispatchCue","cueSplitAtTime","field","out1","out2","channels","currentChannel","channel","addData","byteList","cmdFound","charsFound","parseCmd","parseMidrow","parsePAC","parseBackgroundAttributes","parseChars","currChNr","cond1","cond2","case1","case2","interpretPAC","pacIndex","channelNr","charCodes","charCode1","oneCode","hexCodes","timelineController","cueRanges","addCues","createCaptionsTrack","AllowedDirections","AllowedAlignments","isAllowedValue","allowed","lcValue","findDirectionSetting","findAlignSetting","rest","cobj","baseObj","hasBeenReset","_id","_pauseOnExit","_startTime","_endTime","_text","_region","_vertical","_snapToLines","_line","_lineAlign","_position","_positionAlign","_size","_align","SyntaxError","displayState","getCueAsHTML","WebVTT","convertCueToDOMTree","dflt","defaultKey","_this","collectNextLine","alreadyCollectedLine","hasSubstring","inputString","searchString","timeString","secs","mins","hours","_prevCC","unparsedVttFrags","captionsTracks","nonNativeCaptionsTracks","cea608Parser1","cea608Parser2","captionsProperties","languageCode","textTrack3","textTrack4","channel1","channel2","channel3","channel4","onFragParsingUserdata","onFragDecrypted","SUBTITLE_TRACKS_CLEARED","onSubtitleTracksCleared","merged","cueRange","overlap","CUES_PARSED","getExistingTrack","createNativeTrack","createNonNativeTrack","existingTrack","createTextTrack","trackProperties","closedCaptions","NON_NATIVE_TEXT_TRACKS_FOUND","_cleanTracks","hasIMSC1","listIsIdentical","inUseTracks","textTrackKind","_captionsOrSubtitlesFromCharacteristics","tracksList","CHARACTERISTICS","transcribesSpokenDialog","describesMusicAndSound","captionsTrack","instreamIdMatch","closedCaptionsForLevel","_data$part$index","decrypted","trackPlaylistMedia","_parseIMSC1","_parseVTTs","_appendCues","maxAvCC","payloadWebVTT","missingInitPTS","_fallbackToIMSC1","fragLevel","ccBytes","ccdatas","extractCea608Data","actualCCBytes","tmpByte","ccbyte1","ccbyte2","ccValid","ccType","autoLevelCapping","restrictedLevels","clientRect","streamController","setStreamController","unregisterListener","capLevelToPlayerSize","stopCapping","FPS_DROP_LEVEL_CAPPING","onFpsDropLevelCapping","droppedLevel","isLevelAllowed","HTMLVideoElement","startCapping","detectPlayerSize","mediaHeight","mediaWidth","getMaxLevel","capLevelIndex","validLevels","getMaxLevelByMediaSize","getDimensions","boundsRect","contentScaleFactor","ignoreDevicePixelRatio","restrictedLevel","atGreatestBandwidth","maxLevelIndex","isVideoPlaybackQualityAvailable","lastTime","lastDroppedFrames","lastDecodedFrames","capLevelOnFPSDrop","getVideoPlaybackQuality","checkFPSInterval","fpsDroppedMonitoringPeriod","checkFPS","decodedFrames","droppedFrames","currentPeriod","currentDropped","currentDecoded","droppedFPS","FPS_DROP","totalDroppedFrames","fpsDroppedMonitoringThreshold","videoPlaybackQuality","totalVideoFrames","droppedVideoFrames","webkitDecodedFrameCount","webkitDroppedFrameCount","keyFormatPromise","keySystemAccessPromises","_requestLicenseFailureCount","mediaKeySessions","keyIdToKeySessionPromise","setMediaKeysQueue","CDMCleanupPromise","onMediaEncrypted","_onMediaEncrypted","onWaitingForKey","_onWaitingForKey","onMediaDetached","requestMediaKeySystemAccessFunc","licenseXhrSetup","licenseResponseCallback","getLicenseServerUrl","keySystemConfiguration","licenseUrl","getServerCertificateUrl","serverCertificateUrl","attemptKeySystemAccess","uniqueCodec","attempt","keySystems","getMediaKeysPromise","mediaKeys","KEY_SYSTEM_NO_ACCESS","supportedConfigurations","errMessage","protocol","mediaKeySystemConfigs","keySystemAccess","mediaKeySystemAccess","certificateRequest","fetchServerCertificate","createMediaKeys","certificate","setMediaKeysServerCertificate","createMediaKeySessionContext","mediaKeysSession","createSession","renewKeySession","getKeyIdString","generateRequestWithPreferredKeySession","removeSession","updateKeySession","_mediaKeySessionConte","keySession","sessionId","getKeyFormatPromise","keySystemsInConfig","getKeySystemSelectionPromise","keySystemToKeySystemFormat","keyDetails","getKeySystemForKeyPromise","throwIfDestroyed","attemptSetMediaKeys","KEY_SYSTEM_NO_KEYS","KEY_SYSTEM_NO_CONFIGURED_LICENSE","initDataType","keySystemDomain","psshInfo","keyIdHex","keyContext","oldKeyIdHex","_keySystemToKeySystem","setMediaKeysPromise","setMediaKeys","_this$config$drmSyste","_this$config$drmSyste2","generateRequestFilter","generateRequest","mappedInitData","_this$hls","licenseStatus","onmessage","messageType","renewLicense","onkeystatuseschange","onKeyStatusChange","keyUsablePromise","KEY_SYSTEM_STATUS_INTERNAL_ERROR","_context$mediaKeysSes","KEY_SYSTEM_NO_SESSION","keyStatuses","certLoader","certLoadPolicy","contex","KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED","cert","setServerCertificate","KEY_SYSTEM_SERVER_CERTIFICATE_UPDATE_FAILED","keyMessage","requestLicense","KEY_SYSTEM_SESSION_UPDATE_FAILED","setupLicenseXHR","xhr","keysListItem","licenseChallenge","open","licenseXhrSetupResult","finalLicenseChallenge","XMLHttpRequest","onreadystatechange","KEY_SYSTEM_LICENSE_REQUEST_FAILED","statusText","attemptsLeft","licenseXhr","DONE","send","mediaKeysList","keySessionCount","formats","MUXED","INIT","CAPTION","TIMED_TEXT","KEY","OTHER","sid","cid","useHeaders","initialized","starved","audioBuffer","onWaiting","onPlaying","applyPlaylistData","ot","su","applyFragmentData","getObjectType","br","tb","getTopBandwidth","bl","getBufferLength","cmcd","createPlaylistLoader","createFragmentLoader","contentId","_data$tracks$audio","_data$tracks$video","createData","sf","pr","mtp","bandwidthEstimate","isVideo","bs","toHeaders","query","toQuery","appendQueryToUri","Ctor","CmcdPlaylistLoader","callbacks","CmcdFragmentLoader","serialize","toRounded","toHundred","toUrlSafe","formatters","dl","nor","rtp","formatter","headerNames","headerGroups","headerMap","nrr","separator","pathwayPriority","timeToLoad","reloadTimer","started","penalizedPathways","ttl","scheduleRefresh","loadSteeringManifest","levelToRemove","pathways","updatePathwayPriority","pathwayLevels","getLevelsForPathway","selectedIndex","selectedLevel","levelAfterChange","clonePathways","pathwayClones","audioGroupCloneMap","subtitleGroupCloneMap","pathwayClone","baseId","clonedVariants","baseLevel","clonedAudioGroupId","clonedSubtitleGroupId","clonedLevel","throughput","steeringManifestLoadPolicy","steeringData","VERSION","TTL","reloadUri","getResponseHeader","retryAfter","ttlMs","xhrSetup","requestTimeout","retryTimeout","abortInternal","onprogress","_this$callbacks","openAndSendXhr","setRequestHeader","readystatechange","loadprogress","loadtimeout","useResponse","responseText","responseURL","_this$config","lengthComputable","getAllResponseHeaders","fetchSetup","controller","ok","isArrayBuffer","LENGTH","loadProgressively","responseData","loaderResponse","chunkCache","reader","getReader","pump","read","done","captionScreen","indenting","_track$cues","cueA","cueB","abrController","bufferController","capLevelController","errorController","fpsController","minAutoBitrate","manifestLoadingTimeOut","manifestLoadingMaxRetry","manifestLoadingRetryDelay","manifestLoadingMaxRetryTimeout","levelLoadingTimeOut","levelLoadingMaxRetry","levelLoadingRetryDelay","levelLoadingMaxRetryTimeout","fragLoadingTimeOut","fragLoadingMaxRetry","fragLoadingRetryDelay","fragLoadingMaxRetryTimeout","subtitleStreamController","subtitleTrackController","audioStreamController","audioTrackController","cmcdController","DefaultConfig","coreComponents","networkControllers","_emitter","_autoLevelCapping","_maxHdcpLevel","latencyController","levelController","_media","ConfigAbrController","ConfigBufferController","ConfigCapLevelController","ConfigErrorController","ConfigFpsController","playListLoader","id3TrackController","ConfigContentSteeringController","createController","AudioStreamControllerClass","SubtitleStreamControllerClass","ControllerClass","components","controllerInstance","once","eventObject","listenerCount","DESTROYING","detachMedia","component","attachMedia","loadSource","loadedSource","loadingSource","recoverMediaError","shouldStartCapping","newCapLevelToPlayerSize","playingDate","audioTrackId","subtitleTrackId","VideoItem","findNeighborItem","cursor","ReactDOM4","_b","getImageStyle","VideoScrollHelper","initialState","viewportHeight","init_viewModeWrapper","init_validateTypes","getAbsoluteUrl","import_imageClientSDK","postId","bi_strategy_exports","jsonTreeTheme","mainTheme","init_theme","Tab","TabsContextProvider","TabPanel","Tabs","positions","contextHash","lookAhead","nodeSize","IterMode","prec","hasChild","rangeFrom","rangeTo","findClusterBreak","surrogateLow","surrogateHigh","codePointSize","Text","sameArray","Transaction","Line","SelectionRange","Configuration","Range","MapMode","scrollIntoView","CharCategory","mapBy","phrase","spec","replaceRange","addRange","wrapMarks","LTR","RTL","inside","above","below","observers","DecorationComparator","command","any","between","pieces","asArray","collect","ie","BlockType","cView","QueryType","deco","gutter","gutters","marker","closing","baseTheme$1","bracket","baseTheme","_start","_end","rm","isAdjacent","page","changes","togglePanel","applyCompletion","cmp","inputHandler","noAttrs","basicSetup","getDefaultExtensions","editable","readOnly","updateListener","esm_default","indentWithTab","_jsx","renderCounts","identityObject","init_ricosContentAnalytics","fixedOptions","selectedText","init_TextSelectionToolbar","init_LinkPreviewPopover","ADDRESS_FORM_ID_BY_COUNTRY","DEFAULT_COUNTRY","COMMON","US","UY","TH","TR","SZ","ZA","SE","SI","SK","RS","SB","SG","SN","SD","RU","RO","PY","PT","PL","PH","PE","PA","PK","NZ","NO","NG","NL","MY","MH","MX","KR","JP","IT","IS","IE","IN","IL","HU","HR","GR","GB","FR","ES","EG","DO","DK","DE","CZ","CY","CR","CO","CI","CN","CL","CH","CA","CF","BR","BS","BE","AT","AU","AR","AE","ADDRESS_PARTS","country","subdivision","addressLine1","addressLine2","city","zipCode","firstName","lastName","company","phone","FORMAT_BY_COUNTRY_DEFAULT","getFormattedAddress","addressParts","formatCountryKey","formatByCounty","getCountryByKey","address","addressPattern","emptyParts","commaSection","lineIndex","lineSection","commaIndex","replacedLineSection","lineSectionAfterReplace","FORBIDDEN_COUNTRY_CODES","DEFAULT_DEPRECATION_TIMESTAMPS","dataset","datasetData","byKey","arrItem","byShortKey","shortKey","withAddressPartDisplayNameDefaults","addressPartDisplayNames","filteringDeprecatedSubdivisions","deprecationTimestamps","subdivs","subdivisions","deprecatedSubDivsToShow","deprecatedOn","nonDeprecatedSubDivs","notReplacingOrReplaced","replaces","replacedBy","withCountryAdjustments","getAllCountries","opts","_opts","countries","filterForbiddenCountries","countryKey","_temp","getCountryByShortKey","countryShortKey","_temp2","getStateByKey","stateKey","getAllCurrencies","currencies","getCurrencyByKey","currencyKey","getAllLocales","locales","getLocaleByKey","localeKey","getAllTimezones","timezones","getTimezoneByKey","timezoneKey","getDemoAddresses","demoAddresses","getDemoAddressByKey","demoAddressKey","getAllSupportedLanguages","supportedLanguages","getAllLanguages","languages","getDefaultAddressDisplayNames","mapReplacedSubdivision","subdivisionKey","_getStateByKey","getRegionsReplacedByRegion","_getStateByKey2","applyValidationProperties","multilineAddressOptions","addressForms","fields","propertiesByTarget","modifiedFields","overrideFieldValidation","fieldOverrides","validation","required","applyViewProperties","rootView","fieldSettings","overrideFieldProperties","hidden","show","COUNTRY_CODES","AW","AF","AO","AI","AX","AL","AD","AN","AM","AS","AQ","TF","AG","AZ","BI","BJ","BQ","BF","BD","BH","BA","BL","BY","BZ","BM","BO","BB","BN","BT","BV","BW","CC","CM","CD","CG","CK","KM","CV","CW","CX","KY","DJ","DM","DZ","EC","ER","EH","EE","ET","FI","FJ","FK","FO","FM","GA","GE","GG","GH","GI","GN","GP","GM","GW","GQ","GD","GL","GT","GF","GU","GY","HK","HM","HN","HT","IM","IO","IQ","JM","JE","JO","KZ","KE","KG","KH","KI","KN","KW","LA","LB","LR","LY","LC","LI","LK","LS","LT","LU","LV","MO","MF","MA","MC","MD","MG","MV","MK","ML","MT","MM","ME","MN","MP","MZ","MR","MS","MQ","MU","MW","YT","NA","NC","NE","NF","NI","NU","NP","NR","OM","PN","PW","PG","PR","PS","PF","QA","RE","RW","SA","GS","SH","SJ","SL","SV","SM","SO","PM","SS","ST","SR","SX","SC","TC","TD","TG","TJ","TK","TM","TL","TO","TT","TN","TV","TW","TZ","UG","UA","UM","UZ","VA","VC","VE","VG","VI","VN","VU","WF","WS","XK","YE","ZM","ZW","getCountryField","pii","fieldType","allowedCountries","enum","getCountryFieldLayout","fieldId","column","mapSubdivisionReplacedBy","alreadyExists","displayName","MultilineAddressToolkit","getFormByCountry","rootFormField","assertMultiLineAddressField","addressForm","addressFormByCountry","addCountryField","addSubdivisions","applyRootFormSettingsOverrides","modifications","predefined","MULTILINE_ADDRESS","mapFormsByCountry","formIdByCountryMap","formsById","fromEntries","entries","formId","getCountry","addressFormIdByCountry","normalizeEmptyValues","submission","_field","countryCodeAlpha3","getFormForValidation","submissionValue","getMultilineAddressValidation","addressLine","postalCode","streetName","streetNumber","formatStreetNumber","streetAddress","apt","formatAddressLine","isStreetFormat","formatMultilineAddress","localeDataset","apartment","resolvedCountry","translateCountry","formattedAddress","import_locale_dataset_javascript","esm_exports","pa","pb","na","objectConstructor","validateMetadata","getCountryCallingCode","Metadata","hasCountry","selectNumberingPlan","countryCallingCode","isSupportedCountry","setVersion","v1","v3","v4","V3","V4","DEFAULT_EXT_PREFIX","CALLING_CODE_REG_EXP","NumberingPlan","FIRST_GROUP_ONLY_PREFIX_PATTERN","getCountries","getCountryMetadata","nonGeographic","nonGeographical","hasCallingCode","callingCode","getCountryCodesForCallingCode","countryCodes","countryCallingCodes","isNonGeographicCallingCode","numberingPlan","getNumberingPlanMetadata","getCountryCodeForCallingCode","IDDPrefix","defaultIDDPrefix","nationalNumberPattern","possibleLengths","nationalPrefixForParsing","nationalPrefixTransformRule","leadingDigits","hasTypes","ext","country_phone_code_to_countries","country_calling_codes","chooseCountryByCountryCallingCode","hasSelectedNumberingPlan","globalMetadataObject","getDefaultCountryMetadataForRegion","_getFormats","nationalPrefix","_getNationalPrefixFormattingRule","nationalPrefixFormattingRule","_nationalPrefixForParsing","_getNationalPrefixIsOptionalWhenFormatting","nationalPrefixIsOptionalWhenFormattingInNationalFormat","_format","pattern","leadingDigitsPatterns","nationalPrefixIsMandatoryWhenFormattingInNationalFormat","usesNationalPrefix","internationalFormat","nationalNumber","checkNumberLengthForType","type_info","possible_lengths","actual_length","minimum_length","isPossibleNumber","checkNumberLength","regularExpressionText","matchesEntirely","isNumberTypeEqualTo","_iterator","_createForOfIteratorHelperLoose","NON_FIXED_LINE_PHONE_TYPES","_step","typeDefinition","getNumberType","_metadata","possibleCountries","couldNationalNumberBelongToCountry","MIN_LENGTH_FOR_NSN","MAX_LENGTH_FOR_NSN","MAX_LENGTH_COUNTRY_CODE","VALID_DIGITS","DASHES","SLASHES","DOTS","WHITESPACE","BRACKETS","TILDES","VALID_PUNCTUATION","PLUS_CHARS","countryMetadata","IDDPrefixPattern","matchedGroups","CAPTURING_DIGIT_PATTERN","prefixPattern","prefixMatch","carrierCode","capturedGroupsCount","hasCapturedGroups","prefixBeforeNationalNumber","possiblePositionOfTheFirstCapturedGroup","possibleNationalPrefix","nationalPhoneNumber","USE_NON_GEOGRAPHIC_COUNTRY_CODE","getCountryByNationalNumber","_extractNationalNumbe","extractNationalNumberFromPossiblyIncompleteNumber","shouldHaveExtractedNationalPrefix","getCountryByCallingCode","isPossibleIncompleteNationalNumber","nationalNumberBefore","nationalNumberAfter","defaultCountry","defaultCallingCode","possibleShorterNumber","extractNationalNumber","possibleShorterNationalNumber","_extractNationalNumbe2","isNumberWithIddPrefix","numberWithoutIDD","stripIddPrefix","_extractCountryCallin","extractCountryCallingCodeFromInternationalNumberWithoutPlusSign","shorterNumber","countryCallingCodeSource","formattedNumber","useInternationalFormat","withNationalPrefix","FIRST_GROUP_PATTERN","applyInternationalSeparatorStyle","SINGLE_IDD_PREFIX_REG_EXP","purpose","extLimitAfterExplicitLabel","extLimitAfterLikelyLabel","extLimitAfterAmbiguousChar","extLimitWhenNotSure","possibleSeparatorsBetweenNumberAndExtLabel","possibleCharsAfterExtLabel","optionalExtnSuffix","explicitExtLabels","ambiguousExtLabels","ambiguousSeparator","possibleSeparatorsNumberExtLabelNoComma","autoDiallingAndExtLabelsFound","rfcExtn","RFC3966_EXTN_PREFIX","getExtensionDigitsPattern","explicitExtn","ambiguousExtn","americanStyleExtnWithSuffix","autoDiallingExtn","onlyCommasExtn","maxLength","VALID_PHONE_NUMBER_PATTERN","isViablePhoneNumberStart","VALID_PHONE_NUMBER_START_REG_EXP","MIN_LENGTH_PHONE_NUMBER_PATTERN","VALID_PHONE_NUMBER","VALID_PHONE_NUMBER_WITH_EXTENSION","createExtensionPattern","formatRFC3966","formatNumber","DEFAULT_OPTIONS","formatNationalNumber","addExtension","formatExtension","fromCountry","formatIDD","formatAs","chooseFormatForNumber","formatNationalNumberUsingFormat","availableFormats","pickFirstMatchingElement","lastLeadingDigitsPattern","fromCountryCallingCode","iddPrefix","getIddPrefix","objects","testFunction","getCountryAndCountryCallingCode","countryOrCountryCallingCode","metadataJson","isCountryCode","PhoneNumber","E164_NUMBER_REGEXP","e164Number","extractCountryCallingCode","_getCountryAndCountry","getMetadata","setExt","getPossibleCountries","getPossibleCountriesForNumber","isPossible","isValidNumber","isNonGeographic","phoneNumber","formatNational","formatInternational","ParseError","_Error","_callSuper","setPrototypeOf","_wrapNativeSuper","EXTN_PATTERN","numberWithoutExtension","parseDigit","character","DIGITS","digit","parsePhoneNumberCharacter","prevParsedCharacters","eventListener","numberToExtractFrom","indexOfPhoneContext","RFC3966_PHONE_CONTEXT_","phoneContextStart","phoneContextEnd","isPhoneContextValid","phoneContext","RFC3966_GLOBAL_NUMBER_DIGITS_PATTERN_","RFC3966_DOMAINNAME_PATTERN_","PLUS_SIGN","RFC3966_VISUAL_SEPARATOR_","RFC3966_PHONE_DIGIT_","RFC3966_GLOBAL_NUMBER_DIGITS_","ALPHANUM_","RFC3966_DOMAINLABEL_","VALID_ALPHA_","RFC3966_TOPLABEL_","RFC3966_DOMAINNAME_","RFC3966_PREFIX_","RFC3966_ISDN_SUBADDRESS_","numberToParse","extractFormattedPhoneNumber","extractPhoneContext","phoneNumberString","indexOfRfc3966Prefix","indexOfNationalNumber","indexOfIsdn","_parseInput","parseInput","extract","formattedPhoneNumber","_parsePhoneNumber","parsePhoneNumber","__countryCallingCodeSource","extended","possible","throwOnError","MAX_INPUT_STRING_LENGTH","startsAt","PHONE_NUMBER_START_PATTERN","AFTER_PHONE_NUMBER_END_PATTERN","extractFormattedPhoneNumberFromPossibleRfc3966NumberUri","isViablePhoneNumber","withExtensionStripped","extractExtension","parseIncompletePhoneNumber","exactCountry","args","_Array$prototype$slic","_Array$prototype$slic2","arg_1","arg_2","arg_3","arg_4","parsePhoneNumberWithError","_normalizeArguments","normalizeArguments","parsePhoneNumberWithError_","init_parsePhoneNumberWithError","parsePhoneNumber_","init_parsePhoneNumber","AsYouTypeState","onCountryChange","onCallingCodeChange","international","missingPlus","digits","resetNationalSignificantNumber","initCountryAndCallingCode","nationalSignificantNumber","getNationalDigits","nationalSignificantNumberIsModified","prefixBeforeNationalSignificantNumberThatIsNotNationalPrefix","properties","_i","_Object$keys","setCountry","setCallingCode","startInternationalNumber","appendDigits","nextDigits","appendNationalSignificantNumberDigits","getDigitsWithoutInternationalPrefix","times","cutAndStripNonPairedParens","cutBeforeIndex","stripNonPairedParens","dangling_braces","cleared_string","_dangling_braces","populateTemplateWithDigits","_iterator2","_step2","DIGIT_PLACEHOLDER_MATCHER","DIGIT_PLACEHOLDER","shouldTryNationalPrefixFormattingRule","getSeparatorAfterNationalPrefix","matcher","formatNationalNumberWithAndWithoutNationalPrefixFormattingRule","canFormatCompleteNumber","useNationalPrefixFormattingRule","formattedNationalNumber","isValidFormattedNationalNumber","parseDigits","parseOneOfSet","prevValue","nextValue","expandSingleElementArray","PatternParser","ILLEGAL_CHARACTER_REGEXP","OPERATOR","or","instructions","parsePattern","_this$context$","branches","startContext","endContext","getContext","before","rightPart","_this$getContext","oneOfSet","characters","characterString","matchedChars","partialMatch","restCharacters","branch","PatternMatcher","matchTree","allowOverflow","DUMMY_DIGIT","LONGEST_NATIONAL_PHONE_NUMBER_LENGTH","LONGEST_DUMMY_PHONE_NUMBER","NATIONAL_PREFIX_SEPARATORS_PATTERN","SUPPORT_LEGACY_FORMATTING_PATTERNS","CREATE_CHARACTER_CLASS_PATTERN","CREATE_STANDALONE_DIGIT_PATTERN","NON_ALTERING_FORMAT_REG_EXP","MIN_LEADING_DIGITS_LENGTH","AsYouTypeFormatter","resetFormat","chosenFormat","nationalNumberTemplate","populatedNationalNumberTemplate","populatedNationalNumberTemplatePosition","isNANP","matchingFormats","narrowDownMatchingFormats","formattedCompleteNumber","formatCompleteNumber","setNationalNumberTemplate","formatNationalNumberWithNextDigits","previouslyChosenFormat","newlyChosenFormat","chooseFormat","formatNextNationalNumberDigits","_this2","leadingDigitsPatternIndex","formatSuits","formatMatches","leadingDigitsPatternsCount","leadingDigitsPattern","getFormatFormat","_this3","_loop","createTemplateForFormat","_ret","getTemplateForFormat","getInternationalPrefixBeforeCountryCallingCode","spacing","getTemplate","internationalPrefix","strictPattern","nationalNumberDummyDigits","numberFormat","nationalPrefixIncludedInTemplate","numberFormatWithNationalPrefix","VALID_FORMATTED_PHONE_NUMBER_PART","hasPlus","AFTER_PHONE_NUMBER_DIGITS_END_PATTERN","_extractFormattedDigitsAndPlus","extractedNumber","extractFormattedDigitsAndPlus","_extractFormattedDigi3","_extractFormattedDigi4","formattedDigits","VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART_PATTERN","VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART","COMPLEX_NATIONAL_PREFIX","AsYouTypeParser","onNationalSignificantNumberChange","_extractFormattedDigi","_extractFormattedDigi2","justLeadingPlus","inputDigits","hasReceivedThreeLeadingDigits","extractIddPrefix","isWaitingForCountryCallingCode","hasExtractedNationalSignificantNumber","extractNationalSignificantNumber","stateUpdate","couldPossiblyExtractAnotherNationalSignificantNumber","nationalDigits","setState","onExtractedNationalNumber","extractAnotherNationalSignificantNumber","prevNationalSignificantNumber","nationalSignificantNumberIndex","reExtractNationalSignificantNumber","extractCallingCodeAndNationalSignificantNumber","fixMissingPlus","_extractCountryCallin2","newCallingCode","AsYouType","optionsOrDefaultCountry","_this$getCountryAndCa","getCountryAndCallingCode","_this$getCountryAndCa2","_this$parser$input","formattedOutput","determineTheCountryIfNeeded","getFullNumber","getNonFormattedNumber","isInternational","getCallingCode","_getCountry","isCountryCallingCodeAmbiguous","determineTheCountry","getNonFormattedNationalNumberWithPrefix","_this$state","getNonFormattedTemplate","getNumberValue","_this$state2","callingCode_","getNumber","_this$state3","ambiguousCountries","getNationalNumber","getChars","init_types_impl","ErrorType","ActionType","ValidationMode","AscendPlan","Feature","STRING_VALIDATION_PROPERTIES","NUMBER_VALIDATION_PROPERTIES","INTEGER_VALIDATION_PROPERTIES","BOOLEAN_VALIDATION_PROPERTIES","validationPropertiesSet","isSchemaValidationProperty","getErrorFieldId","errorType","ajvError","fieldIdMask","REQUIRED_VALUE_ERROR","combineErrorPaths","instancePath","missingProperty","UNKNOWN_VALUE_ERROR","additionalProperty","rootPath","makeValidationError","isCustomError","ajvErrorKeywordMap","UNKNOWN_ERROR","errorPath","errorMessage","useCustomErrorMessage","makeValidationErrors","ajvErrors","groupErrorsByTarget","byTarget","TYPE_ERROR","MAX_LENGTH_ERROR","MIN_LENGTH_ERROR","PATTERN_ERROR","FORMAT_ERROR","allowedCountryCodes","NOT_ALLOWED_VALUE_ERROR","INVALID_PHONE_COUNTRY_CODE_ERROR","maximum","MAX_VALUE_ERROR","minimum","MIN_VALUE_ERROR","multipleOf","MULTIPLE_OF_VALUE_ERROR","additionalProperties","minItems","MIN_ITEMS_ERROR","maxItems","MAX_ITEMS_ERROR","formatMinimum","formatMaximum","getDecimalPlacesCount","deserializeDate","year","month","day","YEAR","MONTH","DAY","parseDateTimeValue","isTimeComplete","minutes","DateFieldErrorSuffix","DateTimeFieldErrorSuffix","deriveError","derivePatternError","deriveCharacterLengthError","deriveItemsCountError","deriveNumericValueError","deriveDateFieldError","deriveDateTimeFieldError","INVALID_VALUE_FOR_PATTERN_ERROR","isMinMaxLengthError","hasMinMax","EXACT_CHARACTER_LENGTH_ERROR","CHARACTER_LENGTH_RANGE_ERROR","minLimit","maxLimit","isMinMaxItemsError","EXACT_ITEMS_NUMBER_ERROR","isMinMaxValueError","isMultipleOfValueError","minPrice","maxPrice","paymentOptions","products","dynamicPriceOptions","VALUE_RANGE_ERROR","decimalPlaces","DECIMAL_POINT_ERROR","_validation","isFormatError","_YEAR","withErrorSuffix","suffix","INCOMPLETE_DATE_ERROR","YEAR_MONTH","YEAR_DAY","MONTH_DAY","dateValidationError","timeComplete","isDateFieldError","validationError","YEAR_MONTH_TIME","YEAR_DAY_TIME","MONTH_DAY_TIME","YEAR_TIME","MONTH_TIME","DAY_TIME","TIME","deepOmitEmptyData","fieldValue","givenValue","UsedValueState","Label","BlockNode","not","and","DataType","resolveUrl","require_utils","isUUID","_q","_y","_z","Ajv","invalid","DiscrError","INTERPOLATION","addFormats","asRequired","isDefined","notEmpty","validCurrency","CURRENCY_CODES","anyLetter","anyDigit","anyLetterOrDigit","anyAllowedSymbol","allowedWithoutQuotes","allowedBetweenQuotes","localPart","domainPart","emailValidationPattern","validLanguageCode","LANG_CODES","isoAlpha2Codes","validTimeZone","timeZone","Intl","DateTimeFormat","resolvedOptions","addCustomFormats","ajv","libraryBasedPhoneFieldValidationEnabled","validationFormats","customFormats","newPhoneFormat","addFormat","email","currency","withMetadataArgument","init_max","addCustomKeywords","lenientPhoneValidation","addKeyword","compilePhoneValidation","schema","compileAllowedCountryCodesValidation","violation","validatePhoneNumber","parsedNumber","phoneValidationErrorMessages","handleTooShortCase","onlyCallingCode","withoutPrefix","createAjvSchemaValidatorFactory","formSchemaMapper","createAjvSchemaValidator","formsSchemas","allErrors","multipleOfPrecision","addErrors","uniqueItemPropertiesKeyword","formSchema","getSchema","formAjvSchema","addSchema","PropertyTypes","formSchemaMapperFactory","propertySchemaMapper","validationMode","mapToFormSchema","formFields","formDeletedFields","deletedFields","fieldsWithValidation","haveValidation","deletedFieldsWithValidation","makeValidationProperties","requiredFieldIds","UNRESTRICTED_UPDATE","isReadOnly","isRequiredField","$id","OBJECT","convertFormFieldsToAjvProperties","formField","isTargetReferencedField","$ref","nestedFormId","formSchemaMapperFactoryPlatformised","transformPlatformisedFieldToValidation","deletedFormFields","inputFields","isInputFields","deletedInputFields","getRequiredFieldTargets","inputOptions","inputField","INPUT","setValidationProperties","propertyManipulations","userValue","isEnumValidationPropertyArrayEmpty","setValidationMessages","validationMessages","customMessages","propertyErrorMsg","mapToBooleanSchemaProperty","boolField","BOOLEAN","resolveRestrictedValidationProperties","mapToNumberSchemaProperty","numberField","NUMBER","MIN_SAFE_INTEGER","mapToArraySchemaProperty","arrayField","itemsValidation","resolveArrayItemsValidation","items","ARRAY","ALLOWED_MAX_ITEMS","getArrayValidationProperties","ARRAY_VALIDATION_PROPERTIES","arrayItems","mapToIntegerSchemaProperty","integerField","INTEGER","mapToPredefinedSchemaProperty","predefinedType","predefinedTypeFormat","WIX_FILE","PREDEFINED_VALIDATIONS","SCHEDULING","PAYMENT","buildPaymentValidation","OBJECT_ARRAY","buildObjectArrayValidation","objectArrayOptions","productId","STRING","price","quantity","uniqueItemProperties","anyOfProduct","product","quantityLimit","buildPriceValidation","anyOf","priceType","FIXED_PRICE","fixedPriceOptions","DYNAMIC_PRICE","fileId","imported","boolean","DATE_TIME","u","M","$","D","CALLING_COUNTRY_CODES","stringFormatOptionsMapper","dateFormatOptions","dateFactory","phoneFormatOptions","stringDateFormatOptions","parseIfNeeded","dateProvider","timezone","isStaticDateOrTime","isRelativeDate","currentDate","dayJs","toISOString","tz","newDate","mapToStaticDate","DATE_OPTIONAL_TIME","utc","asIsoFormat","RELATIVE_FORMAT_REGEX","ISO_DATE_REGEX","ISO_TIME_REGEX","ISO_DATE_TIME_REGEX","amountStr","unitStr","parseAmount","parseUnitType","setDate","parseAction","supportedUnits","DATE","timezonePlugin","mapToStringSchemaProperty","stringField","isStringType","ALLOWED_MAX_LENGTH","resolveAjvFormat","getDateTimeConstrains","phoneOptions","stringFormat","formMap","oneOf","dateOptions","dateTimeOptions","timeOptions","dateOptionalTimeOptions","EMAIL","UUID","PHONE","HOSTNAME","COLOR_HEX","CURRENCY","TIME_ZONE","fieldValidation","stringOptions","numberOptions","booleanOptions","arrayOptions","mapToObjectSchemaProperty","objectOptions","objectField","buildPropertiesSchema","fetchRequiredProperties","propertiesNames","isRequiredProperty","propertyValidationSchema","arraySchemaPropertyMapperPlatformised","arrayInput","optionsValues","getValuesFromOptions","checkboxGroupOptions","customOption","arrayValidation","itemType","UNKNOWN_ITEM_TYPE","makeEnumValidation","customOptionDefined","enumeratableValidation","mapStringInputFieldToSchema","stringInput","stringValidation","radioGroupOptions","dropdownOptions","inputType","numberValidation","booleanValidation","objectValidation","FormValidator","validateFields","_submission","fieldMasks","flat","currentlyValidatableForm","prepareValidation","normalizedSubmission","validateSubmissionWithFieldMask","validateWholeSubmission","canUpdateForm","validateCanUpdateFormNotDisabled","formSchemas","submissionValueProvider","initAJvWithSchemas","getAddressForms","addressFields","addressFormProvider","getObjectArrayForms","objectArrayFields","isFormDisabled","DISABLED_FORM_ERROR","fieldSubmission","baseErrors","deriveErrors","fieldIdMasks","mask","getFieldValidation","getFieldValue","fieldPath","pathParts","rootFieldId","platformisedField","inputTarget","legacyField","getPlatformisedFieldValidation","getLegacyFieldValidation","isDeadlinePast","limitationRule","dateTimeDeadline","getFormSchemaMapper","platformisedFieldBasedValidation","nestedForms","targets","objectArrayForms","isInputField","fieldHasTarget","compareSchemaBackwardCompatibility","newSchema","knownSchema","getNonCompatibleFields","newFieldsWithTarget","knownInputFields","fieldHasCompatibleType","knownField","newValidation","knownValidation","compatibilityProblem","confirmValidationCompatibility","FIELDS_COMPATIBILITY_ERROR","currentValidation","knownType","confirmStringValidationCompatible","confirmArrayValidationCompatible","confirmObjectValidationCompatible","UNDEFINED","itemValidation","knownItemValidation","propertyNames","knownPropertyNames","propertyProblems","propertyValidation","knownPropertyValidation","problem","validatePremiumRestrictions","restrictions","validations","validateFormFieldCount","limit","getLimit","fieldsLimit","validateFormStepCount","stepsLimit","validateFormRulesCount","conditionsLimit","validateFileUploadFieldAllowed","featureRestricted","isFeatureRestricted","getOrEmpty","features","isUpdateAction","knownForm","asValidationForm","currentForm","newForm","getValidationErrors","isCreateAction","validateTotalFormCount","formsLimit","existingFormsCount","otherSet","limitRestricted","knownAmount","newAmount","substitutionRestricted","newIds","knownIds","formCountError","FORMS_COUNT_RESTRICTIONS_ERROR","formFieldCountError","FIELDS_COUNT_RESTRICTIONS_ERROR","formStepsCountError","STEPS_COUNT_RESTRICTIONS_ERROR","formRulesCountError","RULES_COUNT_RESTRICTIONS_ERROR","formFileUploadProhibitedError","FILE_UPLOAD_RESTRICTIONS_ERROR","given","inputFieldsCount","stepsCount","steps","rulesCount","rules","inputFieldIds","stepsIds","rulesIds","fileUploadFieldIds","FILE_UPLOAD_FIELD_TYPE","maybeValue","formCount","newFileUploadFields","FILE_UPLOAD_FIELD","allowedFeatures","expectedFeature","getDefaultValue","getDefaultStringComponentValue","getDefaultNumberComponentValue","getDefaultPaymentComponentValue","componentType","DATE_INPUT","dateInputOptions","DATE_PICKER","datePickerOptions","TEXT_INPUT","textInputOptions","TIME_INPUT","timeInputOptions","NUMBER_INPUT","numberInputOptions","RATING_INPUT","ratingInputOptions","PAYMENT_INPUT","paymentInputOptions","FormSchemaValidator","buildSubmissionValue","submissionValidator","base64","Condition","Engine","Rule","require_messages_en","fromString","fromValue","lessThan","greaterThan","init_errors","createBodylessMethod","redaxios","createBodyMethod","deepMerge","overrides","lowerCase","transformRequest","customHeaders","xsrfCookieName","cookie","xsrfHeaderName","auth","Authorization","validateStatus","delete","post","put","spread","CancelToken","AmbassadorHTTPError","AmbassadorHTTPClient","require_http","ProvidersNames","Proximity","ServiceFilterByFilterType","SubdivisionType","V2FilterByFilterType","WixAtlasServiceWeb","createAtlasService","getInstance","sessionToken","refreshSessionToken","locale","atlasBaseUrl","ATLAS_BASE_URL","atlas","predict","getHeaders","autocompleteService","AutocompleteServiceV2","predictions","getPlace","searchId","placesService","PlacesServiceV2","place","searchByPostalCode","locationService","LocationServiceV2","searchResults","pinpointAddress","getByProximity","PINPOINT","approximateAddress","APPROXIMATE","generalAreaAddress","GENERAL_AREA","proximity","FileFormatMap","Video","Audio","Archive","Model3D","getDateFormatParts","dateStyle","timeStyle","formatToParts","SupportedDateParts","supportedPartsValues","isSupportedDatePart","CONTACTS_FIELD_TYPES","CONTACTS_COMPANY","CONTACTS_POSITION","CONTACTS_TAX_ID","CONTACTS_FIRST_NAME","CONTACTS_LAST_NAME","CONTACTS_EMAIL","CONTACTS_BIRTHDATE","CONTACTS_PHONE","CONTACTS_ADDRESS","CONTACTS_SUBSCRIBE","CHALLENGES_FIELD_TYPES","CHALLENGES_MULTI_CHOICE","CHALLENGES_SINGLE_CHOICE","CHALLENGES_SHORT_TEXT","CHALLENGES_LONG_TEXT","CHALLENGES_NUMBER","CHALLENGES_FILE_UPLOAD","CHALLENGES_IMAGE_CHOICE","QUIZ_FIELD_TYPES","QUIZ_TEXT_INPUT","QUIZ_NUMBER_INPUT","QUIZ_RADIO_GROUP","QUIZ_CHECKBOX_GROUP","DEXT_FIELD_TYPES","DEXT_TEXT_INPUT","DEXT_TEXT_AREA","DEXT_DROPDOWN","DEXT_URL_INPUT","DEXT_RADIO_GROUP","DEXT_NUMBER_INPUT","DEXT_CHECKBOX","DEXT_CHECKBOX_GROUP","DEXT_EMAIL","DEXT_PHONE","DEXT_RATING_INPUT","DEXT_DATE_PICKER","DEXT_DATE_TIME_INPUT","DEXT_TAGS","ECOM_FIELD_TYPES","ECOM_ADDITIONAL_INFO","ECOM_ADDRESS","ECOM_FULL_NAME","ECOM_PHONE","ECOM_COMPANY_NAME","ECOM_EMAIL","ECOM_SUBSCRIPTION","BOOKINGS_FIELD_TYPES","BOOKINGS_FIRST_NAME","BOOKINGS_LAST_NAME","BOOKINGS_EMAIL","BOOKINGS_PHONE","BOOKINGS_ADDRESS","COMMON_FIELD_TYPES","URL_INPUT","TEXT_AREA","DATE_TIME_INPUT","RADIO_GROUP","CHECKBOX_GROUP","FILE_UPLOAD","CHECKBOX","DROPDOWN","NESTED_FORM","MLA_COUNTRY","MLA_CITY","MLA_ADDRESS_LINE","MLA_ADDRESS_LINE_2","MLA_POSTAL_CODE","MLA_SUBDIVISION","MLA_STREET_NAME","MLA_STREET_NUMBER","MLA_APARTMENT","FULL_NAME_FIRST_NAME","FULL_NAME_LAST_NAME","FULL_NAME","VAT_ID","SIGNATURE","TAGS","PASSWORD","IMAGE_CHOICE","SHEDULING_FIELD_TYPES","APPOINTMENT","SERVICES_DROPDOWN","SERVICES_MULTI_CHOICE","PAYMENTS_FIELD_TYPES","PRODUCT_LIST","DONATION","FIXED_PAYMENT","EVENTS_FIELD_TYPES","EVENTS_RSVP","EVENTS_REPEATER","INPUT_FIELD_TYPES","READONLY_FIELD_TYPES","HEADER","RICH_TEXT","ECOM_CONTACT_DETAILS","ECOM_SHIPPING_DETAILS","BOOKINGS_HEADER","BOOKINGS_RICH_TEXT","BOOKINGS_LOGIN_BAR","FIELD_TYPES","EMPTY_VALUE","NOW_VALUE","EXPERIMENTS","USE_FIELDS_V2","SUBMIT_SUCCESS_NO_FOCUS","Breakpoint","DEFAULT_BREAKPOINT","FORM_STATUS","BUSY","READY","FormStatusContext","FormStatusProvider","onStatusChange","previousFormStatus","fieldStatusByTarget","setFieldStatusByTarget","setFormStatus","currentFormStatus","isFormBusy","contextValue","formStatus","useFormStatus","WixRicosViewerContext","FullscreenModal","cloneElement","Children","decorator","viewer_default","_Decorators","RicosNodesRenderer","blockquote_default","codeblock_default","heading_default","layoutData","paragraph_default","getContainerData","needsTopMargin","default4","TextSelectionToolbar","LinkPreviewPopover","createRef","DEFAULT_CONFIG","accountLanguage","regionalFormat","ConfigContext","ConfigContextProvider","configInput","useConfig","htmlAttributesPlugin","htmlAttributesDecorator","nodeViewRenderers","EXTERNAL","__","rule","decorate","textData","externalData","span","UniqueFieldSuffixContext","UniqueFieldSuffixContextProvider","parentId","compId","useUniqueFieldSuffix","FocusedFieldContext","FocusedFieldProvider","focusedFieldId","setFocusedFieldId","useFocusedField","EventsContext","EventsProvider","submitSuccessCounter","setSubmitSuccessCounter","submittedValues","setSubmittedValues","fireSubmitSuccess","useEvents","useSubmitSuccessTrigger","useSubmitSuccessEvent","onSubmitSuccess","previousCounter","useFocusGroupFieldEvent","groupFieldId","getFocusedChildFieldId","useFocusFieldEvent","onFocusField","ScrollContext","ScrollProvider","scrollViewRef","scrollTo","headerHeight","getSiteHeaderHeight","wixAdHeight","getWixAdHeight","newTop","scrollY","div","useScroll","formElement","classicHeader","potentialHeader","closest","previousElementSibling","studioHeader","headerPosition","ad","TranslationContext","useTranslation","ExperimentsContext","useExperiments","experiments","isExperimentEnabled","generateUUID","hexValues","random","addFieldToSchema","layout","newSteps","large","BiContext","useBi","getPattern","decimals","getNumberOfDecimals","regex","getValidNumberInput","previousValidValue","validInput","validNumber","inputNumber","inputToNumber","isNumberInputValid","localizeNumberInput","normalizeDecimalSeparator","decimalSeparator","NumberFormat","multipleOfRegex","validator","startOfDay","setHours","ALL_DAYS","SUNDAY","MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY","DEFAULT_AVAILABILITY","availableDays","NUMERIC_DAY_TO_STRING","isDateAvailable","availability","dayOfWeek","getDay","availableDates","isInAvailableRange","isDateInRange","unavailableDates","isInUnavailableRange","checkDate","DEFAULT_FIRST_DAY","getFirstDayOfTheWeek","intlLocale","Locale","getWeekInfo","weekInfo","firstDay","getFirstDayManual","REGIONS_STARTING_SATURDAY","REGIONS_STARTING_SUNDAY","LANGUAGES_STARTING_SATURDAY","LANGUAGES_STARTING_SUNDAY","getImageURL","fit","urlFunction","imageClientSDK","RESTResponseToSDKResponseRenameMap","constantCase","SPLIT_LOWER_UPPER_RE","SPLIT_UPPER_UPPER_RE","SPLIT_REPLACE_VALUE","DEFAULT_STRIP_REGEXP","isValidationError","isApplicationError","isClientError","transformError","buildValidationError","buildApplicationError","wrapError","buildSystemError","violationsWithRenamedFields","withRenamedArgument","getArgumentIndex","runWithoutContext","DOMAINS","REGEX_CAPTURE_DOMAINS","WIX_API_DOMAINS","DEV_WIX_CODE_DOMAIN","REGEX_CAPTURE_API_DOMAINS","REGEX_CAPTURE_DEV_WIX_CODE_DOMAIN","formatCurrency","decimalCount","amountNumber","fractionDigits","getDisplayPrecision","unitDisplay","minimumFractionDigits","maximumFractionDigits","HttpClientContext","isValidPhoneNumber","FormContext","useForm","PanoramaContext","usePanorama","panorama","namespace","transaction","finish","ForcedState","ForcedStateContext","useForcedState","FALLBACK","ExternalDataContext","ExternalDataProvider","useExternalData","FormFieldsContext","useFormFields","FormViewContext","useFieldView","useFormView","fieldView","isNestedFormField","nestedFormField","calculateGridStyles","gridColumn","gridRow","display","alignItems","DefaultFieldLayout","dataHook","dataAttributes","gridStyles","renderLabel","renderInput","renderDescription","viewRef","getGridStyle","gridTemplateColumns","columns","gridAutoRows","Grid","isRTL","enableAnimations","reactElementsByRow","getReactElementsByRow","className","dir","rowData","firstFieldId","grid","animationStyles","animations","FieldActionsContext","useFieldActions","FieldValidationContext","useFieldValidation","FormValuesContext","isMultilineAddressField","FieldAttributesContext","useFieldAttributes","FieldPropsContext","useFieldProps","useFieldPropsV2","serializeDate","datePart","newYear","newMonth","newDay","yearFormatted","monthFormatted","dayFormatted","getDatePartsErrors","hasError","invalidParts","allValidParts","isDateFieldValidationError","getDateValidationErrorSuffix","formatDateTimeValue","isIncompleteTime","getDateTimePartsErrors","isDateTimeFieldValidationError","getDateTimeValidationErrorSuffix","TRANSLATIONS_NAMESPACE","defaultErrorKeys","INVALID_STAFF_ID_ERROR","INVALID_LOCATION_ID_ERROR","MISSING_SERVICE_OPTION_ERROR","INVALID_SERVICE_OPTIONS_ERROR","NO_AVAILABLE_SERVICE_OPTIONS_ERROR","INVALID_DEFAULT_VALUE_ERROR","getTranslatedError","translation","i18n","formattedFieldType","getFormattedFieldType","errorKey","fieldErrorKey","fieldErrorKeyWithSuffix","errorKeyWithSuffix","exists","getErrorSuffix","toLocaleLowerCase","uploadEnabled","useError","customErrors","forcedState","INPUT_FIELDS_ERROR","customErrorMessage","sign","getInputId","getLabelId","getPrefixId","getDescriptionId","getErrorId","getAriaDescribedBy","errorId","descriptionId","getErrorDataHook","inputId","labelId","prefixId","ariaDescribedBy","InputField","onFieldChange","onBlur","onFocus","FieldLayout","bi","componentsById","fieldValueRef","errorsByTarget","fieldErrors","fieldError","requiredIndicator","requiredIndicatorPlacement","requiredIndicatorProperties","_onBlur","currentFieldValue","formFieldFocus","action_type","field_id","field_label","field_target","_onFocus","handleChange","FieldComponent","fieldProps","onChange","onFieldBlur","onFieldFocus","requiredIndicatorType","fieldAttributes","NestedFormField","ReadOnlyField","getCurrentStep","stepCount","hasSteps","stepNumber","isLastStep","useSubmitButton","inProgress","actions","submitInProgress","setSubmitInProgress","isDisabled","isInProgress","showPreviousButton","showNextButton","showSubmitButton","handleSubmitClick","submitForm","SubmitButtonField","submitText","nextText","previousText","submitButtonText","previousButtonText","nextButtonText","onSubmitClick","onPreviousClick","setPreviousStep","onNextClick","setNextStep","FormField","createFormFields","fieldActions","FormRoot","Form","mapByField","mapById","sortFields","getSortedFields","stepId","allSteps","CustomFieldsType","EditableProperties","TemplateType","LinkTarget","DisplayFieldType","FieldType","ComponentType","BooleanComponentType","InputType","NumberComponentType","PaymentComponentType","SchedulingComponentType","StringComponentType","WixFileComponentType","ItemType","PropertiesTypeEnum","ButtonDataType","makeValidationOfInputField","makeValidationByType","transformStringType","arrayType","transformArrayType","objectType","transformObjectType","ADDRESS","addressOptions","transformArrayItems","transformPropertiesType","propertiesV2","stringTypeV2","transformStringFormat","formatV2","FormatV2","UNKNOWN_FORMAT","ContentKey","MaxShownParagraphsKey","makeViewOfDisplayProperties","displayField","richContentOptions","richContent","maxShownParagraphs","pageNavigation","pageNavigationOptions","nextPageText","previousPageText","idKey","LabelKey","PlaceholderKey","DescriptionKey","HideLabelKey","ShowDateLabelsKey","HidePlaceholderKey","Use24HourFormatKey","AddOtherKey","AddOtherLabelKey","NumberOfColumnsKey","AddOtherPlaceholderKey","DefaultValueKey","ValueKey","OptionsKey","ButtonTextKey","ValueSliderLimitKey","UploadFileFormatsKey","ExplanationTextKey","MediaKey","MediaSettingsKey","UploadEnabledKey","FirstDayOfWeekKey","DefaultCountryCodeKey","ImageResizeKey","ChoiceImageResizeKey","ShowFlagKey","NameKey","DurationKey","StaffIdsKey","ManualApprovalRequiredKey","FormatKey","FormatDescriptionTypeKey","LocationTypeKey","FormatDescriptionKey","LocationIdsKey","MeetingTypeKey","StaffStrategySelectionKey","RepeaterFieldsKey","RepeaterLayoutKey","ScoreKey","CorrectAnswersKey","makeViewOfInputField","resolveStringComponent","resolveNumberComponent","resolveBooleanComponent","resolveArrayComponent","resolvePaymentComponent","resolveWixFileComponent","wixFileOptions","resolveMultilineAddressComponent","resolveSchedulingComponent","schedulingOptions","resolveObjectArrayComponent","wixFileComponent","takeWixFileInputViewProperties","fileUploadOptions","takeSignatureInputViewProperties","signatureOptions","fileUpload","fileFormats","uploadFileFormats","IMAGE","DOCUMENT","ARCHIVE","MODEL_3D","showLabel","fileLimit","buttonText","explanationText","signature","imageUploadEnabled","arrayComponent","quizSettings","resolveQuizFieldSettings","quizFieldSettings","takeCheckboxGroupViewProperties","SERVICES_CHECKBOX_GROUP","servicesCheckboxGroupOptions","takeTagsViewProperties","tagsOptions","checkboxGroup","makeMediaOptionView","numericNumberOfColumns","numberOfColumns","ONE","mediaSettings","imageFit","CONTAIN","makeOptionView","makePaymentDefaultValue","paymentValidation","takeProductCheckboxGroupViewProperties","booleanComponent","takeCheckBoxInputViewProperties","checkboxOptions","checkBox","numberComponent","takeNumberInputViewProperties","takeRatingInputViewProperties","numberInput","toViewLabelMedia","toViewLabelMediaSettings","ratingInput","stringComponent","takeTextInputViewProperties","takePasswordViewProperties","passwordOptions","takeRadioGroupViewProperties","takeDropdownViewProperties","takeDateTimeViewProperties","takeDateInputViewProperties","takeTimeInputViewProperties","takeDatePickerViewProperties","PHONE_INPUT","takePhoneInputViewProperties","phoneInputOptions","takeServiceDropdownViewProperties","servicesDropdownOptions","textInput","image","imagePosition","BELOW","ABOVE","imageAlignment","password","radioGroup","dropdown","dateTimeInput","showDateLabels","showPlaceholder","use24HourFormat","dateInput","timeInput","datePicker","firstDayOfWeek","phoneInput","defaultCountryCode","showCountryFlag","paymentComponent","DONATION_INPUT","takeDonationsInputViewProperties","donationInputOptions","takeFixedPaymentViewProperties","fixedPaymentOptions","takePaymentInputViewProperties","multilineAddress","takeMultilineAddressViewProperties","takeAppointmentViewProperties","appointmentOptions","multilineAddressView","hideLabel","staffStrategyV2toV1","AUTOMATIC","HIGH_TO_LOW_PRIORITY","LOW_TO_HIGH_PRIORITY","durationInMinutes","manualApprovalRequired","staffIds","meetingType","staffStrategySelection","videoConferenceOptions","inPersonOptions","transformFormatInfoToView","locations","customLocation","loc","customAddress","businessIds","businessLocationId","donationInput","fixedPayment","paymentInput","isLabelHidden","altText","imageWithoutAltText","numberOfColumnsEnum","objectArrayComponent","REPEATER","takeRepeaterViewProperties","repeaterOptions","repeater","transformFieldToV1","correctAnswers","correctAnswersList","resolveRootProperties","identifier","displayOptions","GRID_DEFAULTS","rowHeight","margin","horizontal","createFormView","recursive","includeHiddenFields","breakpoint","useFieldsV2","platformizedFields","nameView","hasSmallLayout","small","isSmallBreakpoint","fieldViews","createFieldView","SMALL","sortFieldViewsByColumn","sortFieldViewsByRow","gridView","createGridView","formView","applyMobileLayout","breakpoints","createLayoutBreakpoints","activeLayout","fieldTarget","propertiesView","createPropertiesView","layoutByBreakpoint","largeItem","largeLayoutView","createLayoutView","smallItem","smallLayoutView","static","marginHorizontal","paddingVertical","paddingHorizontal","gridRowHeight","fieldA","fieldB","getCountryAddressForm","addressTemplates","AddressFormsContext","getAddressForm","templates","useAddressForms","FieldInitialDataContext","ADDRESS_TARGETS","fromAtlasAddress","formattedAddressLine","address_line","postal_code","street_name","street_number","brazilVatIdValidator","isCpfValid","isCnpjValid","getVatIDType","isCpf","isCnpj","CPF_BLACKLIST","modelValue","factors","CNPJ_BLACKLIST","STRICT_STRIP_REGEX","LOOSE_STRIP_REGEX","verifierDigit","numbers","sum","mod","strict","stripped","substr","luhnChk","ccNum","bit","israelVatIdValidator","validateVatID","validateBirthdate","getFullYear","PRODUCT_PRICE_MULTIPLE_OF","getProductPrice","toProductValue","findProductWithDynamicPrice","getCustomAmount","productValue","customAmountProduct","getProductValueOnCheckboxChange","productsById","dateToDateString","getMonth","getDate","dateToTimeString","getHours","getMinutes","DEFAULT_VALUE","resolveDefaultValue","resolveDefaultTimeValue","resolveDefaultDateValue","areArraysEqual","areDatesEqual","areErrorsEqual","areFunctionsEqual","areMapsEqual","areNumbersEqual","areObjectsEqual","arePrimitiveWrappersEqual","areRegExpsEqual","areSetsEqual","areTypedArraysEqual","areUrlsEqual","areObjectsEqualStrictDefault","areArraysEqualDefault","areMapsEqualDefault","areObjectsEqualDefault","areSetsEqualDefault","areTypedArraysEqualDefault","mapByIds","by","getIdOrTarget","_by","destination","omitted","supportedPaths","fieldPathMapToPlatfomized","isCondition","fact","getRulesOrConditions","valueIsMissing","expected","orEqual","lowerBound","upperBound","isTimeOnly","timeOnlyRegex","asUtcDate","prefixAnyDate","getNumberValuesToCompare","getDateUtcTimestamp","isProductSubmission","givenDate","isArrayOfNumbers","isValueEmpty","isValidCondition","rulesOrConditions","conditionOrRule","isFormRuleValid","formRule","fieldsToCheck","conditionValid","condition","overrideValid","override","entityType","FORM","entityId","nestedForm","wasFieldFound","PATH_SEPARATOR","applyItemPropertiesOverride","overriddenFormSchema","applyFormOverride","mapOverridesByItem","isFormOverride","isSupportedFormPath","applyItemsOverride","isFieldOverride","isSupportedFieldPath","mapOverridesV2ByItem","formItemOverrides","setToValue","formOverrides","overrideItems","isOverride","isSupportedPath","overrideItem","valueChanges","resolvedV2Paths","pathV2","pathProps","valueToSet","FIELD","import_js_rules_engine","ConditionOperators","valueContainsAny","_givenValue","expectedValue","arrayEquals","valueIsBetween","firstBound","secondBound","valueContains","valueEqual","valueIsGreaterThan","valueIn","import_dayjs","valueIsDateNewerThan","dayjs","IsSameOrAfter","nowUnitsAdded","isSameOrAfter","isAfter","valueIsDateOlderThan","IsSameOrBefore","isSameOrBefore","isBefore","valueIsLessThan","setUpOperators","defaultEngine","operators","after","greaterThanOrEqual","afterOrEqual","lessThanOrEqual","beforeOrEqual","notEqual","notContains","arrayEqual","arrayNotEqual","notChecked","in","notIn","isDateNewerThan","isDateOlderThan","isDateNewerThanOrEqual","isDateOlderThanOrEqual","removeOperator","addOperator","evaluateOverrideConditionFactory","evaluateOverrideCondition","getRule","evaluate","applyOverrides","applyFormOverrides","submissionsById","truthy","falsy","keyFn","applyNestedFormOverrides","parentForm","fieldsWithFormOverrides","nestedFormOverrides","fieldsWithFormOverridesByTarget","targetsWithOverride","targetsWithoutOverride","nestedFormsWithOverrides","nestedFormsWithoutOverrides","hiddenOverride","requiredOverride","getFormValidator","addressToolkit","formValidator","applyNestedForms","nestedFormsById","nestedFormsByTarget","getNestedFormsByTarget","getNestedFormArray","formsByTarget","runAdditionalValidation","additionalErrors","validateField","ADDITIONAL_FIELD_VALIDATION","getFieldErrors","fieldsToValidate","formValues","setValue","_errors","mergeErrors","findErrorByNormalizedPath","delimiter","decomposedPath","errorsToAdd","errorExists","getOverride","applyMultilineAddressOverrides","callingCountryCode","applyAddressFieldOverride","fieldName","multilineAddressOptionsFields","multilineAddressFieldSettings","fieldOverride","ADDRESS_FIELD_NAMES","finalState","autocompleteEnabled","autocomplete","applyAllOverrides","applyRuleOverrides","clearFieldsWhenHiddenByRule","currentValues","newValues","fieldCount","clearedTargets","newHiddenTargets","findHiddenTargets","currentHiddenTargets","targetsToClear","clearValues","newErrors","clearErrors","getStepIndex","stepIndex","fillEmptyValues","AUTOFILL_FIELDS","autofillValues","autoFillContact","MEMBER_DATA","RATING_VALUES","isRating","normalizeValues","normalizedValues","normalizer","NORMALIZED_VALUE","acceptStringValue","removeInvalidOptions","acceptOnlyValidOptionByLabel","acceptNumberValue","keepValueUnchanged","acceptPhoneValue","acceptBooleanValue","acceptObjectValue","normalizeMultilineAddress","acceptOnlyValidOptionByValue","acceptFullNameValue","normalizeVatIDValue","acceptRatingValue","acceptOnlyValidProducts","acceptOnlyValidPayments","normalizeRepeater","isEmptyValue","hasAddOther","addOther","arrayItem","optionExists","validationProducts","validProducts","hasAllProps","isValidPrice","isValidQuantity","isExisted","vatID","isBoolean","payment","nestedFields","normalized","useFormValues","enableAutofill","hasAutofilled","filled","hasAnyValueChanged","useReportFieldEdit","lastChangedFields","changedValues","changedFieldTargets","isEditingDifferentFields","changedField","formFieldEdit","useScrollToFirstError","handleStepChange","currentStepId","scrollToFirstError","sortedFieldsInStep","fieldWithError","handleScrollToFirstError","sortedFields","fieldStep","fieldInStep","layoutField","fieldStepIndex","SubmitStatusContext","SubmitStatusProvider","submitSuccessMessage","setSubmitSuccessMessage","submitFailureCode","setSubmitFailureCode","submitFailureMessage","setSubmitFailureMessage","useSubmitStatus","INTERACTIONS","LOAD_VIEWER_CONTROLLER","SUBMIT_FORM","BiFormSubmissionStatus","redirectToExternalUrl","redirectOptions","urlWithoutProtocol","redirectUrl","updatedExternalUrl","SELF","getErrorCode","applicationError","fieldViolations","getErrorList","getFormCustomErrorMessage","getFieldCustomErrorMessages","getCheckoutMessage","paragraphData","textAlignment","useSubmit","validateAndScrollToError","submitAction","onSubmit","onSubmitFailure","resetFormValues","submitSettings","navigateToCheckout","openPopup","onValidate","focusOnSubmitSuccess","reportSubmitFormBi","submitFormBi","submission_status","submission_id","handleSubmitSuccess","submitSuccessAction","checkoutId","orderDetails","THANK_YOU_MESSAGE","thankYouMessageOptions","durationInSeconds","REDIRECT","POPUP","popupOptions","popupId","handleSubmitFailure","handleCustomErrorMessages","formCustomErrorMessage","fieldCustomErrorMessages","VALIDATION_FAILURE","FAILURE","SUCCESS","useValidation","errorsRef","setErrors","handleFieldValidation","otherErrors","validateStep","validationErrors","fieldValidationResult","validationErrorsFlatten","paramForm","paramValues","onStepIdChange","enableScrollToFirstError","forwardedRef","fieldMap","formWithOverrides","valuesRef","reportFieldEdit","oldValues","oldErrors","cleared","_onValidate","formViews","currentView","newStepId","firstFieldInStep","submit","getValues","currentStep","React213","React214","React215","React216","React217","HostContext","dummyBi","updateDefaults","useFormBi","biFormFillSessionId","formEditSessionId","form_fill_session_id","form_guid","form_schema_name","form_url","FormViewerProvider","isEditor","isComposer","httpClient","translationNamespace","WixRicosViewer","fieldInitialData","translations","getFixedT","formBi","forcedViewState","i18next","initReactI18next","jsx","findChildOfType","applyInternalProps","Description","data-hook","ErrorSmall","aria-hidden","createIndicatorNode","indicator","TEXT","injectRequiredIndicator","indicatorNode","BEFORE_FIELD_TITLE","firstNode","AFTER_FIELD_TITLE","lastNode","RichTextLabel","requiredClassName","internal","requiredIndicatorHidden","ASTERISK","labelWithIndicator","Checkbox","checkboxElement","descriptionElement","errorElement","CheckboxContainer","labelElement","inputElement","Input","CheckboxRAC","aria-describedby","isInvalid","waitMilliseconds","timeoutId","isImmediate","maxWait","lastInvokeTime","promises","nextInvokeTimeout","timeSinceLastInvocation","debouncedFunction","shouldCallNow","HIDDEN_LABEL_STYLE","ZERO_WIDTH_SPACE","internalLabel","propsLabel","requiredElement","Required","labelAfterRequiredIndicator","labelContent","htmlFor","useFocus","containerRef","isFocused","handleBlur","clickedOnNonFocusableElement","relatedTarget","clickedOutside","handleFocus","FieldsetHeadless","ariaLabelledBy","fieldset","aria-labelledby","aria-required","OTHER_ID","getValueIncludesOther","optionsNames","_value","getIsOtherOptionSelected","getOtherLabel","addOtherLabel","otherLabelDefault","getOtherValue","addedSymbolsLength","otherLabelLength","otherItem","getOptionsValues","CheckboxGroup","optionsElement","Options","CheckboxGroupRAC","optionElement","Option","otherLabel","data-columns","checkboxValue","isFirst","isOther","OptionInput","OptionLabel","checkboxRef","actualValue","handleOtherCheckboxChange","removedOther","addOtherPlaceholder","otherInputCharacterLimit","otherInputElement","OtherInput","isOtherSelected","ariaLabel","otherValue","setOtherValue","debouncedHandleChange","_otherValue","handleInputChange","TextFieldRAC","InputRAC","aria-label","getMonthList","getMonthName","DateInput","dateFormat","dateElementsByPart","Month","Day","Year","useDateFieldAttributes","partValue","partError","onPartChange","isFirstPart","useDatePart","buttonRef","handleMonthChange","selectedValue","data-date-field","SelectRAC","ButtonRAC","data-invalid","SelectValueRAC","MonthLabel","DateLabel","MonthOptions","months","PopoverRAC","ListBoxRAC","MonthOption","ListBoxItemRAC","textValue","DayLabel","DayInput","hidePlaceholder","inputRef","inputMode","YearLabel","YearInput","partName","dateValues","serializedValue","firstPart","translationKey","DatePicker","dateValue","dateValueToString","controlElement","calendarElement","Calendar","stringToDateValue","DatePickerRAC","GroupRAC","firstSegmentRef","hasAssignedRef","DateInputRAC","DateSegmentRAC","Trigger","isDateUnavailable","jsDate","toDate","dayElement","DialogRAC","CalendarRAC","convertFirstDayOfWeek","slot","HeadingRAC","CalendarGridRAC","CalendarCellRAC","parseDate","days","DateTimeInput","timeElement","Time","useDateTimeFieldAttributes","useFieldPart","DateTimeLabel","TimeFieldRAC","hourCycle","TimeLabel","TimeInput","hourElement","Hour","minuteElement","Minute","periodElement","Period","fieldOnChange","timeValue","parsedTimeValue","stringToTimeValue","onTimeChange","timeValueToString","serializedDate","parseTime","hour","minute","second","formatPrice","filteredInput","decimal","localizedNumber","normalizedValue","getCurrencyAriaLabel","Donation","customAmount","setCustomAmount","handleRadioChange","handleCustomAmountChange","debouncedHandleCustomAmountChange","handleCustomAmountInputChange","handleFocusCustomInput","RadioGroupRAC","onCustomAmountInputChange","customAmountProductId","onFocusCustomInput","RadioRAC","whiteSpace","border","valueElement","Value","currencyElement","Currency","OptionValue","formattedPrice","OptionCurrency","hasValue","data-selected","OtherInputCurrency","OtherInputValue","autoComplete","Dropdown","triggerElement","useUploadFile","uploadTarget","filesToUpload","onDone","uploadFile","uploadTasks","file","fileDescriptor","isPrivate","uploadedFile","_e","uploadedValues","useFileUploadController","valueSliderLimit","onFilesCleared","files","setFiles","convertValuesToFiles","uploadedFiles","setUploadedFiles","_error","setError","uploadFiles","hover","BUTTONS_HOVER","prevIsUploading","currentIsUploading","isUploading","getExplanationText","uploadingCount","uploadedCount","progress","_uploadFiles","previousFiles","prevFiles","newFiles","_err","_files","limitExceeded","filesArr","filesToAdd","_file","alreadyAdded","handleDelete","fileToDelete","filteredValues","filteredFiles","accept","File","FileUploadContext","useFileUploadContext","DropZone","handleFileChange","limitReached","titleElement","Title","subtitleElement","Subtitle","buttonElement","DropZoneRAC","onDrop","droppedFiles","getFile","dataTransfer","DataTransfer","TextRAC","DropZoneTitle","DropZoneSubtitle","subtitle","DropZoneButton","multiple","hasFileErrors","hasAnyError","FileTriggerRAC","acceptedFileTypes","allowsMultiple","onSelect","fileList","aria-invalid","aria-roledescription","AddSmall","ProgressCircle","strokeWidth","ProgressBarRAC","isIndeterminate","percentage","fill","viewBox","circle","cx","cy","pathLength","strokeDasharray","strokeDashoffset","strokeLinecap","rotate","transformOrigin","animateTransform","attributeName","repeatCount","focusFile","nameElement","Name","removeElement","Remove","spinnerElement","Spinner","focused","FileName","FileRemove","fileRemoveButtonRefs","refs","fileKey","handleClick","aria-disabled","aria-description","onClick","DeleteSmall","FileError","role","StatusAlert","FileSpinner","Files","fileElement","fileUploadFile","FileUpload","handleFilesCleared","_handleDelete","currentKey","firstFocusableElementRef","dropZoneElement","explanationElement","Explanation","filesElement","FieldError","FixedPayment","fixedPaymentValue","amountElement","Amount","currencyCode","formattedValue","FixedPaymentLabel","LoginBar","LoginBarInner","login","logout","labelWithButton","LoginBarText","labelText","user","LoginBarButton","onPress","AddressAutofillContext","onAddressSelect","AddressAutofillProvider","useAddressAutofill","CountryCodeContext","CountryCodeProvider","useCountryCode","ROW_WIDTH","separateFields","visibleFields","hiddenFields","createRowMap","rowMap","findRowsWithGaps","rowsWithGaps","rowKey","fieldsInRow","totalWidth","recalculateFieldLayouts","newWidth","fieldPosition","newColumn","moveHiddenFieldsToBottom","maxVisibleRow","hiddenFieldIndex","removeGaps","baseForm","fieldsWithRecalculatedLayouts","fieldsWithHiddenMoved","applyMultilineAddressSettings","multilineAddressValidation","overrideFieldIds","newFieldIdsByTarget","AddressFieldsContext","AddressFieldsProvider","useAddressFields","useAddressLabel","addressPart","addressKeys","labelKey","AddressLine2","addressLine2Label","transformPaths","PACKAGE_NAME","import_debounce","useDebouncedCallback","cb","dependencies","debounceMs","callbackRef","debouncedCallback","useIsMounted","mountedRef","cleanup","initialFetchState","useAtlasHeadless","setFetchState","predictionsRequestId","isMounted","clearPredictions","updatePredictions","requestId","newPredictions","isMostRecentRequest","places","AddressLine","isAutocomplete","addressLineLabel","AddressLineAutocomplete","setSessionToken","prediction","handleSelectionChange","ComboBoxRAC","inputValue","onInputChange","selectedKey","onSelectionChange","allowsCustomValue","menuTrigger","renderEmptyState","City","cityLabel","Country","countryOptions","localeCompare","setInputValue","selectedLabel","opt","countryLabel","data-disabled","JAPAN_POSTAL_CODE_REGEXP","extractJapanPostalCode","useAtlas","setAtlas","initAtlas","atlasService","useJapanAutocomplete","isAutocompleteEnabled","hasAddress","PostalCode","isJapan","postalCodeLabel","PostalCodeAutocomplete","setIsAutocompleteEnabled","setPrediction","StreetName","streetNameLabel","StreetNameAutocomplete","StreetNumber","streetNumberLabel","Subdivision","subdivisionOptions","subdivisionLabel","MlaCountryWrapper","MlaSubdivisionWrapper","MlaCityWrapper","MlaAddressLineWrapper","MlaAddressLine2Wrapper","MlaPostalCodeWrapper","MlaStreetNameWrapper","MlaStreetNumberWrapper","ADDRESS_FIELDS","NO_VALUES","NO_ERRORS","FIELD_IDS","address_line_2","MultilineAddress","_form","parentValidateFields","mlaCountryField","mlaCountryLayout","handleAddressSelect","atlasAddress","COUNTRY","handleFieldChange","_target","subFieldValue","firstError","countryElement","subdivisionElement","cityElement","addressLineElement","addressLine2Element","postalCodeElement","streetNameElement","streetNumberElement","minWidth","legend","useInvokeCallback","callCount","setCallCount","shouldInvoke","invokeCallback","NumberInput","numberValue","valueToNumber","internalValue","setInternalValue","invokeBlur","numberOfDecimals","validValue","NumberFieldRAC","PaymentInput","paymentValue","setPaymentValue","handleOnBlur","handleOnChange","parseCountryCodeFromPhoneNumber","parsedCountryCode","asYouType","guessedCountryCode","dialCode","parseLocalPhone","useCountries","shortCountryCode","longCountryCode","countryName","filterCountries","usePhoneInputLogic","currentValue","setCurrentValue","selectedCountryCode","setSelectedCountryCode","countryCodeFromPhoneNumber","handlePhoneChange","countryCodeByPhoneNumber","latestCountryCode","countryToUse","parsedValue","handleCountryCodeChange","latestValue","PhoneInputContext","usePhoneInputContext","OptionDataContext","useOptionDataContext","Flag","getFlagUrl","_longCountryCode","flag1x","flag2x","srcSet","PhoneInput","allCountries","CountryButton","buttonId","selectedCountry","dialingCode","countryCodeLabel","CountryButtonFlag","CountryButtonEmptyState","Globe","EmptyState","CountryOptions","optionData","OptionFlag","OptionName","OptionCode","Code","countryButtonElement","countryOptionsElement","phoneNumberElement","SelectMode","getSelectMode","onlyOne","many","oneByOne","ProductList","selectOptionsMode","allowMany","isChecked","restProductValues","newProductValues","productValues","onProductChange","imageResize","firstCheckboxRef","currencyTranslation","preselectedProduct","currencyAriaLabel","ProductOption","imageElement","priceElement","Price","quantityElement","Quantity","handleCheckboxChange","handleQuantityChange","newQuantity","onQuantityChange","OptionImage","imageURL","imageAlt","OptionPrice","OptionQuantity","onKeyDown","getIsValueFromOptions","RadioGroup","firstRadioRef","radioRef","isThisOptionSelected","radioClassName","_props","OptionOtherInput","isOtherOptionSelected","handleOtherChange","RatingInput","starsElement","Stars","orientation","hovered","setHovered","starElement","Star","starValues","isFilled","starValue","onHoverChange","isHover","data-filled","RichText","ratio","SignatureFormat","SignatureMode","SignatureView","useUploadSignature","getColorNumericValue","canvas","ctx","fillStyle","fillRect","imageData","getImageData","isBackgroundColor","backgroundColor","backgroundNumeric","pixelNumericColor","isTransparentColor","pixelAlphaValue","getCroppedCanvas","originalCtx","willReadFrequently","originalWidth","originalHeight","isBackground","minX","maxX","minY","maxY","croppedWidth","croppedHeight","cuttedImageData","croppedCanvas","croppedCtx","clearRect","putImageData","dpi","createCanvasFromDataUrl","dataUrl","drawImage","getScaledCanvas","widthLimit","heightLimit","widthRatio","heightRatio","scaledCanvas","resizeCanvas","newHeight","redraw","MAX_HEIGHT","encodePoints","points","encodeDataUrl","POINTS","decodePoints","decodedDataUrl","decodeDataUrl","SCALE_FACTOR","SIGNATURE_FONT","calculateTextSize","actualBoundingBoxAscent","actualBoundingBoxDescent","measureText","offsetY","calculateFontSize","maximumHeight","maximumWidth","font","widthAtFullSize","heightAtFullSize","maximumFontSizeByWidth","maximumFontSizeByHeight","writeTextOnCanvas","newText","rtl","fontSize","textBaseline","textWidth","textHeight","textOffsetY","fillText","DATA_URI_REGEX","isDataUrl","encoding","decodeURI","encodedData","btoa","encodeURI","typeAndEncoding","dataUrlToFile","u8arr","dataUrlToWixFile","dataUrlToPngDataUrl","dataUrlType","toDataURL","blackPoints","pointGroup","penColor","signaturePad","SignaturePad","fromData","convertToPNGFile","pngDataUrl","useSignatureValue","signatureValue","setSignatureValue","uploadSignatureFile","uploadTimeoutIdRef","cancelUpload","decodedValue","uploadSignature","_signature","signatureFile","uploadedValue","newSignature","deferUploadSignature","useSignatureField","signatureMode","setSignatureMode","DRAW","UPLOAD","handleBeforeChange","handleClear","clearable","signatureValueForView","undefinedIfUnsupportedByCurrentMode","signatureView","ACCEPTED_FORMATS_BY_MODE","isAcceptedFormat","isExternalImage","dataURL","Signature","headerElement","Header","tabsElement","clearElement","Clear","modeDescription","aria-live","modes","allModes","tabElement","iconElement","Icon","TabIcon","IconComponent","Edit","TextStyleSmall","Download","aria-controls","Delete","canvasElement","Canvas","typeElement","uploadElement","Upload","onBeforeChange","canvasRef","resizeObserver","valueUrl","setAriaLabel","dotSize","maxWidth","velocityFilterWeight","getSignature","dataPoints","toData","handleBeforeChangeInternal","mountCanvas","isMount","ResizeObserver","data-input-id","data-has-value","signatureText","getElementById","TypeValue","fileInputRef","fileReader","FileReader","readAsDataURL","hasUploadedImage","maxHeight","UploadButton","handlePress","click","SubmitButton","buttonsContainerElement","ButtonsContainer","previousButtonElement","PreviousButton","nextButtonElement","NextButton","submitButtonElement","SubmitButtonComponent","loaderElement","data-in-progress","onChangeRef","regularOptions","formattedOtherValue","isFirstOption","TagRAC","allOptions","TagListRAC","Tags","selectedArray","hasOther","regularValues","existingOtherValue","selectedKeys","TagGroupRAC","selectionMode","TextArea","TextAreaRAC","TextInput"],"mappings":"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IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAW,IAAA;AAAA,YACX,KAAA,IAAW,IAAA;AAAA,YACX,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,IAAA;AAAA,YACX,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,IAAA;AAAA,YACX,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,IAAA;AAAA,YACX,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,IAAA;AAAA,YACX,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,IAAA;AAAA,YACX,KAAA,IAAW,IAAA;AAAA,YACX,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,IAAA;AAAA,YACX,KAAA,IAAW,IAAA;AAAA,YACX,KAAA,IAAW,IAAA;AAAA,YACX,KAAA,IAAW,IAAA;AAAA,YACX,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,IAAA;AAAA,YACX,KAAA,IAAW,IAAA;AAAA,YACX,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,IAAA;AAAA,YACX,KAAA,IAAW,IAAA;AAAA,YACX,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,IAAA;AAAA,YACX,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,IAAA;AAAA,YACX,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,IAAA;AAAA,YACX,KAAA,IAAW,IAAA;AAAA,YACX,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,IAAA;AAAA,YACX,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,IAAA;AAAA,YACX,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,IAAA;AAAA,YACX,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,IAAA;AAAA,YACX,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,IAAA;AAAA,YACX,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,MAAA,IAAW,QAAQ,IAAA,IAAQ,MAAA;AAAA,YAC3B,MAAA,IAAW,IAAA;AAAA,YACX,MAAA,IAAW,QAAQ,IAAA,IAAQ,MAAA;AAAA,YAC3B,MAAA,IAAW,QAAQ,IAAA,IAAQ,MAAA;AAAA,YAC3B,MAAA,IAAW,QAAQ,IAAA,IAAQ,MAAA;AAAA,YAC3B,MAAA,IAAW,QAAQ,IAAA,IAAQ,MAAA;AAAA,YAC3B,MAAA,IAAW,QAAQ,IAAA,IAAQ,MAAA;AAAA,YAC3B,MAAA,IAAW,QAAQ,IAAA,IAAQ,MAAA;AAAA,YAC3B,MAAA,IAAW,QAAQ,IAAA,IAAQ,MAAA;AAAA,YAC3B,MAAA,IAAW,QAAQ,IAAA,IAAQ,MAAA;AAAA,YAC3B,MAAA,IAAW,IAAA;AAAA,YACX,MAAA,IAAW,IAAA;AAAA,YACX,MAAA,IAAW,QAAQ,IAAA,IAAQ,MAAA;AAAA,YAC3B,MAAA,IAAW,QAAQ,IAAA,IAAQ,MAAA;AAAA,YAC3B,MAAA,IAAW,QAAQ,IAAA,IAAQ,MAAA;AAAA,YAC3B,MAAA,IAAW,QAAQ,IAAA,IAAQ,MAAA;AAAA,YAC3B,MAAA,IAAW,QAAQ,IAAA,IAAQ,MAAA;AAAA,YAC3B,MAAA,IAAW,QAAQ,IAAA,IAAQ,MAAA;AAAA,YAC3B,MAAA,IAAW,QAAQ,IAAA,IAAQ,MAAA;AAAA,YAC3B,MAAA,IAAW,QAAQ,IAAA,IAAQ,MAAA;AAAA,YAC3B,MAAA,IAAW,QAAQ,IAAA,IAAQ,MAAA;AAAA,YAC3B,MAAA,IAAW,QAAQ,IAAA,IAAQ,MAAA;AAAA,YAC3B,MAAA,IAAW,IAAA,IAAQ,IAAA,IAAQ,MAAA,EACzB;AACA,cAAA,OAAO,MAAA;AAAA,YACR;AAED,YAAA,IAAI,MAAA,IAAW,IAAA,IAAQ,IAAA,IAAQ,MAAA,EAC9B;AACC,cAAA,OAAO,kBAAA;AAAA,YACR;AAED,YAAA,IAAI,IAAA,IAAU,IAAA;AAAA,YACd,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC1B,IAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAW,IAAA;AAAA,YACX,KAAA,IAAW,IAAA;AAAA,YACX,KAAA,IAAW,IAAA;AAAA,YACX,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,IAAA;AAAA,YACX,KAAA,IAAW,IAAA;AAAA,YACX,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,IAAA;AAAA,YACX,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,IAAA;AAAA,YACX,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,IAAA;AAAA,YACX,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,IAAA;AAAA,YACX,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,IAAA;AAAA,YACX,KAAA,IAAW,IAAA;AAAA,YACX,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,IAAA;AAAA,YACX,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,IAAA;AAAA,YACX,KAAA,IAAW,IAAA;AAAA,YACX,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,IAAA;AAAA,YACX,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,IAAA;AAAA,YACX,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,IAAA;AAAA,YACX,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,KAAA,IAAW,IAAA;AAAA,YACX,KAAA,IAAW,IAAA;AAAA,YACX,KAAA,IAAW,IAAA;AAAA,YACX,KAAA,IAAW,IAAA;AAAA,YACX,KAAA,IAAW,IAAA;AAAA,YACX,KAAA,IAAW,IAAA;AAAA,YACX,KAAA,IAAW,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC3B,MAAA,IAAW,IAAA;AAAA,YACX,UAAW,IAAA,EACT;AACA,cAAA,OAAO,WAAA;AAAA,YACR;AAED,YAAA,IAAI,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC9B,KAAA,IAAU,IAAA,IAAQ,IAAA,IAAQ,KAAA,EACxB;AACA,cAAA,OAAO,CAAA;AAAA,YACR;AAED,YAAA,IAAI,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC9B,KAAA,IAAU,IAAA,IAAQ,IAAA,IAAQ,KAAA,EACxB;AACA,cAAA,OAAO,CAAA;AAAA,YACR;AAED,YAAA,IAAI,IAAA,IAAU,QAAQ,IAAA,IAAQ,IAAA;AAAA,YAC9B,KAAA,IAAU,IAAA,IAAQ,IAAA,IAAQ,KAAA,EACxB;AACA,cAAA,OAAO,CAAA;AAAA,YACR;AAED,YAAA,IAAI,KAAA,IAAU,IAAA;AAAA,YACd,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,IAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,KAAA,IAAU,IAAA;AAAA,YACV,SAAU,IAAA,EACR;AACA,cAAA,OAAO,EAAA;AAAA,YACR;AAED,YAAA,IAAI,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC9B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,KAAA,IAAU,QAAQ,IAAA,IAAQ,KAAA;AAAA,YAC1B,K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A,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,MAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,MAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAA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N,GAAA,EAAM,GAAA;;MACN,GAAA,EAAM,GAAA;;MACN,GAAA,EAAM,GAAA;;MACN,GAAA,EAAM,GAAA;;MACN,GAAA,EAAM,IAAA;;MACN,GAAA,EAAM,GAAA;;MACN,GAAA,EAAM,EAAA;;MACN,GAAA,EAAM,IAAA;;MACN,GAAA,EAAM,IAAA;;MACN,GAAA,EAAM,GAAA;;MACN,GAAA,EAAM,IAAA;;MACN,GAAA,EAAM,IAAA;;MACN,GAAA,EAAM,IAAA;;MACN,GAAA,EAAM,IAAA;;MACN,GAAA,EAAM,GAAA;;MACN,GAAA,EAAM,GAAA;;MACN,GAAA,EAAM,GAAA;;MACN,GAAA,EAAM,GAAA;;MACN,GAAA,EAAM,GAAA;;MACN,GAAA,EAAM,GAAA;;MACN,GAAA,EAAM,GAAA;;MACN,GAAA,EAAM,GAAA;;MACN,GAAA,EAAM,GAAA;;MACN,GAAA,EAAM,GAAA;;MACN,GAAA,EAAM,GAAA;;MACN,GAAA,EAAM,GAAA;;MACN,GAAA,EAAM,GAAA;;MACN,GAAA,EAAM,GAAA;;MACN,GAAA,EAAM,GAAA;;MACN,GAAA,EAAM,GAAA;;;;MAGN,GAAA,EAAM,GAAA;;MACN,GAAA,EAAM,GAAA;;MACN,GAAA,EAAM,GAAA;;MACN,GAAA,EAAM,GAAA;;MACN,GAAA,EAAM,GAAA;;MACN,GAAA,EAAM,GAAA;;MACN,GAAA,EAAM,GAAA;;MACN,GAAA,EAAM,GAAA;;MACN,GAAA,EAAM,GAAA;;MACN,GAAA,EAAM,GAAA;;MACN,GAAA,EAAM,GAAA;;MACN,GAAA,EAAM,EAAA;;MACN,GAAA,EAAM,EAAA;;MACN,GAAA,EAAM,EAAA;;MACN,GAAA,EAAM,GAAA;;MACN,GAAA,EAAM,IAAA;;MACN,GAAA,EAAM,GAAA;;MACN,GAAA,EAAM,GAAA;;MACN,GAAA,EAAM,GAAA;;MACN,GAAA,EAAM,GAAA;;MACN,GAAA,EAAM,GAAA;;MACN,GAAA,EAAM,GAAA;;MACN,GAAA,EAAM,GAAA;;MACN,GAAA,EAAM,IAAA;;MACN,GAAA,EAAM,GAAA;;MACN,GAAA,EAAM,GAAA;;MACN,GAAA,EAAM,GAAA;;MACN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AAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,KAAA;AACA,MAAA,K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CA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AACA,MAAA,IAAA;AA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,QAAI,CAAA;AAAA,QAAG,EAAA;AAAA,QAAI,CAAA;AAAA,QAAG,CAAA;AAAA,QAAG,GAAA;AAAA,QAAK,EAAA;AAAA,QAAI,CAAA;AAAA,QAAG,GAAA;AAAA,QAAK,GAAA;AAAA,QAAK,GAAA;AAAA,QAAK,GAAA;AAAA,QAAK,CAAA;AAAA,QAAG,GAAA;AAAA,QAAK,CAAA;AAAA,QAAG,CAAA;AAAA,QAAG,CAAA;AAAA,QAAG,CAAA;AAAA,QAAG,CAAA;AAAA,QAAG,CAAA;AAAA,QAAG,CAAA;AAAA,QAAG,CAAA;AAAA,QAAG,CAAA;AAAA,QAAG,CAAA;AAAA,QAAG,CAAA;AAAA,QAAG,CAAA;AAAA,QAAG,GAAA;AAAA,QAAK,CAAA;AAAA,QAAG,EAAA;AAAA,QAAI,CAAA;AAAA,QAAG,EAAA;AAAA,QAAI,CAAA;AAAA,QAAG,EAAA;AAAA,QAAI,CAAA;AAAA,QAAG,CAAA;AAAA,QAAG,GAAA;AAAA,QAAK,GAAA;AAAA,QAAK,GAAA;AAAA,QAAK,CAAA;AAAA,QAAG,CAAA;AAAA,QAAG,CAAA;AAAA,QAAG,GAAA;AAAA,QAAK,GAAA;AAAA,QAAK,GAAA;AAAA,QAAK,EAAA;AAAA,QAAI,GAAA;AAAA,QAAK,CAAA;AAAA,QAAG,CAAA;AAAA,QAAG,CAAA;AAAA,QAAG,GAAA;AAAA,QAAK,GAAA;AAAA,QAAK,GAAA;AAAA,QAAK,EAAA;AAAA,QAAI,GAAA;AAAA,QAAK,CAAA;AAAA,QAAG,CAAA;AAAA,QAAG,CAAA;AAAA,QAAG,GAAA;AAAA,QAAK,GAAA;AAAA,QAAK,GAAA;AAAA,QAAK,EAAA;AAAA,QAAI,GAAA;AAAA,QAAK,CAAA;AAAA,QAAG,CAAA;AAAA,QAAG,CAAA;AAAA,QAAG,GAAA;AAAA,QAAK,GAAA;AAAA,QAAK,GAAA;AAAA,QAAK,EAAA;AAAA,QAAI,GAAA;AAAA,QAAK,CAAA;AAAA,QAAG,CAAA;AAAA,QAAG,CAAA;AAAA,QAAG,GAAA;AAAA,QAAK,GAAA;AAAA,QAAK,GAAA;AAAA,QAAK,EAAA;AAAA,QAAI,GAAA;AAAA,QAAK,GAAA;AAAA,QAAK,GAAA;AAAA,QAAK,GAAA;AAAA,QAAK,CAAA;AAAA,QAAG,CAAA;AAAA,QAAG,EAAA;AAAA,QAAI,GAAA;AAAA,QAAK,CAAA;AAAA,QAAG,CAAA;AAAA,QAAG,CAAA;AAAA,QAAG,CAAA;AAAA,QAAG,EAAA;AAAA,QAAI,CAAA;AAAA,QAAG,EAAA;AAAA,QAAI,EAAA;AAAA,QAAI,CAAA;AAAA,QAAG,CAAA;AAAA,QAAG,GAAA;AAAA,QAAK,EAAA;AAAA,QAAI,CAAA;AAAA,QAAG,GAAA;AAAA,QAAK,EAAA;AAAA,QAAI,CAAA;AAAA,QAAG,GAAA;AAAA,QAAK,EAAA;AAAA,QAAI,EAAA;AAAA,QAAI,GAAA;AAAA,QAAK,GAAA;AAAA,QAAK,EAAA;AAAA,QAAI,CAAA;AAAA,QAAG,GAAA;AAAA,QAAK,EAAA;AAAA,QAAI,CAAA;AAAA,QAAG,GAAA;AAAA,QAAK,EAAA;AAAA,QAAI,EAAA;AAAA,QAAI,GAAA;AAAA,QAAK,GAAA;AAAA,QAAK,GAAA;AAAA,QAAK,EAAA;AAAA,QAAI,CAAA;AAAA,QAAG,EAAA;AAAA,QAAI,EAAA;AAAA,QAAI,GAAA;AAAA,QAAK,GAAA;AAAA,QAAK,EAAA;AAAA,QAAI,CAAA;AAAA,QAAG,EAAA;AAAA,QAAI,CAAA;AAAA,QAAG,GAAA;AAAA,QAAK,EAAA;AAAA,QAAI,EAAA;AAAA,QAAI,CAAA;AAAA,QAAG,CAAA;AAAA,QAAG,GAAA;AAAA,QAAK,EAAA;AAAA,QAAI,CAAA;AAAA,QAAG,GAAA;AAAA,QAAK,EAAA;AAAA,QAAI,CAAA;AAAA,QAAG,GAAA;AAAA,QAAK,EAAA;AAAA,QAAI,EAAA;AAAA,QAAI,GAAA;AAAA,QAAK,GAAA;AAAA,QAAK,EAAA;AAAA,QAAI,CAAA;AAAA,QAAG,GAAA;AAAA,QAAK,EAAA;AAAA,QAAI,CAAA;AAAA,QAAG,GAAA;AAAA,QAAK,EAAA;AAAA,QAAI,EAAA;AAAA,QAAI,GAAA;AAAA,QAAK,GAAA;AAAA,QAAK,GAAA;AAAA,QAAK,EAAA;AAAA,QAAI,CAAA;AAAA,QAAG,EAAA;AAAA,QAAI,EAAA;AAAA,QAAI,GAAA;AAAA,QAAK,GAAA;AAAA,QAAK,EAAA;AAAA,QAAI,CAAA;AAAA,QAAG,EAAA;AAAA,QAAI,CAAA;AAAA,QAAG,GAAA;AAAA,QAAK,EAAA;AAAA,QAAI,EAAA;AAAA,QAAI,CAAA;AAAA,QAAG,CAAA;AAAA,QAAG,GAAA;AAAA,QAAK,EAAA;AAAA,QAAI,CAAA;AAAA,QAAG,GAAA;AAAA,QAAK,EAAA;AAAA,QAAI,CAAA;AAAA,QAAG,GAAA;AAAA,QAAK,EAAA;AAAA,QAAI,EAAA;AAAA,QAAI,GAAA;AAAA,QAAK,GAAA;AAAA,QAAK,EAAA;AAAA,QAAI,CAAA;AAAA,QAAG,GAAA;AAAA,QAAK,EAAA;AAAA,QAAI,CAAA;AAAA,QAAG,GAAA;AAAA,QAAK,EAAA;AAAA,QAAI,EAAA;AAAA,QAAI,GAAA;AAAA,QAAK,GAAA;AAAA,QAAK,GAAA;AAAA,QAAK,EAAA;AAAA,QAAI,CAAA;AAAA,QAAG,EAAA;AAAA,QAAI,EAAA;AAAA,QAAI,GAAA;AAAA,QAAK,GAAA;AAAA,QAAK,EAAA;AAAA,QAAI,CAAA;AAAA,QAAG,EAAA;AAAA,QAAI,CAAA;AAAA,QAAG,GAAA;AAAA,QAAK,EAAA;AAAA,QAAI,EAAA;AAAA,QAAI,CAAA;AAAA,QAAG,CAAA;AAAA,QAAG,GAAA;AAAA,QAAK,EAAA;AAAA,QAAI,CAAA;AAAA,QAAG,GAAA;AAAA,QAAK,EAAA;AAAA,QAAI,CAAA;AAAA,QAAG,GAAA;AAAA,QAAK,EAAA;AAAA,QAAI,EAAA;AAAA,QAAI,GAAA;AAAA,QAAK,GAAA;AAAA,QAAK,EAAA;AAAA,QAAI,CAAA;AAAA,QAAG,GAAA;AAAA,QAAK,EAAA;AAAA,QAAI,CAAA;AAAA,QAAG,GAAA;AAAA,QAAK,EAAA;AAAA,QAAI,EAAA;AAAA,QAAI,GAAA;AAAA,QAAK,GAAA;AAAA,QAAK,GAAA;AAAA,QAAK,EAAA;AAAA,QAAI,CAAA;AAAA,QAAG,EAAA;AAAA,QAAI,EAAA;AAAA,QAAI,GAAA;AAAA,QAAK,GAAA;AAAA,QAAK,EAAA;AAAA,QAAI,CAAA;AAAA,QAAG,EAAA;AAAA,QAAI,CAAA;AAAA,QAAG,GAAA;AAAA,QAAK,EAAA;AAAA,QAAI,EAAA;AAAA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","file":"index.cjs","sourcesContent":[null,"import OrderedMap from 'orderedmap';\n\nfunction findDiffStart(a, b, pos) {\n    for (let i = 0;; i++) {\n        if (i == a.childCount || i == b.childCount)\n            return a.childCount == b.childCount ? null : pos;\n        let childA = a.child(i), childB = b.child(i);\n        if (childA == childB) {\n            pos += childA.nodeSize;\n            continue;\n        }\n        if (!childA.sameMarkup(childB))\n            return pos;\n        if (childA.isText && childA.text != childB.text) {\n            for (let j = 0; childA.text[j] == childB.text[j]; j++)\n                pos++;\n            return pos;\n        }\n        if (childA.content.size || childB.content.size) {\n            let inner = findDiffStart(childA.content, childB.content, pos + 1);\n            if (inner != null)\n                return inner;\n        }\n        pos += childA.nodeSize;\n    }\n}\nfunction findDiffEnd(a, b, posA, posB) {\n    for (let iA = a.childCount, iB = b.childCount;;) {\n        if (iA == 0 || iB == 0)\n            return iA == iB ? null : { a: posA, b: posB };\n        let childA = a.child(--iA), childB = b.child(--iB), size = childA.nodeSize;\n        if (childA == childB) {\n            posA -= size;\n            posB -= size;\n            continue;\n        }\n        if (!childA.sameMarkup(childB))\n            return { a: posA, b: posB };\n        if (childA.isText && childA.text != childB.text) {\n            let same = 0, minSize = Math.min(childA.text.length, childB.text.length);\n            while (same < minSize && childA.text[childA.text.length - same - 1] == childB.text[childB.text.length - same - 1]) {\n                same++;\n                posA--;\n                posB--;\n            }\n            return { a: posA, b: posB };\n        }\n        if (childA.content.size || childB.content.size) {\n            let inner = findDiffEnd(childA.content, childB.content, posA - 1, posB - 1);\n            if (inner)\n                return inner;\n        }\n        posA -= size;\n        posB -= size;\n    }\n}\n\n/**\nA fragment represents a node's collection of child nodes.\n\nLike nodes, fragments are persistent data structures, and you\nshould not mutate them or their content. Rather, you create new\ninstances whenever needed. The API tries to make this easy.\n*/\nclass Fragment {\n    /**\n    @internal\n    */\n    constructor(\n    /**\n    The child nodes in this fragment.\n    */\n    content, size) {\n        this.content = content;\n        this.size = size || 0;\n        if (size == null)\n            for (let i = 0; i < content.length; i++)\n                this.size += content[i].nodeSize;\n    }\n    /**\n    Invoke a callback for all descendant nodes between the given two\n    positions (relative to start of this fragment). Doesn't descend\n    into a node when the callback returns `false`.\n    */\n    nodesBetween(from, to, f, nodeStart = 0, parent) {\n        for (let i = 0, pos = 0; pos < to; i++) {\n            let child = this.content[i], end = pos + child.nodeSize;\n            if (end > from && f(child, nodeStart + pos, parent || null, i) !== false && child.content.size) {\n                let start = pos + 1;\n                child.nodesBetween(Math.max(0, from - start), Math.min(child.content.size, to - start), f, nodeStart + start);\n            }\n            pos = end;\n        }\n    }\n    /**\n    Call the given callback for every descendant node. `pos` will be\n    relative to the start of the fragment. The callback may return\n    `false` to prevent traversal of a given node's children.\n    */\n    descendants(f) {\n        this.nodesBetween(0, this.size, f);\n    }\n    /**\n    Extract the text between `from` and `to`. See the same method on\n    [`Node`](https://prosemirror.net/docs/ref/#model.Node.textBetween).\n    */\n    textBetween(from, to, blockSeparator, leafText) {\n        let text = \"\", first = true;\n        this.nodesBetween(from, to, (node, pos) => {\n            let nodeText = node.isText ? node.text.slice(Math.max(from, pos) - pos, to - pos)\n                : !node.isLeaf ? \"\"\n                    : leafText ? (typeof leafText === \"function\" ? leafText(node) : leafText)\n                        : node.type.spec.leafText ? node.type.spec.leafText(node)\n                            : \"\";\n            if (node.isBlock && (node.isLeaf && nodeText || node.isTextblock) && blockSeparator) {\n                if (first)\n                    first = false;\n                else\n                    text += blockSeparator;\n            }\n            text += nodeText;\n        }, 0);\n        return text;\n    }\n    /**\n    Create a new fragment containing the combined content of this\n    fragment and the other.\n    */\n    append(other) {\n        if (!other.size)\n            return this;\n        if (!this.size)\n            return other;\n        let last = this.lastChild, first = other.firstChild, content = this.content.slice(), i = 0;\n        if (last.isText && last.sameMarkup(first)) {\n            content[content.length - 1] = last.withText(last.text + first.text);\n            i = 1;\n        }\n        for (; i < other.content.length; i++)\n            content.push(other.content[i]);\n        return new Fragment(content, this.size + other.size);\n    }\n    /**\n    Cut out the sub-fragment between the two given positions.\n    */\n    cut(from, to = this.size) {\n        if (from == 0 && to == this.size)\n            return this;\n        let result = [], size = 0;\n        if (to > from)\n            for (let i = 0, pos = 0; pos < to; i++) {\n                let child = this.content[i], end = pos + child.nodeSize;\n                if (end > from) {\n                    if (pos < from || end > to) {\n                        if (child.isText)\n                            child = child.cut(Math.max(0, from - pos), Math.min(child.text.length, to - pos));\n                        else\n                            child = child.cut(Math.max(0, from - pos - 1), Math.min(child.content.size, to - pos - 1));\n                    }\n                    result.push(child);\n                    size += child.nodeSize;\n                }\n                pos = end;\n            }\n        return new Fragment(result, size);\n    }\n    /**\n    @internal\n    */\n    cutByIndex(from, to) {\n        if (from == to)\n            return Fragment.empty;\n        if (from == 0 && to == this.content.length)\n            return this;\n        return new Fragment(this.content.slice(from, to));\n    }\n    /**\n    Create a new fragment in which the node at the given index is\n    replaced by the given node.\n    */\n    replaceChild(index, node) {\n        let current = this.content[index];\n        if (current == node)\n            return this;\n        let copy = this.content.slice();\n        let size = this.size + node.nodeSize - current.nodeSize;\n        copy[index] = node;\n        return new Fragment(copy, size);\n    }\n    /**\n    Create a new fragment by prepending the given node to this\n    fragment.\n    */\n    addToStart(node) {\n        return new Fragment([node].concat(this.content), this.size + node.nodeSize);\n    }\n    /**\n    Create a new fragment by appending the given node to this\n    fragment.\n    */\n    addToEnd(node) {\n        return new Fragment(this.content.concat(node), this.size + node.nodeSize);\n    }\n    /**\n    Compare this fragment to another one.\n    */\n    eq(other) {\n        if (this.content.length != other.content.length)\n            return false;\n        for (let i = 0; i < this.content.length; i++)\n            if (!this.content[i].eq(other.content[i]))\n                return false;\n        return true;\n    }\n    /**\n    The first child of the fragment, or `null` if it is empty.\n    */\n    get firstChild() { return this.content.length ? this.content[0] : null; }\n    /**\n    The last child of the fragment, or `null` if it is empty.\n    */\n    get lastChild() { return this.content.length ? this.content[this.content.length - 1] : null; }\n    /**\n    The number of child nodes in this fragment.\n    */\n    get childCount() { return this.content.length; }\n    /**\n    Get the child node at the given index. Raise an error when the\n    index is out of range.\n    */\n    child(index) {\n        let found = this.content[index];\n        if (!found)\n            throw new RangeError(\"Index \" + index + \" out of range for \" + this);\n        return found;\n    }\n    /**\n    Get the child node at the given index, if it exists.\n    */\n    maybeChild(index) {\n        return this.content[index] || null;\n    }\n    /**\n    Call `f` for every child node, passing the node, its offset\n    into this parent node, and its index.\n    */\n    forEach(f) {\n        for (let i = 0, p = 0; i < this.content.length; i++) {\n            let child = this.content[i];\n            f(child, p, i);\n            p += child.nodeSize;\n        }\n    }\n    /**\n    Find the first position at which this fragment and another\n    fragment differ, or `null` if they are the same.\n    */\n    findDiffStart(other, pos = 0) {\n        return findDiffStart(this, other, pos);\n    }\n    /**\n    Find the first position, searching from the end, at which this\n    fragment and the given fragment differ, or `null` if they are\n    the same. Since this position will not be the same in both\n    nodes, an object with two separate positions is returned.\n    */\n    findDiffEnd(other, pos = this.size, otherPos = other.size) {\n        return findDiffEnd(this, other, pos, otherPos);\n    }\n    /**\n    Find the index and inner offset corresponding to a given relative\n    position in this fragment. The result object will be reused\n    (overwritten) the next time the function is called. @internal\n    */\n    findIndex(pos) {\n        if (pos == 0)\n            return retIndex(0, pos);\n        if (pos == this.size)\n            return retIndex(this.content.length, pos);\n        if (pos > this.size || pos < 0)\n            throw new RangeError(`Position ${pos} outside of fragment (${this})`);\n        for (let i = 0, curPos = 0;; i++) {\n            let cur = this.child(i), end = curPos + cur.nodeSize;\n            if (end >= pos) {\n                if (end == pos)\n                    return retIndex(i + 1, end);\n                return retIndex(i, curPos);\n            }\n            curPos = end;\n        }\n    }\n    /**\n    Return a debugging string that describes this fragment.\n    */\n    toString() { return \"<\" + this.toStringInner() + \">\"; }\n    /**\n    @internal\n    */\n    toStringInner() { return this.content.join(\", \"); }\n    /**\n    Create a JSON-serializeable representation of this fragment.\n    */\n    toJSON() {\n        return this.content.length ? this.content.map(n => n.toJSON()) : null;\n    }\n    /**\n    Deserialize a fragment from its JSON representation.\n    */\n    static fromJSON(schema, value) {\n        if (!value)\n            return Fragment.empty;\n        if (!Array.isArray(value))\n            throw new RangeError(\"Invalid input for Fragment.fromJSON\");\n        return new Fragment(value.map(schema.nodeFromJSON));\n    }\n    /**\n    Build a fragment from an array of nodes. Ensures that adjacent\n    text nodes with the same marks are joined together.\n    */\n    static fromArray(array) {\n        if (!array.length)\n            return Fragment.empty;\n        let joined, size = 0;\n        for (let i = 0; i < array.length; i++) {\n            let node = array[i];\n            size += node.nodeSize;\n            if (i && node.isText && array[i - 1].sameMarkup(node)) {\n                if (!joined)\n                    joined = array.slice(0, i);\n                joined[joined.length - 1] = node\n                    .withText(joined[joined.length - 1].text + node.text);\n            }\n            else if (joined) {\n                joined.push(node);\n            }\n        }\n        return new Fragment(joined || array, size);\n    }\n    /**\n    Create a fragment from something that can be interpreted as a\n    set of nodes. For `null`, it returns the empty fragment. For a\n    fragment, the fragment itself. For a node or array of nodes, a\n    fragment containing those nodes.\n    */\n    static from(nodes) {\n        if (!nodes)\n            return Fragment.empty;\n        if (nodes instanceof Fragment)\n            return nodes;\n        if (Array.isArray(nodes))\n            return this.fromArray(nodes);\n        if (nodes.attrs)\n            return new Fragment([nodes], nodes.nodeSize);\n        throw new RangeError(\"Can not convert \" + nodes + \" to a Fragment\" +\n            (nodes.nodesBetween ? \" (looks like multiple versions of prosemirror-model were loaded)\" : \"\"));\n    }\n}\n/**\nAn empty fragment. Intended to be reused whenever a node doesn't\ncontain anything (rather than allocating a new empty fragment for\neach leaf node).\n*/\nFragment.empty = new Fragment([], 0);\nconst found = { index: 0, offset: 0 };\nfunction retIndex(index, offset) {\n    found.index = index;\n    found.offset = offset;\n    return found;\n}\n\nfunction compareDeep(a, b) {\n    if (a === b)\n        return true;\n    if (!(a && typeof a == \"object\") ||\n        !(b && typeof b == \"object\"))\n        return false;\n    let array = Array.isArray(a);\n    if (Array.isArray(b) != array)\n        return false;\n    if (array) {\n        if (a.length != b.length)\n            return false;\n        for (let i = 0; i < a.length; i++)\n            if (!compareDeep(a[i], b[i]))\n                return false;\n    }\n    else {\n        for (let p in a)\n            if (!(p in b) || !compareDeep(a[p], b[p]))\n                return false;\n        for (let p in b)\n            if (!(p in a))\n                return false;\n    }\n    return true;\n}\n\n/**\nA mark is a piece of information that can be attached to a node,\nsuch as it being emphasized, in code font, or a link. It has a\ntype and optionally a set of attributes that provide further\ninformation (such as the target of the link). Marks are created\nthrough a `Schema`, which controls which types exist and which\nattributes they have.\n*/\nclass Mark {\n    /**\n    @internal\n    */\n    constructor(\n    /**\n    The type of this mark.\n    */\n    type, \n    /**\n    The attributes associated with this mark.\n    */\n    attrs) {\n        this.type = type;\n        this.attrs = attrs;\n    }\n    /**\n    Given a set of marks, create a new set which contains this one as\n    well, in the right position. If this mark is already in the set,\n    the set itself is returned. If any marks that are set to be\n    [exclusive](https://prosemirror.net/docs/ref/#model.MarkSpec.excludes) with this mark are present,\n    those are replaced by this one.\n    */\n    addToSet(set) {\n        let copy, placed = false;\n        for (let i = 0; i < set.length; i++) {\n            let other = set[i];\n            if (this.eq(other))\n                return set;\n            if (this.type.excludes(other.type)) {\n                if (!copy)\n                    copy = set.slice(0, i);\n            }\n            else if (other.type.excludes(this.type)) {\n                return set;\n            }\n            else {\n                if (!placed && other.type.rank > this.type.rank) {\n                    if (!copy)\n                        copy = set.slice(0, i);\n                    copy.push(this);\n                    placed = true;\n                }\n                if (copy)\n                    copy.push(other);\n            }\n        }\n        if (!copy)\n            copy = set.slice();\n        if (!placed)\n            copy.push(this);\n        return copy;\n    }\n    /**\n    Remove this mark from the given set, returning a new set. If this\n    mark is not in the set, the set itself is returned.\n    */\n    removeFromSet(set) {\n        for (let i = 0; i < set.length; i++)\n            if (this.eq(set[i]))\n                return set.slice(0, i).concat(set.slice(i + 1));\n        return set;\n    }\n    /**\n    Test whether this mark is in the given set of marks.\n    */\n    isInSet(set) {\n        for (let i = 0; i < set.length; i++)\n            if (this.eq(set[i]))\n                return true;\n        return false;\n    }\n    /**\n    Test whether this mark has the same type and attributes as\n    another mark.\n    */\n    eq(other) {\n        return this == other ||\n            (this.type == other.type && compareDeep(this.attrs, other.attrs));\n    }\n    /**\n    Convert this mark to a JSON-serializeable representation.\n    */\n    toJSON() {\n        let obj = { type: this.type.name };\n        for (let _ in this.attrs) {\n            obj.attrs = this.attrs;\n            break;\n        }\n        return obj;\n    }\n    /**\n    Deserialize a mark from JSON.\n    */\n    static fromJSON(schema, json) {\n        if (!json)\n            throw new RangeError(\"Invalid input for Mark.fromJSON\");\n        let type = schema.marks[json.type];\n        if (!type)\n            throw new RangeError(`There is no mark type ${json.type} in this schema`);\n        let mark = type.create(json.attrs);\n        type.checkAttrs(mark.attrs);\n        return mark;\n    }\n    /**\n    Test whether two sets of marks are identical.\n    */\n    static sameSet(a, b) {\n        if (a == b)\n            return true;\n        if (a.length != b.length)\n            return false;\n        for (let i = 0; i < a.length; i++)\n            if (!a[i].eq(b[i]))\n                return false;\n        return true;\n    }\n    /**\n    Create a properly sorted mark set from null, a single mark, or an\n    unsorted array of marks.\n    */\n    static setFrom(marks) {\n        if (!marks || Array.isArray(marks) && marks.length == 0)\n            return Mark.none;\n        if (marks instanceof Mark)\n            return [marks];\n        let copy = marks.slice();\n        copy.sort((a, b) => a.type.rank - b.type.rank);\n        return copy;\n    }\n}\n/**\nThe empty set of marks.\n*/\nMark.none = [];\n\n/**\nError type raised by [`Node.replace`](https://prosemirror.net/docs/ref/#model.Node.replace) when\ngiven an invalid replacement.\n*/\nclass ReplaceError extends Error {\n}\n/*\nReplaceError = function(this: any, message: string) {\n  let err = Error.call(this, message)\n  ;(err as any).__proto__ = ReplaceError.prototype\n  return err\n} as any\n\nReplaceError.prototype = Object.create(Error.prototype)\nReplaceError.prototype.constructor = ReplaceError\nReplaceError.prototype.name = \"ReplaceError\"\n*/\n/**\nA slice represents a piece cut out of a larger document. It\nstores not only a fragment, but also the depth up to which nodes on\nboth side are ‘open’ (cut through).\n*/\nclass Slice {\n    /**\n    Create a slice. When specifying a non-zero open depth, you must\n    make sure that there are nodes of at least that depth at the\n    appropriate side of the fragment—i.e. if the fragment is an\n    empty paragraph node, `openStart` and `openEnd` can't be greater\n    than 1.\n    \n    It is not necessary for the content of open nodes to conform to\n    the schema's content constraints, though it should be a valid\n    start/end/middle for such a node, depending on which sides are\n    open.\n    */\n    constructor(\n    /**\n    The slice's content.\n    */\n    content, \n    /**\n    The open depth at the start of the fragment.\n    */\n    openStart, \n    /**\n    The open depth at the end.\n    */\n    openEnd) {\n        this.content = content;\n        this.openStart = openStart;\n        this.openEnd = openEnd;\n    }\n    /**\n    The size this slice would add when inserted into a document.\n    */\n    get size() {\n        return this.content.size - this.openStart - this.openEnd;\n    }\n    /**\n    @internal\n    */\n    insertAt(pos, fragment) {\n        let content = insertInto(this.content, pos + this.openStart, fragment);\n        return content && new Slice(content, this.openStart, this.openEnd);\n    }\n    /**\n    @internal\n    */\n    removeBetween(from, to) {\n        return new Slice(removeRange(this.content, from + this.openStart, to + this.openStart), this.openStart, this.openEnd);\n    }\n    /**\n    Tests whether this slice is equal to another slice.\n    */\n    eq(other) {\n        return this.content.eq(other.content) && this.openStart == other.openStart && this.openEnd == other.openEnd;\n    }\n    /**\n    @internal\n    */\n    toString() {\n        return this.content + \"(\" + this.openStart + \",\" + this.openEnd + \")\";\n    }\n    /**\n    Convert a slice to a JSON-serializable representation.\n    */\n    toJSON() {\n        if (!this.content.size)\n            return null;\n        let json = { content: this.content.toJSON() };\n        if (this.openStart > 0)\n            json.openStart = this.openStart;\n        if (this.openEnd > 0)\n            json.openEnd = this.openEnd;\n        return json;\n    }\n    /**\n    Deserialize a slice from its JSON representation.\n    */\n    static fromJSON(schema, json) {\n        if (!json)\n            return Slice.empty;\n        let openStart = json.openStart || 0, openEnd = json.openEnd || 0;\n        if (typeof openStart != \"number\" || typeof openEnd != \"number\")\n            throw new RangeError(\"Invalid input for Slice.fromJSON\");\n        return new Slice(Fragment.fromJSON(schema, json.content), openStart, openEnd);\n    }\n    /**\n    Create a slice from a fragment by taking the maximum possible\n    open value on both side of the fragment.\n    */\n    static maxOpen(fragment, openIsolating = true) {\n        let openStart = 0, openEnd = 0;\n        for (let n = fragment.firstChild; n && !n.isLeaf && (openIsolating || !n.type.spec.isolating); n = n.firstChild)\n            openStart++;\n        for (let n = fragment.lastChild; n && !n.isLeaf && (openIsolating || !n.type.spec.isolating); n = n.lastChild)\n            openEnd++;\n        return new Slice(fragment, openStart, openEnd);\n    }\n}\n/**\nThe empty slice.\n*/\nSlice.empty = new Slice(Fragment.empty, 0, 0);\nfunction removeRange(content, from, to) {\n    let { index, offset } = content.findIndex(from), child = content.maybeChild(index);\n    let { index: indexTo, offset: offsetTo } = content.findIndex(to);\n    if (offset == from || child.isText) {\n        if (offsetTo != to && !content.child(indexTo).isText)\n            throw new RangeError(\"Removing non-flat range\");\n        return content.cut(0, from).append(content.cut(to));\n    }\n    if (index != indexTo)\n        throw new RangeError(\"Removing non-flat range\");\n    return content.replaceChild(index, child.copy(removeRange(child.content, from - offset - 1, to - offset - 1)));\n}\nfunction insertInto(content, dist, insert, parent) {\n    let { index, offset } = content.findIndex(dist), child = content.maybeChild(index);\n    if (offset == dist || child.isText) {\n        if (parent && !parent.canReplace(index, index, insert))\n            return null;\n        return content.cut(0, dist).append(insert).append(content.cut(dist));\n    }\n    let inner = insertInto(child.content, dist - offset - 1, insert, child);\n    return inner && content.replaceChild(index, child.copy(inner));\n}\nfunction replace($from, $to, slice) {\n    if (slice.openStart > $from.depth)\n        throw new ReplaceError(\"Inserted content deeper than insertion position\");\n    if ($from.depth - slice.openStart != $to.depth - slice.openEnd)\n        throw new ReplaceError(\"Inconsistent open depths\");\n    return replaceOuter($from, $to, slice, 0);\n}\nfunction replaceOuter($from, $to, slice, depth) {\n    let index = $from.index(depth), node = $from.node(depth);\n    if (index == $to.index(depth) && depth < $from.depth - slice.openStart) {\n        let inner = replaceOuter($from, $to, slice, depth + 1);\n        return node.copy(node.content.replaceChild(index, inner));\n    }\n    else if (!slice.content.size) {\n        return close(node, replaceTwoWay($from, $to, depth));\n    }\n    else if (!slice.openStart && !slice.openEnd && $from.depth == depth && $to.depth == depth) { // Simple, flat case\n        let parent = $from.parent, content = parent.content;\n        return close(parent, content.cut(0, $from.parentOffset).append(slice.content).append(content.cut($to.parentOffset)));\n    }\n    else {\n        let { start, end } = prepareSliceForReplace(slice, $from);\n        return close(node, replaceThreeWay($from, start, end, $to, depth));\n    }\n}\nfunction checkJoin(main, sub) {\n    if (!sub.type.compatibleContent(main.type))\n        throw new ReplaceError(\"Cannot join \" + sub.type.name + \" onto \" + main.type.name);\n}\nfunction joinable($before, $after, depth) {\n    let node = $before.node(depth);\n    checkJoin(node, $after.node(depth));\n    return node;\n}\nfunction addNode(child, target) {\n    let last = target.length - 1;\n    if (last >= 0 && child.isText && child.sameMarkup(target[last]))\n        target[last] = child.withText(target[last].text + child.text);\n    else\n        target.push(child);\n}\nfunction addRange($start, $end, depth, target) {\n    let node = ($end || $start).node(depth);\n    let startIndex = 0, endIndex = $end ? $end.index(depth) : node.childCount;\n    if ($start) {\n        startIndex = $start.index(depth);\n        if ($start.depth > depth) {\n            startIndex++;\n        }\n        else if ($start.textOffset) {\n            addNode($start.nodeAfter, target);\n            startIndex++;\n        }\n    }\n    for (let i = startIndex; i < endIndex; i++)\n        addNode(node.child(i), target);\n    if ($end && $end.depth == depth && $end.textOffset)\n        addNode($end.nodeBefore, target);\n}\nfunction close(node, content) {\n    node.type.checkContent(content);\n    return node.copy(content);\n}\nfunction replaceThreeWay($from, $start, $end, $to, depth) {\n    let openStart = $from.depth > depth && joinable($from, $start, depth + 1);\n    let openEnd = $to.depth > depth && joinable($end, $to, depth + 1);\n    let content = [];\n    addRange(null, $from, depth, content);\n    if (openStart && openEnd && $start.index(depth) == $end.index(depth)) {\n        checkJoin(openStart, openEnd);\n        addNode(close(openStart, replaceThreeWay($from, $start, $end, $to, depth + 1)), content);\n    }\n    else {\n        if (openStart)\n            addNode(close(openStart, replaceTwoWay($from, $start, depth + 1)), content);\n        addRange($start, $end, depth, content);\n        if (openEnd)\n            addNode(close(openEnd, replaceTwoWay($end, $to, depth + 1)), content);\n    }\n    addRange($to, null, depth, content);\n    return new Fragment(content);\n}\nfunction replaceTwoWay($from, $to, depth) {\n    let content = [];\n    addRange(null, $from, depth, content);\n    if ($from.depth > depth) {\n        let type = joinable($from, $to, depth + 1);\n        addNode(close(type, replaceTwoWay($from, $to, depth + 1)), content);\n    }\n    addRange($to, null, depth, content);\n    return new Fragment(content);\n}\nfunction prepareSliceForReplace(slice, $along) {\n    let extra = $along.depth - slice.openStart, parent = $along.node(extra);\n    let node = parent.copy(slice.content);\n    for (let i = extra - 1; i >= 0; i--)\n        node = $along.node(i).copy(Fragment.from(node));\n    return { start: node.resolveNoCache(slice.openStart + extra),\n        end: node.resolveNoCache(node.content.size - slice.openEnd - extra) };\n}\n\n/**\nYou can [_resolve_](https://prosemirror.net/docs/ref/#model.Node.resolve) a position to get more\ninformation about it. Objects of this class represent such a\nresolved position, providing various pieces of context\ninformation, and some helper methods.\n\nThroughout this interface, methods that take an optional `depth`\nparameter will interpret undefined as `this.depth` and negative\nnumbers as `this.depth + value`.\n*/\nclass ResolvedPos {\n    /**\n    @internal\n    */\n    constructor(\n    /**\n    The position that was resolved.\n    */\n    pos, \n    /**\n    @internal\n    */\n    path, \n    /**\n    The offset this position has into its parent node.\n    */\n    parentOffset) {\n        this.pos = pos;\n        this.path = path;\n        this.parentOffset = parentOffset;\n        this.depth = path.length / 3 - 1;\n    }\n    /**\n    @internal\n    */\n    resolveDepth(val) {\n        if (val == null)\n            return this.depth;\n        if (val < 0)\n            return this.depth + val;\n        return val;\n    }\n    /**\n    The parent node that the position points into. Note that even if\n    a position points into a text node, that node is not considered\n    the parent—text nodes are ‘flat’ in this model, and have no content.\n    */\n    get parent() { return this.node(this.depth); }\n    /**\n    The root node in which the position was resolved.\n    */\n    get doc() { return this.node(0); }\n    /**\n    The ancestor node at the given level. `p.node(p.depth)` is the\n    same as `p.parent`.\n    */\n    node(depth) { return this.path[this.resolveDepth(depth) * 3]; }\n    /**\n    The index into the ancestor at the given level. If this points\n    at the 3rd node in the 2nd paragraph on the top level, for\n    example, `p.index(0)` is 1 and `p.index(1)` is 2.\n    */\n    index(depth) { return this.path[this.resolveDepth(depth) * 3 + 1]; }\n    /**\n    The index pointing after this position into the ancestor at the\n    given level.\n    */\n    indexAfter(depth) {\n        depth = this.resolveDepth(depth);\n        return this.index(depth) + (depth == this.depth && !this.textOffset ? 0 : 1);\n    }\n    /**\n    The (absolute) position at the start of the node at the given\n    level.\n    */\n    start(depth) {\n        depth = this.resolveDepth(depth);\n        return depth == 0 ? 0 : this.path[depth * 3 - 1] + 1;\n    }\n    /**\n    The (absolute) position at the end of the node at the given\n    level.\n    */\n    end(depth) {\n        depth = this.resolveDepth(depth);\n        return this.start(depth) + this.node(depth).content.size;\n    }\n    /**\n    The (absolute) position directly before the wrapping node at the\n    given level, or, when `depth` is `this.depth + 1`, the original\n    position.\n    */\n    before(depth) {\n        depth = this.resolveDepth(depth);\n        if (!depth)\n            throw new RangeError(\"There is no position before the top-level node\");\n        return depth == this.depth + 1 ? this.pos : this.path[depth * 3 - 1];\n    }\n    /**\n    The (absolute) position directly after the wrapping node at the\n    given level, or the original position when `depth` is `this.depth + 1`.\n    */\n    after(depth) {\n        depth = this.resolveDepth(depth);\n        if (!depth)\n            throw new RangeError(\"There is no position after the top-level node\");\n        return depth == this.depth + 1 ? this.pos : this.path[depth * 3 - 1] + this.path[depth * 3].nodeSize;\n    }\n    /**\n    When this position points into a text node, this returns the\n    distance between the position and the start of the text node.\n    Will be zero for positions that point between nodes.\n    */\n    get textOffset() { return this.pos - this.path[this.path.length - 1]; }\n    /**\n    Get the node directly after the position, if any. If the position\n    points into a text node, only the part of that node after the\n    position is returned.\n    */\n    get nodeAfter() {\n        let parent = this.parent, index = this.index(this.depth);\n        if (index == parent.childCount)\n            return null;\n        let dOff = this.pos - this.path[this.path.length - 1], child = parent.child(index);\n        return dOff ? parent.child(index).cut(dOff) : child;\n    }\n    /**\n    Get the node directly before the position, if any. If the\n    position points into a text node, only the part of that node\n    before the position is returned.\n    */\n    get nodeBefore() {\n        let index = this.index(this.depth);\n        let dOff = this.pos - this.path[this.path.length - 1];\n        if (dOff)\n            return this.parent.child(index).cut(0, dOff);\n        return index == 0 ? null : this.parent.child(index - 1);\n    }\n    /**\n    Get the position at the given index in the parent node at the\n    given depth (which defaults to `this.depth`).\n    */\n    posAtIndex(index, depth) {\n        depth = this.resolveDepth(depth);\n        let node = this.path[depth * 3], pos = depth == 0 ? 0 : this.path[depth * 3 - 1] + 1;\n        for (let i = 0; i < index; i++)\n            pos += node.child(i).nodeSize;\n        return pos;\n    }\n    /**\n    Get the marks at this position, factoring in the surrounding\n    marks' [`inclusive`](https://prosemirror.net/docs/ref/#model.MarkSpec.inclusive) property. If the\n    position is at the start of a non-empty node, the marks of the\n    node after it (if any) are returned.\n    */\n    marks() {\n        let parent = this.parent, index = this.index();\n        // In an empty parent, return the empty array\n        if (parent.content.size == 0)\n            return Mark.none;\n        // When inside a text node, just return the text node's marks\n        if (this.textOffset)\n            return parent.child(index).marks;\n        let main = parent.maybeChild(index - 1), other = parent.maybeChild(index);\n        // If the `after` flag is true of there is no node before, make\n        // the node after this position the main reference.\n        if (!main) {\n            let tmp = main;\n            main = other;\n            other = tmp;\n        }\n        // Use all marks in the main node, except those that have\n        // `inclusive` set to false and are not present in the other node.\n        let marks = main.marks;\n        for (var i = 0; i < marks.length; i++)\n            if (marks[i].type.spec.inclusive === false && (!other || !marks[i].isInSet(other.marks)))\n                marks = marks[i--].removeFromSet(marks);\n        return marks;\n    }\n    /**\n    Get the marks after the current position, if any, except those\n    that are non-inclusive and not present at position `$end`. This\n    is mostly useful for getting the set of marks to preserve after a\n    deletion. Will return `null` if this position is at the end of\n    its parent node or its parent node isn't a textblock (in which\n    case no marks should be preserved).\n    */\n    marksAcross($end) {\n        let after = this.parent.maybeChild(this.index());\n        if (!after || !after.isInline)\n            return null;\n        let marks = after.marks, next = $end.parent.maybeChild($end.index());\n        for (var i = 0; i < marks.length; i++)\n            if (marks[i].type.spec.inclusive === false && (!next || !marks[i].isInSet(next.marks)))\n                marks = marks[i--].removeFromSet(marks);\n        return marks;\n    }\n    /**\n    The depth up to which this position and the given (non-resolved)\n    position share the same parent nodes.\n    */\n    sharedDepth(pos) {\n        for (let depth = this.depth; depth > 0; depth--)\n            if (this.start(depth) <= pos && this.end(depth) >= pos)\n                return depth;\n        return 0;\n    }\n    /**\n    Returns a range based on the place where this position and the\n    given position diverge around block content. If both point into\n    the same textblock, for example, a range around that textblock\n    will be returned. If they point into different blocks, the range\n    around those blocks in their shared ancestor is returned. You can\n    pass in an optional predicate that will be called with a parent\n    node to see if a range into that parent is acceptable.\n    */\n    blockRange(other = this, pred) {\n        if (other.pos < this.pos)\n            return other.blockRange(this);\n        for (let d = this.depth - (this.parent.inlineContent || this.pos == other.pos ? 1 : 0); d >= 0; d--)\n            if (other.pos <= this.end(d) && (!pred || pred(this.node(d))))\n                return new NodeRange(this, other, d);\n        return null;\n    }\n    /**\n    Query whether the given position shares the same parent node.\n    */\n    sameParent(other) {\n        return this.pos - this.parentOffset == other.pos - other.parentOffset;\n    }\n    /**\n    Return the greater of this and the given position.\n    */\n    max(other) {\n        return other.pos > this.pos ? other : this;\n    }\n    /**\n    Return the smaller of this and the given position.\n    */\n    min(other) {\n        return other.pos < this.pos ? other : this;\n    }\n    /**\n    @internal\n    */\n    toString() {\n        let str = \"\";\n        for (let i = 1; i <= this.depth; i++)\n            str += (str ? \"/\" : \"\") + this.node(i).type.name + \"_\" + this.index(i - 1);\n        return str + \":\" + this.parentOffset;\n    }\n    /**\n    @internal\n    */\n    static resolve(doc, pos) {\n        if (!(pos >= 0 && pos <= doc.content.size))\n            throw new RangeError(\"Position \" + pos + \" out of range\");\n        let path = [];\n        let start = 0, parentOffset = pos;\n        for (let node = doc;;) {\n            let { index, offset } = node.content.findIndex(parentOffset);\n            let rem = parentOffset - offset;\n            path.push(node, index, start + offset);\n            if (!rem)\n                break;\n            node = node.child(index);\n            if (node.isText)\n                break;\n            parentOffset = rem - 1;\n            start += offset + 1;\n        }\n        return new ResolvedPos(pos, path, parentOffset);\n    }\n    /**\n    @internal\n    */\n    static resolveCached(doc, pos) {\n        let cache = resolveCache.get(doc);\n        if (cache) {\n            for (let i = 0; i < cache.elts.length; i++) {\n                let elt = cache.elts[i];\n                if (elt.pos == pos)\n                    return elt;\n            }\n        }\n        else {\n            resolveCache.set(doc, cache = new ResolveCache);\n        }\n        let result = cache.elts[cache.i] = ResolvedPos.resolve(doc, pos);\n        cache.i = (cache.i + 1) % resolveCacheSize;\n        return result;\n    }\n}\nclass ResolveCache {\n    constructor() {\n        this.elts = [];\n        this.i = 0;\n    }\n}\nconst resolveCacheSize = 12, resolveCache = new WeakMap();\n/**\nRepresents a flat range of content, i.e. one that starts and\nends in the same node.\n*/\nclass NodeRange {\n    /**\n    Construct a node range. `$from` and `$to` should point into the\n    same node until at least the given `depth`, since a node range\n    denotes an adjacent set of nodes in a single parent node.\n    */\n    constructor(\n    /**\n    A resolved position along the start of the content. May have a\n    `depth` greater than this object's `depth` property, since\n    these are the positions that were used to compute the range,\n    not re-resolved positions directly at its boundaries.\n    */\n    $from, \n    /**\n    A position along the end of the content. See\n    caveat for [`$from`](https://prosemirror.net/docs/ref/#model.NodeRange.$from).\n    */\n    $to, \n    /**\n    The depth of the node that this range points into.\n    */\n    depth) {\n        this.$from = $from;\n        this.$to = $to;\n        this.depth = depth;\n    }\n    /**\n    The position at the start of the range.\n    */\n    get start() { return this.$from.before(this.depth + 1); }\n    /**\n    The position at the end of the range.\n    */\n    get end() { return this.$to.after(this.depth + 1); }\n    /**\n    The parent node that the range points into.\n    */\n    get parent() { return this.$from.node(this.depth); }\n    /**\n    The start index of the range in the parent node.\n    */\n    get startIndex() { return this.$from.index(this.depth); }\n    /**\n    The end index of the range in the parent node.\n    */\n    get endIndex() { return this.$to.indexAfter(this.depth); }\n}\n\nconst emptyAttrs = Object.create(null);\n/**\nThis class represents a node in the tree that makes up a\nProseMirror document. So a document is an instance of `Node`, with\nchildren that are also instances of `Node`.\n\nNodes are persistent data structures. Instead of changing them, you\ncreate new ones with the content you want. Old ones keep pointing\nat the old document shape. This is made cheaper by sharing\nstructure between the old and new data as much as possible, which a\ntree shape like this (without back pointers) makes easy.\n\n**Do not** directly mutate the properties of a `Node` object. See\n[the guide](https://prosemirror.net/docs/guide/#doc) for more information.\n*/\nclass Node {\n    /**\n    @internal\n    */\n    constructor(\n    /**\n    The type of node that this is.\n    */\n    type, \n    /**\n    An object mapping attribute names to values. The kind of\n    attributes allowed and required are\n    [determined](https://prosemirror.net/docs/ref/#model.NodeSpec.attrs) by the node type.\n    */\n    attrs, \n    // A fragment holding the node's children.\n    content, \n    /**\n    The marks (things like whether it is emphasized or part of a\n    link) applied to this node.\n    */\n    marks = Mark.none) {\n        this.type = type;\n        this.attrs = attrs;\n        this.marks = marks;\n        this.content = content || Fragment.empty;\n    }\n    /**\n    The array of this node's child nodes.\n    */\n    get children() { return this.content.content; }\n    /**\n    The size of this node, as defined by the integer-based [indexing\n    scheme](https://prosemirror.net/docs/guide/#doc.indexing). For text nodes, this is the\n    amount of characters. For other leaf nodes, it is one. For\n    non-leaf nodes, it is the size of the content plus two (the\n    start and end token).\n    */\n    get nodeSize() { return this.isLeaf ? 1 : 2 + this.content.size; }\n    /**\n    The number of children that the node has.\n    */\n    get childCount() { return this.content.childCount; }\n    /**\n    Get the child node at the given index. Raises an error when the\n    index is out of range.\n    */\n    child(index) { return this.content.child(index); }\n    /**\n    Get the child node at the given index, if it exists.\n    */\n    maybeChild(index) { return this.content.maybeChild(index); }\n    /**\n    Call `f` for every child node, passing the node, its offset\n    into this parent node, and its index.\n    */\n    forEach(f) { this.content.forEach(f); }\n    /**\n    Invoke a callback for all descendant nodes recursively between\n    the given two positions that are relative to start of this\n    node's content. The callback is invoked with the node, its\n    position relative to the original node (method receiver),\n    its parent node, and its child index. When the callback returns\n    false for a given node, that node's children will not be\n    recursed over. The last parameter can be used to specify a\n    starting position to count from.\n    */\n    nodesBetween(from, to, f, startPos = 0) {\n        this.content.nodesBetween(from, to, f, startPos, this);\n    }\n    /**\n    Call the given callback for every descendant node. Doesn't\n    descend into a node when the callback returns `false`.\n    */\n    descendants(f) {\n        this.nodesBetween(0, this.content.size, f);\n    }\n    /**\n    Concatenates all the text nodes found in this fragment and its\n    children.\n    */\n    get textContent() {\n        return (this.isLeaf && this.type.spec.leafText)\n            ? this.type.spec.leafText(this)\n            : this.textBetween(0, this.content.size, \"\");\n    }\n    /**\n    Get all text between positions `from` and `to`. When\n    `blockSeparator` is given, it will be inserted to separate text\n    from different block nodes. If `leafText` is given, it'll be\n    inserted for every non-text leaf node encountered, otherwise\n    [`leafText`](https://prosemirror.net/docs/ref/#model.NodeSpec.leafText) will be used.\n    */\n    textBetween(from, to, blockSeparator, leafText) {\n        return this.content.textBetween(from, to, blockSeparator, leafText);\n    }\n    /**\n    Returns this node's first child, or `null` if there are no\n    children.\n    */\n    get firstChild() { return this.content.firstChild; }\n    /**\n    Returns this node's last child, or `null` if there are no\n    children.\n    */\n    get lastChild() { return this.content.lastChild; }\n    /**\n    Test whether two nodes represent the same piece of document.\n    */\n    eq(other) {\n        return this == other || (this.sameMarkup(other) && this.content.eq(other.content));\n    }\n    /**\n    Compare the markup (type, attributes, and marks) of this node to\n    those of another. Returns `true` if both have the same markup.\n    */\n    sameMarkup(other) {\n        return this.hasMarkup(other.type, other.attrs, other.marks);\n    }\n    /**\n    Check whether this node's markup correspond to the given type,\n    attributes, and marks.\n    */\n    hasMarkup(type, attrs, marks) {\n        return this.type == type &&\n            compareDeep(this.attrs, attrs || type.defaultAttrs || emptyAttrs) &&\n            Mark.sameSet(this.marks, marks || Mark.none);\n    }\n    /**\n    Create a new node with the same markup as this node, containing\n    the given content (or empty, if no content is given).\n    */\n    copy(content = null) {\n        if (content == this.content)\n            return this;\n        return new Node(this.type, this.attrs, content, this.marks);\n    }\n    /**\n    Create a copy of this node, with the given set of marks instead\n    of the node's own marks.\n    */\n    mark(marks) {\n        return marks == this.marks ? this : new Node(this.type, this.attrs, this.content, marks);\n    }\n    /**\n    Create a copy of this node with only the content between the\n    given positions. If `to` is not given, it defaults to the end of\n    the node.\n    */\n    cut(from, to = this.content.size) {\n        if (from == 0 && to == this.content.size)\n            return this;\n        return this.copy(this.content.cut(from, to));\n    }\n    /**\n    Cut out the part of the document between the given positions, and\n    return it as a `Slice` object.\n    */\n    slice(from, to = this.content.size, includeParents = false) {\n        if (from == to)\n            return Slice.empty;\n        let $from = this.resolve(from), $to = this.resolve(to);\n        let depth = includeParents ? 0 : $from.sharedDepth(to);\n        let start = $from.start(depth), node = $from.node(depth);\n        let content = node.content.cut($from.pos - start, $to.pos - start);\n        return new Slice(content, $from.depth - depth, $to.depth - depth);\n    }\n    /**\n    Replace the part of the document between the given positions with\n    the given slice. The slice must 'fit', meaning its open sides\n    must be able to connect to the surrounding content, and its\n    content nodes must be valid children for the node they are placed\n    into. If any of this is violated, an error of type\n    [`ReplaceError`](https://prosemirror.net/docs/ref/#model.ReplaceError) is thrown.\n    */\n    replace(from, to, slice) {\n        return replace(this.resolve(from), this.resolve(to), slice);\n    }\n    /**\n    Find the node directly after the given position.\n    */\n    nodeAt(pos) {\n        for (let node = this;;) {\n            let { index, offset } = node.content.findIndex(pos);\n            node = node.maybeChild(index);\n            if (!node)\n                return null;\n            if (offset == pos || node.isText)\n                return node;\n            pos -= offset + 1;\n        }\n    }\n    /**\n    Find the (direct) child node after the given offset, if any,\n    and return it along with its index and offset relative to this\n    node.\n    */\n    childAfter(pos) {\n        let { index, offset } = this.content.findIndex(pos);\n        return { node: this.content.maybeChild(index), index, offset };\n    }\n    /**\n    Find the (direct) child node before the given offset, if any,\n    and return it along with its index and offset relative to this\n    node.\n    */\n    childBefore(pos) {\n        if (pos == 0)\n            return { node: null, index: 0, offset: 0 };\n        let { index, offset } = this.content.findIndex(pos);\n        if (offset < pos)\n            return { node: this.content.child(index), index, offset };\n        let node = this.content.child(index - 1);\n        return { node, index: index - 1, offset: offset - node.nodeSize };\n    }\n    /**\n    Resolve the given position in the document, returning an\n    [object](https://prosemirror.net/docs/ref/#model.ResolvedPos) with information about its context.\n    */\n    resolve(pos) { return ResolvedPos.resolveCached(this, pos); }\n    /**\n    @internal\n    */\n    resolveNoCache(pos) { return ResolvedPos.resolve(this, pos); }\n    /**\n    Test whether a given mark or mark type occurs in this document\n    between the two given positions.\n    */\n    rangeHasMark(from, to, type) {\n        let found = false;\n        if (to > from)\n            this.nodesBetween(from, to, node => {\n                if (type.isInSet(node.marks))\n                    found = true;\n                return !found;\n            });\n        return found;\n    }\n    /**\n    True when this is a block (non-inline node)\n    */\n    get isBlock() { return this.type.isBlock; }\n    /**\n    True when this is a textblock node, a block node with inline\n    content.\n    */\n    get isTextblock() { return this.type.isTextblock; }\n    /**\n    True when this node allows inline content.\n    */\n    get inlineContent() { return this.type.inlineContent; }\n    /**\n    True when this is an inline node (a text node or a node that can\n    appear among text).\n    */\n    get isInline() { return this.type.isInline; }\n    /**\n    True when this is a text node.\n    */\n    get isText() { return this.type.isText; }\n    /**\n    True when this is a leaf node.\n    */\n    get isLeaf() { return this.type.isLeaf; }\n    /**\n    True when this is an atom, i.e. when it does not have directly\n    editable content. This is usually the same as `isLeaf`, but can\n    be configured with the [`atom` property](https://prosemirror.net/docs/ref/#model.NodeSpec.atom)\n    on a node's spec (typically used when the node is displayed as\n    an uneditable [node view](https://prosemirror.net/docs/ref/#view.NodeView)).\n    */\n    get isAtom() { return this.type.isAtom; }\n    /**\n    Return a string representation of this node for debugging\n    purposes.\n    */\n    toString() {\n        if (this.type.spec.toDebugString)\n            return this.type.spec.toDebugString(this);\n        let name = this.type.name;\n        if (this.content.size)\n            name += \"(\" + this.content.toStringInner() + \")\";\n        return wrapMarks(this.marks, name);\n    }\n    /**\n    Get the content match in this node at the given index.\n    */\n    contentMatchAt(index) {\n        let match = this.type.contentMatch.matchFragment(this.content, 0, index);\n        if (!match)\n            throw new Error(\"Called contentMatchAt on a node with invalid content\");\n        return match;\n    }\n    /**\n    Test whether replacing the range between `from` and `to` (by\n    child index) with the given replacement fragment (which defaults\n    to the empty fragment) would leave the node's content valid. You\n    can optionally pass `start` and `end` indices into the\n    replacement fragment.\n    */\n    canReplace(from, to, replacement = Fragment.empty, start = 0, end = replacement.childCount) {\n        let one = this.contentMatchAt(from).matchFragment(replacement, start, end);\n        let two = one && one.matchFragment(this.content, to);\n        if (!two || !two.validEnd)\n            return false;\n        for (let i = start; i < end; i++)\n            if (!this.type.allowsMarks(replacement.child(i).marks))\n                return false;\n        return true;\n    }\n    /**\n    Test whether replacing the range `from` to `to` (by index) with\n    a node of the given type would leave the node's content valid.\n    */\n    canReplaceWith(from, to, type, marks) {\n        if (marks && !this.type.allowsMarks(marks))\n            return false;\n        let start = this.contentMatchAt(from).matchType(type);\n        let end = start && start.matchFragment(this.content, to);\n        return end ? end.validEnd : false;\n    }\n    /**\n    Test whether the given node's content could be appended to this\n    node. If that node is empty, this will only return true if there\n    is at least one node type that can appear in both nodes (to avoid\n    merging completely incompatible nodes).\n    */\n    canAppend(other) {\n        if (other.content.size)\n            return this.canReplace(this.childCount, this.childCount, other.content);\n        else\n            return this.type.compatibleContent(other.type);\n    }\n    /**\n    Check whether this node and its descendants conform to the\n    schema, and raise an exception when they do not.\n    */\n    check() {\n        this.type.checkContent(this.content);\n        this.type.checkAttrs(this.attrs);\n        let copy = Mark.none;\n        for (let i = 0; i < this.marks.length; i++) {\n            let mark = this.marks[i];\n            mark.type.checkAttrs(mark.attrs);\n            copy = mark.addToSet(copy);\n        }\n        if (!Mark.sameSet(copy, this.marks))\n            throw new RangeError(`Invalid collection of marks for node ${this.type.name}: ${this.marks.map(m => m.type.name)}`);\n        this.content.forEach(node => node.check());\n    }\n    /**\n    Return a JSON-serializeable representation of this node.\n    */\n    toJSON() {\n        let obj = { type: this.type.name };\n        for (let _ in this.attrs) {\n            obj.attrs = this.attrs;\n            break;\n        }\n        if (this.content.size)\n            obj.content = this.content.toJSON();\n        if (this.marks.length)\n            obj.marks = this.marks.map(n => n.toJSON());\n        return obj;\n    }\n    /**\n    Deserialize a node from its JSON representation.\n    */\n    static fromJSON(schema, json) {\n        if (!json)\n            throw new RangeError(\"Invalid input for Node.fromJSON\");\n        let marks = undefined;\n        if (json.marks) {\n            if (!Array.isArray(json.marks))\n                throw new RangeError(\"Invalid mark data for Node.fromJSON\");\n            marks = json.marks.map(schema.markFromJSON);\n        }\n        if (json.type == \"text\") {\n            if (typeof json.text != \"string\")\n                throw new RangeError(\"Invalid text node in JSON\");\n            return schema.text(json.text, marks);\n        }\n        let content = Fragment.fromJSON(schema, json.content);\n        let node = schema.nodeType(json.type).create(json.attrs, content, marks);\n        node.type.checkAttrs(node.attrs);\n        return node;\n    }\n}\nNode.prototype.text = undefined;\nclass TextNode extends Node {\n    /**\n    @internal\n    */\n    constructor(type, attrs, content, marks) {\n        super(type, attrs, null, marks);\n        if (!content)\n            throw new RangeError(\"Empty text nodes are not allowed\");\n        this.text = content;\n    }\n    toString() {\n        if (this.type.spec.toDebugString)\n            return this.type.spec.toDebugString(this);\n        return wrapMarks(this.marks, JSON.stringify(this.text));\n    }\n    get textContent() { return this.text; }\n    textBetween(from, to) { return this.text.slice(from, to); }\n    get nodeSize() { return this.text.length; }\n    mark(marks) {\n        return marks == this.marks ? this : new TextNode(this.type, this.attrs, this.text, marks);\n    }\n    withText(text) {\n        if (text == this.text)\n            return this;\n        return new TextNode(this.type, this.attrs, text, this.marks);\n    }\n    cut(from = 0, to = this.text.length) {\n        if (from == 0 && to == this.text.length)\n            return this;\n        return this.withText(this.text.slice(from, to));\n    }\n    eq(other) {\n        return this.sameMarkup(other) && this.text == other.text;\n    }\n    toJSON() {\n        let base = super.toJSON();\n        base.text = this.text;\n        return base;\n    }\n}\nfunction wrapMarks(marks, str) {\n    for (let i = marks.length - 1; i >= 0; i--)\n        str = marks[i].type.name + \"(\" + str + \")\";\n    return str;\n}\n\n/**\nInstances of this class represent a match state of a node type's\n[content expression](https://prosemirror.net/docs/ref/#model.NodeSpec.content), and can be used to\nfind out whether further content matches here, and whether a given\nposition is a valid end of the node.\n*/\nclass ContentMatch {\n    /**\n    @internal\n    */\n    constructor(\n    /**\n    True when this match state represents a valid end of the node.\n    */\n    validEnd) {\n        this.validEnd = validEnd;\n        /**\n        @internal\n        */\n        this.next = [];\n        /**\n        @internal\n        */\n        this.wrapCache = [];\n    }\n    /**\n    @internal\n    */\n    static parse(string, nodeTypes) {\n        let stream = new TokenStream(string, nodeTypes);\n        if (stream.next == null)\n            return ContentMatch.empty;\n        let expr = parseExpr(stream);\n        if (stream.next)\n            stream.err(\"Unexpected trailing text\");\n        let match = dfa(nfa(expr));\n        checkForDeadEnds(match, stream);\n        return match;\n    }\n    /**\n    Match a node type, returning a match after that node if\n    successful.\n    */\n    matchType(type) {\n        for (let i = 0; i < this.next.length; i++)\n            if (this.next[i].type == type)\n                return this.next[i].next;\n        return null;\n    }\n    /**\n    Try to match a fragment. Returns the resulting match when\n    successful.\n    */\n    matchFragment(frag, start = 0, end = frag.childCount) {\n        let cur = this;\n        for (let i = start; cur && i < end; i++)\n            cur = cur.matchType(frag.child(i).type);\n        return cur;\n    }\n    /**\n    @internal\n    */\n    get inlineContent() {\n        return this.next.length != 0 && this.next[0].type.isInline;\n    }\n    /**\n    Get the first matching node type at this match position that can\n    be generated.\n    */\n    get defaultType() {\n        for (let i = 0; i < this.next.length; i++) {\n            let { type } = this.next[i];\n            if (!(type.isText || type.hasRequiredAttrs()))\n                return type;\n        }\n        return null;\n    }\n    /**\n    @internal\n    */\n    compatible(other) {\n        for (let i = 0; i < this.next.length; i++)\n            for (let j = 0; j < other.next.length; j++)\n                if (this.next[i].type == other.next[j].type)\n                    return true;\n        return false;\n    }\n    /**\n    Try to match the given fragment, and if that fails, see if it can\n    be made to match by inserting nodes in front of it. When\n    successful, return a fragment of inserted nodes (which may be\n    empty if nothing had to be inserted). When `toEnd` is true, only\n    return a fragment if the resulting match goes to the end of the\n    content expression.\n    */\n    fillBefore(after, toEnd = false, startIndex = 0) {\n        let seen = [this];\n        function search(match, types) {\n            let finished = match.matchFragment(after, startIndex);\n            if (finished && (!toEnd || finished.validEnd))\n                return Fragment.from(types.map(tp => tp.createAndFill()));\n            for (let i = 0; i < match.next.length; i++) {\n                let { type, next } = match.next[i];\n                if (!(type.isText || type.hasRequiredAttrs()) && seen.indexOf(next) == -1) {\n                    seen.push(next);\n                    let found = search(next, types.concat(type));\n                    if (found)\n                        return found;\n                }\n            }\n            return null;\n        }\n        return search(this, []);\n    }\n    /**\n    Find a set of wrapping node types that would allow a node of the\n    given type to appear at this position. The result may be empty\n    (when it fits directly) and will be null when no such wrapping\n    exists.\n    */\n    findWrapping(target) {\n        for (let i = 0; i < this.wrapCache.length; i += 2)\n            if (this.wrapCache[i] == target)\n                return this.wrapCache[i + 1];\n        let computed = this.computeWrapping(target);\n        this.wrapCache.push(target, computed);\n        return computed;\n    }\n    /**\n    @internal\n    */\n    computeWrapping(target) {\n        let seen = Object.create(null), active = [{ match: this, type: null, via: null }];\n        while (active.length) {\n            let current = active.shift(), match = current.match;\n            if (match.matchType(target)) {\n                let result = [];\n                for (let obj = current; obj.type; obj = obj.via)\n                    result.push(obj.type);\n                return result.reverse();\n            }\n            for (let i = 0; i < match.next.length; i++) {\n                let { type, next } = match.next[i];\n                if (!type.isLeaf && !type.hasRequiredAttrs() && !(type.name in seen) && (!current.type || next.validEnd)) {\n                    active.push({ match: type.contentMatch, type, via: current });\n                    seen[type.name] = true;\n                }\n            }\n        }\n        return null;\n    }\n    /**\n    The number of outgoing edges this node has in the finite\n    automaton that describes the content expression.\n    */\n    get edgeCount() {\n        return this.next.length;\n    }\n    /**\n    Get the _n_​th outgoing edge from this node in the finite\n    automaton that describes the content expression.\n    */\n    edge(n) {\n        if (n >= this.next.length)\n            throw new RangeError(`There's no ${n}th edge in this content match`);\n        return this.next[n];\n    }\n    /**\n    @internal\n    */\n    toString() {\n        let seen = [];\n        function scan(m) {\n            seen.push(m);\n            for (let i = 0; i < m.next.length; i++)\n                if (seen.indexOf(m.next[i].next) == -1)\n                    scan(m.next[i].next);\n        }\n        scan(this);\n        return seen.map((m, i) => {\n            let out = i + (m.validEnd ? \"*\" : \" \") + \" \";\n            for (let i = 0; i < m.next.length; i++)\n                out += (i ? \", \" : \"\") + m.next[i].type.name + \"->\" + seen.indexOf(m.next[i].next);\n            return out;\n        }).join(\"\\n\");\n    }\n}\n/**\n@internal\n*/\nContentMatch.empty = new ContentMatch(true);\nclass TokenStream {\n    constructor(string, nodeTypes) {\n        this.string = string;\n        this.nodeTypes = nodeTypes;\n        this.inline = null;\n        this.pos = 0;\n        this.tokens = string.split(/\\s*(?=\\b|\\W|$)/);\n        if (this.tokens[this.tokens.length - 1] == \"\")\n            this.tokens.pop();\n        if (this.tokens[0] == \"\")\n            this.tokens.shift();\n    }\n    get next() { return this.tokens[this.pos]; }\n    eat(tok) { return this.next == tok && (this.pos++ || true); }\n    err(str) { throw new SyntaxError(str + \" (in content expression '\" + this.string + \"')\"); }\n}\nfunction parseExpr(stream) {\n    let exprs = [];\n    do {\n        exprs.push(parseExprSeq(stream));\n    } while (stream.eat(\"|\"));\n    return exprs.length == 1 ? exprs[0] : { type: \"choice\", exprs };\n}\nfunction parseExprSeq(stream) {\n    let exprs = [];\n    do {\n        exprs.push(parseExprSubscript(stream));\n    } while (stream.next && stream.next != \")\" && stream.next != \"|\");\n    return exprs.length == 1 ? exprs[0] : { type: \"seq\", exprs };\n}\nfunction parseExprSubscript(stream) {\n    let expr = parseExprAtom(stream);\n    for (;;) {\n        if (stream.eat(\"+\"))\n            expr = { type: \"plus\", expr };\n        else if (stream.eat(\"*\"))\n            expr = { type: \"star\", expr };\n        else if (stream.eat(\"?\"))\n            expr = { type: \"opt\", expr };\n        else if (stream.eat(\"{\"))\n            expr = parseExprRange(stream, expr);\n        else\n            break;\n    }\n    return expr;\n}\nfunction parseNum(stream) {\n    if (/\\D/.test(stream.next))\n        stream.err(\"Expected number, got '\" + stream.next + \"'\");\n    let result = Number(stream.next);\n    stream.pos++;\n    return result;\n}\nfunction parseExprRange(stream, expr) {\n    let min = parseNum(stream), max = min;\n    if (stream.eat(\",\")) {\n        if (stream.next != \"}\")\n            max = parseNum(stream);\n        else\n            max = -1;\n    }\n    if (!stream.eat(\"}\"))\n        stream.err(\"Unclosed braced range\");\n    return { type: \"range\", min, max, expr };\n}\nfunction resolveName(stream, name) {\n    let types = stream.nodeTypes, type = types[name];\n    if (type)\n        return [type];\n    let result = [];\n    for (let typeName in types) {\n        let type = types[typeName];\n        if (type.isInGroup(name))\n            result.push(type);\n    }\n    if (result.length == 0)\n        stream.err(\"No node type or group '\" + name + \"' found\");\n    return result;\n}\nfunction parseExprAtom(stream) {\n    if (stream.eat(\"(\")) {\n        let expr = parseExpr(stream);\n        if (!stream.eat(\")\"))\n            stream.err(\"Missing closing paren\");\n        return expr;\n    }\n    else if (!/\\W/.test(stream.next)) {\n        let exprs = resolveName(stream, stream.next).map(type => {\n            if (stream.inline == null)\n                stream.inline = type.isInline;\n            else if (stream.inline != type.isInline)\n                stream.err(\"Mixing inline and block content\");\n            return { type: \"name\", value: type };\n        });\n        stream.pos++;\n        return exprs.length == 1 ? exprs[0] : { type: \"choice\", exprs };\n    }\n    else {\n        stream.err(\"Unexpected token '\" + stream.next + \"'\");\n    }\n}\n// Construct an NFA from an expression as returned by the parser. The\n// NFA is represented as an array of states, which are themselves\n// arrays of edges, which are `{term, to}` objects. The first state is\n// the entry state and the last node is the success state.\n//\n// Note that unlike typical NFAs, the edge ordering in this one is\n// significant, in that it is used to contruct filler content when\n// necessary.\nfunction nfa(expr) {\n    let nfa = [[]];\n    connect(compile(expr, 0), node());\n    return nfa;\n    function node() { return nfa.push([]) - 1; }\n    function edge(from, to, term) {\n        let edge = { term, to };\n        nfa[from].push(edge);\n        return edge;\n    }\n    function connect(edges, to) {\n        edges.forEach(edge => edge.to = to);\n    }\n    function compile(expr, from) {\n        if (expr.type == \"choice\") {\n            return expr.exprs.reduce((out, expr) => out.concat(compile(expr, from)), []);\n        }\n        else if (expr.type == \"seq\") {\n            for (let i = 0;; i++) {\n                let next = compile(expr.exprs[i], from);\n                if (i == expr.exprs.length - 1)\n                    return next;\n                connect(next, from = node());\n            }\n        }\n        else if (expr.type == \"star\") {\n            let loop = node();\n            edge(from, loop);\n            connect(compile(expr.expr, loop), loop);\n            return [edge(loop)];\n        }\n        else if (expr.type == \"plus\") {\n            let loop = node();\n            connect(compile(expr.expr, from), loop);\n            connect(compile(expr.expr, loop), loop);\n            return [edge(loop)];\n        }\n        else if (expr.type == \"opt\") {\n            return [edge(from)].concat(compile(expr.expr, from));\n        }\n        else if (expr.type == \"range\") {\n            let cur = from;\n            for (let i = 0; i < expr.min; i++) {\n                let next = node();\n                connect(compile(expr.expr, cur), next);\n                cur = next;\n            }\n            if (expr.max == -1) {\n                connect(compile(expr.expr, cur), cur);\n            }\n            else {\n                for (let i = expr.min; i < expr.max; i++) {\n                    let next = node();\n                    edge(cur, next);\n                    connect(compile(expr.expr, cur), next);\n                    cur = next;\n                }\n            }\n            return [edge(cur)];\n        }\n        else if (expr.type == \"name\") {\n            return [edge(from, undefined, expr.value)];\n        }\n        else {\n            throw new Error(\"Unknown expr type\");\n        }\n    }\n}\nfunction cmp(a, b) { return b - a; }\n// Get the set of nodes reachable by null edges from `node`. Omit\n// nodes with only a single null-out-edge, since they may lead to\n// needless duplicated nodes.\nfunction nullFrom(nfa, node) {\n    let result = [];\n    scan(node);\n    return result.sort(cmp);\n    function scan(node) {\n        let edges = nfa[node];\n        if (edges.length == 1 && !edges[0].term)\n            return scan(edges[0].to);\n        result.push(node);\n        for (let i = 0; i < edges.length; i++) {\n            let { term, to } = edges[i];\n            if (!term && result.indexOf(to) == -1)\n                scan(to);\n        }\n    }\n}\n// Compiles an NFA as produced by `nfa` into a DFA, modeled as a set\n// of state objects (`ContentMatch` instances) with transitions\n// between them.\nfunction dfa(nfa) {\n    let labeled = Object.create(null);\n    return explore(nullFrom(nfa, 0));\n    function explore(states) {\n        let out = [];\n        states.forEach(node => {\n            nfa[node].forEach(({ term, to }) => {\n                if (!term)\n                    return;\n                let set;\n                for (let i = 0; i < out.length; i++)\n                    if (out[i][0] == term)\n                        set = out[i][1];\n                nullFrom(nfa, to).forEach(node => {\n                    if (!set)\n                        out.push([term, set = []]);\n                    if (set.indexOf(node) == -1)\n                        set.push(node);\n                });\n            });\n        });\n        let state = labeled[states.join(\",\")] = new ContentMatch(states.indexOf(nfa.length - 1) > -1);\n        for (let i = 0; i < out.length; i++) {\n            let states = out[i][1].sort(cmp);\n            state.next.push({ type: out[i][0], next: labeled[states.join(\",\")] || explore(states) });\n        }\n        return state;\n    }\n}\nfunction checkForDeadEnds(match, stream) {\n    for (let i = 0, work = [match]; i < work.length; i++) {\n        let state = work[i], dead = !state.validEnd, nodes = [];\n        for (let j = 0; j < state.next.length; j++) {\n            let { type, next } = state.next[j];\n            nodes.push(type.name);\n            if (dead && !(type.isText || type.hasRequiredAttrs()))\n                dead = false;\n            if (work.indexOf(next) == -1)\n                work.push(next);\n        }\n        if (dead)\n            stream.err(\"Only non-generatable nodes (\" + nodes.join(\", \") + \") in a required position (see https://prosemirror.net/docs/guide/#generatable)\");\n    }\n}\n\n// For node types where all attrs have a default value (or which don't\n// have any attributes), build up a single reusable default attribute\n// object, and use it for all nodes that don't specify specific\n// attributes.\nfunction defaultAttrs(attrs) {\n    let defaults = Object.create(null);\n    for (let attrName in attrs) {\n        let attr = attrs[attrName];\n        if (!attr.hasDefault)\n            return null;\n        defaults[attrName] = attr.default;\n    }\n    return defaults;\n}\nfunction computeAttrs(attrs, value) {\n    let built = Object.create(null);\n    for (let name in attrs) {\n        let given = value && value[name];\n        if (given === undefined) {\n            let attr = attrs[name];\n            if (attr.hasDefault)\n                given = attr.default;\n            else\n                throw new RangeError(\"No value supplied for attribute \" + name);\n        }\n        built[name] = given;\n    }\n    return built;\n}\nfunction checkAttrs(attrs, values, type, name) {\n    for (let name in values)\n        if (!(name in attrs))\n            throw new RangeError(`Unsupported attribute ${name} for ${type} of type ${name}`);\n    for (let name in attrs) {\n        let attr = attrs[name];\n        if (attr.validate)\n            attr.validate(values[name]);\n    }\n}\nfunction initAttrs(typeName, attrs) {\n    let result = Object.create(null);\n    if (attrs)\n        for (let name in attrs)\n            result[name] = new Attribute(typeName, name, attrs[name]);\n    return result;\n}\n/**\nNode types are objects allocated once per `Schema` and used to\n[tag](https://prosemirror.net/docs/ref/#model.Node.type) `Node` instances. They contain information\nabout the node type, such as its name and what kind of node it\nrepresents.\n*/\nclass NodeType {\n    /**\n    @internal\n    */\n    constructor(\n    /**\n    The name the node type has in this schema.\n    */\n    name, \n    /**\n    A link back to the `Schema` the node type belongs to.\n    */\n    schema, \n    /**\n    The spec that this type is based on\n    */\n    spec) {\n        this.name = name;\n        this.schema = schema;\n        this.spec = spec;\n        /**\n        The set of marks allowed in this node. `null` means all marks\n        are allowed.\n        */\n        this.markSet = null;\n        this.groups = spec.group ? spec.group.split(\" \") : [];\n        this.attrs = initAttrs(name, spec.attrs);\n        this.defaultAttrs = defaultAttrs(this.attrs);\n        this.contentMatch = null;\n        this.inlineContent = null;\n        this.isBlock = !(spec.inline || name == \"text\");\n        this.isText = name == \"text\";\n    }\n    /**\n    True if this is an inline type.\n    */\n    get isInline() { return !this.isBlock; }\n    /**\n    True if this is a textblock type, a block that contains inline\n    content.\n    */\n    get isTextblock() { return this.isBlock && this.inlineContent; }\n    /**\n    True for node types that allow no content.\n    */\n    get isLeaf() { return this.contentMatch == ContentMatch.empty; }\n    /**\n    True when this node is an atom, i.e. when it does not have\n    directly editable content.\n    */\n    get isAtom() { return this.isLeaf || !!this.spec.atom; }\n    /**\n    Return true when this node type is part of the given\n    [group](https://prosemirror.net/docs/ref/#model.NodeSpec.group).\n    */\n    isInGroup(group) {\n        return this.groups.indexOf(group) > -1;\n    }\n    /**\n    The node type's [whitespace](https://prosemirror.net/docs/ref/#model.NodeSpec.whitespace) option.\n    */\n    get whitespace() {\n        return this.spec.whitespace || (this.spec.code ? \"pre\" : \"normal\");\n    }\n    /**\n    Tells you whether this node type has any required attributes.\n    */\n    hasRequiredAttrs() {\n        for (let n in this.attrs)\n            if (this.attrs[n].isRequired)\n                return true;\n        return false;\n    }\n    /**\n    Indicates whether this node allows some of the same content as\n    the given node type.\n    */\n    compatibleContent(other) {\n        return this == other || this.contentMatch.compatible(other.contentMatch);\n    }\n    /**\n    @internal\n    */\n    computeAttrs(attrs) {\n        if (!attrs && this.defaultAttrs)\n            return this.defaultAttrs;\n        else\n            return computeAttrs(this.attrs, attrs);\n    }\n    /**\n    Create a `Node` of this type. The given attributes are\n    checked and defaulted (you can pass `null` to use the type's\n    defaults entirely, if no required attributes exist). `content`\n    may be a `Fragment`, a node, an array of nodes, or\n    `null`. Similarly `marks` may be `null` to default to the empty\n    set of marks.\n    */\n    create(attrs = null, content, marks) {\n        if (this.isText)\n            throw new Error(\"NodeType.create can't construct text nodes\");\n        return new Node(this, this.computeAttrs(attrs), Fragment.from(content), Mark.setFrom(marks));\n    }\n    /**\n    Like [`create`](https://prosemirror.net/docs/ref/#model.NodeType.create), but check the given content\n    against the node type's content restrictions, and throw an error\n    if it doesn't match.\n    */\n    createChecked(attrs = null, content, marks) {\n        content = Fragment.from(content);\n        this.checkContent(content);\n        return new Node(this, this.computeAttrs(attrs), content, Mark.setFrom(marks));\n    }\n    /**\n    Like [`create`](https://prosemirror.net/docs/ref/#model.NodeType.create), but see if it is\n    necessary to add nodes to the start or end of the given fragment\n    to make it fit the node. If no fitting wrapping can be found,\n    return null. Note that, due to the fact that required nodes can\n    always be created, this will always succeed if you pass null or\n    `Fragment.empty` as content.\n    */\n    createAndFill(attrs = null, content, marks) {\n        attrs = this.computeAttrs(attrs);\n        content = Fragment.from(content);\n        if (content.size) {\n            let before = this.contentMatch.fillBefore(content);\n            if (!before)\n                return null;\n            content = before.append(content);\n        }\n        let matched = this.contentMatch.matchFragment(content);\n        let after = matched && matched.fillBefore(Fragment.empty, true);\n        if (!after)\n            return null;\n        return new Node(this, attrs, content.append(after), Mark.setFrom(marks));\n    }\n    /**\n    Returns true if the given fragment is valid content for this node\n    type.\n    */\n    validContent(content) {\n        let result = this.contentMatch.matchFragment(content);\n        if (!result || !result.validEnd)\n            return false;\n        for (let i = 0; i < content.childCount; i++)\n            if (!this.allowsMarks(content.child(i).marks))\n                return false;\n        return true;\n    }\n    /**\n    Throws a RangeError if the given fragment is not valid content for this\n    node type.\n    @internal\n    */\n    checkContent(content) {\n        if (!this.validContent(content))\n            throw new RangeError(`Invalid content for node ${this.name}: ${content.toString().slice(0, 50)}`);\n    }\n    /**\n    @internal\n    */\n    checkAttrs(attrs) {\n        checkAttrs(this.attrs, attrs, \"node\", this.name);\n    }\n    /**\n    Check whether the given mark type is allowed in this node.\n    */\n    allowsMarkType(markType) {\n        return this.markSet == null || this.markSet.indexOf(markType) > -1;\n    }\n    /**\n    Test whether the given set of marks are allowed in this node.\n    */\n    allowsMarks(marks) {\n        if (this.markSet == null)\n            return true;\n        for (let i = 0; i < marks.length; i++)\n            if (!this.allowsMarkType(marks[i].type))\n                return false;\n        return true;\n    }\n    /**\n    Removes the marks that are not allowed in this node from the given set.\n    */\n    allowedMarks(marks) {\n        if (this.markSet == null)\n            return marks;\n        let copy;\n        for (let i = 0; i < marks.length; i++) {\n            if (!this.allowsMarkType(marks[i].type)) {\n                if (!copy)\n                    copy = marks.slice(0, i);\n            }\n            else if (copy) {\n                copy.push(marks[i]);\n            }\n        }\n        return !copy ? marks : copy.length ? copy : Mark.none;\n    }\n    /**\n    @internal\n    */\n    static compile(nodes, schema) {\n        let result = Object.create(null);\n        nodes.forEach((name, spec) => result[name] = new NodeType(name, schema, spec));\n        let topType = schema.spec.topNode || \"doc\";\n        if (!result[topType])\n            throw new RangeError(\"Schema is missing its top node type ('\" + topType + \"')\");\n        if (!result.text)\n            throw new RangeError(\"Every schema needs a 'text' type\");\n        for (let _ in result.text.attrs)\n            throw new RangeError(\"The text node type should not have attributes\");\n        return result;\n    }\n}\nfunction validateType(typeName, attrName, type) {\n    let types = type.split(\"|\");\n    return (value) => {\n        let name = value === null ? \"null\" : typeof value;\n        if (types.indexOf(name) < 0)\n            throw new RangeError(`Expected value of type ${types} for attribute ${attrName} on type ${typeName}, got ${name}`);\n    };\n}\n// Attribute descriptors\nclass Attribute {\n    constructor(typeName, attrName, options) {\n        this.hasDefault = Object.prototype.hasOwnProperty.call(options, \"default\");\n        this.default = options.default;\n        this.validate = typeof options.validate == \"string\" ? validateType(typeName, attrName, options.validate) : options.validate;\n    }\n    get isRequired() {\n        return !this.hasDefault;\n    }\n}\n// Marks\n/**\nLike nodes, marks (which are associated with nodes to signify\nthings like emphasis or being part of a link) are\n[tagged](https://prosemirror.net/docs/ref/#model.Mark.type) with type objects, which are\ninstantiated once per `Schema`.\n*/\nclass MarkType {\n    /**\n    @internal\n    */\n    constructor(\n    /**\n    The name of the mark type.\n    */\n    name, \n    /**\n    @internal\n    */\n    rank, \n    /**\n    The schema that this mark type instance is part of.\n    */\n    schema, \n    /**\n    The spec on which the type is based.\n    */\n    spec) {\n        this.name = name;\n        this.rank = rank;\n        this.schema = schema;\n        this.spec = spec;\n        this.attrs = initAttrs(name, spec.attrs);\n        this.excluded = null;\n        let defaults = defaultAttrs(this.attrs);\n        this.instance = defaults ? new Mark(this, defaults) : null;\n    }\n    /**\n    Create a mark of this type. `attrs` may be `null` or an object\n    containing only some of the mark's attributes. The others, if\n    they have defaults, will be added.\n    */\n    create(attrs = null) {\n        if (!attrs && this.instance)\n            return this.instance;\n        return new Mark(this, computeAttrs(this.attrs, attrs));\n    }\n    /**\n    @internal\n    */\n    static compile(marks, schema) {\n        let result = Object.create(null), rank = 0;\n        marks.forEach((name, spec) => result[name] = new MarkType(name, rank++, schema, spec));\n        return result;\n    }\n    /**\n    When there is a mark of this type in the given set, a new set\n    without it is returned. Otherwise, the input set is returned.\n    */\n    removeFromSet(set) {\n        for (var i = 0; i < set.length; i++)\n            if (set[i].type == this) {\n                set = set.slice(0, i).concat(set.slice(i + 1));\n                i--;\n            }\n        return set;\n    }\n    /**\n    Tests whether there is a mark of this type in the given set.\n    */\n    isInSet(set) {\n        for (let i = 0; i < set.length; i++)\n            if (set[i].type == this)\n                return set[i];\n    }\n    /**\n    @internal\n    */\n    checkAttrs(attrs) {\n        checkAttrs(this.attrs, attrs, \"mark\", this.name);\n    }\n    /**\n    Queries whether a given mark type is\n    [excluded](https://prosemirror.net/docs/ref/#model.MarkSpec.excludes) by this one.\n    */\n    excludes(other) {\n        return this.excluded.indexOf(other) > -1;\n    }\n}\n/**\nA document schema. Holds [node](https://prosemirror.net/docs/ref/#model.NodeType) and [mark\ntype](https://prosemirror.net/docs/ref/#model.MarkType) objects for the nodes and marks that may\noccur in conforming documents, and provides functionality for\ncreating and deserializing such documents.\n\nWhen given, the type parameters provide the names of the nodes and\nmarks in this schema.\n*/\nclass Schema {\n    /**\n    Construct a schema from a schema [specification](https://prosemirror.net/docs/ref/#model.SchemaSpec).\n    */\n    constructor(spec) {\n        /**\n        The [linebreak\n        replacement](https://prosemirror.net/docs/ref/#model.NodeSpec.linebreakReplacement) node defined\n        in this schema, if any.\n        */\n        this.linebreakReplacement = null;\n        /**\n        An object for storing whatever values modules may want to\n        compute and cache per schema. (If you want to store something\n        in it, try to use property names unlikely to clash.)\n        */\n        this.cached = Object.create(null);\n        let instanceSpec = this.spec = {};\n        for (let prop in spec)\n            instanceSpec[prop] = spec[prop];\n        instanceSpec.nodes = OrderedMap.from(spec.nodes),\n            instanceSpec.marks = OrderedMap.from(spec.marks || {}),\n            this.nodes = NodeType.compile(this.spec.nodes, this);\n        this.marks = MarkType.compile(this.spec.marks, this);\n        let contentExprCache = Object.create(null);\n        for (let prop in this.nodes) {\n            if (prop in this.marks)\n                throw new RangeError(prop + \" can not be both a node and a mark\");\n            let type = this.nodes[prop], contentExpr = type.spec.content || \"\", markExpr = type.spec.marks;\n            type.contentMatch = contentExprCache[contentExpr] ||\n                (contentExprCache[contentExpr] = ContentMatch.parse(contentExpr, this.nodes));\n            type.inlineContent = type.contentMatch.inlineContent;\n            if (type.spec.linebreakReplacement) {\n                if (this.linebreakReplacement)\n                    throw new RangeError(\"Multiple linebreak nodes defined\");\n                if (!type.isInline || !type.isLeaf)\n                    throw new RangeError(\"Linebreak replacement nodes must be inline leaf nodes\");\n                this.linebreakReplacement = type;\n            }\n            type.markSet = markExpr == \"_\" ? null :\n                markExpr ? gatherMarks(this, markExpr.split(\" \")) :\n                    markExpr == \"\" || !type.inlineContent ? [] : null;\n        }\n        for (let prop in this.marks) {\n            let type = this.marks[prop], excl = type.spec.excludes;\n            type.excluded = excl == null ? [type] : excl == \"\" ? [] : gatherMarks(this, excl.split(\" \"));\n        }\n        this.nodeFromJSON = json => Node.fromJSON(this, json);\n        this.markFromJSON = json => Mark.fromJSON(this, json);\n        this.topNodeType = this.nodes[this.spec.topNode || \"doc\"];\n        this.cached.wrappings = Object.create(null);\n    }\n    /**\n    Create a node in this schema. The `type` may be a string or a\n    `NodeType` instance. Attributes will be extended with defaults,\n    `content` may be a `Fragment`, `null`, a `Node`, or an array of\n    nodes.\n    */\n    node(type, attrs = null, content, marks) {\n        if (typeof type == \"string\")\n            type = this.nodeType(type);\n        else if (!(type instanceof NodeType))\n            throw new RangeError(\"Invalid node type: \" + type);\n        else if (type.schema != this)\n            throw new RangeError(\"Node type from different schema used (\" + type.name + \")\");\n        return type.createChecked(attrs, content, marks);\n    }\n    /**\n    Create a text node in the schema. Empty text nodes are not\n    allowed.\n    */\n    text(text, marks) {\n        let type = this.nodes.text;\n        return new TextNode(type, type.defaultAttrs, text, Mark.setFrom(marks));\n    }\n    /**\n    Create a mark with the given type and attributes.\n    */\n    mark(type, attrs) {\n        if (typeof type == \"string\")\n            type = this.marks[type];\n        return type.create(attrs);\n    }\n    /**\n    @internal\n    */\n    nodeType(name) {\n        let found = this.nodes[name];\n        if (!found)\n            throw new RangeError(\"Unknown node type: \" + name);\n        return found;\n    }\n}\nfunction gatherMarks(schema, marks) {\n    let found = [];\n    for (let i = 0; i < marks.length; i++) {\n        let name = marks[i], mark = schema.marks[name], ok = mark;\n        if (mark) {\n            found.push(mark);\n        }\n        else {\n            for (let prop in schema.marks) {\n                let mark = schema.marks[prop];\n                if (name == \"_\" || (mark.spec.group && mark.spec.group.split(\" \").indexOf(name) > -1))\n                    found.push(ok = mark);\n            }\n        }\n        if (!ok)\n            throw new SyntaxError(\"Unknown mark type: '\" + marks[i] + \"'\");\n    }\n    return found;\n}\n\nfunction isTagRule(rule) { return rule.tag != null; }\nfunction isStyleRule(rule) { return rule.style != null; }\n/**\nA DOM parser represents a strategy for parsing DOM content into a\nProseMirror document conforming to a given schema. Its behavior is\ndefined by an array of [rules](https://prosemirror.net/docs/ref/#model.ParseRule).\n*/\nclass DOMParser {\n    /**\n    Create a parser that targets the given schema, using the given\n    parsing rules.\n    */\n    constructor(\n    /**\n    The schema into which the parser parses.\n    */\n    schema, \n    /**\n    The set of [parse rules](https://prosemirror.net/docs/ref/#model.ParseRule) that the parser\n    uses, in order of precedence.\n    */\n    rules) {\n        this.schema = schema;\n        this.rules = rules;\n        /**\n        @internal\n        */\n        this.tags = [];\n        /**\n        @internal\n        */\n        this.styles = [];\n        let matchedStyles = this.matchedStyles = [];\n        rules.forEach(rule => {\n            if (isTagRule(rule)) {\n                this.tags.push(rule);\n            }\n            else if (isStyleRule(rule)) {\n                let prop = /[^=]*/.exec(rule.style)[0];\n                if (matchedStyles.indexOf(prop) < 0)\n                    matchedStyles.push(prop);\n                this.styles.push(rule);\n            }\n        });\n        // Only normalize list elements when lists in the schema can't directly contain themselves\n        this.normalizeLists = !this.tags.some(r => {\n            if (!/^(ul|ol)\\b/.test(r.tag) || !r.node)\n                return false;\n            let node = schema.nodes[r.node];\n            return node.contentMatch.matchType(node);\n        });\n    }\n    /**\n    Parse a document from the content of a DOM node.\n    */\n    parse(dom, options = {}) {\n        let context = new ParseContext(this, options, false);\n        context.addAll(dom, Mark.none, options.from, options.to);\n        return context.finish();\n    }\n    /**\n    Parses the content of the given DOM node, like\n    [`parse`](https://prosemirror.net/docs/ref/#model.DOMParser.parse), and takes the same set of\n    options. But unlike that method, which produces a whole node,\n    this one returns a slice that is open at the sides, meaning that\n    the schema constraints aren't applied to the start of nodes to\n    the left of the input and the end of nodes at the end.\n    */\n    parseSlice(dom, options = {}) {\n        let context = new ParseContext(this, options, true);\n        context.addAll(dom, Mark.none, options.from, options.to);\n        return Slice.maxOpen(context.finish());\n    }\n    /**\n    @internal\n    */\n    matchTag(dom, context, after) {\n        for (let i = after ? this.tags.indexOf(after) + 1 : 0; i < this.tags.length; i++) {\n            let rule = this.tags[i];\n            if (matches(dom, rule.tag) &&\n                (rule.namespace === undefined || dom.namespaceURI == rule.namespace) &&\n                (!rule.context || context.matchesContext(rule.context))) {\n                if (rule.getAttrs) {\n                    let result = rule.getAttrs(dom);\n                    if (result === false)\n                        continue;\n                    rule.attrs = result || undefined;\n                }\n                return rule;\n            }\n        }\n    }\n    /**\n    @internal\n    */\n    matchStyle(prop, value, context, after) {\n        for (let i = after ? this.styles.indexOf(after) + 1 : 0; i < this.styles.length; i++) {\n            let rule = this.styles[i], style = rule.style;\n            if (style.indexOf(prop) != 0 ||\n                rule.context && !context.matchesContext(rule.context) ||\n                // Test that the style string either precisely matches the prop,\n                // or has an '=' sign after the prop, followed by the given\n                // value.\n                style.length > prop.length &&\n                    (style.charCodeAt(prop.length) != 61 || style.slice(prop.length + 1) != value))\n                continue;\n            if (rule.getAttrs) {\n                let result = rule.getAttrs(value);\n                if (result === false)\n                    continue;\n                rule.attrs = result || undefined;\n            }\n            return rule;\n        }\n    }\n    /**\n    @internal\n    */\n    static schemaRules(schema) {\n        let result = [];\n        function insert(rule) {\n            let priority = rule.priority == null ? 50 : rule.priority, i = 0;\n            for (; i < result.length; i++) {\n                let next = result[i], nextPriority = next.priority == null ? 50 : next.priority;\n                if (nextPriority < priority)\n                    break;\n            }\n            result.splice(i, 0, rule);\n        }\n        for (let name in schema.marks) {\n            let rules = schema.marks[name].spec.parseDOM;\n            if (rules)\n                rules.forEach(rule => {\n                    insert(rule = copy(rule));\n                    if (!(rule.mark || rule.ignore || rule.clearMark))\n                        rule.mark = name;\n                });\n        }\n        for (let name in schema.nodes) {\n            let rules = schema.nodes[name].spec.parseDOM;\n            if (rules)\n                rules.forEach(rule => {\n                    insert(rule = copy(rule));\n                    if (!(rule.node || rule.ignore || rule.mark))\n                        rule.node = name;\n                });\n        }\n        return result;\n    }\n    /**\n    Construct a DOM parser using the parsing rules listed in a\n    schema's [node specs](https://prosemirror.net/docs/ref/#model.NodeSpec.parseDOM), reordered by\n    [priority](https://prosemirror.net/docs/ref/#model.GenericParseRule.priority).\n    */\n    static fromSchema(schema) {\n        return schema.cached.domParser ||\n            (schema.cached.domParser = new DOMParser(schema, DOMParser.schemaRules(schema)));\n    }\n}\nconst blockTags = {\n    address: true, article: true, aside: true, blockquote: true, canvas: true,\n    dd: true, div: true, dl: true, fieldset: true, figcaption: true, figure: true,\n    footer: true, form: true, h1: true, h2: true, h3: true, h4: true, h5: true,\n    h6: true, header: true, hgroup: true, hr: true, li: true, noscript: true, ol: true,\n    output: true, p: true, pre: true, section: true, table: true, tfoot: true, ul: true\n};\nconst ignoreTags = {\n    head: true, noscript: true, object: true, script: true, style: true, title: true\n};\nconst listTags = { ol: true, ul: true };\n// Using a bitfield for node context options\nconst OPT_PRESERVE_WS = 1, OPT_PRESERVE_WS_FULL = 2, OPT_OPEN_LEFT = 4;\nfunction wsOptionsFor(type, preserveWhitespace, base) {\n    if (preserveWhitespace != null)\n        return (preserveWhitespace ? OPT_PRESERVE_WS : 0) |\n            (preserveWhitespace === \"full\" ? OPT_PRESERVE_WS_FULL : 0);\n    return type && type.whitespace == \"pre\" ? OPT_PRESERVE_WS | OPT_PRESERVE_WS_FULL : base & ~OPT_OPEN_LEFT;\n}\nclass NodeContext {\n    constructor(type, attrs, marks, solid, match, options) {\n        this.type = type;\n        this.attrs = attrs;\n        this.marks = marks;\n        this.solid = solid;\n        this.options = options;\n        this.content = [];\n        // Marks applied to the node's children\n        this.activeMarks = Mark.none;\n        this.match = match || (options & OPT_OPEN_LEFT ? null : type.contentMatch);\n    }\n    findWrapping(node) {\n        if (!this.match) {\n            if (!this.type)\n                return [];\n            let fill = this.type.contentMatch.fillBefore(Fragment.from(node));\n            if (fill) {\n                this.match = this.type.contentMatch.matchFragment(fill);\n            }\n            else {\n                let start = this.type.contentMatch, wrap;\n                if (wrap = start.findWrapping(node.type)) {\n                    this.match = start;\n                    return wrap;\n                }\n                else {\n                    return null;\n                }\n            }\n        }\n        return this.match.findWrapping(node.type);\n    }\n    finish(openEnd) {\n        if (!(this.options & OPT_PRESERVE_WS)) { // Strip trailing whitespace\n            let last = this.content[this.content.length - 1], m;\n            if (last && last.isText && (m = /[ \\t\\r\\n\\u000c]+$/.exec(last.text))) {\n                let text = last;\n                if (last.text.length == m[0].length)\n                    this.content.pop();\n                else\n                    this.content[this.content.length - 1] = text.withText(text.text.slice(0, text.text.length - m[0].length));\n            }\n        }\n        let content = Fragment.from(this.content);\n        if (!openEnd && this.match)\n            content = content.append(this.match.fillBefore(Fragment.empty, true));\n        return this.type ? this.type.create(this.attrs, content, this.marks) : content;\n    }\n    inlineContext(node) {\n        if (this.type)\n            return this.type.inlineContent;\n        if (this.content.length)\n            return this.content[0].isInline;\n        return node.parentNode && !blockTags.hasOwnProperty(node.parentNode.nodeName.toLowerCase());\n    }\n}\nclass ParseContext {\n    constructor(\n    // The parser we are using.\n    parser, \n    // The options passed to this parse.\n    options, isOpen) {\n        this.parser = parser;\n        this.options = options;\n        this.isOpen = isOpen;\n        this.open = 0;\n        this.localPreserveWS = false;\n        let topNode = options.topNode, topContext;\n        let topOptions = wsOptionsFor(null, options.preserveWhitespace, 0) | (isOpen ? OPT_OPEN_LEFT : 0);\n        if (topNode)\n            topContext = new NodeContext(topNode.type, topNode.attrs, Mark.none, true, options.topMatch || topNode.type.contentMatch, topOptions);\n        else if (isOpen)\n            topContext = new NodeContext(null, null, Mark.none, true, null, topOptions);\n        else\n            topContext = new NodeContext(parser.schema.topNodeType, null, Mark.none, true, null, topOptions);\n        this.nodes = [topContext];\n        this.find = options.findPositions;\n        this.needsBlock = false;\n    }\n    get top() {\n        return this.nodes[this.open];\n    }\n    // Add a DOM node to the content. Text is inserted as text node,\n    // otherwise, the node is passed to `addElement` or, if it has a\n    // `style` attribute, `addElementWithStyles`.\n    addDOM(dom, marks) {\n        if (dom.nodeType == 3)\n            this.addTextNode(dom, marks);\n        else if (dom.nodeType == 1)\n            this.addElement(dom, marks);\n    }\n    addTextNode(dom, marks) {\n        let value = dom.nodeValue;\n        let top = this.top, preserveWS = (top.options & OPT_PRESERVE_WS_FULL) ? \"full\"\n            : this.localPreserveWS || (top.options & OPT_PRESERVE_WS) > 0;\n        let { schema } = this.parser;\n        if (preserveWS === \"full\" ||\n            top.inlineContext(dom) ||\n            /[^ \\t\\r\\n\\u000c]/.test(value)) {\n            if (!preserveWS) {\n                value = value.replace(/[ \\t\\r\\n\\u000c]+/g, \" \");\n                // If this starts with whitespace, and there is no node before it, or\n                // a hard break, or a text node that ends with whitespace, strip the\n                // leading space.\n                if (/^[ \\t\\r\\n\\u000c]/.test(value) && this.open == this.nodes.length - 1) {\n                    let nodeBefore = top.content[top.content.length - 1];\n                    let domNodeBefore = dom.previousSibling;\n                    if (!nodeBefore ||\n                        (domNodeBefore && domNodeBefore.nodeName == 'BR') ||\n                        (nodeBefore.isText && /[ \\t\\r\\n\\u000c]$/.test(nodeBefore.text)))\n                        value = value.slice(1);\n                }\n            }\n            else if (preserveWS === \"full\") {\n                value = value.replace(/\\r\\n?/g, \"\\n\");\n            }\n            else if (schema.linebreakReplacement && /[\\r\\n]/.test(value) && this.top.findWrapping(schema.linebreakReplacement.create())) {\n                let lines = value.split(/\\r?\\n|\\r/);\n                for (let i = 0; i < lines.length; i++) {\n                    if (i)\n                        this.insertNode(schema.linebreakReplacement.create(), marks, true);\n                    if (lines[i])\n                        this.insertNode(schema.text(lines[i]), marks, !/\\S/.test(lines[i]));\n                }\n                value = \"\";\n            }\n            else {\n                value = value.replace(/\\r?\\n|\\r/g, \" \");\n            }\n            if (value)\n                this.insertNode(schema.text(value), marks, !/\\S/.test(value));\n            this.findInText(dom);\n        }\n        else {\n            this.findInside(dom);\n        }\n    }\n    // Try to find a handler for the given tag and use that to parse. If\n    // none is found, the element's content nodes are added directly.\n    addElement(dom, marks, matchAfter) {\n        let outerWS = this.localPreserveWS, top = this.top;\n        if (dom.tagName == \"PRE\" || /pre/.test(dom.style && dom.style.whiteSpace))\n            this.localPreserveWS = true;\n        let name = dom.nodeName.toLowerCase(), ruleID;\n        if (listTags.hasOwnProperty(name) && this.parser.normalizeLists)\n            normalizeList(dom);\n        let rule = (this.options.ruleFromNode && this.options.ruleFromNode(dom)) ||\n            (ruleID = this.parser.matchTag(dom, this, matchAfter));\n        out: if (rule ? rule.ignore : ignoreTags.hasOwnProperty(name)) {\n            this.findInside(dom);\n            this.ignoreFallback(dom, marks);\n        }\n        else if (!rule || rule.skip || rule.closeParent) {\n            if (rule && rule.closeParent)\n                this.open = Math.max(0, this.open - 1);\n            else if (rule && rule.skip.nodeType)\n                dom = rule.skip;\n            let sync, oldNeedsBlock = this.needsBlock;\n            if (blockTags.hasOwnProperty(name)) {\n                if (top.content.length && top.content[0].isInline && this.open) {\n                    this.open--;\n                    top = this.top;\n                }\n                sync = true;\n                if (!top.type)\n                    this.needsBlock = true;\n            }\n            else if (!dom.firstChild) {\n                this.leafFallback(dom, marks);\n                break out;\n            }\n            let innerMarks = rule && rule.skip ? marks : this.readStyles(dom, marks);\n            if (innerMarks)\n                this.addAll(dom, innerMarks);\n            if (sync)\n                this.sync(top);\n            this.needsBlock = oldNeedsBlock;\n        }\n        else {\n            let innerMarks = this.readStyles(dom, marks);\n            if (innerMarks)\n                this.addElementByRule(dom, rule, innerMarks, rule.consuming === false ? ruleID : undefined);\n        }\n        this.localPreserveWS = outerWS;\n    }\n    // Called for leaf DOM nodes that would otherwise be ignored\n    leafFallback(dom, marks) {\n        if (dom.nodeName == \"BR\" && this.top.type && this.top.type.inlineContent)\n            this.addTextNode(dom.ownerDocument.createTextNode(\"\\n\"), marks);\n    }\n    // Called for ignored nodes\n    ignoreFallback(dom, marks) {\n        // Ignored BR nodes should at least create an inline context\n        if (dom.nodeName == \"BR\" && (!this.top.type || !this.top.type.inlineContent))\n            this.findPlace(this.parser.schema.text(\"-\"), marks, true);\n    }\n    // Run any style parser associated with the node's styles. Either\n    // return an updated array of marks, or null to indicate some of the\n    // styles had a rule with `ignore` set.\n    readStyles(dom, marks) {\n        let styles = dom.style;\n        // Because many properties will only show up in 'normalized' form\n        // in `style.item` (i.e. text-decoration becomes\n        // text-decoration-line, text-decoration-color, etc), we directly\n        // query the styles mentioned in our rules instead of iterating\n        // over the items.\n        if (styles && styles.length)\n            for (let i = 0; i < this.parser.matchedStyles.length; i++) {\n                let name = this.parser.matchedStyles[i], value = styles.getPropertyValue(name);\n                if (value)\n                    for (let after = undefined;;) {\n                        let rule = this.parser.matchStyle(name, value, this, after);\n                        if (!rule)\n                            break;\n                        if (rule.ignore)\n                            return null;\n                        if (rule.clearMark)\n                            marks = marks.filter(m => !rule.clearMark(m));\n                        else\n                            marks = marks.concat(this.parser.schema.marks[rule.mark].create(rule.attrs));\n                        if (rule.consuming === false)\n                            after = rule;\n                        else\n                            break;\n                    }\n            }\n        return marks;\n    }\n    // Look up a handler for the given node. If none are found, return\n    // false. Otherwise, apply it, use its return value to drive the way\n    // the node's content is wrapped, and return true.\n    addElementByRule(dom, rule, marks, continueAfter) {\n        let sync, nodeType;\n        if (rule.node) {\n            nodeType = this.parser.schema.nodes[rule.node];\n            if (!nodeType.isLeaf) {\n                let inner = this.enter(nodeType, rule.attrs || null, marks, rule.preserveWhitespace);\n                if (inner) {\n                    sync = true;\n                    marks = inner;\n                }\n            }\n            else if (!this.insertNode(nodeType.create(rule.attrs), marks, dom.nodeName == \"BR\")) {\n                this.leafFallback(dom, marks);\n            }\n        }\n        else {\n            let markType = this.parser.schema.marks[rule.mark];\n            marks = marks.concat(markType.create(rule.attrs));\n        }\n        let startIn = this.top;\n        if (nodeType && nodeType.isLeaf) {\n            this.findInside(dom);\n        }\n        else if (continueAfter) {\n            this.addElement(dom, marks, continueAfter);\n        }\n        else if (rule.getContent) {\n            this.findInside(dom);\n            rule.getContent(dom, this.parser.schema).forEach(node => this.insertNode(node, marks, false));\n        }\n        else {\n            let contentDOM = dom;\n            if (typeof rule.contentElement == \"string\")\n                contentDOM = dom.querySelector(rule.contentElement);\n            else if (typeof rule.contentElement == \"function\")\n                contentDOM = rule.contentElement(dom);\n            else if (rule.contentElement)\n                contentDOM = rule.contentElement;\n            this.findAround(dom, contentDOM, true);\n            this.addAll(contentDOM, marks);\n            this.findAround(dom, contentDOM, false);\n        }\n        if (sync && this.sync(startIn))\n            this.open--;\n    }\n    // Add all child nodes between `startIndex` and `endIndex` (or the\n    // whole node, if not given). If `sync` is passed, use it to\n    // synchronize after every block element.\n    addAll(parent, marks, startIndex, endIndex) {\n        let index = startIndex || 0;\n        for (let dom = startIndex ? parent.childNodes[startIndex] : parent.firstChild, end = endIndex == null ? null : parent.childNodes[endIndex]; dom != end; dom = dom.nextSibling, ++index) {\n            this.findAtPoint(parent, index);\n            this.addDOM(dom, marks);\n        }\n        this.findAtPoint(parent, index);\n    }\n    // Try to find a way to fit the given node type into the current\n    // context. May add intermediate wrappers and/or leave non-solid\n    // nodes that we're in.\n    findPlace(node, marks, cautious) {\n        let route, sync;\n        for (let depth = this.open, penalty = 0; depth >= 0; depth--) {\n            let cx = this.nodes[depth];\n            let found = cx.findWrapping(node);\n            if (found && (!route || route.length > found.length + penalty)) {\n                route = found;\n                sync = cx;\n                if (!found.length)\n                    break;\n            }\n            if (cx.solid) {\n                if (cautious)\n                    break;\n                penalty += 2;\n            }\n        }\n        if (!route)\n            return null;\n        this.sync(sync);\n        for (let i = 0; i < route.length; i++)\n            marks = this.enterInner(route[i], null, marks, false);\n        return marks;\n    }\n    // Try to insert the given node, adjusting the context when needed.\n    insertNode(node, marks, cautious) {\n        if (node.isInline && this.needsBlock && !this.top.type) {\n            let block = this.textblockFromContext();\n            if (block)\n                marks = this.enterInner(block, null, marks);\n        }\n        let innerMarks = this.findPlace(node, marks, cautious);\n        if (innerMarks) {\n            this.closeExtra();\n            let top = this.top;\n            if (top.match)\n                top.match = top.match.matchType(node.type);\n            let nodeMarks = Mark.none;\n            for (let m of innerMarks.concat(node.marks))\n                if (top.type ? top.type.allowsMarkType(m.type) : markMayApply(m.type, node.type))\n                    nodeMarks = m.addToSet(nodeMarks);\n            top.content.push(node.mark(nodeMarks));\n            return true;\n        }\n        return false;\n    }\n    // Try to start a node of the given type, adjusting the context when\n    // necessary.\n    enter(type, attrs, marks, preserveWS) {\n        let innerMarks = this.findPlace(type.create(attrs), marks, false);\n        if (innerMarks)\n            innerMarks = this.enterInner(type, attrs, marks, true, preserveWS);\n        return innerMarks;\n    }\n    // Open a node of the given type\n    enterInner(type, attrs, marks, solid = false, preserveWS) {\n        this.closeExtra();\n        let top = this.top;\n        top.match = top.match && top.match.matchType(type);\n        let options = wsOptionsFor(type, preserveWS, top.options);\n        if ((top.options & OPT_OPEN_LEFT) && top.content.length == 0)\n            options |= OPT_OPEN_LEFT;\n        let applyMarks = Mark.none;\n        marks = marks.filter(m => {\n            if (top.type ? top.type.allowsMarkType(m.type) : markMayApply(m.type, type)) {\n                applyMarks = m.addToSet(applyMarks);\n                return false;\n            }\n            return true;\n        });\n        this.nodes.push(new NodeContext(type, attrs, applyMarks, solid, null, options));\n        this.open++;\n        return marks;\n    }\n    // Make sure all nodes above this.open are finished and added to\n    // their parents\n    closeExtra(openEnd = false) {\n        let i = this.nodes.length - 1;\n        if (i > this.open) {\n            for (; i > this.open; i--)\n                this.nodes[i - 1].content.push(this.nodes[i].finish(openEnd));\n            this.nodes.length = this.open + 1;\n        }\n    }\n    finish() {\n        this.open = 0;\n        this.closeExtra(this.isOpen);\n        return this.nodes[0].finish(!!(this.isOpen || this.options.topOpen));\n    }\n    sync(to) {\n        for (let i = this.open; i >= 0; i--) {\n            if (this.nodes[i] == to) {\n                this.open = i;\n                return true;\n            }\n            else if (this.localPreserveWS) {\n                this.nodes[i].options |= OPT_PRESERVE_WS;\n            }\n        }\n        return false;\n    }\n    get currentPos() {\n        this.closeExtra();\n        let pos = 0;\n        for (let i = this.open; i >= 0; i--) {\n            let content = this.nodes[i].content;\n            for (let j = content.length - 1; j >= 0; j--)\n                pos += content[j].nodeSize;\n            if (i)\n                pos++;\n        }\n        return pos;\n    }\n    findAtPoint(parent, offset) {\n        if (this.find)\n            for (let i = 0; i < this.find.length; i++) {\n                if (this.find[i].node == parent && this.find[i].offset == offset)\n                    this.find[i].pos = this.currentPos;\n            }\n    }\n    findInside(parent) {\n        if (this.find)\n            for (let i = 0; i < this.find.length; i++) {\n                if (this.find[i].pos == null && parent.nodeType == 1 && parent.contains(this.find[i].node))\n                    this.find[i].pos = this.currentPos;\n            }\n    }\n    findAround(parent, content, before) {\n        if (parent != content && this.find)\n            for (let i = 0; i < this.find.length; i++) {\n                if (this.find[i].pos == null && parent.nodeType == 1 && parent.contains(this.find[i].node)) {\n                    let pos = content.compareDocumentPosition(this.find[i].node);\n                    if (pos & (before ? 2 : 4))\n                        this.find[i].pos = this.currentPos;\n                }\n            }\n    }\n    findInText(textNode) {\n        if (this.find)\n            for (let i = 0; i < this.find.length; i++) {\n                if (this.find[i].node == textNode)\n                    this.find[i].pos = this.currentPos - (textNode.nodeValue.length - this.find[i].offset);\n            }\n    }\n    // Determines whether the given context string matches this context.\n    matchesContext(context) {\n        if (context.indexOf(\"|\") > -1)\n            return context.split(/\\s*\\|\\s*/).some(this.matchesContext, this);\n        let parts = context.split(\"/\");\n        let option = this.options.context;\n        let useRoot = !this.isOpen && (!option || option.parent.type == this.nodes[0].type);\n        let minDepth = -(option ? option.depth + 1 : 0) + (useRoot ? 0 : 1);\n        let match = (i, depth) => {\n            for (; i >= 0; i--) {\n                let part = parts[i];\n                if (part == \"\") {\n                    if (i == parts.length - 1 || i == 0)\n                        continue;\n                    for (; depth >= minDepth; depth--)\n                        if (match(i - 1, depth))\n                            return true;\n                    return false;\n                }\n                else {\n                    let next = depth > 0 || (depth == 0 && useRoot) ? this.nodes[depth].type\n                        : option && depth >= minDepth ? option.node(depth - minDepth).type\n                            : null;\n                    if (!next || (next.name != part && !next.isInGroup(part)))\n                        return false;\n                    depth--;\n                }\n            }\n            return true;\n        };\n        return match(parts.length - 1, this.open);\n    }\n    textblockFromContext() {\n        let $context = this.options.context;\n        if ($context)\n            for (let d = $context.depth; d >= 0; d--) {\n                let deflt = $context.node(d).contentMatchAt($context.indexAfter(d)).defaultType;\n                if (deflt && deflt.isTextblock && deflt.defaultAttrs)\n                    return deflt;\n            }\n        for (let name in this.parser.schema.nodes) {\n            let type = this.parser.schema.nodes[name];\n            if (type.isTextblock && type.defaultAttrs)\n                return type;\n        }\n    }\n}\n// Kludge to work around directly nested list nodes produced by some\n// tools and allowed by browsers to mean that the nested list is\n// actually part of the list item above it.\nfunction normalizeList(dom) {\n    for (let child = dom.firstChild, prevItem = null; child; child = child.nextSibling) {\n        let name = child.nodeType == 1 ? child.nodeName.toLowerCase() : null;\n        if (name && listTags.hasOwnProperty(name) && prevItem) {\n            prevItem.appendChild(child);\n            child = prevItem;\n        }\n        else if (name == \"li\") {\n            prevItem = child;\n        }\n        else if (name) {\n            prevItem = null;\n        }\n    }\n}\n// Apply a CSS selector.\nfunction matches(dom, selector) {\n    return (dom.matches || dom.msMatchesSelector || dom.webkitMatchesSelector || dom.mozMatchesSelector).call(dom, selector);\n}\nfunction copy(obj) {\n    let copy = {};\n    for (let prop in obj)\n        copy[prop] = obj[prop];\n    return copy;\n}\n// Used when finding a mark at the top level of a fragment parse.\n// Checks whether it would be reasonable to apply a given mark type to\n// a given node, by looking at the way the mark occurs in the schema.\nfunction markMayApply(markType, nodeType) {\n    let nodes = nodeType.schema.nodes;\n    for (let name in nodes) {\n        let parent = nodes[name];\n        if (!parent.allowsMarkType(markType))\n            continue;\n        let seen = [], scan = (match) => {\n            seen.push(match);\n            for (let i = 0; i < match.edgeCount; i++) {\n                let { type, next } = match.edge(i);\n                if (type == nodeType)\n                    return true;\n                if (seen.indexOf(next) < 0 && scan(next))\n                    return true;\n            }\n        };\n        if (scan(parent.contentMatch))\n            return true;\n    }\n}\n\n/**\nA DOM serializer knows how to convert ProseMirror nodes and\nmarks of various types to DOM nodes.\n*/\nclass DOMSerializer {\n    /**\n    Create a serializer. `nodes` should map node names to functions\n    that take a node and return a description of the corresponding\n    DOM. `marks` does the same for mark names, but also gets an\n    argument that tells it whether the mark's content is block or\n    inline content (for typical use, it'll always be inline). A mark\n    serializer may be `null` to indicate that marks of that type\n    should not be serialized.\n    */\n    constructor(\n    /**\n    The node serialization functions.\n    */\n    nodes, \n    /**\n    The mark serialization functions.\n    */\n    marks) {\n        this.nodes = nodes;\n        this.marks = marks;\n    }\n    /**\n    Serialize the content of this fragment to a DOM fragment. When\n    not in the browser, the `document` option, containing a DOM\n    document, should be passed so that the serializer can create\n    nodes.\n    */\n    serializeFragment(fragment, options = {}, target) {\n        if (!target)\n            target = doc(options).createDocumentFragment();\n        let top = target, active = [];\n        fragment.forEach(node => {\n            if (active.length || node.marks.length) {\n                let keep = 0, rendered = 0;\n                while (keep < active.length && rendered < node.marks.length) {\n                    let next = node.marks[rendered];\n                    if (!this.marks[next.type.name]) {\n                        rendered++;\n                        continue;\n                    }\n                    if (!next.eq(active[keep][0]) || next.type.spec.spanning === false)\n                        break;\n                    keep++;\n                    rendered++;\n                }\n                while (keep < active.length)\n                    top = active.pop()[1];\n                while (rendered < node.marks.length) {\n                    let add = node.marks[rendered++];\n                    let markDOM = this.serializeMark(add, node.isInline, options);\n                    if (markDOM) {\n                        active.push([add, top]);\n                        top.appendChild(markDOM.dom);\n                        top = markDOM.contentDOM || markDOM.dom;\n                    }\n                }\n            }\n            top.appendChild(this.serializeNodeInner(node, options));\n        });\n        return target;\n    }\n    /**\n    @internal\n    */\n    serializeNodeInner(node, options) {\n        let { dom, contentDOM } = renderSpec(doc(options), this.nodes[node.type.name](node), null, node.attrs);\n        if (contentDOM) {\n            if (node.isLeaf)\n                throw new RangeError(\"Content hole not allowed in a leaf node spec\");\n            this.serializeFragment(node.content, options, contentDOM);\n        }\n        return dom;\n    }\n    /**\n    Serialize this node to a DOM node. This can be useful when you\n    need to serialize a part of a document, as opposed to the whole\n    document. To serialize a whole document, use\n    [`serializeFragment`](https://prosemirror.net/docs/ref/#model.DOMSerializer.serializeFragment) on\n    its [content](https://prosemirror.net/docs/ref/#model.Node.content).\n    */\n    serializeNode(node, options = {}) {\n        let dom = this.serializeNodeInner(node, options);\n        for (let i = node.marks.length - 1; i >= 0; i--) {\n            let wrap = this.serializeMark(node.marks[i], node.isInline, options);\n            if (wrap) {\n                (wrap.contentDOM || wrap.dom).appendChild(dom);\n                dom = wrap.dom;\n            }\n        }\n        return dom;\n    }\n    /**\n    @internal\n    */\n    serializeMark(mark, inline, options = {}) {\n        let toDOM = this.marks[mark.type.name];\n        return toDOM && renderSpec(doc(options), toDOM(mark, inline), null, mark.attrs);\n    }\n    static renderSpec(doc, structure, xmlNS = null, blockArraysIn) {\n        return renderSpec(doc, structure, xmlNS, blockArraysIn);\n    }\n    /**\n    Build a serializer using the [`toDOM`](https://prosemirror.net/docs/ref/#model.NodeSpec.toDOM)\n    properties in a schema's node and mark specs.\n    */\n    static fromSchema(schema) {\n        return schema.cached.domSerializer ||\n            (schema.cached.domSerializer = new DOMSerializer(this.nodesFromSchema(schema), this.marksFromSchema(schema)));\n    }\n    /**\n    Gather the serializers in a schema's node specs into an object.\n    This can be useful as a base to build a custom serializer from.\n    */\n    static nodesFromSchema(schema) {\n        let result = gatherToDOM(schema.nodes);\n        if (!result.text)\n            result.text = node => node.text;\n        return result;\n    }\n    /**\n    Gather the serializers in a schema's mark specs into an object.\n    */\n    static marksFromSchema(schema) {\n        return gatherToDOM(schema.marks);\n    }\n}\nfunction gatherToDOM(obj) {\n    let result = {};\n    for (let name in obj) {\n        let toDOM = obj[name].spec.toDOM;\n        if (toDOM)\n            result[name] = toDOM;\n    }\n    return result;\n}\nfunction doc(options) {\n    return options.document || window.document;\n}\nconst suspiciousAttributeCache = new WeakMap();\nfunction suspiciousAttributes(attrs) {\n    let value = suspiciousAttributeCache.get(attrs);\n    if (value === undefined)\n        suspiciousAttributeCache.set(attrs, value = suspiciousAttributesInner(attrs));\n    return value;\n}\nfunction suspiciousAttributesInner(attrs) {\n    let result = null;\n    function scan(value) {\n        if (value && typeof value == \"object\") {\n            if (Array.isArray(value)) {\n                if (typeof value[0] == \"string\") {\n                    if (!result)\n                        result = [];\n                    result.push(value);\n                }\n                else {\n                    for (let i = 0; i < value.length; i++)\n                        scan(value[i]);\n                }\n            }\n            else {\n                for (let prop in value)\n                    scan(value[prop]);\n            }\n        }\n    }\n    scan(attrs);\n    return result;\n}\nfunction renderSpec(doc, structure, xmlNS, blockArraysIn) {\n    if (typeof structure == \"string\")\n        return { dom: doc.createTextNode(structure) };\n    if (structure.nodeType != null)\n        return { dom: structure };\n    if (structure.dom && structure.dom.nodeType != null)\n        return structure;\n    let tagName = structure[0], suspicious;\n    if (typeof tagName != \"string\")\n        throw new RangeError(\"Invalid array passed to renderSpec\");\n    if (blockArraysIn && (suspicious = suspiciousAttributes(blockArraysIn)) &&\n        suspicious.indexOf(structure) > -1)\n        throw new RangeError(\"Using an array from an attribute object as a DOM spec. This may be an attempted cross site scripting attack.\");\n    let space = tagName.indexOf(\" \");\n    if (space > 0) {\n        xmlNS = tagName.slice(0, space);\n        tagName = tagName.slice(space + 1);\n    }\n    let contentDOM;\n    let dom = (xmlNS ? doc.createElementNS(xmlNS, tagName) : doc.createElement(tagName));\n    let attrs = structure[1], start = 1;\n    if (attrs && typeof attrs == \"object\" && attrs.nodeType == null && !Array.isArray(attrs)) {\n        start = 2;\n        for (let name in attrs)\n            if (attrs[name] != null) {\n                let space = name.indexOf(\" \");\n                if (space > 0)\n                    dom.setAttributeNS(name.slice(0, space), name.slice(space + 1), attrs[name]);\n                else if (name == \"style\" && dom.style)\n                    dom.style.cssText = attrs[name];\n                else\n                    dom.setAttribute(name, attrs[name]);\n            }\n    }\n    for (let i = start; i < structure.length; i++) {\n        let child = structure[i];\n        if (child === 0) {\n            if (i < structure.length - 1 || i > start)\n                throw new RangeError(\"Content hole must be the only child of its parent node\");\n            return { dom, contentDOM: dom };\n        }\n        else {\n            let { dom: inner, contentDOM: innerContent } = renderSpec(doc, child, xmlNS, blockArraysIn);\n            dom.appendChild(inner);\n            if (innerContent) {\n                if (contentDOM)\n                    throw new RangeError(\"Multiple content holes\");\n                contentDOM = innerContent;\n            }\n        }\n    }\n    return { dom, contentDOM };\n}\n\nexport { ContentMatch, DOMParser, DOMSerializer, Fragment, Mark, MarkType, Node, NodeRange, NodeType, ReplaceError, ResolvedPos, Schema, Slice };\n","import { ReplaceError, Slice, Fragment, MarkType, Mark } from 'prosemirror-model';\n\n// Recovery values encode a range index and an offset. They are\n// represented as numbers, because tons of them will be created when\n// mapping, for example, a large number of decorations. The number's\n// lower 16 bits provide the index, the remaining bits the offset.\n//\n// Note: We intentionally don't use bit shift operators to en- and\n// decode these, since those clip to 32 bits, which we might in rare\n// cases want to overflow. A 64-bit float can represent 48-bit\n// integers precisely.\nconst lower16 = 0xffff;\nconst factor16 = Math.pow(2, 16);\nfunction makeRecover(index, offset) { return index + offset * factor16; }\nfunction recoverIndex(value) { return value & lower16; }\nfunction recoverOffset(value) { return (value - (value & lower16)) / factor16; }\nconst DEL_BEFORE = 1, DEL_AFTER = 2, DEL_ACROSS = 4, DEL_SIDE = 8;\n/**\nAn object representing a mapped position with extra\ninformation.\n*/\nclass MapResult {\n    /**\n    @internal\n    */\n    constructor(\n    /**\n    The mapped version of the position.\n    */\n    pos, \n    /**\n    @internal\n    */\n    delInfo, \n    /**\n    @internal\n    */\n    recover) {\n        this.pos = pos;\n        this.delInfo = delInfo;\n        this.recover = recover;\n    }\n    /**\n    Tells you whether the position was deleted, that is, whether the\n    step removed the token on the side queried (via the `assoc`)\n    argument from the document.\n    */\n    get deleted() { return (this.delInfo & DEL_SIDE) > 0; }\n    /**\n    Tells you whether the token before the mapped position was deleted.\n    */\n    get deletedBefore() { return (this.delInfo & (DEL_BEFORE | DEL_ACROSS)) > 0; }\n    /**\n    True when the token after the mapped position was deleted.\n    */\n    get deletedAfter() { return (this.delInfo & (DEL_AFTER | DEL_ACROSS)) > 0; }\n    /**\n    Tells whether any of the steps mapped through deletes across the\n    position (including both the token before and after the\n    position).\n    */\n    get deletedAcross() { return (this.delInfo & DEL_ACROSS) > 0; }\n}\n/**\nA map describing the deletions and insertions made by a step, which\ncan be used to find the correspondence between positions in the\npre-step version of a document and the same position in the\npost-step version.\n*/\nclass StepMap {\n    /**\n    Create a position map. The modifications to the document are\n    represented as an array of numbers, in which each group of three\n    represents a modified chunk as `[start, oldSize, newSize]`.\n    */\n    constructor(\n    /**\n    @internal\n    */\n    ranges, \n    /**\n    @internal\n    */\n    inverted = false) {\n        this.ranges = ranges;\n        this.inverted = inverted;\n        if (!ranges.length && StepMap.empty)\n            return StepMap.empty;\n    }\n    /**\n    @internal\n    */\n    recover(value) {\n        let diff = 0, index = recoverIndex(value);\n        if (!this.inverted)\n            for (let i = 0; i < index; i++)\n                diff += this.ranges[i * 3 + 2] - this.ranges[i * 3 + 1];\n        return this.ranges[index * 3] + diff + recoverOffset(value);\n    }\n    mapResult(pos, assoc = 1) { return this._map(pos, assoc, false); }\n    map(pos, assoc = 1) { return this._map(pos, assoc, true); }\n    /**\n    @internal\n    */\n    _map(pos, assoc, simple) {\n        let diff = 0, oldIndex = this.inverted ? 2 : 1, newIndex = this.inverted ? 1 : 2;\n        for (let i = 0; i < this.ranges.length; i += 3) {\n            let start = this.ranges[i] - (this.inverted ? diff : 0);\n            if (start > pos)\n                break;\n            let oldSize = this.ranges[i + oldIndex], newSize = this.ranges[i + newIndex], end = start + oldSize;\n            if (pos <= end) {\n                let side = !oldSize ? assoc : pos == start ? -1 : pos == end ? 1 : assoc;\n                let result = start + diff + (side < 0 ? 0 : newSize);\n                if (simple)\n                    return result;\n                let recover = pos == (assoc < 0 ? start : end) ? null : makeRecover(i / 3, pos - start);\n                let del = pos == start ? DEL_AFTER : pos == end ? DEL_BEFORE : DEL_ACROSS;\n                if (assoc < 0 ? pos != start : pos != end)\n                    del |= DEL_SIDE;\n                return new MapResult(result, del, recover);\n            }\n            diff += newSize - oldSize;\n        }\n        return simple ? pos + diff : new MapResult(pos + diff, 0, null);\n    }\n    /**\n    @internal\n    */\n    touches(pos, recover) {\n        let diff = 0, index = recoverIndex(recover);\n        let oldIndex = this.inverted ? 2 : 1, newIndex = this.inverted ? 1 : 2;\n        for (let i = 0; i < this.ranges.length; i += 3) {\n            let start = this.ranges[i] - (this.inverted ? diff : 0);\n            if (start > pos)\n                break;\n            let oldSize = this.ranges[i + oldIndex], end = start + oldSize;\n            if (pos <= end && i == index * 3)\n                return true;\n            diff += this.ranges[i + newIndex] - oldSize;\n        }\n        return false;\n    }\n    /**\n    Calls the given function on each of the changed ranges included in\n    this map.\n    */\n    forEach(f) {\n        let oldIndex = this.inverted ? 2 : 1, newIndex = this.inverted ? 1 : 2;\n        for (let i = 0, diff = 0; i < this.ranges.length; i += 3) {\n            let start = this.ranges[i], oldStart = start - (this.inverted ? diff : 0), newStart = start + (this.inverted ? 0 : diff);\n            let oldSize = this.ranges[i + oldIndex], newSize = this.ranges[i + newIndex];\n            f(oldStart, oldStart + oldSize, newStart, newStart + newSize);\n            diff += newSize - oldSize;\n        }\n    }\n    /**\n    Create an inverted version of this map. The result can be used to\n    map positions in the post-step document to the pre-step document.\n    */\n    invert() {\n        return new StepMap(this.ranges, !this.inverted);\n    }\n    /**\n    @internal\n    */\n    toString() {\n        return (this.inverted ? \"-\" : \"\") + JSON.stringify(this.ranges);\n    }\n    /**\n    Create a map that moves all positions by offset `n` (which may be\n    negative). This can be useful when applying steps meant for a\n    sub-document to a larger document, or vice-versa.\n    */\n    static offset(n) {\n        return n == 0 ? StepMap.empty : new StepMap(n < 0 ? [0, -n, 0] : [0, 0, n]);\n    }\n}\n/**\nA StepMap that contains no changed ranges.\n*/\nStepMap.empty = new StepMap([]);\n/**\nA mapping represents a pipeline of zero or more [step\nmaps](https://prosemirror.net/docs/ref/#transform.StepMap). It has special provisions for losslessly\nhandling mapping positions through a series of steps in which some\nsteps are inverted versions of earlier steps. (This comes up when\n‘[rebasing](/docs/guide/#transform.rebasing)’ steps for\ncollaboration or history management.)\n*/\nclass Mapping {\n    /**\n    Create a new mapping with the given position maps.\n    */\n    constructor(\n    /**\n    The step maps in this mapping.\n    */\n    maps = [], \n    /**\n    @internal\n    */\n    mirror, \n    /**\n    The starting position in the `maps` array, used when `map` or\n    `mapResult` is called.\n    */\n    from = 0, \n    /**\n    The end position in the `maps` array.\n    */\n    to = maps.length) {\n        this.maps = maps;\n        this.mirror = mirror;\n        this.from = from;\n        this.to = to;\n    }\n    /**\n    Create a mapping that maps only through a part of this one.\n    */\n    slice(from = 0, to = this.maps.length) {\n        return new Mapping(this.maps, this.mirror, from, to);\n    }\n    /**\n    @internal\n    */\n    copy() {\n        return new Mapping(this.maps.slice(), this.mirror && this.mirror.slice(), this.from, this.to);\n    }\n    /**\n    Add a step map to the end of this mapping. If `mirrors` is\n    given, it should be the index of the step map that is the mirror\n    image of this one.\n    */\n    appendMap(map, mirrors) {\n        this.to = this.maps.push(map);\n        if (mirrors != null)\n            this.setMirror(this.maps.length - 1, mirrors);\n    }\n    /**\n    Add all the step maps in a given mapping to this one (preserving\n    mirroring information).\n    */\n    appendMapping(mapping) {\n        for (let i = 0, startSize = this.maps.length; i < mapping.maps.length; i++) {\n            let mirr = mapping.getMirror(i);\n            this.appendMap(mapping.maps[i], mirr != null && mirr < i ? startSize + mirr : undefined);\n        }\n    }\n    /**\n    Finds the offset of the step map that mirrors the map at the\n    given offset, in this mapping (as per the second argument to\n    `appendMap`).\n    */\n    getMirror(n) {\n        if (this.mirror)\n            for (let i = 0; i < this.mirror.length; i++)\n                if (this.mirror[i] == n)\n                    return this.mirror[i + (i % 2 ? -1 : 1)];\n    }\n    /**\n    @internal\n    */\n    setMirror(n, m) {\n        if (!this.mirror)\n            this.mirror = [];\n        this.mirror.push(n, m);\n    }\n    /**\n    Append the inverse of the given mapping to this one.\n    */\n    appendMappingInverted(mapping) {\n        for (let i = mapping.maps.length - 1, totalSize = this.maps.length + mapping.maps.length; i >= 0; i--) {\n            let mirr = mapping.getMirror(i);\n            this.appendMap(mapping.maps[i].invert(), mirr != null && mirr > i ? totalSize - mirr - 1 : undefined);\n        }\n    }\n    /**\n    Create an inverted version of this mapping.\n    */\n    invert() {\n        let inverse = new Mapping;\n        inverse.appendMappingInverted(this);\n        return inverse;\n    }\n    /**\n    Map a position through this mapping.\n    */\n    map(pos, assoc = 1) {\n        if (this.mirror)\n            return this._map(pos, assoc, true);\n        for (let i = this.from; i < this.to; i++)\n            pos = this.maps[i].map(pos, assoc);\n        return pos;\n    }\n    /**\n    Map a position through this mapping, returning a mapping\n    result.\n    */\n    mapResult(pos, assoc = 1) { return this._map(pos, assoc, false); }\n    /**\n    @internal\n    */\n    _map(pos, assoc, simple) {\n        let delInfo = 0;\n        for (let i = this.from; i < this.to; i++) {\n            let map = this.maps[i], result = map.mapResult(pos, assoc);\n            if (result.recover != null) {\n                let corr = this.getMirror(i);\n                if (corr != null && corr > i && corr < this.to) {\n                    i = corr;\n                    pos = this.maps[corr].recover(result.recover);\n                    continue;\n                }\n            }\n            delInfo |= result.delInfo;\n            pos = result.pos;\n        }\n        return simple ? pos : new MapResult(pos, delInfo, null);\n    }\n}\n\nconst stepsByID = Object.create(null);\n/**\nA step object represents an atomic change. It generally applies\nonly to the document it was created for, since the positions\nstored in it will only make sense for that document.\n\nNew steps are defined by creating classes that extend `Step`,\noverriding the `apply`, `invert`, `map`, `getMap` and `fromJSON`\nmethods, and registering your class with a unique\nJSON-serialization identifier using\n[`Step.jsonID`](https://prosemirror.net/docs/ref/#transform.Step^jsonID).\n*/\nclass Step {\n    /**\n    Get the step map that represents the changes made by this step,\n    and which can be used to transform between positions in the old\n    and the new document.\n    */\n    getMap() { return StepMap.empty; }\n    /**\n    Try to merge this step with another one, to be applied directly\n    after it. Returns the merged step when possible, null if the\n    steps can't be merged.\n    */\n    merge(other) { return null; }\n    /**\n    Deserialize a step from its JSON representation. Will call\n    through to the step class' own implementation of this method.\n    */\n    static fromJSON(schema, json) {\n        if (!json || !json.stepType)\n            throw new RangeError(\"Invalid input for Step.fromJSON\");\n        let type = stepsByID[json.stepType];\n        if (!type)\n            throw new RangeError(`No step type ${json.stepType} defined`);\n        return type.fromJSON(schema, json);\n    }\n    /**\n    To be able to serialize steps to JSON, each step needs a string\n    ID to attach to its JSON representation. Use this method to\n    register an ID for your step classes. Try to pick something\n    that's unlikely to clash with steps from other modules.\n    */\n    static jsonID(id, stepClass) {\n        if (id in stepsByID)\n            throw new RangeError(\"Duplicate use of step JSON ID \" + id);\n        stepsByID[id] = stepClass;\n        stepClass.prototype.jsonID = id;\n        return stepClass;\n    }\n}\n/**\nThe result of [applying](https://prosemirror.net/docs/ref/#transform.Step.apply) a step. Contains either a\nnew document or a failure value.\n*/\nclass StepResult {\n    /**\n    @internal\n    */\n    constructor(\n    /**\n    The transformed document, if successful.\n    */\n    doc, \n    /**\n    The failure message, if unsuccessful.\n    */\n    failed) {\n        this.doc = doc;\n        this.failed = failed;\n    }\n    /**\n    Create a successful step result.\n    */\n    static ok(doc) { return new StepResult(doc, null); }\n    /**\n    Create a failed step result.\n    */\n    static fail(message) { return new StepResult(null, message); }\n    /**\n    Call [`Node.replace`](https://prosemirror.net/docs/ref/#model.Node.replace) with the given\n    arguments. Create a successful result if it succeeds, and a\n    failed one if it throws a `ReplaceError`.\n    */\n    static fromReplace(doc, from, to, slice) {\n        try {\n            return StepResult.ok(doc.replace(from, to, slice));\n        }\n        catch (e) {\n            if (e instanceof ReplaceError)\n                return StepResult.fail(e.message);\n            throw e;\n        }\n    }\n}\n\nfunction mapFragment(fragment, f, parent) {\n    let mapped = [];\n    for (let i = 0; i < fragment.childCount; i++) {\n        let child = fragment.child(i);\n        if (child.content.size)\n            child = child.copy(mapFragment(child.content, f, child));\n        if (child.isInline)\n            child = f(child, parent, i);\n        mapped.push(child);\n    }\n    return Fragment.fromArray(mapped);\n}\n/**\nAdd a mark to all inline content between two positions.\n*/\nclass AddMarkStep extends Step {\n    /**\n    Create a mark step.\n    */\n    constructor(\n    /**\n    The start of the marked range.\n    */\n    from, \n    /**\n    The end of the marked range.\n    */\n    to, \n    /**\n    The mark to add.\n    */\n    mark) {\n        super();\n        this.from = from;\n        this.to = to;\n        this.mark = mark;\n    }\n    apply(doc) {\n        let oldSlice = doc.slice(this.from, this.to), $from = doc.resolve(this.from);\n        let parent = $from.node($from.sharedDepth(this.to));\n        let slice = new Slice(mapFragment(oldSlice.content, (node, parent) => {\n            if (!node.isAtom || !parent.type.allowsMarkType(this.mark.type))\n                return node;\n            return node.mark(this.mark.addToSet(node.marks));\n        }, parent), oldSlice.openStart, oldSlice.openEnd);\n        return StepResult.fromReplace(doc, this.from, this.to, slice);\n    }\n    invert() {\n        return new RemoveMarkStep(this.from, this.to, this.mark);\n    }\n    map(mapping) {\n        let from = mapping.mapResult(this.from, 1), to = mapping.mapResult(this.to, -1);\n        if (from.deleted && to.deleted || from.pos >= to.pos)\n            return null;\n        return new AddMarkStep(from.pos, to.pos, this.mark);\n    }\n    merge(other) {\n        if (other instanceof AddMarkStep &&\n            other.mark.eq(this.mark) &&\n            this.from <= other.to && this.to >= other.from)\n            return new AddMarkStep(Math.min(this.from, other.from), Math.max(this.to, other.to), this.mark);\n        return null;\n    }\n    toJSON() {\n        return { stepType: \"addMark\", mark: this.mark.toJSON(),\n            from: this.from, to: this.to };\n    }\n    /**\n    @internal\n    */\n    static fromJSON(schema, json) {\n        if (typeof json.from != \"number\" || typeof json.to != \"number\")\n            throw new RangeError(\"Invalid input for AddMarkStep.fromJSON\");\n        return new AddMarkStep(json.from, json.to, schema.markFromJSON(json.mark));\n    }\n}\nStep.jsonID(\"addMark\", AddMarkStep);\n/**\nRemove a mark from all inline content between two positions.\n*/\nclass RemoveMarkStep extends Step {\n    /**\n    Create a mark-removing step.\n    */\n    constructor(\n    /**\n    The start of the unmarked range.\n    */\n    from, \n    /**\n    The end of the unmarked range.\n    */\n    to, \n    /**\n    The mark to remove.\n    */\n    mark) {\n        super();\n        this.from = from;\n        this.to = to;\n        this.mark = mark;\n    }\n    apply(doc) {\n        let oldSlice = doc.slice(this.from, this.to);\n        let slice = new Slice(mapFragment(oldSlice.content, node => {\n            return node.mark(this.mark.removeFromSet(node.marks));\n        }, doc), oldSlice.openStart, oldSlice.openEnd);\n        return StepResult.fromReplace(doc, this.from, this.to, slice);\n    }\n    invert() {\n        return new AddMarkStep(this.from, this.to, this.mark);\n    }\n    map(mapping) {\n        let from = mapping.mapResult(this.from, 1), to = mapping.mapResult(this.to, -1);\n        if (from.deleted && to.deleted || from.pos >= to.pos)\n            return null;\n        return new RemoveMarkStep(from.pos, to.pos, this.mark);\n    }\n    merge(other) {\n        if (other instanceof RemoveMarkStep &&\n            other.mark.eq(this.mark) &&\n            this.from <= other.to && this.to >= other.from)\n            return new RemoveMarkStep(Math.min(this.from, other.from), Math.max(this.to, other.to), this.mark);\n        return null;\n    }\n    toJSON() {\n        return { stepType: \"removeMark\", mark: this.mark.toJSON(),\n            from: this.from, to: this.to };\n    }\n    /**\n    @internal\n    */\n    static fromJSON(schema, json) {\n        if (typeof json.from != \"number\" || typeof json.to != \"number\")\n            throw new RangeError(\"Invalid input for RemoveMarkStep.fromJSON\");\n        return new RemoveMarkStep(json.from, json.to, schema.markFromJSON(json.mark));\n    }\n}\nStep.jsonID(\"removeMark\", RemoveMarkStep);\n/**\nAdd a mark to a specific node.\n*/\nclass AddNodeMarkStep extends Step {\n    /**\n    Create a node mark step.\n    */\n    constructor(\n    /**\n    The position of the target node.\n    */\n    pos, \n    /**\n    The mark to add.\n    */\n    mark) {\n        super();\n        this.pos = pos;\n        this.mark = mark;\n    }\n    apply(doc) {\n        let node = doc.nodeAt(this.pos);\n        if (!node)\n            return StepResult.fail(\"No node at mark step's position\");\n        let updated = node.type.create(node.attrs, null, this.mark.addToSet(node.marks));\n        return StepResult.fromReplace(doc, this.pos, this.pos + 1, new Slice(Fragment.from(updated), 0, node.isLeaf ? 0 : 1));\n    }\n    invert(doc) {\n        let node = doc.nodeAt(this.pos);\n        if (node) {\n            let newSet = this.mark.addToSet(node.marks);\n            if (newSet.length == node.marks.length) {\n                for (let i = 0; i < node.marks.length; i++)\n                    if (!node.marks[i].isInSet(newSet))\n                        return new AddNodeMarkStep(this.pos, node.marks[i]);\n                return new AddNodeMarkStep(this.pos, this.mark);\n            }\n        }\n        return new RemoveNodeMarkStep(this.pos, this.mark);\n    }\n    map(mapping) {\n        let pos = mapping.mapResult(this.pos, 1);\n        return pos.deletedAfter ? null : new AddNodeMarkStep(pos.pos, this.mark);\n    }\n    toJSON() {\n        return { stepType: \"addNodeMark\", pos: this.pos, mark: this.mark.toJSON() };\n    }\n    /**\n    @internal\n    */\n    static fromJSON(schema, json) {\n        if (typeof json.pos != \"number\")\n            throw new RangeError(\"Invalid input for AddNodeMarkStep.fromJSON\");\n        return new AddNodeMarkStep(json.pos, schema.markFromJSON(json.mark));\n    }\n}\nStep.jsonID(\"addNodeMark\", AddNodeMarkStep);\n/**\nRemove a mark from a specific node.\n*/\nclass RemoveNodeMarkStep extends Step {\n    /**\n    Create a mark-removing step.\n    */\n    constructor(\n    /**\n    The position of the target node.\n    */\n    pos, \n    /**\n    The mark to remove.\n    */\n    mark) {\n        super();\n        this.pos = pos;\n        this.mark = mark;\n    }\n    apply(doc) {\n        let node = doc.nodeAt(this.pos);\n        if (!node)\n            return StepResult.fail(\"No node at mark step's position\");\n        let updated = node.type.create(node.attrs, null, this.mark.removeFromSet(node.marks));\n        return StepResult.fromReplace(doc, this.pos, this.pos + 1, new Slice(Fragment.from(updated), 0, node.isLeaf ? 0 : 1));\n    }\n    invert(doc) {\n        let node = doc.nodeAt(this.pos);\n        if (!node || !this.mark.isInSet(node.marks))\n            return this;\n        return new AddNodeMarkStep(this.pos, this.mark);\n    }\n    map(mapping) {\n        let pos = mapping.mapResult(this.pos, 1);\n        return pos.deletedAfter ? null : new RemoveNodeMarkStep(pos.pos, this.mark);\n    }\n    toJSON() {\n        return { stepType: \"removeNodeMark\", pos: this.pos, mark: this.mark.toJSON() };\n    }\n    /**\n    @internal\n    */\n    static fromJSON(schema, json) {\n        if (typeof json.pos != \"number\")\n            throw new RangeError(\"Invalid input for RemoveNodeMarkStep.fromJSON\");\n        return new RemoveNodeMarkStep(json.pos, schema.markFromJSON(json.mark));\n    }\n}\nStep.jsonID(\"removeNodeMark\", RemoveNodeMarkStep);\n\n/**\nReplace a part of the document with a slice of new content.\n*/\nclass ReplaceStep extends Step {\n    /**\n    The given `slice` should fit the 'gap' between `from` and\n    `to`—the depths must line up, and the surrounding nodes must be\n    able to be joined with the open sides of the slice. When\n    `structure` is true, the step will fail if the content between\n    from and to is not just a sequence of closing and then opening\n    tokens (this is to guard against rebased replace steps\n    overwriting something they weren't supposed to).\n    */\n    constructor(\n    /**\n    The start position of the replaced range.\n    */\n    from, \n    /**\n    The end position of the replaced range.\n    */\n    to, \n    /**\n    The slice to insert.\n    */\n    slice, \n    /**\n    @internal\n    */\n    structure = false) {\n        super();\n        this.from = from;\n        this.to = to;\n        this.slice = slice;\n        this.structure = structure;\n    }\n    apply(doc) {\n        if (this.structure && contentBetween(doc, this.from, this.to))\n            return StepResult.fail(\"Structure replace would overwrite content\");\n        return StepResult.fromReplace(doc, this.from, this.to, this.slice);\n    }\n    getMap() {\n        return new StepMap([this.from, this.to - this.from, this.slice.size]);\n    }\n    invert(doc) {\n        return new ReplaceStep(this.from, this.from + this.slice.size, doc.slice(this.from, this.to));\n    }\n    map(mapping) {\n        let from = mapping.mapResult(this.from, 1), to = mapping.mapResult(this.to, -1);\n        if (from.deletedAcross && to.deletedAcross)\n            return null;\n        return new ReplaceStep(from.pos, Math.max(from.pos, to.pos), this.slice);\n    }\n    merge(other) {\n        if (!(other instanceof ReplaceStep) || other.structure || this.structure)\n            return null;\n        if (this.from + this.slice.size == other.from && !this.slice.openEnd && !other.slice.openStart) {\n            let slice = this.slice.size + other.slice.size == 0 ? Slice.empty\n                : new Slice(this.slice.content.append(other.slice.content), this.slice.openStart, other.slice.openEnd);\n            return new ReplaceStep(this.from, this.to + (other.to - other.from), slice, this.structure);\n        }\n        else if (other.to == this.from && !this.slice.openStart && !other.slice.openEnd) {\n            let slice = this.slice.size + other.slice.size == 0 ? Slice.empty\n                : new Slice(other.slice.content.append(this.slice.content), other.slice.openStart, this.slice.openEnd);\n            return new ReplaceStep(other.from, this.to, slice, this.structure);\n        }\n        else {\n            return null;\n        }\n    }\n    toJSON() {\n        let json = { stepType: \"replace\", from: this.from, to: this.to };\n        if (this.slice.size)\n            json.slice = this.slice.toJSON();\n        if (this.structure)\n            json.structure = true;\n        return json;\n    }\n    /**\n    @internal\n    */\n    static fromJSON(schema, json) {\n        if (typeof json.from != \"number\" || typeof json.to != \"number\")\n            throw new RangeError(\"Invalid input for ReplaceStep.fromJSON\");\n        return new ReplaceStep(json.from, json.to, Slice.fromJSON(schema, json.slice), !!json.structure);\n    }\n}\nStep.jsonID(\"replace\", ReplaceStep);\n/**\nReplace a part of the document with a slice of content, but\npreserve a range of the replaced content by moving it into the\nslice.\n*/\nclass ReplaceAroundStep extends Step {\n    /**\n    Create a replace-around step with the given range and gap.\n    `insert` should be the point in the slice into which the content\n    of the gap should be moved. `structure` has the same meaning as\n    it has in the [`ReplaceStep`](https://prosemirror.net/docs/ref/#transform.ReplaceStep) class.\n    */\n    constructor(\n    /**\n    The start position of the replaced range.\n    */\n    from, \n    /**\n    The end position of the replaced range.\n    */\n    to, \n    /**\n    The start of preserved range.\n    */\n    gapFrom, \n    /**\n    The end of preserved range.\n    */\n    gapTo, \n    /**\n    The slice to insert.\n    */\n    slice, \n    /**\n    The position in the slice where the preserved range should be\n    inserted.\n    */\n    insert, \n    /**\n    @internal\n    */\n    structure = false) {\n        super();\n        this.from = from;\n        this.to = to;\n        this.gapFrom = gapFrom;\n        this.gapTo = gapTo;\n        this.slice = slice;\n        this.insert = insert;\n        this.structure = structure;\n    }\n    apply(doc) {\n        if (this.structure && (contentBetween(doc, this.from, this.gapFrom) ||\n            contentBetween(doc, this.gapTo, this.to)))\n            return StepResult.fail(\"Structure gap-replace would overwrite content\");\n        let gap = doc.slice(this.gapFrom, this.gapTo);\n        if (gap.openStart || gap.openEnd)\n            return StepResult.fail(\"Gap is not a flat range\");\n        let inserted = this.slice.insertAt(this.insert, gap.content);\n        if (!inserted)\n            return StepResult.fail(\"Content does not fit in gap\");\n        return StepResult.fromReplace(doc, this.from, this.to, inserted);\n    }\n    getMap() {\n        return new StepMap([this.from, this.gapFrom - this.from, this.insert,\n            this.gapTo, this.to - this.gapTo, this.slice.size - this.insert]);\n    }\n    invert(doc) {\n        let gap = this.gapTo - this.gapFrom;\n        return new ReplaceAroundStep(this.from, this.from + this.slice.size + gap, this.from + this.insert, this.from + this.insert + gap, doc.slice(this.from, this.to).removeBetween(this.gapFrom - this.from, this.gapTo - this.from), this.gapFrom - this.from, this.structure);\n    }\n    map(mapping) {\n        let from = mapping.mapResult(this.from, 1), to = mapping.mapResult(this.to, -1);\n        let gapFrom = this.from == this.gapFrom ? from.pos : mapping.map(this.gapFrom, -1);\n        let gapTo = this.to == this.gapTo ? to.pos : mapping.map(this.gapTo, 1);\n        if ((from.deletedAcross && to.deletedAcross) || gapFrom < from.pos || gapTo > to.pos)\n            return null;\n        return new ReplaceAroundStep(from.pos, to.pos, gapFrom, gapTo, this.slice, this.insert, this.structure);\n    }\n    toJSON() {\n        let json = { stepType: \"replaceAround\", from: this.from, to: this.to,\n            gapFrom: this.gapFrom, gapTo: this.gapTo, insert: this.insert };\n        if (this.slice.size)\n            json.slice = this.slice.toJSON();\n        if (this.structure)\n            json.structure = true;\n        return json;\n    }\n    /**\n    @internal\n    */\n    static fromJSON(schema, json) {\n        if (typeof json.from != \"number\" || typeof json.to != \"number\" ||\n            typeof json.gapFrom != \"number\" || typeof json.gapTo != \"number\" || typeof json.insert != \"number\")\n            throw new RangeError(\"Invalid input for ReplaceAroundStep.fromJSON\");\n        return new ReplaceAroundStep(json.from, json.to, json.gapFrom, json.gapTo, Slice.fromJSON(schema, json.slice), json.insert, !!json.structure);\n    }\n}\nStep.jsonID(\"replaceAround\", ReplaceAroundStep);\nfunction contentBetween(doc, from, to) {\n    let $from = doc.resolve(from), dist = to - from, depth = $from.depth;\n    while (dist > 0 && depth > 0 && $from.indexAfter(depth) == $from.node(depth).childCount) {\n        depth--;\n        dist--;\n    }\n    if (dist > 0) {\n        let next = $from.node(depth).maybeChild($from.indexAfter(depth));\n        while (dist > 0) {\n            if (!next || next.isLeaf)\n                return true;\n            next = next.firstChild;\n            dist--;\n        }\n    }\n    return false;\n}\n\nfunction addMark(tr, from, to, mark) {\n    let removed = [], added = [];\n    let removing, adding;\n    tr.doc.nodesBetween(from, to, (node, pos, parent) => {\n        if (!node.isInline)\n            return;\n        let marks = node.marks;\n        if (!mark.isInSet(marks) && parent.type.allowsMarkType(mark.type)) {\n            let start = Math.max(pos, from), end = Math.min(pos + node.nodeSize, to);\n            let newSet = mark.addToSet(marks);\n            for (let i = 0; i < marks.length; i++) {\n                if (!marks[i].isInSet(newSet)) {\n                    if (removing && removing.to == start && removing.mark.eq(marks[i]))\n                        removing.to = end;\n                    else\n                        removed.push(removing = new RemoveMarkStep(start, end, marks[i]));\n                }\n            }\n            if (adding && adding.to == start)\n                adding.to = end;\n            else\n                added.push(adding = new AddMarkStep(start, end, mark));\n        }\n    });\n    removed.forEach(s => tr.step(s));\n    added.forEach(s => tr.step(s));\n}\nfunction removeMark(tr, from, to, mark) {\n    let matched = [], step = 0;\n    tr.doc.nodesBetween(from, to, (node, pos) => {\n        if (!node.isInline)\n            return;\n        step++;\n        let toRemove = null;\n        if (mark instanceof MarkType) {\n            let set = node.marks, found;\n            while (found = mark.isInSet(set)) {\n                (toRemove || (toRemove = [])).push(found);\n                set = found.removeFromSet(set);\n            }\n        }\n        else if (mark) {\n            if (mark.isInSet(node.marks))\n                toRemove = [mark];\n        }\n        else {\n            toRemove = node.marks;\n        }\n        if (toRemove && toRemove.length) {\n            let end = Math.min(pos + node.nodeSize, to);\n            for (let i = 0; i < toRemove.length; i++) {\n                let style = toRemove[i], found;\n                for (let j = 0; j < matched.length; j++) {\n                    let m = matched[j];\n                    if (m.step == step - 1 && style.eq(matched[j].style))\n                        found = m;\n                }\n                if (found) {\n                    found.to = end;\n                    found.step = step;\n                }\n                else {\n                    matched.push({ style, from: Math.max(pos, from), to: end, step });\n                }\n            }\n        }\n    });\n    matched.forEach(m => tr.step(new RemoveMarkStep(m.from, m.to, m.style)));\n}\nfunction clearIncompatible(tr, pos, parentType, match = parentType.contentMatch, clearNewlines = true) {\n    let node = tr.doc.nodeAt(pos);\n    let replSteps = [], cur = pos + 1;\n    for (let i = 0; i < node.childCount; i++) {\n        let child = node.child(i), end = cur + child.nodeSize;\n        let allowed = match.matchType(child.type);\n        if (!allowed) {\n            replSteps.push(new ReplaceStep(cur, end, Slice.empty));\n        }\n        else {\n            match = allowed;\n            for (let j = 0; j < child.marks.length; j++)\n                if (!parentType.allowsMarkType(child.marks[j].type))\n                    tr.step(new RemoveMarkStep(cur, end, child.marks[j]));\n            if (clearNewlines && child.isText && parentType.whitespace != \"pre\") {\n                let m, newline = /\\r?\\n|\\r/g, slice;\n                while (m = newline.exec(child.text)) {\n                    if (!slice)\n                        slice = new Slice(Fragment.from(parentType.schema.text(\" \", parentType.allowedMarks(child.marks))), 0, 0);\n                    replSteps.push(new ReplaceStep(cur + m.index, cur + m.index + m[0].length, slice));\n                }\n            }\n        }\n        cur = end;\n    }\n    if (!match.validEnd) {\n        let fill = match.fillBefore(Fragment.empty, true);\n        tr.replace(cur, cur, new Slice(fill, 0, 0));\n    }\n    for (let i = replSteps.length - 1; i >= 0; i--)\n        tr.step(replSteps[i]);\n}\n\nfunction canCut(node, start, end) {\n    return (start == 0 || node.canReplace(start, node.childCount)) &&\n        (end == node.childCount || node.canReplace(0, end));\n}\n/**\nTry to find a target depth to which the content in the given range\ncan be lifted. Will not go across\n[isolating](https://prosemirror.net/docs/ref/#model.NodeSpec.isolating) parent nodes.\n*/\nfunction liftTarget(range) {\n    let parent = range.parent;\n    let content = parent.content.cutByIndex(range.startIndex, range.endIndex);\n    for (let depth = range.depth;; --depth) {\n        let node = range.$from.node(depth);\n        let index = range.$from.index(depth), endIndex = range.$to.indexAfter(depth);\n        if (depth < range.depth && node.canReplace(index, endIndex, content))\n            return depth;\n        if (depth == 0 || node.type.spec.isolating || !canCut(node, index, endIndex))\n            break;\n    }\n    return null;\n}\nfunction lift(tr, range, target) {\n    let { $from, $to, depth } = range;\n    let gapStart = $from.before(depth + 1), gapEnd = $to.after(depth + 1);\n    let start = gapStart, end = gapEnd;\n    let before = Fragment.empty, openStart = 0;\n    for (let d = depth, splitting = false; d > target; d--)\n        if (splitting || $from.index(d) > 0) {\n            splitting = true;\n            before = Fragment.from($from.node(d).copy(before));\n            openStart++;\n        }\n        else {\n            start--;\n        }\n    let after = Fragment.empty, openEnd = 0;\n    for (let d = depth, splitting = false; d > target; d--)\n        if (splitting || $to.after(d + 1) < $to.end(d)) {\n            splitting = true;\n            after = Fragment.from($to.node(d).copy(after));\n            openEnd++;\n        }\n        else {\n            end++;\n        }\n    tr.step(new ReplaceAroundStep(start, end, gapStart, gapEnd, new Slice(before.append(after), openStart, openEnd), before.size - openStart, true));\n}\n/**\nTry to find a valid way to wrap the content in the given range in a\nnode of the given type. May introduce extra nodes around and inside\nthe wrapper node, if necessary. Returns null if no valid wrapping\ncould be found. When `innerRange` is given, that range's content is\nused as the content to fit into the wrapping, instead of the\ncontent of `range`.\n*/\nfunction findWrapping(range, nodeType, attrs = null, innerRange = range) {\n    let around = findWrappingOutside(range, nodeType);\n    let inner = around && findWrappingInside(innerRange, nodeType);\n    if (!inner)\n        return null;\n    return around.map(withAttrs)\n        .concat({ type: nodeType, attrs }).concat(inner.map(withAttrs));\n}\nfunction withAttrs(type) { return { type, attrs: null }; }\nfunction findWrappingOutside(range, type) {\n    let { parent, startIndex, endIndex } = range;\n    let around = parent.contentMatchAt(startIndex).findWrapping(type);\n    if (!around)\n        return null;\n    let outer = around.length ? around[0] : type;\n    return parent.canReplaceWith(startIndex, endIndex, outer) ? around : null;\n}\nfunction findWrappingInside(range, type) {\n    let { parent, startIndex, endIndex } = range;\n    let inner = parent.child(startIndex);\n    let inside = type.contentMatch.findWrapping(inner.type);\n    if (!inside)\n        return null;\n    let lastType = inside.length ? inside[inside.length - 1] : type;\n    let innerMatch = lastType.contentMatch;\n    for (let i = startIndex; innerMatch && i < endIndex; i++)\n        innerMatch = innerMatch.matchType(parent.child(i).type);\n    if (!innerMatch || !innerMatch.validEnd)\n        return null;\n    return inside;\n}\nfunction wrap(tr, range, wrappers) {\n    let content = Fragment.empty;\n    for (let i = wrappers.length - 1; i >= 0; i--) {\n        if (content.size) {\n            let match = wrappers[i].type.contentMatch.matchFragment(content);\n            if (!match || !match.validEnd)\n                throw new RangeError(\"Wrapper type given to Transform.wrap does not form valid content of its parent wrapper\");\n        }\n        content = Fragment.from(wrappers[i].type.create(wrappers[i].attrs, content));\n    }\n    let start = range.start, end = range.end;\n    tr.step(new ReplaceAroundStep(start, end, start, end, new Slice(content, 0, 0), wrappers.length, true));\n}\nfunction setBlockType(tr, from, to, type, attrs) {\n    if (!type.isTextblock)\n        throw new RangeError(\"Type given to setBlockType should be a textblock\");\n    let mapFrom = tr.steps.length;\n    tr.doc.nodesBetween(from, to, (node, pos) => {\n        let attrsHere = typeof attrs == \"function\" ? attrs(node) : attrs;\n        if (node.isTextblock && !node.hasMarkup(type, attrsHere) &&\n            canChangeType(tr.doc, tr.mapping.slice(mapFrom).map(pos), type)) {\n            let convertNewlines = null;\n            if (type.schema.linebreakReplacement) {\n                let pre = type.whitespace == \"pre\", supportLinebreak = !!type.contentMatch.matchType(type.schema.linebreakReplacement);\n                if (pre && !supportLinebreak)\n                    convertNewlines = false;\n                else if (!pre && supportLinebreak)\n                    convertNewlines = true;\n            }\n            // Ensure all markup that isn't allowed in the new node type is cleared\n            if (convertNewlines === false)\n                replaceLinebreaks(tr, node, pos, mapFrom);\n            clearIncompatible(tr, tr.mapping.slice(mapFrom).map(pos, 1), type, undefined, convertNewlines === null);\n            let mapping = tr.mapping.slice(mapFrom);\n            let startM = mapping.map(pos, 1), endM = mapping.map(pos + node.nodeSize, 1);\n            tr.step(new ReplaceAroundStep(startM, endM, startM + 1, endM - 1, new Slice(Fragment.from(type.create(attrsHere, null, node.marks)), 0, 0), 1, true));\n            if (convertNewlines === true)\n                replaceNewlines(tr, node, pos, mapFrom);\n            return false;\n        }\n    });\n}\nfunction replaceNewlines(tr, node, pos, mapFrom) {\n    node.forEach((child, offset) => {\n        if (child.isText) {\n            let m, newline = /\\r?\\n|\\r/g;\n            while (m = newline.exec(child.text)) {\n                let start = tr.mapping.slice(mapFrom).map(pos + 1 + offset + m.index);\n                tr.replaceWith(start, start + 1, node.type.schema.linebreakReplacement.create());\n            }\n        }\n    });\n}\nfunction replaceLinebreaks(tr, node, pos, mapFrom) {\n    node.forEach((child, offset) => {\n        if (child.type == child.type.schema.linebreakReplacement) {\n            let start = tr.mapping.slice(mapFrom).map(pos + 1 + offset);\n            tr.replaceWith(start, start + 1, node.type.schema.text(\"\\n\"));\n        }\n    });\n}\nfunction canChangeType(doc, pos, type) {\n    let $pos = doc.resolve(pos), index = $pos.index();\n    return $pos.parent.canReplaceWith(index, index + 1, type);\n}\n/**\nChange the type, attributes, and/or marks of the node at `pos`.\nWhen `type` isn't given, the existing node type is preserved,\n*/\nfunction setNodeMarkup(tr, pos, type, attrs, marks) {\n    let node = tr.doc.nodeAt(pos);\n    if (!node)\n        throw new RangeError(\"No node at given position\");\n    if (!type)\n        type = node.type;\n    let newNode = type.create(attrs, null, marks || node.marks);\n    if (node.isLeaf)\n        return tr.replaceWith(pos, pos + node.nodeSize, newNode);\n    if (!type.validContent(node.content))\n        throw new RangeError(\"Invalid content for node type \" + type.name);\n    tr.step(new ReplaceAroundStep(pos, pos + node.nodeSize, pos + 1, pos + node.nodeSize - 1, new Slice(Fragment.from(newNode), 0, 0), 1, true));\n}\n/**\nCheck whether splitting at the given position is allowed.\n*/\nfunction canSplit(doc, pos, depth = 1, typesAfter) {\n    let $pos = doc.resolve(pos), base = $pos.depth - depth;\n    let innerType = (typesAfter && typesAfter[typesAfter.length - 1]) || $pos.parent;\n    if (base < 0 || $pos.parent.type.spec.isolating ||\n        !$pos.parent.canReplace($pos.index(), $pos.parent.childCount) ||\n        !innerType.type.validContent($pos.parent.content.cutByIndex($pos.index(), $pos.parent.childCount)))\n        return false;\n    for (let d = $pos.depth - 1, i = depth - 2; d > base; d--, i--) {\n        let node = $pos.node(d), index = $pos.index(d);\n        if (node.type.spec.isolating)\n            return false;\n        let rest = node.content.cutByIndex(index, node.childCount);\n        let overrideChild = typesAfter && typesAfter[i + 1];\n        if (overrideChild)\n            rest = rest.replaceChild(0, overrideChild.type.create(overrideChild.attrs));\n        let after = (typesAfter && typesAfter[i]) || node;\n        if (!node.canReplace(index + 1, node.childCount) || !after.type.validContent(rest))\n            return false;\n    }\n    let index = $pos.indexAfter(base);\n    let baseType = typesAfter && typesAfter[0];\n    return $pos.node(base).canReplaceWith(index, index, baseType ? baseType.type : $pos.node(base + 1).type);\n}\nfunction split(tr, pos, depth = 1, typesAfter) {\n    let $pos = tr.doc.resolve(pos), before = Fragment.empty, after = Fragment.empty;\n    for (let d = $pos.depth, e = $pos.depth - depth, i = depth - 1; d > e; d--, i--) {\n        before = Fragment.from($pos.node(d).copy(before));\n        let typeAfter = typesAfter && typesAfter[i];\n        after = Fragment.from(typeAfter ? typeAfter.type.create(typeAfter.attrs, after) : $pos.node(d).copy(after));\n    }\n    tr.step(new ReplaceStep(pos, pos, new Slice(before.append(after), depth, depth), true));\n}\n/**\nTest whether the blocks before and after a given position can be\njoined.\n*/\nfunction canJoin(doc, pos) {\n    let $pos = doc.resolve(pos), index = $pos.index();\n    return joinable($pos.nodeBefore, $pos.nodeAfter) &&\n        $pos.parent.canReplace(index, index + 1);\n}\nfunction joinable(a, b) {\n    return !!(a && b && !a.isLeaf && a.canAppend(b));\n}\n/**\nFind an ancestor of the given position that can be joined to the\nblock before (or after if `dir` is positive). Returns the joinable\npoint, if any.\n*/\nfunction joinPoint(doc, pos, dir = -1) {\n    let $pos = doc.resolve(pos);\n    for (let d = $pos.depth;; d--) {\n        let before, after, index = $pos.index(d);\n        if (d == $pos.depth) {\n            before = $pos.nodeBefore;\n            after = $pos.nodeAfter;\n        }\n        else if (dir > 0) {\n            before = $pos.node(d + 1);\n            index++;\n            after = $pos.node(d).maybeChild(index);\n        }\n        else {\n            before = $pos.node(d).maybeChild(index - 1);\n            after = $pos.node(d + 1);\n        }\n        if (before && !before.isTextblock && joinable(before, after) &&\n            $pos.node(d).canReplace(index, index + 1))\n            return pos;\n        if (d == 0)\n            break;\n        pos = dir < 0 ? $pos.before(d) : $pos.after(d);\n    }\n}\nfunction join(tr, pos, depth) {\n    let step = new ReplaceStep(pos - depth, pos + depth, Slice.empty, true);\n    tr.step(step);\n}\n/**\nTry to find a point where a node of the given type can be inserted\nnear `pos`, by searching up the node hierarchy when `pos` itself\nisn't a valid place but is at the start or end of a node. Return\nnull if no position was found.\n*/\nfunction insertPoint(doc, pos, nodeType) {\n    let $pos = doc.resolve(pos);\n    if ($pos.parent.canReplaceWith($pos.index(), $pos.index(), nodeType))\n        return pos;\n    if ($pos.parentOffset == 0)\n        for (let d = $pos.depth - 1; d >= 0; d--) {\n            let index = $pos.index(d);\n            if ($pos.node(d).canReplaceWith(index, index, nodeType))\n                return $pos.before(d + 1);\n            if (index > 0)\n                return null;\n        }\n    if ($pos.parentOffset == $pos.parent.content.size)\n        for (let d = $pos.depth - 1; d >= 0; d--) {\n            let index = $pos.indexAfter(d);\n            if ($pos.node(d).canReplaceWith(index, index, nodeType))\n                return $pos.after(d + 1);\n            if (index < $pos.node(d).childCount)\n                return null;\n        }\n    return null;\n}\n/**\nFinds a position at or around the given position where the given\nslice can be inserted. Will look at parent nodes' nearest boundary\nand try there, even if the original position wasn't directly at the\nstart or end of that node. Returns null when no position was found.\n*/\nfunction dropPoint(doc, pos, slice) {\n    let $pos = doc.resolve(pos);\n    if (!slice.content.size)\n        return pos;\n    let content = slice.content;\n    for (let i = 0; i < slice.openStart; i++)\n        content = content.firstChild.content;\n    for (let pass = 1; pass <= (slice.openStart == 0 && slice.size ? 2 : 1); pass++) {\n        for (let d = $pos.depth; d >= 0; d--) {\n            let bias = d == $pos.depth ? 0 : $pos.pos <= ($pos.start(d + 1) + $pos.end(d + 1)) / 2 ? -1 : 1;\n            let insertPos = $pos.index(d) + (bias > 0 ? 1 : 0);\n            let parent = $pos.node(d), fits = false;\n            if (pass == 1) {\n                fits = parent.canReplace(insertPos, insertPos, content);\n            }\n            else {\n                let wrapping = parent.contentMatchAt(insertPos).findWrapping(content.firstChild.type);\n                fits = wrapping && parent.canReplaceWith(insertPos, insertPos, wrapping[0]);\n            }\n            if (fits)\n                return bias == 0 ? $pos.pos : bias < 0 ? $pos.before(d + 1) : $pos.after(d + 1);\n        }\n    }\n    return null;\n}\n\n/**\n‘Fit’ a slice into a given position in the document, producing a\n[step](https://prosemirror.net/docs/ref/#transform.Step) that inserts it. Will return null if\nthere's no meaningful way to insert the slice here, or inserting it\nwould be a no-op (an empty slice over an empty range).\n*/\nfunction replaceStep(doc, from, to = from, slice = Slice.empty) {\n    if (from == to && !slice.size)\n        return null;\n    let $from = doc.resolve(from), $to = doc.resolve(to);\n    // Optimization -- avoid work if it's obvious that it's not needed.\n    if (fitsTrivially($from, $to, slice))\n        return new ReplaceStep(from, to, slice);\n    return new Fitter($from, $to, slice).fit();\n}\nfunction fitsTrivially($from, $to, slice) {\n    return !slice.openStart && !slice.openEnd && $from.start() == $to.start() &&\n        $from.parent.canReplace($from.index(), $to.index(), slice.content);\n}\n// Algorithm for 'placing' the elements of a slice into a gap:\n//\n// We consider the content of each node that is open to the left to be\n// independently placeable. I.e. in <p(\"foo\"), p(\"bar\")>, when the\n// paragraph on the left is open, \"foo\" can be placed (somewhere on\n// the left side of the replacement gap) independently from p(\"bar\").\n//\n// This class tracks the state of the placement progress in the\n// following properties:\n//\n//  - `frontier` holds a stack of `{type, match}` objects that\n//    represent the open side of the replacement. It starts at\n//    `$from`, then moves forward as content is placed, and is finally\n//    reconciled with `$to`.\n//\n//  - `unplaced` is a slice that represents the content that hasn't\n//    been placed yet.\n//\n//  - `placed` is a fragment of placed content. Its open-start value\n//    is implicit in `$from`, and its open-end value in `frontier`.\nclass Fitter {\n    constructor($from, $to, unplaced) {\n        this.$from = $from;\n        this.$to = $to;\n        this.unplaced = unplaced;\n        this.frontier = [];\n        this.placed = Fragment.empty;\n        for (let i = 0; i <= $from.depth; i++) {\n            let node = $from.node(i);\n            this.frontier.push({\n                type: node.type,\n                match: node.contentMatchAt($from.indexAfter(i))\n            });\n        }\n        for (let i = $from.depth; i > 0; i--)\n            this.placed = Fragment.from($from.node(i).copy(this.placed));\n    }\n    get depth() { return this.frontier.length - 1; }\n    fit() {\n        // As long as there's unplaced content, try to place some of it.\n        // If that fails, either increase the open score of the unplaced\n        // slice, or drop nodes from it, and then try again.\n        while (this.unplaced.size) {\n            let fit = this.findFittable();\n            if (fit)\n                this.placeNodes(fit);\n            else\n                this.openMore() || this.dropNode();\n        }\n        // When there's inline content directly after the frontier _and_\n        // directly after `this.$to`, we must generate a `ReplaceAround`\n        // step that pulls that content into the node after the frontier.\n        // That means the fitting must be done to the end of the textblock\n        // node after `this.$to`, not `this.$to` itself.\n        let moveInline = this.mustMoveInline(), placedSize = this.placed.size - this.depth - this.$from.depth;\n        let $from = this.$from, $to = this.close(moveInline < 0 ? this.$to : $from.doc.resolve(moveInline));\n        if (!$to)\n            return null;\n        // If closing to `$to` succeeded, create a step\n        let content = this.placed, openStart = $from.depth, openEnd = $to.depth;\n        while (openStart && openEnd && content.childCount == 1) { // Normalize by dropping open parent nodes\n            content = content.firstChild.content;\n            openStart--;\n            openEnd--;\n        }\n        let slice = new Slice(content, openStart, openEnd);\n        if (moveInline > -1)\n            return new ReplaceAroundStep($from.pos, moveInline, this.$to.pos, this.$to.end(), slice, placedSize);\n        if (slice.size || $from.pos != this.$to.pos) // Don't generate no-op steps\n            return new ReplaceStep($from.pos, $to.pos, slice);\n        return null;\n    }\n    // Find a position on the start spine of `this.unplaced` that has\n    // content that can be moved somewhere on the frontier. Returns two\n    // depths, one for the slice and one for the frontier.\n    findFittable() {\n        let startDepth = this.unplaced.openStart;\n        for (let cur = this.unplaced.content, d = 0, openEnd = this.unplaced.openEnd; d < startDepth; d++) {\n            let node = cur.firstChild;\n            if (cur.childCount > 1)\n                openEnd = 0;\n            if (node.type.spec.isolating && openEnd <= d) {\n                startDepth = d;\n                break;\n            }\n            cur = node.content;\n        }\n        // Only try wrapping nodes (pass 2) after finding a place without\n        // wrapping failed.\n        for (let pass = 1; pass <= 2; pass++) {\n            for (let sliceDepth = pass == 1 ? startDepth : this.unplaced.openStart; sliceDepth >= 0; sliceDepth--) {\n                let fragment, parent = null;\n                if (sliceDepth) {\n                    parent = contentAt(this.unplaced.content, sliceDepth - 1).firstChild;\n                    fragment = parent.content;\n                }\n                else {\n                    fragment = this.unplaced.content;\n                }\n                let first = fragment.firstChild;\n                for (let frontierDepth = this.depth; frontierDepth >= 0; frontierDepth--) {\n                    let { type, match } = this.frontier[frontierDepth], wrap, inject = null;\n                    // In pass 1, if the next node matches, or there is no next\n                    // node but the parents look compatible, we've found a\n                    // place.\n                    if (pass == 1 && (first ? match.matchType(first.type) || (inject = match.fillBefore(Fragment.from(first), false))\n                        : parent && type.compatibleContent(parent.type)))\n                        return { sliceDepth, frontierDepth, parent, inject };\n                    // In pass 2, look for a set of wrapping nodes that make\n                    // `first` fit here.\n                    else if (pass == 2 && first && (wrap = match.findWrapping(first.type)))\n                        return { sliceDepth, frontierDepth, parent, wrap };\n                    // Don't continue looking further up if the parent node\n                    // would fit here.\n                    if (parent && match.matchType(parent.type))\n                        break;\n                }\n            }\n        }\n    }\n    openMore() {\n        let { content, openStart, openEnd } = this.unplaced;\n        let inner = contentAt(content, openStart);\n        if (!inner.childCount || inner.firstChild.isLeaf)\n            return false;\n        this.unplaced = new Slice(content, openStart + 1, Math.max(openEnd, inner.size + openStart >= content.size - openEnd ? openStart + 1 : 0));\n        return true;\n    }\n    dropNode() {\n        let { content, openStart, openEnd } = this.unplaced;\n        let inner = contentAt(content, openStart);\n        if (inner.childCount <= 1 && openStart > 0) {\n            let openAtEnd = content.size - openStart <= openStart + inner.size;\n            this.unplaced = new Slice(dropFromFragment(content, openStart - 1, 1), openStart - 1, openAtEnd ? openStart - 1 : openEnd);\n        }\n        else {\n            this.unplaced = new Slice(dropFromFragment(content, openStart, 1), openStart, openEnd);\n        }\n    }\n    // Move content from the unplaced slice at `sliceDepth` to the\n    // frontier node at `frontierDepth`. Close that frontier node when\n    // applicable.\n    placeNodes({ sliceDepth, frontierDepth, parent, inject, wrap }) {\n        while (this.depth > frontierDepth)\n            this.closeFrontierNode();\n        if (wrap)\n            for (let i = 0; i < wrap.length; i++)\n                this.openFrontierNode(wrap[i]);\n        let slice = this.unplaced, fragment = parent ? parent.content : slice.content;\n        let openStart = slice.openStart - sliceDepth;\n        let taken = 0, add = [];\n        let { match, type } = this.frontier[frontierDepth];\n        if (inject) {\n            for (let i = 0; i < inject.childCount; i++)\n                add.push(inject.child(i));\n            match = match.matchFragment(inject);\n        }\n        // Computes the amount of (end) open nodes at the end of the\n        // fragment. When 0, the parent is open, but no more. When\n        // negative, nothing is open.\n        let openEndCount = (fragment.size + sliceDepth) - (slice.content.size - slice.openEnd);\n        // Scan over the fragment, fitting as many child nodes as\n        // possible.\n        while (taken < fragment.childCount) {\n            let next = fragment.child(taken), matches = match.matchType(next.type);\n            if (!matches)\n                break;\n            taken++;\n            if (taken > 1 || openStart == 0 || next.content.size) { // Drop empty open nodes\n                match = matches;\n                add.push(closeNodeStart(next.mark(type.allowedMarks(next.marks)), taken == 1 ? openStart : 0, taken == fragment.childCount ? openEndCount : -1));\n            }\n        }\n        let toEnd = taken == fragment.childCount;\n        if (!toEnd)\n            openEndCount = -1;\n        this.placed = addToFragment(this.placed, frontierDepth, Fragment.from(add));\n        this.frontier[frontierDepth].match = match;\n        // If the parent types match, and the entire node was moved, and\n        // it's not open, close this frontier node right away.\n        if (toEnd && openEndCount < 0 && parent && parent.type == this.frontier[this.depth].type && this.frontier.length > 1)\n            this.closeFrontierNode();\n        // Add new frontier nodes for any open nodes at the end.\n        for (let i = 0, cur = fragment; i < openEndCount; i++) {\n            let node = cur.lastChild;\n            this.frontier.push({ type: node.type, match: node.contentMatchAt(node.childCount) });\n            cur = node.content;\n        }\n        // Update `this.unplaced`. Drop the entire node from which we\n        // placed it we got to its end, otherwise just drop the placed\n        // nodes.\n        this.unplaced = !toEnd ? new Slice(dropFromFragment(slice.content, sliceDepth, taken), slice.openStart, slice.openEnd)\n            : sliceDepth == 0 ? Slice.empty\n                : new Slice(dropFromFragment(slice.content, sliceDepth - 1, 1), sliceDepth - 1, openEndCount < 0 ? slice.openEnd : sliceDepth - 1);\n    }\n    mustMoveInline() {\n        if (!this.$to.parent.isTextblock)\n            return -1;\n        let top = this.frontier[this.depth], level;\n        if (!top.type.isTextblock || !contentAfterFits(this.$to, this.$to.depth, top.type, top.match, false) ||\n            (this.$to.depth == this.depth && (level = this.findCloseLevel(this.$to)) && level.depth == this.depth))\n            return -1;\n        let { depth } = this.$to, after = this.$to.after(depth);\n        while (depth > 1 && after == this.$to.end(--depth))\n            ++after;\n        return after;\n    }\n    findCloseLevel($to) {\n        scan: for (let i = Math.min(this.depth, $to.depth); i >= 0; i--) {\n            let { match, type } = this.frontier[i];\n            let dropInner = i < $to.depth && $to.end(i + 1) == $to.pos + ($to.depth - (i + 1));\n            let fit = contentAfterFits($to, i, type, match, dropInner);\n            if (!fit)\n                continue;\n            for (let d = i - 1; d >= 0; d--) {\n                let { match, type } = this.frontier[d];\n                let matches = contentAfterFits($to, d, type, match, true);\n                if (!matches || matches.childCount)\n                    continue scan;\n            }\n            return { depth: i, fit, move: dropInner ? $to.doc.resolve($to.after(i + 1)) : $to };\n        }\n    }\n    close($to) {\n        let close = this.findCloseLevel($to);\n        if (!close)\n            return null;\n        while (this.depth > close.depth)\n            this.closeFrontierNode();\n        if (close.fit.childCount)\n            this.placed = addToFragment(this.placed, close.depth, close.fit);\n        $to = close.move;\n        for (let d = close.depth + 1; d <= $to.depth; d++) {\n            let node = $to.node(d), add = node.type.contentMatch.fillBefore(node.content, true, $to.index(d));\n            this.openFrontierNode(node.type, node.attrs, add);\n        }\n        return $to;\n    }\n    openFrontierNode(type, attrs = null, content) {\n        let top = this.frontier[this.depth];\n        top.match = top.match.matchType(type);\n        this.placed = addToFragment(this.placed, this.depth, Fragment.from(type.create(attrs, content)));\n        this.frontier.push({ type, match: type.contentMatch });\n    }\n    closeFrontierNode() {\n        let open = this.frontier.pop();\n        let add = open.match.fillBefore(Fragment.empty, true);\n        if (add.childCount)\n            this.placed = addToFragment(this.placed, this.frontier.length, add);\n    }\n}\nfunction dropFromFragment(fragment, depth, count) {\n    if (depth == 0)\n        return fragment.cutByIndex(count, fragment.childCount);\n    return fragment.replaceChild(0, fragment.firstChild.copy(dropFromFragment(fragment.firstChild.content, depth - 1, count)));\n}\nfunction addToFragment(fragment, depth, content) {\n    if (depth == 0)\n        return fragment.append(content);\n    return fragment.replaceChild(fragment.childCount - 1, fragment.lastChild.copy(addToFragment(fragment.lastChild.content, depth - 1, content)));\n}\nfunction contentAt(fragment, depth) {\n    for (let i = 0; i < depth; i++)\n        fragment = fragment.firstChild.content;\n    return fragment;\n}\nfunction closeNodeStart(node, openStart, openEnd) {\n    if (openStart <= 0)\n        return node;\n    let frag = node.content;\n    if (openStart > 1)\n        frag = frag.replaceChild(0, closeNodeStart(frag.firstChild, openStart - 1, frag.childCount == 1 ? openEnd - 1 : 0));\n    if (openStart > 0) {\n        frag = node.type.contentMatch.fillBefore(frag).append(frag);\n        if (openEnd <= 0)\n            frag = frag.append(node.type.contentMatch.matchFragment(frag).fillBefore(Fragment.empty, true));\n    }\n    return node.copy(frag);\n}\nfunction contentAfterFits($to, depth, type, match, open) {\n    let node = $to.node(depth), index = open ? $to.indexAfter(depth) : $to.index(depth);\n    if (index == node.childCount && !type.compatibleContent(node.type))\n        return null;\n    let fit = match.fillBefore(node.content, true, index);\n    return fit && !invalidMarks(type, node.content, index) ? fit : null;\n}\nfunction invalidMarks(type, fragment, start) {\n    for (let i = start; i < fragment.childCount; i++)\n        if (!type.allowsMarks(fragment.child(i).marks))\n            return true;\n    return false;\n}\nfunction definesContent(type) {\n    return type.spec.defining || type.spec.definingForContent;\n}\nfunction replaceRange(tr, from, to, slice) {\n    if (!slice.size)\n        return tr.deleteRange(from, to);\n    let $from = tr.doc.resolve(from), $to = tr.doc.resolve(to);\n    if (fitsTrivially($from, $to, slice))\n        return tr.step(new ReplaceStep(from, to, slice));\n    let targetDepths = coveredDepths($from, tr.doc.resolve(to));\n    // Can't replace the whole document, so remove 0 if it's present\n    if (targetDepths[targetDepths.length - 1] == 0)\n        targetDepths.pop();\n    // Negative numbers represent not expansion over the whole node at\n    // that depth, but replacing from $from.before(-D) to $to.pos.\n    let preferredTarget = -($from.depth + 1);\n    targetDepths.unshift(preferredTarget);\n    // This loop picks a preferred target depth, if one of the covering\n    // depths is not outside of a defining node, and adds negative\n    // depths for any depth that has $from at its start and does not\n    // cross a defining node.\n    for (let d = $from.depth, pos = $from.pos - 1; d > 0; d--, pos--) {\n        let spec = $from.node(d).type.spec;\n        if (spec.defining || spec.definingAsContext || spec.isolating)\n            break;\n        if (targetDepths.indexOf(d) > -1)\n            preferredTarget = d;\n        else if ($from.before(d) == pos)\n            targetDepths.splice(1, 0, -d);\n    }\n    // Try to fit each possible depth of the slice into each possible\n    // target depth, starting with the preferred depths.\n    let preferredTargetIndex = targetDepths.indexOf(preferredTarget);\n    let leftNodes = [], preferredDepth = slice.openStart;\n    for (let content = slice.content, i = 0;; i++) {\n        let node = content.firstChild;\n        leftNodes.push(node);\n        if (i == slice.openStart)\n            break;\n        content = node.content;\n    }\n    // Back up preferredDepth to cover defining textblocks directly\n    // above it, possibly skipping a non-defining textblock.\n    for (let d = preferredDepth - 1; d >= 0; d--) {\n        let leftNode = leftNodes[d], def = definesContent(leftNode.type);\n        if (def && !leftNode.sameMarkup($from.node(Math.abs(preferredTarget) - 1)))\n            preferredDepth = d;\n        else if (def || !leftNode.type.isTextblock)\n            break;\n    }\n    for (let j = slice.openStart; j >= 0; j--) {\n        let openDepth = (j + preferredDepth + 1) % (slice.openStart + 1);\n        let insert = leftNodes[openDepth];\n        if (!insert)\n            continue;\n        for (let i = 0; i < targetDepths.length; i++) {\n            // Loop over possible expansion levels, starting with the\n            // preferred one\n            let targetDepth = targetDepths[(i + preferredTargetIndex) % targetDepths.length], expand = true;\n            if (targetDepth < 0) {\n                expand = false;\n                targetDepth = -targetDepth;\n            }\n            let parent = $from.node(targetDepth - 1), index = $from.index(targetDepth - 1);\n            if (parent.canReplaceWith(index, index, insert.type, insert.marks))\n                return tr.replace($from.before(targetDepth), expand ? $to.after(targetDepth) : to, new Slice(closeFragment(slice.content, 0, slice.openStart, openDepth), openDepth, slice.openEnd));\n        }\n    }\n    let startSteps = tr.steps.length;\n    for (let i = targetDepths.length - 1; i >= 0; i--) {\n        tr.replace(from, to, slice);\n        if (tr.steps.length > startSteps)\n            break;\n        let depth = targetDepths[i];\n        if (depth < 0)\n            continue;\n        from = $from.before(depth);\n        to = $to.after(depth);\n    }\n}\nfunction closeFragment(fragment, depth, oldOpen, newOpen, parent) {\n    if (depth < oldOpen) {\n        let first = fragment.firstChild;\n        fragment = fragment.replaceChild(0, first.copy(closeFragment(first.content, depth + 1, oldOpen, newOpen, first)));\n    }\n    if (depth > newOpen) {\n        let match = parent.contentMatchAt(0);\n        let start = match.fillBefore(fragment).append(fragment);\n        fragment = start.append(match.matchFragment(start).fillBefore(Fragment.empty, true));\n    }\n    return fragment;\n}\nfunction replaceRangeWith(tr, from, to, node) {\n    if (!node.isInline && from == to && tr.doc.resolve(from).parent.content.size) {\n        let point = insertPoint(tr.doc, from, node.type);\n        if (point != null)\n            from = to = point;\n    }\n    tr.replaceRange(from, to, new Slice(Fragment.from(node), 0, 0));\n}\nfunction deleteRange(tr, from, to) {\n    let $from = tr.doc.resolve(from), $to = tr.doc.resolve(to);\n    let covered = coveredDepths($from, $to);\n    for (let i = 0; i < covered.length; i++) {\n        let depth = covered[i], last = i == covered.length - 1;\n        if ((last && depth == 0) || $from.node(depth).type.contentMatch.validEnd)\n            return tr.delete($from.start(depth), $to.end(depth));\n        if (depth > 0 && (last || $from.node(depth - 1).canReplace($from.index(depth - 1), $to.indexAfter(depth - 1))))\n            return tr.delete($from.before(depth), $to.after(depth));\n    }\n    for (let d = 1; d <= $from.depth && d <= $to.depth; d++) {\n        if (from - $from.start(d) == $from.depth - d && to > $from.end(d) && $to.end(d) - to != $to.depth - d)\n            return tr.delete($from.before(d), to);\n    }\n    tr.delete(from, to);\n}\n// Returns an array of all depths for which $from - $to spans the\n// whole content of the nodes at that depth.\nfunction coveredDepths($from, $to) {\n    let result = [], minDepth = Math.min($from.depth, $to.depth);\n    for (let d = minDepth; d >= 0; d--) {\n        let start = $from.start(d);\n        if (start < $from.pos - ($from.depth - d) ||\n            $to.end(d) > $to.pos + ($to.depth - d) ||\n            $from.node(d).type.spec.isolating ||\n            $to.node(d).type.spec.isolating)\n            break;\n        if (start == $to.start(d) ||\n            (d == $from.depth && d == $to.depth && $from.parent.inlineContent && $to.parent.inlineContent &&\n                d && $to.start(d - 1) == start - 1))\n            result.push(d);\n    }\n    return result;\n}\n\n/**\nUpdate an attribute in a specific node.\n*/\nclass AttrStep extends Step {\n    /**\n    Construct an attribute step.\n    */\n    constructor(\n    /**\n    The position of the target node.\n    */\n    pos, \n    /**\n    The attribute to set.\n    */\n    attr, \n    // The attribute's new value.\n    value) {\n        super();\n        this.pos = pos;\n        this.attr = attr;\n        this.value = value;\n    }\n    apply(doc) {\n        let node = doc.nodeAt(this.pos);\n        if (!node)\n            return StepResult.fail(\"No node at attribute step's position\");\n        let attrs = Object.create(null);\n        for (let name in node.attrs)\n            attrs[name] = node.attrs[name];\n        attrs[this.attr] = this.value;\n        let updated = node.type.create(attrs, null, node.marks);\n        return StepResult.fromReplace(doc, this.pos, this.pos + 1, new Slice(Fragment.from(updated), 0, node.isLeaf ? 0 : 1));\n    }\n    getMap() {\n        return StepMap.empty;\n    }\n    invert(doc) {\n        return new AttrStep(this.pos, this.attr, doc.nodeAt(this.pos).attrs[this.attr]);\n    }\n    map(mapping) {\n        let pos = mapping.mapResult(this.pos, 1);\n        return pos.deletedAfter ? null : new AttrStep(pos.pos, this.attr, this.value);\n    }\n    toJSON() {\n        return { stepType: \"attr\", pos: this.pos, attr: this.attr, value: this.value };\n    }\n    static fromJSON(schema, json) {\n        if (typeof json.pos != \"number\" || typeof json.attr != \"string\")\n            throw new RangeError(\"Invalid input for AttrStep.fromJSON\");\n        return new AttrStep(json.pos, json.attr, json.value);\n    }\n}\nStep.jsonID(\"attr\", AttrStep);\n/**\nUpdate an attribute in the doc node.\n*/\nclass DocAttrStep extends Step {\n    /**\n    Construct an attribute step.\n    */\n    constructor(\n    /**\n    The attribute to set.\n    */\n    attr, \n    // The attribute's new value.\n    value) {\n        super();\n        this.attr = attr;\n        this.value = value;\n    }\n    apply(doc) {\n        let attrs = Object.create(null);\n        for (let name in doc.attrs)\n            attrs[name] = doc.attrs[name];\n        attrs[this.attr] = this.value;\n        let updated = doc.type.create(attrs, doc.content, doc.marks);\n        return StepResult.ok(updated);\n    }\n    getMap() {\n        return StepMap.empty;\n    }\n    invert(doc) {\n        return new DocAttrStep(this.attr, doc.attrs[this.attr]);\n    }\n    map(mapping) {\n        return this;\n    }\n    toJSON() {\n        return { stepType: \"docAttr\", attr: this.attr, value: this.value };\n    }\n    static fromJSON(schema, json) {\n        if (typeof json.attr != \"string\")\n            throw new RangeError(\"Invalid input for DocAttrStep.fromJSON\");\n        return new DocAttrStep(json.attr, json.value);\n    }\n}\nStep.jsonID(\"docAttr\", DocAttrStep);\n\n/**\n@internal\n*/\nlet TransformError = class extends Error {\n};\nTransformError = function TransformError(message) {\n    let err = Error.call(this, message);\n    err.__proto__ = TransformError.prototype;\n    return err;\n};\nTransformError.prototype = Object.create(Error.prototype);\nTransformError.prototype.constructor = TransformError;\nTransformError.prototype.name = \"TransformError\";\n/**\nAbstraction to build up and track an array of\n[steps](https://prosemirror.net/docs/ref/#transform.Step) representing a document transformation.\n\nMost transforming methods return the `Transform` object itself, so\nthat they can be chained.\n*/\nclass Transform {\n    /**\n    Create a transform that starts with the given document.\n    */\n    constructor(\n    /**\n    The current document (the result of applying the steps in the\n    transform).\n    */\n    doc) {\n        this.doc = doc;\n        /**\n        The steps in this transform.\n        */\n        this.steps = [];\n        /**\n        The documents before each of the steps.\n        */\n        this.docs = [];\n        /**\n        A mapping with the maps for each of the steps in this transform.\n        */\n        this.mapping = new Mapping;\n    }\n    /**\n    The starting document.\n    */\n    get before() { return this.docs.length ? this.docs[0] : this.doc; }\n    /**\n    Apply a new step in this transform, saving the result. Throws an\n    error when the step fails.\n    */\n    step(step) {\n        let result = this.maybeStep(step);\n        if (result.failed)\n            throw new TransformError(result.failed);\n        return this;\n    }\n    /**\n    Try to apply a step in this transformation, ignoring it if it\n    fails. Returns the step result.\n    */\n    maybeStep(step) {\n        let result = step.apply(this.doc);\n        if (!result.failed)\n            this.addStep(step, result.doc);\n        return result;\n    }\n    /**\n    True when the document has been changed (when there are any\n    steps).\n    */\n    get docChanged() {\n        return this.steps.length > 0;\n    }\n    /**\n    @internal\n    */\n    addStep(step, doc) {\n        this.docs.push(this.doc);\n        this.steps.push(step);\n        this.mapping.appendMap(step.getMap());\n        this.doc = doc;\n    }\n    /**\n    Replace the part of the document between `from` and `to` with the\n    given `slice`.\n    */\n    replace(from, to = from, slice = Slice.empty) {\n        let step = replaceStep(this.doc, from, to, slice);\n        if (step)\n            this.step(step);\n        return this;\n    }\n    /**\n    Replace the given range with the given content, which may be a\n    fragment, node, or array of nodes.\n    */\n    replaceWith(from, to, content) {\n        return this.replace(from, to, new Slice(Fragment.from(content), 0, 0));\n    }\n    /**\n    Delete the content between the given positions.\n    */\n    delete(from, to) {\n        return this.replace(from, to, Slice.empty);\n    }\n    /**\n    Insert the given content at the given position.\n    */\n    insert(pos, content) {\n        return this.replaceWith(pos, pos, content);\n    }\n    /**\n    Replace a range of the document with a given slice, using\n    `from`, `to`, and the slice's\n    [`openStart`](https://prosemirror.net/docs/ref/#model.Slice.openStart) property as hints, rather\n    than fixed start and end points. This method may grow the\n    replaced area or close open nodes in the slice in order to get a\n    fit that is more in line with WYSIWYG expectations, by dropping\n    fully covered parent nodes of the replaced region when they are\n    marked [non-defining as\n    context](https://prosemirror.net/docs/ref/#model.NodeSpec.definingAsContext), or including an\n    open parent node from the slice that _is_ marked as [defining\n    its content](https://prosemirror.net/docs/ref/#model.NodeSpec.definingForContent).\n    \n    This is the method, for example, to handle paste. The similar\n    [`replace`](https://prosemirror.net/docs/ref/#transform.Transform.replace) method is a more\n    primitive tool which will _not_ move the start and end of its given\n    range, and is useful in situations where you need more precise\n    control over what happens.\n    */\n    replaceRange(from, to, slice) {\n        replaceRange(this, from, to, slice);\n        return this;\n    }\n    /**\n    Replace the given range with a node, but use `from` and `to` as\n    hints, rather than precise positions. When from and to are the same\n    and are at the start or end of a parent node in which the given\n    node doesn't fit, this method may _move_ them out towards a parent\n    that does allow the given node to be placed. When the given range\n    completely covers a parent node, this method may completely replace\n    that parent node.\n    */\n    replaceRangeWith(from, to, node) {\n        replaceRangeWith(this, from, to, node);\n        return this;\n    }\n    /**\n    Delete the given range, expanding it to cover fully covered\n    parent nodes until a valid replace is found.\n    */\n    deleteRange(from, to) {\n        deleteRange(this, from, to);\n        return this;\n    }\n    /**\n    Split the content in the given range off from its parent, if there\n    is sibling content before or after it, and move it up the tree to\n    the depth specified by `target`. You'll probably want to use\n    [`liftTarget`](https://prosemirror.net/docs/ref/#transform.liftTarget) to compute `target`, to make\n    sure the lift is valid.\n    */\n    lift(range, target) {\n        lift(this, range, target);\n        return this;\n    }\n    /**\n    Join the blocks around the given position. If depth is 2, their\n    last and first siblings are also joined, and so on.\n    */\n    join(pos, depth = 1) {\n        join(this, pos, depth);\n        return this;\n    }\n    /**\n    Wrap the given [range](https://prosemirror.net/docs/ref/#model.NodeRange) in the given set of wrappers.\n    The wrappers are assumed to be valid in this position, and should\n    probably be computed with [`findWrapping`](https://prosemirror.net/docs/ref/#transform.findWrapping).\n    */\n    wrap(range, wrappers) {\n        wrap(this, range, wrappers);\n        return this;\n    }\n    /**\n    Set the type of all textblocks (partly) between `from` and `to` to\n    the given node type with the given attributes.\n    */\n    setBlockType(from, to = from, type, attrs = null) {\n        setBlockType(this, from, to, type, attrs);\n        return this;\n    }\n    /**\n    Change the type, attributes, and/or marks of the node at `pos`.\n    When `type` isn't given, the existing node type is preserved,\n    */\n    setNodeMarkup(pos, type, attrs = null, marks) {\n        setNodeMarkup(this, pos, type, attrs, marks);\n        return this;\n    }\n    /**\n    Set a single attribute on a given node to a new value.\n    The `pos` addresses the document content. Use `setDocAttribute`\n    to set attributes on the document itself.\n    */\n    setNodeAttribute(pos, attr, value) {\n        this.step(new AttrStep(pos, attr, value));\n        return this;\n    }\n    /**\n    Set a single attribute on the document to a new value.\n    */\n    setDocAttribute(attr, value) {\n        this.step(new DocAttrStep(attr, value));\n        return this;\n    }\n    /**\n    Add a mark to the node at position `pos`.\n    */\n    addNodeMark(pos, mark) {\n        this.step(new AddNodeMarkStep(pos, mark));\n        return this;\n    }\n    /**\n    Remove a mark (or a mark of the given type) from the node at\n    position `pos`.\n    */\n    removeNodeMark(pos, mark) {\n        if (!(mark instanceof Mark)) {\n            let node = this.doc.nodeAt(pos);\n            if (!node)\n                throw new RangeError(\"No node at position \" + pos);\n            mark = mark.isInSet(node.marks);\n            if (!mark)\n                return this;\n        }\n        this.step(new RemoveNodeMarkStep(pos, mark));\n        return this;\n    }\n    /**\n    Split the node at the given position, and optionally, if `depth` is\n    greater than one, any number of nodes above that. By default, the\n    parts split off will inherit the node type of the original node.\n    This can be changed by passing an array of types and attributes to\n    use after the split.\n    */\n    split(pos, depth = 1, typesAfter) {\n        split(this, pos, depth, typesAfter);\n        return this;\n    }\n    /**\n    Add the given mark to the inline content between `from` and `to`.\n    */\n    addMark(from, to, mark) {\n        addMark(this, from, to, mark);\n        return this;\n    }\n    /**\n    Remove marks from inline nodes between `from` and `to`. When\n    `mark` is a single mark, remove precisely that mark. When it is\n    a mark type, remove all marks of that type. When it is null,\n    remove all marks of any type.\n    */\n    removeMark(from, to, mark) {\n        removeMark(this, from, to, mark);\n        return this;\n    }\n    /**\n    Removes all marks and nodes from the content of the node at\n    `pos` that don't match the given new parent node type. Accepts\n    an optional starting [content match](https://prosemirror.net/docs/ref/#model.ContentMatch) as\n    third argument.\n    */\n    clearIncompatible(pos, parentType, match) {\n        clearIncompatible(this, pos, parentType, match);\n        return this;\n    }\n}\n\nexport { AddMarkStep, AddNodeMarkStep, AttrStep, DocAttrStep, MapResult, Mapping, RemoveMarkStep, RemoveNodeMarkStep, ReplaceAroundStep, ReplaceStep, Step, StepMap, StepResult, Transform, TransformError, canJoin, canSplit, dropPoint, findWrapping, insertPoint, joinPoint, liftTarget, replaceStep };\n","import { Slice, Fragment, Mark, Node } from 'prosemirror-model';\nimport { ReplaceStep, ReplaceAroundStep, Transform } from 'prosemirror-transform';\n\nconst classesById = Object.create(null);\n/**\nSuperclass for editor selections. Every selection type should\nextend this. Should not be instantiated directly.\n*/\nclass Selection {\n    /**\n    Initialize a selection with the head and anchor and ranges. If no\n    ranges are given, constructs a single range across `$anchor` and\n    `$head`.\n    */\n    constructor(\n    /**\n    The resolved anchor of the selection (the side that stays in\n    place when the selection is modified).\n    */\n    $anchor, \n    /**\n    The resolved head of the selection (the side that moves when\n    the selection is modified).\n    */\n    $head, ranges) {\n        this.$anchor = $anchor;\n        this.$head = $head;\n        this.ranges = ranges || [new SelectionRange($anchor.min($head), $anchor.max($head))];\n    }\n    /**\n    The selection's anchor, as an unresolved position.\n    */\n    get anchor() { return this.$anchor.pos; }\n    /**\n    The selection's head.\n    */\n    get head() { return this.$head.pos; }\n    /**\n    The lower bound of the selection's main range.\n    */\n    get from() { return this.$from.pos; }\n    /**\n    The upper bound of the selection's main range.\n    */\n    get to() { return this.$to.pos; }\n    /**\n    The resolved lower  bound of the selection's main range.\n    */\n    get $from() {\n        return this.ranges[0].$from;\n    }\n    /**\n    The resolved upper bound of the selection's main range.\n    */\n    get $to() {\n        return this.ranges[0].$to;\n    }\n    /**\n    Indicates whether the selection contains any content.\n    */\n    get empty() {\n        let ranges = this.ranges;\n        for (let i = 0; i < ranges.length; i++)\n            if (ranges[i].$from.pos != ranges[i].$to.pos)\n                return false;\n        return true;\n    }\n    /**\n    Get the content of this selection as a slice.\n    */\n    content() {\n        return this.$from.doc.slice(this.from, this.to, true);\n    }\n    /**\n    Replace the selection with a slice or, if no slice is given,\n    delete the selection. Will append to the given transaction.\n    */\n    replace(tr, content = Slice.empty) {\n        // Put the new selection at the position after the inserted\n        // content. When that ended in an inline node, search backwards,\n        // to get the position after that node. If not, search forward.\n        let lastNode = content.content.lastChild, lastParent = null;\n        for (let i = 0; i < content.openEnd; i++) {\n            lastParent = lastNode;\n            lastNode = lastNode.lastChild;\n        }\n        let mapFrom = tr.steps.length, ranges = this.ranges;\n        for (let i = 0; i < ranges.length; i++) {\n            let { $from, $to } = ranges[i], mapping = tr.mapping.slice(mapFrom);\n            tr.replaceRange(mapping.map($from.pos), mapping.map($to.pos), i ? Slice.empty : content);\n            if (i == 0)\n                selectionToInsertionEnd(tr, mapFrom, (lastNode ? lastNode.isInline : lastParent && lastParent.isTextblock) ? -1 : 1);\n        }\n    }\n    /**\n    Replace the selection with the given node, appending the changes\n    to the given transaction.\n    */\n    replaceWith(tr, node) {\n        let mapFrom = tr.steps.length, ranges = this.ranges;\n        for (let i = 0; i < ranges.length; i++) {\n            let { $from, $to } = ranges[i], mapping = tr.mapping.slice(mapFrom);\n            let from = mapping.map($from.pos), to = mapping.map($to.pos);\n            if (i) {\n                tr.deleteRange(from, to);\n            }\n            else {\n                tr.replaceRangeWith(from, to, node);\n                selectionToInsertionEnd(tr, mapFrom, node.isInline ? -1 : 1);\n            }\n        }\n    }\n    /**\n    Find a valid cursor or leaf node selection starting at the given\n    position and searching back if `dir` is negative, and forward if\n    positive. When `textOnly` is true, only consider cursor\n    selections. Will return null when no valid selection position is\n    found.\n    */\n    static findFrom($pos, dir, textOnly = false) {\n        let inner = $pos.parent.inlineContent ? new TextSelection($pos)\n            : findSelectionIn($pos.node(0), $pos.parent, $pos.pos, $pos.index(), dir, textOnly);\n        if (inner)\n            return inner;\n        for (let depth = $pos.depth - 1; depth >= 0; depth--) {\n            let found = dir < 0\n                ? findSelectionIn($pos.node(0), $pos.node(depth), $pos.before(depth + 1), $pos.index(depth), dir, textOnly)\n                : findSelectionIn($pos.node(0), $pos.node(depth), $pos.after(depth + 1), $pos.index(depth) + 1, dir, textOnly);\n            if (found)\n                return found;\n        }\n        return null;\n    }\n    /**\n    Find a valid cursor or leaf node selection near the given\n    position. Searches forward first by default, but if `bias` is\n    negative, it will search backwards first.\n    */\n    static near($pos, bias = 1) {\n        return this.findFrom($pos, bias) || this.findFrom($pos, -bias) || new AllSelection($pos.node(0));\n    }\n    /**\n    Find the cursor or leaf node selection closest to the start of\n    the given document. Will return an\n    [`AllSelection`](https://prosemirror.net/docs/ref/#state.AllSelection) if no valid position\n    exists.\n    */\n    static atStart(doc) {\n        return findSelectionIn(doc, doc, 0, 0, 1) || new AllSelection(doc);\n    }\n    /**\n    Find the cursor or leaf node selection closest to the end of the\n    given document.\n    */\n    static atEnd(doc) {\n        return findSelectionIn(doc, doc, doc.content.size, doc.childCount, -1) || new AllSelection(doc);\n    }\n    /**\n    Deserialize the JSON representation of a selection. Must be\n    implemented for custom classes (as a static class method).\n    */\n    static fromJSON(doc, json) {\n        if (!json || !json.type)\n            throw new RangeError(\"Invalid input for Selection.fromJSON\");\n        let cls = classesById[json.type];\n        if (!cls)\n            throw new RangeError(`No selection type ${json.type} defined`);\n        return cls.fromJSON(doc, json);\n    }\n    /**\n    To be able to deserialize selections from JSON, custom selection\n    classes must register themselves with an ID string, so that they\n    can be disambiguated. Try to pick something that's unlikely to\n    clash with classes from other modules.\n    */\n    static jsonID(id, selectionClass) {\n        if (id in classesById)\n            throw new RangeError(\"Duplicate use of selection JSON ID \" + id);\n        classesById[id] = selectionClass;\n        selectionClass.prototype.jsonID = id;\n        return selectionClass;\n    }\n    /**\n    Get a [bookmark](https://prosemirror.net/docs/ref/#state.SelectionBookmark) for this selection,\n    which is a value that can be mapped without having access to a\n    current document, and later resolved to a real selection for a\n    given document again. (This is used mostly by the history to\n    track and restore old selections.) The default implementation of\n    this method just converts the selection to a text selection and\n    returns the bookmark for that.\n    */\n    getBookmark() {\n        return TextSelection.between(this.$anchor, this.$head).getBookmark();\n    }\n}\nSelection.prototype.visible = true;\n/**\nRepresents a selected range in a document.\n*/\nclass SelectionRange {\n    /**\n    Create a range.\n    */\n    constructor(\n    /**\n    The lower bound of the range.\n    */\n    $from, \n    /**\n    The upper bound of the range.\n    */\n    $to) {\n        this.$from = $from;\n        this.$to = $to;\n    }\n}\nlet warnedAboutTextSelection = false;\nfunction checkTextSelection($pos) {\n    if (!warnedAboutTextSelection && !$pos.parent.inlineContent) {\n        warnedAboutTextSelection = true;\n        console[\"warn\"](\"TextSelection endpoint not pointing into a node with inline content (\" + $pos.parent.type.name + \")\");\n    }\n}\n/**\nA text selection represents a classical editor selection, with a\nhead (the moving side) and anchor (immobile side), both of which\npoint into textblock nodes. It can be empty (a regular cursor\nposition).\n*/\nclass TextSelection extends Selection {\n    /**\n    Construct a text selection between the given points.\n    */\n    constructor($anchor, $head = $anchor) {\n        checkTextSelection($anchor);\n        checkTextSelection($head);\n        super($anchor, $head);\n    }\n    /**\n    Returns a resolved position if this is a cursor selection (an\n    empty text selection), and null otherwise.\n    */\n    get $cursor() { return this.$anchor.pos == this.$head.pos ? this.$head : null; }\n    map(doc, mapping) {\n        let $head = doc.resolve(mapping.map(this.head));\n        if (!$head.parent.inlineContent)\n            return Selection.near($head);\n        let $anchor = doc.resolve(mapping.map(this.anchor));\n        return new TextSelection($anchor.parent.inlineContent ? $anchor : $head, $head);\n    }\n    replace(tr, content = Slice.empty) {\n        super.replace(tr, content);\n        if (content == Slice.empty) {\n            let marks = this.$from.marksAcross(this.$to);\n            if (marks)\n                tr.ensureMarks(marks);\n        }\n    }\n    eq(other) {\n        return other instanceof TextSelection && other.anchor == this.anchor && other.head == this.head;\n    }\n    getBookmark() {\n        return new TextBookmark(this.anchor, this.head);\n    }\n    toJSON() {\n        return { type: \"text\", anchor: this.anchor, head: this.head };\n    }\n    /**\n    @internal\n    */\n    static fromJSON(doc, json) {\n        if (typeof json.anchor != \"number\" || typeof json.head != \"number\")\n            throw new RangeError(\"Invalid input for TextSelection.fromJSON\");\n        return new TextSelection(doc.resolve(json.anchor), doc.resolve(json.head));\n    }\n    /**\n    Create a text selection from non-resolved positions.\n    */\n    static create(doc, anchor, head = anchor) {\n        let $anchor = doc.resolve(anchor);\n        return new this($anchor, head == anchor ? $anchor : doc.resolve(head));\n    }\n    /**\n    Return a text selection that spans the given positions or, if\n    they aren't text positions, find a text selection near them.\n    `bias` determines whether the method searches forward (default)\n    or backwards (negative number) first. Will fall back to calling\n    [`Selection.near`](https://prosemirror.net/docs/ref/#state.Selection^near) when the document\n    doesn't contain a valid text position.\n    */\n    static between($anchor, $head, bias) {\n        let dPos = $anchor.pos - $head.pos;\n        if (!bias || dPos)\n            bias = dPos >= 0 ? 1 : -1;\n        if (!$head.parent.inlineContent) {\n            let found = Selection.findFrom($head, bias, true) || Selection.findFrom($head, -bias, true);\n            if (found)\n                $head = found.$head;\n            else\n                return Selection.near($head, bias);\n        }\n        if (!$anchor.parent.inlineContent) {\n            if (dPos == 0) {\n                $anchor = $head;\n            }\n            else {\n                $anchor = (Selection.findFrom($anchor, -bias, true) || Selection.findFrom($anchor, bias, true)).$anchor;\n                if (($anchor.pos < $head.pos) != (dPos < 0))\n                    $anchor = $head;\n            }\n        }\n        return new TextSelection($anchor, $head);\n    }\n}\nSelection.jsonID(\"text\", TextSelection);\nclass TextBookmark {\n    constructor(anchor, head) {\n        this.anchor = anchor;\n        this.head = head;\n    }\n    map(mapping) {\n        return new TextBookmark(mapping.map(this.anchor), mapping.map(this.head));\n    }\n    resolve(doc) {\n        return TextSelection.between(doc.resolve(this.anchor), doc.resolve(this.head));\n    }\n}\n/**\nA node selection is a selection that points at a single node. All\nnodes marked [selectable](https://prosemirror.net/docs/ref/#model.NodeSpec.selectable) can be the\ntarget of a node selection. In such a selection, `from` and `to`\npoint directly before and after the selected node, `anchor` equals\n`from`, and `head` equals `to`..\n*/\nclass NodeSelection extends Selection {\n    /**\n    Create a node selection. Does not verify the validity of its\n    argument.\n    */\n    constructor($pos) {\n        let node = $pos.nodeAfter;\n        let $end = $pos.node(0).resolve($pos.pos + node.nodeSize);\n        super($pos, $end);\n        this.node = node;\n    }\n    map(doc, mapping) {\n        let { deleted, pos } = mapping.mapResult(this.anchor);\n        let $pos = doc.resolve(pos);\n        if (deleted)\n            return Selection.near($pos);\n        return new NodeSelection($pos);\n    }\n    content() {\n        return new Slice(Fragment.from(this.node), 0, 0);\n    }\n    eq(other) {\n        return other instanceof NodeSelection && other.anchor == this.anchor;\n    }\n    toJSON() {\n        return { type: \"node\", anchor: this.anchor };\n    }\n    getBookmark() { return new NodeBookmark(this.anchor); }\n    /**\n    @internal\n    */\n    static fromJSON(doc, json) {\n        if (typeof json.anchor != \"number\")\n            throw new RangeError(\"Invalid input for NodeSelection.fromJSON\");\n        return new NodeSelection(doc.resolve(json.anchor));\n    }\n    /**\n    Create a node selection from non-resolved positions.\n    */\n    static create(doc, from) {\n        return new NodeSelection(doc.resolve(from));\n    }\n    /**\n    Determines whether the given node may be selected as a node\n    selection.\n    */\n    static isSelectable(node) {\n        return !node.isText && node.type.spec.selectable !== false;\n    }\n}\nNodeSelection.prototype.visible = false;\nSelection.jsonID(\"node\", NodeSelection);\nclass NodeBookmark {\n    constructor(anchor) {\n        this.anchor = anchor;\n    }\n    map(mapping) {\n        let { deleted, pos } = mapping.mapResult(this.anchor);\n        return deleted ? new TextBookmark(pos, pos) : new NodeBookmark(pos);\n    }\n    resolve(doc) {\n        let $pos = doc.resolve(this.anchor), node = $pos.nodeAfter;\n        if (node && NodeSelection.isSelectable(node))\n            return new NodeSelection($pos);\n        return Selection.near($pos);\n    }\n}\n/**\nA selection type that represents selecting the whole document\n(which can not necessarily be expressed with a text selection, when\nthere are for example leaf block nodes at the start or end of the\ndocument).\n*/\nclass AllSelection extends Selection {\n    /**\n    Create an all-selection over the given document.\n    */\n    constructor(doc) {\n        super(doc.resolve(0), doc.resolve(doc.content.size));\n    }\n    replace(tr, content = Slice.empty) {\n        if (content == Slice.empty) {\n            tr.delete(0, tr.doc.content.size);\n            let sel = Selection.atStart(tr.doc);\n            if (!sel.eq(tr.selection))\n                tr.setSelection(sel);\n        }\n        else {\n            super.replace(tr, content);\n        }\n    }\n    toJSON() { return { type: \"all\" }; }\n    /**\n    @internal\n    */\n    static fromJSON(doc) { return new AllSelection(doc); }\n    map(doc) { return new AllSelection(doc); }\n    eq(other) { return other instanceof AllSelection; }\n    getBookmark() { return AllBookmark; }\n}\nSelection.jsonID(\"all\", AllSelection);\nconst AllBookmark = {\n    map() { return this; },\n    resolve(doc) { return new AllSelection(doc); }\n};\n// FIXME we'll need some awareness of text direction when scanning for selections\n// Try to find a selection inside the given node. `pos` points at the\n// position where the search starts. When `text` is true, only return\n// text selections.\nfunction findSelectionIn(doc, node, pos, index, dir, text = false) {\n    if (node.inlineContent)\n        return TextSelection.create(doc, pos);\n    for (let i = index - (dir > 0 ? 0 : 1); dir > 0 ? i < node.childCount : i >= 0; i += dir) {\n        let child = node.child(i);\n        if (!child.isAtom) {\n            let inner = findSelectionIn(doc, child, pos + dir, dir < 0 ? child.childCount : 0, dir, text);\n            if (inner)\n                return inner;\n        }\n        else if (!text && NodeSelection.isSelectable(child)) {\n            return NodeSelection.create(doc, pos - (dir < 0 ? child.nodeSize : 0));\n        }\n        pos += child.nodeSize * dir;\n    }\n    return null;\n}\nfunction selectionToInsertionEnd(tr, startLen, bias) {\n    let last = tr.steps.length - 1;\n    if (last < startLen)\n        return;\n    let step = tr.steps[last];\n    if (!(step instanceof ReplaceStep || step instanceof ReplaceAroundStep))\n        return;\n    let map = tr.mapping.maps[last], end;\n    map.forEach((_from, _to, _newFrom, newTo) => { if (end == null)\n        end = newTo; });\n    tr.setSelection(Selection.near(tr.doc.resolve(end), bias));\n}\n\nconst UPDATED_SEL = 1, UPDATED_MARKS = 2, UPDATED_SCROLL = 4;\n/**\nAn editor state transaction, which can be applied to a state to\ncreate an updated state. Use\n[`EditorState.tr`](https://prosemirror.net/docs/ref/#state.EditorState.tr) to create an instance.\n\nTransactions track changes to the document (they are a subclass of\n[`Transform`](https://prosemirror.net/docs/ref/#transform.Transform)), but also other state changes,\nlike selection updates and adjustments of the set of [stored\nmarks](https://prosemirror.net/docs/ref/#state.EditorState.storedMarks). In addition, you can store\nmetadata properties in a transaction, which are extra pieces of\ninformation that client code or plugins can use to describe what a\ntransaction represents, so that they can update their [own\nstate](https://prosemirror.net/docs/ref/#state.StateField) accordingly.\n\nThe [editor view](https://prosemirror.net/docs/ref/#view.EditorView) uses a few metadata\nproperties: it will attach a property `\"pointer\"` with the value\n`true` to selection transactions directly caused by mouse or touch\ninput, a `\"composition\"` property holding an ID identifying the\ncomposition that caused it to transactions caused by composed DOM\ninput, and a `\"uiEvent\"` property of that may be `\"paste\"`,\n`\"cut\"`, or `\"drop\"`.\n*/\nclass Transaction extends Transform {\n    /**\n    @internal\n    */\n    constructor(state) {\n        super(state.doc);\n        // The step count for which the current selection is valid.\n        this.curSelectionFor = 0;\n        // Bitfield to track which aspects of the state were updated by\n        // this transaction.\n        this.updated = 0;\n        // Object used to store metadata properties for the transaction.\n        this.meta = Object.create(null);\n        this.time = Date.now();\n        this.curSelection = state.selection;\n        this.storedMarks = state.storedMarks;\n    }\n    /**\n    The transaction's current selection. This defaults to the editor\n    selection [mapped](https://prosemirror.net/docs/ref/#state.Selection.map) through the steps in the\n    transaction, but can be overwritten with\n    [`setSelection`](https://prosemirror.net/docs/ref/#state.Transaction.setSelection).\n    */\n    get selection() {\n        if (this.curSelectionFor < this.steps.length) {\n            this.curSelection = this.curSelection.map(this.doc, this.mapping.slice(this.curSelectionFor));\n            this.curSelectionFor = this.steps.length;\n        }\n        return this.curSelection;\n    }\n    /**\n    Update the transaction's current selection. Will determine the\n    selection that the editor gets when the transaction is applied.\n    */\n    setSelection(selection) {\n        if (selection.$from.doc != this.doc)\n            throw new RangeError(\"Selection passed to setSelection must point at the current document\");\n        this.curSelection = selection;\n        this.curSelectionFor = this.steps.length;\n        this.updated = (this.updated | UPDATED_SEL) & ~UPDATED_MARKS;\n        this.storedMarks = null;\n        return this;\n    }\n    /**\n    Whether the selection was explicitly updated by this transaction.\n    */\n    get selectionSet() {\n        return (this.updated & UPDATED_SEL) > 0;\n    }\n    /**\n    Set the current stored marks.\n    */\n    setStoredMarks(marks) {\n        this.storedMarks = marks;\n        this.updated |= UPDATED_MARKS;\n        return this;\n    }\n    /**\n    Make sure the current stored marks or, if that is null, the marks\n    at the selection, match the given set of marks. Does nothing if\n    this is already the case.\n    */\n    ensureMarks(marks) {\n        if (!Mark.sameSet(this.storedMarks || this.selection.$from.marks(), marks))\n            this.setStoredMarks(marks);\n        return this;\n    }\n    /**\n    Add a mark to the set of stored marks.\n    */\n    addStoredMark(mark) {\n        return this.ensureMarks(mark.addToSet(this.storedMarks || this.selection.$head.marks()));\n    }\n    /**\n    Remove a mark or mark type from the set of stored marks.\n    */\n    removeStoredMark(mark) {\n        return this.ensureMarks(mark.removeFromSet(this.storedMarks || this.selection.$head.marks()));\n    }\n    /**\n    Whether the stored marks were explicitly set for this transaction.\n    */\n    get storedMarksSet() {\n        return (this.updated & UPDATED_MARKS) > 0;\n    }\n    /**\n    @internal\n    */\n    addStep(step, doc) {\n        super.addStep(step, doc);\n        this.updated = this.updated & ~UPDATED_MARKS;\n        this.storedMarks = null;\n    }\n    /**\n    Update the timestamp for the transaction.\n    */\n    setTime(time) {\n        this.time = time;\n        return this;\n    }\n    /**\n    Replace the current selection with the given slice.\n    */\n    replaceSelection(slice) {\n        this.selection.replace(this, slice);\n        return this;\n    }\n    /**\n    Replace the selection with the given node. When `inheritMarks` is\n    true and the content is inline, it inherits the marks from the\n    place where it is inserted.\n    */\n    replaceSelectionWith(node, inheritMarks = true) {\n        let selection = this.selection;\n        if (inheritMarks)\n            node = node.mark(this.storedMarks || (selection.empty ? selection.$from.marks() : (selection.$from.marksAcross(selection.$to) || Mark.none)));\n        selection.replaceWith(this, node);\n        return this;\n    }\n    /**\n    Delete the selection.\n    */\n    deleteSelection() {\n        this.selection.replace(this);\n        return this;\n    }\n    /**\n    Replace the given range, or the selection if no range is given,\n    with a text node containing the given string.\n    */\n    insertText(text, from, to) {\n        let schema = this.doc.type.schema;\n        if (from == null) {\n            if (!text)\n                return this.deleteSelection();\n            return this.replaceSelectionWith(schema.text(text), true);\n        }\n        else {\n            if (to == null)\n                to = from;\n            if (!text)\n                return this.deleteRange(from, to);\n            let marks = this.storedMarks;\n            if (!marks) {\n                let $from = this.doc.resolve(from);\n                marks = to == from ? $from.marks() : $from.marksAcross(this.doc.resolve(to));\n            }\n            this.replaceRangeWith(from, to, schema.text(text, marks));\n            if (!this.selection.empty && this.selection.to == from + text.length)\n                this.setSelection(Selection.near(this.selection.$to));\n            return this;\n        }\n    }\n    /**\n    Store a metadata property in this transaction, keyed either by\n    name or by plugin.\n    */\n    setMeta(key, value) {\n        this.meta[typeof key == \"string\" ? key : key.key] = value;\n        return this;\n    }\n    /**\n    Retrieve a metadata property for a given name or plugin.\n    */\n    getMeta(key) {\n        return this.meta[typeof key == \"string\" ? key : key.key];\n    }\n    /**\n    Returns true if this transaction doesn't contain any metadata,\n    and can thus safely be extended.\n    */\n    get isGeneric() {\n        for (let _ in this.meta)\n            return false;\n        return true;\n    }\n    /**\n    Indicate that the editor should scroll the selection into view\n    when updated to the state produced by this transaction.\n    */\n    scrollIntoView() {\n        this.updated |= UPDATED_SCROLL;\n        return this;\n    }\n    /**\n    True when this transaction has had `scrollIntoView` called on it.\n    */\n    get scrolledIntoView() {\n        return (this.updated & UPDATED_SCROLL) > 0;\n    }\n}\n\nfunction bind(f, self) {\n    return !self || !f ? f : f.bind(self);\n}\nclass FieldDesc {\n    constructor(name, desc, self) {\n        this.name = name;\n        this.init = bind(desc.init, self);\n        this.apply = bind(desc.apply, self);\n    }\n}\nconst baseFields = [\n    new FieldDesc(\"doc\", {\n        init(config) { return config.doc || config.schema.topNodeType.createAndFill(); },\n        apply(tr) { return tr.doc; }\n    }),\n    new FieldDesc(\"selection\", {\n        init(config, instance) { return config.selection || Selection.atStart(instance.doc); },\n        apply(tr) { return tr.selection; }\n    }),\n    new FieldDesc(\"storedMarks\", {\n        init(config) { return config.storedMarks || null; },\n        apply(tr, _marks, _old, state) { return state.selection.$cursor ? tr.storedMarks : null; }\n    }),\n    new FieldDesc(\"scrollToSelection\", {\n        init() { return 0; },\n        apply(tr, prev) { return tr.scrolledIntoView ? prev + 1 : prev; }\n    })\n];\n// Object wrapping the part of a state object that stays the same\n// across transactions. Stored in the state's `config` property.\nclass Configuration {\n    constructor(schema, plugins) {\n        this.schema = schema;\n        this.plugins = [];\n        this.pluginsByKey = Object.create(null);\n        this.fields = baseFields.slice();\n        if (plugins)\n            plugins.forEach(plugin => {\n                if (this.pluginsByKey[plugin.key])\n                    throw new RangeError(\"Adding different instances of a keyed plugin (\" + plugin.key + \")\");\n                this.plugins.push(plugin);\n                this.pluginsByKey[plugin.key] = plugin;\n                if (plugin.spec.state)\n                    this.fields.push(new FieldDesc(plugin.key, plugin.spec.state, plugin));\n            });\n    }\n}\n/**\nThe state of a ProseMirror editor is represented by an object of\nthis type. A state is a persistent data structure—it isn't\nupdated, but rather a new state value is computed from an old one\nusing the [`apply`](https://prosemirror.net/docs/ref/#state.EditorState.apply) method.\n\nA state holds a number of built-in fields, and plugins can\n[define](https://prosemirror.net/docs/ref/#state.PluginSpec.state) additional fields.\n*/\nclass EditorState {\n    /**\n    @internal\n    */\n    constructor(\n    /**\n    @internal\n    */\n    config) {\n        this.config = config;\n    }\n    /**\n    The schema of the state's document.\n    */\n    get schema() {\n        return this.config.schema;\n    }\n    /**\n    The plugins that are active in this state.\n    */\n    get plugins() {\n        return this.config.plugins;\n    }\n    /**\n    Apply the given transaction to produce a new state.\n    */\n    apply(tr) {\n        return this.applyTransaction(tr).state;\n    }\n    /**\n    @internal\n    */\n    filterTransaction(tr, ignore = -1) {\n        for (let i = 0; i < this.config.plugins.length; i++)\n            if (i != ignore) {\n                let plugin = this.config.plugins[i];\n                if (plugin.spec.filterTransaction && !plugin.spec.filterTransaction.call(plugin, tr, this))\n                    return false;\n            }\n        return true;\n    }\n    /**\n    Verbose variant of [`apply`](https://prosemirror.net/docs/ref/#state.EditorState.apply) that\n    returns the precise transactions that were applied (which might\n    be influenced by the [transaction\n    hooks](https://prosemirror.net/docs/ref/#state.PluginSpec.filterTransaction) of\n    plugins) along with the new state.\n    */\n    applyTransaction(rootTr) {\n        if (!this.filterTransaction(rootTr))\n            return { state: this, transactions: [] };\n        let trs = [rootTr], newState = this.applyInner(rootTr), seen = null;\n        // This loop repeatedly gives plugins a chance to respond to\n        // transactions as new transactions are added, making sure to only\n        // pass the transactions the plugin did not see before.\n        for (;;) {\n            let haveNew = false;\n            for (let i = 0; i < this.config.plugins.length; i++) {\n                let plugin = this.config.plugins[i];\n                if (plugin.spec.appendTransaction) {\n                    let n = seen ? seen[i].n : 0, oldState = seen ? seen[i].state : this;\n                    let tr = n < trs.length &&\n                        plugin.spec.appendTransaction.call(plugin, n ? trs.slice(n) : trs, oldState, newState);\n                    if (tr && newState.filterTransaction(tr, i)) {\n                        tr.setMeta(\"appendedTransaction\", rootTr);\n                        if (!seen) {\n                            seen = [];\n                            for (let j = 0; j < this.config.plugins.length; j++)\n                                seen.push(j < i ? { state: newState, n: trs.length } : { state: this, n: 0 });\n                        }\n                        trs.push(tr);\n                        newState = newState.applyInner(tr);\n                        haveNew = true;\n                    }\n                    if (seen)\n                        seen[i] = { state: newState, n: trs.length };\n                }\n            }\n            if (!haveNew)\n                return { state: newState, transactions: trs };\n        }\n    }\n    /**\n    @internal\n    */\n    applyInner(tr) {\n        if (!tr.before.eq(this.doc))\n            throw new RangeError(\"Applying a mismatched transaction\");\n        let newInstance = new EditorState(this.config), fields = this.config.fields;\n        for (let i = 0; i < fields.length; i++) {\n            let field = fields[i];\n            newInstance[field.name] = field.apply(tr, this[field.name], this, newInstance);\n        }\n        return newInstance;\n    }\n    /**\n    Accessor that constructs and returns a new [transaction](https://prosemirror.net/docs/ref/#state.Transaction) from this state.\n    */\n    get tr() { return new Transaction(this); }\n    /**\n    Create a new state.\n    */\n    static create(config) {\n        let $config = new Configuration(config.doc ? config.doc.type.schema : config.schema, config.plugins);\n        let instance = new EditorState($config);\n        for (let i = 0; i < $config.fields.length; i++)\n            instance[$config.fields[i].name] = $config.fields[i].init(config, instance);\n        return instance;\n    }\n    /**\n    Create a new state based on this one, but with an adjusted set\n    of active plugins. State fields that exist in both sets of\n    plugins are kept unchanged. Those that no longer exist are\n    dropped, and those that are new are initialized using their\n    [`init`](https://prosemirror.net/docs/ref/#state.StateField.init) method, passing in the new\n    configuration object..\n    */\n    reconfigure(config) {\n        let $config = new Configuration(this.schema, config.plugins);\n        let fields = $config.fields, instance = new EditorState($config);\n        for (let i = 0; i < fields.length; i++) {\n            let name = fields[i].name;\n            instance[name] = this.hasOwnProperty(name) ? this[name] : fields[i].init(config, instance);\n        }\n        return instance;\n    }\n    /**\n    Serialize this state to JSON. If you want to serialize the state\n    of plugins, pass an object mapping property names to use in the\n    resulting JSON object to plugin objects. The argument may also be\n    a string or number, in which case it is ignored, to support the\n    way `JSON.stringify` calls `toString` methods.\n    */\n    toJSON(pluginFields) {\n        let result = { doc: this.doc.toJSON(), selection: this.selection.toJSON() };\n        if (this.storedMarks)\n            result.storedMarks = this.storedMarks.map(m => m.toJSON());\n        if (pluginFields && typeof pluginFields == 'object')\n            for (let prop in pluginFields) {\n                if (prop == \"doc\" || prop == \"selection\")\n                    throw new RangeError(\"The JSON fields `doc` and `selection` are reserved\");\n                let plugin = pluginFields[prop], state = plugin.spec.state;\n                if (state && state.toJSON)\n                    result[prop] = state.toJSON.call(plugin, this[plugin.key]);\n            }\n        return result;\n    }\n    /**\n    Deserialize a JSON representation of a state. `config` should\n    have at least a `schema` field, and should contain array of\n    plugins to initialize the state with. `pluginFields` can be used\n    to deserialize the state of plugins, by associating plugin\n    instances with the property names they use in the JSON object.\n    */\n    static fromJSON(config, json, pluginFields) {\n        if (!json)\n            throw new RangeError(\"Invalid input for EditorState.fromJSON\");\n        if (!config.schema)\n            throw new RangeError(\"Required config field 'schema' missing\");\n        let $config = new Configuration(config.schema, config.plugins);\n        let instance = new EditorState($config);\n        $config.fields.forEach(field => {\n            if (field.name == \"doc\") {\n                instance.doc = Node.fromJSON(config.schema, json.doc);\n            }\n            else if (field.name == \"selection\") {\n                instance.selection = Selection.fromJSON(instance.doc, json.selection);\n            }\n            else if (field.name == \"storedMarks\") {\n                if (json.storedMarks)\n                    instance.storedMarks = json.storedMarks.map(config.schema.markFromJSON);\n            }\n            else {\n                if (pluginFields)\n                    for (let prop in pluginFields) {\n                        let plugin = pluginFields[prop], state = plugin.spec.state;\n                        if (plugin.key == field.name && state && state.fromJSON &&\n                            Object.prototype.hasOwnProperty.call(json, prop)) {\n                            instance[field.name] = state.fromJSON.call(plugin, config, json[prop], instance);\n                            return;\n                        }\n                    }\n                instance[field.name] = field.init(config, instance);\n            }\n        });\n        return instance;\n    }\n}\n\nfunction bindProps(obj, self, target) {\n    for (let prop in obj) {\n        let val = obj[prop];\n        if (val instanceof Function)\n            val = val.bind(self);\n        else if (prop == \"handleDOMEvents\")\n            val = bindProps(val, self, {});\n        target[prop] = val;\n    }\n    return target;\n}\n/**\nPlugins bundle functionality that can be added to an editor.\nThey are part of the [editor state](https://prosemirror.net/docs/ref/#state.EditorState) and\nmay influence that state and the view that contains it.\n*/\nclass Plugin {\n    /**\n    Create a plugin.\n    */\n    constructor(\n    /**\n    The plugin's [spec object](https://prosemirror.net/docs/ref/#state.PluginSpec).\n    */\n    spec) {\n        this.spec = spec;\n        /**\n        The [props](https://prosemirror.net/docs/ref/#view.EditorProps) exported by this plugin.\n        */\n        this.props = {};\n        if (spec.props)\n            bindProps(spec.props, this, this.props);\n        this.key = spec.key ? spec.key.key : createKey(\"plugin\");\n    }\n    /**\n    Extract the plugin's state field from an editor state.\n    */\n    getState(state) { return state[this.key]; }\n}\nconst keys = Object.create(null);\nfunction createKey(name) {\n    if (name in keys)\n        return name + \"$\" + ++keys[name];\n    keys[name] = 0;\n    return name + \"$\";\n}\n/**\nA key is used to [tag](https://prosemirror.net/docs/ref/#state.PluginSpec.key) plugins in a way\nthat makes it possible to find them, given an editor state.\nAssigning a key does mean only one plugin of that type can be\nactive in a state.\n*/\nclass PluginKey {\n    /**\n    Create a plugin key.\n    */\n    constructor(name = \"key\") { this.key = createKey(name); }\n    /**\n    Get the active plugin with this key, if any, from an editor\n    state.\n    */\n    get(state) { return state.config.pluginsByKey[this.key]; }\n    /**\n    Get the plugin's state from an editor state.\n    */\n    getState(state) { return state[this.key]; }\n}\n\nexport { AllSelection, EditorState, NodeSelection, Plugin, PluginKey, Selection, SelectionRange, TextSelection, Transaction };\n","export var base = {\n  8: \"Backspace\",\n  9: \"Tab\",\n  10: \"Enter\",\n  12: \"NumLock\",\n  13: \"Enter\",\n  16: \"Shift\",\n  17: \"Control\",\n  18: \"Alt\",\n  20: \"CapsLock\",\n  27: \"Escape\",\n  32: \" \",\n  33: \"PageUp\",\n  34: \"PageDown\",\n  35: \"End\",\n  36: \"Home\",\n  37: \"ArrowLeft\",\n  38: \"ArrowUp\",\n  39: \"ArrowRight\",\n  40: \"ArrowDown\",\n  44: \"PrintScreen\",\n  45: \"Insert\",\n  46: \"Delete\",\n  59: \";\",\n  61: \"=\",\n  91: \"Meta\",\n  92: \"Meta\",\n  106: \"*\",\n  107: \"+\",\n  108: \",\",\n  109: \"-\",\n  110: \".\",\n  111: \"/\",\n  144: \"NumLock\",\n  145: \"ScrollLock\",\n  160: \"Shift\",\n  161: \"Shift\",\n  162: \"Control\",\n  163: \"Control\",\n  164: \"Alt\",\n  165: \"Alt\",\n  173: \"-\",\n  186: \";\",\n  187: \"=\",\n  188: \",\",\n  189: \"-\",\n  190: \".\",\n  191: \"/\",\n  192: \"`\",\n  219: \"[\",\n  220: \"\\\\\",\n  221: \"]\",\n  222: \"'\"\n}\n\nexport var shift = {\n  48: \")\",\n  49: \"!\",\n  50: \"@\",\n  51: \"#\",\n  52: \"$\",\n  53: \"%\",\n  54: \"^\",\n  55: \"&\",\n  56: \"*\",\n  57: \"(\",\n  59: \":\",\n  61: \"+\",\n  173: \"_\",\n  186: \":\",\n  187: \"+\",\n  188: \"<\",\n  189: \"_\",\n  190: \">\",\n  191: \"?\",\n  192: \"~\",\n  219: \"{\",\n  220: \"|\",\n  221: \"}\",\n  222: \"\\\"\"\n}\n\nvar mac = typeof navigator != \"undefined\" && /Mac/.test(navigator.platform)\nvar ie = typeof navigator != \"undefined\" && /MSIE \\d|Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(navigator.userAgent)\n\n// Fill in the digit keys\nfor (var i = 0; i < 10; i++) base[48 + i] = base[96 + i] = String(i)\n\n// The function keys\nfor (var i = 1; i <= 24; i++) base[i + 111] = \"F\" + i\n\n// And the alphabetic keys\nfor (var i = 65; i <= 90; i++) {\n  base[i] = String.fromCharCode(i + 32)\n  shift[i] = String.fromCharCode(i)\n}\n\n// For each code that doesn't have a shift-equivalent, copy the base name\nfor (var code in base) if (!shift.hasOwnProperty(code)) shift[code] = base[code]\n\nexport function keyName(event) {\n  // On macOS, keys held with Shift and Cmd don't reflect the effect of Shift in `.key`.\n  // On IE, shift effect is never included in `.key`.\n  var ignoreKey = mac && event.metaKey && event.shiftKey && !event.ctrlKey && !event.altKey ||\n      ie && event.shiftKey && event.key && event.key.length == 1 ||\n      event.key == \"Unidentified\"\n  var name = (!ignoreKey && event.key) ||\n    (event.shiftKey ? shift : base)[event.keyCode] ||\n    event.key || \"Unidentified\"\n  // Edge sometimes produces wrong names (Issue #3)\n  if (name == \"Esc\") name = \"Escape\"\n  if (name == \"Del\") name = \"Delete\"\n  // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/8860571/\n  if (name == \"Left\") name = \"ArrowLeft\"\n  if (name == \"Up\") name = \"ArrowUp\"\n  if (name == \"Right\") name = \"ArrowRight\"\n  if (name == \"Down\") name = \"ArrowDown\"\n  return name\n}\n","export enum TextStyle_TextAlignment {\n  /** AUTO - browser default, eqivalent to `initial` */\n  AUTO = \"AUTO\",\n  /** LEFT - Left align */\n  LEFT = \"LEFT\",\n  /** RIGHT - Right align */\n  RIGHT = \"RIGHT\",\n  /** CENTER - Center align */\n  CENTER = \"CENTER\",\n  /** JUSTIFY - Text is spaced to line up its left and right edges to the left and right edges of the line box, except for the last line */\n  JUSTIFY = \"JUSTIFY\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport enum Link_Target {\n  /** SELF - Opens the linked document in the same frame as it was clicked (this is default) */\n  SELF = \"SELF\",\n  /** BLANK - Opens the linked document in a new window or tab */\n  BLANK = \"BLANK\",\n  /** PARENT - Opens the linked document in the parent frame */\n  PARENT = \"PARENT\",\n  /** TOP - Opens the linked document in the full body of the window */\n  TOP = \"TOP\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport enum PluginContainerData_Alignment {\n  /** CENTER - Center Alignment */\n  CENTER = \"CENTER\",\n  /** LEFT - Left Alignment */\n  LEFT = \"LEFT\",\n  /** RIGHT - Right Alignment */\n  RIGHT = \"RIGHT\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport enum PluginContainerData_Width_Type {\n  /** CONTENT - Width matches the content width */\n  CONTENT = \"CONTENT\",\n  /** SMALL - Small Width */\n  SMALL = \"SMALL\",\n  /** ORIGINAL - Width will match the original asset width */\n  ORIGINAL = \"ORIGINAL\",\n  /** FULL_WIDTH - coast-to-coast display */\n  FULL_WIDTH = \"FULL_WIDTH\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\n/** Gradient type. */\nexport enum Gradient_Type {\n  /** LINEAR - Linear gradient. */\n  LINEAR = \"LINEAR\",\n  /** RADIAL - Radial gradient. */\n  RADIAL = \"RADIAL\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}","import {\n  TextStyle_TextAlignment,\n  Link_Target,\n  PluginContainerData_Alignment,\n  PluginContainerData_Width_Type,\n  Gradient_Type,\n} from './common.enums.js';\n\n/* eslint-disable */\nexport interface TextStyle {\n  /** Text alignment. Defaults to `AUTO`. */\n  textAlignment: TextStyle_TextAlignment;\n  /** A CSS `line-height` value for the text expressed as a ratio relative to the font size. For example, if the font size is 20px, a `lineHeight` value of `'1.5'`` results in a line height of 30px. */\n  lineHeight?: string;\n}\n\nexport function textStyle_TextAlignmentFromJSON(\n  object: any\n): TextStyle_TextAlignment {\n  switch (object) {\n    case 0:\n    case \"AUTO\":\n      return TextStyle_TextAlignment.AUTO;\n    case 1:\n    case \"LEFT\":\n      return TextStyle_TextAlignment.LEFT;\n    case 2:\n    case \"RIGHT\":\n      return TextStyle_TextAlignment.RIGHT;\n    case 3:\n    case \"CENTER\":\n      return TextStyle_TextAlignment.CENTER;\n    case 4:\n    case \"JUSTIFY\":\n      return TextStyle_TextAlignment.JUSTIFY;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return TextStyle_TextAlignment.UNRECOGNIZED;\n  }\n}\n\nexport function textStyle_TextAlignmentToJSON(\n  object: TextStyle_TextAlignment\n): string {\n  switch (object) {\n    case TextStyle_TextAlignment.AUTO:\n      return \"AUTO\";\n    case TextStyle_TextAlignment.LEFT:\n      return \"LEFT\";\n    case TextStyle_TextAlignment.RIGHT:\n      return \"RIGHT\";\n    case TextStyle_TextAlignment.CENTER:\n      return \"CENTER\";\n    case TextStyle_TextAlignment.JUSTIFY:\n      return \"JUSTIFY\";\n    default:\n      return \"UNKNOWN\";\n  }\n}\n\nexport interface Link {\n  /** The absolute URL for the linked document. */\n  url: string | undefined;\n  /** The target node's ID. Used for linking to another node in this object. */\n  anchor: string | undefined;\n  /**\n   * The HTML `target` attribute value for the link. This property defines where the linked document opens as follows:\n   * `SELF` - Default. Opens the linked document in the same frame as the link.\n   * `BLANK` - Opens the linked document in a new browser tab or window.\n   * `PARENT` - Opens the linked document in the link's parent frame.\n   * `TOP` - Opens the linked document in the full body of the link's browser tab or window.\n   */\n  target: Link_Target;\n  /** The HTML `rel` attribute value for the link. This object specifies the relationship between the current document and the linked document. */\n  rel?: Link_Rel;\n  /** A serialized object used for a custom or external link panel. */\n  customData?: string;\n}\n\nexport function link_TargetFromJSON(object: any): Link_Target {\n  switch (object) {\n    case 0:\n    case \"SELF\":\n      return Link_Target.SELF;\n    case 1:\n    case \"BLANK\":\n      return Link_Target.BLANK;\n    case 2:\n    case \"PARENT\":\n      return Link_Target.PARENT;\n    case 3:\n    case \"TOP\":\n      return Link_Target.TOP;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return Link_Target.UNRECOGNIZED;\n  }\n}\n\nexport function link_TargetToJSON(object: Link_Target): string {\n  switch (object) {\n    case Link_Target.SELF:\n      return \"SELF\";\n    case Link_Target.BLANK:\n      return \"BLANK\";\n    case Link_Target.PARENT:\n      return \"PARENT\";\n    case Link_Target.TOP:\n      return \"TOP\";\n    default:\n      return \"UNKNOWN\";\n  }\n}\n\nexport interface Link_Rel {\n  /** Indicates to search engine crawlers not to follow the link. Defaults to `false`. */\n  nofollow?: boolean;\n  /** Indicates to search engine crawlers that the link is a paid placement such as sponsored content or an advertisement. Defaults to `false`. */\n  sponsored?: boolean;\n  /** Indicates that this link is user-generated content and isn't necessarily trusted or endorsed by the page’s author. For example, a link in a fourm post. Defaults to `false`. */\n  ugc?: boolean;\n  /** Indicates that this link protect referral information from being passed to the target website. */\n  noreferrer?: boolean;\n}\n\nexport interface PluginContainerData {\n  /** The width of the node when it's displayed. */\n  width?: PluginContainerData_Width;\n  /** The node's alignment within its container. */\n  alignment: PluginContainerData_Alignment;\n  /** Spoiler cover settings for the node. */\n  spoiler?: PluginContainerData_Spoiler;\n  /** The height of the node when it's displayed. */\n  height?: PluginContainerData_Height;\n  /** Sets whether text should wrap around this node when it's displayed. If `textWrap` is `false`, the node takes up the width of its container. Defaults to `true` for all node types except 'DIVIVDER' where it defaults to `false`. */\n  textWrap?: boolean;\n}\n\nexport function pluginContainerData_AlignmentFromJSON(\n  object: any\n): PluginContainerData_Alignment {\n  switch (object) {\n    case 0:\n    case \"CENTER\":\n      return PluginContainerData_Alignment.CENTER;\n    case 1:\n    case \"LEFT\":\n      return PluginContainerData_Alignment.LEFT;\n    case 2:\n    case \"RIGHT\":\n      return PluginContainerData_Alignment.RIGHT;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return PluginContainerData_Alignment.UNRECOGNIZED;\n  }\n}\n\nexport function pluginContainerData_AlignmentToJSON(\n  object: PluginContainerData_Alignment\n): string {\n  switch (object) {\n    case PluginContainerData_Alignment.CENTER:\n      return \"CENTER\";\n    case PluginContainerData_Alignment.LEFT:\n      return \"LEFT\";\n    case PluginContainerData_Alignment.RIGHT:\n      return \"RIGHT\";\n    default:\n      return \"UNKNOWN\";\n  }\n}\n\nexport interface PluginContainerData_Spoiler {\n  /** Sets whether the spoiler cover is enabled for this node. Defaults to `false`. */\n  enabled?: boolean;\n  /** The description displayed on top of the spoiler cover. */\n  description?: string;\n  /** The text for the button used to remove the spoiler cover. */\n  buttonText?: string;\n}\n\nexport interface PluginContainerData_Width {\n  /**\n   * One of the following predefined width options:\n   * `CONTENT`: The width of the container matches the content width.\n   * `SMALL`: A small width.\n   * `ORIGINAL`: For `imageData` containers only. The width of the container matches the original image width.\n   * `FULL_WIDTH`: For `imageData` containers only. The image container takes up the full width of the screen.\n   */\n  size: PluginContainerData_Width_Type | undefined;\n  /** A custom width value in pixels. */\n  custom?: string;\n}\n\nexport function pluginContainerData_Width_TypeFromJSON(\n  object: any\n): PluginContainerData_Width_Type {\n  switch (object) {\n    case 0:\n    case \"CONTENT\":\n      return PluginContainerData_Width_Type.CONTENT;\n    case 1:\n    case \"SMALL\":\n      return PluginContainerData_Width_Type.SMALL;\n    case 2:\n    case \"ORIGINAL\":\n      return PluginContainerData_Width_Type.ORIGINAL;\n    case 3:\n    case \"FULL_WIDTH\":\n      return PluginContainerData_Width_Type.FULL_WIDTH;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return PluginContainerData_Width_Type.UNRECOGNIZED;\n  }\n}\n\nexport function pluginContainerData_Width_TypeToJSON(\n  object: PluginContainerData_Width_Type\n): string {\n  switch (object) {\n    case PluginContainerData_Width_Type.CONTENT:\n      return \"CONTENT\";\n    case PluginContainerData_Width_Type.SMALL:\n      return \"SMALL\";\n    case PluginContainerData_Width_Type.ORIGINAL:\n      return \"ORIGINAL\";\n    case PluginContainerData_Width_Type.FULL_WIDTH:\n      return \"FULL_WIDTH\";\n    default:\n      return \"UNKNOWN\";\n  }\n}\n\nexport interface PluginContainerData_Height {\n  /** A custom height value in pixels. */\n  custom?: string;\n}\n\nexport interface FileSource {\n  /** The absolute URL for the file's source. */\n  url?: string;\n  /**\n   * Custom ID. Use `id` instead.\n   *\n   * @deprecated\n   */\n  custom?: string;\n  /** An ID that's resolved to a URL by a resolver function. */\n  id?: string;\n  /** Indicates whether the file's source is private. Defaults to `false`. */\n  private?: boolean;\n}\n\nexport interface Media {\n  /** The source for the media's data. */\n  src?: FileSource;\n  /** Media width in pixels. */\n  width?: number;\n  /** Media height in pixels. */\n  height?: number;\n  /** Media duration in seconds. Only relevant for audio and video files. */\n  duration?: number;\n}\n\nexport interface PlaybackOptions {\n  /** Sets whether the media will automatically start playing. */\n  autoPlay?: boolean;\n  /** Sets whether media's will be looped. */\n  playInLoop?: boolean;\n  /** Sets whether media's controls will be shown. */\n  showControls?: boolean;\n}\n\nexport interface Oembed {\n  /** The resource type. */\n  type?: string;\n  /** The width of the resource specified in the `url` property in pixels. */\n  width?: number;\n  /** The height of the resource specified in the `url` property in pixels. */\n  height?: number;\n  /** Resource title. */\n  title?: string;\n  /** The source URL for the resource. */\n  url?: string;\n  /** HTML for embedding a video player. The HTML should have no padding or margins. */\n  html?: string;\n  /** The name of the author or owner of the resource. */\n  authorName?: string;\n  /** The URL for the author or owner of the resource. */\n  authorUrl?: string;\n  /** The name of the resource provider. */\n  providerName?: string;\n  /** The URL for the resource provider. */\n  providerUrl?: string;\n  /** The URL for a thumbnail image for the resource. If this property is defined, `thumbnailWidth` and `thumbnailHeight` must also be defined. */\n  thumbnailUrl?: string;\n  /** The width of the resource's thumbnail image. If this property is defined, `thumbnailUrl` and `thumbnailHeight` must also be defined. */\n  thumbnailWidth?: string;\n  /** The height of the resource's thumbnail image. If this property is defined, `thumbnailUrl` and `thumbnailWidth`must also be defined. */\n  thumbnailHeight?: string;\n  /** The URL for an embedded viedo. */\n  videoUrl?: string;\n  /** The oEmbed version number.  This value must be `1.0`. */\n  version?: string;\n}\n\nexport interface Gradient {\n  /** Gradient type. */\n  type: Gradient_Type;\n  /** Color stops for the gradient. */\n  stops: Gradient_Stop[];\n  /** Angle in degrees for linear gradient (0-360). */\n  angle?: number;\n  /** Horizontal center position for radial gradient (0-100). */\n  centerX?: number;\n  /** Vertical center position for radial gradient (0-100). */\n  centerY?: number;\n}\n\nexport function gradient_TypeFromJSON(object: any): Gradient_Type {\n  switch (object) {\n    case 0:\n    case \"LINEAR\":\n      return Gradient_Type.LINEAR;\n    case 1:\n    case \"RADIAL\":\n      return Gradient_Type.RADIAL;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return Gradient_Type.UNRECOGNIZED;\n  }\n}\n\nexport function gradient_TypeToJSON(object: Gradient_Type): string {\n  switch (object) {\n    case Gradient_Type.LINEAR:\n      return \"LINEAR\";\n    case Gradient_Type.RADIAL:\n      return \"RADIAL\";\n    default:\n      return \"UNKNOWN\";\n  }\n}\n\n/** A single color stop in the gradient. */\nexport interface Gradient_Stop {\n  /** Stop color as hex value. */\n  color?: string;\n  /** Stop position (0-1). */\n  position?: number;\n}\n\nconst baseTextStyle: object = { textAlignment: TextStyle_TextAlignment.AUTO };\n\nexport const TextStyle = {\n  fromJSON(object: any): TextStyle {\n    const message = { ...baseTextStyle } as TextStyle;\n    message.textAlignment =\n      object.textAlignment !== undefined && object.textAlignment !== null\n        ? textStyle_TextAlignmentFromJSON(object.textAlignment)\n        : TextStyle_TextAlignment.AUTO;\n    message.lineHeight =\n      object.lineHeight !== undefined && object.lineHeight !== null\n        ? String(object.lineHeight)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: TextStyle): unknown {\n    const obj: any = {};\n    message.textAlignment !== undefined &&\n      (obj.textAlignment = textStyle_TextAlignmentToJSON(\n        message.textAlignment\n      ));\n    message.lineHeight !== undefined && (obj.lineHeight = message.lineHeight);\n    return obj;\n  },\n};\n\nconst baseLink: object = { target: Link_Target.SELF };\n\nexport const Link = {\n  fromJSON(object: any): Link {\n    const message = { ...baseLink } as Link;\n    message.url =\n      object.url !== undefined && object.url !== null\n        ? String(object.url)\n        : undefined;\n    message.anchor =\n      object.anchor !== undefined && object.anchor !== null\n        ? String(object.anchor)\n        : undefined;\n    message.target =\n      object.target !== undefined && object.target !== null\n        ? link_TargetFromJSON(object.target)\n        : Link_Target.SELF;\n    message.rel =\n      object.rel !== undefined && object.rel !== null\n        ? Link_Rel.fromJSON(object.rel)\n        : undefined;\n    message.customData =\n      object.customData !== undefined && object.customData !== null\n        ? String(object.customData)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: Link): unknown {\n    const obj: any = {};\n    message.url !== undefined && (obj.url = message.url);\n    message.anchor !== undefined && (obj.anchor = message.anchor);\n    message.target !== undefined &&\n      (obj.target = link_TargetToJSON(message.target));\n    message.rel !== undefined &&\n      (obj.rel = message.rel ? Link_Rel.toJSON(message.rel) : undefined);\n    message.customData !== undefined && (obj.customData = message.customData);\n    return obj;\n  },\n};\n\nconst baseLink_Rel: object = {};\n\nexport const Link_Rel = {\n  fromJSON(object: any): Link_Rel {\n    const message = { ...baseLink_Rel } as Link_Rel;\n    message.nofollow =\n      object.nofollow !== undefined && object.nofollow !== null\n        ? Boolean(object.nofollow)\n        : undefined;\n    message.sponsored =\n      object.sponsored !== undefined && object.sponsored !== null\n        ? Boolean(object.sponsored)\n        : undefined;\n    message.ugc =\n      object.ugc !== undefined && object.ugc !== null\n        ? Boolean(object.ugc)\n        : undefined;\n    message.noreferrer =\n      object.noreferrer !== undefined && object.noreferrer !== null\n        ? Boolean(object.noreferrer)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: Link_Rel): unknown {\n    const obj: any = {};\n    message.nofollow !== undefined && (obj.nofollow = message.nofollow);\n    message.sponsored !== undefined && (obj.sponsored = message.sponsored);\n    message.ugc !== undefined && (obj.ugc = message.ugc);\n    message.noreferrer !== undefined && (obj.noreferrer = message.noreferrer);\n    return obj;\n  },\n};\n\nconst basePluginContainerData: object = {\n  alignment: PluginContainerData_Alignment.CENTER,\n};\n\nexport const PluginContainerData = {\n  fromJSON(object: any): PluginContainerData {\n    const message = { ...basePluginContainerData } as PluginContainerData;\n    message.width =\n      object.width !== undefined && object.width !== null\n        ? PluginContainerData_Width.fromJSON(object.width)\n        : undefined;\n    message.alignment =\n      object.alignment !== undefined && object.alignment !== null\n        ? pluginContainerData_AlignmentFromJSON(object.alignment)\n        : PluginContainerData_Alignment.CENTER;\n    message.spoiler =\n      object.spoiler !== undefined && object.spoiler !== null\n        ? PluginContainerData_Spoiler.fromJSON(object.spoiler)\n        : undefined;\n    message.height =\n      object.height !== undefined && object.height !== null\n        ? PluginContainerData_Height.fromJSON(object.height)\n        : undefined;\n    message.textWrap =\n      object.textWrap !== undefined && object.textWrap !== null\n        ? Boolean(object.textWrap)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: PluginContainerData): unknown {\n    const obj: any = {};\n    message.width !== undefined &&\n      (obj.width = message.width\n        ? PluginContainerData_Width.toJSON(message.width)\n        : undefined);\n    message.alignment !== undefined &&\n      (obj.alignment = pluginContainerData_AlignmentToJSON(message.alignment));\n    message.spoiler !== undefined &&\n      (obj.spoiler = message.spoiler\n        ? PluginContainerData_Spoiler.toJSON(message.spoiler)\n        : undefined);\n    message.height !== undefined &&\n      (obj.height = message.height\n        ? PluginContainerData_Height.toJSON(message.height)\n        : undefined);\n    message.textWrap !== undefined && (obj.textWrap = message.textWrap);\n    return obj;\n  },\n};\n\nconst basePluginContainerData_Spoiler: object = {};\n\nexport const PluginContainerData_Spoiler = {\n  fromJSON(object: any): PluginContainerData_Spoiler {\n    const message = {\n      ...basePluginContainerData_Spoiler,\n    } as PluginContainerData_Spoiler;\n    message.enabled =\n      object.enabled !== undefined && object.enabled !== null\n        ? Boolean(object.enabled)\n        : undefined;\n    message.description =\n      object.description !== undefined && object.description !== null\n        ? String(object.description)\n        : undefined;\n    message.buttonText =\n      object.buttonText !== undefined && object.buttonText !== null\n        ? String(object.buttonText)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: PluginContainerData_Spoiler): unknown {\n    const obj: any = {};\n    message.enabled !== undefined && (obj.enabled = message.enabled);\n    message.description !== undefined &&\n      (obj.description = message.description);\n    message.buttonText !== undefined && (obj.buttonText = message.buttonText);\n    return obj;\n  },\n};\n\nconst basePluginContainerData_Width: object = {};\n\nexport const PluginContainerData_Width = {\n  fromJSON(object: any): PluginContainerData_Width {\n    const message = {\n      ...basePluginContainerData_Width,\n    } as PluginContainerData_Width;\n    message.size =\n      object.size !== undefined && object.size !== null\n        ? pluginContainerData_Width_TypeFromJSON(object.size)\n        : undefined;\n    message.custom =\n      object.custom !== undefined && object.custom !== null\n        ? String(object.custom)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: PluginContainerData_Width): unknown {\n    const obj: any = {};\n    message.size !== undefined &&\n      (obj.size =\n        message.size !== undefined\n          ? pluginContainerData_Width_TypeToJSON(message.size)\n          : undefined);\n    message.custom !== undefined && (obj.custom = message.custom);\n    return obj;\n  },\n};\n\nconst basePluginContainerData_Height: object = {};\n\nexport const PluginContainerData_Height = {\n  fromJSON(object: any): PluginContainerData_Height {\n    const message = {\n      ...basePluginContainerData_Height,\n    } as PluginContainerData_Height;\n    message.custom =\n      object.custom !== undefined && object.custom !== null\n        ? String(object.custom)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: PluginContainerData_Height): unknown {\n    const obj: any = {};\n    message.custom !== undefined && (obj.custom = message.custom);\n    return obj;\n  },\n};\n\nconst baseFileSource: object = {};\n\nexport const FileSource = {\n  fromJSON(object: any): FileSource {\n    const message = { ...baseFileSource } as FileSource;\n    message.url =\n      object.url !== undefined && object.url !== null\n        ? String(object.url)\n        : undefined;\n    message.custom =\n      object.custom !== undefined && object.custom !== null\n        ? String(object.custom)\n        : undefined;\n    message.id =\n      object.id !== undefined && object.id !== null\n        ? String(object.id)\n        : undefined;\n    message.private =\n      object.private !== undefined && object.private !== null\n        ? Boolean(object.private)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: FileSource): unknown {\n    const obj: any = {};\n    message.url !== undefined && (obj.url = message.url);\n    message.custom !== undefined && (obj.custom = message.custom);\n    message.id !== undefined && (obj.id = message.id);\n    message.private !== undefined && (obj.private = message.private);\n    return obj;\n  },\n};\n\nconst baseMedia: object = {};\n\nexport const Media = {\n  fromJSON(object: any): Media {\n    const message = { ...baseMedia } as Media;\n    message.src =\n      object.src !== undefined && object.src !== null\n        ? FileSource.fromJSON(object.src)\n        : undefined;\n    message.width =\n      object.width !== undefined && object.width !== null\n        ? Number(object.width)\n        : undefined;\n    message.height =\n      object.height !== undefined && object.height !== null\n        ? Number(object.height)\n        : undefined;\n    message.duration =\n      object.duration !== undefined && object.duration !== null\n        ? Number(object.duration)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: Media): unknown {\n    const obj: any = {};\n    message.src !== undefined &&\n      (obj.src = message.src ? FileSource.toJSON(message.src) : undefined);\n    message.width !== undefined && (obj.width = message.width);\n    message.height !== undefined && (obj.height = message.height);\n    message.duration !== undefined && (obj.duration = message.duration);\n    return obj;\n  },\n};\n\nconst basePlaybackOptions: object = {};\n\nexport const PlaybackOptions = {\n  fromJSON(object: any): PlaybackOptions {\n    const message = { ...basePlaybackOptions } as PlaybackOptions;\n    message.autoPlay =\n      object.autoPlay !== undefined && object.autoPlay !== null\n        ? Boolean(object.autoPlay)\n        : undefined;\n    message.playInLoop =\n      object.playInLoop !== undefined && object.playInLoop !== null\n        ? Boolean(object.playInLoop)\n        : undefined;\n    message.showControls =\n      object.showControls !== undefined && object.showControls !== null\n        ? Boolean(object.showControls)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: PlaybackOptions): unknown {\n    const obj: any = {};\n    message.autoPlay !== undefined && (obj.autoPlay = message.autoPlay);\n    message.playInLoop !== undefined && (obj.playInLoop = message.playInLoop);\n    message.showControls !== undefined &&\n      (obj.showControls = message.showControls);\n    return obj;\n  },\n};\n\nconst baseOembed: object = {};\n\nexport const Oembed = {\n  fromJSON(object: any): Oembed {\n    const message = { ...baseOembed } as Oembed;\n    message.type =\n      object.type !== undefined && object.type !== null\n        ? String(object.type)\n        : undefined;\n    message.width =\n      object.width !== undefined && object.width !== null\n        ? Number(object.width)\n        : undefined;\n    message.height =\n      object.height !== undefined && object.height !== null\n        ? Number(object.height)\n        : undefined;\n    message.title =\n      object.title !== undefined && object.title !== null\n        ? String(object.title)\n        : undefined;\n    message.url =\n      object.url !== undefined && object.url !== null\n        ? String(object.url)\n        : undefined;\n    message.html =\n      object.html !== undefined && object.html !== null\n        ? String(object.html)\n        : undefined;\n    message.authorName =\n      object.authorName !== undefined && object.authorName !== null\n        ? String(object.authorName)\n        : undefined;\n    message.authorUrl =\n      object.authorUrl !== undefined && object.authorUrl !== null\n        ? String(object.authorUrl)\n        : undefined;\n    message.providerName =\n      object.providerName !== undefined && object.providerName !== null\n        ? String(object.providerName)\n        : undefined;\n    message.providerUrl =\n      object.providerUrl !== undefined && object.providerUrl !== null\n        ? String(object.providerUrl)\n        : undefined;\n    message.thumbnailUrl =\n      object.thumbnailUrl !== undefined && object.thumbnailUrl !== null\n        ? String(object.thumbnailUrl)\n        : undefined;\n    message.thumbnailWidth =\n      object.thumbnailWidth !== undefined && object.thumbnailWidth !== null\n        ? String(object.thumbnailWidth)\n        : undefined;\n    message.thumbnailHeight =\n      object.thumbnailHeight !== undefined && object.thumbnailHeight !== null\n        ? String(object.thumbnailHeight)\n        : undefined;\n    message.videoUrl =\n      object.videoUrl !== undefined && object.videoUrl !== null\n        ? String(object.videoUrl)\n        : undefined;\n    message.version =\n      object.version !== undefined && object.version !== null\n        ? String(object.version)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: Oembed): unknown {\n    const obj: any = {};\n    message.type !== undefined && (obj.type = message.type);\n    message.width !== undefined && (obj.width = message.width);\n    message.height !== undefined && (obj.height = message.height);\n    message.title !== undefined && (obj.title = message.title);\n    message.url !== undefined && (obj.url = message.url);\n    message.html !== undefined && (obj.html = message.html);\n    message.authorName !== undefined && (obj.authorName = message.authorName);\n    message.authorUrl !== undefined && (obj.authorUrl = message.authorUrl);\n    message.providerName !== undefined &&\n      (obj.providerName = message.providerName);\n    message.providerUrl !== undefined &&\n      (obj.providerUrl = message.providerUrl);\n    message.thumbnailUrl !== undefined &&\n      (obj.thumbnailUrl = message.thumbnailUrl);\n    message.thumbnailWidth !== undefined &&\n      (obj.thumbnailWidth = message.thumbnailWidth);\n    message.thumbnailHeight !== undefined &&\n      (obj.thumbnailHeight = message.thumbnailHeight);\n    message.videoUrl !== undefined && (obj.videoUrl = message.videoUrl);\n    message.version !== undefined && (obj.version = message.version);\n    return obj;\n  },\n};\n\nconst baseGradient: object = { type: Gradient_Type.LINEAR };\n\nexport const Gradient = {\n  fromJSON(object: any): Gradient {\n    const message = { ...baseGradient } as Gradient;\n    message.type =\n      object.type !== undefined && object.type !== null\n        ? gradient_TypeFromJSON(object.type)\n        : Gradient_Type.LINEAR;\n    message.stops = (object.stops ?? []).map((e: any) =>\n      Gradient_Stop.fromJSON(e)\n    );\n    message.angle =\n      object.angle !== undefined && object.angle !== null\n        ? Number(object.angle)\n        : undefined;\n    message.centerX =\n      object.centerX !== undefined && object.centerX !== null\n        ? Number(object.centerX)\n        : undefined;\n    message.centerY =\n      object.centerY !== undefined && object.centerY !== null\n        ? Number(object.centerY)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: Gradient): unknown {\n    const obj: any = {};\n    message.type !== undefined &&\n      (obj.type = gradient_TypeToJSON(message.type));\n    if (message.stops) {\n      obj.stops = message.stops.map((e) =>\n        e ? Gradient_Stop.toJSON(e) : undefined\n      );\n    } else {\n      obj.stops = [];\n    }\n    message.angle !== undefined && (obj.angle = message.angle);\n    message.centerX !== undefined && (obj.centerX = message.centerX);\n    message.centerY !== undefined && (obj.centerY = message.centerY);\n    return obj;\n  },\n};\n\nconst baseGradient_Stop: object = {};\n\nexport const Gradient_Stop = {\n  fromJSON(object: any): Gradient_Stop {\n    const message = { ...baseGradient_Stop } as Gradient_Stop;\n    message.color =\n      object.color !== undefined && object.color !== null\n        ? String(object.color)\n        : undefined;\n    message.position =\n      object.position !== undefined && object.position !== null\n        ? Number(object.position)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: Gradient_Stop): unknown {\n    const obj: any = {};\n    message.color !== undefined && (obj.color = message.color);\n    message.position !== undefined && (obj.position = message.position);\n    return obj;\n  },\n};\n","/* eslint-disable */\nexport interface AnchorData {\n  /** The target node's ID. */\n  anchor: string;\n}\n\nconst baseAnchorData: object = { anchor: \"\" };\n\nexport const AnchorData = {\n  fromJSON(object: any): AnchorData {\n    const message = { ...baseAnchorData } as AnchorData;\n    message.anchor =\n      object.anchor !== undefined && object.anchor !== null\n        ? String(object.anchor)\n        : \"\";\n    return message;\n  },\n\n  toJSON(message: AnchorData): unknown {\n    const obj: any = {};\n    message.anchor !== undefined && (obj.anchor = message.anchor);\n    return obj;\n  },\n};\n","/* eslint-disable */\nexport interface ColorData {\n  /** The text's background color as a hexadecimal value. */\n  background?: string;\n  /** The text's foreground color as a hexadecimal value. */\n  foreground?: string;\n}\n\nconst baseColorData: object = {};\n\nexport const ColorData = {\n  fromJSON(object: any): ColorData {\n    const message = { ...baseColorData } as ColorData;\n    message.background =\n      object.background !== undefined && object.background !== null\n        ? String(object.background)\n        : undefined;\n    message.foreground =\n      object.foreground !== undefined && object.foreground !== null\n        ? String(object.foreground)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: ColorData): unknown {\n    const obj: any = {};\n    message.background !== undefined && (obj.background = message.background);\n    message.foreground !== undefined && (obj.foreground = message.foreground);\n    return obj;\n  },\n};\n","/* eslint-disable */\nexport interface FontFamilyData {\n  value?: string;\n}\n\nconst baseFontFamilyData: object = {};\n\nexport const FontFamilyData = {\n  fromJSON(object: any): FontFamilyData {\n    const message = { ...baseFontFamilyData } as FontFamilyData;\n    message.value =\n      object.value !== undefined && object.value !== null\n        ? String(object.value)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: FontFamilyData): unknown {\n    const obj: any = {};\n    message.value !== undefined && (obj.value = message.value);\n    return obj;\n  },\n};\n","export enum FontSizeData_fontType {\n  PX = \"PX\",\n  EM = \"EM\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}","import { FontSizeData_fontType } from './decoration_fontsize.enums.js';\n/* eslint-disable */\nexport interface FontSizeData {\n  /** The units used for the font size. */\n  unit: FontSizeData_fontType;\n  /** Font size value. */\n  value?: number;\n}\n\nexport function fontSizeData_fontTypeFromJSON(\n  object: any\n): FontSizeData_fontType {\n  switch (object) {\n    case 0:\n    case \"PX\":\n      return FontSizeData_fontType.PX;\n    case 1:\n    case \"EM\":\n      return FontSizeData_fontType.EM;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return FontSizeData_fontType.UNRECOGNIZED;\n  }\n}\n\nexport function fontSizeData_fontTypeToJSON(\n  object: FontSizeData_fontType\n): string {\n  switch (object) {\n    case FontSizeData_fontType.PX:\n      return \"PX\";\n    case FontSizeData_fontType.EM:\n      return \"EM\";\n    default:\n      return \"UNKNOWN\";\n  }\n}\n\nconst baseFontSizeData: object = { unit: FontSizeData_fontType.PX };\n\nexport const FontSizeData = {\n  fromJSON(object: any): FontSizeData {\n    const message = { ...baseFontSizeData } as FontSizeData;\n    message.unit =\n      object.unit !== undefined && object.unit !== null\n        ? fontSizeData_fontTypeFromJSON(object.unit)\n        : FontSizeData_fontType.PX;\n    message.value =\n      object.value !== undefined && object.value !== null\n        ? Number(object.value)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: FontSizeData): unknown {\n    const obj: any = {};\n    message.unit !== undefined &&\n      (obj.unit = fontSizeData_fontTypeToJSON(message.unit));\n    message.value !== undefined && (obj.value = message.value);\n    return obj;\n  },\n};\n","/* eslint-disable */\nimport { Link } from './common.js';\n\nexport interface LinkData {\n  /** Link details. */\n  link?: Link;\n}\n\nconst baseLinkData: object = {};\n\nexport const LinkData = {\n  fromJSON(object: any): LinkData {\n    const message = { ...baseLinkData } as LinkData;\n    message.link =\n      object.link !== undefined && object.link !== null\n        ? Link.fromJSON(object.link)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: LinkData): unknown {\n    const obj: any = {};\n    message.link !== undefined &&\n      (obj.link = message.link ? Link.toJSON(message.link) : undefined);\n    return obj;\n  },\n};\n","/* eslint-disable */\nexport interface MentionData {\n  /** The mentioned user's name. */\n  name: string;\n  /** The version of the user's name that appears after the `@` character in the mention. */\n  slug: string;\n  /** Mentioned user's ID. */\n  id?: string;\n}\n\nconst baseMentionData: object = { name: \"\", slug: \"\" };\n\nexport const MentionData = {\n  fromJSON(object: any): MentionData {\n    const message = { ...baseMentionData } as MentionData;\n    message.name =\n      object.name !== undefined && object.name !== null\n        ? String(object.name)\n        : \"\";\n    message.slug =\n      object.slug !== undefined && object.slug !== null\n        ? String(object.slug)\n        : \"\";\n    message.id =\n      object.id !== undefined && object.id !== null\n        ? String(object.id)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: MentionData): unknown {\n    const obj: any = {};\n    message.name !== undefined && (obj.name = message.name);\n    message.slug !== undefined && (obj.slug = message.slug);\n    message.id !== undefined && (obj.id = message.id);\n    return obj;\n  },\n};\n","/* eslint-disable */\nexport interface SpoilerData {\n  /** Spoiler ID. */\n  id?: string;\n}\n\nconst baseSpoilerData: object = {};\n\nexport const SpoilerData = {\n  fromJSON(object: any): SpoilerData {\n    const message = { ...baseSpoilerData } as SpoilerData;\n    message.id =\n      object.id !== undefined && object.id !== null\n        ? String(object.id)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: SpoilerData): unknown {\n    const obj: any = {};\n    message.id !== undefined && (obj.id = message.id);\n    return obj;\n  },\n};\n","/* eslint-disable */\nexport interface BlockquoteData {\n  /** Indentation level from 1-4. */\n  indentation: number;\n}\n\nconst baseBlockquoteData: object = { indentation: 0 };\n\nexport const BlockquoteData = {\n  fromJSON(object: any): BlockquoteData {\n    const message = { ...baseBlockquoteData } as BlockquoteData;\n    message.indentation =\n      object.indentation !== undefined && object.indentation !== null\n        ? Number(object.indentation)\n        : 0;\n    return message;\n  },\n\n  toJSON(message: BlockquoteData): unknown {\n    const obj: any = {};\n    message.indentation !== undefined &&\n      (obj.indentation = Math.round(message.indentation));\n    return obj;\n  },\n};\n","/* eslint-disable */\nimport { TextStyle } from './common.js';\n\nexport interface CaptionData {\n  textStyle?: TextStyle;\n}\n\nconst baseCaptionData: object = {};\n\nexport const CaptionData = {\n  fromJSON(object: any): CaptionData {\n    const message = { ...baseCaptionData } as CaptionData;\n    message.textStyle =\n      object.textStyle !== undefined && object.textStyle !== null\n        ? TextStyle.fromJSON(object.textStyle)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: CaptionData): unknown {\n    const obj: any = {};\n    message.textStyle !== undefined &&\n      (obj.textStyle = message.textStyle\n        ? TextStyle.toJSON(message.textStyle)\n        : undefined);\n    return obj;\n  },\n};\n","export enum CardData_ImageScaling_Scaling {\n  /** AUTO - Auto image scaling */\n  AUTO = \"AUTO\",\n  /** CONTAIN - Contain image scaling */\n  CONTAIN = \"CONTAIN\",\n  /** COVER - Cover image scaling */\n  COVER = \"COVER\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport enum CardData_ImagePosition_Position {\n  /** CENTER - Image positioned at the center */\n  CENTER = \"CENTER\",\n  /** CENTER_LEFT - Image positioned on the left */\n  CENTER_LEFT = \"CENTER_LEFT\",\n  /** CENTER_RIGHT - Image positioned on the right */\n  CENTER_RIGHT = \"CENTER_RIGHT\",\n  /** TOP - Image positioned at the center top */\n  TOP = \"TOP\",\n  /** TOP_LEFT - Image positioned at the top left */\n  TOP_LEFT = \"TOP_LEFT\",\n  /** TOP_RIGHT - Image positioned at the top right */\n  TOP_RIGHT = \"TOP_RIGHT\",\n  /** BOTTOM - Image positioned at the center bottom */\n  BOTTOM = \"BOTTOM\",\n  /** BOTTOM_LEFT - Image positioned at the bottom left */\n  BOTTOM_LEFT = \"BOTTOM_LEFT\",\n  /** BOTTOM_RIGHT - Image positioned at the bottom right */\n  BOTTOM_RIGHT = \"BOTTOM_RIGHT\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\n/** Background type */\nexport enum CardData_Background_Type {\n  /** COLOR - Solid color background */\n  COLOR = \"COLOR\",\n  /** GRADIENT - Gradient background */\n  GRADIENT = \"GRADIENT\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}","/* eslint-disable */\nimport { Media, Gradient } from './common.js';\n\nimport {\n  CardData_ImageScaling_Scaling,\n  CardData_ImagePosition_Position,\n  CardData_Background_Type,\n} from './node_card.enums.js';\n\n/** flynt-disable missing-string-validations */\n\nexport interface CardData {\n  /** Background styling (color or gradient). */\n  background?: CardData_Background;\n  /** Background image. */\n  backgroundImage?: CardData_BackgroundImage;\n}\n\nexport interface CardData_ImageScaling {}\n\nexport function cardData_ImageScaling_ScalingFromJSON(\n  object: any\n): CardData_ImageScaling_Scaling {\n  switch (object) {\n    case 0:\n    case \"AUTO\":\n      return CardData_ImageScaling_Scaling.AUTO;\n    case 1:\n    case \"CONTAIN\":\n      return CardData_ImageScaling_Scaling.CONTAIN;\n    case 2:\n    case \"COVER\":\n      return CardData_ImageScaling_Scaling.COVER;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return CardData_ImageScaling_Scaling.UNRECOGNIZED;\n  }\n}\n\nexport function cardData_ImageScaling_ScalingToJSON(\n  object: CardData_ImageScaling_Scaling\n): string {\n  switch (object) {\n    case CardData_ImageScaling_Scaling.AUTO:\n      return \"AUTO\";\n    case CardData_ImageScaling_Scaling.CONTAIN:\n      return \"CONTAIN\";\n    case CardData_ImageScaling_Scaling.COVER:\n      return \"COVER\";\n    default:\n      return \"UNKNOWN\";\n  }\n}\n\nexport interface CardData_ImagePosition {}\n\nexport function cardData_ImagePosition_PositionFromJSON(\n  object: any\n): CardData_ImagePosition_Position {\n  switch (object) {\n    case 0:\n    case \"CENTER\":\n      return CardData_ImagePosition_Position.CENTER;\n    case 1:\n    case \"CENTER_LEFT\":\n      return CardData_ImagePosition_Position.CENTER_LEFT;\n    case 2:\n    case \"CENTER_RIGHT\":\n      return CardData_ImagePosition_Position.CENTER_RIGHT;\n    case 3:\n    case \"TOP\":\n      return CardData_ImagePosition_Position.TOP;\n    case 4:\n    case \"TOP_LEFT\":\n      return CardData_ImagePosition_Position.TOP_LEFT;\n    case 5:\n    case \"TOP_RIGHT\":\n      return CardData_ImagePosition_Position.TOP_RIGHT;\n    case 6:\n    case \"BOTTOM\":\n      return CardData_ImagePosition_Position.BOTTOM;\n    case 7:\n    case \"BOTTOM_LEFT\":\n      return CardData_ImagePosition_Position.BOTTOM_LEFT;\n    case 8:\n    case \"BOTTOM_RIGHT\":\n      return CardData_ImagePosition_Position.BOTTOM_RIGHT;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return CardData_ImagePosition_Position.UNRECOGNIZED;\n  }\n}\n\nexport function cardData_ImagePosition_PositionToJSON(\n  object: CardData_ImagePosition_Position\n): string {\n  switch (object) {\n    case CardData_ImagePosition_Position.CENTER:\n      return \"CENTER\";\n    case CardData_ImagePosition_Position.CENTER_LEFT:\n      return \"CENTER_LEFT\";\n    case CardData_ImagePosition_Position.CENTER_RIGHT:\n      return \"CENTER_RIGHT\";\n    case CardData_ImagePosition_Position.TOP:\n      return \"TOP\";\n    case CardData_ImagePosition_Position.TOP_LEFT:\n      return \"TOP_LEFT\";\n    case CardData_ImagePosition_Position.TOP_RIGHT:\n      return \"TOP_RIGHT\";\n    case CardData_ImagePosition_Position.BOTTOM:\n      return \"BOTTOM\";\n    case CardData_ImagePosition_Position.BOTTOM_LEFT:\n      return \"BOTTOM_LEFT\";\n    case CardData_ImagePosition_Position.BOTTOM_RIGHT:\n      return \"BOTTOM_RIGHT\";\n    default:\n      return \"UNKNOWN\";\n  }\n}\n\nexport interface CardData_BackgroundImage {\n  /** Background image. */\n  media?: Media;\n  /** Background image opacity. */\n  opacity?: number;\n  /** Background image scaling. */\n  scaling: CardData_ImageScaling_Scaling;\n  /** Position of background. Defaults to `CENTER`. */\n  position: CardData_ImagePosition_Position;\n}\n\n/** Background styling (color or gradient) */\nexport interface CardData_Background {\n  /** Background type. */\n  type: CardData_Background_Type;\n  /** Background color as a hexadecimal value. */\n  color?: string;\n  /** Gradient configuration. */\n  gradient?: Gradient;\n}\n\nexport function cardData_Background_TypeFromJSON(\n  object: any\n): CardData_Background_Type {\n  switch (object) {\n    case 0:\n    case \"COLOR\":\n      return CardData_Background_Type.COLOR;\n    case 1:\n    case \"GRADIENT\":\n      return CardData_Background_Type.GRADIENT;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return CardData_Background_Type.UNRECOGNIZED;\n  }\n}\n\nexport function cardData_Background_TypeToJSON(\n  object: CardData_Background_Type\n): string {\n  switch (object) {\n    case CardData_Background_Type.COLOR:\n      return \"COLOR\";\n    case CardData_Background_Type.GRADIENT:\n      return \"GRADIENT\";\n    default:\n      return \"UNKNOWN\";\n  }\n}\n\nconst baseCardData: object = {};\n\nexport const CardData = {\n  fromJSON(object: any): CardData {\n    const message = { ...baseCardData } as CardData;\n    message.background =\n      object.background !== undefined && object.background !== null\n        ? CardData_Background.fromJSON(object.background)\n        : undefined;\n    message.backgroundImage =\n      object.backgroundImage !== undefined && object.backgroundImage !== null\n        ? CardData_BackgroundImage.fromJSON(object.backgroundImage)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: CardData): unknown {\n    const obj: any = {};\n    message.background !== undefined &&\n      (obj.background = message.background\n        ? CardData_Background.toJSON(message.background)\n        : undefined);\n    message.backgroundImage !== undefined &&\n      (obj.backgroundImage = message.backgroundImage\n        ? CardData_BackgroundImage.toJSON(message.backgroundImage)\n        : undefined);\n    return obj;\n  },\n};\n\nconst baseCardData_ImageScaling: object = {};\n\nexport const CardData_ImageScaling = {\n  fromJSON(_: any): CardData_ImageScaling {\n    const message = { ...baseCardData_ImageScaling } as CardData_ImageScaling;\n    return message;\n  },\n\n  toJSON(_: CardData_ImageScaling): unknown {\n    const obj: any = {};\n    return obj;\n  },\n};\n\nconst baseCardData_ImagePosition: object = {};\n\nexport const CardData_ImagePosition = {\n  fromJSON(_: any): CardData_ImagePosition {\n    const message = { ...baseCardData_ImagePosition } as CardData_ImagePosition;\n    return message;\n  },\n\n  toJSON(_: CardData_ImagePosition): unknown {\n    const obj: any = {};\n    return obj;\n  },\n};\n\nconst baseCardData_BackgroundImage: object = {\n  scaling: CardData_ImageScaling_Scaling.AUTO,\n  position: CardData_ImagePosition_Position.CENTER,\n};\n\nexport const CardData_BackgroundImage = {\n  fromJSON(object: any): CardData_BackgroundImage {\n    const message = {\n      ...baseCardData_BackgroundImage,\n    } as CardData_BackgroundImage;\n    message.media =\n      object.media !== undefined && object.media !== null\n        ? Media.fromJSON(object.media)\n        : undefined;\n    message.opacity =\n      object.opacity !== undefined && object.opacity !== null\n        ? Number(object.opacity)\n        : undefined;\n    message.scaling =\n      object.scaling !== undefined && object.scaling !== null\n        ? cardData_ImageScaling_ScalingFromJSON(object.scaling)\n        : CardData_ImageScaling_Scaling.AUTO;\n    message.position =\n      object.position !== undefined && object.position !== null\n        ? cardData_ImagePosition_PositionFromJSON(object.position)\n        : CardData_ImagePosition_Position.CENTER;\n    return message;\n  },\n\n  toJSON(message: CardData_BackgroundImage): unknown {\n    const obj: any = {};\n    message.media !== undefined &&\n      (obj.media = message.media ? Media.toJSON(message.media) : undefined);\n    message.opacity !== undefined && (obj.opacity = message.opacity);\n    message.scaling !== undefined &&\n      (obj.scaling = cardData_ImageScaling_ScalingToJSON(message.scaling));\n    message.position !== undefined &&\n      (obj.position = cardData_ImagePosition_PositionToJSON(message.position));\n    return obj;\n  },\n};\n\nconst baseCardData_Background: object = {\n  type: CardData_Background_Type.COLOR,\n};\n\nexport const CardData_Background = {\n  fromJSON(object: any): CardData_Background {\n    const message = { ...baseCardData_Background } as CardData_Background;\n    message.type =\n      object.type !== undefined && object.type !== null\n        ? cardData_Background_TypeFromJSON(object.type)\n        : CardData_Background_Type.COLOR;\n    message.color =\n      object.color !== undefined && object.color !== null\n        ? String(object.color)\n        : undefined;\n    message.gradient =\n      object.gradient !== undefined && object.gradient !== null\n        ? Gradient.fromJSON(object.gradient)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: CardData_Background): unknown {\n    const obj: any = {};\n    message.type !== undefined &&\n      (obj.type = cardData_Background_TypeToJSON(message.type));\n    message.color !== undefined && (obj.color = message.color);\n    message.gradient !== undefined &&\n      (obj.gradient = message.gradient\n        ? Gradient.toJSON(message.gradient)\n        : undefined);\n    return obj;\n  },\n};\n","/* eslint-disable */\nimport { TextStyle } from './common.js';\n\nexport interface CodeBlockData {\n  /** Styling for the code block's text. */\n  textStyle?: TextStyle;\n}\n\nconst baseCodeBlockData: object = {};\n\nexport const CodeBlockData = {\n  fromJSON(object: any): CodeBlockData {\n    const message = { ...baseCodeBlockData } as CodeBlockData;\n    message.textStyle =\n      object.textStyle !== undefined && object.textStyle !== null\n        ? TextStyle.fromJSON(object.textStyle)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: CodeBlockData): unknown {\n    const obj: any = {};\n    message.textStyle !== undefined &&\n      (obj.textStyle = message.textStyle\n        ? TextStyle.toJSON(message.textStyle)\n        : undefined);\n    return obj;\n  },\n};\n","/* eslint-disable */\nimport { TextStyle } from './common.js';\n\nexport interface HeadingData {\n  /** Heading level from 1-6. */\n  level: number;\n  /** Styling for the heading text. */\n  textStyle?: TextStyle;\n  /** Indentation level from 1-4. */\n  indentation?: number;\n}\n\nconst baseHeadingData: object = { level: 0 };\n\nexport const HeadingData = {\n  fromJSON(object: any): HeadingData {\n    const message = { ...baseHeadingData } as HeadingData;\n    message.level =\n      object.level !== undefined && object.level !== null\n        ? Number(object.level)\n        : 0;\n    message.textStyle =\n      object.textStyle !== undefined && object.textStyle !== null\n        ? TextStyle.fromJSON(object.textStyle)\n        : undefined;\n    message.indentation =\n      object.indentation !== undefined && object.indentation !== null\n        ? Number(object.indentation)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: HeadingData): unknown {\n    const obj: any = {};\n    message.level !== undefined && (obj.level = Math.round(message.level));\n    message.textStyle !== undefined &&\n      (obj.textStyle = message.textStyle\n        ? TextStyle.toJSON(message.textStyle)\n        : undefined);\n    message.indentation !== undefined &&\n      (obj.indentation = message.indentation);\n    return obj;\n  },\n};\n","export enum LayoutData_ImagePosition {\n  /** CENTER - Image positioned at the center */\n  CENTER = \"CENTER\",\n  /** CENTER_LEFT - Image positioned on the left */\n  CENTER_LEFT = \"CENTER_LEFT\",\n  /** CENTER_RIGHT - Image positioned on the right */\n  CENTER_RIGHT = \"CENTER_RIGHT\",\n  /** TOP - Image positioned at the center top */\n  TOP = \"TOP\",\n  /** TOP_LEFT - Image positioned at the top left */\n  TOP_LEFT = \"TOP_LEFT\",\n  /** TOP_RIGHT - Image positioned at the top right */\n  TOP_RIGHT = \"TOP_RIGHT\",\n  /** BOTTOM - Image positioned at the center bottom */\n  BOTTOM = \"BOTTOM\",\n  /** BOTTOM_LEFT - Image positioned at the bottom left */\n  BOTTOM_LEFT = \"BOTTOM_LEFT\",\n  /** BOTTOM_RIGHT - Image positioned at the bottom right */\n  BOTTOM_RIGHT = \"BOTTOM_RIGHT\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport enum LayoutData_ResponsivenessBehaviour {\n  /** STACK - Stacking of columns */\n  STACK = \"STACK\",\n  /** WRAP - Wrapping of columns */\n  WRAP = \"WRAP\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport enum LayoutData_DesignTarget {\n  /** LAYOUT - Design applied to layout */\n  LAYOUT = \"LAYOUT\",\n  /** CELL - Design applied to cells */\n  CELL = \"CELL\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport enum LayoutData_VerticalAlignment_Alignment {\n  /** TOP - Top alignment */\n  TOP = \"TOP\",\n  /** MIDDLE - Middle alignment */\n  MIDDLE = \"MIDDLE\",\n  /** BOTTOM - Bottom alignment */\n  BOTTOM = \"BOTTOM\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport enum LayoutData_ImageScaling_Scaling {\n  /** AUTO - Auto image scaling */\n  AUTO = \"AUTO\",\n  /** CONTAIN - Contain image scaling */\n  CONTAIN = \"CONTAIN\",\n  /** COVER - Cover image scaling */\n  COVER = \"COVER\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport enum LayoutData_Banner_Origin {\n  /** IMAGE - Banner originated from an image */\n  IMAGE = \"IMAGE\",\n  /** LAYOUT - Banner originated from a layout */\n  LAYOUT = \"LAYOUT\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\n/** Background type */\nexport enum LayoutData_Background_Type {\n  /** COLOR - Solid color background */\n  COLOR = \"COLOR\",\n  /** GRADIENT - Gradient background */\n  GRADIENT = \"GRADIENT\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\n/** Backdrop type */\nexport enum LayoutData_Backdrop_Type {\n  /** COLOR - Solid color backdrop */\n  COLOR = \"COLOR\",\n  /** GRADIENT - Gradient backdrop */\n  GRADIENT = \"GRADIENT\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}","/* eslint-disable */\nimport { PluginContainerData, Media, Gradient } from './common.js';\n\nimport {\n  LayoutData_ImagePosition,\n  LayoutData_ResponsivenessBehaviour,\n  LayoutData_DesignTarget,\n  LayoutData_VerticalAlignment_Alignment,\n  LayoutData_ImageScaling_Scaling,\n  LayoutData_Banner_Origin,\n  LayoutData_Background_Type,\n  LayoutData_Backdrop_Type,\n} from './node_layout.enums.js';\n\n/**\n * flynt-disable missing-string-validations\n * flynt-disable missing-deprecated-field-annotation\n */\n\nexport interface LayoutData {\n  /**\n   * Deprecated: Use `background` instead.\n   *\n   * @deprecated\n   */\n  backgroundColor?: string;\n  /** Background image. */\n  backgroundImage?: LayoutData_BackgroundImage;\n  /** Border color as a hexadecimal value. */\n  borderColor?: string;\n  /** Border width in pixels. */\n  borderWidth?: number;\n  /** Border radius in pixels. */\n  borderRadius?: number;\n  /**\n   * Deprecated: Use `backdrop` instead.\n   *\n   * @deprecated\n   */\n  backdropColor?: string;\n  /** Backdrop image. */\n  backdropImage?: LayoutData_BackgroundImage;\n  /** Backdrop top padding. */\n  backdropPaddingTop?: number;\n  /** Backdrop bottom padding */\n  backdropPaddingBottom?: number;\n  /** Horizontal and vertical gap between columns */\n  gap?: number;\n  /** Padding in pixels for cells. Follows CSS order: top, right, bottom, left */\n  cellPadding: number[];\n  /** Vertical alignment for the cell's items. */\n  cellVerticalAlignment: LayoutData_VerticalAlignment_Alignment;\n  /** Responsiveness behaviour of columns when responsiveness applies. Either stacks or wrappers. */\n  responsivenessBehaviour: LayoutData_ResponsivenessBehaviour;\n  /** Size in pixels when responsiveness_behaviour applies */\n  responsivenessBreakpoint?: number;\n  /** Styling for the layout's container. */\n  containerData?: PluginContainerData;\n  /** Defines where selected design propertied applies to */\n  designTarget: LayoutData_DesignTarget;\n  /** Banner configuration. When present, this layout is displayed as a banner. */\n  banner?: LayoutData_Banner;\n  /** Background styling (color or gradient). */\n  background?: LayoutData_Background;\n  /** Backdrop styling (color or gradient). */\n  backdrop?: LayoutData_Backdrop;\n}\n\nexport function layoutData_ImagePositionFromJSON(\n  object: any\n): LayoutData_ImagePosition {\n  switch (object) {\n    case 0:\n    case \"CENTER\":\n      return LayoutData_ImagePosition.CENTER;\n    case 1:\n    case \"CENTER_LEFT\":\n      return LayoutData_ImagePosition.CENTER_LEFT;\n    case 2:\n    case \"CENTER_RIGHT\":\n      return LayoutData_ImagePosition.CENTER_RIGHT;\n    case 3:\n    case \"TOP\":\n      return LayoutData_ImagePosition.TOP;\n    case 4:\n    case \"TOP_LEFT\":\n      return LayoutData_ImagePosition.TOP_LEFT;\n    case 5:\n    case \"TOP_RIGHT\":\n      return LayoutData_ImagePosition.TOP_RIGHT;\n    case 6:\n    case \"BOTTOM\":\n      return LayoutData_ImagePosition.BOTTOM;\n    case 7:\n    case \"BOTTOM_LEFT\":\n      return LayoutData_ImagePosition.BOTTOM_LEFT;\n    case 8:\n    case \"BOTTOM_RIGHT\":\n      return LayoutData_ImagePosition.BOTTOM_RIGHT;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return LayoutData_ImagePosition.UNRECOGNIZED;\n  }\n}\n\nexport function layoutData_ImagePositionToJSON(\n  object: LayoutData_ImagePosition\n): string {\n  switch (object) {\n    case LayoutData_ImagePosition.CENTER:\n      return \"CENTER\";\n    case LayoutData_ImagePosition.CENTER_LEFT:\n      return \"CENTER_LEFT\";\n    case LayoutData_ImagePosition.CENTER_RIGHT:\n      return \"CENTER_RIGHT\";\n    case LayoutData_ImagePosition.TOP:\n      return \"TOP\";\n    case LayoutData_ImagePosition.TOP_LEFT:\n      return \"TOP_LEFT\";\n    case LayoutData_ImagePosition.TOP_RIGHT:\n      return \"TOP_RIGHT\";\n    case LayoutData_ImagePosition.BOTTOM:\n      return \"BOTTOM\";\n    case LayoutData_ImagePosition.BOTTOM_LEFT:\n      return \"BOTTOM_LEFT\";\n    case LayoutData_ImagePosition.BOTTOM_RIGHT:\n      return \"BOTTOM_RIGHT\";\n    default:\n      return \"UNKNOWN\";\n  }\n}\n\nexport function layoutData_ResponsivenessBehaviourFromJSON(\n  object: any\n): LayoutData_ResponsivenessBehaviour {\n  switch (object) {\n    case 0:\n    case \"STACK\":\n      return LayoutData_ResponsivenessBehaviour.STACK;\n    case 1:\n    case \"WRAP\":\n      return LayoutData_ResponsivenessBehaviour.WRAP;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return LayoutData_ResponsivenessBehaviour.UNRECOGNIZED;\n  }\n}\n\nexport function layoutData_ResponsivenessBehaviourToJSON(\n  object: LayoutData_ResponsivenessBehaviour\n): string {\n  switch (object) {\n    case LayoutData_ResponsivenessBehaviour.STACK:\n      return \"STACK\";\n    case LayoutData_ResponsivenessBehaviour.WRAP:\n      return \"WRAP\";\n    default:\n      return \"UNKNOWN\";\n  }\n}\n\nexport function layoutData_DesignTargetFromJSON(\n  object: any\n): LayoutData_DesignTarget {\n  switch (object) {\n    case 0:\n    case \"LAYOUT\":\n      return LayoutData_DesignTarget.LAYOUT;\n    case 1:\n    case \"CELL\":\n      return LayoutData_DesignTarget.CELL;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return LayoutData_DesignTarget.UNRECOGNIZED;\n  }\n}\n\nexport function layoutData_DesignTargetToJSON(\n  object: LayoutData_DesignTarget\n): string {\n  switch (object) {\n    case LayoutData_DesignTarget.LAYOUT:\n      return \"LAYOUT\";\n    case LayoutData_DesignTarget.CELL:\n      return \"CELL\";\n    default:\n      return \"UNKNOWN\";\n  }\n}\n\nexport interface LayoutData_VerticalAlignment {}\n\nexport function layoutData_VerticalAlignment_AlignmentFromJSON(\n  object: any\n): LayoutData_VerticalAlignment_Alignment {\n  switch (object) {\n    case 0:\n    case \"TOP\":\n      return LayoutData_VerticalAlignment_Alignment.TOP;\n    case 1:\n    case \"MIDDLE\":\n      return LayoutData_VerticalAlignment_Alignment.MIDDLE;\n    case 2:\n    case \"BOTTOM\":\n      return LayoutData_VerticalAlignment_Alignment.BOTTOM;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return LayoutData_VerticalAlignment_Alignment.UNRECOGNIZED;\n  }\n}\n\nexport function layoutData_VerticalAlignment_AlignmentToJSON(\n  object: LayoutData_VerticalAlignment_Alignment\n): string {\n  switch (object) {\n    case LayoutData_VerticalAlignment_Alignment.TOP:\n      return \"TOP\";\n    case LayoutData_VerticalAlignment_Alignment.MIDDLE:\n      return \"MIDDLE\";\n    case LayoutData_VerticalAlignment_Alignment.BOTTOM:\n      return \"BOTTOM\";\n    default:\n      return \"UNKNOWN\";\n  }\n}\n\nexport interface LayoutData_ImageScaling {}\n\nexport function layoutData_ImageScaling_ScalingFromJSON(\n  object: any\n): LayoutData_ImageScaling_Scaling {\n  switch (object) {\n    case 0:\n    case \"AUTO\":\n      return LayoutData_ImageScaling_Scaling.AUTO;\n    case 1:\n    case \"CONTAIN\":\n      return LayoutData_ImageScaling_Scaling.CONTAIN;\n    case 2:\n    case \"COVER\":\n      return LayoutData_ImageScaling_Scaling.COVER;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return LayoutData_ImageScaling_Scaling.UNRECOGNIZED;\n  }\n}\n\nexport function layoutData_ImageScaling_ScalingToJSON(\n  object: LayoutData_ImageScaling_Scaling\n): string {\n  switch (object) {\n    case LayoutData_ImageScaling_Scaling.AUTO:\n      return \"AUTO\";\n    case LayoutData_ImageScaling_Scaling.CONTAIN:\n      return \"CONTAIN\";\n    case LayoutData_ImageScaling_Scaling.COVER:\n      return \"COVER\";\n    default:\n      return \"UNKNOWN\";\n  }\n}\n\nexport interface LayoutData_BackgroundImage {\n  /** Background image. */\n  media?: Media;\n  /** Background image opacity. */\n  opacity?: number;\n  /** Background image scaling. */\n  scaling: LayoutData_ImageScaling_Scaling;\n  /** Position of background. Defaults to `CENTER`. */\n  position: LayoutData_ImagePosition;\n}\n\nexport interface LayoutData_Banner {\n  /** Origin of the banner */\n  origin: LayoutData_Banner_Origin;\n}\n\nexport function layoutData_Banner_OriginFromJSON(\n  object: any\n): LayoutData_Banner_Origin {\n  switch (object) {\n    case 0:\n    case \"IMAGE\":\n      return LayoutData_Banner_Origin.IMAGE;\n    case 1:\n    case \"LAYOUT\":\n      return LayoutData_Banner_Origin.LAYOUT;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return LayoutData_Banner_Origin.UNRECOGNIZED;\n  }\n}\n\nexport function layoutData_Banner_OriginToJSON(\n  object: LayoutData_Banner_Origin\n): string {\n  switch (object) {\n    case LayoutData_Banner_Origin.IMAGE:\n      return \"IMAGE\";\n    case LayoutData_Banner_Origin.LAYOUT:\n      return \"LAYOUT\";\n    default:\n      return \"UNKNOWN\";\n  }\n}\n\n/** Background styling (color or gradient) */\nexport interface LayoutData_Background {\n  /** Background type. */\n  type: LayoutData_Background_Type;\n  /** Background color as a hexadecimal value. */\n  color?: string;\n  /** Gradient configuration. */\n  gradient?: Gradient;\n}\n\nexport function layoutData_Background_TypeFromJSON(\n  object: any\n): LayoutData_Background_Type {\n  switch (object) {\n    case 0:\n    case \"COLOR\":\n      return LayoutData_Background_Type.COLOR;\n    case 1:\n    case \"GRADIENT\":\n      return LayoutData_Background_Type.GRADIENT;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return LayoutData_Background_Type.UNRECOGNIZED;\n  }\n}\n\nexport function layoutData_Background_TypeToJSON(\n  object: LayoutData_Background_Type\n): string {\n  switch (object) {\n    case LayoutData_Background_Type.COLOR:\n      return \"COLOR\";\n    case LayoutData_Background_Type.GRADIENT:\n      return \"GRADIENT\";\n    default:\n      return \"UNKNOWN\";\n  }\n}\n\n/** Backdrop styling (color or gradient) */\nexport interface LayoutData_Backdrop {\n  /** Backdrop type. */\n  type: LayoutData_Backdrop_Type;\n  /** Backdrop color as a hexadecimal value. */\n  color?: string;\n  /** Gradient configuration. */\n  gradient?: Gradient;\n}\n\nexport function layoutData_Backdrop_TypeFromJSON(\n  object: any\n): LayoutData_Backdrop_Type {\n  switch (object) {\n    case 0:\n    case \"COLOR\":\n      return LayoutData_Backdrop_Type.COLOR;\n    case 1:\n    case \"GRADIENT\":\n      return LayoutData_Backdrop_Type.GRADIENT;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return LayoutData_Backdrop_Type.UNRECOGNIZED;\n  }\n}\n\nexport function layoutData_Backdrop_TypeToJSON(\n  object: LayoutData_Backdrop_Type\n): string {\n  switch (object) {\n    case LayoutData_Backdrop_Type.COLOR:\n      return \"COLOR\";\n    case LayoutData_Backdrop_Type.GRADIENT:\n      return \"GRADIENT\";\n    default:\n      return \"UNKNOWN\";\n  }\n}\n\nconst baseLayoutData: object = {\n  cellPadding: 0,\n  cellVerticalAlignment: LayoutData_VerticalAlignment_Alignment.TOP,\n  responsivenessBehaviour: LayoutData_ResponsivenessBehaviour.STACK,\n  designTarget: LayoutData_DesignTarget.LAYOUT,\n};\n\nexport const LayoutData = {\n  fromJSON(object: any): LayoutData {\n    const message = { ...baseLayoutData } as LayoutData;\n    message.backgroundColor =\n      object.backgroundColor !== undefined && object.backgroundColor !== null\n        ? String(object.backgroundColor)\n        : undefined;\n    message.backgroundImage =\n      object.backgroundImage !== undefined && object.backgroundImage !== null\n        ? LayoutData_BackgroundImage.fromJSON(object.backgroundImage)\n        : undefined;\n    message.borderColor =\n      object.borderColor !== undefined && object.borderColor !== null\n        ? String(object.borderColor)\n        : undefined;\n    message.borderWidth =\n      object.borderWidth !== undefined && object.borderWidth !== null\n        ? Number(object.borderWidth)\n        : undefined;\n    message.borderRadius =\n      object.borderRadius !== undefined && object.borderRadius !== null\n        ? Number(object.borderRadius)\n        : undefined;\n    message.backdropColor =\n      object.backdropColor !== undefined && object.backdropColor !== null\n        ? String(object.backdropColor)\n        : undefined;\n    message.backdropImage =\n      object.backdropImage !== undefined && object.backdropImage !== null\n        ? LayoutData_BackgroundImage.fromJSON(object.backdropImage)\n        : undefined;\n    message.backdropPaddingTop =\n      object.backdropPaddingTop !== undefined &&\n      object.backdropPaddingTop !== null\n        ? Number(object.backdropPaddingTop)\n        : undefined;\n    message.backdropPaddingBottom =\n      object.backdropPaddingBottom !== undefined &&\n      object.backdropPaddingBottom !== null\n        ? Number(object.backdropPaddingBottom)\n        : undefined;\n    message.gap =\n      object.gap !== undefined && object.gap !== null\n        ? Number(object.gap)\n        : undefined;\n    message.cellPadding = (object.cellPadding ?? []).map((e: any) => Number(e));\n    message.cellVerticalAlignment =\n      object.cellVerticalAlignment !== undefined &&\n      object.cellVerticalAlignment !== null\n        ? layoutData_VerticalAlignment_AlignmentFromJSON(\n            object.cellVerticalAlignment\n          )\n        : LayoutData_VerticalAlignment_Alignment.TOP;\n    message.responsivenessBehaviour =\n      object.responsivenessBehaviour !== undefined &&\n      object.responsivenessBehaviour !== null\n        ? layoutData_ResponsivenessBehaviourFromJSON(\n            object.responsivenessBehaviour\n          )\n        : LayoutData_ResponsivenessBehaviour.STACK;\n    message.responsivenessBreakpoint =\n      object.responsivenessBreakpoint !== undefined &&\n      object.responsivenessBreakpoint !== null\n        ? Number(object.responsivenessBreakpoint)\n        : undefined;\n    message.containerData =\n      object.containerData !== undefined && object.containerData !== null\n        ? PluginContainerData.fromJSON(object.containerData)\n        : undefined;\n    message.designTarget =\n      object.designTarget !== undefined && object.designTarget !== null\n        ? layoutData_DesignTargetFromJSON(object.designTarget)\n        : LayoutData_DesignTarget.LAYOUT;\n    message.banner =\n      object.banner !== undefined && object.banner !== null\n        ? LayoutData_Banner.fromJSON(object.banner)\n        : undefined;\n    message.background =\n      object.background !== undefined && object.background !== null\n        ? LayoutData_Background.fromJSON(object.background)\n        : undefined;\n    message.backdrop =\n      object.backdrop !== undefined && object.backdrop !== null\n        ? LayoutData_Backdrop.fromJSON(object.backdrop)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: LayoutData): unknown {\n    const obj: any = {};\n    message.backgroundColor !== undefined &&\n      (obj.backgroundColor = message.backgroundColor);\n    message.backgroundImage !== undefined &&\n      (obj.backgroundImage = message.backgroundImage\n        ? LayoutData_BackgroundImage.toJSON(message.backgroundImage)\n        : undefined);\n    message.borderColor !== undefined &&\n      (obj.borderColor = message.borderColor);\n    message.borderWidth !== undefined &&\n      (obj.borderWidth = message.borderWidth);\n    message.borderRadius !== undefined &&\n      (obj.borderRadius = message.borderRadius);\n    message.backdropColor !== undefined &&\n      (obj.backdropColor = message.backdropColor);\n    message.backdropImage !== undefined &&\n      (obj.backdropImage = message.backdropImage\n        ? LayoutData_BackgroundImage.toJSON(message.backdropImage)\n        : undefined);\n    message.backdropPaddingTop !== undefined &&\n      (obj.backdropPaddingTop = message.backdropPaddingTop);\n    message.backdropPaddingBottom !== undefined &&\n      (obj.backdropPaddingBottom = message.backdropPaddingBottom);\n    message.gap !== undefined && (obj.gap = message.gap);\n    if (message.cellPadding) {\n      obj.cellPadding = message.cellPadding.map((e) => Math.round(e));\n    } else {\n      obj.cellPadding = [];\n    }\n    message.cellVerticalAlignment !== undefined &&\n      (obj.cellVerticalAlignment = layoutData_VerticalAlignment_AlignmentToJSON(\n        message.cellVerticalAlignment\n      ));\n    message.responsivenessBehaviour !== undefined &&\n      (obj.responsivenessBehaviour = layoutData_ResponsivenessBehaviourToJSON(\n        message.responsivenessBehaviour\n      ));\n    message.responsivenessBreakpoint !== undefined &&\n      (obj.responsivenessBreakpoint = message.responsivenessBreakpoint);\n    message.containerData !== undefined &&\n      (obj.containerData = message.containerData\n        ? PluginContainerData.toJSON(message.containerData)\n        : undefined);\n    message.designTarget !== undefined &&\n      (obj.designTarget = layoutData_DesignTargetToJSON(message.designTarget));\n    message.banner !== undefined &&\n      (obj.banner = message.banner\n        ? LayoutData_Banner.toJSON(message.banner)\n        : undefined);\n    message.background !== undefined &&\n      (obj.background = message.background\n        ? LayoutData_Background.toJSON(message.background)\n        : undefined);\n    message.backdrop !== undefined &&\n      (obj.backdrop = message.backdrop\n        ? LayoutData_Backdrop.toJSON(message.backdrop)\n        : undefined);\n    return obj;\n  },\n};\n\nconst baseLayoutData_VerticalAlignment: object = {};\n\nexport const LayoutData_VerticalAlignment = {\n  fromJSON(_: any): LayoutData_VerticalAlignment {\n    const message = {\n      ...baseLayoutData_VerticalAlignment,\n    } as LayoutData_VerticalAlignment;\n    return message;\n  },\n\n  toJSON(_: LayoutData_VerticalAlignment): unknown {\n    const obj: any = {};\n    return obj;\n  },\n};\n\nconst baseLayoutData_ImageScaling: object = {};\n\nexport const LayoutData_ImageScaling = {\n  fromJSON(_: any): LayoutData_ImageScaling {\n    const message = {\n      ...baseLayoutData_ImageScaling,\n    } as LayoutData_ImageScaling;\n    return message;\n  },\n\n  toJSON(_: LayoutData_ImageScaling): unknown {\n    const obj: any = {};\n    return obj;\n  },\n};\n\nconst baseLayoutData_BackgroundImage: object = {\n  scaling: LayoutData_ImageScaling_Scaling.AUTO,\n  position: LayoutData_ImagePosition.CENTER,\n};\n\nexport const LayoutData_BackgroundImage = {\n  fromJSON(object: any): LayoutData_BackgroundImage {\n    const message = {\n      ...baseLayoutData_BackgroundImage,\n    } as LayoutData_BackgroundImage;\n    message.media =\n      object.media !== undefined && object.media !== null\n        ? Media.fromJSON(object.media)\n        : undefined;\n    message.opacity =\n      object.opacity !== undefined && object.opacity !== null\n        ? Number(object.opacity)\n        : undefined;\n    message.scaling =\n      object.scaling !== undefined && object.scaling !== null\n        ? layoutData_ImageScaling_ScalingFromJSON(object.scaling)\n        : LayoutData_ImageScaling_Scaling.AUTO;\n    message.position =\n      object.position !== undefined && object.position !== null\n        ? layoutData_ImagePositionFromJSON(object.position)\n        : LayoutData_ImagePosition.CENTER;\n    return message;\n  },\n\n  toJSON(message: LayoutData_BackgroundImage): unknown {\n    const obj: any = {};\n    message.media !== undefined &&\n      (obj.media = message.media ? Media.toJSON(message.media) : undefined);\n    message.opacity !== undefined && (obj.opacity = message.opacity);\n    message.scaling !== undefined &&\n      (obj.scaling = layoutData_ImageScaling_ScalingToJSON(message.scaling));\n    message.position !== undefined &&\n      (obj.position = layoutData_ImagePositionToJSON(message.position));\n    return obj;\n  },\n};\n\nconst baseLayoutData_Banner: object = {\n  origin: LayoutData_Banner_Origin.IMAGE,\n};\n\nexport const LayoutData_Banner = {\n  fromJSON(object: any): LayoutData_Banner {\n    const message = { ...baseLayoutData_Banner } as LayoutData_Banner;\n    message.origin =\n      object.origin !== undefined && object.origin !== null\n        ? layoutData_Banner_OriginFromJSON(object.origin)\n        : LayoutData_Banner_Origin.IMAGE;\n    return message;\n  },\n\n  toJSON(message: LayoutData_Banner): unknown {\n    const obj: any = {};\n    message.origin !== undefined &&\n      (obj.origin = layoutData_Banner_OriginToJSON(message.origin));\n    return obj;\n  },\n};\n\nconst baseLayoutData_Background: object = {\n  type: LayoutData_Background_Type.COLOR,\n};\n\nexport const LayoutData_Background = {\n  fromJSON(object: any): LayoutData_Background {\n    const message = { ...baseLayoutData_Background } as LayoutData_Background;\n    message.type =\n      object.type !== undefined && object.type !== null\n        ? layoutData_Background_TypeFromJSON(object.type)\n        : LayoutData_Background_Type.COLOR;\n    message.color =\n      object.color !== undefined && object.color !== null\n        ? String(object.color)\n        : undefined;\n    message.gradient =\n      object.gradient !== undefined && object.gradient !== null\n        ? Gradient.fromJSON(object.gradient)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: LayoutData_Background): unknown {\n    const obj: any = {};\n    message.type !== undefined &&\n      (obj.type = layoutData_Background_TypeToJSON(message.type));\n    message.color !== undefined && (obj.color = message.color);\n    message.gradient !== undefined &&\n      (obj.gradient = message.gradient\n        ? Gradient.toJSON(message.gradient)\n        : undefined);\n    return obj;\n  },\n};\n\nconst baseLayoutData_Backdrop: object = {\n  type: LayoutData_Backdrop_Type.COLOR,\n};\n\nexport const LayoutData_Backdrop = {\n  fromJSON(object: any): LayoutData_Backdrop {\n    const message = { ...baseLayoutData_Backdrop } as LayoutData_Backdrop;\n    message.type =\n      object.type !== undefined && object.type !== null\n        ? layoutData_Backdrop_TypeFromJSON(object.type)\n        : LayoutData_Backdrop_Type.COLOR;\n    message.color =\n      object.color !== undefined && object.color !== null\n        ? String(object.color)\n        : undefined;\n    message.gradient =\n      object.gradient !== undefined && object.gradient !== null\n        ? Gradient.fromJSON(object.gradient)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: LayoutData_Backdrop): unknown {\n    const obj: any = {};\n    message.type !== undefined &&\n      (obj.type = layoutData_Backdrop_TypeToJSON(message.type));\n    message.color !== undefined && (obj.color = message.color);\n    message.gradient !== undefined &&\n      (obj.gradient = message.gradient\n        ? Gradient.toJSON(message.gradient)\n        : undefined);\n    return obj;\n  },\n};\n","/* eslint-disable */\n/** flynt-disable missing-string-validations */\n\nexport interface LayoutCellData {\n  /** Size of the cell in 12 columns grid. */\n  colSpan?: number;\n}\n\nconst baseLayoutCellData: object = {};\n\nexport const LayoutCellData = {\n  fromJSON(object: any): LayoutCellData {\n    const message = { ...baseLayoutCellData } as LayoutCellData;\n    message.colSpan =\n      object.colSpan !== undefined && object.colSpan !== null\n        ? Number(object.colSpan)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: LayoutCellData): unknown {\n    const obj: any = {};\n    message.colSpan !== undefined && (obj.colSpan = message.colSpan);\n    return obj;\n  },\n};\n","/* eslint-disable */\nexport interface OrderedListData {\n  /** Indentation level from 0-4. */\n  indentation: number;\n  /** Offset level from 0-4. */\n  offset?: number;\n  /** List start number. */\n  start?: number;\n}\n\nexport interface BulletedListData {\n  /** Indentation level from 0-4. */\n  indentation: number;\n  /** Offset level from 0-4. */\n  offset?: number;\n}\n\nconst baseOrderedListData: object = { indentation: 0 };\n\nexport const OrderedListData = {\n  fromJSON(object: any): OrderedListData {\n    const message = { ...baseOrderedListData } as OrderedListData;\n    message.indentation =\n      object.indentation !== undefined && object.indentation !== null\n        ? Number(object.indentation)\n        : 0;\n    message.offset =\n      object.offset !== undefined && object.offset !== null\n        ? Number(object.offset)\n        : undefined;\n    message.start =\n      object.start !== undefined && object.start !== null\n        ? Number(object.start)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: OrderedListData): unknown {\n    const obj: any = {};\n    message.indentation !== undefined &&\n      (obj.indentation = Math.round(message.indentation));\n    message.offset !== undefined && (obj.offset = message.offset);\n    message.start !== undefined && (obj.start = message.start);\n    return obj;\n  },\n};\n\nconst baseBulletedListData: object = { indentation: 0 };\n\nexport const BulletedListData = {\n  fromJSON(object: any): BulletedListData {\n    const message = { ...baseBulletedListData } as BulletedListData;\n    message.indentation =\n      object.indentation !== undefined && object.indentation !== null\n        ? Number(object.indentation)\n        : 0;\n    message.offset =\n      object.offset !== undefined && object.offset !== null\n        ? Number(object.offset)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: BulletedListData): unknown {\n    const obj: any = {};\n    message.indentation !== undefined &&\n      (obj.indentation = Math.round(message.indentation));\n    message.offset !== undefined && (obj.offset = message.offset);\n    return obj;\n  },\n};\n","/* eslint-disable */\nimport { TextStyle } from './common.js';\n\nexport interface ParagraphData {\n  /** Styling for the paragraph text. */\n  textStyle?: TextStyle;\n  /** Indentation level from 1-4. */\n  indentation?: number;\n  /** Paragraph level */\n  level?: number;\n}\n\nconst baseParagraphData: object = {};\n\nexport const ParagraphData = {\n  fromJSON(object: any): ParagraphData {\n    const message = { ...baseParagraphData } as ParagraphData;\n    message.textStyle =\n      object.textStyle !== undefined && object.textStyle !== null\n        ? TextStyle.fromJSON(object.textStyle)\n        : undefined;\n    message.indentation =\n      object.indentation !== undefined && object.indentation !== null\n        ? Number(object.indentation)\n        : undefined;\n    message.level =\n      object.level !== undefined && object.level !== null\n        ? Number(object.level)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: ParagraphData): unknown {\n    const obj: any = {};\n    message.textStyle !== undefined &&\n      (obj.textStyle = message.textStyle\n        ? TextStyle.toJSON(message.textStyle)\n        : undefined);\n    message.indentation !== undefined &&\n      (obj.indentation = message.indentation);\n    message.level !== undefined && (obj.level = message.level);\n    return obj;\n  },\n};\n","export enum AppEmbedData_AppType {\n  PRODUCT = \"PRODUCT\",\n  EVENT = \"EVENT\",\n  BOOKING = \"BOOKING\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport enum AppEmbedData_ImageStyles_Position {\n  /** START - Image positioned at the start (left in LTR layouts, right in RTL layouts) */\n  START = \"START\",\n  /** END - Image positioned at the end (right in LTR layouts, left in RTL layouts) */\n  END = \"END\",\n  /** TOP - Image positioned at the top */\n  TOP = \"TOP\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport enum AppEmbedData_ImageStyles_AspectRatio {\n  /** SQUARE - 1:1 aspect ratio */\n  SQUARE = \"SQUARE\",\n  /** RECTANGLE - 16:9 aspect ratio */\n  RECTANGLE = \"RECTANGLE\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport enum AppEmbedData_ImageStyles_Resizing {\n  /** FILL - Fill the container, may crop the image */\n  FILL = \"FILL\",\n  /** FIT - Fit the image within the container */\n  FIT = \"FIT\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport enum AppEmbedData_RibbonStyles_Placement {\n  /** IMAGE - Ribbon placed on the image */\n  IMAGE = \"IMAGE\",\n  /** PRODUCT_INFO - Ribbon placed on the product information */\n  PRODUCT_INFO = \"PRODUCT_INFO\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport enum AppEmbedData_CardStyles_Type {\n  /** CONTAINED - Card with visible border and background */\n  CONTAINED = \"CONTAINED\",\n  /** FRAMELESS - Card without visible border */\n  FRAMELESS = \"FRAMELESS\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport enum AppEmbedData_CardStyles_Alignment {\n  /** START - Content aligned to start (left in LTR layouts, right in RTL layouts) */\n  START = \"START\",\n  /** CENTER - Content centered */\n  CENTER = \"CENTER\",\n  /** END - Content aligned to end (right in LTR layouts, left in RTL layouts) */\n  END = \"END\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport enum AppEmbedData_CardStyles_Layout {\n  /** STACKED - Elements stacked vertically */\n  STACKED = \"STACKED\",\n  /** SIDE_BY_SIDE - Elements arranged horizontally */\n  SIDE_BY_SIDE = \"SIDE_BY_SIDE\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}","/* eslint-disable */\nimport { Media, PluginContainerData } from './common.js';\n\nimport {\n  AppEmbedData_AppType,\n  AppEmbedData_ImageStyles_Position,\n  AppEmbedData_ImageStyles_AspectRatio,\n  AppEmbedData_ImageStyles_Resizing,\n  AppEmbedData_RibbonStyles_Placement,\n  AppEmbedData_CardStyles_Type,\n  AppEmbedData_CardStyles_Alignment,\n  AppEmbedData_CardStyles_Layout,\n} from './plugin_app_embed.enums.js';\n\nexport interface AppEmbedData {\n  /** The type of Wix App content being embedded. */\n  type: AppEmbedData_AppType;\n  /** The ID of the embedded content. */\n  itemId?: string;\n  /** The name of the embedded content. */\n  name?: string;\n  /**\n   * Deprecated: Use `image` instead.\n   *\n   * @deprecated\n   */\n  imageSrc?: string;\n  /** The URL for the embedded content. */\n  url?: string;\n  /** An image for the embedded content. */\n  image?: Media;\n  /** Data for embedded Wix Bookings content. */\n  bookingData?: AppEmbedData_BookingData | undefined;\n  /** Data for embedded Wix Events content. */\n  eventData?: AppEmbedData_EventData | undefined;\n  /** Whether to hide the image. */\n  hideImage?: boolean;\n  /** Whether to hide the title. */\n  hideTitle?: boolean;\n  /** Whether to hide the price. */\n  hidePrice?: boolean;\n  /** Whether to hide the description (Event and Booking). */\n  hideDescription?: boolean;\n  /** Whether to hide the date and time (Event). */\n  hideDateTime?: boolean;\n  /** Whether to hide the location (Event). */\n  hideLocation?: boolean;\n  /** Whether to hide the duration (Booking). */\n  hideDuration?: boolean;\n  /** Whether to hide the button. */\n  hideButton?: boolean;\n  /** Whether to hide the ribbon. */\n  hideRibbon?: boolean;\n  /** Button styling options. */\n  buttonStyles?: AppEmbedData_ButtonStyles;\n  /** Image styling options. */\n  imageStyles?: AppEmbedData_ImageStyles;\n  /** Ribbon styling options. */\n  ribbonStyles?: AppEmbedData_RibbonStyles;\n  /** Card styling options. */\n  cardStyles?: AppEmbedData_CardStyles;\n  /** Styling for the app embed's container. */\n  containerData?: PluginContainerData;\n  /** Pricing data for embedded Wix App content. */\n  pricingData?: AppEmbedData_PricingData;\n}\n\nexport function appEmbedData_AppTypeFromJSON(\n  object: any\n): AppEmbedData_AppType {\n  switch (object) {\n    case 0:\n    case \"PRODUCT\":\n      return AppEmbedData_AppType.PRODUCT;\n    case 1:\n    case \"EVENT\":\n      return AppEmbedData_AppType.EVENT;\n    case 2:\n    case \"BOOKING\":\n      return AppEmbedData_AppType.BOOKING;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return AppEmbedData_AppType.UNRECOGNIZED;\n  }\n}\n\nexport function appEmbedData_AppTypeToJSON(\n  object: AppEmbedData_AppType\n): string {\n  switch (object) {\n    case AppEmbedData_AppType.PRODUCT:\n      return \"PRODUCT\";\n    case AppEmbedData_AppType.EVENT:\n      return \"EVENT\";\n    case AppEmbedData_AppType.BOOKING:\n      return \"BOOKING\";\n    default:\n      return \"UNKNOWN\";\n  }\n}\n\nexport interface AppEmbedData_ButtonStyles {\n  /** Text to display on the button. */\n  buttonText?: string;\n  /** Border width in pixels. */\n  borderWidth?: number;\n  /** Border radius in pixels. */\n  borderRadius?: number;\n  /** Border color as a hexadecimal value. */\n  borderColor?: string;\n  /** Text color as a hexadecimal value. */\n  textColor?: string;\n  /** Background color as a hexadecimal value. */\n  backgroundColor?: string;\n  /** Border color as a hexadecimal value (hover state). */\n  borderColorHover?: string;\n  /** Text color as a hexadecimal value (hover state). */\n  textColorHover?: string;\n  /** Background color as a hexadecimal value (hover state). */\n  backgroundColorHover?: string;\n  /** Button size option, one of `SMALL`, `MEDIUM` or `LARGE`. Defaults to `MEDIUM`. */\n  buttonSize?: string;\n}\n\nexport interface AppEmbedData_ImageStyles {\n  /** Whether to hide the image. */\n  hideImage?: boolean;\n  /** Position of image. Defaults to `START`. */\n  imagePosition: AppEmbedData_ImageStyles_Position;\n  /** Aspect ratio for the image. Defaults to `SQUARE`. */\n  aspectRatio: AppEmbedData_ImageStyles_AspectRatio;\n  /** How the image should be resized. Defaults to `FILL`. */\n  resizing: AppEmbedData_ImageStyles_Resizing;\n  /** Image border color as a hexadecimal value. */\n  borderColor?: string;\n  /** Image border width in pixels. */\n  borderWidth?: number;\n  /** Image border radius in pixels. */\n  borderRadius?: number;\n}\n\nexport function appEmbedData_ImageStyles_PositionFromJSON(\n  object: any\n): AppEmbedData_ImageStyles_Position {\n  switch (object) {\n    case 0:\n    case \"START\":\n      return AppEmbedData_ImageStyles_Position.START;\n    case 1:\n    case \"END\":\n      return AppEmbedData_ImageStyles_Position.END;\n    case 2:\n    case \"TOP\":\n      return AppEmbedData_ImageStyles_Position.TOP;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return AppEmbedData_ImageStyles_Position.UNRECOGNIZED;\n  }\n}\n\nexport function appEmbedData_ImageStyles_PositionToJSON(\n  object: AppEmbedData_ImageStyles_Position\n): string {\n  switch (object) {\n    case AppEmbedData_ImageStyles_Position.START:\n      return \"START\";\n    case AppEmbedData_ImageStyles_Position.END:\n      return \"END\";\n    case AppEmbedData_ImageStyles_Position.TOP:\n      return \"TOP\";\n    default:\n      return \"UNKNOWN\";\n  }\n}\n\nexport function appEmbedData_ImageStyles_AspectRatioFromJSON(\n  object: any\n): AppEmbedData_ImageStyles_AspectRatio {\n  switch (object) {\n    case 0:\n    case \"SQUARE\":\n      return AppEmbedData_ImageStyles_AspectRatio.SQUARE;\n    case 1:\n    case \"RECTANGLE\":\n      return AppEmbedData_ImageStyles_AspectRatio.RECTANGLE;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return AppEmbedData_ImageStyles_AspectRatio.UNRECOGNIZED;\n  }\n}\n\nexport function appEmbedData_ImageStyles_AspectRatioToJSON(\n  object: AppEmbedData_ImageStyles_AspectRatio\n): string {\n  switch (object) {\n    case AppEmbedData_ImageStyles_AspectRatio.SQUARE:\n      return \"SQUARE\";\n    case AppEmbedData_ImageStyles_AspectRatio.RECTANGLE:\n      return \"RECTANGLE\";\n    default:\n      return \"UNKNOWN\";\n  }\n}\n\nexport function appEmbedData_ImageStyles_ResizingFromJSON(\n  object: any\n): AppEmbedData_ImageStyles_Resizing {\n  switch (object) {\n    case 0:\n    case \"FILL\":\n      return AppEmbedData_ImageStyles_Resizing.FILL;\n    case 1:\n    case \"FIT\":\n      return AppEmbedData_ImageStyles_Resizing.FIT;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return AppEmbedData_ImageStyles_Resizing.UNRECOGNIZED;\n  }\n}\n\nexport function appEmbedData_ImageStyles_ResizingToJSON(\n  object: AppEmbedData_ImageStyles_Resizing\n): string {\n  switch (object) {\n    case AppEmbedData_ImageStyles_Resizing.FILL:\n      return \"FILL\";\n    case AppEmbedData_ImageStyles_Resizing.FIT:\n      return \"FIT\";\n    default:\n      return \"UNKNOWN\";\n  }\n}\n\nexport interface AppEmbedData_RibbonStyles {\n  /** Text to display on the ribbon. */\n  ribbonText?: string;\n  /** Ribbon background color as a hexadecimal value. */\n  backgroundColor?: string;\n  /** Ribbon text color as a hexadecimal value. */\n  textColor?: string;\n  /** Ribbon border color as a hexadecimal value. */\n  borderColor?: string;\n  /** Ribbon border width in pixels. */\n  borderWidth?: number;\n  /** Ribbon border radius in pixels. */\n  borderRadius?: number;\n  /** Placement of the ribbon. Defaults to `IMAGE`. */\n  ribbonPlacement: AppEmbedData_RibbonStyles_Placement;\n}\n\nexport function appEmbedData_RibbonStyles_PlacementFromJSON(\n  object: any\n): AppEmbedData_RibbonStyles_Placement {\n  switch (object) {\n    case 0:\n    case \"IMAGE\":\n      return AppEmbedData_RibbonStyles_Placement.IMAGE;\n    case 1:\n    case \"PRODUCT_INFO\":\n      return AppEmbedData_RibbonStyles_Placement.PRODUCT_INFO;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return AppEmbedData_RibbonStyles_Placement.UNRECOGNIZED;\n  }\n}\n\nexport function appEmbedData_RibbonStyles_PlacementToJSON(\n  object: AppEmbedData_RibbonStyles_Placement\n): string {\n  switch (object) {\n    case AppEmbedData_RibbonStyles_Placement.IMAGE:\n      return \"IMAGE\";\n    case AppEmbedData_RibbonStyles_Placement.PRODUCT_INFO:\n      return \"PRODUCT_INFO\";\n    default:\n      return \"UNKNOWN\";\n  }\n}\n\nexport interface AppEmbedData_CardStyles {\n  /** Card background color as a hexadecimal value. */\n  backgroundColor?: string;\n  /** Card border color as a hexadecimal value. */\n  borderColor?: string;\n  /** Card border width in pixels. */\n  borderWidth?: number;\n  /** Card border radius in pixels. */\n  borderRadius?: number;\n  /** Card type. Defaults to `CONTAINED`. */\n  type: AppEmbedData_CardStyles_Type;\n  /** Content alignment. Defaults to `START`. */\n  alignment: AppEmbedData_CardStyles_Alignment;\n  /** Layout for title and price. Defaults to `STACKED`. */\n  titlePriceLayout: AppEmbedData_CardStyles_Layout;\n  /** Title text color as a hexadecimal value. */\n  titleColor?: string;\n  /** Text color as a hexadecimal value. */\n  textColor?: string;\n}\n\nexport function appEmbedData_CardStyles_TypeFromJSON(\n  object: any\n): AppEmbedData_CardStyles_Type {\n  switch (object) {\n    case 0:\n    case \"CONTAINED\":\n      return AppEmbedData_CardStyles_Type.CONTAINED;\n    case 1:\n    case \"FRAMELESS\":\n      return AppEmbedData_CardStyles_Type.FRAMELESS;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return AppEmbedData_CardStyles_Type.UNRECOGNIZED;\n  }\n}\n\nexport function appEmbedData_CardStyles_TypeToJSON(\n  object: AppEmbedData_CardStyles_Type\n): string {\n  switch (object) {\n    case AppEmbedData_CardStyles_Type.CONTAINED:\n      return \"CONTAINED\";\n    case AppEmbedData_CardStyles_Type.FRAMELESS:\n      return \"FRAMELESS\";\n    default:\n      return \"UNKNOWN\";\n  }\n}\n\nexport function appEmbedData_CardStyles_AlignmentFromJSON(\n  object: any\n): AppEmbedData_CardStyles_Alignment {\n  switch (object) {\n    case 0:\n    case \"START\":\n      return AppEmbedData_CardStyles_Alignment.START;\n    case 1:\n    case \"CENTER\":\n      return AppEmbedData_CardStyles_Alignment.CENTER;\n    case 2:\n    case \"END\":\n      return AppEmbedData_CardStyles_Alignment.END;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return AppEmbedData_CardStyles_Alignment.UNRECOGNIZED;\n  }\n}\n\nexport function appEmbedData_CardStyles_AlignmentToJSON(\n  object: AppEmbedData_CardStyles_Alignment\n): string {\n  switch (object) {\n    case AppEmbedData_CardStyles_Alignment.START:\n      return \"START\";\n    case AppEmbedData_CardStyles_Alignment.CENTER:\n      return \"CENTER\";\n    case AppEmbedData_CardStyles_Alignment.END:\n      return \"END\";\n    default:\n      return \"UNKNOWN\";\n  }\n}\n\nexport function appEmbedData_CardStyles_LayoutFromJSON(\n  object: any\n): AppEmbedData_CardStyles_Layout {\n  switch (object) {\n    case 0:\n    case \"STACKED\":\n      return AppEmbedData_CardStyles_Layout.STACKED;\n    case 1:\n    case \"SIDE_BY_SIDE\":\n      return AppEmbedData_CardStyles_Layout.SIDE_BY_SIDE;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return AppEmbedData_CardStyles_Layout.UNRECOGNIZED;\n  }\n}\n\nexport function appEmbedData_CardStyles_LayoutToJSON(\n  object: AppEmbedData_CardStyles_Layout\n): string {\n  switch (object) {\n    case AppEmbedData_CardStyles_Layout.STACKED:\n      return \"STACKED\";\n    case AppEmbedData_CardStyles_Layout.SIDE_BY_SIDE:\n      return \"SIDE_BY_SIDE\";\n    default:\n      return \"UNKNOWN\";\n  }\n}\n\nexport interface AppEmbedData_BookingData {\n  /** Booking duration in minutes. */\n  durations?: string;\n}\n\nexport interface AppEmbedData_EventData {\n  /** Event schedule. */\n  scheduling?: string;\n  /** Event location. */\n  location?: string;\n}\n\nexport interface AppEmbedData_PricingData {\n  /** Minimum numeric price value as string (e.g., \"10.99\"). */\n  valueFrom?: string;\n  /** Maximum numeric price value as string (e.g., \"19.99\"). */\n  valueTo?: string;\n  /** Numeric price value as string after discount application (e.g., \"15.99\"). */\n  discountedValue?: string;\n  /** Currency of the value in ISO 4217 format (e.g., \"USD\", \"EUR\"). */\n  currency?: string;\n  /** Pricing plan ID. */\n  pricingPlanId?: string;\n}\n\nconst baseAppEmbedData: object = { type: AppEmbedData_AppType.PRODUCT };\n\nexport const AppEmbedData = {\n  fromJSON(object: any): AppEmbedData {\n    const message = { ...baseAppEmbedData } as AppEmbedData;\n    message.type =\n      object.type !== undefined && object.type !== null\n        ? appEmbedData_AppTypeFromJSON(object.type)\n        : AppEmbedData_AppType.PRODUCT;\n    message.itemId =\n      object.itemId !== undefined && object.itemId !== null\n        ? String(object.itemId)\n        : undefined;\n    message.name =\n      object.name !== undefined && object.name !== null\n        ? String(object.name)\n        : undefined;\n    message.imageSrc =\n      object.imageSrc !== undefined && object.imageSrc !== null\n        ? String(object.imageSrc)\n        : undefined;\n    message.url =\n      object.url !== undefined && object.url !== null\n        ? String(object.url)\n        : undefined;\n    message.image =\n      object.image !== undefined && object.image !== null\n        ? Media.fromJSON(object.image)\n        : undefined;\n    message.bookingData =\n      object.bookingData !== undefined && object.bookingData !== null\n        ? AppEmbedData_BookingData.fromJSON(object.bookingData)\n        : undefined;\n    message.eventData =\n      object.eventData !== undefined && object.eventData !== null\n        ? AppEmbedData_EventData.fromJSON(object.eventData)\n        : undefined;\n    message.hideImage =\n      object.hideImage !== undefined && object.hideImage !== null\n        ? Boolean(object.hideImage)\n        : undefined;\n    message.hideTitle =\n      object.hideTitle !== undefined && object.hideTitle !== null\n        ? Boolean(object.hideTitle)\n        : undefined;\n    message.hidePrice =\n      object.hidePrice !== undefined && object.hidePrice !== null\n        ? Boolean(object.hidePrice)\n        : undefined;\n    message.hideDescription =\n      object.hideDescription !== undefined && object.hideDescription !== null\n        ? Boolean(object.hideDescription)\n        : undefined;\n    message.hideDateTime =\n      object.hideDateTime !== undefined && object.hideDateTime !== null\n        ? Boolean(object.hideDateTime)\n        : undefined;\n    message.hideLocation =\n      object.hideLocation !== undefined && object.hideLocation !== null\n        ? Boolean(object.hideLocation)\n        : undefined;\n    message.hideDuration =\n      object.hideDuration !== undefined && object.hideDuration !== null\n        ? Boolean(object.hideDuration)\n        : undefined;\n    message.hideButton =\n      object.hideButton !== undefined && object.hideButton !== null\n        ? Boolean(object.hideButton)\n        : undefined;\n    message.hideRibbon =\n      object.hideRibbon !== undefined && object.hideRibbon !== null\n        ? Boolean(object.hideRibbon)\n        : undefined;\n    message.buttonStyles =\n      object.buttonStyles !== undefined && object.buttonStyles !== null\n        ? AppEmbedData_ButtonStyles.fromJSON(object.buttonStyles)\n        : undefined;\n    message.imageStyles =\n      object.imageStyles !== undefined && object.imageStyles !== null\n        ? AppEmbedData_ImageStyles.fromJSON(object.imageStyles)\n        : undefined;\n    message.ribbonStyles =\n      object.ribbonStyles !== undefined && object.ribbonStyles !== null\n        ? AppEmbedData_RibbonStyles.fromJSON(object.ribbonStyles)\n        : undefined;\n    message.cardStyles =\n      object.cardStyles !== undefined && object.cardStyles !== null\n        ? AppEmbedData_CardStyles.fromJSON(object.cardStyles)\n        : undefined;\n    message.containerData =\n      object.containerData !== undefined && object.containerData !== null\n        ? PluginContainerData.fromJSON(object.containerData)\n        : undefined;\n    message.pricingData =\n      object.pricingData !== undefined && object.pricingData !== null\n        ? AppEmbedData_PricingData.fromJSON(object.pricingData)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: AppEmbedData): unknown {\n    const obj: any = {};\n    message.type !== undefined &&\n      (obj.type = appEmbedData_AppTypeToJSON(message.type));\n    message.itemId !== undefined && (obj.itemId = message.itemId);\n    message.name !== undefined && (obj.name = message.name);\n    message.imageSrc !== undefined && (obj.imageSrc = message.imageSrc);\n    message.url !== undefined && (obj.url = message.url);\n    message.image !== undefined &&\n      (obj.image = message.image ? Media.toJSON(message.image) : undefined);\n    message.bookingData !== undefined &&\n      (obj.bookingData = message.bookingData\n        ? AppEmbedData_BookingData.toJSON(message.bookingData)\n        : undefined);\n    message.eventData !== undefined &&\n      (obj.eventData = message.eventData\n        ? AppEmbedData_EventData.toJSON(message.eventData)\n        : undefined);\n    message.hideImage !== undefined && (obj.hideImage = message.hideImage);\n    message.hideTitle !== undefined && (obj.hideTitle = message.hideTitle);\n    message.hidePrice !== undefined && (obj.hidePrice = message.hidePrice);\n    message.hideDescription !== undefined &&\n      (obj.hideDescription = message.hideDescription);\n    message.hideDateTime !== undefined &&\n      (obj.hideDateTime = message.hideDateTime);\n    message.hideLocation !== undefined &&\n      (obj.hideLocation = message.hideLocation);\n    message.hideDuration !== undefined &&\n      (obj.hideDuration = message.hideDuration);\n    message.hideButton !== undefined && (obj.hideButton = message.hideButton);\n    message.hideRibbon !== undefined && (obj.hideRibbon = message.hideRibbon);\n    message.buttonStyles !== undefined &&\n      (obj.buttonStyles = message.buttonStyles\n        ? AppEmbedData_ButtonStyles.toJSON(message.buttonStyles)\n        : undefined);\n    message.imageStyles !== undefined &&\n      (obj.imageStyles = message.imageStyles\n        ? AppEmbedData_ImageStyles.toJSON(message.imageStyles)\n        : undefined);\n    message.ribbonStyles !== undefined &&\n      (obj.ribbonStyles = message.ribbonStyles\n        ? AppEmbedData_RibbonStyles.toJSON(message.ribbonStyles)\n        : undefined);\n    message.cardStyles !== undefined &&\n      (obj.cardStyles = message.cardStyles\n        ? AppEmbedData_CardStyles.toJSON(message.cardStyles)\n        : undefined);\n    message.containerData !== undefined &&\n      (obj.containerData = message.containerData\n        ? PluginContainerData.toJSON(message.containerData)\n        : undefined);\n    message.pricingData !== undefined &&\n      (obj.pricingData = message.pricingData\n        ? AppEmbedData_PricingData.toJSON(message.pricingData)\n        : undefined);\n    return obj;\n  },\n};\n\nconst baseAppEmbedData_ButtonStyles: object = {};\n\nexport const AppEmbedData_ButtonStyles = {\n  fromJSON(object: any): AppEmbedData_ButtonStyles {\n    const message = {\n      ...baseAppEmbedData_ButtonStyles,\n    } as AppEmbedData_ButtonStyles;\n    message.buttonText =\n      object.buttonText !== undefined && object.buttonText !== null\n        ? String(object.buttonText)\n        : undefined;\n    message.borderWidth =\n      object.borderWidth !== undefined && object.borderWidth !== null\n        ? Number(object.borderWidth)\n        : undefined;\n    message.borderRadius =\n      object.borderRadius !== undefined && object.borderRadius !== null\n        ? Number(object.borderRadius)\n        : undefined;\n    message.borderColor =\n      object.borderColor !== undefined && object.borderColor !== null\n        ? String(object.borderColor)\n        : undefined;\n    message.textColor =\n      object.textColor !== undefined && object.textColor !== null\n        ? String(object.textColor)\n        : undefined;\n    message.backgroundColor =\n      object.backgroundColor !== undefined && object.backgroundColor !== null\n        ? String(object.backgroundColor)\n        : undefined;\n    message.borderColorHover =\n      object.borderColorHover !== undefined && object.borderColorHover !== null\n        ? String(object.borderColorHover)\n        : undefined;\n    message.textColorHover =\n      object.textColorHover !== undefined && object.textColorHover !== null\n        ? String(object.textColorHover)\n        : undefined;\n    message.backgroundColorHover =\n      object.backgroundColorHover !== undefined &&\n      object.backgroundColorHover !== null\n        ? String(object.backgroundColorHover)\n        : undefined;\n    message.buttonSize =\n      object.buttonSize !== undefined && object.buttonSize !== null\n        ? String(object.buttonSize)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: AppEmbedData_ButtonStyles): unknown {\n    const obj: any = {};\n    message.buttonText !== undefined && (obj.buttonText = message.buttonText);\n    message.borderWidth !== undefined &&\n      (obj.borderWidth = message.borderWidth);\n    message.borderRadius !== undefined &&\n      (obj.borderRadius = message.borderRadius);\n    message.borderColor !== undefined &&\n      (obj.borderColor = message.borderColor);\n    message.textColor !== undefined && (obj.textColor = message.textColor);\n    message.backgroundColor !== undefined &&\n      (obj.backgroundColor = message.backgroundColor);\n    message.borderColorHover !== undefined &&\n      (obj.borderColorHover = message.borderColorHover);\n    message.textColorHover !== undefined &&\n      (obj.textColorHover = message.textColorHover);\n    message.backgroundColorHover !== undefined &&\n      (obj.backgroundColorHover = message.backgroundColorHover);\n    message.buttonSize !== undefined && (obj.buttonSize = message.buttonSize);\n    return obj;\n  },\n};\n\nconst baseAppEmbedData_ImageStyles: object = {\n  imagePosition: AppEmbedData_ImageStyles_Position.START,\n  aspectRatio: AppEmbedData_ImageStyles_AspectRatio.SQUARE,\n  resizing: AppEmbedData_ImageStyles_Resizing.FILL,\n};\n\nexport const AppEmbedData_ImageStyles = {\n  fromJSON(object: any): AppEmbedData_ImageStyles {\n    const message = {\n      ...baseAppEmbedData_ImageStyles,\n    } as AppEmbedData_ImageStyles;\n    message.hideImage =\n      object.hideImage !== undefined && object.hideImage !== null\n        ? Boolean(object.hideImage)\n        : undefined;\n    message.imagePosition =\n      object.imagePosition !== undefined && object.imagePosition !== null\n        ? appEmbedData_ImageStyles_PositionFromJSON(object.imagePosition)\n        : AppEmbedData_ImageStyles_Position.START;\n    message.aspectRatio =\n      object.aspectRatio !== undefined && object.aspectRatio !== null\n        ? appEmbedData_ImageStyles_AspectRatioFromJSON(object.aspectRatio)\n        : AppEmbedData_ImageStyles_AspectRatio.SQUARE;\n    message.resizing =\n      object.resizing !== undefined && object.resizing !== null\n        ? appEmbedData_ImageStyles_ResizingFromJSON(object.resizing)\n        : AppEmbedData_ImageStyles_Resizing.FILL;\n    message.borderColor =\n      object.borderColor !== undefined && object.borderColor !== null\n        ? String(object.borderColor)\n        : undefined;\n    message.borderWidth =\n      object.borderWidth !== undefined && object.borderWidth !== null\n        ? Number(object.borderWidth)\n        : undefined;\n    message.borderRadius =\n      object.borderRadius !== undefined && object.borderRadius !== null\n        ? Number(object.borderRadius)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: AppEmbedData_ImageStyles): unknown {\n    const obj: any = {};\n    message.hideImage !== undefined && (obj.hideImage = message.hideImage);\n    message.imagePosition !== undefined &&\n      (obj.imagePosition = appEmbedData_ImageStyles_PositionToJSON(\n        message.imagePosition\n      ));\n    message.aspectRatio !== undefined &&\n      (obj.aspectRatio = appEmbedData_ImageStyles_AspectRatioToJSON(\n        message.aspectRatio\n      ));\n    message.resizing !== undefined &&\n      (obj.resizing = appEmbedData_ImageStyles_ResizingToJSON(\n        message.resizing\n      ));\n    message.borderColor !== undefined &&\n      (obj.borderColor = message.borderColor);\n    message.borderWidth !== undefined &&\n      (obj.borderWidth = message.borderWidth);\n    message.borderRadius !== undefined &&\n      (obj.borderRadius = message.borderRadius);\n    return obj;\n  },\n};\n\nconst baseAppEmbedData_RibbonStyles: object = {\n  ribbonPlacement: AppEmbedData_RibbonStyles_Placement.IMAGE,\n};\n\nexport const AppEmbedData_RibbonStyles = {\n  fromJSON(object: any): AppEmbedData_RibbonStyles {\n    const message = {\n      ...baseAppEmbedData_RibbonStyles,\n    } as AppEmbedData_RibbonStyles;\n    message.ribbonText =\n      object.ribbonText !== undefined && object.ribbonText !== null\n        ? String(object.ribbonText)\n        : undefined;\n    message.backgroundColor =\n      object.backgroundColor !== undefined && object.backgroundColor !== null\n        ? String(object.backgroundColor)\n        : undefined;\n    message.textColor =\n      object.textColor !== undefined && object.textColor !== null\n        ? String(object.textColor)\n        : undefined;\n    message.borderColor =\n      object.borderColor !== undefined && object.borderColor !== null\n        ? String(object.borderColor)\n        : undefined;\n    message.borderWidth =\n      object.borderWidth !== undefined && object.borderWidth !== null\n        ? Number(object.borderWidth)\n        : undefined;\n    message.borderRadius =\n      object.borderRadius !== undefined && object.borderRadius !== null\n        ? Number(object.borderRadius)\n        : undefined;\n    message.ribbonPlacement =\n      object.ribbonPlacement !== undefined && object.ribbonPlacement !== null\n        ? appEmbedData_RibbonStyles_PlacementFromJSON(object.ribbonPlacement)\n        : AppEmbedData_RibbonStyles_Placement.IMAGE;\n    return message;\n  },\n\n  toJSON(message: AppEmbedData_RibbonStyles): unknown {\n    const obj: any = {};\n    message.ribbonText !== undefined && (obj.ribbonText = message.ribbonText);\n    message.backgroundColor !== undefined &&\n      (obj.backgroundColor = message.backgroundColor);\n    message.textColor !== undefined && (obj.textColor = message.textColor);\n    message.borderColor !== undefined &&\n      (obj.borderColor = message.borderColor);\n    message.borderWidth !== undefined &&\n      (obj.borderWidth = message.borderWidth);\n    message.borderRadius !== undefined &&\n      (obj.borderRadius = message.borderRadius);\n    message.ribbonPlacement !== undefined &&\n      (obj.ribbonPlacement = appEmbedData_RibbonStyles_PlacementToJSON(\n        message.ribbonPlacement\n      ));\n    return obj;\n  },\n};\n\nconst baseAppEmbedData_CardStyles: object = {\n  type: AppEmbedData_CardStyles_Type.CONTAINED,\n  alignment: AppEmbedData_CardStyles_Alignment.START,\n  titlePriceLayout: AppEmbedData_CardStyles_Layout.STACKED,\n};\n\nexport const AppEmbedData_CardStyles = {\n  fromJSON(object: any): AppEmbedData_CardStyles {\n    const message = {\n      ...baseAppEmbedData_CardStyles,\n    } as AppEmbedData_CardStyles;\n    message.backgroundColor =\n      object.backgroundColor !== undefined && object.backgroundColor !== null\n        ? String(object.backgroundColor)\n        : undefined;\n    message.borderColor =\n      object.borderColor !== undefined && object.borderColor !== null\n        ? String(object.borderColor)\n        : undefined;\n    message.borderWidth =\n      object.borderWidth !== undefined && object.borderWidth !== null\n        ? Number(object.borderWidth)\n        : undefined;\n    message.borderRadius =\n      object.borderRadius !== undefined && object.borderRadius !== null\n        ? Number(object.borderRadius)\n        : undefined;\n    message.type =\n      object.type !== undefined && object.type !== null\n        ? appEmbedData_CardStyles_TypeFromJSON(object.type)\n        : AppEmbedData_CardStyles_Type.CONTAINED;\n    message.alignment =\n      object.alignment !== undefined && object.alignment !== null\n        ? appEmbedData_CardStyles_AlignmentFromJSON(object.alignment)\n        : AppEmbedData_CardStyles_Alignment.START;\n    message.titlePriceLayout =\n      object.titlePriceLayout !== undefined && object.titlePriceLayout !== null\n        ? appEmbedData_CardStyles_LayoutFromJSON(object.titlePriceLayout)\n        : AppEmbedData_CardStyles_Layout.STACKED;\n    message.titleColor =\n      object.titleColor !== undefined && object.titleColor !== null\n        ? String(object.titleColor)\n        : undefined;\n    message.textColor =\n      object.textColor !== undefined && object.textColor !== null\n        ? String(object.textColor)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: AppEmbedData_CardStyles): unknown {\n    const obj: any = {};\n    message.backgroundColor !== undefined &&\n      (obj.backgroundColor = message.backgroundColor);\n    message.borderColor !== undefined &&\n      (obj.borderColor = message.borderColor);\n    message.borderWidth !== undefined &&\n      (obj.borderWidth = message.borderWidth);\n    message.borderRadius !== undefined &&\n      (obj.borderRadius = message.borderRadius);\n    message.type !== undefined &&\n      (obj.type = appEmbedData_CardStyles_TypeToJSON(message.type));\n    message.alignment !== undefined &&\n      (obj.alignment = appEmbedData_CardStyles_AlignmentToJSON(\n        message.alignment\n      ));\n    message.titlePriceLayout !== undefined &&\n      (obj.titlePriceLayout = appEmbedData_CardStyles_LayoutToJSON(\n        message.titlePriceLayout\n      ));\n    message.titleColor !== undefined && (obj.titleColor = message.titleColor);\n    message.textColor !== undefined && (obj.textColor = message.textColor);\n    return obj;\n  },\n};\n\nconst baseAppEmbedData_BookingData: object = {};\n\nexport const AppEmbedData_BookingData = {\n  fromJSON(object: any): AppEmbedData_BookingData {\n    const message = {\n      ...baseAppEmbedData_BookingData,\n    } as AppEmbedData_BookingData;\n    message.durations =\n      object.durations !== undefined && object.durations !== null\n        ? String(object.durations)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: AppEmbedData_BookingData): unknown {\n    const obj: any = {};\n    message.durations !== undefined && (obj.durations = message.durations);\n    return obj;\n  },\n};\n\nconst baseAppEmbedData_EventData: object = {};\n\nexport const AppEmbedData_EventData = {\n  fromJSON(object: any): AppEmbedData_EventData {\n    const message = { ...baseAppEmbedData_EventData } as AppEmbedData_EventData;\n    message.scheduling =\n      object.scheduling !== undefined && object.scheduling !== null\n        ? String(object.scheduling)\n        : undefined;\n    message.location =\n      object.location !== undefined && object.location !== null\n        ? String(object.location)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: AppEmbedData_EventData): unknown {\n    const obj: any = {};\n    message.scheduling !== undefined && (obj.scheduling = message.scheduling);\n    message.location !== undefined && (obj.location = message.location);\n    return obj;\n  },\n};\n\nconst baseAppEmbedData_PricingData: object = {};\n\nexport const AppEmbedData_PricingData = {\n  fromJSON(object: any): AppEmbedData_PricingData {\n    const message = {\n      ...baseAppEmbedData_PricingData,\n    } as AppEmbedData_PricingData;\n    message.valueFrom =\n      object.valueFrom !== undefined && object.valueFrom !== null\n        ? String(object.valueFrom)\n        : undefined;\n    message.valueTo =\n      object.valueTo !== undefined && object.valueTo !== null\n        ? String(object.valueTo)\n        : undefined;\n    message.discountedValue =\n      object.discountedValue !== undefined && object.discountedValue !== null\n        ? String(object.discountedValue)\n        : undefined;\n    message.currency =\n      object.currency !== undefined && object.currency !== null\n        ? String(object.currency)\n        : undefined;\n    message.pricingPlanId =\n      object.pricingPlanId !== undefined && object.pricingPlanId !== null\n        ? String(object.pricingPlanId)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: AppEmbedData_PricingData): unknown {\n    const obj: any = {};\n    message.valueFrom !== undefined && (obj.valueFrom = message.valueFrom);\n    message.valueTo !== undefined && (obj.valueTo = message.valueTo);\n    message.discountedValue !== undefined &&\n      (obj.discountedValue = message.discountedValue);\n    message.currency !== undefined && (obj.currency = message.currency);\n    message.pricingPlanId !== undefined &&\n      (obj.pricingPlanId = message.pricingPlanId);\n    return obj;\n  },\n};\n","/* eslint-disable */\nimport { PluginContainerData, Media } from './common.js';\n\nexport interface AudioData {\n  /** Styling for the audio node's container. */\n  containerData?: PluginContainerData;\n  /** Audio file details. */\n  audio?: Media;\n  /** Sets whether the audio node's download button is disabled. Defaults to `false`. */\n  disableDownload?: boolean;\n  /** Cover image. */\n  coverImage?: Media;\n  /** Track name. */\n  name?: string;\n  /** Author name. */\n  authorName?: string;\n  /** An HTML version of the audio node. */\n  html?: string;\n}\n\nconst baseAudioData: object = {};\n\nexport const AudioData = {\n  fromJSON(object: any): AudioData {\n    const message = { ...baseAudioData } as AudioData;\n    message.containerData =\n      object.containerData !== undefined && object.containerData !== null\n        ? PluginContainerData.fromJSON(object.containerData)\n        : undefined;\n    message.audio =\n      object.audio !== undefined && object.audio !== null\n        ? Media.fromJSON(object.audio)\n        : undefined;\n    message.disableDownload =\n      object.disableDownload !== undefined && object.disableDownload !== null\n        ? Boolean(object.disableDownload)\n        : undefined;\n    message.coverImage =\n      object.coverImage !== undefined && object.coverImage !== null\n        ? Media.fromJSON(object.coverImage)\n        : undefined;\n    message.name =\n      object.name !== undefined && object.name !== null\n        ? String(object.name)\n        : undefined;\n    message.authorName =\n      object.authorName !== undefined && object.authorName !== null\n        ? String(object.authorName)\n        : undefined;\n    message.html =\n      object.html !== undefined && object.html !== null\n        ? String(object.html)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: AudioData): unknown {\n    const obj: any = {};\n    message.containerData !== undefined &&\n      (obj.containerData = message.containerData\n        ? PluginContainerData.toJSON(message.containerData)\n        : undefined);\n    message.audio !== undefined &&\n      (obj.audio = message.audio ? Media.toJSON(message.audio) : undefined);\n    message.disableDownload !== undefined &&\n      (obj.disableDownload = message.disableDownload);\n    message.coverImage !== undefined &&\n      (obj.coverImage = message.coverImage\n        ? Media.toJSON(message.coverImage)\n        : undefined);\n    message.name !== undefined && (obj.name = message.name);\n    message.authorName !== undefined && (obj.authorName = message.authorName);\n    message.html !== undefined && (obj.html = message.html);\n    return obj;\n  },\n};\n","export enum ButtonData_Type {\n  /** LINK - Regular link button */\n  LINK = \"LINK\",\n  /** ACTION - Triggers custom action that is defined in plugin configuration by the consumer */\n  ACTION = \"ACTION\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\n/** Background type */\nexport enum ButtonData_Styles_Background_Type {\n  /** COLOR - Solid color background */\n  COLOR = \"COLOR\",\n  /** GRADIENT - Gradient background */\n  GRADIENT = \"GRADIENT\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}","/* eslint-disable */\nimport { PluginContainerData, Link, Gradient } from './common.js';\n\nimport { ButtonData_Type, ButtonData_Styles_Background_Type } from './plugin_button.enums.js';\n\nexport interface ButtonData {\n  /** Styling for the button's container. */\n  containerData?: PluginContainerData;\n  /** The button type. */\n  type: ButtonData_Type;\n  /** Styling for the button. */\n  styles?: ButtonData_Styles;\n  /** The text to display on the button. */\n  text?: string;\n  /** Button link details. */\n  link?: Link;\n}\n\nexport function buttonData_TypeFromJSON(object: any): ButtonData_Type {\n  switch (object) {\n    case 0:\n    case \"LINK\":\n      return ButtonData_Type.LINK;\n    case 1:\n    case \"ACTION\":\n      return ButtonData_Type.ACTION;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return ButtonData_Type.UNRECOGNIZED;\n  }\n}\n\nexport function buttonData_TypeToJSON(object: ButtonData_Type): string {\n  switch (object) {\n    case ButtonData_Type.LINK:\n      return \"LINK\";\n    case ButtonData_Type.ACTION:\n      return \"ACTION\";\n    default:\n      return \"UNKNOWN\";\n  }\n}\n\nexport interface ButtonData_Styles {\n  /**\n   * Deprecated: Use `borderWidth` and `borderRadius` instead.\n   *\n   * @deprecated\n   */\n  border?: ButtonData_Styles_Border;\n  /**\n   * Deprecated: Use `textColor`, `borderColor` and `backgroundColor` instead.\n   *\n   * @deprecated\n   */\n  colors?: ButtonData_Styles_Colors;\n  /** Border width in pixels. */\n  borderWidth?: number;\n  /**\n   * Deprecated: Use `borderWidth` for normal/hover states instead.\n   *\n   * @deprecated\n   */\n  borderWidthHover?: number;\n  /** Border radius in pixels. */\n  borderRadius?: number;\n  /** Border color as a hexadecimal value. */\n  borderColor?: string;\n  /** Border color as a hexadecimal value (hover state). */\n  borderColorHover?: string;\n  /** Text color as a hexadecimal value. */\n  textColor?: string;\n  /** Text color as a hexadecimal value (hover state). */\n  textColorHover?: string;\n  /**\n   * Deprecated: Use `background` instead.\n   *\n   * @deprecated\n   */\n  backgroundColor?: string;\n  /**\n   * Deprecated: Use `backgroundHover` instead.\n   *\n   * @deprecated\n   */\n  backgroundColorHover?: string;\n  /** Button size option, one of `SMALL`, `MEDIUM` or `LARGE`. Defaults to `MEDIUM`. */\n  buttonSize?: string;\n  /** Background styling (color or gradient). */\n  background?: ButtonData_Styles_Background;\n  /** Background styling for hover state (color or gradient). */\n  backgroundHover?: ButtonData_Styles_Background;\n}\n\nexport interface ButtonData_Styles_Colors {\n  /**\n   * Deprecated: Use `textColor` in `styles` instead.\n   *\n   * @deprecated\n   */\n  text?: string;\n  /**\n   * Deprecated: Use `borderColor` in `styles` instead.\n   *\n   * @deprecated\n   */\n  border?: string;\n  /**\n   * Deprecated: Use `backgroundColor` in `styles` instead.\n   *\n   * @deprecated\n   */\n  background?: string;\n}\n\nexport interface ButtonData_Styles_Border {\n  /**\n   * Deprecated: Use `borderWidth` in `styles` instead.\n   *\n   * @deprecated\n   */\n  width?: number;\n  /**\n   * Deprecated: Use `borderRadius` in `styles` instead.\n   *\n   * @deprecated\n   */\n  radius?: number;\n}\n\n/** Background styling (color or gradient) */\nexport interface ButtonData_Styles_Background {\n  /** Background type. */\n  type: ButtonData_Styles_Background_Type;\n  /** Background color as a hexadecimal value. */\n  color?: string;\n  /** Gradient configuration. */\n  gradient?: Gradient;\n}\n\nexport function buttonData_Styles_Background_TypeFromJSON(\n  object: any\n): ButtonData_Styles_Background_Type {\n  switch (object) {\n    case 0:\n    case \"COLOR\":\n      return ButtonData_Styles_Background_Type.COLOR;\n    case 1:\n    case \"GRADIENT\":\n      return ButtonData_Styles_Background_Type.GRADIENT;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return ButtonData_Styles_Background_Type.UNRECOGNIZED;\n  }\n}\n\nexport function buttonData_Styles_Background_TypeToJSON(\n  object: ButtonData_Styles_Background_Type\n): string {\n  switch (object) {\n    case ButtonData_Styles_Background_Type.COLOR:\n      return \"COLOR\";\n    case ButtonData_Styles_Background_Type.GRADIENT:\n      return \"GRADIENT\";\n    default:\n      return \"UNKNOWN\";\n  }\n}\n\nconst baseButtonData: object = { type: ButtonData_Type.LINK };\n\nexport const ButtonData = {\n  fromJSON(object: any): ButtonData {\n    const message = { ...baseButtonData } as ButtonData;\n    message.containerData =\n      object.containerData !== undefined && object.containerData !== null\n        ? PluginContainerData.fromJSON(object.containerData)\n        : undefined;\n    message.type =\n      object.type !== undefined && object.type !== null\n        ? buttonData_TypeFromJSON(object.type)\n        : ButtonData_Type.LINK;\n    message.styles =\n      object.styles !== undefined && object.styles !== null\n        ? ButtonData_Styles.fromJSON(object.styles)\n        : undefined;\n    message.text =\n      object.text !== undefined && object.text !== null\n        ? String(object.text)\n        : undefined;\n    message.link =\n      object.link !== undefined && object.link !== null\n        ? Link.fromJSON(object.link)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: ButtonData): unknown {\n    const obj: any = {};\n    message.containerData !== undefined &&\n      (obj.containerData = message.containerData\n        ? PluginContainerData.toJSON(message.containerData)\n        : undefined);\n    message.type !== undefined &&\n      (obj.type = buttonData_TypeToJSON(message.type));\n    message.styles !== undefined &&\n      (obj.styles = message.styles\n        ? ButtonData_Styles.toJSON(message.styles)\n        : undefined);\n    message.text !== undefined && (obj.text = message.text);\n    message.link !== undefined &&\n      (obj.link = message.link ? Link.toJSON(message.link) : undefined);\n    return obj;\n  },\n};\n\nconst baseButtonData_Styles: object = {};\n\nexport const ButtonData_Styles = {\n  fromJSON(object: any): ButtonData_Styles {\n    const message = { ...baseButtonData_Styles } as ButtonData_Styles;\n    message.border =\n      object.border !== undefined && object.border !== null\n        ? ButtonData_Styles_Border.fromJSON(object.border)\n        : undefined;\n    message.colors =\n      object.colors !== undefined && object.colors !== null\n        ? ButtonData_Styles_Colors.fromJSON(object.colors)\n        : undefined;\n    message.borderWidth =\n      object.borderWidth !== undefined && object.borderWidth !== null\n        ? Number(object.borderWidth)\n        : undefined;\n    message.borderWidthHover =\n      object.borderWidthHover !== undefined && object.borderWidthHover !== null\n        ? Number(object.borderWidthHover)\n        : undefined;\n    message.borderRadius =\n      object.borderRadius !== undefined && object.borderRadius !== null\n        ? Number(object.borderRadius)\n        : undefined;\n    message.borderColor =\n      object.borderColor !== undefined && object.borderColor !== null\n        ? String(object.borderColor)\n        : undefined;\n    message.borderColorHover =\n      object.borderColorHover !== undefined && object.borderColorHover !== null\n        ? String(object.borderColorHover)\n        : undefined;\n    message.textColor =\n      object.textColor !== undefined && object.textColor !== null\n        ? String(object.textColor)\n        : undefined;\n    message.textColorHover =\n      object.textColorHover !== undefined && object.textColorHover !== null\n        ? String(object.textColorHover)\n        : undefined;\n    message.backgroundColor =\n      object.backgroundColor !== undefined && object.backgroundColor !== null\n        ? String(object.backgroundColor)\n        : undefined;\n    message.backgroundColorHover =\n      object.backgroundColorHover !== undefined &&\n      object.backgroundColorHover !== null\n        ? String(object.backgroundColorHover)\n        : undefined;\n    message.buttonSize =\n      object.buttonSize !== undefined && object.buttonSize !== null\n        ? String(object.buttonSize)\n        : undefined;\n    message.background =\n      object.background !== undefined && object.background !== null\n        ? ButtonData_Styles_Background.fromJSON(object.background)\n        : undefined;\n    message.backgroundHover =\n      object.backgroundHover !== undefined && object.backgroundHover !== null\n        ? ButtonData_Styles_Background.fromJSON(object.backgroundHover)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: ButtonData_Styles): unknown {\n    const obj: any = {};\n    message.border !== undefined &&\n      (obj.border = message.border\n        ? ButtonData_Styles_Border.toJSON(message.border)\n        : undefined);\n    message.colors !== undefined &&\n      (obj.colors = message.colors\n        ? ButtonData_Styles_Colors.toJSON(message.colors)\n        : undefined);\n    message.borderWidth !== undefined &&\n      (obj.borderWidth = message.borderWidth);\n    message.borderWidthHover !== undefined &&\n      (obj.borderWidthHover = message.borderWidthHover);\n    message.borderRadius !== undefined &&\n      (obj.borderRadius = message.borderRadius);\n    message.borderColor !== undefined &&\n      (obj.borderColor = message.borderColor);\n    message.borderColorHover !== undefined &&\n      (obj.borderColorHover = message.borderColorHover);\n    message.textColor !== undefined && (obj.textColor = message.textColor);\n    message.textColorHover !== undefined &&\n      (obj.textColorHover = message.textColorHover);\n    message.backgroundColor !== undefined &&\n      (obj.backgroundColor = message.backgroundColor);\n    message.backgroundColorHover !== undefined &&\n      (obj.backgroundColorHover = message.backgroundColorHover);\n    message.buttonSize !== undefined && (obj.buttonSize = message.buttonSize);\n    message.background !== undefined &&\n      (obj.background = message.background\n        ? ButtonData_Styles_Background.toJSON(message.background)\n        : undefined);\n    message.backgroundHover !== undefined &&\n      (obj.backgroundHover = message.backgroundHover\n        ? ButtonData_Styles_Background.toJSON(message.backgroundHover)\n        : undefined);\n    return obj;\n  },\n};\n\nconst baseButtonData_Styles_Colors: object = {};\n\nexport const ButtonData_Styles_Colors = {\n  fromJSON(object: any): ButtonData_Styles_Colors {\n    const message = {\n      ...baseButtonData_Styles_Colors,\n    } as ButtonData_Styles_Colors;\n    message.text =\n      object.text !== undefined && object.text !== null\n        ? String(object.text)\n        : undefined;\n    message.border =\n      object.border !== undefined && object.border !== null\n        ? String(object.border)\n        : undefined;\n    message.background =\n      object.background !== undefined && object.background !== null\n        ? String(object.background)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: ButtonData_Styles_Colors): unknown {\n    const obj: any = {};\n    message.text !== undefined && (obj.text = message.text);\n    message.border !== undefined && (obj.border = message.border);\n    message.background !== undefined && (obj.background = message.background);\n    return obj;\n  },\n};\n\nconst baseButtonData_Styles_Border: object = {};\n\nexport const ButtonData_Styles_Border = {\n  fromJSON(object: any): ButtonData_Styles_Border {\n    const message = {\n      ...baseButtonData_Styles_Border,\n    } as ButtonData_Styles_Border;\n    message.width =\n      object.width !== undefined && object.width !== null\n        ? Number(object.width)\n        : undefined;\n    message.radius =\n      object.radius !== undefined && object.radius !== null\n        ? Number(object.radius)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: ButtonData_Styles_Border): unknown {\n    const obj: any = {};\n    message.width !== undefined && (obj.width = message.width);\n    message.radius !== undefined && (obj.radius = message.radius);\n    return obj;\n  },\n};\n\nconst baseButtonData_Styles_Background: object = {\n  type: ButtonData_Styles_Background_Type.COLOR,\n};\n\nexport const ButtonData_Styles_Background = {\n  fromJSON(object: any): ButtonData_Styles_Background {\n    const message = {\n      ...baseButtonData_Styles_Background,\n    } as ButtonData_Styles_Background;\n    message.type =\n      object.type !== undefined && object.type !== null\n        ? buttonData_Styles_Background_TypeFromJSON(object.type)\n        : ButtonData_Styles_Background_Type.COLOR;\n    message.color =\n      object.color !== undefined && object.color !== null\n        ? String(object.color)\n        : undefined;\n    message.gradient =\n      object.gradient !== undefined && object.gradient !== null\n        ? Gradient.fromJSON(object.gradient)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: ButtonData_Styles_Background): unknown {\n    const obj: any = {};\n    message.type !== undefined &&\n      (obj.type = buttonData_Styles_Background_TypeToJSON(message.type));\n    message.color !== undefined && (obj.color = message.color);\n    message.gradient !== undefined &&\n      (obj.gradient = message.gradient\n        ? Gradient.toJSON(message.gradient)\n        : undefined);\n    return obj;\n  },\n};\n","export enum CollapsibleListData_InitialExpandedItems {\n  /** FIRST - First item will be expended initally */\n  FIRST = \"FIRST\",\n  /** ALL - All items will expended initally */\n  ALL = \"ALL\",\n  /** NONE - All items collapsed initally */\n  NONE = \"NONE\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport enum CollapsibleListData_Direction {\n  /** LTR - Left-to-right */\n  LTR = \"LTR\",\n  /** RTL - Right-to-left */\n  RTL = \"RTL\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}","/* eslint-disable */\nimport { PluginContainerData } from './common.js';\n\nimport { CollapsibleListData_InitialExpandedItems, CollapsibleListData_Direction } from './plugin_collapsible_list.enums.js';\n\nexport interface CollapsibleListData {\n  /** Styling for the collapsible list's container. */\n  containerData?: PluginContainerData;\n  /** If `true`, only one item can be expanded at a time. Defaults to `false`. */\n  expandOnlyOne?: boolean;\n  /** Sets which items are expanded when the page loads. */\n  initialExpandedItems: CollapsibleListData_InitialExpandedItems;\n  /** The direction of the text in the list. Either left-to-right or right-to-left. */\n  direction: CollapsibleListData_Direction;\n  /** If `true`, The collapsible item will appear in search results as an FAQ. */\n  isQapageData?: boolean;\n}\n\nexport function collapsibleListData_InitialExpandedItemsFromJSON(\n  object: any\n): CollapsibleListData_InitialExpandedItems {\n  switch (object) {\n    case 0:\n    case \"FIRST\":\n      return CollapsibleListData_InitialExpandedItems.FIRST;\n    case 1:\n    case \"ALL\":\n      return CollapsibleListData_InitialExpandedItems.ALL;\n    case 2:\n    case \"NONE\":\n      return CollapsibleListData_InitialExpandedItems.NONE;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return CollapsibleListData_InitialExpandedItems.UNRECOGNIZED;\n  }\n}\n\nexport function collapsibleListData_InitialExpandedItemsToJSON(\n  object: CollapsibleListData_InitialExpandedItems\n): string {\n  switch (object) {\n    case CollapsibleListData_InitialExpandedItems.FIRST:\n      return \"FIRST\";\n    case CollapsibleListData_InitialExpandedItems.ALL:\n      return \"ALL\";\n    case CollapsibleListData_InitialExpandedItems.NONE:\n      return \"NONE\";\n    default:\n      return \"UNKNOWN\";\n  }\n}\n\nexport function collapsibleListData_DirectionFromJSON(\n  object: any\n): CollapsibleListData_Direction {\n  switch (object) {\n    case 0:\n    case \"LTR\":\n      return CollapsibleListData_Direction.LTR;\n    case 1:\n    case \"RTL\":\n      return CollapsibleListData_Direction.RTL;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return CollapsibleListData_Direction.UNRECOGNIZED;\n  }\n}\n\nexport function collapsibleListData_DirectionToJSON(\n  object: CollapsibleListData_Direction\n): string {\n  switch (object) {\n    case CollapsibleListData_Direction.LTR:\n      return \"LTR\";\n    case CollapsibleListData_Direction.RTL:\n      return \"RTL\";\n    default:\n      return \"UNKNOWN\";\n  }\n}\n\nconst baseCollapsibleListData: object = {\n  initialExpandedItems: CollapsibleListData_InitialExpandedItems.FIRST,\n  direction: CollapsibleListData_Direction.LTR,\n};\n\nexport const CollapsibleListData = {\n  fromJSON(object: any): CollapsibleListData {\n    const message = { ...baseCollapsibleListData } as CollapsibleListData;\n    message.containerData =\n      object.containerData !== undefined && object.containerData !== null\n        ? PluginContainerData.fromJSON(object.containerData)\n        : undefined;\n    message.expandOnlyOne =\n      object.expandOnlyOne !== undefined && object.expandOnlyOne !== null\n        ? Boolean(object.expandOnlyOne)\n        : undefined;\n    message.initialExpandedItems =\n      object.initialExpandedItems !== undefined &&\n      object.initialExpandedItems !== null\n        ? collapsibleListData_InitialExpandedItemsFromJSON(\n            object.initialExpandedItems\n          )\n        : CollapsibleListData_InitialExpandedItems.FIRST;\n    message.direction =\n      object.direction !== undefined && object.direction !== null\n        ? collapsibleListData_DirectionFromJSON(object.direction)\n        : CollapsibleListData_Direction.LTR;\n    message.isQapageData =\n      object.isQapageData !== undefined && object.isQapageData !== null\n        ? Boolean(object.isQapageData)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: CollapsibleListData): unknown {\n    const obj: any = {};\n    message.containerData !== undefined &&\n      (obj.containerData = message.containerData\n        ? PluginContainerData.toJSON(message.containerData)\n        : undefined);\n    message.expandOnlyOne !== undefined &&\n      (obj.expandOnlyOne = message.expandOnlyOne);\n    message.initialExpandedItems !== undefined &&\n      (obj.initialExpandedItems =\n        collapsibleListData_InitialExpandedItemsToJSON(\n          message.initialExpandedItems\n        ));\n    message.direction !== undefined &&\n      (obj.direction = collapsibleListData_DirectionToJSON(message.direction));\n    message.isQapageData !== undefined &&\n      (obj.isQapageData = message.isQapageData);\n    return obj;\n  },\n};\n","export enum DividerData_LineStyle {\n  /** SINGLE - Single Line */\n  SINGLE = \"SINGLE\",\n  /** DOUBLE - Double Line */\n  DOUBLE = \"DOUBLE\",\n  /** DASHED - Dashed Line */\n  DASHED = \"DASHED\",\n  /** DOTTED - Dotted Line */\n  DOTTED = \"DOTTED\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport enum DividerData_Width {\n  /** LARGE - Large line */\n  LARGE = \"LARGE\",\n  /** MEDIUM - Medium line */\n  MEDIUM = \"MEDIUM\",\n  /** SMALL - Small line */\n  SMALL = \"SMALL\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport enum DividerData_Alignment {\n  /** CENTER - Center alignment */\n  CENTER = \"CENTER\",\n  /** LEFT - Left alignment */\n  LEFT = \"LEFT\",\n  /** RIGHT - Right alignment */\n  RIGHT = \"RIGHT\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}","/* eslint-disable */\nimport { PluginContainerData } from './common.js';\n\nimport { DividerData_LineStyle, DividerData_Width, DividerData_Alignment } from './plugin_divider.enums.js';\n\nexport interface DividerData {\n  /** Styling for the divider's container. */\n  containerData?: PluginContainerData;\n  /** Divider line style. */\n  lineStyle: DividerData_LineStyle;\n  /** Divider width. */\n  width: DividerData_Width;\n  /** Divider alignment. */\n  alignment: DividerData_Alignment;\n}\n\nexport function dividerData_LineStyleFromJSON(\n  object: any\n): DividerData_LineStyle {\n  switch (object) {\n    case 0:\n    case \"SINGLE\":\n      return DividerData_LineStyle.SINGLE;\n    case 1:\n    case \"DOUBLE\":\n      return DividerData_LineStyle.DOUBLE;\n    case 2:\n    case \"DASHED\":\n      return DividerData_LineStyle.DASHED;\n    case 3:\n    case \"DOTTED\":\n      return DividerData_LineStyle.DOTTED;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return DividerData_LineStyle.UNRECOGNIZED;\n  }\n}\n\nexport function dividerData_LineStyleToJSON(\n  object: DividerData_LineStyle\n): string {\n  switch (object) {\n    case DividerData_LineStyle.SINGLE:\n      return \"SINGLE\";\n    case DividerData_LineStyle.DOUBLE:\n      return \"DOUBLE\";\n    case DividerData_LineStyle.DASHED:\n      return \"DASHED\";\n    case DividerData_LineStyle.DOTTED:\n      return \"DOTTED\";\n    default:\n      return \"UNKNOWN\";\n  }\n}\n\nexport function dividerData_WidthFromJSON(object: any): DividerData_Width {\n  switch (object) {\n    case 0:\n    case \"LARGE\":\n      return DividerData_Width.LARGE;\n    case 1:\n    case \"MEDIUM\":\n      return DividerData_Width.MEDIUM;\n    case 2:\n    case \"SMALL\":\n      return DividerData_Width.SMALL;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return DividerData_Width.UNRECOGNIZED;\n  }\n}\n\nexport function dividerData_WidthToJSON(object: DividerData_Width): string {\n  switch (object) {\n    case DividerData_Width.LARGE:\n      return \"LARGE\";\n    case DividerData_Width.MEDIUM:\n      return \"MEDIUM\";\n    case DividerData_Width.SMALL:\n      return \"SMALL\";\n    default:\n      return \"UNKNOWN\";\n  }\n}\n\nexport function dividerData_AlignmentFromJSON(\n  object: any\n): DividerData_Alignment {\n  switch (object) {\n    case 0:\n    case \"CENTER\":\n      return DividerData_Alignment.CENTER;\n    case 1:\n    case \"LEFT\":\n      return DividerData_Alignment.LEFT;\n    case 2:\n    case \"RIGHT\":\n      return DividerData_Alignment.RIGHT;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return DividerData_Alignment.UNRECOGNIZED;\n  }\n}\n\nexport function dividerData_AlignmentToJSON(\n  object: DividerData_Alignment\n): string {\n  switch (object) {\n    case DividerData_Alignment.CENTER:\n      return \"CENTER\";\n    case DividerData_Alignment.LEFT:\n      return \"LEFT\";\n    case DividerData_Alignment.RIGHT:\n      return \"RIGHT\";\n    default:\n      return \"UNKNOWN\";\n  }\n}\n\nconst baseDividerData: object = {\n  lineStyle: DividerData_LineStyle.SINGLE,\n  width: DividerData_Width.LARGE,\n  alignment: DividerData_Alignment.CENTER,\n};\n\nexport const DividerData = {\n  fromJSON(object: any): DividerData {\n    const message = { ...baseDividerData } as DividerData;\n    message.containerData =\n      object.containerData !== undefined && object.containerData !== null\n        ? PluginContainerData.fromJSON(object.containerData)\n        : undefined;\n    message.lineStyle =\n      object.lineStyle !== undefined && object.lineStyle !== null\n        ? dividerData_LineStyleFromJSON(object.lineStyle)\n        : DividerData_LineStyle.SINGLE;\n    message.width =\n      object.width !== undefined && object.width !== null\n        ? dividerData_WidthFromJSON(object.width)\n        : DividerData_Width.LARGE;\n    message.alignment =\n      object.alignment !== undefined && object.alignment !== null\n        ? dividerData_AlignmentFromJSON(object.alignment)\n        : DividerData_Alignment.CENTER;\n    return message;\n  },\n\n  toJSON(message: DividerData): unknown {\n    const obj: any = {};\n    message.containerData !== undefined &&\n      (obj.containerData = message.containerData\n        ? PluginContainerData.toJSON(message.containerData)\n        : undefined);\n    message.lineStyle !== undefined &&\n      (obj.lineStyle = dividerData_LineStyleToJSON(message.lineStyle));\n    message.width !== undefined &&\n      (obj.width = dividerData_WidthToJSON(message.width));\n    message.alignment !== undefined &&\n      (obj.alignment = dividerData_AlignmentToJSON(message.alignment));\n    return obj;\n  },\n};\n","/* eslint-disable */\nimport { PluginContainerData, Oembed } from './common.js';\n\nexport interface EmbedData {\n  /** Styling for the oEmbed node's container. */\n  containerData?: PluginContainerData;\n  /** An [oEmbed](https://www.oembed.com) object. */\n  oembed?: Oembed;\n  /** Origin asset source. */\n  src?: string;\n}\n\nconst baseEmbedData: object = {};\n\nexport const EmbedData = {\n  fromJSON(object: any): EmbedData {\n    const message = { ...baseEmbedData } as EmbedData;\n    message.containerData =\n      object.containerData !== undefined && object.containerData !== null\n        ? PluginContainerData.fromJSON(object.containerData)\n        : undefined;\n    message.oembed =\n      object.oembed !== undefined && object.oembed !== null\n        ? Oembed.fromJSON(object.oembed)\n        : undefined;\n    message.src =\n      object.src !== undefined && object.src !== null\n        ? String(object.src)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: EmbedData): unknown {\n    const obj: any = {};\n    message.containerData !== undefined &&\n      (obj.containerData = message.containerData\n        ? PluginContainerData.toJSON(message.containerData)\n        : undefined);\n    message.oembed !== undefined &&\n      (obj.oembed = message.oembed ? Oembed.toJSON(message.oembed) : undefined);\n    message.src !== undefined && (obj.src = message.src);\n    return obj;\n  },\n};\n","export enum FileData_PDFSettings_ViewMode {\n  /** NONE - No PDF view */\n  NONE = \"NONE\",\n  /** FULL - Full PDF view */\n  FULL = \"FULL\",\n  /** MINI - Mini PDF view */\n  MINI = \"MINI\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}","/* eslint-disable */\nimport { PluginContainerData, FileSource } from './common.js';\n\nimport { FileData_PDFSettings_ViewMode } from './plugin_file.enums.js';\n\nexport interface FileData {\n  /** Styling for the file's container. */\n  containerData?: PluginContainerData;\n  /** The source for the file's data. */\n  src?: FileSource;\n  /** File name. */\n  name?: string;\n  /** File type. */\n  type?: string;\n  /**\n   * Use `sizeInKb` instead.\n   *\n   * @deprecated\n   */\n  size?: number;\n  /** Settings for PDF files. */\n  pdfSettings?: FileData_PDFSettings;\n  /** File MIME type. */\n  mimeType?: string;\n  /** File path. */\n  path?: string;\n  /** File size in KB. */\n  sizeInKb?: string;\n}\n\nexport interface FileData_PDFSettings {\n  /**\n   * PDF view mode. One of the following:\n   * `NONE` : The PDF isn't displayed.\n   * `FULL` : A full page view of the PDF is displayed.\n   * `MINI` : A mini view of the PDF is displayed.\n   */\n  viewMode: FileData_PDFSettings_ViewMode;\n  /** Sets whether the PDF download button is disabled. Defaults to `false`. */\n  disableDownload?: boolean;\n  /** Sets whether the PDF print button is disabled. Defaults to `false`. */\n  disablePrint?: boolean;\n}\n\nexport function fileData_PDFSettings_ViewModeFromJSON(\n  object: any\n): FileData_PDFSettings_ViewMode {\n  switch (object) {\n    case 0:\n    case \"NONE\":\n      return FileData_PDFSettings_ViewMode.NONE;\n    case 1:\n    case \"FULL\":\n      return FileData_PDFSettings_ViewMode.FULL;\n    case 2:\n    case \"MINI\":\n      return FileData_PDFSettings_ViewMode.MINI;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return FileData_PDFSettings_ViewMode.UNRECOGNIZED;\n  }\n}\n\nexport function fileData_PDFSettings_ViewModeToJSON(\n  object: FileData_PDFSettings_ViewMode\n): string {\n  switch (object) {\n    case FileData_PDFSettings_ViewMode.NONE:\n      return \"NONE\";\n    case FileData_PDFSettings_ViewMode.FULL:\n      return \"FULL\";\n    case FileData_PDFSettings_ViewMode.MINI:\n      return \"MINI\";\n    default:\n      return \"UNKNOWN\";\n  }\n}\n\nconst baseFileData: object = {};\n\nexport const FileData = {\n  fromJSON(object: any): FileData {\n    const message = { ...baseFileData } as FileData;\n    message.containerData =\n      object.containerData !== undefined && object.containerData !== null\n        ? PluginContainerData.fromJSON(object.containerData)\n        : undefined;\n    message.src =\n      object.src !== undefined && object.src !== null\n        ? FileSource.fromJSON(object.src)\n        : undefined;\n    message.name =\n      object.name !== undefined && object.name !== null\n        ? String(object.name)\n        : undefined;\n    message.type =\n      object.type !== undefined && object.type !== null\n        ? String(object.type)\n        : undefined;\n    message.size =\n      object.size !== undefined && object.size !== null\n        ? Number(object.size)\n        : undefined;\n    message.pdfSettings =\n      object.pdfSettings !== undefined && object.pdfSettings !== null\n        ? FileData_PDFSettings.fromJSON(object.pdfSettings)\n        : undefined;\n    message.mimeType =\n      object.mimeType !== undefined && object.mimeType !== null\n        ? String(object.mimeType)\n        : undefined;\n    message.path =\n      object.path !== undefined && object.path !== null\n        ? String(object.path)\n        : undefined;\n    message.sizeInKb =\n      object.sizeInKb !== undefined && object.sizeInKb !== null\n        ? String(object.sizeInKb)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: FileData): unknown {\n    const obj: any = {};\n    message.containerData !== undefined &&\n      (obj.containerData = message.containerData\n        ? PluginContainerData.toJSON(message.containerData)\n        : undefined);\n    message.src !== undefined &&\n      (obj.src = message.src ? FileSource.toJSON(message.src) : undefined);\n    message.name !== undefined && (obj.name = message.name);\n    message.type !== undefined && (obj.type = message.type);\n    message.size !== undefined && (obj.size = message.size);\n    message.pdfSettings !== undefined &&\n      (obj.pdfSettings = message.pdfSettings\n        ? FileData_PDFSettings.toJSON(message.pdfSettings)\n        : undefined);\n    message.mimeType !== undefined && (obj.mimeType = message.mimeType);\n    message.path !== undefined && (obj.path = message.path);\n    message.sizeInKb !== undefined && (obj.sizeInKb = message.sizeInKb);\n    return obj;\n  },\n};\n\nconst baseFileData_PDFSettings: object = {\n  viewMode: FileData_PDFSettings_ViewMode.NONE,\n};\n\nexport const FileData_PDFSettings = {\n  fromJSON(object: any): FileData_PDFSettings {\n    const message = { ...baseFileData_PDFSettings } as FileData_PDFSettings;\n    message.viewMode =\n      object.viewMode !== undefined && object.viewMode !== null\n        ? fileData_PDFSettings_ViewModeFromJSON(object.viewMode)\n        : FileData_PDFSettings_ViewMode.NONE;\n    message.disableDownload =\n      object.disableDownload !== undefined && object.disableDownload !== null\n        ? Boolean(object.disableDownload)\n        : undefined;\n    message.disablePrint =\n      object.disablePrint !== undefined && object.disablePrint !== null\n        ? Boolean(object.disablePrint)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: FileData_PDFSettings): unknown {\n    const obj: any = {};\n    message.viewMode !== undefined &&\n      (obj.viewMode = fileData_PDFSettings_ViewModeToJSON(message.viewMode));\n    message.disableDownload !== undefined &&\n      (obj.disableDownload = message.disableDownload);\n    message.disablePrint !== undefined &&\n      (obj.disablePrint = message.disablePrint);\n    return obj;\n  },\n};\n","export enum GalleryOptions_Layout_Type {\n  /** COLLAGE - Collage type */\n  COLLAGE = \"COLLAGE\",\n  /** MASONRY - Masonry type */\n  MASONRY = \"MASONRY\",\n  /** GRID - Grid type */\n  GRID = \"GRID\",\n  /** THUMBNAIL - Thumbnail type */\n  THUMBNAIL = \"THUMBNAIL\",\n  /** SLIDER - Slider type */\n  SLIDER = \"SLIDER\",\n  /** SLIDESHOW - Slideshow type */\n  SLIDESHOW = \"SLIDESHOW\",\n  /** PANORAMA - Panorama type */\n  PANORAMA = \"PANORAMA\",\n  /** COLUMN - Column type */\n  COLUMN = \"COLUMN\",\n  /** MAGIC - Magic type */\n  MAGIC = \"MAGIC\",\n  /** FULLSIZE - Fullsize images type */\n  FULLSIZE = \"FULLSIZE\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport enum GalleryOptions_Layout_Orientation {\n  /** ROWS - Rows Orientation */\n  ROWS = \"ROWS\",\n  /** COLUMNS - Columns Orientation */\n  COLUMNS = \"COLUMNS\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport enum GalleryOptions_ItemStyle_Crop {\n  /** FILL - Crop to fill */\n  FILL = \"FILL\",\n  /** FIT - Crop to fit */\n  FIT = \"FIT\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport enum GalleryOptions_Thumbnails_Alignment {\n  /** TOP - Top alignment */\n  TOP = \"TOP\",\n  /** RIGHT - Right alignment */\n  RIGHT = \"RIGHT\",\n  /** BOTTOM - Bottom alignment */\n  BOTTOM = \"BOTTOM\",\n  /** LEFT - Left alignment */\n  LEFT = \"LEFT\",\n  /** NONE - No thumbnail */\n  NONE = \"NONE\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}","/* eslint-disable */\nimport { PluginContainerData, Media, Link } from './common.js';\n\nimport {\n  GalleryOptions_Layout_Type,\n  GalleryOptions_Layout_Orientation,\n  GalleryOptions_ItemStyle_Crop,\n  GalleryOptions_Thumbnails_Alignment,\n} from './plugin_gallery.enums.js';\n\nexport interface GalleryOptions {\n  /** Gallery layout. */\n  layout?: GalleryOptions_Layout;\n  /** Styling for gallery items. */\n  item?: GalleryOptions_ItemStyle;\n  /** Styling for gallery thumbnail images. */\n  thumbnails?: GalleryOptions_Thumbnails;\n}\n\nexport interface GalleryOptions_Layout {\n  /** Gallery layout type. */\n  type: GalleryOptions_Layout_Type;\n  /** Sets whether horizontal scroll is enabled. Defaults to `true` unless the layout `type` is set to `GRID` or `COLLAGE`. */\n  horizontalScroll?: boolean;\n  /** Gallery orientation. */\n  orientation: GalleryOptions_Layout_Orientation;\n  /** The number of columns to display on full size screens. */\n  numberOfColumns?: number;\n  /** The number of columns to display on mobile screens. */\n  mobileNumberOfColumns?: number;\n}\n\nexport function galleryOptions_Layout_TypeFromJSON(\n  object: any\n): GalleryOptions_Layout_Type {\n  switch (object) {\n    case 0:\n    case \"COLLAGE\":\n      return GalleryOptions_Layout_Type.COLLAGE;\n    case 1:\n    case \"MASONRY\":\n      return GalleryOptions_Layout_Type.MASONRY;\n    case 2:\n    case \"GRID\":\n      return GalleryOptions_Layout_Type.GRID;\n    case 3:\n    case \"THUMBNAIL\":\n      return GalleryOptions_Layout_Type.THUMBNAIL;\n    case 4:\n    case \"SLIDER\":\n      return GalleryOptions_Layout_Type.SLIDER;\n    case 5:\n    case \"SLIDESHOW\":\n      return GalleryOptions_Layout_Type.SLIDESHOW;\n    case 6:\n    case \"PANORAMA\":\n      return GalleryOptions_Layout_Type.PANORAMA;\n    case 7:\n    case \"COLUMN\":\n      return GalleryOptions_Layout_Type.COLUMN;\n    case 8:\n    case \"MAGIC\":\n      return GalleryOptions_Layout_Type.MAGIC;\n    case 9:\n    case \"FULLSIZE\":\n      return GalleryOptions_Layout_Type.FULLSIZE;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return GalleryOptions_Layout_Type.UNRECOGNIZED;\n  }\n}\n\nexport function galleryOptions_Layout_TypeToJSON(\n  object: GalleryOptions_Layout_Type\n): string {\n  switch (object) {\n    case GalleryOptions_Layout_Type.COLLAGE:\n      return \"COLLAGE\";\n    case GalleryOptions_Layout_Type.MASONRY:\n      return \"MASONRY\";\n    case GalleryOptions_Layout_Type.GRID:\n      return \"GRID\";\n    case GalleryOptions_Layout_Type.THUMBNAIL:\n      return \"THUMBNAIL\";\n    case GalleryOptions_Layout_Type.SLIDER:\n      return \"SLIDER\";\n    case GalleryOptions_Layout_Type.SLIDESHOW:\n      return \"SLIDESHOW\";\n    case GalleryOptions_Layout_Type.PANORAMA:\n      return \"PANORAMA\";\n    case GalleryOptions_Layout_Type.COLUMN:\n      return \"COLUMN\";\n    case GalleryOptions_Layout_Type.MAGIC:\n      return \"MAGIC\";\n    case GalleryOptions_Layout_Type.FULLSIZE:\n      return \"FULLSIZE\";\n    default:\n      return \"UNKNOWN\";\n  }\n}\n\nexport function galleryOptions_Layout_OrientationFromJSON(\n  object: any\n): GalleryOptions_Layout_Orientation {\n  switch (object) {\n    case 0:\n    case \"ROWS\":\n      return GalleryOptions_Layout_Orientation.ROWS;\n    case 1:\n    case \"COLUMNS\":\n      return GalleryOptions_Layout_Orientation.COLUMNS;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return GalleryOptions_Layout_Orientation.UNRECOGNIZED;\n  }\n}\n\nexport function galleryOptions_Layout_OrientationToJSON(\n  object: GalleryOptions_Layout_Orientation\n): string {\n  switch (object) {\n    case GalleryOptions_Layout_Orientation.ROWS:\n      return \"ROWS\";\n    case GalleryOptions_Layout_Orientation.COLUMNS:\n      return \"COLUMNS\";\n    default:\n      return \"UNKNOWN\";\n  }\n}\n\nexport interface GalleryOptions_ItemStyle {\n  /** Desirable dimension for each item in pixels (behvaior changes according to gallery type) */\n  targetSize?: number;\n  /** Item ratio */\n  ratio?: number;\n  /** Sets how item images are cropped. */\n  crop: GalleryOptions_ItemStyle_Crop;\n  /** The spacing between items in pixels. */\n  spacing?: number;\n}\n\nexport function galleryOptions_ItemStyle_CropFromJSON(\n  object: any\n): GalleryOptions_ItemStyle_Crop {\n  switch (object) {\n    case 0:\n    case \"FILL\":\n      return GalleryOptions_ItemStyle_Crop.FILL;\n    case 1:\n    case \"FIT\":\n      return GalleryOptions_ItemStyle_Crop.FIT;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return GalleryOptions_ItemStyle_Crop.UNRECOGNIZED;\n  }\n}\n\nexport function galleryOptions_ItemStyle_CropToJSON(\n  object: GalleryOptions_ItemStyle_Crop\n): string {\n  switch (object) {\n    case GalleryOptions_ItemStyle_Crop.FILL:\n      return \"FILL\";\n    case GalleryOptions_ItemStyle_Crop.FIT:\n      return \"FIT\";\n    default:\n      return \"UNKNOWN\";\n  }\n}\n\nexport interface GalleryOptions_Thumbnails {\n  /** Thumbnail alignment. */\n  placement: GalleryOptions_Thumbnails_Alignment;\n  /** Spacing between thumbnails in pixels. */\n  spacing?: number;\n}\n\nexport function galleryOptions_Thumbnails_AlignmentFromJSON(\n  object: any\n): GalleryOptions_Thumbnails_Alignment {\n  switch (object) {\n    case 0:\n    case \"TOP\":\n      return GalleryOptions_Thumbnails_Alignment.TOP;\n    case 1:\n    case \"RIGHT\":\n      return GalleryOptions_Thumbnails_Alignment.RIGHT;\n    case 2:\n    case \"BOTTOM\":\n      return GalleryOptions_Thumbnails_Alignment.BOTTOM;\n    case 3:\n    case \"LEFT\":\n      return GalleryOptions_Thumbnails_Alignment.LEFT;\n    case 4:\n    case \"NONE\":\n      return GalleryOptions_Thumbnails_Alignment.NONE;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return GalleryOptions_Thumbnails_Alignment.UNRECOGNIZED;\n  }\n}\n\nexport function galleryOptions_Thumbnails_AlignmentToJSON(\n  object: GalleryOptions_Thumbnails_Alignment\n): string {\n  switch (object) {\n    case GalleryOptions_Thumbnails_Alignment.TOP:\n      return \"TOP\";\n    case GalleryOptions_Thumbnails_Alignment.RIGHT:\n      return \"RIGHT\";\n    case GalleryOptions_Thumbnails_Alignment.BOTTOM:\n      return \"BOTTOM\";\n    case GalleryOptions_Thumbnails_Alignment.LEFT:\n      return \"LEFT\";\n    case GalleryOptions_Thumbnails_Alignment.NONE:\n      return \"NONE\";\n    default:\n      return \"UNKNOWN\";\n  }\n}\n\nexport interface GalleryData {\n  /** Styling for the gallery's container. */\n  containerData?: PluginContainerData;\n  /** The items in the gallery. */\n  items: GalleryData_Item[];\n  /** Options for defining the gallery's appearance. */\n  options?: GalleryOptions;\n  /** Sets whether the gallery's expand button is disabled. Defaults to `false`. */\n  disableExpand?: boolean;\n  /** Sets whether the gallery's download button is disabled. Defaults to `false`. */\n  disableDownload?: boolean;\n}\n\nexport interface GalleryData_Item {\n  /** An image item. */\n  image?: GalleryData_Item_Image | undefined;\n  /** A video item. */\n  video?: GalleryData_Item_Video | undefined;\n  /** Item title. */\n  title?: string;\n  /** Item's alternative text. */\n  altText?: string;\n}\n\nexport interface GalleryData_Item_Video {\n  /** Video file details. */\n  media?: Media;\n  /** Video thumbnail file details. */\n  thumbnail?: Media;\n}\n\nexport interface GalleryData_Item_Image {\n  /** Image file details. */\n  media?: Media;\n  /** Link details for images that are links. */\n  link?: Link;\n}\n\nconst baseGalleryOptions: object = {};\n\nexport const GalleryOptions = {\n  fromJSON(object: any): GalleryOptions {\n    const message = { ...baseGalleryOptions } as GalleryOptions;\n    message.layout =\n      object.layout !== undefined && object.layout !== null\n        ? GalleryOptions_Layout.fromJSON(object.layout)\n        : undefined;\n    message.item =\n      object.item !== undefined && object.item !== null\n        ? GalleryOptions_ItemStyle.fromJSON(object.item)\n        : undefined;\n    message.thumbnails =\n      object.thumbnails !== undefined && object.thumbnails !== null\n        ? GalleryOptions_Thumbnails.fromJSON(object.thumbnails)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: GalleryOptions): unknown {\n    const obj: any = {};\n    message.layout !== undefined &&\n      (obj.layout = message.layout\n        ? GalleryOptions_Layout.toJSON(message.layout)\n        : undefined);\n    message.item !== undefined &&\n      (obj.item = message.item\n        ? GalleryOptions_ItemStyle.toJSON(message.item)\n        : undefined);\n    message.thumbnails !== undefined &&\n      (obj.thumbnails = message.thumbnails\n        ? GalleryOptions_Thumbnails.toJSON(message.thumbnails)\n        : undefined);\n    return obj;\n  },\n};\n\nconst baseGalleryOptions_Layout: object = {\n  type: GalleryOptions_Layout_Type.COLLAGE,\n  orientation: GalleryOptions_Layout_Orientation.ROWS,\n};\n\nexport const GalleryOptions_Layout = {\n  fromJSON(object: any): GalleryOptions_Layout {\n    const message = { ...baseGalleryOptions_Layout } as GalleryOptions_Layout;\n    message.type =\n      object.type !== undefined && object.type !== null\n        ? galleryOptions_Layout_TypeFromJSON(object.type)\n        : GalleryOptions_Layout_Type.COLLAGE;\n    message.horizontalScroll =\n      object.horizontalScroll !== undefined && object.horizontalScroll !== null\n        ? Boolean(object.horizontalScroll)\n        : undefined;\n    message.orientation =\n      object.orientation !== undefined && object.orientation !== null\n        ? galleryOptions_Layout_OrientationFromJSON(object.orientation)\n        : GalleryOptions_Layout_Orientation.ROWS;\n    message.numberOfColumns =\n      object.numberOfColumns !== undefined && object.numberOfColumns !== null\n        ? Number(object.numberOfColumns)\n        : undefined;\n    message.mobileNumberOfColumns =\n      object.mobileNumberOfColumns !== undefined &&\n      object.mobileNumberOfColumns !== null\n        ? Number(object.mobileNumberOfColumns)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: GalleryOptions_Layout): unknown {\n    const obj: any = {};\n    message.type !== undefined &&\n      (obj.type = galleryOptions_Layout_TypeToJSON(message.type));\n    message.horizontalScroll !== undefined &&\n      (obj.horizontalScroll = message.horizontalScroll);\n    message.orientation !== undefined &&\n      (obj.orientation = galleryOptions_Layout_OrientationToJSON(\n        message.orientation\n      ));\n    message.numberOfColumns !== undefined &&\n      (obj.numberOfColumns = message.numberOfColumns);\n    message.mobileNumberOfColumns !== undefined &&\n      (obj.mobileNumberOfColumns = message.mobileNumberOfColumns);\n    return obj;\n  },\n};\n\nconst baseGalleryOptions_ItemStyle: object = {\n  crop: GalleryOptions_ItemStyle_Crop.FILL,\n};\n\nexport const GalleryOptions_ItemStyle = {\n  fromJSON(object: any): GalleryOptions_ItemStyle {\n    const message = {\n      ...baseGalleryOptions_ItemStyle,\n    } as GalleryOptions_ItemStyle;\n    message.targetSize =\n      object.targetSize !== undefined && object.targetSize !== null\n        ? Number(object.targetSize)\n        : undefined;\n    message.ratio =\n      object.ratio !== undefined && object.ratio !== null\n        ? Number(object.ratio)\n        : undefined;\n    message.crop =\n      object.crop !== undefined && object.crop !== null\n        ? galleryOptions_ItemStyle_CropFromJSON(object.crop)\n        : GalleryOptions_ItemStyle_Crop.FILL;\n    message.spacing =\n      object.spacing !== undefined && object.spacing !== null\n        ? Number(object.spacing)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: GalleryOptions_ItemStyle): unknown {\n    const obj: any = {};\n    message.targetSize !== undefined && (obj.targetSize = message.targetSize);\n    message.ratio !== undefined && (obj.ratio = message.ratio);\n    message.crop !== undefined &&\n      (obj.crop = galleryOptions_ItemStyle_CropToJSON(message.crop));\n    message.spacing !== undefined && (obj.spacing = message.spacing);\n    return obj;\n  },\n};\n\nconst baseGalleryOptions_Thumbnails: object = {\n  placement: GalleryOptions_Thumbnails_Alignment.TOP,\n};\n\nexport const GalleryOptions_Thumbnails = {\n  fromJSON(object: any): GalleryOptions_Thumbnails {\n    const message = {\n      ...baseGalleryOptions_Thumbnails,\n    } as GalleryOptions_Thumbnails;\n    message.placement =\n      object.placement !== undefined && object.placement !== null\n        ? galleryOptions_Thumbnails_AlignmentFromJSON(object.placement)\n        : GalleryOptions_Thumbnails_Alignment.TOP;\n    message.spacing =\n      object.spacing !== undefined && object.spacing !== null\n        ? Number(object.spacing)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: GalleryOptions_Thumbnails): unknown {\n    const obj: any = {};\n    message.placement !== undefined &&\n      (obj.placement = galleryOptions_Thumbnails_AlignmentToJSON(\n        message.placement\n      ));\n    message.spacing !== undefined && (obj.spacing = message.spacing);\n    return obj;\n  },\n};\n\nconst baseGalleryData: object = {};\n\nexport const GalleryData = {\n  fromJSON(object: any): GalleryData {\n    const message = { ...baseGalleryData } as GalleryData;\n    message.containerData =\n      object.containerData !== undefined && object.containerData !== null\n        ? PluginContainerData.fromJSON(object.containerData)\n        : undefined;\n    message.items = (object.items ?? []).map((e: any) =>\n      GalleryData_Item.fromJSON(e)\n    );\n    message.options =\n      object.options !== undefined && object.options !== null\n        ? GalleryOptions.fromJSON(object.options)\n        : undefined;\n    message.disableExpand =\n      object.disableExpand !== undefined && object.disableExpand !== null\n        ? Boolean(object.disableExpand)\n        : undefined;\n    message.disableDownload =\n      object.disableDownload !== undefined && object.disableDownload !== null\n        ? Boolean(object.disableDownload)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: GalleryData): unknown {\n    const obj: any = {};\n    message.containerData !== undefined &&\n      (obj.containerData = message.containerData\n        ? PluginContainerData.toJSON(message.containerData)\n        : undefined);\n    if (message.items) {\n      obj.items = message.items.map((e) =>\n        e ? GalleryData_Item.toJSON(e) : undefined\n      );\n    } else {\n      obj.items = [];\n    }\n    message.options !== undefined &&\n      (obj.options = message.options\n        ? GalleryOptions.toJSON(message.options)\n        : undefined);\n    message.disableExpand !== undefined &&\n      (obj.disableExpand = message.disableExpand);\n    message.disableDownload !== undefined &&\n      (obj.disableDownload = message.disableDownload);\n    return obj;\n  },\n};\n\nconst baseGalleryData_Item: object = {};\n\nexport const GalleryData_Item = {\n  fromJSON(object: any): GalleryData_Item {\n    const message = { ...baseGalleryData_Item } as GalleryData_Item;\n    message.image =\n      object.image !== undefined && object.image !== null\n        ? GalleryData_Item_Image.fromJSON(object.image)\n        : undefined;\n    message.video =\n      object.video !== undefined && object.video !== null\n        ? GalleryData_Item_Video.fromJSON(object.video)\n        : undefined;\n    message.title =\n      object.title !== undefined && object.title !== null\n        ? String(object.title)\n        : undefined;\n    message.altText =\n      object.altText !== undefined && object.altText !== null\n        ? String(object.altText)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: GalleryData_Item): unknown {\n    const obj: any = {};\n    message.image !== undefined &&\n      (obj.image = message.image\n        ? GalleryData_Item_Image.toJSON(message.image)\n        : undefined);\n    message.video !== undefined &&\n      (obj.video = message.video\n        ? GalleryData_Item_Video.toJSON(message.video)\n        : undefined);\n    message.title !== undefined && (obj.title = message.title);\n    message.altText !== undefined && (obj.altText = message.altText);\n    return obj;\n  },\n};\n\nconst baseGalleryData_Item_Video: object = {};\n\nexport const GalleryData_Item_Video = {\n  fromJSON(object: any): GalleryData_Item_Video {\n    const message = { ...baseGalleryData_Item_Video } as GalleryData_Item_Video;\n    message.media =\n      object.media !== undefined && object.media !== null\n        ? Media.fromJSON(object.media)\n        : undefined;\n    message.thumbnail =\n      object.thumbnail !== undefined && object.thumbnail !== null\n        ? Media.fromJSON(object.thumbnail)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: GalleryData_Item_Video): unknown {\n    const obj: any = {};\n    message.media !== undefined &&\n      (obj.media = message.media ? Media.toJSON(message.media) : undefined);\n    message.thumbnail !== undefined &&\n      (obj.thumbnail = message.thumbnail\n        ? Media.toJSON(message.thumbnail)\n        : undefined);\n    return obj;\n  },\n};\n\nconst baseGalleryData_Item_Image: object = {};\n\nexport const GalleryData_Item_Image = {\n  fromJSON(object: any): GalleryData_Item_Image {\n    const message = { ...baseGalleryData_Item_Image } as GalleryData_Item_Image;\n    message.media =\n      object.media !== undefined && object.media !== null\n        ? Media.fromJSON(object.media)\n        : undefined;\n    message.link =\n      object.link !== undefined && object.link !== null\n        ? Link.fromJSON(object.link)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: GalleryData_Item_Image): unknown {\n    const obj: any = {};\n    message.media !== undefined &&\n      (obj.media = message.media ? Media.toJSON(message.media) : undefined);\n    message.link !== undefined &&\n      (obj.link = message.link ? Link.toJSON(message.link) : undefined);\n    return obj;\n  },\n};\n","export enum GIFData_GIFType {\n  NORMAL = \"NORMAL\",\n  STICKER = \"STICKER\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}","/* eslint-disable */\nimport { PluginContainerData } from './common.js';\n\nimport { GIFData_GIFType } from './plugin_gif.enums.js';\n\nexport interface GIFData {\n  /** Styling for the GIF's container. */\n  containerData?: PluginContainerData;\n  /** The source of the full size GIF. */\n  original?: GIF;\n  /** The source of the downsized GIF. */\n  downsized?: GIF;\n  /** Height in pixels. */\n  height: number;\n  /** Width in pixels. */\n  width: number;\n  /** Type of GIF (Sticker or NORMAL). Defaults to `NORMAL`. */\n  gifType: GIFData_GIFType;\n}\n\nexport function gIFData_GIFTypeFromJSON(object: any): GIFData_GIFType {\n  switch (object) {\n    case 0:\n    case \"NORMAL\":\n      return GIFData_GIFType.NORMAL;\n    case 1:\n    case \"STICKER\":\n      return GIFData_GIFType.STICKER;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return GIFData_GIFType.UNRECOGNIZED;\n  }\n}\n\nexport function gIFData_GIFTypeToJSON(object: GIFData_GIFType): string {\n  switch (object) {\n    case GIFData_GIFType.NORMAL:\n      return \"NORMAL\";\n    case GIFData_GIFType.STICKER:\n      return \"STICKER\";\n    default:\n      return \"UNKNOWN\";\n  }\n}\n\nexport interface GIF {\n  /** GIF format URL. */\n  gif?: string;\n  /** MP4 format URL. */\n  mp4?: string;\n  /** Thumbnail URL. */\n  still?: string;\n}\n\nconst baseGIFData: object = {\n  height: 0,\n  width: 0,\n  gifType: GIFData_GIFType.NORMAL,\n};\n\nexport const GIFData = {\n  fromJSON(object: any): GIFData {\n    const message = { ...baseGIFData } as GIFData;\n    message.containerData =\n      object.containerData !== undefined && object.containerData !== null\n        ? PluginContainerData.fromJSON(object.containerData)\n        : undefined;\n    message.original =\n      object.original !== undefined && object.original !== null\n        ? GIF.fromJSON(object.original)\n        : undefined;\n    message.downsized =\n      object.downsized !== undefined && object.downsized !== null\n        ? GIF.fromJSON(object.downsized)\n        : undefined;\n    message.height =\n      object.height !== undefined && object.height !== null\n        ? Number(object.height)\n        : 0;\n    message.width =\n      object.width !== undefined && object.width !== null\n        ? Number(object.width)\n        : 0;\n    message.gifType =\n      object.gifType !== undefined && object.gifType !== null\n        ? gIFData_GIFTypeFromJSON(object.gifType)\n        : GIFData_GIFType.NORMAL;\n    return message;\n  },\n\n  toJSON(message: GIFData): unknown {\n    const obj: any = {};\n    message.containerData !== undefined &&\n      (obj.containerData = message.containerData\n        ? PluginContainerData.toJSON(message.containerData)\n        : undefined);\n    message.original !== undefined &&\n      (obj.original = message.original\n        ? GIF.toJSON(message.original)\n        : undefined);\n    message.downsized !== undefined &&\n      (obj.downsized = message.downsized\n        ? GIF.toJSON(message.downsized)\n        : undefined);\n    message.height !== undefined && (obj.height = Math.round(message.height));\n    message.width !== undefined && (obj.width = Math.round(message.width));\n    message.gifType !== undefined &&\n      (obj.gifType = gIFData_GIFTypeToJSON(message.gifType));\n    return obj;\n  },\n};\n\nconst baseGIF: object = {};\n\nexport const GIF = {\n  fromJSON(object: any): GIF {\n    const message = { ...baseGIF } as GIF;\n    message.gif =\n      object.gif !== undefined && object.gif !== null\n        ? String(object.gif)\n        : undefined;\n    message.mp4 =\n      object.mp4 !== undefined && object.mp4 !== null\n        ? String(object.mp4)\n        : undefined;\n    message.still =\n      object.still !== undefined && object.still !== null\n        ? String(object.still)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: GIF): unknown {\n    const obj: any = {};\n    message.gif !== undefined && (obj.gif = message.gif);\n    message.mp4 !== undefined && (obj.mp4 = message.mp4);\n    message.still !== undefined && (obj.still = message.still);\n    return obj;\n  },\n};\n","export enum HTMLData_Source {\n  HTML = \"HTML\",\n  ADSENSE = \"ADSENSE\",\n  AI = \"AI\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}","/* eslint-disable */\nimport { PluginContainerData } from './common.js';\n\nimport { HTMLData_Source } from './plugin_html.enums.js';\n\nexport interface HTMLData {\n  /** Styling for the HTML node's container. Height property is irrelevant for HTML embeds when autoHeight is set to `true`. */\n  containerData?: PluginContainerData;\n  /** The URL for the HTML code for the node. */\n  url: string | undefined;\n  /** The HTML code for the node. */\n  html: string | undefined;\n  /**\n   * Whether this is an AdSense element. Use `source` instead.\n   *\n   * @deprecated\n   */\n  isAdsense?: boolean;\n  /** The type of HTML code. */\n  source: HTMLData_Source;\n  /** If container height is aligned with its content height. Defaults to `true`. */\n  autoHeight?: boolean;\n}\n\nexport function hTMLData_SourceFromJSON(object: any): HTMLData_Source {\n  switch (object) {\n    case 0:\n    case \"HTML\":\n      return HTMLData_Source.HTML;\n    case 1:\n    case \"ADSENSE\":\n      return HTMLData_Source.ADSENSE;\n    case 2:\n    case \"AI\":\n      return HTMLData_Source.AI;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return HTMLData_Source.UNRECOGNIZED;\n  }\n}\n\nexport function hTMLData_SourceToJSON(object: HTMLData_Source): string {\n  switch (object) {\n    case HTMLData_Source.HTML:\n      return \"HTML\";\n    case HTMLData_Source.ADSENSE:\n      return \"ADSENSE\";\n    case HTMLData_Source.AI:\n      return \"AI\";\n    default:\n      return \"UNKNOWN\";\n  }\n}\n\nconst baseHTMLData: object = { source: HTMLData_Source.HTML };\n\nexport const HTMLData = {\n  fromJSON(object: any): HTMLData {\n    const message = { ...baseHTMLData } as HTMLData;\n    message.containerData =\n      object.containerData !== undefined && object.containerData !== null\n        ? PluginContainerData.fromJSON(object.containerData)\n        : undefined;\n    message.url =\n      object.url !== undefined && object.url !== null\n        ? String(object.url)\n        : undefined;\n    message.html =\n      object.html !== undefined && object.html !== null\n        ? String(object.html)\n        : undefined;\n    message.isAdsense =\n      object.isAdsense !== undefined && object.isAdsense !== null\n        ? Boolean(object.isAdsense)\n        : undefined;\n    message.source =\n      object.source !== undefined && object.source !== null\n        ? hTMLData_SourceFromJSON(object.source)\n        : HTMLData_Source.HTML;\n    message.autoHeight =\n      object.autoHeight !== undefined && object.autoHeight !== null\n        ? Boolean(object.autoHeight)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: HTMLData): unknown {\n    const obj: any = {};\n    message.containerData !== undefined &&\n      (obj.containerData = message.containerData\n        ? PluginContainerData.toJSON(message.containerData)\n        : undefined);\n    message.url !== undefined && (obj.url = message.url);\n    message.html !== undefined && (obj.html = message.html);\n    message.isAdsense !== undefined && (obj.isAdsense = message.isAdsense);\n    message.source !== undefined &&\n      (obj.source = hTMLData_SourceToJSON(message.source));\n    message.autoHeight !== undefined && (obj.autoHeight = message.autoHeight);\n    return obj;\n  },\n};\n","/* eslint-disable */\nimport { PluginContainerData, Media, Link } from './common.js';\n\nexport interface ImageData {\n  /** Styling for the image's container. */\n  containerData?: PluginContainerData;\n  /** Image file details. */\n  image?: Media;\n  /** Link details for images that are links. */\n  link?: Link;\n  /** Sets whether the image expands to full screen when clicked. Defaults to `false`. */\n  disableExpand?: boolean;\n  /** Image's alternative text. */\n  altText?: string;\n  /**\n   * Deprecated: use Caption node instead.\n   *\n   * @deprecated\n   */\n  caption?: string;\n  /** Sets whether the image's download button is disabled. Defaults to `false`. */\n  disableDownload?: boolean;\n  /** Sets whether the image is decorative and does not need an explanation. Defaults to `false`. */\n  decorative?: boolean;\n  /** Styling for the image. */\n  styles?: ImageData_Styles;\n}\n\nexport interface ImageData_Styles {\n  /** Border attributes. */\n  border?: ImageData_Styles_Border;\n}\n\nexport interface ImageData_Styles_Border {\n  /** Border width in pixels. */\n  width?: number;\n  /** Border color as a hexadecimal value. */\n  color?: string;\n  /** Border radius in pixels. */\n  radius?: number;\n}\n\nconst baseImageData: object = {};\n\nexport const ImageData = {\n  fromJSON(object: any): ImageData {\n    const message = { ...baseImageData } as ImageData;\n    message.containerData =\n      object.containerData !== undefined && object.containerData !== null\n        ? PluginContainerData.fromJSON(object.containerData)\n        : undefined;\n    message.image =\n      object.image !== undefined && object.image !== null\n        ? Media.fromJSON(object.image)\n        : undefined;\n    message.link =\n      object.link !== undefined && object.link !== null\n        ? Link.fromJSON(object.link)\n        : undefined;\n    message.disableExpand =\n      object.disableExpand !== undefined && object.disableExpand !== null\n        ? Boolean(object.disableExpand)\n        : undefined;\n    message.altText =\n      object.altText !== undefined && object.altText !== null\n        ? String(object.altText)\n        : undefined;\n    message.caption =\n      object.caption !== undefined && object.caption !== null\n        ? String(object.caption)\n        : undefined;\n    message.disableDownload =\n      object.disableDownload !== undefined && object.disableDownload !== null\n        ? Boolean(object.disableDownload)\n        : undefined;\n    message.decorative =\n      object.decorative !== undefined && object.decorative !== null\n        ? Boolean(object.decorative)\n        : undefined;\n    message.styles =\n      object.styles !== undefined && object.styles !== null\n        ? ImageData_Styles.fromJSON(object.styles)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: ImageData): unknown {\n    const obj: any = {};\n    message.containerData !== undefined &&\n      (obj.containerData = message.containerData\n        ? PluginContainerData.toJSON(message.containerData)\n        : undefined);\n    message.image !== undefined &&\n      (obj.image = message.image ? Media.toJSON(message.image) : undefined);\n    message.link !== undefined &&\n      (obj.link = message.link ? Link.toJSON(message.link) : undefined);\n    message.disableExpand !== undefined &&\n      (obj.disableExpand = message.disableExpand);\n    message.altText !== undefined && (obj.altText = message.altText);\n    message.caption !== undefined && (obj.caption = message.caption);\n    message.disableDownload !== undefined &&\n      (obj.disableDownload = message.disableDownload);\n    message.decorative !== undefined && (obj.decorative = message.decorative);\n    message.styles !== undefined &&\n      (obj.styles = message.styles\n        ? ImageData_Styles.toJSON(message.styles)\n        : undefined);\n    return obj;\n  },\n};\n\nconst baseImageData_Styles: object = {};\n\nexport const ImageData_Styles = {\n  fromJSON(object: any): ImageData_Styles {\n    const message = { ...baseImageData_Styles } as ImageData_Styles;\n    message.border =\n      object.border !== undefined && object.border !== null\n        ? ImageData_Styles_Border.fromJSON(object.border)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: ImageData_Styles): unknown {\n    const obj: any = {};\n    message.border !== undefined &&\n      (obj.border = message.border\n        ? ImageData_Styles_Border.toJSON(message.border)\n        : undefined);\n    return obj;\n  },\n};\n\nconst baseImageData_Styles_Border: object = {};\n\nexport const ImageData_Styles_Border = {\n  fromJSON(object: any): ImageData_Styles_Border {\n    const message = {\n      ...baseImageData_Styles_Border,\n    } as ImageData_Styles_Border;\n    message.width =\n      object.width !== undefined && object.width !== null\n        ? Number(object.width)\n        : undefined;\n    message.color =\n      object.color !== undefined && object.color !== null\n        ? String(object.color)\n        : undefined;\n    message.radius =\n      object.radius !== undefined && object.radius !== null\n        ? Number(object.radius)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: ImageData_Styles_Border): unknown {\n    const obj: any = {};\n    message.width !== undefined && (obj.width = message.width);\n    message.color !== undefined && (obj.color = message.color);\n    message.radius !== undefined && (obj.radius = message.radius);\n    return obj;\n  },\n};\n","export enum LinkPreviewData_Styles_Position {\n  /** START - Thumbnail positioned at the start (left in LTR layouts, right in RTL layouts) */\n  START = \"START\",\n  /** END - Thumbnail positioned at the end (right in LTR layouts, left in RTL layouts) */\n  END = \"END\",\n  /** TOP - Thumbnail positioned at the top */\n  TOP = \"TOP\",\n  /** HIDDEN - Thumbnail hidden and not displayed */\n  HIDDEN = \"HIDDEN\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}","/* eslint-disable */\nimport { PluginContainerData, Link } from './common.js';\n\nimport { LinkPreviewData_Styles_Position } from './plugin_link_preview.enums.js';\n\nexport interface LinkPreviewData {\n  /** Styling for the link preview's container. */\n  containerData?: PluginContainerData;\n  /** Link details. */\n  link?: Link;\n  /** Preview title. */\n  title?: string;\n  /** Preview thumbnail URL. */\n  thumbnailUrl?: string;\n  /** Preview description. */\n  description?: string;\n  /** The preview content as HTML. */\n  html?: string;\n  /** Styling for the link preview. */\n  styles?: LinkPreviewData_Styles;\n}\n\nexport interface LinkPreviewData_Styles {\n  /** Background color as a hexadecimal value. */\n  backgroundColor?: string;\n  /** Title color as a hexadecimal value. */\n  titleColor?: string;\n  /** Subtitle color as a hexadecimal value. */\n  subtitleColor?: string;\n  /** Link color as a hexadecimal value. */\n  linkColor?: string;\n  /** Border width in pixels. */\n  borderWidth?: number;\n  /** Border radius in pixels. */\n  borderRadius?: number;\n  /** Border color as a hexadecimal value. */\n  borderColor?: string;\n  /** Position of thumbnail. Defaults to `START`. */\n  thumbnailPosition: LinkPreviewData_Styles_Position;\n}\n\nexport function linkPreviewData_Styles_PositionFromJSON(\n  object: any\n): LinkPreviewData_Styles_Position {\n  switch (object) {\n    case 0:\n    case \"START\":\n      return LinkPreviewData_Styles_Position.START;\n    case 1:\n    case \"END\":\n      return LinkPreviewData_Styles_Position.END;\n    case 2:\n    case \"TOP\":\n      return LinkPreviewData_Styles_Position.TOP;\n    case 3:\n    case \"HIDDEN\":\n      return LinkPreviewData_Styles_Position.HIDDEN;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return LinkPreviewData_Styles_Position.UNRECOGNIZED;\n  }\n}\n\nexport function linkPreviewData_Styles_PositionToJSON(\n  object: LinkPreviewData_Styles_Position\n): string {\n  switch (object) {\n    case LinkPreviewData_Styles_Position.START:\n      return \"START\";\n    case LinkPreviewData_Styles_Position.END:\n      return \"END\";\n    case LinkPreviewData_Styles_Position.TOP:\n      return \"TOP\";\n    case LinkPreviewData_Styles_Position.HIDDEN:\n      return \"HIDDEN\";\n    default:\n      return \"UNKNOWN\";\n  }\n}\n\nconst baseLinkPreviewData: object = {};\n\nexport const LinkPreviewData = {\n  fromJSON(object: any): LinkPreviewData {\n    const message = { ...baseLinkPreviewData } as LinkPreviewData;\n    message.containerData =\n      object.containerData !== undefined && object.containerData !== null\n        ? PluginContainerData.fromJSON(object.containerData)\n        : undefined;\n    message.link =\n      object.link !== undefined && object.link !== null\n        ? Link.fromJSON(object.link)\n        : undefined;\n    message.title =\n      object.title !== undefined && object.title !== null\n        ? String(object.title)\n        : undefined;\n    message.thumbnailUrl =\n      object.thumbnailUrl !== undefined && object.thumbnailUrl !== null\n        ? String(object.thumbnailUrl)\n        : undefined;\n    message.description =\n      object.description !== undefined && object.description !== null\n        ? String(object.description)\n        : undefined;\n    message.html =\n      object.html !== undefined && object.html !== null\n        ? String(object.html)\n        : undefined;\n    message.styles =\n      object.styles !== undefined && object.styles !== null\n        ? LinkPreviewData_Styles.fromJSON(object.styles)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: LinkPreviewData): unknown {\n    const obj: any = {};\n    message.containerData !== undefined &&\n      (obj.containerData = message.containerData\n        ? PluginContainerData.toJSON(message.containerData)\n        : undefined);\n    message.link !== undefined &&\n      (obj.link = message.link ? Link.toJSON(message.link) : undefined);\n    message.title !== undefined && (obj.title = message.title);\n    message.thumbnailUrl !== undefined &&\n      (obj.thumbnailUrl = message.thumbnailUrl);\n    message.description !== undefined &&\n      (obj.description = message.description);\n    message.html !== undefined && (obj.html = message.html);\n    message.styles !== undefined &&\n      (obj.styles = message.styles\n        ? LinkPreviewData_Styles.toJSON(message.styles)\n        : undefined);\n    return obj;\n  },\n};\n\nconst baseLinkPreviewData_Styles: object = {\n  thumbnailPosition: LinkPreviewData_Styles_Position.START,\n};\n\nexport const LinkPreviewData_Styles = {\n  fromJSON(object: any): LinkPreviewData_Styles {\n    const message = { ...baseLinkPreviewData_Styles } as LinkPreviewData_Styles;\n    message.backgroundColor =\n      object.backgroundColor !== undefined && object.backgroundColor !== null\n        ? String(object.backgroundColor)\n        : undefined;\n    message.titleColor =\n      object.titleColor !== undefined && object.titleColor !== null\n        ? String(object.titleColor)\n        : undefined;\n    message.subtitleColor =\n      object.subtitleColor !== undefined && object.subtitleColor !== null\n        ? String(object.subtitleColor)\n        : undefined;\n    message.linkColor =\n      object.linkColor !== undefined && object.linkColor !== null\n        ? String(object.linkColor)\n        : undefined;\n    message.borderWidth =\n      object.borderWidth !== undefined && object.borderWidth !== null\n        ? Number(object.borderWidth)\n        : undefined;\n    message.borderRadius =\n      object.borderRadius !== undefined && object.borderRadius !== null\n        ? Number(object.borderRadius)\n        : undefined;\n    message.borderColor =\n      object.borderColor !== undefined && object.borderColor !== null\n        ? String(object.borderColor)\n        : undefined;\n    message.thumbnailPosition =\n      object.thumbnailPosition !== undefined &&\n      object.thumbnailPosition !== null\n        ? linkPreviewData_Styles_PositionFromJSON(object.thumbnailPosition)\n        : LinkPreviewData_Styles_Position.START;\n    return message;\n  },\n\n  toJSON(message: LinkPreviewData_Styles): unknown {\n    const obj: any = {};\n    message.backgroundColor !== undefined &&\n      (obj.backgroundColor = message.backgroundColor);\n    message.titleColor !== undefined && (obj.titleColor = message.titleColor);\n    message.subtitleColor !== undefined &&\n      (obj.subtitleColor = message.subtitleColor);\n    message.linkColor !== undefined && (obj.linkColor = message.linkColor);\n    message.borderWidth !== undefined &&\n      (obj.borderWidth = message.borderWidth);\n    message.borderRadius !== undefined &&\n      (obj.borderRadius = message.borderRadius);\n    message.borderColor !== undefined &&\n      (obj.borderColor = message.borderColor);\n    message.thumbnailPosition !== undefined &&\n      (obj.thumbnailPosition = linkPreviewData_Styles_PositionToJSON(\n        message.thumbnailPosition\n      ));\n    return obj;\n  },\n};\n","/**\n * flynt-disable field-lower-snake-case\n * flynt-disable missing-string-validations\n * MAP PLUGIN IS DEPRECATED\n */\n\nexport enum MapType {\n  /** ROADMAP - Roadmap map type */\n  ROADMAP = \"ROADMAP\",\n  /** SATELITE - Satellite map type */\n  SATELITE = \"SATELITE\",\n  /** HYBRID - Hybrid map type */\n  HYBRID = \"HYBRID\",\n  /** TERRAIN - Terrain map type */\n  TERRAIN = \"TERRAIN\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}","/* eslint-disable */\nimport { PluginContainerData } from './common.js';\n\nimport { MapType } from './plugin_map.enums.js';\n\nexport function mapTypeFromJSON(object: any): MapType {\n  switch (object) {\n    case 0:\n    case \"ROADMAP\":\n      return MapType.ROADMAP;\n    case 1:\n    case \"SATELITE\":\n      return MapType.SATELITE;\n    case 2:\n    case \"HYBRID\":\n      return MapType.HYBRID;\n    case 3:\n    case \"TERRAIN\":\n      return MapType.TERRAIN;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return MapType.UNRECOGNIZED;\n  }\n}\n\nexport function mapTypeToJSON(object: MapType): string {\n  switch (object) {\n    case MapType.ROADMAP:\n      return \"ROADMAP\";\n    case MapType.SATELITE:\n      return \"SATELITE\";\n    case MapType.HYBRID:\n      return \"HYBRID\";\n    case MapType.TERRAIN:\n      return \"TERRAIN\";\n    default:\n      return \"UNKNOWN\";\n  }\n}\n\nexport interface MapData {\n  /** Styling for the map's container. */\n  containerData?: PluginContainerData;\n  /** Map settings. */\n  mapSettings?: MapSettings;\n}\n\nexport interface MapSettings {\n  /** flynt-disable unannotated-pii-fields */\n  address?: string;\n  /** Sets whether the map is draggable. */\n  draggable?: boolean;\n  /** Sets whether the location marker is visible. */\n  marker?: boolean;\n  /** Sets whether street view control is enabled. */\n  streetViewControl?: boolean;\n  /** Sets whether zoom control is enabled. */\n  zoomControl?: boolean;\n  /** Location latitude. */\n  lat?: number;\n  /** Location longitude. */\n  lng?: number;\n  /** Location name. */\n  locationName?: string;\n  /** Sets whether view mode control is enabled. */\n  viewModeControl?: boolean;\n  /** Initial zoom value. */\n  initialZoom?: number;\n  /** Map type. `HYBRID` is a combination of the `ROADMAP` and `SATELLITE` map types. */\n  mapType: MapType;\n}\n\nconst baseMapData: object = {};\n\nexport const MapData = {\n  fromJSON(object: any): MapData {\n    const message = { ...baseMapData } as MapData;\n    message.containerData =\n      object.containerData !== undefined && object.containerData !== null\n        ? PluginContainerData.fromJSON(object.containerData)\n        : undefined;\n    message.mapSettings =\n      object.mapSettings !== undefined && object.mapSettings !== null\n        ? MapSettings.fromJSON(object.mapSettings)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: MapData): unknown {\n    const obj: any = {};\n    message.containerData !== undefined &&\n      (obj.containerData = message.containerData\n        ? PluginContainerData.toJSON(message.containerData)\n        : undefined);\n    message.mapSettings !== undefined &&\n      (obj.mapSettings = message.mapSettings\n        ? MapSettings.toJSON(message.mapSettings)\n        : undefined);\n    return obj;\n  },\n};\n\nconst baseMapSettings: object = { mapType: MapType.ROADMAP };\n\nexport const MapSettings = {\n  fromJSON(object: any): MapSettings {\n    const message = { ...baseMapSettings } as MapSettings;\n    message.address =\n      object.address !== undefined && object.address !== null\n        ? String(object.address)\n        : undefined;\n    message.draggable =\n      object.draggable !== undefined && object.draggable !== null\n        ? Boolean(object.draggable)\n        : undefined;\n    message.marker =\n      object.marker !== undefined && object.marker !== null\n        ? Boolean(object.marker)\n        : undefined;\n    message.streetViewControl =\n      object.streetViewControl !== undefined &&\n      object.streetViewControl !== null\n        ? Boolean(object.streetViewControl)\n        : undefined;\n    message.zoomControl =\n      object.zoomControl !== undefined && object.zoomControl !== null\n        ? Boolean(object.zoomControl)\n        : undefined;\n    message.lat =\n      object.lat !== undefined && object.lat !== null\n        ? Number(object.lat)\n        : undefined;\n    message.lng =\n      object.lng !== undefined && object.lng !== null\n        ? Number(object.lng)\n        : undefined;\n    message.locationName =\n      object.locationName !== undefined && object.locationName !== null\n        ? String(object.locationName)\n        : undefined;\n    message.viewModeControl =\n      object.viewModeControl !== undefined && object.viewModeControl !== null\n        ? Boolean(object.viewModeControl)\n        : undefined;\n    message.initialZoom =\n      object.initialZoom !== undefined && object.initialZoom !== null\n        ? Number(object.initialZoom)\n        : undefined;\n    message.mapType =\n      object.mapType !== undefined && object.mapType !== null\n        ? mapTypeFromJSON(object.mapType)\n        : MapType.ROADMAP;\n    return message;\n  },\n\n  toJSON(message: MapSettings): unknown {\n    const obj: any = {};\n    message.address !== undefined && (obj.address = message.address);\n    message.draggable !== undefined && (obj.draggable = message.draggable);\n    message.marker !== undefined && (obj.marker = message.marker);\n    message.streetViewControl !== undefined &&\n      (obj.streetViewControl = message.streetViewControl);\n    message.zoomControl !== undefined &&\n      (obj.zoomControl = message.zoomControl);\n    message.lat !== undefined && (obj.lat = message.lat);\n    message.lng !== undefined && (obj.lng = message.lng);\n    message.locationName !== undefined &&\n      (obj.locationName = message.locationName);\n    message.viewModeControl !== undefined &&\n      (obj.viewModeControl = message.viewModeControl);\n    message.initialZoom !== undefined &&\n      (obj.initialZoom = message.initialZoom);\n    message.mapType !== undefined &&\n      (obj.mapType = mapTypeToJSON(message.mapType));\n    return obj;\n  },\n};\n","export enum PollData_Poll_Settings_Permissions_ViewRole {\n  /** CREATOR - Only Poll creator can view the results */\n  CREATOR = \"CREATOR\",\n  /** VOTERS - Anyone who voted can see the results */\n  VOTERS = \"VOTERS\",\n  /** EVERYONE - Anyone can see the results, even if one didn't vote */\n  EVERYONE = \"EVERYONE\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport enum PollData_Poll_Settings_Permissions_VoteRole {\n  /** SITE_MEMBERS - Logged in member */\n  SITE_MEMBERS = \"SITE_MEMBERS\",\n  /** ALL - Anyone */\n  ALL = \"ALL\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport enum PollData_Layout_PollLayout_Type {\n  /** LIST - List */\n  LIST = \"LIST\",\n  /** GRID - Grid */\n  GRID = \"GRID\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport enum PollData_Layout_PollLayout_Direction {\n  /** LTR - Left-to-right */\n  LTR = \"LTR\",\n  /** RTL - Right-to-left */\n  RTL = \"RTL\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport enum PollData_Design_PollDesign_Background_Type {\n  /** COLOR - Color background type */\n  COLOR = \"COLOR\",\n  /** IMAGE - Image background type */\n  IMAGE = \"IMAGE\",\n  /** GRADIENT - Gradiant background type */\n  GRADIENT = \"GRADIENT\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}","/* eslint-disable */\nimport { PluginContainerData, Media } from './common.js';\n\nimport {\n  PollData_Poll_Settings_Permissions_ViewRole,\n  PollData_Poll_Settings_Permissions_VoteRole,\n  PollData_Layout_PollLayout_Type,\n  PollData_Layout_PollLayout_Direction,\n  PollData_Design_PollDesign_Background_Type,\n} from './plugin_poll.enums.js';\n\nexport interface PollData {\n  /** Styling for the poll's container. */\n  containerData?: PluginContainerData;\n  /** Poll data. */\n  poll?: PollData_Poll;\n  /** Layout settings for the poll and voting options. */\n  layout?: PollData_Layout;\n  /** Styling for the poll and voting options. */\n  design?: PollData_Design;\n}\n\nexport interface PollData_Poll {\n  /** Poll ID. */\n  id?: string;\n  /** Poll title. */\n  title?: string;\n  /** Poll creator ID. */\n  creatorId?: string;\n  /** Main poll image. */\n  image?: Media;\n  /** Voting options. */\n  options: PollData_Poll_Option[];\n  /** The poll's permissions and display settings. */\n  settings?: PollData_Poll_Settings;\n}\n\nexport interface PollData_Poll_Option {\n  /** Option ID. */\n  id?: string;\n  /** Option title. */\n  title?: string;\n  /** The image displayed with the option. */\n  image?: Media;\n}\n\nexport interface PollData_Poll_Settings {\n  /** Permissions settings for voting. */\n  permissions?: PollData_Poll_Settings_Permissions;\n  /** Sets whether voters are displayed in the vote results. Defaults to `true`. */\n  showVoters?: boolean;\n  /** Sets whether the vote count is displayed. Defaults to `true`. */\n  showVotesCount?: boolean;\n}\n\nexport interface PollData_Poll_Settings_Permissions {\n  /** Sets who can view the poll results. */\n  view: PollData_Poll_Settings_Permissions_ViewRole;\n  /** Sets who can vote. */\n  vote: PollData_Poll_Settings_Permissions_VoteRole;\n  /** Sets whether one voter can vote multiple times. Defaults to `false`. */\n  allowMultipleVotes?: boolean;\n}\n\nexport function pollData_Poll_Settings_Permissions_ViewRoleFromJSON(\n  object: any\n): PollData_Poll_Settings_Permissions_ViewRole {\n  switch (object) {\n    case 0:\n    case \"CREATOR\":\n      return PollData_Poll_Settings_Permissions_ViewRole.CREATOR;\n    case 1:\n    case \"VOTERS\":\n      return PollData_Poll_Settings_Permissions_ViewRole.VOTERS;\n    case 2:\n    case \"EVERYONE\":\n      return PollData_Poll_Settings_Permissions_ViewRole.EVERYONE;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return PollData_Poll_Settings_Permissions_ViewRole.UNRECOGNIZED;\n  }\n}\n\nexport function pollData_Poll_Settings_Permissions_ViewRoleToJSON(\n  object: PollData_Poll_Settings_Permissions_ViewRole\n): string {\n  switch (object) {\n    case PollData_Poll_Settings_Permissions_ViewRole.CREATOR:\n      return \"CREATOR\";\n    case PollData_Poll_Settings_Permissions_ViewRole.VOTERS:\n      return \"VOTERS\";\n    case PollData_Poll_Settings_Permissions_ViewRole.EVERYONE:\n      return \"EVERYONE\";\n    default:\n      return \"UNKNOWN\";\n  }\n}\n\nexport function pollData_Poll_Settings_Permissions_VoteRoleFromJSON(\n  object: any\n): PollData_Poll_Settings_Permissions_VoteRole {\n  switch (object) {\n    case 0:\n    case \"SITE_MEMBERS\":\n      return PollData_Poll_Settings_Permissions_VoteRole.SITE_MEMBERS;\n    case 1:\n    case \"ALL\":\n      return PollData_Poll_Settings_Permissions_VoteRole.ALL;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return PollData_Poll_Settings_Permissions_VoteRole.UNRECOGNIZED;\n  }\n}\n\nexport function pollData_Poll_Settings_Permissions_VoteRoleToJSON(\n  object: PollData_Poll_Settings_Permissions_VoteRole\n): string {\n  switch (object) {\n    case PollData_Poll_Settings_Permissions_VoteRole.SITE_MEMBERS:\n      return \"SITE_MEMBERS\";\n    case PollData_Poll_Settings_Permissions_VoteRole.ALL:\n      return \"ALL\";\n    default:\n      return \"UNKNOWN\";\n  }\n}\n\nexport interface PollData_Layout {\n  /** Poll layout settings. */\n  poll?: PollData_Layout_PollLayout;\n  /** Voting otpions layout settings. */\n  options?: PollData_Layout_OptionLayout;\n}\n\nexport interface PollData_Layout_PollLayout {\n  /** The layout for displaying the voting options. */\n  type: PollData_Layout_PollLayout_Type;\n  /** The direction of the text displayed in the voting options. Text can be displayed either right-to-left or left-to-right. */\n  direction: PollData_Layout_PollLayout_Direction;\n  /** Sets whether to display the main poll image. Defaults to `false`. */\n  enableImage?: boolean;\n}\n\nexport function pollData_Layout_PollLayout_TypeFromJSON(\n  object: any\n): PollData_Layout_PollLayout_Type {\n  switch (object) {\n    case 0:\n    case \"LIST\":\n      return PollData_Layout_PollLayout_Type.LIST;\n    case 1:\n    case \"GRID\":\n      return PollData_Layout_PollLayout_Type.GRID;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return PollData_Layout_PollLayout_Type.UNRECOGNIZED;\n  }\n}\n\nexport function pollData_Layout_PollLayout_TypeToJSON(\n  object: PollData_Layout_PollLayout_Type\n): string {\n  switch (object) {\n    case PollData_Layout_PollLayout_Type.LIST:\n      return \"LIST\";\n    case PollData_Layout_PollLayout_Type.GRID:\n      return \"GRID\";\n    default:\n      return \"UNKNOWN\";\n  }\n}\n\nexport function pollData_Layout_PollLayout_DirectionFromJSON(\n  object: any\n): PollData_Layout_PollLayout_Direction {\n  switch (object) {\n    case 0:\n    case \"LTR\":\n      return PollData_Layout_PollLayout_Direction.LTR;\n    case 1:\n    case \"RTL\":\n      return PollData_Layout_PollLayout_Direction.RTL;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return PollData_Layout_PollLayout_Direction.UNRECOGNIZED;\n  }\n}\n\nexport function pollData_Layout_PollLayout_DirectionToJSON(\n  object: PollData_Layout_PollLayout_Direction\n): string {\n  switch (object) {\n    case PollData_Layout_PollLayout_Direction.LTR:\n      return \"LTR\";\n    case PollData_Layout_PollLayout_Direction.RTL:\n      return \"RTL\";\n    default:\n      return \"UNKNOWN\";\n  }\n}\n\nexport interface PollData_Layout_OptionLayout {\n  /** Sets whether to display option images. Defaults to `false`. */\n  enableImage?: boolean;\n}\n\nexport interface PollData_Design {\n  /** Styling for the poll. */\n  poll?: PollData_Design_PollDesign;\n  /** Styling for voting options. */\n  options?: PollData_Design_OptionDesign;\n}\n\nexport interface PollData_Design_PollDesign {\n  /** Background styling. */\n  background?: PollData_Design_PollDesign_Background;\n  /** Border radius in pixels. */\n  borderRadius?: number;\n}\n\nexport interface PollData_Design_PollDesign_Background {\n  /** Background type. For each option, include the relevant details. */\n  type: PollData_Design_PollDesign_Background_Type;\n  /** The background color as a hexademical value. */\n  color?: string;\n  /** An image to use for the background. */\n  image?: Media | undefined;\n  /** Details for a gradient background. */\n  gradient?: PollData_Design_PollDesign_Background_Gradient | undefined;\n}\n\nexport function pollData_Design_PollDesign_Background_TypeFromJSON(\n  object: any\n): PollData_Design_PollDesign_Background_Type {\n  switch (object) {\n    case 0:\n    case \"COLOR\":\n      return PollData_Design_PollDesign_Background_Type.COLOR;\n    case 1:\n    case \"IMAGE\":\n      return PollData_Design_PollDesign_Background_Type.IMAGE;\n    case 2:\n    case \"GRADIENT\":\n      return PollData_Design_PollDesign_Background_Type.GRADIENT;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return PollData_Design_PollDesign_Background_Type.UNRECOGNIZED;\n  }\n}\n\nexport function pollData_Design_PollDesign_Background_TypeToJSON(\n  object: PollData_Design_PollDesign_Background_Type\n): string {\n  switch (object) {\n    case PollData_Design_PollDesign_Background_Type.COLOR:\n      return \"COLOR\";\n    case PollData_Design_PollDesign_Background_Type.IMAGE:\n      return \"IMAGE\";\n    case PollData_Design_PollDesign_Background_Type.GRADIENT:\n      return \"GRADIENT\";\n    default:\n      return \"UNKNOWN\";\n  }\n}\n\nexport interface PollData_Design_PollDesign_Background_Gradient {\n  /** The gradient angle in degrees. */\n  angle?: number;\n  /** The start color as a hexademical value. */\n  startColor?: string;\n  /** The end color as a hexademical value. */\n  lastColor?: string;\n}\n\nexport interface PollData_Design_OptionDesign {\n  /** Border radius in pixels. */\n  borderRadius?: number;\n}\n\nconst basePollData: object = {};\n\nexport const PollData = {\n  fromJSON(object: any): PollData {\n    const message = { ...basePollData } as PollData;\n    message.containerData =\n      object.containerData !== undefined && object.containerData !== null\n        ? PluginContainerData.fromJSON(object.containerData)\n        : undefined;\n    message.poll =\n      object.poll !== undefined && object.poll !== null\n        ? PollData_Poll.fromJSON(object.poll)\n        : undefined;\n    message.layout =\n      object.layout !== undefined && object.layout !== null\n        ? PollData_Layout.fromJSON(object.layout)\n        : undefined;\n    message.design =\n      object.design !== undefined && object.design !== null\n        ? PollData_Design.fromJSON(object.design)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: PollData): unknown {\n    const obj: any = {};\n    message.containerData !== undefined &&\n      (obj.containerData = message.containerData\n        ? PluginContainerData.toJSON(message.containerData)\n        : undefined);\n    message.poll !== undefined &&\n      (obj.poll = message.poll\n        ? PollData_Poll.toJSON(message.poll)\n        : undefined);\n    message.layout !== undefined &&\n      (obj.layout = message.layout\n        ? PollData_Layout.toJSON(message.layout)\n        : undefined);\n    message.design !== undefined &&\n      (obj.design = message.design\n        ? PollData_Design.toJSON(message.design)\n        : undefined);\n    return obj;\n  },\n};\n\nconst basePollData_Poll: object = {};\n\nexport const PollData_Poll = {\n  fromJSON(object: any): PollData_Poll {\n    const message = { ...basePollData_Poll } as PollData_Poll;\n    message.id =\n      object.id !== undefined && object.id !== null\n        ? String(object.id)\n        : undefined;\n    message.title =\n      object.title !== undefined && object.title !== null\n        ? String(object.title)\n        : undefined;\n    message.creatorId =\n      object.creatorId !== undefined && object.creatorId !== null\n        ? String(object.creatorId)\n        : undefined;\n    message.image =\n      object.image !== undefined && object.image !== null\n        ? Media.fromJSON(object.image)\n        : undefined;\n    message.options = (object.options ?? []).map((e: any) =>\n      PollData_Poll_Option.fromJSON(e)\n    );\n    message.settings =\n      object.settings !== undefined && object.settings !== null\n        ? PollData_Poll_Settings.fromJSON(object.settings)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: PollData_Poll): unknown {\n    const obj: any = {};\n    message.id !== undefined && (obj.id = message.id);\n    message.title !== undefined && (obj.title = message.title);\n    message.creatorId !== undefined && (obj.creatorId = message.creatorId);\n    message.image !== undefined &&\n      (obj.image = message.image ? Media.toJSON(message.image) : undefined);\n    if (message.options) {\n      obj.options = message.options.map((e) =>\n        e ? PollData_Poll_Option.toJSON(e) : undefined\n      );\n    } else {\n      obj.options = [];\n    }\n    message.settings !== undefined &&\n      (obj.settings = message.settings\n        ? PollData_Poll_Settings.toJSON(message.settings)\n        : undefined);\n    return obj;\n  },\n};\n\nconst basePollData_Poll_Option: object = {};\n\nexport const PollData_Poll_Option = {\n  fromJSON(object: any): PollData_Poll_Option {\n    const message = { ...basePollData_Poll_Option } as PollData_Poll_Option;\n    message.id =\n      object.id !== undefined && object.id !== null\n        ? String(object.id)\n        : undefined;\n    message.title =\n      object.title !== undefined && object.title !== null\n        ? String(object.title)\n        : undefined;\n    message.image =\n      object.image !== undefined && object.image !== null\n        ? Media.fromJSON(object.image)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: PollData_Poll_Option): unknown {\n    const obj: any = {};\n    message.id !== undefined && (obj.id = message.id);\n    message.title !== undefined && (obj.title = message.title);\n    message.image !== undefined &&\n      (obj.image = message.image ? Media.toJSON(message.image) : undefined);\n    return obj;\n  },\n};\n\nconst basePollData_Poll_Settings: object = {};\n\nexport const PollData_Poll_Settings = {\n  fromJSON(object: any): PollData_Poll_Settings {\n    const message = { ...basePollData_Poll_Settings } as PollData_Poll_Settings;\n    message.permissions =\n      object.permissions !== undefined && object.permissions !== null\n        ? PollData_Poll_Settings_Permissions.fromJSON(object.permissions)\n        : undefined;\n    message.showVoters =\n      object.showVoters !== undefined && object.showVoters !== null\n        ? Boolean(object.showVoters)\n        : undefined;\n    message.showVotesCount =\n      object.showVotesCount !== undefined && object.showVotesCount !== null\n        ? Boolean(object.showVotesCount)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: PollData_Poll_Settings): unknown {\n    const obj: any = {};\n    message.permissions !== undefined &&\n      (obj.permissions = message.permissions\n        ? PollData_Poll_Settings_Permissions.toJSON(message.permissions)\n        : undefined);\n    message.showVoters !== undefined && (obj.showVoters = message.showVoters);\n    message.showVotesCount !== undefined &&\n      (obj.showVotesCount = message.showVotesCount);\n    return obj;\n  },\n};\n\nconst basePollData_Poll_Settings_Permissions: object = {\n  view: PollData_Poll_Settings_Permissions_ViewRole.CREATOR,\n  vote: PollData_Poll_Settings_Permissions_VoteRole.SITE_MEMBERS,\n};\n\nexport const PollData_Poll_Settings_Permissions = {\n  fromJSON(object: any): PollData_Poll_Settings_Permissions {\n    const message = {\n      ...basePollData_Poll_Settings_Permissions,\n    } as PollData_Poll_Settings_Permissions;\n    message.view =\n      object.view !== undefined && object.view !== null\n        ? pollData_Poll_Settings_Permissions_ViewRoleFromJSON(object.view)\n        : PollData_Poll_Settings_Permissions_ViewRole.CREATOR;\n    message.vote =\n      object.vote !== undefined && object.vote !== null\n        ? pollData_Poll_Settings_Permissions_VoteRoleFromJSON(object.vote)\n        : PollData_Poll_Settings_Permissions_VoteRole.SITE_MEMBERS;\n    message.allowMultipleVotes =\n      object.allowMultipleVotes !== undefined &&\n      object.allowMultipleVotes !== null\n        ? Boolean(object.allowMultipleVotes)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: PollData_Poll_Settings_Permissions): unknown {\n    const obj: any = {};\n    message.view !== undefined &&\n      (obj.view = pollData_Poll_Settings_Permissions_ViewRoleToJSON(\n        message.view\n      ));\n    message.vote !== undefined &&\n      (obj.vote = pollData_Poll_Settings_Permissions_VoteRoleToJSON(\n        message.vote\n      ));\n    message.allowMultipleVotes !== undefined &&\n      (obj.allowMultipleVotes = message.allowMultipleVotes);\n    return obj;\n  },\n};\n\nconst basePollData_Layout: object = {};\n\nexport const PollData_Layout = {\n  fromJSON(object: any): PollData_Layout {\n    const message = { ...basePollData_Layout } as PollData_Layout;\n    message.poll =\n      object.poll !== undefined && object.poll !== null\n        ? PollData_Layout_PollLayout.fromJSON(object.poll)\n        : undefined;\n    message.options =\n      object.options !== undefined && object.options !== null\n        ? PollData_Layout_OptionLayout.fromJSON(object.options)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: PollData_Layout): unknown {\n    const obj: any = {};\n    message.poll !== undefined &&\n      (obj.poll = message.poll\n        ? PollData_Layout_PollLayout.toJSON(message.poll)\n        : undefined);\n    message.options !== undefined &&\n      (obj.options = message.options\n        ? PollData_Layout_OptionLayout.toJSON(message.options)\n        : undefined);\n    return obj;\n  },\n};\n\nconst basePollData_Layout_PollLayout: object = {\n  type: PollData_Layout_PollLayout_Type.LIST,\n  direction: PollData_Layout_PollLayout_Direction.LTR,\n};\n\nexport const PollData_Layout_PollLayout = {\n  fromJSON(object: any): PollData_Layout_PollLayout {\n    const message = {\n      ...basePollData_Layout_PollLayout,\n    } as PollData_Layout_PollLayout;\n    message.type =\n      object.type !== undefined && object.type !== null\n        ? pollData_Layout_PollLayout_TypeFromJSON(object.type)\n        : PollData_Layout_PollLayout_Type.LIST;\n    message.direction =\n      object.direction !== undefined && object.direction !== null\n        ? pollData_Layout_PollLayout_DirectionFromJSON(object.direction)\n        : PollData_Layout_PollLayout_Direction.LTR;\n    message.enableImage =\n      object.enableImage !== undefined && object.enableImage !== null\n        ? Boolean(object.enableImage)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: PollData_Layout_PollLayout): unknown {\n    const obj: any = {};\n    message.type !== undefined &&\n      (obj.type = pollData_Layout_PollLayout_TypeToJSON(message.type));\n    message.direction !== undefined &&\n      (obj.direction = pollData_Layout_PollLayout_DirectionToJSON(\n        message.direction\n      ));\n    message.enableImage !== undefined &&\n      (obj.enableImage = message.enableImage);\n    return obj;\n  },\n};\n\nconst basePollData_Layout_OptionLayout: object = {};\n\nexport const PollData_Layout_OptionLayout = {\n  fromJSON(object: any): PollData_Layout_OptionLayout {\n    const message = {\n      ...basePollData_Layout_OptionLayout,\n    } as PollData_Layout_OptionLayout;\n    message.enableImage =\n      object.enableImage !== undefined && object.enableImage !== null\n        ? Boolean(object.enableImage)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: PollData_Layout_OptionLayout): unknown {\n    const obj: any = {};\n    message.enableImage !== undefined &&\n      (obj.enableImage = message.enableImage);\n    return obj;\n  },\n};\n\nconst basePollData_Design: object = {};\n\nexport const PollData_Design = {\n  fromJSON(object: any): PollData_Design {\n    const message = { ...basePollData_Design } as PollData_Design;\n    message.poll =\n      object.poll !== undefined && object.poll !== null\n        ? PollData_Design_PollDesign.fromJSON(object.poll)\n        : undefined;\n    message.options =\n      object.options !== undefined && object.options !== null\n        ? PollData_Design_OptionDesign.fromJSON(object.options)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: PollData_Design): unknown {\n    const obj: any = {};\n    message.poll !== undefined &&\n      (obj.poll = message.poll\n        ? PollData_Design_PollDesign.toJSON(message.poll)\n        : undefined);\n    message.options !== undefined &&\n      (obj.options = message.options\n        ? PollData_Design_OptionDesign.toJSON(message.options)\n        : undefined);\n    return obj;\n  },\n};\n\nconst basePollData_Design_PollDesign: object = {};\n\nexport const PollData_Design_PollDesign = {\n  fromJSON(object: any): PollData_Design_PollDesign {\n    const message = {\n      ...basePollData_Design_PollDesign,\n    } as PollData_Design_PollDesign;\n    message.background =\n      object.background !== undefined && object.background !== null\n        ? PollData_Design_PollDesign_Background.fromJSON(object.background)\n        : undefined;\n    message.borderRadius =\n      object.borderRadius !== undefined && object.borderRadius !== null\n        ? Number(object.borderRadius)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: PollData_Design_PollDesign): unknown {\n    const obj: any = {};\n    message.background !== undefined &&\n      (obj.background = message.background\n        ? PollData_Design_PollDesign_Background.toJSON(message.background)\n        : undefined);\n    message.borderRadius !== undefined &&\n      (obj.borderRadius = message.borderRadius);\n    return obj;\n  },\n};\n\nconst basePollData_Design_PollDesign_Background: object = {\n  type: PollData_Design_PollDesign_Background_Type.COLOR,\n};\n\nexport const PollData_Design_PollDesign_Background = {\n  fromJSON(object: any): PollData_Design_PollDesign_Background {\n    const message = {\n      ...basePollData_Design_PollDesign_Background,\n    } as PollData_Design_PollDesign_Background;\n    message.type =\n      object.type !== undefined && object.type !== null\n        ? pollData_Design_PollDesign_Background_TypeFromJSON(object.type)\n        : PollData_Design_PollDesign_Background_Type.COLOR;\n    message.color =\n      object.color !== undefined && object.color !== null\n        ? String(object.color)\n        : undefined;\n    message.image =\n      object.image !== undefined && object.image !== null\n        ? Media.fromJSON(object.image)\n        : undefined;\n    message.gradient =\n      object.gradient !== undefined && object.gradient !== null\n        ? PollData_Design_PollDesign_Background_Gradient.fromJSON(\n            object.gradient\n          )\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: PollData_Design_PollDesign_Background): unknown {\n    const obj: any = {};\n    message.type !== undefined &&\n      (obj.type = pollData_Design_PollDesign_Background_TypeToJSON(\n        message.type\n      ));\n    message.color !== undefined && (obj.color = message.color);\n    message.image !== undefined &&\n      (obj.image = message.image ? Media.toJSON(message.image) : undefined);\n    message.gradient !== undefined &&\n      (obj.gradient = message.gradient\n        ? PollData_Design_PollDesign_Background_Gradient.toJSON(\n            message.gradient\n          )\n        : undefined);\n    return obj;\n  },\n};\n\nconst basePollData_Design_PollDesign_Background_Gradient: object = {};\n\nexport const PollData_Design_PollDesign_Background_Gradient = {\n  fromJSON(object: any): PollData_Design_PollDesign_Background_Gradient {\n    const message = {\n      ...basePollData_Design_PollDesign_Background_Gradient,\n    } as PollData_Design_PollDesign_Background_Gradient;\n    message.angle =\n      object.angle !== undefined && object.angle !== null\n        ? Number(object.angle)\n        : undefined;\n    message.startColor =\n      object.startColor !== undefined && object.startColor !== null\n        ? String(object.startColor)\n        : undefined;\n    message.lastColor =\n      object.lastColor !== undefined && object.lastColor !== null\n        ? String(object.lastColor)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: PollData_Design_PollDesign_Background_Gradient): unknown {\n    const obj: any = {};\n    message.angle !== undefined && (obj.angle = message.angle);\n    message.startColor !== undefined && (obj.startColor = message.startColor);\n    message.lastColor !== undefined && (obj.lastColor = message.lastColor);\n    return obj;\n  },\n};\n\nconst basePollData_Design_OptionDesign: object = {};\n\nexport const PollData_Design_OptionDesign = {\n  fromJSON(object: any): PollData_Design_OptionDesign {\n    const message = {\n      ...basePollData_Design_OptionDesign,\n    } as PollData_Design_OptionDesign;\n    message.borderRadius =\n      object.borderRadius !== undefined && object.borderRadius !== null\n        ? Number(object.borderRadius)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: PollData_Design_OptionDesign): unknown {\n    const obj: any = {};\n    message.borderRadius !== undefined &&\n      (obj.borderRadius = message.borderRadius);\n    return obj;\n  },\n};\n","/* eslint-disable */\nimport { PluginContainerData, Media } from './common.js';\n\nexport interface ShapeData {\n  /** Styling for the shape's container. */\n  containerData?: PluginContainerData;\n  /** Shape file details. */\n  shape?: Media;\n  /** Styling for the shape. */\n  styles?: ShapeData_Styles;\n}\n\nexport interface ShapeData_Styles {\n  /** Shape fill color as a hexadecimal value. */\n  color?: string;\n  /** Map of original color keys to their new color values. */\n  colors: { [key: string]: string };\n}\n\nexport interface ShapeData_Styles_ColorsEntry {\n  key: string;\n  value: string;\n}\n\nconst baseShapeData: object = {};\n\nexport const ShapeData = {\n  fromJSON(object: any): ShapeData {\n    const message = { ...baseShapeData } as ShapeData;\n    message.containerData =\n      object.containerData !== undefined && object.containerData !== null\n        ? PluginContainerData.fromJSON(object.containerData)\n        : undefined;\n    message.shape =\n      object.shape !== undefined && object.shape !== null\n        ? Media.fromJSON(object.shape)\n        : undefined;\n    message.styles =\n      object.styles !== undefined && object.styles !== null\n        ? ShapeData_Styles.fromJSON(object.styles)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: ShapeData): unknown {\n    const obj: any = {};\n    message.containerData !== undefined &&\n      (obj.containerData = message.containerData\n        ? PluginContainerData.toJSON(message.containerData)\n        : undefined);\n    message.shape !== undefined &&\n      (obj.shape = message.shape ? Media.toJSON(message.shape) : undefined);\n    message.styles !== undefined &&\n      (obj.styles = message.styles\n        ? ShapeData_Styles.toJSON(message.styles)\n        : undefined);\n    return obj;\n  },\n};\n\nconst baseShapeData_Styles: object = {};\n\nexport const ShapeData_Styles = {\n  fromJSON(object: any): ShapeData_Styles {\n    const message = { ...baseShapeData_Styles } as ShapeData_Styles;\n    message.color =\n      object.color !== undefined && object.color !== null\n        ? String(object.color)\n        : undefined;\n    message.colors = Object.entries(object.colors ?? {}).reduce<{\n      [key: string]: string;\n    }>((acc, [key, value]) => {\n      acc[key] = String(value);\n      return acc;\n    }, {});\n    return message;\n  },\n\n  toJSON(message: ShapeData_Styles): unknown {\n    const obj: any = {};\n    message.color !== undefined && (obj.color = message.color);\n    obj.colors = {};\n    if (message.colors) {\n      Object.entries(message.colors).forEach(([k, v]) => {\n        obj.colors[k] = v;\n      });\n    }\n    return obj;\n  },\n};\n\nconst baseShapeData_Styles_ColorsEntry: object = { key: \"\", value: \"\" };\n\nexport const ShapeData_Styles_ColorsEntry = {\n  fromJSON(object: any): ShapeData_Styles_ColorsEntry {\n    const message = {\n      ...baseShapeData_Styles_ColorsEntry,\n    } as ShapeData_Styles_ColorsEntry;\n    message.key =\n      object.key !== undefined && object.key !== null ? String(object.key) : \"\";\n    message.value =\n      object.value !== undefined && object.value !== null\n        ? String(object.value)\n        : \"\";\n    return message;\n  },\n\n  toJSON(message: ShapeData_Styles_ColorsEntry): unknown {\n    const obj: any = {};\n    message.key !== undefined && (obj.key = message.key);\n    message.value !== undefined && (obj.value = message.value);\n    return obj;\n  },\n};\n","/* eslint-disable */\nimport { PluginContainerData } from './common.js';\n\nexport interface TableData {\n  /** Styling for the table's container. */\n  containerData?: PluginContainerData;\n  /** The table's dimensions. */\n  dimensions?: TableData_Dimensions;\n  /**\n   * Deprecated: Use `rowHeader` and `columnHeader` instead.\n   *\n   * @deprecated\n   */\n  header?: boolean;\n  /** Sets whether the table's first row is a header. Defaults to `false`. */\n  rowHeader?: boolean;\n  /** Sets whether the table's first column is a header. Defaults to `false`. */\n  columnHeader?: boolean;\n  /** The spacing between cells in pixels. Defaults to `0`. */\n  cellSpacing?: number;\n  /** Padding in pixels for cells. Follows CSS order: top, right, bottom, left. */\n  cellPadding: number[];\n}\n\nexport interface TableData_Dimensions {\n  /** An array representing relative width of each column in relation to the other columns. */\n  colsWidthRatio: number[];\n  /** An array representing the height of each row in pixels. */\n  rowsHeight: number[];\n  /** An array representing the minimum width of each column in pixels. */\n  colsMinWidth: number[];\n}\n\nconst baseTableData: object = { cellPadding: 0 };\n\nexport const TableData = {\n  fromJSON(object: any): TableData {\n    const message = { ...baseTableData } as TableData;\n    message.containerData =\n      object.containerData !== undefined && object.containerData !== null\n        ? PluginContainerData.fromJSON(object.containerData)\n        : undefined;\n    message.dimensions =\n      object.dimensions !== undefined && object.dimensions !== null\n        ? TableData_Dimensions.fromJSON(object.dimensions)\n        : undefined;\n    message.header =\n      object.header !== undefined && object.header !== null\n        ? Boolean(object.header)\n        : undefined;\n    message.rowHeader =\n      object.rowHeader !== undefined && object.rowHeader !== null\n        ? Boolean(object.rowHeader)\n        : undefined;\n    message.columnHeader =\n      object.columnHeader !== undefined && object.columnHeader !== null\n        ? Boolean(object.columnHeader)\n        : undefined;\n    message.cellSpacing =\n      object.cellSpacing !== undefined && object.cellSpacing !== null\n        ? Number(object.cellSpacing)\n        : undefined;\n    message.cellPadding = (object.cellPadding ?? []).map((e: any) => Number(e));\n    return message;\n  },\n\n  toJSON(message: TableData): unknown {\n    const obj: any = {};\n    message.containerData !== undefined &&\n      (obj.containerData = message.containerData\n        ? PluginContainerData.toJSON(message.containerData)\n        : undefined);\n    message.dimensions !== undefined &&\n      (obj.dimensions = message.dimensions\n        ? TableData_Dimensions.toJSON(message.dimensions)\n        : undefined);\n    message.header !== undefined && (obj.header = message.header);\n    message.rowHeader !== undefined && (obj.rowHeader = message.rowHeader);\n    message.columnHeader !== undefined &&\n      (obj.columnHeader = message.columnHeader);\n    message.cellSpacing !== undefined &&\n      (obj.cellSpacing = message.cellSpacing);\n    if (message.cellPadding) {\n      obj.cellPadding = message.cellPadding.map((e) => Math.round(e));\n    } else {\n      obj.cellPadding = [];\n    }\n    return obj;\n  },\n};\n\nconst baseTableData_Dimensions: object = {\n  colsWidthRatio: 0,\n  rowsHeight: 0,\n  colsMinWidth: 0,\n};\n\nexport const TableData_Dimensions = {\n  fromJSON(object: any): TableData_Dimensions {\n    const message = { ...baseTableData_Dimensions } as TableData_Dimensions;\n    message.colsWidthRatio = (object.colsWidthRatio ?? []).map((e: any) =>\n      Number(e)\n    );\n    message.rowsHeight = (object.rowsHeight ?? []).map((e: any) => Number(e));\n    message.colsMinWidth = (object.colsMinWidth ?? []).map((e: any) =>\n      Number(e)\n    );\n    return message;\n  },\n\n  toJSON(message: TableData_Dimensions): unknown {\n    const obj: any = {};\n    if (message.colsWidthRatio) {\n      obj.colsWidthRatio = message.colsWidthRatio.map((e) => Math.round(e));\n    } else {\n      obj.colsWidthRatio = [];\n    }\n    if (message.rowsHeight) {\n      obj.rowsHeight = message.rowsHeight.map((e) => Math.round(e));\n    } else {\n      obj.rowsHeight = [];\n    }\n    if (message.colsMinWidth) {\n      obj.colsMinWidth = message.colsMinWidth.map((e) => Math.round(e));\n    } else {\n      obj.colsMinWidth = [];\n    }\n    return obj;\n  },\n};\n","export enum TableCellData_VerticalAlignment {\n  /** TOP - Top alignment */\n  TOP = \"TOP\",\n  /** MIDDLE - Middle alignment */\n  MIDDLE = \"MIDDLE\",\n  /** BOTTOM - Bottom alignment */\n  BOTTOM = \"BOTTOM\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}","import { TableCellData_VerticalAlignment } from './plugin_table_cell.enums.js';\n/* eslint-disable */\nexport interface TableCellData {\n  /** Styling for the cell's background color and text alignment. */\n  cellStyle?: TableCellData_CellStyle;\n  /** The cell's border colors. */\n  borderColors?: TableCellData_BorderColors;\n  /** Defines how many columns the cell spans. Default: 1. */\n  colspan?: number;\n  /** Defines how many rows the cell spans. Default: 1. */\n  rowspan?: number;\n  /** The cell's border widths. */\n  borderWidths?: TableCellData_BorderWidths;\n}\n\nexport function tableCellData_VerticalAlignmentFromJSON(\n  object: any\n): TableCellData_VerticalAlignment {\n  switch (object) {\n    case 0:\n    case \"TOP\":\n      return TableCellData_VerticalAlignment.TOP;\n    case 1:\n    case \"MIDDLE\":\n      return TableCellData_VerticalAlignment.MIDDLE;\n    case 2:\n    case \"BOTTOM\":\n      return TableCellData_VerticalAlignment.BOTTOM;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return TableCellData_VerticalAlignment.UNRECOGNIZED;\n  }\n}\n\nexport function tableCellData_VerticalAlignmentToJSON(\n  object: TableCellData_VerticalAlignment\n): string {\n  switch (object) {\n    case TableCellData_VerticalAlignment.TOP:\n      return \"TOP\";\n    case TableCellData_VerticalAlignment.MIDDLE:\n      return \"MIDDLE\";\n    case TableCellData_VerticalAlignment.BOTTOM:\n      return \"BOTTOM\";\n    default:\n      return \"UNKNOWN\";\n  }\n}\n\nexport interface TableCellData_CellStyle {\n  /** Vertical alignment for the cell's text. */\n  verticalAlignment: TableCellData_VerticalAlignment;\n  /** Cell background color as a hexadecimal value. */\n  backgroundColor?: string;\n}\n\nexport interface TableCellData_BorderColors {\n  /** Left border color as a hexadecimal value. */\n  left?: string;\n  /** Right border color as a hexadecimal value. */\n  right?: string;\n  /** Top border color as a hexadecimal value. */\n  top?: string;\n  /** Bottom border color as a hexadecimal value. */\n  bottom?: string;\n}\n\nexport interface TableCellData_BorderWidths {\n  /** Left border width in pixels. */\n  left?: number;\n  /** Right border width in pixels. */\n  right?: number;\n  /** Top border width in pixels. */\n  top?: number;\n  /** Bottom border width in pixels. */\n  bottom?: number;\n}\n\nconst baseTableCellData: object = {};\n\nexport const TableCellData = {\n  fromJSON(object: any): TableCellData {\n    const message = { ...baseTableCellData } as TableCellData;\n    message.cellStyle =\n      object.cellStyle !== undefined && object.cellStyle !== null\n        ? TableCellData_CellStyle.fromJSON(object.cellStyle)\n        : undefined;\n    message.borderColors =\n      object.borderColors !== undefined && object.borderColors !== null\n        ? TableCellData_BorderColors.fromJSON(object.borderColors)\n        : undefined;\n    message.colspan =\n      object.colspan !== undefined && object.colspan !== null\n        ? Number(object.colspan)\n        : undefined;\n    message.rowspan =\n      object.rowspan !== undefined && object.rowspan !== null\n        ? Number(object.rowspan)\n        : undefined;\n    message.borderWidths =\n      object.borderWidths !== undefined && object.borderWidths !== null\n        ? TableCellData_BorderWidths.fromJSON(object.borderWidths)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: TableCellData): unknown {\n    const obj: any = {};\n    message.cellStyle !== undefined &&\n      (obj.cellStyle = message.cellStyle\n        ? TableCellData_CellStyle.toJSON(message.cellStyle)\n        : undefined);\n    message.borderColors !== undefined &&\n      (obj.borderColors = message.borderColors\n        ? TableCellData_BorderColors.toJSON(message.borderColors)\n        : undefined);\n    message.colspan !== undefined && (obj.colspan = message.colspan);\n    message.rowspan !== undefined && (obj.rowspan = message.rowspan);\n    message.borderWidths !== undefined &&\n      (obj.borderWidths = message.borderWidths\n        ? TableCellData_BorderWidths.toJSON(message.borderWidths)\n        : undefined);\n    return obj;\n  },\n};\n\nconst baseTableCellData_CellStyle: object = {\n  verticalAlignment: TableCellData_VerticalAlignment.TOP,\n};\n\nexport const TableCellData_CellStyle = {\n  fromJSON(object: any): TableCellData_CellStyle {\n    const message = {\n      ...baseTableCellData_CellStyle,\n    } as TableCellData_CellStyle;\n    message.verticalAlignment =\n      object.verticalAlignment !== undefined &&\n      object.verticalAlignment !== null\n        ? tableCellData_VerticalAlignmentFromJSON(object.verticalAlignment)\n        : TableCellData_VerticalAlignment.TOP;\n    message.backgroundColor =\n      object.backgroundColor !== undefined && object.backgroundColor !== null\n        ? String(object.backgroundColor)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: TableCellData_CellStyle): unknown {\n    const obj: any = {};\n    message.verticalAlignment !== undefined &&\n      (obj.verticalAlignment = tableCellData_VerticalAlignmentToJSON(\n        message.verticalAlignment\n      ));\n    message.backgroundColor !== undefined &&\n      (obj.backgroundColor = message.backgroundColor);\n    return obj;\n  },\n};\n\nconst baseTableCellData_BorderColors: object = {};\n\nexport const TableCellData_BorderColors = {\n  fromJSON(object: any): TableCellData_BorderColors {\n    const message = {\n      ...baseTableCellData_BorderColors,\n    } as TableCellData_BorderColors;\n    message.left =\n      object.left !== undefined && object.left !== null\n        ? String(object.left)\n        : undefined;\n    message.right =\n      object.right !== undefined && object.right !== null\n        ? String(object.right)\n        : undefined;\n    message.top =\n      object.top !== undefined && object.top !== null\n        ? String(object.top)\n        : undefined;\n    message.bottom =\n      object.bottom !== undefined && object.bottom !== null\n        ? String(object.bottom)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: TableCellData_BorderColors): unknown {\n    const obj: any = {};\n    message.left !== undefined && (obj.left = message.left);\n    message.right !== undefined && (obj.right = message.right);\n    message.top !== undefined && (obj.top = message.top);\n    message.bottom !== undefined && (obj.bottom = message.bottom);\n    return obj;\n  },\n};\n\nconst baseTableCellData_BorderWidths: object = {};\n\nexport const TableCellData_BorderWidths = {\n  fromJSON(object: any): TableCellData_BorderWidths {\n    const message = {\n      ...baseTableCellData_BorderWidths,\n    } as TableCellData_BorderWidths;\n    message.left =\n      object.left !== undefined && object.left !== null\n        ? Number(object.left)\n        : undefined;\n    message.right =\n      object.right !== undefined && object.right !== null\n        ? Number(object.right)\n        : undefined;\n    message.top =\n      object.top !== undefined && object.top !== null\n        ? Number(object.top)\n        : undefined;\n    message.bottom =\n      object.bottom !== undefined && object.bottom !== null\n        ? Number(object.bottom)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: TableCellData_BorderWidths): unknown {\n    const obj: any = {};\n    message.left !== undefined && (obj.left = message.left);\n    message.right !== undefined && (obj.right = message.right);\n    message.top !== undefined && (obj.top = message.top);\n    message.bottom !== undefined && (obj.bottom = message.bottom);\n    return obj;\n  },\n};\n","/* eslint-disable */\nimport { PluginContainerData, Media, PlaybackOptions } from './common.js';\n\nexport interface VideoData {\n  /** Styling for the video's container. */\n  containerData?: PluginContainerData;\n  /** Video details. */\n  video?: Media;\n  /** Video thumbnail details. */\n  thumbnail?: Media;\n  /** Sets whether the video's download button is disabled. Defaults to `false`. */\n  disableDownload?: boolean;\n  /** Video title. */\n  title?: string;\n  /** Video options. */\n  options?: PlaybackOptions;\n}\n\nconst baseVideoData: object = {};\n\nexport const VideoData = {\n  fromJSON(object: any): VideoData {\n    const message = { ...baseVideoData } as VideoData;\n    message.containerData =\n      object.containerData !== undefined && object.containerData !== null\n        ? PluginContainerData.fromJSON(object.containerData)\n        : undefined;\n    message.video =\n      object.video !== undefined && object.video !== null\n        ? Media.fromJSON(object.video)\n        : undefined;\n    message.thumbnail =\n      object.thumbnail !== undefined && object.thumbnail !== null\n        ? Media.fromJSON(object.thumbnail)\n        : undefined;\n    message.disableDownload =\n      object.disableDownload !== undefined && object.disableDownload !== null\n        ? Boolean(object.disableDownload)\n        : undefined;\n    message.title =\n      object.title !== undefined && object.title !== null\n        ? String(object.title)\n        : undefined;\n    message.options =\n      object.options !== undefined && object.options !== null\n        ? PlaybackOptions.fromJSON(object.options)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: VideoData): unknown {\n    const obj: any = {};\n    message.containerData !== undefined &&\n      (obj.containerData = message.containerData\n        ? PluginContainerData.toJSON(message.containerData)\n        : undefined);\n    message.video !== undefined &&\n      (obj.video = message.video ? Media.toJSON(message.video) : undefined);\n    message.thumbnail !== undefined &&\n      (obj.thumbnail = message.thumbnail\n        ? Media.toJSON(message.thumbnail)\n        : undefined);\n    message.disableDownload !== undefined &&\n      (obj.disableDownload = message.disableDownload);\n    message.title !== undefined && (obj.title = message.title);\n    message.options !== undefined &&\n      (obj.options = message.options\n        ? PlaybackOptions.toJSON(message.options)\n        : undefined);\n    return obj;\n  },\n};\n","export enum Node_Type {\n  PARAGRAPH = \"PARAGRAPH\",\n  TEXT = \"TEXT\",\n  HEADING = \"HEADING\",\n  BULLETED_LIST = \"BULLETED_LIST\",\n  ORDERED_LIST = \"ORDERED_LIST\",\n  LIST_ITEM = \"LIST_ITEM\",\n  BLOCKQUOTE = \"BLOCKQUOTE\",\n  CODE_BLOCK = \"CODE_BLOCK\",\n  VIDEO = \"VIDEO\",\n  DIVIDER = \"DIVIDER\",\n  FILE = \"FILE\",\n  GALLERY = \"GALLERY\",\n  GIF = \"GIF\",\n  HTML = \"HTML\",\n  IMAGE = \"IMAGE\",\n  LINK_PREVIEW = \"LINK_PREVIEW\",\n  /** MAP - @deprecated */\n  MAP = \"MAP\",\n  POLL = \"POLL\",\n  APP_EMBED = \"APP_EMBED\",\n  BUTTON = \"BUTTON\",\n  COLLAPSIBLE_LIST = \"COLLAPSIBLE_LIST\",\n  TABLE = \"TABLE\",\n  EMBED = \"EMBED\",\n  COLLAPSIBLE_ITEM = \"COLLAPSIBLE_ITEM\",\n  COLLAPSIBLE_ITEM_TITLE = \"COLLAPSIBLE_ITEM_TITLE\",\n  COLLAPSIBLE_ITEM_BODY = \"COLLAPSIBLE_ITEM_BODY\",\n  TABLE_CELL = \"TABLE_CELL\",\n  TABLE_ROW = \"TABLE_ROW\",\n  EXTERNAL = \"EXTERNAL\",\n  AUDIO = \"AUDIO\",\n  CAPTION = \"CAPTION\",\n  LAYOUT = \"LAYOUT\",\n  LAYOUT_CELL = \"LAYOUT_CELL\",\n  SHAPE = \"SHAPE\",\n  CARD = \"CARD\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport enum Decoration_Type {\n  BOLD = \"BOLD\",\n  ITALIC = \"ITALIC\",\n  UNDERLINE = \"UNDERLINE\",\n  SPOILER = \"SPOILER\",\n  ANCHOR = \"ANCHOR\",\n  MENTION = \"MENTION\",\n  LINK = \"LINK\",\n  COLOR = \"COLOR\",\n  FONT_SIZE = \"FONT_SIZE\",\n  EXTERNAL = \"EXTERNAL\",\n  STRIKETHROUGH = \"STRIKETHROUGH\",\n  SUPERSCRIPT = \"SUPERSCRIPT\",\n  SUBSCRIPT = \"SUBSCRIPT\",\n  FONT_FAMILY = \"FONT_FAMILY\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}","/* eslint-disable */\n/**\n * `NullValue` is a singleton enumeration to represent the null value for the\n * `Value` type union.\n *\n *  The JSON representation for `NullValue` is JSON `null`.\n */\nexport enum NullValue {\n  /** NULL_VALUE - Null value. */\n  NULL_VALUE = \"NULL_VALUE\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}","import { NullValue } from './struct.enums.js';\n\nexport function nullValueFromJSON(object: any): NullValue {\n  switch (object) {\n    case 0:\n    case \"NULL_VALUE\":\n      return NullValue.NULL_VALUE;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return NullValue.UNRECOGNIZED;\n  }\n}\n\nexport function nullValueToJSON(object: NullValue): string {\n  switch (object) {\n    case NullValue.NULL_VALUE:\n      return \"NULL_VALUE\";\n    default:\n      return \"UNKNOWN\";\n  }\n}\n\n/**\n * `Struct` represents a structured data value, consisting of fields\n * which map to dynamically typed values. In some languages, `Struct`\n * might be supported by a native representation. For example, in\n * scripting languages like JS a struct is represented as an\n * object. The details of that representation are described together\n * with the proto support for the language.\n *\n * The JSON representation for `Struct` is JSON object.\n */\nexport interface Struct {\n  /** An unordered map of dynamically typed values. */\n  fields: { [key: string]: Value };\n}\n\nexport interface Struct_FieldsEntry {\n  key: string;\n  value?: Value;\n}\n\n/**\n * `Value` represents a dynamically typed value which can be either\n * null, a number, a string, a boolean, a recursive struct value, or a\n * list of values. A producer of value is expected to set one of these\n * variants. Absence of any variant indicates an error.\n *\n * The JSON representation for `Value` is JSON value.\n */\nexport interface Value {\n  /** A null value. */\n  nullValue: NullValue | undefined;\n  /** A double value. */\n  numberValue: number | undefined;\n  /** A string value. */\n  stringValue: string | undefined;\n  /** A boolean value. */\n  boolValue: boolean | undefined;\n  /** A structured value. */\n  structValue?: Struct | undefined;\n  /** An array of `value` objects. */\n  listValue?: ListValue | undefined;\n}\n\n/**\n * `ListValue` is a wrapper around a repeated field of values.\n *\n * The JSON representation for `ListValue` is JSON array.\n */\nexport interface ListValue {\n  /** Repeated field of dynamically typed values. */\n  values: Value[];\n}\n\nconst baseStruct: object = {};\n\nexport const Struct = {\n  fromJSON(object: any): Struct {\n    const message = { ...baseStruct } as Struct;\n    message.fields = Object.entries(object.fields ?? {}).reduce<{\n      [key: string]: Value;\n    }>((acc, [key, value]) => {\n      acc[key] = Value.fromJSON(value);\n      return acc;\n    }, {});\n    return message;\n  },\n\n  toJSON(message: Struct): unknown {\n    const obj: any = {};\n    obj.fields = {};\n    if (message.fields) {\n      Object.entries(message.fields).forEach(([k, v]) => {\n        obj.fields[k] = Value.toJSON(v);\n      });\n    }\n    return obj;\n  },\n};\n\nconst baseStruct_FieldsEntry: object = { key: \"\" };\n\nexport const Struct_FieldsEntry = {\n  fromJSON(object: any): Struct_FieldsEntry {\n    const message = { ...baseStruct_FieldsEntry } as Struct_FieldsEntry;\n    message.key =\n      object.key !== undefined && object.key !== null ? String(object.key) : \"\";\n    message.value =\n      object.value !== undefined && object.value !== null\n        ? Value.fromJSON(object.value)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: Struct_FieldsEntry): unknown {\n    const obj: any = {};\n    message.key !== undefined && (obj.key = message.key);\n    message.value !== undefined &&\n      (obj.value = message.value ? Value.toJSON(message.value) : undefined);\n    return obj;\n  },\n};\n\nconst baseValue: object = {};\n\nexport const Value = {\n  fromJSON(object: any): Value {\n    const message = { ...baseValue } as Value;\n    message.nullValue =\n      object.nullValue !== undefined && object.nullValue !== null\n        ? nullValueFromJSON(object.nullValue)\n        : undefined;\n    message.numberValue =\n      object.numberValue !== undefined && object.numberValue !== null\n        ? Number(object.numberValue)\n        : undefined;\n    message.stringValue =\n      object.stringValue !== undefined && object.stringValue !== null\n        ? String(object.stringValue)\n        : undefined;\n    message.boolValue =\n      object.boolValue !== undefined && object.boolValue !== null\n        ? Boolean(object.boolValue)\n        : undefined;\n    message.structValue =\n      object.structValue !== undefined && object.structValue !== null\n        ? Struct.fromJSON(object.structValue)\n        : undefined;\n    message.listValue =\n      object.listValue !== undefined && object.listValue !== null\n        ? ListValue.fromJSON(object.listValue)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: Value): unknown {\n    const obj: any = {};\n    message.nullValue !== undefined &&\n      (obj.nullValue =\n        message.nullValue !== undefined\n          ? nullValueToJSON(message.nullValue)\n          : undefined);\n    message.numberValue !== undefined &&\n      (obj.numberValue = message.numberValue);\n    message.stringValue !== undefined &&\n      (obj.stringValue = message.stringValue);\n    message.boolValue !== undefined && (obj.boolValue = message.boolValue);\n    message.structValue !== undefined &&\n      (obj.structValue = message.structValue\n        ? Struct.toJSON(message.structValue)\n        : undefined);\n    message.listValue !== undefined &&\n      (obj.listValue = message.listValue\n        ? ListValue.toJSON(message.listValue)\n        : undefined);\n    return obj;\n  },\n};\n\nconst baseListValue: object = {};\n\nexport const ListValue = {\n  fromJSON(object: any): ListValue {\n    const message = { ...baseListValue } as ListValue;\n    message.values = (object.values ?? []).map((e: any) => Value.fromJSON(e));\n    return message;\n  },\n\n  toJSON(message: ListValue): unknown {\n    const obj: any = {};\n    if (message.values) {\n      obj.values = message.values.map((e) => (e ? Value.toJSON(e) : undefined));\n    } else {\n      obj.values = [];\n    }\n    return obj;\n  },\n};\n","/* eslint-disable */\nimport { Timestamp } from '../../../google/protobuf/timestamp.js';\nimport { ButtonData } from './plugin_button.js';\nimport { CodeBlockData } from './node_code_block.js';\nimport { DividerData } from './plugin_divider.js';\nimport { FileData } from './plugin_file.js';\nimport { GalleryData } from './plugin_gallery.js';\nimport { GIFData } from './plugin_gif.js';\nimport { HeadingData } from './node_heading.js';\nimport { HTMLData } from './plugin_html.js';\nimport { ImageData } from './plugin_image.js';\nimport { LinkPreviewData } from './plugin_link_preview.js';\nimport { MapData } from './plugin_map.js';\nimport { ParagraphData } from './node_paragraph.js';\nimport { PollData } from './plugin_poll.js';\nimport { AppEmbedData } from './plugin_app_embed.js';\nimport { VideoData } from './plugin_video.js';\nimport { EmbedData } from './plugin_embed.js';\nimport { CollapsibleListData } from './plugin_collapsible_list.js';\nimport { TableData } from './plugin_table.js';\nimport { TableCellData } from './plugin_table_cell.js';\nimport { Struct } from './struct.js';\nimport { AudioData } from './plugin_audio.js';\nimport { OrderedListData, BulletedListData } from './node_list.js';\nimport { BlockquoteData } from './node_blockquote.js';\nimport { CaptionData } from './node_caption.js';\nimport { LayoutData } from './node_layout.js';\nimport { LayoutCellData } from './node_layout_cell.js';\nimport { ShapeData } from './plugin_shape.js';\nimport { CardData } from './node_card.js';\nimport { AnchorData } from './decoration_anchor.js';\nimport { ColorData } from './decoration_color.js';\nimport { LinkData } from './decoration_link.js';\nimport { MentionData } from './decoration_mention.js';\nimport { FontSizeData } from './decoration_fontsize.js';\nimport { SpoilerData } from './decoration_spoiler.js';\nimport { FontFamilyData } from './decoration_fontfamily.js';\n\nimport { Node_Type, Decoration_Type } from './rich_content.enums.js';\n\nexport interface RichContent {\n  /** Node objects representing a rich content document. */\n  nodes: Node[];\n  /** Object metadata. */\n  metadata?: Metadata;\n  /** Global styling for header, paragraph, block quote, and code block nodes in the object. */\n  documentStyle?: DocumentStyle;\n}\n\nexport interface Node {\n  /** Node type. Use `APP_EMBED` for nodes that embed content from other Wix apps. Use `EMBED` to embed content in [oEmbed](https://oembed.com/) format. */\n  type: Node_Type;\n  /** Node ID. */\n  id: string;\n  /** A list of child nodes. */\n  nodes: Node[];\n  /** Padding and background color styling for the node. */\n  style?: NodeStyle;\n  /** Data for a button node. */\n  buttonData?: ButtonData | undefined;\n  /** Data for a code block node. */\n  codeBlockData?: CodeBlockData | undefined;\n  /** Data for a divider node. */\n  dividerData?: DividerData | undefined;\n  /** Data for a file node. */\n  fileData?: FileData | undefined;\n  /** Data for a gallery node. */\n  galleryData?: GalleryData | undefined;\n  /** Data for a GIF node. */\n  gifData?: GIFData | undefined;\n  /** Data for a heading node. */\n  headingData?: HeadingData | undefined;\n  /** Data for an embedded HTML node. */\n  htmlData?: HTMLData | undefined;\n  /** Data for an image node. */\n  imageData?: ImageData | undefined;\n  /** Data for a link preview node. */\n  linkPreviewData?: LinkPreviewData | undefined;\n  /** @deprecated */\n  mapData?: MapData | undefined;\n  /** Data for a paragraph node. */\n  paragraphData?: ParagraphData | undefined;\n  /** Data for a poll node. */\n  pollData?: PollData | undefined;\n  /** Data for a text node. Used to apply decorations to text. */\n  textData?: TextData | undefined;\n  /** Data for an app embed node. */\n  appEmbedData?: AppEmbedData | undefined;\n  /** Data for a video node. */\n  videoData?: VideoData | undefined;\n  /** Data for an oEmbed node. */\n  embedData?: EmbedData | undefined;\n  /** Data for a collapsible list node. */\n  collapsibleListData?: CollapsibleListData | undefined;\n  /** Data for a table node. */\n  tableData?: TableData | undefined;\n  /** Data for a table cell node. */\n  tableCellData?: TableCellData | undefined;\n  /** Data for a custom external node. */\n  externalData?: Struct | undefined;\n  /** Data for an audio node. */\n  audioData?: AudioData | undefined;\n  /** Data for an ordered list node. */\n  orderedListData?: OrderedListData | undefined;\n  /** Data for a bulleted list node. */\n  bulletedListData?: BulletedListData | undefined;\n  /** Data for a block quote node. */\n  blockquoteData?: BlockquoteData | undefined;\n  /** Data for a caption node. */\n  captionData?: CaptionData | undefined;\n  /** Data for a layout node. Reserved for future use. */\n  layoutData?: LayoutData | undefined;\n  /** Data for a cell node. */\n  layoutCellData?: LayoutCellData | undefined;\n  /** Data for a shape node. */\n  shapeData?: ShapeData | undefined;\n  /** Data for a card node. */\n  cardData?: CardData | undefined;\n}\n\nexport function node_TypeFromJSON(object: any): Node_Type {\n  switch (object) {\n    case 0:\n    case \"PARAGRAPH\":\n      return Node_Type.PARAGRAPH;\n    case 1:\n    case \"TEXT\":\n      return Node_Type.TEXT;\n    case 2:\n    case \"HEADING\":\n      return Node_Type.HEADING;\n    case 3:\n    case \"BULLETED_LIST\":\n      return Node_Type.BULLETED_LIST;\n    case 4:\n    case \"ORDERED_LIST\":\n      return Node_Type.ORDERED_LIST;\n    case 5:\n    case \"LIST_ITEM\":\n      return Node_Type.LIST_ITEM;\n    case 6:\n    case \"BLOCKQUOTE\":\n      return Node_Type.BLOCKQUOTE;\n    case 7:\n    case \"CODE_BLOCK\":\n      return Node_Type.CODE_BLOCK;\n    case 8:\n    case \"VIDEO\":\n      return Node_Type.VIDEO;\n    case 9:\n    case \"DIVIDER\":\n      return Node_Type.DIVIDER;\n    case 10:\n    case \"FILE\":\n      return Node_Type.FILE;\n    case 11:\n    case \"GALLERY\":\n      return Node_Type.GALLERY;\n    case 12:\n    case \"GIF\":\n      return Node_Type.GIF;\n    case 13:\n    case \"HTML\":\n      return Node_Type.HTML;\n    case 14:\n    case \"IMAGE\":\n      return Node_Type.IMAGE;\n    case 15:\n    case \"LINK_PREVIEW\":\n      return Node_Type.LINK_PREVIEW;\n    case 16:\n    case \"MAP\":\n      return Node_Type.MAP;\n    case 17:\n    case \"POLL\":\n      return Node_Type.POLL;\n    case 18:\n    case \"APP_EMBED\":\n      return Node_Type.APP_EMBED;\n    case 19:\n    case \"BUTTON\":\n      return Node_Type.BUTTON;\n    case 20:\n    case \"COLLAPSIBLE_LIST\":\n      return Node_Type.COLLAPSIBLE_LIST;\n    case 21:\n    case \"TABLE\":\n      return Node_Type.TABLE;\n    case 22:\n    case \"EMBED\":\n      return Node_Type.EMBED;\n    case 23:\n    case \"COLLAPSIBLE_ITEM\":\n      return Node_Type.COLLAPSIBLE_ITEM;\n    case 24:\n    case \"COLLAPSIBLE_ITEM_TITLE\":\n      return Node_Type.COLLAPSIBLE_ITEM_TITLE;\n    case 25:\n    case \"COLLAPSIBLE_ITEM_BODY\":\n      return Node_Type.COLLAPSIBLE_ITEM_BODY;\n    case 26:\n    case \"TABLE_CELL\":\n      return Node_Type.TABLE_CELL;\n    case 27:\n    case \"TABLE_ROW\":\n      return Node_Type.TABLE_ROW;\n    case 28:\n    case \"EXTERNAL\":\n      return Node_Type.EXTERNAL;\n    case 29:\n    case \"AUDIO\":\n      return Node_Type.AUDIO;\n    case 30:\n    case \"CAPTION\":\n      return Node_Type.CAPTION;\n    case 31:\n    case \"LAYOUT\":\n      return Node_Type.LAYOUT;\n    case 32:\n    case \"LAYOUT_CELL\":\n      return Node_Type.LAYOUT_CELL;\n    case 33:\n    case \"SHAPE\":\n      return Node_Type.SHAPE;\n    case 34:\n    case \"CARD\":\n      return Node_Type.CARD;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return Node_Type.UNRECOGNIZED;\n  }\n}\n\nexport function node_TypeToJSON(object: Node_Type): string {\n  switch (object) {\n    case Node_Type.PARAGRAPH:\n      return \"PARAGRAPH\";\n    case Node_Type.TEXT:\n      return \"TEXT\";\n    case Node_Type.HEADING:\n      return \"HEADING\";\n    case Node_Type.BULLETED_LIST:\n      return \"BULLETED_LIST\";\n    case Node_Type.ORDERED_LIST:\n      return \"ORDERED_LIST\";\n    case Node_Type.LIST_ITEM:\n      return \"LIST_ITEM\";\n    case Node_Type.BLOCKQUOTE:\n      return \"BLOCKQUOTE\";\n    case Node_Type.CODE_BLOCK:\n      return \"CODE_BLOCK\";\n    case Node_Type.VIDEO:\n      return \"VIDEO\";\n    case Node_Type.DIVIDER:\n      return \"DIVIDER\";\n    case Node_Type.FILE:\n      return \"FILE\";\n    case Node_Type.GALLERY:\n      return \"GALLERY\";\n    case Node_Type.GIF:\n      return \"GIF\";\n    case Node_Type.HTML:\n      return \"HTML\";\n    case Node_Type.IMAGE:\n      return \"IMAGE\";\n    case Node_Type.LINK_PREVIEW:\n      return \"LINK_PREVIEW\";\n    case Node_Type.MAP:\n      return \"MAP\";\n    case Node_Type.POLL:\n      return \"POLL\";\n    case Node_Type.APP_EMBED:\n      return \"APP_EMBED\";\n    case Node_Type.BUTTON:\n      return \"BUTTON\";\n    case Node_Type.COLLAPSIBLE_LIST:\n      return \"COLLAPSIBLE_LIST\";\n    case Node_Type.TABLE:\n      return \"TABLE\";\n    case Node_Type.EMBED:\n      return \"EMBED\";\n    case Node_Type.COLLAPSIBLE_ITEM:\n      return \"COLLAPSIBLE_ITEM\";\n    case Node_Type.COLLAPSIBLE_ITEM_TITLE:\n      return \"COLLAPSIBLE_ITEM_TITLE\";\n    case Node_Type.COLLAPSIBLE_ITEM_BODY:\n      return \"COLLAPSIBLE_ITEM_BODY\";\n    case Node_Type.TABLE_CELL:\n      return \"TABLE_CELL\";\n    case Node_Type.TABLE_ROW:\n      return \"TABLE_ROW\";\n    case Node_Type.EXTERNAL:\n      return \"EXTERNAL\";\n    case Node_Type.AUDIO:\n      return \"AUDIO\";\n    case Node_Type.CAPTION:\n      return \"CAPTION\";\n    case Node_Type.LAYOUT:\n      return \"LAYOUT\";\n    case Node_Type.LAYOUT_CELL:\n      return \"LAYOUT_CELL\";\n    case Node_Type.SHAPE:\n      return \"SHAPE\";\n    case Node_Type.CARD:\n      return \"CARD\";\n    default:\n      return \"UNKNOWN\";\n  }\n}\n\nexport interface NodeStyle {\n  /** The top padding value in pixels. */\n  paddingTop?: string;\n  /** The bottom padding value in pixels. */\n  paddingBottom?: string;\n  /** The background color as a hexadecimal value. */\n  backgroundColor?: string;\n}\n\nexport interface TextData {\n  /** The text to apply decorations to. */\n  text: string;\n  /** The decorations to apply. */\n  decorations: Decoration[];\n}\n\n/** Adds appearence changes to text */\nexport interface Decoration {\n  /** The type of decoration to apply. */\n  type: Decoration_Type;\n  /** Data for an anchor link decoration. */\n  anchorData?: AnchorData | undefined;\n  /** Data for a color decoration. */\n  colorData?: ColorData | undefined;\n  /** Data for an external link decoration. */\n  linkData?: LinkData | undefined;\n  /** Data for a mention decoration. */\n  mentionData?: MentionData | undefined;\n  /** Data for a font size decoration. */\n  fontSizeData?: FontSizeData | undefined;\n  /** Font weight for a bold decoration. */\n  fontWeightValue?: number;\n  /** Data for an italic decoration. Defaults to `true`. */\n  italicData?: boolean;\n  /** Data for an underline decoration. Defaults to `true`. */\n  underlineData?: boolean;\n  /** Data for a spoiler decoration. */\n  spoilerData?: SpoilerData | undefined;\n  /** Data for a strikethrough decoration. Defaults to `true`. */\n  strikethroughData?: boolean;\n  /** Data for a superscript decoration. Defaults to `true`. */\n  superscriptData?: boolean;\n  /** Data for a subscript decoration. Defaults to `true`. */\n  subscriptData?: boolean;\n  /** Data for a font family decoration. */\n  fontFamilyData?: FontFamilyData | undefined;\n}\n\nexport function decoration_TypeFromJSON(object: any): Decoration_Type {\n  switch (object) {\n    case 0:\n    case \"BOLD\":\n      return Decoration_Type.BOLD;\n    case 1:\n    case \"ITALIC\":\n      return Decoration_Type.ITALIC;\n    case 2:\n    case \"UNDERLINE\":\n      return Decoration_Type.UNDERLINE;\n    case 3:\n    case \"SPOILER\":\n      return Decoration_Type.SPOILER;\n    case 4:\n    case \"ANCHOR\":\n      return Decoration_Type.ANCHOR;\n    case 5:\n    case \"MENTION\":\n      return Decoration_Type.MENTION;\n    case 6:\n    case \"LINK\":\n      return Decoration_Type.LINK;\n    case 7:\n    case \"COLOR\":\n      return Decoration_Type.COLOR;\n    case 8:\n    case \"FONT_SIZE\":\n      return Decoration_Type.FONT_SIZE;\n    case 9:\n    case \"EXTERNAL\":\n      return Decoration_Type.EXTERNAL;\n    case 10:\n    case \"STRIKETHROUGH\":\n      return Decoration_Type.STRIKETHROUGH;\n    case 11:\n    case \"SUPERSCRIPT\":\n      return Decoration_Type.SUPERSCRIPT;\n    case 12:\n    case \"SUBSCRIPT\":\n      return Decoration_Type.SUBSCRIPT;\n    case 13:\n    case \"FONT_FAMILY\":\n      return Decoration_Type.FONT_FAMILY;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return Decoration_Type.UNRECOGNIZED;\n  }\n}\n\nexport function decoration_TypeToJSON(object: Decoration_Type): string {\n  switch (object) {\n    case Decoration_Type.BOLD:\n      return \"BOLD\";\n    case Decoration_Type.ITALIC:\n      return \"ITALIC\";\n    case Decoration_Type.UNDERLINE:\n      return \"UNDERLINE\";\n    case Decoration_Type.SPOILER:\n      return \"SPOILER\";\n    case Decoration_Type.ANCHOR:\n      return \"ANCHOR\";\n    case Decoration_Type.MENTION:\n      return \"MENTION\";\n    case Decoration_Type.LINK:\n      return \"LINK\";\n    case Decoration_Type.COLOR:\n      return \"COLOR\";\n    case Decoration_Type.FONT_SIZE:\n      return \"FONT_SIZE\";\n    case Decoration_Type.EXTERNAL:\n      return \"EXTERNAL\";\n    case Decoration_Type.STRIKETHROUGH:\n      return \"STRIKETHROUGH\";\n    case Decoration_Type.SUPERSCRIPT:\n      return \"SUPERSCRIPT\";\n    case Decoration_Type.SUBSCRIPT:\n      return \"SUBSCRIPT\";\n    case Decoration_Type.FONT_FAMILY:\n      return \"FONT_FAMILY\";\n    default:\n      return \"UNKNOWN\";\n  }\n}\n\nexport interface Metadata {\n  /** Schema version. */\n  version: number;\n  /**\n   * When the object was created.\n   *\n   * @deprecated\n   */\n  createdTimestamp?: Date;\n  /**\n   * When the object was most recently updated.\n   *\n   * @deprecated\n   */\n  updatedTimestamp?: Date;\n  /** Object ID. */\n  id?: string;\n}\n\nexport interface TextNodeStyle {\n  /** The decorations to apply to the node. */\n  decorations: Decoration[];\n  /** Padding and background color for the node. */\n  nodeStyle?: NodeStyle;\n  /** Line height for text in the node. */\n  lineHeight?: string;\n}\n\nexport interface DocumentStyle {\n  /** Styling for H1 nodes. */\n  headerOne?: TextNodeStyle;\n  /** Styling for H2 nodes. */\n  headerTwo?: TextNodeStyle;\n  /** Styling for H3 nodes. */\n  headerThree?: TextNodeStyle;\n  /** Styling for H4 nodes. */\n  headerFour?: TextNodeStyle;\n  /** Styling for H5 nodes. */\n  headerFive?: TextNodeStyle;\n  /** Styling for H6 nodes. */\n  headerSix?: TextNodeStyle;\n  /** Styling for paragraph nodes. */\n  paragraph?: TextNodeStyle;\n  /** Styling for block quote nodes. */\n  blockquote?: TextNodeStyle;\n  /** Styling for code block nodes. */\n  codeBlock?: TextNodeStyle;\n}\n\nconst baseRichContent: object = {};\n\nexport const RichContent = {\n  fromJSON(object: any): RichContent {\n    const message = { ...baseRichContent } as RichContent;\n    message.nodes = (object.nodes ?? []).map((e: any) => Node.fromJSON(e));\n    message.metadata =\n      object.metadata !== undefined && object.metadata !== null\n        ? Metadata.fromJSON(object.metadata)\n        : undefined;\n    message.documentStyle =\n      object.documentStyle !== undefined && object.documentStyle !== null\n        ? DocumentStyle.fromJSON(object.documentStyle)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: RichContent): unknown {\n    const obj: any = {};\n    if (message.nodes) {\n      obj.nodes = message.nodes.map((e) => (e ? Node.toJSON(e) : undefined));\n    } else {\n      obj.nodes = [];\n    }\n    message.metadata !== undefined &&\n      (obj.metadata = message.metadata\n        ? Metadata.toJSON(message.metadata)\n        : undefined);\n    message.documentStyle !== undefined &&\n      (obj.documentStyle = message.documentStyle\n        ? DocumentStyle.toJSON(message.documentStyle)\n        : undefined);\n    return obj;\n  },\n};\n\nconst baseNode: object = { type: Node_Type.PARAGRAPH, id: \"\" };\n\nexport const Node = {\n  fromJSON(object: any): Node {\n    const message = { ...baseNode } as Node;\n    message.type =\n      object.type !== undefined && object.type !== null\n        ? node_TypeFromJSON(object.type)\n        : Node_Type.PARAGRAPH;\n    message.id =\n      object.id !== undefined && object.id !== null ? String(object.id) : \"\";\n    message.nodes = (object.nodes ?? []).map((e: any) => Node.fromJSON(e));\n    message.style =\n      object.style !== undefined && object.style !== null\n        ? NodeStyle.fromJSON(object.style)\n        : undefined;\n    message.buttonData =\n      object.buttonData !== undefined && object.buttonData !== null\n        ? ButtonData.fromJSON(object.buttonData)\n        : undefined;\n    message.codeBlockData =\n      object.codeBlockData !== undefined && object.codeBlockData !== null\n        ? CodeBlockData.fromJSON(object.codeBlockData)\n        : undefined;\n    message.dividerData =\n      object.dividerData !== undefined && object.dividerData !== null\n        ? DividerData.fromJSON(object.dividerData)\n        : undefined;\n    message.fileData =\n      object.fileData !== undefined && object.fileData !== null\n        ? FileData.fromJSON(object.fileData)\n        : undefined;\n    message.galleryData =\n      object.galleryData !== undefined && object.galleryData !== null\n        ? GalleryData.fromJSON(object.galleryData)\n        : undefined;\n    message.gifData =\n      object.gifData !== undefined && object.gifData !== null\n        ? GIFData.fromJSON(object.gifData)\n        : undefined;\n    message.headingData =\n      object.headingData !== undefined && object.headingData !== null\n        ? HeadingData.fromJSON(object.headingData)\n        : undefined;\n    message.htmlData =\n      object.htmlData !== undefined && object.htmlData !== null\n        ? HTMLData.fromJSON(object.htmlData)\n        : undefined;\n    message.imageData =\n      object.imageData !== undefined && object.imageData !== null\n        ? ImageData.fromJSON(object.imageData)\n        : undefined;\n    message.linkPreviewData =\n      object.linkPreviewData !== undefined && object.linkPreviewData !== null\n        ? LinkPreviewData.fromJSON(object.linkPreviewData)\n        : undefined;\n    message.mapData =\n      object.mapData !== undefined && object.mapData !== null\n        ? MapData.fromJSON(object.mapData)\n        : undefined;\n    message.paragraphData =\n      object.paragraphData !== undefined && object.paragraphData !== null\n        ? ParagraphData.fromJSON(object.paragraphData)\n        : undefined;\n    message.pollData =\n      object.pollData !== undefined && object.pollData !== null\n        ? PollData.fromJSON(object.pollData)\n        : undefined;\n    message.textData =\n      object.textData !== undefined && object.textData !== null\n        ? TextData.fromJSON(object.textData)\n        : undefined;\n    message.appEmbedData =\n      object.appEmbedData !== undefined && object.appEmbedData !== null\n        ? AppEmbedData.fromJSON(object.appEmbedData)\n        : undefined;\n    message.videoData =\n      object.videoData !== undefined && object.videoData !== null\n        ? VideoData.fromJSON(object.videoData)\n        : undefined;\n    message.embedData =\n      object.embedData !== undefined && object.embedData !== null\n        ? EmbedData.fromJSON(object.embedData)\n        : undefined;\n    message.collapsibleListData =\n      object.collapsibleListData !== undefined &&\n      object.collapsibleListData !== null\n        ? CollapsibleListData.fromJSON(object.collapsibleListData)\n        : undefined;\n    message.tableData =\n      object.tableData !== undefined && object.tableData !== null\n        ? TableData.fromJSON(object.tableData)\n        : undefined;\n    message.tableCellData =\n      object.tableCellData !== undefined && object.tableCellData !== null\n        ? TableCellData.fromJSON(object.tableCellData)\n        : undefined;\n    message.externalData =\n      object.externalData !== undefined && object.externalData !== null\n        ? Struct.fromJSON(object.externalData)\n        : undefined;\n    message.audioData =\n      object.audioData !== undefined && object.audioData !== null\n        ? AudioData.fromJSON(object.audioData)\n        : undefined;\n    message.orderedListData =\n      object.orderedListData !== undefined && object.orderedListData !== null\n        ? OrderedListData.fromJSON(object.orderedListData)\n        : undefined;\n    message.bulletedListData =\n      object.bulletedListData !== undefined && object.bulletedListData !== null\n        ? BulletedListData.fromJSON(object.bulletedListData)\n        : undefined;\n    message.blockquoteData =\n      object.blockquoteData !== undefined && object.blockquoteData !== null\n        ? BlockquoteData.fromJSON(object.blockquoteData)\n        : undefined;\n    message.captionData =\n      object.captionData !== undefined && object.captionData !== null\n        ? CaptionData.fromJSON(object.captionData)\n        : undefined;\n    message.layoutData =\n      object.layoutData !== undefined && object.layoutData !== null\n        ? LayoutData.fromJSON(object.layoutData)\n        : undefined;\n    message.layoutCellData =\n      object.layoutCellData !== undefined && object.layoutCellData !== null\n        ? LayoutCellData.fromJSON(object.layoutCellData)\n        : undefined;\n    message.shapeData =\n      object.shapeData !== undefined && object.shapeData !== null\n        ? ShapeData.fromJSON(object.shapeData)\n        : undefined;\n    message.cardData =\n      object.cardData !== undefined && object.cardData !== null\n        ? CardData.fromJSON(object.cardData)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: Node): unknown {\n    const obj: any = {};\n    message.type !== undefined && (obj.type = node_TypeToJSON(message.type));\n    message.id !== undefined && (obj.id = message.id);\n    if (message.nodes) {\n      obj.nodes = message.nodes.map((e) => (e ? Node.toJSON(e) : undefined));\n    } else {\n      obj.nodes = [];\n    }\n    message.style !== undefined &&\n      (obj.style = message.style ? NodeStyle.toJSON(message.style) : undefined);\n    message.buttonData !== undefined &&\n      (obj.buttonData = message.buttonData\n        ? ButtonData.toJSON(message.buttonData)\n        : undefined);\n    message.codeBlockData !== undefined &&\n      (obj.codeBlockData = message.codeBlockData\n        ? CodeBlockData.toJSON(message.codeBlockData)\n        : undefined);\n    message.dividerData !== undefined &&\n      (obj.dividerData = message.dividerData\n        ? DividerData.toJSON(message.dividerData)\n        : undefined);\n    message.fileData !== undefined &&\n      (obj.fileData = message.fileData\n        ? FileData.toJSON(message.fileData)\n        : undefined);\n    message.galleryData !== undefined &&\n      (obj.galleryData = message.galleryData\n        ? GalleryData.toJSON(message.galleryData)\n        : undefined);\n    message.gifData !== undefined &&\n      (obj.gifData = message.gifData\n        ? GIFData.toJSON(message.gifData)\n        : undefined);\n    message.headingData !== undefined &&\n      (obj.headingData = message.headingData\n        ? HeadingData.toJSON(message.headingData)\n        : undefined);\n    message.htmlData !== undefined &&\n      (obj.htmlData = message.htmlData\n        ? HTMLData.toJSON(message.htmlData)\n        : undefined);\n    message.imageData !== undefined &&\n      (obj.imageData = message.imageData\n        ? ImageData.toJSON(message.imageData)\n        : undefined);\n    message.linkPreviewData !== undefined &&\n      (obj.linkPreviewData = message.linkPreviewData\n        ? LinkPreviewData.toJSON(message.linkPreviewData)\n        : undefined);\n    message.mapData !== undefined &&\n      (obj.mapData = message.mapData\n        ? MapData.toJSON(message.mapData)\n        : undefined);\n    message.paragraphData !== undefined &&\n      (obj.paragraphData = message.paragraphData\n        ? ParagraphData.toJSON(message.paragraphData)\n        : undefined);\n    message.pollData !== undefined &&\n      (obj.pollData = message.pollData\n        ? PollData.toJSON(message.pollData)\n        : undefined);\n    message.textData !== undefined &&\n      (obj.textData = message.textData\n        ? TextData.toJSON(message.textData)\n        : undefined);\n    message.appEmbedData !== undefined &&\n      (obj.appEmbedData = message.appEmbedData\n        ? AppEmbedData.toJSON(message.appEmbedData)\n        : undefined);\n    message.videoData !== undefined &&\n      (obj.videoData = message.videoData\n        ? VideoData.toJSON(message.videoData)\n        : undefined);\n    message.embedData !== undefined &&\n      (obj.embedData = message.embedData\n        ? EmbedData.toJSON(message.embedData)\n        : undefined);\n    message.collapsibleListData !== undefined &&\n      (obj.collapsibleListData = message.collapsibleListData\n        ? CollapsibleListData.toJSON(message.collapsibleListData)\n        : undefined);\n    message.tableData !== undefined &&\n      (obj.tableData = message.tableData\n        ? TableData.toJSON(message.tableData)\n        : undefined);\n    message.tableCellData !== undefined &&\n      (obj.tableCellData = message.tableCellData\n        ? TableCellData.toJSON(message.tableCellData)\n        : undefined);\n    message.externalData !== undefined &&\n      (obj.externalData = message.externalData\n        ? Struct.toJSON(message.externalData)\n        : undefined);\n    message.audioData !== undefined &&\n      (obj.audioData = message.audioData\n        ? AudioData.toJSON(message.audioData)\n        : undefined);\n    message.orderedListData !== undefined &&\n      (obj.orderedListData = message.orderedListData\n        ? OrderedListData.toJSON(message.orderedListData)\n        : undefined);\n    message.bulletedListData !== undefined &&\n      (obj.bulletedListData = message.bulletedListData\n        ? BulletedListData.toJSON(message.bulletedListData)\n        : undefined);\n    message.blockquoteData !== undefined &&\n      (obj.blockquoteData = message.blockquoteData\n        ? BlockquoteData.toJSON(message.blockquoteData)\n        : undefined);\n    message.captionData !== undefined &&\n      (obj.captionData = message.captionData\n        ? CaptionData.toJSON(message.captionData)\n        : undefined);\n    message.layoutData !== undefined &&\n      (obj.layoutData = message.layoutData\n        ? LayoutData.toJSON(message.layoutData)\n        : undefined);\n    message.layoutCellData !== undefined &&\n      (obj.layoutCellData = message.layoutCellData\n        ? LayoutCellData.toJSON(message.layoutCellData)\n        : undefined);\n    message.shapeData !== undefined &&\n      (obj.shapeData = message.shapeData\n        ? ShapeData.toJSON(message.shapeData)\n        : undefined);\n    message.cardData !== undefined &&\n      (obj.cardData = message.cardData\n        ? CardData.toJSON(message.cardData)\n        : undefined);\n    return obj;\n  },\n};\n\nconst baseNodeStyle: object = {};\n\nexport const NodeStyle = {\n  fromJSON(object: any): NodeStyle {\n    const message = { ...baseNodeStyle } as NodeStyle;\n    message.paddingTop =\n      object.paddingTop !== undefined && object.paddingTop !== null\n        ? String(object.paddingTop)\n        : undefined;\n    message.paddingBottom =\n      object.paddingBottom !== undefined && object.paddingBottom !== null\n        ? String(object.paddingBottom)\n        : undefined;\n    message.backgroundColor =\n      object.backgroundColor !== undefined && object.backgroundColor !== null\n        ? String(object.backgroundColor)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: NodeStyle): unknown {\n    const obj: any = {};\n    message.paddingTop !== undefined && (obj.paddingTop = message.paddingTop);\n    message.paddingBottom !== undefined &&\n      (obj.paddingBottom = message.paddingBottom);\n    message.backgroundColor !== undefined &&\n      (obj.backgroundColor = message.backgroundColor);\n    return obj;\n  },\n};\n\nconst baseTextData: object = { text: \"\" };\n\nexport const TextData = {\n  fromJSON(object: any): TextData {\n    const message = { ...baseTextData } as TextData;\n    message.text =\n      object.text !== undefined && object.text !== null\n        ? String(object.text)\n        : \"\";\n    message.decorations = (object.decorations ?? []).map((e: any) =>\n      Decoration.fromJSON(e)\n    );\n    return message;\n  },\n\n  toJSON(message: TextData): unknown {\n    const obj: any = {};\n    message.text !== undefined && (obj.text = message.text);\n    if (message.decorations) {\n      obj.decorations = message.decorations.map((e) =>\n        e ? Decoration.toJSON(e) : undefined\n      );\n    } else {\n      obj.decorations = [];\n    }\n    return obj;\n  },\n};\n\nconst baseDecoration: object = { type: Decoration_Type.BOLD };\n\nexport const Decoration = {\n  fromJSON(object: any): Decoration {\n    const message = { ...baseDecoration } as Decoration;\n    message.type =\n      object.type !== undefined && object.type !== null\n        ? decoration_TypeFromJSON(object.type)\n        : Decoration_Type.BOLD;\n    message.anchorData =\n      object.anchorData !== undefined && object.anchorData !== null\n        ? AnchorData.fromJSON(object.anchorData)\n        : undefined;\n    message.colorData =\n      object.colorData !== undefined && object.colorData !== null\n        ? ColorData.fromJSON(object.colorData)\n        : undefined;\n    message.linkData =\n      object.linkData !== undefined && object.linkData !== null\n        ? LinkData.fromJSON(object.linkData)\n        : undefined;\n    message.mentionData =\n      object.mentionData !== undefined && object.mentionData !== null\n        ? MentionData.fromJSON(object.mentionData)\n        : undefined;\n    message.fontSizeData =\n      object.fontSizeData !== undefined && object.fontSizeData !== null\n        ? FontSizeData.fromJSON(object.fontSizeData)\n        : undefined;\n    message.fontWeightValue =\n      object.fontWeightValue !== undefined && object.fontWeightValue !== null\n        ? Number(object.fontWeightValue)\n        : undefined;\n    message.italicData =\n      object.italicData !== undefined && object.italicData !== null\n        ? Boolean(object.italicData)\n        : undefined;\n    message.underlineData =\n      object.underlineData !== undefined && object.underlineData !== null\n        ? Boolean(object.underlineData)\n        : undefined;\n    message.spoilerData =\n      object.spoilerData !== undefined && object.spoilerData !== null\n        ? SpoilerData.fromJSON(object.spoilerData)\n        : undefined;\n    message.strikethroughData =\n      object.strikethroughData !== undefined &&\n      object.strikethroughData !== null\n        ? Boolean(object.strikethroughData)\n        : undefined;\n    message.superscriptData =\n      object.superscriptData !== undefined && object.superscriptData !== null\n        ? Boolean(object.superscriptData)\n        : undefined;\n    message.subscriptData =\n      object.subscriptData !== undefined && object.subscriptData !== null\n        ? Boolean(object.subscriptData)\n        : undefined;\n    message.fontFamilyData =\n      object.fontFamilyData !== undefined && object.fontFamilyData !== null\n        ? FontFamilyData.fromJSON(object.fontFamilyData)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: Decoration): unknown {\n    const obj: any = {};\n    message.type !== undefined &&\n      (obj.type = decoration_TypeToJSON(message.type));\n    message.anchorData !== undefined &&\n      (obj.anchorData = message.anchorData\n        ? AnchorData.toJSON(message.anchorData)\n        : undefined);\n    message.colorData !== undefined &&\n      (obj.colorData = message.colorData\n        ? ColorData.toJSON(message.colorData)\n        : undefined);\n    message.linkData !== undefined &&\n      (obj.linkData = message.linkData\n        ? LinkData.toJSON(message.linkData)\n        : undefined);\n    message.mentionData !== undefined &&\n      (obj.mentionData = message.mentionData\n        ? MentionData.toJSON(message.mentionData)\n        : undefined);\n    message.fontSizeData !== undefined &&\n      (obj.fontSizeData = message.fontSizeData\n        ? FontSizeData.toJSON(message.fontSizeData)\n        : undefined);\n    message.fontWeightValue !== undefined &&\n      (obj.fontWeightValue = message.fontWeightValue);\n    message.italicData !== undefined && (obj.italicData = message.italicData);\n    message.underlineData !== undefined &&\n      (obj.underlineData = message.underlineData);\n    message.spoilerData !== undefined &&\n      (obj.spoilerData = message.spoilerData\n        ? SpoilerData.toJSON(message.spoilerData)\n        : undefined);\n    message.strikethroughData !== undefined &&\n      (obj.strikethroughData = message.strikethroughData);\n    message.superscriptData !== undefined &&\n      (obj.superscriptData = message.superscriptData);\n    message.subscriptData !== undefined &&\n      (obj.subscriptData = message.subscriptData);\n    message.fontFamilyData !== undefined &&\n      (obj.fontFamilyData = message.fontFamilyData\n        ? FontFamilyData.toJSON(message.fontFamilyData)\n        : undefined);\n    return obj;\n  },\n};\n\nconst baseMetadata: object = { version: 0 };\n\nexport const Metadata = {\n  fromJSON(object: any): Metadata {\n    const message = { ...baseMetadata } as Metadata;\n    message.version =\n      object.version !== undefined && object.version !== null\n        ? Number(object.version)\n        : 0;\n    message.createdTimestamp =\n      object.createdTimestamp !== undefined && object.createdTimestamp !== null\n        ? fromJsonTimestamp(object.createdTimestamp)\n        : undefined;\n    message.updatedTimestamp =\n      object.updatedTimestamp !== undefined && object.updatedTimestamp !== null\n        ? fromJsonTimestamp(object.updatedTimestamp)\n        : undefined;\n    message.id =\n      object.id !== undefined && object.id !== null\n        ? String(object.id)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: Metadata): unknown {\n    const obj: any = {};\n    message.version !== undefined &&\n      (obj.version = Math.round(message.version));\n    message.createdTimestamp !== undefined &&\n      (obj.createdTimestamp = message.createdTimestamp.toISOString());\n    message.updatedTimestamp !== undefined &&\n      (obj.updatedTimestamp = message.updatedTimestamp.toISOString());\n    message.id !== undefined && (obj.id = message.id);\n    return obj;\n  },\n};\n\nconst baseTextNodeStyle: object = {};\n\nexport const TextNodeStyle = {\n  fromJSON(object: any): TextNodeStyle {\n    const message = { ...baseTextNodeStyle } as TextNodeStyle;\n    message.decorations = (object.decorations ?? []).map((e: any) =>\n      Decoration.fromJSON(e)\n    );\n    message.nodeStyle =\n      object.nodeStyle !== undefined && object.nodeStyle !== null\n        ? NodeStyle.fromJSON(object.nodeStyle)\n        : undefined;\n    message.lineHeight =\n      object.lineHeight !== undefined && object.lineHeight !== null\n        ? String(object.lineHeight)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: TextNodeStyle): unknown {\n    const obj: any = {};\n    if (message.decorations) {\n      obj.decorations = message.decorations.map((e) =>\n        e ? Decoration.toJSON(e) : undefined\n      );\n    } else {\n      obj.decorations = [];\n    }\n    message.nodeStyle !== undefined &&\n      (obj.nodeStyle = message.nodeStyle\n        ? NodeStyle.toJSON(message.nodeStyle)\n        : undefined);\n    message.lineHeight !== undefined && (obj.lineHeight = message.lineHeight);\n    return obj;\n  },\n};\n\nconst baseDocumentStyle: object = {};\n\nexport const DocumentStyle = {\n  fromJSON(object: any): DocumentStyle {\n    const message = { ...baseDocumentStyle } as DocumentStyle;\n    message.headerOne =\n      object.headerOne !== undefined && object.headerOne !== null\n        ? TextNodeStyle.fromJSON(object.headerOne)\n        : undefined;\n    message.headerTwo =\n      object.headerTwo !== undefined && object.headerTwo !== null\n        ? TextNodeStyle.fromJSON(object.headerTwo)\n        : undefined;\n    message.headerThree =\n      object.headerThree !== undefined && object.headerThree !== null\n        ? TextNodeStyle.fromJSON(object.headerThree)\n        : undefined;\n    message.headerFour =\n      object.headerFour !== undefined && object.headerFour !== null\n        ? TextNodeStyle.fromJSON(object.headerFour)\n        : undefined;\n    message.headerFive =\n      object.headerFive !== undefined && object.headerFive !== null\n        ? TextNodeStyle.fromJSON(object.headerFive)\n        : undefined;\n    message.headerSix =\n      object.headerSix !== undefined && object.headerSix !== null\n        ? TextNodeStyle.fromJSON(object.headerSix)\n        : undefined;\n    message.paragraph =\n      object.paragraph !== undefined && object.paragraph !== null\n        ? TextNodeStyle.fromJSON(object.paragraph)\n        : undefined;\n    message.blockquote =\n      object.blockquote !== undefined && object.blockquote !== null\n        ? TextNodeStyle.fromJSON(object.blockquote)\n        : undefined;\n    message.codeBlock =\n      object.codeBlock !== undefined && object.codeBlock !== null\n        ? TextNodeStyle.fromJSON(object.codeBlock)\n        : undefined;\n    return message;\n  },\n\n  toJSON(message: DocumentStyle): unknown {\n    const obj: any = {};\n    message.headerOne !== undefined &&\n      (obj.headerOne = message.headerOne\n        ? TextNodeStyle.toJSON(message.headerOne)\n        : undefined);\n    message.headerTwo !== undefined &&\n      (obj.headerTwo = message.headerTwo\n        ? TextNodeStyle.toJSON(message.headerTwo)\n        : undefined);\n    message.headerThree !== undefined &&\n      (obj.headerThree = message.headerThree\n        ? TextNodeStyle.toJSON(message.headerThree)\n        : undefined);\n    message.headerFour !== undefined &&\n      (obj.headerFour = message.headerFour\n        ? TextNodeStyle.toJSON(message.headerFour)\n        : undefined);\n    message.headerFive !== undefined &&\n      (obj.headerFive = message.headerFive\n        ? TextNodeStyle.toJSON(message.headerFive)\n        : undefined);\n    message.headerSix !== undefined &&\n      (obj.headerSix = message.headerSix\n        ? TextNodeStyle.toJSON(message.headerSix)\n        : undefined);\n    message.paragraph !== undefined &&\n      (obj.paragraph = message.paragraph\n        ? TextNodeStyle.toJSON(message.paragraph)\n        : undefined);\n    message.blockquote !== undefined &&\n      (obj.blockquote = message.blockquote\n        ? TextNodeStyle.toJSON(message.blockquote)\n        : undefined);\n    message.codeBlock !== undefined &&\n      (obj.codeBlock = message.codeBlock\n        ? TextNodeStyle.toJSON(message.codeBlock)\n        : undefined);\n    return obj;\n  },\n};\n\nfunction fromTimestamp(t: Timestamp): Date {\n  let millis = Number(t.seconds) * 1_000;\n  millis += t.nanos / 1_000_000;\n  return new Date(millis);\n}\n\nfunction fromJsonTimestamp(o: any): Date {\n  if (o instanceof Date) {\n    return o;\n  } else if (typeof o === \"string\") {\n    return new Date(o);\n  } else {\n    return fromTimestamp(Timestamp.fromJSON(o));\n  }\n}\n","export const LATEST_VERSION = 1;\nexport * from './common.enums.js';\nexport * from './common.js';\nexport * from './decoration_anchor.js';\nexport * from './decoration_color.js';\nexport * from './decoration_fontfamily.js';\nexport * from './decoration_fontsize.enums.js';\nexport * from './decoration_fontsize.js';\nexport * from './decoration_link.js';\nexport * from './decoration_mention.js';\nexport * from './decoration_spoiler.js';\nexport * from './node_blockquote.js';\nexport * from './node_caption.js';\nexport * from './node_card.enums.js';\nexport * from './node_card.js';\nexport * from './node_code_block.js';\nexport * from './node_heading.js';\nexport * from './node_layout.enums.js';\nexport * from './node_layout.js';\nexport * from './node_layout_cell.js';\nexport * from './node_list.js';\nexport * from './node_paragraph.js';\nexport * from './plugin_app_embed.enums.js';\nexport * from './plugin_app_embed.js';\nexport * from './plugin_audio.js';\nexport * from './plugin_button.enums.js';\nexport * from './plugin_button.js';\nexport * from './plugin_collapsible_list.enums.js';\nexport * from './plugin_collapsible_list.js';\nexport * from './plugin_divider.enums.js';\nexport * from './plugin_divider.js';\nexport * from './plugin_embed.js';\nexport * from './plugin_file.enums.js';\nexport * from './plugin_file.js';\nexport * from './plugin_gallery.enums.js';\nexport * from './plugin_gallery.js';\nexport * from './plugin_gif.enums.js';\nexport * from './plugin_gif.js';\nexport * from './plugin_html.enums.js';\nexport * from './plugin_html.js';\nexport * from './plugin_image.js';\nexport * from './plugin_link_preview.enums.js';\nexport * from './plugin_link_preview.js';\nexport * from './plugin_map.enums.js';\nexport * from './plugin_map.js';\nexport * from './plugin_poll.enums.js';\nexport * from './plugin_poll.js';\nexport * from './plugin_shape.js';\nexport * from './plugin_table.js';\nexport * from './plugin_table_cell.enums.js';\nexport * from './plugin_table_cell.js';\nexport * from './plugin_video.js';\nexport * from './rich_content.enums.js';\nexport * from './rich_content.js';\nexport * from './struct.enums.js';\nexport * from './struct.js';\n","// -------------------------------------------------------------------------------------\n// instances\n// -------------------------------------------------------------------------------------\n/**\n * @category instances\n * @since 2.10.0\n */\nexport const getBooleanAlgebra = (B) => () => ({\n    meet: (x, y) => (a) => B.meet(x(a), y(a)),\n    join: (x, y) => (a) => B.join(x(a), y(a)),\n    zero: () => B.zero,\n    one: () => B.one,\n    implies: (x, y) => (a) => B.implies(x(a), y(a)),\n    not: (x) => (a) => B.not(x(a))\n});\n/**\n * Unary functions form a semigroup as long as you can provide a semigroup for the codomain.\n *\n * @example\n * import { Predicate, getSemigroup } from 'fp-ts/function'\n * import * as B from 'fp-ts/boolean'\n *\n * const f: Predicate<number> = (n) => n <= 2\n * const g: Predicate<number> = (n) => n >= 0\n *\n * const S1 = getSemigroup(B.SemigroupAll)<number>()\n *\n * assert.deepStrictEqual(S1.concat(f, g)(1), true)\n * assert.deepStrictEqual(S1.concat(f, g)(3), false)\n *\n * const S2 = getSemigroup(B.SemigroupAny)<number>()\n *\n * assert.deepStrictEqual(S2.concat(f, g)(1), true)\n * assert.deepStrictEqual(S2.concat(f, g)(3), true)\n *\n * @category instances\n * @since 2.10.0\n */\nexport const getSemigroup = (S) => () => ({\n    concat: (f, g) => (a) => S.concat(f(a), g(a))\n});\n/**\n * Unary functions form a monoid as long as you can provide a monoid for the codomain.\n *\n * @example\n * import { Predicate } from 'fp-ts/Predicate'\n * import { getMonoid } from 'fp-ts/function'\n * import * as B from 'fp-ts/boolean'\n *\n * const f: Predicate<number> = (n) => n <= 2\n * const g: Predicate<number> = (n) => n >= 0\n *\n * const M1 = getMonoid(B.MonoidAll)<number>()\n *\n * assert.deepStrictEqual(M1.concat(f, g)(1), true)\n * assert.deepStrictEqual(M1.concat(f, g)(3), false)\n *\n * const M2 = getMonoid(B.MonoidAny)<number>()\n *\n * assert.deepStrictEqual(M2.concat(f, g)(1), true)\n * assert.deepStrictEqual(M2.concat(f, g)(3), true)\n *\n * @category instances\n * @since 2.10.0\n */\nexport const getMonoid = (M) => {\n    const getSemigroupM = getSemigroup(M);\n    return () => ({\n        concat: getSemigroupM().concat,\n        empty: () => M.empty\n    });\n};\n/**\n * @category instances\n * @since 2.10.0\n */\nexport const getSemiring = (S) => ({\n    add: (f, g) => (x) => S.add(f(x), g(x)),\n    zero: () => S.zero,\n    mul: (f, g) => (x) => S.mul(f(x), g(x)),\n    one: () => S.one\n});\n/**\n * @category instances\n * @since 2.10.0\n */\nexport const getRing = (R) => {\n    const S = getSemiring(R);\n    return {\n        add: S.add,\n        mul: S.mul,\n        one: S.one,\n        zero: S.zero,\n        sub: (f, g) => (x) => R.sub(f(x), g(x))\n    };\n};\n// -------------------------------------------------------------------------------------\n// utils\n// -------------------------------------------------------------------------------------\n/**\n * @since 2.11.0\n */\nexport const apply = (a) => (f) => f(a);\n/**\n * @since 2.0.0\n */\nexport function identity(a) {\n    return a;\n}\n/**\n * @since 2.0.0\n */\nexport const unsafeCoerce = identity;\n/**\n * @since 2.0.0\n */\nexport function constant(a) {\n    return () => a;\n}\n/**\n * A thunk that returns always `true`.\n *\n * @since 2.0.0\n */\nexport const constTrue = /*#__PURE__*/ constant(true);\n/**\n * A thunk that returns always `false`.\n *\n * @since 2.0.0\n */\nexport const constFalse = /*#__PURE__*/ constant(false);\n/**\n * A thunk that returns always `null`.\n *\n * @since 2.0.0\n */\nexport const constNull = /*#__PURE__*/ constant(null);\n/**\n * A thunk that returns always `undefined`.\n *\n * @since 2.0.0\n */\nexport const constUndefined = /*#__PURE__*/ constant(undefined);\n/**\n * A thunk that returns always `void`.\n *\n * @since 2.0.0\n */\nexport const constVoid = constUndefined;\nexport function flip(f) {\n    return (...args) => {\n        if (args.length > 1) {\n            return f(args[1], args[0]);\n        }\n        return (a) => f(a)(args[0]);\n    };\n}\nexport function flow(ab, bc, cd, de, ef, fg, gh, hi, ij) {\n    switch (arguments.length) {\n        case 1:\n            return ab;\n        case 2:\n            return function () {\n                return bc(ab.apply(this, arguments));\n            };\n        case 3:\n            return function () {\n                return cd(bc(ab.apply(this, arguments)));\n            };\n        case 4:\n            return function () {\n                return de(cd(bc(ab.apply(this, arguments))));\n            };\n        case 5:\n            return function () {\n                return ef(de(cd(bc(ab.apply(this, arguments)))));\n            };\n        case 6:\n            return function () {\n                return fg(ef(de(cd(bc(ab.apply(this, arguments))))));\n            };\n        case 7:\n            return function () {\n                return gh(fg(ef(de(cd(bc(ab.apply(this, arguments)))))));\n            };\n        case 8:\n            return function () {\n                return hi(gh(fg(ef(de(cd(bc(ab.apply(this, arguments))))))));\n            };\n        case 9:\n            return function () {\n                return ij(hi(gh(fg(ef(de(cd(bc(ab.apply(this, arguments)))))))));\n            };\n    }\n    return;\n}\n/**\n * @since 2.0.0\n */\nexport function tuple(...t) {\n    return t;\n}\n/**\n * @since 2.0.0\n */\nexport function increment(n) {\n    return n + 1;\n}\n/**\n * @since 2.0.0\n */\nexport function decrement(n) {\n    return n - 1;\n}\n/**\n * @since 2.0.0\n */\nexport function absurd(_) {\n    throw new Error('Called `absurd` function which should be uncallable');\n}\n/**\n * Creates a tupled version of this function: instead of `n` arguments, it accepts a single tuple argument.\n *\n * @example\n * import { tupled } from 'fp-ts/function'\n *\n * const add = tupled((x: number, y: number): number => x + y)\n *\n * assert.strictEqual(add([1, 2]), 3)\n *\n * @since 2.4.0\n */\nexport function tupled(f) {\n    return (a) => f(...a);\n}\n/**\n * Inverse function of `tupled`\n *\n * @since 2.4.0\n */\nexport function untupled(f) {\n    return (...a) => f(a);\n}\nexport function pipe(a, ab, bc, cd, de, ef, fg, gh, hi) {\n    switch (arguments.length) {\n        case 1:\n            return a;\n        case 2:\n            return ab(a);\n        case 3:\n            return bc(ab(a));\n        case 4:\n            return cd(bc(ab(a)));\n        case 5:\n            return de(cd(bc(ab(a))));\n        case 6:\n            return ef(de(cd(bc(ab(a)))));\n        case 7:\n            return fg(ef(de(cd(bc(ab(a))))));\n        case 8:\n            return gh(fg(ef(de(cd(bc(ab(a)))))));\n        case 9:\n            return hi(gh(fg(ef(de(cd(bc(ab(a))))))));\n        default: {\n            let ret = arguments[0];\n            for (let i = 1; i < arguments.length; i++) {\n                ret = arguments[i](ret);\n            }\n            return ret;\n        }\n    }\n}\n/**\n * Type hole simulation\n *\n * @since 2.7.0\n */\nexport const hole = absurd;\n/**\n * @since 2.11.0\n */\nexport const SK = (_, b) => b;\n/**\n * Use `Predicate` module instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport function not(predicate) {\n    return (a) => !predicate(a);\n}\n/**\n * Use `Endomorphism` module instead.\n *\n * @category zone of death\n * @since 2.10.0\n * @deprecated\n */\nexport const getEndomorphismMonoid = () => ({\n    concat: (first, second) => flow(first, second),\n    empty: identity\n});\n/** @internal */\nexport const dual = (arity, body) => {\n    const isDataFirst = typeof arity === 'number' ? (args) => args.length >= arity : arity;\n    return function () {\n        const args = Array.from(arguments);\n        if (isDataFirst(arguments)) {\n            return body.apply(this, args);\n        }\n        return (self) => body(self, ...args);\n    };\n};\n","import { dual } from './function.js';\n// -------------------------------------------------------------------------------------\n// Option\n// -------------------------------------------------------------------------------------\n/** @internal */\nexport const isNone = (fa) => fa._tag === 'None';\n/** @internal */\nexport const isSome = (fa) => fa._tag === 'Some';\n/** @internal */\nexport const none = { _tag: 'None' };\n/** @internal */\nexport const some = (a) => ({ _tag: 'Some', value: a });\n// -------------------------------------------------------------------------------------\n// Either\n// -------------------------------------------------------------------------------------\n/** @internal */\nexport const isLeft = (ma) => ma._tag === 'Left';\n/** @internal */\nexport const isRight = (ma) => ma._tag === 'Right';\n/** @internal */\nexport const left = (e) => ({ _tag: 'Left', left: e });\n/** @internal */\nexport const right = (a) => ({ _tag: 'Right', right: a });\n// -------------------------------------------------------------------------------------\n// ReadonlyNonEmptyArray\n// -------------------------------------------------------------------------------------\n/** @internal */\nexport const singleton = (a) => [a];\n/** @internal */\nexport const isNonEmpty = (as) => as.length > 0;\n/** @internal */\nexport const head = (as) => as[0];\n/** @internal */\nexport const tail = (as) => as.slice(1);\n// -------------------------------------------------------------------------------------\n// empty\n// -------------------------------------------------------------------------------------\n/** @internal */\nexport const emptyReadonlyArray = [];\n/** @internal */\nexport const emptyRecord = {};\n// -------------------------------------------------------------------------------------\n// Record\n// -------------------------------------------------------------------------------------\n/** @internal */\nexport const has = Object.prototype.hasOwnProperty;\n// -------------------------------------------------------------------------------------\n// NonEmptyArray\n// -------------------------------------------------------------------------------------\n/** @internal */\nexport const fromReadonlyNonEmptyArray = (as) => [as[0], ...as.slice(1)];\n/** @internal */\nexport const liftNullable = (F) => (f, onNullable) => (...a) => {\n    const o = f(...a);\n    return F.fromEither(o == null ? left(onNullable(...a)) : right(o));\n};\n/** @internal */\nexport const liftOption = (F) => (f, onNone) => (...a) => {\n    const o = f(...a);\n    return F.fromEither(isNone(o) ? left(onNone(...a)) : right(o.value));\n};\n/** @internal */\nexport const flatMapNullable = (F, M) => {\n    return /*#__PURE__*/ dual(3, (self, f, onNullable) => M.flatMap(self, liftNullable(F)(f, onNullable)));\n};\n/** @internal */\nexport const flatMapOption = (F, M) => {\n    return /*#__PURE__*/ dual(3, (self, f, onNone) => M.flatMap(self, liftOption(F)(f, onNone)));\n};\n/** @internal */\nexport const flatMapEither = (F, M) => {\n    return /*#__PURE__*/ dual(2, (self, f) => M.flatMap(self, (a) => F.fromEither(f(a))));\n};\n/** @internal */\nexport const flatMapIO = (F, M) => {\n    return /*#__PURE__*/ dual(2, (self, f) => M.flatMap(self, (a) => F.fromIO(f(a))));\n};\n/** @internal */\nexport const flatMapTask = (F, M) => {\n    return /*#__PURE__*/ dual(2, (self, f) => M.flatMap(self, (a) => F.fromTask(f(a))));\n};\n/** @internal */\nexport const flatMapReader = (F, M) => {\n    return /*#__PURE__*/ dual(2, (self, f) => M.flatMap(self, (a) => F.fromReader(f(a))));\n};\n","/**\n * The `Apply` class provides the `ap` which is used to apply a function to an argument under a type constructor.\n *\n * `Apply` can be used to lift functions of two or more arguments to work on values wrapped with the type constructor\n * `f`.\n *\n * Instances must satisfy the following law in addition to the `Functor` laws:\n *\n * 1. Associative composition: `F.ap(F.ap(F.map(fbc, bc => ab => a => bc(ab(a))), fab), fa) <-> F.ap(fbc, F.ap(fab, fa))`\n *\n * Formally, `Apply` represents a strong lax semi-monoidal endofunctor.\n *\n * @example\n * import * as O from 'fp-ts/Option'\n * import { pipe } from 'fp-ts/function'\n *\n * const f = (a: string) => (b: number) => (c: boolean) => a + String(b) + String(c)\n * const fa: O.Option<string> = O.some('s')\n * const fb: O.Option<number> = O.some(1)\n * const fc: O.Option<boolean> = O.some(true)\n *\n * assert.deepStrictEqual(\n *   pipe(\n *     // lift a function\n *     O.some(f),\n *     // apply the first argument\n *     O.ap(fa),\n *     // apply the second argument\n *     O.ap(fb),\n *     // apply the third argument\n *     O.ap(fc)\n *   ),\n *   O.some('s1true')\n * )\n *\n * @since 2.0.0\n */\nimport { tuple } from './function.js';\nimport * as _ from './internal.js';\nexport function ap(F, G) {\n    return (fa) => (fab) => F.ap(F.map(fab, (gab) => (ga) => G.ap(gab, ga)), fa);\n}\nexport function apFirst(A) {\n    return (second) => (first) => A.ap(A.map(first, (a) => () => a), second);\n}\nexport function apSecond(A) {\n    return (second) => (first) => A.ap(A.map(first, () => (b) => b), second);\n}\nexport function apS(F) {\n    return (name, fb) => (fa) => F.ap(F.map(fa, (a) => (b) => Object.assign({}, a, { [name]: b })), fb);\n}\nexport function getApplySemigroup(F) {\n    return (S) => ({\n        concat: (first, second) => F.ap(F.map(first, (x) => (y) => S.concat(x, y)), second)\n    });\n}\nfunction curried(f, n, acc) {\n    return function (x) {\n        const combined = Array(acc.length + 1);\n        for (let i = 0; i < acc.length; i++) {\n            combined[i] = acc[i];\n        }\n        combined[acc.length] = x;\n        return n === 0 ? f.apply(null, combined) : curried(f, n - 1, combined);\n    };\n}\nconst tupleConstructors = {\n    1: (a) => [a],\n    2: (a) => (b) => [a, b],\n    3: (a) => (b) => (c) => [a, b, c],\n    4: (a) => (b) => (c) => (d) => [a, b, c, d],\n    5: (a) => (b) => (c) => (d) => (e) => [a, b, c, d, e]\n};\nfunction getTupleConstructor(len) {\n    if (!_.has.call(tupleConstructors, len)) {\n        tupleConstructors[len] = curried(tuple, len - 1, []);\n    }\n    return tupleConstructors[len];\n}\nexport function sequenceT(F) {\n    return (...args) => {\n        const len = args.length;\n        const f = getTupleConstructor(len);\n        let fas = F.map(args[0], f);\n        for (let i = 1; i < len; i++) {\n            fas = F.ap(fas, args[i]);\n        }\n        return fas;\n    };\n}\nfunction getRecordConstructor(keys) {\n    const len = keys.length;\n    switch (len) {\n        case 1:\n            return (a) => ({ [keys[0]]: a });\n        case 2:\n            return (a) => (b) => ({ [keys[0]]: a, [keys[1]]: b });\n        case 3:\n            return (a) => (b) => (c) => ({ [keys[0]]: a, [keys[1]]: b, [keys[2]]: c });\n        case 4:\n            return (a) => (b) => (c) => (d) => ({\n                [keys[0]]: a,\n                [keys[1]]: b,\n                [keys[2]]: c,\n                [keys[3]]: d\n            });\n        case 5:\n            return (a) => (b) => (c) => (d) => (e) => ({\n                [keys[0]]: a,\n                [keys[1]]: b,\n                [keys[2]]: c,\n                [keys[3]]: d,\n                [keys[4]]: e\n            });\n        default:\n            return curried((...args) => {\n                const r = {};\n                for (let i = 0; i < len; i++) {\n                    r[keys[i]] = args[i];\n                }\n                return r;\n            }, len - 1, []);\n    }\n}\nexport function sequenceS(F) {\n    return (r) => {\n        const keys = Object.keys(r);\n        const len = keys.length;\n        const f = getRecordConstructor(keys);\n        let fr = F.map(r[keys[0]], f);\n        for (let i = 1; i < len; i++) {\n            fr = F.ap(fr, r[keys[i]]);\n        }\n        return fr;\n    };\n}\n","export function chainFirst(M) {\n    const tapM = tap(M);\n    return (f) => (first) => tapM(first, f);\n}\n/** @internal */\nexport function tap(M) {\n    return (first, f) => M.chain(first, (a) => M.map(f(a), () => a));\n}\nexport function bind(M) {\n    return (name, f) => (ma) => M.chain(ma, (a) => M.map(f(a), (b) => Object.assign({}, a, { [name]: b })));\n}\n","/**\n * The `FromEither` type class represents those data types which support errors.\n *\n * @since 2.10.0\n */\nimport { tap } from './Chain.js';\nimport { flow } from './function.js';\nimport * as _ from './internal.js';\nexport function fromOption(F) {\n    return (onNone) => (ma) => F.fromEither(_.isNone(ma) ? _.left(onNone()) : _.right(ma.value));\n}\nexport function fromPredicate(F) {\n    return (predicate, onFalse) => (a) => F.fromEither(predicate(a) ? _.right(a) : _.left(onFalse(a)));\n}\nexport function fromOptionK(F) {\n    const fromOptionF = fromOption(F);\n    return (onNone) => {\n        const from = fromOptionF(onNone);\n        return (f) => flow(f, from);\n    };\n}\nexport function chainOptionK(F, M) {\n    const fromOptionKF = fromOptionK(F);\n    return (onNone) => {\n        const from = fromOptionKF(onNone);\n        return (f) => (ma) => M.chain(ma, from(f));\n    };\n}\nexport function fromEitherK(F) {\n    return (f) => flow(f, F.fromEither);\n}\nexport function chainEitherK(F, M) {\n    const fromEitherKF = fromEitherK(F);\n    return (f) => (ma) => M.chain(ma, fromEitherKF(f));\n}\nexport function chainFirstEitherK(F, M) {\n    const tapEitherM = tapEither(F, M);\n    return (f) => (ma) => tapEitherM(ma, f);\n}\nexport function filterOrElse(F, M) {\n    return (predicate, onFalse) => (ma) => M.chain(ma, (a) => F.fromEither(predicate(a) ? _.right(a) : _.left(onFalse(a))));\n}\n/** @internal */\nexport function tapEither(F, M) {\n    const fromEither = fromEitherK(F);\n    const tapM = tap(M);\n    return (self, f) => tapM(self, fromEither(f));\n}\n","/**\n * A `Functor` is a type constructor which supports a mapping operation `map`.\n *\n * `map` can be used to turn functions `a -> b` into functions `f a -> f b` whose argument and return types use the type\n * constructor `f` to represent some computational context.\n *\n * Instances must satisfy the following laws:\n *\n * 1. Identity: `F.map(fa, a => a) <-> fa`\n * 2. Composition: `F.map(fa, a => bc(ab(a))) <-> F.map(F.map(fa, ab), bc)`\n *\n * @since 2.0.0\n */\nimport { pipe } from './function.js';\nexport function map(F, G) {\n    return (f) => (fa) => F.map(fa, (ga) => G.map(ga, f));\n}\nexport function flap(F) {\n    return (a) => (fab) => F.map(fab, (f) => f(a));\n}\nexport function bindTo(F) {\n    return (name) => (fa) => F.map(fa, (a) => ({ [name]: a }));\n}\nfunction let_(F) {\n    return (name, f) => (fa) => F.map(fa, (a) => Object.assign({}, a, { [name]: f(a) }));\n}\nexport { \n/**\n * @since 2.13.0\n */\nlet_ as let };\n/** @deprecated */\nexport function getFunctorComposition(F, G) {\n    const _map = map(F, G);\n    return {\n        map: (fga, f) => pipe(fga, _map(f))\n    };\n}\n/** @internal */\nexport function as(F) {\n    return (self, b) => F.map(self, () => b);\n}\n/** @internal */\nexport function asUnit(F) {\n    const asM = as(F);\n    return (self) => asM(self, undefined);\n}\n","import { pipe } from './function.js';\n// -------------------------------------------------------------------------------------\n// constructors\n// -------------------------------------------------------------------------------------\n/**\n * @category constructors\n * @since 2.0.0\n */\nexport const fromEquals = (equals) => ({\n    equals: (x, y) => x === y || equals(x, y)\n});\n// -------------------------------------------------------------------------------------\n// combinators\n// -------------------------------------------------------------------------------------\n/**\n * @since 2.10.0\n */\nexport const struct = (eqs) => fromEquals((first, second) => {\n    for (const key in eqs) {\n        if (!eqs[key].equals(first[key], second[key])) {\n            return false;\n        }\n    }\n    return true;\n});\n/**\n * Given a tuple of `Eq`s returns a `Eq` for the tuple\n *\n * @example\n * import { tuple } from 'fp-ts/Eq'\n * import * as S from 'fp-ts/string'\n * import * as N from 'fp-ts/number'\n * import * as B from 'fp-ts/boolean'\n *\n * const E = tuple(S.Eq, N.Eq, B.Eq)\n * assert.strictEqual(E.equals(['a', 1, true], ['a', 1, true]), true)\n * assert.strictEqual(E.equals(['a', 1, true], ['b', 1, true]), false)\n * assert.strictEqual(E.equals(['a', 1, true], ['a', 2, true]), false)\n * assert.strictEqual(E.equals(['a', 1, true], ['a', 1, false]), false)\n *\n * @since 2.10.0\n */\nexport const tuple = (...eqs) => fromEquals((first, second) => eqs.every((E, i) => E.equals(first[i], second[i])));\n/* istanbul ignore next */\nconst contramap_ = (fa, f) => pipe(fa, contramap(f));\n/**\n * A typical use case for `contramap` would be like, given some `User` type, to construct an `Eq<User>`.\n *\n * We can do so with a function from `User -> X` where `X` is some value that we know how to compare\n * for equality (meaning we have an `Eq<X>`)\n *\n * For example, given the following `User` type, we want to construct an `Eq<User>` that just looks at the `key` field\n * for each user (since it's known to be unique).\n *\n * If we have a way of comparing `UUID`s for equality (`eqUUID: Eq<UUID>`) and we know how to go from `User -> UUID`,\n * using `contramap` we can do this\n *\n * @example\n * import { contramap, Eq } from 'fp-ts/Eq'\n * import { pipe } from 'fp-ts/function'\n * import * as S from 'fp-ts/string'\n *\n * type UUID = string\n *\n * interface User {\n *   readonly key: UUID\n *   readonly firstName: string\n *   readonly lastName: string\n * }\n *\n * const eqUUID: Eq<UUID> = S.Eq\n *\n * const eqUserByKey: Eq<User> = pipe(\n *   eqUUID,\n *   contramap((user) => user.key)\n * )\n *\n * assert.deepStrictEqual(\n *   eqUserByKey.equals(\n *     { key: 'k1', firstName: 'a1', lastName: 'b1' },\n *     { key: 'k2', firstName: 'a1', lastName: 'b1' }\n *   ),\n *   false\n * )\n * assert.deepStrictEqual(\n *   eqUserByKey.equals(\n *     { key: 'k1', firstName: 'a1', lastName: 'b1' },\n *     { key: 'k1', firstName: 'a2', lastName: 'b1' }\n *   ),\n *   true\n * )\n *\n * @since 2.0.0\n */\nexport const contramap = (f) => (fa) => fromEquals((x, y) => fa.equals(f(x), f(y)));\n/**\n * @category type lambdas\n * @since 2.0.0\n */\nexport const URI = 'Eq';\n/**\n * @category instances\n * @since 2.5.0\n */\nexport const eqStrict = {\n    equals: (a, b) => a === b\n};\nconst empty = {\n    equals: () => true\n};\n/**\n * @category instances\n * @since 2.10.0\n */\nexport const getSemigroup = () => ({\n    concat: (x, y) => fromEquals((a, b) => x.equals(a, b) && y.equals(a, b))\n});\n/**\n * @category instances\n * @since 2.6.0\n */\nexport const getMonoid = () => ({\n    concat: getSemigroup().concat,\n    empty\n});\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Contravariant = {\n    URI,\n    contramap: contramap_\n};\n// -------------------------------------------------------------------------------------\n// deprecated\n// -------------------------------------------------------------------------------------\n/**\n * Use [`tuple`](#tuple) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const getTupleEq = tuple;\n/**\n * Use [`struct`](#struct) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const getStructEq = struct;\n/**\n * Use [`eqStrict`](#eqstrict) instead\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const strictEqual = eqStrict.equals;\n/**\n * This instance is deprecated, use small, specific instances instead.\n * For example if a function needs a `Contravariant` instance, pass `E.Contravariant` instead of `E.eq`\n * (where `E` is from `import E from 'fp-ts/Eq'`)\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const eq = Contravariant;\n/**\n * Use [`Eq`](./boolean.ts.html#eq) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const eqBoolean = eqStrict;\n/**\n * Use [`Eq`](./string.ts.html#eq) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const eqString = eqStrict;\n/**\n * Use [`Eq`](./number.ts.html#eq) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const eqNumber = eqStrict;\n/**\n * Use [`Eq`](./Date.ts.html#eq) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const eqDate = {\n    equals: (first, second) => first.valueOf() === second.valueOf()\n};\n","import { eqStrict } from './Eq.js';\nimport { constant, constTrue, pipe } from './function.js';\n// -------------------------------------------------------------------------------------\n// defaults\n// -------------------------------------------------------------------------------------\n/**\n * @category defaults\n * @since 2.10.0\n */\nexport const equalsDefault = (compare) => (first, second) => first === second || compare(first, second) === 0;\n// -------------------------------------------------------------------------------------\n// constructors\n// -------------------------------------------------------------------------------------\n/**\n * @category constructors\n * @since 2.0.0\n */\nexport const fromCompare = (compare) => ({\n    equals: equalsDefault(compare),\n    compare: (first, second) => (first === second ? 0 : compare(first, second))\n});\n// -------------------------------------------------------------------------------------\n// combinators\n// -------------------------------------------------------------------------------------\n/**\n * Given a tuple of `Ord`s returns an `Ord` for the tuple.\n *\n * @example\n * import { tuple } from 'fp-ts/Ord'\n * import * as B from 'fp-ts/boolean'\n * import * as S from 'fp-ts/string'\n * import * as N from 'fp-ts/number'\n *\n * const O = tuple(S.Ord, N.Ord, B.Ord)\n * assert.strictEqual(O.compare(['a', 1, true], ['b', 2, true]), -1)\n * assert.strictEqual(O.compare(['a', 1, true], ['a', 2, true]), -1)\n * assert.strictEqual(O.compare(['a', 1, true], ['a', 1, false]), 1)\n *\n * @since 2.10.0\n */\nexport const tuple = (...ords) => fromCompare((first, second) => {\n    let i = 0;\n    for (; i < ords.length - 1; i++) {\n        const r = ords[i].compare(first[i], second[i]);\n        if (r !== 0) {\n            return r;\n        }\n    }\n    return ords[i].compare(first[i], second[i]);\n});\n/**\n * @since 2.10.0\n */\nexport const reverse = (O) => fromCompare((first, second) => O.compare(second, first));\n/* istanbul ignore next */\nconst contramap_ = (fa, f) => pipe(fa, contramap(f));\n/**\n * A typical use case for `contramap` would be like, given some `User` type, to construct an `Ord<User>`.\n *\n * We can do so with a function from `User -> X` where `X` is some value that we know how to compare\n * for ordering (meaning we have an `Ord<X>`)\n *\n * For example, given the following `User` type, there are lots of possible choices for `X`,\n * but let's say we want to sort a list of users by `lastName`.\n *\n * If we have a way of comparing `lastName`s for ordering (`ordLastName: Ord<string>`) and we know how to go from `User -> string`,\n * using `contramap` we can do this\n *\n * @example\n * import { pipe } from 'fp-ts/function'\n * import { contramap, Ord } from 'fp-ts/Ord'\n * import * as RA from 'fp-ts/ReadonlyArray'\n * import * as S from 'fp-ts/string'\n *\n * interface User {\n *   readonly firstName: string\n *   readonly lastName: string\n * }\n *\n * const ordLastName: Ord<string> = S.Ord\n *\n * const ordByLastName: Ord<User> = pipe(\n *   ordLastName,\n *   contramap((user) => user.lastName)\n * )\n *\n * assert.deepStrictEqual(\n *   RA.sort(ordByLastName)([\n *     { firstName: 'a', lastName: 'd' },\n *     { firstName: 'c', lastName: 'b' }\n *   ]),\n *   [\n *     { firstName: 'c', lastName: 'b' },\n *     { firstName: 'a', lastName: 'd' }\n *   ]\n * )\n *\n * @since 2.0.0\n */\nexport const contramap = (f) => (fa) => fromCompare((first, second) => fa.compare(f(first), f(second)));\n/**\n * @category type lambdas\n * @since 2.0.0\n */\nexport const URI = 'Ord';\n/**\n * A typical use case for the `Semigroup` instance of `Ord` is merging two or more orderings.\n *\n * For example the following snippet builds an `Ord` for a type `User` which\n * sorts by `created` date descending, and **then** `lastName`\n *\n * @example\n * import * as D from 'fp-ts/Date'\n * import { pipe } from 'fp-ts/function'\n * import { contramap, getSemigroup, Ord, reverse } from 'fp-ts/Ord'\n * import * as RA from 'fp-ts/ReadonlyArray'\n * import * as S from 'fp-ts/string'\n *\n * interface User {\n *   readonly id: string\n *   readonly lastName: string\n *   readonly created: Date\n * }\n *\n * const ordByLastName: Ord<User> = pipe(\n *   S.Ord,\n *   contramap((user) => user.lastName)\n * )\n *\n * const ordByCreated: Ord<User> = pipe(\n *   D.Ord,\n *   contramap((user) => user.created)\n * )\n *\n * const ordUserByCreatedDescThenLastName = getSemigroup<User>().concat(\n *   reverse(ordByCreated),\n *   ordByLastName\n * )\n *\n * assert.deepStrictEqual(\n *   RA.sort(ordUserByCreatedDescThenLastName)([\n *     { id: 'c', lastName: 'd', created: new Date(1973, 10, 30) },\n *     { id: 'a', lastName: 'b', created: new Date(1973, 10, 30) },\n *     { id: 'e', lastName: 'f', created: new Date(1980, 10, 30) }\n *   ]),\n *   [\n *     { id: 'e', lastName: 'f', created: new Date(1980, 10, 30) },\n *     { id: 'a', lastName: 'b', created: new Date(1973, 10, 30) },\n *     { id: 'c', lastName: 'd', created: new Date(1973, 10, 30) }\n *   ]\n * )\n *\n * @category instances\n * @since 2.0.0\n */\nexport const getSemigroup = () => ({\n    concat: (first, second) => fromCompare((a, b) => {\n        const ox = first.compare(a, b);\n        return ox !== 0 ? ox : second.compare(a, b);\n    })\n});\n/**\n * Returns a `Monoid` such that:\n *\n * - its `concat(ord1, ord2)` operation will order first by `ord1`, and then by `ord2`\n * - its `empty` value is an `Ord` that always considers compared elements equal\n *\n * @example\n * import { sort } from 'fp-ts/Array'\n * import { contramap, reverse, getMonoid } from 'fp-ts/Ord'\n * import * as S from 'fp-ts/string'\n * import * as B from 'fp-ts/boolean'\n * import { pipe } from 'fp-ts/function'\n * import { concatAll } from 'fp-ts/Monoid'\n * import * as N from 'fp-ts/number'\n *\n * interface User {\n *   readonly id: number\n *   readonly name: string\n *   readonly age: number\n *   readonly rememberMe: boolean\n * }\n *\n * const byName = pipe(\n *   S.Ord,\n *   contramap((p: User) => p.name)\n * )\n *\n * const byAge = pipe(\n *   N.Ord,\n *   contramap((p: User) => p.age)\n * )\n *\n * const byRememberMe = pipe(\n *   B.Ord,\n *   contramap((p: User) => p.rememberMe)\n * )\n *\n * const M = getMonoid<User>()\n *\n * const users: Array<User> = [\n *   { id: 1, name: 'Guido', age: 47, rememberMe: false },\n *   { id: 2, name: 'Guido', age: 46, rememberMe: true },\n *   { id: 3, name: 'Giulio', age: 44, rememberMe: false },\n *   { id: 4, name: 'Giulio', age: 44, rememberMe: true }\n * ]\n *\n * // sort by name, then by age, then by `rememberMe`\n * const O1 = concatAll(M)([byName, byAge, byRememberMe])\n * assert.deepStrictEqual(sort(O1)(users), [\n *   { id: 3, name: 'Giulio', age: 44, rememberMe: false },\n *   { id: 4, name: 'Giulio', age: 44, rememberMe: true },\n *   { id: 2, name: 'Guido', age: 46, rememberMe: true },\n *   { id: 1, name: 'Guido', age: 47, rememberMe: false }\n * ])\n *\n * // now `rememberMe = true` first, then by name, then by age\n * const O2 = concatAll(M)([reverse(byRememberMe), byName, byAge])\n * assert.deepStrictEqual(sort(O2)(users), [\n *   { id: 4, name: 'Giulio', age: 44, rememberMe: true },\n *   { id: 2, name: 'Guido', age: 46, rememberMe: true },\n *   { id: 3, name: 'Giulio', age: 44, rememberMe: false },\n *   { id: 1, name: 'Guido', age: 47, rememberMe: false }\n * ])\n *\n * @category instances\n * @since 2.4.0\n */\nexport const getMonoid = () => ({\n    concat: getSemigroup().concat,\n    empty: fromCompare(() => 0)\n});\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Contravariant = {\n    URI,\n    contramap: contramap_\n};\n// -------------------------------------------------------------------------------------\n// utils\n// -------------------------------------------------------------------------------------\n/**\n * @since 2.11.0\n */\nexport const trivial = {\n    equals: constTrue,\n    compare: /*#__PURE__*/ constant(0)\n};\n/**\n * @since 2.11.0\n */\nexport const equals = (O) => (second) => (first) => first === second || O.compare(first, second) === 0;\n// TODO: curry in v3\n/**\n * Test whether one value is _strictly less than_ another\n *\n * @since 2.0.0\n */\nexport const lt = (O) => (first, second) => O.compare(first, second) === -1;\n// TODO: curry in v3\n/**\n * Test whether one value is _strictly greater than_ another\n *\n * @since 2.0.0\n */\nexport const gt = (O) => (first, second) => O.compare(first, second) === 1;\n// TODO: curry in v3\n/**\n * Test whether one value is _non-strictly less than_ another\n *\n * @since 2.0.0\n */\nexport const leq = (O) => (first, second) => O.compare(first, second) !== 1;\n// TODO: curry in v3\n/**\n * Test whether one value is _non-strictly greater than_ another\n *\n * @since 2.0.0\n */\nexport const geq = (O) => (first, second) => O.compare(first, second) !== -1;\n// TODO: curry in v3\n/**\n * Take the minimum of two values. If they are considered equal, the first argument is chosen\n *\n * @since 2.0.0\n */\nexport const min = (O) => (first, second) => first === second || O.compare(first, second) < 1 ? first : second;\n// TODO: curry in v3\n/**\n * Take the maximum of two values. If they are considered equal, the first argument is chosen\n *\n * @since 2.0.0\n */\nexport const max = (O) => (first, second) => first === second || O.compare(first, second) > -1 ? first : second;\n/**\n * Clamp a value between a minimum and a maximum\n *\n * @since 2.0.0\n */\nexport const clamp = (O) => {\n    const minO = min(O);\n    const maxO = max(O);\n    return (low, hi) => (a) => maxO(minO(a, hi), low);\n};\n/**\n * Test whether a value is between a minimum and a maximum (inclusive)\n *\n * @since 2.0.0\n */\nexport const between = (O) => {\n    const ltO = lt(O);\n    const gtO = gt(O);\n    return (low, hi) => (a) => ltO(a, low) || gtO(a, hi) ? false : true;\n};\n// -------------------------------------------------------------------------------------\n// deprecated\n// -------------------------------------------------------------------------------------\n/**\n * Use [`tuple`](#tuple) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const getTupleOrd = tuple;\n/**\n * Use [`reverse`](#reverse) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const getDualOrd = reverse;\n/**\n * Use [`Contravariant`](#contravariant) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const ord = Contravariant;\n// default compare for primitive types\nfunction compare(first, second) {\n    return first < second ? -1 : first > second ? 1 : 0;\n}\nconst strictOrd = {\n    equals: eqStrict.equals,\n    compare\n};\n/**\n * Use [`Ord`](./boolean.ts.html#ord) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const ordBoolean = strictOrd;\n/**\n * Use [`Ord`](./string.ts.html#ord) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const ordString = strictOrd;\n/**\n * Use [`Ord`](./number.ts.html#ord) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const ordNumber = strictOrd;\n/**\n * Use [`Ord`](./Date.ts.html#ord) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const ordDate = /*#__PURE__*/ pipe(ordNumber, \n/*#__PURE__*/\ncontramap((date) => date.valueOf()));\n","/**\n * A `Magma` is a pair `(A, concat)` in which `A` is a non-empty set and `concat` is a binary operation on `A`\n *\n * See [Semigroup](https://gcanti.github.io/fp-ts/modules/Semigroup.ts.html) for some instances.\n *\n * @since 2.0.0\n */\n// -------------------------------------------------------------------------------------\n// combinators\n// -------------------------------------------------------------------------------------\n/**\n * The dual of a `Magma`, obtained by swapping the arguments of `concat`.\n *\n * @example\n * import { reverse, concatAll } from 'fp-ts/Magma'\n * import * as N from 'fp-ts/number'\n *\n * const subAll = concatAll(reverse(N.MagmaSub))(0)\n *\n * assert.deepStrictEqual(subAll([1, 2, 3]), 2)\n *\n * @since 2.11.0\n */\nexport const reverse = (M) => ({\n    concat: (first, second) => M.concat(second, first)\n});\n/**\n * @since 2.11.0\n */\nexport const filterFirst = (predicate) => (M) => ({\n    concat: (first, second) => (predicate(first) ? M.concat(first, second) : second)\n});\n/**\n * @since 2.11.0\n */\nexport const filterSecond = (predicate) => (M) => ({\n    concat: (first, second) => (predicate(second) ? M.concat(first, second) : first)\n});\n/**\n * @since 2.11.0\n */\nexport const endo = (f) => (M) => ({\n    concat: (first, second) => M.concat(f(first), f(second))\n});\n// -------------------------------------------------------------------------------------\n// utils\n// -------------------------------------------------------------------------------------\n/**\n * Given a sequence of `as`, concat them and return the total.\n *\n * If `as` is empty, return the provided `startWith` value.\n *\n * @example\n * import { concatAll } from 'fp-ts/Magma'\n * import * as N from 'fp-ts/number'\n *\n * const subAll = concatAll(N.MagmaSub)(0)\n *\n * assert.deepStrictEqual(subAll([1, 2, 3]), -6)\n *\n * @since 2.11.0\n */\nexport const concatAll = (M) => (startWith) => (as) => as.reduce((a, acc) => M.concat(a, acc), startWith);\n","/**\n * If a type `A` can form a `Semigroup` it has an **associative** binary operation.\n *\n * ```ts\n * interface Semigroup<A> {\n *   readonly concat: (x: A, y: A) => A\n * }\n * ```\n *\n * Associativity means the following equality must hold for any choice of `x`, `y`, and `z`.\n *\n * ```ts\n * concat(x, concat(y, z)) = concat(concat(x, y), z)\n * ```\n *\n * A common example of a semigroup is the type `string` with the operation `+`.\n *\n * ```ts\n * import { Semigroup } from 'fp-ts/Semigroup'\n *\n * const semigroupString: Semigroup<string> = {\n *   concat: (x, y) => x + y\n * }\n *\n * const x = 'x'\n * const y = 'y'\n * const z = 'z'\n *\n * semigroupString.concat(x, y) // 'xy'\n *\n * semigroupString.concat(x, semigroupString.concat(y, z)) // 'xyz'\n *\n * semigroupString.concat(semigroupString.concat(x, y), z) // 'xyz'\n * ```\n *\n * *Adapted from https://typelevel.org/cats*\n *\n * @since 2.0.0\n */\nimport { getSemigroup, identity } from './function.js';\nimport * as _ from './internal.js';\nimport * as M from './Magma.js';\nimport * as Or from './Ord.js';\n// -------------------------------------------------------------------------------------\n// constructors\n// -------------------------------------------------------------------------------------\n/**\n * Get a semigroup where `concat` will return the minimum, based on the provided order.\n *\n * @example\n * import * as N from 'fp-ts/number'\n * import * as S from 'fp-ts/Semigroup'\n *\n * const S1 = S.min(N.Ord)\n *\n * assert.deepStrictEqual(S1.concat(1, 2), 1)\n *\n * @category constructors\n * @since 2.10.0\n */\nexport const min = (O) => ({\n    concat: Or.min(O)\n});\n/**\n * Get a semigroup where `concat` will return the maximum, based on the provided order.\n *\n * @example\n * import * as N from 'fp-ts/number'\n * import * as S from 'fp-ts/Semigroup'\n *\n * const S1 = S.max(N.Ord)\n *\n * assert.deepStrictEqual(S1.concat(1, 2), 2)\n *\n * @category constructors\n * @since 2.10.0\n */\nexport const max = (O) => ({\n    concat: Or.max(O)\n});\n/**\n * @category constructors\n * @since 2.10.0\n */\nexport const constant = (a) => ({\n    concat: () => a\n});\n// -------------------------------------------------------------------------------------\n// combinators\n// -------------------------------------------------------------------------------------\n/**\n * The dual of a `Semigroup`, obtained by swapping the arguments of `concat`.\n *\n * @example\n * import { reverse } from 'fp-ts/Semigroup'\n * import * as S from 'fp-ts/string'\n *\n * assert.deepStrictEqual(reverse(S.Semigroup).concat('a', 'b'), 'ba')\n *\n * @since 2.10.0\n */\nexport const reverse = M.reverse;\n/**\n * Given a struct of semigroups returns a semigroup for the struct.\n *\n * @example\n * import { struct } from 'fp-ts/Semigroup'\n * import * as N from 'fp-ts/number'\n *\n * interface Point {\n *   readonly x: number\n *   readonly y: number\n * }\n *\n * const S = struct<Point>({\n *   x: N.SemigroupSum,\n *   y: N.SemigroupSum\n * })\n *\n * assert.deepStrictEqual(S.concat({ x: 1, y: 2 }, { x: 3, y: 4 }), { x: 4, y: 6 })\n *\n * @since 2.10.0\n */\nexport const struct = (semigroups) => ({\n    concat: (first, second) => {\n        const r = {};\n        for (const k in semigroups) {\n            if (_.has.call(semigroups, k)) {\n                r[k] = semigroups[k].concat(first[k], second[k]);\n            }\n        }\n        return r;\n    }\n});\n/**\n * Given a tuple of semigroups returns a semigroup for the tuple.\n *\n * @example\n * import { tuple } from 'fp-ts/Semigroup'\n * import * as B from 'fp-ts/boolean'\n * import * as N from 'fp-ts/number'\n * import * as S from 'fp-ts/string'\n *\n * const S1 = tuple(S.Semigroup, N.SemigroupSum)\n * assert.deepStrictEqual(S1.concat(['a', 1], ['b', 2]), ['ab', 3])\n *\n * const S2 = tuple(S.Semigroup, N.SemigroupSum, B.SemigroupAll)\n * assert.deepStrictEqual(S2.concat(['a', 1, true], ['b', 2, false]), ['ab', 3, false])\n *\n * @since 2.10.0\n */\nexport const tuple = (...semigroups) => ({\n    concat: (first, second) => semigroups.map((s, i) => s.concat(first[i], second[i]))\n});\n/**\n * Between each pair of elements insert `middle`.\n *\n * @example\n * import { intercalate } from 'fp-ts/Semigroup'\n * import * as S from 'fp-ts/string'\n * import { pipe } from 'fp-ts/function'\n *\n * const S1 = pipe(S.Semigroup, intercalate(' + '))\n *\n * assert.strictEqual(S1.concat('a', 'b'), 'a + b')\n *\n * @since 2.10.0\n */\nexport const intercalate = (middle) => (S) => ({\n    concat: (x, y) => S.concat(x, S.concat(middle, y))\n});\n// -------------------------------------------------------------------------------------\n// instances\n// -------------------------------------------------------------------------------------\n/**\n * Always return the first argument.\n *\n * @example\n * import * as S from 'fp-ts/Semigroup'\n *\n * assert.deepStrictEqual(S.first<number>().concat(1, 2), 1)\n *\n * @category instances\n * @since 2.10.0\n */\nexport const first = () => ({ concat: identity });\n/**\n * Always return the last argument.\n *\n * @example\n * import * as S from 'fp-ts/Semigroup'\n *\n * assert.deepStrictEqual(S.last<number>().concat(1, 2), 2)\n *\n * @category instances\n * @since 2.10.0\n */\nexport const last = () => ({ concat: (_, y) => y });\n// -------------------------------------------------------------------------------------\n// utils\n// -------------------------------------------------------------------------------------\n/**\n * Given a sequence of `as`, concat them and return the total.\n *\n * If `as` is empty, return the provided `startWith` value.\n *\n * @example\n * import { concatAll } from 'fp-ts/Semigroup'\n * import * as N from 'fp-ts/number'\n *\n * const sum = concatAll(N.SemigroupSum)(0)\n *\n * assert.deepStrictEqual(sum([1, 2, 3]), 6)\n * assert.deepStrictEqual(sum([]), 0)\n *\n * @since 2.10.0\n */\nexport const concatAll = M.concatAll;\n// -------------------------------------------------------------------------------------\n// deprecated\n// -------------------------------------------------------------------------------------\n/**\n * Use `void` module instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const semigroupVoid = constant(undefined);\n/**\n * Use [`getAssignSemigroup`](./struct.ts.html#getAssignSemigroup) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const getObjectSemigroup = () => ({\n    concat: (first, second) => Object.assign({}, first, second)\n});\n/**\n * Use [`last`](#last) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const getLastSemigroup = last;\n/**\n * Use [`first`](#first) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const getFirstSemigroup = first;\n/**\n * Use [`tuple`](#tuple) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const getTupleSemigroup = tuple;\n/**\n * Use [`struct`](#struct) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const getStructSemigroup = struct;\n/**\n * Use [`reverse`](#reverse) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const getDualSemigroup = reverse;\n/**\n * Use [`max`](#max) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const getJoinSemigroup = max;\n/**\n * Use [`min`](#min) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const getMeetSemigroup = min;\n/**\n * Use [`intercalate`](#intercalate) instead.\n *\n * @category zone of death\n * @since 2.5.0\n * @deprecated\n */\nexport const getIntercalateSemigroup = intercalate;\nexport function fold(S) {\n    const concatAllS = concatAll(S);\n    return (startWith, as) => (as === undefined ? concatAllS(startWith) : concatAllS(startWith)(as));\n}\n/**\n * Use [`SemigroupAll`](./boolean.ts.html#SemigroupAll) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const semigroupAll = {\n    concat: (x, y) => x && y\n};\n/**\n * Use [`SemigroupAny`](./boolean.ts.html#SemigroupAny) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const semigroupAny = {\n    concat: (x, y) => x || y\n};\n/**\n * Use [`getSemigroup`](./function.ts.html#getSemigroup) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const getFunctionSemigroup = getSemigroup;\n/**\n * Use [`Semigroup`](./string.ts.html#Semigroup) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const semigroupString = {\n    concat: (x, y) => x + y\n};\n/**\n * Use [`SemigroupSum`](./number.ts.html#SemigroupSum) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const semigroupSum = {\n    concat: (x, y) => x + y\n};\n/**\n * Use [`SemigroupProduct`](./number.ts.html#SemigroupProduct) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const semigroupProduct = {\n    concat: (x, y) => x * y\n};\n","import { apFirst as apFirst_, apS as apS_, apSecond as apSecond_ } from './Apply.js';\nimport { bind as bind_, chainFirst as chainFirst_ } from './Chain.js';\nimport { fromEquals } from './Eq.js';\nimport { dual, flow, identity, pipe, SK } from './function.js';\nimport { bindTo as bindTo_, flap as flap_, let as let__ } from './Functor.js';\nimport * as _ from './internal.js';\nimport { getMonoid } from './Ord.js';\nimport * as Se from './Semigroup.js';\n// -------------------------------------------------------------------------------------\n// internal\n// -------------------------------------------------------------------------------------\n/**\n * @internal\n */\nexport const empty = _.emptyReadonlyArray;\n/**\n * @internal\n */\nexport const isNonEmpty = _.isNonEmpty;\n/**\n * @internal\n */\nexport const isOutOfBound = (i, as) => i < 0 || i >= as.length;\n/**\n * @internal\n */\nexport const prependW = (head) => (tail) => [head, ...tail];\n/**\n * @internal\n */\nexport const prepend = prependW;\n/**\n * @internal\n */\nexport const appendW = (end) => (init) => [...init, end];\n/**\n * @internal\n */\nexport const append = appendW;\n/**\n * @internal\n */\nexport const unsafeInsertAt = (i, a, as) => {\n    if (isNonEmpty(as)) {\n        const xs = _.fromReadonlyNonEmptyArray(as);\n        xs.splice(i, 0, a);\n        return xs;\n    }\n    return [a];\n};\n/**\n * @internal\n */\nexport const unsafeUpdateAt = (i, a, as) => {\n    if (as[i] === a) {\n        return as;\n    }\n    else {\n        const xs = _.fromReadonlyNonEmptyArray(as);\n        xs[i] = a;\n        return xs;\n    }\n};\n/**\n * Remove duplicates from a `ReadonlyNonEmptyArray`, keeping the first occurrence of an element.\n *\n * @example\n * import { uniq } from 'fp-ts/ReadonlyNonEmptyArray'\n * import * as N from 'fp-ts/number'\n *\n * assert.deepStrictEqual(uniq(N.Eq)([1, 2, 1]), [1, 2])\n *\n * @since 2.11.0\n */\nexport const uniq = (E) => (as) => {\n    if (as.length === 1) {\n        return as;\n    }\n    const out = [head(as)];\n    const rest = tail(as);\n    for (const a of rest) {\n        if (out.every((o) => !E.equals(o, a))) {\n            out.push(a);\n        }\n    }\n    return out;\n};\n/**\n * Sort the elements of a `ReadonlyNonEmptyArray` in increasing order, where elements are compared using first `ords[0]`, then `ords[1]`,\n * etc...\n *\n * @example\n * import * as RNEA from 'fp-ts/ReadonlyNonEmptyArray'\n * import { contramap } from 'fp-ts/Ord'\n * import * as S from 'fp-ts/string'\n * import * as N from 'fp-ts/number'\n * import { pipe } from 'fp-ts/function'\n *\n * interface Person {\n *   name: string\n *   age: number\n * }\n *\n * const byName = pipe(S.Ord, contramap((p: Person) => p.name))\n *\n * const byAge = pipe(N.Ord, contramap((p: Person) => p.age))\n *\n * const sortByNameByAge = RNEA.sortBy([byName, byAge])\n *\n * const persons: RNEA.ReadonlyNonEmptyArray<Person> = [\n *   { name: 'a', age: 1 },\n *   { name: 'b', age: 3 },\n *   { name: 'c', age: 2 },\n *   { name: 'b', age: 2 }\n * ]\n *\n * assert.deepStrictEqual(sortByNameByAge(persons), [\n *   { name: 'a', age: 1 },\n *   { name: 'b', age: 2 },\n *   { name: 'b', age: 3 },\n *   { name: 'c', age: 2 }\n * ])\n *\n * @since 2.11.0\n */\nexport const sortBy = (ords) => {\n    if (isNonEmpty(ords)) {\n        const M = getMonoid();\n        return sort(ords.reduce(M.concat, M.empty));\n    }\n    return identity;\n};\n/**\n * @since 2.11.0\n */\nexport const union = (E) => {\n    const uniqE = uniq(E);\n    return (second) => (first) => uniqE(pipe(first, concat(second)));\n};\n/**\n * Rotate a `ReadonlyNonEmptyArray` by `n` steps.\n *\n * @example\n * import { rotate } from 'fp-ts/ReadonlyNonEmptyArray'\n *\n * assert.deepStrictEqual(rotate(2)([1, 2, 3, 4, 5]), [4, 5, 1, 2, 3])\n * assert.deepStrictEqual(rotate(-2)([1, 2, 3, 4, 5]), [3, 4, 5, 1, 2])\n *\n * @since 2.11.0\n */\nexport const rotate = (n) => (as) => {\n    const len = as.length;\n    const m = Math.round(n) % len;\n    if (isOutOfBound(Math.abs(m), as) || m === 0) {\n        return as;\n    }\n    if (m < 0) {\n        const [f, s] = splitAt(-m)(as);\n        return pipe(s, concat(f));\n    }\n    else {\n        return rotate(m - len)(as);\n    }\n};\n// -------------------------------------------------------------------------------------\n// constructors\n// -------------------------------------------------------------------------------------\n/**\n * Return a `ReadonlyNonEmptyArray` from a `ReadonlyArray` returning `none` if the input is empty.\n *\n * @category conversions\n * @since 2.5.0\n */\nexport const fromReadonlyArray = (as) => isNonEmpty(as) ? _.some(as) : _.none;\n/**\n * Return a `ReadonlyNonEmptyArray` of length `n` with element `i` initialized with `f(i)`.\n *\n * **Note**. `n` is normalized to a natural number.\n *\n * @example\n * import { makeBy } from 'fp-ts/ReadonlyNonEmptyArray'\n * import { pipe } from 'fp-ts/function'\n *\n * const double = (n: number): number => n * 2\n * assert.deepStrictEqual(pipe(5, makeBy(double)), [0, 2, 4, 6, 8])\n *\n * @category constructors\n * @since 2.11.0\n */\nexport const makeBy = (f) => (n) => {\n    const j = Math.max(0, Math.floor(n));\n    const out = [f(0)];\n    for (let i = 1; i < j; i++) {\n        out.push(f(i));\n    }\n    return out;\n};\n/**\n * Create a `ReadonlyNonEmptyArray` containing a value repeated the specified number of times.\n *\n * **Note**. `n` is normalized to a natural number.\n *\n * @example\n * import { replicate } from 'fp-ts/ReadonlyNonEmptyArray'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(pipe(3, replicate('a')), ['a', 'a', 'a'])\n *\n * @category constructors\n * @since 2.11.0\n */\nexport const replicate = (a) => makeBy(() => a);\n/**\n * Create a `ReadonlyNonEmptyArray` containing a range of integers, including both endpoints.\n *\n * @example\n * import { range } from 'fp-ts/ReadonlyNonEmptyArray'\n *\n * assert.deepStrictEqual(range(1, 5), [1, 2, 3, 4, 5])\n *\n * @category constructors\n * @since 2.11.0\n */\nexport const range = (start, end) => start <= end ? makeBy((i) => start + i)(end - start + 1) : [start];\n/**\n * Return the tuple of the `head` and the `tail`.\n *\n * @example\n * import { unprepend } from 'fp-ts/ReadonlyNonEmptyArray'\n *\n * assert.deepStrictEqual(unprepend([1, 2, 3, 4]), [1, [2, 3, 4]])\n *\n * @since 2.9.0\n */\nexport const unprepend = (as) => [head(as), tail(as)];\n/**\n * Return the tuple of the `init` and the `last`.\n *\n * @example\n * import { unappend } from 'fp-ts/ReadonlyNonEmptyArray'\n *\n * assert.deepStrictEqual(unappend([1, 2, 3, 4]), [[1, 2, 3], 4])\n *\n * @since 2.9.0\n */\nexport const unappend = (as) => [init(as), last(as)];\n/**\n * @category conversions\n * @since 2.5.0\n */\nexport const fromArray = (as) => fromReadonlyArray(as.slice());\nexport function concatW(second) {\n    return (first) => first.concat(second);\n}\nexport function concat(x, y) {\n    return y ? x.concat(y) : (y) => y.concat(x);\n}\n/**\n * @since 2.5.0\n */\nexport const reverse = (as) => as.length === 1 ? as : [last(as), ...as.slice(0, -1).reverse()];\nexport function group(E) {\n    return (as) => {\n        const len = as.length;\n        if (len === 0) {\n            return empty;\n        }\n        const out = [];\n        let head = as[0];\n        let nea = [head];\n        for (let i = 1; i < len; i++) {\n            const a = as[i];\n            if (E.equals(a, head)) {\n                nea.push(a);\n            }\n            else {\n                out.push(nea);\n                head = a;\n                nea = [head];\n            }\n        }\n        out.push(nea);\n        return out;\n    };\n}\n/**\n * Splits an array into sub-non-empty-arrays stored in an object, based on the result of calling a `string`-returning\n * function on each element, and grouping the results according to values returned\n *\n * @example\n * import { groupBy } from 'fp-ts/ReadonlyNonEmptyArray'\n *\n * assert.deepStrictEqual(groupBy((s: string) => String(s.length))(['a', 'b', 'ab']), {\n *   '1': ['a', 'b'],\n *   '2': ['ab']\n * })\n *\n * @since 2.5.0\n */\nexport const groupBy = (f) => (as) => {\n    const out = {};\n    for (const a of as) {\n        const k = f(a);\n        if (_.has.call(out, k)) {\n            out[k].push(a);\n        }\n        else {\n            out[k] = [a];\n        }\n    }\n    return out;\n};\n/**\n * @since 2.5.0\n */\nexport const sort = (O) => (as) => as.length === 1 ? as : as.slice().sort(O.compare);\n/**\n * @since 2.5.0\n */\nexport const updateAt = (i, a) => modifyAt(i, () => a);\n/**\n * @since 2.5.0\n */\nexport const modifyAt = (i, f) => (as) => isOutOfBound(i, as) ? _.none : _.some(unsafeUpdateAt(i, f(as[i]), as));\n/**\n * @since 2.5.1\n */\nexport const zipWith = (as, bs, f) => {\n    const cs = [f(as[0], bs[0])];\n    const len = Math.min(as.length, bs.length);\n    for (let i = 1; i < len; i++) {\n        cs[i] = f(as[i], bs[i]);\n    }\n    return cs;\n};\nexport function zip(as, bs) {\n    if (bs === undefined) {\n        return (bs) => zip(bs, as);\n    }\n    return zipWith(as, bs, (a, b) => [a, b]);\n}\n/**\n * @since 2.5.1\n */\nexport const unzip = (abs) => {\n    const fa = [abs[0][0]];\n    const fb = [abs[0][1]];\n    for (let i = 1; i < abs.length; i++) {\n        fa[i] = abs[i][0];\n        fb[i] = abs[i][1];\n    }\n    return [fa, fb];\n};\n/**\n * Prepend an element to every member of a `ReadonlyNonEmptyArray`.\n *\n * @example\n * import { prependAll } from 'fp-ts/ReadonlyNonEmptyArray'\n *\n * assert.deepStrictEqual(prependAll(9)([1, 2, 3, 4]), [9, 1, 9, 2, 9, 3, 9, 4])\n *\n * @since 2.10.0\n */\nexport const prependAll = (middle) => (as) => {\n    const out = [middle, as[0]];\n    for (let i = 1; i < as.length; i++) {\n        out.push(middle, as[i]);\n    }\n    return out;\n};\n/**\n * Places an element in between members of a `ReadonlyNonEmptyArray`.\n *\n * @example\n * import { intersperse } from 'fp-ts/ReadonlyNonEmptyArray'\n *\n * assert.deepStrictEqual(intersperse(9)([1, 2, 3, 4]), [1, 9, 2, 9, 3, 9, 4])\n *\n * @since 2.9.0\n */\nexport const intersperse = (middle) => (as) => {\n    const rest = tail(as);\n    return isNonEmpty(rest) ? pipe(rest, prependAll(middle), prepend(head(as))) : as;\n};\n/**\n * @category sequencing\n * @since 2.10.0\n */\nexport const chainWithIndex = (f) => (as) => {\n    const out = _.fromReadonlyNonEmptyArray(f(0, head(as)));\n    for (let i = 1; i < as.length; i++) {\n        const bs = f(i, as[i]);\n        for (let j = 0; j < bs.length; j++) {\n            out.push(bs[j]);\n        }\n    }\n    return out;\n};\n/**\n * A useful recursion pattern for processing a `ReadonlyNonEmptyArray` to produce a new `ReadonlyNonEmptyArray`, often used for \"chopping\" up the input\n * `ReadonlyNonEmptyArray`. Typically `chop` is called with some function that will consume an initial prefix of the `ReadonlyNonEmptyArray` and produce a\n * value and the tail of the `ReadonlyNonEmptyArray`.\n *\n * @since 2.10.0\n */\nexport const chop = (f) => (as) => {\n    const [b, rest] = f(as);\n    const out = [b];\n    let next = rest;\n    while (isNonEmpty(next)) {\n        const [b, rest] = f(next);\n        out.push(b);\n        next = rest;\n    }\n    return out;\n};\n/**\n * Splits a `ReadonlyNonEmptyArray` into two pieces, the first piece has max `n` elements.\n *\n * @since 2.10.0\n */\nexport const splitAt = (n) => (as) => {\n    const m = Math.max(1, n);\n    return m >= as.length ? [as, empty] : [pipe(as.slice(1, m), prepend(head(as))), as.slice(m)];\n};\n/**\n * Splits a `ReadonlyNonEmptyArray` into length-`n` pieces. The last piece will be shorter if `n` does not evenly divide the length of\n * the `ReadonlyNonEmptyArray`.\n *\n * @since 2.10.0\n */\nexport const chunksOf = (n) => chop(splitAt(n));\nconst _map = (fa, f) => pipe(fa, map(f));\n/* istanbul ignore next */\nconst _mapWithIndex = (fa, f) => pipe(fa, mapWithIndex(f));\nconst _ap = (fab, fa) => pipe(fab, ap(fa));\n/* istanbul ignore next */\nconst _extend = (wa, f) => pipe(wa, extend(f));\n/* istanbul ignore next */\nconst _reduce = (fa, b, f) => pipe(fa, reduce(b, f));\n/* istanbul ignore next */\nconst _foldMap = (M) => {\n    const foldMapM = foldMap(M);\n    return (fa, f) => pipe(fa, foldMapM(f));\n};\n/* istanbul ignore next */\nconst _reduceRight = (fa, b, f) => pipe(fa, reduceRight(b, f));\n/* istanbul ignore next */\nconst _traverse = (F) => {\n    const traverseF = traverse(F);\n    return (ta, f) => pipe(ta, traverseF(f));\n};\n/* istanbul ignore next */\nconst _alt = (fa, that) => pipe(fa, alt(that));\n/* istanbul ignore next */\nconst _reduceWithIndex = (fa, b, f) => pipe(fa, reduceWithIndex(b, f));\n/* istanbul ignore next */\nconst _foldMapWithIndex = (M) => {\n    const foldMapWithIndexM = foldMapWithIndex(M);\n    return (fa, f) => pipe(fa, foldMapWithIndexM(f));\n};\n/* istanbul ignore next */\nconst _reduceRightWithIndex = (fa, b, f) => pipe(fa, reduceRightWithIndex(b, f));\n/* istanbul ignore next */\nconst _traverseWithIndex = (F) => {\n    const traverseWithIndexF = traverseWithIndex(F);\n    return (ta, f) => pipe(ta, traverseWithIndexF(f));\n};\n/**\n * @category constructors\n * @since 2.5.0\n */\nexport const of = _.singleton;\n/**\n * Less strict version of [`alt`](#alt).\n *\n * The `W` suffix (short for **W**idening) means that the return types will be merged.\n *\n * @example\n * import * as RNEA from 'fp-ts/ReadonlyNonEmptyArray'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(\n *   pipe(\n *     [1, 2, 3] as RNEA.ReadonlyNonEmptyArray<number>,\n *     RNEA.altW(() => ['a', 'b'])\n *   ),\n *   [1, 2, 3, 'a', 'b']\n * )\n *\n * @category error handling\n * @since 2.9.0\n */\nexport const altW = (that) => (as) => pipe(as, concatW(that()));\n/**\n * Identifies an associative operation on a type constructor. It is similar to `Semigroup`, except that it applies to\n * types of kind `* -> *`.\n *\n * In case of `ReadonlyNonEmptyArray` concatenates the inputs into a single array.\n *\n * @example\n * import * as RNEA from 'fp-ts/ReadonlyNonEmptyArray'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(\n *   pipe(\n *     [1, 2, 3],\n *     RNEA.alt(() => [4, 5])\n *   ),\n *   [1, 2, 3, 4, 5]\n * )\n *\n * @category error handling\n * @since 2.6.2\n */\nexport const alt = altW;\n/**\n * @since 2.5.0\n */\nexport const ap = (as) => flatMap((f) => pipe(as, map(f)));\n/**\n * @example\n * import * as RNEA from 'fp-ts/ReadonlyNonEmptyArray'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(\n *   pipe(\n *     [1, 2, 3],\n *     RNEA.flatMap((n) => [`a${n}`, `b${n}`])\n *   ),\n *   ['a1', 'b1', 'a2', 'b2', 'a3', 'b3']\n * )\n *\n * @category sequencing\n * @since 2.14.0\n */\nexport const flatMap = /*#__PURE__*/ dual(2, (ma, f) => pipe(ma, chainWithIndex((i, a) => f(a, i))));\n/**\n * @since 2.5.0\n */\nexport const extend = (f) => (as) => {\n    let next = tail(as);\n    const out = [f(as)];\n    while (isNonEmpty(next)) {\n        out.push(f(next));\n        next = tail(next);\n    }\n    return out;\n};\n/**\n * @since 2.5.0\n */\nexport const duplicate = \n/*#__PURE__*/ extend(identity);\n/**\n * @category sequencing\n * @since 2.5.0\n */\nexport const flatten = \n/*#__PURE__*/ flatMap(identity);\n/**\n * `map` can be used to turn functions `(a: A) => B` into functions `(fa: F<A>) => F<B>` whose argument and return types\n * use the type constructor `F` to represent some computational context.\n *\n * @category mapping\n * @since 2.5.0\n */\nexport const map = (f) => mapWithIndex((_, a) => f(a));\n/**\n * @category mapping\n * @since 2.5.0\n */\nexport const mapWithIndex = (f) => (as) => {\n    const out = [f(0, head(as))];\n    for (let i = 1; i < as.length; i++) {\n        out.push(f(i, as[i]));\n    }\n    return out;\n};\n/**\n * @category folding\n * @since 2.5.0\n */\nexport const reduce = (b, f) => reduceWithIndex(b, (_, b, a) => f(b, a));\n/**\n * **Note**. The constraint is relaxed: a `Semigroup` instead of a `Monoid`.\n *\n * @category folding\n * @since 2.5.0\n */\nexport const foldMap = (S) => (f) => (as) => as.slice(1).reduce((s, a) => S.concat(s, f(a)), f(as[0]));\n/**\n * @category folding\n * @since 2.5.0\n */\nexport const reduceRight = (b, f) => reduceRightWithIndex(b, (_, b, a) => f(b, a));\n/**\n * @category folding\n * @since 2.5.0\n */\nexport const reduceWithIndex = (b, f) => (as) => as.reduce((b, a, i) => f(i, b, a), b);\n/**\n * **Note**. The constraint is relaxed: a `Semigroup` instead of a `Monoid`.\n *\n * @category folding\n * @since 2.5.0\n */\nexport const foldMapWithIndex = (S) => (f) => (as) => as.slice(1).reduce((s, a, i) => S.concat(s, f(i + 1, a)), f(0, as[0]));\n/**\n * @category folding\n * @since 2.5.0\n */\nexport const reduceRightWithIndex = (b, f) => (as) => as.reduceRight((b, a, i) => f(i, a, b), b);\n/**\n * @category traversing\n * @since 2.6.3\n */\nexport const traverse = (F) => {\n    const traverseWithIndexF = traverseWithIndex(F);\n    return (f) => traverseWithIndexF((_, a) => f(a));\n};\n/**\n * @category traversing\n * @since 2.6.3\n */\nexport const sequence = (F) => traverseWithIndex(F)(SK);\n/**\n * @category sequencing\n * @since 2.6.3\n */\nexport const traverseWithIndex = (F) => (f) => (as) => {\n    let out = F.map(f(0, head(as)), of);\n    for (let i = 1; i < as.length; i++) {\n        out = F.ap(F.map(out, (bs) => (b) => pipe(bs, append(b))), f(i, as[i]));\n    }\n    return out;\n};\n/**\n * @category Comonad\n * @since 2.6.3\n */\nexport const extract = _.head;\n/**\n * @category type lambdas\n * @since 2.5.0\n */\nexport const URI = 'ReadonlyNonEmptyArray';\n/**\n * @category instances\n * @since 2.5.0\n */\nexport const getShow = (S) => ({\n    show: (as) => `[${as.map(S.show).join(', ')}]`\n});\n/**\n * Builds a `Semigroup` instance for `ReadonlyNonEmptyArray`\n *\n * @category instances\n * @since 2.5.0\n */\nexport const getSemigroup = () => ({\n    concat\n});\n/**\n * @example\n * import { getEq } from 'fp-ts/ReadonlyNonEmptyArray'\n * import * as N from 'fp-ts/number'\n *\n * const E = getEq(N.Eq)\n * assert.strictEqual(E.equals([1, 2], [1, 2]), true)\n * assert.strictEqual(E.equals([1, 2], [1, 3]), false)\n *\n * @category instances\n * @since 2.5.0\n */\nexport const getEq = (E) => fromEquals((xs, ys) => xs.length === ys.length && xs.every((x, i) => E.equals(x, ys[i])));\n/**\n * @since 2.11.0\n */\nexport const getUnionSemigroup = (E) => {\n    const unionE = union(E);\n    return {\n        concat: (first, second) => unionE(second)(first)\n    };\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Functor = {\n    URI,\n    map: _map\n};\n/**\n * @category mapping\n * @since 2.10.0\n */\nexport const flap = /*#__PURE__*/ flap_(Functor);\n/**\n * @category instances\n * @since 2.10.0\n */\nexport const Pointed = {\n    URI,\n    of\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const FunctorWithIndex = {\n    URI,\n    map: _map,\n    mapWithIndex: _mapWithIndex\n};\n/**\n * @category instances\n * @since 2.10.0\n */\nexport const Apply = {\n    URI,\n    map: _map,\n    ap: _ap\n};\n/**\n * Combine two effectful actions, keeping only the result of the first.\n *\n * @since 2.5.0\n */\nexport const apFirst = /*#__PURE__*/ apFirst_(Apply);\n/**\n * Combine two effectful actions, keeping only the result of the second.\n *\n * @since 2.5.0\n */\nexport const apSecond = /*#__PURE__*/ apSecond_(Apply);\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Applicative = {\n    URI,\n    map: _map,\n    ap: _ap,\n    of\n};\n/**\n * @category instances\n * @since 2.10.0\n */\nexport const Chain = {\n    URI,\n    map: _map,\n    ap: _ap,\n    chain: flatMap\n};\n/**\n * Composes computations in sequence, using the return value of one computation to determine the next computation and\n * keeping only the result of the first.\n *\n * @example\n * import * as RA from 'fp-ts/ReadonlyArray'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(\n *   pipe(\n *     [1, 2, 3],\n *     RA.chainFirst(() => ['a', 'b'])\n *   ),\n *   [1, 1, 2, 2, 3, 3]\n * )\n *\n * @category sequencing\n * @since 2.5.0\n */\nexport const chainFirst = /*#__PURE__*/ chainFirst_(Chain);\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Monad = {\n    URI,\n    map: _map,\n    ap: _ap,\n    of,\n    chain: flatMap\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Foldable = {\n    URI,\n    reduce: _reduce,\n    foldMap: _foldMap,\n    reduceRight: _reduceRight\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const FoldableWithIndex = {\n    URI,\n    reduce: _reduce,\n    foldMap: _foldMap,\n    reduceRight: _reduceRight,\n    reduceWithIndex: _reduceWithIndex,\n    foldMapWithIndex: _foldMapWithIndex,\n    reduceRightWithIndex: _reduceRightWithIndex\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Traversable = {\n    URI,\n    map: _map,\n    reduce: _reduce,\n    foldMap: _foldMap,\n    reduceRight: _reduceRight,\n    traverse: _traverse,\n    sequence\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const TraversableWithIndex = {\n    URI,\n    map: _map,\n    mapWithIndex: _mapWithIndex,\n    reduce: _reduce,\n    foldMap: _foldMap,\n    reduceRight: _reduceRight,\n    traverse: _traverse,\n    sequence,\n    reduceWithIndex: _reduceWithIndex,\n    foldMapWithIndex: _foldMapWithIndex,\n    reduceRightWithIndex: _reduceRightWithIndex,\n    traverseWithIndex: _traverseWithIndex\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Alt = {\n    URI,\n    map: _map,\n    alt: _alt\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Comonad = {\n    URI,\n    map: _map,\n    extend: _extend,\n    extract\n};\n// -------------------------------------------------------------------------------------\n// do notation\n// -------------------------------------------------------------------------------------\n/**\n * @category do notation\n * @since 2.9.0\n */\nexport const Do = /*#__PURE__*/ of(_.emptyRecord);\n/**\n * @category do notation\n * @since 2.8.0\n */\nexport const bindTo = /*#__PURE__*/ bindTo_(Functor);\nconst let_ = /*#__PURE__*/ let__(Functor);\nexport { \n/**\n * @category do notation\n * @since 2.13.0\n */\nlet_ as let };\n/**\n * @category do notation\n * @since 2.8.0\n */\nexport const bind = /*#__PURE__*/ bind_(Chain);\n/**\n * @category do notation\n * @since 2.8.0\n */\nexport const apS = /*#__PURE__*/ apS_(Apply);\n// -------------------------------------------------------------------------------------\n// utils\n// -------------------------------------------------------------------------------------\n/**\n * @since 2.5.0\n */\nexport const head = extract;\n/**\n * @since 2.5.0\n */\nexport const tail = _.tail;\n/**\n * @since 2.5.0\n */\nexport const last = (as) => as[as.length - 1];\n/**\n * Get all but the last element of a non empty array, creating a new array.\n *\n * @example\n * import { init } from 'fp-ts/ReadonlyNonEmptyArray'\n *\n * assert.deepStrictEqual(init([1, 2, 3]), [1, 2])\n * assert.deepStrictEqual(init([1]), [])\n *\n * @since 2.5.0\n */\nexport const init = (as) => as.slice(0, -1);\n/**\n * @since 2.5.0\n */\nexport const min = (O) => {\n    const S = Se.min(O);\n    return (as) => as.reduce(S.concat);\n};\n/**\n * @since 2.5.0\n */\nexport const max = (O) => {\n    const S = Se.max(O);\n    return (as) => as.reduce(S.concat);\n};\n/**\n * @since 2.10.0\n */\nexport const concatAll = (S) => (as) => as.reduce(S.concat);\n/**\n * Break a `ReadonlyArray` into its first element and remaining elements.\n *\n * @category pattern matching\n * @since 2.11.0\n */\nexport const matchLeft = (f) => (as) => f(head(as), tail(as));\n/**\n * Break a `ReadonlyArray` into its initial elements and the last element.\n *\n * @category pattern matching\n * @since 2.11.0\n */\nexport const matchRight = (f) => (as) => f(init(as), last(as));\n/**\n * Apply a function to the head, creating a new `ReadonlyNonEmptyArray`.\n *\n * @since 2.11.0\n */\nexport const modifyHead = (f) => (as) => [f(head(as)), ...tail(as)];\n/**\n * Change the head, creating a new `ReadonlyNonEmptyArray`.\n *\n * @since 2.11.0\n */\nexport const updateHead = (a) => modifyHead(() => a);\n/**\n * Apply a function to the last element, creating a new `ReadonlyNonEmptyArray`.\n *\n * @since 2.11.0\n */\nexport const modifyLast = (f) => (as) => pipe(init(as), append(f(last(as))));\n/**\n * Change the last element, creating a new `ReadonlyNonEmptyArray`.\n *\n * @since 2.11.0\n */\nexport const updateLast = (a) => modifyLast(() => a);\n/**\n * Places an element in between members of a `ReadonlyNonEmptyArray`, then folds the results using the provided `Semigroup`.\n *\n * @example\n * import * as S from 'fp-ts/string'\n * import { intercalate } from 'fp-ts/ReadonlyNonEmptyArray'\n *\n * assert.deepStrictEqual(intercalate(S.Semigroup)('-')(['a', 'b', 'c']), 'a-b-c')\n *\n * @since 2.12.0\n */\nexport const intercalate = (S) => {\n    const concatAllS = concatAll(S);\n    return (middle) => flow(intersperse(middle), concatAllS);\n};\n// -------------------------------------------------------------------------------------\n// legacy\n// -------------------------------------------------------------------------------------\n/**\n * Alias of `flatMap`.\n *\n * @category legacy\n * @since 2.5.0\n */\nexport const chain = flatMap;\nexport function groupSort(O) {\n    const sortO = sort(O);\n    const groupO = group(O);\n    return (as) => (isNonEmpty(as) ? groupO(sortO(as)) : empty);\n}\nexport function filter(predicate) {\n    return filterWithIndex((_, a) => predicate(a));\n}\n/**\n * Use [`filterWithIndex`](./ReadonlyArray.ts.html#filterwithindex) instead.\n *\n * @category zone of death\n * @since 2.5.0\n * @deprecated\n */\nexport const filterWithIndex = (predicate) => (as) => fromReadonlyArray(as.filter((a, i) => predicate(i, a)));\n/**\n * Use [`unprepend`](#unprepend) instead.\n *\n * @category zone of death\n * @since 2.10.0\n * @deprecated\n */\nexport const uncons = unprepend;\n/**\n * Use [`unappend`](#unappend) instead.\n *\n * @category zone of death\n * @since 2.10.0\n * @deprecated\n */\nexport const unsnoc = unappend;\nexport function cons(head, tail) {\n    return tail === undefined ? prepend(head) : pipe(tail, prepend(head));\n}\n/**\n * Use [`append`](./ReadonlyArray.ts.html#append) instead.\n *\n * @category zone of death\n * @since 2.5.0\n * @deprecated\n */\nexport const snoc = (init, end) => pipe(init, concat([end]));\n/**\n * Use [`insertAt`](./ReadonlyArray.ts.html#insertat) instead.\n *\n * @category zone of death\n * @since 2.5.0\n * @deprecated\n */\nexport const insertAt = (i, a) => (as) => i < 0 || i > as.length ? _.none : _.some(unsafeInsertAt(i, a, as));\n/**\n * Use [`prependAll`](#prependall) instead.\n *\n * @category zone of death\n * @since 2.9.0\n * @deprecated\n */\nexport const prependToAll = prependAll;\n/**\n * Use [`concatAll`](#concatall) instead.\n *\n * @category zone of death\n * @since 2.5.0\n * @deprecated\n */\nexport const fold = concatAll;\n/**\n * This instance is deprecated, use small, specific instances instead.\n * For example if a function needs a `Functor` instance, pass `RNEA.Functor` instead of `RNEA.readonlyNonEmptyArray`\n * (where `RNEA` is from `import RNEA from 'fp-ts/ReadonlyNonEmptyArray'`)\n *\n * @category zone of death\n * @since 2.5.0\n * @deprecated\n */\nexport const readonlyNonEmptyArray = {\n    URI,\n    of,\n    map: _map,\n    mapWithIndex: _mapWithIndex,\n    ap: _ap,\n    chain: flatMap,\n    extend: _extend,\n    extract: extract,\n    reduce: _reduce,\n    foldMap: _foldMap,\n    reduceRight: _reduceRight,\n    traverse: _traverse,\n    sequence,\n    reduceWithIndex: _reduceWithIndex,\n    foldMapWithIndex: _foldMapWithIndex,\n    reduceRightWithIndex: _reduceRightWithIndex,\n    traverseWithIndex: _traverseWithIndex,\n    alt: _alt\n};\n","import { apFirst as apFirst_, apS as apS_, apSecond as apSecond_ } from './Apply.js';\nimport { bind as bind_, chainFirst as chainFirst_ } from './Chain.js';\nimport { dual, identity, pipe } from './function.js';\nimport { bindTo as bindTo_, flap as flap_, let as let__ } from './Functor.js';\nimport * as _ from './internal.js';\nimport { getMonoid } from './Ord.js';\nimport * as RNEA from './ReadonlyNonEmptyArray.js';\n// -------------------------------------------------------------------------------------\n// internal\n// -------------------------------------------------------------------------------------\n/**\n * @internal\n */\nexport const isNonEmpty = (as) => as.length > 0;\n/**\n * @internal\n */\nexport const isOutOfBound = (i, as) => i < 0 || i >= as.length;\n/**\n * @internal\n */\nexport const prependW = (head) => (tail) => [head, ...tail];\n/**\n * @internal\n */\nexport const prepend = prependW;\n/**\n * @internal\n */\nexport const appendW = (end) => (init) => [...init, end];\n/**\n * @internal\n */\nexport const append = appendW;\n/**\n * @internal\n */\nexport const unsafeInsertAt = (i, a, as) => {\n    if (isNonEmpty(as)) {\n        const xs = fromReadonlyNonEmptyArray(as);\n        xs.splice(i, 0, a);\n        return xs;\n    }\n    return [a];\n};\n/**\n * @internal\n */\nexport const unsafeUpdateAt = (i, a, as) => {\n    const xs = fromReadonlyNonEmptyArray(as);\n    xs[i] = a;\n    return xs;\n};\n/**\n * Remove duplicates from a `NonEmptyArray`, keeping the first occurrence of an element.\n *\n * @example\n * import { uniq } from 'fp-ts/NonEmptyArray'\n * import * as N from 'fp-ts/number'\n *\n * assert.deepStrictEqual(uniq(N.Eq)([1, 2, 1]), [1, 2])\n *\n * @since 2.11.0\n */\nexport const uniq = (E) => (as) => {\n    if (as.length === 1) {\n        return copy(as);\n    }\n    const out = [head(as)];\n    const rest = tail(as);\n    for (const a of rest) {\n        if (out.every((o) => !E.equals(o, a))) {\n            out.push(a);\n        }\n    }\n    return out;\n};\n/**\n * Sort the elements of a `NonEmptyArray` in increasing order, where elements are compared using first `ords[0]`, then `ords[1]`,\n * etc...\n *\n * @example\n * import * as NEA from 'fp-ts/NonEmptyArray'\n * import { contramap } from 'fp-ts/Ord'\n * import * as S from 'fp-ts/string'\n * import * as N from 'fp-ts/number'\n * import { pipe } from 'fp-ts/function'\n *\n * interface Person {\n *   name: string\n *   age: number\n * }\n *\n * const byName = pipe(S.Ord, contramap((p: Person) => p.name))\n *\n * const byAge = pipe(N.Ord, contramap((p: Person) => p.age))\n *\n * const sortByNameByAge = NEA.sortBy([byName, byAge])\n *\n * const persons: NEA.NonEmptyArray<Person> = [\n *   { name: 'a', age: 1 },\n *   { name: 'b', age: 3 },\n *   { name: 'c', age: 2 },\n *   { name: 'b', age: 2 }\n * ]\n *\n * assert.deepStrictEqual(sortByNameByAge(persons), [\n *   { name: 'a', age: 1 },\n *   { name: 'b', age: 2 },\n *   { name: 'b', age: 3 },\n *   { name: 'c', age: 2 }\n * ])\n *\n * @since 2.11.0\n */\nexport const sortBy = (ords) => {\n    if (isNonEmpty(ords)) {\n        const M = getMonoid();\n        return sort(ords.reduce(M.concat, M.empty));\n    }\n    return copy;\n};\n/**\n * @since 2.11.0\n */\nexport const union = (E) => {\n    const uniqE = uniq(E);\n    return (second) => (first) => uniqE(pipe(first, concat(second)));\n};\n/**\n * Rotate a `NonEmptyArray` by `n` steps.\n *\n * @example\n * import { rotate } from 'fp-ts/NonEmptyArray'\n *\n * assert.deepStrictEqual(rotate(2)([1, 2, 3, 4, 5]), [4, 5, 1, 2, 3])\n * assert.deepStrictEqual(rotate(-2)([1, 2, 3, 4, 5]), [3, 4, 5, 1, 2])\n *\n * @since 2.11.0\n */\nexport const rotate = (n) => (as) => {\n    const len = as.length;\n    const m = Math.round(n) % len;\n    if (isOutOfBound(Math.abs(m), as) || m === 0) {\n        return copy(as);\n    }\n    if (m < 0) {\n        const [f, s] = splitAt(-m)(as);\n        return pipe(s, concat(f));\n    }\n    else {\n        return rotate(m - len)(as);\n    }\n};\n// -------------------------------------------------------------------------------------\n// constructors\n// -------------------------------------------------------------------------------------\n/**\n * @category conversions\n * @since 2.10.0\n */\nexport const fromReadonlyNonEmptyArray = _.fromReadonlyNonEmptyArray;\n/**\n * Builds a `NonEmptyArray` from an `Array` returning `none` if `as` is an empty array\n *\n * @category conversions\n * @since 2.0.0\n */\nexport const fromArray = (as) => (isNonEmpty(as) ? _.some(as) : _.none);\n/**\n * Return a `NonEmptyArray` of length `n` with element `i` initialized with `f(i)`.\n *\n * **Note**. `n` is normalized to a natural number.\n *\n * @example\n * import { makeBy } from 'fp-ts/NonEmptyArray'\n * import { pipe } from 'fp-ts/function'\n *\n * const double = (n: number): number => n * 2\n * assert.deepStrictEqual(pipe(5, makeBy(double)), [0, 2, 4, 6, 8])\n *\n * @category constructors\n * @since 2.11.0\n */\nexport const makeBy = (f) => (n) => {\n    const j = Math.max(0, Math.floor(n));\n    const out = [f(0)];\n    for (let i = 1; i < j; i++) {\n        out.push(f(i));\n    }\n    return out;\n};\n/**\n * Create a `NonEmptyArray` containing a value repeated the specified number of times.\n *\n * **Note**. `n` is normalized to a natural number.\n *\n * @example\n * import { replicate } from 'fp-ts/NonEmptyArray'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(pipe(3, replicate('a')), ['a', 'a', 'a'])\n *\n * @category constructors\n * @since 2.11.0\n */\nexport const replicate = (a) => makeBy(() => a);\n/**\n * Create a `NonEmptyArray` containing a range of integers, including both endpoints.\n *\n * @example\n * import { range } from 'fp-ts/NonEmptyArray'\n *\n * assert.deepStrictEqual(range(1, 5), [1, 2, 3, 4, 5])\n *\n * @category constructors\n * @since 2.11.0\n */\nexport const range = (start, end) => start <= end ? makeBy((i) => start + i)(end - start + 1) : [start];\n/**\n * Return the tuple of the `head` and the `tail`.\n *\n * @example\n * import { unprepend } from 'fp-ts/NonEmptyArray'\n *\n * assert.deepStrictEqual(unprepend([1, 2, 3]), [1, [2, 3]])\n *\n * @since 2.9.0\n */\nexport const unprepend = (as) => [head(as), tail(as)];\n/**\n * Return the tuple of the `init` and the `last`.\n *\n * @example\n * import { unappend } from 'fp-ts/NonEmptyArray'\n *\n * assert.deepStrictEqual(unappend([1, 2, 3, 4]), [[1, 2, 3], 4])\n *\n * @since 2.9.0\n */\nexport const unappend = (as) => [init(as), last(as)];\nexport function concatW(second) {\n    return (first) => first.concat(second);\n}\nexport function concat(x, y) {\n    return y ? x.concat(y) : (y) => y.concat(x);\n}\n/**\n * @since 2.0.0\n */\nexport const reverse = (as) => [last(as), ...as.slice(0, -1).reverse()];\nexport function group(E) {\n    return (as) => {\n        const len = as.length;\n        if (len === 0) {\n            return [];\n        }\n        const out = [];\n        let head = as[0];\n        let nea = [head];\n        for (let i = 1; i < len; i++) {\n            const a = as[i];\n            if (E.equals(a, head)) {\n                nea.push(a);\n            }\n            else {\n                out.push(nea);\n                head = a;\n                nea = [head];\n            }\n        }\n        out.push(nea);\n        return out;\n    };\n}\n/**\n * Splits an array into sub-non-empty-arrays stored in an object, based on the result of calling a `string`-returning\n * function on each element, and grouping the results according to values returned\n *\n * @example\n * import { groupBy } from 'fp-ts/NonEmptyArray'\n *\n * assert.deepStrictEqual(groupBy((s: string) => String(s.length))(['a', 'b', 'ab']), {\n *   '1': ['a', 'b'],\n *   '2': ['ab']\n * })\n *\n * @since 2.0.0\n */\nexport const groupBy = (f) => (as) => {\n    const out = {};\n    for (const a of as) {\n        const k = f(a);\n        if (_.has.call(out, k)) {\n            out[k].push(a);\n        }\n        else {\n            out[k] = [a];\n        }\n    }\n    return out;\n};\n/**\n * @since 2.0.0\n */\nexport const sort = (O) => (as) => as.slice().sort(O.compare);\n/**\n * @since 2.0.0\n */\nexport const insertAt = (i, a) => (as) => i < 0 || i > as.length ? _.none : _.some(unsafeInsertAt(i, a, as));\n/**\n * @since 2.0.0\n */\nexport const updateAt = (i, a) => modifyAt(i, () => a);\n/**\n * @since 2.0.0\n */\nexport const modifyAt = (i, f) => (as) => isOutOfBound(i, as) ? _.none : _.some(unsafeUpdateAt(i, f(as[i]), as));\n/**\n * @since 2.0.0\n */\nexport const copy = fromReadonlyNonEmptyArray;\n/**\n * @category constructors\n * @since 2.0.0\n */\nexport const of = (a) => [a];\n/**\n * @since 2.5.1\n */\nexport const zipWith = (as, bs, f) => {\n    const cs = [f(as[0], bs[0])];\n    const len = Math.min(as.length, bs.length);\n    for (let i = 1; i < len; i++) {\n        cs[i] = f(as[i], bs[i]);\n    }\n    return cs;\n};\nexport function zip(as, bs) {\n    if (bs === undefined) {\n        return (bs) => zip(bs, as);\n    }\n    return zipWith(as, bs, (a, b) => [a, b]);\n}\n/**\n * @since 2.5.1\n */\nexport const unzip = (abs) => {\n    const fa = [abs[0][0]];\n    const fb = [abs[0][1]];\n    for (let i = 1; i < abs.length; i++) {\n        fa[i] = abs[i][0];\n        fb[i] = abs[i][1];\n    }\n    return [fa, fb];\n};\n/**\n * Prepend an element to every member of an array\n *\n * @example\n * import { prependAll } from 'fp-ts/NonEmptyArray'\n *\n * assert.deepStrictEqual(prependAll(9)([1, 2, 3, 4]), [9, 1, 9, 2, 9, 3, 9, 4])\n *\n * @since 2.10.0\n */\nexport const prependAll = (middle) => (as) => {\n    const out = [middle, as[0]];\n    for (let i = 1; i < as.length; i++) {\n        out.push(middle, as[i]);\n    }\n    return out;\n};\n/**\n * Places an element in between members of an array\n *\n * @example\n * import { intersperse } from 'fp-ts/NonEmptyArray'\n *\n * assert.deepStrictEqual(intersperse(9)([1, 2, 3, 4]), [1, 9, 2, 9, 3, 9, 4])\n *\n * @since 2.9.0\n */\nexport const intersperse = (middle) => (as) => {\n    const rest = tail(as);\n    return isNonEmpty(rest) ? pipe(rest, prependAll(middle), prepend(head(as))) : copy(as);\n};\n/**\n * @category folding\n * @since 2.0.0\n */\nexport const foldMapWithIndex = RNEA.foldMapWithIndex;\n/**\n * @category folding\n * @since 2.0.0\n */\nexport const foldMap = RNEA.foldMap;\n/**\n * @category sequencing\n * @since 2.10.0\n */\nexport const chainWithIndex = (f) => (as) => {\n    const out = fromReadonlyNonEmptyArray(f(0, head(as)));\n    for (let i = 1; i < as.length; i++) {\n        const bs = f(i, as[i]);\n        for (let j = 0; j < bs.length; j++) {\n            out.push(bs[j]);\n        }\n    }\n    return out;\n};\n/**\n * @since 2.10.0\n */\nexport const chop = (f) => (as) => {\n    const [b, rest] = f(as);\n    const out = [b];\n    let next = rest;\n    while (isNonEmpty(next)) {\n        const [b, rest] = f(next);\n        out.push(b);\n        next = rest;\n    }\n    return out;\n};\n/**\n * Splits a `NonEmptyArray` into two pieces, the first piece has max `n` elements.\n *\n * @since 2.10.0\n */\nexport const splitAt = (n) => (as) => {\n    const m = Math.max(1, n);\n    return m >= as.length ? [copy(as), []] : [pipe(as.slice(1, m), prepend(head(as))), as.slice(m)];\n};\n/**\n * @since 2.10.0\n */\nexport const chunksOf = (n) => chop(splitAt(n));\n/* istanbul ignore next */\nconst _map = (fa, f) => pipe(fa, map(f));\n/* istanbul ignore next */\nconst _mapWithIndex = (fa, f) => pipe(fa, mapWithIndex(f));\n/* istanbul ignore next */\nconst _ap = (fab, fa) => pipe(fab, ap(fa));\n/* istanbul ignore next */\nconst _extend = (wa, f) => pipe(wa, extend(f));\n/* istanbul ignore next */\nconst _reduce = (fa, b, f) => pipe(fa, reduce(b, f));\n/* istanbul ignore next */\nconst _foldMap = (M) => {\n    const foldMapM = foldMap(M);\n    return (fa, f) => pipe(fa, foldMapM(f));\n};\n/* istanbul ignore next */\nconst _reduceRight = (fa, b, f) => pipe(fa, reduceRight(b, f));\n/* istanbul ignore next */\nconst _traverse = (F) => {\n    const traverseF = traverse(F);\n    return (ta, f) => pipe(ta, traverseF(f));\n};\n/* istanbul ignore next */\nconst _alt = (fa, that) => pipe(fa, alt(that));\n/* istanbul ignore next */\nconst _reduceWithIndex = (fa, b, f) => pipe(fa, reduceWithIndex(b, f));\n/* istanbul ignore next */\nconst _foldMapWithIndex = (M) => {\n    const foldMapWithIndexM = foldMapWithIndex(M);\n    return (fa, f) => pipe(fa, foldMapWithIndexM(f));\n};\n/* istanbul ignore next */\nconst _reduceRightWithIndex = (fa, b, f) => pipe(fa, reduceRightWithIndex(b, f));\n/* istanbul ignore next */\nconst _traverseWithIndex = (F) => {\n    const traverseWithIndexF = traverseWithIndex(F);\n    return (ta, f) => pipe(ta, traverseWithIndexF(f));\n};\n/**\n * Less strict version of [`alt`](#alt).\n *\n * The `W` suffix (short for **W**idening) means that the return types will be merged.\n *\n * @example\n * import * as NEA from 'fp-ts/NonEmptyArray'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(\n *   pipe(\n *     [1, 2, 3] as NEA.NonEmptyArray<number>,\n *     NEA.altW(() => ['a', 'b'])\n *   ),\n *   [1, 2, 3, 'a', 'b']\n * )\n *\n * @category error handling\n * @since 2.9.0\n */\nexport const altW = (that) => (as) => pipe(as, concatW(that()));\n/**\n * Identifies an associative operation on a type constructor. It is similar to `Semigroup`, except that it applies to\n * types of kind `* -> *`.\n *\n * In case of `NonEmptyArray` concatenates the inputs into a single array.\n *\n * @example\n * import * as NEA from 'fp-ts/NonEmptyArray'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(\n *   pipe(\n *     [1, 2, 3],\n *     NEA.alt(() => [4, 5])\n *   ),\n *   [1, 2, 3, 4, 5]\n * )\n *\n * @category error handling\n * @since 2.6.2\n */\nexport const alt = altW;\n/**\n * Apply a function to an argument under a type constructor.\n *\n * @since 2.0.0\n */\nexport const ap = (as) => flatMap((f) => pipe(as, map(f)));\n/**\n * @example\n * import * as NEA from 'fp-ts/NonEmptyArray'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(\n *   pipe(\n *     [1, 2, 3],\n *     NEA.flatMap((n) => [`a${n}`, `b${n}`])\n *   ),\n *   ['a1', 'b1', 'a2', 'b2', 'a3', 'b3']\n * )\n *\n * @category sequencing\n * @since 2.14.0\n */\nexport const flatMap = /*#__PURE__*/ dual(2, (ma, f) => pipe(ma, chainWithIndex((i, a) => f(a, i))));\n/**\n * @since 2.0.0\n */\nexport const extend = (f) => (as) => {\n    let next = tail(as);\n    const out = [f(as)];\n    while (isNonEmpty(next)) {\n        out.push(f(next));\n        next = tail(next);\n    }\n    return out;\n};\n/**\n * @since 2.5.0\n */\nexport const duplicate = /*#__PURE__*/ extend(identity);\n/**\n * @category sequencing\n * @since 2.5.0\n */\nexport const flatten = /*#__PURE__*/ flatMap(identity);\n/**\n * `map` can be used to turn functions `(a: A) => B` into functions `(fa: F<A>) => F<B>` whose argument and return types\n * use the type constructor `F` to represent some computational context.\n *\n * @category mapping\n * @since 2.0.0\n */\nexport const map = (f) => mapWithIndex((_, a) => f(a));\n/**\n * @category mapping\n * @since 2.0.0\n */\nexport const mapWithIndex = (f) => (as) => {\n    const out = [f(0, head(as))];\n    for (let i = 1; i < as.length; i++) {\n        out.push(f(i, as[i]));\n    }\n    return out;\n};\n/**\n * @category folding\n * @since 2.0.0\n */\nexport const reduce = RNEA.reduce;\n/**\n * @category folding\n * @since 2.0.0\n */\nexport const reduceWithIndex = RNEA.reduceWithIndex;\n/**\n * @category folding\n * @since 2.0.0\n */\nexport const reduceRight = RNEA.reduceRight;\n/**\n * @category folding\n * @since 2.0.0\n */\nexport const reduceRightWithIndex = RNEA.reduceRightWithIndex;\n/**\n * @category traversing\n * @since 2.6.3\n */\nexport const traverse = (F) => {\n    const traverseWithIndexF = traverseWithIndex(F);\n    return (f) => traverseWithIndexF((_, a) => f(a));\n};\n/**\n * @category traversing\n * @since 2.6.3\n */\nexport const sequence = (F) => traverseWithIndex(F)((_, a) => a);\n/**\n * @category sequencing\n * @since 2.6.3\n */\nexport const traverseWithIndex = (F) => (f) => (as) => {\n    let out = F.map(f(0, head(as)), of);\n    for (let i = 1; i < as.length; i++) {\n        out = F.ap(F.map(out, (bs) => (b) => pipe(bs, append(b))), f(i, as[i]));\n    }\n    return out;\n};\n/**\n * @since 2.7.0\n */\nexport const extract = RNEA.head;\n/**\n * @category type lambdas\n * @since 2.0.0\n */\nexport const URI = 'NonEmptyArray';\n/**\n * @category instances\n * @since 2.0.0\n */\nexport const getShow = RNEA.getShow;\n/**\n * Builds a `Semigroup` instance for `NonEmptyArray`\n *\n * @category instances\n * @since 2.0.0\n */\nexport const getSemigroup = () => ({\n    concat\n});\n/**\n * @example\n * import { getEq } from 'fp-ts/NonEmptyArray'\n * import * as N from 'fp-ts/number'\n *\n * const E = getEq(N.Eq)\n * assert.strictEqual(E.equals([1, 2], [1, 2]), true)\n * assert.strictEqual(E.equals([1, 2], [1, 3]), false)\n *\n * @category instances\n * @since 2.0.0\n */\nexport const getEq = RNEA.getEq;\n/**\n * @since 2.11.0\n */\nexport const getUnionSemigroup = (E) => {\n    const unionE = union(E);\n    return {\n        concat: (first, second) => unionE(second)(first)\n    };\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Functor = {\n    URI,\n    map: _map\n};\n/**\n * @category mapping\n * @since 2.10.0\n */\nexport const flap = /*#__PURE__*/ flap_(Functor);\n/**\n * @category instances\n * @since 2.10.0\n */\nexport const Pointed = {\n    URI,\n    of\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const FunctorWithIndex = {\n    URI,\n    map: _map,\n    mapWithIndex: _mapWithIndex\n};\n/**\n * @category instances\n * @since 2.10.0\n */\nexport const Apply = {\n    URI,\n    map: _map,\n    ap: _ap\n};\n/**\n * Combine two effectful actions, keeping only the result of the first.\n *\n * @since 2.5.0\n */\nexport const apFirst = /*#__PURE__*/ apFirst_(Apply);\n/**\n * Combine two effectful actions, keeping only the result of the second.\n *\n * @since 2.5.0\n */\nexport const apSecond = /*#__PURE__*/ apSecond_(Apply);\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Applicative = {\n    URI,\n    map: _map,\n    ap: _ap,\n    of\n};\n/**\n * @category instances\n * @since 2.10.0\n */\nexport const Chain = {\n    URI,\n    map: _map,\n    ap: _ap,\n    chain: flatMap\n};\n/**\n * Composes computations in sequence, using the return value of one computation to determine the next computation and\n * keeping only the result of the first.\n *\n * @category sequencing\n * @since 2.5.0\n */\nexport const chainFirst = \n/*#__PURE__*/ chainFirst_(Chain);\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Monad = {\n    URI,\n    map: _map,\n    ap: _ap,\n    of,\n    chain: flatMap\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Foldable = {\n    URI,\n    reduce: _reduce,\n    foldMap: _foldMap,\n    reduceRight: _reduceRight\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const FoldableWithIndex = {\n    URI,\n    reduce: _reduce,\n    foldMap: _foldMap,\n    reduceRight: _reduceRight,\n    reduceWithIndex: _reduceWithIndex,\n    foldMapWithIndex: _foldMapWithIndex,\n    reduceRightWithIndex: _reduceRightWithIndex\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Traversable = {\n    URI,\n    map: _map,\n    reduce: _reduce,\n    foldMap: _foldMap,\n    reduceRight: _reduceRight,\n    traverse: _traverse,\n    sequence\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const TraversableWithIndex = {\n    URI,\n    map: _map,\n    mapWithIndex: _mapWithIndex,\n    reduce: _reduce,\n    foldMap: _foldMap,\n    reduceRight: _reduceRight,\n    traverse: _traverse,\n    sequence,\n    reduceWithIndex: _reduceWithIndex,\n    foldMapWithIndex: _foldMapWithIndex,\n    reduceRightWithIndex: _reduceRightWithIndex,\n    traverseWithIndex: _traverseWithIndex\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Alt = {\n    URI,\n    map: _map,\n    alt: _alt\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Comonad = {\n    URI,\n    map: _map,\n    extend: _extend,\n    extract\n};\n// -------------------------------------------------------------------------------------\n// do notation\n// -------------------------------------------------------------------------------------\n/**\n * @category do notation\n * @since 2.9.0\n */\nexport const Do = /*#__PURE__*/ of(_.emptyRecord);\n/**\n * @category do notation\n * @since 2.8.0\n */\nexport const bindTo = /*#__PURE__*/ bindTo_(Functor);\nconst let_ = /*#__PURE__*/ let__(Functor);\nexport { \n/**\n * @category do notation\n * @since 2.13.0\n */\nlet_ as let };\n/**\n * @category do notation\n * @since 2.8.0\n */\nexport const bind = /*#__PURE__*/ bind_(Chain);\n/**\n * @category do notation\n * @since 2.8.0\n */\nexport const apS = /*#__PURE__*/ apS_(Apply);\n// -------------------------------------------------------------------------------------\n// utils\n// -------------------------------------------------------------------------------------\n/**\n * @since 2.0.0\n */\nexport const head = RNEA.head;\n/**\n * @since 2.0.0\n */\nexport const tail = (as) => as.slice(1);\n/**\n * @since 2.0.0\n */\nexport const last = RNEA.last;\n/**\n * Get all but the last element of a non empty array, creating a new array.\n *\n * @example\n * import { init } from 'fp-ts/NonEmptyArray'\n *\n * assert.deepStrictEqual(init([1, 2, 3]), [1, 2])\n * assert.deepStrictEqual(init([1]), [])\n *\n * @since 2.2.0\n */\nexport const init = (as) => as.slice(0, -1);\n/**\n * @since 2.0.0\n */\nexport const min = RNEA.min;\n/**\n * @since 2.0.0\n */\nexport const max = RNEA.max;\n/**\n * @since 2.10.0\n */\nexport const concatAll = (S) => (as) => as.reduce(S.concat);\n/**\n * Break an `Array` into its first element and remaining elements.\n *\n * @category pattern matching\n * @since 2.11.0\n */\nexport const matchLeft = (f) => (as) => f(head(as), tail(as));\n/**\n * Break an `Array` into its initial elements and the last element.\n *\n * @category pattern matching\n * @since 2.11.0\n */\nexport const matchRight = (f) => (as) => f(init(as), last(as));\n/**\n * Apply a function to the head, creating a new `NonEmptyArray`.\n *\n * @since 2.11.0\n */\nexport const modifyHead = (f) => (as) => [f(head(as)), ...tail(as)];\n/**\n * Change the head, creating a new `NonEmptyArray`.\n *\n * @since 2.11.0\n */\nexport const updateHead = (a) => modifyHead(() => a);\n/**\n * Apply a function to the last element, creating a new `NonEmptyArray`.\n *\n * @since 2.11.0\n */\nexport const modifyLast = (f) => (as) => pipe(init(as), append(f(last(as))));\n/**\n * Change the last element, creating a new `NonEmptyArray`.\n *\n * @since 2.11.0\n */\nexport const updateLast = (a) => modifyLast(() => a);\n/**\n * Places an element in between members of a `NonEmptyArray`, then folds the results using the provided `Semigroup`.\n *\n * @example\n * import * as S from 'fp-ts/string'\n * import { intercalate } from 'fp-ts/NonEmptyArray'\n *\n * assert.deepStrictEqual(intercalate(S.Semigroup)('-')(['a', 'b', 'c']), 'a-b-c')\n *\n * @since 2.12.0\n */\nexport const intercalate = RNEA.intercalate;\n// -------------------------------------------------------------------------------------\n// legacy\n// -------------------------------------------------------------------------------------\n/**\n * Alias of `flatMap`.\n *\n * @category legacy\n * @since 2.0.0\n */\nexport const chain = flatMap;\nexport function groupSort(O) {\n    const sortO = sort(O);\n    const groupO = group(O);\n    return (as) => (isNonEmpty(as) ? groupO(sortO(as)) : []);\n}\nexport function filter(predicate) {\n    return filterWithIndex((_, a) => predicate(a));\n}\n/**\n * Use [`filterWithIndex`](./Array.ts.html#filterwithindex) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const filterWithIndex = (predicate) => (as) => fromArray(as.filter((a, i) => predicate(i, a)));\n/**\n * Use [`unprepend`](#unprepend) instead.\n *\n * @category zone of death\n * @since 2.9.0\n * @deprecated\n */\nexport const uncons = unprepend;\n/**\n * Use [`unappend`](#unappend) instead.\n *\n * @category zone of death\n * @since 2.9.0\n * @deprecated\n */\nexport const unsnoc = unappend;\nexport function cons(head, tail) {\n    return tail === undefined ? prepend(head) : pipe(tail, prepend(head));\n}\n/**\n * Use [`append`](./Array.ts.html#append) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const snoc = (init, end) => pipe(init, append(end));\n/**\n * Use [`prependAll`](#prependall) instead.\n *\n * @category zone of death\n * @since 2.9.0\n * @deprecated\n */\nexport const prependToAll = prependAll;\n/**\n * Use [`concatAll`](#concatall) instead.\n *\n * @category zone of death\n * @since 2.5.0\n * @deprecated\n */\nexport const fold = RNEA.concatAll;\n/**\n * This instance is deprecated, use small, specific instances instead.\n * For example if a function needs a `Functor` instance, pass `NEA.Functor` instead of `NEA.nonEmptyArray`\n * (where `NEA` is from `import NEA from 'fp-ts/NonEmptyArray'`)\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const nonEmptyArray = {\n    URI,\n    of,\n    map: _map,\n    mapWithIndex: _mapWithIndex,\n    ap: _ap,\n    chain: flatMap,\n    extend: _extend,\n    extract: extract,\n    reduce: _reduce,\n    foldMap: _foldMap,\n    reduceRight: _reduceRight,\n    traverse: _traverse,\n    sequence,\n    reduceWithIndex: _reduceWithIndex,\n    foldMapWithIndex: _foldMapWithIndex,\n    reduceRightWithIndex: _reduceRightWithIndex,\n    traverseWithIndex: _traverseWithIndex,\n    alt: _alt\n};\n","// -------------------------------------------------------------------------------------\n// refinements\n// -------------------------------------------------------------------------------------\n/**\n * @category refinements\n * @since 2.11.0\n */\nexport const isNumber = (u) => typeof u === 'number';\n// -------------------------------------------------------------------------------------\n// instances\n// -------------------------------------------------------------------------------------\n/**\n * @category instances\n * @since 2.10.0\n */\nexport const Eq = {\n    equals: (first, second) => first === second\n};\n/**\n * @category instances\n * @since 2.10.0\n */\nexport const Ord = {\n    equals: Eq.equals,\n    compare: (first, second) => (first < second ? -1 : first > second ? 1 : 0)\n};\n/**\n * @category instances\n * @since 2.10.0\n */\nexport const Bounded = {\n    equals: Eq.equals,\n    compare: Ord.compare,\n    top: Infinity,\n    bottom: -Infinity\n};\n/**\n * @category instances\n * @since 2.10.0\n */\nexport const Show = {\n    show: (n) => JSON.stringify(n)\n};\n/**\n * @category instances\n * @since 2.11.0\n */\nexport const MagmaSub = {\n    concat: (first, second) => first - second\n};\n/**\n * `number` semigroup under addition.\n *\n * @example\n * import { SemigroupSum } from 'fp-ts/number'\n *\n * assert.deepStrictEqual(SemigroupSum.concat(2, 3), 5)\n *\n * @category instances\n * @since 2.10.0\n */\nexport const SemigroupSum = {\n    concat: (first, second) => first + second\n};\n/**\n * `number` semigroup under multiplication.\n *\n * @example\n * import { SemigroupProduct } from 'fp-ts/number'\n *\n * assert.deepStrictEqual(SemigroupProduct.concat(2, 3), 6)\n *\n * @category instances\n * @since 2.10.0\n */\nexport const SemigroupProduct = {\n    concat: (first, second) => first * second\n};\n/**\n * `number` monoid under addition.\n *\n * The `empty` value is `0`.\n *\n * @example\n * import { MonoidSum } from 'fp-ts/number'\n *\n * assert.deepStrictEqual(MonoidSum.concat(2, MonoidSum.empty), 2)\n *\n * @category instances\n * @since 2.10.0\n */\nexport const MonoidSum = {\n    concat: SemigroupSum.concat,\n    empty: 0\n};\n/**\n * `number` monoid under multiplication.\n *\n * The `empty` value is `1`.\n *\n * @example\n * import { MonoidProduct } from 'fp-ts/number'\n *\n * assert.deepStrictEqual(MonoidProduct.concat(2, MonoidProduct.empty), 2)\n *\n * @category instances\n * @since 2.10.0\n */\nexport const MonoidProduct = {\n    concat: SemigroupProduct.concat,\n    empty: 1\n};\n/**\n * @category instances\n * @since 2.10.0\n */\nexport const Field = {\n    add: SemigroupSum.concat,\n    zero: 0,\n    mul: SemigroupProduct.concat,\n    one: 1,\n    sub: MagmaSub.concat,\n    degree: (_) => 1,\n    div: (first, second) => first / second,\n    mod: (first, second) => first % second\n};\n","/**\n * ```ts\n * interface Separated<E, A> {\n *    readonly left: E\n *    readonly right: A\n * }\n * ```\n *\n * Represents a result of separating a whole into two parts.\n *\n * @since 2.10.0\n */\nimport { pipe } from './function.js';\nimport { flap as flap_ } from './Functor.js';\n// -------------------------------------------------------------------------------------\n// constructors\n// -------------------------------------------------------------------------------------\n/**\n * @category constructors\n * @since 2.10.0\n */\nexport const separated = (left, right) => ({ left, right });\nconst _map = (fa, f) => pipe(fa, map(f));\nconst _mapLeft = (fa, f) => pipe(fa, mapLeft(f));\nconst _bimap = (fa, g, f) => pipe(fa, bimap(g, f));\n/**\n * `map` can be used to turn functions `(a: A) => B` into functions `(fa: F<A>) => F<B>` whose argument and return types\n * use the type constructor `F` to represent some computational context.\n *\n * @category mapping\n * @since 2.10.0\n */\nexport const map = (f) => (fa) => separated(left(fa), f(right(fa)));\n/**\n * Map a function over the first type argument of a bifunctor.\n *\n * @category error handling\n * @since 2.10.0\n */\nexport const mapLeft = (f) => (fa) => separated(f(left(fa)), right(fa));\n/**\n * Map a pair of functions over the two type arguments of the bifunctor.\n *\n * @category mapping\n * @since 2.10.0\n */\nexport const bimap = (f, g) => (fa) => separated(f(left(fa)), g(right(fa)));\n/**\n * @category type lambdas\n * @since 2.10.0\n */\nexport const URI = 'Separated';\n/**\n * @category instances\n * @since 2.10.0\n */\nexport const Bifunctor = {\n    URI,\n    mapLeft: _mapLeft,\n    bimap: _bimap\n};\n/**\n * @category instances\n * @since 2.10.0\n */\nexport const Functor = {\n    URI,\n    map: _map\n};\n/**\n * @category mapping\n * @since 2.10.0\n */\nexport const flap = /*#__PURE__*/ flap_(Functor);\n// -------------------------------------------------------------------------------------\n// utils\n// -------------------------------------------------------------------------------------\n/**\n * @since 2.10.0\n */\nexport const left = (s) => s.left;\n/**\n * @since 2.10.0\n */\nexport const right = (s) => s.right;\n","import * as _ from './internal.js';\nexport function wiltDefault(T, C) {\n    return (F) => {\n        const traverseF = T.traverse(F);\n        return (wa, f) => F.map(traverseF(wa, f), C.separate);\n    };\n}\nexport function witherDefault(T, C) {\n    return (F) => {\n        const traverseF = T.traverse(F);\n        return (wa, f) => F.map(traverseF(wa, f), C.compact);\n    };\n}\nexport function filterE(W) {\n    return (F) => {\n        const witherF = W.wither(F);\n        return (predicate) => (ga) => witherF(ga, (a) => F.map(predicate(a), (b) => (b ? _.some(a) : _.none)));\n    };\n}\n","export function guard(F, P) {\n    return (b) => (b ? P.of(undefined) : F.zero());\n}\n","import { apFirst as apFirst_, apS as apS_, apSecond as apSecond_ } from './Apply.js';\nimport { bind as bind_, chainFirst as chainFirst_ } from './Chain.js';\nimport { fromEquals } from './Eq.js';\nimport { fromEitherK as fromEitherK_ } from './FromEither.js';\nimport { dual, identity, pipe } from './function.js';\nimport { bindTo as bindTo_, flap as flap_, let as let__ } from './Functor.js';\nimport * as _ from './internal.js';\nimport * as N from './number.js';\nimport { fromCompare } from './Ord.js';\nimport * as RNEA from './ReadonlyNonEmptyArray.js';\nimport { separated } from './Separated.js';\nimport { filterE as filterE_, wiltDefault, witherDefault } from './Witherable.js';\nimport { guard as guard_ } from './Zero.js';\n// -------------------------------------------------------------------------------------\n// refinements\n// -------------------------------------------------------------------------------------\n/**\n * Test whether a `ReadonlyArray` is empty.\n *\n * @example\n * import { isEmpty } from 'fp-ts/ReadonlyArray'\n *\n * assert.strictEqual(isEmpty([]), true)\n *\n * @category refinements\n * @since 2.5.0\n */\nexport const isEmpty = (as) => as.length === 0;\n/**\n * Test whether a `ReadonlyArray` is non empty.\n *\n * @category refinements\n * @since 2.5.0\n */\nexport const isNonEmpty = RNEA.isNonEmpty;\n// -------------------------------------------------------------------------------------\n// constructors\n// -------------------------------------------------------------------------------------\n/**\n * Prepend an element to the front of a `ReadonlyArray`, creating a new `ReadonlyNonEmptyArray`.\n *\n * @example\n * import { prepend } from 'fp-ts/ReadonlyArray'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(pipe([2, 3, 4], prepend(1)), [1, 2, 3, 4])\n *\n * @since 2.10.0\n */\nexport const prepend = RNEA.prepend;\n/**\n * Less strict version of [`prepend`](#prepend).\n *\n * @since 2.11.0\n */\nexport const prependW = RNEA.prependW;\n/**\n * Append an element to the end of a `ReadonlyArray`, creating a new `ReadonlyNonEmptyArray`.\n *\n * @example\n * import { append } from 'fp-ts/ReadonlyArray'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(pipe([1, 2, 3], append(4)), [1, 2, 3, 4])\n *\n * @since 2.10.0\n */\nexport const append = RNEA.append;\n/**\n * Less strict version of [`append`](#append).\n *\n * @since 2.11.0\n */\nexport const appendW = RNEA.appendW;\n/**\n * Return a `ReadonlyArray` of length `n` with element `i` initialized with `f(i)`.\n *\n * **Note**. `n` is normalized to a non negative integer.\n *\n * @example\n * import { makeBy } from 'fp-ts/ReadonlyArray'\n *\n * const double = (n: number): number => n * 2\n * assert.deepStrictEqual(makeBy(5, double), [0, 2, 4, 6, 8])\n *\n * @category constructors\n * @since 2.5.0\n */\nexport const makeBy = (n, f) => (n <= 0 ? empty : RNEA.makeBy(f)(n));\n/**\n * Create a `ReadonlyArray` containing a value repeated the specified number of times.\n *\n * **Note**. `n` is normalized to a non negative integer.\n *\n * @example\n * import { replicate } from 'fp-ts/ReadonlyArray'\n *\n * assert.deepStrictEqual(replicate(3, 'a'), ['a', 'a', 'a'])\n *\n * @category constructors\n * @since 2.5.0\n */\nexport const replicate = (n, a) => makeBy(n, () => a);\nexport function fromPredicate(predicate) {\n    return (a) => (predicate(a) ? [a] : empty);\n}\n// -------------------------------------------------------------------------------------\n// conversions\n// -------------------------------------------------------------------------------------\n/**\n * @category conversions\n * @since 2.11.0\n */\nexport const fromOption = (ma) => (_.isNone(ma) ? empty : [ma.value]);\n/**\n * Transforms an `Either` to a `ReadonlyArray`.\n *\n * @category conversions\n * @since 2.11.0\n */\nexport const fromEither = (e) => (_.isLeft(e) ? empty : [e.right]);\n/**\n * Less strict version of [`match`](#match).\n *\n * The `W` suffix (short for **W**idening) means that the handler return types will be merged.\n *\n * @category pattern matching\n * @since 2.11.0\n */\nexport const matchW = (onEmpty, onNonEmpty) => (as) => isNonEmpty(as) ? onNonEmpty(as) : onEmpty();\n/**\n * @category pattern matching\n * @since 2.11.0\n */\nexport const match = matchW;\n/**\n * Less strict version of [`matchLeft`](#matchleft).\n *\n * @category pattern matching\n * @since 2.11.0\n */\nexport const matchLeftW = (onEmpty, onNonEmpty) => (as) => isNonEmpty(as) ? onNonEmpty(RNEA.head(as), RNEA.tail(as)) : onEmpty();\n/**\n * Break a `ReadonlyArray` into its first element and remaining elements.\n *\n * @example\n * import { matchLeft } from 'fp-ts/ReadonlyArray'\n *\n * const len: <A>(as: ReadonlyArray<A>) => number = matchLeft(() => 0, (_, tail) => 1 + len(tail))\n * assert.strictEqual(len([1, 2, 3]), 3)\n *\n * @category pattern matching\n * @since 2.10.0\n */\nexport const matchLeft = matchLeftW;\n/**\n * Alias of [`matchLeft`](#matchleft).\n *\n * @category pattern matching\n * @since 2.5.0\n */\nexport const foldLeft = matchLeft;\n/**\n * Less strict version of [`matchRight`](#matchright).\n *\n * @category pattern matching\n * @since 2.11.0\n */\nexport const matchRightW = (onEmpty, onNonEmpty) => (as) => isNonEmpty(as) ? onNonEmpty(RNEA.init(as), RNEA.last(as)) : onEmpty();\n/**\n * Break a `ReadonlyArray` into its initial elements and the last element.\n *\n * @category pattern matching\n * @since 2.10.0\n */\nexport const matchRight = matchRightW;\n/**\n * Alias of [`matchRight`](#matchright).\n *\n * @category pattern matching\n * @since 2.5.0\n */\nexport const foldRight = matchRight;\n// -------------------------------------------------------------------------------------\n// combinators\n// -------------------------------------------------------------------------------------\n/**\n * @category sequencing\n * @since 2.7.0\n */\nexport const chainWithIndex = (f) => (as) => {\n    if (isEmpty(as)) {\n        return empty;\n    }\n    const out = [];\n    for (let i = 0; i < as.length; i++) {\n        const bs = f(i, as[i]);\n        for (let j = 0; j < bs.length; j++) {\n            out.push(bs[j]);\n        }\n    }\n    return out;\n};\n/**\n * Same as `reduce` but it carries over the intermediate steps.\n *\n * @example\n * import { scanLeft } from 'fp-ts/ReadonlyArray'\n *\n * assert.deepStrictEqual(scanLeft(10, (b, a: number) => b - a)([1, 2, 3]), [10, 9, 7, 4])\n *\n * @since 2.5.0\n */\nexport const scanLeft = (b, f) => (as) => {\n    const len = as.length;\n    const out = new Array(len + 1);\n    out[0] = b;\n    for (let i = 0; i < len; i++) {\n        out[i + 1] = f(out[i], as[i]);\n    }\n    return out;\n};\n/**\n * Fold an array from the right, keeping all intermediate results instead of only the final result\n *\n * @example\n * import { scanRight } from 'fp-ts/ReadonlyArray'\n *\n * assert.deepStrictEqual(scanRight(10, (a: number, b) => b - a)([1, 2, 3]), [4, 5, 7, 10])\n *\n * @since 2.5.0\n */\nexport const scanRight = (b, f) => (as) => {\n    const len = as.length;\n    const out = new Array(len + 1);\n    out[len] = b;\n    for (let i = len - 1; i >= 0; i--) {\n        out[i] = f(as[i], out[i + 1]);\n    }\n    return out;\n};\n/**\n * Calculate the number of elements in a `ReadonlyArray`.\n *\n * @since 2.10.0\n */\nexport const size = (as) => as.length;\n/**\n * Test whether an array contains a particular index\n *\n * @since 2.5.0\n */\nexport const isOutOfBound = RNEA.isOutOfBound;\nexport function lookup(i, as) {\n    return as === undefined ? (as) => lookup(i, as) : isOutOfBound(i, as) ? _.none : _.some(as[i]);\n}\n/**\n * Get the first element in an array, or `None` if the array is empty\n *\n * @example\n * import { head } from 'fp-ts/ReadonlyArray'\n * import { some, none } from 'fp-ts/Option'\n *\n * assert.deepStrictEqual(head([1, 2, 3]), some(1))\n * assert.deepStrictEqual(head([]), none)\n *\n * @since 2.5.0\n */\nexport const head = (as) => (isNonEmpty(as) ? _.some(RNEA.head(as)) : _.none);\n/**\n * Get the last element in an array, or `None` if the array is empty\n *\n * @example\n * import { last } from 'fp-ts/ReadonlyArray'\n * import { some, none } from 'fp-ts/Option'\n *\n * assert.deepStrictEqual(last([1, 2, 3]), some(3))\n * assert.deepStrictEqual(last([]), none)\n *\n * @since 2.5.0\n */\nexport const last = (as) => (isNonEmpty(as) ? _.some(RNEA.last(as)) : _.none);\n/**\n * Get all but the first element of an array, creating a new array, or `None` if the array is empty\n *\n * @example\n * import { tail } from 'fp-ts/ReadonlyArray'\n * import { some, none } from 'fp-ts/Option'\n *\n * assert.deepStrictEqual(tail([1, 2, 3]), some([2, 3]))\n * assert.deepStrictEqual(tail([]), none)\n *\n * @since 2.5.0\n */\nexport const tail = (as) => isNonEmpty(as) ? _.some(RNEA.tail(as)) : _.none;\n/**\n * Get all but the last element of an array, creating a new array, or `None` if the array is empty\n *\n * @example\n * import { init } from 'fp-ts/ReadonlyArray'\n * import { some, none } from 'fp-ts/Option'\n *\n * assert.deepStrictEqual(init([1, 2, 3]), some([1, 2]))\n * assert.deepStrictEqual(init([]), none)\n *\n * @since 2.5.0\n */\nexport const init = (as) => isNonEmpty(as) ? _.some(RNEA.init(as)) : _.none;\n/**\n * Keep only a max number of elements from the start of an `ReadonlyArray`, creating a new `ReadonlyArray`.\n *\n * **Note**. `n` is normalized to a non negative integer.\n *\n * @example\n * import * as RA from 'fp-ts/ReadonlyArray'\n * import { pipe } from 'fp-ts/function'\n *\n * const input: ReadonlyArray<number> = [1, 2, 3]\n * assert.deepStrictEqual(pipe(input, RA.takeLeft(2)), [1, 2])\n *\n * // out of bounds\n * assert.strictEqual(pipe(input, RA.takeLeft(4)), input)\n * assert.strictEqual(pipe(input, RA.takeLeft(-1)), input)\n *\n * @since 2.5.0\n */\nexport const takeLeft = (n) => (as) => isOutOfBound(n, as) ? as : n === 0 ? empty : as.slice(0, n);\n/**\n * Keep only a max number of elements from the end of an `ReadonlyArray`, creating a new `ReadonlyArray`.\n *\n * **Note**. `n` is normalized to a non negative integer.\n *\n * @example\n * import * as RA from 'fp-ts/ReadonlyArray'\n * import { pipe } from 'fp-ts/function'\n *\n * const input: ReadonlyArray<number> = [1, 2, 3]\n * assert.deepStrictEqual(pipe(input, RA.takeRight(2)), [2, 3])\n *\n * // out of bounds\n * assert.strictEqual(pipe(input, RA.takeRight(4)), input)\n * assert.strictEqual(pipe(input, RA.takeRight(-1)), input)\n *\n * @since 2.5.0\n */\nexport const takeRight = (n) => (as) => isOutOfBound(n, as) ? as : n === 0 ? empty : as.slice(-n);\nexport function takeLeftWhile(predicate) {\n    return (as) => {\n        const out = [];\n        for (const a of as) {\n            if (!predicate(a)) {\n                break;\n            }\n            out.push(a);\n        }\n        const len = out.length;\n        return len === as.length ? as : len === 0 ? empty : out;\n    };\n}\nconst spanLeftIndex = (as, predicate) => {\n    const l = as.length;\n    let i = 0;\n    for (; i < l; i++) {\n        if (!predicate(as[i])) {\n            break;\n        }\n    }\n    return i;\n};\nexport function spanLeft(predicate) {\n    return (as) => {\n        const [init, rest] = splitAt(spanLeftIndex(as, predicate))(as);\n        return { init, rest };\n    };\n}\n/**\n * Drop a max number of elements from the start of an `ReadonlyArray`, creating a new `ReadonlyArray`.\n *\n * **Note**. `n` is normalized to a non negative integer.\n *\n * @example\n * import * as RA from 'fp-ts/ReadonlyArray'\n * import { pipe } from 'fp-ts/function'\n *\n * const input: ReadonlyArray<number> = [1, 2, 3]\n * assert.deepStrictEqual(pipe(input, RA.dropLeft(2)), [3])\n * assert.strictEqual(pipe(input, RA.dropLeft(0)), input)\n * assert.strictEqual(pipe(input, RA.dropLeft(-1)), input)\n *\n * @since 2.5.0\n */\nexport const dropLeft = (n) => (as) => n <= 0 || isEmpty(as) ? as : n >= as.length ? empty : as.slice(n, as.length);\n/**\n * Drop a max number of elements from the end of an `ReadonlyArray`, creating a new `ReadonlyArray`.\n *\n * **Note**. `n` is normalized to a non negative integer.\n *\n * @example\n * import * as RA from 'fp-ts/ReadonlyArray'\n * import { pipe } from 'fp-ts/function'\n *\n * const input: ReadonlyArray<number> = [1, 2, 3]\n * assert.deepStrictEqual(pipe(input, RA.dropRight(2)), [1])\n * assert.strictEqual(pipe(input, RA.dropRight(0)), input)\n * assert.strictEqual(pipe(input, RA.dropRight(-1)), input)\n *\n * @since 2.5.0\n */\nexport const dropRight = (n) => (as) => n <= 0 || isEmpty(as) ? as : n >= as.length ? empty : as.slice(0, as.length - n);\nexport function dropLeftWhile(predicate) {\n    return (as) => {\n        const i = spanLeftIndex(as, predicate);\n        return i === 0 ? as : i === as.length ? empty : as.slice(i);\n    };\n}\n/**\n * Find the first index for which a predicate holds\n *\n * @example\n * import { findIndex } from 'fp-ts/ReadonlyArray'\n * import { some, none } from 'fp-ts/Option'\n *\n * assert.deepStrictEqual(findIndex((n: number) => n === 2)([1, 2, 3]), some(1))\n * assert.deepStrictEqual(findIndex((n: number) => n === 2)([]), none)\n *\n * @since 2.5.0\n */\nexport const findIndex = (predicate) => (as) => {\n    for (let i = 0; i < as.length; i++) {\n        if (predicate(as[i])) {\n            return _.some(i);\n        }\n    }\n    return _.none;\n};\nexport function findFirst(predicate) {\n    return (as) => {\n        for (let i = 0; i < as.length; i++) {\n            if (predicate(as[i])) {\n                return _.some(as[i]);\n            }\n        }\n        return _.none;\n    };\n}\n/**\n * Find the first element returned by an option based selector function\n *\n * @example\n * import { findFirstMap } from 'fp-ts/ReadonlyArray'\n * import { some, none } from 'fp-ts/Option'\n *\n * interface Person {\n *   readonly name: string\n *   readonly age?: number\n * }\n *\n * const persons: ReadonlyArray<Person> = [{ name: 'John' }, { name: 'Mary', age: 45 }, { name: 'Joey', age: 28 }]\n *\n * // returns the name of the first person that has an age\n * assert.deepStrictEqual(findFirstMap((p: Person) => (p.age === undefined ? none : some(p.name)))(persons), some('Mary'))\n *\n * @since 2.5.0\n */\nexport const findFirstMap = (f) => (as) => {\n    for (let i = 0; i < as.length; i++) {\n        const out = f(as[i]);\n        if (_.isSome(out)) {\n            return out;\n        }\n    }\n    return _.none;\n};\nexport function findLast(predicate) {\n    return (as) => {\n        for (let i = as.length - 1; i >= 0; i--) {\n            if (predicate(as[i])) {\n                return _.some(as[i]);\n            }\n        }\n        return _.none;\n    };\n}\n/**\n * Find the last element returned by an option based selector function\n *\n * @example\n * import { findLastMap } from 'fp-ts/ReadonlyArray'\n * import { some, none } from 'fp-ts/Option'\n *\n * interface Person {\n *   readonly name: string\n *   readonly age?: number\n * }\n *\n * const persons: ReadonlyArray<Person> = [{ name: 'John' }, { name: 'Mary', age: 45 }, { name: 'Joey', age: 28 }]\n *\n * // returns the name of the last person that has an age\n * assert.deepStrictEqual(findLastMap((p: Person) => (p.age === undefined ? none : some(p.name)))(persons), some('Joey'))\n *\n * @since 2.5.0\n */\nexport const findLastMap = (f) => (as) => {\n    for (let i = as.length - 1; i >= 0; i--) {\n        const out = f(as[i]);\n        if (_.isSome(out)) {\n            return out;\n        }\n    }\n    return _.none;\n};\n/**\n * Returns the index of the last element of the list which matches the predicate\n *\n * @example\n * import { findLastIndex } from 'fp-ts/ReadonlyArray'\n * import { some, none } from 'fp-ts/Option'\n *\n * interface X {\n *   readonly a: number\n *   readonly b: number\n * }\n * const xs: ReadonlyArray<X> = [{ a: 1, b: 0 }, { a: 1, b: 1 }]\n * assert.deepStrictEqual(findLastIndex((x: { readonly a: number }) => x.a === 1)(xs), some(1))\n * assert.deepStrictEqual(findLastIndex((x: { readonly a: number }) => x.a === 4)(xs), none)\n *\n *\n * @since 2.5.0\n */\nexport const findLastIndex = (predicate) => (as) => {\n    for (let i = as.length - 1; i >= 0; i--) {\n        if (predicate(as[i])) {\n            return _.some(i);\n        }\n    }\n    return _.none;\n};\n/**\n * Insert an element at the specified index, creating a new array, or returning `None` if the index is out of bounds\n *\n * @example\n * import { insertAt } from 'fp-ts/ReadonlyArray'\n * import { some } from 'fp-ts/Option'\n *\n * assert.deepStrictEqual(insertAt(2, 5)([1, 2, 3, 4]), some([1, 2, 5, 3, 4]))\n *\n * @since 2.5.0\n */\nexport const insertAt = (i, a) => (as) => i < 0 || i > as.length ? _.none : _.some(RNEA.unsafeInsertAt(i, a, as));\n/**\n * Change the element at the specified index, creating a new array, or returning `None` if the index is out of bounds\n *\n * @example\n * import { updateAt } from 'fp-ts/ReadonlyArray'\n * import { some, none } from 'fp-ts/Option'\n *\n * assert.deepStrictEqual(updateAt(1, 1)([1, 2, 3]), some([1, 1, 3]))\n * assert.deepStrictEqual(updateAt(1, 1)([]), none)\n *\n * @since 2.5.0\n */\nexport const updateAt = (i, a) => modifyAt(i, () => a);\n/**\n * Delete the element at the specified index, creating a new array, or returning `None` if the index is out of bounds\n *\n * @example\n * import { deleteAt } from 'fp-ts/ReadonlyArray'\n * import { some, none } from 'fp-ts/Option'\n *\n * assert.deepStrictEqual(deleteAt(0)([1, 2, 3]), some([2, 3]))\n * assert.deepStrictEqual(deleteAt(1)([]), none)\n *\n * @since 2.5.0\n */\nexport const deleteAt = (i) => (as) => isOutOfBound(i, as) ? _.none : _.some(unsafeDeleteAt(i, as));\n/**\n * Apply a function to the element at the specified index, creating a new array, or returning `None` if the index is out\n * of bounds\n *\n * @example\n * import { modifyAt } from 'fp-ts/ReadonlyArray'\n * import { some, none } from 'fp-ts/Option'\n *\n * const double = (x: number): number => x * 2\n * assert.deepStrictEqual(modifyAt(1, double)([1, 2, 3]), some([1, 4, 3]))\n * assert.deepStrictEqual(modifyAt(1, double)([]), none)\n *\n * @since 2.5.0\n */\nexport const modifyAt = (i, f) => (as) => isOutOfBound(i, as) ? _.none : _.some(unsafeUpdateAt(i, f(as[i]), as));\n/**\n * Reverse an array, creating a new array\n *\n * @example\n * import { reverse } from 'fp-ts/ReadonlyArray'\n *\n * assert.deepStrictEqual(reverse([1, 2, 3]), [3, 2, 1])\n *\n * @since 2.5.0\n */\nexport const reverse = (as) => (as.length <= 1 ? as : as.slice().reverse());\n/**\n * Extracts from an array of `Either` all the `Right` elements. All the `Right` elements are extracted in order\n *\n * @example\n * import { rights } from 'fp-ts/ReadonlyArray'\n * import { right, left } from 'fp-ts/Either'\n *\n * assert.deepStrictEqual(rights([right(1), left('foo'), right(2)]), [1, 2])\n *\n * @since 2.5.0\n */\nexport const rights = (as) => {\n    const r = [];\n    for (let i = 0; i < as.length; i++) {\n        const a = as[i];\n        if (a._tag === 'Right') {\n            r.push(a.right);\n        }\n    }\n    return r;\n};\n/**\n * Extracts from an array of `Either` all the `Left` elements. All the `Left` elements are extracted in order\n *\n * @example\n * import { lefts } from 'fp-ts/ReadonlyArray'\n * import { left, right } from 'fp-ts/Either'\n *\n * assert.deepStrictEqual(lefts([right(1), left('foo'), right(2)]), ['foo'])\n *\n * @since 2.5.0\n */\nexport const lefts = (as) => {\n    const r = [];\n    for (let i = 0; i < as.length; i++) {\n        const a = as[i];\n        if (a._tag === 'Left') {\n            r.push(a.left);\n        }\n    }\n    return r;\n};\n/**\n * Sort the elements of an array in increasing order, creating a new array\n *\n * @example\n * import { sort } from 'fp-ts/ReadonlyArray'\n * import * as N from 'fp-ts/number'\n *\n * assert.deepStrictEqual(sort(N.Ord)([3, 2, 1]), [1, 2, 3])\n *\n * @since 2.5.0\n */\nexport const sort = (O) => (as) => as.length <= 1 ? as : as.slice().sort(O.compare);\n// TODO: curry and make data-last in v3\n/**\n * Apply a function to pairs of elements at the same index in two arrays, collecting the results in a new array. If one\n * input array is short, excess elements of the longer array are discarded.\n *\n * @example\n * import { zipWith } from 'fp-ts/ReadonlyArray'\n *\n * assert.deepStrictEqual(zipWith([1, 2, 3], ['a', 'b', 'c', 'd'], (n, s) => s + n), ['a1', 'b2', 'c3'])\n *\n * @since 2.5.0\n */\nexport const zipWith = (fa, fb, f) => {\n    const fc = [];\n    const len = Math.min(fa.length, fb.length);\n    for (let i = 0; i < len; i++) {\n        fc[i] = f(fa[i], fb[i]);\n    }\n    return fc;\n};\nexport function zip(as, bs) {\n    if (bs === undefined) {\n        return (bs) => zip(bs, as);\n    }\n    return zipWith(as, bs, (a, b) => [a, b]);\n}\n/**\n * The function is reverse of `zip`. Takes an array of pairs and return two corresponding arrays\n *\n * @example\n * import { unzip } from 'fp-ts/ReadonlyArray'\n *\n * assert.deepStrictEqual(unzip([[1, 'a'], [2, 'b'], [3, 'c']]), [[1, 2, 3], ['a', 'b', 'c']])\n *\n * @since 2.5.0\n */\nexport const unzip = (as) => {\n    const fa = [];\n    const fb = [];\n    for (let i = 0; i < as.length; i++) {\n        fa[i] = as[i][0];\n        fb[i] = as[i][1];\n    }\n    return [fa, fb];\n};\n/**\n * Prepend an element to every member of an array\n *\n * @example\n * import { prependAll } from 'fp-ts/ReadonlyArray'\n *\n * assert.deepStrictEqual(prependAll(9)([1, 2, 3, 4]), [9, 1, 9, 2, 9, 3, 9, 4])\n *\n * @since 2.10.0\n */\nexport const prependAll = (middle) => {\n    const f = RNEA.prependAll(middle);\n    return (as) => (isNonEmpty(as) ? f(as) : as);\n};\n/**\n * Places an element in between members of an array\n *\n * @example\n * import { intersperse } from 'fp-ts/ReadonlyArray'\n *\n * assert.deepStrictEqual(intersperse(9)([1, 2, 3, 4]), [1, 9, 2, 9, 3, 9, 4])\n *\n * @since 2.9.0\n */\nexport const intersperse = (middle) => {\n    const f = RNEA.intersperse(middle);\n    return (as) => (isNonEmpty(as) ? f(as) : as);\n};\n/**\n * Rotate a `ReadonlyArray` by `n` steps.\n *\n * @example\n * import { rotate } from 'fp-ts/ReadonlyArray'\n *\n * assert.deepStrictEqual(rotate(2)([1, 2, 3, 4, 5]), [4, 5, 1, 2, 3])\n *\n * @since 2.5.0\n */\nexport const rotate = (n) => {\n    const f = RNEA.rotate(n);\n    return (as) => (isNonEmpty(as) ? f(as) : as);\n};\nexport function elem(E) {\n    return (a, as) => {\n        if (as === undefined) {\n            const elemE = elem(E);\n            return (as) => elemE(a, as);\n        }\n        const predicate = (element) => E.equals(element, a);\n        let i = 0;\n        for (; i < as.length; i++) {\n            if (predicate(as[i])) {\n                return true;\n            }\n        }\n        return false;\n    };\n}\n/**\n * Remove duplicates from an array, keeping the first occurrence of an element.\n *\n * @example\n * import { uniq } from 'fp-ts/ReadonlyArray'\n * import * as N from 'fp-ts/number'\n *\n * assert.deepStrictEqual(uniq(N.Eq)([1, 2, 1]), [1, 2])\n *\n * @since 2.5.0\n */\nexport const uniq = (E) => {\n    const f = RNEA.uniq(E);\n    return (as) => (isNonEmpty(as) ? f(as) : as);\n};\n/**\n * Sort the elements of an array in increasing order, where elements are compared using first `ords[0]`, then `ords[1]`,\n * etc...\n *\n * @example\n * import { sortBy } from 'fp-ts/ReadonlyArray'\n * import { contramap } from 'fp-ts/Ord'\n * import * as S from 'fp-ts/string'\n * import * as N from 'fp-ts/number'\n * import { pipe } from 'fp-ts/function'\n *\n * interface Person {\n *   readonly name: string\n *   readonly age: number\n * }\n * const byName = pipe(S.Ord, contramap((p: Person) => p.name))\n * const byAge = pipe(N.Ord, contramap((p: Person) => p.age))\n *\n * const sortByNameByAge = sortBy([byName, byAge])\n *\n * const persons = [{ name: 'a', age: 1 }, { name: 'b', age: 3 }, { name: 'c', age: 2 }, { name: 'b', age: 2 }]\n * assert.deepStrictEqual(sortByNameByAge(persons), [\n *   { name: 'a', age: 1 },\n *   { name: 'b', age: 2 },\n *   { name: 'b', age: 3 },\n *   { name: 'c', age: 2 }\n * ])\n *\n * @since 2.5.0\n */\nexport const sortBy = (ords) => {\n    const f = RNEA.sortBy(ords);\n    return (as) => (isNonEmpty(as) ? f(as) : as);\n};\n/**\n * A useful recursion pattern for processing a `ReadonlyArray` to produce a new `ReadonlyArray`, often used for \"chopping\" up the input\n * `ReadonlyArray`. Typically `chop` is called with some function that will consume an initial prefix of the `ReadonlyArray` and produce a\n * value and the tail of the `ReadonlyArray`.\n *\n * @example\n * import { Eq } from 'fp-ts/Eq'\n * import * as RA from 'fp-ts/ReadonlyArray'\n * import * as N from 'fp-ts/number'\n * import { pipe } from 'fp-ts/function'\n *\n * const group = <A>(S: Eq<A>): ((as: ReadonlyArray<A>) => ReadonlyArray<ReadonlyArray<A>>) => {\n *   return RA.chop(as => {\n *     const { init, rest } = pipe(as, RA.spanLeft((a: A) => S.equals(a, as[0])))\n *     return [init, rest]\n *   })\n * }\n * assert.deepStrictEqual(group(N.Eq)([1, 1, 2, 3, 3, 4]), [[1, 1], [2], [3, 3], [4]])\n *\n * @since 2.5.0\n */\nexport const chop = (f) => {\n    const g = RNEA.chop(f);\n    return (as) => (isNonEmpty(as) ? g(as) : empty);\n};\n/**\n * Splits a `ReadonlyArray` into two pieces, the first piece has max `n` elements.\n *\n * @example\n * import { splitAt } from 'fp-ts/ReadonlyArray'\n *\n * assert.deepStrictEqual(splitAt(2)([1, 2, 3, 4, 5]), [[1, 2], [3, 4, 5]])\n *\n * @since 2.5.0\n */\nexport const splitAt = (n) => (as) => n >= 1 && isNonEmpty(as) ? RNEA.splitAt(n)(as) : isEmpty(as) ? [as, empty] : [empty, as];\n/**\n * Splits a `ReadonlyArray` into length-`n` pieces. The last piece will be shorter if `n` does not evenly divide the length of\n * the `ReadonlyArray`. Note that `chunksOf(n)([])` is `[]`, not `[[]]`. This is intentional, and is consistent with a recursive\n * definition of `chunksOf`; it satisfies the property that:\n *\n * ```ts\n * chunksOf(n)(xs).concat(chunksOf(n)(ys)) == chunksOf(n)(xs.concat(ys)))\n * ```\n *\n * whenever `n` evenly divides the length of `as`.\n *\n * @example\n * import { chunksOf } from 'fp-ts/ReadonlyArray'\n *\n * assert.deepStrictEqual(chunksOf(2)([1, 2, 3, 4, 5]), [[1, 2], [3, 4], [5]])\n *\n * @since 2.5.0\n */\nexport const chunksOf = (n) => {\n    const f = RNEA.chunksOf(n);\n    return (as) => (isNonEmpty(as) ? f(as) : empty);\n};\n/**\n * @category lifting\n * @since 2.11.0\n */\nexport const fromOptionK = (f) => (...a) => fromOption(f(...a));\nexport function comprehension(input, f, g = () => true) {\n    const go = (scope, input) => isNonEmpty(input)\n        ? flatMap(RNEA.head(input), (a) => go(pipe(scope, append(a)), RNEA.tail(input)))\n        : g(...scope)\n            ? [f(...scope)]\n            : empty;\n    return go(empty, input);\n}\n/**\n * @since 2.11.0\n */\nexport const concatW = (second) => (first) => isEmpty(first) ? second : isEmpty(second) ? first : first.concat(second);\n/**\n * @since 2.11.0\n */\nexport const concat = concatW;\nexport function union(E) {\n    const unionE = RNEA.union(E);\n    return (first, second) => {\n        if (second === undefined) {\n            const unionE = union(E);\n            return (second) => unionE(second, first);\n        }\n        return isNonEmpty(first) && isNonEmpty(second) ? unionE(second)(first) : isNonEmpty(first) ? first : second;\n    };\n}\nexport function intersection(E) {\n    const elemE = elem(E);\n    return (xs, ys) => {\n        if (ys === undefined) {\n            const intersectionE = intersection(E);\n            return (ys) => intersectionE(ys, xs);\n        }\n        return xs.filter((a) => elemE(a, ys));\n    };\n}\nexport function difference(E) {\n    const elemE = elem(E);\n    return (xs, ys) => {\n        if (ys === undefined) {\n            const differenceE = difference(E);\n            return (ys) => differenceE(ys, xs);\n        }\n        return xs.filter((a) => !elemE(a, ys));\n    };\n}\nconst _map = (fa, f) => pipe(fa, map(f));\nconst _mapWithIndex = (fa, f) => pipe(fa, mapWithIndex(f));\nconst _ap = (fab, fa) => pipe(fab, ap(fa));\nconst _filter = (fa, predicate) => pipe(fa, filter(predicate));\nconst _filterMap = (fa, f) => pipe(fa, filterMap(f));\nconst _partition = (fa, predicate) => pipe(fa, partition(predicate));\nconst _partitionMap = (fa, f) => pipe(fa, partitionMap(f));\nconst _partitionWithIndex = (fa, predicateWithIndex) => pipe(fa, partitionWithIndex(predicateWithIndex));\nconst _partitionMapWithIndex = (fa, f) => pipe(fa, partitionMapWithIndex(f));\nconst _alt = (fa, that) => pipe(fa, alt(that));\nconst _reduce = (fa, b, f) => pipe(fa, reduce(b, f));\nconst _foldMap = (M) => {\n    const foldMapM = foldMap(M);\n    return (fa, f) => pipe(fa, foldMapM(f));\n};\nconst _reduceRight = (fa, b, f) => pipe(fa, reduceRight(b, f));\nconst _reduceWithIndex = (fa, b, f) => pipe(fa, reduceWithIndex(b, f));\nconst _foldMapWithIndex = (M) => {\n    const foldMapWithIndexM = foldMapWithIndex(M);\n    return (fa, f) => pipe(fa, foldMapWithIndexM(f));\n};\nconst _reduceRightWithIndex = (fa, b, f) => pipe(fa, reduceRightWithIndex(b, f));\nconst _filterMapWithIndex = (fa, f) => pipe(fa, filterMapWithIndex(f));\nconst _filterWithIndex = (fa, predicateWithIndex) => pipe(fa, filterWithIndex(predicateWithIndex));\nconst _extend = (fa, f) => pipe(fa, extend(f));\nconst _traverse = (F) => {\n    const traverseF = traverse(F);\n    return (ta, f) => pipe(ta, traverseF(f));\n};\n/* istanbul ignore next */\nconst _traverseWithIndex = (F) => {\n    const traverseWithIndexF = traverseWithIndex(F);\n    return (ta, f) => pipe(ta, traverseWithIndexF(f));\n};\n/** @internal */\nexport const _chainRecDepthFirst = (a, f) => pipe(a, chainRecDepthFirst(f));\n/** @internal */\nexport const _chainRecBreadthFirst = (a, f) => pipe(a, chainRecBreadthFirst(f));\n/**\n * @category constructors\n * @since 2.5.0\n */\nexport const of = RNEA.of;\n/**\n * @since 2.7.0\n */\nexport const zero = () => empty;\n/**\n * Less strict version of [`alt`](#alt).\n *\n * The `W` suffix (short for **W**idening) means that the return types will be merged.\n *\n * @example\n * import * as RA from 'fp-ts/ReadonlyArray'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(\n *   pipe(\n *     [1, 2, 3],\n *     RA.altW(() => ['a', 'b'])\n *   ),\n *   [1, 2, 3, 'a', 'b']\n * )\n *\n * @category error handling\n * @since 2.9.0\n */\nexport const altW = (that) => (fa) => fa.concat(that());\n/**\n * Identifies an associative operation on a type constructor. It is similar to `Semigroup`, except that it applies to\n * types of kind `* -> *`.\n *\n * In case of `ReadonlyArray` concatenates the inputs into a single array.\n *\n * @example\n * import * as RA from 'fp-ts/ReadonlyArray'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(\n *   pipe(\n *     [1, 2, 3],\n *     RA.alt(() => [4, 5])\n *   ),\n *   [1, 2, 3, 4, 5]\n * )\n *\n * @category error handling\n * @since 2.5.0\n */\nexport const alt = altW;\n/**\n * @since 2.5.0\n */\nexport const ap = (fa) => flatMap((f) => pipe(fa, map(f)));\n/**\n * Composes computations in sequence, using the return value of one computation to determine the next computation.\n *\n * @example\n * import * as RA from 'fp-ts/ReadonlyArray'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(\n *   pipe(\n *     [1, 2, 3],\n *     RA.flatMap((n) => [`a${n}`, `b${n}`])\n *   ),\n *   ['a1', 'b1', 'a2', 'b2', 'a3', 'b3']\n * )\n * assert.deepStrictEqual(\n *   pipe(\n *     [1, 2, 3],\n *     RA.flatMap(() => [])\n *   ),\n *   []\n * )\n *\n * @category sequencing\n * @since 2.14.0\n */\nexport const flatMap = /*#__PURE__*/ dual(2, (ma, f) => pipe(ma, chainWithIndex((i, a) => f(a, i))));\n/**\n * @category sequencing\n * @since 2.5.0\n */\nexport const flatten = /*#__PURE__*/ flatMap(identity);\n/**\n * `map` can be used to turn functions `(a: A) => B` into functions `(fa: F<A>) => F<B>` whose argument and return types\n * use the type constructor `F` to represent some computational context.\n *\n * @category mapping\n * @since 2.5.0\n */\nexport const map = (f) => (fa) => fa.map((a) => f(a));\n/**\n * @category mapping\n * @since 2.5.0\n */\nexport const mapWithIndex = (f) => (fa) => fa.map((a, i) => f(i, a));\n/**\n * @category filtering\n * @since 2.5.0\n */\nexport const separate = (fa) => {\n    const left = [];\n    const right = [];\n    for (const e of fa) {\n        if (e._tag === 'Left') {\n            left.push(e.left);\n        }\n        else {\n            right.push(e.right);\n        }\n    }\n    return separated(left, right);\n};\n/**\n * @category filtering\n * @since 2.5.0\n */\nexport const filter = (predicate) => (as) => as.filter(predicate);\n/**\n * @category filtering\n * @since 2.5.0\n */\nexport const filterMapWithIndex = (f) => (fa) => {\n    const out = [];\n    for (let i = 0; i < fa.length; i++) {\n        const optionB = f(i, fa[i]);\n        if (_.isSome(optionB)) {\n            out.push(optionB.value);\n        }\n    }\n    return out;\n};\n/**\n * @category filtering\n * @since 2.5.0\n */\nexport const filterMap = (f) => filterMapWithIndex((_, a) => f(a));\n/**\n * @category filtering\n * @since 2.5.0\n */\nexport const compact = /*#__PURE__*/ filterMap(identity);\n/**\n * @category filtering\n * @since 2.5.0\n */\nexport const partition = (predicate) => partitionWithIndex((_, a) => predicate(a));\n/**\n * @category filtering\n * @since 2.5.0\n */\nexport const partitionWithIndex = (predicateWithIndex) => (as) => {\n    const left = [];\n    const right = [];\n    for (let i = 0; i < as.length; i++) {\n        const a = as[i];\n        if (predicateWithIndex(i, a)) {\n            right.push(a);\n        }\n        else {\n            left.push(a);\n        }\n    }\n    return separated(left, right);\n};\n/**\n * @category filtering\n * @since 2.5.0\n */\nexport const partitionMap = (f) => partitionMapWithIndex((_, a) => f(a));\n/**\n * @category filtering\n * @since 2.5.0\n */\nexport const partitionMapWithIndex = (f) => (fa) => {\n    const left = [];\n    const right = [];\n    for (let i = 0; i < fa.length; i++) {\n        const e = f(i, fa[i]);\n        if (e._tag === 'Left') {\n            left.push(e.left);\n        }\n        else {\n            right.push(e.right);\n        }\n    }\n    return separated(left, right);\n};\n/**\n * @category filtering\n * @since 2.5.0\n */\nexport const filterWithIndex = (predicateWithIndex) => (as) => as.filter((a, i) => predicateWithIndex(i, a));\n/**\n * @since 2.5.0\n */\nexport const extend = (f) => (wa) => wa.map((_, i) => f(wa.slice(i)));\n/**\n * @since 2.5.0\n */\nexport const duplicate = /*#__PURE__*/ extend(identity);\n/**\n * @category folding\n * @since 2.5.0\n */\nexport const foldMapWithIndex = (M) => (f) => (fa) => fa.reduce((b, a, i) => M.concat(b, f(i, a)), M.empty);\n/**\n * @category folding\n * @since 2.5.0\n */\nexport const reduce = (b, f) => reduceWithIndex(b, (_, b, a) => f(b, a));\n/**\n * @category folding\n * @since 2.5.0\n */\nexport const foldMap = (M) => {\n    const foldMapWithIndexM = foldMapWithIndex(M);\n    return (f) => foldMapWithIndexM((_, a) => f(a));\n};\n/**\n * @category folding\n * @since 2.5.0\n */\nexport const reduceWithIndex = (b, f) => (fa) => {\n    const len = fa.length;\n    let out = b;\n    for (let i = 0; i < len; i++) {\n        out = f(i, out, fa[i]);\n    }\n    return out;\n};\n/**\n * @category folding\n * @since 2.5.0\n */\nexport const reduceRight = (b, f) => reduceRightWithIndex(b, (_, a, b) => f(a, b));\n/**\n * @category folding\n * @since 2.5.0\n */\nexport const reduceRightWithIndex = (b, f) => (fa) => fa.reduceRight((b, a, i) => f(i, a, b), b);\n/**\n * @category traversing\n * @since 2.6.3\n */\nexport const traverse = (F) => {\n    const traverseWithIndexF = traverseWithIndex(F);\n    return (f) => traverseWithIndexF((_, a) => f(a));\n};\n/**\n * @category traversing\n * @since 2.6.3\n */\nexport const sequence = (F) => (ta) => {\n    return _reduce(ta, F.of(zero()), (fas, fa) => F.ap(F.map(fas, (as) => (a) => pipe(as, append(a))), fa));\n};\n/**\n * @category sequencing\n * @since 2.6.3\n */\nexport const traverseWithIndex = (F) => (f) => reduceWithIndex(F.of(zero()), (i, fbs, a) => F.ap(F.map(fbs, (bs) => (b) => pipe(bs, append(b))), f(i, a)));\n/**\n * @category filtering\n * @since 2.6.5\n */\nexport const wither = (F) => {\n    const _witherF = _wither(F);\n    return (f) => (fa) => _witherF(fa, f);\n};\n/**\n * @category filtering\n * @since 2.6.5\n */\nexport const wilt = (F) => {\n    const _wiltF = _wilt(F);\n    return (f) => (fa) => _wiltF(fa, f);\n};\n/**\n * @since 2.6.6\n */\nexport const unfold = (b, f) => {\n    const out = [];\n    let bb = b;\n    // eslint-disable-next-line no-constant-condition\n    while (true) {\n        const mt = f(bb);\n        if (_.isSome(mt)) {\n            const [a, b] = mt.value;\n            out.push(a);\n            bb = b;\n        }\n        else {\n            break;\n        }\n    }\n    return out;\n};\n/**\n * @category type lambdas\n * @since 2.5.0\n */\nexport const URI = 'ReadonlyArray';\n/**\n * @category instances\n * @since 2.5.0\n */\nexport const getShow = (S) => ({\n    show: (as) => `[${as.map(S.show).join(', ')}]`\n});\n/**\n * @category instances\n * @since 2.5.0\n */\nexport const getSemigroup = () => ({\n    concat: (first, second) => (isEmpty(first) ? second : isEmpty(second) ? first : first.concat(second))\n});\n/**\n * Returns a `Monoid` for `ReadonlyArray<A>`.\n *\n * @example\n * import { getMonoid } from 'fp-ts/ReadonlyArray'\n *\n * const M = getMonoid<number>()\n * assert.deepStrictEqual(M.concat([1, 2], [3, 4]), [1, 2, 3, 4])\n *\n * @category instances\n * @since 2.5.0\n */\nexport const getMonoid = () => ({\n    concat: getSemigroup().concat,\n    empty\n});\n/**\n * Derives an `Eq` over the `ReadonlyArray` of a given element type from the `Eq` of that type. The derived `Eq` defines two\n * arrays as equal if all elements of both arrays are compared equal pairwise with the given `E`. In case of arrays of\n * different lengths, the result is non equality.\n *\n * @example\n * import * as S from 'fp-ts/string'\n * import { getEq } from 'fp-ts/ReadonlyArray'\n *\n * const E = getEq(S.Eq)\n * assert.strictEqual(E.equals(['a', 'b'], ['a', 'b']), true)\n * assert.strictEqual(E.equals(['a'], []), false)\n *\n * @category instances\n * @since 2.5.0\n */\nexport const getEq = (E) => fromEquals((xs, ys) => xs.length === ys.length && xs.every((x, i) => E.equals(x, ys[i])));\n/**\n * Derives an `Ord` over the `ReadonlyArray` of a given element type from the `Ord` of that type. The ordering between two such\n * arrays is equal to: the first non equal comparison of each arrays elements taken pairwise in increasing order, in\n * case of equality over all the pairwise elements; the longest array is considered the greatest, if both arrays have\n * the same length, the result is equality.\n *\n * @example\n * import { getOrd } from 'fp-ts/ReadonlyArray'\n * import * as S from 'fp-ts/string'\n *\n * const O = getOrd(S.Ord)\n * assert.strictEqual(O.compare(['b'], ['a']), 1)\n * assert.strictEqual(O.compare(['a'], ['a']), 0)\n * assert.strictEqual(O.compare(['a'], ['b']), -1)\n *\n *\n * @category instances\n * @since 2.5.0\n */\nexport const getOrd = (O) => fromCompare((a, b) => {\n    const aLen = a.length;\n    const bLen = b.length;\n    const len = Math.min(aLen, bLen);\n    for (let i = 0; i < len; i++) {\n        const ordering = O.compare(a[i], b[i]);\n        if (ordering !== 0) {\n            return ordering;\n        }\n    }\n    return N.Ord.compare(aLen, bLen);\n});\n/**\n * @category instances\n * @since 2.11.0\n */\nexport const getUnionSemigroup = (E) => {\n    const unionE = union(E);\n    return {\n        concat: (first, second) => unionE(second)(first)\n    };\n};\n/**\n * @category instances\n * @since 2.11.0\n */\nexport const getUnionMonoid = (E) => ({\n    concat: getUnionSemigroup(E).concat,\n    empty\n});\n/**\n * @category instances\n * @since 2.11.0\n */\nexport const getIntersectionSemigroup = (E) => {\n    const intersectionE = intersection(E);\n    return {\n        concat: (first, second) => intersectionE(second)(first)\n    };\n};\n/**\n * @category instances\n * @since 2.11.0\n */\nexport const getDifferenceMagma = (E) => {\n    const differenceE = difference(E);\n    return {\n        concat: (first, second) => differenceE(second)(first)\n    };\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Functor = {\n    URI,\n    map: _map\n};\n/**\n * @category mapping\n * @since 2.10.0\n */\nexport const flap = /*#__PURE__*/ flap_(Functor);\n/**\n * @category instances\n * @since 2.10.0\n */\nexport const Pointed = {\n    URI,\n    of\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const FunctorWithIndex = {\n    URI,\n    map: _map,\n    mapWithIndex: _mapWithIndex\n};\n/**\n * @category instances\n * @since 2.10.0\n */\nexport const Apply = {\n    URI,\n    map: _map,\n    ap: _ap\n};\n/**\n * Combine two effectful actions, keeping only the result of the first.\n *\n * @since 2.5.0\n */\nexport const apFirst = /*#__PURE__*/ apFirst_(Apply);\n/**\n * Combine two effectful actions, keeping only the result of the second.\n *\n * @since 2.5.0\n */\nexport const apSecond = /*#__PURE__*/ apSecond_(Apply);\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Applicative = {\n    URI,\n    map: _map,\n    ap: _ap,\n    of\n};\n/**\n * @category instances\n * @since 2.10.0\n */\nexport const Chain = {\n    URI,\n    map: _map,\n    ap: _ap,\n    chain: flatMap\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Monad = {\n    URI,\n    map: _map,\n    ap: _ap,\n    of,\n    chain: flatMap\n};\n/**\n * Composes computations in sequence, using the return value of one computation to determine the next computation and\n * keeping only the result of the first.\n *\n * @example\n * import * as RA from 'fp-ts/ReadonlyArray'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(\n *   pipe(\n *     [1, 2, 3],\n *     RA.chainFirst(() => ['a', 'b'])\n *   ),\n *   [1, 1, 2, 2, 3, 3]\n * )\n * assert.deepStrictEqual(\n *   pipe(\n *     [1, 2, 3],\n *     RA.chainFirst(() => [])\n *   ),\n *   []\n * )\n *\n * @category sequencing\n * @since 2.5.0\n */\nexport const chainFirst = \n/*#__PURE__*/ chainFirst_(Chain);\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Unfoldable = {\n    URI,\n    unfold\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Alt = {\n    URI,\n    map: _map,\n    alt: _alt\n};\n/**\n * @category instances\n * @since 2.11.0\n */\nexport const Zero = {\n    URI,\n    zero\n};\n/**\n * @category do notation\n * @since 2.11.0\n */\nexport const guard = /*#__PURE__*/ guard_(Zero, Pointed);\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Alternative = {\n    URI,\n    map: _map,\n    ap: _ap,\n    of,\n    alt: _alt,\n    zero\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Extend = {\n    URI,\n    map: _map,\n    extend: _extend\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Compactable = {\n    URI,\n    compact,\n    separate\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Filterable = {\n    URI,\n    map: _map,\n    compact,\n    separate,\n    filter: _filter,\n    filterMap: _filterMap,\n    partition: _partition,\n    partitionMap: _partitionMap\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const FilterableWithIndex = {\n    URI,\n    map: _map,\n    mapWithIndex: _mapWithIndex,\n    compact,\n    separate,\n    filter: _filter,\n    filterMap: _filterMap,\n    partition: _partition,\n    partitionMap: _partitionMap,\n    partitionMapWithIndex: _partitionMapWithIndex,\n    partitionWithIndex: _partitionWithIndex,\n    filterMapWithIndex: _filterMapWithIndex,\n    filterWithIndex: _filterWithIndex\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Foldable = {\n    URI,\n    reduce: _reduce,\n    foldMap: _foldMap,\n    reduceRight: _reduceRight\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const FoldableWithIndex = {\n    URI,\n    reduce: _reduce,\n    foldMap: _foldMap,\n    reduceRight: _reduceRight,\n    reduceWithIndex: _reduceWithIndex,\n    foldMapWithIndex: _foldMapWithIndex,\n    reduceRightWithIndex: _reduceRightWithIndex\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Traversable = {\n    URI,\n    map: _map,\n    reduce: _reduce,\n    foldMap: _foldMap,\n    reduceRight: _reduceRight,\n    traverse: _traverse,\n    sequence\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const TraversableWithIndex = {\n    URI,\n    map: _map,\n    mapWithIndex: _mapWithIndex,\n    reduce: _reduce,\n    foldMap: _foldMap,\n    reduceRight: _reduceRight,\n    reduceWithIndex: _reduceWithIndex,\n    foldMapWithIndex: _foldMapWithIndex,\n    reduceRightWithIndex: _reduceRightWithIndex,\n    traverse: _traverse,\n    sequence,\n    traverseWithIndex: _traverseWithIndex\n};\n/**\n * @category sequencing\n * @since 2.11.0\n */\nexport const chainRecDepthFirst = (f) => (a) => {\n    const todo = [...f(a)];\n    const out = [];\n    while (todo.length > 0) {\n        const e = todo.shift();\n        if (_.isLeft(e)) {\n            todo.unshift(...f(e.left));\n        }\n        else {\n            out.push(e.right);\n        }\n    }\n    return out;\n};\n/**\n * @category instances\n * @since 2.11.0\n */\nexport const ChainRecDepthFirst = {\n    URI,\n    map: _map,\n    ap: _ap,\n    chain: flatMap,\n    chainRec: _chainRecDepthFirst\n};\n/**\n * @category sequencing\n * @since 2.11.0\n */\nexport const chainRecBreadthFirst = (f) => (a) => {\n    const initial = f(a);\n    const todo = [];\n    const out = [];\n    function go(e) {\n        if (_.isLeft(e)) {\n            f(e.left).forEach((v) => todo.push(v));\n        }\n        else {\n            out.push(e.right);\n        }\n    }\n    for (const e of initial) {\n        go(e);\n    }\n    while (todo.length > 0) {\n        go(todo.shift());\n    }\n    return out;\n};\n/**\n * @category instances\n * @since 2.11.0\n */\nexport const ChainRecBreadthFirst = {\n    URI,\n    map: _map,\n    ap: _ap,\n    chain: flatMap,\n    chainRec: _chainRecBreadthFirst\n};\nconst _wither = /*#__PURE__*/ witherDefault(Traversable, Compactable);\nconst _wilt = /*#__PURE__*/ wiltDefault(Traversable, Compactable);\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Witherable = {\n    URI,\n    map: _map,\n    compact,\n    separate,\n    filter: _filter,\n    filterMap: _filterMap,\n    partition: _partition,\n    partitionMap: _partitionMap,\n    reduce: _reduce,\n    foldMap: _foldMap,\n    reduceRight: _reduceRight,\n    traverse: _traverse,\n    sequence,\n    wither: _wither,\n    wilt: _wilt\n};\n/**\n * Filter values inside a context.\n *\n * @example\n * import { pipe } from 'fp-ts/function'\n * import * as RA from 'fp-ts/ReadonlyArray'\n * import * as T from 'fp-ts/Task'\n *\n * const filterE = RA.filterE(T.ApplicativePar)\n * async function test() {\n *   assert.deepStrictEqual(\n *     await pipe(\n *       [-1, 2, 3],\n *       filterE((n) => T.of(n > 0))\n *     )(),\n *     [2, 3]\n *   )\n * }\n * test()\n *\n * @since 2.11.0\n */\nexport const filterE = /*#__PURE__*/ filterE_(Witherable);\n/**\n * @category instances\n * @since 2.11.0\n */\nexport const FromEither = {\n    URI,\n    fromEither\n};\n/**\n * @category lifting\n * @since 2.11.0\n */\nexport const fromEitherK = /*#__PURE__*/ fromEitherK_(FromEither);\n// -------------------------------------------------------------------------------------\n// unsafe\n// -------------------------------------------------------------------------------------\n/**\n * @category unsafe\n * @since 2.5.0\n */\nexport const unsafeInsertAt = RNEA.unsafeInsertAt;\n/**\n * @category unsafe\n * @since 2.5.0\n */\nexport const unsafeUpdateAt = (i, a, as) => isNonEmpty(as) ? RNEA.unsafeUpdateAt(i, a, as) : as;\n/**\n * @category unsafe\n * @since 2.5.0\n */\nexport const unsafeDeleteAt = (i, as) => {\n    const xs = as.slice();\n    xs.splice(i, 1);\n    return xs;\n};\n/**\n * @category conversions\n * @since 2.5.0\n */\nexport const toArray = (as) => as.slice();\n/**\n * @category conversions\n * @since 2.5.0\n */\nexport const fromArray = (as) => (isEmpty(as) ? empty : as.slice());\n// -------------------------------------------------------------------------------------\n// utils\n// -------------------------------------------------------------------------------------\n/**\n * An empty array\n *\n * @since 2.5.0\n */\nexport const empty = RNEA.empty;\nexport function every(predicate) {\n    return (as) => as.every(predicate);\n}\n/**\n * Check if a predicate holds true for any array member.\n *\n * @example\n * import { some } from 'fp-ts/ReadonlyArray'\n * import { pipe } from 'fp-ts/function'\n *\n * const isPositive = (n: number): boolean => n > 0\n *\n * assert.deepStrictEqual(pipe([-1, -2, 3], some(isPositive)), true)\n * assert.deepStrictEqual(pipe([-1, -2, -3], some(isPositive)), false)\n *\n * @since 2.9.0\n */\nexport const some = (predicate) => (as) => as.some(predicate);\n/**\n * Alias of [`some`](#some)\n *\n * @since 2.11.0\n */\nexport const exists = some;\n/**\n * Places an element in between members of a `ReadonlyArray`, then folds the results using the provided `Monoid`.\n *\n * @example\n * import * as S from 'fp-ts/string'\n * import { intercalate } from 'fp-ts/ReadonlyArray'\n *\n * assert.deepStrictEqual(intercalate(S.Monoid)('-')(['a', 'b', 'c']), 'a-b-c')\n *\n * @since 2.12.0\n */\nexport const intercalate = (M) => {\n    const intercalateM = RNEA.intercalate(M);\n    return (middle) => match(() => M.empty, intercalateM(middle));\n};\n// -------------------------------------------------------------------------------------\n// do notation\n// -------------------------------------------------------------------------------------\n/**\n * @category do notation\n * @since 2.9.0\n */\nexport const Do = /*#__PURE__*/ of(_.emptyRecord);\n/**\n * @category do notation\n * @since 2.8.0\n */\nexport const bindTo = /*#__PURE__*/ bindTo_(Functor);\nconst let_ = /*#__PURE__*/ let__(Functor);\nexport { \n/**\n * @category do notation\n * @since 2.13.0\n */\nlet_ as let };\n/**\n * @category do notation\n * @since 2.8.0\n */\nexport const bind = /*#__PURE__*/ bind_(Chain);\n/**\n * @category do notation\n * @since 2.8.0\n */\nexport const apS = /*#__PURE__*/ apS_(Apply);\n// -------------------------------------------------------------------------------------\n// legacy\n// -------------------------------------------------------------------------------------\n/**\n * Alias of `flatMap`.\n *\n * @category legacy\n * @since 2.5.0\n */\nexport const chain = flatMap;\n// -------------------------------------------------------------------------------------\n// deprecated\n// -------------------------------------------------------------------------------------\n/**\n * Use `ReadonlyNonEmptyArray` module instead.\n *\n * @category zone of death\n * @since 2.5.0\n * @deprecated\n */\nexport const range = RNEA.range;\n/**\n * Use [`prepend`](#prepend) instead.\n *\n * @category zone of death\n * @since 2.5.0\n * @deprecated\n */\nexport const cons = RNEA.cons;\n/**\n * Use [`append`](#append) instead.\n *\n * @category zone of death\n * @since 2.5.0\n * @deprecated\n */\nexport const snoc = RNEA.snoc;\n/**\n * Use [`prependAll`](#prependall) instead.\n *\n * @category zone of death\n * @since 2.9.0\n * @deprecated\n */\nexport const prependToAll = prependAll;\n/**\n * This instance is deprecated, use small, specific instances instead.\n * For example if a function needs a `Functor` instance, pass `RA.Functor` instead of `RA.readonlyArray`\n * (where `RA` is from `import RA from 'fp-ts/ReadonlyArray'`)\n *\n * @category zone of death\n * @since 2.5.0\n * @deprecated\n */\nexport const readonlyArray = {\n    URI,\n    compact,\n    separate,\n    map: _map,\n    ap: _ap,\n    of,\n    chain: flatMap,\n    filter: _filter,\n    filterMap: _filterMap,\n    partition: _partition,\n    partitionMap: _partitionMap,\n    mapWithIndex: _mapWithIndex,\n    partitionMapWithIndex: _partitionMapWithIndex,\n    partitionWithIndex: _partitionWithIndex,\n    filterMapWithIndex: _filterMapWithIndex,\n    filterWithIndex: _filterWithIndex,\n    alt: _alt,\n    zero,\n    unfold,\n    reduce: _reduce,\n    foldMap: _foldMap,\n    reduceRight: _reduceRight,\n    traverse: _traverse,\n    sequence,\n    reduceWithIndex: _reduceWithIndex,\n    foldMapWithIndex: _foldMapWithIndex,\n    reduceRightWithIndex: _reduceRightWithIndex,\n    traverseWithIndex: _traverseWithIndex,\n    extend: _extend,\n    wither: _wither,\n    wilt: _wilt\n};\n","import { apFirst as apFirst_, apS as apS_, apSecond as apSecond_ } from './Apply.js';\nimport { bind as bind_, chainFirst as chainFirst_ } from './Chain.js';\nimport { fromEitherK as fromEitherK_ } from './FromEither.js';\nimport { dual, identity, pipe } from './function.js';\nimport { bindTo as bindTo_, flap as flap_, let as let__ } from './Functor.js';\nimport * as _ from './internal.js';\nimport * as NEA from './NonEmptyArray.js';\nimport * as RA from './ReadonlyArray.js';\nimport { separated } from './Separated.js';\nimport { filterE as filterE_, wiltDefault, witherDefault } from './Witherable.js';\nimport { guard as guard_ } from './Zero.js';\n// -------------------------------------------------------------------------------------\n// refinements\n// -------------------------------------------------------------------------------------\n/**\n * Test whether an array is empty\n *\n * @example\n * import { isEmpty } from 'fp-ts/Array'\n *\n * assert.strictEqual(isEmpty([]), true)\n * assert.strictEqual(isEmpty(['a']), false)\n *\n * @category refinements\n * @since 2.0.0\n */\nexport const isEmpty = (as) => as.length === 0;\n/**\n * Test whether an array is non empty narrowing down the type to `NonEmptyArray<A>`\n *\n * @example\n * import { isNonEmpty } from 'fp-ts/Array'\n *\n * assert.strictEqual(isNonEmpty([]), false)\n * assert.strictEqual(isNonEmpty(['a']), true)\n *\n * @category refinements\n * @since 2.0.0\n */\nexport const isNonEmpty = NEA.isNonEmpty;\n// -------------------------------------------------------------------------------------\n// constructors\n// -------------------------------------------------------------------------------------\n/**\n * Prepend an element to the front of a `Array`, creating a new `NonEmptyArray`.\n *\n * @example\n * import { prepend } from 'fp-ts/Array'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(pipe([2, 3, 4], prepend(1)), [1, 2, 3, 4])\n *\n * @since 2.10.0\n */\nexport const prepend = NEA.prepend;\n/**\n * Less strict version of [`prepend`](#prepend).\n *\n * @example\n * import { prependW } from 'fp-ts/Array'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(pipe([2, 3, 4], prependW(\"a\")), [\"a\", 2, 3, 4]);\n *\n * @since 2.11.0\n */\nexport const prependW = NEA.prependW;\n/**\n * Append an element to the end of a `Array`, creating a new `NonEmptyArray`.\n *\n * @example\n * import { append } from 'fp-ts/Array'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(pipe([1, 2, 3], append(4)), [1, 2, 3, 4])\n *\n * @since 2.10.0\n */\nexport const append = NEA.append;\n/**\n * Less strict version of [`append`](#append).\n *\n * @example\n * import { appendW } from 'fp-ts/Array'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(pipe([1, 2, 3], appendW(\"d\")), [1, 2, 3, \"d\"]);\n *\n * @since 2.11.0\n */\nexport const appendW = NEA.appendW;\n/**\n * Return a `Array` of length `n` with element `i` initialized with `f(i)`.\n *\n * **Note**. `n` is normalized to a non negative integer.\n *\n * @example\n * import { makeBy } from 'fp-ts/Array'\n *\n * const double = (i: number): number => i * 2\n * assert.deepStrictEqual(makeBy(5, double), [0, 2, 4, 6, 8])\n * assert.deepStrictEqual(makeBy(-3, double), [])\n * assert.deepStrictEqual(makeBy(4.32164, double), [0, 2, 4, 6])\n *\n * @category constructors\n * @since 2.0.0\n */\nexport const makeBy = (n, f) => (n <= 0 ? [] : NEA.makeBy(f)(n));\n/**\n * Create a `Array` containing a value repeated the specified number of times.\n *\n * **Note**. `n` is normalized to a non negative integer.\n *\n * @example\n * import { replicate } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(replicate(3, 'a'), ['a', 'a', 'a'])\n * assert.deepStrictEqual(replicate(-3, 'a'), [])\n * assert.deepStrictEqual(replicate(2.985647, 'a'), ['a', 'a'])\n *\n * @category constructors\n * @since 2.0.0\n */\nexport const replicate = (n, a) => makeBy(n, () => a);\nexport function fromPredicate(predicate) {\n    return (a) => (predicate(a) ? [a] : []);\n}\n// -------------------------------------------------------------------------------------\n// conversions\n// -------------------------------------------------------------------------------------\n/**\n * Create an array from an `Option`. The resulting array will contain the content of the\n * `Option` if it is `Some` and it will be empty if the `Option` is `None`.\n *\n * @example\n * import { fromOption } from 'fp-ts/Array'\n * import { option } from \"fp-ts\";\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(pipe(option.some(\"a\"), fromOption),[\"a\"])\n * assert.deepStrictEqual(pipe(option.none, fromOption),[])\n *\n * @category conversions\n * @since 2.11.0\n */\nexport const fromOption = (ma) => (_.isNone(ma) ? [] : [ma.value]);\n/**\n * Create an array from an `Either`. The resulting array will contain the content of the\n * `Either` if it is `Right` and it will be empty if the `Either` is `Left`.\n *\n * @example\n * import { fromEither } from 'fp-ts/Array'\n * import { either } from \"fp-ts\";\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(pipe(either.right(\"r\"), fromEither), [\"r\"]);\n * assert.deepStrictEqual(pipe(either.left(\"l\"), fromEither), []);\n *\n * @category conversions\n * @since 2.11.0\n */\nexport const fromEither = (e) => (_.isLeft(e) ? [] : [e.right]);\n/**\n * Less strict version of [`match`](#match).\n *\n * The `W` suffix (short for **W**idening) means that the handler return types will be merged.\n *\n * @example\n * import { matchW } from 'fp-ts/Array'\n * import { pipe } from 'fp-ts/function'\n *\n * const matcherW = matchW(\n *   () => \"No elements\",\n *   (as) => as.length\n * );\n * assert.deepStrictEqual(pipe([1, 2, 3, 4], matcherW), 4);\n * assert.deepStrictEqual(pipe([], matcherW), \"No elements\");\n *\n * @category pattern matching\n * @since 2.11.0\n */\nexport const matchW = (onEmpty, onNonEmpty) => (as) => isNonEmpty(as) ? onNonEmpty(as) : onEmpty();\n/**\n * Takes an array, if the array is empty it returns the result of `onEmpty`, otherwise\n * it passes the array to `onNonEmpty` and returns the result.\n *\n * @example\n * import { match } from 'fp-ts/Array'\n * import { pipe } from 'fp-ts/function'\n *\n * const matcher = match(\n *   () => \"No elements\",\n *   (as) => `Found ${as.length} element(s)`\n * );\n * assert.deepStrictEqual(pipe([1, 2, 3, 4], matcher), \"Found 4 element(s)\");\n * assert.deepStrictEqual(pipe([], matcher), \"No elements\");\n *\n * @category pattern matching\n * @since 2.11.0\n */\nexport const match = matchW;\n/**\n * Less strict version of [`matchLeft`](#matchleft). It will work when `onEmpty` and\n * `onNonEmpty` have different return types.\n *\n * @example\n * import { matchLeftW } from 'fp-ts/Array'\n *\n * const f = matchLeftW(\n *   () => 0,\n *   (head: string, tail: string[]) => `Found \"${head}\" followed by ${tail.length} elements`\n * );\n * assert.strictEqual(f([\"a\", \"b\", \"c\"]), 'Found \"a\" followed by 2 elements');\n * assert.strictEqual(f([]), 0);\n *\n * @category pattern matching\n * @since 2.11.0\n */\nexport const matchLeftW = (onEmpty, onNonEmpty) => (as) => isNonEmpty(as) ? onNonEmpty(NEA.head(as), NEA.tail(as)) : onEmpty();\n/**\n * Takes an array, if the array is empty it returns the result of `onEmpty`, otherwise\n * it passes the array to `onNonEmpty` broken into its first element and remaining elements.\n *\n * @example\n * import { matchLeft } from 'fp-ts/Array'\n *\n * const len: <A>(as: Array<A>) => number = matchLeft(() => 0, (_, tail) => 1 + len(tail))\n * assert.strictEqual(len([1, 2, 3]), 3)\n *\n * @category pattern matching\n * @since 2.10.0\n */\nexport const matchLeft = matchLeftW;\n/**\n * Alias of [`matchLeft`](#matchleft).\n *\n * @category pattern matching\n * @since 2.0.0\n */\nexport const foldLeft = matchLeft;\n/**\n * Less strict version of [`matchRight`](#matchright). It will work when `onEmpty` and\n * `onNonEmpty` have different return types.\n *\n * @example\n * import { matchRightW } from 'fp-ts/Array'\n *\n * const f = matchRightW(\n *   () => 0,\n *   (head: string[], tail: string) => `Found ${head.length} elements folllowed by \"${tail}\"`\n * );\n * assert.strictEqual(f([\"a\", \"b\", \"c\"]), 'Found 2 elements folllowed by \"c\"');\n * assert.strictEqual(f([]), 0);\n *\n * @category pattern matching\n * @since 2.11.0\n */\nexport const matchRightW = (onEmpty, onNonEmpty) => (as) => isNonEmpty(as) ? onNonEmpty(NEA.init(as), NEA.last(as)) : onEmpty();\n/**\n * Takes an array, if the array is empty it returns the result of `onEmpty`, otherwise\n * it passes the array to `onNonEmpty` broken  into its initial elements and the last element.\n *\n * @example\n * import { matchRight } from 'fp-ts/Array'\n *\n * const len: <A>(as: Array<A>) => number = matchRight(\n *   () => 0,\n *   (head, _) => 1 + len(head)\n * );\n * assert.strictEqual(len([1, 2, 3]), 3);\n *\n * @category pattern matching\n * @since 2.10.0\n */\nexport const matchRight = matchRightW;\n/**\n * Alias of [`matchRight`](#matchright).\n *\n * @category pattern matching\n * @since 2.0.0\n */\nexport const foldRight = matchRight;\n// -------------------------------------------------------------------------------------\n// combinators\n// -------------------------------------------------------------------------------------\n/**\n * Same as [`chain`](#chain), but passing also the index to the iterating function.\n *\n * @example\n * import { chainWithIndex, replicate } from 'fp-ts/Array'\n * import { pipe } from 'fp-ts/function'\n *\n * const f = (index: number, x: string) => replicate(2, `${x}${index}`);\n * assert.deepStrictEqual(pipe([\"a\", \"b\", \"c\"], chainWithIndex(f)), [\"a0\", \"a0\", \"b1\", \"b1\", \"c2\", \"c2\"]);\n *\n * @category sequencing\n * @since 2.7.0\n */\nexport const chainWithIndex = (f) => (as) => {\n    const out = [];\n    for (let i = 0; i < as.length; i++) {\n        const bs = f(i, as[i]);\n        for (let j = 0; j < bs.length; j++) {\n            out.push(bs[j]);\n        }\n    }\n    return out;\n};\n/**\n * Same as `reduce` but it carries over the intermediate steps\n *\n * @example\n * import { scanLeft } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(scanLeft(10, (b, a: number) => b - a)([1, 2, 3]), [10, 9, 7, 4])\n *\n * @since 2.0.0\n */\nexport const scanLeft = (b, f) => (as) => {\n    const len = as.length;\n    const out = new Array(len + 1);\n    out[0] = b;\n    for (let i = 0; i < len; i++) {\n        out[i + 1] = f(out[i], as[i]);\n    }\n    return out;\n};\n/**\n * Fold an array from the right, keeping all intermediate results instead of only the final result\n *\n * @example\n * import { scanRight } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(scanRight(10, (a: number, b) => b - a)([1, 2, 3]), [4, 5, 7, 10])\n *\n * @since 2.0.0\n */\nexport const scanRight = (b, f) => (as) => {\n    const len = as.length;\n    const out = new Array(len + 1);\n    out[len] = b;\n    for (let i = len - 1; i >= 0; i--) {\n        out[i] = f(as[i], out[i + 1]);\n    }\n    return out;\n};\n/**\n * Calculate the number of elements in a `Array`.\n *\n * @example\n * import { size } from 'fp-ts/Array'\n *\n * assert.strictEqual(size([\"a\",\"b\",\"c\"]),3)\n *\n * @since 2.10.0\n */\nexport const size = (as) => as.length;\n/**\n * Test whether an array contains a particular index\n *\n * @example\n * import { isOutOfBound } from 'fp-ts/Array'\n *\n * assert.strictEqual(isOutOfBound(1,[\"a\",\"b\",\"c\"]),false)\n * assert.strictEqual(isOutOfBound(-1,[\"a\",\"b\",\"c\"]),true)\n * assert.strictEqual(isOutOfBound(3,[\"a\",\"b\",\"c\"]),true)\n *\n * @since 2.0.0\n */\nexport const isOutOfBound = NEA.isOutOfBound;\n// TODO: remove non-curried overloading in v3\n/**\n * This function provides a safe way to read a value at a particular index from an array.\n * It returns a `none` if the index is out of bounds, and a `some` of the element if the\n * index is valid.\n *\n * @example\n * import { lookup } from 'fp-ts/Array'\n * import { some, none } from 'fp-ts/Option'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(pipe([1, 2, 3], lookup(1)), some(2))\n * assert.deepStrictEqual(pipe([1, 2, 3], lookup(3)), none)\n *\n * @since 2.0.0\n */\nexport const lookup = RA.lookup;\n/**\n * Get the first element in an array, or `None` if the array is empty\n *\n * @example\n * import { head } from 'fp-ts/Array'\n * import { some, none } from 'fp-ts/Option'\n *\n * assert.deepStrictEqual(head([1, 2, 3]), some(1))\n * assert.deepStrictEqual(head([]), none)\n *\n * @since 2.0.0\n */\nexport const head = RA.head;\n/**\n * Get the last element in an array, or `None` if the array is empty\n *\n * @example\n * import { last } from 'fp-ts/Array'\n * import { some, none } from 'fp-ts/Option'\n *\n * assert.deepStrictEqual(last([1, 2, 3]), some(3))\n * assert.deepStrictEqual(last([]), none)\n *\n * @since 2.0.0\n */\nexport const last = RA.last;\n/**\n * Get all but the first element of an array, creating a new array, or `None` if the array is empty\n *\n * @example\n * import { tail } from 'fp-ts/Array'\n * import { some, none } from 'fp-ts/Option'\n *\n * assert.deepStrictEqual(tail([1, 2, 3]), some([2, 3]))\n * assert.deepStrictEqual(tail([]), none)\n *\n * @since 2.0.0\n */\nexport const tail = (as) => (isNonEmpty(as) ? _.some(NEA.tail(as)) : _.none);\n/**\n * Get all but the last element of an array, creating a new array, or `None` if the array is empty\n *\n * @example\n * import { init } from 'fp-ts/Array'\n * import { some, none } from 'fp-ts/Option'\n *\n * assert.deepStrictEqual(init([1, 2, 3]), some([1, 2]))\n * assert.deepStrictEqual(init([]), none)\n *\n * @since 2.0.0\n */\nexport const init = (as) => (isNonEmpty(as) ? _.some(NEA.init(as)) : _.none);\n/**\n * Keep only a max number of elements from the start of an `Array`, creating a new `Array`.\n *\n * **Note**. `n` is normalized to a non negative integer.\n *\n * @example\n * import { takeLeft } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(takeLeft(2)([1, 2, 3, 4, 5]), [1, 2]);\n * assert.deepStrictEqual(takeLeft(7)([1, 2, 3, 4, 5]), [1, 2, 3, 4, 5]);\n * assert.deepStrictEqual(takeLeft(0)([1, 2, 3, 4, 5]), []);\n * assert.deepStrictEqual(takeLeft(-1)([1, 2, 3, 4, 5]), [1, 2, 3, 4, 5]);\n *\n * @since 2.0.0\n */\nexport const takeLeft = (n) => (as) => isOutOfBound(n, as) ? copy(as) : as.slice(0, n);\n/**\n * Keep only a max number of elements from the end of an `Array`, creating a new `Array`.\n *\n * **Note**. `n` is normalized to a non negative integer.\n *\n * @example\n * import { takeRight } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(takeRight(2)([1, 2, 3, 4, 5]), [4, 5]);\n * assert.deepStrictEqual(takeRight(7)([1, 2, 3, 4, 5]), [1, 2, 3, 4, 5]);\n * assert.deepStrictEqual(takeRight(0)([1, 2, 3, 4, 5]), []);\n * assert.deepStrictEqual(takeRight(-1)([1, 2, 3, 4, 5]), [1, 2, 3, 4, 5]);\n *\n * @since 2.0.0\n */\nexport const takeRight = (n) => (as) => isOutOfBound(n, as) ? copy(as) : n === 0 ? [] : as.slice(-n);\nexport function takeLeftWhile(predicate) {\n    return (as) => {\n        const out = [];\n        for (const a of as) {\n            if (!predicate(a)) {\n                break;\n            }\n            out.push(a);\n        }\n        return out;\n    };\n}\nconst spanLeftIndex = (as, predicate) => {\n    const l = as.length;\n    let i = 0;\n    for (; i < l; i++) {\n        if (!predicate(as[i])) {\n            break;\n        }\n    }\n    return i;\n};\nexport function spanLeft(predicate) {\n    return (as) => {\n        const [init, rest] = splitAt(spanLeftIndex(as, predicate))(as);\n        return { init, rest };\n    };\n}\n/**\n * Creates a new `Array` which is a copy of the input dropping a max number of elements from the start.\n *\n * **Note**. `n` is normalized to a non negative integer.\n *\n * @example\n * import { dropLeft } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(dropLeft(2)([1, 2, 3]), [3]);\n * assert.deepStrictEqual(dropLeft(5)([1, 2, 3]), []);\n * assert.deepStrictEqual(dropLeft(0)([1, 2, 3]), [1, 2, 3]);\n * assert.deepStrictEqual(dropLeft(-2)([1, 2, 3]), [1, 2, 3]);\n *\n * @since 2.0.0\n */\nexport const dropLeft = (n) => (as) => n <= 0 || isEmpty(as) ? copy(as) : n >= as.length ? [] : as.slice(n, as.length);\n/**\n * Creates a new `Array` which is a copy of the input dropping a max number of elements from the end.\n *\n * **Note**. `n` is normalized to a non negative integer.\n *\n * @example\n * import { dropRight } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(dropRight(2)([1, 2, 3]), [1]);\n * assert.deepStrictEqual(dropRight(5)([1, 2, 3]), []);\n * assert.deepStrictEqual(dropRight(0)([1, 2, 3]), [1, 2, 3]);\n * assert.deepStrictEqual(dropRight(-2)([1, 2, 3]), [1, 2, 3]);\n *\n * @since 2.0.0\n */\nexport const dropRight = (n) => (as) => n <= 0 || isEmpty(as) ? copy(as) : n >= as.length ? [] : as.slice(0, as.length - n);\nexport function dropLeftWhile(predicate) {\n    return (as) => as.slice(spanLeftIndex(as, predicate));\n}\n/**\n * `findIndex` returns an `Option` containing the first index for which a predicate holds.\n * It returns `None` if no element satisfies the predicate.\n * Similar to [`findFirst`](#findFirst) but returning the index instead of the element.\n *\n * @example\n * import { findIndex } from 'fp-ts/Array'\n * import { some, none } from 'fp-ts/Option'\n *\n * assert.deepStrictEqual(findIndex((n: number) => n === 2)([1, 2, 3]), some(1))\n * assert.deepStrictEqual(findIndex((n: number) => n === 2)([]), none)\n *\n * @since 2.0.0\n */\nexport const findIndex = RA.findIndex;\nexport function findFirst(predicate) {\n    return RA.findFirst(predicate);\n}\n/**\n * Given a selector function which takes an element and returns an option,\n * this function applies the selector to each element of the array and\n * returns the first `Some` result. Otherwise it returns `None`.\n *\n * @example\n * import { findFirstMap } from 'fp-ts/Array'\n * import { some, none } from 'fp-ts/Option'\n *\n * interface Person {\n *   readonly name: string;\n *   readonly age: number;\n * }\n *\n * const persons: Array<Person> = [\n *   { name: \"John\", age: 16 },\n *   { name: \"Mary\", age: 45 },\n *   { name: \"Joey\", age: 28 },\n * ];\n *\n * const nameOfPersonAbove18 = (p: Person) => (p.age <= 18 ? none : some(p.name));\n * const nameOfPersonAbove70 = (p: Person) => (p.age <= 70 ? none : some(p.name));\n * assert.deepStrictEqual(findFirstMap(nameOfPersonAbove18)(persons), some(\"Mary\"));\n * assert.deepStrictEqual(findFirstMap(nameOfPersonAbove70)(persons), none);\n *\n * @since 2.0.0\n */\nexport const findFirstMap = RA.findFirstMap;\nexport function findLast(predicate) {\n    return RA.findLast(predicate);\n}\n/**\n * Given a selector function which takes an element and returns an option,\n * this function applies the selector to each element of the array starting from the\n * end and returns the last `Some` result. Otherwise it returns `None`.\n *\n * @example\n * import { findLastMap } from 'fp-ts/Array'\n * import { some, none } from 'fp-ts/Option'\n *\n * interface Person {\n *   readonly name: string;\n *   readonly age: number;\n * }\n *\n * const persons: Array<Person> = [\n *   { name: \"John\", age: 16 },\n *   { name: \"Mary\", age: 45 },\n *   { name: \"Joey\", age: 28 },\n * ];\n *\n * const nameOfPersonAbove18 = (p: Person) => (p.age <= 18 ? none : some(p.name));\n * const nameOfPersonAbove70 = (p: Person) => (p.age <= 70 ? none : some(p.name));\n * assert.deepStrictEqual(findLastMap(nameOfPersonAbove18)(persons), some(\"Joey\"));\n * assert.deepStrictEqual(findLastMap(nameOfPersonAbove70)(persons), none);\n *\n * @since 2.0.0\n */\nexport const findLastMap = RA.findLastMap;\n/**\n * Returns the index of the last element of the list which matches the predicate.\n * It returns an `Option` containing the index or `None` if not found.\n *\n * @example\n * import { findLastIndex } from 'fp-ts/Array'\n * import { some, none } from 'fp-ts/Option'\n *\n * interface X {\n *   readonly a: number\n *   readonly b: number\n * }\n * const xs: Array<X> = [{ a: 1, b: 0 }, { a: 1, b: 1 }]\n * assert.deepStrictEqual(findLastIndex((x: { readonly a: number }) => x.a === 1)(xs), some(1))\n * assert.deepStrictEqual(findLastIndex((x: { readonly a: number }) => x.a === 4)(xs), none)\n *\n * @since 2.0.0\n */\nexport const findLastIndex = RA.findLastIndex;\n/**\n * This function takes an array and makes a new array containing the same elements.\n *\n * @since 2.0.0\n */\nexport const copy = (as) => as.slice();\n/**\n * Insert an element at the specified index, creating a new array,\n * or returning `None` if the index is out of bounds.\n *\n * @example\n * import { insertAt } from 'fp-ts/Array'\n * import { some } from 'fp-ts/Option'\n *\n * assert.deepStrictEqual(insertAt(2, 5)([1, 2, 3, 4]), some([1, 2, 5, 3, 4]))\n *\n * @since 2.0.0\n */\nexport const insertAt = (i, a) => (as) => i < 0 || i > as.length ? _.none : _.some(unsafeInsertAt(i, a, as));\n/**\n * Change the element at the specified index, creating a new array,\n * or returning `None` if the index is out of bounds.\n *\n * @example\n * import { updateAt } from 'fp-ts/Array'\n * import { some, none } from 'fp-ts/Option'\n *\n * assert.deepStrictEqual(updateAt(1, 1)([1, 2, 3]), some([1, 1, 3]))\n * assert.deepStrictEqual(updateAt(1, 1)([]), none)\n *\n * @since 2.0.0\n */\nexport const updateAt = (i, a) => modifyAt(i, () => a);\n/**\n * Delete the element at the specified index, creating a new array, or returning `None` if the index is out of bounds.\n *\n * @example\n * import { deleteAt } from 'fp-ts/Array'\n * import { some, none } from 'fp-ts/Option'\n *\n * assert.deepStrictEqual(deleteAt(0)([1, 2, 3]), some([2, 3]))\n * assert.deepStrictEqual(deleteAt(1)([]), none)\n *\n * @since 2.0.0\n */\nexport const deleteAt = (i) => (as) => isOutOfBound(i, as) ? _.none : _.some(unsafeDeleteAt(i, as));\n/**\n * Apply a function to the element at the specified index, creating a new array, or returning `None` if the index is out\n * of bounds.\n *\n * @example\n * import { modifyAt } from 'fp-ts/Array'\n * import { some, none } from 'fp-ts/Option'\n *\n * const double = (x: number): number => x * 2\n * assert.deepStrictEqual(modifyAt(1, double)([1, 2, 3]), some([1, 4, 3]))\n * assert.deepStrictEqual(modifyAt(1, double)([]), none)\n *\n * @since 2.0.0\n */\nexport const modifyAt = (i, f) => (as) => isOutOfBound(i, as) ? _.none : _.some(unsafeUpdateAt(i, f(as[i]), as));\n/**\n * Reverse an array, creating a new array\n *\n * @example\n * import { reverse } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(reverse([1, 2, 3]), [3, 2, 1])\n *\n * @since 2.0.0\n */\nexport const reverse = (as) => (isEmpty(as) ? [] : as.slice().reverse());\n/**\n * Takes an `Array` of `Either` and produces a new `Array` containing\n * the values of all the `Right` elements in the same order.\n *\n * @example\n * import { rights } from 'fp-ts/Array'\n * import { right, left } from 'fp-ts/Either'\n *\n * assert.deepStrictEqual(rights([right(1), left('foo'), right(2)]), [1, 2])\n *\n * @since 2.0.0\n */\nexport const rights = (as) => {\n    const r = [];\n    for (let i = 0; i < as.length; i++) {\n        const a = as[i];\n        if (a._tag === 'Right') {\n            r.push(a.right);\n        }\n    }\n    return r;\n};\n/**\n * Takes an `Array` of `Either` and produces a new `Array` containing\n * the values of all the `Left` elements in the same order.\n *\n * @example\n * import { lefts } from 'fp-ts/Array'\n * import { left, right } from 'fp-ts/Either'\n *\n * assert.deepStrictEqual(lefts([right(1), left('foo'), right(2)]), ['foo'])\n *\n * @since 2.0.0\n */\nexport const lefts = (as) => {\n    const r = [];\n    for (let i = 0; i < as.length; i++) {\n        const a = as[i];\n        if (a._tag === 'Left') {\n            r.push(a.left);\n        }\n    }\n    return r;\n};\n/**\n * Sort the elements of an array in increasing order, creating a new array\n *\n * @example\n * import { sort } from 'fp-ts/Array'\n * import * as N from 'fp-ts/number'\n *\n * assert.deepStrictEqual(sort(N.Ord)([3, 2, 1]), [1, 2, 3])\n *\n * @since 2.0.0\n */\nexport const sort = (O) => (as) => as.length <= 1 ? copy(as) : as.slice().sort(O.compare);\n/**\n * Apply a function to pairs of elements at the same index in two arrays, collecting the results in a new array. If one\n * input array is short, excess elements of the longer array are discarded.\n *\n * @example\n * import { zipWith } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(zipWith([1, 2, 3], ['a', 'b', 'c', 'd'], (n, s) => s + n), ['a1', 'b2', 'c3'])\n *\n * @since 2.0.0\n */\nexport const zipWith = (fa, fb, f) => {\n    const fc = [];\n    const len = Math.min(fa.length, fb.length);\n    for (let i = 0; i < len; i++) {\n        fc[i] = f(fa[i], fb[i]);\n    }\n    return fc;\n};\nexport function zip(as, bs) {\n    if (bs === undefined) {\n        return (bs) => zip(bs, as);\n    }\n    return zipWith(as, bs, (a, b) => [a, b]);\n}\n/**\n * The function is reverse of `zip`. Takes an array of pairs and return two corresponding arrays\n *\n * @example\n * import { unzip } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(unzip([[1, 'a'], [2, 'b'], [3, 'c']]), [[1, 2, 3], ['a', 'b', 'c']])\n *\n * @since 2.0.0\n */\nexport const unzip = (as) => {\n    const fa = [];\n    const fb = [];\n    for (let i = 0; i < as.length; i++) {\n        fa[i] = as[i][0];\n        fb[i] = as[i][1];\n    }\n    return [fa, fb];\n};\n/**\n * Creates a new `Array`, prepending an element to every member of the input `Array`.\n *\n * @example\n * import { prependAll } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(prependAll(9)([1, 2, 3, 4]), [9, 1, 9, 2, 9, 3, 9, 4])\n *\n * @since 2.10.0\n */\nexport const prependAll = (middle) => {\n    const f = NEA.prependAll(middle);\n    return (as) => (isNonEmpty(as) ? f(as) : []);\n};\n/**\n * Creates a new `Array` placing an element in between members of the input `Array`.\n *\n * @example\n * import { intersperse } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(intersperse(9)([1, 2, 3, 4]), [1, 9, 2, 9, 3, 9, 4])\n *\n * @since 2.9.0\n */\nexport const intersperse = (middle) => {\n    const f = NEA.intersperse(middle);\n    return (as) => (isNonEmpty(as) ? f(as) : copy(as));\n};\n/**\n * Creates a new `Array` rotating the input `Array` by `n` steps.\n *\n * @example\n * import { rotate } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(rotate(2)([1, 2, 3, 4, 5]), [4, 5, 1, 2, 3])\n *\n * @since 2.0.0\n */\nexport const rotate = (n) => {\n    const f = NEA.rotate(n);\n    return (as) => (isNonEmpty(as) ? f(as) : copy(as));\n};\n// TODO: remove non-curried overloading in v3\n/**\n * Test if a value is a member of an `Array`. Takes a `Eq<A>` as a single\n * argument which returns the function to use to search for a value of type `A` in\n * an `Array<A>`.\n *\n * @example\n * import { elem } from 'fp-ts/Array'\n * import * as N from 'fp-ts/number'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.strictEqual(pipe([1, 2, 3], elem(N.Eq)(2)), true)\n * assert.strictEqual(pipe([1, 2, 3], elem(N.Eq)(0)), false)\n *\n * @since 2.0.0\n */\nexport const elem = RA.elem;\n/**\n * Creates a new `Array` removing duplicate elements, keeping the first occurrence of an element,\n * based on a `Eq<A>`.\n *\n * @example\n * import { uniq } from 'fp-ts/Array'\n * import * as N from 'fp-ts/number'\n *\n * assert.deepStrictEqual(uniq(N.Eq)([1, 2, 1]), [1, 2])\n *\n * @since 2.0.0\n */\nexport const uniq = (E) => {\n    const f = NEA.uniq(E);\n    return (as) => (isNonEmpty(as) ? f(as) : copy(as));\n};\n/**\n * Sort the elements of an array in increasing order, where elements are compared using first `ords[0]`, then `ords[1]`,\n * etc...\n *\n * @example\n * import { sortBy } from 'fp-ts/Array'\n * import { contramap } from 'fp-ts/Ord'\n * import * as S from 'fp-ts/string'\n * import * as N from 'fp-ts/number'\n * import { pipe } from 'fp-ts/function'\n *\n * interface Person {\n *   readonly name: string\n *   readonly age: number\n * }\n * const byName = pipe(S.Ord, contramap((p: Person) => p.name))\n * const byAge = pipe(N.Ord, contramap((p: Person) => p.age))\n *\n * const sortByNameByAge = sortBy([byName, byAge])\n *\n * const persons = [{ name: 'a', age: 1 }, { name: 'b', age: 3 }, { name: 'c', age: 2 }, { name: 'b', age: 2 }]\n * assert.deepStrictEqual(sortByNameByAge(persons), [\n *   { name: 'a', age: 1 },\n *   { name: 'b', age: 2 },\n *   { name: 'b', age: 3 },\n *   { name: 'c', age: 2 }\n * ])\n *\n * @since 2.0.0\n */\nexport const sortBy = (ords) => {\n    const f = NEA.sortBy(ords);\n    return (as) => (isNonEmpty(as) ? f(as) : copy(as));\n};\n/**\n * A useful recursion pattern for processing an array to produce a new array, often used for \"chopping\" up the input\n * array. Typically chop is called with some function that will consume an initial prefix of the array and produce a\n * value and the rest of the array.\n *\n * @example\n * import { Eq } from 'fp-ts/Eq'\n * import * as A from 'fp-ts/Array'\n * import * as N from 'fp-ts/number'\n * import { pipe } from 'fp-ts/function'\n *\n * const group = <A>(S: Eq<A>): ((as: Array<A>) => Array<Array<A>>) => {\n *   return A.chop(as => {\n *     const { init, rest } = pipe(as, A.spanLeft((a: A) => S.equals(a, as[0])))\n *     return [init, rest]\n *   })\n * }\n * assert.deepStrictEqual(group(N.Eq)([1, 1, 2, 3, 3, 4]), [[1, 1], [2], [3, 3], [4]])\n *\n * @since 2.0.0\n */\nexport const chop = (f) => {\n    const g = NEA.chop(f);\n    return (as) => (isNonEmpty(as) ? g(as) : []);\n};\n/**\n * Splits an `Array` into two pieces, the first piece has max `n` elements.\n *\n * @example\n * import { splitAt } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(splitAt(2)([1, 2, 3, 4, 5]), [[1, 2], [3, 4, 5]])\n *\n * @since 2.0.0\n */\nexport const splitAt = (n) => (as) => n >= 1 && isNonEmpty(as) ? NEA.splitAt(n)(as) : isEmpty(as) ? [copy(as), []] : [[], copy(as)];\n/**\n * Splits an array into length-`n` pieces. The last piece will be shorter if `n` does not evenly divide the length of\n * the array. Note that `chunksOf(n)([])` is `[]`, not `[[]]`. This is intentional, and is consistent with a recursive\n * definition of `chunksOf`; it satisfies the property that\n *\n * ```ts\n * chunksOf(n)(xs).concat(chunksOf(n)(ys)) == chunksOf(n)(xs.concat(ys)))\n * ```\n *\n * whenever `n` evenly divides the length of `xs`.\n *\n * @example\n * import { chunksOf } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(chunksOf(2)([1, 2, 3, 4, 5]), [[1, 2], [3, 4], [5]])\n *\n * @since 2.0.0\n */\nexport const chunksOf = (n) => {\n    const f = NEA.chunksOf(n);\n    return (as) => (isNonEmpty(as) ? f(as) : []);\n};\n/**\n * @category lifting\n * @since 2.11.0\n */\nexport const fromOptionK = (f) => (...a) => fromOption(f(...a));\nexport function comprehension(input, f, g = () => true) {\n    const go = (scope, input) => isNonEmpty(input)\n        ? flatMap(NEA.head(input), (a) => go(pipe(scope, append(a)), NEA.tail(input)))\n        : g(...scope)\n            ? [f(...scope)]\n            : [];\n    return go([], input);\n}\n/**\n * @since 2.11.0\n */\nexport const concatW = (second) => (first) => isEmpty(first) ? copy(second) : isEmpty(second) ? copy(first) : first.concat(second);\n/**\n * @since 2.11.0\n */\nexport const concat = concatW;\nexport function union(E) {\n    const unionE = NEA.union(E);\n    return (first, second) => {\n        if (second === undefined) {\n            const unionE = union(E);\n            return (second) => unionE(second, first);\n        }\n        return isNonEmpty(first) && isNonEmpty(second)\n            ? unionE(second)(first)\n            : isNonEmpty(first)\n                ? copy(first)\n                : copy(second);\n    };\n}\nexport function intersection(E) {\n    const elemE = elem(E);\n    return (xs, ys) => {\n        if (ys === undefined) {\n            const intersectionE = intersection(E);\n            return (ys) => intersectionE(ys, xs);\n        }\n        return xs.filter((a) => elemE(a, ys));\n    };\n}\nexport function difference(E) {\n    const elemE = elem(E);\n    return (xs, ys) => {\n        if (ys === undefined) {\n            const differenceE = difference(E);\n            return (ys) => differenceE(ys, xs);\n        }\n        return xs.filter((a) => !elemE(a, ys));\n    };\n}\nconst _map = (fa, f) => pipe(fa, map(f));\n/* istanbul ignore next */\nconst _mapWithIndex = (fa, f) => pipe(fa, mapWithIndex(f));\nconst _ap = (fab, fa) => pipe(fab, ap(fa));\n/* istanbul ignore next */\nconst _filter = (fa, predicate) => pipe(fa, filter(predicate));\n/* istanbul ignore next */\nconst _filterMap = (fa, f) => pipe(fa, filterMap(f));\n/* istanbul ignore next */\nconst _partition = (fa, predicate) => pipe(fa, partition(predicate));\n/* istanbul ignore next */\nconst _partitionMap = (fa, f) => pipe(fa, partitionMap(f));\n/* istanbul ignore next */\nconst _partitionWithIndex = (fa, predicateWithIndex) => pipe(fa, partitionWithIndex(predicateWithIndex));\n/* istanbul ignore next */\nconst _partitionMapWithIndex = (fa, f) => pipe(fa, partitionMapWithIndex(f));\n/* istanbul ignore next */\nconst _alt = (fa, that) => pipe(fa, alt(that));\nconst _reduce = (fa, b, f) => pipe(fa, reduce(b, f));\n/* istanbul ignore next */\nconst _foldMap = (M) => {\n    const foldMapM = foldMap(M);\n    return (fa, f) => pipe(fa, foldMapM(f));\n};\n/* istanbul ignore next */\nconst _reduceRight = (fa, b, f) => pipe(fa, reduceRight(b, f));\n/* istanbul ignore next */\nconst _reduceWithIndex = (fa, b, f) => pipe(fa, reduceWithIndex(b, f));\n/* istanbul ignore next */\nconst _foldMapWithIndex = (M) => {\n    const foldMapWithIndexM = foldMapWithIndex(M);\n    return (fa, f) => pipe(fa, foldMapWithIndexM(f));\n};\n/* istanbul ignore next */\nconst _reduceRightWithIndex = (fa, b, f) => pipe(fa, reduceRightWithIndex(b, f));\n/* istanbul ignore next */\nconst _filterMapWithIndex = (fa, f) => pipe(fa, filterMapWithIndex(f));\n/* istanbul ignore next */\nconst _filterWithIndex = (fa, predicateWithIndex) => pipe(fa, filterWithIndex(predicateWithIndex));\n/* istanbul ignore next */\nconst _extend = (fa, f) => pipe(fa, extend(f));\n/* istanbul ignore next */\nconst _traverse = (F) => {\n    const traverseF = traverse(F);\n    return (ta, f) => pipe(ta, traverseF(f));\n};\n/* istanbul ignore next */\nconst _traverseWithIndex = (F) => {\n    const traverseWithIndexF = traverseWithIndex(F);\n    return (ta, f) => pipe(ta, traverseWithIndexF(f));\n};\nconst _chainRecDepthFirst = RA._chainRecDepthFirst;\nconst _chainRecBreadthFirst = RA._chainRecBreadthFirst;\n/**\n * Given an element of the base type, `of` builds an `Array` containing just that\n * element of the base type (this is useful for building a `Monad`).\n *\n * @example\n * import { of } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(of(\"a\"), [\"a\"]);\n *\n * @category constructors\n * @since 2.0.0\n */\nexport const of = NEA.of;\n/**\n * Makes an empty `Array`, useful for building a [`Monoid`](#Monoid)\n *\n * @since 2.7.0\n */\nexport const zero = () => [];\n/**\n * `map` can be used to turn functions `(a: A) => B` into functions `(fa: Array<A>) => Array<B>`.\n * In practice it applies the base function to each element of the array and collects the\n * results in a new array.\n *\n * @example\n * import { map } from 'fp-ts/Array'\n * import { pipe } from 'fp-ts/function'\n *\n * const f = (n: number) => n * 2;\n * assert.deepStrictEqual(pipe([1, 2, 3], map(f)), [2, 4, 6]);\n *\n * @category mapping\n * @since 2.0.0\n */\nexport const map = (f) => (fa) => fa.map((a) => f(a));\n/**\n * @example\n * import { ap, map, of } from 'fp-ts/Array'\n * import { pipe } from 'fp-ts/function'\n *\n * // a curried function with 3 input parameteres\n * const f = (s1: string) => (n: number) => (s2: string) => s1 + n + s2;\n *\n * // let's use `ap` to iterate `f` over an array for each input parameter\n * assert.deepStrictEqual(pipe([\"a\", \"b\"], map(f), ap([1, 2]), ap([\"😀\", \"😫\", \"😎\"])), [\n *   \"a1😀\", \"a1😫\", \"a1😎\",\n *   \"a2😀\", \"a2😫\", \"a2😎\",\n *   \"b1😀\", \"b1😫\", \"b1😎\",\n *   \"b2😀\", \"b2😫\", \"b2😎\",\n * ]);\n *\n * // given Array implements the Applicative interface with the `of` method,\n * // we can write exactly the same thing in a more symmetric way\n * // using `of` on `f` and `ap` on each array in input\n * assert.deepStrictEqual(\n *   pipe(of(f), ap([\"a\", \"b\"]), ap([1, 2]), ap([\"😀\", \"😫\", \"😎\"])),\n *   pipe([\"a\", \"b\"], map(f), ap([1, 2]), ap([\"😀\", \"😫\", \"😎\"]))\n * );\n *\n * @since 2.0.0\n */\nexport const ap = (fa) => flatMap((f) => pipe(fa, map(f)));\n/**\n * Composes computations in sequence, using the return value of one computation to\n * determine the next computation.\n *\n * In other words it takes a function `f` that produces an array from a single element of\n * the base type `A` and returns a new function which applies `f` to each element of the\n * input array (like [`map`](#map)) and, instead of returning an array of arrays, concatenates the\n * results into a single array (like [`flatten`](#flatten)).\n *\n * @example\n * import { flatMap, map, replicate } from 'fp-ts/Array'\n * import { pipe } from 'fp-ts/function'\n *\n * const f = (n: number) => replicate(n, `${n}`);\n * assert.deepStrictEqual(pipe([1, 2, 3], map(f)), [[\"1\"], [\"2\", \"2\"], [\"3\", \"3\", \"3\"]]);\n * assert.deepStrictEqual(pipe([1, 2, 3], flatMap(f)), [\"1\", \"2\", \"2\", \"3\", \"3\", \"3\"]);\n *\n * @category sequencing\n * @since 2.14.0\n */\nexport const flatMap = /*#__PURE__*/ dual(2, (ma, f) => pipe(ma, chainWithIndex((i, a) => f(a, i))));\n/**\n * Takes an array of arrays of `A` and flattens them into an array of `A`\n * by concatenating the elements of each array in order.\n *\n * @example\n * import { flatten } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(flatten([[\"a\"], [\"b\", \"c\"], [\"d\", \"e\", \"f\"]]), [\"a\", \"b\", \"c\", \"d\", \"e\", \"f\"]);\n *\n * @category sequencing\n * @since 2.5.0\n */\nexport const flatten = /*#__PURE__*/ flatMap(identity);\n/**\n * Same as [`map`](#map), but the iterating function takes both the index and the value\n * of the element.\n *\n * @example\n * import { mapWithIndex } from 'fp-ts/Array'\n * import { pipe } from 'fp-ts/function'\n *\n * const f = (i: number, s: string) => `${s} - ${i}`;\n * assert.deepStrictEqual(pipe([\"a\", \"b\", \"c\"], mapWithIndex(f)), [\"a - 0\", \"b - 1\", \"c - 2\"]);\n *\n * @category mapping\n * @since 2.0.0\n */\nexport const mapWithIndex = (f) => (fa) => fa.map((a, i) => f(i, a));\n/**\n * Maps an array with an iterating function that takes the index and the value of\n * each element and returns an `Option`. It keeps only the `Some` values discarding\n * the `None`s.\n *\n * Same as [`filterMap`](#filterMap), but with an iterating function which takes also\n * the index as input.\n *\n * @example\n * import { filterMapWithIndex } from 'fp-ts/Array'\n * import { pipe } from 'fp-ts/function'\n * import { option } from \"fp-ts\";\n *\n * const f = (i: number, s: string) => (i % 2 === 1 ? option.some(s.toUpperCase()) : option.none);\n * assert.deepStrictEqual(pipe([\"a\", \"no\", \"neither\", \"b\"], filterMapWithIndex(f)), [\"NO\", \"B\"]);\n *\n * @category filtering\n * @since 2.0.0\n */\nexport const filterMapWithIndex = (f) => (fa) => {\n    const out = [];\n    for (let i = 0; i < fa.length; i++) {\n        const optionB = f(i, fa[i]);\n        if (_.isSome(optionB)) {\n            out.push(optionB.value);\n        }\n    }\n    return out;\n};\n/**\n * Maps an array with an iterating function that returns an `Option`\n * and it keeps only the `Some` values discarding the `None`s.\n *\n * @example\n * import { filterMap } from 'fp-ts/Array'\n * import { pipe } from 'fp-ts/function'\n * import { option } from \"fp-ts\";\n *\n * const f = (s: string) => s.length === 1 ? option.some(s.toUpperCase()) : option.none;\n * assert.deepStrictEqual(pipe([\"a\", \"no\", \"neither\", \"b\"], filterMap(f)), [\"A\", \"B\"]);\n *\n * @category filtering\n * @since 2.0.0\n */\nexport const filterMap = (f) => filterMapWithIndex((_, a) => f(a));\n/**\n * Compact an array of `Option`s discarding the `None` values and\n * keeping the `Some` values. It returns a new array containing the values of\n * the `Some` options.\n *\n * @example\n * import { compact } from 'fp-ts/Array'\n * import { option } from \"fp-ts\";\n *\n * assert.deepStrictEqual(compact([option.some(\"a\"), option.none, option.some(\"b\")]), [\"a\", \"b\"]);\n *\n * @category filtering\n * @since 2.0.0\n */\nexport const compact = /*#__PURE__*/ filterMap(identity);\n/**\n * Separate an array of `Either`s into `Left`s and `Right`s, creating two new arrays:\n * one containing all the left values and one containing all the right values.\n *\n * @example\n * import { separate } from 'fp-ts/Array'\n * import { either } from \"fp-ts\";\n *\n * assert.deepStrictEqual(separate([either.right(\"r1\"), either.left(\"l1\"), either.right(\"r2\")]), {\n *   left: [\"l1\"],\n *   right: [\"r1\", \"r2\"],\n * });\n *\n * @category filtering\n * @since 2.0.0\n */\nexport const separate = (fa) => {\n    const left = [];\n    const right = [];\n    for (const e of fa) {\n        if (e._tag === 'Left') {\n            left.push(e.left);\n        }\n        else {\n            right.push(e.right);\n        }\n    }\n    return separated(left, right);\n};\n/**\n * Given an iterating function that is a `Predicate` or a `Refinement`,\n * `filter` creates a new `Array` containing the elements of the original\n * `Array` for which the iterating function is `true`.\n *\n * @example\n * import { filter } from 'fp-ts/Array'\n * import { isString } from \"fp-ts/string\";\n *\n * assert.deepStrictEqual(filter(isString)([\"a\", 1, {}, \"b\", 5]), [\"a\", \"b\"]);\n * assert.deepStrictEqual(filter((x:number) => x > 0)([-3, 1, -2, 5]), [1, 5]);\n *\n * @category filtering\n * @since 2.0.0\n */\nexport const filter = (predicate) => (as) => as.filter(predicate);\n/**\n * Given an iterating function that is a `Predicate` or a `Refinement`,\n * `partition` creates two new `Array`s: `right` containing the elements of the original\n * `Array` for which the iterating function is `true`, `left` containing the elements\n * for which it is false.\n *\n * @example\n * import { partition } from 'fp-ts/Array'\n * import { isString } from \"fp-ts/string\";\n *\n * assert.deepStrictEqual(partition(isString)([\"a\", 1, {}, \"b\", 5]), { left: [1, {}, 5], right: [\"a\", \"b\"] });\n * assert.deepStrictEqual(partition((x: number) => x > 0)([-3, 1, -2, 5]), { left: [-3, -2], right: [1, 5] });\n *\n * @category filtering\n * @since 2.0.0\n */\nexport const partition = (predicate) => partitionWithIndex((_, a) => predicate(a));\n/**\n * Same as [`partition`](#partition), but passing also the index to the iterating function.\n *\n * @example\n * import { partitionWithIndex } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(partitionWithIndex((index, x: number) => index < 3 && x > 0)([-2, 5, 6, 7]), {\n *   left: [-2, 7],\n *   right: [5, 6],\n * });\n *\n * @category filtering\n * @since 2.0.0\n */\nexport const partitionWithIndex = (predicateWithIndex) => (as) => {\n    const left = [];\n    const right = [];\n    for (let i = 0; i < as.length; i++) {\n        const b = as[i];\n        if (predicateWithIndex(i, b)) {\n            right.push(b);\n        }\n        else {\n            left.push(b);\n        }\n    }\n    return separated(left, right);\n};\n/**\n * Given an iterating function that returns an `Either`,\n * `partitionMap` applies the iterating function to each element and it creates two `Array`s:\n * `right` containing the values of `Right` results, `left` containing the values of `Left` results.\n *\n * @example\n * import { partitionMap } from 'fp-ts/Array'\n * import { Either, left, right } from \"fp-ts/Either\";\n *\n * const upperIfString = <B>(x: B): Either<B, string> =>\n *   typeof x === \"string\" ? right(x.toUpperCase()) : left(x);\n * assert.deepStrictEqual(partitionMap(upperIfString)([-2, \"hello\", 6, 7, \"world\"]), {\n *   left: [-2, 6, 7],\n *   right: [ 'HELLO', 'WORLD' ],\n * });\n *\n * @category filtering\n * @since 2.0.0\n */\nexport const partitionMap = (f) => partitionMapWithIndex((_, a) => f(a));\n/**\n * Same as [`partitionMap`](#partitionMap), but passing also the index to the iterating function.\n *\n * @example\n * import { partitionMapWithIndex } from 'fp-ts/Array'\n * import { Either, left, right } from \"fp-ts/Either\";\n *\n * const upperIfStringBefore3 = <B>(index: number, x: B): Either<B, string> =>\n *   index < 3 && typeof x === \"string\" ? right(x.toUpperCase()) : left(x);\n * assert.deepStrictEqual(partitionMapWithIndex(upperIfStringBefore3)([-2, \"hello\", 6, 7, \"world\"]), {\n *   left: [-2, 6, 7, \"world\"],\n *   right: [\"HELLO\"],\n * });\n *\n * @category filtering\n * @since 2.0.0\n */\nexport const partitionMapWithIndex = (f) => (fa) => {\n    const left = [];\n    const right = [];\n    for (let i = 0; i < fa.length; i++) {\n        const e = f(i, fa[i]);\n        if (e._tag === 'Left') {\n            left.push(e.left);\n        }\n        else {\n            right.push(e.right);\n        }\n    }\n    return separated(left, right);\n};\n/**\n * Less strict version of [`alt`](#alt).\n *\n * The `W` suffix (short for **W**idening) means that the return types will be merged.\n *\n * @example\n * import * as A from 'fp-ts/Array'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(\n *   pipe(\n *     [1, 2, 3],\n *     A.altW(() => ['a', 'b'])\n *   ),\n *   [1, 2, 3, 'a', 'b']\n * )\n *\n * @category error handling\n * @since 2.9.0\n */\nexport const altW = (that) => (fa) => fa.concat(that());\n/**\n * Identifies an associative operation on a type constructor. It is similar to `Semigroup`, except that it applies to\n * types of kind `* -> *`.\n *\n * In case of `Array` concatenates the inputs into a single array.\n *\n * @example\n * import * as A from 'fp-ts/Array'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(\n *   pipe(\n *     [1, 2, 3],\n *     A.alt(() => [4, 5])\n *   ),\n *   [1, 2, 3, 4, 5]\n * )\n *\n * @category error handling\n * @since 2.0.0\n */\nexport const alt = altW;\n/**\n * Same as [`filter`](#filter), but passing also the index to the iterating function.\n *\n * @example\n * import { filterWithIndex } from 'fp-ts/Array';\n *\n * const f = (index: number, x: number) => x > 0 && index <= 2;\n * assert.deepStrictEqual(filterWithIndex(f)([-3, 1, -2, 5]), [1]);\n *\n * @category filtering\n * @since 2.0.0\n */\nexport const filterWithIndex = (predicateWithIndex) => (as) => as.filter((b, i) => predicateWithIndex(i, b));\n/**\n * Given an iterating function that takes `Array<A>` as input, `extend` returns\n * an array containing the results of the iterating function applied to the whole input\n * `Array`, then to the input `Array` without the first element, then to the input\n * `Array` without the first two elements, etc.\n *\n * @example\n * import { extend } from 'fp-ts/Array'\n *\n * const f = (a: string[]) => a.join(\",\");\n * assert.deepStrictEqual(extend(f)([\"a\", \"b\", \"c\"]), [\"a,b,c\", \"b,c\", \"c\"]);\n *\n * @since 2.0.0\n */\nexport const extend = (f) => (wa) => wa.map((_, i) => f(wa.slice(i)));\n/**\n * `duplicate` returns an array containing the whole input `Array`,\n * then to the input `Array` dropping the first element, then to the input\n * `Array` dropping the first two elements, etc.\n *\n * @example\n * import { duplicate } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(duplicate([\"a\", \"b\", \"c\"]), [[\"a\", \"b\", \"c\"], [\"b\", \"c\"], [\"c\"]]);\n *\n * @since 2.0.0\n */\nexport const duplicate = /*#__PURE__*/ extend(identity);\n/**\n * Map and fold an `Array`.\n * Map the `Array` passing each value to the iterating function.\n * Then fold the results using the provided `Monoid`.\n *\n * @example\n * import { foldMap } from 'fp-ts/Array'\n *\n * const monoid = { concat: (a: string, b: string) => a + b, empty: \"\" };\n * const f = (s: string) => s.toUpperCase()\n * assert.deepStrictEqual(foldMap(monoid)(f)([\"a\", \"b\", \"c\"]), \"ABC\");\n *\n * @category folding\n * @since 2.0.0\n */\nexport const foldMap = RA.foldMap;\n/**\n * Same as [`foldMap`](#foldMap) but passing also the index to the iterating function.\n *\n * @example\n * import { foldMapWithIndex } from 'fp-ts/Array'\n *\n * const monoid = { concat: (a: string, b: string) => a + b, empty: \"\" };\n * const f = (index:number, s: string) => `${s.toUpperCase()}(${index})`\n * assert.deepStrictEqual(foldMapWithIndex(monoid)(f)([\"a\", \"b\", \"c\"]), \"A(0)B(1)C(2)\");\n *\n * @category folding\n * @since 2.0.0\n */\nexport const foldMapWithIndex = RA.foldMapWithIndex;\n/**\n * Reduces an `Array`.\n *\n * `reduce` executes the supplied iterating function on each element of the array,\n * in order, passing in the element and the return value from the calculation on the preceding element.\n *\n * The first time that the iterating function is called there is no \"return value of the\n * previous calculation\", the initial value is used in its place.\n *\n * @example\n * import { reduce } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(reduce(5, (acc: number, cur: number) => acc * cur)([2, 3]), 5 * 2 * 3);\n *\n * @category folding\n * @since 2.0.0\n */\nexport const reduce = RA.reduce;\n/**\n * Same as [`reduce`](#reduce) but passing also the index to the iterating function.\n *\n * @example\n * import { reduceWithIndex } from 'fp-ts/Array'\n *\n * const f = (index: number, acc: string, cur: unknown) =>\n *   acc + (typeof cur === \"string\" ? cur.toUpperCase() + index : \"\");\n * assert.deepStrictEqual(reduceWithIndex(\"\", f)([2, \"a\", \"b\", null]), \"A1B2\");\n *\n * @category folding\n * @since 2.0.0\n */\nexport const reduceWithIndex = RA.reduceWithIndex;\n/**\n * Same as [`reduce`](#reduce) but applied from the end to the start.\n *\n * *Note*: the iterating function in this case takes the accumulator as the last argument.\n *\n * @example\n * import { reduceRight } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(reduceRight(\"\", (cur: string, acc: string) => acc + cur)([\"a\", \"b\", \"c\"]), \"cba\");\n *\n * @category folding\n * @since 2.0.0\n */\nexport const reduceRight = RA.reduceRight;\n/**\n * Same as [`reduceRight`](#reduceRight) but passing also the index to the iterating function.\n *\n * @example\n * import { reduceRightWithIndex } from 'fp-ts/Array'\n *\n * const f = (index: number, cur: unknown, acc: string) =>\n *   acc + (typeof cur === \"string\" ? cur.toUpperCase() + index : \"\");\n * assert.deepStrictEqual(reduceRightWithIndex(\"\", f)([2, \"a\", \"b\", null]), \"B2A1\");\n *\n * @category folding\n * @since 2.0.0\n */\nexport const reduceRightWithIndex = RA.reduceRightWithIndex;\n/**\n * Given an iterating function that returns a `HKT` (higher kinded type), `traverse`\n * applies the iterating function to each element of the `Array` and then [`sequence`](#sequence)-s\n * the results using the provided `Applicative`.\n *\n * E.g. suppose you have an `Array` and you want to format each element with a function\n * that returns a result or an error as `f = (a: A) => Either<Error, B>`, using `traverse`\n * you can apply `f` to all elements and directly obtain as a result an `Either<Error,Array<B>>`\n * i.e. an `Array<B>` if all the results are `B`, or an `Error` if some of the results\n * are `Error`s.\n *\n * @example\n * import { traverse } from 'fp-ts/Array'\n * import { Applicative, left, right } from \"fp-ts/Either\";\n *\n * const f = (x: unknown) =>\n *   typeof x === \"string\" ? right(x.toUpperCase()) : left(new Error(\"not a string\"));\n * assert.deepStrictEqual(traverse(Applicative)(f)([\"a\", \"b\"]), right([\"A\", \"B\"]));\n * assert.deepStrictEqual(traverse(Applicative)(f)([\"a\", 5]), left(new Error(\"not a string\")));\n *\n * @category traversing\n * @since 2.6.3\n */\nexport const traverse = (F) => {\n    const traverseWithIndexF = traverseWithIndex(F);\n    return (f) => traverseWithIndexF((_, a) => f(a));\n};\n/**\n * `sequence` takes an `Array` where elements are `HKT<A>` (higher kinded type) and,\n * using an applicative of that `HKT`, returns an `HKT` of `Array<A>`.\n * E.g. it can turn an `Array<Either<Error, string>>` into an `Either<Error, Array<string>>`.\n *\n * `sequence` requires an `Applicative` of the `HKT` you are targeting, e.g. to turn an\n * `Array<Either<E, A>>` into an `Either<E, Array<A>>`, it needs an\n * `Applicative` for `Either`, to to turn an `Array<Option<A>>` into an `Option<Array<A>>`,\n * it needs an `Applicative` for `Option`.\n *\n * @example\n * import { sequence } from 'fp-ts/Array'\n * import { Applicative, left, right } from \"fp-ts/Either\";\n *\n * assert.deepStrictEqual(sequence(Applicative)([right(\"a\"), right(\"b\")]), right([\"a\", \"b\"]));\n * assert.deepStrictEqual(\n *   sequence(Applicative)([right(\"a\"), left(new Error(\"not a string\"))]),\n *   left(new Error(\"not a string\"))\n * );\n *\n * @category traversing\n * @since 2.6.3\n */\nexport const sequence = (F) => (ta) => {\n    return _reduce(ta, F.of(zero()), (fas, fa) => F.ap(F.map(fas, (as) => (a) => pipe(as, append(a))), fa));\n};\n/**\n * Same as [`traverse`](#traverse) but passing also the index to the iterating function.\n *\n * @example\n * import { traverseWithIndex } from 'fp-ts/Array'\n * import { Applicative, left, right } from \"fp-ts/Either\";\n *\n * const f = (index:number, x:unknown) =>\n *   typeof x === \"string\" ? right(x.toUpperCase() + index) : left(new Error(\"not a string\"));\n * assert.deepStrictEqual(traverseWithIndex(Applicative)(f)([\"a\", \"b\"]), right([\"A0\", \"B1\"]));\n * assert.deepStrictEqual(traverseWithIndex(Applicative)(f)([\"a\", 5]), left(new Error(\"not a string\")));\n *\n * @category sequencing\n * @since 2.6.3\n */\nexport const traverseWithIndex = (F) => (f) => reduceWithIndex(F.of(zero()), (i, fbs, a) => F.ap(F.map(fbs, (bs) => (b) => pipe(bs, append(b))), f(i, a)));\n/**\n * @category filtering\n * @since 2.6.5\n */\nexport const wither = (F) => {\n    const _witherF = _wither(F);\n    return (f) => (fa) => _witherF(fa, f);\n};\n/**\n * @category filtering\n * @since 2.6.5\n */\nexport const wilt = (F) => {\n    const _wiltF = _wilt(F);\n    return (f) => (fa) => _wiltF(fa, f);\n};\n/**\n * `unfold` takes a function `f` which returns an `Option` of a tuple containing an outcome\n * value and an input for the following iteration.\n * `unfold` applies `f` to the initial value `b` and then recursively to the second\n * element of the tuple contained in the returned `option` of the previous\n * calculation until `f` returns `Option.none`.\n *\n * @example\n * import { unfold } from 'fp-ts/Array'\n * import { option } from 'fp-ts'\n *\n * const f = (n: number) => {\n *   if (n <= 0) return option.none;\n *   const returnValue = n * 2;\n *   const inputForNextRound = n - 1;\n *   return option.some([returnValue, inputForNextRound] as const);\n * };\n * assert.deepStrictEqual(unfold(5, f), [10, 8, 6, 4, 2]);\n *\n * @since 2.6.6\n */\nexport const unfold = (b, f) => {\n    const out = [];\n    let bb = b;\n    // eslint-disable-next-line no-constant-condition\n    while (true) {\n        const mt = f(bb);\n        if (_.isSome(mt)) {\n            const [a, b] = mt.value;\n            out.push(a);\n            bb = b;\n        }\n        else {\n            break;\n        }\n    }\n    return out;\n};\n/**\n * @category type lambdas\n * @since 2.0.0\n */\nexport const URI = 'Array';\n/**\n * `getShow` makes a `Show` for an `Array<A>` from a `Show` for\n * an `A`.\n *\n * @example\n * import { getShow } from 'fp-ts/Array'\n *\n * const numShow = { show: (n: number) => (n >= 0 ? `${n}` : `(${-n})`) };\n * assert.deepStrictEqual(getShow(numShow).show([-2, -1, 0, 1]), \"[(2), (1), 0, 1]\");\n *\n * @category instances\n * @since 2.0.0\n */\nexport const getShow = RA.getShow;\n/**\n * Get a `Semigroup` based on the concatenation of `Array`s.\n * See also [`getMonoid`](#getMonoid).\n *\n * @example\n * import { getSemigroup } from 'fp-ts/Array'\n *\n * const S = getSemigroup<number>();\n * assert.deepStrictEqual(S.concat([1, 2], [2, 3]), [1, 2, 2, 3]);\n *\n * @category instances\n * @since 2.10.0\n */\nexport const getSemigroup = () => ({\n    concat: (first, second) => first.concat(second)\n});\n/**\n * Returns a `Monoid` for `Array<A>` based on the concatenation of `Array`s.\n *\n * @example\n * import { getMonoid } from 'fp-ts/Array'\n *\n * const M = getMonoid<number>()\n * assert.deepStrictEqual(M.concat([1, 2], [3, 4]), [1, 2, 3, 4])\n *\n * @category instances\n * @since 2.0.0\n */\nexport const getMonoid = () => ({\n    concat: getSemigroup().concat,\n    empty: []\n});\n/**\n * Derives an `Eq` over the `Array` of a given element type from the `Eq` of that type. The derived `Eq` defines two\n * arrays as equal if all elements of both arrays are compared equal pairwise with the given `E`. In case of arrays of\n * different lengths, the result is non equality.\n *\n * @example\n * import * as S from 'fp-ts/string'\n * import { getEq } from 'fp-ts/Array'\n *\n * const E = getEq(S.Eq)\n * assert.strictEqual(E.equals(['a', 'b'], ['a', 'b']), true)\n * assert.strictEqual(E.equals(['a'], []), false)\n *\n * @category instances\n * @since 2.0.0\n */\nexport const getEq = RA.getEq;\n/**\n * Derives an `Ord` over the `Array` of a given element type from the `Ord` of that type. The ordering between two such\n * arrays is equal to: the first non equal comparison of each arrays elements taken pairwise in increasing order, in\n * case of equality over all the pairwise elements; the longest array is considered the greatest, if both arrays have\n * the same length, the result is equality.\n *\n * @example\n * import { getOrd } from 'fp-ts/Array'\n * import * as S from 'fp-ts/string'\n *\n * const O = getOrd(S.Ord)\n * assert.strictEqual(O.compare(['b'], ['a']), 1)\n * assert.strictEqual(O.compare(['a'], ['a']), 0)\n * assert.strictEqual(O.compare(['a'], ['b']), -1)\n *\n * @category instances\n * @since 2.0.0\n */\nexport const getOrd = RA.getOrd;\n/**\n * Get a `Semigroup` based on the union of the elements of `Array`s.\n * Elements which equal according to the provided `Eq` are included\n * only once in the result.\n * See also [`getUnionMonoid`](#getUnionMonoid).\n *\n * @example\n * import { getUnionSemigroup } from 'fp-ts/Array';\n * import { Eq } from 'fp-ts/number';\n *\n * const S = getUnionSemigroup<number>(Eq);\n * assert.deepStrictEqual(S.concat([1, 2], [2, 3]), [1, 2, 3]);\n *\n * @category instances\n * @since 2.11.0\n */\nexport const getUnionSemigroup = (E) => {\n    const unionE = union(E);\n    return {\n        concat: (first, second) => unionE(second)(first)\n    };\n};\n/**\n * Get a `Monoid` based on the union of the elements of `Array`s.\n * Elements which equal according to the provided `Eq` are included\n * only once in the result.\n *\n * @example\n * import { getUnionMonoid } from 'fp-ts/Array'\n * import { Eq } from 'fp-ts/number';\n *\n * const M = getUnionMonoid<number>(Eq);\n * assert.deepStrictEqual(M.concat([1, 2], [2, 3]), [1, 2, 3]);\n * assert.deepStrictEqual(M.empty,[]);\n *\n * @category instances\n * @since 2.11.0\n */\nexport const getUnionMonoid = (E) => ({\n    concat: getUnionSemigroup(E).concat,\n    empty: []\n});\n/**\n * Get a `Semigroup` based on the intersection of the elements of `Array`s.\n * Only elements present in the two arrays which are equal according to the\n * provided `Eq` are included in the result.\n *\n * @example\n * import { getIntersectionSemigroup } from 'fp-ts/Array'\n * import { Eq } from 'fp-ts/number';\n *\n * const S = getIntersectionSemigroup<number>(Eq);\n * assert.deepStrictEqual(S.concat([1, 2], [2, 3]), [2]);\n *\n * @category instances\n * @since 2.11.0\n */\nexport const getIntersectionSemigroup = (E) => {\n    const intersectionE = intersection(E);\n    return {\n        concat: (first, second) => intersectionE(second)(first)\n    };\n};\n/**\n * Get a `Magma` for `Array` where the `concat` function is the differnce between\n * the first and the second array, i.e. the result contains all the elements of the\n * first array for which their is no equal element in the second array according\n * to the `Eq` provided.\n *\n *\n * @example\n * import { getDifferenceMagma } from 'fp-ts/Array'\n * import { Eq } from 'fp-ts/number';\n *\n * const S = getDifferenceMagma<number>(Eq);\n * assert.deepStrictEqual(S.concat([1, 2], [2, 3]), [1]);\n *\n * @category instances\n * @since 2.11.0\n */\nexport const getDifferenceMagma = (E) => {\n    const differenceE = difference(E);\n    return {\n        concat: (first, second) => differenceE(second)(first)\n    };\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Functor = {\n    URI,\n    map: _map\n};\n/**\n * Given an input an `Array` of functions, `flap` returns an `Array` containing\n * the results of applying each function to the given input.\n *\n * @example\n * import { flap } from 'fp-ts/Array'\n *\n * const funs = [\n *   (n: number) => `Double: ${n * 2}`,\n *   (n: number) => `Triple: ${n * 3}`,\n *   (n: number) => `Square: ${n * n}`,\n * ];\n * assert.deepStrictEqual(flap(4)(funs), ['Double: 8', 'Triple: 12', 'Square: 16']);\n *\n * @category mapping\n * @since 2.10.0\n */\nexport const flap = /*#__PURE__*/ flap_(Functor);\n/**\n * @category instances\n * @since 2.10.0\n */\nexport const Pointed = {\n    URI,\n    of\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const FunctorWithIndex = {\n    URI,\n    map: _map,\n    mapWithIndex: _mapWithIndex\n};\n/**\n * @category instances\n * @since 2.10.0\n */\nexport const Apply = {\n    URI,\n    map: _map,\n    ap: _ap\n};\n/**\n * Combine two effectful actions, keeping only the result of the first.\n *\n * @since 2.5.0\n */\nexport const apFirst = /*#__PURE__*/ apFirst_(Apply);\n/**\n * Combine two effectful actions, keeping only the result of the second.\n *\n * @since 2.5.0\n */\nexport const apSecond = /*#__PURE__*/ apSecond_(Apply);\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Applicative = {\n    URI,\n    map: _map,\n    ap: _ap,\n    of\n};\n/**\n * @category instances\n * @since 2.10.0\n */\nexport const Chain = {\n    URI,\n    map: _map,\n    ap: _ap,\n    chain: flatMap\n};\n/**\n * Composes computations in sequence, using the return value of one computation to determine the next computation and\n * keeping only the result of the first.\n *\n * @example\n * import * as A from 'fp-ts/Array'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(\n *   pipe(\n *     [1, 2, 3],\n *     A.chainFirst(() => ['a', 'b'])\n *   ),\n *   [1, 1, 2, 2, 3, 3]\n * )\n * assert.deepStrictEqual(\n *   pipe(\n *     [1, 2, 3],\n *     A.chainFirst(() => [])\n *   ),\n *   []\n * )\n *\n * @category sequencing\n * @since 2.0.0\n */\nexport const chainFirst = \n/*#__PURE__*/ chainFirst_(Chain);\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Monad = {\n    URI,\n    map: _map,\n    ap: _ap,\n    of,\n    chain: flatMap\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Unfoldable = {\n    URI,\n    unfold\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Alt = {\n    URI,\n    map: _map,\n    alt: _alt\n};\n/**\n * @category instances\n * @since 2.11.0\n */\nexport const Zero = {\n    URI,\n    zero\n};\n/**\n * @category do notation\n * @since 2.11.0\n */\nexport const guard = /*#__PURE__*/ guard_(Zero, Pointed);\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Alternative = {\n    URI,\n    map: _map,\n    ap: _ap,\n    of,\n    alt: _alt,\n    zero\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Extend = {\n    URI,\n    map: _map,\n    extend: _extend\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Compactable = {\n    URI,\n    compact,\n    separate\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Filterable = {\n    URI,\n    map: _map,\n    compact,\n    separate,\n    filter: _filter,\n    filterMap: _filterMap,\n    partition: _partition,\n    partitionMap: _partitionMap\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const FilterableWithIndex = {\n    URI,\n    map: _map,\n    mapWithIndex: _mapWithIndex,\n    compact,\n    separate,\n    filter: _filter,\n    filterMap: _filterMap,\n    partition: _partition,\n    partitionMap: _partitionMap,\n    partitionMapWithIndex: _partitionMapWithIndex,\n    partitionWithIndex: _partitionWithIndex,\n    filterMapWithIndex: _filterMapWithIndex,\n    filterWithIndex: _filterWithIndex\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Foldable = {\n    URI,\n    reduce: _reduce,\n    foldMap: _foldMap,\n    reduceRight: _reduceRight\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const FoldableWithIndex = {\n    URI,\n    reduce: _reduce,\n    foldMap: _foldMap,\n    reduceRight: _reduceRight,\n    reduceWithIndex: _reduceWithIndex,\n    foldMapWithIndex: _foldMapWithIndex,\n    reduceRightWithIndex: _reduceRightWithIndex\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Traversable = {\n    URI,\n    map: _map,\n    reduce: _reduce,\n    foldMap: _foldMap,\n    reduceRight: _reduceRight,\n    traverse: _traverse,\n    sequence\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const TraversableWithIndex = {\n    URI,\n    map: _map,\n    mapWithIndex: _mapWithIndex,\n    reduce: _reduce,\n    foldMap: _foldMap,\n    reduceRight: _reduceRight,\n    reduceWithIndex: _reduceWithIndex,\n    foldMapWithIndex: _foldMapWithIndex,\n    reduceRightWithIndex: _reduceRightWithIndex,\n    traverse: _traverse,\n    sequence,\n    traverseWithIndex: _traverseWithIndex\n};\nconst _wither = /*#__PURE__*/ witherDefault(Traversable, Compactable);\nconst _wilt = /*#__PURE__*/ wiltDefault(Traversable, Compactable);\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Witherable = {\n    URI,\n    map: _map,\n    compact,\n    separate,\n    filter: _filter,\n    filterMap: _filterMap,\n    partition: _partition,\n    partitionMap: _partitionMap,\n    reduce: _reduce,\n    foldMap: _foldMap,\n    reduceRight: _reduceRight,\n    traverse: _traverse,\n    sequence,\n    wither: _wither,\n    wilt: _wilt\n};\n/**\n * @category sequencing\n * @since 2.11.0\n */\nexport const chainRecDepthFirst = RA.chainRecDepthFirst;\n/**\n * @category instances\n * @since 2.11.0\n */\nexport const ChainRecDepthFirst = {\n    URI,\n    map: _map,\n    ap: _ap,\n    chain: flatMap,\n    chainRec: _chainRecDepthFirst\n};\n/**\n * @category sequencing\n * @since 2.11.0\n */\nexport const chainRecBreadthFirst = RA.chainRecBreadthFirst;\n/**\n * @category instances\n * @since 2.11.0\n */\nexport const ChainRecBreadthFirst = {\n    URI,\n    map: _map,\n    ap: _ap,\n    chain: flatMap,\n    chainRec: _chainRecBreadthFirst\n};\n/**\n * Filter values inside a context.\n *\n * @since 2.11.0\n */\nexport const filterE = /*#__PURE__*/ filterE_(Witherable);\n/**\n * @category instances\n * @since 2.11.0\n */\nexport const FromEither = {\n    URI,\n    fromEither\n};\n/**\n * @category lifting\n * @since 2.11.0\n */\nexport const fromEitherK = /*#__PURE__*/ fromEitherK_(FromEither);\n// -------------------------------------------------------------------------------------\n// unsafe\n// -------------------------------------------------------------------------------------\n/**\n * @category unsafe\n * @since 2.0.0\n */\nexport const unsafeInsertAt = NEA.unsafeInsertAt;\n/**\n * @category unsafe\n * @since 2.0.0\n */\nexport const unsafeUpdateAt = (i, a, as) => isNonEmpty(as) ? NEA.unsafeUpdateAt(i, a, as) : [];\n/**\n * @category unsafe\n * @since 2.0.0\n */\nexport const unsafeDeleteAt = (i, as) => {\n    const xs = as.slice();\n    xs.splice(i, 1);\n    return xs;\n};\n// -------------------------------------------------------------------------------------\n// utils\n// -------------------------------------------------------------------------------------\n/**\n * `every` tells if the provided predicate holds true for every element in the `Array`.\n *\n * @example\n * import { every } from 'fp-ts/Array'\n *\n * assert.equal(every((x: number) => x >= 0)([1, 2, 3]), true);\n * assert.equal(every((x: number) => x >= 0)([-1, 2, 3]), false);\n *\n * @since 2.9.0\n */\nexport const every = RA.every;\n/**\n * `some` tells if the provided predicate holds true at least for one element in the `Array`.\n *\n * @example\n * import { some } from 'fp-ts/Array'\n *\n * assert.equal(some((x: number) => x >= 0)([1, 2, 3]), true);\n * assert.equal(some((x: number) => x >= 10)([1, 2, 3]), false);\n *\n * @since 2.9.0\n */\nexport const some = (predicate) => (as) => as.some(predicate);\n/**\n * Alias of [`some`](#some)\n *\n * @since 2.11.0\n */\nexport const exists = some;\n/**\n * Places an element in between members of an `Array`, then folds the results using the provided `Monoid`.\n *\n * @example\n * import * as S from 'fp-ts/string'\n * import { intercalate } from 'fp-ts/Array'\n *\n * assert.deepStrictEqual(intercalate(S.Monoid)('-')(['a', 'b', 'c']), 'a-b-c')\n *\n * @since 2.12.0\n */\nexport const intercalate = RA.intercalate;\n// -------------------------------------------------------------------------------------\n// do notation\n// -------------------------------------------------------------------------------------\n/**\n * @category do notation\n * @since 2.9.0\n */\nexport const Do = /*#__PURE__*/ of(_.emptyRecord);\n/**\n * @category do notation\n * @since 2.8.0\n */\nexport const bindTo = /*#__PURE__*/ bindTo_(Functor);\nconst let_ = /*#__PURE__*/ let__(Functor);\nexport { \n/**\n * @category do notation\n * @since 2.13.0\n */\nlet_ as let };\n/**\n * @category do notation\n * @since 2.8.0\n */\nexport const bind = /*#__PURE__*/ bind_(Chain);\n/**\n * @category do notation\n * @since 2.8.0\n */\nexport const apS = /*#__PURE__*/ apS_(Apply);\n// -------------------------------------------------------------------------------------\n// legacy\n// -------------------------------------------------------------------------------------\n/**\n * Alias of `flatMap`.\n *\n * @category legacy\n * @since 2.0.0\n */\nexport const chain = flatMap;\n// -------------------------------------------------------------------------------------\n// deprecated\n// -------------------------------------------------------------------------------------\n/**\n * Use `NonEmptyArray` module instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const range = NEA.range;\n/**\n * Use a new `[]` instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const empty = [];\n/**\n * Use `prepend` instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const cons = NEA.cons;\n/**\n * Use `append` instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const snoc = NEA.snoc;\n/**\n * Use `prependAll` instead\n *\n * @category zone of death\n * @since 2.9.0\n * @deprecated\n */\nexport const prependToAll = prependAll;\n/**\n * This instance is deprecated, use small, specific instances instead.\n * For example if a function needs a `Functor` instance, pass `A.Functor` instead of `A.array`\n * (where `A` is from `import A from 'fp-ts/Array'`)\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const array = {\n    URI,\n    compact,\n    separate,\n    map: _map,\n    ap: _ap,\n    of,\n    chain: flatMap,\n    filter: _filter,\n    filterMap: _filterMap,\n    partition: _partition,\n    partitionMap: _partitionMap,\n    mapWithIndex: _mapWithIndex,\n    partitionMapWithIndex: _partitionMapWithIndex,\n    partitionWithIndex: _partitionWithIndex,\n    filterMapWithIndex: _filterMapWithIndex,\n    filterWithIndex: _filterWithIndex,\n    alt: _alt,\n    zero,\n    unfold,\n    reduce: _reduce,\n    foldMap: _foldMap,\n    reduceRight: _reduceRight,\n    traverse: _traverse,\n    sequence,\n    reduceWithIndex: _reduceWithIndex,\n    foldMapWithIndex: _foldMapWithIndex,\n    reduceRightWithIndex: _reduceRightWithIndex,\n    traverseWithIndex: _traverseWithIndex,\n    extend: _extend,\n    wither: _wither,\n    wilt: _wilt\n};\n","/**\n * The `Applicative` type class extends the `Apply` type class with a `of` function, which can be used to create values\n * of type `f a` from values of type `a`.\n *\n * Where `Apply` provides the ability to lift functions of two or more arguments to functions whose arguments are\n * wrapped using `f`, and `Functor` provides the ability to lift functions of one argument, `pure` can be seen as the\n * function which lifts functions of _zero_ arguments. That is, `Applicative` functors support a lifting operation for\n * any number of function arguments.\n *\n * Instances must satisfy the following laws in addition to the `Apply` laws:\n *\n * 1. Identity: `A.ap(A.of(a => a), fa) <-> fa`\n * 2. Homomorphism: `A.ap(A.of(ab), A.of(a)) <-> A.of(ab(a))`\n * 3. Interchange: `A.ap(fab, A.of(a)) <-> A.ap(A.of(ab => ab(a)), fab)`\n *\n * Note. `Functor`'s `map` can be derived: `A.map(x, f) = A.ap(A.of(f), x)`\n *\n * @since 2.0.0\n */\nimport { ap, getApplySemigroup } from './Apply.js';\nimport { pipe } from './function.js';\nimport { getFunctorComposition } from './Functor.js';\nexport function getApplicativeMonoid(F) {\n    const f = getApplySemigroup(F);\n    return (M) => ({\n        concat: f(M).concat,\n        empty: F.of(M.empty)\n    });\n}\n/** @deprecated */\nexport function getApplicativeComposition(F, G) {\n    const map = getFunctorComposition(F, G).map;\n    const _ap = ap(F, G);\n    return {\n        map,\n        of: (a) => F.of(G.of(a)),\n        ap: (fgab, fga) => pipe(fgab, _ap(fga))\n    };\n}\n","import { constFalse, constTrue, flow, pipe } from './function.js';\nconst contramap_ = (predicate, f) => pipe(predicate, contramap(f));\n/**\n * @since 2.11.0\n */\nexport const contramap = (f) => (predicate) => flow(f, predicate);\n/**\n * @category type lambdas\n * @since 2.11.0\n */\nexport const URI = 'Predicate';\n/**\n * @category instances\n * @since 2.11.0\n */\nexport const getSemigroupAny = () => ({\n    concat: (first, second) => pipe(first, or(second))\n});\n/**\n * @category instances\n * @since 2.11.0\n */\nexport const getMonoidAny = () => ({\n    concat: getSemigroupAny().concat,\n    empty: constFalse\n});\n/**\n * @category instances\n * @since 2.11.0\n */\nexport const getSemigroupAll = () => ({\n    concat: (first, second) => pipe(first, and(second))\n});\n/**\n * @category instances\n * @since 2.11.0\n */\nexport const getMonoidAll = () => ({\n    concat: getSemigroupAll().concat,\n    empty: constTrue\n});\n/**\n * @category instances\n * @since 2.11.0\n */\nexport const Contravariant = {\n    URI,\n    contramap: contramap_\n};\n// -------------------------------------------------------------------------------------\n// utils\n// -------------------------------------------------------------------------------------\n/**\n * @since 2.11.0\n */\nexport const not = (predicate) => (a) => !predicate(a);\n/**\n * @since 2.11.0\n */\nexport const or = (second) => (first) => (a) => first(a) || second(a);\n/**\n * @since 2.11.0\n */\nexport const and = (second) => (first) => (a) => first(a) && second(a);\n","import { getApplicativeMonoid } from './Applicative.js';\nimport { apFirst as apFirst_, apS as apS_, apSecond as apSecond_, getApplySemigroup as getApplySemigroup_ } from './Apply.js';\nimport * as chainable from './Chain.js';\nimport { chainEitherK as chainEitherK_, fromEitherK as fromEitherK_, tapEither as tapEither_ } from './FromEither.js';\nimport { constNull, constUndefined, dual, flow, identity, pipe } from './function.js';\nimport { as as as_, asUnit as asUnit_, bindTo as bindTo_, flap as flap_, let as let__ } from './Functor.js';\nimport * as _ from './internal.js';\nimport { not } from './Predicate.js';\nimport { first, last } from './Semigroup.js';\nimport { separated } from './Separated.js';\nimport { wiltDefault, witherDefault } from './Witherable.js';\nimport { guard as guard_ } from './Zero.js';\n// -------------------------------------------------------------------------------------\n// constructors\n// -------------------------------------------------------------------------------------\n/**\n * `None` doesn't have a constructor, instead you can use it directly as a value. Represents a missing value.\n *\n * @category constructors\n * @since 2.0.0\n */\nexport const none = _.none;\n/**\n * Constructs a `Some`. Represents an optional value that exists.\n *\n * @category constructors\n * @since 2.0.0\n */\nexport const some = _.some;\nexport function fromPredicate(predicate) {\n    return (a) => (predicate(a) ? some(a) : none);\n}\n/**\n * Returns the `Left` value of an `Either` if possible.\n *\n * @example\n * import { getLeft, none, some } from 'fp-ts/Option'\n * import { right, left } from 'fp-ts/Either'\n *\n * assert.deepStrictEqual(getLeft(right(1)), none)\n * assert.deepStrictEqual(getLeft(left('a')), some('a'))\n *\n * @category constructors\n * @since 2.0.0\n */\nexport const getLeft = (ma) => (ma._tag === 'Right' ? none : some(ma.left));\n/**\n * Returns the `Right` value of an `Either` if possible.\n *\n * @example\n * import { getRight, none, some } from 'fp-ts/Option'\n * import { right, left } from 'fp-ts/Either'\n *\n * assert.deepStrictEqual(getRight(right(1)), some(1))\n * assert.deepStrictEqual(getRight(left('a')), none)\n *\n * @category constructors\n * @since 2.0.0\n */\nexport const getRight = (ma) => (ma._tag === 'Left' ? none : some(ma.right));\nconst _map = (fa, f) => pipe(fa, map(f));\nconst _ap = (fab, fa) => pipe(fab, ap(fa));\nconst _reduce = (fa, b, f) => pipe(fa, reduce(b, f));\nconst _foldMap = (M) => {\n    const foldMapM = foldMap(M);\n    return (fa, f) => pipe(fa, foldMapM(f));\n};\nconst _reduceRight = (fa, b, f) => pipe(fa, reduceRight(b, f));\nconst _traverse = (F) => {\n    const traverseF = traverse(F);\n    return (ta, f) => pipe(ta, traverseF(f));\n};\n/* istanbul ignore next */\nconst _alt = (fa, that) => pipe(fa, alt(that));\nconst _filter = (fa, predicate) => pipe(fa, filter(predicate));\n/* istanbul ignore next */\nconst _filterMap = (fa, f) => pipe(fa, filterMap(f));\n/* istanbul ignore next */\nconst _extend = (wa, f) => pipe(wa, extend(f));\n/* istanbul ignore next */\nconst _partition = (fa, predicate) => pipe(fa, partition(predicate));\n/* istanbul ignore next */\nconst _partitionMap = (fa, f) => pipe(fa, partitionMap(f));\n/**\n * @category type lambdas\n * @since 2.0.0\n */\nexport const URI = 'Option';\n/**\n * @category instances\n * @since 2.0.0\n */\nexport const getShow = (S) => ({\n    show: (ma) => (isNone(ma) ? 'none' : `some(${S.show(ma.value)})`)\n});\n/**\n * @example\n * import { none, some, getEq } from 'fp-ts/Option'\n * import * as N from 'fp-ts/number'\n *\n * const E = getEq(N.Eq)\n * assert.strictEqual(E.equals(none, none), true)\n * assert.strictEqual(E.equals(none, some(1)), false)\n * assert.strictEqual(E.equals(some(1), none), false)\n * assert.strictEqual(E.equals(some(1), some(2)), false)\n * assert.strictEqual(E.equals(some(1), some(1)), true)\n *\n * @category instances\n * @since 2.0.0\n */\nexport const getEq = (E) => ({\n    equals: (x, y) => x === y || (isNone(x) ? isNone(y) : isNone(y) ? false : E.equals(x.value, y.value))\n});\n/**\n * The `Ord` instance allows `Option` values to be compared with\n * `compare`, whenever there is an `Ord` instance for\n * the type the `Option` contains.\n *\n * `None` is considered to be less than any `Some` value.\n *\n *\n * @example\n * import { none, some, getOrd } from 'fp-ts/Option'\n * import * as N from 'fp-ts/number'\n *\n * const O = getOrd(N.Ord)\n * assert.strictEqual(O.compare(none, none), 0)\n * assert.strictEqual(O.compare(none, some(1)), -1)\n * assert.strictEqual(O.compare(some(1), none), 1)\n * assert.strictEqual(O.compare(some(1), some(2)), -1)\n * assert.strictEqual(O.compare(some(1), some(1)), 0)\n *\n * @category instances\n * @since 2.0.0\n */\nexport const getOrd = (O) => ({\n    equals: getEq(O).equals,\n    compare: (x, y) => (x === y ? 0 : isSome(x) ? (isSome(y) ? O.compare(x.value, y.value) : 1) : -1)\n});\n/**\n * Monoid returning the left-most non-`None` value. If both operands are `Some`s then the inner values are\n * concatenated using the provided `Semigroup`\n *\n * | x       | y       | concat(x, y)       |\n * | ------- | ------- | ------------------ |\n * | none    | none    | none               |\n * | some(a) | none    | some(a)            |\n * | none    | some(b) | some(b)            |\n * | some(a) | some(b) | some(concat(a, b)) |\n *\n * @example\n * import { getMonoid, some, none } from 'fp-ts/Option'\n * import { SemigroupSum } from 'fp-ts/number'\n *\n * const M = getMonoid(SemigroupSum)\n * assert.deepStrictEqual(M.concat(none, none), none)\n * assert.deepStrictEqual(M.concat(some(1), none), some(1))\n * assert.deepStrictEqual(M.concat(none, some(1)), some(1))\n * assert.deepStrictEqual(M.concat(some(1), some(2)), some(3))\n *\n * @category instances\n * @since 2.0.0\n */\nexport const getMonoid = (S) => ({\n    concat: (x, y) => (isNone(x) ? y : isNone(y) ? x : some(S.concat(x.value, y.value))),\n    empty: none\n});\n/**\n * @category mapping\n * @since 2.0.0\n */\nexport const map = (f) => (fa) => isNone(fa) ? none : some(f(fa.value));\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Functor = {\n    URI,\n    map: _map\n};\n/**\n * Maps the `Some` value of this `Option` to the specified constant value.\n *\n * @category mapping\n * @since 2.16.0\n */\nexport const as = dual(2, as_(Functor));\n/**\n * Maps the `Some` value of this `Option` to the void constant value.\n *\n * @category mapping\n * @since 2.16.0\n */\nexport const asUnit = asUnit_(Functor);\n/**\n * @category constructors\n * @since 2.7.0\n */\nexport const of = some;\n/**\n * @category instances\n * @since 2.10.0\n */\nexport const Pointed = {\n    URI,\n    of\n};\n/**\n * @since 2.0.0\n */\nexport const ap = (fa) => (fab) => isNone(fab) ? none : isNone(fa) ? none : some(fab.value(fa.value));\n/**\n * @category instances\n * @since 2.10.0\n */\nexport const Apply = {\n    URI,\n    map: _map,\n    ap: _ap\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Applicative = {\n    URI,\n    map: _map,\n    ap: _ap,\n    of\n};\n/**\n * @category sequencing\n * @since 2.14.0\n */\nexport const flatMap = /*#__PURE__*/ dual(2, (ma, f) => (isNone(ma) ? none : f(ma.value)));\n/**\n * @category instances\n * @since 2.10.0\n */\nexport const Chain = {\n    URI,\n    map: _map,\n    ap: _ap,\n    chain: flatMap\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Monad = {\n    URI,\n    map: _map,\n    ap: _ap,\n    of,\n    chain: flatMap\n};\n/**\n * @category folding\n * @since 2.0.0\n */\nexport const reduce = (b, f) => (fa) => isNone(fa) ? b : f(b, fa.value);\n/**\n * @category folding\n * @since 2.0.0\n */\nexport const foldMap = (M) => (f) => (fa) => isNone(fa) ? M.empty : f(fa.value);\n/**\n * @category folding\n * @since 2.0.0\n */\nexport const reduceRight = (b, f) => (fa) => isNone(fa) ? b : f(fa.value, b);\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Foldable = {\n    URI,\n    reduce: _reduce,\n    foldMap: _foldMap,\n    reduceRight: _reduceRight\n};\n/**\n * Returns the provided `Option` `that` if `self` is `None`, otherwise returns `self`.\n *\n * @param self - The first `Option` to be checked.\n * @param that - The `Option` to return if `self` is `None`.\n *\n * @example\n * import * as O from \"fp-ts/Option\"\n *\n * assert.deepStrictEqual(O.orElse(O.none, () => O.none), O.none)\n * assert.deepStrictEqual(O.orElse(O.some(1), () => O.none), O.some(1))\n * assert.deepStrictEqual(O.orElse(O.none, () => O.some('b')), O.some('b'))\n * assert.deepStrictEqual(O.orElse(O.some(1), () => O.some('b')), O.some(1))\n *\n * @category error handling\n * @since 2.16.0\n */\nexport const orElse = dual(2, (self, that) => (isNone(self) ? that() : self));\n/**\n * Alias of `orElse`.\n *\n * Less strict version of [`alt`](#alt).\n *\n * The `W` suffix (short for **W**idening) means that the return types will be merged.\n *\n * @category legacy\n * @since 2.9.0\n */\nexport const altW = orElse;\n/**\n * Alias of `orElse`.\n *\n * @category legacy\n * @since 2.0.0\n */\nexport const alt = orElse;\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Alt = {\n    URI,\n    map: _map,\n    alt: _alt\n};\n/**\n * @since 2.7.0\n */\nexport const zero = () => none;\n/**\n * @category instances\n * @since 2.11.0\n */\nexport const Zero = {\n    URI,\n    zero\n};\n/**\n * @category do notation\n * @since 2.11.0\n */\nexport const guard = /*#__PURE__*/ guard_(Zero, Pointed);\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Alternative = {\n    URI,\n    map: _map,\n    ap: _ap,\n    of,\n    alt: _alt,\n    zero\n};\n/**\n * @since 2.0.0\n */\nexport const extend = (f) => (wa) => isNone(wa) ? none : some(f(wa));\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Extend = {\n    URI,\n    map: _map,\n    extend: _extend\n};\n/**\n * @category filtering\n * @since 2.0.0\n */\nexport const compact = /*#__PURE__*/ flatMap(identity);\nconst defaultSeparated = /*#__PURE__*/ separated(none, none);\n/**\n * @category filtering\n * @since 2.0.0\n */\nexport const separate = (ma) => isNone(ma) ? defaultSeparated : separated(getLeft(ma.value), getRight(ma.value));\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Compactable = {\n    URI,\n    compact,\n    separate\n};\n/**\n * @category filtering\n * @since 2.0.0\n */\nexport const filter = (predicate) => (fa) => isNone(fa) ? none : predicate(fa.value) ? fa : none;\n/**\n * @category filtering\n * @since 2.0.0\n */\nexport const filterMap = (f) => (fa) => isNone(fa) ? none : f(fa.value);\n/**\n * @category filtering\n * @since 2.0.0\n */\nexport const partition = (predicate) => (fa) => separated(_filter(fa, not(predicate)), _filter(fa, predicate));\n/**\n * @category filtering\n * @since 2.0.0\n */\nexport const partitionMap = (f) => flow(map(f), separate);\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Filterable = {\n    URI,\n    map: _map,\n    compact,\n    separate,\n    filter: _filter,\n    filterMap: _filterMap,\n    partition: _partition,\n    partitionMap: _partitionMap\n};\n/**\n * @category traversing\n * @since 2.6.3\n */\nexport const traverse = (F) => (f) => (ta) => isNone(ta) ? F.of(none) : F.map(f(ta.value), some);\n/**\n * @category traversing\n * @since 2.6.3\n */\nexport const sequence = (F) => (ta) => isNone(ta) ? F.of(none) : F.map(ta.value, some);\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Traversable = {\n    URI,\n    map: _map,\n    reduce: _reduce,\n    foldMap: _foldMap,\n    reduceRight: _reduceRight,\n    traverse: _traverse,\n    sequence\n};\nconst _wither = /*#__PURE__*/ witherDefault(Traversable, Compactable);\nconst _wilt = /*#__PURE__*/ wiltDefault(Traversable, Compactable);\n/**\n * @category filtering\n * @since 2.6.5\n */\nexport const wither = (F) => {\n    const _witherF = _wither(F);\n    return (f) => (fa) => _witherF(fa, f);\n};\n/**\n * @category filtering\n * @since 2.6.5\n */\nexport const wilt = (F) => {\n    const _wiltF = _wilt(F);\n    return (f) => (fa) => _wiltF(fa, f);\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Witherable = {\n    URI,\n    map: _map,\n    reduce: _reduce,\n    foldMap: _foldMap,\n    reduceRight: _reduceRight,\n    traverse: _traverse,\n    sequence,\n    compact,\n    separate,\n    filter: _filter,\n    filterMap: _filterMap,\n    partition: _partition,\n    partitionMap: _partitionMap,\n    wither: _wither,\n    wilt: _wilt\n};\n/**\n * @since 2.7.0\n */\nexport const throwError = () => none;\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const MonadThrow = {\n    URI,\n    map: _map,\n    ap: _ap,\n    of,\n    chain: flatMap,\n    throwError\n};\n/**\n * Transforms an `Either` to an `Option` discarding the error.\n *\n * Alias of [getRight](#getright)\n *\n * @category conversions\n * @since 2.0.0\n */\nexport const fromEither = getRight;\n/**\n * @category instances\n * @since 2.11.0\n */\nexport const FromEither = {\n    URI,\n    fromEither\n};\n// -------------------------------------------------------------------------------------\n// refinements\n// -------------------------------------------------------------------------------------\n/**\n * Returns `true` if the option is an instance of `Some`, `false` otherwise.\n *\n * @example\n * import { some, none, isSome } from 'fp-ts/Option'\n *\n * assert.strictEqual(isSome(some(1)), true)\n * assert.strictEqual(isSome(none), false)\n *\n * @category refinements\n * @since 2.0.0\n */\nexport const isSome = _.isSome;\n/**\n * Returns `true` if the option is `None`, `false` otherwise.\n *\n * @example\n * import { some, none, isNone } from 'fp-ts/Option'\n *\n * assert.strictEqual(isNone(some(1)), false)\n * assert.strictEqual(isNone(none), true)\n *\n * @category refinements\n * @since 2.0.0\n */\nexport const isNone = (fa) => fa._tag === 'None';\n/**\n * Less strict version of [`match`](#match).\n *\n * The `W` suffix (short for **W**idening) means that the handler return types will be merged.\n *\n * @category pattern matching\n * @since 2.10.0\n */\nexport const matchW = (onNone, onSome) => (ma) => isNone(ma) ? onNone() : onSome(ma.value);\n/**\n * Alias of [`matchW`](#matchw).\n *\n * @category pattern matching\n * @since 2.10.0\n */\nexport const foldW = matchW;\n/**\n * Takes a (lazy) default value, a function, and an `Option` value, if the `Option` value is `None` the default value is\n * returned, otherwise the function is applied to the value inside the `Some` and the result is returned.\n *\n * @example\n * import { some, none, match } from 'fp-ts/Option'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.strictEqual(\n *   pipe(\n *     some(1),\n *     match(() => 'a none', a => `a some containing ${a}`)\n *   ),\n *   'a some containing 1'\n * )\n *\n * assert.strictEqual(\n *   pipe(\n *     none,\n *     match(() => 'a none', a => `a some containing ${a}`)\n *   ),\n *   'a none'\n * )\n *\n * @category pattern matching\n * @since 2.10.0\n */\nexport const match = matchW;\n/**\n * Alias of [`match`](#match).\n *\n * @category pattern matching\n * @since 2.0.0\n */\nexport const fold = match;\n/**\n * Less strict version of [`getOrElse`](#getorelse).\n *\n * The `W` suffix (short for **W**idening) means that the handler return type will be merged.\n *\n * @category error handling\n * @since 2.6.0\n */\nexport const getOrElseW = (onNone) => (ma) => isNone(ma) ? onNone() : ma.value;\n/**\n * Extracts the value out of the structure, if it exists. Otherwise returns the given default value\n *\n * @example\n * import { some, none, getOrElse } from 'fp-ts/Option'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.strictEqual(\n *   pipe(\n *     some(1),\n *     getOrElse(() => 0)\n *   ),\n *   1\n * )\n * assert.strictEqual(\n *   pipe(\n *     none,\n *     getOrElse(() => 0)\n *   ),\n *   0\n * )\n *\n * @category error handling\n * @since 2.0.0\n */\nexport const getOrElse = getOrElseW;\n/**\n * @category mapping\n * @since 2.10.0\n */\nexport const flap = /*#__PURE__*/ flap_(Functor);\n/**\n * Combine two effectful actions, keeping only the result of the first.\n *\n * @since 2.0.0\n */\nexport const apFirst = /*#__PURE__*/ apFirst_(Apply);\n/**\n * Combine two effectful actions, keeping only the result of the second.\n *\n * @since 2.0.0\n */\nexport const apSecond = /*#__PURE__*/ apSecond_(Apply);\n/**\n * @category sequencing\n * @since 2.0.0\n */\nexport const flatten = compact;\n/**\n * Composes computations in sequence, using the return value of one computation to determine the next computation and\n * keeping only the result of the first.\n *\n * @category combinators\n * @since 2.15.0\n */\nexport const tap = /*#__PURE__*/ dual(2, chainable.tap(Chain));\n/**\n * Composes computations in sequence, using the return value of one computation to determine the next computation and\n * keeping only the result of the first.\n *\n * @example\n * import { pipe } from 'fp-ts/function'\n * import * as O from 'fp-ts/Option'\n * import * as E from 'fp-ts/Either'\n *\n * const compute = (value: number) => pipe(\n *   O.of(value),\n *   O.tapEither((value) => value > 0 ? E.right('ok') : E.left('error')),\n * )\n *\n * assert.deepStrictEqual(compute(1), O.of(1))\n * assert.deepStrictEqual(compute(-42), O.none)\n *\n * @category combinators\n * @since 2.16.0\n */\nexport const tapEither = /*#__PURE__*/ dual(2, tapEither_(FromEither, Chain));\n/**\n * @since 2.0.0\n */\nexport const duplicate = /*#__PURE__*/ extend(identity);\n/**\n * @category lifting\n * @since 2.11.0\n */\nexport const fromEitherK = /*#__PURE__*/ fromEitherK_(FromEither);\n/**\n * @category sequencing\n * @since 2.11.0\n */\nexport const chainEitherK = \n/*#__PURE__*/ chainEitherK_(FromEither, Chain);\n/**\n * Alias of `tapEither`.\n *\n * @category legacy\n * @since 2.12.0\n */\nexport const chainFirstEitherK = tapEither;\n/**\n * Constructs a new `Option` from a nullable type. If the value is `null` or `undefined`, returns `None`, otherwise\n * returns the value wrapped in a `Some`.\n *\n * @example\n * import { none, some, fromNullable } from 'fp-ts/Option'\n *\n * assert.deepStrictEqual(fromNullable(undefined), none)\n * assert.deepStrictEqual(fromNullable(null), none)\n * assert.deepStrictEqual(fromNullable(1), some(1))\n *\n * @category conversions\n * @since 2.0.0\n */\nexport const fromNullable = (a) => (a == null ? none : some(a));\n/**\n * Transforms an exception into an `Option`. If `f` throws, returns `None`, otherwise returns the output wrapped in a\n * `Some`.\n *\n * See also [`tryCatchK`](#trycatchk).\n *\n * @example\n * import { none, some, tryCatch } from 'fp-ts/Option'\n *\n * assert.deepStrictEqual(\n *   tryCatch(() => {\n *     throw new Error()\n *   }),\n *   none\n * )\n * assert.deepStrictEqual(tryCatch(() => 1), some(1))\n *\n * @category interop\n * @since 2.0.0\n */\nexport const tryCatch = (f) => {\n    try {\n        return some(f());\n    }\n    catch (e) {\n        return none;\n    }\n};\n/**\n * Converts a function that may throw to one returning a `Option`.\n *\n * @category interop\n * @since 2.10.0\n */\nexport const tryCatchK = (f) => (...a) => tryCatch(() => f(...a));\n/**\n * Returns a *smart constructor* from a function that returns a nullable value.\n *\n * @example\n * import { fromNullableK, none, some } from 'fp-ts/Option'\n *\n * const f = (s: string): number | undefined => {\n *   const n = parseFloat(s)\n *   return isNaN(n) ? undefined : n\n * }\n *\n * const g = fromNullableK(f)\n *\n * assert.deepStrictEqual(g('1'), some(1))\n * assert.deepStrictEqual(g('a'), none)\n *\n * @category lifting\n * @since 2.9.0\n */\nexport const fromNullableK = (f) => flow(f, fromNullable);\n/**\n * This is `chain` + `fromNullable`, useful when working with optional values.\n *\n * @example\n * import { some, none, fromNullable, chainNullableK } from 'fp-ts/Option'\n * import { pipe } from 'fp-ts/function'\n *\n * interface Employee {\n *   readonly company?: {\n *     readonly address?: {\n *       readonly street?: {\n *         readonly name?: string\n *       }\n *     }\n *   }\n * }\n *\n * const employee1: Employee = { company: { address: { street: { name: 'high street' } } } }\n *\n * assert.deepStrictEqual(\n *   pipe(\n *     fromNullable(employee1.company),\n *     chainNullableK(company => company.address),\n *     chainNullableK(address => address.street),\n *     chainNullableK(street => street.name)\n *   ),\n *   some('high street')\n * )\n *\n * const employee2: Employee = { company: { address: { street: {} } } }\n *\n * assert.deepStrictEqual(\n *   pipe(\n *     fromNullable(employee2.company),\n *     chainNullableK(company => company.address),\n *     chainNullableK(address => address.street),\n *     chainNullableK(street => street.name)\n *   ),\n *   none\n * )\n *\n * @category sequencing\n * @since 2.9.0\n */\nexport const chainNullableK = (f) => (ma) => isNone(ma) ? none : fromNullable(f(ma.value));\n/**\n * Extracts the value out of the structure, if it exists. Otherwise returns `null`.\n *\n * @example\n * import { some, none, toNullable } from 'fp-ts/Option'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.strictEqual(\n *   pipe(\n *     some(1),\n *     toNullable\n *   ),\n *   1\n * )\n * assert.strictEqual(\n *   pipe(\n *     none,\n *     toNullable\n *   ),\n *   null\n * )\n *\n * @category conversions\n * @since 2.0.0\n */\nexport const toNullable = /*#__PURE__*/ match(constNull, identity);\n/**\n * Extracts the value out of the structure, if it exists. Otherwise returns `undefined`.\n *\n * @example\n * import { some, none, toUndefined } from 'fp-ts/Option'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.strictEqual(\n *   pipe(\n *     some(1),\n *     toUndefined\n *   ),\n *   1\n * )\n * assert.strictEqual(\n *   pipe(\n *     none,\n *     toUndefined\n *   ),\n *   undefined\n * )\n *\n * @category conversions\n * @since 2.0.0\n */\nexport const toUndefined = /*#__PURE__*/ match(constUndefined, identity);\nexport function elem(E) {\n    return (a, ma) => {\n        if (ma === undefined) {\n            const elemE = elem(E);\n            return (ma) => elemE(a, ma);\n        }\n        return isNone(ma) ? false : E.equals(a, ma.value);\n    };\n}\n/**\n * Returns `true` if the predicate is satisfied by the wrapped value\n *\n * @example\n * import { some, none, exists } from 'fp-ts/Option'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.strictEqual(\n *   pipe(\n *     some(1),\n *     exists(n => n > 0)\n *   ),\n *   true\n * )\n * assert.strictEqual(\n *   pipe(\n *     some(1),\n *     exists(n => n > 1)\n *   ),\n *   false\n * )\n * assert.strictEqual(\n *   pipe(\n *     none,\n *     exists(n => n > 0)\n *   ),\n *   false\n * )\n *\n * @since 2.0.0\n */\nexport const exists = (predicate) => (ma) => isNone(ma) ? false : predicate(ma.value);\n// -------------------------------------------------------------------------------------\n// do notation\n// -------------------------------------------------------------------------------------\n/**\n * @category do notation\n * @since 2.9.0\n */\nexport const Do = /*#__PURE__*/ of(_.emptyRecord);\n/**\n * @category do notation\n * @since 2.8.0\n */\nexport const bindTo = /*#__PURE__*/ bindTo_(Functor);\nconst let_ = /*#__PURE__*/ let__(Functor);\nexport { \n/**\n * @category do notation\n * @since 2.13.0\n */\nlet_ as let };\n/**\n * @category do notation\n * @since 2.8.0\n */\nexport const bind = /*#__PURE__*/ chainable.bind(Chain);\n/**\n * @category do notation\n * @since 2.8.0\n */\nexport const apS = /*#__PURE__*/ apS_(Apply);\n/**\n * @since 2.11.0\n */\nexport const ApT = /*#__PURE__*/ of(_.emptyReadonlyArray);\n// -------------------------------------------------------------------------------------\n// array utils\n// -------------------------------------------------------------------------------------\n/**\n * Equivalent to `ReadonlyNonEmptyArray#traverseWithIndex(Applicative)`.\n *\n * @category traversing\n * @since 2.11.0\n */\nexport const traverseReadonlyNonEmptyArrayWithIndex = (f) => (as) => {\n    const o = f(0, _.head(as));\n    if (isNone(o)) {\n        return none;\n    }\n    const out = [o.value];\n    for (let i = 1; i < as.length; i++) {\n        const o = f(i, as[i]);\n        if (isNone(o)) {\n            return none;\n        }\n        out.push(o.value);\n    }\n    return some(out);\n};\n/**\n * Equivalent to `ReadonlyArray#traverseWithIndex(Applicative)`.\n *\n * @category traversing\n * @since 2.11.0\n */\nexport const traverseReadonlyArrayWithIndex = (f) => {\n    const g = traverseReadonlyNonEmptyArrayWithIndex(f);\n    return (as) => (_.isNonEmpty(as) ? g(as) : ApT);\n};\n/**\n * Equivalent to `ReadonlyArray#traverseWithIndex(Applicative)`.\n *\n * @category traversing\n * @since 2.9.0\n */\nexport const traverseArrayWithIndex = traverseReadonlyArrayWithIndex;\n/**\n * Equivalent to `ReadonlyArray#traverse(Applicative)`.\n *\n * @category traversing\n * @since 2.9.0\n */\nexport const traverseArray = (f) => traverseReadonlyArrayWithIndex((_, a) => f(a));\n/**\n * Equivalent to `ReadonlyArray#sequence(Applicative)`.\n *\n * @category traversing\n * @since 2.9.0\n */\nexport const sequenceArray = \n/*#__PURE__*/ traverseArray(identity);\n// -------------------------------------------------------------------------------------\n// legacy\n// -------------------------------------------------------------------------------------\n/**\n * Alias of `flatMap`.\n *\n * @category legacy\n * @since 2.0.0\n */\nexport const chain = flatMap;\n/**\n * Alias of `tap`.\n *\n * @category legacy\n * @since 2.0.0\n */\nexport const chainFirst = tap;\n// -------------------------------------------------------------------------------------\n// deprecated\n// -------------------------------------------------------------------------------------\n/**\n * Use `Refinement` module instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport function getRefinement(getOption) {\n    return (a) => isSome(getOption(a));\n}\n/**\n * Use [`chainNullableK`](#chainnullablek) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const mapNullable = chainNullableK;\n/**\n * This instance is deprecated, use small, specific instances instead.\n * For example if a function needs a `Functor` instance, pass `O.Functor` instead of `O.option`\n * (where `O` is from `import O from 'fp-ts/Option'`)\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const option = {\n    URI,\n    map: _map,\n    of,\n    ap: _ap,\n    chain: flatMap,\n    reduce: _reduce,\n    foldMap: _foldMap,\n    reduceRight: _reduceRight,\n    traverse: _traverse,\n    sequence,\n    zero,\n    alt: _alt,\n    extend: _extend,\n    compact,\n    separate,\n    filter: _filter,\n    filterMap: _filterMap,\n    partition: _partition,\n    partitionMap: _partitionMap,\n    wither: _wither,\n    wilt: _wilt,\n    throwError\n};\n/**\n * Use [`getApplySemigroup`](./Apply.ts.html#getapplysemigroup) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const getApplySemigroup = /*#__PURE__*/ getApplySemigroup_(Apply);\n/**\n * Use [`getApplicativeMonoid`](./Applicative.ts.html#getapplicativemonoid) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const getApplyMonoid = /*#__PURE__*/ getApplicativeMonoid(Applicative);\n/**\n * Use\n *\n * ```ts\n * import { first } from 'fp-ts/Semigroup'\n * import { getMonoid } from 'fp-ts/Option'\n *\n * getMonoid(first())\n * ```\n *\n * instead.\n *\n * Monoid returning the left-most non-`None` value\n *\n * | x       | y       | concat(x, y) |\n * | ------- | ------- | ------------ |\n * | none    | none    | none         |\n * | some(a) | none    | some(a)      |\n * | none    | some(b) | some(b)      |\n * | some(a) | some(b) | some(a)      |\n *\n * @example\n * import { getFirstMonoid, some, none } from 'fp-ts/Option'\n *\n * const M = getFirstMonoid<number>()\n * assert.deepStrictEqual(M.concat(none, none), none)\n * assert.deepStrictEqual(M.concat(some(1), none), some(1))\n * assert.deepStrictEqual(M.concat(none, some(2)), some(2))\n * assert.deepStrictEqual(M.concat(some(1), some(2)), some(1))\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const getFirstMonoid = () => getMonoid(first());\n/**\n * Use\n *\n * ```ts\n * import { last } from 'fp-ts/Semigroup'\n * import { getMonoid } from 'fp-ts/Option'\n *\n * getMonoid(last())\n * ```\n *\n * instead.\n *\n * Monoid returning the right-most non-`None` value\n *\n * | x       | y       | concat(x, y) |\n * | ------- | ------- | ------------ |\n * | none    | none    | none         |\n * | some(a) | none    | some(a)      |\n * | none    | some(b) | some(b)      |\n * | some(a) | some(b) | some(b)      |\n *\n * @example\n * import { getLastMonoid, some, none } from 'fp-ts/Option'\n *\n * const M = getLastMonoid<number>()\n * assert.deepStrictEqual(M.concat(none, none), none)\n * assert.deepStrictEqual(M.concat(some(1), none), some(1))\n * assert.deepStrictEqual(M.concat(none, some(2)), some(2))\n * assert.deepStrictEqual(M.concat(some(1), some(2)), some(2))\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const getLastMonoid = () => getMonoid(last());\n","import { apFirst as apFirst_, apS as apS_, apSecond as apSecond_ } from './Apply.js';\nimport * as A from './Array.js';\nimport { bind as bind_, chainFirst as chainFirst_ } from './Chain.js';\nimport { fromEquals } from './Eq.js';\nimport { dual, identity, pipe } from './function.js';\nimport { bindTo as bindTo_, flap as flap_, let as let__ } from './Functor.js';\nimport * as _ from './internal.js';\n/**\n * @category constructors\n * @since 2.0.0\n */\nexport function make(value, forest = []) {\n    return {\n        value,\n        forest\n    };\n}\n/**\n * @category instances\n * @since 2.0.0\n */\nexport function getShow(S) {\n    const show = (t) => {\n        return A.isEmpty(t.forest)\n            ? `make(${S.show(t.value)})`\n            : `make(${S.show(t.value)}, [${t.forest.map(show).join(', ')}])`;\n    };\n    return {\n        show\n    };\n}\n/**\n * @category instances\n * @since 2.0.0\n */\nexport function getEq(E) {\n    // eslint-disable-next-line prefer-const\n    let SA;\n    const R = fromEquals((x, y) => E.equals(x.value, y.value) && SA.equals(x.forest, y.forest));\n    SA = A.getEq(R);\n    return R;\n}\nconst draw = (indentation, forest) => {\n    let r = '';\n    const len = forest.length;\n    let tree;\n    for (let i = 0; i < len; i++) {\n        tree = forest[i];\n        const isLast = i === len - 1;\n        r += indentation + (isLast ? '└' : '├') + '─ ' + tree.value;\n        r += draw(indentation + (len > 1 && !isLast ? '│  ' : '   '), tree.forest);\n    }\n    return r;\n};\n/**\n * Neat 2-dimensional drawing of a forest\n *\n * @since 2.0.0\n */\nexport function drawForest(forest) {\n    return draw('\\n', forest);\n}\n/**\n * Neat 2-dimensional drawing of a tree\n *\n * @example\n * import { make, drawTree } from 'fp-ts/Tree'\n *\n * const fa = make('a', [\n *   make('b'),\n *   make('c'),\n *   make('d', [make('e'), make('f')])\n * ])\n *\n * assert.strictEqual(drawTree(fa), `a\n * ├─ b\n * ├─ c\n * └─ d\n *    ├─ e\n *    └─ f`)\n *\n *\n * @since 2.0.0\n */\nexport function drawTree(tree) {\n    return tree.value + drawForest(tree.forest);\n}\n/**\n * Build a (possibly infinite) tree from a seed value in breadth-first order.\n *\n * @category constructors\n * @since 2.0.0\n */\nexport function unfoldTree(b, f) {\n    const [a, bs] = f(b);\n    return { value: a, forest: unfoldForest(bs, f) };\n}\n/**\n * Build a (possibly infinite) forest from a list of seed values in breadth-first order.\n *\n * @category constructors\n * @since 2.0.0\n */\nexport function unfoldForest(bs, f) {\n    return bs.map((b) => unfoldTree(b, f));\n}\nexport function unfoldTreeM(M) {\n    const unfoldForestMM = unfoldForestM(M);\n    return (b, f) => M.chain(f(b), ([a, bs]) => M.map(unfoldForestMM(bs, f), (ts) => ({ value: a, forest: ts })));\n}\nexport function unfoldForestM(M) {\n    const traverseM = A.traverse(M);\n    return (bs, f) => pipe(bs, traverseM((b) => unfoldTreeM(M)(b, f)));\n}\n/**\n * Fold a tree into a \"summary\" value in depth-first order.\n *\n * For each node in the tree, apply `f` to the `value` and the result of applying `f` to each `forest`.\n *\n * This is also known as the catamorphism on trees.\n *\n * @example\n * import { fold, make } from 'fp-ts/Tree'\n * import { concatAll } from 'fp-ts/Monoid'\n * import { MonoidSum } from 'fp-ts/number'\n *\n * const t = make(1, [make(2), make(3)])\n *\n * const sum = concatAll(MonoidSum)\n *\n * // Sum the values in a tree:\n * assert.deepStrictEqual(fold((a: number, bs: Array<number>) => a + sum(bs))(t), 6)\n *\n * // Find the maximum value in the tree:\n * assert.deepStrictEqual(fold((a: number, bs: Array<number>) => bs.reduce((b, acc) => Math.max(b, acc), a))(t), 3)\n *\n * // Count the number of leaves in the tree:\n * assert.deepStrictEqual(fold((_: number, bs: Array<number>) => (bs.length === 0 ? 1 : sum(bs)))(t), 2)\n *\n * @category folding\n * @since 2.6.0\n */\nexport function fold(f) {\n    const go = (tree) => f(tree.value, tree.forest.map(go));\n    return go;\n}\n/* istanbul ignore next */\nconst _map = (fa, f) => pipe(fa, map(f));\nconst _ap = (fab, fa) => flatMap(fab, (f) => pipe(fa, map(f)));\n/* istanbul ignore next */\nconst _reduce = (fa, b, f) => pipe(fa, reduce(b, f));\n/* istanbul ignore next */\nconst _foldMap = (M) => {\n    const foldMapM = foldMap(M);\n    return (fa, f) => pipe(fa, foldMapM(f));\n};\n/* istanbul ignore next */\nconst _reduceRight = (fa, b, f) => pipe(fa, reduceRight(b, f));\n/* istanbul ignore next */\nconst _extend = (wa, f) => pipe(wa, extend(f));\n/* istanbul ignore next */\nconst _traverse = (F) => {\n    const traverseF = traverse(F);\n    return (ta, f) => pipe(ta, traverseF(f));\n};\n/**\n * @since 2.0.0\n */\nexport const ap = (fa) => (fab) => _ap(fab, fa);\n/**\n * @category sequencing\n * @since 2.14.0\n */\nexport const flatMap = /*#__PURE__*/ dual(2, (ma, f) => {\n    const { value, forest } = f(ma.value);\n    const concat = A.getMonoid().concat;\n    return {\n        value,\n        forest: concat(forest, ma.forest.map(flatMap(f)))\n    };\n});\n/**\n * @since 2.0.0\n */\nexport const extend = (f) => (wa) => ({\n    value: f(wa),\n    forest: wa.forest.map(extend(f))\n});\n/**\n * @since 2.0.0\n */\nexport const duplicate = /*#__PURE__*/ extend(identity);\n/**\n * @category sequencing\n * @since 2.0.0\n */\nexport const flatten = /*#__PURE__*/ flatMap(identity);\n/**\n * `map` can be used to turn functions `(a: A) => B` into functions `(fa: F<A>) => F<B>` whose argument and return types\n * use the type constructor `F` to represent some computational context.\n *\n * @category mapping\n * @since 2.0.0\n */\nexport const map = (f) => (fa) => ({\n    value: f(fa.value),\n    forest: fa.forest.map(map(f))\n});\n/**\n * @category folding\n * @since 2.0.0\n */\nexport const reduce = (b, f) => (fa) => {\n    let r = f(b, fa.value);\n    const len = fa.forest.length;\n    for (let i = 0; i < len; i++) {\n        r = pipe(fa.forest[i], reduce(r, f));\n    }\n    return r;\n};\n/**\n * @category folding\n * @since 2.0.0\n */\nexport const foldMap = (M) => (f) => reduce(M.empty, (acc, a) => M.concat(acc, f(a)));\n/**\n * @category folding\n * @since 2.0.0\n */\nexport const reduceRight = (b, f) => (fa) => {\n    let r = b;\n    const len = fa.forest.length;\n    for (let i = len - 1; i >= 0; i--) {\n        r = pipe(fa.forest[i], reduceRight(r, f));\n    }\n    return f(fa.value, r);\n};\n/**\n * @category Extract\n * @since 2.6.2\n */\nexport const extract = (wa) => wa.value;\n/**\n * @category traversing\n * @since 2.6.3\n */\nexport const traverse = (F) => {\n    const traverseF = A.traverse(F);\n    const out = (f) => (ta) => F.ap(F.map(f(ta.value), (value) => (forest) => ({\n        value,\n        forest\n    })), pipe(ta.forest, traverseF(out(f))));\n    return out;\n};\n/**\n * @category traversing\n * @since 2.6.3\n */\nexport const sequence = (F) => traverse(F)(identity);\n/**\n * @category constructors\n * @since 2.7.0\n */\nexport const of = (a) => make(a);\n/**\n * @category type lambdas\n * @since 2.0.0\n */\nexport const URI = 'Tree';\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Functor = {\n    URI,\n    map: _map\n};\n/**\n * @category mapping\n * @since 2.10.0\n */\nexport const flap = /*#__PURE__*/ flap_(Functor);\n/**\n * @category instances\n * @since 2.10.0\n */\nexport const Pointed = {\n    URI,\n    of\n};\n/**\n * @category instances\n * @since 2.10.0\n */\nexport const Apply = {\n    URI,\n    map: _map,\n    ap: _ap\n};\n/**\n * Combine two effectful actions, keeping only the result of the first.\n *\n * @since 2.0.0\n */\nexport const apFirst = /*#__PURE__*/ apFirst_(Apply);\n/**\n * Combine two effectful actions, keeping only the result of the second.\n *\n * @since 2.0.0\n */\nexport const apSecond = /*#__PURE__*/ apSecond_(Apply);\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Applicative = {\n    URI,\n    map: _map,\n    ap: _ap,\n    of\n};\n/**\n * @category instances\n * @since 2.10.0\n */\nexport const Chain = {\n    URI,\n    map: _map,\n    ap: _ap,\n    chain: flatMap\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Monad = {\n    URI,\n    map: _map,\n    ap: _ap,\n    of,\n    chain: flatMap\n};\n/**\n * Composes computations in sequence, using the return value of one computation to determine the next computation and\n * keeping only the result of the first.\n *\n * @since 2.0.0\n */\nexport const chainFirst = /*#__PURE__*/ chainFirst_(Chain);\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Foldable = {\n    URI,\n    reduce: _reduce,\n    foldMap: _foldMap,\n    reduceRight: _reduceRight\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Traversable = {\n    URI,\n    map: _map,\n    reduce: _reduce,\n    foldMap: _foldMap,\n    reduceRight: _reduceRight,\n    traverse: _traverse,\n    sequence\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Comonad = {\n    URI,\n    map: _map,\n    extend: _extend,\n    extract\n};\n// -------------------------------------------------------------------------------------\n// do notation\n// -------------------------------------------------------------------------------------\n/**\n * @category do notation\n * @since 2.9.0\n */\nexport const Do = /*#__PURE__*/ of(_.emptyRecord);\n/**\n * @category do notation\n * @since 2.8.0\n */\nexport const bindTo = /*#__PURE__*/ bindTo_(Functor);\nconst let_ = /*#__PURE__*/ let__(Functor);\nexport { \n/**\n * @category do notation\n * @since 2.13.0\n */\nlet_ as let };\n/**\n * @category do notation\n * @since 2.8.0\n */\nexport const bind = /*#__PURE__*/ bind_(Chain);\n/**\n * @category do notation\n * @since 2.8.0\n */\nexport const apS = /*#__PURE__*/ apS_(Apply);\n// -------------------------------------------------------------------------------------\n// utils\n// -------------------------------------------------------------------------------------\n/**\n * @since 2.0.0\n */\nexport function elem(E) {\n    const go = (a, fa) => E.equals(a, fa.value) || fa.forest.some((tree) => go(a, tree));\n    return go;\n}\n/**\n * @since 2.11.0\n */\nexport const exists = (predicate) => (ma) => predicate(ma.value) || ma.forest.some(exists(predicate));\n// -------------------------------------------------------------------------------------\n// legacy\n// -------------------------------------------------------------------------------------\n/**\n * Alias of `flatMap`.\n *\n * @category legacy\n * @since 2.0.0\n */\nexport const chain = flatMap;\n// -------------------------------------------------------------------------------------\n// deprecated\n// -------------------------------------------------------------------------------------\n/**\n * This instance is deprecated, use small, specific instances instead.\n * For example if a function needs a `Functor` instance, pass `T.Functor` instead of `T.tree`\n * (where `T` is from `import T from 'fp-ts/Tree'`)\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const tree = {\n    URI,\n    map: _map,\n    of,\n    ap: _ap,\n    chain: flatMap,\n    reduce: _reduce,\n    foldMap: _foldMap,\n    reduceRight: _reduceRight,\n    traverse: _traverse,\n    sequence,\n    extract,\n    extend: _extend\n};\n","import { identity, pipe, unsafeCoerce } from './function.js';\nimport { flap as flap_ } from './Functor.js';\n/**\n * @category constructors\n * @since 2.0.0\n */\nexport const make = unsafeCoerce;\n/**\n * @category instances\n * @since 2.0.0\n */\nexport function getShow(S) {\n    return {\n        show: (c) => `make(${S.show(c)})`\n    };\n}\n/**\n * @category instances\n * @since 2.0.0\n */\nexport const getEq = identity;\n/**\n * @category instances\n * @since 2.6.0\n */\nexport const getOrd = identity;\n/**\n * @category instances\n * @since 2.6.0\n */\nexport const getBounded = identity;\n/**\n * @category instances\n * @since 2.6.0\n */\nexport const getSemigroup = identity;\n/**\n * @category instances\n * @since 2.6.0\n */\nexport const getMonoid = identity;\n/**\n * @category instances\n * @since 2.6.0\n */\nexport const getSemiring = identity;\n/**\n * @category instances\n * @since 2.6.0\n */\nexport const getRing = identity;\n/**\n * @category instances\n * @since 2.6.0\n */\nexport const getHeytingAlgebra = identity;\n/**\n * @category instances\n * @since 2.6.0\n */\nexport const getBooleanAlgebra = identity;\n/**\n * @category instances\n * @since 2.0.0\n */\nexport function getApply(S) {\n    return {\n        URI,\n        _E: undefined,\n        map: _map,\n        ap: (fab, fa) => make(S.concat(fab, fa))\n    };\n}\n/**\n * @category instances\n * @since 2.0.0\n */\nexport function getApplicative(M) {\n    const A = getApply(M);\n    return {\n        URI,\n        _E: undefined,\n        map: A.map,\n        ap: A.ap,\n        of: () => make(M.empty)\n    };\n}\nconst _contramap = (fa, f) => pipe(fa, contramap(f));\n/* istanbul ignore next */\nconst _map = (fa, f) => pipe(fa, map(f));\n/* istanbul ignore next */\nconst _bimap = (fa, f, g) => pipe(fa, bimap(f, g));\n/* istanbul ignore next */\nconst _mapLeft = (fa, f) => pipe(fa, mapLeft(f));\n/**\n * @since 2.0.0\n */\nexport const contramap = () => unsafeCoerce;\n/**\n * `map` can be used to turn functions `(a: A) => B` into functions `(fa: F<A>) => F<B>` whose argument and return types\n * use the type constructor `F` to represent some computational context.\n *\n * @category mapping\n * @since 2.0.0\n */\nexport const map = () => unsafeCoerce;\n/**\n * Map a pair of functions over the two type arguments of the bifunctor.\n *\n * @category mapping\n * @since 2.6.2\n */\nexport const bimap = (f) => (fa) => make(f(fa));\n/**\n * Map a function over the first type argument of a bifunctor.\n *\n * @category error handling\n * @since 2.6.2\n */\nexport const mapLeft = (f) => (fa) => make(f(fa));\n/**\n * @category type lambdas\n * @since 2.0.0\n */\nexport const URI = 'Const';\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Functor = {\n    URI,\n    map: _map\n};\n/**\n * @category mapping\n * @since 2.10.0\n */\nexport const flap = /*#__PURE__*/ flap_(Functor);\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Contravariant = {\n    URI,\n    contramap: _contramap\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Bifunctor = {\n    URI,\n    bimap: _bimap,\n    mapLeft: _mapLeft\n};\n// -------------------------------------------------------------------------------------\n// deprecated\n// -------------------------------------------------------------------------------------\n/**\n * This instance is deprecated, use small, specific instances instead.\n * For example if a function needs a `Functor` instance, pass `C.Functor` instead of `C.const_`\n * (where `C` is from `import C from 'fp-ts/Const'`)\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const const_ = {\n    URI,\n    map: _map,\n    contramap: _contramap,\n    bimap: _bimap,\n    mapLeft: _mapLeft\n};\n","/**\n * @since 2.11.0\n */\nimport { flow, identity } from './function.js';\n/**\n * @category type lambdas\n * @since 2.11.0\n */\nexport const URI = 'Endomorphism';\n/**\n * Endomorphism form a `Semigroup` where the `concat` operation is the usual function composition.\n *\n * @category instances\n * @since 2.11.0\n */\nexport const getSemigroup = () => ({\n    concat: (first, second) => flow(first, second)\n});\n/**\n * Endomorphism form a `Monoid` where the `empty` value is the `identity` function.\n *\n * @category instances\n * @since 2.11.0\n */\nexport const getMonoid = () => ({\n    concat: getSemigroup().concat,\n    empty: identity\n});\n","import { getMonoid as getEM } from './Endomorphism.js';\nimport { getMonoid as getFM } from './function.js';\nimport * as _ from './internal.js';\nimport * as Se from './Semigroup.js';\n// -------------------------------------------------------------------------------------\n// constructors\n// -------------------------------------------------------------------------------------\n/**\n * Get a monoid where `concat` will return the minimum, based on the provided bounded order.\n *\n * The `empty` value is the `top` value.\n *\n * @example\n * import * as N from 'fp-ts/number'\n * import * as M from 'fp-ts/Monoid'\n *\n * const M1 = M.min(N.Bounded)\n *\n * assert.deepStrictEqual(M1.concat(1, 2), 1)\n *\n * @category constructors\n * @since 2.10.0\n */\nexport const min = (B) => ({\n    concat: Se.min(B).concat,\n    empty: B.top\n});\n/**\n * Get a monoid where `concat` will return the maximum, based on the provided bounded order.\n *\n * The `empty` value is the `bottom` value.\n *\n * @example\n * import * as N from 'fp-ts/number'\n * import * as M from 'fp-ts/Monoid'\n *\n * const M1 = M.max(N.Bounded)\n *\n * assert.deepStrictEqual(M1.concat(1, 2), 2)\n *\n * @category constructors\n * @since 2.10.0\n */\nexport const max = (B) => ({\n    concat: Se.max(B).concat,\n    empty: B.bottom\n});\n// -------------------------------------------------------------------------------------\n// combinators\n// -------------------------------------------------------------------------------------\n/**\n * The dual of a `Monoid`, obtained by swapping the arguments of `concat`.\n *\n * @example\n * import { reverse } from 'fp-ts/Monoid'\n * import * as S from 'fp-ts/string'\n *\n * assert.deepStrictEqual(reverse(S.Monoid).concat('a', 'b'), 'ba')\n *\n * @since 2.10.0\n */\nexport const reverse = (M) => ({\n    concat: Se.reverse(M).concat,\n    empty: M.empty\n});\n/**\n * Given a struct of monoids returns a monoid for the struct.\n *\n * @example\n * import { struct } from 'fp-ts/Monoid'\n * import * as N from 'fp-ts/number'\n *\n * interface Point {\n *   readonly x: number\n *   readonly y: number\n * }\n *\n * const M = struct<Point>({\n *   x: N.MonoidSum,\n *   y: N.MonoidSum\n * })\n *\n * assert.deepStrictEqual(M.concat({ x: 1, y: 2 }, { x: 3, y: 4 }), { x: 4, y: 6 })\n *\n * @since 2.10.0\n */\nexport const struct = (monoids) => {\n    const empty = {};\n    for (const k in monoids) {\n        if (_.has.call(monoids, k)) {\n            empty[k] = monoids[k].empty;\n        }\n    }\n    return {\n        concat: Se.struct(monoids).concat,\n        empty\n    };\n};\n/**\n * Given a tuple of monoids returns a monoid for the tuple.\n *\n * @example\n * import { tuple } from 'fp-ts/Monoid'\n * import * as B from 'fp-ts/boolean'\n * import * as N from 'fp-ts/number'\n * import * as S from 'fp-ts/string'\n *\n * const M1 = tuple(S.Monoid, N.MonoidSum)\n * assert.deepStrictEqual(M1.concat(['a', 1], ['b', 2]), ['ab', 3])\n *\n * const M2 = tuple(S.Monoid, N.MonoidSum, B.MonoidAll)\n * assert.deepStrictEqual(M2.concat(['a', 1, true], ['b', 2, false]), ['ab', 3, false])\n *\n * @since 2.10.0\n */\nexport const tuple = (...monoids) => ({\n    concat: Se.tuple(...monoids).concat,\n    empty: monoids.map((m) => m.empty)\n});\n// -------------------------------------------------------------------------------------\n// utils\n// -------------------------------------------------------------------------------------\n/**\n * Given a sequence of `as`, concat them and return the total.\n *\n * If `as` is empty, return the monoid `empty` value.\n *\n * @example\n * import { concatAll } from 'fp-ts/Monoid'\n * import * as N from 'fp-ts/number'\n *\n * assert.deepStrictEqual(concatAll(N.MonoidSum)([1, 2, 3]), 6)\n * assert.deepStrictEqual(concatAll(N.MonoidSum)([]), 0)\n *\n * @since 2.10.0\n */\nexport const concatAll = (M) => Se.concatAll(M)(M.empty);\n// -------------------------------------------------------------------------------------\n// deprecated\n// -------------------------------------------------------------------------------------\n/**\n * Use [`Monoid`](./void.ts.html#monoid) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const monoidVoid = {\n    concat: Se.semigroupVoid.concat,\n    empty: undefined\n};\n/**\n * Use [`tuple`](#tuple) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const getTupleMonoid = tuple;\n/**\n * Use [`struct`](#struct) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const getStructMonoid = struct;\n/**\n * Use [`reverse`](#reverse) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const getDualMonoid = reverse;\n/**\n * Use [`max`](#max) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const getJoinMonoid = max;\n/**\n * Use [`min`](#min) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const getMeetMonoid = min;\n/**\n * Use [`concatAll`](#concatall) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const fold = concatAll;\n/**\n * Use [`MonoidAll`](./boolean.ts.html#monoidall) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const monoidAll = {\n    concat: Se.semigroupAll.concat,\n    empty: true\n};\n/**\n * Use [`MonoidAny`](./boolean.ts.html#monoidany) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const monoidAny = {\n    concat: Se.semigroupAny.concat,\n    empty: false\n};\n/**\n * Use [`getMonoid`](./function.ts.html#getmonoid) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const getFunctionMonoid = getFM;\n/**\n * Use [`getEndomorphismMonoid`](./function.ts.html#getendomorphismmonoid) instead.\n *\n * **Note**. The execution order in [`getEndomorphismMonoid`](./function.ts.html#getendomorphismmonoid) is reversed.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const getEndomorphismMonoid = () => reverse(getEM());\n/**\n * Use [`Monoid`](./string.ts.html#monoid) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const monoidString = {\n    concat: Se.semigroupString.concat,\n    empty: ''\n};\n/**\n * Use [`MonoidSum`](./number.ts.html#monoidsum) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const monoidSum = {\n    concat: Se.semigroupSum.concat,\n    empty: 0\n};\n/**\n * Use [`MonoidProduct`](./number.ts.html#monoidproduct) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const monoidProduct = {\n    concat: Se.semigroupProduct.concat,\n    empty: 1\n};\n","import { apFirst as apFirst_, apSecond as apSecond_ } from './Apply.js';\nimport { chainFirst as chainFirst_ } from './Chain.js';\nimport { identity, pipe as pipeFromFunctionModule } from './function.js';\nexport function map(F) {\n    return (f) => (fa) => F.map(fa, f);\n}\nexport function contramap(F) {\n    return (f) => (fa) => F.contramap(fa, f);\n}\nexport function mapWithIndex(F) {\n    return (f) => (fa) => F.mapWithIndex(fa, f);\n}\nexport function ap(F) {\n    return (fa) => (fab) => F.ap(fab, fa);\n}\nexport function chain(F) {\n    return (f) => (fa) => F.chain(fa, f);\n}\nexport function bimap(F) {\n    return (f, g) => (fea) => F.bimap(fea, f, g);\n}\nexport function mapLeft(F) {\n    return (f) => (fea) => F.mapLeft(fea, f);\n}\nexport function extend(F) {\n    return (f) => (wa) => F.extend(wa, f);\n}\nexport function reduce(F) {\n    return (b, f) => (fa) => F.reduce(fa, b, f);\n}\nexport function foldMap(F) {\n    return (M) => {\n        const foldMapM = F.foldMap(M);\n        return (f) => (fa) => foldMapM(fa, f);\n    };\n}\nexport function reduceRight(F) {\n    return (b, f) => (fa) => F.reduceRight(fa, b, f);\n}\nexport function reduceWithIndex(F) {\n    return (b, f) => (fa) => F.reduceWithIndex(fa, b, f);\n}\nexport function foldMapWithIndex(F) {\n    return (M) => {\n        const foldMapWithIndexM = F.foldMapWithIndex(M);\n        return (f) => (fa) => foldMapWithIndexM(fa, f);\n    };\n}\nexport function reduceRightWithIndex(F) {\n    return (b, f) => (fa) => F.reduceRightWithIndex(fa, b, f);\n}\nexport function alt(F) {\n    return (that) => (fa) => F.alt(fa, that);\n}\nexport function filter(F) {\n    return (predicate) => (fa) => F.filter(fa, predicate);\n}\nexport function filterMap(F) {\n    return (f) => (fa) => F.filterMap(fa, f);\n}\nexport function partition(F) {\n    return (f) => (fa) => F.partition(fa, f);\n}\nexport function partitionMap(F) {\n    return (f) => (fa) => F.partitionMap(fa, f);\n}\nexport function filterWithIndex(F) {\n    return (predicate) => (fa) => F.filterWithIndex(fa, predicate);\n}\nexport function filterMapWithIndex(F) {\n    return (f) => (fa) => F.filterMapWithIndex(fa, f);\n}\nexport function partitionWithIndex(F) {\n    return (f) => (fa) => F.partitionWithIndex(fa, f);\n}\nexport function partitionMapWithIndex(F) {\n    return (f) => (fa) => F.partitionMapWithIndex(fa, f);\n}\nexport function promap(F) {\n    return (f, g) => (fbc) => F.promap(fbc, f, g);\n}\nexport function compose(F) {\n    return (ea) => (ab) => F.compose(ab, ea);\n}\nconst isFunctor = (I) => typeof I.map === 'function';\nconst isContravariant = (I) => typeof I.contramap === 'function';\nconst isFunctorWithIndex = (I) => typeof I.mapWithIndex === 'function';\nconst isApply = (I) => typeof I.ap === 'function';\nconst isChain = (I) => typeof I.chain === 'function';\nconst isBifunctor = (I) => typeof I.bimap === 'function';\nconst isExtend = (I) => typeof I.extend === 'function';\nconst isFoldable = (I) => typeof I.reduce === 'function';\nconst isFoldableWithIndex = (I) => typeof I.reduceWithIndex === 'function';\nconst isAlt = (I) => typeof I.alt === 'function';\nconst isCompactable = (I) => typeof I.compact === 'function';\nconst isFilterable = (I) => typeof I.filter === 'function';\nconst isFilterableWithIndex = (I) => typeof I.filterWithIndex === 'function';\nconst isProfunctor = (I) => typeof I.promap === 'function';\nconst isSemigroupoid = (I) => typeof I.compose === 'function';\nconst isMonadThrow = (I) => typeof I.throwError === 'function';\n/** @deprecated */\nexport function pipeable(I) {\n    const r = {};\n    if (isFunctor(I)) {\n        r.map = map(I);\n    }\n    if (isContravariant(I)) {\n        r.contramap = contramap(I);\n    }\n    if (isFunctorWithIndex(I)) {\n        r.mapWithIndex = mapWithIndex(I);\n    }\n    if (isApply(I)) {\n        r.ap = ap(I);\n        r.apFirst = apFirst_(I);\n        r.apSecond = apSecond_(I);\n    }\n    if (isChain(I)) {\n        r.chain = chain(I);\n        r.chainFirst = chainFirst_(I);\n        r.flatten = r.chain(identity);\n    }\n    if (isBifunctor(I)) {\n        r.bimap = bimap(I);\n        r.mapLeft = mapLeft(I);\n    }\n    if (isExtend(I)) {\n        r.extend = extend(I);\n        r.duplicate = r.extend(identity);\n    }\n    if (isFoldable(I)) {\n        r.reduce = reduce(I);\n        r.foldMap = foldMap(I);\n        r.reduceRight = reduceRight(I);\n    }\n    if (isFoldableWithIndex(I)) {\n        r.reduceWithIndex = reduceWithIndex(I);\n        r.foldMapWithIndex = foldMapWithIndex(I);\n        r.reduceRightWithIndex = reduceRightWithIndex(I);\n    }\n    if (isAlt(I)) {\n        r.alt = alt(I);\n    }\n    if (isCompactable(I)) {\n        r.compact = I.compact;\n        r.separate = I.separate;\n    }\n    if (isFilterable(I)) {\n        r.filter = filter(I);\n        r.filterMap = filterMap(I);\n        r.partition = partition(I);\n        r.partitionMap = partitionMap(I);\n    }\n    if (isFilterableWithIndex(I)) {\n        r.filterWithIndex = filterWithIndex(I);\n        r.filterMapWithIndex = filterMapWithIndex(I);\n        r.partitionWithIndex = partitionWithIndex(I);\n        r.partitionMapWithIndex = partitionMapWithIndex(I);\n    }\n    if (isProfunctor(I)) {\n        r.promap = promap(I);\n    }\n    if (isSemigroupoid(I)) {\n        r.compose = compose(I);\n    }\n    if (isMonadThrow(I)) {\n        const fromOption = (onNone) => (ma) => ma._tag === 'None' ? I.throwError(onNone()) : I.of(ma.value);\n        const fromEither = (ma) => ma._tag === 'Left' ? I.throwError(ma.left) : I.of(ma.right);\n        const fromPredicate = (predicate, onFalse) => (a) => predicate(a) ? I.of(a) : I.throwError(onFalse(a));\n        const filterOrElse = (predicate, onFalse) => (ma) => I.chain(ma, (a) => (predicate(a) ? I.of(a) : I.throwError(onFalse(a))));\n        r.fromOption = fromOption;\n        r.fromEither = fromEither;\n        r.fromPredicate = fromPredicate;\n        r.filterOrElse = filterOrElse;\n    }\n    return r;\n}\n/**\n * Use [`pipe`](https://gcanti.github.io/fp-ts/modules/function.ts.html#pipe) from `function` module instead.\n *\n * @since 2.0.0\n * @deprecated\n */\nexport const pipe = pipeFromFunctionModule;\n","import { fromEquals } from './Eq.js';\nimport { pipe, SK } from './function.js';\nimport { flap as flap_ } from './Functor.js';\nimport * as _ from './internal.js';\nimport * as O from './Option.js';\nimport { separated } from './Separated.js';\nimport { wiltDefault, witherDefault } from './Witherable.js';\n/**\n * @category conversions\n * @since 2.5.0\n */\nexport const fromMap = (m) => new Map(m);\n/**\n * @category conversions\n * @since 2.5.0\n */\nexport function toMap(m) {\n    return new Map(m);\n}\n/**\n * @category instances\n * @since 2.5.0\n */\nexport function getShow(SK, SA) {\n    return {\n        show: (m) => {\n            const entries = [];\n            m.forEach((a, k) => {\n                entries.push(`[${SK.show(k)}, ${SA.show(a)}]`);\n            });\n            return `new Map([${entries.sort().join(', ')}])`;\n        }\n    };\n}\n/**\n * Calculate the number of key/value pairs in a map\n *\n * @since 2.5.0\n */\nexport const size = (m) => m.size;\n/**\n * Test whether or not a map is empty\n *\n * @since 2.5.0\n */\nexport const isEmpty = (m) => m.size === 0;\nexport function member(E) {\n    const lookupE = lookup(E);\n    return (k, m) => {\n        if (m === undefined) {\n            const memberE = member(E);\n            return (m) => memberE(k, m);\n        }\n        return _.isSome(lookupE(k, m));\n    };\n}\nexport function elem(E) {\n    return (a, m) => {\n        if (m === undefined) {\n            const elemE = elem(E);\n            return (m) => elemE(a, m);\n        }\n        const values = m.values();\n        let e;\n        while (!(e = values.next()).done) {\n            const v = e.value;\n            if (E.equals(a, v)) {\n                return true;\n            }\n        }\n        return false;\n    };\n}\n/**\n * Get a sorted `ReadonlyArray` of the keys contained in a `ReadonlyMap`.\n *\n * @since 2.5.0\n */\nexport const keys = (O) => (m) => Array.from(m.keys()).sort(O.compare);\n/**\n * Get a sorted `ReadonlyArray` of the values contained in a `ReadonlyMap`.\n *\n * @since 2.5.0\n */\nexport const values = (O) => (m) => Array.from(m.values()).sort(O.compare);\n/**\n * @since 2.5.0\n */\nexport function collect(O) {\n    const keysO = keys(O);\n    return (f) => (m) => {\n        const out = [];\n        const ks = keysO(m);\n        for (const key of ks) {\n            out.push(f(key, m.get(key)));\n        }\n        return out;\n    };\n}\n/**\n * Get a sorted `ReadonlyArray` of the key/value pairs contained in a `ReadonlyMap`.\n *\n * @category conversions\n * @since 2.5.0\n */\nexport const toReadonlyArray = (O) => collect(O)((k, a) => [k, a]);\nexport function toUnfoldable(ord, U) {\n    const toReadonlyArrayO = toReadonlyArray(ord);\n    return (d) => {\n        const kas = toReadonlyArrayO(d);\n        const len = kas.length;\n        return U.unfold(0, (b) => (b < len ? _.some([kas[b], b + 1]) : _.none));\n    };\n}\n/**\n * Insert or replace a key/value pair in a `ReadonlyMap`.\n *\n * @since 2.10.0\n */\nexport const upsertAt = (E) => {\n    const lookupWithKeyE = lookupWithKey(E);\n    return (k, a) => {\n        const lookupWithKeyEk = lookupWithKeyE(k);\n        return (m) => {\n            const found = lookupWithKeyEk(m);\n            if (_.isNone(found)) {\n                const out = new Map(m);\n                out.set(k, a);\n                return out;\n            }\n            else if (found.value[1] !== a) {\n                const out = new Map(m);\n                out.set(found.value[0], a);\n                return out;\n            }\n            return m;\n        };\n    };\n};\n/**\n * Delete a key and value from a map\n *\n * @since 2.5.0\n */\nexport const deleteAt = (E) => {\n    const lookupWithKeyE = lookupWithKey(E);\n    return (k) => (m) => {\n        const found = lookupWithKeyE(k, m);\n        if (_.isSome(found)) {\n            const r = new Map(m);\n            r.delete(found.value[0]);\n            return r;\n        }\n        return m;\n    };\n};\n/**\n * @since 2.5.0\n */\nexport const updateAt = (E) => {\n    const modifyAtE = modifyAt(E);\n    return (k, a) => modifyAtE(k, () => a);\n};\n/**\n * @since 2.5.0\n */\nexport const modifyAt = (E) => {\n    const lookupWithKeyE = lookupWithKey(E);\n    return (k, f) => (m) => {\n        const found = lookupWithKeyE(k, m);\n        if (_.isNone(found)) {\n            return _.none;\n        }\n        const [fk, fv] = found.value;\n        const next = f(fv);\n        if (next === fv) {\n            return _.some(m);\n        }\n        const r = new Map(m);\n        r.set(fk, next);\n        return _.some(r);\n    };\n};\n/**\n * Delete a key and value from a map, returning the value as well as the subsequent map\n *\n * @since 2.5.0\n */\nexport function pop(E) {\n    const lookupE = lookup(E);\n    const deleteAtE = deleteAt(E);\n    return (k) => {\n        const deleteAtEk = deleteAtE(k);\n        return (m) => pipe(lookupE(k, m), O.map((a) => [a, deleteAtEk(m)]));\n    };\n}\nexport function lookupWithKey(E) {\n    return (k, m) => {\n        if (m === undefined) {\n            const lookupWithKeyE = lookupWithKey(E);\n            return (m) => lookupWithKeyE(k, m);\n        }\n        const entries = m.entries();\n        let e;\n        while (!(e = entries.next()).done) {\n            const [ka, a] = e.value;\n            if (E.equals(ka, k)) {\n                return _.some([ka, a]);\n            }\n        }\n        return _.none;\n    };\n}\nexport function lookup(E) {\n    const lookupWithKeyE = lookupWithKey(E);\n    return (k, m) => {\n        if (m === undefined) {\n            const lookupE = lookup(E);\n            return (m) => lookupE(k, m);\n        }\n        return pipe(lookupWithKeyE(k, m), O.map(([_, a]) => a));\n    };\n}\nexport function isSubmap(SK, SA) {\n    const lookupWithKeyS = lookupWithKey(SK);\n    return (me, that) => {\n        if (that === undefined) {\n            const isSubmapSKSA = isSubmap(SK, SA);\n            return (that) => isSubmapSKSA(that, me);\n        }\n        const entries = me.entries();\n        let e;\n        while (!(e = entries.next()).done) {\n            const [k, a] = e.value;\n            const d2OptA = lookupWithKeyS(k, that);\n            if (_.isNone(d2OptA) || !SK.equals(k, d2OptA.value[0]) || !SA.equals(a, d2OptA.value[1])) {\n                return false;\n            }\n        }\n        return true;\n    };\n}\n/**\n * @since 2.5.0\n */\nexport const empty = \n// the type annotation here is intended (otherwise it doesn't type-check)\nnew Map();\n/**\n * @category instances\n * @since 2.5.0\n */\nexport function getEq(SK, SA) {\n    const isSubmapSKSA = isSubmap(SK, SA);\n    return fromEquals((x, y) => isSubmapSKSA(x, y) && isSubmapSKSA(y, x));\n}\n/**\n * Gets `Monoid` instance for Maps given `Semigroup` instance for their values\n *\n * @category instances\n * @since 2.5.0\n */\nexport function getMonoid(SK, SA) {\n    const lookupWithKeyS = lookupWithKey(SK);\n    return {\n        concat: (mx, my) => {\n            if (isEmpty(mx)) {\n                return my;\n            }\n            if (isEmpty(my)) {\n                return mx;\n            }\n            const r = new Map(mx);\n            const entries = my.entries();\n            let e;\n            while (!(e = entries.next()).done) {\n                const [k, a] = e.value;\n                const mxOptA = lookupWithKeyS(k, mx);\n                if (_.isSome(mxOptA)) {\n                    r.set(mxOptA.value[0], SA.concat(mxOptA.value[1], a));\n                }\n                else {\n                    r.set(k, a);\n                }\n            }\n            return r;\n        },\n        empty\n    };\n}\n/**\n * Create a map with one key/value pair\n *\n * @category constructors\n * @since 2.5.0\n */\nexport const singleton = (k, a) => new Map([[k, a]]);\nexport function fromFoldable(E, M, F) {\n    return (fka) => {\n        const lookupWithKeyE = lookupWithKey(E);\n        return F.reduce(fka, new Map(), (b, [k, a]) => {\n            const bOpt = lookupWithKeyE(k, b);\n            if (_.isSome(bOpt)) {\n                b.set(bOpt.value[0], M.concat(bOpt.value[1], a));\n            }\n            else {\n                b.set(k, a);\n            }\n            return b;\n        });\n    };\n}\nconst _mapWithIndex = (fa, f) => {\n    const m = new Map();\n    const entries = fa.entries();\n    let e;\n    while (!(e = entries.next()).done) {\n        const [key, a] = e.value;\n        m.set(key, f(key, a));\n    }\n    return m;\n};\n/**\n * @since 2.10.0\n */\nexport const partitionMapWithIndex = (f) => (fa) => {\n    const left = new Map();\n    const right = new Map();\n    const entries = fa.entries();\n    let e;\n    while (!(e = entries.next()).done) {\n        const [k, a] = e.value;\n        const ei = f(k, a);\n        if (_.isLeft(ei)) {\n            left.set(k, ei.left);\n        }\n        else {\n            right.set(k, ei.right);\n        }\n    }\n    return separated(left, right);\n};\nexport function partitionWithIndex(predicateWithIndex) {\n    return (m) => {\n        const left = new Map();\n        const right = new Map();\n        const entries = m.entries();\n        let e;\n        while (!(e = entries.next()).done) {\n            const [k, a] = e.value;\n            if (predicateWithIndex(k, a)) {\n                right.set(k, a);\n            }\n            else {\n                left.set(k, a);\n            }\n        }\n        return separated(left, right);\n    };\n}\n/**\n * @since 2.10.0\n */\nexport const filterMapWithIndex = (f) => (fa) => {\n    const m = new Map();\n    const entries = fa.entries();\n    let e;\n    while (!(e = entries.next()).done) {\n        const [k, a] = e.value;\n        const o = f(k, a);\n        if (_.isSome(o)) {\n            m.set(k, o.value);\n        }\n    }\n    return m;\n};\nexport function filterWithIndex(predicateWithIndex) {\n    return (m) => {\n        const out = new Map();\n        const entries = m.entries();\n        let e;\n        while (!(e = entries.next()).done) {\n            const [k, a] = e.value;\n            if (predicateWithIndex(k, a)) {\n                out.set(k, a);\n            }\n        }\n        return out;\n    };\n}\nconst _map = (fa, f) => _mapWithIndex(fa, (_, a) => f(a));\nconst _filter = (fa, p) => _filterWithIndex(fa, (_, a) => p(a));\nconst _filterMap = (fa, f) => _filterMapWithIndex(fa, (_, a) => f(a));\nconst _partition = (fa, predicate) => _partitionWithIndex(fa, (_, a) => predicate(a));\nconst _partitionMap = (fa, f) => _partitionMapWithIndex(fa, (_, a) => f(a));\nconst _filterWithIndex = (fa, p) => pipe(fa, filterWithIndex(p));\nconst _filterMapWithIndex = (fa, f) => pipe(fa, filterMapWithIndex(f));\nconst _partitionWithIndex = (fa, p) => pipe(fa, partitionWithIndex(p));\nconst _partitionMapWithIndex = (fa, f) => pipe(fa, partitionMapWithIndex(f));\n/**\n * @category filtering\n * @since 2.5.0\n */\nexport const compact = (fa) => {\n    const m = new Map();\n    const entries = fa.entries();\n    let e;\n    while (!(e = entries.next()).done) {\n        const [k, oa] = e.value;\n        if (_.isSome(oa)) {\n            m.set(k, oa.value);\n        }\n    }\n    return m;\n};\n/**\n * @category filtering\n * @since 2.5.0\n */\nexport const filter = (predicate) => (fa) => _filter(fa, predicate);\n/**\n * @category filtering\n * @since 2.5.0\n */\nexport const filterMap = (f) => (fa) => _filterMap(fa, f);\n/**\n * `map` can be used to turn functions `(a: A) => B` into functions `(fa: F<A>) => F<B>` whose argument and return types\n * use the type constructor `F` to represent some computational context.\n *\n * @category mapping\n * @since 2.5.0\n */\nexport const map = (f) => (fa) => _map(fa, f);\n/**\n * @category mapping\n * @since 2.7.1\n */\nexport const mapWithIndex = (f) => (fa) => _mapWithIndex(fa, f);\n/**\n * @category filtering\n * @since 2.5.0\n */\nexport const partition = (predicate) => (fa) => _partition(fa, predicate);\n/**\n * @category filtering\n * @since 2.5.0\n */\nexport const partitionMap = (f) => (fa) => _partitionMap(fa, f);\n/**\n * @category filtering\n * @since 2.5.0\n */\nexport const separate = (fa) => {\n    const left = new Map();\n    const right = new Map();\n    const entries = fa.entries();\n    let e;\n    while (!(e = entries.next()).done) {\n        const [k, ei] = e.value;\n        if (_.isLeft(ei)) {\n            left.set(k, ei.left);\n        }\n        else {\n            right.set(k, ei.right);\n        }\n    }\n    return separated(left, right);\n};\n/**\n * @category type lambdas\n * @since 2.5.0\n */\nexport const URI = 'ReadonlyMap';\n/**\n * @category instances\n * @since 2.11.0\n */\nexport const getUnionSemigroup = (E, S) => {\n    const unionES = union(E, S);\n    return {\n        concat: (first, second) => unionES(second)(first)\n    };\n};\n/**\n * @category instances\n * @since 2.11.0\n */\nexport const getUnionMonoid = (E, S) => ({\n    concat: getUnionSemigroup(E, S).concat,\n    empty\n});\n/**\n * @category instances\n * @since 2.11.0\n */\nexport const getIntersectionSemigroup = (E, S) => {\n    const intersectionES = intersection(E, S);\n    return {\n        concat: (first, second) => intersectionES(second)(first)\n    };\n};\n/**\n * @category instances\n * @since 2.11.0\n */\nexport const getDifferenceMagma = (E) => () => {\n    const differenceE = difference(E);\n    return {\n        concat: (first, second) => differenceE(second)(first)\n    };\n};\n/**\n * @category filtering\n * @since 2.5.0\n */\nexport function getFilterableWithIndex() {\n    return {\n        URI,\n        _E: undefined,\n        map: _map,\n        mapWithIndex: _mapWithIndex,\n        compact,\n        separate,\n        filter: _filter,\n        filterMap: _filterMap,\n        partition: _partition,\n        partitionMap: _partitionMap,\n        partitionMapWithIndex: _partitionMapWithIndex,\n        partitionWithIndex: _partitionWithIndex,\n        filterMapWithIndex: _filterMapWithIndex,\n        filterWithIndex: _filterWithIndex\n    };\n}\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Functor = {\n    URI,\n    map: _map\n};\n/**\n * @category mapping\n * @since 2.10.0\n */\nexport const flap = /*#__PURE__*/ flap_(Functor);\n/**\n * @category instances\n * @since 2.10.0\n */\nexport const getFunctorWithIndex = () => ({\n    URI,\n    _E: undefined,\n    map: _map,\n    mapWithIndex: _mapWithIndex\n});\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Compactable = {\n    URI,\n    compact,\n    separate\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Filterable = {\n    URI,\n    map: _map,\n    compact,\n    separate,\n    filter: _filter,\n    filterMap: _filterMap,\n    partition: _partition,\n    partitionMap: _partitionMap\n};\n/**\n * @category folding\n * @since 2.11.0\n */\nexport const reduce = (O) => {\n    const reduceWithIndexO = reduceWithIndex(O);\n    return (b, f) => reduceWithIndexO(b, (_, b, a) => f(b, a));\n};\n/**\n * @category folding\n * @since 2.11.0\n */\nexport const foldMap = (O) => {\n    const foldMapWithIndexO = foldMapWithIndex(O);\n    return (M) => {\n        const foldMapWithIndexOM = foldMapWithIndexO(M);\n        return (f) => foldMapWithIndexOM((_, a) => f(a));\n    };\n};\n/**\n * @category folding\n * @since 2.11.0\n */\nexport const reduceRight = (O) => {\n    const reduceRightWithIndexO = reduceRightWithIndex(O);\n    return (b, f) => reduceRightWithIndexO(b, (_, b, a) => f(b, a));\n};\n/**\n * @category folding\n * @since 2.10.0\n */\nexport const getFoldable = (O) => {\n    const reduceO = reduce(O);\n    const foldMapO = foldMap(O);\n    const reduceRightO = reduceRight(O);\n    return {\n        URI,\n        _E: undefined,\n        reduce: (fa, b, f) => pipe(fa, reduceO(b, f)),\n        foldMap: (M) => {\n            const foldMapOM = foldMapO(M);\n            return (fa, f) => pipe(fa, foldMapOM(f));\n        },\n        reduceRight: (fa, b, f) => pipe(fa, reduceRightO(b, f))\n    };\n};\n/**\n * @category folding\n * @since 2.11.0\n */\nexport const reduceWithIndex = (O) => {\n    const keysO = keys(O);\n    return (b, f) => (m) => {\n        let out = b;\n        for (const k of keysO(m)) {\n            out = f(k, out, m.get(k));\n        }\n        return out;\n    };\n};\n/**\n * @category folding\n * @since 2.11.0\n */\nexport const foldMapWithIndex = (O) => {\n    const keysO = keys(O);\n    return (M) => (f) => (m) => {\n        let out = M.empty;\n        for (const k of keysO(m)) {\n            out = M.concat(out, f(k, m.get(k)));\n        }\n        return out;\n    };\n};\n/**\n * @category folding\n * @since 2.11.0\n */\nexport const reduceRightWithIndex = (O) => {\n    const keysO = keys(O);\n    return (b, f) => (m) => {\n        let out = b;\n        const ks = keysO(m);\n        const len = ks.length;\n        for (let i = len - 1; i >= 0; i--) {\n            const k = ks[i];\n            out = f(k, m.get(k), out);\n        }\n        return out;\n    };\n};\n/**\n * @category folding\n * @since 2.10.0\n */\nexport const getFoldableWithIndex = (O) => {\n    const F = getFoldable(O);\n    const reduceWithIndexO = reduceWithIndex(O);\n    const foldMapWithIndexO = foldMapWithIndex(O);\n    const reduceRightWithIndexO = reduceRightWithIndex(O);\n    return {\n        URI,\n        _E: undefined,\n        reduce: F.reduce,\n        foldMap: F.foldMap,\n        reduceRight: F.reduceRight,\n        reduceWithIndex: (fa, b, f) => pipe(fa, reduceWithIndexO(b, f)),\n        foldMapWithIndex: (M) => {\n            const foldMapWithIndexOM = foldMapWithIndexO(M);\n            return (fa, f) => pipe(fa, foldMapWithIndexOM(f));\n        },\n        reduceRightWithIndex: (fa, b, f) => pipe(fa, reduceRightWithIndexO(b, f))\n    };\n};\n/**\n * @category traversing\n * @since 2.10.0\n */\nexport const getTraversable = (O) => {\n    const TWI = getTraversableWithIndex(O);\n    const F = getFoldable(O);\n    return {\n        URI,\n        _E: undefined,\n        map: _map,\n        reduce: F.reduce,\n        foldMap: F.foldMap,\n        reduceRight: F.reduceRight,\n        traverse: TWI.traverse,\n        sequence: TWI.sequence\n    };\n};\n/**\n * @category traversing\n * @since 2.10.0\n */\nexport const getTraversableWithIndex = (O) => {\n    const FWI = getFoldableWithIndex(O);\n    const keysO = keys(O);\n    const traverseWithIndex = (F) => {\n        return (ta, f) => {\n            let fm = F.of(new Map());\n            const ks = keysO(ta);\n            const len = ks.length;\n            for (let i = 0; i < len; i++) {\n                const key = ks[i];\n                const a = ta.get(key);\n                fm = F.ap(F.map(fm, (m) => (b) => m.set(key, b)), f(key, a));\n            }\n            return fm;\n        };\n    };\n    const traverse = (F) => {\n        const traverseWithIndexF = traverseWithIndex(F);\n        return (ta, f) => traverseWithIndexF(ta, (_, a) => f(a));\n    };\n    const sequence = (F) => {\n        const traverseWithIndexF = traverseWithIndex(F);\n        return (ta) => traverseWithIndexF(ta, SK);\n    };\n    return {\n        URI,\n        _E: undefined,\n        map: _map,\n        mapWithIndex: _mapWithIndex,\n        reduce: FWI.reduce,\n        foldMap: FWI.foldMap,\n        reduceRight: FWI.reduceRight,\n        reduceWithIndex: FWI.reduceWithIndex,\n        foldMapWithIndex: FWI.foldMapWithIndex,\n        reduceRightWithIndex: FWI.reduceRightWithIndex,\n        traverse,\n        sequence,\n        traverseWithIndex\n    };\n};\n/**\n * @category filtering\n * @since 2.5.0\n */\nexport function getWitherable(O) {\n    const TWI = getTraversableWithIndex(O);\n    return {\n        URI,\n        _E: undefined,\n        map: _map,\n        compact,\n        separate,\n        filter: _filter,\n        filterMap: _filterMap,\n        partition: _partition,\n        partitionMap: _partitionMap,\n        reduce: TWI.reduce,\n        foldMap: TWI.foldMap,\n        reduceRight: TWI.reduceRight,\n        traverse: TWI.traverse,\n        sequence: TWI.sequence,\n        mapWithIndex: _mapWithIndex,\n        reduceWithIndex: TWI.reduceWithIndex,\n        foldMapWithIndex: TWI.foldMapWithIndex,\n        reduceRightWithIndex: TWI.reduceRightWithIndex,\n        traverseWithIndex: TWI.traverseWithIndex,\n        wilt: wiltDefault(TWI, Compactable),\n        wither: witherDefault(TWI, Compactable)\n    };\n}\n// -------------------------------------------------------------------------------------\n// utils\n// -------------------------------------------------------------------------------------\n/**\n * @since 2.11.0\n */\nexport const union = (E, M) => {\n    const lookupE = lookup(E);\n    return (second) => (first) => {\n        if (isEmpty(first)) {\n            return second;\n        }\n        if (isEmpty(second)) {\n            return first;\n        }\n        const out = new Map();\n        const firstEntries = first.entries();\n        let e;\n        while (!(e = firstEntries.next()).done) {\n            const [k, a] = e.value;\n            const oka = lookupE(k)(second);\n            if (_.isSome(oka)) {\n                out.set(k, M.concat(a, oka.value));\n            }\n            else {\n                out.set(k, a);\n            }\n        }\n        const secondEntries = second.entries();\n        while (!(e = secondEntries.next()).done) {\n            const [k, a] = e.value;\n            const oka = lookupE(k)(out);\n            if (_.isNone(oka)) {\n                out.set(k, a);\n            }\n        }\n        return out;\n    };\n};\n/**\n * @since 2.11.0\n */\nexport const intersection = (E, M) => {\n    const lookupE = lookup(E);\n    return (second) => (first) => {\n        if (isEmpty(first) || isEmpty(second)) {\n            return empty;\n        }\n        const out = new Map();\n        const entries = first.entries();\n        let e;\n        while (!(e = entries.next()).done) {\n            const [k, a] = e.value;\n            const oka = lookupE(k)(second);\n            if (_.isSome(oka)) {\n                out.set(k, M.concat(a, oka.value));\n            }\n        }\n        return out;\n    };\n};\n/**\n * @since 2.11.0\n */\nexport const difference = (E) => {\n    const memberE = member(E);\n    return (second) => (first) => {\n        if (isEmpty(first)) {\n            return second;\n        }\n        if (isEmpty(second)) {\n            return first;\n        }\n        const out = new Map();\n        const firstEntries = first.entries();\n        let e;\n        while (!(e = firstEntries.next()).done) {\n            const [k, a] = e.value;\n            if (!memberE(k)(second)) {\n                out.set(k, a);\n            }\n        }\n        const secondEntries = second.entries();\n        while (!(e = secondEntries.next()).done) {\n            const [k, a] = e.value;\n            if (!memberE(k)(first)) {\n                out.set(k, a);\n            }\n        }\n        return out;\n    };\n};\n// -------------------------------------------------------------------------------------\n// deprecated\n// -------------------------------------------------------------------------------------\n/**\n * Use [`upsertAt`](#upsertat) instead.\n *\n @category zone of death\n * @since 2.5.0\n * @deprecated\n */\nexport const insertAt = upsertAt;\n/**\n * This instance is deprecated, use small, specific instances instead.\n * For example if a function needs a `Functor` instance, pass `RM.Functor` instead of `RM.readonlyMap`\n * (where `RM` is from `import RM from 'fp-ts/ReadonlyMap'`)\n *\n * @category zone of death\n * @since 2.5.0\n * @deprecated\n */\nexport const readonlyMap = {\n    URI,\n    map: _map,\n    compact,\n    separate,\n    filter: _filter,\n    filterMap: _filterMap,\n    partition: _partition,\n    partitionMap: _partitionMap\n};\n","import { fromEquals } from './Eq.js';\nimport { identity } from './function.js';\nimport { not } from './Predicate.js';\nimport { separated } from './Separated.js';\n/**\n * @category conversions\n * @since 2.5.0\n */\nexport const fromSet = (s) => new Set(s);\n// -------------------------------------------------------------------------------------\n// constructors\n// -------------------------------------------------------------------------------------\n/**\n * Create a set with one element\n *\n * @category constructors\n * @since 2.5.0\n */\nexport const singleton = (a) => new Set([a]);\n/**\n * Create a `ReadonlySet` from a `ReadonlyArray`\n *\n * @category conversions\n * @since 2.10.0\n */\nexport const fromReadonlyArray = (E) => (as) => {\n    const len = as.length;\n    const out = new Set();\n    const has = elem(E);\n    for (let i = 0; i < len; i++) {\n        const a = as[i];\n        if (!has(a, out)) {\n            out.add(a);\n        }\n    }\n    return out;\n};\n/**\n * @category conversions\n * @since 2.5.0\n */\nexport function toSet(s) {\n    return new Set(s);\n}\n/**\n * Projects a Set through a function\n *\n * @since 2.5.0\n */\nexport function map(E) {\n    const elemE = elem(E);\n    return (f) => (set) => {\n        const r = new Set();\n        set.forEach((e) => {\n            const v = f(e);\n            if (!elemE(v, r)) {\n                r.add(v);\n            }\n        });\n        return r;\n    };\n}\n/**\n * @since 2.5.0\n */\nexport function chain(E) {\n    const elemE = elem(E);\n    return (f) => (set) => {\n        const r = new Set();\n        set.forEach((e) => {\n            f(e).forEach((e) => {\n                if (!elemE(e, r)) {\n                    r.add(e);\n                }\n            });\n        });\n        return r;\n    };\n}\nexport function filter(predicate) {\n    return (set) => {\n        const values = set.values();\n        let e;\n        const r = new Set();\n        while (!(e = values.next()).done) {\n            const a = e.value;\n            if (predicate(a)) {\n                r.add(a);\n            }\n        }\n        return r;\n    };\n}\nexport function partition(predicate) {\n    return (set) => {\n        const values = set.values();\n        let e;\n        const right = new Set();\n        const left = new Set();\n        while (!(e = values.next()).done) {\n            const a = e.value;\n            if (predicate(a)) {\n                right.add(a);\n            }\n            else {\n                left.add(a);\n            }\n        }\n        return separated(left, right);\n    };\n}\nexport function union(E) {\n    const elemE = elem(E);\n    return (me, that) => {\n        if (that === undefined) {\n            const unionE = union(E);\n            return (that) => unionE(me, that);\n        }\n        if (isEmpty(me)) {\n            return that;\n        }\n        if (isEmpty(that)) {\n            return me;\n        }\n        const r = new Set(me);\n        that.forEach((e) => {\n            if (!elemE(e, r)) {\n                r.add(e);\n            }\n        });\n        return r;\n    };\n}\nexport function intersection(E) {\n    const elemE = elem(E);\n    return (me, that) => {\n        if (that === undefined) {\n            const intersectionE = intersection(E);\n            return (that) => intersectionE(that, me);\n        }\n        if (isEmpty(me) || isEmpty(that)) {\n            return empty;\n        }\n        const r = new Set();\n        me.forEach((e) => {\n            if (elemE(e, that)) {\n                r.add(e);\n            }\n        });\n        return r;\n    };\n}\n/**\n * @since 2.5.0\n */\nexport function partitionMap(EB, EC) {\n    return (f) => (set) => {\n        const values = set.values();\n        let e;\n        const left = new Set();\n        const right = new Set();\n        const hasB = elem(EB);\n        const hasC = elem(EC);\n        while (!(e = values.next()).done) {\n            const v = f(e.value);\n            switch (v._tag) {\n                case 'Left':\n                    if (!hasB(v.left, left)) {\n                        left.add(v.left);\n                    }\n                    break;\n                case 'Right':\n                    if (!hasC(v.right, right)) {\n                        right.add(v.right);\n                    }\n                    break;\n            }\n        }\n        return separated(left, right);\n    };\n}\nexport function difference(E) {\n    const elemE = elem(E);\n    return (me, that) => {\n        if (that === undefined) {\n            const differenceE = difference(E);\n            return (that) => differenceE(that, me);\n        }\n        return filter((a) => !elemE(a, that))(me);\n    };\n}\n/**\n * @since 2.5.0\n */\nexport function reduce(O) {\n    const toReadonlyArrayO = toReadonlyArray(O);\n    return (b, f) => (fa) => toReadonlyArrayO(fa).reduce(f, b);\n}\n/**\n * @since 2.5.0\n */\nexport function foldMap(O, M) {\n    const toReadonlyArrayO = toReadonlyArray(O);\n    return (f) => (fa) => toReadonlyArrayO(fa).reduce((b, a) => M.concat(b, f(a)), M.empty);\n}\n/**\n * @category folding\n * @since 2.11.0\n */\nexport const reduceRight = (O) => {\n    const toReadonlyArrayO = toReadonlyArray(O);\n    return (b, f) => (fa) => toReadonlyArrayO(fa).reduceRight((b, a) => f(a, b), b);\n};\n/**\n * Insert a value into a set\n *\n * @since 2.5.0\n */\nexport function insert(E) {\n    const elemE = elem(E);\n    return (a) => (set) => {\n        if (!elemE(a)(set)) {\n            const r = new Set(set);\n            r.add(a);\n            return r;\n        }\n        else {\n            return set;\n        }\n    };\n}\n/**\n * Delete a value from a set\n *\n * @since 2.5.0\n */\nexport const remove = (E) => (a) => (set) => filter((ax) => !E.equals(a, ax))(set);\n/**\n * Checks an element is a member of a set;\n * If yes, removes the value from the set\n * If no, inserts the value to the set\n *\n * @since 2.10.0\n */\nexport const toggle = (E) => {\n    const elemE = elem(E);\n    const removeE = remove(E);\n    const insertE = insert(E);\n    return (a) => (set) => (elemE(a, set) ? removeE : insertE)(a)(set);\n};\n/**\n * @since 2.5.0\n */\nexport const compact = (E) => filterMap(E)(identity);\n/**\n * @since 2.5.0\n */\nexport function separate(EE, EA) {\n    return (fa) => {\n        const elemEE = elem(EE);\n        const elemEA = elem(EA);\n        const left = new Set();\n        const right = new Set();\n        fa.forEach((e) => {\n            switch (e._tag) {\n                case 'Left':\n                    if (!elemEE(e.left, left)) {\n                        left.add(e.left);\n                    }\n                    break;\n                case 'Right':\n                    if (!elemEA(e.right, right)) {\n                        right.add(e.right);\n                    }\n                    break;\n            }\n        });\n        return separated(left, right);\n    };\n}\n/**\n * @since 2.5.0\n */\nexport function filterMap(E) {\n    const elemE = elem(E);\n    return (f) => (fa) => {\n        const r = new Set();\n        fa.forEach((a) => {\n            const ob = f(a);\n            if (ob._tag === 'Some' && !elemE(ob.value, r)) {\n                r.add(ob.value);\n            }\n        });\n        return r;\n    };\n}\n// -------------------------------------------------------------------------------------\n// utils\n// -------------------------------------------------------------------------------------\n/**\n * @since 2.5.0\n */\nexport const empty = new Set();\n/**\n * Test whether a `ReadonlySet` is empty.\n *\n * @since 2.10.0\n */\nexport const isEmpty = (set) => set.size === 0;\n/**\n * Calculate the number of elements in a `ReadonlySet`.\n *\n * @since 2.10.0\n */\nexport const size = (set) => set.size;\n/**\n * @since 2.5.0\n */\nexport const some = (predicate) => (set) => {\n    const values = set.values();\n    let e;\n    let found = false;\n    while (!found && !(e = values.next()).done) {\n        found = predicate(e.value);\n    }\n    return found;\n};\nexport function every(predicate) {\n    return not(some(not(predicate)));\n}\nexport function isSubset(E) {\n    const elemE = elem(E);\n    return (me, that) => {\n        if (that === undefined) {\n            const isSubsetE = isSubset(E);\n            return (that) => isSubsetE(that, me);\n        }\n        return every((a) => elemE(a, that))(me);\n    };\n}\nexport function elem(E) {\n    return (a, set) => {\n        if (set === undefined) {\n            const elemE = elem(E);\n            return (set) => elemE(a, set);\n        }\n        const values = set.values();\n        let e;\n        let found = false;\n        while (!found && !(e = values.next()).done) {\n            found = E.equals(a, e.value);\n        }\n        return found;\n    };\n}\n/**\n * Get a sorted `ReadonlyArray` of the values contained in a `ReadonlySet`.\n *\n * @category conversions\n * @since 2.5.0\n */\nexport const toReadonlyArray = (O) => (set) => {\n    const out = [];\n    set.forEach((e) => out.push(e));\n    return out.sort(O.compare);\n};\n/**\n * @category type lambdas\n * @since 2.11.0\n */\nexport const URI = 'ReadonlySet';\n/**\n * @category instances\n * @since 2.5.0\n */\nexport function getShow(S) {\n    return {\n        show: (s) => {\n            const entries = [];\n            s.forEach((a) => {\n                entries.push(S.show(a));\n            });\n            return `new Set([${entries.sort().join(', ')}])`;\n        }\n    };\n}\n/**\n * @category instances\n * @since 2.5.0\n */\nexport function getEq(E) {\n    const subsetE = isSubset(E);\n    return fromEquals((x, y) => subsetE(x, y) && subsetE(y, x));\n}\n/**\n * @category instances\n * @since 2.11.0\n */\nexport const getUnionSemigroup = (E) => ({\n    concat: union(E)\n});\n/**\n * @category instances\n * @since 2.5.0\n */\nexport const getUnionMonoid = (E) => ({\n    concat: getUnionSemigroup(E).concat,\n    empty\n});\n/**\n * @category instances\n * @since 2.5.0\n */\nexport const getIntersectionSemigroup = (E) => ({\n    concat: intersection(E)\n});\n/**\n * @category instances\n * @since 2.11.0\n */\nexport const getDifferenceMagma = (E) => ({\n    concat: difference(E)\n});\n// -------------------------------------------------------------------------------------\n// deprecated\n// -------------------------------------------------------------------------------------\n/**\n * Use [`fromReadonlyArray`](#fromreadonlyarray) instead.\n *\n * @category zone of death\n * @since 2.5.0\n * @deprecated\n */\nexport const fromArray = fromReadonlyArray;\n","import { isNonEmpty } from './ReadonlyNonEmptyArray.js';\n// -------------------------------------------------------------------------------------\n// instances\n// -------------------------------------------------------------------------------------\n/**\n * @example\n * import * as S from 'fp-ts/string'\n *\n * assert.deepStrictEqual(S.Eq.equals('a', 'a'), true)\n * assert.deepStrictEqual(S.Eq.equals('a', 'b'), false)\n *\n * @category instances\n * @since 2.10.0\n */\nexport const Eq = {\n    equals: (first, second) => first === second\n};\n/**\n * `string` semigroup under concatenation.\n *\n * @example\n * import * as S from 'fp-ts/string'\n *\n * assert.deepStrictEqual(S.Semigroup.concat('a', 'b'), 'ab')\n *\n * @category instances\n * @since 2.10.0\n */\nexport const Semigroup = {\n    concat: (first, second) => first + second\n};\n/**\n * An empty `string`.\n *\n * @since 2.10.0\n */\nexport const empty = '';\n/**\n * `string` monoid under concatenation.\n *\n * The `empty` value is `''`.\n *\n * @example\n * import * as S from 'fp-ts/string'\n *\n * assert.deepStrictEqual(S.Monoid.concat('a', 'b'), 'ab')\n * assert.deepStrictEqual(S.Monoid.concat('a', S.Monoid.empty), 'a')\n *\n * @category instances\n * @since 2.10.0\n */\nexport const Monoid = {\n    concat: Semigroup.concat,\n    empty\n};\n/**\n * @example\n * import * as S from 'fp-ts/string'\n *\n * assert.deepStrictEqual(S.Ord.compare('a', 'a'), 0)\n * assert.deepStrictEqual(S.Ord.compare('a', 'b'), -1)\n * assert.deepStrictEqual(S.Ord.compare('b', 'a'), 1)\n *\n * @category instances\n * @since 2.10.0\n */\nexport const Ord = {\n    equals: Eq.equals,\n    compare: (first, second) => (first < second ? -1 : first > second ? 1 : 0)\n};\n/**\n * @example\n * import * as S from 'fp-ts/string'\n *\n * assert.deepStrictEqual(S.Show.show('a'), '\"a\"')\n *\n * @category instances\n * @since 2.10.0\n */\nexport const Show = {\n    show: (s) => JSON.stringify(s)\n};\n// -------------------------------------------------------------------------------------\n// refinements\n// -------------------------------------------------------------------------------------\n/**\n * @example\n * import * as S from 'fp-ts/string'\n *\n * assert.deepStrictEqual(S.isString('a'), true)\n * assert.deepStrictEqual(S.isString(1), false)\n *\n * @category refinements\n * @since 2.11.0\n */\nexport const isString = (u) => typeof u === 'string';\n// -------------------------------------------------------------------------------------\n// combinators\n// -------------------------------------------------------------------------------------\n/**\n * @example\n * import * as S from 'fp-ts/string'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(pipe('a', S.toUpperCase), 'A')\n *\n * @since 2.11.0\n */\nexport const toUpperCase = (s) => s.toUpperCase();\n/**\n * @example\n * import * as S from 'fp-ts/string'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(pipe('A', S.toLowerCase), 'a')\n *\n * @since 2.11.0\n */\nexport const toLowerCase = (s) => s.toLowerCase();\n/**\n * @example\n * import * as S from 'fp-ts/string'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(pipe('abc', S.replace('b', 'd')), 'adc')\n *\n * @since 2.11.0\n */\nexport const replace = (searchValue, replaceValue) => (s) => s.replace(searchValue, replaceValue);\n/**\n * @example\n * import * as S from 'fp-ts/string'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(pipe(' a ', S.trim), 'a')\n *\n * @since 2.11.0\n */\nexport const trim = (s) => s.trim();\n/**\n * @example\n * import * as S from 'fp-ts/string'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(pipe(' a ', S.trimLeft), 'a ')\n *\n * @since 2.11.0\n */\nexport const trimLeft = (s) => s.trimLeft();\n/**\n * @example\n * import * as S from 'fp-ts/string'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(pipe(' a ', S.trimRight), ' a')\n *\n * @since 2.11.0\n */\nexport const trimRight = (s) => s.trimRight();\n/**\n * @example\n * import * as S from 'fp-ts/string'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(pipe('abcd', S.slice(1, 3)), 'bc')\n *\n * @since 2.11.0\n */\nexport const slice = (start, end) => (s) => s.slice(start, end);\n// -------------------------------------------------------------------------------------\n// utils\n// -------------------------------------------------------------------------------------\n/**\n * Test whether a `string` is empty.\n *\n * @example\n * import * as S from 'fp-ts/string'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(pipe('', S.isEmpty), true)\n * assert.deepStrictEqual(pipe('a', S.isEmpty), false)\n *\n * @since 2.10.0\n */\nexport const isEmpty = (s) => s.length === 0;\n/**\n * Calculate the number of characters in a `string`.\n *\n * @example\n * import * as S from 'fp-ts/string'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(pipe('abc', S.size), 3)\n *\n * @since 2.10.0\n */\nexport const size = (s) => s.length;\n/**\n * @example\n * import * as S from 'fp-ts/string'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(pipe('abc', S.split('')), ['a', 'b', 'c'])\n * assert.deepStrictEqual(pipe('', S.split('')), [''])\n *\n * @since 2.11.0\n */\nexport const split = (separator) => (s) => {\n    const out = s.split(separator);\n    return isNonEmpty(out) ? out : [s];\n};\n/**\n * @example\n * import * as S from 'fp-ts/string'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(pipe('abc', S.includes('b')), true)\n * assert.deepStrictEqual(pipe('abc', S.includes('d')), false)\n *\n * @since 2.11.0\n */\nexport const includes = (searchString, position) => (s) => s.includes(searchString, position);\n/**\n * @example\n * import * as S from 'fp-ts/string'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(pipe('abc', S.startsWith('a')), true)\n * assert.deepStrictEqual(pipe('bc', S.startsWith('a')), false)\n *\n * @since 2.11.0\n */\nexport const startsWith = (searchString, position) => (s) => s.startsWith(searchString, position);\n/**\n * @example\n * import * as S from 'fp-ts/string'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(pipe('abc', S.endsWith('c')), true)\n * assert.deepStrictEqual(pipe('ab', S.endsWith('c')), false)\n *\n * @since 2.11.0\n */\nexport const endsWith = (searchString, position) => (s) => s.endsWith(searchString, position);\n","import { fromEquals } from './Eq.js';\nimport { flow, identity, pipe, SK } from './function.js';\nimport { flap as flap_ } from './Functor.js';\nimport * as _ from './internal.js';\nimport { separated } from './Separated.js';\nimport * as S from './string.js';\nimport { wiltDefault, witherDefault } from './Witherable.js';\n/**\n * Builds a `ReadonlyRecord` by copying a `Record`.\n *\n * @example\n * import { ReadonlyRecord, fromRecord } from \"fp-ts/ReadonlyRecord\"\n *\n * const x: Record<string, number> = { a: 1, b: 2 };\n * const y: ReadonlyRecord<string, number> = fromRecord(x);\n * assert.deepStrictEqual(x,y);\n * // `y.a = 5` gives compiler error\n *\n * @category conversions\n * @since 2.5.0\n */\nexport const fromRecord = (r) => Object.assign({}, r);\n/**\n * Builds a mutable `Record` from a `ReadonlyRecord`.\n *\n * @example\n * import { ReadonlyRecord, toRecord } from \"fp-ts/ReadonlyRecord\"\n *\n * const x: ReadonlyRecord<string, number> = { a: 1, b: 2 };\n * const y: Record<string, number> = toRecord(x);\n * assert.deepStrictEqual(x,y);\n * y.a = 5; // it's ok, y is mutable\n *\n * @category conversions\n * @since 2.5.0\n */\nexport const toRecord = (r) => Object.assign({}, r);\n/**\n * Calculate the number of key/value pairs in a `ReadonlyRecord`,\n *\n * @example\n * import { size } from \"fp-ts/ReadonlyRecord\";\n *\n * assert.deepStrictEqual(size({ a: true, b: 2, c: \"three\" }), 3);\n *\n * @since 2.5.0\n */\nexport const size = (r) => Object.keys(r).length;\n/**\n * Test whether a `ReadonlyRecord` is empty.\n *\n * @example\n * import { isEmpty } from \"fp-ts/ReadonlyRecord\"\n *\n * assert.deepStrictEqual(isEmpty({}), true);\n * assert.deepStrictEqual(isEmpty({ a: 3 }), false);\n * @since 2.5.0\n */\nexport const isEmpty = (r) => {\n    for (const k in r) {\n        if (_.has.call(r, k)) {\n            return false;\n        }\n    }\n    return true;\n};\nconst keys_ = (O) => (r) => Object.keys(r).sort(O.compare);\n/**\n * @since 2.5.0\n */\nexport const keys = /*#__PURE__*/ keys_(S.Ord);\nexport function collect(O) {\n    if (typeof O === 'function') {\n        return collect(S.Ord)(O);\n    }\n    const keysO = keys_(O);\n    return (f) => (r) => {\n        const out = [];\n        for (const key of keysO(r)) {\n            out.push(f(key, r[key]));\n        }\n        return out;\n    };\n}\n/**\n * Get a sorted `ReadonlyArray` of the key/value pairs contained in a `ReadonlyRecord`.\n *\n * @example\n * import { toReadonlyArray } from 'fp-ts/ReadonlyRecord'\n *\n * const x = { c: 3, a: \"foo\", b: false };\n * assert.deepStrictEqual(toReadonlyArray(x), [\n *   [\"a\", \"foo\"],\n *   [\"b\", false],\n *   [\"c\", 3],\n * ]);\n *\n * @category conversions\n * @since 2.5.0\n */\nexport const toReadonlyArray = \n/*#__PURE__*/ collect(S.Ord)((k, a) => [k, a]);\nexport function toUnfoldable(U) {\n    return (r) => {\n        const sas = toReadonlyArray(r);\n        const len = sas.length;\n        return U.unfold(0, (b) => (b < len ? _.some([sas[b], b + 1]) : _.none));\n    };\n}\n/**\n * Insert or replace a key/value pair in a `ReadonlyRecord`.\n *\n * @example\n * import { upsertAt } from 'fp-ts/ReadonlyRecord'\n *\n * assert.deepStrictEqual(upsertAt(\"a\", 5)({ a: 1, b: 2 }), { a: 5, b: 2 });\n * assert.deepStrictEqual(upsertAt(\"c\", 5)({ a: 1, b: 2 }), { a: 1, b: 2, c: 5 });\n *\n * @since 2.10.0\n */\nexport const upsertAt = (k, a) => (r) => {\n    if (_.has.call(r, k) && r[k] === a) {\n        return r;\n    }\n    const out = Object.assign({}, r);\n    out[k] = a;\n    return out;\n};\n/**\n * Test whether or not a key exists in a `ReadonlyRecord`.\n *\n * Note. This function is not pipeable because is a `Refinement`.\n *\n * @example\n * import { has } from 'fp-ts/ReadonlyRecord'\n *\n * assert.deepStrictEqual(has(\"a\", { a: 1, b: 2 }), true);\n * assert.deepStrictEqual(has(\"c\", { a: 1, b: 2 }), false);\n *\n * @since 2.10.0\n */\nexport const has = (k, r) => _.has.call(r, k);\nexport function deleteAt(k) {\n    return (r) => {\n        if (!_.has.call(r, k)) {\n            return r;\n        }\n        const out = Object.assign({}, r);\n        delete out[k];\n        return out;\n    };\n}\n/**\n * Replace a key/value pair in a `ReadonlyRecord`.\n *\n * @returns If the specified key exists it returns an `Option` containing a new `Record`\n * with the entry updated, otherwise it returns `None`\n *\n * @example\n * import { updateAt } from 'fp-ts/ReadonlyRecord'\n * import { option } from 'fp-ts'\n *\n * assert.deepStrictEqual(updateAt(\"a\", 3)({ a: 1, b: 2 }), option.some({ a: 3, b: 2 }));\n * assert.deepStrictEqual(updateAt(\"c\", 3)({ a: 1, b: 2 }), option.none);\n *\n * @since 2.5.0\n */\nexport const updateAt = (k, a) => (r) => {\n    if (!has(k, r)) {\n        return _.none;\n    }\n    if (r[k] === a) {\n        return _.some(r);\n    }\n    const out = Object.assign({}, r);\n    out[k] = a;\n    return _.some(out);\n};\n/**\n * Applies a mapping function to one specific key/value pair in a `ReadonlyRecord`.\n *\n * @returns If the specified key exists it returns an `Option` containing a new `Record`\n * with the entry updated, otherwise it returns `None`\n *\n * @example\n * import { modifyAt } from 'fp-ts/ReadonlyRecord'\n * import { option } from 'fp-ts'\n *\n * assert.deepStrictEqual(modifyAt(\"a\", (x: number) => x * 3)({ a: 1, b: 2 }), option.some({ a: 3, b: 2 }));\n * assert.deepStrictEqual(modifyAt(\"c\", (x: number) => x * 3)({ a: 1, b: 2 }), option.none);\n *\n * @since 2.5.0\n */\nexport const modifyAt = (k, f) => (r) => {\n    if (!has(k, r)) {\n        return _.none;\n    }\n    const next = f(r[k]);\n    if (next === r[k]) {\n        return _.some(r);\n    }\n    const out = Object.assign({}, r);\n    out[k] = next;\n    return _.some(out);\n};\nexport function pop(k) {\n    const deleteAtk = deleteAt(k);\n    return (r) => {\n        const oa = lookup(k, r);\n        return _.isNone(oa) ? _.none : _.some([oa.value, deleteAtk(r)]);\n    };\n}\nexport function isSubrecord(E) {\n    return (me, that) => {\n        if (that === undefined) {\n            const isSubrecordE = isSubrecord(E);\n            return (that) => isSubrecordE(that, me);\n        }\n        for (const k in me) {\n            if (!_.has.call(that, k) || !E.equals(me[k], that[k])) {\n                return false;\n            }\n        }\n        return true;\n    };\n}\nexport function lookup(k, r) {\n    if (r === undefined) {\n        return (r) => lookup(k, r);\n    }\n    return _.has.call(r, k) ? _.some(r[k]) : _.none;\n}\n/**\n * @since 2.5.0\n */\nexport const empty = {};\nexport function mapWithIndex(f) {\n    return (r) => {\n        const out = {};\n        for (const k in r) {\n            if (_.has.call(r, k)) {\n                out[k] = f(k, r[k]);\n            }\n        }\n        return out;\n    };\n}\nexport function map(f) {\n    return mapWithIndex((_, a) => f(a));\n}\nexport function reduceWithIndex(...args) {\n    if (args.length === 2) {\n        return reduceWithIndex(S.Ord)(...args);\n    }\n    const keysO = keys_(args[0]);\n    return (b, f) => (fa) => {\n        let out = b;\n        const ks = keysO(fa);\n        const len = ks.length;\n        for (let i = 0; i < len; i++) {\n            const k = ks[i];\n            out = f(k, out, fa[k]);\n        }\n        return out;\n    };\n}\nexport function foldMapWithIndex(O) {\n    if ('compare' in O) {\n        const keysO = keys_(O);\n        return (M) => (f) => (fa) => {\n            let out = M.empty;\n            const ks = keysO(fa);\n            const len = ks.length;\n            for (let i = 0; i < len; i++) {\n                const k = ks[i];\n                out = M.concat(out, f(k, fa[k]));\n            }\n            return out;\n        };\n    }\n    return foldMapWithIndex(S.Ord)(O);\n}\nexport function reduceRightWithIndex(...args) {\n    if (args.length === 2) {\n        return reduceRightWithIndex(S.Ord)(...args);\n    }\n    const keysO = keys_(args[0]);\n    return (b, f) => (fa) => {\n        let out = b;\n        const ks = keysO(fa);\n        const len = ks.length;\n        for (let i = len - 1; i >= 0; i--) {\n            const k = ks[i];\n            out = f(k, fa[k], out);\n        }\n        return out;\n    };\n}\n/**\n * Create a `ReadonlyRecord` with one key/value pair.\n *\n * @example\n * import { singleton } from \"fp-ts/ReadonlyRecord\";\n *\n * assert.deepStrictEqual(singleton(\"a\", 1), { a: 1 });\n *\n * @category constructors\n * @since 2.5.0\n */\nexport const singleton = (k, a) => ({ [k]: a });\nexport function traverseWithIndex(F) {\n    const traverseWithIndexOF = _traverseWithIndex(S.Ord)(F);\n    return (f) => (ta) => traverseWithIndexOF(ta, f);\n}\nexport function traverse(F) {\n    const traverseOF = _traverse(S.Ord)(F);\n    return (f) => (ta) => traverseOF(ta, f);\n}\nexport function sequence(F) {\n    return _sequence(S.Ord)(F);\n}\n/**\n * @category filtering\n * @since 2.6.5\n */\nexport const wither = (F) => {\n    const traverseF = traverse(F);\n    return (f) => (fa) => F.map(pipe(fa, traverseF(f)), compact);\n};\n/**\n * @category filtering\n * @since 2.6.5\n */\nexport const wilt = (F) => {\n    const traverseF = traverse(F);\n    return (f) => (fa) => F.map(pipe(fa, traverseF(f)), separate);\n};\nexport function partitionMapWithIndex(f) {\n    return (r) => {\n        const left = {};\n        const right = {};\n        for (const k in r) {\n            if (_.has.call(r, k)) {\n                const e = f(k, r[k]);\n                switch (e._tag) {\n                    case 'Left':\n                        left[k] = e.left;\n                        break;\n                    case 'Right':\n                        right[k] = e.right;\n                        break;\n                }\n            }\n        }\n        return separated(left, right);\n    };\n}\nexport function partitionWithIndex(predicateWithIndex) {\n    return (r) => {\n        const left = {};\n        const right = {};\n        for (const k in r) {\n            if (_.has.call(r, k)) {\n                const a = r[k];\n                if (predicateWithIndex(k, a)) {\n                    right[k] = a;\n                }\n                else {\n                    left[k] = a;\n                }\n            }\n        }\n        return separated(left, right);\n    };\n}\nexport function filterMapWithIndex(f) {\n    return (r) => {\n        const out = {};\n        for (const k in r) {\n            if (_.has.call(r, k)) {\n                const ob = f(k, r[k]);\n                if (_.isSome(ob)) {\n                    out[k] = ob.value;\n                }\n            }\n        }\n        return out;\n    };\n}\nexport function filterWithIndex(predicateWithIndex) {\n    return (fa) => {\n        const out = {};\n        let changed = false;\n        for (const key in fa) {\n            if (_.has.call(fa, key)) {\n                const a = fa[key];\n                if (predicateWithIndex(key, a)) {\n                    out[key] = a;\n                }\n                else {\n                    changed = true;\n                }\n            }\n        }\n        return changed ? out : fa;\n    };\n}\nexport function fromFoldable(M, F) {\n    const fromFoldableMapM = fromFoldableMap(M, F);\n    return (fka) => fromFoldableMapM(fka, identity);\n}\nexport function fromFoldableMap(M, F) {\n    return (ta, f) => {\n        return F.reduce(ta, {}, (r, a) => {\n            const [k, b] = f(a);\n            r[k] = _.has.call(r, k) ? M.concat(r[k], b) : b;\n            return r;\n        });\n    };\n}\n/**\n * Alias of [`toReadonlyArray`](#toreadonlyarray).\n *\n * @example\n * import { toEntries } from 'fp-ts/ReadonlyRecord'\n *\n * assert.deepStrictEqual(toEntries({ b: 2, a: 1 }), [['a', 1], ['b', 2]])\n *\n * @category conversions\n * @since 2.12.0\n */\nexport const toEntries = toReadonlyArray;\n/**\n * Converts a `ReadonlyArray` of `[key, value]` tuples into a `ReadonlyRecord`.\n *\n * @example\n * import { fromEntries } from 'fp-ts/ReadonlyRecord'\n *\n * assert.deepStrictEqual(fromEntries([['a', 1], ['b', 2], ['a', 3]]), { b: 2, a: 3 })\n *\n * @since 2.12.0\n * @category conversions\n */\nexport const fromEntries = (fa) => {\n    const out = {};\n    for (const a of fa) {\n        out[a[0]] = a[1];\n    }\n    return out;\n};\nexport function every(predicate) {\n    return (r) => {\n        for (const k in r) {\n            if (!predicate(r[k])) {\n                return false;\n            }\n        }\n        return true;\n    };\n}\n/**\n * Test if at least one value in a `ReadonlyRecord` satisfies the predicate.\n *\n * @example\n * import { some } from \"fp-ts/ReadonlyRecord\"\n *\n * assert.deepStrictEqual(some((n: number) => n >= 0)({ a: 1, b: -2 }), true);\n * assert.deepStrictEqual(some((n: number) => n >= 0)({ a: -1, b: -2 }), false);\n *\n * @since 2.5.0\n */\nexport function some(predicate) {\n    return (r) => {\n        for (const k in r) {\n            if (predicate(r[k])) {\n                return true;\n            }\n        }\n        return false;\n    };\n}\nexport function elem(E) {\n    return (a, fa) => {\n        if (fa === undefined) {\n            const elemE = elem(E);\n            return (fa) => elemE(a, fa);\n        }\n        for (const k in fa) {\n            if (E.equals(fa[k], a)) {\n                return true;\n            }\n        }\n        return false;\n    };\n}\n/**\n * Union of two `ReadonlyRecord`s.\n * Takes two `ReadonlyRecord`s and produces a `ReadonlyRecord` combining all the\n * entries of the two inputs.\n * It uses the `concat` function of the provided `Magma` to\n * combine the elements with the same key.\n *\n * @example\n * import { union } from \"fp-ts/ReadonlyRecord\";\n * import { Magma } from \"fp-ts/Magma\";\n *\n * const m1: Magma<number> = { concat: (x: number, y: number) => x + y };\n * assert.deepStrictEqual(union(m1)({ a: 3, c: 3 })({ a: 1, b: 2 }), { a: 4, b: 2, c: 3 });\n * const m2: Magma<number> = { concat: (x: number) => x };\n * assert.deepStrictEqual(union(m2)({ a: 3, c: 3 })({ a: 1, b: 2 }), { a: 1, b: 2, c: 3 });\n *\n * @since 2.11.0\n */\nexport const union = (M) => (second) => (first) => {\n    if (isEmpty(first)) {\n        return second;\n    }\n    if (isEmpty(second)) {\n        return first;\n    }\n    const out = {};\n    for (const k in first) {\n        if (has(k, second)) {\n            out[k] = M.concat(first[k], second[k]);\n        }\n        else {\n            out[k] = first[k];\n        }\n    }\n    for (const k in second) {\n        if (!has(k, out)) {\n            out[k] = second[k];\n        }\n    }\n    return out;\n};\n/**\n * Intersection of two `ReadonlyRecord`s.\n * Takes two `ReadonlyRecord`s and produces a `ReadonlyRecord` combining only the\n * entries of the two inputswith the same key.\n * It uses the `concat` function of the provided `Magma` to\n * combine the elements.\n *\n * @example\n * import { intersection } from \"fp-ts/ReadonlyRecord\";\n * import { Magma } from \"fp-ts/Magma\";\n *\n * const m1: Magma<number> = { concat: (x: number, y: number) => x + y };\n * assert.deepStrictEqual(intersection(m1)({ a: 3, c: 3 })({ a: 1, b: 2 }), { a: 4});\n * const m2: Magma<number> = { concat: (x: number) => x };\n * assert.deepStrictEqual(intersection(m2)({ a: 3, c: 3 })({ a: 1, b: 2 }), { a: 1});\n *\n * @since 2.11.0\n */\nexport const intersection = (M) => (second) => (first) => {\n    if (isEmpty(first) || isEmpty(second)) {\n        return empty;\n    }\n    const out = {};\n    for (const k in first) {\n        if (has(k, second)) {\n            out[k] = M.concat(first[k], second[k]);\n        }\n    }\n    return out;\n};\n/**\n * Difference between two `ReadonlyRecord`s.\n * Takes two `ReadonlyRecord`s and produces a `ReadonlyRecord` composed by the\n * entries of the two inputs, removing the entries with the same\n * key in both inputs.\n *\n * @example\n * import { difference } from \"fp-ts/ReadonlyRecord\";\n *\n * assert.deepStrictEqual(difference({ a: 1 })({ a: 1, b: 2 }), { b: 2 });\n * assert.deepStrictEqual(difference({ a: 3 })({ a: 1, b: 2 }), { b: 2 });\n * assert.deepStrictEqual(difference({ a: 3, c: 3 })({ a: 1, b: 2 }), { b: 2, c: 3 });\n *\n * @since 2.11.0\n */\nexport const difference = (second) => (first) => {\n    if (isEmpty(first)) {\n        return second;\n    }\n    if (isEmpty(second)) {\n        return first;\n    }\n    const out = {};\n    for (const k in first) {\n        if (!has(k, second)) {\n            out[k] = first[k];\n        }\n    }\n    for (const k in second) {\n        if (!has(k, first)) {\n            out[k] = second[k];\n        }\n    }\n    return out;\n};\n/** @internal */\nexport const _map = (fa, f) => pipe(fa, map(f));\n/** @internal */\n/* istanbul ignore next */\nexport const _mapWithIndex = (fa, f) => pipe(fa, mapWithIndex(f));\n/** @internal */\n/* istanbul ignore next */\nexport const _reduce = (O) => {\n    const reduceO = reduce(O);\n    return (fa, b, f) => pipe(fa, reduceO(b, f));\n};\n/** @internal */\nexport const _foldMap = (O) => (M) => {\n    const foldMapM = foldMap(O)(M);\n    return (fa, f) => pipe(fa, foldMapM(f));\n};\n/** @internal */\n/* istanbul ignore next */\nexport const _reduceRight = (O) => {\n    const reduceRightO = reduceRight(O);\n    return (fa, b, f) => pipe(fa, reduceRightO(b, f));\n};\n/** @internal */\n/* istanbul ignore next */\nexport const _filter = (fa, predicate) => pipe(fa, filter(predicate));\n/** @internal */\n/* istanbul ignore next */\nexport const _filterMap = (fa, f) => pipe(fa, filterMap(f));\n/** @internal */\n/* istanbul ignore next */\nexport const _partition = (fa, predicate) => pipe(fa, partition(predicate));\n/** @internal */\n/* istanbul ignore next */\nexport const _partitionMap = (fa, f) => pipe(fa, partitionMap(f));\n/** @internal */\n/* istanbul ignore next */\nexport const _reduceWithIndex = (O) => {\n    const reduceWithIndexO = reduceWithIndex(O);\n    return (fa, b, f) => pipe(fa, reduceWithIndexO(b, f));\n};\n/** @internal */\nexport const _foldMapWithIndex = (O) => {\n    const foldMapWithIndexO = foldMapWithIndex(O);\n    return (M) => {\n        const foldMapWithIndexM = foldMapWithIndexO(M);\n        return (fa, f) => pipe(fa, foldMapWithIndexM(f));\n    };\n};\n/** @internal */\n/* istanbul ignore next */\nexport const _reduceRightWithIndex = (O) => {\n    const reduceRightWithIndexO = reduceRightWithIndex(O);\n    return (fa, b, f) => pipe(fa, reduceRightWithIndexO(b, f));\n};\n/** @internal */\n/* istanbul ignore next */\nexport const _partitionMapWithIndex = (fa, f) => pipe(fa, partitionMapWithIndex(f));\n/** @internal */\n/* istanbul ignore next */\nexport const _partitionWithIndex = (fa, predicateWithIndex) => pipe(fa, partitionWithIndex(predicateWithIndex));\n/** @internal */\n/* istanbul ignore next */\nexport const _filterMapWithIndex = (fa, f) => pipe(fa, filterMapWithIndex(f));\n/** @internal */\n/* istanbul ignore next */\nexport const _filterWithIndex = (fa, predicateWithIndex) => pipe(fa, filterWithIndex(predicateWithIndex));\n/** @internal */\nexport const _traverse = (O) => {\n    const traverseWithIndexO = _traverseWithIndex(O);\n    return (F) => {\n        const traverseWithIndexOF = traverseWithIndexO(F);\n        return (ta, f) => traverseWithIndexOF(ta, flow(SK, f));\n    };\n};\n/** @internal */\nexport const _sequence = (O) => {\n    const traverseO = _traverse(O);\n    return (F) => {\n        const traverseOF = traverseO(F);\n        return (ta) => traverseOF(ta, identity);\n    };\n};\nconst _traverseWithIndex = (O) => (F) => {\n    const keysO = keys_(O);\n    return (ta, f) => {\n        const ks = keysO(ta);\n        if (ks.length === 0) {\n            return F.of(empty);\n        }\n        let fr = F.of({});\n        for (const key of ks) {\n            fr = F.ap(F.map(fr, (r) => (b) => Object.assign({}, r, { [key]: b })), f(key, ta[key]));\n        }\n        return fr;\n    };\n};\n/**\n * Given a `Predicate`, it produces a new `ReadonlyRecord` keeping only the entries with a\n * value that satisfies the provided predicate.\n *\n * @example\n * import { filter } from \"fp-ts/ReadonlyRecord\"\n *\n * assert.deepStrictEqual(filter((s: string) => s.length < 4)({ a: \"foo\", b: \"bar\", c: \"verylong\" }), {\n *   a: \"foo\",\n *   b: \"bar\",\n * });\n *\n * @category filtering\n * @since 2.5.0\n */\nexport const filter = (predicate) => filterWithIndex((_, a) => predicate(a));\n/**\n * Maps a `ReadonlyRecord` with an iterating function that returns an `Option`\n * and it keeps only the `Some` values discarding the `None`s.\n *\n * @example\n * import { filterMap } from \"fp-ts/ReadonlyRecord\"\n * import { option } from \"fp-ts\"\n *\n * const f = (s: string) => s.length < 4 ? option.some(`${s} is short`): option.none\n * assert.deepStrictEqual(filterMap(f)({ a: \"foo\", b: \"bar\", c: \"verylong\" }), {\n *   a: \"foo is short\",\n *   b: \"bar is short\",\n * });\n *\n * @category filtering\n * @since 2.5.0\n */\nexport const filterMap = (f) => filterMapWithIndex((_, a) => f(a));\n/**\n * Partition a `ReadonlyRecord` into two parts according to a `Predicate`.\n *\n * @example\n * import { partition } from \"fp-ts/ReadonlyRecord\"\n *\n * assert.deepStrictEqual(partition((s: string) => s.length < 4)({ a: \"foo\", b: \"bar\", c: \"verylong\" }), {\n *   left:{\n *     c: \"verylong\"\n *   },\n *   right: {\n *     a: \"foo\",\n *     b: \"bar\",\n *   },\n * });\n *\n * @category filtering\n * @since 2.5.0\n */\nexport const partition = (predicate) => partitionWithIndex((_, a) => predicate(a));\n/**\n * Maps a `ReadonlyRecord` with a function returning an `Either` and\n * partitions the resulting `ReadonlyRecord` into `Left`s and `Right`s.\n *\n * @example\n * import { partitionMap } from \"fp-ts/ReadonlyRecord\"\n * import { either } from \"fp-ts\"\n *\n * const f = (s: string) => (s.length < 4 ? either.right(`${s} is short`) : either.left(`${s} is not short`));\n * assert.deepStrictEqual(partitionMap(f)({ a: \"foo\", b: \"bar\", c: \"verylong\" }), {\n *   left: {\n *     c: \"verylong is not short\",\n *   },\n *   right: {\n *     a: \"foo is short\",\n *     b: \"bar is short\",\n *   },\n * });\n *\n * @category filtering\n * @since 2.5.0\n */\nexport const partitionMap = (f) => partitionMapWithIndex((_, a) => f(a));\nexport function reduce(...args) {\n    if (args.length === 1) {\n        const reduceWithIndexO = reduceWithIndex(args[0]);\n        return (b, f) => reduceWithIndexO(b, (_, b, a) => f(b, a));\n    }\n    return reduce(S.Ord)(...args);\n}\nexport function foldMap(O) {\n    if ('compare' in O) {\n        const foldMapWithIndexO = foldMapWithIndex(O);\n        return (M) => {\n            const foldMapWithIndexM = foldMapWithIndexO(M);\n            return (f) => foldMapWithIndexM((_, a) => f(a));\n        };\n    }\n    return foldMap(S.Ord)(O);\n}\nexport function reduceRight(...args) {\n    if (args.length === 1) {\n        const reduceRightWithIndexO = reduceRightWithIndex(args[0]);\n        return (b, f) => reduceRightWithIndexO(b, (_, b, a) => f(b, a));\n    }\n    return reduceRight(S.Ord)(...args);\n}\n/**\n * Compact a `ReadonlyRecord` of `Option`s discarding the `None` values and\n * keeping the `Some` values.\n *\n * @example\n * import { compact } from 'fp-ts/ReadonlyRecord'\n * import { option } from 'fp-ts'\n *\n * assert.deepStrictEqual(compact({ a: option.some(\"foo\"), b: option.none, c: option.some(\"bar\") }), {\n *   a: \"foo\",\n *   c: \"bar\",\n * });\n *\n * @category filtering\n * @since 2.5.0\n */\nexport const compact = (r) => {\n    const out = {};\n    for (const k in r) {\n        if (_.has.call(r, k)) {\n            const oa = r[k];\n            if (_.isSome(oa)) {\n                out[k] = oa.value;\n            }\n        }\n    }\n    return out;\n};\n/**\n * Separate a `ReadonlyRecord` of `Either`s into `Left`s and `Right`s.\n *\n * @example\n * import { separate } from 'fp-ts/ReadonlyRecord'\n * import { either } from 'fp-ts'\n *\n * assert.deepStrictEqual(\n *   separate({ a: either.right(\"foo\"), b: either.left(\"bar\"), c: either.right(\"baz\") }),\n *   {\n *     right: {\n *       a: \"foo\",\n *       c: \"baz\",\n *     },\n *     left: {\n *       b: \"bar\",\n *     },\n *   }\n * );\n *\n * @category filtering\n * @since 2.5.0\n */\nexport const separate = (r) => {\n    const left = {};\n    const right = {};\n    for (const k in r) {\n        if (_.has.call(r, k)) {\n            const e = r[k];\n            if (_.isLeft(e)) {\n                left[k] = e.left;\n            }\n            else {\n                right[k] = e.right;\n            }\n        }\n    }\n    return separated(left, right);\n};\n/**\n * @category type lambdas\n * @since 2.5.0\n */\nexport const URI = 'ReadonlyRecord';\nexport function getShow(O) {\n    if ('compare' in O) {\n        return (S) => ({\n            show: (r) => {\n                const elements = collect(O)((k, a) => `${JSON.stringify(k)}: ${S.show(a)}`)(r).join(', ');\n                return elements === '' ? '{}' : `{ ${elements} }`;\n            }\n        });\n    }\n    return getShow(S.Ord)(O);\n}\nexport function getEq(E) {\n    const isSubrecordE = isSubrecord(E);\n    return fromEquals((x, y) => isSubrecordE(x)(y) && isSubrecordE(y)(x));\n}\nexport function getMonoid(S) {\n    return {\n        concat: (first, second) => {\n            if (isEmpty(first)) {\n                return second;\n            }\n            if (isEmpty(second)) {\n                return first;\n            }\n            const r = Object.assign({}, first);\n            for (const k in second) {\n                if (_.has.call(second, k)) {\n                    r[k] = _.has.call(first, k) ? S.concat(first[k], second[k]) : second[k];\n                }\n            }\n            return r;\n        },\n        empty\n    };\n}\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Functor = {\n    URI,\n    map: _map\n};\n/**\n * Takes a value and a `ReadonlyRecord` of functions and returns a\n * `ReadonlyRecord` by applying each function to the input value.\n *\n * @example\n * import { flap } from \"fp-ts/ReadonlyRecord\"\n *\n * const fab = { x: (n: number) => `${n} times 2`, y: (n: number) => `${n * 2}` };\n * assert.deepStrictEqual(flap(3)(fab), {\n *   x: \"3 times 2\",\n *   y: \"6\",\n * });\n *\n * @category mapping\n * @since 2.10.0\n */\nexport const flap = /*#__PURE__*/ flap_(Functor);\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const FunctorWithIndex = {\n    URI,\n    map: _map,\n    mapWithIndex: _mapWithIndex\n};\n/**\n * Produces a `Foldable` instance for a `ReadonlyRecord`, using the\n * provided `Ord` to sort the `ReadonlyRecord`'s entries by key.\n *\n * @category folding\n * @since 2.11.0\n */\nexport const getFoldable = (O) => ({\n    URI,\n    reduce: _reduce(O),\n    foldMap: _foldMap(O),\n    reduceRight: _reduceRight(O)\n});\n/**\n * Produces a `FoldableWithIndex1` instance for a `ReadonlyRecord`, using the\n * provided `Ord` to sort the `ReadonlyRecord`'s entries by key.\n *\n * @category folding\n * @since 2.11.0\n */\nexport const getFoldableWithIndex = (O) => ({\n    URI,\n    reduce: _reduce(O),\n    foldMap: _foldMap(O),\n    reduceRight: _reduceRight(O),\n    reduceWithIndex: _reduceWithIndex(O),\n    foldMapWithIndex: _foldMapWithIndex(O),\n    reduceRightWithIndex: _reduceRightWithIndex(O)\n});\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Compactable = {\n    URI,\n    compact,\n    separate\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Filterable = {\n    URI,\n    map: _map,\n    compact,\n    separate,\n    filter: _filter,\n    filterMap: _filterMap,\n    partition: _partition,\n    partitionMap: _partitionMap\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const FilterableWithIndex = {\n    URI,\n    map: _map,\n    mapWithIndex: _mapWithIndex,\n    compact,\n    separate,\n    filter: _filter,\n    filterMap: _filterMap,\n    partition: _partition,\n    partitionMap: _partitionMap,\n    filterMapWithIndex: _filterMapWithIndex,\n    filterWithIndex: _filterWithIndex,\n    partitionMapWithIndex: _partitionMapWithIndex,\n    partitionWithIndex: _partitionWithIndex\n};\n/**\n * Produces a `Traversable` instance for a `ReadonlyRecord`, using the\n * provided `Ord` to sort the `ReadonlyRecord`'s entries by key.\n *\n * @category traversing\n * @since 2.11.0\n */\nexport const getTraversable = (O) => ({\n    URI,\n    map: _map,\n    reduce: _reduce(O),\n    foldMap: _foldMap(O),\n    reduceRight: _reduceRight(O),\n    traverse: _traverse(O),\n    sequence: _sequence(O)\n});\n/**\n * Produces a `TraversableWithIndex` instance for a `ReadonlyRecord`, using the\n * provided `Ord` to sort the `ReadonlyRecord`'s entries by key.\n *\n * @category traversing\n * @since 2.11.0\n */\nexport const getTraversableWithIndex = (O) => ({\n    URI,\n    map: _map,\n    mapWithIndex: _mapWithIndex,\n    reduce: _reduce(O),\n    foldMap: _foldMap(O),\n    reduceRight: _reduceRight(O),\n    reduceWithIndex: _reduceWithIndex(O),\n    foldMapWithIndex: _foldMapWithIndex(O),\n    reduceRightWithIndex: _reduceRightWithIndex(O),\n    traverse: _traverse(O),\n    sequence: _sequence(O),\n    traverseWithIndex: _traverseWithIndex(O)\n});\n/**\n * @category filtering\n * @since 2.11.0\n */\nexport const getWitherable = (O) => {\n    const T = getTraversable(O);\n    return {\n        URI,\n        map: _map,\n        reduce: _reduce(O),\n        foldMap: _foldMap(O),\n        reduceRight: _reduceRight(O),\n        traverse: T.traverse,\n        sequence: T.sequence,\n        compact,\n        separate,\n        filter: _filter,\n        filterMap: _filterMap,\n        partition: _partition,\n        partitionMap: _partitionMap,\n        wither: witherDefault(T, Compactable),\n        wilt: wiltDefault(T, Compactable)\n    };\n};\n/**\n * Given a `Semigroup` in the base type, it produces a `Semigroup`\n * in the `ReadonlyRecord` of the base type.\n * The resulting `Semigroup` concatenates two `ReadonlyRecord`s by\n * `union`.\n *\n * @example\n * import { getUnionSemigroup, ReadonlyRecord } from \"fp-ts/ReadonlyRecord\"\n * import { Semigroup } from \"fp-ts/Semigroup\"\n *\n * const sNumber: Semigroup<number> = { concat: (x, y) => x - y };\n * const sReadonlyRecord: Semigroup<ReadonlyRecord<string, number>> = getUnionSemigroup(sNumber);\n * assert.deepStrictEqual(sReadonlyRecord.concat({ a: 1, b: 2 }, { b: 3, c: 4 }), { a: 1, b: -1, c: 4 });\n *\n * @category instances\n * @since 2.11.0\n */\nexport const getUnionSemigroup = (S) => {\n    const unionS = union(S);\n    return {\n        concat: (first, second) => unionS(second)(first)\n    };\n};\n/**\n * Same as `getMonoid`.\n * Returns a `Monoid` instance for `ReadonlyRecord`s given a `Semigroup`\n * instance for the base type.\n * The `Monoid` makes the union of two `ReadonlyRecord`s combining the\n * entries that have the same key with the provided `Semigroup`.\n *\n * @example\n * import { SemigroupSum } from 'fp-ts/number'\n * import { getUnionMonoid } from 'fp-ts/ReadonlyRecord'\n *\n * const M = getUnionMonoid(SemigroupSum);\n * assert.deepStrictEqual(M.concat({ foo: 123, bar: 234 }, { foo: 456, baz: 567 }), { foo: 579 , bar: 234, baz: 567 });\n *\n * @category instances\n * @since 2.11.0\n */\nexport const getUnionMonoid = (S) => ({\n    concat: getUnionSemigroup(S).concat,\n    empty\n});\n/**\n * Given a `Semigroup` in the base type, it produces a `Semigroup`\n * in the `ReadonlyRecord` of the base type.\n * The resulting `Semigroup` concatenates two `ReadonlyRecord`s by\n * `intersection`.\n *\n * @example\n * import { getIntersectionSemigroup, ReadonlyRecord } from \"fp-ts/ReadonlyRecord\"\n * import { Semigroup } from \"fp-ts/Semigroup\"\n *\n * const sNumber: Semigroup<number> = { concat: (x, y) => x - y };\n * const sReadonlyRecord: Semigroup<ReadonlyRecord<string, number>> = getIntersectionSemigroup(sNumber);\n * assert.deepStrictEqual(sReadonlyRecord.concat({ a: 1, b: 2 }, { b: 3, c: 4 }), { b: -1 });\n *\n * @category instances\n * @since 2.11.0\n */\nexport const getIntersectionSemigroup = (S) => {\n    const intersectionS = intersection(S);\n    return {\n        concat: (first, second) => intersectionS(second)(first)\n    };\n};\n/**\n * Produces a `Magma` with a `concat` function that combines\n * two `ReadonlyRecord`s by making the `difference`.\n *\n * @example\n * import { getDifferenceMagma, difference, ReadonlyRecord } from \"fp-ts/ReadonlyRecord\"\n * import { Magma } from \"fp-ts/Magma\"\n *\n * const r1 = { a: 3, c: 3 };\n * const r2 = { a: 1, b: 2 };\n * const m: Magma<ReadonlyRecord<string, number>> = getDifferenceMagma<number>();\n * assert.deepStrictEqual(m.concat(r1, r2), difference(r2)(r1));\n * assert.deepStrictEqual(m.concat(r1, r2), { c: 3, b: 2 });\n *\n * @category instances\n * @since 2.11.0\n */\nexport const getDifferenceMagma = () => ({\n    concat: (first, second) => difference(second)(first)\n});\n// -------------------------------------------------------------------------------------\n// deprecated\n// -------------------------------------------------------------------------------------\n/**\n * Use `getFoldable` instead.\n *\n * @category zone of death\n * @since 2.7.0\n * @deprecated\n */\nexport const Foldable = {\n    URI,\n    reduce: /*#__PURE__*/ _reduce(S.Ord),\n    foldMap: /*#__PURE__*/ _foldMap(S.Ord),\n    reduceRight: /*#__PURE__*/ _reduceRight(S.Ord)\n};\n/**\n * Use `getFoldableWithIndex` instead.\n *\n * @category zone of death\n * @since 2.7.0\n * @deprecated\n */\nexport const FoldableWithIndex = {\n    URI,\n    reduce: /*#__PURE__*/ _reduce(S.Ord),\n    foldMap: /*#__PURE__*/ _foldMap(S.Ord),\n    reduceRight: /*#__PURE__*/ _reduceRight(S.Ord),\n    reduceWithIndex: /*#__PURE__*/ _reduceWithIndex(S.Ord),\n    foldMapWithIndex: /*#__PURE__*/ _foldMapWithIndex(S.Ord),\n    reduceRightWithIndex: /*#__PURE__*/ _reduceRightWithIndex(S.Ord)\n};\n/**\n * Use `getTraversable` instead.\n *\n * @category zone of death\n * @since 2.7.0\n * @deprecated\n */\nexport const Traversable = {\n    URI,\n    map: _map,\n    reduce: /*#__PURE__*/ _reduce(S.Ord),\n    foldMap: /*#__PURE__*/ _foldMap(S.Ord),\n    reduceRight: /*#__PURE__*/ _reduceRight(S.Ord),\n    traverse: /*#__PURE__*/ _traverse(S.Ord),\n    sequence\n};\n/**\n * Use `getTraversableWithIndex` instead.\n *\n * @category zone of death\n * @since 2.7.0\n * @deprecated\n */\nexport const TraversableWithIndex = {\n    URI,\n    map: _map,\n    mapWithIndex: _mapWithIndex,\n    reduce: /*#__PURE__*/ _reduce(S.Ord),\n    foldMap: /*#__PURE__*/ _foldMap(S.Ord),\n    reduceRight: /*#__PURE__*/ _reduceRight(S.Ord),\n    reduceWithIndex: /*#__PURE__*/ _reduceWithIndex(S.Ord),\n    foldMapWithIndex: /*#__PURE__*/ _foldMapWithIndex(S.Ord),\n    reduceRightWithIndex: /*#__PURE__*/ _reduceRightWithIndex(S.Ord),\n    traverse: /*#__PURE__*/ _traverse(S.Ord),\n    sequence,\n    traverseWithIndex: /*#__PURE__*/ _traverseWithIndex(S.Ord)\n};\nconst _wither = /*#__PURE__*/ witherDefault(Traversable, Compactable);\nconst _wilt = /*#__PURE__*/ wiltDefault(Traversable, Compactable);\n/**\n * Use `getWitherable` instead.\n *\n * @category zone of death\n * @since 2.7.0\n * @deprecated\n */\nexport const Witherable = {\n    URI,\n    map: _map,\n    reduce: /*#__PURE__*/ _reduce(S.Ord),\n    foldMap: /*#__PURE__*/ _foldMap(S.Ord),\n    reduceRight: /*#__PURE__*/ _reduceRight(S.Ord),\n    traverse: /*#__PURE__*/ _traverse(S.Ord),\n    sequence,\n    compact,\n    separate,\n    filter: _filter,\n    filterMap: _filterMap,\n    partition: _partition,\n    partitionMap: _partitionMap,\n    wither: _wither,\n    wilt: _wilt\n};\n/**\n * Use [`upsertAt`](#upsertat) instead.\n *\n * @category zone of death\n * @since 2.5.0\n * @deprecated\n */\nexport const insertAt = upsertAt;\nexport function hasOwnProperty(k, r) {\n    return _.has.call(r === undefined ? this : r, k);\n}\n/**\n * This instance is deprecated, use small, specific instances instead.\n * For example if a function needs a `Functor` instance, pass `RR.Functor` instead of `RR.readonlyRecord`\n * (where `RR` is from `import RR from 'fp-ts/ReadonlyRecord'`)\n *\n * @category zone of death\n * @since 2.5.0\n * @deprecated\n */\nexport const readonlyRecord = {\n    URI,\n    map: _map,\n    reduce: /*#__PURE__*/ _reduce(S.Ord),\n    foldMap: /*#__PURE__*/ _foldMap(S.Ord),\n    reduceRight: /*#__PURE__*/ _reduceRight(S.Ord),\n    traverse: /*#__PURE__*/ _traverse(S.Ord),\n    sequence,\n    compact,\n    separate,\n    filter: _filter,\n    filterMap: _filterMap,\n    partition: _partition,\n    partitionMap: _partitionMap,\n    mapWithIndex: _mapWithIndex,\n    reduceWithIndex: /*#__PURE__*/ _reduceWithIndex(S.Ord),\n    foldMapWithIndex: /*#__PURE__*/ _foldMapWithIndex(S.Ord),\n    reduceRightWithIndex: /*#__PURE__*/ _reduceRightWithIndex(S.Ord),\n    filterMapWithIndex: _filterMapWithIndex,\n    filterWithIndex: _filterWithIndex,\n    partitionMapWithIndex: _partitionMapWithIndex,\n    partitionWithIndex: _partitionWithIndex,\n    traverseWithIndex: /*#__PURE__*/ _traverseWithIndex(S.Ord),\n    wither: _wither,\n    wilt: _wilt\n};\n","/**\n * @since 2.0.0\n */\nexport const tailRec = (startWith, f) => {\n    let ab = f(startWith);\n    while (ab._tag === 'Left') {\n        ab = f(ab.left);\n    }\n    return ab.right;\n};\n","import { getApplicativeMonoid } from './Applicative.js';\nimport { apFirst as apFirst_, apS as apS_, apSecond as apSecond_, getApplySemigroup as getApplySemigroup_ } from './Apply.js';\nimport * as chainable from './Chain.js';\nimport { tailRec } from './ChainRec.js';\nimport { chainOptionK as chainOptionK_, filterOrElse as filterOrElse_, fromOption as fromOption_, fromOptionK as fromOptionK_, fromPredicate as fromPredicate_ } from './FromEither.js';\nimport { dual, flow, identity, pipe } from './function.js';\nimport { as as as_, asUnit as asUnit_, bindTo as bindTo_, flap as flap_, let as let__ } from './Functor.js';\nimport * as _ from './internal.js';\nimport { separated } from './Separated.js';\nimport { wiltDefault, witherDefault } from './Witherable.js';\n// -------------------------------------------------------------------------------------\n// constructors\n// -------------------------------------------------------------------------------------\n/**\n * Constructs a new `Either` holding a `Left` value. This usually represents a failure, due to the right-bias of this\n * structure.\n *\n * @category constructors\n * @since 2.0.0\n */\nexport const left = _.left;\n/**\n * Constructs a new `Either` holding a `Right` value. This usually represents a successful value due to the right bias\n * of this structure.\n *\n * @category constructors\n * @since 2.0.0\n */\nexport const right = _.right;\n/**\n * @category sequencing\n * @since 2.14.0\n */\nexport const flatMap = /*#__PURE__*/ dual(2, (ma, f) => (isLeft(ma) ? ma : f(ma.right)));\nconst _map = (fa, f) => pipe(fa, map(f));\nconst _ap = (fab, fa) => pipe(fab, ap(fa));\n/* istanbul ignore next */\nconst _reduce = (fa, b, f) => pipe(fa, reduce(b, f));\n/* istanbul ignore next */\nconst _foldMap = (M) => (fa, f) => {\n    const foldMapM = foldMap(M);\n    return pipe(fa, foldMapM(f));\n};\n/* istanbul ignore next */\nconst _reduceRight = (fa, b, f) => pipe(fa, reduceRight(b, f));\nconst _traverse = (F) => {\n    const traverseF = traverse(F);\n    return (ta, f) => pipe(ta, traverseF(f));\n};\nconst _bimap = (fa, f, g) => pipe(fa, bimap(f, g));\nconst _mapLeft = (fa, f) => pipe(fa, mapLeft(f));\n/* istanbul ignore next */\nconst _alt = (fa, that) => pipe(fa, alt(that));\n/* istanbul ignore next */\nconst _extend = (wa, f) => pipe(wa, extend(f));\nconst _chainRec = (a, f) => tailRec(f(a), (e) => isLeft(e) ? right(left(e.left)) : isLeft(e.right) ? left(f(e.right.left)) : right(right(e.right.right)));\n/**\n * @category type lambdas\n * @since 2.0.0\n */\nexport const URI = 'Either';\n/**\n * @category instances\n * @since 2.0.0\n */\nexport const getShow = (SE, SA) => ({\n    show: (ma) => (isLeft(ma) ? `left(${SE.show(ma.left)})` : `right(${SA.show(ma.right)})`)\n});\n/**\n * @category instances\n * @since 2.0.0\n */\nexport const getEq = (EL, EA) => ({\n    equals: (x, y) => x === y || (isLeft(x) ? isLeft(y) && EL.equals(x.left, y.left) : isRight(y) && EA.equals(x.right, y.right))\n});\n/**\n * Semigroup returning the left-most non-`Left` value. If both operands are `Right`s then the inner values are\n * concatenated using the provided `Semigroup`\n *\n * @example\n * import { getSemigroup, left, right } from 'fp-ts/Either'\n * import { SemigroupSum } from 'fp-ts/number'\n *\n * const S = getSemigroup<string, number>(SemigroupSum)\n * assert.deepStrictEqual(S.concat(left('a'), left('b')), left('a'))\n * assert.deepStrictEqual(S.concat(left('a'), right(2)), right(2))\n * assert.deepStrictEqual(S.concat(right(1), left('b')), right(1))\n * assert.deepStrictEqual(S.concat(right(1), right(2)), right(3))\n *\n * @category instances\n * @since 2.0.0\n */\nexport const getSemigroup = (S) => ({\n    concat: (x, y) => (isLeft(y) ? x : isLeft(x) ? y : right(S.concat(x.right, y.right)))\n});\n/**\n * Builds a `Compactable` instance for `Either` given `Monoid` for the left side.\n *\n * @category filtering\n * @since 2.10.0\n */\nexport const getCompactable = (M) => {\n    const empty = left(M.empty);\n    return {\n        URI,\n        _E: undefined,\n        compact: (ma) => (isLeft(ma) ? ma : ma.right._tag === 'None' ? empty : right(ma.right.value)),\n        separate: (ma) => isLeft(ma)\n            ? separated(ma, ma)\n            : isLeft(ma.right)\n                ? separated(right(ma.right.left), empty)\n                : separated(empty, right(ma.right.right))\n    };\n};\n/**\n * Builds a `Filterable` instance for `Either` given `Monoid` for the left side\n *\n * @category filtering\n * @since 2.10.0\n */\nexport const getFilterable = (M) => {\n    const empty = left(M.empty);\n    const { compact, separate } = getCompactable(M);\n    const filter = (ma, predicate) => isLeft(ma) ? ma : predicate(ma.right) ? ma : empty;\n    const partition = (ma, p) => {\n        return isLeft(ma)\n            ? separated(ma, ma)\n            : p(ma.right)\n                ? separated(empty, right(ma.right))\n                : separated(right(ma.right), empty);\n    };\n    return {\n        URI,\n        _E: undefined,\n        map: _map,\n        compact,\n        separate,\n        filter,\n        filterMap: (ma, f) => {\n            if (isLeft(ma)) {\n                return ma;\n            }\n            const ob = f(ma.right);\n            return ob._tag === 'None' ? empty : right(ob.value);\n        },\n        partition,\n        partitionMap: (ma, f) => {\n            if (isLeft(ma)) {\n                return separated(ma, ma);\n            }\n            const e = f(ma.right);\n            return isLeft(e) ? separated(right(e.left), empty) : separated(empty, right(e.right));\n        }\n    };\n};\n/**\n * Builds `Witherable` instance for `Either` given `Monoid` for the left side\n *\n * @category filtering\n * @since 2.0.0\n */\nexport const getWitherable = (M) => {\n    const F_ = getFilterable(M);\n    const C = getCompactable(M);\n    return {\n        URI,\n        _E: undefined,\n        map: _map,\n        compact: F_.compact,\n        separate: F_.separate,\n        filter: F_.filter,\n        filterMap: F_.filterMap,\n        partition: F_.partition,\n        partitionMap: F_.partitionMap,\n        traverse: _traverse,\n        sequence,\n        reduce: _reduce,\n        foldMap: _foldMap,\n        reduceRight: _reduceRight,\n        wither: witherDefault(Traversable, C),\n        wilt: wiltDefault(Traversable, C)\n    };\n};\n/**\n * The default [`Applicative`](#applicative) instance returns the first error, if you want to\n * get all errors you need to provide a way to concatenate them via a `Semigroup`.\n *\n * @example\n * import * as A from 'fp-ts/Apply'\n * import * as E from 'fp-ts/Either'\n * import { pipe } from 'fp-ts/function'\n * import * as S from 'fp-ts/Semigroup'\n * import * as string from 'fp-ts/string'\n *\n * const parseString = (u: unknown): E.Either<string, string> =>\n *   typeof u === 'string' ? E.right(u) : E.left('not a string')\n *\n * const parseNumber = (u: unknown): E.Either<string, number> =>\n *   typeof u === 'number' ? E.right(u) : E.left('not a number')\n *\n * interface Person {\n *   readonly name: string\n *   readonly age: number\n * }\n *\n * const parsePerson = (\n *   input: Record<string, unknown>\n * ): E.Either<string, Person> =>\n *   pipe(\n *     E.Do,\n *     E.apS('name', parseString(input.name)),\n *     E.apS('age', parseNumber(input.age))\n *   )\n *\n * assert.deepStrictEqual(parsePerson({}), E.left('not a string')) // <= first error\n *\n * const Applicative = E.getApplicativeValidation(\n *   pipe(string.Semigroup, S.intercalate(', '))\n * )\n *\n * const apS = A.apS(Applicative)\n *\n * const parsePersonAll = (\n *   input: Record<string, unknown>\n * ): E.Either<string, Person> =>\n *   pipe(\n *     E.Do,\n *     apS('name', parseString(input.name)),\n *     apS('age', parseNumber(input.age))\n *   )\n *\n * assert.deepStrictEqual(parsePersonAll({}), E.left('not a string, not a number')) // <= all errors\n *\n * @category error handling\n * @since 2.7.0\n */\nexport const getApplicativeValidation = (SE) => ({\n    URI,\n    _E: undefined,\n    map: _map,\n    ap: (fab, fa) => isLeft(fab)\n        ? isLeft(fa)\n            ? left(SE.concat(fab.left, fa.left))\n            : fab\n        : isLeft(fa)\n            ? fa\n            : right(fab.right(fa.right)),\n    of\n});\n/**\n * The default [`Alt`](#alt) instance returns the last error, if you want to\n * get all errors you need to provide a way to concatenate them via a `Semigroup`.\n *\n * @example\n * import * as E from 'fp-ts/Either'\n * import { pipe } from 'fp-ts/function'\n * import * as S from 'fp-ts/Semigroup'\n * import * as string from 'fp-ts/string'\n *\n * const parseString = (u: unknown): E.Either<string, string> =>\n *   typeof u === 'string' ? E.right(u) : E.left('not a string')\n *\n * const parseNumber = (u: unknown): E.Either<string, number> =>\n *   typeof u === 'number' ? E.right(u) : E.left('not a number')\n *\n * const parse = (u: unknown): E.Either<string, string | number> =>\n *   pipe(\n *     parseString(u),\n *     E.alt<string, string | number>(() => parseNumber(u))\n *   )\n *\n * assert.deepStrictEqual(parse(true), E.left('not a number')) // <= last error\n *\n * const Alt = E.getAltValidation(pipe(string.Semigroup, S.intercalate(', ')))\n *\n * const parseAll = (u: unknown): E.Either<string, string | number> =>\n *   Alt.alt<string | number>(parseString(u), () => parseNumber(u))\n *\n * assert.deepStrictEqual(parseAll(true), E.left('not a string, not a number')) // <= all errors\n *\n * @category error handling\n * @since 2.7.0\n */\nexport const getAltValidation = (SE) => ({\n    URI,\n    _E: undefined,\n    map: _map,\n    alt: (me, that) => {\n        if (isRight(me)) {\n            return me;\n        }\n        const ea = that();\n        return isLeft(ea) ? left(SE.concat(me.left, ea.left)) : ea;\n    }\n});\n/**\n * @category mapping\n * @since 2.0.0\n */\nexport const map = (f) => (fa) => isLeft(fa) ? fa : right(f(fa.right));\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Functor = {\n    URI,\n    map: _map\n};\n/**\n * Maps the `Right` value of this `Either` to the specified constant value.\n *\n * @category mapping\n * @since 2.16.0\n */\nexport const as = dual(2, as_(Functor));\n/**\n * Maps the `Right` value of this `Either` to the void constant value.\n *\n * @category mapping\n * @since 2.16.0\n */\nexport const asUnit = asUnit_(Functor);\n/**\n * @category constructors\n * @since 2.7.0\n */\nexport const of = right;\n/**\n * @category instances\n * @since 2.10.0\n */\nexport const Pointed = {\n    URI,\n    of\n};\n/**\n * Less strict version of [`ap`](#ap).\n *\n * The `W` suffix (short for **W**idening) means that the error types will be merged.\n *\n * @since 2.8.0\n */\nexport const apW = (fa) => (fab) => isLeft(fab) ? fab : isLeft(fa) ? fa : right(fab.right(fa.right));\n/**\n * @since 2.0.0\n */\nexport const ap = apW;\n/**\n * @category instances\n * @since 2.10.0\n */\nexport const Apply = {\n    URI,\n    map: _map,\n    ap: _ap\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Applicative = {\n    URI,\n    map: _map,\n    ap: _ap,\n    of\n};\n/**\n * @category instances\n * @since 2.10.0\n */\nexport const Chain = {\n    URI,\n    map: _map,\n    ap: _ap,\n    chain: flatMap\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Monad = {\n    URI,\n    map: _map,\n    ap: _ap,\n    of,\n    chain: flatMap\n};\n/**\n * Left-associative fold of a structure.\n *\n * @example\n * import { pipe } from 'fp-ts/function'\n * import * as E from 'fp-ts/Either'\n *\n * const startWith = 'prefix'\n * const concat = (a: string, b: string) => `${a}:${b}`\n *\n * assert.deepStrictEqual(\n *   pipe(E.right('a'), E.reduce(startWith, concat)),\n *   'prefix:a'\n * )\n *\n * assert.deepStrictEqual(\n *   pipe(E.left('e'), E.reduce(startWith, concat)),\n *   'prefix'\n * )\n *\n * @category folding\n * @since 2.0.0\n */\nexport const reduce = (b, f) => (fa) => isLeft(fa) ? b : f(b, fa.right);\n/**\n * Map each element of the structure to a monoid, and combine the results.\n *\n * @example\n * import { pipe } from 'fp-ts/function'\n * import * as E from 'fp-ts/Either'\n * import * as S from 'fp-ts/string'\n *\n * const yell = (a: string) => `${a}!`\n *\n * assert.deepStrictEqual(\n *   pipe(E.right('a'), E.foldMap(S.Monoid)(yell)),\n *   'a!'\n * )\n *\n * assert.deepStrictEqual(\n *   pipe(E.left('e'), E.foldMap(S.Monoid)(yell)),\n *   S.Monoid.empty\n * )\n *\n * @category folding\n * @since 2.0.0\n */\nexport const foldMap = (M) => (f) => (fa) => isLeft(fa) ? M.empty : f(fa.right);\n/**\n * Right-associative fold of a structure.\n *\n * @example\n * import { pipe } from 'fp-ts/function'\n * import * as E from 'fp-ts/Either'\n *\n * const startWith = 'postfix'\n * const concat = (a: string, b: string) => `${a}:${b}`\n *\n * assert.deepStrictEqual(\n *   pipe(E.right('a'), E.reduceRight(startWith, concat)),\n *   'a:postfix'\n * )\n *\n * assert.deepStrictEqual(\n *   pipe(E.left('e'), E.reduceRight(startWith, concat)),\n *   'postfix'\n * )\n *\n * @category folding\n * @since 2.0.0\n */\nexport const reduceRight = (b, f) => (fa) => isLeft(fa) ? b : f(fa.right, b);\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Foldable = {\n    URI,\n    reduce: _reduce,\n    foldMap: _foldMap,\n    reduceRight: _reduceRight\n};\n/**\n * Map each element of a structure to an action, evaluate these actions from left to right, and collect the results.\n *\n * @example\n * import { pipe } from 'fp-ts/function'\n * import * as RA from 'fp-ts/ReadonlyArray'\n * import * as E from 'fp-ts/Either'\n * import * as O from 'fp-ts/Option'\n *\n * assert.deepStrictEqual(\n *   pipe(E.right(['a']), E.traverse(O.Applicative)(RA.head)),\n *   O.some(E.right('a'))\n *  )\n *\n * assert.deepStrictEqual(\n *   pipe(E.right([]), E.traverse(O.Applicative)(RA.head)),\n *   O.none\n * )\n *\n * @category traversing\n * @since 2.6.3\n */\nexport const traverse = (F) => (f) => (ta) => isLeft(ta) ? F.of(left(ta.left)) : F.map(f(ta.right), right);\n/**\n * Evaluate each monadic action in the structure from left to right, and collect the results.\n *\n * @example\n * import { pipe } from 'fp-ts/function'\n * import * as E from 'fp-ts/Either'\n * import * as O from 'fp-ts/Option'\n *\n * assert.deepStrictEqual(\n *   pipe(E.right(O.some('a')), E.sequence(O.Applicative)),\n *   O.some(E.right('a'))\n *  )\n *\n * assert.deepStrictEqual(\n *   pipe(E.right(O.none), E.sequence(O.Applicative)),\n *   O.none\n * )\n *\n * @category traversing\n * @since 2.6.3\n */\nexport const sequence = (F) => (ma) => {\n    return isLeft(ma) ? F.of(left(ma.left)) : F.map(ma.right, right);\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Traversable = {\n    URI,\n    map: _map,\n    reduce: _reduce,\n    foldMap: _foldMap,\n    reduceRight: _reduceRight,\n    traverse: _traverse,\n    sequence\n};\n/**\n * Map a pair of functions over the two type arguments of the bifunctor.\n *\n * @category mapping\n * @since 2.0.0\n */\nexport const bimap = (f, g) => (fa) => isLeft(fa) ? left(f(fa.left)) : right(g(fa.right));\n/**\n * Map a function over the first type argument of a bifunctor.\n *\n * @category error handling\n * @since 2.0.0\n */\nexport const mapLeft = (f) => (fa) => isLeft(fa) ? left(f(fa.left)) : fa;\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Bifunctor = {\n    URI,\n    bimap: _bimap,\n    mapLeft: _mapLeft\n};\n/**\n * Less strict version of [`alt`](#alt).\n *\n * The `W` suffix (short for **W**idening) means that the error and the return types will be merged.\n *\n * @category error handling\n * @since 2.9.0\n */\nexport const altW = (that) => (fa) => isLeft(fa) ? that() : fa;\n/**\n * Identifies an associative operation on a type constructor. It is similar to `Semigroup`, except that it applies to\n * types of kind `* -> *`.\n *\n * In case of `Either` returns the left-most non-`Left` value (or the right-most `Left` value if both values are `Left`).\n *\n * | x        | y        | pipe(x, alt(() => y) |\n * | -------- | -------- | -------------------- |\n * | left(a)  | left(b)  | left(b)              |\n * | left(a)  | right(2) | right(2)             |\n * | right(1) | left(b)  | right(1)             |\n * | right(1) | right(2) | right(1)             |\n *\n * @example\n * import * as E from 'fp-ts/Either'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(\n *   pipe(\n *     E.left('a'),\n *     E.alt(() => E.left('b'))\n *   ),\n *   E.left('b')\n * )\n * assert.deepStrictEqual(\n *   pipe(\n *     E.left('a'),\n *     E.alt(() => E.right(2))\n *   ),\n *   E.right(2)\n * )\n * assert.deepStrictEqual(\n *   pipe(\n *     E.right(1),\n *     E.alt(() => E.left('b'))\n *   ),\n *   E.right(1)\n * )\n * assert.deepStrictEqual(\n *   pipe(\n *     E.right(1),\n *     E.alt(() => E.right(2))\n *   ),\n *   E.right(1)\n * )\n *\n * @category error handling\n * @since 2.0.0\n */\nexport const alt = altW;\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Alt = {\n    URI,\n    map: _map,\n    alt: _alt\n};\n/**\n * @since 2.0.0\n */\nexport const extend = (f) => (wa) => isLeft(wa) ? wa : right(f(wa));\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Extend = {\n    URI,\n    map: _map,\n    extend: _extend\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const ChainRec = {\n    URI,\n    map: _map,\n    ap: _ap,\n    chain: flatMap,\n    chainRec: _chainRec\n};\n/**\n * @since 2.6.3\n */\nexport const throwError = left;\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const MonadThrow = {\n    URI,\n    map: _map,\n    ap: _ap,\n    of,\n    chain: flatMap,\n    throwError\n};\n/**\n * @category instances\n * @since 2.10.0\n */\nexport const FromEither = {\n    URI,\n    fromEither: identity\n};\n/**\n * @example\n * import { fromPredicate, left, right } from 'fp-ts/Either'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(\n *   pipe(\n *     1,\n *     fromPredicate(\n *       (n) => n > 0,\n *       () => 'error'\n *     )\n *   ),\n *   right(1)\n * )\n * assert.deepStrictEqual(\n *   pipe(\n *     -1,\n *     fromPredicate(\n *       (n) => n > 0,\n *       () => 'error'\n *     )\n *   ),\n *   left('error')\n * )\n *\n * @category lifting\n * @since 2.0.0\n */\nexport const fromPredicate = /*#__PURE__*/ fromPredicate_(FromEither);\n// -------------------------------------------------------------------------------------\n// conversions\n// -------------------------------------------------------------------------------------\n/**\n * @example\n * import * as E from 'fp-ts/Either'\n * import { pipe } from 'fp-ts/function'\n * import * as O from 'fp-ts/Option'\n *\n * assert.deepStrictEqual(\n *   pipe(\n *     O.some(1),\n *     E.fromOption(() => 'error')\n *   ),\n *   E.right(1)\n * )\n * assert.deepStrictEqual(\n *   pipe(\n *     O.none,\n *     E.fromOption(() => 'error')\n *   ),\n *   E.left('error')\n * )\n *\n * @category conversions\n * @since 2.0.0\n */\nexport const fromOption = \n/*#__PURE__*/ fromOption_(FromEither);\n// -------------------------------------------------------------------------------------\n// refinements\n// -------------------------------------------------------------------------------------\n/**\n * Returns `true` if the either is an instance of `Left`, `false` otherwise.\n *\n * @category refinements\n * @since 2.0.0\n */\nexport const isLeft = _.isLeft;\n/**\n * Returns `true` if the either is an instance of `Right`, `false` otherwise.\n *\n * @category refinements\n * @since 2.0.0\n */\nexport const isRight = _.isRight;\n/**\n * Less strict version of [`match`](#match).\n *\n * The `W` suffix (short for **W**idening) means that the handler return types will be merged.\n *\n * @category pattern matching\n * @since 2.10.0\n */\nexport const matchW = (onLeft, onRight) => (ma) => isLeft(ma) ? onLeft(ma.left) : onRight(ma.right);\n/**\n * Alias of [`matchW`](#matchw).\n *\n * @category pattern matching\n * @since 2.10.0\n */\nexport const foldW = matchW;\n/**\n * Takes two functions and an `Either` value, if the value is a `Left` the inner value is applied to the first function,\n * if the value is a `Right` the inner value is applied to the second function.\n *\n * @example\n * import { match, left, right } from 'fp-ts/Either'\n * import { pipe } from 'fp-ts/function'\n *\n * function onLeft(errors: Array<string>): string {\n *   return `Errors: ${errors.join(', ')}`\n * }\n *\n * function onRight(value: number): string {\n *   return `Ok: ${value}`\n * }\n *\n * assert.strictEqual(\n *   pipe(\n *     right(1),\n *     match(onLeft, onRight)\n *   ),\n *   'Ok: 1'\n * )\n * assert.strictEqual(\n *   pipe(\n *     left(['error 1', 'error 2']),\n *     match(onLeft, onRight)\n *   ),\n *   'Errors: error 1, error 2'\n * )\n *\n * @category pattern matching\n * @since 2.10.0\n */\nexport const match = matchW;\n/**\n * Alias of [`match`](#match).\n *\n * @category pattern matching\n * @since 2.0.0\n */\nexport const fold = match;\n/**\n * Less strict version of [`getOrElse`](#getorelse).\n *\n * The `W` suffix (short for **W**idening) means that the handler return type will be merged.\n *\n * @category error handling\n * @since 2.6.0\n */\nexport const getOrElseW = (onLeft) => (ma) => isLeft(ma) ? onLeft(ma.left) : ma.right;\n/**\n * Returns the wrapped value if it's a `Right` or a default value if is a `Left`.\n *\n * @example\n * import { getOrElse, left, right } from 'fp-ts/Either'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(\n *   pipe(\n *     right(1),\n *     getOrElse(() => 0)\n *   ),\n *   1\n * )\n * assert.deepStrictEqual(\n *   pipe(\n *     left('error'),\n *     getOrElse(() => 0)\n *   ),\n *   0\n * )\n *\n * @category error handling\n * @since 2.0.0\n */\nexport const getOrElse = getOrElseW;\n// -------------------------------------------------------------------------------------\n// combinators\n// -------------------------------------------------------------------------------------\n/**\n * @category mapping\n * @since 2.10.0\n */\nexport const flap = /*#__PURE__*/ flap_(Functor);\n/**\n * Combine two effectful actions, keeping only the result of the first.\n *\n * @since 2.0.0\n */\nexport const apFirst = /*#__PURE__*/ apFirst_(Apply);\n/**\n * Less strict version of [`apFirst`](#apfirst)\n *\n * The `W` suffix (short for **W**idening) means that the error types will be merged.\n *\n * @since 2.12.0\n */\nexport const apFirstW = apFirst;\n/**\n * Combine two effectful actions, keeping only the result of the second.\n *\n * @since 2.0.0\n */\nexport const apSecond = /*#__PURE__*/ apSecond_(Apply);\n/**\n * Less strict version of [`apSecond`](#apsecond)\n *\n * The `W` suffix (short for **W**idening) means that the error types will be merged.\n *\n * @since 2.12.0\n */\nexport const apSecondW = apSecond;\n/**\n * Composes computations in sequence, using the return value of one computation to determine the next computation and\n * keeping only the result of the first.\n *\n * @category combinators\n * @since 2.15.0\n */\nexport const tap = /*#__PURE__*/ dual(2, chainable.tap(Chain));\n/**\n * Less strict version of [`flatten`](#flatten).\n *\n * The `W` suffix (short for **W**idening) means that the error types will be merged.\n *\n * @category sequencing\n * @since 2.11.0\n */\nexport const flattenW = \n/*#__PURE__*/ flatMap(identity);\n/**\n * The `flatten` function is the conventional monad join operator. It is used to remove one level of monadic structure, projecting its bound argument into the outer level.\n *\n * @example\n * import * as E from 'fp-ts/Either'\n *\n * assert.deepStrictEqual(E.flatten(E.right(E.right('a'))), E.right('a'))\n * assert.deepStrictEqual(E.flatten(E.right(E.left('e'))), E.left('e'))\n * assert.deepStrictEqual(E.flatten(E.left('e')), E.left('e'))\n *\n * @category sequencing\n * @since 2.0.0\n */\nexport const flatten = flattenW;\n/**\n * @since 2.0.0\n */\nexport const duplicate = /*#__PURE__*/ extend(identity);\n/**\n * Use `liftOption`.\n *\n * @category legacy\n * @since 2.10.0\n */\nexport const fromOptionK = \n/*#__PURE__*/ fromOptionK_(FromEither);\n/**\n * Use `flatMapOption`.\n *\n * @category legacy\n * @since 2.11.0\n */\nexport const chainOptionK = /*#__PURE__*/ chainOptionK_(FromEither, Chain);\n/**\n * Use `flatMapOption`.\n *\n * @category legacy\n * @since 2.13.2\n */\nexport const chainOptionKW = chainOptionK;\n/** @internal */\nconst _FromEither = {\n    fromEither: FromEither.fromEither\n};\n/**\n * @category lifting\n * @since 2.15.0\n */\nexport const liftNullable = /*#__PURE__*/ _.liftNullable(_FromEither);\n/**\n * @category lifting\n * @since 2.15.0\n */\nexport const liftOption = /*#__PURE__*/ _.liftOption(_FromEither);\n/** @internal */\nconst _FlatMap = {\n    flatMap\n};\n/**\n * @category sequencing\n * @since 2.15.0\n */\nexport const flatMapNullable = /*#__PURE__*/ _.flatMapNullable(_FromEither, _FlatMap);\n/**\n * @category sequencing\n * @since 2.15.0\n */\nexport const flatMapOption = /*#__PURE__*/ _.flatMapOption(_FromEither, _FlatMap);\n/**\n * @example\n * import * as E from 'fp-ts/Either'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(\n *   pipe(\n *     E.right(1),\n *     E.filterOrElse(\n *       (n) => n > 0,\n *       () => 'error'\n *     )\n *   ),\n *   E.right(1)\n * )\n * assert.deepStrictEqual(\n *   pipe(\n *     E.right(-1),\n *     E.filterOrElse(\n *       (n) => n > 0,\n *       () => 'error'\n *     )\n *   ),\n *   E.left('error')\n * )\n * assert.deepStrictEqual(\n *   pipe(\n *     E.left('a'),\n *     E.filterOrElse(\n *       (n) => n > 0,\n *       () => 'error'\n *     )\n *   ),\n *   E.left('a')\n * )\n *\n * @category filtering\n * @since 2.0.0\n */\nexport const filterOrElse = /*#__PURE__*/ filterOrElse_(FromEither, Chain);\n/**\n * Less strict version of [`filterOrElse`](#filterorelse).\n *\n * The `W` suffix (short for **W**idening) means that the error types will be merged.\n *\n * @category filtering\n * @since 2.9.0\n */\nexport const filterOrElseW = filterOrElse;\n/**\n * Returns a `Right` if is a `Left` (and vice versa).\n *\n * @since 2.0.0\n */\nexport const swap = (ma) => (isLeft(ma) ? right(ma.left) : left(ma.right));\n/**\n * Less strict version of [`orElse`](#orelse).\n *\n * The `W` suffix (short for **W**idening) means that the return types will be merged.\n *\n * @category error handling\n * @since 2.10.0\n */\nexport const orElseW = (onLeft) => (ma) => isLeft(ma) ? onLeft(ma.left) : ma;\n/**\n * Useful for recovering from errors.\n *\n * @category error handling\n * @since 2.0.0\n */\nexport const orElse = orElseW;\n/**\n * Takes a default and a nullable value, if the value is not nully, turn it into a `Right`, if the value is nully use\n * the provided default as a `Left`.\n *\n * @example\n * import { fromNullable, left, right } from 'fp-ts/Either'\n *\n * const parse = fromNullable('nully')\n *\n * assert.deepStrictEqual(parse(1), right(1))\n * assert.deepStrictEqual(parse(null), left('nully'))\n *\n * @category conversions\n * @since 2.0.0\n */\nexport const fromNullable = (e) => (a) => a == null ? left(e) : right(a);\n/**\n * Constructs a new `Either` from a function that might throw.\n *\n * See also [`tryCatchK`](#trycatchk).\n *\n * @example\n * import * as E from 'fp-ts/Either'\n *\n * const unsafeHead = <A>(as: ReadonlyArray<A>): A => {\n *   if (as.length > 0) {\n *     return as[0]\n *   } else {\n *     throw new Error('empty array')\n *   }\n * }\n *\n * const head = <A>(as: ReadonlyArray<A>): E.Either<Error, A> =>\n *   E.tryCatch(() => unsafeHead(as), e => (e instanceof Error ? e : new Error('unknown error')))\n *\n * assert.deepStrictEqual(head([]), E.left(new Error('empty array')))\n * assert.deepStrictEqual(head([1, 2, 3]), E.right(1))\n *\n * @category interop\n * @since 2.0.0\n */\nexport const tryCatch = (f, onThrow) => {\n    try {\n        return right(f());\n    }\n    catch (e) {\n        return left(onThrow(e));\n    }\n};\n/**\n * Converts a function that may throw to one returning a `Either`.\n *\n * @category interop\n * @since 2.10.0\n */\nexport const tryCatchK = (f, onThrow) => (...a) => tryCatch(() => f(...a), onThrow);\n/**\n * Use `liftNullable`.\n *\n * @category legacy\n * @since 2.9.0\n */\nexport const fromNullableK = (e) => {\n    const from = fromNullable(e);\n    return (f) => flow(f, from);\n};\n/**\n * Use `flatMapNullable`.\n *\n * @category legacy\n * @since 2.9.0\n */\nexport const chainNullableK = (e) => {\n    const from = fromNullableK(e);\n    return (f) => flatMap(from(f));\n};\n/**\n * @category conversions\n * @since 2.10.0\n */\nexport const toUnion = /*#__PURE__*/ foldW(identity, identity);\n// -------------------------------------------------------------------------------------\n// utils\n// -------------------------------------------------------------------------------------\n/**\n * Default value for the `onError` argument of `tryCatch`\n *\n * @since 2.0.0\n */\nexport function toError(e) {\n    try {\n        return e instanceof Error ? e : new Error(String(e));\n    }\n    catch (error) {\n        return new Error();\n    }\n}\nexport function elem(E) {\n    return (a, ma) => {\n        if (ma === undefined) {\n            const elemE = elem(E);\n            return (ma) => elemE(a, ma);\n        }\n        return isLeft(ma) ? false : E.equals(a, ma.right);\n    };\n}\n/**\n * Returns `false` if `Left` or returns the result of the application of the given predicate to the `Right` value.\n *\n * @example\n * import { exists, left, right } from 'fp-ts/Either'\n *\n * const gt2 = exists((n: number) => n > 2)\n *\n * assert.strictEqual(gt2(left('a')), false)\n * assert.strictEqual(gt2(right(1)), false)\n * assert.strictEqual(gt2(right(3)), true)\n *\n * @since 2.0.0\n */\nexport const exists = (predicate) => (ma) => isLeft(ma) ? false : predicate(ma.right);\n// -------------------------------------------------------------------------------------\n// do notation\n// -------------------------------------------------------------------------------------\n/**\n * @category do notation\n * @since 2.9.0\n */\nexport const Do = /*#__PURE__*/ of(_.emptyRecord);\n/**\n * @category do notation\n * @since 2.8.0\n */\nexport const bindTo = /*#__PURE__*/ bindTo_(Functor);\nconst let_ = /*#__PURE__*/ let__(Functor);\nexport { \n/**\n * @category do notation\n * @since 2.13.0\n */\nlet_ as let };\n/**\n * @category do notation\n * @since 2.8.0\n */\nexport const bind = /*#__PURE__*/ chainable.bind(Chain);\n/**\n * The `W` suffix (short for **W**idening) means that the error types will be merged.\n *\n * @category do notation\n * @since 2.8.0\n */\nexport const bindW = bind;\n/**\n * @category do notation\n * @since 2.8.0\n */\nexport const apS = /*#__PURE__*/ apS_(Apply);\n/**\n * Less strict version of [`apS`](#aps).\n *\n * The `W` suffix (short for **W**idening) means that the error types will be merged.\n *\n * @category do notation\n * @since 2.8.0\n */\nexport const apSW = apS;\n/**\n * @since 2.11.0\n */\nexport const ApT = /*#__PURE__*/ of(_.emptyReadonlyArray);\n// -------------------------------------------------------------------------------------\n// array utils\n// -------------------------------------------------------------------------------------\n/**\n * Equivalent to `ReadonlyNonEmptyArray#traverseWithIndex(Applicative)`.\n *\n * @category traversing\n * @since 2.11.0\n */\nexport const traverseReadonlyNonEmptyArrayWithIndex = (f) => (as) => {\n    const e = f(0, _.head(as));\n    if (isLeft(e)) {\n        return e;\n    }\n    const out = [e.right];\n    for (let i = 1; i < as.length; i++) {\n        const e = f(i, as[i]);\n        if (isLeft(e)) {\n            return e;\n        }\n        out.push(e.right);\n    }\n    return right(out);\n};\n/**\n * Equivalent to `ReadonlyArray#traverseWithIndex(Applicative)`.\n *\n * @category traversing\n * @since 2.11.0\n */\nexport const traverseReadonlyArrayWithIndex = (f) => {\n    const g = traverseReadonlyNonEmptyArrayWithIndex(f);\n    return (as) => (_.isNonEmpty(as) ? g(as) : ApT);\n};\n/**\n * Equivalent to `ReadonlyArray#traverseWithIndex(Applicative)`.\n *\n * @category traversing\n * @since 2.9.0\n */\nexport const traverseArrayWithIndex = traverseReadonlyArrayWithIndex;\n/**\n * Equivalent to `ReadonlyArray#traverse(Applicative)`.\n *\n * @category traversing\n * @since 2.9.0\n */\nexport const traverseArray = (f) => traverseReadonlyArrayWithIndex((_, a) => f(a));\n/**\n * Equivalent to `ReadonlyArray#sequence(Applicative)`.\n *\n * @category traversing\n * @since 2.9.0\n */\nexport const sequenceArray = \n/*#__PURE__*/ traverseArray(identity);\n// -------------------------------------------------------------------------------------\n// legacy\n// -------------------------------------------------------------------------------------\n/**\n * Alias of `flatMap`.\n *\n * @category legacy\n * @since 2.6.0\n */\nexport const chainW = flatMap;\n/**\n * Alias of `flatMap`.\n *\n * @category legacy\n * @since 2.0.0\n */\nexport const chain = flatMap;\n/**\n * Alias of `tap`.\n *\n * @category legacy\n * @since 2.0.0\n */\nexport const chainFirst = tap;\n/**\n * Alias of `tap`.\n *\n * @category legacy\n * @since 2.8.0\n */\nexport const chainFirstW = tap;\n/**\n * Use [`parse`](./Json.ts.html#parse) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport function parseJSON(s, onError) {\n    return tryCatch(() => JSON.parse(s), onError);\n}\n/**\n * Use [`stringify`](./Json.ts.html#stringify) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const stringifyJSON = (u, onError) => tryCatch(() => {\n    const s = JSON.stringify(u);\n    if (typeof s !== 'string') {\n        throw new Error('Converting unsupported structure to JSON');\n    }\n    return s;\n}, onError);\n/**\n * This instance is deprecated, use small, specific instances instead.\n * For example if a function needs a `Functor` instance, pass `E.Functor` instead of `E.either`\n * (where `E` is from `import E from 'fp-ts/Either'`)\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const either = {\n    URI,\n    map: _map,\n    of,\n    ap: _ap,\n    chain: flatMap,\n    reduce: _reduce,\n    foldMap: _foldMap,\n    reduceRight: _reduceRight,\n    traverse: _traverse,\n    sequence,\n    bimap: _bimap,\n    mapLeft: _mapLeft,\n    alt: _alt,\n    extend: _extend,\n    chainRec: _chainRec,\n    throwError: throwError\n};\n/**\n * Use [`getApplySemigroup`](./Apply.ts.html#getapplysemigroup) instead.\n *\n * Semigroup returning the left-most `Left` value. If both operands are `Right`s then the inner values\n * are concatenated using the provided `Semigroup`\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const getApplySemigroup = \n/*#__PURE__*/ getApplySemigroup_(Apply);\n/**\n * Use [`getApplicativeMonoid`](./Applicative.ts.html#getapplicativemonoid) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const getApplyMonoid = \n/*#__PURE__*/ getApplicativeMonoid(Applicative);\n/**\n * Use [`getApplySemigroup`](./Apply.ts.html#getapplysemigroup) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const getValidationSemigroup = (SE, SA) => getApplySemigroup_(getApplicativeValidation(SE))(SA);\n/**\n * Use [`getApplicativeMonoid`](./Applicative.ts.html#getapplicativemonoid) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const getValidationMonoid = (SE, MA) => getApplicativeMonoid(getApplicativeValidation(SE))(MA);\n/**\n * Use [`getApplicativeValidation`](#getapplicativevalidation) and [`getAltValidation`](#getaltvalidation) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport function getValidation(SE) {\n    const ap = getApplicativeValidation(SE).ap;\n    const alt = getAltValidation(SE).alt;\n    return {\n        URI,\n        _E: undefined,\n        map: _map,\n        of,\n        chain: flatMap,\n        bimap: _bimap,\n        mapLeft: _mapLeft,\n        reduce: _reduce,\n        foldMap: _foldMap,\n        reduceRight: _reduceRight,\n        extend: _extend,\n        traverse: _traverse,\n        sequence,\n        chainRec: _chainRec,\n        throwError,\n        ap,\n        alt\n    };\n}\n","import * as RA from 'fp-ts-esm/ReadonlyArray';\nimport * as RR from 'fp-ts-esm/ReadonlyRecord';\nimport { constant, flow, identity } from 'fp-ts-esm/function';\nimport * as O from 'fp-ts-esm/Option';\nimport * as E from 'fp-ts-esm/Either';\nimport { pipe } from 'fp-ts-esm/pipeable';\n// -------------------------------------------------------------------------------------\n// Iso\n// -------------------------------------------------------------------------------------\n/** @internal */\nexport const iso = (get, reverseGet) => ({\n    get,\n    reverseGet\n});\n/** @internal */\nexport const isoAsLens = (sa) => lens(sa.get, flow(sa.reverseGet, constant));\n/** @internal */\nexport const isoAsPrism = (sa) => prism(flow(sa.get, O.some), sa.reverseGet);\n/** @internal */\nexport const isoAsOptional = (sa) => optional(flow(sa.get, O.some), flow(sa.reverseGet, constant));\n/** @internal */\nexport const isoAsTraversal = (sa) => traversal((F) => (f) => (s) => \n// @ts-expect-error\nF.map(f(sa.get(s)), (a) => sa.reverseGet(a)));\n// -------------------------------------------------------------------------------------\n// Lens\n// -------------------------------------------------------------------------------------\n/** @internal */\nexport const lens = (get, set) => ({ get, set });\n/** @internal */\nexport const lensAsOptional = (sa) => optional(flow(sa.get, O.some), sa.set);\n/** @internal */\nexport const lensAsTraversal = (sa) => \n// @ts-expect-error\ntraversal((F) => (f) => (s) => F.map(f(sa.get(s)), (a) => sa.set(a)(s)));\n/** @internal */\nexport const lensComposeLens = (ab) => (sa) => lens((s) => ab.get(sa.get(s)), (b) => (s) => sa.set(ab.set(b)(sa.get(s)))(s));\n/** @internal */\nexport const prismComposePrism = (ab) => (sa) => prism(flow(sa.getOption, O.chain(ab.getOption)), flow(ab.reverseGet, sa.reverseGet));\n/** @internal */\nexport const lensComposePrism = (ab) => (sa) => optionalComposeOptional(prismAsOptional(ab))(lensAsOptional(sa));\n/** @internal */\nexport const lensId = () => lens(identity, constant);\n/** @internal */\nexport const lensProp = (prop) => (sa) => lens((s) => sa.get(s)[prop], (ap) => (s) => {\n    const oa = sa.get(s);\n    if (ap === oa[prop]) {\n        return s;\n    }\n    return sa.set(Object.assign({}, oa, { [prop]: ap }))(s);\n});\n/** @internal */\nexport const lensProps = (...props) => (sa) => lens((s) => {\n    const a = sa.get(s);\n    const r = {};\n    for (const k of props) {\n        r[k] = a[k];\n    }\n    return r;\n}, (a) => (s) => {\n    const oa = sa.get(s);\n    for (const k of props) {\n        if (a[k] !== oa[k]) {\n            return sa.set(Object.assign({}, oa, a))(s);\n        }\n    }\n    return s;\n});\n/** @internal */\nexport const lensComponent = (prop) => (sa) => lens((s) => sa.get(s)[prop], (ap) => (s) => {\n    const oa = sa.get(s);\n    if (ap === oa[prop]) {\n        return s;\n    }\n    const copy = oa.slice();\n    copy[prop] = ap;\n    return sa.set(copy)(s);\n});\n/** @internal */\nexport const lensAtKey = (key) => (sa) => pipe(sa, lensComposeLens(atReadonlyRecord().at(key)));\n// -------------------------------------------------------------------------------------\n// Prism\n// -------------------------------------------------------------------------------------\n/** @internal */\nexport const prism = (getOption, reverseGet) => ({ getOption, reverseGet });\n/** @internal */\nexport const prismAsOptional = (sa) => optional(sa.getOption, (a) => prismSet(a)(sa));\n/** @internal */\nexport const prismAsTraversal = (sa) => traversal((F) => (f) => (s) => pipe(sa.getOption(s), O.fold(() => F.of(s), \n// @ts-expect-error\n(a) => F.map(f(a), (a) => prismSet(a)(sa)(s)))));\n/** @internal */\nexport const prismModifyOption = (f) => (sa) => (s) => pipe(sa.getOption(s), O.map((o) => {\n    const n = f(o);\n    return n === o ? s : sa.reverseGet(n);\n}));\n/** @internal */\nexport const prismModify = (f) => (sa) => {\n    const g = prismModifyOption(f)(sa);\n    return (s) => pipe(g(s), O.getOrElse(() => s));\n};\n/** @internal */\nexport const prismSet = (a) => prismModify(() => a);\n/** @internal */\nexport const prismComposeLens = (ab) => (sa) => optionalComposeOptional(lensAsOptional(ab))(prismAsOptional(sa));\n/** @internal */\nexport const prismFromNullable = () => prism(O.fromNullable, identity);\n/** @internal */\nexport const prismFromPredicate = (predicate) => prism(O.fromPredicate(predicate), identity);\n/** @internal */\nexport const prismSome = () => prism(identity, O.some);\n/** @internal */\nexport const prismRight = () => prism(O.fromEither, E.right);\n/** @internal */\nexport const prismLeft = () => prism((s) => (E.isLeft(s) ? O.some(s.left) : O.none), // TODO: replace with E.getLeft in v3\nE.left);\n// -------------------------------------------------------------------------------------\n// Optional\n// -------------------------------------------------------------------------------------\n/** @internal */\nexport const optional = (getOption, set) => ({\n    getOption,\n    set\n});\n/** @internal */\nexport const optionalAsTraversal = (sa) => traversal((F) => (f) => (s) => pipe(sa.getOption(s), O.fold(() => F.of(s), (a) => F.map(f(a), (a) => sa.set(a)(s)))));\n/** @internal */\nexport const optionalModifyOption = (f) => (optional) => (s) => pipe(optional.getOption(s), O.map((a) => {\n    const n = f(a);\n    return n === a ? s : optional.set(n)(s);\n}));\n/** @internal */\nexport const optionalModify = (f) => (optional) => {\n    const g = optionalModifyOption(f)(optional);\n    return (s) => pipe(g(s), O.getOrElse(() => s));\n};\n/** @internal */\nexport const optionalComposeOptional = (ab) => (sa) => optional(flow(sa.getOption, O.chain(ab.getOption)), (b) => optionalModify(ab.set(b))(sa));\n/** @internal */\nexport const optionalIndex = (i) => (sa) => pipe(sa, optionalComposeOptional(indexReadonlyArray().index(i)));\n/** @internal */\nexport const optionalIndexNonEmpty = (i) => (sa) => pipe(sa, optionalComposeOptional(indexReadonlyNonEmptyArray().index(i)));\n/** @internal */\nexport const optionalKey = (key) => (sa) => pipe(sa, optionalComposeOptional(indexReadonlyRecord().index(key)));\n/** @internal */\nexport const optionalFindFirst = (predicate) => optional(RA.findFirst(predicate), (a) => (s) => pipe(RA.findIndex(predicate)(s), O.fold(() => s, (i) => RA.unsafeUpdateAt(i, a, s))));\nconst unsafeUpdateAt = (i, a, as) => {\n    if (as[i] === a) {\n        return as;\n    }\n    else {\n        const xs = [as[0], ...as.slice(1)];\n        xs[i] = a;\n        return xs;\n    }\n};\n/** @internal */\nexport const optionalFindFirstNonEmpty = (predicate) => optional(RA.findFirst(predicate), (a) => (as) => pipe(RA.findIndex(predicate)(as), O.fold(() => as, (i) => unsafeUpdateAt(i, a, as))));\n// -------------------------------------------------------------------------------------\n// Traversal\n// -------------------------------------------------------------------------------------\n/** @internal */\nexport const traversal = (modifyF) => ({\n    modifyF\n});\n/** @internal */\nexport function traversalComposeTraversal(ab) {\n    return (sa) => traversal((F) => (f) => sa.modifyF(F)(ab.modifyF(F)(f)));\n}\n/** @internal */\nexport const ApplicativeIdentity = {\n    URI: 'Identity',\n    map: (fa, f) => f(fa),\n    of: identity,\n    ap: \n    /* istanbul ignore next */\n    (fab, fa) => fab(fa)\n};\nconst isIdentity = (F) => F.URI === 'Identity';\nexport function fromTraversable(T) {\n    return () => traversal((F) => {\n        // if `F` is `Identity` then `traverseF = map`\n        const traverseF = isIdentity(F)\n            ? T.map\n            : T.traverse(F);\n        return (f) => (s) => traverseF(s, f);\n    });\n}\n/** @internal */\nexport function traversalTraverse(T) {\n    return traversalComposeTraversal(fromTraversable(T)());\n}\n// -------------------------------------------------------------------------------------\n// Ix\n// -------------------------------------------------------------------------------------\n/** @internal */\nexport const index = (index) => ({ index });\n/** @internal */\nexport const indexReadonlyArray = () => index((i) => optional((as) => RA.lookup(i, as), (a) => (as) => pipe(RA.lookup(i, as), O.fold(() => as, () => RA.unsafeUpdateAt(i, a, as)))));\n/** @internal */\nexport const indexReadonlyNonEmptyArray = () => index((i) => optional((as) => RA.lookup(i, as), (a) => (as) => pipe(RA.lookup(i, as), O.fold(() => as, () => unsafeUpdateAt(i, a, as)))));\n/** @internal */\nexport const indexReadonlyRecord = () => index((k) => optional((r) => RR.lookup(k, r), (a) => (r) => {\n    if (r[k] === a || O.isNone(RR.lookup(k, r))) {\n        return r;\n    }\n    return RR.insertAt(k, a)(r);\n}));\n// -------------------------------------------------------------------------------------\n// At\n// -------------------------------------------------------------------------------------\n/** @internal */\nexport const at = (at) => ({ at });\n/** @internal */\nexport function atReadonlyRecord() {\n    return at((key) => lens((r) => RR.lookup(key, r), O.fold(() => RR.deleteAt(key), (a) => RR.insertAt(key, a))));\n}\n","import * as O from 'fp-ts-esm/Option';\nimport { pipe } from 'fp-ts-esm/pipeable';\nimport * as RM from 'fp-ts-esm/ReadonlyMap';\nimport * as RS from 'fp-ts-esm/ReadonlySet';\nimport * as _ from './internal.js';\n// -------------------------------------------------------------------------------------\n// constructors\n// -------------------------------------------------------------------------------------\n/**\n * @category constructors\n * @since 2.3.8\n */\nexport const at = _.at;\n/**\n * Lift an instance of `At` using an `Iso`.\n *\n * @category constructors\n * @since 2.3.0\n */\nexport const fromIso = (iso) => (sia) => at((i) => pipe(iso, _.isoAsLens, _.lensComposeLens(sia.at(i))));\n/**\n * @category constructors\n * @since 2.3.7\n */\nexport const atReadonlyRecord = _.atReadonlyRecord;\n/**\n * @category constructors\n * @since 2.3.7\n */\nexport const atReadonlyMap = (E) => {\n    const lookupE = RM.lookup(E);\n    const deleteAtE = RM.deleteAt(E);\n    const insertAtE = RM.insertAt(E);\n    return () => at((key) => _.lens((s) => lookupE(key, s), O.fold(() => deleteAtE(key), (a) => insertAtE(key, a))));\n};\n/**\n * @category constructors\n * @since 2.3.7\n */\nexport const atReadonlySet = (E) => {\n    const elemE = RS.elem(E);\n    const insertE = RS.insert(E);\n    const removeE = RS.remove(E);\n    return at((a) => {\n        const insert = insertE(a);\n        const remove = removeE(a);\n        return _.lens((s) => elemE(a, s), (b) => (s) => (b ? insert(s) : remove(s)));\n    });\n};\n// -------------------------------------------------------------------------------------\n// deprecated\n// -------------------------------------------------------------------------------------\n/**\n * Use `atReadonlyRecord` instead.\n *\n * @category constructors\n * @since 2.3.2\n * @deprecated\n */\nexport const atRecord = _.atReadonlyRecord;\n","import { flow, identity } from 'fp-ts-esm/function';\nimport { pipe } from 'fp-ts-esm/pipeable';\nimport * as _ from './internal.js';\n// -------------------------------------------------------------------------------------\n// constructors\n// -------------------------------------------------------------------------------------\n/**\n * @category constructors\n * @since 2.3.8\n */\nexport const iso = _.iso;\n/**\n * @category constructors\n * @since 2.3.0\n */\nexport const id = () => iso(identity, identity);\n// -------------------------------------------------------------------------------------\n// converters\n// -------------------------------------------------------------------------------------\n/**\n * View an `Iso` as a `Lens`.\n *\n * @category converters\n * @since 2.3.0\n */\nexport const asLens = _.isoAsLens;\n/**\n * View an `Iso` as a `Prism`.\n *\n * @category converters\n * @since 2.3.0\n */\nexport const asPrism = _.isoAsPrism;\n/**\n * View an `Iso` as a `Optional`.\n *\n * @category converters\n * @since 2.3.0\n */\nexport const asOptional = _.isoAsOptional;\n/**\n * View an `Iso` as a `Traversal`.\n *\n * @category converters\n * @since 2.3.0\n */\nexport const asTraversal = _.isoAsTraversal;\n// -------------------------------------------------------------------------------------\n// compositions\n// -------------------------------------------------------------------------------------\n/**\n * Compose an `Iso` with an `Iso`.\n *\n * @category compositions\n * @since 2.3.0\n */\nexport const compose = (ab) => (sa) => iso(flow(sa.get, ab.get), flow(ab.reverseGet, sa.reverseGet));\n/**\n * Alias of `compose`.\n *\n * @category compositions\n * @since 2.3.8\n */\nexport const composeIso = compose;\n/**\n * Compose an `Iso` with a `Lens`.\n *\n * @category compositions\n * @since 2.3.8\n */\nexport const composeLens = (ab) => flow(asLens, _.lensComposeLens(ab));\n/**\n * Compose an `Iso` with a `Prism`.\n *\n * @category compositions\n * @since 2.3.8\n */\nexport const composePrism = (ab) => flow(asPrism, _.prismComposePrism(ab));\n/**\n * Compose an `Iso` with a `Optional`.\n *\n * @category compositions\n * @since 2.3.8\n */\nexport const composeOptional = (ab) => flow(asOptional, _.optionalComposeOptional(ab));\n/**\n * Compose an `Iso` with a `Traversal`.\n *\n * @category compositions\n * @since 2.3.8\n */\nexport const composeTraversal = (ab) => flow(asTraversal, _.traversalComposeTraversal(ab));\n// -------------------------------------------------------------------------------------\n// combinators\n// -------------------------------------------------------------------------------------\n/**\n * @category constructors\n * @since 2.3.0\n */\nexport const reverse = (sa) => iso(sa.reverseGet, sa.get);\n/**\n * @category combinators\n * @since 2.3.0\n */\nexport const modify = (f) => (sa) => (s) => sa.reverseGet(f(sa.get(s)));\nexport function modifyF(F) {\n    return (f) => (sa) => (s) => pipe(sa.get(s), f, (fa) => F.map(fa, sa.reverseGet));\n}\n/**\n * Return a `Prism` from a `Iso` focused on a nullable value.\n *\n * @category combinators\n * @since 2.3.8\n */\nexport const fromNullable = (sa) => composePrism(_.prismFromNullable())(sa);\nexport function filter(predicate) {\n    return composePrism(_.prismFromPredicate(predicate));\n}\n/**\n * Return a `Lens` from a `Iso` and a prop.\n *\n * @category combinators\n * @since 2.3.8\n */\nexport const prop = (prop) => flow(asLens, _.lensProp(prop));\n/**\n * Return a `Lens` from a `Iso` and a list of props.\n *\n * @category combinators\n * @since 2.3.8\n */\nexport const props = (...props) => flow(asLens, _.lensProps(...props));\n/**\n * Return a `Lens` from a `Iso` focused on a component of a tuple.\n *\n * @category combinators\n * @since 2.3.8\n */\nexport const component = (prop) => flow(asLens, _.lensComponent(prop));\n/**\n * Return a `Optional` from a `Iso` focused on an index of a `ReadonlyArray`.\n *\n * @category combinators\n * @since 2.3.8\n */\nexport const index = (i) => flow(asOptional, _.optionalIndex(i));\n/**\n * Return a `Optional` from a `Iso` focused on an index of a `ReadonlyNonEmptyArray`.\n *\n * @category combinators\n * @since 2.3.8\n */\nexport const indexNonEmpty = (i) => flow(asOptional, _.optionalIndexNonEmpty(i));\n/**\n * Return a `Optional` from a `Iso` focused on a key of a `ReadonlyRecord`.\n *\n * @category combinators\n * @since 2.3.8\n */\nexport const key = (key) => flow(asOptional, _.optionalKey(key));\n/**\n * Return a `Lens` from a `Iso` focused on a required key of a `ReadonlyRecord`.\n *\n * @category combinators\n * @since 2.3.8\n */\nexport const atKey = (key) => flow(asLens, _.lensAtKey(key));\n/**\n * Return a `Prism` from a `Iso` focused on the `Some` of a `Option` type.\n *\n * @category combinators\n * @since 2.3.8\n */\nexport const some = \n/*#__PURE__*/\ncomposePrism(/*#__PURE__*/ _.prismSome());\n/**\n * Return a `Prism` from a `Iso` focused on the `Right` of a `Either` type.\n *\n * @category combinators\n * @since 2.3.8\n */\nexport const right = \n/*#__PURE__*/\ncomposePrism(/*#__PURE__*/ _.prismRight());\n/**\n * Return a `Prism` from a `Iso` focused on the `Left` of a `Either` type.\n *\n * @category combinators\n * @since 2.3.8\n */\nexport const left = \n/*#__PURE__*/\ncomposePrism(/*#__PURE__*/ _.prismLeft());\n/**\n * Return a `Traversal` from a `Iso` focused on a `Traversable`.\n *\n * @category combinators\n * @since 2.3.8\n */\nexport function traverse(T) {\n    return flow(asTraversal, _.traversalTraverse(T));\n}\nexport function findFirst(predicate) {\n    return composeOptional(_.optionalFindFirst(predicate));\n}\nexport function findFirstNonEmpty(predicate) {\n    return composeOptional(_.optionalFindFirstNonEmpty(predicate));\n}\n// -------------------------------------------------------------------------------------\n// pipeables\n// -------------------------------------------------------------------------------------\n/**\n * @category Invariant\n * @since 2.3.0\n */\nexport const imap = (f, g) => (ea) => imap_(ea, f, g);\n// -------------------------------------------------------------------------------------\n// instances\n// -------------------------------------------------------------------------------------\nconst imap_ = (ea, ab, ba) => iso(flow(ea.get, ab), flow(ba, ea.reverseGet));\n/**\n * @category instances\n * @since 2.3.0\n */\nexport const URI = 'monocle-ts/Iso';\n/**\n * @category instances\n * @since 2.3.0\n */\nexport const Invariant = {\n    URI,\n    imap: imap_\n};\n/**\n * @category instances\n * @since 2.3.8\n */\nexport const Semigroupoid = {\n    URI,\n    compose: (ab, ea) => compose(ab)(ea)\n};\n/**\n * @category instances\n * @since 2.3.0\n */\nexport const Category = {\n    URI,\n    compose: Semigroupoid.compose,\n    id\n};\n","/**\n * **This module is experimental**\n *\n * Experimental features are published in order to get early feedback from the community.\n *\n * A feature tagged as _Experimental_ is in a high state of flux, you're at risk of it changing without notice.\n *\n * @since 2.3.0\n */\nimport * as O from 'fp-ts-esm/Option';\nimport { pipe } from 'fp-ts-esm/pipeable';\nimport * as _ from './internal.js';\nimport * as RM from 'fp-ts-esm/ReadonlyMap';\n// -------------------------------------------------------------------------------------\n// constructors\n// -------------------------------------------------------------------------------------\n/**\n * @category constructors\n * @since 2.3.8\n */\nexport const index = _.index;\n/**\n * @category constructors\n * @since 2.3.0\n */\nexport const fromAt = (at) => index((i) => _.lensComposePrism(_.prismSome())(at.at(i)));\n/**\n * Lift an instance of `Index` using an `Iso`.\n *\n * @category constructors\n * @since 2.3.0\n */\nexport const fromIso = (iso) => (sia) => index((i) => pipe(iso, _.isoAsOptional, _.optionalComposeOptional(sia.index(i))));\n/**\n * @category constructors\n * @since 2.3.7\n */\nexport const indexReadonlyArray = _.indexReadonlyArray;\n/**\n * @category constructors\n * @since 2.3.8\n */\nexport const indexReadonlyNonEmptyArray = _.indexReadonlyNonEmptyArray;\n/**\n * @category constructors\n * @since 2.3.7\n */\nexport const indexReadonlyRecord = _.indexReadonlyRecord;\n/**\n * @category constructors\n * @since 2.3.7\n */\nexport const indexReadonlyMap = (E) => {\n    const lookupE = RM.lookup(E);\n    const insertAtE = RM.insertAt(E);\n    return () => index((key) => _.optional((s) => lookupE(key, s), (next) => {\n        const insert = insertAtE(key, next);\n        return (s) => pipe(lookupE(key, s), O.fold(() => s, (prev) => (next === prev ? s : insert(s))));\n    }));\n};\n// -------------------------------------------------------------------------------------\n// deprecated\n// -------------------------------------------------------------------------------------\n/**\n * Use `indexReadonlyArray` instead.\n *\n * @category constructors\n * @since 2.3.2\n * @deprecated\n */\nexport const indexArray = _.indexReadonlyArray;\n/**\n * Use `indexReadonlyRecord` instead.\n *\n * @category constructors\n * @since 2.3.2\n * @deprecated\n */\nexport const indexRecord = _.indexReadonlyRecord;\n","import { flow } from 'fp-ts-esm/function';\nimport { pipe } from 'fp-ts-esm/pipeable';\nimport * as _ from './internal.js';\n// -------------------------------------------------------------------------------------\n// constructors\n// -------------------------------------------------------------------------------------\n/**\n * @category constructors\n * @since 2.3.8\n */\nexport const lens = _.lens;\n/**\n * @category constructors\n * @since 2.3.0\n */\nexport const id = _.lensId;\n// -------------------------------------------------------------------------------------\n// converters\n// -------------------------------------------------------------------------------------\n/**\n * View a `Lens` as a `Optional`.\n *\n * @category converters\n * @since 2.3.0\n */\nexport const asOptional = _.lensAsOptional;\n/**\n * View a `Lens` as a `Traversal`.\n *\n * @category converters\n * @since 2.3.0\n */\nexport const asTraversal = _.lensAsTraversal;\n// -------------------------------------------------------------------------------------\n// compositions\n// -------------------------------------------------------------------------------------\n/**\n * Compose a `Lens` with a `Lens`.\n *\n * @category compositions\n * @since 2.3.0\n */\nexport const compose = _.lensComposeLens;\n/**\n * Alias of `compose`.\n *\n * @category compositions\n * @since 2.3.8\n */\nexport const composeLens = compose;\n/**\n * Compose a `Lens` with a `Iso`.\n *\n * @category compositions\n * @since 2.3.8\n */\nexport const composeIso = \n/*#__PURE__*/\nflow(_.isoAsLens, compose);\n/**\n * Compose a `Lens` with a `Prism`.\n *\n * @category compositions\n * @since 2.3.0\n */\nexport const composePrism = _.lensComposePrism;\n/**\n * Compose a `Lens` with an `Optional`.\n *\n * @category compositions\n * @since 2.3.0\n */\nexport const composeOptional = (ab) => flow(asOptional, _.optionalComposeOptional(ab));\n/**\n * Compose a `Lens` with an `Traversal`.\n *\n * @category compositions\n * @since 2.3.8\n */\nexport const composeTraversal = (ab) => flow(asTraversal, _.traversalComposeTraversal(ab));\n// -------------------------------------------------------------------------------------\n// combinators\n// -------------------------------------------------------------------------------------\n/**\n * @category combinators\n * @since 2.3.0\n */\nexport const modify = (f) => (sa) => (s) => {\n    const o = sa.get(s);\n    const n = f(o);\n    return o === n ? s : sa.set(n)(s);\n};\nexport function modifyF(F) {\n    // @ts-expect-error\n    return (f) => (sa) => (s) => pipe(sa.get(s), f, (fa) => F.map(fa, (a) => sa.set(a)(s)));\n}\n/**\n * Return a `Optional` from a `Lens` focused on a nullable value.\n *\n * @category combinators\n * @since 2.3.0\n */\nexport const fromNullable = (sa) => composePrism(_.prismFromNullable())(sa);\nexport function filter(predicate) {\n    return composePrism(_.prismFromPredicate(predicate));\n}\n/**\n * Return a `Lens` from a `Lens` and a prop.\n *\n * @category combinators\n * @since 2.3.0\n */\nexport const prop = _.lensProp;\n/**\n * Return a `Lens` from a `Lens` and a list of props.\n *\n * @category combinators\n * @since 2.3.0\n */\nexport const props = _.lensProps;\n/**\n * Return a `Lens` from a `Lens` focused on a component of a tuple.\n *\n * @category combinators\n * @since 2.3.0\n */\nexport const component = _.lensComponent;\n/**\n * Return a `Optional` from a `Lens` focused on an index of a `ReadonlyArray`.\n *\n * @category combinators\n * @since 2.3.0\n */\nexport const index = (i) => flow(asOptional, _.optionalIndex(i));\n/**\n * Return a `Optional` from a `Lens` focused on an index of a `ReadonlyNonEmptyArray`.\n *\n * @category combinators\n * @since 2.3.8\n */\nexport const indexNonEmpty = (i) => flow(asOptional, _.optionalIndexNonEmpty(i));\n/**\n * Return a `Optional` from a `Lens` focused on a key of a `ReadonlyRecord`.\n *\n * @category combinators\n * @since 2.3.0\n */\nexport const key = (key) => flow(asOptional, _.optionalKey(key));\n/**\n * Return a `Lens` from a `Lens` focused on a required key of a `ReadonlyRecord`.\n *\n * @category combinators\n * @since 2.3.0\n */\nexport const atKey = _.lensAtKey;\n/**\n * Return a `Optional` from a `Lens` focused on the `Some` of a `Option` type.\n *\n * @category combinators\n * @since 2.3.0\n */\nexport const some = \n/*#__PURE__*/\ncomposePrism(/*#__PURE__*/ _.prismSome());\n/**\n * Return a `Optional` from a `Lens` focused on the `Right` of a `Either` type.\n *\n * @category combinators\n * @since 2.3.0\n */\nexport const right = \n/*#__PURE__*/\ncomposePrism(/*#__PURE__*/ _.prismRight());\n/**\n * Return a `Optional` from a `Lens` focused on the `Left` of a `Either` type.\n *\n * @category combinators\n * @since 2.3.0\n */\nexport const left = \n/*#__PURE__*/\ncomposePrism(/*#__PURE__*/ _.prismLeft());\n/**\n * Return a `Traversal` from a `Lens` focused on a `Traversable`.\n *\n * @category combinators\n * @since 2.3.0\n */\nexport function traverse(T) {\n    return flow(asTraversal, _.traversalTraverse(T));\n}\nexport function findFirst(predicate) {\n    return composeOptional(_.optionalFindFirst(predicate));\n}\nexport function findFirstNonEmpty(predicate) {\n    return composeOptional(_.optionalFindFirstNonEmpty(predicate));\n}\n// -------------------------------------------------------------------------------------\n// pipeables\n// -------------------------------------------------------------------------------------\n/**\n * @category Invariant\n * @since 2.3.0\n */\nexport const imap = (f, g) => (ea) => imap_(ea, f, g);\n// -------------------------------------------------------------------------------------\n// instances\n// -------------------------------------------------------------------------------------\nconst imap_ = (ea, ab, ba) => lens(flow(ea.get, ab), flow(ba, ea.set));\n/**\n * @category instances\n * @since 2.3.0\n */\nexport const URI = 'monocle-ts/Lens';\n/**\n * @category instances\n * @since 2.3.0\n */\nexport const Invariant = {\n    URI,\n    imap: imap_\n};\n/**\n * @category instances\n * @since 2.3.8\n */\nexport const Semigroupoid = {\n    URI,\n    compose: (ab, ea) => compose(ab)(ea)\n};\n/**\n * @category instances\n * @since 2.3.0\n */\nexport const Category = {\n    URI,\n    compose: Semigroupoid.compose,\n    id\n};\n","import { constant, flow } from 'fp-ts-esm/function';\nimport * as O from 'fp-ts-esm/Option';\nimport { pipe } from 'fp-ts-esm/pipeable';\nimport * as _ from './internal.js';\n// -------------------------------------------------------------------------------------\n// constructors\n// -------------------------------------------------------------------------------------\n/**\n * @category constructors\n * @since 2.3.8\n */\nexport const optional = _.optional;\n/**\n * @category constructors\n * @since 2.3.0\n */\nexport const id = () => optional(O.some, constant);\n// -------------------------------------------------------------------------------------\n// converters\n// -------------------------------------------------------------------------------------\n/**\n * View a `Optional` as a `Traversal`.\n *\n * @category converters\n * @since 2.3.0\n */\nexport const asTraversal = _.optionalAsTraversal;\n// -------------------------------------------------------------------------------------\n// compositions\n// -------------------------------------------------------------------------------------\n/**\n * Compose a `Optional` with a `Optional`.\n *\n * @category compositions\n * @since 2.3.0\n */\nexport const compose = _.optionalComposeOptional;\n/**\n * Alias of `compose`.\n *\n * @category compositions\n * @since 2.3.8\n */\nexport const composeOptional = compose;\n/**\n * Compose a `Optional` with a `Iso`.\n *\n * @category compositions\n * @since 2.3.8\n */\nexport const composeIso = \n/*#__PURE__*/\nflow(_.isoAsOptional, compose);\n/**\n * Compose a `Optional` with a `Lens`.\n *\n * @category compositions\n * @since 2.3.7\n */\nexport const composeLens = \n/*#__PURE__*/\nflow(_.lensAsOptional, _.optionalComposeOptional);\n/**\n * Compose a `Optional` with a `Prism`.\n *\n * @category compositions\n * @since 2.3.7\n */\nexport const composePrism = \n/*#__PURE__*/\nflow(_.prismAsOptional, _.optionalComposeOptional);\n/**\n * Compose a `Optional` with an `Traversal`.\n *\n * @category compositions\n * @since 2.3.8\n */\nexport const composeTraversal = (ab) => flow(asTraversal, _.traversalComposeTraversal(ab));\n// -------------------------------------------------------------------------------------\n// combinators\n// -------------------------------------------------------------------------------------\n/**\n * @category combinators\n * @since 2.3.0\n */\nexport const modifyOption = _.optionalModifyOption;\n/**\n * @category combinators\n * @since 2.3.7\n */\nexport const setOption = (a) => modifyOption(() => a);\n/**\n * @category combinators\n * @since 2.3.0\n */\nexport const modify = _.optionalModify;\nexport function modifyF(F) {\n    return (f) => (sa) => (s) => pipe(sa.getOption(s), O.fold(() => F.of(s), \n    // @ts-expect-error\n    (a) => F.map(f(a), (a) => sa.set(a)(s))));\n}\n/**\n * Return an `Optional` from a `Optional` focused on a nullable value.\n *\n * @category combinators\n * @since 2.3.3\n */\nexport const fromNullable = \n/*#__PURE__*/\ncompose(/*#__PURE__*/ _.prismAsOptional(/*#__PURE__*/ _.prismFromNullable()));\nexport function filter(predicate) {\n    return compose(_.prismAsOptional(_.prismFromPredicate(predicate)));\n}\n/**\n * Return a `Optional` from a `Optional` and a prop.\n *\n * @category combinators\n * @since 2.3.0\n */\nexport const prop = (prop) => compose(pipe(_.lensId(), _.lensProp(prop), _.lensAsOptional));\n/**\n * Return a `Optional` from a `Optional` and a list of props.\n *\n * @category combinators\n * @since 2.3.0\n */\nexport const props = (...props) => compose(pipe(_.lensId(), _.lensProps(...props), _.lensAsOptional));\n/**\n * Return a `Optional` from a `Optional` focused on a component of a tuple.\n *\n * @category combinators\n * @since 2.3.0\n */\nexport const component = (prop) => compose(pipe(_.lensId(), _.lensComponent(prop), _.lensAsOptional));\n/**\n * Return a `Optional` from a `Optional` focused on an index of a `ReadonlyArray`.\n *\n * @category combinators\n * @since 2.3.0\n */\nexport const index = _.optionalIndex;\n/**\n * Return a `Optional` from a `Optional` focused on an index of a `ReadonlyNonEmptyArray`.\n *\n * @category combinators\n * @since 2.3.8\n */\nexport const indexNonEmpty = _.optionalIndexNonEmpty;\n/**\n * Return a `Optional` from a `Optional` focused on a key of a `ReadonlyRecord`.\n *\n * @category combinators\n * @since 2.3.0\n */\nexport const key = _.optionalKey;\n/**\n * Return a `Optional` from a `Optional` focused on a required key of a `ReadonlyRecord`.\n *\n * @category combinators\n * @since 2.3.0\n */\nexport const atKey = (key) => (sa) => pipe(sa, compose(_.lensAsOptional(_.atReadonlyRecord().at(key))));\n/**\n * Return a `Optional` from a `Optional` focused on the `Some` of a `Option` type.\n *\n * @category combinators\n * @since 2.3.0\n */\nexport const some = \n/*#__PURE__*/\ncompose(/*#__PURE__*/ _.prismAsOptional(/*#__PURE__*/ _.prismSome()));\n/**\n * Return a `Optional` from a `Optional` focused on the `Right` of a `Either` type.\n *\n * @category combinators\n * @since 2.3.0\n */\nexport const right = \n/*#__PURE__*/\ncompose(/*#__PURE__*/ _.prismAsOptional(/*#__PURE__*/ _.prismRight()));\n/**\n * Return a `Optional` from a `Optional` focused on the `Left` of a `Either` type.\n *\n * @category combinators\n * @since 2.3.0\n */\nexport const left = \n/*#__PURE__*/\ncompose(/*#__PURE__*/ _.prismAsOptional(/*#__PURE__*/ _.prismLeft()));\n/**\n * Return a `Traversal` from a `Optional` focused on a `Traversable`.\n *\n * @category combinators\n * @since 2.3.0\n */\nexport function traverse(T) {\n    return flow(asTraversal, _.traversalTraverse(T));\n}\nexport function findFirst(predicate) {\n    return compose(_.optionalFindFirst(predicate));\n}\nexport function findFirstNonEmpty(predicate) {\n    return compose(_.optionalFindFirstNonEmpty(predicate));\n}\n// -------------------------------------------------------------------------------------\n// pipeables\n// -------------------------------------------------------------------------------------\n/**\n * @category Invariant\n * @since 2.3.0\n */\nexport const imap = (f, g) => (ea) => imap_(ea, f, g);\n// -------------------------------------------------------------------------------------\n// instances\n// -------------------------------------------------------------------------------------\nconst imap_ = (ea, ab, ba) => optional(flow(ea.getOption, O.map(ab)), flow(ba, ea.set));\n/**\n * @category instances\n * @since 2.3.0\n */\nexport const URI = 'monocle-ts/Optional';\n/**\n * @category instances\n * @since 2.3.0\n */\nexport const Invariant = {\n    URI,\n    imap: imap_\n};\n/**\n * @category instances\n * @since 2.3.8\n */\nexport const Semigroupoid = {\n    URI,\n    compose: (ab, ea) => compose(ab)(ea)\n};\n/**\n * @category instances\n * @since 2.3.0\n */\nexport const Category = {\n    URI,\n    compose: Semigroupoid.compose,\n    id\n};\n","import { flow, identity } from 'fp-ts-esm/function';\nimport * as O from 'fp-ts-esm/Option';\nimport { pipe } from 'fp-ts-esm/pipeable';\nimport * as _ from './internal.js';\n// -------------------------------------------------------------------------------------\n// constructors\n// -------------------------------------------------------------------------------------\n/**\n * @category constructors\n * @since 2.3.8\n */\nexport const prism = _.prism;\n/**\n * @category constructors\n * @since 2.3.0\n */\nexport const id = () => prism(O.some, identity);\n/**\n * @category constructors\n * @since 2.3.0\n */\nexport const fromPredicate = _.prismFromPredicate;\n// -------------------------------------------------------------------------------------\n// converters\n// -------------------------------------------------------------------------------------\n/**\n * View a `Prism` as a `Optional`.\n *\n * @category converters\n * @since 2.3.0\n */\nexport const asOptional = _.prismAsOptional;\n/**\n * View a `Prism` as a `Traversal`.\n *\n * @category converters\n * @since 2.3.0\n */\nexport const asTraversal = _.prismAsTraversal;\n// -------------------------------------------------------------------------------------\n// compositions\n// -------------------------------------------------------------------------------------\n/**\n * Compose a `Prism` with a `Prism`.\n *\n * @category compositions\n * @since 2.3.0\n */\nexport const compose = _.prismComposePrism;\n/**\n * Alias of `compose`.\n *\n * @category compositions\n * @since 2.3.8\n */\nexport const composePrism = compose;\n/**\n * Compose a `Prism` with a `Iso`.\n *\n * @category compositions\n * @since 2.3.8\n */\nexport const composeIso = \n/*#__PURE__*/\nflow(_.isoAsPrism, compose);\n/**\n * Compose a `Prism` with a `Lens`.\n *\n * @category compositions\n * @since 2.3.0\n */\nexport const composeLens = _.prismComposeLens;\n/**\n * Compose a `Prism` with an `Optional`.\n *\n * @category compositions\n * @since 2.3.0\n */\nexport const composeOptional = (ab) => flow(asOptional, _.optionalComposeOptional(ab));\n/**\n * Compose a `Prism` with an `Traversal`.\n *\n * @category compositions\n * @since 2.3.8\n */\nexport const composeTraversal = (ab) => flow(asTraversal, _.traversalComposeTraversal(ab));\n// -------------------------------------------------------------------------------------\n// combinators\n// -------------------------------------------------------------------------------------\n/**\n * @category combinators\n * @since 2.3.0\n */\nexport const set = _.prismSet;\n/**\n * @category combinators\n * @since 2.3.0\n */\nexport const modifyOption = _.prismModifyOption;\n/**\n * @category combinators\n * @since 2.3.0\n */\nexport const modify = _.prismModify;\nexport function modifyF(F) {\n    return (f) => (sa) => (s) => pipe(sa.getOption(s), O.fold(() => F.of(s), (a) => F.map(f(a), sa.reverseGet)));\n}\n/**\n * Return a `Prism` from a `Prism` focused on a nullable value.\n *\n * @category combinators\n * @since 2.3.3\n */\nexport const fromNullable = \n/*#__PURE__*/\ncompose(/*#__PURE__*/ _.prismFromNullable());\nexport function filter(predicate) {\n    return compose(_.prismFromPredicate(predicate));\n}\n/**\n * Return a `Optional` from a `Prism` and a prop.\n *\n * @category combinators\n * @since 2.3.0\n */\nexport const prop = (prop) => composeLens(pipe(_.lensId(), _.lensProp(prop))); // TODO: simplify?\n/**\n * Return a `Optional` from a `Prism` and a list of props.\n *\n * @category combinators\n * @since 2.3.0\n */\nexport const props = (...props) => composeLens(pipe(_.lensId(), _.lensProps(...props)));\n/**\n * Return a `Optional` from a `Prism` focused on a component of a tuple.\n *\n * @category combinators\n * @since 2.3.0\n */\nexport const component = (prop) => composeLens(pipe(_.lensId(), _.lensComponent(prop)));\n/**\n * Return a `Optional` from a `Prism` focused on an index of a `ReadonlyArray`.\n *\n * @category combinators\n * @since 2.3.0\n */\nexport const index = (i) => flow(asOptional, _.optionalIndex(i));\n/**\n * Return a `Optional` from a `Prism` focused on an index of a `ReadonlyNonEmptyArray`.\n *\n * @category combinators\n * @since 2.3.8\n */\nexport const indexNonEmpty = (i) => flow(asOptional, _.optionalIndexNonEmpty(i));\n/**\n * Return a `Optional` from a `Prism` focused on a key of a `ReadonlyRecord`.\n *\n * @category combinators\n * @since 2.3.0\n */\nexport const key = (key) => flow(asOptional, _.optionalKey(key));\n/**\n * Return a `Optional` from a `Prism` focused on a required key of a `ReadonlyRecord`.\n *\n * @category combinators\n * @since 2.3.0\n */\nexport const atKey = (key) => (sa) => _.prismComposeLens(_.atReadonlyRecord().at(key))(sa);\n/**\n * Return a `Prism` from a `Prism` focused on the `Some` of a `Option` type.\n *\n * @category combinators\n * @since 2.3.0\n */\nexport const some = \n/*#__PURE__*/\ncompose(/*#__PURE__*/ _.prismSome());\n/**\n * Return a `Prism` from a `Prism` focused on the `Right` of a `Either` type.\n *\n * @category combinators\n * @since 2.3.0\n */\nexport const right = \n/*#__PURE__*/\ncompose(/*#__PURE__*/ _.prismRight());\n/**\n * Return a `Prism` from a `Prism` focused on the `Left` of a `Either` type.\n *\n * @category combinators\n * @since 2.3.0\n */\nexport const left = \n/*#__PURE__*/\ncompose(/*#__PURE__*/ _.prismLeft());\n/**\n * Return a `Traversal` from a `Prism` focused on a `Traversable`.\n *\n * @category combinators\n * @since 2.3.0\n */\nexport function traverse(T) {\n    return flow(asTraversal, _.traversalTraverse(T));\n}\nexport function findFirst(predicate) {\n    return composeOptional(_.optionalFindFirst(predicate));\n}\nexport function findFirstNonEmpty(predicate) {\n    return composeOptional(_.optionalFindFirstNonEmpty(predicate));\n}\n// -------------------------------------------------------------------------------------\n// pipeables\n// -------------------------------------------------------------------------------------\n/**\n * @category Invariant\n * @since 2.3.0\n */\nexport const imap = (f, g) => (ea) => imap_(ea, f, g);\n// -------------------------------------------------------------------------------------\n// instances\n// -------------------------------------------------------------------------------------\nconst imap_ = (ea, ab, ba) => prism(flow(ea.getOption, O.map(ab)), flow(ba, ea.reverseGet));\n/**\n * @category instances\n * @since 2.3.0\n */\nexport const URI = 'monocle-ts/Prism';\n/**\n * @category instances\n * @since 2.3.0\n */\nexport const Invariant = {\n    URI,\n    imap: imap_\n};\n/**\n * @category instances\n * @since 2.3.8\n */\nexport const Semigroupoid = {\n    URI,\n    compose: (ab, ea) => compose(ab)(ea)\n};\n/**\n * @category instances\n * @since 2.3.0\n */\nexport const Category = {\n    URI,\n    compose: Semigroupoid.compose,\n    id\n};\n","import * as C from 'fp-ts-esm/Const';\nimport { flow, identity } from 'fp-ts-esm/function';\nimport { pipe } from 'fp-ts-esm/pipeable';\nimport * as RA from 'fp-ts-esm/ReadonlyArray';\nimport * as _ from './internal.js';\n// -------------------------------------------------------------------------------------\n// constructors\n// -------------------------------------------------------------------------------------\n/**\n * @category constructors\n * @since 2.3.8\n */\nexport const traversal = _.traversal;\n/**\n * @category constructors\n * @since 2.3.0\n */\nexport const id = () => traversal((_) => (f) => f);\n/**\n * Create a `Traversal` from a `Traversable`.\n *\n * @category constructor\n * @since 2.3.0\n */\nexport const fromTraversable = _.fromTraversable;\n// -------------------------------------------------------------------------------------\n// compositions\n// -------------------------------------------------------------------------------------\n/**\n * Compose a `Traversal` with a `Traversal`.\n *\n * @category compositions\n * @since 2.3.0\n */\nexport const compose = _.traversalComposeTraversal;\n/**\n * Alias of `compose`.\n *\n * @category compositions\n * @since 2.3.8\n */\nexport const composeTraversal = compose;\n/**\n * Compose a `Traversal` with a `Iso`.\n *\n * @category compositions\n * @since 2.3.8\n */\nexport const composeIso = \n/*#__PURE__*/\nflow(_.isoAsTraversal, compose);\n/**\n * Compose a `Traversal` with a `Lens`.\n *\n * @category compositions\n * @since 2.3.8\n */\nexport const composeLens = \n/*#__PURE__*/\nflow(_.lensAsTraversal, _.traversalComposeTraversal);\n/**\n * Compose a `Traversal` with a `Prism`.\n *\n * @category compositions\n * @since 2.3.8\n */\nexport const composePrism = \n/*#__PURE__*/\nflow(_.prismAsTraversal, _.traversalComposeTraversal);\n/**\n * Compose a `Traversal` with a `Optional`.\n *\n * @category compositions\n * @since 2.3.8\n */\nexport const composeOptional = \n/*#__PURE__*/\nflow(_.optionalAsTraversal, _.traversalComposeTraversal);\n// -------------------------------------------------------------------------------------\n// combinators\n// -------------------------------------------------------------------------------------\n/**\n * @category combinators\n * @since 2.3.0\n */\nexport const modify = (f) => (sa) => sa.modifyF(_.ApplicativeIdentity)(f);\n/**\n * @category combinators\n * @since 2.3.0\n */\nexport const set = (a) => modify(() => a);\n/**\n * Return a `Traversal` from a `Traversal` focused on a nullable value.\n *\n * @category combinators\n * @since 2.3.0\n */\nexport const fromNullable = (sa) => composePrism(_.prismFromNullable())(sa);\nexport function filter(predicate) {\n    return compose(_.prismAsTraversal(_.prismFromPredicate(predicate)));\n}\n/**\n * Return a `Traversal` from a `Traversal` and a prop.\n *\n * @category combinators\n * @since 2.3.0\n */\nexport const prop = (prop) => compose(pipe(_.lensId(), _.lensProp(prop), _.lensAsTraversal));\n/**\n * Return a `Traversal` from a `Traversal` and a list of props.\n *\n * @category combinators\n * @since 2.3.0\n */\nexport const props = (...props) => compose(pipe(_.lensId(), _.lensProps(...props), _.lensAsTraversal));\n/**\n * Return a `Traversal` from a `Traversal` focused on a component of a tuple.\n *\n * @category combinators\n * @since 2.3.0\n */\nexport const component = (prop) => compose(pipe(_.lensId(), _.lensComponent(prop), _.lensAsTraversal));\n/**\n * Return a `Traversal` from a `Traversal` focused on an index of a `ReadonlyArray`.\n *\n * @category combinators\n * @since 2.3.0\n */\nexport const index = (i) => (sa) => pipe(sa, compose(_.optionalAsTraversal(_.indexReadonlyArray().index(i))));\n/**\n * @category combinators\n * @since 2.3.8\n */\nexport const indexNonEmpty = (i) => (sa) => pipe(sa, compose(_.optionalAsTraversal(_.indexReadonlyNonEmptyArray().index(i))));\n/**\n * Return a `Traversal` from a `Traversal` focused on a key of a `ReadonlyRecord`.\n *\n * @category combinators\n * @since 2.3.0\n */\nexport const key = (key) => (sa) => pipe(sa, compose(_.optionalAsTraversal(_.indexReadonlyRecord().index(key))));\n/**\n * Return a `Traversal` from a `Traversal` focused on a required key of a `ReadonlyRecord`.\n *\n * @category combinators\n * @since 2.3.0\n */\nexport const atKey = (key) => (sa) => pipe(sa, compose(_.lensAsTraversal(_.atReadonlyRecord().at(key))));\n/**\n * Return a `Traversal` from a `Traversal` focused on the `Some` of a `Option` type.\n *\n * @category combinators\n * @since 2.3.0\n */\nexport const some = \n/*#__PURE__*/\ncompose(/*#__PURE__*/ _.prismAsTraversal(/*#__PURE__*/ _.prismSome()));\n/**\n * Return a `Traversal` from a `Traversal` focused on the `Right` of a `Either` type.\n *\n * @category combinators\n * @since 2.3.0\n */\nexport const right = \n/*#__PURE__*/\ncompose(/*#__PURE__*/ _.prismAsTraversal(/*#__PURE__*/ _.prismRight()));\n/**\n * Return a `Traversal` from a `Traversal` focused on the `Left` of a `Either` type.\n *\n * @category combinators\n * @since 2.3.0\n */\nexport const left = \n/*#__PURE__*/\ncompose(/*#__PURE__*/ _.prismAsTraversal(/*#__PURE__*/ _.prismLeft()));\n/**\n * Return a `Traversal` from a `Traversal` focused on a `Traversable`.\n *\n * @category combinators\n * @since 2.3.0\n */\nexport const traverse = _.traversalTraverse;\nexport function findFirst(predicate) {\n    return composeOptional(_.optionalFindFirst(predicate));\n}\nexport function findFirstNonEmpty(predicate) {\n    return composeOptional(_.optionalFindFirstNonEmpty(predicate));\n}\n/**\n * Map each target to a `Monoid` and combine the results.\n *\n * @category combinators\n * @since 2.3.0\n */\nexport const foldMap = (M) => (f) => (sa) => sa.modifyF(C.getApplicative(M))((a) => C.make(f(a)));\n/**\n * Map each target to a `Monoid` and combine the results.\n *\n * @category combinators\n * @since 2.3.0\n */\nexport const fold = (M) => foldMap(M)(identity);\n/**\n * Get all the targets of a `Traversal`.\n *\n * @category combinators\n * @since 2.3.0\n */\nexport const getAll = (s) => (sa) => foldMap(RA.getMonoid())(RA.of)(sa)(s);\n// -------------------------------------------------------------------------------------\n// instances\n// -------------------------------------------------------------------------------------\n/**\n * @category instances\n * @since 2.3.0\n */\nexport const URI = 'monocle-ts/Traversal';\n/**\n * @category instances\n * @since 2.3.8\n */\nexport const Semigroupoid = {\n    URI,\n    compose: (ab, ea) => compose(ab)(ea)\n};\n/**\n * @category instances\n * @since 2.3.0\n */\nexport const Category = {\n    URI,\n    compose: Semigroupoid.compose,\n    id\n};\n","/**\n * @since 1.0.0\n */\nimport * as A from 'fp-ts-esm/Array';\nimport { getApplicative, make } from 'fp-ts-esm/Const';\nimport { constant, identity } from 'fp-ts-esm/function';\nimport { monoidAll, monoidAny } from 'fp-ts-esm/Monoid';\nimport { fromNullable, fromPredicate, getFirstMonoid, isNone, option, some } from 'fp-ts-esm/Option';\nimport { pipe } from 'fp-ts-esm/pipeable';\nimport * as at from './At.js';\nimport * as iso from './Iso.js';\nimport * as index from './Ix.js';\nimport * as lens from './Lens.js';\nimport * as optional from './Optional.js';\nimport * as prism from './Prism.js';\nimport * as traversal from './Traversal.js';\nexport { \n/**\n * @since 2.3.0\n */\nat, \n/**\n * @since 2.3.0\n */\niso, \n/**\n * @since 2.3.0\n */\nindex, \n/**\n * @since 2.3.0\n */\nlens, \n/**\n * @since 2.3.0\n */\nprism, \n/**\n * @since 2.3.0\n */\noptional, \n/**\n * @since 2.3.0\n */\ntraversal };\n//\n// compat\n//\nconst fromIso = (iso) => new Iso(iso.get, iso.reverseGet);\nconst fromLens = (lens) => new Lens(lens.get, lens.set);\nconst fromPrism = (prism) => new Prism(prism.getOption, prism.reverseGet);\nconst fromOptional = (optional) => new Optional(optional.getOption, optional.set);\nconst fromTraversal = (traversal) => new Traversal(traversal.modifyF);\nconst fromAt = (at) => new At((i) => fromLens(at.at(i)));\nconst fromIndex = (ix) => new Index((i) => fromOptional(ix.index(i)));\n//\n// old APIs\n//\nconst update = (o, k, a) => {\n    return a === o[k] ? o : Object.assign({}, o, { [k]: a });\n};\n/**\n * Laws:\n * 1. `reverseGet(get(s)) = s`\n * 2. `get(reversetGet(a)) = a`\n *\n * @category constructor\n * @since 1.0.0\n */\nexport class Iso {\n    constructor(get, reverseGet) {\n        this.get = get;\n        this.reverseGet = reverseGet;\n        /**\n         * @since 1.0.0\n         */\n        this._tag = 'Iso';\n        /**\n         * @since 1.0.0\n         */\n        this.unwrap = this.get;\n        /**\n         * @since 1.0.0\n         */\n        this.to = this.get;\n        /**\n         * @since 1.0.0\n         */\n        this.wrap = this.reverseGet;\n        /**\n         * @since 1.0.0\n         */\n        this.from = this.reverseGet;\n    }\n    /**\n     * reverse the `Iso`: the source becomes the target and the target becomes the source\n     * @since 1.0.0\n     */\n    reverse() {\n        return fromIso(iso.reverse(this));\n    }\n    /**\n     * @since 1.0.0\n     */\n    modify(f) {\n        return iso.modify(f)(this);\n    }\n    /**\n     * view an `Iso` as a `Lens`\n     *\n     * @since 1.0.0\n     */\n    asLens() {\n        return fromLens(iso.asLens(this));\n    }\n    /**\n     * view an `Iso` as a `Prism`\n     *\n     * @since 1.0.0\n     */\n    asPrism() {\n        return fromPrism(iso.asPrism(this));\n    }\n    /**\n     * view an `Iso` as a `Optional`\n     *\n     * @since 1.0.0\n     */\n    asOptional() {\n        return fromOptional(iso.asOptional(this));\n    }\n    /**\n     * view an `Iso` as a `Traversal`\n     *\n     * @since 1.0.0\n     */\n    asTraversal() {\n        return fromTraversal(iso.asTraversal(this));\n    }\n    /**\n     * view an `Iso` as a `Fold`\n     *\n     * @since 1.0.0\n     */\n    asFold() {\n        return new Fold(() => (f) => (s) => f(this.get(s)));\n    }\n    /**\n     * view an `Iso` as a `Getter`\n     *\n     * @since 1.0.0\n     */\n    asGetter() {\n        return new Getter((s) => this.get(s));\n    }\n    /**\n     * view an `Iso` as a `Setter`\n     *\n     * @since 1.0.0\n     */\n    asSetter() {\n        return new Setter((f) => this.modify(f));\n    }\n    /**\n     * compose an `Iso` with an `Iso`\n     *\n     * @since 1.0.0\n     */\n    compose(ab) {\n        return fromIso(iso.compose(ab)(this));\n    }\n    /**\n     * Alias of `compose`\n     *\n     * @since 1.0.0\n     */\n    composeIso(ab) {\n        return this.compose(ab);\n    }\n    /**\n     * compose an `Iso` with a `Lens `\n     *\n     * @since 1.0.0\n     */\n    composeLens(ab) {\n        return fromLens(pipe(this, iso.asLens, lens.compose(ab)));\n    }\n    /**\n     * compose an `Iso` with a `Prism`\n     *\n     * @since 1.0.0\n     */\n    composePrism(ab) {\n        return fromPrism(pipe(this, iso.asPrism, prism.compose(ab)));\n    }\n    /**\n     * compose an `Iso` with an `Optional`\n     *\n     * @since 1.0.0\n     */\n    composeOptional(ab) {\n        return fromOptional(pipe(this, iso.asOptional, optional.compose(ab)));\n    }\n    /**\n     * compose an `Iso` with a `Traversal`\n     *\n     * @since 1.0.0\n     */\n    composeTraversal(ab) {\n        return fromTraversal(pipe(this, iso.asTraversal, traversal.compose(ab)));\n    }\n    /**\n     * compose an `Iso` with a `Fold`\n     *\n     * @since 1.0.0\n     */\n    composeFold(ab) {\n        return this.asFold().compose(ab);\n    }\n    /**\n     * compose an `Iso` with a `Getter`\n     *\n     * @since 1.0.0\n     */\n    composeGetter(ab) {\n        return this.asGetter().compose(ab);\n    }\n    /**\n     * compose an `Iso` with a `Setter`\n     *\n     * @since 1.0.0\n     */\n    composeSetter(ab) {\n        return this.asSetter().compose(ab);\n    }\n}\n/**\n * Laws:\n * 1. `get(set(a)(s)) = a`\n * 2. `set(get(s))(s) = s`\n * 3. `set(a)(set(a)(s)) = set(a)(s)`\n *\n * @category constructor\n * @since 1.0.0\n */\nexport class Lens {\n    constructor(get, set) {\n        this.get = get;\n        this.set = set;\n        /**\n         * @since 1.0.0\n         */\n        this._tag = 'Lens';\n    }\n    /**\n     * @example\n     * import { Lens } from 'monocle-ts'\n     *\n     * type Person = {\n     *   name: string\n     *   age: number\n     *   address: {\n     *     city: string\n     *   }\n     * }\n     *\n     * const city = Lens.fromPath<Person>()(['address', 'city'])\n     *\n     * const person: Person = { name: 'Giulio', age: 43, address: { city: 'Milan' } }\n     *\n     * assert.strictEqual(city.get(person), 'Milan')\n     * assert.deepStrictEqual(city.set('London')(person), { name: 'Giulio', age: 43, address: { city: 'London' } })\n     *\n     * @since 1.0.0\n     */\n    static fromPath() {\n        const fromProp = Lens.fromProp();\n        return (path) => {\n            const lens = fromProp(path[0]);\n            return path.slice(1).reduce((acc, prop) => acc.compose(fromProp(prop)), lens);\n        };\n    }\n    /**\n     * Returns a `Lens` from a type and a prop\n     *\n     * @example\n     * import { Lens } from 'monocle-ts'\n     *\n     * type Person = {\n     *   name: string\n     *   age: number\n     * }\n     *\n     * const age = Lens.fromProp<Person>()('age')\n     *\n     * const person: Person = { name: 'Giulio', age: 43 }\n     *\n     * assert.strictEqual(age.get(person), 43)\n     * assert.deepStrictEqual(age.set(44)(person), { name: 'Giulio', age: 44 })\n     *\n     * @since 1.0.0\n     */\n    static fromProp() {\n        return (prop) => fromLens(pipe(lens.id(), lens.prop(prop)));\n    }\n    static fromProps() {\n        return (props) => fromLens(pipe(lens.id(), lens.props(...props)));\n    }\n    /**\n     * Returns a `Lens` from a nullable (`A | null | undefined`) prop\n     *\n     * @example\n     * import { Lens } from 'monocle-ts'\n     *\n     * interface Outer {\n     *   inner?: Inner\n     * }\n     *\n     * interface Inner {\n     *   value: number\n     *   foo: string\n     * }\n     *\n     * const inner = Lens.fromNullableProp<Outer>()('inner', { value: 0, foo: 'foo' })\n     * const value = Lens.fromProp<Inner>()('value')\n     * const lens = inner.compose(value)\n     *\n     * assert.deepStrictEqual(lens.set(1)({}), { inner: { value: 1, foo: 'foo' } })\n     * assert.strictEqual(lens.get({}), 0)\n     * assert.deepStrictEqual(lens.set(1)({ inner: { value: 1, foo: 'bar' } }), { inner: { value: 1, foo: 'bar' } })\n     * assert.strictEqual(lens.get({ inner: { value: 1, foo: 'bar' } }), 1)\n     *\n     * @since 1.0.0\n     */\n    static fromNullableProp() {\n        return (k, defaultValue) => new Lens((s) => {\n            const osk = fromNullable(s[k]);\n            if (isNone(osk)) {\n                return defaultValue;\n            }\n            else {\n                return osk.value;\n            }\n        }, (a) => (s) => update(s, k, a));\n    }\n    /**\n     * @since 1.0.0\n     */\n    modify(f) {\n        return lens.modify(f)(this);\n    }\n    /**\n     * view a `Lens` as a Optional\n     *\n     * @since 1.0.0\n     */\n    asOptional() {\n        return fromOptional(lens.asOptional(this));\n    }\n    /**\n     * view a `Lens` as a `Traversal`\n     *\n     * @since 1.0.0\n     */\n    asTraversal() {\n        return fromTraversal(lens.asTraversal(this));\n    }\n    /**\n     * view a `Lens` as a `Setter`\n     *\n     * @since 1.0.0\n     */\n    asSetter() {\n        return new Setter((f) => this.modify(f));\n    }\n    /**\n     * view a `Lens` as a `Getter`\n     *\n     * @since 1.0.0\n     */\n    asGetter() {\n        return new Getter((s) => this.get(s));\n    }\n    /**\n     * view a `Lens` as a `Fold`\n     *\n     * @since 1.0.0\n     */\n    asFold() {\n        return new Fold(() => (f) => (s) => f(this.get(s)));\n    }\n    /**\n     * compose a `Lens` with a `Lens`\n     *\n     * @since 1.0.0\n     */\n    compose(ab) {\n        return fromLens(lens.compose(ab)(this));\n    }\n    /**\n     * Alias of `compose`\n     *\n     * @since 1.0.0\n     */\n    composeLens(ab) {\n        return this.compose(ab);\n    }\n    /**\n     * compose a `Lens` with a `Getter`\n     *\n     * @since 1.0.0\n     */\n    composeGetter(ab) {\n        return this.asGetter().compose(ab);\n    }\n    /**\n     * compose a `Lens` with a `Fold`\n     *\n     * @since 1.0.0\n     */\n    composeFold(ab) {\n        return this.asFold().compose(ab);\n    }\n    /**\n     * compose a `Lens` with an `Optional`\n     *\n     * @since 1.0.0\n     */\n    composeOptional(ab) {\n        return fromOptional(pipe(this, lens.asOptional, optional.compose(ab)));\n    }\n    /**\n     * compose a `Lens` with an `Traversal`\n     *\n     * @since 1.0.0\n     */\n    composeTraversal(ab) {\n        return fromTraversal(pipe(this, lens.asTraversal, traversal.compose(ab)));\n    }\n    /**\n     * compose a `Lens` with an `Setter`\n     *\n     * @since 1.0.0\n     */\n    composeSetter(ab) {\n        return this.asSetter().compose(ab);\n    }\n    /**\n     * compose a `Lens` with an `Iso`\n     *\n     * @since 1.0.0\n     */\n    composeIso(ab) {\n        return fromLens(pipe(this, lens.compose(pipe(ab, iso.asLens))));\n    }\n    /**\n     * compose a `Lens` with a `Prism`\n     *\n     * @since 1.0.0\n     */\n    composePrism(ab) {\n        return fromOptional(lens.composePrism(ab)(this));\n    }\n}\n/**\n * Laws:\n * 1. `pipe(getOption(s), fold(() => s, reverseGet)) = s`\n * 2. `getOption(reverseGet(a)) = some(a)`\n *\n * @category constructor\n * @since 1.0.0\n */\nexport class Prism {\n    constructor(getOption, reverseGet) {\n        this.getOption = getOption;\n        this.reverseGet = reverseGet;\n        /**\n         * @since 1.0.0\n         */\n        this._tag = 'Prism';\n    }\n    static fromPredicate(predicate) {\n        return fromPrism(prism.fromPredicate(predicate));\n    }\n    /**\n     * @since 1.0.0\n     */\n    static some() {\n        return somePrism;\n    }\n    /**\n     * @since 1.0.0\n     */\n    modify(f) {\n        return (s) => {\n            const os = this.modifyOption(f)(s);\n            if (isNone(os)) {\n                return s;\n            }\n            else {\n                return os.value;\n            }\n        };\n    }\n    /**\n     * @since 1.0.0\n     */\n    modifyOption(f) {\n        return (s) => option.map(this.getOption(s), (v) => {\n            // @ts-expect-error\n            const n = f(v);\n            return n === v ? s : this.reverseGet(n);\n        });\n    }\n    /**\n     * set the target of a `Prism` with a value\n     *\n     * @since 1.0.0\n     */\n    set(a) {\n        return this.modify(() => a);\n    }\n    /**\n     * view a `Prism` as a `Optional`\n     *\n     * @since 1.0.0\n     */\n    asOptional() {\n        return fromOptional(prism.asOptional(this));\n    }\n    /**\n     * view a `Prism` as a `Traversal`\n     *\n     * @since 1.0.0\n     */\n    asTraversal() {\n        return fromTraversal(prism.asTraversal(this));\n    }\n    /**\n     * view a `Prism` as a `Setter`\n     *\n     * @since 1.0.0\n     */\n    asSetter() {\n        return new Setter((f) => this.modify(f));\n    }\n    /**\n     * view a `Prism` as a `Fold`\n     *\n     * @since 1.0.0\n     */\n    asFold() {\n        return new Fold((M) => (f) => (s) => {\n            const oa = this.getOption(s);\n            return isNone(oa) ? M.empty : f(oa.value);\n        });\n    }\n    /**\n     * compose a `Prism` with a `Prism`\n     *\n     * @since 1.0.0\n     */\n    compose(ab) {\n        return fromPrism(prism.compose(ab)(this));\n    }\n    /**\n     * Alias of `compose`\n     *\n     * @since 1.0.0\n     */\n    composePrism(ab) {\n        return this.compose(ab);\n    }\n    /**\n     * compose a `Prism` with a `Optional`\n     *\n     * @since 1.0.0\n     */\n    composeOptional(ab) {\n        return fromOptional(pipe(this, prism.asOptional, optional.compose(ab)));\n    }\n    /**\n     * compose a `Prism` with a `Traversal`\n     *\n     * @since 1.0.0\n     */\n    composeTraversal(ab) {\n        return fromTraversal(pipe(this, prism.asTraversal, traversal.compose(ab)));\n    }\n    /**\n     * compose a `Prism` with a `Fold`\n     *\n     * @since 1.0.0\n     */\n    composeFold(ab) {\n        return this.asFold().compose(ab);\n    }\n    /**\n     * compose a `Prism` with a `Setter`\n     *\n     * @since 1.0.0\n     */\n    composeSetter(ab) {\n        return this.asSetter().compose(ab);\n    }\n    /**\n     * compose a `Prism` with a `Iso`\n     *\n     * @since 1.0.0\n     */\n    composeIso(ab) {\n        return fromPrism(pipe(this, prism.compose(pipe(ab, iso.asPrism))));\n    }\n    /**\n     * compose a `Prism` with a `Lens`\n     *\n     * @since 1.0.0\n     */\n    composeLens(ab) {\n        return fromOptional(prism.composeLens(ab)(this));\n    }\n    /**\n     * compose a `Prism` with a `Getter`\n     *\n     * @since 1.0.0\n     */\n    composeGetter(ab) {\n        return this.asFold().compose(ab.asFold());\n    }\n}\nconst somePrism = \n/*#__PURE__*/\nnew Prism(identity, some);\n/**\n * Laws:\n * 1. `pipe(getOption(s), fold(() => s, a => set(a)(s))) = s`\n * 2. `getOption(set(a)(s)) = pipe(getOption(s), map(_ => a))`\n * 3. `set(a)(set(a)(s)) = set(a)(s)`\n *\n * @category constructor\n * @since 1.0.0\n */\nexport class Optional {\n    constructor(getOption, set) {\n        this.getOption = getOption;\n        this.set = set;\n        /**\n         * @since 1.0.0\n         */\n        this._tag = 'Optional';\n    }\n    /**\n     * Returns an `Optional` from a nullable (`A | null | undefined`) prop\n     *\n     * @example\n     * import { Optional } from 'monocle-ts'\n     *\n     * interface Phone {\n     *   number: string\n     * }\n     * interface Employment {\n     *   phone?: Phone\n     * }\n     * interface Info {\n     *   employment?: Employment\n     * }\n     * interface Response {\n     *   info?: Info\n     * }\n     *\n     * const numberFromResponse = Optional.fromPath<Response>()(['info', 'employment', 'phone', 'number'])\n     *\n     * const response1: Response = {\n     *   info: {\n     *     employment: {\n     *       phone: {\n     *         number: '555-1234'\n     *       }\n     *     }\n     *   }\n     * }\n     * const response2: Response = {\n     *   info: {\n     *     employment: {}\n     *   }\n     * }\n     *\n     * numberFromResponse.getOption(response1) // some('555-1234')\n     * numberFromResponse.getOption(response2) // none\n     *\n     * @since 2.1.0\n     */\n    static fromPath() {\n        const fromNullableProp = Optional.fromNullableProp();\n        return (path) => {\n            const optional = fromNullableProp(path[0]);\n            return path.slice(1).reduce((acc, prop) => acc.compose(fromNullableProp(prop)), optional);\n        };\n    }\n    /**\n     * @example\n     * import { Optional } from 'monocle-ts'\n     *\n     * interface S {\n     *   a: number | undefined | null\n     * }\n     *\n     * const optional = Optional.fromNullableProp<S>()('a')\n     *\n     * const s1: S = { a: undefined }\n     * const s2: S = { a: null }\n     * const s3: S = { a: 1 }\n     *\n     * assert.deepStrictEqual(optional.set(2)(s1), s1)\n     * assert.deepStrictEqual(optional.set(2)(s2), s2)\n     * assert.deepStrictEqual(optional.set(2)(s3), { a: 2 })\n     *\n     * @since 1.0.0\n     */\n    static fromNullableProp() {\n        return (k) => new Optional((s) => fromNullable(s[k]), (a) => (s) => (s[k] == null ? s : update(s, k, a)));\n    }\n    /**\n     * Returns an `Optional` from an option (`Option<A>`) prop\n     *\n     * @example\n     * import { Optional } from 'monocle-ts'\n     * import * as O from 'fp-ts/Option'\n     *\n     * interface S {\n     *   a: O.Option<number>\n     * }\n     *\n     * const optional = Optional.fromOptionProp<S>()('a')\n     * const s1: S = { a: O.none }\n     * const s2: S = { a: O.some(1) }\n     * assert.deepStrictEqual(optional.set(2)(s1), s1)\n     * assert.deepStrictEqual(optional.set(2)(s2), { a: O.some(2) })\n     *\n     * @since 1.0.0\n     */\n    static fromOptionProp() {\n        const formProp = Lens.fromProp();\n        return (prop) => formProp(prop).composePrism(somePrism);\n    }\n    /**\n     * @since 1.0.0\n     */\n    modify(f) {\n        return optional.modify(f)(this);\n    }\n    /**\n     * @since 1.0.0\n     */\n    modifyOption(f) {\n        return optional.modifyOption(f)(this);\n    }\n    /**\n     * view a `Optional` as a `Traversal`\n     *\n     * @since 1.0.0\n     */\n    asTraversal() {\n        return fromTraversal(optional.asTraversal(this));\n    }\n    /**\n     * view an `Optional` as a `Fold`\n     *\n     * @since 1.0.0\n     */\n    asFold() {\n        return new Fold((M) => (f) => (s) => {\n            const oa = this.getOption(s);\n            return isNone(oa) ? M.empty : f(oa.value);\n        });\n    }\n    /**\n     * view an `Optional` as a `Setter`\n     *\n     * @since 1.0.0\n     */\n    asSetter() {\n        return new Setter((f) => this.modify(f));\n    }\n    /**\n     * compose a `Optional` with a `Optional`\n     *\n     * @since 1.0.0\n     */\n    compose(ab) {\n        return fromOptional(optional.compose(ab)(this));\n    }\n    /**\n     * Alias of `compose`\n     *\n     * @since 1.0.0\n     */\n    composeOptional(ab) {\n        return this.compose(ab);\n    }\n    /**\n     * compose an `Optional` with a `Traversal`\n     *\n     * @since 1.0.0\n     */\n    composeTraversal(ab) {\n        return fromTraversal(pipe(this, optional.asTraversal, traversal.compose(ab)));\n    }\n    /**\n     * compose an `Optional` with a `Fold`\n     *\n     * @since 1.0.0\n     */\n    composeFold(ab) {\n        return this.asFold().compose(ab);\n    }\n    /**\n     * compose an `Optional` with a `Setter`\n     *\n     * @since 1.0.0\n     */\n    composeSetter(ab) {\n        return this.asSetter().compose(ab);\n    }\n    /**\n     * compose an `Optional` with a `Lens`\n     *\n     * @since 1.0.0\n     */\n    composeLens(ab) {\n        return fromOptional(pipe(this, optional.compose(pipe(ab, lens.asOptional))));\n    }\n    /**\n     * compose an `Optional` with a `Prism`\n     *\n     * @since 1.0.0\n     */\n    composePrism(ab) {\n        return fromOptional(pipe(this, optional.compose(pipe(ab, prism.asOptional))));\n    }\n    /**\n     * compose an `Optional` with a `Iso`\n     *\n     * @since 1.0.0\n     */\n    composeIso(ab) {\n        return fromOptional(pipe(this, optional.compose(pipe(ab, iso.asOptional))));\n    }\n    /**\n     * compose an `Optional` with a `Getter`\n     *\n     * @since 1.0.0\n     */\n    composeGetter(ab) {\n        return this.asFold().compose(ab.asFold());\n    }\n}\n/**\n * @category constructor\n * @since 1.0.0\n */\nexport class Traversal {\n    constructor(\n    // Van Laarhoven representation\n    modifyF) {\n        this.modifyF = modifyF;\n        /**\n         * @since 1.0.0\n         */\n        this._tag = 'Traversal';\n    }\n    /**\n     * @since 1.0.0\n     */\n    modify(f) {\n        return traversal.modify(f)(this);\n    }\n    /**\n     * @since 1.0.0\n     */\n    set(a) {\n        return traversal.set(a)(this);\n    }\n    filter(predicate) {\n        return fromTraversal(traversal.filter(predicate)(this));\n    }\n    /**\n     * view a `Traversal` as a `Fold`\n     *\n     * @since 1.0.0\n     */\n    asFold() {\n        return new Fold((M) => (f) => this.modifyF(getApplicative(M))((a) => make(f(a))));\n    }\n    /**\n     * view a `Traversal` as a `Setter`\n     *\n     * @since 1.0.0\n     */\n    asSetter() {\n        return new Setter((f) => this.modify(f));\n    }\n    /**\n     * compose a `Traversal` with a `Traversal`\n     *\n     * @since 1.0.0\n     */\n    compose(ab) {\n        return fromTraversal(traversal.compose(ab)(this));\n    }\n    /**\n     * Alias of `compose`\n     *\n     * @since 1.0.0\n     */\n    composeTraversal(ab) {\n        return this.compose(ab);\n    }\n    /**\n     * compose a `Traversal` with a `Fold`\n     *\n     * @since 1.0.0\n     */\n    composeFold(ab) {\n        return this.asFold().compose(ab);\n    }\n    /**\n     * compose a `Traversal` with a `Setter`\n     *\n     * @since 1.0.0\n     */\n    composeSetter(ab) {\n        return this.asSetter().compose(ab);\n    }\n    /**\n     * compose a `Traversal` with a `Optional`\n     *\n     * @since 1.0.0\n     */\n    composeOptional(ab) {\n        return this.compose(ab.asTraversal());\n    }\n    /**\n     * compose a `Traversal` with a `Lens`\n     *\n     * @since 1.0.0\n     */\n    composeLens(ab) {\n        return fromTraversal(pipe(this, traversal.compose(pipe(ab, lens.asTraversal))));\n    }\n    /**\n     * compose a `Traversal` with a `Prism`\n     *\n     * @since 1.0.0\n     */\n    composePrism(ab) {\n        return fromTraversal(pipe(this, traversal.compose(pipe(ab, prism.asTraversal))));\n    }\n    /**\n     * compose a `Traversal` with a `Iso`\n     *\n     * @since 1.0.0\n     */\n    composeIso(ab) {\n        return fromTraversal(pipe(this, traversal.compose(pipe(ab, iso.asTraversal))));\n    }\n    /**\n     * compose a `Traversal` with a `Getter`\n     *\n     * @since 1.0.0\n     */\n    composeGetter(ab) {\n        return this.asFold().compose(ab.asFold());\n    }\n}\n/**\n * @category constructor\n * @since 1.2.0\n */\nexport class At {\n    constructor(at) {\n        this.at = at;\n        /**\n         * @since 1.0.0\n         */\n        this._tag = 'At';\n    }\n    /**\n     * lift an instance of `At` using an `Iso`\n     *\n     * @since 1.2.0\n     */\n    fromIso(iso) {\n        return fromAt(at.fromIso(iso)(this));\n    }\n}\n/**\n * @category constructor\n * @since 1.2.0\n */\nexport class Index {\n    constructor(index) {\n        this.index = index;\n        /**\n         * @since 1.0.0\n         */\n        this._tag = 'Index';\n    }\n    /**\n     * @since 1.2.0\n     */\n    static fromAt(at) {\n        return fromIndex(index.fromAt(at));\n    }\n    /**\n     * lift an instance of `Index` using an `Iso`\n     *\n     * @since 1.2.0\n     */\n    fromIso(iso) {\n        return fromIndex(index.fromIso(iso)(this));\n    }\n}\n/**\n * @category constructor\n * @since 1.0.0\n */\nexport class Getter {\n    constructor(get) {\n        this.get = get;\n        /**\n         * @since 1.0.0\n         */\n        this._tag = 'Getter';\n    }\n    /**\n     * view a `Getter` as a `Fold`\n     *\n     * @since 1.0.0\n     */\n    asFold() {\n        return new Fold(() => (f) => (s) => f(this.get(s)));\n    }\n    /**\n     * compose a `Getter` with a `Getter`\n     *\n     * @since 1.0.0\n     */\n    compose(ab) {\n        return new Getter((s) => ab.get(this.get(s)));\n    }\n    /**\n     * Alias of `compose`\n     *\n     * @since 1.0.0\n     */\n    composeGetter(ab) {\n        return this.compose(ab);\n    }\n    /**\n     * compose a `Getter` with a `Fold`\n     *\n     * @since 1.0.0\n     */\n    composeFold(ab) {\n        return this.asFold().compose(ab);\n    }\n    /**\n     * compose a `Getter` with a `Lens`\n     *\n     * @since 1.0.0\n     */\n    composeLens(ab) {\n        return this.compose(ab.asGetter());\n    }\n    /**\n     * compose a `Getter` with a `Iso`\n     *\n     * @since 1.0.0\n     */\n    composeIso(ab) {\n        return this.compose(ab.asGetter());\n    }\n    /**\n     * compose a `Getter` with a `Optional`\n     *\n     * @since 1.0.0\n     */\n    composeTraversal(ab) {\n        return this.asFold().compose(ab.asFold());\n    }\n    /**\n     * compose a `Getter` with a `Optional`\n     *\n     * @since 1.0.0\n     */\n    composeOptional(ab) {\n        return this.asFold().compose(ab.asFold());\n    }\n    /**\n     * compose a `Getter` with a `Prism`\n     *\n     * @since 1.0.0\n     */\n    composePrism(ab) {\n        return this.asFold().compose(ab.asFold());\n    }\n}\n/**\n * @category constructor\n * @since 1.0.0\n */\nexport class Fold {\n    constructor(foldMap) {\n        this.foldMap = foldMap;\n        /**\n         * @since 1.0.0\n         */\n        this._tag = 'Fold';\n        this.getAll = foldMap(A.getMonoid())(A.of);\n        this.exist = foldMap(monoidAny);\n        this.all = foldMap(monoidAll);\n        this.foldMapFirst = foldMap(getFirstMonoid());\n    }\n    /**\n     * compose a `Fold` with a `Fold`\n     *\n     * @since 1.0.0\n     */\n    compose(ab) {\n        return new Fold((M) => (f) => this.foldMap(M)(ab.foldMap(M)(f)));\n    }\n    /**\n     * Alias of `compose`\n     *\n     * @since 1.0.0\n     */\n    composeFold(ab) {\n        return this.compose(ab);\n    }\n    /**\n     * compose a `Fold` with a `Getter`\n     *\n     * @since 1.0.0\n     */\n    composeGetter(ab) {\n        return this.compose(ab.asFold());\n    }\n    /**\n     * compose a `Fold` with a `Traversal`\n     *\n     * @since 1.0.0\n     */\n    composeTraversal(ab) {\n        return this.compose(ab.asFold());\n    }\n    /**\n     * compose a `Fold` with a `Optional`\n     *\n     * @since 1.0.0\n     */\n    composeOptional(ab) {\n        return this.compose(ab.asFold());\n    }\n    /**\n     * compose a `Fold` with a `Lens`\n     *\n     * @since 1.0.0\n     */\n    composeLens(ab) {\n        return this.compose(ab.asFold());\n    }\n    /**\n     * compose a `Fold` with a `Prism`\n     *\n     * @since 1.0.0\n     */\n    composePrism(ab) {\n        return this.compose(ab.asFold());\n    }\n    /**\n     * compose a `Fold` with a `Iso`\n     *\n     * @since 1.0.0\n     */\n    composeIso(ab) {\n        return this.compose(ab.asFold());\n    }\n    find(p) {\n        return this.foldMapFirst(fromPredicate(p));\n    }\n    /**\n     * get the first target of a `Fold`\n     *\n     * @since 1.0.0\n     */\n    headOption(s) {\n        return this.find(() => true)(s);\n    }\n}\n/**\n * @category constructor\n * @since 1.0.0\n */\nexport class Setter {\n    constructor(modify) {\n        this.modify = modify;\n        /**\n         * @since 1.0.0\n         */\n        this._tag = 'Setter';\n    }\n    /**\n     * @since 1.0.0\n     */\n    set(a) {\n        return this.modify(constant(a));\n    }\n    /**\n     * compose a `Setter` with a `Setter`\n     *\n     * @since 1.0.0\n     */\n    compose(ab) {\n        return new Setter((f) => this.modify(ab.modify(f)));\n    }\n    /**\n     * Alias of `compose`\n     *\n     * @since 1.0.0\n     */\n    composeSetter(ab) {\n        return this.compose(ab);\n    }\n    /**\n     * compose a `Setter` with a `Traversal`\n     *\n     * @since 1.0.0\n     */\n    composeTraversal(ab) {\n        return this.compose(ab.asSetter());\n    }\n    /**\n     * compose a `Setter` with a `Optional`\n     *\n     * @since 1.0.0\n     */\n    composeOptional(ab) {\n        return this.compose(ab.asSetter());\n    }\n    /**\n     * compose a `Setter` with a `Lens`\n     *\n     * @since 1.0.0\n     */\n    composeLens(ab) {\n        return this.compose(ab.asSetter());\n    }\n    /**\n     * compose a `Setter` with a `Prism`\n     *\n     * @since 1.0.0\n     */\n    composePrism(ab) {\n        return this.compose(ab.asSetter());\n    }\n    /**\n     * compose a `Setter` with a `Iso`\n     *\n     * @since 1.0.0\n     */\n    composeIso(ab) {\n        return this.compose(ab.asSetter());\n    }\n}\nexport function fromTraversable(T) {\n    const f = traversal.fromTraversable(T);\n    return () => fromTraversal(f());\n}\nexport function fromFoldable(F) {\n    return () => new Fold((M) => {\n        const foldMapFM = F.foldMap(M);\n        return (f) => (s) => foldMapFM(s, f);\n    });\n}\n","import * as A from 'fp-ts-esm/Array';\nimport { pipe } from 'fp-ts-esm/function';\nimport { fromPredicate } from 'fp-ts-esm/Option';\nimport * as T from 'fp-ts-esm/Tree';\nimport type { Traversal } from 'monocle-ts-esm';\nimport { Lens, Prism, fromTraversable } from 'monocle-ts-esm';\n\n/**\n *\n *\n * Tree-like structure feature extractor\n * @template DT extraction unit data type\n */\nexport interface Extractor<DT> {\n  filter: (predicate: (data: DT) => boolean) => Extractor<DT>;\n  map: <MT>(mapper: (data: DT) => MT) => Extractor<MT>;\n  chain: <CT>(mapper: (data: DT) => Extractor<CT>) => Extractor<CT>[];\n  get: () => DT[];\n}\n\n/**\n *\n *\n * @template NodeT tree node type\n * @param {(node: NodeT) => NodeT[]} nodesAccessor how to access child nodes\n * @param {(root: NodeT)} root tree root (curried)\n */\nexport const getExtractor =\n  <NodeT>(nodesAccessor: (node: NodeT) => NodeT[]) =>\n  (root: NodeT): Extractor<NodeT> => {\n    class TraversalExtractor<DT> implements Extractor<DT> {\n      traversal: Traversal<T.Tree<NodeT>, DT>;\n\n      tree: T.Tree<NodeT>;\n\n      constructor(traversal: Traversal<T.Tree<NodeT>, DT>, tree: T.Tree<NodeT>) {\n        this.traversal = traversal;\n        this.tree = tree;\n      }\n\n      // @ts-ignore $TSFixMe\n      filter(predicate: (data: DT) => boolean) {\n        return new TraversalExtractor<DT>(\n          this.traversal.composePrism(Prism.fromPredicate(predicate)),\n          this.tree\n        );\n      }\n\n      // @ts-ignore $TSFixMe\n      map<MT>(mapper: (data: DT) => MT) {\n        return new TraversalExtractor<MT>(\n          this.traversal.composeLens(new Lens<DT, MT>(mapper, () => (dt: DT) => dt)),\n          this.tree\n        );\n      }\n\n      // @ts-ignore $TSFixMe\n      chain<CT>(mapper: (data: DT) => TraversalExtractor<CT>): Extractor<CT>[] {\n        // @ts-ignore $TSFixMe\n        return pipe(this.get(), A.map(mapper));\n      }\n\n      get() {\n        return pipe(\n          this.traversal.asFold().getAll(this.tree),\n          A.map(fromPredicate(Boolean)),\n          A.compact\n        );\n      }\n    }\n\n    const tree = T.unfoldTree<NodeT, NodeT>(root, node => [node, nodesAccessor(node)]);\n    // @ts-ignore $TSFixMe\n    return new TraversalExtractor(fromTraversable(T.tree)<NodeT>(), tree);\n  };\n","/**\n * @license\n * Lodash <https://lodash.com/>\n * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;(function() {\n\n  /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n  var undefined;\n\n  /** Used as the semantic version number. */\n  var VERSION = '4.18.1';\n\n  /** Used as the size to enable large array optimizations. */\n  var LARGE_ARRAY_SIZE = 200;\n\n  /** Error message constants. */\n  var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n      FUNC_ERROR_TEXT = 'Expected a function',\n      INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`',\n      INVALID_TEMPL_IMPORTS_ERROR_TEXT = 'Invalid `imports` option passed into `_.template`';\n\n  /** Used to stand-in for `undefined` hash values. */\n  var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n  /** Used as the maximum memoize cache size. */\n  var MAX_MEMOIZE_SIZE = 500;\n\n  /** Used as the internal argument placeholder. */\n  var PLACEHOLDER = '__lodash_placeholder__';\n\n  /** Used to compose bitmasks for cloning. */\n  var CLONE_DEEP_FLAG = 1,\n      CLONE_FLAT_FLAG = 2,\n      CLONE_SYMBOLS_FLAG = 4;\n\n  /** Used to compose bitmasks for value comparisons. */\n  var COMPARE_PARTIAL_FLAG = 1,\n      COMPARE_UNORDERED_FLAG = 2;\n\n  /** Used to compose bitmasks for function metadata. */\n  var WRAP_BIND_FLAG = 1,\n      WRAP_BIND_KEY_FLAG = 2,\n      WRAP_CURRY_BOUND_FLAG = 4,\n      WRAP_CURRY_FLAG = 8,\n      WRAP_CURRY_RIGHT_FLAG = 16,\n      WRAP_PARTIAL_FLAG = 32,\n      WRAP_PARTIAL_RIGHT_FLAG = 64,\n      WRAP_ARY_FLAG = 128,\n      WRAP_REARG_FLAG = 256,\n      WRAP_FLIP_FLAG = 512;\n\n  /** Used as default options for `_.truncate`. */\n  var DEFAULT_TRUNC_LENGTH = 30,\n      DEFAULT_TRUNC_OMISSION = '...';\n\n  /** Used to detect hot functions by number of calls within a span of milliseconds. */\n  var HOT_COUNT = 800,\n      HOT_SPAN = 16;\n\n  /** Used to indicate the type of lazy iteratees. */\n  var LAZY_FILTER_FLAG = 1,\n      LAZY_MAP_FLAG = 2,\n      LAZY_WHILE_FLAG = 3;\n\n  /** Used as references for various `Number` constants. */\n  var INFINITY = 1 / 0,\n      MAX_SAFE_INTEGER = 9007199254740991,\n      MAX_INTEGER = 1.7976931348623157e+308,\n      NAN = 0 / 0;\n\n  /** Used as references for the maximum length and index of an array. */\n  var MAX_ARRAY_LENGTH = 4294967295,\n      MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n      HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n  /** Used to associate wrap methods with their bit flags. */\n  var wrapFlags = [\n    ['ary', WRAP_ARY_FLAG],\n    ['bind', WRAP_BIND_FLAG],\n    ['bindKey', WRAP_BIND_KEY_FLAG],\n    ['curry', WRAP_CURRY_FLAG],\n    ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n    ['flip', WRAP_FLIP_FLAG],\n    ['partial', WRAP_PARTIAL_FLAG],\n    ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n    ['rearg', WRAP_REARG_FLAG]\n  ];\n\n  /** `Object#toString` result references. */\n  var argsTag = '[object Arguments]',\n      arrayTag = '[object Array]',\n      asyncTag = '[object AsyncFunction]',\n      boolTag = '[object Boolean]',\n      dateTag = '[object Date]',\n      domExcTag = '[object DOMException]',\n      errorTag = '[object Error]',\n      funcTag = '[object Function]',\n      genTag = '[object GeneratorFunction]',\n      mapTag = '[object Map]',\n      numberTag = '[object Number]',\n      nullTag = '[object Null]',\n      objectTag = '[object Object]',\n      promiseTag = '[object Promise]',\n      proxyTag = '[object Proxy]',\n      regexpTag = '[object RegExp]',\n      setTag = '[object Set]',\n      stringTag = '[object String]',\n      symbolTag = '[object Symbol]',\n      undefinedTag = '[object Undefined]',\n      weakMapTag = '[object WeakMap]',\n      weakSetTag = '[object WeakSet]';\n\n  var arrayBufferTag = '[object ArrayBuffer]',\n      dataViewTag = '[object DataView]',\n      float32Tag = '[object Float32Array]',\n      float64Tag = '[object Float64Array]',\n      int8Tag = '[object Int8Array]',\n      int16Tag = '[object Int16Array]',\n      int32Tag = '[object Int32Array]',\n      uint8Tag = '[object Uint8Array]',\n      uint8ClampedTag = '[object Uint8ClampedArray]',\n      uint16Tag = '[object Uint16Array]',\n      uint32Tag = '[object Uint32Array]';\n\n  /** Used to match empty string literals in compiled template source. */\n  var reEmptyStringLeading = /\\b__p \\+= '';/g,\n      reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n      reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n  /** Used to match HTML entities and HTML characters. */\n  var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n      reUnescapedHtml = /[&<>\"']/g,\n      reHasEscapedHtml = RegExp(reEscapedHtml.source),\n      reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n  /** Used to match template delimiters. */\n  var reEscape = /<%-([\\s\\S]+?)%>/g,\n      reEvaluate = /<%([\\s\\S]+?)%>/g,\n      reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n  /** Used to match property names within property paths. */\n  var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n      reIsPlainProp = /^\\w*$/,\n      rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n  /**\n   * Used to match `RegExp`\n   * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n   */\n  var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n      reHasRegExpChar = RegExp(reRegExpChar.source);\n\n  /** Used to match leading whitespace. */\n  var reTrimStart = /^\\s+/;\n\n  /** Used to match a single whitespace character. */\n  var reWhitespace = /\\s/;\n\n  /** Used to match wrap detail comments. */\n  var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n      reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n      reSplitDetails = /,? & /;\n\n  /** Used to match words composed of alphanumeric characters. */\n  var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n  /**\n   * Used to validate the `validate` option in `_.template` variable.\n   *\n   * Forbids characters which could potentially change the meaning of the function argument definition:\n   * - \"(),\" (modification of function parameters)\n   * - \"=\" (default value)\n   * - \"[]{}\" (destructuring of function parameters)\n   * - \"/\" (beginning of a comment)\n   * - whitespace\n   */\n  var reForbiddenIdentifierChars = /[()=,{}\\[\\]\\/\\s]/;\n\n  /** Used to match backslashes in property paths. */\n  var reEscapeChar = /\\\\(\\\\)?/g;\n\n  /**\n   * Used to match\n   * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n   */\n  var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n  /** Used to match `RegExp` flags from their coerced string values. */\n  var reFlags = /\\w*$/;\n\n  /** Used to detect bad signed hexadecimal string values. */\n  var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n  /** Used to detect binary string values. */\n  var reIsBinary = /^0b[01]+$/i;\n\n  /** Used to detect host constructors (Safari). */\n  var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n  /** Used to detect octal string values. */\n  var reIsOctal = /^0o[0-7]+$/i;\n\n  /** Used to detect unsigned integer values. */\n  var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n  /** Used to match Latin Unicode letters (excluding mathematical operators). */\n  var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n  /** Used to ensure capturing order of template delimiters. */\n  var reNoMatch = /($^)/;\n\n  /** Used to match unescaped characters in compiled string literals. */\n  var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n  /** Used to compose unicode character classes. */\n  var rsAstralRange = '\\\\ud800-\\\\udfff',\n      rsComboMarksRange = '\\\\u0300-\\\\u036f',\n      reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n      rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n      rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n      rsDingbatRange = '\\\\u2700-\\\\u27bf',\n      rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n      rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n      rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n      rsPunctuationRange = '\\\\u2000-\\\\u206f',\n      rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n      rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n      rsVarRange = '\\\\ufe0e\\\\ufe0f',\n      rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n  /** Used to compose unicode capture groups. */\n  var rsApos = \"['\\u2019]\",\n      rsAstral = '[' + rsAstralRange + ']',\n      rsBreak = '[' + rsBreakRange + ']',\n      rsCombo = '[' + rsComboRange + ']',\n      rsDigits = '\\\\d+',\n      rsDingbat = '[' + rsDingbatRange + ']',\n      rsLower = '[' + rsLowerRange + ']',\n      rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n      rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n      rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n      rsNonAstral = '[^' + rsAstralRange + ']',\n      rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n      rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n      rsUpper = '[' + rsUpperRange + ']',\n      rsZWJ = '\\\\u200d';\n\n  /** Used to compose unicode regexes. */\n  var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n      rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n      rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n      rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n      reOptMod = rsModifier + '?',\n      rsOptVar = '[' + rsVarRange + ']?',\n      rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n      rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n      rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n      rsSeq = rsOptVar + reOptMod + rsOptJoin,\n      rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n      rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n  /** Used to match apostrophes. */\n  var reApos = RegExp(rsApos, 'g');\n\n  /**\n   * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n   * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n   */\n  var reComboMark = RegExp(rsCombo, 'g');\n\n  /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n  var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n  /** Used to match complex or compound words. */\n  var reUnicodeWord = RegExp([\n    rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n    rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n    rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n    rsUpper + '+' + rsOptContrUpper,\n    rsOrdUpper,\n    rsOrdLower,\n    rsDigits,\n    rsEmoji\n  ].join('|'), 'g');\n\n  /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\n  var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange  + rsComboRange + rsVarRange + ']');\n\n  /** Used to detect strings that need a more robust regexp to match words. */\n  var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n  /** Used to assign default `context` object properties. */\n  var contextProps = [\n    'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',\n    'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',\n    'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',\n    'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\n    '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'\n  ];\n\n  /** Used to make template sourceURLs easier to identify. */\n  var templateCounter = -1;\n\n  /** Used to identify `toStringTag` values of typed arrays. */\n  var typedArrayTags = {};\n  typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n  typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n  typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n  typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n  typedArrayTags[uint32Tag] = true;\n  typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n  typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n  typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n  typedArrayTags[errorTag] = typedArrayTags[funcTag] =\n  typedArrayTags[mapTag] = typedArrayTags[numberTag] =\n  typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n  typedArrayTags[setTag] = typedArrayTags[stringTag] =\n  typedArrayTags[weakMapTag] = false;\n\n  /** Used to identify `toStringTag` values supported by `_.clone`. */\n  var cloneableTags = {};\n  cloneableTags[argsTag] = cloneableTags[arrayTag] =\n  cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n  cloneableTags[boolTag] = cloneableTags[dateTag] =\n  cloneableTags[float32Tag] = cloneableTags[float64Tag] =\n  cloneableTags[int8Tag] = cloneableTags[int16Tag] =\n  cloneableTags[int32Tag] = cloneableTags[mapTag] =\n  cloneableTags[numberTag] = cloneableTags[objectTag] =\n  cloneableTags[regexpTag] = cloneableTags[setTag] =\n  cloneableTags[stringTag] = cloneableTags[symbolTag] =\n  cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n  cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n  cloneableTags[errorTag] = cloneableTags[funcTag] =\n  cloneableTags[weakMapTag] = false;\n\n  /** Used to map Latin Unicode letters to basic Latin letters. */\n  var deburredLetters = {\n    // Latin-1 Supplement block.\n    '\\xc0': 'A',  '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n    '\\xe0': 'a',  '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n    '\\xc7': 'C',  '\\xe7': 'c',\n    '\\xd0': 'D',  '\\xf0': 'd',\n    '\\xc8': 'E',  '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n    '\\xe8': 'e',  '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n    '\\xcc': 'I',  '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n    '\\xec': 'i',  '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n    '\\xd1': 'N',  '\\xf1': 'n',\n    '\\xd2': 'O',  '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n    '\\xf2': 'o',  '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n    '\\xd9': 'U',  '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n    '\\xf9': 'u',  '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n    '\\xdd': 'Y',  '\\xfd': 'y', '\\xff': 'y',\n    '\\xc6': 'Ae', '\\xe6': 'ae',\n    '\\xde': 'Th', '\\xfe': 'th',\n    '\\xdf': 'ss',\n    // Latin Extended-A block.\n    '\\u0100': 'A',  '\\u0102': 'A', '\\u0104': 'A',\n    '\\u0101': 'a',  '\\u0103': 'a', '\\u0105': 'a',\n    '\\u0106': 'C',  '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n    '\\u0107': 'c',  '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n    '\\u010e': 'D',  '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n    '\\u0112': 'E',  '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n    '\\u0113': 'e',  '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n    '\\u011c': 'G',  '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n    '\\u011d': 'g',  '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n    '\\u0124': 'H',  '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n    '\\u0128': 'I',  '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n    '\\u0129': 'i',  '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n    '\\u0134': 'J',  '\\u0135': 'j',\n    '\\u0136': 'K',  '\\u0137': 'k', '\\u0138': 'k',\n    '\\u0139': 'L',  '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n    '\\u013a': 'l',  '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n    '\\u0143': 'N',  '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n    '\\u0144': 'n',  '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n    '\\u014c': 'O',  '\\u014e': 'O', '\\u0150': 'O',\n    '\\u014d': 'o',  '\\u014f': 'o', '\\u0151': 'o',\n    '\\u0154': 'R',  '\\u0156': 'R', '\\u0158': 'R',\n    '\\u0155': 'r',  '\\u0157': 'r', '\\u0159': 'r',\n    '\\u015a': 'S',  '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n    '\\u015b': 's',  '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n    '\\u0162': 'T',  '\\u0164': 'T', '\\u0166': 'T',\n    '\\u0163': 't',  '\\u0165': 't', '\\u0167': 't',\n    '\\u0168': 'U',  '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n    '\\u0169': 'u',  '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n    '\\u0174': 'W',  '\\u0175': 'w',\n    '\\u0176': 'Y',  '\\u0177': 'y', '\\u0178': 'Y',\n    '\\u0179': 'Z',  '\\u017b': 'Z', '\\u017d': 'Z',\n    '\\u017a': 'z',  '\\u017c': 'z', '\\u017e': 'z',\n    '\\u0132': 'IJ', '\\u0133': 'ij',\n    '\\u0152': 'Oe', '\\u0153': 'oe',\n    '\\u0149': \"'n\", '\\u017f': 's'\n  };\n\n  /** Used to map characters to HTML entities. */\n  var htmlEscapes = {\n    '&': '&amp;',\n    '<': '&lt;',\n    '>': '&gt;',\n    '\"': '&quot;',\n    \"'\": '&#39;'\n  };\n\n  /** Used to map HTML entities to characters. */\n  var htmlUnescapes = {\n    '&amp;': '&',\n    '&lt;': '<',\n    '&gt;': '>',\n    '&quot;': '\"',\n    '&#39;': \"'\"\n  };\n\n  /** Used to escape characters for inclusion in compiled string literals. */\n  var stringEscapes = {\n    '\\\\': '\\\\',\n    \"'\": \"'\",\n    '\\n': 'n',\n    '\\r': 'r',\n    '\\u2028': 'u2028',\n    '\\u2029': 'u2029'\n  };\n\n  /** Built-in method references without a dependency on `root`. */\n  var freeParseFloat = parseFloat,\n      freeParseInt = parseInt;\n\n  /** Detect free variable `global` from Node.js. */\n  var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n  /** Detect free variable `self`. */\n  var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n  /** Used as a reference to the global object. */\n  var root = freeGlobal || freeSelf || Function('return this')();\n\n  /** Detect free variable `exports`. */\n  var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n  /** Detect free variable `module`. */\n  var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n  /** Detect the popular CommonJS extension `module.exports`. */\n  var moduleExports = freeModule && freeModule.exports === freeExports;\n\n  /** Detect free variable `process` from Node.js. */\n  var freeProcess = moduleExports && freeGlobal.process;\n\n  /** Used to access faster Node.js helpers. */\n  var nodeUtil = (function() {\n    try {\n      // Use `util.types` for Node.js 10+.\n      var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n      if (types) {\n        return types;\n      }\n\n      // Legacy `process.binding('util')` for Node.js < 10.\n      return freeProcess && freeProcess.binding && freeProcess.binding('util');\n    } catch (e) {}\n  }());\n\n  /* Node.js helper references. */\n  var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n      nodeIsDate = nodeUtil && nodeUtil.isDate,\n      nodeIsMap = nodeUtil && nodeUtil.isMap,\n      nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n      nodeIsSet = nodeUtil && nodeUtil.isSet,\n      nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n  /*--------------------------------------------------------------------------*/\n\n  /**\n   * A faster alternative to `Function#apply`, this function invokes `func`\n   * with the `this` binding of `thisArg` and the arguments of `args`.\n   *\n   * @private\n   * @param {Function} func The function to invoke.\n   * @param {*} thisArg The `this` binding of `func`.\n   * @param {Array} args The arguments to invoke `func` with.\n   * @returns {*} Returns the result of `func`.\n   */\n  function apply(func, thisArg, args) {\n    switch (args.length) {\n      case 0: return func.call(thisArg);\n      case 1: return func.call(thisArg, args[0]);\n      case 2: return func.call(thisArg, args[0], args[1]);\n      case 3: return func.call(thisArg, args[0], args[1], args[2]);\n    }\n    return func.apply(thisArg, args);\n  }\n\n  /**\n   * A specialized version of `baseAggregator` for arrays.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} setter The function to set `accumulator` values.\n   * @param {Function} iteratee The iteratee to transform keys.\n   * @param {Object} accumulator The initial aggregated object.\n   * @returns {Function} Returns `accumulator`.\n   */\n  function arrayAggregator(array, setter, iteratee, accumulator) {\n    var index = -1,\n        length = array == null ? 0 : array.length;\n\n    while (++index < length) {\n      var value = array[index];\n      setter(accumulator, value, iteratee(value), array);\n    }\n    return accumulator;\n  }\n\n  /**\n   * A specialized version of `_.forEach` for arrays without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @returns {Array} Returns `array`.\n   */\n  function arrayEach(array, iteratee) {\n    var index = -1,\n        length = array == null ? 0 : array.length;\n\n    while (++index < length) {\n      if (iteratee(array[index], index, array) === false) {\n        break;\n      }\n    }\n    return array;\n  }\n\n  /**\n   * A specialized version of `_.forEachRight` for arrays without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @returns {Array} Returns `array`.\n   */\n  function arrayEachRight(array, iteratee) {\n    var length = array == null ? 0 : array.length;\n\n    while (length--) {\n      if (iteratee(array[length], length, array) === false) {\n        break;\n      }\n    }\n    return array;\n  }\n\n  /**\n   * A specialized version of `_.every` for arrays without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} predicate The function invoked per iteration.\n   * @returns {boolean} Returns `true` if all elements pass the predicate check,\n   *  else `false`.\n   */\n  function arrayEvery(array, predicate) {\n    var index = -1,\n        length = array == null ? 0 : array.length;\n\n    while (++index < length) {\n      if (!predicate(array[index], index, array)) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  /**\n   * A specialized version of `_.filter` for arrays without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} predicate The function invoked per iteration.\n   * @returns {Array} Returns the new filtered array.\n   */\n  function arrayFilter(array, predicate) {\n    var index = -1,\n        length = array == null ? 0 : array.length,\n        resIndex = 0,\n        result = [];\n\n    while (++index < length) {\n      var value = array[index];\n      if (predicate(value, index, array)) {\n        result[resIndex++] = value;\n      }\n    }\n    return result;\n  }\n\n  /**\n   * A specialized version of `_.includes` for arrays without support for\n   * specifying an index to search from.\n   *\n   * @private\n   * @param {Array} [array] The array to inspect.\n   * @param {*} target The value to search for.\n   * @returns {boolean} Returns `true` if `target` is found, else `false`.\n   */\n  function arrayIncludes(array, value) {\n    var length = array == null ? 0 : array.length;\n    return !!length && baseIndexOf(array, value, 0) > -1;\n  }\n\n  /**\n   * This function is like `arrayIncludes` except that it accepts a comparator.\n   *\n   * @private\n   * @param {Array} [array] The array to inspect.\n   * @param {*} target The value to search for.\n   * @param {Function} comparator The comparator invoked per element.\n   * @returns {boolean} Returns `true` if `target` is found, else `false`.\n   */\n  function arrayIncludesWith(array, value, comparator) {\n    var index = -1,\n        length = array == null ? 0 : array.length;\n\n    while (++index < length) {\n      if (comparator(value, array[index])) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  /**\n   * A specialized version of `_.map` for arrays without support for iteratee\n   * shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @returns {Array} Returns the new mapped array.\n   */\n  function arrayMap(array, iteratee) {\n    var index = -1,\n        length = array == null ? 0 : array.length,\n        result = Array(length);\n\n    while (++index < length) {\n      result[index] = iteratee(array[index], index, array);\n    }\n    return result;\n  }\n\n  /**\n   * Appends the elements of `values` to `array`.\n   *\n   * @private\n   * @param {Array} array The array to modify.\n   * @param {Array} values The values to append.\n   * @returns {Array} Returns `array`.\n   */\n  function arrayPush(array, values) {\n    var index = -1,\n        length = values.length,\n        offset = array.length;\n\n    while (++index < length) {\n      array[offset + index] = values[index];\n    }\n    return array;\n  }\n\n  /**\n   * A specialized version of `_.reduce` for arrays without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @param {*} [accumulator] The initial value.\n   * @param {boolean} [initAccum] Specify using the first element of `array` as\n   *  the initial value.\n   * @returns {*} Returns the accumulated value.\n   */\n  function arrayReduce(array, iteratee, accumulator, initAccum) {\n    var index = -1,\n        length = array == null ? 0 : array.length;\n\n    if (initAccum && length) {\n      accumulator = array[++index];\n    }\n    while (++index < length) {\n      accumulator = iteratee(accumulator, array[index], index, array);\n    }\n    return accumulator;\n  }\n\n  /**\n   * A specialized version of `_.reduceRight` for arrays without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @param {*} [accumulator] The initial value.\n   * @param {boolean} [initAccum] Specify using the last element of `array` as\n   *  the initial value.\n   * @returns {*} Returns the accumulated value.\n   */\n  function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n    var length = array == null ? 0 : array.length;\n    if (initAccum && length) {\n      accumulator = array[--length];\n    }\n    while (length--) {\n      accumulator = iteratee(accumulator, array[length], length, array);\n    }\n    return accumulator;\n  }\n\n  /**\n   * A specialized version of `_.some` for arrays without support for iteratee\n   * shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} predicate The function invoked per iteration.\n   * @returns {boolean} Returns `true` if any element passes the predicate check,\n   *  else `false`.\n   */\n  function arraySome(array, predicate) {\n    var index = -1,\n        length = array == null ? 0 : array.length;\n\n    while (++index < length) {\n      if (predicate(array[index], index, array)) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  /**\n   * Gets the size of an ASCII `string`.\n   *\n   * @private\n   * @param {string} string The string inspect.\n   * @returns {number} Returns the string size.\n   */\n  var asciiSize = baseProperty('length');\n\n  /**\n   * Converts an ASCII `string` to an array.\n   *\n   * @private\n   * @param {string} string The string to convert.\n   * @returns {Array} Returns the converted array.\n   */\n  function asciiToArray(string) {\n    return string.split('');\n  }\n\n  /**\n   * Splits an ASCII `string` into an array of its words.\n   *\n   * @private\n   * @param {string} The string to inspect.\n   * @returns {Array} Returns the words of `string`.\n   */\n  function asciiWords(string) {\n    return string.match(reAsciiWord) || [];\n  }\n\n  /**\n   * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n   * without support for iteratee shorthands, which iterates over `collection`\n   * using `eachFunc`.\n   *\n   * @private\n   * @param {Array|Object} collection The collection to inspect.\n   * @param {Function} predicate The function invoked per iteration.\n   * @param {Function} eachFunc The function to iterate over `collection`.\n   * @returns {*} Returns the found element or its key, else `undefined`.\n   */\n  function baseFindKey(collection, predicate, eachFunc) {\n    var result;\n    eachFunc(collection, function(value, key, collection) {\n      if (predicate(value, key, collection)) {\n        result = key;\n        return false;\n      }\n    });\n    return result;\n  }\n\n  /**\n   * The base implementation of `_.findIndex` and `_.findLastIndex` without\n   * support for iteratee shorthands.\n   *\n   * @private\n   * @param {Array} array The array to inspect.\n   * @param {Function} predicate The function invoked per iteration.\n   * @param {number} fromIndex The index to search from.\n   * @param {boolean} [fromRight] Specify iterating from right to left.\n   * @returns {number} Returns the index of the matched value, else `-1`.\n   */\n  function baseFindIndex(array, predicate, fromIndex, fromRight) {\n    var length = array.length,\n        index = fromIndex + (fromRight ? 1 : -1);\n\n    while ((fromRight ? index-- : ++index < length)) {\n      if (predicate(array[index], index, array)) {\n        return index;\n      }\n    }\n    return -1;\n  }\n\n  /**\n   * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n   *\n   * @private\n   * @param {Array} array The array to inspect.\n   * @param {*} value The value to search for.\n   * @param {number} fromIndex The index to search from.\n   * @returns {number} Returns the index of the matched value, else `-1`.\n   */\n  function baseIndexOf(array, value, fromIndex) {\n    return value === value\n      ? strictIndexOf(array, value, fromIndex)\n      : baseFindIndex(array, baseIsNaN, fromIndex);\n  }\n\n  /**\n   * This function is like `baseIndexOf` except that it accepts a comparator.\n   *\n   * @private\n   * @param {Array} array The array to inspect.\n   * @param {*} value The value to search for.\n   * @param {number} fromIndex The index to search from.\n   * @param {Function} comparator The comparator invoked per element.\n   * @returns {number} Returns the index of the matched value, else `-1`.\n   */\n  function baseIndexOfWith(array, value, fromIndex, comparator) {\n    var index = fromIndex - 1,\n        length = array.length;\n\n    while (++index < length) {\n      if (comparator(array[index], value)) {\n        return index;\n      }\n    }\n    return -1;\n  }\n\n  /**\n   * The base implementation of `_.isNaN` without support for number objects.\n   *\n   * @private\n   * @param {*} value The value to check.\n   * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n   */\n  function baseIsNaN(value) {\n    return value !== value;\n  }\n\n  /**\n   * The base implementation of `_.mean` and `_.meanBy` without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} array The array to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @returns {number} Returns the mean.\n   */\n  function baseMean(array, iteratee) {\n    var length = array == null ? 0 : array.length;\n    return length ? (baseSum(array, iteratee) / length) : NAN;\n  }\n\n  /**\n   * The base implementation of `_.property` without support for deep paths.\n   *\n   * @private\n   * @param {string} key The key of the property to get.\n   * @returns {Function} Returns the new accessor function.\n   */\n  function baseProperty(key) {\n    return function(object) {\n      return object == null ? undefined : object[key];\n    };\n  }\n\n  /**\n   * The base implementation of `_.propertyOf` without support for deep paths.\n   *\n   * @private\n   * @param {Object} object The object to query.\n   * @returns {Function} Returns the new accessor function.\n   */\n  function basePropertyOf(object) {\n    return function(key) {\n      return object == null ? undefined : object[key];\n    };\n  }\n\n  /**\n   * The base implementation of `_.reduce` and `_.reduceRight`, without support\n   * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n   *\n   * @private\n   * @param {Array|Object} collection The collection to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @param {*} accumulator The initial value.\n   * @param {boolean} initAccum Specify using the first or last element of\n   *  `collection` as the initial value.\n   * @param {Function} eachFunc The function to iterate over `collection`.\n   * @returns {*} Returns the accumulated value.\n   */\n  function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n    eachFunc(collection, function(value, index, collection) {\n      accumulator = initAccum\n        ? (initAccum = false, value)\n        : iteratee(accumulator, value, index, collection);\n    });\n    return accumulator;\n  }\n\n  /**\n   * The base implementation of `_.sortBy` which uses `comparer` to define the\n   * sort order of `array` and replaces criteria objects with their corresponding\n   * values.\n   *\n   * @private\n   * @param {Array} array The array to sort.\n   * @param {Function} comparer The function to define sort order.\n   * @returns {Array} Returns `array`.\n   */\n  function baseSortBy(array, comparer) {\n    var length = array.length;\n\n    array.sort(comparer);\n    while (length--) {\n      array[length] = array[length].value;\n    }\n    return array;\n  }\n\n  /**\n   * The base implementation of `_.sum` and `_.sumBy` without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} array The array to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @returns {number} Returns the sum.\n   */\n  function baseSum(array, iteratee) {\n    var result,\n        index = -1,\n        length = array.length;\n\n    while (++index < length) {\n      var current = iteratee(array[index]);\n      if (current !== undefined) {\n        result = result === undefined ? current : (result + current);\n      }\n    }\n    return result;\n  }\n\n  /**\n   * The base implementation of `_.times` without support for iteratee shorthands\n   * or max array length checks.\n   *\n   * @private\n   * @param {number} n The number of times to invoke `iteratee`.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @returns {Array} Returns the array of results.\n   */\n  function baseTimes(n, iteratee) {\n    var index = -1,\n        result = Array(n);\n\n    while (++index < n) {\n      result[index] = iteratee(index);\n    }\n    return result;\n  }\n\n  /**\n   * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n   * of key-value pairs for `object` corresponding to the property names of `props`.\n   *\n   * @private\n   * @param {Object} object The object to query.\n   * @param {Array} props The property names to get values for.\n   * @returns {Object} Returns the key-value pairs.\n   */\n  function baseToPairs(object, props) {\n    return arrayMap(props, function(key) {\n      return [key, object[key]];\n    });\n  }\n\n  /**\n   * The base implementation of `_.trim`.\n   *\n   * @private\n   * @param {string} string The string to trim.\n   * @returns {string} Returns the trimmed string.\n   */\n  function baseTrim(string) {\n    return string\n      ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n      : string;\n  }\n\n  /**\n   * The base implementation of `_.unary` without support for storing metadata.\n   *\n   * @private\n   * @param {Function} func The function to cap arguments for.\n   * @returns {Function} Returns the new capped function.\n   */\n  function baseUnary(func) {\n    return function(value) {\n      return func(value);\n    };\n  }\n\n  /**\n   * The base implementation of `_.values` and `_.valuesIn` which creates an\n   * array of `object` property values corresponding to the property names\n   * of `props`.\n   *\n   * @private\n   * @param {Object} object The object to query.\n   * @param {Array} props The property names to get values for.\n   * @returns {Object} Returns the array of property values.\n   */\n  function baseValues(object, props) {\n    return arrayMap(props, function(key) {\n      return object[key];\n    });\n  }\n\n  /**\n   * Checks if a `cache` value for `key` exists.\n   *\n   * @private\n   * @param {Object} cache The cache to query.\n   * @param {string} key The key of the entry to check.\n   * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n   */\n  function cacheHas(cache, key) {\n    return cache.has(key);\n  }\n\n  /**\n   * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n   * that is not found in the character symbols.\n   *\n   * @private\n   * @param {Array} strSymbols The string symbols to inspect.\n   * @param {Array} chrSymbols The character symbols to find.\n   * @returns {number} Returns the index of the first unmatched string symbol.\n   */\n  function charsStartIndex(strSymbols, chrSymbols) {\n    var index = -1,\n        length = strSymbols.length;\n\n    while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n    return index;\n  }\n\n  /**\n   * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n   * that is not found in the character symbols.\n   *\n   * @private\n   * @param {Array} strSymbols The string symbols to inspect.\n   * @param {Array} chrSymbols The character symbols to find.\n   * @returns {number} Returns the index of the last unmatched string symbol.\n   */\n  function charsEndIndex(strSymbols, chrSymbols) {\n    var index = strSymbols.length;\n\n    while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n    return index;\n  }\n\n  /**\n   * Gets the number of `placeholder` occurrences in `array`.\n   *\n   * @private\n   * @param {Array} array The array to inspect.\n   * @param {*} placeholder The placeholder to search for.\n   * @returns {number} Returns the placeholder count.\n   */\n  function countHolders(array, placeholder) {\n    var length = array.length,\n        result = 0;\n\n    while (length--) {\n      if (array[length] === placeholder) {\n        ++result;\n      }\n    }\n    return result;\n  }\n\n  /**\n   * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n   * letters to basic Latin letters.\n   *\n   * @private\n   * @param {string} letter The matched letter to deburr.\n   * @returns {string} Returns the deburred letter.\n   */\n  var deburrLetter = basePropertyOf(deburredLetters);\n\n  /**\n   * Used by `_.escape` to convert characters to HTML entities.\n   *\n   * @private\n   * @param {string} chr The matched character to escape.\n   * @returns {string} Returns the escaped character.\n   */\n  var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n  /**\n   * Used by `_.template` to escape characters for inclusion in compiled string literals.\n   *\n   * @private\n   * @param {string} chr The matched character to escape.\n   * @returns {string} Returns the escaped character.\n   */\n  function escapeStringChar(chr) {\n    return '\\\\' + stringEscapes[chr];\n  }\n\n  /**\n   * Gets the value at `key` of `object`.\n   *\n   * @private\n   * @param {Object} [object] The object to query.\n   * @param {string} key The key of the property to get.\n   * @returns {*} Returns the property value.\n   */\n  function getValue(object, key) {\n    return object == null ? undefined : object[key];\n  }\n\n  /**\n   * Checks if `string` contains Unicode symbols.\n   *\n   * @private\n   * @param {string} string The string to inspect.\n   * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n   */\n  function hasUnicode(string) {\n    return reHasUnicode.test(string);\n  }\n\n  /**\n   * Checks if `string` contains a word composed of Unicode symbols.\n   *\n   * @private\n   * @param {string} string The string to inspect.\n   * @returns {boolean} Returns `true` if a word is found, else `false`.\n   */\n  function hasUnicodeWord(string) {\n    return reHasUnicodeWord.test(string);\n  }\n\n  /**\n   * Converts `iterator` to an array.\n   *\n   * @private\n   * @param {Object} iterator The iterator to convert.\n   * @returns {Array} Returns the converted array.\n   */\n  function iteratorToArray(iterator) {\n    var data,\n        result = [];\n\n    while (!(data = iterator.next()).done) {\n      result.push(data.value);\n    }\n    return result;\n  }\n\n  /**\n   * Converts `map` to its key-value pairs.\n   *\n   * @private\n   * @param {Object} map The map to convert.\n   * @returns {Array} Returns the key-value pairs.\n   */\n  function mapToArray(map) {\n    var index = -1,\n        result = Array(map.size);\n\n    map.forEach(function(value, key) {\n      result[++index] = [key, value];\n    });\n    return result;\n  }\n\n  /**\n   * Creates a unary function that invokes `func` with its argument transformed.\n   *\n   * @private\n   * @param {Function} func The function to wrap.\n   * @param {Function} transform The argument transform.\n   * @returns {Function} Returns the new function.\n   */\n  function overArg(func, transform) {\n    return function(arg) {\n      return func(transform(arg));\n    };\n  }\n\n  /**\n   * Replaces all `placeholder` elements in `array` with an internal placeholder\n   * and returns an array of their indexes.\n   *\n   * @private\n   * @param {Array} array The array to modify.\n   * @param {*} placeholder The placeholder to replace.\n   * @returns {Array} Returns the new array of placeholder indexes.\n   */\n  function replaceHolders(array, placeholder) {\n    var index = -1,\n        length = array.length,\n        resIndex = 0,\n        result = [];\n\n    while (++index < length) {\n      var value = array[index];\n      if (value === placeholder || value === PLACEHOLDER) {\n        array[index] = PLACEHOLDER;\n        result[resIndex++] = index;\n      }\n    }\n    return result;\n  }\n\n  /**\n   * Converts `set` to an array of its values.\n   *\n   * @private\n   * @param {Object} set The set to convert.\n   * @returns {Array} Returns the values.\n   */\n  function setToArray(set) {\n    var index = -1,\n        result = Array(set.size);\n\n    set.forEach(function(value) {\n      result[++index] = value;\n    });\n    return result;\n  }\n\n  /**\n   * Converts `set` to its value-value pairs.\n   *\n   * @private\n   * @param {Object} set The set to convert.\n   * @returns {Array} Returns the value-value pairs.\n   */\n  function setToPairs(set) {\n    var index = -1,\n        result = Array(set.size);\n\n    set.forEach(function(value) {\n      result[++index] = [value, value];\n    });\n    return result;\n  }\n\n  /**\n   * A specialized version of `_.indexOf` which performs strict equality\n   * comparisons of values, i.e. `===`.\n   *\n   * @private\n   * @param {Array} array The array to inspect.\n   * @param {*} value The value to search for.\n   * @param {number} fromIndex The index to search from.\n   * @returns {number} Returns the index of the matched value, else `-1`.\n   */\n  function strictIndexOf(array, value, fromIndex) {\n    var index = fromIndex - 1,\n        length = array.length;\n\n    while (++index < length) {\n      if (array[index] === value) {\n        return index;\n      }\n    }\n    return -1;\n  }\n\n  /**\n   * A specialized version of `_.lastIndexOf` which performs strict equality\n   * comparisons of values, i.e. `===`.\n   *\n   * @private\n   * @param {Array} array The array to inspect.\n   * @param {*} value The value to search for.\n   * @param {number} fromIndex The index to search from.\n   * @returns {number} Returns the index of the matched value, else `-1`.\n   */\n  function strictLastIndexOf(array, value, fromIndex) {\n    var index = fromIndex + 1;\n    while (index--) {\n      if (array[index] === value) {\n        return index;\n      }\n    }\n    return index;\n  }\n\n  /**\n   * Gets the number of symbols in `string`.\n   *\n   * @private\n   * @param {string} string The string to inspect.\n   * @returns {number} Returns the string size.\n   */\n  function stringSize(string) {\n    return hasUnicode(string)\n      ? unicodeSize(string)\n      : asciiSize(string);\n  }\n\n  /**\n   * Converts `string` to an array.\n   *\n   * @private\n   * @param {string} string The string to convert.\n   * @returns {Array} Returns the converted array.\n   */\n  function stringToArray(string) {\n    return hasUnicode(string)\n      ? unicodeToArray(string)\n      : asciiToArray(string);\n  }\n\n  /**\n   * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n   * character of `string`.\n   *\n   * @private\n   * @param {string} string The string to inspect.\n   * @returns {number} Returns the index of the last non-whitespace character.\n   */\n  function trimmedEndIndex(string) {\n    var index = string.length;\n\n    while (index-- && reWhitespace.test(string.charAt(index))) {}\n    return index;\n  }\n\n  /**\n   * Used by `_.unescape` to convert HTML entities to characters.\n   *\n   * @private\n   * @param {string} chr The matched character to unescape.\n   * @returns {string} Returns the unescaped character.\n   */\n  var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n  /**\n   * Gets the size of a Unicode `string`.\n   *\n   * @private\n   * @param {string} string The string inspect.\n   * @returns {number} Returns the string size.\n   */\n  function unicodeSize(string) {\n    var result = reUnicode.lastIndex = 0;\n    while (reUnicode.test(string)) {\n      ++result;\n    }\n    return result;\n  }\n\n  /**\n   * Converts a Unicode `string` to an array.\n   *\n   * @private\n   * @param {string} string The string to convert.\n   * @returns {Array} Returns the converted array.\n   */\n  function unicodeToArray(string) {\n    return string.match(reUnicode) || [];\n  }\n\n  /**\n   * Splits a Unicode `string` into an array of its words.\n   *\n   * @private\n   * @param {string} The string to inspect.\n   * @returns {Array} Returns the words of `string`.\n   */\n  function unicodeWords(string) {\n    return string.match(reUnicodeWord) || [];\n  }\n\n  /*--------------------------------------------------------------------------*/\n\n  /**\n   * Create a new pristine `lodash` function using the `context` object.\n   *\n   * @static\n   * @memberOf _\n   * @since 1.1.0\n   * @category Util\n   * @param {Object} [context=root] The context object.\n   * @returns {Function} Returns a new `lodash` function.\n   * @example\n   *\n   * _.mixin({ 'foo': _.constant('foo') });\n   *\n   * var lodash = _.runInContext();\n   * lodash.mixin({ 'bar': lodash.constant('bar') });\n   *\n   * _.isFunction(_.foo);\n   * // => true\n   * _.isFunction(_.bar);\n   * // => false\n   *\n   * lodash.isFunction(lodash.foo);\n   * // => false\n   * lodash.isFunction(lodash.bar);\n   * // => true\n   *\n   * // Create a suped-up `defer` in Node.js.\n   * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n   */\n  var runInContext = (function runInContext(context) {\n    context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n\n    /** Built-in constructor references. */\n    var Array = context.Array,\n        Date = context.Date,\n        Error = context.Error,\n        Function = context.Function,\n        Math = context.Math,\n        Object = context.Object,\n        RegExp = context.RegExp,\n        String = context.String,\n        TypeError = context.TypeError;\n\n    /** Used for built-in method references. */\n    var arrayProto = Array.prototype,\n        funcProto = Function.prototype,\n        objectProto = Object.prototype;\n\n    /** Used to detect overreaching core-js shims. */\n    var coreJsData = context['__core-js_shared__'];\n\n    /** Used to resolve the decompiled source of functions. */\n    var funcToString = funcProto.toString;\n\n    /** Used to check objects for own properties. */\n    var hasOwnProperty = objectProto.hasOwnProperty;\n\n    /** Used to generate unique IDs. */\n    var idCounter = 0;\n\n    /** Used to detect methods masquerading as native. */\n    var maskSrcKey = (function() {\n      var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n      return uid ? ('Symbol(src)_1.' + uid) : '';\n    }());\n\n    /**\n     * Used to resolve the\n     * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n     * of values.\n     */\n    var nativeObjectToString = objectProto.toString;\n\n    /** Used to infer the `Object` constructor. */\n    var objectCtorString = funcToString.call(Object);\n\n    /** Used to restore the original `_` reference in `_.noConflict`. */\n    var oldDash = root._;\n\n    /** Used to detect if a method is native. */\n    var reIsNative = RegExp('^' +\n      funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n      .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n    );\n\n    /** Built-in value references. */\n    var Buffer = moduleExports ? context.Buffer : undefined,\n        Symbol = context.Symbol,\n        Uint8Array = context.Uint8Array,\n        allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n        getPrototype = overArg(Object.getPrototypeOf, Object),\n        objectCreate = Object.create,\n        propertyIsEnumerable = objectProto.propertyIsEnumerable,\n        splice = arrayProto.splice,\n        spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n        symIterator = Symbol ? Symbol.iterator : undefined,\n        symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n    var defineProperty = (function() {\n      try {\n        var func = getNative(Object, 'defineProperty');\n        func({}, '', {});\n        return func;\n      } catch (e) {}\n    }());\n\n    /** Mocked built-ins. */\n    var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n        ctxNow = Date && Date.now !== root.Date.now && Date.now,\n        ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n\n    /* Built-in method references for those with the same name as other `lodash` methods. */\n    var nativeCeil = Math.ceil,\n        nativeFloor = Math.floor,\n        nativeGetSymbols = Object.getOwnPropertySymbols,\n        nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n        nativeIsFinite = context.isFinite,\n        nativeJoin = arrayProto.join,\n        nativeKeys = overArg(Object.keys, Object),\n        nativeMax = Math.max,\n        nativeMin = Math.min,\n        nativeNow = Date.now,\n        nativeParseInt = context.parseInt,\n        nativeRandom = Math.random,\n        nativeReverse = arrayProto.reverse;\n\n    /* Built-in method references that are verified to be native. */\n    var DataView = getNative(context, 'DataView'),\n        Map = getNative(context, 'Map'),\n        Promise = getNative(context, 'Promise'),\n        Set = getNative(context, 'Set'),\n        WeakMap = getNative(context, 'WeakMap'),\n        nativeCreate = getNative(Object, 'create');\n\n    /** Used to store function metadata. */\n    var metaMap = WeakMap && new WeakMap;\n\n    /** Used to lookup unminified function names. */\n    var realNames = {};\n\n    /** Used to detect maps, sets, and weakmaps. */\n    var dataViewCtorString = toSource(DataView),\n        mapCtorString = toSource(Map),\n        promiseCtorString = toSource(Promise),\n        setCtorString = toSource(Set),\n        weakMapCtorString = toSource(WeakMap);\n\n    /** Used to convert symbols to primitives and strings. */\n    var symbolProto = Symbol ? Symbol.prototype : undefined,\n        symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n        symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates a `lodash` object which wraps `value` to enable implicit method\n     * chain sequences. Methods that operate on and return arrays, collections,\n     * and functions can be chained together. Methods that retrieve a single value\n     * or may return a primitive value will automatically end the chain sequence\n     * and return the unwrapped value. Otherwise, the value must be unwrapped\n     * with `_#value`.\n     *\n     * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n     * enabled using `_.chain`.\n     *\n     * The execution of chained methods is lazy, that is, it's deferred until\n     * `_#value` is implicitly or explicitly called.\n     *\n     * Lazy evaluation allows several methods to support shortcut fusion.\n     * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n     * the creation of intermediate arrays and can greatly reduce the number of\n     * iteratee executions. Sections of a chain sequence qualify for shortcut\n     * fusion if the section is applied to an array and iteratees accept only\n     * one argument. The heuristic for whether a section qualifies for shortcut\n     * fusion is subject to change.\n     *\n     * Chaining is supported in custom builds as long as the `_#value` method is\n     * directly or indirectly included in the build.\n     *\n     * In addition to lodash methods, wrappers have `Array` and `String` methods.\n     *\n     * The wrapper `Array` methods are:\n     * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n     *\n     * The wrapper `String` methods are:\n     * `replace` and `split`\n     *\n     * The wrapper methods that support shortcut fusion are:\n     * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n     * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n     * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n     *\n     * The chainable wrapper methods are:\n     * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n     * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n     * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n     * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n     * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n     * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n     * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n     * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n     * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n     * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n     * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n     * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n     * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n     * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n     * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n     * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n     * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n     * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n     * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n     * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n     * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n     * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n     * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n     * `zipObject`, `zipObjectDeep`, and `zipWith`\n     *\n     * The wrapper methods that are **not** chainable by default are:\n     * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n     * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n     * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n     * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n     * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n     * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n     * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n     * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n     * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n     * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n     * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n     * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n     * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n     * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n     * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n     * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n     * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n     * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n     * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n     * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n     * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n     * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n     * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n     * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n     * `upperFirst`, `value`, and `words`\n     *\n     * @name _\n     * @constructor\n     * @category Seq\n     * @param {*} value The value to wrap in a `lodash` instance.\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * var wrapped = _([1, 2, 3]);\n     *\n     * // Returns an unwrapped value.\n     * wrapped.reduce(_.add);\n     * // => 6\n     *\n     * // Returns a wrapped value.\n     * var squares = wrapped.map(square);\n     *\n     * _.isArray(squares);\n     * // => false\n     *\n     * _.isArray(squares.value());\n     * // => true\n     */\n    function lodash(value) {\n      if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n        if (value instanceof LodashWrapper) {\n          return value;\n        }\n        if (hasOwnProperty.call(value, '__wrapped__')) {\n          return wrapperClone(value);\n        }\n      }\n      return new LodashWrapper(value);\n    }\n\n    /**\n     * The base implementation of `_.create` without support for assigning\n     * properties to the created object.\n     *\n     * @private\n     * @param {Object} proto The object to inherit from.\n     * @returns {Object} Returns the new object.\n     */\n    var baseCreate = (function() {\n      function object() {}\n      return function(proto) {\n        if (!isObject(proto)) {\n          return {};\n        }\n        if (objectCreate) {\n          return objectCreate(proto);\n        }\n        object.prototype = proto;\n        var result = new object;\n        object.prototype = undefined;\n        return result;\n      };\n    }());\n\n    /**\n     * The function whose prototype chain sequence wrappers inherit from.\n     *\n     * @private\n     */\n    function baseLodash() {\n      // No operation performed.\n    }\n\n    /**\n     * The base constructor for creating `lodash` wrapper objects.\n     *\n     * @private\n     * @param {*} value The value to wrap.\n     * @param {boolean} [chainAll] Enable explicit method chain sequences.\n     */\n    function LodashWrapper(value, chainAll) {\n      this.__wrapped__ = value;\n      this.__actions__ = [];\n      this.__chain__ = !!chainAll;\n      this.__index__ = 0;\n      this.__values__ = undefined;\n    }\n\n    /**\n     * By default, the template delimiters used by lodash are like those in\n     * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n     * following template settings to use alternative delimiters.\n     *\n     * **Security:** See\n     * [threat model](https://github.com/lodash/lodash/blob/main/threat-model.md)\n     * — `_.template` is insecure and will be removed in v5.\n     *\n     * @static\n     * @memberOf _\n     * @type {Object}\n     */\n    lodash.templateSettings = {\n\n      /**\n       * Used to detect `data` property values to be HTML-escaped.\n       *\n       * @memberOf _.templateSettings\n       * @type {RegExp}\n       */\n      'escape': reEscape,\n\n      /**\n       * Used to detect code to be evaluated.\n       *\n       * @memberOf _.templateSettings\n       * @type {RegExp}\n       */\n      'evaluate': reEvaluate,\n\n      /**\n       * Used to detect `data` property values to inject.\n       *\n       * @memberOf _.templateSettings\n       * @type {RegExp}\n       */\n      'interpolate': reInterpolate,\n\n      /**\n       * Used to reference the data object in the template text.\n       *\n       * @memberOf _.templateSettings\n       * @type {string}\n       */\n      'variable': '',\n\n      /**\n       * Used to import variables into the compiled template.\n       *\n       * @memberOf _.templateSettings\n       * @type {Object}\n       */\n      'imports': {\n\n        /**\n         * A reference to the `lodash` function.\n         *\n         * @memberOf _.templateSettings.imports\n         * @type {Function}\n         */\n        '_': lodash\n      }\n    };\n\n    // Ensure wrappers are instances of `baseLodash`.\n    lodash.prototype = baseLodash.prototype;\n    lodash.prototype.constructor = lodash;\n\n    LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n    LodashWrapper.prototype.constructor = LodashWrapper;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n     *\n     * @private\n     * @constructor\n     * @param {*} value The value to wrap.\n     */\n    function LazyWrapper(value) {\n      this.__wrapped__ = value;\n      this.__actions__ = [];\n      this.__dir__ = 1;\n      this.__filtered__ = false;\n      this.__iteratees__ = [];\n      this.__takeCount__ = MAX_ARRAY_LENGTH;\n      this.__views__ = [];\n    }\n\n    /**\n     * Creates a clone of the lazy wrapper object.\n     *\n     * @private\n     * @name clone\n     * @memberOf LazyWrapper\n     * @returns {Object} Returns the cloned `LazyWrapper` object.\n     */\n    function lazyClone() {\n      var result = new LazyWrapper(this.__wrapped__);\n      result.__actions__ = copyArray(this.__actions__);\n      result.__dir__ = this.__dir__;\n      result.__filtered__ = this.__filtered__;\n      result.__iteratees__ = copyArray(this.__iteratees__);\n      result.__takeCount__ = this.__takeCount__;\n      result.__views__ = copyArray(this.__views__);\n      return result;\n    }\n\n    /**\n     * Reverses the direction of lazy iteration.\n     *\n     * @private\n     * @name reverse\n     * @memberOf LazyWrapper\n     * @returns {Object} Returns the new reversed `LazyWrapper` object.\n     */\n    function lazyReverse() {\n      if (this.__filtered__) {\n        var result = new LazyWrapper(this);\n        result.__dir__ = -1;\n        result.__filtered__ = true;\n      } else {\n        result = this.clone();\n        result.__dir__ *= -1;\n      }\n      return result;\n    }\n\n    /**\n     * Extracts the unwrapped value from its lazy wrapper.\n     *\n     * @private\n     * @name value\n     * @memberOf LazyWrapper\n     * @returns {*} Returns the unwrapped value.\n     */\n    function lazyValue() {\n      var array = this.__wrapped__.value(),\n          dir = this.__dir__,\n          isArr = isArray(array),\n          isRight = dir < 0,\n          arrLength = isArr ? array.length : 0,\n          view = getView(0, arrLength, this.__views__),\n          start = view.start,\n          end = view.end,\n          length = end - start,\n          index = isRight ? end : (start - 1),\n          iteratees = this.__iteratees__,\n          iterLength = iteratees.length,\n          resIndex = 0,\n          takeCount = nativeMin(length, this.__takeCount__);\n\n      if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n        return baseWrapperValue(array, this.__actions__);\n      }\n      var result = [];\n\n      outer:\n      while (length-- && resIndex < takeCount) {\n        index += dir;\n\n        var iterIndex = -1,\n            value = array[index];\n\n        while (++iterIndex < iterLength) {\n          var data = iteratees[iterIndex],\n              iteratee = data.iteratee,\n              type = data.type,\n              computed = iteratee(value);\n\n          if (type == LAZY_MAP_FLAG) {\n            value = computed;\n          } else if (!computed) {\n            if (type == LAZY_FILTER_FLAG) {\n              continue outer;\n            } else {\n              break outer;\n            }\n          }\n        }\n        result[resIndex++] = value;\n      }\n      return result;\n    }\n\n    // Ensure `LazyWrapper` is an instance of `baseLodash`.\n    LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n    LazyWrapper.prototype.constructor = LazyWrapper;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates a hash object.\n     *\n     * @private\n     * @constructor\n     * @param {Array} [entries] The key-value pairs to cache.\n     */\n    function Hash(entries) {\n      var index = -1,\n          length = entries == null ? 0 : entries.length;\n\n      this.clear();\n      while (++index < length) {\n        var entry = entries[index];\n        this.set(entry[0], entry[1]);\n      }\n    }\n\n    /**\n     * Removes all key-value entries from the hash.\n     *\n     * @private\n     * @name clear\n     * @memberOf Hash\n     */\n    function hashClear() {\n      this.__data__ = nativeCreate ? nativeCreate(null) : {};\n      this.size = 0;\n    }\n\n    /**\n     * Removes `key` and its value from the hash.\n     *\n     * @private\n     * @name delete\n     * @memberOf Hash\n     * @param {Object} hash The hash to modify.\n     * @param {string} key The key of the value to remove.\n     * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n     */\n    function hashDelete(key) {\n      var result = this.has(key) && delete this.__data__[key];\n      this.size -= result ? 1 : 0;\n      return result;\n    }\n\n    /**\n     * Gets the hash value for `key`.\n     *\n     * @private\n     * @name get\n     * @memberOf Hash\n     * @param {string} key The key of the value to get.\n     * @returns {*} Returns the entry value.\n     */\n    function hashGet(key) {\n      var data = this.__data__;\n      if (nativeCreate) {\n        var result = data[key];\n        return result === HASH_UNDEFINED ? undefined : result;\n      }\n      return hasOwnProperty.call(data, key) ? data[key] : undefined;\n    }\n\n    /**\n     * Checks if a hash value for `key` exists.\n     *\n     * @private\n     * @name has\n     * @memberOf Hash\n     * @param {string} key The key of the entry to check.\n     * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n     */\n    function hashHas(key) {\n      var data = this.__data__;\n      return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n    }\n\n    /**\n     * Sets the hash `key` to `value`.\n     *\n     * @private\n     * @name set\n     * @memberOf Hash\n     * @param {string} key The key of the value to set.\n     * @param {*} value The value to set.\n     * @returns {Object} Returns the hash instance.\n     */\n    function hashSet(key, value) {\n      var data = this.__data__;\n      this.size += this.has(key) ? 0 : 1;\n      data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n      return this;\n    }\n\n    // Add methods to `Hash`.\n    Hash.prototype.clear = hashClear;\n    Hash.prototype['delete'] = hashDelete;\n    Hash.prototype.get = hashGet;\n    Hash.prototype.has = hashHas;\n    Hash.prototype.set = hashSet;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates an list cache object.\n     *\n     * @private\n     * @constructor\n     * @param {Array} [entries] The key-value pairs to cache.\n     */\n    function ListCache(entries) {\n      var index = -1,\n          length = entries == null ? 0 : entries.length;\n\n      this.clear();\n      while (++index < length) {\n        var entry = entries[index];\n        this.set(entry[0], entry[1]);\n      }\n    }\n\n    /**\n     * Removes all key-value entries from the list cache.\n     *\n     * @private\n     * @name clear\n     * @memberOf ListCache\n     */\n    function listCacheClear() {\n      this.__data__ = [];\n      this.size = 0;\n    }\n\n    /**\n     * Removes `key` and its value from the list cache.\n     *\n     * @private\n     * @name delete\n     * @memberOf ListCache\n     * @param {string} key The key of the value to remove.\n     * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n     */\n    function listCacheDelete(key) {\n      var data = this.__data__,\n          index = assocIndexOf(data, key);\n\n      if (index < 0) {\n        return false;\n      }\n      var lastIndex = data.length - 1;\n      if (index == lastIndex) {\n        data.pop();\n      } else {\n        splice.call(data, index, 1);\n      }\n      --this.size;\n      return true;\n    }\n\n    /**\n     * Gets the list cache value for `key`.\n     *\n     * @private\n     * @name get\n     * @memberOf ListCache\n     * @param {string} key The key of the value to get.\n     * @returns {*} Returns the entry value.\n     */\n    function listCacheGet(key) {\n      var data = this.__data__,\n          index = assocIndexOf(data, key);\n\n      return index < 0 ? undefined : data[index][1];\n    }\n\n    /**\n     * Checks if a list cache value for `key` exists.\n     *\n     * @private\n     * @name has\n     * @memberOf ListCache\n     * @param {string} key The key of the entry to check.\n     * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n     */\n    function listCacheHas(key) {\n      return assocIndexOf(this.__data__, key) > -1;\n    }\n\n    /**\n     * Sets the list cache `key` to `value`.\n     *\n     * @private\n     * @name set\n     * @memberOf ListCache\n     * @param {string} key The key of the value to set.\n     * @param {*} value The value to set.\n     * @returns {Object} Returns the list cache instance.\n     */\n    function listCacheSet(key, value) {\n      var data = this.__data__,\n          index = assocIndexOf(data, key);\n\n      if (index < 0) {\n        ++this.size;\n        data.push([key, value]);\n      } else {\n        data[index][1] = value;\n      }\n      return this;\n    }\n\n    // Add methods to `ListCache`.\n    ListCache.prototype.clear = listCacheClear;\n    ListCache.prototype['delete'] = listCacheDelete;\n    ListCache.prototype.get = listCacheGet;\n    ListCache.prototype.has = listCacheHas;\n    ListCache.prototype.set = listCacheSet;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates a map cache object to store key-value pairs.\n     *\n     * @private\n     * @constructor\n     * @param {Array} [entries] The key-value pairs to cache.\n     */\n    function MapCache(entries) {\n      var index = -1,\n          length = entries == null ? 0 : entries.length;\n\n      this.clear();\n      while (++index < length) {\n        var entry = entries[index];\n        this.set(entry[0], entry[1]);\n      }\n    }\n\n    /**\n     * Removes all key-value entries from the map.\n     *\n     * @private\n     * @name clear\n     * @memberOf MapCache\n     */\n    function mapCacheClear() {\n      this.size = 0;\n      this.__data__ = {\n        'hash': new Hash,\n        'map': new (Map || ListCache),\n        'string': new Hash\n      };\n    }\n\n    /**\n     * Removes `key` and its value from the map.\n     *\n     * @private\n     * @name delete\n     * @memberOf MapCache\n     * @param {string} key The key of the value to remove.\n     * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n     */\n    function mapCacheDelete(key) {\n      var result = getMapData(this, key)['delete'](key);\n      this.size -= result ? 1 : 0;\n      return result;\n    }\n\n    /**\n     * Gets the map value for `key`.\n     *\n     * @private\n     * @name get\n     * @memberOf MapCache\n     * @param {string} key The key of the value to get.\n     * @returns {*} Returns the entry value.\n     */\n    function mapCacheGet(key) {\n      return getMapData(this, key).get(key);\n    }\n\n    /**\n     * Checks if a map value for `key` exists.\n     *\n     * @private\n     * @name has\n     * @memberOf MapCache\n     * @param {string} key The key of the entry to check.\n     * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n     */\n    function mapCacheHas(key) {\n      return getMapData(this, key).has(key);\n    }\n\n    /**\n     * Sets the map `key` to `value`.\n     *\n     * @private\n     * @name set\n     * @memberOf MapCache\n     * @param {string} key The key of the value to set.\n     * @param {*} value The value to set.\n     * @returns {Object} Returns the map cache instance.\n     */\n    function mapCacheSet(key, value) {\n      var data = getMapData(this, key),\n          size = data.size;\n\n      data.set(key, value);\n      this.size += data.size == size ? 0 : 1;\n      return this;\n    }\n\n    // Add methods to `MapCache`.\n    MapCache.prototype.clear = mapCacheClear;\n    MapCache.prototype['delete'] = mapCacheDelete;\n    MapCache.prototype.get = mapCacheGet;\n    MapCache.prototype.has = mapCacheHas;\n    MapCache.prototype.set = mapCacheSet;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     *\n     * Creates an array cache object to store unique values.\n     *\n     * @private\n     * @constructor\n     * @param {Array} [values] The values to cache.\n     */\n    function SetCache(values) {\n      var index = -1,\n          length = values == null ? 0 : values.length;\n\n      this.__data__ = new MapCache;\n      while (++index < length) {\n        this.add(values[index]);\n      }\n    }\n\n    /**\n     * Adds `value` to the array cache.\n     *\n     * @private\n     * @name add\n     * @memberOf SetCache\n     * @alias push\n     * @param {*} value The value to cache.\n     * @returns {Object} Returns the cache instance.\n     */\n    function setCacheAdd(value) {\n      this.__data__.set(value, HASH_UNDEFINED);\n      return this;\n    }\n\n    /**\n     * Checks if `value` is in the array cache.\n     *\n     * @private\n     * @name has\n     * @memberOf SetCache\n     * @param {*} value The value to search for.\n     * @returns {boolean} Returns `true` if `value` is found, else `false`.\n     */\n    function setCacheHas(value) {\n      return this.__data__.has(value);\n    }\n\n    // Add methods to `SetCache`.\n    SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n    SetCache.prototype.has = setCacheHas;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates a stack cache object to store key-value pairs.\n     *\n     * @private\n     * @constructor\n     * @param {Array} [entries] The key-value pairs to cache.\n     */\n    function Stack(entries) {\n      var data = this.__data__ = new ListCache(entries);\n      this.size = data.size;\n    }\n\n    /**\n     * Removes all key-value entries from the stack.\n     *\n     * @private\n     * @name clear\n     * @memberOf Stack\n     */\n    function stackClear() {\n      this.__data__ = new ListCache;\n      this.size = 0;\n    }\n\n    /**\n     * Removes `key` and its value from the stack.\n     *\n     * @private\n     * @name delete\n     * @memberOf Stack\n     * @param {string} key The key of the value to remove.\n     * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n     */\n    function stackDelete(key) {\n      var data = this.__data__,\n          result = data['delete'](key);\n\n      this.size = data.size;\n      return result;\n    }\n\n    /**\n     * Gets the stack value for `key`.\n     *\n     * @private\n     * @name get\n     * @memberOf Stack\n     * @param {string} key The key of the value to get.\n     * @returns {*} Returns the entry value.\n     */\n    function stackGet(key) {\n      return this.__data__.get(key);\n    }\n\n    /**\n     * Checks if a stack value for `key` exists.\n     *\n     * @private\n     * @name has\n     * @memberOf Stack\n     * @param {string} key The key of the entry to check.\n     * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n     */\n    function stackHas(key) {\n      return this.__data__.has(key);\n    }\n\n    /**\n     * Sets the stack `key` to `value`.\n     *\n     * @private\n     * @name set\n     * @memberOf Stack\n     * @param {string} key The key of the value to set.\n     * @param {*} value The value to set.\n     * @returns {Object} Returns the stack cache instance.\n     */\n    function stackSet(key, value) {\n      var data = this.__data__;\n      if (data instanceof ListCache) {\n        var pairs = data.__data__;\n        if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n          pairs.push([key, value]);\n          this.size = ++data.size;\n          return this;\n        }\n        data = this.__data__ = new MapCache(pairs);\n      }\n      data.set(key, value);\n      this.size = data.size;\n      return this;\n    }\n\n    // Add methods to `Stack`.\n    Stack.prototype.clear = stackClear;\n    Stack.prototype['delete'] = stackDelete;\n    Stack.prototype.get = stackGet;\n    Stack.prototype.has = stackHas;\n    Stack.prototype.set = stackSet;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates an array of the enumerable property names of the array-like `value`.\n     *\n     * @private\n     * @param {*} value The value to query.\n     * @param {boolean} inherited Specify returning inherited property names.\n     * @returns {Array} Returns the array of property names.\n     */\n    function arrayLikeKeys(value, inherited) {\n      var isArr = isArray(value),\n          isArg = !isArr && isArguments(value),\n          isBuff = !isArr && !isArg && isBuffer(value),\n          isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n          skipIndexes = isArr || isArg || isBuff || isType,\n          result = skipIndexes ? baseTimes(value.length, String) : [],\n          length = result.length;\n\n      for (var key in value) {\n        if ((inherited || hasOwnProperty.call(value, key)) &&\n            !(skipIndexes && (\n               // Safari 9 has enumerable `arguments.length` in strict mode.\n               key == 'length' ||\n               // Node.js 0.10 has enumerable non-index properties on buffers.\n               (isBuff && (key == 'offset' || key == 'parent')) ||\n               // PhantomJS 2 has enumerable non-index properties on typed arrays.\n               (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n               // Skip index properties.\n               isIndex(key, length)\n            ))) {\n          result.push(key);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * A specialized version of `_.sample` for arrays.\n     *\n     * @private\n     * @param {Array} array The array to sample.\n     * @returns {*} Returns the random element.\n     */\n    function arraySample(array) {\n      var length = array.length;\n      return length ? array[baseRandom(0, length - 1)] : undefined;\n    }\n\n    /**\n     * A specialized version of `_.sampleSize` for arrays.\n     *\n     * @private\n     * @param {Array} array The array to sample.\n     * @param {number} n The number of elements to sample.\n     * @returns {Array} Returns the random elements.\n     */\n    function arraySampleSize(array, n) {\n      return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n    }\n\n    /**\n     * A specialized version of `_.shuffle` for arrays.\n     *\n     * @private\n     * @param {Array} array The array to shuffle.\n     * @returns {Array} Returns the new shuffled array.\n     */\n    function arrayShuffle(array) {\n      return shuffleSelf(copyArray(array));\n    }\n\n    /**\n     * This function is like `assignValue` except that it doesn't assign\n     * `undefined` values.\n     *\n     * @private\n     * @param {Object} object The object to modify.\n     * @param {string} key The key of the property to assign.\n     * @param {*} value The value to assign.\n     */\n    function assignMergeValue(object, key, value) {\n      if ((value !== undefined && !eq(object[key], value)) ||\n          (value === undefined && !(key in object))) {\n        baseAssignValue(object, key, value);\n      }\n    }\n\n    /**\n     * Assigns `value` to `key` of `object` if the existing value is not equivalent\n     * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons.\n     *\n     * @private\n     * @param {Object} object The object to modify.\n     * @param {string} key The key of the property to assign.\n     * @param {*} value The value to assign.\n     */\n    function assignValue(object, key, value) {\n      var objValue = object[key];\n      if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n          (value === undefined && !(key in object))) {\n        baseAssignValue(object, key, value);\n      }\n    }\n\n    /**\n     * Gets the index at which the `key` is found in `array` of key-value pairs.\n     *\n     * @private\n     * @param {Array} array The array to inspect.\n     * @param {*} key The key to search for.\n     * @returns {number} Returns the index of the matched value, else `-1`.\n     */\n    function assocIndexOf(array, key) {\n      var length = array.length;\n      while (length--) {\n        if (eq(array[length][0], key)) {\n          return length;\n        }\n      }\n      return -1;\n    }\n\n    /**\n     * Aggregates elements of `collection` on `accumulator` with keys transformed\n     * by `iteratee` and values set by `setter`.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} setter The function to set `accumulator` values.\n     * @param {Function} iteratee The iteratee to transform keys.\n     * @param {Object} accumulator The initial aggregated object.\n     * @returns {Function} Returns `accumulator`.\n     */\n    function baseAggregator(collection, setter, iteratee, accumulator) {\n      baseEach(collection, function(value, key, collection) {\n        setter(accumulator, value, iteratee(value), collection);\n      });\n      return accumulator;\n    }\n\n    /**\n     * The base implementation of `_.assign` without support for multiple sources\n     * or `customizer` functions.\n     *\n     * @private\n     * @param {Object} object The destination object.\n     * @param {Object} source The source object.\n     * @returns {Object} Returns `object`.\n     */\n    function baseAssign(object, source) {\n      return object && copyObject(source, keys(source), object);\n    }\n\n    /**\n     * The base implementation of `_.assignIn` without support for multiple sources\n     * or `customizer` functions.\n     *\n     * @private\n     * @param {Object} object The destination object.\n     * @param {Object} source The source object.\n     * @returns {Object} Returns `object`.\n     */\n    function baseAssignIn(object, source) {\n      return object && copyObject(source, keysIn(source), object);\n    }\n\n    /**\n     * The base implementation of `assignValue` and `assignMergeValue` without\n     * value checks.\n     *\n     * @private\n     * @param {Object} object The object to modify.\n     * @param {string} key The key of the property to assign.\n     * @param {*} value The value to assign.\n     */\n    function baseAssignValue(object, key, value) {\n      if (key == '__proto__' && defineProperty) {\n        defineProperty(object, key, {\n          'configurable': true,\n          'enumerable': true,\n          'value': value,\n          'writable': true\n        });\n      } else {\n        object[key] = value;\n      }\n    }\n\n    /**\n     * The base implementation of `_.at` without support for individual paths.\n     *\n     * @private\n     * @param {Object} object The object to iterate over.\n     * @param {string[]} paths The property paths to pick.\n     * @returns {Array} Returns the picked elements.\n     */\n    function baseAt(object, paths) {\n      var index = -1,\n          length = paths.length,\n          result = Array(length),\n          skip = object == null;\n\n      while (++index < length) {\n        result[index] = skip ? undefined : get(object, paths[index]);\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.clamp` which doesn't coerce arguments.\n     *\n     * @private\n     * @param {number} number The number to clamp.\n     * @param {number} [lower] The lower bound.\n     * @param {number} upper The upper bound.\n     * @returns {number} Returns the clamped number.\n     */\n    function baseClamp(number, lower, upper) {\n      if (number === number) {\n        if (upper !== undefined) {\n          number = number <= upper ? number : upper;\n        }\n        if (lower !== undefined) {\n          number = number >= lower ? number : lower;\n        }\n      }\n      return number;\n    }\n\n    /**\n     * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n     * traversed objects.\n     *\n     * @private\n     * @param {*} value The value to clone.\n     * @param {boolean} bitmask The bitmask flags.\n     *  1 - Deep clone\n     *  2 - Flatten inherited properties\n     *  4 - Clone symbols\n     * @param {Function} [customizer] The function to customize cloning.\n     * @param {string} [key] The key of `value`.\n     * @param {Object} [object] The parent object of `value`.\n     * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n     * @returns {*} Returns the cloned value.\n     */\n    function baseClone(value, bitmask, customizer, key, object, stack) {\n      var result,\n          isDeep = bitmask & CLONE_DEEP_FLAG,\n          isFlat = bitmask & CLONE_FLAT_FLAG,\n          isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n      if (customizer) {\n        result = object ? customizer(value, key, object, stack) : customizer(value);\n      }\n      if (result !== undefined) {\n        return result;\n      }\n      if (!isObject(value)) {\n        return value;\n      }\n      var isArr = isArray(value);\n      if (isArr) {\n        result = initCloneArray(value);\n        if (!isDeep) {\n          return copyArray(value, result);\n        }\n      } else {\n        var tag = getTag(value),\n            isFunc = tag == funcTag || tag == genTag;\n\n        if (isBuffer(value)) {\n          return cloneBuffer(value, isDeep);\n        }\n        if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n          result = (isFlat || isFunc) ? {} : initCloneObject(value);\n          if (!isDeep) {\n            return isFlat\n              ? copySymbolsIn(value, baseAssignIn(result, value))\n              : copySymbols(value, baseAssign(result, value));\n          }\n        } else {\n          if (!cloneableTags[tag]) {\n            return object ? value : {};\n          }\n          result = initCloneByTag(value, tag, isDeep);\n        }\n      }\n      // Check for circular references and return its corresponding clone.\n      stack || (stack = new Stack);\n      var stacked = stack.get(value);\n      if (stacked) {\n        return stacked;\n      }\n      stack.set(value, result);\n\n      if (isSet(value)) {\n        value.forEach(function(subValue) {\n          result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n        });\n      } else if (isMap(value)) {\n        value.forEach(function(subValue, key) {\n          result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n        });\n      }\n\n      var keysFunc = isFull\n        ? (isFlat ? getAllKeysIn : getAllKeys)\n        : (isFlat ? keysIn : keys);\n\n      var props = isArr ? undefined : keysFunc(value);\n      arrayEach(props || value, function(subValue, key) {\n        if (props) {\n          key = subValue;\n          subValue = value[key];\n        }\n        // Recursively populate clone (susceptible to call stack limits).\n        assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n      });\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.conforms` which doesn't clone `source`.\n     *\n     * @private\n     * @param {Object} source The object of property predicates to conform to.\n     * @returns {Function} Returns the new spec function.\n     */\n    function baseConforms(source) {\n      var props = keys(source);\n      return function(object) {\n        return baseConformsTo(object, source, props);\n      };\n    }\n\n    /**\n     * The base implementation of `_.conformsTo` which accepts `props` to check.\n     *\n     * @private\n     * @param {Object} object The object to inspect.\n     * @param {Object} source The object of property predicates to conform to.\n     * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n     */\n    function baseConformsTo(object, source, props) {\n      var length = props.length;\n      if (object == null) {\n        return !length;\n      }\n      object = Object(object);\n      while (length--) {\n        var key = props[length],\n            predicate = source[key],\n            value = object[key];\n\n        if ((value === undefined && !(key in object)) || !predicate(value)) {\n          return false;\n        }\n      }\n      return true;\n    }\n\n    /**\n     * The base implementation of `_.delay` and `_.defer` which accepts `args`\n     * to provide to `func`.\n     *\n     * @private\n     * @param {Function} func The function to delay.\n     * @param {number} wait The number of milliseconds to delay invocation.\n     * @param {Array} args The arguments to provide to `func`.\n     * @returns {number|Object} Returns the timer id or timeout object.\n     */\n    function baseDelay(func, wait, args) {\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      return setTimeout(function() { func.apply(undefined, args); }, wait);\n    }\n\n    /**\n     * The base implementation of methods like `_.difference` without support\n     * for excluding multiple arrays or iteratee shorthands.\n     *\n     * @private\n     * @param {Array} array The array to inspect.\n     * @param {Array} values The values to exclude.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of filtered values.\n     */\n    function baseDifference(array, values, iteratee, comparator) {\n      var index = -1,\n          includes = arrayIncludes,\n          isCommon = true,\n          length = array.length,\n          result = [],\n          valuesLength = values.length;\n\n      if (!length) {\n        return result;\n      }\n      if (iteratee) {\n        values = arrayMap(values, baseUnary(iteratee));\n      }\n      if (comparator) {\n        includes = arrayIncludesWith;\n        isCommon = false;\n      }\n      else if (values.length >= LARGE_ARRAY_SIZE) {\n        includes = cacheHas;\n        isCommon = false;\n        values = new SetCache(values);\n      }\n      outer:\n      while (++index < length) {\n        var value = array[index],\n            computed = iteratee == null ? value : iteratee(value);\n\n        value = (comparator || value !== 0) ? value : 0;\n        if (isCommon && computed === computed) {\n          var valuesIndex = valuesLength;\n          while (valuesIndex--) {\n            if (values[valuesIndex] === computed) {\n              continue outer;\n            }\n          }\n          result.push(value);\n        }\n        else if (!includes(values, computed, comparator)) {\n          result.push(value);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.forEach` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} iteratee The function invoked per iteration.\n     * @returns {Array|Object} Returns `collection`.\n     */\n    var baseEach = createBaseEach(baseForOwn);\n\n    /**\n     * The base implementation of `_.forEachRight` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} iteratee The function invoked per iteration.\n     * @returns {Array|Object} Returns `collection`.\n     */\n    var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n    /**\n     * The base implementation of `_.every` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} predicate The function invoked per iteration.\n     * @returns {boolean} Returns `true` if all elements pass the predicate check,\n     *  else `false`\n     */\n    function baseEvery(collection, predicate) {\n      var result = true;\n      baseEach(collection, function(value, index, collection) {\n        result = !!predicate(value, index, collection);\n        return result;\n      });\n      return result;\n    }\n\n    /**\n     * The base implementation of methods like `_.max` and `_.min` which accepts a\n     * `comparator` to determine the extremum value.\n     *\n     * @private\n     * @param {Array} array The array to iterate over.\n     * @param {Function} iteratee The iteratee invoked per iteration.\n     * @param {Function} comparator The comparator used to compare values.\n     * @returns {*} Returns the extremum value.\n     */\n    function baseExtremum(array, iteratee, comparator) {\n      var index = -1,\n          length = array.length;\n\n      while (++index < length) {\n        var value = array[index],\n            current = iteratee(value);\n\n        if (current != null && (computed === undefined\n              ? (current === current && !isSymbol(current))\n              : comparator(current, computed)\n            )) {\n          var computed = current,\n              result = value;\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.fill` without an iteratee call guard.\n     *\n     * @private\n     * @param {Array} array The array to fill.\n     * @param {*} value The value to fill `array` with.\n     * @param {number} [start=0] The start position.\n     * @param {number} [end=array.length] The end position.\n     * @returns {Array} Returns `array`.\n     */\n    function baseFill(array, value, start, end) {\n      var length = array.length;\n\n      start = toInteger(start);\n      if (start < 0) {\n        start = -start > length ? 0 : (length + start);\n      }\n      end = (end === undefined || end > length) ? length : toInteger(end);\n      if (end < 0) {\n        end += length;\n      }\n      end = start > end ? 0 : toLength(end);\n      while (start < end) {\n        array[start++] = value;\n      }\n      return array;\n    }\n\n    /**\n     * The base implementation of `_.filter` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} predicate The function invoked per iteration.\n     * @returns {Array} Returns the new filtered array.\n     */\n    function baseFilter(collection, predicate) {\n      var result = [];\n      baseEach(collection, function(value, index, collection) {\n        if (predicate(value, index, collection)) {\n          result.push(value);\n        }\n      });\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.flatten` with support for restricting flattening.\n     *\n     * @private\n     * @param {Array} array The array to flatten.\n     * @param {number} depth The maximum recursion depth.\n     * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n     * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n     * @param {Array} [result=[]] The initial result value.\n     * @returns {Array} Returns the new flattened array.\n     */\n    function baseFlatten(array, depth, predicate, isStrict, result) {\n      var index = -1,\n          length = array.length;\n\n      predicate || (predicate = isFlattenable);\n      result || (result = []);\n\n      while (++index < length) {\n        var value = array[index];\n        if (depth > 0 && predicate(value)) {\n          if (depth > 1) {\n            // Recursively flatten arrays (susceptible to call stack limits).\n            baseFlatten(value, depth - 1, predicate, isStrict, result);\n          } else {\n            arrayPush(result, value);\n          }\n        } else if (!isStrict) {\n          result[result.length] = value;\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `baseForOwn` which iterates over `object`\n     * properties returned by `keysFunc` and invokes `iteratee` for each property.\n     * Iteratee functions may exit iteration early by explicitly returning `false`.\n     *\n     * @private\n     * @param {Object} object The object to iterate over.\n     * @param {Function} iteratee The function invoked per iteration.\n     * @param {Function} keysFunc The function to get the keys of `object`.\n     * @returns {Object} Returns `object`.\n     */\n    var baseFor = createBaseFor();\n\n    /**\n     * This function is like `baseFor` except that it iterates over properties\n     * in the opposite order.\n     *\n     * @private\n     * @param {Object} object The object to iterate over.\n     * @param {Function} iteratee The function invoked per iteration.\n     * @param {Function} keysFunc The function to get the keys of `object`.\n     * @returns {Object} Returns `object`.\n     */\n    var baseForRight = createBaseFor(true);\n\n    /**\n     * The base implementation of `_.forOwn` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Object} object The object to iterate over.\n     * @param {Function} iteratee The function invoked per iteration.\n     * @returns {Object} Returns `object`.\n     */\n    function baseForOwn(object, iteratee) {\n      return object && baseFor(object, iteratee, keys);\n    }\n\n    /**\n     * The base implementation of `_.forOwnRight` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Object} object The object to iterate over.\n     * @param {Function} iteratee The function invoked per iteration.\n     * @returns {Object} Returns `object`.\n     */\n    function baseForOwnRight(object, iteratee) {\n      return object && baseForRight(object, iteratee, keys);\n    }\n\n    /**\n     * The base implementation of `_.functions` which creates an array of\n     * `object` function property names filtered from `props`.\n     *\n     * @private\n     * @param {Object} object The object to inspect.\n     * @param {Array} props The property names to filter.\n     * @returns {Array} Returns the function names.\n     */\n    function baseFunctions(object, props) {\n      return arrayFilter(props, function(key) {\n        return isFunction(object[key]);\n      });\n    }\n\n    /**\n     * The base implementation of `_.get` without support for default values.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path of the property to get.\n     * @returns {*} Returns the resolved value.\n     */\n    function baseGet(object, path) {\n      path = castPath(path, object);\n\n      var index = 0,\n          length = path.length;\n\n      while (object != null && index < length) {\n        object = object[toKey(path[index++])];\n      }\n      return (index && index == length) ? object : undefined;\n    }\n\n    /**\n     * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n     * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n     * symbols of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {Function} keysFunc The function to get the keys of `object`.\n     * @param {Function} symbolsFunc The function to get the symbols of `object`.\n     * @returns {Array} Returns the array of property names and symbols.\n     */\n    function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n      var result = keysFunc(object);\n      return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n    }\n\n    /**\n     * The base implementation of `getTag` without fallbacks for buggy environments.\n     *\n     * @private\n     * @param {*} value The value to query.\n     * @returns {string} Returns the `toStringTag`.\n     */\n    function baseGetTag(value) {\n      if (value == null) {\n        return value === undefined ? undefinedTag : nullTag;\n      }\n      return (symToStringTag && symToStringTag in Object(value))\n        ? getRawTag(value)\n        : objectToString(value);\n    }\n\n    /**\n     * The base implementation of `_.gt` which doesn't coerce arguments.\n     *\n     * @private\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if `value` is greater than `other`,\n     *  else `false`.\n     */\n    function baseGt(value, other) {\n      return value > other;\n    }\n\n    /**\n     * The base implementation of `_.has` without support for deep paths.\n     *\n     * @private\n     * @param {Object} [object] The object to query.\n     * @param {Array|string} key The key to check.\n     * @returns {boolean} Returns `true` if `key` exists, else `false`.\n     */\n    function baseHas(object, key) {\n      return object != null && hasOwnProperty.call(object, key);\n    }\n\n    /**\n     * The base implementation of `_.hasIn` without support for deep paths.\n     *\n     * @private\n     * @param {Object} [object] The object to query.\n     * @param {Array|string} key The key to check.\n     * @returns {boolean} Returns `true` if `key` exists, else `false`.\n     */\n    function baseHasIn(object, key) {\n      return object != null && key in Object(object);\n    }\n\n    /**\n     * The base implementation of `_.inRange` which doesn't coerce arguments.\n     *\n     * @private\n     * @param {number} number The number to check.\n     * @param {number} start The start of the range.\n     * @param {number} end The end of the range.\n     * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n     */\n    function baseInRange(number, start, end) {\n      return number >= nativeMin(start, end) && number < nativeMax(start, end);\n    }\n\n    /**\n     * The base implementation of methods like `_.intersection`, without support\n     * for iteratee shorthands, that accepts an array of arrays to inspect.\n     *\n     * @private\n     * @param {Array} arrays The arrays to inspect.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of shared values.\n     */\n    function baseIntersection(arrays, iteratee, comparator) {\n      var includes = comparator ? arrayIncludesWith : arrayIncludes,\n          length = arrays[0].length,\n          othLength = arrays.length,\n          othIndex = othLength,\n          caches = Array(othLength),\n          maxLength = Infinity,\n          result = [];\n\n      while (othIndex--) {\n        var array = arrays[othIndex];\n        if (othIndex && iteratee) {\n          array = arrayMap(array, baseUnary(iteratee));\n        }\n        maxLength = nativeMin(array.length, maxLength);\n        caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n          ? new SetCache(othIndex && array)\n          : undefined;\n      }\n      array = arrays[0];\n\n      var index = -1,\n          seen = caches[0];\n\n      outer:\n      while (++index < length && result.length < maxLength) {\n        var value = array[index],\n            computed = iteratee ? iteratee(value) : value;\n\n        value = (comparator || value !== 0) ? value : 0;\n        if (!(seen\n              ? cacheHas(seen, computed)\n              : includes(result, computed, comparator)\n            )) {\n          othIndex = othLength;\n          while (--othIndex) {\n            var cache = caches[othIndex];\n            if (!(cache\n                  ? cacheHas(cache, computed)\n                  : includes(arrays[othIndex], computed, comparator))\n                ) {\n              continue outer;\n            }\n          }\n          if (seen) {\n            seen.push(computed);\n          }\n          result.push(value);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.invert` and `_.invertBy` which inverts\n     * `object` with values transformed by `iteratee` and set by `setter`.\n     *\n     * @private\n     * @param {Object} object The object to iterate over.\n     * @param {Function} setter The function to set `accumulator` values.\n     * @param {Function} iteratee The iteratee to transform values.\n     * @param {Object} accumulator The initial inverted object.\n     * @returns {Function} Returns `accumulator`.\n     */\n    function baseInverter(object, setter, iteratee, accumulator) {\n      baseForOwn(object, function(value, key, object) {\n        setter(accumulator, iteratee(value), key, object);\n      });\n      return accumulator;\n    }\n\n    /**\n     * The base implementation of `_.invoke` without support for individual\n     * method arguments.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path of the method to invoke.\n     * @param {Array} args The arguments to invoke the method with.\n     * @returns {*} Returns the result of the invoked method.\n     */\n    function baseInvoke(object, path, args) {\n      path = castPath(path, object);\n      object = parent(object, path);\n      var func = object == null ? object : object[toKey(last(path))];\n      return func == null ? undefined : apply(func, object, args);\n    }\n\n    /**\n     * The base implementation of `_.isArguments`.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n     */\n    function baseIsArguments(value) {\n      return isObjectLike(value) && baseGetTag(value) == argsTag;\n    }\n\n    /**\n     * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n     */\n    function baseIsArrayBuffer(value) {\n      return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n    }\n\n    /**\n     * The base implementation of `_.isDate` without Node.js optimizations.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n     */\n    function baseIsDate(value) {\n      return isObjectLike(value) && baseGetTag(value) == dateTag;\n    }\n\n    /**\n     * The base implementation of `_.isEqual` which supports partial comparisons\n     * and tracks traversed objects.\n     *\n     * @private\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @param {boolean} bitmask The bitmask flags.\n     *  1 - Unordered comparison\n     *  2 - Partial comparison\n     * @param {Function} [customizer] The function to customize comparisons.\n     * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n     * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n     */\n    function baseIsEqual(value, other, bitmask, customizer, stack) {\n      if (value === other) {\n        return true;\n      }\n      if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n        return value !== value && other !== other;\n      }\n      return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n    }\n\n    /**\n     * A specialized version of `baseIsEqual` for arrays and objects which performs\n     * deep comparisons and tracks traversed objects enabling objects with circular\n     * references to be compared.\n     *\n     * @private\n     * @param {Object} object The object to compare.\n     * @param {Object} other The other object to compare.\n     * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n     * @param {Function} customizer The function to customize comparisons.\n     * @param {Function} equalFunc The function to determine equivalents of values.\n     * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n     * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n     */\n    function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n      var objIsArr = isArray(object),\n          othIsArr = isArray(other),\n          objTag = objIsArr ? arrayTag : getTag(object),\n          othTag = othIsArr ? arrayTag : getTag(other);\n\n      objTag = objTag == argsTag ? objectTag : objTag;\n      othTag = othTag == argsTag ? objectTag : othTag;\n\n      var objIsObj = objTag == objectTag,\n          othIsObj = othTag == objectTag,\n          isSameTag = objTag == othTag;\n\n      if (isSameTag && isBuffer(object)) {\n        if (!isBuffer(other)) {\n          return false;\n        }\n        objIsArr = true;\n        objIsObj = false;\n      }\n      if (isSameTag && !objIsObj) {\n        stack || (stack = new Stack);\n        return (objIsArr || isTypedArray(object))\n          ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n          : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n      }\n      if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n        var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n            othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n        if (objIsWrapped || othIsWrapped) {\n          var objUnwrapped = objIsWrapped ? object.value() : object,\n              othUnwrapped = othIsWrapped ? other.value() : other;\n\n          stack || (stack = new Stack);\n          return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n        }\n      }\n      if (!isSameTag) {\n        return false;\n      }\n      stack || (stack = new Stack);\n      return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n    }\n\n    /**\n     * The base implementation of `_.isMap` without Node.js optimizations.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n     */\n    function baseIsMap(value) {\n      return isObjectLike(value) && getTag(value) == mapTag;\n    }\n\n    /**\n     * The base implementation of `_.isMatch` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Object} object The object to inspect.\n     * @param {Object} source The object of property values to match.\n     * @param {Array} matchData The property names, values, and compare flags to match.\n     * @param {Function} [customizer] The function to customize comparisons.\n     * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n     */\n    function baseIsMatch(object, source, matchData, customizer) {\n      var index = matchData.length,\n          length = index,\n          noCustomizer = !customizer;\n\n      if (object == null) {\n        return !length;\n      }\n      object = Object(object);\n      while (index--) {\n        var data = matchData[index];\n        if ((noCustomizer && data[2])\n              ? data[1] !== object[data[0]]\n              : !(data[0] in object)\n            ) {\n          return false;\n        }\n      }\n      while (++index < length) {\n        data = matchData[index];\n        var key = data[0],\n            objValue = object[key],\n            srcValue = data[1];\n\n        if (noCustomizer && data[2]) {\n          if (objValue === undefined && !(key in object)) {\n            return false;\n          }\n        } else {\n          var stack = new Stack;\n          if (customizer) {\n            var result = customizer(objValue, srcValue, key, object, source, stack);\n          }\n          if (!(result === undefined\n                ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n                : result\n              )) {\n            return false;\n          }\n        }\n      }\n      return true;\n    }\n\n    /**\n     * The base implementation of `_.isNative` without bad shim checks.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a native function,\n     *  else `false`.\n     */\n    function baseIsNative(value) {\n      if (!isObject(value) || isMasked(value)) {\n        return false;\n      }\n      var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n      return pattern.test(toSource(value));\n    }\n\n    /**\n     * The base implementation of `_.isRegExp` without Node.js optimizations.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n     */\n    function baseIsRegExp(value) {\n      return isObjectLike(value) && baseGetTag(value) == regexpTag;\n    }\n\n    /**\n     * The base implementation of `_.isSet` without Node.js optimizations.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n     */\n    function baseIsSet(value) {\n      return isObjectLike(value) && getTag(value) == setTag;\n    }\n\n    /**\n     * The base implementation of `_.isTypedArray` without Node.js optimizations.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n     */\n    function baseIsTypedArray(value) {\n      return isObjectLike(value) &&\n        isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n    }\n\n    /**\n     * The base implementation of `_.iteratee`.\n     *\n     * @private\n     * @param {*} [value=_.identity] The value to convert to an iteratee.\n     * @returns {Function} Returns the iteratee.\n     */\n    function baseIteratee(value) {\n      // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n      // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n      if (typeof value == 'function') {\n        return value;\n      }\n      if (value == null) {\n        return identity;\n      }\n      if (typeof value == 'object') {\n        return isArray(value)\n          ? baseMatchesProperty(value[0], value[1])\n          : baseMatches(value);\n      }\n      return property(value);\n    }\n\n    /**\n     * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property names.\n     */\n    function baseKeys(object) {\n      if (!isPrototype(object)) {\n        return nativeKeys(object);\n      }\n      var result = [];\n      for (var key in Object(object)) {\n        if (hasOwnProperty.call(object, key) && key != 'constructor') {\n          result.push(key);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property names.\n     */\n    function baseKeysIn(object) {\n      if (!isObject(object)) {\n        return nativeKeysIn(object);\n      }\n      var isProto = isPrototype(object),\n          result = [];\n\n      for (var key in object) {\n        if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n          result.push(key);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.lt` which doesn't coerce arguments.\n     *\n     * @private\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if `value` is less than `other`,\n     *  else `false`.\n     */\n    function baseLt(value, other) {\n      return value < other;\n    }\n\n    /**\n     * The base implementation of `_.map` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} iteratee The function invoked per iteration.\n     * @returns {Array} Returns the new mapped array.\n     */\n    function baseMap(collection, iteratee) {\n      var index = -1,\n          result = isArrayLike(collection) ? Array(collection.length) : [];\n\n      baseEach(collection, function(value, key, collection) {\n        result[++index] = iteratee(value, key, collection);\n      });\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.matches` which doesn't clone `source`.\n     *\n     * @private\n     * @param {Object} source The object of property values to match.\n     * @returns {Function} Returns the new spec function.\n     */\n    function baseMatches(source) {\n      var matchData = getMatchData(source);\n      if (matchData.length == 1 && matchData[0][2]) {\n        return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n      }\n      return function(object) {\n        return object === source || baseIsMatch(object, source, matchData);\n      };\n    }\n\n    /**\n     * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n     *\n     * @private\n     * @param {string} path The path of the property to get.\n     * @param {*} srcValue The value to match.\n     * @returns {Function} Returns the new spec function.\n     */\n    function baseMatchesProperty(path, srcValue) {\n      if (isKey(path) && isStrictComparable(srcValue)) {\n        return matchesStrictComparable(toKey(path), srcValue);\n      }\n      return function(object) {\n        var objValue = get(object, path);\n        return (objValue === undefined && objValue === srcValue)\n          ? hasIn(object, path)\n          : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n      };\n    }\n\n    /**\n     * The base implementation of `_.merge` without support for multiple sources.\n     *\n     * @private\n     * @param {Object} object The destination object.\n     * @param {Object} source The source object.\n     * @param {number} srcIndex The index of `source`.\n     * @param {Function} [customizer] The function to customize merged values.\n     * @param {Object} [stack] Tracks traversed source values and their merged\n     *  counterparts.\n     */\n    function baseMerge(object, source, srcIndex, customizer, stack) {\n      if (object === source) {\n        return;\n      }\n      baseFor(source, function(srcValue, key) {\n        stack || (stack = new Stack);\n        if (isObject(srcValue)) {\n          baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n        }\n        else {\n          var newValue = customizer\n            ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n            : undefined;\n\n          if (newValue === undefined) {\n            newValue = srcValue;\n          }\n          assignMergeValue(object, key, newValue);\n        }\n      }, keysIn);\n    }\n\n    /**\n     * A specialized version of `baseMerge` for arrays and objects which performs\n     * deep merges and tracks traversed objects enabling objects with circular\n     * references to be merged.\n     *\n     * @private\n     * @param {Object} object The destination object.\n     * @param {Object} source The source object.\n     * @param {string} key The key of the value to merge.\n     * @param {number} srcIndex The index of `source`.\n     * @param {Function} mergeFunc The function to merge values.\n     * @param {Function} [customizer] The function to customize assigned values.\n     * @param {Object} [stack] Tracks traversed source values and their merged\n     *  counterparts.\n     */\n    function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n      var objValue = safeGet(object, key),\n          srcValue = safeGet(source, key),\n          stacked = stack.get(srcValue);\n\n      if (stacked) {\n        assignMergeValue(object, key, stacked);\n        return;\n      }\n      var newValue = customizer\n        ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n        : undefined;\n\n      var isCommon = newValue === undefined;\n\n      if (isCommon) {\n        var isArr = isArray(srcValue),\n            isBuff = !isArr && isBuffer(srcValue),\n            isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n        newValue = srcValue;\n        if (isArr || isBuff || isTyped) {\n          if (isArray(objValue)) {\n            newValue = objValue;\n          }\n          else if (isArrayLikeObject(objValue)) {\n            newValue = copyArray(objValue);\n          }\n          else if (isBuff) {\n            isCommon = false;\n            newValue = cloneBuffer(srcValue, true);\n          }\n          else if (isTyped) {\n            isCommon = false;\n            newValue = cloneTypedArray(srcValue, true);\n          }\n          else {\n            newValue = [];\n          }\n        }\n        else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n          newValue = objValue;\n          if (isArguments(objValue)) {\n            newValue = toPlainObject(objValue);\n          }\n          else if (!isObject(objValue) || isFunction(objValue)) {\n            newValue = initCloneObject(srcValue);\n          }\n        }\n        else {\n          isCommon = false;\n        }\n      }\n      if (isCommon) {\n        // Recursively merge objects and arrays (susceptible to call stack limits).\n        stack.set(srcValue, newValue);\n        mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n        stack['delete'](srcValue);\n      }\n      assignMergeValue(object, key, newValue);\n    }\n\n    /**\n     * The base implementation of `_.nth` which doesn't coerce arguments.\n     *\n     * @private\n     * @param {Array} array The array to query.\n     * @param {number} n The index of the element to return.\n     * @returns {*} Returns the nth element of `array`.\n     */\n    function baseNth(array, n) {\n      var length = array.length;\n      if (!length) {\n        return;\n      }\n      n += n < 0 ? length : 0;\n      return isIndex(n, length) ? array[n] : undefined;\n    }\n\n    /**\n     * The base implementation of `_.orderBy` without param guards.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n     * @param {string[]} orders The sort orders of `iteratees`.\n     * @returns {Array} Returns the new sorted array.\n     */\n    function baseOrderBy(collection, iteratees, orders) {\n      if (iteratees.length) {\n        iteratees = arrayMap(iteratees, function(iteratee) {\n          if (isArray(iteratee)) {\n            return function(value) {\n              return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n            };\n          }\n          return iteratee;\n        });\n      } else {\n        iteratees = [identity];\n      }\n\n      var index = -1;\n      iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n\n      var result = baseMap(collection, function(value, key, collection) {\n        var criteria = arrayMap(iteratees, function(iteratee) {\n          return iteratee(value);\n        });\n        return { 'criteria': criteria, 'index': ++index, 'value': value };\n      });\n\n      return baseSortBy(result, function(object, other) {\n        return compareMultiple(object, other, orders);\n      });\n    }\n\n    /**\n     * The base implementation of `_.pick` without support for individual\n     * property identifiers.\n     *\n     * @private\n     * @param {Object} object The source object.\n     * @param {string[]} paths The property paths to pick.\n     * @returns {Object} Returns the new object.\n     */\n    function basePick(object, paths) {\n      return basePickBy(object, paths, function(value, path) {\n        return hasIn(object, path);\n      });\n    }\n\n    /**\n     * The base implementation of  `_.pickBy` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Object} object The source object.\n     * @param {string[]} paths The property paths to pick.\n     * @param {Function} predicate The function invoked per property.\n     * @returns {Object} Returns the new object.\n     */\n    function basePickBy(object, paths, predicate) {\n      var index = -1,\n          length = paths.length,\n          result = {};\n\n      while (++index < length) {\n        var path = paths[index],\n            value = baseGet(object, path);\n\n        if (predicate(value, path)) {\n          baseSet(result, castPath(path, object), value);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * A specialized version of `baseProperty` which supports deep paths.\n     *\n     * @private\n     * @param {Array|string} path The path of the property to get.\n     * @returns {Function} Returns the new accessor function.\n     */\n    function basePropertyDeep(path) {\n      return function(object) {\n        return baseGet(object, path);\n      };\n    }\n\n    /**\n     * The base implementation of `_.pullAllBy` without support for iteratee\n     * shorthands.\n     *\n     * @private\n     * @param {Array} array The array to modify.\n     * @param {Array} values The values to remove.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns `array`.\n     */\n    function basePullAll(array, values, iteratee, comparator) {\n      var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n          index = -1,\n          length = values.length,\n          seen = array;\n\n      if (array === values) {\n        values = copyArray(values);\n      }\n      if (iteratee) {\n        seen = arrayMap(array, baseUnary(iteratee));\n      }\n      while (++index < length) {\n        var fromIndex = 0,\n            value = values[index],\n            computed = iteratee ? iteratee(value) : value;\n\n        while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n          if (seen !== array) {\n            splice.call(seen, fromIndex, 1);\n          }\n          splice.call(array, fromIndex, 1);\n        }\n      }\n      return array;\n    }\n\n    /**\n     * The base implementation of `_.pullAt` without support for individual\n     * indexes or capturing the removed elements.\n     *\n     * @private\n     * @param {Array} array The array to modify.\n     * @param {number[]} indexes The indexes of elements to remove.\n     * @returns {Array} Returns `array`.\n     */\n    function basePullAt(array, indexes) {\n      var length = array ? indexes.length : 0,\n          lastIndex = length - 1;\n\n      while (length--) {\n        var index = indexes[length];\n        if (length == lastIndex || index !== previous) {\n          var previous = index;\n          if (isIndex(index)) {\n            splice.call(array, index, 1);\n          } else {\n            baseUnset(array, index);\n          }\n        }\n      }\n      return array;\n    }\n\n    /**\n     * The base implementation of `_.random` without support for returning\n     * floating-point numbers.\n     *\n     * @private\n     * @param {number} lower The lower bound.\n     * @param {number} upper The upper bound.\n     * @returns {number} Returns the random number.\n     */\n    function baseRandom(lower, upper) {\n      return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n    }\n\n    /**\n     * The base implementation of `_.range` and `_.rangeRight` which doesn't\n     * coerce arguments.\n     *\n     * @private\n     * @param {number} start The start of the range.\n     * @param {number} end The end of the range.\n     * @param {number} step The value to increment or decrement by.\n     * @param {boolean} [fromRight] Specify iterating from right to left.\n     * @returns {Array} Returns the range of numbers.\n     */\n    function baseRange(start, end, step, fromRight) {\n      var index = -1,\n          length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n          result = Array(length);\n\n      while (length--) {\n        result[fromRight ? length : ++index] = start;\n        start += step;\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.repeat` which doesn't coerce arguments.\n     *\n     * @private\n     * @param {string} string The string to repeat.\n     * @param {number} n The number of times to repeat the string.\n     * @returns {string} Returns the repeated string.\n     */\n    function baseRepeat(string, n) {\n      var result = '';\n      if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n        return result;\n      }\n      // Leverage the exponentiation by squaring algorithm for a faster repeat.\n      // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n      do {\n        if (n % 2) {\n          result += string;\n        }\n        n = nativeFloor(n / 2);\n        if (n) {\n          string += string;\n        }\n      } while (n);\n\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n     *\n     * @private\n     * @param {Function} func The function to apply a rest parameter to.\n     * @param {number} [start=func.length-1] The start position of the rest parameter.\n     * @returns {Function} Returns the new function.\n     */\n    function baseRest(func, start) {\n      return setToString(overRest(func, start, identity), func + '');\n    }\n\n    /**\n     * The base implementation of `_.sample`.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to sample.\n     * @returns {*} Returns the random element.\n     */\n    function baseSample(collection) {\n      return arraySample(values(collection));\n    }\n\n    /**\n     * The base implementation of `_.sampleSize` without param guards.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to sample.\n     * @param {number} n The number of elements to sample.\n     * @returns {Array} Returns the random elements.\n     */\n    function baseSampleSize(collection, n) {\n      var array = values(collection);\n      return shuffleSelf(array, baseClamp(n, 0, array.length));\n    }\n\n    /**\n     * The base implementation of `_.set`.\n     *\n     * @private\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to set.\n     * @param {*} value The value to set.\n     * @param {Function} [customizer] The function to customize path creation.\n     * @returns {Object} Returns `object`.\n     */\n    function baseSet(object, path, value, customizer) {\n      if (!isObject(object)) {\n        return object;\n      }\n      path = castPath(path, object);\n\n      var index = -1,\n          length = path.length,\n          lastIndex = length - 1,\n          nested = object;\n\n      while (nested != null && ++index < length) {\n        var key = toKey(path[index]),\n            newValue = value;\n\n        if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n          return object;\n        }\n\n        if (index != lastIndex) {\n          var objValue = nested[key];\n          newValue = customizer ? customizer(objValue, key, nested) : undefined;\n          if (newValue === undefined) {\n            newValue = isObject(objValue)\n              ? objValue\n              : (isIndex(path[index + 1]) ? [] : {});\n          }\n        }\n        assignValue(nested, key, newValue);\n        nested = nested[key];\n      }\n      return object;\n    }\n\n    /**\n     * The base implementation of `setData` without support for hot loop shorting.\n     *\n     * @private\n     * @param {Function} func The function to associate metadata with.\n     * @param {*} data The metadata.\n     * @returns {Function} Returns `func`.\n     */\n    var baseSetData = !metaMap ? identity : function(func, data) {\n      metaMap.set(func, data);\n      return func;\n    };\n\n    /**\n     * The base implementation of `setToString` without support for hot loop shorting.\n     *\n     * @private\n     * @param {Function} func The function to modify.\n     * @param {Function} string The `toString` result.\n     * @returns {Function} Returns `func`.\n     */\n    var baseSetToString = !defineProperty ? identity : function(func, string) {\n      return defineProperty(func, 'toString', {\n        'configurable': true,\n        'enumerable': false,\n        'value': constant(string),\n        'writable': true\n      });\n    };\n\n    /**\n     * The base implementation of `_.shuffle`.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to shuffle.\n     * @returns {Array} Returns the new shuffled array.\n     */\n    function baseShuffle(collection) {\n      return shuffleSelf(values(collection));\n    }\n\n    /**\n     * The base implementation of `_.slice` without an iteratee call guard.\n     *\n     * @private\n     * @param {Array} array The array to slice.\n     * @param {number} [start=0] The start position.\n     * @param {number} [end=array.length] The end position.\n     * @returns {Array} Returns the slice of `array`.\n     */\n    function baseSlice(array, start, end) {\n      var index = -1,\n          length = array.length;\n\n      if (start < 0) {\n        start = -start > length ? 0 : (length + start);\n      }\n      end = end > length ? length : end;\n      if (end < 0) {\n        end += length;\n      }\n      length = start > end ? 0 : ((end - start) >>> 0);\n      start >>>= 0;\n\n      var result = Array(length);\n      while (++index < length) {\n        result[index] = array[index + start];\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.some` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} predicate The function invoked per iteration.\n     * @returns {boolean} Returns `true` if any element passes the predicate check,\n     *  else `false`.\n     */\n    function baseSome(collection, predicate) {\n      var result;\n\n      baseEach(collection, function(value, index, collection) {\n        result = predicate(value, index, collection);\n        return !result;\n      });\n      return !!result;\n    }\n\n    /**\n     * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n     * performs a binary search of `array` to determine the index at which `value`\n     * should be inserted into `array` in order to maintain its sort order.\n     *\n     * @private\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @param {boolean} [retHighest] Specify returning the highest qualified index.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     */\n    function baseSortedIndex(array, value, retHighest) {\n      var low = 0,\n          high = array == null ? low : array.length;\n\n      if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n        while (low < high) {\n          var mid = (low + high) >>> 1,\n              computed = array[mid];\n\n          if (computed !== null && !isSymbol(computed) &&\n              (retHighest ? (computed <= value) : (computed < value))) {\n            low = mid + 1;\n          } else {\n            high = mid;\n          }\n        }\n        return high;\n      }\n      return baseSortedIndexBy(array, value, identity, retHighest);\n    }\n\n    /**\n     * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n     * which invokes `iteratee` for `value` and each element of `array` to compute\n     * their sort ranking. The iteratee is invoked with one argument; (value).\n     *\n     * @private\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @param {Function} iteratee The iteratee invoked per element.\n     * @param {boolean} [retHighest] Specify returning the highest qualified index.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     */\n    function baseSortedIndexBy(array, value, iteratee, retHighest) {\n      var low = 0,\n          high = array == null ? 0 : array.length;\n      if (high === 0) {\n        return 0;\n      }\n\n      value = iteratee(value);\n      var valIsNaN = value !== value,\n          valIsNull = value === null,\n          valIsSymbol = isSymbol(value),\n          valIsUndefined = value === undefined;\n\n      while (low < high) {\n        var mid = nativeFloor((low + high) / 2),\n            computed = iteratee(array[mid]),\n            othIsDefined = computed !== undefined,\n            othIsNull = computed === null,\n            othIsReflexive = computed === computed,\n            othIsSymbol = isSymbol(computed);\n\n        if (valIsNaN) {\n          var setLow = retHighest || othIsReflexive;\n        } else if (valIsUndefined) {\n          setLow = othIsReflexive && (retHighest || othIsDefined);\n        } else if (valIsNull) {\n          setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n        } else if (valIsSymbol) {\n          setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n        } else if (othIsNull || othIsSymbol) {\n          setLow = false;\n        } else {\n          setLow = retHighest ? (computed <= value) : (computed < value);\n        }\n        if (setLow) {\n          low = mid + 1;\n        } else {\n          high = mid;\n        }\n      }\n      return nativeMin(high, MAX_ARRAY_INDEX);\n    }\n\n    /**\n     * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n     * support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array} array The array to inspect.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @returns {Array} Returns the new duplicate free array.\n     */\n    function baseSortedUniq(array, iteratee) {\n      var index = -1,\n          length = array.length,\n          resIndex = 0,\n          result = [];\n\n      while (++index < length) {\n        var value = array[index],\n            computed = iteratee ? iteratee(value) : value;\n\n        if (!index || !eq(computed, seen)) {\n          var seen = computed;\n          result[resIndex++] = value === 0 ? 0 : value;\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.toNumber` which doesn't ensure correct\n     * conversions of binary, hexadecimal, or octal string values.\n     *\n     * @private\n     * @param {*} value The value to process.\n     * @returns {number} Returns the number.\n     */\n    function baseToNumber(value) {\n      if (typeof value == 'number') {\n        return value;\n      }\n      if (isSymbol(value)) {\n        return NAN;\n      }\n      return +value;\n    }\n\n    /**\n     * The base implementation of `_.toString` which doesn't convert nullish\n     * values to empty strings.\n     *\n     * @private\n     * @param {*} value The value to process.\n     * @returns {string} Returns the string.\n     */\n    function baseToString(value) {\n      // Exit early for strings to avoid a performance hit in some environments.\n      if (typeof value == 'string') {\n        return value;\n      }\n      if (isArray(value)) {\n        // Recursively convert values (susceptible to call stack limits).\n        return arrayMap(value, baseToString) + '';\n      }\n      if (isSymbol(value)) {\n        return symbolToString ? symbolToString.call(value) : '';\n      }\n      var result = (value + '');\n      return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n    }\n\n    /**\n     * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array} array The array to inspect.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new duplicate free array.\n     */\n    function baseUniq(array, iteratee, comparator) {\n      var index = -1,\n          includes = arrayIncludes,\n          length = array.length,\n          isCommon = true,\n          result = [],\n          seen = result;\n\n      if (comparator) {\n        isCommon = false;\n        includes = arrayIncludesWith;\n      }\n      else if (length >= LARGE_ARRAY_SIZE) {\n        var set = iteratee ? null : createSet(array);\n        if (set) {\n          return setToArray(set);\n        }\n        isCommon = false;\n        includes = cacheHas;\n        seen = new SetCache;\n      }\n      else {\n        seen = iteratee ? [] : result;\n      }\n      outer:\n      while (++index < length) {\n        var value = array[index],\n            computed = iteratee ? iteratee(value) : value;\n\n        value = (comparator || value !== 0) ? value : 0;\n        if (isCommon && computed === computed) {\n          var seenIndex = seen.length;\n          while (seenIndex--) {\n            if (seen[seenIndex] === computed) {\n              continue outer;\n            }\n          }\n          if (iteratee) {\n            seen.push(computed);\n          }\n          result.push(value);\n        }\n        else if (!includes(seen, computed, comparator)) {\n          if (seen !== result) {\n            seen.push(computed);\n          }\n          result.push(value);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.unset`.\n     *\n     * @private\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The property path to unset.\n     * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n     */\n    function baseUnset(object, path) {\n      path = castPath(path, object);\n\n      // Prevent prototype pollution:\n      // https://github.com/lodash/lodash/security/advisories/GHSA-xxjr-mmjv-4gpg\n      // https://github.com/lodash/lodash/security/advisories/GHSA-f23m-r3pf-42rh\n      var index = -1,\n          length = path.length;\n\n      if (!length) {\n        return true;\n      }\n\n      while (++index < length) {\n        var key = toKey(path[index]);\n\n        // Always block \"__proto__\" anywhere in the path if it's not expected\n        if (key === '__proto__' && !hasOwnProperty.call(object, '__proto__')) {\n          return false;\n        }\n\n        // Block constructor/prototype as non-terminal traversal keys to prevent\n        // escaping the object graph into built-in constructors and prototypes.\n        if ((key === 'constructor' || key === 'prototype') && index < length - 1) {\n          return false;\n        }\n      }\n\n      var obj = parent(object, path);\n      return obj == null || delete obj[toKey(last(path))];\n    }\n\n    /**\n     * The base implementation of `_.update`.\n     *\n     * @private\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to update.\n     * @param {Function} updater The function to produce the updated value.\n     * @param {Function} [customizer] The function to customize path creation.\n     * @returns {Object} Returns `object`.\n     */\n    function baseUpdate(object, path, updater, customizer) {\n      return baseSet(object, path, updater(baseGet(object, path)), customizer);\n    }\n\n    /**\n     * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n     * without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array} array The array to query.\n     * @param {Function} predicate The function invoked per iteration.\n     * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n     * @param {boolean} [fromRight] Specify iterating from right to left.\n     * @returns {Array} Returns the slice of `array`.\n     */\n    function baseWhile(array, predicate, isDrop, fromRight) {\n      var length = array.length,\n          index = fromRight ? length : -1;\n\n      while ((fromRight ? index-- : ++index < length) &&\n        predicate(array[index], index, array)) {}\n\n      return isDrop\n        ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n        : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n    }\n\n    /**\n     * The base implementation of `wrapperValue` which returns the result of\n     * performing a sequence of actions on the unwrapped `value`, where each\n     * successive action is supplied the return value of the previous.\n     *\n     * @private\n     * @param {*} value The unwrapped value.\n     * @param {Array} actions Actions to perform to resolve the unwrapped value.\n     * @returns {*} Returns the resolved value.\n     */\n    function baseWrapperValue(value, actions) {\n      var result = value;\n      if (result instanceof LazyWrapper) {\n        result = result.value();\n      }\n      return arrayReduce(actions, function(result, action) {\n        return action.func.apply(action.thisArg, arrayPush([result], action.args));\n      }, result);\n    }\n\n    /**\n     * The base implementation of methods like `_.xor`, without support for\n     * iteratee shorthands, that accepts an array of arrays to inspect.\n     *\n     * @private\n     * @param {Array} arrays The arrays to inspect.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of values.\n     */\n    function baseXor(arrays, iteratee, comparator) {\n      var length = arrays.length;\n      if (length < 2) {\n        return length ? baseUniq(arrays[0]) : [];\n      }\n      var index = -1,\n          result = Array(length);\n\n      while (++index < length) {\n        var array = arrays[index],\n            othIndex = -1;\n\n        while (++othIndex < length) {\n          if (othIndex != index) {\n            result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n          }\n        }\n      }\n      return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n    }\n\n    /**\n     * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n     *\n     * @private\n     * @param {Array} props The property identifiers.\n     * @param {Array} values The property values.\n     * @param {Function} assignFunc The function to assign values.\n     * @returns {Object} Returns the new object.\n     */\n    function baseZipObject(props, values, assignFunc) {\n      var index = -1,\n          length = props.length,\n          valsLength = values.length,\n          result = {};\n\n      while (++index < length) {\n        var value = index < valsLength ? values[index] : undefined;\n        assignFunc(result, props[index], value);\n      }\n      return result;\n    }\n\n    /**\n     * Casts `value` to an empty array if it's not an array like object.\n     *\n     * @private\n     * @param {*} value The value to inspect.\n     * @returns {Array|Object} Returns the cast array-like object.\n     */\n    function castArrayLikeObject(value) {\n      return isArrayLikeObject(value) ? value : [];\n    }\n\n    /**\n     * Casts `value` to `identity` if it's not a function.\n     *\n     * @private\n     * @param {*} value The value to inspect.\n     * @returns {Function} Returns cast function.\n     */\n    function castFunction(value) {\n      return typeof value == 'function' ? value : identity;\n    }\n\n    /**\n     * Casts `value` to a path array if it's not one.\n     *\n     * @private\n     * @param {*} value The value to inspect.\n     * @param {Object} [object] The object to query keys on.\n     * @returns {Array} Returns the cast property path array.\n     */\n    function castPath(value, object) {\n      if (isArray(value)) {\n        return value;\n      }\n      return isKey(value, object) ? [value] : stringToPath(toString(value));\n    }\n\n    /**\n     * A `baseRest` alias which can be replaced with `identity` by module\n     * replacement plugins.\n     *\n     * @private\n     * @type {Function}\n     * @param {Function} func The function to apply a rest parameter to.\n     * @returns {Function} Returns the new function.\n     */\n    var castRest = baseRest;\n\n    /**\n     * Casts `array` to a slice if it's needed.\n     *\n     * @private\n     * @param {Array} array The array to inspect.\n     * @param {number} start The start position.\n     * @param {number} [end=array.length] The end position.\n     * @returns {Array} Returns the cast slice.\n     */\n    function castSlice(array, start, end) {\n      var length = array.length;\n      end = end === undefined ? length : end;\n      return (!start && end >= length) ? array : baseSlice(array, start, end);\n    }\n\n    /**\n     * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n     *\n     * @private\n     * @param {number|Object} id The timer id or timeout object of the timer to clear.\n     */\n    var clearTimeout = ctxClearTimeout || function(id) {\n      return root.clearTimeout(id);\n    };\n\n    /**\n     * Creates a clone of  `buffer`.\n     *\n     * @private\n     * @param {Buffer} buffer The buffer to clone.\n     * @param {boolean} [isDeep] Specify a deep clone.\n     * @returns {Buffer} Returns the cloned buffer.\n     */\n    function cloneBuffer(buffer, isDeep) {\n      if (isDeep) {\n        return buffer.slice();\n      }\n      var length = buffer.length,\n          result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n      buffer.copy(result);\n      return result;\n    }\n\n    /**\n     * Creates a clone of `arrayBuffer`.\n     *\n     * @private\n     * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n     * @returns {ArrayBuffer} Returns the cloned array buffer.\n     */\n    function cloneArrayBuffer(arrayBuffer) {\n      var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n      new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n      return result;\n    }\n\n    /**\n     * Creates a clone of `dataView`.\n     *\n     * @private\n     * @param {Object} dataView The data view to clone.\n     * @param {boolean} [isDeep] Specify a deep clone.\n     * @returns {Object} Returns the cloned data view.\n     */\n    function cloneDataView(dataView, isDeep) {\n      var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n      return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n    }\n\n    /**\n     * Creates a clone of `regexp`.\n     *\n     * @private\n     * @param {Object} regexp The regexp to clone.\n     * @returns {Object} Returns the cloned regexp.\n     */\n    function cloneRegExp(regexp) {\n      var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n      result.lastIndex = regexp.lastIndex;\n      return result;\n    }\n\n    /**\n     * Creates a clone of the `symbol` object.\n     *\n     * @private\n     * @param {Object} symbol The symbol object to clone.\n     * @returns {Object} Returns the cloned symbol object.\n     */\n    function cloneSymbol(symbol) {\n      return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n    }\n\n    /**\n     * Creates a clone of `typedArray`.\n     *\n     * @private\n     * @param {Object} typedArray The typed array to clone.\n     * @param {boolean} [isDeep] Specify a deep clone.\n     * @returns {Object} Returns the cloned typed array.\n     */\n    function cloneTypedArray(typedArray, isDeep) {\n      var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n      return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n    }\n\n    /**\n     * Compares values to sort them in ascending order.\n     *\n     * @private\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {number} Returns the sort order indicator for `value`.\n     */\n    function compareAscending(value, other) {\n      if (value !== other) {\n        var valIsDefined = value !== undefined,\n            valIsNull = value === null,\n            valIsReflexive = value === value,\n            valIsSymbol = isSymbol(value);\n\n        var othIsDefined = other !== undefined,\n            othIsNull = other === null,\n            othIsReflexive = other === other,\n            othIsSymbol = isSymbol(other);\n\n        if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n            (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n            (valIsNull && othIsDefined && othIsReflexive) ||\n            (!valIsDefined && othIsReflexive) ||\n            !valIsReflexive) {\n          return 1;\n        }\n        if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n            (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n            (othIsNull && valIsDefined && valIsReflexive) ||\n            (!othIsDefined && valIsReflexive) ||\n            !othIsReflexive) {\n          return -1;\n        }\n      }\n      return 0;\n    }\n\n    /**\n     * Used by `_.orderBy` to compare multiple properties of a value to another\n     * and stable sort them.\n     *\n     * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n     * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n     * of corresponding values.\n     *\n     * @private\n     * @param {Object} object The object to compare.\n     * @param {Object} other The other object to compare.\n     * @param {boolean[]|string[]} orders The order to sort by for each property.\n     * @returns {number} Returns the sort order indicator for `object`.\n     */\n    function compareMultiple(object, other, orders) {\n      var index = -1,\n          objCriteria = object.criteria,\n          othCriteria = other.criteria,\n          length = objCriteria.length,\n          ordersLength = orders.length;\n\n      while (++index < length) {\n        var result = compareAscending(objCriteria[index], othCriteria[index]);\n        if (result) {\n          if (index >= ordersLength) {\n            return result;\n          }\n          var order = orders[index];\n          return result * (order == 'desc' ? -1 : 1);\n        }\n      }\n      // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n      // that causes it, under certain circumstances, to provide the same value for\n      // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n      // for more details.\n      //\n      // This also ensures a stable sort in V8 and other engines.\n      // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n      return object.index - other.index;\n    }\n\n    /**\n     * Creates an array that is the composition of partially applied arguments,\n     * placeholders, and provided arguments into a single array of arguments.\n     *\n     * @private\n     * @param {Array} args The provided arguments.\n     * @param {Array} partials The arguments to prepend to those provided.\n     * @param {Array} holders The `partials` placeholder indexes.\n     * @params {boolean} [isCurried] Specify composing for a curried function.\n     * @returns {Array} Returns the new array of composed arguments.\n     */\n    function composeArgs(args, partials, holders, isCurried) {\n      var argsIndex = -1,\n          argsLength = args.length,\n          holdersLength = holders.length,\n          leftIndex = -1,\n          leftLength = partials.length,\n          rangeLength = nativeMax(argsLength - holdersLength, 0),\n          result = Array(leftLength + rangeLength),\n          isUncurried = !isCurried;\n\n      while (++leftIndex < leftLength) {\n        result[leftIndex] = partials[leftIndex];\n      }\n      while (++argsIndex < holdersLength) {\n        if (isUncurried || argsIndex < argsLength) {\n          result[holders[argsIndex]] = args[argsIndex];\n        }\n      }\n      while (rangeLength--) {\n        result[leftIndex++] = args[argsIndex++];\n      }\n      return result;\n    }\n\n    /**\n     * This function is like `composeArgs` except that the arguments composition\n     * is tailored for `_.partialRight`.\n     *\n     * @private\n     * @param {Array} args The provided arguments.\n     * @param {Array} partials The arguments to append to those provided.\n     * @param {Array} holders The `partials` placeholder indexes.\n     * @params {boolean} [isCurried] Specify composing for a curried function.\n     * @returns {Array} Returns the new array of composed arguments.\n     */\n    function composeArgsRight(args, partials, holders, isCurried) {\n      var argsIndex = -1,\n          argsLength = args.length,\n          holdersIndex = -1,\n          holdersLength = holders.length,\n          rightIndex = -1,\n          rightLength = partials.length,\n          rangeLength = nativeMax(argsLength - holdersLength, 0),\n          result = Array(rangeLength + rightLength),\n          isUncurried = !isCurried;\n\n      while (++argsIndex < rangeLength) {\n        result[argsIndex] = args[argsIndex];\n      }\n      var offset = argsIndex;\n      while (++rightIndex < rightLength) {\n        result[offset + rightIndex] = partials[rightIndex];\n      }\n      while (++holdersIndex < holdersLength) {\n        if (isUncurried || argsIndex < argsLength) {\n          result[offset + holders[holdersIndex]] = args[argsIndex++];\n        }\n      }\n      return result;\n    }\n\n    /**\n     * Copies the values of `source` to `array`.\n     *\n     * @private\n     * @param {Array} source The array to copy values from.\n     * @param {Array} [array=[]] The array to copy values to.\n     * @returns {Array} Returns `array`.\n     */\n    function copyArray(source, array) {\n      var index = -1,\n          length = source.length;\n\n      array || (array = Array(length));\n      while (++index < length) {\n        array[index] = source[index];\n      }\n      return array;\n    }\n\n    /**\n     * Copies properties of `source` to `object`.\n     *\n     * @private\n     * @param {Object} source The object to copy properties from.\n     * @param {Array} props The property identifiers to copy.\n     * @param {Object} [object={}] The object to copy properties to.\n     * @param {Function} [customizer] The function to customize copied values.\n     * @returns {Object} Returns `object`.\n     */\n    function copyObject(source, props, object, customizer) {\n      var isNew = !object;\n      object || (object = {});\n\n      var index = -1,\n          length = props.length;\n\n      while (++index < length) {\n        var key = props[index];\n\n        var newValue = customizer\n          ? customizer(object[key], source[key], key, object, source)\n          : undefined;\n\n        if (newValue === undefined) {\n          newValue = source[key];\n        }\n        if (isNew) {\n          baseAssignValue(object, key, newValue);\n        } else {\n          assignValue(object, key, newValue);\n        }\n      }\n      return object;\n    }\n\n    /**\n     * Copies own symbols of `source` to `object`.\n     *\n     * @private\n     * @param {Object} source The object to copy symbols from.\n     * @param {Object} [object={}] The object to copy symbols to.\n     * @returns {Object} Returns `object`.\n     */\n    function copySymbols(source, object) {\n      return copyObject(source, getSymbols(source), object);\n    }\n\n    /**\n     * Copies own and inherited symbols of `source` to `object`.\n     *\n     * @private\n     * @param {Object} source The object to copy symbols from.\n     * @param {Object} [object={}] The object to copy symbols to.\n     * @returns {Object} Returns `object`.\n     */\n    function copySymbolsIn(source, object) {\n      return copyObject(source, getSymbolsIn(source), object);\n    }\n\n    /**\n     * Creates a function like `_.groupBy`.\n     *\n     * @private\n     * @param {Function} setter The function to set accumulator values.\n     * @param {Function} [initializer] The accumulator object initializer.\n     * @returns {Function} Returns the new aggregator function.\n     */\n    function createAggregator(setter, initializer) {\n      return function(collection, iteratee) {\n        var func = isArray(collection) ? arrayAggregator : baseAggregator,\n            accumulator = initializer ? initializer() : {};\n\n        return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n      };\n    }\n\n    /**\n     * Creates a function like `_.assign`.\n     *\n     * @private\n     * @param {Function} assigner The function to assign values.\n     * @returns {Function} Returns the new assigner function.\n     */\n    function createAssigner(assigner) {\n      return baseRest(function(object, sources) {\n        var index = -1,\n            length = sources.length,\n            customizer = length > 1 ? sources[length - 1] : undefined,\n            guard = length > 2 ? sources[2] : undefined;\n\n        customizer = (assigner.length > 3 && typeof customizer == 'function')\n          ? (length--, customizer)\n          : undefined;\n\n        if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n          customizer = length < 3 ? undefined : customizer;\n          length = 1;\n        }\n        object = Object(object);\n        while (++index < length) {\n          var source = sources[index];\n          if (source) {\n            assigner(object, source, index, customizer);\n          }\n        }\n        return object;\n      });\n    }\n\n    /**\n     * Creates a `baseEach` or `baseEachRight` function.\n     *\n     * @private\n     * @param {Function} eachFunc The function to iterate over a collection.\n     * @param {boolean} [fromRight] Specify iterating from right to left.\n     * @returns {Function} Returns the new base function.\n     */\n    function createBaseEach(eachFunc, fromRight) {\n      return function(collection, iteratee) {\n        if (collection == null) {\n          return collection;\n        }\n        if (!isArrayLike(collection)) {\n          return eachFunc(collection, iteratee);\n        }\n        var length = collection.length,\n            index = fromRight ? length : -1,\n            iterable = Object(collection);\n\n        while ((fromRight ? index-- : ++index < length)) {\n          if (iteratee(iterable[index], index, iterable) === false) {\n            break;\n          }\n        }\n        return collection;\n      };\n    }\n\n    /**\n     * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n     *\n     * @private\n     * @param {boolean} [fromRight] Specify iterating from right to left.\n     * @returns {Function} Returns the new base function.\n     */\n    function createBaseFor(fromRight) {\n      return function(object, iteratee, keysFunc) {\n        var index = -1,\n            iterable = Object(object),\n            props = keysFunc(object),\n            length = props.length;\n\n        while (length--) {\n          var key = props[fromRight ? length : ++index];\n          if (iteratee(iterable[key], key, iterable) === false) {\n            break;\n          }\n        }\n        return object;\n      };\n    }\n\n    /**\n     * Creates a function that wraps `func` to invoke it with the optional `this`\n     * binding of `thisArg`.\n     *\n     * @private\n     * @param {Function} func The function to wrap.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @param {*} [thisArg] The `this` binding of `func`.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createBind(func, bitmask, thisArg) {\n      var isBind = bitmask & WRAP_BIND_FLAG,\n          Ctor = createCtor(func);\n\n      function wrapper() {\n        var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n        return fn.apply(isBind ? thisArg : this, arguments);\n      }\n      return wrapper;\n    }\n\n    /**\n     * Creates a function like `_.lowerFirst`.\n     *\n     * @private\n     * @param {string} methodName The name of the `String` case method to use.\n     * @returns {Function} Returns the new case function.\n     */\n    function createCaseFirst(methodName) {\n      return function(string) {\n        string = toString(string);\n\n        var strSymbols = hasUnicode(string)\n          ? stringToArray(string)\n          : undefined;\n\n        var chr = strSymbols\n          ? strSymbols[0]\n          : string.charAt(0);\n\n        var trailing = strSymbols\n          ? castSlice(strSymbols, 1).join('')\n          : string.slice(1);\n\n        return chr[methodName]() + trailing;\n      };\n    }\n\n    /**\n     * Creates a function like `_.camelCase`.\n     *\n     * @private\n     * @param {Function} callback The function to combine each word.\n     * @returns {Function} Returns the new compounder function.\n     */\n    function createCompounder(callback) {\n      return function(string) {\n        return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n      };\n    }\n\n    /**\n     * Creates a function that produces an instance of `Ctor` regardless of\n     * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n     *\n     * @private\n     * @param {Function} Ctor The constructor to wrap.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createCtor(Ctor) {\n      return function() {\n        // Use a `switch` statement to work with class constructors. See\n        // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n        // for more details.\n        var args = arguments;\n        switch (args.length) {\n          case 0: return new Ctor;\n          case 1: return new Ctor(args[0]);\n          case 2: return new Ctor(args[0], args[1]);\n          case 3: return new Ctor(args[0], args[1], args[2]);\n          case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n          case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n          case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n          case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n        }\n        var thisBinding = baseCreate(Ctor.prototype),\n            result = Ctor.apply(thisBinding, args);\n\n        // Mimic the constructor's `return` behavior.\n        // See https://es5.github.io/#x13.2.2 for more details.\n        return isObject(result) ? result : thisBinding;\n      };\n    }\n\n    /**\n     * Creates a function that wraps `func` to enable currying.\n     *\n     * @private\n     * @param {Function} func The function to wrap.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @param {number} arity The arity of `func`.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createCurry(func, bitmask, arity) {\n      var Ctor = createCtor(func);\n\n      function wrapper() {\n        var length = arguments.length,\n            args = Array(length),\n            index = length,\n            placeholder = getHolder(wrapper);\n\n        while (index--) {\n          args[index] = arguments[index];\n        }\n        var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n          ? []\n          : replaceHolders(args, placeholder);\n\n        length -= holders.length;\n        if (length < arity) {\n          return createRecurry(\n            func, bitmask, createHybrid, wrapper.placeholder, undefined,\n            args, holders, undefined, undefined, arity - length);\n        }\n        var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n        return apply(fn, this, args);\n      }\n      return wrapper;\n    }\n\n    /**\n     * Creates a `_.find` or `_.findLast` function.\n     *\n     * @private\n     * @param {Function} findIndexFunc The function to find the collection index.\n     * @returns {Function} Returns the new find function.\n     */\n    function createFind(findIndexFunc) {\n      return function(collection, predicate, fromIndex) {\n        var iterable = Object(collection);\n        if (!isArrayLike(collection)) {\n          var iteratee = getIteratee(predicate, 3);\n          collection = keys(collection);\n          predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n        }\n        var index = findIndexFunc(collection, predicate, fromIndex);\n        return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n      };\n    }\n\n    /**\n     * Creates a `_.flow` or `_.flowRight` function.\n     *\n     * @private\n     * @param {boolean} [fromRight] Specify iterating from right to left.\n     * @returns {Function} Returns the new flow function.\n     */\n    function createFlow(fromRight) {\n      return flatRest(function(funcs) {\n        var length = funcs.length,\n            index = length,\n            prereq = LodashWrapper.prototype.thru;\n\n        if (fromRight) {\n          funcs.reverse();\n        }\n        while (index--) {\n          var func = funcs[index];\n          if (typeof func != 'function') {\n            throw new TypeError(FUNC_ERROR_TEXT);\n          }\n          if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n            var wrapper = new LodashWrapper([], true);\n          }\n        }\n        index = wrapper ? index : length;\n        while (++index < length) {\n          func = funcs[index];\n\n          var funcName = getFuncName(func),\n              data = funcName == 'wrapper' ? getData(func) : undefined;\n\n          if (data && isLaziable(data[0]) &&\n                data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n                !data[4].length && data[9] == 1\n              ) {\n            wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n          } else {\n            wrapper = (func.length == 1 && isLaziable(func))\n              ? wrapper[funcName]()\n              : wrapper.thru(func);\n          }\n        }\n        return function() {\n          var args = arguments,\n              value = args[0];\n\n          if (wrapper && args.length == 1 && isArray(value)) {\n            return wrapper.plant(value).value();\n          }\n          var index = 0,\n              result = length ? funcs[index].apply(this, args) : value;\n\n          while (++index < length) {\n            result = funcs[index].call(this, result);\n          }\n          return result;\n        };\n      });\n    }\n\n    /**\n     * Creates a function that wraps `func` to invoke it with optional `this`\n     * binding of `thisArg`, partial application, and currying.\n     *\n     * @private\n     * @param {Function|string} func The function or method name to wrap.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @param {*} [thisArg] The `this` binding of `func`.\n     * @param {Array} [partials] The arguments to prepend to those provided to\n     *  the new function.\n     * @param {Array} [holders] The `partials` placeholder indexes.\n     * @param {Array} [partialsRight] The arguments to append to those provided\n     *  to the new function.\n     * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n     * @param {Array} [argPos] The argument positions of the new function.\n     * @param {number} [ary] The arity cap of `func`.\n     * @param {number} [arity] The arity of `func`.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n      var isAry = bitmask & WRAP_ARY_FLAG,\n          isBind = bitmask & WRAP_BIND_FLAG,\n          isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n          isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n          isFlip = bitmask & WRAP_FLIP_FLAG,\n          Ctor = isBindKey ? undefined : createCtor(func);\n\n      function wrapper() {\n        var length = arguments.length,\n            args = Array(length),\n            index = length;\n\n        while (index--) {\n          args[index] = arguments[index];\n        }\n        if (isCurried) {\n          var placeholder = getHolder(wrapper),\n              holdersCount = countHolders(args, placeholder);\n        }\n        if (partials) {\n          args = composeArgs(args, partials, holders, isCurried);\n        }\n        if (partialsRight) {\n          args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n        }\n        length -= holdersCount;\n        if (isCurried && length < arity) {\n          var newHolders = replaceHolders(args, placeholder);\n          return createRecurry(\n            func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n            args, newHolders, argPos, ary, arity - length\n          );\n        }\n        var thisBinding = isBind ? thisArg : this,\n            fn = isBindKey ? thisBinding[func] : func;\n\n        length = args.length;\n        if (argPos) {\n          args = reorder(args, argPos);\n        } else if (isFlip && length > 1) {\n          args.reverse();\n        }\n        if (isAry && ary < length) {\n          args.length = ary;\n        }\n        if (this && this !== root && this instanceof wrapper) {\n          fn = Ctor || createCtor(fn);\n        }\n        return fn.apply(thisBinding, args);\n      }\n      return wrapper;\n    }\n\n    /**\n     * Creates a function like `_.invertBy`.\n     *\n     * @private\n     * @param {Function} setter The function to set accumulator values.\n     * @param {Function} toIteratee The function to resolve iteratees.\n     * @returns {Function} Returns the new inverter function.\n     */\n    function createInverter(setter, toIteratee) {\n      return function(object, iteratee) {\n        return baseInverter(object, setter, toIteratee(iteratee), {});\n      };\n    }\n\n    /**\n     * Creates a function that performs a mathematical operation on two values.\n     *\n     * @private\n     * @param {Function} operator The function to perform the operation.\n     * @param {number} [defaultValue] The value used for `undefined` arguments.\n     * @returns {Function} Returns the new mathematical operation function.\n     */\n    function createMathOperation(operator, defaultValue) {\n      return function(value, other) {\n        var result;\n        if (value === undefined && other === undefined) {\n          return defaultValue;\n        }\n        if (value !== undefined) {\n          result = value;\n        }\n        if (other !== undefined) {\n          if (result === undefined) {\n            return other;\n          }\n          if (typeof value == 'string' || typeof other == 'string') {\n            value = baseToString(value);\n            other = baseToString(other);\n          } else {\n            value = baseToNumber(value);\n            other = baseToNumber(other);\n          }\n          result = operator(value, other);\n        }\n        return result;\n      };\n    }\n\n    /**\n     * Creates a function like `_.over`.\n     *\n     * @private\n     * @param {Function} arrayFunc The function to iterate over iteratees.\n     * @returns {Function} Returns the new over function.\n     */\n    function createOver(arrayFunc) {\n      return flatRest(function(iteratees) {\n        iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n        return baseRest(function(args) {\n          var thisArg = this;\n          return arrayFunc(iteratees, function(iteratee) {\n            return apply(iteratee, thisArg, args);\n          });\n        });\n      });\n    }\n\n    /**\n     * Creates the padding for `string` based on `length`. The `chars` string\n     * is truncated if the number of characters exceeds `length`.\n     *\n     * @private\n     * @param {number} length The padding length.\n     * @param {string} [chars=' '] The string used as padding.\n     * @returns {string} Returns the padding for `string`.\n     */\n    function createPadding(length, chars) {\n      chars = chars === undefined ? ' ' : baseToString(chars);\n\n      var charsLength = chars.length;\n      if (charsLength < 2) {\n        return charsLength ? baseRepeat(chars, length) : chars;\n      }\n      var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n      return hasUnicode(chars)\n        ? castSlice(stringToArray(result), 0, length).join('')\n        : result.slice(0, length);\n    }\n\n    /**\n     * Creates a function that wraps `func` to invoke it with the `this` binding\n     * of `thisArg` and `partials` prepended to the arguments it receives.\n     *\n     * @private\n     * @param {Function} func The function to wrap.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @param {*} thisArg The `this` binding of `func`.\n     * @param {Array} partials The arguments to prepend to those provided to\n     *  the new function.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createPartial(func, bitmask, thisArg, partials) {\n      var isBind = bitmask & WRAP_BIND_FLAG,\n          Ctor = createCtor(func);\n\n      function wrapper() {\n        var argsIndex = -1,\n            argsLength = arguments.length,\n            leftIndex = -1,\n            leftLength = partials.length,\n            args = Array(leftLength + argsLength),\n            fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n        while (++leftIndex < leftLength) {\n          args[leftIndex] = partials[leftIndex];\n        }\n        while (argsLength--) {\n          args[leftIndex++] = arguments[++argsIndex];\n        }\n        return apply(fn, isBind ? thisArg : this, args);\n      }\n      return wrapper;\n    }\n\n    /**\n     * Creates a `_.range` or `_.rangeRight` function.\n     *\n     * @private\n     * @param {boolean} [fromRight] Specify iterating from right to left.\n     * @returns {Function} Returns the new range function.\n     */\n    function createRange(fromRight) {\n      return function(start, end, step) {\n        if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n          end = step = undefined;\n        }\n        // Ensure the sign of `-0` is preserved.\n        start = toFinite(start);\n        if (end === undefined) {\n          end = start;\n          start = 0;\n        } else {\n          end = toFinite(end);\n        }\n        step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n        return baseRange(start, end, step, fromRight);\n      };\n    }\n\n    /**\n     * Creates a function that performs a relational operation on two values.\n     *\n     * @private\n     * @param {Function} operator The function to perform the operation.\n     * @returns {Function} Returns the new relational operation function.\n     */\n    function createRelationalOperation(operator) {\n      return function(value, other) {\n        if (!(typeof value == 'string' && typeof other == 'string')) {\n          value = toNumber(value);\n          other = toNumber(other);\n        }\n        return operator(value, other);\n      };\n    }\n\n    /**\n     * Creates a function that wraps `func` to continue currying.\n     *\n     * @private\n     * @param {Function} func The function to wrap.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @param {Function} wrapFunc The function to create the `func` wrapper.\n     * @param {*} placeholder The placeholder value.\n     * @param {*} [thisArg] The `this` binding of `func`.\n     * @param {Array} [partials] The arguments to prepend to those provided to\n     *  the new function.\n     * @param {Array} [holders] The `partials` placeholder indexes.\n     * @param {Array} [argPos] The argument positions of the new function.\n     * @param {number} [ary] The arity cap of `func`.\n     * @param {number} [arity] The arity of `func`.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n      var isCurry = bitmask & WRAP_CURRY_FLAG,\n          newHolders = isCurry ? holders : undefined,\n          newHoldersRight = isCurry ? undefined : holders,\n          newPartials = isCurry ? partials : undefined,\n          newPartialsRight = isCurry ? undefined : partials;\n\n      bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n      bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n      if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n        bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n      }\n      var newData = [\n        func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n        newHoldersRight, argPos, ary, arity\n      ];\n\n      var result = wrapFunc.apply(undefined, newData);\n      if (isLaziable(func)) {\n        setData(result, newData);\n      }\n      result.placeholder = placeholder;\n      return setWrapToString(result, func, bitmask);\n    }\n\n    /**\n     * Creates a function like `_.round`.\n     *\n     * @private\n     * @param {string} methodName The name of the `Math` method to use when rounding.\n     * @returns {Function} Returns the new round function.\n     */\n    function createRound(methodName) {\n      var func = Math[methodName];\n      return function(number, precision) {\n        number = toNumber(number);\n        precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n        if (precision && nativeIsFinite(number)) {\n          // Shift with exponential notation to avoid floating-point issues.\n          // See [MDN](https://mdn.io/round#Examples) for more details.\n          var pair = (toString(number) + 'e').split('e'),\n              value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n          pair = (toString(value) + 'e').split('e');\n          return +(pair[0] + 'e' + (+pair[1] - precision));\n        }\n        return func(number);\n      };\n    }\n\n    /**\n     * Creates a set object of `values`.\n     *\n     * @private\n     * @param {Array} values The values to add to the set.\n     * @returns {Object} Returns the new set.\n     */\n    var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n      return new Set(values);\n    };\n\n    /**\n     * Creates a `_.toPairs` or `_.toPairsIn` function.\n     *\n     * @private\n     * @param {Function} keysFunc The function to get the keys of a given object.\n     * @returns {Function} Returns the new pairs function.\n     */\n    function createToPairs(keysFunc) {\n      return function(object) {\n        var tag = getTag(object);\n        if (tag == mapTag) {\n          return mapToArray(object);\n        }\n        if (tag == setTag) {\n          return setToPairs(object);\n        }\n        return baseToPairs(object, keysFunc(object));\n      };\n    }\n\n    /**\n     * Creates a function that either curries or invokes `func` with optional\n     * `this` binding and partially applied arguments.\n     *\n     * @private\n     * @param {Function|string} func The function or method name to wrap.\n     * @param {number} bitmask The bitmask flags.\n     *    1 - `_.bind`\n     *    2 - `_.bindKey`\n     *    4 - `_.curry` or `_.curryRight` of a bound function\n     *    8 - `_.curry`\n     *   16 - `_.curryRight`\n     *   32 - `_.partial`\n     *   64 - `_.partialRight`\n     *  128 - `_.rearg`\n     *  256 - `_.ary`\n     *  512 - `_.flip`\n     * @param {*} [thisArg] The `this` binding of `func`.\n     * @param {Array} [partials] The arguments to be partially applied.\n     * @param {Array} [holders] The `partials` placeholder indexes.\n     * @param {Array} [argPos] The argument positions of the new function.\n     * @param {number} [ary] The arity cap of `func`.\n     * @param {number} [arity] The arity of `func`.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n      var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n      if (!isBindKey && typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      var length = partials ? partials.length : 0;\n      if (!length) {\n        bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n        partials = holders = undefined;\n      }\n      ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n      arity = arity === undefined ? arity : toInteger(arity);\n      length -= holders ? holders.length : 0;\n\n      if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n        var partialsRight = partials,\n            holdersRight = holders;\n\n        partials = holders = undefined;\n      }\n      var data = isBindKey ? undefined : getData(func);\n\n      var newData = [\n        func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n        argPos, ary, arity\n      ];\n\n      if (data) {\n        mergeData(newData, data);\n      }\n      func = newData[0];\n      bitmask = newData[1];\n      thisArg = newData[2];\n      partials = newData[3];\n      holders = newData[4];\n      arity = newData[9] = newData[9] === undefined\n        ? (isBindKey ? 0 : func.length)\n        : nativeMax(newData[9] - length, 0);\n\n      if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n        bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n      }\n      if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n        var result = createBind(func, bitmask, thisArg);\n      } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n        result = createCurry(func, bitmask, arity);\n      } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n        result = createPartial(func, bitmask, thisArg, partials);\n      } else {\n        result = createHybrid.apply(undefined, newData);\n      }\n      var setter = data ? baseSetData : setData;\n      return setWrapToString(setter(result, newData), func, bitmask);\n    }\n\n    /**\n     * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n     * of source objects to the destination object for all destination properties\n     * that resolve to `undefined`.\n     *\n     * @private\n     * @param {*} objValue The destination value.\n     * @param {*} srcValue The source value.\n     * @param {string} key The key of the property to assign.\n     * @param {Object} object The parent object of `objValue`.\n     * @returns {*} Returns the value to assign.\n     */\n    function customDefaultsAssignIn(objValue, srcValue, key, object) {\n      if (objValue === undefined ||\n          (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n        return srcValue;\n      }\n      return objValue;\n    }\n\n    /**\n     * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n     * objects into destination objects that are passed thru.\n     *\n     * @private\n     * @param {*} objValue The destination value.\n     * @param {*} srcValue The source value.\n     * @param {string} key The key of the property to merge.\n     * @param {Object} object The parent object of `objValue`.\n     * @param {Object} source The parent object of `srcValue`.\n     * @param {Object} [stack] Tracks traversed source values and their merged\n     *  counterparts.\n     * @returns {*} Returns the value to assign.\n     */\n    function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n      if (isObject(objValue) && isObject(srcValue)) {\n        // Recursively merge objects and arrays (susceptible to call stack limits).\n        stack.set(srcValue, objValue);\n        baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n        stack['delete'](srcValue);\n      }\n      return objValue;\n    }\n\n    /**\n     * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n     * objects.\n     *\n     * @private\n     * @param {*} value The value to inspect.\n     * @param {string} key The key of the property to inspect.\n     * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n     */\n    function customOmitClone(value) {\n      return isPlainObject(value) ? undefined : value;\n    }\n\n    /**\n     * A specialized version of `baseIsEqualDeep` for arrays with support for\n     * partial deep comparisons.\n     *\n     * @private\n     * @param {Array} array The array to compare.\n     * @param {Array} other The other array to compare.\n     * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n     * @param {Function} customizer The function to customize comparisons.\n     * @param {Function} equalFunc The function to determine equivalents of values.\n     * @param {Object} stack Tracks traversed `array` and `other` objects.\n     * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n     */\n    function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n      var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n          arrLength = array.length,\n          othLength = other.length;\n\n      if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n        return false;\n      }\n      // Check that cyclic values are equal.\n      var arrStacked = stack.get(array);\n      var othStacked = stack.get(other);\n      if (arrStacked && othStacked) {\n        return arrStacked == other && othStacked == array;\n      }\n      var index = -1,\n          result = true,\n          seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n      stack.set(array, other);\n      stack.set(other, array);\n\n      // Ignore non-index properties.\n      while (++index < arrLength) {\n        var arrValue = array[index],\n            othValue = other[index];\n\n        if (customizer) {\n          var compared = isPartial\n            ? customizer(othValue, arrValue, index, other, array, stack)\n            : customizer(arrValue, othValue, index, array, other, stack);\n        }\n        if (compared !== undefined) {\n          if (compared) {\n            continue;\n          }\n          result = false;\n          break;\n        }\n        // Recursively compare arrays (susceptible to call stack limits).\n        if (seen) {\n          if (!arraySome(other, function(othValue, othIndex) {\n                if (!cacheHas(seen, othIndex) &&\n                    (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n                  return seen.push(othIndex);\n                }\n              })) {\n            result = false;\n            break;\n          }\n        } else if (!(\n              arrValue === othValue ||\n                equalFunc(arrValue, othValue, bitmask, customizer, stack)\n            )) {\n          result = false;\n          break;\n        }\n      }\n      stack['delete'](array);\n      stack['delete'](other);\n      return result;\n    }\n\n    /**\n     * A specialized version of `baseIsEqualDeep` for comparing objects of\n     * the same `toStringTag`.\n     *\n     * **Note:** This function only supports comparing values with tags of\n     * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n     *\n     * @private\n     * @param {Object} object The object to compare.\n     * @param {Object} other The other object to compare.\n     * @param {string} tag The `toStringTag` of the objects to compare.\n     * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n     * @param {Function} customizer The function to customize comparisons.\n     * @param {Function} equalFunc The function to determine equivalents of values.\n     * @param {Object} stack Tracks traversed `object` and `other` objects.\n     * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n     */\n    function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n      switch (tag) {\n        case dataViewTag:\n          if ((object.byteLength != other.byteLength) ||\n              (object.byteOffset != other.byteOffset)) {\n            return false;\n          }\n          object = object.buffer;\n          other = other.buffer;\n\n        case arrayBufferTag:\n          if ((object.byteLength != other.byteLength) ||\n              !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n            return false;\n          }\n          return true;\n\n        case boolTag:\n        case dateTag:\n        case numberTag:\n          // Coerce booleans to `1` or `0` and dates to milliseconds.\n          // Invalid dates are coerced to `NaN`.\n          return eq(+object, +other);\n\n        case errorTag:\n          return object.name == other.name && object.message == other.message;\n\n        case regexpTag:\n        case stringTag:\n          // Coerce regexes to strings and treat strings, primitives and objects,\n          // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n          // for more details.\n          return object == (other + '');\n\n        case mapTag:\n          var convert = mapToArray;\n\n        case setTag:\n          var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n          convert || (convert = setToArray);\n\n          if (object.size != other.size && !isPartial) {\n            return false;\n          }\n          // Assume cyclic values are equal.\n          var stacked = stack.get(object);\n          if (stacked) {\n            return stacked == other;\n          }\n          bitmask |= COMPARE_UNORDERED_FLAG;\n\n          // Recursively compare objects (susceptible to call stack limits).\n          stack.set(object, other);\n          var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n          stack['delete'](object);\n          return result;\n\n        case symbolTag:\n          if (symbolValueOf) {\n            return symbolValueOf.call(object) == symbolValueOf.call(other);\n          }\n      }\n      return false;\n    }\n\n    /**\n     * A specialized version of `baseIsEqualDeep` for objects with support for\n     * partial deep comparisons.\n     *\n     * @private\n     * @param {Object} object The object to compare.\n     * @param {Object} other The other object to compare.\n     * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n     * @param {Function} customizer The function to customize comparisons.\n     * @param {Function} equalFunc The function to determine equivalents of values.\n     * @param {Object} stack Tracks traversed `object` and `other` objects.\n     * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n     */\n    function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n      var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n          objProps = getAllKeys(object),\n          objLength = objProps.length,\n          othProps = getAllKeys(other),\n          othLength = othProps.length;\n\n      if (objLength != othLength && !isPartial) {\n        return false;\n      }\n      var index = objLength;\n      while (index--) {\n        var key = objProps[index];\n        if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n          return false;\n        }\n      }\n      // Check that cyclic values are equal.\n      var objStacked = stack.get(object);\n      var othStacked = stack.get(other);\n      if (objStacked && othStacked) {\n        return objStacked == other && othStacked == object;\n      }\n      var result = true;\n      stack.set(object, other);\n      stack.set(other, object);\n\n      var skipCtor = isPartial;\n      while (++index < objLength) {\n        key = objProps[index];\n        var objValue = object[key],\n            othValue = other[key];\n\n        if (customizer) {\n          var compared = isPartial\n            ? customizer(othValue, objValue, key, other, object, stack)\n            : customizer(objValue, othValue, key, object, other, stack);\n        }\n        // Recursively compare objects (susceptible to call stack limits).\n        if (!(compared === undefined\n              ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n              : compared\n            )) {\n          result = false;\n          break;\n        }\n        skipCtor || (skipCtor = key == 'constructor');\n      }\n      if (result && !skipCtor) {\n        var objCtor = object.constructor,\n            othCtor = other.constructor;\n\n        // Non `Object` object instances with different constructors are not equal.\n        if (objCtor != othCtor &&\n            ('constructor' in object && 'constructor' in other) &&\n            !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n              typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n          result = false;\n        }\n      }\n      stack['delete'](object);\n      stack['delete'](other);\n      return result;\n    }\n\n    /**\n     * A specialized version of `baseRest` which flattens the rest array.\n     *\n     * @private\n     * @param {Function} func The function to apply a rest parameter to.\n     * @returns {Function} Returns the new function.\n     */\n    function flatRest(func) {\n      return setToString(overRest(func, undefined, flatten), func + '');\n    }\n\n    /**\n     * Creates an array of own enumerable property names and symbols of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property names and symbols.\n     */\n    function getAllKeys(object) {\n      return baseGetAllKeys(object, keys, getSymbols);\n    }\n\n    /**\n     * Creates an array of own and inherited enumerable property names and\n     * symbols of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property names and symbols.\n     */\n    function getAllKeysIn(object) {\n      return baseGetAllKeys(object, keysIn, getSymbolsIn);\n    }\n\n    /**\n     * Gets metadata for `func`.\n     *\n     * @private\n     * @param {Function} func The function to query.\n     * @returns {*} Returns the metadata for `func`.\n     */\n    var getData = !metaMap ? noop : function(func) {\n      return metaMap.get(func);\n    };\n\n    /**\n     * Gets the name of `func`.\n     *\n     * @private\n     * @param {Function} func The function to query.\n     * @returns {string} Returns the function name.\n     */\n    function getFuncName(func) {\n      var result = (func.name + ''),\n          array = realNames[result],\n          length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n      while (length--) {\n        var data = array[length],\n            otherFunc = data.func;\n        if (otherFunc == null || otherFunc == func) {\n          return data.name;\n        }\n      }\n      return result;\n    }\n\n    /**\n     * Gets the argument placeholder value for `func`.\n     *\n     * @private\n     * @param {Function} func The function to inspect.\n     * @returns {*} Returns the placeholder value.\n     */\n    function getHolder(func) {\n      var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n      return object.placeholder;\n    }\n\n    /**\n     * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n     * this function returns the custom method, otherwise it returns `baseIteratee`.\n     * If arguments are provided, the chosen function is invoked with them and\n     * its result is returned.\n     *\n     * @private\n     * @param {*} [value] The value to convert to an iteratee.\n     * @param {number} [arity] The arity of the created iteratee.\n     * @returns {Function} Returns the chosen function or its result.\n     */\n    function getIteratee() {\n      var result = lodash.iteratee || iteratee;\n      result = result === iteratee ? baseIteratee : result;\n      return arguments.length ? result(arguments[0], arguments[1]) : result;\n    }\n\n    /**\n     * Gets the data for `map`.\n     *\n     * @private\n     * @param {Object} map The map to query.\n     * @param {string} key The reference key.\n     * @returns {*} Returns the map data.\n     */\n    function getMapData(map, key) {\n      var data = map.__data__;\n      return isKeyable(key)\n        ? data[typeof key == 'string' ? 'string' : 'hash']\n        : data.map;\n    }\n\n    /**\n     * Gets the property names, values, and compare flags of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the match data of `object`.\n     */\n    function getMatchData(object) {\n      var result = keys(object),\n          length = result.length;\n\n      while (length--) {\n        var key = result[length],\n            value = object[key];\n\n        result[length] = [key, value, isStrictComparable(value)];\n      }\n      return result;\n    }\n\n    /**\n     * Gets the native function at `key` of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {string} key The key of the method to get.\n     * @returns {*} Returns the function if it's native, else `undefined`.\n     */\n    function getNative(object, key) {\n      var value = getValue(object, key);\n      return baseIsNative(value) ? value : undefined;\n    }\n\n    /**\n     * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n     *\n     * @private\n     * @param {*} value The value to query.\n     * @returns {string} Returns the raw `toStringTag`.\n     */\n    function getRawTag(value) {\n      var isOwn = hasOwnProperty.call(value, symToStringTag),\n          tag = value[symToStringTag];\n\n      try {\n        value[symToStringTag] = undefined;\n        var unmasked = true;\n      } catch (e) {}\n\n      var result = nativeObjectToString.call(value);\n      if (unmasked) {\n        if (isOwn) {\n          value[symToStringTag] = tag;\n        } else {\n          delete value[symToStringTag];\n        }\n      }\n      return result;\n    }\n\n    /**\n     * Creates an array of the own enumerable symbols of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of symbols.\n     */\n    var getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n      if (object == null) {\n        return [];\n      }\n      object = Object(object);\n      return arrayFilter(nativeGetSymbols(object), function(symbol) {\n        return propertyIsEnumerable.call(object, symbol);\n      });\n    };\n\n    /**\n     * Creates an array of the own and inherited enumerable symbols of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of symbols.\n     */\n    var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n      var result = [];\n      while (object) {\n        arrayPush(result, getSymbols(object));\n        object = getPrototype(object);\n      }\n      return result;\n    };\n\n    /**\n     * Gets the `toStringTag` of `value`.\n     *\n     * @private\n     * @param {*} value The value to query.\n     * @returns {string} Returns the `toStringTag`.\n     */\n    var getTag = baseGetTag;\n\n    // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n    if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n        (Map && getTag(new Map) != mapTag) ||\n        (Promise && getTag(Promise.resolve()) != promiseTag) ||\n        (Set && getTag(new Set) != setTag) ||\n        (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n      getTag = function(value) {\n        var result = baseGetTag(value),\n            Ctor = result == objectTag ? value.constructor : undefined,\n            ctorString = Ctor ? toSource(Ctor) : '';\n\n        if (ctorString) {\n          switch (ctorString) {\n            case dataViewCtorString: return dataViewTag;\n            case mapCtorString: return mapTag;\n            case promiseCtorString: return promiseTag;\n            case setCtorString: return setTag;\n            case weakMapCtorString: return weakMapTag;\n          }\n        }\n        return result;\n      };\n    }\n\n    /**\n     * Gets the view, applying any `transforms` to the `start` and `end` positions.\n     *\n     * @private\n     * @param {number} start The start of the view.\n     * @param {number} end The end of the view.\n     * @param {Array} transforms The transformations to apply to the view.\n     * @returns {Object} Returns an object containing the `start` and `end`\n     *  positions of the view.\n     */\n    function getView(start, end, transforms) {\n      var index = -1,\n          length = transforms.length;\n\n      while (++index < length) {\n        var data = transforms[index],\n            size = data.size;\n\n        switch (data.type) {\n          case 'drop':      start += size; break;\n          case 'dropRight': end -= size; break;\n          case 'take':      end = nativeMin(end, start + size); break;\n          case 'takeRight': start = nativeMax(start, end - size); break;\n        }\n      }\n      return { 'start': start, 'end': end };\n    }\n\n    /**\n     * Extracts wrapper details from the `source` body comment.\n     *\n     * @private\n     * @param {string} source The source to inspect.\n     * @returns {Array} Returns the wrapper details.\n     */\n    function getWrapDetails(source) {\n      var match = source.match(reWrapDetails);\n      return match ? match[1].split(reSplitDetails) : [];\n    }\n\n    /**\n     * Checks if `path` exists on `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path to check.\n     * @param {Function} hasFunc The function to check properties.\n     * @returns {boolean} Returns `true` if `path` exists, else `false`.\n     */\n    function hasPath(object, path, hasFunc) {\n      path = castPath(path, object);\n\n      var index = -1,\n          length = path.length,\n          result = false;\n\n      while (++index < length) {\n        var key = toKey(path[index]);\n        if (!(result = object != null && hasFunc(object, key))) {\n          break;\n        }\n        object = object[key];\n      }\n      if (result || ++index != length) {\n        return result;\n      }\n      length = object == null ? 0 : object.length;\n      return !!length && isLength(length) && isIndex(key, length) &&\n        (isArray(object) || isArguments(object));\n    }\n\n    /**\n     * Initializes an array clone.\n     *\n     * @private\n     * @param {Array} array The array to clone.\n     * @returns {Array} Returns the initialized clone.\n     */\n    function initCloneArray(array) {\n      var length = array.length,\n          result = new array.constructor(length);\n\n      // Add properties assigned by `RegExp#exec`.\n      if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n        result.index = array.index;\n        result.input = array.input;\n      }\n      return result;\n    }\n\n    /**\n     * Initializes an object clone.\n     *\n     * @private\n     * @param {Object} object The object to clone.\n     * @returns {Object} Returns the initialized clone.\n     */\n    function initCloneObject(object) {\n      return (typeof object.constructor == 'function' && !isPrototype(object))\n        ? baseCreate(getPrototype(object))\n        : {};\n    }\n\n    /**\n     * Initializes an object clone based on its `toStringTag`.\n     *\n     * **Note:** This function only supports cloning values with tags of\n     * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n     *\n     * @private\n     * @param {Object} object The object to clone.\n     * @param {string} tag The `toStringTag` of the object to clone.\n     * @param {boolean} [isDeep] Specify a deep clone.\n     * @returns {Object} Returns the initialized clone.\n     */\n    function initCloneByTag(object, tag, isDeep) {\n      var Ctor = object.constructor;\n      switch (tag) {\n        case arrayBufferTag:\n          return cloneArrayBuffer(object);\n\n        case boolTag:\n        case dateTag:\n          return new Ctor(+object);\n\n        case dataViewTag:\n          return cloneDataView(object, isDeep);\n\n        case float32Tag: case float64Tag:\n        case int8Tag: case int16Tag: case int32Tag:\n        case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n          return cloneTypedArray(object, isDeep);\n\n        case mapTag:\n          return new Ctor;\n\n        case numberTag:\n        case stringTag:\n          return new Ctor(object);\n\n        case regexpTag:\n          return cloneRegExp(object);\n\n        case setTag:\n          return new Ctor;\n\n        case symbolTag:\n          return cloneSymbol(object);\n      }\n    }\n\n    /**\n     * Inserts wrapper `details` in a comment at the top of the `source` body.\n     *\n     * @private\n     * @param {string} source The source to modify.\n     * @returns {Array} details The details to insert.\n     * @returns {string} Returns the modified source.\n     */\n    function insertWrapDetails(source, details) {\n      var length = details.length;\n      if (!length) {\n        return source;\n      }\n      var lastIndex = length - 1;\n      details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n      details = details.join(length > 2 ? ', ' : ' ');\n      return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n    }\n\n    /**\n     * Checks if `value` is a flattenable `arguments` object or array.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n     */\n    function isFlattenable(value) {\n      return isArray(value) || isArguments(value) ||\n        !!(spreadableSymbol && value && value[spreadableSymbol]);\n    }\n\n    /**\n     * Checks if `value` is a valid array-like index.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n     * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n     */\n    function isIndex(value, length) {\n      var type = typeof value;\n      length = length == null ? MAX_SAFE_INTEGER : length;\n\n      return !!length &&\n        (type == 'number' ||\n          (type != 'symbol' && reIsUint.test(value))) &&\n            (value > -1 && value % 1 == 0 && value < length);\n    }\n\n    /**\n     * Checks if the given arguments are from an iteratee call.\n     *\n     * @private\n     * @param {*} value The potential iteratee value argument.\n     * @param {*} index The potential iteratee index or key argument.\n     * @param {*} object The potential iteratee object argument.\n     * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n     *  else `false`.\n     */\n    function isIterateeCall(value, index, object) {\n      if (!isObject(object)) {\n        return false;\n      }\n      var type = typeof index;\n      if (type == 'number'\n            ? (isArrayLike(object) && isIndex(index, object.length))\n            : (type == 'string' && index in object)\n          ) {\n        return eq(object[index], value);\n      }\n      return false;\n    }\n\n    /**\n     * Checks if `value` is a property name and not a property path.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @param {Object} [object] The object to query keys on.\n     * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n     */\n    function isKey(value, object) {\n      if (isArray(value)) {\n        return false;\n      }\n      var type = typeof value;\n      if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n          value == null || isSymbol(value)) {\n        return true;\n      }\n      return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n        (object != null && value in Object(object));\n    }\n\n    /**\n     * Checks if `value` is suitable for use as unique object key.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n     */\n    function isKeyable(value) {\n      var type = typeof value;\n      return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n        ? (value !== '__proto__')\n        : (value === null);\n    }\n\n    /**\n     * Checks if `func` has a lazy counterpart.\n     *\n     * @private\n     * @param {Function} func The function to check.\n     * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n     *  else `false`.\n     */\n    function isLaziable(func) {\n      var funcName = getFuncName(func),\n          other = lodash[funcName];\n\n      if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n        return false;\n      }\n      if (func === other) {\n        return true;\n      }\n      var data = getData(other);\n      return !!data && func === data[0];\n    }\n\n    /**\n     * Checks if `func` has its source masked.\n     *\n     * @private\n     * @param {Function} func The function to check.\n     * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n     */\n    function isMasked(func) {\n      return !!maskSrcKey && (maskSrcKey in func);\n    }\n\n    /**\n     * Checks if `func` is capable of being masked.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n     */\n    var isMaskable = coreJsData ? isFunction : stubFalse;\n\n    /**\n     * Checks if `value` is likely a prototype object.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n     */\n    function isPrototype(value) {\n      var Ctor = value && value.constructor,\n          proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n      return value === proto;\n    }\n\n    /**\n     * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` if suitable for strict\n     *  equality comparisons, else `false`.\n     */\n    function isStrictComparable(value) {\n      return value === value && !isObject(value);\n    }\n\n    /**\n     * A specialized version of `matchesProperty` for source values suitable\n     * for strict equality comparisons, i.e. `===`.\n     *\n     * @private\n     * @param {string} key The key of the property to get.\n     * @param {*} srcValue The value to match.\n     * @returns {Function} Returns the new spec function.\n     */\n    function matchesStrictComparable(key, srcValue) {\n      return function(object) {\n        if (object == null) {\n          return false;\n        }\n        return object[key] === srcValue &&\n          (srcValue !== undefined || (key in Object(object)));\n      };\n    }\n\n    /**\n     * A specialized version of `_.memoize` which clears the memoized function's\n     * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n     *\n     * @private\n     * @param {Function} func The function to have its output memoized.\n     * @returns {Function} Returns the new memoized function.\n     */\n    function memoizeCapped(func) {\n      var result = memoize(func, function(key) {\n        if (cache.size === MAX_MEMOIZE_SIZE) {\n          cache.clear();\n        }\n        return key;\n      });\n\n      var cache = result.cache;\n      return result;\n    }\n\n    /**\n     * Merges the function metadata of `source` into `data`.\n     *\n     * Merging metadata reduces the number of wrappers used to invoke a function.\n     * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n     * may be applied regardless of execution order. Methods like `_.ary` and\n     * `_.rearg` modify function arguments, making the order in which they are\n     * executed important, preventing the merging of metadata. However, we make\n     * an exception for a safe combined case where curried functions have `_.ary`\n     * and or `_.rearg` applied.\n     *\n     * @private\n     * @param {Array} data The destination metadata.\n     * @param {Array} source The source metadata.\n     * @returns {Array} Returns `data`.\n     */\n    function mergeData(data, source) {\n      var bitmask = data[1],\n          srcBitmask = source[1],\n          newBitmask = bitmask | srcBitmask,\n          isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n      var isCombo =\n        ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n        ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n        ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n      // Exit early if metadata can't be merged.\n      if (!(isCommon || isCombo)) {\n        return data;\n      }\n      // Use source `thisArg` if available.\n      if (srcBitmask & WRAP_BIND_FLAG) {\n        data[2] = source[2];\n        // Set when currying a bound function.\n        newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n      }\n      // Compose partial arguments.\n      var value = source[3];\n      if (value) {\n        var partials = data[3];\n        data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n        data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n      }\n      // Compose partial right arguments.\n      value = source[5];\n      if (value) {\n        partials = data[5];\n        data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n        data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n      }\n      // Use source `argPos` if available.\n      value = source[7];\n      if (value) {\n        data[7] = value;\n      }\n      // Use source `ary` if it's smaller.\n      if (srcBitmask & WRAP_ARY_FLAG) {\n        data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n      }\n      // Use source `arity` if one is not provided.\n      if (data[9] == null) {\n        data[9] = source[9];\n      }\n      // Use source `func` and merge bitmasks.\n      data[0] = source[0];\n      data[1] = newBitmask;\n\n      return data;\n    }\n\n    /**\n     * This function is like\n     * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n     * except that it includes inherited enumerable properties.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property names.\n     */\n    function nativeKeysIn(object) {\n      var result = [];\n      if (object != null) {\n        for (var key in Object(object)) {\n          result.push(key);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * Converts `value` to a string using `Object.prototype.toString`.\n     *\n     * @private\n     * @param {*} value The value to convert.\n     * @returns {string} Returns the converted string.\n     */\n    function objectToString(value) {\n      return nativeObjectToString.call(value);\n    }\n\n    /**\n     * A specialized version of `baseRest` which transforms the rest array.\n     *\n     * @private\n     * @param {Function} func The function to apply a rest parameter to.\n     * @param {number} [start=func.length-1] The start position of the rest parameter.\n     * @param {Function} transform The rest array transform.\n     * @returns {Function} Returns the new function.\n     */\n    function overRest(func, start, transform) {\n      start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n      return function() {\n        var args = arguments,\n            index = -1,\n            length = nativeMax(args.length - start, 0),\n            array = Array(length);\n\n        while (++index < length) {\n          array[index] = args[start + index];\n        }\n        index = -1;\n        var otherArgs = Array(start + 1);\n        while (++index < start) {\n          otherArgs[index] = args[index];\n        }\n        otherArgs[start] = transform(array);\n        return apply(func, this, otherArgs);\n      };\n    }\n\n    /**\n     * Gets the parent value at `path` of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {Array} path The path to get the parent value of.\n     * @returns {*} Returns the parent value.\n     */\n    function parent(object, path) {\n      return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n    }\n\n    /**\n     * Reorder `array` according to the specified indexes where the element at\n     * the first index is assigned as the first element, the element at\n     * the second index is assigned as the second element, and so on.\n     *\n     * @private\n     * @param {Array} array The array to reorder.\n     * @param {Array} indexes The arranged array indexes.\n     * @returns {Array} Returns `array`.\n     */\n    function reorder(array, indexes) {\n      var arrLength = array.length,\n          length = nativeMin(indexes.length, arrLength),\n          oldArray = copyArray(array);\n\n      while (length--) {\n        var index = indexes[length];\n        array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n      }\n      return array;\n    }\n\n    /**\n     * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {string} key The key of the property to get.\n     * @returns {*} Returns the property value.\n     */\n    function safeGet(object, key) {\n      if (key === 'constructor' && typeof object[key] === 'function') {\n        return;\n      }\n\n      if (key == '__proto__') {\n        return;\n      }\n\n      return object[key];\n    }\n\n    /**\n     * Sets metadata for `func`.\n     *\n     * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n     * period of time, it will trip its breaker and transition to an identity\n     * function to avoid garbage collection pauses in V8. See\n     * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n     * for more details.\n     *\n     * @private\n     * @param {Function} func The function to associate metadata with.\n     * @param {*} data The metadata.\n     * @returns {Function} Returns `func`.\n     */\n    var setData = shortOut(baseSetData);\n\n    /**\n     * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n     *\n     * @private\n     * @param {Function} func The function to delay.\n     * @param {number} wait The number of milliseconds to delay invocation.\n     * @returns {number|Object} Returns the timer id or timeout object.\n     */\n    var setTimeout = ctxSetTimeout || function(func, wait) {\n      return root.setTimeout(func, wait);\n    };\n\n    /**\n     * Sets the `toString` method of `func` to return `string`.\n     *\n     * @private\n     * @param {Function} func The function to modify.\n     * @param {Function} string The `toString` result.\n     * @returns {Function} Returns `func`.\n     */\n    var setToString = shortOut(baseSetToString);\n\n    /**\n     * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n     * with wrapper details in a comment at the top of the source body.\n     *\n     * @private\n     * @param {Function} wrapper The function to modify.\n     * @param {Function} reference The reference function.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @returns {Function} Returns `wrapper`.\n     */\n    function setWrapToString(wrapper, reference, bitmask) {\n      var source = (reference + '');\n      return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n    }\n\n    /**\n     * Creates a function that'll short out and invoke `identity` instead\n     * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n     * milliseconds.\n     *\n     * @private\n     * @param {Function} func The function to restrict.\n     * @returns {Function} Returns the new shortable function.\n     */\n    function shortOut(func) {\n      var count = 0,\n          lastCalled = 0;\n\n      return function() {\n        var stamp = nativeNow(),\n            remaining = HOT_SPAN - (stamp - lastCalled);\n\n        lastCalled = stamp;\n        if (remaining > 0) {\n          if (++count >= HOT_COUNT) {\n            return arguments[0];\n          }\n        } else {\n          count = 0;\n        }\n        return func.apply(undefined, arguments);\n      };\n    }\n\n    /**\n     * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n     *\n     * @private\n     * @param {Array} array The array to shuffle.\n     * @param {number} [size=array.length] The size of `array`.\n     * @returns {Array} Returns `array`.\n     */\n    function shuffleSelf(array, size) {\n      var index = -1,\n          length = array.length,\n          lastIndex = length - 1;\n\n      size = size === undefined ? length : size;\n      while (++index < size) {\n        var rand = baseRandom(index, lastIndex),\n            value = array[rand];\n\n        array[rand] = array[index];\n        array[index] = value;\n      }\n      array.length = size;\n      return array;\n    }\n\n    /**\n     * Converts `string` to a property path array.\n     *\n     * @private\n     * @param {string} string The string to convert.\n     * @returns {Array} Returns the property path array.\n     */\n    var stringToPath = memoizeCapped(function(string) {\n      var result = [];\n      if (string.charCodeAt(0) === 46 /* . */) {\n        result.push('');\n      }\n      string.replace(rePropName, function(match, number, quote, subString) {\n        result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n      });\n      return result;\n    });\n\n    /**\n     * Converts `value` to a string key if it's not a string or symbol.\n     *\n     * @private\n     * @param {*} value The value to inspect.\n     * @returns {string|symbol} Returns the key.\n     */\n    function toKey(value) {\n      if (typeof value == 'string' || isSymbol(value)) {\n        return value;\n      }\n      var result = (value + '');\n      return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n    }\n\n    /**\n     * Converts `func` to its source code.\n     *\n     * @private\n     * @param {Function} func The function to convert.\n     * @returns {string} Returns the source code.\n     */\n    function toSource(func) {\n      if (func != null) {\n        try {\n          return funcToString.call(func);\n        } catch (e) {}\n        try {\n          return (func + '');\n        } catch (e) {}\n      }\n      return '';\n    }\n\n    /**\n     * Updates wrapper `details` based on `bitmask` flags.\n     *\n     * @private\n     * @returns {Array} details The details to modify.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @returns {Array} Returns `details`.\n     */\n    function updateWrapDetails(details, bitmask) {\n      arrayEach(wrapFlags, function(pair) {\n        var value = '_.' + pair[0];\n        if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n          details.push(value);\n        }\n      });\n      return details.sort();\n    }\n\n    /**\n     * Creates a clone of `wrapper`.\n     *\n     * @private\n     * @param {Object} wrapper The wrapper to clone.\n     * @returns {Object} Returns the cloned wrapper.\n     */\n    function wrapperClone(wrapper) {\n      if (wrapper instanceof LazyWrapper) {\n        return wrapper.clone();\n      }\n      var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n      result.__actions__ = copyArray(wrapper.__actions__);\n      result.__index__  = wrapper.__index__;\n      result.__values__ = wrapper.__values__;\n      return result;\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates an array of elements split into groups the length of `size`.\n     * If `array` can't be split evenly, the final chunk will be the remaining\n     * elements.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to process.\n     * @param {number} [size=1] The length of each chunk\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the new array of chunks.\n     * @example\n     *\n     * _.chunk(['a', 'b', 'c', 'd'], 2);\n     * // => [['a', 'b'], ['c', 'd']]\n     *\n     * _.chunk(['a', 'b', 'c', 'd'], 3);\n     * // => [['a', 'b', 'c'], ['d']]\n     */\n    function chunk(array, size, guard) {\n      if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n        size = 1;\n      } else {\n        size = nativeMax(toInteger(size), 0);\n      }\n      var length = array == null ? 0 : array.length;\n      if (!length || size < 1) {\n        return [];\n      }\n      var index = 0,\n          resIndex = 0,\n          result = Array(nativeCeil(length / size));\n\n      while (index < length) {\n        result[resIndex++] = baseSlice(array, index, (index += size));\n      }\n      return result;\n    }\n\n    /**\n     * Creates an array with all falsey values removed. The values `false`, `null`,\n     * `0`, `-0`, `0n`, `\"\"`, `undefined`, and `NaN` are falsy.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to compact.\n     * @returns {Array} Returns the new array of filtered values.\n     * @example\n     *\n     * _.compact([0, 1, false, 2, '', 3]);\n     * // => [1, 2, 3]\n     */\n    function compact(array) {\n      var index = -1,\n          length = array == null ? 0 : array.length,\n          resIndex = 0,\n          result = [];\n\n      while (++index < length) {\n        var value = array[index];\n        if (value) {\n          result[resIndex++] = value;\n        }\n      }\n      return result;\n    }\n\n    /**\n     * Creates a new array concatenating `array` with any additional arrays\n     * and/or values.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to concatenate.\n     * @param {...*} [values] The values to concatenate.\n     * @returns {Array} Returns the new concatenated array.\n     * @example\n     *\n     * var array = [1];\n     * var other = _.concat(array, 2, [3], [[4]]);\n     *\n     * console.log(other);\n     * // => [1, 2, 3, [4]]\n     *\n     * console.log(array);\n     * // => [1]\n     */\n    function concat() {\n      var length = arguments.length;\n      if (!length) {\n        return [];\n      }\n      var args = Array(length - 1),\n          array = arguments[0],\n          index = length;\n\n      while (index--) {\n        args[index - 1] = arguments[index];\n      }\n      return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n    }\n\n    /**\n     * Creates an array of `array` values not included in the other given arrays\n     * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons. The order and references of result values are\n     * determined by the first array.\n     *\n     * **Note:** Unlike `_.pullAll`, this method returns a new array.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {...Array} [values] The values to exclude.\n     * @returns {Array} Returns the new array of filtered values.\n     * @see _.without, _.xor\n     * @example\n     *\n     * _.difference([2, 1], [2, 3]);\n     * // => [1]\n     */\n    var difference = baseRest(function(array, values) {\n      return isArrayLikeObject(array)\n        ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n        : [];\n    });\n\n    /**\n     * This method is like `_.difference` except that it accepts `iteratee` which\n     * is invoked for each element of `array` and `values` to generate the criterion\n     * by which they're compared. The order and references of result values are\n     * determined by the first array. The iteratee is invoked with one argument:\n     * (value).\n     *\n     * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {...Array} [values] The values to exclude.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns the new array of filtered values.\n     * @example\n     *\n     * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n     * // => [1.2]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n     * // => [{ 'x': 2 }]\n     */\n    var differenceBy = baseRest(function(array, values) {\n      var iteratee = last(values);\n      if (isArrayLikeObject(iteratee)) {\n        iteratee = undefined;\n      }\n      return isArrayLikeObject(array)\n        ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))\n        : [];\n    });\n\n    /**\n     * This method is like `_.difference` except that it accepts `comparator`\n     * which is invoked to compare elements of `array` to `values`. The order and\n     * references of result values are determined by the first array. The comparator\n     * is invoked with two arguments: (arrVal, othVal).\n     *\n     * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {...Array} [values] The values to exclude.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of filtered values.\n     * @example\n     *\n     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n     *\n     * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n     * // => [{ 'x': 2, 'y': 1 }]\n     */\n    var differenceWith = baseRest(function(array, values) {\n      var comparator = last(values);\n      if (isArrayLikeObject(comparator)) {\n        comparator = undefined;\n      }\n      return isArrayLikeObject(array)\n        ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n        : [];\n    });\n\n    /**\n     * Creates a slice of `array` with `n` elements dropped from the beginning.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.5.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {number} [n=1] The number of elements to drop.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.drop([1, 2, 3]);\n     * // => [2, 3]\n     *\n     * _.drop([1, 2, 3], 2);\n     * // => [3]\n     *\n     * _.drop([1, 2, 3], 5);\n     * // => []\n     *\n     * _.drop([1, 2, 3], 0);\n     * // => [1, 2, 3]\n     */\n    function drop(array, n, guard) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      n = (guard || n === undefined) ? 1 : toInteger(n);\n      return baseSlice(array, n < 0 ? 0 : n, length);\n    }\n\n    /**\n     * Creates a slice of `array` with `n` elements dropped from the end.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {number} [n=1] The number of elements to drop.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.dropRight([1, 2, 3]);\n     * // => [1, 2]\n     *\n     * _.dropRight([1, 2, 3], 2);\n     * // => [1]\n     *\n     * _.dropRight([1, 2, 3], 5);\n     * // => []\n     *\n     * _.dropRight([1, 2, 3], 0);\n     * // => [1, 2, 3]\n     */\n    function dropRight(array, n, guard) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      n = (guard || n === undefined) ? 1 : toInteger(n);\n      n = length - n;\n      return baseSlice(array, 0, n < 0 ? 0 : n);\n    }\n\n    /**\n     * Creates a slice of `array` excluding elements dropped from the end.\n     * Elements are dropped until `predicate` returns falsey. The predicate is\n     * invoked with three arguments: (value, index, array).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'active': true },\n     *   { 'user': 'fred',    'active': false },\n     *   { 'user': 'pebbles', 'active': false }\n     * ];\n     *\n     * _.dropRightWhile(users, function(o) { return !o.active; });\n     * // => objects for ['barney']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n     * // => objects for ['barney', 'fred']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.dropRightWhile(users, ['active', false]);\n     * // => objects for ['barney']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.dropRightWhile(users, 'active');\n     * // => objects for ['barney', 'fred', 'pebbles']\n     */\n    function dropRightWhile(array, predicate) {\n      return (array && array.length)\n        ? baseWhile(array, getIteratee(predicate, 3), true, true)\n        : [];\n    }\n\n    /**\n     * Creates a slice of `array` excluding elements dropped from the beginning.\n     * Elements are dropped until `predicate` returns falsey. The predicate is\n     * invoked with three arguments: (value, index, array).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'active': false },\n     *   { 'user': 'fred',    'active': false },\n     *   { 'user': 'pebbles', 'active': true }\n     * ];\n     *\n     * _.dropWhile(users, function(o) { return !o.active; });\n     * // => objects for ['pebbles']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.dropWhile(users, { 'user': 'barney', 'active': false });\n     * // => objects for ['fred', 'pebbles']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.dropWhile(users, ['active', false]);\n     * // => objects for ['pebbles']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.dropWhile(users, 'active');\n     * // => objects for ['barney', 'fred', 'pebbles']\n     */\n    function dropWhile(array, predicate) {\n      return (array && array.length)\n        ? baseWhile(array, getIteratee(predicate, 3), true)\n        : [];\n    }\n\n    /**\n     * Fills elements of `array` with `value` from `start` up to, but not\n     * including, `end`.\n     *\n     * **Note:** This method mutates `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.2.0\n     * @category Array\n     * @param {Array} array The array to fill.\n     * @param {*} value The value to fill `array` with.\n     * @param {number} [start=0] The start position.\n     * @param {number} [end=array.length] The end position.\n     * @returns {Array} Returns `array`.\n     * @example\n     *\n     * var array = [1, 2, 3];\n     *\n     * _.fill(array, 'a');\n     * console.log(array);\n     * // => ['a', 'a', 'a']\n     *\n     * _.fill(Array(3), 2);\n     * // => [2, 2, 2]\n     *\n     * _.fill([4, 6, 8, 10], '*', 1, 3);\n     * // => [4, '*', '*', 10]\n     */\n    function fill(array, value, start, end) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n        start = 0;\n        end = length;\n      }\n      return baseFill(array, value, start, end);\n    }\n\n    /**\n     * This method is like `_.find` except that it returns the index of the first\n     * element `predicate` returns truthy for instead of the element itself.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.1.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @param {number} [fromIndex=0] The index to search from.\n     * @returns {number} Returns the index of the found element, else `-1`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'active': false },\n     *   { 'user': 'fred',    'active': false },\n     *   { 'user': 'pebbles', 'active': true }\n     * ];\n     *\n     * _.findIndex(users, function(o) { return o.user == 'barney'; });\n     * // => 0\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.findIndex(users, { 'user': 'fred', 'active': false });\n     * // => 1\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.findIndex(users, ['active', false]);\n     * // => 0\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.findIndex(users, 'active');\n     * // => 2\n     */\n    function findIndex(array, predicate, fromIndex) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return -1;\n      }\n      var index = fromIndex == null ? 0 : toInteger(fromIndex);\n      if (index < 0) {\n        index = nativeMax(length + index, 0);\n      }\n      return baseFindIndex(array, getIteratee(predicate, 3), index);\n    }\n\n    /**\n     * This method is like `_.findIndex` except that it iterates over elements\n     * of `collection` from right to left.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @param {number} [fromIndex=array.length-1] The index to search from.\n     * @returns {number} Returns the index of the found element, else `-1`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'active': true },\n     *   { 'user': 'fred',    'active': false },\n     *   { 'user': 'pebbles', 'active': false }\n     * ];\n     *\n     * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n     * // => 2\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n     * // => 0\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.findLastIndex(users, ['active', false]);\n     * // => 2\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.findLastIndex(users, 'active');\n     * // => 0\n     */\n    function findLastIndex(array, predicate, fromIndex) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return -1;\n      }\n      var index = length - 1;\n      if (fromIndex !== undefined) {\n        index = toInteger(fromIndex);\n        index = fromIndex < 0\n          ? nativeMax(length + index, 0)\n          : nativeMin(index, length - 1);\n      }\n      return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n    }\n\n    /**\n     * Flattens `array` a single level deep.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to flatten.\n     * @returns {Array} Returns the new flattened array.\n     * @example\n     *\n     * _.flatten([1, [2, [3, [4]], 5]]);\n     * // => [1, 2, [3, [4]], 5]\n     */\n    function flatten(array) {\n      var length = array == null ? 0 : array.length;\n      return length ? baseFlatten(array, 1) : [];\n    }\n\n    /**\n     * Recursively flattens `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to flatten.\n     * @returns {Array} Returns the new flattened array.\n     * @example\n     *\n     * _.flattenDeep([1, [2, [3, [4]], 5]]);\n     * // => [1, 2, 3, 4, 5]\n     */\n    function flattenDeep(array) {\n      var length = array == null ? 0 : array.length;\n      return length ? baseFlatten(array, INFINITY) : [];\n    }\n\n    /**\n     * Recursively flatten `array` up to `depth` times.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.4.0\n     * @category Array\n     * @param {Array} array The array to flatten.\n     * @param {number} [depth=1] The maximum recursion depth.\n     * @returns {Array} Returns the new flattened array.\n     * @example\n     *\n     * var array = [1, [2, [3, [4]], 5]];\n     *\n     * _.flattenDepth(array, 1);\n     * // => [1, 2, [3, [4]], 5]\n     *\n     * _.flattenDepth(array, 2);\n     * // => [1, 2, 3, [4], 5]\n     */\n    function flattenDepth(array, depth) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      depth = depth === undefined ? 1 : toInteger(depth);\n      return baseFlatten(array, depth);\n    }\n\n    /**\n     * The inverse of `_.toPairs`; this method returns an object composed\n     * from key-value `pairs`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} pairs The key-value pairs.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * _.fromPairs([['a', 1], ['b', 2]]);\n     * // => { 'a': 1, 'b': 2 }\n     */\n    function fromPairs(pairs) {\n      var index = -1,\n          length = pairs == null ? 0 : pairs.length,\n          result = {};\n\n      while (++index < length) {\n        var pair = pairs[index];\n        baseAssignValue(result, pair[0], pair[1]);\n      }\n      return result;\n    }\n\n    /**\n     * Gets the first element of `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @alias first\n     * @category Array\n     * @param {Array} array The array to query.\n     * @returns {*} Returns the first element of `array`.\n     * @example\n     *\n     * _.head([1, 2, 3]);\n     * // => 1\n     *\n     * _.head([]);\n     * // => undefined\n     */\n    function head(array) {\n      return (array && array.length) ? array[0] : undefined;\n    }\n\n    /**\n     * Gets the index at which the first occurrence of `value` is found in `array`\n     * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons. If `fromIndex` is negative, it's used as the\n     * offset from the end of `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {*} value The value to search for.\n     * @param {number} [fromIndex=0] The index to search from.\n     * @returns {number} Returns the index of the matched value, else `-1`.\n     * @example\n     *\n     * _.indexOf([1, 2, 1, 2], 2);\n     * // => 1\n     *\n     * // Search from the `fromIndex`.\n     * _.indexOf([1, 2, 1, 2], 2, 2);\n     * // => 3\n     */\n    function indexOf(array, value, fromIndex) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return -1;\n      }\n      var index = fromIndex == null ? 0 : toInteger(fromIndex);\n      if (index < 0) {\n        index = nativeMax(length + index, 0);\n      }\n      return baseIndexOf(array, value, index);\n    }\n\n    /**\n     * Gets all but the last element of `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.initial([1, 2, 3]);\n     * // => [1, 2]\n     */\n    function initial(array) {\n      var length = array == null ? 0 : array.length;\n      return length ? baseSlice(array, 0, -1) : [];\n    }\n\n    /**\n     * Creates an array of unique values that are included in all given arrays\n     * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons. The order and references of result values are\n     * determined by the first array.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @returns {Array} Returns the new array of intersecting values.\n     * @example\n     *\n     * _.intersection([2, 1], [2, 3]);\n     * // => [2]\n     */\n    var intersection = baseRest(function(arrays) {\n      var mapped = arrayMap(arrays, castArrayLikeObject);\n      return (mapped.length && mapped[0] === arrays[0])\n        ? baseIntersection(mapped)\n        : [];\n    });\n\n    /**\n     * This method is like `_.intersection` except that it accepts `iteratee`\n     * which is invoked for each element of each `arrays` to generate the criterion\n     * by which they're compared. The order and references of result values are\n     * determined by the first array. The iteratee is invoked with one argument:\n     * (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns the new array of intersecting values.\n     * @example\n     *\n     * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n     * // => [2.1]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n     * // => [{ 'x': 1 }]\n     */\n    var intersectionBy = baseRest(function(arrays) {\n      var iteratee = last(arrays),\n          mapped = arrayMap(arrays, castArrayLikeObject);\n\n      if (iteratee === last(mapped)) {\n        iteratee = undefined;\n      } else {\n        mapped.pop();\n      }\n      return (mapped.length && mapped[0] === arrays[0])\n        ? baseIntersection(mapped, getIteratee(iteratee, 2))\n        : [];\n    });\n\n    /**\n     * This method is like `_.intersection` except that it accepts `comparator`\n     * which is invoked to compare elements of `arrays`. The order and references\n     * of result values are determined by the first array. The comparator is\n     * invoked with two arguments: (arrVal, othVal).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of intersecting values.\n     * @example\n     *\n     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n     * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n     *\n     * _.intersectionWith(objects, others, _.isEqual);\n     * // => [{ 'x': 1, 'y': 2 }]\n     */\n    var intersectionWith = baseRest(function(arrays) {\n      var comparator = last(arrays),\n          mapped = arrayMap(arrays, castArrayLikeObject);\n\n      comparator = typeof comparator == 'function' ? comparator : undefined;\n      if (comparator) {\n        mapped.pop();\n      }\n      return (mapped.length && mapped[0] === arrays[0])\n        ? baseIntersection(mapped, undefined, comparator)\n        : [];\n    });\n\n    /**\n     * Converts all elements in `array` into a string separated by `separator`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to convert.\n     * @param {string} [separator=','] The element separator.\n     * @returns {string} Returns the joined string.\n     * @example\n     *\n     * _.join(['a', 'b', 'c'], '~');\n     * // => 'a~b~c'\n     */\n    function join(array, separator) {\n      return array == null ? '' : nativeJoin.call(array, separator);\n    }\n\n    /**\n     * Gets the last element of `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @returns {*} Returns the last element of `array`.\n     * @example\n     *\n     * _.last([1, 2, 3]);\n     * // => 3\n     */\n    function last(array) {\n      var length = array == null ? 0 : array.length;\n      return length ? array[length - 1] : undefined;\n    }\n\n    /**\n     * This method is like `_.indexOf` except that it iterates over elements of\n     * `array` from right to left.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {*} value The value to search for.\n     * @param {number} [fromIndex=array.length-1] The index to search from.\n     * @returns {number} Returns the index of the matched value, else `-1`.\n     * @example\n     *\n     * _.lastIndexOf([1, 2, 1, 2], 2);\n     * // => 3\n     *\n     * // Search from the `fromIndex`.\n     * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n     * // => 1\n     */\n    function lastIndexOf(array, value, fromIndex) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return -1;\n      }\n      var index = length;\n      if (fromIndex !== undefined) {\n        index = toInteger(fromIndex);\n        index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n      }\n      return value === value\n        ? strictLastIndexOf(array, value, index)\n        : baseFindIndex(array, baseIsNaN, index, true);\n    }\n\n    /**\n     * Gets the element at index `n` of `array`. If `n` is negative, the nth\n     * element from the end is returned.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.11.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {number} [n=0] The index of the element to return.\n     * @returns {*} Returns the nth element of `array`.\n     * @example\n     *\n     * var array = ['a', 'b', 'c', 'd'];\n     *\n     * _.nth(array, 1);\n     * // => 'b'\n     *\n     * _.nth(array, -2);\n     * // => 'c';\n     */\n    function nth(array, n) {\n      return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n    }\n\n    /**\n     * Removes all given values from `array` using\n     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons.\n     *\n     * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n     * to remove elements from an array by predicate.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @param {...*} [values] The values to remove.\n     * @returns {Array} Returns `array`.\n     * @example\n     *\n     * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n     *\n     * _.pull(array, 'a', 'c');\n     * console.log(array);\n     * // => ['b', 'b']\n     */\n    var pull = baseRest(pullAll);\n\n    /**\n     * This method is like `_.pull` except that it accepts an array of values to remove.\n     *\n     * **Note:** Unlike `_.difference`, this method mutates `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @param {Array} values The values to remove.\n     * @returns {Array} Returns `array`.\n     * @example\n     *\n     * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n     *\n     * _.pullAll(array, ['a', 'c']);\n     * console.log(array);\n     * // => ['b', 'b']\n     */\n    function pullAll(array, values) {\n      return (array && array.length && values && values.length)\n        ? basePullAll(array, values)\n        : array;\n    }\n\n    /**\n     * This method is like `_.pullAll` except that it accepts `iteratee` which is\n     * invoked for each element of `array` and `values` to generate the criterion\n     * by which they're compared. The iteratee is invoked with one argument: (value).\n     *\n     * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @param {Array} values The values to remove.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns `array`.\n     * @example\n     *\n     * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n     *\n     * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n     * console.log(array);\n     * // => [{ 'x': 2 }]\n     */\n    function pullAllBy(array, values, iteratee) {\n      return (array && array.length && values && values.length)\n        ? basePullAll(array, values, getIteratee(iteratee, 2))\n        : array;\n    }\n\n    /**\n     * This method is like `_.pullAll` except that it accepts `comparator` which\n     * is invoked to compare elements of `array` to `values`. The comparator is\n     * invoked with two arguments: (arrVal, othVal).\n     *\n     * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.6.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @param {Array} values The values to remove.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns `array`.\n     * @example\n     *\n     * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n     *\n     * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n     * console.log(array);\n     * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n     */\n    function pullAllWith(array, values, comparator) {\n      return (array && array.length && values && values.length)\n        ? basePullAll(array, values, undefined, comparator)\n        : array;\n    }\n\n    /**\n     * Removes elements from `array` corresponding to `indexes` and returns an\n     * array of removed elements.\n     *\n     * **Note:** Unlike `_.at`, this method mutates `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n     * @returns {Array} Returns the new array of removed elements.\n     * @example\n     *\n     * var array = ['a', 'b', 'c', 'd'];\n     * var pulled = _.pullAt(array, [1, 3]);\n     *\n     * console.log(array);\n     * // => ['a', 'c']\n     *\n     * console.log(pulled);\n     * // => ['b', 'd']\n     */\n    var pullAt = flatRest(function(array, indexes) {\n      var length = array == null ? 0 : array.length,\n          result = baseAt(array, indexes);\n\n      basePullAt(array, arrayMap(indexes, function(index) {\n        return isIndex(index, length) ? +index : index;\n      }).sort(compareAscending));\n\n      return result;\n    });\n\n    /**\n     * Removes all elements from `array` that `predicate` returns truthy for\n     * and returns an array of the removed elements. The predicate is invoked\n     * with three arguments: (value, index, array).\n     *\n     * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n     * to pull elements from an array by value.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the new array of removed elements.\n     * @example\n     *\n     * var array = [1, 2, 3, 4];\n     * var evens = _.remove(array, function(n) {\n     *   return n % 2 == 0;\n     * });\n     *\n     * console.log(array);\n     * // => [1, 3]\n     *\n     * console.log(evens);\n     * // => [2, 4]\n     */\n    function remove(array, predicate) {\n      var result = [];\n      if (!(array && array.length)) {\n        return result;\n      }\n      var index = -1,\n          indexes = [],\n          length = array.length;\n\n      predicate = getIteratee(predicate, 3);\n      while (++index < length) {\n        var value = array[index];\n        if (predicate(value, index, array)) {\n          result.push(value);\n          indexes.push(index);\n        }\n      }\n      basePullAt(array, indexes);\n      return result;\n    }\n\n    /**\n     * Reverses `array` so that the first element becomes the last, the second\n     * element becomes the second to last, and so on.\n     *\n     * **Note:** This method mutates `array` and is based on\n     * [`Array#reverse`](https://mdn.io/Array/reverse).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @returns {Array} Returns `array`.\n     * @example\n     *\n     * var array = [1, 2, 3];\n     *\n     * _.reverse(array);\n     * // => [3, 2, 1]\n     *\n     * console.log(array);\n     * // => [3, 2, 1]\n     */\n    function reverse(array) {\n      return array == null ? array : nativeReverse.call(array);\n    }\n\n    /**\n     * Creates a slice of `array` from `start` up to, but not including, `end`.\n     *\n     * **Note:** This method is used instead of\n     * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n     * returned.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to slice.\n     * @param {number} [start=0] The start position.\n     * @param {number} [end=array.length] The end position.\n     * @returns {Array} Returns the slice of `array`.\n     */\n    function slice(array, start, end) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n        start = 0;\n        end = length;\n      }\n      else {\n        start = start == null ? 0 : toInteger(start);\n        end = end === undefined ? length : toInteger(end);\n      }\n      return baseSlice(array, start, end);\n    }\n\n    /**\n     * Uses a binary search to determine the lowest index at which `value`\n     * should be inserted into `array` in order to maintain its sort order.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     * @example\n     *\n     * _.sortedIndex([30, 50], 40);\n     * // => 1\n     */\n    function sortedIndex(array, value) {\n      return baseSortedIndex(array, value);\n    }\n\n    /**\n     * This method is like `_.sortedIndex` except that it accepts `iteratee`\n     * which is invoked for `value` and each element of `array` to compute their\n     * sort ranking. The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     * @example\n     *\n     * var objects = [{ 'x': 4 }, { 'x': 5 }];\n     *\n     * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n     * // => 0\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n     * // => 0\n     */\n    function sortedIndexBy(array, value, iteratee) {\n      return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n    }\n\n    /**\n     * This method is like `_.indexOf` except that it performs a binary\n     * search on a sorted `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {*} value The value to search for.\n     * @returns {number} Returns the index of the matched value, else `-1`.\n     * @example\n     *\n     * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n     * // => 1\n     */\n    function sortedIndexOf(array, value) {\n      var length = array == null ? 0 : array.length;\n      if (length) {\n        var index = baseSortedIndex(array, value);\n        if (index < length && eq(array[index], value)) {\n          return index;\n        }\n      }\n      return -1;\n    }\n\n    /**\n     * This method is like `_.sortedIndex` except that it returns the highest\n     * index at which `value` should be inserted into `array` in order to\n     * maintain its sort order.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     * @example\n     *\n     * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n     * // => 4\n     */\n    function sortedLastIndex(array, value) {\n      return baseSortedIndex(array, value, true);\n    }\n\n    /**\n     * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n     * which is invoked for `value` and each element of `array` to compute their\n     * sort ranking. The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     * @example\n     *\n     * var objects = [{ 'x': 4 }, { 'x': 5 }];\n     *\n     * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n     * // => 1\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n     * // => 1\n     */\n    function sortedLastIndexBy(array, value, iteratee) {\n      return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n    }\n\n    /**\n     * This method is like `_.lastIndexOf` except that it performs a binary\n     * search on a sorted `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {*} value The value to search for.\n     * @returns {number} Returns the index of the matched value, else `-1`.\n     * @example\n     *\n     * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n     * // => 3\n     */\n    function sortedLastIndexOf(array, value) {\n      var length = array == null ? 0 : array.length;\n      if (length) {\n        var index = baseSortedIndex(array, value, true) - 1;\n        if (eq(array[index], value)) {\n          return index;\n        }\n      }\n      return -1;\n    }\n\n    /**\n     * This method is like `_.uniq` except that it's designed and optimized\n     * for sorted arrays.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @returns {Array} Returns the new duplicate free array.\n     * @example\n     *\n     * _.sortedUniq([1, 1, 2]);\n     * // => [1, 2]\n     */\n    function sortedUniq(array) {\n      return (array && array.length)\n        ? baseSortedUniq(array)\n        : [];\n    }\n\n    /**\n     * This method is like `_.uniqBy` except that it's designed and optimized\n     * for sorted arrays.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @returns {Array} Returns the new duplicate free array.\n     * @example\n     *\n     * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n     * // => [1.1, 2.3]\n     */\n    function sortedUniqBy(array, iteratee) {\n      return (array && array.length)\n        ? baseSortedUniq(array, getIteratee(iteratee, 2))\n        : [];\n    }\n\n    /**\n     * Gets all but the first element of `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.tail([1, 2, 3]);\n     * // => [2, 3]\n     */\n    function tail(array) {\n      var length = array == null ? 0 : array.length;\n      return length ? baseSlice(array, 1, length) : [];\n    }\n\n    /**\n     * Creates a slice of `array` with `n` elements taken from the beginning.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {number} [n=1] The number of elements to take.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.take([1, 2, 3]);\n     * // => [1]\n     *\n     * _.take([1, 2, 3], 2);\n     * // => [1, 2]\n     *\n     * _.take([1, 2, 3], 5);\n     * // => [1, 2, 3]\n     *\n     * _.take([1, 2, 3], 0);\n     * // => []\n     */\n    function take(array, n, guard) {\n      if (!(array && array.length)) {\n        return [];\n      }\n      n = (guard || n === undefined) ? 1 : toInteger(n);\n      return baseSlice(array, 0, n < 0 ? 0 : n);\n    }\n\n    /**\n     * Creates a slice of `array` with `n` elements taken from the end.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {number} [n=1] The number of elements to take.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.takeRight([1, 2, 3]);\n     * // => [3]\n     *\n     * _.takeRight([1, 2, 3], 2);\n     * // => [2, 3]\n     *\n     * _.takeRight([1, 2, 3], 5);\n     * // => [1, 2, 3]\n     *\n     * _.takeRight([1, 2, 3], 0);\n     * // => []\n     */\n    function takeRight(array, n, guard) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      n = (guard || n === undefined) ? 1 : toInteger(n);\n      n = length - n;\n      return baseSlice(array, n < 0 ? 0 : n, length);\n    }\n\n    /**\n     * Creates a slice of `array` with elements taken from the end. Elements are\n     * taken until `predicate` returns falsey. The predicate is invoked with\n     * three arguments: (value, index, array).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'active': true },\n     *   { 'user': 'fred',    'active': false },\n     *   { 'user': 'pebbles', 'active': false }\n     * ];\n     *\n     * _.takeRightWhile(users, function(o) { return !o.active; });\n     * // => objects for ['fred', 'pebbles']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n     * // => objects for ['pebbles']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.takeRightWhile(users, ['active', false]);\n     * // => objects for ['fred', 'pebbles']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.takeRightWhile(users, 'active');\n     * // => []\n     */\n    function takeRightWhile(array, predicate) {\n      return (array && array.length)\n        ? baseWhile(array, getIteratee(predicate, 3), false, true)\n        : [];\n    }\n\n    /**\n     * Creates a slice of `array` with elements taken from the beginning. Elements\n     * are taken until `predicate` returns falsey. The predicate is invoked with\n     * three arguments: (value, index, array).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'active': false },\n     *   { 'user': 'fred',    'active': false },\n     *   { 'user': 'pebbles', 'active': true }\n     * ];\n     *\n     * _.takeWhile(users, function(o) { return !o.active; });\n     * // => objects for ['barney', 'fred']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.takeWhile(users, { 'user': 'barney', 'active': false });\n     * // => objects for ['barney']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.takeWhile(users, ['active', false]);\n     * // => objects for ['barney', 'fred']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.takeWhile(users, 'active');\n     * // => []\n     */\n    function takeWhile(array, predicate) {\n      return (array && array.length)\n        ? baseWhile(array, getIteratee(predicate, 3))\n        : [];\n    }\n\n    /**\n     * Creates an array of unique values, in order, from all given arrays using\n     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @returns {Array} Returns the new array of combined values.\n     * @example\n     *\n     * _.union([2], [1, 2]);\n     * // => [2, 1]\n     */\n    var union = baseRest(function(arrays) {\n      return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n    });\n\n    /**\n     * This method is like `_.union` except that it accepts `iteratee` which is\n     * invoked for each element of each `arrays` to generate the criterion by\n     * which uniqueness is computed. Result values are chosen from the first\n     * array in which the value occurs. The iteratee is invoked with one argument:\n     * (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns the new array of combined values.\n     * @example\n     *\n     * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n     * // => [2.1, 1.2]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n     * // => [{ 'x': 1 }, { 'x': 2 }]\n     */\n    var unionBy = baseRest(function(arrays) {\n      var iteratee = last(arrays);\n      if (isArrayLikeObject(iteratee)) {\n        iteratee = undefined;\n      }\n      return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n    });\n\n    /**\n     * This method is like `_.union` except that it accepts `comparator` which\n     * is invoked to compare elements of `arrays`. Result values are chosen from\n     * the first array in which the value occurs. The comparator is invoked\n     * with two arguments: (arrVal, othVal).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of combined values.\n     * @example\n     *\n     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n     * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n     *\n     * _.unionWith(objects, others, _.isEqual);\n     * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n     */\n    var unionWith = baseRest(function(arrays) {\n      var comparator = last(arrays);\n      comparator = typeof comparator == 'function' ? comparator : undefined;\n      return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n    });\n\n    /**\n     * Creates a duplicate-free version of an array, using\n     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons, in which only the first occurrence of each element\n     * is kept. The order of result values is determined by the order they occur\n     * in the array.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @returns {Array} Returns the new duplicate free array.\n     * @example\n     *\n     * _.uniq([2, 1, 2]);\n     * // => [2, 1]\n     */\n    function uniq(array) {\n      return (array && array.length) ? baseUniq(array) : [];\n    }\n\n    /**\n     * This method is like `_.uniq` except that it accepts `iteratee` which is\n     * invoked for each element in `array` to generate the criterion by which\n     * uniqueness is computed. The order of result values is determined by the\n     * order they occur in the array. The iteratee is invoked with one argument:\n     * (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns the new duplicate free array.\n     * @example\n     *\n     * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n     * // => [2.1, 1.2]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n     * // => [{ 'x': 1 }, { 'x': 2 }]\n     */\n    function uniqBy(array, iteratee) {\n      return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n    }\n\n    /**\n     * This method is like `_.uniq` except that it accepts `comparator` which\n     * is invoked to compare elements of `array`. The order of result values is\n     * determined by the order they occur in the array.The comparator is invoked\n     * with two arguments: (arrVal, othVal).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new duplicate free array.\n     * @example\n     *\n     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n     *\n     * _.uniqWith(objects, _.isEqual);\n     * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n     */\n    function uniqWith(array, comparator) {\n      comparator = typeof comparator == 'function' ? comparator : undefined;\n      return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n    }\n\n    /**\n     * This method is like `_.zip` except that it accepts an array of grouped\n     * elements and creates an array regrouping the elements to their pre-zip\n     * configuration.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.2.0\n     * @category Array\n     * @param {Array} array The array of grouped elements to process.\n     * @returns {Array} Returns the new array of regrouped elements.\n     * @example\n     *\n     * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n     * // => [['a', 1, true], ['b', 2, false]]\n     *\n     * _.unzip(zipped);\n     * // => [['a', 'b'], [1, 2], [true, false]]\n     */\n    function unzip(array) {\n      if (!(array && array.length)) {\n        return [];\n      }\n      var length = 0;\n      array = arrayFilter(array, function(group) {\n        if (isArrayLikeObject(group)) {\n          length = nativeMax(group.length, length);\n          return true;\n        }\n      });\n      return baseTimes(length, function(index) {\n        return arrayMap(array, baseProperty(index));\n      });\n    }\n\n    /**\n     * This method is like `_.unzip` except that it accepts `iteratee` to specify\n     * how regrouped values should be combined. The iteratee is invoked with the\n     * elements of each group: (...group).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.8.0\n     * @category Array\n     * @param {Array} array The array of grouped elements to process.\n     * @param {Function} [iteratee=_.identity] The function to combine\n     *  regrouped values.\n     * @returns {Array} Returns the new array of regrouped elements.\n     * @example\n     *\n     * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n     * // => [[1, 10, 100], [2, 20, 200]]\n     *\n     * _.unzipWith(zipped, _.add);\n     * // => [3, 30, 300]\n     */\n    function unzipWith(array, iteratee) {\n      if (!(array && array.length)) {\n        return [];\n      }\n      var result = unzip(array);\n      if (iteratee == null) {\n        return result;\n      }\n      return arrayMap(result, function(group) {\n        return apply(iteratee, undefined, group);\n      });\n    }\n\n    /**\n     * Creates an array excluding all given values using\n     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons.\n     *\n     * **Note:** Unlike `_.pull`, this method returns a new array.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {...*} [values] The values to exclude.\n     * @returns {Array} Returns the new array of filtered values.\n     * @see _.difference, _.xor\n     * @example\n     *\n     * _.without([2, 1, 2, 3], 1, 2);\n     * // => [3]\n     */\n    var without = baseRest(function(array, values) {\n      return isArrayLikeObject(array)\n        ? baseDifference(array, values)\n        : [];\n    });\n\n    /**\n     * Creates an array of unique values that is the\n     * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n     * of the given arrays. The order of result values is determined by the order\n     * they occur in the arrays.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.4.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @returns {Array} Returns the new array of filtered values.\n     * @see _.difference, _.without\n     * @example\n     *\n     * _.xor([2, 1], [2, 3]);\n     * // => [1, 3]\n     */\n    var xor = baseRest(function(arrays) {\n      return baseXor(arrayFilter(arrays, isArrayLikeObject));\n    });\n\n    /**\n     * This method is like `_.xor` except that it accepts `iteratee` which is\n     * invoked for each element of each `arrays` to generate the criterion by\n     * which by which they're compared. The order of result values is determined\n     * by the order they occur in the arrays. The iteratee is invoked with one\n     * argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns the new array of filtered values.\n     * @example\n     *\n     * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n     * // => [1.2, 3.4]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n     * // => [{ 'x': 2 }]\n     */\n    var xorBy = baseRest(function(arrays) {\n      var iteratee = last(arrays);\n      if (isArrayLikeObject(iteratee)) {\n        iteratee = undefined;\n      }\n      return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n    });\n\n    /**\n     * This method is like `_.xor` except that it accepts `comparator` which is\n     * invoked to compare elements of `arrays`. The order of result values is\n     * determined by the order they occur in the arrays. The comparator is invoked\n     * with two arguments: (arrVal, othVal).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of filtered values.\n     * @example\n     *\n     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n     * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n     *\n     * _.xorWith(objects, others, _.isEqual);\n     * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n     */\n    var xorWith = baseRest(function(arrays) {\n      var comparator = last(arrays);\n      comparator = typeof comparator == 'function' ? comparator : undefined;\n      return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n    });\n\n    /**\n     * Creates an array of grouped elements, the first of which contains the\n     * first elements of the given arrays, the second of which contains the\n     * second elements of the given arrays, and so on.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to process.\n     * @returns {Array} Returns the new array of grouped elements.\n     * @example\n     *\n     * _.zip(['a', 'b'], [1, 2], [true, false]);\n     * // => [['a', 1, true], ['b', 2, false]]\n     */\n    var zip = baseRest(unzip);\n\n    /**\n     * This method is like `_.fromPairs` except that it accepts two arrays,\n     * one of property identifiers and one of corresponding values.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.4.0\n     * @category Array\n     * @param {Array} [props=[]] The property identifiers.\n     * @param {Array} [values=[]] The property values.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * _.zipObject(['a', 'b'], [1, 2]);\n     * // => { 'a': 1, 'b': 2 }\n     */\n    function zipObject(props, values) {\n      return baseZipObject(props || [], values || [], assignValue);\n    }\n\n    /**\n     * This method is like `_.zipObject` except that it supports property paths.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.1.0\n     * @category Array\n     * @param {Array} [props=[]] The property identifiers.\n     * @param {Array} [values=[]] The property values.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n     * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n     */\n    function zipObjectDeep(props, values) {\n      return baseZipObject(props || [], values || [], baseSet);\n    }\n\n    /**\n     * This method is like `_.zip` except that it accepts `iteratee` to specify\n     * how grouped values should be combined. The iteratee is invoked with the\n     * elements of each group: (...group).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.8.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to process.\n     * @param {Function} [iteratee=_.identity] The function to combine\n     *  grouped values.\n     * @returns {Array} Returns the new array of grouped elements.\n     * @example\n     *\n     * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n     *   return a + b + c;\n     * });\n     * // => [111, 222]\n     */\n    var zipWith = baseRest(function(arrays) {\n      var length = arrays.length,\n          iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n      iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n      return unzipWith(arrays, iteratee);\n    });\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n     * chain sequences enabled. The result of such sequences must be unwrapped\n     * with `_#value`.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.3.0\n     * @category Seq\n     * @param {*} value The value to wrap.\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'age': 36 },\n     *   { 'user': 'fred',    'age': 40 },\n     *   { 'user': 'pebbles', 'age': 1 }\n     * ];\n     *\n     * var youngest = _\n     *   .chain(users)\n     *   .sortBy('age')\n     *   .map(function(o) {\n     *     return o.user + ' is ' + o.age;\n     *   })\n     *   .head()\n     *   .value();\n     * // => 'pebbles is 1'\n     */\n    function chain(value) {\n      var result = lodash(value);\n      result.__chain__ = true;\n      return result;\n    }\n\n    /**\n     * This method invokes `interceptor` and returns `value`. The interceptor\n     * is invoked with one argument; (value). The purpose of this method is to\n     * \"tap into\" a method chain sequence in order to modify intermediate results.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Seq\n     * @param {*} value The value to provide to `interceptor`.\n     * @param {Function} interceptor The function to invoke.\n     * @returns {*} Returns `value`.\n     * @example\n     *\n     * _([1, 2, 3])\n     *  .tap(function(array) {\n     *    // Mutate input array.\n     *    array.pop();\n     *  })\n     *  .reverse()\n     *  .value();\n     * // => [2, 1]\n     */\n    function tap(value, interceptor) {\n      interceptor(value);\n      return value;\n    }\n\n    /**\n     * This method is like `_.tap` except that it returns the result of `interceptor`.\n     * The purpose of this method is to \"pass thru\" values replacing intermediate\n     * results in a method chain sequence.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Seq\n     * @param {*} value The value to provide to `interceptor`.\n     * @param {Function} interceptor The function to invoke.\n     * @returns {*} Returns the result of `interceptor`.\n     * @example\n     *\n     * _('  abc  ')\n     *  .chain()\n     *  .trim()\n     *  .thru(function(value) {\n     *    return [value];\n     *  })\n     *  .value();\n     * // => ['abc']\n     */\n    function thru(value, interceptor) {\n      return interceptor(value);\n    }\n\n    /**\n     * This method is the wrapper version of `_.at`.\n     *\n     * @name at\n     * @memberOf _\n     * @since 1.0.0\n     * @category Seq\n     * @param {...(string|string[])} [paths] The property paths to pick.\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n     *\n     * _(object).at(['a[0].b.c', 'a[1]']).value();\n     * // => [3, 4]\n     */\n    var wrapperAt = flatRest(function(paths) {\n      var length = paths.length,\n          start = length ? paths[0] : 0,\n          value = this.__wrapped__,\n          interceptor = function(object) { return baseAt(object, paths); };\n\n      if (length > 1 || this.__actions__.length ||\n          !(value instanceof LazyWrapper) || !isIndex(start)) {\n        return this.thru(interceptor);\n      }\n      value = value.slice(start, +start + (length ? 1 : 0));\n      value.__actions__.push({\n        'func': thru,\n        'args': [interceptor],\n        'thisArg': undefined\n      });\n      return new LodashWrapper(value, this.__chain__).thru(function(array) {\n        if (length && !array.length) {\n          array.push(undefined);\n        }\n        return array;\n      });\n    });\n\n    /**\n     * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n     *\n     * @name chain\n     * @memberOf _\n     * @since 0.1.0\n     * @category Seq\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney', 'age': 36 },\n     *   { 'user': 'fred',   'age': 40 }\n     * ];\n     *\n     * // A sequence without explicit chaining.\n     * _(users).head();\n     * // => { 'user': 'barney', 'age': 36 }\n     *\n     * // A sequence with explicit chaining.\n     * _(users)\n     *   .chain()\n     *   .head()\n     *   .pick('user')\n     *   .value();\n     * // => { 'user': 'barney' }\n     */\n    function wrapperChain() {\n      return chain(this);\n    }\n\n    /**\n     * Executes the chain sequence and returns the wrapped result.\n     *\n     * @name commit\n     * @memberOf _\n     * @since 3.2.0\n     * @category Seq\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * var array = [1, 2];\n     * var wrapped = _(array).push(3);\n     *\n     * console.log(array);\n     * // => [1, 2]\n     *\n     * wrapped = wrapped.commit();\n     * console.log(array);\n     * // => [1, 2, 3]\n     *\n     * wrapped.last();\n     * // => 3\n     *\n     * console.log(array);\n     * // => [1, 2, 3]\n     */\n    function wrapperCommit() {\n      return new LodashWrapper(this.value(), this.__chain__);\n    }\n\n    /**\n     * Gets the next value on a wrapped object following the\n     * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n     *\n     * @name next\n     * @memberOf _\n     * @since 4.0.0\n     * @category Seq\n     * @returns {Object} Returns the next iterator value.\n     * @example\n     *\n     * var wrapped = _([1, 2]);\n     *\n     * wrapped.next();\n     * // => { 'done': false, 'value': 1 }\n     *\n     * wrapped.next();\n     * // => { 'done': false, 'value': 2 }\n     *\n     * wrapped.next();\n     * // => { 'done': true, 'value': undefined }\n     */\n    function wrapperNext() {\n      if (this.__values__ === undefined) {\n        this.__values__ = toArray(this.value());\n      }\n      var done = this.__index__ >= this.__values__.length,\n          value = done ? undefined : this.__values__[this.__index__++];\n\n      return { 'done': done, 'value': value };\n    }\n\n    /**\n     * Enables the wrapper to be iterable.\n     *\n     * @name Symbol.iterator\n     * @memberOf _\n     * @since 4.0.0\n     * @category Seq\n     * @returns {Object} Returns the wrapper object.\n     * @example\n     *\n     * var wrapped = _([1, 2]);\n     *\n     * wrapped[Symbol.iterator]() === wrapped;\n     * // => true\n     *\n     * Array.from(wrapped);\n     * // => [1, 2]\n     */\n    function wrapperToIterator() {\n      return this;\n    }\n\n    /**\n     * Creates a clone of the chain sequence planting `value` as the wrapped value.\n     *\n     * @name plant\n     * @memberOf _\n     * @since 3.2.0\n     * @category Seq\n     * @param {*} value The value to plant.\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * var wrapped = _([1, 2]).map(square);\n     * var other = wrapped.plant([3, 4]);\n     *\n     * other.value();\n     * // => [9, 16]\n     *\n     * wrapped.value();\n     * // => [1, 4]\n     */\n    function wrapperPlant(value) {\n      var result,\n          parent = this;\n\n      while (parent instanceof baseLodash) {\n        var clone = wrapperClone(parent);\n        clone.__index__ = 0;\n        clone.__values__ = undefined;\n        if (result) {\n          previous.__wrapped__ = clone;\n        } else {\n          result = clone;\n        }\n        var previous = clone;\n        parent = parent.__wrapped__;\n      }\n      previous.__wrapped__ = value;\n      return result;\n    }\n\n    /**\n     * This method is the wrapper version of `_.reverse`.\n     *\n     * **Note:** This method mutates the wrapped array.\n     *\n     * @name reverse\n     * @memberOf _\n     * @since 0.1.0\n     * @category Seq\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * var array = [1, 2, 3];\n     *\n     * _(array).reverse().value()\n     * // => [3, 2, 1]\n     *\n     * console.log(array);\n     * // => [3, 2, 1]\n     */\n    function wrapperReverse() {\n      var value = this.__wrapped__;\n      if (value instanceof LazyWrapper) {\n        var wrapped = value;\n        if (this.__actions__.length) {\n          wrapped = new LazyWrapper(this);\n        }\n        wrapped = wrapped.reverse();\n        wrapped.__actions__.push({\n          'func': thru,\n          'args': [reverse],\n          'thisArg': undefined\n        });\n        return new LodashWrapper(wrapped, this.__chain__);\n      }\n      return this.thru(reverse);\n    }\n\n    /**\n     * Executes the chain sequence to resolve the unwrapped value.\n     *\n     * @name value\n     * @memberOf _\n     * @since 0.1.0\n     * @alias toJSON, valueOf\n     * @category Seq\n     * @returns {*} Returns the resolved unwrapped value.\n     * @example\n     *\n     * _([1, 2, 3]).value();\n     * // => [1, 2, 3]\n     */\n    function wrapperValue() {\n      return baseWrapperValue(this.__wrapped__, this.__actions__);\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates an object composed of keys generated from the results of running\n     * each element of `collection` thru `iteratee`. The corresponding value of\n     * each key is the number of times the key was returned by `iteratee`. The\n     * iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.5.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n     * @returns {Object} Returns the composed aggregate object.\n     * @example\n     *\n     * _.countBy([6.1, 4.2, 6.3], Math.floor);\n     * // => { '4': 1, '6': 2 }\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.countBy(['one', 'two', 'three'], 'length');\n     * // => { '3': 2, '5': 1 }\n     */\n    var countBy = createAggregator(function(result, value, key) {\n      if (hasOwnProperty.call(result, key)) {\n        ++result[key];\n      } else {\n        baseAssignValue(result, key, 1);\n      }\n    });\n\n    /**\n     * Checks if `predicate` returns truthy for **all** elements of `collection`.\n     * Iteration is stopped once `predicate` returns falsey. The predicate is\n     * invoked with three arguments: (value, index|key, collection).\n     *\n     * **Note:** This method returns `true` for\n     * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n     * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n     * elements of empty collections.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {boolean} Returns `true` if all elements pass the predicate check,\n     *  else `false`.\n     * @example\n     *\n     * _.every([true, 1, null, 'yes'], Boolean);\n     * // => false\n     *\n     * var users = [\n     *   { 'user': 'barney', 'age': 36, 'active': false },\n     *   { 'user': 'fred',   'age': 40, 'active': false }\n     * ];\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.every(users, { 'user': 'barney', 'active': false });\n     * // => false\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.every(users, ['active', false]);\n     * // => true\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.every(users, 'active');\n     * // => false\n     */\n    function every(collection, predicate, guard) {\n      var func = isArray(collection) ? arrayEvery : baseEvery;\n      if (guard && isIterateeCall(collection, predicate, guard)) {\n        predicate = undefined;\n      }\n      return func(collection, getIteratee(predicate, 3));\n    }\n\n    /**\n     * Iterates over elements of `collection`, returning an array of all elements\n     * `predicate` returns truthy for. The predicate is invoked with three\n     * arguments: (value, index|key, collection).\n     *\n     * **Note:** Unlike `_.remove`, this method returns a new array.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the new filtered array.\n     * @see _.reject\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney', 'age': 36, 'active': true },\n     *   { 'user': 'fred',   'age': 40, 'active': false }\n     * ];\n     *\n     * _.filter(users, function(o) { return !o.active; });\n     * // => objects for ['fred']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.filter(users, { 'age': 36, 'active': true });\n     * // => objects for ['barney']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.filter(users, ['active', false]);\n     * // => objects for ['fred']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.filter(users, 'active');\n     * // => objects for ['barney']\n     *\n     * // Combining several predicates using `_.overEvery` or `_.overSome`.\n     * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n     * // => objects for ['fred', 'barney']\n     */\n    function filter(collection, predicate) {\n      var func = isArray(collection) ? arrayFilter : baseFilter;\n      return func(collection, getIteratee(predicate, 3));\n    }\n\n    /**\n     * Iterates over elements of `collection`, returning the first element\n     * `predicate` returns truthy for. The predicate is invoked with three\n     * arguments: (value, index|key, collection).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to inspect.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @param {number} [fromIndex=0] The index to search from.\n     * @returns {*} Returns the matched element, else `undefined`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'age': 36, 'active': true },\n     *   { 'user': 'fred',    'age': 40, 'active': false },\n     *   { 'user': 'pebbles', 'age': 1,  'active': true }\n     * ];\n     *\n     * _.find(users, function(o) { return o.age < 40; });\n     * // => object for 'barney'\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.find(users, { 'age': 1, 'active': true });\n     * // => object for 'pebbles'\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.find(users, ['active', false]);\n     * // => object for 'fred'\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.find(users, 'active');\n     * // => object for 'barney'\n     */\n    var find = createFind(findIndex);\n\n    /**\n     * This method is like `_.find` except that it iterates over elements of\n     * `collection` from right to left.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to inspect.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @param {number} [fromIndex=collection.length-1] The index to search from.\n     * @returns {*} Returns the matched element, else `undefined`.\n     * @example\n     *\n     * _.findLast([1, 2, 3, 4], function(n) {\n     *   return n % 2 == 1;\n     * });\n     * // => 3\n     */\n    var findLast = createFind(findLastIndex);\n\n    /**\n     * Creates a flattened array of values by running each element in `collection`\n     * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n     * with three arguments: (value, index|key, collection).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the new flattened array.\n     * @example\n     *\n     * function duplicate(n) {\n     *   return [n, n];\n     * }\n     *\n     * _.flatMap([1, 2], duplicate);\n     * // => [1, 1, 2, 2]\n     */\n    function flatMap(collection, iteratee) {\n      return baseFlatten(map(collection, iteratee), 1);\n    }\n\n    /**\n     * This method is like `_.flatMap` except that it recursively flattens the\n     * mapped results.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.7.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the new flattened array.\n     * @example\n     *\n     * function duplicate(n) {\n     *   return [[[n, n]]];\n     * }\n     *\n     * _.flatMapDeep([1, 2], duplicate);\n     * // => [1, 1, 2, 2]\n     */\n    function flatMapDeep(collection, iteratee) {\n      return baseFlatten(map(collection, iteratee), INFINITY);\n    }\n\n    /**\n     * This method is like `_.flatMap` except that it recursively flattens the\n     * mapped results up to `depth` times.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.7.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @param {number} [depth=1] The maximum recursion depth.\n     * @returns {Array} Returns the new flattened array.\n     * @example\n     *\n     * function duplicate(n) {\n     *   return [[[n, n]]];\n     * }\n     *\n     * _.flatMapDepth([1, 2], duplicate, 2);\n     * // => [[1, 1], [2, 2]]\n     */\n    function flatMapDepth(collection, iteratee, depth) {\n      depth = depth === undefined ? 1 : toInteger(depth);\n      return baseFlatten(map(collection, iteratee), depth);\n    }\n\n    /**\n     * Iterates over elements of `collection` and invokes `iteratee` for each element.\n     * The iteratee is invoked with three arguments: (value, index|key, collection).\n     * Iteratee functions may exit iteration early by explicitly returning `false`.\n     *\n     * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n     * property are iterated like arrays. To avoid this behavior use `_.forIn`\n     * or `_.forOwn` for object iteration.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @alias each\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Array|Object} Returns `collection`.\n     * @see _.forEachRight\n     * @example\n     *\n     * _.forEach([1, 2], function(value) {\n     *   console.log(value);\n     * });\n     * // => Logs `1` then `2`.\n     *\n     * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n     *   console.log(key);\n     * });\n     * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n     */\n    function forEach(collection, iteratee) {\n      var func = isArray(collection) ? arrayEach : baseEach;\n      return func(collection, getIteratee(iteratee, 3));\n    }\n\n    /**\n     * This method is like `_.forEach` except that it iterates over elements of\n     * `collection` from right to left.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @alias eachRight\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Array|Object} Returns `collection`.\n     * @see _.forEach\n     * @example\n     *\n     * _.forEachRight([1, 2], function(value) {\n     *   console.log(value);\n     * });\n     * // => Logs `2` then `1`.\n     */\n    function forEachRight(collection, iteratee) {\n      var func = isArray(collection) ? arrayEachRight : baseEachRight;\n      return func(collection, getIteratee(iteratee, 3));\n    }\n\n    /**\n     * Creates an object composed of keys generated from the results of running\n     * each element of `collection` thru `iteratee`. The order of grouped values\n     * is determined by the order they occur in `collection`. The corresponding\n     * value of each key is an array of elements responsible for generating the\n     * key. The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n     * @returns {Object} Returns the composed aggregate object.\n     * @example\n     *\n     * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n     * // => { '4': [4.2], '6': [6.1, 6.3] }\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.groupBy(['one', 'two', 'three'], 'length');\n     * // => { '3': ['one', 'two'], '5': ['three'] }\n     */\n    var groupBy = createAggregator(function(result, value, key) {\n      if (hasOwnProperty.call(result, key)) {\n        result[key].push(value);\n      } else {\n        baseAssignValue(result, key, [value]);\n      }\n    });\n\n    /**\n     * Checks if `value` is in `collection`. If `collection` is a string, it's\n     * checked for a substring of `value`, otherwise\n     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * is used for equality comparisons. If `fromIndex` is negative, it's used as\n     * the offset from the end of `collection`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object|string} collection The collection to inspect.\n     * @param {*} value The value to search for.\n     * @param {number} [fromIndex=0] The index to search from.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n     * @returns {boolean} Returns `true` if `value` is found, else `false`.\n     * @example\n     *\n     * _.includes([1, 2, 3], 1);\n     * // => true\n     *\n     * _.includes([1, 2, 3], 1, 2);\n     * // => false\n     *\n     * _.includes({ 'a': 1, 'b': 2 }, 1);\n     * // => true\n     *\n     * _.includes('abcd', 'bc');\n     * // => true\n     */\n    function includes(collection, value, fromIndex, guard) {\n      collection = isArrayLike(collection) ? collection : values(collection);\n      fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n      var length = collection.length;\n      if (fromIndex < 0) {\n        fromIndex = nativeMax(length + fromIndex, 0);\n      }\n      return isString(collection)\n        ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n        : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n    }\n\n    /**\n     * Invokes the method at `path` of each element in `collection`, returning\n     * an array of the results of each invoked method. Any additional arguments\n     * are provided to each invoked method. If `path` is a function, it's invoked\n     * for, and `this` bound to, each element in `collection`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Array|Function|string} path The path of the method to invoke or\n     *  the function invoked per iteration.\n     * @param {...*} [args] The arguments to invoke each method with.\n     * @returns {Array} Returns the array of results.\n     * @example\n     *\n     * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n     * // => [[1, 5, 7], [1, 2, 3]]\n     *\n     * _.invokeMap([123, 456], String.prototype.split, '');\n     * // => [['1', '2', '3'], ['4', '5', '6']]\n     */\n    var invokeMap = baseRest(function(collection, path, args) {\n      var index = -1,\n          isFunc = typeof path == 'function',\n          result = isArrayLike(collection) ? Array(collection.length) : [];\n\n      baseEach(collection, function(value) {\n        result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n      });\n      return result;\n    });\n\n    /**\n     * Creates an object composed of keys generated from the results of running\n     * each element of `collection` thru `iteratee`. The corresponding value of\n     * each key is the last element responsible for generating the key. The\n     * iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n     * @returns {Object} Returns the composed aggregate object.\n     * @example\n     *\n     * var array = [\n     *   { 'dir': 'left', 'code': 97 },\n     *   { 'dir': 'right', 'code': 100 }\n     * ];\n     *\n     * _.keyBy(array, function(o) {\n     *   return String.fromCharCode(o.code);\n     * });\n     * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n     *\n     * _.keyBy(array, 'dir');\n     * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n     */\n    var keyBy = createAggregator(function(result, value, key) {\n      baseAssignValue(result, key, value);\n    });\n\n    /**\n     * Creates an array of values by running each element in `collection` thru\n     * `iteratee`. The iteratee is invoked with three arguments:\n     * (value, index|key, collection).\n     *\n     * Many lodash methods are guarded to work as iteratees for methods like\n     * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n     *\n     * The guarded methods are:\n     * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n     * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n     * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n     * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the new mapped array.\n     * @example\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * _.map([4, 8], square);\n     * // => [16, 64]\n     *\n     * _.map({ 'a': 4, 'b': 8 }, square);\n     * // => [16, 64] (iteration order is not guaranteed)\n     *\n     * var users = [\n     *   { 'user': 'barney' },\n     *   { 'user': 'fred' }\n     * ];\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.map(users, 'user');\n     * // => ['barney', 'fred']\n     */\n    function map(collection, iteratee) {\n      var func = isArray(collection) ? arrayMap : baseMap;\n      return func(collection, getIteratee(iteratee, 3));\n    }\n\n    /**\n     * This method is like `_.sortBy` except that it allows specifying the sort\n     * orders of the iteratees to sort by. If `orders` is unspecified, all values\n     * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n     * descending or \"asc\" for ascending sort order of corresponding values.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n     *  The iteratees to sort by.\n     * @param {string[]} [orders] The sort orders of `iteratees`.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n     * @returns {Array} Returns the new sorted array.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'fred',   'age': 48 },\n     *   { 'user': 'barney', 'age': 34 },\n     *   { 'user': 'fred',   'age': 40 },\n     *   { 'user': 'barney', 'age': 36 }\n     * ];\n     *\n     * // Sort by `user` in ascending order and by `age` in descending order.\n     * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n     * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n     */\n    function orderBy(collection, iteratees, orders, guard) {\n      if (collection == null) {\n        return [];\n      }\n      if (!isArray(iteratees)) {\n        iteratees = iteratees == null ? [] : [iteratees];\n      }\n      orders = guard ? undefined : orders;\n      if (!isArray(orders)) {\n        orders = orders == null ? [] : [orders];\n      }\n      return baseOrderBy(collection, iteratees, orders);\n    }\n\n    /**\n     * Creates an array of elements split into two groups, the first of which\n     * contains elements `predicate` returns truthy for, the second of which\n     * contains elements `predicate` returns falsey for. The predicate is\n     * invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the array of grouped elements.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'age': 36, 'active': false },\n     *   { 'user': 'fred',    'age': 40, 'active': true },\n     *   { 'user': 'pebbles', 'age': 1,  'active': false }\n     * ];\n     *\n     * _.partition(users, function(o) { return o.active; });\n     * // => objects for [['fred'], ['barney', 'pebbles']]\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.partition(users, { 'age': 1, 'active': false });\n     * // => objects for [['pebbles'], ['barney', 'fred']]\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.partition(users, ['active', false]);\n     * // => objects for [['barney', 'pebbles'], ['fred']]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.partition(users, 'active');\n     * // => objects for [['fred'], ['barney', 'pebbles']]\n     */\n    var partition = createAggregator(function(result, value, key) {\n      result[key ? 0 : 1].push(value);\n    }, function() { return [[], []]; });\n\n    /**\n     * Reduces `collection` to a value which is the accumulated result of running\n     * each element in `collection` thru `iteratee`, where each successive\n     * invocation is supplied the return value of the previous. If `accumulator`\n     * is not given, the first element of `collection` is used as the initial\n     * value. The iteratee is invoked with four arguments:\n     * (accumulator, value, index|key, collection).\n     *\n     * Many lodash methods are guarded to work as iteratees for methods like\n     * `_.reduce`, `_.reduceRight`, and `_.transform`.\n     *\n     * The guarded methods are:\n     * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n     * and `sortBy`\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @param {*} [accumulator] The initial value.\n     * @returns {*} Returns the accumulated value.\n     * @see _.reduceRight\n     * @example\n     *\n     * _.reduce([1, 2], function(sum, n) {\n     *   return sum + n;\n     * }, 0);\n     * // => 3\n     *\n     * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n     *   (result[value] || (result[value] = [])).push(key);\n     *   return result;\n     * }, {});\n     * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n     */\n    function reduce(collection, iteratee, accumulator) {\n      var func = isArray(collection) ? arrayReduce : baseReduce,\n          initAccum = arguments.length < 3;\n\n      return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n    }\n\n    /**\n     * This method is like `_.reduce` except that it iterates over elements of\n     * `collection` from right to left.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @param {*} [accumulator] The initial value.\n     * @returns {*} Returns the accumulated value.\n     * @see _.reduce\n     * @example\n     *\n     * var array = [[0, 1], [2, 3], [4, 5]];\n     *\n     * _.reduceRight(array, function(flattened, other) {\n     *   return flattened.concat(other);\n     * }, []);\n     * // => [4, 5, 2, 3, 0, 1]\n     */\n    function reduceRight(collection, iteratee, accumulator) {\n      var func = isArray(collection) ? arrayReduceRight : baseReduce,\n          initAccum = arguments.length < 3;\n\n      return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n    }\n\n    /**\n     * The opposite of `_.filter`; this method returns the elements of `collection`\n     * that `predicate` does **not** return truthy for.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the new filtered array.\n     * @see _.filter\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney', 'age': 36, 'active': false },\n     *   { 'user': 'fred',   'age': 40, 'active': true }\n     * ];\n     *\n     * _.reject(users, function(o) { return !o.active; });\n     * // => objects for ['fred']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.reject(users, { 'age': 40, 'active': true });\n     * // => objects for ['barney']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.reject(users, ['active', false]);\n     * // => objects for ['fred']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.reject(users, 'active');\n     * // => objects for ['barney']\n     */\n    function reject(collection, predicate) {\n      var func = isArray(collection) ? arrayFilter : baseFilter;\n      return func(collection, negate(getIteratee(predicate, 3)));\n    }\n\n    /**\n     * Gets a random element from `collection`.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to sample.\n     * @returns {*} Returns the random element.\n     * @example\n     *\n     * _.sample([1, 2, 3, 4]);\n     * // => 2\n     */\n    function sample(collection) {\n      var func = isArray(collection) ? arraySample : baseSample;\n      return func(collection);\n    }\n\n    /**\n     * Gets `n` random elements at unique keys from `collection` up to the\n     * size of `collection`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to sample.\n     * @param {number} [n=1] The number of elements to sample.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the random elements.\n     * @example\n     *\n     * _.sampleSize([1, 2, 3], 2);\n     * // => [3, 1]\n     *\n     * _.sampleSize([1, 2, 3], 4);\n     * // => [2, 3, 1]\n     */\n    function sampleSize(collection, n, guard) {\n      if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n        n = 1;\n      } else {\n        n = toInteger(n);\n      }\n      var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n      return func(collection, n);\n    }\n\n    /**\n     * Creates an array of shuffled values, using a version of the\n     * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to shuffle.\n     * @returns {Array} Returns the new shuffled array.\n     * @example\n     *\n     * _.shuffle([1, 2, 3, 4]);\n     * // => [4, 1, 3, 2]\n     */\n    function shuffle(collection) {\n      var func = isArray(collection) ? arrayShuffle : baseShuffle;\n      return func(collection);\n    }\n\n    /**\n     * Gets the size of `collection` by returning its length for array-like\n     * values or the number of own enumerable string keyed properties for objects.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object|string} collection The collection to inspect.\n     * @returns {number} Returns the collection size.\n     * @example\n     *\n     * _.size([1, 2, 3]);\n     * // => 3\n     *\n     * _.size({ 'a': 1, 'b': 2 });\n     * // => 2\n     *\n     * _.size('pebbles');\n     * // => 7\n     */\n    function size(collection) {\n      if (collection == null) {\n        return 0;\n      }\n      if (isArrayLike(collection)) {\n        return isString(collection) ? stringSize(collection) : collection.length;\n      }\n      var tag = getTag(collection);\n      if (tag == mapTag || tag == setTag) {\n        return collection.size;\n      }\n      return baseKeys(collection).length;\n    }\n\n    /**\n     * Checks if `predicate` returns truthy for **any** element of `collection`.\n     * Iteration is stopped once `predicate` returns truthy. The predicate is\n     * invoked with three arguments: (value, index|key, collection).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {boolean} Returns `true` if any element passes the predicate check,\n     *  else `false`.\n     * @example\n     *\n     * _.some([null, 0, 'yes', false], Boolean);\n     * // => true\n     *\n     * var users = [\n     *   { 'user': 'barney', 'active': true },\n     *   { 'user': 'fred',   'active': false }\n     * ];\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.some(users, { 'user': 'barney', 'active': false });\n     * // => false\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.some(users, ['active', false]);\n     * // => true\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.some(users, 'active');\n     * // => true\n     */\n    function some(collection, predicate, guard) {\n      var func = isArray(collection) ? arraySome : baseSome;\n      if (guard && isIterateeCall(collection, predicate, guard)) {\n        predicate = undefined;\n      }\n      return func(collection, getIteratee(predicate, 3));\n    }\n\n    /**\n     * Creates an array of elements, sorted in ascending order by the results of\n     * running each element in a collection thru each iteratee. This method\n     * performs a stable sort, that is, it preserves the original sort order of\n     * equal elements. The iteratees are invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {...(Function|Function[])} [iteratees=[_.identity]]\n     *  The iteratees to sort by.\n     * @returns {Array} Returns the new sorted array.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'fred',   'age': 48 },\n     *   { 'user': 'barney', 'age': 36 },\n     *   { 'user': 'fred',   'age': 30 },\n     *   { 'user': 'barney', 'age': 34 }\n     * ];\n     *\n     * _.sortBy(users, [function(o) { return o.user; }]);\n     * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n     *\n     * _.sortBy(users, ['user', 'age']);\n     * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n     */\n    var sortBy = baseRest(function(collection, iteratees) {\n      if (collection == null) {\n        return [];\n      }\n      var length = iteratees.length;\n      if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n        iteratees = [];\n      } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n        iteratees = [iteratees[0]];\n      }\n      return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n    });\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Gets the timestamp of the number of milliseconds that have elapsed since\n     * the Unix epoch (1 January 1970 00:00:00 UTC).\n     *\n     * @static\n     * @memberOf _\n     * @since 2.4.0\n     * @category Date\n     * @returns {number} Returns the timestamp.\n     * @example\n     *\n     * _.defer(function(stamp) {\n     *   console.log(_.now() - stamp);\n     * }, _.now());\n     * // => Logs the number of milliseconds it took for the deferred invocation.\n     */\n    var now = ctxNow || function() {\n      return root.Date.now();\n    };\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * The opposite of `_.before`; this method creates a function that invokes\n     * `func` once it's called `n` or more times.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {number} n The number of calls before `func` is invoked.\n     * @param {Function} func The function to restrict.\n     * @returns {Function} Returns the new restricted function.\n     * @example\n     *\n     * var saves = ['profile', 'settings'];\n     *\n     * var done = _.after(saves.length, function() {\n     *   console.log('done saving!');\n     * });\n     *\n     * _.forEach(saves, function(type) {\n     *   asyncSave({ 'type': type, 'complete': done });\n     * });\n     * // => Logs 'done saving!' after the two async saves have completed.\n     */\n    function after(n, func) {\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      n = toInteger(n);\n      return function() {\n        if (--n < 1) {\n          return func.apply(this, arguments);\n        }\n      };\n    }\n\n    /**\n     * Creates a function that invokes `func`, with up to `n` arguments,\n     * ignoring any additional arguments.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Function\n     * @param {Function} func The function to cap arguments for.\n     * @param {number} [n=func.length] The arity cap.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Function} Returns the new capped function.\n     * @example\n     *\n     * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n     * // => [6, 8, 10]\n     */\n    function ary(func, n, guard) {\n      n = guard ? undefined : n;\n      n = (func && n == null) ? func.length : n;\n      return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n    }\n\n    /**\n     * Creates a function that invokes `func`, with the `this` binding and arguments\n     * of the created function, while it's called less than `n` times. Subsequent\n     * calls to the created function return the result of the last `func` invocation.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Function\n     * @param {number} n The number of calls at which `func` is no longer invoked.\n     * @param {Function} func The function to restrict.\n     * @returns {Function} Returns the new restricted function.\n     * @example\n     *\n     * jQuery(element).on('click', _.before(5, addContactToList));\n     * // => Allows adding up to 4 contacts to the list.\n     */\n    function before(n, func) {\n      var result;\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      n = toInteger(n);\n      return function() {\n        if (--n > 0) {\n          result = func.apply(this, arguments);\n        }\n        if (n <= 1) {\n          func = undefined;\n        }\n        return result;\n      };\n    }\n\n    /**\n     * Creates a function that invokes `func` with the `this` binding of `thisArg`\n     * and `partials` prepended to the arguments it receives.\n     *\n     * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n     * may be used as a placeholder for partially applied arguments.\n     *\n     * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n     * property of bound functions.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to bind.\n     * @param {*} thisArg The `this` binding of `func`.\n     * @param {...*} [partials] The arguments to be partially applied.\n     * @returns {Function} Returns the new bound function.\n     * @example\n     *\n     * function greet(greeting, punctuation) {\n     *   return greeting + ' ' + this.user + punctuation;\n     * }\n     *\n     * var object = { 'user': 'fred' };\n     *\n     * var bound = _.bind(greet, object, 'hi');\n     * bound('!');\n     * // => 'hi fred!'\n     *\n     * // Bound with placeholders.\n     * var bound = _.bind(greet, object, _, '!');\n     * bound('hi');\n     * // => 'hi fred!'\n     */\n    var bind = baseRest(function(func, thisArg, partials) {\n      var bitmask = WRAP_BIND_FLAG;\n      if (partials.length) {\n        var holders = replaceHolders(partials, getHolder(bind));\n        bitmask |= WRAP_PARTIAL_FLAG;\n      }\n      return createWrap(func, bitmask, thisArg, partials, holders);\n    });\n\n    /**\n     * Creates a function that invokes the method at `object[key]` with `partials`\n     * prepended to the arguments it receives.\n     *\n     * This method differs from `_.bind` by allowing bound functions to reference\n     * methods that may be redefined or don't yet exist. See\n     * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n     * for more details.\n     *\n     * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n     * builds, may be used as a placeholder for partially applied arguments.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.10.0\n     * @category Function\n     * @param {Object} object The object to invoke the method on.\n     * @param {string} key The key of the method.\n     * @param {...*} [partials] The arguments to be partially applied.\n     * @returns {Function} Returns the new bound function.\n     * @example\n     *\n     * var object = {\n     *   'user': 'fred',\n     *   'greet': function(greeting, punctuation) {\n     *     return greeting + ' ' + this.user + punctuation;\n     *   }\n     * };\n     *\n     * var bound = _.bindKey(object, 'greet', 'hi');\n     * bound('!');\n     * // => 'hi fred!'\n     *\n     * object.greet = function(greeting, punctuation) {\n     *   return greeting + 'ya ' + this.user + punctuation;\n     * };\n     *\n     * bound('!');\n     * // => 'hiya fred!'\n     *\n     * // Bound with placeholders.\n     * var bound = _.bindKey(object, 'greet', _, '!');\n     * bound('hi');\n     * // => 'hiya fred!'\n     */\n    var bindKey = baseRest(function(object, key, partials) {\n      var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n      if (partials.length) {\n        var holders = replaceHolders(partials, getHolder(bindKey));\n        bitmask |= WRAP_PARTIAL_FLAG;\n      }\n      return createWrap(key, bitmask, object, partials, holders);\n    });\n\n    /**\n     * Creates a function that accepts arguments of `func` and either invokes\n     * `func` returning its result, if at least `arity` number of arguments have\n     * been provided, or returns a function that accepts the remaining `func`\n     * arguments, and so on. The arity of `func` may be specified if `func.length`\n     * is not sufficient.\n     *\n     * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n     * may be used as a placeholder for provided arguments.\n     *\n     * **Note:** This method doesn't set the \"length\" property of curried functions.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Function\n     * @param {Function} func The function to curry.\n     * @param {number} [arity=func.length] The arity of `func`.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Function} Returns the new curried function.\n     * @example\n     *\n     * var abc = function(a, b, c) {\n     *   return [a, b, c];\n     * };\n     *\n     * var curried = _.curry(abc);\n     *\n     * curried(1)(2)(3);\n     * // => [1, 2, 3]\n     *\n     * curried(1, 2)(3);\n     * // => [1, 2, 3]\n     *\n     * curried(1, 2, 3);\n     * // => [1, 2, 3]\n     *\n     * // Curried with placeholders.\n     * curried(1)(_, 3)(2);\n     * // => [1, 2, 3]\n     */\n    function curry(func, arity, guard) {\n      arity = guard ? undefined : arity;\n      var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n      result.placeholder = curry.placeholder;\n      return result;\n    }\n\n    /**\n     * This method is like `_.curry` except that arguments are applied to `func`\n     * in the manner of `_.partialRight` instead of `_.partial`.\n     *\n     * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n     * builds, may be used as a placeholder for provided arguments.\n     *\n     * **Note:** This method doesn't set the \"length\" property of curried functions.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Function\n     * @param {Function} func The function to curry.\n     * @param {number} [arity=func.length] The arity of `func`.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Function} Returns the new curried function.\n     * @example\n     *\n     * var abc = function(a, b, c) {\n     *   return [a, b, c];\n     * };\n     *\n     * var curried = _.curryRight(abc);\n     *\n     * curried(3)(2)(1);\n     * // => [1, 2, 3]\n     *\n     * curried(2, 3)(1);\n     * // => [1, 2, 3]\n     *\n     * curried(1, 2, 3);\n     * // => [1, 2, 3]\n     *\n     * // Curried with placeholders.\n     * curried(3)(1, _)(2);\n     * // => [1, 2, 3]\n     */\n    function curryRight(func, arity, guard) {\n      arity = guard ? undefined : arity;\n      var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n      result.placeholder = curryRight.placeholder;\n      return result;\n    }\n\n    /**\n     * Creates a debounced function that delays invoking `func` until after `wait`\n     * milliseconds have elapsed since the last time the debounced function was\n     * invoked. The debounced function comes with a `cancel` method to cancel\n     * delayed `func` invocations and a `flush` method to immediately invoke them.\n     * Provide `options` to indicate whether `func` should be invoked on the\n     * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n     * with the last arguments provided to the debounced function. Subsequent\n     * calls to the debounced function return the result of the last `func`\n     * invocation.\n     *\n     * **Note:** If `leading` and `trailing` options are `true`, `func` is\n     * invoked on the trailing edge of the timeout only if the debounced function\n     * is invoked more than once during the `wait` timeout.\n     *\n     * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n     * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n     *\n     * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n     * for details over the differences between `_.debounce` and `_.throttle`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to debounce.\n     * @param {number} [wait=0] The number of milliseconds to delay.\n     * @param {Object} [options={}] The options object.\n     * @param {boolean} [options.leading=false]\n     *  Specify invoking on the leading edge of the timeout.\n     * @param {number} [options.maxWait]\n     *  The maximum time `func` is allowed to be delayed before it's invoked.\n     * @param {boolean} [options.trailing=true]\n     *  Specify invoking on the trailing edge of the timeout.\n     * @returns {Function} Returns the new debounced function.\n     * @example\n     *\n     * // Avoid costly calculations while the window size is in flux.\n     * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n     *\n     * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n     * jQuery(element).on('click', _.debounce(sendMail, 300, {\n     *   'leading': true,\n     *   'trailing': false\n     * }));\n     *\n     * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n     * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n     * var source = new EventSource('/stream');\n     * jQuery(source).on('message', debounced);\n     *\n     * // Cancel the trailing debounced invocation.\n     * jQuery(window).on('popstate', debounced.cancel);\n     */\n    function debounce(func, wait, options) {\n      var lastArgs,\n          lastThis,\n          maxWait,\n          result,\n          timerId,\n          lastCallTime,\n          lastInvokeTime = 0,\n          leading = false,\n          maxing = false,\n          trailing = true;\n\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      wait = toNumber(wait) || 0;\n      if (isObject(options)) {\n        leading = !!options.leading;\n        maxing = 'maxWait' in options;\n        maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n        trailing = 'trailing' in options ? !!options.trailing : trailing;\n      }\n\n      function invokeFunc(time) {\n        var args = lastArgs,\n            thisArg = lastThis;\n\n        lastArgs = lastThis = undefined;\n        lastInvokeTime = time;\n        result = func.apply(thisArg, args);\n        return result;\n      }\n\n      function leadingEdge(time) {\n        // Reset any `maxWait` timer.\n        lastInvokeTime = time;\n        // Start the timer for the trailing edge.\n        timerId = setTimeout(timerExpired, wait);\n        // Invoke the leading edge.\n        return leading ? invokeFunc(time) : result;\n      }\n\n      function remainingWait(time) {\n        var timeSinceLastCall = time - lastCallTime,\n            timeSinceLastInvoke = time - lastInvokeTime,\n            timeWaiting = wait - timeSinceLastCall;\n\n        return maxing\n          ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n          : timeWaiting;\n      }\n\n      function shouldInvoke(time) {\n        var timeSinceLastCall = time - lastCallTime,\n            timeSinceLastInvoke = time - lastInvokeTime;\n\n        // Either this is the first call, activity has stopped and we're at the\n        // trailing edge, the system time has gone backwards and we're treating\n        // it as the trailing edge, or we've hit the `maxWait` limit.\n        return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n          (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n      }\n\n      function timerExpired() {\n        var time = now();\n        if (shouldInvoke(time)) {\n          return trailingEdge(time);\n        }\n        // Restart the timer.\n        timerId = setTimeout(timerExpired, remainingWait(time));\n      }\n\n      function trailingEdge(time) {\n        timerId = undefined;\n\n        // Only invoke if we have `lastArgs` which means `func` has been\n        // debounced at least once.\n        if (trailing && lastArgs) {\n          return invokeFunc(time);\n        }\n        lastArgs = lastThis = undefined;\n        return result;\n      }\n\n      function cancel() {\n        if (timerId !== undefined) {\n          clearTimeout(timerId);\n        }\n        lastInvokeTime = 0;\n        lastArgs = lastCallTime = lastThis = timerId = undefined;\n      }\n\n      function flush() {\n        return timerId === undefined ? result : trailingEdge(now());\n      }\n\n      function debounced() {\n        var time = now(),\n            isInvoking = shouldInvoke(time);\n\n        lastArgs = arguments;\n        lastThis = this;\n        lastCallTime = time;\n\n        if (isInvoking) {\n          if (timerId === undefined) {\n            return leadingEdge(lastCallTime);\n          }\n          if (maxing) {\n            // Handle invocations in a tight loop.\n            clearTimeout(timerId);\n            timerId = setTimeout(timerExpired, wait);\n            return invokeFunc(lastCallTime);\n          }\n        }\n        if (timerId === undefined) {\n          timerId = setTimeout(timerExpired, wait);\n        }\n        return result;\n      }\n      debounced.cancel = cancel;\n      debounced.flush = flush;\n      return debounced;\n    }\n\n    /**\n     * Defers invoking the `func` until the current call stack has cleared. Any\n     * additional arguments are provided to `func` when it's invoked.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to defer.\n     * @param {...*} [args] The arguments to invoke `func` with.\n     * @returns {number} Returns the timer id.\n     * @example\n     *\n     * _.defer(function(text) {\n     *   console.log(text);\n     * }, 'deferred');\n     * // => Logs 'deferred' after one millisecond.\n     */\n    var defer = baseRest(function(func, args) {\n      return baseDelay(func, 1, args);\n    });\n\n    /**\n     * Invokes `func` after `wait` milliseconds. Any additional arguments are\n     * provided to `func` when it's invoked.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to delay.\n     * @param {number} wait The number of milliseconds to delay invocation.\n     * @param {...*} [args] The arguments to invoke `func` with.\n     * @returns {number} Returns the timer id.\n     * @example\n     *\n     * _.delay(function(text) {\n     *   console.log(text);\n     * }, 1000, 'later');\n     * // => Logs 'later' after one second.\n     */\n    var delay = baseRest(function(func, wait, args) {\n      return baseDelay(func, toNumber(wait) || 0, args);\n    });\n\n    /**\n     * Creates a function that invokes `func` with arguments reversed.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Function\n     * @param {Function} func The function to flip arguments for.\n     * @returns {Function} Returns the new flipped function.\n     * @example\n     *\n     * var flipped = _.flip(function() {\n     *   return _.toArray(arguments);\n     * });\n     *\n     * flipped('a', 'b', 'c', 'd');\n     * // => ['d', 'c', 'b', 'a']\n     */\n    function flip(func) {\n      return createWrap(func, WRAP_FLIP_FLAG);\n    }\n\n    /**\n     * Creates a function that memoizes the result of `func`. If `resolver` is\n     * provided, it determines the cache key for storing the result based on the\n     * arguments provided to the memoized function. By default, the first argument\n     * provided to the memoized function is used as the map cache key. The `func`\n     * is invoked with the `this` binding of the memoized function.\n     *\n     * **Note:** The cache is exposed as the `cache` property on the memoized\n     * function. Its creation may be customized by replacing the `_.memoize.Cache`\n     * constructor with one whose instances implement the\n     * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n     * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to have its output memoized.\n     * @param {Function} [resolver] The function to resolve the cache key.\n     * @returns {Function} Returns the new memoized function.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': 2 };\n     * var other = { 'c': 3, 'd': 4 };\n     *\n     * var values = _.memoize(_.values);\n     * values(object);\n     * // => [1, 2]\n     *\n     * values(other);\n     * // => [3, 4]\n     *\n     * object.a = 2;\n     * values(object);\n     * // => [1, 2]\n     *\n     * // Modify the result cache.\n     * values.cache.set(object, ['a', 'b']);\n     * values(object);\n     * // => ['a', 'b']\n     *\n     * // Replace `_.memoize.Cache`.\n     * _.memoize.Cache = WeakMap;\n     */\n    function memoize(func, resolver) {\n      if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      var memoized = function() {\n        var args = arguments,\n            key = resolver ? resolver.apply(this, args) : args[0],\n            cache = memoized.cache;\n\n        if (cache.has(key)) {\n          return cache.get(key);\n        }\n        var result = func.apply(this, args);\n        memoized.cache = cache.set(key, result) || cache;\n        return result;\n      };\n      memoized.cache = new (memoize.Cache || MapCache);\n      return memoized;\n    }\n\n    // Expose `MapCache`.\n    memoize.Cache = MapCache;\n\n    /**\n     * Creates a function that negates the result of the predicate `func`. The\n     * `func` predicate is invoked with the `this` binding and arguments of the\n     * created function.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Function\n     * @param {Function} predicate The predicate to negate.\n     * @returns {Function} Returns the new negated function.\n     * @example\n     *\n     * function isEven(n) {\n     *   return n % 2 == 0;\n     * }\n     *\n     * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n     * // => [1, 3, 5]\n     */\n    function negate(predicate) {\n      if (typeof predicate != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      return function() {\n        var args = arguments;\n        switch (args.length) {\n          case 0: return !predicate.call(this);\n          case 1: return !predicate.call(this, args[0]);\n          case 2: return !predicate.call(this, args[0], args[1]);\n          case 3: return !predicate.call(this, args[0], args[1], args[2]);\n        }\n        return !predicate.apply(this, args);\n      };\n    }\n\n    /**\n     * Creates a function that is restricted to invoking `func` once. Repeat calls\n     * to the function return the value of the first invocation. The `func` is\n     * invoked with the `this` binding and arguments of the created function.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to restrict.\n     * @returns {Function} Returns the new restricted function.\n     * @example\n     *\n     * var initialize = _.once(createApplication);\n     * initialize();\n     * initialize();\n     * // => `createApplication` is invoked once\n     */\n    function once(func) {\n      return before(2, func);\n    }\n\n    /**\n     * Creates a function that invokes `func` with its arguments transformed.\n     *\n     * @static\n     * @since 4.0.0\n     * @memberOf _\n     * @category Function\n     * @param {Function} func The function to wrap.\n     * @param {...(Function|Function[])} [transforms=[_.identity]]\n     *  The argument transforms.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * function doubled(n) {\n     *   return n * 2;\n     * }\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * var func = _.overArgs(function(x, y) {\n     *   return [x, y];\n     * }, [square, doubled]);\n     *\n     * func(9, 3);\n     * // => [81, 6]\n     *\n     * func(10, 5);\n     * // => [100, 10]\n     */\n    var overArgs = castRest(function(func, transforms) {\n      transforms = (transforms.length == 1 && isArray(transforms[0]))\n        ? arrayMap(transforms[0], baseUnary(getIteratee()))\n        : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n\n      var funcsLength = transforms.length;\n      return baseRest(function(args) {\n        var index = -1,\n            length = nativeMin(args.length, funcsLength);\n\n        while (++index < length) {\n          args[index] = transforms[index].call(this, args[index]);\n        }\n        return apply(func, this, args);\n      });\n    });\n\n    /**\n     * Creates a function that invokes `func` with `partials` prepended to the\n     * arguments it receives. This method is like `_.bind` except it does **not**\n     * alter the `this` binding.\n     *\n     * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n     * builds, may be used as a placeholder for partially applied arguments.\n     *\n     * **Note:** This method doesn't set the \"length\" property of partially\n     * applied functions.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.2.0\n     * @category Function\n     * @param {Function} func The function to partially apply arguments to.\n     * @param {...*} [partials] The arguments to be partially applied.\n     * @returns {Function} Returns the new partially applied function.\n     * @example\n     *\n     * function greet(greeting, name) {\n     *   return greeting + ' ' + name;\n     * }\n     *\n     * var sayHelloTo = _.partial(greet, 'hello');\n     * sayHelloTo('fred');\n     * // => 'hello fred'\n     *\n     * // Partially applied with placeholders.\n     * var greetFred = _.partial(greet, _, 'fred');\n     * greetFred('hi');\n     * // => 'hi fred'\n     */\n    var partial = baseRest(function(func, partials) {\n      var holders = replaceHolders(partials, getHolder(partial));\n      return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n    });\n\n    /**\n     * This method is like `_.partial` except that partially applied arguments\n     * are appended to the arguments it receives.\n     *\n     * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n     * builds, may be used as a placeholder for partially applied arguments.\n     *\n     * **Note:** This method doesn't set the \"length\" property of partially\n     * applied functions.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.0.0\n     * @category Function\n     * @param {Function} func The function to partially apply arguments to.\n     * @param {...*} [partials] The arguments to be partially applied.\n     * @returns {Function} Returns the new partially applied function.\n     * @example\n     *\n     * function greet(greeting, name) {\n     *   return greeting + ' ' + name;\n     * }\n     *\n     * var greetFred = _.partialRight(greet, 'fred');\n     * greetFred('hi');\n     * // => 'hi fred'\n     *\n     * // Partially applied with placeholders.\n     * var sayHelloTo = _.partialRight(greet, 'hello', _);\n     * sayHelloTo('fred');\n     * // => 'hello fred'\n     */\n    var partialRight = baseRest(function(func, partials) {\n      var holders = replaceHolders(partials, getHolder(partialRight));\n      return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n    });\n\n    /**\n     * Creates a function that invokes `func` with arguments arranged according\n     * to the specified `indexes` where the argument value at the first index is\n     * provided as the first argument, the argument value at the second index is\n     * provided as the second argument, and so on.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Function\n     * @param {Function} func The function to rearrange arguments for.\n     * @param {...(number|number[])} indexes The arranged argument indexes.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var rearged = _.rearg(function(a, b, c) {\n     *   return [a, b, c];\n     * }, [2, 0, 1]);\n     *\n     * rearged('b', 'c', 'a')\n     * // => ['a', 'b', 'c']\n     */\n    var rearg = flatRest(function(func, indexes) {\n      return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n    });\n\n    /**\n     * Creates a function that invokes `func` with the `this` binding of the\n     * created function and arguments from `start` and beyond provided as\n     * an array.\n     *\n     * **Note:** This method is based on the\n     * [rest parameter](https://mdn.io/rest_parameters).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Function\n     * @param {Function} func The function to apply a rest parameter to.\n     * @param {number} [start=func.length-1] The start position of the rest parameter.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var say = _.rest(function(what, names) {\n     *   return what + ' ' + _.initial(names).join(', ') +\n     *     (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n     * });\n     *\n     * say('hello', 'fred', 'barney', 'pebbles');\n     * // => 'hello fred, barney, & pebbles'\n     */\n    function rest(func, start) {\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      start = start === undefined ? start : toInteger(start);\n      return baseRest(func, start);\n    }\n\n    /**\n     * Creates a function that invokes `func` with the `this` binding of the\n     * create function and an array of arguments much like\n     * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n     *\n     * **Note:** This method is based on the\n     * [spread operator](https://mdn.io/spread_operator).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.2.0\n     * @category Function\n     * @param {Function} func The function to spread arguments over.\n     * @param {number} [start=0] The start position of the spread.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var say = _.spread(function(who, what) {\n     *   return who + ' says ' + what;\n     * });\n     *\n     * say(['fred', 'hello']);\n     * // => 'fred says hello'\n     *\n     * var numbers = Promise.all([\n     *   Promise.resolve(40),\n     *   Promise.resolve(36)\n     * ]);\n     *\n     * numbers.then(_.spread(function(x, y) {\n     *   return x + y;\n     * }));\n     * // => a Promise of 76\n     */\n    function spread(func, start) {\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      start = start == null ? 0 : nativeMax(toInteger(start), 0);\n      return baseRest(function(args) {\n        var array = args[start],\n            otherArgs = castSlice(args, 0, start);\n\n        if (array) {\n          arrayPush(otherArgs, array);\n        }\n        return apply(func, this, otherArgs);\n      });\n    }\n\n    /**\n     * Creates a throttled function that only invokes `func` at most once per\n     * every `wait` milliseconds. The throttled function comes with a `cancel`\n     * method to cancel delayed `func` invocations and a `flush` method to\n     * immediately invoke them. Provide `options` to indicate whether `func`\n     * should be invoked on the leading and/or trailing edge of the `wait`\n     * timeout. The `func` is invoked with the last arguments provided to the\n     * throttled function. Subsequent calls to the throttled function return the\n     * result of the last `func` invocation.\n     *\n     * **Note:** If `leading` and `trailing` options are `true`, `func` is\n     * invoked on the trailing edge of the timeout only if the throttled function\n     * is invoked more than once during the `wait` timeout.\n     *\n     * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n     * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n     *\n     * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n     * for details over the differences between `_.throttle` and `_.debounce`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to throttle.\n     * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n     * @param {Object} [options={}] The options object.\n     * @param {boolean} [options.leading=true]\n     *  Specify invoking on the leading edge of the timeout.\n     * @param {boolean} [options.trailing=true]\n     *  Specify invoking on the trailing edge of the timeout.\n     * @returns {Function} Returns the new throttled function.\n     * @example\n     *\n     * // Avoid excessively updating the position while scrolling.\n     * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n     *\n     * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n     * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n     * jQuery(element).on('click', throttled);\n     *\n     * // Cancel the trailing throttled invocation.\n     * jQuery(window).on('popstate', throttled.cancel);\n     */\n    function throttle(func, wait, options) {\n      var leading = true,\n          trailing = true;\n\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      if (isObject(options)) {\n        leading = 'leading' in options ? !!options.leading : leading;\n        trailing = 'trailing' in options ? !!options.trailing : trailing;\n      }\n      return debounce(func, wait, {\n        'leading': leading,\n        'maxWait': wait,\n        'trailing': trailing\n      });\n    }\n\n    /**\n     * Creates a function that accepts up to one argument, ignoring any\n     * additional arguments.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Function\n     * @param {Function} func The function to cap arguments for.\n     * @returns {Function} Returns the new capped function.\n     * @example\n     *\n     * _.map(['6', '8', '10'], _.unary(parseInt));\n     * // => [6, 8, 10]\n     */\n    function unary(func) {\n      return ary(func, 1);\n    }\n\n    /**\n     * Creates a function that provides `value` to `wrapper` as its first\n     * argument. Any additional arguments provided to the function are appended\n     * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n     * binding of the created function.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {*} value The value to wrap.\n     * @param {Function} [wrapper=identity] The wrapper function.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var p = _.wrap(_.escape, function(func, text) {\n     *   return '<p>' + func(text) + '</p>';\n     * });\n     *\n     * p('fred, barney, & pebbles');\n     * // => '<p>fred, barney, &amp; pebbles</p>'\n     */\n    function wrap(value, wrapper) {\n      return partial(castFunction(wrapper), value);\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Casts `value` as an array if it's not one.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.4.0\n     * @category Lang\n     * @param {*} value The value to inspect.\n     * @returns {Array} Returns the cast array.\n     * @example\n     *\n     * _.castArray(1);\n     * // => [1]\n     *\n     * _.castArray({ 'a': 1 });\n     * // => [{ 'a': 1 }]\n     *\n     * _.castArray('abc');\n     * // => ['abc']\n     *\n     * _.castArray(null);\n     * // => [null]\n     *\n     * _.castArray(undefined);\n     * // => [undefined]\n     *\n     * _.castArray();\n     * // => []\n     *\n     * var array = [1, 2, 3];\n     * console.log(_.castArray(array) === array);\n     * // => true\n     */\n    function castArray() {\n      if (!arguments.length) {\n        return [];\n      }\n      var value = arguments[0];\n      return isArray(value) ? value : [value];\n    }\n\n    /**\n     * Creates a shallow clone of `value`.\n     *\n     * **Note:** This method is loosely based on the\n     * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n     * and supports cloning arrays, array buffers, booleans, date objects, maps,\n     * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n     * arrays. The own enumerable properties of `arguments` objects are cloned\n     * as plain objects. An empty object is returned for uncloneable values such\n     * as error objects, functions, DOM nodes, and WeakMaps.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to clone.\n     * @returns {*} Returns the cloned value.\n     * @see _.cloneDeep\n     * @example\n     *\n     * var objects = [{ 'a': 1 }, { 'b': 2 }];\n     *\n     * var shallow = _.clone(objects);\n     * console.log(shallow[0] === objects[0]);\n     * // => true\n     */\n    function clone(value) {\n      return baseClone(value, CLONE_SYMBOLS_FLAG);\n    }\n\n    /**\n     * This method is like `_.clone` except that it accepts `customizer` which\n     * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n     * cloning is handled by the method instead. The `customizer` is invoked with\n     * up to four arguments; (value [, index|key, object, stack]).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to clone.\n     * @param {Function} [customizer] The function to customize cloning.\n     * @returns {*} Returns the cloned value.\n     * @see _.cloneDeepWith\n     * @example\n     *\n     * function customizer(value) {\n     *   if (_.isElement(value)) {\n     *     return value.cloneNode(false);\n     *   }\n     * }\n     *\n     * var el = _.cloneWith(document.body, customizer);\n     *\n     * console.log(el === document.body);\n     * // => false\n     * console.log(el.nodeName);\n     * // => 'BODY'\n     * console.log(el.childNodes.length);\n     * // => 0\n     */\n    function cloneWith(value, customizer) {\n      customizer = typeof customizer == 'function' ? customizer : undefined;\n      return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n    }\n\n    /**\n     * This method is like `_.clone` except that it recursively clones `value`.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.0.0\n     * @category Lang\n     * @param {*} value The value to recursively clone.\n     * @returns {*} Returns the deep cloned value.\n     * @see _.clone\n     * @example\n     *\n     * var objects = [{ 'a': 1 }, { 'b': 2 }];\n     *\n     * var deep = _.cloneDeep(objects);\n     * console.log(deep[0] === objects[0]);\n     * // => false\n     */\n    function cloneDeep(value) {\n      return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n    }\n\n    /**\n     * This method is like `_.cloneWith` except that it recursively clones `value`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to recursively clone.\n     * @param {Function} [customizer] The function to customize cloning.\n     * @returns {*} Returns the deep cloned value.\n     * @see _.cloneWith\n     * @example\n     *\n     * function customizer(value) {\n     *   if (_.isElement(value)) {\n     *     return value.cloneNode(true);\n     *   }\n     * }\n     *\n     * var el = _.cloneDeepWith(document.body, customizer);\n     *\n     * console.log(el === document.body);\n     * // => false\n     * console.log(el.nodeName);\n     * // => 'BODY'\n     * console.log(el.childNodes.length);\n     * // => 20\n     */\n    function cloneDeepWith(value, customizer) {\n      customizer = typeof customizer == 'function' ? customizer : undefined;\n      return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n    }\n\n    /**\n     * Checks if `object` conforms to `source` by invoking the predicate\n     * properties of `source` with the corresponding property values of `object`.\n     *\n     * **Note:** This method is equivalent to `_.conforms` when `source` is\n     * partially applied.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.14.0\n     * @category Lang\n     * @param {Object} object The object to inspect.\n     * @param {Object} source The object of property predicates to conform to.\n     * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': 2 };\n     *\n     * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n     * // => true\n     *\n     * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n     * // => false\n     */\n    function conformsTo(object, source) {\n      return source == null || baseConformsTo(object, source, keys(source));\n    }\n\n    /**\n     * Performs a\n     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * comparison between two values to determine if they are equivalent.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n     * @example\n     *\n     * var object = { 'a': 1 };\n     * var other = { 'a': 1 };\n     *\n     * _.eq(object, object);\n     * // => true\n     *\n     * _.eq(object, other);\n     * // => false\n     *\n     * _.eq('a', 'a');\n     * // => true\n     *\n     * _.eq('a', Object('a'));\n     * // => false\n     *\n     * _.eq(NaN, NaN);\n     * // => true\n     */\n    function eq(value, other) {\n      return value === other || (value !== value && other !== other);\n    }\n\n    /**\n     * Checks if `value` is greater than `other`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.9.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if `value` is greater than `other`,\n     *  else `false`.\n     * @see _.lt\n     * @example\n     *\n     * _.gt(3, 1);\n     * // => true\n     *\n     * _.gt(3, 3);\n     * // => false\n     *\n     * _.gt(1, 3);\n     * // => false\n     */\n    var gt = createRelationalOperation(baseGt);\n\n    /**\n     * Checks if `value` is greater than or equal to `other`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.9.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if `value` is greater than or equal to\n     *  `other`, else `false`.\n     * @see _.lte\n     * @example\n     *\n     * _.gte(3, 1);\n     * // => true\n     *\n     * _.gte(3, 3);\n     * // => true\n     *\n     * _.gte(1, 3);\n     * // => false\n     */\n    var gte = createRelationalOperation(function(value, other) {\n      return value >= other;\n    });\n\n    /**\n     * Checks if `value` is likely an `arguments` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n     *  else `false`.\n     * @example\n     *\n     * _.isArguments(function() { return arguments; }());\n     * // => true\n     *\n     * _.isArguments([1, 2, 3]);\n     * // => false\n     */\n    var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n      return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n        !propertyIsEnumerable.call(value, 'callee');\n    };\n\n    /**\n     * Checks if `value` is classified as an `Array` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n     * @example\n     *\n     * _.isArray([1, 2, 3]);\n     * // => true\n     *\n     * _.isArray(document.body.children);\n     * // => false\n     *\n     * _.isArray('abc');\n     * // => false\n     *\n     * _.isArray(_.noop);\n     * // => false\n     */\n    var isArray = Array.isArray;\n\n    /**\n     * Checks if `value` is classified as an `ArrayBuffer` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.3.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n     * @example\n     *\n     * _.isArrayBuffer(new ArrayBuffer(2));\n     * // => true\n     *\n     * _.isArrayBuffer(new Array(2));\n     * // => false\n     */\n    var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\n\n    /**\n     * Checks if `value` is array-like. A value is considered array-like if it's\n     * not a function and has a `value.length` that's an integer greater than or\n     * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n     * @example\n     *\n     * _.isArrayLike([1, 2, 3]);\n     * // => true\n     *\n     * _.isArrayLike(document.body.children);\n     * // => true\n     *\n     * _.isArrayLike('abc');\n     * // => true\n     *\n     * _.isArrayLike(_.noop);\n     * // => false\n     */\n    function isArrayLike(value) {\n      return value != null && isLength(value.length) && !isFunction(value);\n    }\n\n    /**\n     * This method is like `_.isArrayLike` except that it also checks if `value`\n     * is an object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an array-like object,\n     *  else `false`.\n     * @example\n     *\n     * _.isArrayLikeObject([1, 2, 3]);\n     * // => true\n     *\n     * _.isArrayLikeObject(document.body.children);\n     * // => true\n     *\n     * _.isArrayLikeObject('abc');\n     * // => false\n     *\n     * _.isArrayLikeObject(_.noop);\n     * // => false\n     */\n    function isArrayLikeObject(value) {\n      return isObjectLike(value) && isArrayLike(value);\n    }\n\n    /**\n     * Checks if `value` is classified as a boolean primitive or object.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n     * @example\n     *\n     * _.isBoolean(false);\n     * // => true\n     *\n     * _.isBoolean(null);\n     * // => false\n     */\n    function isBoolean(value) {\n      return value === true || value === false ||\n        (isObjectLike(value) && baseGetTag(value) == boolTag);\n    }\n\n    /**\n     * Checks if `value` is a buffer.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.3.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n     * @example\n     *\n     * _.isBuffer(new Buffer(2));\n     * // => true\n     *\n     * _.isBuffer(new Uint8Array(2));\n     * // => false\n     */\n    var isBuffer = nativeIsBuffer || stubFalse;\n\n    /**\n     * Checks if `value` is classified as a `Date` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n     * @example\n     *\n     * _.isDate(new Date);\n     * // => true\n     *\n     * _.isDate('Mon April 23 2012');\n     * // => false\n     */\n    var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\n    /**\n     * Checks if `value` is likely a DOM element.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.\n     * @example\n     *\n     * _.isElement(document.body);\n     * // => true\n     *\n     * _.isElement('<body>');\n     * // => false\n     */\n    function isElement(value) {\n      return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n    }\n\n    /**\n     * Checks if `value` is an empty object, collection, map, or set.\n     *\n     * Objects are considered empty if they have no own enumerable string keyed\n     * properties.\n     *\n     * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n     * jQuery-like collections are considered empty if they have a `length` of `0`.\n     * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n     * @example\n     *\n     * _.isEmpty(null);\n     * // => true\n     *\n     * _.isEmpty(true);\n     * // => true\n     *\n     * _.isEmpty(1);\n     * // => true\n     *\n     * _.isEmpty([1, 2, 3]);\n     * // => false\n     *\n     * _.isEmpty({ 'a': 1 });\n     * // => false\n     */\n    function isEmpty(value) {\n      if (value == null) {\n        return true;\n      }\n      if (isArrayLike(value) &&\n          (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n            isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n        return !value.length;\n      }\n      var tag = getTag(value);\n      if (tag == mapTag || tag == setTag) {\n        return !value.size;\n      }\n      if (isPrototype(value)) {\n        return !baseKeys(value).length;\n      }\n      for (var key in value) {\n        if (hasOwnProperty.call(value, key)) {\n          return false;\n        }\n      }\n      return true;\n    }\n\n    /**\n     * Performs a deep comparison between two values to determine if they are\n     * equivalent.\n     *\n     * **Note:** This method supports comparing arrays, array buffers, booleans,\n     * date objects, error objects, maps, numbers, `Object` objects, regexes,\n     * sets, strings, symbols, and typed arrays. `Object` objects are compared\n     * by their own, not inherited, enumerable properties. Functions and DOM\n     * nodes are compared by strict equality, i.e. `===`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n     * @example\n     *\n     * var object = { 'a': 1 };\n     * var other = { 'a': 1 };\n     *\n     * _.isEqual(object, other);\n     * // => true\n     *\n     * object === other;\n     * // => false\n     */\n    function isEqual(value, other) {\n      return baseIsEqual(value, other);\n    }\n\n    /**\n     * This method is like `_.isEqual` except that it accepts `customizer` which\n     * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n     * are handled by the method instead. The `customizer` is invoked with up to\n     * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @param {Function} [customizer] The function to customize comparisons.\n     * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n     * @example\n     *\n     * function isGreeting(value) {\n     *   return /^h(?:i|ello)$/.test(value);\n     * }\n     *\n     * function customizer(objValue, othValue) {\n     *   if (isGreeting(objValue) && isGreeting(othValue)) {\n     *     return true;\n     *   }\n     * }\n     *\n     * var array = ['hello', 'goodbye'];\n     * var other = ['hi', 'goodbye'];\n     *\n     * _.isEqualWith(array, other, customizer);\n     * // => true\n     */\n    function isEqualWith(value, other, customizer) {\n      customizer = typeof customizer == 'function' ? customizer : undefined;\n      var result = customizer ? customizer(value, other) : undefined;\n      return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n    }\n\n    /**\n     * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n     * `SyntaxError`, `TypeError`, or `URIError` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n     * @example\n     *\n     * _.isError(new Error);\n     * // => true\n     *\n     * _.isError(Error);\n     * // => false\n     */\n    function isError(value) {\n      if (!isObjectLike(value)) {\n        return false;\n      }\n      var tag = baseGetTag(value);\n      return tag == errorTag || tag == domExcTag ||\n        (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n    }\n\n    /**\n     * Checks if `value` is a finite primitive number.\n     *\n     * **Note:** This method is based on\n     * [`Number.isFinite`](https://mdn.io/Number/isFinite).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.\n     * @example\n     *\n     * _.isFinite(3);\n     * // => true\n     *\n     * _.isFinite(Number.MIN_VALUE);\n     * // => true\n     *\n     * _.isFinite(Infinity);\n     * // => false\n     *\n     * _.isFinite('3');\n     * // => false\n     */\n    function isFinite(value) {\n      return typeof value == 'number' && nativeIsFinite(value);\n    }\n\n    /**\n     * Checks if `value` is classified as a `Function` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n     * @example\n     *\n     * _.isFunction(_);\n     * // => true\n     *\n     * _.isFunction(/abc/);\n     * // => false\n     */\n    function isFunction(value) {\n      if (!isObject(value)) {\n        return false;\n      }\n      // The use of `Object#toString` avoids issues with the `typeof` operator\n      // in Safari 9 which returns 'object' for typed arrays and other constructors.\n      var tag = baseGetTag(value);\n      return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n    }\n\n    /**\n     * Checks if `value` is an integer.\n     *\n     * **Note:** This method is based on\n     * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n     * @example\n     *\n     * _.isInteger(3);\n     * // => true\n     *\n     * _.isInteger(Number.MIN_VALUE);\n     * // => false\n     *\n     * _.isInteger(Infinity);\n     * // => false\n     *\n     * _.isInteger('3');\n     * // => false\n     */\n    function isInteger(value) {\n      return typeof value == 'number' && value == toInteger(value);\n    }\n\n    /**\n     * Checks if `value` is a valid array-like length.\n     *\n     * **Note:** This method is loosely based on\n     * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n     * @example\n     *\n     * _.isLength(3);\n     * // => true\n     *\n     * _.isLength(Number.MIN_VALUE);\n     * // => false\n     *\n     * _.isLength(Infinity);\n     * // => false\n     *\n     * _.isLength('3');\n     * // => false\n     */\n    function isLength(value) {\n      return typeof value == 'number' &&\n        value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n    }\n\n    /**\n     * Checks if `value` is the\n     * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n     * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n     * @example\n     *\n     * _.isObject({});\n     * // => true\n     *\n     * _.isObject([1, 2, 3]);\n     * // => true\n     *\n     * _.isObject(_.noop);\n     * // => true\n     *\n     * _.isObject(null);\n     * // => false\n     */\n    function isObject(value) {\n      var type = typeof value;\n      return value != null && (type == 'object' || type == 'function');\n    }\n\n    /**\n     * Checks if `value` is object-like. A value is object-like if it's not `null`\n     * and has a `typeof` result of \"object\".\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n     * @example\n     *\n     * _.isObjectLike({});\n     * // => true\n     *\n     * _.isObjectLike([1, 2, 3]);\n     * // => true\n     *\n     * _.isObjectLike(_.noop);\n     * // => false\n     *\n     * _.isObjectLike(null);\n     * // => false\n     */\n    function isObjectLike(value) {\n      return value != null && typeof value == 'object';\n    }\n\n    /**\n     * Checks if `value` is classified as a `Map` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.3.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n     * @example\n     *\n     * _.isMap(new Map);\n     * // => true\n     *\n     * _.isMap(new WeakMap);\n     * // => false\n     */\n    var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n    /**\n     * Performs a partial deep comparison between `object` and `source` to\n     * determine if `object` contains equivalent property values.\n     *\n     * **Note:** This method is equivalent to `_.matches` when `source` is\n     * partially applied.\n     *\n     * Partial comparisons will match empty array and empty object `source`\n     * values against any array or object value, respectively. See `_.isEqual`\n     * for a list of supported value comparisons.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Lang\n     * @param {Object} object The object to inspect.\n     * @param {Object} source The object of property values to match.\n     * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': 2 };\n     *\n     * _.isMatch(object, { 'b': 2 });\n     * // => true\n     *\n     * _.isMatch(object, { 'b': 1 });\n     * // => false\n     */\n    function isMatch(object, source) {\n      return object === source || baseIsMatch(object, source, getMatchData(source));\n    }\n\n    /**\n     * This method is like `_.isMatch` except that it accepts `customizer` which\n     * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n     * are handled by the method instead. The `customizer` is invoked with five\n     * arguments: (objValue, srcValue, index|key, object, source).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {Object} object The object to inspect.\n     * @param {Object} source The object of property values to match.\n     * @param {Function} [customizer] The function to customize comparisons.\n     * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n     * @example\n     *\n     * function isGreeting(value) {\n     *   return /^h(?:i|ello)$/.test(value);\n     * }\n     *\n     * function customizer(objValue, srcValue) {\n     *   if (isGreeting(objValue) && isGreeting(srcValue)) {\n     *     return true;\n     *   }\n     * }\n     *\n     * var object = { 'greeting': 'hello' };\n     * var source = { 'greeting': 'hi' };\n     *\n     * _.isMatchWith(object, source, customizer);\n     * // => true\n     */\n    function isMatchWith(object, source, customizer) {\n      customizer = typeof customizer == 'function' ? customizer : undefined;\n      return baseIsMatch(object, source, getMatchData(source), customizer);\n    }\n\n    /**\n     * Checks if `value` is `NaN`.\n     *\n     * **Note:** This method is based on\n     * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n     * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n     * `undefined` and other non-number values.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n     * @example\n     *\n     * _.isNaN(NaN);\n     * // => true\n     *\n     * _.isNaN(new Number(NaN));\n     * // => true\n     *\n     * isNaN(undefined);\n     * // => true\n     *\n     * _.isNaN(undefined);\n     * // => false\n     */\n    function isNaN(value) {\n      // An `NaN` primitive is the only value that is not equal to itself.\n      // Perform the `toStringTag` check first to avoid errors with some\n      // ActiveX objects in IE.\n      return isNumber(value) && value != +value;\n    }\n\n    /**\n     * Checks if `value` is a pristine native function.\n     *\n     * **Note:** This method can't reliably detect native functions in the presence\n     * of the core-js package because core-js circumvents this kind of detection.\n     * Despite multiple requests, the core-js maintainer has made it clear: any\n     * attempt to fix the detection will be obstructed. As a result, we're left\n     * with little choice but to throw an error. Unfortunately, this also affects\n     * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n     * which rely on core-js.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a native function,\n     *  else `false`.\n     * @example\n     *\n     * _.isNative(Array.prototype.push);\n     * // => true\n     *\n     * _.isNative(_);\n     * // => false\n     */\n    function isNative(value) {\n      if (isMaskable(value)) {\n        throw new Error(CORE_ERROR_TEXT);\n      }\n      return baseIsNative(value);\n    }\n\n    /**\n     * Checks if `value` is `null`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n     * @example\n     *\n     * _.isNull(null);\n     * // => true\n     *\n     * _.isNull(void 0);\n     * // => false\n     */\n    function isNull(value) {\n      return value === null;\n    }\n\n    /**\n     * Checks if `value` is `null` or `undefined`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n     * @example\n     *\n     * _.isNil(null);\n     * // => true\n     *\n     * _.isNil(void 0);\n     * // => true\n     *\n     * _.isNil(NaN);\n     * // => false\n     */\n    function isNil(value) {\n      return value == null;\n    }\n\n    /**\n     * Checks if `value` is classified as a `Number` primitive or object.\n     *\n     * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n     * classified as numbers, use the `_.isFinite` method.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n     * @example\n     *\n     * _.isNumber(3);\n     * // => true\n     *\n     * _.isNumber(Number.MIN_VALUE);\n     * // => true\n     *\n     * _.isNumber(Infinity);\n     * // => true\n     *\n     * _.isNumber('3');\n     * // => false\n     */\n    function isNumber(value) {\n      return typeof value == 'number' ||\n        (isObjectLike(value) && baseGetTag(value) == numberTag);\n    }\n\n    /**\n     * Checks if `value` is a plain object, that is, an object created by the\n     * `Object` constructor or one with a `[[Prototype]]` of `null`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.8.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     * }\n     *\n     * _.isPlainObject(new Foo);\n     * // => false\n     *\n     * _.isPlainObject([1, 2, 3]);\n     * // => false\n     *\n     * _.isPlainObject({ 'x': 0, 'y': 0 });\n     * // => true\n     *\n     * _.isPlainObject(Object.create(null));\n     * // => true\n     */\n    function isPlainObject(value) {\n      if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n        return false;\n      }\n      var proto = getPrototype(value);\n      if (proto === null) {\n        return true;\n      }\n      var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n      return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n        funcToString.call(Ctor) == objectCtorString;\n    }\n\n    /**\n     * Checks if `value` is classified as a `RegExp` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n     * @example\n     *\n     * _.isRegExp(/abc/);\n     * // => true\n     *\n     * _.isRegExp('/abc/');\n     * // => false\n     */\n    var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n    /**\n     * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n     * double precision number which isn't the result of a rounded unsafe integer.\n     *\n     * **Note:** This method is based on\n     * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.\n     * @example\n     *\n     * _.isSafeInteger(3);\n     * // => true\n     *\n     * _.isSafeInteger(Number.MIN_VALUE);\n     * // => false\n     *\n     * _.isSafeInteger(Infinity);\n     * // => false\n     *\n     * _.isSafeInteger('3');\n     * // => false\n     */\n    function isSafeInteger(value) {\n      return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n    }\n\n    /**\n     * Checks if `value` is classified as a `Set` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.3.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n     * @example\n     *\n     * _.isSet(new Set);\n     * // => true\n     *\n     * _.isSet(new WeakSet);\n     * // => false\n     */\n    var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\n    /**\n     * Checks if `value` is classified as a `String` primitive or object.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n     * @example\n     *\n     * _.isString('abc');\n     * // => true\n     *\n     * _.isString(1);\n     * // => false\n     */\n    function isString(value) {\n      return typeof value == 'string' ||\n        (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n    }\n\n    /**\n     * Checks if `value` is classified as a `Symbol` primitive or object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n     * @example\n     *\n     * _.isSymbol(Symbol.iterator);\n     * // => true\n     *\n     * _.isSymbol('abc');\n     * // => false\n     */\n    function isSymbol(value) {\n      return typeof value == 'symbol' ||\n        (isObjectLike(value) && baseGetTag(value) == symbolTag);\n    }\n\n    /**\n     * Checks if `value` is classified as a typed array.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n     * @example\n     *\n     * _.isTypedArray(new Uint8Array);\n     * // => true\n     *\n     * _.isTypedArray([]);\n     * // => false\n     */\n    var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n    /**\n     * Checks if `value` is `undefined`.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n     * @example\n     *\n     * _.isUndefined(void 0);\n     * // => true\n     *\n     * _.isUndefined(null);\n     * // => false\n     */\n    function isUndefined(value) {\n      return value === undefined;\n    }\n\n    /**\n     * Checks if `value` is classified as a `WeakMap` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.3.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n     * @example\n     *\n     * _.isWeakMap(new WeakMap);\n     * // => true\n     *\n     * _.isWeakMap(new Map);\n     * // => false\n     */\n    function isWeakMap(value) {\n      return isObjectLike(value) && getTag(value) == weakMapTag;\n    }\n\n    /**\n     * Checks if `value` is classified as a `WeakSet` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.3.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\n     * @example\n     *\n     * _.isWeakSet(new WeakSet);\n     * // => true\n     *\n     * _.isWeakSet(new Set);\n     * // => false\n     */\n    function isWeakSet(value) {\n      return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n    }\n\n    /**\n     * Checks if `value` is less than `other`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.9.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if `value` is less than `other`,\n     *  else `false`.\n     * @see _.gt\n     * @example\n     *\n     * _.lt(1, 3);\n     * // => true\n     *\n     * _.lt(3, 3);\n     * // => false\n     *\n     * _.lt(3, 1);\n     * // => false\n     */\n    var lt = createRelationalOperation(baseLt);\n\n    /**\n     * Checks if `value` is less than or equal to `other`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.9.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if `value` is less than or equal to\n     *  `other`, else `false`.\n     * @see _.gte\n     * @example\n     *\n     * _.lte(1, 3);\n     * // => true\n     *\n     * _.lte(3, 3);\n     * // => true\n     *\n     * _.lte(3, 1);\n     * // => false\n     */\n    var lte = createRelationalOperation(function(value, other) {\n      return value <= other;\n    });\n\n    /**\n     * Converts `value` to an array.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {Array} Returns the converted array.\n     * @example\n     *\n     * _.toArray({ 'a': 1, 'b': 2 });\n     * // => [1, 2]\n     *\n     * _.toArray('abc');\n     * // => ['a', 'b', 'c']\n     *\n     * _.toArray(1);\n     * // => []\n     *\n     * _.toArray(null);\n     * // => []\n     */\n    function toArray(value) {\n      if (!value) {\n        return [];\n      }\n      if (isArrayLike(value)) {\n        return isString(value) ? stringToArray(value) : copyArray(value);\n      }\n      if (symIterator && value[symIterator]) {\n        return iteratorToArray(value[symIterator]());\n      }\n      var tag = getTag(value),\n          func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n      return func(value);\n    }\n\n    /**\n     * Converts `value` to a finite number.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.12.0\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {number} Returns the converted number.\n     * @example\n     *\n     * _.toFinite(3.2);\n     * // => 3.2\n     *\n     * _.toFinite(Number.MIN_VALUE);\n     * // => 5e-324\n     *\n     * _.toFinite(Infinity);\n     * // => 1.7976931348623157e+308\n     *\n     * _.toFinite('3.2');\n     * // => 3.2\n     */\n    function toFinite(value) {\n      if (!value) {\n        return value === 0 ? value : 0;\n      }\n      value = toNumber(value);\n      if (value === INFINITY || value === -INFINITY) {\n        var sign = (value < 0 ? -1 : 1);\n        return sign * MAX_INTEGER;\n      }\n      return value === value ? value : 0;\n    }\n\n    /**\n     * Converts `value` to an integer.\n     *\n     * **Note:** This method is loosely based on\n     * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {number} Returns the converted integer.\n     * @example\n     *\n     * _.toInteger(3.2);\n     * // => 3\n     *\n     * _.toInteger(Number.MIN_VALUE);\n     * // => 0\n     *\n     * _.toInteger(Infinity);\n     * // => 1.7976931348623157e+308\n     *\n     * _.toInteger('3.2');\n     * // => 3\n     */\n    function toInteger(value) {\n      var result = toFinite(value),\n          remainder = result % 1;\n\n      return result === result ? (remainder ? result - remainder : result) : 0;\n    }\n\n    /**\n     * Converts `value` to an integer suitable for use as the length of an\n     * array-like object.\n     *\n     * **Note:** This method is based on\n     * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {number} Returns the converted integer.\n     * @example\n     *\n     * _.toLength(3.2);\n     * // => 3\n     *\n     * _.toLength(Number.MIN_VALUE);\n     * // => 0\n     *\n     * _.toLength(Infinity);\n     * // => 4294967295\n     *\n     * _.toLength('3.2');\n     * // => 3\n     */\n    function toLength(value) {\n      return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n    }\n\n    /**\n     * Converts `value` to a number.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to process.\n     * @returns {number} Returns the number.\n     * @example\n     *\n     * _.toNumber(3.2);\n     * // => 3.2\n     *\n     * _.toNumber(Number.MIN_VALUE);\n     * // => 5e-324\n     *\n     * _.toNumber(Infinity);\n     * // => Infinity\n     *\n     * _.toNumber('3.2');\n     * // => 3.2\n     */\n    function toNumber(value) {\n      if (typeof value == 'number') {\n        return value;\n      }\n      if (isSymbol(value)) {\n        return NAN;\n      }\n      if (isObject(value)) {\n        var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n        value = isObject(other) ? (other + '') : other;\n      }\n      if (typeof value != 'string') {\n        return value === 0 ? value : +value;\n      }\n      value = baseTrim(value);\n      var isBinary = reIsBinary.test(value);\n      return (isBinary || reIsOctal.test(value))\n        ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n        : (reIsBadHex.test(value) ? NAN : +value);\n    }\n\n    /**\n     * Converts `value` to a plain object flattening inherited enumerable string\n     * keyed properties of `value` to own properties of the plain object.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {Object} Returns the converted plain object.\n     * @example\n     *\n     * function Foo() {\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.assign({ 'a': 1 }, new Foo);\n     * // => { 'a': 1, 'b': 2 }\n     *\n     * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n     * // => { 'a': 1, 'b': 2, 'c': 3 }\n     */\n    function toPlainObject(value) {\n      return copyObject(value, keysIn(value));\n    }\n\n    /**\n     * Converts `value` to a safe integer. A safe integer can be compared and\n     * represented correctly.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {number} Returns the converted integer.\n     * @example\n     *\n     * _.toSafeInteger(3.2);\n     * // => 3\n     *\n     * _.toSafeInteger(Number.MIN_VALUE);\n     * // => 0\n     *\n     * _.toSafeInteger(Infinity);\n     * // => 9007199254740991\n     *\n     * _.toSafeInteger('3.2');\n     * // => 3\n     */\n    function toSafeInteger(value) {\n      return value\n        ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\n        : (value === 0 ? value : 0);\n    }\n\n    /**\n     * Converts `value` to a string. An empty string is returned for `null`\n     * and `undefined` values. The sign of `-0` is preserved.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {string} Returns the converted string.\n     * @example\n     *\n     * _.toString(null);\n     * // => ''\n     *\n     * _.toString(-0);\n     * // => '-0'\n     *\n     * _.toString([1, 2, 3]);\n     * // => '1,2,3'\n     */\n    function toString(value) {\n      return value == null ? '' : baseToString(value);\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Assigns own enumerable string keyed properties of source objects to the\n     * destination object. Source objects are applied from left to right.\n     * Subsequent sources overwrite property assignments of previous sources.\n     *\n     * **Note:** This method mutates `object` and is loosely based on\n     * [`Object.assign`](https://mdn.io/Object/assign).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.10.0\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} [sources] The source objects.\n     * @returns {Object} Returns `object`.\n     * @see _.assignIn\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     * }\n     *\n     * function Bar() {\n     *   this.c = 3;\n     * }\n     *\n     * Foo.prototype.b = 2;\n     * Bar.prototype.d = 4;\n     *\n     * _.assign({ 'a': 0 }, new Foo, new Bar);\n     * // => { 'a': 1, 'c': 3 }\n     */\n    var assign = createAssigner(function(object, source) {\n      if (isPrototype(source) || isArrayLike(source)) {\n        copyObject(source, keys(source), object);\n        return;\n      }\n      for (var key in source) {\n        if (hasOwnProperty.call(source, key)) {\n          assignValue(object, key, source[key]);\n        }\n      }\n    });\n\n    /**\n     * This method is like `_.assign` except that it iterates over own and\n     * inherited source properties.\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @alias extend\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} [sources] The source objects.\n     * @returns {Object} Returns `object`.\n     * @see _.assign\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     * }\n     *\n     * function Bar() {\n     *   this.c = 3;\n     * }\n     *\n     * Foo.prototype.b = 2;\n     * Bar.prototype.d = 4;\n     *\n     * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n     * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n     */\n    var assignIn = createAssigner(function(object, source) {\n      copyObject(source, keysIn(source), object);\n    });\n\n    /**\n     * This method is like `_.assignIn` except that it accepts `customizer`\n     * which is invoked to produce the assigned values. If `customizer` returns\n     * `undefined`, assignment is handled by the method instead. The `customizer`\n     * is invoked with five arguments: (objValue, srcValue, key, object, source).\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @alias extendWith\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} sources The source objects.\n     * @param {Function} [customizer] The function to customize assigned values.\n     * @returns {Object} Returns `object`.\n     * @see _.assignWith\n     * @example\n     *\n     * function customizer(objValue, srcValue) {\n     *   return _.isUndefined(objValue) ? srcValue : objValue;\n     * }\n     *\n     * var defaults = _.partialRight(_.assignInWith, customizer);\n     *\n     * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n     * // => { 'a': 1, 'b': 2 }\n     */\n    var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n      copyObject(source, keysIn(source), object, customizer);\n    });\n\n    /**\n     * This method is like `_.assign` except that it accepts `customizer`\n     * which is invoked to produce the assigned values. If `customizer` returns\n     * `undefined`, assignment is handled by the method instead. The `customizer`\n     * is invoked with five arguments: (objValue, srcValue, key, object, source).\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} sources The source objects.\n     * @param {Function} [customizer] The function to customize assigned values.\n     * @returns {Object} Returns `object`.\n     * @see _.assignInWith\n     * @example\n     *\n     * function customizer(objValue, srcValue) {\n     *   return _.isUndefined(objValue) ? srcValue : objValue;\n     * }\n     *\n     * var defaults = _.partialRight(_.assignWith, customizer);\n     *\n     * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n     * // => { 'a': 1, 'b': 2 }\n     */\n    var assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n      copyObject(source, keys(source), object, customizer);\n    });\n\n    /**\n     * Creates an array of values corresponding to `paths` of `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.0.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {...(string|string[])} [paths] The property paths to pick.\n     * @returns {Array} Returns the picked values.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n     *\n     * _.at(object, ['a[0].b.c', 'a[1]']);\n     * // => [3, 4]\n     */\n    var at = flatRest(baseAt);\n\n    /**\n     * Creates an object that inherits from the `prototype` object. If a\n     * `properties` object is given, its own enumerable string keyed properties\n     * are assigned to the created object.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.3.0\n     * @category Object\n     * @param {Object} prototype The object to inherit from.\n     * @param {Object} [properties] The properties to assign to the object.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * function Shape() {\n     *   this.x = 0;\n     *   this.y = 0;\n     * }\n     *\n     * function Circle() {\n     *   Shape.call(this);\n     * }\n     *\n     * Circle.prototype = _.create(Shape.prototype, {\n     *   'constructor': Circle\n     * });\n     *\n     * var circle = new Circle;\n     * circle instanceof Circle;\n     * // => true\n     *\n     * circle instanceof Shape;\n     * // => true\n     */\n    function create(prototype, properties) {\n      var result = baseCreate(prototype);\n      return properties == null ? result : baseAssign(result, properties);\n    }\n\n    /**\n     * Assigns own and inherited enumerable string keyed properties of source\n     * objects to the destination object for all destination properties that\n     * resolve to `undefined`. Source objects are applied from left to right.\n     * Once a property is set, additional values of the same property are ignored.\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} [sources] The source objects.\n     * @returns {Object} Returns `object`.\n     * @see _.defaultsDeep\n     * @example\n     *\n     * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n     * // => { 'a': 1, 'b': 2 }\n     */\n    var defaults = baseRest(function(object, sources) {\n      object = Object(object);\n\n      var index = -1;\n      var length = sources.length;\n      var guard = length > 2 ? sources[2] : undefined;\n\n      if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n        length = 1;\n      }\n\n      while (++index < length) {\n        var source = sources[index];\n        var props = keysIn(source);\n        var propsIndex = -1;\n        var propsLength = props.length;\n\n        while (++propsIndex < propsLength) {\n          var key = props[propsIndex];\n          var value = object[key];\n\n          if (value === undefined ||\n              (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n            object[key] = source[key];\n          }\n        }\n      }\n\n      return object;\n    });\n\n    /**\n     * This method is like `_.defaults` except that it recursively assigns\n     * default properties.\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.10.0\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} [sources] The source objects.\n     * @returns {Object} Returns `object`.\n     * @see _.defaults\n     * @example\n     *\n     * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n     * // => { 'a': { 'b': 2, 'c': 3 } }\n     */\n    var defaultsDeep = baseRest(function(args) {\n      args.push(undefined, customDefaultsMerge);\n      return apply(mergeWith, undefined, args);\n    });\n\n    /**\n     * This method is like `_.find` except that it returns the key of the first\n     * element `predicate` returns truthy for instead of the element itself.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.1.0\n     * @category Object\n     * @param {Object} object The object to inspect.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {string|undefined} Returns the key of the matched element,\n     *  else `undefined`.\n     * @example\n     *\n     * var users = {\n     *   'barney':  { 'age': 36, 'active': true },\n     *   'fred':    { 'age': 40, 'active': false },\n     *   'pebbles': { 'age': 1,  'active': true }\n     * };\n     *\n     * _.findKey(users, function(o) { return o.age < 40; });\n     * // => 'barney' (iteration order is not guaranteed)\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.findKey(users, { 'age': 1, 'active': true });\n     * // => 'pebbles'\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.findKey(users, ['active', false]);\n     * // => 'fred'\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.findKey(users, 'active');\n     * // => 'barney'\n     */\n    function findKey(object, predicate) {\n      return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n    }\n\n    /**\n     * This method is like `_.findKey` except that it iterates over elements of\n     * a collection in the opposite order.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Object\n     * @param {Object} object The object to inspect.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {string|undefined} Returns the key of the matched element,\n     *  else `undefined`.\n     * @example\n     *\n     * var users = {\n     *   'barney':  { 'age': 36, 'active': true },\n     *   'fred':    { 'age': 40, 'active': false },\n     *   'pebbles': { 'age': 1,  'active': true }\n     * };\n     *\n     * _.findLastKey(users, function(o) { return o.age < 40; });\n     * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.findLastKey(users, { 'age': 36, 'active': true });\n     * // => 'barney'\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.findLastKey(users, ['active', false]);\n     * // => 'fred'\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.findLastKey(users, 'active');\n     * // => 'pebbles'\n     */\n    function findLastKey(object, predicate) {\n      return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n    }\n\n    /**\n     * Iterates over own and inherited enumerable string keyed properties of an\n     * object and invokes `iteratee` for each property. The iteratee is invoked\n     * with three arguments: (value, key, object). Iteratee functions may exit\n     * iteration early by explicitly returning `false`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.3.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Object} Returns `object`.\n     * @see _.forInRight\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.forIn(new Foo, function(value, key) {\n     *   console.log(key);\n     * });\n     * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n     */\n    function forIn(object, iteratee) {\n      return object == null\n        ? object\n        : baseFor(object, getIteratee(iteratee, 3), keysIn);\n    }\n\n    /**\n     * This method is like `_.forIn` except that it iterates over properties of\n     * `object` in the opposite order.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Object} Returns `object`.\n     * @see _.forIn\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.forInRight(new Foo, function(value, key) {\n     *   console.log(key);\n     * });\n     * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n     */\n    function forInRight(object, iteratee) {\n      return object == null\n        ? object\n        : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n    }\n\n    /**\n     * Iterates over own enumerable string keyed properties of an object and\n     * invokes `iteratee` for each property. The iteratee is invoked with three\n     * arguments: (value, key, object). Iteratee functions may exit iteration\n     * early by explicitly returning `false`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.3.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Object} Returns `object`.\n     * @see _.forOwnRight\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.forOwn(new Foo, function(value, key) {\n     *   console.log(key);\n     * });\n     * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n     */\n    function forOwn(object, iteratee) {\n      return object && baseForOwn(object, getIteratee(iteratee, 3));\n    }\n\n    /**\n     * This method is like `_.forOwn` except that it iterates over properties of\n     * `object` in the opposite order.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Object} Returns `object`.\n     * @see _.forOwn\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.forOwnRight(new Foo, function(value, key) {\n     *   console.log(key);\n     * });\n     * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n     */\n    function forOwnRight(object, iteratee) {\n      return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n    }\n\n    /**\n     * Creates an array of function property names from own enumerable properties\n     * of `object`.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The object to inspect.\n     * @returns {Array} Returns the function names.\n     * @see _.functionsIn\n     * @example\n     *\n     * function Foo() {\n     *   this.a = _.constant('a');\n     *   this.b = _.constant('b');\n     * }\n     *\n     * Foo.prototype.c = _.constant('c');\n     *\n     * _.functions(new Foo);\n     * // => ['a', 'b']\n     */\n    function functions(object) {\n      return object == null ? [] : baseFunctions(object, keys(object));\n    }\n\n    /**\n     * Creates an array of function property names from own and inherited\n     * enumerable properties of `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The object to inspect.\n     * @returns {Array} Returns the function names.\n     * @see _.functions\n     * @example\n     *\n     * function Foo() {\n     *   this.a = _.constant('a');\n     *   this.b = _.constant('b');\n     * }\n     *\n     * Foo.prototype.c = _.constant('c');\n     *\n     * _.functionsIn(new Foo);\n     * // => ['a', 'b', 'c']\n     */\n    function functionsIn(object) {\n      return object == null ? [] : baseFunctions(object, keysIn(object));\n    }\n\n    /**\n     * Gets the value at `path` of `object`. If the resolved value is\n     * `undefined`, the `defaultValue` is returned in its place.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.7.0\n     * @category Object\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path of the property to get.\n     * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n     * @returns {*} Returns the resolved value.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n     *\n     * _.get(object, 'a[0].b.c');\n     * // => 3\n     *\n     * _.get(object, ['a', '0', 'b', 'c']);\n     * // => 3\n     *\n     * _.get(object, 'a.b.c', 'default');\n     * // => 'default'\n     */\n    function get(object, path, defaultValue) {\n      var result = object == null ? undefined : baseGet(object, path);\n      return result === undefined ? defaultValue : result;\n    }\n\n    /**\n     * Checks if `path` is a direct property of `object`.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path to check.\n     * @returns {boolean} Returns `true` if `path` exists, else `false`.\n     * @example\n     *\n     * var object = { 'a': { 'b': 2 } };\n     * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n     *\n     * _.has(object, 'a');\n     * // => true\n     *\n     * _.has(object, 'a.b');\n     * // => true\n     *\n     * _.has(object, ['a', 'b']);\n     * // => true\n     *\n     * _.has(other, 'a');\n     * // => false\n     */\n    function has(object, path) {\n      return object != null && hasPath(object, path, baseHas);\n    }\n\n    /**\n     * Checks if `path` is a direct or inherited property of `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path to check.\n     * @returns {boolean} Returns `true` if `path` exists, else `false`.\n     * @example\n     *\n     * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n     *\n     * _.hasIn(object, 'a');\n     * // => true\n     *\n     * _.hasIn(object, 'a.b');\n     * // => true\n     *\n     * _.hasIn(object, ['a', 'b']);\n     * // => true\n     *\n     * _.hasIn(object, 'b');\n     * // => false\n     */\n    function hasIn(object, path) {\n      return object != null && hasPath(object, path, baseHasIn);\n    }\n\n    /**\n     * Creates an object composed of the inverted keys and values of `object`.\n     * If `object` contains duplicate values, subsequent values overwrite\n     * property assignments of previous values.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.7.0\n     * @category Object\n     * @param {Object} object The object to invert.\n     * @returns {Object} Returns the new inverted object.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': 2, 'c': 1 };\n     *\n     * _.invert(object);\n     * // => { '1': 'c', '2': 'b' }\n     */\n    var invert = createInverter(function(result, value, key) {\n      if (value != null &&\n          typeof value.toString != 'function') {\n        value = nativeObjectToString.call(value);\n      }\n\n      result[value] = key;\n    }, constant(identity));\n\n    /**\n     * This method is like `_.invert` except that the inverted object is generated\n     * from the results of running each element of `object` thru `iteratee`. The\n     * corresponding inverted value of each inverted key is an array of keys\n     * responsible for generating the inverted value. The iteratee is invoked\n     * with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.1.0\n     * @category Object\n     * @param {Object} object The object to invert.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Object} Returns the new inverted object.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': 2, 'c': 1 };\n     *\n     * _.invertBy(object);\n     * // => { '1': ['a', 'c'], '2': ['b'] }\n     *\n     * _.invertBy(object, function(value) {\n     *   return 'group' + value;\n     * });\n     * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n     */\n    var invertBy = createInverter(function(result, value, key) {\n      if (value != null &&\n          typeof value.toString != 'function') {\n        value = nativeObjectToString.call(value);\n      }\n\n      if (hasOwnProperty.call(result, value)) {\n        result[value].push(key);\n      } else {\n        result[value] = [key];\n      }\n    }, getIteratee);\n\n    /**\n     * Invokes the method at `path` of `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path of the method to invoke.\n     * @param {...*} [args] The arguments to invoke the method with.\n     * @returns {*} Returns the result of the invoked method.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n     *\n     * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n     * // => [2, 3]\n     */\n    var invoke = baseRest(baseInvoke);\n\n    /**\n     * Creates an array of the own enumerable property names of `object`.\n     *\n     * **Note:** Non-object values are coerced to objects. See the\n     * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n     * for more details.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property names.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.keys(new Foo);\n     * // => ['a', 'b'] (iteration order is not guaranteed)\n     *\n     * _.keys('hi');\n     * // => ['0', '1']\n     */\n    function keys(object) {\n      return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n    }\n\n    /**\n     * Creates an array of the own and inherited enumerable property names of `object`.\n     *\n     * **Note:** Non-object values are coerced to objects.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Object\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property names.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.keysIn(new Foo);\n     * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n     */\n    function keysIn(object) {\n      return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n    }\n\n    /**\n     * The opposite of `_.mapValues`; this method creates an object with the\n     * same values as `object` and keys generated by running each own enumerable\n     * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n     * with three arguments: (value, key, object).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.8.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Object} Returns the new mapped object.\n     * @see _.mapValues\n     * @example\n     *\n     * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n     *   return key + value;\n     * });\n     * // => { 'a1': 1, 'b2': 2 }\n     */\n    function mapKeys(object, iteratee) {\n      var result = {};\n      iteratee = getIteratee(iteratee, 3);\n\n      baseForOwn(object, function(value, key, object) {\n        baseAssignValue(result, iteratee(value, key, object), value);\n      });\n      return result;\n    }\n\n    /**\n     * Creates an object with the same keys as `object` and values generated\n     * by running each own enumerable string keyed property of `object` thru\n     * `iteratee`. The iteratee is invoked with three arguments:\n     * (value, key, object).\n     *\n     * @static\n     * @memberOf _\n     * @since 2.4.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Object} Returns the new mapped object.\n     * @see _.mapKeys\n     * @example\n     *\n     * var users = {\n     *   'fred':    { 'user': 'fred',    'age': 40 },\n     *   'pebbles': { 'user': 'pebbles', 'age': 1 }\n     * };\n     *\n     * _.mapValues(users, function(o) { return o.age; });\n     * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.mapValues(users, 'age');\n     * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n     */\n    function mapValues(object, iteratee) {\n      var result = {};\n      iteratee = getIteratee(iteratee, 3);\n\n      baseForOwn(object, function(value, key, object) {\n        baseAssignValue(result, key, iteratee(value, key, object));\n      });\n      return result;\n    }\n\n    /**\n     * This method is like `_.assign` except that it recursively merges own and\n     * inherited enumerable string keyed properties of source objects into the\n     * destination object. Source properties that resolve to `undefined` are\n     * skipped if a destination value exists. Array and plain object properties\n     * are merged recursively. Other objects and value types are overridden by\n     * assignment. Source objects are applied from left to right. Subsequent\n     * sources overwrite property assignments of previous sources.\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.5.0\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} [sources] The source objects.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * var object = {\n     *   'a': [{ 'b': 2 }, { 'd': 4 }]\n     * };\n     *\n     * var other = {\n     *   'a': [{ 'c': 3 }, { 'e': 5 }]\n     * };\n     *\n     * _.merge(object, other);\n     * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n     */\n    var merge = createAssigner(function(object, source, srcIndex) {\n      baseMerge(object, source, srcIndex);\n    });\n\n    /**\n     * This method is like `_.merge` except that it accepts `customizer` which\n     * is invoked to produce the merged values of the destination and source\n     * properties. If `customizer` returns `undefined`, merging is handled by the\n     * method instead. The `customizer` is invoked with six arguments:\n     * (objValue, srcValue, key, object, source, stack).\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} sources The source objects.\n     * @param {Function} customizer The function to customize assigned values.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * function customizer(objValue, srcValue) {\n     *   if (_.isArray(objValue)) {\n     *     return objValue.concat(srcValue);\n     *   }\n     * }\n     *\n     * var object = { 'a': [1], 'b': [2] };\n     * var other = { 'a': [3], 'b': [4] };\n     *\n     * _.mergeWith(object, other, customizer);\n     * // => { 'a': [1, 3], 'b': [2, 4] }\n     */\n    var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n      baseMerge(object, source, srcIndex, customizer);\n    });\n\n    /**\n     * The opposite of `_.pick`; this method creates an object composed of the\n     * own and inherited enumerable property paths of `object` that are not omitted.\n     *\n     * **Note:** This method is considerably slower than `_.pick`.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The source object.\n     * @param {...(string|string[])} [paths] The property paths to omit.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': '2', 'c': 3 };\n     *\n     * _.omit(object, ['a', 'c']);\n     * // => { 'b': '2' }\n     */\n    var omit = flatRest(function(object, paths) {\n      var result = {};\n      if (object == null) {\n        return result;\n      }\n      var isDeep = false;\n      paths = arrayMap(paths, function(path) {\n        path = castPath(path, object);\n        isDeep || (isDeep = path.length > 1);\n        return path;\n      });\n      copyObject(object, getAllKeysIn(object), result);\n      if (isDeep) {\n        result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n      }\n      var length = paths.length;\n      while (length--) {\n        baseUnset(result, paths[length]);\n      }\n      return result;\n    });\n\n    /**\n     * The opposite of `_.pickBy`; this method creates an object composed of\n     * the own and inherited enumerable string keyed properties of `object` that\n     * `predicate` doesn't return truthy for. The predicate is invoked with two\n     * arguments: (value, key).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The source object.\n     * @param {Function} [predicate=_.identity] The function invoked per property.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': '2', 'c': 3 };\n     *\n     * _.omitBy(object, _.isNumber);\n     * // => { 'b': '2' }\n     */\n    function omitBy(object, predicate) {\n      return pickBy(object, negate(getIteratee(predicate)));\n    }\n\n    /**\n     * Creates an object composed of the picked `object` properties.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The source object.\n     * @param {...(string|string[])} [paths] The property paths to pick.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': '2', 'c': 3 };\n     *\n     * _.pick(object, ['a', 'c']);\n     * // => { 'a': 1, 'c': 3 }\n     */\n    var pick = flatRest(function(object, paths) {\n      return object == null ? {} : basePick(object, paths);\n    });\n\n    /**\n     * Creates an object composed of the `object` properties `predicate` returns\n     * truthy for. The predicate is invoked with two arguments: (value, key).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The source object.\n     * @param {Function} [predicate=_.identity] The function invoked per property.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': '2', 'c': 3 };\n     *\n     * _.pickBy(object, _.isNumber);\n     * // => { 'a': 1, 'c': 3 }\n     */\n    function pickBy(object, predicate) {\n      if (object == null) {\n        return {};\n      }\n      var props = arrayMap(getAllKeysIn(object), function(prop) {\n        return [prop];\n      });\n      predicate = getIteratee(predicate);\n      return basePickBy(object, props, function(value, path) {\n        return predicate(value, path[0]);\n      });\n    }\n\n    /**\n     * This method is like `_.get` except that if the resolved value is a\n     * function it's invoked with the `this` binding of its parent object and\n     * its result is returned.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path of the property to resolve.\n     * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n     * @returns {*} Returns the resolved value.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n     *\n     * _.result(object, 'a[0].b.c1');\n     * // => 3\n     *\n     * _.result(object, 'a[0].b.c2');\n     * // => 4\n     *\n     * _.result(object, 'a[0].b.c3', 'default');\n     * // => 'default'\n     *\n     * _.result(object, 'a[0].b.c3', _.constant('default'));\n     * // => 'default'\n     */\n    function result(object, path, defaultValue) {\n      path = castPath(path, object);\n\n      var index = -1,\n          length = path.length;\n\n      // Ensure the loop is entered when path is empty.\n      if (!length) {\n        length = 1;\n        object = undefined;\n      }\n      while (++index < length) {\n        var value = object == null ? undefined : object[toKey(path[index])];\n        if (value === undefined) {\n          index = length;\n          value = defaultValue;\n        }\n        object = isFunction(value) ? value.call(object) : value;\n      }\n      return object;\n    }\n\n    /**\n     * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n     * it's created. Arrays are created for missing index properties while objects\n     * are created for all other missing properties. Use `_.setWith` to customize\n     * `path` creation.\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.7.0\n     * @category Object\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to set.\n     * @param {*} value The value to set.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n     *\n     * _.set(object, 'a[0].b.c', 4);\n     * console.log(object.a[0].b.c);\n     * // => 4\n     *\n     * _.set(object, ['x', '0', 'y', 'z'], 5);\n     * console.log(object.x[0].y.z);\n     * // => 5\n     */\n    function set(object, path, value) {\n      return object == null ? object : baseSet(object, path, value);\n    }\n\n    /**\n     * This method is like `_.set` except that it accepts `customizer` which is\n     * invoked to produce the objects of `path`.  If `customizer` returns `undefined`\n     * path creation is handled by the method instead. The `customizer` is invoked\n     * with three arguments: (nsValue, key, nsObject).\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to set.\n     * @param {*} value The value to set.\n     * @param {Function} [customizer] The function to customize assigned values.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * var object = {};\n     *\n     * _.setWith(object, '[0][1]', 'a', Object);\n     * // => { '0': { '1': 'a' } }\n     */\n    function setWith(object, path, value, customizer) {\n      customizer = typeof customizer == 'function' ? customizer : undefined;\n      return object == null ? object : baseSet(object, path, value, customizer);\n    }\n\n    /**\n     * Creates an array of own enumerable string keyed-value pairs for `object`\n     * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n     * entries are returned.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @alias entries\n     * @category Object\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the key-value pairs.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.toPairs(new Foo);\n     * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n     */\n    var toPairs = createToPairs(keys);\n\n    /**\n     * Creates an array of own and inherited enumerable string keyed-value pairs\n     * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n     * or set, its entries are returned.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @alias entriesIn\n     * @category Object\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the key-value pairs.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.toPairsIn(new Foo);\n     * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n     */\n    var toPairsIn = createToPairs(keysIn);\n\n    /**\n     * An alternative to `_.reduce`; this method transforms `object` to a new\n     * `accumulator` object which is the result of running each of its own\n     * enumerable string keyed properties thru `iteratee`, with each invocation\n     * potentially mutating the `accumulator` object. If `accumulator` is not\n     * provided, a new object with the same `[[Prototype]]` will be used. The\n     * iteratee is invoked with four arguments: (accumulator, value, key, object).\n     * Iteratee functions may exit iteration early by explicitly returning `false`.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.3.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @param {*} [accumulator] The custom accumulator value.\n     * @returns {*} Returns the accumulated value.\n     * @example\n     *\n     * _.transform([2, 3, 4], function(result, n) {\n     *   result.push(n *= n);\n     *   return n % 2 == 0;\n     * }, []);\n     * // => [4, 9]\n     *\n     * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n     *   (result[value] || (result[value] = [])).push(key);\n     * }, {});\n     * // => { '1': ['a', 'c'], '2': ['b'] }\n     */\n    function transform(object, iteratee, accumulator) {\n      var isArr = isArray(object),\n          isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n      iteratee = getIteratee(iteratee, 4);\n      if (accumulator == null) {\n        var Ctor = object && object.constructor;\n        if (isArrLike) {\n          accumulator = isArr ? new Ctor : [];\n        }\n        else if (isObject(object)) {\n          accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n        }\n        else {\n          accumulator = {};\n        }\n      }\n      (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n        return iteratee(accumulator, value, index, object);\n      });\n      return accumulator;\n    }\n\n    /**\n     * Removes the property at `path` of `object`.\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to unset.\n     * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n     * _.unset(object, 'a[0].b.c');\n     * // => true\n     *\n     * console.log(object);\n     * // => { 'a': [{ 'b': {} }] };\n     *\n     * _.unset(object, ['a', '0', 'b', 'c']);\n     * // => true\n     *\n     * console.log(object);\n     * // => { 'a': [{ 'b': {} }] };\n     */\n    function unset(object, path) {\n      return object == null ? true : baseUnset(object, path);\n    }\n\n    /**\n     * This method is like `_.set` except that accepts `updater` to produce the\n     * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n     * is invoked with one argument: (value).\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.6.0\n     * @category Object\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to set.\n     * @param {Function} updater The function to produce the updated value.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n     *\n     * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n     * console.log(object.a[0].b.c);\n     * // => 9\n     *\n     * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n     * console.log(object.x[0].y.z);\n     * // => 0\n     */\n    function update(object, path, updater) {\n      return object == null ? object : baseUpdate(object, path, castFunction(updater));\n    }\n\n    /**\n     * This method is like `_.update` except that it accepts `customizer` which is\n     * invoked to produce the objects of `path`.  If `customizer` returns `undefined`\n     * path creation is handled by the method instead. The `customizer` is invoked\n     * with three arguments: (nsValue, key, nsObject).\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.6.0\n     * @category Object\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to set.\n     * @param {Function} updater The function to produce the updated value.\n     * @param {Function} [customizer] The function to customize assigned values.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * var object = {};\n     *\n     * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n     * // => { '0': { '1': 'a' } }\n     */\n    function updateWith(object, path, updater, customizer) {\n      customizer = typeof customizer == 'function' ? customizer : undefined;\n      return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n    }\n\n    /**\n     * Creates an array of the own enumerable string keyed property values of `object`.\n     *\n     * **Note:** Non-object values are coerced to objects.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property values.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.values(new Foo);\n     * // => [1, 2] (iteration order is not guaranteed)\n     *\n     * _.values('hi');\n     * // => ['h', 'i']\n     */\n    function values(object) {\n      return object == null ? [] : baseValues(object, keys(object));\n    }\n\n    /**\n     * Creates an array of the own and inherited enumerable string keyed property\n     * values of `object`.\n     *\n     * **Note:** Non-object values are coerced to objects.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Object\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property values.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.valuesIn(new Foo);\n     * // => [1, 2, 3] (iteration order is not guaranteed)\n     */\n    function valuesIn(object) {\n      return object == null ? [] : baseValues(object, keysIn(object));\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Clamps `number` within the inclusive `lower` and `upper` bounds.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Number\n     * @param {number} number The number to clamp.\n     * @param {number} [lower] The lower bound.\n     * @param {number} upper The upper bound.\n     * @returns {number} Returns the clamped number.\n     * @example\n     *\n     * _.clamp(-10, -5, 5);\n     * // => -5\n     *\n     * _.clamp(10, -5, 5);\n     * // => 5\n     */\n    function clamp(number, lower, upper) {\n      if (upper === undefined) {\n        upper = lower;\n        lower = undefined;\n      }\n      if (upper !== undefined) {\n        upper = toNumber(upper);\n        upper = upper === upper ? upper : 0;\n      }\n      if (lower !== undefined) {\n        lower = toNumber(lower);\n        lower = lower === lower ? lower : 0;\n      }\n      return baseClamp(toNumber(number), lower, upper);\n    }\n\n    /**\n     * Checks if `n` is between `start` and up to, but not including, `end`. If\n     * `end` is not specified, it's set to `start` with `start` then set to `0`.\n     * If `start` is greater than `end` the params are swapped to support\n     * negative ranges.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.3.0\n     * @category Number\n     * @param {number} number The number to check.\n     * @param {number} [start=0] The start of the range.\n     * @param {number} end The end of the range.\n     * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n     * @see _.range, _.rangeRight\n     * @example\n     *\n     * _.inRange(3, 2, 4);\n     * // => true\n     *\n     * _.inRange(4, 8);\n     * // => true\n     *\n     * _.inRange(4, 2);\n     * // => false\n     *\n     * _.inRange(2, 2);\n     * // => false\n     *\n     * _.inRange(1.2, 2);\n     * // => true\n     *\n     * _.inRange(5.2, 4);\n     * // => false\n     *\n     * _.inRange(-3, -2, -6);\n     * // => true\n     */\n    function inRange(number, start, end) {\n      start = toFinite(start);\n      if (end === undefined) {\n        end = start;\n        start = 0;\n      } else {\n        end = toFinite(end);\n      }\n      number = toNumber(number);\n      return baseInRange(number, start, end);\n    }\n\n    /**\n     * Produces a random number between the inclusive `lower` and `upper` bounds.\n     * If only one argument is provided a number between `0` and the given number\n     * is returned. If `floating` is `true`, or either `lower` or `upper` are\n     * floats, a floating-point number is returned instead of an integer.\n     *\n     * **Note:** JavaScript follows the IEEE-754 standard for resolving\n     * floating-point values which can produce unexpected results.\n     *\n     * **Note:** If `lower` is greater than `upper`, the values are swapped.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.7.0\n     * @category Number\n     * @param {number} [lower=0] The lower bound.\n     * @param {number} [upper=1] The upper bound.\n     * @param {boolean} [floating] Specify returning a floating-point number.\n     * @returns {number} Returns the random number.\n     * @example\n     *\n     * _.random(0, 5);\n     * // => an integer between 0 and 5\n     *\n     * // when lower is greater than upper the values are swapped\n     * _.random(5, 0);\n     * // => an integer between 0 and 5\n     *\n     * _.random(5);\n     * // => also an integer between 0 and 5\n     *\n     * _.random(-5);\n     * // => an integer between -5 and 0\n     *\n     * _.random(5, true);\n     * // => a floating-point number between 0 and 5\n     *\n     * _.random(1.2, 5.2);\n     * // => a floating-point number between 1.2 and 5.2\n     */\n    function random(lower, upper, floating) {\n      if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n        upper = floating = undefined;\n      }\n      if (floating === undefined) {\n        if (typeof upper == 'boolean') {\n          floating = upper;\n          upper = undefined;\n        }\n        else if (typeof lower == 'boolean') {\n          floating = lower;\n          lower = undefined;\n        }\n      }\n      if (lower === undefined && upper === undefined) {\n        lower = 0;\n        upper = 1;\n      }\n      else {\n        lower = toFinite(lower);\n        if (upper === undefined) {\n          upper = lower;\n          lower = 0;\n        } else {\n          upper = toFinite(upper);\n        }\n      }\n      if (lower > upper) {\n        var temp = lower;\n        lower = upper;\n        upper = temp;\n      }\n      if (floating || lower % 1 || upper % 1) {\n        var rand = nativeRandom();\n        return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n      }\n      return baseRandom(lower, upper);\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the camel cased string.\n     * @example\n     *\n     * _.camelCase('Foo Bar');\n     * // => 'fooBar'\n     *\n     * _.camelCase('--foo-bar--');\n     * // => 'fooBar'\n     *\n     * _.camelCase('__FOO_BAR__');\n     * // => 'fooBar'\n     */\n    var camelCase = createCompounder(function(result, word, index) {\n      word = word.toLowerCase();\n      return result + (index ? capitalize(word) : word);\n    });\n\n    /**\n     * Converts the first character of `string` to upper case and the remaining\n     * to lower case.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to capitalize.\n     * @returns {string} Returns the capitalized string.\n     * @example\n     *\n     * _.capitalize('FRED');\n     * // => 'Fred'\n     */\n    function capitalize(string) {\n      return upperFirst(toString(string).toLowerCase());\n    }\n\n    /**\n     * Deburrs `string` by converting\n     * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n     * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n     * letters to basic Latin letters and removing\n     * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to deburr.\n     * @returns {string} Returns the deburred string.\n     * @example\n     *\n     * _.deburr('déjà vu');\n     * // => 'deja vu'\n     */\n    function deburr(string) {\n      string = toString(string);\n      return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n    }\n\n    /**\n     * Checks if `string` ends with the given target string.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to inspect.\n     * @param {string} [target] The string to search for.\n     * @param {number} [position=string.length] The position to search up to.\n     * @returns {boolean} Returns `true` if `string` ends with `target`,\n     *  else `false`.\n     * @example\n     *\n     * _.endsWith('abc', 'c');\n     * // => true\n     *\n     * _.endsWith('abc', 'b');\n     * // => false\n     *\n     * _.endsWith('abc', 'b', 2);\n     * // => true\n     */\n    function endsWith(string, target, position) {\n      string = toString(string);\n      target = baseToString(target);\n\n      var length = string.length;\n      position = position === undefined\n        ? length\n        : baseClamp(toInteger(position), 0, length);\n\n      var end = position;\n      position -= target.length;\n      return position >= 0 && string.slice(position, end) == target;\n    }\n\n    /**\n     * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n     * corresponding HTML entities.\n     *\n     * **Note:** No other characters are escaped. To escape additional\n     * characters use a third-party library like [_he_](https://mths.be/he).\n     *\n     * Though the \">\" character is escaped for symmetry, characters like\n     * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n     * unless they're part of a tag or unquoted attribute value. See\n     * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n     * (under \"semi-related fun fact\") for more details.\n     *\n     * When working with HTML you should always\n     * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n     * XSS vectors.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category String\n     * @param {string} [string=''] The string to escape.\n     * @returns {string} Returns the escaped string.\n     * @example\n     *\n     * _.escape('fred, barney, & pebbles');\n     * // => 'fred, barney, &amp; pebbles'\n     */\n    function escape(string) {\n      string = toString(string);\n      return (string && reHasUnescapedHtml.test(string))\n        ? string.replace(reUnescapedHtml, escapeHtmlChar)\n        : string;\n    }\n\n    /**\n     * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n     * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to escape.\n     * @returns {string} Returns the escaped string.\n     * @example\n     *\n     * _.escapeRegExp('[lodash](https://lodash.com/)');\n     * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n     */\n    function escapeRegExp(string) {\n      string = toString(string);\n      return (string && reHasRegExpChar.test(string))\n        ? string.replace(reRegExpChar, '\\\\$&')\n        : string;\n    }\n\n    /**\n     * Converts `string` to\n     * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the kebab cased string.\n     * @example\n     *\n     * _.kebabCase('Foo Bar');\n     * // => 'foo-bar'\n     *\n     * _.kebabCase('fooBar');\n     * // => 'foo-bar'\n     *\n     * _.kebabCase('__FOO_BAR__');\n     * // => 'foo-bar'\n     */\n    var kebabCase = createCompounder(function(result, word, index) {\n      return result + (index ? '-' : '') + word.toLowerCase();\n    });\n\n    /**\n     * Converts `string`, as space separated words, to lower case.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the lower cased string.\n     * @example\n     *\n     * _.lowerCase('--Foo-Bar--');\n     * // => 'foo bar'\n     *\n     * _.lowerCase('fooBar');\n     * // => 'foo bar'\n     *\n     * _.lowerCase('__FOO_BAR__');\n     * // => 'foo bar'\n     */\n    var lowerCase = createCompounder(function(result, word, index) {\n      return result + (index ? ' ' : '') + word.toLowerCase();\n    });\n\n    /**\n     * Converts the first character of `string` to lower case.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the converted string.\n     * @example\n     *\n     * _.lowerFirst('Fred');\n     * // => 'fred'\n     *\n     * _.lowerFirst('FRED');\n     * // => 'fRED'\n     */\n    var lowerFirst = createCaseFirst('toLowerCase');\n\n    /**\n     * Pads `string` on the left and right sides if it's shorter than `length`.\n     * Padding characters are truncated if they can't be evenly divided by `length`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to pad.\n     * @param {number} [length=0] The padding length.\n     * @param {string} [chars=' '] The string used as padding.\n     * @returns {string} Returns the padded string.\n     * @example\n     *\n     * _.pad('abc', 8);\n     * // => '  abc   '\n     *\n     * _.pad('abc', 8, '_-');\n     * // => '_-abc_-_'\n     *\n     * _.pad('abc', 3);\n     * // => 'abc'\n     */\n    function pad(string, length, chars) {\n      string = toString(string);\n      length = toInteger(length);\n\n      var strLength = length ? stringSize(string) : 0;\n      if (!length || strLength >= length) {\n        return string;\n      }\n      var mid = (length - strLength) / 2;\n      return (\n        createPadding(nativeFloor(mid), chars) +\n        string +\n        createPadding(nativeCeil(mid), chars)\n      );\n    }\n\n    /**\n     * Pads `string` on the right side if it's shorter than `length`. Padding\n     * characters are truncated if they exceed `length`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to pad.\n     * @param {number} [length=0] The padding length.\n     * @param {string} [chars=' '] The string used as padding.\n     * @returns {string} Returns the padded string.\n     * @example\n     *\n     * _.padEnd('abc', 6);\n     * // => 'abc   '\n     *\n     * _.padEnd('abc', 6, '_-');\n     * // => 'abc_-_'\n     *\n     * _.padEnd('abc', 3);\n     * // => 'abc'\n     */\n    function padEnd(string, length, chars) {\n      string = toString(string);\n      length = toInteger(length);\n\n      var strLength = length ? stringSize(string) : 0;\n      return (length && strLength < length)\n        ? (string + createPadding(length - strLength, chars))\n        : string;\n    }\n\n    /**\n     * Pads `string` on the left side if it's shorter than `length`. Padding\n     * characters are truncated if they exceed `length`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to pad.\n     * @param {number} [length=0] The padding length.\n     * @param {string} [chars=' '] The string used as padding.\n     * @returns {string} Returns the padded string.\n     * @example\n     *\n     * _.padStart('abc', 6);\n     * // => '   abc'\n     *\n     * _.padStart('abc', 6, '_-');\n     * // => '_-_abc'\n     *\n     * _.padStart('abc', 3);\n     * // => 'abc'\n     */\n    function padStart(string, length, chars) {\n      string = toString(string);\n      length = toInteger(length);\n\n      var strLength = length ? stringSize(string) : 0;\n      return (length && strLength < length)\n        ? (createPadding(length - strLength, chars) + string)\n        : string;\n    }\n\n    /**\n     * Converts `string` to an integer of the specified radix. If `radix` is\n     * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n     * hexadecimal, in which case a `radix` of `16` is used.\n     *\n     * **Note:** This method aligns with the\n     * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.1.0\n     * @category String\n     * @param {string} string The string to convert.\n     * @param {number} [radix=10] The radix to interpret `value` by.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {number} Returns the converted integer.\n     * @example\n     *\n     * _.parseInt('08');\n     * // => 8\n     *\n     * _.map(['6', '08', '10'], _.parseInt);\n     * // => [6, 8, 10]\n     */\n    function parseInt(string, radix, guard) {\n      if (guard || radix == null) {\n        radix = 0;\n      } else if (radix) {\n        radix = +radix;\n      }\n      return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n    }\n\n    /**\n     * Repeats the given string `n` times.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to repeat.\n     * @param {number} [n=1] The number of times to repeat the string.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {string} Returns the repeated string.\n     * @example\n     *\n     * _.repeat('*', 3);\n     * // => '***'\n     *\n     * _.repeat('abc', 2);\n     * // => 'abcabc'\n     *\n     * _.repeat('abc', 0);\n     * // => ''\n     */\n    function repeat(string, n, guard) {\n      if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n        n = 1;\n      } else {\n        n = toInteger(n);\n      }\n      return baseRepeat(toString(string), n);\n    }\n\n    /**\n     * Replaces matches for `pattern` in `string` with `replacement`.\n     *\n     * **Note:** This method is based on\n     * [`String#replace`](https://mdn.io/String/replace).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to modify.\n     * @param {RegExp|string} pattern The pattern to replace.\n     * @param {Function|string} replacement The match replacement.\n     * @returns {string} Returns the modified string.\n     * @example\n     *\n     * _.replace('Hi Fred', 'Fred', 'Barney');\n     * // => 'Hi Barney'\n     */\n    function replace() {\n      var args = arguments,\n          string = toString(args[0]);\n\n      return args.length < 3 ? string : string.replace(args[1], args[2]);\n    }\n\n    /**\n     * Converts `string` to\n     * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the snake cased string.\n     * @example\n     *\n     * _.snakeCase('Foo Bar');\n     * // => 'foo_bar'\n     *\n     * _.snakeCase('fooBar');\n     * // => 'foo_bar'\n     *\n     * _.snakeCase('--FOO-BAR--');\n     * // => 'foo_bar'\n     */\n    var snakeCase = createCompounder(function(result, word, index) {\n      return result + (index ? '_' : '') + word.toLowerCase();\n    });\n\n    /**\n     * Splits `string` by `separator`.\n     *\n     * **Note:** This method is based on\n     * [`String#split`](https://mdn.io/String/split).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to split.\n     * @param {RegExp|string} separator The separator pattern to split by.\n     * @param {number} [limit] The length to truncate results to.\n     * @returns {Array} Returns the string segments.\n     * @example\n     *\n     * _.split('a-b-c', '-', 2);\n     * // => ['a', 'b']\n     */\n    function split(string, separator, limit) {\n      if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n        separator = limit = undefined;\n      }\n      limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n      if (!limit) {\n        return [];\n      }\n      string = toString(string);\n      if (string && (\n            typeof separator == 'string' ||\n            (separator != null && !isRegExp(separator))\n          )) {\n        separator = baseToString(separator);\n        if (!separator && hasUnicode(string)) {\n          return castSlice(stringToArray(string), 0, limit);\n        }\n      }\n      return string.split(separator, limit);\n    }\n\n    /**\n     * Converts `string` to\n     * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.1.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the start cased string.\n     * @example\n     *\n     * _.startCase('--foo-bar--');\n     * // => 'Foo Bar'\n     *\n     * _.startCase('fooBar');\n     * // => 'Foo Bar'\n     *\n     * _.startCase('__FOO_BAR__');\n     * // => 'FOO BAR'\n     */\n    var startCase = createCompounder(function(result, word, index) {\n      return result + (index ? ' ' : '') + upperFirst(word);\n    });\n\n    /**\n     * Checks if `string` starts with the given target string.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to inspect.\n     * @param {string} [target] The string to search for.\n     * @param {number} [position=0] The position to search from.\n     * @returns {boolean} Returns `true` if `string` starts with `target`,\n     *  else `false`.\n     * @example\n     *\n     * _.startsWith('abc', 'a');\n     * // => true\n     *\n     * _.startsWith('abc', 'b');\n     * // => false\n     *\n     * _.startsWith('abc', 'b', 1);\n     * // => true\n     */\n    function startsWith(string, target, position) {\n      string = toString(string);\n      position = position == null\n        ? 0\n        : baseClamp(toInteger(position), 0, string.length);\n\n      target = baseToString(target);\n      return string.slice(position, position + target.length) == target;\n    }\n\n    /**\n     * Creates a compiled template function that can interpolate data properties\n     * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n     * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n     * properties may be accessed as free variables in the template. If a setting\n     * object is given, it takes precedence over `_.templateSettings` values.\n     *\n     * **Security:** `_.template` is insecure and should not be used. It will be\n     * removed in Lodash v5. Avoid untrusted input. See\n     * [threat model](https://github.com/lodash/lodash/blob/main/threat-model.md).\n     *\n     * **Note:** In the development build `_.template` utilizes\n     * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n     * for easier debugging.\n     *\n     * For more information on precompiling templates see\n     * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n     *\n     * For more information on Chrome extension sandboxes see\n     * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category String\n     * @param {string} [string=''] The template string.\n     * @param {Object} [options={}] The options object.\n     * @param {RegExp} [options.escape=_.templateSettings.escape]\n     *  The HTML \"escape\" delimiter.\n     * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n     *  The \"evaluate\" delimiter.\n     * @param {Object} [options.imports=_.templateSettings.imports]\n     *  An object to import into the template as free variables.\n     * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n     *  The \"interpolate\" delimiter.\n     * @param {string} [options.sourceURL='lodash.templateSources[n]']\n     *  The sourceURL of the compiled template.\n     * @param {string} [options.variable='obj']\n     *  The data object variable name.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Function} Returns the compiled template function.\n     * @example\n     *\n     * // Use the \"interpolate\" delimiter to create a compiled template.\n     * var compiled = _.template('hello <%= user %>!');\n     * compiled({ 'user': 'fred' });\n     * // => 'hello fred!'\n     *\n     * // Use the HTML \"escape\" delimiter to escape data property values.\n     * var compiled = _.template('<b><%- value %></b>');\n     * compiled({ 'value': '<script>' });\n     * // => '<b>&lt;script&gt;</b>'\n     *\n     * // Use the \"evaluate\" delimiter to execute JavaScript and generate HTML.\n     * var compiled = _.template('<% _.forEach(users, function(user) { %><li><%- user %></li><% }); %>');\n     * compiled({ 'users': ['fred', 'barney'] });\n     * // => '<li>fred</li><li>barney</li>'\n     *\n     * // Use the internal `print` function in \"evaluate\" delimiters.\n     * var compiled = _.template('<% print(\"hello \" + user); %>!');\n     * compiled({ 'user': 'barney' });\n     * // => 'hello barney!'\n     *\n     * // Use the ES template literal delimiter as an \"interpolate\" delimiter.\n     * // Disable support by replacing the \"interpolate\" delimiter.\n     * var compiled = _.template('hello ${ user }!');\n     * compiled({ 'user': 'pebbles' });\n     * // => 'hello pebbles!'\n     *\n     * // Use backslashes to treat delimiters as plain text.\n     * var compiled = _.template('<%= \"\\\\<%- value %\\\\>\" %>');\n     * compiled({ 'value': 'ignored' });\n     * // => '<%- value %>'\n     *\n     * // Use the `imports` option to import `jQuery` as `jq`.\n     * var text = '<% jq.each(users, function(user) { %><li><%- user %></li><% }); %>';\n     * var compiled = _.template(text, { 'imports': { 'jq': jQuery } });\n     * compiled({ 'users': ['fred', 'barney'] });\n     * // => '<li>fred</li><li>barney</li>'\n     *\n     * // Use the `sourceURL` option to specify a custom sourceURL for the template.\n     * var compiled = _.template('hello <%= user %>!', { 'sourceURL': '/basic/greeting.jst' });\n     * compiled(data);\n     * // => Find the source of \"greeting.jst\" under the Sources tab or Resources panel of the web inspector.\n     *\n     * // Use the `variable` option to ensure a with-statement isn't used in the compiled template.\n     * var compiled = _.template('hi <%= data.user %>!', { 'variable': 'data' });\n     * compiled.source;\n     * // => function(data) {\n     * //   var __t, __p = '';\n     * //   __p += 'hi ' + ((__t = ( data.user )) == null ? '' : __t) + '!';\n     * //   return __p;\n     * // }\n     *\n     * // Use custom template delimiters.\n     * _.templateSettings.interpolate = /{{([\\s\\S]+?)}}/g;\n     * var compiled = _.template('hello {{ user }}!');\n     * compiled({ 'user': 'mustache' });\n     * // => 'hello mustache!'\n     *\n     * // Use the `source` property to inline compiled templates for meaningful\n     * // line numbers in error messages and stack traces.\n     * fs.writeFileSync(path.join(process.cwd(), 'jst.js'), '\\\n     *   var JST = {\\\n     *     \"main\": ' + _.template(mainText).source + '\\\n     *   };\\\n     * ');\n     */\n    function template(string, options, guard) {\n      // Based on John Resig's `tmpl` implementation\n      // (http://ejohn.org/blog/javascript-micro-templating/)\n      // and Laura Doktorova's doT.js (https://github.com/olado/doT).\n      var settings = lodash.templateSettings;\n\n      if (guard && isIterateeCall(string, options, guard)) {\n        options = undefined;\n      }\n      string = toString(string);\n      options = assignWith({}, options, settings, customDefaultsAssignIn);\n\n      var imports = assignWith({}, options.imports, settings.imports, customDefaultsAssignIn),\n          importsKeys = keys(imports),\n          importsValues = baseValues(imports, importsKeys);\n\n      arrayEach(importsKeys, function(key) {\n        if (reForbiddenIdentifierChars.test(key)) {\n          throw new Error(INVALID_TEMPL_IMPORTS_ERROR_TEXT);\n        }\n      });\n\n      var isEscaping,\n          isEvaluating,\n          index = 0,\n          interpolate = options.interpolate || reNoMatch,\n          source = \"__p += '\";\n\n      // Compile the regexp to match each delimiter.\n      var reDelimiters = RegExp(\n        (options.escape || reNoMatch).source + '|' +\n        interpolate.source + '|' +\n        (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + '|' +\n        (options.evaluate || reNoMatch).source + '|$'\n      , 'g');\n\n      // Use a sourceURL for easier debugging.\n      // The sourceURL gets injected into the source that's eval-ed, so be careful\n      // to normalize all kinds of whitespace, so e.g. newlines (and unicode versions of it) can't sneak in\n      // and escape the comment, thus injecting code that gets evaled.\n      var sourceURL = '//# sourceURL=' +\n        (hasOwnProperty.call(options, 'sourceURL')\n          ? (options.sourceURL + '').replace(/\\s/g, ' ')\n          : ('lodash.templateSources[' + (++templateCounter) + ']')\n        ) + '\\n';\n\n      string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) {\n        interpolateValue || (interpolateValue = esTemplateValue);\n\n        // Escape characters that can't be included in string literals.\n        source += string.slice(index, offset).replace(reUnescapedString, escapeStringChar);\n\n        // Replace delimiters with snippets.\n        if (escapeValue) {\n          isEscaping = true;\n          source += \"' +\\n__e(\" + escapeValue + \") +\\n'\";\n        }\n        if (evaluateValue) {\n          isEvaluating = true;\n          source += \"';\\n\" + evaluateValue + \";\\n__p += '\";\n        }\n        if (interpolateValue) {\n          source += \"' +\\n((__t = (\" + interpolateValue + \")) == null ? '' : __t) +\\n'\";\n        }\n        index = offset + match.length;\n\n        // The JS engine embedded in Adobe products needs `match` returned in\n        // order to produce the correct `offset` value.\n        return match;\n      });\n\n      source += \"';\\n\";\n\n      // If `variable` is not specified wrap a with-statement around the generated\n      // code to add the data object to the top of the scope chain.\n      var variable = hasOwnProperty.call(options, 'variable') && options.variable;\n      if (!variable) {\n        source = 'with (obj) {\\n' + source + '\\n}\\n';\n      }\n      // Throw an error if a forbidden character was found in `variable`, to prevent\n      // potential command injection attacks.\n      else if (reForbiddenIdentifierChars.test(variable)) {\n        throw new Error(INVALID_TEMPL_VAR_ERROR_TEXT);\n      }\n\n      // Cleanup code by stripping empty strings.\n      source = (isEvaluating ? source.replace(reEmptyStringLeading, '') : source)\n        .replace(reEmptyStringMiddle, '$1')\n        .replace(reEmptyStringTrailing, '$1;');\n\n      // Frame code as the function body.\n      source = 'function(' + (variable || 'obj') + ') {\\n' +\n        (variable\n          ? ''\n          : 'obj || (obj = {});\\n'\n        ) +\n        \"var __t, __p = ''\" +\n        (isEscaping\n           ? ', __e = _.escape'\n           : ''\n        ) +\n        (isEvaluating\n          ? ', __j = Array.prototype.join;\\n' +\n            \"function print() { __p += __j.call(arguments, '') }\\n\"\n          : ';\\n'\n        ) +\n        source +\n        'return __p\\n}';\n\n      var result = attempt(function() {\n        return Function(importsKeys, sourceURL + 'return ' + source)\n          .apply(undefined, importsValues);\n      });\n\n      // Provide the compiled function's source by its `toString` method or\n      // the `source` property as a convenience for inlining compiled templates.\n      result.source = source;\n      if (isError(result)) {\n        throw result;\n      }\n      return result;\n    }\n\n    /**\n     * Converts `string`, as a whole, to lower case just like\n     * [String#toLowerCase](https://mdn.io/toLowerCase).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the lower cased string.\n     * @example\n     *\n     * _.toLower('--Foo-Bar--');\n     * // => '--foo-bar--'\n     *\n     * _.toLower('fooBar');\n     * // => 'foobar'\n     *\n     * _.toLower('__FOO_BAR__');\n     * // => '__foo_bar__'\n     */\n    function toLower(value) {\n      return toString(value).toLowerCase();\n    }\n\n    /**\n     * Converts `string`, as a whole, to upper case just like\n     * [String#toUpperCase](https://mdn.io/toUpperCase).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the upper cased string.\n     * @example\n     *\n     * _.toUpper('--foo-bar--');\n     * // => '--FOO-BAR--'\n     *\n     * _.toUpper('fooBar');\n     * // => 'FOOBAR'\n     *\n     * _.toUpper('__foo_bar__');\n     * // => '__FOO_BAR__'\n     */\n    function toUpper(value) {\n      return toString(value).toUpperCase();\n    }\n\n    /**\n     * Removes leading and trailing whitespace or specified characters from `string`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to trim.\n     * @param {string} [chars=whitespace] The characters to trim.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {string} Returns the trimmed string.\n     * @example\n     *\n     * _.trim('  abc  ');\n     * // => 'abc'\n     *\n     * _.trim('-_-abc-_-', '_-');\n     * // => 'abc'\n     *\n     * _.map(['  foo  ', '  bar  '], _.trim);\n     * // => ['foo', 'bar']\n     */\n    function trim(string, chars, guard) {\n      string = toString(string);\n      if (string && (guard || chars === undefined)) {\n        return baseTrim(string);\n      }\n      if (!string || !(chars = baseToString(chars))) {\n        return string;\n      }\n      var strSymbols = stringToArray(string),\n          chrSymbols = stringToArray(chars),\n          start = charsStartIndex(strSymbols, chrSymbols),\n          end = charsEndIndex(strSymbols, chrSymbols) + 1;\n\n      return castSlice(strSymbols, start, end).join('');\n    }\n\n    /**\n     * Removes trailing whitespace or specified characters from `string`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to trim.\n     * @param {string} [chars=whitespace] The characters to trim.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {string} Returns the trimmed string.\n     * @example\n     *\n     * _.trimEnd('  abc  ');\n     * // => '  abc'\n     *\n     * _.trimEnd('-_-abc-_-', '_-');\n     * // => '-_-abc'\n     */\n    function trimEnd(string, chars, guard) {\n      string = toString(string);\n      if (string && (guard || chars === undefined)) {\n        return string.slice(0, trimmedEndIndex(string) + 1);\n      }\n      if (!string || !(chars = baseToString(chars))) {\n        return string;\n      }\n      var strSymbols = stringToArray(string),\n          end = charsEndIndex(strSymbols, stringToArray(chars)) + 1;\n\n      return castSlice(strSymbols, 0, end).join('');\n    }\n\n    /**\n     * Removes leading whitespace or specified characters from `string`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to trim.\n     * @param {string} [chars=whitespace] The characters to trim.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {string} Returns the trimmed string.\n     * @example\n     *\n     * _.trimStart('  abc  ');\n     * // => 'abc  '\n     *\n     * _.trimStart('-_-abc-_-', '_-');\n     * // => 'abc-_-'\n     */\n    function trimStart(string, chars, guard) {\n      string = toString(string);\n      if (string && (guard || chars === undefined)) {\n        return string.replace(reTrimStart, '');\n      }\n      if (!string || !(chars = baseToString(chars))) {\n        return string;\n      }\n      var strSymbols = stringToArray(string),\n          start = charsStartIndex(strSymbols, stringToArray(chars));\n\n      return castSlice(strSymbols, start).join('');\n    }\n\n    /**\n     * Truncates `string` if it's longer than the given maximum string length.\n     * The last characters of the truncated string are replaced with the omission\n     * string which defaults to \"...\".\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to truncate.\n     * @param {Object} [options={}] The options object.\n     * @param {number} [options.length=30] The maximum string length.\n     * @param {string} [options.omission='...'] The string to indicate text is omitted.\n     * @param {RegExp|string} [options.separator] The separator pattern to truncate to.\n     * @returns {string} Returns the truncated string.\n     * @example\n     *\n     * _.truncate('hi-diddly-ho there, neighborino');\n     * // => 'hi-diddly-ho there, neighbo...'\n     *\n     * _.truncate('hi-diddly-ho there, neighborino', {\n     *   'length': 24,\n     *   'separator': ' '\n     * });\n     * // => 'hi-diddly-ho there,...'\n     *\n     * _.truncate('hi-diddly-ho there, neighborino', {\n     *   'length': 24,\n     *   'separator': /,? +/\n     * });\n     * // => 'hi-diddly-ho there...'\n     *\n     * _.truncate('hi-diddly-ho there, neighborino', {\n     *   'omission': ' [...]'\n     * });\n     * // => 'hi-diddly-ho there, neig [...]'\n     */\n    function truncate(string, options) {\n      var length = DEFAULT_TRUNC_LENGTH,\n          omission = DEFAULT_TRUNC_OMISSION;\n\n      if (isObject(options)) {\n        var separator = 'separator' in options ? options.separator : separator;\n        length = 'length' in options ? toInteger(options.length) : length;\n        omission = 'omission' in options ? baseToString(options.omission) : omission;\n      }\n      string = toString(string);\n\n      var strLength = string.length;\n      if (hasUnicode(string)) {\n        var strSymbols = stringToArray(string);\n        strLength = strSymbols.length;\n      }\n      if (length >= strLength) {\n        return string;\n      }\n      var end = length - stringSize(omission);\n      if (end < 1) {\n        return omission;\n      }\n      var result = strSymbols\n        ? castSlice(strSymbols, 0, end).join('')\n        : string.slice(0, end);\n\n      if (separator === undefined) {\n        return result + omission;\n      }\n      if (strSymbols) {\n        end += (result.length - end);\n      }\n      if (isRegExp(separator)) {\n        if (string.slice(end).search(separator)) {\n          var match,\n              substring = result;\n\n          if (!separator.global) {\n            separator = RegExp(separator.source, toString(reFlags.exec(separator)) + 'g');\n          }\n          separator.lastIndex = 0;\n          while ((match = separator.exec(substring))) {\n            var newEnd = match.index;\n          }\n          result = result.slice(0, newEnd === undefined ? end : newEnd);\n        }\n      } else if (string.indexOf(baseToString(separator), end) != end) {\n        var index = result.lastIndexOf(separator);\n        if (index > -1) {\n          result = result.slice(0, index);\n        }\n      }\n      return result + omission;\n    }\n\n    /**\n     * The inverse of `_.escape`; this method converts the HTML entities\n     * `&amp;`, `&lt;`, `&gt;`, `&quot;`, and `&#39;` in `string` to\n     * their corresponding characters.\n     *\n     * **Note:** No other HTML entities are unescaped. To unescape additional\n     * HTML entities use a third-party library like [_he_](https://mths.be/he).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.6.0\n     * @category String\n     * @param {string} [string=''] The string to unescape.\n     * @returns {string} Returns the unescaped string.\n     * @example\n     *\n     * _.unescape('fred, barney, &amp; pebbles');\n     * // => 'fred, barney, & pebbles'\n     */\n    function unescape(string) {\n      string = toString(string);\n      return (string && reHasEscapedHtml.test(string))\n        ? string.replace(reEscapedHtml, unescapeHtmlChar)\n        : string;\n    }\n\n    /**\n     * Converts `string`, as space separated words, to upper case.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the upper cased string.\n     * @example\n     *\n     * _.upperCase('--foo-bar');\n     * // => 'FOO BAR'\n     *\n     * _.upperCase('fooBar');\n     * // => 'FOO BAR'\n     *\n     * _.upperCase('__foo_bar__');\n     * // => 'FOO BAR'\n     */\n    var upperCase = createCompounder(function(result, word, index) {\n      return result + (index ? ' ' : '') + word.toUpperCase();\n    });\n\n    /**\n     * Converts the first character of `string` to upper case.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the converted string.\n     * @example\n     *\n     * _.upperFirst('fred');\n     * // => 'Fred'\n     *\n     * _.upperFirst('FRED');\n     * // => 'FRED'\n     */\n    var upperFirst = createCaseFirst('toUpperCase');\n\n    /**\n     * Splits `string` into an array of its words.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to inspect.\n     * @param {RegExp|string} [pattern] The pattern to match words.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the words of `string`.\n     * @example\n     *\n     * _.words('fred, barney, & pebbles');\n     * // => ['fred', 'barney', 'pebbles']\n     *\n     * _.words('fred, barney, & pebbles', /[^, ]+/g);\n     * // => ['fred', 'barney', '&', 'pebbles']\n     */\n    function words(string, pattern, guard) {\n      string = toString(string);\n      pattern = guard ? undefined : pattern;\n\n      if (pattern === undefined) {\n        return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n      }\n      return string.match(pattern) || [];\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Attempts to invoke `func`, returning either the result or the caught error\n     * object. Any additional arguments are provided to `func` when it's invoked.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Util\n     * @param {Function} func The function to attempt.\n     * @param {...*} [args] The arguments to invoke `func` with.\n     * @returns {*} Returns the `func` result or error object.\n     * @example\n     *\n     * // Avoid throwing errors for invalid selectors.\n     * var elements = _.attempt(function(selector) {\n     *   return document.querySelectorAll(selector);\n     * }, '>_>');\n     *\n     * if (_.isError(elements)) {\n     *   elements = [];\n     * }\n     */\n    var attempt = baseRest(function(func, args) {\n      try {\n        return apply(func, undefined, args);\n      } catch (e) {\n        return isError(e) ? e : new Error(e);\n      }\n    });\n\n    /**\n     * Binds methods of an object to the object itself, overwriting the existing\n     * method.\n     *\n     * **Note:** This method doesn't set the \"length\" property of bound functions.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @param {Object} object The object to bind and assign the bound methods to.\n     * @param {...(string|string[])} methodNames The object method names to bind.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * var view = {\n     *   'label': 'docs',\n     *   'click': function() {\n     *     console.log('clicked ' + this.label);\n     *   }\n     * };\n     *\n     * _.bindAll(view, ['click']);\n     * jQuery(element).on('click', view.click);\n     * // => Logs 'clicked docs' when clicked.\n     */\n    var bindAll = flatRest(function(object, methodNames) {\n      arrayEach(methodNames, function(key) {\n        key = toKey(key);\n        baseAssignValue(object, key, bind(object[key], object));\n      });\n      return object;\n    });\n\n    /**\n     * Creates a function that iterates over `pairs` and invokes the corresponding\n     * function of the first predicate to return truthy. The predicate-function\n     * pairs are invoked with the `this` binding and arguments of the created\n     * function.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {Array} pairs The predicate-function pairs.\n     * @returns {Function} Returns the new composite function.\n     * @example\n     *\n     * var func = _.cond([\n     *   [_.matches({ 'a': 1 }),           _.constant('matches A')],\n     *   [_.conforms({ 'b': _.isNumber }), _.constant('matches B')],\n     *   [_.stubTrue,                      _.constant('no match')]\n     * ]);\n     *\n     * func({ 'a': 1, 'b': 2 });\n     * // => 'matches A'\n     *\n     * func({ 'a': 0, 'b': 1 });\n     * // => 'matches B'\n     *\n     * func({ 'a': '1', 'b': '2' });\n     * // => 'no match'\n     */\n    function cond(pairs) {\n      var length = pairs == null ? 0 : pairs.length,\n          toIteratee = getIteratee();\n\n      pairs = !length ? [] : arrayMap(pairs, function(pair) {\n        if (typeof pair[1] != 'function') {\n          throw new TypeError(FUNC_ERROR_TEXT);\n        }\n        return [toIteratee(pair[0]), pair[1]];\n      });\n\n      return baseRest(function(args) {\n        var index = -1;\n        while (++index < length) {\n          var pair = pairs[index];\n          if (apply(pair[0], this, args)) {\n            return apply(pair[1], this, args);\n          }\n        }\n      });\n    }\n\n    /**\n     * Creates a function that invokes the predicate properties of `source` with\n     * the corresponding property values of a given object, returning `true` if\n     * all predicates return truthy, else `false`.\n     *\n     * **Note:** The created function is equivalent to `_.conformsTo` with\n     * `source` partially applied.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {Object} source The object of property predicates to conform to.\n     * @returns {Function} Returns the new spec function.\n     * @example\n     *\n     * var objects = [\n     *   { 'a': 2, 'b': 1 },\n     *   { 'a': 1, 'b': 2 }\n     * ];\n     *\n     * _.filter(objects, _.conforms({ 'b': function(n) { return n > 1; } }));\n     * // => [{ 'a': 1, 'b': 2 }]\n     */\n    function conforms(source) {\n      return baseConforms(baseClone(source, CLONE_DEEP_FLAG));\n    }\n\n    /**\n     * Creates a function that returns `value`.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.4.0\n     * @category Util\n     * @param {*} value The value to return from the new function.\n     * @returns {Function} Returns the new constant function.\n     * @example\n     *\n     * var objects = _.times(2, _.constant({ 'a': 1 }));\n     *\n     * console.log(objects);\n     * // => [{ 'a': 1 }, { 'a': 1 }]\n     *\n     * console.log(objects[0] === objects[1]);\n     * // => true\n     */\n    function constant(value) {\n      return function() {\n        return value;\n      };\n    }\n\n    /**\n     * Checks `value` to determine whether a default value should be returned in\n     * its place. The `defaultValue` is returned if `value` is `NaN`, `null`,\n     * or `undefined`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.14.0\n     * @category Util\n     * @param {*} value The value to check.\n     * @param {*} defaultValue The default value.\n     * @returns {*} Returns the resolved value.\n     * @example\n     *\n     * _.defaultTo(1, 10);\n     * // => 1\n     *\n     * _.defaultTo(undefined, 10);\n     * // => 10\n     */\n    function defaultTo(value, defaultValue) {\n      return (value == null || value !== value) ? defaultValue : value;\n    }\n\n    /**\n     * Creates a function that returns the result of invoking the given functions\n     * with the `this` binding of the created function, where each successive\n     * invocation is supplied the return value of the previous.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Util\n     * @param {...(Function|Function[])} [funcs] The functions to invoke.\n     * @returns {Function} Returns the new composite function.\n     * @see _.flowRight\n     * @example\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * var addSquare = _.flow([_.add, square]);\n     * addSquare(1, 2);\n     * // => 9\n     */\n    var flow = createFlow();\n\n    /**\n     * This method is like `_.flow` except that it creates a function that\n     * invokes the given functions from right to left.\n     *\n     * @static\n     * @since 3.0.0\n     * @memberOf _\n     * @category Util\n     * @param {...(Function|Function[])} [funcs] The functions to invoke.\n     * @returns {Function} Returns the new composite function.\n     * @see _.flow\n     * @example\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * var addSquare = _.flowRight([square, _.add]);\n     * addSquare(1, 2);\n     * // => 9\n     */\n    var flowRight = createFlow(true);\n\n    /**\n     * This method returns the first argument it receives.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @param {*} value Any value.\n     * @returns {*} Returns `value`.\n     * @example\n     *\n     * var object = { 'a': 1 };\n     *\n     * console.log(_.identity(object) === object);\n     * // => true\n     */\n    function identity(value) {\n      return value;\n    }\n\n    /**\n     * Creates a function that invokes `func` with the arguments of the created\n     * function. If `func` is a property name, the created function returns the\n     * property value for a given element. If `func` is an array or object, the\n     * created function returns `true` for elements that contain the equivalent\n     * source properties, otherwise it returns `false`.\n     *\n     * @static\n     * @since 4.0.0\n     * @memberOf _\n     * @category Util\n     * @param {*} [func=_.identity] The value to convert to a callback.\n     * @returns {Function} Returns the callback.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney', 'age': 36, 'active': true },\n     *   { 'user': 'fred',   'age': 40, 'active': false }\n     * ];\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));\n     * // => [{ 'user': 'barney', 'age': 36, 'active': true }]\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.filter(users, _.iteratee(['user', 'fred']));\n     * // => [{ 'user': 'fred', 'age': 40 }]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.map(users, _.iteratee('user'));\n     * // => ['barney', 'fred']\n     *\n     * // Create custom iteratee shorthands.\n     * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) {\n     *   return !_.isRegExp(func) ? iteratee(func) : function(string) {\n     *     return func.test(string);\n     *   };\n     * });\n     *\n     * _.filter(['abc', 'def'], /ef/);\n     * // => ['def']\n     */\n    function iteratee(func) {\n      return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG));\n    }\n\n    /**\n     * Creates a function that performs a partial deep comparison between a given\n     * object and `source`, returning `true` if the given object has equivalent\n     * property values, else `false`.\n     *\n     * **Note:** The created function is equivalent to `_.isMatch` with `source`\n     * partially applied.\n     *\n     * Partial comparisons will match empty array and empty object `source`\n     * values against any array or object value, respectively. See `_.isEqual`\n     * for a list of supported value comparisons.\n     *\n     * **Note:** Multiple values can be checked by combining several matchers\n     * using `_.overSome`\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Util\n     * @param {Object} source The object of property values to match.\n     * @returns {Function} Returns the new spec function.\n     * @example\n     *\n     * var objects = [\n     *   { 'a': 1, 'b': 2, 'c': 3 },\n     *   { 'a': 4, 'b': 5, 'c': 6 }\n     * ];\n     *\n     * _.filter(objects, _.matches({ 'a': 4, 'c': 6 }));\n     * // => [{ 'a': 4, 'b': 5, 'c': 6 }]\n     *\n     * // Checking for several possible values\n     * _.filter(objects, _.overSome([_.matches({ 'a': 1 }), _.matches({ 'a': 4 })]));\n     * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]\n     */\n    function matches(source) {\n      return baseMatches(baseClone(source, CLONE_DEEP_FLAG));\n    }\n\n    /**\n     * Creates a function that performs a partial deep comparison between the\n     * value at `path` of a given object to `srcValue`, returning `true` if the\n     * object value is equivalent, else `false`.\n     *\n     * **Note:** Partial comparisons will match empty array and empty object\n     * `srcValue` values against any array or object value, respectively. See\n     * `_.isEqual` for a list of supported value comparisons.\n     *\n     * **Note:** Multiple values can be checked by combining several matchers\n     * using `_.overSome`\n     *\n     * @static\n     * @memberOf _\n     * @since 3.2.0\n     * @category Util\n     * @param {Array|string} path The path of the property to get.\n     * @param {*} srcValue The value to match.\n     * @returns {Function} Returns the new spec function.\n     * @example\n     *\n     * var objects = [\n     *   { 'a': 1, 'b': 2, 'c': 3 },\n     *   { 'a': 4, 'b': 5, 'c': 6 }\n     * ];\n     *\n     * _.find(objects, _.matchesProperty('a', 4));\n     * // => { 'a': 4, 'b': 5, 'c': 6 }\n     *\n     * // Checking for several possible values\n     * _.filter(objects, _.overSome([_.matchesProperty('a', 1), _.matchesProperty('a', 4)]));\n     * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]\n     */\n    function matchesProperty(path, srcValue) {\n      return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG));\n    }\n\n    /**\n     * Creates a function that invokes the method at `path` of a given object.\n     * Any additional arguments are provided to the invoked method.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.7.0\n     * @category Util\n     * @param {Array|string} path The path of the method to invoke.\n     * @param {...*} [args] The arguments to invoke the method with.\n     * @returns {Function} Returns the new invoker function.\n     * @example\n     *\n     * var objects = [\n     *   { 'a': { 'b': _.constant(2) } },\n     *   { 'a': { 'b': _.constant(1) } }\n     * ];\n     *\n     * _.map(objects, _.method('a.b'));\n     * // => [2, 1]\n     *\n     * _.map(objects, _.method(['a', 'b']));\n     * // => [2, 1]\n     */\n    var method = baseRest(function(path, args) {\n      return function(object) {\n        return baseInvoke(object, path, args);\n      };\n    });\n\n    /**\n     * The opposite of `_.method`; this method creates a function that invokes\n     * the method at a given path of `object`. Any additional arguments are\n     * provided to the invoked method.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.7.0\n     * @category Util\n     * @param {Object} object The object to query.\n     * @param {...*} [args] The arguments to invoke the method with.\n     * @returns {Function} Returns the new invoker function.\n     * @example\n     *\n     * var array = _.times(3, _.constant),\n     *     object = { 'a': array, 'b': array, 'c': array };\n     *\n     * _.map(['a[2]', 'c[0]'], _.methodOf(object));\n     * // => [2, 0]\n     *\n     * _.map([['a', '2'], ['c', '0']], _.methodOf(object));\n     * // => [2, 0]\n     */\n    var methodOf = baseRest(function(object, args) {\n      return function(path) {\n        return baseInvoke(object, path, args);\n      };\n    });\n\n    /**\n     * Adds all own enumerable string keyed function properties of a source\n     * object to the destination object. If `object` is a function, then methods\n     * are added to its prototype as well.\n     *\n     * **Note:** Use `_.runInContext` to create a pristine `lodash` function to\n     * avoid conflicts caused by modifying the original.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @param {Function|Object} [object=lodash] The destination object.\n     * @param {Object} source The object of functions to add.\n     * @param {Object} [options={}] The options object.\n     * @param {boolean} [options.chain=true] Specify whether mixins are chainable.\n     * @returns {Function|Object} Returns `object`.\n     * @example\n     *\n     * function vowels(string) {\n     *   return _.filter(string, function(v) {\n     *     return /[aeiou]/i.test(v);\n     *   });\n     * }\n     *\n     * _.mixin({ 'vowels': vowels });\n     * _.vowels('fred');\n     * // => ['e']\n     *\n     * _('fred').vowels().value();\n     * // => ['e']\n     *\n     * _.mixin({ 'vowels': vowels }, { 'chain': false });\n     * _('fred').vowels();\n     * // => ['e']\n     */\n    function mixin(object, source, options) {\n      var props = keys(source),\n          methodNames = baseFunctions(source, props);\n\n      if (options == null &&\n          !(isObject(source) && (methodNames.length || !props.length))) {\n        options = source;\n        source = object;\n        object = this;\n        methodNames = baseFunctions(source, keys(source));\n      }\n      var chain = !(isObject(options) && 'chain' in options) || !!options.chain,\n          isFunc = isFunction(object);\n\n      arrayEach(methodNames, function(methodName) {\n        var func = source[methodName];\n        object[methodName] = func;\n        if (isFunc) {\n          object.prototype[methodName] = function() {\n            var chainAll = this.__chain__;\n            if (chain || chainAll) {\n              var result = object(this.__wrapped__),\n                  actions = result.__actions__ = copyArray(this.__actions__);\n\n              actions.push({ 'func': func, 'args': arguments, 'thisArg': object });\n              result.__chain__ = chainAll;\n              return result;\n            }\n            return func.apply(object, arrayPush([this.value()], arguments));\n          };\n        }\n      });\n\n      return object;\n    }\n\n    /**\n     * Reverts the `_` variable to its previous value and returns a reference to\n     * the `lodash` function.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @returns {Function} Returns the `lodash` function.\n     * @example\n     *\n     * var lodash = _.noConflict();\n     */\n    function noConflict() {\n      if (root._ === this) {\n        root._ = oldDash;\n      }\n      return this;\n    }\n\n    /**\n     * This method returns `undefined`.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.3.0\n     * @category Util\n     * @example\n     *\n     * _.times(2, _.noop);\n     * // => [undefined, undefined]\n     */\n    function noop() {\n      // No operation performed.\n    }\n\n    /**\n     * Creates a function that gets the argument at index `n`. If `n` is negative,\n     * the nth argument from the end is returned.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {number} [n=0] The index of the argument to return.\n     * @returns {Function} Returns the new pass-thru function.\n     * @example\n     *\n     * var func = _.nthArg(1);\n     * func('a', 'b', 'c', 'd');\n     * // => 'b'\n     *\n     * var func = _.nthArg(-2);\n     * func('a', 'b', 'c', 'd');\n     * // => 'c'\n     */\n    function nthArg(n) {\n      n = toInteger(n);\n      return baseRest(function(args) {\n        return baseNth(args, n);\n      });\n    }\n\n    /**\n     * Creates a function that invokes `iteratees` with the arguments it receives\n     * and returns their results.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {...(Function|Function[])} [iteratees=[_.identity]]\n     *  The iteratees to invoke.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var func = _.over([Math.max, Math.min]);\n     *\n     * func(1, 2, 3, 4);\n     * // => [4, 1]\n     */\n    var over = createOver(arrayMap);\n\n    /**\n     * Creates a function that checks if **all** of the `predicates` return\n     * truthy when invoked with the arguments it receives.\n     *\n     * Following shorthands are possible for providing predicates.\n     * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate.\n     * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {...(Function|Function[])} [predicates=[_.identity]]\n     *  The predicates to check.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var func = _.overEvery([Boolean, isFinite]);\n     *\n     * func('1');\n     * // => true\n     *\n     * func(null);\n     * // => false\n     *\n     * func(NaN);\n     * // => false\n     */\n    var overEvery = createOver(arrayEvery);\n\n    /**\n     * Creates a function that checks if **any** of the `predicates` return\n     * truthy when invoked with the arguments it receives.\n     *\n     * Following shorthands are possible for providing predicates.\n     * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate.\n     * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {...(Function|Function[])} [predicates=[_.identity]]\n     *  The predicates to check.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var func = _.overSome([Boolean, isFinite]);\n     *\n     * func('1');\n     * // => true\n     *\n     * func(null);\n     * // => true\n     *\n     * func(NaN);\n     * // => false\n     *\n     * var matchesFunc = _.overSome([{ 'a': 1 }, { 'a': 2 }])\n     * var matchesPropertyFunc = _.overSome([['a', 1], ['a', 2]])\n     */\n    var overSome = createOver(arraySome);\n\n    /**\n     * Creates a function that returns the value at `path` of a given object.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.4.0\n     * @category Util\n     * @param {Array|string} path The path of the property to get.\n     * @returns {Function} Returns the new accessor function.\n     * @example\n     *\n     * var objects = [\n     *   { 'a': { 'b': 2 } },\n     *   { 'a': { 'b': 1 } }\n     * ];\n     *\n     * _.map(objects, _.property('a.b'));\n     * // => [2, 1]\n     *\n     * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n     * // => [1, 2]\n     */\n    function property(path) {\n      return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n    }\n\n    /**\n     * The opposite of `_.property`; this method creates a function that returns\n     * the value at a given path of `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Util\n     * @param {Object} object The object to query.\n     * @returns {Function} Returns the new accessor function.\n     * @example\n     *\n     * var array = [0, 1, 2],\n     *     object = { 'a': array, 'b': array, 'c': array };\n     *\n     * _.map(['a[2]', 'c[0]'], _.propertyOf(object));\n     * // => [2, 0]\n     *\n     * _.map([['a', '2'], ['c', '0']], _.propertyOf(object));\n     * // => [2, 0]\n     */\n    function propertyOf(object) {\n      return function(path) {\n        return object == null ? undefined : baseGet(object, path);\n      };\n    }\n\n    /**\n     * Creates an array of numbers (positive and/or negative) progressing from\n     * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n     * `start` is specified without an `end` or `step`. If `end` is not specified,\n     * it's set to `start` with `start` then set to `0`.\n     *\n     * **Note:** JavaScript follows the IEEE-754 standard for resolving\n     * floating-point values which can produce unexpected results.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @param {number} [start=0] The start of the range.\n     * @param {number} end The end of the range.\n     * @param {number} [step=1] The value to increment or decrement by.\n     * @returns {Array} Returns the range of numbers.\n     * @see _.inRange, _.rangeRight\n     * @example\n     *\n     * _.range(4);\n     * // => [0, 1, 2, 3]\n     *\n     * _.range(-4);\n     * // => [0, -1, -2, -3]\n     *\n     * _.range(1, 5);\n     * // => [1, 2, 3, 4]\n     *\n     * _.range(0, 20, 5);\n     * // => [0, 5, 10, 15]\n     *\n     * _.range(0, -4, -1);\n     * // => [0, -1, -2, -3]\n     *\n     * _.range(1, 4, 0);\n     * // => [1, 1, 1]\n     *\n     * _.range(0);\n     * // => []\n     */\n    var range = createRange();\n\n    /**\n     * This method is like `_.range` except that it populates values in\n     * descending order.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {number} [start=0] The start of the range.\n     * @param {number} end The end of the range.\n     * @param {number} [step=1] The value to increment or decrement by.\n     * @returns {Array} Returns the range of numbers.\n     * @see _.inRange, _.range\n     * @example\n     *\n     * _.rangeRight(4);\n     * // => [3, 2, 1, 0]\n     *\n     * _.rangeRight(-4);\n     * // => [-3, -2, -1, 0]\n     *\n     * _.rangeRight(1, 5);\n     * // => [4, 3, 2, 1]\n     *\n     * _.rangeRight(0, 20, 5);\n     * // => [15, 10, 5, 0]\n     *\n     * _.rangeRight(0, -4, -1);\n     * // => [-3, -2, -1, 0]\n     *\n     * _.rangeRight(1, 4, 0);\n     * // => [1, 1, 1]\n     *\n     * _.rangeRight(0);\n     * // => []\n     */\n    var rangeRight = createRange(true);\n\n    /**\n     * This method returns a new empty array.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.13.0\n     * @category Util\n     * @returns {Array} Returns the new empty array.\n     * @example\n     *\n     * var arrays = _.times(2, _.stubArray);\n     *\n     * console.log(arrays);\n     * // => [[], []]\n     *\n     * console.log(arrays[0] === arrays[1]);\n     * // => false\n     */\n    function stubArray() {\n      return [];\n    }\n\n    /**\n     * This method returns `false`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.13.0\n     * @category Util\n     * @returns {boolean} Returns `false`.\n     * @example\n     *\n     * _.times(2, _.stubFalse);\n     * // => [false, false]\n     */\n    function stubFalse() {\n      return false;\n    }\n\n    /**\n     * This method returns a new empty object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.13.0\n     * @category Util\n     * @returns {Object} Returns the new empty object.\n     * @example\n     *\n     * var objects = _.times(2, _.stubObject);\n     *\n     * console.log(objects);\n     * // => [{}, {}]\n     *\n     * console.log(objects[0] === objects[1]);\n     * // => false\n     */\n    function stubObject() {\n      return {};\n    }\n\n    /**\n     * This method returns an empty string.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.13.0\n     * @category Util\n     * @returns {string} Returns the empty string.\n     * @example\n     *\n     * _.times(2, _.stubString);\n     * // => ['', '']\n     */\n    function stubString() {\n      return '';\n    }\n\n    /**\n     * This method returns `true`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.13.0\n     * @category Util\n     * @returns {boolean} Returns `true`.\n     * @example\n     *\n     * _.times(2, _.stubTrue);\n     * // => [true, true]\n     */\n    function stubTrue() {\n      return true;\n    }\n\n    /**\n     * Invokes the iteratee `n` times, returning an array of the results of\n     * each invocation. The iteratee is invoked with one argument; (index).\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @param {number} n The number of times to invoke `iteratee`.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the array of results.\n     * @example\n     *\n     * _.times(3, String);\n     * // => ['0', '1', '2']\n     *\n     *  _.times(4, _.constant(0));\n     * // => [0, 0, 0, 0]\n     */\n    function times(n, iteratee) {\n      n = toInteger(n);\n      if (n < 1 || n > MAX_SAFE_INTEGER) {\n        return [];\n      }\n      var index = MAX_ARRAY_LENGTH,\n          length = nativeMin(n, MAX_ARRAY_LENGTH);\n\n      iteratee = getIteratee(iteratee);\n      n -= MAX_ARRAY_LENGTH;\n\n      var result = baseTimes(length, iteratee);\n      while (++index < n) {\n        iteratee(index);\n      }\n      return result;\n    }\n\n    /**\n     * Converts `value` to a property path array.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {*} value The value to convert.\n     * @returns {Array} Returns the new property path array.\n     * @example\n     *\n     * _.toPath('a.b.c');\n     * // => ['a', 'b', 'c']\n     *\n     * _.toPath('a[0].b.c');\n     * // => ['a', '0', 'b', 'c']\n     */\n    function toPath(value) {\n      if (isArray(value)) {\n        return arrayMap(value, toKey);\n      }\n      return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));\n    }\n\n    /**\n     * Generates a unique ID. If `prefix` is given, the ID is appended to it.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @param {string} [prefix=''] The value to prefix the ID with.\n     * @returns {string} Returns the unique ID.\n     * @example\n     *\n     * _.uniqueId('contact_');\n     * // => 'contact_104'\n     *\n     * _.uniqueId();\n     * // => '105'\n     */\n    function uniqueId(prefix) {\n      var id = ++idCounter;\n      return toString(prefix) + id;\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Adds two numbers.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.4.0\n     * @category Math\n     * @param {number} augend The first number in an addition.\n     * @param {number} addend The second number in an addition.\n     * @returns {number} Returns the total.\n     * @example\n     *\n     * _.add(6, 4);\n     * // => 10\n     */\n    var add = createMathOperation(function(augend, addend) {\n      return augend + addend;\n    }, 0);\n\n    /**\n     * Computes `number` rounded up to `precision`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.10.0\n     * @category Math\n     * @param {number} number The number to round up.\n     * @param {number} [precision=0] The precision to round up to.\n     * @returns {number} Returns the rounded up number.\n     * @example\n     *\n     * _.ceil(4.006);\n     * // => 5\n     *\n     * _.ceil(6.004, 2);\n     * // => 6.01\n     *\n     * _.ceil(6040, -2);\n     * // => 6100\n     */\n    var ceil = createRound('ceil');\n\n    /**\n     * Divide two numbers.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.7.0\n     * @category Math\n     * @param {number} dividend The first number in a division.\n     * @param {number} divisor The second number in a division.\n     * @returns {number} Returns the quotient.\n     * @example\n     *\n     * _.divide(6, 4);\n     * // => 1.5\n     */\n    var divide = createMathOperation(function(dividend, divisor) {\n      return dividend / divisor;\n    }, 1);\n\n    /**\n     * Computes `number` rounded down to `precision`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.10.0\n     * @category Math\n     * @param {number} number The number to round down.\n     * @param {number} [precision=0] The precision to round down to.\n     * @returns {number} Returns the rounded down number.\n     * @example\n     *\n     * _.floor(4.006);\n     * // => 4\n     *\n     * _.floor(0.046, 2);\n     * // => 0.04\n     *\n     * _.floor(4060, -2);\n     * // => 4000\n     */\n    var floor = createRound('floor');\n\n    /**\n     * Computes the maximum value of `array`. If `array` is empty or falsey,\n     * `undefined` is returned.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @returns {*} Returns the maximum value.\n     * @example\n     *\n     * _.max([4, 2, 8, 6]);\n     * // => 8\n     *\n     * _.max([]);\n     * // => undefined\n     */\n    function max(array) {\n      return (array && array.length)\n        ? baseExtremum(array, identity, baseGt)\n        : undefined;\n    }\n\n    /**\n     * This method is like `_.max` except that it accepts `iteratee` which is\n     * invoked for each element in `array` to generate the criterion by which\n     * the value is ranked. The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {*} Returns the maximum value.\n     * @example\n     *\n     * var objects = [{ 'n': 1 }, { 'n': 2 }];\n     *\n     * _.maxBy(objects, function(o) { return o.n; });\n     * // => { 'n': 2 }\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.maxBy(objects, 'n');\n     * // => { 'n': 2 }\n     */\n    function maxBy(array, iteratee) {\n      return (array && array.length)\n        ? baseExtremum(array, getIteratee(iteratee, 2), baseGt)\n        : undefined;\n    }\n\n    /**\n     * Computes the mean of the values in `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @returns {number} Returns the mean.\n     * @example\n     *\n     * _.mean([4, 2, 8, 6]);\n     * // => 5\n     */\n    function mean(array) {\n      return baseMean(array, identity);\n    }\n\n    /**\n     * This method is like `_.mean` except that it accepts `iteratee` which is\n     * invoked for each element in `array` to generate the value to be averaged.\n     * The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.7.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {number} Returns the mean.\n     * @example\n     *\n     * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n     *\n     * _.meanBy(objects, function(o) { return o.n; });\n     * // => 5\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.meanBy(objects, 'n');\n     * // => 5\n     */\n    function meanBy(array, iteratee) {\n      return baseMean(array, getIteratee(iteratee, 2));\n    }\n\n    /**\n     * Computes the minimum value of `array`. If `array` is empty or falsey,\n     * `undefined` is returned.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @returns {*} Returns the minimum value.\n     * @example\n     *\n     * _.min([4, 2, 8, 6]);\n     * // => 2\n     *\n     * _.min([]);\n     * // => undefined\n     */\n    function min(array) {\n      return (array && array.length)\n        ? baseExtremum(array, identity, baseLt)\n        : undefined;\n    }\n\n    /**\n     * This method is like `_.min` except that it accepts `iteratee` which is\n     * invoked for each element in `array` to generate the criterion by which\n     * the value is ranked. The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {*} Returns the minimum value.\n     * @example\n     *\n     * var objects = [{ 'n': 1 }, { 'n': 2 }];\n     *\n     * _.minBy(objects, function(o) { return o.n; });\n     * // => { 'n': 1 }\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.minBy(objects, 'n');\n     * // => { 'n': 1 }\n     */\n    function minBy(array, iteratee) {\n      return (array && array.length)\n        ? baseExtremum(array, getIteratee(iteratee, 2), baseLt)\n        : undefined;\n    }\n\n    /**\n     * Multiply two numbers.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.7.0\n     * @category Math\n     * @param {number} multiplier The first number in a multiplication.\n     * @param {number} multiplicand The second number in a multiplication.\n     * @returns {number} Returns the product.\n     * @example\n     *\n     * _.multiply(6, 4);\n     * // => 24\n     */\n    var multiply = createMathOperation(function(multiplier, multiplicand) {\n      return multiplier * multiplicand;\n    }, 1);\n\n    /**\n     * Computes `number` rounded to `precision`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.10.0\n     * @category Math\n     * @param {number} number The number to round.\n     * @param {number} [precision=0] The precision to round to.\n     * @returns {number} Returns the rounded number.\n     * @example\n     *\n     * _.round(4.006);\n     * // => 4\n     *\n     * _.round(4.006, 2);\n     * // => 4.01\n     *\n     * _.round(4060, -2);\n     * // => 4100\n     */\n    var round = createRound('round');\n\n    /**\n     * Subtract two numbers.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Math\n     * @param {number} minuend The first number in a subtraction.\n     * @param {number} subtrahend The second number in a subtraction.\n     * @returns {number} Returns the difference.\n     * @example\n     *\n     * _.subtract(6, 4);\n     * // => 2\n     */\n    var subtract = createMathOperation(function(minuend, subtrahend) {\n      return minuend - subtrahend;\n    }, 0);\n\n    /**\n     * Computes the sum of the values in `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.4.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @returns {number} Returns the sum.\n     * @example\n     *\n     * _.sum([4, 2, 8, 6]);\n     * // => 20\n     */\n    function sum(array) {\n      return (array && array.length)\n        ? baseSum(array, identity)\n        : 0;\n    }\n\n    /**\n     * This method is like `_.sum` except that it accepts `iteratee` which is\n     * invoked for each element in `array` to generate the value to be summed.\n     * The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {number} Returns the sum.\n     * @example\n     *\n     * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n     *\n     * _.sumBy(objects, function(o) { return o.n; });\n     * // => 20\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.sumBy(objects, 'n');\n     * // => 20\n     */\n    function sumBy(array, iteratee) {\n      return (array && array.length)\n        ? baseSum(array, getIteratee(iteratee, 2))\n        : 0;\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    // Add methods that return wrapped values in chain sequences.\n    lodash.after = after;\n    lodash.ary = ary;\n    lodash.assign = assign;\n    lodash.assignIn = assignIn;\n    lodash.assignInWith = assignInWith;\n    lodash.assignWith = assignWith;\n    lodash.at = at;\n    lodash.before = before;\n    lodash.bind = bind;\n    lodash.bindAll = bindAll;\n    lodash.bindKey = bindKey;\n    lodash.castArray = castArray;\n    lodash.chain = chain;\n    lodash.chunk = chunk;\n    lodash.compact = compact;\n    lodash.concat = concat;\n    lodash.cond = cond;\n    lodash.conforms = conforms;\n    lodash.constant = constant;\n    lodash.countBy = countBy;\n    lodash.create = create;\n    lodash.curry = curry;\n    lodash.curryRight = curryRight;\n    lodash.debounce = debounce;\n    lodash.defaults = defaults;\n    lodash.defaultsDeep = defaultsDeep;\n    lodash.defer = defer;\n    lodash.delay = delay;\n    lodash.difference = difference;\n    lodash.differenceBy = differenceBy;\n    lodash.differenceWith = differenceWith;\n    lodash.drop = drop;\n    lodash.dropRight = dropRight;\n    lodash.dropRightWhile = dropRightWhile;\n    lodash.dropWhile = dropWhile;\n    lodash.fill = fill;\n    lodash.filter = filter;\n    lodash.flatMap = flatMap;\n    lodash.flatMapDeep = flatMapDeep;\n    lodash.flatMapDepth = flatMapDepth;\n    lodash.flatten = flatten;\n    lodash.flattenDeep = flattenDeep;\n    lodash.flattenDepth = flattenDepth;\n    lodash.flip = flip;\n    lodash.flow = flow;\n    lodash.flowRight = flowRight;\n    lodash.fromPairs = fromPairs;\n    lodash.functions = functions;\n    lodash.functionsIn = functionsIn;\n    lodash.groupBy = groupBy;\n    lodash.initial = initial;\n    lodash.intersection = intersection;\n    lodash.intersectionBy = intersectionBy;\n    lodash.intersectionWith = intersectionWith;\n    lodash.invert = invert;\n    lodash.invertBy = invertBy;\n    lodash.invokeMap = invokeMap;\n    lodash.iteratee = iteratee;\n    lodash.keyBy = keyBy;\n    lodash.keys = keys;\n    lodash.keysIn = keysIn;\n    lodash.map = map;\n    lodash.mapKeys = mapKeys;\n    lodash.mapValues = mapValues;\n    lodash.matches = matches;\n    lodash.matchesProperty = matchesProperty;\n    lodash.memoize = memoize;\n    lodash.merge = merge;\n    lodash.mergeWith = mergeWith;\n    lodash.method = method;\n    lodash.methodOf = methodOf;\n    lodash.mixin = mixin;\n    lodash.negate = negate;\n    lodash.nthArg = nthArg;\n    lodash.omit = omit;\n    lodash.omitBy = omitBy;\n    lodash.once = once;\n    lodash.orderBy = orderBy;\n    lodash.over = over;\n    lodash.overArgs = overArgs;\n    lodash.overEvery = overEvery;\n    lodash.overSome = overSome;\n    lodash.partial = partial;\n    lodash.partialRight = partialRight;\n    lodash.partition = partition;\n    lodash.pick = pick;\n    lodash.pickBy = pickBy;\n    lodash.property = property;\n    lodash.propertyOf = propertyOf;\n    lodash.pull = pull;\n    lodash.pullAll = pullAll;\n    lodash.pullAllBy = pullAllBy;\n    lodash.pullAllWith = pullAllWith;\n    lodash.pullAt = pullAt;\n    lodash.range = range;\n    lodash.rangeRight = rangeRight;\n    lodash.rearg = rearg;\n    lodash.reject = reject;\n    lodash.remove = remove;\n    lodash.rest = rest;\n    lodash.reverse = reverse;\n    lodash.sampleSize = sampleSize;\n    lodash.set = set;\n    lodash.setWith = setWith;\n    lodash.shuffle = shuffle;\n    lodash.slice = slice;\n    lodash.sortBy = sortBy;\n    lodash.sortedUniq = sortedUniq;\n    lodash.sortedUniqBy = sortedUniqBy;\n    lodash.split = split;\n    lodash.spread = spread;\n    lodash.tail = tail;\n    lodash.take = take;\n    lodash.takeRight = takeRight;\n    lodash.takeRightWhile = takeRightWhile;\n    lodash.takeWhile = takeWhile;\n    lodash.tap = tap;\n    lodash.throttle = throttle;\n    lodash.thru = thru;\n    lodash.toArray = toArray;\n    lodash.toPairs = toPairs;\n    lodash.toPairsIn = toPairsIn;\n    lodash.toPath = toPath;\n    lodash.toPlainObject = toPlainObject;\n    lodash.transform = transform;\n    lodash.unary = unary;\n    lodash.union = union;\n    lodash.unionBy = unionBy;\n    lodash.unionWith = unionWith;\n    lodash.uniq = uniq;\n    lodash.uniqBy = uniqBy;\n    lodash.uniqWith = uniqWith;\n    lodash.unset = unset;\n    lodash.unzip = unzip;\n    lodash.unzipWith = unzipWith;\n    lodash.update = update;\n    lodash.updateWith = updateWith;\n    lodash.values = values;\n    lodash.valuesIn = valuesIn;\n    lodash.without = without;\n    lodash.words = words;\n    lodash.wrap = wrap;\n    lodash.xor = xor;\n    lodash.xorBy = xorBy;\n    lodash.xorWith = xorWith;\n    lodash.zip = zip;\n    lodash.zipObject = zipObject;\n    lodash.zipObjectDeep = zipObjectDeep;\n    lodash.zipWith = zipWith;\n\n    // Add aliases.\n    lodash.entries = toPairs;\n    lodash.entriesIn = toPairsIn;\n    lodash.extend = assignIn;\n    lodash.extendWith = assignInWith;\n\n    // Add methods to `lodash.prototype`.\n    mixin(lodash, lodash);\n\n    /*------------------------------------------------------------------------*/\n\n    // Add methods that return unwrapped values in chain sequences.\n    lodash.add = add;\n    lodash.attempt = attempt;\n    lodash.camelCase = camelCase;\n    lodash.capitalize = capitalize;\n    lodash.ceil = ceil;\n    lodash.clamp = clamp;\n    lodash.clone = clone;\n    lodash.cloneDeep = cloneDeep;\n    lodash.cloneDeepWith = cloneDeepWith;\n    lodash.cloneWith = cloneWith;\n    lodash.conformsTo = conformsTo;\n    lodash.deburr = deburr;\n    lodash.defaultTo = defaultTo;\n    lodash.divide = divide;\n    lodash.endsWith = endsWith;\n    lodash.eq = eq;\n    lodash.escape = escape;\n    lodash.escapeRegExp = escapeRegExp;\n    lodash.every = every;\n    lodash.find = find;\n    lodash.findIndex = findIndex;\n    lodash.findKey = findKey;\n    lodash.findLast = findLast;\n    lodash.findLastIndex = findLastIndex;\n    lodash.findLastKey = findLastKey;\n    lodash.floor = floor;\n    lodash.forEach = forEach;\n    lodash.forEachRight = forEachRight;\n    lodash.forIn = forIn;\n    lodash.forInRight = forInRight;\n    lodash.forOwn = forOwn;\n    lodash.forOwnRight = forOwnRight;\n    lodash.get = get;\n    lodash.gt = gt;\n    lodash.gte = gte;\n    lodash.has = has;\n    lodash.hasIn = hasIn;\n    lodash.head = head;\n    lodash.identity = identity;\n    lodash.includes = includes;\n    lodash.indexOf = indexOf;\n    lodash.inRange = inRange;\n    lodash.invoke = invoke;\n    lodash.isArguments = isArguments;\n    lodash.isArray = isArray;\n    lodash.isArrayBuffer = isArrayBuffer;\n    lodash.isArrayLike = isArrayLike;\n    lodash.isArrayLikeObject = isArrayLikeObject;\n    lodash.isBoolean = isBoolean;\n    lodash.isBuffer = isBuffer;\n    lodash.isDate = isDate;\n    lodash.isElement = isElement;\n    lodash.isEmpty = isEmpty;\n    lodash.isEqual = isEqual;\n    lodash.isEqualWith = isEqualWith;\n    lodash.isError = isError;\n    lodash.isFinite = isFinite;\n    lodash.isFunction = isFunction;\n    lodash.isInteger = isInteger;\n    lodash.isLength = isLength;\n    lodash.isMap = isMap;\n    lodash.isMatch = isMatch;\n    lodash.isMatchWith = isMatchWith;\n    lodash.isNaN = isNaN;\n    lodash.isNative = isNative;\n    lodash.isNil = isNil;\n    lodash.isNull = isNull;\n    lodash.isNumber = isNumber;\n    lodash.isObject = isObject;\n    lodash.isObjectLike = isObjectLike;\n    lodash.isPlainObject = isPlainObject;\n    lodash.isRegExp = isRegExp;\n    lodash.isSafeInteger = isSafeInteger;\n    lodash.isSet = isSet;\n    lodash.isString = isString;\n    lodash.isSymbol = isSymbol;\n    lodash.isTypedArray = isTypedArray;\n    lodash.isUndefined = isUndefined;\n    lodash.isWeakMap = isWeakMap;\n    lodash.isWeakSet = isWeakSet;\n    lodash.join = join;\n    lodash.kebabCase = kebabCase;\n    lodash.last = last;\n    lodash.lastIndexOf = lastIndexOf;\n    lodash.lowerCase = lowerCase;\n    lodash.lowerFirst = lowerFirst;\n    lodash.lt = lt;\n    lodash.lte = lte;\n    lodash.max = max;\n    lodash.maxBy = maxBy;\n    lodash.mean = mean;\n    lodash.meanBy = meanBy;\n    lodash.min = min;\n    lodash.minBy = minBy;\n    lodash.stubArray = stubArray;\n    lodash.stubFalse = stubFalse;\n    lodash.stubObject = stubObject;\n    lodash.stubString = stubString;\n    lodash.stubTrue = stubTrue;\n    lodash.multiply = multiply;\n    lodash.nth = nth;\n    lodash.noConflict = noConflict;\n    lodash.noop = noop;\n    lodash.now = now;\n    lodash.pad = pad;\n    lodash.padEnd = padEnd;\n    lodash.padStart = padStart;\n    lodash.parseInt = parseInt;\n    lodash.random = random;\n    lodash.reduce = reduce;\n    lodash.reduceRight = reduceRight;\n    lodash.repeat = repeat;\n    lodash.replace = replace;\n    lodash.result = result;\n    lodash.round = round;\n    lodash.runInContext = runInContext;\n    lodash.sample = sample;\n    lodash.size = size;\n    lodash.snakeCase = snakeCase;\n    lodash.some = some;\n    lodash.sortedIndex = sortedIndex;\n    lodash.sortedIndexBy = sortedIndexBy;\n    lodash.sortedIndexOf = sortedIndexOf;\n    lodash.sortedLastIndex = sortedLastIndex;\n    lodash.sortedLastIndexBy = sortedLastIndexBy;\n    lodash.sortedLastIndexOf = sortedLastIndexOf;\n    lodash.startCase = startCase;\n    lodash.startsWith = startsWith;\n    lodash.subtract = subtract;\n    lodash.sum = sum;\n    lodash.sumBy = sumBy;\n    lodash.template = template;\n    lodash.times = times;\n    lodash.toFinite = toFinite;\n    lodash.toInteger = toInteger;\n    lodash.toLength = toLength;\n    lodash.toLower = toLower;\n    lodash.toNumber = toNumber;\n    lodash.toSafeInteger = toSafeInteger;\n    lodash.toString = toString;\n    lodash.toUpper = toUpper;\n    lodash.trim = trim;\n    lodash.trimEnd = trimEnd;\n    lodash.trimStart = trimStart;\n    lodash.truncate = truncate;\n    lodash.unescape = unescape;\n    lodash.uniqueId = uniqueId;\n    lodash.upperCase = upperCase;\n    lodash.upperFirst = upperFirst;\n\n    // Add aliases.\n    lodash.each = forEach;\n    lodash.eachRight = forEachRight;\n    lodash.first = head;\n\n    mixin(lodash, (function() {\n      var source = {};\n      baseForOwn(lodash, function(func, methodName) {\n        if (!hasOwnProperty.call(lodash.prototype, methodName)) {\n          source[methodName] = func;\n        }\n      });\n      return source;\n    }()), { 'chain': false });\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * The semantic version number.\n     *\n     * @static\n     * @memberOf _\n     * @type {string}\n     */\n    lodash.VERSION = VERSION;\n\n    // Assign default placeholders.\n    arrayEach(['bind', 'bindKey', 'curry', 'curryRight', 'partial', 'partialRight'], function(methodName) {\n      lodash[methodName].placeholder = lodash;\n    });\n\n    // Add `LazyWrapper` methods for `_.drop` and `_.take` variants.\n    arrayEach(['drop', 'take'], function(methodName, index) {\n      LazyWrapper.prototype[methodName] = function(n) {\n        n = n === undefined ? 1 : nativeMax(toInteger(n), 0);\n\n        var result = (this.__filtered__ && !index)\n          ? new LazyWrapper(this)\n          : this.clone();\n\n        if (result.__filtered__) {\n          result.__takeCount__ = nativeMin(n, result.__takeCount__);\n        } else {\n          result.__views__.push({\n            'size': nativeMin(n, MAX_ARRAY_LENGTH),\n            'type': methodName + (result.__dir__ < 0 ? 'Right' : '')\n          });\n        }\n        return result;\n      };\n\n      LazyWrapper.prototype[methodName + 'Right'] = function(n) {\n        return this.reverse()[methodName](n).reverse();\n      };\n    });\n\n    // Add `LazyWrapper` methods that accept an `iteratee` value.\n    arrayEach(['filter', 'map', 'takeWhile'], function(methodName, index) {\n      var type = index + 1,\n          isFilter = type == LAZY_FILTER_FLAG || type == LAZY_WHILE_FLAG;\n\n      LazyWrapper.prototype[methodName] = function(iteratee) {\n        var result = this.clone();\n        result.__iteratees__.push({\n          'iteratee': getIteratee(iteratee, 3),\n          'type': type\n        });\n        result.__filtered__ = result.__filtered__ || isFilter;\n        return result;\n      };\n    });\n\n    // Add `LazyWrapper` methods for `_.head` and `_.last`.\n    arrayEach(['head', 'last'], function(methodName, index) {\n      var takeName = 'take' + (index ? 'Right' : '');\n\n      LazyWrapper.prototype[methodName] = function() {\n        return this[takeName](1).value()[0];\n      };\n    });\n\n    // Add `LazyWrapper` methods for `_.initial` and `_.tail`.\n    arrayEach(['initial', 'tail'], function(methodName, index) {\n      var dropName = 'drop' + (index ? '' : 'Right');\n\n      LazyWrapper.prototype[methodName] = function() {\n        return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1);\n      };\n    });\n\n    LazyWrapper.prototype.compact = function() {\n      return this.filter(identity);\n    };\n\n    LazyWrapper.prototype.find = function(predicate) {\n      return this.filter(predicate).head();\n    };\n\n    LazyWrapper.prototype.findLast = function(predicate) {\n      return this.reverse().find(predicate);\n    };\n\n    LazyWrapper.prototype.invokeMap = baseRest(function(path, args) {\n      if (typeof path == 'function') {\n        return new LazyWrapper(this);\n      }\n      return this.map(function(value) {\n        return baseInvoke(value, path, args);\n      });\n    });\n\n    LazyWrapper.prototype.reject = function(predicate) {\n      return this.filter(negate(getIteratee(predicate)));\n    };\n\n    LazyWrapper.prototype.slice = function(start, end) {\n      start = toInteger(start);\n\n      var result = this;\n      if (result.__filtered__ && (start > 0 || end < 0)) {\n        return new LazyWrapper(result);\n      }\n      if (start < 0) {\n        result = result.takeRight(-start);\n      } else if (start) {\n        result = result.drop(start);\n      }\n      if (end !== undefined) {\n        end = toInteger(end);\n        result = end < 0 ? result.dropRight(-end) : result.take(end - start);\n      }\n      return result;\n    };\n\n    LazyWrapper.prototype.takeRightWhile = function(predicate) {\n      return this.reverse().takeWhile(predicate).reverse();\n    };\n\n    LazyWrapper.prototype.toArray = function() {\n      return this.take(MAX_ARRAY_LENGTH);\n    };\n\n    // Add `LazyWrapper` methods to `lodash.prototype`.\n    baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n      var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(methodName),\n          isTaker = /^(?:head|last)$/.test(methodName),\n          lodashFunc = lodash[isTaker ? ('take' + (methodName == 'last' ? 'Right' : '')) : methodName],\n          retUnwrapped = isTaker || /^find/.test(methodName);\n\n      if (!lodashFunc) {\n        return;\n      }\n      lodash.prototype[methodName] = function() {\n        var value = this.__wrapped__,\n            args = isTaker ? [1] : arguments,\n            isLazy = value instanceof LazyWrapper,\n            iteratee = args[0],\n            useLazy = isLazy || isArray(value);\n\n        var interceptor = function(value) {\n          var result = lodashFunc.apply(lodash, arrayPush([value], args));\n          return (isTaker && chainAll) ? result[0] : result;\n        };\n\n        if (useLazy && checkIteratee && typeof iteratee == 'function' && iteratee.length != 1) {\n          // Avoid lazy use if the iteratee has a \"length\" value other than `1`.\n          isLazy = useLazy = false;\n        }\n        var chainAll = this.__chain__,\n            isHybrid = !!this.__actions__.length,\n            isUnwrapped = retUnwrapped && !chainAll,\n            onlyLazy = isLazy && !isHybrid;\n\n        if (!retUnwrapped && useLazy) {\n          value = onlyLazy ? value : new LazyWrapper(this);\n          var result = func.apply(value, args);\n          result.__actions__.push({ 'func': thru, 'args': [interceptor], 'thisArg': undefined });\n          return new LodashWrapper(result, chainAll);\n        }\n        if (isUnwrapped && onlyLazy) {\n          return func.apply(this, args);\n        }\n        result = this.thru(interceptor);\n        return isUnwrapped ? (isTaker ? result.value()[0] : result.value()) : result;\n      };\n    });\n\n    // Add `Array` methods to `lodash.prototype`.\n    arrayEach(['pop', 'push', 'shift', 'sort', 'splice', 'unshift'], function(methodName) {\n      var func = arrayProto[methodName],\n          chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru',\n          retUnwrapped = /^(?:pop|shift)$/.test(methodName);\n\n      lodash.prototype[methodName] = function() {\n        var args = arguments;\n        if (retUnwrapped && !this.__chain__) {\n          var value = this.value();\n          return func.apply(isArray(value) ? value : [], args);\n        }\n        return this[chainName](function(value) {\n          return func.apply(isArray(value) ? value : [], args);\n        });\n      };\n    });\n\n    // Map minified method names to their real names.\n    baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n      var lodashFunc = lodash[methodName];\n      if (lodashFunc) {\n        var key = lodashFunc.name + '';\n        if (!hasOwnProperty.call(realNames, key)) {\n          realNames[key] = [];\n        }\n        realNames[key].push({ 'name': methodName, 'func': lodashFunc });\n      }\n    });\n\n    realNames[createHybrid(undefined, WRAP_BIND_KEY_FLAG).name] = [{\n      'name': 'wrapper',\n      'func': undefined\n    }];\n\n    // Add methods to `LazyWrapper`.\n    LazyWrapper.prototype.clone = lazyClone;\n    LazyWrapper.prototype.reverse = lazyReverse;\n    LazyWrapper.prototype.value = lazyValue;\n\n    // Add chain sequence methods to the `lodash` wrapper.\n    lodash.prototype.at = wrapperAt;\n    lodash.prototype.chain = wrapperChain;\n    lodash.prototype.commit = wrapperCommit;\n    lodash.prototype.next = wrapperNext;\n    lodash.prototype.plant = wrapperPlant;\n    lodash.prototype.reverse = wrapperReverse;\n    lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue;\n\n    // Add lazy aliases.\n    lodash.prototype.first = lodash.prototype.head;\n\n    if (symIterator) {\n      lodash.prototype[symIterator] = wrapperToIterator;\n    }\n    return lodash;\n  });\n\n  /*--------------------------------------------------------------------------*/\n\n  // Export lodash.\n  var _ = runInContext();\n\n  // Some AMD build optimizers, like r.js, check for condition patterns like:\n  if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {\n    // Expose Lodash on the global object to prevent errors when Lodash is\n    // loaded by a script tag in the presence of an AMD loader.\n    // See http://requirejs.org/docs/errors.html#mismatch for more details.\n    // Use `_.noConflict` to remove Lodash from the global object.\n    root._ = _;\n\n    // Define as an anonymous module so, through path mapping, it can be\n    // referenced as the \"underscore\" module.\n    define(function() {\n      return _;\n    });\n  }\n  // Check for `exports` after `define` in case a build optimizer adds it.\n  else if (freeModule) {\n    // Export for Node.js.\n    (freeModule.exports = _)._ = _;\n    // Export for CommonJS support.\n    freeExports._ = _;\n  }\n  else {\n    // Export to the global object.\n    root._ = _;\n  }\n}.call(this));\n","import lodash from 'lodash';\nexport function generateId(prefix = ''): string {\n  const key = Math.random().toString(36).substr(2, 5);\n\n  return `${key}${lodash.uniqueId(prefix)}`;\n}\n","import * as A from 'fp-ts-esm/Array';\nimport { pipe } from 'fp-ts-esm/function';\nimport * as T from 'fp-ts-esm/Tree';\nimport type { Traversal } from 'monocle-ts-esm';\nimport { Prism, fromTraversable } from 'monocle-ts-esm';\n\nimport { generateId } from './converters/generateRandomId.js';\n\n/**\n *\n *\n * Tree-like structure modification API, parametrized by node type\n * @template NodeT tree node type\n */\nexport interface Modifier<NodeT> {\n  filter: (predicate: (node: NodeT) => boolean) => Modifier<NodeT>;\n  set: (setter: (node: NodeT) => NodeT | NodeT[]) => NodeT;\n}\n\ntype ModTreeNode<T> = T & {\n  _modId: string;\n};\n\n/**\n * Creates a tree modifier parametrized by node type\n *\n * @template NodeT tree node type\n * @param {(node: NodeT) => NodeT[]} nodesAccessor how to get to child nodes\n * @param {(nodes: NodeT[]) => { [key: string]: NodeT[] }} nodesSetter how to add inner nodes into a parent\n * @param {(root: NodeT)} root tree root (curried)\n */\nexport const getModifier =\n  <NodeT>(\n    nodesAccessor: (node: NodeT) => NodeT[],\n    nodesSetter: (nodes: NodeT[]) => { [key: string]: NodeT[] }\n  ) =>\n  (root: NodeT): Modifier<NodeT> => {\n    class TraversalModifier implements Modifier<NodeT> {\n      traversal: Traversal<T.Tree<ModTreeNode<NodeT>>, NodeT>;\n\n      tree: T.Tree<ModTreeNode<NodeT>>;\n\n      constructor(\n        tree: T.Tree<ModTreeNode<NodeT>>,\n        traversal: Traversal<T.Tree<ModTreeNode<NodeT>>, NodeT>\n      ) {\n        this.tree = tree;\n        this.traversal = traversal;\n      }\n\n      filter(predicate: (node: NodeT) => boolean) {\n        return new TraversalModifier(\n          this.tree,\n          this.traversal.composePrism(Prism.fromPredicate(predicate))\n        );\n      }\n\n      set(setter: (node: NodeT) => NodeT | NodeT[]) {\n        return pipe(\n          // @ts-ignore $TsFixMe\n          this.traversal.asFold().getAll(this.tree),\n          A.map((node: ModTreeNode<NodeT>) => node._modId),\n          foldTree(this.tree, setter)\n        );\n      }\n    }\n\n    const modifyById =\n      (idsToSet: string[], setter: (node: NodeT) => NodeT | NodeT[]) =>\n      (modTreeNode: ModTreeNode<NodeT>) => {\n        const { _modId, ...rest } = modTreeNode;\n        const node = rest as unknown as NodeT;\n        return idsToSet.includes(_modId) ? setter(node) : node;\n      };\n\n    const mergeWith = (prefix: NodeT[]) => (suffix: NodeT[]) => [...prefix, ...suffix];\n\n    const toArray = (node: NodeT) => (Array.isArray(node) ? node : A.of(node));\n\n    const foldTree =\n      (tree: T.Tree<ModTreeNode<NodeT>>, setter: (node: NodeT) => NodeT | NodeT[]) =>\n      (idsToSet: string[]): NodeT =>\n        T.fold<ModTreeNode<NodeT>, NodeT>((root, forest) => ({\n          ...root,\n          ...nodesSetter(\n            forest.reduce(\n              (modifiedForest, node) =>\n                // @ts-ignore $TsFixMe\n                pipe(node, modifyById(idsToSet, setter), toArray, mergeWith(modifiedForest)),\n              [] as NodeT[]\n            )\n          ),\n        }))(tree);\n\n    const tree = T.unfoldTree<ModTreeNode<NodeT>, NodeT>(root, node => [\n      { ...node, _modId: generateId() },\n      nodesAccessor(node),\n    ]);\n\n    return new TraversalModifier(\n      tree,\n      // @ts-ignore $TsFixMe\n      fromTraversable(T.tree)<ModTreeNode<NodeT>>()\n    );\n  };\n","// Colors\nexport const ACTION_COLOR_DEFAULT = '#116DFF';\nexport const TEXT_COLOR_DEFAULT = '#000000';\nexport const BG_COLOR_DEFAULT = '#ffffff';\nexport const FALLBACK_COLOR_DEFAULT = '#000000';\nexport const FALLBACK_COLOR_BRIGHT_DEFAULT = '#FFFFFF';\n\n// Desktop heading font sizes\n// SYNC: must match $header*Size in wix-rich-content-common/statics/styles/consts.scss\nexport const HEADING_FONT_SIZES = {\n  h1: '40px',\n  h2: '28px',\n  h3: '24px',\n  h4: '20px',\n  h5: '18px',\n  h6: '16px',\n} as const;\n\nexport const PARAGRAPH_FONT_SIZE = '16px';\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\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) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\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","import * as A from './Array.js';\nimport { pipe } from './function.js';\nimport { flap as flap_ } from './Functor.js';\nimport * as _ from './internal.js';\nimport * as RR from './ReadonlyRecord.js';\nimport * as Se from './Semigroup.js';\nimport * as S from './string.js';\nimport { wiltDefault, witherDefault } from './Witherable.js';\n// -------------------------------------------------------------------------------------\n// model\n// -------------------------------------------------------------------------------------\n/**\n * Calculate the number of key/value pairs in a `Record`.\n *\n * @example\n * import { size } from \"fp-ts/Record\";\n *\n * assert.deepStrictEqual(size({ a: true, b: 2, c: \"three\" }), 3);\n *\n * @since 2.0.0\n */\nexport const size = RR.size;\n/**\n * Test whether a `Record` is empty.\n *\n * @example\n * import { isEmpty } from \"fp-ts/Record\";\n *\n * assert.deepStrictEqual(isEmpty({}), true);\n * assert.deepStrictEqual(isEmpty({ a: 3 }), false);\n *\n * @since 2.0.0\n */\nexport const isEmpty = RR.isEmpty;\nconst keys_ = (O) => (r) => Object.keys(r).sort(O.compare);\n/**\n * The keys of a `Record`, sorted alphabetically.\n *\n * @example\n * import { keys } from \"fp-ts/Record\";\n *\n * assert.deepStrictEqual(keys({ c: 1, a: 2, b: 3 }), [\"a\", \"b\", \"c\"]);\n *\n * @since 2.0.0\n */\nexport const keys = /*#__PURE__*/ keys_(S.Ord);\nexport function collect(O) {\n    if (typeof O === 'function') {\n        return collect(S.Ord)(O);\n    }\n    const keysO = keys_(O);\n    return (f) => (r) => {\n        const out = [];\n        for (const key of keysO(r)) {\n            out.push(f(key, r[key]));\n        }\n        return out;\n    };\n}\n/**\n * Get a sorted `Array` of the key/value pairs contained in a `Record`.\n * Sorted alphabetically by key.\n *\n * @example\n * import { toArray } from 'fp-ts/Record'\n *\n * const x = { c: 3, a: \"foo\", b: false };\n * assert.deepStrictEqual(toArray(x), [\n *   [\"a\", \"foo\"],\n *   [\"b\", false],\n *   [\"c\", 3],\n * ]);\n *\n * @category conversions\n * @since 2.0.0\n */\nexport const toArray = /*#__PURE__*/ collect(S.Ord)((k, a) => [\n    k,\n    a\n]);\nexport function toUnfoldable(U) {\n    return (r) => {\n        const sas = toArray(r);\n        const len = sas.length;\n        return U.unfold(0, (b) => (b < len ? _.some([sas[b], b + 1]) : _.none));\n    };\n}\n/**\n * Insert or replace a key/value pair in a `Record`.\n *\n * @example\n * import { upsertAt } from 'fp-ts/Record'\n *\n * assert.deepStrictEqual(upsertAt(\"a\", 5)({ a: 1, b: 2 }), { a: 5, b: 2 });\n * assert.deepStrictEqual(upsertAt(\"c\", 5)({ a: 1, b: 2 }), { a: 1, b: 2, c: 5 });\n *\n * @since 2.10.0\n */\nexport const upsertAt = RR.upsertAt;\n/**\n * Test whether or not a key exists in a `Record`.\n *\n * Note. This function is not pipeable because is a `Refinement`.\n *\n * @example\n * import { has } from 'fp-ts/Record'\n *\n * assert.deepStrictEqual(has(\"a\", { a: 1, b: 2 }), true);\n * assert.deepStrictEqual(has(\"c\", { a: 1, b: 2 }), false);\n *\n * @since 2.10.0\n */\nexport const has = RR.has;\nexport function deleteAt(k) {\n    return (r) => {\n        if (!_.has.call(r, k)) {\n            return r;\n        }\n        const out = Object.assign({}, r);\n        delete out[k];\n        return out;\n    };\n}\n/**\n * Replace a key/value pair in a `Record`.\n *\n * @returns If the specified key exists it returns an `Option` containing a new `Record`\n * with the entry updated, otherwise it returns `None`\n *\n * @example\n * import { updateAt } from 'fp-ts/Record'\n * import { option } from 'fp-ts'\n *\n * assert.deepStrictEqual(updateAt(\"a\", 3)({ a: 1, b: 2 }), option.some({ a: 3, b: 2 }));\n * assert.deepStrictEqual(updateAt(\"c\", 3)({ a: 1, b: 2 }), option.none);\n *\n * @since 2.0.0\n */\nexport const updateAt = (k, a) => modifyAt(k, () => a);\n/**\n * Applies a mapping function to one spcific key/value pair in a `Record`.\n *\n * @returns If the specified key exists it returns an `Option` containing a new `Record`\n * with the entry updated, otherwise it returns `None`\n *\n * @example\n * import { modifyAt } from 'fp-ts/Record'\n * import { option } from 'fp-ts'\n *\n * assert.deepStrictEqual(modifyAt(\"a\", (x: number) => x * 3)({ a: 1, b: 2 }), option.some({ a: 3, b: 2 }));\n * assert.deepStrictEqual(modifyAt(\"c\", (x: number) => x * 3)({ a: 1, b: 2 }), option.none);\n *\n * @since 2.0.0\n */\nexport const modifyAt = (k, f) => (r) => {\n    if (!has(k, r)) {\n        return _.none;\n    }\n    const out = Object.assign({}, r);\n    out[k] = f(r[k]);\n    return _.some(out);\n};\nexport function pop(k) {\n    const deleteAtk = deleteAt(k);\n    return (r) => {\n        const oa = lookup(k, r);\n        return _.isNone(oa) ? _.none : _.some([oa.value, deleteAtk(r)]);\n    };\n}\n// TODO: remove non-curried overloading in v3\n/**\n * Test whether one `Record` contains all of the keys and values\n * contained in another `Record`.\n *\n * @example\n * import { isSubrecord } from 'fp-ts/Record'\n * import { string } from 'fp-ts'\n *\n * assert.deepStrictEqual(\n *   isSubrecord(string.Eq)({ a: \"foo\", b: \"bar\", c: \"baz\" })({ a: \"foo\", b: \"bar\", c: \"baz\" }),\n *   true\n * );\n * assert.deepStrictEqual(\n *   isSubrecord(string.Eq)({ a: \"foo\", b: \"bar\", c: \"baz\" })({ a: \"foo\", c: \"baz\" }),\n *   true\n * );\n * assert.deepStrictEqual(\n *   isSubrecord(string.Eq)({ a: \"foo\", b: \"bar\", c: \"baz\" })({ a: \"foo\", b: \"not-bar\", c: \"baz\" }),\n *   false\n * );\n * assert.deepStrictEqual(\n *   isSubrecord(string.Eq)({ a: \"foo\", b: \"bar\" })({ a: \"foo\", b: \"bar\", c: \"baz\" }),\n *   false\n * );\n *\n * @since 2.0.0\n */\nexport const isSubrecord = RR.isSubrecord;\n// TODO: remove non-curried overloading in v3\n/**\n * Lookup the value for a key in a `Record`.\n *\n * @returns If the specified key exists it returns an `Option` containing the value,\n * otherwise it returns `None`\n *\n * @example\n * import { lookup } from 'fp-ts/Record'\n * import { option } from 'fp-ts'\n *\n * assert.deepStrictEqual(lookup(\"b\")({ a: \"foo\", b: \"bar\" }), option.some(\"bar\"));\n * assert.deepStrictEqual(lookup(\"c\")({ a: \"foo\", b: \"bar\" }), option.none);\n *\n * @since 2.0.0\n */\nexport const lookup = RR.lookup;\n/**\n * Map a `Record` passing the key/value pairs to the iterating function.\n *\n * @example\n * import { mapWithIndex } from \"fp-ts/Record\";\n *\n * const f = (k: string, n: number) => `${k.toUpperCase()}-${n}`;\n * assert.deepStrictEqual(mapWithIndex(f)({ a: 3, b: 5 }), { a: \"A-3\", b: \"B-5\" });\n *\n * @since 2.0.0\n */\nexport const mapWithIndex = RR.mapWithIndex;\n/**\n * Map a `Record` passing the values to the iterating function.\n *\n * @example\n * import { map } from \"fp-ts/Record\";\n *\n * const f = (n: number) => `-${n}-`;\n * assert.deepStrictEqual(map(f)({ a: 3, b: 5 }), { a: \"-3-\", b: \"-5-\" });\n *\n * @category mapping\n * @since 2.0.0\n */\nexport const map = RR.map;\nexport function reduceWithIndex(...args) {\n    return args.length === 1 ? RR.reduceWithIndex(args[0]) : RR.reduceWithIndex(S.Ord)(...args);\n}\nexport function foldMapWithIndex(O) {\n    return 'compare' in O ? RR.foldMapWithIndex(O) : RR.foldMapWithIndex(S.Ord)(O);\n}\nexport function reduceRightWithIndex(...args) {\n    return args.length === 1 ? RR.reduceRightWithIndex(args[0]) : RR.reduceRightWithIndex(S.Ord)(...args);\n}\n/**\n * Create a `Record` with one key/value pair.\n *\n * @example\n * import { singleton } from \"fp-ts/Record\";\n *\n * assert.deepStrictEqual(singleton(\"a\", 1), { a: 1 });\n *\n * @since 2.0.0\n */\nexport const singleton = RR.singleton;\nexport function traverseWithIndex(F) {\n    return RR.traverseWithIndex(F);\n}\nexport function traverse(F) {\n    return RR.traverse(F);\n}\nexport function sequence(F) {\n    return RR.sequence(F);\n}\n/**\n * @category filtering\n * @since 2.6.5\n */\nexport const wither = (F) => {\n    const traverseF = traverse(F);\n    return (f) => (fa) => F.map(pipe(fa, traverseF(f)), compact);\n};\n/**\n * @category filtering\n * @since 2.6.5\n */\nexport const wilt = (F) => {\n    const traverseF = traverse(F);\n    return (f) => (fa) => F.map(pipe(fa, traverseF(f)), separate);\n};\n/**\n * Maps a `Record` with a function returning an `Either` and\n * partitions the resulting `Record` into `Left`s and `Right`s.\n *\n * @example\n * import { partitionMapWithIndex } from \"fp-ts/Record\"\n * import { either } from \"fp-ts\"\n *\n * const f = (key: string, a: number) =>\n *   a >= 0 ? either.right(`${key} is >= 0 (${a})`) : either.left(`${key} is < 0 (${a})`);\n * assert.deepStrictEqual(partitionMapWithIndex(f)({ a: -1, b: 2, c: 123 }), {\n *   left: {\n *     a: \"a is < 0 (-1)\",\n *   },\n *   right: {\n *     b: \"b is >= 0 (2)\",\n *     c: \"c is >= 0 (123)\",\n *   },\n * });\n *\n * @since 2.0.0\n */\nexport const partitionMapWithIndex = RR.partitionMapWithIndex;\nexport function partitionWithIndex(predicateWithIndex) {\n    return RR.partitionWithIndex(predicateWithIndex);\n}\n/**\n * Maps a `Record` with an iterating function that takes key and value and\n * returns an `Option`, keeping only the `Some` values and discarding `None`s.\n *\n * @example\n * import { filterMapWithIndex } from \"fp-ts/Record\"\n * import { option } from \"fp-ts\"\n *\n * const f = (key: string, a: number) => (a >= 0 ? option.some(`${key}${a}`) : option.none);\n * assert.deepStrictEqual(filterMapWithIndex(f)({ a: -1, b: 2, c: 3 }), {\n *   b: \"b2\",\n *   c: \"c3\",\n * });\n *\n * @since 2.0.0\n */\nexport const filterMapWithIndex = RR.filterMapWithIndex;\nexport function filterWithIndex(predicateWithIndex) {\n    return RR.filterWithIndex(predicateWithIndex);\n}\nexport function fromFoldable(M, F) {\n    return RR.fromFoldable(M, F);\n}\n/**\n * Alias of [`toArray`](#toArray).\n *\n * @example\n * import { toEntries } from 'fp-ts/Record'\n *\n * assert.deepStrictEqual(toEntries({ b: 2, a: 1 }), [['a', 1], ['b', 2]])\n *\n * @since 2.12.0\n * @category conversions\n */\nexport const toEntries = toArray;\n/**\n * Converts an `Array` of `[key, value]` tuples into a `Record`.\n *\n * @example\n * import { fromEntries } from 'fp-ts/Record'\n *\n * assert.deepStrictEqual(fromEntries([['a', 1], ['b', 2], ['a', 3]]), { b: 2, a: 3 })\n *\n * @since 2.12.0\n * @category conversions\n */\nexport const fromEntries = (fa) => fromFoldable(Se.last(), A.Foldable)(fa);\nexport function fromFoldableMap(M, F) {\n    return RR.fromFoldableMap(M, F);\n}\n/**\n * Test if every value in a `Record` satisfies the predicate.\n *\n * @example\n * import { every } from \"fp-ts/Record\"\n *\n * assert.deepStrictEqual(every((n: number) => n >= 0)({ a: 1, b: 2 }), true);\n * assert.deepStrictEqual(every((n: number) => n >= 0)({ a: 1, b: -1 }), false);\n *\n * @since 2.0.0\n */\nexport const every = RR.every;\n/**\n * Test if at least one value in a `Record` satisfies the predicate.\n *\n * @example\n * import { some } from \"fp-ts/Record\"\n *\n * assert.deepStrictEqual(some((n: number) => n >= 0)({ a: 1, b: -2 }), true);\n * assert.deepStrictEqual(some((n: number) => n >= 0)({ a: -1, b: -2 }), false);\n *\n * @since 2.0.0\n */\nexport const some = RR.some;\n// TODO: remove non-curried overloading in v3\n/**\n * Given an `Eq` checks if a `Record` contains an entry with\n * value equal to a provided value.\n *\n * @example\n * import { elem } from \"fp-ts/Record\"\n * import { number } from \"fp-ts\"\n *\n * assert.deepStrictEqual(elem(number.Eq)(123, { foo: 123, bar: 234 }), true);\n * assert.deepStrictEqual(elem(number.Eq)(-7, { foo: 123, bar: 234 }), false);\n *\n * @since 2.0.0\n */\nexport const elem = RR.elem;\n/**\n * Union of two `Record`s.\n * Takes two `Record`s and produces a `Record` combining all the\n * entries of the two inputs.\n * It uses the `concat` function of the provided `Magma` to\n * combine the elements with the same key.\n *\n * @example\n * import { union } from \"fp-ts/Record\";\n * import { Magma } from \"fp-ts/Magma\";\n *\n * const m1: Magma<number> = { concat: (x: number, y: number) => x + y };\n * assert.deepStrictEqual(union(m1)({ a: 3, c: 3 })({ a: 1, b: 2 }), { a: 4, b: 2, c: 3 });\n * const m2: Magma<number> = { concat: (x: number) => x };\n * assert.deepStrictEqual(union(m2)({ a: 3, c: 3 })({ a: 1, b: 2 }), { a: 1, b: 2, c: 3 });\n *\n * @since 2.11.0\n */\nexport const union = (M) => {\n    const unionM = RR.union(M);\n    return (second) => (first) => {\n        if (isEmpty(first)) {\n            return { ...second };\n        }\n        if (isEmpty(second)) {\n            return { ...first };\n        }\n        return unionM(second)(first);\n    };\n};\n/**\n * Intersection of two `Record`s.\n * Takes two `Record`s and produces a `Record` combining only the\n * entries of the two inputswith the same key.\n * It uses the `concat` function of the provided `Magma` to\n * combine the elements.\n *\n * @example\n * import { intersection } from \"fp-ts/Record\";\n * import { Magma } from \"fp-ts/Magma\";\n *\n * const m1: Magma<number> = { concat: (x: number, y: number) => x + y };\n * assert.deepStrictEqual(intersection(m1)({ a: 3, c: 3 })({ a: 1, b: 2 }), { a: 4});\n * const m2: Magma<number> = { concat: (x: number) => x };\n * assert.deepStrictEqual(intersection(m2)({ a: 3, c: 3 })({ a: 1, b: 2 }), { a: 1});\n *\n * @since 2.11.0\n */\nexport const intersection = (M) => (second) => (first) => {\n    if (isEmpty(first) || isEmpty(second)) {\n        return {};\n    }\n    return RR.intersection(M)(second)(first);\n};\n/**\n * Difference between two `Record`s.\n * Takes two `Record`s and produces a `Record` composed by the\n * entries of the two inputs, removing the entries with the same\n * key in both inputs.\n *\n * @example\n * import { difference } from \"fp-ts/Record\";\n *\n * assert.deepStrictEqual(difference({ a: 1 })({ a: 1, b: 2 }), { b: 2 });\n * assert.deepStrictEqual(difference({ a: 3 })({ a: 1, b: 2 }), { b: 2 });\n * assert.deepStrictEqual(difference({ a: 3, c: 3 })({ a: 1, b: 2 }), { b: 2, c: 3 });\n *\n * @since 2.11.0\n */\nexport const difference = (second) => (first) => {\n    if (isEmpty(first)) {\n        return { ...second };\n    }\n    if (isEmpty(second)) {\n        return { ...first };\n    }\n    return RR.difference(second)(first);\n};\nconst _map = RR._map;\nconst _mapWithIndex = RR._mapWithIndex;\nconst _reduce = RR._reduce;\nconst _foldMap = RR._foldMap;\nconst _reduceRight = RR._reduceRight;\nconst _filter = RR._filter;\nconst _filterMap = RR._filterMap;\nconst _partition = RR._partition;\nconst _partitionMap = RR._partitionMap;\nconst _reduceWithIndex = RR._reduceWithIndex;\nconst _foldMapWithIndex = RR._foldMapWithIndex;\nconst _reduceRightWithIndex = RR._reduceRightWithIndex;\nconst _partitionMapWithIndex = RR._partitionMapWithIndex;\nconst _partitionWithIndex = RR._partitionWithIndex;\nconst _filterMapWithIndex = RR._filterMapWithIndex;\nconst _filterWithIndex = RR._filterWithIndex;\nconst _traverse = RR._traverse;\nconst _sequence = RR._sequence;\nconst _traverseWithIndex = (O) => (F) => {\n    const keysO = keys_(O);\n    return (ta, f) => {\n        const ks = keysO(ta);\n        if (ks.length === 0) {\n            return F.of({});\n        }\n        let fr = F.of({});\n        for (const key of ks) {\n            fr = F.ap(F.map(fr, (r) => (b) => {\n                r[key] = b;\n                return r;\n            }), f(key, ta[key]));\n        }\n        return fr;\n    };\n};\n/**\n * Given a `Predicate`, it produces a new `Record` keeping only the entries with a\n * value that satisfies the provided predicate.\n *\n * @example\n * import { filter } from \"fp-ts/Record\"\n *\n * assert.deepStrictEqual(filter((s: string) => s.length < 4)({ a: \"foo\", b: \"bar\", c: \"verylong\" }), {\n *   a: \"foo\",\n *   b: \"bar\",\n * });\n *\n * @category filtering\n * @since 2.0.0\n */\nexport const filter = RR.filter;\n/**\n * Maps a `Record` with an iterating function that returns an `Option`\n * and it keeps only the `Some` values discarding the `None`s.\n *\n * @example\n * import { filterMap } from \"fp-ts/Record\"\n * import { option } from \"fp-ts\"\n *\n * const f = (s: string) => s.length < 4 ? option.some(`${s} is short`): option.none\n * assert.deepStrictEqual(filterMap(f)({ a: \"foo\", b: \"bar\", c: \"verylong\" }), {\n *   a: \"foo is short\",\n *   b: \"bar is short\",\n * });\n *\n * @category filtering\n * @since 2.0.0\n */\nexport const filterMap = RR.filterMap;\n/**\n * Partition a `Record` into two parts according to a `Predicate`.\n *\n * @example\n * import { partition } from \"fp-ts/Record\"\n *\n * assert.deepStrictEqual(partition((s: string) => s.length < 4)({ a: \"foo\", b: \"bar\", c: \"verylong\" }), {\n *   left:{\n *     c: \"verylong\"\n *   },\n *   right: {\n *     a: \"foo\",\n *     b: \"bar\",\n *   },\n * });\n *\n * @category filtering\n * @since 2.0.0\n */\nexport const partition = RR.partition;\n/**\n * Maps a `Record` with a function returning an `Either` and\n * partitions the resulting `Record` into `Left`s and `Right`s.\n *\n * @example\n * import { partitionMap } from \"fp-ts/Record\"\n * import { either } from \"fp-ts\"\n *\n * const f = (s: string) => (s.length < 4 ? either.right(`${s} is short`) : either.left(`${s} is not short`));\n * assert.deepStrictEqual(partitionMap(f)({ a: \"foo\", b: \"bar\", c: \"verylong\" }), {\n *   left: {\n *     c: \"verylong is not short\",\n *   },\n *   right: {\n *     a: \"foo is short\",\n *     b: \"bar is short\",\n *   },\n * });\n *\n * @category filtering\n * @since 2.0.0\n */\nexport const partitionMap = RR.partitionMap;\nexport function reduce(...args) {\n    return args.length === 1 ? RR.reduce(args[0]) : RR.reduce(S.Ord)(...args);\n}\nexport function foldMap(O) {\n    return 'compare' in O ? RR.foldMap(O) : RR.foldMap(S.Ord)(O);\n}\nexport function reduceRight(...args) {\n    return args.length === 1 ? RR.reduceRight(args[0]) : RR.reduceRight(S.Ord)(...args);\n}\n/**\n * Compact a `Record` of `Option`s discarding the `None` values and\n * keeping the `Some` values.\n *\n * @example\n * import { compact } from 'fp-ts/Record'\n * import { option } from 'fp-ts'\n *\n * assert.deepStrictEqual(compact({ a: option.some(\"foo\"), b: option.none, c: option.some(\"bar\") }), {\n *   a: \"foo\",\n *   c: \"bar\",\n * });\n *\n * @category filtering\n * @since 2.0.0\n */\nexport const compact = RR.compact;\n/**\n * Separate a `Record` of `Either`s into `Left`s and `Right`s.\n *\n * @example\n * import { separate } from 'fp-ts/Record'\n * import { either } from 'fp-ts'\n *\n * assert.deepStrictEqual(\n *   separate({ a: either.right(\"foo\"), b: either.left(\"bar\"), c: either.right(\"baz\") }),\n *   {\n *     right: {\n *       a: \"foo\",\n *       c: \"baz\",\n *     },\n *     left: {\n *       b: \"bar\",\n *     },\n *   }\n * );\n *\n * @category filtering\n * @since 2.0.0\n */\nexport const separate = RR.separate;\n/**\n * @category type lambdas\n * @since 2.0.0\n */\nexport const URI = 'Record';\nexport function getShow(O) {\n    return 'compare' in O ? RR.getShow(O) : RR.getShow(S.Ord)(O);\n}\n/**\n * Given an `Eq` for the base type, it produces an `Eq`\n * for a `Record` of that base type.\n *\n * @example\n * import { getEq } from \"fp-ts/Record\";\n * import { string } from \"fp-ts\";\n * import { Eq } from \"fp-ts/Eq\";\n *\n * const eq: Eq<Record<string, string>> = getEq(string.Eq);\n * assert.deepStrictEqual(eq.equals({ a: \"foo\" }, { b: \"bar\" }), false);\n * assert.deepStrictEqual(eq.equals({ a: \"foo\" }, { a: \"foo\" }), true);\n *\n * @category instances\n * @since 2.0.0\n */\nexport const getEq = RR.getEq;\n/**\n * Returns a `Monoid` instance for `Record`s, given a `Semigroup`\n * instance for the base type.\n * The `Monoid` makes the union of two `Record`s comining the\n * overlapping entries with the provided `Semigroup`.\n *\n * @example\n * import { SemigroupSum } from 'fp-ts/number'\n * import { getMonoid } from 'fp-ts/Record'\n *\n * const M = getMonoid(SemigroupSum);\n * assert.deepStrictEqual(M.concat({ foo: 123, bar: 234 }, { foo: 456, baz: 567 }), { foo: 579 , bar: 234, baz: 567 });\n *\n * @category instances\n * @since 2.0.0\n */\nexport const getMonoid = RR.getMonoid;\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Functor = {\n    URI,\n    map: _map\n};\n/**\n * Takes a value and a `Record` of functions and returns a\n * `Record` by applying each function to the input value.\n *\n * @example\n * import { flap } from \"fp-ts/Record\"\n *\n * const fab = { x: (n: number) => `${n} times 2`, y: (n: number) => `${n * 2}` };\n * assert.deepStrictEqual(flap(3)(fab), {\n *   x: \"3 times 2\",\n *   y: \"6\",\n * });\n *\n * @category mapping\n * @since 2.10.0\n */\nexport const flap = /*#__PURE__*/ flap_(Functor);\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const FunctorWithIndex = {\n    URI,\n    map: _map,\n    mapWithIndex: _mapWithIndex\n};\n/**\n * Produces a `Foldable` instance for a `Record`, using the\n * provided `Ord` to sort the `Record`'s entries by key.\n *\n * @category folding\n * @since 2.11.0\n */\nexport const getFoldable = (O) => ({\n    URI,\n    reduce: _reduce(O),\n    foldMap: _foldMap(O),\n    reduceRight: _reduceRight(O)\n});\n/**\n * Produces a `FoldableWithIndex1` instance for a `Record`, using the\n * provided `Ord` to sort the `Record`'s entries by key.\n *\n * @category folding\n * @since 2.11.0\n */\nexport const getFoldableWithIndex = (O) => ({\n    URI,\n    reduce: _reduce(O),\n    foldMap: _foldMap(O),\n    reduceRight: _reduceRight(O),\n    reduceWithIndex: _reduceWithIndex(O),\n    foldMapWithIndex: _foldMapWithIndex(O),\n    reduceRightWithIndex: _reduceRightWithIndex(O)\n});\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Compactable = {\n    URI,\n    compact,\n    separate\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Filterable = {\n    URI,\n    map: _map,\n    compact,\n    separate,\n    filter: _filter,\n    filterMap: _filterMap,\n    partition: _partition,\n    partitionMap: _partitionMap\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const FilterableWithIndex = {\n    URI,\n    map: _map,\n    mapWithIndex: _mapWithIndex,\n    compact,\n    separate,\n    filter: _filter,\n    filterMap: _filterMap,\n    partition: _partition,\n    partitionMap: _partitionMap,\n    filterMapWithIndex: _filterMapWithIndex,\n    filterWithIndex: _filterWithIndex,\n    partitionMapWithIndex: _partitionMapWithIndex,\n    partitionWithIndex: _partitionWithIndex\n};\n/**\n * Produces a `Traversable` instance for a `Record`, using the\n * provided `Ord` to sort the `Record`'s entries by key.\n *\n * @category traversing\n * @since 2.11.0\n */\nexport const getTraversable = (O) => ({\n    URI,\n    map: _map,\n    reduce: _reduce(O),\n    foldMap: _foldMap(O),\n    reduceRight: _reduceRight(O),\n    traverse: _traverse(O),\n    sequence: _sequence(O)\n});\n/**\n * Produces a `TraversableWithIndex` instance for a `Record`, using the\n * provided `Ord` to sort the `Record`'s entries by key.\n *\n * @category traversing\n * @since 2.11.0\n */\nexport const getTraversableWithIndex = (O) => ({\n    URI,\n    map: _map,\n    mapWithIndex: _mapWithIndex,\n    reduce: _reduce(O),\n    foldMap: _foldMap(O),\n    reduceRight: _reduceRight(O),\n    reduceWithIndex: _reduceWithIndex(O),\n    foldMapWithIndex: _foldMapWithIndex(O),\n    reduceRightWithIndex: _reduceRightWithIndex(O),\n    traverse: _traverse(O),\n    sequence: _sequence(O),\n    traverseWithIndex: _traverseWithIndex(O)\n});\n/**\n * @category filtering\n * @since 2.11.0\n */\nexport const getWitherable = (O) => {\n    const T = getTraversable(O);\n    return {\n        URI,\n        map: _map,\n        reduce: _reduce(O),\n        foldMap: _foldMap(O),\n        reduceRight: _reduceRight(O),\n        traverse: T.traverse,\n        sequence: T.sequence,\n        compact,\n        separate,\n        filter: _filter,\n        filterMap: _filterMap,\n        partition: _partition,\n        partitionMap: _partitionMap,\n        wither: witherDefault(T, Compactable),\n        wilt: wiltDefault(T, Compactable)\n    };\n};\n/**\n * Given a `Semigroup` in the base type, it produces a `Semigroup`\n * in the `Record` of the base type.\n * The resulting `Semigroup` concatenates two `Record`s by\n * `union`.\n *\n * @example\n * import { getUnionSemigroup } from \"fp-ts/Record\"\n * import { Semigroup } from \"fp-ts/Semigroup\"\n *\n * const sNumber: Semigroup<number> = { concat: (x, y) => x - y };\n * const sRecord: Semigroup<Record<string, number>> = getUnionSemigroup(sNumber);\n * assert.deepStrictEqual(sRecord.concat({ a: 1, b: 2 }, { b: 3, c: 4 }), { a: 1, b: -1, c: 4 });\n *\n * @category instances\n * @since 2.11.0\n */\nexport const getUnionSemigroup = (S) => {\n    const unionS = union(S);\n    return {\n        concat: (first, second) => unionS(second)(first)\n    };\n};\n/**\n * Same as `getMonoid`.\n * Returns a `Monoid` instance for `Record`s given a `Semigroup`\n * instance for the base type.\n * The `Monoid` makes the union of two `Record`s combining the\n * entries that have the same key with the provided `Semigroup`.\n *\n * @example\n * import { SemigroupSum } from 'fp-ts/number'\n * import { getUnionMonoid } from 'fp-ts/Record'\n *\n * const M = getUnionMonoid(SemigroupSum);\n * assert.deepStrictEqual(M.concat({ foo: 123, bar: 234 }, { foo: 456, baz: 567 }), { foo: 579 , bar: 234, baz: 567 });\n *\n * @category instances\n * @since 2.11.0\n */\nexport const getUnionMonoid = (S) => ({\n    concat: getUnionSemigroup(S).concat,\n    empty: {}\n});\n/**\n * Given a `Semigroup` in the base type, it produces a `Semigroup`\n * in the `Record` of the base type.\n * The resulting `Semigroup` concatenates two `Record`s by\n * `intersection`.\n *\n * @example\n * import { getIntersectionSemigroup } from \"fp-ts/Record\"\n * import { Semigroup } from \"fp-ts/Semigroup\"\n *\n * const sNumber: Semigroup<number> = { concat: (x, y) => x - y };\n * const sRecord: Semigroup<Record<string, number>> = getIntersectionSemigroup(sNumber);\n * assert.deepStrictEqual(sRecord.concat({ a: 1, b: 2 }, { b: 3, c: 4 }), { b: -1 });\n *\n * @category instances\n * @since 2.11.0\n */\nexport const getIntersectionSemigroup = (S) => {\n    const intersectionS = intersection(S);\n    return {\n        concat: (first, second) => intersectionS(second)(first)\n    };\n};\n/**\n * Produces a `Magma` with a `concat` function that combines\n * two `Record`s by making the `difference`.\n *\n * @example\n * import { getDifferenceMagma, difference } from \"fp-ts/Record\"\n * import { Magma } from \"fp-ts/Magma\"\n *\n * const r1 = { a: 3, c: 3 };\n * const r2 = { a: 1, b: 2 };\n * const m: Magma<Record<string, number>> = getDifferenceMagma<number>();\n * assert.deepStrictEqual(m.concat(r1, r2), difference(r2)(r1));\n * assert.deepStrictEqual(m.concat(r1, r2), { c: 3, b: 2 });\n *\n * @category instances\n * @since 2.11.0\n */\nexport const getDifferenceMagma = () => ({\n    concat: (first, second) => difference(second)(first)\n});\n// -------------------------------------------------------------------------------------\n// deprecated\n// -------------------------------------------------------------------------------------\n/**\n * Use `getFoldable` instead.\n *\n * @category zone of death\n * @since 2.7.0\n * @deprecated\n */\nexport const Foldable = {\n    URI,\n    reduce: /*#__PURE__*/ _reduce(S.Ord),\n    foldMap: /*#__PURE__*/ _foldMap(S.Ord),\n    reduceRight: /*#__PURE__*/ _reduceRight(S.Ord)\n};\n/**\n * Use `getFoldableWithIndex` instead.\n *\n * @category zone of death\n * @since 2.7.0\n * @deprecated\n */\nexport const FoldableWithIndex = {\n    URI,\n    reduce: /*#__PURE__*/ _reduce(S.Ord),\n    foldMap: /*#__PURE__*/ _foldMap(S.Ord),\n    reduceRight: /*#__PURE__*/ _reduceRight(S.Ord),\n    reduceWithIndex: /*#__PURE__*/ _reduceWithIndex(S.Ord),\n    foldMapWithIndex: /*#__PURE__*/ _foldMapWithIndex(S.Ord),\n    reduceRightWithIndex: /*#__PURE__*/ _reduceRightWithIndex(S.Ord)\n};\n/**\n * Use `getTraversable` instead.\n *\n * @category zone of death\n * @since 2.7.0\n * @deprecated\n */\nexport const Traversable = {\n    URI,\n    map: _map,\n    reduce: /*#__PURE__*/ _reduce(S.Ord),\n    foldMap: /*#__PURE__*/ _foldMap(S.Ord),\n    reduceRight: /*#__PURE__*/ _reduceRight(S.Ord),\n    traverse: /*#__PURE__*/ _traverse(S.Ord),\n    sequence\n};\n/**\n * Use the `getTraversableWithIndex` instead.\n *\n * @category zone of death\n * @since 2.7.0\n * @deprecated\n */\nexport const TraversableWithIndex = {\n    URI,\n    map: _map,\n    mapWithIndex: _mapWithIndex,\n    reduce: /*#__PURE__*/ _reduce(S.Ord),\n    foldMap: /*#__PURE__*/ _foldMap(S.Ord),\n    reduceRight: /*#__PURE__*/ _reduceRight(S.Ord),\n    reduceWithIndex: /*#__PURE__*/ _reduceWithIndex(S.Ord),\n    foldMapWithIndex: /*#__PURE__*/ _foldMapWithIndex(S.Ord),\n    reduceRightWithIndex: /*#__PURE__*/ _reduceRightWithIndex(S.Ord),\n    traverse: /*#__PURE__*/ _traverse(S.Ord),\n    sequence,\n    traverseWithIndex: /*#__PURE__*/ _traverseWithIndex(S.Ord)\n};\nconst _wither = /*#__PURE__*/ witherDefault(Traversable, Compactable);\nconst _wilt = /*#__PURE__*/ wiltDefault(Traversable, Compactable);\n/**\n * Use `getWitherable` instead.\n *\n * @category zone of death\n * @since 2.7.0\n * @deprecated\n */\nexport const Witherable = {\n    URI,\n    map: _map,\n    reduce: /*#__PURE__*/ _reduce(S.Ord),\n    foldMap: /*#__PURE__*/ _foldMap(S.Ord),\n    reduceRight: /*#__PURE__*/ _reduceRight(S.Ord),\n    traverse: /*#__PURE__*/ _traverse(S.Ord),\n    sequence,\n    compact,\n    separate,\n    filter: _filter,\n    filterMap: _filterMap,\n    partition: _partition,\n    partitionMap: _partitionMap,\n    wither: _wither,\n    wilt: _wilt\n};\n/**\n * Use a new `{}` instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const empty = {};\n/**\n * Use [`upsertAt`](#upsertat) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const insertAt = upsertAt;\n/**\n * Use [`has`](#has) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const hasOwnProperty = RR.hasOwnProperty;\n/**\n * This instance is deprecated, use small, specific instances instead.\n * For example if a function needs a `Functor` instance, pass `R.Functor` instead of `R.record`\n * (where `R` is from `import R from 'fp-ts/Record'`)\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const record = {\n    URI,\n    map: _map,\n    reduce: /*#__PURE__*/ _reduce(S.Ord),\n    foldMap: /*#__PURE__*/ _foldMap(S.Ord),\n    reduceRight: /*#__PURE__*/ _reduceRight(S.Ord),\n    traverse: /*#__PURE__*/ _traverse(S.Ord),\n    sequence,\n    compact,\n    separate,\n    filter: _filter,\n    filterMap: _filterMap,\n    partition: _partition,\n    partitionMap: _partitionMap,\n    mapWithIndex: _mapWithIndex,\n    reduceWithIndex: /*#__PURE__*/ _reduceWithIndex(S.Ord),\n    foldMapWithIndex: /*#__PURE__*/ _foldMapWithIndex(S.Ord),\n    reduceRightWithIndex: /*#__PURE__*/ _reduceRightWithIndex(S.Ord),\n    filterMapWithIndex: _filterMapWithIndex,\n    filterWithIndex: _filterWithIndex,\n    partitionMapWithIndex: _partitionMapWithIndex,\n    partitionWithIndex: _partitionWithIndex,\n    traverseWithIndex: /*#__PURE__*/ _traverseWithIndex(S.Ord),\n    wither: _wither,\n    wilt: _wilt\n};\n","import { identity, pipe } from './function.js';\nimport { flap as flap_ } from './Functor.js';\n// -------------------------------------------------------------------------------------\n// model\n// -------------------------------------------------------------------------------------\n/**\n * @since 2.5.0\n */\nexport function fst(ea) {\n    return ea[0];\n}\n/**\n * @since 2.5.0\n */\nexport function snd(ea) {\n    return ea[1];\n}\n/**\n * @since 2.5.0\n */\nexport const swap = (ea) => [snd(ea), fst(ea)];\n/**\n * @category instances\n * @since 2.5.0\n */\nexport function getApply(S) {\n    return {\n        URI,\n        _E: undefined,\n        map: _map,\n        ap: (fab, fa) => [fst(fab)(fst(fa)), S.concat(snd(fab), snd(fa))]\n    };\n}\nconst of = (M) => (a) => {\n    return [a, M.empty];\n};\n/**\n * @category instances\n * @since 2.5.0\n */\nexport function getApplicative(M) {\n    const A = getApply(M);\n    return {\n        URI,\n        _E: undefined,\n        map: _map,\n        ap: A.ap,\n        of: of(M)\n    };\n}\n/**\n * @category instances\n * @since 2.5.0\n */\nexport function getChain(S) {\n    const A = getApply(S);\n    return {\n        URI,\n        _E: undefined,\n        map: _map,\n        ap: A.ap,\n        chain: (ma, f) => {\n            const [b, s] = f(fst(ma));\n            return [b, S.concat(snd(ma), s)];\n        }\n    };\n}\n/**\n * @category instances\n * @since 2.5.0\n */\nexport function getMonad(M) {\n    const C = getChain(M);\n    return {\n        URI,\n        _E: undefined,\n        map: _map,\n        ap: C.ap,\n        chain: C.chain,\n        of: of(M)\n    };\n}\n/**\n * @category instances\n * @since 2.5.0\n */\nexport function getChainRec(M) {\n    const chainRec = (a, f) => {\n        let result = f(a);\n        let acc = M.empty;\n        let s = fst(result);\n        while (s._tag === 'Left') {\n            acc = M.concat(acc, snd(result));\n            result = f(s.left);\n            s = fst(result);\n        }\n        return [s.right, M.concat(acc, snd(result))];\n    };\n    const C = getChain(M);\n    return {\n        URI,\n        _E: undefined,\n        map: _map,\n        ap: C.ap,\n        chain: C.chain,\n        chainRec\n    };\n}\n/* istanbul ignore next */\nconst _compose = (bc, ab) => pipe(bc, compose(ab));\n/* istanbul ignore next */\nconst _map = (fa, f) => pipe(fa, mapFst(f));\n/* istanbul ignore next */\nconst _bimap = (fa, f, g) => pipe(fa, bimap(f, g));\n/* istanbul ignore next */\nconst _mapLeft = (fa, f) => pipe(fa, mapSnd(f));\n/* istanbul ignore next */\nconst _extend = (wa, f) => pipe(wa, extend(f));\n/* istanbul ignore next */\nconst _reduce = (fa, b, f) => pipe(fa, reduce(b, f));\n/* istanbul ignore next */\nconst _foldMap = (M) => {\n    const foldMapM = foldMap(M);\n    return (fa, f) => pipe(fa, foldMapM(f));\n};\n/* istanbul ignore next */\nconst _reduceRight = (fa, b, f) => pipe(fa, reduceRight(b, f));\n/* istanbul ignore next */\nconst _traverse = (F) => {\n    const traverseF = traverse(F);\n    return (ta, f) => pipe(ta, traverseF(f));\n};\n/**\n * Map a pair of functions over the two type arguments of the bifunctor.\n *\n * @category mapping\n * @since 2.5.0\n */\nexport const bimap = (f, g) => (fa) => [g(fst(fa)), f(snd(fa))];\n/**\n * Map a function over the first component of a `ReadonlyTuple`.\n *\n * This is the `map` operation of the `Functor` instance.\n *\n * @category mapping\n * @since 2.10.0\n */\nexport const mapFst = (f) => (fa) => [f(fst(fa)), snd(fa)];\n/**\n * Map a function over the second component of a `ReadonlyTuple`.\n *\n * This is the `mapLeft` operation of the `Bifunctor` instance.\n *\n * @category mapping\n * @since 2.10.0\n */\nexport const mapSnd = (f) => (fa) => [fst(fa), f(snd(fa))];\n/**\n * @since 2.5.0\n */\nexport const compose = (ab) => (bc) => [fst(bc), snd(ab)];\n/**\n * @since 2.5.0\n */\nexport const extend = (f) => (wa) => [f(wa), snd(wa)];\n/**\n * @category Extract\n * @since 2.6.2\n */\nexport const extract = fst;\n/**\n * @since 2.5.0\n */\nexport const duplicate = /*#__PURE__*/ extend(identity);\n/**\n * @category folding\n * @since 2.5.0\n */\nexport const reduce = (b, f) => (fa) => f(b, fst(fa));\n/**\n * @category folding\n * @since 2.5.0\n */\nexport const foldMap = () => {\n    return (f) => (fa) => f(fst(fa));\n};\n/**\n * @category folding\n * @since 2.5.0\n */\nexport const reduceRight = (b, f) => (fa) => f(fst(fa), b);\n/**\n * @category traversing\n * @since 2.6.3\n */\nexport const traverse = (F) => {\n    return (f) => (ta) => F.map(f(fst(ta)), (b) => [b, snd(ta)]);\n};\n/**\n * @category traversing\n * @since 2.6.3\n */\nexport const sequence = (F) => (fas) => {\n    return F.map(fst(fas), (a) => [a, snd(fas)]);\n};\n/**\n * @category type lambdas\n * @since 2.5.0\n */\nexport const URI = 'ReadonlyTuple';\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Functor = {\n    URI,\n    map: _map\n};\n/**\n * @category mapping\n * @since 2.10.0\n */\nexport const flap = /*#__PURE__*/ flap_(Functor);\n/**\n * Alias of [`mapFst`](#mapfst).\n *\n * @category mapping\n * @since 2.5.0\n */\nexport const map = mapFst;\n/**\n * Alias of [`mapSnd`](#mapsnd).\n *\n * @category error handling\n * @since 2.5.0\n */\nexport const mapLeft = mapSnd;\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Bifunctor = {\n    URI,\n    bimap: _bimap,\n    mapLeft: _mapLeft\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Semigroupoid = {\n    URI,\n    compose: _compose\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Comonad = {\n    URI,\n    map: _map,\n    extend: _extend,\n    extract\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Foldable = {\n    URI,\n    reduce: _reduce,\n    foldMap: _foldMap,\n    reduceRight: _reduceRight\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Traversable = {\n    URI,\n    map: _map,\n    reduce: _reduce,\n    foldMap: _foldMap,\n    reduceRight: _reduceRight,\n    traverse: _traverse,\n    sequence\n};\n// -------------------------------------------------------------------------------------\n// deprecated\n// -------------------------------------------------------------------------------------\n/**\n * This instance is deprecated, use small, specific instances instead.\n * For example if a function needs a `Functor` instance, pass `RT.Functor` instead of `RT.readonlyTuple`\n * (where `RT` is from `import RT from 'fp-ts/ReadonlyTuple'`)\n *\n * @category zone of death\n * @since 2.5.0\n * @deprecated\n */\nexport const readonlyTuple = {\n    URI,\n    compose: _compose,\n    map: _map,\n    bimap: _bimap,\n    mapLeft: _mapLeft,\n    extract,\n    extend: _extend,\n    reduce: _reduce,\n    foldMap: _foldMap,\n    reduceRight: _reduceRight,\n    traverse: _traverse,\n    sequence\n};\n","import { identity, pipe } from './function.js';\nimport { flap as flap_ } from './Functor.js';\nimport * as RT from './ReadonlyTuple.js';\n// -------------------------------------------------------------------------------------\n// model\n// -------------------------------------------------------------------------------------\n/**\n * @since 2.0.0\n */\nexport const fst = RT.fst;\n/**\n * @since 2.0.0\n */\nexport const snd = RT.snd;\n/**\n * @since 2.0.0\n */\nexport const swap = (ea) => [snd(ea), fst(ea)];\n/**\n * @category instances\n * @since 2.0.0\n */\nexport function getApply(S) {\n    return {\n        URI,\n        _E: undefined,\n        map: _map,\n        ap: (fab, fa) => [fst(fab)(fst(fa)), S.concat(snd(fab), snd(fa))]\n    };\n}\nconst of = (M) => (a) => {\n    return [a, M.empty];\n};\n/**\n * @category instances\n * @since 2.0.0\n */\nexport function getApplicative(M) {\n    const A = getApply(M);\n    return {\n        URI,\n        _E: undefined,\n        map: A.map,\n        ap: A.ap,\n        of: of(M)\n    };\n}\n/**\n * @category instances\n * @since 2.0.0\n */\nexport function getChain(S) {\n    const A = getApply(S);\n    return {\n        URI,\n        _E: undefined,\n        map: A.map,\n        ap: A.ap,\n        chain: (ma, f) => {\n            const [b, s] = f(fst(ma));\n            return [b, S.concat(snd(ma), s)];\n        }\n    };\n}\n/**\n * @category instances\n * @since 2.0.0\n */\nexport function getMonad(M) {\n    const C = getChain(M);\n    return {\n        URI,\n        _E: undefined,\n        map: C.map,\n        ap: C.ap,\n        chain: C.chain,\n        of: of(M)\n    };\n}\n/**\n * @category instances\n * @since 2.0.0\n */\nexport function getChainRec(M) {\n    const chainRec = (a, f) => {\n        let result = f(a);\n        let acc = M.empty;\n        let s = fst(result);\n        while (s._tag === 'Left') {\n            acc = M.concat(acc, snd(result));\n            result = f(s.left);\n            s = fst(result);\n        }\n        return [s.right, M.concat(acc, snd(result))];\n    };\n    const C = getChain(M);\n    return {\n        URI,\n        _E: undefined,\n        map: C.map,\n        ap: C.ap,\n        chain: C.chain,\n        chainRec\n    };\n}\n/* istanbul ignore next */\nconst _compose = (bc, ab) => pipe(bc, compose(ab));\n/* istanbul ignore next */\nconst _map = (fa, f) => pipe(fa, mapFst(f));\n/* istanbul ignore next */\nconst _bimap = (fa, f, g) => pipe(fa, bimap(f, g));\n/* istanbul ignore next */\nconst _mapLeft = (fa, f) => pipe(fa, mapSnd(f));\n/* istanbul ignore next */\nconst _extend = (wa, f) => pipe(wa, extend(f));\n/* istanbul ignore next */\nconst _reduce = (fa, b, f) => pipe(fa, reduce(b, f));\n/* istanbul ignore next */\nconst _foldMap = (M) => {\n    const foldMapM = foldMap(M);\n    return (fa, f) => pipe(fa, foldMapM(f));\n};\n/* istanbul ignore next */\nconst _reduceRight = (fa, b, f) => pipe(fa, reduceRight(b, f));\n/* istanbul ignore next */\nfunction _traverse(F) {\n    const traverseF = traverse(F);\n    return (ta, f) => pipe(ta, traverseF(f));\n}\n/**\n * Map a pair of functions over the two type arguments of the bifunctor.\n *\n * @category mapping\n * @since 2.0.0\n */\nexport const bimap = (f, g) => (fa) => [g(fst(fa)), f(snd(fa))];\n/**\n * Map a function over the first component of a `Tuple`.\n *\n * This is the `map` operation of the `Functor` instance.\n *\n * @category mapping\n * @since 2.0.0\n */\nexport const mapFst = (f) => (fa) => [f(fst(fa)), snd(fa)];\n/**\n * Map a function over the second component of a `Tuple`.\n *\n * This is the `mapLeft` operation of the `Bifunctor` instance.\n *\n * @category mapping\n * @since 2.10.0\n */\nexport const mapSnd = (f) => (fa) => [fst(fa), f(snd(fa))];\n/**\n * @since 2.0.0\n */\nexport const compose = (ab) => (bc) => [fst(bc), snd(ab)];\n/**\n * @since 2.0.0\n */\nexport const extend = (f) => (wa) => [f(wa), snd(wa)];\n/**\n * @since 2.0.0\n */\nexport const duplicate = /*#__PURE__*/ extend(identity);\n/**\n * @category Extract\n * @since 2.6.2\n */\nexport const extract = RT.extract;\n/**\n * @category folding\n * @since 2.0.0\n */\nexport const foldMap = RT.foldMap;\n/**\n * @category folding\n * @since 2.0.0\n */\nexport const reduce = RT.reduce;\n/**\n * @category folding\n * @since 2.0.0\n */\nexport const reduceRight = RT.reduceRight;\n/**\n * @category traversing\n * @since 2.6.3\n */\nexport const traverse = (F) => {\n    return (f) => (ta) => F.map(f(fst(ta)), (b) => [b, snd(ta)]);\n};\n/**\n * @category traversing\n * @since 2.6.3\n */\nexport const sequence = (F) => (fas) => {\n    return F.map(fst(fas), (a) => [a, snd(fas)]);\n};\n/**\n * @category type lambdas\n * @since 2.0.0\n */\nexport const URI = 'Tuple';\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Functor = {\n    URI,\n    map: _map\n};\n/**\n * @category mapping\n * @since 2.10.0\n */\nexport const flap = /*#__PURE__*/ flap_(Functor);\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Bifunctor = {\n    URI,\n    bimap: _bimap,\n    mapLeft: _mapLeft\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Semigroupoid = {\n    URI,\n    compose: _compose\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Comonad = {\n    URI,\n    map: _map,\n    extend: _extend,\n    extract\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Foldable = {\n    URI,\n    reduce: _reduce,\n    foldMap: _foldMap,\n    reduceRight: _reduceRight\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Traversable = {\n    URI,\n    map: _map,\n    reduce: _reduce,\n    foldMap: _foldMap,\n    reduceRight: _reduceRight,\n    traverse: _traverse,\n    sequence\n};\n// -------------------------------------------------------------------------------------\n// deprecated\n// -------------------------------------------------------------------------------------\n/**\n * Use [`mapFst`](#mapfst) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const map = mapFst;\n/**\n * Use [`mapSnd`](#mapsnd) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const mapLeft = mapSnd;\n/**\n * This instance is deprecated, use small, specific instances instead.\n * For example if a function needs a `Functor` instance, pass `T.Functor` instead of `T.tuple`\n * (where `T` is from `import T from 'fp-ts/Tuple'`)\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const tuple = {\n    URI,\n    compose: _compose,\n    map: _map,\n    bimap: _bimap,\n    mapLeft: _mapLeft,\n    extract,\n    extend: _extend,\n    reduce: _reduce,\n    foldMap: _foldMap,\n    reduceRight: _reduceRight,\n    traverse: _traverse,\n    sequence\n};\n","export function fromEntries(iterable: $TSFixMe) {\n  return [...iterable].reduce((obj, [key, val]) => {\n    obj[key] = val;\n    return obj;\n  }, {});\n}\n\nconst isValidHexColor = (color?: string) =>\n  color && /^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{8}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{4})$/.test(color);\n\nexport const getValidHexColor = (color?: string) =>\n  color && isValidHexColor(color) ? color : undefined;\n","export { fromEntries, getValidHexColor } from '../utils.js';\n","import type { Decoration } from './../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport { Decoration_Type } from './../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport type { CustomTextualStyle } from './../../ricos-types/index.js';\n\nimport type { TextDecoration } from '../models/decoration.js';\n\nexport class EmptyDecoration implements TextDecoration {\n  type = Decoration_Type.UNRECOGNIZED;\n\n  getDecoration(): Decoration {\n    return {} as Decoration;\n  }\n\n  fromCustomStyle(_customStyle: CustomTextualStyle): TextDecoration {\n    return new EmptyDecoration();\n  }\n\n  toCustomStyle(): CustomTextualStyle {\n    return {};\n  }\n\n  overrideWith(decoration: TextDecoration): TextDecoration {\n    return decoration;\n  }\n}\n","import type { Decoration } from './../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport { Decoration_Type } from './../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport type { CustomTextualStyle } from './../../ricos-types/index.js';\n\nimport type { TextDecoration } from '../models/decoration.js';\nimport { EmptyDecoration } from './empty-decoration.js';\n\nconst parseFontWeight = (fontWeight: CustomTextualStyle['fontWeight']) => {\n  if (fontWeight === 'bold') {\n    return 700;\n  }\n  if (fontWeight === 'normal') {\n    return 400;\n  }\n  return parseInt(fontWeight as string, 10);\n};\n\nexport class BoldDecoration implements TextDecoration {\n  type = Decoration_Type.BOLD;\n\n  private readonly customStyle: CustomTextualStyle;\n\n  private constructor(customStyle: CustomTextualStyle) {\n    this.customStyle = customStyle;\n  }\n\n  static of(decoration: Decoration) {\n    if (decoration.type !== Decoration_Type.BOLD) {\n      throw new TypeError(`invalid decoration initializer ${decoration}`);\n    }\n\n    return new BoldDecoration({ fontWeight: decoration.fontWeightValue });\n  }\n\n  getDecoration(): Decoration {\n    return {\n      type: this.type,\n      fontWeightValue: parseFontWeight(this.customStyle.fontWeight),\n    };\n  }\n\n  static fromCustomStyle(customStyle: CustomTextualStyle): TextDecoration {\n    return new BoldDecoration(customStyle);\n  }\n\n  fromCustomStyle(customStyle: CustomTextualStyle): TextDecoration {\n    return BoldDecoration.fromCustomStyle(customStyle);\n  }\n\n  toCustomStyle(): CustomTextualStyle {\n    return this.customStyle;\n  }\n\n  overrideWith(decoration: TextDecoration): TextDecoration {\n    if (!(decoration instanceof BoldDecoration || decoration instanceof EmptyDecoration)) {\n      throw new TypeError(`invalid merge decoration ${decoration}`);\n    }\n    const customStyle = { ...this.customStyle, ...decoration.toCustomStyle() };\n    return new BoldDecoration(customStyle);\n  }\n}\n","import lodash from 'lodash';\n\nimport type { Decoration } from './../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport { Decoration_Type } from './../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport type { CustomTextualStyle } from './../../ricos-types/index.js';\n\nimport type { TextDecoration } from '../models/decoration.js';\nimport { EmptyDecoration } from './empty-decoration.js';\n\nexport class ColorDecoration implements TextDecoration {\n  type = Decoration_Type.COLOR;\n\n  private readonly customStyle: CustomTextualStyle;\n\n  private constructor(customStyle: CustomTextualStyle) {\n    this.customStyle = customStyle;\n  }\n\n  static of(decoration: Decoration) {\n    if (decoration.type !== Decoration_Type.COLOR) {\n      throw new TypeError(`invalid decoration initializer ${decoration}`);\n    }\n\n    const { foreground: color, background: backgroundColor } = decoration.colorData || {};\n    const customStyle = lodash.pickBy({ color, backgroundColor });\n    return new ColorDecoration(customStyle);\n  }\n\n  getDecoration(): Decoration {\n    return {\n      type: this.type,\n      colorData: {\n        ...(this.customStyle.color && { foreground: this.customStyle.color }),\n        ...(this.customStyle.backgroundColor && { background: this.customStyle.backgroundColor }),\n      },\n    };\n  }\n\n  static fromCustomStyle(customStyle: CustomTextualStyle): TextDecoration {\n    return new ColorDecoration(customStyle);\n  }\n\n  fromCustomStyle(customStyle: CustomTextualStyle): TextDecoration {\n    return ColorDecoration.fromCustomStyle(customStyle);\n  }\n\n  toCustomStyle(): CustomTextualStyle {\n    return this.customStyle;\n  }\n\n  overrideWith(decoration: TextDecoration): TextDecoration {\n    if (!(decoration instanceof ColorDecoration || decoration instanceof EmptyDecoration)) {\n      throw new TypeError(`invalid merge decoration ${decoration}`);\n    }\n    const customStyle = { ...this.customStyle, ...decoration.toCustomStyle() };\n    return new ColorDecoration(customStyle);\n  }\n}\n","import type { Decoration } from './../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport { Decoration_Type, FontSizeData_fontType } from './../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport type { CustomTextualStyle } from './../../ricos-types/index.js';\n\nimport type { TextDecoration } from '../models/decoration.js';\nimport { EmptyDecoration } from './empty-decoration.js';\n\nexport class FontSizeDecoration implements TextDecoration {\n  type = Decoration_Type.FONT_SIZE;\n\n  private readonly customStyle: CustomTextualStyle;\n\n  private constructor(customStyle: CustomTextualStyle) {\n    this.customStyle = customStyle;\n  }\n\n  static of(decoration: Decoration) {\n    if (decoration.type !== Decoration_Type.FONT_SIZE) {\n      throw new TypeError(`invalid decoration initializer ${decoration}`);\n    }\n\n    const value = decoration.fontSizeData?.value;\n    const unit = decoration.fontSizeData?.unit?.toLocaleLowerCase();\n\n    const customStyle = value\n      ? {\n          fontSize: `${value}${unit}`,\n        }\n      : {};\n\n    return new FontSizeDecoration(customStyle);\n  }\n\n  getDecoration(): Decoration {\n    return {\n      type: this.type,\n      fontSizeData: {\n        value: parseInt(this.customStyle.fontSize as string),\n        unit: FontSizeData_fontType.PX,\n      },\n    };\n  }\n\n  static fromCustomStyle(customStyle: CustomTextualStyle): TextDecoration {\n    return new FontSizeDecoration(customStyle);\n  }\n\n  fromCustomStyle(customStyle: CustomTextualStyle): TextDecoration {\n    return FontSizeDecoration.fromCustomStyle(customStyle);\n  }\n\n  toCustomStyle(): CustomTextualStyle {\n    return this.customStyle;\n  }\n\n  overrideWith(decoration: TextDecoration): TextDecoration {\n    if (!(decoration instanceof FontSizeDecoration || decoration instanceof EmptyDecoration)) {\n      throw new TypeError(`invalid merge decoration ${decoration}`);\n    }\n    const customStyle = { ...this.customStyle, ...decoration.toCustomStyle() };\n    return new FontSizeDecoration(customStyle);\n  }\n}\n","import type { Decoration } from './../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport { Decoration_Type } from './../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport type { CustomTextualStyle } from './../../ricos-types/index.js';\n\nimport type { TextDecoration } from '../models/decoration.js';\nimport { EmptyDecoration } from './empty-decoration.js';\n\nexport class ItalicDecoration implements TextDecoration {\n  type = Decoration_Type.ITALIC;\n\n  private readonly customStyle: CustomTextualStyle;\n\n  private constructor(customStyle: CustomTextualStyle) {\n    this.customStyle = customStyle;\n  }\n\n  static of(decoration: Decoration) {\n    if (decoration.type !== Decoration_Type.ITALIC) {\n      throw new TypeError(`invalid decoration initializer ${decoration}`);\n    }\n\n    return new ItalicDecoration(decoration.italicData ? { fontStyle: 'italic' } : {});\n  }\n\n  getDecoration(): Decoration {\n    return {\n      type: this.type,\n      italicData: this.customStyle.fontStyle?.includes('italic'),\n    };\n  }\n\n  static fromCustomStyle(customStyle: CustomTextualStyle): TextDecoration {\n    return new ItalicDecoration(customStyle);\n  }\n\n  fromCustomStyle(customStyle: CustomTextualStyle): TextDecoration {\n    return ItalicDecoration.fromCustomStyle(customStyle);\n  }\n\n  toCustomStyle(): CustomTextualStyle {\n    return this.customStyle;\n  }\n\n  overrideWith(decoration: TextDecoration): TextDecoration {\n    if (!(decoration instanceof ItalicDecoration || decoration instanceof EmptyDecoration)) {\n      throw new TypeError(`invalid merge decoration ${decoration}`);\n    }\n    const customStyle = { ...this.customStyle, ...decoration.toCustomStyle() };\n    return new ItalicDecoration(customStyle);\n  }\n}\n","import * as A from 'fp-ts-esm/Array';\nimport * as E from 'fp-ts-esm/Either';\nimport { identity, pipe } from 'fp-ts-esm/function';\nimport * as S from 'fp-ts-esm/Semigroup';\n\nexport const firstRight = <C, T>(\n  candidate: C,\n  defaultT: T,\n  resolvers: [(candidate: C) => boolean, (candidate: C) => T][]\n): T => {\n  const firstRightSemi = E.getSemigroup<T, T>(S.first<T>());\n  const concatFirstRightSemi = S.concatAll(firstRightSemi)(E.left(defaultT));\n  return pipe(\n    concatFirstRightSemi(\n      pipe(\n        resolvers,\n        A.map(r =>\n          pipe(\n            candidate,\n            E.fromPredicate(r[0], () => defaultT),\n            E.map(r[1])\n          )\n        )\n      )\n    ),\n    E.fold(identity, identity)\n  );\n};\n","import type { Decoration } from './../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport { Decoration_Type } from './../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport type { CustomTextualStyle } from './../../ricos-types/index.js';\n\nimport type { TextDecoration } from '../models/decoration.js';\nimport { BoldDecoration } from './bold-decoration.js';\nimport { ColorDecoration } from './color-decoration.js';\nimport { EmptyDecoration } from './empty-decoration.js';\nimport { FontSizeDecoration } from './font-size-decoration.js';\nimport { ItalicDecoration } from './italic-decoration.js';\nimport { firstRight } from './utils.js';\n\nexport class Decorations {\n  private readonly decorations: TextDecoration[];\n\n  private static readonly empty = new EmptyDecoration();\n\n  private constructor(textDecorations: TextDecoration[]) {\n    this.decorations = textDecorations;\n  }\n\n  static of(decorations: Decoration[]): Decorations {\n    const textDecorations = (decorations || []).map(Decorations.toTextDecoration);\n    return new Decorations(textDecorations);\n  }\n\n  static fromCustomStyle(customStyle: CustomTextualStyle): Decorations {\n    const { color, backgroundColor, ...rest } = customStyle;\n    const colorStyle: Record<string, string> = {\n      color: color ?? '',\n      backgroundColor: backgroundColor ?? '',\n    };\n    // TODO refactor to splitStyles method\n    // TODO: make sure all customStyle fields are converted correctly\n    const styles = Object.entries(rest)\n      .map(([k, v]) => ({ [k]: v }))\n      .concat([colorStyle]);\n    const textDecorations = styles.map(Decorations.styleToDecoration);\n    return new Decorations(textDecorations);\n  }\n\n  private static styleToDecoration(style: CustomTextualStyle): TextDecoration {\n    return firstRight(style, Decorations.empty, [\n      [s => !!s.fontWeight, s => BoldDecoration.fromCustomStyle(s)],\n      [s => !!s.fontSize, s => FontSizeDecoration.fromCustomStyle(s)],\n      [s => !!s.fontStyle, s => ItalicDecoration.fromCustomStyle(s)],\n      [s => !!s.color || !!s.backgroundColor, s => ColorDecoration.fromCustomStyle(s)],\n    ]);\n  }\n\n  private static toTextDecoration(decoration: Decoration): TextDecoration {\n    return firstRight(decoration, Decorations.empty, [\n      [d => d.type === Decoration_Type.BOLD, d => BoldDecoration.of(d)],\n      [d => d.type === Decoration_Type.ITALIC, d => ItalicDecoration.of(d)],\n      [d => d.type === Decoration_Type.FONT_SIZE, d => FontSizeDecoration.of(d)],\n      [d => d.type === Decoration_Type.COLOR, d => ColorDecoration.of(d)],\n    ]);\n  }\n\n  toDecorationArray() {\n    return this.decorations\n      .filter(d => d.type !== Decoration_Type.UNRECOGNIZED)\n      .map(d => d.getDecoration());\n  }\n\n  byType(type: Decoration_Type): TextDecoration {\n    return this.decorations.find(d => d.type === type) || Decorations.empty;\n  }\n\n  toCustomStyle() {\n    return this.decorations.reduce(\n      (style, decoration) => ({\n        ...style,\n        ...decoration.toCustomStyle(),\n      }),\n      {} as CustomTextualStyle\n    );\n  }\n\n  overrideWith(decorations: Decoration[]): Decorations {\n    const textDecorations = decorations.map(Decorations.toTextDecoration);\n    const overridenDecorations = textDecorations.map(decoration =>\n      this.byType(decoration.type).overrideWith(decoration)\n    );\n    const types = overridenDecorations.map(decoration => decoration.type);\n    const mergedDecorations = this.decorations\n      .filter(decoration => !types.includes(decoration.type))\n      .concat(overridenDecorations);\n    return new Decorations(mergedDecorations);\n  }\n}\n","export { Decorations } from './decorations.js';\n","import type { NodeStyle as NodeStyleRichContent } from './../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport type { CustomTextualStyle } from './../../ricos-types/index.js';\n\nexport class RicosNodeStyle {\n  nodeStyle: NodeStyleRichContent;\n\n  private constructor(nodeStyle: NodeStyleRichContent) {\n    this.nodeStyle = nodeStyle;\n  }\n\n  static of(nodeStyle?: NodeStyleRichContent): RicosNodeStyle {\n    return new RicosNodeStyle(nodeStyle || {});\n  }\n\n  getNodeStyle = (): NodeStyleRichContent => this.nodeStyle;\n\n  static fromCustomStyle = (customStyle: CustomTextualStyle): RicosNodeStyle => {\n    const { paddingBottom, paddingTop } = customStyle;\n    const nodeStyle = {\n      paddingBottom,\n      paddingTop,\n    };\n    return RicosNodeStyle.of(nodeStyle as NodeStyleRichContent);\n  };\n\n  toCustomStyle = (): CustomTextualStyle => {\n    return { paddingBottom: this.nodeStyle.paddingBottom, paddingTop: this.nodeStyle.paddingTop };\n  };\n\n  overrideWith = (nodeStyle: NodeStyleRichContent = {}): RicosNodeStyle => {\n    return RicosNodeStyle.of({ ...this.nodeStyle, ...nodeStyle });\n  };\n}\n","import lodash from 'lodash';\n\nimport type { TextStyle as TextStyleRichContent } from './../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport type { CustomTextualStyle } from './../../ricos-types/index.js';\n\ntype TextStyleWithoutAlignment = Omit<TextStyleRichContent, 'textAlignment'>;\n\nexport class RicosTextStyle {\n  textStyle: TextStyleWithoutAlignment;\n\n  private constructor(textStyle: TextStyleWithoutAlignment) {\n    this.textStyle = lodash.pickBy(textStyle);\n  }\n\n  static of(textStyle: TextStyleWithoutAlignment): RicosTextStyle {\n    return new RicosTextStyle(textStyle || {});\n  }\n\n  getTextStyle = (): TextStyleWithoutAlignment => this.textStyle;\n\n  static fromCustomStyle = (customStyle: CustomTextualStyle): RicosTextStyle => {\n    const { lineHeight } = customStyle;\n    const textStyle = { lineHeight } as TextStyleRichContent;\n    return RicosTextStyle.of(textStyle);\n  };\n\n  toCustomStyle = (): CustomTextualStyle => {\n    return { lineHeight: this.textStyle.lineHeight };\n  };\n\n  overrideWith = (textStyle: TextStyleWithoutAlignment): RicosTextStyle => {\n    return RicosTextStyle.of({ ...this.textStyle, ...textStyle });\n  };\n}\n","import lodash from 'lodash';\n\nimport type { RicosTheme, WixColor, WixPalette } from './../../../ricos-types/index.js';\n\nconst BG_COLOR = 11;\nconst DISABLED_COLOR = 13;\nconst TEXT_COLOR_LOW = 14;\nconst TEXT_COLOR = 15;\nconst ACTION_COLOR = 18;\n\nexport const COLORS = { BG_COLOR, DISABLED_COLOR, TEXT_COLOR_LOW, TEXT_COLOR, ACTION_COLOR };\nexport const assertWixPalette = (palette: WixPalette) => {\n  if (palette.length === 0) {\n    throw Error('Received empty palette colors array');\n  }\n  const receivedColors = palette.map(val => val.name);\n  const missingColors = lodash.difference(\n    Object.values(COLORS).map(num => `color_${num}`),\n    receivedColors\n  );\n  if (missingColors.length > 0) {\n    const error: string[] = [];\n    error.push(\n      'Some palette colors were not supplied:',\n      `\\n${missingColors}\\n`,\n      'Palette array must include the following colors:',\n      Object.entries(COLORS)\n        .map(entry => `${entry[1]} - ${entry[0]}`)\n        .toString()\n        .split(',')\n        .join('\\n'),\n      ''\n    );\n    throw Error(error.join('\\n'));\n  }\n  return palette as WixPalette;\n};\n\nexport const isRicosPalette = (palette: RicosTheme['palette']) =>\n  palette &&\n  typeof palette !== 'string' &&\n  !Array.isArray(palette) &&\n  (palette.actionColor || palette.textColor || palette.bgColor);\n\nconst getColorByCode = (wixPalette: WixPalette, code: number): WixColor => {\n  const idx = code <= 5 ? code - 1 : code - 6;\n  return wixPalette[idx];\n};\n\nexport const getColorValue = (wixPalette: WixPalette, code: number): string =>\n  getColorByCode(wixPalette, code).value;\n","export { assertWixPalette, COLORS, getColorValue, isRicosPalette } from './wixPaletteUtils.js';\n","import type { CssVarsObject } from './../../ricos-types/index.js';\n\nimport { FALLBACK_COLOR_BRIGHT_DEFAULT, FALLBACK_COLOR_DEFAULT } from '../theme-constants.js';\n\nfunction rgbaToHexA(rgbaArr: string[], withAlpha?: boolean) {\n  const rgba = rgbaArr.map((r, index) => {\n    if (r.indexOf('%') > -1) {\n      const p = parseFloat(r.substr(0, r.length - 1)) / 100;\n\n      if (index < 3) {\n        return Math.round(p * 255);\n      }\n      return p;\n    }\n    return parseFloat(r);\n  });\n\n  let r = Number(rgba[0]).toString(16),\n    g = Number(rgba[1]).toString(16),\n    b = Number(rgba[2]).toString(16),\n    a = Math.round(Number(rgba[3]) * 255).toString(16);\n\n  if (r.length === 1) r = '0' + r;\n  if (g.length === 1) g = '0' + g;\n  if (b.length === 1) b = '0' + b;\n  if (a.length === 1) a = '0' + a;\n\n  const isDefaultOpacity = a.toLowerCase() === 'ff';\n  return '#' + r + g + b + (withAlpha && !isDefaultOpacity ? a : '');\n}\n\nexport function toHexFormat(color: string): string {\n  if (color === 'transparent') {\n    return FALLBACK_COLOR_BRIGHT_DEFAULT + '00';\n  }\n  if ((color.startsWith('rgb(') || color.startsWith('rgba(')) && color.endsWith(')')) {\n    const rgba = color.replace(/^(rgba\\()|^(rgb\\()|(\\s)|(\\))$/g, '').split(',');\n    if (rgba.length === 4) {\n      return rgbaToHexA(rgba, true);\n    } else if (rgba.length === 3) {\n      return rgbaToHexA(rgba);\n    } else throw Error('[ricos-common] themeUtils.ts: Bad RGB / RGBA value: ' + color);\n  }\n  if (!color.startsWith('#')) {\n    throw Error(\n      `[ricos-common] themeUtils.ts: Bad Hex (${color}).\n      Ricos color can only accept \"transparent\" or a HEX formatted color as its value`\n    );\n  }\n  return color;\n}\n\nexport function canTransformToHex(color: string): boolean {\n  if (color === 'transparent') {\n    return true;\n  }\n  if ((color.startsWith('rgb(') || color.startsWith('rgba(')) && color.endsWith(')')) {\n    const rgba = color.replace(/^(rgba\\()|^(rgb\\()|(\\s)|(\\))$/g, '').split(',');\n    return rgba.length === 4 || rgba.length === 3;\n  }\n  if (!color.startsWith('#')) {\n    return false;\n  }\n  return true;\n}\n\n/**\n * Brightness of a HEX color (`0-255`)\n * @param hexCode Color in HEX format\n */\nfunction getBrightness(hexCode: string): number {\n  const _hexCode = hexCode.replace('#', '');\n\n  const r = parseInt(_hexCode.substr(0, 2), 16);\n  const g = parseInt(_hexCode.substr(2, 2), 16);\n  const b = parseInt(_hexCode.substr(4, 2), 16);\n\n  return (r * 299 + g * 587 + b * 114) / 1000;\n}\n\n/**\n * Ricos Brightness standard\n * @param hexColor Color in HEX format\n */\nexport function isBright(hexColor?: string): boolean {\n  if (!hexColor) {\n    return false;\n  }\n  return getBrightness(hexColor) > 150;\n}\n\n/**\n * Converts a given action color into a default, darker `fallbackColor`\n * if the given one is too bright. else, returns `actionColor`.\n *\n * Use this to prevent \"bright-on-bright\" content occurrence.\n * @param actionColor HEX Format\n */\nexport function adaptForeground(actionColor?: string, fallbackColor?: string): string | undefined {\n  if (!actionColor) {\n    return undefined;\n  }\n  return getBrightness(actionColor) < 150 ? actionColor : fallbackColor || FALLBACK_COLOR_DEFAULT;\n}\n\n/**\n * Converts `hexColor` from HEX format to RGB format\n * @param hexColor color in HEX format\n * @returns `RGB` object\n */\nfunction hexToRgbA(hexColor: string) {\n  const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})?$/i.exec(\n    hexColor.toLowerCase()\n  );\n  if (result) {\n    return {\n      r: parseInt(result[1], 16),\n      g: parseInt(result[2], 16),\n      b: parseInt(result[3], 16),\n      a: parseInt(result[4], 16),\n    };\n  }\n  // Fail silently since primarily we use RGB relative values\n  // and this is only used as a fallback\n  console.error('Bad Hex');\n  return undefined;\n}\n\n/**\n * Creates an RGB tuple based on a given HEX color.\n * (Used for CSS-Vars tuples in `params.scss`).\n * @example\n * toRgbTuple('#FFFFFF') => '255, 255, 255'\n *\n * @param hexColor color in HEX format\n * @returns RGB tuple\n */\nexport function toRgbTuple(hexColor?: string) {\n  if (!hexColor) {\n    return undefined;\n  }\n  const rgb = hexToRgbA(hexColor);\n  if (!rgb) {\n    return undefined;\n  }\n  const { r, g, b } = rgb;\n  return `${r}, ${g}, ${b}`;\n}\n\n/**\n * Converts `hexColor` from HEX format to a CSS RGBA string\n * @example\n * toCssRgbA('#FFFFFF', 0.5) => 'rgba(255, 255, 255, 0.5)'\n *\n * @param hexColor color in HEX format\n * @returns RGB object\n */\nexport function toCssRgbA(hexColor: string | undefined, opacity: number): string | undefined {\n  if (!hexColor) {\n    return hexColor;\n  }\n  if (/^#([A-Fa-f\\d]{2}){1,4}$/.test(hexColor)) {\n    const rgb = hexToRgbA(hexColor);\n    if (!rgb) {\n      return undefined;\n    }\n    const { r, g, b, a } = rgb;\n    return `rgba(${r}, ${g}, ${b}, ${opacity * (a || 1)})`;\n  }\n  throw new Error('[ricos-common] themeUtils.ts: Bad Hex');\n}\n\nexport function toCssRgb(rgbTuple: string) {\n  return `rgb(${rgbTuple})`;\n}\n\nexport const toDashedKey = (str: string) =>\n  str.replace(/([A-Z])/g, (all, letter) => '-' + letter.toLowerCase());\n\nconst spacing = ' '.repeat(4);\nexport const toVarStrings = (varsObject: CssVarsObject) => {\n  const convertToRicosKey = (key: string) => '--ricos-' + toDashedKey(key);\n  const cleanFromSemicolons = (value: unknown) =>\n    typeof value === 'string' ? value.split(';')[0] : value;\n  return Object.entries(varsObject)\n    .filter(entry => !!entry[1])\n    .map(entry => convertToRicosKey(entry[0]) + ': ' + cleanFromSemicolons(entry[1]) + ';\\n')\n    .join(spacing);\n};\n\nexport const buildCssVars = (parentClass: string, ...varObjects: CssVarsObject[]) => `\n  ${parentClass ? `.${parentClass}` : '*'} {\n    ${varObjects\n      .map(toVarStrings)\n      .join(spacing)\n      .replace(/[\\s\\t]+$/, '')}\n  }\\n`;\n\nexport const buildCssVarsObj = (varObject: CssVarsObject): CssVarsObject => {\n  const convertToRicosKey = (key: string) => '--ricos-' + toDashedKey(key);\n\n  return Object.entries(varObject).reduce(\n    (acc, [key, value]) => ({ ...acc, [convertToRicosKey(key)]: value }),\n    {}\n  );\n};\n\nexport const anyCssColorToHex = (color: string, element: HTMLElement): string => {\n  let resolvedColor = color;\n  if (color.startsWith('var(')) {\n    resolvedColor = resolveCSSVar(color, element);\n  }\n\n  if (isRgbaTuple(resolvedColor)) {\n    return rgbaToHexA(resolvedColor.split(','), true);\n  }\n\n  if (isRgbTuple(resolvedColor)) {\n    return rgbaToHexA(resolvedColor.split(','));\n  }\n\n  return toHexFormat(resolvedColor);\n};\n\nconst resolveCSSVar = (value: string, element: HTMLElement) => {\n  const maxDepth = 5;\n  let resolved = value;\n  let depth = 0;\n\n  while (resolved.startsWith('var(') && depth++ < maxDepth) {\n    const match = resolved.match(/var\\((--[^,\\s)]+)(?:,\\s*([^)]+))?\\)/);\n    if (!match) break;\n    const [, varName, fallback] = match;\n    const varValue = getComputedStyle(element).getPropertyValue(varName).trim();\n    resolved = varValue || fallback?.trim() || resolved;\n  }\n\n  return resolved;\n};\n\nconst isRgbaTuple = (color: string): boolean => {\n  return color.match(/^\\d{1,3},\\d{1,3},\\d{1,3},\\d{1,3}$/) !== null;\n};\n\nconst isRgbTuple = (color: string): boolean => {\n  return color.match(/^\\d{1,3},\\d{1,3},\\d{1,3}$/) !== null;\n};\n","import type { PaletteRgbColors, RicosTheme } from './../../../ricos-types/index.js';\n\nexport const isRicosPaletteRgb = (palette: RicosTheme['palette']): palette is PaletteRgbColors =>\n  typeof palette === 'object' && 'type' in palette && palette.type === 'rgb';\n","import type {\n  CssVarsObject,\n  PaletteColors,\n  PaletteConfig,\n  PaletteRgbColors,\n  RicosTheme,\n} from './../../../ricos-types/index.js';\n\nimport { FALLBACK_COLOR_DEFAULT } from '../../theme-constants.js';\nimport { COLORS, assertWixPalette, getColorValue, isRicosPalette } from '../palettes/index.js';\nimport {\n  adaptForeground,\n  canTransformToHex,\n  toCssRgb,\n  toHexFormat,\n  toRgbTuple,\n} from '../themeUtils.js';\nimport { isRicosPaletteRgb } from './identifiers.js';\n\ntype StringMap = { [key: string]: string | undefined };\n\nconst createCssVars = (\n  colors: PaletteColors | PaletteRgbColors,\n  config?: PaletteConfig\n): CssVarsObject => {\n  const { contentBgColor = false, focusActionColor, settingsActionColor } = config || {};\n  const isPaletteRgb = isRicosPaletteRgb(colors);\n\n  const {\n    textColor,\n    bgColor: backgroundColor,\n    actionColor,\n    fallbackColor = isPaletteRgb ? '0, 0, 0' : FALLBACK_COLOR_DEFAULT,\n    disabledColor,\n    textColorLow,\n    textOnActionColor,\n  } = colors;\n\n  const parseColors = (obj: StringMap): CssVarsObject =>\n    Object.keys(obj).reduce((acc: StringMap, key: string) => {\n      const value = obj[key];\n      if (value !== undefined) {\n        const transformedValue =\n          canTransformToHex(value) && isPaletteRgb ? toRgbTuple(toHexFormat(value)) : undefined;\n\n        const colorValue = transformedValue !== undefined ? transformedValue : value;\n\n        acc[key] = isPaletteRgb ? toCssRgb(colorValue) : colorValue;\n        acc[`${key}Tuple`] = isPaletteRgb ? colorValue : toRgbTuple(colorValue);\n      }\n      return acc;\n    }, {});\n\n  const parsedValues = parseColors({\n    textColor,\n    actionColor,\n    backgroundColor,\n    fallbackColor,\n    disabledColor,\n    textColorLow,\n    settingsActionColor,\n    focusActionColor,\n    textOnActionColor,\n  });\n\n  const bgColorContainer =\n    !contentBgColor || backgroundColor === undefined\n      ? undefined\n      : isPaletteRgb\n        ? toCssRgb(backgroundColor)\n        : backgroundColor;\n\n  const actionColorFallback = isPaletteRgb // not possible to adapt foreground to rgb values since it can be CSS var\n    ? `rgb(${fallbackColor})`\n    : adaptForeground(actionColor, fallbackColor);\n\n  const actionColorFallbackTuple = isPaletteRgb\n    ? fallbackColor\n    : toRgbTuple(adaptForeground(actionColor, fallbackColor));\n\n  return {\n    ...parsedValues,\n    ...(actionColorFallback && { actionColorFallback }),\n    ...(actionColorFallbackTuple && { actionColorFallbackTuple }),\n    ...(bgColorContainer && { bgColorContainer }),\n  };\n};\n\nconst extractColors = (palette: RicosTheme['palette']): PaletteColors => {\n  if (Array.isArray(palette)) {\n    assertWixPalette(palette);\n    return {\n      actionColor: getColorValue(palette, COLORS.ACTION_COLOR),\n      bgColor: getColorValue(palette, COLORS.BG_COLOR),\n      textColor: getColorValue(palette, COLORS.TEXT_COLOR),\n      disabledColor: getColorValue(palette, COLORS.DISABLED_COLOR),\n      textColorLow: getColorValue(palette, COLORS.TEXT_COLOR_LOW),\n    };\n  } else if (palette && (isRicosPalette(palette) || isRicosPaletteRgb(palette))) {\n    return palette;\n  }\n  console.error('Unrecognized Palette object. Please refer to Ricos Theme Documentation');\n  return {};\n};\n\ninterface PaletteStrategyResult {\n  paletteVarsObject: CssVarsObject;\n  colors?: PaletteColors;\n}\n\nexport default function createPalette(\n  palette?: RicosTheme['palette'],\n  config?: RicosTheme['paletteConfig']\n): PaletteStrategyResult {\n  if (!palette) {\n    return { paletteVarsObject: {} };\n  }\n  const isPaletteRgb = isRicosPaletteRgb(palette);\n  const colors = extractColors(palette);\n  const transformedColors = transformColorsToHex(colors, isPaletteRgb);\n\n  return { paletteVarsObject: createCssVars(transformedColors, config), colors: transformedColors };\n}\n\nfunction transformColorsToHex(colors: PaletteColors, isPaletteRgb = false): PaletteColors {\n  return Object.entries(colors).reduce((acc, [key, value]) => {\n    acc[key as $TSFixMeKey<PaletteColors>] =\n      value && typeof value === 'string' && !isPaletteRgb && canTransformToHex(value)\n        ? toHexFormat(value)\n        : value;\n\n    return acc;\n  }, {} as PaletteColors);\n}\n","import type { CustomTextualStyle, RicosCustomStyles } from './../../ricos-types/index.js';\n\nexport type CustomStyleKey =\n  | keyof Pick<\n      RicosCustomStyles,\n      'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'p' | 'quote' | 'codeBlock'\n    >\n  | 'empty';\n\nexport default class CustomStyle {\n  private key: CustomStyleKey;\n\n  private customStyle: CustomTextualStyle;\n\n  constructor(key: CustomStyleKey, customStyle: CustomTextualStyle) {\n    this.key = key;\n    this.customStyle = customStyle;\n  }\n\n  getKey() {\n    return this.key;\n  }\n\n  toCustomStyle() {\n    return this.customStyle;\n  }\n\n  overrideWith(customStyle: CustomStyle): CustomStyle {\n    if (customStyle.key !== 'empty' && this.key !== customStyle.key) {\n      throw new Error(`Different keys, ${this.key} doesn't equal to ${customStyle.key}`);\n    }\n    return new CustomStyle(this.key, { ...this.customStyle, ...customStyle.customStyle });\n  }\n}\n","import CustomStyle from './custom-style.js';\n\nexport default class EmptyCustomStyle extends CustomStyle {\n  constructor() {\n    super('empty', {});\n  }\n\n  overrideWith(customStyle: CustomStyle): CustomStyle {\n    return customStyle;\n  }\n}\n","import lodash from 'lodash';\n\nimport type { RicosCustomStyles, RicosTheme } from './../../ricos-types/index.js';\n\nimport createPalette from '../themeStrategy/generators/palette.js';\nimport type { CustomStyleKey } from './custom-style.js';\nimport CustomStyle from './custom-style.js';\nimport EmptyCustomStyle from './empty-custom-style.js';\n\nconst textCustomStylesKeys = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'p', 'quote', 'codeBlock'];\n\nexport default class CustomStyles {\n  private customStyles: CustomStyle[];\n\n  private static readonly empty = new EmptyCustomStyle();\n\n  private constructor(customStyles: CustomStyle[]) {\n    this.customStyles = customStyles;\n  }\n\n  static of(rawCustomStyles: RicosCustomStyles): CustomStyles {\n    const customStyles = Object.entries(rawCustomStyles).map(\n      ([key, value]) => new CustomStyle(key as CustomStyleKey, value)\n    );\n    return new CustomStyles(customStyles);\n  }\n\n  static fromTheme(theme: RicosTheme): CustomStyles {\n    const customStyles = theme.customStyles || {};\n    const { colors } = createPalette(theme.palette, theme.paletteConfig);\n    const { textColor: color, bgColor: backgroundColor } = colors || {};\n    if (colors?.textColor || colors?.bgColor) {\n      const colorsCustomStyles: RicosCustomStyles = textCustomStylesKeys.reduce(\n        (acc, key) => ({ ...acc, [key]: { color, backgroundColor } }),\n        {}\n      );\n      return CustomStyles.of(colorsCustomStyles).overrideWith(CustomStyles.of(customStyles));\n    }\n    return CustomStyles.of(customStyles);\n  }\n\n  toCustomStyles(): RicosCustomStyles {\n    return this.customStyles.reduce((acc, style) => {\n      const customStyle = style.toCustomStyle();\n      return {\n        ...acc,\n        ...(!lodash.isEmpty(customStyle) ? { [style.getKey()]: customStyle } : {}),\n      };\n    }, {});\n  }\n\n  byKey(key: CustomStyle['key']): CustomStyle {\n    return this.customStyles.find(style => style.getKey() === key) || CustomStyles.empty;\n  }\n\n  overrideWith(customStyles: CustomStyles): CustomStyles {\n    const genericCustomStyles: RicosCustomStyles = textCustomStylesKeys.reduce(\n      (acc, key) => ({ ...acc, [key]: {} }),\n      {}\n    );\n    const overridenCustomStyles = CustomStyles.of(genericCustomStyles).customStyles.map(style =>\n      style\n        .overrideWith(this.byKey(style.getKey()))\n        .overrideWith(customStyles.byKey(style.getKey()))\n    );\n    return new CustomStyles(overridenCustomStyles);\n  }\n}\n","import * as A from 'fp-ts-esm/Array';\nimport { flow, pipe } from 'fp-ts-esm/function';\nimport * as R from 'fp-ts-esm/Record';\nimport * as T from 'fp-ts-esm/Tuple';\n\nimport { fromEntries } from './../ricos-content/lib/utils.js';\nimport type { DocumentStyle, TextNodeStyle } from './../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport type { CustomTextualStyle, RicosCustomStyles, RicosTheme } from './../ricos-types/index.js';\n\nimport { Decorations } from './decorations/index.js';\nimport { RicosNodeStyle } from './document-style/node-style.js';\nimport { RicosTextStyle } from './document-style/text-style.js';\nimport type { TextBlockNodeType } from './models/styles.js';\nimport CustomStyles from './textual-theme/custom-styles.js';\n\ntype DocumentStyleTuple = [type: TextBlockNodeType, styles: TextNodeStyle];\ntype CustomStyleKey = keyof RicosCustomStyles;\n\nconst documentToThemeKeyMap: Record<TextBlockNodeType, CustomStyleKey> = {\n  headerOne: 'h1',\n  headerTwo: 'h2',\n  headerThree: 'h3',\n  headerFour: 'h4',\n  headerFive: 'h5',\n  headerSix: 'h6',\n  paragraph: 'p',\n  blockquote: 'quote',\n  codeBlock: 'codeBlock',\n};\n\nconst themeToDocumentKeyMap: Record<CustomStyleKey, TextBlockNodeType> = pipe(\n  documentToThemeKeyMap,\n  Object.entries,\n  A.map(T.swap),\n  fromEntries\n);\n\nconst toCustomStyle = (node: TextNodeStyle): CustomTextualStyle => ({\n  ...Decorations.of(node?.decorations).toCustomStyle(),\n  ...RicosNodeStyle.of(node?.nodeStyle).toCustomStyle(),\n  ...RicosTextStyle.of({ lineHeight: node?.lineHeight }).toCustomStyle(),\n});\n\nconst toCustomStyleKey = (nodeType: TextBlockNodeType): CustomStyleKey =>\n  documentToThemeKeyMap[nodeType] as CustomStyleKey;\n\nconst toTuples = (documentStyle: Record<TextBlockNodeType, TextNodeStyle>): DocumentStyleTuple[] =>\n  R.toArray(documentStyle);\n\nconst fromTuples = (tuple: [key: CustomStyleKey, value: CustomTextualStyle][]): RicosCustomStyles =>\n  fromEntries(tuple);\n\n// @ts-expect-error $TSFixMe\nconst toRicosCustomStyles: (documentStyle: DocumentStyle) => RicosCustomStyles = flow(\n  toTuples,\n  A.map(T.bimap(toCustomStyle, toCustomStyleKey)),\n  fromTuples\n);\n\nconst toTextNodeStyle = (customStyle: CustomTextualStyle): TextNodeStyle => ({\n  decorations: Decorations.fromCustomStyle(customStyle).toDecorationArray(),\n  nodeStyle: RicosNodeStyle.fromCustomStyle(customStyle).getNodeStyle(),\n  lineHeight: RicosTextStyle.fromCustomStyle(customStyle).getTextStyle().lineHeight,\n});\n\nconst toTextNodeType = (customStyleKey: CustomStyleKey): TextBlockNodeType =>\n  themeToDocumentKeyMap[customStyleKey];\n\nconst toDocumentStyle: (customStyle: RicosCustomStyles) => DocumentStyle = flow(\n  // @ts-expect-error $TSFixMe\n  Object.entries,\n  A.map(T.bimap(toTextNodeStyle, toTextNodeType)),\n  fromEntries,\n  JSON.stringify,\n  JSON.parse\n);\n\nexport class TextStyleTransformer {\n  private theme: RicosTheme;\n\n  private constructor(theme: RicosTheme) {\n    this.theme = theme;\n  }\n\n  static fromTheme(theme: RicosTheme) {\n    return new TextStyleTransformer(theme || {});\n  }\n\n  static fromDocumentStyle(documentStyle: DocumentStyle) {\n    const customStyles = toRicosCustomStyles(documentStyle);\n    return new TextStyleTransformer({ customStyles });\n  }\n\n  toTheme() {\n    return this.theme;\n  }\n\n  toDocumentStyle() {\n    return toDocumentStyle(CustomStyles.fromTheme(this.theme).toCustomStyles());\n  }\n}\n","import lodash from 'lodash';\n\nimport type {\n  CssVarsObject,\n  RicosCustomStyles,\n  RicosNativeStyles,\n  RicosSettingsStyles,\n} from './../../../ricos-types/index.js';\n\ntype NestedObject = {\n  [key: string]: any;\n};\n\n/**\n * Sets `lineHeight` to `1.5` when `fontSize` is provided without `lineHeight`.\n * @param param0 CustomTextualStyle element\n */\nexport function fixLineHeight(obj: NestedObject): NestedObject {\n  return {\n    ...lodash.mapValues(obj, value => {\n      return typeof value === 'object' && value !== null ? fixLineHeight(value) : value;\n    }),\n    ...(obj.fontSize !== undefined && obj.lineHeight === undefined ? { lineHeight: 1.5 } : {}),\n  };\n}\n\nfunction toVars(\n  customStyles: RicosCustomStyles | RicosSettingsStyles | RicosNativeStyles,\n  prefix = '',\n  separator = '-'\n): { [propertyName: string]: string } {\n  const propertyNames: { [key: string]: string } = {};\n\n  function traverseObject(currentObj: NestedObject, currentPath = '') {\n    for (const [key, value] of Object.entries(currentObj)) {\n      const fullPath = currentPath ? `${currentPath}${separator}${key}` : key;\n      if (typeof value === 'object') {\n        traverseObject(value, fullPath);\n      } else {\n        propertyNames[`${prefix ? prefix + '-' : ''}${fullPath}`] = value;\n      }\n    }\n  }\n  traverseObject(customStyles);\n\n  return propertyNames;\n}\n\ntype CreateCustomStyles = (param: {\n  customStyles?: RicosCustomStyles;\n  settingsStyles?: RicosSettingsStyles;\n  nativeStyle?: RicosNativeStyles;\n}) => CssVarsObject;\n\nconst createCustomStyles: CreateCustomStyles = ({\n  customStyles = {},\n  settingsStyles = {},\n  nativeStyle = {},\n}) => {\n  return lodash.merge(\n    {},\n    toVars(fixLineHeight(customStyles), 'custom'),\n    toVars(settingsStyles, 'settings'),\n    toVars(nativeStyle, 'native')\n  );\n};\n\nexport default createCustomStyles;\n","import type {\n  CssVarsObject,\n  RicosTheme,\n  WixTypography,\n  WixTypographyDefinition,\n} from './../../../ricos-types/index.js';\n\nconst toEntries = (wixTypography: WixTypography): [string, WixTypographyDefinition][] =>\n  Object.entries(wixTypography);\n\nconst definitionToCssFont = (def: WixTypographyDefinition): string =>\n  def.value.substr(5, def.value.length - 6);\n\nconst toVars = (wixTypography: WixTypography) =>\n  toEntries(wixTypography).reduce(\n    (prev, curr) => ({\n      ...prev,\n      [`font-${curr[0].toLowerCase()}`]: definitionToCssFont(curr[1]),\n    }),\n    {}\n  );\n\nexport default function createTypography(typography?: RicosTheme['typography']): CssVarsObject {\n  if (!typography) {\n    return {};\n  }\n  const { fontFamily, wixTypography } = typography;\n  const wixTypographyVars: CssVarsObject = wixTypography ? toVars(wixTypography) : {};\n  return Object.assign(wixTypographyVars, fontFamily && { fontFamily });\n}\n","import lodash from 'lodash';\n\nimport type { DocumentStyle } from './../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport type { RicosTheme } from './../../ricos-types/index.js';\n\nimport { TextStyleTransformer } from '../text-style-transformer.js';\nimport createCustomStyles from './generators/customStyles.js';\nimport createPalette from './generators/palette.js';\nimport createTypography from './generators/typography.js';\nimport { buildCssVarsObj } from './themeUtils.js';\n\nexport const buildThemeCssVars = (theme: RicosTheme, documentStyle: DocumentStyle) => {\n  const documentStyleTheme = TextStyleTransformer.fromDocumentStyle(documentStyle).toTheme();\n  const mergedTheme = lodash.merge({}, theme, documentStyleTheme);\n  const { palette, paletteConfig, typography, customStyles, nativeStyle } = mergedTheme;\n\n  const { paletteVarsObject } = createPalette(palette, paletteConfig);\n  const typographyVarsObject = createTypography(typography);\n  const customsVarsObject = createCustomStyles({\n    customStyles,\n    nativeStyle,\n  });\n\n  const breakoutVars = {\n    'breakout-normal-padding-start': theme?.breakout?.normalPadding.start ?? '0',\n    'breakout-normal-padding-end': theme?.breakout?.normalPadding.end ?? '0',\n    'breakout-full-width-padding-start': theme?.breakout?.fullWidthPadding?.start ?? '0',\n    'breakout-full-width-padding-end': theme?.breakout?.fullWidthPadding?.end ?? '0',\n  };\n\n  const varsObj = {\n    ...paletteVarsObject,\n    ...typographyVarsObject,\n    ...customsVarsObject,\n    ...breakoutVars,\n  };\n\n  return buildCssVarsObj(varsObj);\n};\n\nexport const buildThemePortalCssVars = (theme: RicosTheme) => {\n  const { palette, paletteConfig, settingsStyles, customStyles = {} } = theme;\n  const { paletteVarsObject } = createPalette(palette, {\n    settingsActionColor: paletteConfig?.settingsActionColor,\n  });\n\n  const customsVarsObject = createCustomStyles({\n    customStyles: { staticToolbar: customStyles?.staticToolbar },\n    settingsStyles,\n  });\n\n  return buildCssVarsObj({\n    settingsActionColor: paletteVarsObject.settingsActionColor,\n    settingsActionColorTuple: paletteVarsObject.settingsActionColorTuple,\n    ...customsVarsObject,\n  });\n};\n","/* oxlint-disable no-redeclare */\n/* oxlint-disable @typescript-oxlint/no-namespace */\n\nexport type RicosDocument = {\n  /** Array of nodes representing content elements, such as `ParagraphNode` or `HeadingNode`. */\n  nodes: RicosDocumentNode[];\n  /** Information about the Ricos document itself, such as its version. Only relevant when building the Ricos document using the [Ricos playground](https:/ricos.dev), in which case it is auto-generated. */\n  metadata?: Metadata;\n  /** Includes styling to be applied throughout the Ricos document for the specified node types. For example, you can define general styling for `headerOne`, and then override some of the properties separately for a specific header. */\n  documentStyle?: DocumentStyle;\n};\nexport type NodeStyle = {\n  /** The top padding value in pixels. */\n  paddingTop?: string;\n  /** The bottom padding value in pixels. */\n  paddingBottom?: string;\n  backgroundColor?: string;\n};\n/**\n * Sets a default styling for specific node types throughout the entire Ricos Document. For example, you can set the text color for all Heading 1 nodes.\n * You can override the styling of specific Text nodes separately using [decorations](#decorations).\n */\nexport type DocumentStyle = {\n  /** Style for the H1 nodes. */\n  headerOne?: TextNodeStyle;\n  /** Style for the H2 nodes. */\n  headerTwo?: TextNodeStyle;\n  /** Style for the H3 nodes. */\n  headerThree?: TextNodeStyle;\n  /** Style for the H4 nodes. */\n  headerFour?: TextNodeStyle;\n  /** Style for the H5 nodes. */\n  headerFive?: TextNodeStyle;\n  /** Style for the H6 nodes. */\n  headerSix?: TextNodeStyle;\n  /** Style for the paragraph nodes. */\n  paragraph?: TextNodeStyle;\n  /** Style for the block quote nodes. */\n  blockquote?: TextNodeStyle;\n  /** Style for the codeblock nodes. */\n  codeBlock?: TextNodeStyle;\n};\nexport type TextNodeStyle = {\n  decorations?: Decoration[];\n  /**\n   * Node style, such as padding.\n   *  **Note:** This node requires the [lineSpacing](#plugins) plugin to be enabled.\n   */\n  nodeStyle?: NodeStyle;\n  /** Text line height. */\n  lineHeight?: string;\n};\nexport type Metadata = {\n  /** Ricos document version. */\n  version?: number;\n  id?: any;\n  createdTimestamp?: any;\n  updatedTimestamp?: any;\n};\nexport type TextStyle = {\n  /** Text alignment. Supported values: <br> - `AUTO`: Text aligns itself automatically. <br> - `LEFT`: Text is aligned to the left. <br> - `RIGHT`: Text is aligned to the right. <br> - `CENTER`: Text is centered. <br> - `JUSTIFY`: Text is justified to both margins. <br> Default: `AUTO`. */\n  textAlignment?: TextStyle_TextAlignment;\n  /** Vertical spacing between lines of text in an element. */\n  lineHeight?: string;\n};\nexport type TextStyle_TextAlignment = 'AUTO' | 'LEFT' | 'RIGHT' | 'CENTER' | 'JUSTIFY';\n\nexport const TextStyle_TextAlignment = {\n  AUTO: 'AUTO',\n  LEFT: 'LEFT',\n  RIGHT: 'RIGHT',\n  CENTER: 'CENTER',\n  JUSTIFY: 'JUSTIFY',\n} as const;\n\n/** Link object. */\nexport type Link = {\n  /** Absolute URL to link to. */\n  url?: string;\n  /** Target [Node ID](#node-ids) to link to. */\n  anchor?: string;\n  /** The HTML `target` attribute value for the link. This property defines where the link opens. <br> Supported values: <br> `SELF` - Opens the link in the same frame.<br> `BLANK` - Opens the link in a new browser tab or window.<br> `PARENT` - Opens the link in the parent frame.<br> `TOP` - Opens the link in the full body of the link's browser tab or window. <br> Default: `SELF` */\n  target?: Link_Target;\n  /** Relationship between the current document and the linked document. */\n  rel?: Link_Rel;\n  /** A serialized object used for a custom or external link panel. */\n  customData?: string;\n};\nexport type Link_Target = 'SELF' | 'BLANK' | 'PARENT' | 'TOP';\n\nexport const Link_Target = {\n  SELF: 'SELF',\n  BLANK: 'BLANK',\n  PARENT: 'PARENT',\n  TOP: 'TOP',\n} as const;\n\nexport type Link_Rel = {\n  /**\n   * Indicates to search engine crawlers not to follow the link.\n   *  Default: `false`\n   */\n  nofollow?: boolean;\n  /**\n   * Indicates to search engine crawlers that the link is a paid placement such as sponsored content or an advertisement.\n   *  Default: `false`\n   */\n  sponsored?: boolean;\n  /**\n   * Indicates that this link is user-generated content and isn't necessarily trusted or endorsed by the page author.\n   *  Default: `false`\n   */\n  ugc?: boolean;\n  /** Indicates that this link protects referral information from being passed to the target website. */\n  noreferrer?: boolean;\n};\n/** File source object. */\nexport type FileSource = {\n  /** File source URL. */\n  url?: string;\n  /** ID that's resolved to a URL by a resolver function. */\n  id?: string;\n  /**\n   * Whether the file's source is private. Learn more about [private files](https://dev.wix.com/docs/rest/assets/media/media-manager/files/private-files) in Wix.\n   *  Default: `false`\n   */\n  private?: boolean;\n};\nexport type Media = {\n  /** File source. */\n  src: FileSource;\n  /** Media width in pixels. */\n  width?: number;\n  /** Media height in pixels. */\n  height?: number;\n  /** Media duration in seconds. Only relevant for audio and video files. */\n  duration?: number;\n};\nexport type Never = {\n  _neverCreatedElement: any;\n};\nexport type VerticalAlignment = 'TOP' | 'MIDDLE' | 'BOTTOM';\n\nexport const VerticalAlignment = {\n  TOP: 'TOP',\n  MIDDLE: 'MIDDLE',\n  BOTTOM: 'BOTTOM',\n} as const;\n\nexport type BackgroundImage = {\n  /** Background image. */\n  media?: Media;\n  /** Background image opacity. */\n  opacity?: number;\n  /** Background image scaling. */\n  scaling?: ImageScaling;\n  /** Position of background. Defaults to `CENTER`. */\n  position?: ImagePosition;\n};\nexport type ImageScaling = 'AUTO' | 'CONTAIN' | 'COVER';\n\nexport const ImageScaling = {\n  AUTO: 'AUTO',\n  CONTAIN: 'CONTAIN',\n  COVER: 'COVER',\n} as const;\n\nexport type ImagePosition =\n  | 'CENTER'\n  | 'CENTER_LEFT'\n  | 'CENTER_RIGHT'\n  | 'TOP'\n  | 'TOP_LEFT'\n  | 'TOP_RIGHT'\n  | 'BOTTOM'\n  | 'BOTTOM_LEFT'\n  | 'BOTTOM_RIGHT';\n\nexport const ImagePosition = {\n  CENTER: 'CENTER',\n  CENTER_LEFT: 'CENTER_LEFT',\n  CENTER_RIGHT: 'CENTER_RIGHT',\n  TOP: 'TOP',\n  TOP_LEFT: 'TOP_LEFT',\n  TOP_RIGHT: 'TOP_RIGHT',\n  BOTTOM: 'BOTTOM',\n  BOTTOM_LEFT: 'BOTTOM_LEFT',\n  BOTTOM_RIGHT: 'BOTTOM_RIGHT',\n} as const;\n\n/** Gradient configuration. Either linear or radial. */\nexport type Gradient = Gradient_Linear | Gradient_Radial;\nexport type Gradient_Type = 'LINEAR' | 'RADIAL';\n\nexport const Gradient_Type = {\n  LINEAR: 'LINEAR',\n  RADIAL: 'RADIAL',\n} as const;\n\n/** Background styling. Either a solid color or gradient. */\nexport type Background = Background_ColorVariant | Background_GradientVariant;\nexport type Background_Type = 'COLOR' | 'GRADIENT';\n\nexport const Background_Type = {\n  COLOR: 'COLOR',\n  GRADIENT: 'GRADIENT',\n} as const;\n\nexport type Background_ColorVariant = {\n  type: 'COLOR';\n  /** Background color as a hexadecimal value. */\n  color: string;\n};\nexport type Background_GradientVariant = {\n  type: 'GRADIENT';\n  /** Gradient configuration. */\n  gradient: Gradient;\n};\nexport type Gradient_Linear = {\n  type: 'LINEAR';\n  stops: Gradient_Stop[];\n  /**\n   * Angle in degrees for linear gradient (0-360).\n   *  Default: `90`\n   */\n  angle?: number;\n};\nexport type Gradient_Radial = {\n  type: 'RADIAL';\n  stops: Gradient_Stop[];\n  /**\n   * Horizontal center position (0-100).\n   *  Default: `50`\n   */\n  centerX?: number;\n  /**\n   * Vertical center position (0-100).\n   *  Default: `50`\n   */\n  centerY?: number;\n};\nexport type Gradient_Stop = {\n  /** Stop color as a hexadecimal value. */\n  color?: string;\n  /**\n   * Stop position (0-1).\n   *  Default: `0`\n   */\n  position?: number;\n};\nexport type PluginContainerData = {\n  /** Node display width. */\n  width?: PluginContainerData_Width;\n  /** Node alignment in its container. */\n  alignment?: PluginContainerData_Alignment;\n  /** Spoiler cover settings. */\n  spoiler?: PluginContainerData_Spoiler;\n  /** Node display height. */\n  height?: PluginContainerData_Height;\n  /**\n   * Whether the text should wrap around the node when it's displayed. If `textWrap` is `false`, the node fills the width of its container.\n   *  Default: `true` for all node types except `DIVIDER`.\n   */\n  textWrap?: boolean;\n};\nexport type PluginContainerData_Alignment = 'CENTER' | 'LEFT' | 'RIGHT';\n\nexport const PluginContainerData_Alignment = {\n  CENTER: 'CENTER',\n  LEFT: 'LEFT',\n  RIGHT: 'RIGHT',\n} as const;\n\nexport type PluginContainerData_Spoiler = {\n  /**\n   * Whether the spoiler cover is enabled.\n   *  Default: `false`\n   */\n  enabled?: boolean;\n  /** Text displayed on the spoiler cover. */\n  description?: string;\n  /** Text that appears on the button that removes the spoiler cover. */\n  buttonText?: string;\n};\n/** Node display width. */\nexport type PluginContainerData_Width = {\n  /**\n   * Width of a node in a container. Supported values:\n   *  - `CONTENT`: Width of the container matches the content width.\n   *  - `SMALL`: Small width.\n   *  - `ORIGINAL`: Width of the container matches the original image width. **Note:** This value is only applicable for `imageData` containers.\n   *  `FULL_WIDTH`: Image container takes up the full width of the screen. **Note:** This value is only applicable for `imageData` containers.\n   */\n  size?: PluginContainerData_Width_Type;\n  /** A custom width value in pixels. */\n  custom?: string;\n};\nexport type PluginContainerData_Width_Type = 'CONTENT' | 'SMALL' | 'ORIGINAL' | 'FULL_WIDTH';\n\nexport const PluginContainerData_Width_Type = {\n  CONTENT: 'CONTENT',\n  SMALL: 'SMALL',\n  ORIGINAL: 'ORIGINAL',\n  FULL_WIDTH: 'FULL_WIDTH',\n} as const;\n\nexport type PluginContainerData_Height = {\n  /** Node display height in pixels. */\n  custom?: string;\n};\nexport type Decoration =\n  | BoldDecoration\n  | ItalicDecoration\n  | UnderlineDecoration\n  | SpoilerDecoration\n  | AnchorDecoration\n  | MentionDecoration\n  | LinkDecoration\n  | ColorDecoration\n  | FontSizeDecoration\n  | StrikethroughDecoration\n  | SuperscriptDecoration\n  | SubscriptDecoration\n  | FontFamilyDecoration;\nexport type Decoration_Type =\n  | 'BOLD'\n  | 'ITALIC'\n  | 'UNDERLINE'\n  | 'SPOILER'\n  | 'ANCHOR'\n  | 'MENTION'\n  | 'LINK'\n  | 'COLOR'\n  | 'FONT_SIZE'\n  | 'STRIKETHROUGH'\n  | 'SUPERSCRIPT'\n  | 'SUBSCRIPT'\n  | 'FONT_FAMILY';\n\nexport const Decoration_Type = {\n  BOLD: 'BOLD',\n  ITALIC: 'ITALIC',\n  UNDERLINE: 'UNDERLINE',\n  SPOILER: 'SPOILER',\n  ANCHOR: 'ANCHOR',\n  MENTION: 'MENTION',\n  LINK: 'LINK',\n  COLOR: 'COLOR',\n  FONT_SIZE: 'FONT_SIZE',\n  STRIKETHROUGH: 'STRIKETHROUGH',\n  SUPERSCRIPT: 'SUPERSCRIPT',\n  SUBSCRIPT: 'SUBSCRIPT',\n  FONT_FAMILY: 'FONT_FAMILY',\n} as const;\n\n/** Bolds text, which makes it appear thicker and more prominent than normal text. */\nexport type BoldDecoration = {\n  /**\n   * Decoration type.\n   *  Must be `BOLD`.\n   */\n  type: 'BOLD';\n  /** Font weight. */\n  fontWeightValue?: number;\n};\n/** Italicizes text, which makes it appear slanted or italicized. Italics are typically used for emphasis, citations, or to distinguish certain types of content. */\nexport type ItalicDecoration = {\n  /**\n   * Decoration type.\n   *  Must be `ITALIC`.\n   */\n  type: 'ITALIC';\n  /** Whether to enable the italic text. */\n  italicData?: boolean;\n};\n/** Underlines text. */\nexport type UnderlineDecoration = {\n  /**\n   * Decoration type.\n   * Must be `UNDERLINE`.\n   */\n  type: 'UNDERLINE';\n  /** Whether to underline the text. */\n  underlineData?: boolean;\n};\n/** Strikes-through text. */\nexport type StrikethroughDecoration = {\n  /**\n   * Decoration type.\n   * Must be `STRIKETHROUGH`.\n   */\n  type: 'STRIKETHROUGH';\n  /** Whether to strikethrough the text. Default: `true`. */\n  strikethroughData?: boolean;\n};\n/** Makes text appear smaller and raised above the baseline. */\nexport type SuperscriptDecoration = {\n  /**\n   * Decoration type.\n   *  Must be `SUPERSCRIPT`.\n   */\n  type: 'SUPERSCRIPT';\n  /** Whether to make the text appear smaller and raised above the baseline. */\n  superscriptData?: boolean;\n};\n/** Makes text appear smaller and lowered below the baseline. */\nexport type SubscriptDecoration = {\n  /**\n   * Decoration type.\n   *  Must be `SUBSCRIPT`.\n   */\n  type: 'SUBSCRIPT';\n  /** Whether to make the text appear smaller and lowered below the baseline. */\n  subscriptData?: boolean;\n};\n/** Blurs text. <br> **Note:** This decoration requires the [`spoiler`](https://dev.wix.com/docs/ricos/getting-started/introduction#plugins) plugin to be enabled. */\nexport type SpoilerDecoration = {\n  /**\n   * Decoration type.\n   *  Must be `SPOILER`.\n   */\n  type: 'SPOILER';\n  /** Spoiler details. */\n  spoilerData?: SpoilerData;\n};\n/** Makes clickable text a different color. The link navigates to another section of the same page. */\nexport type AnchorDecoration = {\n  /**\n   * Decoration type.\n   *  Must be `ANCHOR`.\n   */\n  type: 'ANCHOR';\n  /** Anchor details. */\n  anchorData?: AnchorData;\n};\n/** Text that mentions a specific user, often in social media platforms, forums, or content management systems. <br> **Note:** This decoration requires the [`mention`](https://dev.wix.com/docs/ricos/getting-started/introduction#plugins) plugin to be enabled. */\nexport type MentionDecoration = {\n  /**\n   * Decoration type.\n   *  Must be `MENTION`.\n   */\n  type: 'MENTION';\n  /** Anchor details. */\n  mentionData?: MentionData;\n};\n/** Makes clickable text a different color. The link navigates to another webpage or resource. <br> **Note:** This decoration requires the [`link`](https://dev.wix.com/docs/ricos/getting-started/introduction#plugins) plugin to be enabled. */\nexport type LinkDecoration = {\n  /**\n   * Decoration type.\n   *  Must be `LINK`.\n   */\n  type: 'LINK';\n  /** Link details. */\n  linkData?: LinkData;\n};\n/** Styles text using background and text colors. <br> **Note:** This decoration requires the [`colorDecoration`](https://dev.wix.com/docs/ricos/getting-started/introduction#plugins) plugin to be enabled. */\nexport type ColorDecoration = {\n  /**\n   * Decoration type.\n   *  Value: `COLOR`\n   */\n  type: 'COLOR';\n  /** Color details. */\n  colorData?: ColorData;\n};\n/** Text font size. */\nexport type FontSizeDecoration = {\n  /**\n   * Decoration type.\n   *  Must be `FONT_SIZE`.\n   */\n  type: 'FONT_SIZE';\n  /** Font size details. */\n  fontSizeData?: FontSizeData;\n};\nexport type AnchorData = {\n  /** Target Node ID to redirect to. */\n  anchor?: string;\n};\nexport type ColorData = {\n  /** Background color as a hexadecimal value. */\n  background?: string;\n  /** Text color as a hexadecimal value. */\n  foreground?: string;\n};\nexport type LinkData = {\n  /** Link object. */\n  link?: Link;\n};\nexport type MentionData = {\n  /** Display name of the mentioned user. */\n  name?: string;\n  /** Username of the mentioned user. This is th text that appears after the \"@\". */\n  slug?: string;\n  /** ID of the mentioned user. */\n  id?: string;\n};\nexport type FontSizeData = {\n  /** Font size value. */\n  value: number;\n  /**\n   * Font size units.\n   *  Default: `PX`\n   */\n  unit?: FontSizeData_fontType;\n};\nexport type FontSizeData_fontType = 'PX' | 'EM';\n\nexport const FontSizeData_fontType = {\n  PX: 'PX',\n  EM: 'EM',\n} as const;\n\n/** Text font family. */\nexport type FontFamilyDecoration = {\n  /**\n   * Decoration type.\n   *  Must be `FONT_FAMILY`.\n   */\n  type: 'FONT_FAMILY';\n  /** Font family details. */\n  fontFamilyData?: FontFamilyData;\n};\nexport type FontFamilyData = {\n  /** Font family value. */\n  value?: string;\n};\nexport type SpoilerData = {\n  /** [Node ID](#node-ids). */\n  id?: string;\n};\n/** Used to visually distinguish quoted or cited content from the surrounding text. When rendered, it displays as the quoted text with indentation or other styling to visually separate it from the surrounding content. */\nexport type BlockquoteNode = {\n  /**\n   * Node type.\n   *  Must be `BLOCKQUOTE`.\n   */\n  type: 'BLOCKQUOTE';\n  /** Child nodes to define a blockquote paragraph. */\n  nodes: RicosDocumentNode[];\n  /** [Node ID](#node-ids). */\n  id?: string;\n  /** Blockquote details. */\n  blockquoteData?: BlockquoteData;\n  /**\n   * Defines the blockquote style, such as padding and background color.\n   *  **Note:** This node requires the [`lineSpacing`](https://dev.wix.com/docs/ricos/getting-started/introduction#plugins) plugin to be enabled.\n   */\n  style?: NodeStyle;\n};\nexport type BlockquoteData = {\n  /**\n   * Blockquote margin from the left side.\n   *  The indentation is measured relative to the font size *em* units by a ratio of 1.5. For example, if the indentation is `2`, then the margin is equal to **3em**. Therefore the margin is 3 times the size of the font.\n   */\n  indentation?: number;\n};\n/** Caption container to be attached to media elements, such as images. Captions support formatted text content and can be styled independently from their parent nodes. */\nexport type CaptionNode = {\n  /**\n   * Node type.\n   *  Must be `CAPTION`.\n   */\n  type: 'CAPTION';\n  nodes: RicosDocumentNode[];\n  /** Caption [node ID](#node-ids). */\n  id?: string;\n  /**\n   * Defines the caption styling, such as padding and background color.\n   *  **Note:** This node requires the [`lineSpacing`](https://dev.wix.com/docs/ricos/getting-started/introduction#plugins) plugin to be enabled.\n   */\n  style?: NodeStyle;\n  /** Caption options. */\n  captionData?: CaptionData;\n};\nexport type CaptionData = {\n  /** Caption text styling. */\n  textStyle?: TextStyle;\n};\n/** A card container node that can hold any block-level content. */\nexport type CardNode = {\n  /**\n   * Node type.\n   *  Must be `CARD`.\n   */\n  type: 'CARD';\n  /** Child nodes that the card contains. */\n  nodes: RicosDocumentNode[];\n  /** [Node ID](#node-ids). */\n  id?: string;\n  /** Card details. */\n  cardData?: CardData;\n};\nexport type CardData = {\n  /** Background styling (color or gradient). */\n  background?: Background;\n  /** Background image. */\n  backgroundImage?: BackgroundImage;\n};\n/** Nodes that can be placed inside a Card. */\nexport type CardChildNode =\n  | ParagraphNode\n  | HeadingNode\n  | BulletedListNode\n  | OrderedListNode\n  | BlockquoteNode\n  | CodeBlockNode\n  | VideoNode\n  | DividerNode\n  | FileNode\n  | GalleryNode\n  | GifNode\n  | HtmlNode\n  | ImageNode\n  | LinkPreviewNode\n  | PollNode\n  | AppEmbedNode\n  | ButtonNode\n  | CollapsibleListNode\n  | TableNode\n  | EmbedNode\n  | AudioNode\n  | LayoutNode\n  | ExternalNode;\n/** Presents code snippets, markup, or other text-based content that should be displayed exactly as it appears, without any interpretation or formatting applied by the browser. When rendered, it is displayed as the code block with a monospaced font, preserving indentation, line breaks, and spacing as specified in the code. */\nexport type CodeBlockNode = {\n  /**\n   * Node type.\n   *  VMust be `CODE_BLOCK`.\n   */\n  type: 'CODE_BLOCK';\n  /** Child nodes to define a code block text. */\n  nodes?: RicosDocumentNode[];\n  /** [Node ID](#node-ids). */\n  id?: string;\n  /** Code block details. */\n  codeBlockData?: CodeBlockData;\n  /**\n   * Code block styling, such as padding and background color.\n   *  **Note:** This node requires the [`lineSpacing`](https://dev.wix.com/docs/ricos/getting-started/introduction#plugins) plugin to be enabled.\n   */\n  style?: NodeStyle;\n};\nexport type CodeBlockData = {\n  /** Defines the text styling, such as alignment and line height. */\n  textStyle?: TextStyle;\n};\n/** Indicates a heading or title of a section. There are 6 levels of headings, with `1` being the most prominent and `6` being the least. */\nexport type HeadingNode = {\n  /**\n   * Node type.\n   *  Must be `HEADING`.\n   */\n  type: 'HEADING';\n  /** Child nodes to define the heading text. */\n  nodes?: RicosDocumentNode[];\n  /** [Node ID](#node-ids). */\n  id?: string;\n  /**\n   * Heading styling, such as padding and background color.\n   *  **Note:** This node requires the [`lineSpacing`](https://dev.wix.com/docs/ricos/getting-started/introduction#plugins) plugin to be enabled.\n   */\n  style?: NodeStyle;\n  /** Heading options. */\n  headingData?: HeadingData;\n};\nexport type HeadingData = {\n  /** Heading size. <br> Mi: `1` <br> Max: `6` */\n  level?: number;\n  /** Heading text styling, such as text alignment and line height. */\n  textStyle?: TextStyle;\n  /**\n   * Heading margin from the left side.\n   *  The indentation is measured relative to the font size *em* units by a ratio of 1.5. For example, if the indentation is `2`, then the margin is equal to **3em**. Therefore the margin is 3 times the size of the font.\n   */\n  indentation?: number;\n};\n/** Used to wrap cells in layout container. When rendered, it cells one after the other in a row */\nexport type LayoutNode = {\n  /**\n   * Node type.\n   *  Must be `LAYOUT`.\n   */\n  type: 'LAYOUT';\n  /** Cell items. */\n  nodes: RicosDocumentNode[];\n  /** [Node ID](#node-ids). */\n  id?: string;\n  /** Layout details. */\n  layoutData?: LayoutData;\n};\nexport type LayoutData = {\n  /** Layout container styling. */\n  containerData?: PluginContainerData;\n  /** Deprecated: Use `background` instead. */\n  backgroundColor?: string;\n  /** Background styling (color or gradient). */\n  background?: Background;\n  /** Background image. */\n  backgroundImage?: BackgroundImage;\n  /** Border color as a hexadecimal value. */\n  borderColor?: string;\n  /** Border width in pixels. */\n  borderWidth?: number;\n  /** Border radius in pixels. */\n  borderRadius?: number;\n  /** Deprecated: Use `backdrop` instead. */\n  backdropColor?: string;\n  /** Backdrop styling (color or gradient). */\n  backdrop?: Background;\n  /** Backdrop image. */\n  backdropImage?: BackgroundImage;\n  /** Backdrop padding top in pixels. */\n  backdropPaddingTop?: number;\n  /** Backdrop padding bottom in pixels. */\n  backdropPaddingBottom?: number;\n  /** Horizontal and vertical gap between columns in pixels. */\n  gap?: number;\n  /** Responsiveness behaviour. */\n  responsivenessBehaviour?: LayoutData_ResponsivenessBehaviour;\n  /** Size in pixels when responsivenessBehaviour applies. */\n  responsivenessBreakpoint?: number;\n  cellPadding?: number[];\n  /** Vertical alignment for the cell's items. */\n  cellVerticalAlignment?: VerticalAlignment;\n  /** Defines where selected design propertied applies to. */\n  designTarget?: LayoutData_DesignTarget;\n  /** Banner configuration. When present, this layout is displayed as a banner. Use this property only when layout is the first node in the document. */\n  banner?: LayoutData_Banner;\n};\n/** Banner configuration for layout. */\nexport type LayoutData_Banner = {\n  /** Origin of the banner - whether it was created from an image or a layout. */\n  origin?: LayoutData_BannerOrigin;\n};\nexport type LayoutData_BannerOrigin = 'IMAGE' | 'LAYOUT';\n\nexport const LayoutData_BannerOrigin = {\n  IMAGE: 'IMAGE',\n  LAYOUT: 'LAYOUT',\n} as const;\n\nexport type LayoutData_ResponsivenessBehaviour = 'STACK' | 'WRAP';\n\nexport const LayoutData_ResponsivenessBehaviour = {\n  STACK: 'STACK',\n  WRAP: 'WRAP',\n} as const;\n\nexport type LayoutData_DesignTarget = 'LAYOUT' | 'CELL';\n\nexport const LayoutData_DesignTarget = {\n  LAYOUT: 'LAYOUT',\n  CELL: 'CELL',\n} as const;\n\n/** Used to wrap content inside layout container. When rendered, it shows content inside layout column */\nexport type LayoutCellNode = {\n  /**\n   * Node type.\n   *  Must be `LAYOUT_CELL`.\n   */\n  type: 'LAYOUT_CELL';\n  /** Child nodes that the cell item contains. */\n  nodes: RicosDocumentNode[];\n  /** [Node ID](#node-ids). */\n  id?: string;\n  /** Layout Cell details. */\n  layoutCellData?: LayoutCellData;\n};\nexport type LayoutCellData = {\n  /** Defines how many columns cell spans inside 12 column grid. If not provided it will divide remaining space equally. */\n  colSpan?: number;\n};\nexport type LayoutCellChildNode =\n  | BlockquoteNode\n  | CodeBlockNode\n  | HeadingNode\n  | OrderedListNode\n  | BulletedListNode\n  | ParagraphNode\n  | AppEmbedNode\n  | AudioNode\n  | ButtonNode\n  | CollapsibleListNode\n  | DividerNode\n  | EmbedNode\n  | FileNode\n  | GalleryNode\n  | GifNode\n  | HtmlNode\n  | ImageNode\n  | LinkPreviewNode\n  | PollNode\n  | VideoNode\n  | ExternalNode;\n/** Numbered list. */\nexport type OrderedListNode = {\n  /**\n   * Node type.\n   *  Must be `ORDERED_LIST`.\n   */\n  type: 'ORDERED_LIST';\n  /** List items. */\n  nodes: RicosDocumentNode[];\n  /** [Node ID](#node-ids). */\n  id?: string;\n  /** Ordered list details. */\n  orderedListData?: OrderedListData;\n};\nexport type OrderedListData = {\n  /**\n   * List margin from the left side.\n   *  The indentation is measured relative to the font size *em* units by a ratio of 1.5. For example, if the indentation is `2`, then the margin is equal to **3em**. Therefore the margin is 3 times the size of the font.\n   */\n  indentation?: number;\n  /** Additional indentation of a list node. When offset is `0`, the list node appears at its default nesting level. Higher values cause increased indentation. */\n  offset?: number;\n  /** Number at the top of the numbered list. <br> Default: `1` */\n  start?: number;\n};\n/** Bulleted list. */\nexport type BulletedListNode = {\n  /**\n   * Node type.\n   *  Must be `BULLETED_LIST`.\n   */\n  type: 'BULLETED_LIST';\n  /** List items. */\n  nodes: RicosDocumentNode[];\n  /** [Node ID](#node-ids). */\n  id?: string;\n  /** Bulleted list details. */\n  bulletedListData?: BulletedListData;\n};\nexport type BulletedListData = {\n  indentation?: number;\n  /** Additional indentation of a list node. When offset is `0`, the list node appears at its default nesting level. Higher values cause increased indentation. */\n  offset?: number;\n};\nexport type ListItemNode = {\n  /**\n   * Node type.\n   *  Value: `LIST_ITEM`\n   */\n  type: 'LIST_ITEM';\n  /** Child nodes that the list item contains. */\n  nodes: RicosDocumentNode[];\n  /** [Node ID](#node-ids). */\n  id?: string;\n};\nexport type ListItemChildNode =\n  | ParagraphNode\n  | HeadingNode\n  | OrderedListNode\n  | BulletedListNode\n  | ImageNode\n  | VideoNode\n  | GifNode\n  | GalleryNode;\n/** Structures text content, providing a clear separation between different ideas or sections of text. Paragraphs are rendered with default styling that typically includes some space above and below the paragraph, making it visually distinct from the surrounding content. */\nexport type ParagraphNode = {\n  /**\n   * Node type.\n   *  Must be `PARAGRAPH`.\n   */\n  type: 'PARAGRAPH';\n  /** Paragraph children. */\n  nodes?: RicosDocumentNode[];\n  /** [Node ID](#node-ids). */\n  id?: string;\n  /**\n   * Vertical padding.\n   *  **Note:** This node requires the [`lineSpacing`](https://dev.wix.com/docs/ricos/getting-started/introduction#plugins) plugin to be enabled.\n   */\n  style?: NodeStyle;\n  /** Paragraph node attributes. */\n  paragraphData?: ParagraphData;\n};\nexport type ParagraphData = {\n  /** Paragraph text styling. */\n  textStyle?: TextStyle;\n  /**\n   * Paragraph margin from the left side.\n   *  The indentation is measured relative to 40px. For example, if the indentation is `2`, then the margin is equal to **80px**.\n   */\n  indentation?: number;\n  /** Paragraph level for future different paragraphs. */\n  level?: number;\n};\n/** Text nodes hold the text itself, similar to how `span` tags hold text in HTML. Text nodes can't be nested and must contain a non-empty string. Their appearance and behavior can be modified using [decorations](#decorations). */\nexport type TextNode = {\n  /**\n   * Node type.\n   *  Must be `TEXT`.\n   */\n  type: 'TEXT';\n  /** Text options. */\n  textData: TextData;\n  /** [Node ID](#node-ids). */\n  id?: string;\n  nodes?: RicosDocumentNode[];\n};\nexport type TextData = {\n  /** Non-empty string to display as text. */\n  text: string;\n  decorations?: Decoration[];\n};\n/** Embeds an external content preview from Wix business solutions. For example, you can embed previews from the Wix Bookings, Wix Stores and Wix Events apps. */\nexport type AppEmbedNode = {\n  /**\n   * Node type.\n   *  Must be `APP_EMBED`.\n   */\n  type: 'APP_EMBED';\n  /** Embedded Wix app. */\n  appEmbedData: AppEmbedData;\n  /** [Node ID](#node-ids). */\n  id?: string;\n  nodes?: RicosDocumentNode[];\n};\nexport type AppEmbedData = AppEmbedDataProduct | AppEmbedDataEvent | AppEmbedDataBooking;\nexport type AppEmbedData_AppType = 'PRODUCT' | 'EVENT' | 'BOOKING';\n\nexport const AppEmbedData_AppType = {\n  PRODUCT: 'PRODUCT',\n  EVENT: 'EVENT',\n  BOOKING: 'BOOKING',\n} as const;\n\n/** Embedded a product from Wix Stores. */\nexport type AppEmbedDataProduct = {\n  /** Must be `PRODUCT`. */\n  type: 'PRODUCT';\n  /** Embedded content name. */\n  name: string;\n  /** Embedded content URL. */\n  url: string;\n  /** App embed container styling. */\n  containerData?: PluginContainerData;\n  /** Embedded content thumbnail. */\n  image?: Media;\n  /** Embedded content ID. */\n  itemId?: string;\n  /** Deprecated: Use `image` instead. */\n  imageSrc?: string;\n  /** Whether to hide the image. */\n  hideImage?: boolean;\n  /** Whether to hide the title. */\n  hideTitle?: boolean;\n  /** Whether to hide the price. */\n  hidePrice?: boolean;\n  /** Whether to hide the button. */\n  hideButton?: boolean;\n  /** Whether to hide the ribbon. */\n  hideRibbon?: boolean;\n  /** Button styling options. */\n  buttonStyles?: AppEmbedData_ButtonStyles;\n  /** Image styling options. */\n  imageStyles?: AppEmbedData_ImageStyles;\n  /** Ribbon styling options. */\n  ribbonStyles?: AppEmbedData_RibbonStyles;\n  /** Card styling options. */\n  cardStyles?: AppEmbedData_CardStyles;\n  /** Pricing information for the embedded content. */\n  pricingData?: AppEmbedData_PricingData;\n};\n/** Embeds an event from Wix Events. */\nexport type AppEmbedDataEvent = {\n  /** Must be `EVENT`. */\n  type: 'EVENT';\n  /** Embedded content name. */\n  name: string;\n  /** Embedded content URL. */\n  url: string;\n  /** App embed container styling. */\n  containerData?: PluginContainerData;\n  /** Embedded event content. */\n  eventData?: AppEmbedData_EventData;\n  /** Embedded content thumbnail. */\n  image?: Media;\n  /** Embedded content ID. */\n  itemId?: string;\n  /** Deprecated: Use `image` instead. */\n  imageSrc?: string;\n  /** Whether to hide the image. */\n  hideImage?: boolean;\n  /** Whether to hide the title. */\n  hideTitle?: boolean;\n  /** Whether to hide the price. */\n  hidePrice?: boolean;\n  /** Whether to hide the description. */\n  hideDescription?: boolean;\n  /** Whether to hide the date and time. */\n  hideDateTime?: boolean;\n  /** Whether to hide the location. */\n  hideLocation?: boolean;\n  /** Whether to hide the button. */\n  hideButton?: boolean;\n  /** Whether to hide the ribbon. */\n  hideRibbon?: boolean;\n  /** Button styling options. */\n  buttonStyles?: AppEmbedData_ButtonStyles;\n  /** Image styling options. */\n  imageStyles?: AppEmbedData_ImageStyles;\n  /** Ribbon styling options. */\n  ribbonStyles?: AppEmbedData_RibbonStyles;\n  /** Card styling options. */\n  cardStyles?: AppEmbedData_CardStyles;\n  /** Pricing information for the embedded content. */\n  pricingData?: AppEmbedData_PricingData;\n};\n/** Embeds a booking from Wix Bookings. */\nexport type AppEmbedDataBooking = {\n  type: 'BOOKING';\n  /** Embedded content name. */\n  name: string;\n  /** Embedded content URL. */\n  url: string;\n  /** App embed container styling. */\n  containerData?: PluginContainerData;\n  /** Embedded content thumbnail. */\n  image?: Media;\n  /** Embedded content ID. */\n  itemId?: string;\n  /** Embedded booking content. */\n  bookingData?: AppEmbedData_BookingData;\n  /** Deprecated: Use `image` instead. */\n  imageSrc?: string;\n  /** Whether to hide the image. */\n  hideImage?: boolean;\n  /** Whether to hide the title. */\n  hideTitle?: boolean;\n  /** Whether to hide the price. */\n  hidePrice?: boolean;\n  /** Whether to hide the description. */\n  hideDescription?: boolean;\n  /** Whether to hide the duration. */\n  hideDuration?: boolean;\n  /** Whether to hide the location. */\n  hideLocation?: boolean;\n  /** Whether to hide the button. */\n  hideButton?: boolean;\n  /** Whether to hide the ribbon. */\n  hideRibbon?: boolean;\n  /** Button styling options. */\n  buttonStyles?: AppEmbedData_ButtonStyles;\n  /** Image styling options. */\n  imageStyles?: AppEmbedData_ImageStyles;\n  /** Ribbon styling options. */\n  ribbonStyles?: AppEmbedData_RibbonStyles;\n  /** Card styling options. */\n  cardStyles?: AppEmbedData_CardStyles;\n  /** Pricing information for the embedded content. */\n  pricingData?: AppEmbedData_PricingData;\n};\nexport type AppEmbedData_BookingData = {\n  /** Booking duration in minutes. */\n  durations?: string;\n};\nexport type AppEmbedData_EventData = {\n  /** Event schedule. */\n  scheduling?: string;\n  /** Event location. */\n  location?: string;\n};\nexport type AppEmbedData_ButtonStyles = {\n  /** Text to display on the button. */\n  buttonText?: string;\n  /** Border width in pixels. */\n  borderWidth?: number;\n  /** Border radius in pixels. */\n  borderRadius?: number;\n  /** Border color as a hexadecimal value. */\n  borderColor?: string;\n  /** Text color as a hexadecimal value. */\n  textColor?: string;\n  /** Background color as a hexadecimal value. */\n  backgroundColor?: string;\n  /** Border color as a hexadecimal value (hover state). */\n  borderColorHover?: string;\n  /** Text color as a hexadecimal value (hover state). */\n  textColorHover?: string;\n  /** Background color as a hexadecimal value (hover state). */\n  backgroundColorHover?: string;\n  /** Button size option, one of `SMALL`, `MEDIUM` or `LARGE`. Defaults to `MEDIUM`. */\n  buttonSize?: string;\n};\nexport type AppEmbedData_ImageStyles = {\n  /** Position of image. Defaults to `START`. */\n  imagePosition?: AppEmbedData_ImageStyles_Position;\n  /** Aspect ratio for the image. Defaults to `SQUARE`. */\n  aspectRatio?: AppEmbedData_ImageStyles_AspectRatio;\n  /** How the image should be resized. Defaults to `FILL`. */\n  resizing?: AppEmbedData_ImageStyles_Resizing;\n  /** Image border color as a hexadecimal value. */\n  borderColor?: string;\n  /** Image border width in pixels. */\n  borderWidth?: number;\n  /** Image border radius in pixels. */\n  borderRadius?: number;\n};\nexport type AppEmbedData_ImageStyles_Position = 'START' | 'END' | 'TOP';\n\nexport const AppEmbedData_ImageStyles_Position = {\n  START: 'START',\n  END: 'END',\n  TOP: 'TOP',\n} as const;\n\nexport type AppEmbedData_ImageStyles_AspectRatio = 'SQUARE' | 'RECTANGLE';\n\nexport const AppEmbedData_ImageStyles_AspectRatio = {\n  SQUARE: 'SQUARE',\n  RECTANGLE: 'RECTANGLE',\n} as const;\n\nexport type AppEmbedData_ImageStyles_Resizing = 'FILL' | 'FIT';\n\nexport const AppEmbedData_ImageStyles_Resizing = {\n  FILL: 'FILL',\n  FIT: 'FIT',\n} as const;\n\nexport type AppEmbedData_RibbonStyles = {\n  /** Text to display on the ribbon. */\n  ribbonText?: string;\n  /** Placement of the ribbon. Defaults to `IMAGE`. */\n  ribbonPlacement?: AppEmbedData_RibbonStyles_Placement;\n  /** Ribbon background color as a hexadecimal value. */\n  backgroundColor?: string;\n  /** Ribbon text color as a hexadecimal value. */\n  textColor?: string;\n  /** Ribbon border color as a hexadecimal value. */\n  borderColor?: string;\n  /** Ribbon border width in pixels. */\n  borderWidth?: number;\n  /** Ribbon border radius in pixels. */\n  borderRadius?: number;\n};\nexport type AppEmbedData_RibbonStyles_Placement = 'IMAGE' | 'PRODUCT_INFO';\n\nexport const AppEmbedData_RibbonStyles_Placement = {\n  IMAGE: 'IMAGE',\n  PRODUCT_INFO: 'PRODUCT_INFO',\n} as const;\n\nexport type AppEmbedData_CardStyles = {\n  /** Card background color as a hexadecimal value. */\n  backgroundColor?: string;\n  /** Card border color as a hexadecimal value. */\n  borderColor?: string;\n  /** Card border width in pixels. */\n  borderWidth?: number;\n  /** Card border radius in pixels. */\n  borderRadius?: number;\n  /** Card type. Defaults to `CONTAINED`. */\n  type?: AppEmbedData_CardStyles_Type;\n  /** Content alignment. Defaults to `START`. */\n  alignment?: AppEmbedData_CardStyles_Alignment;\n  /** Layout for title and price. Defaults to `STACKED`. */\n  titlePriceLayout?: AppEmbedData_CardStyles_Layout;\n  /** Title text color as a hexadecimal value. */\n  titleColor?: string;\n  /** Text color as a hexadecimal value. */\n  textColor?: string;\n};\nexport type AppEmbedData_CardStyles_Type = 'CONTAINED' | 'FRAMELESS';\n\nexport const AppEmbedData_CardStyles_Type = {\n  CONTAINED: 'CONTAINED',\n  FRAMELESS: 'FRAMELESS',\n} as const;\n\nexport type AppEmbedData_CardStyles_Alignment = 'START' | 'CENTER' | 'END';\n\nexport const AppEmbedData_CardStyles_Alignment = {\n  START: 'START',\n  CENTER: 'CENTER',\n  END: 'END',\n} as const;\n\n/** Layout options for arranging elements. */\nexport type AppEmbedData_CardStyles_Layout = 'STACKED' | 'SIDE_BY_SIDE';\nexport type AppEmbedData_PricingData = {\n  /** Minimum numeric price value as string (e.g., \"10.99\"). */\n  valueFrom?: string;\n  /** Maximum numeric price value as string (e.g., \"19.99\"). */\n  valueTo?: string;\n  /** Numeric price value as string after discount application (e.g., \"15.99\"). */\n  discountedValue?: string;\n  /** Currency of the value in ISO 4217 format (e.g., \"USD\", \"EUR\"). */\n  currency?: string;\n  /** Pricing plan ID. */\n  pricingPlanId?: string;\n};\n/** Embeds and plays audio content directly in a webpage. Users can interact with the controls to play, pause, rewind, and adjust the volume of the audio. */\nexport type AudioNode = {\n  /**\n   * Node type.\n   *  Must be `AUDIO`.\n   */\n  type: 'AUDIO';\n  /** Audio details. */\n  audioData: AudioData;\n  /** [Node ID](#node-ids). */\n  id?: string;\n  nodes?: RicosDocumentNode[];\n};\nexport type AudioData = {\n  /** Audio node container styling. */\n  containerData?: PluginContainerData;\n  /** Audio file details. */\n  audio?: Media;\n  /**\n   * Whether the audio download button is disabled.\n   *  Default: `false`\n   */\n  disableDownload?: boolean;\n  /** Cover image. */\n  coverImage?: Media;\n  /** Track name. */\n  name?: string;\n  /** Author name. */\n  authorName?: string;\n  /** HTML version of the audio node. */\n  html?: string;\n};\n/** Button to trigger an action. */\nexport type ButtonNode = {\n  /**\n   * Node type.\n   *  Must be `BUTTON`\n   */\n  type: 'BUTTON';\n  /** Button details. */\n  buttonData: ButtonData;\n  /** [Node ID](#node-ids). */\n  id?: string;\n  nodes?: RicosDocumentNode[];\n};\nexport type ButtonData = {\n  /** Button type. Supported values: <br> - `LINK`: Redirects to a webpage. <br> - `ACTION`: Performs an action. */\n  type: ButtonData_Type;\n  /** Button text. */\n  text: string;\n  /** Button container styling. */\n  containerData?: PluginContainerData;\n  /** Button styling. */\n  styles?: ButtonData_Styles;\n  /** Button link details. */\n  link?: Link;\n};\nexport type ButtonData_Type = 'LINK' | 'ACTION';\n\nexport const ButtonData_Type = {\n  LINK: 'LINK',\n  ACTION: 'ACTION',\n} as const;\n\nexport type ButtonData_Styles = {\n  /** Deprecated: Use `borderWidth` and `borderRadius` instead. */\n  border?: ButtonData_Styles_Border;\n  /** Deprecated: Use `textColor`, `borderColor` and `backgroundColor` instead. */\n  colors?: ButtonData_Styles_Colors;\n  /** Border width in pixels. */\n  borderWidth?: number;\n  /** Deprecated: Use `borderWidth` for normal/hover states instead. */\n  borderWidthHover?: number;\n  /** Border radius in pixels. */\n  borderRadius?: number;\n  /** Border color as a hexadecimal value. */\n  borderColor?: string;\n  /** Border color as a hexadecimal value (hover state). */\n  borderColorHover?: string;\n  /** Text color as a hexadecimal value. */\n  textColor?: string;\n  /** Text color as a hexadecimal value (hover state). */\n  textColorHover?: string;\n  /** Deprecated: Use `background` instead. */\n  backgroundColor?: string;\n  /** Deprecated: Use `backgroundHover` instead. */\n  backgroundColorHover?: string;\n  /** Background styling (color or gradient). */\n  background?: Background;\n  /** Background styling for hover state (color or gradient). */\n  backgroundHover?: Background;\n  /** Button size. Defaults to `MEDIUM`. */\n  buttonSize?: ButtonData_Styles_ButtonSize;\n};\nexport type ButtonData_Styles_ButtonSize = 'MEDIUM' | 'SMALL' | 'LARGE';\n\nexport const ButtonData_Styles_ButtonSize = {\n  MEDIUM: 'MEDIUM',\n  SMALL: 'SMALL',\n  LARGE: 'LARGE',\n} as const;\n\nexport type ButtonData_Styles_Colors = {\n  /** Deprecated: Use `textColor` in `styles` instead. */\n  text?: string;\n  /** Deprecated: Use `borderColor` in `styles` instead. */\n  border?: string;\n  /** Deprecated: Use `backgroundColor` in `styles` instead. */\n  background?: string;\n};\nexport type ButtonData_Styles_Border = {\n  /** Deprecated: Use `borderWidth` in `styles` instead. */\n  width?: number;\n  /** Deprecated: Use `borderRadius` in `styles` instead */\n  radius?: number;\n};\n/** List of items where each item can be expanded or collapsed. */\nexport type CollapsibleListNode = {\n  /**\n   * Node type.\n   *  Must be `COLLAPSIBLE_LIST`\n   */\n  type: 'COLLAPSIBLE_LIST';\n  /** Collapsible list child nodes. */\n  nodes: RicosDocumentNode[];\n  /** [Node ID](#node-ids). */\n  id?: string;\n  /** Collapsible list details. */\n  collapsibleListData?: CollapsibleListData;\n};\nexport type CollapsibleListData = {\n  /** Collapsible list container styling. */\n  containerData?: PluginContainerData;\n  /**\n   * Whether only one item can be expanded at a time.\n   *  Default: `false`.\n   */\n  expandOnlyOne?: boolean;\n  /** Sets which items are automatically expanded after the page loads. */\n  initialExpandedItems?: 'FIRST' | 'ALL' | 'NONE';\n  /**\n   * Direction of the text in the list. Supported values:\n   *  - `LTR`: Left to right.\n   *  - `RTL`: Right to left.\n   */\n  direction?: CollapsibleListData_Direction;\n  /** Whether the collapsible item will appear in search results as an FAQ. */\n  isQapageData?: boolean;\n};\nexport type CollapsibleListData_Direction = 'LTR' | 'RTL';\n\nexport const CollapsibleListData_Direction = {\n  LTR: 'LTR',\n  RTL: 'RTL',\n} as const;\n\nexport type CollapsibleItemNode = {\n  /**\n   * Node type.\n   *  Must be `COLLAPSIBLE_ITEM`\n   */\n  type: 'COLLAPSIBLE_ITEM';\n  /** Collapsible list item. */\n  nodes: RicosDocumentNode[];\n  /** [Node ID](#node-ids). */\n  id?: string;\n};\nexport type CollapsibleItemChildNode = CollapsibleItemTitleNode | CollapsibleItemBodyNode;\n/** Collapsible list item title. */\nexport type CollapsibleItemTitleNode = {\n  /**\n   * Node type.\n   *  Must be `COLLAPSIBLE_ITEM_TITLE`.\n   */\n  type: 'COLLAPSIBLE_ITEM_TITLE';\n  /** Collapsible list item title child nodes. */\n  nodes: RicosDocumentNode[];\n  /** [Node ID](#node-ids). */\n  id?: string;\n};\nexport type CollapsibleTitleChildNode =\n  | ParagraphNode\n  | HeadingNode\n  | BulletedListNode\n  | OrderedListNode\n  | BlockquoteNode\n  | CodeBlockNode;\n/** Collapsible list item body. */\nexport type CollapsibleItemBodyNode = {\n  /**\n   * Node type.\n   *  Must be `COLLAPSIBLE_ITEM_BODY`.\n   */\n  type: 'COLLAPSIBLE_ITEM_BODY';\n  /** Collapsible list item body child nodes. */\n  nodes: RicosDocumentNode[];\n  /** [Node ID](#node-ids). */\n  id?: string;\n};\n/** Collapsible list item body. */\nexport type CollapsibleItemBodyChildNode =\n  | ParagraphNode\n  | HeadingNode\n  | BulletedListNode\n  | OrderedListNode\n  | BlockquoteNode\n  | AudioNode\n  | FileNode\n  | ImageNode\n  | VideoNode\n  | GifNode\n  | DividerNode\n  | CodeBlockNode\n  | AppEmbedNode\n  | LinkPreviewNode\n  | GalleryNode\n  | ButtonNode\n  | CollapsibleListNode\n  | TableNode\n  | EmbedNode\n  | PollNode\n  | HtmlNode;\n/** Horizontal line between different content. */\nexport type DividerNode = {\n  /**\n   * Node type.\n   *  Must be `DIVIDER`.\n   */\n  type: 'DIVIDER';\n  /** [Node ID](#node-ids). */\n  id?: string;\n  /** Divider details. */\n  dividerData?: DividerData;\n  nodes?: RicosDocumentNode[];\n};\nexport type DividerData = {\n  /** Divider container styling. */\n  containerData?: PluginContainerData;\n  /** Divider line style. */\n  lineStyle?: DividerData_LineStyle;\n  /** Divider width. */\n  width?: DividerData_Width;\n  /** Divider alignment. */\n  alignment?: DividerData_Alignment;\n};\nexport type DividerData_LineStyle = 'SINGLE' | 'DOUBLE' | 'DASHED' | 'DOTTED';\n\nexport const DividerData_LineStyle = {\n  SINGLE: 'SINGLE',\n  DOUBLE: 'DOUBLE',\n  DASHED: 'DASHED',\n  DOTTED: 'DOTTED',\n} as const;\n\nexport type DividerData_Width = 'LARGE' | 'MEDIUM' | 'SMALL';\n\nexport const DividerData_Width = {\n  LARGE: 'LARGE',\n  MEDIUM: 'MEDIUM',\n  SMALL: 'SMALL',\n} as const;\n\nexport type DividerData_Alignment = 'CENTER' | 'LEFT' | 'RIGHT';\n\nexport const DividerData_Alignment = {\n  CENTER: 'CENTER',\n  LEFT: 'LEFT',\n  RIGHT: 'RIGHT',\n} as const;\n\n/** Embedded content when you include a link to a resource, without having to parse the resource directly. This provides a standardized way for web developers to include content such as videos, images, and other multimedia elements from supported providers. To learn more, see [oembed](https://oembed.com/). */\nexport type EmbedNode = {\n  /**\n   * Node type.\n   *  Must be `EMBED`.\n   */\n  type: 'EMBED';\n  /** oEmbed details. */\n  embedData: EmbedData;\n  /** [Node ID](#node-ids). */\n  id?: string;\n  nodes?: RicosDocumentNode[];\n};\nexport type EmbedData = {\n  /** oEmbed node container styling. */\n  containerData?: PluginContainerData;\n  /** [oEmbed](https://www.oembed.com) details. */\n  oembed?: Oembed;\n  /** Original asset source. */\n  src?: string;\n};\nexport type Oembed = {\n  /** Resource type. */\n  type?: string;\n  /** Width of the resource specified in the `url` field in pixels. */\n  width?: number;\n  /** Height of the resource specified in the `url` field in pixels. */\n  height?: number;\n  /** Resource title. */\n  title?: string;\n  /** Resource source URL. */\n  url?: string;\n  /** HTML to embed a video player. The HTML should have no padding or margins. */\n  html?: string;\n  /** Name of the author or owner of the resource. */\n  authorName?: string;\n  /** URL for the author or owner of the resource. */\n  authorUrl?: string;\n  /** Name of the resource provider. */\n  providerName?: string;\n  /** URL for the resource provider. */\n  providerUrl?: string;\n  /** Thumbnail image URL for the resource. If defined, `thumbnailWidth` and `thumbnailHeight` must also be defined. */\n  thumbnailUrl?: string;\n  /** Resource's thumbnail image width. If defined, `thumbnailUrl` and `thumbnailHeight` must also be defined. */\n  thumbnailWidth?: string;\n  /** Resource's thumbnail image height. If defined, `thumbnailUrl` and `thumbnailWidth`must also be defined. */\n  thumbnailHeight?: string;\n  /** Embedded video URL. */\n  videoUrl?: string;\n  /** The oEmbed version number. Must be `1.0`. */\n  version?: string;\n};\nexport type ExternalNode = {\n  type: 'EXTERNAL';\n  id?: string;\n  htmlData?: any;\n  externalData?: Record<string, any>;\n  nodes?: RicosDocumentNode[];\n};\n/** File that is uploaded and accessed in a page. Files can be different types of content, such as text documents, images, and videos. */\nexport type FileNode = {\n  /**\n   * Node type.\n   *  Must be `FILE`.\n   */\n  type: 'FILE';\n  /** File details. */\n  fileData: FileData;\n  /** [Node ID](#node-ids). */\n  id?: string;\n  nodes?: RicosDocumentNode[];\n};\nexport type FileData = {\n  /** File container styling. */\n  containerData?: PluginContainerData;\n  /** File data source. */\n  src?: FileSource;\n  /** File name. */\n  name?: string;\n  /** File type. */\n  type?: string;\n  /** Deprecated. Replaced by `sizeInKb` */\n  size?: number;\n  /** File size in KB. */\n  sizeInKb?: string;\n  /** Settings for PDF files. */\n  pdfSettings?: FileData_PDFSettings;\n  /** File MIME type. */\n  mimeType?: string;\n  /** File path. */\n  path?: string;\n};\nexport type FileData_PDFSettings = {\n  /**\n   * PDF view mode. Supported values:\n   *  - `NONE`: PDF isn't displayed.\n   *  - `FULL`: Full PDF page view is displayed.\n   *  - `MINI`: Mini view of the PDF is displayed.\n   */\n  viewMode?: FileData_PDFSettings_ViewMode;\n  /**\n   * Whether the PDF download button is disabled.\n   *  Default: `false`\n   */\n  disableDownload?: boolean;\n  /**\n   * Whether the PDF print button is disabled.\n   *  Default: `false`\n   */\n  disablePrint?: boolean;\n};\nexport type FileData_PDFSettings_ViewMode = 'NONE' | 'FULL' | 'MINI';\n\nexport const FileData_PDFSettings_ViewMode = {\n  NONE: 'NONE',\n  FULL: 'FULL',\n  MINI: 'MINI',\n} as const;\n\n/** Collection of images displayed together. */\nexport type GalleryNode = {\n  /**\n   * Node type.\n   *  Must be `GALLERY`.\n   */\n  type: 'GALLERY';\n  /** Gallery node details. */\n  galleryData: GalleryData;\n  /** [Node ID](#node-ids). */\n  id?: string;\n  nodes?: RicosDocumentNode[];\n};\nexport type GalleryData = {\n  items: GalleryData_Item[];\n  /** Gallery container styling. */\n  containerData?: PluginContainerData;\n  /** Gallery appearance options. */\n  options?: GalleryOptions;\n  /**\n   * Whether the expand button is disabled.\n   * Default: `false`\n   */\n  disableExpand?: boolean;\n  /**\n   * Whether the download button is disabled.\n   * Default: `false`\n   */\n  disableDownload?: boolean;\n};\nexport type GalleryOptions = {\n  /** Gallery layout. */\n  layout?: GalleryOptions_Layout;\n  /** Styling for gallery items. */\n  item?: GalleryOptions_ItemStyle;\n  /** Styling for gallery thumbnail images. */\n  thumbnails?: GalleryOptions_Thumbnails;\n};\nexport type GalleryOptions_Layout = {\n  /** Gallery layout. Supported values: <br> - `COLLAGE`: Presents images in various sizes and positions, creating an artistic or dynamic layout. <br> - `MASONRY`: Grid-based design that places items in optimal positions based on available vertical space, creating an arrangement where items of varying heights fit together like bricks in a wall. <br> - `GRID`: A layout structure that organizes items into rows and columns, creating a uniform arrangement of images. <br> - `THUMBNAIL`: Smaller, scaled-down version of an image that serves as a preview. <br> - `SLIDER`: Component that allows users to browse through a set of images by sliding or swiping through them, typically in a confined viewing area. <br> - `SLIDESHOW`: A component that automatically or manually transitions through a set of images in a designated area. <br> - `PANORAMA`: Wide-angle or 360-degree image that allows users to view an extended horizontal view of a scene. <br> - `COLUMN`: Arrangement of the gallery items in vertical sections. <br> - `MAGIC`: Visually stunning, dynamic effects that enhance the user experience. <br> - `FULLSIZE`: A layout where each image or item is displayed at its full size, sometimes  taking up the entire viewport or a significant portion of the screen. */\n  type?: GalleryOptions_Layout_Type;\n  /**\n   * Whether the horizontal scroll is enabled.\n   * Default: `true`, unless the `type` field is set to `GRID` or `COLLAGE`.\n   */\n  horizontalScroll?: boolean;\n  /** Gallery orientation. */\n  orientation?: GalleryOptions_Layout_Orientation;\n  /** Number of columns to display on computer screens. */\n  numberOfColumns?: number;\n  /** Number of columns to display on mobile phone screens. */\n  mobileNumberOfColumns?: number;\n};\nexport type GalleryOptions_Layout_Type =\n  | 'COLLAGE'\n  | 'MASONRY'\n  | 'GRID'\n  | 'THUMBNAIL'\n  | 'SLIDER'\n  | 'SLIDESHOW'\n  | 'PANORAMA'\n  | 'COLUMN'\n  | 'MAGIC'\n  | 'FULLSIZE';\n\nexport const GalleryOptions_Layout_Type = {\n  COLLAGE: 'COLLAGE',\n  MASONRY: 'MASONRY',\n  GRID: 'GRID',\n  THUMBNAIL: 'THUMBNAIL',\n  SLIDER: 'SLIDER',\n  SLIDESHOW: 'SLIDESHOW',\n  PANORAMA: 'PANORAMA',\n  COLUMN: 'COLUMN',\n  MAGIC: 'MAGIC',\n  FULLSIZE: 'FULLSIZE',\n} as const;\n\nexport type GalleryOptions_Layout_Orientation = 'ROWS' | 'COLUMNS';\n\nexport const GalleryOptions_Layout_Orientation = {\n  ROWS: 'ROWS',\n  COLUMNS: 'COLUMNS',\n} as const;\n\nexport type GalleryOptions_ItemStyle = {\n  /** Dimensions for each gallery item in pixels. Behavior may change with gallery type. */\n  targetSize?: number;\n  /** Height to width ratio. */\n  ratio?: number;\n  /** Cropping strategy. Supported values: <br> - `FILL`: Each item in the gallery is cropped and resized to completely fill its container. <br> - `FIT`: Each item in the gallery is resized to fit exactly in its container without cropping. */\n  crop?: GalleryOptions_ItemStyle_Crop;\n  /** Spacing between gallery items in pixels. */\n  spacing?: number;\n};\nexport type GalleryOptions_ItemStyle_Crop = 'FILL' | 'FIT';\n\nexport const GalleryOptions_ItemStyle_Crop = {\n  FILL: 'FILL',\n  FIT: 'FIT',\n} as const;\n\nexport type GalleryOptions_Thumbnails = {\n  /** Thumbnail alignment. */\n  placement?: GalleryOptions_Thumbnails_Alignment;\n  /** Spacing between thumbnails in pixels. */\n  spacing?: number;\n};\nexport type GalleryOptions_Thumbnails_Alignment = 'TOP' | 'RIGHT' | 'BOTTOM' | 'LEFT' | 'NONE';\n\nexport const GalleryOptions_Thumbnails_Alignment = {\n  TOP: 'TOP',\n  RIGHT: 'RIGHT',\n  BOTTOM: 'BOTTOM',\n  LEFT: 'LEFT',\n  NONE: 'NONE',\n} as const;\n\nexport type GalleryData_Item = {\n  /** Item title. */\n  title?: string;\n  /** Item's alternative text. */\n  altText?: string;\n  /** Image item. */\n  image?: GalleryData_Item_Image;\n  /** Video item. */\n  video?: GalleryData_Item_Video;\n};\nexport type GalleryData_Item_Video = {\n  /** Video file details. */\n  media: Media;\n  /** Video thumbnail file details. */\n  thumbnail?: Media;\n};\nexport type GalleryData_Item_Image = {\n  /** Image file details. */\n  media: Media;\n  /** Link details for images, if relevant. */\n  link?: Link;\n};\n/** GIF images. */\nexport type GifNode = {\n  /**\n   * Node type.\n   *  Must be `GIF`.\n   */\n  type: 'GIF';\n  /** GIF details. */\n  gifData: GIFData;\n  /** [Node ID](#node-ids). */\n  id?: string;\n  /** Child nodes to define a GIF caption. */\n  nodes?: RicosDocumentNode[];\n};\nexport type GIFData = {\n  /** GIF container styling. */\n  containerData?: PluginContainerData;\n  /** Source for the full size GIF. */\n  original?: GIF;\n  /** Source for the downsized GIF. */\n  downsized?: GIF;\n  /** Height in pixels. */\n  height?: number;\n  /** Width in pixels. */\n  width?: number;\n  /**\n   * Type of GIF (Sticker or NORMAL).\n   *  Default: `NORMAL`\n   */\n  gifType?: GIFData_GIFType;\n};\nexport type GIFData_GIFType = 'NORMAL' | 'STICKER';\n\nexport const GIFData_GIFType = {\n  NORMAL: 'NORMAL',\n  STICKER: 'STICKER',\n} as const;\n\nexport type GIF = {\n  /** GIF source URL. */\n  gif?: string;\n  /** MP4 source URL. */\n  mp4?: string;\n  /** GIF thumbnail URL. */\n  still?: string;\n};\n/** HTML block that incorporates external content, such as interactive maps or entire web pages. */\nexport type HtmlNode = {\n  /**\n   * Node type.\n   *  Mst be `HTML`.\n   */\n  type: 'HTML';\n  /** HTML details. */\n  htmlData: HTMLData;\n  /** [Node ID](#node-ids). */\n  id?: string;\n  nodes?: RicosDocumentNode[];\n};\nexport type HTMLData = {\n  /** HTML node container styling. Height property is irrelevant for HTML embeds when autoHeight is set to `true`. */\n  containerData?: PluginContainerData;\n  /**\n   * HTML code type. Possible values:\n   *  - `HTML`: HTML code.\n   *  - [`ADSENSE`](https://adsense.google.com/start/): Service provided by Google for rendering advertisements on web pages.\n   *  - `AI`: AI-generated HTML code.\n   */\n  source?: HTMLData_Source;\n  /** HTML code URL. */\n  url?: string;\n  /** HTML code. */\n  html?: string;\n  /**\n   * If container height is aligned with its content height.\n   *  Default: `true`\n   */\n  autoHeight?: boolean;\n};\nexport type HTMLData_Source = 'HTML' | 'ADSENSE' | 'AI';\n\nexport const HTMLData_Source = {\n  HTML: 'HTML',\n  ADSENSE: 'ADSENSE',\n  AI: 'AI',\n} as const;\n\n/** Standalone images in a page. */\nexport type ImageNode = {\n  /**\n   * Node type.\n   *  Must be `IMAGE`.\n   */\n  type: 'IMAGE';\n  /** Image options. */\n  imageData: ImageData;\n  /** [Node ID](#node-ids). */\n  id?: string;\n  /** Child nodes to define an image caption. */\n  nodes?: RicosDocumentNode[];\n};\nexport type ImageData = {\n  /** Image file details. */\n  image: Media;\n  /** Image container styling. */\n  containerData?: PluginContainerData;\n  /** Image link details. */\n  link?: Link;\n  /**\n   * Whether the image expands to the full screen when clicked.\n   *  Default: `false`\n   */\n  disableExpand?: boolean;\n  /** Alternate text to display when the image doesn't load. */\n  altText?: string;\n  /** Deprecated. Use `CaptionNode` instead. */\n  caption?: string;\n  /**\n   * Whether the download image button is disabled.\n   *  Default: `false`\n   */\n  disableDownload?: boolean;\n  /** Whether the image is decorative and does not need an explanation. Defaults to `false`. */\n  decorative?: boolean;\n  /** Image styling. */\n  styles?: ImageData_Styles;\n};\nexport type ImageData_Styles = {\n  /** Border properties. */\n  border?: ImageData_Styles_Border;\n};\nexport type ImageData_Styles_Border = {\n  /** Border width in pixels. */\n  width?: number;\n  /** Border color as a hexadecimal value. */\n  color?: string;\n  /** Border radius in pixels. */\n  radius?: number;\n};\n/** Preview or summary of a webpage. Link previews include elements such as the title of the linked page, a brief description or excerpt of the content, and sometimes a thumbnail image or other relevant information. */\nexport type LinkPreviewNode = {\n  /**\n   * Node type.\n   *  Must be `LINK_PREVIEW`.\n   */\n  type: 'LINK_PREVIEW';\n  /** Link preview details. */\n  linkPreviewData: LinkPreviewData;\n  /** [Node ID](#node-ids). */\n  id?: string;\n  nodes?: RicosDocumentNode[];\n};\nexport type LinkPreviewData = {\n  /** Link preview container styling. */\n  containerData?: PluginContainerData;\n  /** Link details. */\n  link?: Link;\n  /** Preview title. */\n  title?: string;\n  /** Preview thumbnail URL. */\n  thumbnailUrl?: string;\n  /** Preview description. */\n  description?: string;\n  /** Preview content as HTML. */\n  html?: string;\n  /** Styling for the link preview. */\n  styles?: LinkPreviewData_Styles;\n};\nexport type LinkPreviewData_Styles = {\n  /** Background color as a hexadecimal value. */\n  backgroundColor?: string;\n  /** Title color as a hexadecimal value. */\n  titleColor?: string;\n  /** Subtitle color as a hexadecimal value. */\n  subtitleColor?: string;\n  /** Link color as a hexadecimal value. */\n  linkColor?: string;\n  /** Border width in pixels. */\n  borderWidth?: number;\n  /** Border radius in pixels. */\n  borderRadius?: number;\n  /** Border color as a hexadecimal value. */\n  borderColor?: string;\n  /** Position of thumbnail. Defaults to `START`. */\n  thumbnailPosition?: 'START' | 'END' | 'TOP' | 'HIDDEN';\n};\n/** Provides a question with several options, where the options' cumulative total may be shown. */\nexport type PollNode = {\n  /**\n   * Node type.\n   *  Must be `POLL`.\n   */\n  type: 'POLL';\n  /** Poll details. */\n  pollData: PollData;\n  /** [Node ID](#node-ids). */\n  id?: string;\n  nodes?: RicosDocumentNode[];\n};\nexport type PollData = {\n  /** Poll container styling. */\n  containerData?: PluginContainerData;\n  /** Poll data. */\n  poll?: PollData_Poll;\n  /** Poll layout settings. */\n  layout?: PollData_Layout;\n  /** Poll design. */\n  design?: PollData_Design;\n};\nexport type PollData_Poll = {\n  /** [Node ID](#node-ids). */\n  id?: string;\n  /** Poll title. */\n  title?: string;\n  /** Poll creator ID. */\n  creatorId?: string;\n  /** Main poll image. */\n  image?: Media;\n  options?: PollData_Poll_Option[];\n  /** Poll display settings. */\n  settings?: PollData_Poll_Settings;\n};\nexport type PollData_Poll_Option = {\n  /** Poll option ID. */\n  id?: string;\n  /** Poll option title */\n  title?: string;\n  /** Image displayed with the option. */\n  image?: Media;\n};\nexport type PollData_Poll_Settings = {\n  /** Voting permission settings. */\n  permissions?: PollData_Poll_Settings_Permissions;\n  /**\n   * Whether to display the voters in the vote results.\n   *  Default: `true`.\n   */\n  showVoters?: boolean;\n  /**\n   * Whether to display the vote count.\n   *  Default: `true`.\n   */\n  showVotesCount?: boolean;\n};\nexport type PollData_Poll_Settings_Permissions = {\n  /** Who can view the poll results. */\n  view?: PollData_Poll_Settings_Permissions_ViewRole;\n  /** Who can vote. */\n  vote?: PollData_Poll_Settings_Permissions_VoteRole;\n  /**\n   * Whether a user can vote multiple times.\n   *  Default: `false`\n   */\n  allowMultipleVotes?: boolean;\n};\nexport type PollData_Poll_Settings_Permissions_ViewRole = 'CREATOR' | 'VOTERS' | 'EVERYONE';\n\nexport const PollData_Poll_Settings_Permissions_ViewRole = {\n  CREATOR: 'CREATOR',\n  VOTERS: 'VOTERS',\n  EVERYONE: 'EVERYONE',\n} as const;\n\nexport type PollData_Poll_Settings_Permissions_VoteRole = 'SITE_MEMBERS' | 'ALL';\n\nexport const PollData_Poll_Settings_Permissions_VoteRole = {\n  SITE_MEMBERS: 'SITE_MEMBERS',\n  ALL: 'ALL',\n} as const;\n\nexport type PollData_Layout = {\n  /** Poll layout settings. */\n  poll?: PollData_Layout_PollLayout;\n  /** Poll options layout settings. */\n  options?: PollData_Layout_OptionLayout;\n};\nexport type PollData_Layout_PollLayout = {\n  /** Voting options layout. */\n  type?: PollData_Layout_PollLayout_Type;\n  /** Direction of the text in the poll. Supported values: <br> - `LTR`: Left to right. <br> - `RTL`: Right to left. */\n  direction?: PollData_Layout_PollLayout_Direction;\n  /**\n   * Whether to display the main poll image.\n   *  Default: `false`\n   */\n  enableImage?: boolean;\n};\nexport type PollData_Layout_PollLayout_Type = 'LIST' | 'GRID';\n\nexport const PollData_Layout_PollLayout_Type = {\n  LIST: 'LIST',\n  GRID: 'GRID',\n} as const;\n\nexport type PollData_Layout_PollLayout_Direction = 'LTR' | 'RTL';\n\nexport const PollData_Layout_PollLayout_Direction = {\n  LTR: 'LTR',\n  RTL: 'RTL',\n} as const;\n\nexport type PollData_Layout_OptionLayout = {\n  /**\n   * Whether to display option images.\n   *  Defaults: `false`.\n   */\n  enableImage?: boolean;\n};\nexport type PollData_Design = {\n  /** Poll styling. */\n  poll?: PollData_Design_PollDesign;\n  /** Voting options styling. */\n  options?: PollData_Design_OptionDesign;\n};\nexport type PollData_Design_PollDesign = {\n  /** Poll background styling. */\n  background?: PollData_Design_PollDesign_Background;\n  /** Border radius in pixels. */\n  borderRadius?: number;\n};\nexport type PollData_Design_PollDesign_Background =\n  | PollData_Background_ColorVariant\n  | PollData_Background_ImageVariant\n  | PollData_Background_GradientVariant;\nexport type PollData_Design_PollDesign_Background_Type = 'COLOR' | 'IMAGE' | 'GRADIENT';\n\nexport const PollData_Design_PollDesign_Background_Type = {\n  COLOR: 'COLOR',\n  IMAGE: 'IMAGE',\n  GRADIENT: 'GRADIENT',\n} as const;\n\nexport type PollData_Background_ColorVariant = {\n  type: 'COLOR';\n  /** Background color as a hexademical value. */\n  color?: string;\n};\nexport type PollData_Background_ImageVariant = {\n  type: 'IMAGE';\n  /** Image to use for the background. */\n  image?: Media;\n};\nexport type PollData_Background_GradientVariant = {\n  type: 'GRADIENT';\n  /** Gradient background details. */\n  gradient?: PollData_Design_PollDesign_Background_Gradient;\n};\nexport type PollData_Design_PollDesign_Background_Gradient = {\n  /** Gradient angle in degrees. */\n  angle?: number;\n  /** Start color as a hexadecimal value. */\n  startColor?: string;\n  /** End color as a hexadecimal value. */\n  lastColor?: string;\n};\nexport type PollData_Design_OptionDesign = {\n  /** Border radius in pixels. */\n  borderRadius?: number;\n};\n/** Standalone shapes in a page. */\nexport type ShapeNode = {\n  /**\n   * Node type.\n   *  Must be `SHAPE`.\n   */\n  type: 'SHAPE';\n  /** [Node ID](#node-ids). */\n  id: string;\n  /** Shape options. */\n  shapeData: ShapeData;\n  nodes?: RicosDocumentNode[];\n};\nexport type ShapeData = {\n  /** Shape file details. */\n  shape: Media;\n  /** Shape container styling. */\n  containerData?: PluginContainerData;\n  /** Styling for the shape. */\n  styles?: ShapeData_Styles;\n};\nexport type ShapeData_Styles = {\n  colors?: Record<string, string>;\n};\n/** Data in rows and columns. */\nexport type TableNode = {\n  /**\n   * Node type.\n   *  Must be `TABLE`.\n   */\n  type: 'TABLE';\n  /** Child nodes to define table rows. */\n  nodes: RicosDocumentNode[];\n  /** [Node ID](#node-ids). */\n  id?: string;\n  /** Table details. */\n  tableData?: TableData;\n};\nexport type TableRowNode = {\n  /**\n   * Node type.\n   *  Must be `TABLE_ROW`.\n   */\n  type: 'TABLE_ROW';\n  /** [Node ID](#node-ids). */\n  id?: string;\n  /** Child nodes to define table cells. */\n  nodes?: RicosDocumentNode[];\n};\nexport type TableData = {\n  /** Table container styling. */\n  containerData?: PluginContainerData;\n  /** Table dimensions. */\n  dimensions?: TableData_Dimensions;\n  /** Whether the table's first row is a heading. <br> Default: `false` */\n  rowHeader?: boolean;\n  /** Whether the table's first column is a heading. <br> Default: `false` */\n  columnHeader?: boolean;\n  /** The spacing between cells. */\n  cellSpacing?: number;\n  cellPadding?: number[];\n};\nexport type TableData_Dimensions = {\n  colsWidthRatio?: number[];\n  rowsHeight?: number[];\n  colsMinWidth?: number[];\n};\nexport type TableCellNode = {\n  /**\n   * Node type.\n   *  Must be `TABLE_CELL`.\n   */\n  type: 'TABLE_CELL';\n  /** Child nodes to define cell content. */\n  nodes: RicosDocumentNode[];\n  /** [Node ID](#node-ids). */\n  id?: string;\n  /** Table cell details. */\n  tableCellData?: TableCellData;\n};\n/** Table cell content node. */\nexport type TableCellChildNode =\n  | ParagraphNode\n  | HeadingNode\n  | BulletedListNode\n  | OrderedListNode\n  | BlockquoteNode\n  | AudioNode\n  | FileNode\n  | ImageNode\n  | VideoNode\n  | GifNode\n  | DividerNode\n  | CodeBlockNode\n  | HtmlNode\n  | LinkPreviewNode\n  | AppEmbedNode\n  | ButtonNode\n  | EmbedNode;\nexport type TableCellData = {\n  /** Cell styling. */\n  cellStyle?: TableCellData_CellStyle;\n  /** Cell border colors. */\n  borderColors?: TableCellData_BorderColors;\n  /** Cell border widths. */\n  borderWidths?: TableCellData_BorderWidths;\n  /** Defines how many columns the cell spans. */\n  colspan?: number;\n  /** Defines how many rows the cell spans. */\n  rowspan?: number;\n};\nexport type TableCellData_CellStyle = {\n  /** Vertical alignment for the cell's text. */\n  verticalAlignment?: 'TOP' | 'MIDDLE' | 'BOTTOM';\n  /** Cell background color as a hexadecimal value. */\n  backgroundColor?: string;\n};\nexport type TableCellData_BorderColors = {\n  /** Left border color as a hexadecimal value. */\n  left?: string;\n  /** Right border color as a hexadecimal value. */\n  right?: string;\n  /** Top border color as a hexadecimal value. */\n  top?: string;\n  /** Bottom border color as a hexadecimal value. */\n  bottom?: string;\n};\nexport type TableCellData_BorderWidths = {\n  /** Left border width. */\n  left?: number;\n  /** Right border width. */\n  right?: number;\n  /** Top border width. */\n  top?: number;\n  /** Bottom border width. */\n  bottom?: number;\n};\n/** Embeds and plays video content directly in a page. When rendered, it is displayed as the video player with the specified video file. Users can interact with the controls to play, pause, rewind, and adjust the volume of the video. */\nexport type VideoNode = {\n  /**\n   * Node type.\n   *  Must be `VIDEO`.\n   */\n  type: 'VIDEO';\n  /** Video details. */\n  videoData: VideoData;\n  /** [Node ID](#node-ids). */\n  id?: string;\n  /** Child nodes to define a video caption. */\n  nodes?: RicosDocumentNode[];\n};\nexport type VideoData = {\n  /** Video file details. */\n  video: Media;\n  /** Video container styling. */\n  containerData?: PluginContainerData;\n  /** Video thumbnail details. */\n  thumbnail?: Media;\n  /**\n   * Whether the video download button is disabled.\n   *  Default: `false`\n   */\n  disableDownload?: boolean;\n  /** Video title. */\n  title?: string;\n  /** Playback details. */\n  options?: PlaybackOptions;\n};\nexport type PlaybackOptions = {\n  /** Whether the media automatically starts playing after opening a page. */\n  autoPlay?: boolean;\n  /** Whether the media is looped. */\n  playInLoop?: boolean;\n  /** Whether to show the media controls. */\n  showControls?: boolean;\n};\n/** Nodes that can be added to the root level of `nodes` array. */\nexport type RootNode =\n  | ParagraphNode\n  | HeadingNode\n  | BulletedListNode\n  | OrderedListNode\n  | BlockquoteNode\n  | CodeBlockNode\n  | VideoNode\n  | DividerNode\n  | FileNode\n  | GalleryNode\n  | GifNode\n  | HtmlNode\n  | ImageNode\n  | LinkPreviewNode\n  | PollNode\n  | AppEmbedNode\n  | ButtonNode\n  | CollapsibleListNode\n  | TableNode\n  | EmbedNode\n  | AudioNode\n  | LayoutNode\n  | ExternalNode\n  | ShapeNode\n  | CardNode;\n/** Union of all Ricos document node types. */\nexport type RicosDocumentNode =\n  | BlockquoteNode\n  | CaptionNode\n  | CardNode\n  | CodeBlockNode\n  | HeadingNode\n  | LayoutNode\n  | LayoutCellNode\n  | OrderedListNode\n  | BulletedListNode\n  | ListItemNode\n  | ParagraphNode\n  | TextNode\n  | AppEmbedNode\n  | AudioNode\n  | ButtonNode\n  | CollapsibleListNode\n  | CollapsibleItemNode\n  | CollapsibleItemTitleNode\n  | CollapsibleItemBodyNode\n  | DividerNode\n  | EmbedNode\n  | ExternalNode\n  | FileNode\n  | GalleryNode\n  | GifNode\n  | HtmlNode\n  | ImageNode\n  | LinkPreviewNode\n  | PollNode\n  | ShapeNode\n  | TableNode\n  | TableRowNode\n  | TableCellNode\n  | VideoNode;\n\nexport const LATEST_VERSION = 1;\nexport const RicosDocumentNodeType = {\n  PARAGRAPH: 'PARAGRAPH',\n  TEXT: 'TEXT',\n  HEADING: 'HEADING',\n  BULLETED_LIST: 'BULLETED_LIST',\n  ORDERED_LIST: 'ORDERED_LIST',\n  LIST_ITEM: 'LIST_ITEM',\n  BLOCKQUOTE: 'BLOCKQUOTE',\n  CODE_BLOCK: 'CODE_BLOCK',\n  VIDEO: 'VIDEO',\n  DIVIDER: 'DIVIDER',\n  FILE: 'FILE',\n  GALLERY: 'GALLERY',\n  GIF: 'GIF',\n  HTML: 'HTML',\n  IMAGE: 'IMAGE',\n  LINK_PREVIEW: 'LINK_PREVIEW',\n  POLL: 'POLL',\n  SHAPE: 'SHAPE',\n  APP_EMBED: 'APP_EMBED',\n  BUTTON: 'BUTTON',\n  COLLAPSIBLE_LIST: 'COLLAPSIBLE_LIST',\n  COLLAPSIBLE_ITEM: 'COLLAPSIBLE_ITEM',\n  COLLAPSIBLE_ITEM_TITLE: 'COLLAPSIBLE_ITEM_TITLE',\n  COLLAPSIBLE_ITEM_BODY: 'COLLAPSIBLE_ITEM_BODY',\n  TABLE: 'TABLE',\n  EMBED: 'EMBED',\n  TABLE_CELL: 'TABLE_CELL',\n  TABLE_ROW: 'TABLE_ROW',\n  EXTERNAL: 'EXTERNAL',\n  AUDIO: 'AUDIO',\n  CAPTION: 'CAPTION',\n  LAYOUT: 'LAYOUT',\n  LAYOUT_CELL: 'LAYOUT_CELL',\n  CARD: 'CARD',\n  // for compat with legacy node\n  UNRECOGNIZED: 'UNRECOGNIZED',\n  MAP: 'MAP',\n} as const;\n\nexport type RicosDocumentNodeType = keyof typeof RicosDocumentNodeType;\n\n// For backwards compatibility\n\nexport type RichContent = RicosDocument;\n\nexport const RichContent = {\n  fromJSON: (content: any): RichContent => {\n    return content;\n  },\n  toJSON: (content: RichContent): any => {\n    return content;\n  },\n};\n\nexport type Node_Type = RicosDocumentNodeType;\nexport const Node_Type = RicosDocumentNodeType;\n\nexport type Node = RicosDocumentNode;\n\n// For places where enum value used as type\nexport namespace Node_Type {\n  export type PARAGRAPH = 'PARAGRAPH';\n  export type TEXT = 'TEXT';\n  export type HEADING = 'HEADING';\n  export type BULLETED_LIST = 'BULLETED_LIST';\n  export type ORDERED_LIST = 'ORDERED_LIST';\n  export type LIST_ITEM = 'LIST_ITEM';\n  export type BLOCKQUOTE = 'BLOCKQUOTE';\n  export type CODE_BLOCK = 'CODE_BLOCK';\n  export type VIDEO = 'VIDEO';\n  export type DIVIDER = 'DIVIDER';\n  export type FILE = 'FILE';\n  export type GALLERY = 'GALLERY';\n  export type GIF = 'GIF';\n  export type HTML = 'HTML';\n  export type IMAGE = 'IMAGE';\n  export type LINK_PREVIEW = 'LINK_PREVIEW';\n  export type POLL = 'POLL';\n  export type SHAPE = 'SHAPE';\n  export type APP_EMBED = 'APP_EMBED';\n  export type BUTTON = 'BUTTON';\n  export type COLLAPSIBLE_LIST = 'COLLAPSIBLE_LIST';\n  export type COLLAPSIBLE_ITEM = 'COLLAPSIBLE_ITEM';\n  export type COLLAPSIBLE_ITEM_TITLE = 'COLLAPSIBLE_ITEM_TITLE';\n  export type COLLAPSIBLE_ITEM_BODY = 'COLLAPSIBLE_ITEM_BODY';\n  export type TABLE = 'TABLE';\n  export type EMBED = 'EMBED';\n  export type TABLE_CELL = 'TABLE_CELL';\n  export type TABLE_ROW = 'TABLE_ROW';\n  export type EXTERNAL = 'EXTERNAL';\n  export type AUDIO = 'AUDIO';\n  export type LAYOUT = 'LAYOUT';\n  export type LAYOUT_CELL = 'LAYOUT_CELL';\n  export type CARD = 'CARD';\n}\n","export default {\n  \"metadata\": {\n    \"formats\": {\n      \"WEB_URL\": {\n        \"description\": \"A URL that starts with `http://` or `https://`.\",\n        \"validation\": {\n          \"type\": \"web_url\"\n        }\n      },\n      \"COLOR_HEX\": {\n        \"description\": \"A color in hexadecimal RGB or RGBA format, for example `#FF0000` or `#FF000050`. `COLOR_HEX` accepts shorthand, for example #F00 or #F005.\",\n        \"validation\": {\n          \"type\": \"regex\",\n          \"regex\": \"^#(?:[0-9A-Fa-f]{3,4}|[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$\"\n        }\n      },\n      \"NODE_ID\": {\n        \"description\": \"See [Node ID](#node-ids).\",\n        \"validation\": {\n          \"type\": \"regex\",\n          \"regex\": \"^[-_\\\\w]*$\"\n        }\n      },\n      \"CURRENCY\": {\n        \"description\": \"Currency in ISO 4217 format, for example `USD`, `EUR`.\",\n        \"validation\": {\n          \"type\": \"regex\",\n          \"regex\": \"^[A-Z]{3}$\"\n        }\n      },\n      \"GUID\": {\n        \"description\": \"Global unique identifier in format, for example `d35f5c5f-8391-4f43-b447-75e7b63076f9`\",\n        \"validation\": {\n          \"type\": \"regex\",\n          \"regex\": \"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$\"\n        }\n      },\n      \"DECIMAL\": {\n        \"description\": \"A decimal with max_scale of 2 of format, for example `1.02`, `21.3`\",\n        \"validation\": {\n          \"type\": \"regex\",\n          \"regex\": \"^[-]?\\\\d+(?:\\\\.\\\\d{1,2})?$\"\n        }\n      }\n    }\n  },\n  \"properties\": {\n    \"nodes\": {\n      \"metadata\": {\n        \"tsRicosNodesChildren\": true,\n        \"description\": \"Array of nodes representing content elements, such as `ParagraphNode` or `HeadingNode`.\"\n      },\n      \"elements\": {\n        \"ref\": \"RootNode\"\n      }\n    }\n  },\n  \"optionalProperties\": {\n    \"metadata\": {\n      \"ref\": \"Metadata\",\n      \"metadata\": {\n        \"description\": \"Information about the Ricos document itself, such as its version. Only relevant when building the Ricos document using the [Ricos playground](https:/ricos.dev), in which case it is auto-generated.\"\n      }\n    },\n    \"documentStyle\": {\n      \"ref\": \"DocumentStyle\",\n      \"metadata\": {\n        \"description\": \"Includes styling to be applied throughout the Ricos document for the specified node types. For example, you can define general styling for `headerOne`, and then override some of the properties separately for a specific header.\"\n      }\n    }\n  },\n  \"definitions\": {\n    \"NodeStyle\": {\n      \"metadata\": {\n        \"features\": [\n          \"LINE_SPACING\"\n        ]\n      },\n      \"optionalProperties\": {\n        \"paddingTop\": {\n          \"metadata\": {\n            \"description\": \"The top padding value in pixels.\"\n          },\n          \"type\": \"string\"\n        },\n        \"paddingBottom\": {\n          \"metadata\": {\n            \"description\": \"The bottom padding value in pixels.\"\n          },\n          \"type\": \"string\"\n        },\n        \"backgroundColor\": {\n          \"metadata\": {\n            \"deprecated\": true\n          },\n          \"type\": \"string\"\n        }\n      }\n    },\n    \"DocumentStyle\": {\n      \"metadata\": {\n        \"description\": \"Sets a default styling for specific node types throughout the entire Ricos Document. For example, you can set the text color for all Heading 1 nodes.\\nYou can override the styling of specific Text nodes separately using [decorations](#decorations).\",\n        \"examples\": [\n          \"document-style\"\n        ],\n        \"section\": \"Document Styles\"\n      },\n      \"optionalProperties\": {\n        \"headerOne\": {\n          \"metadata\": {\n            \"description\": \"Style for the H1 nodes.\"\n          },\n          \"ref\": \"TextNodeStyle\"\n        },\n        \"headerTwo\": {\n          \"metadata\": {\n            \"description\": \"Style for the H2 nodes.\"\n          },\n          \"ref\": \"TextNodeStyle\"\n        },\n        \"headerThree\": {\n          \"metadata\": {\n            \"description\": \"Style for the H3 nodes.\"\n          },\n          \"ref\": \"TextNodeStyle\"\n        },\n        \"headerFour\": {\n          \"metadata\": {\n            \"description\": \"Style for the H4 nodes.\"\n          },\n          \"ref\": \"TextNodeStyle\"\n        },\n        \"headerFive\": {\n          \"metadata\": {\n            \"description\": \"Style for the H5 nodes.\"\n          },\n          \"ref\": \"TextNodeStyle\"\n        },\n        \"headerSix\": {\n          \"metadata\": {\n            \"description\": \"Style for the H6 nodes.\"\n          },\n          \"ref\": \"TextNodeStyle\"\n        },\n        \"paragraph\": {\n          \"metadata\": {\n            \"description\": \"Style for the paragraph nodes.\"\n          },\n          \"ref\": \"TextNodeStyle\"\n        },\n        \"blockquote\": {\n          \"metadata\": {\n            \"description\": \"Style for the block quote nodes.\"\n          },\n          \"ref\": \"TextNodeStyle\"\n        },\n        \"codeBlock\": {\n          \"metadata\": {\n            \"description\": \"Style for the codeblock nodes.\"\n          },\n          \"ref\": \"TextNodeStyle\"\n        }\n      }\n    },\n    \"TextNodeStyle\": {\n      \"metadata\": {\n        \"section\": \"Document Styles\"\n      },\n      \"optionalProperties\": {\n        \"decorations\": {\n          \"elements\": {\n            \"ref\": \"Decoration\"\n          },\n          \"metadata\": {\n            \"description\": \"Text node decorations.\"\n          }\n        },\n        \"nodeStyle\": {\n          \"ref\": \"NodeStyle\",\n          \"metadata\": {\n            \"description\": \"Node style, such as padding. \\n **Note:** This node requires the [lineSpacing](#plugins) plugin to be enabled.\"\n          }\n        },\n        \"lineHeight\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"description\": \"Text line height.\"\n          }\n        }\n      }\n    },\n    \"Metadata\": {\n      \"metadata\": {\n        \"section\": \"Metadata\"\n      },\n      \"optionalProperties\": {\n        \"version\": {\n          \"type\": \"int32\",\n          \"metadata\": {\n            \"description\": \"Ricos document version.\"\n          }\n        },\n        \"id\": {\n          \"metadata\": {\n            \"deprecated\": true\n          }\n        },\n        \"createdTimestamp\": {\n          \"metadata\": {\n            \"deprecated\": true\n          }\n        },\n        \"updatedTimestamp\": {\n          \"metadata\": {\n            \"deprecated\": true\n          }\n        }\n      }\n    },\n    \"TextStyle\": {\n      \"optionalProperties\": {\n        \"textAlignment\": {\n          \"metadata\": {\n            \"emitEnum\": \"TextStyle_TextAlignment\",\n            \"description\": \"Text alignment. Supported values: <br> - `AUTO`: Text aligns itself automatically. <br> - `LEFT`: Text is aligned to the left. <br> - `RIGHT`: Text is aligned to the right. <br> - `CENTER`: Text is centered. <br> - `JUSTIFY`: Text is justified to both margins. <br> Default: `AUTO`.\"\n          },\n          \"enum\": [\n            \"AUTO\",\n            \"LEFT\",\n            \"RIGHT\",\n            \"CENTER\",\n            \"JUSTIFY\"\n          ]\n        },\n        \"lineHeight\": {\n          \"metadata\": {\n            \"description\": \"Vertical spacing between lines of text in an element.\"\n          },\n          \"type\": \"string\"\n        }\n      },\n      \"metadata\": {\n        \"section\": \"Common objects\"\n      }\n    },\n    \"Link\": {\n      \"metadata\": {\n        \"section\": \"Common objects\",\n        \"description\": \"Link object.\",\n        \"oneOf\": {\n          \"strict\": true,\n          \"properties\": [\n            \"url\",\n            \"anchor\"\n          ]\n        }\n      },\n      \"optionalProperties\": {\n        \"url\": {\n          \"metadata\": {\n            \"description\": \"Absolute URL to link to.\"\n          },\n          \"type\": \"string\"\n        },\n        \"anchor\": {\n          \"metadata\": {\n            \"description\": \"Target [Node ID](#node-ids) to link to.\"\n          },\n          \"type\": \"string\"\n        },\n        \"target\": {\n          \"metadata\": {\n            \"emitEnum\": \"Link_Target\",\n            \"description\": \"The HTML `target` attribute value for the link. This property defines where the link opens. <br> Supported values: <br> `SELF` - Opens the link in the same frame.<br> `BLANK` - Opens the link in a new browser tab or window.<br> `PARENT` - Opens the link in the parent frame.<br> `TOP` - Opens the link in the full body of the link's browser tab or window. <br> Default: `SELF`\"\n          },\n          \"enum\": [\n            \"SELF\",\n            \"BLANK\",\n            \"PARENT\",\n            \"TOP\"\n          ]\n        },\n        \"rel\": {\n          \"metadata\": {\n            \"description\": \"Relationship between the current document and the linked document.\"\n          },\n          \"ref\": \"Link_Rel\"\n        },\n        \"customData\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"deprecated\": true,\n            \"internal\": true,\n            \"description\": \"A serialized object used for a custom or external link panel.\"\n          }\n        }\n      }\n    },\n    \"Link_Rel\": {\n      \"optionalProperties\": {\n        \"nofollow\": {\n          \"metadata\": {\n            \"description\": \"Indicates to search engine crawlers not to follow the link. \\n Default: `false`\"\n          },\n          \"type\": \"boolean\"\n        },\n        \"sponsored\": {\n          \"metadata\": {\n            \"description\": \"Indicates to search engine crawlers that the link is a paid placement such as sponsored content or an advertisement. \\n Default: `false`\"\n          },\n          \"type\": \"boolean\"\n        },\n        \"ugc\": {\n          \"metadata\": {\n            \"description\": \"Indicates that this link is user-generated content and isn't necessarily trusted or endorsed by the page author. \\n Default: `false`\"\n          },\n          \"type\": \"boolean\"\n        },\n        \"noreferrer\": {\n          \"metadata\": {\n            \"description\": \"Indicates that this link protects referral information from being passed to the target website.\"\n          },\n          \"type\": \"boolean\"\n        }\n      },\n      \"metadata\": {\n        \"section\": \"Common objects\"\n      }\n    },\n    \"FileSource\": {\n      \"metadata\": {\n        \"section\": \"Common objects\",\n        \"description\": \"File source object.\",\n        \"oneOf\": {\n          \"strict\": true,\n          \"properties\": [\n            \"url\",\n            \"id\"\n          ]\n        }\n      },\n      \"optionalProperties\": {\n        \"url\": {\n          \"metadata\": {\n            \"description\": \"File source URL.\"\n          },\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"metadata\": {\n            \"description\": \"ID that's resolved to a URL by a resolver function.\"\n          },\n          \"type\": \"string\"\n        },\n        \"private\": {\n          \"metadata\": {\n            \"description\": \"Whether the file's source is private. Learn more about [private files](https://dev.wix.com/docs/rest/assets/media/media-manager/files/private-files) in Wix. \\n Default: `false`\"\n          },\n          \"type\": \"boolean\"\n        }\n      }\n    },\n    \"Media\": {\n      \"properties\": {\n        \"src\": {\n          \"metadata\": {\n            \"description\": \"File source.\"\n          },\n          \"ref\": \"FileSource\"\n        }\n      },\n      \"optionalProperties\": {\n        \"width\": {\n          \"metadata\": {\n            \"description\": \"Media width in pixels.\"\n          },\n          \"type\": \"int32\"\n        },\n        \"height\": {\n          \"metadata\": {\n            \"description\": \"Media height in pixels.\"\n          },\n          \"type\": \"int32\"\n        },\n        \"duration\": {\n          \"metadata\": {\n            \"description\": \"Media duration in seconds. Only relevant for audio and video files.\"\n          },\n          \"type\": \"float64\"\n        }\n      },\n      \"metadata\": {\n        \"section\": \"Common objects\"\n      }\n    },\n    \"Never\": {\n      \"metadata\": {\n        \"section\": \"Common objects\",\n        \"internal\": true\n      },\n      \"properties\": {\n        \"_neverCreatedElement\": {}\n      }\n    },\n    \"VerticalAlignment\": {\n      \"metadata\": {\n        \"section\": \"Common objects\",\n        \"emitEnum\": \"VerticalAlignment\",\n        \"description\": \"Vertical alignment.\"\n      },\n      \"enum\": [\n        \"TOP\",\n        \"MIDDLE\",\n        \"BOTTOM\"\n      ]\n    },\n    \"BackgroundImage\": {\n      \"optionalProperties\": {\n        \"media\": {\n          \"ref\": \"Media\",\n          \"metadata\": {\n            \"description\": \"Background image.\"\n          }\n        },\n        \"opacity\": {\n          \"type\": \"int32\",\n          \"metadata\": {\n            \"description\": \"Background image opacity.\",\n            \"validation\": {\n              \"min\": 0,\n              \"max\": 100\n            }\n          }\n        },\n        \"scaling\": {\n          \"ref\": \"ImageScaling\",\n          \"metadata\": {\n            \"description\": \"Background image scaling.\"\n          }\n        },\n        \"position\": {\n          \"ref\": \"ImagePosition\",\n          \"metadata\": {\n            \"description\": \"Position of background. Defaults to `CENTER`.\"\n          }\n        }\n      },\n      \"metadata\": {\n        \"section\": \"Common objects\"\n      }\n    },\n    \"ImageScaling\": {\n      \"metadata\": {\n        \"section\": \"Common objects\",\n        \"emitEnum\": \"ImageScaling\",\n        \"description\": \"Image scaling.\"\n      },\n      \"enum\": [\n        \"AUTO\",\n        \"CONTAIN\",\n        \"COVER\"\n      ]\n    },\n    \"ImagePosition\": {\n      \"metadata\": {\n        \"section\": \"Common objects\",\n        \"emitEnum\": \"ImagePosition\",\n        \"description\": \"Image position.\"\n      },\n      \"enum\": [\n        \"CENTER\",\n        \"CENTER_LEFT\",\n        \"CENTER_RIGHT\",\n        \"TOP\",\n        \"TOP_LEFT\",\n        \"TOP_RIGHT\",\n        \"BOTTOM\",\n        \"BOTTOM_LEFT\",\n        \"BOTTOM_RIGHT\"\n      ]\n    },\n    \"Gradient\": {\n      \"discriminator\": \"type\",\n      \"metadata\": {\n        \"section\": \"Common objects\",\n        \"refUnion\": {\n          \"LINEAR\": \"Gradient_Linear\",\n          \"RADIAL\": \"Gradient_Radial\"\n        },\n        \"emitEnum\": \"Gradient_Type\",\n        \"description\": \"Gradient configuration. Either linear or radial.\"\n      },\n      \"mapping\": {\n        \"LINEAR\": {\n          \"properties\": {\n            \"stops\": {\n              \"elements\": {\n                \"ref\": \"Gradient_Stop\"\n              },\n              \"metadata\": {\n                \"description\": \"Color stops for the gradient.\",\n                \"validation\": {\n                  \"minSize\": 1\n                }\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"angle\": {\n              \"type\": \"int32\",\n              \"metadata\": {\n                \"description\": \"Angle in degrees for linear gradient (0-360). \\n Default: `90`\"\n              }\n            }\n          },\n          \"metadata\": {\n            \"section\": \"Common objects\"\n          }\n        },\n        \"RADIAL\": {\n          \"properties\": {\n            \"stops\": {\n              \"elements\": {\n                \"ref\": \"Gradient_Stop\"\n              },\n              \"metadata\": {\n                \"description\": \"Color stops for the gradient.\",\n                \"validation\": {\n                  \"minSize\": 1\n                }\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"centerX\": {\n              \"type\": \"float64\",\n              \"metadata\": {\n                \"description\": \"Horizontal center position (0-100). \\n Default: `50`\",\n                \"validation\": {\n                  \"min\": 0,\n                  \"max\": 100\n                }\n              }\n            },\n            \"centerY\": {\n              \"type\": \"float64\",\n              \"metadata\": {\n                \"description\": \"Vertical center position (0-100). \\n Default: `50`\",\n                \"validation\": {\n                  \"min\": 0,\n                  \"max\": 100\n                }\n              }\n            }\n          },\n          \"metadata\": {\n            \"section\": \"Common objects\"\n          }\n        }\n      }\n    },\n    \"Background\": {\n      \"discriminator\": \"type\",\n      \"metadata\": {\n        \"section\": \"Common objects\",\n        \"refUnion\": {\n          \"COLOR\": \"Background_ColorVariant\",\n          \"GRADIENT\": \"Background_GradientVariant\"\n        },\n        \"emitEnum\": \"Background_Type\",\n        \"description\": \"Background styling. Either a solid color or gradient.\"\n      },\n      \"mapping\": {\n        \"COLOR\": {\n          \"properties\": {\n            \"color\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"COLOR_HEX\",\n                \"description\": \"Background color as a hexadecimal value.\"\n              }\n            }\n          },\n          \"metadata\": {\n            \"section\": \"Common objects\"\n          }\n        },\n        \"GRADIENT\": {\n          \"properties\": {\n            \"gradient\": {\n              \"ref\": \"Gradient\",\n              \"metadata\": {\n                \"description\": \"Gradient configuration.\"\n              }\n            }\n          },\n          \"metadata\": {\n            \"section\": \"Common objects\"\n          }\n        }\n      }\n    },\n    \"Background_ColorVariant\": {\n      \"properties\": {\n        \"type\": {\n          \"enum\": [\n            \"COLOR\"\n          ]\n        },\n        \"color\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"format\": \"COLOR_HEX\",\n            \"description\": \"Background color as a hexadecimal value.\"\n          }\n        }\n      },\n      \"metadata\": {\n        \"section\": \"Common objects\"\n      }\n    },\n    \"Background_GradientVariant\": {\n      \"properties\": {\n        \"type\": {\n          \"enum\": [\n            \"GRADIENT\"\n          ]\n        },\n        \"gradient\": {\n          \"ref\": \"Gradient\",\n          \"metadata\": {\n            \"description\": \"Gradient configuration.\"\n          }\n        }\n      },\n      \"metadata\": {\n        \"section\": \"Common objects\"\n      }\n    },\n    \"Gradient_Linear\": {\n      \"properties\": {\n        \"type\": {\n          \"enum\": [\n            \"LINEAR\"\n          ]\n        },\n        \"stops\": {\n          \"elements\": {\n            \"ref\": \"Gradient_Stop\"\n          },\n          \"metadata\": {\n            \"description\": \"Color stops for the gradient.\",\n            \"validation\": {\n              \"minSize\": 1\n            }\n          }\n        }\n      },\n      \"optionalProperties\": {\n        \"angle\": {\n          \"type\": \"int32\",\n          \"metadata\": {\n            \"description\": \"Angle in degrees for linear gradient (0-360). \\n Default: `90`\"\n          }\n        }\n      },\n      \"metadata\": {\n        \"section\": \"Common objects\"\n      }\n    },\n    \"Gradient_Radial\": {\n      \"properties\": {\n        \"type\": {\n          \"enum\": [\n            \"RADIAL\"\n          ]\n        },\n        \"stops\": {\n          \"elements\": {\n            \"ref\": \"Gradient_Stop\"\n          },\n          \"metadata\": {\n            \"description\": \"Color stops for the gradient.\",\n            \"validation\": {\n              \"minSize\": 1\n            }\n          }\n        }\n      },\n      \"optionalProperties\": {\n        \"centerX\": {\n          \"type\": \"float64\",\n          \"metadata\": {\n            \"description\": \"Horizontal center position (0-100). \\n Default: `50`\",\n            \"validation\": {\n              \"min\": 0,\n              \"max\": 100\n            }\n          }\n        },\n        \"centerY\": {\n          \"type\": \"float64\",\n          \"metadata\": {\n            \"description\": \"Vertical center position (0-100). \\n Default: `50`\",\n            \"validation\": {\n              \"min\": 0,\n              \"max\": 100\n            }\n          }\n        }\n      },\n      \"metadata\": {\n        \"section\": \"Common objects\"\n      }\n    },\n    \"Gradient_Stop\": {\n      \"optionalProperties\": {\n        \"color\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"format\": \"COLOR_HEX\",\n            \"description\": \"Stop color as a hexadecimal value.\"\n          }\n        },\n        \"position\": {\n          \"type\": \"float64\",\n          \"metadata\": {\n            \"description\": \"Stop position (0-1). \\n Default: `0`\"\n          }\n        }\n      },\n      \"metadata\": {\n        \"section\": \"Common objects\"\n      }\n    },\n    \"PluginContainerData\": {\n      \"optionalProperties\": {\n        \"width\": {\n          \"metadata\": {\n            \"description\": \"Node display width.\"\n          },\n          \"ref\": \"PluginContainerData_Width\"\n        },\n        \"alignment\": {\n          \"metadata\": {\n            \"emitEnum\": \"PluginContainerData_Alignment\",\n            \"description\": \"Node alignment in its container.\"\n          },\n          \"enum\": [\n            \"CENTER\",\n            \"LEFT\",\n            \"RIGHT\"\n          ]\n        },\n        \"spoiler\": {\n          \"metadata\": {\n            \"description\": \"Spoiler cover settings.\",\n            \"features\": [\n              \"SPOILER\"\n            ]\n          },\n          \"ref\": \"PluginContainerData_Spoiler\"\n        },\n        \"height\": {\n          \"metadata\": {\n            \"description\": \"Node display height.\"\n          },\n          \"ref\": \"PluginContainerData_Height\"\n        },\n        \"textWrap\": {\n          \"metadata\": {\n            \"description\": \"Whether the text should wrap around the node when it's displayed. If `textWrap` is `false`, the node fills the width of its container. \\n Default: `true` for all node types except `DIVIDER`.\"\n          },\n          \"type\": \"boolean\"\n        }\n      },\n      \"metadata\": {\n        \"section\": \"containerdata\"\n      }\n    },\n    \"PluginContainerData_Spoiler\": {\n      \"optionalProperties\": {\n        \"enabled\": {\n          \"metadata\": {\n            \"description\": \"Whether the spoiler cover is enabled. \\n Default: `false`\"\n          },\n          \"type\": \"boolean\"\n        },\n        \"description\": {\n          \"metadata\": {\n            \"description\": \"Text displayed on the spoiler cover.\"\n          },\n          \"type\": \"string\"\n        },\n        \"buttonText\": {\n          \"metadata\": {\n            \"description\": \"Text that appears on the button that removes the spoiler cover.\"\n          },\n          \"type\": \"string\"\n        }\n      },\n      \"metadata\": {\n        \"section\": \"containerdata\"\n      }\n    },\n    \"PluginContainerData_Width\": {\n      \"metadata\": {\n        \"section\": \"containerdata\",\n        \"description\": \"Node display width.\",\n        \"oneOf\": {\n          \"properties\": [\n            \"size\",\n            \"custom\"\n          ]\n        }\n      },\n      \"optionalProperties\": {\n        \"size\": {\n          \"metadata\": {\n            \"emitEnum\": \"PluginContainerData_Width_Type\",\n            \"description\": \"Width of a node in a container. Supported values: \\n - `CONTENT`: Width of the container matches the content width. \\n - `SMALL`: Small width. \\n - `ORIGINAL`: Width of the container matches the original image width. **Note:** This value is only applicable for `imageData` containers. \\n `FULL_WIDTH`: Image container takes up the full width of the screen. **Note:** This value is only applicable for `imageData` containers.\"\n          },\n          \"enum\": [\n            \"CONTENT\",\n            \"SMALL\",\n            \"ORIGINAL\",\n            \"FULL_WIDTH\"\n          ]\n        },\n        \"custom\": {\n          \"metadata\": {\n            \"description\": \"A custom width value in pixels.\"\n          },\n          \"type\": \"string\"\n        }\n      }\n    },\n    \"PluginContainerData_Height\": {\n      \"optionalProperties\": {\n        \"custom\": {\n          \"metadata\": {\n            \"description\": \"Node display height in pixels.\"\n          },\n          \"type\": \"string\"\n        }\n      },\n      \"metadata\": {\n        \"section\": \"containerdata\"\n      }\n    },\n    \"Decoration\": {\n      \"discriminator\": \"type\",\n      \"metadata\": {\n        \"section\": \"Decorations\",\n        \"refUnion\": {\n          \"BOLD\": \"BoldDecoration\",\n          \"ITALIC\": \"ItalicDecoration\",\n          \"UNDERLINE\": \"UnderlineDecoration\",\n          \"SPOILER\": \"SpoilerDecoration\",\n          \"ANCHOR\": \"AnchorDecoration\",\n          \"MENTION\": \"MentionDecoration\",\n          \"LINK\": \"LinkDecoration\",\n          \"COLOR\": \"ColorDecoration\",\n          \"FONT_SIZE\": \"FontSizeDecoration\",\n          \"STRIKETHROUGH\": \"StrikethroughDecoration\",\n          \"SUPERSCRIPT\": \"SuperscriptDecoration\",\n          \"SUBSCRIPT\": \"SubscriptDecoration\",\n          \"FONT_FAMILY\": \"FontFamilyDecoration\"\n        },\n        \"emitEnum\": \"Decoration_Type\"\n      },\n      \"mapping\": {\n        \"BOLD\": {\n          \"metadata\": {\n            \"section\": \"Bold\",\n            \"examples\": [\n              \"bold\"\n            ],\n            \"description\": \"Bolds text, which makes it appear thicker and more prominent than normal text.\"\n          },\n          \"properties\": {},\n          \"optionalProperties\": {\n            \"fontWeightValue\": {\n              \"type\": \"float32\",\n              \"metadata\": {\n                \"description\": \"Font weight.\"\n              }\n            }\n          }\n        },\n        \"ITALIC\": {\n          \"metadata\": {\n            \"section\": \"Italic\",\n            \"examples\": [\n              \"italic\"\n            ],\n            \"description\": \"Italicizes text, which makes it appear slanted or italicized. Italics are typically used for emphasis, citations, or to distinguish certain types of content.\"\n          },\n          \"properties\": {},\n          \"optionalProperties\": {\n            \"italicData\": {\n              \"type\": \"boolean\",\n              \"metadata\": {\n                \"description\": \"Whether to enable the italic text.\"\n              }\n            }\n          }\n        },\n        \"UNDERLINE\": {\n          \"metadata\": {\n            \"section\": \"Underline\",\n            \"examples\": [\n              \"underline\"\n            ],\n            \"description\": \"Underlines text.\"\n          },\n          \"properties\": {},\n          \"optionalProperties\": {\n            \"underlineData\": {\n              \"type\": \"boolean\",\n              \"metadata\": {\n                \"description\": \"Whether to underline the text.\"\n              }\n            }\n          }\n        },\n        \"SPOILER\": {\n          \"metadata\": {\n            \"section\": \"Spoiler\",\n            \"examples\": [\n              \"spoiler\"\n            ],\n            \"features\": [\n              \"SPOILER\"\n            ],\n            \"description\": \"Blurs text. <br> **Note:** This decoration requires the [`spoiler`](https://dev.wix.com/docs/ricos/getting-started/introduction#plugins) plugin to be enabled.\"\n          },\n          \"properties\": {},\n          \"optionalProperties\": {\n            \"spoilerData\": {\n              \"ref\": \"SpoilerData\",\n              \"metadata\": {\n                \"description\": \"Spoiler details.\"\n              }\n            }\n          }\n        },\n        \"ANCHOR\": {\n          \"metadata\": {\n            \"section\": \"Anchor\",\n            \"examples\": [\n              \"anchor\"\n            ],\n            \"description\": \"Makes clickable text a different color. The link navigates to another section of the same page.\"\n          },\n          \"properties\": {},\n          \"optionalProperties\": {\n            \"anchorData\": {\n              \"ref\": \"AnchorData\",\n              \"metadata\": {\n                \"description\": \"Anchor details.\"\n              }\n            }\n          }\n        },\n        \"MENTION\": {\n          \"metadata\": {\n            \"section\": \"Mention\",\n            \"examples\": [\n              \"mention\"\n            ],\n            \"features\": [\n              \"MENTION\"\n            ],\n            \"description\": \"Text that mentions a specific user, often in social media platforms, forums, or content management systems. <br> **Note:** This decoration requires the [`mention`](https://dev.wix.com/docs/ricos/getting-started/introduction#plugins) plugin to be enabled.\"\n          },\n          \"properties\": {},\n          \"optionalProperties\": {\n            \"mentionData\": {\n              \"ref\": \"MentionData\",\n              \"metadata\": {\n                \"description\": \"Anchor details.\"\n              }\n            }\n          }\n        },\n        \"LINK\": {\n          \"metadata\": {\n            \"section\": \"Link Decoration\",\n            \"examples\": [\n              \"link\"\n            ],\n            \"features\": [\n              \"LINK\"\n            ],\n            \"description\": \"Makes clickable text a different color. The link navigates to another webpage or resource. <br> **Note:** This decoration requires the [`link`](https://dev.wix.com/docs/ricos/getting-started/introduction#plugins) plugin to be enabled.\"\n          },\n          \"properties\": {},\n          \"optionalProperties\": {\n            \"linkData\": {\n              \"ref\": \"LinkData\",\n              \"metadata\": {\n                \"description\": \"Link details.\"\n              }\n            }\n          }\n        },\n        \"COLOR\": {\n          \"metadata\": {\n            \"section\": \"Color\",\n            \"examples\": [\n              \"color\"\n            ],\n            \"features\": [\n              \"COLOR_DECORATION\"\n            ],\n            \"description\": \"Styles text using background and text colors. <br> **Note:** This decoration requires the [`colorDecoration`](https://dev.wix.com/docs/ricos/getting-started/introduction#plugins) plugin to be enabled.\"\n          },\n          \"properties\": {},\n          \"optionalProperties\": {\n            \"colorData\": {\n              \"ref\": \"ColorData\",\n              \"metadata\": {\n                \"description\": \"Color details.\"\n              }\n            }\n          }\n        },\n        \"FONT_SIZE\": {\n          \"metadata\": {\n            \"section\": \"FontSize\",\n            \"examples\": [\n              \"font-size\"\n            ],\n            \"description\": \"Text font size.\"\n          },\n          \"properties\": {},\n          \"optionalProperties\": {\n            \"fontSizeData\": {\n              \"ref\": \"FontSizeData\",\n              \"metadata\": {\n                \"description\": \"Font size details.\"\n              }\n            }\n          }\n        },\n        \"STRIKETHROUGH\": {\n          \"metadata\": {\n            \"section\": \"Strikethrough\",\n            \"examples\": [\n              \"strikethrough\"\n            ],\n            \"description\": \"Strikes-through text.\"\n          },\n          \"properties\": {},\n          \"optionalProperties\": {\n            \"strikethroughData\": {\n              \"type\": \"boolean\",\n              \"metadata\": {\n                \"description\": \"Whether to strikethrough the text. Default: `true`.\"\n              }\n            }\n          }\n        },\n        \"SUPERSCRIPT\": {\n          \"metadata\": {\n            \"section\": \"Superscript\",\n            \"examples\": [\n              \"superscript\"\n            ],\n            \"description\": \"Makes text appear smaller and raised above the baseline.\"\n          },\n          \"properties\": {},\n          \"optionalProperties\": {\n            \"superscriptData\": {\n              \"type\": \"boolean\",\n              \"metadata\": {\n                \"description\": \"Whether to make the text appear smaller and raised above the baseline.\"\n              }\n            }\n          }\n        },\n        \"SUBSCRIPT\": {\n          \"metadata\": {\n            \"section\": \"Subscript\",\n            \"examples\": [\n              \"subscript\"\n            ],\n            \"description\": \"Makes text appear smaller and lowered below the baseline.\"\n          },\n          \"properties\": {},\n          \"optionalProperties\": {\n            \"subscriptData\": {\n              \"type\": \"boolean\",\n              \"metadata\": {\n                \"description\": \"Whether to make the text appear smaller and lowered below the baseline.\"\n              }\n            }\n          }\n        },\n        \"FONT_FAMILY\": {\n          \"metadata\": {\n            \"section\": \"FontFamily\",\n            \"examples\": [\n              \"font-family\"\n            ],\n            \"features\": [\n              \"FONT_FAMILY\"\n            ],\n            \"description\": \"Text font family.\"\n          },\n          \"properties\": {},\n          \"optionalProperties\": {\n            \"fontFamilyData\": {\n              \"ref\": \"FontFamilyData\",\n              \"metadata\": {\n                \"description\": \"Font family details.\"\n              }\n            }\n          }\n        }\n      }\n    },\n    \"BoldDecoration\": {\n      \"metadata\": {\n        \"section\": \"Bold\",\n        \"examples\": [\n          \"bold\"\n        ],\n        \"description\": \"Bolds text, which makes it appear thicker and more prominent than normal text.\"\n      },\n      \"properties\": {\n        \"type\": {\n          \"enum\": [\n            \"BOLD\"\n          ],\n          \"metadata\": {\n            \"description\": \"Decoration type. \\n Must be `BOLD`.\"\n          }\n        }\n      },\n      \"optionalProperties\": {\n        \"fontWeightValue\": {\n          \"type\": \"float32\",\n          \"metadata\": {\n            \"description\": \"Font weight.\"\n          }\n        }\n      }\n    },\n    \"ItalicDecoration\": {\n      \"metadata\": {\n        \"section\": \"Italic\",\n        \"examples\": [\n          \"italic\"\n        ],\n        \"description\": \"Italicizes text, which makes it appear slanted or italicized. Italics are typically used for emphasis, citations, or to distinguish certain types of content.\"\n      },\n      \"properties\": {\n        \"type\": {\n          \"enum\": [\n            \"ITALIC\"\n          ],\n          \"metadata\": {\n            \"description\": \"Decoration type. \\n Must be `ITALIC`.\"\n          }\n        }\n      },\n      \"optionalProperties\": {\n        \"italicData\": {\n          \"type\": \"boolean\",\n          \"metadata\": {\n            \"description\": \"Whether to enable the italic text.\"\n          }\n        }\n      }\n    },\n    \"UnderlineDecoration\": {\n      \"metadata\": {\n        \"section\": \"Underline\",\n        \"examples\": [\n          \"underline\"\n        ],\n        \"description\": \"Underlines text.\"\n      },\n      \"properties\": {\n        \"type\": {\n          \"enum\": [\n            \"UNDERLINE\"\n          ],\n          \"metadata\": {\n            \"description\": \"Decoration type. \\nMust be `UNDERLINE`.\"\n          }\n        }\n      },\n      \"optionalProperties\": {\n        \"underlineData\": {\n          \"type\": \"boolean\",\n          \"metadata\": {\n            \"description\": \"Whether to underline the text.\"\n          }\n        }\n      }\n    },\n    \"StrikethroughDecoration\": {\n      \"metadata\": {\n        \"section\": \"Strikethrough\",\n        \"examples\": [\n          \"strikethrough\"\n        ],\n        \"description\": \"Strikes-through text.\"\n      },\n      \"properties\": {\n        \"type\": {\n          \"enum\": [\n            \"STRIKETHROUGH\"\n          ],\n          \"metadata\": {\n            \"description\": \"Decoration type. \\nMust be `STRIKETHROUGH`.\"\n          }\n        }\n      },\n      \"optionalProperties\": {\n        \"strikethroughData\": {\n          \"type\": \"boolean\",\n          \"metadata\": {\n            \"description\": \"Whether to strikethrough the text. Default: `true`.\"\n          }\n        }\n      }\n    },\n    \"SuperscriptDecoration\": {\n      \"metadata\": {\n        \"section\": \"Superscript\",\n        \"examples\": [\n          \"superscript\"\n        ],\n        \"description\": \"Makes text appear smaller and raised above the baseline.\"\n      },\n      \"properties\": {\n        \"type\": {\n          \"enum\": [\n            \"SUPERSCRIPT\"\n          ],\n          \"metadata\": {\n            \"description\": \"Decoration type. \\n Must be `SUPERSCRIPT`.\"\n          }\n        }\n      },\n      \"optionalProperties\": {\n        \"superscriptData\": {\n          \"type\": \"boolean\",\n          \"metadata\": {\n            \"description\": \"Whether to make the text appear smaller and raised above the baseline.\"\n          }\n        }\n      }\n    },\n    \"SubscriptDecoration\": {\n      \"metadata\": {\n        \"section\": \"Subscript\",\n        \"examples\": [\n          \"subscript\"\n        ],\n        \"description\": \"Makes text appear smaller and lowered below the baseline.\"\n      },\n      \"properties\": {\n        \"type\": {\n          \"enum\": [\n            \"SUBSCRIPT\"\n          ],\n          \"metadata\": {\n            \"description\": \"Decoration type. \\n Must be `SUBSCRIPT`.\"\n          }\n        }\n      },\n      \"optionalProperties\": {\n        \"subscriptData\": {\n          \"type\": \"boolean\",\n          \"metadata\": {\n            \"description\": \"Whether to make the text appear smaller and lowered below the baseline.\"\n          }\n        }\n      }\n    },\n    \"SpoilerDecoration\": {\n      \"metadata\": {\n        \"section\": \"Spoiler\",\n        \"examples\": [\n          \"spoiler\"\n        ],\n        \"features\": [\n          \"SPOILER\"\n        ],\n        \"description\": \"Blurs text. <br> **Note:** This decoration requires the [`spoiler`](https://dev.wix.com/docs/ricos/getting-started/introduction#plugins) plugin to be enabled.\"\n      },\n      \"properties\": {\n        \"type\": {\n          \"enum\": [\n            \"SPOILER\"\n          ],\n          \"metadata\": {\n            \"description\": \"Decoration type. \\n Must be `SPOILER`.\"\n          }\n        }\n      },\n      \"optionalProperties\": {\n        \"spoilerData\": {\n          \"ref\": \"SpoilerData\",\n          \"metadata\": {\n            \"description\": \"Spoiler details.\"\n          }\n        }\n      }\n    },\n    \"AnchorDecoration\": {\n      \"metadata\": {\n        \"section\": \"Anchor\",\n        \"examples\": [\n          \"anchor\"\n        ],\n        \"description\": \"Makes clickable text a different color. The link navigates to another section of the same page.\"\n      },\n      \"properties\": {\n        \"type\": {\n          \"enum\": [\n            \"ANCHOR\"\n          ],\n          \"metadata\": {\n            \"description\": \"Decoration type. \\n Must be `ANCHOR`.\"\n          }\n        }\n      },\n      \"optionalProperties\": {\n        \"anchorData\": {\n          \"ref\": \"AnchorData\",\n          \"metadata\": {\n            \"description\": \"Anchor details.\"\n          }\n        }\n      }\n    },\n    \"MentionDecoration\": {\n      \"metadata\": {\n        \"section\": \"Mention\",\n        \"examples\": [\n          \"mention\"\n        ],\n        \"features\": [\n          \"MENTION\"\n        ],\n        \"description\": \"Text that mentions a specific user, often in social media platforms, forums, or content management systems. <br> **Note:** This decoration requires the [`mention`](https://dev.wix.com/docs/ricos/getting-started/introduction#plugins) plugin to be enabled.\"\n      },\n      \"properties\": {\n        \"type\": {\n          \"enum\": [\n            \"MENTION\"\n          ],\n          \"metadata\": {\n            \"description\": \"Decoration type. \\n Must be `MENTION`.\"\n          }\n        }\n      },\n      \"optionalProperties\": {\n        \"mentionData\": {\n          \"ref\": \"MentionData\",\n          \"metadata\": {\n            \"description\": \"Anchor details.\"\n          }\n        }\n      }\n    },\n    \"LinkDecoration\": {\n      \"metadata\": {\n        \"section\": \"Link Decoration\",\n        \"examples\": [\n          \"link\"\n        ],\n        \"features\": [\n          \"LINK\"\n        ],\n        \"description\": \"Makes clickable text a different color. The link navigates to another webpage or resource. <br> **Note:** This decoration requires the [`link`](https://dev.wix.com/docs/ricos/getting-started/introduction#plugins) plugin to be enabled.\"\n      },\n      \"properties\": {\n        \"type\": {\n          \"enum\": [\n            \"LINK\"\n          ],\n          \"metadata\": {\n            \"description\": \"Decoration type. \\n Must be `LINK`.\"\n          }\n        }\n      },\n      \"optionalProperties\": {\n        \"linkData\": {\n          \"ref\": \"LinkData\",\n          \"metadata\": {\n            \"description\": \"Link details.\"\n          }\n        }\n      }\n    },\n    \"ColorDecoration\": {\n      \"metadata\": {\n        \"section\": \"Color\",\n        \"examples\": [\n          \"color\"\n        ],\n        \"features\": [\n          \"COLOR_DECORATION\"\n        ],\n        \"description\": \"Styles text using background and text colors. <br> **Note:** This decoration requires the [`colorDecoration`](https://dev.wix.com/docs/ricos/getting-started/introduction#plugins) plugin to be enabled.\"\n      },\n      \"properties\": {\n        \"type\": {\n          \"enum\": [\n            \"COLOR\"\n          ],\n          \"metadata\": {\n            \"description\": \"Decoration type. \\n Value: `COLOR`\"\n          }\n        }\n      },\n      \"optionalProperties\": {\n        \"colorData\": {\n          \"ref\": \"ColorData\",\n          \"metadata\": {\n            \"description\": \"Color details.\"\n          }\n        }\n      }\n    },\n    \"FontSizeDecoration\": {\n      \"metadata\": {\n        \"section\": \"FontSize\",\n        \"examples\": [\n          \"font-size\"\n        ],\n        \"description\": \"Text font size.\"\n      },\n      \"properties\": {\n        \"type\": {\n          \"enum\": [\n            \"FONT_SIZE\"\n          ],\n          \"metadata\": {\n            \"description\": \"Decoration type. \\n Must be `FONT_SIZE`.\"\n          }\n        }\n      },\n      \"optionalProperties\": {\n        \"fontSizeData\": {\n          \"ref\": \"FontSizeData\",\n          \"metadata\": {\n            \"description\": \"Font size details.\"\n          }\n        }\n      }\n    },\n    \"AnchorData\": {\n      \"metadata\": {\n        \"section\": \"Anchor\"\n      },\n      \"optionalProperties\": {\n        \"anchor\": {\n          \"metadata\": {\n            \"description\": \"Target Node ID to redirect to.\"\n          },\n          \"type\": \"string\"\n        }\n      }\n    },\n    \"ColorData\": {\n      \"metadata\": {\n        \"section\": \"Color\"\n      },\n      \"optionalProperties\": {\n        \"background\": {\n          \"metadata\": {\n            \"description\": \"Background color as a hexadecimal value.\"\n          },\n          \"type\": \"string\"\n        },\n        \"foreground\": {\n          \"metadata\": {\n            \"description\": \"Text color as a hexadecimal value.\"\n          },\n          \"type\": \"string\"\n        }\n      }\n    },\n    \"LinkData\": {\n      \"metadata\": {\n        \"section\": \"Link Decoration\"\n      },\n      \"optionalProperties\": {\n        \"link\": {\n          \"ref\": \"Link\",\n          \"metadata\": {\n            \"description\": \"Link object.\"\n          }\n        }\n      }\n    },\n    \"MentionData\": {\n      \"metadata\": {\n        \"section\": \"Mention\"\n      },\n      \"optionalProperties\": {\n        \"name\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"description\": \"Display name of the mentioned user.\"\n          }\n        },\n        \"slug\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"description\": \"Username of the mentioned user. This is th text that appears after the \\\"@\\\".\"\n          }\n        },\n        \"id\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"description\": \"ID of the mentioned user.\"\n          }\n        }\n      }\n    },\n    \"FontSizeData\": {\n      \"metadata\": {\n        \"section\": \"FontSize\"\n      },\n      \"properties\": {\n        \"value\": {\n          \"type\": \"float32\",\n          \"metadata\": {\n            \"description\": \"Font size value.\"\n          }\n        }\n      },\n      \"optionalProperties\": {\n        \"unit\": {\n          \"metadata\": {\n            \"description\": \"Font size units. \\n Default: `PX`\",\n            \"emitEnum\": \"FontSizeData_fontType\"\n          },\n          \"enum\": [\n            \"PX\",\n            \"EM\"\n          ]\n        }\n      }\n    },\n    \"FontFamilyDecoration\": {\n      \"metadata\": {\n        \"section\": \"FontFamily\",\n        \"examples\": [\n          \"font-family\"\n        ],\n        \"features\": [\n          \"FONT_FAMILY\"\n        ],\n        \"description\": \"Text font family.\"\n      },\n      \"properties\": {\n        \"type\": {\n          \"enum\": [\n            \"FONT_FAMILY\"\n          ],\n          \"metadata\": {\n            \"description\": \"Decoration type. \\n Must be `FONT_FAMILY`.\"\n          }\n        }\n      },\n      \"optionalProperties\": {\n        \"fontFamilyData\": {\n          \"ref\": \"FontFamilyData\",\n          \"metadata\": {\n            \"description\": \"Font family details.\"\n          }\n        }\n      }\n    },\n    \"FontFamilyData\": {\n      \"metadata\": {\n        \"section\": \"FontFamily\"\n      },\n      \"optionalProperties\": {\n        \"value\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"description\": \"Font family value.\"\n          }\n        }\n      }\n    },\n    \"SpoilerData\": {\n      \"metadata\": {\n        \"section\": \"Spoiler\"\n      },\n      \"optionalProperties\": {\n        \"id\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"format\": \"NODE_ID\",\n            \"description\": \"[Node ID](#node-ids).\"\n          }\n        }\n      }\n    },\n    \"BlockquoteNode\": {\n      \"metadata\": {\n        \"section\": \"Block quote\",\n        \"tsRicosNode\": true,\n        \"examples\": [\n          \"blockquote\"\n        ],\n        \"description\": \"Used to visually distinguish quoted or cited content from the surrounding text. When rendered, it displays as the quoted text with indentation or other styling to visually separate it from the surrounding content.\"\n      },\n      \"properties\": {\n        \"type\": {\n          \"enum\": [\n            \"BLOCKQUOTE\"\n          ],\n          \"metadata\": {\n            \"description\": \"Node type. \\n Must be `BLOCKQUOTE`.\"\n          }\n        },\n        \"nodes\": {\n          \"elements\": {\n            \"ref\": \"ParagraphNode\"\n          },\n          \"metadata\": {\n            \"tsRicosNodesChildren\": true,\n            \"description\": \"Child nodes to define a blockquote paragraph.\",\n            \"validation\": {\n              \"minSize\": 1,\n              \"maxSize\": 1\n            }\n          }\n        }\n      },\n      \"optionalProperties\": {\n        \"id\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"format\": \"NODE_ID\",\n            \"description\": \"[Node ID](#node-ids).\"\n          }\n        },\n        \"blockquoteData\": {\n          \"ref\": \"BlockquoteData\",\n          \"metadata\": {\n            \"description\": \"Blockquote details.\"\n          }\n        },\n        \"style\": {\n          \"ref\": \"NodeStyle\",\n          \"metadata\": {\n            \"description\": \"Defines the blockquote style, such as padding and background color. \\n **Note:** This node requires the [`lineSpacing`](https://dev.wix.com/docs/ricos/getting-started/introduction#plugins) plugin to be enabled.\"\n          }\n        }\n      }\n    },\n    \"BlockquoteData\": {\n      \"optionalProperties\": {\n        \"indentation\": {\n          \"type\": \"int32\",\n          \"metadata\": {\n            \"description\": \"Blockquote margin from the left side. \\n The indentation is measured relative to the font size *em* units by a ratio of 1.5. For example, if the indentation is `2`, then the margin is equal to **3em**. Therefore the margin is 3 times the size of the font.\"\n          }\n        }\n      },\n      \"metadata\": {\n        \"section\": \"Block quote\"\n      }\n    },\n    \"CaptionNode\": {\n      \"metadata\": {\n        \"section\": \"Caption\",\n        \"tsRicosNode\": true,\n        \"examples\": [],\n        \"description\": \"Caption container to be attached to media elements, such as images. Captions support formatted text content and can be styled independently from their parent nodes.\"\n      },\n      \"properties\": {\n        \"type\": {\n          \"enum\": [\n            \"CAPTION\"\n          ],\n          \"metadata\": {\n            \"description\": \"Node type. \\n Must be `CAPTION`.\"\n          }\n        },\n        \"nodes\": {\n          \"elements\": {\n            \"ref\": \"TextNode\"\n          },\n          \"metadata\": {\n            \"tsRicosNodesChildren\": true\n          }\n        }\n      },\n      \"optionalProperties\": {\n        \"id\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"description\": \"Caption [node ID](#node-ids).\"\n          }\n        },\n        \"style\": {\n          \"ref\": \"NodeStyle\",\n          \"metadata\": {\n            \"description\": \"Defines the caption styling, such as padding and background color. \\n **Note:** This node requires the [`lineSpacing`](https://dev.wix.com/docs/ricos/getting-started/introduction#plugins) plugin to be enabled.\"\n          }\n        },\n        \"captionData\": {\n          \"ref\": \"CaptionData\",\n          \"metadata\": {\n            \"description\": \"Caption options.\"\n          }\n        }\n      }\n    },\n    \"CaptionData\": {\n      \"optionalProperties\": {\n        \"textStyle\": {\n          \"ref\": \"TextStyle\",\n          \"metadata\": {\n            \"description\": \"Caption text styling.\"\n          }\n        }\n      },\n      \"metadata\": {\n        \"section\": \"Caption\"\n      }\n    },\n    \"CardNode\": {\n      \"metadata\": {\n        \"section\": \"Card\",\n        \"tsRicosNode\": true,\n        \"features\": [\n          \"PAGING\"\n        ],\n        \"description\": \"A card container node that can hold any block-level content.\"\n      },\n      \"properties\": {\n        \"type\": {\n          \"enum\": [\n            \"CARD\"\n          ],\n          \"metadata\": {\n            \"description\": \"Node type. \\n Must be `CARD`.\"\n          }\n        },\n        \"nodes\": {\n          \"elements\": {\n            \"ref\": \"CardChildNode\"\n          },\n          \"metadata\": {\n            \"tsRicosNodesChildren\": true,\n            \"description\": \"Child nodes that the card contains.\"\n          }\n        }\n      },\n      \"optionalProperties\": {\n        \"id\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"format\": \"NODE_ID\",\n            \"description\": \"[Node ID](#node-ids).\"\n          }\n        },\n        \"cardData\": {\n          \"ref\": \"CardData\",\n          \"metadata\": {\n            \"description\": \"Card details.\"\n          }\n        }\n      }\n    },\n    \"CardData\": {\n      \"optionalProperties\": {\n        \"background\": {\n          \"ref\": \"Background\",\n          \"metadata\": {\n            \"description\": \"Background styling (color or gradient).\"\n          }\n        },\n        \"backgroundImage\": {\n          \"ref\": \"BackgroundImage\",\n          \"metadata\": {\n            \"description\": \"Background image.\"\n          }\n        }\n      },\n      \"metadata\": {\n        \"section\": \"Card\"\n      }\n    },\n    \"CardChildNode\": {\n      \"discriminator\": \"type\",\n      \"metadata\": {\n        \"section\": \"Card\",\n        \"description\": \"Nodes that can be placed inside a Card.\",\n        \"refUnion\": {\n          \"PARAGRAPH\": \"ParagraphNode\",\n          \"HEADING\": \"HeadingNode\",\n          \"BULLETED_LIST\": \"BulletedListNode\",\n          \"ORDERED_LIST\": \"OrderedListNode\",\n          \"BLOCKQUOTE\": \"BlockquoteNode\",\n          \"CODE_BLOCK\": \"CodeBlockNode\",\n          \"VIDEO\": \"VideoNode\",\n          \"DIVIDER\": \"DividerNode\",\n          \"FILE\": \"FileNode\",\n          \"GALLERY\": \"GalleryNode\",\n          \"GIF\": \"GifNode\",\n          \"HTML\": \"HtmlNode\",\n          \"IMAGE\": \"ImageNode\",\n          \"LINK_PREVIEW\": \"LinkPreviewNode\",\n          \"POLL\": \"PollNode\",\n          \"APP_EMBED\": \"AppEmbedNode\",\n          \"BUTTON\": \"ButtonNode\",\n          \"COLLAPSIBLE_LIST\": \"CollapsibleListNode\",\n          \"TABLE\": \"TableNode\",\n          \"EMBED\": \"EmbedNode\",\n          \"AUDIO\": \"AudioNode\",\n          \"LAYOUT\": \"LayoutNode\",\n          \"EXTERNAL\": \"ExternalNode\"\n        }\n      },\n      \"mapping\": {\n        \"PARAGRAPH\": {\n          \"metadata\": {\n            \"section\": \"Paragraph\",\n            \"tsRicosNode\": true,\n            \"description\": \"Structures text content, providing a clear separation between different ideas or sections of text. Paragraphs are rendered with default styling that typically includes some space above and below the paragraph, making it visually distinct from the surrounding content.\",\n            \"examples\": [\n              \"paragraph\"\n            ]\n          },\n          \"properties\": {},\n          \"optionalProperties\": {\n            \"nodes\": {\n              \"elements\": {\n                \"ref\": \"TextNode\"\n              },\n              \"metadata\": {\n                \"tsRicosNodesChildren\": true,\n                \"description\": \"Paragraph children.\"\n              }\n            },\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"style\": {\n              \"ref\": \"NodeStyle\",\n              \"metadata\": {\n                \"description\": \"Vertical padding. \\n **Note:** This node requires the [`lineSpacing`](https://dev.wix.com/docs/ricos/getting-started/introduction#plugins) plugin to be enabled.\"\n              }\n            },\n            \"paragraphData\": {\n              \"ref\": \"ParagraphData\",\n              \"metadata\": {\n                \"description\": \"Paragraph node attributes.\"\n              }\n            }\n          }\n        },\n        \"HEADING\": {\n          \"metadata\": {\n            \"section\": \"Heading\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"headings-all-sizes\"\n            ],\n            \"description\": \"Indicates a heading or title of a section. There are 6 levels of headings, with `1` being the most prominent and `6` being the least.\"\n          },\n          \"properties\": {},\n          \"optionalProperties\": {\n            \"nodes\": {\n              \"elements\": {\n                \"ref\": \"TextNode\"\n              },\n              \"metadata\": {\n                \"tsRicosNodesChildren\": true,\n                \"description\": \"Child nodes to define the heading text.\"\n              }\n            },\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"style\": {\n              \"ref\": \"NodeStyle\",\n              \"metadata\": {\n                \"description\": \"Heading styling, such as padding and background color. \\n **Note:** This node requires the [`lineSpacing`](https://dev.wix.com/docs/ricos/getting-started/introduction#plugins) plugin to be enabled.\"\n              }\n            },\n            \"headingData\": {\n              \"ref\": \"HeadingData\",\n              \"metadata\": {\n                \"description\": \"Heading options.\"\n              }\n            }\n          }\n        },\n        \"BULLETED_LIST\": {\n          \"metadata\": {\n            \"section\": \"List\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"bulletedList\"\n            ],\n            \"description\": \"Bulleted list.\"\n          },\n          \"properties\": {\n            \"nodes\": {\n              \"elements\": {\n                \"ref\": \"ListItemNode\",\n                \"metadata\": {\n                  \"validation\": {\n                    \"minSize\": 1\n                  }\n                }\n              },\n              \"metadata\": {\n                \"tsRicosNodesChildren\": true,\n                \"description\": \"List items.\",\n                \"validation\": {\n                  \"minSize\": 1\n                }\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"bulletedListData\": {\n              \"ref\": \"BulletedListData\",\n              \"metadata\": {\n                \"description\": \"Bulleted list details.\"\n              }\n            }\n          }\n        },\n        \"ORDERED_LIST\": {\n          \"metadata\": {\n            \"section\": \"List\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"orderedList\"\n            ],\n            \"description\": \"Numbered list.\"\n          },\n          \"properties\": {\n            \"nodes\": {\n              \"elements\": {\n                \"ref\": \"ListItemNode\",\n                \"metadata\": {\n                  \"validation\": {\n                    \"minSize\": 1\n                  }\n                }\n              },\n              \"metadata\": {\n                \"tsRicosNodesChildren\": true,\n                \"description\": \"List items.\",\n                \"validation\": {\n                  \"minSize\": 1\n                }\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"orderedListData\": {\n              \"ref\": \"OrderedListData\",\n              \"metadata\": {\n                \"description\": \"Ordered list details.\"\n              }\n            }\n          }\n        },\n        \"BLOCKQUOTE\": {\n          \"metadata\": {\n            \"section\": \"Block quote\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"blockquote\"\n            ],\n            \"description\": \"Used to visually distinguish quoted or cited content from the surrounding text. When rendered, it displays as the quoted text with indentation or other styling to visually separate it from the surrounding content.\"\n          },\n          \"properties\": {\n            \"nodes\": {\n              \"elements\": {\n                \"ref\": \"ParagraphNode\"\n              },\n              \"metadata\": {\n                \"tsRicosNodesChildren\": true,\n                \"description\": \"Child nodes to define a blockquote paragraph.\",\n                \"validation\": {\n                  \"minSize\": 1,\n                  \"maxSize\": 1\n                }\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"blockquoteData\": {\n              \"ref\": \"BlockquoteData\",\n              \"metadata\": {\n                \"description\": \"Blockquote details.\"\n              }\n            },\n            \"style\": {\n              \"ref\": \"NodeStyle\",\n              \"metadata\": {\n                \"description\": \"Defines the blockquote style, such as padding and background color. \\n **Note:** This node requires the [`lineSpacing`](https://dev.wix.com/docs/ricos/getting-started/introduction#plugins) plugin to be enabled.\"\n              }\n            }\n          }\n        },\n        \"CODE_BLOCK\": {\n          \"metadata\": {\n            \"section\": \"Codeblock\",\n            \"tsRicosNode\": true,\n            \"features\": [\n              \"CODE_BLOCK\"\n            ],\n            \"examples\": [\n              \"code-block-multi-line\",\n              \"code-block-syntax-highlighting\"\n            ],\n            \"description\": \"Presents code snippets, markup, or other text-based content that should be displayed exactly as it appears, without any interpretation or formatting applied by the browser. When rendered, it is displayed as the code block with a monospaced font, preserving indentation, line breaks, and spacing as specified in the code.\"\n          },\n          \"properties\": {},\n          \"optionalProperties\": {\n            \"nodes\": {\n              \"elements\": {\n                \"ref\": \"TextNode\"\n              },\n              \"metadata\": {\n                \"tsRicosNodesChildren\": true,\n                \"description\": \"Child nodes to define a code block text.\"\n              }\n            },\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"codeBlockData\": {\n              \"ref\": \"CodeBlockData\",\n              \"metadata\": {\n                \"description\": \"Code block details.\"\n              }\n            },\n            \"style\": {\n              \"ref\": \"NodeStyle\",\n              \"metadata\": {\n                \"description\": \"Code block styling, such as padding and background color. \\n **Note:** This node requires the [`lineSpacing`](https://dev.wix.com/docs/ricos/getting-started/introduction#plugins) plugin to be enabled.\"\n              }\n            }\n          }\n        },\n        \"VIDEO\": {\n          \"metadata\": {\n            \"section\": \"Video\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"video-url\",\n              \"video-wix\"\n            ],\n            \"features\": [\n              \"VIDEO\"\n            ],\n            \"description\": \"Embeds and plays video content directly in a page. When rendered, it is displayed as the video player with the specified video file. Users can interact with the controls to play, pause, rewind, and adjust the volume of the video.\"\n          },\n          \"properties\": {\n            \"videoData\": {\n              \"ref\": \"VideoData\",\n              \"metadata\": {\n                \"description\": \"Video details.\"\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"nodes\": {\n              \"metadata\": {\n                \"tsRicosNodesChildren\": true,\n                \"description\": \"Child nodes to define a video caption.\"\n              },\n              \"elements\": {\n                \"ref\": \"CaptionNode\"\n              }\n            }\n          }\n        },\n        \"DIVIDER\": {\n          \"metadata\": {\n            \"section\": \"Divider\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"divider\"\n            ],\n            \"features\": [\n              \"DIVIDER\"\n            ],\n            \"description\": \"Horizontal line between different content.\"\n          },\n          \"properties\": {},\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"dividerData\": {\n              \"ref\": \"DividerData\",\n              \"metadata\": {\n                \"description\": \"Divider details.\"\n              }\n            },\n            \"nodes\": {\n              \"metadata\": {\n                \"internal\": true,\n                \"tsRicosNodesChildren\": true\n              },\n              \"elements\": {\n                \"ref\": \"Never\"\n              }\n            }\n          }\n        },\n        \"FILE\": {\n          \"metadata\": {\n            \"section\": \"File\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"file\"\n            ],\n            \"features\": [\n              \"FILE\"\n            ],\n            \"description\": \"File that is uploaded and accessed in a page. Files can be different types of content, such as text documents, images, and videos.\"\n          },\n          \"properties\": {\n            \"fileData\": {\n              \"ref\": \"FileData\",\n              \"metadata\": {\n                \"description\": \"File details.\"\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"nodes\": {\n              \"metadata\": {\n                \"internal\": true,\n                \"tsRicosNodesChildren\": true\n              },\n              \"elements\": {\n                \"ref\": \"Never\"\n              }\n            }\n          }\n        },\n        \"GALLERY\": {\n          \"metadata\": {\n            \"section\": \"Gallery\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"gallery\"\n            ],\n            \"features\": [\n              \"GALLERY\"\n            ],\n            \"description\": \"Collection of images displayed together.\"\n          },\n          \"properties\": {\n            \"galleryData\": {\n              \"ref\": \"GalleryData\",\n              \"metadata\": {\n                \"description\": \"Gallery node details.\"\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"nodes\": {\n              \"metadata\": {\n                \"internal\": true,\n                \"tsRicosNodesChildren\": true\n              },\n              \"elements\": {\n                \"ref\": \"Never\"\n              }\n            }\n          }\n        },\n        \"GIF\": {\n          \"metadata\": {\n            \"section\": \"Gif\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"gif-basic\"\n            ],\n            \"features\": [\n              \"GIF\"\n            ],\n            \"description\": \"GIF images.\"\n          },\n          \"properties\": {\n            \"gifData\": {\n              \"ref\": \"GIFData\",\n              \"metadata\": {\n                \"description\": \"GIF details.\"\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"nodes\": {\n              \"metadata\": {\n                \"tsRicosNodesChildren\": true,\n                \"description\": \"Child nodes to define a GIF caption.\"\n              },\n              \"elements\": {\n                \"ref\": \"CaptionNode\"\n              }\n            }\n          }\n        },\n        \"HTML\": {\n          \"metadata\": {\n            \"section\": \"Html\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"html-code\",\n              \"html-url\"\n            ],\n            \"features\": [\n              \"HTML\"\n            ],\n            \"description\": \"HTML block that incorporates external content, such as interactive maps or entire web pages.\"\n          },\n          \"properties\": {\n            \"htmlData\": {\n              \"ref\": \"HTMLData\",\n              \"metadata\": {\n                \"description\": \"HTML details.\"\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"nodes\": {\n              \"metadata\": {\n                \"internal\": true,\n                \"tsRicosNodesChildren\": true\n              },\n              \"elements\": {\n                \"ref\": \"Never\"\n              }\n            }\n          }\n        },\n        \"IMAGE\": {\n          \"metadata\": {\n            \"section\": \"Image\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"image-id\",\n              \"image-url\"\n            ],\n            \"features\": [\n              \"IMAGE\"\n            ],\n            \"description\": \"Standalone images in a page.\"\n          },\n          \"properties\": {\n            \"imageData\": {\n              \"ref\": \"ImageData\",\n              \"metadata\": {\n                \"description\": \"Image options.\"\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"nodes\": {\n              \"metadata\": {\n                \"tsRicosNodesChildren\": true,\n                \"description\": \"Child nodes to define an image caption.\"\n              },\n              \"elements\": {\n                \"ref\": \"CaptionNode\"\n              }\n            }\n          }\n        },\n        \"LINK_PREVIEW\": {\n          \"metadata\": {\n            \"section\": \"Link Preview\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"link-preview\"\n            ],\n            \"features\": [\n              \"LINK_PREVIEW\"\n            ],\n            \"description\": \"Preview or summary of a webpage. Link previews include elements such as the title of the linked page, a brief description or excerpt of the content, and sometimes a thumbnail image or other relevant information.\"\n          },\n          \"properties\": {\n            \"linkPreviewData\": {\n              \"ref\": \"LinkPreviewData\",\n              \"metadata\": {\n                \"description\": \"Link preview details.\"\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"nodes\": {\n              \"metadata\": {\n                \"internal\": true,\n                \"tsRicosNodesChildren\": true\n              },\n              \"elements\": {\n                \"ref\": \"Never\"\n              }\n            }\n          }\n        },\n        \"POLL\": {\n          \"metadata\": {\n            \"section\": \"Poll\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"poll\"\n            ],\n            \"features\": [\n              \"POLL\"\n            ],\n            \"description\": \"Provides a question with several options, where the options' cumulative total may be shown.\"\n          },\n          \"properties\": {\n            \"pollData\": {\n              \"ref\": \"PollData\",\n              \"metadata\": {\n                \"description\": \"Poll details.\"\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"nodes\": {\n              \"metadata\": {\n                \"internal\": true,\n                \"tsRicosNodesChildren\": true\n              },\n              \"elements\": {\n                \"ref\": \"Never\"\n              }\n            }\n          }\n        },\n        \"APP_EMBED\": {\n          \"metadata\": {\n            \"section\": \"App Embed\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"app-embed-event\",\n              \"app-embed-booking\"\n            ],\n            \"features\": [\n              \"APP_EMBED\"\n            ],\n            \"description\": \"Embeds an external content preview from Wix business solutions. For example, you can embed previews from the Wix Bookings, Wix Stores and Wix Events apps.\"\n          },\n          \"properties\": {\n            \"appEmbedData\": {\n              \"ref\": \"AppEmbedData\",\n              \"metadata\": {\n                \"description\": \"Embedded Wix app.\"\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"nodes\": {\n              \"metadata\": {\n                \"internal\": true,\n                \"tsRicosNodesChildren\": true\n              },\n              \"elements\": {\n                \"ref\": \"Never\"\n              }\n            }\n          }\n        },\n        \"BUTTON\": {\n          \"metadata\": {\n            \"section\": \"Button\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"button-link\",\n              \"button-action\",\n              \"button-styled\"\n            ],\n            \"features\": [\n              \"BUTTON\"\n            ],\n            \"description\": \"Button to trigger an action.\"\n          },\n          \"properties\": {\n            \"buttonData\": {\n              \"ref\": \"ButtonData\",\n              \"metadata\": {\n                \"description\": \"Button details.\"\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"nodes\": {\n              \"metadata\": {\n                \"internal\": true,\n                \"tsRicosNodesChildren\": true\n              },\n              \"elements\": {\n                \"ref\": \"Never\"\n              }\n            }\n          }\n        },\n        \"COLLAPSIBLE_LIST\": {\n          \"metadata\": {\n            \"section\": \"Collapsible List\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"collapsible-list\"\n            ],\n            \"features\": [\n              \"COLLAPSIBLE_LIST\"\n            ],\n            \"description\": \"List of items where each item can be expanded or collapsed.\"\n          },\n          \"properties\": {\n            \"nodes\": {\n              \"elements\": {\n                \"ref\": \"CollapsibleItemNode\"\n              },\n              \"metadata\": {\n                \"tsRicosNodesChildren\": true,\n                \"description\": \"Collapsible list child nodes.\",\n                \"validation\": {\n                  \"minSize\": 1\n                }\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"collapsibleListData\": {\n              \"ref\": \"CollapsibleListData\",\n              \"metadata\": {\n                \"description\": \"Collapsible list details.\"\n              }\n            }\n          }\n        },\n        \"TABLE\": {\n          \"metadata\": {\n            \"section\": \"Table\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"table\"\n            ],\n            \"features\": [\n              \"TABLE\"\n            ],\n            \"description\": \"Data in rows and columns.\"\n          },\n          \"properties\": {\n            \"nodes\": {\n              \"elements\": {\n                \"ref\": \"TableRowNode\"\n              },\n              \"metadata\": {\n                \"tsRicosNodesChildren\": true,\n                \"description\": \"Child nodes to define table rows.\",\n                \"validation\": {\n                  \"minSize\": 1\n                }\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"tableData\": {\n              \"ref\": \"TableData\",\n              \"metadata\": {\n                \"description\": \"Table details.\"\n              }\n            }\n          }\n        },\n        \"EMBED\": {\n          \"metadata\": {\n            \"section\": \"Embed\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"embed\"\n            ],\n            \"features\": [\n              \"EMBED\"\n            ],\n            \"description\": \"Embedded content when you include a link to a resource, without having to parse the resource directly. This provides a standardized way for web developers to include content such as videos, images, and other multimedia elements from supported providers. To learn more, see [oembed](https://oembed.com/).\"\n          },\n          \"properties\": {\n            \"embedData\": {\n              \"ref\": \"EmbedData\",\n              \"metadata\": {\n                \"description\": \"oEmbed details.\"\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"nodes\": {\n              \"metadata\": {\n                \"internal\": true,\n                \"tsRicosNodesChildren\": true\n              },\n              \"elements\": {\n                \"ref\": \"Never\"\n              }\n            }\n          }\n        },\n        \"AUDIO\": {\n          \"metadata\": {\n            \"section\": \"Audio\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"audio-soundcloud\"\n            ],\n            \"features\": [\n              \"AUDIO\"\n            ],\n            \"description\": \"Embeds and plays audio content directly in a webpage. Users can interact with the controls to play, pause, rewind, and adjust the volume of the audio.\"\n          },\n          \"properties\": {\n            \"audioData\": {\n              \"ref\": \"AudioData\",\n              \"metadata\": {\n                \"description\": \"Audio details.\"\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"nodes\": {\n              \"metadata\": {\n                \"internal\": true,\n                \"tsRicosNodesChildren\": true\n              },\n              \"elements\": {\n                \"ref\": \"Never\"\n              }\n            }\n          }\n        },\n        \"LAYOUT\": {\n          \"metadata\": {\n            \"section\": \"Layout\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"layout\"\n            ],\n            \"description\": \"Used to wrap cells in layout container. When rendered, it cells one after the other in a row\"\n          },\n          \"properties\": {\n            \"nodes\": {\n              \"elements\": {\n                \"ref\": \"LayoutCellNode\"\n              },\n              \"metadata\": {\n                \"tsRicosNodesChildren\": true,\n                \"description\": \"Cell items.\",\n                \"validation\": {\n                  \"minSize\": 1,\n                  \"maxSize\": 6\n                }\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"layoutData\": {\n              \"ref\": \"LayoutData\",\n              \"metadata\": {\n                \"description\": \"Layout details.\"\n              }\n            }\n          }\n        },\n        \"EXTERNAL\": {\n          \"metadata\": {\n            \"section\": \"External\",\n            \"tsRicosNode\": true,\n            \"internal\": true\n          },\n          \"properties\": {},\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\"\n            },\n            \"htmlData\": {},\n            \"externalData\": {\n              \"values\": {}\n            },\n            \"nodes\": {\n              \"metadata\": {\n                \"internal\": true,\n                \"tsRicosNodesChildren\": true\n              },\n              \"elements\": {\n                \"ref\": \"Never\"\n              }\n            }\n          }\n        }\n      }\n    },\n    \"CodeBlockNode\": {\n      \"metadata\": {\n        \"section\": \"Codeblock\",\n        \"tsRicosNode\": true,\n        \"features\": [\n          \"CODE_BLOCK\"\n        ],\n        \"examples\": [\n          \"code-block-multi-line\",\n          \"code-block-syntax-highlighting\"\n        ],\n        \"description\": \"Presents code snippets, markup, or other text-based content that should be displayed exactly as it appears, without any interpretation or formatting applied by the browser. When rendered, it is displayed as the code block with a monospaced font, preserving indentation, line breaks, and spacing as specified in the code.\"\n      },\n      \"properties\": {\n        \"type\": {\n          \"enum\": [\n            \"CODE_BLOCK\"\n          ],\n          \"metadata\": {\n            \"description\": \"Node type. \\n VMust be `CODE_BLOCK`.\"\n          }\n        }\n      },\n      \"optionalProperties\": {\n        \"nodes\": {\n          \"elements\": {\n            \"ref\": \"TextNode\"\n          },\n          \"metadata\": {\n            \"tsRicosNodesChildren\": true,\n            \"description\": \"Child nodes to define a code block text.\"\n          }\n        },\n        \"id\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"format\": \"NODE_ID\",\n            \"description\": \"[Node ID](#node-ids).\"\n          }\n        },\n        \"codeBlockData\": {\n          \"ref\": \"CodeBlockData\",\n          \"metadata\": {\n            \"description\": \"Code block details.\"\n          }\n        },\n        \"style\": {\n          \"ref\": \"NodeStyle\",\n          \"metadata\": {\n            \"description\": \"Code block styling, such as padding and background color. \\n **Note:** This node requires the [`lineSpacing`](https://dev.wix.com/docs/ricos/getting-started/introduction#plugins) plugin to be enabled.\"\n          }\n        }\n      }\n    },\n    \"CodeBlockData\": {\n      \"optionalProperties\": {\n        \"textStyle\": {\n          \"ref\": \"TextStyle\",\n          \"metadata\": {\n            \"description\": \"Defines the text styling, such as alignment and line height.\"\n          }\n        }\n      },\n      \"metadata\": {\n        \"section\": \"Codeblock\"\n      }\n    },\n    \"HeadingNode\": {\n      \"metadata\": {\n        \"section\": \"Heading\",\n        \"tsRicosNode\": true,\n        \"examples\": [\n          \"headings-all-sizes\"\n        ],\n        \"description\": \"Indicates a heading or title of a section. There are 6 levels of headings, with `1` being the most prominent and `6` being the least.\"\n      },\n      \"properties\": {\n        \"type\": {\n          \"enum\": [\n            \"HEADING\"\n          ],\n          \"metadata\": {\n            \"description\": \"Node type. \\n Must be `HEADING`.\"\n          }\n        }\n      },\n      \"optionalProperties\": {\n        \"nodes\": {\n          \"elements\": {\n            \"ref\": \"TextNode\"\n          },\n          \"metadata\": {\n            \"tsRicosNodesChildren\": true,\n            \"description\": \"Child nodes to define the heading text.\"\n          }\n        },\n        \"id\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"format\": \"NODE_ID\",\n            \"description\": \"[Node ID](#node-ids).\"\n          }\n        },\n        \"style\": {\n          \"ref\": \"NodeStyle\",\n          \"metadata\": {\n            \"description\": \"Heading styling, such as padding and background color. \\n **Note:** This node requires the [`lineSpacing`](https://dev.wix.com/docs/ricos/getting-started/introduction#plugins) plugin to be enabled.\"\n          }\n        },\n        \"headingData\": {\n          \"ref\": \"HeadingData\",\n          \"metadata\": {\n            \"description\": \"Heading options.\"\n          }\n        }\n      }\n    },\n    \"HeadingData\": {\n      \"optionalProperties\": {\n        \"level\": {\n          \"type\": \"int32\",\n          \"metadata\": {\n            \"description\": \"Heading size. <br> Mi: `1` <br> Max: `6`\",\n            \"validation\": {\n              \"min\": 1,\n              \"max\": 6\n            }\n          }\n        },\n        \"textStyle\": {\n          \"ref\": \"TextStyle\",\n          \"metadata\": {\n            \"description\": \"Heading text styling, such as text alignment and line height.\"\n          }\n        },\n        \"indentation\": {\n          \"type\": \"int32\",\n          \"metadata\": {\n            \"description\": \"Heading margin from the left side. \\n The indentation is measured relative to the font size *em* units by a ratio of 1.5. For example, if the indentation is `2`, then the margin is equal to **3em**. Therefore the margin is 3 times the size of the font.\"\n          }\n        }\n      },\n      \"metadata\": {\n        \"section\": \"Heading\"\n      }\n    },\n    \"LayoutNode\": {\n      \"metadata\": {\n        \"section\": \"Layout\",\n        \"tsRicosNode\": true,\n        \"examples\": [\n          \"layout\"\n        ],\n        \"description\": \"Used to wrap cells in layout container. When rendered, it cells one after the other in a row\"\n      },\n      \"properties\": {\n        \"type\": {\n          \"enum\": [\n            \"LAYOUT\"\n          ],\n          \"metadata\": {\n            \"description\": \"Node type. \\n Must be `LAYOUT`.\"\n          }\n        },\n        \"nodes\": {\n          \"elements\": {\n            \"ref\": \"LayoutCellNode\"\n          },\n          \"metadata\": {\n            \"tsRicosNodesChildren\": true,\n            \"description\": \"Cell items.\",\n            \"validation\": {\n              \"minSize\": 1,\n              \"maxSize\": 6\n            }\n          }\n        }\n      },\n      \"optionalProperties\": {\n        \"id\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"format\": \"NODE_ID\",\n            \"description\": \"[Node ID](#node-ids).\"\n          }\n        },\n        \"layoutData\": {\n          \"ref\": \"LayoutData\",\n          \"metadata\": {\n            \"description\": \"Layout details.\"\n          }\n        }\n      }\n    },\n    \"LayoutData\": {\n      \"optionalProperties\": {\n        \"containerData\": {\n          \"ref\": \"PluginContainerData\",\n          \"metadata\": {\n            \"description\": \"Layout container styling.\"\n          }\n        },\n        \"backgroundColor\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"format\": \"COLOR_HEX\",\n            \"description\": \"Deprecated: Use `background` instead.\",\n            \"deprecated\": true\n          }\n        },\n        \"background\": {\n          \"ref\": \"Background\",\n          \"metadata\": {\n            \"description\": \"Background styling (color or gradient).\"\n          }\n        },\n        \"backgroundImage\": {\n          \"ref\": \"BackgroundImage\",\n          \"metadata\": {\n            \"description\": \"Background image.\"\n          }\n        },\n        \"borderColor\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"format\": \"COLOR_HEX\",\n            \"description\": \"Border color as a hexadecimal value.\"\n          }\n        },\n        \"borderWidth\": {\n          \"type\": \"int32\",\n          \"metadata\": {\n            \"description\": \"Border width in pixels.\"\n          }\n        },\n        \"borderRadius\": {\n          \"type\": \"int32\",\n          \"metadata\": {\n            \"description\": \"Border radius in pixels.\"\n          }\n        },\n        \"backdropColor\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"format\": \"COLOR_HEX\",\n            \"description\": \"Deprecated: Use `backdrop` instead.\",\n            \"deprecated\": true\n          }\n        },\n        \"backdrop\": {\n          \"ref\": \"Background\",\n          \"metadata\": {\n            \"description\": \"Backdrop styling (color or gradient).\"\n          }\n        },\n        \"backdropImage\": {\n          \"ref\": \"BackgroundImage\",\n          \"metadata\": {\n            \"description\": \"Backdrop image.\"\n          }\n        },\n        \"backdropPaddingTop\": {\n          \"type\": \"int32\",\n          \"metadata\": {\n            \"description\": \"Backdrop padding top in pixels.\"\n          }\n        },\n        \"backdropPaddingBottom\": {\n          \"type\": \"int32\",\n          \"metadata\": {\n            \"description\": \"Backdrop padding bottom in pixels.\"\n          }\n        },\n        \"gap\": {\n          \"type\": \"int32\",\n          \"metadata\": {\n            \"description\": \"Horizontal and vertical gap between columns in pixels.\"\n          }\n        },\n        \"responsivenessBehaviour\": {\n          \"ref\": \"LayoutData_ResponsivenessBehaviour\",\n          \"metadata\": {\n            \"description\": \"Responsiveness behaviour.\"\n          }\n        },\n        \"responsivenessBreakpoint\": {\n          \"type\": \"int32\",\n          \"metadata\": {\n            \"description\": \"Size in pixels when responsivenessBehaviour applies.\"\n          }\n        },\n        \"cellPadding\": {\n          \"elements\": {\n            \"type\": \"uint32\"\n          },\n          \"metadata\": {\n            \"description\": \"Padding in pixels for cells. Follows CSS order: top, right, bottom, left.\"\n          }\n        },\n        \"cellVerticalAlignment\": {\n          \"ref\": \"VerticalAlignment\",\n          \"metadata\": {\n            \"description\": \"Vertical alignment for the cell's items.\"\n          }\n        },\n        \"designTarget\": {\n          \"ref\": \"LayoutData_DesignTarget\",\n          \"metadata\": {\n            \"description\": \"Defines where selected design propertied applies to.\"\n          }\n        },\n        \"banner\": {\n          \"ref\": \"LayoutData_Banner\",\n          \"metadata\": {\n            \"description\": \"Banner configuration. When present, this layout is displayed as a banner. Use this property only when layout is the first node in the document.\"\n          }\n        }\n      },\n      \"metadata\": {\n        \"section\": \"Layout\"\n      }\n    },\n    \"LayoutData_Banner\": {\n      \"metadata\": {\n        \"section\": \"Layout\",\n        \"description\": \"Banner configuration for layout.\"\n      },\n      \"properties\": {},\n      \"optionalProperties\": {\n        \"origin\": {\n          \"ref\": \"LayoutData_BannerOrigin\",\n          \"metadata\": {\n            \"description\": \"Origin of the banner - whether it was created from an image or a layout.\"\n          }\n        }\n      }\n    },\n    \"LayoutData_BannerOrigin\": {\n      \"metadata\": {\n        \"section\": \"Layout\",\n        \"emitEnum\": \"LayoutData_BannerOrigin\",\n        \"description\": \"Origin type of the banner.\"\n      },\n      \"enum\": [\n        \"IMAGE\",\n        \"LAYOUT\"\n      ]\n    },\n    \"LayoutData_ResponsivenessBehaviour\": {\n      \"metadata\": {\n        \"section\": \"Layout\",\n        \"emitEnum\": \"LayoutData_ResponsivenessBehaviour\",\n        \"description\": \"Responsiveness behaviour.\"\n      },\n      \"enum\": [\n        \"STACK\",\n        \"WRAP\"\n      ]\n    },\n    \"LayoutData_DesignTarget\": {\n      \"metadata\": {\n        \"section\": \"Layout\",\n        \"emitEnum\": \"LayoutData_DesignTarget\",\n        \"description\": \"Defines where selected design propertied applies to.\"\n      },\n      \"enum\": [\n        \"LAYOUT\",\n        \"CELL\"\n      ]\n    },\n    \"LayoutCellNode\": {\n      \"metadata\": {\n        \"section\": \"Layout\",\n        \"tsRicosNode\": true,\n        \"description\": \"Used to wrap content inside layout container. When rendered, it shows content inside layout column\"\n      },\n      \"properties\": {\n        \"type\": {\n          \"enum\": [\n            \"LAYOUT_CELL\"\n          ],\n          \"metadata\": {\n            \"description\": \"Node type. \\n Must be `LAYOUT_CELL`.\"\n          }\n        },\n        \"nodes\": {\n          \"elements\": {\n            \"ref\": \"LayoutCellChildNode\"\n          },\n          \"metadata\": {\n            \"tsRicosNodesChildren\": true,\n            \"description\": \"Child nodes that the cell item contains.\"\n          }\n        }\n      },\n      \"optionalProperties\": {\n        \"id\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"format\": \"NODE_ID\",\n            \"description\": \"[Node ID](#node-ids).\"\n          }\n        },\n        \"layoutCellData\": {\n          \"ref\": \"LayoutCellData\",\n          \"metadata\": {\n            \"description\": \"Layout Cell details.\"\n          }\n        }\n      }\n    },\n    \"LayoutCellData\": {\n      \"optionalProperties\": {\n        \"colSpan\": {\n          \"type\": \"int32\",\n          \"metadata\": {\n            \"description\": \"Defines how many columns cell spans inside 12 column grid. If not provided it will divide remaining space equally.\",\n            \"validation\": {\n              \"min\": 1,\n              \"max\": 12\n            }\n          }\n        }\n      },\n      \"metadata\": {\n        \"section\": \"Layout\"\n      }\n    },\n    \"LayoutCellChildNode\": {\n      \"discriminator\": \"type\",\n      \"metadata\": {\n        \"section\": \"Layout\",\n        \"refUnion\": {\n          \"BLOCKQUOTE\": \"BlockquoteNode\",\n          \"CODE_BLOCK\": \"CodeBlockNode\",\n          \"HEADING\": \"HeadingNode\",\n          \"ORDERED_LIST\": \"OrderedListNode\",\n          \"BULLETED_LIST\": \"BulletedListNode\",\n          \"PARAGRAPH\": \"ParagraphNode\",\n          \"APP_EMBED\": \"AppEmbedNode\",\n          \"AUDIO\": \"AudioNode\",\n          \"BUTTON\": \"ButtonNode\",\n          \"COLLAPSIBLE_LIST\": \"CollapsibleListNode\",\n          \"DIVIDER\": \"DividerNode\",\n          \"EMBED\": \"EmbedNode\",\n          \"FILE\": \"FileNode\",\n          \"GALLERY\": \"GalleryNode\",\n          \"GIF\": \"GifNode\",\n          \"HTML\": \"HtmlNode\",\n          \"IMAGE\": \"ImageNode\",\n          \"LINK_PREVIEW\": \"LinkPreviewNode\",\n          \"POLL\": \"PollNode\",\n          \"VIDEO\": \"VideoNode\",\n          \"EXTERNAL\": \"ExternalNode\"\n        }\n      },\n      \"mapping\": {\n        \"BLOCKQUOTE\": {\n          \"metadata\": {\n            \"section\": \"Block quote\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"blockquote\"\n            ],\n            \"description\": \"Used to visually distinguish quoted or cited content from the surrounding text. When rendered, it displays as the quoted text with indentation or other styling to visually separate it from the surrounding content.\"\n          },\n          \"properties\": {\n            \"nodes\": {\n              \"elements\": {\n                \"ref\": \"ParagraphNode\"\n              },\n              \"metadata\": {\n                \"tsRicosNodesChildren\": true,\n                \"description\": \"Child nodes to define a blockquote paragraph.\",\n                \"validation\": {\n                  \"minSize\": 1,\n                  \"maxSize\": 1\n                }\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"blockquoteData\": {\n              \"ref\": \"BlockquoteData\",\n              \"metadata\": {\n                \"description\": \"Blockquote details.\"\n              }\n            },\n            \"style\": {\n              \"ref\": \"NodeStyle\",\n              \"metadata\": {\n                \"description\": \"Defines the blockquote style, such as padding and background color. \\n **Note:** This node requires the [`lineSpacing`](https://dev.wix.com/docs/ricos/getting-started/introduction#plugins) plugin to be enabled.\"\n              }\n            }\n          }\n        },\n        \"CODE_BLOCK\": {\n          \"metadata\": {\n            \"section\": \"Codeblock\",\n            \"tsRicosNode\": true,\n            \"features\": [\n              \"CODE_BLOCK\"\n            ],\n            \"examples\": [\n              \"code-block-multi-line\",\n              \"code-block-syntax-highlighting\"\n            ],\n            \"description\": \"Presents code snippets, markup, or other text-based content that should be displayed exactly as it appears, without any interpretation or formatting applied by the browser. When rendered, it is displayed as the code block with a monospaced font, preserving indentation, line breaks, and spacing as specified in the code.\"\n          },\n          \"properties\": {},\n          \"optionalProperties\": {\n            \"nodes\": {\n              \"elements\": {\n                \"ref\": \"TextNode\"\n              },\n              \"metadata\": {\n                \"tsRicosNodesChildren\": true,\n                \"description\": \"Child nodes to define a code block text.\"\n              }\n            },\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"codeBlockData\": {\n              \"ref\": \"CodeBlockData\",\n              \"metadata\": {\n                \"description\": \"Code block details.\"\n              }\n            },\n            \"style\": {\n              \"ref\": \"NodeStyle\",\n              \"metadata\": {\n                \"description\": \"Code block styling, such as padding and background color. \\n **Note:** This node requires the [`lineSpacing`](https://dev.wix.com/docs/ricos/getting-started/introduction#plugins) plugin to be enabled.\"\n              }\n            }\n          }\n        },\n        \"HEADING\": {\n          \"metadata\": {\n            \"section\": \"Heading\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"headings-all-sizes\"\n            ],\n            \"description\": \"Indicates a heading or title of a section. There are 6 levels of headings, with `1` being the most prominent and `6` being the least.\"\n          },\n          \"properties\": {},\n          \"optionalProperties\": {\n            \"nodes\": {\n              \"elements\": {\n                \"ref\": \"TextNode\"\n              },\n              \"metadata\": {\n                \"tsRicosNodesChildren\": true,\n                \"description\": \"Child nodes to define the heading text.\"\n              }\n            },\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"style\": {\n              \"ref\": \"NodeStyle\",\n              \"metadata\": {\n                \"description\": \"Heading styling, such as padding and background color. \\n **Note:** This node requires the [`lineSpacing`](https://dev.wix.com/docs/ricos/getting-started/introduction#plugins) plugin to be enabled.\"\n              }\n            },\n            \"headingData\": {\n              \"ref\": \"HeadingData\",\n              \"metadata\": {\n                \"description\": \"Heading options.\"\n              }\n            }\n          }\n        },\n        \"ORDERED_LIST\": {\n          \"metadata\": {\n            \"section\": \"List\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"orderedList\"\n            ],\n            \"description\": \"Numbered list.\"\n          },\n          \"properties\": {\n            \"nodes\": {\n              \"elements\": {\n                \"ref\": \"ListItemNode\",\n                \"metadata\": {\n                  \"validation\": {\n                    \"minSize\": 1\n                  }\n                }\n              },\n              \"metadata\": {\n                \"tsRicosNodesChildren\": true,\n                \"description\": \"List items.\",\n                \"validation\": {\n                  \"minSize\": 1\n                }\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"orderedListData\": {\n              \"ref\": \"OrderedListData\",\n              \"metadata\": {\n                \"description\": \"Ordered list details.\"\n              }\n            }\n          }\n        },\n        \"BULLETED_LIST\": {\n          \"metadata\": {\n            \"section\": \"List\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"bulletedList\"\n            ],\n            \"description\": \"Bulleted list.\"\n          },\n          \"properties\": {\n            \"nodes\": {\n              \"elements\": {\n                \"ref\": \"ListItemNode\",\n                \"metadata\": {\n                  \"validation\": {\n                    \"minSize\": 1\n                  }\n                }\n              },\n              \"metadata\": {\n                \"tsRicosNodesChildren\": true,\n                \"description\": \"List items.\",\n                \"validation\": {\n                  \"minSize\": 1\n                }\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"bulletedListData\": {\n              \"ref\": \"BulletedListData\",\n              \"metadata\": {\n                \"description\": \"Bulleted list details.\"\n              }\n            }\n          }\n        },\n        \"PARAGRAPH\": {\n          \"metadata\": {\n            \"section\": \"Paragraph\",\n            \"tsRicosNode\": true,\n            \"description\": \"Structures text content, providing a clear separation between different ideas or sections of text. Paragraphs are rendered with default styling that typically includes some space above and below the paragraph, making it visually distinct from the surrounding content.\",\n            \"examples\": [\n              \"paragraph\"\n            ]\n          },\n          \"properties\": {},\n          \"optionalProperties\": {\n            \"nodes\": {\n              \"elements\": {\n                \"ref\": \"TextNode\"\n              },\n              \"metadata\": {\n                \"tsRicosNodesChildren\": true,\n                \"description\": \"Paragraph children.\"\n              }\n            },\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"style\": {\n              \"ref\": \"NodeStyle\",\n              \"metadata\": {\n                \"description\": \"Vertical padding. \\n **Note:** This node requires the [`lineSpacing`](https://dev.wix.com/docs/ricos/getting-started/introduction#plugins) plugin to be enabled.\"\n              }\n            },\n            \"paragraphData\": {\n              \"ref\": \"ParagraphData\",\n              \"metadata\": {\n                \"description\": \"Paragraph node attributes.\"\n              }\n            }\n          }\n        },\n        \"APP_EMBED\": {\n          \"metadata\": {\n            \"section\": \"App Embed\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"app-embed-event\",\n              \"app-embed-booking\"\n            ],\n            \"features\": [\n              \"APP_EMBED\"\n            ],\n            \"description\": \"Embeds an external content preview from Wix business solutions. For example, you can embed previews from the Wix Bookings, Wix Stores and Wix Events apps.\"\n          },\n          \"properties\": {\n            \"appEmbedData\": {\n              \"ref\": \"AppEmbedData\",\n              \"metadata\": {\n                \"description\": \"Embedded Wix app.\"\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"nodes\": {\n              \"metadata\": {\n                \"internal\": true,\n                \"tsRicosNodesChildren\": true\n              },\n              \"elements\": {\n                \"ref\": \"Never\"\n              }\n            }\n          }\n        },\n        \"AUDIO\": {\n          \"metadata\": {\n            \"section\": \"Audio\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"audio-soundcloud\"\n            ],\n            \"features\": [\n              \"AUDIO\"\n            ],\n            \"description\": \"Embeds and plays audio content directly in a webpage. Users can interact with the controls to play, pause, rewind, and adjust the volume of the audio.\"\n          },\n          \"properties\": {\n            \"audioData\": {\n              \"ref\": \"AudioData\",\n              \"metadata\": {\n                \"description\": \"Audio details.\"\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"nodes\": {\n              \"metadata\": {\n                \"internal\": true,\n                \"tsRicosNodesChildren\": true\n              },\n              \"elements\": {\n                \"ref\": \"Never\"\n              }\n            }\n          }\n        },\n        \"BUTTON\": {\n          \"metadata\": {\n            \"section\": \"Button\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"button-link\",\n              \"button-action\",\n              \"button-styled\"\n            ],\n            \"features\": [\n              \"BUTTON\"\n            ],\n            \"description\": \"Button to trigger an action.\"\n          },\n          \"properties\": {\n            \"buttonData\": {\n              \"ref\": \"ButtonData\",\n              \"metadata\": {\n                \"description\": \"Button details.\"\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"nodes\": {\n              \"metadata\": {\n                \"internal\": true,\n                \"tsRicosNodesChildren\": true\n              },\n              \"elements\": {\n                \"ref\": \"Never\"\n              }\n            }\n          }\n        },\n        \"COLLAPSIBLE_LIST\": {\n          \"metadata\": {\n            \"section\": \"Collapsible List\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"collapsible-list\"\n            ],\n            \"features\": [\n              \"COLLAPSIBLE_LIST\"\n            ],\n            \"description\": \"List of items where each item can be expanded or collapsed.\"\n          },\n          \"properties\": {\n            \"nodes\": {\n              \"elements\": {\n                \"ref\": \"CollapsibleItemNode\"\n              },\n              \"metadata\": {\n                \"tsRicosNodesChildren\": true,\n                \"description\": \"Collapsible list child nodes.\",\n                \"validation\": {\n                  \"minSize\": 1\n                }\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"collapsibleListData\": {\n              \"ref\": \"CollapsibleListData\",\n              \"metadata\": {\n                \"description\": \"Collapsible list details.\"\n              }\n            }\n          }\n        },\n        \"DIVIDER\": {\n          \"metadata\": {\n            \"section\": \"Divider\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"divider\"\n            ],\n            \"features\": [\n              \"DIVIDER\"\n            ],\n            \"description\": \"Horizontal line between different content.\"\n          },\n          \"properties\": {},\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"dividerData\": {\n              \"ref\": \"DividerData\",\n              \"metadata\": {\n                \"description\": \"Divider details.\"\n              }\n            },\n            \"nodes\": {\n              \"metadata\": {\n                \"internal\": true,\n                \"tsRicosNodesChildren\": true\n              },\n              \"elements\": {\n                \"ref\": \"Never\"\n              }\n            }\n          }\n        },\n        \"EMBED\": {\n          \"metadata\": {\n            \"section\": \"Embed\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"embed\"\n            ],\n            \"features\": [\n              \"EMBED\"\n            ],\n            \"description\": \"Embedded content when you include a link to a resource, without having to parse the resource directly. This provides a standardized way for web developers to include content such as videos, images, and other multimedia elements from supported providers. To learn more, see [oembed](https://oembed.com/).\"\n          },\n          \"properties\": {\n            \"embedData\": {\n              \"ref\": \"EmbedData\",\n              \"metadata\": {\n                \"description\": \"oEmbed details.\"\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"nodes\": {\n              \"metadata\": {\n                \"internal\": true,\n                \"tsRicosNodesChildren\": true\n              },\n              \"elements\": {\n                \"ref\": \"Never\"\n              }\n            }\n          }\n        },\n        \"FILE\": {\n          \"metadata\": {\n            \"section\": \"File\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"file\"\n            ],\n            \"features\": [\n              \"FILE\"\n            ],\n            \"description\": \"File that is uploaded and accessed in a page. Files can be different types of content, such as text documents, images, and videos.\"\n          },\n          \"properties\": {\n            \"fileData\": {\n              \"ref\": \"FileData\",\n              \"metadata\": {\n                \"description\": \"File details.\"\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"nodes\": {\n              \"metadata\": {\n                \"internal\": true,\n                \"tsRicosNodesChildren\": true\n              },\n              \"elements\": {\n                \"ref\": \"Never\"\n              }\n            }\n          }\n        },\n        \"GALLERY\": {\n          \"metadata\": {\n            \"section\": \"Gallery\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"gallery\"\n            ],\n            \"features\": [\n              \"GALLERY\"\n            ],\n            \"description\": \"Collection of images displayed together.\"\n          },\n          \"properties\": {\n            \"galleryData\": {\n              \"ref\": \"GalleryData\",\n              \"metadata\": {\n                \"description\": \"Gallery node details.\"\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"nodes\": {\n              \"metadata\": {\n                \"internal\": true,\n                \"tsRicosNodesChildren\": true\n              },\n              \"elements\": {\n                \"ref\": \"Never\"\n              }\n            }\n          }\n        },\n        \"GIF\": {\n          \"metadata\": {\n            \"section\": \"Gif\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"gif-basic\"\n            ],\n            \"features\": [\n              \"GIF\"\n            ],\n            \"description\": \"GIF images.\"\n          },\n          \"properties\": {\n            \"gifData\": {\n              \"ref\": \"GIFData\",\n              \"metadata\": {\n                \"description\": \"GIF details.\"\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"nodes\": {\n              \"metadata\": {\n                \"tsRicosNodesChildren\": true,\n                \"description\": \"Child nodes to define a GIF caption.\"\n              },\n              \"elements\": {\n                \"ref\": \"CaptionNode\"\n              }\n            }\n          }\n        },\n        \"HTML\": {\n          \"metadata\": {\n            \"section\": \"Html\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"html-code\",\n              \"html-url\"\n            ],\n            \"features\": [\n              \"HTML\"\n            ],\n            \"description\": \"HTML block that incorporates external content, such as interactive maps or entire web pages.\"\n          },\n          \"properties\": {\n            \"htmlData\": {\n              \"ref\": \"HTMLData\",\n              \"metadata\": {\n                \"description\": \"HTML details.\"\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"nodes\": {\n              \"metadata\": {\n                \"internal\": true,\n                \"tsRicosNodesChildren\": true\n              },\n              \"elements\": {\n                \"ref\": \"Never\"\n              }\n            }\n          }\n        },\n        \"IMAGE\": {\n          \"metadata\": {\n            \"section\": \"Image\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"image-id\",\n              \"image-url\"\n            ],\n            \"features\": [\n              \"IMAGE\"\n            ],\n            \"description\": \"Standalone images in a page.\"\n          },\n          \"properties\": {\n            \"imageData\": {\n              \"ref\": \"ImageData\",\n              \"metadata\": {\n                \"description\": \"Image options.\"\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"nodes\": {\n              \"metadata\": {\n                \"tsRicosNodesChildren\": true,\n                \"description\": \"Child nodes to define an image caption.\"\n              },\n              \"elements\": {\n                \"ref\": \"CaptionNode\"\n              }\n            }\n          }\n        },\n        \"LINK_PREVIEW\": {\n          \"metadata\": {\n            \"section\": \"Link Preview\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"link-preview\"\n            ],\n            \"features\": [\n              \"LINK_PREVIEW\"\n            ],\n            \"description\": \"Preview or summary of a webpage. Link previews include elements such as the title of the linked page, a brief description or excerpt of the content, and sometimes a thumbnail image or other relevant information.\"\n          },\n          \"properties\": {\n            \"linkPreviewData\": {\n              \"ref\": \"LinkPreviewData\",\n              \"metadata\": {\n                \"description\": \"Link preview details.\"\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"nodes\": {\n              \"metadata\": {\n                \"internal\": true,\n                \"tsRicosNodesChildren\": true\n              },\n              \"elements\": {\n                \"ref\": \"Never\"\n              }\n            }\n          }\n        },\n        \"POLL\": {\n          \"metadata\": {\n            \"section\": \"Poll\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"poll\"\n            ],\n            \"features\": [\n              \"POLL\"\n            ],\n            \"description\": \"Provides a question with several options, where the options' cumulative total may be shown.\"\n          },\n          \"properties\": {\n            \"pollData\": {\n              \"ref\": \"PollData\",\n              \"metadata\": {\n                \"description\": \"Poll details.\"\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"nodes\": {\n              \"metadata\": {\n                \"internal\": true,\n                \"tsRicosNodesChildren\": true\n              },\n              \"elements\": {\n                \"ref\": \"Never\"\n              }\n            }\n          }\n        },\n        \"VIDEO\": {\n          \"metadata\": {\n            \"section\": \"Video\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"video-url\",\n              \"video-wix\"\n            ],\n            \"features\": [\n              \"VIDEO\"\n            ],\n            \"description\": \"Embeds and plays video content directly in a page. When rendered, it is displayed as the video player with the specified video file. Users can interact with the controls to play, pause, rewind, and adjust the volume of the video.\"\n          },\n          \"properties\": {\n            \"videoData\": {\n              \"ref\": \"VideoData\",\n              \"metadata\": {\n                \"description\": \"Video details.\"\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"nodes\": {\n              \"metadata\": {\n                \"tsRicosNodesChildren\": true,\n                \"description\": \"Child nodes to define a video caption.\"\n              },\n              \"elements\": {\n                \"ref\": \"CaptionNode\"\n              }\n            }\n          }\n        },\n        \"EXTERNAL\": {\n          \"metadata\": {\n            \"section\": \"External\",\n            \"tsRicosNode\": true,\n            \"internal\": true\n          },\n          \"properties\": {},\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\"\n            },\n            \"htmlData\": {},\n            \"externalData\": {\n              \"values\": {}\n            },\n            \"nodes\": {\n              \"metadata\": {\n                \"internal\": true,\n                \"tsRicosNodesChildren\": true\n              },\n              \"elements\": {\n                \"ref\": \"Never\"\n              }\n            }\n          }\n        }\n      }\n    },\n    \"OrderedListNode\": {\n      \"metadata\": {\n        \"section\": \"List\",\n        \"tsRicosNode\": true,\n        \"examples\": [\n          \"orderedList\"\n        ],\n        \"description\": \"Numbered list.\"\n      },\n      \"properties\": {\n        \"type\": {\n          \"enum\": [\n            \"ORDERED_LIST\"\n          ],\n          \"metadata\": {\n            \"description\": \"Node type. \\n Must be `ORDERED_LIST`.\"\n          }\n        },\n        \"nodes\": {\n          \"elements\": {\n            \"ref\": \"ListItemNode\",\n            \"metadata\": {\n              \"validation\": {\n                \"minSize\": 1\n              }\n            }\n          },\n          \"metadata\": {\n            \"tsRicosNodesChildren\": true,\n            \"description\": \"List items.\",\n            \"validation\": {\n              \"minSize\": 1\n            }\n          }\n        }\n      },\n      \"optionalProperties\": {\n        \"id\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"format\": \"NODE_ID\",\n            \"description\": \"[Node ID](#node-ids).\"\n          }\n        },\n        \"orderedListData\": {\n          \"ref\": \"OrderedListData\",\n          \"metadata\": {\n            \"description\": \"Ordered list details.\"\n          }\n        }\n      }\n    },\n    \"OrderedListData\": {\n      \"optionalProperties\": {\n        \"indentation\": {\n          \"type\": \"int32\",\n          \"metadata\": {\n            \"deprecated\": true,\n            \"description\": \"List margin from the left side. \\n The indentation is measured relative to the font size *em* units by a ratio of 1.5. For example, if the indentation is `2`, then the margin is equal to **3em**. Therefore the margin is 3 times the size of the font.\"\n          }\n        },\n        \"offset\": {\n          \"type\": \"int32\",\n          \"metadata\": {\n            \"description\": \"Additional indentation of a list node. When offset is `0`, the list node appears at its default nesting level. Higher values cause increased indentation.\"\n          }\n        },\n        \"start\": {\n          \"type\": \"int32\",\n          \"metadata\": {\n            \"description\": \"Number at the top of the numbered list. <br> Default: `1`\"\n          }\n        }\n      },\n      \"metadata\": {\n        \"section\": \"List\"\n      }\n    },\n    \"BulletedListNode\": {\n      \"metadata\": {\n        \"section\": \"List\",\n        \"tsRicosNode\": true,\n        \"examples\": [\n          \"bulletedList\"\n        ],\n        \"description\": \"Bulleted list.\"\n      },\n      \"properties\": {\n        \"type\": {\n          \"enum\": [\n            \"BULLETED_LIST\"\n          ],\n          \"metadata\": {\n            \"description\": \"Node type. \\n Must be `BULLETED_LIST`.\"\n          }\n        },\n        \"nodes\": {\n          \"elements\": {\n            \"ref\": \"ListItemNode\",\n            \"metadata\": {\n              \"validation\": {\n                \"minSize\": 1\n              }\n            }\n          },\n          \"metadata\": {\n            \"tsRicosNodesChildren\": true,\n            \"description\": \"List items.\",\n            \"validation\": {\n              \"minSize\": 1\n            }\n          }\n        }\n      },\n      \"optionalProperties\": {\n        \"id\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"format\": \"NODE_ID\",\n            \"description\": \"[Node ID](#node-ids).\"\n          }\n        },\n        \"bulletedListData\": {\n          \"ref\": \"BulletedListData\",\n          \"metadata\": {\n            \"description\": \"Bulleted list details.\"\n          }\n        }\n      }\n    },\n    \"BulletedListData\": {\n      \"optionalProperties\": {\n        \"indentation\": {\n          \"type\": \"int32\",\n          \"metadata\": {\n            \"deprecated\": true\n          }\n        },\n        \"offset\": {\n          \"type\": \"int32\",\n          \"metadata\": {\n            \"description\": \"Additional indentation of a list node. When offset is `0`, the list node appears at its default nesting level. Higher values cause increased indentation.\"\n          }\n        }\n      },\n      \"metadata\": {\n        \"section\": \"List\"\n      }\n    },\n    \"ListItemNode\": {\n      \"metadata\": {\n        \"section\": \"List\",\n        \"tsRicosNode\": true\n      },\n      \"properties\": {\n        \"type\": {\n          \"enum\": [\n            \"LIST_ITEM\"\n          ],\n          \"metadata\": {\n            \"description\": \"Node type. \\n Value: `LIST_ITEM`\"\n          }\n        },\n        \"nodes\": {\n          \"elements\": {\n            \"ref\": \"ListItemChildNode\"\n          },\n          \"metadata\": {\n            \"tsRicosNodesChildren\": true,\n            \"description\": \"Child nodes that the list item contains.\",\n            \"pattern\": {\n              \"description\": \"Must start with a paragraph or heading, followed by any number of paragraphs, bulleted lists, or ordered lists.\",\n              \"value\": \"(PARAGRAPH|HEADING|IMAGE|VIDEO|GIF|GALLERY) (PARAGRAPH|BULLETED_LIST|ORDERED_LIST|HEADING|IMAGE|VIDEO|GIF|GALLERY)*\"\n            }\n          }\n        }\n      },\n      \"optionalProperties\": {\n        \"id\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"format\": \"NODE_ID\",\n            \"description\": \"[Node ID](#node-ids).\"\n          }\n        }\n      }\n    },\n    \"ListItemChildNode\": {\n      \"discriminator\": \"type\",\n      \"metadata\": {\n        \"section\": \"List\",\n        \"refUnion\": {\n          \"PARAGRAPH\": \"ParagraphNode\",\n          \"HEADING\": \"HeadingNode\",\n          \"ORDERED_LIST\": \"OrderedListNode\",\n          \"BULLETED_LIST\": \"BulletedListNode\",\n          \"IMAGE\": \"ImageNode\",\n          \"VIDEO\": \"VideoNode\",\n          \"GIF\": \"GifNode\",\n          \"GALLERY\": \"GalleryNode\"\n        }\n      },\n      \"mapping\": {\n        \"PARAGRAPH\": {\n          \"metadata\": {\n            \"section\": \"Paragraph\",\n            \"tsRicosNode\": true,\n            \"description\": \"Structures text content, providing a clear separation between different ideas or sections of text. Paragraphs are rendered with default styling that typically includes some space above and below the paragraph, making it visually distinct from the surrounding content.\",\n            \"examples\": [\n              \"paragraph\"\n            ]\n          },\n          \"properties\": {},\n          \"optionalProperties\": {\n            \"nodes\": {\n              \"elements\": {\n                \"ref\": \"TextNode\"\n              },\n              \"metadata\": {\n                \"tsRicosNodesChildren\": true,\n                \"description\": \"Paragraph children.\"\n              }\n            },\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"style\": {\n              \"ref\": \"NodeStyle\",\n              \"metadata\": {\n                \"description\": \"Vertical padding. \\n **Note:** This node requires the [`lineSpacing`](https://dev.wix.com/docs/ricos/getting-started/introduction#plugins) plugin to be enabled.\"\n              }\n            },\n            \"paragraphData\": {\n              \"ref\": \"ParagraphData\",\n              \"metadata\": {\n                \"description\": \"Paragraph node attributes.\"\n              }\n            }\n          }\n        },\n        \"HEADING\": {\n          \"metadata\": {\n            \"section\": \"Heading\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"headings-all-sizes\"\n            ],\n            \"description\": \"Indicates a heading or title of a section. There are 6 levels of headings, with `1` being the most prominent and `6` being the least.\"\n          },\n          \"properties\": {},\n          \"optionalProperties\": {\n            \"nodes\": {\n              \"elements\": {\n                \"ref\": \"TextNode\"\n              },\n              \"metadata\": {\n                \"tsRicosNodesChildren\": true,\n                \"description\": \"Child nodes to define the heading text.\"\n              }\n            },\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"style\": {\n              \"ref\": \"NodeStyle\",\n              \"metadata\": {\n                \"description\": \"Heading styling, such as padding and background color. \\n **Note:** This node requires the [`lineSpacing`](https://dev.wix.com/docs/ricos/getting-started/introduction#plugins) plugin to be enabled.\"\n              }\n            },\n            \"headingData\": {\n              \"ref\": \"HeadingData\",\n              \"metadata\": {\n                \"description\": \"Heading options.\"\n              }\n            }\n          }\n        },\n        \"ORDERED_LIST\": {\n          \"metadata\": {\n            \"section\": \"List\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"orderedList\"\n            ],\n            \"description\": \"Numbered list.\"\n          },\n          \"properties\": {\n            \"nodes\": {\n              \"elements\": {\n                \"ref\": \"ListItemNode\",\n                \"metadata\": {\n                  \"validation\": {\n                    \"minSize\": 1\n                  }\n                }\n              },\n              \"metadata\": {\n                \"tsRicosNodesChildren\": true,\n                \"description\": \"List items.\",\n                \"validation\": {\n                  \"minSize\": 1\n                }\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"orderedListData\": {\n              \"ref\": \"OrderedListData\",\n              \"metadata\": {\n                \"description\": \"Ordered list details.\"\n              }\n            }\n          }\n        },\n        \"BULLETED_LIST\": {\n          \"metadata\": {\n            \"section\": \"List\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"bulletedList\"\n            ],\n            \"description\": \"Bulleted list.\"\n          },\n          \"properties\": {\n            \"nodes\": {\n              \"elements\": {\n                \"ref\": \"ListItemNode\",\n                \"metadata\": {\n                  \"validation\": {\n                    \"minSize\": 1\n                  }\n                }\n              },\n              \"metadata\": {\n                \"tsRicosNodesChildren\": true,\n                \"description\": \"List items.\",\n                \"validation\": {\n                  \"minSize\": 1\n                }\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"bulletedListData\": {\n              \"ref\": \"BulletedListData\",\n              \"metadata\": {\n                \"description\": \"Bulleted list details.\"\n              }\n            }\n          }\n        },\n        \"IMAGE\": {\n          \"metadata\": {\n            \"section\": \"Image\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"image-id\",\n              \"image-url\"\n            ],\n            \"features\": [\n              \"IMAGE\"\n            ],\n            \"description\": \"Standalone images in a page.\"\n          },\n          \"properties\": {\n            \"imageData\": {\n              \"ref\": \"ImageData\",\n              \"metadata\": {\n                \"description\": \"Image options.\"\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"nodes\": {\n              \"metadata\": {\n                \"tsRicosNodesChildren\": true,\n                \"description\": \"Child nodes to define an image caption.\"\n              },\n              \"elements\": {\n                \"ref\": \"CaptionNode\"\n              }\n            }\n          }\n        },\n        \"VIDEO\": {\n          \"metadata\": {\n            \"section\": \"Video\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"video-url\",\n              \"video-wix\"\n            ],\n            \"features\": [\n              \"VIDEO\"\n            ],\n            \"description\": \"Embeds and plays video content directly in a page. When rendered, it is displayed as the video player with the specified video file. Users can interact with the controls to play, pause, rewind, and adjust the volume of the video.\"\n          },\n          \"properties\": {\n            \"videoData\": {\n              \"ref\": \"VideoData\",\n              \"metadata\": {\n                \"description\": \"Video details.\"\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"nodes\": {\n              \"metadata\": {\n                \"tsRicosNodesChildren\": true,\n                \"description\": \"Child nodes to define a video caption.\"\n              },\n              \"elements\": {\n                \"ref\": \"CaptionNode\"\n              }\n            }\n          }\n        },\n        \"GIF\": {\n          \"metadata\": {\n            \"section\": \"Gif\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"gif-basic\"\n            ],\n            \"features\": [\n              \"GIF\"\n            ],\n            \"description\": \"GIF images.\"\n          },\n          \"properties\": {\n            \"gifData\": {\n              \"ref\": \"GIFData\",\n              \"metadata\": {\n                \"description\": \"GIF details.\"\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"nodes\": {\n              \"metadata\": {\n                \"tsRicosNodesChildren\": true,\n                \"description\": \"Child nodes to define a GIF caption.\"\n              },\n              \"elements\": {\n                \"ref\": \"CaptionNode\"\n              }\n            }\n          }\n        },\n        \"GALLERY\": {\n          \"metadata\": {\n            \"section\": \"Gallery\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"gallery\"\n            ],\n            \"features\": [\n              \"GALLERY\"\n            ],\n            \"description\": \"Collection of images displayed together.\"\n          },\n          \"properties\": {\n            \"galleryData\": {\n              \"ref\": \"GalleryData\",\n              \"metadata\": {\n                \"description\": \"Gallery node details.\"\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"nodes\": {\n              \"metadata\": {\n                \"internal\": true,\n                \"tsRicosNodesChildren\": true\n              },\n              \"elements\": {\n                \"ref\": \"Never\"\n              }\n            }\n          }\n        }\n      }\n    },\n    \"ParagraphNode\": {\n      \"metadata\": {\n        \"section\": \"Paragraph\",\n        \"tsRicosNode\": true,\n        \"description\": \"Structures text content, providing a clear separation between different ideas or sections of text. Paragraphs are rendered with default styling that typically includes some space above and below the paragraph, making it visually distinct from the surrounding content.\",\n        \"examples\": [\n          \"paragraph\"\n        ]\n      },\n      \"properties\": {\n        \"type\": {\n          \"enum\": [\n            \"PARAGRAPH\"\n          ],\n          \"metadata\": {\n            \"description\": \"Node type. \\n Must be `PARAGRAPH`.\"\n          }\n        }\n      },\n      \"optionalProperties\": {\n        \"nodes\": {\n          \"elements\": {\n            \"ref\": \"TextNode\"\n          },\n          \"metadata\": {\n            \"tsRicosNodesChildren\": true,\n            \"description\": \"Paragraph children.\"\n          }\n        },\n        \"id\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"format\": \"NODE_ID\",\n            \"description\": \"[Node ID](#node-ids).\"\n          }\n        },\n        \"style\": {\n          \"ref\": \"NodeStyle\",\n          \"metadata\": {\n            \"description\": \"Vertical padding. \\n **Note:** This node requires the [`lineSpacing`](https://dev.wix.com/docs/ricos/getting-started/introduction#plugins) plugin to be enabled.\"\n          }\n        },\n        \"paragraphData\": {\n          \"ref\": \"ParagraphData\",\n          \"metadata\": {\n            \"description\": \"Paragraph node attributes.\"\n          }\n        }\n      }\n    },\n    \"ParagraphData\": {\n      \"optionalProperties\": {\n        \"textStyle\": {\n          \"ref\": \"TextStyle\",\n          \"metadata\": {\n            \"description\": \"Paragraph text styling.\"\n          }\n        },\n        \"indentation\": {\n          \"type\": \"int32\",\n          \"metadata\": {\n            \"description\": \"Paragraph margin from the left side. \\n The indentation is measured relative to 40px. For example, if the indentation is `2`, then the margin is equal to **80px**.\"\n          }\n        },\n        \"level\": {\n          \"type\": \"int32\",\n          \"metadata\": {\n            \"internal\": true,\n            \"description\": \"Paragraph level for future different paragraphs.\"\n          }\n        }\n      },\n      \"metadata\": {\n        \"section\": \"Paragraph\"\n      }\n    },\n    \"TextNode\": {\n      \"metadata\": {\n        \"section\": \"TextNode\",\n        \"tsRicosNode\": true,\n        \"examples\": [\n          \"text\"\n        ],\n        \"description\": \"Text nodes hold the text itself, similar to how `span` tags hold text in HTML. Text nodes can't be nested and must contain a non-empty string. Their appearance and behavior can be modified using [decorations](#decorations).\"\n      },\n      \"properties\": {\n        \"type\": {\n          \"enum\": [\n            \"TEXT\"\n          ],\n          \"metadata\": {\n            \"description\": \"Node type. \\n Must be `TEXT`.\"\n          }\n        },\n        \"textData\": {\n          \"ref\": \"TextData\",\n          \"metadata\": {\n            \"description\": \"Text options.\"\n          }\n        }\n      },\n      \"optionalProperties\": {\n        \"id\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"format\": \"NODE_ID\",\n            \"description\": \"[Node ID](#node-ids).\"\n          }\n        },\n        \"nodes\": {\n          \"metadata\": {\n            \"internal\": true,\n            \"tsRicosNodesChildren\": true\n          },\n          \"elements\": {\n            \"ref\": \"Never\"\n          }\n        }\n      }\n    },\n    \"TextData\": {\n      \"properties\": {\n        \"text\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"description\": \"Non-empty string to display as text.\",\n            \"validation\": {\n              \"minLength\": 1\n            }\n          }\n        }\n      },\n      \"optionalProperties\": {\n        \"decorations\": {\n          \"elements\": {\n            \"ref\": \"Decoration\"\n          },\n          \"metadata\": {\n            \"description\": \"Array of text [decorations](#decorations). A decoration can't appear twice in the array.\",\n            \"validation\": {\n              \"uniqueTags\": true\n            }\n          }\n        }\n      },\n      \"metadata\": {\n        \"section\": \"TextNode\"\n      }\n    },\n    \"AppEmbedNode\": {\n      \"metadata\": {\n        \"section\": \"App Embed\",\n        \"tsRicosNode\": true,\n        \"examples\": [\n          \"app-embed-event\",\n          \"app-embed-booking\"\n        ],\n        \"features\": [\n          \"APP_EMBED\"\n        ],\n        \"description\": \"Embeds an external content preview from Wix business solutions. For example, you can embed previews from the Wix Bookings, Wix Stores and Wix Events apps.\"\n      },\n      \"properties\": {\n        \"type\": {\n          \"enum\": [\n            \"APP_EMBED\"\n          ],\n          \"metadata\": {\n            \"description\": \"Node type. \\n Must be `APP_EMBED`.\"\n          }\n        },\n        \"appEmbedData\": {\n          \"ref\": \"AppEmbedData\",\n          \"metadata\": {\n            \"description\": \"Embedded Wix app.\"\n          }\n        }\n      },\n      \"optionalProperties\": {\n        \"id\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"format\": \"NODE_ID\",\n            \"description\": \"[Node ID](#node-ids).\"\n          }\n        },\n        \"nodes\": {\n          \"metadata\": {\n            \"internal\": true,\n            \"tsRicosNodesChildren\": true\n          },\n          \"elements\": {\n            \"ref\": \"Never\"\n          }\n        }\n      }\n    },\n    \"AppEmbedData\": {\n      \"discriminator\": \"type\",\n      \"metadata\": {\n        \"section\": \"App Embed\",\n        \"refUnion\": {\n          \"PRODUCT\": \"AppEmbedDataProduct\",\n          \"EVENT\": \"AppEmbedDataEvent\",\n          \"BOOKING\": \"AppEmbedDataBooking\"\n        },\n        \"emitEnum\": \"AppEmbedData_AppType\"\n      },\n      \"mapping\": {\n        \"PRODUCT\": {\n          \"metadata\": {\n            \"section\": \"App Embed\",\n            \"description\": \"Embedded a product from Wix Stores.\"\n          },\n          \"properties\": {\n            \"name\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"description\": \"Embedded content name.\"\n              }\n            },\n            \"url\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"description\": \"Embedded content URL.\"\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"containerData\": {\n              \"ref\": \"PluginContainerData\",\n              \"metadata\": {\n                \"description\": \"App embed container styling.\"\n              }\n            },\n            \"image\": {\n              \"ref\": \"Media\",\n              \"metadata\": {\n                \"description\": \"Embedded content thumbnail.\"\n              }\n            },\n            \"itemId\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"description\": \"Embedded content ID.\"\n              }\n            },\n            \"imageSrc\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"description\": \"Deprecated: Use `image` instead.\",\n                \"deprecated\": true\n              }\n            },\n            \"hideImage\": {\n              \"type\": \"boolean\",\n              \"metadata\": {\n                \"description\": \"Whether to hide the image.\"\n              }\n            },\n            \"hideTitle\": {\n              \"type\": \"boolean\",\n              \"metadata\": {\n                \"description\": \"Whether to hide the title.\"\n              }\n            },\n            \"hidePrice\": {\n              \"type\": \"boolean\",\n              \"metadata\": {\n                \"description\": \"Whether to hide the price.\"\n              }\n            },\n            \"hideButton\": {\n              \"type\": \"boolean\",\n              \"metadata\": {\n                \"description\": \"Whether to hide the button.\"\n              }\n            },\n            \"hideRibbon\": {\n              \"type\": \"boolean\",\n              \"metadata\": {\n                \"description\": \"Whether to hide the ribbon.\"\n              }\n            },\n            \"buttonStyles\": {\n              \"ref\": \"AppEmbedData_ButtonStyles\",\n              \"metadata\": {\n                \"description\": \"Button styling options.\"\n              }\n            },\n            \"imageStyles\": {\n              \"ref\": \"AppEmbedData_ImageStyles\",\n              \"metadata\": {\n                \"description\": \"Image styling options.\"\n              }\n            },\n            \"ribbonStyles\": {\n              \"ref\": \"AppEmbedData_RibbonStyles\",\n              \"metadata\": {\n                \"description\": \"Ribbon styling options.\"\n              }\n            },\n            \"cardStyles\": {\n              \"ref\": \"AppEmbedData_CardStyles\",\n              \"metadata\": {\n                \"description\": \"Card styling options.\"\n              }\n            },\n            \"pricingData\": {\n              \"ref\": \"AppEmbedData_PricingData\",\n              \"metadata\": {\n                \"description\": \"Pricing information for the embedded content.\"\n              }\n            }\n          }\n        },\n        \"EVENT\": {\n          \"metadata\": {\n            \"section\": \"App Embed\",\n            \"description\": \"Embeds an event from Wix Events.\"\n          },\n          \"properties\": {\n            \"name\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"description\": \"Embedded content name.\"\n              }\n            },\n            \"url\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"description\": \"Embedded content URL.\"\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"containerData\": {\n              \"ref\": \"PluginContainerData\",\n              \"metadata\": {\n                \"description\": \"App embed container styling.\"\n              }\n            },\n            \"eventData\": {\n              \"ref\": \"AppEmbedData_EventData\",\n              \"metadata\": {\n                \"description\": \"Embedded event content.\"\n              }\n            },\n            \"image\": {\n              \"ref\": \"Media\",\n              \"metadata\": {\n                \"description\": \"Embedded content thumbnail.\"\n              }\n            },\n            \"itemId\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"description\": \"Embedded content ID.\"\n              }\n            },\n            \"imageSrc\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"description\": \"Deprecated: Use `image` instead.\",\n                \"deprecated\": true\n              }\n            },\n            \"hideImage\": {\n              \"type\": \"boolean\",\n              \"metadata\": {\n                \"description\": \"Whether to hide the image.\"\n              }\n            },\n            \"hideTitle\": {\n              \"type\": \"boolean\",\n              \"metadata\": {\n                \"description\": \"Whether to hide the title.\"\n              }\n            },\n            \"hidePrice\": {\n              \"type\": \"boolean\",\n              \"metadata\": {\n                \"description\": \"Whether to hide the price.\"\n              }\n            },\n            \"hideDescription\": {\n              \"type\": \"boolean\",\n              \"metadata\": {\n                \"description\": \"Whether to hide the description.\"\n              }\n            },\n            \"hideDateTime\": {\n              \"type\": \"boolean\",\n              \"metadata\": {\n                \"description\": \"Whether to hide the date and time.\"\n              }\n            },\n            \"hideLocation\": {\n              \"type\": \"boolean\",\n              \"metadata\": {\n                \"description\": \"Whether to hide the location.\"\n              }\n            },\n            \"hideButton\": {\n              \"type\": \"boolean\",\n              \"metadata\": {\n                \"description\": \"Whether to hide the button.\"\n              }\n            },\n            \"hideRibbon\": {\n              \"type\": \"boolean\",\n              \"metadata\": {\n                \"description\": \"Whether to hide the ribbon.\"\n              }\n            },\n            \"buttonStyles\": {\n              \"ref\": \"AppEmbedData_ButtonStyles\",\n              \"metadata\": {\n                \"description\": \"Button styling options.\"\n              }\n            },\n            \"imageStyles\": {\n              \"ref\": \"AppEmbedData_ImageStyles\",\n              \"metadata\": {\n                \"description\": \"Image styling options.\"\n              }\n            },\n            \"ribbonStyles\": {\n              \"ref\": \"AppEmbedData_RibbonStyles\",\n              \"metadata\": {\n                \"description\": \"Ribbon styling options.\"\n              }\n            },\n            \"cardStyles\": {\n              \"ref\": \"AppEmbedData_CardStyles\",\n              \"metadata\": {\n                \"description\": \"Card styling options.\"\n              }\n            },\n            \"pricingData\": {\n              \"ref\": \"AppEmbedData_PricingData\",\n              \"metadata\": {\n                \"description\": \"Pricing information for the embedded content.\"\n              }\n            }\n          }\n        },\n        \"BOOKING\": {\n          \"metadata\": {\n            \"section\": \"App Embed\",\n            \"description\": \"Embeds a booking from Wix Bookings.\"\n          },\n          \"properties\": {\n            \"name\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"description\": \"Embedded content name.\"\n              }\n            },\n            \"url\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"description\": \"Embedded content URL.\"\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"containerData\": {\n              \"ref\": \"PluginContainerData\",\n              \"metadata\": {\n                \"description\": \"App embed container styling.\"\n              }\n            },\n            \"image\": {\n              \"ref\": \"Media\",\n              \"metadata\": {\n                \"description\": \"Embedded content thumbnail.\"\n              }\n            },\n            \"itemId\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"description\": \"Embedded content ID.\"\n              }\n            },\n            \"bookingData\": {\n              \"ref\": \"AppEmbedData_BookingData\",\n              \"metadata\": {\n                \"description\": \"Embedded booking content.\"\n              }\n            },\n            \"imageSrc\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"description\": \"Deprecated: Use `image` instead.\",\n                \"deprecated\": true\n              }\n            },\n            \"hideImage\": {\n              \"type\": \"boolean\",\n              \"metadata\": {\n                \"description\": \"Whether to hide the image.\"\n              }\n            },\n            \"hideTitle\": {\n              \"type\": \"boolean\",\n              \"metadata\": {\n                \"description\": \"Whether to hide the title.\"\n              }\n            },\n            \"hidePrice\": {\n              \"type\": \"boolean\",\n              \"metadata\": {\n                \"description\": \"Whether to hide the price.\"\n              }\n            },\n            \"hideDescription\": {\n              \"type\": \"boolean\",\n              \"metadata\": {\n                \"description\": \"Whether to hide the description.\"\n              }\n            },\n            \"hideDuration\": {\n              \"type\": \"boolean\",\n              \"metadata\": {\n                \"description\": \"Whether to hide the duration.\"\n              }\n            },\n            \"hideLocation\": {\n              \"type\": \"boolean\",\n              \"metadata\": {\n                \"description\": \"Whether to hide the location.\"\n              }\n            },\n            \"hideButton\": {\n              \"type\": \"boolean\",\n              \"metadata\": {\n                \"description\": \"Whether to hide the button.\"\n              }\n            },\n            \"hideRibbon\": {\n              \"type\": \"boolean\",\n              \"metadata\": {\n                \"description\": \"Whether to hide the ribbon.\"\n              }\n            },\n            \"buttonStyles\": {\n              \"ref\": \"AppEmbedData_ButtonStyles\",\n              \"metadata\": {\n                \"description\": \"Button styling options.\"\n              }\n            },\n            \"imageStyles\": {\n              \"ref\": \"AppEmbedData_ImageStyles\",\n              \"metadata\": {\n                \"description\": \"Image styling options.\"\n              }\n            },\n            \"ribbonStyles\": {\n              \"ref\": \"AppEmbedData_RibbonStyles\",\n              \"metadata\": {\n                \"description\": \"Ribbon styling options.\"\n              }\n            },\n            \"cardStyles\": {\n              \"ref\": \"AppEmbedData_CardStyles\",\n              \"metadata\": {\n                \"description\": \"Card styling options.\"\n              }\n            },\n            \"pricingData\": {\n              \"ref\": \"AppEmbedData_PricingData\",\n              \"metadata\": {\n                \"description\": \"Pricing information for the embedded content.\"\n              }\n            }\n          }\n        }\n      }\n    },\n    \"AppEmbedDataProduct\": {\n      \"metadata\": {\n        \"section\": \"App Embed\",\n        \"description\": \"Embedded a product from Wix Stores.\"\n      },\n      \"properties\": {\n        \"type\": {\n          \"enum\": [\n            \"PRODUCT\"\n          ],\n          \"metadata\": {\n            \"description\": \"Must be `PRODUCT`.\"\n          }\n        },\n        \"name\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"description\": \"Embedded content name.\"\n          }\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"description\": \"Embedded content URL.\"\n          }\n        }\n      },\n      \"optionalProperties\": {\n        \"containerData\": {\n          \"ref\": \"PluginContainerData\",\n          \"metadata\": {\n            \"description\": \"App embed container styling.\"\n          }\n        },\n        \"image\": {\n          \"ref\": \"Media\",\n          \"metadata\": {\n            \"description\": \"Embedded content thumbnail.\"\n          }\n        },\n        \"itemId\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"description\": \"Embedded content ID.\"\n          }\n        },\n        \"imageSrc\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"description\": \"Deprecated: Use `image` instead.\",\n            \"deprecated\": true\n          }\n        },\n        \"hideImage\": {\n          \"type\": \"boolean\",\n          \"metadata\": {\n            \"description\": \"Whether to hide the image.\"\n          }\n        },\n        \"hideTitle\": {\n          \"type\": \"boolean\",\n          \"metadata\": {\n            \"description\": \"Whether to hide the title.\"\n          }\n        },\n        \"hidePrice\": {\n          \"type\": \"boolean\",\n          \"metadata\": {\n            \"description\": \"Whether to hide the price.\"\n          }\n        },\n        \"hideButton\": {\n          \"type\": \"boolean\",\n          \"metadata\": {\n            \"description\": \"Whether to hide the button.\"\n          }\n        },\n        \"hideRibbon\": {\n          \"type\": \"boolean\",\n          \"metadata\": {\n            \"description\": \"Whether to hide the ribbon.\"\n          }\n        },\n        \"buttonStyles\": {\n          \"ref\": \"AppEmbedData_ButtonStyles\",\n          \"metadata\": {\n            \"description\": \"Button styling options.\"\n          }\n        },\n        \"imageStyles\": {\n          \"ref\": \"AppEmbedData_ImageStyles\",\n          \"metadata\": {\n            \"description\": \"Image styling options.\"\n          }\n        },\n        \"ribbonStyles\": {\n          \"ref\": \"AppEmbedData_RibbonStyles\",\n          \"metadata\": {\n            \"description\": \"Ribbon styling options.\"\n          }\n        },\n        \"cardStyles\": {\n          \"ref\": \"AppEmbedData_CardStyles\",\n          \"metadata\": {\n            \"description\": \"Card styling options.\"\n          }\n        },\n        \"pricingData\": {\n          \"ref\": \"AppEmbedData_PricingData\",\n          \"metadata\": {\n            \"description\": \"Pricing information for the embedded content.\"\n          }\n        }\n      }\n    },\n    \"AppEmbedDataEvent\": {\n      \"metadata\": {\n        \"section\": \"App Embed\",\n        \"description\": \"Embeds an event from Wix Events.\"\n      },\n      \"properties\": {\n        \"type\": {\n          \"enum\": [\n            \"EVENT\"\n          ],\n          \"metadata\": {\n            \"description\": \"Must be `EVENT`.\"\n          }\n        },\n        \"name\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"description\": \"Embedded content name.\"\n          }\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"description\": \"Embedded content URL.\"\n          }\n        }\n      },\n      \"optionalProperties\": {\n        \"containerData\": {\n          \"ref\": \"PluginContainerData\",\n          \"metadata\": {\n            \"description\": \"App embed container styling.\"\n          }\n        },\n        \"eventData\": {\n          \"ref\": \"AppEmbedData_EventData\",\n          \"metadata\": {\n            \"description\": \"Embedded event content.\"\n          }\n        },\n        \"image\": {\n          \"ref\": \"Media\",\n          \"metadata\": {\n            \"description\": \"Embedded content thumbnail.\"\n          }\n        },\n        \"itemId\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"description\": \"Embedded content ID.\"\n          }\n        },\n        \"imageSrc\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"description\": \"Deprecated: Use `image` instead.\",\n            \"deprecated\": true\n          }\n        },\n        \"hideImage\": {\n          \"type\": \"boolean\",\n          \"metadata\": {\n            \"description\": \"Whether to hide the image.\"\n          }\n        },\n        \"hideTitle\": {\n          \"type\": \"boolean\",\n          \"metadata\": {\n            \"description\": \"Whether to hide the title.\"\n          }\n        },\n        \"hidePrice\": {\n          \"type\": \"boolean\",\n          \"metadata\": {\n            \"description\": \"Whether to hide the price.\"\n          }\n        },\n        \"hideDescription\": {\n          \"type\": \"boolean\",\n          \"metadata\": {\n            \"description\": \"Whether to hide the description.\"\n          }\n        },\n        \"hideDateTime\": {\n          \"type\": \"boolean\",\n          \"metadata\": {\n            \"description\": \"Whether to hide the date and time.\"\n          }\n        },\n        \"hideLocation\": {\n          \"type\": \"boolean\",\n          \"metadata\": {\n            \"description\": \"Whether to hide the location.\"\n          }\n        },\n        \"hideButton\": {\n          \"type\": \"boolean\",\n          \"metadata\": {\n            \"description\": \"Whether to hide the button.\"\n          }\n        },\n        \"hideRibbon\": {\n          \"type\": \"boolean\",\n          \"metadata\": {\n            \"description\": \"Whether to hide the ribbon.\"\n          }\n        },\n        \"buttonStyles\": {\n          \"ref\": \"AppEmbedData_ButtonStyles\",\n          \"metadata\": {\n            \"description\": \"Button styling options.\"\n          }\n        },\n        \"imageStyles\": {\n          \"ref\": \"AppEmbedData_ImageStyles\",\n          \"metadata\": {\n            \"description\": \"Image styling options.\"\n          }\n        },\n        \"ribbonStyles\": {\n          \"ref\": \"AppEmbedData_RibbonStyles\",\n          \"metadata\": {\n            \"description\": \"Ribbon styling options.\"\n          }\n        },\n        \"cardStyles\": {\n          \"ref\": \"AppEmbedData_CardStyles\",\n          \"metadata\": {\n            \"description\": \"Card styling options.\"\n          }\n        },\n        \"pricingData\": {\n          \"ref\": \"AppEmbedData_PricingData\",\n          \"metadata\": {\n            \"description\": \"Pricing information for the embedded content.\"\n          }\n        }\n      }\n    },\n    \"AppEmbedDataBooking\": {\n      \"metadata\": {\n        \"section\": \"App Embed\",\n        \"description\": \"Embeds a booking from Wix Bookings.\"\n      },\n      \"properties\": {\n        \"type\": {\n          \"enum\": [\n            \"BOOKING\"\n          ]\n        },\n        \"name\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"description\": \"Embedded content name.\"\n          }\n        },\n        \"url\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"description\": \"Embedded content URL.\"\n          }\n        }\n      },\n      \"optionalProperties\": {\n        \"containerData\": {\n          \"ref\": \"PluginContainerData\",\n          \"metadata\": {\n            \"description\": \"App embed container styling.\"\n          }\n        },\n        \"image\": {\n          \"ref\": \"Media\",\n          \"metadata\": {\n            \"description\": \"Embedded content thumbnail.\"\n          }\n        },\n        \"itemId\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"description\": \"Embedded content ID.\"\n          }\n        },\n        \"bookingData\": {\n          \"ref\": \"AppEmbedData_BookingData\",\n          \"metadata\": {\n            \"description\": \"Embedded booking content.\"\n          }\n        },\n        \"imageSrc\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"description\": \"Deprecated: Use `image` instead.\",\n            \"deprecated\": true\n          }\n        },\n        \"hideImage\": {\n          \"type\": \"boolean\",\n          \"metadata\": {\n            \"description\": \"Whether to hide the image.\"\n          }\n        },\n        \"hideTitle\": {\n          \"type\": \"boolean\",\n          \"metadata\": {\n            \"description\": \"Whether to hide the title.\"\n          }\n        },\n        \"hidePrice\": {\n          \"type\": \"boolean\",\n          \"metadata\": {\n            \"description\": \"Whether to hide the price.\"\n          }\n        },\n        \"hideDescription\": {\n          \"type\": \"boolean\",\n          \"metadata\": {\n            \"description\": \"Whether to hide the description.\"\n          }\n        },\n        \"hideDuration\": {\n          \"type\": \"boolean\",\n          \"metadata\": {\n            \"description\": \"Whether to hide the duration.\"\n          }\n        },\n        \"hideLocation\": {\n          \"type\": \"boolean\",\n          \"metadata\": {\n            \"description\": \"Whether to hide the location.\"\n          }\n        },\n        \"hideButton\": {\n          \"type\": \"boolean\",\n          \"metadata\": {\n            \"description\": \"Whether to hide the button.\"\n          }\n        },\n        \"hideRibbon\": {\n          \"type\": \"boolean\",\n          \"metadata\": {\n            \"description\": \"Whether to hide the ribbon.\"\n          }\n        },\n        \"buttonStyles\": {\n          \"ref\": \"AppEmbedData_ButtonStyles\",\n          \"metadata\": {\n            \"description\": \"Button styling options.\"\n          }\n        },\n        \"imageStyles\": {\n          \"ref\": \"AppEmbedData_ImageStyles\",\n          \"metadata\": {\n            \"description\": \"Image styling options.\"\n          }\n        },\n        \"ribbonStyles\": {\n          \"ref\": \"AppEmbedData_RibbonStyles\",\n          \"metadata\": {\n            \"description\": \"Ribbon styling options.\"\n          }\n        },\n        \"cardStyles\": {\n          \"ref\": \"AppEmbedData_CardStyles\",\n          \"metadata\": {\n            \"description\": \"Card styling options.\"\n          }\n        },\n        \"pricingData\": {\n          \"ref\": \"AppEmbedData_PricingData\",\n          \"metadata\": {\n            \"description\": \"Pricing information for the embedded content.\"\n          }\n        }\n      }\n    },\n    \"AppEmbedData_BookingData\": {\n      \"optionalProperties\": {\n        \"durations\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"description\": \"Booking duration in minutes.\"\n          }\n        }\n      },\n      \"metadata\": {\n        \"section\": \"App Embed\"\n      }\n    },\n    \"AppEmbedData_EventData\": {\n      \"optionalProperties\": {\n        \"scheduling\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"description\": \"Event schedule.\"\n          }\n        },\n        \"location\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"description\": \"Event location.\"\n          }\n        }\n      },\n      \"metadata\": {\n        \"section\": \"App Embed\"\n      }\n    },\n    \"AppEmbedData_ButtonStyles\": {\n      \"optionalProperties\": {\n        \"buttonText\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"description\": \"Text to display on the button.\"\n          }\n        },\n        \"borderWidth\": {\n          \"type\": \"int32\",\n          \"metadata\": {\n            \"description\": \"Border width in pixels.\"\n          }\n        },\n        \"borderRadius\": {\n          \"type\": \"int32\",\n          \"metadata\": {\n            \"description\": \"Border radius in pixels.\"\n          }\n        },\n        \"borderColor\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"format\": \"COLOR_HEX\",\n            \"description\": \"Border color as a hexadecimal value.\"\n          }\n        },\n        \"textColor\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"format\": \"COLOR_HEX\",\n            \"description\": \"Text color as a hexadecimal value.\"\n          }\n        },\n        \"backgroundColor\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"format\": \"COLOR_HEX\",\n            \"description\": \"Background color as a hexadecimal value.\"\n          }\n        },\n        \"borderColorHover\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"format\": \"COLOR_HEX\",\n            \"description\": \"Border color as a hexadecimal value (hover state).\"\n          }\n        },\n        \"textColorHover\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"format\": \"COLOR_HEX\",\n            \"description\": \"Text color as a hexadecimal value (hover state).\"\n          }\n        },\n        \"backgroundColorHover\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"format\": \"COLOR_HEX\",\n            \"description\": \"Background color as a hexadecimal value (hover state).\"\n          }\n        },\n        \"buttonSize\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"description\": \"Button size option, one of `SMALL`, `MEDIUM` or `LARGE`. Defaults to `MEDIUM`.\"\n          }\n        }\n      },\n      \"metadata\": {\n        \"section\": \"App Embed\"\n      }\n    },\n    \"AppEmbedData_ImageStyles\": {\n      \"optionalProperties\": {\n        \"imagePosition\": {\n          \"enum\": [\n            \"START\",\n            \"END\",\n            \"TOP\"\n          ],\n          \"metadata\": {\n            \"description\": \"Position of image. Defaults to `START`.\",\n            \"emitEnum\": \"AppEmbedData_ImageStyles_Position\"\n          }\n        },\n        \"aspectRatio\": {\n          \"enum\": [\n            \"SQUARE\",\n            \"RECTANGLE\"\n          ],\n          \"metadata\": {\n            \"description\": \"Aspect ratio for the image. Defaults to `SQUARE`.\",\n            \"emitEnum\": \"AppEmbedData_ImageStyles_AspectRatio\"\n          }\n        },\n        \"resizing\": {\n          \"enum\": [\n            \"FILL\",\n            \"FIT\"\n          ],\n          \"metadata\": {\n            \"description\": \"How the image should be resized. Defaults to `FILL`.\",\n            \"emitEnum\": \"AppEmbedData_ImageStyles_Resizing\"\n          }\n        },\n        \"borderColor\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"format\": \"COLOR_HEX\",\n            \"description\": \"Image border color as a hexadecimal value.\"\n          }\n        },\n        \"borderWidth\": {\n          \"type\": \"int32\",\n          \"metadata\": {\n            \"description\": \"Image border width in pixels.\"\n          }\n        },\n        \"borderRadius\": {\n          \"type\": \"int32\",\n          \"metadata\": {\n            \"description\": \"Image border radius in pixels.\"\n          }\n        }\n      },\n      \"metadata\": {\n        \"section\": \"App Embed\"\n      }\n    },\n    \"AppEmbedData_RibbonStyles\": {\n      \"optionalProperties\": {\n        \"ribbonText\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"description\": \"Text to display on the ribbon.\"\n          }\n        },\n        \"ribbonPlacement\": {\n          \"enum\": [\n            \"IMAGE\",\n            \"PRODUCT_INFO\"\n          ],\n          \"metadata\": {\n            \"description\": \"Placement of the ribbon. Defaults to `IMAGE`.\",\n            \"emitEnum\": \"AppEmbedData_RibbonStyles_Placement\"\n          }\n        },\n        \"backgroundColor\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"format\": \"COLOR_HEX\",\n            \"description\": \"Ribbon background color as a hexadecimal value.\"\n          }\n        },\n        \"textColor\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"format\": \"COLOR_HEX\",\n            \"description\": \"Ribbon text color as a hexadecimal value.\"\n          }\n        },\n        \"borderColor\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"format\": \"COLOR_HEX\",\n            \"description\": \"Ribbon border color as a hexadecimal value.\"\n          }\n        },\n        \"borderWidth\": {\n          \"type\": \"int32\",\n          \"metadata\": {\n            \"description\": \"Ribbon border width in pixels.\"\n          }\n        },\n        \"borderRadius\": {\n          \"type\": \"int32\",\n          \"metadata\": {\n            \"description\": \"Ribbon border radius in pixels.\"\n          }\n        }\n      },\n      \"metadata\": {\n        \"section\": \"App Embed\"\n      }\n    },\n    \"AppEmbedData_CardStyles\": {\n      \"optionalProperties\": {\n        \"backgroundColor\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"format\": \"COLOR_HEX\",\n            \"description\": \"Card background color as a hexadecimal value.\"\n          }\n        },\n        \"borderColor\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"format\": \"COLOR_HEX\",\n            \"description\": \"Card border color as a hexadecimal value.\"\n          }\n        },\n        \"borderWidth\": {\n          \"type\": \"int32\",\n          \"metadata\": {\n            \"description\": \"Card border width in pixels.\"\n          }\n        },\n        \"borderRadius\": {\n          \"type\": \"int32\",\n          \"metadata\": {\n            \"description\": \"Card border radius in pixels.\"\n          }\n        },\n        \"type\": {\n          \"enum\": [\n            \"CONTAINED\",\n            \"FRAMELESS\"\n          ],\n          \"metadata\": {\n            \"description\": \"Card type. Defaults to `CONTAINED`.\",\n            \"emitEnum\": \"AppEmbedData_CardStyles_Type\"\n          }\n        },\n        \"alignment\": {\n          \"enum\": [\n            \"START\",\n            \"CENTER\",\n            \"END\"\n          ],\n          \"metadata\": {\n            \"description\": \"Content alignment. Defaults to `START`.\",\n            \"emitEnum\": \"AppEmbedData_CardStyles_Alignment\"\n          }\n        },\n        \"titlePriceLayout\": {\n          \"ref\": \"AppEmbedData_CardStyles_Layout\",\n          \"metadata\": {\n            \"description\": \"Layout for title and price. Defaults to `STACKED`.\"\n          }\n        },\n        \"titleColor\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"format\": \"COLOR_HEX\",\n            \"description\": \"Title text color as a hexadecimal value.\"\n          }\n        },\n        \"textColor\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"format\": \"COLOR_HEX\",\n            \"description\": \"Text color as a hexadecimal value.\"\n          }\n        }\n      },\n      \"metadata\": {\n        \"section\": \"App Embed\"\n      }\n    },\n    \"AppEmbedData_CardStyles_Layout\": {\n      \"enum\": [\n        \"STACKED\",\n        \"SIDE_BY_SIDE\"\n      ],\n      \"metadata\": {\n        \"section\": \"App Embed\",\n        \"description\": \"Layout options for arranging elements.\"\n      }\n    },\n    \"AppEmbedData_PricingData\": {\n      \"optionalProperties\": {\n        \"valueFrom\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"format\": \"DECIMAL\",\n            \"description\": \"Minimum numeric price value as string (e.g., \\\"10.99\\\").\"\n          }\n        },\n        \"valueTo\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"format\": \"DECIMAL\",\n            \"description\": \"Maximum numeric price value as string (e.g., \\\"19.99\\\").\"\n          }\n        },\n        \"discountedValue\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"format\": \"DECIMAL\",\n            \"description\": \"Numeric price value as string after discount application (e.g., \\\"15.99\\\").\"\n          }\n        },\n        \"currency\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"format\": \"CURRENCY\",\n            \"description\": \"Currency of the value in ISO 4217 format (e.g., \\\"USD\\\", \\\"EUR\\\").\"\n          }\n        },\n        \"pricingPlanId\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"format\": \"GUID\",\n            \"description\": \"Pricing plan ID.\"\n          }\n        }\n      },\n      \"metadata\": {\n        \"section\": \"App Embed\"\n      }\n    },\n    \"AudioNode\": {\n      \"metadata\": {\n        \"section\": \"Audio\",\n        \"tsRicosNode\": true,\n        \"examples\": [\n          \"audio-soundcloud\"\n        ],\n        \"features\": [\n          \"AUDIO\"\n        ],\n        \"description\": \"Embeds and plays audio content directly in a webpage. Users can interact with the controls to play, pause, rewind, and adjust the volume of the audio.\"\n      },\n      \"properties\": {\n        \"type\": {\n          \"enum\": [\n            \"AUDIO\"\n          ],\n          \"metadata\": {\n            \"description\": \"Node type. \\n Must be `AUDIO`.\"\n          }\n        },\n        \"audioData\": {\n          \"ref\": \"AudioData\",\n          \"metadata\": {\n            \"description\": \"Audio details.\"\n          }\n        }\n      },\n      \"optionalProperties\": {\n        \"id\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"format\": \"NODE_ID\",\n            \"description\": \"[Node ID](#node-ids).\"\n          }\n        },\n        \"nodes\": {\n          \"metadata\": {\n            \"internal\": true,\n            \"tsRicosNodesChildren\": true\n          },\n          \"elements\": {\n            \"ref\": \"Never\"\n          }\n        }\n      }\n    },\n    \"AudioData\": {\n      \"optionalProperties\": {\n        \"containerData\": {\n          \"metadata\": {\n            \"description\": \"Audio node container styling.\"\n          },\n          \"ref\": \"PluginContainerData\"\n        },\n        \"audio\": {\n          \"metadata\": {\n            \"description\": \"Audio file details.\"\n          },\n          \"ref\": \"Media\"\n        },\n        \"disableDownload\": {\n          \"metadata\": {\n            \"description\": \"Whether the audio download button is disabled. \\n Default: `false`\"\n          },\n          \"type\": \"boolean\"\n        },\n        \"coverImage\": {\n          \"metadata\": {\n            \"description\": \"Cover image.\"\n          },\n          \"ref\": \"Media\"\n        },\n        \"name\": {\n          \"metadata\": {\n            \"description\": \"Track name.\"\n          },\n          \"type\": \"string\"\n        },\n        \"authorName\": {\n          \"metadata\": {\n            \"description\": \"Author name.\"\n          },\n          \"type\": \"string\"\n        },\n        \"html\": {\n          \"metadata\": {\n            \"description\": \"HTML version of the audio node.\"\n          },\n          \"type\": \"string\"\n        }\n      },\n      \"metadata\": {\n        \"section\": \"Audio\"\n      }\n    },\n    \"ButtonNode\": {\n      \"metadata\": {\n        \"section\": \"Button\",\n        \"tsRicosNode\": true,\n        \"examples\": [\n          \"button-link\",\n          \"button-action\",\n          \"button-styled\"\n        ],\n        \"features\": [\n          \"BUTTON\"\n        ],\n        \"description\": \"Button to trigger an action.\"\n      },\n      \"properties\": {\n        \"type\": {\n          \"enum\": [\n            \"BUTTON\"\n          ],\n          \"metadata\": {\n            \"description\": \"Node type. \\n Must be `BUTTON`\"\n          }\n        },\n        \"buttonData\": {\n          \"ref\": \"ButtonData\",\n          \"metadata\": {\n            \"description\": \"Button details.\"\n          }\n        }\n      },\n      \"optionalProperties\": {\n        \"id\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"format\": \"NODE_ID\",\n            \"description\": \"[Node ID](#node-ids).\"\n          }\n        },\n        \"nodes\": {\n          \"metadata\": {\n            \"internal\": true,\n            \"tsRicosNodesChildren\": true\n          },\n          \"elements\": {\n            \"ref\": \"Never\"\n          }\n        }\n      }\n    },\n    \"ButtonData\": {\n      \"properties\": {\n        \"type\": {\n          \"enum\": [\n            \"LINK\",\n            \"ACTION\"\n          ],\n          \"metadata\": {\n            \"emitEnum\": \"ButtonData_Type\",\n            \"description\": \"Button type. Supported values: <br> - `LINK`: Redirects to a webpage. <br> - `ACTION`: Performs an action.\"\n          }\n        },\n        \"text\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"description\": \"Button text.\"\n          }\n        }\n      },\n      \"optionalProperties\": {\n        \"containerData\": {\n          \"ref\": \"PluginContainerData\",\n          \"metadata\": {\n            \"description\": \"Button container styling.\"\n          }\n        },\n        \"styles\": {\n          \"ref\": \"ButtonData_Styles\",\n          \"metadata\": {\n            \"description\": \"Button styling.\"\n          }\n        },\n        \"link\": {\n          \"ref\": \"Link\",\n          \"metadata\": {\n            \"description\": \"Button link details.\"\n          }\n        }\n      },\n      \"metadata\": {\n        \"section\": \"Button\"\n      }\n    },\n    \"ButtonData_Styles\": {\n      \"optionalProperties\": {\n        \"border\": {\n          \"ref\": \"ButtonData_Styles_Border\",\n          \"metadata\": {\n            \"description\": \"Deprecated: Use `borderWidth` and `borderRadius` instead.\",\n            \"deprecated\": true\n          }\n        },\n        \"colors\": {\n          \"ref\": \"ButtonData_Styles_Colors\",\n          \"metadata\": {\n            \"description\": \"Deprecated: Use `textColor`, `borderColor` and `backgroundColor` instead.\",\n            \"deprecated\": true\n          }\n        },\n        \"borderWidth\": {\n          \"type\": \"int32\",\n          \"metadata\": {\n            \"description\": \"Border width in pixels.\"\n          }\n        },\n        \"borderWidthHover\": {\n          \"type\": \"int32\",\n          \"metadata\": {\n            \"description\": \"Deprecated: Use `borderWidth` for normal/hover states instead.\",\n            \"deprecated\": true\n          }\n        },\n        \"borderRadius\": {\n          \"type\": \"int32\",\n          \"metadata\": {\n            \"description\": \"Border radius in pixels.\"\n          }\n        },\n        \"borderColor\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"format\": \"COLOR_HEX\",\n            \"description\": \"Border color as a hexadecimal value.\"\n          }\n        },\n        \"borderColorHover\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"format\": \"COLOR_HEX\",\n            \"description\": \"Border color as a hexadecimal value (hover state).\"\n          }\n        },\n        \"textColor\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"format\": \"COLOR_HEX\",\n            \"description\": \"Text color as a hexadecimal value.\"\n          }\n        },\n        \"textColorHover\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"format\": \"COLOR_HEX\",\n            \"description\": \"Text color as a hexadecimal value (hover state).\"\n          }\n        },\n        \"backgroundColor\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"format\": \"COLOR_HEX\",\n            \"description\": \"Deprecated: Use `background` instead.\",\n            \"deprecated\": true\n          }\n        },\n        \"backgroundColorHover\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"format\": \"COLOR_HEX\",\n            \"description\": \"Deprecated: Use `backgroundHover` instead.\",\n            \"deprecated\": true\n          }\n        },\n        \"background\": {\n          \"ref\": \"Background\",\n          \"metadata\": {\n            \"description\": \"Background styling (color or gradient).\"\n          }\n        },\n        \"backgroundHover\": {\n          \"ref\": \"Background\",\n          \"metadata\": {\n            \"description\": \"Background styling for hover state (color or gradient).\"\n          }\n        },\n        \"buttonSize\": {\n          \"enum\": [\n            \"MEDIUM\",\n            \"SMALL\",\n            \"LARGE\"\n          ],\n          \"metadata\": {\n            \"emitEnum\": \"ButtonData_Styles_ButtonSize\",\n            \"description\": \"Button size. Defaults to `MEDIUM`.\"\n          }\n        }\n      },\n      \"metadata\": {\n        \"section\": \"Button\"\n      }\n    },\n    \"ButtonData_Styles_Colors\": {\n      \"optionalProperties\": {\n        \"text\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"description\": \"Deprecated: Use `textColor` in `styles` instead.\",\n            \"deprecated\": true\n          }\n        },\n        \"border\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"description\": \"Deprecated: Use `borderColor` in `styles` instead.\",\n            \"deprecated\": true\n          }\n        },\n        \"background\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"description\": \"Deprecated: Use `backgroundColor` in `styles` instead.\",\n            \"deprecated\": true\n          }\n        }\n      },\n      \"metadata\": {\n        \"section\": \"Button\"\n      }\n    },\n    \"ButtonData_Styles_Border\": {\n      \"optionalProperties\": {\n        \"width\": {\n          \"type\": \"int32\",\n          \"metadata\": {\n            \"description\": \"Deprecated: Use `borderWidth` in `styles` instead.\",\n            \"deprecated\": true\n          }\n        },\n        \"radius\": {\n          \"type\": \"int32\",\n          \"metadata\": {\n            \"description\": \"Deprecated: Use `borderRadius` in `styles` instead\",\n            \"deprecated\": true\n          }\n        }\n      },\n      \"metadata\": {\n        \"section\": \"Button\"\n      }\n    },\n    \"CollapsibleListNode\": {\n      \"metadata\": {\n        \"section\": \"Collapsible List\",\n        \"tsRicosNode\": true,\n        \"examples\": [\n          \"collapsible-list\"\n        ],\n        \"features\": [\n          \"COLLAPSIBLE_LIST\"\n        ],\n        \"description\": \"List of items where each item can be expanded or collapsed.\"\n      },\n      \"properties\": {\n        \"type\": {\n          \"enum\": [\n            \"COLLAPSIBLE_LIST\"\n          ],\n          \"metadata\": {\n            \"description\": \"Node type. \\n Must be `COLLAPSIBLE_LIST`\"\n          }\n        },\n        \"nodes\": {\n          \"elements\": {\n            \"ref\": \"CollapsibleItemNode\"\n          },\n          \"metadata\": {\n            \"tsRicosNodesChildren\": true,\n            \"description\": \"Collapsible list child nodes.\",\n            \"validation\": {\n              \"minSize\": 1\n            }\n          }\n        }\n      },\n      \"optionalProperties\": {\n        \"id\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"format\": \"NODE_ID\",\n            \"description\": \"[Node ID](#node-ids).\"\n          }\n        },\n        \"collapsibleListData\": {\n          \"ref\": \"CollapsibleListData\",\n          \"metadata\": {\n            \"description\": \"Collapsible list details.\"\n          }\n        }\n      }\n    },\n    \"CollapsibleListData\": {\n      \"optionalProperties\": {\n        \"containerData\": {\n          \"ref\": \"PluginContainerData\",\n          \"metadata\": {\n            \"description\": \"Collapsible list container styling.\"\n          }\n        },\n        \"expandOnlyOne\": {\n          \"type\": \"boolean\",\n          \"metadata\": {\n            \"description\": \"Whether only one item can be expanded at a time. \\n Default: `false`.\"\n          }\n        },\n        \"initialExpandedItems\": {\n          \"enum\": [\n            \"FIRST\",\n            \"ALL\",\n            \"NONE\"\n          ],\n          \"metadata\": {\n            \"metadata\": {\n              \"emitEnum\": \"CollapsibleListData_InitialExpandedItems\"\n            },\n            \"description\": \"Sets which items are automatically expanded after the page loads.\"\n          }\n        },\n        \"direction\": {\n          \"enum\": [\n            \"LTR\",\n            \"RTL\"\n          ],\n          \"metadata\": {\n            \"emitEnum\": \"CollapsibleListData_Direction\",\n            \"description\": \"Direction of the text in the list. Supported values: \\n - `LTR`: Left to right. \\n - `RTL`: Right to left.\"\n          }\n        },\n        \"isQapageData\": {\n          \"type\": \"boolean\",\n          \"metadata\": {\n            \"description\": \"Whether the collapsible item will appear in search results as an FAQ.\"\n          }\n        }\n      },\n      \"metadata\": {\n        \"section\": \"Collapsible List\"\n      }\n    },\n    \"CollapsibleItemNode\": {\n      \"metadata\": {\n        \"section\": \"Collapsible List\",\n        \"tsRicosNode\": true\n      },\n      \"properties\": {\n        \"type\": {\n          \"enum\": [\n            \"COLLAPSIBLE_ITEM\"\n          ],\n          \"metadata\": {\n            \"description\": \"Node type. \\n Must be `COLLAPSIBLE_ITEM`\"\n          }\n        },\n        \"nodes\": {\n          \"elements\": {\n            \"ref\": \"CollapsibleItemChildNode\"\n          },\n          \"metadata\": {\n            \"tsRicosNodesChildren\": true,\n            \"description\": \"Collapsible list item.\",\n            \"pattern\": {\n              \"value\": \"COLLAPSIBLE_ITEM_TITLE COLLAPSIBLE_ITEM_BODY\",\n              \"description\": \"Must contain title as the first item and body as the second.\"\n            }\n          }\n        }\n      },\n      \"optionalProperties\": {\n        \"id\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"format\": \"NODE_ID\",\n            \"description\": \"[Node ID](#node-ids).\"\n          }\n        }\n      }\n    },\n    \"CollapsibleItemChildNode\": {\n      \"discriminator\": \"type\",\n      \"metadata\": {\n        \"section\": \"Collapsible List\",\n        \"refUnion\": {\n          \"COLLAPSIBLE_ITEM_TITLE\": \"CollapsibleItemTitleNode\",\n          \"COLLAPSIBLE_ITEM_BODY\": \"CollapsibleItemBodyNode\"\n        }\n      },\n      \"mapping\": {\n        \"COLLAPSIBLE_ITEM_TITLE\": {\n          \"metadata\": {\n            \"section\": \"Collapsible List\",\n            \"tsRicosNode\": true,\n            \"description\": \"Collapsible list item title.\"\n          },\n          \"properties\": {\n            \"nodes\": {\n              \"elements\": {\n                \"ref\": \"CollapsibleTitleChildNode\"\n              },\n              \"metadata\": {\n                \"tsRicosNodesChildren\": true,\n                \"description\": \"Collapsible list item title child nodes.\",\n                \"validation\": {\n                  \"minSize\": 1,\n                  \"maxSize\": 1\n                }\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            }\n          }\n        },\n        \"COLLAPSIBLE_ITEM_BODY\": {\n          \"metadata\": {\n            \"section\": \"Collapsible List\",\n            \"tsRicosNode\": true,\n            \"description\": \"Collapsible list item body.\"\n          },\n          \"properties\": {\n            \"nodes\": {\n              \"elements\": {\n                \"ref\": \"CollapsibleItemBodyChildNode\"\n              },\n              \"metadata\": {\n                \"tsRicosNodesChildren\": true,\n                \"description\": \"Collapsible list item body child nodes.\",\n                \"validation\": {\n                  \"minSize\": 1\n                }\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            }\n          }\n        }\n      }\n    },\n    \"CollapsibleItemTitleNode\": {\n      \"metadata\": {\n        \"section\": \"Collapsible List\",\n        \"tsRicosNode\": true,\n        \"description\": \"Collapsible list item title.\"\n      },\n      \"properties\": {\n        \"type\": {\n          \"enum\": [\n            \"COLLAPSIBLE_ITEM_TITLE\"\n          ],\n          \"metadata\": {\n            \"description\": \"Node type. \\n Must be `COLLAPSIBLE_ITEM_TITLE`.\"\n          }\n        },\n        \"nodes\": {\n          \"elements\": {\n            \"ref\": \"CollapsibleTitleChildNode\"\n          },\n          \"metadata\": {\n            \"tsRicosNodesChildren\": true,\n            \"description\": \"Collapsible list item title child nodes.\",\n            \"validation\": {\n              \"minSize\": 1,\n              \"maxSize\": 1\n            }\n          }\n        }\n      },\n      \"optionalProperties\": {\n        \"id\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"format\": \"NODE_ID\",\n            \"description\": \"[Node ID](#node-ids).\"\n          }\n        }\n      }\n    },\n    \"CollapsibleTitleChildNode\": {\n      \"discriminator\": \"type\",\n      \"metadata\": {\n        \"section\": \"Collapsible List\",\n        \"refUnion\": {\n          \"PARAGRAPH\": \"ParagraphNode\",\n          \"HEADING\": \"HeadingNode\",\n          \"BULLETED_LIST\": \"BulletedListNode\",\n          \"ORDERED_LIST\": \"OrderedListNode\",\n          \"BLOCKQUOTE\": \"BlockquoteNode\",\n          \"CODE_BLOCK\": \"CodeBlockNode\"\n        }\n      },\n      \"mapping\": {\n        \"PARAGRAPH\": {\n          \"metadata\": {\n            \"section\": \"Paragraph\",\n            \"tsRicosNode\": true,\n            \"description\": \"Structures text content, providing a clear separation between different ideas or sections of text. Paragraphs are rendered with default styling that typically includes some space above and below the paragraph, making it visually distinct from the surrounding content.\",\n            \"examples\": [\n              \"paragraph\"\n            ]\n          },\n          \"properties\": {},\n          \"optionalProperties\": {\n            \"nodes\": {\n              \"elements\": {\n                \"ref\": \"TextNode\"\n              },\n              \"metadata\": {\n                \"tsRicosNodesChildren\": true,\n                \"description\": \"Paragraph children.\"\n              }\n            },\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"style\": {\n              \"ref\": \"NodeStyle\",\n              \"metadata\": {\n                \"description\": \"Vertical padding. \\n **Note:** This node requires the [`lineSpacing`](https://dev.wix.com/docs/ricos/getting-started/introduction#plugins) plugin to be enabled.\"\n              }\n            },\n            \"paragraphData\": {\n              \"ref\": \"ParagraphData\",\n              \"metadata\": {\n                \"description\": \"Paragraph node attributes.\"\n              }\n            }\n          }\n        },\n        \"HEADING\": {\n          \"metadata\": {\n            \"section\": \"Heading\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"headings-all-sizes\"\n            ],\n            \"description\": \"Indicates a heading or title of a section. There are 6 levels of headings, with `1` being the most prominent and `6` being the least.\"\n          },\n          \"properties\": {},\n          \"optionalProperties\": {\n            \"nodes\": {\n              \"elements\": {\n                \"ref\": \"TextNode\"\n              },\n              \"metadata\": {\n                \"tsRicosNodesChildren\": true,\n                \"description\": \"Child nodes to define the heading text.\"\n              }\n            },\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"style\": {\n              \"ref\": \"NodeStyle\",\n              \"metadata\": {\n                \"description\": \"Heading styling, such as padding and background color. \\n **Note:** This node requires the [`lineSpacing`](https://dev.wix.com/docs/ricos/getting-started/introduction#plugins) plugin to be enabled.\"\n              }\n            },\n            \"headingData\": {\n              \"ref\": \"HeadingData\",\n              \"metadata\": {\n                \"description\": \"Heading options.\"\n              }\n            }\n          }\n        },\n        \"BULLETED_LIST\": {\n          \"metadata\": {\n            \"section\": \"List\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"bulletedList\"\n            ],\n            \"description\": \"Bulleted list.\"\n          },\n          \"properties\": {\n            \"nodes\": {\n              \"elements\": {\n                \"ref\": \"ListItemNode\",\n                \"metadata\": {\n                  \"validation\": {\n                    \"minSize\": 1\n                  }\n                }\n              },\n              \"metadata\": {\n                \"tsRicosNodesChildren\": true,\n                \"description\": \"List items.\",\n                \"validation\": {\n                  \"minSize\": 1\n                }\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"bulletedListData\": {\n              \"ref\": \"BulletedListData\",\n              \"metadata\": {\n                \"description\": \"Bulleted list details.\"\n              }\n            }\n          }\n        },\n        \"ORDERED_LIST\": {\n          \"metadata\": {\n            \"section\": \"List\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"orderedList\"\n            ],\n            \"description\": \"Numbered list.\"\n          },\n          \"properties\": {\n            \"nodes\": {\n              \"elements\": {\n                \"ref\": \"ListItemNode\",\n                \"metadata\": {\n                  \"validation\": {\n                    \"minSize\": 1\n                  }\n                }\n              },\n              \"metadata\": {\n                \"tsRicosNodesChildren\": true,\n                \"description\": \"List items.\",\n                \"validation\": {\n                  \"minSize\": 1\n                }\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"orderedListData\": {\n              \"ref\": \"OrderedListData\",\n              \"metadata\": {\n                \"description\": \"Ordered list details.\"\n              }\n            }\n          }\n        },\n        \"BLOCKQUOTE\": {\n          \"metadata\": {\n            \"section\": \"Block quote\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"blockquote\"\n            ],\n            \"description\": \"Used to visually distinguish quoted or cited content from the surrounding text. When rendered, it displays as the quoted text with indentation or other styling to visually separate it from the surrounding content.\"\n          },\n          \"properties\": {\n            \"nodes\": {\n              \"elements\": {\n                \"ref\": \"ParagraphNode\"\n              },\n              \"metadata\": {\n                \"tsRicosNodesChildren\": true,\n                \"description\": \"Child nodes to define a blockquote paragraph.\",\n                \"validation\": {\n                  \"minSize\": 1,\n                  \"maxSize\": 1\n                }\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"blockquoteData\": {\n              \"ref\": \"BlockquoteData\",\n              \"metadata\": {\n                \"description\": \"Blockquote details.\"\n              }\n            },\n            \"style\": {\n              \"ref\": \"NodeStyle\",\n              \"metadata\": {\n                \"description\": \"Defines the blockquote style, such as padding and background color. \\n **Note:** This node requires the [`lineSpacing`](https://dev.wix.com/docs/ricos/getting-started/introduction#plugins) plugin to be enabled.\"\n              }\n            }\n          }\n        },\n        \"CODE_BLOCK\": {\n          \"metadata\": {\n            \"section\": \"Codeblock\",\n            \"tsRicosNode\": true,\n            \"features\": [\n              \"CODE_BLOCK\"\n            ],\n            \"examples\": [\n              \"code-block-multi-line\",\n              \"code-block-syntax-highlighting\"\n            ],\n            \"description\": \"Presents code snippets, markup, or other text-based content that should be displayed exactly as it appears, without any interpretation or formatting applied by the browser. When rendered, it is displayed as the code block with a monospaced font, preserving indentation, line breaks, and spacing as specified in the code.\"\n          },\n          \"properties\": {},\n          \"optionalProperties\": {\n            \"nodes\": {\n              \"elements\": {\n                \"ref\": \"TextNode\"\n              },\n              \"metadata\": {\n                \"tsRicosNodesChildren\": true,\n                \"description\": \"Child nodes to define a code block text.\"\n              }\n            },\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"codeBlockData\": {\n              \"ref\": \"CodeBlockData\",\n              \"metadata\": {\n                \"description\": \"Code block details.\"\n              }\n            },\n            \"style\": {\n              \"ref\": \"NodeStyle\",\n              \"metadata\": {\n                \"description\": \"Code block styling, such as padding and background color. \\n **Note:** This node requires the [`lineSpacing`](https://dev.wix.com/docs/ricos/getting-started/introduction#plugins) plugin to be enabled.\"\n              }\n            }\n          }\n        }\n      }\n    },\n    \"CollapsibleItemBodyNode\": {\n      \"metadata\": {\n        \"section\": \"Collapsible List\",\n        \"tsRicosNode\": true,\n        \"description\": \"Collapsible list item body.\"\n      },\n      \"properties\": {\n        \"type\": {\n          \"enum\": [\n            \"COLLAPSIBLE_ITEM_BODY\"\n          ],\n          \"metadata\": {\n            \"description\": \"Node type. \\n Must be `COLLAPSIBLE_ITEM_BODY`.\"\n          }\n        },\n        \"nodes\": {\n          \"elements\": {\n            \"ref\": \"CollapsibleItemBodyChildNode\"\n          },\n          \"metadata\": {\n            \"tsRicosNodesChildren\": true,\n            \"description\": \"Collapsible list item body child nodes.\",\n            \"validation\": {\n              \"minSize\": 1\n            }\n          }\n        }\n      },\n      \"optionalProperties\": {\n        \"id\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"format\": \"NODE_ID\",\n            \"description\": \"[Node ID](#node-ids).\"\n          }\n        }\n      }\n    },\n    \"CollapsibleItemBodyChildNode\": {\n      \"discriminator\": \"type\",\n      \"metadata\": {\n        \"section\": \"Collapsible List\",\n        \"refUnion\": {\n          \"PARAGRAPH\": \"ParagraphNode\",\n          \"HEADING\": \"HeadingNode\",\n          \"BULLETED_LIST\": \"BulletedListNode\",\n          \"ORDERED_LIST\": \"OrderedListNode\",\n          \"BLOCKQUOTE\": \"BlockquoteNode\",\n          \"AUDIO\": \"AudioNode\",\n          \"FILE\": \"FileNode\",\n          \"IMAGE\": \"ImageNode\",\n          \"VIDEO\": \"VideoNode\",\n          \"GIF\": \"GifNode\",\n          \"DIVIDER\": \"DividerNode\",\n          \"CODE_BLOCK\": \"CodeBlockNode\",\n          \"APP_EMBED\": \"AppEmbedNode\",\n          \"LINK_PREVIEW\": \"LinkPreviewNode\",\n          \"GALLERY\": \"GalleryNode\",\n          \"BUTTON\": \"ButtonNode\",\n          \"COLLAPSIBLE_LIST\": \"CollapsibleListNode\",\n          \"TABLE\": \"TableNode\",\n          \"EMBED\": \"EmbedNode\",\n          \"POLL\": \"PollNode\",\n          \"HTML\": \"HtmlNode\"\n        },\n        \"description\": \"Collapsible list item body.\"\n      },\n      \"mapping\": {\n        \"PARAGRAPH\": {\n          \"metadata\": {\n            \"section\": \"Paragraph\",\n            \"tsRicosNode\": true,\n            \"description\": \"Structures text content, providing a clear separation between different ideas or sections of text. Paragraphs are rendered with default styling that typically includes some space above and below the paragraph, making it visually distinct from the surrounding content.\",\n            \"examples\": [\n              \"paragraph\"\n            ]\n          },\n          \"properties\": {},\n          \"optionalProperties\": {\n            \"nodes\": {\n              \"elements\": {\n                \"ref\": \"TextNode\"\n              },\n              \"metadata\": {\n                \"tsRicosNodesChildren\": true,\n                \"description\": \"Paragraph children.\"\n              }\n            },\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"style\": {\n              \"ref\": \"NodeStyle\",\n              \"metadata\": {\n                \"description\": \"Vertical padding. \\n **Note:** This node requires the [`lineSpacing`](https://dev.wix.com/docs/ricos/getting-started/introduction#plugins) plugin to be enabled.\"\n              }\n            },\n            \"paragraphData\": {\n              \"ref\": \"ParagraphData\",\n              \"metadata\": {\n                \"description\": \"Paragraph node attributes.\"\n              }\n            }\n          }\n        },\n        \"HEADING\": {\n          \"metadata\": {\n            \"section\": \"Heading\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"headings-all-sizes\"\n            ],\n            \"description\": \"Indicates a heading or title of a section. There are 6 levels of headings, with `1` being the most prominent and `6` being the least.\"\n          },\n          \"properties\": {},\n          \"optionalProperties\": {\n            \"nodes\": {\n              \"elements\": {\n                \"ref\": \"TextNode\"\n              },\n              \"metadata\": {\n                \"tsRicosNodesChildren\": true,\n                \"description\": \"Child nodes to define the heading text.\"\n              }\n            },\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"style\": {\n              \"ref\": \"NodeStyle\",\n              \"metadata\": {\n                \"description\": \"Heading styling, such as padding and background color. \\n **Note:** This node requires the [`lineSpacing`](https://dev.wix.com/docs/ricos/getting-started/introduction#plugins) plugin to be enabled.\"\n              }\n            },\n            \"headingData\": {\n              \"ref\": \"HeadingData\",\n              \"metadata\": {\n                \"description\": \"Heading options.\"\n              }\n            }\n          }\n        },\n        \"BULLETED_LIST\": {\n          \"metadata\": {\n            \"section\": \"List\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"bulletedList\"\n            ],\n            \"description\": \"Bulleted list.\"\n          },\n          \"properties\": {\n            \"nodes\": {\n              \"elements\": {\n                \"ref\": \"ListItemNode\",\n                \"metadata\": {\n                  \"validation\": {\n                    \"minSize\": 1\n                  }\n                }\n              },\n              \"metadata\": {\n                \"tsRicosNodesChildren\": true,\n                \"description\": \"List items.\",\n                \"validation\": {\n                  \"minSize\": 1\n                }\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"bulletedListData\": {\n              \"ref\": \"BulletedListData\",\n              \"metadata\": {\n                \"description\": \"Bulleted list details.\"\n              }\n            }\n          }\n        },\n        \"ORDERED_LIST\": {\n          \"metadata\": {\n            \"section\": \"List\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"orderedList\"\n            ],\n            \"description\": \"Numbered list.\"\n          },\n          \"properties\": {\n            \"nodes\": {\n              \"elements\": {\n                \"ref\": \"ListItemNode\",\n                \"metadata\": {\n                  \"validation\": {\n                    \"minSize\": 1\n                  }\n                }\n              },\n              \"metadata\": {\n                \"tsRicosNodesChildren\": true,\n                \"description\": \"List items.\",\n                \"validation\": {\n                  \"minSize\": 1\n                }\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"orderedListData\": {\n              \"ref\": \"OrderedListData\",\n              \"metadata\": {\n                \"description\": \"Ordered list details.\"\n              }\n            }\n          }\n        },\n        \"BLOCKQUOTE\": {\n          \"metadata\": {\n            \"section\": \"Block quote\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"blockquote\"\n            ],\n            \"description\": \"Used to visually distinguish quoted or cited content from the surrounding text. When rendered, it displays as the quoted text with indentation or other styling to visually separate it from the surrounding content.\"\n          },\n          \"properties\": {\n            \"nodes\": {\n              \"elements\": {\n                \"ref\": \"ParagraphNode\"\n              },\n              \"metadata\": {\n                \"tsRicosNodesChildren\": true,\n                \"description\": \"Child nodes to define a blockquote paragraph.\",\n                \"validation\": {\n                  \"minSize\": 1,\n                  \"maxSize\": 1\n                }\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"blockquoteData\": {\n              \"ref\": \"BlockquoteData\",\n              \"metadata\": {\n                \"description\": \"Blockquote details.\"\n              }\n            },\n            \"style\": {\n              \"ref\": \"NodeStyle\",\n              \"metadata\": {\n                \"description\": \"Defines the blockquote style, such as padding and background color. \\n **Note:** This node requires the [`lineSpacing`](https://dev.wix.com/docs/ricos/getting-started/introduction#plugins) plugin to be enabled.\"\n              }\n            }\n          }\n        },\n        \"AUDIO\": {\n          \"metadata\": {\n            \"section\": \"Audio\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"audio-soundcloud\"\n            ],\n            \"features\": [\n              \"AUDIO\"\n            ],\n            \"description\": \"Embeds and plays audio content directly in a webpage. Users can interact with the controls to play, pause, rewind, and adjust the volume of the audio.\"\n          },\n          \"properties\": {\n            \"audioData\": {\n              \"ref\": \"AudioData\",\n              \"metadata\": {\n                \"description\": \"Audio details.\"\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"nodes\": {\n              \"metadata\": {\n                \"internal\": true,\n                \"tsRicosNodesChildren\": true\n              },\n              \"elements\": {\n                \"ref\": \"Never\"\n              }\n            }\n          }\n        },\n        \"FILE\": {\n          \"metadata\": {\n            \"section\": \"File\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"file\"\n            ],\n            \"features\": [\n              \"FILE\"\n            ],\n            \"description\": \"File that is uploaded and accessed in a page. Files can be different types of content, such as text documents, images, and videos.\"\n          },\n          \"properties\": {\n            \"fileData\": {\n              \"ref\": \"FileData\",\n              \"metadata\": {\n                \"description\": \"File details.\"\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"nodes\": {\n              \"metadata\": {\n                \"internal\": true,\n                \"tsRicosNodesChildren\": true\n              },\n              \"elements\": {\n                \"ref\": \"Never\"\n              }\n            }\n          }\n        },\n        \"IMAGE\": {\n          \"metadata\": {\n            \"section\": \"Image\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"image-id\",\n              \"image-url\"\n            ],\n            \"features\": [\n              \"IMAGE\"\n            ],\n            \"description\": \"Standalone images in a page.\"\n          },\n          \"properties\": {\n            \"imageData\": {\n              \"ref\": \"ImageData\",\n              \"metadata\": {\n                \"description\": \"Image options.\"\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"nodes\": {\n              \"metadata\": {\n                \"tsRicosNodesChildren\": true,\n                \"description\": \"Child nodes to define an image caption.\"\n              },\n              \"elements\": {\n                \"ref\": \"CaptionNode\"\n              }\n            }\n          }\n        },\n        \"VIDEO\": {\n          \"metadata\": {\n            \"section\": \"Video\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"video-url\",\n              \"video-wix\"\n            ],\n            \"features\": [\n              \"VIDEO\"\n            ],\n            \"description\": \"Embeds and plays video content directly in a page. When rendered, it is displayed as the video player with the specified video file. Users can interact with the controls to play, pause, rewind, and adjust the volume of the video.\"\n          },\n          \"properties\": {\n            \"videoData\": {\n              \"ref\": \"VideoData\",\n              \"metadata\": {\n                \"description\": \"Video details.\"\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"nodes\": {\n              \"metadata\": {\n                \"tsRicosNodesChildren\": true,\n                \"description\": \"Child nodes to define a video caption.\"\n              },\n              \"elements\": {\n                \"ref\": \"CaptionNode\"\n              }\n            }\n          }\n        },\n        \"GIF\": {\n          \"metadata\": {\n            \"section\": \"Gif\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"gif-basic\"\n            ],\n            \"features\": [\n              \"GIF\"\n            ],\n            \"description\": \"GIF images.\"\n          },\n          \"properties\": {\n            \"gifData\": {\n              \"ref\": \"GIFData\",\n              \"metadata\": {\n                \"description\": \"GIF details.\"\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"nodes\": {\n              \"metadata\": {\n                \"tsRicosNodesChildren\": true,\n                \"description\": \"Child nodes to define a GIF caption.\"\n              },\n              \"elements\": {\n                \"ref\": \"CaptionNode\"\n              }\n            }\n          }\n        },\n        \"DIVIDER\": {\n          \"metadata\": {\n            \"section\": \"Divider\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"divider\"\n            ],\n            \"features\": [\n              \"DIVIDER\"\n            ],\n            \"description\": \"Horizontal line between different content.\"\n          },\n          \"properties\": {},\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"dividerData\": {\n              \"ref\": \"DividerData\",\n              \"metadata\": {\n                \"description\": \"Divider details.\"\n              }\n            },\n            \"nodes\": {\n              \"metadata\": {\n                \"internal\": true,\n                \"tsRicosNodesChildren\": true\n              },\n              \"elements\": {\n                \"ref\": \"Never\"\n              }\n            }\n          }\n        },\n        \"CODE_BLOCK\": {\n          \"metadata\": {\n            \"section\": \"Codeblock\",\n            \"tsRicosNode\": true,\n            \"features\": [\n              \"CODE_BLOCK\"\n            ],\n            \"examples\": [\n              \"code-block-multi-line\",\n              \"code-block-syntax-highlighting\"\n            ],\n            \"description\": \"Presents code snippets, markup, or other text-based content that should be displayed exactly as it appears, without any interpretation or formatting applied by the browser. When rendered, it is displayed as the code block with a monospaced font, preserving indentation, line breaks, and spacing as specified in the code.\"\n          },\n          \"properties\": {},\n          \"optionalProperties\": {\n            \"nodes\": {\n              \"elements\": {\n                \"ref\": \"TextNode\"\n              },\n              \"metadata\": {\n                \"tsRicosNodesChildren\": true,\n                \"description\": \"Child nodes to define a code block text.\"\n              }\n            },\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"codeBlockData\": {\n              \"ref\": \"CodeBlockData\",\n              \"metadata\": {\n                \"description\": \"Code block details.\"\n              }\n            },\n            \"style\": {\n              \"ref\": \"NodeStyle\",\n              \"metadata\": {\n                \"description\": \"Code block styling, such as padding and background color. \\n **Note:** This node requires the [`lineSpacing`](https://dev.wix.com/docs/ricos/getting-started/introduction#plugins) plugin to be enabled.\"\n              }\n            }\n          }\n        },\n        \"APP_EMBED\": {\n          \"metadata\": {\n            \"section\": \"App Embed\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"app-embed-event\",\n              \"app-embed-booking\"\n            ],\n            \"features\": [\n              \"APP_EMBED\"\n            ],\n            \"description\": \"Embeds an external content preview from Wix business solutions. For example, you can embed previews from the Wix Bookings, Wix Stores and Wix Events apps.\"\n          },\n          \"properties\": {\n            \"appEmbedData\": {\n              \"ref\": \"AppEmbedData\",\n              \"metadata\": {\n                \"description\": \"Embedded Wix app.\"\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"nodes\": {\n              \"metadata\": {\n                \"internal\": true,\n                \"tsRicosNodesChildren\": true\n              },\n              \"elements\": {\n                \"ref\": \"Never\"\n              }\n            }\n          }\n        },\n        \"LINK_PREVIEW\": {\n          \"metadata\": {\n            \"section\": \"Link Preview\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"link-preview\"\n            ],\n            \"features\": [\n              \"LINK_PREVIEW\"\n            ],\n            \"description\": \"Preview or summary of a webpage. Link previews include elements such as the title of the linked page, a brief description or excerpt of the content, and sometimes a thumbnail image or other relevant information.\"\n          },\n          \"properties\": {\n            \"linkPreviewData\": {\n              \"ref\": \"LinkPreviewData\",\n              \"metadata\": {\n                \"description\": \"Link preview details.\"\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"nodes\": {\n              \"metadata\": {\n                \"internal\": true,\n                \"tsRicosNodesChildren\": true\n              },\n              \"elements\": {\n                \"ref\": \"Never\"\n              }\n            }\n          }\n        },\n        \"GALLERY\": {\n          \"metadata\": {\n            \"section\": \"Gallery\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"gallery\"\n            ],\n            \"features\": [\n              \"GALLERY\"\n            ],\n            \"description\": \"Collection of images displayed together.\"\n          },\n          \"properties\": {\n            \"galleryData\": {\n              \"ref\": \"GalleryData\",\n              \"metadata\": {\n                \"description\": \"Gallery node details.\"\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"nodes\": {\n              \"metadata\": {\n                \"internal\": true,\n                \"tsRicosNodesChildren\": true\n              },\n              \"elements\": {\n                \"ref\": \"Never\"\n              }\n            }\n          }\n        },\n        \"BUTTON\": {\n          \"metadata\": {\n            \"section\": \"Button\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"button-link\",\n              \"button-action\",\n              \"button-styled\"\n            ],\n            \"features\": [\n              \"BUTTON\"\n            ],\n            \"description\": \"Button to trigger an action.\"\n          },\n          \"properties\": {\n            \"buttonData\": {\n              \"ref\": \"ButtonData\",\n              \"metadata\": {\n                \"description\": \"Button details.\"\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"nodes\": {\n              \"metadata\": {\n                \"internal\": true,\n                \"tsRicosNodesChildren\": true\n              },\n              \"elements\": {\n                \"ref\": \"Never\"\n              }\n            }\n          }\n        },\n        \"COLLAPSIBLE_LIST\": {\n          \"metadata\": {\n            \"section\": \"Collapsible List\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"collapsible-list\"\n            ],\n            \"features\": [\n              \"COLLAPSIBLE_LIST\"\n            ],\n            \"description\": \"List of items where each item can be expanded or collapsed.\"\n          },\n          \"properties\": {\n            \"nodes\": {\n              \"elements\": {\n                \"ref\": \"CollapsibleItemNode\"\n              },\n              \"metadata\": {\n                \"tsRicosNodesChildren\": true,\n                \"description\": \"Collapsible list child nodes.\",\n                \"validation\": {\n                  \"minSize\": 1\n                }\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"collapsibleListData\": {\n              \"ref\": \"CollapsibleListData\",\n              \"metadata\": {\n                \"description\": \"Collapsible list details.\"\n              }\n            }\n          }\n        },\n        \"TABLE\": {\n          \"metadata\": {\n            \"section\": \"Table\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"table\"\n            ],\n            \"features\": [\n              \"TABLE\"\n            ],\n            \"description\": \"Data in rows and columns.\"\n          },\n          \"properties\": {\n            \"nodes\": {\n              \"elements\": {\n                \"ref\": \"TableRowNode\"\n              },\n              \"metadata\": {\n                \"tsRicosNodesChildren\": true,\n                \"description\": \"Child nodes to define table rows.\",\n                \"validation\": {\n                  \"minSize\": 1\n                }\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"tableData\": {\n              \"ref\": \"TableData\",\n              \"metadata\": {\n                \"description\": \"Table details.\"\n              }\n            }\n          }\n        },\n        \"EMBED\": {\n          \"metadata\": {\n            \"section\": \"Embed\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"embed\"\n            ],\n            \"features\": [\n              \"EMBED\"\n            ],\n            \"description\": \"Embedded content when you include a link to a resource, without having to parse the resource directly. This provides a standardized way for web developers to include content such as videos, images, and other multimedia elements from supported providers. To learn more, see [oembed](https://oembed.com/).\"\n          },\n          \"properties\": {\n            \"embedData\": {\n              \"ref\": \"EmbedData\",\n              \"metadata\": {\n                \"description\": \"oEmbed details.\"\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"nodes\": {\n              \"metadata\": {\n                \"internal\": true,\n                \"tsRicosNodesChildren\": true\n              },\n              \"elements\": {\n                \"ref\": \"Never\"\n              }\n            }\n          }\n        },\n        \"POLL\": {\n          \"metadata\": {\n            \"section\": \"Poll\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"poll\"\n            ],\n            \"features\": [\n              \"POLL\"\n            ],\n            \"description\": \"Provides a question with several options, where the options' cumulative total may be shown.\"\n          },\n          \"properties\": {\n            \"pollData\": {\n              \"ref\": \"PollData\",\n              \"metadata\": {\n                \"description\": \"Poll details.\"\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"nodes\": {\n              \"metadata\": {\n                \"internal\": true,\n                \"tsRicosNodesChildren\": true\n              },\n              \"elements\": {\n                \"ref\": \"Never\"\n              }\n            }\n          }\n        },\n        \"HTML\": {\n          \"metadata\": {\n            \"section\": \"Html\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"html-code\",\n              \"html-url\"\n            ],\n            \"features\": [\n              \"HTML\"\n            ],\n            \"description\": \"HTML block that incorporates external content, such as interactive maps or entire web pages.\"\n          },\n          \"properties\": {\n            \"htmlData\": {\n              \"ref\": \"HTMLData\",\n              \"metadata\": {\n                \"description\": \"HTML details.\"\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"nodes\": {\n              \"metadata\": {\n                \"internal\": true,\n                \"tsRicosNodesChildren\": true\n              },\n              \"elements\": {\n                \"ref\": \"Never\"\n              }\n            }\n          }\n        }\n      }\n    },\n    \"DividerNode\": {\n      \"metadata\": {\n        \"section\": \"Divider\",\n        \"tsRicosNode\": true,\n        \"examples\": [\n          \"divider\"\n        ],\n        \"features\": [\n          \"DIVIDER\"\n        ],\n        \"description\": \"Horizontal line between different content.\"\n      },\n      \"properties\": {\n        \"type\": {\n          \"enum\": [\n            \"DIVIDER\"\n          ],\n          \"metadata\": {\n            \"description\": \"Node type. \\n Must be `DIVIDER`.\"\n          }\n        }\n      },\n      \"optionalProperties\": {\n        \"id\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"format\": \"NODE_ID\",\n            \"description\": \"[Node ID](#node-ids).\"\n          }\n        },\n        \"dividerData\": {\n          \"ref\": \"DividerData\",\n          \"metadata\": {\n            \"description\": \"Divider details.\"\n          }\n        },\n        \"nodes\": {\n          \"metadata\": {\n            \"internal\": true,\n            \"tsRicosNodesChildren\": true\n          },\n          \"elements\": {\n            \"ref\": \"Never\"\n          }\n        }\n      }\n    },\n    \"DividerData\": {\n      \"optionalProperties\": {\n        \"containerData\": {\n          \"ref\": \"PluginContainerData\",\n          \"metadata\": {\n            \"description\": \"Divider container styling.\"\n          }\n        },\n        \"lineStyle\": {\n          \"enum\": [\n            \"SINGLE\",\n            \"DOUBLE\",\n            \"DASHED\",\n            \"DOTTED\"\n          ],\n          \"metadata\": {\n            \"emitEnum\": \"DividerData_LineStyle\",\n            \"description\": \"Divider line style.\"\n          }\n        },\n        \"width\": {\n          \"enum\": [\n            \"LARGE\",\n            \"MEDIUM\",\n            \"SMALL\"\n          ],\n          \"metadata\": {\n            \"emitEnum\": \"DividerData_Width\",\n            \"description\": \"Divider width.\"\n          }\n        },\n        \"alignment\": {\n          \"enum\": [\n            \"CENTER\",\n            \"LEFT\",\n            \"RIGHT\"\n          ],\n          \"metadata\": {\n            \"emitEnum\": \"DividerData_Alignment\",\n            \"description\": \"Divider alignment.\"\n          }\n        }\n      },\n      \"metadata\": {\n        \"section\": \"Divider\"\n      }\n    },\n    \"EmbedNode\": {\n      \"metadata\": {\n        \"section\": \"Embed\",\n        \"tsRicosNode\": true,\n        \"examples\": [\n          \"embed\"\n        ],\n        \"features\": [\n          \"EMBED\"\n        ],\n        \"description\": \"Embedded content when you include a link to a resource, without having to parse the resource directly. This provides a standardized way for web developers to include content such as videos, images, and other multimedia elements from supported providers. To learn more, see [oembed](https://oembed.com/).\"\n      },\n      \"properties\": {\n        \"type\": {\n          \"enum\": [\n            \"EMBED\"\n          ],\n          \"metadata\": {\n            \"description\": \"Node type. \\n Must be `EMBED`.\"\n          }\n        },\n        \"embedData\": {\n          \"ref\": \"EmbedData\",\n          \"metadata\": {\n            \"description\": \"oEmbed details.\"\n          }\n        }\n      },\n      \"optionalProperties\": {\n        \"id\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"format\": \"NODE_ID\",\n            \"description\": \"[Node ID](#node-ids).\"\n          }\n        },\n        \"nodes\": {\n          \"metadata\": {\n            \"internal\": true,\n            \"tsRicosNodesChildren\": true\n          },\n          \"elements\": {\n            \"ref\": \"Never\"\n          }\n        }\n      }\n    },\n    \"EmbedData\": {\n      \"optionalProperties\": {\n        \"containerData\": {\n          \"metadata\": {\n            \"description\": \"oEmbed node container styling.\"\n          },\n          \"ref\": \"PluginContainerData\"\n        },\n        \"oembed\": {\n          \"metadata\": {\n            \"description\": \"[oEmbed](https://www.oembed.com) details.\"\n          },\n          \"ref\": \"Oembed\"\n        },\n        \"src\": {\n          \"metadata\": {\n            \"description\": \"Original asset source.\"\n          },\n          \"type\": \"string\"\n        }\n      },\n      \"metadata\": {\n        \"section\": \"Embed\"\n      }\n    },\n    \"Oembed\": {\n      \"optionalProperties\": {\n        \"type\": {\n          \"metadata\": {\n            \"description\": \"Resource type.\"\n          },\n          \"type\": \"string\"\n        },\n        \"width\": {\n          \"metadata\": {\n            \"description\": \"Width of the resource specified in the `url` field in pixels.\"\n          },\n          \"type\": \"int32\"\n        },\n        \"height\": {\n          \"metadata\": {\n            \"description\": \"Height of the resource specified in the `url` field in pixels.\"\n          },\n          \"type\": \"int32\"\n        },\n        \"title\": {\n          \"metadata\": {\n            \"description\": \"Resource title.\"\n          },\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"metadata\": {\n            \"description\": \"Resource source URL.\"\n          },\n          \"type\": \"string\"\n        },\n        \"html\": {\n          \"metadata\": {\n            \"description\": \"HTML to embed a video player. The HTML should have no padding or margins.\"\n          },\n          \"type\": \"string\"\n        },\n        \"authorName\": {\n          \"metadata\": {\n            \"description\": \"Name of the author or owner of the resource.\"\n          },\n          \"type\": \"string\"\n        },\n        \"authorUrl\": {\n          \"metadata\": {\n            \"description\": \"URL for the author or owner of the resource.\"\n          },\n          \"type\": \"string\"\n        },\n        \"providerName\": {\n          \"metadata\": {\n            \"description\": \"Name of the resource provider.\"\n          },\n          \"type\": \"string\"\n        },\n        \"providerUrl\": {\n          \"metadata\": {\n            \"description\": \"URL for the resource provider.\"\n          },\n          \"type\": \"string\"\n        },\n        \"thumbnailUrl\": {\n          \"metadata\": {\n            \"description\": \"Thumbnail image URL for the resource. If defined, `thumbnailWidth` and `thumbnailHeight` must also be defined.\"\n          },\n          \"type\": \"string\"\n        },\n        \"thumbnailWidth\": {\n          \"metadata\": {\n            \"description\": \"Resource's thumbnail image width. If defined, `thumbnailUrl` and `thumbnailHeight` must also be defined.\"\n          },\n          \"type\": \"string\"\n        },\n        \"thumbnailHeight\": {\n          \"metadata\": {\n            \"description\": \"Resource's thumbnail image height. If defined, `thumbnailUrl` and `thumbnailWidth`must also be defined.\"\n          },\n          \"type\": \"string\"\n        },\n        \"videoUrl\": {\n          \"metadata\": {\n            \"description\": \"Embedded video URL.\"\n          },\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"metadata\": {\n            \"description\": \"The oEmbed version number. Must be `1.0`.\"\n          },\n          \"type\": \"string\"\n        }\n      },\n      \"metadata\": {\n        \"section\": \"Embed\"\n      }\n    },\n    \"ExternalNode\": {\n      \"metadata\": {\n        \"section\": \"External\",\n        \"tsRicosNode\": true,\n        \"internal\": true\n      },\n      \"properties\": {\n        \"type\": {\n          \"enum\": [\n            \"EXTERNAL\"\n          ]\n        }\n      },\n      \"optionalProperties\": {\n        \"id\": {\n          \"type\": \"string\"\n        },\n        \"htmlData\": {},\n        \"externalData\": {\n          \"values\": {}\n        },\n        \"nodes\": {\n          \"metadata\": {\n            \"internal\": true,\n            \"tsRicosNodesChildren\": true\n          },\n          \"elements\": {\n            \"ref\": \"Never\"\n          }\n        }\n      }\n    },\n    \"FileNode\": {\n      \"metadata\": {\n        \"section\": \"File\",\n        \"tsRicosNode\": true,\n        \"examples\": [\n          \"file\"\n        ],\n        \"features\": [\n          \"FILE\"\n        ],\n        \"description\": \"File that is uploaded and accessed in a page. Files can be different types of content, such as text documents, images, and videos.\"\n      },\n      \"properties\": {\n        \"type\": {\n          \"enum\": [\n            \"FILE\"\n          ],\n          \"metadata\": {\n            \"description\": \"Node type. \\n Must be `FILE`.\"\n          }\n        },\n        \"fileData\": {\n          \"ref\": \"FileData\",\n          \"metadata\": {\n            \"description\": \"File details.\"\n          }\n        }\n      },\n      \"optionalProperties\": {\n        \"id\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"format\": \"NODE_ID\",\n            \"description\": \"[Node ID](#node-ids).\"\n          }\n        },\n        \"nodes\": {\n          \"metadata\": {\n            \"internal\": true,\n            \"tsRicosNodesChildren\": true\n          },\n          \"elements\": {\n            \"ref\": \"Never\"\n          }\n        }\n      }\n    },\n    \"FileData\": {\n      \"optionalProperties\": {\n        \"containerData\": {\n          \"metadata\": {\n            \"description\": \"File container styling.\"\n          },\n          \"ref\": \"PluginContainerData\"\n        },\n        \"src\": {\n          \"metadata\": {\n            \"description\": \"File data source.\"\n          },\n          \"ref\": \"FileSource\"\n        },\n        \"name\": {\n          \"metadata\": {\n            \"description\": \"File name.\"\n          },\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"metadata\": {\n            \"description\": \"File type.\"\n          },\n          \"type\": \"string\"\n        },\n        \"size\": {\n          \"metadata\": {\n            \"description\": \"Deprecated. Replaced by `sizeInKb`\",\n            \"deprecated\": true\n          },\n          \"type\": \"uint32\"\n        },\n        \"sizeInKb\": {\n          \"metadata\": {\n            \"description\": \"File size in KB.\"\n          },\n          \"type\": \"string\"\n        },\n        \"pdfSettings\": {\n          \"metadata\": {\n            \"description\": \"Settings for PDF files.\"\n          },\n          \"ref\": \"FileData_PDFSettings\"\n        },\n        \"mimeType\": {\n          \"metadata\": {\n            \"description\": \"File MIME type.\"\n          },\n          \"type\": \"string\"\n        },\n        \"path\": {\n          \"metadata\": {\n            \"description\": \"File path.\"\n          },\n          \"type\": \"string\"\n        }\n      },\n      \"metadata\": {\n        \"section\": \"File\"\n      }\n    },\n    \"FileData_PDFSettings\": {\n      \"optionalProperties\": {\n        \"viewMode\": {\n          \"metadata\": {\n            \"emitEnum\": \"FileData_PDFSettings_ViewMode\",\n            \"description\": \"PDF view mode. Supported values: \\n - `NONE`: PDF isn't displayed. \\n - `FULL`: Full PDF page view is displayed. \\n - `MINI`: Mini view of the PDF is displayed.\"\n          },\n          \"enum\": [\n            \"NONE\",\n            \"FULL\",\n            \"MINI\"\n          ]\n        },\n        \"disableDownload\": {\n          \"metadata\": {\n            \"description\": \"Whether the PDF download button is disabled. \\n Default: `false`\"\n          },\n          \"type\": \"boolean\"\n        },\n        \"disablePrint\": {\n          \"metadata\": {\n            \"description\": \"Whether the PDF print button is disabled. \\n Default: `false`\"\n          },\n          \"type\": \"boolean\"\n        }\n      },\n      \"metadata\": {\n        \"section\": \"File\"\n      }\n    },\n    \"GalleryNode\": {\n      \"metadata\": {\n        \"section\": \"Gallery\",\n        \"tsRicosNode\": true,\n        \"examples\": [\n          \"gallery\"\n        ],\n        \"features\": [\n          \"GALLERY\"\n        ],\n        \"description\": \"Collection of images displayed together.\"\n      },\n      \"properties\": {\n        \"type\": {\n          \"enum\": [\n            \"GALLERY\"\n          ],\n          \"metadata\": {\n            \"description\": \"Node type. \\n Must be `GALLERY`.\"\n          }\n        },\n        \"galleryData\": {\n          \"ref\": \"GalleryData\",\n          \"metadata\": {\n            \"description\": \"Gallery node details.\"\n          }\n        }\n      },\n      \"optionalProperties\": {\n        \"id\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"format\": \"NODE_ID\",\n            \"description\": \"[Node ID](#node-ids).\"\n          }\n        },\n        \"nodes\": {\n          \"metadata\": {\n            \"internal\": true,\n            \"tsRicosNodesChildren\": true\n          },\n          \"elements\": {\n            \"ref\": \"Never\"\n          }\n        }\n      }\n    },\n    \"GalleryData\": {\n      \"properties\": {\n        \"items\": {\n          \"elements\": {\n            \"ref\": \"GalleryData_Item\"\n          },\n          \"metadata\": {\n            \"description\": \"Gallery items details.\",\n            \"validation\": {\n              \"minSize\": 1\n            }\n          }\n        }\n      },\n      \"optionalProperties\": {\n        \"containerData\": {\n          \"ref\": \"PluginContainerData\",\n          \"metadata\": {\n            \"description\": \"Gallery container styling.\"\n          }\n        },\n        \"options\": {\n          \"ref\": \"GalleryOptions\",\n          \"metadata\": {\n            \"description\": \"Gallery appearance options.\"\n          }\n        },\n        \"disableExpand\": {\n          \"type\": \"boolean\",\n          \"metadata\": {\n            \"description\": \"Whether the expand button is disabled. \\nDefault: `false`\"\n          }\n        },\n        \"disableDownload\": {\n          \"type\": \"boolean\",\n          \"metadata\": {\n            \"description\": \"Whether the download button is disabled. \\nDefault: `false`\"\n          }\n        }\n      },\n      \"metadata\": {\n        \"section\": \"Gallery\"\n      }\n    },\n    \"GalleryOptions\": {\n      \"optionalProperties\": {\n        \"layout\": {\n          \"ref\": \"GalleryOptions_Layout\",\n          \"metadata\": {\n            \"description\": \"Gallery layout.\"\n          }\n        },\n        \"item\": {\n          \"ref\": \"GalleryOptions_ItemStyle\",\n          \"metadata\": {\n            \"description\": \"Styling for gallery items.\"\n          }\n        },\n        \"thumbnails\": {\n          \"ref\": \"GalleryOptions_Thumbnails\",\n          \"metadata\": {\n            \"description\": \"Styling for gallery thumbnail images.\"\n          }\n        }\n      },\n      \"metadata\": {\n        \"section\": \"Gallery\"\n      }\n    },\n    \"GalleryOptions_Layout\": {\n      \"optionalProperties\": {\n        \"type\": {\n          \"metadata\": {\n            \"emitEnum\": \"GalleryOptions_Layout_Type\",\n            \"description\": \"Gallery layout. Supported values: <br> - `COLLAGE`: Presents images in various sizes and positions, creating an artistic or dynamic layout. <br> - `MASONRY`: Grid-based design that places items in optimal positions based on available vertical space, creating an arrangement where items of varying heights fit together like bricks in a wall. <br> - `GRID`: A layout structure that organizes items into rows and columns, creating a uniform arrangement of images. <br> - `THUMBNAIL`: Smaller, scaled-down version of an image that serves as a preview. <br> - `SLIDER`: Component that allows users to browse through a set of images by sliding or swiping through them, typically in a confined viewing area. <br> - `SLIDESHOW`: A component that automatically or manually transitions through a set of images in a designated area. <br> - `PANORAMA`: Wide-angle or 360-degree image that allows users to view an extended horizontal view of a scene. <br> - `COLUMN`: Arrangement of the gallery items in vertical sections. <br> - `MAGIC`: Visually stunning, dynamic effects that enhance the user experience. <br> - `FULLSIZE`: A layout where each image or item is displayed at its full size, sometimes  taking up the entire viewport or a significant portion of the screen.\"\n          },\n          \"enum\": [\n            \"COLLAGE\",\n            \"MASONRY\",\n            \"GRID\",\n            \"THUMBNAIL\",\n            \"SLIDER\",\n            \"SLIDESHOW\",\n            \"PANORAMA\",\n            \"COLUMN\",\n            \"MAGIC\",\n            \"FULLSIZE\"\n          ]\n        },\n        \"horizontalScroll\": {\n          \"type\": \"boolean\",\n          \"metadata\": {\n            \"description\": \"Whether the horizontal scroll is enabled. \\nDefault: `true`, unless the `type` field is set to `GRID` or `COLLAGE`.\"\n          }\n        },\n        \"orientation\": {\n          \"metadata\": {\n            \"description\": \"Gallery orientation.\",\n            \"emitEnum\": \"GalleryOptions_Layout_Orientation\"\n          },\n          \"enum\": [\n            \"ROWS\",\n            \"COLUMNS\"\n          ]\n        },\n        \"numberOfColumns\": {\n          \"type\": \"int32\",\n          \"metadata\": {\n            \"description\": \"Number of columns to display on computer screens.\"\n          }\n        },\n        \"mobileNumberOfColumns\": {\n          \"type\": \"int32\",\n          \"metadata\": {\n            \"description\": \"Number of columns to display on mobile phone screens.\"\n          }\n        }\n      },\n      \"metadata\": {\n        \"section\": \"Gallery\"\n      }\n    },\n    \"GalleryOptions_ItemStyle\": {\n      \"optionalProperties\": {\n        \"targetSize\": {\n          \"type\": \"int32\",\n          \"metadata\": {\n            \"description\": \"Dimensions for each gallery item in pixels. Behavior may change with gallery type.\"\n          }\n        },\n        \"ratio\": {\n          \"type\": \"float64\",\n          \"metadata\": {\n            \"description\": \"Height to width ratio.\"\n          }\n        },\n        \"crop\": {\n          \"metadata\": {\n            \"description\": \"Cropping strategy. Supported values: <br> - `FILL`: Each item in the gallery is cropped and resized to completely fill its container. <br> - `FIT`: Each item in the gallery is resized to fit exactly in its container without cropping.\",\n            \"emitEnum\": \"GalleryOptions_ItemStyle_Crop\"\n          },\n          \"enum\": [\n            \"FILL\",\n            \"FIT\"\n          ]\n        },\n        \"spacing\": {\n          \"type\": \"int32\",\n          \"metadata\": {\n            \"description\": \"Spacing between gallery items in pixels.\"\n          }\n        }\n      },\n      \"metadata\": {\n        \"section\": \"Gallery\"\n      }\n    },\n    \"GalleryOptions_Thumbnails\": {\n      \"optionalProperties\": {\n        \"placement\": {\n          \"metadata\": {\n            \"emitEnum\": \"GalleryOptions_Thumbnails_Alignment\",\n            \"description\": \"Thumbnail alignment.\"\n          },\n          \"enum\": [\n            \"TOP\",\n            \"RIGHT\",\n            \"BOTTOM\",\n            \"LEFT\",\n            \"NONE\"\n          ]\n        },\n        \"spacing\": {\n          \"type\": \"int32\",\n          \"metadata\": {\n            \"description\": \"Spacing between thumbnails in pixels.\"\n          }\n        }\n      },\n      \"metadata\": {\n        \"section\": \"Gallery\"\n      }\n    },\n    \"GalleryData_Item\": {\n      \"metadata\": {\n        \"section\": \"Gallery\",\n        \"oneOf\": {\n          \"strict\": true,\n          \"properties\": [\n            \"image\",\n            \"video\"\n          ]\n        }\n      },\n      \"optionalProperties\": {\n        \"title\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"description\": \"Item title.\"\n          }\n        },\n        \"altText\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"description\": \"Item's alternative text.\"\n          }\n        },\n        \"image\": {\n          \"ref\": \"GalleryData_Item_Image\",\n          \"metadata\": {\n            \"description\": \"Image item.\"\n          }\n        },\n        \"video\": {\n          \"ref\": \"GalleryData_Item_Video\",\n          \"metadata\": {\n            \"description\": \"Video item.\"\n          }\n        }\n      }\n    },\n    \"GalleryData_Item_Video\": {\n      \"properties\": {\n        \"media\": {\n          \"ref\": \"Media\",\n          \"metadata\": {\n            \"description\": \"Video file details.\"\n          }\n        }\n      },\n      \"optionalProperties\": {\n        \"thumbnail\": {\n          \"ref\": \"Media\",\n          \"metadata\": {\n            \"description\": \"Video thumbnail file details.\"\n          }\n        }\n      },\n      \"metadata\": {\n        \"section\": \"Gallery\"\n      }\n    },\n    \"GalleryData_Item_Image\": {\n      \"properties\": {\n        \"media\": {\n          \"ref\": \"Media\",\n          \"metadata\": {\n            \"description\": \"Image file details.\"\n          }\n        }\n      },\n      \"optionalProperties\": {\n        \"link\": {\n          \"ref\": \"Link\",\n          \"metadata\": {\n            \"description\": \"Link details for images, if relevant.\"\n          }\n        }\n      },\n      \"metadata\": {\n        \"section\": \"Gallery\"\n      }\n    },\n    \"GifNode\": {\n      \"metadata\": {\n        \"section\": \"Gif\",\n        \"tsRicosNode\": true,\n        \"examples\": [\n          \"gif-basic\"\n        ],\n        \"features\": [\n          \"GIF\"\n        ],\n        \"description\": \"GIF images.\"\n      },\n      \"properties\": {\n        \"type\": {\n          \"enum\": [\n            \"GIF\"\n          ],\n          \"metadata\": {\n            \"description\": \"Node type. \\n Must be `GIF`.\"\n          }\n        },\n        \"gifData\": {\n          \"ref\": \"GIFData\",\n          \"metadata\": {\n            \"description\": \"GIF details.\"\n          }\n        }\n      },\n      \"optionalProperties\": {\n        \"id\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"format\": \"NODE_ID\",\n            \"description\": \"[Node ID](#node-ids).\"\n          }\n        },\n        \"nodes\": {\n          \"metadata\": {\n            \"tsRicosNodesChildren\": true,\n            \"description\": \"Child nodes to define a GIF caption.\"\n          },\n          \"elements\": {\n            \"ref\": \"CaptionNode\"\n          }\n        }\n      }\n    },\n    \"GIFData\": {\n      \"optionalProperties\": {\n        \"containerData\": {\n          \"ref\": \"PluginContainerData\",\n          \"metadata\": {\n            \"description\": \"GIF container styling.\"\n          }\n        },\n        \"original\": {\n          \"metadata\": {\n            \"description\": \"Source for the full size GIF.\"\n          },\n          \"ref\": \"GIF\"\n        },\n        \"downsized\": {\n          \"metadata\": {\n            \"description\": \"Source for the downsized GIF.\"\n          },\n          \"ref\": \"GIF\"\n        },\n        \"height\": {\n          \"type\": \"int32\",\n          \"metadata\": {\n            \"description\": \"Height in pixels.\"\n          }\n        },\n        \"width\": {\n          \"type\": \"int32\",\n          \"metadata\": {\n            \"description\": \"Width in pixels.\"\n          }\n        },\n        \"gifType\": {\n          \"enum\": [\n            \"NORMAL\",\n            \"STICKER\"\n          ],\n          \"metadata\": {\n            \"emitEnum\": \"GIFData_GIFType\",\n            \"description\": \"Type of GIF (Sticker or NORMAL). \\n Default: `NORMAL`\"\n          }\n        }\n      },\n      \"metadata\": {\n        \"section\": \"Gif\"\n      }\n    },\n    \"GIF\": {\n      \"optionalProperties\": {\n        \"gif\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"format\": \"WEB_URL\",\n            \"description\": \"GIF source URL.\"\n          }\n        },\n        \"mp4\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"format\": \"WEB_URL\",\n            \"description\": \"MP4 source URL.\"\n          }\n        },\n        \"still\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"format\": \"WEB_URL\",\n            \"description\": \"GIF thumbnail URL.\"\n          }\n        }\n      },\n      \"metadata\": {\n        \"section\": \"Gif\"\n      }\n    },\n    \"HtmlNode\": {\n      \"metadata\": {\n        \"section\": \"Html\",\n        \"tsRicosNode\": true,\n        \"examples\": [\n          \"html-code\",\n          \"html-url\"\n        ],\n        \"features\": [\n          \"HTML\"\n        ],\n        \"description\": \"HTML block that incorporates external content, such as interactive maps or entire web pages.\"\n      },\n      \"properties\": {\n        \"type\": {\n          \"enum\": [\n            \"HTML\"\n          ],\n          \"metadata\": {\n            \"description\": \"Node type. \\n Mst be `HTML`.\"\n          }\n        },\n        \"htmlData\": {\n          \"ref\": \"HTMLData\",\n          \"metadata\": {\n            \"description\": \"HTML details.\"\n          }\n        }\n      },\n      \"optionalProperties\": {\n        \"id\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"format\": \"NODE_ID\",\n            \"description\": \"[Node ID](#node-ids).\"\n          }\n        },\n        \"nodes\": {\n          \"metadata\": {\n            \"internal\": true,\n            \"tsRicosNodesChildren\": true\n          },\n          \"elements\": {\n            \"ref\": \"Never\"\n          }\n        }\n      }\n    },\n    \"HTMLData\": {\n      \"metadata\": {\n        \"section\": \"Html\",\n        \"oneOf\": {\n          \"properties\": [\n            \"url\",\n            \"html\"\n          ]\n        }\n      },\n      \"optionalProperties\": {\n        \"containerData\": {\n          \"metadata\": {\n            \"description\": \"HTML node container styling. Height property is irrelevant for HTML embeds when autoHeight is set to `true`.\"\n          },\n          \"ref\": \"PluginContainerData\"\n        },\n        \"source\": {\n          \"metadata\": {\n            \"description\": \"HTML code type. Possible values: \\n - `HTML`: HTML code. \\n - [`ADSENSE`](https://adsense.google.com/start/): Service provided by Google for rendering advertisements on web pages. \\n - `AI`: AI-generated HTML code.\",\n            \"emitEnum\": \"HTMLData_Source\"\n          },\n          \"enum\": [\n            \"HTML\",\n            \"ADSENSE\",\n            \"AI\"\n          ]\n        },\n        \"url\": {\n          \"metadata\": {\n            \"description\": \"HTML code URL.\"\n          },\n          \"type\": \"string\"\n        },\n        \"html\": {\n          \"metadata\": {\n            \"description\": \"HTML code.\"\n          },\n          \"type\": \"string\"\n        },\n        \"autoHeight\": {\n          \"metadata\": {\n            \"description\": \"If container height is aligned with its content height. \\n Default: `true`\"\n          },\n          \"type\": \"boolean\"\n        }\n      }\n    },\n    \"ImageNode\": {\n      \"metadata\": {\n        \"section\": \"Image\",\n        \"tsRicosNode\": true,\n        \"examples\": [\n          \"image-id\",\n          \"image-url\"\n        ],\n        \"features\": [\n          \"IMAGE\"\n        ],\n        \"description\": \"Standalone images in a page.\"\n      },\n      \"properties\": {\n        \"type\": {\n          \"enum\": [\n            \"IMAGE\"\n          ],\n          \"metadata\": {\n            \"description\": \"Node type. \\n Must be `IMAGE`.\"\n          }\n        },\n        \"imageData\": {\n          \"ref\": \"ImageData\",\n          \"metadata\": {\n            \"description\": \"Image options.\"\n          }\n        }\n      },\n      \"optionalProperties\": {\n        \"id\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"format\": \"NODE_ID\",\n            \"description\": \"[Node ID](#node-ids).\"\n          }\n        },\n        \"nodes\": {\n          \"metadata\": {\n            \"tsRicosNodesChildren\": true,\n            \"description\": \"Child nodes to define an image caption.\"\n          },\n          \"elements\": {\n            \"ref\": \"CaptionNode\"\n          }\n        }\n      }\n    },\n    \"ImageData\": {\n      \"properties\": {\n        \"image\": {\n          \"ref\": \"Media\",\n          \"metadata\": {\n            \"description\": \"Image file details.\"\n          }\n        }\n      },\n      \"optionalProperties\": {\n        \"containerData\": {\n          \"ref\": \"PluginContainerData\",\n          \"metadata\": {\n            \"description\": \"Image container styling.\"\n          }\n        },\n        \"link\": {\n          \"ref\": \"Link\",\n          \"metadata\": {\n            \"description\": \"Image link details.\"\n          }\n        },\n        \"disableExpand\": {\n          \"type\": \"boolean\",\n          \"metadata\": {\n            \"description\": \"Whether the image expands to the full screen when clicked. \\n Default: `false`\"\n          }\n        },\n        \"altText\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"description\": \"Alternate text to display when the image doesn't load.\"\n          }\n        },\n        \"caption\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"description\": \"Deprecated. Use `CaptionNode` instead.\",\n            \"deprecated\": true\n          }\n        },\n        \"disableDownload\": {\n          \"type\": \"boolean\",\n          \"metadata\": {\n            \"description\": \"Whether the download image button is disabled. \\n Default: `false`\"\n          }\n        },\n        \"decorative\": {\n          \"type\": \"boolean\",\n          \"metadata\": {\n            \"description\": \"Whether the image is decorative and does not need an explanation. Defaults to `false`.\"\n          }\n        },\n        \"styles\": {\n          \"ref\": \"ImageData_Styles\",\n          \"metadata\": {\n            \"description\": \"Image styling.\"\n          }\n        }\n      },\n      \"metadata\": {\n        \"section\": \"Image\"\n      }\n    },\n    \"ImageData_Styles\": {\n      \"optionalProperties\": {\n        \"border\": {\n          \"ref\": \"ImageData_Styles_Border\",\n          \"metadata\": {\n            \"description\": \"Border properties.\"\n          }\n        }\n      },\n      \"metadata\": {\n        \"section\": \"Image\"\n      }\n    },\n    \"ImageData_Styles_Border\": {\n      \"optionalProperties\": {\n        \"width\": {\n          \"type\": \"int32\",\n          \"metadata\": {\n            \"description\": \"Border width in pixels.\"\n          }\n        },\n        \"color\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"format\": \"COLOR_HEX\",\n            \"description\": \"Border color as a hexadecimal value.\"\n          }\n        },\n        \"radius\": {\n          \"type\": \"int32\",\n          \"metadata\": {\n            \"description\": \"Border radius in pixels.\"\n          }\n        }\n      },\n      \"metadata\": {\n        \"section\": \"Image\"\n      }\n    },\n    \"LinkPreviewNode\": {\n      \"metadata\": {\n        \"section\": \"Link Preview\",\n        \"tsRicosNode\": true,\n        \"examples\": [\n          \"link-preview\"\n        ],\n        \"features\": [\n          \"LINK_PREVIEW\"\n        ],\n        \"description\": \"Preview or summary of a webpage. Link previews include elements such as the title of the linked page, a brief description or excerpt of the content, and sometimes a thumbnail image or other relevant information.\"\n      },\n      \"properties\": {\n        \"type\": {\n          \"enum\": [\n            \"LINK_PREVIEW\"\n          ],\n          \"metadata\": {\n            \"description\": \"Node type. \\n Must be `LINK_PREVIEW`.\"\n          }\n        },\n        \"linkPreviewData\": {\n          \"ref\": \"LinkPreviewData\",\n          \"metadata\": {\n            \"description\": \"Link preview details.\"\n          }\n        }\n      },\n      \"optionalProperties\": {\n        \"id\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"format\": \"NODE_ID\",\n            \"description\": \"[Node ID](#node-ids).\"\n          }\n        },\n        \"nodes\": {\n          \"metadata\": {\n            \"internal\": true,\n            \"tsRicosNodesChildren\": true\n          },\n          \"elements\": {\n            \"ref\": \"Never\"\n          }\n        }\n      }\n    },\n    \"LinkPreviewData\": {\n      \"optionalProperties\": {\n        \"containerData\": {\n          \"ref\": \"PluginContainerData\",\n          \"metadata\": {\n            \"description\": \"Link preview container styling.\"\n          }\n        },\n        \"link\": {\n          \"ref\": \"Link\",\n          \"metadata\": {\n            \"description\": \"Link details.\"\n          }\n        },\n        \"title\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"description\": \"Preview title.\"\n          }\n        },\n        \"thumbnailUrl\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"description\": \"Preview thumbnail URL.\"\n          }\n        },\n        \"description\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"description\": \"Preview description.\"\n          }\n        },\n        \"html\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"description\": \"Preview content as HTML.\"\n          }\n        },\n        \"styles\": {\n          \"ref\": \"LinkPreviewData_Styles\",\n          \"metadata\": {\n            \"description\": \"Styling for the link preview.\"\n          }\n        }\n      },\n      \"metadata\": {\n        \"section\": \"Link Preview\"\n      }\n    },\n    \"LinkPreviewData_Styles\": {\n      \"optionalProperties\": {\n        \"backgroundColor\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"format\": \"COLOR_HEX\",\n            \"description\": \"Background color as a hexadecimal value.\"\n          }\n        },\n        \"titleColor\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"format\": \"COLOR_HEX\",\n            \"description\": \"Title color as a hexadecimal value.\"\n          }\n        },\n        \"subtitleColor\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"format\": \"COLOR_HEX\",\n            \"description\": \"Subtitle color as a hexadecimal value.\"\n          }\n        },\n        \"linkColor\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"format\": \"COLOR_HEX\",\n            \"description\": \"Link color as a hexadecimal value.\"\n          }\n        },\n        \"borderWidth\": {\n          \"type\": \"int32\",\n          \"metadata\": {\n            \"description\": \"Border width in pixels.\"\n          }\n        },\n        \"borderRadius\": {\n          \"type\": \"int32\",\n          \"metadata\": {\n            \"description\": \"Border radius in pixels.\"\n          }\n        },\n        \"borderColor\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"format\": \"COLOR_HEX\",\n            \"description\": \"Border color as a hexadecimal value.\"\n          }\n        },\n        \"thumbnailPosition\": {\n          \"enum\": [\n            \"START\",\n            \"END\",\n            \"TOP\",\n            \"HIDDEN\"\n          ],\n          \"metadata\": {\n            \"description\": \"Position of thumbnail. Defaults to `START`.\"\n          }\n        }\n      },\n      \"metadata\": {\n        \"section\": \"Link Preview\"\n      }\n    },\n    \"PollNode\": {\n      \"metadata\": {\n        \"section\": \"Poll\",\n        \"tsRicosNode\": true,\n        \"examples\": [\n          \"poll\"\n        ],\n        \"features\": [\n          \"POLL\"\n        ],\n        \"description\": \"Provides a question with several options, where the options' cumulative total may be shown.\"\n      },\n      \"properties\": {\n        \"type\": {\n          \"enum\": [\n            \"POLL\"\n          ],\n          \"metadata\": {\n            \"description\": \"Node type. \\n Must be `POLL`.\"\n          }\n        },\n        \"pollData\": {\n          \"ref\": \"PollData\",\n          \"metadata\": {\n            \"description\": \"Poll details.\"\n          }\n        }\n      },\n      \"optionalProperties\": {\n        \"id\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"format\": \"NODE_ID\",\n            \"description\": \"[Node ID](#node-ids).\"\n          }\n        },\n        \"nodes\": {\n          \"metadata\": {\n            \"internal\": true,\n            \"tsRicosNodesChildren\": true\n          },\n          \"elements\": {\n            \"ref\": \"Never\"\n          }\n        }\n      }\n    },\n    \"PollData\": {\n      \"optionalProperties\": {\n        \"containerData\": {\n          \"ref\": \"PluginContainerData\",\n          \"metadata\": {\n            \"description\": \"Poll container styling.\"\n          }\n        },\n        \"poll\": {\n          \"ref\": \"PollData_Poll\",\n          \"metadata\": {\n            \"description\": \"Poll data.\"\n          }\n        },\n        \"layout\": {\n          \"ref\": \"PollData_Layout\",\n          \"metadata\": {\n            \"description\": \"Poll layout settings.\"\n          }\n        },\n        \"design\": {\n          \"ref\": \"PollData_Design\",\n          \"metadata\": {\n            \"description\": \"Poll design.\"\n          }\n        }\n      },\n      \"metadata\": {\n        \"section\": \"Poll\"\n      }\n    },\n    \"PollData_Poll\": {\n      \"optionalProperties\": {\n        \"id\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"format\": \"NODE_ID\",\n            \"description\": \"[Node ID](#node-ids).\"\n          }\n        },\n        \"title\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"description\": \"Poll title.\"\n          }\n        },\n        \"creatorId\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"description\": \"Poll creator ID.\"\n          }\n        },\n        \"image\": {\n          \"ref\": \"Media\",\n          \"metadata\": {\n            \"description\": \"Main poll image.\"\n          }\n        },\n        \"options\": {\n          \"elements\": {\n            \"ref\": \"PollData_Poll_Option\"\n          },\n          \"metadata\": {\n            \"description\": \"Poll details.\"\n          }\n        },\n        \"settings\": {\n          \"ref\": \"PollData_Poll_Settings\",\n          \"metadata\": {\n            \"description\": \"Poll display settings.\"\n          }\n        }\n      },\n      \"metadata\": {\n        \"section\": \"Poll\"\n      }\n    },\n    \"PollData_Poll_Option\": {\n      \"optionalProperties\": {\n        \"id\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"description\": \"Poll option ID.\"\n          }\n        },\n        \"title\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"description\": \"Poll option title\"\n          }\n        },\n        \"image\": {\n          \"ref\": \"Media\",\n          \"metadata\": {\n            \"description\": \"Image displayed with the option.\"\n          }\n        }\n      },\n      \"metadata\": {\n        \"section\": \"Poll\"\n      }\n    },\n    \"PollData_Poll_Settings\": {\n      \"optionalProperties\": {\n        \"permissions\": {\n          \"ref\": \"PollData_Poll_Settings_Permissions\",\n          \"metadata\": {\n            \"description\": \"Voting permission settings.\"\n          }\n        },\n        \"showVoters\": {\n          \"type\": \"boolean\",\n          \"metadata\": {\n            \"description\": \"Whether to display the voters in the vote results. \\n Default: `true`.\"\n          }\n        },\n        \"showVotesCount\": {\n          \"type\": \"boolean\",\n          \"metadata\": {\n            \"description\": \"Whether to display the vote count. \\n Default: `true`.\"\n          }\n        }\n      },\n      \"metadata\": {\n        \"section\": \"Poll\"\n      }\n    },\n    \"PollData_Poll_Settings_Permissions\": {\n      \"optionalProperties\": {\n        \"view\": {\n          \"metadata\": {\n            \"emitEnum\": \"PollData_Poll_Settings_Permissions_ViewRole\",\n            \"description\": \"Who can view the poll results.\"\n          },\n          \"enum\": [\n            \"CREATOR\",\n            \"VOTERS\",\n            \"EVERYONE\"\n          ]\n        },\n        \"vote\": {\n          \"metadata\": {\n            \"description\": \"Who can vote.\",\n            \"emitEnum\": \"PollData_Poll_Settings_Permissions_VoteRole\"\n          },\n          \"enum\": [\n            \"SITE_MEMBERS\",\n            \"ALL\"\n          ]\n        },\n        \"allowMultipleVotes\": {\n          \"type\": \"boolean\",\n          \"metadata\": {\n            \"description\": \"Whether a user can vote multiple times. \\n Default: `false`\"\n          }\n        }\n      },\n      \"metadata\": {\n        \"section\": \"Poll\"\n      }\n    },\n    \"PollData_Layout\": {\n      \"optionalProperties\": {\n        \"poll\": {\n          \"ref\": \"PollData_Layout_PollLayout\",\n          \"metadata\": {\n            \"description\": \"Poll layout settings.\"\n          }\n        },\n        \"options\": {\n          \"ref\": \"PollData_Layout_OptionLayout\",\n          \"metadata\": {\n            \"description\": \"Poll options layout settings.\"\n          }\n        }\n      },\n      \"metadata\": {\n        \"section\": \"Poll\"\n      }\n    },\n    \"PollData_Layout_PollLayout\": {\n      \"optionalProperties\": {\n        \"type\": {\n          \"enum\": [\n            \"LIST\",\n            \"GRID\"\n          ],\n          \"metadata\": {\n            \"emitEnum\": \"PollData_Layout_PollLayout_Type\",\n            \"description\": \"Voting options layout.\"\n          }\n        },\n        \"direction\": {\n          \"enum\": [\n            \"LTR\",\n            \"RTL\"\n          ],\n          \"metadata\": {\n            \"emitEnum\": \"PollData_Layout_PollLayout_Direction\",\n            \"description\": \"Direction of the text in the poll. Supported values: <br> - `LTR`: Left to right. <br> - `RTL`: Right to left.\"\n          }\n        },\n        \"enableImage\": {\n          \"type\": \"boolean\",\n          \"metadata\": {\n            \"description\": \"Whether to display the main poll image. \\n Default: `false`\"\n          }\n        }\n      },\n      \"metadata\": {\n        \"section\": \"Poll\"\n      }\n    },\n    \"PollData_Layout_OptionLayout\": {\n      \"optionalProperties\": {\n        \"enableImage\": {\n          \"type\": \"boolean\",\n          \"metadata\": {\n            \"description\": \"Whether to display option images. \\n Defaults: `false`.\"\n          }\n        }\n      },\n      \"metadata\": {\n        \"section\": \"Poll\"\n      }\n    },\n    \"PollData_Design\": {\n      \"optionalProperties\": {\n        \"poll\": {\n          \"ref\": \"PollData_Design_PollDesign\",\n          \"metadata\": {\n            \"description\": \"Poll styling.\"\n          }\n        },\n        \"options\": {\n          \"ref\": \"PollData_Design_OptionDesign\",\n          \"metadata\": {\n            \"description\": \"Voting options styling.\"\n          }\n        }\n      },\n      \"metadata\": {\n        \"section\": \"Poll\"\n      }\n    },\n    \"PollData_Design_PollDesign\": {\n      \"optionalProperties\": {\n        \"background\": {\n          \"ref\": \"PollData_Design_PollDesign_Background\",\n          \"metadata\": {\n            \"description\": \"Poll background styling.\"\n          }\n        },\n        \"borderRadius\": {\n          \"type\": \"int32\",\n          \"metadata\": {\n            \"description\": \"Border radius in pixels.\"\n          }\n        }\n      },\n      \"metadata\": {\n        \"section\": \"Poll\"\n      }\n    },\n    \"PollData_Design_PollDesign_Background\": {\n      \"discriminator\": \"type\",\n      \"metadata\": {\n        \"section\": \"Poll\",\n        \"refUnion\": {\n          \"COLOR\": \"PollData_Background_ColorVariant\",\n          \"IMAGE\": \"PollData_Background_ImageVariant\",\n          \"GRADIENT\": \"PollData_Background_GradientVariant\"\n        },\n        \"emitEnum\": \"PollData_Design_PollDesign_Background_Type\"\n      },\n      \"mapping\": {\n        \"COLOR\": {\n          \"properties\": {},\n          \"optionalProperties\": {\n            \"color\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"COLOR_HEX\",\n                \"description\": \"Background color as a hexademical value.\"\n              }\n            }\n          },\n          \"metadata\": {\n            \"section\": \"Poll\"\n          }\n        },\n        \"IMAGE\": {\n          \"properties\": {},\n          \"optionalProperties\": {\n            \"image\": {\n              \"ref\": \"Media\",\n              \"metadata\": {\n                \"description\": \"Image to use for the background.\"\n              }\n            }\n          },\n          \"metadata\": {\n            \"section\": \"Poll\"\n          }\n        },\n        \"GRADIENT\": {\n          \"properties\": {},\n          \"optionalProperties\": {\n            \"gradient\": {\n              \"ref\": \"PollData_Design_PollDesign_Background_Gradient\",\n              \"metadata\": {\n                \"description\": \"Gradient background details.\"\n              }\n            }\n          },\n          \"metadata\": {\n            \"section\": \"Poll\"\n          }\n        }\n      }\n    },\n    \"PollData_Background_ColorVariant\": {\n      \"properties\": {\n        \"type\": {\n          \"enum\": [\n            \"COLOR\"\n          ]\n        }\n      },\n      \"optionalProperties\": {\n        \"color\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"format\": \"COLOR_HEX\",\n            \"description\": \"Background color as a hexademical value.\"\n          }\n        }\n      },\n      \"metadata\": {\n        \"section\": \"Poll\"\n      }\n    },\n    \"PollData_Background_ImageVariant\": {\n      \"properties\": {\n        \"type\": {\n          \"enum\": [\n            \"IMAGE\"\n          ]\n        }\n      },\n      \"optionalProperties\": {\n        \"image\": {\n          \"ref\": \"Media\",\n          \"metadata\": {\n            \"description\": \"Image to use for the background.\"\n          }\n        }\n      },\n      \"metadata\": {\n        \"section\": \"Poll\"\n      }\n    },\n    \"PollData_Background_GradientVariant\": {\n      \"properties\": {\n        \"type\": {\n          \"enum\": [\n            \"GRADIENT\"\n          ]\n        }\n      },\n      \"optionalProperties\": {\n        \"gradient\": {\n          \"ref\": \"PollData_Design_PollDesign_Background_Gradient\",\n          \"metadata\": {\n            \"description\": \"Gradient background details.\"\n          }\n        }\n      },\n      \"metadata\": {\n        \"section\": \"Poll\"\n      }\n    },\n    \"PollData_Design_PollDesign_Background_Gradient\": {\n      \"optionalProperties\": {\n        \"angle\": {\n          \"type\": \"int32\",\n          \"metadata\": {\n            \"description\": \"Gradient angle in degrees.\"\n          }\n        },\n        \"startColor\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"format\": \"COLOR_HEX\",\n            \"description\": \"Start color as a hexadecimal value.\"\n          }\n        },\n        \"lastColor\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"format\": \"COLOR_HEX\",\n            \"description\": \"End color as a hexadecimal value.\"\n          }\n        }\n      },\n      \"metadata\": {\n        \"section\": \"Poll\"\n      }\n    },\n    \"PollData_Design_OptionDesign\": {\n      \"optionalProperties\": {\n        \"borderRadius\": {\n          \"type\": \"int32\",\n          \"metadata\": {\n            \"description\": \"Border radius in pixels.\"\n          }\n        }\n      },\n      \"metadata\": {\n        \"section\": \"Poll\"\n      }\n    },\n    \"ShapeNode\": {\n      \"metadata\": {\n        \"section\": \"Shape\",\n        \"tsRicosNode\": true,\n        \"examples\": [\n          \"shape-id\"\n        ],\n        \"features\": [\n          \"SHAPE\"\n        ],\n        \"description\": \"Standalone shapes in a page.\"\n      },\n      \"properties\": {\n        \"type\": {\n          \"enum\": [\n            \"SHAPE\"\n          ],\n          \"metadata\": {\n            \"description\": \"Node type. \\n Must be `SHAPE`.\"\n          }\n        },\n        \"id\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"format\": \"NODE_ID\",\n            \"description\": \"[Node ID](#node-ids).\"\n          }\n        },\n        \"shapeData\": {\n          \"ref\": \"ShapeData\",\n          \"metadata\": {\n            \"description\": \"Shape options.\"\n          }\n        }\n      },\n      \"optionalProperties\": {\n        \"nodes\": {\n          \"metadata\": {\n            \"internal\": true,\n            \"tsRicosNodesChildren\": true\n          },\n          \"elements\": {\n            \"ref\": \"Never\"\n          }\n        }\n      }\n    },\n    \"ShapeData\": {\n      \"properties\": {\n        \"shape\": {\n          \"ref\": \"Media\",\n          \"metadata\": {\n            \"description\": \"Shape file details.\"\n          }\n        }\n      },\n      \"optionalProperties\": {\n        \"containerData\": {\n          \"ref\": \"PluginContainerData\",\n          \"metadata\": {\n            \"description\": \"Shape container styling.\"\n          }\n        },\n        \"styles\": {\n          \"ref\": \"ShapeData_Styles\",\n          \"metadata\": {\n            \"description\": \"Styling for the shape.\"\n          }\n        }\n      },\n      \"metadata\": {\n        \"section\": \"Shape\"\n      }\n    },\n    \"ShapeData_Styles\": {\n      \"optionalProperties\": {\n        \"colors\": {\n          \"values\": {\n            \"type\": \"string\"\n          },\n          \"metadata\": {\n            \"description\": \"Map of original color keys to their new color values.\"\n          }\n        }\n      },\n      \"metadata\": {\n        \"section\": \"Shape\"\n      }\n    },\n    \"TableNode\": {\n      \"metadata\": {\n        \"section\": \"Table\",\n        \"tsRicosNode\": true,\n        \"examples\": [\n          \"table\"\n        ],\n        \"features\": [\n          \"TABLE\"\n        ],\n        \"description\": \"Data in rows and columns.\"\n      },\n      \"properties\": {\n        \"type\": {\n          \"enum\": [\n            \"TABLE\"\n          ],\n          \"metadata\": {\n            \"description\": \"Node type. \\n Must be `TABLE`.\"\n          }\n        },\n        \"nodes\": {\n          \"elements\": {\n            \"ref\": \"TableRowNode\"\n          },\n          \"metadata\": {\n            \"tsRicosNodesChildren\": true,\n            \"description\": \"Child nodes to define table rows.\",\n            \"validation\": {\n              \"minSize\": 1\n            }\n          }\n        }\n      },\n      \"optionalProperties\": {\n        \"id\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"format\": \"NODE_ID\",\n            \"description\": \"[Node ID](#node-ids).\"\n          }\n        },\n        \"tableData\": {\n          \"ref\": \"TableData\",\n          \"metadata\": {\n            \"description\": \"Table details.\"\n          }\n        }\n      }\n    },\n    \"TableRowNode\": {\n      \"metadata\": {\n        \"section\": \"Table\",\n        \"tsRicosNode\": true\n      },\n      \"properties\": {\n        \"type\": {\n          \"enum\": [\n            \"TABLE_ROW\"\n          ],\n          \"metadata\": {\n            \"description\": \"Node type. \\n Must be `TABLE_ROW`.\"\n          }\n        }\n      },\n      \"optionalProperties\": {\n        \"id\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"format\": \"NODE_ID\",\n            \"description\": \"[Node ID](#node-ids).\"\n          }\n        },\n        \"nodes\": {\n          \"elements\": {\n            \"ref\": \"TableCellNode\"\n          },\n          \"metadata\": {\n            \"tsRicosNodesChildren\": true,\n            \"description\": \"Child nodes to define table cells.\"\n          }\n        }\n      }\n    },\n    \"TableData\": {\n      \"optionalProperties\": {\n        \"containerData\": {\n          \"metadata\": {\n            \"description\": \"Table container styling.\"\n          },\n          \"ref\": \"PluginContainerData\"\n        },\n        \"dimensions\": {\n          \"metadata\": {\n            \"description\": \"Table dimensions.\"\n          },\n          \"ref\": \"TableData_Dimensions\"\n        },\n        \"rowHeader\": {\n          \"metadata\": {\n            \"description\": \"Whether the table's first row is a heading. <br> Default: `false`\"\n          },\n          \"type\": \"boolean\"\n        },\n        \"columnHeader\": {\n          \"metadata\": {\n            \"description\": \"Whether the table's first column is a heading. <br> Default: `false`\"\n          },\n          \"type\": \"boolean\"\n        },\n        \"cellSpacing\": {\n          \"metadata\": {\n            \"description\": \"The spacing between cells.\"\n          },\n          \"type\": \"uint32\"\n        },\n        \"cellPadding\": {\n          \"elements\": {\n            \"type\": \"uint32\"\n          },\n          \"metadata\": {\n            \"description\": \"Padding in pixels for cells. Follows CSS order: top, right, bottom, left.\"\n          }\n        }\n      },\n      \"metadata\": {\n        \"section\": \"Table\"\n      }\n    },\n    \"TableData_Dimensions\": {\n      \"optionalProperties\": {\n        \"colsWidthRatio\": {\n          \"elements\": {\n            \"type\": \"float64\"\n          },\n          \"metadata\": {\n            \"description\": \"Each column width as a fraction to the width of table.\"\n          }\n        },\n        \"rowsHeight\": {\n          \"elements\": {\n            \"type\": \"uint32\"\n          },\n          \"metadata\": {\n            \"description\": \"Height of each row.\"\n          }\n        },\n        \"colsMinWidth\": {\n          \"elements\": {\n            \"type\": \"uint32\"\n          },\n          \"metadata\": {\n            \"description\": \"Minimum width of each column.\"\n          }\n        }\n      },\n      \"metadata\": {\n        \"section\": \"Table\"\n      }\n    },\n    \"TableCellNode\": {\n      \"metadata\": {\n        \"section\": \"Table\",\n        \"tsRicosNode\": true\n      },\n      \"properties\": {\n        \"type\": {\n          \"enum\": [\n            \"TABLE_CELL\"\n          ],\n          \"metadata\": {\n            \"description\": \"Node type. \\n Must be `TABLE_CELL`.\"\n          }\n        },\n        \"nodes\": {\n          \"elements\": {\n            \"ref\": \"TableCellChildNode\"\n          },\n          \"metadata\": {\n            \"tsRicosNodesChildren\": true,\n            \"description\": \"Child nodes to define cell content.\",\n            \"validation\": {\n              \"minSize\": 1\n            }\n          }\n        }\n      },\n      \"optionalProperties\": {\n        \"id\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"format\": \"NODE_ID\",\n            \"description\": \"[Node ID](#node-ids).\"\n          }\n        },\n        \"tableCellData\": {\n          \"ref\": \"TableCellData\",\n          \"metadata\": {\n            \"description\": \"Table cell details.\"\n          }\n        }\n      }\n    },\n    \"TableCellChildNode\": {\n      \"discriminator\": \"type\",\n      \"metadata\": {\n        \"section\": \"Table\",\n        \"refUnion\": {\n          \"PARAGRAPH\": \"ParagraphNode\",\n          \"HEADING\": \"HeadingNode\",\n          \"BULLETED_LIST\": \"BulletedListNode\",\n          \"ORDERED_LIST\": \"OrderedListNode\",\n          \"BLOCKQUOTE\": \"BlockquoteNode\",\n          \"AUDIO\": \"AudioNode\",\n          \"FILE\": \"FileNode\",\n          \"IMAGE\": \"ImageNode\",\n          \"VIDEO\": \"VideoNode\",\n          \"GIF\": \"GifNode\",\n          \"DIVIDER\": \"DividerNode\",\n          \"CODE_BLOCK\": \"CodeBlockNode\",\n          \"HTML\": \"HtmlNode\",\n          \"LINK_PREVIEW\": \"LinkPreviewNode\",\n          \"APP_EMBED\": \"AppEmbedNode\",\n          \"BUTTON\": \"ButtonNode\",\n          \"EMBED\": \"EmbedNode\"\n        },\n        \"description\": \"Table cell content node.\"\n      },\n      \"mapping\": {\n        \"PARAGRAPH\": {\n          \"metadata\": {\n            \"section\": \"Paragraph\",\n            \"tsRicosNode\": true,\n            \"description\": \"Structures text content, providing a clear separation between different ideas or sections of text. Paragraphs are rendered with default styling that typically includes some space above and below the paragraph, making it visually distinct from the surrounding content.\",\n            \"examples\": [\n              \"paragraph\"\n            ]\n          },\n          \"properties\": {},\n          \"optionalProperties\": {\n            \"nodes\": {\n              \"elements\": {\n                \"ref\": \"TextNode\"\n              },\n              \"metadata\": {\n                \"tsRicosNodesChildren\": true,\n                \"description\": \"Paragraph children.\"\n              }\n            },\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"style\": {\n              \"ref\": \"NodeStyle\",\n              \"metadata\": {\n                \"description\": \"Vertical padding. \\n **Note:** This node requires the [`lineSpacing`](https://dev.wix.com/docs/ricos/getting-started/introduction#plugins) plugin to be enabled.\"\n              }\n            },\n            \"paragraphData\": {\n              \"ref\": \"ParagraphData\",\n              \"metadata\": {\n                \"description\": \"Paragraph node attributes.\"\n              }\n            }\n          }\n        },\n        \"HEADING\": {\n          \"metadata\": {\n            \"section\": \"Heading\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"headings-all-sizes\"\n            ],\n            \"description\": \"Indicates a heading or title of a section. There are 6 levels of headings, with `1` being the most prominent and `6` being the least.\"\n          },\n          \"properties\": {},\n          \"optionalProperties\": {\n            \"nodes\": {\n              \"elements\": {\n                \"ref\": \"TextNode\"\n              },\n              \"metadata\": {\n                \"tsRicosNodesChildren\": true,\n                \"description\": \"Child nodes to define the heading text.\"\n              }\n            },\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"style\": {\n              \"ref\": \"NodeStyle\",\n              \"metadata\": {\n                \"description\": \"Heading styling, such as padding and background color. \\n **Note:** This node requires the [`lineSpacing`](https://dev.wix.com/docs/ricos/getting-started/introduction#plugins) plugin to be enabled.\"\n              }\n            },\n            \"headingData\": {\n              \"ref\": \"HeadingData\",\n              \"metadata\": {\n                \"description\": \"Heading options.\"\n              }\n            }\n          }\n        },\n        \"BULLETED_LIST\": {\n          \"metadata\": {\n            \"section\": \"List\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"bulletedList\"\n            ],\n            \"description\": \"Bulleted list.\"\n          },\n          \"properties\": {\n            \"nodes\": {\n              \"elements\": {\n                \"ref\": \"ListItemNode\",\n                \"metadata\": {\n                  \"validation\": {\n                    \"minSize\": 1\n                  }\n                }\n              },\n              \"metadata\": {\n                \"tsRicosNodesChildren\": true,\n                \"description\": \"List items.\",\n                \"validation\": {\n                  \"minSize\": 1\n                }\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"bulletedListData\": {\n              \"ref\": \"BulletedListData\",\n              \"metadata\": {\n                \"description\": \"Bulleted list details.\"\n              }\n            }\n          }\n        },\n        \"ORDERED_LIST\": {\n          \"metadata\": {\n            \"section\": \"List\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"orderedList\"\n            ],\n            \"description\": \"Numbered list.\"\n          },\n          \"properties\": {\n            \"nodes\": {\n              \"elements\": {\n                \"ref\": \"ListItemNode\",\n                \"metadata\": {\n                  \"validation\": {\n                    \"minSize\": 1\n                  }\n                }\n              },\n              \"metadata\": {\n                \"tsRicosNodesChildren\": true,\n                \"description\": \"List items.\",\n                \"validation\": {\n                  \"minSize\": 1\n                }\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"orderedListData\": {\n              \"ref\": \"OrderedListData\",\n              \"metadata\": {\n                \"description\": \"Ordered list details.\"\n              }\n            }\n          }\n        },\n        \"BLOCKQUOTE\": {\n          \"metadata\": {\n            \"section\": \"Block quote\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"blockquote\"\n            ],\n            \"description\": \"Used to visually distinguish quoted or cited content from the surrounding text. When rendered, it displays as the quoted text with indentation or other styling to visually separate it from the surrounding content.\"\n          },\n          \"properties\": {\n            \"nodes\": {\n              \"elements\": {\n                \"ref\": \"ParagraphNode\"\n              },\n              \"metadata\": {\n                \"tsRicosNodesChildren\": true,\n                \"description\": \"Child nodes to define a blockquote paragraph.\",\n                \"validation\": {\n                  \"minSize\": 1,\n                  \"maxSize\": 1\n                }\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"blockquoteData\": {\n              \"ref\": \"BlockquoteData\",\n              \"metadata\": {\n                \"description\": \"Blockquote details.\"\n              }\n            },\n            \"style\": {\n              \"ref\": \"NodeStyle\",\n              \"metadata\": {\n                \"description\": \"Defines the blockquote style, such as padding and background color. \\n **Note:** This node requires the [`lineSpacing`](https://dev.wix.com/docs/ricos/getting-started/introduction#plugins) plugin to be enabled.\"\n              }\n            }\n          }\n        },\n        \"AUDIO\": {\n          \"metadata\": {\n            \"section\": \"Audio\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"audio-soundcloud\"\n            ],\n            \"features\": [\n              \"AUDIO\"\n            ],\n            \"description\": \"Embeds and plays audio content directly in a webpage. Users can interact with the controls to play, pause, rewind, and adjust the volume of the audio.\"\n          },\n          \"properties\": {\n            \"audioData\": {\n              \"ref\": \"AudioData\",\n              \"metadata\": {\n                \"description\": \"Audio details.\"\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"nodes\": {\n              \"metadata\": {\n                \"internal\": true,\n                \"tsRicosNodesChildren\": true\n              },\n              \"elements\": {\n                \"ref\": \"Never\"\n              }\n            }\n          }\n        },\n        \"FILE\": {\n          \"metadata\": {\n            \"section\": \"File\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"file\"\n            ],\n            \"features\": [\n              \"FILE\"\n            ],\n            \"description\": \"File that is uploaded and accessed in a page. Files can be different types of content, such as text documents, images, and videos.\"\n          },\n          \"properties\": {\n            \"fileData\": {\n              \"ref\": \"FileData\",\n              \"metadata\": {\n                \"description\": \"File details.\"\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"nodes\": {\n              \"metadata\": {\n                \"internal\": true,\n                \"tsRicosNodesChildren\": true\n              },\n              \"elements\": {\n                \"ref\": \"Never\"\n              }\n            }\n          }\n        },\n        \"IMAGE\": {\n          \"metadata\": {\n            \"section\": \"Image\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"image-id\",\n              \"image-url\"\n            ],\n            \"features\": [\n              \"IMAGE\"\n            ],\n            \"description\": \"Standalone images in a page.\"\n          },\n          \"properties\": {\n            \"imageData\": {\n              \"ref\": \"ImageData\",\n              \"metadata\": {\n                \"description\": \"Image options.\"\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"nodes\": {\n              \"metadata\": {\n                \"tsRicosNodesChildren\": true,\n                \"description\": \"Child nodes to define an image caption.\"\n              },\n              \"elements\": {\n                \"ref\": \"CaptionNode\"\n              }\n            }\n          }\n        },\n        \"VIDEO\": {\n          \"metadata\": {\n            \"section\": \"Video\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"video-url\",\n              \"video-wix\"\n            ],\n            \"features\": [\n              \"VIDEO\"\n            ],\n            \"description\": \"Embeds and plays video content directly in a page. When rendered, it is displayed as the video player with the specified video file. Users can interact with the controls to play, pause, rewind, and adjust the volume of the video.\"\n          },\n          \"properties\": {\n            \"videoData\": {\n              \"ref\": \"VideoData\",\n              \"metadata\": {\n                \"description\": \"Video details.\"\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"nodes\": {\n              \"metadata\": {\n                \"tsRicosNodesChildren\": true,\n                \"description\": \"Child nodes to define a video caption.\"\n              },\n              \"elements\": {\n                \"ref\": \"CaptionNode\"\n              }\n            }\n          }\n        },\n        \"GIF\": {\n          \"metadata\": {\n            \"section\": \"Gif\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"gif-basic\"\n            ],\n            \"features\": [\n              \"GIF\"\n            ],\n            \"description\": \"GIF images.\"\n          },\n          \"properties\": {\n            \"gifData\": {\n              \"ref\": \"GIFData\",\n              \"metadata\": {\n                \"description\": \"GIF details.\"\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"nodes\": {\n              \"metadata\": {\n                \"tsRicosNodesChildren\": true,\n                \"description\": \"Child nodes to define a GIF caption.\"\n              },\n              \"elements\": {\n                \"ref\": \"CaptionNode\"\n              }\n            }\n          }\n        },\n        \"DIVIDER\": {\n          \"metadata\": {\n            \"section\": \"Divider\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"divider\"\n            ],\n            \"features\": [\n              \"DIVIDER\"\n            ],\n            \"description\": \"Horizontal line between different content.\"\n          },\n          \"properties\": {},\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"dividerData\": {\n              \"ref\": \"DividerData\",\n              \"metadata\": {\n                \"description\": \"Divider details.\"\n              }\n            },\n            \"nodes\": {\n              \"metadata\": {\n                \"internal\": true,\n                \"tsRicosNodesChildren\": true\n              },\n              \"elements\": {\n                \"ref\": \"Never\"\n              }\n            }\n          }\n        },\n        \"CODE_BLOCK\": {\n          \"metadata\": {\n            \"section\": \"Codeblock\",\n            \"tsRicosNode\": true,\n            \"features\": [\n              \"CODE_BLOCK\"\n            ],\n            \"examples\": [\n              \"code-block-multi-line\",\n              \"code-block-syntax-highlighting\"\n            ],\n            \"description\": \"Presents code snippets, markup, or other text-based content that should be displayed exactly as it appears, without any interpretation or formatting applied by the browser. When rendered, it is displayed as the code block with a monospaced font, preserving indentation, line breaks, and spacing as specified in the code.\"\n          },\n          \"properties\": {},\n          \"optionalProperties\": {\n            \"nodes\": {\n              \"elements\": {\n                \"ref\": \"TextNode\"\n              },\n              \"metadata\": {\n                \"tsRicosNodesChildren\": true,\n                \"description\": \"Child nodes to define a code block text.\"\n              }\n            },\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"codeBlockData\": {\n              \"ref\": \"CodeBlockData\",\n              \"metadata\": {\n                \"description\": \"Code block details.\"\n              }\n            },\n            \"style\": {\n              \"ref\": \"NodeStyle\",\n              \"metadata\": {\n                \"description\": \"Code block styling, such as padding and background color. \\n **Note:** This node requires the [`lineSpacing`](https://dev.wix.com/docs/ricos/getting-started/introduction#plugins) plugin to be enabled.\"\n              }\n            }\n          }\n        },\n        \"HTML\": {\n          \"metadata\": {\n            \"section\": \"Html\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"html-code\",\n              \"html-url\"\n            ],\n            \"features\": [\n              \"HTML\"\n            ],\n            \"description\": \"HTML block that incorporates external content, such as interactive maps or entire web pages.\"\n          },\n          \"properties\": {\n            \"htmlData\": {\n              \"ref\": \"HTMLData\",\n              \"metadata\": {\n                \"description\": \"HTML details.\"\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"nodes\": {\n              \"metadata\": {\n                \"internal\": true,\n                \"tsRicosNodesChildren\": true\n              },\n              \"elements\": {\n                \"ref\": \"Never\"\n              }\n            }\n          }\n        },\n        \"LINK_PREVIEW\": {\n          \"metadata\": {\n            \"section\": \"Link Preview\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"link-preview\"\n            ],\n            \"features\": [\n              \"LINK_PREVIEW\"\n            ],\n            \"description\": \"Preview or summary of a webpage. Link previews include elements such as the title of the linked page, a brief description or excerpt of the content, and sometimes a thumbnail image or other relevant information.\"\n          },\n          \"properties\": {\n            \"linkPreviewData\": {\n              \"ref\": \"LinkPreviewData\",\n              \"metadata\": {\n                \"description\": \"Link preview details.\"\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"nodes\": {\n              \"metadata\": {\n                \"internal\": true,\n                \"tsRicosNodesChildren\": true\n              },\n              \"elements\": {\n                \"ref\": \"Never\"\n              }\n            }\n          }\n        },\n        \"APP_EMBED\": {\n          \"metadata\": {\n            \"section\": \"App Embed\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"app-embed-event\",\n              \"app-embed-booking\"\n            ],\n            \"features\": [\n              \"APP_EMBED\"\n            ],\n            \"description\": \"Embeds an external content preview from Wix business solutions. For example, you can embed previews from the Wix Bookings, Wix Stores and Wix Events apps.\"\n          },\n          \"properties\": {\n            \"appEmbedData\": {\n              \"ref\": \"AppEmbedData\",\n              \"metadata\": {\n                \"description\": \"Embedded Wix app.\"\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"nodes\": {\n              \"metadata\": {\n                \"internal\": true,\n                \"tsRicosNodesChildren\": true\n              },\n              \"elements\": {\n                \"ref\": \"Never\"\n              }\n            }\n          }\n        },\n        \"BUTTON\": {\n          \"metadata\": {\n            \"section\": \"Button\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"button-link\",\n              \"button-action\",\n              \"button-styled\"\n            ],\n            \"features\": [\n              \"BUTTON\"\n            ],\n            \"description\": \"Button to trigger an action.\"\n          },\n          \"properties\": {\n            \"buttonData\": {\n              \"ref\": \"ButtonData\",\n              \"metadata\": {\n                \"description\": \"Button details.\"\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"nodes\": {\n              \"metadata\": {\n                \"internal\": true,\n                \"tsRicosNodesChildren\": true\n              },\n              \"elements\": {\n                \"ref\": \"Never\"\n              }\n            }\n          }\n        },\n        \"EMBED\": {\n          \"metadata\": {\n            \"section\": \"Embed\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"embed\"\n            ],\n            \"features\": [\n              \"EMBED\"\n            ],\n            \"description\": \"Embedded content when you include a link to a resource, without having to parse the resource directly. This provides a standardized way for web developers to include content such as videos, images, and other multimedia elements from supported providers. To learn more, see [oembed](https://oembed.com/).\"\n          },\n          \"properties\": {\n            \"embedData\": {\n              \"ref\": \"EmbedData\",\n              \"metadata\": {\n                \"description\": \"oEmbed details.\"\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"nodes\": {\n              \"metadata\": {\n                \"internal\": true,\n                \"tsRicosNodesChildren\": true\n              },\n              \"elements\": {\n                \"ref\": \"Never\"\n              }\n            }\n          }\n        }\n      }\n    },\n    \"TableCellData\": {\n      \"optionalProperties\": {\n        \"cellStyle\": {\n          \"metadata\": {\n            \"description\": \"Cell styling.\"\n          },\n          \"ref\": \"TableCellData_CellStyle\"\n        },\n        \"borderColors\": {\n          \"metadata\": {\n            \"description\": \"Cell border colors.\"\n          },\n          \"ref\": \"TableCellData_BorderColors\"\n        },\n        \"borderWidths\": {\n          \"metadata\": {\n            \"description\": \"Cell border widths.\"\n          },\n          \"ref\": \"TableCellData_BorderWidths\"\n        },\n        \"colspan\": {\n          \"type\": \"int32\",\n          \"metadata\": {\n            \"description\": \"Defines how many columns the cell spans.\",\n            \"validation\": {\n              \"min\": 0\n            }\n          }\n        },\n        \"rowspan\": {\n          \"type\": \"int32\",\n          \"metadata\": {\n            \"description\": \"Defines how many rows the cell spans.\",\n            \"validation\": {\n              \"min\": 0\n            }\n          }\n        }\n      },\n      \"metadata\": {\n        \"section\": \"Table\"\n      }\n    },\n    \"TableCellData_CellStyle\": {\n      \"optionalProperties\": {\n        \"verticalAlignment\": {\n          \"metadata\": {\n            \"description\": \"Vertical alignment for the cell's text.\"\n          },\n          \"enum\": [\n            \"TOP\",\n            \"MIDDLE\",\n            \"BOTTOM\"\n          ]\n        },\n        \"backgroundColor\": {\n          \"metadata\": {\n            \"description\": \"Cell background color as a hexadecimal value.\",\n            \"format\": \"COLOR_HEX\"\n          },\n          \"type\": \"string\"\n        }\n      },\n      \"metadata\": {\n        \"section\": \"Table\"\n      }\n    },\n    \"TableCellData_BorderColors\": {\n      \"optionalProperties\": {\n        \"left\": {\n          \"metadata\": {\n            \"format\": \"COLOR_HEX\",\n            \"description\": \"Left border color as a hexadecimal value.\"\n          },\n          \"type\": \"string\"\n        },\n        \"right\": {\n          \"metadata\": {\n            \"format\": \"COLOR_HEX\",\n            \"description\": \"Right border color as a hexadecimal value.\"\n          },\n          \"type\": \"string\"\n        },\n        \"top\": {\n          \"metadata\": {\n            \"format\": \"COLOR_HEX\",\n            \"description\": \"Top border color as a hexadecimal value.\"\n          },\n          \"type\": \"string\"\n        },\n        \"bottom\": {\n          \"metadata\": {\n            \"format\": \"COLOR_HEX\",\n            \"description\": \"Bottom border color as a hexadecimal value.\"\n          },\n          \"type\": \"string\"\n        }\n      },\n      \"metadata\": {\n        \"section\": \"Table\"\n      }\n    },\n    \"TableCellData_BorderWidths\": {\n      \"optionalProperties\": {\n        \"left\": {\n          \"type\": \"uint32\",\n          \"metadata\": {\n            \"description\": \"Left border width.\"\n          }\n        },\n        \"right\": {\n          \"type\": \"uint32\",\n          \"metadata\": {\n            \"description\": \"Right border width.\"\n          }\n        },\n        \"top\": {\n          \"type\": \"uint32\",\n          \"metadata\": {\n            \"description\": \"Top border width.\"\n          }\n        },\n        \"bottom\": {\n          \"type\": \"uint32\",\n          \"metadata\": {\n            \"description\": \"Bottom border width.\"\n          }\n        }\n      },\n      \"metadata\": {\n        \"section\": \"Table\"\n      }\n    },\n    \"VideoNode\": {\n      \"metadata\": {\n        \"section\": \"Video\",\n        \"tsRicosNode\": true,\n        \"examples\": [\n          \"video-url\",\n          \"video-wix\"\n        ],\n        \"features\": [\n          \"VIDEO\"\n        ],\n        \"description\": \"Embeds and plays video content directly in a page. When rendered, it is displayed as the video player with the specified video file. Users can interact with the controls to play, pause, rewind, and adjust the volume of the video.\"\n      },\n      \"properties\": {\n        \"type\": {\n          \"enum\": [\n            \"VIDEO\"\n          ],\n          \"metadata\": {\n            \"description\": \"Node type. \\n Must be `VIDEO`.\"\n          }\n        },\n        \"videoData\": {\n          \"ref\": \"VideoData\",\n          \"metadata\": {\n            \"description\": \"Video details.\"\n          }\n        }\n      },\n      \"optionalProperties\": {\n        \"id\": {\n          \"type\": \"string\",\n          \"metadata\": {\n            \"format\": \"NODE_ID\",\n            \"description\": \"[Node ID](#node-ids).\"\n          }\n        },\n        \"nodes\": {\n          \"metadata\": {\n            \"tsRicosNodesChildren\": true,\n            \"description\": \"Child nodes to define a video caption.\"\n          },\n          \"elements\": {\n            \"ref\": \"CaptionNode\"\n          }\n        }\n      }\n    },\n    \"VideoData\": {\n      \"properties\": {\n        \"video\": {\n          \"metadata\": {\n            \"description\": \"Video file details.\"\n          },\n          \"ref\": \"Media\"\n        }\n      },\n      \"optionalProperties\": {\n        \"containerData\": {\n          \"metadata\": {\n            \"description\": \"Video container styling.\"\n          },\n          \"ref\": \"PluginContainerData\"\n        },\n        \"thumbnail\": {\n          \"metadata\": {\n            \"description\": \"Video thumbnail details.\"\n          },\n          \"ref\": \"Media\"\n        },\n        \"disableDownload\": {\n          \"metadata\": {\n            \"description\": \"Whether the video download button is disabled. \\n Default: `false`\"\n          },\n          \"type\": \"boolean\"\n        },\n        \"title\": {\n          \"metadata\": {\n            \"description\": \"Video title.\"\n          },\n          \"type\": \"string\"\n        },\n        \"options\": {\n          \"ref\": \"PlaybackOptions\",\n          \"metadata\": {\n            \"description\": \"Playback details.\"\n          }\n        }\n      },\n      \"metadata\": {\n        \"section\": \"Video\"\n      }\n    },\n    \"PlaybackOptions\": {\n      \"optionalProperties\": {\n        \"autoPlay\": {\n          \"metadata\": {\n            \"description\": \"Whether the media automatically starts playing after opening a page.\"\n          },\n          \"type\": \"boolean\"\n        },\n        \"playInLoop\": {\n          \"type\": \"boolean\",\n          \"metadata\": {\n            \"description\": \"Whether the media is looped.\"\n          }\n        },\n        \"showControls\": {\n          \"type\": \"boolean\",\n          \"metadata\": {\n            \"description\": \"Whether to show the media controls.\"\n          }\n        }\n      },\n      \"metadata\": {\n        \"section\": \"Video\"\n      }\n    },\n    \"RootNode\": {\n      \"discriminator\": \"type\",\n      \"metadata\": {\n        \"section\": \"RootNode\",\n        \"description\": \"Nodes that can be added to the root level of `nodes` array.\",\n        \"refUnion\": {\n          \"PARAGRAPH\": \"ParagraphNode\",\n          \"HEADING\": \"HeadingNode\",\n          \"BULLETED_LIST\": \"BulletedListNode\",\n          \"ORDERED_LIST\": \"OrderedListNode\",\n          \"BLOCKQUOTE\": \"BlockquoteNode\",\n          \"CODE_BLOCK\": \"CodeBlockNode\",\n          \"VIDEO\": \"VideoNode\",\n          \"DIVIDER\": \"DividerNode\",\n          \"FILE\": \"FileNode\",\n          \"GALLERY\": \"GalleryNode\",\n          \"GIF\": \"GifNode\",\n          \"HTML\": \"HtmlNode\",\n          \"IMAGE\": \"ImageNode\",\n          \"LINK_PREVIEW\": \"LinkPreviewNode\",\n          \"POLL\": \"PollNode\",\n          \"APP_EMBED\": \"AppEmbedNode\",\n          \"BUTTON\": \"ButtonNode\",\n          \"COLLAPSIBLE_LIST\": \"CollapsibleListNode\",\n          \"TABLE\": \"TableNode\",\n          \"EMBED\": \"EmbedNode\",\n          \"AUDIO\": \"AudioNode\",\n          \"LAYOUT\": \"LayoutNode\",\n          \"EXTERNAL\": \"ExternalNode\",\n          \"SHAPE\": \"ShapeNode\",\n          \"CARD\": \"CardNode\"\n        }\n      },\n      \"mapping\": {\n        \"PARAGRAPH\": {\n          \"metadata\": {\n            \"section\": \"Paragraph\",\n            \"tsRicosNode\": true,\n            \"description\": \"Structures text content, providing a clear separation between different ideas or sections of text. Paragraphs are rendered with default styling that typically includes some space above and below the paragraph, making it visually distinct from the surrounding content.\",\n            \"examples\": [\n              \"paragraph\"\n            ]\n          },\n          \"properties\": {},\n          \"optionalProperties\": {\n            \"nodes\": {\n              \"elements\": {\n                \"ref\": \"TextNode\"\n              },\n              \"metadata\": {\n                \"tsRicosNodesChildren\": true,\n                \"description\": \"Paragraph children.\"\n              }\n            },\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"style\": {\n              \"ref\": \"NodeStyle\",\n              \"metadata\": {\n                \"description\": \"Vertical padding. \\n **Note:** This node requires the [`lineSpacing`](https://dev.wix.com/docs/ricos/getting-started/introduction#plugins) plugin to be enabled.\"\n              }\n            },\n            \"paragraphData\": {\n              \"ref\": \"ParagraphData\",\n              \"metadata\": {\n                \"description\": \"Paragraph node attributes.\"\n              }\n            }\n          }\n        },\n        \"HEADING\": {\n          \"metadata\": {\n            \"section\": \"Heading\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"headings-all-sizes\"\n            ],\n            \"description\": \"Indicates a heading or title of a section. There are 6 levels of headings, with `1` being the most prominent and `6` being the least.\"\n          },\n          \"properties\": {},\n          \"optionalProperties\": {\n            \"nodes\": {\n              \"elements\": {\n                \"ref\": \"TextNode\"\n              },\n              \"metadata\": {\n                \"tsRicosNodesChildren\": true,\n                \"description\": \"Child nodes to define the heading text.\"\n              }\n            },\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"style\": {\n              \"ref\": \"NodeStyle\",\n              \"metadata\": {\n                \"description\": \"Heading styling, such as padding and background color. \\n **Note:** This node requires the [`lineSpacing`](https://dev.wix.com/docs/ricos/getting-started/introduction#plugins) plugin to be enabled.\"\n              }\n            },\n            \"headingData\": {\n              \"ref\": \"HeadingData\",\n              \"metadata\": {\n                \"description\": \"Heading options.\"\n              }\n            }\n          }\n        },\n        \"BULLETED_LIST\": {\n          \"metadata\": {\n            \"section\": \"List\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"bulletedList\"\n            ],\n            \"description\": \"Bulleted list.\"\n          },\n          \"properties\": {\n            \"nodes\": {\n              \"elements\": {\n                \"ref\": \"ListItemNode\",\n                \"metadata\": {\n                  \"validation\": {\n                    \"minSize\": 1\n                  }\n                }\n              },\n              \"metadata\": {\n                \"tsRicosNodesChildren\": true,\n                \"description\": \"List items.\",\n                \"validation\": {\n                  \"minSize\": 1\n                }\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"bulletedListData\": {\n              \"ref\": \"BulletedListData\",\n              \"metadata\": {\n                \"description\": \"Bulleted list details.\"\n              }\n            }\n          }\n        },\n        \"ORDERED_LIST\": {\n          \"metadata\": {\n            \"section\": \"List\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"orderedList\"\n            ],\n            \"description\": \"Numbered list.\"\n          },\n          \"properties\": {\n            \"nodes\": {\n              \"elements\": {\n                \"ref\": \"ListItemNode\",\n                \"metadata\": {\n                  \"validation\": {\n                    \"minSize\": 1\n                  }\n                }\n              },\n              \"metadata\": {\n                \"tsRicosNodesChildren\": true,\n                \"description\": \"List items.\",\n                \"validation\": {\n                  \"minSize\": 1\n                }\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"orderedListData\": {\n              \"ref\": \"OrderedListData\",\n              \"metadata\": {\n                \"description\": \"Ordered list details.\"\n              }\n            }\n          }\n        },\n        \"BLOCKQUOTE\": {\n          \"metadata\": {\n            \"section\": \"Block quote\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"blockquote\"\n            ],\n            \"description\": \"Used to visually distinguish quoted or cited content from the surrounding text. When rendered, it displays as the quoted text with indentation or other styling to visually separate it from the surrounding content.\"\n          },\n          \"properties\": {\n            \"nodes\": {\n              \"elements\": {\n                \"ref\": \"ParagraphNode\"\n              },\n              \"metadata\": {\n                \"tsRicosNodesChildren\": true,\n                \"description\": \"Child nodes to define a blockquote paragraph.\",\n                \"validation\": {\n                  \"minSize\": 1,\n                  \"maxSize\": 1\n                }\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"blockquoteData\": {\n              \"ref\": \"BlockquoteData\",\n              \"metadata\": {\n                \"description\": \"Blockquote details.\"\n              }\n            },\n            \"style\": {\n              \"ref\": \"NodeStyle\",\n              \"metadata\": {\n                \"description\": \"Defines the blockquote style, such as padding and background color. \\n **Note:** This node requires the [`lineSpacing`](https://dev.wix.com/docs/ricos/getting-started/introduction#plugins) plugin to be enabled.\"\n              }\n            }\n          }\n        },\n        \"CODE_BLOCK\": {\n          \"metadata\": {\n            \"section\": \"Codeblock\",\n            \"tsRicosNode\": true,\n            \"features\": [\n              \"CODE_BLOCK\"\n            ],\n            \"examples\": [\n              \"code-block-multi-line\",\n              \"code-block-syntax-highlighting\"\n            ],\n            \"description\": \"Presents code snippets, markup, or other text-based content that should be displayed exactly as it appears, without any interpretation or formatting applied by the browser. When rendered, it is displayed as the code block with a monospaced font, preserving indentation, line breaks, and spacing as specified in the code.\"\n          },\n          \"properties\": {},\n          \"optionalProperties\": {\n            \"nodes\": {\n              \"elements\": {\n                \"ref\": \"TextNode\"\n              },\n              \"metadata\": {\n                \"tsRicosNodesChildren\": true,\n                \"description\": \"Child nodes to define a code block text.\"\n              }\n            },\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"codeBlockData\": {\n              \"ref\": \"CodeBlockData\",\n              \"metadata\": {\n                \"description\": \"Code block details.\"\n              }\n            },\n            \"style\": {\n              \"ref\": \"NodeStyle\",\n              \"metadata\": {\n                \"description\": \"Code block styling, such as padding and background color. \\n **Note:** This node requires the [`lineSpacing`](https://dev.wix.com/docs/ricos/getting-started/introduction#plugins) plugin to be enabled.\"\n              }\n            }\n          }\n        },\n        \"VIDEO\": {\n          \"metadata\": {\n            \"section\": \"Video\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"video-url\",\n              \"video-wix\"\n            ],\n            \"features\": [\n              \"VIDEO\"\n            ],\n            \"description\": \"Embeds and plays video content directly in a page. When rendered, it is displayed as the video player with the specified video file. Users can interact with the controls to play, pause, rewind, and adjust the volume of the video.\"\n          },\n          \"properties\": {\n            \"videoData\": {\n              \"ref\": \"VideoData\",\n              \"metadata\": {\n                \"description\": \"Video details.\"\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"nodes\": {\n              \"metadata\": {\n                \"tsRicosNodesChildren\": true,\n                \"description\": \"Child nodes to define a video caption.\"\n              },\n              \"elements\": {\n                \"ref\": \"CaptionNode\"\n              }\n            }\n          }\n        },\n        \"DIVIDER\": {\n          \"metadata\": {\n            \"section\": \"Divider\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"divider\"\n            ],\n            \"features\": [\n              \"DIVIDER\"\n            ],\n            \"description\": \"Horizontal line between different content.\"\n          },\n          \"properties\": {},\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"dividerData\": {\n              \"ref\": \"DividerData\",\n              \"metadata\": {\n                \"description\": \"Divider details.\"\n              }\n            },\n            \"nodes\": {\n              \"metadata\": {\n                \"internal\": true,\n                \"tsRicosNodesChildren\": true\n              },\n              \"elements\": {\n                \"ref\": \"Never\"\n              }\n            }\n          }\n        },\n        \"FILE\": {\n          \"metadata\": {\n            \"section\": \"File\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"file\"\n            ],\n            \"features\": [\n              \"FILE\"\n            ],\n            \"description\": \"File that is uploaded and accessed in a page. Files can be different types of content, such as text documents, images, and videos.\"\n          },\n          \"properties\": {\n            \"fileData\": {\n              \"ref\": \"FileData\",\n              \"metadata\": {\n                \"description\": \"File details.\"\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"nodes\": {\n              \"metadata\": {\n                \"internal\": true,\n                \"tsRicosNodesChildren\": true\n              },\n              \"elements\": {\n                \"ref\": \"Never\"\n              }\n            }\n          }\n        },\n        \"GALLERY\": {\n          \"metadata\": {\n            \"section\": \"Gallery\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"gallery\"\n            ],\n            \"features\": [\n              \"GALLERY\"\n            ],\n            \"description\": \"Collection of images displayed together.\"\n          },\n          \"properties\": {\n            \"galleryData\": {\n              \"ref\": \"GalleryData\",\n              \"metadata\": {\n                \"description\": \"Gallery node details.\"\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"nodes\": {\n              \"metadata\": {\n                \"internal\": true,\n                \"tsRicosNodesChildren\": true\n              },\n              \"elements\": {\n                \"ref\": \"Never\"\n              }\n            }\n          }\n        },\n        \"GIF\": {\n          \"metadata\": {\n            \"section\": \"Gif\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"gif-basic\"\n            ],\n            \"features\": [\n              \"GIF\"\n            ],\n            \"description\": \"GIF images.\"\n          },\n          \"properties\": {\n            \"gifData\": {\n              \"ref\": \"GIFData\",\n              \"metadata\": {\n                \"description\": \"GIF details.\"\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"nodes\": {\n              \"metadata\": {\n                \"tsRicosNodesChildren\": true,\n                \"description\": \"Child nodes to define a GIF caption.\"\n              },\n              \"elements\": {\n                \"ref\": \"CaptionNode\"\n              }\n            }\n          }\n        },\n        \"HTML\": {\n          \"metadata\": {\n            \"section\": \"Html\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"html-code\",\n              \"html-url\"\n            ],\n            \"features\": [\n              \"HTML\"\n            ],\n            \"description\": \"HTML block that incorporates external content, such as interactive maps or entire web pages.\"\n          },\n          \"properties\": {\n            \"htmlData\": {\n              \"ref\": \"HTMLData\",\n              \"metadata\": {\n                \"description\": \"HTML details.\"\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"nodes\": {\n              \"metadata\": {\n                \"internal\": true,\n                \"tsRicosNodesChildren\": true\n              },\n              \"elements\": {\n                \"ref\": \"Never\"\n              }\n            }\n          }\n        },\n        \"IMAGE\": {\n          \"metadata\": {\n            \"section\": \"Image\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"image-id\",\n              \"image-url\"\n            ],\n            \"features\": [\n              \"IMAGE\"\n            ],\n            \"description\": \"Standalone images in a page.\"\n          },\n          \"properties\": {\n            \"imageData\": {\n              \"ref\": \"ImageData\",\n              \"metadata\": {\n                \"description\": \"Image options.\"\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"nodes\": {\n              \"metadata\": {\n                \"tsRicosNodesChildren\": true,\n                \"description\": \"Child nodes to define an image caption.\"\n              },\n              \"elements\": {\n                \"ref\": \"CaptionNode\"\n              }\n            }\n          }\n        },\n        \"LINK_PREVIEW\": {\n          \"metadata\": {\n            \"section\": \"Link Preview\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"link-preview\"\n            ],\n            \"features\": [\n              \"LINK_PREVIEW\"\n            ],\n            \"description\": \"Preview or summary of a webpage. Link previews include elements such as the title of the linked page, a brief description or excerpt of the content, and sometimes a thumbnail image or other relevant information.\"\n          },\n          \"properties\": {\n            \"linkPreviewData\": {\n              \"ref\": \"LinkPreviewData\",\n              \"metadata\": {\n                \"description\": \"Link preview details.\"\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"nodes\": {\n              \"metadata\": {\n                \"internal\": true,\n                \"tsRicosNodesChildren\": true\n              },\n              \"elements\": {\n                \"ref\": \"Never\"\n              }\n            }\n          }\n        },\n        \"POLL\": {\n          \"metadata\": {\n            \"section\": \"Poll\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"poll\"\n            ],\n            \"features\": [\n              \"POLL\"\n            ],\n            \"description\": \"Provides a question with several options, where the options' cumulative total may be shown.\"\n          },\n          \"properties\": {\n            \"pollData\": {\n              \"ref\": \"PollData\",\n              \"metadata\": {\n                \"description\": \"Poll details.\"\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"nodes\": {\n              \"metadata\": {\n                \"internal\": true,\n                \"tsRicosNodesChildren\": true\n              },\n              \"elements\": {\n                \"ref\": \"Never\"\n              }\n            }\n          }\n        },\n        \"APP_EMBED\": {\n          \"metadata\": {\n            \"section\": \"App Embed\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"app-embed-event\",\n              \"app-embed-booking\"\n            ],\n            \"features\": [\n              \"APP_EMBED\"\n            ],\n            \"description\": \"Embeds an external content preview from Wix business solutions. For example, you can embed previews from the Wix Bookings, Wix Stores and Wix Events apps.\"\n          },\n          \"properties\": {\n            \"appEmbedData\": {\n              \"ref\": \"AppEmbedData\",\n              \"metadata\": {\n                \"description\": \"Embedded Wix app.\"\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"nodes\": {\n              \"metadata\": {\n                \"internal\": true,\n                \"tsRicosNodesChildren\": true\n              },\n              \"elements\": {\n                \"ref\": \"Never\"\n              }\n            }\n          }\n        },\n        \"BUTTON\": {\n          \"metadata\": {\n            \"section\": \"Button\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"button-link\",\n              \"button-action\",\n              \"button-styled\"\n            ],\n            \"features\": [\n              \"BUTTON\"\n            ],\n            \"description\": \"Button to trigger an action.\"\n          },\n          \"properties\": {\n            \"buttonData\": {\n              \"ref\": \"ButtonData\",\n              \"metadata\": {\n                \"description\": \"Button details.\"\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"nodes\": {\n              \"metadata\": {\n                \"internal\": true,\n                \"tsRicosNodesChildren\": true\n              },\n              \"elements\": {\n                \"ref\": \"Never\"\n              }\n            }\n          }\n        },\n        \"COLLAPSIBLE_LIST\": {\n          \"metadata\": {\n            \"section\": \"Collapsible List\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"collapsible-list\"\n            ],\n            \"features\": [\n              \"COLLAPSIBLE_LIST\"\n            ],\n            \"description\": \"List of items where each item can be expanded or collapsed.\"\n          },\n          \"properties\": {\n            \"nodes\": {\n              \"elements\": {\n                \"ref\": \"CollapsibleItemNode\"\n              },\n              \"metadata\": {\n                \"tsRicosNodesChildren\": true,\n                \"description\": \"Collapsible list child nodes.\",\n                \"validation\": {\n                  \"minSize\": 1\n                }\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"collapsibleListData\": {\n              \"ref\": \"CollapsibleListData\",\n              \"metadata\": {\n                \"description\": \"Collapsible list details.\"\n              }\n            }\n          }\n        },\n        \"TABLE\": {\n          \"metadata\": {\n            \"section\": \"Table\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"table\"\n            ],\n            \"features\": [\n              \"TABLE\"\n            ],\n            \"description\": \"Data in rows and columns.\"\n          },\n          \"properties\": {\n            \"nodes\": {\n              \"elements\": {\n                \"ref\": \"TableRowNode\"\n              },\n              \"metadata\": {\n                \"tsRicosNodesChildren\": true,\n                \"description\": \"Child nodes to define table rows.\",\n                \"validation\": {\n                  \"minSize\": 1\n                }\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"tableData\": {\n              \"ref\": \"TableData\",\n              \"metadata\": {\n                \"description\": \"Table details.\"\n              }\n            }\n          }\n        },\n        \"EMBED\": {\n          \"metadata\": {\n            \"section\": \"Embed\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"embed\"\n            ],\n            \"features\": [\n              \"EMBED\"\n            ],\n            \"description\": \"Embedded content when you include a link to a resource, without having to parse the resource directly. This provides a standardized way for web developers to include content such as videos, images, and other multimedia elements from supported providers. To learn more, see [oembed](https://oembed.com/).\"\n          },\n          \"properties\": {\n            \"embedData\": {\n              \"ref\": \"EmbedData\",\n              \"metadata\": {\n                \"description\": \"oEmbed details.\"\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"nodes\": {\n              \"metadata\": {\n                \"internal\": true,\n                \"tsRicosNodesChildren\": true\n              },\n              \"elements\": {\n                \"ref\": \"Never\"\n              }\n            }\n          }\n        },\n        \"AUDIO\": {\n          \"metadata\": {\n            \"section\": \"Audio\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"audio-soundcloud\"\n            ],\n            \"features\": [\n              \"AUDIO\"\n            ],\n            \"description\": \"Embeds and plays audio content directly in a webpage. Users can interact with the controls to play, pause, rewind, and adjust the volume of the audio.\"\n          },\n          \"properties\": {\n            \"audioData\": {\n              \"ref\": \"AudioData\",\n              \"metadata\": {\n                \"description\": \"Audio details.\"\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"nodes\": {\n              \"metadata\": {\n                \"internal\": true,\n                \"tsRicosNodesChildren\": true\n              },\n              \"elements\": {\n                \"ref\": \"Never\"\n              }\n            }\n          }\n        },\n        \"LAYOUT\": {\n          \"metadata\": {\n            \"section\": \"Layout\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"layout\"\n            ],\n            \"description\": \"Used to wrap cells in layout container. When rendered, it cells one after the other in a row\"\n          },\n          \"properties\": {\n            \"nodes\": {\n              \"elements\": {\n                \"ref\": \"LayoutCellNode\"\n              },\n              \"metadata\": {\n                \"tsRicosNodesChildren\": true,\n                \"description\": \"Cell items.\",\n                \"validation\": {\n                  \"minSize\": 1,\n                  \"maxSize\": 6\n                }\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"layoutData\": {\n              \"ref\": \"LayoutData\",\n              \"metadata\": {\n                \"description\": \"Layout details.\"\n              }\n            }\n          }\n        },\n        \"EXTERNAL\": {\n          \"metadata\": {\n            \"section\": \"External\",\n            \"tsRicosNode\": true,\n            \"internal\": true\n          },\n          \"properties\": {},\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\"\n            },\n            \"htmlData\": {},\n            \"externalData\": {\n              \"values\": {}\n            },\n            \"nodes\": {\n              \"metadata\": {\n                \"internal\": true,\n                \"tsRicosNodesChildren\": true\n              },\n              \"elements\": {\n                \"ref\": \"Never\"\n              }\n            }\n          }\n        },\n        \"SHAPE\": {\n          \"metadata\": {\n            \"section\": \"Shape\",\n            \"tsRicosNode\": true,\n            \"examples\": [\n              \"shape-id\"\n            ],\n            \"features\": [\n              \"SHAPE\"\n            ],\n            \"description\": \"Standalone shapes in a page.\"\n          },\n          \"properties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"shapeData\": {\n              \"ref\": \"ShapeData\",\n              \"metadata\": {\n                \"description\": \"Shape options.\"\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"nodes\": {\n              \"metadata\": {\n                \"internal\": true,\n                \"tsRicosNodesChildren\": true\n              },\n              \"elements\": {\n                \"ref\": \"Never\"\n              }\n            }\n          }\n        },\n        \"CARD\": {\n          \"metadata\": {\n            \"section\": \"Card\",\n            \"tsRicosNode\": true,\n            \"features\": [\n              \"PAGING\"\n            ],\n            \"description\": \"A card container node that can hold any block-level content.\"\n          },\n          \"properties\": {\n            \"nodes\": {\n              \"elements\": {\n                \"ref\": \"CardChildNode\"\n              },\n              \"metadata\": {\n                \"tsRicosNodesChildren\": true,\n                \"description\": \"Child nodes that the card contains.\"\n              }\n            }\n          },\n          \"optionalProperties\": {\n            \"id\": {\n              \"type\": \"string\",\n              \"metadata\": {\n                \"format\": \"NODE_ID\",\n                \"description\": \"[Node ID](#node-ids).\"\n              }\n            },\n            \"cardData\": {\n              \"ref\": \"CardData\",\n              \"metadata\": {\n                \"description\": \"Card details.\"\n              }\n            }\n          }\n        }\n      }\n    }\n  }\n}","export type EditorPluginName = (typeof editorPluginNames)[number];\nexport type ViewerPluginName = (typeof viewerPluginNames)[number];\n\nexport const viewerPluginNames = [\n  'actionButton',\n  'audio',\n  'codeBlock',\n  'collapsibleList',\n  'divider',\n  'file',\n  'gallery',\n  'giphy',\n  'hashtag',\n  'html',\n  'image',\n  'link',\n  'linkButton',\n  'linkPreview',\n  'mentions',\n  'poll',\n  'spoiler',\n  'table',\n  'textColor',\n  'textHighlight',\n  'verticalEmbed',\n  'video',\n  'fontFamily',\n  'shape',\n  'card',\n] as const;\n\nexport const editorPluginNames = [\n  'ai',\n  'inlineAi',\n  'layout',\n  'emoji',\n  'heading',\n  'indent',\n  'lineSpacing',\n  'card',\n  ...viewerPluginNames,\n] as const;\n\nconst nextPluginToLegacyMap: Record<EditorPluginName, string> = {\n  fontFamily: 'fontFamily',\n  ai: 'wix-rich-content-plugin-ai',\n  inlineAi: 'inlineAi',\n  emoji: 'wix-draft-plugin-emoji',\n  heading: 'wix-rich-content-plugin-headings',\n  indent: 'wix-rich-content-plugin-indent',\n  lineSpacing: 'line-spacing',\n  actionButton: 'wix-draft-plugin-action-button',\n  audio: 'ricos-audio',\n  codeBlock: 'code-block',\n  collapsibleList: 'wix-rich-content-plugin-collapsible-list',\n  divider: 'wix-draft-plugin-divider',\n  file: 'wix-draft-plugin-file-upload',\n  gallery: 'wix-draft-plugin-gallery',\n  giphy: 'wix-draft-plugin-giphy',\n  hashtag: 'wix-draft-plugin-hashtag',\n  html: 'wix-draft-plugin-html',\n  image: 'wix-draft-plugin-image',\n  link: 'LINK',\n  linkButton: 'wix-draft-plugin-link-button',\n  linkPreview: 'wix-draft-plugin-link-preview',\n  mentions: 'wix-draft-plugin-external-mentions',\n  poll: 'wix-draft-plugin-poll',\n  spoiler: 'wix-rich-content-plugin-spoiler',\n  table: 'wix-rich-content-plugin-table',\n  textColor: 'wix-rich-content-text-color',\n  textHighlight: 'wix-rich-content-text-highlight',\n  verticalEmbed: 'wix-draft-plugin-vertical-embed',\n  video: 'wix-draft-plugin-video',\n  layout: 'layout',\n  shape: 'shape',\n  card: 'card',\n};\n\nexport const legacyPluginToNextMap: Record<string, EditorPluginName> = Object.fromEntries(\n  Object.entries(nextPluginToLegacyMap).map(([key, value]) => [value, key])\n) as any;\n","// from https://developer.mozilla.org/en-US/docs/Glossary/Base64\n\nfunction base64ToBytes(base64: string): Uint8Array {\n  const binString = atob(base64);\n  return Uint8Array.from(binString as any, (m: any) => m.codePointAt(0));\n}\n\nfunction bytesToBase64(bytes: Uint8Array) {\n  const binString = Array.from(bytes, byte => String.fromCodePoint(byte)).join('');\n  return btoa(binString);\n}\n\nexport function encodeUnicodeBase64(input: string): string {\n  return bytesToBase64(new TextEncoder().encode(input)).replaceAll(\n    /[=+/]/g,\n    r => ({ '=': '.', '/': '_', '+': '-' })[r] as string\n  );\n}\n\nexport function decodeUnicodeBase64(input: string): string {\n  return new TextDecoder().decode(\n    base64ToBytes(input.replaceAll(/[._-]/g, r => ({ '.': '=', _: '/', '-': '+' })[r] as string))\n  );\n}\n","(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.jsonToAst = factory());\n}(this, (function () { 'use strict';\n\nvar commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\n\n\n\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nvar graphemeSplitter = createCommonjsModule(function (module) {\n\t/*\r\n Breaks a Javascript string into individual user-perceived \"characters\" \r\n called extended grapheme clusters by implementing the Unicode UAX-29 standard, version 10.0.0\r\n \r\n Usage:\r\n var splitter = new GraphemeSplitter();\r\n //returns an array of strings, one string for each grapheme cluster\r\n var graphemes = splitter.splitGraphemes(string); \r\n \r\n */\n\tfunction GraphemeSplitter() {\n\t\tvar CR = 0,\n\t\t    LF = 1,\n\t\t    Control = 2,\n\t\t    Extend = 3,\n\t\t    Regional_Indicator = 4,\n\t\t    SpacingMark = 5,\n\t\t    L = 6,\n\t\t    V = 7,\n\t\t    T = 8,\n\t\t    LV = 9,\n\t\t    LVT = 10,\n\t\t    Other = 11,\n\t\t    Prepend = 12,\n\t\t    E_Base = 13,\n\t\t    E_Modifier = 14,\n\t\t    ZWJ = 15,\n\t\t    Glue_After_Zwj = 16,\n\t\t    E_Base_GAZ = 17;\n\n\t\t// BreakTypes\n\t\tvar NotBreak = 0,\n\t\t    BreakStart = 1,\n\t\t    Break = 2,\n\t\t    BreakLastRegional = 3,\n\t\t    BreakPenultimateRegional = 4;\n\n\t\tfunction isSurrogate(str, pos) {\n\t\t\treturn 0xd800 <= str.charCodeAt(pos) && str.charCodeAt(pos) <= 0xdbff && 0xdc00 <= str.charCodeAt(pos + 1) && str.charCodeAt(pos + 1) <= 0xdfff;\n\t\t}\n\n\t\t// Private function, gets a Unicode code point from a JavaScript UTF-16 string\n\t\t// handling surrogate pairs appropriately\n\t\tfunction codePointAt(str, idx) {\n\t\t\tif (idx === undefined) {\n\t\t\t\tidx = 0;\n\t\t\t}\n\t\t\tvar code = str.charCodeAt(idx);\n\n\t\t\t// if a high surrogate\n\t\t\tif (0xD800 <= code && code <= 0xDBFF && idx < str.length - 1) {\n\t\t\t\tvar hi = code;\n\t\t\t\tvar low = str.charCodeAt(idx + 1);\n\t\t\t\tif (0xDC00 <= low && low <= 0xDFFF) {\n\t\t\t\t\treturn (hi - 0xD800) * 0x400 + (low - 0xDC00) + 0x10000;\n\t\t\t\t}\n\t\t\t\treturn hi;\n\t\t\t}\n\n\t\t\t// if a low surrogate\n\t\t\tif (0xDC00 <= code && code <= 0xDFFF && idx >= 1) {\n\t\t\t\tvar hi = str.charCodeAt(idx - 1);\n\t\t\t\tvar low = code;\n\t\t\t\tif (0xD800 <= hi && hi <= 0xDBFF) {\n\t\t\t\t\treturn (hi - 0xD800) * 0x400 + (low - 0xDC00) + 0x10000;\n\t\t\t\t}\n\t\t\t\treturn low;\n\t\t\t}\n\n\t\t\t//just return the char if an unmatched surrogate half or a \n\t\t\t//single-char codepoint\n\t\t\treturn code;\n\t\t}\n\n\t\t// Private function, returns whether a break is allowed between the \n\t\t// two given grapheme breaking classes\n\t\tfunction shouldBreak(start, mid, end) {\n\t\t\tvar all = [start].concat(mid).concat([end]);\n\t\t\tvar previous = all[all.length - 2];\n\t\t\tvar next = end;\n\n\t\t\t// Lookahead termintor for:\n\t\t\t// GB10. (E_Base | EBG) Extend* ?\tE_Modifier\n\t\t\tvar eModifierIndex = all.lastIndexOf(E_Modifier);\n\t\t\tif (eModifierIndex > 1 && all.slice(1, eModifierIndex).every(function (c) {\n\t\t\t\treturn c == Extend;\n\t\t\t}) && [Extend, E_Base, E_Base_GAZ].indexOf(start) == -1) {\n\t\t\t\treturn Break;\n\t\t\t}\n\n\t\t\t// Lookahead termintor for:\n\t\t\t// GB12. ^ (RI RI)* RI\t?\tRI\n\t\t\t// GB13. [^RI] (RI RI)* RI\t?\tRI\n\t\t\tvar rIIndex = all.lastIndexOf(Regional_Indicator);\n\t\t\tif (rIIndex > 0 && all.slice(1, rIIndex).every(function (c) {\n\t\t\t\treturn c == Regional_Indicator;\n\t\t\t}) && [Prepend, Regional_Indicator].indexOf(previous) == -1) {\n\t\t\t\tif (all.filter(function (c) {\n\t\t\t\t\treturn c == Regional_Indicator;\n\t\t\t\t}).length % 2 == 1) {\n\t\t\t\t\treturn BreakLastRegional;\n\t\t\t\t} else {\n\t\t\t\t\treturn BreakPenultimateRegional;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// GB3. CR X LF\n\t\t\tif (previous == CR && next == LF) {\n\t\t\t\treturn NotBreak;\n\t\t\t}\n\t\t\t// GB4. (Control|CR|LF) ÷\n\t\t\telse if (previous == Control || previous == CR || previous == LF) {\n\t\t\t\t\tif (next == E_Modifier && mid.every(function (c) {\n\t\t\t\t\t\treturn c == Extend;\n\t\t\t\t\t})) {\n\t\t\t\t\t\treturn Break;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn BreakStart;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// GB5. ÷ (Control|CR|LF)\n\t\t\t\telse if (next == Control || next == CR || next == LF) {\n\t\t\t\t\t\treturn BreakStart;\n\t\t\t\t\t}\n\t\t\t\t\t// GB6. L X (L|V|LV|LVT)\n\t\t\t\t\telse if (previous == L && (next == L || next == V || next == LV || next == LVT)) {\n\t\t\t\t\t\t\treturn NotBreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// GB7. (LV|V) X (V|T)\n\t\t\t\t\t\telse if ((previous == LV || previous == V) && (next == V || next == T)) {\n\t\t\t\t\t\t\t\treturn NotBreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// GB8. (LVT|T) X (T)\n\t\t\t\t\t\t\telse if ((previous == LVT || previous == T) && next == T) {\n\t\t\t\t\t\t\t\t\treturn NotBreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// GB9. X (Extend|ZWJ)\n\t\t\t\t\t\t\t\telse if (next == Extend || next == ZWJ) {\n\t\t\t\t\t\t\t\t\t\treturn NotBreak;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t// GB9a. X SpacingMark\n\t\t\t\t\t\t\t\t\telse if (next == SpacingMark) {\n\t\t\t\t\t\t\t\t\t\t\treturn NotBreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t// GB9b. Prepend X\n\t\t\t\t\t\t\t\t\t\telse if (previous == Prepend) {\n\t\t\t\t\t\t\t\t\t\t\t\treturn NotBreak;\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t// GB10. (E_Base | EBG) Extend* ?\tE_Modifier\n\t\t\tvar previousNonExtendIndex = all.indexOf(Extend) != -1 ? all.lastIndexOf(Extend) - 1 : all.length - 2;\n\t\t\tif ([E_Base, E_Base_GAZ].indexOf(all[previousNonExtendIndex]) != -1 && all.slice(previousNonExtendIndex + 1, -1).every(function (c) {\n\t\t\t\treturn c == Extend;\n\t\t\t}) && next == E_Modifier) {\n\t\t\t\treturn NotBreak;\n\t\t\t}\n\n\t\t\t// GB11. ZWJ ? (Glue_After_Zwj | EBG)\n\t\t\tif (previous == ZWJ && [Glue_After_Zwj, E_Base_GAZ].indexOf(next) != -1) {\n\t\t\t\treturn NotBreak;\n\t\t\t}\n\n\t\t\t// GB12. ^ (RI RI)* RI ? RI\n\t\t\t// GB13. [^RI] (RI RI)* RI ? RI\n\t\t\tif (mid.indexOf(Regional_Indicator) != -1) {\n\t\t\t\treturn Break;\n\t\t\t}\n\t\t\tif (previous == Regional_Indicator && next == Regional_Indicator) {\n\t\t\t\treturn NotBreak;\n\t\t\t}\n\n\t\t\t// GB999. Any ? Any\n\t\t\treturn BreakStart;\n\t\t}\n\n\t\t// Returns the next grapheme break in the string after the given index\n\t\tthis.nextBreak = function (string, index) {\n\t\t\tif (index === undefined) {\n\t\t\t\tindex = 0;\n\t\t\t}\n\t\t\tif (index < 0) {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t\tif (index >= string.length - 1) {\n\t\t\t\treturn string.length;\n\t\t\t}\n\t\t\tvar prev = getGraphemeBreakProperty(codePointAt(string, index));\n\t\t\tvar mid = [];\n\t\t\tfor (var i = index + 1; i < string.length; i++) {\n\t\t\t\t// check for already processed low surrogates\n\t\t\t\tif (isSurrogate(string, i - 1)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tvar next = getGraphemeBreakProperty(codePointAt(string, i));\n\t\t\t\tif (shouldBreak(prev, mid, next)) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\n\t\t\t\tmid.push(next);\n\t\t\t}\n\t\t\treturn string.length;\n\t\t};\n\n\t\t// Breaks the given string into an array of grapheme cluster strings\n\t\tthis.splitGraphemes = function (str) {\n\t\t\tvar res = [];\n\t\t\tvar index = 0;\n\t\t\tvar brk;\n\t\t\twhile ((brk = this.nextBreak(str, index)) < str.length) {\n\t\t\t\tres.push(str.slice(index, brk));\n\t\t\t\tindex = brk;\n\t\t\t}\n\t\t\tif (index < str.length) {\n\t\t\t\tres.push(str.slice(index));\n\t\t\t}\n\t\t\treturn res;\n\t\t};\n\n\t\t// Returns the iterator of grapheme clusters there are in the given string\n\t\tthis.iterateGraphemes = function (str) {\n\t\t\tvar index = 0;\n\t\t\tvar res = {\n\t\t\t\tnext: function () {\n\t\t\t\t\tvar value;\n\t\t\t\t\tvar brk;\n\t\t\t\t\tif ((brk = this.nextBreak(str, index)) < str.length) {\n\t\t\t\t\t\tvalue = str.slice(index, brk);\n\t\t\t\t\t\tindex = brk;\n\t\t\t\t\t\treturn { value: value, done: false };\n\t\t\t\t\t}\n\t\t\t\t\tif (index < str.length) {\n\t\t\t\t\t\tvalue = str.slice(index);\n\t\t\t\t\t\tindex = str.length;\n\t\t\t\t\t\treturn { value: value, done: false };\n\t\t\t\t\t}\n\t\t\t\t\treturn { value: undefined, done: true };\n\t\t\t\t}.bind(this)\n\t\t\t};\n\t\t\t// ES2015 @@iterator method (iterable) for spread syntax and for...of statement\n\t\t\tif (typeof Symbol !== 'undefined' && Symbol.iterator) {\n\t\t\t\tres[Symbol.iterator] = function () {\n\t\t\t\t\treturn res;\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn res;\n\t\t};\n\n\t\t// Returns the number of grapheme clusters there are in the given string\n\t\tthis.countGraphemes = function (str) {\n\t\t\tvar count = 0;\n\t\t\tvar index = 0;\n\t\t\tvar brk;\n\t\t\twhile ((brk = this.nextBreak(str, index)) < str.length) {\n\t\t\t\tindex = brk;\n\t\t\t\tcount++;\n\t\t\t}\n\t\t\tif (index < str.length) {\n\t\t\t\tcount++;\n\t\t\t}\n\t\t\treturn count;\n\t\t};\n\n\t\t//given a Unicode code point, determines this symbol's grapheme break property\n\t\tfunction getGraphemeBreakProperty(code) {\n\n\t\t\t//grapheme break property for Unicode 10.0.0, \n\t\t\t//taken from http://www.unicode.org/Public/10.0.0/ucd/auxiliary/GraphemeBreakProperty.txt\n\t\t\t//and adapted to JavaScript rules\n\n\t\t\tif (0x0600 <= code && code <= 0x0605 || // Cf   [6] ARABIC NUMBER SIGN..ARABIC NUMBER MARK ABOVE\n\t\t\t0x06DD == code || // Cf       ARABIC END OF AYAH\n\t\t\t0x070F == code || // Cf       SYRIAC ABBREVIATION MARK\n\t\t\t0x08E2 == code || // Cf       ARABIC DISPUTED END OF AYAH\n\t\t\t0x0D4E == code || // Lo       MALAYALAM LETTER DOT REPH\n\t\t\t0x110BD == code || // Cf       KAITHI NUMBER SIGN\n\t\t\t0x111C2 <= code && code <= 0x111C3 || // Lo   [2] SHARADA SIGN JIHVAMULIYA..SHARADA SIGN UPADHMANIYA\n\t\t\t0x11A3A == code || // Lo       ZANABAZAR SQUARE CLUSTER-INITIAL LETTER RA\n\t\t\t0x11A86 <= code && code <= 0x11A89 || // Lo   [4] SOYOMBO CLUSTER-INITIAL LETTER RA..SOYOMBO CLUSTER-INITIAL LETTER SA\n\t\t\t0x11D46 == code // Lo       MASARAM GONDI REPHA\n\t\t\t) {\n\t\t\t\t\treturn Prepend;\n\t\t\t\t}\n\t\t\tif (0x000D == code // Cc       <control-000D>\n\t\t\t) {\n\t\t\t\t\treturn CR;\n\t\t\t\t}\n\n\t\t\tif (0x000A == code // Cc       <control-000A>\n\t\t\t) {\n\t\t\t\t\treturn LF;\n\t\t\t\t}\n\n\t\t\tif (0x0000 <= code && code <= 0x0009 || // Cc  [10] <control-0000>..<control-0009>\n\t\t\t0x000B <= code && code <= 0x000C || // Cc   [2] <control-000B>..<control-000C>\n\t\t\t0x000E <= code && code <= 0x001F || // Cc  [18] <control-000E>..<control-001F>\n\t\t\t0x007F <= code && code <= 0x009F || // Cc  [33] <control-007F>..<control-009F>\n\t\t\t0x00AD == code || // Cf       SOFT HYPHEN\n\t\t\t0x061C == code || // Cf       ARABIC LETTER MARK\n\n\t\t\t0x180E == code || // Cf       MONGOLIAN VOWEL SEPARATOR\n\t\t\t0x200B == code || // Cf       ZERO WIDTH SPACE\n\t\t\t0x200E <= code && code <= 0x200F || // Cf   [2] LEFT-TO-RIGHT MARK..RIGHT-TO-LEFT MARK\n\t\t\t0x2028 == code || // Zl       LINE SEPARATOR\n\t\t\t0x2029 == code || // Zp       PARAGRAPH SEPARATOR\n\t\t\t0x202A <= code && code <= 0x202E || // Cf   [5] LEFT-TO-RIGHT EMBEDDING..RIGHT-TO-LEFT OVERRIDE\n\t\t\t0x2060 <= code && code <= 0x2064 || // Cf   [5] WORD JOINER..INVISIBLE PLUS\n\t\t\t0x2065 == code || // Cn       <reserved-2065>\n\t\t\t0x2066 <= code && code <= 0x206F || // Cf  [10] LEFT-TO-RIGHT ISOLATE..NOMINAL DIGIT SHAPES\n\t\t\t0xD800 <= code && code <= 0xDFFF || // Cs [2048] <surrogate-D800>..<surrogate-DFFF>\n\t\t\t0xFEFF == code || // Cf       ZERO WIDTH NO-BREAK SPACE\n\t\t\t0xFFF0 <= code && code <= 0xFFF8 || // Cn   [9] <reserved-FFF0>..<reserved-FFF8>\n\t\t\t0xFFF9 <= code && code <= 0xFFFB || // Cf   [3] INTERLINEAR ANNOTATION ANCHOR..INTERLINEAR ANNOTATION TERMINATOR\n\t\t\t0x1BCA0 <= code && code <= 0x1BCA3 || // Cf   [4] SHORTHAND FORMAT LETTER OVERLAP..SHORTHAND FORMAT UP STEP\n\t\t\t0x1D173 <= code && code <= 0x1D17A || // Cf   [8] MUSICAL SYMBOL BEGIN BEAM..MUSICAL SYMBOL END PHRASE\n\t\t\t0xE0000 == code || // Cn       <reserved-E0000>\n\t\t\t0xE0001 == code || // Cf       LANGUAGE TAG\n\t\t\t0xE0002 <= code && code <= 0xE001F || // Cn  [30] <reserved-E0002>..<reserved-E001F>\n\t\t\t0xE0080 <= code && code <= 0xE00FF || // Cn [128] <reserved-E0080>..<reserved-E00FF>\n\t\t\t0xE01F0 <= code && code <= 0xE0FFF // Cn [3600] <reserved-E01F0>..<reserved-E0FFF>\n\t\t\t) {\n\t\t\t\t\treturn Control;\n\t\t\t\t}\n\n\t\t\tif (0x0300 <= code && code <= 0x036F || // Mn [112] COMBINING GRAVE ACCENT..COMBINING LATIN SMALL LETTER X\n\t\t\t0x0483 <= code && code <= 0x0487 || // Mn   [5] COMBINING CYRILLIC TITLO..COMBINING CYRILLIC POKRYTIE\n\t\t\t0x0488 <= code && code <= 0x0489 || // Me   [2] COMBINING CYRILLIC HUNDRED THOUSANDS SIGN..COMBINING CYRILLIC MILLIONS SIGN\n\t\t\t0x0591 <= code && code <= 0x05BD || // Mn  [45] HEBREW ACCENT ETNAHTA..HEBREW POINT METEG\n\t\t\t0x05BF == code || // Mn       HEBREW POINT RAFE\n\t\t\t0x05C1 <= code && code <= 0x05C2 || // Mn   [2] HEBREW POINT SHIN DOT..HEBREW POINT SIN DOT\n\t\t\t0x05C4 <= code && code <= 0x05C5 || // Mn   [2] HEBREW MARK UPPER DOT..HEBREW MARK LOWER DOT\n\t\t\t0x05C7 == code || // Mn       HEBREW POINT QAMATS QATAN\n\t\t\t0x0610 <= code && code <= 0x061A || // Mn  [11] ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM..ARABIC SMALL KASRA\n\t\t\t0x064B <= code && code <= 0x065F || // Mn  [21] ARABIC FATHATAN..ARABIC WAVY HAMZA BELOW\n\t\t\t0x0670 == code || // Mn       ARABIC LETTER SUPERSCRIPT ALEF\n\t\t\t0x06D6 <= code && code <= 0x06DC || // Mn   [7] ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA..ARABIC SMALL HIGH SEEN\n\t\t\t0x06DF <= code && code <= 0x06E4 || // Mn   [6] ARABIC SMALL HIGH ROUNDED ZERO..ARABIC SMALL HIGH MADDA\n\t\t\t0x06E7 <= code && code <= 0x06E8 || // Mn   [2] ARABIC SMALL HIGH YEH..ARABIC SMALL HIGH NOON\n\t\t\t0x06EA <= code && code <= 0x06ED || // Mn   [4] ARABIC EMPTY CENTRE LOW STOP..ARABIC SMALL LOW MEEM\n\t\t\t0x0711 == code || // Mn       SYRIAC LETTER SUPERSCRIPT ALAPH\n\t\t\t0x0730 <= code && code <= 0x074A || // Mn  [27] SYRIAC PTHAHA ABOVE..SYRIAC BARREKH\n\t\t\t0x07A6 <= code && code <= 0x07B0 || // Mn  [11] THAANA ABAFILI..THAANA SUKUN\n\t\t\t0x07EB <= code && code <= 0x07F3 || // Mn   [9] NKO COMBINING SHORT HIGH TONE..NKO COMBINING DOUBLE DOT ABOVE\n\t\t\t0x0816 <= code && code <= 0x0819 || // Mn   [4] SAMARITAN MARK IN..SAMARITAN MARK DAGESH\n\t\t\t0x081B <= code && code <= 0x0823 || // Mn   [9] SAMARITAN MARK EPENTHETIC YUT..SAMARITAN VOWEL SIGN A\n\t\t\t0x0825 <= code && code <= 0x0827 || // Mn   [3] SAMARITAN VOWEL SIGN SHORT A..SAMARITAN VOWEL SIGN U\n\t\t\t0x0829 <= code && code <= 0x082D || // Mn   [5] SAMARITAN VOWEL SIGN LONG I..SAMARITAN MARK NEQUDAA\n\t\t\t0x0859 <= code && code <= 0x085B || // Mn   [3] MANDAIC AFFRICATION MARK..MANDAIC GEMINATION MARK\n\t\t\t0x08D4 <= code && code <= 0x08E1 || // Mn  [14] ARABIC SMALL HIGH WORD AR-RUB..ARABIC SMALL HIGH SIGN SAFHA\n\t\t\t0x08E3 <= code && code <= 0x0902 || // Mn  [32] ARABIC TURNED DAMMA BELOW..DEVANAGARI SIGN ANUSVARA\n\t\t\t0x093A == code || // Mn       DEVANAGARI VOWEL SIGN OE\n\t\t\t0x093C == code || // Mn       DEVANAGARI SIGN NUKTA\n\t\t\t0x0941 <= code && code <= 0x0948 || // Mn   [8] DEVANAGARI VOWEL SIGN U..DEVANAGARI VOWEL SIGN AI\n\t\t\t0x094D == code || // Mn       DEVANAGARI SIGN VIRAMA\n\t\t\t0x0951 <= code && code <= 0x0957 || // Mn   [7] DEVANAGARI STRESS SIGN UDATTA..DEVANAGARI VOWEL SIGN UUE\n\t\t\t0x0962 <= code && code <= 0x0963 || // Mn   [2] DEVANAGARI VOWEL SIGN VOCALIC L..DEVANAGARI VOWEL SIGN VOCALIC LL\n\t\t\t0x0981 == code || // Mn       BENGALI SIGN CANDRABINDU\n\t\t\t0x09BC == code || // Mn       BENGALI SIGN NUKTA\n\t\t\t0x09BE == code || // Mc       BENGALI VOWEL SIGN AA\n\t\t\t0x09C1 <= code && code <= 0x09C4 || // Mn   [4] BENGALI VOWEL SIGN U..BENGALI VOWEL SIGN VOCALIC RR\n\t\t\t0x09CD == code || // Mn       BENGALI SIGN VIRAMA\n\t\t\t0x09D7 == code || // Mc       BENGALI AU LENGTH MARK\n\t\t\t0x09E2 <= code && code <= 0x09E3 || // Mn   [2] BENGALI VOWEL SIGN VOCALIC L..BENGALI VOWEL SIGN VOCALIC LL\n\t\t\t0x0A01 <= code && code <= 0x0A02 || // Mn   [2] GURMUKHI SIGN ADAK BINDI..GURMUKHI SIGN BINDI\n\t\t\t0x0A3C == code || // Mn       GURMUKHI SIGN NUKTA\n\t\t\t0x0A41 <= code && code <= 0x0A42 || // Mn   [2] GURMUKHI VOWEL SIGN U..GURMUKHI VOWEL SIGN UU\n\t\t\t0x0A47 <= code && code <= 0x0A48 || // Mn   [2] GURMUKHI VOWEL SIGN EE..GURMUKHI VOWEL SIGN AI\n\t\t\t0x0A4B <= code && code <= 0x0A4D || // Mn   [3] GURMUKHI VOWEL SIGN OO..GURMUKHI SIGN VIRAMA\n\t\t\t0x0A51 == code || // Mn       GURMUKHI SIGN UDAAT\n\t\t\t0x0A70 <= code && code <= 0x0A71 || // Mn   [2] GURMUKHI TIPPI..GURMUKHI ADDAK\n\t\t\t0x0A75 == code || // Mn       GURMUKHI SIGN YAKASH\n\t\t\t0x0A81 <= code && code <= 0x0A82 || // Mn   [2] GUJARATI SIGN CANDRABINDU..GUJARATI SIGN ANUSVARA\n\t\t\t0x0ABC == code || // Mn       GUJARATI SIGN NUKTA\n\t\t\t0x0AC1 <= code && code <= 0x0AC5 || // Mn   [5] GUJARATI VOWEL SIGN U..GUJARATI VOWEL SIGN CANDRA E\n\t\t\t0x0AC7 <= code && code <= 0x0AC8 || // Mn   [2] GUJARATI VOWEL SIGN E..GUJARATI VOWEL SIGN AI\n\t\t\t0x0ACD == code || // Mn       GUJARATI SIGN VIRAMA\n\t\t\t0x0AE2 <= code && code <= 0x0AE3 || // Mn   [2] GUJARATI VOWEL SIGN VOCALIC L..GUJARATI VOWEL SIGN VOCALIC LL\n\t\t\t0x0AFA <= code && code <= 0x0AFF || // Mn   [6] GUJARATI SIGN SUKUN..GUJARATI SIGN TWO-CIRCLE NUKTA ABOVE\n\t\t\t0x0B01 == code || // Mn       ORIYA SIGN CANDRABINDU\n\t\t\t0x0B3C == code || // Mn       ORIYA SIGN NUKTA\n\t\t\t0x0B3E == code || // Mc       ORIYA VOWEL SIGN AA\n\t\t\t0x0B3F == code || // Mn       ORIYA VOWEL SIGN I\n\t\t\t0x0B41 <= code && code <= 0x0B44 || // Mn   [4] ORIYA VOWEL SIGN U..ORIYA VOWEL SIGN VOCALIC RR\n\t\t\t0x0B4D == code || // Mn       ORIYA SIGN VIRAMA\n\t\t\t0x0B56 == code || // Mn       ORIYA AI LENGTH MARK\n\t\t\t0x0B57 == code || // Mc       ORIYA AU LENGTH MARK\n\t\t\t0x0B62 <= code && code <= 0x0B63 || // Mn   [2] ORIYA VOWEL SIGN VOCALIC L..ORIYA VOWEL SIGN VOCALIC LL\n\t\t\t0x0B82 == code || // Mn       TAMIL SIGN ANUSVARA\n\t\t\t0x0BBE == code || // Mc       TAMIL VOWEL SIGN AA\n\t\t\t0x0BC0 == code || // Mn       TAMIL VOWEL SIGN II\n\t\t\t0x0BCD == code || // Mn       TAMIL SIGN VIRAMA\n\t\t\t0x0BD7 == code || // Mc       TAMIL AU LENGTH MARK\n\t\t\t0x0C00 == code || // Mn       TELUGU SIGN COMBINING CANDRABINDU ABOVE\n\t\t\t0x0C3E <= code && code <= 0x0C40 || // Mn   [3] TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN II\n\t\t\t0x0C46 <= code && code <= 0x0C48 || // Mn   [3] TELUGU VOWEL SIGN E..TELUGU VOWEL SIGN AI\n\t\t\t0x0C4A <= code && code <= 0x0C4D || // Mn   [4] TELUGU VOWEL SIGN O..TELUGU SIGN VIRAMA\n\t\t\t0x0C55 <= code && code <= 0x0C56 || // Mn   [2] TELUGU LENGTH MARK..TELUGU AI LENGTH MARK\n\t\t\t0x0C62 <= code && code <= 0x0C63 || // Mn   [2] TELUGU VOWEL SIGN VOCALIC L..TELUGU VOWEL SIGN VOCALIC LL\n\t\t\t0x0C81 == code || // Mn       KANNADA SIGN CANDRABINDU\n\t\t\t0x0CBC == code || // Mn       KANNADA SIGN NUKTA\n\t\t\t0x0CBF == code || // Mn       KANNADA VOWEL SIGN I\n\t\t\t0x0CC2 == code || // Mc       KANNADA VOWEL SIGN UU\n\t\t\t0x0CC6 == code || // Mn       KANNADA VOWEL SIGN E\n\t\t\t0x0CCC <= code && code <= 0x0CCD || // Mn   [2] KANNADA VOWEL SIGN AU..KANNADA SIGN VIRAMA\n\t\t\t0x0CD5 <= code && code <= 0x0CD6 || // Mc   [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK\n\t\t\t0x0CE2 <= code && code <= 0x0CE3 || // Mn   [2] KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL\n\t\t\t0x0D00 <= code && code <= 0x0D01 || // Mn   [2] MALAYALAM SIGN COMBINING ANUSVARA ABOVE..MALAYALAM SIGN CANDRABINDU\n\t\t\t0x0D3B <= code && code <= 0x0D3C || // Mn   [2] MALAYALAM SIGN VERTICAL BAR VIRAMA..MALAYALAM SIGN CIRCULAR VIRAMA\n\t\t\t0x0D3E == code || // Mc       MALAYALAM VOWEL SIGN AA\n\t\t\t0x0D41 <= code && code <= 0x0D44 || // Mn   [4] MALAYALAM VOWEL SIGN U..MALAYALAM VOWEL SIGN VOCALIC RR\n\t\t\t0x0D4D == code || // Mn       MALAYALAM SIGN VIRAMA\n\t\t\t0x0D57 == code || // Mc       MALAYALAM AU LENGTH MARK\n\t\t\t0x0D62 <= code && code <= 0x0D63 || // Mn   [2] MALAYALAM VOWEL SIGN VOCALIC L..MALAYALAM VOWEL SIGN VOCALIC LL\n\t\t\t0x0DCA == code || // Mn       SINHALA SIGN AL-LAKUNA\n\t\t\t0x0DCF == code || // Mc       SINHALA VOWEL SIGN AELA-PILLA\n\t\t\t0x0DD2 <= code && code <= 0x0DD4 || // Mn   [3] SINHALA VOWEL SIGN KETTI IS-PILLA..SINHALA VOWEL SIGN KETTI PAA-PILLA\n\t\t\t0x0DD6 == code || // Mn       SINHALA VOWEL SIGN DIGA PAA-PILLA\n\t\t\t0x0DDF == code || // Mc       SINHALA VOWEL SIGN GAYANUKITTA\n\t\t\t0x0E31 == code || // Mn       THAI CHARACTER MAI HAN-AKAT\n\t\t\t0x0E34 <= code && code <= 0x0E3A || // Mn   [7] THAI CHARACTER SARA I..THAI CHARACTER PHINTHU\n\t\t\t0x0E47 <= code && code <= 0x0E4E || // Mn   [8] THAI CHARACTER MAITAIKHU..THAI CHARACTER YAMAKKAN\n\t\t\t0x0EB1 == code || // Mn       LAO VOWEL SIGN MAI KAN\n\t\t\t0x0EB4 <= code && code <= 0x0EB9 || // Mn   [6] LAO VOWEL SIGN I..LAO VOWEL SIGN UU\n\t\t\t0x0EBB <= code && code <= 0x0EBC || // Mn   [2] LAO VOWEL SIGN MAI KON..LAO SEMIVOWEL SIGN LO\n\t\t\t0x0EC8 <= code && code <= 0x0ECD || // Mn   [6] LAO TONE MAI EK..LAO NIGGAHITA\n\t\t\t0x0F18 <= code && code <= 0x0F19 || // Mn   [2] TIBETAN ASTROLOGICAL SIGN -KHYUD PA..TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS\n\t\t\t0x0F35 == code || // Mn       TIBETAN MARK NGAS BZUNG NYI ZLA\n\t\t\t0x0F37 == code || // Mn       TIBETAN MARK NGAS BZUNG SGOR RTAGS\n\t\t\t0x0F39 == code || // Mn       TIBETAN MARK TSA -PHRU\n\t\t\t0x0F71 <= code && code <= 0x0F7E || // Mn  [14] TIBETAN VOWEL SIGN AA..TIBETAN SIGN RJES SU NGA RO\n\t\t\t0x0F80 <= code && code <= 0x0F84 || // Mn   [5] TIBETAN VOWEL SIGN REVERSED I..TIBETAN MARK HALANTA\n\t\t\t0x0F86 <= code && code <= 0x0F87 || // Mn   [2] TIBETAN SIGN LCI RTAGS..TIBETAN SIGN YANG RTAGS\n\t\t\t0x0F8D <= code && code <= 0x0F97 || // Mn  [11] TIBETAN SUBJOINED SIGN LCE TSA CAN..TIBETAN SUBJOINED LETTER JA\n\t\t\t0x0F99 <= code && code <= 0x0FBC || // Mn  [36] TIBETAN SUBJOINED LETTER NYA..TIBETAN SUBJOINED LETTER FIXED-FORM RA\n\t\t\t0x0FC6 == code || // Mn       TIBETAN SYMBOL PADMA GDAN\n\t\t\t0x102D <= code && code <= 0x1030 || // Mn   [4] MYANMAR VOWEL SIGN I..MYANMAR VOWEL SIGN UU\n\t\t\t0x1032 <= code && code <= 0x1037 || // Mn   [6] MYANMAR VOWEL SIGN AI..MYANMAR SIGN DOT BELOW\n\t\t\t0x1039 <= code && code <= 0x103A || // Mn   [2] MYANMAR SIGN VIRAMA..MYANMAR SIGN ASAT\n\t\t\t0x103D <= code && code <= 0x103E || // Mn   [2] MYANMAR CONSONANT SIGN MEDIAL WA..MYANMAR CONSONANT SIGN MEDIAL HA\n\t\t\t0x1058 <= code && code <= 0x1059 || // Mn   [2] MYANMAR VOWEL SIGN VOCALIC L..MYANMAR VOWEL SIGN VOCALIC LL\n\t\t\t0x105E <= code && code <= 0x1060 || // Mn   [3] MYANMAR CONSONANT SIGN MON MEDIAL NA..MYANMAR CONSONANT SIGN MON MEDIAL LA\n\t\t\t0x1071 <= code && code <= 0x1074 || // Mn   [4] MYANMAR VOWEL SIGN GEBA KAREN I..MYANMAR VOWEL SIGN KAYAH EE\n\t\t\t0x1082 == code || // Mn       MYANMAR CONSONANT SIGN SHAN MEDIAL WA\n\t\t\t0x1085 <= code && code <= 0x1086 || // Mn   [2] MYANMAR VOWEL SIGN SHAN E ABOVE..MYANMAR VOWEL SIGN SHAN FINAL Y\n\t\t\t0x108D == code || // Mn       MYANMAR SIGN SHAN COUNCIL EMPHATIC TONE\n\t\t\t0x109D == code || // Mn       MYANMAR VOWEL SIGN AITON AI\n\t\t\t0x135D <= code && code <= 0x135F || // Mn   [3] ETHIOPIC COMBINING GEMINATION AND VOWEL LENGTH MARK..ETHIOPIC COMBINING GEMINATION MARK\n\t\t\t0x1712 <= code && code <= 0x1714 || // Mn   [3] TAGALOG VOWEL SIGN I..TAGALOG SIGN VIRAMA\n\t\t\t0x1732 <= code && code <= 0x1734 || // Mn   [3] HANUNOO VOWEL SIGN I..HANUNOO SIGN PAMUDPOD\n\t\t\t0x1752 <= code && code <= 0x1753 || // Mn   [2] BUHID VOWEL SIGN I..BUHID VOWEL SIGN U\n\t\t\t0x1772 <= code && code <= 0x1773 || // Mn   [2] TAGBANWA VOWEL SIGN I..TAGBANWA VOWEL SIGN U\n\t\t\t0x17B4 <= code && code <= 0x17B5 || // Mn   [2] KHMER VOWEL INHERENT AQ..KHMER VOWEL INHERENT AA\n\t\t\t0x17B7 <= code && code <= 0x17BD || // Mn   [7] KHMER VOWEL SIGN I..KHMER VOWEL SIGN UA\n\t\t\t0x17C6 == code || // Mn       KHMER SIGN NIKAHIT\n\t\t\t0x17C9 <= code && code <= 0x17D3 || // Mn  [11] KHMER SIGN MUUSIKATOAN..KHMER SIGN BATHAMASAT\n\t\t\t0x17DD == code || // Mn       KHMER SIGN ATTHACAN\n\t\t\t0x180B <= code && code <= 0x180D || // Mn   [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE\n\t\t\t0x1885 <= code && code <= 0x1886 || // Mn   [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA\n\t\t\t0x18A9 == code || // Mn       MONGOLIAN LETTER ALI GALI DAGALGA\n\t\t\t0x1920 <= code && code <= 0x1922 || // Mn   [3] LIMBU VOWEL SIGN A..LIMBU VOWEL SIGN U\n\t\t\t0x1927 <= code && code <= 0x1928 || // Mn   [2] LIMBU VOWEL SIGN E..LIMBU VOWEL SIGN O\n\t\t\t0x1932 == code || // Mn       LIMBU SMALL LETTER ANUSVARA\n\t\t\t0x1939 <= code && code <= 0x193B || // Mn   [3] LIMBU SIGN MUKPHRENG..LIMBU SIGN SA-I\n\t\t\t0x1A17 <= code && code <= 0x1A18 || // Mn   [2] BUGINESE VOWEL SIGN I..BUGINESE VOWEL SIGN U\n\t\t\t0x1A1B == code || // Mn       BUGINESE VOWEL SIGN AE\n\t\t\t0x1A56 == code || // Mn       TAI THAM CONSONANT SIGN MEDIAL LA\n\t\t\t0x1A58 <= code && code <= 0x1A5E || // Mn   [7] TAI THAM SIGN MAI KANG LAI..TAI THAM CONSONANT SIGN SA\n\t\t\t0x1A60 == code || // Mn       TAI THAM SIGN SAKOT\n\t\t\t0x1A62 == code || // Mn       TAI THAM VOWEL SIGN MAI SAT\n\t\t\t0x1A65 <= code && code <= 0x1A6C || // Mn   [8] TAI THAM VOWEL SIGN I..TAI THAM VOWEL SIGN OA BELOW\n\t\t\t0x1A73 <= code && code <= 0x1A7C || // Mn  [10] TAI THAM VOWEL SIGN OA ABOVE..TAI THAM SIGN KHUEN-LUE KARAN\n\t\t\t0x1A7F == code || // Mn       TAI THAM COMBINING CRYPTOGRAMMIC DOT\n\t\t\t0x1AB0 <= code && code <= 0x1ABD || // Mn  [14] COMBINING DOUBLED CIRCUMFLEX ACCENT..COMBINING PARENTHESES BELOW\n\t\t\t0x1ABE == code || // Me       COMBINING PARENTHESES OVERLAY\n\t\t\t0x1B00 <= code && code <= 0x1B03 || // Mn   [4] BALINESE SIGN ULU RICEM..BALINESE SIGN SURANG\n\t\t\t0x1B34 == code || // Mn       BALINESE SIGN REREKAN\n\t\t\t0x1B36 <= code && code <= 0x1B3A || // Mn   [5] BALINESE VOWEL SIGN ULU..BALINESE VOWEL SIGN RA REPA\n\t\t\t0x1B3C == code || // Mn       BALINESE VOWEL SIGN LA LENGA\n\t\t\t0x1B42 == code || // Mn       BALINESE VOWEL SIGN PEPET\n\t\t\t0x1B6B <= code && code <= 0x1B73 || // Mn   [9] BALINESE MUSICAL SYMBOL COMBINING TEGEH..BALINESE MUSICAL SYMBOL COMBINING GONG\n\t\t\t0x1B80 <= code && code <= 0x1B81 || // Mn   [2] SUNDANESE SIGN PANYECEK..SUNDANESE SIGN PANGLAYAR\n\t\t\t0x1BA2 <= code && code <= 0x1BA5 || // Mn   [4] SUNDANESE CONSONANT SIGN PANYAKRA..SUNDANESE VOWEL SIGN PANYUKU\n\t\t\t0x1BA8 <= code && code <= 0x1BA9 || // Mn   [2] SUNDANESE VOWEL SIGN PAMEPET..SUNDANESE VOWEL SIGN PANEULEUNG\n\t\t\t0x1BAB <= code && code <= 0x1BAD || // Mn   [3] SUNDANESE SIGN VIRAMA..SUNDANESE CONSONANT SIGN PASANGAN WA\n\t\t\t0x1BE6 == code || // Mn       BATAK SIGN TOMPI\n\t\t\t0x1BE8 <= code && code <= 0x1BE9 || // Mn   [2] BATAK VOWEL SIGN PAKPAK E..BATAK VOWEL SIGN EE\n\t\t\t0x1BED == code || // Mn       BATAK VOWEL SIGN KARO O\n\t\t\t0x1BEF <= code && code <= 0x1BF1 || // Mn   [3] BATAK VOWEL SIGN U FOR SIMALUNGUN SA..BATAK CONSONANT SIGN H\n\t\t\t0x1C2C <= code && code <= 0x1C33 || // Mn   [8] LEPCHA VOWEL SIGN E..LEPCHA CONSONANT SIGN T\n\t\t\t0x1C36 <= code && code <= 0x1C37 || // Mn   [2] LEPCHA SIGN RAN..LEPCHA SIGN NUKTA\n\t\t\t0x1CD0 <= code && code <= 0x1CD2 || // Mn   [3] VEDIC TONE KARSHANA..VEDIC TONE PRENKHA\n\t\t\t0x1CD4 <= code && code <= 0x1CE0 || // Mn  [13] VEDIC SIGN YAJURVEDIC MIDLINE SVARITA..VEDIC TONE RIGVEDIC KASHMIRI INDEPENDENT SVARITA\n\t\t\t0x1CE2 <= code && code <= 0x1CE8 || // Mn   [7] VEDIC SIGN VISARGA SVARITA..VEDIC SIGN VISARGA ANUDATTA WITH TAIL\n\t\t\t0x1CED == code || // Mn       VEDIC SIGN TIRYAK\n\t\t\t0x1CF4 == code || // Mn       VEDIC TONE CANDRA ABOVE\n\t\t\t0x1CF8 <= code && code <= 0x1CF9 || // Mn   [2] VEDIC TONE RING ABOVE..VEDIC TONE DOUBLE RING ABOVE\n\t\t\t0x1DC0 <= code && code <= 0x1DF9 || // Mn  [58] COMBINING DOTTED GRAVE ACCENT..COMBINING WIDE INVERTED BRIDGE BELOW\n\t\t\t0x1DFB <= code && code <= 0x1DFF || // Mn   [5] COMBINING DELETION MARK..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW\n\t\t\t0x200C == code || // Cf       ZERO WIDTH NON-JOINER\n\t\t\t0x20D0 <= code && code <= 0x20DC || // Mn  [13] COMBINING LEFT HARPOON ABOVE..COMBINING FOUR DOTS ABOVE\n\t\t\t0x20DD <= code && code <= 0x20E0 || // Me   [4] COMBINING ENCLOSING CIRCLE..COMBINING ENCLOSING CIRCLE BACKSLASH\n\t\t\t0x20E1 == code || // Mn       COMBINING LEFT RIGHT ARROW ABOVE\n\t\t\t0x20E2 <= code && code <= 0x20E4 || // Me   [3] COMBINING ENCLOSING SCREEN..COMBINING ENCLOSING UPWARD POINTING TRIANGLE\n\t\t\t0x20E5 <= code && code <= 0x20F0 || // Mn  [12] COMBINING REVERSE SOLIDUS OVERLAY..COMBINING ASTERISK ABOVE\n\t\t\t0x2CEF <= code && code <= 0x2CF1 || // Mn   [3] COPTIC COMBINING NI ABOVE..COPTIC COMBINING SPIRITUS LENIS\n\t\t\t0x2D7F == code || // Mn       TIFINAGH CONSONANT JOINER\n\t\t\t0x2DE0 <= code && code <= 0x2DFF || // Mn  [32] COMBINING CYRILLIC LETTER BE..COMBINING CYRILLIC LETTER IOTIFIED BIG YUS\n\t\t\t0x302A <= code && code <= 0x302D || // Mn   [4] IDEOGRAPHIC LEVEL TONE MARK..IDEOGRAPHIC ENTERING TONE MARK\n\t\t\t0x302E <= code && code <= 0x302F || // Mc   [2] HANGUL SINGLE DOT TONE MARK..HANGUL DOUBLE DOT TONE MARK\n\t\t\t0x3099 <= code && code <= 0x309A || // Mn   [2] COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK\n\t\t\t0xA66F == code || // Mn       COMBINING CYRILLIC VZMET\n\t\t\t0xA670 <= code && code <= 0xA672 || // Me   [3] COMBINING CYRILLIC TEN MILLIONS SIGN..COMBINING CYRILLIC THOUSAND MILLIONS SIGN\n\t\t\t0xA674 <= code && code <= 0xA67D || // Mn  [10] COMBINING CYRILLIC LETTER UKRAINIAN IE..COMBINING CYRILLIC PAYEROK\n\t\t\t0xA69E <= code && code <= 0xA69F || // Mn   [2] COMBINING CYRILLIC LETTER EF..COMBINING CYRILLIC LETTER IOTIFIED E\n\t\t\t0xA6F0 <= code && code <= 0xA6F1 || // Mn   [2] BAMUM COMBINING MARK KOQNDON..BAMUM COMBINING MARK TUKWENTIS\n\t\t\t0xA802 == code || // Mn       SYLOTI NAGRI SIGN DVISVARA\n\t\t\t0xA806 == code || // Mn       SYLOTI NAGRI SIGN HASANTA\n\t\t\t0xA80B == code || // Mn       SYLOTI NAGRI SIGN ANUSVARA\n\t\t\t0xA825 <= code && code <= 0xA826 || // Mn   [2] SYLOTI NAGRI VOWEL SIGN U..SYLOTI NAGRI VOWEL SIGN E\n\t\t\t0xA8C4 <= code && code <= 0xA8C5 || // Mn   [2] SAURASHTRA SIGN VIRAMA..SAURASHTRA SIGN CANDRABINDU\n\t\t\t0xA8E0 <= code && code <= 0xA8F1 || // Mn  [18] COMBINING DEVANAGARI DIGIT ZERO..COMBINING DEVANAGARI SIGN AVAGRAHA\n\t\t\t0xA926 <= code && code <= 0xA92D || // Mn   [8] KAYAH LI VOWEL UE..KAYAH LI TONE CALYA PLOPHU\n\t\t\t0xA947 <= code && code <= 0xA951 || // Mn  [11] REJANG VOWEL SIGN I..REJANG CONSONANT SIGN R\n\t\t\t0xA980 <= code && code <= 0xA982 || // Mn   [3] JAVANESE SIGN PANYANGGA..JAVANESE SIGN LAYAR\n\t\t\t0xA9B3 == code || // Mn       JAVANESE SIGN CECAK TELU\n\t\t\t0xA9B6 <= code && code <= 0xA9B9 || // Mn   [4] JAVANESE VOWEL SIGN WULU..JAVANESE VOWEL SIGN SUKU MENDUT\n\t\t\t0xA9BC == code || // Mn       JAVANESE VOWEL SIGN PEPET\n\t\t\t0xA9E5 == code || // Mn       MYANMAR SIGN SHAN SAW\n\t\t\t0xAA29 <= code && code <= 0xAA2E || // Mn   [6] CHAM VOWEL SIGN AA..CHAM VOWEL SIGN OE\n\t\t\t0xAA31 <= code && code <= 0xAA32 || // Mn   [2] CHAM VOWEL SIGN AU..CHAM VOWEL SIGN UE\n\t\t\t0xAA35 <= code && code <= 0xAA36 || // Mn   [2] CHAM CONSONANT SIGN LA..CHAM CONSONANT SIGN WA\n\t\t\t0xAA43 == code || // Mn       CHAM CONSONANT SIGN FINAL NG\n\t\t\t0xAA4C == code || // Mn       CHAM CONSONANT SIGN FINAL M\n\t\t\t0xAA7C == code || // Mn       MYANMAR SIGN TAI LAING TONE-2\n\t\t\t0xAAB0 == code || // Mn       TAI VIET MAI KANG\n\t\t\t0xAAB2 <= code && code <= 0xAAB4 || // Mn   [3] TAI VIET VOWEL I..TAI VIET VOWEL U\n\t\t\t0xAAB7 <= code && code <= 0xAAB8 || // Mn   [2] TAI VIET MAI KHIT..TAI VIET VOWEL IA\n\t\t\t0xAABE <= code && code <= 0xAABF || // Mn   [2] TAI VIET VOWEL AM..TAI VIET TONE MAI EK\n\t\t\t0xAAC1 == code || // Mn       TAI VIET TONE MAI THO\n\t\t\t0xAAEC <= code && code <= 0xAAED || // Mn   [2] MEETEI MAYEK VOWEL SIGN UU..MEETEI MAYEK VOWEL SIGN AAI\n\t\t\t0xAAF6 == code || // Mn       MEETEI MAYEK VIRAMA\n\t\t\t0xABE5 == code || // Mn       MEETEI MAYEK VOWEL SIGN ANAP\n\t\t\t0xABE8 == code || // Mn       MEETEI MAYEK VOWEL SIGN UNAP\n\t\t\t0xABED == code || // Mn       MEETEI MAYEK APUN IYEK\n\t\t\t0xFB1E == code || // Mn       HEBREW POINT JUDEO-SPANISH VARIKA\n\t\t\t0xFE00 <= code && code <= 0xFE0F || // Mn  [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16\n\t\t\t0xFE20 <= code && code <= 0xFE2F || // Mn  [16] COMBINING LIGATURE LEFT HALF..COMBINING CYRILLIC TITLO RIGHT HALF\n\t\t\t0xFF9E <= code && code <= 0xFF9F || // Lm   [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK\n\t\t\t0x101FD == code || // Mn       PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE\n\t\t\t0x102E0 == code || // Mn       COPTIC EPACT THOUSANDS MARK\n\t\t\t0x10376 <= code && code <= 0x1037A || // Mn   [5] COMBINING OLD PERMIC LETTER AN..COMBINING OLD PERMIC LETTER SII\n\t\t\t0x10A01 <= code && code <= 0x10A03 || // Mn   [3] KHAROSHTHI VOWEL SIGN I..KHAROSHTHI VOWEL SIGN VOCALIC R\n\t\t\t0x10A05 <= code && code <= 0x10A06 || // Mn   [2] KHAROSHTHI VOWEL SIGN E..KHAROSHTHI VOWEL SIGN O\n\t\t\t0x10A0C <= code && code <= 0x10A0F || // Mn   [4] KHAROSHTHI VOWEL LENGTH MARK..KHAROSHTHI SIGN VISARGA\n\t\t\t0x10A38 <= code && code <= 0x10A3A || // Mn   [3] KHAROSHTHI SIGN BAR ABOVE..KHAROSHTHI SIGN DOT BELOW\n\t\t\t0x10A3F == code || // Mn       KHAROSHTHI VIRAMA\n\t\t\t0x10AE5 <= code && code <= 0x10AE6 || // Mn   [2] MANICHAEAN ABBREVIATION MARK ABOVE..MANICHAEAN ABBREVIATION MARK BELOW\n\t\t\t0x11001 == code || // Mn       BRAHMI SIGN ANUSVARA\n\t\t\t0x11038 <= code && code <= 0x11046 || // Mn  [15] BRAHMI VOWEL SIGN AA..BRAHMI VIRAMA\n\t\t\t0x1107F <= code && code <= 0x11081 || // Mn   [3] BRAHMI NUMBER JOINER..KAITHI SIGN ANUSVARA\n\t\t\t0x110B3 <= code && code <= 0x110B6 || // Mn   [4] KAITHI VOWEL SIGN U..KAITHI VOWEL SIGN AI\n\t\t\t0x110B9 <= code && code <= 0x110BA || // Mn   [2] KAITHI SIGN VIRAMA..KAITHI SIGN NUKTA\n\t\t\t0x11100 <= code && code <= 0x11102 || // Mn   [3] CHAKMA SIGN CANDRABINDU..CHAKMA SIGN VISARGA\n\t\t\t0x11127 <= code && code <= 0x1112B || // Mn   [5] CHAKMA VOWEL SIGN A..CHAKMA VOWEL SIGN UU\n\t\t\t0x1112D <= code && code <= 0x11134 || // Mn   [8] CHAKMA VOWEL SIGN AI..CHAKMA MAAYYAA\n\t\t\t0x11173 == code || // Mn       MAHAJANI SIGN NUKTA\n\t\t\t0x11180 <= code && code <= 0x11181 || // Mn   [2] SHARADA SIGN CANDRABINDU..SHARADA SIGN ANUSVARA\n\t\t\t0x111B6 <= code && code <= 0x111BE || // Mn   [9] SHARADA VOWEL SIGN U..SHARADA VOWEL SIGN O\n\t\t\t0x111CA <= code && code <= 0x111CC || // Mn   [3] SHARADA SIGN NUKTA..SHARADA EXTRA SHORT VOWEL MARK\n\t\t\t0x1122F <= code && code <= 0x11231 || // Mn   [3] KHOJKI VOWEL SIGN U..KHOJKI VOWEL SIGN AI\n\t\t\t0x11234 == code || // Mn       KHOJKI SIGN ANUSVARA\n\t\t\t0x11236 <= code && code <= 0x11237 || // Mn   [2] KHOJKI SIGN NUKTA..KHOJKI SIGN SHADDA\n\t\t\t0x1123E == code || // Mn       KHOJKI SIGN SUKUN\n\t\t\t0x112DF == code || // Mn       KHUDAWADI SIGN ANUSVARA\n\t\t\t0x112E3 <= code && code <= 0x112EA || // Mn   [8] KHUDAWADI VOWEL SIGN U..KHUDAWADI SIGN VIRAMA\n\t\t\t0x11300 <= code && code <= 0x11301 || // Mn   [2] GRANTHA SIGN COMBINING ANUSVARA ABOVE..GRANTHA SIGN CANDRABINDU\n\t\t\t0x1133C == code || // Mn       GRANTHA SIGN NUKTA\n\t\t\t0x1133E == code || // Mc       GRANTHA VOWEL SIGN AA\n\t\t\t0x11340 == code || // Mn       GRANTHA VOWEL SIGN II\n\t\t\t0x11357 == code || // Mc       GRANTHA AU LENGTH MARK\n\t\t\t0x11366 <= code && code <= 0x1136C || // Mn   [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX\n\t\t\t0x11370 <= code && code <= 0x11374 || // Mn   [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA\n\t\t\t0x11438 <= code && code <= 0x1143F || // Mn   [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI\n\t\t\t0x11442 <= code && code <= 0x11444 || // Mn   [3] NEWA SIGN VIRAMA..NEWA SIGN ANUSVARA\n\t\t\t0x11446 == code || // Mn       NEWA SIGN NUKTA\n\t\t\t0x114B0 == code || // Mc       TIRHUTA VOWEL SIGN AA\n\t\t\t0x114B3 <= code && code <= 0x114B8 || // Mn   [6] TIRHUTA VOWEL SIGN U..TIRHUTA VOWEL SIGN VOCALIC LL\n\t\t\t0x114BA == code || // Mn       TIRHUTA VOWEL SIGN SHORT E\n\t\t\t0x114BD == code || // Mc       TIRHUTA VOWEL SIGN SHORT O\n\t\t\t0x114BF <= code && code <= 0x114C0 || // Mn   [2] TIRHUTA SIGN CANDRABINDU..TIRHUTA SIGN ANUSVARA\n\t\t\t0x114C2 <= code && code <= 0x114C3 || // Mn   [2] TIRHUTA SIGN VIRAMA..TIRHUTA SIGN NUKTA\n\t\t\t0x115AF == code || // Mc       SIDDHAM VOWEL SIGN AA\n\t\t\t0x115B2 <= code && code <= 0x115B5 || // Mn   [4] SIDDHAM VOWEL SIGN U..SIDDHAM VOWEL SIGN VOCALIC RR\n\t\t\t0x115BC <= code && code <= 0x115BD || // Mn   [2] SIDDHAM SIGN CANDRABINDU..SIDDHAM SIGN ANUSVARA\n\t\t\t0x115BF <= code && code <= 0x115C0 || // Mn   [2] SIDDHAM SIGN VIRAMA..SIDDHAM SIGN NUKTA\n\t\t\t0x115DC <= code && code <= 0x115DD || // Mn   [2] SIDDHAM VOWEL SIGN ALTERNATE U..SIDDHAM VOWEL SIGN ALTERNATE UU\n\t\t\t0x11633 <= code && code <= 0x1163A || // Mn   [8] MODI VOWEL SIGN U..MODI VOWEL SIGN AI\n\t\t\t0x1163D == code || // Mn       MODI SIGN ANUSVARA\n\t\t\t0x1163F <= code && code <= 0x11640 || // Mn   [2] MODI SIGN VIRAMA..MODI SIGN ARDHACANDRA\n\t\t\t0x116AB == code || // Mn       TAKRI SIGN ANUSVARA\n\t\t\t0x116AD == code || // Mn       TAKRI VOWEL SIGN AA\n\t\t\t0x116B0 <= code && code <= 0x116B5 || // Mn   [6] TAKRI VOWEL SIGN U..TAKRI VOWEL SIGN AU\n\t\t\t0x116B7 == code || // Mn       TAKRI SIGN NUKTA\n\t\t\t0x1171D <= code && code <= 0x1171F || // Mn   [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA\n\t\t\t0x11722 <= code && code <= 0x11725 || // Mn   [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU\n\t\t\t0x11727 <= code && code <= 0x1172B || // Mn   [5] AHOM VOWEL SIGN AW..AHOM SIGN KILLER\n\t\t\t0x11A01 <= code && code <= 0x11A06 || // Mn   [6] ZANABAZAR SQUARE VOWEL SIGN I..ZANABAZAR SQUARE VOWEL SIGN O\n\t\t\t0x11A09 <= code && code <= 0x11A0A || // Mn   [2] ZANABAZAR SQUARE VOWEL SIGN REVERSED I..ZANABAZAR SQUARE VOWEL LENGTH MARK\n\t\t\t0x11A33 <= code && code <= 0x11A38 || // Mn   [6] ZANABAZAR SQUARE FINAL CONSONANT MARK..ZANABAZAR SQUARE SIGN ANUSVARA\n\t\t\t0x11A3B <= code && code <= 0x11A3E || // Mn   [4] ZANABAZAR SQUARE CLUSTER-FINAL LETTER YA..ZANABAZAR SQUARE CLUSTER-FINAL LETTER VA\n\t\t\t0x11A47 == code || // Mn       ZANABAZAR SQUARE SUBJOINER\n\t\t\t0x11A51 <= code && code <= 0x11A56 || // Mn   [6] SOYOMBO VOWEL SIGN I..SOYOMBO VOWEL SIGN OE\n\t\t\t0x11A59 <= code && code <= 0x11A5B || // Mn   [3] SOYOMBO VOWEL SIGN VOCALIC R..SOYOMBO VOWEL LENGTH MARK\n\t\t\t0x11A8A <= code && code <= 0x11A96 || // Mn  [13] SOYOMBO FINAL CONSONANT SIGN G..SOYOMBO SIGN ANUSVARA\n\t\t\t0x11A98 <= code && code <= 0x11A99 || // Mn   [2] SOYOMBO GEMINATION MARK..SOYOMBO SUBJOINER\n\t\t\t0x11C30 <= code && code <= 0x11C36 || // Mn   [7] BHAIKSUKI VOWEL SIGN I..BHAIKSUKI VOWEL SIGN VOCALIC L\n\t\t\t0x11C38 <= code && code <= 0x11C3D || // Mn   [6] BHAIKSUKI VOWEL SIGN E..BHAIKSUKI SIGN ANUSVARA\n\t\t\t0x11C3F == code || // Mn       BHAIKSUKI SIGN VIRAMA\n\t\t\t0x11C92 <= code && code <= 0x11CA7 || // Mn  [22] MARCHEN SUBJOINED LETTER KA..MARCHEN SUBJOINED LETTER ZA\n\t\t\t0x11CAA <= code && code <= 0x11CB0 || // Mn   [7] MARCHEN SUBJOINED LETTER RA..MARCHEN VOWEL SIGN AA\n\t\t\t0x11CB2 <= code && code <= 0x11CB3 || // Mn   [2] MARCHEN VOWEL SIGN U..MARCHEN VOWEL SIGN E\n\t\t\t0x11CB5 <= code && code <= 0x11CB6 || // Mn   [2] MARCHEN SIGN ANUSVARA..MARCHEN SIGN CANDRABINDU\n\t\t\t0x11D31 <= code && code <= 0x11D36 || // Mn   [6] MASARAM GONDI VOWEL SIGN AA..MASARAM GONDI VOWEL SIGN VOCALIC R\n\t\t\t0x11D3A == code || // Mn       MASARAM GONDI VOWEL SIGN E\n\t\t\t0x11D3C <= code && code <= 0x11D3D || // Mn   [2] MASARAM GONDI VOWEL SIGN AI..MASARAM GONDI VOWEL SIGN O\n\t\t\t0x11D3F <= code && code <= 0x11D45 || // Mn   [7] MASARAM GONDI VOWEL SIGN AU..MASARAM GONDI VIRAMA\n\t\t\t0x11D47 == code || // Mn       MASARAM GONDI RA-KARA\n\t\t\t0x16AF0 <= code && code <= 0x16AF4 || // Mn   [5] BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE\n\t\t\t0x16B30 <= code && code <= 0x16B36 || // Mn   [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM\n\t\t\t0x16F8F <= code && code <= 0x16F92 || // Mn   [4] MIAO TONE RIGHT..MIAO TONE BELOW\n\t\t\t0x1BC9D <= code && code <= 0x1BC9E || // Mn   [2] DUPLOYAN THICK LETTER SELECTOR..DUPLOYAN DOUBLE MARK\n\t\t\t0x1D165 == code || // Mc       MUSICAL SYMBOL COMBINING STEM\n\t\t\t0x1D167 <= code && code <= 0x1D169 || // Mn   [3] MUSICAL SYMBOL COMBINING TREMOLO-1..MUSICAL SYMBOL COMBINING TREMOLO-3\n\t\t\t0x1D16E <= code && code <= 0x1D172 || // Mc   [5] MUSICAL SYMBOL COMBINING FLAG-1..MUSICAL SYMBOL COMBINING FLAG-5\n\t\t\t0x1D17B <= code && code <= 0x1D182 || // Mn   [8] MUSICAL SYMBOL COMBINING ACCENT..MUSICAL SYMBOL COMBINING LOURE\n\t\t\t0x1D185 <= code && code <= 0x1D18B || // Mn   [7] MUSICAL SYMBOL COMBINING DOIT..MUSICAL SYMBOL COMBINING TRIPLE TONGUE\n\t\t\t0x1D1AA <= code && code <= 0x1D1AD || // Mn   [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO\n\t\t\t0x1D242 <= code && code <= 0x1D244 || // Mn   [3] COMBINING GREEK MUSICAL TRISEME..COMBINING GREEK MUSICAL PENTASEME\n\t\t\t0x1DA00 <= code && code <= 0x1DA36 || // Mn  [55] SIGNWRITING HEAD RIM..SIGNWRITING AIR SUCKING IN\n\t\t\t0x1DA3B <= code && code <= 0x1DA6C || // Mn  [50] SIGNWRITING MOUTH CLOSED NEUTRAL..SIGNWRITING EXCITEMENT\n\t\t\t0x1DA75 == code || // Mn       SIGNWRITING UPPER BODY TILTING FROM HIP JOINTS\n\t\t\t0x1DA84 == code || // Mn       SIGNWRITING LOCATION HEAD NECK\n\t\t\t0x1DA9B <= code && code <= 0x1DA9F || // Mn   [5] SIGNWRITING FILL MODIFIER-2..SIGNWRITING FILL MODIFIER-6\n\t\t\t0x1DAA1 <= code && code <= 0x1DAAF || // Mn  [15] SIGNWRITING ROTATION MODIFIER-2..SIGNWRITING ROTATION MODIFIER-16\n\t\t\t0x1E000 <= code && code <= 0x1E006 || // Mn   [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE\n\t\t\t0x1E008 <= code && code <= 0x1E018 || // Mn  [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU\n\t\t\t0x1E01B <= code && code <= 0x1E021 || // Mn   [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI\n\t\t\t0x1E023 <= code && code <= 0x1E024 || // Mn   [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS\n\t\t\t0x1E026 <= code && code <= 0x1E02A || // Mn   [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA\n\t\t\t0x1E8D0 <= code && code <= 0x1E8D6 || // Mn   [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS\n\t\t\t0x1E944 <= code && code <= 0x1E94A || // Mn   [7] ADLAM ALIF LENGTHENER..ADLAM NUKTA\n\t\t\t0xE0020 <= code && code <= 0xE007F || // Cf  [96] TAG SPACE..CANCEL TAG\n\t\t\t0xE0100 <= code && code <= 0xE01EF // Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256\n\t\t\t) {\n\t\t\t\t\treturn Extend;\n\t\t\t\t}\n\n\t\t\tif (0x1F1E6 <= code && code <= 0x1F1FF) // So  [26] REGIONAL INDICATOR SYMBOL LETTER A..REGIONAL INDICATOR SYMBOL LETTER Z\n\t\t\t\t{\n\t\t\t\t\treturn Regional_Indicator;\n\t\t\t\t}\n\n\t\t\tif (0x0903 == code || // Mc       DEVANAGARI SIGN VISARGA\n\t\t\t0x093B == code || // Mc       DEVANAGARI VOWEL SIGN OOE\n\t\t\t0x093E <= code && code <= 0x0940 || // Mc   [3] DEVANAGARI VOWEL SIGN AA..DEVANAGARI VOWEL SIGN II\n\t\t\t0x0949 <= code && code <= 0x094C || // Mc   [4] DEVANAGARI VOWEL SIGN CANDRA O..DEVANAGARI VOWEL SIGN AU\n\t\t\t0x094E <= code && code <= 0x094F || // Mc   [2] DEVANAGARI VOWEL SIGN PRISHTHAMATRA E..DEVANAGARI VOWEL SIGN AW\n\t\t\t0x0982 <= code && code <= 0x0983 || // Mc   [2] BENGALI SIGN ANUSVARA..BENGALI SIGN VISARGA\n\t\t\t0x09BF <= code && code <= 0x09C0 || // Mc   [2] BENGALI VOWEL SIGN I..BENGALI VOWEL SIGN II\n\t\t\t0x09C7 <= code && code <= 0x09C8 || // Mc   [2] BENGALI VOWEL SIGN E..BENGALI VOWEL SIGN AI\n\t\t\t0x09CB <= code && code <= 0x09CC || // Mc   [2] BENGALI VOWEL SIGN O..BENGALI VOWEL SIGN AU\n\t\t\t0x0A03 == code || // Mc       GURMUKHI SIGN VISARGA\n\t\t\t0x0A3E <= code && code <= 0x0A40 || // Mc   [3] GURMUKHI VOWEL SIGN AA..GURMUKHI VOWEL SIGN II\n\t\t\t0x0A83 == code || // Mc       GUJARATI SIGN VISARGA\n\t\t\t0x0ABE <= code && code <= 0x0AC0 || // Mc   [3] GUJARATI VOWEL SIGN AA..GUJARATI VOWEL SIGN II\n\t\t\t0x0AC9 == code || // Mc       GUJARATI VOWEL SIGN CANDRA O\n\t\t\t0x0ACB <= code && code <= 0x0ACC || // Mc   [2] GUJARATI VOWEL SIGN O..GUJARATI VOWEL SIGN AU\n\t\t\t0x0B02 <= code && code <= 0x0B03 || // Mc   [2] ORIYA SIGN ANUSVARA..ORIYA SIGN VISARGA\n\t\t\t0x0B40 == code || // Mc       ORIYA VOWEL SIGN II\n\t\t\t0x0B47 <= code && code <= 0x0B48 || // Mc   [2] ORIYA VOWEL SIGN E..ORIYA VOWEL SIGN AI\n\t\t\t0x0B4B <= code && code <= 0x0B4C || // Mc   [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU\n\t\t\t0x0BBF == code || // Mc       TAMIL VOWEL SIGN I\n\t\t\t0x0BC1 <= code && code <= 0x0BC2 || // Mc   [2] TAMIL VOWEL SIGN U..TAMIL VOWEL SIGN UU\n\t\t\t0x0BC6 <= code && code <= 0x0BC8 || // Mc   [3] TAMIL VOWEL SIGN E..TAMIL VOWEL SIGN AI\n\t\t\t0x0BCA <= code && code <= 0x0BCC || // Mc   [3] TAMIL VOWEL SIGN O..TAMIL VOWEL SIGN AU\n\t\t\t0x0C01 <= code && code <= 0x0C03 || // Mc   [3] TELUGU SIGN CANDRABINDU..TELUGU SIGN VISARGA\n\t\t\t0x0C41 <= code && code <= 0x0C44 || // Mc   [4] TELUGU VOWEL SIGN U..TELUGU VOWEL SIGN VOCALIC RR\n\t\t\t0x0C82 <= code && code <= 0x0C83 || // Mc   [2] KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA\n\t\t\t0x0CBE == code || // Mc       KANNADA VOWEL SIGN AA\n\t\t\t0x0CC0 <= code && code <= 0x0CC1 || // Mc   [2] KANNADA VOWEL SIGN II..KANNADA VOWEL SIGN U\n\t\t\t0x0CC3 <= code && code <= 0x0CC4 || // Mc   [2] KANNADA VOWEL SIGN VOCALIC R..KANNADA VOWEL SIGN VOCALIC RR\n\t\t\t0x0CC7 <= code && code <= 0x0CC8 || // Mc   [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI\n\t\t\t0x0CCA <= code && code <= 0x0CCB || // Mc   [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO\n\t\t\t0x0D02 <= code && code <= 0x0D03 || // Mc   [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA\n\t\t\t0x0D3F <= code && code <= 0x0D40 || // Mc   [2] MALAYALAM VOWEL SIGN I..MALAYALAM VOWEL SIGN II\n\t\t\t0x0D46 <= code && code <= 0x0D48 || // Mc   [3] MALAYALAM VOWEL SIGN E..MALAYALAM VOWEL SIGN AI\n\t\t\t0x0D4A <= code && code <= 0x0D4C || // Mc   [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU\n\t\t\t0x0D82 <= code && code <= 0x0D83 || // Mc   [2] SINHALA SIGN ANUSVARAYA..SINHALA SIGN VISARGAYA\n\t\t\t0x0DD0 <= code && code <= 0x0DD1 || // Mc   [2] SINHALA VOWEL SIGN KETTI AEDA-PILLA..SINHALA VOWEL SIGN DIGA AEDA-PILLA\n\t\t\t0x0DD8 <= code && code <= 0x0DDE || // Mc   [7] SINHALA VOWEL SIGN GAETTA-PILLA..SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA\n\t\t\t0x0DF2 <= code && code <= 0x0DF3 || // Mc   [2] SINHALA VOWEL SIGN DIGA GAETTA-PILLA..SINHALA VOWEL SIGN DIGA GAYANUKITTA\n\t\t\t0x0E33 == code || // Lo       THAI CHARACTER SARA AM\n\t\t\t0x0EB3 == code || // Lo       LAO VOWEL SIGN AM\n\t\t\t0x0F3E <= code && code <= 0x0F3F || // Mc   [2] TIBETAN SIGN YAR TSHES..TIBETAN SIGN MAR TSHES\n\t\t\t0x0F7F == code || // Mc       TIBETAN SIGN RNAM BCAD\n\t\t\t0x1031 == code || // Mc       MYANMAR VOWEL SIGN E\n\t\t\t0x103B <= code && code <= 0x103C || // Mc   [2] MYANMAR CONSONANT SIGN MEDIAL YA..MYANMAR CONSONANT SIGN MEDIAL RA\n\t\t\t0x1056 <= code && code <= 0x1057 || // Mc   [2] MYANMAR VOWEL SIGN VOCALIC R..MYANMAR VOWEL SIGN VOCALIC RR\n\t\t\t0x1084 == code || // Mc       MYANMAR VOWEL SIGN SHAN E\n\t\t\t0x17B6 == code || // Mc       KHMER VOWEL SIGN AA\n\t\t\t0x17BE <= code && code <= 0x17C5 || // Mc   [8] KHMER VOWEL SIGN OE..KHMER VOWEL SIGN AU\n\t\t\t0x17C7 <= code && code <= 0x17C8 || // Mc   [2] KHMER SIGN REAHMUK..KHMER SIGN YUUKALEAPINTU\n\t\t\t0x1923 <= code && code <= 0x1926 || // Mc   [4] LIMBU VOWEL SIGN EE..LIMBU VOWEL SIGN AU\n\t\t\t0x1929 <= code && code <= 0x192B || // Mc   [3] LIMBU SUBJOINED LETTER YA..LIMBU SUBJOINED LETTER WA\n\t\t\t0x1930 <= code && code <= 0x1931 || // Mc   [2] LIMBU SMALL LETTER KA..LIMBU SMALL LETTER NGA\n\t\t\t0x1933 <= code && code <= 0x1938 || // Mc   [6] LIMBU SMALL LETTER TA..LIMBU SMALL LETTER LA\n\t\t\t0x1A19 <= code && code <= 0x1A1A || // Mc   [2] BUGINESE VOWEL SIGN E..BUGINESE VOWEL SIGN O\n\t\t\t0x1A55 == code || // Mc       TAI THAM CONSONANT SIGN MEDIAL RA\n\t\t\t0x1A57 == code || // Mc       TAI THAM CONSONANT SIGN LA TANG LAI\n\t\t\t0x1A6D <= code && code <= 0x1A72 || // Mc   [6] TAI THAM VOWEL SIGN OY..TAI THAM VOWEL SIGN THAM AI\n\t\t\t0x1B04 == code || // Mc       BALINESE SIGN BISAH\n\t\t\t0x1B35 == code || // Mc       BALINESE VOWEL SIGN TEDUNG\n\t\t\t0x1B3B == code || // Mc       BALINESE VOWEL SIGN RA REPA TEDUNG\n\t\t\t0x1B3D <= code && code <= 0x1B41 || // Mc   [5] BALINESE VOWEL SIGN LA LENGA TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG\n\t\t\t0x1B43 <= code && code <= 0x1B44 || // Mc   [2] BALINESE VOWEL SIGN PEPET TEDUNG..BALINESE ADEG ADEG\n\t\t\t0x1B82 == code || // Mc       SUNDANESE SIGN PANGWISAD\n\t\t\t0x1BA1 == code || // Mc       SUNDANESE CONSONANT SIGN PAMINGKAL\n\t\t\t0x1BA6 <= code && code <= 0x1BA7 || // Mc   [2] SUNDANESE VOWEL SIGN PANAELAENG..SUNDANESE VOWEL SIGN PANOLONG\n\t\t\t0x1BAA == code || // Mc       SUNDANESE SIGN PAMAAEH\n\t\t\t0x1BE7 == code || // Mc       BATAK VOWEL SIGN E\n\t\t\t0x1BEA <= code && code <= 0x1BEC || // Mc   [3] BATAK VOWEL SIGN I..BATAK VOWEL SIGN O\n\t\t\t0x1BEE == code || // Mc       BATAK VOWEL SIGN U\n\t\t\t0x1BF2 <= code && code <= 0x1BF3 || // Mc   [2] BATAK PANGOLAT..BATAK PANONGONAN\n\t\t\t0x1C24 <= code && code <= 0x1C2B || // Mc   [8] LEPCHA SUBJOINED LETTER YA..LEPCHA VOWEL SIGN UU\n\t\t\t0x1C34 <= code && code <= 0x1C35 || // Mc   [2] LEPCHA CONSONANT SIGN NYIN-DO..LEPCHA CONSONANT SIGN KANG\n\t\t\t0x1CE1 == code || // Mc       VEDIC TONE ATHARVAVEDIC INDEPENDENT SVARITA\n\t\t\t0x1CF2 <= code && code <= 0x1CF3 || // Mc   [2] VEDIC SIGN ARDHAVISARGA..VEDIC SIGN ROTATED ARDHAVISARGA\n\t\t\t0x1CF7 == code || // Mc       VEDIC SIGN ATIKRAMA\n\t\t\t0xA823 <= code && code <= 0xA824 || // Mc   [2] SYLOTI NAGRI VOWEL SIGN A..SYLOTI NAGRI VOWEL SIGN I\n\t\t\t0xA827 == code || // Mc       SYLOTI NAGRI VOWEL SIGN OO\n\t\t\t0xA880 <= code && code <= 0xA881 || // Mc   [2] SAURASHTRA SIGN ANUSVARA..SAURASHTRA SIGN VISARGA\n\t\t\t0xA8B4 <= code && code <= 0xA8C3 || // Mc  [16] SAURASHTRA CONSONANT SIGN HAARU..SAURASHTRA VOWEL SIGN AU\n\t\t\t0xA952 <= code && code <= 0xA953 || // Mc   [2] REJANG CONSONANT SIGN H..REJANG VIRAMA\n\t\t\t0xA983 == code || // Mc       JAVANESE SIGN WIGNYAN\n\t\t\t0xA9B4 <= code && code <= 0xA9B5 || // Mc   [2] JAVANESE VOWEL SIGN TARUNG..JAVANESE VOWEL SIGN TOLONG\n\t\t\t0xA9BA <= code && code <= 0xA9BB || // Mc   [2] JAVANESE VOWEL SIGN TALING..JAVANESE VOWEL SIGN DIRGA MURE\n\t\t\t0xA9BD <= code && code <= 0xA9C0 || // Mc   [4] JAVANESE CONSONANT SIGN KERET..JAVANESE PANGKON\n\t\t\t0xAA2F <= code && code <= 0xAA30 || // Mc   [2] CHAM VOWEL SIGN O..CHAM VOWEL SIGN AI\n\t\t\t0xAA33 <= code && code <= 0xAA34 || // Mc   [2] CHAM CONSONANT SIGN YA..CHAM CONSONANT SIGN RA\n\t\t\t0xAA4D == code || // Mc       CHAM CONSONANT SIGN FINAL H\n\t\t\t0xAAEB == code || // Mc       MEETEI MAYEK VOWEL SIGN II\n\t\t\t0xAAEE <= code && code <= 0xAAEF || // Mc   [2] MEETEI MAYEK VOWEL SIGN AU..MEETEI MAYEK VOWEL SIGN AAU\n\t\t\t0xAAF5 == code || // Mc       MEETEI MAYEK VOWEL SIGN VISARGA\n\t\t\t0xABE3 <= code && code <= 0xABE4 || // Mc   [2] MEETEI MAYEK VOWEL SIGN ONAP..MEETEI MAYEK VOWEL SIGN INAP\n\t\t\t0xABE6 <= code && code <= 0xABE7 || // Mc   [2] MEETEI MAYEK VOWEL SIGN YENAP..MEETEI MAYEK VOWEL SIGN SOUNAP\n\t\t\t0xABE9 <= code && code <= 0xABEA || // Mc   [2] MEETEI MAYEK VOWEL SIGN CHEINAP..MEETEI MAYEK VOWEL SIGN NUNG\n\t\t\t0xABEC == code || // Mc       MEETEI MAYEK LUM IYEK\n\t\t\t0x11000 == code || // Mc       BRAHMI SIGN CANDRABINDU\n\t\t\t0x11002 == code || // Mc       BRAHMI SIGN VISARGA\n\t\t\t0x11082 == code || // Mc       KAITHI SIGN VISARGA\n\t\t\t0x110B0 <= code && code <= 0x110B2 || // Mc   [3] KAITHI VOWEL SIGN AA..KAITHI VOWEL SIGN II\n\t\t\t0x110B7 <= code && code <= 0x110B8 || // Mc   [2] KAITHI VOWEL SIGN O..KAITHI VOWEL SIGN AU\n\t\t\t0x1112C == code || // Mc       CHAKMA VOWEL SIGN E\n\t\t\t0x11182 == code || // Mc       SHARADA SIGN VISARGA\n\t\t\t0x111B3 <= code && code <= 0x111B5 || // Mc   [3] SHARADA VOWEL SIGN AA..SHARADA VOWEL SIGN II\n\t\t\t0x111BF <= code && code <= 0x111C0 || // Mc   [2] SHARADA VOWEL SIGN AU..SHARADA SIGN VIRAMA\n\t\t\t0x1122C <= code && code <= 0x1122E || // Mc   [3] KHOJKI VOWEL SIGN AA..KHOJKI VOWEL SIGN II\n\t\t\t0x11232 <= code && code <= 0x11233 || // Mc   [2] KHOJKI VOWEL SIGN O..KHOJKI VOWEL SIGN AU\n\t\t\t0x11235 == code || // Mc       KHOJKI SIGN VIRAMA\n\t\t\t0x112E0 <= code && code <= 0x112E2 || // Mc   [3] KHUDAWADI VOWEL SIGN AA..KHUDAWADI VOWEL SIGN II\n\t\t\t0x11302 <= code && code <= 0x11303 || // Mc   [2] GRANTHA SIGN ANUSVARA..GRANTHA SIGN VISARGA\n\t\t\t0x1133F == code || // Mc       GRANTHA VOWEL SIGN I\n\t\t\t0x11341 <= code && code <= 0x11344 || // Mc   [4] GRANTHA VOWEL SIGN U..GRANTHA VOWEL SIGN VOCALIC RR\n\t\t\t0x11347 <= code && code <= 0x11348 || // Mc   [2] GRANTHA VOWEL SIGN EE..GRANTHA VOWEL SIGN AI\n\t\t\t0x1134B <= code && code <= 0x1134D || // Mc   [3] GRANTHA VOWEL SIGN OO..GRANTHA SIGN VIRAMA\n\t\t\t0x11362 <= code && code <= 0x11363 || // Mc   [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL\n\t\t\t0x11435 <= code && code <= 0x11437 || // Mc   [3] NEWA VOWEL SIGN AA..NEWA VOWEL SIGN II\n\t\t\t0x11440 <= code && code <= 0x11441 || // Mc   [2] NEWA VOWEL SIGN O..NEWA VOWEL SIGN AU\n\t\t\t0x11445 == code || // Mc       NEWA SIGN VISARGA\n\t\t\t0x114B1 <= code && code <= 0x114B2 || // Mc   [2] TIRHUTA VOWEL SIGN I..TIRHUTA VOWEL SIGN II\n\t\t\t0x114B9 == code || // Mc       TIRHUTA VOWEL SIGN E\n\t\t\t0x114BB <= code && code <= 0x114BC || // Mc   [2] TIRHUTA VOWEL SIGN AI..TIRHUTA VOWEL SIGN O\n\t\t\t0x114BE == code || // Mc       TIRHUTA VOWEL SIGN AU\n\t\t\t0x114C1 == code || // Mc       TIRHUTA SIGN VISARGA\n\t\t\t0x115B0 <= code && code <= 0x115B1 || // Mc   [2] SIDDHAM VOWEL SIGN I..SIDDHAM VOWEL SIGN II\n\t\t\t0x115B8 <= code && code <= 0x115BB || // Mc   [4] SIDDHAM VOWEL SIGN E..SIDDHAM VOWEL SIGN AU\n\t\t\t0x115BE == code || // Mc       SIDDHAM SIGN VISARGA\n\t\t\t0x11630 <= code && code <= 0x11632 || // Mc   [3] MODI VOWEL SIGN AA..MODI VOWEL SIGN II\n\t\t\t0x1163B <= code && code <= 0x1163C || // Mc   [2] MODI VOWEL SIGN O..MODI VOWEL SIGN AU\n\t\t\t0x1163E == code || // Mc       MODI SIGN VISARGA\n\t\t\t0x116AC == code || // Mc       TAKRI SIGN VISARGA\n\t\t\t0x116AE <= code && code <= 0x116AF || // Mc   [2] TAKRI VOWEL SIGN I..TAKRI VOWEL SIGN II\n\t\t\t0x116B6 == code || // Mc       TAKRI SIGN VIRAMA\n\t\t\t0x11720 <= code && code <= 0x11721 || // Mc   [2] AHOM VOWEL SIGN A..AHOM VOWEL SIGN AA\n\t\t\t0x11726 == code || // Mc       AHOM VOWEL SIGN E\n\t\t\t0x11A07 <= code && code <= 0x11A08 || // Mc   [2] ZANABAZAR SQUARE VOWEL SIGN AI..ZANABAZAR SQUARE VOWEL SIGN AU\n\t\t\t0x11A39 == code || // Mc       ZANABAZAR SQUARE SIGN VISARGA\n\t\t\t0x11A57 <= code && code <= 0x11A58 || // Mc   [2] SOYOMBO VOWEL SIGN AI..SOYOMBO VOWEL SIGN AU\n\t\t\t0x11A97 == code || // Mc       SOYOMBO SIGN VISARGA\n\t\t\t0x11C2F == code || // Mc       BHAIKSUKI VOWEL SIGN AA\n\t\t\t0x11C3E == code || // Mc       BHAIKSUKI SIGN VISARGA\n\t\t\t0x11CA9 == code || // Mc       MARCHEN SUBJOINED LETTER YA\n\t\t\t0x11CB1 == code || // Mc       MARCHEN VOWEL SIGN I\n\t\t\t0x11CB4 == code || // Mc       MARCHEN VOWEL SIGN O\n\t\t\t0x16F51 <= code && code <= 0x16F7E || // Mc  [46] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN NG\n\t\t\t0x1D166 == code || // Mc       MUSICAL SYMBOL COMBINING SPRECHGESANG STEM\n\t\t\t0x1D16D == code // Mc       MUSICAL SYMBOL COMBINING AUGMENTATION DOT\n\t\t\t) {\n\t\t\t\t\treturn SpacingMark;\n\t\t\t\t}\n\n\t\t\tif (0x1100 <= code && code <= 0x115F || // Lo  [96] HANGUL CHOSEONG KIYEOK..HANGUL CHOSEONG FILLER\n\t\t\t0xA960 <= code && code <= 0xA97C // Lo  [29] HANGUL CHOSEONG TIKEUT-MIEUM..HANGUL CHOSEONG SSANGYEORINHIEUH\n\t\t\t) {\n\t\t\t\t\treturn L;\n\t\t\t\t}\n\n\t\t\tif (0x1160 <= code && code <= 0x11A7 || // Lo  [72] HANGUL JUNGSEONG FILLER..HANGUL JUNGSEONG O-YAE\n\t\t\t0xD7B0 <= code && code <= 0xD7C6 // Lo  [23] HANGUL JUNGSEONG O-YEO..HANGUL JUNGSEONG ARAEA-E\n\t\t\t) {\n\t\t\t\t\treturn V;\n\t\t\t\t}\n\n\t\t\tif (0x11A8 <= code && code <= 0x11FF || // Lo  [88] HANGUL JONGSEONG KIYEOK..HANGUL JONGSEONG SSANGNIEUN\n\t\t\t0xD7CB <= code && code <= 0xD7FB // Lo  [49] HANGUL JONGSEONG NIEUN-RIEUL..HANGUL JONGSEONG PHIEUPH-THIEUTH\n\t\t\t) {\n\t\t\t\t\treturn T;\n\t\t\t\t}\n\n\t\t\tif (0xAC00 == code || // Lo       HANGUL SYLLABLE GA\n\t\t\t0xAC1C == code || // Lo       HANGUL SYLLABLE GAE\n\t\t\t0xAC38 == code || // Lo       HANGUL SYLLABLE GYA\n\t\t\t0xAC54 == code || // Lo       HANGUL SYLLABLE GYAE\n\t\t\t0xAC70 == code || // Lo       HANGUL SYLLABLE GEO\n\t\t\t0xAC8C == code || // Lo       HANGUL SYLLABLE GE\n\t\t\t0xACA8 == code || // Lo       HANGUL SYLLABLE GYEO\n\t\t\t0xACC4 == code || // Lo       HANGUL SYLLABLE GYE\n\t\t\t0xACE0 == code || // Lo       HANGUL SYLLABLE GO\n\t\t\t0xACFC == code || // Lo       HANGUL SYLLABLE GWA\n\t\t\t0xAD18 == code || // Lo       HANGUL SYLLABLE GWAE\n\t\t\t0xAD34 == code || // Lo       HANGUL SYLLABLE GOE\n\t\t\t0xAD50 == code || // Lo       HANGUL SYLLABLE GYO\n\t\t\t0xAD6C == code || // Lo       HANGUL SYLLABLE GU\n\t\t\t0xAD88 == code || // Lo       HANGUL SYLLABLE GWEO\n\t\t\t0xADA4 == code || // Lo       HANGUL SYLLABLE GWE\n\t\t\t0xADC0 == code || // Lo       HANGUL SYLLABLE GWI\n\t\t\t0xADDC == code || // Lo       HANGUL SYLLABLE GYU\n\t\t\t0xADF8 == code || // Lo       HANGUL SYLLABLE GEU\n\t\t\t0xAE14 == code || // Lo       HANGUL SYLLABLE GYI\n\t\t\t0xAE30 == code || // Lo       HANGUL SYLLABLE GI\n\t\t\t0xAE4C == code || // Lo       HANGUL SYLLABLE GGA\n\t\t\t0xAE68 == code || // Lo       HANGUL SYLLABLE GGAE\n\t\t\t0xAE84 == code || // Lo       HANGUL SYLLABLE GGYA\n\t\t\t0xAEA0 == code || // Lo       HANGUL SYLLABLE GGYAE\n\t\t\t0xAEBC == code || // Lo       HANGUL SYLLABLE GGEO\n\t\t\t0xAED8 == code || // Lo       HANGUL SYLLABLE GGE\n\t\t\t0xAEF4 == code || // Lo       HANGUL SYLLABLE GGYEO\n\t\t\t0xAF10 == code || // Lo       HANGUL SYLLABLE GGYE\n\t\t\t0xAF2C == code || // Lo       HANGUL SYLLABLE GGO\n\t\t\t0xAF48 == code || // Lo       HANGUL SYLLABLE GGWA\n\t\t\t0xAF64 == code || // Lo       HANGUL SYLLABLE GGWAE\n\t\t\t0xAF80 == code || // Lo       HANGUL SYLLABLE GGOE\n\t\t\t0xAF9C == code || // Lo       HANGUL SYLLABLE GGYO\n\t\t\t0xAFB8 == code || // Lo       HANGUL SYLLABLE GGU\n\t\t\t0xAFD4 == code || // Lo       HANGUL SYLLABLE GGWEO\n\t\t\t0xAFF0 == code || // Lo       HANGUL SYLLABLE GGWE\n\t\t\t0xB00C == code || // Lo       HANGUL SYLLABLE GGWI\n\t\t\t0xB028 == code || // Lo       HANGUL SYLLABLE GGYU\n\t\t\t0xB044 == code || // Lo       HANGUL SYLLABLE GGEU\n\t\t\t0xB060 == code || // Lo       HANGUL SYLLABLE GGYI\n\t\t\t0xB07C == code || // Lo       HANGUL SYLLABLE GGI\n\t\t\t0xB098 == code || // Lo       HANGUL SYLLABLE NA\n\t\t\t0xB0B4 == code || // Lo       HANGUL SYLLABLE NAE\n\t\t\t0xB0D0 == code || // Lo       HANGUL SYLLABLE NYA\n\t\t\t0xB0EC == code || // Lo       HANGUL SYLLABLE NYAE\n\t\t\t0xB108 == code || // Lo       HANGUL SYLLABLE NEO\n\t\t\t0xB124 == code || // Lo       HANGUL SYLLABLE NE\n\t\t\t0xB140 == code || // Lo       HANGUL SYLLABLE NYEO\n\t\t\t0xB15C == code || // Lo       HANGUL SYLLABLE NYE\n\t\t\t0xB178 == code || // Lo       HANGUL SYLLABLE NO\n\t\t\t0xB194 == code || // Lo       HANGUL SYLLABLE NWA\n\t\t\t0xB1B0 == code || // Lo       HANGUL SYLLABLE NWAE\n\t\t\t0xB1CC == code || // Lo       HANGUL SYLLABLE NOE\n\t\t\t0xB1E8 == code || // Lo       HANGUL SYLLABLE NYO\n\t\t\t0xB204 == code || // Lo       HANGUL SYLLABLE NU\n\t\t\t0xB220 == code || // Lo       HANGUL SYLLABLE NWEO\n\t\t\t0xB23C == code || // Lo       HANGUL SYLLABLE NWE\n\t\t\t0xB258 == code || // Lo       HANGUL SYLLABLE NWI\n\t\t\t0xB274 == code || // Lo       HANGUL SYLLABLE NYU\n\t\t\t0xB290 == code || // Lo       HANGUL SYLLABLE NEU\n\t\t\t0xB2AC == code || // Lo       HANGUL SYLLABLE NYI\n\t\t\t0xB2C8 == code || // Lo       HANGUL SYLLABLE NI\n\t\t\t0xB2E4 == code || // Lo       HANGUL SYLLABLE DA\n\t\t\t0xB300 == code || // Lo       HANGUL SYLLABLE DAE\n\t\t\t0xB31C == code || // Lo       HANGUL SYLLABLE DYA\n\t\t\t0xB338 == code || // Lo       HANGUL SYLLABLE DYAE\n\t\t\t0xB354 == code || // Lo       HANGUL SYLLABLE DEO\n\t\t\t0xB370 == code || // Lo       HANGUL SYLLABLE DE\n\t\t\t0xB38C == code || // Lo       HANGUL SYLLABLE DYEO\n\t\t\t0xB3A8 == code || // Lo       HANGUL SYLLABLE DYE\n\t\t\t0xB3C4 == code || // Lo       HANGUL SYLLABLE DO\n\t\t\t0xB3E0 == code || // Lo       HANGUL SYLLABLE DWA\n\t\t\t0xB3FC == code || // Lo       HANGUL SYLLABLE DWAE\n\t\t\t0xB418 == code || // Lo       HANGUL SYLLABLE DOE\n\t\t\t0xB434 == code || // Lo       HANGUL SYLLABLE DYO\n\t\t\t0xB450 == code || // Lo       HANGUL SYLLABLE DU\n\t\t\t0xB46C == code || // Lo       HANGUL SYLLABLE DWEO\n\t\t\t0xB488 == code || // Lo       HANGUL SYLLABLE DWE\n\t\t\t0xB4A4 == code || // Lo       HANGUL SYLLABLE DWI\n\t\t\t0xB4C0 == code || // Lo       HANGUL SYLLABLE DYU\n\t\t\t0xB4DC == code || // Lo       HANGUL SYLLABLE DEU\n\t\t\t0xB4F8 == code || // Lo       HANGUL SYLLABLE DYI\n\t\t\t0xB514 == code || // Lo       HANGUL SYLLABLE DI\n\t\t\t0xB530 == code || // Lo       HANGUL SYLLABLE DDA\n\t\t\t0xB54C == code || // Lo       HANGUL SYLLABLE DDAE\n\t\t\t0xB568 == code || // Lo       HANGUL SYLLABLE DDYA\n\t\t\t0xB584 == code || // Lo       HANGUL SYLLABLE DDYAE\n\t\t\t0xB5A0 == code || // Lo       HANGUL SYLLABLE DDEO\n\t\t\t0xB5BC == code || // Lo       HANGUL SYLLABLE DDE\n\t\t\t0xB5D8 == code || // Lo       HANGUL SYLLABLE DDYEO\n\t\t\t0xB5F4 == code || // Lo       HANGUL SYLLABLE DDYE\n\t\t\t0xB610 == code || // Lo       HANGUL SYLLABLE DDO\n\t\t\t0xB62C == code || // Lo       HANGUL SYLLABLE DDWA\n\t\t\t0xB648 == code || // Lo       HANGUL SYLLABLE DDWAE\n\t\t\t0xB664 == code || // Lo       HANGUL SYLLABLE DDOE\n\t\t\t0xB680 == code || // Lo       HANGUL SYLLABLE DDYO\n\t\t\t0xB69C == code || // Lo       HANGUL SYLLABLE DDU\n\t\t\t0xB6B8 == code || // Lo       HANGUL SYLLABLE DDWEO\n\t\t\t0xB6D4 == code || // Lo       HANGUL SYLLABLE DDWE\n\t\t\t0xB6F0 == code || // Lo       HANGUL SYLLABLE DDWI\n\t\t\t0xB70C == code || // Lo       HANGUL SYLLABLE DDYU\n\t\t\t0xB728 == code || // Lo       HANGUL SYLLABLE DDEU\n\t\t\t0xB744 == code || // Lo       HANGUL SYLLABLE DDYI\n\t\t\t0xB760 == code || // Lo       HANGUL SYLLABLE DDI\n\t\t\t0xB77C == code || // Lo       HANGUL SYLLABLE RA\n\t\t\t0xB798 == code || // Lo       HANGUL SYLLABLE RAE\n\t\t\t0xB7B4 == code || // Lo       HANGUL SYLLABLE RYA\n\t\t\t0xB7D0 == code || // Lo       HANGUL SYLLABLE RYAE\n\t\t\t0xB7EC == code || // Lo       HANGUL SYLLABLE REO\n\t\t\t0xB808 == code || // Lo       HANGUL SYLLABLE RE\n\t\t\t0xB824 == code || // Lo       HANGUL SYLLABLE RYEO\n\t\t\t0xB840 == code || // Lo       HANGUL SYLLABLE RYE\n\t\t\t0xB85C == code || // Lo       HANGUL SYLLABLE RO\n\t\t\t0xB878 == code || // Lo       HANGUL SYLLABLE RWA\n\t\t\t0xB894 == code || // Lo       HANGUL SYLLABLE RWAE\n\t\t\t0xB8B0 == code || // Lo       HANGUL SYLLABLE ROE\n\t\t\t0xB8CC == code || // Lo       HANGUL SYLLABLE RYO\n\t\t\t0xB8E8 == code || // Lo       HANGUL SYLLABLE RU\n\t\t\t0xB904 == code || // Lo       HANGUL SYLLABLE RWEO\n\t\t\t0xB920 == code || // Lo       HANGUL SYLLABLE RWE\n\t\t\t0xB93C == code || // Lo       HANGUL SYLLABLE RWI\n\t\t\t0xB958 == code || // Lo       HANGUL SYLLABLE RYU\n\t\t\t0xB974 == code || // Lo       HANGUL SYLLABLE REU\n\t\t\t0xB990 == code || // Lo       HANGUL SYLLABLE RYI\n\t\t\t0xB9AC == code || // Lo       HANGUL SYLLABLE RI\n\t\t\t0xB9C8 == code || // Lo       HANGUL SYLLABLE MA\n\t\t\t0xB9E4 == code || // Lo       HANGUL SYLLABLE MAE\n\t\t\t0xBA00 == code || // Lo       HANGUL SYLLABLE MYA\n\t\t\t0xBA1C == code || // Lo       HANGUL SYLLABLE MYAE\n\t\t\t0xBA38 == code || // Lo       HANGUL SYLLABLE MEO\n\t\t\t0xBA54 == code || // Lo       HANGUL SYLLABLE ME\n\t\t\t0xBA70 == code || // Lo       HANGUL SYLLABLE MYEO\n\t\t\t0xBA8C == code || // Lo       HANGUL SYLLABLE MYE\n\t\t\t0xBAA8 == code || // Lo       HANGUL SYLLABLE MO\n\t\t\t0xBAC4 == code || // Lo       HANGUL SYLLABLE MWA\n\t\t\t0xBAE0 == code || // Lo       HANGUL SYLLABLE MWAE\n\t\t\t0xBAFC == code || // Lo       HANGUL SYLLABLE MOE\n\t\t\t0xBB18 == code || // Lo       HANGUL SYLLABLE MYO\n\t\t\t0xBB34 == code || // Lo       HANGUL SYLLABLE MU\n\t\t\t0xBB50 == code || // Lo       HANGUL SYLLABLE MWEO\n\t\t\t0xBB6C == code || // Lo       HANGUL SYLLABLE MWE\n\t\t\t0xBB88 == code || // Lo       HANGUL SYLLABLE MWI\n\t\t\t0xBBA4 == code || // Lo       HANGUL SYLLABLE MYU\n\t\t\t0xBBC0 == code || // Lo       HANGUL SYLLABLE MEU\n\t\t\t0xBBDC == code || // Lo       HANGUL SYLLABLE MYI\n\t\t\t0xBBF8 == code || // Lo       HANGUL SYLLABLE MI\n\t\t\t0xBC14 == code || // Lo       HANGUL SYLLABLE BA\n\t\t\t0xBC30 == code || // Lo       HANGUL SYLLABLE BAE\n\t\t\t0xBC4C == code || // Lo       HANGUL SYLLABLE BYA\n\t\t\t0xBC68 == code || // Lo       HANGUL SYLLABLE BYAE\n\t\t\t0xBC84 == code || // Lo       HANGUL SYLLABLE BEO\n\t\t\t0xBCA0 == code || // Lo       HANGUL SYLLABLE BE\n\t\t\t0xBCBC == code || // Lo       HANGUL SYLLABLE BYEO\n\t\t\t0xBCD8 == code || // Lo       HANGUL SYLLABLE BYE\n\t\t\t0xBCF4 == code || // Lo       HANGUL SYLLABLE BO\n\t\t\t0xBD10 == code || // Lo       HANGUL SYLLABLE BWA\n\t\t\t0xBD2C == code || // Lo       HANGUL SYLLABLE BWAE\n\t\t\t0xBD48 == code || // Lo       HANGUL SYLLABLE BOE\n\t\t\t0xBD64 == code || // Lo       HANGUL SYLLABLE BYO\n\t\t\t0xBD80 == code || // Lo       HANGUL SYLLABLE BU\n\t\t\t0xBD9C == code || // Lo       HANGUL SYLLABLE BWEO\n\t\t\t0xBDB8 == code || // Lo       HANGUL SYLLABLE BWE\n\t\t\t0xBDD4 == code || // Lo       HANGUL SYLLABLE BWI\n\t\t\t0xBDF0 == code || // Lo       HANGUL SYLLABLE BYU\n\t\t\t0xBE0C == code || // Lo       HANGUL SYLLABLE BEU\n\t\t\t0xBE28 == code || // Lo       HANGUL SYLLABLE BYI\n\t\t\t0xBE44 == code || // Lo       HANGUL SYLLABLE BI\n\t\t\t0xBE60 == code || // Lo       HANGUL SYLLABLE BBA\n\t\t\t0xBE7C == code || // Lo       HANGUL SYLLABLE BBAE\n\t\t\t0xBE98 == code || // Lo       HANGUL SYLLABLE BBYA\n\t\t\t0xBEB4 == code || // Lo       HANGUL SYLLABLE BBYAE\n\t\t\t0xBED0 == code || // Lo       HANGUL SYLLABLE BBEO\n\t\t\t0xBEEC == code || // Lo       HANGUL SYLLABLE BBE\n\t\t\t0xBF08 == code || // Lo       HANGUL SYLLABLE BBYEO\n\t\t\t0xBF24 == code || // Lo       HANGUL SYLLABLE BBYE\n\t\t\t0xBF40 == code || // Lo       HANGUL SYLLABLE BBO\n\t\t\t0xBF5C == code || // Lo       HANGUL SYLLABLE BBWA\n\t\t\t0xBF78 == code || // Lo       HANGUL SYLLABLE BBWAE\n\t\t\t0xBF94 == code || // Lo       HANGUL SYLLABLE BBOE\n\t\t\t0xBFB0 == code || // Lo       HANGUL SYLLABLE BBYO\n\t\t\t0xBFCC == code || // Lo       HANGUL SYLLABLE BBU\n\t\t\t0xBFE8 == code || // Lo       HANGUL SYLLABLE BBWEO\n\t\t\t0xC004 == code || // Lo       HANGUL SYLLABLE BBWE\n\t\t\t0xC020 == code || // Lo       HANGUL SYLLABLE BBWI\n\t\t\t0xC03C == code || // Lo       HANGUL SYLLABLE BBYU\n\t\t\t0xC058 == code || // Lo       HANGUL SYLLABLE BBEU\n\t\t\t0xC074 == code || // Lo       HANGUL SYLLABLE BBYI\n\t\t\t0xC090 == code || // Lo       HANGUL SYLLABLE BBI\n\t\t\t0xC0AC == code || // Lo       HANGUL SYLLABLE SA\n\t\t\t0xC0C8 == code || // Lo       HANGUL SYLLABLE SAE\n\t\t\t0xC0E4 == code || // Lo       HANGUL SYLLABLE SYA\n\t\t\t0xC100 == code || // Lo       HANGUL SYLLABLE SYAE\n\t\t\t0xC11C == code || // Lo       HANGUL SYLLABLE SEO\n\t\t\t0xC138 == code || // Lo       HANGUL SYLLABLE SE\n\t\t\t0xC154 == code || // Lo       HANGUL SYLLABLE SYEO\n\t\t\t0xC170 == code || // Lo       HANGUL SYLLABLE SYE\n\t\t\t0xC18C == code || // Lo       HANGUL SYLLABLE SO\n\t\t\t0xC1A8 == code || // Lo       HANGUL SYLLABLE SWA\n\t\t\t0xC1C4 == code || // Lo       HANGUL SYLLABLE SWAE\n\t\t\t0xC1E0 == code || // Lo       HANGUL SYLLABLE SOE\n\t\t\t0xC1FC == code || // Lo       HANGUL SYLLABLE SYO\n\t\t\t0xC218 == code || // Lo       HANGUL SYLLABLE SU\n\t\t\t0xC234 == code || // Lo       HANGUL SYLLABLE SWEO\n\t\t\t0xC250 == code || // Lo       HANGUL SYLLABLE SWE\n\t\t\t0xC26C == code || // Lo       HANGUL SYLLABLE SWI\n\t\t\t0xC288 == code || // Lo       HANGUL SYLLABLE SYU\n\t\t\t0xC2A4 == code || // Lo       HANGUL SYLLABLE SEU\n\t\t\t0xC2C0 == code || // Lo       HANGUL SYLLABLE SYI\n\t\t\t0xC2DC == code || // Lo       HANGUL SYLLABLE SI\n\t\t\t0xC2F8 == code || // Lo       HANGUL SYLLABLE SSA\n\t\t\t0xC314 == code || // Lo       HANGUL SYLLABLE SSAE\n\t\t\t0xC330 == code || // Lo       HANGUL SYLLABLE SSYA\n\t\t\t0xC34C == code || // Lo       HANGUL SYLLABLE SSYAE\n\t\t\t0xC368 == code || // Lo       HANGUL SYLLABLE SSEO\n\t\t\t0xC384 == code || // Lo       HANGUL SYLLABLE SSE\n\t\t\t0xC3A0 == code || // Lo       HANGUL SYLLABLE SSYEO\n\t\t\t0xC3BC == code || // Lo       HANGUL SYLLABLE SSYE\n\t\t\t0xC3D8 == code || // Lo       HANGUL SYLLABLE SSO\n\t\t\t0xC3F4 == code || // Lo       HANGUL SYLLABLE SSWA\n\t\t\t0xC410 == code || // Lo       HANGUL SYLLABLE SSWAE\n\t\t\t0xC42C == code || // Lo       HANGUL SYLLABLE SSOE\n\t\t\t0xC448 == code || // Lo       HANGUL SYLLABLE SSYO\n\t\t\t0xC464 == code || // Lo       HANGUL SYLLABLE SSU\n\t\t\t0xC480 == code || // Lo       HANGUL SYLLABLE SSWEO\n\t\t\t0xC49C == code || // Lo       HANGUL SYLLABLE SSWE\n\t\t\t0xC4B8 == code || // Lo       HANGUL SYLLABLE SSWI\n\t\t\t0xC4D4 == code || // Lo       HANGUL SYLLABLE SSYU\n\t\t\t0xC4F0 == code || // Lo       HANGUL SYLLABLE SSEU\n\t\t\t0xC50C == code || // Lo       HANGUL SYLLABLE SSYI\n\t\t\t0xC528 == code || // Lo       HANGUL SYLLABLE SSI\n\t\t\t0xC544 == code || // Lo       HANGUL SYLLABLE A\n\t\t\t0xC560 == code || // Lo       HANGUL SYLLABLE AE\n\t\t\t0xC57C == code || // Lo       HANGUL SYLLABLE YA\n\t\t\t0xC598 == code || // Lo       HANGUL SYLLABLE YAE\n\t\t\t0xC5B4 == code || // Lo       HANGUL SYLLABLE EO\n\t\t\t0xC5D0 == code || // Lo       HANGUL SYLLABLE E\n\t\t\t0xC5EC == code || // Lo       HANGUL SYLLABLE YEO\n\t\t\t0xC608 == code || // Lo       HANGUL SYLLABLE YE\n\t\t\t0xC624 == code || // Lo       HANGUL SYLLABLE O\n\t\t\t0xC640 == code || // Lo       HANGUL SYLLABLE WA\n\t\t\t0xC65C == code || // Lo       HANGUL SYLLABLE WAE\n\t\t\t0xC678 == code || // Lo       HANGUL SYLLABLE OE\n\t\t\t0xC694 == code || // Lo       HANGUL SYLLABLE YO\n\t\t\t0xC6B0 == code || // Lo       HANGUL SYLLABLE U\n\t\t\t0xC6CC == code || // Lo       HANGUL SYLLABLE WEO\n\t\t\t0xC6E8 == code || // Lo       HANGUL SYLLABLE WE\n\t\t\t0xC704 == code || // Lo       HANGUL SYLLABLE WI\n\t\t\t0xC720 == code || // Lo       HANGUL SYLLABLE YU\n\t\t\t0xC73C == code || // Lo       HANGUL SYLLABLE EU\n\t\t\t0xC758 == code || // Lo       HANGUL SYLLABLE YI\n\t\t\t0xC774 == code || // Lo       HANGUL SYLLABLE I\n\t\t\t0xC790 == code || // Lo       HANGUL SYLLABLE JA\n\t\t\t0xC7AC == code || // Lo       HANGUL SYLLABLE JAE\n\t\t\t0xC7C8 == code || // Lo       HANGUL SYLLABLE JYA\n\t\t\t0xC7E4 == code || // Lo       HANGUL SYLLABLE JYAE\n\t\t\t0xC800 == code || // Lo       HANGUL SYLLABLE JEO\n\t\t\t0xC81C == code || // Lo       HANGUL SYLLABLE JE\n\t\t\t0xC838 == code || // Lo       HANGUL SYLLABLE JYEO\n\t\t\t0xC854 == code || // Lo       HANGUL SYLLABLE JYE\n\t\t\t0xC870 == code || // Lo       HANGUL SYLLABLE JO\n\t\t\t0xC88C == code || // Lo       HANGUL SYLLABLE JWA\n\t\t\t0xC8A8 == code || // Lo       HANGUL SYLLABLE JWAE\n\t\t\t0xC8C4 == code || // Lo       HANGUL SYLLABLE JOE\n\t\t\t0xC8E0 == code || // Lo       HANGUL SYLLABLE JYO\n\t\t\t0xC8FC == code || // Lo       HANGUL SYLLABLE JU\n\t\t\t0xC918 == code || // Lo       HANGUL SYLLABLE JWEO\n\t\t\t0xC934 == code || // Lo       HANGUL SYLLABLE JWE\n\t\t\t0xC950 == code || // Lo       HANGUL SYLLABLE JWI\n\t\t\t0xC96C == code || // Lo       HANGUL SYLLABLE JYU\n\t\t\t0xC988 == code || // Lo       HANGUL SYLLABLE JEU\n\t\t\t0xC9A4 == code || // Lo       HANGUL SYLLABLE JYI\n\t\t\t0xC9C0 == code || // Lo       HANGUL SYLLABLE JI\n\t\t\t0xC9DC == code || // Lo       HANGUL SYLLABLE JJA\n\t\t\t0xC9F8 == code || // Lo       HANGUL SYLLABLE JJAE\n\t\t\t0xCA14 == code || // Lo       HANGUL SYLLABLE JJYA\n\t\t\t0xCA30 == code || // Lo       HANGUL SYLLABLE JJYAE\n\t\t\t0xCA4C == code || // Lo       HANGUL SYLLABLE JJEO\n\t\t\t0xCA68 == code || // Lo       HANGUL SYLLABLE JJE\n\t\t\t0xCA84 == code || // Lo       HANGUL SYLLABLE JJYEO\n\t\t\t0xCAA0 == code || // Lo       HANGUL SYLLABLE JJYE\n\t\t\t0xCABC == code || // Lo       HANGUL SYLLABLE JJO\n\t\t\t0xCAD8 == code || // Lo       HANGUL SYLLABLE JJWA\n\t\t\t0xCAF4 == code || // Lo       HANGUL SYLLABLE JJWAE\n\t\t\t0xCB10 == code || // Lo       HANGUL SYLLABLE JJOE\n\t\t\t0xCB2C == code || // Lo       HANGUL SYLLABLE JJYO\n\t\t\t0xCB48 == code || // Lo       HANGUL SYLLABLE JJU\n\t\t\t0xCB64 == code || // Lo       HANGUL SYLLABLE JJWEO\n\t\t\t0xCB80 == code || // Lo       HANGUL SYLLABLE JJWE\n\t\t\t0xCB9C == code || // Lo       HANGUL SYLLABLE JJWI\n\t\t\t0xCBB8 == code || // Lo       HANGUL SYLLABLE JJYU\n\t\t\t0xCBD4 == code || // Lo       HANGUL SYLLABLE JJEU\n\t\t\t0xCBF0 == code || // Lo       HANGUL SYLLABLE JJYI\n\t\t\t0xCC0C == code || // Lo       HANGUL SYLLABLE JJI\n\t\t\t0xCC28 == code || // Lo       HANGUL SYLLABLE CA\n\t\t\t0xCC44 == code || // Lo       HANGUL SYLLABLE CAE\n\t\t\t0xCC60 == code || // Lo       HANGUL SYLLABLE CYA\n\t\t\t0xCC7C == code || // Lo       HANGUL SYLLABLE CYAE\n\t\t\t0xCC98 == code || // Lo       HANGUL SYLLABLE CEO\n\t\t\t0xCCB4 == code || // Lo       HANGUL SYLLABLE CE\n\t\t\t0xCCD0 == code || // Lo       HANGUL SYLLABLE CYEO\n\t\t\t0xCCEC == code || // Lo       HANGUL SYLLABLE CYE\n\t\t\t0xCD08 == code || // Lo       HANGUL SYLLABLE CO\n\t\t\t0xCD24 == code || // Lo       HANGUL SYLLABLE CWA\n\t\t\t0xCD40 == code || // Lo       HANGUL SYLLABLE CWAE\n\t\t\t0xCD5C == code || // Lo       HANGUL SYLLABLE COE\n\t\t\t0xCD78 == code || // Lo       HANGUL SYLLABLE CYO\n\t\t\t0xCD94 == code || // Lo       HANGUL SYLLABLE CU\n\t\t\t0xCDB0 == code || // Lo       HANGUL SYLLABLE CWEO\n\t\t\t0xCDCC == code || // Lo       HANGUL SYLLABLE CWE\n\t\t\t0xCDE8 == code || // Lo       HANGUL SYLLABLE CWI\n\t\t\t0xCE04 == code || // Lo       HANGUL SYLLABLE CYU\n\t\t\t0xCE20 == code || // Lo       HANGUL SYLLABLE CEU\n\t\t\t0xCE3C == code || // Lo       HANGUL SYLLABLE CYI\n\t\t\t0xCE58 == code || // Lo       HANGUL SYLLABLE CI\n\t\t\t0xCE74 == code || // Lo       HANGUL SYLLABLE KA\n\t\t\t0xCE90 == code || // Lo       HANGUL SYLLABLE KAE\n\t\t\t0xCEAC == code || // Lo       HANGUL SYLLABLE KYA\n\t\t\t0xCEC8 == code || // Lo       HANGUL SYLLABLE KYAE\n\t\t\t0xCEE4 == code || // Lo       HANGUL SYLLABLE KEO\n\t\t\t0xCF00 == code || // Lo       HANGUL SYLLABLE KE\n\t\t\t0xCF1C == code || // Lo       HANGUL SYLLABLE KYEO\n\t\t\t0xCF38 == code || // Lo       HANGUL SYLLABLE KYE\n\t\t\t0xCF54 == code || // Lo       HANGUL SYLLABLE KO\n\t\t\t0xCF70 == code || // Lo       HANGUL SYLLABLE KWA\n\t\t\t0xCF8C == code || // Lo       HANGUL SYLLABLE KWAE\n\t\t\t0xCFA8 == code || // Lo       HANGUL SYLLABLE KOE\n\t\t\t0xCFC4 == code || // Lo       HANGUL SYLLABLE KYO\n\t\t\t0xCFE0 == code || // Lo       HANGUL SYLLABLE KU\n\t\t\t0xCFFC == code || // Lo       HANGUL SYLLABLE KWEO\n\t\t\t0xD018 == code || // Lo       HANGUL SYLLABLE KWE\n\t\t\t0xD034 == code || // Lo       HANGUL SYLLABLE KWI\n\t\t\t0xD050 == code || // Lo       HANGUL SYLLABLE KYU\n\t\t\t0xD06C == code || // Lo       HANGUL SYLLABLE KEU\n\t\t\t0xD088 == code || // Lo       HANGUL SYLLABLE KYI\n\t\t\t0xD0A4 == code || // Lo       HANGUL SYLLABLE KI\n\t\t\t0xD0C0 == code || // Lo       HANGUL SYLLABLE TA\n\t\t\t0xD0DC == code || // Lo       HANGUL SYLLABLE TAE\n\t\t\t0xD0F8 == code || // Lo       HANGUL SYLLABLE TYA\n\t\t\t0xD114 == code || // Lo       HANGUL SYLLABLE TYAE\n\t\t\t0xD130 == code || // Lo       HANGUL SYLLABLE TEO\n\t\t\t0xD14C == code || // Lo       HANGUL SYLLABLE TE\n\t\t\t0xD168 == code || // Lo       HANGUL SYLLABLE TYEO\n\t\t\t0xD184 == code || // Lo       HANGUL SYLLABLE TYE\n\t\t\t0xD1A0 == code || // Lo       HANGUL SYLLABLE TO\n\t\t\t0xD1BC == code || // Lo       HANGUL SYLLABLE TWA\n\t\t\t0xD1D8 == code || // Lo       HANGUL SYLLABLE TWAE\n\t\t\t0xD1F4 == code || // Lo       HANGUL SYLLABLE TOE\n\t\t\t0xD210 == code || // Lo       HANGUL SYLLABLE TYO\n\t\t\t0xD22C == code || // Lo       HANGUL SYLLABLE TU\n\t\t\t0xD248 == code || // Lo       HANGUL SYLLABLE TWEO\n\t\t\t0xD264 == code || // Lo       HANGUL SYLLABLE TWE\n\t\t\t0xD280 == code || // Lo       HANGUL SYLLABLE TWI\n\t\t\t0xD29C == code || // Lo       HANGUL SYLLABLE TYU\n\t\t\t0xD2B8 == code || // Lo       HANGUL SYLLABLE TEU\n\t\t\t0xD2D4 == code || // Lo       HANGUL SYLLABLE TYI\n\t\t\t0xD2F0 == code || // Lo       HANGUL SYLLABLE TI\n\t\t\t0xD30C == code || // Lo       HANGUL SYLLABLE PA\n\t\t\t0xD328 == code || // Lo       HANGUL SYLLABLE PAE\n\t\t\t0xD344 == code || // Lo       HANGUL SYLLABLE PYA\n\t\t\t0xD360 == code || // Lo       HANGUL SYLLABLE PYAE\n\t\t\t0xD37C == code || // Lo       HANGUL SYLLABLE PEO\n\t\t\t0xD398 == code || // Lo       HANGUL SYLLABLE PE\n\t\t\t0xD3B4 == code || // Lo       HANGUL SYLLABLE PYEO\n\t\t\t0xD3D0 == code || // Lo       HANGUL SYLLABLE PYE\n\t\t\t0xD3EC == code || // Lo       HANGUL SYLLABLE PO\n\t\t\t0xD408 == code || // Lo       HANGUL SYLLABLE PWA\n\t\t\t0xD424 == code || // Lo       HANGUL SYLLABLE PWAE\n\t\t\t0xD440 == code || // Lo       HANGUL SYLLABLE POE\n\t\t\t0xD45C == code || // Lo       HANGUL SYLLABLE PYO\n\t\t\t0xD478 == code || // Lo       HANGUL SYLLABLE PU\n\t\t\t0xD494 == code || // Lo       HANGUL SYLLABLE PWEO\n\t\t\t0xD4B0 == code || // Lo       HANGUL SYLLABLE PWE\n\t\t\t0xD4CC == code || // Lo       HANGUL SYLLABLE PWI\n\t\t\t0xD4E8 == code || // Lo       HANGUL SYLLABLE PYU\n\t\t\t0xD504 == code || // Lo       HANGUL SYLLABLE PEU\n\t\t\t0xD520 == code || // Lo       HANGUL SYLLABLE PYI\n\t\t\t0xD53C == code || // Lo       HANGUL SYLLABLE PI\n\t\t\t0xD558 == code || // Lo       HANGUL SYLLABLE HA\n\t\t\t0xD574 == code || // Lo       HANGUL SYLLABLE HAE\n\t\t\t0xD590 == code || // Lo       HANGUL SYLLABLE HYA\n\t\t\t0xD5AC == code || // Lo       HANGUL SYLLABLE HYAE\n\t\t\t0xD5C8 == code || // Lo       HANGUL SYLLABLE HEO\n\t\t\t0xD5E4 == code || // Lo       HANGUL SYLLABLE HE\n\t\t\t0xD600 == code || // Lo       HANGUL SYLLABLE HYEO\n\t\t\t0xD61C == code || // Lo       HANGUL SYLLABLE HYE\n\t\t\t0xD638 == code || // Lo       HANGUL SYLLABLE HO\n\t\t\t0xD654 == code || // Lo       HANGUL SYLLABLE HWA\n\t\t\t0xD670 == code || // Lo       HANGUL SYLLABLE HWAE\n\t\t\t0xD68C == code || // Lo       HANGUL SYLLABLE HOE\n\t\t\t0xD6A8 == code || // Lo       HANGUL SYLLABLE HYO\n\t\t\t0xD6C4 == code || // Lo       HANGUL SYLLABLE HU\n\t\t\t0xD6E0 == code || // Lo       HANGUL SYLLABLE HWEO\n\t\t\t0xD6FC == code || // Lo       HANGUL SYLLABLE HWE\n\t\t\t0xD718 == code || // Lo       HANGUL SYLLABLE HWI\n\t\t\t0xD734 == code || // Lo       HANGUL SYLLABLE HYU\n\t\t\t0xD750 == code || // Lo       HANGUL SYLLABLE HEU\n\t\t\t0xD76C == code || // Lo       HANGUL SYLLABLE HYI\n\t\t\t0xD788 == code // Lo       HANGUL SYLLABLE HI\n\t\t\t) {\n\t\t\t\t\treturn LV;\n\t\t\t\t}\n\n\t\t\tif (0xAC01 <= code && code <= 0xAC1B || // Lo  [27] HANGUL SYLLABLE GAG..HANGUL SYLLABLE GAH\n\t\t\t0xAC1D <= code && code <= 0xAC37 || // Lo  [27] HANGUL SYLLABLE GAEG..HANGUL SYLLABLE GAEH\n\t\t\t0xAC39 <= code && code <= 0xAC53 || // Lo  [27] HANGUL SYLLABLE GYAG..HANGUL SYLLABLE GYAH\n\t\t\t0xAC55 <= code && code <= 0xAC6F || // Lo  [27] HANGUL SYLLABLE GYAEG..HANGUL SYLLABLE GYAEH\n\t\t\t0xAC71 <= code && code <= 0xAC8B || // Lo  [27] HANGUL SYLLABLE GEOG..HANGUL SYLLABLE GEOH\n\t\t\t0xAC8D <= code && code <= 0xACA7 || // Lo  [27] HANGUL SYLLABLE GEG..HANGUL SYLLABLE GEH\n\t\t\t0xACA9 <= code && code <= 0xACC3 || // Lo  [27] HANGUL SYLLABLE GYEOG..HANGUL SYLLABLE GYEOH\n\t\t\t0xACC5 <= code && code <= 0xACDF || // Lo  [27] HANGUL SYLLABLE GYEG..HANGUL SYLLABLE GYEH\n\t\t\t0xACE1 <= code && code <= 0xACFB || // Lo  [27] HANGUL SYLLABLE GOG..HANGUL SYLLABLE GOH\n\t\t\t0xACFD <= code && code <= 0xAD17 || // Lo  [27] HANGUL SYLLABLE GWAG..HANGUL SYLLABLE GWAH\n\t\t\t0xAD19 <= code && code <= 0xAD33 || // Lo  [27] HANGUL SYLLABLE GWAEG..HANGUL SYLLABLE GWAEH\n\t\t\t0xAD35 <= code && code <= 0xAD4F || // Lo  [27] HANGUL SYLLABLE GOEG..HANGUL SYLLABLE GOEH\n\t\t\t0xAD51 <= code && code <= 0xAD6B || // Lo  [27] HANGUL SYLLABLE GYOG..HANGUL SYLLABLE GYOH\n\t\t\t0xAD6D <= code && code <= 0xAD87 || // Lo  [27] HANGUL SYLLABLE GUG..HANGUL SYLLABLE GUH\n\t\t\t0xAD89 <= code && code <= 0xADA3 || // Lo  [27] HANGUL SYLLABLE GWEOG..HANGUL SYLLABLE GWEOH\n\t\t\t0xADA5 <= code && code <= 0xADBF || // Lo  [27] HANGUL SYLLABLE GWEG..HANGUL SYLLABLE GWEH\n\t\t\t0xADC1 <= code && code <= 0xADDB || // Lo  [27] HANGUL SYLLABLE GWIG..HANGUL SYLLABLE GWIH\n\t\t\t0xADDD <= code && code <= 0xADF7 || // Lo  [27] HANGUL SYLLABLE GYUG..HANGUL SYLLABLE GYUH\n\t\t\t0xADF9 <= code && code <= 0xAE13 || // Lo  [27] HANGUL SYLLABLE GEUG..HANGUL SYLLABLE GEUH\n\t\t\t0xAE15 <= code && code <= 0xAE2F || // Lo  [27] HANGUL SYLLABLE GYIG..HANGUL SYLLABLE GYIH\n\t\t\t0xAE31 <= code && code <= 0xAE4B || // Lo  [27] HANGUL SYLLABLE GIG..HANGUL SYLLABLE GIH\n\t\t\t0xAE4D <= code && code <= 0xAE67 || // Lo  [27] HANGUL SYLLABLE GGAG..HANGUL SYLLABLE GGAH\n\t\t\t0xAE69 <= code && code <= 0xAE83 || // Lo  [27] HANGUL SYLLABLE GGAEG..HANGUL SYLLABLE GGAEH\n\t\t\t0xAE85 <= code && code <= 0xAE9F || // Lo  [27] HANGUL SYLLABLE GGYAG..HANGUL SYLLABLE GGYAH\n\t\t\t0xAEA1 <= code && code <= 0xAEBB || // Lo  [27] HANGUL SYLLABLE GGYAEG..HANGUL SYLLABLE GGYAEH\n\t\t\t0xAEBD <= code && code <= 0xAED7 || // Lo  [27] HANGUL SYLLABLE GGEOG..HANGUL SYLLABLE GGEOH\n\t\t\t0xAED9 <= code && code <= 0xAEF3 || // Lo  [27] HANGUL SYLLABLE GGEG..HANGUL SYLLABLE GGEH\n\t\t\t0xAEF5 <= code && code <= 0xAF0F || // Lo  [27] HANGUL SYLLABLE GGYEOG..HANGUL SYLLABLE GGYEOH\n\t\t\t0xAF11 <= code && code <= 0xAF2B || // Lo  [27] HANGUL SYLLABLE GGYEG..HANGUL SYLLABLE GGYEH\n\t\t\t0xAF2D <= code && code <= 0xAF47 || // Lo  [27] HANGUL SYLLABLE GGOG..HANGUL SYLLABLE GGOH\n\t\t\t0xAF49 <= code && code <= 0xAF63 || // Lo  [27] HANGUL SYLLABLE GGWAG..HANGUL SYLLABLE GGWAH\n\t\t\t0xAF65 <= code && code <= 0xAF7F || // Lo  [27] HANGUL SYLLABLE GGWAEG..HANGUL SYLLABLE GGWAEH\n\t\t\t0xAF81 <= code && code <= 0xAF9B || // Lo  [27] HANGUL SYLLABLE GGOEG..HANGUL SYLLABLE GGOEH\n\t\t\t0xAF9D <= code && code <= 0xAFB7 || // Lo  [27] HANGUL SYLLABLE GGYOG..HANGUL SYLLABLE GGYOH\n\t\t\t0xAFB9 <= code && code <= 0xAFD3 || // Lo  [27] HANGUL SYLLABLE GGUG..HANGUL SYLLABLE GGUH\n\t\t\t0xAFD5 <= code && code <= 0xAFEF || // Lo  [27] HANGUL SYLLABLE GGWEOG..HANGUL SYLLABLE GGWEOH\n\t\t\t0xAFF1 <= code && code <= 0xB00B || // Lo  [27] HANGUL SYLLABLE GGWEG..HANGUL SYLLABLE GGWEH\n\t\t\t0xB00D <= code && code <= 0xB027 || // Lo  [27] HANGUL SYLLABLE GGWIG..HANGUL SYLLABLE GGWIH\n\t\t\t0xB029 <= code && code <= 0xB043 || // Lo  [27] HANGUL SYLLABLE GGYUG..HANGUL SYLLABLE GGYUH\n\t\t\t0xB045 <= code && code <= 0xB05F || // Lo  [27] HANGUL SYLLABLE GGEUG..HANGUL SYLLABLE GGEUH\n\t\t\t0xB061 <= code && code <= 0xB07B || // Lo  [27] HANGUL SYLLABLE GGYIG..HANGUL SYLLABLE GGYIH\n\t\t\t0xB07D <= code && code <= 0xB097 || // Lo  [27] HANGUL SYLLABLE GGIG..HANGUL SYLLABLE GGIH\n\t\t\t0xB099 <= code && code <= 0xB0B3 || // Lo  [27] HANGUL SYLLABLE NAG..HANGUL SYLLABLE NAH\n\t\t\t0xB0B5 <= code && code <= 0xB0CF || // Lo  [27] HANGUL SYLLABLE NAEG..HANGUL SYLLABLE NAEH\n\t\t\t0xB0D1 <= code && code <= 0xB0EB || // Lo  [27] HANGUL SYLLABLE NYAG..HANGUL SYLLABLE NYAH\n\t\t\t0xB0ED <= code && code <= 0xB107 || // Lo  [27] HANGUL SYLLABLE NYAEG..HANGUL SYLLABLE NYAEH\n\t\t\t0xB109 <= code && code <= 0xB123 || // Lo  [27] HANGUL SYLLABLE NEOG..HANGUL SYLLABLE NEOH\n\t\t\t0xB125 <= code && code <= 0xB13F || // Lo  [27] HANGUL SYLLABLE NEG..HANGUL SYLLABLE NEH\n\t\t\t0xB141 <= code && code <= 0xB15B || // Lo  [27] HANGUL SYLLABLE NYEOG..HANGUL SYLLABLE NYEOH\n\t\t\t0xB15D <= code && code <= 0xB177 || // Lo  [27] HANGUL SYLLABLE NYEG..HANGUL SYLLABLE NYEH\n\t\t\t0xB179 <= code && code <= 0xB193 || // Lo  [27] HANGUL SYLLABLE NOG..HANGUL SYLLABLE NOH\n\t\t\t0xB195 <= code && code <= 0xB1AF || // Lo  [27] HANGUL SYLLABLE NWAG..HANGUL SYLLABLE NWAH\n\t\t\t0xB1B1 <= code && code <= 0xB1CB || // Lo  [27] HANGUL SYLLABLE NWAEG..HANGUL SYLLABLE NWAEH\n\t\t\t0xB1CD <= code && code <= 0xB1E7 || // Lo  [27] HANGUL SYLLABLE NOEG..HANGUL SYLLABLE NOEH\n\t\t\t0xB1E9 <= code && code <= 0xB203 || // Lo  [27] HANGUL SYLLABLE NYOG..HANGUL SYLLABLE NYOH\n\t\t\t0xB205 <= code && code <= 0xB21F || // Lo  [27] HANGUL SYLLABLE NUG..HANGUL SYLLABLE NUH\n\t\t\t0xB221 <= code && code <= 0xB23B || // Lo  [27] HANGUL SYLLABLE NWEOG..HANGUL SYLLABLE NWEOH\n\t\t\t0xB23D <= code && code <= 0xB257 || // Lo  [27] HANGUL SYLLABLE NWEG..HANGUL SYLLABLE NWEH\n\t\t\t0xB259 <= code && code <= 0xB273 || // Lo  [27] HANGUL SYLLABLE NWIG..HANGUL SYLLABLE NWIH\n\t\t\t0xB275 <= code && code <= 0xB28F || // Lo  [27] HANGUL SYLLABLE NYUG..HANGUL SYLLABLE NYUH\n\t\t\t0xB291 <= code && code <= 0xB2AB || // Lo  [27] HANGUL SYLLABLE NEUG..HANGUL SYLLABLE NEUH\n\t\t\t0xB2AD <= code && code <= 0xB2C7 || // Lo  [27] HANGUL SYLLABLE NYIG..HANGUL SYLLABLE NYIH\n\t\t\t0xB2C9 <= code && code <= 0xB2E3 || // Lo  [27] HANGUL SYLLABLE NIG..HANGUL SYLLABLE NIH\n\t\t\t0xB2E5 <= code && code <= 0xB2FF || // Lo  [27] HANGUL SYLLABLE DAG..HANGUL SYLLABLE DAH\n\t\t\t0xB301 <= code && code <= 0xB31B || // Lo  [27] HANGUL SYLLABLE DAEG..HANGUL SYLLABLE DAEH\n\t\t\t0xB31D <= code && code <= 0xB337 || // Lo  [27] HANGUL SYLLABLE DYAG..HANGUL SYLLABLE DYAH\n\t\t\t0xB339 <= code && code <= 0xB353 || // Lo  [27] HANGUL SYLLABLE DYAEG..HANGUL SYLLABLE DYAEH\n\t\t\t0xB355 <= code && code <= 0xB36F || // Lo  [27] HANGUL SYLLABLE DEOG..HANGUL SYLLABLE DEOH\n\t\t\t0xB371 <= code && code <= 0xB38B || // Lo  [27] HANGUL SYLLABLE DEG..HANGUL SYLLABLE DEH\n\t\t\t0xB38D <= code && code <= 0xB3A7 || // Lo  [27] HANGUL SYLLABLE DYEOG..HANGUL SYLLABLE DYEOH\n\t\t\t0xB3A9 <= code && code <= 0xB3C3 || // Lo  [27] HANGUL SYLLABLE DYEG..HANGUL SYLLABLE DYEH\n\t\t\t0xB3C5 <= code && code <= 0xB3DF || // Lo  [27] HANGUL SYLLABLE DOG..HANGUL SYLLABLE DOH\n\t\t\t0xB3E1 <= code && code <= 0xB3FB || // Lo  [27] HANGUL SYLLABLE DWAG..HANGUL SYLLABLE DWAH\n\t\t\t0xB3FD <= code && code <= 0xB417 || // Lo  [27] HANGUL SYLLABLE DWAEG..HANGUL SYLLABLE DWAEH\n\t\t\t0xB419 <= code && code <= 0xB433 || // Lo  [27] HANGUL SYLLABLE DOEG..HANGUL SYLLABLE DOEH\n\t\t\t0xB435 <= code && code <= 0xB44F || // Lo  [27] HANGUL SYLLABLE DYOG..HANGUL SYLLABLE DYOH\n\t\t\t0xB451 <= code && code <= 0xB46B || // Lo  [27] HANGUL SYLLABLE DUG..HANGUL SYLLABLE DUH\n\t\t\t0xB46D <= code && code <= 0xB487 || // Lo  [27] HANGUL SYLLABLE DWEOG..HANGUL SYLLABLE DWEOH\n\t\t\t0xB489 <= code && code <= 0xB4A3 || // Lo  [27] HANGUL SYLLABLE DWEG..HANGUL SYLLABLE DWEH\n\t\t\t0xB4A5 <= code && code <= 0xB4BF || // Lo  [27] HANGUL SYLLABLE DWIG..HANGUL SYLLABLE DWIH\n\t\t\t0xB4C1 <= code && code <= 0xB4DB || // Lo  [27] HANGUL SYLLABLE DYUG..HANGUL SYLLABLE DYUH\n\t\t\t0xB4DD <= code && code <= 0xB4F7 || // Lo  [27] HANGUL SYLLABLE DEUG..HANGUL SYLLABLE DEUH\n\t\t\t0xB4F9 <= code && code <= 0xB513 || // Lo  [27] HANGUL SYLLABLE DYIG..HANGUL SYLLABLE DYIH\n\t\t\t0xB515 <= code && code <= 0xB52F || // Lo  [27] HANGUL SYLLABLE DIG..HANGUL SYLLABLE DIH\n\t\t\t0xB531 <= code && code <= 0xB54B || // Lo  [27] HANGUL SYLLABLE DDAG..HANGUL SYLLABLE DDAH\n\t\t\t0xB54D <= code && code <= 0xB567 || // Lo  [27] HANGUL SYLLABLE DDAEG..HANGUL SYLLABLE DDAEH\n\t\t\t0xB569 <= code && code <= 0xB583 || // Lo  [27] HANGUL SYLLABLE DDYAG..HANGUL SYLLABLE DDYAH\n\t\t\t0xB585 <= code && code <= 0xB59F || // Lo  [27] HANGUL SYLLABLE DDYAEG..HANGUL SYLLABLE DDYAEH\n\t\t\t0xB5A1 <= code && code <= 0xB5BB || // Lo  [27] HANGUL SYLLABLE DDEOG..HANGUL SYLLABLE DDEOH\n\t\t\t0xB5BD <= code && code <= 0xB5D7 || // Lo  [27] HANGUL SYLLABLE DDEG..HANGUL SYLLABLE DDEH\n\t\t\t0xB5D9 <= code && code <= 0xB5F3 || // Lo  [27] HANGUL SYLLABLE DDYEOG..HANGUL SYLLABLE DDYEOH\n\t\t\t0xB5F5 <= code && code <= 0xB60F || // Lo  [27] HANGUL SYLLABLE DDYEG..HANGUL SYLLABLE DDYEH\n\t\t\t0xB611 <= code && code <= 0xB62B || // Lo  [27] HANGUL SYLLABLE DDOG..HANGUL SYLLABLE DDOH\n\t\t\t0xB62D <= code && code <= 0xB647 || // Lo  [27] HANGUL SYLLABLE DDWAG..HANGUL SYLLABLE DDWAH\n\t\t\t0xB649 <= code && code <= 0xB663 || // Lo  [27] HANGUL SYLLABLE DDWAEG..HANGUL SYLLABLE DDWAEH\n\t\t\t0xB665 <= code && code <= 0xB67F || // Lo  [27] HANGUL SYLLABLE DDOEG..HANGUL SYLLABLE DDOEH\n\t\t\t0xB681 <= code && code <= 0xB69B || // Lo  [27] HANGUL SYLLABLE DDYOG..HANGUL SYLLABLE DDYOH\n\t\t\t0xB69D <= code && code <= 0xB6B7 || // Lo  [27] HANGUL SYLLABLE DDUG..HANGUL SYLLABLE DDUH\n\t\t\t0xB6B9 <= code && code <= 0xB6D3 || // Lo  [27] HANGUL SYLLABLE DDWEOG..HANGUL SYLLABLE DDWEOH\n\t\t\t0xB6D5 <= code && code <= 0xB6EF || // Lo  [27] HANGUL SYLLABLE DDWEG..HANGUL SYLLABLE DDWEH\n\t\t\t0xB6F1 <= code && code <= 0xB70B || // Lo  [27] HANGUL SYLLABLE DDWIG..HANGUL SYLLABLE DDWIH\n\t\t\t0xB70D <= code && code <= 0xB727 || // Lo  [27] HANGUL SYLLABLE DDYUG..HANGUL SYLLABLE DDYUH\n\t\t\t0xB729 <= code && code <= 0xB743 || // Lo  [27] HANGUL SYLLABLE DDEUG..HANGUL SYLLABLE DDEUH\n\t\t\t0xB745 <= code && code <= 0xB75F || // Lo  [27] HANGUL SYLLABLE DDYIG..HANGUL SYLLABLE DDYIH\n\t\t\t0xB761 <= code && code <= 0xB77B || // Lo  [27] HANGUL SYLLABLE DDIG..HANGUL SYLLABLE DDIH\n\t\t\t0xB77D <= code && code <= 0xB797 || // Lo  [27] HANGUL SYLLABLE RAG..HANGUL SYLLABLE RAH\n\t\t\t0xB799 <= code && code <= 0xB7B3 || // Lo  [27] HANGUL SYLLABLE RAEG..HANGUL SYLLABLE RAEH\n\t\t\t0xB7B5 <= code && code <= 0xB7CF || // Lo  [27] HANGUL SYLLABLE RYAG..HANGUL SYLLABLE RYAH\n\t\t\t0xB7D1 <= code && code <= 0xB7EB || // Lo  [27] HANGUL SYLLABLE RYAEG..HANGUL SYLLABLE RYAEH\n\t\t\t0xB7ED <= code && code <= 0xB807 || // Lo  [27] HANGUL SYLLABLE REOG..HANGUL SYLLABLE REOH\n\t\t\t0xB809 <= code && code <= 0xB823 || // Lo  [27] HANGUL SYLLABLE REG..HANGUL SYLLABLE REH\n\t\t\t0xB825 <= code && code <= 0xB83F || // Lo  [27] HANGUL SYLLABLE RYEOG..HANGUL SYLLABLE RYEOH\n\t\t\t0xB841 <= code && code <= 0xB85B || // Lo  [27] HANGUL SYLLABLE RYEG..HANGUL SYLLABLE RYEH\n\t\t\t0xB85D <= code && code <= 0xB877 || // Lo  [27] HANGUL SYLLABLE ROG..HANGUL SYLLABLE ROH\n\t\t\t0xB879 <= code && code <= 0xB893 || // Lo  [27] HANGUL SYLLABLE RWAG..HANGUL SYLLABLE RWAH\n\t\t\t0xB895 <= code && code <= 0xB8AF || // Lo  [27] HANGUL SYLLABLE RWAEG..HANGUL SYLLABLE RWAEH\n\t\t\t0xB8B1 <= code && code <= 0xB8CB || // Lo  [27] HANGUL SYLLABLE ROEG..HANGUL SYLLABLE ROEH\n\t\t\t0xB8CD <= code && code <= 0xB8E7 || // Lo  [27] HANGUL SYLLABLE RYOG..HANGUL SYLLABLE RYOH\n\t\t\t0xB8E9 <= code && code <= 0xB903 || // Lo  [27] HANGUL SYLLABLE RUG..HANGUL SYLLABLE RUH\n\t\t\t0xB905 <= code && code <= 0xB91F || // Lo  [27] HANGUL SYLLABLE RWEOG..HANGUL SYLLABLE RWEOH\n\t\t\t0xB921 <= code && code <= 0xB93B || // Lo  [27] HANGUL SYLLABLE RWEG..HANGUL SYLLABLE RWEH\n\t\t\t0xB93D <= code && code <= 0xB957 || // Lo  [27] HANGUL SYLLABLE RWIG..HANGUL SYLLABLE RWIH\n\t\t\t0xB959 <= code && code <= 0xB973 || // Lo  [27] HANGUL SYLLABLE RYUG..HANGUL SYLLABLE RYUH\n\t\t\t0xB975 <= code && code <= 0xB98F || // Lo  [27] HANGUL SYLLABLE REUG..HANGUL SYLLABLE REUH\n\t\t\t0xB991 <= code && code <= 0xB9AB || // Lo  [27] HANGUL SYLLABLE RYIG..HANGUL SYLLABLE RYIH\n\t\t\t0xB9AD <= code && code <= 0xB9C7 || // Lo  [27] HANGUL SYLLABLE RIG..HANGUL SYLLABLE RIH\n\t\t\t0xB9C9 <= code && code <= 0xB9E3 || // Lo  [27] HANGUL SYLLABLE MAG..HANGUL SYLLABLE MAH\n\t\t\t0xB9E5 <= code && code <= 0xB9FF || // Lo  [27] HANGUL SYLLABLE MAEG..HANGUL SYLLABLE MAEH\n\t\t\t0xBA01 <= code && code <= 0xBA1B || // Lo  [27] HANGUL SYLLABLE MYAG..HANGUL SYLLABLE MYAH\n\t\t\t0xBA1D <= code && code <= 0xBA37 || // Lo  [27] HANGUL SYLLABLE MYAEG..HANGUL SYLLABLE MYAEH\n\t\t\t0xBA39 <= code && code <= 0xBA53 || // Lo  [27] HANGUL SYLLABLE MEOG..HANGUL SYLLABLE MEOH\n\t\t\t0xBA55 <= code && code <= 0xBA6F || // Lo  [27] HANGUL SYLLABLE MEG..HANGUL SYLLABLE MEH\n\t\t\t0xBA71 <= code && code <= 0xBA8B || // Lo  [27] HANGUL SYLLABLE MYEOG..HANGUL SYLLABLE MYEOH\n\t\t\t0xBA8D <= code && code <= 0xBAA7 || // Lo  [27] HANGUL SYLLABLE MYEG..HANGUL SYLLABLE MYEH\n\t\t\t0xBAA9 <= code && code <= 0xBAC3 || // Lo  [27] HANGUL SYLLABLE MOG..HANGUL SYLLABLE MOH\n\t\t\t0xBAC5 <= code && code <= 0xBADF || // Lo  [27] HANGUL SYLLABLE MWAG..HANGUL SYLLABLE MWAH\n\t\t\t0xBAE1 <= code && code <= 0xBAFB || // Lo  [27] HANGUL SYLLABLE MWAEG..HANGUL SYLLABLE MWAEH\n\t\t\t0xBAFD <= code && code <= 0xBB17 || // Lo  [27] HANGUL SYLLABLE MOEG..HANGUL SYLLABLE MOEH\n\t\t\t0xBB19 <= code && code <= 0xBB33 || // Lo  [27] HANGUL SYLLABLE MYOG..HANGUL SYLLABLE MYOH\n\t\t\t0xBB35 <= code && code <= 0xBB4F || // Lo  [27] HANGUL SYLLABLE MUG..HANGUL SYLLABLE MUH\n\t\t\t0xBB51 <= code && code <= 0xBB6B || // Lo  [27] HANGUL SYLLABLE MWEOG..HANGUL SYLLABLE MWEOH\n\t\t\t0xBB6D <= code && code <= 0xBB87 || // Lo  [27] HANGUL SYLLABLE MWEG..HANGUL SYLLABLE MWEH\n\t\t\t0xBB89 <= code && code <= 0xBBA3 || // Lo  [27] HANGUL SYLLABLE MWIG..HANGUL SYLLABLE MWIH\n\t\t\t0xBBA5 <= code && code <= 0xBBBF || // Lo  [27] HANGUL SYLLABLE MYUG..HANGUL SYLLABLE MYUH\n\t\t\t0xBBC1 <= code && code <= 0xBBDB || // Lo  [27] HANGUL SYLLABLE MEUG..HANGUL SYLLABLE MEUH\n\t\t\t0xBBDD <= code && code <= 0xBBF7 || // Lo  [27] HANGUL SYLLABLE MYIG..HANGUL SYLLABLE MYIH\n\t\t\t0xBBF9 <= code && code <= 0xBC13 || // Lo  [27] HANGUL SYLLABLE MIG..HANGUL SYLLABLE MIH\n\t\t\t0xBC15 <= code && code <= 0xBC2F || // Lo  [27] HANGUL SYLLABLE BAG..HANGUL SYLLABLE BAH\n\t\t\t0xBC31 <= code && code <= 0xBC4B || // Lo  [27] HANGUL SYLLABLE BAEG..HANGUL SYLLABLE BAEH\n\t\t\t0xBC4D <= code && code <= 0xBC67 || // Lo  [27] HANGUL SYLLABLE BYAG..HANGUL SYLLABLE BYAH\n\t\t\t0xBC69 <= code && code <= 0xBC83 || // Lo  [27] HANGUL SYLLABLE BYAEG..HANGUL SYLLABLE BYAEH\n\t\t\t0xBC85 <= code && code <= 0xBC9F || // Lo  [27] HANGUL SYLLABLE BEOG..HANGUL SYLLABLE BEOH\n\t\t\t0xBCA1 <= code && code <= 0xBCBB || // Lo  [27] HANGUL SYLLABLE BEG..HANGUL SYLLABLE BEH\n\t\t\t0xBCBD <= code && code <= 0xBCD7 || // Lo  [27] HANGUL SYLLABLE BYEOG..HANGUL SYLLABLE BYEOH\n\t\t\t0xBCD9 <= code && code <= 0xBCF3 || // Lo  [27] HANGUL SYLLABLE BYEG..HANGUL SYLLABLE BYEH\n\t\t\t0xBCF5 <= code && code <= 0xBD0F || // Lo  [27] HANGUL SYLLABLE BOG..HANGUL SYLLABLE BOH\n\t\t\t0xBD11 <= code && code <= 0xBD2B || // Lo  [27] HANGUL SYLLABLE BWAG..HANGUL SYLLABLE BWAH\n\t\t\t0xBD2D <= code && code <= 0xBD47 || // Lo  [27] HANGUL SYLLABLE BWAEG..HANGUL SYLLABLE BWAEH\n\t\t\t0xBD49 <= code && code <= 0xBD63 || // Lo  [27] HANGUL SYLLABLE BOEG..HANGUL SYLLABLE BOEH\n\t\t\t0xBD65 <= code && code <= 0xBD7F || // Lo  [27] HANGUL SYLLABLE BYOG..HANGUL SYLLABLE BYOH\n\t\t\t0xBD81 <= code && code <= 0xBD9B || // Lo  [27] HANGUL SYLLABLE BUG..HANGUL SYLLABLE BUH\n\t\t\t0xBD9D <= code && code <= 0xBDB7 || // Lo  [27] HANGUL SYLLABLE BWEOG..HANGUL SYLLABLE BWEOH\n\t\t\t0xBDB9 <= code && code <= 0xBDD3 || // Lo  [27] HANGUL SYLLABLE BWEG..HANGUL SYLLABLE BWEH\n\t\t\t0xBDD5 <= code && code <= 0xBDEF || // Lo  [27] HANGUL SYLLABLE BWIG..HANGUL SYLLABLE BWIH\n\t\t\t0xBDF1 <= code && code <= 0xBE0B || // Lo  [27] HANGUL SYLLABLE BYUG..HANGUL SYLLABLE BYUH\n\t\t\t0xBE0D <= code && code <= 0xBE27 || // Lo  [27] HANGUL SYLLABLE BEUG..HANGUL SYLLABLE BEUH\n\t\t\t0xBE29 <= code && code <= 0xBE43 || // Lo  [27] HANGUL SYLLABLE BYIG..HANGUL SYLLABLE BYIH\n\t\t\t0xBE45 <= code && code <= 0xBE5F || // Lo  [27] HANGUL SYLLABLE BIG..HANGUL SYLLABLE BIH\n\t\t\t0xBE61 <= code && code <= 0xBE7B || // Lo  [27] HANGUL SYLLABLE BBAG..HANGUL SYLLABLE BBAH\n\t\t\t0xBE7D <= code && code <= 0xBE97 || // Lo  [27] HANGUL SYLLABLE BBAEG..HANGUL SYLLABLE BBAEH\n\t\t\t0xBE99 <= code && code <= 0xBEB3 || // Lo  [27] HANGUL SYLLABLE BBYAG..HANGUL SYLLABLE BBYAH\n\t\t\t0xBEB5 <= code && code <= 0xBECF || // Lo  [27] HANGUL SYLLABLE BBYAEG..HANGUL SYLLABLE BBYAEH\n\t\t\t0xBED1 <= code && code <= 0xBEEB || // Lo  [27] HANGUL SYLLABLE BBEOG..HANGUL SYLLABLE BBEOH\n\t\t\t0xBEED <= code && code <= 0xBF07 || // Lo  [27] HANGUL SYLLABLE BBEG..HANGUL SYLLABLE BBEH\n\t\t\t0xBF09 <= code && code <= 0xBF23 || // Lo  [27] HANGUL SYLLABLE BBYEOG..HANGUL SYLLABLE BBYEOH\n\t\t\t0xBF25 <= code && code <= 0xBF3F || // Lo  [27] HANGUL SYLLABLE BBYEG..HANGUL SYLLABLE BBYEH\n\t\t\t0xBF41 <= code && code <= 0xBF5B || // Lo  [27] HANGUL SYLLABLE BBOG..HANGUL SYLLABLE BBOH\n\t\t\t0xBF5D <= code && code <= 0xBF77 || // Lo  [27] HANGUL SYLLABLE BBWAG..HANGUL SYLLABLE BBWAH\n\t\t\t0xBF79 <= code && code <= 0xBF93 || // Lo  [27] HANGUL SYLLABLE BBWAEG..HANGUL SYLLABLE BBWAEH\n\t\t\t0xBF95 <= code && code <= 0xBFAF || // Lo  [27] HANGUL SYLLABLE BBOEG..HANGUL SYLLABLE BBOEH\n\t\t\t0xBFB1 <= code && code <= 0xBFCB || // Lo  [27] HANGUL SYLLABLE BBYOG..HANGUL SYLLABLE BBYOH\n\t\t\t0xBFCD <= code && code <= 0xBFE7 || // Lo  [27] HANGUL SYLLABLE BBUG..HANGUL SYLLABLE BBUH\n\t\t\t0xBFE9 <= code && code <= 0xC003 || // Lo  [27] HANGUL SYLLABLE BBWEOG..HANGUL SYLLABLE BBWEOH\n\t\t\t0xC005 <= code && code <= 0xC01F || // Lo  [27] HANGUL SYLLABLE BBWEG..HANGUL SYLLABLE BBWEH\n\t\t\t0xC021 <= code && code <= 0xC03B || // Lo  [27] HANGUL SYLLABLE BBWIG..HANGUL SYLLABLE BBWIH\n\t\t\t0xC03D <= code && code <= 0xC057 || // Lo  [27] HANGUL SYLLABLE BBYUG..HANGUL SYLLABLE BBYUH\n\t\t\t0xC059 <= code && code <= 0xC073 || // Lo  [27] HANGUL SYLLABLE BBEUG..HANGUL SYLLABLE BBEUH\n\t\t\t0xC075 <= code && code <= 0xC08F || // Lo  [27] HANGUL SYLLABLE BBYIG..HANGUL SYLLABLE BBYIH\n\t\t\t0xC091 <= code && code <= 0xC0AB || // Lo  [27] HANGUL SYLLABLE BBIG..HANGUL SYLLABLE BBIH\n\t\t\t0xC0AD <= code && code <= 0xC0C7 || // Lo  [27] HANGUL SYLLABLE SAG..HANGUL SYLLABLE SAH\n\t\t\t0xC0C9 <= code && code <= 0xC0E3 || // Lo  [27] HANGUL SYLLABLE SAEG..HANGUL SYLLABLE SAEH\n\t\t\t0xC0E5 <= code && code <= 0xC0FF || // Lo  [27] HANGUL SYLLABLE SYAG..HANGUL SYLLABLE SYAH\n\t\t\t0xC101 <= code && code <= 0xC11B || // Lo  [27] HANGUL SYLLABLE SYAEG..HANGUL SYLLABLE SYAEH\n\t\t\t0xC11D <= code && code <= 0xC137 || // Lo  [27] HANGUL SYLLABLE SEOG..HANGUL SYLLABLE SEOH\n\t\t\t0xC139 <= code && code <= 0xC153 || // Lo  [27] HANGUL SYLLABLE SEG..HANGUL SYLLABLE SEH\n\t\t\t0xC155 <= code && code <= 0xC16F || // Lo  [27] HANGUL SYLLABLE SYEOG..HANGUL SYLLABLE SYEOH\n\t\t\t0xC171 <= code && code <= 0xC18B || // Lo  [27] HANGUL SYLLABLE SYEG..HANGUL SYLLABLE SYEH\n\t\t\t0xC18D <= code && code <= 0xC1A7 || // Lo  [27] HANGUL SYLLABLE SOG..HANGUL SYLLABLE SOH\n\t\t\t0xC1A9 <= code && code <= 0xC1C3 || // Lo  [27] HANGUL SYLLABLE SWAG..HANGUL SYLLABLE SWAH\n\t\t\t0xC1C5 <= code && code <= 0xC1DF || // Lo  [27] HANGUL SYLLABLE SWAEG..HANGUL SYLLABLE SWAEH\n\t\t\t0xC1E1 <= code && code <= 0xC1FB || // Lo  [27] HANGUL SYLLABLE SOEG..HANGUL SYLLABLE SOEH\n\t\t\t0xC1FD <= code && code <= 0xC217 || // Lo  [27] HANGUL SYLLABLE SYOG..HANGUL SYLLABLE SYOH\n\t\t\t0xC219 <= code && code <= 0xC233 || // Lo  [27] HANGUL SYLLABLE SUG..HANGUL SYLLABLE SUH\n\t\t\t0xC235 <= code && code <= 0xC24F || // Lo  [27] HANGUL SYLLABLE SWEOG..HANGUL SYLLABLE SWEOH\n\t\t\t0xC251 <= code && code <= 0xC26B || // Lo  [27] HANGUL SYLLABLE SWEG..HANGUL SYLLABLE SWEH\n\t\t\t0xC26D <= code && code <= 0xC287 || // Lo  [27] HANGUL SYLLABLE SWIG..HANGUL SYLLABLE SWIH\n\t\t\t0xC289 <= code && code <= 0xC2A3 || // Lo  [27] HANGUL SYLLABLE SYUG..HANGUL SYLLABLE SYUH\n\t\t\t0xC2A5 <= code && code <= 0xC2BF || // Lo  [27] HANGUL SYLLABLE SEUG..HANGUL SYLLABLE SEUH\n\t\t\t0xC2C1 <= code && code <= 0xC2DB || // Lo  [27] HANGUL SYLLABLE SYIG..HANGUL SYLLABLE SYIH\n\t\t\t0xC2DD <= code && code <= 0xC2F7 || // Lo  [27] HANGUL SYLLABLE SIG..HANGUL SYLLABLE SIH\n\t\t\t0xC2F9 <= code && code <= 0xC313 || // Lo  [27] HANGUL SYLLABLE SSAG..HANGUL SYLLABLE SSAH\n\t\t\t0xC315 <= code && code <= 0xC32F || // Lo  [27] HANGUL SYLLABLE SSAEG..HANGUL SYLLABLE SSAEH\n\t\t\t0xC331 <= code && code <= 0xC34B || // Lo  [27] HANGUL SYLLABLE SSYAG..HANGUL SYLLABLE SSYAH\n\t\t\t0xC34D <= code && code <= 0xC367 || // Lo  [27] HANGUL SYLLABLE SSYAEG..HANGUL SYLLABLE SSYAEH\n\t\t\t0xC369 <= code && code <= 0xC383 || // Lo  [27] HANGUL SYLLABLE SSEOG..HANGUL SYLLABLE SSEOH\n\t\t\t0xC385 <= code && code <= 0xC39F || // Lo  [27] HANGUL SYLLABLE SSEG..HANGUL SYLLABLE SSEH\n\t\t\t0xC3A1 <= code && code <= 0xC3BB || // Lo  [27] HANGUL SYLLABLE SSYEOG..HANGUL SYLLABLE SSYEOH\n\t\t\t0xC3BD <= code && code <= 0xC3D7 || // Lo  [27] HANGUL SYLLABLE SSYEG..HANGUL SYLLABLE SSYEH\n\t\t\t0xC3D9 <= code && code <= 0xC3F3 || // Lo  [27] HANGUL SYLLABLE SSOG..HANGUL SYLLABLE SSOH\n\t\t\t0xC3F5 <= code && code <= 0xC40F || // Lo  [27] HANGUL SYLLABLE SSWAG..HANGUL SYLLABLE SSWAH\n\t\t\t0xC411 <= code && code <= 0xC42B || // Lo  [27] HANGUL SYLLABLE SSWAEG..HANGUL SYLLABLE SSWAEH\n\t\t\t0xC42D <= code && code <= 0xC447 || // Lo  [27] HANGUL SYLLABLE SSOEG..HANGUL SYLLABLE SSOEH\n\t\t\t0xC449 <= code && code <= 0xC463 || // Lo  [27] HANGUL SYLLABLE SSYOG..HANGUL SYLLABLE SSYOH\n\t\t\t0xC465 <= code && code <= 0xC47F || // Lo  [27] HANGUL SYLLABLE SSUG..HANGUL SYLLABLE SSUH\n\t\t\t0xC481 <= code && code <= 0xC49B || // Lo  [27] HANGUL SYLLABLE SSWEOG..HANGUL SYLLABLE SSWEOH\n\t\t\t0xC49D <= code && code <= 0xC4B7 || // Lo  [27] HANGUL SYLLABLE SSWEG..HANGUL SYLLABLE SSWEH\n\t\t\t0xC4B9 <= code && code <= 0xC4D3 || // Lo  [27] HANGUL SYLLABLE SSWIG..HANGUL SYLLABLE SSWIH\n\t\t\t0xC4D5 <= code && code <= 0xC4EF || // Lo  [27] HANGUL SYLLABLE SSYUG..HANGUL SYLLABLE SSYUH\n\t\t\t0xC4F1 <= code && code <= 0xC50B || // Lo  [27] HANGUL SYLLABLE SSEUG..HANGUL SYLLABLE SSEUH\n\t\t\t0xC50D <= code && code <= 0xC527 || // Lo  [27] HANGUL SYLLABLE SSYIG..HANGUL SYLLABLE SSYIH\n\t\t\t0xC529 <= code && code <= 0xC543 || // Lo  [27] HANGUL SYLLABLE SSIG..HANGUL SYLLABLE SSIH\n\t\t\t0xC545 <= code && code <= 0xC55F || // Lo  [27] HANGUL SYLLABLE AG..HANGUL SYLLABLE AH\n\t\t\t0xC561 <= code && code <= 0xC57B || // Lo  [27] HANGUL SYLLABLE AEG..HANGUL SYLLABLE AEH\n\t\t\t0xC57D <= code && code <= 0xC597 || // Lo  [27] HANGUL SYLLABLE YAG..HANGUL SYLLABLE YAH\n\t\t\t0xC599 <= code && code <= 0xC5B3 || // Lo  [27] HANGUL SYLLABLE YAEG..HANGUL SYLLABLE YAEH\n\t\t\t0xC5B5 <= code && code <= 0xC5CF || // Lo  [27] HANGUL SYLLABLE EOG..HANGUL SYLLABLE EOH\n\t\t\t0xC5D1 <= code && code <= 0xC5EB || // Lo  [27] HANGUL SYLLABLE EG..HANGUL SYLLABLE EH\n\t\t\t0xC5ED <= code && code <= 0xC607 || // Lo  [27] HANGUL SYLLABLE YEOG..HANGUL SYLLABLE YEOH\n\t\t\t0xC609 <= code && code <= 0xC623 || // Lo  [27] HANGUL SYLLABLE YEG..HANGUL SYLLABLE YEH\n\t\t\t0xC625 <= code && code <= 0xC63F || // Lo  [27] HANGUL SYLLABLE OG..HANGUL SYLLABLE OH\n\t\t\t0xC641 <= code && code <= 0xC65B || // Lo  [27] HANGUL SYLLABLE WAG..HANGUL SYLLABLE WAH\n\t\t\t0xC65D <= code && code <= 0xC677 || // Lo  [27] HANGUL SYLLABLE WAEG..HANGUL SYLLABLE WAEH\n\t\t\t0xC679 <= code && code <= 0xC693 || // Lo  [27] HANGUL SYLLABLE OEG..HANGUL SYLLABLE OEH\n\t\t\t0xC695 <= code && code <= 0xC6AF || // Lo  [27] HANGUL SYLLABLE YOG..HANGUL SYLLABLE YOH\n\t\t\t0xC6B1 <= code && code <= 0xC6CB || // Lo  [27] HANGUL SYLLABLE UG..HANGUL SYLLABLE UH\n\t\t\t0xC6CD <= code && code <= 0xC6E7 || // Lo  [27] HANGUL SYLLABLE WEOG..HANGUL SYLLABLE WEOH\n\t\t\t0xC6E9 <= code && code <= 0xC703 || // Lo  [27] HANGUL SYLLABLE WEG..HANGUL SYLLABLE WEH\n\t\t\t0xC705 <= code && code <= 0xC71F || // Lo  [27] HANGUL SYLLABLE WIG..HANGUL SYLLABLE WIH\n\t\t\t0xC721 <= code && code <= 0xC73B || // Lo  [27] HANGUL SYLLABLE YUG..HANGUL SYLLABLE YUH\n\t\t\t0xC73D <= code && code <= 0xC757 || // Lo  [27] HANGUL SYLLABLE EUG..HANGUL SYLLABLE EUH\n\t\t\t0xC759 <= code && code <= 0xC773 || // Lo  [27] HANGUL SYLLABLE YIG..HANGUL SYLLABLE YIH\n\t\t\t0xC775 <= code && code <= 0xC78F || // Lo  [27] HANGUL SYLLABLE IG..HANGUL SYLLABLE IH\n\t\t\t0xC791 <= code && code <= 0xC7AB || // Lo  [27] HANGUL SYLLABLE JAG..HANGUL SYLLABLE JAH\n\t\t\t0xC7AD <= code && code <= 0xC7C7 || // Lo  [27] HANGUL SYLLABLE JAEG..HANGUL SYLLABLE JAEH\n\t\t\t0xC7C9 <= code && code <= 0xC7E3 || // Lo  [27] HANGUL SYLLABLE JYAG..HANGUL SYLLABLE JYAH\n\t\t\t0xC7E5 <= code && code <= 0xC7FF || // Lo  [27] HANGUL SYLLABLE JYAEG..HANGUL SYLLABLE JYAEH\n\t\t\t0xC801 <= code && code <= 0xC81B || // Lo  [27] HANGUL SYLLABLE JEOG..HANGUL SYLLABLE JEOH\n\t\t\t0xC81D <= code && code <= 0xC837 || // Lo  [27] HANGUL SYLLABLE JEG..HANGUL SYLLABLE JEH\n\t\t\t0xC839 <= code && code <= 0xC853 || // Lo  [27] HANGUL SYLLABLE JYEOG..HANGUL SYLLABLE JYEOH\n\t\t\t0xC855 <= code && code <= 0xC86F || // Lo  [27] HANGUL SYLLABLE JYEG..HANGUL SYLLABLE JYEH\n\t\t\t0xC871 <= code && code <= 0xC88B || // Lo  [27] HANGUL SYLLABLE JOG..HANGUL SYLLABLE JOH\n\t\t\t0xC88D <= code && code <= 0xC8A7 || // Lo  [27] HANGUL SYLLABLE JWAG..HANGUL SYLLABLE JWAH\n\t\t\t0xC8A9 <= code && code <= 0xC8C3 || // Lo  [27] HANGUL SYLLABLE JWAEG..HANGUL SYLLABLE JWAEH\n\t\t\t0xC8C5 <= code && code <= 0xC8DF || // Lo  [27] HANGUL SYLLABLE JOEG..HANGUL SYLLABLE JOEH\n\t\t\t0xC8E1 <= code && code <= 0xC8FB || // Lo  [27] HANGUL SYLLABLE JYOG..HANGUL SYLLABLE JYOH\n\t\t\t0xC8FD <= code && code <= 0xC917 || // Lo  [27] HANGUL SYLLABLE JUG..HANGUL SYLLABLE JUH\n\t\t\t0xC919 <= code && code <= 0xC933 || // Lo  [27] HANGUL SYLLABLE JWEOG..HANGUL SYLLABLE JWEOH\n\t\t\t0xC935 <= code && code <= 0xC94F || // Lo  [27] HANGUL SYLLABLE JWEG..HANGUL SYLLABLE JWEH\n\t\t\t0xC951 <= code && code <= 0xC96B || // Lo  [27] HANGUL SYLLABLE JWIG..HANGUL SYLLABLE JWIH\n\t\t\t0xC96D <= code && code <= 0xC987 || // Lo  [27] HANGUL SYLLABLE JYUG..HANGUL SYLLABLE JYUH\n\t\t\t0xC989 <= code && code <= 0xC9A3 || // Lo  [27] HANGUL SYLLABLE JEUG..HANGUL SYLLABLE JEUH\n\t\t\t0xC9A5 <= code && code <= 0xC9BF || // Lo  [27] HANGUL SYLLABLE JYIG..HANGUL SYLLABLE JYIH\n\t\t\t0xC9C1 <= code && code <= 0xC9DB || // Lo  [27] HANGUL SYLLABLE JIG..HANGUL SYLLABLE JIH\n\t\t\t0xC9DD <= code && code <= 0xC9F7 || // Lo  [27] HANGUL SYLLABLE JJAG..HANGUL SYLLABLE JJAH\n\t\t\t0xC9F9 <= code && code <= 0xCA13 || // Lo  [27] HANGUL SYLLABLE JJAEG..HANGUL SYLLABLE JJAEH\n\t\t\t0xCA15 <= code && code <= 0xCA2F || // Lo  [27] HANGUL SYLLABLE JJYAG..HANGUL SYLLABLE JJYAH\n\t\t\t0xCA31 <= code && code <= 0xCA4B || // Lo  [27] HANGUL SYLLABLE JJYAEG..HANGUL SYLLABLE JJYAEH\n\t\t\t0xCA4D <= code && code <= 0xCA67 || // Lo  [27] HANGUL SYLLABLE JJEOG..HANGUL SYLLABLE JJEOH\n\t\t\t0xCA69 <= code && code <= 0xCA83 || // Lo  [27] HANGUL SYLLABLE JJEG..HANGUL SYLLABLE JJEH\n\t\t\t0xCA85 <= code && code <= 0xCA9F || // Lo  [27] HANGUL SYLLABLE JJYEOG..HANGUL SYLLABLE JJYEOH\n\t\t\t0xCAA1 <= code && code <= 0xCABB || // Lo  [27] HANGUL SYLLABLE JJYEG..HANGUL SYLLABLE JJYEH\n\t\t\t0xCABD <= code && code <= 0xCAD7 || // Lo  [27] HANGUL SYLLABLE JJOG..HANGUL SYLLABLE JJOH\n\t\t\t0xCAD9 <= code && code <= 0xCAF3 || // Lo  [27] HANGUL SYLLABLE JJWAG..HANGUL SYLLABLE JJWAH\n\t\t\t0xCAF5 <= code && code <= 0xCB0F || // Lo  [27] HANGUL SYLLABLE JJWAEG..HANGUL SYLLABLE JJWAEH\n\t\t\t0xCB11 <= code && code <= 0xCB2B || // Lo  [27] HANGUL SYLLABLE JJOEG..HANGUL SYLLABLE JJOEH\n\t\t\t0xCB2D <= code && code <= 0xCB47 || // Lo  [27] HANGUL SYLLABLE JJYOG..HANGUL SYLLABLE JJYOH\n\t\t\t0xCB49 <= code && code <= 0xCB63 || // Lo  [27] HANGUL SYLLABLE JJUG..HANGUL SYLLABLE JJUH\n\t\t\t0xCB65 <= code && code <= 0xCB7F || // Lo  [27] HANGUL SYLLABLE JJWEOG..HANGUL SYLLABLE JJWEOH\n\t\t\t0xCB81 <= code && code <= 0xCB9B || // Lo  [27] HANGUL SYLLABLE JJWEG..HANGUL SYLLABLE JJWEH\n\t\t\t0xCB9D <= code && code <= 0xCBB7 || // Lo  [27] HANGUL SYLLABLE JJWIG..HANGUL SYLLABLE JJWIH\n\t\t\t0xCBB9 <= code && code <= 0xCBD3 || // Lo  [27] HANGUL SYLLABLE JJYUG..HANGUL SYLLABLE JJYUH\n\t\t\t0xCBD5 <= code && code <= 0xCBEF || // Lo  [27] HANGUL SYLLABLE JJEUG..HANGUL SYLLABLE JJEUH\n\t\t\t0xCBF1 <= code && code <= 0xCC0B || // Lo  [27] HANGUL SYLLABLE JJYIG..HANGUL SYLLABLE JJYIH\n\t\t\t0xCC0D <= code && code <= 0xCC27 || // Lo  [27] HANGUL SYLLABLE JJIG..HANGUL SYLLABLE JJIH\n\t\t\t0xCC29 <= code && code <= 0xCC43 || // Lo  [27] HANGUL SYLLABLE CAG..HANGUL SYLLABLE CAH\n\t\t\t0xCC45 <= code && code <= 0xCC5F || // Lo  [27] HANGUL SYLLABLE CAEG..HANGUL SYLLABLE CAEH\n\t\t\t0xCC61 <= code && code <= 0xCC7B || // Lo  [27] HANGUL SYLLABLE CYAG..HANGUL SYLLABLE CYAH\n\t\t\t0xCC7D <= code && code <= 0xCC97 || // Lo  [27] HANGUL SYLLABLE CYAEG..HANGUL SYLLABLE CYAEH\n\t\t\t0xCC99 <= code && code <= 0xCCB3 || // Lo  [27] HANGUL SYLLABLE CEOG..HANGUL SYLLABLE CEOH\n\t\t\t0xCCB5 <= code && code <= 0xCCCF || // Lo  [27] HANGUL SYLLABLE CEG..HANGUL SYLLABLE CEH\n\t\t\t0xCCD1 <= code && code <= 0xCCEB || // Lo  [27] HANGUL SYLLABLE CYEOG..HANGUL SYLLABLE CYEOH\n\t\t\t0xCCED <= code && code <= 0xCD07 || // Lo  [27] HANGUL SYLLABLE CYEG..HANGUL SYLLABLE CYEH\n\t\t\t0xCD09 <= code && code <= 0xCD23 || // Lo  [27] HANGUL SYLLABLE COG..HANGUL SYLLABLE COH\n\t\t\t0xCD25 <= code && code <= 0xCD3F || // Lo  [27] HANGUL SYLLABLE CWAG..HANGUL SYLLABLE CWAH\n\t\t\t0xCD41 <= code && code <= 0xCD5B || // Lo  [27] HANGUL SYLLABLE CWAEG..HANGUL SYLLABLE CWAEH\n\t\t\t0xCD5D <= code && code <= 0xCD77 || // Lo  [27] HANGUL SYLLABLE COEG..HANGUL SYLLABLE COEH\n\t\t\t0xCD79 <= code && code <= 0xCD93 || // Lo  [27] HANGUL SYLLABLE CYOG..HANGUL SYLLABLE CYOH\n\t\t\t0xCD95 <= code && code <= 0xCDAF || // Lo  [27] HANGUL SYLLABLE CUG..HANGUL SYLLABLE CUH\n\t\t\t0xCDB1 <= code && code <= 0xCDCB || // Lo  [27] HANGUL SYLLABLE CWEOG..HANGUL SYLLABLE CWEOH\n\t\t\t0xCDCD <= code && code <= 0xCDE7 || // Lo  [27] HANGUL SYLLABLE CWEG..HANGUL SYLLABLE CWEH\n\t\t\t0xCDE9 <= code && code <= 0xCE03 || // Lo  [27] HANGUL SYLLABLE CWIG..HANGUL SYLLABLE CWIH\n\t\t\t0xCE05 <= code && code <= 0xCE1F || // Lo  [27] HANGUL SYLLABLE CYUG..HANGUL SYLLABLE CYUH\n\t\t\t0xCE21 <= code && code <= 0xCE3B || // Lo  [27] HANGUL SYLLABLE CEUG..HANGUL SYLLABLE CEUH\n\t\t\t0xCE3D <= code && code <= 0xCE57 || // Lo  [27] HANGUL SYLLABLE CYIG..HANGUL SYLLABLE CYIH\n\t\t\t0xCE59 <= code && code <= 0xCE73 || // Lo  [27] HANGUL SYLLABLE CIG..HANGUL SYLLABLE CIH\n\t\t\t0xCE75 <= code && code <= 0xCE8F || // Lo  [27] HANGUL SYLLABLE KAG..HANGUL SYLLABLE KAH\n\t\t\t0xCE91 <= code && code <= 0xCEAB || // Lo  [27] HANGUL SYLLABLE KAEG..HANGUL SYLLABLE KAEH\n\t\t\t0xCEAD <= code && code <= 0xCEC7 || // Lo  [27] HANGUL SYLLABLE KYAG..HANGUL SYLLABLE KYAH\n\t\t\t0xCEC9 <= code && code <= 0xCEE3 || // Lo  [27] HANGUL SYLLABLE KYAEG..HANGUL SYLLABLE KYAEH\n\t\t\t0xCEE5 <= code && code <= 0xCEFF || // Lo  [27] HANGUL SYLLABLE KEOG..HANGUL SYLLABLE KEOH\n\t\t\t0xCF01 <= code && code <= 0xCF1B || // Lo  [27] HANGUL SYLLABLE KEG..HANGUL SYLLABLE KEH\n\t\t\t0xCF1D <= code && code <= 0xCF37 || // Lo  [27] HANGUL SYLLABLE KYEOG..HANGUL SYLLABLE KYEOH\n\t\t\t0xCF39 <= code && code <= 0xCF53 || // Lo  [27] HANGUL SYLLABLE KYEG..HANGUL SYLLABLE KYEH\n\t\t\t0xCF55 <= code && code <= 0xCF6F || // Lo  [27] HANGUL SYLLABLE KOG..HANGUL SYLLABLE KOH\n\t\t\t0xCF71 <= code && code <= 0xCF8B || // Lo  [27] HANGUL SYLLABLE KWAG..HANGUL SYLLABLE KWAH\n\t\t\t0xCF8D <= code && code <= 0xCFA7 || // Lo  [27] HANGUL SYLLABLE KWAEG..HANGUL SYLLABLE KWAEH\n\t\t\t0xCFA9 <= code && code <= 0xCFC3 || // Lo  [27] HANGUL SYLLABLE KOEG..HANGUL SYLLABLE KOEH\n\t\t\t0xCFC5 <= code && code <= 0xCFDF || // Lo  [27] HANGUL SYLLABLE KYOG..HANGUL SYLLABLE KYOH\n\t\t\t0xCFE1 <= code && code <= 0xCFFB || // Lo  [27] HANGUL SYLLABLE KUG..HANGUL SYLLABLE KUH\n\t\t\t0xCFFD <= code && code <= 0xD017 || // Lo  [27] HANGUL SYLLABLE KWEOG..HANGUL SYLLABLE KWEOH\n\t\t\t0xD019 <= code && code <= 0xD033 || // Lo  [27] HANGUL SYLLABLE KWEG..HANGUL SYLLABLE KWEH\n\t\t\t0xD035 <= code && code <= 0xD04F || // Lo  [27] HANGUL SYLLABLE KWIG..HANGUL SYLLABLE KWIH\n\t\t\t0xD051 <= code && code <= 0xD06B || // Lo  [27] HANGUL SYLLABLE KYUG..HANGUL SYLLABLE KYUH\n\t\t\t0xD06D <= code && code <= 0xD087 || // Lo  [27] HANGUL SYLLABLE KEUG..HANGUL SYLLABLE KEUH\n\t\t\t0xD089 <= code && code <= 0xD0A3 || // Lo  [27] HANGUL SYLLABLE KYIG..HANGUL SYLLABLE KYIH\n\t\t\t0xD0A5 <= code && code <= 0xD0BF || // Lo  [27] HANGUL SYLLABLE KIG..HANGUL SYLLABLE KIH\n\t\t\t0xD0C1 <= code && code <= 0xD0DB || // Lo  [27] HANGUL SYLLABLE TAG..HANGUL SYLLABLE TAH\n\t\t\t0xD0DD <= code && code <= 0xD0F7 || // Lo  [27] HANGUL SYLLABLE TAEG..HANGUL SYLLABLE TAEH\n\t\t\t0xD0F9 <= code && code <= 0xD113 || // Lo  [27] HANGUL SYLLABLE TYAG..HANGUL SYLLABLE TYAH\n\t\t\t0xD115 <= code && code <= 0xD12F || // Lo  [27] HANGUL SYLLABLE TYAEG..HANGUL SYLLABLE TYAEH\n\t\t\t0xD131 <= code && code <= 0xD14B || // Lo  [27] HANGUL SYLLABLE TEOG..HANGUL SYLLABLE TEOH\n\t\t\t0xD14D <= code && code <= 0xD167 || // Lo  [27] HANGUL SYLLABLE TEG..HANGUL SYLLABLE TEH\n\t\t\t0xD169 <= code && code <= 0xD183 || // Lo  [27] HANGUL SYLLABLE TYEOG..HANGUL SYLLABLE TYEOH\n\t\t\t0xD185 <= code && code <= 0xD19F || // Lo  [27] HANGUL SYLLABLE TYEG..HANGUL SYLLABLE TYEH\n\t\t\t0xD1A1 <= code && code <= 0xD1BB || // Lo  [27] HANGUL SYLLABLE TOG..HANGUL SYLLABLE TOH\n\t\t\t0xD1BD <= code && code <= 0xD1D7 || // Lo  [27] HANGUL SYLLABLE TWAG..HANGUL SYLLABLE TWAH\n\t\t\t0xD1D9 <= code && code <= 0xD1F3 || // Lo  [27] HANGUL SYLLABLE TWAEG..HANGUL SYLLABLE TWAEH\n\t\t\t0xD1F5 <= code && code <= 0xD20F || // Lo  [27] HANGUL SYLLABLE TOEG..HANGUL SYLLABLE TOEH\n\t\t\t0xD211 <= code && code <= 0xD22B || // Lo  [27] HANGUL SYLLABLE TYOG..HANGUL SYLLABLE TYOH\n\t\t\t0xD22D <= code && code <= 0xD247 || // Lo  [27] HANGUL SYLLABLE TUG..HANGUL SYLLABLE TUH\n\t\t\t0xD249 <= code && code <= 0xD263 || // Lo  [27] HANGUL SYLLABLE TWEOG..HANGUL SYLLABLE TWEOH\n\t\t\t0xD265 <= code && code <= 0xD27F || // Lo  [27] HANGUL SYLLABLE TWEG..HANGUL SYLLABLE TWEH\n\t\t\t0xD281 <= code && code <= 0xD29B || // Lo  [27] HANGUL SYLLABLE TWIG..HANGUL SYLLABLE TWIH\n\t\t\t0xD29D <= code && code <= 0xD2B7 || // Lo  [27] HANGUL SYLLABLE TYUG..HANGUL SYLLABLE TYUH\n\t\t\t0xD2B9 <= code && code <= 0xD2D3 || // Lo  [27] HANGUL SYLLABLE TEUG..HANGUL SYLLABLE TEUH\n\t\t\t0xD2D5 <= code && code <= 0xD2EF || // Lo  [27] HANGUL SYLLABLE TYIG..HANGUL SYLLABLE TYIH\n\t\t\t0xD2F1 <= code && code <= 0xD30B || // Lo  [27] HANGUL SYLLABLE TIG..HANGUL SYLLABLE TIH\n\t\t\t0xD30D <= code && code <= 0xD327 || // Lo  [27] HANGUL SYLLABLE PAG..HANGUL SYLLABLE PAH\n\t\t\t0xD329 <= code && code <= 0xD343 || // Lo  [27] HANGUL SYLLABLE PAEG..HANGUL SYLLABLE PAEH\n\t\t\t0xD345 <= code && code <= 0xD35F || // Lo  [27] HANGUL SYLLABLE PYAG..HANGUL SYLLABLE PYAH\n\t\t\t0xD361 <= code && code <= 0xD37B || // Lo  [27] HANGUL SYLLABLE PYAEG..HANGUL SYLLABLE PYAEH\n\t\t\t0xD37D <= code && code <= 0xD397 || // Lo  [27] HANGUL SYLLABLE PEOG..HANGUL SYLLABLE PEOH\n\t\t\t0xD399 <= code && code <= 0xD3B3 || // Lo  [27] HANGUL SYLLABLE PEG..HANGUL SYLLABLE PEH\n\t\t\t0xD3B5 <= code && code <= 0xD3CF || // Lo  [27] HANGUL SYLLABLE PYEOG..HANGUL SYLLABLE PYEOH\n\t\t\t0xD3D1 <= code && code <= 0xD3EB || // Lo  [27] HANGUL SYLLABLE PYEG..HANGUL SYLLABLE PYEH\n\t\t\t0xD3ED <= code && code <= 0xD407 || // Lo  [27] HANGUL SYLLABLE POG..HANGUL SYLLABLE POH\n\t\t\t0xD409 <= code && code <= 0xD423 || // Lo  [27] HANGUL SYLLABLE PWAG..HANGUL SYLLABLE PWAH\n\t\t\t0xD425 <= code && code <= 0xD43F || // Lo  [27] HANGUL SYLLABLE PWAEG..HANGUL SYLLABLE PWAEH\n\t\t\t0xD441 <= code && code <= 0xD45B || // Lo  [27] HANGUL SYLLABLE POEG..HANGUL SYLLABLE POEH\n\t\t\t0xD45D <= code && code <= 0xD477 || // Lo  [27] HANGUL SYLLABLE PYOG..HANGUL SYLLABLE PYOH\n\t\t\t0xD479 <= code && code <= 0xD493 || // Lo  [27] HANGUL SYLLABLE PUG..HANGUL SYLLABLE PUH\n\t\t\t0xD495 <= code && code <= 0xD4AF || // Lo  [27] HANGUL SYLLABLE PWEOG..HANGUL SYLLABLE PWEOH\n\t\t\t0xD4B1 <= code && code <= 0xD4CB || // Lo  [27] HANGUL SYLLABLE PWEG..HANGUL SYLLABLE PWEH\n\t\t\t0xD4CD <= code && code <= 0xD4E7 || // Lo  [27] HANGUL SYLLABLE PWIG..HANGUL SYLLABLE PWIH\n\t\t\t0xD4E9 <= code && code <= 0xD503 || // Lo  [27] HANGUL SYLLABLE PYUG..HANGUL SYLLABLE PYUH\n\t\t\t0xD505 <= code && code <= 0xD51F || // Lo  [27] HANGUL SYLLABLE PEUG..HANGUL SYLLABLE PEUH\n\t\t\t0xD521 <= code && code <= 0xD53B || // Lo  [27] HANGUL SYLLABLE PYIG..HANGUL SYLLABLE PYIH\n\t\t\t0xD53D <= code && code <= 0xD557 || // Lo  [27] HANGUL SYLLABLE PIG..HANGUL SYLLABLE PIH\n\t\t\t0xD559 <= code && code <= 0xD573 || // Lo  [27] HANGUL SYLLABLE HAG..HANGUL SYLLABLE HAH\n\t\t\t0xD575 <= code && code <= 0xD58F || // Lo  [27] HANGUL SYLLABLE HAEG..HANGUL SYLLABLE HAEH\n\t\t\t0xD591 <= code && code <= 0xD5AB || // Lo  [27] HANGUL SYLLABLE HYAG..HANGUL SYLLABLE HYAH\n\t\t\t0xD5AD <= code && code <= 0xD5C7 || // Lo  [27] HANGUL SYLLABLE HYAEG..HANGUL SYLLABLE HYAEH\n\t\t\t0xD5C9 <= code && code <= 0xD5E3 || // Lo  [27] HANGUL SYLLABLE HEOG..HANGUL SYLLABLE HEOH\n\t\t\t0xD5E5 <= code && code <= 0xD5FF || // Lo  [27] HANGUL SYLLABLE HEG..HANGUL SYLLABLE HEH\n\t\t\t0xD601 <= code && code <= 0xD61B || // Lo  [27] HANGUL SYLLABLE HYEOG..HANGUL SYLLABLE HYEOH\n\t\t\t0xD61D <= code && code <= 0xD637 || // Lo  [27] HANGUL SYLLABLE HYEG..HANGUL SYLLABLE HYEH\n\t\t\t0xD639 <= code && code <= 0xD653 || // Lo  [27] HANGUL SYLLABLE HOG..HANGUL SYLLABLE HOH\n\t\t\t0xD655 <= code && code <= 0xD66F || // Lo  [27] HANGUL SYLLABLE HWAG..HANGUL SYLLABLE HWAH\n\t\t\t0xD671 <= code && code <= 0xD68B || // Lo  [27] HANGUL SYLLABLE HWAEG..HANGUL SYLLABLE HWAEH\n\t\t\t0xD68D <= code && code <= 0xD6A7 || // Lo  [27] HANGUL SYLLABLE HOEG..HANGUL SYLLABLE HOEH\n\t\t\t0xD6A9 <= code && code <= 0xD6C3 || // Lo  [27] HANGUL SYLLABLE HYOG..HANGUL SYLLABLE HYOH\n\t\t\t0xD6C5 <= code && code <= 0xD6DF || // Lo  [27] HANGUL SYLLABLE HUG..HANGUL SYLLABLE HUH\n\t\t\t0xD6E1 <= code && code <= 0xD6FB || // Lo  [27] HANGUL SYLLABLE HWEOG..HANGUL SYLLABLE HWEOH\n\t\t\t0xD6FD <= code && code <= 0xD717 || // Lo  [27] HANGUL SYLLABLE HWEG..HANGUL SYLLABLE HWEH\n\t\t\t0xD719 <= code && code <= 0xD733 || // Lo  [27] HANGUL SYLLABLE HWIG..HANGUL SYLLABLE HWIH\n\t\t\t0xD735 <= code && code <= 0xD74F || // Lo  [27] HANGUL SYLLABLE HYUG..HANGUL SYLLABLE HYUH\n\t\t\t0xD751 <= code && code <= 0xD76B || // Lo  [27] HANGUL SYLLABLE HEUG..HANGUL SYLLABLE HEUH\n\t\t\t0xD76D <= code && code <= 0xD787 || // Lo  [27] HANGUL SYLLABLE HYIG..HANGUL SYLLABLE HYIH\n\t\t\t0xD789 <= code && code <= 0xD7A3 // Lo  [27] HANGUL SYLLABLE HIG..HANGUL SYLLABLE HIH\n\t\t\t) {\n\t\t\t\t\treturn LVT;\n\t\t\t\t}\n\n\t\t\tif (0x261D == code || // So       WHITE UP POINTING INDEX\n\t\t\t0x26F9 == code || // So       PERSON WITH BALL\n\t\t\t0x270A <= code && code <= 0x270D || // So   [4] RAISED FIST..WRITING HAND\n\t\t\t0x1F385 == code || // So       FATHER CHRISTMAS\n\t\t\t0x1F3C2 <= code && code <= 0x1F3C4 || // So   [3] SNOWBOARDER..SURFER\n\t\t\t0x1F3C7 == code || // So       HORSE RACING\n\t\t\t0x1F3CA <= code && code <= 0x1F3CC || // So   [3] SWIMMER..GOLFER\n\t\t\t0x1F442 <= code && code <= 0x1F443 || // So   [2] EAR..NOSE\n\t\t\t0x1F446 <= code && code <= 0x1F450 || // So  [11] WHITE UP POINTING BACKHAND INDEX..OPEN HANDS SIGN\n\t\t\t0x1F46E == code || // So       POLICE OFFICER\n\t\t\t0x1F470 <= code && code <= 0x1F478 || // So   [9] BRIDE WITH VEIL..PRINCESS\n\t\t\t0x1F47C == code || // So       BABY ANGEL\n\t\t\t0x1F481 <= code && code <= 0x1F483 || // So   [3] INFORMATION DESK PERSON..DANCER\n\t\t\t0x1F485 <= code && code <= 0x1F487 || // So   [3] NAIL POLISH..HAIRCUT\n\t\t\t0x1F4AA == code || // So       FLEXED BICEPS\n\t\t\t0x1F574 <= code && code <= 0x1F575 || // So   [2] MAN IN BUSINESS SUIT LEVITATING..SLEUTH OR SPY\n\t\t\t0x1F57A == code || // So       MAN DANCING\n\t\t\t0x1F590 == code || // So       RAISED HAND WITH FINGERS SPLAYED\n\t\t\t0x1F595 <= code && code <= 0x1F596 || // So   [2] REVERSED HAND WITH MIDDLE FINGER EXTENDED..RAISED HAND WITH PART BETWEEN MIDDLE AND RING FINGERS\n\t\t\t0x1F645 <= code && code <= 0x1F647 || // So   [3] FACE WITH NO GOOD GESTURE..PERSON BOWING DEEPLY\n\t\t\t0x1F64B <= code && code <= 0x1F64F || // So   [5] HAPPY PERSON RAISING ONE HAND..PERSON WITH FOLDED HANDS\n\t\t\t0x1F6A3 == code || // So       ROWBOAT\n\t\t\t0x1F6B4 <= code && code <= 0x1F6B6 || // So   [3] BICYCLIST..PEDESTRIAN\n\t\t\t0x1F6C0 == code || // So       BATH\n\t\t\t0x1F6CC == code || // So       SLEEPING ACCOMMODATION\n\t\t\t0x1F918 <= code && code <= 0x1F91C || // So   [5] SIGN OF THE HORNS..RIGHT-FACING FIST\n\t\t\t0x1F91E <= code && code <= 0x1F91F || // So   [2] HAND WITH INDEX AND MIDDLE FINGERS CROSSED..I LOVE YOU HAND SIGN\n\t\t\t0x1F926 == code || // So       FACE PALM\n\t\t\t0x1F930 <= code && code <= 0x1F939 || // So  [10] PREGNANT WOMAN..JUGGLING\n\t\t\t0x1F93D <= code && code <= 0x1F93E || // So   [2] WATER POLO..HANDBALL\n\t\t\t0x1F9D1 <= code && code <= 0x1F9DD // So  [13] ADULT..ELF\n\t\t\t) {\n\t\t\t\t\treturn E_Base;\n\t\t\t\t}\n\n\t\t\tif (0x1F3FB <= code && code <= 0x1F3FF) // Sk   [5] EMOJI MODIFIER FITZPATRICK TYPE-1-2..EMOJI MODIFIER FITZPATRICK TYPE-6\n\t\t\t\t{\n\t\t\t\t\treturn E_Modifier;\n\t\t\t\t}\n\n\t\t\tif (0x200D == code // Cf       ZERO WIDTH JOINER\n\t\t\t) {\n\t\t\t\t\treturn ZWJ;\n\t\t\t\t}\n\n\t\t\tif (0x2640 == code || // So       FEMALE SIGN\n\t\t\t0x2642 == code || // So       MALE SIGN\n\t\t\t0x2695 <= code && code <= 0x2696 || // So   [2] STAFF OF AESCULAPIUS..SCALES\n\t\t\t0x2708 == code || // So       AIRPLANE\n\t\t\t0x2764 == code || // So       HEAVY BLACK HEART\n\t\t\t0x1F308 == code || // So       RAINBOW\n\t\t\t0x1F33E == code || // So       EAR OF RICE\n\t\t\t0x1F373 == code || // So       COOKING\n\t\t\t0x1F393 == code || // So       GRADUATION CAP\n\t\t\t0x1F3A4 == code || // So       MICROPHONE\n\t\t\t0x1F3A8 == code || // So       ARTIST PALETTE\n\t\t\t0x1F3EB == code || // So       SCHOOL\n\t\t\t0x1F3ED == code || // So       FACTORY\n\t\t\t0x1F48B == code || // So       KISS MARK\n\t\t\t0x1F4BB <= code && code <= 0x1F4BC || // So   [2] PERSONAL COMPUTER..BRIEFCASE\n\t\t\t0x1F527 == code || // So       WRENCH\n\t\t\t0x1F52C == code || // So       MICROSCOPE\n\t\t\t0x1F5E8 == code || // So       LEFT SPEECH BUBBLE\n\t\t\t0x1F680 == code || // So       ROCKET\n\t\t\t0x1F692 == code // So       FIRE ENGINE\n\t\t\t) {\n\t\t\t\t\treturn Glue_After_Zwj;\n\t\t\t\t}\n\n\t\t\tif (0x1F466 <= code && code <= 0x1F469) // So   [4] BOY..WOMAN\n\t\t\t\t{\n\t\t\t\t\treturn E_Base_GAZ;\n\t\t\t\t}\n\n\t\t\t//all unlisted characters have a grapheme break property of \"Other\"\n\t\t\treturn Other;\n\t\t}\n\t\treturn this;\n\t}\n\n\tif ('object' != 'undefined' && module.exports) {\n\t\tmodule.exports = GraphemeSplitter;\n\t}\n});\n\nvar splitter = new graphemeSplitter();\n\nvar substring = function substring(str, start, end) {\n\tvar iterator = splitter.iterateGraphemes(str.substring(start));\n\n\tvar value = '';\n\n\tfor (var pos = 0; pos < end - start; pos++) {\n\t\tvar next = iterator.next();\n\n\t\tvalue += next.value;\n\n\t\tif (next.done) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn value;\n};\n\nvar location = (function (startLine, startColumn, startOffset, endLine, endColumn, endOffset, source) {\n\treturn {\n\t\tstart: {\n\t\t\tline: startLine,\n\t\t\tcolumn: startColumn,\n\t\t\toffset: startOffset\n\t\t},\n\t\tend: {\n\t\t\tline: endLine,\n\t\t\tcolumn: endColumn,\n\t\t\toffset: endOffset\n\t\t},\n\t\tsource: source || null\n\t};\n});\n\nvar build = createCommonjsModule(function (module, exports) {\n  (function (global, factory) {\n    module.exports = factory();\n  })(commonjsGlobal, function () {\n    'use strict';\n\n    /*!\n     * repeat-string <https://github.com/jonschlinkert/repeat-string>\n     *\n     * Copyright (c) 2014-2015, Jon Schlinkert.\n     * Licensed under the MIT License.\n     */\n\n    'use strict';\n\n    /**\n     * Results cache\n     */\n\n    var res = '';\n    var cache;\n\n    /**\n     * Expose `repeat`\n     */\n\n    var repeatString = repeat;\n\n    /**\n     * Repeat the given `string` the specified `number`\n     * of times.\n     *\n     * **Example:**\n     *\n     * ```js\n     * var repeat = require('repeat-string');\n     * repeat('A', 5);\n     * //=> AAAAA\n     * ```\n     *\n     * @param {String} `string` The string to repeat\n     * @param {Number} `number` The number of times to repeat the string\n     * @return {String} Repeated string\n     * @api public\n     */\n\n    function repeat(str, num) {\n      if (typeof str !== 'string') {\n        throw new TypeError('expected a string');\n      }\n\n      // cover common, quick use cases\n      if (num === 1) return str;\n      if (num === 2) return str + str;\n\n      var max = str.length * num;\n      if (cache !== str || typeof cache === 'undefined') {\n        cache = str;\n        res = '';\n      } else if (res.length >= max) {\n        return res.substr(0, max);\n      }\n\n      while (max > res.length && num > 1) {\n        if (num & 1) {\n          res += str;\n        }\n\n        num >>= 1;\n        str += str;\n      }\n\n      res += str;\n      res = res.substr(0, max);\n      return res;\n    }\n\n    'use strict';\n\n    var padStart = function padStart(string, maxLength, fillString) {\n\n      if (string == null || maxLength == null) {\n        return string;\n      }\n\n      var result = String(string);\n      var targetLen = typeof maxLength === 'number' ? maxLength : parseInt(maxLength, 10);\n\n      if (isNaN(targetLen) || !isFinite(targetLen)) {\n        return result;\n      }\n\n      var length = result.length;\n      if (length >= targetLen) {\n        return result;\n      }\n\n      var fill = fillString == null ? '' : String(fillString);\n      if (fill === '') {\n        fill = ' ';\n      }\n\n      var fillLen = targetLen - length;\n\n      while (fill.length < fillLen) {\n        fill += fill;\n      }\n\n      var truncated = fill.length > fillLen ? fill.substr(0, fillLen) : fill;\n\n      return truncated + result;\n    };\n\n    var _extends = Object.assign || function (target) {\n      for (var i = 1; i < arguments.length; i++) {\n        var source = arguments[i];\n\n        for (var key in source) {\n          if (Object.prototype.hasOwnProperty.call(source, key)) {\n            target[key] = source[key];\n          }\n        }\n      }\n\n      return target;\n    };\n\n    function printLine(line, position, maxNumLength, settings) {\n      var num = String(position);\n      var formattedNum = padStart(num, maxNumLength, ' ');\n      var tabReplacement = repeatString(' ', settings.tabSize);\n\n      return formattedNum + ' | ' + line.replace(/\\t/g, tabReplacement);\n    }\n\n    function printLines(lines, start, end, maxNumLength, settings) {\n      return lines.slice(start, end).map(function (line, i) {\n        return printLine(line, start + i + 1, maxNumLength, settings);\n      }).join('\\n');\n    }\n\n    var defaultSettings = {\n      extraLines: 2,\n      tabSize: 4\n    };\n\n    var index = function index(input, linePos, columnPos, settings) {\n      settings = _extends({}, defaultSettings, settings);\n\n      var lines = input.split(/\\r\\n?|\\n|\\f/);\n      var startLinePos = Math.max(1, linePos - settings.extraLines) - 1;\n      var endLinePos = Math.min(linePos + settings.extraLines, lines.length);\n      var maxNumLength = String(endLinePos).length;\n      var prevLines = printLines(lines, startLinePos, linePos, maxNumLength, settings);\n      var targetLineBeforeCursor = printLine(lines[linePos - 1].substring(0, columnPos - 1), linePos, maxNumLength, settings);\n      var cursorLine = repeatString(' ', targetLineBeforeCursor.length) + '^';\n      var nextLines = printLines(lines, linePos, endLinePos, maxNumLength, settings);\n\n      return [prevLines, cursorLine, nextLines].filter(Boolean).join('\\n');\n    };\n\n    return index;\n  });\n});\n\nvar errorStack = new Error().stack;\n\nvar createError = (function (props) {\n\t// use Object.create(), because some VMs prevent setting line/column otherwise\n\t// (iOS Safari 10 even throws an exception)\n\tvar error = Object.create(SyntaxError.prototype);\n\n\tObject.assign(error, props, {\n\t\tname: 'SyntaxError'\n\t});\n\n\tObject.defineProperty(error, 'stack', {\n\t\tget: function get() {\n\t\t\treturn errorStack ? errorStack.replace(/^(.+\\n){1,3}/, String(error) + '\\n') : '';\n\t\t}\n\t});\n\n\treturn error;\n});\n\nvar error = (function (message, input, source, line, column) {\n\tthrow createError({\n\t\tmessage: line ? message + '\\n' + build(input, line, column) : message,\n\t\trawMessage: message,\n\t\tsource: source,\n\t\tline: line,\n\t\tcolumn: column\n\t});\n});\n\nvar parseErrorTypes = {\n\tunexpectedEnd: function unexpectedEnd() {\n\t\treturn 'Unexpected end of input';\n\t},\n\tunexpectedToken: function unexpectedToken(token) {\n\t\tfor (var _len = arguments.length, position = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n\t\t\tposition[_key - 1] = arguments[_key];\n\t\t}\n\n\t\treturn 'Unexpected token <' + token + '> at ' + position.filter(Boolean).join(':');\n\t}\n};\n\nvar tokenizeErrorTypes = {\n\tunexpectedSymbol: function unexpectedSymbol(symbol) {\n\t\tfor (var _len = arguments.length, position = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n\t\t\tposition[_key - 1] = arguments[_key];\n\t\t}\n\n\t\treturn 'Unexpected symbol <' + symbol + '> at ' + position.filter(Boolean).join(':');\n\t}\n};\n\nvar tokenTypes = {\n\tLEFT_BRACE: 0, // {\n\tRIGHT_BRACE: 1, // }\n\tLEFT_BRACKET: 2, // [\n\tRIGHT_BRACKET: 3, // ]\n\tCOLON: 4, // :\n\tCOMMA: 5, // ,\n\tSTRING: 6, //\n\tNUMBER: 7, //\n\tTRUE: 8, // true\n\tFALSE: 9, // false\n\tNULL: 10 // null\n};\n\nvar punctuatorTokensMap = { // Lexeme: Token\n\t'{': tokenTypes.LEFT_BRACE,\n\t'}': tokenTypes.RIGHT_BRACE,\n\t'[': tokenTypes.LEFT_BRACKET,\n\t']': tokenTypes.RIGHT_BRACKET,\n\t':': tokenTypes.COLON,\n\t',': tokenTypes.COMMA\n};\n\nvar keywordTokensMap = { // Lexeme: Token\n\t'true': tokenTypes.TRUE,\n\t'false': tokenTypes.FALSE,\n\t'null': tokenTypes.NULL\n};\n\nvar stringStates = {\n\t_START_: 0,\n\tSTART_QUOTE_OR_CHAR: 1,\n\tESCAPE: 2\n};\n\nvar escapes$1 = {\n\t'\"': 0, // Quotation mask\n\t'\\\\': 1, // Reverse solidus\n\t'/': 2, // Solidus\n\t'b': 3, // Backspace\n\t'f': 4, // Form feed\n\t'n': 5, // New line\n\t'r': 6, // Carriage return\n\t't': 7, // Horizontal tab\n\t'u': 8 // 4 hexadecimal digits\n};\n\nvar numberStates = {\n\t_START_: 0,\n\tMINUS: 1,\n\tZERO: 2,\n\tDIGIT: 3,\n\tPOINT: 4,\n\tDIGIT_FRACTION: 5,\n\tEXP: 6,\n\tEXP_DIGIT_OR_SIGN: 7\n};\n\n// HELPERS\n\nfunction isDigit1to9(char) {\n\treturn char >= '1' && char <= '9';\n}\n\nfunction isDigit(char) {\n\treturn char >= '0' && char <= '9';\n}\n\nfunction isHex(char) {\n\treturn isDigit(char) || char >= 'a' && char <= 'f' || char >= 'A' && char <= 'F';\n}\n\nfunction isExp(char) {\n\treturn char === 'e' || char === 'E';\n}\n\n// PARSERS\n\nfunction parseWhitespace(input, index, line, column) {\n\tvar char = input.charAt(index);\n\n\tif (char === '\\r') {\n\t\t// CR (Unix)\n\t\tindex++;\n\t\tline++;\n\t\tcolumn = 1;\n\t\tif (input.charAt(index) === '\\n') {\n\t\t\t// CRLF (Windows)\n\t\t\tindex++;\n\t\t}\n\t} else if (char === '\\n') {\n\t\t// LF (MacOS)\n\t\tindex++;\n\t\tline++;\n\t\tcolumn = 1;\n\t} else if (char === '\\t' || char === ' ') {\n\t\tindex++;\n\t\tcolumn++;\n\t} else {\n\t\treturn null;\n\t}\n\n\treturn {\n\t\tindex: index,\n\t\tline: line,\n\t\tcolumn: column\n\t};\n}\n\nfunction parseChar(input, index, line, column) {\n\tvar char = input.charAt(index);\n\n\tif (char in punctuatorTokensMap) {\n\t\treturn {\n\t\t\ttype: punctuatorTokensMap[char],\n\t\t\tline: line,\n\t\t\tcolumn: column + 1,\n\t\t\tindex: index + 1,\n\t\t\tvalue: null\n\t\t};\n\t}\n\n\treturn null;\n}\n\nfunction parseKeyword(input, index, line, column) {\n\tfor (var name in keywordTokensMap) {\n\t\tif (keywordTokensMap.hasOwnProperty(name) && input.substr(index, name.length) === name) {\n\t\t\treturn {\n\t\t\t\ttype: keywordTokensMap[name],\n\t\t\t\tline: line,\n\t\t\t\tcolumn: column + name.length,\n\t\t\t\tindex: index + name.length,\n\t\t\t\tvalue: name\n\t\t\t};\n\t\t}\n\t}\n\n\treturn null;\n}\n\nfunction parseString$1(input, index, line, column) {\n\tvar startIndex = index;\n\tvar state = stringStates._START_;\n\n\twhile (index < input.length) {\n\t\tvar char = input.charAt(index);\n\n\t\tswitch (state) {\n\t\t\tcase stringStates._START_:\n\t\t\t\t{\n\t\t\t\t\tif (char === '\"') {\n\t\t\t\t\t\tindex++;\n\t\t\t\t\t\tstate = stringStates.START_QUOTE_OR_CHAR;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\tcase stringStates.START_QUOTE_OR_CHAR:\n\t\t\t\t{\n\t\t\t\t\tif (char === '\\\\') {\n\t\t\t\t\t\tindex++;\n\t\t\t\t\t\tstate = stringStates.ESCAPE;\n\t\t\t\t\t} else if (char === '\"') {\n\t\t\t\t\t\tindex++;\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttype: tokenTypes.STRING,\n\t\t\t\t\t\t\tline: line,\n\t\t\t\t\t\t\tcolumn: column + index - startIndex,\n\t\t\t\t\t\t\tindex: index,\n\t\t\t\t\t\t\tvalue: input.slice(startIndex, index)\n\t\t\t\t\t\t};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tindex++;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\tcase stringStates.ESCAPE:\n\t\t\t\t{\n\t\t\t\t\tif (char in escapes$1) {\n\t\t\t\t\t\tindex++;\n\t\t\t\t\t\tif (char === 'u') {\n\t\t\t\t\t\t\tfor (var i = 0; i < 4; i++) {\n\t\t\t\t\t\t\t\tvar curChar = input.charAt(index);\n\t\t\t\t\t\t\t\tif (curChar && isHex(curChar)) {\n\t\t\t\t\t\t\t\t\tindex++;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstate = stringStates.START_QUOTE_OR_CHAR;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t}\n\t}\n}\n\nfunction parseNumber(input, index, line, column) {\n\tvar startIndex = index;\n\tvar passedValueIndex = index;\n\tvar state = numberStates._START_;\n\n\titerator: while (index < input.length) {\n\t\tvar char = input.charAt(index);\n\n\t\tswitch (state) {\n\t\t\tcase numberStates._START_:\n\t\t\t\t{\n\t\t\t\t\tif (char === '-') {\n\t\t\t\t\t\tstate = numberStates.MINUS;\n\t\t\t\t\t} else if (char === '0') {\n\t\t\t\t\t\tpassedValueIndex = index + 1;\n\t\t\t\t\t\tstate = numberStates.ZERO;\n\t\t\t\t\t} else if (isDigit1to9(char)) {\n\t\t\t\t\t\tpassedValueIndex = index + 1;\n\t\t\t\t\t\tstate = numberStates.DIGIT;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\tcase numberStates.MINUS:\n\t\t\t\t{\n\t\t\t\t\tif (char === '0') {\n\t\t\t\t\t\tpassedValueIndex = index + 1;\n\t\t\t\t\t\tstate = numberStates.ZERO;\n\t\t\t\t\t} else if (isDigit1to9(char)) {\n\t\t\t\t\t\tpassedValueIndex = index + 1;\n\t\t\t\t\t\tstate = numberStates.DIGIT;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\tcase numberStates.ZERO:\n\t\t\t\t{\n\t\t\t\t\tif (char === '.') {\n\t\t\t\t\t\tstate = numberStates.POINT;\n\t\t\t\t\t} else if (isExp(char)) {\n\t\t\t\t\t\tstate = numberStates.EXP;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbreak iterator;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\tcase numberStates.DIGIT:\n\t\t\t\t{\n\t\t\t\t\tif (isDigit(char)) {\n\t\t\t\t\t\tpassedValueIndex = index + 1;\n\t\t\t\t\t} else if (char === '.') {\n\t\t\t\t\t\tstate = numberStates.POINT;\n\t\t\t\t\t} else if (isExp(char)) {\n\t\t\t\t\t\tstate = numberStates.EXP;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbreak iterator;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\tcase numberStates.POINT:\n\t\t\t\t{\n\t\t\t\t\tif (isDigit(char)) {\n\t\t\t\t\t\tpassedValueIndex = index + 1;\n\t\t\t\t\t\tstate = numberStates.DIGIT_FRACTION;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbreak iterator;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\tcase numberStates.DIGIT_FRACTION:\n\t\t\t\t{\n\t\t\t\t\tif (isDigit(char)) {\n\t\t\t\t\t\tpassedValueIndex = index + 1;\n\t\t\t\t\t} else if (isExp(char)) {\n\t\t\t\t\t\tstate = numberStates.EXP;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbreak iterator;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\tcase numberStates.EXP:\n\t\t\t\t{\n\t\t\t\t\tif (char === '+' || char === '-') {\n\t\t\t\t\t\tstate = numberStates.EXP_DIGIT_OR_SIGN;\n\t\t\t\t\t} else if (isDigit(char)) {\n\t\t\t\t\t\tpassedValueIndex = index + 1;\n\t\t\t\t\t\tstate = numberStates.EXP_DIGIT_OR_SIGN;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbreak iterator;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\tcase numberStates.EXP_DIGIT_OR_SIGN:\n\t\t\t\t{\n\t\t\t\t\tif (isDigit(char)) {\n\t\t\t\t\t\tpassedValueIndex = index + 1;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbreak iterator;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t}\n\n\t\tindex++;\n\t}\n\n\tif (passedValueIndex > 0) {\n\t\treturn {\n\t\t\ttype: tokenTypes.NUMBER,\n\t\t\tline: line,\n\t\t\tcolumn: column + passedValueIndex - startIndex,\n\t\t\tindex: passedValueIndex,\n\t\t\tvalue: input.slice(startIndex, passedValueIndex)\n\t\t};\n\t}\n\n\treturn null;\n}\n\nvar tokenize = function tokenize(input, settings) {\n\tvar line = 1;\n\tvar column = 1;\n\tvar index = 0;\n\tvar tokens = [];\n\n\twhile (index < input.length) {\n\t\tvar args = [input, index, line, column];\n\t\tvar whitespace = parseWhitespace.apply(undefined, args);\n\n\t\tif (whitespace) {\n\t\t\tindex = whitespace.index;\n\t\t\tline = whitespace.line;\n\t\t\tcolumn = whitespace.column;\n\t\t\tcontinue;\n\t\t}\n\n\t\tvar matched = parseChar.apply(undefined, args) || parseKeyword.apply(undefined, args) || parseString$1.apply(undefined, args) || parseNumber.apply(undefined, args);\n\n\t\tif (matched) {\n\t\t\tvar token = {\n\t\t\t\ttype: matched.type,\n\t\t\t\tvalue: matched.value,\n\t\t\t\tloc: location(line, column, index, matched.line, matched.column, matched.index, settings.source)\n\t\t\t};\n\n\t\t\ttokens.push(token);\n\t\t\tindex = matched.index;\n\t\t\tline = matched.line;\n\t\t\tcolumn = matched.column;\n\t\t} else {\n\t\t\terror(tokenizeErrorTypes.unexpectedSymbol(substring(input, index, index + 1), settings.source, line, column), input, settings.source, line, column);\n\t\t}\n\t}\n\n\treturn tokens;\n};\n\nvar objectStates = {\n\t_START_: 0,\n\tOPEN_OBJECT: 1,\n\tPROPERTY: 2,\n\tCOMMA: 3\n};\n\nvar propertyStates = {\n\t_START_: 0,\n\tKEY: 1,\n\tCOLON: 2\n};\n\nvar arrayStates = {\n\t_START_: 0,\n\tOPEN_ARRAY: 1,\n\tVALUE: 2,\n\tCOMMA: 3\n};\n\nvar defaultSettings = {\n\tloc: true,\n\tsource: null\n};\n\nfunction errorEof(input, tokenList, settings) {\n\tvar loc = tokenList.length > 0 ? tokenList[tokenList.length - 1].loc.end : { line: 1, column: 1 };\n\n\terror(parseErrorTypes.unexpectedEnd(), input, settings.source, loc.line, loc.column);\n}\n\n/** @param hexCode {string} hexCode without '\\u' prefix */\nfunction parseHexEscape(hexCode) {\n\tvar charCode = 0;\n\n\tfor (var i = 0; i < 4; i++) {\n\t\tcharCode = charCode * 16 + parseInt(hexCode[i], 16);\n\t}\n\n\treturn String.fromCharCode(charCode);\n}\n\nvar escapes = {\n\t'b': '\\b', // Backspace\n\t'f': '\\f', // Form feed\n\t'n': '\\n', // New line\n\t'r': '\\r', // Carriage return\n\t't': '\\t' // Horizontal tab\n};\n\nvar passEscapes = ['\"', '\\\\', '/'];\n\nfunction parseString( /** string */string) {\n\tvar result = '';\n\n\tfor (var i = 0; i < string.length; i++) {\n\t\tvar char = string.charAt(i);\n\n\t\tif (char === '\\\\') {\n\t\t\ti++;\n\t\t\tvar nextChar = string.charAt(i);\n\t\t\tif (nextChar === 'u') {\n\t\t\t\tresult += parseHexEscape(string.substr(i + 1, 4));\n\t\t\t\ti += 4;\n\t\t\t} else if (passEscapes.indexOf(nextChar) !== -1) {\n\t\t\t\tresult += nextChar;\n\t\t\t} else if (nextChar in escapes) {\n\t\t\t\tresult += escapes[nextChar];\n\t\t\t} else {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t} else {\n\t\t\tresult += char;\n\t\t}\n\t}\n\n\treturn result;\n}\n\nfunction parseObject(input, tokenList, index, settings) {\n\t// object: LEFT_BRACE (property (COMMA property)*)? RIGHT_BRACE\n\tvar startToken = void 0;\n\tvar object = {\n\t\ttype: 'Object',\n\t\tchildren: []\n\t};\n\tvar state = objectStates._START_;\n\n\twhile (index < tokenList.length) {\n\t\tvar token = tokenList[index];\n\n\t\tswitch (state) {\n\t\t\tcase objectStates._START_:\n\t\t\t\t{\n\t\t\t\t\tif (token.type === tokenTypes.LEFT_BRACE) {\n\t\t\t\t\t\tstartToken = token;\n\t\t\t\t\t\tstate = objectStates.OPEN_OBJECT;\n\t\t\t\t\t\tindex++;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\tcase objectStates.OPEN_OBJECT:\n\t\t\t\t{\n\t\t\t\t\tif (token.type === tokenTypes.RIGHT_BRACE) {\n\t\t\t\t\t\tif (settings.loc) {\n\t\t\t\t\t\t\tobject.loc = location(startToken.loc.start.line, startToken.loc.start.column, startToken.loc.start.offset, token.loc.end.line, token.loc.end.column, token.loc.end.offset, settings.source);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tvalue: object,\n\t\t\t\t\t\t\tindex: index + 1\n\t\t\t\t\t\t};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar property = parseProperty(input, tokenList, index, settings);\n\t\t\t\t\t\tobject.children.push(property.value);\n\t\t\t\t\t\tstate = objectStates.PROPERTY;\n\t\t\t\t\t\tindex = property.index;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\tcase objectStates.PROPERTY:\n\t\t\t\t{\n\t\t\t\t\tif (token.type === tokenTypes.RIGHT_BRACE) {\n\t\t\t\t\t\tif (settings.loc) {\n\t\t\t\t\t\t\tobject.loc = location(startToken.loc.start.line, startToken.loc.start.column, startToken.loc.start.offset, token.loc.end.line, token.loc.end.column, token.loc.end.offset, settings.source);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tvalue: object,\n\t\t\t\t\t\t\tindex: index + 1\n\t\t\t\t\t\t};\n\t\t\t\t\t} else if (token.type === tokenTypes.COMMA) {\n\t\t\t\t\t\tstate = objectStates.COMMA;\n\t\t\t\t\t\tindex++;\n\t\t\t\t\t} else {\n\t\t\t\t\t\terror(parseErrorTypes.unexpectedToken(substring(input, token.loc.start.offset, token.loc.end.offset), settings.source, token.loc.start.line, token.loc.start.column), input, settings.source, token.loc.start.line, token.loc.start.column);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\tcase objectStates.COMMA:\n\t\t\t\t{\n\t\t\t\t\tvar _property = parseProperty(input, tokenList, index, settings);\n\t\t\t\t\tif (_property) {\n\t\t\t\t\t\tindex = _property.index;\n\t\t\t\t\t\tobject.children.push(_property.value);\n\t\t\t\t\t\tstate = objectStates.PROPERTY;\n\t\t\t\t\t} else {\n\t\t\t\t\t\terror(parseErrorTypes.unexpectedToken(substring(input, token.loc.start.offset, token.loc.end.offset), settings.source, token.loc.start.line, token.loc.start.column), input, settings.source, token.loc.start.line, token.loc.start.column);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t}\n\t}\n\n\terrorEof(input, tokenList, settings);\n}\n\nfunction parseProperty(input, tokenList, index, settings) {\n\t// property: STRING COLON value\n\tvar startToken = void 0;\n\tvar property = {\n\t\ttype: 'Property',\n\t\tkey: null,\n\t\tvalue: null\n\t};\n\tvar state = propertyStates._START_;\n\n\twhile (index < tokenList.length) {\n\t\tvar token = tokenList[index];\n\n\t\tswitch (state) {\n\t\t\tcase propertyStates._START_:\n\t\t\t\t{\n\t\t\t\t\tif (token.type === tokenTypes.STRING) {\n\t\t\t\t\t\tvar key = {\n\t\t\t\t\t\t\ttype: 'Identifier',\n\t\t\t\t\t\t\tvalue: parseString(input.slice(token.loc.start.offset + 1, token.loc.end.offset - 1)),\n\t\t\t\t\t\t\traw: token.value\n\t\t\t\t\t\t};\n\t\t\t\t\t\tif (settings.loc) {\n\t\t\t\t\t\t\tkey.loc = token.loc;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstartToken = token;\n\t\t\t\t\t\tproperty.key = key;\n\t\t\t\t\t\tstate = propertyStates.KEY;\n\t\t\t\t\t\tindex++;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\tcase propertyStates.KEY:\n\t\t\t\t{\n\t\t\t\t\tif (token.type === tokenTypes.COLON) {\n\t\t\t\t\t\tstate = propertyStates.COLON;\n\t\t\t\t\t\tindex++;\n\t\t\t\t\t} else {\n\t\t\t\t\t\terror(parseErrorTypes.unexpectedToken(substring(input, token.loc.start.offset, token.loc.end.offset), settings.source, token.loc.start.line, token.loc.start.column), input, settings.source, token.loc.start.line, token.loc.start.column);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\tcase propertyStates.COLON:\n\t\t\t\t{\n\t\t\t\t\tvar value = parseValue(input, tokenList, index, settings);\n\t\t\t\t\tproperty.value = value.value;\n\t\t\t\t\tif (settings.loc) {\n\t\t\t\t\t\tproperty.loc = location(startToken.loc.start.line, startToken.loc.start.column, startToken.loc.start.offset, value.value.loc.end.line, value.value.loc.end.column, value.value.loc.end.offset, settings.source);\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\tvalue: property,\n\t\t\t\t\t\tindex: value.index\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t}\n\t}\n}\n\nfunction parseArray(input, tokenList, index, settings) {\n\t// array: LEFT_BRACKET (value (COMMA value)*)? RIGHT_BRACKET\n\tvar startToken = void 0;\n\tvar array = {\n\t\ttype: 'Array',\n\t\tchildren: []\n\t};\n\tvar state = arrayStates._START_;\n\tvar token = void 0;\n\n\twhile (index < tokenList.length) {\n\t\ttoken = tokenList[index];\n\n\t\tswitch (state) {\n\t\t\tcase arrayStates._START_:\n\t\t\t\t{\n\t\t\t\t\tif (token.type === tokenTypes.LEFT_BRACKET) {\n\t\t\t\t\t\tstartToken = token;\n\t\t\t\t\t\tstate = arrayStates.OPEN_ARRAY;\n\t\t\t\t\t\tindex++;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\tcase arrayStates.OPEN_ARRAY:\n\t\t\t\t{\n\t\t\t\t\tif (token.type === tokenTypes.RIGHT_BRACKET) {\n\t\t\t\t\t\tif (settings.loc) {\n\t\t\t\t\t\t\tarray.loc = location(startToken.loc.start.line, startToken.loc.start.column, startToken.loc.start.offset, token.loc.end.line, token.loc.end.column, token.loc.end.offset, settings.source);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tvalue: array,\n\t\t\t\t\t\t\tindex: index + 1\n\t\t\t\t\t\t};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar value = parseValue(input, tokenList, index, settings);\n\t\t\t\t\t\tindex = value.index;\n\t\t\t\t\t\tarray.children.push(value.value);\n\t\t\t\t\t\tstate = arrayStates.VALUE;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\tcase arrayStates.VALUE:\n\t\t\t\t{\n\t\t\t\t\tif (token.type === tokenTypes.RIGHT_BRACKET) {\n\t\t\t\t\t\tif (settings.loc) {\n\t\t\t\t\t\t\tarray.loc = location(startToken.loc.start.line, startToken.loc.start.column, startToken.loc.start.offset, token.loc.end.line, token.loc.end.column, token.loc.end.offset, settings.source);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tvalue: array,\n\t\t\t\t\t\t\tindex: index + 1\n\t\t\t\t\t\t};\n\t\t\t\t\t} else if (token.type === tokenTypes.COMMA) {\n\t\t\t\t\t\tstate = arrayStates.COMMA;\n\t\t\t\t\t\tindex++;\n\t\t\t\t\t} else {\n\t\t\t\t\t\terror(parseErrorTypes.unexpectedToken(substring(input, token.loc.start.offset, token.loc.end.offset), settings.source, token.loc.start.line, token.loc.start.column), input, settings.source, token.loc.start.line, token.loc.start.column);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\tcase arrayStates.COMMA:\n\t\t\t\t{\n\t\t\t\t\tvar _value = parseValue(input, tokenList, index, settings);\n\t\t\t\t\tindex = _value.index;\n\t\t\t\t\tarray.children.push(_value.value);\n\t\t\t\t\tstate = arrayStates.VALUE;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t}\n\t}\n\n\terrorEof(input, tokenList, settings);\n}\n\nfunction parseLiteral(input, tokenList, index, settings) {\n\t// literal: STRING | NUMBER | TRUE | FALSE | NULL\n\tvar token = tokenList[index];\n\tvar value = null;\n\n\tswitch (token.type) {\n\t\tcase tokenTypes.STRING:\n\t\t\t{\n\t\t\t\tvalue = parseString(input.slice(token.loc.start.offset + 1, token.loc.end.offset - 1));\n\t\t\t\tbreak;\n\t\t\t}\n\t\tcase tokenTypes.NUMBER:\n\t\t\t{\n\t\t\t\tvalue = Number(token.value);\n\t\t\t\tbreak;\n\t\t\t}\n\t\tcase tokenTypes.TRUE:\n\t\t\t{\n\t\t\t\tvalue = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\tcase tokenTypes.FALSE:\n\t\t\t{\n\t\t\t\tvalue = false;\n\t\t\t\tbreak;\n\t\t\t}\n\t\tcase tokenTypes.NULL:\n\t\t\t{\n\t\t\t\tvalue = null;\n\t\t\t\tbreak;\n\t\t\t}\n\t\tdefault:\n\t\t\t{\n\t\t\t\treturn null;\n\t\t\t}\n\t}\n\n\tvar literal = {\n\t\ttype: 'Literal',\n\t\tvalue: value,\n\t\traw: token.value\n\t};\n\tif (settings.loc) {\n\t\tliteral.loc = token.loc;\n\t}\n\treturn {\n\t\tvalue: literal,\n\t\tindex: index + 1\n\t};\n}\n\nfunction parseValue(input, tokenList, index, settings) {\n\t// value: literal | object | array\n\tvar token = tokenList[index];\n\n\tvar value = parseLiteral.apply(undefined, arguments) || parseObject.apply(undefined, arguments) || parseArray.apply(undefined, arguments);\n\n\tif (value) {\n\t\treturn value;\n\t} else {\n\t\terror(parseErrorTypes.unexpectedToken(substring(input, token.loc.start.offset, token.loc.end.offset), settings.source, token.loc.start.line, token.loc.start.column), input, settings.source, token.loc.start.line, token.loc.start.column);\n\t}\n}\n\nvar parse$1 = (function (input, settings) {\n\tsettings = Object.assign({}, defaultSettings, settings);\n\n\tvar tokenList = tokenize(input, settings);\n\n\tif (tokenList.length === 0) {\n\t\terrorEof(input, tokenList, settings);\n\t}\n\n\tvar value = parseValue(input, tokenList, 0, settings);\n\n\tif (value.index === tokenList.length) {\n\t\treturn value.value;\n\t}\n\n\tvar token = tokenList[value.index];\n\n\terror(parseErrorTypes.unexpectedToken(substring(input, token.loc.start.offset, token.loc.end.offset), settings.source, token.loc.start.line, token.loc.start.column), input, settings.source, token.loc.start.line, token.loc.start.column);\n});\n\nreturn parse$1;\n\n})));\n","import type { PropertyNode, ValueNode } from 'json-to-ast';\n\nexport function getAstForJsonPointer(\n  ast: ValueNode,\n  pointer: string[]\n): { value: ValueNode; property?: PropertyNode } {\n  let currentValue: ValueNode = ast;\n  let currentProperty: PropertyNode | undefined;\n  pointer.forEach(token => {\n    if (!currentValue) {\n      throw new Error('Invalid reference: ' + pointer.join('/'));\n    }\n    if (currentValue.type === 'Literal') {\n      throw new Error('Invalid reference token: ' + token);\n    } else if (currentValue.type === 'Array') {\n      const maybeCurrent = currentValue.children[parseInt(token, 10)];\n      if (!maybeCurrent) {\n        throw new Error('Invalid reference token: ' + token);\n      }\n      currentValue = maybeCurrent;\n      currentProperty = undefined;\n    } else if (currentValue.type === 'Object') {\n      const maybeProperty = currentValue.children.find(child => child.key.value === token);\n      if (!maybeProperty) {\n        throw new Error('Invalid reference token: ' + token);\n      }\n      currentValue = maybeProperty.value;\n      currentProperty = maybeProperty;\n    }\n  });\n  return { value: currentValue, property: currentProperty };\n}\n","type $TSFixMeKey<T> = keyof T;\n/* oxlint-disable @typescript-oxlint/no-non-null-assertion */\n/* oxlint-disable quotes */\n/* oxlint-disable fp/no-loops */\n/* oxlint-disable no-param-reassign */\n/* oxlint-disable complexity */\n/**\n * forked from json-typedef-js\n * Module schema provides code to safely handle JSON Typedef schemas.\n *\n * JSON Typedef schemas are represented in this module with {@link Schema}, and\n * you can check if a JSON object is a correct schema by using {@link isSchema}\n * and {@link isValidSchema}.\n *\n * @packageDocumentation\n */\n\n/**\n * Schema is a TypeScript representation of a correct JSON Typedef schema.\n *\n * The JSON Typedef specification allows schemas to take on one of eight forms.\n * Each of those forms has its own type in this module; Schema is simply a union\n * of each of those eight types.\n */\nexport type Schema =\n  | SchemaFormEmpty\n  | SchemaFormRef\n  | SchemaFormType\n  | SchemaFormEnum\n  | SchemaFormElements\n  | SchemaFormProperties\n  | SchemaFormValues\n  | SchemaFormDiscriminator;\n\n/**\n * SchemaFormEmpty represents schemas of the empty form.\n */\nexport type SchemaFormEmpty = SharedFormProperties;\n\n/**\n * SchemaFormRef represents schemas of the ref form.\n */\nexport type SchemaFormRef = SharedFormProperties & {\n  ref: string;\n};\n\n/**\n * SchemaFormType represents schemas of the type form.\n */\nexport type SchemaFormType = SharedFormProperties & {\n  type: Type;\n};\n\n/**\n * Type represents the legal values of the \"type\" keyword in JSON Typedef.\n */\nexport type Type =\n  | 'boolean'\n  | 'float32'\n  | 'float64'\n  | 'int8'\n  | 'uint8'\n  | 'int16'\n  | 'uint16'\n  | 'int32'\n  | 'uint32'\n  | 'string'\n  | 'timestamp';\n\n/**\n * SchemaFormEnum represents schemas of the enum form.\n */\nexport type SchemaFormEnum = SharedFormProperties & {\n  enum: string[];\n};\n\n/**\n * SchemaFormElements represents schemas of the elements form.\n */\nexport type SchemaFormElements = SharedFormProperties & {\n  elements: Schema;\n};\n\n/**\n * SchemaFormProperties represents schemas of the properties form.\n */\nexport type SchemaFormProperties = SharedFormProperties &\n  (\n    | {\n        properties?: { [name: string]: Schema };\n        optionalProperties: { [name: string]: Schema };\n        additionalProperties?: boolean;\n      }\n    | {\n        properties: { [name: string]: Schema };\n        optionalProperties?: { [name: string]: Schema };\n        additionalProperties?: boolean;\n      }\n  );\n\n/**\n * SchemaFormValues represents schemas of the values form.\n */\nexport type SchemaFormValues = SharedFormProperties & {\n  values: Schema;\n};\n\n/**\n * SchemaFormDiscriminator represents schemas of the discriminator form.\n */\nexport type SchemaFormDiscriminator = SharedFormProperties & {\n  discriminator: string;\n  mapping: { [name: string]: Schema };\n};\n\n/**\n * SharedFormProperties contains the properties shared among all schema forms.\n */\ninterface SharedFormProperties {\n  definitions?: { [definition: string]: Schema };\n  metadata?: {\n    // on root schema\n    formats?: Record<\n      string,\n      {\n        description: string;\n        validation:\n          | {\n              type: 'regex';\n              regex: string;\n            }\n          | { type: 'web_url' };\n      }\n    >;\n    /** what schema features must be supported to use this schema */\n    features?: string[];\n    /** on any schema. Value must be a valid format key from root schema */\n    format?: string;\n    /** example keys to be used next to reference of this schema in doc*/\n    examples?: string[];\n    /** prosemirror like node patter. Only applicable to 'elements' form */\n    pattern?: {\n      value: string;\n      description: string;\n    };\n    validation?: {\n      /** for arrays */\n      minSize?: number;\n      maxSize?: number;\n      /** for strings */\n      minLength?: number;\n      maxLength?: number;\n      /** for ints */\n      min?: number;\n      max?: number;\n      /** only items with unique tags might be in array */\n      uniqueTags?: boolean;\n    };\n\n    /** Valid only for 'properties' form, works like in protobufs. Should contain names from optionalProperties of which only one should exist */\n    oneOf?: {\n      strict?: boolean;\n      properties: string[];\n    };\n\n    /** documentation section */\n    section?: string;\n    /** Description is markdown */\n    description?: string;\n    /** Record of types used in schema vs their tag values (tag being the key, and type being value) */\n    refUnion?: { [tagValue: string]: string };\n    /** marks as deprecated in wix-docs and ts-doc */\n    deprecated?: boolean;\n    /** hides from wix-docs and ts-doc */\n    internal?: boolean;\n    /** emit enum option for typescript  gen */\n    emitEnum?: string;\n    /** marks this definition as a Ricos document node for TypeScript generation */\n    tsRicosNode?: boolean;\n    /** marks this nodes field to use RicosDocumentNode[] as its type in TypeScript */\n    tsRicosNodesChildren?: boolean;\n  };\n  nullable?: boolean;\n}\n\n/**\n * isEmptyForm checks whether some Schema is of the empty form.\n *\n * @param schema The schema to validate\n */\nexport function isEmptyForm(schema: Schema): schema is SchemaFormEmpty {\n  // oxlint-disable-next-line @typescript-oxlint/no-unused-vars\n  const { definitions, nullable, metadata, ...rest } = schema;\n  return Object.keys(rest).length === 0;\n}\n\n/**\n * isRefForm checks whether some Schema is of the ref form.\n *\n * @param schema The schema to validate\n */\nexport function isRefForm(schema: Schema): schema is SchemaFormRef {\n  return 'ref' in schema;\n}\n\n/**\n * isTypeForm checks whether some Schema is of the type form.\n *\n * @param schema The schema to validate\n */\nexport function isTypeForm(schema: Schema): schema is SchemaFormType {\n  return 'type' in schema;\n}\n\n/**\n * isEnumForm checks whether some Schema is of the enum form.\n *\n * @param schema The schema to validate\n */\nexport function isEnumForm(schema: Schema): schema is SchemaFormEnum {\n  return 'enum' in schema;\n}\n\n/**\n * isElementsForm checks whether some Schema is of the elements form.\n *\n * @param schema The schema to validate\n */\nexport function isElementsForm(schema: Schema): schema is SchemaFormElements {\n  return 'elements' in schema;\n}\n\n/**\n * isPropertiesForm checks whether some Schema is of the properties form.\n *\n * @param schema The schema to validate\n */\nexport function isPropertiesForm(schema: Schema): schema is SchemaFormProperties {\n  return 'properties' in schema || 'optionalProperties' in schema;\n}\n\n/**\n * isPropertiesForm checks whether some Schema is of the values form.\n *\n * @param schema The schema to validate\n */\nexport function isValuesForm(schema: Schema): schema is SchemaFormValues {\n  return 'values' in schema;\n}\n\n/**\n * isDiscriminatorForm checks whether some Schema is of the values form.\n *\n * @param schema The schema to validate\n */\nexport function isDiscriminatorForm(schema: Schema): schema is SchemaFormDiscriminator {\n  return 'discriminator' in schema;\n}\n\n/**\n * isValidSchema checks whether some Schema is correct, according to the syntax\n * rules of JSON Typedef.\n *\n * In particular, isValidSchema verifies that:\n *\n * 1. The schema does not have any non-root definitions,\n * 2. All references point to actually-existing definitions,\n * 3. All enums are non-empty, and do not contain duplicates,\n * 4. The `properties` and `optionalProperties` of a schema never share\n *    properties,\n * 5. All schemas in `mapping` are of the properties form,\n * 6. Schemas in `mapping` never re-specify the `discriminator` property\n *\n * If an object returned from `JSON.parse` passes both {@link isSchema} and\n * {@link isValidSchema}, then it is a correct JSON Typedef schema.\n *\n * @param schema The schema to validate\n * @param root The schema to consider as the \"root\" schema. If undefined,\n * `schema` will be used as the root. This is usually what you want to do.\n */\nexport function isValidSchema(\n  schema: Schema,\n  path: string[] = [],\n  skipRefCheck = false,\n  root?: Schema\n): { type: 'ok' } | { type: 'error'; message: string; path: string[] } {\n  const err = (message: string) => ({ type: 'error', message, path }) as const;\n  if (root === undefined) {\n    root = schema;\n  }\n\n  if (schema.definitions !== undefined) {\n    if (root !== schema) {\n      return err('non-root schema has definitions');\n    }\n\n    for (const subSchemaKey of Object.keys(schema.definitions)) {\n      const result = isValidSchema(\n        schema.definitions[subSchemaKey],\n        path.concat('definitions', subSchemaKey),\n        skipRefCheck,\n        root\n      );\n      if (result.type === 'error') {\n        return result;\n      }\n    }\n  }\n\n  if (isRefForm(schema) && !skipRefCheck) {\n    if (!(schema.ref in (root.definitions || {}))) {\n      return err('ref does not point to a definition');\n    }\n  }\n\n  if (isEnumForm(schema)) {\n    if (schema.enum.length === 0) {\n      return err('enum must be non-empty');\n    }\n\n    if (schema.enum.length !== new Set(schema.enum).size) {\n      return err('enum must not contain duplicates');\n    }\n  }\n\n  if (isElementsForm(schema)) {\n    const result = isValidSchema(schema.elements, path.concat('elements'), skipRefCheck, root);\n    if (result.type === 'error') {\n      return result;\n    }\n  }\n\n  if (isPropertiesForm(schema)) {\n    for (const subSchemaKey of Object.keys(schema.properties || {})) {\n      const result = isValidSchema(\n        schema.properties![subSchemaKey],\n        path.concat('properties', subSchemaKey),\n        skipRefCheck,\n        root\n      );\n      if (result.type === 'error') {\n        return result;\n      }\n    }\n\n    for (const subSchemaKey of Object.keys(schema.optionalProperties || {})) {\n      const result = isValidSchema(\n        schema.optionalProperties![subSchemaKey],\n        path.concat('optionalProperties', subSchemaKey),\n        skipRefCheck,\n        root\n      );\n      if (result.type === 'error') {\n        return result;\n      }\n    }\n\n    for (const key of Object.keys(schema.properties || {})) {\n      if (key in (schema.optionalProperties || {})) {\n        return err('properties and optionalProperties must not share properties: ' + key);\n      }\n    }\n\n    for (const key of Object.keys(schema.optionalProperties || {})) {\n      if (key in (schema.properties || {})) {\n        return err('properties and optionalProperties must not share properties: ' + key);\n      }\n    }\n  }\n\n  if (isValuesForm(schema)) {\n    const result = isValidSchema(schema.values, path.concat('values'), skipRefCheck, root);\n    if (result.type === 'error') {\n      return result;\n    }\n  }\n\n  if (isDiscriminatorForm(schema)) {\n    for (const subSchemaKey of Object.keys(schema.mapping)) {\n      const subSchema = schema.mapping[subSchemaKey];\n      const result = isValidSchema(\n        subSchema,\n        path.concat('mapping', subSchemaKey),\n        skipRefCheck,\n        root\n      );\n      if (result.type === 'error') {\n        return result;\n      }\n      if (!isPropertiesForm(subSchema)) {\n        return err('mapping values in discriminator form must be of the properties form');\n      }\n\n      if (subSchema.nullable) {\n        return err('mapping values in discriminator form must not be nullable');\n      }\n\n      if (schema.discriminator in (subSchema.properties || {})) {\n        return err('mapping values in discriminator form must not re-specify the discriminator');\n      }\n\n      if (schema.discriminator in (subSchema.optionalProperties || {})) {\n        return err('mapping values in discriminator form must not re-specify the discriminator');\n      }\n    }\n  }\n\n  return ok();\n}\n\n// Index of valid form \"signatures\" -- i.e., combinations of the presence of the\n// keywords (in order):\n//\n// ref type enum elements properties optionalProperties additionalProperties\n// values discriminator mapping\n//\n// The keywords \"definitions\", \"nullable\", and \"metadata\" are not included here,\n// because they would restrict nothing.\nconst VALID_FORMS = [\n  // Empty form\n  [false, false, false, false, false, false, false, false, false, false],\n  // Ref form\n  [true, false, false, false, false, false, false, false, false, false],\n  // Type form\n  [false, true, false, false, false, false, false, false, false, false],\n  // Enum form\n  [false, false, true, false, false, false, false, false, false, false],\n  // Elements form\n  [false, false, false, true, false, false, false, false, false, false],\n  // Properties form -- properties or optional properties or both, and never\n  // additional properties on its own\n  [false, false, false, false, true, false, false, false, false, false],\n  [false, false, false, false, false, true, false, false, false, false],\n  [false, false, false, false, true, true, false, false, false, false],\n  [false, false, false, false, true, false, true, false, false, false],\n  [false, false, false, false, false, true, true, false, false, false],\n  [false, false, false, false, true, true, true, false, false, false],\n  // Values form\n  [false, false, false, false, false, false, false, true, false, false],\n  // Discriminator form\n  [false, false, false, false, false, false, false, false, true, true],\n];\n\n// List of valid values that the \"type\" keyboard may take on.\nconst VALID_TYPES = [\n  'boolean',\n  'float32',\n  'float64',\n  'int8',\n  'uint8',\n  'int16',\n  'uint16',\n  'int32',\n  'uint32',\n  'string',\n  'timestamp',\n];\n\nconst ok = () => ({ type: 'ok' }) as const;\n/**\n * isSchema checks whether some piece of JSON data has the shape of a JSON\n * Typedef Schema.\n *\n * This function only looks at the \"shape\" of data: it just makes sure all\n * property names and types are valid, and that the data takes on one of the\n * eight JSON Typedef forms.\n *\n * If an object returned from `JSON.parse` passes both {@link isSchema} and\n * {@link isValidSchema}, then it is a correct JSON Typedef schema.\n *\n * @param data The data to check\n */\nexport function isSchema(\n  data: unknown,\n  path: string[] = []\n): { type: 'ok' } | { type: 'error'; message: string; path: string[] } {\n  const err = (message: string) => ({ type: 'error', message, path }) as const;\n\n  if (typeof data !== 'object' || Array.isArray(data) || data === null) {\n    return err('schema must be an object');\n  }\n\n  // TypeScript does not let us coerce `{}` into `{ [index: string]: unknown }`.\n  // At the time of writing, it's unclear why this is the case, nor under what\n  // circumstances such an coercion would be wrong.\n  //\n  // So we work around the compiler here.\n  const obj: { [index: string]: unknown } = data as any;\n\n  const {\n    definitions = undefined,\n    nullable = undefined,\n    metadata = undefined,\n    ref = undefined,\n    type = undefined,\n    enum: enum_ = undefined,\n    elements = undefined,\n    properties = undefined,\n    optionalProperties = undefined,\n    additionalProperties = undefined,\n    values = undefined,\n    discriminator = undefined,\n    mapping = undefined,\n    ...rest\n  } = obj;\n\n  const formSignature = [\n    ref !== undefined,\n    type !== undefined,\n    enum_ !== undefined,\n    elements !== undefined,\n    properties !== undefined,\n    optionalProperties !== undefined,\n    additionalProperties !== undefined,\n    values !== undefined,\n    discriminator !== undefined,\n    mapping !== undefined,\n  ];\n\n  let formOk = false;\n  for (const validForm of VALID_FORMS) {\n    formOk = formOk || validForm.every((value, index) => value === formSignature[index]);\n  }\n\n  if (!formOk) {\n    return err(\"schema doesn't match any valid form signature\");\n  }\n\n  if (definitions !== undefined) {\n    if (typeof definitions !== 'object' || Array.isArray(definitions) || definitions === null) {\n      return err('definitions must be an object');\n    }\n\n    for (const key of Object.keys(definitions)) {\n      const result = isSchema(\n        definitions[key as $TSFixMeKey<typeof definitions>],\n        path.concat('definitions', key)\n      );\n      if (result.type === 'error') {\n        return result;\n      }\n    }\n  }\n\n  if (nullable !== undefined) {\n    if (typeof nullable !== 'boolean') {\n      return err('nullable must be a boolean');\n    }\n  }\n\n  if (metadata !== undefined) {\n    if (typeof metadata !== 'object' || Array.isArray(metadata) || metadata === null) {\n      return err('metadata must be an object');\n    }\n  }\n\n  if (ref !== undefined) {\n    if (typeof ref !== 'string') {\n      return err('ref must be a string');\n    }\n  }\n\n  if (type !== undefined) {\n    if (typeof type !== 'string' || !VALID_TYPES.includes(type)) {\n      return err('type must be a string and one of the valid types');\n    }\n  }\n\n  if (enum_ !== undefined) {\n    if (!Array.isArray(enum_)) {\n      return err('enum must be an array');\n    }\n\n    if (!enum_.every(elem => typeof elem === 'string')) {\n      return err('enum must be an array of strings');\n    }\n  }\n\n  if (elements !== undefined) {\n    const result = isSchema(elements, path.concat('elements'));\n    if (result.type === 'error') {\n      return result;\n    }\n  }\n\n  if (properties !== undefined) {\n    if (typeof properties !== 'object' || Array.isArray(properties) || properties === null) {\n      return err('properties must be an object');\n    }\n\n    for (const key of Object.keys(properties)) {\n      const result = isSchema(\n        properties[key as $TSFixMeKey<typeof properties>],\n        path.concat('properties', key)\n      );\n      if (result.type === 'error') {\n        return result;\n      }\n    }\n  }\n\n  if (optionalProperties !== undefined) {\n    if (\n      typeof optionalProperties !== 'object' ||\n      Array.isArray(optionalProperties) ||\n      optionalProperties === null\n    ) {\n      return err('optionalProperties must be an object');\n    }\n\n    for (const key of Object.keys(optionalProperties)) {\n      const result = isSchema(\n        optionalProperties[key as $TSFixMeKey<typeof optionalProperties>],\n        path.concat('optionalProperties', key)\n      );\n      if (result.type === 'error') {\n        return result;\n      }\n    }\n  }\n\n  if (additionalProperties !== undefined) {\n    if (typeof additionalProperties !== 'boolean') {\n      return err('additionalProperties must be a boolean');\n    }\n  }\n\n  if (values !== undefined) {\n    const result = isSchema(values, path.concat('values'));\n    if (result.type === 'error') {\n      return result;\n    }\n  }\n\n  if (discriminator !== undefined) {\n    if (typeof discriminator !== 'string') {\n      return err('discriminator must be a string');\n    }\n  }\n\n  if (mapping !== undefined) {\n    if (typeof mapping !== 'object' || Array.isArray(mapping) || mapping === null) {\n      return err('mapping must be an object');\n    }\n\n    for (const key of Object.keys(mapping)) {\n      const result = isSchema(\n        mapping[key as $TSFixMeKey<typeof mapping>],\n        path.concat('mapping', key)\n      );\n      if (result.type === 'error') {\n        return result;\n      }\n    }\n  }\n\n  if (Object.keys(rest).length !== 0) {\n    return err('schema has unknown properties');\n  }\n\n  return ok();\n}\n","/* oxlint-disable default-case,no-prototype-builtins,complexity,fp/no-loops,max-depth */\n/**\n * Module validate provides an implementation of JSON Typedef validation.\n *\n * The most important function in this module is {@link validate}, which returns\n * an array of {@link ValidationError}. You can configure {@link validate} by\n * passing it a {@link ValidationConfig}.\n *\n * @packageDocumentation\n */\n\n// import isRFC3339 from './rfc3339';\nimport type { Schema, SchemaFormType } from './schema.js';\nimport {\n  isDiscriminatorForm,\n  isElementsForm,\n  isEnumForm,\n  isPropertiesForm,\n  isRefForm,\n  isTypeForm,\n  isValuesForm,\n} from './schema.js';\n\n/**\n * ValidationConfig represents options you can pass to {@link validate}.\n */\nexport interface ValidationConfig {\n  /**\n   * maxDepth is the maximum number of `ref`s to recursively follow before\n   * {@link validate} throws {@link MaxDepthExceededError}.\n   *\n   * If maxDepth is zero, then no maximum depth will be enforced.\n   * {@link validate} will recursively follow `ref`s indefinitely, potentially\n   * causing a stack overflow.\n   *\n   * By default, maxDepth is zero.\n   */\n  maxDepth?: number;\n\n  /**\n   * maxErrors is the maximum number of errors to return from {@link validate}.\n   *\n   * If maxErrors is positive, {@link validate} may return fewer errors than\n   * maxErrors, but it will never return more than maxErrors.\n   *\n   * If maxErrors is zero, {@link validate} will return all validation errors.\n   *\n   * By default, maxErrors is zero.\n   */\n  maxErrors?: number;\n\n  features?: string[];\n}\n\n/**\n * MaxDepthExceededError is the error returned if\n * {@link ValidationConfig.maxDepth} is exceeded during {@link validate}.\n */\nclass MaxDepthExceededError extends Error {}\n\nclass MaxErrorsReachedError extends Error {}\n\n/**\n * ValidationError represents a JSON Typedef validation error.\n *\n * In terms of the formal JSON Typedef specification, ValidationError\n * corresponds to a JSON Typedef error \"indicator\". ValidationError is *not* a\n * subclass of Error. It is just a plain old TypeScript interface.\n *\n * Both elements of ValidationError are meant to be used as the path segments of\n * an [RFC6901 JSON Pointer](https://tools.ietf.org/html/rfc6901). This package\n * does not provide an implementation of JSON Pointers for you, and you may\n * choose to not use JSON Pointers at all.\n */\nexport interface ValidationError {\n  /**\n   * instancePath is the path to a part of the instance, or \"input\", that was\n   * rejected.\n   */\n  instancePath: string[];\n\n  /**\n   * schemaPath is the path to the part of the schema that rejected the input.\n   */\n  schemaPath: string[];\n  message: string;\n}\n\n/**\n * validate performs JSON Typedef validation of an instance (or \"input\") against\n * a JSON Typedef schema, returning a standardized set of errors.\n *\n * This function may throw {@link MaxDepthExceededError} if you have configured\n * a {@link ValidationConfig.maxDepth}. If you do not configure such a maxDepth,\n * then this function may cause a stack overflow. That's because of\n * circularly-defined schemas like this one:\n *\n * ```json\n * {\n *   \"ref\": \"loop\",\n *   \"definitions\": {\n *     \"loop\": { \"ref\": \"loop\" }\n *   }\n * }\n * ```\n *\n * If your schema is not circularly defined like this, then there is no risk for\n * validate to overflow the stack.\n *\n * If you are only interested in a certain number of error messages, consider\n * using {@link ValidationConfig.maxErrors} to get better performance. For\n * instance, if all you care about is whether the input is OK or if it has\n * errors, you may want to set maxErrors to 1.\n *\n * @param schema The schema to validate data against\n * @param instance The \"input\" to validate\n * @param config Validation options. Optional.\n */\n\nexport function validate(\n  schema: Schema,\n  instance: unknown,\n  config?: ValidationConfig\n): ValidationError[] {\n  const formats = schema.metadata?.formats;\n  const validateFormat = createFormatValidator(formats);\n\n  const state = {\n    errors: [],\n    instanceTokens: [],\n    schemaTokens: [[]],\n    root: schema,\n    config: {\n      maxDepth: config?.maxDepth ?? 0,\n      maxErrors: config?.maxErrors ?? 0,\n      features: config?.features,\n    },\n  };\n\n  try {\n    validateWithState(state, schema, instance, { format: validateFormat });\n  } catch (err) {\n    if (err instanceof MaxErrorsReachedError) {\n      // MaxErrorsReachedError is just a dummy error to abort further\n      // validation. The contents of state.errors are what we need to return.\n    } else {\n      // This is a genuine error. Let's re-throw it.\n      throw err;\n    }\n  }\n\n  return state.errors;\n}\n\ninterface ValidationState {\n  errors: ValidationError[];\n  instanceTokens: string[];\n  schemaTokens: string[][];\n  root: Schema;\n  config: ValidationConfig;\n}\n\ntype NonStandardValidations = {\n  format: (schema: Schema, instance: unknown) => string | undefined;\n};\n\nfunction validateWithState(\n  state: ValidationState,\n  schema: Schema,\n  instance: unknown,\n  nonStandardValidations: NonStandardValidations,\n  parentTag?: string\n) {\n  if (schema.nullable && instance === null) {\n    return;\n  }\n\n  if (\n    state.config.features &&\n    schema.metadata?.features &&\n    !schema.metadata.features.some(f => state.config.features?.includes(f)) &&\n    instance !== null &&\n    !isEmptyObject(instance)\n  ) {\n    pushSchemaToken(state, 'metadata');\n    pushSchemaToken(state, 'features');\n    pushError(\n      state,\n      schema.metadata.features.length > 1\n        ? `Features [${schema.metadata.features.join(', ')}] are not supported`\n        : `Feature [${schema.metadata.features[0]}] is not supported`\n    );\n    popSchemaToken(state);\n    popSchemaToken(state);\n  }\n\n  if (isRefForm(schema)) {\n    if (state.schemaTokens.length === state.config.maxDepth) {\n      throw new MaxDepthExceededError();\n    }\n\n    // The ref form is the only case where we push a new array onto\n    // schemaTokens; we maintain a separate stack for each reference.\n    state.schemaTokens.push(['definitions', schema.ref]);\n    // oxlint-disable-next-line @typescript-oxlint/no-non-null-assertion\n    validateWithState(state, state.root.definitions![schema.ref], instance, nonStandardValidations);\n    state.schemaTokens.pop();\n  } else if (isTypeForm(schema)) {\n    pushSchemaToken(state, 'type');\n\n    switch (schema.type) {\n      case 'boolean':\n        if (typeof instance !== 'boolean') {\n          pushError(state, 'Expected a boolean');\n        }\n        break;\n      case 'float32':\n      case 'float64':\n        if (typeof instance !== 'number') {\n          pushError(state, 'Expected a number');\n        }\n        break;\n      case 'int8':\n        validateInt(state, instance, schema, -128, 127);\n        break;\n      case 'uint8':\n        validateInt(state, instance, schema, 0, 255);\n        break;\n      case 'int16':\n        validateInt(state, instance, schema, -32768, 32767);\n        break;\n      case 'uint16':\n        validateInt(state, instance, schema, 0, 65535);\n        break;\n      case 'int32':\n        validateInt(state, instance, schema, -2147483648, 2147483647);\n        break;\n      case 'uint32':\n        validateInt(state, instance, schema, 0, 4294967295);\n        break;\n      case 'string':\n        if (typeof instance !== 'string') {\n          pushError(state, 'Expected a string');\n        }\n        if (\n          schema.metadata?.validation?.minLength &&\n          (instance as string).length < schema.metadata.validation.minLength\n        ) {\n          pushSchemaToken(state, ['metadata', 'validation', 'minLength']);\n          pushError(state, `Expected at least ${schema.metadata.validation.minLength} characters`);\n          popSchemaToken(state, 3);\n        }\n\n        if (\n          schema.metadata?.validation?.maxLength &&\n          (instance as string).length > schema.metadata.validation.maxLength\n        ) {\n          pushSchemaToken(state, ['metadata', 'validation', 'maxLength']);\n          pushError(state, `Expected at most ${schema.metadata.validation.minLength} characters`);\n          popSchemaToken(state, 3);\n        }\n        break;\n      case 'timestamp':\n        if (typeof instance !== 'string') {\n          pushError(state, 'Expected a timestamp');\n          // } else if (!isRFC3339(instance)) {\n          //   pushError(state);\n        }\n        break;\n    }\n    const formatError = nonStandardValidations.format(schema, instance);\n    if (formatError) {\n      pushError(state, formatError);\n    }\n\n    popSchemaToken(state);\n  } else if (isEnumForm(schema)) {\n    pushSchemaToken(state, 'enum');\n\n    if (typeof instance !== 'string' || !schema.enum.includes(instance)) {\n      pushError(state, `Expected one of: ${schema.enum.join(', ')}`);\n    }\n\n    popSchemaToken(state);\n  } else if (isElementsForm(schema)) {\n    pushSchemaToken(state, 'elements');\n\n    if (Array.isArray(instance)) {\n      for (const [index, subInstance] of instance.entries()) {\n        pushInstanceToken(state, index.toString());\n        validateWithState(state, schema.elements, subInstance, nonStandardValidations);\n        popInstanceToken(state);\n      }\n\n      if (schema.metadata?.pattern) {\n        const pattern = schema.metadata.pattern;\n        const validationResult = validatePattern(pattern.value, instance);\n        if (!validationResult.valid) {\n          pushSchemaToken(state, ['metadata', 'pattern']);\n          pushError(state, validationResult.message);\n          popSchemaToken(state, 2);\n        }\n      }\n      if (\n        schema.metadata?.validation?.maxSize &&\n        instance.length > schema.metadata.validation.maxSize\n      ) {\n        pushSchemaToken(state, ['metadata', 'validation', 'maxSize']);\n        pushError(state, `Expected at most ${schema.metadata.validation.maxSize} items`);\n        popSchemaToken(state, 3);\n      }\n\n      if (\n        schema.metadata?.validation?.minSize &&\n        instance.length < schema.metadata.validation.minSize\n      ) {\n        pushSchemaToken(state, ['metadata', 'validation', 'minSize']);\n        pushError(state, `Expected at least ${schema.metadata.validation.minSize} items`);\n        popSchemaToken(state, 3);\n      }\n\n      if (schema.metadata?.validation?.uniqueTags) {\n        const repeating = instance\n          .map(i => (i as any)?.type as string)\n          .filter((item, index, arr) => arr.indexOf(item) !== index);\n        if (repeating.length) {\n          pushSchemaToken(state, ['metadata', 'validation', 'uniqueTags']);\n          pushError(state, `Expected unique types, but [${repeating.join(', ')}] are repeated`);\n          popSchemaToken(state, 3);\n        }\n      }\n    } else {\n      pushError(state, 'Expected an array');\n    }\n\n    popSchemaToken(state);\n  } else if (isPropertiesForm(schema)) {\n    // JSON has six basic types of data (null, boolean, number, string,\n    // array, object). Of their standard JS countparts, three have a\n    // `typeof` of \"object\": null, array, and object.\n    //\n    // This check attempts to check if something is \"really\" an object.\n    if (typeof instance === 'object' && instance !== null && !Array.isArray(instance)) {\n      if (schema.properties !== undefined) {\n        pushSchemaToken(state, 'properties');\n        for (const [name, subSchema] of Object.entries(schema.properties)) {\n          pushSchemaToken(state, name);\n          if (instance.hasOwnProperty(name)) {\n            pushInstanceToken(state, name);\n            validateWithState(state, subSchema, (instance as any)[name], nonStandardValidations);\n            popInstanceToken(state);\n          } else {\n            pushError(state, `Missing property: ${name}`);\n          }\n          popSchemaToken(state);\n        }\n        popSchemaToken(state);\n      }\n\n      if (schema.optionalProperties !== undefined) {\n        pushSchemaToken(state, 'optionalProperties');\n        for (const [name, subSchema] of Object.entries(schema.optionalProperties)) {\n          pushSchemaToken(state, name);\n          if (instance.hasOwnProperty(name)) {\n            const value = (instance as any)[name];\n            if (value !== undefined) {\n              pushInstanceToken(state, name);\n              validateWithState(state, subSchema, value, nonStandardValidations);\n              popInstanceToken(state);\n            }\n          }\n          popSchemaToken(state);\n        }\n        popSchemaToken(state);\n      }\n\n      if (schema.additionalProperties !== true) {\n        for (const name of Object.keys(instance)) {\n          const inRequired = schema.properties && name in schema.properties;\n          const inOptional = schema.optionalProperties && name in schema.optionalProperties;\n          const value = (instance as any)[name];\n\n          if (!inRequired && !inOptional && name !== parentTag && value !== undefined) {\n            pushInstanceToken(state, name);\n            pushError(state, 'Unexpected property');\n            popInstanceToken(state);\n          }\n        }\n      }\n      if (schema.metadata?.oneOf) {\n        const oneOfProperties = schema.metadata?.oneOf.properties;\n        const countOfInitializedOneOfProperties = oneOfProperties.filter(p => {\n          return (\n            Object.hasOwn(instance, p) &&\n            (instance[p as keyof typeof instance] !== null ||\n              instance[p as keyof typeof instance] !== undefined)\n          );\n        }).length;\n        if (countOfInitializedOneOfProperties > 1) {\n          pushSchemaToken(state, ['metadata', 'oneOf']);\n          pushError(\n            state,\n            `Only one of the properties [${oneOfProperties.join(', ')}] can be initialized`\n          );\n          popSchemaToken(state, 2);\n        }\n        if (schema.metadata.oneOf.strict && countOfInitializedOneOfProperties < 1) {\n          pushSchemaToken(state, ['metadata', 'oneOf']);\n          pushError(\n            state,\n            `One property in oneOf group [${oneOfProperties.join(',')}] must be initialized`\n          );\n          popSchemaToken(state, 2);\n        }\n      }\n    } else {\n      if (schema.properties !== undefined) {\n        pushSchemaToken(state, 'properties');\n      } else {\n        pushSchemaToken(state, 'optionalProperties');\n      }\n\n      pushError(state, 'Expected an object');\n      popSchemaToken(state);\n    }\n  } else if (isValuesForm(schema)) {\n    pushSchemaToken(state, 'values');\n\n    // See comment in properties form on why this is the test we use for\n    // checking for objects.\n    if (typeof instance === 'object' && instance !== null && !Array.isArray(instance)) {\n      for (const [name, subInstance] of Object.entries(instance)) {\n        pushInstanceToken(state, name);\n        validateWithState(state, schema.values, subInstance, nonStandardValidations);\n        popInstanceToken(state);\n      }\n    } else {\n      pushError(state, 'Expected an object in map form');\n    }\n\n    popSchemaToken(state);\n  } else if (isDiscriminatorForm(schema)) {\n    // See comment in properties form on why this is the test we use for\n    // checking for objects.\n    if (typeof instance === 'object' && instance !== null && !Array.isArray(instance)) {\n      if (instance.hasOwnProperty(schema.discriminator)) {\n        const tag = (instance as any)[schema.discriminator];\n\n        if (typeof tag === 'string') {\n          if (tag in schema.mapping) {\n            pushSchemaToken(state, 'mapping');\n            pushSchemaToken(state, tag);\n            validateWithState(\n              state,\n              schema.mapping[tag],\n              instance,\n              nonStandardValidations,\n              schema.discriminator\n            );\n            popSchemaToken(state);\n            popSchemaToken(state);\n          } else {\n            pushSchemaToken(state, 'mapping');\n            pushInstanceToken(state, schema.discriminator);\n            pushError(state, `Allowed values: ${Object.keys(schema.mapping).join(', ')}`);\n            popInstanceToken(state);\n            popSchemaToken(state);\n          }\n        } else {\n          pushSchemaToken(state, 'discriminator');\n          pushInstanceToken(state, schema.discriminator);\n          pushError(state, 'Expected a string');\n          popInstanceToken(state);\n          popSchemaToken(state);\n        }\n      } else {\n        pushSchemaToken(state, 'discriminator');\n        pushError(state, `Missing tag: ${schema.discriminator}`);\n        popSchemaToken(state);\n      }\n    } else {\n      pushSchemaToken(state, 'discriminator');\n      pushError(state, 'Expected an object');\n      popSchemaToken(state);\n    }\n  }\n}\n\nfunction validateInt(\n  state: ValidationState,\n  instance: unknown,\n  schema: SchemaFormType,\n  min: number,\n  max: number\n) {\n  if (\n    typeof instance !== 'number' ||\n    !Number.isInteger(instance) ||\n    instance < min ||\n    instance > max\n  ) {\n    pushError(state, `Expected an integer between ${min} and ${max}`);\n  }\n\n  if (schema.metadata?.validation?.min && Number(instance) < schema.metadata.validation.min) {\n    pushSchemaToken(state, ['metadata', 'validation', 'min']);\n    pushError(state, `Expected min value of ${schema.metadata.validation.min}`);\n    popSchemaToken(state, 3);\n  }\n\n  if (schema.metadata?.validation?.max && Number(instance) > schema.metadata.validation.max) {\n    pushSchemaToken(state, ['metadata', 'validation', 'max']);\n    pushError(state, `Expected max value of ${schema.metadata.validation.max}`);\n    popSchemaToken(state, 3);\n  }\n}\n\nfunction pushInstanceToken(state: ValidationState, token: string) {\n  state.instanceTokens.push(token);\n}\n\nfunction popInstanceToken(state: ValidationState) {\n  state.instanceTokens.pop();\n}\n\nfunction pushSchemaToken(state: ValidationState, token: string | string[]) {\n  state.schemaTokens[state.schemaTokens.length - 1].push(\n    ...(Array.isArray(token) ? token : [token])\n  );\n}\n\nfunction popSchemaToken(state: ValidationState, count = 1) {\n  for (let i = 0; i < count; i++) {\n    state.schemaTokens[state.schemaTokens.length - 1].pop();\n  }\n}\n\nfunction pushError(state: ValidationState, message: string) {\n  state.errors.push({\n    instancePath: [...state.instanceTokens],\n    schemaPath: [...state.schemaTokens[state.schemaTokens.length - 1]],\n    message,\n  });\n\n  if (state.errors.length === state.config.maxErrors) {\n    throw new MaxErrorsReachedError();\n  }\n}\n\nfunction createFormatValidator(formats: NonNullable<Schema['metadata']>['formats']) {\n  if (!formats) {\n    return () => undefined;\n  }\n  return (schema: Schema, instance: unknown): string | undefined => {\n    if (!schema.metadata?.format || !('type' in schema)) {\n      return undefined;\n    }\n\n    if (schema.type !== 'string') {\n      throw new Error(\n        `Invalid schema: Format validation can only be applied to string type form (got ${schema.type})`\n      );\n    }\n    if (!instance) {\n      // If the instance is empty, we don't need to validate the format, other validators exist for this\n      return undefined;\n    }\n    const format = formats?.[schema.metadata.format];\n    if (format?.validation.type === 'regex') {\n      const regex = new RegExp(format.validation.regex);\n      if (regex.test(instance as string)) {\n        return undefined;\n      }\n      return `Incorrect format (expected: /${format.validation.regex})/ ${format.description})`;\n    }\n    if (format?.validation.type === 'web_url') {\n      try {\n        // oxlint-disable-next-line no-new\n        new URL(instance as string);\n      } catch (e: unknown) {\n        return 'Incorrect format (expected: web_url): ' + (e as Error).message;\n      }\n      const url = new URL(instance as string);\n      if (url.protocol !== 'http:' && url.protocol !== 'https:') {\n        return 'Incorrect format (expected: web_url): URL must start with http:// or https://';\n      }\n    }\n    return undefined;\n  };\n}\n\nconst validatePattern = (\n  pattern: string,\n  instance: unknown[]\n): { valid: true } | { valid: false; message: string } => {\n  const nodeArrangement = instance.map(o => (o as any)?.type ?? 'UNDEFINED').join('');\n\n  const isValid = !!nodeArrangement.match(`^${pattern.replaceAll(' ', '')}$`);\n  if (isValid) {\n    return { valid: true };\n  }\n  return {\n    valid: false,\n    message: `Incorrect node order [${instance\n      .map(o => (o as any)?.type ?? 'UNDEFINED')\n      .join(' ')}] does not match required pattern [${pattern}]`,\n  };\n};\n\nconst isEmptyObject = (obj: unknown) => obj && typeof obj === 'object' && !Object.keys(obj).length;\n","import type { SchemaFeature } from './features.js';\nimport type { EditorPluginName } from './plugin-names.js';\n\nexport const pluginsToFeatures = (plugins: EditorPluginName[]): SchemaFeature[] => {\n  return [...new Set(plugins.flatMap(p => pluginToFeatureMap[p]))];\n};\n\nconst pluginToFeatureMap: { [key in EditorPluginName]: SchemaFeature[] } = {\n  actionButton: ['BUTTON'],\n  fontFamily: ['FONT_FAMILY'],\n  audio: ['AUDIO'],\n  codeBlock: ['CODE_BLOCK'],\n  collapsibleList: ['COLLAPSIBLE_LIST'],\n  divider: ['DIVIDER'],\n  file: ['FILE'],\n  gallery: ['GALLERY'],\n  giphy: ['GIF'],\n  hashtag: [],\n  html: ['HTML'],\n  image: ['IMAGE'],\n  link: ['LINK'],\n  linkButton: ['BUTTON'],\n  linkPreview: ['LINK_PREVIEW', 'EMBED'],\n  mentions: ['MENTION'],\n  poll: ['POLL'],\n  spoiler: ['SPOILER'],\n  table: ['TABLE'],\n  textColor: ['COLOR_DECORATION'],\n  textHighlight: ['COLOR_DECORATION'],\n  verticalEmbed: ['APP_EMBED'],\n  video: ['VIDEO'],\n  ai: [],\n  inlineAi: [],\n  layout: [],\n  emoji: [],\n  heading: [],\n  indent: [],\n  lineSpacing: ['LINE_SPACING'],\n  shape: ['SHAPE'],\n  card: ['PAGING'],\n};\n","import type { RicosDocument } from '../generated/ricos_document.js';\nimport rootSchema from '../generated/ricos_document.jtd.json.js';\nimport { validate as v } from '../json-typedef-js-fork/validate.js';\nimport type { EditorPluginName } from '../plugin-names.js';\nimport { pluginsToFeatures } from '../plugin-to-feature.js';\n\nexport type ValidationError = {\n  /**\n   * instancePath is the path to a part of the instance, or \"input\", that was\n   * rejected.\n   */\n  instancePath: string[];\n  /**\n   * schemaPath is the path to the part of the schema that rejected the input.\n   */\n  schemaPath: string[];\n  /**\n   * description of the error\n   */\n  message: string;\n};\n\nexport function validateRicosDocument(\n  content: any,\n  options?: {\n    plugins?: EditorPluginName[];\n  }\n): { type: 'ok'; content: RicosDocument } | { type: 'error'; errors: ValidationError[] } {\n  const errors = v(rootSchema as any, content, {\n    features: options?.plugins ? pluginsToFeatures(options.plugins) : undefined,\n  });\n  if (!errors.length) {\n    return { type: 'ok' as const, content: content as RicosDocument };\n  }\n  return { type: 'error' as const, errors: errors ?? [] };\n}\n","/* oxlint-disable @typescript-oxlint/no-non-null-assertion */\n/* oxlint-disable fp/no-loops */\nimport parse from 'json-to-ast';\n\nimport type { RicosDocument } from '../generated/ricos_document.js';\nimport type { ValidationError } from '../json-typedef-js-fork/validate.js';\nimport type { EditorPluginName } from '../plugin-names.js';\nimport { getAstForJsonPointer } from './pointerUtils.js';\nimport { validateRicosDocument } from './validate-ricos-document.js';\n\ntype Message = {\n  from: number;\n  to: number;\n  message: string;\n};\n\nexport function parseFromString(\n  str: string,\n  options?: {\n    plugins?: EditorPluginName[];\n  }\n): { type: 'ok'; content: RicosDocument } | { type: 'error'; messages: Message[] } {\n  let obj;\n  try {\n    obj = JSON.parse(str);\n  } catch (e: any) {\n    const error = e as Error;\n    const position = getPositionFromJSONError(e);\n    return {\n      type: 'error',\n      messages: [\n        position !== undefined\n          ? {\n              from: position,\n              to: position + 1,\n              message: error.message,\n            }\n          : {\n              from: 0,\n              to: str.length,\n              message: error.message,\n            },\n      ],\n    };\n  }\n\n  const validationResult = validateRicosDocument(obj, options);\n  if (validationResult.type === 'ok') {\n    return { type: 'ok', content: validationResult.content };\n  }\n  const ast = parse(str);\n\n  return {\n    type: 'error',\n    messages: (validationResult.errors || []).map(convertMessage(ast)),\n  };\n}\n\nfunction getPositionFromJSONError(e: Error): number | undefined {\n  if (e instanceof SyntaxError) {\n    const match = /position (\\d+)/.exec(e.message);\n    if (match) {\n      return parseInt(match[1], 10); // Convert the position to a number.\n    }\n    return undefined;\n  }\n}\n\nconst convertMessage =\n  (ast: parse.ValueNode) =>\n  (message: ValidationError): Message => {\n    const astForJsonPointer = getAstForJsonPointer(ast, message.instancePath);\n    return {\n      message: message.message,\n      from: astForJsonPointer.property\n        ? astForJsonPointer.property.loc!.start.offset\n        : astForJsonPointer.value.loc!.start.offset,\n      to: astForJsonPointer.value.loc!.end.offset,\n    };\n  };\n","// Autogenerated during build time. Do not modify.\nexport const RICOS_VERSION = '10.164.4';\n","// Types\nexport type {\n  AnchorData,\n  AnchorDecoration,\n  AppEmbedData,\n  AppEmbedData_BookingData,\n  AppEmbedData_EventData,\n  AppEmbedDataBooking,\n  AppEmbedDataEvent,\n  AppEmbedDataProduct,\n  AppEmbedNode,\n  AudioData,\n  AudioNode,\n  BackgroundImage,\n  BlockquoteData,\n  BlockquoteNode,\n  BoldDecoration,\n  BulletedListData,\n  BulletedListNode,\n  ButtonData,\n  ButtonData_Styles,\n  ButtonData_Styles_Border,\n  ButtonData_Styles_Colors,\n  ButtonNode,\n  CardChildNode,\n  CardData,\n  Background,\n  Background_ColorVariant,\n  Background_GradientVariant,\n  CardNode,\n  CaptionData,\n  CaptionNode,\n  CodeBlockData,\n  CodeBlockNode,\n  CollapsibleItemBodyChildNode,\n  CollapsibleItemBodyNode,\n  CollapsibleItemChildNode,\n  CollapsibleItemNode,\n  CollapsibleItemTitleNode,\n  CollapsibleListData,\n  CollapsibleListNode,\n  CollapsibleTitleChildNode,\n  ColorData,\n  ColorDecoration,\n  Decoration,\n  DividerData,\n  DividerNode,\n  DocumentStyle,\n  EmbedData,\n  EmbedNode,\n  FileData,\n  FileData_PDFSettings,\n  FileNode,\n  FileSource,\n  FontFamilyData,\n  FontFamilyDecoration,\n  FontSizeData,\n  FontSizeDecoration,\n  GalleryData,\n  GalleryData_Item,\n  GalleryData_Item_Image,\n  GalleryData_Item_Video,\n  GalleryNode,\n  GalleryOptions,\n  GalleryOptions_ItemStyle,\n  GalleryOptions_Layout,\n  GalleryOptions_Thumbnails,\n  GIF,\n  GIFData,\n  GifNode,\n  HeadingData,\n  HeadingNode,\n  HTMLData,\n  HtmlNode,\n  ImageData,\n  ImageNode,\n  ItalicDecoration,\n  LayoutCellChildNode,\n  LayoutCellData,\n  LayoutCellNode,\n  LayoutData,\n  LayoutData_DesignTarget,\n  LayoutData_ResponsivenessBehaviour,\n  LayoutData_Banner,\n  LayoutData_BannerOrigin,\n  LayoutNode,\n  Link,\n  Link_Rel,\n  LinkData,\n  LinkDecoration,\n  LinkPreviewData,\n  LinkPreviewNode,\n  ListItemChildNode,\n  ListItemNode,\n  Media,\n  MentionData,\n  MentionDecoration,\n  Metadata,\n  Never,\n  Node,\n  NodeStyle,\n  Oembed,\n  OrderedListData,\n  OrderedListNode,\n  ParagraphData,\n  ParagraphNode,\n  PlaybackOptions,\n  PluginContainerData,\n  PluginContainerData_Height,\n  PluginContainerData_Spoiler,\n  PluginContainerData_Width,\n  PollData,\n  PollData_Background_ColorVariant,\n  PollData_Background_GradientVariant,\n  PollData_Background_ImageVariant,\n  PollData_Design,\n  PollData_Design_OptionDesign,\n  PollData_Design_PollDesign,\n  PollData_Design_PollDesign_Background,\n  PollData_Design_PollDesign_Background_Gradient,\n  PollData_Layout,\n  PollData_Layout_OptionLayout,\n  PollData_Layout_PollLayout,\n  PollData_Poll,\n  PollData_Poll_Option,\n  PollData_Poll_Settings,\n  PollData_Poll_Settings_Permissions,\n  PollNode,\n  RicosDocument,\n  RicosDocumentNode,\n  RootNode,\n  ShapeData,\n  ShapeNode,\n  SpoilerData,\n  SpoilerDecoration,\n  StrikethroughDecoration,\n  SubscriptDecoration,\n  SuperscriptDecoration,\n  TableCellChildNode,\n  TableCellData,\n  TableCellData_BorderColors,\n  TableCellData_CellStyle,\n  TableCellNode,\n  TableData,\n  TableData_Dimensions,\n  TableNode,\n  TableRowNode,\n  TextData,\n  TextNode,\n  TextNodeStyle,\n  TextStyle,\n  UnderlineDecoration,\n  VideoData,\n  VideoNode,\n} from './generated/ricos_document.js';\nexport {\n  AppEmbedData_AppType,\n  ButtonData_Type,\n  Background_Type,\n  CollapsibleListData_Direction,\n  Decoration_Type,\n  DividerData_Alignment,\n  DividerData_LineStyle,\n  DividerData_Width,\n  FileData_PDFSettings_ViewMode,\n  FontSizeData_fontType,\n  GalleryOptions_ItemStyle_Crop,\n  GalleryOptions_Layout_Orientation,\n  GalleryOptions_Layout_Type,\n  GalleryOptions_Thumbnails_Alignment,\n  GIFData_GIFType,\n  HTMLData_Source,\n  ImagePosition,\n  ImageScaling,\n  LATEST_VERSION,\n  Link_Target,\n  Node_Type,\n  PluginContainerData_Alignment,\n  PluginContainerData_Width_Type,\n  PollData_Design_PollDesign_Background_Type,\n  PollData_Layout_PollLayout_Direction,\n  PollData_Layout_PollLayout_Type,\n  PollData_Poll_Settings_Permissions_ViewRole,\n  PollData_Poll_Settings_Permissions_VoteRole,\n  RichContent,\n  RicosDocumentNodeType,\n  VerticalAlignment as TableCellData_VerticalAlignment,\n  TextStyle_TextAlignment,\n  VerticalAlignment,\n} from './generated/ricos_document.js';\nexport { default as RicosDocumentJTD } from './generated/ricos_document.jtd.json.js';\n\n// Utils\nexport { RicosDocumentExamples } from './docs-static/examples-registry.js';\nexport type { SchemaFeature } from './features.js';\nexport { schemaFeatures } from './features.js';\nexport { ricosDocumentReferenceMd } from './generated/ricos-document-reference.js';\nexport type { EditorPluginName, ViewerPluginName } from './plugin-names.js';\nexport { editorPluginNames, legacyPluginToNextMap, viewerPluginNames } from './plugin-names.js';\nexport { decodeUnicodeBase64, encodeUnicodeBase64 } from './unicode-base64.js';\nexport { parseFromString } from './validator/parseFromString.js';\nexport type { ValidationError } from './validator/validate-ricos-document.js';\nexport { validateRicosDocument } from './validator/validate-ricos-document.js';\nexport { RICOS_VERSION } from './version.js';\n","import type { MediaUploadError } from './../ricos-content/index.js';\nimport type { LinkPreviewData_Styles, TableCellData_BorderWidths } from './../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport type {\n  AppEmbedData_CardStyles_Alignment,\n  AppEmbedData_CardStyles_Layout,\n  AppEmbedData_CardStyles_Type,\n  AppEmbedData_ImageStyles_AspectRatio,\n  AppEmbedData_ImageStyles_Position,\n  AppEmbedData_ImageStyles_Resizing,\n  AppEmbedData_RibbonStyles_Placement,\n  ButtonData_Styles_ButtonSize,\n} from './../ricos-schema/next-schema/generated/ricos_document.js';\nimport type {\n  AppEmbedData_BookingData,\n  AppEmbedData_EventData,\n  AudioData,\n  ButtonData_Styles,\n  ButtonData_Type,\n  CollapsibleListData_Direction,\n  Decoration,\n  DividerData_Alignment,\n  DividerData_LineStyle,\n  DividerData_Width,\n  FileData_PDFSettings,\n  FileSource,\n  GalleryData_Item,\n  GalleryOptions,\n  GIF,\n  GIFData_GIFType,\n  HTMLData_Source,\n  ImageData,\n  LayoutData,\n  Link,\n  Media,\n  Oembed,\n  PlaybackOptions,\n  PluginContainerData,\n  PollData_Design,\n  PollData_Layout,\n  PollData_Poll,\n  TableCellData_BorderColors,\n  TableCellData_CellStyle,\n  TextStyle,\n  VideoData,\n} from './../ricos-schema/next-schema/index.js';\nimport { Node_Type } from './../ricos-schema/next-schema/index.js';\n\nexport const PmNodeType = {\n  DIVIDER: Node_Type.DIVIDER,\n  IMAGE: Node_Type.IMAGE,\n  CAPTION: Node_Type.CAPTION,\n  GALLERY: Node_Type.GALLERY,\n  FILE: Node_Type.FILE,\n  GIF: Node_Type.GIF,\n  VIDEO: Node_Type.VIDEO,\n  AUDIO: Node_Type.AUDIO,\n  LINK_PREVIEW: Node_Type.LINK_PREVIEW,\n  EMBED: Node_Type.EMBED,\n  POLL: Node_Type.POLL,\n  APP_EMBED: Node_Type.APP_EMBED,\n  COLLAPSIBLE_LIST: Node_Type.COLLAPSIBLE_LIST,\n  COLLAPSIBLE_ITEM: Node_Type.COLLAPSIBLE_ITEM,\n  COLLAPSIBLE_ITEM_TITLE: Node_Type.COLLAPSIBLE_ITEM_TITLE,\n  COLLAPSIBLE_ITEM_BODY: Node_Type.COLLAPSIBLE_ITEM_BODY,\n  HTML: Node_Type.HTML,\n  CODE_BLOCK: Node_Type.CODE_BLOCK,\n  TABLE: Node_Type.TABLE,\n  TABLE_ROW: Node_Type.TABLE_ROW,\n  TABLE_CELL: Node_Type.TABLE_CELL,\n  FIGURE: 'FIGURE',\n  LINK_BUTTON: 'LINK_BUTTON',\n  ACTION_BUTTON: 'ACTION_BUTTON',\n  TABLE_HEADER_CELL: 'TABLE_HEADER_CELL',\n  PARAGRAPH: Node_Type.PARAGRAPH,\n  HEADING: Node_Type.HEADING,\n  BULLETED_LIST: Node_Type.BULLETED_LIST,\n  ORDERED_LIST: Node_Type.ORDERED_LIST,\n  LIST_ITEM: Node_Type.LIST_ITEM,\n  BLOCKQUOTE: Node_Type.BLOCKQUOTE,\n  LAYOUT: Node_Type.LAYOUT,\n  LAYOUT_CELL: Node_Type.LAYOUT_CELL,\n  SHAPE: Node_Type.SHAPE,\n  text: 'text',\n  hardbreak: 'hardbreak',\n} as const;\n\nexport type PmNodeType = keyof typeof PmNodeType;\n\nexport type PmNode =\n  | PmParagraphNode\n  | PmTextNode\n  | PmHeadingNode\n  | PmBulletedListNode\n  | PmOrderedListNode\n  | PmListItemNode\n  | PmBlockquoteNode\n  | PmCodeBlockNode\n  | PmVideoNode\n  | PmDividerNode\n  | PmFileNode\n  | PmGalleryNode\n  | PmGifNode\n  | PmHtmlNode\n  | PmImageNode\n  | PmLinkPreviewNode\n  | PmPollNode\n  | PmAppEmbedNode\n  | PmLinkButtonNode\n  | PmActionButtonNode\n  | PmCaptionNode\n  | PmCollapsibleListNode\n  | PmCollapsibleItemNode\n  | PmCollapsibleItemTitleNode\n  | PmCollapsibleItemBodyNode\n  | PmTableNode\n  | PmEmbedNode\n  | PmTableCellNode\n  | PmTableRowNode\n  | PmAudioNode\n  | PmShapeNode\n  | PmFigureNode\n  | PmLayoutNode\n  | PmLayoutCellNode;\n\ntype DecorationToMark<T extends Decoration> = {\n  type: T['type'];\n  attrs: Omit<T, 'type'>;\n};\n\nexport type PmParagraphNode = {\n  type: typeof PmNodeType.PARAGRAPH;\n  attrs: {\n    id: string;\n    indentation: number | null;\n    level: number | null;\n    textStyle: TextStyle | null;\n    style: {} | null;\n  };\n  content?: PmNode[];\n};\n\nexport type PmTextNode = {\n  type: typeof PmNodeType.text;\n  text: string;\n  attrs?: {};\n  marks?: DecorationToMark<Decoration>[];\n};\n\nexport type PmHeadingNode = {\n  type: typeof PmNodeType.HEADING;\n  attrs: {\n    id: string;\n    indentation: number | null;\n    level: number | null;\n    textStyle: TextStyle | null;\n    style: object | null;\n  };\n  content?: PmNode[];\n};\n\ntype PmBulletedListNode = {\n  type: typeof PmNodeType.BULLETED_LIST;\n  attrs: {\n    id: string;\n    indentation: number;\n    offset: number;\n  };\n  content?: PmNode[];\n};\n\ntype PmOrderedListNode = {\n  type: typeof PmNodeType.ORDERED_LIST;\n  attrs: {\n    id: string;\n    indentation: number;\n    offset: number;\n    start: number;\n  };\n  content?: PmNode[];\n};\n\nexport type PmListItemNode = {\n  type: typeof PmNodeType.LIST_ITEM;\n  attrs: {\n    id: string;\n  };\n  content?: PmNode[];\n};\n\ntype PmBlockquoteNode = {\n  type: typeof PmNodeType.BLOCKQUOTE;\n  attrs: {\n    id: string;\n    indentation: number | null;\n    textStyle: TextStyle | null;\n    paragraphId: string | null;\n  };\n  content?: PmNode[];\n};\n\ntype PmCodeBlockNode = {\n  type: typeof PmNodeType.CODE_BLOCK;\n  attrs: {\n    id: string;\n    textStyle: TextStyle | null;\n  };\n  content?: PmNode[];\n};\n\nexport type PmVideoNode = {\n  type: typeof PmNodeType.VIDEO;\n  attrs: {\n    id: string;\n    disableExpand: boolean | null;\n    video: VideoData['video'];\n    containerData: VideoData['containerData'];\n    thumbnail: VideoData['thumbnail'];\n    disableDownload: boolean | null;\n    title: string | null;\n    options: PlaybackOptions | null;\n    loading: boolean;\n    uploadToken: symbol | null;\n    error: MediaUploadError | null;\n    /// @deprecated\n    loadingPercentage: number | null;\n    tempData: object | null;\n  };\n  content?: PmNode[];\n};\n\nexport type PmDividerNode = {\n  type: typeof PmNodeType.DIVIDER;\n  attrs: {\n    id: string;\n    containerData: PluginContainerData | null;\n    lineStyle: DividerData_LineStyle | null;\n    width: DividerData_Width | null;\n    alignment: DividerData_Alignment | null;\n  };\n  content?: PmNode[];\n};\n\nexport type PmFileNode = {\n  type: typeof PmNodeType.FILE;\n  attrs: {\n    id: string;\n    containerData: PluginContainerData | null;\n    src: FileSource | null;\n    name: string | null;\n    type: string | null;\n    size: number | null;\n    sizeInKb: string | null;\n    pdfSettings: FileData_PDFSettings | null;\n    mimeType: string | null;\n    path: string | null;\n    loading: boolean;\n    error: null | MediaError;\n    tempData: boolean | null;\n  };\n  content?: PmNode[];\n};\n\nexport type PmGalleryNode = {\n  type: typeof PmNodeType.GALLERY;\n  attrs: {\n    id: string;\n    items: (GalleryData_Item & { error?: MediaError; loading: boolean })[];\n    containerData: PluginContainerData | null;\n    options: GalleryOptions | null;\n    disableExpand: boolean | null;\n    disableDownload: boolean | null;\n    loading: boolean;\n    /// @deprecated\n    loadingPercentage: number | null;\n  };\n  content?: PmNode[];\n};\n\nexport type PmGifNode = {\n  type: typeof PmNodeType.GIF;\n  attrs: {\n    id: string;\n    containerData: PluginContainerData | null;\n    original: GIF | null;\n    downsized: GIF | null;\n    height: number | null;\n    width: number | null;\n    gifType: GIFData_GIFType | null;\n  };\n  content?: PmNode[];\n};\n\nexport type PmHtmlNode = {\n  type: typeof PmNodeType.HTML;\n  attrs: {\n    id: string;\n    isAdsense: boolean | null;\n    containerData: PluginContainerData | null;\n    source: HTMLData_Source | null;\n    url: string | null;\n    html: string | null;\n    autoHeight: boolean;\n    iframeHeight: number | null;\n    state: PmHtmlNodeState | null;\n  };\n  content?: PmNode[];\n};\n\ntype PmHtmlNodeState =\n  | {\n      status: 'INITIAL';\n      prompt?: PromptState;\n    }\n  | {\n      status: 'SUCCESS';\n      prompt?: PromptState;\n    }\n  | {\n      status: 'LOADING';\n      prompt: PromptState;\n      requestId: string;\n    }\n  | {\n      status: 'ERROR';\n      prompt: PromptState;\n      error: string;\n    };\n\ntype PromptState = {\n  text: string;\n  selectedWidgetTypeId?: string;\n  fileRefs: Attachment[];\n};\n\nexport type Attachment =\n  | {\n      id: string;\n      status: 'ok';\n      file: {\n        name: string;\n        type: FileType;\n        url: string;\n      };\n    }\n  | {\n      id: string;\n      status: 'loading';\n      file: {\n        name: string;\n        type: FileType;\n      };\n    }\n  | {\n      id: string;\n      status: 'error';\n      file: {\n        name: string;\n        type: FileType;\n      };\n      error: string;\n    };\n\ntype FileType = 'png' | 'jpg' | 'jpeg' | 'csv' | 'text' | 'pdf';\n\nexport type PmImageNode = {\n  type: typeof PmNodeType.IMAGE;\n  attrs: {\n    id: string;\n    image: ImageData['image'] | null;\n    link: ImageData['link'] | null;\n    disableExpand: boolean | null;\n    altText: string | null;\n    disableDownload: boolean | null;\n    decorative: boolean | null;\n    containerData: ImageData['containerData'] | null;\n    loading: boolean | null;\n    /// @deprecated\n    loadingPercentage: number | null;\n    tempData: string | null;\n    error: null | MediaError;\n    styles: {\n      border: {\n        color?: string;\n        width?: number;\n        radius?: number;\n      };\n    } | null;\n  };\n};\ntype MediaError = { key: string };\n\nexport type PmLinkPreviewNode = {\n  type: typeof PmNodeType.LINK_PREVIEW;\n  attrs: {\n    id: string;\n    containerData: PluginContainerData | null;\n    link: Link | null;\n    title: string | null;\n    thumbnailUrl: string | null;\n    description: string | null;\n    html: string | null;\n    styles: {\n      backgroundColor?: string;\n      titleColor?: string;\n      subtitleColor?: string;\n      linkColor?: string;\n      borderWidth?: number;\n      borderRadius?: number;\n      borderColor?: string;\n      thumbnailPosition?: LinkPreviewData_Styles['thumbnailPosition'];\n    };\n  };\n  content?: PmNode[];\n};\n\ntype PmPollNode = {\n  type: typeof PmNodeType.POLL;\n  attrs: {\n    id: string;\n    containerData: PluginContainerData | null;\n    poll: PollData_Poll | null;\n    layout: PollData_Layout | null;\n    design: PollData_Design | null;\n  };\n  content?: PmNode[];\n};\n\nexport type PmAppEmbedNode = {\n  type: typeof PmNodeType.APP_EMBED;\n  attrs: {\n    id: string;\n    containerData: PluginContainerData | null;\n    type: string | null;\n    name: string | null;\n    url: string | null;\n    image: Media | null;\n    itemId: string | null;\n    imageSrc: string | null;\n    eventData: AppEmbedData_EventData | null;\n    bookingData: AppEmbedData_BookingData | null;\n    hideImage: boolean | null;\n    hidePrice: boolean | null;\n    hideDescription: boolean | null;\n    hideDateTime: boolean | null;\n    hideLocation: boolean | null;\n    hideDuration: boolean | null;\n    hideButton: boolean | null;\n    hideRibbon: boolean | null;\n    buttonStyles: AppEmbedData_ButtonStyles | null;\n    imageStyles: AppEmbedData_ImageStyles | null;\n    ribbonStyles: AppEmbedData_RibbonStyles | null;\n    cardStyles: AppEmbedData_CardStyles | null;\n    pricingData: AppEmbedData_PricingData | null;\n  };\n  content?: PmNode[];\n};\n\nexport type AppEmbedData_ButtonStyles = {\n  buttonText?: string;\n  borderWidth?: number;\n  borderRadius?: number;\n  borderColor?: string;\n  textColor?: string;\n  backgroundColor?: string;\n  borderColorHover?: string;\n  textColorHover?: string;\n  backgroundColorHover?: string;\n  buttonSize?: ButtonData_Styles_ButtonSize;\n};\n\nexport type AppEmbedData_ImageStyles = {\n  imagePosition?: AppEmbedData_ImageStyles_Position;\n  aspectRatio?: AppEmbedData_ImageStyles_AspectRatio;\n  resizing?: AppEmbedData_ImageStyles_Resizing;\n  borderColor?: string;\n  borderWidth?: number;\n  borderRadius?: number;\n};\n\nexport type AppEmbedData_RibbonStyles = {\n  ribbonText?: string;\n  ribbonPlacement?: AppEmbedData_RibbonStyles_Placement;\n  backgroundColor?: string;\n  textColor?: string;\n  borderColor?: string;\n  borderWidth?: number;\n  borderRadius?: number;\n};\n\nexport type AppEmbedData_CardStyles = {\n  backgroundColor?: string;\n  borderColor?: string;\n  borderWidth?: number;\n  borderRadius?: number;\n  type?: AppEmbedData_CardStyles_Type;\n  alignment?: AppEmbedData_CardStyles_Alignment;\n  titlePriceLayout?: AppEmbedData_CardStyles_Layout;\n  titleColor?: string;\n  textColor?: string;\n};\n\nexport type AppEmbedData_PricingData = {\n  valueFrom?: string;\n  valueTo?: string;\n  discountedValue?: string;\n  currency?: string;\n  pricingPlanId?: string;\n};\n\nexport type PmLinkButtonNode = {\n  type: typeof PmNodeType.LINK_BUTTON;\n  attrs: {\n    id: string;\n    type: ButtonData_Type | null;\n    text: string | null;\n    containerData: PluginContainerData | null;\n    styles: ButtonData_Styles | null;\n    link: Link | null;\n  };\n  content?: PmNode[];\n};\n\nexport type PmActionButtonNode = {\n  type: typeof PmNodeType.ACTION_BUTTON;\n  attrs: {\n    id: string;\n    type: ButtonData_Type | null;\n    text: string | null;\n    containerData: PluginContainerData | null;\n    styles: ButtonData_Styles | null;\n    link: Link | null;\n  };\n  content?: PmNode[];\n};\n\nexport type PmCaptionNode = {\n  type: typeof PmNodeType.CAPTION;\n  attrs: {\n    id: string;\n    textStyle: TextStyle;\n    styleDefaults: {\n      paddingTop: string;\n      paddingBottom: string;\n    };\n  };\n  content?: PmTextNode[];\n};\n\nexport type PmCollapsibleListNode = {\n  type: typeof PmNodeType.COLLAPSIBLE_LIST;\n  attrs: {\n    id: string;\n    containerData: PluginContainerData | null;\n    expandOnlyOne: boolean;\n    initialExpandedItems: 'FIRST' | 'ALL' | 'NONE';\n    direction: CollapsibleListData_Direction;\n    isQapageData: boolean | null;\n  };\n  content?: PmNode[];\n};\n\nexport type PmCollapsibleItemNode = {\n  type: typeof PmNodeType.COLLAPSIBLE_ITEM;\n  attrs: {\n    id: string;\n    isExpanded: boolean;\n  };\n  content?: PmNode[];\n};\n\ntype PmCollapsibleItemTitleNode = {\n  type: typeof PmNodeType.COLLAPSIBLE_ITEM_TITLE;\n  attrs: {\n    id: string;\n  };\n  content?: PmNode[];\n};\n\ntype PmCollapsibleItemBodyNode = {\n  type: typeof PmNodeType.COLLAPSIBLE_ITEM_BODY;\n  attrs: {\n    id: string;\n    isExpanded: boolean;\n  };\n  content?: PmNode[];\n};\n\ntype PmTableNode = {\n  type: typeof PmNodeType.TABLE;\n  attrs: {\n    id: string;\n    containerData: null;\n    dimensions: { colsWidthRatio: []; rowsHeight: []; colsMinWidth: [] } | null;\n    header: null;\n    rowHeader: null;\n    columnHeader: null;\n  };\n  content?: PmNode[];\n};\n\ntype PmTableCellNode = {\n  type: typeof PmNodeType.TABLE_CELL;\n  attrs: {\n    id: string;\n    cellStyle: TableCellData_CellStyle | null;\n    borderColors: TableCellData_BorderColors | null;\n    colspan: number;\n    rowspan: number;\n    colwidth: number[] | null;\n    verticalAlignment: string;\n    backgroundColor: string | null;\n    borderWidths: TableCellData_BorderWidths | null;\n  };\n  content?: PmNode[];\n};\n\ntype PmTableRowNode = {\n  type: typeof PmNodeType.TABLE_ROW;\n  attrs: {\n    id: string;\n    height: number;\n  };\n  content?: PmNode[];\n};\n\ntype PmEmbedNode = {\n  type: typeof PmNodeType.EMBED;\n  attrs: {\n    id: string;\n    containerData: PluginContainerData | null;\n    oembed: Oembed | null;\n    src: string | null;\n  };\n  content?: PmNode[];\n};\n\nexport type PmAudioNode = {\n  type: typeof PmNodeType.AUDIO;\n  attrs: {\n    id: string;\n    containerData: AudioData['containerData'] | null;\n    audio: AudioData['audio'] | null;\n    disableDownload: boolean | null;\n    coverImage: AudioData['coverImage'] | null;\n    name: string | null;\n    authorName: string | null;\n    html: string | null;\n    error?: MediaUploadError;\n    /// @deprecated\n    tempData?: boolean;\n    loading?: boolean;\n  };\n  content?: PmNode[];\n};\n\nexport type PmShapeNode = {\n  type: typeof PmNodeType.SHAPE;\n  attrs: {\n    id: string;\n    shape: Media;\n    containerData: PluginContainerData;\n    styles?: {\n      colors?: Record<string, string>;\n    } | null;\n  };\n};\n\nexport type PmFigureNode = {\n  type: typeof PmNodeType.FIGURE;\n  attrs: {\n    id: string;\n  };\n  content?: [PmImageNode | PmVideoNode | PmGifNode, PmCaptionNode];\n};\n\nexport type PmLayoutNode = {\n  type: typeof PmNodeType.LAYOUT;\n  attrs: {\n    id: string;\n    backgroundColor?: string;\n    backgroundImage?: LayoutData['backgroundImage'];\n    borderColor?: string;\n    borderWidth?: number;\n    borderRadius?: number;\n    backdropColor?: string;\n    backdropImage?: LayoutData['backdropImage'];\n    backdropPaddingTop?: number;\n    backdropPaddingBottom?: number;\n    gap?: number;\n    cellPadding?: number[];\n    responsivenessBehaviour?: LayoutData['responsivenessBehaviour'];\n    responsivenessBreakpoint?: number;\n    designTarget?: LayoutData['designTarget'];\n    containerData: LayoutData['containerData'];\n    banner?: LayoutData['banner'];\n    /// @deprecated\n    loading?: {\n      backgroundImage?: boolean;\n      backdropImage?: boolean;\n    };\n    error?: MediaUploadError;\n  };\n  content?: PmNode[];\n};\n\nexport type PmLayoutCellNode = {\n  type: typeof PmNodeType.LAYOUT_CELL;\n  attrs: {\n    id: string;\n    colSpan?: number;\n  };\n  content?: PmNode[];\n};\n","import lodash from 'lodash';\n\nimport type { Environment, RicosTheme } from './../ricos-types/index.js';\n\nimport {\n  HEADING_FONT_SIZES,\n  PARAGRAPH_FONT_SIZE,\n  ACTION_COLOR_DEFAULT,\n  BG_COLOR_DEFAULT,\n  TEXT_COLOR_DEFAULT,\n} from './theme-constants.js';\n\ntype ResolveThemeOptions = {\n  theme?: RicosTheme;\n  environment?: Environment;\n  isMobile?: boolean;\n};\n\n/**\n * Single theme resolution function.\n *\n * Merge order: baseDefaults <- envPreset <- userTheme <- priorityOverrides\n *\n * - baseDefaults: device-specific defaults (desktop/mobile font sizes, palette)\n * - envPreset: environment-specific preset (wix/liveSite/native)\n * - userTheme: user-provided theme overrides\n * - priorityOverrides: forced overrides that cannot be changed by the user (wix-only)\n */\nexport const resolveTheme = ({\n  theme = {},\n  environment,\n  isMobile = false,\n}: ResolveThemeOptions): RicosTheme => {\n  const { useWixStyles, useNativeStyles, ...userTheme } = theme;\n\n  // 1. Determine environment\n  const isWix = useWixStyles || environment === 'businessManager' || environment === 'wixel';\n  const envPreset = useNativeStyles ? nativePreset : isWix ? wixPreset : liveSitePreset;\n\n  // 2. Pick device-specific base defaults\n  const baseDefaults = isMobile ? THEME_DEFAULTS.mobile : THEME_DEFAULTS.desktop;\n\n  // 3. Merge in clear, documented order:\n  //    base defaults <- environment preset <- user overrides <- priority overrides\n  return lodash.merge({}, baseDefaults, envPreset, userTheme, isWix ? wixPriorityOverrides : {});\n};\n\n// ── Environment Presets ──────────────────────────────────────────────────────\n// Moved from wix-ricos-common/themeStrategy/useWixStyle.ts, useLiveSiteStyle.ts, useNativeStyle.ts\n\nconst wixPreset: RicosTheme = {\n  palette: {\n    actionColor: ACTION_COLOR_DEFAULT,\n    bgColor: BG_COLOR_DEFAULT,\n    textColor: TEXT_COLOR_DEFAULT,\n  },\n  paletteConfig: {\n    focusActionColor: ACTION_COLOR_DEFAULT,\n    settingsActionColor: ACTION_COLOR_DEFAULT,\n  },\n  settingsStyles: {\n    dividers: {\n      color: '#DFE5EB',\n      height: '12px',\n    },\n    icons: {\n      color: '#333853',\n    },\n    text: {\n      color: '#333853',\n      fontFamily: 'Madefor',\n    },\n    whitebox: {\n      borderRadius: '8px',\n      boxShadow: '0 8px 8px 0 rgba(22, 45, 61, 0.12), 0 3px 24px 0 rgba(22, 45, 61, 0.18)',\n    },\n  },\n};\n\n// These theme styles should always override provided theme styles in wix environment\nconst wixPriorityOverrides: RicosTheme = {\n  customStyles: {\n    editor: {\n      addPluginButton: {\n        plusIconColor: ACTION_COLOR_DEFAULT,\n      },\n    },\n  },\n};\n\nconst liveSitePreset: RicosTheme = {\n  palette: {},\n  paletteConfig: {\n    settingsActionColor: '#000000',\n  },\n  settingsStyles: {\n    dividers: {\n      color: '#ededed',\n      height: '12px',\n    },\n    icons: {\n      color: '#000000',\n    },\n    text: {\n      color: '#000000',\n      fontFamily: 'HelveticaNeue,Helvetica,Arial',\n    },\n    whitebox: {\n      borderRadius: '0px',\n      boxShadow: '0 8px 8px 0 rgba(22, 45, 61, 0.12), 0 3px 24px 0 rgba(22, 45, 61, 0.18)',\n    },\n  },\n};\n\nconst nativePreset: RicosTheme = {\n  nativeStyle: {\n    text: {\n      fontFamily: 'Madefor',\n      color: '#20303C',\n    },\n    primaryText: {\n      fontWeight: 700,\n    },\n    bgColor: {\n      backgroundColor: '#F8F9FA',\n    },\n    secondary: {\n      backgroundColor: '#E8ECF0',\n    },\n    whitebox: {\n      borderRadius: '8px',\n    },\n    coverImage: {\n      height: '70px',\n      width: '70px',\n      margin: '8px',\n      border: '1px solid rgba(110, 120, 129, 0.1)',\n    },\n  },\n};\n\n// reference for values is in consts.scss in common package\nconst defaultCustomStyle = { fontWeight: 'normal', fontStyle: 'normal', lineHeight: '1.5' };\nconst defaultPalette = { bgColor: BG_COLOR_DEFAULT, textColor: TEXT_COLOR_DEFAULT };\n\nconst THEME_DEFAULTS: {\n  desktop: RicosTheme;\n  mobile: RicosTheme;\n} = {\n  desktop: {\n    customStyles: {\n      p: {\n        ...defaultCustomStyle,\n        fontSize: PARAGRAPH_FONT_SIZE,\n      },\n      h1: {\n        ...defaultCustomStyle,\n        fontSize: HEADING_FONT_SIZES.h1,\n      },\n      h2: {\n        ...defaultCustomStyle,\n        fontSize: HEADING_FONT_SIZES.h2,\n      },\n      h3: {\n        ...defaultCustomStyle,\n        fontSize: HEADING_FONT_SIZES.h3,\n      },\n      h4: {\n        ...defaultCustomStyle,\n        fontSize: HEADING_FONT_SIZES.h4,\n      },\n      h5: {\n        ...defaultCustomStyle,\n        fontSize: HEADING_FONT_SIZES.h5,\n      },\n      h6: {\n        ...defaultCustomStyle,\n        fontSize: HEADING_FONT_SIZES.h6,\n      },\n      quote: {\n        lineHeight: '1.5',\n        fontSize: '18px',\n      },\n      codeBlock: {\n        lineHeight: '1.5',\n      },\n    },\n    palette: defaultPalette,\n  },\n  mobile: {\n    customStyles: {\n      p: {\n        ...defaultCustomStyle,\n        fontSize: '14px',\n      },\n      h1: {\n        ...defaultCustomStyle,\n        fontSize: '32px',\n      },\n      h2: {\n        ...defaultCustomStyle,\n        fontSize: '24px',\n      },\n      h3: {\n        ...defaultCustomStyle,\n        fontSize: '20px',\n      },\n      h4: {\n        ...defaultCustomStyle,\n        fontSize: '20px',\n      },\n      h5: {\n        ...defaultCustomStyle,\n        fontSize: '16px',\n      },\n      h6: {\n        ...defaultCustomStyle,\n        fontSize: '14px',\n      },\n      quote: {\n        lineHeight: '1.5',\n        fontSize: '18px',\n      },\n      codeBlock: {\n        lineHeight: '1.5',\n      },\n    },\n    palette: defaultPalette,\n  },\n};\n","import type {\n  IZIndexService,\n  IZindexLayer,\n  IZindexLayers,\n  RicosSettingsStyles,\n} from './../ricos-types/index.js';\n\nconst BASE_ZINDEX = {\n  mobile: 100000, // due forum mobile dialog zindex\n  desktop: 5000, //photo sutdio zindex - 6000, MM zindex - 10000\n};\n\nconst zIndexLayers: IZindexLayers = {\n  TOOLBAR: 100,\n  POPUP: 200,\n  DRAWER: 300,\n  DIALOG: 300,\n  TOOLTIP: 400,\n  NOTIFICATION: 500,\n};\n\nexport class ZIndexService implements IZIndexService {\n  private baseZIndex: number;\n\n  private settingsStyles: RicosSettingsStyles | undefined;\n\n  constructor(isMobile: boolean, settingsStyles?: RicosSettingsStyles) {\n    this.baseZIndex = isMobile ? BASE_ZINDEX.mobile : BASE_ZINDEX.desktop;\n    this.settingsStyles = settingsStyles;\n  }\n\n  layerToCssVar(layer: IZindexLayer): string | undefined {\n    if (!this.settingsStyles || !this.settingsStyles?.modals) {\n      return undefined;\n    }\n\n    return `--ricos-settings-modals-${layer.toLowerCase()}-z-index`;\n  }\n\n  getZIndex(layer: IZindexLayer): string | number {\n    const defaultValue = this.baseZIndex + zIndexLayers[layer];\n    const themeLayerValue = this.layerToCssVar(layer);\n\n    return themeLayerValue !== undefined\n      ? `var(${themeLayerValue}, ${defaultValue})`\n      : defaultValue;\n  }\n}\n","export {\n  StylesContext,\n  StylesContextProvider,\n  withStylesContext,\n} from './context/StylesContext.js';\nexport { RicosDocumentStyle as DocumentStyle } from './document-style/document-style.js';\nexport { getStyles } from './get-styles.js';\nexport type { TextBlockNodeType } from './models/styles.js';\nexport { RicosStyles } from './styles.js';\nexport { resolveTheme } from './resolve-theme.js';\nexport {\n  ACTION_COLOR_DEFAULT,\n  BG_COLOR_DEFAULT,\n  FALLBACK_COLOR_BRIGHT_DEFAULT,\n  FALLBACK_COLOR_DEFAULT,\n  HEADING_FONT_SIZES,\n  PARAGRAPH_FONT_SIZE,\n  TEXT_COLOR_DEFAULT,\n} from './theme-constants.js';\nexport { buildThemeCssVars } from './themeStrategy/build-theme-css-vars.js';\nexport {\n  adaptForeground,\n  buildCssVars,\n  buildCssVarsObj,\n  canTransformToHex,\n  isBright,\n  toCssRgb,\n  toCssRgbA,\n  toDashedKey,\n  toHexFormat,\n  toRgbTuple,\n  toVarStrings,\n} from './themeStrategy/themeUtils.js';\nexport { ZIndexService } from './z-index-service.js';\n","import { Node_Type } from './../ricos-schema/legacy/wix/rich_content/v1/index.js';\n\nexport const HEADER_BLOCK = Object.freeze({\n  ONE: 'header-one',\n  TWO: 'header-two',\n  THREE: 'header-three',\n  FOUR: 'header-four',\n  FIVE: 'header-five',\n  SIX: 'header-six',\n  PARAGRAPH: 'unstyled',\n});\n\nexport const WRAP = 'wrap';\nexport const NO_WRAP = 'nowrap';\nexport const UNSTYLED = 'unstyled';\nexport const BLOCKQUOTE = 'blockquote';\nexport const NUMBERED_LIST_TYPE = 'ordered-list-item';\nexport const BULLET_LIST_TYPE = 'unordered-list-item';\n\n/* oxlint-disable camelcase */\nexport const LINK_BUTTON_TYPE = 'wix-draft-plugin-link-button';\nexport const ACTION_BUTTON_TYPE = 'wix-draft-plugin-action-button';\nexport const CODE_BLOCK_TYPE = 'code-block';\nexport const DIVIDER_TYPE = 'wix-draft-plugin-divider';\nexport const EMOJI_TYPE = 'wix-draft-plugin-emoji';\nexport const FILE_UPLOAD_TYPE = 'wix-draft-plugin-file-upload';\nexport const GALLERY_TYPE = 'wix-draft-plugin-gallery';\nexport const GIPHY_TYPE = 'wix-draft-plugin-giphy';\nexport const HASHTAG_TYPE = 'wix-draft-plugin-hashtag';\nexport const HEADERS_MARKDOWN_TYPE = 'wix-draft-plugin-headers-markdown';\nexport const HTML_TYPE = 'wix-draft-plugin-html';\nexport const IMAGE_TYPE = 'wix-draft-plugin-image';\nexport const IMAGE_TYPE_LEGACY = 'IMAGE';\nexport const INDENT_TYPE = 'wix-rich-content-plugin-indent';\nexport const LINE_SPACING_TYPE = 'line-spacing';\nexport const HEADINGS_DROPDOWN_TYPE = 'wix-rich-content-plugin-headings';\nexport const SPOILER_TYPE = 'wix-rich-content-plugin-spoiler';\nexport const COLLAPSIBLE_LIST_TYPE = 'wix-rich-content-plugin-collapsible-list';\nexport const EXTERNAL_LINK_TYPE = 'wix-draft-plugin-external-link';\nexport const LINK_TYPE = 'LINK';\nexport const LINK_PREVIEW_TYPE = 'wix-draft-plugin-link-preview';\nexport const EXTERNAL_MENTIONS_TYPE = 'wix-draft-plugin-external-mentions';\nexport const MENTION_TYPE = 'mention';\nexport const SOUND_CLOUD_TYPE = 'wix-draft-plugin-sound-cloud';\nexport const TEXT_COLOR_TYPE = 'wix-rich-content-text-color';\nexport const TEXT_HIGHLIGHT_TYPE = 'wix-rich-content-text-highlight';\nexport const UNDO_REDO_TYPE = 'wix-rich-content-undo-redo';\nexport const APP_EMBED_TYPE = 'wix-draft-plugin-vertical-embed';\nexport const VERTICAL_EMBED_TYPE = 'wix-draft-plugin-vertical-embed';\nexport const VIDEO_TYPE = 'wix-draft-plugin-video';\nexport const AUDIO_TYPE = 'ricos-audio';\nexport const VIDEO_TYPE_LEGACY = 'VIDEO-EMBED';\nexport const POLL_TYPE = 'wix-draft-plugin-poll';\nexport const TABLE_TYPE = 'wix-rich-content-plugin-table';\nexport const ANCHOR_TYPE = 'ANCHOR';\nexport const PREVIEW = 'PREVIEW';\nexport const EMBED_TYPE = 'EMBED';\nexport const EXTERNAL = 'EXTERNAL';\nexport const SHAPE_TYPE = 'SHAPE';\nexport const CARD_TYPE = 'CARD';\n// ricos plugin types\nexport const RICOS_COLLAPSIBLE_LIST_TYPE = 'ricos-collapsible-list';\nexport const RICOS_ACTION_BUTTON_TYPE = 'ricos-action-button';\nexport const RICOS_DIVIDER_TYPE = 'ricos-divider';\nexport const RICOS_FILE_TYPE = 'ricos-file';\nexport const RICOS_GALLERY_TYPE = 'ricos-gallery';\nexport const RICOS_GIPHY_TYPE = 'ricos-giphy';\nexport const RICOS_HTML_TYPE = 'ricos-html';\nexport const RICOS_IMAGE_TYPE = 'ricos-image';\nexport const RICOS_CAPTION_TYPE = 'ricos-caption';\nexport const RICOS_INDENT_TYPE = 'ricos-indent';\nexport const RICOS_LINE_SPACING_TYPE = 'ricos-line-spacing';\nexport const RICOS_LINK_BUTTON_TYPE = 'ricos-link-button';\nexport const RICOS_LINK_PREVIEW_TYPE = 'ricos-link-preview';\nexport const RICOS_POLL_TYPE = 'ricos-poll';\nexport const RICOS_TABLE_TYPE = 'ricos-table';\nexport const RICOS_TEXT_COLOR_TYPE = 'ricos-text-color';\nexport const RICOS_TEXT_HIGHLIGHT_TYPE = 'ricos-text-highlight';\nexport const RICOS_VERTICAL_EMBED_TYPE = 'ricos-vertical-embed';\nexport const RICOS_VIDEO_TYPE = 'ricos-video';\nexport const RICOS_ANCHOR_TYPE = 'ricos-anchor';\nexport const RICOS_LINK_TYPE = 'ricos-link';\nexport const RICOS_MENTION_TYPE = 'ricos-mention';\nexport const RICOS_FONT_SIZE_TYPE = 'ricos-font-size';\nexport const RICOS_FONT_FAMILY_TYPE = 'ricos-font-family';\nexport const RICOS_LAYOUT_TYPE = 'ricos-layout';\nexport const RICOS_LAYOUT_CELL_TYPE = 'ricos-layout-cell';\nexport const RICOS_SHAPE_TYPE = 'ricos-shape';\n\n// tiptap plugins types\nexport const TIPTAP_DIVIDER_TYPE = Node_Type.DIVIDER;\nexport const TIPTAP_FIGURE_TYPE = 'FIGURE';\nexport const TIPTAP_IMAGE_TYPE = Node_Type.IMAGE;\nexport const TIPTAP_CAPTION_TYPE = Node_Type.CAPTION;\nexport const TIPTAP_GALLERY_TYPE = Node_Type.GALLERY;\nexport const TIPTAP_FILE_TYPE = Node_Type.FILE;\nexport const TIPTAP_GIF_TYPE = Node_Type.GIF;\nexport const TIPTAP_VIDEO_TYPE = Node_Type.VIDEO;\nexport const TIPTAP_AUDIO_TYPE = Node_Type.AUDIO;\nexport const TIPTAP_LINK_PREVIEW_TYPE = Node_Type.LINK_PREVIEW;\nexport const TIPTAP_EMBED_TYPE = Node_Type.EMBED;\nexport const TIPTAP_POLL_TYPE = Node_Type.POLL;\nexport const TIPTAP_APP_EMBED_TYPE = Node_Type.APP_EMBED;\nexport const TIPTAP_COLLAPSIBLE_LIST_TYPE = Node_Type.COLLAPSIBLE_LIST;\nexport const TIPTAP_COLLAPSIBLE_ITEM_TYPE = Node_Type.COLLAPSIBLE_ITEM;\nexport const TIPTAP_COLLAPSIBLE_ITEM_TITLE_TYPE = Node_Type.COLLAPSIBLE_ITEM_TITLE;\nexport const TIPTAP_COLLAPSIBLE_ITEM_BODY_TYPE = Node_Type.COLLAPSIBLE_ITEM_BODY;\nexport const TIPTAP_HTML_TYPE = Node_Type.HTML;\nexport const TIPTAP_LINK_BUTTON_TYPE = 'LINK_BUTTON';\nexport const TIPTAP_ACTION_BUTTON_TYPE = 'ACTION_BUTTON';\nexport const TIPTAP_CODE_BLOCK_TYPE = Node_Type.CODE_BLOCK;\nexport const TIPTAP_TABLE_TYPE = Node_Type.TABLE;\nexport const TIPTAP_TABLE_ROW_TYPE = Node_Type.TABLE_ROW;\nexport const TIPTAP_TABLE_CELL_TYPE = Node_Type.TABLE_CELL;\nexport const TIPTAP_TABLE_HEADER_CELL_TYPE = 'TABLE_HEADER_CELL';\nexport const TIPTAP_LAYOUT_TYPE = Node_Type.LAYOUT;\nexport const TIPTAP_LAYOUT_CELL_TYPE = Node_Type.LAYOUT_CELL;\nexport const TIPTAP_SHAPE_TYPE = Node_Type.SHAPE;\nexport const TIPTAP_CARD_TYPE = Node_Type.CARD;\n\nexport const RICOS_NODE_TYPE_TO_DATA_FIELD = {\n  [Node_Type.BUTTON]: 'buttonData',\n  [Node_Type.DIVIDER]: 'dividerData',\n  [Node_Type.FILE]: 'fileData',\n  [Node_Type.GALLERY]: 'galleryData',\n  [Node_Type.GIF]: 'gifData',\n  [Node_Type.HTML]: 'htmlData',\n  [Node_Type.IMAGE]: 'imageData',\n  [Node_Type.CAPTION]: 'captionData',\n  [Node_Type.COLLAPSIBLE_LIST]: 'collapsibleListData',\n  [Node_Type.LINK_PREVIEW]: 'linkPreviewData',\n  [Node_Type.APP_EMBED]: 'appEmbedData',\n  [Node_Type.VIDEO]: 'videoData',\n  [Node_Type.POLL]: 'pollData',\n  [Node_Type.TABLE]: 'tableData',\n  [Node_Type.TABLE_CELL]: 'tableCellData',\n  [Node_Type.PARAGRAPH]: 'paragraphData',\n  [Node_Type.LIST_ITEM]: 'paragraphData',\n  [Node_Type.HEADING]: 'headingData',\n  [Node_Type.CODE_BLOCK]: 'codeBlockData',\n  [Node_Type.BLOCKQUOTE]: 'paragraphData',\n  [Node_Type.EMBED]: 'embedData',\n  [Node_Type.EXTERNAL]: 'externalData',\n  [Node_Type.AUDIO]: 'audioData',\n  [Node_Type.TEXT]: 'textData',\n  [Node_Type.BULLETED_LIST]: 'bulletedListData',\n  [Node_Type.ORDERED_LIST]: 'orderedListData',\n  [Node_Type.COLLAPSIBLE_ITEM]: undefined,\n  [Node_Type.COLLAPSIBLE_ITEM_TITLE]: undefined,\n  [Node_Type.COLLAPSIBLE_ITEM_BODY]: undefined,\n  [Node_Type.TABLE_ROW]: undefined,\n  [Node_Type.UNRECOGNIZED]: undefined,\n  [Node_Type.MAP]: undefined,\n  [Node_Type.LAYOUT]: undefined,\n  [Node_Type.LAYOUT_CELL]: 'layoutCellData',\n  [Node_Type.SHAPE]: 'shapeData',\n  [Node_Type.CARD]: 'cardData',\n} as const satisfies { [key in Node_Type]: string | undefined };\n","// -------------------------------------------------------------------------------------\n// refinements\n// -------------------------------------------------------------------------------------\n/**\n * @category refinements\n * @since 2.11.0\n */\nexport const isBoolean = (u) => typeof u === 'boolean';\n/**\n * Less strict version of [`match`](#match).\n *\n * The `W` suffix (short for **W**idening) means that the handler return types will be merged.\n *\n * @category pattern matching\n * @since 2.10.0\n */\nexport const matchW = (onFalse, onTrue) => (value) => value ? onTrue() : onFalse();\n/**\n * Alias of [`matchW`](#matchw).\n *\n * @category pattern matching\n * @since 2.10.0\n */\nexport const foldW = matchW;\n/**\n * Defines the fold over a boolean value.\n * Takes two thunks `onTrue`, `onFalse` and a `boolean` value.\n * If `value` is false, `onFalse()` is returned, otherwise `onTrue()`.\n *\n * @example\n * import { some, map } from 'fp-ts/Option'\n * import { pipe } from 'fp-ts/function'\n * import { match } from 'fp-ts/boolean'\n *\n * assert.deepStrictEqual(\n *  pipe(\n *    some(true),\n *    map(match(() => 'false', () => 'true'))\n *  ),\n *  some('true')\n * )\n *\n * @category pattern matching\n * @since 2.10.0\n */\nexport const match = foldW;\n/**\n * Alias of [`match`](#match).\n *\n * @category pattern matching\n * @since 2.2.0\n */\nexport const fold = match;\n// -------------------------------------------------------------------------------------\n// instances\n// -------------------------------------------------------------------------------------\n/**\n * @category instances\n * @since 2.10.0\n */\nexport const Eq = {\n    equals: (first, second) => first === second\n};\n/**\n * @category instances\n * @since 2.10.0\n */\nexport const BooleanAlgebra = {\n    meet: (first, second) => first && second,\n    join: (first, second) => first || second,\n    zero: false,\n    one: true,\n    implies: (first, second) => !first || second,\n    not: (b) => !b\n};\n/**\n * `boolean` semigroup under conjunction.\n *\n * @example\n * import { SemigroupAll } from 'fp-ts/boolean'\n *\n * assert.deepStrictEqual(SemigroupAll.concat(true, true), true)\n * assert.deepStrictEqual(SemigroupAll.concat(true, false), false)\n *\n * @category instances\n * @since 2.10.0\n */\nexport const SemigroupAll = {\n    concat: (first, second) => first && second\n};\n/**\n * `boolean` semigroup under disjunction.\n *\n * @example\n * import { SemigroupAny } from 'fp-ts/boolean'\n *\n * assert.deepStrictEqual(SemigroupAny.concat(true, true), true)\n * assert.deepStrictEqual(SemigroupAny.concat(true, false), true)\n * assert.deepStrictEqual(SemigroupAny.concat(false, false), false)\n *\n * @category instances\n * @since 2.10.0\n */\nexport const SemigroupAny = {\n    concat: (first, second) => first || second\n};\n/**\n * `boolean` monoid under conjunction.\n *\n * The `empty` value is `true`.\n *\n * @example\n * import { MonoidAll } from 'fp-ts/boolean'\n *\n * assert.deepStrictEqual(MonoidAll.concat(true, true), true)\n * assert.deepStrictEqual(MonoidAll.concat(true, false), false)\n *\n * @category instances\n * @since 2.10.0\n */\nexport const MonoidAll = {\n    concat: SemigroupAll.concat,\n    empty: true\n};\n/**\n * `boolean` monoid under disjunction.\n *\n * The `empty` value is `false`.\n *\n * @example\n * import { MonoidAny } from 'fp-ts/boolean'\n *\n * assert.deepStrictEqual(MonoidAny.concat(true, true), true)\n * assert.deepStrictEqual(MonoidAny.concat(true, false), true)\n * assert.deepStrictEqual(MonoidAny.concat(false, false), false)\n *\n * @category instances\n * @since 2.10.0\n */\nexport const MonoidAny = {\n    concat: SemigroupAny.concat,\n    empty: false\n};\n/**\n * @category instances\n * @since 2.10.0\n */\nexport const Ord = {\n    equals: Eq.equals,\n    compare: (first, second) => (first < second ? -1 : first > second ? 1 : 0)\n};\n/**\n * @category instances\n * @since 2.10.0\n */\nexport const Show = {\n    show: (b) => JSON.stringify(b)\n};\n","import * as A from 'fp-ts-esm/Array';\nimport { MonoidAll, MonoidAny } from 'fp-ts-esm/boolean';\nimport * as E from 'fp-ts-esm/Either';\nimport type { Eq } from 'fp-ts-esm/Eq';\nimport { identity, pipe } from 'fp-ts-esm/function';\nimport type { Monoid } from 'fp-ts-esm/Monoid';\nimport { concatAll } from 'fp-ts-esm/Monoid';\nimport * as O from 'fp-ts-esm/Option';\nimport * as S from 'fp-ts-esm/Semigroup';\n\n/**\n *\n * Functional switch/case analogue:\n *\n *  switch(candidate) {\n *    case(predicate(candidate)) => resolution(candidate);\n *    ...\n *    default: defaultT\n *  }\n *\n * @template C examination candidate type\n * @template T resolution result type\n * @param {C} candidate\n * @param {T} defaultT fallback value\n * @param {[(candidate: C) => boolean, (candidate: C) => T][]} resolvers [predicate, resolution] tuples\n * @returns  {T}\n */\nexport const firstRight = <C, T>(\n  candidate: C,\n  defaultT: T,\n  resolvers: [(candidate: C) => boolean, (candidate: C) => T][]\n): T => {\n  const firstRightSemi = E.getSemigroup<T, T>(S.first<T>());\n  const concatFirstRightSemi = S.concatAll(firstRightSemi)(E.left(defaultT));\n  return pipe(\n    concatFirstRightSemi(\n      pipe(\n        resolvers,\n        A.map(r =>\n          pipe(\n            candidate,\n            E.fromPredicate(r[0], () => defaultT),\n            E.map(r[1])\n          )\n        )\n      )\n    ),\n    E.fold(identity, identity)\n  );\n};\n\nexport const equals =\n  <T>(E: Eq<T>) =>\n  (lhs: T) =>\n  (rhs: T) =>\n    E.equals(lhs, rhs);\n\nconst concatApply =\n  <T, D>(m: Monoid<T>) =>\n  (fns: ((data: D) => T)[]) =>\n  (data: D) =>\n    pipe(fns, A.ap(A.of(data)), concatAll(m));\n\nexport const and = concatApply(MonoidAll);\nexport const or = concatApply(MonoidAny);\n\nexport const tap =\n  <F extends (data: D) => any, D>(f: F) =>\n  (data: D): D => {\n    f(data);\n    return data;\n  };\n\nconst logWithTag =\n  <T>(tag: string, processor: (data: T) => unknown = identity) =>\n  (data: T) =>\n    console.log(tag, processor(data)); // oxlint-disable-line no-console\nconst stringifyWithTag =\n  <T>(tag: string) =>\n  (data: T) =>\n    console.log(tag, JSON.stringify(data, null, 2)); // oxlint-disable-line no-console\n\nexport const log = <T>(tag: string, processor: (data: T) => unknown = identity) =>\n  // @ts-ignore $TsFixMe\n  tap(logWithTag<T>(tag, processor));\n\n// @ts-ignore $TsFixMe\nexport const deepLog = <T>(tag: string) => tap(stringifyWithTag<T>(tag));\n\nexport const getMatches =\n  (regex: RegExp) =>\n  (str: string): O.Option<RegExpExecArray> =>\n    pipe(regex.exec(str), O.fromNullable);\n\nexport const stringifyWithReplace =\n  (\n    replacer: (key: string, value: any) => any, // oxlint-disable-line @typescript-oxlint/no-explicit-any\n    space = 2\n  ) =>\n  <A>(a: A): E.Either<unknown, string> =>\n    E.tryCatch(() => {\n      const s = JSON.stringify(a, replacer, space);\n      if (typeof s !== 'string') {\n        throw new Error('Converting unsupported structure to JSON');\n      }\n      return s;\n    }, identity);\n","const RTL = '\\u0591-\\u07FF\\uFB1D-\\uFDFD\\uFE70-\\uFEFC';\nconst 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\nconst isRtlRegex = new RegExp('^[^' + LTR + ']*[' + RTL + ']');\nconst isLtrRegex = new RegExp('^[^' + RTL + ']*[' + LTR + ']');\n// oxlint-disable-next-line max-len\nconst emojiRegex =\n  /\\u00a9|\\u00ae|[\\u2000-\\u3300]|\\ud83c[\\ud000-\\udfff]|\\ud83d[\\ud000-\\udfff]|\\ud83e[\\ud000-\\udfff]/g;\n\ntype TextDirection = 'rtl' | 'ltr' | 'auto';\n\nexport const getTextDirection = (text?: string): TextDirection => {\n  if (!text) {\n    return 'auto';\n  }\n\n  const plainText = text.replace(emojiRegex, '');\n\n  if (isRtlRegex.test(plainText)) {\n    return 'rtl';\n  }\n  if (isLtrRegex.test(plainText)) {\n    return 'ltr';\n  }\n  return 'auto';\n};\n","import { Component } from 'react';\n\nconst CLASS_NAME = 'no-outline';\nexport default class AccessibilityListener extends Component<{ isMobile?: boolean }> {\n  handleTabKeyUp = (e: KeyboardEvent) => {\n    if (e.which === 9 && document.body.classList.contains(CLASS_NAME)) {\n      document.body.classList.remove(CLASS_NAME);\n    }\n  };\n\n  handleClick = () => {\n    if (!document.body.classList.contains(CLASS_NAME)) {\n      document.body.classList.add(CLASS_NAME);\n    }\n  };\n\n  componentDidMount() {\n    document.body.classList.add(CLASS_NAME);\n\n    if (!this.props.isMobile) {\n      document.addEventListener('keyup', this.handleTabKeyUp);\n      document.addEventListener('click', this.handleClick);\n    }\n  }\n\n  componentWillUnmount() {\n    if (!this.props.isMobile) {\n      document.removeEventListener('keyup', this.handleTabKeyUp);\n      document.removeEventListener('click', this.handleClick);\n    }\n  }\n\n  render = () => null;\n}\n","export const ADD_PLUGIN_LINK_BI = 'addPluginLink';\nexport const WEB_ADDRESS_CATEGORY = 'web_address';\nexport const ANCHOR_CATEGORY = 'section';\nexport const LINK_VIEWER_DATA_HOOK = 'linkViewer';\nexport const MEDIA_POPOVERS_BUTTONS_NAMES_BI = {\n  embed: 'ClickEmbed',\n  upload: 'ClickUpload',\n  cancel: 'ClickCancel',\n};\nexport const MEDIA_POPOVERS_TABS_NAMES_BI = { embed: 'ClickEmbedTab', upload: 'ClickUploadTab' };\nexport const MAX_LIST_VISIBLE_INDENTATION = 4;\n","export const anchorScroll = (element: HTMLElement) => {\n  const stickyHeaderHeight = getStickyHeaderHeight();\n  const stickyAd = document.querySelector('[id=\"WIX_ADS\"]')?.clientHeight || 0;\n  const mobileToolbar =\n    document.querySelector('[data-hook=\"mobile-toolbar\"]')?.clientHeight ||\n    document.querySelector('[data-hook=\"ricos-editor-toolbars\"]')?.clientHeight ||\n    0;\n  const fixedElementsOffset = stickyHeaderHeight + stickyAd + mobileToolbar;\n  anchorScrollUsingScrollIntoView(element, fixedElementsOffset);\n};\n\nconst anchorScrollUsingScrollIntoView = (element: HTMLElement, fixedElementsOffset: number) => {\n  const { paddingTop, marginTop } = element.style;\n  element.style.marginTop = `-${fixedElementsOffset}px`;\n  element.style.paddingTop = `${fixedElementsOffset}px`;\n  element.scrollIntoView({ behavior: 'smooth' });\n  element.style.marginTop = marginTop;\n  element.style.paddingTop = paddingTop;\n};\n\nconst getStickyHeaderHeight = () => {\n  // This accounts for classical sites header section if it has fixed position\n  const header = document.querySelector('[id=\"SITE_HEADER\"]');\n  if (!header) {\n    return 0;\n  }\n\n  const position = getComputedStyle(header).getPropertyValue('position');\n  if (position === 'fixed' || position === 'sticky') {\n    return header.clientHeight;\n  }\n\n  return 0;\n};\n\nexport const addAnchorTagToUrl = (anchorString: string) => {\n  const url = new URL(window.location.href);\n  url.hash = anchorString;\n  history.pushState({}, '', url.href);\n};\n","import React from 'react';\n\nimport type { AvailableExperiments, TFunction, TextDirection } from './../../ricos-types/index.js';\n\nexport const GlobalContext = React.createContext<{\n  experiments: AvailableExperiments;\n  isMobile: boolean;\n  t?: TFunction;\n  languageDir?: TextDirection;\n}>({\n  isMobile: false,\n  experiments: {},\n  languageDir: 'ltr',\n});\n","import { Node_Type } from './../../ricos-schema/next-schema/index.js';\n\nconst listSymbolMap: { [key in Node_Type]?: string[] } = {\n  [Node_Type.BULLETED_LIST]: ['disc', 'circle', 'square'],\n  [Node_Type.ORDERED_LIST]: ['decimal', 'lower-latin', 'lower-roman'],\n};\n\nexport function getListSymbol(indentation: number, nodeTypeName: Node_Type): string {\n  const listSymbolList = listSymbolMap[nodeTypeName];\n  return listSymbolList ? listSymbolList[indentation % listSymbolList.length] : '';\n}\n","import type { Link_Rel } from './../../ricos-schema/legacy/wix/rich_content/v1/index.js';\n\nconst TOP = '_top';\nconst BLANK = '_blank';\n\nexport const convertRelObjectToString = (rel?: Link_Rel) =>\n  `${rel?.nofollow ? 'nofollow ' : ''}${rel?.sponsored ? 'sponsored ' : ''}${\n    rel?.ugc ? 'ugc ' : ''\n  }${rel?.noreferrer ? 'noreferrer' : ''}`.trim();\n\nexport const convertRelStringToObject = (rel?: string) => ({\n  nofollow: rel?.includes('nofollow'),\n  sponsored: rel?.includes('sponsored'),\n  ugc: rel?.includes('ugc'),\n  noreferrer: rel?.includes('noreferrer'),\n});\n\nexport const convertTargetStringToBoolean = (target: string) => target === BLANK;\n\nexport const convertTargetBooleanToString = (targetBlank: boolean) => (targetBlank ? BLANK : TOP);\n\nexport const getRelValue = (rel?: string) => `noopener noreferrer ${rel || ''}`.trim();\n","import { MAX_LIST_VISIBLE_INDENTATION } from '../consts.js';\n\nexport function normalizeOffset(offset: number) {\n  return offset < 0\n    ? 0\n    : offset > MAX_LIST_VISIBLE_INDENTATION\n      ? MAX_LIST_VISIBLE_INDENTATION\n      : offset;\n}\n","const rtlLangs = [\n  'ae' /* Avestan */,\n  'ar' /* 'العربية', Arabic */,\n  'arc' /* Aramaic */,\n  'bcc' /* 'بلوچی مکرانی', Southern Balochi */,\n  'bqi' /* 'بختياري', Bakthiari */,\n  'ckb' /* 'Soranî / کوردی', Sorani */,\n  'dv' /* Dhivehi */,\n  'fa' /* 'فارسی', Persian */,\n  'glk' /* 'گیلکی', Gilaki */,\n  'he' /* 'עברית', Hebrew */,\n  'ku' /* 'Kurdî / كوردی', Kurdish */,\n  'mzn' /* 'مازِرونی', Mazanderani */,\n  'nqo' /* N'Ko */,\n  'pnb' /* 'پنجابی', Western Punjabi */,\n  'ps' /* 'پښتو', Pashto, */,\n  'sd' /* 'سنڌي', Sindhi */,\n  'ug' /* 'Uyghurche / ئۇيغۇرچە', Uyghur */,\n  'ur' /* 'اردو', Urdu */,\n  'yi' /* 'ייִדיש', Yiddish */,\n];\n\nconst isRtl = (locale?: string) =>\n  !!locale && rtlLangs.includes(locale.split('-|_')[0].toLowerCase());\n\nexport const getLangDir = (locale?: string) => (isRtl(locale) ? 'rtl' : 'ltr');\n","export const isSSR = () => typeof window === 'undefined';\n","/* oxlint-disable no-bitwise */\nconst uuid = (): string => {\n  let d = new Date().getTime();\n  return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {\n    const r = ((d + Math.random() * 16) % 16) | 0;\n    d = Math.floor(d / 16);\n    return (c === 'x' ? r : (r & 0x3) | 0x8).toString(16);\n  });\n};\n\nexport default uuid;\n","let keyCount = 0;\nfunction atom(read, write) {\n  const key = `atom${++keyCount}`;\n  const config = {\n    toString: () => key\n  };\n  if (typeof read === \"function\") {\n    config.read = read;\n  } else {\n    config.init = read;\n    config.read = (get) => get(config);\n    config.write = (get, set, arg) => set(\n      config,\n      typeof arg === \"function\" ? arg(get(config)) : arg\n    );\n  }\n  if (write) {\n    config.write = write;\n  }\n  return config;\n}\n\nconst hasInitialValue = (atom) => \"init\" in atom;\nconst isActuallyWritableAtom = (atom) => !!atom.write;\nconst cancelPromiseMap = /* @__PURE__ */ new WeakMap();\nconst registerCancelPromise = (promise, cancel) => {\n  cancelPromiseMap.set(promise, cancel);\n  promise.catch(() => {\n  }).finally(() => cancelPromiseMap.delete(promise));\n};\nconst cancelPromise = (promise, next) => {\n  const cancel = cancelPromiseMap.get(promise);\n  if (cancel) {\n    cancelPromiseMap.delete(promise);\n    cancel(next);\n  }\n};\nconst resolvePromise = (promise, value) => {\n  promise.status = \"fulfilled\";\n  promise.value = value;\n};\nconst rejectPromise = (promise, e) => {\n  promise.status = \"rejected\";\n  promise.reason = e;\n};\nconst isEqualAtomValue = (a, b) => \"v\" in a && \"v\" in b && Object.is(a.v, b.v);\nconst isEqualAtomError = (a, b) => \"e\" in a && \"e\" in b && Object.is(a.e, b.e);\nconst hasPromiseAtomValue = (a) => \"v\" in a && a.v instanceof Promise;\nconst returnAtomValue = (atomState) => {\n  if (\"e\" in atomState) {\n    throw atomState.e;\n  }\n  return atomState.v;\n};\nconst createStore = () => {\n  const atomStateMap = /* @__PURE__ */ new WeakMap();\n  const mountedMap = /* @__PURE__ */ new WeakMap();\n  const pendingMap = /* @__PURE__ */ new Map();\n  let stateListeners;\n  let mountedAtoms;\n  if ((import.meta.env && import.meta.env.MODE) !== \"production\") {\n    stateListeners = /* @__PURE__ */ new Set();\n    mountedAtoms = /* @__PURE__ */ new Set();\n  }\n  const getAtomState = (atom) => atomStateMap.get(atom);\n  const setAtomState = (atom, atomState) => {\n    if ((import.meta.env && import.meta.env.MODE) !== \"production\") {\n      Object.freeze(atomState);\n    }\n    const prevAtomState = atomStateMap.get(atom);\n    atomStateMap.set(atom, atomState);\n    if (!pendingMap.has(atom)) {\n      pendingMap.set(atom, prevAtomState);\n    }\n    if (prevAtomState && hasPromiseAtomValue(prevAtomState)) {\n      const next = \"v\" in atomState ? atomState.v instanceof Promise ? atomState.v : Promise.resolve(atomState.v) : Promise.reject(atomState.e);\n      cancelPromise(prevAtomState.v, next);\n    }\n  };\n  const updateDependencies = (atom, nextAtomState, depSet) => {\n    const dependencies = /* @__PURE__ */ new Map();\n    let changed = false;\n    depSet.forEach((a) => {\n      const aState = a === atom ? nextAtomState : getAtomState(a);\n      if (aState) {\n        dependencies.set(a, aState);\n        if (nextAtomState.d.get(a) !== aState) {\n          changed = true;\n        }\n      } else if ((import.meta.env && import.meta.env.MODE) !== \"production\") {\n        console.warn(\"[Bug] atom state not found\");\n      }\n    });\n    if (changed || nextAtomState.d.size !== dependencies.size) {\n      nextAtomState.d = dependencies;\n    }\n  };\n  const setAtomValue = (atom, value, depSet) => {\n    const prevAtomState = getAtomState(atom);\n    const nextAtomState = {\n      d: (prevAtomState == null ? void 0 : prevAtomState.d) || /* @__PURE__ */ new Map(),\n      v: value\n    };\n    if (depSet) {\n      updateDependencies(atom, nextAtomState, depSet);\n    }\n    if (prevAtomState && isEqualAtomValue(prevAtomState, nextAtomState) && prevAtomState.d === nextAtomState.d) {\n      return prevAtomState;\n    }\n    setAtomState(atom, nextAtomState);\n    return nextAtomState;\n  };\n  const setAtomError = (atom, error, depSet) => {\n    const prevAtomState = getAtomState(atom);\n    const nextAtomState = {\n      d: (prevAtomState == null ? void 0 : prevAtomState.d) || /* @__PURE__ */ new Map(),\n      e: error\n    };\n    if (depSet) {\n      updateDependencies(atom, nextAtomState, depSet);\n    }\n    if (prevAtomState && isEqualAtomError(prevAtomState, nextAtomState) && prevAtomState.d === nextAtomState.d) {\n      return prevAtomState;\n    }\n    setAtomState(atom, nextAtomState);\n    return nextAtomState;\n  };\n  const readAtomState = (atom) => {\n    const atomState = getAtomState(atom);\n    if (atomState) {\n      atomState.d.forEach((_, a) => {\n        if (a !== atom && !mountedMap.has(a)) {\n          readAtomState(a);\n        }\n      });\n      if (Array.from(atomState.d).every(\n        ([a, s]) => a === atom || getAtomState(a) === s\n      )) {\n        return atomState;\n      }\n    }\n    const depSet = /* @__PURE__ */ new Set();\n    let isSync = true;\n    const getter = (a) => {\n      depSet.add(a);\n      if (a === atom) {\n        const aState2 = getAtomState(a);\n        if (aState2) {\n          return returnAtomValue(aState2);\n        }\n        if (hasInitialValue(a)) {\n          return a.init;\n        }\n        throw new Error(\"no atom init\");\n      }\n      const aState = readAtomState(a);\n      return returnAtomValue(aState);\n    };\n    let controller;\n    let setSelf;\n    const options = {\n      get signal() {\n        if (!controller) {\n          controller = new AbortController();\n        }\n        return controller.signal;\n      },\n      get setSelf() {\n        if ((import.meta.env && import.meta.env.MODE) !== \"production\" && !isActuallyWritableAtom(atom)) {\n          console.warn(\"setSelf function cannot be used with read-only atom\");\n        }\n        if (!setSelf && isActuallyWritableAtom(atom)) {\n          setSelf = (...args) => {\n            if ((import.meta.env && import.meta.env.MODE) !== \"production\" && isSync) {\n              console.warn(\"setSelf function cannot be called in sync\");\n            }\n            if (!isSync) {\n              return writeAtom(atom, ...args);\n            }\n          };\n        }\n        return setSelf;\n      }\n    };\n    try {\n      const value = atom.read(getter, options);\n      if (value instanceof Promise) {\n        let continuePromise;\n        const promise = new Promise((resolve, reject) => {\n          let settled = false;\n          value.then(\n            (v) => {\n              if (!settled) {\n                resolvePromise(promise, v);\n                resolve(v);\n              }\n            },\n            (e) => {\n              if (!settled) {\n                rejectPromise(promise, e);\n                reject(e);\n              }\n            }\n          ).finally(() => {\n            if (!settled) {\n              settled = true;\n              setAtomValue(atom, promise, depSet);\n            }\n          });\n          continuePromise = (next) => {\n            if (!settled) {\n              settled = true;\n              next.then(\n                (v) => resolvePromise(promise, v),\n                (e) => rejectPromise(promise, e)\n              );\n              resolve(next);\n            }\n          };\n        });\n        promise.status = \"pending\";\n        registerCancelPromise(promise, (next) => {\n          if (next) {\n            continuePromise(next);\n          }\n          controller == null ? void 0 : controller.abort();\n        });\n        return setAtomValue(atom, promise, depSet);\n      }\n      return setAtomValue(atom, value, depSet);\n    } catch (error) {\n      return setAtomError(atom, error, depSet);\n    } finally {\n      isSync = false;\n    }\n  };\n  const readAtom = (atom) => returnAtomValue(readAtomState(atom));\n  const addAtom = (atom) => {\n    let mounted = mountedMap.get(atom);\n    if (!mounted) {\n      mounted = mountAtom(atom);\n    }\n    return mounted;\n  };\n  const canUnmountAtom = (atom, mounted) => !mounted.l.size && (!mounted.t.size || mounted.t.size === 1 && mounted.t.has(atom));\n  const delAtom = (atom) => {\n    const mounted = mountedMap.get(atom);\n    if (mounted && canUnmountAtom(atom, mounted)) {\n      unmountAtom(atom);\n    }\n  };\n  const recomputeDependents = (atom) => {\n    const mounted = mountedMap.get(atom);\n    mounted == null ? void 0 : mounted.t.forEach((dependent) => {\n      if (dependent !== atom) {\n        const prevAtomState = getAtomState(dependent);\n        const nextAtomState = readAtomState(dependent);\n        if (!prevAtomState || !isEqualAtomValue(prevAtomState, nextAtomState)) {\n          recomputeDependents(dependent);\n        }\n      }\n    });\n  };\n  const writeAtomState = (atom, ...args) => {\n    let isSync = true;\n    const getter = (a) => returnAtomValue(readAtomState(a));\n    const setter = (a, ...args2) => {\n      let r;\n      if (a === atom) {\n        if (!hasInitialValue(a)) {\n          throw new Error(\"atom not writable\");\n        }\n        const prevAtomState = getAtomState(a);\n        const nextAtomState = setAtomValue(a, args2[0]);\n        if (!prevAtomState || !isEqualAtomValue(prevAtomState, nextAtomState)) {\n          recomputeDependents(a);\n        }\n      } else {\n        r = writeAtomState(a, ...args2);\n      }\n      if (!isSync) {\n        flushPending();\n      }\n      return r;\n    };\n    const result = atom.write(getter, setter, ...args);\n    isSync = false;\n    return result;\n  };\n  const writeAtom = (atom, ...args) => {\n    const result = writeAtomState(atom, ...args);\n    flushPending();\n    return result;\n  };\n  const mountAtom = (atom, initialDependent) => {\n    const mounted = {\n      t: new Set(initialDependent && [initialDependent]),\n      l: /* @__PURE__ */ new Set()\n    };\n    mountedMap.set(atom, mounted);\n    if ((import.meta.env && import.meta.env.MODE) !== \"production\") {\n      mountedAtoms.add(atom);\n    }\n    readAtomState(atom).d.forEach((_, a) => {\n      const aMounted = mountedMap.get(a);\n      if (aMounted) {\n        aMounted.t.add(atom);\n      } else {\n        if (a !== atom) {\n          mountAtom(a, atom);\n        }\n      }\n    });\n    readAtomState(atom);\n    if (isActuallyWritableAtom(atom) && atom.onMount) {\n      const onUnmount = atom.onMount((...args) => writeAtom(atom, ...args));\n      if (onUnmount) {\n        mounted.u = onUnmount;\n      }\n    }\n    return mounted;\n  };\n  const unmountAtom = (atom) => {\n    var _a;\n    const onUnmount = (_a = mountedMap.get(atom)) == null ? void 0 : _a.u;\n    if (onUnmount) {\n      onUnmount();\n    }\n    mountedMap.delete(atom);\n    if ((import.meta.env && import.meta.env.MODE) !== \"production\") {\n      mountedAtoms.delete(atom);\n    }\n    const atomState = getAtomState(atom);\n    if (atomState) {\n      if (hasPromiseAtomValue(atomState)) {\n        cancelPromise(atomState.v);\n      }\n      atomState.d.forEach((_, a) => {\n        if (a !== atom) {\n          const mounted = mountedMap.get(a);\n          if (mounted) {\n            mounted.t.delete(atom);\n            if (canUnmountAtom(a, mounted)) {\n              unmountAtom(a);\n            }\n          }\n        }\n      });\n    } else if ((import.meta.env && import.meta.env.MODE) !== \"production\") {\n      console.warn(\"[Bug] could not find atom state to unmount\", atom);\n    }\n  };\n  const mountDependencies = (atom, atomState, prevDependencies) => {\n    const depSet = new Set(atomState.d.keys());\n    prevDependencies == null ? void 0 : prevDependencies.forEach((_, a) => {\n      if (depSet.has(a)) {\n        depSet.delete(a);\n        return;\n      }\n      const mounted = mountedMap.get(a);\n      if (mounted) {\n        mounted.t.delete(atom);\n        if (canUnmountAtom(a, mounted)) {\n          unmountAtom(a);\n        }\n      }\n    });\n    depSet.forEach((a) => {\n      const mounted = mountedMap.get(a);\n      if (mounted) {\n        mounted.t.add(atom);\n      } else if (mountedMap.has(atom)) {\n        mountAtom(a, atom);\n      }\n    });\n  };\n  const flushPending = () => {\n    while (pendingMap.size) {\n      const pending = Array.from(pendingMap);\n      pendingMap.clear();\n      pending.forEach(([atom, prevAtomState]) => {\n        const atomState = getAtomState(atom);\n        if (atomState) {\n          if (atomState.d !== (prevAtomState == null ? void 0 : prevAtomState.d)) {\n            mountDependencies(atom, atomState, prevAtomState == null ? void 0 : prevAtomState.d);\n          }\n          const mounted = mountedMap.get(atom);\n          if (mounted && !// TODO This seems pretty hacky. Hope to fix it.\n          // Maybe we could `mountDependencies` in `setAtomState`?\n          (prevAtomState && !hasPromiseAtomValue(prevAtomState) && (isEqualAtomValue(prevAtomState, atomState) || isEqualAtomError(prevAtomState, atomState)))) {\n            mounted.l.forEach((listener) => listener());\n          }\n        } else if ((import.meta.env && import.meta.env.MODE) !== \"production\") {\n          console.warn(\"[Bug] no atom state to flush\");\n        }\n      });\n    }\n    if ((import.meta.env && import.meta.env.MODE) !== \"production\") {\n      stateListeners.forEach((l) => l());\n    }\n  };\n  const subscribeAtom = (atom, listener) => {\n    const mounted = addAtom(atom);\n    flushPending();\n    const listeners = mounted.l;\n    listeners.add(listener);\n    return () => {\n      listeners.delete(listener);\n      delAtom(atom);\n    };\n  };\n  if ((import.meta.env && import.meta.env.MODE) !== \"production\") {\n    return {\n      get: readAtom,\n      set: writeAtom,\n      sub: subscribeAtom,\n      // store dev methods (these are tentative and subject to change)\n      dev_subscribe_state: (l) => {\n        stateListeners.add(l);\n        return () => {\n          stateListeners.delete(l);\n        };\n      },\n      dev_get_mounted_atoms: () => mountedAtoms.values(),\n      dev_get_atom_state: (a) => atomStateMap.get(a),\n      dev_get_mounted: (a) => mountedMap.get(a),\n      dev_restore_atoms: (values) => {\n        for (const [atom, value] of values) {\n          if (hasInitialValue(atom)) {\n            setAtomValue(atom, value);\n            recomputeDependents(atom);\n          }\n        }\n        flushPending();\n      }\n    };\n  }\n  return {\n    get: readAtom,\n    set: writeAtom,\n    sub: subscribeAtom\n  };\n};\nlet defaultStore;\nconst getDefaultStore = () => {\n  if (!defaultStore) {\n    defaultStore = createStore();\n  }\n  return defaultStore;\n};\n\nexport { atom, createStore, getDefaultStore };\n","import { createContext, useState, useEffect, useRef, createElement, useContext, useReducer, useDebugValue, useCallback } from 'react';\nimport { atom as atom$1 } from 'jotai/vanilla';\n\nconst SUSPENSE_PROMISE = Symbol();\nconst isSuspensePromise = (promise) => !!promise[SUSPENSE_PROMISE];\nconst isSuspensePromiseAlreadyCancelled = (suspensePromise) => !suspensePromise[SUSPENSE_PROMISE].c;\nconst cancelSuspensePromise = (suspensePromise) => {\n  var _a;\n  const { b: basePromise, c: cancelPromise } = suspensePromise[SUSPENSE_PROMISE];\n  if (cancelPromise) {\n    cancelPromise();\n    (_a = promiseAbortMap.get(basePromise)) == null ? void 0 : _a();\n  }\n};\nconst isEqualSuspensePromise = (oldSuspensePromise, newSuspensePromise) => {\n  const oldOriginalPromise = oldSuspensePromise[SUSPENSE_PROMISE].o;\n  const newOriginalPromise = newSuspensePromise[SUSPENSE_PROMISE].o;\n  return oldOriginalPromise === newOriginalPromise || oldSuspensePromise === newOriginalPromise || isSuspensePromise(oldOriginalPromise) && isEqualSuspensePromise(oldOriginalPromise, newSuspensePromise);\n};\nconst createSuspensePromise = (basePromise, promise) => {\n  const suspensePromiseExtra = {\n    b: basePromise,\n    o: promise,\n    c: null\n  };\n  const suspensePromise = new Promise((resolve) => {\n    suspensePromiseExtra.c = () => {\n      suspensePromiseExtra.c = null;\n      resolve();\n    };\n    promise.finally(suspensePromiseExtra.c);\n  });\n  suspensePromise[SUSPENSE_PROMISE] = suspensePromiseExtra;\n  return suspensePromise;\n};\nconst copySuspensePromise = (suspensePromise) => createSuspensePromise(\n  suspensePromise[SUSPENSE_PROMISE].b,\n  suspensePromise[SUSPENSE_PROMISE].o\n);\nconst promiseAbortMap = /* @__PURE__ */ new WeakMap();\nconst registerPromiseAbort = (basePromise, abort) => {\n  promiseAbortMap.set(basePromise, abort);\n};\n\nconst hasInitialValue = (atom) => \"init\" in atom;\nconst READ_ATOM = \"r\";\nconst WRITE_ATOM = \"w\";\nconst COMMIT_ATOM = \"c\";\nconst SUBSCRIBE_ATOM = \"s\";\nconst RESTORE_ATOMS = \"h\";\nconst DEV_SUBSCRIBE_STATE = \"n\";\nconst DEV_GET_MOUNTED_ATOMS = \"l\";\nconst DEV_GET_ATOM_STATE = \"a\";\nconst DEV_GET_MOUNTED = \"m\";\nconst createStore = (initialValues) => {\n  const committedAtomStateMap = /* @__PURE__ */ new WeakMap();\n  const mountedMap = /* @__PURE__ */ new WeakMap();\n  const pendingMap = /* @__PURE__ */ new Map();\n  let stateListeners;\n  let mountedAtoms;\n  if ((import.meta.env && import.meta.env.MODE) !== \"production\") {\n    stateListeners = /* @__PURE__ */ new Set();\n    mountedAtoms = /* @__PURE__ */ new Set();\n  }\n  if (initialValues) {\n    for (const [atom, value] of initialValues) {\n      const atomState = {\n        v: value,\n        r: 0,\n        y: true,\n        // not invalidated\n        d: /* @__PURE__ */ new Map()\n      };\n      if ((import.meta.env && import.meta.env.MODE) !== \"production\") {\n        Object.freeze(atomState);\n        if (!hasInitialValue(atom)) {\n          console.warn(\n            \"Found initial value for derived atom which can cause unexpected behavior\",\n            atom\n          );\n        }\n      }\n      committedAtomStateMap.set(atom, atomState);\n    }\n  }\n  const suspensePromiseCacheMap = /* @__PURE__ */ new WeakMap();\n  const addSuspensePromiseToCache = (version, atom, suspensePromise) => {\n    let cache = suspensePromiseCacheMap.get(atom);\n    if (!cache) {\n      cache = /* @__PURE__ */ new Map();\n      suspensePromiseCacheMap.set(atom, cache);\n    }\n    suspensePromise.then(() => {\n      if (cache.get(version) === suspensePromise) {\n        cache.delete(version);\n        if (!cache.size) {\n          suspensePromiseCacheMap.delete(atom);\n        }\n      }\n    });\n    cache.set(version, suspensePromise);\n  };\n  const cancelAllSuspensePromiseInCache = (atom) => {\n    const versionSet = /* @__PURE__ */ new Set();\n    const cache = suspensePromiseCacheMap.get(atom);\n    if (cache) {\n      suspensePromiseCacheMap.delete(atom);\n      cache.forEach((suspensePromise, version) => {\n        cancelSuspensePromise(suspensePromise);\n        versionSet.add(version);\n      });\n    }\n    return versionSet;\n  };\n  const versionedAtomStateMapMap = /* @__PURE__ */ new WeakMap();\n  const getVersionedAtomStateMap = (version) => {\n    let versionedAtomStateMap = versionedAtomStateMapMap.get(version);\n    if (!versionedAtomStateMap) {\n      versionedAtomStateMap = /* @__PURE__ */ new Map();\n      versionedAtomStateMapMap.set(version, versionedAtomStateMap);\n    }\n    return versionedAtomStateMap;\n  };\n  const getAtomState = (version, atom) => {\n    if (version) {\n      const versionedAtomStateMap = getVersionedAtomStateMap(version);\n      let atomState = versionedAtomStateMap.get(atom);\n      if (!atomState) {\n        atomState = getAtomState(version.p, atom);\n        if (atomState && \"p\" in atomState && isSuspensePromiseAlreadyCancelled(atomState.p)) {\n          atomState = void 0;\n        }\n        if (atomState) {\n          versionedAtomStateMap.set(atom, atomState);\n        }\n      }\n      return atomState;\n    }\n    return committedAtomStateMap.get(atom);\n  };\n  const setAtomState = (version, atom, atomState) => {\n    if ((import.meta.env && import.meta.env.MODE) !== \"production\") {\n      Object.freeze(atomState);\n    }\n    if (version) {\n      const versionedAtomStateMap = getVersionedAtomStateMap(version);\n      versionedAtomStateMap.set(atom, atomState);\n    } else {\n      const prevAtomState = committedAtomStateMap.get(atom);\n      committedAtomStateMap.set(atom, atomState);\n      if (!pendingMap.has(atom)) {\n        pendingMap.set(atom, prevAtomState);\n      }\n    }\n  };\n  const createReadDependencies = (version, prevReadDependencies = /* @__PURE__ */ new Map(), dependencies) => {\n    if (!dependencies) {\n      return prevReadDependencies;\n    }\n    const readDependencies = /* @__PURE__ */ new Map();\n    let changed = false;\n    dependencies.forEach((atom) => {\n      var _a;\n      const revision = ((_a = getAtomState(version, atom)) == null ? void 0 : _a.r) || 0;\n      readDependencies.set(atom, revision);\n      if (prevReadDependencies.get(atom) !== revision) {\n        changed = true;\n      }\n    });\n    if (prevReadDependencies.size === readDependencies.size && !changed) {\n      return prevReadDependencies;\n    }\n    return readDependencies;\n  };\n  const setAtomValue = (version, atom, value, dependencies, suspensePromise) => {\n    const atomState = getAtomState(version, atom);\n    if (atomState) {\n      if (suspensePromise && (!(\"p\" in atomState) || !isEqualSuspensePromise(atomState.p, suspensePromise))) {\n        return atomState;\n      }\n      if (\"p\" in atomState) {\n        cancelSuspensePromise(atomState.p);\n      }\n    }\n    const nextAtomState = {\n      v: value,\n      r: (atomState == null ? void 0 : atomState.r) || 0,\n      y: true,\n      // not invalidated\n      d: createReadDependencies(version, atomState == null ? void 0 : atomState.d, dependencies)\n    };\n    let changed = !(atomState == null ? void 0 : atomState.y);\n    if (!atomState || !(\"v\" in atomState) || // new value, or\n    !Object.is(atomState.v, value)) {\n      changed = true;\n      ++nextAtomState.r;\n      if (nextAtomState.d.has(atom)) {\n        nextAtomState.d = new Map(nextAtomState.d).set(atom, nextAtomState.r);\n      }\n    } else if (nextAtomState.d !== atomState.d && (nextAtomState.d.size !== atomState.d.size || !Array.from(nextAtomState.d.keys()).every((a) => atomState.d.has(a)))) {\n      changed = true;\n      Promise.resolve().then(() => {\n        flushPending(version);\n      });\n    }\n    if (atomState && !changed) {\n      return atomState;\n    }\n    setAtomState(version, atom, nextAtomState);\n    return nextAtomState;\n  };\n  const setAtomReadError = (version, atom, error, dependencies, suspensePromise) => {\n    const atomState = getAtomState(version, atom);\n    if (atomState) {\n      if (suspensePromise && (!(\"p\" in atomState) || !isEqualSuspensePromise(atomState.p, suspensePromise))) {\n        return atomState;\n      }\n      if (\"p\" in atomState) {\n        cancelSuspensePromise(atomState.p);\n      }\n    }\n    const nextAtomState = {\n      e: error,\n      // set read error\n      r: ((atomState == null ? void 0 : atomState.r) || 0) + 1,\n      y: true,\n      // not invalidated\n      d: createReadDependencies(version, atomState == null ? void 0 : atomState.d, dependencies)\n    };\n    setAtomState(version, atom, nextAtomState);\n    return nextAtomState;\n  };\n  const setAtomSuspensePromise = (version, atom, suspensePromise, dependencies) => {\n    const atomState = getAtomState(version, atom);\n    if (atomState && \"p\" in atomState) {\n      if (isEqualSuspensePromise(atomState.p, suspensePromise) && !isSuspensePromiseAlreadyCancelled(atomState.p)) {\n        if (!atomState.y) {\n          return { ...atomState, y: true };\n        }\n        return atomState;\n      }\n      cancelSuspensePromise(atomState.p);\n    }\n    addSuspensePromiseToCache(version, atom, suspensePromise);\n    const nextAtomState = {\n      p: suspensePromise,\n      r: ((atomState == null ? void 0 : atomState.r) || 0) + 1,\n      y: true,\n      // not invalidated\n      d: createReadDependencies(version, atomState == null ? void 0 : atomState.d, dependencies)\n    };\n    setAtomState(version, atom, nextAtomState);\n    return nextAtomState;\n  };\n  const setAtomPromiseOrValue = (version, atom, promiseOrValue, dependencies) => {\n    if (promiseOrValue instanceof Promise) {\n      const suspensePromise = createSuspensePromise(\n        promiseOrValue,\n        promiseOrValue.then((value) => {\n          setAtomValue(version, atom, value, dependencies, suspensePromise);\n        }).catch((e) => {\n          if (e instanceof Promise) {\n            if (isSuspensePromise(e)) {\n              return e.then(() => {\n                readAtomState(version, atom, true);\n              });\n            }\n            return e;\n          }\n          setAtomReadError(version, atom, e, dependencies, suspensePromise);\n        })\n      );\n      return setAtomSuspensePromise(\n        version,\n        atom,\n        suspensePromise,\n        dependencies\n      );\n    }\n    return setAtomValue(\n      version,\n      atom,\n      promiseOrValue,\n      dependencies\n    );\n  };\n  const setAtomInvalidated = (version, atom) => {\n    const atomState = getAtomState(version, atom);\n    if (atomState) {\n      const nextAtomState = {\n        ...atomState,\n        // copy everything\n        y: false\n        // invalidated\n      };\n      setAtomState(version, atom, nextAtomState);\n    } else if ((import.meta.env && import.meta.env.MODE) !== \"production\") {\n      console.warn(\"[Bug] could not invalidate non existing atom\", atom);\n    }\n  };\n  const readAtomState = (version, atom, force) => {\n    if (!force) {\n      const atomState = getAtomState(version, atom);\n      if (atomState) {\n        if (atomState.y && // not invalidated\n        \"p\" in atomState && !isSuspensePromiseAlreadyCancelled(atomState.p)) {\n          return atomState;\n        }\n        atomState.d.forEach((_, a) => {\n          if (a !== atom) {\n            if (!mountedMap.has(a)) {\n              readAtomState(version, a);\n            } else {\n              const aState = getAtomState(version, a);\n              if (aState && !aState.y) {\n                readAtomState(version, a);\n              }\n            }\n          }\n        });\n        if (Array.from(atomState.d).every(([a, r]) => {\n          const aState = getAtomState(version, a);\n          return aState && !(\"p\" in aState) && // has no suspense promise\n          aState.r === r;\n        })) {\n          if (!atomState.y) {\n            return { ...atomState, y: true };\n          }\n          return atomState;\n        }\n      }\n    }\n    const dependencies = /* @__PURE__ */ new Set();\n    try {\n      const promiseOrValue = atom.read((a) => {\n        dependencies.add(a);\n        const aState = a === atom ? getAtomState(version, a) : readAtomState(version, a);\n        if (aState) {\n          if (\"e\" in aState) {\n            throw aState.e;\n          }\n          if (\"p\" in aState) {\n            throw aState.p;\n          }\n          return aState.v;\n        }\n        if (hasInitialValue(a)) {\n          return a.init;\n        }\n        throw new Error(\"no atom init\");\n      });\n      return setAtomPromiseOrValue(version, atom, promiseOrValue, dependencies);\n    } catch (errorOrPromise) {\n      if (errorOrPromise instanceof Promise) {\n        const suspensePromise = isSuspensePromise(errorOrPromise) && isSuspensePromiseAlreadyCancelled(errorOrPromise) ? copySuspensePromise(errorOrPromise) : createSuspensePromise(errorOrPromise, errorOrPromise);\n        return setAtomSuspensePromise(\n          version,\n          atom,\n          suspensePromise,\n          dependencies\n        );\n      }\n      return setAtomReadError(version, atom, errorOrPromise, dependencies);\n    }\n  };\n  const readAtom = (readingAtom, version) => {\n    const atomState = readAtomState(version, readingAtom);\n    return atomState;\n  };\n  const addAtom = (version, addingAtom) => {\n    let mounted = mountedMap.get(addingAtom);\n    if (!mounted) {\n      mounted = mountAtom(version, addingAtom);\n    }\n    return mounted;\n  };\n  const canUnmountAtom = (atom, mounted) => !mounted.l.size && (!mounted.t.size || mounted.t.size === 1 && mounted.t.has(atom));\n  const delAtom = (version, deletingAtom) => {\n    const mounted = mountedMap.get(deletingAtom);\n    if (mounted && canUnmountAtom(deletingAtom, mounted)) {\n      unmountAtom(version, deletingAtom);\n    }\n  };\n  const invalidateDependents = (version, atom) => {\n    const mounted = mountedMap.get(atom);\n    mounted == null ? void 0 : mounted.t.forEach((dependent) => {\n      if (dependent !== atom) {\n        setAtomInvalidated(version, dependent);\n        invalidateDependents(version, dependent);\n      }\n    });\n  };\n  const writeAtomState = (version, atom, update) => {\n    let isSync = true;\n    const writeGetter = (a, options) => {\n      const aState = readAtomState(version, a);\n      if (\"e\" in aState) {\n        throw aState.e;\n      }\n      if (\"p\" in aState) {\n        if (options == null ? void 0 : options.unstable_promise) {\n          return aState.p.then(() => {\n            const s = getAtomState(version, a);\n            if (s && \"p\" in s && s.p === aState.p) {\n              return new Promise((resolve) => setTimeout(resolve)).then(\n                () => writeGetter(a, options)\n              );\n            }\n            return writeGetter(a, options);\n          });\n        }\n        if ((import.meta.env && import.meta.env.MODE) !== \"production\") {\n          console.info(\n            \"Reading pending atom state in write operation. We throw a promise for now.\",\n            a\n          );\n        }\n        throw aState.p;\n      }\n      if (\"v\" in aState) {\n        return aState.v;\n      }\n      if ((import.meta.env && import.meta.env.MODE) !== \"production\") {\n        console.warn(\n          \"[Bug] no value found while reading atom in write operation. This is probably a bug.\",\n          a\n        );\n      }\n      throw new Error(\"no value found\");\n    };\n    const setter = (a, v) => {\n      let promiseOrVoid2;\n      if (a === atom) {\n        if (!hasInitialValue(a)) {\n          throw new Error(\"atom not writable\");\n        }\n        const versionSet = cancelAllSuspensePromiseInCache(a);\n        versionSet.forEach((cancelledVersion) => {\n          if (cancelledVersion !== version) {\n            setAtomPromiseOrValue(cancelledVersion, a, v);\n          }\n        });\n        const prevAtomState = getAtomState(version, a);\n        const nextAtomState = setAtomPromiseOrValue(version, a, v);\n        if (prevAtomState !== nextAtomState) {\n          invalidateDependents(version, a);\n        }\n      } else {\n        promiseOrVoid2 = writeAtomState(version, a, v);\n      }\n      if (!isSync) {\n        flushPending(version);\n      }\n      return promiseOrVoid2;\n    };\n    const promiseOrVoid = atom.write(writeGetter, setter, update);\n    isSync = false;\n    return promiseOrVoid;\n  };\n  const writeAtom = (writingAtom, update, version) => {\n    const promiseOrVoid = writeAtomState(version, writingAtom, update);\n    flushPending(version);\n    return promiseOrVoid;\n  };\n  const isActuallyWritableAtom = (atom) => !!atom.write;\n  const mountAtom = (version, atom, initialDependent) => {\n    const mounted = {\n      t: new Set(initialDependent && [initialDependent]),\n      l: /* @__PURE__ */ new Set()\n    };\n    mountedMap.set(atom, mounted);\n    if ((import.meta.env && import.meta.env.MODE) !== \"production\") {\n      mountedAtoms.add(atom);\n    }\n    const atomState = readAtomState(void 0, atom);\n    atomState.d.forEach((_, a) => {\n      const aMounted = mountedMap.get(a);\n      if (aMounted) {\n        aMounted.t.add(atom);\n      } else {\n        if (a !== atom) {\n          mountAtom(version, a, atom);\n        }\n      }\n    });\n    if (isActuallyWritableAtom(atom) && atom.onMount) {\n      const setAtom = (update) => writeAtom(atom, update, version);\n      const onUnmount = atom.onMount(setAtom);\n      version = void 0;\n      if (onUnmount) {\n        mounted.u = onUnmount;\n      }\n    }\n    return mounted;\n  };\n  const unmountAtom = (version, atom) => {\n    var _a;\n    const onUnmount = (_a = mountedMap.get(atom)) == null ? void 0 : _a.u;\n    if (onUnmount) {\n      onUnmount();\n    }\n    mountedMap.delete(atom);\n    if ((import.meta.env && import.meta.env.MODE) !== \"production\") {\n      mountedAtoms.delete(atom);\n    }\n    const atomState = getAtomState(version, atom);\n    if (atomState) {\n      if (\"p\" in atomState) {\n        cancelSuspensePromise(atomState.p);\n      }\n      atomState.d.forEach((_, a) => {\n        if (a !== atom) {\n          const mounted = mountedMap.get(a);\n          if (mounted) {\n            mounted.t.delete(atom);\n            if (canUnmountAtom(a, mounted)) {\n              unmountAtom(version, a);\n            }\n          }\n        }\n      });\n    } else if ((import.meta.env && import.meta.env.MODE) !== \"production\") {\n      console.warn(\"[Bug] could not find atom state to unmount\", atom);\n    }\n  };\n  const mountDependencies = (version, atom, atomState, prevReadDependencies) => {\n    const dependencies = new Set(atomState.d.keys());\n    prevReadDependencies == null ? void 0 : prevReadDependencies.forEach((_, a) => {\n      if (dependencies.has(a)) {\n        dependencies.delete(a);\n        return;\n      }\n      const mounted = mountedMap.get(a);\n      if (mounted) {\n        mounted.t.delete(atom);\n        if (canUnmountAtom(a, mounted)) {\n          unmountAtom(version, a);\n        }\n      }\n    });\n    dependencies.forEach((a) => {\n      const mounted = mountedMap.get(a);\n      if (mounted) {\n        mounted.t.add(atom);\n      } else if (mountedMap.has(atom)) {\n        mountAtom(version, a, atom);\n      }\n    });\n  };\n  const flushPending = (version) => {\n    if (version) {\n      const versionedAtomStateMap = getVersionedAtomStateMap(version);\n      versionedAtomStateMap.forEach((atomState, atom) => {\n        const committedAtomState = committedAtomStateMap.get(atom);\n        if (atomState !== committedAtomState) {\n          const mounted = mountedMap.get(atom);\n          mounted == null ? void 0 : mounted.l.forEach((listener) => listener(version));\n        }\n      });\n      return;\n    }\n    while (pendingMap.size) {\n      const pending = Array.from(pendingMap);\n      pendingMap.clear();\n      pending.forEach(([atom, prevAtomState]) => {\n        const atomState = getAtomState(void 0, atom);\n        if (atomState && atomState.d !== (prevAtomState == null ? void 0 : prevAtomState.d)) {\n          mountDependencies(void 0, atom, atomState, prevAtomState == null ? void 0 : prevAtomState.d);\n        }\n        if (prevAtomState && !prevAtomState.y && // invalidated\n        (atomState == null ? void 0 : atomState.y)) {\n          return;\n        }\n        const mounted = mountedMap.get(atom);\n        mounted == null ? void 0 : mounted.l.forEach((listener) => listener());\n      });\n    }\n    if ((import.meta.env && import.meta.env.MODE) !== \"production\") {\n      stateListeners.forEach((l) => l());\n    }\n  };\n  const commitVersionedAtomStateMap = (version) => {\n    const versionedAtomStateMap = getVersionedAtomStateMap(version);\n    versionedAtomStateMap.forEach((atomState, atom) => {\n      const prevAtomState = committedAtomStateMap.get(atom);\n      if (!prevAtomState || atomState.r > prevAtomState.r || atomState.y !== prevAtomState.y || atomState.r === prevAtomState.r && atomState.d !== prevAtomState.d) {\n        committedAtomStateMap.set(atom, atomState);\n        if (atomState.d !== (prevAtomState == null ? void 0 : prevAtomState.d)) {\n          mountDependencies(version, atom, atomState, prevAtomState == null ? void 0 : prevAtomState.d);\n        }\n      }\n    });\n  };\n  const commitAtom = (_atom, version) => {\n    if (version) {\n      commitVersionedAtomStateMap(version);\n    }\n    flushPending(void 0);\n  };\n  const subscribeAtom = (atom, callback, version) => {\n    const mounted = addAtom(version, atom);\n    const listeners = mounted.l;\n    listeners.add(callback);\n    return () => {\n      listeners.delete(callback);\n      delAtom(version, atom);\n    };\n  };\n  const restoreAtoms = (values, version) => {\n    for (const [atom, value] of values) {\n      if (hasInitialValue(atom)) {\n        setAtomPromiseOrValue(version, atom, value);\n        invalidateDependents(version, atom);\n      }\n    }\n    flushPending(version);\n  };\n  if ((import.meta.env && import.meta.env.MODE) !== \"production\") {\n    return {\n      [READ_ATOM]: readAtom,\n      [WRITE_ATOM]: writeAtom,\n      [COMMIT_ATOM]: commitAtom,\n      [SUBSCRIBE_ATOM]: subscribeAtom,\n      [RESTORE_ATOMS]: restoreAtoms,\n      [DEV_SUBSCRIBE_STATE]: (l) => {\n        stateListeners.add(l);\n        return () => {\n          stateListeners.delete(l);\n        };\n      },\n      [DEV_GET_MOUNTED_ATOMS]: () => mountedAtoms.values(),\n      [DEV_GET_ATOM_STATE]: (a) => committedAtomStateMap.get(a),\n      [DEV_GET_MOUNTED]: (a) => mountedMap.get(a)\n    };\n  }\n  return {\n    [READ_ATOM]: readAtom,\n    [WRITE_ATOM]: writeAtom,\n    [COMMIT_ATOM]: commitAtom,\n    [SUBSCRIBE_ATOM]: subscribeAtom,\n    [RESTORE_ATOMS]: restoreAtoms\n  };\n};\nconst createStoreForExport = (initialValues) => {\n  const store = createStore(initialValues);\n  const get = (atom) => {\n    const atomState = store[READ_ATOM](atom);\n    if (\"e\" in atomState) {\n      throw atomState.e;\n    }\n    if (\"p\" in atomState) {\n      return void 0;\n    }\n    return atomState.v;\n  };\n  const asyncGet = (atom) => new Promise((resolve, reject) => {\n    const atomState = store[READ_ATOM](atom);\n    if (\"e\" in atomState) {\n      reject(atomState.e);\n    } else if (\"p\" in atomState) {\n      resolve(atomState.p.then(() => asyncGet(atom)));\n    } else {\n      resolve(atomState.v);\n    }\n  });\n  const set = (atom, update) => store[WRITE_ATOM](atom, update);\n  const sub = (atom, callback) => store[SUBSCRIBE_ATOM](atom, callback);\n  return {\n    get,\n    asyncGet,\n    set,\n    sub,\n    SECRET_INTERNAL_store: store\n  };\n};\n\nconst createScopeContainer = (initialValues, unstable_createStore) => {\n  const store = unstable_createStore ? unstable_createStore(initialValues).SECRET_INTERNAL_store : createStore(initialValues);\n  return { s: store };\n};\nconst ScopeContextMap = /* @__PURE__ */ new Map();\nconst getScopeContext = (scope) => {\n  if (!ScopeContextMap.has(scope)) {\n    ScopeContextMap.set(scope, createContext(createScopeContainer()));\n  }\n  return ScopeContextMap.get(scope);\n};\n\nconst Provider = ({\n  children,\n  initialValues,\n  scope,\n  unstable_createStore,\n  unstable_enableVersionedWrite\n}) => {\n  const [version, setVersion] = useState({});\n  useEffect(() => {\n    const scopeContainer = scopeContainerRef.current;\n    if (scopeContainer.w) {\n      scopeContainer.s[COMMIT_ATOM](null, version);\n      delete version.p;\n      scopeContainer.v = version;\n    }\n  }, [version]);\n  const scopeContainerRef = useRef();\n  if (!scopeContainerRef.current) {\n    const scopeContainer = createScopeContainer(\n      initialValues,\n      unstable_createStore\n    );\n    if (unstable_enableVersionedWrite) {\n      let retrying = 0;\n      scopeContainer.w = (write) => {\n        setVersion((parentVersion) => {\n          const nextVersion = retrying ? parentVersion : { p: parentVersion };\n          write(nextVersion);\n          return nextVersion;\n        });\n      };\n      scopeContainer.v = version;\n      scopeContainer.r = (fn) => {\n        ++retrying;\n        fn();\n        --retrying;\n      };\n    }\n    scopeContainerRef.current = scopeContainer;\n  }\n  const ScopeContainerContext = getScopeContext(scope);\n  return createElement(\n    ScopeContainerContext.Provider,\n    {\n      value: scopeContainerRef.current\n    },\n    children\n  );\n};\n\nfunction atom(read, write) {\n  return atom$1(read, write);\n}\n\nfunction useAtomValue(atom, scope) {\n  const ScopeContext = getScopeContext(scope);\n  const scopeContainer = useContext(ScopeContext);\n  const { s: store, v: versionFromProvider } = scopeContainer;\n  const getAtomValue = (version2) => {\n    const atomState = store[READ_ATOM](atom, version2);\n    if ((import.meta.env && import.meta.env.MODE) !== \"production\" && !atomState.y) {\n      throw new Error(\"should not be invalidated\");\n    }\n    if (\"e\" in atomState) {\n      throw atomState.e;\n    }\n    if (\"p\" in atomState) {\n      throw atomState.p;\n    }\n    if (\"v\" in atomState) {\n      return atomState.v;\n    }\n    throw new Error(\"no atom value\");\n  };\n  const [[version, valueFromReducer, atomFromReducer], rerenderIfChanged] = useReducer(\n    (prev, nextVersion) => {\n      const nextValue = getAtomValue(nextVersion);\n      if (Object.is(prev[1], nextValue) && prev[2] === atom) {\n        return prev;\n      }\n      return [nextVersion, nextValue, atom];\n    },\n    versionFromProvider,\n    (initialVersion) => {\n      const initialValue = getAtomValue(initialVersion);\n      return [initialVersion, initialValue, atom];\n    }\n  );\n  let value = valueFromReducer;\n  if (atomFromReducer !== atom) {\n    rerenderIfChanged(version);\n    value = getAtomValue(version);\n  }\n  useEffect(() => {\n    const { v: versionFromProvider2 } = scopeContainer;\n    if (versionFromProvider2) {\n      store[COMMIT_ATOM](atom, versionFromProvider2);\n    }\n    const unsubscribe = store[SUBSCRIBE_ATOM](\n      atom,\n      rerenderIfChanged,\n      versionFromProvider2\n    );\n    rerenderIfChanged(versionFromProvider2);\n    return unsubscribe;\n  }, [store, atom, scopeContainer]);\n  useEffect(() => {\n    store[COMMIT_ATOM](atom, version);\n  });\n  useDebugValue(value);\n  return value;\n}\n\nfunction useSetAtom(atom, scope) {\n  const ScopeContext = getScopeContext(scope);\n  const { s: store, w: versionedWrite } = useContext(ScopeContext);\n  const setAtom = useCallback(\n    (update) => {\n      if ((import.meta.env && import.meta.env.MODE) !== \"production\" && !(\"write\" in atom)) {\n        throw new Error(\"not writable atom\");\n      }\n      const write = (version) => store[WRITE_ATOM](atom, update, version);\n      return versionedWrite ? versionedWrite(write) : write();\n    },\n    [store, versionedWrite, atom]\n  );\n  return setAtom;\n}\n\nfunction useAtom(atom, scope) {\n  if (\"scope\" in atom) {\n    console.warn(\n      \"atom.scope is deprecated. Please do useAtom(atom, scope) instead.\"\n    );\n    scope = atom.scope;\n  }\n  return [\n    useAtomValue(atom, scope),\n    // We do wrong type assertion here, which results in throwing an error.\n    useSetAtom(atom, scope)\n  ];\n}\n\nexport { Provider, getScopeContext as SECRET_INTERNAL_getScopeContext, registerPromiseAbort as SECRET_INTERNAL_registerPromiseAbort, atom, createStoreForExport as unstable_createStore, useAtom, useAtomValue, useSetAtom };\n","import { atom } from \"jotai\";\nexport var devToolsOpenedAtom = atom(false);\nexport var devToolsSizeAtom = atom(0.5);\nexport var devToolTabIndexAtom = atom(\"state\");","const selectorsToWarn = [':first-child', ':nth-child'];\nconst hasWarned: Record<string, true> = {};\n\nconst warn = (str: string, ...args: any[]): void =>\n  console.error(\n    `\n ██████╗ ██████╗ ███╗   ███╗██████╗ ██╗██╗     ███████╗██████╗\n██╔════╝██╔═══██╗████╗ ████║██╔══██╗██║██║     ██╔════╝██╔══██╗\n██║     ██║   ██║██╔████╔██║██████╔╝██║██║     █████╗  ██║  ██║\n██║     ██║   ██║██║╚██╔╝██║██╔═══╝ ██║██║     ██╔══╝  ██║  ██║\n╚██████╗╚██████╔╝██║ ╚═╝ ██║██║     ██║███████╗███████╗██████╔╝\n ╚═════╝ ╚═════╝ ╚═╝     ╚═╝╚═╝     ╚═╝╚══════╝╚══════╝╚═════╝\n\n  @compiled/react/runtime - DEV WARNING\n\n  ${str}\n`,\n    ...args\n  );\n\nexport const analyzeCssInDev = (sheet: string): void => {\n  if (hasWarned[sheet]) {\n    return;\n  }\n\n  const shouldWarnAboutSelectors =\n    selectorsToWarn.map((selector) => sheet.includes(selector)).filter(Boolean).length > 0;\n\n  if (shouldWarnAboutSelectors) {\n    warn(\n      `Selectors \"${selectorsToWarn.join(', ')}\" are dangerous to use when server side rendering.\n  Alternatively try and use \":nth-of-type\", or placing data attributes and targetting those instead.\n  Read https://compiledcssinjs.com/docs/server-side-rendering for more advice.`\n    );\n  }\n\n  hasWarned[sheet] = true;\n};\n","/**\n * @see https://github.com/jsdom/jsdom/releases/tag/12.0.0\n * @see https://github.com/jsdom/jsdom/issues/1537\n */\nconst isJsDomEnvironment = () =>\n  window.name === 'nodejs' ||\n  navigator?.userAgent.includes('Node.js') ||\n  navigator?.userAgent.includes('jsdom');\n/**\n * Returns `true` when inside a node environment,\n * else `false`.\n *\n * When using this it will remove any node code from the browser bundle - for example:\n *\n * ```js\n * if (isServerEnvironment()) {\n *   // This code will be removed from the browser bundle\n * }\n * ```\n */\nexport const isServerEnvironment = (): boolean => {\n  if (\n    typeof window === 'undefined' ||\n    (typeof process !== 'undefined' && process.versions != null && process.versions.node != null)\n  ) {\n    return true;\n  }\n  if (isJsDomEnvironment()) {\n    return true;\n  }\n  return false;\n};\n","import { isCacheDisabled } from './cache';\nimport type { Bucket, StyleSheetOpts } from './types';\n\n/**\n * Ordered style buckets using their short psuedo name.\n * If changes are needed make sure that it aligns with the definition in `sort-at-rule-pseudos.tsx`.\n */\nexport const styleBucketOrdering: Bucket[] = [\n  // catch-all\n  '',\n  // link\n  'l',\n  // visited\n  'v',\n  // focus-within\n  'w',\n  // focus\n  'f',\n  // focus-visible\n  'i',\n  // hover\n  'h',\n  // active\n  'a',\n  // at-rules\n  'm',\n];\n\n/**\n * Holds all style buckets in memory that have been added to the head.\n */\nconst styleBucketsInHead: Partial<Record<Bucket, HTMLStyleElement>> = {};\n\n/**\n * Maps the long pseudo name to the short pseudo name.\n * Pseudos that match here will be ordered,\n * everythin else will make their way to the catch all style bucket.\n * We reduce the pseduo name to save bundlesize.\n * Thankfully there aren't any overlaps, see: https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-classes.\n */\nconst pseudosMap: Record<string, Bucket | undefined> = {\n  // link\n  k: 'l',\n  // visited\n  ited: 'v',\n  // focus-within\n  'us-within': 'w',\n  // focus\n  us: 'f',\n  // focus-visible\n  'us-visible': 'i',\n  // hover\n  er: 'h',\n  // active\n  ive: 'a',\n};\n\n/**\n * Lazily adds a `<style>` bucket to the `<head>`.\n * This will ensure that the style buckets are ordered.\n *\n * @param bucket Bucket to insert in the head.\n */\nfunction lazyAddStyleBucketToHead(bucketName: Bucket, opts: StyleSheetOpts): HTMLStyleElement {\n  if (!styleBucketsInHead[bucketName]) {\n    let currentBucketIndex = styleBucketOrdering.indexOf(bucketName) + 1;\n    let nextBucketFromCache = null;\n\n    // Find the next bucket which we will add our new style bucket before.\n    for (; currentBucketIndex < styleBucketOrdering.length; currentBucketIndex++) {\n      const nextBucket = styleBucketsInHead[styleBucketOrdering[currentBucketIndex]];\n      if (nextBucket) {\n        nextBucketFromCache = nextBucket;\n        break;\n      }\n    }\n\n    const tag = document.createElement('style');\n    opts.nonce && tag.setAttribute('nonce', opts.nonce);\n    tag.appendChild(document.createTextNode(''));\n    document.head.insertBefore(tag, nextBucketFromCache);\n\n    if (isCacheDisabled()) {\n      return tag;\n    }\n\n    styleBucketsInHead[bucketName] = tag;\n  }\n\n  return styleBucketsInHead[bucketName]!;\n}\n\n/**\n * Gets the bucket depending on the sheet.\n * This function makes assumptions as to the form of the input class name.\n *\n * Input:\n *\n * ```\n * \"._a1234567:hover{ color: red; }\"\n * ```\n *\n * Output:\n *\n * ```\n * \"h\"\n * ```\n *\n * @param sheet styles for which we are getting the bucket\n */\nexport const getStyleBucketName = (sheet: string): Bucket => {\n  // We are grouping all the at-rules like @media, @supports etc under `m` bucket.\n  if (sheet.charCodeAt(0) === 64 /* \"@\" */) {\n    return 'm';\n  }\n\n  /**\n   * We assume that classname will always be 9 character long,\n   * using this the 10th character could be a pseudo declaration.\n   */\n  if (sheet.charCodeAt(10) === 58 /* \":\" */) {\n    // We send through a subset of the string instead of the full pseudo name.\n    // For example `\"focus-visible\"` name would instead of `\"us-visible\"`.\n    // Return a mapped pseudo else the default catch all bucket.\n    return pseudosMap[sheet.slice(14, sheet.indexOf('{'))] || '';\n  }\n\n  // Return default catch all bucket\n  return '';\n};\n\n/**\n * Used to move styles to the head of the application during runtime.\n *\n * @param css string\n * @param opts StyleSheetOpts\n */\nexport default function insertRule(css: string, opts: StyleSheetOpts): void {\n  const bucketName = getStyleBucketName(css);\n  const style = lazyAddStyleBucketToHead(bucketName, opts);\n\n  if (process.env.NODE_ENV === 'production') {\n    const sheet = style.sheet as CSSStyleSheet;\n\n    // Used to avoid unhandled exceptions across browsers with prefixed selectors such as -moz-placeholder.\n    try {\n      sheet.insertRule(css, sheet.cssRules.length);\n    } catch {}\n  } else {\n    style.appendChild(document.createTextNode(css));\n  }\n}\n","import * as React from 'react';\nimport { createContext, useContext } from 'react';\n\nimport { isCacheDisabled } from './cache';\nimport { isServerEnvironment } from './is-server-environment';\nimport type { ProviderComponent, UseCacheHook } from './types';\n\n/**\n * Cache to hold already used styles.\n * React Context on the server - singleton object on the client.\n */\nconst Cache: any = isServerEnvironment() ? createContext<Record<string, true> | null>(null) : {};\n\nif (!isServerEnvironment()) {\n  /**\n   * Iterates through all found style elements generated when server side rendering.\n   *\n   * @param cb\n   */\n  const ssrStyles = document.querySelectorAll<HTMLStyleElement>('style[data-cmpld]');\n  for (let i = 0; i < ssrStyles.length; i++) {\n    // Move all found server-side rendered style elements to the head before React hydration happens.\n    document.head.appendChild(ssrStyles[i]);\n  }\n}\n\n/**\n * Hook using the cache created on the server or client.\n */\nexport const useCache: UseCacheHook = () => {\n  if (isCacheDisabled()) {\n    return {};\n  }\n\n  if (isServerEnvironment()) {\n    // On the server we use React Context to we don't leak the cache between SSR calls.\n    // During runtime this hook isn't conditionally called - it is at build time that the flow gets decided.\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    return useContext(Cache) || {};\n  }\n\n  // On the client we use the object singleton.\n  return Cache;\n};\n\n/**\n * On the server this ensures the minimal amount of styles will be rendered\n * safely using React Context.\n *\n * On the browser this turns into a fragment with no React Context.\n */\nconst StyleCacheProvider: ProviderComponent = (props) => {\n  if (isServerEnvironment()) {\n    // This code path isn't conditionally called at build time - safe to ignore.\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    const inserted = useCache();\n    return <Cache.Provider value={inserted}>{props.children}</Cache.Provider>;\n  }\n\n  return props.children as JSX.Element;\n};\n\nexport default StyleCacheProvider;\n","import React from 'react';\n\nimport { analyzeCssInDev } from './dev-warnings';\nimport { isServerEnvironment } from './is-server-environment';\nimport insertRule, { getStyleBucketName, styleBucketOrdering } from './sheet';\nimport { useCache } from './style-cache';\nimport type { Bucket, StyleSheetOpts } from './types';\n\ninterface StyleProps extends StyleSheetOpts {\n  /**\n   * CSS Rules.\n   * Ensure each rule is a separate element in the array.\n   */\n  children: string[];\n}\n\nexport default function Style(props: StyleProps): JSX.Element | null {\n  const inserted = useCache();\n\n  if (process.env.NODE_ENV === 'development') {\n    props.children.forEach(analyzeCssInDev);\n  }\n\n  if (props.children.length) {\n    if (isServerEnvironment()) {\n      const bucketedSheets: Partial<Record<Bucket, string>> = {};\n      let hasSheets = false;\n\n      for (let i = 0; i < props.children.length; i++) {\n        const sheet = props.children[i];\n        if (inserted[sheet]) {\n          continue;\n        } else {\n          inserted[sheet] = true;\n          hasSheets = true;\n        }\n\n        const bucketName = getStyleBucketName(sheet);\n        bucketedSheets[bucketName] = (bucketedSheets[bucketName] || '') + sheet;\n      }\n\n      if (!hasSheets) {\n        return null;\n      }\n\n      return (\n        <style\n          data-cmpld\n          nonce={props.nonce}\n          dangerouslySetInnerHTML={{\n            __html: styleBucketOrdering.map((bucket) => bucketedSheets[bucket]).join(''),\n          }}\n        />\n      );\n    } else {\n      for (let i = 0; i < props.children.length; i++) {\n        const sheet = props.children[i];\n        if (inserted[sheet]) {\n          continue;\n        }\n\n        inserted[sheet] = true;\n        insertRule(sheet, props);\n      }\n    }\n  }\n\n  return null;\n}\n","const UNDERSCORE_UNICODE = 95;\n\n/**\n * This length includes the underscore,\n * e.g. `\"_1s4A\"` would be a valid atomic group hash.\n */\nconst ATOMIC_GROUP_LENGTH = 5;\n\n/**\n * Joins classes together and ensures atomic declarations of a single group exist.\n * Atomic declarations take the form of `_{group}{value}` (always prefixed with an underscore),\n * where both `group` and `value` are hashes **four characters long**.\n * Class names can be of any length,\n * this function can take both atomic declarations and class names.\n *\n * Input:\n *\n * ```\n * ax(['_aaaabbbb', '_aaaacccc'])\n * ```\n *\n * Output:\n *\n * ```\n * '_aaaacccc'\n * ```\n *\n * @param classes\n */\nexport default function ax(classNames: (string | undefined | false)[]): string | undefined {\n  if (classNames.length <= 1 && (!classNames[0] || classNames[0].indexOf(' ') === -1)) {\n    // short circuit if there's no custom class names.\n    return classNames[0] || undefined;\n  }\n\n  const atomicGroups: Record<string, string> = {};\n\n  for (let i = 0; i < classNames.length; i++) {\n    const cls = classNames[i];\n    if (!cls) {\n      continue;\n    }\n\n    const groups = cls.split(' ');\n\n    for (let x = 0; x < groups.length; x++) {\n      const atomic = groups[x];\n      const atomicGroupName = atomic.slice(\n        0,\n        atomic.charCodeAt(0) === UNDERSCORE_UNICODE ? ATOMIC_GROUP_LENGTH : undefined\n      );\n      atomicGroups[atomicGroupName] = atomic;\n    }\n  }\n\n  let str = '';\n\n  for (const key in atomicGroups) {\n    const value = atomicGroups[key];\n    str += value + ' ';\n  }\n\n  return str.slice(0, -1);\n}\n","/**\n * Returns a CSS custom property value with an optional suffix & prefix.\n * Prefix will only be added if there is a suffix.\n * If the value is undefined a fallback value will be returned to prevent children inheriting parent values.\n *\n * @param value\n * @param suffix\n * @param prefix\n */\nexport default function cssCustomPropertyValue(\n  value: string | number | null | undefined,\n  suffix?: string | undefined | null,\n  prefix?: string | undefined | null\n): string | number {\n  if (value != undefined) {\n    if (suffix) {\n      if (prefix) {\n        return prefix + value + suffix;\n      }\n\n      return value + suffix;\n    }\n\n    return value;\n  }\n\n  // Currently React trims these values so we can't use a space \" \" to block the value.\n  // Instead we use a CSS variable that doesn't exist which falls back to \" \".\n  // Bug raised here: https://github.com/facebook/react/issues/20497\n  return 'var(--c-, )';\n}\n","export { default as CS } from './style';\nexport { default as CC } from './style-cache';\nexport { default as ax } from './ax';\nexport { default as ix } from './css-custom-property';\n","export { CC, CS, ax, ix } from './runtime/index';\n","var jsonTreeTheme = {\n  scheme: \"monokai\",\n  base00: \"#1E1E2E\",\n  base01: \"#45475A\",\n  base02: \"#313244\",\n  base03: \"#B4BEFE\",\n  base04: \"#F2CDCD\",\n  base05: \"#CDD6F4\",\n  base06: \"#CDD6F4\",\n  base07: \"#CDD6F4\",\n  base08: \"#F38BA8\",\n  base09: \"#FAB387\",\n  base0A: \"#F9E2AF\",\n  base0B: \"#A6E3A1\",\n  base0C: \"#94E2D5\",\n  base0D: \"#89DCEB\",\n  base0E: \"#CBA6F7\",\n  base0F: \"#FAB387\"\n};\nvar mainTheme = {\n  main: \"#CBA6F7\",\n  main20: \"rgba(203, 166, 247, .2)\",\n  main40: \"rgba(203, 166, 247, .4)\",\n  main60: \"rgba(203, 166, 247, .6)\",\n  main80: \"rgba(203, 166, 247, .8)\",\n  main90: \"rgba(203, 166, 247, .9)\",\n  mainBg: \"#1E1E2E\",\n  softerMain: \"#B4BEFE\",\n  white: \"#fff\",\n  text: \"#CDD6F4\",\n  white05: \"rgba(205, 214, 244, .05)\",\n  white10: \"rgba(205, 214, 244, .1)\",\n  white20: \"rgba(205, 214, 244, .2)\",\n  white60: \"rgba(205, 214, 244, .6)\",\n  white80: \"rgba(205, 214, 244, .8)\",\n  black30: \"#11111B\",\n  // For diffs and structure\n  lightYellow: \"rgba(205, 214, 244, .2)\",\n  lightPink: \"#F38BA8\",\n  darkGreen: \"#A6E3A1\",\n  syntax: jsonTreeTheme\n};\nexport default mainTheme;\nexport { jsonTreeTheme };","/* dev-tools-collapsed.tsx generated by @compiled/babel-plugin v0.17.1 */\nimport { ax, ix, CC, CS } from \"@compiled/react/runtime\";\nimport React from \"react\";\nimport theme from \"./theme\";\nvar _20 = \"._1qh112gs svg{bottom:-2px}\";\nvar _19 = \"._11wmh2mm svg{position:relative}\";\nvar _18 = \"._17521u1b svg{height:34px}\";\nvar _17 = \"._w8l51u1b svg{width:34px}\";\nvar _16 = \"._d0altlke:hover{cursor:pointer}\";\nvar _15 = \"._16l415iw:hover{opacity:.7}\";\nvar _14 = \"._1pbyhac1{z-index:99999}\";\nvar _13 = \"._19itglyw{border:none}\";\nvar _12 = \"._v564g17y{transition:opacity .3s}\";\nvar _11 = \"._19bvi2wt{padding-left:6px}\";\nvar _10 = \"._n3td1y44{padding-bottom:4px}\";\nvar _9 = \"._u5f3i2wt{padding-right:6px}\";\nvar _8 = \"._ca0q1y44{padding-top:4px}\";\nvar _7 = \"._2rko1ssb{border-radius:50%}\";\nvar _6 = \"._16qspg5n{box-shadow:var(--_nq33mp)}\";\nvar _5 = \"._bfhk2l5j{background-color:#1e1e2e}\";\nvar _4 = \"._1xi27vkz{right:1pc}\";\nvar _3 = \"._94n57vkz{bottom:1pc}\";\nvar _2 = \"._kqsw1n9t{position:fixed}\";\nvar _ = \"._r06hglyw{-webkit-appearance:none;-moz-appearance:none;appearance:none}\";\nvar floatingButtonStyles = null;\nexport default function DevToolsCollapsed(props) {\n  return /*#__PURE__*/React.createElement(CC, null, /*#__PURE__*/React.createElement(CS, null, [_, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20]), /*#__PURE__*/React.createElement(\"button\", {\n    \"data-test-id\": \"__prosemirror_devtools_collapsed_button__\",\n    onClick: props.onClick,\n    className: ax([\"_r06hglyw _kqsw1n9t _94n57vkz _1xi27vkz _bfhk2l5j _16qspg5n _2rko1ssb _ca0q1y44 _u5f3i2wt _n3td1y44 _19bvi2wt _v564g17y _19itglyw _1pbyhac1 _16l415iw _d0altlke _w8l51u1b _17521u1b _11wmh2mm _1qh112gs\"]),\n    style: {\n      \"--_nq33mp\": ix(\"0 0 30px \".concat(theme.black30))\n    }\n  }, /*#__PURE__*/React.createElement(\"svg\", {\n    width: \"530\",\n    height: \"530\",\n    viewBox: \"0 0 530 530\",\n    xmlns: \"http://www.w3.org/2000/svg\",\n    xmlnsXlink: \"http://www.w3.org/1999/xlink\"\n  }, /*#__PURE__*/React.createElement(\"title\", null, \"prosemirror\"), /*#__PURE__*/React.createElement(\"desc\", null, \"Created using Figma\"), /*#__PURE__*/React.createElement(\"use\", {\n    xlinkHref: \"#a\",\n    transform: \"matrix(2 0 0 2 118 116)\",\n    fill: \"#FFF\"\n  }), /*#__PURE__*/React.createElement(\"use\", {\n    xlinkHref: \"#b\",\n    transform: \"rotate(16 59.054 420.192) scale(2)\",\n    fill: \"#FFF\"\n  }), /*#__PURE__*/React.createElement(\"use\", {\n    xlinkHref: \"#c\",\n    transform: \"matrix(2 0 0 2 154.024 141.58)\",\n    fill: \"#363755\"\n  }), /*#__PURE__*/React.createElement(\"use\", {\n    xlinkHref: \"#d\",\n    transform: \"matrix(2 0 0 2 220 334.8)\",\n    fill: \"#FFF\"\n  }), /*#__PURE__*/React.createElement(\"use\", {\n    xlinkHref: \"#e\",\n    transform: \"matrix(2 0 0 2 218.826 262.052)\",\n    fill: \"#363755\"\n  }), /*#__PURE__*/React.createElement(\"use\", {\n    xlinkHref: \"#f\",\n    transform: \"matrix(2 0 0 2 197.108 184.998)\",\n    fill: \"#FFF\"\n  }), /*#__PURE__*/React.createElement(\"use\", {\n    xlinkHref: \"#g\",\n    transform: \"matrix(2 0 0 2 221.8 216)\",\n    fill: \"#363755\"\n  }), /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"path\", {\n    id: \"a\",\n    d: \"M73.5 0C32.859 0 0 32.859 0 73.5S32.859 147 73.5 147 147 114.141 147 73.5 114.069 0 73.5 0z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    id: \"b\",\n    d: \"M193.601 107.116c0-13.376 8.238-23.91 20.619-31.153-2.244-7.447-5.19-14.6-8.824-21.32-13.886 3.633-25.12-1.799-34.568-11.26-9.449-9.437-12.344-20.672-8.709-34.571A111.362 111.362 0 0 0 140.799 0c-7.243 12.37-20.339 20.594-33.689 20.594-13.363 0-26.446-8.225-33.701-20.594A110.888 110.888 0 0 0 52.1 8.812c3.634 13.9.753 25.134-8.721 34.57-9.436 9.462-20.67 14.894-34.569 11.26A112.178 112.178 0 0 0 0 75.963c12.369 7.243 20.593 17.777 20.593 31.153 0 13.352-8.224 26.448-20.593 33.704a113.338 113.338 0 0 0 8.811 21.321c13.899-3.634 25.133-.752 34.569 8.697 9.448 9.462 12.355 20.696 8.721 34.57a112.653 112.653 0 0 0 21.32 8.837c7.243-12.407 20.338-20.619 33.702-20.619 13.35 0 26.446 8.225 33.701 20.619a114.22 114.22 0 0 0 21.32-8.837c-3.634-13.874-.752-25.108 8.709-34.57 9.449-9.437 20.683-14.869 34.569-11.26a112.343 112.343 0 0 0 8.823-21.321c-12.406-7.256-20.644-17.789-20.644-31.141zm-86.491 46.57c-25.732 0-46.58-20.849-46.58-46.57 0-25.733 20.86-46.595 46.58-46.595 25.732 0 46.567 20.875 46.567 46.595 0 25.734-20.835 46.57-46.567 46.57z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    id: \"c\",\n    d: \"M98.088 49.91c-6.9 83.9 10.8 103.401 10.8 103.401s-55.1 5.499-82.7-13.401c-30.5-20.9-26-67.5-25.9-94.6.1-28.4 25.6-45.8 49.9-45.3 29.1.5 50.2 21.6 47.9 49.9z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    id: \"d\",\n    d: \"M.1.1c12.2 33.3 22.5 42.7 40 55.2 25.3 18 36.6 17.5 76.3 41C78.1 60.3 30.8 45.7 0 0l.1.1z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    id: \"e\",\n    d: \"M.687 36.474c3 13.3 17.9 29.9 30.4 41.6 24.8 23.2 42 22.4 86 54.7-18.2-51.8-18.8-62-43.5-106.1-24.7-44-67.6-20.3-67.6-20.3s-8.4 16.6-5.3 29.9v.2z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    id: \"f\",\n    d: \"M38.346 11.5s-4-11.6-18-11.5c-30 .2-28.8 52.1 16.9 52 39.6-.1 39.2-49.4 16.1-49.6-10.2-.2-15 9.1-15 9.1z\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    id: \"g\",\n    d: \"M26.5 15c10.8 0 2 14.9-.6 20.9-1.8-8.4-10.2-20.9.6-20.9zM10.2.1C4.6.1 0 4.6 0 10.3c0 5.6 4.5 10.2 10.2 10.2 5.6 0 10.2-4.5 10.2-10.2C20.4 4.7 15.9.1 10.2.1zM40.7 0c-4.8 0-8.8 4.5-8.8 10.2 0 5.6 3.9 10.2 8.8 10.2 4.8 0 8.8-4.5 8.8-10.2C49.5 4.6 45.6 0 40.7 0z\"\n  })))));\n}","function _classCallCheck(a, n) {\n  if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\");\n}\nexport { _classCallCheck as default };","function _typeof(o) {\n  \"@babel/helpers - typeof\";\n\n  return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n    return typeof o;\n  } : function (o) {\n    return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n  }, _typeof(o);\n}\nexport { _typeof as default };","import _typeof from \"./typeof.js\";\nfunction toPrimitive(t, r) {\n  if (\"object\" != _typeof(t) || !t) return t;\n  var e = t[Symbol.toPrimitive];\n  if (void 0 !== e) {\n    var i = e.call(t, r || \"default\");\n    if (\"object\" != _typeof(i)) return i;\n    throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n  }\n  return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n  var i = toPrimitive(t, \"string\");\n  return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(e, r) {\n  for (var t = 0; t < r.length; t++) {\n    var o = r[t];\n    o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, toPropertyKey(o.key), o);\n  }\n}\nfunction _createClass(e, r, t) {\n  return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", {\n    writable: !1\n  }), e;\n}\nexport { _createClass as default };","function _assertThisInitialized(e) {\n  if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  return e;\n}\nexport { _assertThisInitialized as default };","function _setPrototypeOf(t, e) {\n  return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n    return t.__proto__ = e, t;\n  }, _setPrototypeOf(t, e);\n}\nexport { _setPrototypeOf as default };","import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inherits(t, e) {\n  if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\");\n  t.prototype = Object.create(e && e.prototype, {\n    constructor: {\n      value: t,\n      writable: !0,\n      configurable: !0\n    }\n  }), Object.defineProperty(t, \"prototype\", {\n    writable: !1\n  }), e && setPrototypeOf(t, e);\n}\nexport { _inherits as default };","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nfunction _possibleConstructorReturn(t, e) {\n  if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e;\n  if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\");\n  return assertThisInitialized(t);\n}\nexport { _possibleConstructorReturn as default };","function _getPrototypeOf(t) {\n  return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) {\n    return t.__proto__ || Object.getPrototypeOf(t);\n  }, _getPrototypeOf(t);\n}\nexport { _getPrototypeOf as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperty(e, r, t) {\n  return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n    value: t,\n    enumerable: !0,\n    configurable: !0,\n    writable: !0\n  }) : e[r] = t, e;\n}\nexport { _defineProperty as default };","function _arrayLikeToArray(r, a) {\n  (null == a || a > r.length) && (a = r.length);\n  for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n  return n;\n}\nexport { _arrayLikeToArray as default };","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nfunction _arrayWithoutHoles(r) {\n  if (Array.isArray(r)) return arrayLikeToArray(r);\n}\nexport { _arrayWithoutHoles as default };","function _iterableToArray(r) {\n  if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r);\n}\nexport { _iterableToArray as default };","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nfunction _unsupportedIterableToArray(r, a) {\n  if (r) {\n    if (\"string\" == typeof r) return arrayLikeToArray(r, a);\n    var t = {}.toString.call(r).slice(8, -1);\n    return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? arrayLikeToArray(r, a) : void 0;\n  }\n}\nexport { _unsupportedIterableToArray as default };","function _nonIterableSpread() {\n  throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _nonIterableSpread as default };","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nfunction _toConsumableArray(r) {\n  return arrayWithoutHoles(r) || iterableToArray(r) || unsupportedIterableToArray(r) || nonIterableSpread();\n}\nexport { _toConsumableArray as default };","/** @license React v16.13.1\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n  (function() {\n'use strict';\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n// (unstable) APIs that have been removed. Can we remove the symbols?\n\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\nvar REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\nvar REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\nvar REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\nvar REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n\nfunction isValidElementType(type) {\n  return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n  type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n}\n\nfunction typeOf(object) {\n  if (typeof object === 'object' && object !== null) {\n    var $$typeof = object.$$typeof;\n\n    switch ($$typeof) {\n      case REACT_ELEMENT_TYPE:\n        var type = object.type;\n\n        switch (type) {\n          case REACT_ASYNC_MODE_TYPE:\n          case REACT_CONCURRENT_MODE_TYPE:\n          case REACT_FRAGMENT_TYPE:\n          case REACT_PROFILER_TYPE:\n          case REACT_STRICT_MODE_TYPE:\n          case REACT_SUSPENSE_TYPE:\n            return type;\n\n          default:\n            var $$typeofType = type && type.$$typeof;\n\n            switch ($$typeofType) {\n              case REACT_CONTEXT_TYPE:\n              case REACT_FORWARD_REF_TYPE:\n              case REACT_LAZY_TYPE:\n              case REACT_MEMO_TYPE:\n              case REACT_PROVIDER_TYPE:\n                return $$typeofType;\n\n              default:\n                return $$typeof;\n            }\n\n        }\n\n      case REACT_PORTAL_TYPE:\n        return $$typeof;\n    }\n  }\n\n  return undefined;\n} // AsyncMode is deprecated along with isAsyncMode\n\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n  {\n    if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n      hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n      console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n    }\n  }\n\n  return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n  return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n  return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n  return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n  return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n  return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n  return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n  return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n  return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n  return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n  return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n  return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n  return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n  })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-is.production.min.js');\n} else {\n  module.exports = require('./cjs/react-is.development.js');\n}\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc');  // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","module.exports = Function.call.bind(Object.prototype.hasOwnProperty);\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n  var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n  var loggedTypeFailures = {};\n  var has = require('./lib/has');\n\n  printWarning = function(text) {\n    var message = 'Warning: ' + text;\n    if (typeof console !== 'undefined') {\n      console.error(message);\n    }\n    try {\n      // --- Welcome to debugging React ---\n      // This error was thrown as a convenience so that you can use this stack\n      // to find the callsite that caused this warning to fire.\n      throw new Error(message);\n    } catch (x) { /**/ }\n  };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n  if (process.env.NODE_ENV !== 'production') {\n    for (var typeSpecName in typeSpecs) {\n      if (has(typeSpecs, typeSpecName)) {\n        var error;\n        // Prop type validation may throw. In case they do, we don't want to\n        // fail the render phase where it didn't fail before. So we log it.\n        // After these have been cleaned up, we'll let them throw.\n        try {\n          // This is intentionally an invariant that gets caught. It's the same\n          // behavior as without this statement except with a better message.\n          if (typeof typeSpecs[typeSpecName] !== 'function') {\n            var err = Error(\n              (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n              'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' +\n              'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.'\n            );\n            err.name = 'Invariant Violation';\n            throw err;\n          }\n          error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n        } catch (ex) {\n          error = ex;\n        }\n        if (error && !(error instanceof Error)) {\n          printWarning(\n            (componentName || 'React class') + ': type specification of ' +\n            location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n            'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n            'You may have forgotten to pass an argument to the type checker ' +\n            'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n            'shape all require an argument).'\n          );\n        }\n        if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n          // Only monitor this failure once because there tends to be a lot of the\n          // same error.\n          loggedTypeFailures[error.message] = true;\n\n          var stack = getStack ? getStack() : '';\n\n          printWarning(\n            'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n          );\n        }\n      }\n    }\n  }\n}\n\n/**\n * Resets warning cache when testing.\n *\n * @private\n */\ncheckPropTypes.resetWarningCache = function() {\n  if (process.env.NODE_ENV !== 'production') {\n    loggedTypeFailures = {};\n  }\n}\n\nmodule.exports = checkPropTypes;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactIs = require('react-is');\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar has = require('./lib/has');\nvar checkPropTypes = require('./checkPropTypes');\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n  printWarning = function(text) {\n    var message = 'Warning: ' + text;\n    if (typeof console !== 'undefined') {\n      console.error(message);\n    }\n    try {\n      // --- Welcome to debugging React ---\n      // This error was thrown as a convenience so that you can use this stack\n      // to find the callsite that caused this warning to fire.\n      throw new Error(message);\n    } catch (x) {}\n  };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n  return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n  /* global Symbol */\n  var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n  var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n  /**\n   * Returns the iterator method function contained on the iterable object.\n   *\n   * Be sure to invoke the function with the iterable as context:\n   *\n   *     var iteratorFn = getIteratorFn(myIterable);\n   *     if (iteratorFn) {\n   *       var iterator = iteratorFn.call(myIterable);\n   *       ...\n   *     }\n   *\n   * @param {?object} maybeIterable\n   * @return {?function}\n   */\n  function getIteratorFn(maybeIterable) {\n    var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n    if (typeof iteratorFn === 'function') {\n      return iteratorFn;\n    }\n  }\n\n  /**\n   * Collection of methods that allow declaration and validation of props that are\n   * supplied to React components. Example usage:\n   *\n   *   var Props = require('ReactPropTypes');\n   *   var MyArticle = React.createClass({\n   *     propTypes: {\n   *       // An optional string prop named \"description\".\n   *       description: Props.string,\n   *\n   *       // A required enum prop named \"category\".\n   *       category: Props.oneOf(['News','Photos']).isRequired,\n   *\n   *       // A prop named \"dialog\" that requires an instance of Dialog.\n   *       dialog: Props.instanceOf(Dialog).isRequired\n   *     },\n   *     render: function() { ... }\n   *   });\n   *\n   * A more formal specification of how these methods are used:\n   *\n   *   type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n   *   decl := ReactPropTypes.{type}(.isRequired)?\n   *\n   * Each and every declaration produces a function with the same signature. This\n   * allows the creation of custom validation functions. For example:\n   *\n   *  var MyLink = React.createClass({\n   *    propTypes: {\n   *      // An optional string or URI prop named \"href\".\n   *      href: function(props, propName, componentName) {\n   *        var propValue = props[propName];\n   *        if (propValue != null && typeof propValue !== 'string' &&\n   *            !(propValue instanceof URI)) {\n   *          return new Error(\n   *            'Expected a string or an URI for ' + propName + ' in ' +\n   *            componentName\n   *          );\n   *        }\n   *      }\n   *    },\n   *    render: function() {...}\n   *  });\n   *\n   * @internal\n   */\n\n  var ANONYMOUS = '<<anonymous>>';\n\n  // Important!\n  // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n  var ReactPropTypes = {\n    array: createPrimitiveTypeChecker('array'),\n    bigint: createPrimitiveTypeChecker('bigint'),\n    bool: createPrimitiveTypeChecker('boolean'),\n    func: createPrimitiveTypeChecker('function'),\n    number: createPrimitiveTypeChecker('number'),\n    object: createPrimitiveTypeChecker('object'),\n    string: createPrimitiveTypeChecker('string'),\n    symbol: createPrimitiveTypeChecker('symbol'),\n\n    any: createAnyTypeChecker(),\n    arrayOf: createArrayOfTypeChecker,\n    element: createElementTypeChecker(),\n    elementType: createElementTypeTypeChecker(),\n    instanceOf: createInstanceTypeChecker,\n    node: createNodeChecker(),\n    objectOf: createObjectOfTypeChecker,\n    oneOf: createEnumTypeChecker,\n    oneOfType: createUnionTypeChecker,\n    shape: createShapeTypeChecker,\n    exact: createStrictShapeTypeChecker,\n  };\n\n  /**\n   * inlined Object.is polyfill to avoid requiring consumers ship their own\n   * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n   */\n  /*eslint-disable no-self-compare*/\n  function is(x, y) {\n    // SameValue algorithm\n    if (x === y) {\n      // Steps 1-5, 7-10\n      // Steps 6.b-6.e: +0 != -0\n      return x !== 0 || 1 / x === 1 / y;\n    } else {\n      // Step 6.a: NaN == NaN\n      return x !== x && y !== y;\n    }\n  }\n  /*eslint-enable no-self-compare*/\n\n  /**\n   * We use an Error-like object for backward compatibility as people may call\n   * PropTypes directly and inspect their output. However, we don't use real\n   * Errors anymore. We don't inspect their stack anyway, and creating them\n   * is prohibitively expensive if they are created too often, such as what\n   * happens in oneOfType() for any type before the one that matched.\n   */\n  function PropTypeError(message, data) {\n    this.message = message;\n    this.data = data && typeof data === 'object' ? data: {};\n    this.stack = '';\n  }\n  // Make `instanceof Error` still work for returned errors.\n  PropTypeError.prototype = Error.prototype;\n\n  function createChainableTypeChecker(validate) {\n    if (process.env.NODE_ENV !== 'production') {\n      var manualPropTypeCallCache = {};\n      var manualPropTypeWarningCount = 0;\n    }\n    function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n      componentName = componentName || ANONYMOUS;\n      propFullName = propFullName || propName;\n\n      if (secret !== ReactPropTypesSecret) {\n        if (throwOnDirectAccess) {\n          // New behavior only for users of `prop-types` package\n          var err = new Error(\n            'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n            'Use `PropTypes.checkPropTypes()` to call them. ' +\n            'Read more at http://fb.me/use-check-prop-types'\n          );\n          err.name = 'Invariant Violation';\n          throw err;\n        } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n          // Old behavior for people using React.PropTypes\n          var cacheKey = componentName + ':' + propName;\n          if (\n            !manualPropTypeCallCache[cacheKey] &&\n            // Avoid spamming the console because they are often not actionable except for lib authors\n            manualPropTypeWarningCount < 3\n          ) {\n            printWarning(\n              'You are manually calling a React.PropTypes validation ' +\n              'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n              'and will throw in the standalone `prop-types` package. ' +\n              'You may be seeing this warning due to a third-party PropTypes ' +\n              'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n            );\n            manualPropTypeCallCache[cacheKey] = true;\n            manualPropTypeWarningCount++;\n          }\n        }\n      }\n      if (props[propName] == null) {\n        if (isRequired) {\n          if (props[propName] === null) {\n            return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n          }\n          return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n        }\n        return null;\n      } else {\n        return validate(props, propName, componentName, location, propFullName);\n      }\n    }\n\n    var chainedCheckType = checkType.bind(null, false);\n    chainedCheckType.isRequired = checkType.bind(null, true);\n\n    return chainedCheckType;\n  }\n\n  function createPrimitiveTypeChecker(expectedType) {\n    function validate(props, propName, componentName, location, propFullName, secret) {\n      var propValue = props[propName];\n      var propType = getPropType(propValue);\n      if (propType !== expectedType) {\n        // `propValue` being instance of, say, date/regexp, pass the 'object'\n        // check, but we can offer a more precise error message here rather than\n        // 'of type `object`'.\n        var preciseType = getPreciseType(propValue);\n\n        return new PropTypeError(\n          'Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'),\n          {expectedType: expectedType}\n        );\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createAnyTypeChecker() {\n    return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n  }\n\n  function createArrayOfTypeChecker(typeChecker) {\n    function validate(props, propName, componentName, location, propFullName) {\n      if (typeof typeChecker !== 'function') {\n        return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n      }\n      var propValue = props[propName];\n      if (!Array.isArray(propValue)) {\n        var propType = getPropType(propValue);\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n      }\n      for (var i = 0; i < propValue.length; i++) {\n        var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n        if (error instanceof Error) {\n          return error;\n        }\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createElementTypeChecker() {\n    function validate(props, propName, componentName, location, propFullName) {\n      var propValue = props[propName];\n      if (!isValidElement(propValue)) {\n        var propType = getPropType(propValue);\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createElementTypeTypeChecker() {\n    function validate(props, propName, componentName, location, propFullName) {\n      var propValue = props[propName];\n      if (!ReactIs.isValidElementType(propValue)) {\n        var propType = getPropType(propValue);\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createInstanceTypeChecker(expectedClass) {\n    function validate(props, propName, componentName, location, propFullName) {\n      if (!(props[propName] instanceof expectedClass)) {\n        var expectedClassName = expectedClass.name || ANONYMOUS;\n        var actualClassName = getClassName(props[propName]);\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createEnumTypeChecker(expectedValues) {\n    if (!Array.isArray(expectedValues)) {\n      if (process.env.NODE_ENV !== 'production') {\n        if (arguments.length > 1) {\n          printWarning(\n            'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +\n            'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'\n          );\n        } else {\n          printWarning('Invalid argument supplied to oneOf, expected an array.');\n        }\n      }\n      return emptyFunctionThatReturnsNull;\n    }\n\n    function validate(props, propName, componentName, location, propFullName) {\n      var propValue = props[propName];\n      for (var i = 0; i < expectedValues.length; i++) {\n        if (is(propValue, expectedValues[i])) {\n          return null;\n        }\n      }\n\n      var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n        var type = getPreciseType(value);\n        if (type === 'symbol') {\n          return String(value);\n        }\n        return value;\n      });\n      return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createObjectOfTypeChecker(typeChecker) {\n    function validate(props, propName, componentName, location, propFullName) {\n      if (typeof typeChecker !== 'function') {\n        return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n      }\n      var propValue = props[propName];\n      var propType = getPropType(propValue);\n      if (propType !== 'object') {\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n      }\n      for (var key in propValue) {\n        if (has(propValue, key)) {\n          var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n          if (error instanceof Error) {\n            return error;\n          }\n        }\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createUnionTypeChecker(arrayOfTypeCheckers) {\n    if (!Array.isArray(arrayOfTypeCheckers)) {\n      process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n      return emptyFunctionThatReturnsNull;\n    }\n\n    for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n      var checker = arrayOfTypeCheckers[i];\n      if (typeof checker !== 'function') {\n        printWarning(\n          'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n          'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n        );\n        return emptyFunctionThatReturnsNull;\n      }\n    }\n\n    function validate(props, propName, componentName, location, propFullName) {\n      var expectedTypes = [];\n      for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n        var checker = arrayOfTypeCheckers[i];\n        var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret);\n        if (checkerResult == null) {\n          return null;\n        }\n        if (checkerResult.data && has(checkerResult.data, 'expectedType')) {\n          expectedTypes.push(checkerResult.data.expectedType);\n        }\n      }\n      var expectedTypesMessage = (expectedTypes.length > 0) ? ', expected one of type [' + expectedTypes.join(', ') + ']': '';\n      return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`' + expectedTypesMessage + '.'));\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createNodeChecker() {\n    function validate(props, propName, componentName, location, propFullName) {\n      if (!isNode(props[propName])) {\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function invalidValidatorError(componentName, location, propFullName, key, type) {\n    return new PropTypeError(\n      (componentName || 'React class') + ': ' + location + ' type `' + propFullName + '.' + key + '` is invalid; ' +\n      'it must be a function, usually from the `prop-types` package, but received `' + type + '`.'\n    );\n  }\n\n  function createShapeTypeChecker(shapeTypes) {\n    function validate(props, propName, componentName, location, propFullName) {\n      var propValue = props[propName];\n      var propType = getPropType(propValue);\n      if (propType !== 'object') {\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n      }\n      for (var key in shapeTypes) {\n        var checker = shapeTypes[key];\n        if (typeof checker !== 'function') {\n          return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n        }\n        var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n        if (error) {\n          return error;\n        }\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createStrictShapeTypeChecker(shapeTypes) {\n    function validate(props, propName, componentName, location, propFullName) {\n      var propValue = props[propName];\n      var propType = getPropType(propValue);\n      if (propType !== 'object') {\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n      }\n      // We need to check all keys in case some are required but missing from props.\n      var allKeys = assign({}, props[propName], shapeTypes);\n      for (var key in allKeys) {\n        var checker = shapeTypes[key];\n        if (has(shapeTypes, key) && typeof checker !== 'function') {\n          return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n        }\n        if (!checker) {\n          return new PropTypeError(\n            'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n            '\\nBad object: ' + JSON.stringify(props[propName], null, '  ') +\n            '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, '  ')\n          );\n        }\n        var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n        if (error) {\n          return error;\n        }\n      }\n      return null;\n    }\n\n    return createChainableTypeChecker(validate);\n  }\n\n  function isNode(propValue) {\n    switch (typeof propValue) {\n      case 'number':\n      case 'string':\n      case 'undefined':\n        return true;\n      case 'boolean':\n        return !propValue;\n      case 'object':\n        if (Array.isArray(propValue)) {\n          return propValue.every(isNode);\n        }\n        if (propValue === null || isValidElement(propValue)) {\n          return true;\n        }\n\n        var iteratorFn = getIteratorFn(propValue);\n        if (iteratorFn) {\n          var iterator = iteratorFn.call(propValue);\n          var step;\n          if (iteratorFn !== propValue.entries) {\n            while (!(step = iterator.next()).done) {\n              if (!isNode(step.value)) {\n                return false;\n              }\n            }\n          } else {\n            // Iterator will provide entry [k,v] tuples rather than values.\n            while (!(step = iterator.next()).done) {\n              var entry = step.value;\n              if (entry) {\n                if (!isNode(entry[1])) {\n                  return false;\n                }\n              }\n            }\n          }\n        } else {\n          return false;\n        }\n\n        return true;\n      default:\n        return false;\n    }\n  }\n\n  function isSymbol(propType, propValue) {\n    // Native Symbol.\n    if (propType === 'symbol') {\n      return true;\n    }\n\n    // falsy value can't be a Symbol\n    if (!propValue) {\n      return false;\n    }\n\n    // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n    if (propValue['@@toStringTag'] === 'Symbol') {\n      return true;\n    }\n\n    // Fallback for non-spec compliant Symbols which are polyfilled.\n    if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n      return true;\n    }\n\n    return false;\n  }\n\n  // Equivalent of `typeof` but with special handling for array and regexp.\n  function getPropType(propValue) {\n    var propType = typeof propValue;\n    if (Array.isArray(propValue)) {\n      return 'array';\n    }\n    if (propValue instanceof RegExp) {\n      // Old webkits (at least until Android 4.0) return 'function' rather than\n      // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n      // passes PropTypes.object.\n      return 'object';\n    }\n    if (isSymbol(propType, propValue)) {\n      return 'symbol';\n    }\n    return propType;\n  }\n\n  // This handles more types than `getPropType`. Only used for error messages.\n  // See `createPrimitiveTypeChecker`.\n  function getPreciseType(propValue) {\n    if (typeof propValue === 'undefined' || propValue === null) {\n      return '' + propValue;\n    }\n    var propType = getPropType(propValue);\n    if (propType === 'object') {\n      if (propValue instanceof Date) {\n        return 'date';\n      } else if (propValue instanceof RegExp) {\n        return 'regexp';\n      }\n    }\n    return propType;\n  }\n\n  // Returns a string that is postfixed to a warning about an invalid type.\n  // For example, \"undefined\" or \"of type array\"\n  function getPostfixForTypeWarning(value) {\n    var type = getPreciseType(value);\n    switch (type) {\n      case 'array':\n      case 'object':\n        return 'an ' + type;\n      case 'boolean':\n      case 'date':\n      case 'regexp':\n        return 'a ' + type;\n      default:\n        return type;\n    }\n  }\n\n  // Returns class name of the object, if any.\n  function getClassName(propValue) {\n    if (!propValue.constructor || !propValue.constructor.name) {\n      return ANONYMOUS;\n    }\n    return propValue.constructor.name;\n  }\n\n  ReactPropTypes.checkPropTypes = checkPropTypes;\n  ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n  ReactPropTypes.PropTypes = ReactPropTypes;\n\n  return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n  var ReactIs = require('react-is');\n\n  // By explicitly using `prop-types` you are opting into new development behavior.\n  // http://fb.me/prop-types-in-prod\n  var throwOnDirectAccess = true;\n  module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n  // By explicitly using `prop-types` you are opting into new production behavior.\n  // http://fb.me/prop-types-in-prod\n  module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n    nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n *   console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n  return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n *  Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n *  The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n *  Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n *   'leading': true,\n *   'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n  var lastArgs,\n      lastThis,\n      maxWait,\n      result,\n      timerId,\n      lastCallTime,\n      lastInvokeTime = 0,\n      leading = false,\n      maxing = false,\n      trailing = true;\n\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  wait = toNumber(wait) || 0;\n  if (isObject(options)) {\n    leading = !!options.leading;\n    maxing = 'maxWait' in options;\n    maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n\n  function invokeFunc(time) {\n    var args = lastArgs,\n        thisArg = lastThis;\n\n    lastArgs = lastThis = undefined;\n    lastInvokeTime = time;\n    result = func.apply(thisArg, args);\n    return result;\n  }\n\n  function leadingEdge(time) {\n    // Reset any `maxWait` timer.\n    lastInvokeTime = time;\n    // Start the timer for the trailing edge.\n    timerId = setTimeout(timerExpired, wait);\n    // Invoke the leading edge.\n    return leading ? invokeFunc(time) : result;\n  }\n\n  function remainingWait(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime,\n        result = wait - timeSinceLastCall;\n\n    return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n  }\n\n  function shouldInvoke(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime;\n\n    // Either this is the first call, activity has stopped and we're at the\n    // trailing edge, the system time has gone backwards and we're treating\n    // it as the trailing edge, or we've hit the `maxWait` limit.\n    return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n      (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n  }\n\n  function timerExpired() {\n    var time = now();\n    if (shouldInvoke(time)) {\n      return trailingEdge(time);\n    }\n    // Restart the timer.\n    timerId = setTimeout(timerExpired, remainingWait(time));\n  }\n\n  function trailingEdge(time) {\n    timerId = undefined;\n\n    // Only invoke if we have `lastArgs` which means `func` has been\n    // debounced at least once.\n    if (trailing && lastArgs) {\n      return invokeFunc(time);\n    }\n    lastArgs = lastThis = undefined;\n    return result;\n  }\n\n  function cancel() {\n    if (timerId !== undefined) {\n      clearTimeout(timerId);\n    }\n    lastInvokeTime = 0;\n    lastArgs = lastCallTime = lastThis = timerId = undefined;\n  }\n\n  function flush() {\n    return timerId === undefined ? result : trailingEdge(now());\n  }\n\n  function debounced() {\n    var time = now(),\n        isInvoking = shouldInvoke(time);\n\n    lastArgs = arguments;\n    lastThis = this;\n    lastCallTime = time;\n\n    if (isInvoking) {\n      if (timerId === undefined) {\n        return leadingEdge(lastCallTime);\n      }\n      if (maxing) {\n        // Handle invocations in a tight loop.\n        timerId = setTimeout(timerExpired, wait);\n        return invokeFunc(lastCallTime);\n      }\n    }\n    if (timerId === undefined) {\n      timerId = setTimeout(timerExpired, wait);\n    }\n    return result;\n  }\n  debounced.cancel = cancel;\n  debounced.flush = flush;\n  return debounced;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n  if (typeof value == 'number') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return NAN;\n  }\n  if (isObject(value)) {\n    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n    value = isObject(other) ? (other + '') : other;\n  }\n  if (typeof value != 'string') {\n    return value === 0 ? value : +value;\n  }\n  value = value.replace(reTrim, '');\n  var isBinary = reIsBinary.test(value);\n  return (isBinary || reIsOctal.test(value))\n    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n    : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = debounce;\n","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\n// Same as https://github.com/SimenB/react-vendor-prefixes/blob/master/src/index.js,\n// but dumber\nvar vendorSpecificProperties = ['animation', 'animationDelay', 'animationDirection', 'animationDuration', 'animationFillMode', 'animationIterationCount', 'animationName', 'animationPlayState', 'animationTimingFunction', 'appearance', 'backfaceVisibility', 'backgroundClip', 'borderImage', 'borderImageSlice', 'boxSizing', 'boxShadow', 'contentColumns', 'transform', 'transformOrigin', 'transformStyle', 'transition', 'transitionDelay', 'transitionDuration', 'transitionProperty', 'transitionTimingFunction', 'perspective', 'perspectiveOrigin', 'userSelect'];\nvar prefixes = ['Moz', 'Webkit', 'ms', 'O'];\n\nfunction prefixProp(key, value) {\n  return prefixes.reduce(function (obj, pre) {\n    return obj[pre + key[0].toUpperCase() + key.substr(1)] = value, obj;\n  }, {});\n}\n\nexport default function autoprefix(style) {\n  return Object.keys(style).reduce(function (obj, key) {\n    return vendorSpecificProperties.indexOf(key) !== -1 ? _objectSpread(_objectSpread({}, obj), prefixProp(key, style[key])) : obj;\n  }, style);\n}","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport debounce from 'lodash.debounce';\nimport autoprefix from './autoprefix';\n\nfunction autoprefixes(styles) {\n  return Object.keys(styles).reduce(function (obj, key) {\n    return obj[key] = autoprefix(styles[key]), obj;\n  }, {});\n}\n\nvar styles = autoprefixes({\n  wrapper: {\n    position: 'fixed',\n    width: 0,\n    height: 0,\n    top: 0,\n    left: 0\n  },\n  dim: {\n    position: 'fixed',\n    left: 0,\n    right: 0,\n    top: 0,\n    bottom: 0,\n    zIndex: 0,\n    background: 'rgba(0, 0, 0, 0.2)',\n    opacity: 1\n  },\n  dimAppear: {\n    opacity: 0\n  },\n  dimTransparent: {\n    pointerEvents: 'none'\n  },\n  dimHidden: {\n    opacity: 0\n  },\n  dock: {\n    position: 'fixed',\n    zIndex: 1,\n    boxShadow: '0 0 4px rgba(0, 0, 0, 0.3)',\n    background: 'white',\n    left: 0,\n    top: 0,\n    width: '100%',\n    height: '100%'\n  },\n  dockHidden: {\n    opacity: 0\n  },\n  dockResizing: {\n    transition: 'none'\n  },\n  dockContent: {\n    width: '100%',\n    height: '100%',\n    overflow: 'auto'\n  },\n  resizer: {\n    position: 'absolute',\n    zIndex: 2,\n    opacity: 0\n  }\n});\n\nfunction getTransitions(duration) {\n  return ['left', 'top', 'width', 'height'].map(function (p) {\n    return \"\".concat(p, \" \").concat(duration / 1000, \"s ease-out\");\n  });\n}\n\nfunction getDockStyles(_ref, _ref2) {\n  var fluid = _ref.fluid,\n      dockStyle = _ref.dockStyle,\n      dockHiddenStyle = _ref.dockHiddenStyle,\n      duration = _ref.duration,\n      position = _ref.position,\n      isVisible = _ref.isVisible;\n  var size = _ref2.size,\n      isResizing = _ref2.isResizing,\n      fullWidth = _ref2.fullWidth,\n      fullHeight = _ref2.fullHeight;\n  var posStyle;\n  var absSize = fluid ? \"\".concat(size * 100, \"%\") : \"\".concat(size, \"px\");\n\n  function getRestSize(fullSize) {\n    return fluid ? \"\".concat(100 - size * 100, \"%\") : \"\".concat(fullSize - size, \"px\");\n  }\n\n  switch (position) {\n    case 'left':\n      posStyle = {\n        width: absSize,\n        left: isVisible ? 0 : '-' + absSize\n      };\n      break;\n\n    case 'right':\n      posStyle = {\n        left: isVisible ? getRestSize(fullWidth) : fullWidth,\n        width: absSize\n      };\n      break;\n\n    case 'top':\n      posStyle = {\n        top: isVisible ? 0 : '-' + absSize,\n        height: absSize\n      };\n      break;\n\n    case 'bottom':\n      posStyle = {\n        top: isVisible ? getRestSize(fullHeight) : fullHeight,\n        height: absSize\n      };\n      break;\n  }\n\n  var transitions = getTransitions(duration);\n  return [styles.dock, autoprefix({\n    transition: [].concat(_toConsumableArray(transitions), [!isVisible && \"opacity 0.01s linear \".concat(duration / 1000, \"s\")]).filter(function (t) {\n      return t;\n    }).join(',')\n  }), dockStyle, autoprefix(posStyle), isResizing && styles.dockResizing, !isVisible && styles.dockHidden, !isVisible && dockHiddenStyle];\n}\n\nfunction getDimStyles(_ref3, _ref4) {\n  var dimMode = _ref3.dimMode,\n      dimStyle = _ref3.dimStyle,\n      duration = _ref3.duration,\n      isVisible = _ref3.isVisible;\n  var isTransitionStarted = _ref4.isTransitionStarted;\n  return [styles.dim, autoprefix({\n    transition: \"opacity \".concat(duration / 1000, \"s ease-out\")\n  }), dimStyle, dimMode === 'transparent' && styles.dimTransparent, !isVisible && styles.dimHidden, isTransitionStarted && isVisible && styles.dimAppear, isTransitionStarted && !isVisible && styles.dimDisappear];\n}\n\nfunction getResizerStyles(position) {\n  var resizerStyle;\n  var size = 10;\n\n  switch (position) {\n    case 'left':\n      resizerStyle = {\n        right: -size / 2,\n        width: size,\n        top: 0,\n        height: '100%',\n        cursor: 'col-resize'\n      };\n      break;\n\n    case 'right':\n      resizerStyle = {\n        left: -size / 2,\n        width: size,\n        top: 0,\n        height: '100%',\n        cursor: 'col-resize'\n      };\n      break;\n\n    case 'top':\n      resizerStyle = {\n        bottom: -size / 2,\n        height: size,\n        left: 0,\n        width: '100%',\n        cursor: 'row-resize'\n      };\n      break;\n\n    case 'bottom':\n      resizerStyle = {\n        top: -size / 2,\n        height: size,\n        left: 0,\n        width: '100%',\n        cursor: 'row-resize'\n      };\n      break;\n  }\n\n  return [styles.resizer, autoprefix(resizerStyle)];\n}\n\nfunction getFullSize(position, fullWidth, fullHeight) {\n  return position === 'left' || position === 'right' ? fullWidth : fullHeight;\n}\n\nvar Dock = /*#__PURE__*/function (_Component) {\n  _inherits(Dock, _Component);\n\n  var _super = _createSuper(Dock);\n\n  function Dock() {\n    var _this;\n\n    _classCallCheck(this, Dock);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _super.call.apply(_super, [this].concat(args));\n\n    _defineProperty(_assertThisInitialized(_this), \"state\", {\n      isControlled: typeof _this.props.size !== 'undefined',\n      size: _this.props.size || _this.props.defaultSize,\n      isDimHidden: !_this.props.isVisible,\n      fullWidth: window.innerWidth,\n      fullHeight: window.innerHeight,\n      isTransitionStarted: false,\n      isWindowResizing: false\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"transitionEnd\", function () {\n      _this.setState({\n        isTransitionStarted: false\n      });\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"hideDim\", function () {\n      if (!_this.props.isVisible) {\n        _this.setState({\n          isDimHidden: true\n        });\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"handleDimClick\", function () {\n      if (_this.props.dimMode === 'opaque') {\n        _this.props.onVisibleChange && _this.props.onVisibleChange(false);\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"handleResize\", function () {\n      if (window.requestAnimationFrame) {\n        window.requestAnimationFrame(_this.updateWindowSize.bind(_assertThisInitialized(_this), true));\n      } else {\n        _this.updateWindowSize(true);\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"updateWindowSize\", function (windowResize) {\n      var sizeState = {\n        fullWidth: window.innerWidth,\n        fullHeight: window.innerHeight\n      };\n\n      if (windowResize) {\n        _this.setState(_objectSpread(_objectSpread({}, sizeState), {}, {\n          isResizing: true,\n          isWindowResizing: windowResize\n        }));\n\n        _this.debouncedUpdateWindowSizeEnd();\n      } else {\n        _this.setState(sizeState);\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"updateWindowSizeEnd\", function () {\n      _this.setState({\n        isResizing: false,\n        isWindowResizing: false\n      });\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"debouncedUpdateWindowSizeEnd\", debounce(_this.updateWindowSizeEnd, 30));\n\n    _defineProperty(_assertThisInitialized(_this), \"handleWrapperLeave\", function () {\n      _this.setState({\n        isResizing: false\n      });\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"handleMouseDown\", function () {\n      _this.setState({\n        isResizing: true\n      });\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"handleMouseUp\", function () {\n      _this.setState({\n        isResizing: false\n      });\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"handleMouseMove\", function (e) {\n      if (!_this.state.isResizing || _this.state.isWindowResizing) return;\n      if (!e.touches) e.preventDefault();\n      var _this$props = _this.props,\n          position = _this$props.position,\n          fluid = _this$props.fluid;\n      var _this$state = _this.state,\n          fullWidth = _this$state.fullWidth,\n          fullHeight = _this$state.fullHeight,\n          isControlled = _this$state.isControlled;\n      var _ref5 = e,\n          x = _ref5.clientX,\n          y = _ref5.clientY;\n\n      if (e.touches) {\n        x = e.touches[0].clientX;\n        y = e.touches[0].clientY;\n      }\n\n      var size;\n\n      switch (position) {\n        case 'left':\n          size = fluid ? x / fullWidth : x;\n          break;\n\n        case 'right':\n          size = fluid ? (fullWidth - x) / fullWidth : fullWidth - x;\n          break;\n\n        case 'top':\n          size = fluid ? y / fullHeight : y;\n          break;\n\n        case 'bottom':\n          size = fluid ? (fullHeight - y) / fullHeight : fullHeight - y;\n          break;\n      }\n\n      _this.props.onSizeChange && _this.props.onSizeChange(size);\n\n      if (!isControlled) {\n        _this.setState({\n          size: size\n        });\n      }\n    });\n\n    return _this;\n  }\n\n  _createClass(Dock, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      window.addEventListener('touchend', this.handleMouseUp);\n      window.addEventListener('mouseup', this.handleMouseUp);\n      window.addEventListener('touchmove', this.handleMouseMove);\n      window.addEventListener('mousemove', this.handleMouseMove);\n      window.addEventListener('resize', this.handleResize);\n      this.updateWindowSize();\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      window.removeEventListener('touchend', this.handleMouseUp);\n      window.removeEventListener('mouseup', this.handleMouseUp);\n      window.removeEventListener('touchmove', this.handleMouseMove);\n      window.removeEventListener('mousemove', this.handleMouseMove);\n      window.removeEventListener('resize', this.handleResize);\n    }\n  }, {\n    key: \"UNSAFE_componentWillReceiveProps\",\n    value: function UNSAFE_componentWillReceiveProps(nextProps) {\n      var isControlled = typeof nextProps.size !== 'undefined';\n      this.setState({\n        isControlled: isControlled\n      });\n\n      if (isControlled && nextProps.size && this.props.size !== nextProps.size) {\n        this.setState({\n          size: nextProps.size\n        });\n      } else if (this.props.fluid !== nextProps.fluid) {\n        this.updateSize(nextProps);\n      }\n\n      if (this.props.isVisible !== nextProps.isVisible) {\n        this.setState({\n          isTransitionStarted: true\n        });\n      }\n    }\n  }, {\n    key: \"updateSize\",\n    value: function updateSize(props) {\n      var _this$state2 = this.state,\n          fullWidth = _this$state2.fullWidth,\n          fullHeight = _this$state2.fullHeight;\n      this.setState({\n        size: props.fluid ? this.state.size / getFullSize(props.position, fullWidth, fullHeight) : getFullSize(props.position, fullWidth, fullHeight) * this.state.size\n      });\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate(prevProps) {\n      var _this2 = this;\n\n      if (this.props.isVisible !== prevProps.isVisible) {\n        if (!this.props.isVisible) {\n          window.setTimeout(function () {\n            return _this2.hideDim();\n          }, this.props.duration);\n        } else {\n          this.setState({\n            isDimHidden: false\n          });\n        }\n\n        window.setTimeout(function () {\n          return _this2.setState({\n            isTransitionStarted: false\n          });\n        }, 0);\n      }\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this$props2 = this.props,\n          children = _this$props2.children,\n          zIndex = _this$props2.zIndex,\n          dimMode = _this$props2.dimMode,\n          position = _this$props2.position,\n          isVisible = _this$props2.isVisible;\n      var _this$state3 = this.state,\n          isResizing = _this$state3.isResizing,\n          size = _this$state3.size,\n          isDimHidden = _this$state3.isDimHidden;\n      var dimStyles = Object.assign.apply(Object, [{}].concat(_toConsumableArray(getDimStyles(this.props, this.state))));\n      var dockStyles = Object.assign.apply(Object, [{}].concat(_toConsumableArray(getDockStyles(this.props, this.state))));\n      var resizerStyles = Object.assign.apply(Object, [{}].concat(_toConsumableArray(getResizerStyles(position))));\n      return /*#__PURE__*/React.createElement(\"div\", {\n        style: Object.assign({}, styles.wrapper, {\n          zIndex: zIndex\n        })\n      }, dimMode !== 'none' && !isDimHidden && /*#__PURE__*/React.createElement(\"div\", {\n        style: dimStyles,\n        onClick: this.handleDimClick\n      }), /*#__PURE__*/React.createElement(\"div\", {\n        style: dockStyles\n      }, /*#__PURE__*/React.createElement(\"div\", {\n        style: resizerStyles,\n        onMouseDown: this.handleMouseDown,\n        onTouchStart: this.handleMouseDown\n      }), /*#__PURE__*/React.createElement(\"div\", {\n        style: styles.dockContent\n      }, typeof children === 'function' ? children({\n        position: position,\n        isResizing: isResizing,\n        size: size,\n        isVisible: isVisible\n      }) : children)));\n    }\n  }]);\n\n  return Dock;\n}(Component);\n\n_defineProperty(Dock, \"propTypes\", {\n  position: PropTypes.oneOf(['left', 'right', 'top', 'bottom']),\n  zIndex: PropTypes.number,\n  fluid: PropTypes.bool,\n  size: PropTypes.number,\n  defaultSize: PropTypes.number,\n  dimMode: PropTypes.oneOf(['none', 'transparent', 'opaque']),\n  isVisible: PropTypes.bool,\n  onVisibleChange: PropTypes.func,\n  onSizeChange: PropTypes.func,\n  dimStyle: PropTypes.object,\n  dockStyle: PropTypes.object,\n  duration: PropTypes.number\n});\n\n_defineProperty(Dock, \"defaultProps\", {\n  position: 'left',\n  zIndex: 99999999,\n  fluid: true,\n  defaultSize: 0.3,\n  dimMode: 'opaque',\n  duration: 200\n});\n\nexport { Dock as default };","export { default as Dock } from './Dock';","/* tabs.tsx generated by @compiled/babel-plugin v0.17.1 */\nimport { ax, ix, CC, CS } from \"@compiled/react/runtime\";\nimport React, { useContext } from \"react\";\nimport theme from \"../theme\";\nvar _21 = \"._4t3it4lq{height:calc(100% - 3pc)}\";\nvar _20 = \"._1hvw1o36:focus{outline-width:medium}\";\nvar _19 = \"._49pcglyw:focus{outline-style:none}\";\nvar _18 = \"._nt751r31:focus{outline-color:currentColor}\";\nvar _17 = \"._irr33ch5:hover{background-color:rgba(205,214,244,.05)}\";\nvar _16 = \"._d0altlke:hover{cursor:pointer}\";\nvar _15 = \"._n7zl13lm{border-bottom:var(--_1deexx)}\";\nvar _14 = \"._uiztglyw{-webkit-user-select:none;-moz-user-select:none;user-select:none}\";\nvar _13 = \"._vchhusvi{box-sizing:border-box}\";\nvar _12 = \"._19bv1tcg{padding-left:24px}\";\nvar _11 = \"._n3tddlk8{padding-bottom:14px}\";\nvar _10 = \"._u5f31tcg{padding-right:24px}\";\nvar _9 = \"._ca0q7vkz{padding-top:1pc}\";\nvar _8 = \"._1wybw1gv{font-size:13px}\";\nvar _7 = \"._1p1dangw{text-transform:uppercase}\";\nvar _6 = \"._syaz5y2n{color:#cdd6f4}\";\nvar _5 = \"._1bsb1osq{width:100%}\";\nvar _4 = \"._4t3i1osq{height:100%}\";\nvar _3 = \"._n7zl14jc{border-bottom:1px solid rgba(203,166,247,.2)}\";\nvar _2 = \"._qtt8glyw{list-style:none}\";\nvar _ = \"._1e0c1txw{display:flex}\";\nvar TabsContextProvider = /*#__PURE__*/React.createContext({\n  selectedIndex: \"state\",\n  // eslint-disable-next-line\n  onSelect: function onSelect(_index) {}\n});\nexport var TabList = function TabList(_ref) {\n  var children = _ref.children;\n  return /*#__PURE__*/React.createElement(CC, null, /*#__PURE__*/React.createElement(CS, null, [_, _2, _3]), /*#__PURE__*/React.createElement(\"div\", {\n    \"data-test-id\": \"__prosemirror_devtools_tabs_buttons_container__\",\n    className: ax([\"_1e0c1txw _qtt8glyw _n7zl14jc\"])\n  }, children));\n};\nvar TabsStyled = function TabsStyled(_ref2) {\n  var children = _ref2.children;\n  return /*#__PURE__*/React.createElement(CC, null, /*#__PURE__*/React.createElement(CS, null, [_4, _5]), /*#__PURE__*/React.createElement(\"div\", {\n    \"data-test-id\": \"__prosemirror_devtools_tabs_container__\",\n    className: ax([\"_4t3i1osq _1bsb1osq\"])\n  }, children));\n};\nvar TabStyled = function TabStyled(_ref3) {\n  var children = _ref3.children,\n    isSelected = _ref3.isSelected,\n    onClick = _ref3.onClick;\n  return /*#__PURE__*/React.createElement(CC, null, /*#__PURE__*/React.createElement(CS, null, [_6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20]), /*#__PURE__*/React.createElement(\"div\", {\n    onClick: onClick,\n    className: ax([\"_syaz5y2n _1p1dangw _1wybw1gv _ca0q7vkz _u5f31tcg _n3tddlk8 _19bv1tcg _vchhusvi _uiztglyw _n7zl13lm _d0altlke _irr33ch5 _nt751r31 _49pcglyw _1hvw1o36\"]),\n    style: {\n      \"--_1deexx\": ix(isSelected ? \"2px solid \".concat(theme.main) : \"none\")\n    }\n  }, children));\n};\nexport function Tab(_ref4) {\n  var index = _ref4.index,\n    children = _ref4.children;\n  var tabs = useContext(TabsContextProvider);\n  return /*#__PURE__*/React.createElement(TabStyled, {\n    isSelected: index === tabs.selectedIndex,\n    onClick: function onClick() {\n      return tabs.onSelect(index);\n    }\n  }, children);\n}\nexport function TabPanel(props) {\n  var tabs = useContext(TabsContextProvider);\n  return /*#__PURE__*/React.createElement(CC, null, /*#__PURE__*/React.createElement(CS, null, [_5, _21, _13]), /*#__PURE__*/React.createElement(\"div\", {\n    className: ax([\"_1bsb1osq _4t3it4lq _vchhusvi\"])\n  }, props.children({\n    index: tabs.selectedIndex\n  })));\n}\nexport function Tabs(props) {\n  return /*#__PURE__*/React.createElement(TabsContextProvider.Provider, {\n    value: {\n      onSelect: props.onSelect,\n      selectedIndex: props.selectedIndex\n    }\n  }, /*#__PURE__*/React.createElement(TabsStyled, null, props.children));\n}","var copyProps = [\"jsonID\", \"empty\", \"anchor\", \"from\", \"head\", \"to\", \"$anchor\", \"$head\", \"$cursor\", \"$to\", \"$from\"];\nvar copySubProps = {\n  $from: [\"nodeAfter\", \"nodeBefore\", \"parent\", \"textOffset\", \"depth\", \"pos\"],\n  $to: [\"nodeAfter\", \"nodeBefore\", \"parent\", \"textOffset\", \"depth\", \"pos\"]\n};\nvar isNode = [\"nodeAfter\", \"nodeBefore\", \"parent\"];\nfunction filterProps(selection, props, subProps) {\n  return props.reduce(function (acc, prop) {\n    if (subProps && subProps[prop]) {\n      acc[prop] = subProps[prop].reduce(function (subAcc, subProp) {\n        subAcc[subProp] = isNode.indexOf(subProp) === -1 || !selection[prop][subProp] ? selection[prop][subProp] : selection[prop][subProp].toJSON();\n        return subAcc;\n      }, {});\n    } else {\n      acc[prop === \"jsonID\" ? \"type\" : prop] = selection[prop];\n    }\n    return acc;\n  }, {});\n}\nexport function expandedStateFormatSelection(selection) {\n  return filterProps(selection, copyProps, copySubProps);\n}\nexport function collapsedStateFormatSelection(selection) {\n  return filterProps(selection, copyProps.slice(0, 6));\n}","/* split-view.tsx generated by @compiled/babel-plugin v0.17.1 */\nimport { ax, ix, CC, CS } from \"@compiled/react/runtime\";\nimport React from \"react\";\nimport theme from \"../theme\";\nvar _18 = \"._p12f1mu9{max-width:var(--_1p7w3p2)}\";\nvar _17 = \"._1ul9fx7m{min-width:var(--_74ww00)}\";\nvar _16 = \"._19bvidpf{padding-left:0}\";\nvar _15 = \"._n3tdidpf{padding-bottom:0}\";\nvar _14 = \"._u5f3idpf{padding-right:0}\";\nvar _13 = \"._ca0qidpf{padding-top:0}\";\nvar _12 = \"._16jlkb7n{flex-grow:1}\";\nvar _11 = \"._1kl79cqg{border-left:var(--_7sctaf)}\";\nvar _10 = \"._19bvf6fq{padding-left:18px}\";\nvar _9 = \"._n3tdf6fq{padding-bottom:18px}\";\nvar _8 = \"._u5f3f6fq{padding-right:18px}\";\nvar _7 = \"._ca0q7vkz{padding-top:1pc}\";\nvar _6 = \"._1kl7glyw{border-left:none}\";\nvar _5 = \"._18m915zi{overflow-y:scroll}\";\nvar _4 = \"._1reo15zi{overflow-x:scroll}\";\nvar _3 = \"._vchhusvi{box-sizing:border-box}\";\nvar _2 = \"._4t3i1osq{height:100%}\";\nvar _ = \"._1e0c1txw{display:flex}\";\nexport var SplitView = function SplitView(_ref) {\n  var children = _ref.children,\n    testId = _ref.testId;\n  return /*#__PURE__*/React.createElement(CC, null, /*#__PURE__*/React.createElement(CS, null, [_, _2]), /*#__PURE__*/React.createElement(\"div\", {\n    \"data-test-id\": testId,\n    className: ax([\"_1e0c1txw _4t3i1osq\"])\n  }, children));\n};\nvar splitViewColStyles = null;\nvar splitViewColGrowStyles = null;\nvar splitViewColSepStyles = null;\nvar splitViewColNoPaddingStyles = null;\nexport var SplitViewCol = function SplitViewCol(_ref2) {\n  var children = _ref2.children,\n    sep = _ref2.sep,\n    grow = _ref2.grow,\n    noPaddings = _ref2.noPaddings,\n    minWidth = _ref2.minWidth,\n    maxWidth = _ref2.maxWidth;\n  return /*#__PURE__*/React.createElement(CC, null, /*#__PURE__*/React.createElement(CS, null, [_3, _2, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18]), /*#__PURE__*/React.createElement(\"div\", {\n    className: ax([\"_vchhusvi _4t3i1osq _1reo15zi _18m915zi _1kl7glyw _ca0q7vkz _u5f3f6fq _n3tdf6fq _19bvf6fq\", sep && \"_1kl79cqg\", grow && \"_16jlkb7n\", noPaddings && \"_ca0qidpf _u5f3idpf _n3tdidpf _19bvidpf\", \"_1ul9fx7m _p12f1mu9\"]),\n    style: {\n      \"--_7sctaf\": ix(\"1px solid \" + theme.main20),\n      \"--_74ww00\": ix(minWidth ? \"\".concat(minWidth, \"px\") : \"none\"),\n      \"--_1p7w3p2\": ix(maxWidth ? \"\".concat(maxWidth, \"px\") : \"none\")\n    }\n  }, children));\n};","function _extends() {\n  return _extends = Object.assign ? Object.assign.bind() : function (n) {\n    for (var e = 1; e < arguments.length; e++) {\n      var t = arguments[e];\n      for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n    }\n    return n;\n  }, _extends.apply(null, arguments);\n}\nexport { _extends as default };","function _objectWithoutPropertiesLoose(r, e) {\n  if (null == r) return {};\n  var t = {};\n  for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n    if (-1 !== e.indexOf(n)) continue;\n    t[n] = r[n];\n  }\n  return t;\n}\nexport { _objectWithoutPropertiesLoose as default };","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nfunction _objectWithoutProperties(e, t) {\n  if (null == e) return {};\n  var o,\n    r,\n    i = objectWithoutPropertiesLoose(e, t);\n  if (Object.getOwnPropertySymbols) {\n    var n = Object.getOwnPropertySymbols(e);\n    for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]);\n  }\n  return i;\n}\nexport { _objectWithoutProperties as default };","function _arrayWithHoles(r) {\n  if (Array.isArray(r)) return r;\n}\nexport { _arrayWithHoles as default };","function _iterableToArrayLimit(r, l) {\n  var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n  if (null != t) {\n    var e,\n      n,\n      i,\n      u,\n      a = [],\n      f = !0,\n      o = !1;\n    try {\n      if (i = (t = t.call(r)).next, 0 === l) {\n        if (Object(t) !== t) return;\n        f = !1;\n      } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n    } catch (r) {\n      o = !0, n = r;\n    } finally {\n      try {\n        if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n      } finally {\n        if (o) throw n;\n      }\n    }\n    return a;\n  }\n}\nexport { _iterableToArrayLimit as default };","function _nonIterableRest() {\n  throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _nonIterableRest as default };","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nfunction _slicedToArray(r, e) {\n  return arrayWithHoles(r) || iterableToArrayLimit(r, e) || unsupportedIterableToArray(r, e) || nonIterableRest();\n}\nexport { _slicedToArray as default };","export default function objType(obj) {\n  var type = Object.prototype.toString.call(obj).slice(8, -1);\n\n  if (type === 'Object' && typeof obj[Symbol.iterator] === 'function') {\n    return 'Iterable';\n  }\n\n  if (type === 'Custom' && obj.constructor !== Object && obj instanceof Object) {\n    // For projects implementing objects overriding `.prototype[Symbol.toStringTag]`\n    return 'Object';\n  }\n\n  return type;\n}","import _extends from \"@babel/runtime/helpers/extends\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nvar JSONArrow = function JSONArrow(_ref) {\n  var styling = _ref.styling,\n      arrowStyle = _ref.arrowStyle,\n      expanded = _ref.expanded,\n      nodeType = _ref.nodeType,\n      onClick = _ref.onClick;\n  return /*#__PURE__*/React.createElement(\"div\", _extends({}, styling('arrowContainer', arrowStyle), {\n    onClick: onClick\n  }), /*#__PURE__*/React.createElement(\"div\", styling(['arrow', 'arrowSign'], nodeType, expanded, arrowStyle), \"\\u25B6\", arrowStyle === 'double' && /*#__PURE__*/React.createElement(\"div\", styling(['arrowSign', 'arrowSignInner']), \"\\u25B6\")));\n};\n\nJSONArrow.propTypes = {\n  styling: PropTypes.func.isRequired,\n  arrowStyle: PropTypes.oneOf(['single', 'double']),\n  expanded: PropTypes.bool.isRequired,\n  nodeType: PropTypes.string.isRequired,\n  onClick: PropTypes.func.isRequired\n};\nJSONArrow.defaultProps = {\n  arrowStyle: 'single'\n};\nexport default JSONArrow;","import _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction getLength(type, collection) {\n  if (type === 'Object') {\n    // eslint-disable-next-line @typescript-eslint/ban-types\n    return Object.keys(collection).length;\n  } else if (type === 'Array') {\n    return collection.length;\n  }\n\n  return Infinity;\n}\n\nfunction isIterableMap(collection) {\n  return typeof collection.set === 'function';\n}\n\nfunction getEntries(type, collection, sortObjectKeys) {\n  var from = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n  var to = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : Infinity;\n  var res;\n\n  if (type === 'Object') {\n    var keys = Object.getOwnPropertyNames(collection);\n\n    if (sortObjectKeys) {\n      keys.sort(sortObjectKeys === true ? undefined : sortObjectKeys);\n    }\n\n    keys = keys.slice(from, to + 1);\n    res = {\n      entries: keys.map(function (key) {\n        return {\n          key: key,\n          value: collection[key]\n        };\n      })\n    };\n  } else if (type === 'Array') {\n    res = {\n      entries: collection.slice(from, to + 1).map(function (val, idx) {\n        return {\n          key: idx + from,\n          value: val\n        };\n      })\n    };\n  } else {\n    var idx = 0;\n    var entries = [];\n    var done = true;\n    var isMap = isIterableMap(collection);\n\n    var _iterator = _createForOfIteratorHelper(collection),\n        _step;\n\n    try {\n      for (_iterator.s(); !(_step = _iterator.n()).done;) {\n        var item = _step.value;\n\n        if (idx > to) {\n          done = false;\n          break;\n        }\n\n        if (from <= idx) {\n          if (isMap && Array.isArray(item)) {\n            if (typeof item[0] === 'string' || typeof item[0] === 'number') {\n              entries.push({\n                key: item[0],\n                value: item[1]\n              });\n            } else {\n              entries.push({\n                key: \"[entry \".concat(idx, \"]\"),\n                value: {\n                  '[key]': item[0],\n                  '[value]': item[1]\n                }\n              });\n            }\n          } else {\n            entries.push({\n              key: idx,\n              value: item\n            });\n          }\n        }\n\n        idx++;\n      }\n    } catch (err) {\n      _iterator.e(err);\n    } finally {\n      _iterator.f();\n    }\n\n    res = {\n      hasMore: !done,\n      entries: entries\n    };\n  }\n\n  return res;\n}\n\nfunction getRanges(from, to, limit) {\n  var ranges = [];\n\n  while (to - from > limit * limit) {\n    limit = limit * limit;\n  }\n\n  for (var i = from; i <= to; i += limit) {\n    ranges.push({\n      from: i,\n      to: Math.min(to, i + limit - 1)\n    });\n  }\n\n  return ranges;\n}\n\nexport default function getCollectionEntries(type, collection, sortObjectKeys, limit) {\n  var from = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;\n  var to = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : Infinity;\n  var getEntriesBound = getEntries.bind(null, type, collection, sortObjectKeys);\n\n  if (!limit) {\n    return getEntriesBound().entries;\n  }\n\n  var isSubset = to < Infinity;\n  var length = Math.min(to - from, getLength(type, collection));\n\n  if (type !== 'Iterable') {\n    if (length <= limit || limit < 7) {\n      return getEntriesBound(from, to).entries;\n    }\n  } else {\n    if (length <= limit && !isSubset) {\n      return getEntriesBound(from, to).entries;\n    }\n  }\n\n  var limitedEntries;\n\n  if (type === 'Iterable') {\n    var _getEntriesBound = getEntriesBound(from, from + limit - 1),\n        hasMore = _getEntriesBound.hasMore,\n        entries = _getEntriesBound.entries;\n\n    limitedEntries = hasMore ? [].concat(_toConsumableArray(entries), _toConsumableArray(getRanges(from + limit, from + 2 * limit - 1, limit))) : entries;\n  } else {\n    limitedEntries = isSubset ? getRanges(from, to, limit) : [].concat(_toConsumableArray(getEntriesBound(0, limit - 5).entries), _toConsumableArray(getRanges(limit - 4, length - 5, limit)), _toConsumableArray(getEntriesBound(length - 4, length - 1).entries));\n  }\n\n  return limitedEntries;\n}","import _extends from \"@babel/runtime/helpers/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport JSONArrow from './JSONArrow';\n\nvar ItemRange = /*#__PURE__*/function (_React$Component) {\n  _inherits(ItemRange, _React$Component);\n\n  var _super = _createSuper(ItemRange);\n\n  function ItemRange(props) {\n    var _this;\n\n    _classCallCheck(this, ItemRange);\n\n    _this = _super.call(this, props);\n\n    _defineProperty(_assertThisInitialized(_this), \"handleClick\", function () {\n      _this.setState({\n        expanded: !_this.state.expanded\n      });\n    });\n\n    _this.state = {\n      expanded: false\n    };\n    return _this;\n  }\n\n  _createClass(ItemRange, [{\n    key: \"render\",\n    value: function render() {\n      var _this$props = this.props,\n          styling = _this$props.styling,\n          from = _this$props.from,\n          to = _this$props.to,\n          renderChildNodes = _this$props.renderChildNodes,\n          nodeType = _this$props.nodeType;\n      return this.state.expanded ? /*#__PURE__*/React.createElement(\"div\", styling('itemRange', this.state.expanded), renderChildNodes(this.props, from, to)) : /*#__PURE__*/React.createElement(\"div\", _extends({}, styling('itemRange', this.state.expanded), {\n        onClick: this.handleClick\n      }), /*#__PURE__*/React.createElement(JSONArrow, {\n        nodeType: nodeType,\n        styling: styling,\n        expanded: false,\n        onClick: this.handleClick,\n        arrowStyle: \"double\"\n      }), \"\".concat(from, \" ... \").concat(to));\n    }\n  }]);\n\n  return ItemRange;\n}(React.Component);\n\n_defineProperty(ItemRange, \"propTypes\", {\n  styling: PropTypes.func.isRequired,\n  from: PropTypes.number.isRequired,\n  to: PropTypes.number.isRequired,\n  renderChildNodes: PropTypes.func.isRequired,\n  nodeType: PropTypes.string.isRequired\n});\n\nexport { ItemRange as default };","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\nimport _extends from \"@babel/runtime/helpers/extends\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport JSONArrow from './JSONArrow';\nimport getCollectionEntries from './getCollectionEntries';\nimport JSONNode from './JSONNode';\nimport ItemRange from './ItemRange';\n\nfunction isRange(rangeOrEntry) {\n  return rangeOrEntry.to !== undefined;\n}\n\nfunction renderChildNodes(props, from, to) {\n  var nodeType = props.nodeType,\n      data = props.data,\n      collectionLimit = props.collectionLimit,\n      circularCache = props.circularCache,\n      keyPath = props.keyPath,\n      postprocessValue = props.postprocessValue,\n      sortObjectKeys = props.sortObjectKeys;\n  var childNodes = [];\n  getCollectionEntries(nodeType, data, sortObjectKeys, collectionLimit, from, to).forEach(function (entry) {\n    if (isRange(entry)) {\n      childNodes.push( /*#__PURE__*/React.createElement(ItemRange, _extends({}, props, {\n        key: \"ItemRange--\".concat(entry.from, \"-\").concat(entry.to),\n        from: entry.from,\n        to: entry.to,\n        renderChildNodes: renderChildNodes\n      })));\n    } else {\n      var key = entry.key,\n          value = entry.value;\n      var isCircular = circularCache.indexOf(value) !== -1;\n      childNodes.push( /*#__PURE__*/React.createElement(JSONNode, _extends({}, props, {\n        postprocessValue: postprocessValue,\n        collectionLimit: collectionLimit,\n        key: \"Node--\".concat(key),\n        keyPath: [key].concat(_toConsumableArray(keyPath)),\n        value: postprocessValue(value),\n        circularCache: [].concat(_toConsumableArray(circularCache), [value]),\n        isCircular: isCircular,\n        hideRoot: false\n      })));\n    }\n  });\n  return childNodes;\n}\n\nfunction getStateFromProps(props) {\n  // calculate individual node expansion if necessary\n  var expanded = !props.isCircular ? props.shouldExpandNode(props.keyPath, props.data, props.level) : false;\n  return {\n    expanded: expanded\n  };\n}\n\nvar JSONNestedNode = /*#__PURE__*/function (_React$Component) {\n  _inherits(JSONNestedNode, _React$Component);\n\n  var _super = _createSuper(JSONNestedNode);\n\n  function JSONNestedNode(props) {\n    var _this;\n\n    _classCallCheck(this, JSONNestedNode);\n\n    _this = _super.call(this, props);\n\n    _defineProperty(_assertThisInitialized(_this), \"handleClick\", function () {\n      if (_this.props.expandable) {\n        _this.setState({\n          expanded: !_this.state.expanded\n        });\n      }\n    });\n\n    _this.state = getStateFromProps(props);\n    return _this;\n  }\n\n  _createClass(JSONNestedNode, [{\n    key: \"UNSAFE_componentWillReceiveProps\",\n    value: function UNSAFE_componentWillReceiveProps(nextProps) {\n      var nextState = getStateFromProps(nextProps);\n\n      if (getStateFromProps(this.props).expanded !== nextState.expanded) {\n        this.setState(nextState);\n      }\n    }\n  }, {\n    key: \"shouldComponentUpdate\",\n    value: function shouldComponentUpdate(nextProps, nextState) {\n      var _this2 = this;\n\n      return !!Object.keys(nextProps).find(function (key) {\n        return key !== 'circularCache' && (key === 'keyPath' ? nextProps[key].join('/') !== _this2.props[key].join('/') : nextProps[key] !== _this2.props[key]);\n      }) || nextState.expanded !== this.state.expanded;\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this$props = this.props,\n          getItemString = _this$props.getItemString,\n          nodeTypeIndicator = _this$props.nodeTypeIndicator,\n          nodeType = _this$props.nodeType,\n          data = _this$props.data,\n          hideRoot = _this$props.hideRoot,\n          createItemString = _this$props.createItemString,\n          styling = _this$props.styling,\n          collectionLimit = _this$props.collectionLimit,\n          keyPath = _this$props.keyPath,\n          labelRenderer = _this$props.labelRenderer,\n          expandable = _this$props.expandable;\n      var expanded = this.state.expanded;\n      var renderedChildren = expanded || hideRoot && this.props.level === 0 ? renderChildNodes(_objectSpread(_objectSpread({}, this.props), {}, {\n        level: this.props.level + 1\n      })) : null;\n      var itemType = /*#__PURE__*/React.createElement(\"span\", styling('nestedNodeItemType', expanded), nodeTypeIndicator);\n      var renderedItemString = getItemString(nodeType, data, itemType, createItemString(data, collectionLimit), keyPath);\n      var stylingArgs = [keyPath, nodeType, expanded, expandable];\n      return hideRoot ? /*#__PURE__*/React.createElement(\"li\", styling.apply(void 0, ['rootNode'].concat(stylingArgs)), /*#__PURE__*/React.createElement(\"ul\", styling.apply(void 0, ['rootNodeChildren'].concat(stylingArgs)), renderedChildren)) : /*#__PURE__*/React.createElement(\"li\", styling.apply(void 0, ['nestedNode'].concat(stylingArgs)), expandable && /*#__PURE__*/React.createElement(JSONArrow, {\n        styling: styling,\n        nodeType: nodeType,\n        expanded: expanded,\n        onClick: this.handleClick\n      }), /*#__PURE__*/React.createElement(\"label\", _extends({}, styling.apply(void 0, [['label', 'nestedNodeLabel']].concat(stylingArgs)), {\n        onClick: this.handleClick\n      }), labelRenderer.apply(void 0, stylingArgs)), /*#__PURE__*/React.createElement(\"span\", _extends({}, styling.apply(void 0, ['nestedNodeItemString'].concat(stylingArgs)), {\n        onClick: this.handleClick\n      }), renderedItemString), /*#__PURE__*/React.createElement(\"ul\", styling.apply(void 0, ['nestedNodeChildren'].concat(stylingArgs)), renderedChildren));\n    }\n  }]);\n\n  return JSONNestedNode;\n}(React.Component);\n\n_defineProperty(JSONNestedNode, \"propTypes\", {\n  getItemString: PropTypes.func.isRequired,\n  nodeTypeIndicator: PropTypes.any,\n  nodeType: PropTypes.string.isRequired,\n  data: PropTypes.any,\n  hideRoot: PropTypes.bool.isRequired,\n  createItemString: PropTypes.func.isRequired,\n  styling: PropTypes.func.isRequired,\n  collectionLimit: PropTypes.number,\n  keyPath: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number])).isRequired,\n  labelRenderer: PropTypes.func.isRequired,\n  shouldExpandNode: PropTypes.func,\n  level: PropTypes.number.isRequired,\n  sortObjectKeys: PropTypes.oneOfType([PropTypes.func, PropTypes.bool]),\n  isCircular: PropTypes.bool,\n  expandable: PropTypes.bool\n});\n\n_defineProperty(JSONNestedNode, \"defaultProps\", {\n  data: [],\n  circularCache: [],\n  level: 0,\n  expandable: true\n});\n\nexport { JSONNestedNode as default };","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"data\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport JSONNestedNode from './JSONNestedNode';\n\n// Returns the \"n Items\" string for this node,\n// generating and caching it if it hasn't been created yet.\nfunction createItemString(data) {\n  var len = Object.getOwnPropertyNames(data).length;\n  return \"\".concat(len, \" \").concat(len !== 1 ? 'keys' : 'key');\n}\n\n// Configures <JSONNestedNode> to render an Object\nvar JSONObjectNode = function JSONObjectNode(_ref) {\n  var data = _ref.data,\n      props = _objectWithoutProperties(_ref, _excluded);\n\n  return /*#__PURE__*/React.createElement(JSONNestedNode, _extends({}, props, {\n    data: data,\n    nodeType: \"Object\",\n    nodeTypeIndicator: props.nodeType === 'Error' ? 'Error()' : '{}',\n    createItemString: createItemString,\n    expandable: Object.getOwnPropertyNames(data).length > 0\n  }));\n};\n\nJSONObjectNode.propTypes = {\n  data: PropTypes.object,\n  nodeType: PropTypes.string.isRequired\n};\nexport default JSONObjectNode;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"data\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport JSONNestedNode from './JSONNestedNode';\n\n// Returns the \"n Items\" string for this node,\n// generating and caching it if it hasn't been created yet.\nfunction createItemString(data) {\n  return \"\".concat(data.length, \" \").concat(data.length !== 1 ? 'items' : 'item');\n}\n\n// Configures <JSONNestedNode> to render an Array\nvar JSONArrayNode = function JSONArrayNode(_ref) {\n  var data = _ref.data,\n      props = _objectWithoutProperties(_ref, _excluded);\n\n  return /*#__PURE__*/React.createElement(JSONNestedNode, _extends({}, props, {\n    data: data,\n    nodeType: \"Array\",\n    nodeTypeIndicator: \"[]\",\n    createItemString: createItemString,\n    expandable: data.length > 0\n  }));\n};\n\nJSONArrayNode.propTypes = {\n  data: PropTypes.array\n};\nexport default JSONArrayNode;","import _extends from \"@babel/runtime/helpers/extends\";\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport React from 'react';\nimport JSONNestedNode from './JSONNestedNode';\n\n// Returns the \"n Items\" string for this node,\n// generating and caching it if it hasn't been created yet.\nfunction createItemString(data, limit) {\n  var count = 0;\n  var hasMore = false;\n\n  if (Number.isSafeInteger(data.size)) {\n    count = data.size;\n  } else {\n    // eslint-disable-next-line no-unused-vars\n    var _iterator = _createForOfIteratorHelper(data),\n        _step;\n\n    try {\n      for (_iterator.s(); !(_step = _iterator.n()).done;) {\n        var entry = _step.value;\n\n        if (limit && count + 1 > limit) {\n          hasMore = true;\n          break;\n        }\n\n        count += 1;\n      }\n    } catch (err) {\n      _iterator.e(err);\n    } finally {\n      _iterator.f();\n    }\n  }\n\n  return \"\".concat(hasMore ? '>' : '').concat(count, \" \").concat(count !== 1 ? 'entries' : 'entry');\n}\n\n// Configures <JSONNestedNode> to render an iterable\nvar JSONIterableNode = function JSONIterableNode(_ref) {\n  var props = _extends({}, _ref);\n\n  return /*#__PURE__*/React.createElement(JSONNestedNode, _extends({}, props, {\n    nodeType: \"Iterable\",\n    nodeTypeIndicator: \"()\",\n    createItemString: createItemString\n  }));\n};\n\nexport default JSONIterableNode;","import _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nvar JSONValueNode = function JSONValueNode(_ref) {\n  var nodeType = _ref.nodeType,\n      styling = _ref.styling,\n      labelRenderer = _ref.labelRenderer,\n      keyPath = _ref.keyPath,\n      valueRenderer = _ref.valueRenderer,\n      value = _ref.value,\n      _ref$valueGetter = _ref.valueGetter,\n      valueGetter = _ref$valueGetter === void 0 ? function (value) {\n    return value;\n  } : _ref$valueGetter;\n  return /*#__PURE__*/React.createElement(\"li\", styling('value', nodeType, keyPath), /*#__PURE__*/React.createElement(\"label\", styling(['label', 'valueLabel'], nodeType, keyPath), labelRenderer(keyPath, nodeType, false, false)), /*#__PURE__*/React.createElement(\"span\", styling('valueText', nodeType, keyPath), valueRenderer.apply(void 0, [valueGetter(value), value].concat(_toConsumableArray(keyPath)))));\n};\n\nJSONValueNode.propTypes = {\n  nodeType: PropTypes.string.isRequired,\n  styling: PropTypes.func.isRequired,\n  labelRenderer: PropTypes.func.isRequired,\n  keyPath: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired).isRequired,\n  valueRenderer: PropTypes.func.isRequired,\n  value: PropTypes.any,\n  valueGetter: PropTypes.func\n};\nexport default JSONValueNode;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"getItemString\", \"keyPath\", \"labelRenderer\", \"styling\", \"value\", \"valueRenderer\", \"isCustomNode\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport objType from './objType';\nimport JSONObjectNode from './JSONObjectNode';\nimport JSONArrayNode from './JSONArrayNode';\nimport JSONIterableNode from './JSONIterableNode';\nimport JSONValueNode from './JSONValueNode';\n\nvar JSONNode = function JSONNode(_ref) {\n  var getItemString = _ref.getItemString,\n      keyPath = _ref.keyPath,\n      labelRenderer = _ref.labelRenderer,\n      styling = _ref.styling,\n      value = _ref.value,\n      valueRenderer = _ref.valueRenderer,\n      isCustomNode = _ref.isCustomNode,\n      rest = _objectWithoutProperties(_ref, _excluded);\n\n  var nodeType = isCustomNode(value) ? 'Custom' : objType(value);\n  var simpleNodeProps = {\n    getItemString: getItemString,\n    key: keyPath[0],\n    keyPath: keyPath,\n    labelRenderer: labelRenderer,\n    nodeType: nodeType,\n    styling: styling,\n    value: value,\n    valueRenderer: valueRenderer\n  };\n\n  var nestedNodeProps = _objectSpread(_objectSpread(_objectSpread({}, rest), simpleNodeProps), {}, {\n    data: value,\n    isCustomNode: isCustomNode\n  });\n\n  switch (nodeType) {\n    case 'Object':\n    case 'Error':\n    case 'WeakMap':\n    case 'WeakSet':\n      return /*#__PURE__*/React.createElement(JSONObjectNode, nestedNodeProps);\n\n    case 'Array':\n      return /*#__PURE__*/React.createElement(JSONArrayNode, nestedNodeProps);\n\n    case 'Iterable':\n    case 'Map':\n    case 'Set':\n      return /*#__PURE__*/React.createElement(JSONIterableNode, nestedNodeProps);\n\n    case 'String':\n      return /*#__PURE__*/React.createElement(JSONValueNode, _extends({}, simpleNodeProps, {\n        valueGetter: function valueGetter(raw) {\n          return \"\\\"\".concat(raw, \"\\\"\");\n        }\n      }));\n\n    case 'Number':\n      return /*#__PURE__*/React.createElement(JSONValueNode, simpleNodeProps);\n\n    case 'Boolean':\n      return /*#__PURE__*/React.createElement(JSONValueNode, _extends({}, simpleNodeProps, {\n        valueGetter: function valueGetter(raw) {\n          return raw ? 'true' : 'false';\n        }\n      }));\n\n    case 'Date':\n      return /*#__PURE__*/React.createElement(JSONValueNode, _extends({}, simpleNodeProps, {\n        valueGetter: function valueGetter(raw) {\n          return raw.toISOString();\n        }\n      }));\n\n    case 'Null':\n      return /*#__PURE__*/React.createElement(JSONValueNode, _extends({}, simpleNodeProps, {\n        valueGetter: function valueGetter() {\n          return 'null';\n        }\n      }));\n\n    case 'Undefined':\n      return /*#__PURE__*/React.createElement(JSONValueNode, _extends({}, simpleNodeProps, {\n        valueGetter: function valueGetter() {\n          return 'undefined';\n        }\n      }));\n\n    case 'Function':\n    case 'Symbol':\n      return /*#__PURE__*/React.createElement(JSONValueNode, _extends({}, simpleNodeProps, {\n        valueGetter: function valueGetter(raw) {\n          return raw.toString();\n        }\n      }));\n\n    case 'Custom':\n      return /*#__PURE__*/React.createElement(JSONValueNode, simpleNodeProps);\n\n    default:\n      return /*#__PURE__*/React.createElement(JSONValueNode, _extends({}, simpleNodeProps, {\n        valueGetter: function valueGetter() {\n          return \"<\".concat(nodeType, \">\");\n        }\n      }));\n  }\n};\n\nJSONNode.propTypes = {\n  getItemString: PropTypes.func.isRequired,\n  keyPath: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired).isRequired,\n  labelRenderer: PropTypes.func.isRequired,\n  styling: PropTypes.func.isRequired,\n  value: PropTypes.any,\n  valueRenderer: PropTypes.func.isRequired,\n  isCustomNode: PropTypes.func.isRequired\n};\nexport default JSONNode;","'use strict';\n\nexports.__esModule = true;\nexports['default'] = {\n  scheme: 'threezerotwofour',\n  author: 'jan t. sott (http://github.com/idleberg)',\n  base00: '#090300',\n  base01: '#3a3432',\n  base02: '#4a4543',\n  base03: '#5c5855',\n  base04: '#807d7c',\n  base05: '#a5a2a2',\n  base06: '#d6d5d4',\n  base07: '#f7f7f7',\n  base08: '#db2d20',\n  base09: '#e8bbd0',\n  base0A: '#fded02',\n  base0B: '#01a252',\n  base0C: '#b5e4f4',\n  base0D: '#01a0e4',\n  base0E: '#a16a94',\n  base0F: '#cdab53'\n};\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\nexports['default'] = {\n  scheme: 'apathy',\n  author: 'jannik siebert (https://github.com/janniks)',\n  base00: '#031A16',\n  base01: '#0B342D',\n  base02: '#184E45',\n  base03: '#2B685E',\n  base04: '#5F9C92',\n  base05: '#81B5AC',\n  base06: '#A7CEC8',\n  base07: '#D2E7E4',\n  base08: '#3E9688',\n  base09: '#3E7996',\n  base0A: '#3E4C96',\n  base0B: '#883E96',\n  base0C: '#963E4C',\n  base0D: '#96883E',\n  base0E: '#4C963E',\n  base0F: '#3E965B'\n};\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\nexports['default'] = {\n  scheme: 'ashes',\n  author: 'jannik siebert (https://github.com/janniks)',\n  base00: '#1C2023',\n  base01: '#393F45',\n  base02: '#565E65',\n  base03: '#747C84',\n  base04: '#ADB3BA',\n  base05: '#C7CCD1',\n  base06: '#DFE2E5',\n  base07: '#F3F4F5',\n  base08: '#C7AE95',\n  base09: '#C7C795',\n  base0A: '#AEC795',\n  base0B: '#95C7AE',\n  base0C: '#95AEC7',\n  base0D: '#AE95C7',\n  base0E: '#C795AE',\n  base0F: '#C79595'\n};\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\nexports['default'] = {\n  scheme: 'atelier dune',\n  author: 'bram de haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/dune)',\n  base00: '#20201d',\n  base01: '#292824',\n  base02: '#6e6b5e',\n  base03: '#7d7a68',\n  base04: '#999580',\n  base05: '#a6a28c',\n  base06: '#e8e4cf',\n  base07: '#fefbec',\n  base08: '#d73737',\n  base09: '#b65611',\n  base0A: '#cfb017',\n  base0B: '#60ac39',\n  base0C: '#1fad83',\n  base0D: '#6684e1',\n  base0E: '#b854d4',\n  base0F: '#d43552'\n};\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\nexports['default'] = {\n  scheme: 'atelier forest',\n  author: 'bram de haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/forest)',\n  base00: '#1b1918',\n  base01: '#2c2421',\n  base02: '#68615e',\n  base03: '#766e6b',\n  base04: '#9c9491',\n  base05: '#a8a19f',\n  base06: '#e6e2e0',\n  base07: '#f1efee',\n  base08: '#f22c40',\n  base09: '#df5320',\n  base0A: '#d5911a',\n  base0B: '#5ab738',\n  base0C: '#00ad9c',\n  base0D: '#407ee7',\n  base0E: '#6666ea',\n  base0F: '#c33ff3'\n};\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\nexports['default'] = {\n  scheme: 'atelier heath',\n  author: 'bram de haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/heath)',\n  base00: '#1b181b',\n  base01: '#292329',\n  base02: '#695d69',\n  base03: '#776977',\n  base04: '#9e8f9e',\n  base05: '#ab9bab',\n  base06: '#d8cad8',\n  base07: '#f7f3f7',\n  base08: '#ca402b',\n  base09: '#a65926',\n  base0A: '#bb8a35',\n  base0B: '#379a37',\n  base0C: '#159393',\n  base0D: '#516aec',\n  base0E: '#7b59c0',\n  base0F: '#cc33cc'\n};\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\nexports['default'] = {\n  scheme: 'atelier lakeside',\n  author: 'bram de haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/lakeside/)',\n  base00: '#161b1d',\n  base01: '#1f292e',\n  base02: '#516d7b',\n  base03: '#5a7b8c',\n  base04: '#7195a8',\n  base05: '#7ea2b4',\n  base06: '#c1e4f6',\n  base07: '#ebf8ff',\n  base08: '#d22d72',\n  base09: '#935c25',\n  base0A: '#8a8a0f',\n  base0B: '#568c3b',\n  base0C: '#2d8f6f',\n  base0D: '#257fad',\n  base0E: '#5d5db1',\n  base0F: '#b72dd2'\n};\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\nexports['default'] = {\n  scheme: 'atelier seaside',\n  author: 'bram de haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/seaside/)',\n  base00: '#131513',\n  base01: '#242924',\n  base02: '#5e6e5e',\n  base03: '#687d68',\n  base04: '#809980',\n  base05: '#8ca68c',\n  base06: '#cfe8cf',\n  base07: '#f0fff0',\n  base08: '#e6193c',\n  base09: '#87711d',\n  base0A: '#c3c322',\n  base0B: '#29a329',\n  base0C: '#1999b3',\n  base0D: '#3d62f5',\n  base0E: '#ad2bee',\n  base0F: '#e619c3'\n};\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\nexports['default'] = {\n  scheme: 'bespin',\n  author: 'jan t. sott',\n  base00: '#28211c',\n  base01: '#36312e',\n  base02: '#5e5d5c',\n  base03: '#666666',\n  base04: '#797977',\n  base05: '#8a8986',\n  base06: '#9d9b97',\n  base07: '#baae9e',\n  base08: '#cf6a4c',\n  base09: '#cf7d34',\n  base0A: '#f9ee98',\n  base0B: '#54be0d',\n  base0C: '#afc4db',\n  base0D: '#5ea6ea',\n  base0E: '#9b859d',\n  base0F: '#937121'\n};\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\nexports['default'] = {\n  scheme: 'brewer',\n  author: 'timothée poisot (http://github.com/tpoisot)',\n  base00: '#0c0d0e',\n  base01: '#2e2f30',\n  base02: '#515253',\n  base03: '#737475',\n  base04: '#959697',\n  base05: '#b7b8b9',\n  base06: '#dadbdc',\n  base07: '#fcfdfe',\n  base08: '#e31a1c',\n  base09: '#e6550d',\n  base0A: '#dca060',\n  base0B: '#31a354',\n  base0C: '#80b1d3',\n  base0D: '#3182bd',\n  base0E: '#756bb1',\n  base0F: '#b15928'\n};\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\nexports['default'] = {\n  scheme: 'bright',\n  author: 'chris kempson (http://chriskempson.com)',\n  base00: '#000000',\n  base01: '#303030',\n  base02: '#505050',\n  base03: '#b0b0b0',\n  base04: '#d0d0d0',\n  base05: '#e0e0e0',\n  base06: '#f5f5f5',\n  base07: '#ffffff',\n  base08: '#fb0120',\n  base09: '#fc6d24',\n  base0A: '#fda331',\n  base0B: '#a1c659',\n  base0C: '#76c7b7',\n  base0D: '#6fb3d2',\n  base0E: '#d381c3',\n  base0F: '#be643c'\n};\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\nexports['default'] = {\n  scheme: 'chalk',\n  author: 'chris kempson (http://chriskempson.com)',\n  base00: '#151515',\n  base01: '#202020',\n  base02: '#303030',\n  base03: '#505050',\n  base04: '#b0b0b0',\n  base05: '#d0d0d0',\n  base06: '#e0e0e0',\n  base07: '#f5f5f5',\n  base08: '#fb9fb1',\n  base09: '#eda987',\n  base0A: '#ddb26f',\n  base0B: '#acc267',\n  base0C: '#12cfc0',\n  base0D: '#6fc2ef',\n  base0E: '#e1a3ee',\n  base0F: '#deaf8f'\n};\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\nexports['default'] = {\n  scheme: 'codeschool',\n  author: 'brettof86',\n  base00: '#232c31',\n  base01: '#1c3657',\n  base02: '#2a343a',\n  base03: '#3f4944',\n  base04: '#84898c',\n  base05: '#9ea7a6',\n  base06: '#a7cfa3',\n  base07: '#b5d8f6',\n  base08: '#2a5491',\n  base09: '#43820d',\n  base0A: '#a03b1e',\n  base0B: '#237986',\n  base0C: '#b02f30',\n  base0D: '#484d79',\n  base0E: '#c59820',\n  base0F: '#c98344'\n};\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\nexports['default'] = {\n  scheme: 'colors',\n  author: 'mrmrs (http://clrs.cc)',\n  base00: '#111111',\n  base01: '#333333',\n  base02: '#555555',\n  base03: '#777777',\n  base04: '#999999',\n  base05: '#bbbbbb',\n  base06: '#dddddd',\n  base07: '#ffffff',\n  base08: '#ff4136',\n  base09: '#ff851b',\n  base0A: '#ffdc00',\n  base0B: '#2ecc40',\n  base0C: '#7fdbff',\n  base0D: '#0074d9',\n  base0E: '#b10dc9',\n  base0F: '#85144b'\n};\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\nexports['default'] = {\n  scheme: 'default',\n  author: 'chris kempson (http://chriskempson.com)',\n  base00: '#181818',\n  base01: '#282828',\n  base02: '#383838',\n  base03: '#585858',\n  base04: '#b8b8b8',\n  base05: '#d8d8d8',\n  base06: '#e8e8e8',\n  base07: '#f8f8f8',\n  base08: '#ab4642',\n  base09: '#dc9656',\n  base0A: '#f7ca88',\n  base0B: '#a1b56c',\n  base0C: '#86c1b9',\n  base0D: '#7cafc2',\n  base0E: '#ba8baf',\n  base0F: '#a16946'\n};\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\nexports['default'] = {\n  scheme: 'eighties',\n  author: 'chris kempson (http://chriskempson.com)',\n  base00: '#2d2d2d',\n  base01: '#393939',\n  base02: '#515151',\n  base03: '#747369',\n  base04: '#a09f93',\n  base05: '#d3d0c8',\n  base06: '#e8e6df',\n  base07: '#f2f0ec',\n  base08: '#f2777a',\n  base09: '#f99157',\n  base0A: '#ffcc66',\n  base0B: '#99cc99',\n  base0C: '#66cccc',\n  base0D: '#6699cc',\n  base0E: '#cc99cc',\n  base0F: '#d27b53'\n};\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\nexports['default'] = {\n  scheme: 'embers',\n  author: 'jannik siebert (https://github.com/janniks)',\n  base00: '#16130F',\n  base01: '#2C2620',\n  base02: '#433B32',\n  base03: '#5A5047',\n  base04: '#8A8075',\n  base05: '#A39A90',\n  base06: '#BEB6AE',\n  base07: '#DBD6D1',\n  base08: '#826D57',\n  base09: '#828257',\n  base0A: '#6D8257',\n  base0B: '#57826D',\n  base0C: '#576D82',\n  base0D: '#6D5782',\n  base0E: '#82576D',\n  base0F: '#825757'\n};\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\nexports['default'] = {\n  scheme: 'flat',\n  author: 'chris kempson (http://chriskempson.com)',\n  base00: '#2C3E50',\n  base01: '#34495E',\n  base02: '#7F8C8D',\n  base03: '#95A5A6',\n  base04: '#BDC3C7',\n  base05: '#e0e0e0',\n  base06: '#f5f5f5',\n  base07: '#ECF0F1',\n  base08: '#E74C3C',\n  base09: '#E67E22',\n  base0A: '#F1C40F',\n  base0B: '#2ECC71',\n  base0C: '#1ABC9C',\n  base0D: '#3498DB',\n  base0E: '#9B59B6',\n  base0F: '#be643c'\n};\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\nexports['default'] = {\n  scheme: 'google',\n  author: 'seth wright (http://sethawright.com)',\n  base00: '#1d1f21',\n  base01: '#282a2e',\n  base02: '#373b41',\n  base03: '#969896',\n  base04: '#b4b7b4',\n  base05: '#c5c8c6',\n  base06: '#e0e0e0',\n  base07: '#ffffff',\n  base08: '#CC342B',\n  base09: '#F96A38',\n  base0A: '#FBA922',\n  base0B: '#198844',\n  base0C: '#3971ED',\n  base0D: '#3971ED',\n  base0E: '#A36AC7',\n  base0F: '#3971ED'\n};\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\nexports['default'] = {\n  scheme: 'grayscale',\n  author: 'alexandre gavioli (https://github.com/alexx2/)',\n  base00: '#101010',\n  base01: '#252525',\n  base02: '#464646',\n  base03: '#525252',\n  base04: '#ababab',\n  base05: '#b9b9b9',\n  base06: '#e3e3e3',\n  base07: '#f7f7f7',\n  base08: '#7c7c7c',\n  base09: '#999999',\n  base0A: '#a0a0a0',\n  base0B: '#8e8e8e',\n  base0C: '#868686',\n  base0D: '#686868',\n  base0E: '#747474',\n  base0F: '#5e5e5e'\n};\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\nexports['default'] = {\n  scheme: 'green screen',\n  author: 'chris kempson (http://chriskempson.com)',\n  base00: '#001100',\n  base01: '#003300',\n  base02: '#005500',\n  base03: '#007700',\n  base04: '#009900',\n  base05: '#00bb00',\n  base06: '#00dd00',\n  base07: '#00ff00',\n  base08: '#007700',\n  base09: '#009900',\n  base0A: '#007700',\n  base0B: '#00bb00',\n  base0C: '#005500',\n  base0D: '#009900',\n  base0E: '#00bb00',\n  base0F: '#005500'\n};\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\nexports['default'] = {\n  scheme: 'harmonic16',\n  author: 'jannik siebert (https://github.com/janniks)',\n  base00: '#0b1c2c',\n  base01: '#223b54',\n  base02: '#405c79',\n  base03: '#627e99',\n  base04: '#aabcce',\n  base05: '#cbd6e2',\n  base06: '#e5ebf1',\n  base07: '#f7f9fb',\n  base08: '#bf8b56',\n  base09: '#bfbf56',\n  base0A: '#8bbf56',\n  base0B: '#56bf8b',\n  base0C: '#568bbf',\n  base0D: '#8b56bf',\n  base0E: '#bf568b',\n  base0F: '#bf5656'\n};\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\nexports['default'] = {\n  scheme: 'hopscotch',\n  author: 'jan t. sott',\n  base00: '#322931',\n  base01: '#433b42',\n  base02: '#5c545b',\n  base03: '#797379',\n  base04: '#989498',\n  base05: '#b9b5b8',\n  base06: '#d5d3d5',\n  base07: '#ffffff',\n  base08: '#dd464c',\n  base09: '#fd8b19',\n  base0A: '#fdcc59',\n  base0B: '#8fc13e',\n  base0C: '#149b93',\n  base0D: '#1290bf',\n  base0E: '#c85e7c',\n  base0F: '#b33508'\n};\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\nexports['default'] = {\n  scheme: 'isotope',\n  author: 'jan t. sott',\n  base00: '#000000',\n  base01: '#404040',\n  base02: '#606060',\n  base03: '#808080',\n  base04: '#c0c0c0',\n  base05: '#d0d0d0',\n  base06: '#e0e0e0',\n  base07: '#ffffff',\n  base08: '#ff0000',\n  base09: '#ff9900',\n  base0A: '#ff0099',\n  base0B: '#33ff00',\n  base0C: '#00ffff',\n  base0D: '#0066ff',\n  base0E: '#cc00ff',\n  base0F: '#3300ff'\n};\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\nexports['default'] = {\n  scheme: 'marrakesh',\n  author: 'alexandre gavioli (http://github.com/alexx2/)',\n  base00: '#201602',\n  base01: '#302e00',\n  base02: '#5f5b17',\n  base03: '#6c6823',\n  base04: '#86813b',\n  base05: '#948e48',\n  base06: '#ccc37a',\n  base07: '#faf0a5',\n  base08: '#c35359',\n  base09: '#b36144',\n  base0A: '#a88339',\n  base0B: '#18974e',\n  base0C: '#75a738',\n  base0D: '#477ca1',\n  base0E: '#8868b3',\n  base0F: '#b3588e'\n};\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\nexports['default'] = {\n  scheme: 'mocha',\n  author: 'chris kempson (http://chriskempson.com)',\n  base00: '#3B3228',\n  base01: '#534636',\n  base02: '#645240',\n  base03: '#7e705a',\n  base04: '#b8afad',\n  base05: '#d0c8c6',\n  base06: '#e9e1dd',\n  base07: '#f5eeeb',\n  base08: '#cb6077',\n  base09: '#d28b71',\n  base0A: '#f4bc87',\n  base0B: '#beb55b',\n  base0C: '#7bbda4',\n  base0D: '#8ab3b5',\n  base0E: '#a89bb9',\n  base0F: '#bb9584'\n};\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\nexports['default'] = {\n  scheme: 'monokai',\n  author: 'wimer hazenberg (http://www.monokai.nl)',\n  base00: '#272822',\n  base01: '#383830',\n  base02: '#49483e',\n  base03: '#75715e',\n  base04: '#a59f85',\n  base05: '#f8f8f2',\n  base06: '#f5f4f1',\n  base07: '#f9f8f5',\n  base08: '#f92672',\n  base09: '#fd971f',\n  base0A: '#f4bf75',\n  base0B: '#a6e22e',\n  base0C: '#a1efe4',\n  base0D: '#66d9ef',\n  base0E: '#ae81ff',\n  base0F: '#cc6633'\n};\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\nexports['default'] = {\n  scheme: 'ocean',\n  author: 'chris kempson (http://chriskempson.com)',\n  base00: '#2b303b',\n  base01: '#343d46',\n  base02: '#4f5b66',\n  base03: '#65737e',\n  base04: '#a7adba',\n  base05: '#c0c5ce',\n  base06: '#dfe1e8',\n  base07: '#eff1f5',\n  base08: '#bf616a',\n  base09: '#d08770',\n  base0A: '#ebcb8b',\n  base0B: '#a3be8c',\n  base0C: '#96b5b4',\n  base0D: '#8fa1b3',\n  base0E: '#b48ead',\n  base0F: '#ab7967'\n};\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\nexports['default'] = {\n  scheme: 'paraiso',\n  author: 'jan t. sott',\n  base00: '#2f1e2e',\n  base01: '#41323f',\n  base02: '#4f424c',\n  base03: '#776e71',\n  base04: '#8d8687',\n  base05: '#a39e9b',\n  base06: '#b9b6b0',\n  base07: '#e7e9db',\n  base08: '#ef6155',\n  base09: '#f99b15',\n  base0A: '#fec418',\n  base0B: '#48b685',\n  base0C: '#5bc4bf',\n  base0D: '#06b6ef',\n  base0E: '#815ba4',\n  base0F: '#e96ba8'\n};\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\nexports['default'] = {\n  scheme: 'pop',\n  author: 'chris kempson (http://chriskempson.com)',\n  base00: '#000000',\n  base01: '#202020',\n  base02: '#303030',\n  base03: '#505050',\n  base04: '#b0b0b0',\n  base05: '#d0d0d0',\n  base06: '#e0e0e0',\n  base07: '#ffffff',\n  base08: '#eb008a',\n  base09: '#f29333',\n  base0A: '#f8ca12',\n  base0B: '#37b349',\n  base0C: '#00aabb',\n  base0D: '#0e5a94',\n  base0E: '#b31e8d',\n  base0F: '#7a2d00'\n};\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\nexports['default'] = {\n  scheme: 'railscasts',\n  author: 'ryan bates (http://railscasts.com)',\n  base00: '#2b2b2b',\n  base01: '#272935',\n  base02: '#3a4055',\n  base03: '#5a647e',\n  base04: '#d4cfc9',\n  base05: '#e6e1dc',\n  base06: '#f4f1ed',\n  base07: '#f9f7f3',\n  base08: '#da4939',\n  base09: '#cc7833',\n  base0A: '#ffc66d',\n  base0B: '#a5c261',\n  base0C: '#519f50',\n  base0D: '#6d9cbe',\n  base0E: '#b6b3eb',\n  base0F: '#bc9458'\n};\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\nexports['default'] = {\n  scheme: 'shapeshifter',\n  author: 'tyler benziger (http://tybenz.com)',\n  base00: '#000000',\n  base01: '#040404',\n  base02: '#102015',\n  base03: '#343434',\n  base04: '#555555',\n  base05: '#ababab',\n  base06: '#e0e0e0',\n  base07: '#f9f9f9',\n  base08: '#e92f2f',\n  base09: '#e09448',\n  base0A: '#dddd13',\n  base0B: '#0ed839',\n  base0C: '#23edda',\n  base0D: '#3b48e3',\n  base0E: '#f996e2',\n  base0F: '#69542d'\n};\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\nexports['default'] = {\n  scheme: 'solarized',\n  author: 'ethan schoonover (http://ethanschoonover.com/solarized)',\n  base00: '#002b36',\n  base01: '#073642',\n  base02: '#586e75',\n  base03: '#657b83',\n  base04: '#839496',\n  base05: '#93a1a1',\n  base06: '#eee8d5',\n  base07: '#fdf6e3',\n  base08: '#dc322f',\n  base09: '#cb4b16',\n  base0A: '#b58900',\n  base0B: '#859900',\n  base0C: '#2aa198',\n  base0D: '#268bd2',\n  base0E: '#6c71c4',\n  base0F: '#d33682'\n};\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\nexports['default'] = {\n  scheme: 'summerfruit',\n  author: 'christopher corley (http://cscorley.github.io/)',\n  base00: '#151515',\n  base01: '#202020',\n  base02: '#303030',\n  base03: '#505050',\n  base04: '#B0B0B0',\n  base05: '#D0D0D0',\n  base06: '#E0E0E0',\n  base07: '#FFFFFF',\n  base08: '#FF0086',\n  base09: '#FD8900',\n  base0A: '#ABA800',\n  base0B: '#00C918',\n  base0C: '#1faaaa',\n  base0D: '#3777E6',\n  base0E: '#AD00A1',\n  base0F: '#cc6633'\n};\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\nexports['default'] = {\n  scheme: 'tomorrow',\n  author: 'chris kempson (http://chriskempson.com)',\n  base00: '#1d1f21',\n  base01: '#282a2e',\n  base02: '#373b41',\n  base03: '#969896',\n  base04: '#b4b7b4',\n  base05: '#c5c8c6',\n  base06: '#e0e0e0',\n  base07: '#ffffff',\n  base08: '#cc6666',\n  base09: '#de935f',\n  base0A: '#f0c674',\n  base0B: '#b5bd68',\n  base0C: '#8abeb7',\n  base0D: '#81a2be',\n  base0E: '#b294bb',\n  base0F: '#a3685a'\n};\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\nexports['default'] = {\n  scheme: 'london tube',\n  author: 'jan t. sott',\n  base00: '#231f20',\n  base01: '#1c3f95',\n  base02: '#5a5758',\n  base03: '#737171',\n  base04: '#959ca1',\n  base05: '#d9d8d8',\n  base06: '#e7e7e8',\n  base07: '#ffffff',\n  base08: '#ee2e24',\n  base09: '#f386a1',\n  base0A: '#ffd204',\n  base0B: '#00853e',\n  base0C: '#85cebc',\n  base0D: '#009ddc',\n  base0E: '#98005d',\n  base0F: '#b06110'\n};\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\nexports['default'] = {\n  scheme: 'twilight',\n  author: 'david hart (http://hart-dev.com)',\n  base00: '#1e1e1e',\n  base01: '#323537',\n  base02: '#464b50',\n  base03: '#5f5a60',\n  base04: '#838184',\n  base05: '#a7a7a7',\n  base06: '#c3c3c3',\n  base07: '#ffffff',\n  base08: '#cf6a4c',\n  base09: '#cda869',\n  base0A: '#f9ee98',\n  base0B: '#8f9d6a',\n  base0C: '#afc4db',\n  base0D: '#7587a6',\n  base0E: '#9b859d',\n  base0F: '#9b703f'\n};\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequire(obj) { return obj && obj.__esModule ? obj['default'] : obj; }\n\nvar _threezerotwofour = require('./threezerotwofour');\n\nexports.threezerotwofour = _interopRequire(_threezerotwofour);\n\nvar _apathy = require('./apathy');\n\nexports.apathy = _interopRequire(_apathy);\n\nvar _ashes = require('./ashes');\n\nexports.ashes = _interopRequire(_ashes);\n\nvar _atelierDune = require('./atelier-dune');\n\nexports.atelierDune = _interopRequire(_atelierDune);\n\nvar _atelierForest = require('./atelier-forest');\n\nexports.atelierForest = _interopRequire(_atelierForest);\n\nvar _atelierHeath = require('./atelier-heath');\n\nexports.atelierHeath = _interopRequire(_atelierHeath);\n\nvar _atelierLakeside = require('./atelier-lakeside');\n\nexports.atelierLakeside = _interopRequire(_atelierLakeside);\n\nvar _atelierSeaside = require('./atelier-seaside');\n\nexports.atelierSeaside = _interopRequire(_atelierSeaside);\n\nvar _bespin = require('./bespin');\n\nexports.bespin = _interopRequire(_bespin);\n\nvar _brewer = require('./brewer');\n\nexports.brewer = _interopRequire(_brewer);\n\nvar _bright = require('./bright');\n\nexports.bright = _interopRequire(_bright);\n\nvar _chalk = require('./chalk');\n\nexports.chalk = _interopRequire(_chalk);\n\nvar _codeschool = require('./codeschool');\n\nexports.codeschool = _interopRequire(_codeschool);\n\nvar _colors = require('./colors');\n\nexports.colors = _interopRequire(_colors);\n\nvar _default = require('./default');\n\nexports['default'] = _interopRequire(_default);\n\nvar _eighties = require('./eighties');\n\nexports.eighties = _interopRequire(_eighties);\n\nvar _embers = require('./embers');\n\nexports.embers = _interopRequire(_embers);\n\nvar _flat = require('./flat');\n\nexports.flat = _interopRequire(_flat);\n\nvar _google = require('./google');\n\nexports.google = _interopRequire(_google);\n\nvar _grayscale = require('./grayscale');\n\nexports.grayscale = _interopRequire(_grayscale);\n\nvar _greenscreen = require('./greenscreen');\n\nexports.greenscreen = _interopRequire(_greenscreen);\n\nvar _harmonic = require('./harmonic');\n\nexports.harmonic = _interopRequire(_harmonic);\n\nvar _hopscotch = require('./hopscotch');\n\nexports.hopscotch = _interopRequire(_hopscotch);\n\nvar _isotope = require('./isotope');\n\nexports.isotope = _interopRequire(_isotope);\n\nvar _marrakesh = require('./marrakesh');\n\nexports.marrakesh = _interopRequire(_marrakesh);\n\nvar _mocha = require('./mocha');\n\nexports.mocha = _interopRequire(_mocha);\n\nvar _monokai = require('./monokai');\n\nexports.monokai = _interopRequire(_monokai);\n\nvar _ocean = require('./ocean');\n\nexports.ocean = _interopRequire(_ocean);\n\nvar _paraiso = require('./paraiso');\n\nexports.paraiso = _interopRequire(_paraiso);\n\nvar _pop = require('./pop');\n\nexports.pop = _interopRequire(_pop);\n\nvar _railscasts = require('./railscasts');\n\nexports.railscasts = _interopRequire(_railscasts);\n\nvar _shapeshifter = require('./shapeshifter');\n\nexports.shapeshifter = _interopRequire(_shapeshifter);\n\nvar _solarized = require('./solarized');\n\nexports.solarized = _interopRequire(_solarized);\n\nvar _summerfruit = require('./summerfruit');\n\nexports.summerfruit = _interopRequire(_summerfruit);\n\nvar _tomorrow = require('./tomorrow');\n\nexports.tomorrow = _interopRequire(_tomorrow);\n\nvar _tube = require('./tube');\n\nexports.tube = _interopRequire(_tube);\n\nvar _twilight = require('./twilight');\n\nexports.twilight = _interopRequire(_twilight);","'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","module.exports = function isArrayish(obj) {\n\tif (!obj || typeof obj === 'string') {\n\t\treturn false;\n\t}\n\n\treturn obj instanceof Array || Array.isArray(obj) ||\n\t\t(obj.length >= 0 && (obj.splice instanceof Function ||\n\t\t\t(Object.getOwnPropertyDescriptor(obj, (obj.length - 1)) && obj.constructor.name !== 'String')));\n};\n","'use strict';\n\nvar isArrayish = require('is-arrayish');\n\nvar concat = Array.prototype.concat;\nvar slice = Array.prototype.slice;\n\nvar swizzle = module.exports = function swizzle(args) {\n\tvar results = [];\n\n\tfor (var i = 0, len = args.length; i < len; i++) {\n\t\tvar arg = args[i];\n\n\t\tif (isArrayish(arg)) {\n\t\t\t// http://jsperf.com/javascript-array-concat-vs-push/98\n\t\t\tresults = concat.call(results, slice.call(arg));\n\t\t} else {\n\t\t\tresults.push(arg);\n\t\t}\n\t}\n\n\treturn results;\n};\n\nswizzle.wrap = function (fn) {\n\treturn function () {\n\t\treturn fn(swizzle(arguments));\n\t};\n};\n","/* MIT license */\nvar colorNames = require('color-name');\nvar swizzle = require('simple-swizzle');\nvar hasOwnProperty = Object.hasOwnProperty;\n\nvar reverseNames = Object.create(null);\n\n// create a list of reverse color names\nfor (var name in colorNames) {\n\tif (hasOwnProperty.call(colorNames, name)) {\n\t\treverseNames[colorNames[name]] = name;\n\t}\n}\n\nvar cs = module.exports = {\n\tto: {},\n\tget: {}\n};\n\ncs.get = function (string) {\n\tvar prefix = string.substring(0, 3).toLowerCase();\n\tvar val;\n\tvar model;\n\tswitch (prefix) {\n\t\tcase 'hsl':\n\t\t\tval = cs.get.hsl(string);\n\t\t\tmodel = 'hsl';\n\t\t\tbreak;\n\t\tcase 'hwb':\n\t\t\tval = cs.get.hwb(string);\n\t\t\tmodel = 'hwb';\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tval = cs.get.rgb(string);\n\t\t\tmodel = 'rgb';\n\t\t\tbreak;\n\t}\n\n\tif (!val) {\n\t\treturn null;\n\t}\n\n\treturn {model: model, value: val};\n};\n\ncs.get.rgb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar abbr = /^#([a-f0-9]{3,4})$/i;\n\tvar hex = /^#([a-f0-9]{6})([a-f0-9]{2})?$/i;\n\tvar rgba = /^rgba?\\(\\s*([+-]?\\d+)(?=[\\s,])\\s*(?:,\\s*)?([+-]?\\d+)(?=[\\s,])\\s*(?:,\\s*)?([+-]?\\d+)\\s*(?:[,|\\/]\\s*([+-]?[\\d\\.]+)(%?)\\s*)?\\)$/;\n\tvar per = /^rgba?\\(\\s*([+-]?[\\d\\.]+)\\%\\s*,?\\s*([+-]?[\\d\\.]+)\\%\\s*,?\\s*([+-]?[\\d\\.]+)\\%\\s*(?:[,|\\/]\\s*([+-]?[\\d\\.]+)(%?)\\s*)?\\)$/;\n\tvar keyword = /^(\\w+)$/;\n\n\tvar rgb = [0, 0, 0, 1];\n\tvar match;\n\tvar i;\n\tvar hexAlpha;\n\n\tif (match = string.match(hex)) {\n\t\thexAlpha = match[2];\n\t\tmatch = match[1];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\t// https://jsperf.com/slice-vs-substr-vs-substring-methods-long-string/19\n\t\t\tvar i2 = i * 2;\n\t\t\trgb[i] = parseInt(match.slice(i2, i2 + 2), 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = parseInt(hexAlpha, 16) / 255;\n\t\t}\n\t} else if (match = string.match(abbr)) {\n\t\tmatch = match[1];\n\t\thexAlpha = match[3];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = parseInt(match[i] + match[i], 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = parseInt(hexAlpha + hexAlpha, 16) / 255;\n\t\t}\n\t} else if (match = string.match(rgba)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = parseInt(match[i + 1], 0);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\tif (match[5]) {\n\t\t\t\trgb[3] = parseFloat(match[4]) * 0.01;\n\t\t\t} else {\n\t\t\t\trgb[3] = parseFloat(match[4]);\n\t\t\t}\n\t\t}\n\t} else if (match = string.match(per)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = Math.round(parseFloat(match[i + 1]) * 2.55);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\tif (match[5]) {\n\t\t\t\trgb[3] = parseFloat(match[4]) * 0.01;\n\t\t\t} else {\n\t\t\t\trgb[3] = parseFloat(match[4]);\n\t\t\t}\n\t\t}\n\t} else if (match = string.match(keyword)) {\n\t\tif (match[1] === 'transparent') {\n\t\t\treturn [0, 0, 0, 0];\n\t\t}\n\n\t\tif (!hasOwnProperty.call(colorNames, match[1])) {\n\t\t\treturn null;\n\t\t}\n\n\t\trgb = colorNames[match[1]];\n\t\trgb[3] = 1;\n\n\t\treturn rgb;\n\t} else {\n\t\treturn null;\n\t}\n\n\tfor (i = 0; i < 3; i++) {\n\t\trgb[i] = clamp(rgb[i], 0, 255);\n\t}\n\trgb[3] = clamp(rgb[3], 0, 1);\n\n\treturn rgb;\n};\n\ncs.get.hsl = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar hsl = /^hsla?\\(\\s*([+-]?(?:\\d{0,3}\\.)?\\d+)(?:deg)?\\s*,?\\s*([+-]?[\\d\\.]+)%\\s*,?\\s*([+-]?[\\d\\.]+)%\\s*(?:[,|\\/]\\s*([+-]?(?=\\.\\d|\\d)(?:0|[1-9]\\d*)?(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)\\s*)?\\)$/;\n\tvar match = string.match(hsl);\n\n\tif (match) {\n\t\tvar alpha = parseFloat(match[4]);\n\t\tvar h = ((parseFloat(match[1]) % 360) + 360) % 360;\n\t\tvar s = clamp(parseFloat(match[2]), 0, 100);\n\t\tvar l = clamp(parseFloat(match[3]), 0, 100);\n\t\tvar a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);\n\n\t\treturn [h, s, l, a];\n\t}\n\n\treturn null;\n};\n\ncs.get.hwb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar hwb = /^hwb\\(\\s*([+-]?\\d{0,3}(?:\\.\\d+)?)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?(?=\\.\\d|\\d)(?:0|[1-9]\\d*)?(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)\\s*)?\\)$/;\n\tvar match = string.match(hwb);\n\n\tif (match) {\n\t\tvar alpha = parseFloat(match[4]);\n\t\tvar h = ((parseFloat(match[1]) % 360) + 360) % 360;\n\t\tvar w = clamp(parseFloat(match[2]), 0, 100);\n\t\tvar b = clamp(parseFloat(match[3]), 0, 100);\n\t\tvar a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);\n\t\treturn [h, w, b, a];\n\t}\n\n\treturn null;\n};\n\ncs.to.hex = function () {\n\tvar rgba = swizzle(arguments);\n\n\treturn (\n\t\t'#' +\n\t\thexDouble(rgba[0]) +\n\t\thexDouble(rgba[1]) +\n\t\thexDouble(rgba[2]) +\n\t\t(rgba[3] < 1\n\t\t\t? (hexDouble(Math.round(rgba[3] * 255)))\n\t\t\t: '')\n\t);\n};\n\ncs.to.rgb = function () {\n\tvar rgba = swizzle(arguments);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ')'\n\t\t: 'rgba(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ', ' + rgba[3] + ')';\n};\n\ncs.to.rgb.percent = function () {\n\tvar rgba = swizzle(arguments);\n\n\tvar r = Math.round(rgba[0] / 255 * 100);\n\tvar g = Math.round(rgba[1] / 255 * 100);\n\tvar b = Math.round(rgba[2] / 255 * 100);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + r + '%, ' + g + '%, ' + b + '%)'\n\t\t: 'rgba(' + r + '%, ' + g + '%, ' + b + '%, ' + rgba[3] + ')';\n};\n\ncs.to.hsl = function () {\n\tvar hsla = swizzle(arguments);\n\treturn hsla.length < 4 || hsla[3] === 1\n\t\t? 'hsl(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%)'\n\t\t: 'hsla(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%, ' + hsla[3] + ')';\n};\n\n// hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax\n// (hwb have alpha optional & 1 is default value)\ncs.to.hwb = function () {\n\tvar hwba = swizzle(arguments);\n\n\tvar a = '';\n\tif (hwba.length >= 4 && hwba[3] !== 1) {\n\t\ta = ', ' + hwba[3];\n\t}\n\n\treturn 'hwb(' + hwba[0] + ', ' + hwba[1] + '%, ' + hwba[2] + '%' + a + ')';\n};\n\ncs.to.keyword = function (rgb) {\n\treturn reverseNames[rgb.slice(0, 3)];\n};\n\n// helpers\nfunction clamp(num, min, max) {\n\treturn Math.min(Math.max(min, num), max);\n}\n\nfunction hexDouble(num) {\n\tvar str = Math.round(num).toString(16).toUpperCase();\n\treturn (str.length < 2) ? '0' + str : str;\n}\n","'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","/* MIT license */\nvar cssKeywords = require('color-name');\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n//       values that give correct `typeof` results).\n//       do not use box values types (i.e. Number(), String(), etc.)\n\nvar reverseKeywords = {};\nfor (var key in cssKeywords) {\n\tif (cssKeywords.hasOwnProperty(key)) {\n\t\treverseKeywords[cssKeywords[key]] = key;\n\t}\n}\n\nvar convert = module.exports = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\n// hide .channels and .labels properties\nfor (var model in convert) {\n\tif (convert.hasOwnProperty(model)) {\n\t\tif (!('channels' in convert[model])) {\n\t\t\tthrow new Error('missing channels property: ' + model);\n\t\t}\n\n\t\tif (!('labels' in convert[model])) {\n\t\t\tthrow new Error('missing channel labels property: ' + model);\n\t\t}\n\n\t\tif (convert[model].labels.length !== convert[model].channels) {\n\t\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t\t}\n\n\t\tvar channels = convert[model].channels;\n\t\tvar labels = convert[model].labels;\n\t\tdelete convert[model].channels;\n\t\tdelete convert[model].labels;\n\t\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\t\tObject.defineProperty(convert[model], 'labels', {value: labels});\n\t}\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar min = Math.min(r, g, b);\n\tvar max = Math.max(r, g, b);\n\tvar delta = max - min;\n\tvar h;\n\tvar s;\n\tvar l;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tl = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tvar rdif;\n\tvar gdif;\n\tvar bdif;\n\tvar h;\n\tvar s;\n\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar v = Math.max(r, g, b);\n\tvar diff = v - Math.min(r, g, b);\n\tvar diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = s = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tvar r = rgb[0];\n\tvar g = rgb[1];\n\tvar b = rgb[2];\n\tvar h = convert.rgb.hsl(rgb)[0];\n\tvar w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar c;\n\tvar m;\n\tvar y;\n\tvar k;\n\n\tk = Math.min(1 - r, 1 - g, 1 - b);\n\tc = (1 - r - k) / (1 - k) || 0;\n\tm = (1 - g - k) / (1 - k) || 0;\n\ty = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\n/**\n * See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n * */\nfunction comparativeDistance(x, y) {\n\treturn (\n\t\tMath.pow(x[0] - y[0], 2) +\n\t\tMath.pow(x[1] - y[1], 2) +\n\t\tMath.pow(x[2] - y[2], 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tvar reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tvar currentClosestDistance = Infinity;\n\tvar currentClosestKeyword;\n\n\tfor (var keyword in cssKeywords) {\n\t\tif (cssKeywords.hasOwnProperty(keyword)) {\n\t\t\tvar value = cssKeywords[keyword];\n\n\t\t\t// Compute comparative distance\n\t\t\tvar distance = comparativeDistance(rgb, value);\n\n\t\t\t// Check if its less, if so set as closest\n\t\t\tif (distance < currentClosestDistance) {\n\t\t\t\tcurrentClosestDistance = distance;\n\t\t\t\tcurrentClosestKeyword = keyword;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\n\t// assume sRGB\n\tr = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);\n\n\tvar x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tvar y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tvar z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tvar xyz = convert.rgb.xyz(rgb);\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tvar h = hsl[0] / 360;\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar t1;\n\tvar t2;\n\tvar t3;\n\tvar rgb;\n\tvar val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tt1 = 2 * l - t2;\n\n\trgb = [0, 0, 0];\n\tfor (var i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tvar h = hsl[0];\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar smin = s;\n\tvar lmin = Math.max(l, 0.01);\n\tvar sv;\n\tvar v;\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tv = (l + s) / 2;\n\tsv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tvar h = hsv[0] / 60;\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar hi = Math.floor(h) % 6;\n\n\tvar f = h - Math.floor(h);\n\tvar p = 255 * v * (1 - s);\n\tvar q = 255 * v * (1 - (s * f));\n\tvar t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tvar h = hsv[0];\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar vmin = Math.max(v, 0.01);\n\tvar lmin;\n\tvar sl;\n\tvar l;\n\n\tl = (2 - s) * v;\n\tlmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tvar h = hwb[0] / 360;\n\tvar wh = hwb[1] / 100;\n\tvar bl = hwb[2] / 100;\n\tvar ratio = wh + bl;\n\tvar i;\n\tvar v;\n\tvar f;\n\tvar n;\n\n\t// wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\ti = Math.floor(6 * h);\n\tv = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tn = wh + f * (v - wh); // linear interpolation\n\n\tvar r;\n\tvar g;\n\tvar b;\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tvar c = cmyk[0] / 100;\n\tvar m = cmyk[1] / 100;\n\tvar y = cmyk[2] / 100;\n\tvar k = cmyk[3] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = 1 - Math.min(1, c * (1 - k) + k);\n\tg = 1 - Math.min(1, m * (1 - k) + k);\n\tb = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tvar x = xyz[0] / 100;\n\tvar y = xyz[1] / 100;\n\tvar z = xyz[2] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar x;\n\tvar y;\n\tvar z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tvar y2 = Math.pow(y, 3);\n\tvar x2 = Math.pow(x, 3);\n\tvar z2 = Math.pow(z, 3);\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar hr;\n\tvar h;\n\tvar c;\n\n\thr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tc = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tvar l = lch[0];\n\tvar c = lch[1];\n\tvar h = lch[2];\n\tvar a;\n\tvar b;\n\tvar hr;\n\n\thr = h / 360 * 2 * Math.PI;\n\ta = c * Math.cos(hr);\n\tb = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\tvar value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; // hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tvar ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\n\t// we use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tvar ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tvar color = args % 10;\n\n\t// handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tvar mult = (~~(args > 50) + 1) * 0.5;\n\tvar r = ((color & 1) * mult) * 255;\n\tvar g = (((color >> 1) & 1) * mult) * 255;\n\tvar b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// handle greyscale\n\tif (args >= 232) {\n\t\tvar c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tvar rem;\n\tvar r = Math.floor(args / 36) / 5 * 255;\n\tvar g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tvar b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tvar integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tvar match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tvar colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(function (char) {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tvar integer = parseInt(colorString, 16);\n\tvar r = (integer >> 16) & 0xFF;\n\tvar g = (integer >> 8) & 0xFF;\n\tvar b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar max = Math.max(Math.max(r, g), b);\n\tvar min = Math.min(Math.min(r, g), b);\n\tvar chroma = (max - min);\n\tvar grayscale;\n\tvar hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma + 4;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar c = 1;\n\tvar f = 0;\n\n\tif (l < 0.5) {\n\t\tc = 2.0 * s * l;\n\t} else {\n\t\tc = 2.0 * s * (1.0 - l);\n\t}\n\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\n\tvar c = s * v;\n\tvar f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tvar h = hcg[0] / 360;\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tvar pure = [0, 0, 0];\n\tvar hi = (h % 1) * 6;\n\tvar v = hi % 1;\n\tvar w = 1 - v;\n\tvar mg = 0;\n\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar v = c + g * (1.0 - c);\n\tvar f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar l = g * (1.0 - c) + 0.5 * c;\n\tvar s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\tvar v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tvar w = hwb[1] / 100;\n\tvar b = hwb[2] / 100;\n\tvar v = 1 - b;\n\tvar c = v - w;\n\tvar g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = convert.gray.hsv = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tvar val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tvar integer = (val << 16) + (val << 8) + val;\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tvar val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n","var conversions = require('./conversions');\n\n/*\n\tthis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tvar graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tvar models = Object.keys(conversions);\n\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tvar graph = buildGraph();\n\tvar queue = [fromModel]; // unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tvar current = queue.pop();\n\t\tvar adjacents = Object.keys(conversions[current]);\n\n\t\tfor (var len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tvar adjacent = adjacents[i];\n\t\t\tvar node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tvar path = [graph[toModel].parent, toModel];\n\tvar fn = conversions[graph[toModel].parent][toModel];\n\n\tvar cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nmodule.exports = function (fromModel) {\n\tvar graph = deriveBFS(fromModel);\n\tvar conversion = {};\n\n\tvar models = Object.keys(graph);\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tvar toModel = models[i];\n\t\tvar node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// no possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\n","var conversions = require('./conversions');\nvar route = require('./route');\n\nvar convert = {};\n\nvar models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\tvar result = fn(args);\n\n\t\t// we're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (var len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(function (fromModel) {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tvar routes = route(fromModel);\n\tvar routeModels = Object.keys(routes);\n\n\trouteModels.forEach(function (toModel) {\n\t\tvar fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nmodule.exports = convert;\n","'use strict';\n\nvar colorString = require('color-string');\nvar convert = require('color-convert');\n\nvar _slice = [].slice;\n\nvar skippedModels = [\n\t// to be honest, I don't really feel like keyword belongs in color convert, but eh.\n\t'keyword',\n\n\t// gray conflicts with some method names, and has its own method defined.\n\t'gray',\n\n\t// shouldn't really be in color-convert either...\n\t'hex'\n];\n\nvar hashedModelKeys = {};\nObject.keys(convert).forEach(function (model) {\n\thashedModelKeys[_slice.call(convert[model].labels).sort().join('')] = model;\n});\n\nvar limiters = {};\n\nfunction Color(obj, model) {\n\tif (!(this instanceof Color)) {\n\t\treturn new Color(obj, model);\n\t}\n\n\tif (model && model in skippedModels) {\n\t\tmodel = null;\n\t}\n\n\tif (model && !(model in convert)) {\n\t\tthrow new Error('Unknown model: ' + model);\n\t}\n\n\tvar i;\n\tvar channels;\n\n\tif (obj == null) { // eslint-disable-line no-eq-null,eqeqeq\n\t\tthis.model = 'rgb';\n\t\tthis.color = [0, 0, 0];\n\t\tthis.valpha = 1;\n\t} else if (obj instanceof Color) {\n\t\tthis.model = obj.model;\n\t\tthis.color = obj.color.slice();\n\t\tthis.valpha = obj.valpha;\n\t} else if (typeof obj === 'string') {\n\t\tvar result = colorString.get(obj);\n\t\tif (result === null) {\n\t\t\tthrow new Error('Unable to parse color from string: ' + obj);\n\t\t}\n\n\t\tthis.model = result.model;\n\t\tchannels = convert[this.model].channels;\n\t\tthis.color = result.value.slice(0, channels);\n\t\tthis.valpha = typeof result.value[channels] === 'number' ? result.value[channels] : 1;\n\t} else if (obj.length) {\n\t\tthis.model = model || 'rgb';\n\t\tchannels = convert[this.model].channels;\n\t\tvar newArr = _slice.call(obj, 0, channels);\n\t\tthis.color = zeroArray(newArr, channels);\n\t\tthis.valpha = typeof obj[channels] === 'number' ? obj[channels] : 1;\n\t} else if (typeof obj === 'number') {\n\t\t// this is always RGB - can be converted later on.\n\t\tobj &= 0xFFFFFF;\n\t\tthis.model = 'rgb';\n\t\tthis.color = [\n\t\t\t(obj >> 16) & 0xFF,\n\t\t\t(obj >> 8) & 0xFF,\n\t\t\tobj & 0xFF\n\t\t];\n\t\tthis.valpha = 1;\n\t} else {\n\t\tthis.valpha = 1;\n\n\t\tvar keys = Object.keys(obj);\n\t\tif ('alpha' in obj) {\n\t\t\tkeys.splice(keys.indexOf('alpha'), 1);\n\t\t\tthis.valpha = typeof obj.alpha === 'number' ? obj.alpha : 0;\n\t\t}\n\n\t\tvar hashedKeys = keys.sort().join('');\n\t\tif (!(hashedKeys in hashedModelKeys)) {\n\t\t\tthrow new Error('Unable to parse color from object: ' + JSON.stringify(obj));\n\t\t}\n\n\t\tthis.model = hashedModelKeys[hashedKeys];\n\n\t\tvar labels = convert[this.model].labels;\n\t\tvar color = [];\n\t\tfor (i = 0; i < labels.length; i++) {\n\t\t\tcolor.push(obj[labels[i]]);\n\t\t}\n\n\t\tthis.color = zeroArray(color);\n\t}\n\n\t// perform limitations (clamping, etc.)\n\tif (limiters[this.model]) {\n\t\tchannels = convert[this.model].channels;\n\t\tfor (i = 0; i < channels; i++) {\n\t\t\tvar limit = limiters[this.model][i];\n\t\t\tif (limit) {\n\t\t\t\tthis.color[i] = limit(this.color[i]);\n\t\t\t}\n\t\t}\n\t}\n\n\tthis.valpha = Math.max(0, Math.min(1, this.valpha));\n\n\tif (Object.freeze) {\n\t\tObject.freeze(this);\n\t}\n}\n\nColor.prototype = {\n\ttoString: function () {\n\t\treturn this.string();\n\t},\n\n\ttoJSON: function () {\n\t\treturn this[this.model]();\n\t},\n\n\tstring: function (places) {\n\t\tvar self = this.model in colorString.to ? this : this.rgb();\n\t\tself = self.round(typeof places === 'number' ? places : 1);\n\t\tvar args = self.valpha === 1 ? self.color : self.color.concat(this.valpha);\n\t\treturn colorString.to[self.model](args);\n\t},\n\n\tpercentString: function (places) {\n\t\tvar self = this.rgb().round(typeof places === 'number' ? places : 1);\n\t\tvar args = self.valpha === 1 ? self.color : self.color.concat(this.valpha);\n\t\treturn colorString.to.rgb.percent(args);\n\t},\n\n\tarray: function () {\n\t\treturn this.valpha === 1 ? this.color.slice() : this.color.concat(this.valpha);\n\t},\n\n\tobject: function () {\n\t\tvar result = {};\n\t\tvar channels = convert[this.model].channels;\n\t\tvar labels = convert[this.model].labels;\n\n\t\tfor (var i = 0; i < channels; i++) {\n\t\t\tresult[labels[i]] = this.color[i];\n\t\t}\n\n\t\tif (this.valpha !== 1) {\n\t\t\tresult.alpha = this.valpha;\n\t\t}\n\n\t\treturn result;\n\t},\n\n\tunitArray: function () {\n\t\tvar rgb = this.rgb().color;\n\t\trgb[0] /= 255;\n\t\trgb[1] /= 255;\n\t\trgb[2] /= 255;\n\n\t\tif (this.valpha !== 1) {\n\t\t\trgb.push(this.valpha);\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tunitObject: function () {\n\t\tvar rgb = this.rgb().object();\n\t\trgb.r /= 255;\n\t\trgb.g /= 255;\n\t\trgb.b /= 255;\n\n\t\tif (this.valpha !== 1) {\n\t\t\trgb.alpha = this.valpha;\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tround: function (places) {\n\t\tplaces = Math.max(places || 0, 0);\n\t\treturn new Color(this.color.map(roundToPlace(places)).concat(this.valpha), this.model);\n\t},\n\n\talpha: function (val) {\n\t\tif (arguments.length) {\n\t\t\treturn new Color(this.color.concat(Math.max(0, Math.min(1, val))), this.model);\n\t\t}\n\n\t\treturn this.valpha;\n\t},\n\n\t// rgb\n\tred: getset('rgb', 0, maxfn(255)),\n\tgreen: getset('rgb', 1, maxfn(255)),\n\tblue: getset('rgb', 2, maxfn(255)),\n\n\thue: getset(['hsl', 'hsv', 'hsl', 'hwb', 'hcg'], 0, function (val) { return ((val % 360) + 360) % 360; }), // eslint-disable-line brace-style\n\n\tsaturationl: getset('hsl', 1, maxfn(100)),\n\tlightness: getset('hsl', 2, maxfn(100)),\n\n\tsaturationv: getset('hsv', 1, maxfn(100)),\n\tvalue: getset('hsv', 2, maxfn(100)),\n\n\tchroma: getset('hcg', 1, maxfn(100)),\n\tgray: getset('hcg', 2, maxfn(100)),\n\n\twhite: getset('hwb', 1, maxfn(100)),\n\twblack: getset('hwb', 2, maxfn(100)),\n\n\tcyan: getset('cmyk', 0, maxfn(100)),\n\tmagenta: getset('cmyk', 1, maxfn(100)),\n\tyellow: getset('cmyk', 2, maxfn(100)),\n\tblack: getset('cmyk', 3, maxfn(100)),\n\n\tx: getset('xyz', 0, maxfn(100)),\n\ty: getset('xyz', 1, maxfn(100)),\n\tz: getset('xyz', 2, maxfn(100)),\n\n\tl: getset('lab', 0, maxfn(100)),\n\ta: getset('lab', 1),\n\tb: getset('lab', 2),\n\n\tkeyword: function (val) {\n\t\tif (arguments.length) {\n\t\t\treturn new Color(val);\n\t\t}\n\n\t\treturn convert[this.model].keyword(this.color);\n\t},\n\n\thex: function (val) {\n\t\tif (arguments.length) {\n\t\t\treturn new Color(val);\n\t\t}\n\n\t\treturn colorString.to.hex(this.rgb().round().color);\n\t},\n\n\trgbNumber: function () {\n\t\tvar rgb = this.rgb().color;\n\t\treturn ((rgb[0] & 0xFF) << 16) | ((rgb[1] & 0xFF) << 8) | (rgb[2] & 0xFF);\n\t},\n\n\tluminosity: function () {\n\t\t// http://www.w3.org/TR/WCAG20/#relativeluminancedef\n\t\tvar rgb = this.rgb().color;\n\n\t\tvar lum = [];\n\t\tfor (var i = 0; i < rgb.length; i++) {\n\t\t\tvar chan = rgb[i] / 255;\n\t\t\tlum[i] = (chan <= 0.03928) ? chan / 12.92 : Math.pow(((chan + 0.055) / 1.055), 2.4);\n\t\t}\n\n\t\treturn 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2];\n\t},\n\n\tcontrast: function (color2) {\n\t\t// http://www.w3.org/TR/WCAG20/#contrast-ratiodef\n\t\tvar lum1 = this.luminosity();\n\t\tvar lum2 = color2.luminosity();\n\n\t\tif (lum1 > lum2) {\n\t\t\treturn (lum1 + 0.05) / (lum2 + 0.05);\n\t\t}\n\n\t\treturn (lum2 + 0.05) / (lum1 + 0.05);\n\t},\n\n\tlevel: function (color2) {\n\t\tvar contrastRatio = this.contrast(color2);\n\t\tif (contrastRatio >= 7.1) {\n\t\t\treturn 'AAA';\n\t\t}\n\n\t\treturn (contrastRatio >= 4.5) ? 'AA' : '';\n\t},\n\n\tisDark: function () {\n\t\t// YIQ equation from http://24ways.org/2010/calculating-color-contrast\n\t\tvar rgb = this.rgb().color;\n\t\tvar yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;\n\t\treturn yiq < 128;\n\t},\n\n\tisLight: function () {\n\t\treturn !this.isDark();\n\t},\n\n\tnegate: function () {\n\t\tvar rgb = this.rgb();\n\t\tfor (var i = 0; i < 3; i++) {\n\t\t\trgb.color[i] = 255 - rgb.color[i];\n\t\t}\n\t\treturn rgb;\n\t},\n\n\tlighten: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[2] += hsl.color[2] * ratio;\n\t\treturn hsl;\n\t},\n\n\tdarken: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[2] -= hsl.color[2] * ratio;\n\t\treturn hsl;\n\t},\n\n\tsaturate: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[1] += hsl.color[1] * ratio;\n\t\treturn hsl;\n\t},\n\n\tdesaturate: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[1] -= hsl.color[1] * ratio;\n\t\treturn hsl;\n\t},\n\n\twhiten: function (ratio) {\n\t\tvar hwb = this.hwb();\n\t\thwb.color[1] += hwb.color[1] * ratio;\n\t\treturn hwb;\n\t},\n\n\tblacken: function (ratio) {\n\t\tvar hwb = this.hwb();\n\t\thwb.color[2] += hwb.color[2] * ratio;\n\t\treturn hwb;\n\t},\n\n\tgrayscale: function () {\n\t\t// http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale\n\t\tvar rgb = this.rgb().color;\n\t\tvar val = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;\n\t\treturn Color.rgb(val, val, val);\n\t},\n\n\tfade: function (ratio) {\n\t\treturn this.alpha(this.valpha - (this.valpha * ratio));\n\t},\n\n\topaquer: function (ratio) {\n\t\treturn this.alpha(this.valpha + (this.valpha * ratio));\n\t},\n\n\trotate: function (degrees) {\n\t\tvar hsl = this.hsl();\n\t\tvar hue = hsl.color[0];\n\t\thue = (hue + degrees) % 360;\n\t\thue = hue < 0 ? 360 + hue : hue;\n\t\thsl.color[0] = hue;\n\t\treturn hsl;\n\t},\n\n\tmix: function (mixinColor, weight) {\n\t\t// ported from sass implementation in C\n\t\t// https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209\n\t\tif (!mixinColor || !mixinColor.rgb) {\n\t\t\tthrow new Error('Argument to \"mix\" was not a Color instance, but rather an instance of ' + typeof mixinColor);\n\t\t}\n\t\tvar color1 = mixinColor.rgb();\n\t\tvar color2 = this.rgb();\n\t\tvar p = weight === undefined ? 0.5 : weight;\n\n\t\tvar w = 2 * p - 1;\n\t\tvar a = color1.alpha() - color2.alpha();\n\n\t\tvar w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n\t\tvar w2 = 1 - w1;\n\n\t\treturn Color.rgb(\n\t\t\t\tw1 * color1.red() + w2 * color2.red(),\n\t\t\t\tw1 * color1.green() + w2 * color2.green(),\n\t\t\t\tw1 * color1.blue() + w2 * color2.blue(),\n\t\t\t\tcolor1.alpha() * p + color2.alpha() * (1 - p));\n\t}\n};\n\n// model conversion methods and static constructors\nObject.keys(convert).forEach(function (model) {\n\tif (skippedModels.indexOf(model) !== -1) {\n\t\treturn;\n\t}\n\n\tvar channels = convert[model].channels;\n\n\t// conversion methods\n\tColor.prototype[model] = function () {\n\t\tif (this.model === model) {\n\t\t\treturn new Color(this);\n\t\t}\n\n\t\tif (arguments.length) {\n\t\t\treturn new Color(arguments, model);\n\t\t}\n\n\t\tvar newAlpha = typeof arguments[channels] === 'number' ? channels : this.valpha;\n\t\treturn new Color(assertArray(convert[this.model][model].raw(this.color)).concat(newAlpha), model);\n\t};\n\n\t// 'static' construction methods\n\tColor[model] = function (color) {\n\t\tif (typeof color === 'number') {\n\t\t\tcolor = zeroArray(_slice.call(arguments), channels);\n\t\t}\n\t\treturn new Color(color, model);\n\t};\n});\n\nfunction roundTo(num, places) {\n\treturn Number(num.toFixed(places));\n}\n\nfunction roundToPlace(places) {\n\treturn function (num) {\n\t\treturn roundTo(num, places);\n\t};\n}\n\nfunction getset(model, channel, modifier) {\n\tmodel = Array.isArray(model) ? model : [model];\n\n\tmodel.forEach(function (m) {\n\t\t(limiters[m] || (limiters[m] = []))[channel] = modifier;\n\t});\n\n\tmodel = model[0];\n\n\treturn function (val) {\n\t\tvar result;\n\n\t\tif (arguments.length) {\n\t\t\tif (modifier) {\n\t\t\t\tval = modifier(val);\n\t\t\t}\n\n\t\t\tresult = this[model]();\n\t\t\tresult.color[channel] = val;\n\t\t\treturn result;\n\t\t}\n\n\t\tresult = this[model]().color[channel];\n\t\tif (modifier) {\n\t\t\tresult = modifier(result);\n\t\t}\n\n\t\treturn result;\n\t};\n}\n\nfunction maxfn(max) {\n\treturn function (v) {\n\t\treturn Math.max(0, Math.min(max, v));\n\t};\n}\n\nfunction assertArray(val) {\n\treturn Array.isArray(val) ? val : [val];\n}\n\nfunction zeroArray(arr, length) {\n\tfor (var i = 0; i < length; i++) {\n\t\tif (typeof arr[i] !== 'number') {\n\t\t\tarr[i] = 0;\n\t\t}\n\t}\n\n\treturn arr;\n}\n\nmodule.exports = Color;\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 * 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 accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n *   return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\nfunction curry(func, arity, guard) {\n  arity = guard ? undefined : arity;\n  var result = createWrap(func, CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n  result.placeholder = curry.placeholder;\n  return result;\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.\ncurry.placeholder = {};\n\nmodule.exports = curry;\n","export function yuv2rgb(yuv) {\n  var y = yuv[0],\n      u = yuv[1],\n      v = yuv[2];\n  var r, g, b;\n  r = y * 1 + u * 0 + v * 1.13983;\n  g = y * 1 + u * -0.39465 + v * -0.5806;\n  b = y * 1 + u * 2.02311 + v * 0;\n  r = Math.min(Math.max(0, r), 1);\n  g = Math.min(Math.max(0, g), 1);\n  b = Math.min(Math.max(0, b), 1);\n  return [r * 255, g * 255, b * 255];\n}\nexport function rgb2yuv(rgb) {\n  var r = rgb[0] / 255,\n      g = rgb[1] / 255,\n      b = rgb[2] / 255;\n  var y = r * 0.299 + g * 0.587 + b * 0.114;\n  var u = r * -0.14713 + g * -0.28886 + b * 0.436;\n  var v = r * 0.615 + g * -0.51499 + b * -0.10001;\n  return [y, u, v];\n}","export {};","import _typeof from \"@babel/runtime/helpers/typeof\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nimport * as base16 from 'base16';\nimport Color from 'color';\nimport curry from 'lodash.curry';\nimport { yuv2rgb, rgb2yuv } from './colorConverters';\nvar DEFAULT_BASE16 = base16.default;\nvar BASE16_KEYS = Object.keys(DEFAULT_BASE16); // we need a correcting factor, so that a dark, but not black background color\n// converts to bright enough inversed color\n\nvar flip = function flip(x) {\n  return x < 0.25 ? 1 : x < 0.5 ? 0.9 - x : 1.1 - x;\n};\n\nvar invertColor = function invertColor(hexString) {\n  var color = Color(hexString);\n\n  var _rgb2yuv = rgb2yuv(color.array()),\n      _rgb2yuv2 = _slicedToArray(_rgb2yuv, 3),\n      y = _rgb2yuv2[0],\n      u = _rgb2yuv2[1],\n      v = _rgb2yuv2[2];\n\n  var flippedYuv = [flip(y), u, v];\n  var rgb = yuv2rgb(flippedYuv);\n  return Color.rgb(rgb).hex();\n};\n\nvar merger = function merger(styling) {\n  return function (prevStyling) {\n    return {\n      className: [prevStyling.className, styling.className].filter(Boolean).join(' '),\n      style: _objectSpread(_objectSpread({}, prevStyling.style || {}), styling.style || {})\n    };\n  };\n};\n\nvar mergeStyling = function mergeStyling(customStyling, defaultStyling) {\n  if (customStyling === undefined) {\n    return defaultStyling;\n  }\n\n  if (defaultStyling === undefined) {\n    return customStyling;\n  }\n\n  var customType = _typeof(customStyling);\n\n  var defaultType = _typeof(defaultStyling);\n\n  switch (customType) {\n    case 'string':\n      switch (defaultType) {\n        case 'string':\n          return [defaultStyling, customStyling].filter(Boolean).join(' ');\n\n        case 'object':\n          return merger({\n            className: customStyling,\n            style: defaultStyling\n          });\n\n        case 'function':\n          return function (styling) {\n            for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n              args[_key - 1] = arguments[_key];\n            }\n\n            return merger({\n              className: customStyling\n            })(defaultStyling.apply(void 0, [styling].concat(args)));\n          };\n      }\n\n      break;\n\n    case 'object':\n      switch (defaultType) {\n        case 'string':\n          return merger({\n            className: defaultStyling,\n            style: customStyling\n          });\n\n        case 'object':\n          return _objectSpread(_objectSpread({}, defaultStyling), customStyling);\n\n        case 'function':\n          return function (styling) {\n            for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n              args[_key2 - 1] = arguments[_key2];\n            }\n\n            return merger({\n              style: customStyling\n            })(defaultStyling.apply(void 0, [styling].concat(args)));\n          };\n      }\n\n      break;\n\n    case 'function':\n      switch (defaultType) {\n        case 'string':\n          return function (styling) {\n            for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n              args[_key3 - 1] = arguments[_key3];\n            }\n\n            return customStyling.apply(void 0, [merger(styling)({\n              className: defaultStyling\n            })].concat(args));\n          };\n\n        case 'object':\n          return function (styling) {\n            for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n              args[_key4 - 1] = arguments[_key4];\n            }\n\n            return customStyling.apply(void 0, [merger(styling)({\n              style: defaultStyling\n            })].concat(args));\n          };\n\n        case 'function':\n          return function (styling) {\n            for (var _len5 = arguments.length, args = new Array(_len5 > 1 ? _len5 - 1 : 0), _key5 = 1; _key5 < _len5; _key5++) {\n              args[_key5 - 1] = arguments[_key5];\n            }\n\n            return customStyling.apply(void 0, [defaultStyling.apply(void 0, [styling].concat(args))].concat(args));\n          };\n      }\n\n  }\n};\n\nvar mergeStylings = function mergeStylings(customStylings, defaultStylings) {\n  var keys = Object.keys(defaultStylings);\n\n  for (var key in customStylings) {\n    if (keys.indexOf(key) === -1) keys.push(key);\n  }\n\n  return keys.reduce(function (mergedStyling, key) {\n    return mergedStyling[key] = mergeStyling(customStylings[key], defaultStylings[key]), mergedStyling;\n  }, {});\n};\n\nvar getStylingByKeys = function getStylingByKeys(mergedStyling, keys) {\n  for (var _len6 = arguments.length, args = new Array(_len6 > 2 ? _len6 - 2 : 0), _key6 = 2; _key6 < _len6; _key6++) {\n    args[_key6 - 2] = arguments[_key6];\n  }\n\n  if (keys === null) {\n    return mergedStyling;\n  }\n\n  if (!Array.isArray(keys)) {\n    keys = [keys];\n  }\n\n  var styles = keys.map(function (key) {\n    return mergedStyling[key];\n  }).filter(Boolean);\n  var props = styles.reduce(function (obj, s) {\n    if (typeof s === 'string') {\n      obj.className = [obj.className, s].filter(Boolean).join(' ');\n    } else if (_typeof(s) === 'object') {\n      obj.style = _objectSpread(_objectSpread({}, obj.style), s);\n    } else if (typeof s === 'function') {\n      obj = _objectSpread(_objectSpread({}, obj), s.apply(void 0, [obj].concat(args)));\n    }\n\n    return obj;\n  }, {\n    className: '',\n    style: {}\n  });\n\n  if (!props.className) {\n    delete props.className;\n  }\n\n  if (Object.keys(props.style).length === 0) {\n    delete props.style;\n  }\n\n  return props;\n};\n\nexport var invertBase16Theme = function invertBase16Theme(base16Theme) {\n  return Object.keys(base16Theme).reduce(function (t, key) {\n    return t[key] = /^base/.test(key) ? invertColor(base16Theme[key]) : key === 'scheme' ? base16Theme[key] + ':inverted' : base16Theme[key], t;\n  }, {});\n};\nexport var createStyling = curry(function (getStylingFromBase16) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  var themeOrStyling = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n  var _options$defaultBase = options.defaultBase16,\n      defaultBase16 = _options$defaultBase === void 0 ? DEFAULT_BASE16 : _options$defaultBase,\n      _options$base16Themes = options.base16Themes,\n      base16Themes = _options$base16Themes === void 0 ? null : _options$base16Themes;\n  var base16Theme = getBase16Theme(themeOrStyling, base16Themes);\n\n  if (base16Theme) {\n    themeOrStyling = _objectSpread(_objectSpread({}, base16Theme), themeOrStyling);\n  }\n\n  var theme = BASE16_KEYS.reduce(function (t, key) {\n    return t[key] = themeOrStyling[key] || defaultBase16[key], t;\n  }, {});\n  var customStyling = Object.keys(themeOrStyling).reduce(function (s, key) {\n    return BASE16_KEYS.indexOf(key) === -1 ? (s[key] = themeOrStyling[key], s) : s;\n  }, {});\n  var defaultStyling = getStylingFromBase16(theme);\n  var mergedStyling = mergeStylings(customStyling, defaultStyling);\n\n  for (var _len7 = arguments.length, args = new Array(_len7 > 3 ? _len7 - 3 : 0), _key7 = 3; _key7 < _len7; _key7++) {\n    args[_key7 - 3] = arguments[_key7];\n  }\n\n  return curry(getStylingByKeys, 2).apply(void 0, [mergedStyling].concat(args));\n}, 3);\n\nvar isStylingConfig = function isStylingConfig(theme) {\n  return !!theme.extend;\n};\n\nexport var getBase16Theme = function getBase16Theme(theme, base16Themes) {\n  if (theme && isStylingConfig(theme) && theme.extend) {\n    theme = theme.extend;\n  }\n\n  if (typeof theme === 'string') {\n    var _theme$split = theme.split(':'),\n        _theme$split2 = _slicedToArray(_theme$split, 2),\n        _themeName = _theme$split2[0],\n        modifier = _theme$split2[1];\n\n    if (base16Themes) {\n      theme = base16Themes[_themeName];\n    } else {\n      theme = base16[_themeName];\n    }\n\n    if (modifier === 'inverted') {\n      theme = invertBase16Theme(theme);\n    }\n  }\n\n  return theme && Object.prototype.hasOwnProperty.call(theme, 'base00') ? theme : undefined;\n};\nexport var invertTheme = function invertTheme(theme) {\n  if (typeof theme === 'string') {\n    return \"\".concat(theme, \":inverted\");\n  }\n\n  if (theme && isStylingConfig(theme) && theme.extend) {\n    if (typeof theme.extend === 'string') {\n      return _objectSpread(_objectSpread({}, theme), {}, {\n        extend: \"\".concat(theme.extend, \":inverted\")\n      });\n    }\n\n    return _objectSpread(_objectSpread({}, theme), {}, {\n      extend: invertBase16Theme(theme.extend)\n    });\n  }\n\n  if (theme) {\n    return invertBase16Theme(theme);\n  }\n\n  return theme;\n};\nexport * from './types';","export default {\n  scheme: 'solarized',\n  author: 'ethan schoonover (http://ethanschoonover.com/solarized)',\n  base00: '#002b36',\n  base01: '#073642',\n  base02: '#586e75',\n  base03: '#657b83',\n  base04: '#839496',\n  base05: '#93a1a1',\n  base06: '#eee8d5',\n  base07: '#fdf6e3',\n  base08: '#dc322f',\n  base09: '#cb4b16',\n  base0A: '#b58900',\n  base0B: '#859900',\n  base0C: '#2aa198',\n  base0D: '#268bd2',\n  base0E: '#6c71c4',\n  base0F: '#d33682'\n};","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nimport { createStyling } from 'react-base16-styling';\nimport solarized from './themes/solarized';\n\nvar colorMap = function colorMap(theme) {\n  return {\n    BACKGROUND_COLOR: theme.base00,\n    TEXT_COLOR: theme.base07,\n    STRING_COLOR: theme.base0B,\n    DATE_COLOR: theme.base0B,\n    NUMBER_COLOR: theme.base09,\n    BOOLEAN_COLOR: theme.base09,\n    NULL_COLOR: theme.base08,\n    UNDEFINED_COLOR: theme.base08,\n    FUNCTION_COLOR: theme.base08,\n    SYMBOL_COLOR: theme.base08,\n    LABEL_COLOR: theme.base0D,\n    ARROW_COLOR: theme.base0D,\n    ITEM_STRING_COLOR: theme.base0B,\n    ITEM_STRING_EXPANDED_COLOR: theme.base03\n  };\n};\n\nvar valueColorMap = function valueColorMap(colors) {\n  return {\n    String: colors.STRING_COLOR,\n    Date: colors.DATE_COLOR,\n    Number: colors.NUMBER_COLOR,\n    Boolean: colors.BOOLEAN_COLOR,\n    Null: colors.NULL_COLOR,\n    Undefined: colors.UNDEFINED_COLOR,\n    Function: colors.FUNCTION_COLOR,\n    Symbol: colors.SYMBOL_COLOR\n  };\n};\n\nvar getDefaultThemeStyling = function getDefaultThemeStyling(theme) {\n  var colors = colorMap(theme);\n  return {\n    tree: {\n      border: 0,\n      padding: 0,\n      marginTop: '0.5em',\n      marginBottom: '0.5em',\n      marginLeft: '0.125em',\n      marginRight: 0,\n      listStyle: 'none',\n      MozUserSelect: 'none',\n      WebkitUserSelect: 'none',\n      backgroundColor: colors.BACKGROUND_COLOR\n    },\n    value: function value(_ref, nodeType, keyPath) {\n      var style = _ref.style;\n      return {\n        style: _objectSpread(_objectSpread({}, style), {}, {\n          paddingTop: '0.25em',\n          paddingRight: 0,\n          marginLeft: '0.875em',\n          WebkitUserSelect: 'text',\n          MozUserSelect: 'text',\n          wordWrap: 'break-word',\n          paddingLeft: keyPath.length > 1 ? '2.125em' : '1.25em',\n          textIndent: '-0.5em',\n          wordBreak: 'break-all'\n        })\n      };\n    },\n    label: {\n      display: 'inline-block',\n      color: colors.LABEL_COLOR\n    },\n    valueLabel: {\n      margin: '0 0.5em 0 0'\n    },\n    valueText: function valueText(_ref2, nodeType) {\n      var style = _ref2.style;\n      return {\n        style: _objectSpread(_objectSpread({}, style), {}, {\n          color: valueColorMap(colors)[nodeType]\n        })\n      };\n    },\n    itemRange: function itemRange(styling, expanded) {\n      return {\n        style: {\n          paddingTop: expanded ? 0 : '0.25em',\n          cursor: 'pointer',\n          color: colors.LABEL_COLOR\n        }\n      };\n    },\n    arrow: function arrow(_ref3, nodeType, expanded) {\n      var style = _ref3.style;\n      return {\n        style: _objectSpread(_objectSpread({}, style), {}, {\n          marginLeft: 0,\n          transition: '150ms',\n          WebkitTransition: '150ms',\n          MozTransition: '150ms',\n          WebkitTransform: expanded ? 'rotateZ(90deg)' : 'rotateZ(0deg)',\n          MozTransform: expanded ? 'rotateZ(90deg)' : 'rotateZ(0deg)',\n          transform: expanded ? 'rotateZ(90deg)' : 'rotateZ(0deg)',\n          transformOrigin: '45% 50%',\n          WebkitTransformOrigin: '45% 50%',\n          MozTransformOrigin: '45% 50%',\n          position: 'relative',\n          lineHeight: '1.1em',\n          fontSize: '0.75em'\n        })\n      };\n    },\n    arrowContainer: function arrowContainer(_ref4, arrowStyle) {\n      var style = _ref4.style;\n      return {\n        style: _objectSpread(_objectSpread({}, style), {}, {\n          display: 'inline-block',\n          paddingRight: '0.5em',\n          paddingLeft: arrowStyle === 'double' ? '1em' : 0,\n          cursor: 'pointer'\n        })\n      };\n    },\n    arrowSign: {\n      color: colors.ARROW_COLOR\n    },\n    arrowSignInner: {\n      position: 'absolute',\n      top: 0,\n      left: '-0.4em'\n    },\n    nestedNode: function nestedNode(_ref5, keyPath, nodeType, expanded, expandable) {\n      var style = _ref5.style;\n      return {\n        style: _objectSpread(_objectSpread({}, style), {}, {\n          position: 'relative',\n          paddingTop: '0.25em',\n          marginLeft: keyPath.length > 1 ? '0.875em' : 0,\n          paddingLeft: !expandable ? '1.125em' : 0\n        })\n      };\n    },\n    rootNode: {\n      padding: 0,\n      margin: 0\n    },\n    nestedNodeLabel: function nestedNodeLabel(_ref6, keyPath, nodeType, expanded, expandable) {\n      var style = _ref6.style;\n      return {\n        style: _objectSpread(_objectSpread({}, style), {}, {\n          margin: 0,\n          padding: 0,\n          WebkitUserSelect: expandable ? 'inherit' : 'text',\n          MozUserSelect: expandable ? 'inherit' : 'text',\n          cursor: expandable ? 'pointer' : 'default'\n        })\n      };\n    },\n    nestedNodeItemString: function nestedNodeItemString(_ref7, keyPath, nodeType, expanded) {\n      var style = _ref7.style;\n      return {\n        style: _objectSpread(_objectSpread({}, style), {}, {\n          paddingLeft: '0.5em',\n          cursor: 'default',\n          color: expanded ? colors.ITEM_STRING_EXPANDED_COLOR : colors.ITEM_STRING_COLOR\n        })\n      };\n    },\n    nestedNodeItemType: {\n      marginLeft: '0.3em',\n      marginRight: '0.3em'\n    },\n    nestedNodeChildren: function nestedNodeChildren(_ref8, nodeType, expanded) {\n      var style = _ref8.style;\n      return {\n        style: _objectSpread(_objectSpread({}, style), {}, {\n          padding: 0,\n          margin: 0,\n          listStyle: 'none',\n          display: expanded ? 'block' : 'none'\n        })\n      };\n    },\n    rootNodeChildren: {\n      padding: 0,\n      margin: 0,\n      listStyle: 'none'\n    }\n  };\n};\n\nvar createStylingFromTheme = createStyling(getDefaultThemeStyling, {\n  defaultBase16: solarized\n});\nexport default createStylingFromTheme;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nvar _excluded = [\"data\", \"keyPath\", \"postprocessValue\", \"hideRoot\", \"theme\", \"invertTheme\"];\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\n// ES6 + inline style port of JSONViewer https://bitbucket.org/davevedder/react-json-viewer/\n// all credits and original code to the author\n// Dave Vedder <veddermatic@gmail.com> http://www.eskimospy.com/\n// port by Daniele Zannotti http://www.github.com/dzannotti <dzannotti@me.com>\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport JSONNode from './JSONNode';\nimport createStylingFromTheme from './createStylingFromTheme';\nimport { invertTheme } from 'react-base16-styling';\n\nvar identity = function identity(value) {\n  return value;\n};\n\nvar expandRootNode = function expandRootNode(keyPath, data, level) {\n  return level === 0;\n};\n\nvar defaultItemString = function defaultItemString(type, data, itemType, itemString) {\n  return /*#__PURE__*/React.createElement(\"span\", null, itemType, \" \", itemString);\n};\n\nvar defaultLabelRenderer = function defaultLabelRenderer(_ref) {\n  var _ref2 = _slicedToArray(_ref, 1),\n      label = _ref2[0];\n\n  return /*#__PURE__*/React.createElement(\"span\", null, label, \":\");\n};\n\nvar noCustomNode = function noCustomNode() {\n  return false;\n};\n\nfunction checkLegacyTheming(theme, props) {\n  var deprecatedStylingMethodsMap = {\n    getArrowStyle: 'arrow',\n    getListStyle: 'nestedNodeChildren',\n    getItemStringStyle: 'nestedNodeItemString',\n    getLabelStyle: 'label',\n    getValueStyle: 'valueText'\n  };\n  var deprecatedStylingMethods = Object.keys(deprecatedStylingMethodsMap).filter(function (name) {\n    return props[name];\n  });\n\n  if (deprecatedStylingMethods.length > 0) {\n    if (typeof theme === 'string') {\n      theme = {\n        extend: theme\n      };\n    } else {\n      theme = _objectSpread({}, theme);\n    }\n\n    deprecatedStylingMethods.forEach(function (name) {\n      // eslint-disable-next-line no-console\n      console.error(\"Styling method \\\"\".concat(name, \"\\\" is deprecated, use \\\"theme\\\" property instead\"));\n\n      theme[deprecatedStylingMethodsMap[name]] = function (_ref3) {\n        var style = _ref3.style;\n\n        for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n          args[_key - 1] = arguments[_key];\n        }\n\n        return {\n          style: _objectSpread(_objectSpread({}, style), props[name].apply(props, args))\n        };\n      };\n    });\n  }\n\n  return theme;\n}\n\nfunction getStateFromProps(props) {\n  var theme = checkLegacyTheming(props.theme, props);\n\n  if (props.invertTheme) {\n    theme = invertTheme(theme);\n  }\n\n  return {\n    styling: createStylingFromTheme(theme)\n  };\n}\n\nexport var JSONTree = /*#__PURE__*/function (_React$Component) {\n  _inherits(JSONTree, _React$Component);\n\n  var _super = _createSuper(JSONTree);\n\n  function JSONTree(props) {\n    var _this;\n\n    _classCallCheck(this, JSONTree);\n\n    _this = _super.call(this, props);\n    _this.state = getStateFromProps(props);\n    return _this;\n  }\n\n  _createClass(JSONTree, [{\n    key: \"UNSAFE_componentWillReceiveProps\",\n    value: function UNSAFE_componentWillReceiveProps(nextProps) {\n      var _this2 = this;\n\n      if (['theme', 'invertTheme'].find(function (k) {\n        return nextProps[k] !== _this2.props[k];\n      })) {\n        this.setState(getStateFromProps(nextProps));\n      }\n    }\n  }, {\n    key: \"shouldComponentUpdate\",\n    value: function shouldComponentUpdate(nextProps) {\n      var _this3 = this;\n\n      return !!Object.keys(nextProps).find(function (k) {\n        return k === 'keyPath' ? nextProps[k].join('/') !== _this3.props[k].join('/') : nextProps[k] !== _this3.props[k];\n      });\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this$props = this.props,\n          value = _this$props.data,\n          keyPath = _this$props.keyPath,\n          postprocessValue = _this$props.postprocessValue,\n          hideRoot = _this$props.hideRoot,\n          theme = _this$props.theme,\n          _ = _this$props.invertTheme,\n          rest = _objectWithoutProperties(_this$props, _excluded);\n\n      var styling = this.state.styling;\n      return /*#__PURE__*/React.createElement(\"ul\", styling('tree'), /*#__PURE__*/React.createElement(JSONNode, _extends({}, _objectSpread({\n        postprocessValue: postprocessValue,\n        hideRoot: hideRoot,\n        styling: styling\n      }, rest), {\n        keyPath: hideRoot ? [] : keyPath,\n        value: postprocessValue(value)\n      })));\n    }\n  }]);\n\n  return JSONTree;\n}(React.Component);\n\n_defineProperty(JSONTree, \"propTypes\", {\n  data: PropTypes.any,\n  hideRoot: PropTypes.bool,\n  theme: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),\n  invertTheme: PropTypes.bool,\n  keyPath: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number])),\n  postprocessValue: PropTypes.func,\n  sortObjectKeys: PropTypes.oneOfType([PropTypes.func, PropTypes.bool])\n});\n\n_defineProperty(JSONTree, \"defaultProps\", {\n  shouldExpandNode: expandRootNode,\n  hideRoot: false,\n  keyPath: ['root'],\n  getItemString: defaultItemString,\n  labelRenderer: defaultLabelRenderer,\n  valueRenderer: identity,\n  postprocessValue: identity,\n  isCustomNode: noCustomNode,\n  collectionLimit: 50,\n  invertTheme: true\n});","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React from \"react\";\nimport { JSONTree } from \"react-json-tree\";\nimport { jsonTreeTheme } from \"../theme\";\nexport default function JSONTreeWrapper(props) {\n  return /*#__PURE__*/React.createElement(JSONTree, _extends({\n    invertTheme: false,\n    theme: jsonTreeTheme,\n    hideRoot: true\n  }, props));\n}","/* heading.tsx generated by @compiled/babel-plugin v0.17.1 */\nimport { ax, ix, CC, CS } from \"@compiled/react/runtime\";\nimport React from \"react\";\nimport theme from \"../theme\";\nvar _35 = \"._1di61emw:active{background-color:rgba(203,166,247,.6)}\";\nvar _34 = \"._1hvw1o36:focus{outline-width:medium}\";\nvar _33 = \"._49pcglyw:focus{outline-style:none}\";\nvar _32 = \"._nt751r31:focus{outline-color:currentColor}\";\nvar _31 = \"._d0altlke:hover{cursor:pointer}\";\nvar _30 = \"._30l35y2n:hover{color:#cdd6f4}\";\nvar _29 = \"._irr31wye:hover{background-color:rgba(203,166,247,.4)}\";\nvar _28 = \"._11q71j28{background:transparent}\";\nvar _27 = \"._19itglyw{border:none}\";\nvar _26 = \"._2rkoyh40{border-radius:2px}\";\nvar _25 = \"._v564111k{transition:background .3s,color .3s}\";\nvar _24 = \"._syazryvq{color:rgba(205,214,244,.8)}\";\nvar _23 = \"._1wyb1skh{font-size:11px}\";\nvar _22 = \"._18u0ftgi{margin-left:8px}\";\nvar _21 = \"._2hwx14id{margin-right:-10px}\";\nvar _20 = \"._19pkyjp0{margin-top:-6px}\";\nvar _19 = \"._19bv19bv{padding-left:10px}\";\nvar _18 = \"._n3tdi2wt{padding-bottom:6px}\";\nvar _17 = \"._u5f319bv{padding-right:10px}\";\nvar _16 = \"._ca0qi2wt{padding-top:6px}\";\nvar _15 = \"._1e0c1txw{display:flex}\";\nvar _14 = \"._16jlkb7n{flex-grow:1}\";\nvar _13 = \"._1p1dangw{text-transform:uppercase}\";\nvar _12 = \"._1wybw1gv{font-size:13px}\";\nvar _11 = \"._1dyzt94y{letter-spacing:1px}\";\nvar _10 = \"._k48p1nn1{font-weight:400}\";\nvar _9 = \"._18u0idpf{margin-left:0}\";\nvar _8 = \"._otyridpf{margin-bottom:0}\";\nvar _7 = \"._2hwxidpf{margin-right:0}\";\nvar _6 = \"._19pkidpf{margin-top:0}\";\nvar _5 = \"._19bvidpf{padding-left:0}\";\nvar _4 = \"._n3tdidpf{padding-bottom:0}\";\nvar _3 = \"._u5f3idpf{padding-right:0}\";\nvar _2 = \"._ca0qidpf{padding-top:0}\";\nvar _ = \"._syaz1ds0{color:#b4befe}\";\nvar headingStyles = null;\nvar Heading = function Heading(_ref) {\n  var children = _ref.children;\n  return /*#__PURE__*/React.createElement(CC, null, /*#__PURE__*/React.createElement(CS, null, [_, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14]), /*#__PURE__*/React.createElement(\"h2\", {\n    className: ax([\"_syaz1ds0 _ca0qidpf _u5f3idpf _n3tdidpf _19bvidpf _19pkidpf _2hwxidpf _otyridpf _18u0idpf _k48p1nn1 _1dyzt94y _1wybw1gv _1p1dangw _16jlkb7n\"])\n  }, children));\n};\nvar headingWithButtonStyles = null;\nvar HeadingWithButton = function HeadingWithButton(_ref2) {\n  var children = _ref2.children;\n  return /*#__PURE__*/React.createElement(CC, null, /*#__PURE__*/React.createElement(CS, null, [_15]), /*#__PURE__*/React.createElement(\"div\", {\n    className: ax([\"_1e0c1txw\"])\n  }, children));\n};\nvar headingButtonStyles = null;\nvar HeadingButton = function HeadingButton(_ref3) {\n  var children = _ref3.children,\n    onClick = _ref3.onClick;\n  return /*#__PURE__*/React.createElement(CC, null, /*#__PURE__*/React.createElement(CS, null, [_16, _17, _18, _19, _20, _21, _8, _22, _10, _11, _23, _24, _13, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35]), /*#__PURE__*/React.createElement(\"button\", {\n    onClick: onClick,\n    className: ax([\"_ca0qi2wt _u5f319bv _n3tdi2wt _19bv19bv _19pkyjp0 _2hwx14id _otyridpf _18u0ftgi _k48p1nn1 _1dyzt94y _1wyb1skh _syazryvq _1p1dangw _v564111k _2rkoyh40 _19itglyw _11q71j28 _irr31wye _30l35y2n _d0altlke _nt751r31 _49pcglyw _1hvw1o36 _1di61emw\"])\n  }, children));\n};\nexport { Heading, HeadingWithButton, HeadingButton };","import { atom } from \"jotai\";\nexport var editorStateAtom = atom(null);","import { atom } from \"jotai\";\nimport { editorStateAtom } from \"./editor-state\";\nexport var activeMarksAtom = atom(function (get) {\n  var editorState = get(editorStateAtom);\n  if (!editorState) return [];\n  return getActiveMarks(editorState);\n});\nfunction getActiveMarks(editorState) {\n  var selection = editorState.selection;\n  var marks = [];\n  if (selection.empty) {\n    marks = selection.$from.marks();\n  } else {\n    editorState.doc.nodesBetween(selection.from, selection.to, function (node) {\n      marks = marks.concat(node.marks);\n    });\n  }\n  return marks.reduce(function (acc, mark) {\n    if (acc.indexOf(mark) === -1) {\n      acc.push(mark);\n    }\n    return acc;\n  }, []).map(function (m) {\n    return m.toJSON();\n  });\n}","import { atom } from \"jotai\";\nexport var expandPathAtom = atom([]);","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\nfunction findNode(fullPath, currentNode, nodeToFind) {\n  if (nodeToFind === currentNode) {\n    return fullPath;\n  }\n  var fragment = currentNode.content;\n  if (!fragment || !fragment.content) return null;\n  var res = fragment.content.map(function (currentNode, i) {\n    return findNode([].concat(_toConsumableArray(fullPath), [\"content\", i]), currentNode, nodeToFind);\n  }).filter(function (res) {\n    return Array.isArray(res) && res.length;\n  })[0];\n  return res;\n}\nexport default function findNodeIn(doc, node) {\n  var path = findNode([], doc, node);\n  if (path) {\n    return path.reduce(function (newPath, item) {\n      // [0, content, content, 0] => [0, content, 0]\n      // Because JSON representation a bit different from actual DOC.\n      if (item === \"content\" && newPath[newPath.length - 1] === \"content\") {\n        return newPath;\n      }\n      newPath.push(item);\n      return newPath;\n    }, []);\n  }\n}\nexport function findNodeJSON(fullPath, currentNode, nodeToFind) {\n  if (nodeToFind === currentNode) {\n    return fullPath;\n  }\n  if (!currentNode.content) return [];\n  if (currentNode.content === nodeToFind) {\n    return fullPath.concat(\"content\");\n  }\n  var res = currentNode.content.map(function (currentNode, i) {\n    return findNodeJSON([].concat(_toConsumableArray(fullPath), [\"content\", i]), currentNode, nodeToFind);\n  }).filter(function (res) {\n    return Array.isArray(res) && res.length;\n  })[0];\n  return res;\n}\nexport function findPMNode(domNode) {\n  var node;\n  var target = domNode;\n  while (!node && target) {\n    if (target.pmViewDesc) {\n      node = target;\n    }\n    target = target.parentNode;\n  }\n  return node;\n}","import { findNodeJSON } from \"./find-node\";\nexport var logNodeFromJSON = function logNodeFromJSON(state) {\n  return function (_ref) {\n    var doc = _ref.doc,\n      node = _ref.node;\n    var fullDoc = state.doc;\n    var path = findNodeJSON([], doc, node);\n    if (path) {\n      console.log(path.reduce(function (node, pathItem) {\n        return node[pathItem];\n      }, fullDoc.toJSON()));\n    } else {\n      console.log(node);\n    }\n  };\n};","/* state.tsx generated by @compiled/babel-plugin v0.17.1 */\nimport { ax, ix, CC, CS } from \"@compiled/react/runtime\";\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nimport React from \"react\";\nimport { atom, useAtom, useAtomValue } from \"jotai\";\nimport { expandedStateFormatSelection, collapsedStateFormatSelection } from \"../utils/format-selection-object\";\nimport { SplitView, SplitViewCol } from \"../components/split-view\";\nimport JSONTree from \"../components/json-tree\";\nimport { Heading, HeadingWithButton, HeadingButton } from \"../components/heading\";\nimport theme from \"../theme\";\nimport { activeMarksAtom } from \"../state/active-marks\";\nimport { expandPathAtom } from \"../state/expand-path\";\nimport { editorStateAtom } from \"../state/editor-state\";\nimport { logNodeFromJSON } from \"../utils/log-node-from-json\";\nvar _32 = \"._1hvw1o36:focus{outline-width:medium}\";\nvar _31 = \"._49pcglyw:focus{outline-style:none}\";\nvar _30 = \"._nt751r31:focus{outline-color:currentColor}\";\nvar _29 = \"._30l35y2n:hover{color:#cdd6f4}\";\nvar _28 = \"._irr31wye:hover{background-color:rgba(203,166,247,.4)}\";\nvar _27 = \"._d0altlke:hover{cursor:pointer}\";\nvar _26 = \"._2rko1l7b{border-radius:3px}\";\nvar _25 = \"._v564111k{transition:background .3s,color .3s}\";\nvar _24 = \"._19itglyw{border:none}\";\nvar _23 = \"._11q7glyw{background:none}\";\nvar _22 = \"._syaz4yqd{color:rgba(205,214,244,.6)}\";\nvar _21 = \"._syazonp9{color:#fab387}\";\nvar _20 = \"._18u0idpf{margin-left:0}\";\nvar _19 = \"._otyridpf{margin-bottom:0}\";\nvar _18 = \"._2hwxhage{margin-right:.5em}\";\nvar _17 = \"._19pkidpf{margin-top:0}\";\nvar _16 = \"._syazx4b6{color:#89dceb}\";\nvar _15 = \"._1e0c1o8l{display:inline-block}\";\nvar _14 = \"._ca0qpd1z{padding-top:.25em}\";\nvar _13 = \"._18u01x4e{margin-left:1em}\";\nvar _12 = \"._otyrhage{margin-bottom:.5em}\";\nvar _11 = \"._2hwxidpf{margin-right:0}\";\nvar _10 = \"._19pkhage{margin-top:.5em}\";\nvar _9 = \"._129lrdoj+._129lrdoj{padding-top:9px}\";\nvar _8 = \"._vchhusvi{box-sizing:border-box}\";\nvar _7 = \"._1ul9mgvx{min-width:180px}\";\nvar _6 = \"._18m915vq{overflow-y:hidden}\";\nvar _5 = \"._1reo15vq{overflow-x:hidden}\";\nvar _4 = \"._19bvidpf{padding-left:0}\";\nvar _3 = \"._n3tdrdoj{padding-bottom:9px}\";\nvar _2 = \"._u5f3idpf{padding-right:0}\";\nvar _ = \"._ca0qidpf{padding-top:0}\";\nvar JSONTreeWrapper = function JSONTreeWrapper(_ref) {\n  var children = _ref.children;\n  return /*#__PURE__*/React.createElement(CC, null, /*#__PURE__*/React.createElement(CS, null, [_, _2, _3, _4, _5, _6]), /*#__PURE__*/React.createElement(\"div\", {\n    className: ax([\"_ca0qidpf _u5f3idpf _n3tdrdoj _19bvidpf _1reo15vq _18m915vq\"])\n  }, children));\n};\nvar Section = function Section(_ref2) {\n  var children = _ref2.children;\n  return /*#__PURE__*/React.createElement(CC, null, /*#__PURE__*/React.createElement(CS, null, [_7, _8, _9]), /*#__PURE__*/React.createElement(\"div\", {\n    className: ax([\"_1ul9mgvx _vchhusvi _129lrdoj\"])\n  }, children));\n};\nvar Group = function Group(_ref3) {\n  var children = _ref3.children;\n  return /*#__PURE__*/React.createElement(CC, null, /*#__PURE__*/React.createElement(CS, null, [_10, _11, _12, _13]), /*#__PURE__*/React.createElement(\"div\", {\n    className: ax([\"_19pkhage _2hwxidpf _otyrhage _18u01x4e\"])\n  }, children));\n};\nvar GroupRow = function GroupRow(_ref4) {\n  var children = _ref4.children;\n  return /*#__PURE__*/React.createElement(CC, null, /*#__PURE__*/React.createElement(CS, null, [_14]), /*#__PURE__*/React.createElement(\"div\", {\n    className: ax([\"_ca0qpd1z\"])\n  }, children));\n};\nvar Key = function Key(_ref5) {\n  var children = _ref5.children;\n  return /*#__PURE__*/React.createElement(CC, null, /*#__PURE__*/React.createElement(CS, null, [_15, _16, _17, _18, _19, _20]), /*#__PURE__*/React.createElement(\"div\", {\n    className: ax([\"_1e0c1o8l _syazx4b6 _19pkidpf _2hwxhage _otyridpf _18u0idpf\"])\n  }, children));\n};\nvar ValueNum = function ValueNum(_ref6) {\n  var children = _ref6.children;\n  return /*#__PURE__*/React.createElement(CC, null, /*#__PURE__*/React.createElement(CS, null, [_21]), /*#__PURE__*/React.createElement(\"div\", {\n    className: ax([\"_syazonp9\"])\n  }, children));\n};\nvar LogNodeButton = function LogNodeButton(_ref7) {\n  var children = _ref7.children,\n    onClick = _ref7.onClick;\n  return /*#__PURE__*/React.createElement(CC, null, /*#__PURE__*/React.createElement(CS, null, [_22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32]), /*#__PURE__*/React.createElement(\"button\", {\n    \"data-test-id\": \"__prosemirror_devtools_log_node_button__\",\n    onClick: onClick,\n    className: ax([\"_syaz4yqd _11q7glyw _19itglyw _v564111k _2rko1l7b _d0altlke _irr31wye _30l35y2n _nt751r31 _49pcglyw _1hvw1o36\"])\n  }, children));\n};\nexport function getItemString(doc, action) {\n  return function getItemStringWithBindedDoc(type, value, defaultView, keysCount) {\n    var logButton = /*#__PURE__*/React.createElement(LogNodeButton, {\n      onClick: function onClick(e) {\n        e.preventDefault();\n        e.stopPropagation();\n        action({\n          doc: doc,\n          node: value\n        });\n      }\n    }, \"log\");\n    if (type === \"Object\" && value.type) {\n      return /*#__PURE__*/React.createElement(\"span\", null, \"{} \", value.type, \" \", logButton);\n    }\n    return /*#__PURE__*/React.createElement(\"span\", null, defaultView, \" \", keysCount, \" \", logButton);\n  };\n}\nfunction getItemStringForMark(type, value, defaultView, keysCount) {\n  if (type === \"Object\" && value.type) {\n    return /*#__PURE__*/React.createElement(\"span\", null, \"{} \", value.type);\n  }\n  return /*#__PURE__*/React.createElement(\"span\", null, defaultView, \" \", keysCount);\n}\nfunction _shouldExpandNode(expandPath, nodePath) {\n  var path = [].concat(nodePath).reverse();\n  if (!expandPath) return false;\n\n  // Expand attrs if node has them.\n  // expandPath.push(\"attrs\");\n\n  if (path.length > expandPath.length) return false;\n  if (path.join(\".\") === expandPath.join(\".\")) return true;\n  if (path.every(function (el, idx) {\n    return el === expandPath[idx];\n  })) return true;\n  return false;\n}\nexport { _shouldExpandNode as shouldExpandNode };\nvar selectionAtom = atom(false);\nexport default function StateTab() {\n  var _useAtom = useAtom(selectionAtom),\n    _useAtom2 = _slicedToArray(_useAtom, 2),\n    selectionExpanded = _useAtom2[0],\n    setExpanded = _useAtom2[1];\n  var activeMarks = useAtomValue(activeMarksAtom);\n  var expandPath = useAtomValue(expandPathAtom);\n  var state = useAtomValue(editorStateAtom);\n  var doc = state === null || state === void 0 ? void 0 : state.doc.toJSON();\n  if (!state) return null;\n  var logNode = logNodeFromJSON(state);\n  return /*#__PURE__*/React.createElement(SplitView, {\n    testId: \"__prosemirror_devtools_tabs_state__\"\n  }, /*#__PURE__*/React.createElement(SplitViewCol, {\n    grow: true\n  }, /*#__PURE__*/React.createElement(HeadingWithButton, null, /*#__PURE__*/React.createElement(Heading, null, \"Current Doc\"), /*#__PURE__*/React.createElement(HeadingButton, {\n    onClick: function onClick() {\n      return console.log(state);\n    }\n  }, \"Log State\")), /*#__PURE__*/React.createElement(JSONTree, {\n    data: doc,\n    hideRoot: true,\n    getItemString: getItemString(doc, logNode),\n    shouldExpandNode: function shouldExpandNode(nodePath) {\n      return _shouldExpandNode(expandPath, nodePath);\n    }\n  })), /*#__PURE__*/React.createElement(SplitViewCol, {\n    sep: true,\n    minWidth: 220\n  }, /*#__PURE__*/React.createElement(Section, null, /*#__PURE__*/React.createElement(HeadingWithButton, null, /*#__PURE__*/React.createElement(Heading, null, \"Selection\"), /*#__PURE__*/React.createElement(HeadingButton, {\n    onClick: function onClick() {\n      return setExpanded(!selectionExpanded);\n    }\n  }, selectionExpanded ? \"▼\" : \"▶\")), /*#__PURE__*/React.createElement(JSONTreeWrapper, null, /*#__PURE__*/React.createElement(JSONTree, {\n    data: selectionExpanded ? expandedStateFormatSelection(state.selection) : collapsedStateFormatSelection(state.selection),\n    hideRoot: true\n  }))), /*#__PURE__*/React.createElement(Section, null, /*#__PURE__*/React.createElement(Heading, null, \"Active Marks\"), /*#__PURE__*/React.createElement(JSONTreeWrapper, null, activeMarks.length ? /*#__PURE__*/React.createElement(JSONTree, {\n    data: activeMarks,\n    hideRoot: true,\n    getItemString: getItemStringForMark\n  }) : /*#__PURE__*/React.createElement(Group, null, /*#__PURE__*/React.createElement(GroupRow, null, /*#__PURE__*/React.createElement(Key, null, \"no active marks\"))))), /*#__PURE__*/React.createElement(Section, null, /*#__PURE__*/React.createElement(Heading, null, \"Document Stats\"), /*#__PURE__*/React.createElement(Group, null, /*#__PURE__*/React.createElement(GroupRow, null, /*#__PURE__*/React.createElement(Key, null, \"nodeSize:\"), /*#__PURE__*/React.createElement(ValueNum, null, state.doc.nodeSize)), /*#__PURE__*/React.createElement(GroupRow, null, /*#__PURE__*/React.createElement(Key, null, \"childCount:\"), /*#__PURE__*/React.createElement(ValueNum, null, state.doc.childCount))))));\n}","/* info-panel.tsx generated by @compiled/babel-plugin v0.17.1 */\nimport { ax, ix, CC, CS } from \"@compiled/react/runtime\";\nimport React from \"react\";\nimport theme from \"../theme\";\nvar _6 = \"._1wybdlk8{font-size:14px}\";\nvar _5 = \"._syaz1u6e{color:#cba6f7}\";\nvar _4 = \"._y3gn1h6o{text-align:center}\";\nvar _3 = \"._t9ec1i34{transform:translateY(-50%)}\";\nvar _2 = \"._154i1ssb{top:50%}\";\nvar _ = \"._kqswh2mm{position:relative}\";\nvar infoPanelStyles = null;\nvar InfoPanel = function InfoPanel(_ref) {\n  var children = _ref.children;\n  return /*#__PURE__*/React.createElement(CC, null, /*#__PURE__*/React.createElement(CS, null, [_, _2, _3, _4, _5, _6]), /*#__PURE__*/React.createElement(\"div\", {\n    className: ax([\"_kqswh2mm _154i1ssb _t9ec1i34 _y3gn1h6o _syaz1u6e _1wybdlk8\"])\n  }, children));\n};\nexport { InfoPanel };","/* list.tsx generated by @compiled/babel-plugin v0.17.1 */\nimport { ax, ix, CC, CS } from \"@compiled/react/runtime\";\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nvar _33 = \"._1e0crqpp{display:var(--_1a5yx7a)}\";\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nimport React from \"react\";\nimport theme from \"../theme\";\n\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nvar _32 = \"._1di61emw:active{background-color:rgba(203,166,247,.6)}\";\nvar _31 = \"._1hvw1o36:focus{outline-width:medium}\";\nvar _30 = \"._49pcglyw:focus{outline-style:none}\";\nvar _29 = \"._nt751r31:focus{outline-color:currentColor}\";\nvar _28 = \"._d0altlke:hover{cursor:pointer}\";\nvar _27 = \"._30l35y2n:hover{color:#cdd6f4}\";\nvar _26 = \"._irr31wye:hover{background-color:rgba(203,166,247,.4)}\";\nvar _25 = \"._w41414jc+._w41414jc{border-top:1px solid rgba(203,166,247,.2)}\";\nvar _24 = \"._1bsb1osq{width:100%}\";\nvar _23 = \"._v5641y8x{transition:background .3s}\";\nvar _22 = \"._1p1dangw{text-transform:uppercase}\";\nvar _21 = \"._y3gn1e5h{text-align:left}\";\nvar _20 = \"._19bvnm8a{padding-left:var(--_1hdy39e)}\";\nvar _19 = \"._19bvf6fq{padding-left:18px}\";\nvar _18 = \"._n3tdi2wt{padding-bottom:6px}\";\nvar _17 = \"._u5f3f6fq{padding-right:18px}\";\nvar _16 = \"._ca0qi2wt{padding-top:6px}\";\nvar _15 = \"._tzy4139p{opacity:var(--_yl51qy)}\";\nvar _14 = \"._1ul913i4{min-width:190px}\";\nvar _13 = \"._18u0idpf{margin-left:0}\";\nvar _12 = \"._otyridpf{margin-bottom:0}\";\nvar _11 = \"._2hwxidpf{margin-right:0}\";\nvar _10 = \"._19pkidpf{margin-top:0}\";\nvar _9 = \"._1dyzt94y{letter-spacing:1px}\";\nvar _8 = \"._k48p1nn1{font-weight:400}\";\nvar _7 = \"._1wyb1skh{font-size:11px}\";\nvar _6 = \"._ect4k7ds{font-family:monospace}\";\nvar _5 = \"._1e0c1txw{display:flex}\";\nvar _4 = \"._syazryvq{color:rgba(205,214,244,.8)}\";\nvar _3 = \"._vchhusvi{box-sizing:border-box}\";\nvar _2 = \"._19itglyw{border:none}\";\nvar _ = \"._11q7izeb{background:var(--_1k9t07z)}\";\nvar noop = function noop() {\n  return undefined;\n};\nvar ListItem = function ListItem(props) {\n  var background = props.background ? props.background(props) : props.isSelected ? theme.main40 : \"transparent\";\n  return /*#__PURE__*/React.createElement(CC, null, /*#__PURE__*/React.createElement(CS, null, [_, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32]), /*#__PURE__*/React.createElement(\"div\", {\n    \"data-test-id\": \"__prosemirror_devtools_list_item\".concat(props.isDimmed ? \"_inactive\" : \"\", \"__\"),\n    onClick: props.onClick,\n    onDoubleClick: props.onDoubleClick,\n    className: ax([\"_11q7izeb _19itglyw _vchhusvi _syazryvq _1e0c1txw _ect4k7ds _1wyb1skh _k48p1nn1 _1dyzt94y _19pkidpf _2hwxidpf _otyridpf _18u0idpf _1ul913i4 _tzy4139p _ca0qi2wt _u5f3f6fq _n3tdi2wt _19bvf6fq _19bvnm8a _y3gn1e5h _1p1dangw _v5641y8x _1bsb1osq _w41414jc _irr31wye _30l35y2n _d0altlke _nt751r31 _49pcglyw _1hvw1o36 _1di61emw\"]),\n    style: {\n      \"--_1k9t07z\": ix(background),\n      \"--_yl51qy\": ix(props.isDimmed ? 0.3 : 1),\n      \"--_1hdy39e\": ix(props.nested ? \"36px\" : \"18px\")\n    }\n  }, props.children));\n};\nfunction ListItemGroup(props) {\n  var _React$useState = React.useState(false),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    collapsed = _React$useState2[0],\n    setCollapsed = _React$useState2[1];\n  var items = props.items,\n    _props$groupTitle = props.groupTitle,\n    groupTitle = _props$groupTitle === void 0 ? noop : _props$groupTitle,\n    title = props.title,\n    _props$isSelected = props.isSelected,\n    isSelected = _props$isSelected === void 0 ? noop : _props$isSelected,\n    _props$isPrevious = props.isPrevious,\n    isPrevious = _props$isPrevious === void 0 ? noop : _props$isPrevious,\n    _props$isDimmed = props.isDimmed,\n    isDimmed = _props$isDimmed === void 0 ? noop : _props$isDimmed,\n    _props$getKey = props.getKey,\n    getKey = _props$getKey === void 0 ? noop : _props$getKey,\n    _props$onListItemClic = props.onListItemClick,\n    onListItemClick = _props$onListItemClic === void 0 ? noop : _props$onListItemClic,\n    _props$onListItemDoub = props.onListItemDoubleClick,\n    onListItemDoubleClick = _props$onListItemDoub === void 0 ? noop : _props$onListItemDoub,\n    customItemBackground = props.customItemBackground;\n  return /*#__PURE__*/React.createElement(\"div\", null, /*#__PURE__*/React.createElement(ListItem, {\n    key: getKey(items[0]),\n    onClick: function onClick() {\n      return setCollapsed(!collapsed);\n    },\n    isSelected: items.some(isSelected) && collapsed,\n    isPrevious: isPrevious(items[0], 0) && collapsed,\n    isDimmed: items.every(isDimmed),\n    background: customItemBackground\n  }, /*#__PURE__*/React.createElement(\"div\", {\n    style: {\n      flexGrow: 1\n    }\n  }, groupTitle(items, 0)), /*#__PURE__*/React.createElement(\"div\", null, collapsed ? \"▶\" : \"▼\")), /*#__PURE__*/React.createElement(CC, null, /*#__PURE__*/React.createElement(CS, null, [_33]), /*#__PURE__*/React.createElement(\"div\", {\n    className: ax([\"_1e0crqpp\"]),\n    style: {\n      \"--_1a5yx7a\": ix(collapsed ? \"none\" : \"block\")\n    }\n  }, (items || []).map(function (item, index) {\n    return /*#__PURE__*/React.createElement(ListItem, {\n      key: getKey(item),\n      nested: true,\n      isSelected: isSelected(item, index),\n      isPrevious: isPrevious(item, index),\n      isDimmed: isDimmed(item, index),\n      background: customItemBackground,\n      onClick: function onClick() {\n        return onListItemClick(item, index);\n      },\n      onDoubleClick: function onDoubleClick() {\n        return onListItemDoubleClick(item, index);\n      }\n    }, title(item, index));\n  }))));\n}\nexport function List(props) {\n  var _props$isSelected2 = props.isSelected,\n    isSelected = _props$isSelected2 === void 0 ? noop : _props$isSelected2,\n    _props$isPrevious2 = props.isPrevious,\n    isPrevious = _props$isPrevious2 === void 0 ? noop : _props$isPrevious2,\n    _props$isDimmed2 = props.isDimmed,\n    isDimmed = _props$isDimmed2 === void 0 ? noop : _props$isDimmed2,\n    _props$getKey2 = props.getKey,\n    getKey = _props$getKey2 === void 0 ? noop : _props$getKey2,\n    _props$onListItemClic2 = props.onListItemClick,\n    onListItemClick = _props$onListItemClic2 === void 0 ? noop : _props$onListItemClic2,\n    _props$onListItemDoub2 = props.onListItemDoubleClick,\n    onListItemDoubleClick = _props$onListItemDoub2 === void 0 ? noop : _props$onListItemDoub2;\n  return /*#__PURE__*/React.createElement(\"div\", null, (props.items || []).map(function (item, index) {\n    if (Array.isArray(item)) {\n      return /*#__PURE__*/React.createElement(ListItemGroup, _extends({}, props, {\n        items: item,\n        key: item[0].timestamp\n      }), (props.groupTitle || noop)(item, index));\n    }\n    return /*#__PURE__*/React.createElement(ListItem, {\n      key: getKey(item),\n      isSelected: isSelected(item, index),\n      isPrevious: isPrevious(item, index),\n      isDimmed: isDimmed(item, index),\n      background: props.customItemBackground,\n      onClick: function onClick() {\n        return onListItemClick(item, index);\n      },\n      onDoubleClick: function onDoubleClick() {\n        return onListItemDoubleClick(item, index);\n      }\n    }, props.title(item, index));\n  }));\n}","/* json-diff.tsx generated by @compiled/babel-plugin v0.17.1 */\nimport { ax, ix, CC, CS } from \"@compiled/react/runtime\";\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nimport React from \"react\";\nimport JSONTree from \"./json-tree\";\nimport theme from \"../theme\";\nvar _15 = \"._syazqv97{color:#a6e3a1}\";\nvar _14 = \"._1tke1ar4{min-height:1ex}\";\nvar _13 = \"._ajmmnqa1{text-decoration-style:solid}\";\nvar _12 = \"._1hms1911{text-decoration-line:line-through}\";\nvar _11 = \"._4bfu1r31{text-decoration-color:currentColor}\";\nvar _10 = \"._azhwidpf{text-indent:0}\";\nvar _9 = \"._19bv1l7b{padding-left:3px}\";\nvar _8 = \"._n3tdyh40{padding-bottom:2px}\";\nvar _7 = \"._u5f31l7b{padding-right:3px}\";\nvar _6 = \"._ca0qt94y{padding-top:1px}\";\nvar _5 = \"._syaz7i12{color:#f38ba8}\";\nvar _4 = \"._bfhk7woi{background-color:rgba(205,214,244,.2)}\";\nvar _3 = \"._1e0c1o8l{display:inline-block}\";\nvar _2 = \"._syaz5y2n{color:#cdd6f4}\";\nvar _ = \"._syaz1u6e{color:#cba6f7}\";\nvar updatedStyles = null;\nvar Updated = function Updated(_ref) {\n  var children = _ref.children;\n  return /*#__PURE__*/React.createElement(CC, null, /*#__PURE__*/React.createElement(CS, null, [_]), /*#__PURE__*/React.createElement(\"span\", {\n    className: ax([\"_syaz1u6e\"])\n  }, children));\n};\nvar whiteStyles = null;\nvar White = function White(_ref2) {\n  var children = _ref2.children;\n  return /*#__PURE__*/React.createElement(CC, null, /*#__PURE__*/React.createElement(CS, null, [_2]), /*#__PURE__*/React.createElement(\"span\", {\n    className: ax([\"_syaz5y2n\"])\n  }, children));\n};\nvar deletedStyles = null;\nvar Deleted = function Deleted(_ref3) {\n  var children = _ref3.children;\n  return /*#__PURE__*/React.createElement(CC, null, /*#__PURE__*/React.createElement(CS, null, [_3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14]), /*#__PURE__*/React.createElement(\"span\", {\n    className: ax([\"_1e0c1o8l _bfhk7woi _syaz7i12 _ca0qt94y _u5f31l7b _n3tdyh40 _19bv1l7b _azhwidpf _4bfu1r31 _1hms1911 _ajmmnqa1 _1tke1ar4\"])\n  }, children));\n};\nvar addedStyles = null;\nvar Added = function Added(_ref4) {\n  var children = _ref4.children;\n  return /*#__PURE__*/React.createElement(CC, null, /*#__PURE__*/React.createElement(CS, null, [_3, _4, _15, _6, _7, _8, _9, _10, _14]), /*#__PURE__*/React.createElement(\"span\", {\n    className: ax([\"_1e0c1o8l _bfhk7woi _syazqv97 _ca0qt94y _u5f31l7b _n3tdyh40 _19bv1l7b _azhwidpf _1tke1ar4\"])\n  }, children));\n};\nfunction postprocessValue(value) {\n  if (value && value._t === \"a\") {\n    var res = {};\n    for (var key in value) {\n      if (key !== \"_t\") {\n        if (key[0] === \"_\" && !value[key.substring(1)]) {\n          res[key.substring(1)] = value[key];\n        } else if (value[\"_\" + key]) {\n          res[key] = [value[\"_\" + key][0], value[key][0]];\n        } else if (!value[\"_\" + key] && key[0] !== \"_\") {\n          res[key] = value[key];\n        }\n      }\n    }\n    return res;\n  }\n  return value;\n}\nfunction labelRenderer(raw) {\n  return raw[0];\n}\nfunction stringifyAndShrink(val) {\n  if (val === null) {\n    return \"null\";\n  }\n  var str = JSON.stringify(val);\n  if (typeof str === \"undefined\") {\n    return \"undefined\";\n  }\n  return str.length > 22 ? \"\".concat(str.substr(0, 15), \"\\u2026\").concat(str.substr(-5)) : str;\n}\nfunction getValueString(raw) {\n  if (typeof raw === \"string\") {\n    return raw;\n  }\n  return stringifyAndShrink(raw);\n}\nfunction replaceSpacesWithNonBreakingSpace(value) {\n  return value.replace(/\\s/gm, \" \");\n}\nfunction parseTextDiff(textDiff) {\n  var diffByLines = textDiff.split(/\\n/gm).slice(1);\n  return diffByLines.map(function (line) {\n    var type = line.startsWith(\"-\") ? \"delete\" : line.startsWith(\"+\") ? \"add\" : \"raw\";\n    return _defineProperty({}, type, replaceSpacesWithNonBreakingSpace(line.substr(1)));\n  });\n}\nfunction valueRenderer(raw) {\n  if (Array.isArray(raw)) {\n    if (raw.length === 1) {\n      return /*#__PURE__*/React.createElement(Added, null, getValueString(raw[0]));\n    }\n    if (raw.length === 2) {\n      return /*#__PURE__*/React.createElement(Updated, null, /*#__PURE__*/React.createElement(Deleted, null, getValueString(raw[0])), \" =>\", \" \", /*#__PURE__*/React.createElement(Added, null, getValueString(raw[1])));\n    }\n    if (raw.length === 3 && raw[1] === 0 && raw[2] === 0) {\n      return /*#__PURE__*/React.createElement(Deleted, null, getValueString(raw[0]));\n    }\n    if (raw.length === 3 && raw[2] === 2) {\n      return /*#__PURE__*/React.createElement(Updated, null, \"\\\"\", parseTextDiff(raw[0]).map(function (item) {\n        if (item[\"delete\"]) {\n          return /*#__PURE__*/React.createElement(Deleted, {\n            key: item[\"delete\"] + \"delete\"\n          }, item[\"delete\"]);\n        }\n        if (item.add) {\n          return /*#__PURE__*/React.createElement(Added, {\n            key: item.add + \"add\"\n          }, item.add);\n        }\n        return /*#__PURE__*/React.createElement(White, {\n          key: item.raw + \"raw\"\n        }, item.raw);\n      }), \"\\\"\");\n    }\n  }\n  return \"\" + raw;\n}\nexport function itemsCountString(count) {\n  return \"\".concat(count);\n}\nexport function getItemString(type, _value, defaultView, keysCount) {\n  switch (type) {\n    case \"Object\":\n      return /*#__PURE__*/React.createElement(\"span\", null, \"{…}\");\n    default:\n      return /*#__PURE__*/React.createElement(\"span\", null, defaultView, \" \", keysCount);\n  }\n}\nexport default function JSONDiff(props) {\n  if (!props.delta) return null;\n  return /*#__PURE__*/React.createElement(JSONTree, {\n    data: props.delta,\n    hideRoot: true,\n    postprocessValue: postprocessValue,\n    labelRenderer: labelRenderer,\n    valueRenderer: valueRenderer,\n    isCustomNode: Array.isArray,\n    getItemString: getItemString,\n    shouldExpandNode: function shouldExpandNode() {\n      return true;\n    }\n  });\n}","/* highlighter.tsx generated by @compiled/babel-plugin v0.17.1 */\nimport { ax, ix, CC, CS } from \"@compiled/react/runtime\";\nimport React from \"react\";\nimport theme from \"../theme\";\nvar _10 = \"._key71u6e .prosemirror-dev-tools-highlighter-tag{color:#cba6f7}\";\nvar _9 = \"._syazryvq{color:rgba(205,214,244,.8)}\";\nvar _8 = \"._18u0idpf{margin-left:0}\";\nvar _7 = \"._otyridpf{margin-bottom:0}\";\nvar _6 = \"._2hwxidpf{margin-right:0}\";\nvar _5 = \"._19pkidpf{margin-top:0}\";\nvar _4 = \"._19bvgrf3{padding-left:0!important}\";\nvar _3 = \"._n3td1o4j{padding-bottom:18px!important}\";\nvar _2 = \"._u5f3grf3{padding-right:0!important}\";\nvar _ = \"._ca0q1vy9{padding-top:9px!important}\";\nvar customPreStyles = null;\nvar CustomPre = function CustomPre(_ref) {\n  var children = _ref.children,\n    __html = _ref.__html;\n  return /*#__PURE__*/React.createElement(CC, null, /*#__PURE__*/React.createElement(CS, null, [_, _2, _3, _4, _5, _6, _7, _8, _9, _10]), /*#__PURE__*/React.createElement(\"pre\", {\n    dangerouslySetInnerHTML: {\n      __html: __html\n    },\n    className: ax([\"_ca0q1vy9 _u5f3grf3 _n3td1o4j _19bvgrf3 _19pkidpf _2hwxidpf _otyridpf _18u0idpf _syazryvq _key71u6e\"])\n  }, children));\n};\nvar regexp = /(&lt;\\/?[\\w\\d\\s=\"']+&gt;)/gim;\nvar highlight = function highlight(str) {\n  return str.replace(/</g, \"&lt;\").replace(/>/g, \"&gt;\").replace(regexp, \"<span class='prosemirror-dev-tools-highlighter-tag'>$&</span>\");\n};\nexport var Highlighter = function Highlighter(props) {\n  if (!props.children) return null;\n  return /*#__PURE__*/React.createElement(CustomPre, {\n    __html: highlight(props.children)\n  });\n};","/*\n\n Style HTML\n---------------\n\n  Written by Nochum Sossonko, (nsossonko@hotmail.com)\n\n  Based on code initially developed by: Einar Lielmanis, <elfz@laacz.lv>\n    http://jsbeautifier.org/\n\n\n  You are free to use this in any way you want, in case you find this useful or working for you.\n\n  Usage:\n    style_html(html_source);\n\n    style_html(html_source, options);\n\n  The options are:\n    indent_size (default 4)          — indentation size,\n    indent_char (default space)      — character to indent with,\n    max_char (default 70)            -  maximum amount of characters per line,\n    brace_style (default \"collapse\") - \"collapse\" | \"expand\" | \"end-expand\"\n            put braces on the same line as control statements (default), or put braces on own line (Allman / ANSI style), or just put end braces on own line.\n    unformatted (defaults to inline tags) - list of tags, that shouldn't be reformatted\n    indent_scripts (default normal)  - \"keep\"|\"separate\"|\"normal\"\n\n    e.g.\n\n    style_html(html_source, {\n      'indent_size': 2,\n      'indent_char': ' ',\n      'max_char': 78,\n      'brace_style': 'expand',\n      'unformatted': ['a', 'sub', 'sup', 'b', 'i', 'u']\n    });\n*/\n\nfunction style_html(html_source, options) {\n//Wrapper function to invoke all the necessary constructors and deal with the output.\n\n  var multi_parser,\n      indent_size,\n      indent_character,\n      max_char,\n      brace_style,\n      unformatted;\n\n  options = options || {};\n  indent_size = options.indent_size || 4;\n  indent_character = options.indent_char || ' ';\n  brace_style = options.brace_style || 'collapse';\n  max_char = options.max_char == 0 ? Infinity : options.max_char || 70;\n  unformatted = options.unformatted || ['a', 'span', 'bdo', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'q', 'sub', 'sup', 'tt', 'i', 'b', 'big', 'small', 'u', 's', 'strike', 'font', 'ins', 'del', 'pre', 'address', 'dt', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6'];\n\n  function Parser() {\n\n    this.pos = 0; //Parser position\n    this.token = '';\n    this.current_mode = 'CONTENT'; //reflects the current Parser mode: TAG/CONTENT\n    this.tags = { //An object to hold tags, their position, and their parent-tags, initiated with default values\n      parent: 'parent1',\n      parentcount: 1,\n      parent1: ''\n    };\n    this.tag_type = '';\n    this.token_text = this.last_token = this.last_text = this.token_type = '';\n\n    this.Utils = { //Uilities made available to the various functions\n      whitespace: \"\\n\\r\\t \".split(''),\n      single_token: 'br,input,link,meta,!doctype,basefont,base,area,hr,wbr,param,img,isindex,?xml,embed,?php,?,?='.split(','), //all the single tags for HTML\n      extra_liners: 'head,body,/html'.split(','), //for tags that need a line of whitespace before them\n      in_array: function (what, arr) {\n        for (var i=0; i<arr.length; i++) {\n          if (what === arr[i]) {\n            return true;\n          }\n        }\n        return false;\n      }\n    }\n\n    this.get_content = function () { //function to capture regular content between tags\n\n      var input_char = '',\n          content = [],\n          space = false; //if a space is needed\n\n      while (this.input.charAt(this.pos) !== '<') {\n        if (this.pos >= this.input.length) {\n          return content.length?content.join(''):['', 'TK_EOF'];\n        }\n\n        input_char = this.input.charAt(this.pos);\n        this.pos++;\n        this.line_char_count++;\n\n        if (this.Utils.in_array(input_char, this.Utils.whitespace)) {\n          if (content.length) {\n            space = true;\n          }\n          this.line_char_count--;\n          continue; //don't want to insert unnecessary space\n        }\n        else if (space) {\n          if (this.line_char_count >= this.max_char) { //insert a line when the max_char is reached\n            content.push('\\n');\n            for (var i=0; i<this.indent_level; i++) {\n              content.push(this.indent_string);\n            }\n            this.line_char_count = 0;\n          }\n          else{\n            content.push(' ');\n            this.line_char_count++;\n          }\n          space = false;\n        }\n        content.push(input_char); //letter at-a-time (or string) inserted to an array\n      }\n      return content.length?content.join(''):'';\n    }\n\n    this.get_contents_to = function (name) { //get the full content of a script or style to pass to js_beautify\n      if (this.pos == this.input.length) {\n        return ['', 'TK_EOF'];\n      }\n      var input_char = '';\n      var content = '';\n      var reg_match = new RegExp('\\<\\/' + name + '\\\\s*\\>', 'igm');\n      reg_match.lastIndex = this.pos;\n      var reg_array = reg_match.exec(this.input);\n      var end_script = reg_array?reg_array.index:this.input.length; //absolute end of script\n      if(this.pos < end_script) { //get everything in between the script tags\n        content = this.input.substring(this.pos, end_script);\n        this.pos = end_script;\n      }\n      return content;\n    }\n\n    this.record_tag = function (tag){ //function to record a tag and its parent in this.tags Object\n      if (this.tags[tag + 'count']) { //check for the existence of this tag type\n        this.tags[tag + 'count']++;\n        this.tags[tag + this.tags[tag + 'count']] = this.indent_level; //and record the present indent level\n      }\n      else { //otherwise initialize this tag type\n        this.tags[tag + 'count'] = 1;\n        this.tags[tag + this.tags[tag + 'count']] = this.indent_level; //and record the present indent level\n      }\n      this.tags[tag + this.tags[tag + 'count'] + 'parent'] = this.tags.parent; //set the parent (i.e. in the case of a div this.tags.div1parent)\n      this.tags.parent = tag + this.tags[tag + 'count']; //and make this the current parent (i.e. in the case of a div 'div1')\n    }\n\n    this.retrieve_tag = function (tag) { //function to retrieve the opening tag to the corresponding closer\n      if (this.tags[tag + 'count']) { //if the openener is not in the Object we ignore it\n        var temp_parent = this.tags.parent; //check to see if it's a closable tag.\n        while (temp_parent) { //till we reach '' (the initial value);\n          if (tag + this.tags[tag + 'count'] === temp_parent) { //if this is it use it\n            break;\n          }\n          temp_parent = this.tags[temp_parent + 'parent']; //otherwise keep on climbing up the DOM Tree\n        }\n        if (temp_parent) { //if we caught something\n          this.indent_level = this.tags[tag + this.tags[tag + 'count']]; //set the indent_level accordingly\n          this.tags.parent = this.tags[temp_parent + 'parent']; //and set the current parent\n        }\n        delete this.tags[tag + this.tags[tag + 'count'] + 'parent']; //delete the closed tags parent reference...\n        delete this.tags[tag + this.tags[tag + 'count']]; //...and the tag itself\n        if (this.tags[tag + 'count'] == 1) {\n          delete this.tags[tag + 'count'];\n        }\n        else {\n          this.tags[tag + 'count']--;\n        }\n      }\n    }\n\n    this.get_tag = function () { //function to get a full tag and parse its type\n      var input_char = '',\n          content = [],\n          space = false,\n          tag_start, tag_end;\n\n      do {\n        if (this.pos >= this.input.length) {\n          return content.length?content.join(''):['', 'TK_EOF'];\n        }\n\n        input_char = this.input.charAt(this.pos);\n        this.pos++;\n        this.line_char_count++;\n\n        if (this.Utils.in_array(input_char, this.Utils.whitespace)) { //don't want to insert unnecessary space\n          space = true;\n          this.line_char_count--;\n          continue;\n        }\n\n        if (input_char === \"'\" || input_char === '\"') {\n          if (!content[1] || content[1] !== '!') { //if we're in a comment strings don't get treated specially\n            input_char += this.get_unformatted(input_char);\n            space = true;\n          }\n        }\n\n        if (input_char === '=') { //no space before =\n          space = false;\n        }\n\n        if (content.length && content[content.length-1] !== '=' && input_char !== '>'\n            && space) { //no space after = or before >\n          if (this.line_char_count >= this.max_char) {\n            this.print_newline(false, content);\n            this.line_char_count = 0;\n          }\n          else {\n            content.push(' ');\n            this.line_char_count++;\n          }\n          space = false;\n        }\n        if (input_char === '<') {\n            tag_start = this.pos - 1;\n        }\n        content.push(input_char); //inserts character at-a-time (or string)\n      } while (input_char !== '>');\n\n      var tag_complete = content.join('');\n      var tag_index;\n      if (tag_complete.indexOf(' ') != -1) { //if there's whitespace, thats where the tag name ends\n        tag_index = tag_complete.indexOf(' ');\n      }\n      else { //otherwise go with the tag ending\n        tag_index = tag_complete.indexOf('>');\n      }\n      var tag_check = tag_complete.substring(1, tag_index).toLowerCase();\n      if (tag_complete.charAt(tag_complete.length-2) === '/' ||\n          this.Utils.in_array(tag_check, this.Utils.single_token)) { //if this tag name is a single tag type (either in the list or has a closing /)\n        this.tag_type = 'SINGLE';\n      }\n      else if (tag_check === 'script') { //for later script handling\n        this.record_tag(tag_check);\n        this.tag_type = 'SCRIPT';\n      }\n      else if (tag_check === 'style') { //for future style handling (for now it justs uses get_content)\n        this.record_tag(tag_check);\n        this.tag_type = 'STYLE';\n      }\n      else if (this.Utils.in_array(tag_check, unformatted)) { // do not reformat the \"unformatted\" tags\n        var comment = this.get_unformatted('</'+tag_check+'>', tag_complete); //...delegate to get_unformatted function\n        content.push(comment);\n        // Preserve collapsed whitespace either before or after this tag.\n        if (tag_start > 0 && this.Utils.in_array(this.input.charAt(tag_start - 1), this.Utils.whitespace)){\n            content.splice(0, 0, this.input.charAt(tag_start - 1));\n        }\n        tag_end = this.pos - 1;\n        if (this.Utils.in_array(this.input.charAt(tag_end + 1), this.Utils.whitespace)){\n            content.push(this.input.charAt(tag_end + 1));\n        }\n        this.tag_type = 'SINGLE';\n      }\n      else if (tag_check.charAt(0) === '!') { //peek for <!-- comment\n        if (tag_check.indexOf('[if') != -1) { //peek for <!--[if conditional comment\n          if (tag_complete.indexOf('!IE') != -1) { //this type needs a closing --> so...\n            var comment = this.get_unformatted('-->', tag_complete); //...delegate to get_unformatted\n            content.push(comment);\n          }\n          this.tag_type = 'START';\n        }\n        else if (tag_check.indexOf('[endif') != -1) {//peek for <!--[endif end conditional comment\n          this.tag_type = 'END';\n          this.unindent();\n        }\n        else if (tag_check.indexOf('[cdata[') != -1) { //if it's a <[cdata[ comment...\n          var comment = this.get_unformatted(']]>', tag_complete); //...delegate to get_unformatted function\n          content.push(comment);\n          this.tag_type = 'SINGLE'; //<![CDATA[ comments are treated like single tags\n        }\n        else {\n          var comment = this.get_unformatted('-->', tag_complete);\n          content.push(comment);\n          this.tag_type = 'SINGLE';\n        }\n      }\n      else {\n        if (tag_check.charAt(0) === '/') { //this tag is a double tag so check for tag-ending\n          this.retrieve_tag(tag_check.substring(1)); //remove it and all ancestors\n          this.tag_type = 'END';\n        }\n        else { //otherwise it's a start-tag\n          this.record_tag(tag_check); //push it on the tag stack\n          this.tag_type = 'START';\n        }\n        if (this.Utils.in_array(tag_check, this.Utils.extra_liners)) { //check if this double needs an extra line\n          this.print_newline(true, this.output);\n        }\n      }\n      return content.join(''); //returns fully formatted tag\n    }\n\n    this.get_unformatted = function (delimiter, orig_tag) { //function to return unformatted content in its entirety\n\n      if (orig_tag && orig_tag.toLowerCase().indexOf(delimiter) != -1) {\n        return '';\n      }\n      var input_char = '';\n      var content = '';\n      var space = true;\n      do {\n\n        if (this.pos >= this.input.length) {\n          return content;\n        }\n\n        input_char = this.input.charAt(this.pos);\n        this.pos++\n\n        if (this.Utils.in_array(input_char, this.Utils.whitespace)) {\n          if (!space) {\n            this.line_char_count--;\n            continue;\n          }\n          if (input_char === '\\n' || input_char === '\\r') {\n            content += '\\n';\n            /*  Don't change tab indention for unformatted blocks.  If using code for html editing, this will greatly affect <pre> tags if they are specified in the 'unformatted array'\n            for (var i=0; i<this.indent_level; i++) {\n              content += this.indent_string;\n            }\n            space = false; //...and make sure other indentation is erased\n            */\n            this.line_char_count = 0;\n            continue;\n          }\n        }\n        content += input_char;\n        this.line_char_count++;\n        space = true;\n\n\n      } while (content.toLowerCase().indexOf(delimiter) == -1);\n      return content;\n    }\n\n    this.get_token = function () { //initial handler for token-retrieval\n      var token;\n\n      if (this.last_token === 'TK_TAG_SCRIPT' || this.last_token === 'TK_TAG_STYLE') { //check if we need to format javascript\n       var type = this.last_token.substr(7)\n       token = this.get_contents_to(type);\n        if (typeof token !== 'string') {\n          return token;\n        }\n        return [token, 'TK_' + type];\n      }\n      if (this.current_mode === 'CONTENT') {\n        token = this.get_content();\n        if (typeof token !== 'string') {\n          return token;\n        }\n        else {\n          return [token, 'TK_CONTENT'];\n        }\n      }\n\n      if (this.current_mode === 'TAG') {\n        token = this.get_tag();\n        if (typeof token !== 'string') {\n          return token;\n        }\n        else {\n          var tag_name_type = 'TK_TAG_' + this.tag_type;\n          return [token, tag_name_type];\n        }\n      }\n    }\n\n    this.get_full_indent = function (level) {\n      level = this.indent_level + level || 0;\n      if (level < 1)\n        return '';\n\n      return Array(level + 1).join(this.indent_string);\n    }\n\n\n    this.printer = function (js_source, indent_character, indent_size, max_char, brace_style) { //handles input/output and some other printing functions\n\n      this.input = js_source || ''; //gets the input for the Parser\n      this.output = [];\n      this.indent_character = indent_character;\n      this.indent_string = '';\n      this.indent_size = indent_size;\n      this.brace_style = brace_style;\n      this.indent_level = 0;\n      this.max_char = max_char;\n      this.line_char_count = 0; //count to see if max_char was exceeded\n\n      for (var i=0; i<this.indent_size; i++) {\n        this.indent_string += this.indent_character;\n      }\n\n      this.print_newline = function (ignore, arr) {\n        this.line_char_count = 0;\n        if (!arr || !arr.length) {\n          return;\n        }\n        if (!ignore) { //we might want the extra line\n          while (this.Utils.in_array(arr[arr.length-1], this.Utils.whitespace)) {\n            arr.pop();\n          }\n        }\n        arr.push('\\n');\n        for (var i=0; i<this.indent_level; i++) {\n          arr.push(this.indent_string);\n        }\n      }\n\n      this.print_token = function (text) {\n        this.output.push(text);\n      }\n\n      this.indent = function () {\n        this.indent_level++;\n      }\n\n      this.unindent = function () {\n        if (this.indent_level > 0) {\n          this.indent_level--;\n        }\n      }\n    }\n    return this;\n  }\n\n  /*_____________________--------------------_____________________*/\n\n  multi_parser = new Parser(); //wrapping functions Parser\n  multi_parser.printer(html_source, indent_character, indent_size, max_char, brace_style); //initialize starting values\n\n  while (true) {\n      var t = multi_parser.get_token();\n      multi_parser.token_text = t[0];\n      multi_parser.token_type = t[1];\n\n    if (multi_parser.token_type === 'TK_EOF') {\n      break;\n    }\n\n    switch (multi_parser.token_type) {\n      case 'TK_TAG_START':\n        multi_parser.print_newline(false, multi_parser.output);\n        multi_parser.print_token(multi_parser.token_text);\n        multi_parser.indent();\n        multi_parser.current_mode = 'CONTENT';\n        break;\n      case 'TK_TAG_STYLE':\n      case 'TK_TAG_SCRIPT':\n        multi_parser.print_newline(false, multi_parser.output);\n        multi_parser.print_token(multi_parser.token_text);\n        multi_parser.current_mode = 'CONTENT';\n        break;\n      case 'TK_TAG_END':\n        //Print new line only if the tag has no content and has child\n        if (multi_parser.last_token === 'TK_CONTENT' && multi_parser.last_text === '') {\n            var tag_name = multi_parser.token_text.match(/\\w+/)[0];\n            var tag_extracted_from_last_output = multi_parser.output[multi_parser.output.length -1].match(/<\\s*(\\w+)/);\n            if (tag_extracted_from_last_output === null || tag_extracted_from_last_output[1] !== tag_name)\n                multi_parser.print_newline(true, multi_parser.output);\n        }\n        multi_parser.print_token(multi_parser.token_text);\n        multi_parser.current_mode = 'CONTENT';\n        break;\n      case 'TK_TAG_SINGLE':\n        // Don't add a newline before elements that should remain unformatted.\n        var tag_check = multi_parser.token_text.match(/^\\s*<([a-z]+)/i);\n        if (!tag_check || !multi_parser.Utils.in_array(tag_check[1], unformatted)){\n            multi_parser.print_newline(false, multi_parser.output);\n        }\n        multi_parser.print_token(multi_parser.token_text);\n        multi_parser.current_mode = 'CONTENT';\n        break;\n      case 'TK_CONTENT':\n        if (multi_parser.token_text !== '') {\n          multi_parser.print_token(multi_parser.token_text);\n        }\n        multi_parser.current_mode = 'TAG';\n        break;\n      case 'TK_STYLE':\n      case 'TK_SCRIPT':\n        if (multi_parser.token_text !== '') {\n          multi_parser.output.push('\\n');\n          var text = multi_parser.token_text;\n          if (multi_parser.token_type == 'TK_SCRIPT') {\n            var _beautifier = typeof js_beautify == 'function' && js_beautify;\n          } else if (multi_parser.token_type == 'TK_STYLE') {\n            var _beautifier = typeof css_beautify == 'function' && css_beautify;\n          }\n\n          if (options.indent_scripts == \"keep\") {\n            var script_indent_level = 0;\n          } else if (options.indent_scripts == \"separate\") {\n            var script_indent_level = -multi_parser.indent_level;\n          } else {\n            var script_indent_level = 1;\n          }\n\n          var indentation = multi_parser.get_full_indent(script_indent_level);\n          if (_beautifier) {\n            // call the Beautifier if avaliable\n            text = _beautifier(text.replace(/^\\s*/, indentation), options);\n          } else {\n            // simply indent the string otherwise\n            var white = text.match(/^\\s*/)[0];\n            var _level = white.match(/[^\\n\\r]*$/)[0].split(multi_parser.indent_string).length - 1;\n            var reindent = multi_parser.get_full_indent(script_indent_level -_level);\n            text = text.replace(/^\\s*/, indentation)\n                   .replace(/\\r\\n|\\r|\\n/g, '\\n' + reindent)\n                   .replace(/\\s*$/, '');\n          }\n          if (text) {\n            multi_parser.print_token(text);\n            multi_parser.print_newline(true, multi_parser.output);\n          }\n        }\n        multi_parser.current_mode = 'TAG';\n        break;\n    }\n    multi_parser.last_token = multi_parser.token_type;\n    multi_parser.last_text = multi_parser.token_text;\n  }\n  return multi_parser.output.join('');\n}\n\nmodule.exports = {\n  prettyPrint: style_html\n};","// This file replaces `index.js` in bundlers like webpack or Rollup,\n// according to `browser` config in `package.json`.\n\nif (process.env.NODE_ENV !== 'production') {\n  // All bundlers will remove this block in production bundle\n  if (typeof navigator !== 'undefined' && navigator.product === 'ReactNative') {\n    throw new Error(\n      'React Native does not have a built-in secure random generator. ' +\n      'If you don’t need unpredictable IDs, you can use `nanoid/non-secure`. ' +\n      'For secure ID install `expo-random` locally and use `nanoid/async`.'\n    )\n  }\n  if (typeof self === 'undefined' || (!self.crypto && !self.msCrypto)) {\n    throw new Error(\n      'Your browser does not have secure random generator. ' +\n      'If you don’t need unpredictable IDs, you can use nanoid/non-secure.'\n    )\n  }\n}\n\nvar crypto = self.crypto || self.msCrypto\n\n// This alphabet uses a-z A-Z 0-9 _- symbols.\n// Symbols are generated for smaller size.\n// -_zyxwvutsrqponmlkjihgfedcba9876543210ZYXWVUTSRQPONMLKJIHGFEDCBA\nvar url = '-_'\n// Loop from 36 to 0 (from z to a and 9 to 0 in Base36).\nvar i = 36\nwhile (i--) {\n  // 36 is radix. Number.prototype.toString(36) returns number\n  // in Base36 representation. Base36 is like hex, but it uses 0–9 and a-z.\n  url += i.toString(36)\n}\n// Loop from 36 to 10 (from Z to A in Base36).\ni = 36\nwhile (i-- - 10) {\n  url += i.toString(36).toUpperCase()\n}\n\nmodule.exports = function (size) {\n  var id = ''\n  var bytes = crypto.getRandomValues(new Uint8Array(size || 21))\n  i = size || 21\n\n  // Compact alternative for `for (var i = 0; i < size; i++)`\n  while (i--) {\n    // We can’t use bytes bigger than the alphabet. 63 is 00111111 bitmask.\n    // This mask reduces random byte 0-255 to 0-63 values.\n    // There is no need in `|| ''` and `* 1.6` hacks in here,\n    // because bitmask trim bytes exact to alphabet size.\n    id += url[bytes[i] & 63]\n  }\n  return id\n}\n","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; }, $Symbol = \"function\" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || \"@@iterator\", asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\", toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, \"\"); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return defineProperty(generator, \"_invoke\", { value: makeInvokeMethod(innerFn, self, context) }), generator; } function tryCatch(fn, obj, arg) { try { return { type: \"normal\", arg: fn.call(obj, arg) }; } catch (err) { return { type: \"throw\", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { [\"next\", \"throw\", \"return\"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if (\"throw\" !== record.type) { var result = record.arg, value = result.value; return value && \"object\" == _typeof(value) && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke(\"next\", value, resolve, reject); }, function (err) { invoke(\"throw\", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke(\"throw\", error, resolve, reject); }); } reject(record.arg); } var previousPromise; defineProperty(this, \"_invoke\", { value: function value(method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(innerFn, self, context) { var state = \"suspendedStart\"; return function (method, arg) { if (\"executing\" === state) throw new Error(\"Generator is already running\"); if (\"completed\" === state) { if (\"throw\" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) { if (\"suspendedStart\" === state) throw state = \"completed\", context.arg; context.dispatchException(context.arg); } else \"return\" === context.method && context.abrupt(\"return\", context.arg); state = \"executing\"; var record = tryCatch(innerFn, self, context); if (\"normal\" === record.type) { if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg); } }; } function maybeInvokeDelegate(delegate, context) { var method = delegate.iterator[context.method]; if (undefined === method) { if (context.delegate = null, \"throw\" === context.method) { if (delegate.iterator[\"return\"] && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method)) return ContinueSentinel; context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a 'throw' method\"); } return ContinueSentinel; } var record = tryCatch(method, delegate.iterator, context.arg); if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = \"normal\", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: \"root\" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if (\"function\" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) { if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; } return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), defineProperty(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) { var ctor = \"function\" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, \"toString\", function () { return \"[object Generator]\"; }), exports.keys = function (val) { var object = Object(val), keys = []; for (var key in object) { keys.push(key); } return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) { \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); } }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if (\"throw\" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if (\"root\" === entry.tryLoc) return handle(\"end\"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, \"catchLoc\"), hasFinally = hasOwn.call(entry, \"finallyLoc\"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error(\"try statement without catch or finally\"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if (\"throw\" === record.type) throw record.arg; return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, \"catch\": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if (\"throw\" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\nimport { prettyPrint } from \"html\";\nimport { atom } from \"jotai\";\n// @ts-expect-error package doesn't provide types\nimport nanoid from \"nanoid\";\nimport { DOMSerializer } from \"prosemirror-model\";\nvar HISTORY_SIZE = 200;\nexport var historyAtom = atom([]);\nexport var historyRolledBackToAtom = atom(null);\nexport var historyDiffsAtom = atom({});\nexport var historyWriteAtom = atom(null, /*#__PURE__*/function () {\n  var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(get, set, action) {\n    var rolledBackTo, history, _action$payload, oldState, newState, tr, updatedHistory, _historyDiff, newDiffs, historyDiff, _updatedHistory, id, diffWorker, _yield$Promise$all, _yield$Promise$all2, diff, selection;\n    return _regeneratorRuntime().wrap(function _callee$(_context) {\n      while (1) {\n        switch (_context.prev = _context.next) {\n          case 0:\n            if (!(action.type === \"reset\")) {\n              _context.next = 5;\n              break;\n            }\n            set(historyAtom, [{\n              id: nanoid(),\n              state: action.payload.state,\n              timestamp: Date.now(),\n              diffPending: false,\n              diff: null,\n              selectionContent: []\n            }]);\n            set(historyRolledBackToAtom, null);\n            set(historyDiffsAtom, {});\n            return _context.abrupt(\"return\");\n          case 5:\n            if (!(action.type === \"update\")) {\n              _context.next = 28;\n              break;\n            }\n            rolledBackTo = get(historyRolledBackToAtom);\n            history = get(historyAtom); // TODO: figure out why this is called 2 times\n            if (!(history[0].state === action.payload.newState)) {\n              _context.next = 10;\n              break;\n            }\n            return _context.abrupt(\"return\");\n          case 10:\n            _action$payload = action.payload, oldState = _action$payload.oldState, newState = _action$payload.newState, tr = _action$payload.tr;\n            updatedHistory = updateEditorHistory(_toConsumableArray(history), rolledBackTo, tr, newState);\n            if (updatedHistory) {\n              _context.next = 14;\n              break;\n            }\n            return _context.abrupt(\"return\");\n          case 14:\n            set(historyAtom, updatedHistory);\n            if (rolledBackTo !== null) {\n              _historyDiff = get(historyDiffsAtom);\n              set(historyRolledBackToAtom, null);\n              newDiffs = updatedHistory.reduce(function (acc, item) {\n                acc[item.id] = _historyDiff[item.id];\n                return acc;\n              }, {}); // TODO: cleanup diffs\n              set(historyDiffsAtom, newDiffs);\n            }\n            historyDiff = get(historyDiffsAtom);\n            _updatedHistory = _slicedToArray(updatedHistory, 1), id = _updatedHistory[0].id;\n            _context.next = 20;\n            return action.payload.diffWorker;\n          case 20:\n            diffWorker = _context.sent;\n            _context.next = 23;\n            return Promise.all([diffWorker.diff({\n              a: oldState.doc.toJSON(),\n              b: newState.doc.toJSON(),\n              id: id\n            }), diffWorker.diff({\n              a: buildSelection(oldState.selection),\n              b: buildSelection(newState.selection),\n              id: id\n            })]);\n          case 23:\n            _yield$Promise$all = _context.sent;\n            _yield$Promise$all2 = _slicedToArray(_yield$Promise$all, 2);\n            diff = _yield$Promise$all2[0].delta;\n            selection = _yield$Promise$all2[1].delta;\n            set(historyDiffsAtom, _objectSpread(_objectSpread({}, historyDiff), {}, _defineProperty({}, id, {\n              diff: diff,\n              selection: selection\n            })));\n          case 28:\n          case \"end\":\n            return _context.stop();\n        }\n      }\n    }, _callee);\n  }));\n  return function (_x, _x2, _x3) {\n    return _ref.apply(this, arguments);\n  };\n}());\nexport function buildSelection(selection) {\n  return {\n    empty: selection.empty,\n    anchor: selection.anchor,\n    head: selection.head,\n    from: selection.from,\n    to: selection.to\n  };\n}\nexport function createHistoryEntry(editorState) {\n  var serializer = DOMSerializer.fromSchema(editorState.schema);\n  var selection = editorState.selection;\n  var domFragment = serializer.serializeFragment(selection.content().content);\n  var selectionContent = [];\n  if (domFragment) {\n    var child = domFragment.firstChild;\n    while (child) {\n      selectionContent.push(child.outerHTML);\n      child = child.nextSibling;\n    }\n  }\n  return {\n    id: nanoid(),\n    state: editorState,\n    timestamp: Date.now(),\n    diffPending: true,\n    diff: undefined,\n    selection: undefined,\n    selectionContent: prettyPrint(selectionContent.join(\"\\n\"), {\n      max_char: 60,\n      indent_size: 2\n    })\n  };\n}\nexport function shrinkEditorHistory(history, historyRolledBackTo) {\n  var startIndex = historyRolledBackTo !== null ? historyRolledBackTo : 0;\n  return history.slice(startIndex, HISTORY_SIZE);\n}\nexport function updateEditorHistory(history, historyRolledBackTo, tr, newState) {\n  var skipHistory = tr.getMeta(\"_skip-dev-tools-history_\");\n  if (skipHistory) return;\n  var newHistory = shrinkEditorHistory(history, historyRolledBackTo);\n  newHistory.unshift(createHistoryEntry(newState));\n  return newHistory;\n}","/* history.tsx generated by @compiled/babel-plugin v0.17.1 */\nimport { ax, ix, CC, CS } from \"@compiled/react/runtime\";\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nimport React from \"react\";\nimport { InfoPanel } from \"../components/info-panel\";\nimport { Heading } from \"../components/heading\";\nimport { List } from \"../components/list\";\nimport JSONDiff from \"../components/json-diff\";\nimport { SplitView, SplitViewCol } from \"../components/split-view\";\nimport { Highlighter } from \"../components/highlighter\";\nimport theme from \"../theme\";\nimport { atom, useAtom, useAtomValue } from \"jotai\";\nimport { historyAtom, historyDiffsAtom, historyRolledBackToAtom } from \"../state/history\";\nvar _3 = \"._129lrdoj+._129lrdoj{padding-top:9px}\";\nvar _2 = \"._vchhusvi{box-sizing:border-box}\";\nvar _ = \"._1ul9mgvx{min-width:180px}\";\nvar Section = function Section(_ref) {\n  var children = _ref.children;\n  return /*#__PURE__*/React.createElement(CC, null, /*#__PURE__*/React.createElement(CS, null, [_, _2, _3]), /*#__PURE__*/React.createElement(\"div\", {\n    className: ax([\"_1ul9mgvx _vchhusvi _129lrdoj\"])\n  }, children));\n};\nfunction pad(num) {\n  return (\"00\" + num).slice(-2);\n}\nfunction pad3(num) {\n  return (\"000\" + num).slice(-3);\n}\nvar formatTimestamp = function formatTimestamp(timestamp) {\n  var date = new Date(timestamp);\n  return [pad(date.getHours()), pad(date.getMinutes()), pad(date.getSeconds()), pad3(date.getMilliseconds())].join(\":\");\n};\nexport function SelectionContentSection(props) {\n  if (!props.selectionContent) return null;\n  var content = Array.isArray(props.selectionContent) ? props.selectionContent.join(\"\\n\") : props.selectionContent;\n  return /*#__PURE__*/React.createElement(Section, null, /*#__PURE__*/React.createElement(Heading, null, \"Selection Content\"), /*#__PURE__*/React.createElement(Highlighter, null, content));\n}\nexport function DocDiffSection(props) {\n  if (!props.diff) return null;\n  return /*#__PURE__*/React.createElement(Section, null, /*#__PURE__*/React.createElement(Heading, null, \"Doc diff\"), /*#__PURE__*/React.createElement(JSONDiff, {\n    delta: props.diff\n  }));\n}\nexport function SelectionSection(props) {\n  if (!props.selection) return null;\n  return /*#__PURE__*/React.createElement(Section, null, /*#__PURE__*/React.createElement(Heading, null, \"Selection diff\"), /*#__PURE__*/React.createElement(JSONDiff, {\n    delta: props.selection\n  }));\n}\nvar selectedHistoryItemAtom = atom(0);\nexport default function HistoryView(_ref2) {\n  var _history$selectedHist;\n  var rollbackHistory = _ref2.rollbackHistory;\n  var _useAtom = useAtom(selectedHistoryItemAtom),\n    _useAtom2 = _slicedToArray(_useAtom, 2),\n    selectedHistoryItem = _useAtom2[0],\n    setSelectedHistoryItem = _useAtom2[1];\n  var historyRolledBackTo = useAtomValue(historyRolledBackToAtom);\n  var history = useAtomValue(historyAtom);\n  var historyDiffs = useAtomValue(historyDiffsAtom);\n  var prevItem = history[selectedHistoryItem + 1];\n  var selectedItem = (_history$selectedHist = history[selectedHistoryItem]) !== null && _history$selectedHist !== void 0 ? _history$selectedHist : history[0];\n  var selectedDiff = historyDiffs[selectedItem.id];\n  var historyRolledBackToItem = historyRolledBackTo !== null ? history[historyRolledBackTo] : null;\n  var historyList = history.reduce(function (h, item, index) {\n    var _historyDiffs$item$id;\n    var prev = h[h.length - 1];\n    item.index = index;\n    if (!((_historyDiffs$item$id = historyDiffs[item.id]) !== null && _historyDiffs$item$id !== void 0 && _historyDiffs$item$id.diff)) {\n      if (!prev || !Array.isArray(prev)) {\n        h.push([item]);\n      } else {\n        prev.push(item);\n      }\n    } else {\n      h.push(item);\n    }\n    return h;\n  }, []).reduce(function (h, item) {\n    if (Array.isArray(item) && item.length === 1) {\n      h.push(item[0]);\n    } else {\n      h.push(item);\n    }\n    return h;\n  }, []);\n  var isSelected = function isSelected(item) {\n    if (Array.isArray(item)) return false;\n    return item.timestamp === selectedItem.timestamp;\n  };\n  var isPrevious = function isPrevious(item) {\n    if (Array.isArray(item)) return false;\n    return prevItem && item.timestamp === prevItem.timestamp;\n  };\n  var isDimmed = function isDimmed(item) {\n    if (Array.isArray(item)) return false;\n    return historyRolledBackToItem ? item.timestamp > historyRolledBackToItem.timestamp : false;\n  };\n  return /*#__PURE__*/React.createElement(SplitView, {\n    testId: \"__prosemirror_devtools_tabs_history__\"\n  }, /*#__PURE__*/React.createElement(SplitViewCol, {\n    noPaddings: true,\n    minWidth: 190\n  }, /*#__PURE__*/React.createElement(List, {\n    items: historyList,\n    getKey: function getKey(item) {\n      if (Array.isArray(item)) {\n        return \"\" + item[0].timestamp;\n      }\n      return \"\" + item.timestamp;\n    },\n    title: function title(item) {\n      if (Array.isArray(item)) {\n        return formatTimestamp(item[0].timestamp);\n      }\n      return formatTimestamp(item.timestamp);\n    },\n    groupTitle: function groupTitle(item) {\n      if (Array.isArray(item)) {\n        return formatTimestamp(item[0].timestamp) + \" [\".concat(item.length, \"]\");\n      }\n      return formatTimestamp(item.timestamp);\n    },\n    isSelected: isSelected,\n    isPrevious: isPrevious,\n    isDimmed: isDimmed,\n    customItemBackground: function customItemBackground(props) {\n      return props.isSelected ? theme.main40 : props.isPrevious ? theme.main20 : \"transparent\";\n    },\n    onListItemClick: function onListItemClick(item) {\n      if (Array.isArray(item)) return;\n      setSelectedHistoryItem(item.index);\n    },\n    onListItemDoubleClick: function onListItemDoubleClick(item) {\n      if (Array.isArray(item)) return;\n      rollbackHistory(item, item.index);\n    }\n  })), /*#__PURE__*/React.createElement(SplitViewCol, {\n    grow: true,\n    sep: true\n  }, /*#__PURE__*/React.createElement(DocDiffSection, {\n    diff: selectedDiff\n  }), /*#__PURE__*/React.createElement(SelectionSection, {\n    selection: selectedItem.selection\n  }), /*#__PURE__*/React.createElement(SelectionContentSection, {\n    selectionContent: selectedItem.selectionContent\n  }), !selectedDiff && !selectedItem.selectionContent && /*#__PURE__*/React.createElement(InfoPanel, null, \"Docs are equal.\")));\n}","import { atom } from \"jotai\";\nimport { editorStateAtom } from \"./editor-state\";\nexport var schemaAtom = atom(function (get) {\n  var editorState = get(editorStateAtom);\n  if (!editorState) return null;\n  return editorState.schema;\n});","import React from \"react\";\nimport { SplitView, SplitViewCol } from \"../components/split-view\";\nimport JSONTree from \"../components/json-tree\";\nimport { Heading } from \"../components/heading\";\nimport { useAtomValue } from \"jotai\";\nimport { schemaAtom } from \"../state/schema\";\nvar ignoreFields = [\"schema\", \"contentExpr\", \"schema\", \"parseDOM\", \"toDOM\"];\nexport function postprocessValue(ignore, data) {\n  if (!data || Object.prototype.toString.call(data) !== \"[object Object]\") {\n    return data;\n  }\n  return Object.keys(data).filter(function (key) {\n    return ignore.indexOf(key) === -1;\n  }).reduce(function (res, key) {\n    res[key] = data[key];\n    return res;\n  }, {});\n}\nexport default function SchemaTab() {\n  var schema = useAtomValue(schemaAtom);\n  if (!schema) return null;\n  return /*#__PURE__*/React.createElement(SplitView, {\n    testId: \"__prosemirror_devtools_tabs_schema__\"\n  }, /*#__PURE__*/React.createElement(SplitViewCol, {\n    grow: true\n  }, /*#__PURE__*/React.createElement(Heading, null, \"Nodes\"), /*#__PURE__*/React.createElement(JSONTree, {\n    data: schema.nodes,\n    postprocessValue: postprocessValue.bind(null, ignoreFields)\n  })), /*#__PURE__*/React.createElement(SplitViewCol, {\n    grow: true,\n    sep: true\n  }, /*#__PURE__*/React.createElement(Heading, null, \"Marks\"), /*#__PURE__*/React.createElement(JSONTree, {\n    data: schema.marks,\n    postprocessValue: postprocessValue.bind(null, ignoreFields)\n  })));\n}","/* search-bar.tsx generated by @compiled/babel-plugin v0.17.1 */\nimport { ax, ix, CC, CS } from \"@compiled/react/runtime\";\nvar _22 = \"._irr31ojv:hover{background-color:rgba(205,214,244,.1)}\";\nvar _21 = \"._19itglyw{border:none}\";\nvar _20 = \"._1wyb1crf{font-size:9pt}\";\nvar _19 = \"._k48p1nn1{font-weight:400}\";\nvar _18 = \"._19bvi2wt{padding-left:6px}\";\nvar _17 = \"._n3tdi2wt{padding-bottom:6px}\";\nvar _16 = \"._u5f3i2wt{padding-right:6px}\";\nvar _15 = \"._ca0qi2wt{padding-top:6px}\";\nvar _14 = \"._1idr7woi::placeholder{color:rgba(205,214,244,.2)}\";\nvar _13 = \"._1idr7woi::-moz-placeholder{color:rgba(205,214,244,.2)}\";\nvar _12 = \"._syaz1ds0{color:#b4befe}\";\nvar _11 = \"._12y31o36{outline-width:medium}\";\nvar _10 = \"._1qu2glyw{outline-style:none}\";\nvar _9 = \"._12ji1r31{outline-color:currentColor}\";\nvar _8 = \"._19it1jxw{border:var(--_rsy7xm)}\";\nvar _7 = \"._11q71j28{background:transparent}\";\nvar _6 = \"._18u01y44{margin-left:4px}\";\nvar _5 = \"._otyr1y44{margin-bottom:4px}\";\nvar _4 = \"._2hwx1y44{margin-right:4px}\";\nvar _3 = \"._19pk1y44{margin-top:4px}\";\nvar _2 = \"._zulp1y44{gap:4px}\";\nvar _ = \"._1e0c1txw{display:flex}\";\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nimport React, { useCallback, useState } from \"react\";\nimport theme from \"../theme\";\nvar buttonStyles = null;\nvar inputStyles = null;\nvar searchBarWrapperStyles = null;\nvar SearchBar = function SearchBar(_ref) {\n  var onSearch = _ref.onSearch;\n  var _useState = useState(\"\"),\n    _useState2 = _slicedToArray(_useState, 2),\n    query = _useState2[0],\n    setQuery = _useState2[1];\n  var handleInputChange = useCallback(function (event) {\n    setQuery(event.target.value);\n    onSearch(event.target.value);\n  }, [onSearch]);\n  var handleSearch = useCallback(function () {\n    onSearch(query);\n  }, [query, onSearch]);\n  return /*#__PURE__*/React.createElement(CC, null, /*#__PURE__*/React.createElement(CS, null, [_, _2, _3, _4, _5, _6]), /*#__PURE__*/React.createElement(\"div\", {\n    className: ax([\"_1e0c1txw _zulp1y44 _19pk1y44 _2hwx1y44 _otyr1y44 _18u01y44\"])\n  }, /*#__PURE__*/React.createElement(CC, null, /*#__PURE__*/React.createElement(CS, null, [_7, _8, _9, _10, _11, _12, _13, _14]), /*#__PURE__*/React.createElement(\"input\", {\n    type: \"text\",\n    placeholder: \"Search here\",\n    value: query,\n    onChange: handleInputChange,\n    className: ax([\"_11q71j28 _19it1jxw _12ji1r31 _1qu2glyw _12y31o36 _syaz1ds0 _1idr7woi\"]),\n    style: {\n      \"--_rsy7xm\": ix(\"1px solid \" + theme.softerMain)\n    }\n  })), /*#__PURE__*/React.createElement(CC, null, /*#__PURE__*/React.createElement(CS, null, [_12, _15, _16, _17, _18, _19, _20, _7, _21, _22]), /*#__PURE__*/React.createElement(\"button\", {\n    onClick: handleSearch,\n    className: ax([\"_syaz1ds0 _ca0qi2wt _u5f3i2wt _n3tdi2wt _19bvi2wt _k48p1nn1 _1wyb1crf _11q71j28 _19itglyw _irr31ojv\"])\n  }, \"SEARCH\"))));\n};\nexport default SearchBar;","/* button.tsx generated by @compiled/babel-plugin v0.17.1 */\nimport { ax, ix, CC, CS } from \"@compiled/react/runtime\";\nimport React from \"react\";\nimport theme from \"../theme\";\nvar _8 = \"._irr31ojv:hover{background-color:rgba(205,214,244,.1)}\";\nvar _7 = \"._19itglyw{border:none}\";\nvar _6 = \"._11q71j28{background:transparent}\";\nvar _5 = \"._1wyb1crf{font-size:9pt}\";\nvar _4 = \"._k48p1nn1{font-weight:400}\";\nvar _3 = \"._otyr1y44{margin-bottom:4px}\";\nvar _2 = \"._19pk1y44{margin-top:4px}\";\nvar _ = \"._syaz1ds0{color:#b4befe}\";\nvar buttonStyles = null;\nvar Button = function Button(_ref) {\n  var onClick = _ref.onClick,\n    children = _ref.children;\n  return /*#__PURE__*/React.createElement(CC, null, /*#__PURE__*/React.createElement(CS, null, [_, _2, _3, _4, _5, _6, _7, _8]), /*#__PURE__*/React.createElement(\"button\", {\n    onClick: onClick,\n    className: ax([\"_syaz1ds0 _19pk1y44 _otyr1y44 _k48p1nn1 _1wyb1crf _11q71j28 _19itglyw _irr31ojv\"])\n  }, children));\n};\nexport default Button;","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nimport React, { useCallback, useState } from \"react\";\nimport { InfoPanel } from \"../components/info-panel\";\nimport { Heading } from \"../components/heading\";\nimport JSONTree from \"../components/json-tree\";\nimport { List } from \"../components/list\";\nimport { SplitView, SplitViewCol } from \"../components/split-view\";\nimport { useAtomValue } from \"jotai\";\nimport { editorStateAtom } from \"../state/editor-state\";\nimport SearchBar from \"../components/search-bar\";\nimport Button from \"../components/button\";\nexport function valueRenderer(raw) {\n  if (typeof (arguments.length <= 1 ? undefined : arguments[1]) === \"function\") {\n    return \"func\";\n  }\n  return raw;\n}\nexport function PluginState(props) {\n  return /*#__PURE__*/React.createElement(\"div\", null, /*#__PURE__*/React.createElement(Heading, null, \"Plugin State\"), /*#__PURE__*/React.createElement(JSONTree, {\n    data: props.pluginState,\n    valueRenderer: valueRenderer,\n    sortObjectKeys: true\n  }));\n}\n\n// TODO: replace isDimmed with useCallback once EditorStateContainer is decomposed\nexport default function PluginsTab() {\n  var state = useAtomValue(editorStateAtom);\n  if (!state) return null;\n  var _useState = useState(state.plugins[0]),\n    _useState2 = _slicedToArray(_useState, 2),\n    selectedPlugin = _useState2[0],\n    setSelectedPlugin = _useState2[1];\n  var _useState3 = useState(state.plugins),\n    _useState4 = _slicedToArray(_useState3, 2),\n    pluginsLocal = _useState4[0],\n    setPluginsLocal = _useState4[1];\n  var _useState5 = useState(true),\n    _useState6 = _slicedToArray(_useState5, 2),\n    sortAsc = _useState6[0],\n    setSortOrder = _useState6[1];\n  var handleOnListItemClick = React.useCallback(function (_plugin) {\n    return setSelectedPlugin(_plugin);\n  }, []);\n  var selectedPluginState = selectedPlugin.getState(state);\n  var handleSearch = useCallback(function (input) {\n    var filteredPlugins = state.plugins.filter(function (plugin) {\n      return plugin.key.toLowerCase().includes(input.toLowerCase());\n    });\n    setPluginsLocal(filteredPlugins);\n  }, [state.plugins]);\n  var handleClickSort = function handleClickSort() {\n    setSortOrder(!sortAsc);\n  };\n  var handleSortAsc = function handleSortAsc(plugins) {\n    return _toConsumableArray(plugins).sort(function (a, b) {\n      if (a.key < b.key) {\n        return -1;\n      }\n      if (a.key > b.key) {\n        return 1;\n      }\n      return 0;\n    });\n  };\n  var handleSortDes = function handleSortDes(plugins) {\n    return _toConsumableArray(plugins).sort(function (a, b) {\n      if (a.key < b.key) {\n        return 1;\n      }\n      if (a.key > b.key) {\n        return -1;\n      }\n      return 0;\n    });\n  };\n  return /*#__PURE__*/React.createElement(SplitView, {\n    testId: \"__prosemirror_devtools_tabs_plugins__\"\n  }, /*#__PURE__*/React.createElement(SplitViewCol, {\n    noPaddings: true\n  }, /*#__PURE__*/React.createElement(\"div\", {\n    style: {\n      display: \"flex\",\n      marginLeft: 6,\n      marginRight: 6,\n      marginBottom: 3,\n      marginTop: 3\n    }\n  }, /*#__PURE__*/React.createElement(SearchBar, {\n    onSearch: handleSearch\n  }), /*#__PURE__*/React.createElement(Button, {\n    onClick: handleClickSort\n  }, \"SORT \", sortAsc ? \"DES\" : \"ASC\")), /*#__PURE__*/React.createElement(List, {\n    items: sortAsc ? handleSortAsc(pluginsLocal) : handleSortDes(pluginsLocal),\n    getKey: function getKey(plugin) {\n      return plugin.key;\n    },\n    title: function title(plugin) {\n      return plugin.key;\n    },\n    isDimmed: function isDimmed(plugin) {\n      return !plugin.getState(state);\n    },\n    onListItemClick: handleOnListItemClick\n  })), /*#__PURE__*/React.createElement(SplitViewCol, {\n    grow: true,\n    sep: true\n  }, selectedPluginState ? /*#__PURE__*/React.createElement(PluginState, {\n    pluginState: selectedPluginState\n  }) : /*#__PURE__*/React.createElement(InfoPanel, null, \"Plugin doesn't have any state\")));\n}","import { atom } from \"jotai\";\nimport { editorStateAtom } from \"./editor-state\";\nexport var nodeColorsAtom = atom(function (get) {\n  var editorState = get(editorStateAtom);\n  if (!editorState) return {};\n  return buildColors(editorState.schema);\n});\nvar nodesColors = [\"#F38BA8\",\n// red\n\"#74C7EC\",\n// cyan 400\n\"#A6E3A1\",\n// green\n\"#CA9EDB\",\n// deep purple\n\"#DCDC5D\",\n// lime\n\"#B9CC7C\",\n// light green\n\"#FAB387\",\n// orange\n\"#89B4FA\",\n// light blue\n\"#F36E98\",\n// pink\n\"#E45F44\",\n// deep orange\n\"#DD97D8\",\n// purple\n\"#A6A4AE\",\n// blue grey\n\"#F9E2AF\",\n// yellow\n\"#FFC129\",\n// amber\n\"#EBA0AC\",\n// can can\n\"#89DCEB\",\n// cyan\n\"#B4BEFE\" // indigo\n];\n\nfunction calculateSafeIndex(index, total) {\n  var quotient = index / total;\n  return Math.round(total * (quotient - Math.floor(quotient)));\n}\nfunction buildColors(schema) {\n  return Object.keys(schema.nodes).reduce(function (acc, node, index) {\n    var safeIndex = index >= nodesColors.length ? calculateSafeIndex(index, nodesColors.length) : index;\n    acc[node] = nodesColors[safeIndex];\n    return acc;\n  }, {});\n}","/* structure.tsx generated by @compiled/babel-plugin v0.17.1 */\nimport { ax, ix, CC, CS } from \"@compiled/react/runtime\";\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nimport React from \"react\";\nimport { atom, useAtom, useAtomValue } from \"jotai\";\nimport theme from \"../theme\";\nimport { SplitView, SplitViewCol } from \"../components/split-view\";\nimport JSONTree from \"../components/json-tree\";\nimport { Heading, HeadingWithButton, HeadingButton } from \"../components/heading\";\nimport { nodeColorsAtom } from \"../state/node-colors\";\nimport { editorStateAtom } from \"../state/editor-state\";\nvar _23 = \"._19bvrdoj{padding-left:9px}\";\nvar _22 = \"._u5f3rdoj{padding-right:9px}\";\nvar _21 = \"._16jlkb7n{flex-grow:1}\";\nvar _20 = \"._o572qvpr{white-space:pre}\";\nvar _19 = \"._bfhk1kix{background-color:hsla(0,0%,100%,.3)}\";\nvar _18 = \"._19bvi2wt{padding-left:6px}\";\nvar _17 = \"._n3td1l7b{padding-bottom:3px}\";\nvar _16 = \"._u5f3i2wt{padding-right:6px}\";\nvar _15 = \"._ca0q1l7b{padding-top:3px}\";\nvar _14 = \"._d0altlke:hover{cursor:pointer}\";\nvar _13 = \"._11q71iim{background:var(--_1d6dlof)}\";\nvar _12 = \"._otyr1l7b{margin-bottom:3px}\";\nvar _11 = \"._1n261g80{flex-wrap:wrap}\";\nvar _10 = \"._1bsb1osq{width:100%}\";\nvar _9 = \"._1e0c1txw{display:flex}\";\nvar _8 = \"._1s7z104w{border-right:1px solid rgba(205,214,244,.2)}\";\nvar _7 = \"._1kl7104w{border-left:1px solid rgba(205,214,244,.2)}\";\nvar _6 = \"._vchhusvi{box-sizing:border-box}\";\nvar _5 = \"._19bv1crf{padding-left:9pt}\";\nvar _4 = \"._n3tdidpf{padding-bottom:0}\";\nvar _3 = \"._u5f31crf{padding-right:9pt}\";\nvar _2 = \"._ca0qidpf{padding-top:0}\";\nvar _ = \"._19pk1crf{margin-top:9pt}\";\nvar GraphWrapper = function GraphWrapper(_ref) {\n  var children = _ref.children;\n  return /*#__PURE__*/React.createElement(CC, null, /*#__PURE__*/React.createElement(CS, null, [_]), /*#__PURE__*/React.createElement(\"div\", {\n    className: ax([\"_19pk1crf\"])\n  }, children));\n};\nvar BlockNodeContentView = function BlockNodeContentView(_ref2) {\n  var children = _ref2.children;\n  return /*#__PURE__*/React.createElement(CC, null, /*#__PURE__*/React.createElement(CS, null, [_2, _3, _4, _5, _6, _7, _8]), /*#__PURE__*/React.createElement(\"div\", {\n    className: ax([\"_ca0qidpf _u5f31crf _n3tdidpf _19bv1crf _vchhusvi _1kl7104w _1s7z104w\"])\n  }, children));\n};\nvar BlockNodeContentViewWithInline = function BlockNodeContentViewWithInline(_ref3) {\n  var children = _ref3.children;\n  return /*#__PURE__*/React.createElement(CC, null, /*#__PURE__*/React.createElement(CS, null, [_2, _3, _4, _5, _9, _10, _6, _7, _8, _11]), /*#__PURE__*/React.createElement(\"div\", {\n    className: ax([\"_ca0qidpf _u5f31crf _n3tdidpf _19bv1crf _1e0c1txw _1bsb1osq _vchhusvi _1kl7104w _1s7z104w _1n261g80\"])\n  }, children));\n};\nvar BlockNodeView = function BlockNodeView(_ref4) {\n  var children = _ref4.children,\n    bg = _ref4.bg,\n    onClick = _ref4.onClick;\n  return /*#__PURE__*/React.createElement(CC, null, /*#__PURE__*/React.createElement(CS, null, [_10, _12, _6, _9, _13, _14]), /*#__PURE__*/React.createElement(\"div\", {\n    onClick: onClick,\n    className: ax([\"_1bsb1osq _otyr1l7b _vchhusvi _1e0c1txw _11q71iim _d0altlke\"]),\n    style: {\n      \"--_1d6dlof\": ix(bg)\n    }\n  }, children));\n};\nvar Side = function Side(_ref5) {\n  var tooltip = _ref5.tooltip,\n    children = _ref5.children;\n  return /*#__PURE__*/React.createElement(CC, null, /*#__PURE__*/React.createElement(CS, null, [_15, _16, _17, _18, _19]), /*#__PURE__*/React.createElement(\"div\", {\n    title: tooltip,\n    className: ax([\"_ca0q1l7b _u5f3i2wt _n3td1l7b _19bvi2wt _bfhk1kix\"])\n  }, children));\n};\nvar StartSide = function StartSide(_ref6) {\n  var children = _ref6.children;\n  return /*#__PURE__*/React.createElement(CC, null, /*#__PURE__*/React.createElement(CS, null, [_15, _16, _17, _18, _20]), /*#__PURE__*/React.createElement(\"div\", {\n    className: ax([\"_ca0q1l7b _u5f3i2wt _n3td1l7b _19bvi2wt _o572qvpr\"])\n  }, children));\n};\nvar Bar = function Bar(_ref7) {\n  var children = _ref7.children;\n  return /*#__PURE__*/React.createElement(CC, null, /*#__PURE__*/React.createElement(CS, null, [_21]), /*#__PURE__*/React.createElement(\"div\", {\n    className: ax([\"_16jlkb7n\"])\n  }, children));\n};\nvar Center = function Center(_ref8) {\n  var children = _ref8.children;\n  return /*#__PURE__*/React.createElement(CC, null, /*#__PURE__*/React.createElement(CS, null, [_21, _15, _22, _17, _23, _20]), /*#__PURE__*/React.createElement(\"div\", {\n    className: ax([\"_16jlkb7n _ca0q1l7b _u5f3rdoj _n3td1l7b _19bvrdoj _o572qvpr\"])\n  }, children));\n};\nvar InlineNodeView = function InlineNodeView(_ref9) {\n  var children = _ref9.children,\n    bg = _ref9.bg,\n    onClick = _ref9.onClick;\n  return /*#__PURE__*/React.createElement(CC, null, /*#__PURE__*/React.createElement(CS, null, [_21, _12, _9, _6, _13, _14]), /*#__PURE__*/React.createElement(\"div\", {\n    onClick: onClick,\n    className: ax([\"_16jlkb7n _otyr1l7b _1e0c1txw _vchhusvi _11q71iim _d0altlke\"]),\n    style: {\n      \"--_1d6dlof\": ix(bg)\n    }\n  }, children));\n};\nexport function BlockNodeContent(props) {\n  var fragment = props.content;\n  if (!fragment || !fragment.content || !fragment.content.length) {\n    return null;\n  }\n  var content = fragment.content;\n  if (content[0].isBlock) {\n    var _startPos = props.startPos + 1;\n    return /*#__PURE__*/React.createElement(BlockNodeContentView, null, content.map(function (childNode, index) {\n      var pos = _startPos;\n      _startPos += childNode.nodeSize;\n      return /*#__PURE__*/React.createElement(BlockNode, {\n        key: index,\n        node: childNode,\n        colors: props.colors,\n        onNodeSelected: props.onNodeSelected,\n        startPos: pos\n      });\n    }));\n  }\n  var startPos = props.startPos;\n  return /*#__PURE__*/React.createElement(BlockNodeContentViewWithInline, null, content.map(function (childNode, index) {\n    var pos = startPos;\n    startPos += childNode.nodeSize;\n    return /*#__PURE__*/React.createElement(InlineNode, {\n      key: index,\n      index: index,\n      node: childNode,\n      bg: props.colors[childNode.type.name],\n      onNodeSelected: props.onNodeSelected,\n      startPos: pos\n    });\n  }));\n}\nexport function BlockNode(props) {\n  var colors = props.colors,\n    node = props.node,\n    startPos = props.startPos;\n  var color = colors[node.type.name];\n  var marks = getMarksText(node);\n  return /*#__PURE__*/React.createElement(\"div\", null, /*#__PURE__*/React.createElement(BlockNodeView, {\n    bg: color,\n    onClick: function onClick() {\n      return props.onNodeSelected({\n        node: node\n      });\n    }\n  }, startPos > 0 && /*#__PURE__*/React.createElement(Side, {\n    tooltip: \"Pos: \".concat(startPos - 1, \" (before \").concat(node.type.name, \" opening tag)\")\n  }, startPos - 1), /*#__PURE__*/React.createElement(StartSide, null, node.type.name, \" \", marks), /*#__PURE__*/React.createElement(Side, {\n    tooltip: \"Pos: \".concat(startPos, \" (after \").concat(node.type.name, \" opening tag)\")\n  }, startPos), /*#__PURE__*/React.createElement(Bar, null), /*#__PURE__*/React.createElement(Side, {\n    tooltip: \"Pos: \".concat(startPos + node.nodeSize - 1, \" (after \").concat(node.type.name, \" closing tag)\")\n  }, startPos + node.nodeSize - 1)), /*#__PURE__*/React.createElement(BlockNodeContent, {\n    content: node.content,\n    colors: colors,\n    onNodeSelected: props.onNodeSelected,\n    startPos: startPos\n  }));\n}\nexport function InlineNode(props) {\n  var node = props.node,\n    bg = props.bg,\n    startPos = props.startPos,\n    index = props.index;\n  var marks = getMarksText(node);\n  return /*#__PURE__*/React.createElement(InlineNodeView, {\n    onClick: function onClick() {\n      return props.onNodeSelected({\n        node: node\n      });\n    },\n    bg: bg\n  }, index === 0 ? /*#__PURE__*/React.createElement(Side, {\n    tooltip: \"Pos: \".concat(startPos, \" (before \").concat(node.type.name, \" opening tag)\")\n  }, startPos) : null, /*#__PURE__*/React.createElement(Center, null, node.type.name, \" \", marks), /*#__PURE__*/React.createElement(Bar, null), /*#__PURE__*/React.createElement(Side, {\n    tooltip: \"Pos: \".concat(startPos + node.nodeSize, \" (before \").concat(node.type.name, \" closing tag)\")\n  }, startPos + node.nodeSize));\n}\nvar structureTabSelectedNode = atom(null);\nexport default function GraphTab() {\n  var _useAtom = useAtom(structureTabSelectedNode),\n    _useAtom2 = _slicedToArray(_useAtom, 2),\n    selectedNode = _useAtom2[0],\n    setSelectedNode = _useAtom2[1];\n  var handleNodeSelect = React.useCallback(function (_ref10) {\n    var node = _ref10.node;\n    return setSelectedNode(node);\n  }, []);\n  var nodeColors = useAtomValue(nodeColorsAtom);\n  var state = useAtomValue(editorStateAtom);\n  if (!state) return null;\n  var selected = selectedNode ? selectedNode : state.doc;\n  return /*#__PURE__*/React.createElement(SplitView, {\n    testId: \"__prosemirror_devtools_tabs_structure__\"\n  }, /*#__PURE__*/React.createElement(SplitViewCol, {\n    grow: true\n  }, /*#__PURE__*/React.createElement(Heading, null, \"Current Doc\"), /*#__PURE__*/React.createElement(GraphWrapper, null, /*#__PURE__*/React.createElement(BlockNode, {\n    colors: nodeColors,\n    node: state.doc,\n    startPos: 0,\n    onNodeSelected: handleNodeSelect\n  }))), /*#__PURE__*/React.createElement(SplitViewCol, {\n    sep: true,\n    minWidth: 200,\n    maxWidth: 300\n  }, /*#__PURE__*/React.createElement(HeadingWithButton, null, /*#__PURE__*/React.createElement(Heading, null, \"Node Info\"), /*#__PURE__*/React.createElement(HeadingButton, {\n    onClick: function onClick() {\n      return console.log(selected);\n    }\n  }, \"Log Node\")), /*#__PURE__*/React.createElement(JSONTree, {\n    data: selected.toJSON(),\n    hideRoot: true,\n    shouldExpandNode: function shouldExpandNode() {\n      return selected.type.name !== \"doc\" ? true : false;\n    }\n  })));\n}\nfunction getMarksText(node) {\n  return node.marks.length === 1 ? \" - [\".concat(node.marks[0].type.name, \"]\") : node.marks.length > 1 ? \" - [\".concat(node.marks.length, \" marks]\") : \"\";\n}","import { atom } from 'jotai/vanilla';\n\nconst RESET = Symbol();\n\nfunction atomWithReset(initialValue) {\n  const anAtom = atom(\n    initialValue,\n    (get, set, update) => {\n      const nextValue = typeof update === \"function\" ? update(get(anAtom)) : update;\n      set(anAtom, nextValue === RESET ? initialValue : nextValue);\n    }\n  );\n  return anAtom;\n}\n\nfunction atomWithReducer(initialValue, reducer) {\n  const anAtom = atom(\n    initialValue,\n    (get, set, action) => set(anAtom, reducer(get(anAtom), action))\n  );\n  return anAtom;\n}\n\nfunction atomFamily(initializeAtom, areEqual) {\n  let shouldRemove = null;\n  const atoms = /* @__PURE__ */ new Map();\n  const createAtom = (param) => {\n    let item;\n    if (areEqual === void 0) {\n      item = atoms.get(param);\n    } else {\n      for (const [key, value] of atoms) {\n        if (areEqual(key, param)) {\n          item = value;\n          break;\n        }\n      }\n    }\n    if (item !== void 0) {\n      if (shouldRemove == null ? void 0 : shouldRemove(item[1], param)) {\n        createAtom.remove(param);\n      } else {\n        return item[0];\n      }\n    }\n    const newAtom = initializeAtom(param);\n    atoms.set(param, [newAtom, Date.now()]);\n    return newAtom;\n  };\n  createAtom.remove = (param) => {\n    if (areEqual === void 0) {\n      atoms.delete(param);\n    } else {\n      for (const [key] of atoms) {\n        if (areEqual(key, param)) {\n          atoms.delete(key);\n          break;\n        }\n      }\n    }\n  };\n  createAtom.setShouldRemove = (fn) => {\n    shouldRemove = fn;\n    if (!shouldRemove)\n      return;\n    for (const [key, value] of atoms) {\n      if (shouldRemove(value[1], key)) {\n        atoms.delete(key);\n      }\n    }\n  };\n  return createAtom;\n}\n\nconst getCached$2 = (c, m, k) => (m.has(k) ? m : m.set(k, c())).get(k);\nconst cache1$4 = /* @__PURE__ */ new WeakMap();\nconst memo3 = (create, dep1, dep2, dep3) => {\n  const cache2 = getCached$2(() => /* @__PURE__ */ new WeakMap(), cache1$4, dep1);\n  const cache3 = getCached$2(() => /* @__PURE__ */ new WeakMap(), cache2, dep2);\n  return getCached$2(create, cache3, dep3);\n};\nfunction selectAtom(anAtom, selector, equalityFn = Object.is) {\n  return memo3(\n    () => {\n      const EMPTY = Symbol();\n      const selectValue = ([value, prevSlice]) => {\n        const slice = selector(value);\n        if (prevSlice !== EMPTY && equalityFn(prevSlice, slice)) {\n          return prevSlice;\n        }\n        return slice;\n      };\n      const derivedAtom = atom((get) => {\n        const prev = get(derivedAtom);\n        const value = get(anAtom);\n        if (value instanceof Promise || prev instanceof Promise) {\n          return Promise.all([value, prev]).then(selectValue);\n        }\n        return selectValue([value, prev]);\n      });\n      derivedAtom.init = EMPTY;\n      return derivedAtom;\n    },\n    anAtom,\n    selector,\n    equalityFn\n  );\n}\n\nconst cache1$3 = /* @__PURE__ */ new WeakMap();\nconst memo1$1 = (create, dep1) => (cache1$3.has(dep1) ? cache1$3 : cache1$3.set(dep1, create())).get(dep1);\nconst deepFreeze = (obj) => {\n  if (typeof obj !== \"object\" || obj === null)\n    return;\n  Object.freeze(obj);\n  const propNames = Object.getOwnPropertyNames(obj);\n  for (const name of propNames) {\n    const value = obj[name];\n    deepFreeze(value);\n  }\n  return obj;\n};\nfunction freezeAtom(anAtom) {\n  return memo1$1(() => {\n    const frozenAtom = atom(\n      (get) => deepFreeze(get(anAtom)),\n      (_get, set, arg) => set(anAtom, arg)\n    );\n    return frozenAtom;\n  }, anAtom);\n}\nfunction freezeAtomCreator(createAtom) {\n  return (...params) => {\n    const anAtom = createAtom(...params);\n    const origRead = anAtom.read;\n    anAtom.read = (get, options) => deepFreeze(origRead(get, options));\n    return anAtom;\n  };\n}\n\nconst getCached$1 = (c, m, k) => (m.has(k) ? m : m.set(k, c())).get(k);\nconst cache1$2 = /* @__PURE__ */ new WeakMap();\nconst memo2$1 = (create, dep1, dep2) => {\n  const cache2 = getCached$1(() => /* @__PURE__ */ new WeakMap(), cache1$2, dep1);\n  return getCached$1(create, cache2, dep2);\n};\nconst cacheKeyForEmptyKeyExtractor = {};\nconst isWritable = (atom2) => !!atom2.write;\nconst isFunction = (x) => typeof x === \"function\";\nfunction splitAtom(arrAtom, keyExtractor) {\n  return memo2$1(\n    () => {\n      const mappingCache = /* @__PURE__ */ new WeakMap();\n      const getMapping = (arr, prev) => {\n        let mapping = mappingCache.get(arr);\n        if (mapping) {\n          return mapping;\n        }\n        const prevMapping = prev && mappingCache.get(prev);\n        const atomList = [];\n        const keyList = [];\n        arr.forEach((item, index) => {\n          const key = keyExtractor ? keyExtractor(item) : index;\n          keyList[index] = key;\n          const cachedAtom = prevMapping && prevMapping.atomList[prevMapping.keyList.indexOf(key)];\n          if (cachedAtom) {\n            atomList[index] = cachedAtom;\n            return;\n          }\n          const read = (get) => {\n            const prev2 = get(mappingAtom);\n            const currArr = get(arrAtom);\n            const mapping2 = getMapping(currArr, prev2 == null ? void 0 : prev2.arr);\n            const index2 = mapping2.keyList.indexOf(key);\n            if (index2 < 0 || index2 >= currArr.length) {\n              const prevItem = arr[getMapping(arr).keyList.indexOf(key)];\n              if (prevItem) {\n                return prevItem;\n              }\n              throw new Error(\"splitAtom: index out of bounds for read\");\n            }\n            return currArr[index2];\n          };\n          const write = (get, set, update) => {\n            const prev2 = get(mappingAtom);\n            const arr2 = get(arrAtom);\n            const mapping2 = getMapping(arr2, prev2 == null ? void 0 : prev2.arr);\n            const index2 = mapping2.keyList.indexOf(key);\n            if (index2 < 0 || index2 >= arr2.length) {\n              throw new Error(\"splitAtom: index out of bounds for write\");\n            }\n            const nextItem = isFunction(update) ? update(arr2[index2]) : update;\n            set(arrAtom, [\n              ...arr2.slice(0, index2),\n              nextItem,\n              ...arr2.slice(index2 + 1)\n            ]);\n          };\n          atomList[index] = isWritable(arrAtom) ? atom(read, write) : atom(read);\n        });\n        if (prevMapping && prevMapping.keyList.length === keyList.length && prevMapping.keyList.every((x, i) => x === keyList[i])) {\n          mapping = prevMapping;\n        } else {\n          mapping = { arr, atomList, keyList };\n        }\n        mappingCache.set(arr, mapping);\n        return mapping;\n      };\n      const mappingAtom = atom((get) => {\n        const prev = get(mappingAtom);\n        const arr = get(arrAtom);\n        const mapping = getMapping(arr, prev == null ? void 0 : prev.arr);\n        return mapping;\n      });\n      mappingAtom.init = void 0;\n      const splittedAtom = isWritable(arrAtom) ? atom(\n        (get) => get(mappingAtom).atomList,\n        (get, set, action) => {\n          switch (action.type) {\n            case \"remove\": {\n              const index = get(splittedAtom).indexOf(action.atom);\n              if (index >= 0) {\n                const arr = get(arrAtom);\n                set(arrAtom, [\n                  ...arr.slice(0, index),\n                  ...arr.slice(index + 1)\n                ]);\n              }\n              break;\n            }\n            case \"insert\": {\n              const index = action.before ? get(splittedAtom).indexOf(action.before) : get(splittedAtom).length;\n              if (index >= 0) {\n                const arr = get(arrAtom);\n                set(arrAtom, [\n                  ...arr.slice(0, index),\n                  action.value,\n                  ...arr.slice(index)\n                ]);\n              }\n              break;\n            }\n            case \"move\": {\n              const index1 = get(splittedAtom).indexOf(action.atom);\n              const index2 = action.before ? get(splittedAtom).indexOf(action.before) : get(splittedAtom).length;\n              if (index1 >= 0 && index2 >= 0) {\n                const arr = get(arrAtom);\n                if (index1 < index2) {\n                  set(arrAtom, [\n                    ...arr.slice(0, index1),\n                    ...arr.slice(index1 + 1, index2),\n                    arr[index1],\n                    ...arr.slice(index2)\n                  ]);\n                } else {\n                  set(arrAtom, [\n                    ...arr.slice(0, index2),\n                    arr[index1],\n                    ...arr.slice(index2, index1),\n                    ...arr.slice(index1 + 1)\n                  ]);\n                }\n              }\n              break;\n            }\n          }\n        }\n      ) : atom((get) => get(mappingAtom).atomList);\n      return splittedAtom;\n    },\n    arrAtom,\n    keyExtractor || cacheKeyForEmptyKeyExtractor\n  );\n}\n\nconst updateValue = (prevValue, update) => typeof update === \"function\" ? update(prevValue) : update;\nfunction atomWithDefault(getDefault) {\n  const EMPTY = Symbol();\n  const overwrittenAtom = atom(EMPTY);\n  const anAtom = atom(\n    (get, options) => {\n      const overwritten = get(overwrittenAtom);\n      if (overwritten !== EMPTY) {\n        return overwritten;\n      }\n      return getDefault(get, options);\n    },\n    (get, set, update) => {\n      if (update === RESET) {\n        return set(overwrittenAtom, EMPTY);\n      }\n      const prevValue = get(anAtom);\n      if (prevValue instanceof Promise) {\n        return prevValue.then(\n          (v) => set(overwrittenAtom, updateValue(v, update))\n        );\n      }\n      return set(\n        overwrittenAtom,\n        updateValue(prevValue, update)\n      );\n    }\n  );\n  return anAtom;\n}\n\nconst NO_STORAGE_VALUE = Symbol();\nfunction createJSONStorage(getStringStorage) {\n  let lastStr;\n  let lastValue;\n  const storage = {\n    getItem: (key) => {\n      var _a, _b;\n      const parse = (str2) => {\n        str2 = str2 || \"\";\n        if (lastStr !== str2) {\n          try {\n            lastValue = JSON.parse(str2);\n          } catch {\n            return NO_STORAGE_VALUE;\n          }\n          lastStr = str2;\n        }\n        return lastValue;\n      };\n      const str = (_b = (_a = getStringStorage()) == null ? void 0 : _a.getItem(key)) != null ? _b : null;\n      if (str instanceof Promise) {\n        return str.then(parse);\n      }\n      return parse(str);\n    },\n    setItem: (key, newValue) => {\n      var _a;\n      return (_a = getStringStorage()) == null ? void 0 : _a.setItem(key, JSON.stringify(newValue));\n    },\n    removeItem: (key) => {\n      var _a;\n      return (_a = getStringStorage()) == null ? void 0 : _a.removeItem(key);\n    }\n  };\n  if (typeof window !== \"undefined\" && typeof window.addEventListener === \"function\") {\n    storage.subscribe = (key, callback) => {\n      const storageEventCallback = (e) => {\n        if (e.key === key && e.newValue) {\n          callback(JSON.parse(e.newValue));\n        }\n      };\n      window.addEventListener(\"storage\", storageEventCallback);\n      return () => {\n        window.removeEventListener(\"storage\", storageEventCallback);\n      };\n    };\n  }\n  return storage;\n}\nconst defaultStorage = createJSONStorage(\n  () => typeof window !== \"undefined\" ? window.localStorage : void 0\n);\nfunction atomWithStorage(key, initialValue, storage = defaultStorage) {\n  const baseAtom = atom(initialValue);\n  baseAtom.onMount = (setAtom) => {\n    const value = storage.getItem(key);\n    if (value instanceof Promise) {\n      value.then((v) => setAtom(v === NO_STORAGE_VALUE ? initialValue : v));\n    } else {\n      setAtom(value === NO_STORAGE_VALUE ? initialValue : value);\n    }\n    let unsub;\n    if (storage.subscribe) {\n      unsub = storage.subscribe(key, setAtom);\n    }\n    return unsub;\n  };\n  const anAtom = atom(\n    (get) => get(baseAtom),\n    (get, set, update) => {\n      const nextValue = typeof update === \"function\" ? update(get(baseAtom)) : update;\n      if (nextValue === RESET) {\n        set(baseAtom, initialValue);\n        return storage.removeItem(key);\n      }\n      set(baseAtom, nextValue);\n      return storage.setItem(key, nextValue);\n    }\n  );\n  return anAtom;\n}\n\nfunction atomWithObservable(getObservable, options) {\n  const returnResultData = (result) => {\n    if (\"e\" in result) {\n      throw result.e;\n    }\n    return result.d;\n  };\n  const observableResultAtom = atom((get) => {\n    var _a;\n    let observable = getObservable(get);\n    const itself = (_a = observable[Symbol.observable]) == null ? void 0 : _a.call(observable);\n    if (itself) {\n      observable = itself;\n    }\n    let resolve;\n    const makePending = () => new Promise((r) => {\n      resolve = r;\n    });\n    const initialResult = options && \"initialValue\" in options ? {\n      d: typeof options.initialValue === \"function\" ? options.initialValue() : options.initialValue\n    } : makePending();\n    let setResult;\n    let lastResult;\n    const listener = (result) => {\n      lastResult = result;\n      resolve == null ? void 0 : resolve(result);\n      setResult == null ? void 0 : setResult(result);\n    };\n    let subscription;\n    let timer;\n    const isNotMounted = () => !setResult;\n    const start = () => {\n      if (subscription) {\n        clearTimeout(timer);\n        subscription.unsubscribe();\n      }\n      subscription = observable.subscribe({\n        next: (d) => listener({ d }),\n        error: (e) => listener({ e }),\n        complete: () => {\n        }\n      });\n      if (isNotMounted() && (options == null ? void 0 : options.unstable_timeout)) {\n        timer = setTimeout(() => {\n          if (subscription) {\n            subscription.unsubscribe();\n            subscription = void 0;\n          }\n        }, options.unstable_timeout);\n      }\n    };\n    start();\n    const resultAtom = atom(lastResult || initialResult);\n    resultAtom.onMount = (update) => {\n      setResult = update;\n      if (lastResult) {\n        update(lastResult);\n      }\n      if (subscription) {\n        clearTimeout(timer);\n      } else {\n        start();\n      }\n      return () => {\n        setResult = void 0;\n        if (subscription) {\n          subscription.unsubscribe();\n          subscription = void 0;\n        }\n      };\n    };\n    return [resultAtom, observable, makePending, start, isNotMounted];\n  });\n  const observableAtom = atom(\n    (get) => {\n      const [resultAtom] = get(observableResultAtom);\n      const result = get(resultAtom);\n      if (result instanceof Promise) {\n        return result.then(returnResultData);\n      }\n      return returnResultData(result);\n    },\n    (get, set, data) => {\n      const [resultAtom, observable, makePending, start, isNotMounted] = get(observableResultAtom);\n      if (\"next\" in observable) {\n        if (isNotMounted()) {\n          set(resultAtom, makePending());\n          start();\n        }\n        observable.next(data);\n      } else {\n        throw new Error(\"observable is not subject\");\n      }\n    }\n  );\n  return observableAtom;\n}\n\nconst cache1$1 = /* @__PURE__ */ new WeakMap();\nconst memo1 = (create, dep1) => (cache1$1.has(dep1) ? cache1$1 : cache1$1.set(dep1, create())).get(dep1);\nconst LOADING = { state: \"loading\" };\nfunction loadable(anAtom) {\n  return memo1(() => {\n    const loadableCache = /* @__PURE__ */ new WeakMap();\n    const refreshAtom = atom(0);\n    const derivedAtom = atom(\n      (get, { setSelf }) => {\n        get(refreshAtom);\n        const promise = get(anAtom);\n        if (!(promise instanceof Promise)) {\n          return { state: \"hasData\", data: promise };\n        }\n        const cached = loadableCache.get(promise);\n        if (cached) {\n          return cached;\n        }\n        loadableCache.set(promise, LOADING);\n        promise.then(\n          (data) => {\n            loadableCache.set(promise, { state: \"hasData\", data });\n          },\n          (error) => {\n            loadableCache.set(promise, { state: \"hasError\", error });\n          }\n        ).finally(setSelf);\n        return LOADING;\n      },\n      (_get, set) => {\n        set(refreshAtom, (c) => c + 1);\n      }\n    );\n    return atom((get) => get(derivedAtom));\n  }, anAtom);\n}\n\nconst getCached = (c, m, k) => (m.has(k) ? m : m.set(k, c())).get(k);\nconst cache1 = /* @__PURE__ */ new WeakMap();\nconst memo2 = (create, dep1, dep2) => {\n  const cache2 = getCached(() => /* @__PURE__ */ new WeakMap(), cache1, dep1);\n  return getCached(create, cache2, dep2);\n};\nconst defaultFallback = () => void 0;\nfunction unwrap(anAtom, fallback = defaultFallback) {\n  return memo2(\n    () => {\n      const promiseErrorCache = /* @__PURE__ */ new WeakMap();\n      const promiseResultCache = /* @__PURE__ */ new WeakMap();\n      const refreshAtom = atom(0);\n      const promiseAndValueAtom = atom(\n        (get, { setSelf }) => {\n          get(refreshAtom);\n          const prev = get(promiseAndValueAtom);\n          const promise = get(anAtom);\n          if (promise === (prev == null ? void 0 : prev.p)) {\n            if (promiseErrorCache.has(promise)) {\n              throw promiseErrorCache.get(promise);\n            }\n            if (promiseResultCache.has(promise)) {\n              return {\n                p: promise,\n                v: promiseResultCache.get(promise)\n              };\n            }\n          }\n          if (promise !== (prev == null ? void 0 : prev.p)) {\n            promise.then(\n              (v) => promiseResultCache.set(promise, v),\n              (e) => promiseErrorCache.set(promise, e)\n            ).finally(setSelf);\n          }\n          if (prev && \"v\" in prev) {\n            return { p: promise, f: fallback(prev.v) };\n          }\n          return { p: promise, f: fallback() };\n        },\n        (_get, set) => {\n          set(refreshAtom, (c) => c + 1);\n        }\n      );\n      promiseAndValueAtom.init = void 0;\n      return atom((get) => {\n        const state = get(promiseAndValueAtom);\n        if (\"v\" in state) {\n          return state.v;\n        }\n        return state.f;\n      });\n    },\n    anAtom,\n    fallback\n  );\n}\n\nexport { RESET, atomFamily, atomWithDefault, atomWithObservable, atomWithReducer, atomWithReset, atomWithStorage, createJSONStorage, freezeAtom, freezeAtomCreator, loadable, selectAtom, splitAtom, NO_STORAGE_VALUE as unstable_NO_STORAGE_VALUE, unwrap as unstable_unwrap };\n","import { RESET, unstable_NO_STORAGE_VALUE } from 'jotai/vanilla/utils';\nexport { RESET, unstable_NO_STORAGE_VALUE } from 'jotai/vanilla/utils';\nimport * as Jotai from 'jotai';\nimport { atom, SECRET_INTERNAL_getScopeContext, useAtom, useSetAtom, SECRET_INTERNAL_registerPromiseAbort } from 'jotai';\nimport { useContext, useCallback, useMemo } from 'react';\n\nfunction atomWithReset(initialValue) {\n  const anAtom = atom(initialValue, (get, set, update) => {\n    const nextValue = typeof update === \"function\" ? update(get(anAtom)) : update;\n    set(anAtom, nextValue === RESET ? initialValue : nextValue);\n  });\n  return anAtom;\n}\n\nconst WRITE_ATOM = \"w\";\nconst RESTORE_ATOMS = \"h\";\n\nfunction useResetAtom(anAtom, scope) {\n  const ScopeContext = SECRET_INTERNAL_getScopeContext(scope);\n  const store = useContext(ScopeContext).s;\n  const setAtom = useCallback(\n    () => store[WRITE_ATOM](anAtom, RESET),\n    [store, anAtom]\n  );\n  return setAtom;\n}\n\nfunction useReducerAtom(anAtom, reducer, scope) {\n  const [state, setState] = useAtom(anAtom, scope);\n  const dispatch = useCallback(\n    (action) => {\n      setState((prev) => reducer(prev, action));\n    },\n    [setState, reducer]\n  );\n  return [state, dispatch];\n}\n\nfunction atomWithReducer(initialValue, reducer) {\n  const anAtom = atom(\n    initialValue,\n    (get, set, action) => set(anAtom, reducer(get(anAtom), action))\n  );\n  return anAtom;\n}\n\nfunction atomFamily(initializeAtom, areEqual) {\n  let shouldRemove = null;\n  const atoms = /* @__PURE__ */ new Map();\n  const createAtom = (param) => {\n    let item;\n    if (areEqual === void 0) {\n      item = atoms.get(param);\n    } else {\n      for (const [key, value] of atoms) {\n        if (areEqual(key, param)) {\n          item = value;\n          break;\n        }\n      }\n    }\n    if (item !== void 0) {\n      if (shouldRemove == null ? void 0 : shouldRemove(item[1], param)) {\n        createAtom.remove(param);\n      } else {\n        return item[0];\n      }\n    }\n    const newAtom = initializeAtom(param);\n    atoms.set(param, [newAtom, Date.now()]);\n    return newAtom;\n  };\n  createAtom.remove = (param) => {\n    if (areEqual === void 0) {\n      atoms.delete(param);\n    } else {\n      for (const [key] of atoms) {\n        if (areEqual(key, param)) {\n          atoms.delete(key);\n          break;\n        }\n      }\n    }\n  };\n  createAtom.setShouldRemove = (fn) => {\n    shouldRemove = fn;\n    if (!shouldRemove)\n      return;\n    for (const [key, value] of atoms) {\n      if (shouldRemove(value[1], key)) {\n        atoms.delete(key);\n      }\n    }\n  };\n  return createAtom;\n}\n\nconst getWeakCacheItem = (cache, deps) => {\n  do {\n    const [dep, ...rest] = deps;\n    const entry = cache.get(dep);\n    if (!entry) {\n      return;\n    }\n    if (!rest.length) {\n      return entry[1];\n    }\n    cache = entry[0];\n    deps = rest;\n  } while (deps.length);\n};\nconst setWeakCacheItem = (cache, deps, item) => {\n  do {\n    const [dep, ...rest] = deps;\n    let entry = cache.get(dep);\n    if (!entry) {\n      entry = [ new WeakMap()];\n      cache.set(dep, entry);\n    }\n    if (!rest.length) {\n      entry[1] = item;\n      return;\n    }\n    cache = entry[0];\n    deps = rest;\n  } while (deps.length);\n};\nconst createMemoizeAtom = () => {\n  const cache = /* @__PURE__ */ new WeakMap();\n  const memoizeAtom = (createAtom, deps) => {\n    const cachedAtom = getWeakCacheItem(cache, deps);\n    if (cachedAtom) {\n      return cachedAtom;\n    }\n    const createdAtom = createAtom();\n    setWeakCacheItem(cache, deps, createdAtom);\n    return createdAtom;\n  };\n  return memoizeAtom;\n};\n\nconst memoizeAtom$4 = createMemoizeAtom();\nfunction selectAtom(anAtom, selector, equalityFn = Object.is) {\n  return memoizeAtom$4(() => {\n    const refAtom = atom(() => ({}));\n    const derivedAtom = atom((get) => {\n      const slice = selector(get(anAtom));\n      const ref = get(refAtom);\n      if (\"prev\" in ref && equalityFn(ref.prev, slice)) {\n        return ref.prev;\n      }\n      ref.prev = slice;\n      return slice;\n    });\n    return derivedAtom;\n  }, [anAtom, selector, equalityFn]);\n}\n\nfunction useAtomCallback(callback, scope) {\n  const anAtom = useMemo(\n    () => atom(\n      null,\n      (get, set, [arg, resolve, reject]) => {\n        try {\n          resolve(callback(get, set, arg));\n        } catch (e) {\n          reject(e);\n        }\n      }\n    ),\n    [callback]\n  );\n  const invoke = useSetAtom(anAtom, scope);\n  return useCallback(\n    (arg) => {\n      let isSync = true;\n      let settled = {};\n      const promise = new Promise((resolve, reject) => {\n        invoke([\n          arg,\n          (v) => {\n            if (isSync) {\n              settled = { v };\n            } else {\n              resolve(v);\n            }\n          },\n          (e) => {\n            if (isSync) {\n              settled = { e };\n            } else {\n              reject(e);\n            }\n          }\n        ]);\n      });\n      isSync = false;\n      if (\"e\" in settled) {\n        throw settled.e;\n      }\n      if (\"v\" in settled) {\n        return settled.v;\n      }\n      return promise;\n    },\n    [invoke]\n  );\n}\n\nconst memoizeAtom$3 = createMemoizeAtom();\nconst deepFreeze = (obj) => {\n  if (typeof obj !== \"object\" || obj === null)\n    return;\n  Object.freeze(obj);\n  const propNames = Object.getOwnPropertyNames(obj);\n  for (const name of propNames) {\n    const value = obj[name];\n    deepFreeze(value);\n  }\n  return obj;\n};\nfunction freezeAtom(anAtom) {\n  return memoizeAtom$3(() => {\n    const frozenAtom = atom(\n      (get) => deepFreeze(get(anAtom)),\n      (_get, set, arg) => set(anAtom, arg)\n    );\n    return frozenAtom;\n  }, [anAtom]);\n}\nfunction freezeAtomCreator(createAtom) {\n  return (...params) => {\n    const anAtom = createAtom(...params);\n    const origRead = anAtom.read;\n    anAtom.read = (get) => deepFreeze(origRead(get));\n    return anAtom;\n  };\n}\n\nconst memoizeAtom$2 = createMemoizeAtom();\nconst isWritable = (atom2) => !!atom2.write;\nconst isFunction = (x) => typeof x === \"function\";\nfunction splitAtom(arrAtom, keyExtractor) {\n  return memoizeAtom$2(\n    () => {\n      const mappingCache = /* @__PURE__ */ new WeakMap();\n      const getMapping = (arr, prev) => {\n        let mapping = mappingCache.get(arr);\n        if (mapping) {\n          return mapping;\n        }\n        const prevMapping = prev && mappingCache.get(prev);\n        const atomList = [];\n        const keyList = [];\n        arr.forEach((item, index) => {\n          const key = keyExtractor ? keyExtractor(item) : index;\n          keyList[index] = key;\n          const cachedAtom = prevMapping && prevMapping.atomList[prevMapping.keyList.indexOf(key)];\n          if (cachedAtom) {\n            atomList[index] = cachedAtom;\n            return;\n          }\n          const read2 = (get) => {\n            const ref = get(refAtom);\n            const currArr = get(arrAtom);\n            const mapping2 = getMapping(currArr, ref.prev);\n            const index2 = mapping2.keyList.indexOf(key);\n            if (index2 < 0 || index2 >= currArr.length) {\n              const prevItem = arr[getMapping(arr).keyList.indexOf(key)];\n              if (prevItem) {\n                return prevItem;\n              }\n              throw new Error(\"splitAtom: index out of bounds for read\");\n            }\n            return currArr[index2];\n          };\n          const write2 = (get, set, update) => {\n            const ref = get(refAtom);\n            const arr2 = get(arrAtom);\n            const mapping2 = getMapping(arr2, ref.prev);\n            const index2 = mapping2.keyList.indexOf(key);\n            if (index2 < 0 || index2 >= arr2.length) {\n              throw new Error(\"splitAtom: index out of bounds for write\");\n            }\n            const nextItem = isFunction(update) ? update(arr2[index2]) : update;\n            set(arrAtom, [\n              ...arr2.slice(0, index2),\n              nextItem,\n              ...arr2.slice(index2 + 1)\n            ]);\n          };\n          atomList[index] = isWritable(arrAtom) ? atom(read2, write2) : atom(read2);\n        });\n        if (prevMapping && prevMapping.keyList.length === keyList.length && prevMapping.keyList.every((x, i) => x === keyList[i])) {\n          mapping = prevMapping;\n        } else {\n          mapping = { atomList, keyList };\n        }\n        mappingCache.set(arr, mapping);\n        return mapping;\n      };\n      const refAtom = atom(() => ({}));\n      const read = (get) => {\n        const ref = get(refAtom);\n        const arr = get(arrAtom);\n        const mapping = getMapping(arr, ref.prev);\n        ref.prev = arr;\n        return mapping.atomList;\n      };\n      const write = (get, set, action) => {\n        if (\"read\" in action) {\n          console.warn(\"atomToRemove is deprecated. use action with type\");\n          action = { type: \"remove\", atom: action };\n        }\n        switch (action.type) {\n          case \"remove\": {\n            const index = get(splittedAtom).indexOf(action.atom);\n            if (index >= 0) {\n              const arr = get(arrAtom);\n              set(arrAtom, [\n                ...arr.slice(0, index),\n                ...arr.slice(index + 1)\n              ]);\n            }\n            break;\n          }\n          case \"insert\": {\n            const index = action.before ? get(splittedAtom).indexOf(action.before) : get(splittedAtom).length;\n            if (index >= 0) {\n              const arr = get(arrAtom);\n              set(arrAtom, [\n                ...arr.slice(0, index),\n                action.value,\n                ...arr.slice(index)\n              ]);\n            }\n            break;\n          }\n          case \"move\": {\n            const index1 = get(splittedAtom).indexOf(action.atom);\n            const index2 = action.before ? get(splittedAtom).indexOf(action.before) : get(splittedAtom).length;\n            if (index1 >= 0 && index2 >= 0) {\n              const arr = get(arrAtom);\n              if (index1 < index2) {\n                set(arrAtom, [\n                  ...arr.slice(0, index1),\n                  ...arr.slice(index1 + 1, index2),\n                  arr[index1],\n                  ...arr.slice(index2)\n                ]);\n              } else {\n                set(arrAtom, [\n                  ...arr.slice(0, index2),\n                  arr[index1],\n                  ...arr.slice(index2, index1),\n                  ...arr.slice(index1 + 1)\n                ]);\n              }\n            }\n            break;\n          }\n        }\n      };\n      const splittedAtom = isWritable(arrAtom) ? atom(read, write) : atom(read);\n      return splittedAtom;\n    },\n    keyExtractor ? [arrAtom, keyExtractor] : [arrAtom]\n  );\n}\n\nfunction atomWithDefault(getDefault) {\n  const EMPTY = Symbol();\n  const overwrittenAtom = atom(EMPTY);\n  const anAtom = atom(\n    (get) => {\n      const overwritten = get(overwrittenAtom);\n      if (overwritten !== EMPTY) {\n        return overwritten;\n      }\n      return getDefault(get);\n    },\n    (get, set, update) => {\n      if (update === RESET) {\n        return set(overwrittenAtom, EMPTY);\n      }\n      return set(\n        overwrittenAtom,\n        typeof update === \"function\" ? update(get(anAtom)) : update\n      );\n    }\n  );\n  return anAtom;\n}\n\nconst memoizeAtom$1 = createMemoizeAtom();\nconst emptyArrayAtom = atom(() => []);\nfunction waitForAll(atoms) {\n  const createAtom = () => {\n    const unwrappedAtoms = unwrapAtoms(atoms);\n    const derivedAtom = atom((get) => {\n      const promises = [];\n      const values = unwrappedAtoms.map((anAtom, index) => {\n        try {\n          return get(anAtom);\n        } catch (e) {\n          if (e instanceof Promise) {\n            promises[index] = e;\n          } else {\n            throw e;\n          }\n        }\n      });\n      if (promises.length) {\n        throw Promise.all(promises);\n      }\n      return wrapResults(atoms, values);\n    });\n    return derivedAtom;\n  };\n  if (Array.isArray(atoms)) {\n    if (atoms.length) {\n      return memoizeAtom$1(createAtom, atoms);\n    }\n    return emptyArrayAtom;\n  }\n  return createAtom();\n}\nconst unwrapAtoms = (atoms) => Array.isArray(atoms) ? atoms : Object.getOwnPropertyNames(atoms).map((key) => atoms[key]);\nconst wrapResults = (atoms, results) => Array.isArray(atoms) ? results : Object.getOwnPropertyNames(atoms).reduce(\n  (out, key, idx) => ({ ...out, [key]: results[idx] }),\n  {}\n);\n\nfunction createJSONStorage(getStringStorage) {\n  let lastStr;\n  let lastValue;\n  const storage = {\n    getItem: (key) => {\n      var _a, _b;\n      const parse = (str2) => {\n        str2 = str2 || \"\";\n        if (lastStr !== str2) {\n          try {\n            lastValue = JSON.parse(str2);\n          } catch {\n            return unstable_NO_STORAGE_VALUE;\n          }\n          lastStr = str2;\n        }\n        return lastValue;\n      };\n      const str = (_b = (_a = getStringStorage()) == null ? void 0 : _a.getItem(key)) != null ? _b : null;\n      if (str instanceof Promise) {\n        return str.then(parse);\n      }\n      return parse(str);\n    },\n    setItem: (key, newValue) => {\n      var _a;\n      return (_a = getStringStorage()) == null ? void 0 : _a.setItem(key, JSON.stringify(newValue));\n    },\n    removeItem: (key) => {\n      var _a;\n      return (_a = getStringStorage()) == null ? void 0 : _a.removeItem(key);\n    }\n  };\n  if (typeof window !== \"undefined\" && typeof window.addEventListener === \"function\") {\n    storage.subscribe = (key, callback) => {\n      const storageEventCallback = (e) => {\n        if (e.key === key && e.newValue) {\n          callback(JSON.parse(e.newValue));\n        }\n      };\n      window.addEventListener(\"storage\", storageEventCallback);\n      return () => {\n        window.removeEventListener(\"storage\", storageEventCallback);\n      };\n    };\n  }\n  return storage;\n}\nconst defaultStorage = createJSONStorage(\n  () => typeof window !== \"undefined\" ? window.localStorage : void 0\n);\nfunction atomWithStorage(key, initialValue, storage = defaultStorage) {\n  const getInitialValue = () => {\n    const value = storage.getItem(key);\n    if (value instanceof Promise) {\n      return value.then((v) => v === unstable_NO_STORAGE_VALUE ? initialValue : v);\n    }\n    return value === unstable_NO_STORAGE_VALUE ? initialValue : value;\n  };\n  const baseAtom = atom(storage.delayInit ? initialValue : getInitialValue());\n  baseAtom.onMount = (setAtom) => {\n    let unsub;\n    if (storage.subscribe) {\n      unsub = storage.subscribe(key, setAtom);\n      setAtom(getInitialValue());\n    }\n    if (storage.delayInit) {\n      const value = getInitialValue();\n      if (value instanceof Promise) {\n        value.then(setAtom);\n      } else {\n        setAtom(value);\n      }\n    }\n    return unsub;\n  };\n  const anAtom = atom(\n    (get) => get(baseAtom),\n    (get, set, update) => {\n      const nextValue = typeof update === \"function\" ? update(get(baseAtom)) : update;\n      if (nextValue === RESET) {\n        set(baseAtom, initialValue);\n        return storage.removeItem(key);\n      }\n      set(baseAtom, nextValue);\n      return storage.setItem(key, nextValue);\n    }\n  );\n  return anAtom;\n}\nfunction atomWithHash(key, initialValue, options) {\n  const serialize = (options == null ? void 0 : options.serialize) || JSON.stringify;\n  const deserialize = (options == null ? void 0 : options.deserialize) || ((str) => {\n    try {\n      return JSON.parse(str || \"\");\n    } catch {\n      return unstable_NO_STORAGE_VALUE;\n    }\n  });\n  const subscribe = (options == null ? void 0 : options.subscribe) || ((callback) => {\n    window.addEventListener(\"hashchange\", callback);\n    return () => {\n      window.removeEventListener(\"hashchange\", callback);\n    };\n  });\n  const hashStorage = {\n    getItem: (key2) => {\n      if (typeof location === \"undefined\") {\n        return unstable_NO_STORAGE_VALUE;\n      }\n      const searchParams = new URLSearchParams(location.hash.slice(1));\n      const storedValue = searchParams.get(key2);\n      return deserialize(storedValue);\n    },\n    setItem: (key2, newValue) => {\n      const searchParams = new URLSearchParams(location.hash.slice(1));\n      searchParams.set(key2, serialize(newValue));\n      if (options == null ? void 0 : options.replaceState) {\n        history.replaceState(\n          null,\n          \"\",\n          location.pathname + location.search + \"#\" + searchParams.toString()\n        );\n      } else {\n        location.hash = searchParams.toString();\n      }\n    },\n    removeItem: (key2) => {\n      const searchParams = new URLSearchParams(location.hash.slice(1));\n      searchParams.delete(key2);\n      if (options == null ? void 0 : options.replaceState) {\n        history.replaceState(\n          null,\n          \"\",\n          location.pathname + location.search + \"#\" + searchParams.toString()\n        );\n      } else {\n        location.hash = searchParams.toString();\n      }\n    },\n    ...(options == null ? void 0 : options.delayInit) && { delayInit: true },\n    subscribe: (key2, setValue) => {\n      const callback = () => {\n        const searchParams = new URLSearchParams(location.hash.slice(1));\n        const str = searchParams.get(key2);\n        if (str !== null) {\n          setValue(deserialize(str));\n        } else {\n          setValue(initialValue);\n        }\n      };\n      return subscribe(callback);\n    }\n  };\n  return atomWithStorage(key, initialValue, hashStorage);\n}\n\nfunction atomWithObservable(getObservable, options) {\n  const observableResultAtom = atom((get) => {\n    var _a;\n    let observable = getObservable(get);\n    const itself = (_a = observable[Symbol.observable]) == null ? void 0 : _a.call(observable);\n    if (itself) {\n      observable = itself;\n    }\n    let resolve;\n    const makePending = () => new Promise((r) => {\n      resolve = r;\n    });\n    const initialResult = options && \"initialValue\" in options ? {\n      d: typeof options.initialValue === \"function\" ? options.initialValue() : options.initialValue\n    } : makePending();\n    let setResult;\n    let lastResult;\n    const listener = (result) => {\n      lastResult = result;\n      resolve == null ? void 0 : resolve(result);\n      setResult == null ? void 0 : setResult(result);\n    };\n    let subscription;\n    let timer;\n    const isNotMounted = () => !setResult;\n    const start = () => {\n      if (subscription) {\n        clearTimeout(timer);\n        subscription.unsubscribe();\n      }\n      subscription = observable.subscribe({\n        next: (d) => listener({ d }),\n        error: (e) => listener({ e }),\n        complete: () => {\n        }\n      });\n      if (isNotMounted() && (options == null ? void 0 : options.unstable_timeout)) {\n        timer = setTimeout(() => {\n          if (subscription) {\n            subscription.unsubscribe();\n            subscription = void 0;\n          }\n        }, options.unstable_timeout);\n      }\n    };\n    start();\n    const resultAtom = atom(lastResult || initialResult);\n    resultAtom.onMount = (update) => {\n      setResult = update;\n      if (lastResult) {\n        update(lastResult);\n      }\n      if (subscription) {\n        clearTimeout(timer);\n      } else {\n        start();\n      }\n      return () => {\n        setResult = void 0;\n        if (subscription) {\n          subscription.unsubscribe();\n          subscription = void 0;\n        }\n      };\n    };\n    return [resultAtom, observable, makePending, start, isNotMounted];\n  });\n  const observableAtom = atom(\n    (get) => {\n      const [resultAtom] = get(observableResultAtom);\n      const result = get(resultAtom);\n      if (\"e\" in result) {\n        throw result.e;\n      }\n      return result.d;\n    },\n    (get, set, data) => {\n      const [resultAtom, observable, makePending, start, isNotMounted] = get(observableResultAtom);\n      if (\"next\" in observable) {\n        if (isNotMounted()) {\n          set(resultAtom, makePending());\n          start();\n        }\n        observable.next(data);\n      } else {\n        throw new Error(\"observable is not subject\");\n      }\n    }\n  );\n  return observableAtom;\n}\n\nconst hydratedMap = /* @__PURE__ */ new WeakMap();\nfunction useHydrateAtoms(values, scope) {\n  const ScopeContext = SECRET_INTERNAL_getScopeContext(scope);\n  const scopeContainer = useContext(ScopeContext);\n  const store = scopeContainer.s;\n  const hydratedSet = getHydratedSet(scopeContainer);\n  const tuplesToRestore = [];\n  for (const tuple of values) {\n    const atom = tuple[0];\n    if (!hydratedSet.has(atom)) {\n      hydratedSet.add(atom);\n      tuplesToRestore.push(tuple);\n    }\n  }\n  if (tuplesToRestore.length) {\n    store[RESTORE_ATOMS](tuplesToRestore);\n  }\n}\nfunction getHydratedSet(scopeContainer) {\n  let hydratedSet = hydratedMap.get(scopeContainer);\n  if (!hydratedSet) {\n    hydratedSet = /* @__PURE__ */ new WeakSet();\n    hydratedMap.set(scopeContainer, hydratedSet);\n  }\n  return hydratedSet;\n}\n\nconst memoizeAtom = createMemoizeAtom();\nconst LOADING = { state: \"loading\" };\nfunction loadable(anAtom) {\n  return memoizeAtom(() => {\n    const loadableAtomCache = /* @__PURE__ */ new WeakMap();\n    const catchAtom = atom((get) => {\n      let promise;\n      try {\n        const data = get(anAtom);\n        const loadableAtom2 = atom({ state: \"hasData\", data });\n        return loadableAtom2;\n      } catch (error) {\n        if (error instanceof Promise) {\n          promise = error;\n        } else {\n          const loadableAtom2 = atom({\n            state: \"hasError\",\n            error\n          });\n          return loadableAtom2;\n        }\n      }\n      const cached = loadableAtomCache.get(promise);\n      if (cached) {\n        return cached;\n      }\n      const loadableAtom = atom(\n        LOADING,\n        async (get2, set) => {\n          try {\n            const data = await get2(anAtom, { unstable_promise: true });\n            set(loadableAtom, { state: \"hasData\", data });\n          } catch (error) {\n            set(loadableAtom, { state: \"hasError\", error });\n          }\n        }\n      );\n      loadableAtom.onMount = (init) => {\n        init();\n      };\n      loadableAtomCache.set(promise, loadableAtom);\n      return loadableAtom;\n    });\n    const derivedAtom = atom((get) => {\n      const loadableAtom = get(catchAtom);\n      return get(loadableAtom);\n    });\n    return derivedAtom;\n  }, [anAtom]);\n}\n\nfunction abortableAtom(read, write) {\n  return atom((get) => {\n    const controller = new AbortController();\n    const promise = read(get, { signal: controller.signal });\n    if (promise instanceof Promise) {\n      SECRET_INTERNAL_registerPromiseAbort(promise, () => controller.abort());\n    }\n    return promise;\n  }, write);\n}\n\nconst useAtomValue = (...args) => {\n  console.warn(\"[DEPRECATED]: use `useAtomValue` from `jotai` instead.\");\n  return Jotai.useAtomValue(...args);\n};\nconst useUpdateAtom = (...args) => {\n  console.warn(\"[DEPRECATED]: use `useSetAtom` from `jotai` instead.\");\n  return Jotai.useSetAtom(...args);\n};\n\nexport { abortableAtom, atomFamily, atomWithDefault, atomWithHash, atomWithObservable, atomWithReducer, atomWithReset, atomWithStorage, createJSONStorage, freezeAtom, freezeAtomCreator, loadable, selectAtom, splitAtom, useAtomCallback, useAtomValue, useHydrateAtoms, useReducerAtom, useResetAtom, useUpdateAtom, waitForAll };\n","import { atomWithStorage, useReducerAtom } from \"jotai/utils\";\nvar SNAPSHOTS_KEY = \"prosemirror-dev-tools-snapshots\";\nvar snapshotsAtom = atomWithStorage(SNAPSHOTS_KEY, []);\nfunction snapshotReducer(prev, action) {\n  if (action.type === \"save\") {\n    var snapshots = [action.payload.snapshot].concat(prev);\n    return snapshots;\n  } else if (action.type === \"delete\") {\n    return prev.filter(function (item) {\n      return item !== action.payload.snapshot;\n    });\n  }\n  return prev;\n}\nexport function useSnapshots() {\n  return useReducerAtom(snapshotsAtom, snapshotReducer);\n}","import { EditorState } from \"prosemirror-state\";\nexport default function getEditorStateClass() {\n  return EditorState;\n}","import { atom } from \"jotai\";\nexport var editorViewAtom = atom(null);","/* snapshots.tsx generated by @compiled/babel-plugin v0.17.1 */\nimport { ax, ix, CC, CS } from \"@compiled/react/runtime\";\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nimport React from \"react\";\nimport { SplitView, SplitViewCol } from \"../components/split-view\";\nimport { List } from \"../components/list\";\nimport { InfoPanel } from \"../components/info-panel\";\nimport theme from \"../theme\";\nimport { useSnapshots } from \"../state/snapshots\";\nimport getEditorStateClass from \"../state/get-editor-state\";\nimport { useAtom, useAtomValue, useSetAtom } from \"jotai\";\nimport { editorViewAtom } from \"../state/editor-view\";\nimport { editorStateAtom } from \"../state/editor-state\";\nimport { historyWriteAtom } from \"../state/history\";\nvar _26 = \"._16jlkb7n{flex-grow:1}\";\nvar _25 = \"._1bsb1osq{width:100%}\";\nvar _24 = \"._1e0c1txw{display:flex}\";\nvar _23 = \"._vwz41tcg{line-height:24px}\";\nvar _22 = \"._4t3i1tcg{height:24px}\";\nvar _21 = \"._1di61emw:active{background-color:rgba(203,166,247,.6)}\";\nvar _20 = \"._1hvw1o36:focus{outline-width:medium}\";\nvar _19 = \"._49pcglyw:focus{outline-style:none}\";\nvar _18 = \"._nt751r31:focus{outline-color:currentColor}\";\nvar _17 = \"._d0altlke:hover{cursor:pointer}\";\nvar _16 = \"._30l35y2n:hover{color:#cdd6f4}\";\nvar _15 = \"._irr31wye:hover{background-color:rgba(203,166,247,.4)}\";\nvar _14 = \"._1h5m1y44+._1h5m1y44{margin-left:4px}\";\nvar _13 = \"._19itglyw{border:none}\";\nvar _12 = \"._2rkoyh40{border-radius:2px}\";\nvar _11 = \"._v564111k{transition:background .3s,color .3s}\";\nvar _10 = \"._1p1dangw{text-transform:uppercase}\";\nvar _9 = \"._bfhk1ojv{background-color:rgba(205,214,244,.1)}\";\nvar _8 = \"._syazryvq{color:rgba(205,214,244,.8)}\";\nvar _7 = \"._1wyb1skh{font-size:11px}\";\nvar _6 = \"._1dyzt94y{letter-spacing:1px}\";\nvar _5 = \"._k48p1nn1{font-weight:400}\";\nvar _4 = \"._19bv19bv{padding-left:10px}\";\nvar _3 = \"._n3tdi2wt{padding-bottom:6px}\";\nvar _2 = \"._u5f319bv{padding-right:10px}\";\nvar _ = \"._ca0qi2wt{padding-top:6px}\";\nvar ActionButton = function ActionButton(_ref) {\n  var children = _ref.children,\n    onClick = _ref.onClick;\n  return /*#__PURE__*/React.createElement(CC, null, /*#__PURE__*/React.createElement(CS, null, [_, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21]), /*#__PURE__*/React.createElement(\"button\", {\n    onClick: onClick,\n    className: ax([\"_ca0qi2wt _u5f319bv _n3tdi2wt _19bv19bv _k48p1nn1 _1dyzt94y _1wyb1skh _syazryvq _bfhk1ojv _1p1dangw _v564111k _2rkoyh40 _19itglyw _1h5m1y44 _irr31wye _30l35y2n _d0altlke _nt751r31 _49pcglyw _1hvw1o36 _1di61emw\"])\n  }, children));\n};\nvar ListItem = function ListItem(_ref2) {\n  var children = _ref2.children;\n  return /*#__PURE__*/React.createElement(CC, null, /*#__PURE__*/React.createElement(CS, null, [_22, _23, _24, _25]), /*#__PURE__*/React.createElement(\"div\", {\n    className: ax([\"_4t3i1tcg _vwz41tcg _1e0c1txw _1bsb1osq\"])\n  }, children));\n};\nvar ListItemTitle = function ListItemTitle(_ref3) {\n  var children = _ref3.children;\n  return /*#__PURE__*/React.createElement(CC, null, /*#__PURE__*/React.createElement(CS, null, [_26]), /*#__PURE__*/React.createElement(\"div\", {\n    className: ax([\"_16jlkb7n\"])\n  }, children));\n};\nexport function SnapshotsList(_ref4) {\n  var snapshots = _ref4.snapshots,\n    deleteSnapshot = _ref4.deleteSnapshot,\n    loadSnapshot = _ref4.loadSnapshot;\n  return /*#__PURE__*/React.createElement(List, {\n    getKey: function getKey(item) {\n      return item.name + item.timestamp;\n    },\n    items: snapshots,\n    title: function title(item) {\n      return /*#__PURE__*/React.createElement(ListItem, null, /*#__PURE__*/React.createElement(ListItemTitle, null, item.name), /*#__PURE__*/React.createElement(\"div\", null, /*#__PURE__*/React.createElement(ActionButton, {\n        onClick: function onClick() {\n          return deleteSnapshot(item);\n        }\n      }, \"delete\"), /*#__PURE__*/React.createElement(ActionButton, {\n        onClick: function onClick() {\n          return loadSnapshot(item);\n        }\n      }, \"restore\")));\n    }\n  });\n}\nexport default function SnapshotTab() {\n  var _useSnapshots = useSnapshots(),\n    _useSnapshots2 = _slicedToArray(_useSnapshots, 2),\n    snapshots = _useSnapshots2[0],\n    snapshotsDispatch = _useSnapshots2[1];\n  var editorView = useAtomValue(editorViewAtom);\n  var _useAtom = useAtom(editorStateAtom),\n    _useAtom2 = _slicedToArray(_useAtom, 2),\n    editorState = _useAtom2[0],\n    setEditorState = _useAtom2[1];\n  var historyDispatcher = useSetAtom(historyWriteAtom);\n  var loadSnapshot = React.useCallback(function (snapshot) {\n    var EditorState = getEditorStateClass();\n    if (!editorState) return;\n    if (!editorView) return;\n    var newState = EditorState.create({\n      schema: editorState.schema,\n      plugins: editorState.plugins,\n      doc: editorState.schema.nodeFromJSON(snapshot.snapshot)\n    });\n    editorView.updateState(newState);\n    setEditorState(newState);\n    historyDispatcher({\n      type: \"reset\",\n      payload: {\n        state: editorView.state\n      }\n    });\n  }, [editorView, editorState]);\n  var deleteSnapshot = React.useCallback(function (snapshot) {\n    snapshotsDispatch({\n      type: \"delete\",\n      payload: {\n        snapshot: snapshot\n      }\n    });\n  }, [snapshotsDispatch]);\n  return /*#__PURE__*/React.createElement(SplitView, {\n    testId: \"__prosemirror_devtools_tabs_snapshots__\"\n  }, /*#__PURE__*/React.createElement(SplitViewCol, {\n    noPaddings: true,\n    grow: true\n  }, snapshots.length ? /*#__PURE__*/React.createElement(SnapshotsList, {\n    snapshots: snapshots,\n    loadSnapshot: loadSnapshot,\n    deleteSnapshot: deleteSnapshot\n  }) : /*#__PURE__*/React.createElement(InfoPanel, null, \"No saved snapshots yet. Press \\\"Save Snapshot\\\" button to add one.\")));\n}","/* css-reset.tsx generated by @compiled/babel-plugin v0.17.1 */\nimport { ax, ix, CC, CS } from \"@compiled/react/runtime\";\nimport React from \"react\";\nvar _6 = \"._1k0gidpf li+li{margin-left:0}\";\nvar _5 = \"._eld4idpf li+li{margin-bottom:0}\";\nvar _4 = \"._1mwnidpf li+li{margin-right:0}\";\nvar _3 = \"._17hvidpf li+li{margin-top:0}\";\nvar _2 = \"._vwz4kb7n{line-height:1}\";\nvar _ = \"._1wyb1osq{font-size:100%}\";\nvar cssResetStyles = null;\nvar CSSReset = function CSSReset(_ref) {\n  var children = _ref.children;\n  return /*#__PURE__*/React.createElement(CC, null, /*#__PURE__*/React.createElement(CS, null, [_, _2, _3, _4, _5, _6]), /*#__PURE__*/React.createElement(\"div\", {\n    className: ax([\"_1wyb1osq _vwz4kb7n _17hvidpf _1mwnidpf _eld4idpf _1k0gidpf\"])\n  }, children));\n};\nexport default CSSReset;","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nimport { atom, useAtom, useAtomValue, useSetAtom } from \"jotai\";\nimport findNodeIn, { findPMNode } from \"../utils/find-node\";\nimport { editorStateAtom } from \"./editor-state\";\nimport { expandPathAtom } from \"./expand-path\";\nvar NODE_PICKER_DEFAULT = {\n  top: 0,\n  left: 0,\n  width: 0,\n  height: 0,\n  active: false\n};\nvar nodePickerAtom = atom(NODE_PICKER_DEFAULT);\n\n// TODO: rewrite as read and write atom\nexport function useNodePicker() {\n  var _useAtom = useAtom(nodePickerAtom),\n    _useAtom2 = _slicedToArray(_useAtom, 2),\n    nodePickerState = _useAtom2[0],\n    setNodePickerState = _useAtom2[1];\n  var editorState = useAtomValue(editorStateAtom);\n  var setExpandPath = useSetAtom(expandPathAtom);\n  var api = {\n    activate: function activate() {\n      setNodePickerState(_objectSpread(_objectSpread({}, NODE_PICKER_DEFAULT), {}, {\n        active: true\n      }));\n    },\n    deactivate: function deactivate() {\n      setNodePickerState(NODE_PICKER_DEFAULT);\n    },\n    select: function select(target) {\n      if (!editorState) return;\n      var node = findPMNode(target);\n      if (node) {\n        var path = findNodeIn(editorState.doc, editorState.doc.nodeAt(node.pmViewDesc.posAtStart));\n        if (!path) return;\n        setExpandPath([]);\n        setExpandPath(path);\n        api.deactivate();\n      }\n    },\n    updatePosition: function updatePosition(target) {\n      var node = findPMNode(target);\n      if (node && (node.pmViewDesc.node && node.pmViewDesc.node.type.name !== \"doc\" || node.pmViewDesc.mark)) {\n        var _node$getBoundingClie = node.getBoundingClientRect(),\n          top = _node$getBoundingClie.top,\n          left = _node$getBoundingClie.left,\n          width = _node$getBoundingClie.width,\n          height = _node$getBoundingClie.height;\n        setNodePickerState({\n          top: top + window.scrollY,\n          left: left,\n          width: width,\n          height: height,\n          active: true\n        });\n      } else {\n        api.activate();\n      }\n    }\n  };\n  return [nodePickerState, api];\n}","/* index.tsx generated by @compiled/babel-plugin v0.17.1 */\nimport { ax, ix, CC, CS } from \"@compiled/react/runtime\";\nvar _24 = \"._d0altlke:hover{cursor:pointer}\";\nvar _23 = \"._irr34135:hover{background-color:rgba(203,166,247,.8)}\";\nvar _22 = \"._ouxl1qre{background-position:50% 50%}\";\nvar _21 = \"._12veglyw{background-repeat:none}\";\nvar _20 = \"._1lrwmp9v{background-size:20px 20px}\";\nvar _19 = \"._11q71d4i{background:var(--_1rzmv8e) url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACYAAAAmCAQAAAACNCElAAAAxklEQVRIx+2Vuw3DMAxEXWUD9VrKvTYJRzAygWpPkSVcBlDtJS6Fg8AQqQ+lAEECXU08iid+pmnoTwWDKzbU6IEbLnkYQaMlD9uA6iqAUArQwDBgX4T1Z+uF4Q4PB/sZmH/1e1BCRZiLhqgWKsJsYjJLUPkDEJKjvmPWwnwCtcKoW4O5VnpTFmaVb8o3LXONOiZAcI3aYe5UIFXiUmv77doOc7oUpDoozLU5iiPFqYtcW4W01LJP3FEiwzXBLG9SUBNq6Ef0BJ8IApq+rItIAAAAAElFTkSuQmCC\\\")}\";\nvar _18 = \"._2rko1l7b{border-radius:3px}\";\nvar _17 = \"._19itglyw{border:none}\";\nvar _16 = \"._4t3i1tcg{height:24px}\";\nvar _15 = \"._1bsb1tcg{width:24px}\";\nvar _14 = \"._154ismyl{top:-28px}\";\nvar _13 = \"._1xi21y44{right:4px}\";\nvar _12 = \"._r06hglyw{-webkit-appearance:none;-moz-appearance:none;appearance:none}\";\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nimport React from \"react\";\nimport { useSetAtom } from \"jotai\";\nimport theme from \"../../theme\";\nimport { useNodePicker } from \"../../state/node-picker\";\nimport { devToolTabIndexAtom } from \"../../state/global\";\nvar _11 = \"._4t3imry4{height:var(--_roksyz)}\";\nvar _10 = \"._1bsb9tg7{width:var(--_1ea5ebz)}\";\nvar _9 = \"._1e0c1ss5{display:var(--_1oddjb5)}\";\nvar _8 = \"._t9ecwcso{transform:translateX(var(--_1e5hqsa)) translateY(var(--_jp4btk))}\";\nvar _7 = \"._80omtlke{cursor:pointer}\";\nvar _6 = \"._1pbyhac1{z-index:99999}\";\nvar _5 = \"._bfhk1ghd{background-color:rgba(0,0,255,.3)}\";\nvar _4 = \"._1ltvidpf{left:0}\";\nvar _3 = \"._154iidpf{top:0}\";\nvar _2 = \"._lcxvglyw{pointer-events:none}\";\nvar _ = \"._kqswstnw{position:absolute}\";\nvar icon = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACYAAAAmCAQAAAACNCElAAAAxklEQVRIx+2Vuw3DMAxEXWUD9VrKvTYJRzAygWpPkSVcBlDtJS6Fg8AQqQ+lAEECXU08iid+pmnoTwWDKzbU6IEbLnkYQaMlD9uA6iqAUArQwDBgX4T1Z+uF4Q4PB/sZmH/1e1BCRZiLhqgWKsJsYjJLUPkDEJKjvmPWwnwCtcKoW4O5VnpTFmaVb8o3LXONOiZAcI3aYe5UIFXiUmv77doOc7oUpDoozLU5iiPFqYtcW4W01LJP3FEiwzXBLG9SUBNq6Ef0BJ8IApq+rItIAAAAAElFTkSuQmCC\";\nvar NodePickerHighlight = function NodePickerHighlight(_ref) {\n  var visible = _ref.visible,\n    width = _ref.width,\n    height = _ref.height,\n    left = _ref.left,\n    top = _ref.top;\n  return /*#__PURE__*/React.createElement(CC, null, /*#__PURE__*/React.createElement(CS, null, [_, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11]), /*#__PURE__*/React.createElement(\"div\", {\n    className: ax([\"_kqswstnw _lcxvglyw _154iidpf _1ltvidpf _bfhk1ghd _1pbyhac1 _80omtlke _t9ecwcso _1e0c1ss5 _1bsb9tg7 _4t3imry4\"]),\n    style: {\n      \"--_1e5hqsa\": ix(left, \"px\"),\n      \"--_jp4btk\": ix(top, \"px\"),\n      \"--_1oddjb5\": ix(visible ? \"block\" : \"none\"),\n      \"--_1ea5ebz\": ix(width, \"px\"),\n      \"--_roksyz\": ix(height, \"px\")\n    }\n  }));\n};\nfunction NodePicker() {\n  var setTabIndex = useSetAtom(devToolTabIndexAtom);\n  var _useNodePicker = useNodePicker(),\n    _useNodePicker2 = _slicedToArray(_useNodePicker, 2),\n    nodePicker = _useNodePicker2[0],\n    nodePickerApi = _useNodePicker2[1];\n  var handleMouseMove = React.useCallback(function (e) {\n    nodePickerApi.updatePosition(e.target);\n  }, [nodePickerApi]);\n  var handleNodeClick = React.useCallback(function (e) {\n    e.preventDefault();\n    nodePickerApi.select(e.target);\n    setTabIndex(\"state\");\n  }, [nodePickerApi]);\n  React.useEffect(function () {\n    var active = nodePicker.active;\n    if (!active) return;\n    document.addEventListener(\"mousemove\", handleMouseMove);\n    document.addEventListener(\"click\", handleNodeClick);\n    document.addEventListener(\"keydown\", nodePickerApi.deactivate);\n    return function () {\n      document.removeEventListener(\"mousemove\", handleMouseMove);\n      document.removeEventListener(\"click\", handleNodeClick);\n      document.removeEventListener(\"keydown\", nodePickerApi.deactivate);\n    };\n  }, [handleMouseMove, handleNodeClick, nodePickerApi, nodePicker.active]);\n  return /*#__PURE__*/React.createElement(NodePickerHighlight, {\n    top: nodePicker.top,\n    left: nodePicker.left,\n    visible: Boolean(nodePicker.top && nodePicker.left),\n    width: nodePicker.width,\n    height: nodePicker.height\n  });\n}\nvar NodePickerTrigger = function NodePickerTrigger(_ref2) {\n  var children = _ref2.children,\n    isActive = _ref2.isActive,\n    onClick = _ref2.onClick;\n  return /*#__PURE__*/React.createElement(CC, null, /*#__PURE__*/React.createElement(CS, null, [_12, _, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24]), /*#__PURE__*/React.createElement(\"button\", {\n    onClick: onClick,\n    className: ax([\"_r06hglyw _kqswstnw _1xi21y44 _154ismyl _1bsb1tcg _4t3i1tcg _19itglyw _2rko1l7b _11q71d4i _1lrwmp9v _12veglyw _ouxl1qre _irr34135 _d0altlke\"]),\n    style: {\n      \"--_1rzmv8e\": ix(isActive ? theme.main : theme.main60)\n    }\n  }, children));\n};\nexport { NodePicker, NodePickerTrigger };","/* save-snapshot-button.tsx generated by @compiled/babel-plugin v0.17.1 */\nimport { ax, ix, CC, CS } from \"@compiled/react/runtime\";\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nimport React from \"react\";\nimport { useAtomValue } from \"jotai\";\nimport theme from \"../theme\";\nimport { useSnapshots } from \"../state/snapshots\";\nimport { editorStateAtom } from \"../state/editor-state\";\nvar _20 = \"._d0altlke:hover{cursor:pointer}\";\nvar _19 = \"._irr34135:hover{background-color:rgba(203,166,247,.8)}\";\nvar _18 = \"._19itglyw{border:none}\";\nvar _17 = \"._2rko1l7b{border-radius:3px}\";\nvar _16 = \"._ouxl1qre{background-position:50% 50%}\";\nvar _15 = \"._12veglyw{background-repeat:none}\";\nvar _14 = \"._1lrwmp9v{background-size:20px 20px}\";\nvar _13 = \"._4t3i1tcg{height:24px}\";\nvar _12 = \"._19bvi2wt{padding-left:6px}\";\nvar _11 = \"._n3tdidpf{padding-bottom:0}\";\nvar _10 = \"._u5f3i2wt{padding-right:6px}\";\nvar _9 = \"._ca0qidpf{padding-top:0}\";\nvar _8 = \"._vwz410yn{line-height:25px}\";\nvar _7 = \"._1wyb1crf{font-size:9pt}\";\nvar _6 = \"._bfhk1emw{background-color:rgba(203,166,247,.6)}\";\nvar _5 = \"._syazu67f{color:#fff}\";\nvar _4 = \"._154ismyl{top:-28px}\";\nvar _3 = \"._1xi2zwfg{right:2pc}\";\nvar _2 = \"._kqswstnw{position:absolute}\";\nvar _ = \"._r06hglyw{-webkit-appearance:none;-moz-appearance:none;appearance:none}\";\nvar saveSnapshotButtonStyles = null;\nvar SaveSnapshotButton = function SaveSnapshotButton(_ref) {\n  var children = _ref.children,\n    onClick = _ref.onClick;\n  return /*#__PURE__*/React.createElement(CC, null, /*#__PURE__*/React.createElement(CS, null, [_, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20]), /*#__PURE__*/React.createElement(\"button\", {\n    onClick: onClick,\n    className: ax([\"_r06hglyw _kqswstnw _1xi2zwfg _154ismyl _syazu67f _bfhk1emw _1wyb1crf _vwz410yn _ca0qidpf _u5f3i2wt _n3tdidpf _19bvi2wt _4t3i1tcg _1lrwmp9v _12veglyw _ouxl1qre _2rko1l7b _19itglyw _irr34135 _d0altlke\"])\n  }, children));\n};\nexport default function SaveSnapshot() {\n  var _useSnapshots = useSnapshots(),\n    _useSnapshots2 = _slicedToArray(_useSnapshots, 2),\n    snapshotsDispatch = _useSnapshots2[1];\n  var editorState = useAtomValue(editorStateAtom);\n  var handleClick = React.useCallback(function () {\n    var snapshotName = prompt(\"Enter snapshot name\", \"\" + Date.now());\n    if (!snapshotName || !editorState) return;\n    var snapshot = {\n      name: snapshotName,\n      timestamp: Date.now(),\n      snapshot: editorState.doc.toJSON()\n    };\n    snapshotsDispatch({\n      type: \"save\",\n      payload: {\n        snapshot: snapshot\n      }\n    });\n  }, [editorState]);\n  return /*#__PURE__*/React.createElement(SaveSnapshotButton, {\n    onClick: handleClick\n  }, \"Save snapshots\");\n}","/* dev-tools-expanded.tsx generated by @compiled/babel-plugin v0.17.1 */\nimport { ax, ix, CC, CS } from \"@compiled/react/runtime\";\nvar _19 = \"._1wybw1gv{font-size:13px}\";\nvar _18 = \"._ect4ixyu{font-family:Helvetica Neue,Calibri Light,Roboto,sans-serif}\";\nvar _17 = \"._bfhk2l5j{background-color:#1e1e2e}\";\nvar _16 = \"._18m915vq{overflow-y:hidden}\";\nvar _15 = \"._1reo15vq{overflow-x:hidden}\";\nvar _14 = \"._4t3i1osq{height:100%}\";\nvar _13 = \"._1bsb1osq{width:100%}\";\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nimport React from \"react\";\nimport { Dock } from \"react-dock\";\nimport { Tab, Tabs, TabList, TabPanel } from \"./components/tabs\";\nimport { devToolsOpenedAtom, devToolsSizeAtom, devToolTabIndexAtom } from \"./state/global\";\nimport StateTab from \"./tabs/state\";\nimport HistoryTab from \"./tabs/history\";\nimport SchemaTab from \"./tabs/schema\";\nimport PluginsTab from \"./tabs/plugins\";\nimport StructureTab from \"./tabs/structure\";\nimport SnapshotsTab from \"./tabs/snapshots\";\nimport CSSReset from \"./components/css-reset\";\nimport { NodePicker, NodePickerTrigger } from \"./components/node-picker\";\nimport SaveSnapshotButton from \"./components/save-snapshot-button\";\nimport theme from \"./theme\";\nimport { useAtom, useAtomValue } from \"jotai\";\nimport { useNodePicker } from \"./state/node-picker\";\nvar _12 = \"._1hvw1o36:focus{outline-width:medium}\";\nvar _11 = \"._49pcglyw:focus{outline-style:none}\";\nvar _10 = \"._nt751r31:focus{outline-color:currentColor}\";\nvar _9 = \"._30l35y2n:hover{color:#cdd6f4}\";\nvar _8 = \"._irr33ch5:hover{background-color:rgba(205,214,244,.05)}\";\nvar _7 = \"._d0altlke:hover{cursor:pointer}\";\nvar _6 = \"._1wybf6fq{font-size:18px}\";\nvar _5 = \"._syaz4yqd{color:rgba(205,214,244,.6)}\";\nvar _4 = \"._1xi2idpf{right:0}\";\nvar _3 = \"._kqswstnw{position:absolute}\";\nvar _2 = \"._19itglyw{border:none}\";\nvar _ = \"._11q7glyw{background:none}\";\nvar CloseButton = function CloseButton(_ref) {\n  var children = _ref.children,\n    onClick = _ref.onClick;\n  return /*#__PURE__*/React.createElement(CC, null, /*#__PURE__*/React.createElement(CS, null, [_, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12]), /*#__PURE__*/React.createElement(\"button\", {\n    \"data-test-id\": \"__prosemirror_devtools_close_button__\",\n    onClick: onClick,\n    className: ax([\"_11q7glyw _19itglyw _kqswstnw _1xi2idpf _syaz4yqd _1wybf6fq _d0altlke _irr33ch5 _30l35y2n _nt751r31 _49pcglyw _1hvw1o36\"])\n  }, children));\n};\nexport default function DevToolsExpanded(_ref2) {\n  var rollbackHistory = _ref2.rollbackHistory;\n  var _useAtom = useAtom(devToolsOpenedAtom),\n    _useAtom2 = _slicedToArray(_useAtom, 2),\n    isOpen = _useAtom2[0],\n    setIsOpen = _useAtom2[1];\n  var defaultSize = useAtomValue(devToolsSizeAtom);\n  var _useAtom3 = useAtom(devToolTabIndexAtom),\n    _useAtom4 = _slicedToArray(_useAtom3, 2),\n    tabIndex = _useAtom4[0],\n    setTabIndex = _useAtom4[1];\n  var updateBodyMargin = React.useCallback(function (devToolsSize) {\n    var size = devToolsSize * window.innerHeight;\n    document.querySelector(\"html\").style.marginBottom = \"\".concat(size, \"px\");\n  }, []);\n  var _useNodePicker = useNodePicker(),\n    _useNodePicker2 = _slicedToArray(_useNodePicker, 2),\n    nodePicker = _useNodePicker2[0],\n    nodePickerAPI = _useNodePicker2[1];\n  var toggleOpen = React.useCallback(function () {\n    setIsOpen(!isOpen);\n  }, [isOpen]);\n  var renderTab = React.useCallback(function (_ref3) {\n    var index = _ref3.index;\n    switch (index) {\n      case \"state\":\n        return /*#__PURE__*/React.createElement(StateTab, null);\n      case \"history\":\n        return /*#__PURE__*/React.createElement(HistoryTab, {\n          rollbackHistory: rollbackHistory\n        });\n      case \"plugins\":\n        return /*#__PURE__*/React.createElement(PluginsTab, null);\n      case \"schema\":\n        return /*#__PURE__*/React.createElement(SchemaTab, null);\n      case \"structure\":\n        return /*#__PURE__*/React.createElement(StructureTab, null);\n      case \"snapshots\":\n        return /*#__PURE__*/React.createElement(SnapshotsTab, null);\n      default:\n        return /*#__PURE__*/React.createElement(StateTab, null);\n    }\n  }, [rollbackHistory]);\n  var renderDockContent = React.useCallback(function () {\n    return /*#__PURE__*/React.createElement(CC, null, /*#__PURE__*/React.createElement(CS, null, [_13, _14, _15, _16, _17, _18, _19]), /*#__PURE__*/React.createElement(\"div\", {\n      \"data-test-id\": \"__prosemirror_devtools_container__\",\n      className: ax([\"_1bsb1osq _4t3i1osq _1reo15vq _18m915vq _bfhk2l5j _ect4ixyu _1wybw1gv\"])\n    }, /*#__PURE__*/React.createElement(CloseButton, {\n      onClick: toggleOpen\n    }, \"\\xD7\"), /*#__PURE__*/React.createElement(NodePickerTrigger, {\n      onClick: nodePickerAPI.activate,\n      isActive: nodePicker.active\n    }), /*#__PURE__*/React.createElement(SaveSnapshotButton, null), /*#__PURE__*/React.createElement(Tabs, {\n      onSelect: setTabIndex,\n      selectedIndex: tabIndex\n    }, /*#__PURE__*/React.createElement(TabList, null, /*#__PURE__*/React.createElement(Tab, {\n      index: \"state\"\n    }, \"State\"), /*#__PURE__*/React.createElement(Tab, {\n      index: \"history\"\n    }, \"History\"), /*#__PURE__*/React.createElement(Tab, {\n      index: \"plugins\"\n    }, \"Plugins\"), /*#__PURE__*/React.createElement(Tab, {\n      index: \"schema\"\n    }, \"Schema\"), /*#__PURE__*/React.createElement(Tab, {\n      index: \"structure\"\n    }, \"Structure\"), /*#__PURE__*/React.createElement(Tab, {\n      index: \"snapshots\"\n    }, \"Snapshots\")), /*#__PURE__*/React.createElement(TabPanel, null, renderTab))));\n  }, [nodePicker, nodePickerAPI, tabIndex, isOpen, renderTab]);\n  return /*#__PURE__*/React.createElement(CSSReset, null, /*#__PURE__*/React.createElement(NodePicker, null), /*#__PURE__*/React.createElement(Dock, {\n    position: \"bottom\",\n    dimMode: \"none\",\n    isVisible: true,\n    defaultSize: defaultSize,\n    onSizeChange: updateBodyMargin,\n    zIndex: 1,\n    fluid: true,\n    duration: 0\n  }, renderDockContent));\n}","import React from \"react\";\nexport function useResizeDocument(isOpen, defaultSize) {\n  React.useEffect(function () {\n    if (!isOpen) {\n      document.querySelector(\"html\").style.marginBottom = \"\";\n    } else {\n      var size = defaultSize * window.innerHeight;\n      document.querySelector(\"html\").style.marginBottom = \"\".concat(size, \"px\");\n    }\n  }, [defaultSize, isOpen]);\n}","export default function subscribeOnUpdates(editorView, callback) {\n  // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n  // @ts-expect-error\n  var maybeDispatchTransaction = editorView._props.dispatchTransaction;\n  var dispatch = (maybeDispatchTransaction || editorView.dispatch).bind(editorView);\n  var handler = function handler(tr) {\n    var oldState = editorView.state;\n    dispatch(tr);\n    callback(tr, oldState, editorView.state);\n  };\n\n  // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n  // @ts-expect-error\n  if (editorView._props.dispatchTransaction) {\n    // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n    // @ts-expect-error\n    editorView._props.dispatchTransaction = handler;\n  } else {\n    editorView.dispatch = handler;\n  }\n}","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nexport var IdleScheduler = /*#__PURE__*/function () {\n  function IdleScheduler() {\n    _classCallCheck(this, IdleScheduler);\n    _defineProperty(this, \"task\", undefined);\n  }\n  _createClass(IdleScheduler, [{\n    key: \"request\",\n    value: function request() {\n      this.cancel();\n      var request = window.requestIdleCallback || window.requestAnimationFrame;\n      return new Promise(function (resolve) {\n        return request(resolve);\n      });\n    }\n  }, {\n    key: \"cancel\",\n    value: function cancel() {\n      var cancel = window.cancelIdleCallack || window.cancelAnimationFrame;\n      if (this.task) {\n        cancel(this.task);\n      }\n    }\n  }]);\n  return IdleScheduler;\n}();","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; }, $Symbol = \"function\" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || \"@@iterator\", asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\", toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, \"\"); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return defineProperty(generator, \"_invoke\", { value: makeInvokeMethod(innerFn, self, context) }), generator; } function tryCatch(fn, obj, arg) { try { return { type: \"normal\", arg: fn.call(obj, arg) }; } catch (err) { return { type: \"throw\", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { [\"next\", \"throw\", \"return\"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if (\"throw\" !== record.type) { var result = record.arg, value = result.value; return value && \"object\" == _typeof(value) && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke(\"next\", value, resolve, reject); }, function (err) { invoke(\"throw\", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke(\"throw\", error, resolve, reject); }); } reject(record.arg); } var previousPromise; defineProperty(this, \"_invoke\", { value: function value(method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(innerFn, self, context) { var state = \"suspendedStart\"; return function (method, arg) { if (\"executing\" === state) throw new Error(\"Generator is already running\"); if (\"completed\" === state) { if (\"throw\" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) { if (\"suspendedStart\" === state) throw state = \"completed\", context.arg; context.dispatchException(context.arg); } else \"return\" === context.method && context.abrupt(\"return\", context.arg); state = \"executing\"; var record = tryCatch(innerFn, self, context); if (\"normal\" === record.type) { if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg); } }; } function maybeInvokeDelegate(delegate, context) { var method = delegate.iterator[context.method]; if (undefined === method) { if (context.delegate = null, \"throw\" === context.method) { if (delegate.iterator[\"return\"] && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method)) return ContinueSentinel; context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a 'throw' method\"); } return ContinueSentinel; } var record = tryCatch(method, delegate.iterator, context.arg); if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = \"normal\", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: \"root\" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if (\"function\" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) { if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; } return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), defineProperty(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) { var ctor = \"function\" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, \"toString\", function () { return \"[object Generator]\"; }), exports.keys = function (val) { var object = Object(val), keys = []; for (var key in object) { keys.push(key); } return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) { \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); } }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if (\"throw\" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if (\"root\" === entry.tryLoc) return handle(\"end\"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, \"catchLoc\"), hasFinally = hasOwn.call(entry, \"finallyLoc\"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error(\"try statement without catch or finally\"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if (\"throw\" === record.type) throw record.arg; return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, \"catch\": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if (\"throw\" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n// @ts-expect-error package doesn't provide types\nimport nanoid from \"nanoid\";\nimport { IdleScheduler } from \"./idle-scheduler\";\nexport var JsonDiffWorker = /*#__PURE__*/function () {\n  function JsonDiffWorker(worker) {\n    var _this = this;\n    _classCallCheck(this, JsonDiffWorker);\n    _defineProperty(this, \"queue\", new Map());\n    _defineProperty(this, \"scheduler\", new IdleScheduler());\n    _defineProperty(this, \"worker\", void 0);\n    this.worker = worker;\n    this.worker.addEventListener(\"message\", function (e) {\n      var deferred = _this.queue.get(e.data.id);\n      if (deferred) {\n        _this.queue[\"delete\"](e.data.id);\n        deferred.resolve(e.data.returns);\n      }\n    });\n  }\n  _createClass(JsonDiffWorker, [{\n    key: \"diff\",\n    value: function () {\n      var _diff = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(input) {\n        var id, deferred;\n        return _regeneratorRuntime().wrap(function _callee$(_context) {\n          while (1) {\n            switch (_context.prev = _context.next) {\n              case 0:\n                _context.next = 2;\n                return this.scheduler.request();\n              case 2:\n                id = nanoid();\n                deferred = createDeferrable();\n                this.queue.set(id, deferred);\n                this.worker.postMessage({\n                  method: \"diff\",\n                  id: id,\n                  args: [input]\n                });\n                return _context.abrupt(\"return\", deferred);\n              case 7:\n              case \"end\":\n                return _context.stop();\n            }\n          }\n        }, _callee, this);\n      }));\n      function diff(_x) {\n        return _diff.apply(this, arguments);\n      }\n      return diff;\n    }()\n  }]);\n  return JsonDiffWorker;\n}();\nfunction createDeferrable() {\n  var r;\n  var p = new Promise(function (resolve) {\n    r = resolve;\n  });\n  p.resolve = function () {\n    return r.apply(void 0, arguments);\n  };\n  return p;\n}","","(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('./empty')) :\n\ttypeof define === 'function' && define.amd ? define(['exports', './empty'], factory) :\n\t(factory((global.jsondiffpatch = {}),global.chalk));\n}(this, (function (exports,chalk) { 'use strict';\n\nchalk = chalk && chalk.hasOwnProperty('default') ? chalk['default'] : chalk;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n  return typeof obj;\n} : function (obj) {\n  return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\n\n\n\n\n\n\n\n\n\n\nvar classCallCheck = function (instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n};\n\nvar createClass = function () {\n  function defineProperties(target, props) {\n    for (var i = 0; i < props.length; i++) {\n      var descriptor = props[i];\n      descriptor.enumerable = descriptor.enumerable || false;\n      descriptor.configurable = true;\n      if (\"value\" in descriptor) descriptor.writable = true;\n      Object.defineProperty(target, descriptor.key, descriptor);\n    }\n  }\n\n  return function (Constructor, protoProps, staticProps) {\n    if (protoProps) defineProperties(Constructor.prototype, protoProps);\n    if (staticProps) defineProperties(Constructor, staticProps);\n    return Constructor;\n  };\n}();\n\n\n\n\n\n\n\nvar get = function get(object, property, receiver) {\n  if (object === null) object = Function.prototype;\n  var desc = Object.getOwnPropertyDescriptor(object, property);\n\n  if (desc === undefined) {\n    var parent = Object.getPrototypeOf(object);\n\n    if (parent === null) {\n      return undefined;\n    } else {\n      return get(parent, property, receiver);\n    }\n  } else if (\"value\" in desc) {\n    return desc.value;\n  } else {\n    var getter = desc.get;\n\n    if (getter === undefined) {\n      return undefined;\n    }\n\n    return getter.call(receiver);\n  }\n};\n\nvar inherits = function (subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n  }\n\n  subClass.prototype = Object.create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      enumerable: false,\n      writable: true,\n      configurable: true\n    }\n  });\n  if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\n\n\n\n\n\n\n\n\n\n\nvar possibleConstructorReturn = function (self, call) {\n  if (!self) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\n\n\n\n\nvar slicedToArray = function () {\n  function sliceIterator(arr, i) {\n    var _arr = [];\n    var _n = true;\n    var _d = false;\n    var _e = undefined;\n\n    try {\n      for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n        _arr.push(_s.value);\n\n        if (i && _arr.length === i) break;\n      }\n    } catch (err) {\n      _d = true;\n      _e = err;\n    } finally {\n      try {\n        if (!_n && _i[\"return\"]) _i[\"return\"]();\n      } finally {\n        if (_d) throw _e;\n      }\n    }\n\n    return _arr;\n  }\n\n  return function (arr, i) {\n    if (Array.isArray(arr)) {\n      return arr;\n    } else if (Symbol.iterator in Object(arr)) {\n      return sliceIterator(arr, i);\n    } else {\n      throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n    }\n  };\n}();\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar toConsumableArray = function (arr) {\n  if (Array.isArray(arr)) {\n    for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n    return arr2;\n  } else {\n    return Array.from(arr);\n  }\n};\n\nvar Processor = function () {\n  function Processor(options) {\n    classCallCheck(this, Processor);\n\n    this.selfOptions = options || {};\n    this.pipes = {};\n  }\n\n  createClass(Processor, [{\n    key: 'options',\n    value: function options(_options) {\n      if (_options) {\n        this.selfOptions = _options;\n      }\n      return this.selfOptions;\n    }\n  }, {\n    key: 'pipe',\n    value: function pipe(name, pipeArg) {\n      var pipe = pipeArg;\n      if (typeof name === 'string') {\n        if (typeof pipe === 'undefined') {\n          return this.pipes[name];\n        } else {\n          this.pipes[name] = pipe;\n        }\n      }\n      if (name && name.name) {\n        pipe = name;\n        if (pipe.processor === this) {\n          return pipe;\n        }\n        this.pipes[pipe.name] = pipe;\n      }\n      pipe.processor = this;\n      return pipe;\n    }\n  }, {\n    key: 'process',\n    value: function process(input, pipe) {\n      var context = input;\n      context.options = this.options();\n      var nextPipe = pipe || input.pipe || 'default';\n      var lastPipe = void 0;\n      var lastContext = void 0;\n      while (nextPipe) {\n        if (typeof context.nextAfterChildren !== 'undefined') {\n          // children processed and coming back to parent\n          context.next = context.nextAfterChildren;\n          context.nextAfterChildren = null;\n        }\n\n        if (typeof nextPipe === 'string') {\n          nextPipe = this.pipe(nextPipe);\n        }\n        nextPipe.process(context);\n        lastContext = context;\n        lastPipe = nextPipe;\n        nextPipe = null;\n        if (context) {\n          if (context.next) {\n            context = context.next;\n            nextPipe = lastContext.nextPipe || context.pipe || lastPipe;\n          }\n        }\n      }\n      return context.hasResult ? context.result : undefined;\n    }\n  }]);\n  return Processor;\n}();\n\nvar Pipe = function () {\n  function Pipe(name) {\n    classCallCheck(this, Pipe);\n\n    this.name = name;\n    this.filters = [];\n  }\n\n  createClass(Pipe, [{\n    key: 'process',\n    value: function process(input) {\n      if (!this.processor) {\n        throw new Error('add this pipe to a processor before using it');\n      }\n      var debug = this.debug;\n      var length = this.filters.length;\n      var context = input;\n      for (var index = 0; index < length; index++) {\n        var filter = this.filters[index];\n        if (debug) {\n          this.log('filter: ' + filter.filterName);\n        }\n        filter(context);\n        if ((typeof context === 'undefined' ? 'undefined' : _typeof(context)) === 'object' && context.exiting) {\n          context.exiting = false;\n          break;\n        }\n      }\n      if (!context.next && this.resultCheck) {\n        this.resultCheck(context);\n      }\n    }\n  }, {\n    key: 'log',\n    value: function log(msg) {\n      console.log('[jsondiffpatch] ' + this.name + ' pipe, ' + msg);\n    }\n  }, {\n    key: 'append',\n    value: function append() {\n      var _filters;\n\n      (_filters = this.filters).push.apply(_filters, arguments);\n      return this;\n    }\n  }, {\n    key: 'prepend',\n    value: function prepend() {\n      var _filters2;\n\n      (_filters2 = this.filters).unshift.apply(_filters2, arguments);\n      return this;\n    }\n  }, {\n    key: 'indexOf',\n    value: function indexOf(filterName) {\n      if (!filterName) {\n        throw new Error('a filter name is required');\n      }\n      for (var index = 0; index < this.filters.length; index++) {\n        var filter = this.filters[index];\n        if (filter.filterName === filterName) {\n          return index;\n        }\n      }\n      throw new Error('filter not found: ' + filterName);\n    }\n  }, {\n    key: 'list',\n    value: function list() {\n      return this.filters.map(function (f) {\n        return f.filterName;\n      });\n    }\n  }, {\n    key: 'after',\n    value: function after(filterName) {\n      var index = this.indexOf(filterName);\n      var params = Array.prototype.slice.call(arguments, 1);\n      if (!params.length) {\n        throw new Error('a filter is required');\n      }\n      params.unshift(index + 1, 0);\n      Array.prototype.splice.apply(this.filters, params);\n      return this;\n    }\n  }, {\n    key: 'before',\n    value: function before(filterName) {\n      var index = this.indexOf(filterName);\n      var params = Array.prototype.slice.call(arguments, 1);\n      if (!params.length) {\n        throw new Error('a filter is required');\n      }\n      params.unshift(index, 0);\n      Array.prototype.splice.apply(this.filters, params);\n      return this;\n    }\n  }, {\n    key: 'replace',\n    value: function replace(filterName) {\n      var index = this.indexOf(filterName);\n      var params = Array.prototype.slice.call(arguments, 1);\n      if (!params.length) {\n        throw new Error('a filter is required');\n      }\n      params.unshift(index, 1);\n      Array.prototype.splice.apply(this.filters, params);\n      return this;\n    }\n  }, {\n    key: 'remove',\n    value: function remove(filterName) {\n      var index = this.indexOf(filterName);\n      this.filters.splice(index, 1);\n      return this;\n    }\n  }, {\n    key: 'clear',\n    value: function clear() {\n      this.filters.length = 0;\n      return this;\n    }\n  }, {\n    key: 'shouldHaveResult',\n    value: function shouldHaveResult(should) {\n      if (should === false) {\n        this.resultCheck = null;\n        return;\n      }\n      if (this.resultCheck) {\n        return;\n      }\n      var pipe = this;\n      this.resultCheck = function (context) {\n        if (!context.hasResult) {\n          console.log(context);\n          var error = new Error(pipe.name + ' failed');\n          error.noResult = true;\n          throw error;\n        }\n      };\n      return this;\n    }\n  }]);\n  return Pipe;\n}();\n\nvar Context = function () {\n  function Context() {\n    classCallCheck(this, Context);\n  }\n\n  createClass(Context, [{\n    key: 'setResult',\n    value: function setResult(result) {\n      this.result = result;\n      this.hasResult = true;\n      return this;\n    }\n  }, {\n    key: 'exit',\n    value: function exit() {\n      this.exiting = true;\n      return this;\n    }\n  }, {\n    key: 'switchTo',\n    value: function switchTo(next, pipe) {\n      if (typeof next === 'string' || next instanceof Pipe) {\n        this.nextPipe = next;\n      } else {\n        this.next = next;\n        if (pipe) {\n          this.nextPipe = pipe;\n        }\n      }\n      return this;\n    }\n  }, {\n    key: 'push',\n    value: function push(child, name) {\n      child.parent = this;\n      if (typeof name !== 'undefined') {\n        child.childName = name;\n      }\n      child.root = this.root || this;\n      child.options = child.options || this.options;\n      if (!this.children) {\n        this.children = [child];\n        this.nextAfterChildren = this.next || null;\n        this.next = child;\n      } else {\n        this.children[this.children.length - 1].next = child;\n        this.children.push(child);\n      }\n      child.next = this;\n      return this;\n    }\n  }]);\n  return Context;\n}();\n\nvar isArray = typeof Array.isArray === 'function' ? Array.isArray : function (a) {\n  return a instanceof Array;\n};\n\nfunction cloneRegExp(re) {\n  var regexMatch = /^\\/(.*)\\/([gimyu]*)$/.exec(re.toString());\n  return new RegExp(regexMatch[1], regexMatch[2]);\n}\n\nfunction clone(arg) {\n  if ((typeof arg === 'undefined' ? 'undefined' : _typeof(arg)) !== 'object') {\n    return arg;\n  }\n  if (arg === null) {\n    return null;\n  }\n  if (isArray(arg)) {\n    return arg.map(clone);\n  }\n  if (arg instanceof Date) {\n    return new Date(arg.getTime());\n  }\n  if (arg instanceof RegExp) {\n    return cloneRegExp(arg);\n  }\n  var cloned = {};\n  for (var name in arg) {\n    if (Object.prototype.hasOwnProperty.call(arg, name)) {\n      cloned[name] = clone(arg[name]);\n    }\n  }\n  return cloned;\n}\n\nvar DiffContext = function (_Context) {\n  inherits(DiffContext, _Context);\n\n  function DiffContext(left, right) {\n    classCallCheck(this, DiffContext);\n\n    var _this = possibleConstructorReturn(this, (DiffContext.__proto__ || Object.getPrototypeOf(DiffContext)).call(this));\n\n    _this.left = left;\n    _this.right = right;\n    _this.pipe = 'diff';\n    return _this;\n  }\n\n  createClass(DiffContext, [{\n    key: 'setResult',\n    value: function setResult(result) {\n      if (this.options.cloneDiffValues && (typeof result === 'undefined' ? 'undefined' : _typeof(result)) === 'object') {\n        var clone$$1 = typeof this.options.cloneDiffValues === 'function' ? this.options.cloneDiffValues : clone;\n        if (_typeof(result[0]) === 'object') {\n          result[0] = clone$$1(result[0]);\n        }\n        if (_typeof(result[1]) === 'object') {\n          result[1] = clone$$1(result[1]);\n        }\n      }\n      return Context.prototype.setResult.apply(this, arguments);\n    }\n  }]);\n  return DiffContext;\n}(Context);\n\nvar PatchContext = function (_Context) {\n  inherits(PatchContext, _Context);\n\n  function PatchContext(left, delta) {\n    classCallCheck(this, PatchContext);\n\n    var _this = possibleConstructorReturn(this, (PatchContext.__proto__ || Object.getPrototypeOf(PatchContext)).call(this));\n\n    _this.left = left;\n    _this.delta = delta;\n    _this.pipe = 'patch';\n    return _this;\n  }\n\n  return PatchContext;\n}(Context);\n\nvar ReverseContext = function (_Context) {\n  inherits(ReverseContext, _Context);\n\n  function ReverseContext(delta) {\n    classCallCheck(this, ReverseContext);\n\n    var _this = possibleConstructorReturn(this, (ReverseContext.__proto__ || Object.getPrototypeOf(ReverseContext)).call(this));\n\n    _this.delta = delta;\n    _this.pipe = 'reverse';\n    return _this;\n  }\n\n  return ReverseContext;\n}(Context);\n\nvar isArray$1 = typeof Array.isArray === 'function' ? Array.isArray : function (a) {\n  return a instanceof Array;\n};\n\nvar diffFilter = function trivialMatchesDiffFilter(context) {\n  if (context.left === context.right) {\n    context.setResult(undefined).exit();\n    return;\n  }\n  if (typeof context.left === 'undefined') {\n    if (typeof context.right === 'function') {\n      throw new Error('functions are not supported');\n    }\n    context.setResult([context.right]).exit();\n    return;\n  }\n  if (typeof context.right === 'undefined') {\n    context.setResult([context.left, 0, 0]).exit();\n    return;\n  }\n  if (typeof context.left === 'function' || typeof context.right === 'function') {\n    throw new Error('functions are not supported');\n  }\n  context.leftType = context.left === null ? 'null' : _typeof(context.left);\n  context.rightType = context.right === null ? 'null' : _typeof(context.right);\n  if (context.leftType !== context.rightType) {\n    context.setResult([context.left, context.right]).exit();\n    return;\n  }\n  if (context.leftType === 'boolean' || context.leftType === 'number') {\n    context.setResult([context.left, context.right]).exit();\n    return;\n  }\n  if (context.leftType === 'object') {\n    context.leftIsArray = isArray$1(context.left);\n  }\n  if (context.rightType === 'object') {\n    context.rightIsArray = isArray$1(context.right);\n  }\n  if (context.leftIsArray !== context.rightIsArray) {\n    context.setResult([context.left, context.right]).exit();\n    return;\n  }\n\n  if (context.left instanceof RegExp) {\n    if (context.right instanceof RegExp) {\n      context.setResult([context.left.toString(), context.right.toString()]).exit();\n    } else {\n      context.setResult([context.left, context.right]).exit();\n    }\n  }\n};\ndiffFilter.filterName = 'trivial';\n\nvar patchFilter = function trivialMatchesPatchFilter(context) {\n  if (typeof context.delta === 'undefined') {\n    context.setResult(context.left).exit();\n    return;\n  }\n  context.nested = !isArray$1(context.delta);\n  if (context.nested) {\n    return;\n  }\n  if (context.delta.length === 1) {\n    context.setResult(context.delta[0]).exit();\n    return;\n  }\n  if (context.delta.length === 2) {\n    if (context.left instanceof RegExp) {\n      var regexArgs = /^\\/(.*)\\/([gimyu]+)$/.exec(context.delta[1]);\n      if (regexArgs) {\n        context.setResult(new RegExp(regexArgs[1], regexArgs[2])).exit();\n        return;\n      }\n    }\n    context.setResult(context.delta[1]).exit();\n    return;\n  }\n  if (context.delta.length === 3 && context.delta[2] === 0) {\n    context.setResult(undefined).exit();\n  }\n};\npatchFilter.filterName = 'trivial';\n\nvar reverseFilter = function trivialReferseFilter(context) {\n  if (typeof context.delta === 'undefined') {\n    context.setResult(context.delta).exit();\n    return;\n  }\n  context.nested = !isArray$1(context.delta);\n  if (context.nested) {\n    return;\n  }\n  if (context.delta.length === 1) {\n    context.setResult([context.delta[0], 0, 0]).exit();\n    return;\n  }\n  if (context.delta.length === 2) {\n    context.setResult([context.delta[1], context.delta[0]]).exit();\n    return;\n  }\n  if (context.delta.length === 3 && context.delta[2] === 0) {\n    context.setResult([context.delta[0]]).exit();\n  }\n};\nreverseFilter.filterName = 'trivial';\n\nfunction collectChildrenDiffFilter(context) {\n  if (!context || !context.children) {\n    return;\n  }\n  var length = context.children.length;\n  var child = void 0;\n  var result = context.result;\n  for (var index = 0; index < length; index++) {\n    child = context.children[index];\n    if (typeof child.result === 'undefined') {\n      continue;\n    }\n    result = result || {};\n    result[child.childName] = child.result;\n  }\n  if (result && context.leftIsArray) {\n    result._t = 'a';\n  }\n  context.setResult(result).exit();\n}\ncollectChildrenDiffFilter.filterName = 'collectChildren';\n\nfunction objectsDiffFilter(context) {\n  if (context.leftIsArray || context.leftType !== 'object') {\n    return;\n  }\n\n  var name = void 0;\n  var child = void 0;\n  var propertyFilter = context.options.propertyFilter;\n  for (name in context.left) {\n    if (!Object.prototype.hasOwnProperty.call(context.left, name)) {\n      continue;\n    }\n    if (propertyFilter && !propertyFilter(name, context)) {\n      continue;\n    }\n    child = new DiffContext(context.left[name], context.right[name]);\n    context.push(child, name);\n  }\n  for (name in context.right) {\n    if (!Object.prototype.hasOwnProperty.call(context.right, name)) {\n      continue;\n    }\n    if (propertyFilter && !propertyFilter(name, context)) {\n      continue;\n    }\n    if (typeof context.left[name] === 'undefined') {\n      child = new DiffContext(undefined, context.right[name]);\n      context.push(child, name);\n    }\n  }\n\n  if (!context.children || context.children.length === 0) {\n    context.setResult(undefined).exit();\n    return;\n  }\n  context.exit();\n}\nobjectsDiffFilter.filterName = 'objects';\n\nvar patchFilter$1 = function nestedPatchFilter(context) {\n  if (!context.nested) {\n    return;\n  }\n  if (context.delta._t) {\n    return;\n  }\n  var name = void 0;\n  var child = void 0;\n  for (name in context.delta) {\n    child = new PatchContext(context.left[name], context.delta[name]);\n    context.push(child, name);\n  }\n  context.exit();\n};\npatchFilter$1.filterName = 'objects';\n\nvar collectChildrenPatchFilter = function collectChildrenPatchFilter(context) {\n  if (!context || !context.children) {\n    return;\n  }\n  if (context.delta._t) {\n    return;\n  }\n  var length = context.children.length;\n  var child = void 0;\n  for (var index = 0; index < length; index++) {\n    child = context.children[index];\n    if (Object.prototype.hasOwnProperty.call(context.left, child.childName) && child.result === undefined) {\n      delete context.left[child.childName];\n    } else if (context.left[child.childName] !== child.result) {\n      context.left[child.childName] = child.result;\n    }\n  }\n  context.setResult(context.left).exit();\n};\ncollectChildrenPatchFilter.filterName = 'collectChildren';\n\nvar reverseFilter$1 = function nestedReverseFilter(context) {\n  if (!context.nested) {\n    return;\n  }\n  if (context.delta._t) {\n    return;\n  }\n  var name = void 0;\n  var child = void 0;\n  for (name in context.delta) {\n    child = new ReverseContext(context.delta[name]);\n    context.push(child, name);\n  }\n  context.exit();\n};\nreverseFilter$1.filterName = 'objects';\n\nfunction collectChildrenReverseFilter(context) {\n  if (!context || !context.children) {\n    return;\n  }\n  if (context.delta._t) {\n    return;\n  }\n  var length = context.children.length;\n  var child = void 0;\n  var delta = {};\n  for (var index = 0; index < length; index++) {\n    child = context.children[index];\n    if (delta[child.childName] !== child.result) {\n      delta[child.childName] = child.result;\n    }\n  }\n  context.setResult(delta).exit();\n}\ncollectChildrenReverseFilter.filterName = 'collectChildren';\n\n/*\n\nLCS implementation that supports arrays or strings\n\nreference: http://en.wikipedia.org/wiki/Longest_common_subsequence_problem\n\n*/\n\nvar defaultMatch = function defaultMatch(array1, array2, index1, index2) {\n  return array1[index1] === array2[index2];\n};\n\nvar lengthMatrix = function lengthMatrix(array1, array2, match, context) {\n  var len1 = array1.length;\n  var len2 = array2.length;\n  var x = void 0,\n      y = void 0;\n\n  // initialize empty matrix of len1+1 x len2+1\n  var matrix = [len1 + 1];\n  for (x = 0; x < len1 + 1; x++) {\n    matrix[x] = [len2 + 1];\n    for (y = 0; y < len2 + 1; y++) {\n      matrix[x][y] = 0;\n    }\n  }\n  matrix.match = match;\n  // save sequence lengths for each coordinate\n  for (x = 1; x < len1 + 1; x++) {\n    for (y = 1; y < len2 + 1; y++) {\n      if (match(array1, array2, x - 1, y - 1, context)) {\n        matrix[x][y] = matrix[x - 1][y - 1] + 1;\n      } else {\n        matrix[x][y] = Math.max(matrix[x - 1][y], matrix[x][y - 1]);\n      }\n    }\n  }\n  return matrix;\n};\n\nvar backtrack = function backtrack(matrix, array1, array2, context) {\n  var index1 = array1.length;\n  var index2 = array2.length;\n  var subsequence = {\n    sequence: [],\n    indices1: [],\n    indices2: []\n  };\n\n  while (index1 !== 0 && index2 !== 0) {\n    var sameLetter = matrix.match(array1, array2, index1 - 1, index2 - 1, context);\n    if (sameLetter) {\n      subsequence.sequence.unshift(array1[index1 - 1]);\n      subsequence.indices1.unshift(index1 - 1);\n      subsequence.indices2.unshift(index2 - 1);\n      --index1;\n      --index2;\n    } else {\n      var valueAtMatrixAbove = matrix[index1][index2 - 1];\n      var valueAtMatrixLeft = matrix[index1 - 1][index2];\n      if (valueAtMatrixAbove > valueAtMatrixLeft) {\n        --index2;\n      } else {\n        --index1;\n      }\n    }\n  }\n  return subsequence;\n};\n\nvar get$1 = function get(array1, array2, match, context) {\n  var innerContext = context || {};\n  var matrix = lengthMatrix(array1, array2, match || defaultMatch, innerContext);\n  var result = backtrack(matrix, array1, array2, innerContext);\n  if (typeof array1 === 'string' && typeof array2 === 'string') {\n    result.sequence = result.sequence.join('');\n  }\n  return result;\n};\n\nvar lcs = {\n  get: get$1\n};\n\nvar ARRAY_MOVE = 3;\n\nvar isArray$2 = typeof Array.isArray === 'function' ? Array.isArray : function (a) {\n  return a instanceof Array;\n};\n\nvar arrayIndexOf = typeof Array.prototype.indexOf === 'function' ? function (array, item) {\n  return array.indexOf(item);\n} : function (array, item) {\n  var length = array.length;\n  for (var i = 0; i < length; i++) {\n    if (array[i] === item) {\n      return i;\n    }\n  }\n  return -1;\n};\n\nfunction arraysHaveMatchByRef(array1, array2, len1, len2) {\n  for (var index1 = 0; index1 < len1; index1++) {\n    var val1 = array1[index1];\n    for (var index2 = 0; index2 < len2; index2++) {\n      var val2 = array2[index2];\n      if (index1 !== index2 && val1 === val2) {\n        return true;\n      }\n    }\n  }\n}\n\nfunction matchItems(array1, array2, index1, index2, context) {\n  var value1 = array1[index1];\n  var value2 = array2[index2];\n  if (value1 === value2) {\n    return true;\n  }\n  if ((typeof value1 === 'undefined' ? 'undefined' : _typeof(value1)) !== 'object' || (typeof value2 === 'undefined' ? 'undefined' : _typeof(value2)) !== 'object') {\n    return false;\n  }\n  var objectHash = context.objectHash;\n  if (!objectHash) {\n    // no way to match objects was provided, try match by position\n    return context.matchByPosition && index1 === index2;\n  }\n  var hash1 = void 0;\n  var hash2 = void 0;\n  if (typeof index1 === 'number') {\n    context.hashCache1 = context.hashCache1 || [];\n    hash1 = context.hashCache1[index1];\n    if (typeof hash1 === 'undefined') {\n      context.hashCache1[index1] = hash1 = objectHash(value1, index1);\n    }\n  } else {\n    hash1 = objectHash(value1);\n  }\n  if (typeof hash1 === 'undefined') {\n    return false;\n  }\n  if (typeof index2 === 'number') {\n    context.hashCache2 = context.hashCache2 || [];\n    hash2 = context.hashCache2[index2];\n    if (typeof hash2 === 'undefined') {\n      context.hashCache2[index2] = hash2 = objectHash(value2, index2);\n    }\n  } else {\n    hash2 = objectHash(value2);\n  }\n  if (typeof hash2 === 'undefined') {\n    return false;\n  }\n  return hash1 === hash2;\n}\n\nvar diffFilter$1 = function arraysDiffFilter(context) {\n  if (!context.leftIsArray) {\n    return;\n  }\n\n  var matchContext = {\n    objectHash: context.options && context.options.objectHash,\n    matchByPosition: context.options && context.options.matchByPosition\n  };\n  var commonHead = 0;\n  var commonTail = 0;\n  var index = void 0;\n  var index1 = void 0;\n  var index2 = void 0;\n  var array1 = context.left;\n  var array2 = context.right;\n  var len1 = array1.length;\n  var len2 = array2.length;\n\n  var child = void 0;\n\n  if (len1 > 0 && len2 > 0 && !matchContext.objectHash && typeof matchContext.matchByPosition !== 'boolean') {\n    matchContext.matchByPosition = !arraysHaveMatchByRef(array1, array2, len1, len2);\n  }\n\n  // separate common head\n  while (commonHead < len1 && commonHead < len2 && matchItems(array1, array2, commonHead, commonHead, matchContext)) {\n    index = commonHead;\n    child = new DiffContext(context.left[index], context.right[index]);\n    context.push(child, index);\n    commonHead++;\n  }\n  // separate common tail\n  while (commonTail + commonHead < len1 && commonTail + commonHead < len2 && matchItems(array1, array2, len1 - 1 - commonTail, len2 - 1 - commonTail, matchContext)) {\n    index1 = len1 - 1 - commonTail;\n    index2 = len2 - 1 - commonTail;\n    child = new DiffContext(context.left[index1], context.right[index2]);\n    context.push(child, index2);\n    commonTail++;\n  }\n  var result = void 0;\n  if (commonHead + commonTail === len1) {\n    if (len1 === len2) {\n      // arrays are identical\n      context.setResult(undefined).exit();\n      return;\n    }\n    // trivial case, a block (1 or more consecutive items) was added\n    result = result || {\n      _t: 'a'\n    };\n    for (index = commonHead; index < len2 - commonTail; index++) {\n      result[index] = [array2[index]];\n    }\n    context.setResult(result).exit();\n    return;\n  }\n  if (commonHead + commonTail === len2) {\n    // trivial case, a block (1 or more consecutive items) was removed\n    result = result || {\n      _t: 'a'\n    };\n    for (index = commonHead; index < len1 - commonTail; index++) {\n      result['_' + index] = [array1[index], 0, 0];\n    }\n    context.setResult(result).exit();\n    return;\n  }\n  // reset hash cache\n  delete matchContext.hashCache1;\n  delete matchContext.hashCache2;\n\n  // diff is not trivial, find the LCS (Longest Common Subsequence)\n  var trimmed1 = array1.slice(commonHead, len1 - commonTail);\n  var trimmed2 = array2.slice(commonHead, len2 - commonTail);\n  var seq = lcs.get(trimmed1, trimmed2, matchItems, matchContext);\n  var removedItems = [];\n  result = result || {\n    _t: 'a'\n  };\n  for (index = commonHead; index < len1 - commonTail; index++) {\n    if (arrayIndexOf(seq.indices1, index - commonHead) < 0) {\n      // removed\n      result['_' + index] = [array1[index], 0, 0];\n      removedItems.push(index);\n    }\n  }\n\n  var detectMove = true;\n  if (context.options && context.options.arrays && context.options.arrays.detectMove === false) {\n    detectMove = false;\n  }\n  var includeValueOnMove = false;\n  if (context.options && context.options.arrays && context.options.arrays.includeValueOnMove) {\n    includeValueOnMove = true;\n  }\n\n  var removedItemsLength = removedItems.length;\n  for (index = commonHead; index < len2 - commonTail; index++) {\n    var indexOnArray2 = arrayIndexOf(seq.indices2, index - commonHead);\n    if (indexOnArray2 < 0) {\n      // added, try to match with a removed item and register as position move\n      var isMove = false;\n      if (detectMove && removedItemsLength > 0) {\n        for (var removeItemIndex1 = 0; removeItemIndex1 < removedItemsLength; removeItemIndex1++) {\n          index1 = removedItems[removeItemIndex1];\n          if (matchItems(trimmed1, trimmed2, index1 - commonHead, index - commonHead, matchContext)) {\n            // store position move as: [originalValue, newPosition, ARRAY_MOVE]\n            result['_' + index1].splice(1, 2, index, ARRAY_MOVE);\n            if (!includeValueOnMove) {\n              // don't include moved value on diff, to save bytes\n              result['_' + index1][0] = '';\n            }\n\n            index2 = index;\n            child = new DiffContext(context.left[index1], context.right[index2]);\n            context.push(child, index2);\n            removedItems.splice(removeItemIndex1, 1);\n            isMove = true;\n            break;\n          }\n        }\n      }\n      if (!isMove) {\n        // added\n        result[index] = [array2[index]];\n      }\n    } else {\n      // match, do inner diff\n      index1 = seq.indices1[indexOnArray2] + commonHead;\n      index2 = seq.indices2[indexOnArray2] + commonHead;\n      child = new DiffContext(context.left[index1], context.right[index2]);\n      context.push(child, index2);\n    }\n  }\n\n  context.setResult(result).exit();\n};\ndiffFilter$1.filterName = 'arrays';\n\nvar compare = {\n  numerically: function numerically(a, b) {\n    return a - b;\n  },\n  numericallyBy: function numericallyBy(name) {\n    return function (a, b) {\n      return a[name] - b[name];\n    };\n  }\n};\n\nvar patchFilter$2 = function nestedPatchFilter(context) {\n  if (!context.nested) {\n    return;\n  }\n  if (context.delta._t !== 'a') {\n    return;\n  }\n  var index = void 0;\n  var index1 = void 0;\n\n  var delta = context.delta;\n  var array = context.left;\n\n  // first, separate removals, insertions and modifications\n  var toRemove = [];\n  var toInsert = [];\n  var toModify = [];\n  for (index in delta) {\n    if (index !== '_t') {\n      if (index[0] === '_') {\n        // removed item from original array\n        if (delta[index][2] === 0 || delta[index][2] === ARRAY_MOVE) {\n          toRemove.push(parseInt(index.slice(1), 10));\n        } else {\n          throw new Error('only removal or move can be applied at original array indices,' + (' invalid diff type: ' + delta[index][2]));\n        }\n      } else {\n        if (delta[index].length === 1) {\n          // added item at new array\n          toInsert.push({\n            index: parseInt(index, 10),\n            value: delta[index][0]\n          });\n        } else {\n          // modified item at new array\n          toModify.push({\n            index: parseInt(index, 10),\n            delta: delta[index]\n          });\n        }\n      }\n    }\n  }\n\n  // remove items, in reverse order to avoid sawing our own floor\n  toRemove = toRemove.sort(compare.numerically);\n  for (index = toRemove.length - 1; index >= 0; index--) {\n    index1 = toRemove[index];\n    var indexDiff = delta['_' + index1];\n    var removedValue = array.splice(index1, 1)[0];\n    if (indexDiff[2] === ARRAY_MOVE) {\n      // reinsert later\n      toInsert.push({\n        index: indexDiff[1],\n        value: removedValue\n      });\n    }\n  }\n\n  // insert items, in reverse order to avoid moving our own floor\n  toInsert = toInsert.sort(compare.numericallyBy('index'));\n  var toInsertLength = toInsert.length;\n  for (index = 0; index < toInsertLength; index++) {\n    var insertion = toInsert[index];\n    array.splice(insertion.index, 0, insertion.value);\n  }\n\n  // apply modifications\n  var toModifyLength = toModify.length;\n  var child = void 0;\n  if (toModifyLength > 0) {\n    for (index = 0; index < toModifyLength; index++) {\n      var modification = toModify[index];\n      child = new PatchContext(context.left[modification.index], modification.delta);\n      context.push(child, modification.index);\n    }\n  }\n\n  if (!context.children) {\n    context.setResult(context.left).exit();\n    return;\n  }\n  context.exit();\n};\npatchFilter$2.filterName = 'arrays';\n\nvar collectChildrenPatchFilter$1 = function collectChildrenPatchFilter(context) {\n  if (!context || !context.children) {\n    return;\n  }\n  if (context.delta._t !== 'a') {\n    return;\n  }\n  var length = context.children.length;\n  var child = void 0;\n  for (var index = 0; index < length; index++) {\n    child = context.children[index];\n    context.left[child.childName] = child.result;\n  }\n  context.setResult(context.left).exit();\n};\ncollectChildrenPatchFilter$1.filterName = 'arraysCollectChildren';\n\nvar reverseFilter$2 = function arraysReverseFilter(context) {\n  if (!context.nested) {\n    if (context.delta[2] === ARRAY_MOVE) {\n      context.newName = '_' + context.delta[1];\n      context.setResult([context.delta[0], parseInt(context.childName.substr(1), 10), ARRAY_MOVE]).exit();\n    }\n    return;\n  }\n  if (context.delta._t !== 'a') {\n    return;\n  }\n  var name = void 0;\n  var child = void 0;\n  for (name in context.delta) {\n    if (name === '_t') {\n      continue;\n    }\n    child = new ReverseContext(context.delta[name]);\n    context.push(child, name);\n  }\n  context.exit();\n};\nreverseFilter$2.filterName = 'arrays';\n\nvar reverseArrayDeltaIndex = function reverseArrayDeltaIndex(delta, index, itemDelta) {\n  if (typeof index === 'string' && index[0] === '_') {\n    return parseInt(index.substr(1), 10);\n  } else if (isArray$2(itemDelta) && itemDelta[2] === 0) {\n    return '_' + index;\n  }\n\n  var reverseIndex = +index;\n  for (var deltaIndex in delta) {\n    var deltaItem = delta[deltaIndex];\n    if (isArray$2(deltaItem)) {\n      if (deltaItem[2] === ARRAY_MOVE) {\n        var moveFromIndex = parseInt(deltaIndex.substr(1), 10);\n        var moveToIndex = deltaItem[1];\n        if (moveToIndex === +index) {\n          return moveFromIndex;\n        }\n        if (moveFromIndex <= reverseIndex && moveToIndex > reverseIndex) {\n          reverseIndex++;\n        } else if (moveFromIndex >= reverseIndex && moveToIndex < reverseIndex) {\n          reverseIndex--;\n        }\n      } else if (deltaItem[2] === 0) {\n        var deleteIndex = parseInt(deltaIndex.substr(1), 10);\n        if (deleteIndex <= reverseIndex) {\n          reverseIndex++;\n        }\n      } else if (deltaItem.length === 1 && deltaIndex <= reverseIndex) {\n        reverseIndex--;\n      }\n    }\n  }\n\n  return reverseIndex;\n};\n\nfunction collectChildrenReverseFilter$1(context) {\n  if (!context || !context.children) {\n    return;\n  }\n  if (context.delta._t !== 'a') {\n    return;\n  }\n  var length = context.children.length;\n  var child = void 0;\n  var delta = {\n    _t: 'a'\n  };\n\n  for (var index = 0; index < length; index++) {\n    child = context.children[index];\n    var name = child.newName;\n    if (typeof name === 'undefined') {\n      name = reverseArrayDeltaIndex(context.delta, child.childName, child.result);\n    }\n    if (delta[name] !== child.result) {\n      delta[name] = child.result;\n    }\n  }\n  context.setResult(delta).exit();\n}\ncollectChildrenReverseFilter$1.filterName = 'arraysCollectChildren';\n\nvar diffFilter$2 = function datesDiffFilter(context) {\n  if (context.left instanceof Date) {\n    if (context.right instanceof Date) {\n      if (context.left.getTime() !== context.right.getTime()) {\n        context.setResult([context.left, context.right]);\n      } else {\n        context.setResult(undefined);\n      }\n    } else {\n      context.setResult([context.left, context.right]);\n    }\n    context.exit();\n  } else if (context.right instanceof Date) {\n    context.setResult([context.left, context.right]).exit();\n  }\n};\ndiffFilter$2.filterName = 'dates';\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nvar diffMatchPatch = createCommonjsModule(function (module) {\n/**\n * Diff Match and Patch\n * Copyright 2018 The diff-match-patch Authors.\n * https://github.com/google/diff-match-patch\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @fileoverview Computes the difference between two texts to create a patch.\n * Applies the patch onto another text, allowing for errors.\n * @author fraser@google.com (Neil Fraser)\n */\n\n/**\n * Class containing the diff, match and patch methods.\n * @constructor\n */\nfunction diff_match_patch() {\n\n  // Defaults.\n  // Redefine these in your program to override the defaults.\n\n  // Number of seconds to map a diff before giving up (0 for infinity).\n  this.Diff_Timeout = 1.0;\n  // Cost of an empty edit operation in terms of edit characters.\n  this.Diff_EditCost = 4;\n  // At what point is no match declared (0.0 = perfection, 1.0 = very loose).\n  this.Match_Threshold = 0.5;\n  // How far to search for a match (0 = exact location, 1000+ = broad match).\n  // A match this many characters away from the expected location will add\n  // 1.0 to the score (0.0 is a perfect match).\n  this.Match_Distance = 1000;\n  // When deleting a large block of text (over ~64 characters), how close do\n  // the contents have to be to match the expected contents. (0.0 = perfection,\n  // 1.0 = very loose).  Note that Match_Threshold controls how closely the\n  // end points of a delete need to match.\n  this.Patch_DeleteThreshold = 0.5;\n  // Chunk size for context length.\n  this.Patch_Margin = 4;\n\n  // The number of bits in an int.\n  this.Match_MaxBits = 32;\n}\n\n\n//  DIFF FUNCTIONS\n\n\n/**\n * The data structure representing a diff is an array of tuples:\n * [[DIFF_DELETE, 'Hello'], [DIFF_INSERT, 'Goodbye'], [DIFF_EQUAL, ' world.']]\n * which means: delete 'Hello', add 'Goodbye' and keep ' world.'\n */\nvar DIFF_DELETE = -1;\nvar DIFF_INSERT = 1;\nvar DIFF_EQUAL = 0;\n\n/** @typedef {{0: number, 1: string}} */\ndiff_match_patch.prototype.diff_main = function(text1, text2, opt_checklines,\n    opt_deadline) {\n  // Set a deadline by which time the diff must be complete.\n  if (typeof opt_deadline == 'undefined') {\n    if (this.Diff_Timeout <= 0) {\n      opt_deadline = Number.MAX_VALUE;\n    } else {\n      opt_deadline = (new Date).getTime() + this.Diff_Timeout * 1000;\n    }\n  }\n  var deadline = opt_deadline;\n\n  // Check for null inputs.\n  if (text1 == null || text2 == null) {\n    throw new Error('Null input. (diff_main)');\n  }\n\n  // Check for equality (speedup).\n  if (text1 == text2) {\n    if (text1) {\n      return [[DIFF_EQUAL, text1]];\n    }\n    return [];\n  }\n\n  if (typeof opt_checklines == 'undefined') {\n    opt_checklines = true;\n  }\n  var checklines = opt_checklines;\n\n  // Trim off common prefix (speedup).\n  var commonlength = this.diff_commonPrefix(text1, text2);\n  var commonprefix = text1.substring(0, commonlength);\n  text1 = text1.substring(commonlength);\n  text2 = text2.substring(commonlength);\n\n  // Trim off common suffix (speedup).\n  commonlength = this.diff_commonSuffix(text1, text2);\n  var commonsuffix = text1.substring(text1.length - commonlength);\n  text1 = text1.substring(0, text1.length - commonlength);\n  text2 = text2.substring(0, text2.length - commonlength);\n\n  // Compute the diff on the middle block.\n  var diffs = this.diff_compute_(text1, text2, checklines, deadline);\n\n  // Restore the prefix and suffix.\n  if (commonprefix) {\n    diffs.unshift([DIFF_EQUAL, commonprefix]);\n  }\n  if (commonsuffix) {\n    diffs.push([DIFF_EQUAL, commonsuffix]);\n  }\n  this.diff_cleanupMerge(diffs);\n  return diffs;\n};\n\n\n/**\n * Find the differences between two texts.  Assumes that the texts do not\n * have any common prefix or suffix.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {boolean} checklines Speedup flag.  If false, then don't run a\n *     line-level diff first to identify the changed areas.\n *     If true, then run a faster, slightly less optimal diff.\n * @param {number} deadline Time when the diff should be complete by.\n * @return {!Array.<!diff_match_patch.Diff>} Array of diff tuples.\n * @private\n */\ndiff_match_patch.prototype.diff_compute_ = function(text1, text2, checklines,\n    deadline) {\n  var diffs;\n\n  if (!text1) {\n    // Just add some text (speedup).\n    return [[DIFF_INSERT, text2]];\n  }\n\n  if (!text2) {\n    // Just delete some text (speedup).\n    return [[DIFF_DELETE, text1]];\n  }\n\n  var longtext = text1.length > text2.length ? text1 : text2;\n  var shorttext = text1.length > text2.length ? text2 : text1;\n  var i = longtext.indexOf(shorttext);\n  if (i != -1) {\n    // Shorter text is inside the longer text (speedup).\n    diffs = [[DIFF_INSERT, longtext.substring(0, i)],\n             [DIFF_EQUAL, shorttext],\n             [DIFF_INSERT, longtext.substring(i + shorttext.length)]];\n    // Swap insertions for deletions if diff is reversed.\n    if (text1.length > text2.length) {\n      diffs[0][0] = diffs[2][0] = DIFF_DELETE;\n    }\n    return diffs;\n  }\n\n  if (shorttext.length == 1) {\n    // Single character string.\n    // After the previous speedup, the character can't be an equality.\n    return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]];\n  }\n\n  // Check to see if the problem can be split in two.\n  var hm = this.diff_halfMatch_(text1, text2);\n  if (hm) {\n    // A half-match was found, sort out the return data.\n    var text1_a = hm[0];\n    var text1_b = hm[1];\n    var text2_a = hm[2];\n    var text2_b = hm[3];\n    var mid_common = hm[4];\n    // Send both pairs off for separate processing.\n    var diffs_a = this.diff_main(text1_a, text2_a, checklines, deadline);\n    var diffs_b = this.diff_main(text1_b, text2_b, checklines, deadline);\n    // Merge the results.\n    return diffs_a.concat([[DIFF_EQUAL, mid_common]], diffs_b);\n  }\n\n  if (checklines && text1.length > 100 && text2.length > 100) {\n    return this.diff_lineMode_(text1, text2, deadline);\n  }\n\n  return this.diff_bisect_(text1, text2, deadline);\n};\n\n\n/**\n * Do a quick line-level diff on both strings, then rediff the parts for\n * greater accuracy.\n * This speedup can produce non-minimal diffs.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {number} deadline Time when the diff should be complete by.\n * @return {!Array.<!diff_match_patch.Diff>} Array of diff tuples.\n * @private\n */\ndiff_match_patch.prototype.diff_lineMode_ = function(text1, text2, deadline) {\n  // Scan the text on a line-by-line basis first.\n  var a = this.diff_linesToChars_(text1, text2);\n  text1 = a.chars1;\n  text2 = a.chars2;\n  var linearray = a.lineArray;\n\n  var diffs = this.diff_main(text1, text2, false, deadline);\n\n  // Convert the diff back to original text.\n  this.diff_charsToLines_(diffs, linearray);\n  // Eliminate freak matches (e.g. blank lines)\n  this.diff_cleanupSemantic(diffs);\n\n  // Rediff any replacement blocks, this time character-by-character.\n  // Add a dummy entry at the end.\n  diffs.push([DIFF_EQUAL, '']);\n  var pointer = 0;\n  var count_delete = 0;\n  var count_insert = 0;\n  var text_delete = '';\n  var text_insert = '';\n  while (pointer < diffs.length) {\n    switch (diffs[pointer][0]) {\n      case DIFF_INSERT:\n        count_insert++;\n        text_insert += diffs[pointer][1];\n        break;\n      case DIFF_DELETE:\n        count_delete++;\n        text_delete += diffs[pointer][1];\n        break;\n      case DIFF_EQUAL:\n        // Upon reaching an equality, check for prior redundancies.\n        if (count_delete >= 1 && count_insert >= 1) {\n          // Delete the offending records and add the merged ones.\n          diffs.splice(pointer - count_delete - count_insert,\n                       count_delete + count_insert);\n          pointer = pointer - count_delete - count_insert;\n          var a = this.diff_main(text_delete, text_insert, false, deadline);\n          for (var j = a.length - 1; j >= 0; j--) {\n            diffs.splice(pointer, 0, a[j]);\n          }\n          pointer = pointer + a.length;\n        }\n        count_insert = 0;\n        count_delete = 0;\n        text_delete = '';\n        text_insert = '';\n        break;\n    }\n    pointer++;\n  }\n  diffs.pop();  // Remove the dummy entry at the end.\n\n  return diffs;\n};\n\n\n/**\n * Find the 'middle snake' of a diff, split the problem in two\n * and return the recursively constructed diff.\n * See Myers 1986 paper: An O(ND) Difference Algorithm and Its Variations.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {number} deadline Time at which to bail if not yet complete.\n * @return {!Array.<!diff_match_patch.Diff>} Array of diff tuples.\n * @private\n */\ndiff_match_patch.prototype.diff_bisect_ = function(text1, text2, deadline) {\n  // Cache the text lengths to prevent multiple calls.\n  var text1_length = text1.length;\n  var text2_length = text2.length;\n  var max_d = Math.ceil((text1_length + text2_length) / 2);\n  var v_offset = max_d;\n  var v_length = 2 * max_d;\n  var v1 = new Array(v_length);\n  var v2 = new Array(v_length);\n  // Setting all elements to -1 is faster in Chrome & Firefox than mixing\n  // integers and undefined.\n  for (var x = 0; x < v_length; x++) {\n    v1[x] = -1;\n    v2[x] = -1;\n  }\n  v1[v_offset + 1] = 0;\n  v2[v_offset + 1] = 0;\n  var delta = text1_length - text2_length;\n  // If the total number of characters is odd, then the front path will collide\n  // with the reverse path.\n  var front = (delta % 2 != 0);\n  // Offsets for start and end of k loop.\n  // Prevents mapping of space beyond the grid.\n  var k1start = 0;\n  var k1end = 0;\n  var k2start = 0;\n  var k2end = 0;\n  for (var d = 0; d < max_d; d++) {\n    // Bail out if deadline is reached.\n    if ((new Date()).getTime() > deadline) {\n      break;\n    }\n\n    // Walk the front path one step.\n    for (var k1 = -d + k1start; k1 <= d - k1end; k1 += 2) {\n      var k1_offset = v_offset + k1;\n      var x1;\n      if (k1 == -d || (k1 != d && v1[k1_offset - 1] < v1[k1_offset + 1])) {\n        x1 = v1[k1_offset + 1];\n      } else {\n        x1 = v1[k1_offset - 1] + 1;\n      }\n      var y1 = x1 - k1;\n      while (x1 < text1_length && y1 < text2_length &&\n             text1.charAt(x1) == text2.charAt(y1)) {\n        x1++;\n        y1++;\n      }\n      v1[k1_offset] = x1;\n      if (x1 > text1_length) {\n        // Ran off the right of the graph.\n        k1end += 2;\n      } else if (y1 > text2_length) {\n        // Ran off the bottom of the graph.\n        k1start += 2;\n      } else if (front) {\n        var k2_offset = v_offset + delta - k1;\n        if (k2_offset >= 0 && k2_offset < v_length && v2[k2_offset] != -1) {\n          // Mirror x2 onto top-left coordinate system.\n          var x2 = text1_length - v2[k2_offset];\n          if (x1 >= x2) {\n            // Overlap detected.\n            return this.diff_bisectSplit_(text1, text2, x1, y1, deadline);\n          }\n        }\n      }\n    }\n\n    // Walk the reverse path one step.\n    for (var k2 = -d + k2start; k2 <= d - k2end; k2 += 2) {\n      var k2_offset = v_offset + k2;\n      var x2;\n      if (k2 == -d || (k2 != d && v2[k2_offset - 1] < v2[k2_offset + 1])) {\n        x2 = v2[k2_offset + 1];\n      } else {\n        x2 = v2[k2_offset - 1] + 1;\n      }\n      var y2 = x2 - k2;\n      while (x2 < text1_length && y2 < text2_length &&\n             text1.charAt(text1_length - x2 - 1) ==\n             text2.charAt(text2_length - y2 - 1)) {\n        x2++;\n        y2++;\n      }\n      v2[k2_offset] = x2;\n      if (x2 > text1_length) {\n        // Ran off the left of the graph.\n        k2end += 2;\n      } else if (y2 > text2_length) {\n        // Ran off the top of the graph.\n        k2start += 2;\n      } else if (!front) {\n        var k1_offset = v_offset + delta - k2;\n        if (k1_offset >= 0 && k1_offset < v_length && v1[k1_offset] != -1) {\n          var x1 = v1[k1_offset];\n          var y1 = v_offset + x1 - k1_offset;\n          // Mirror x2 onto top-left coordinate system.\n          x2 = text1_length - x2;\n          if (x1 >= x2) {\n            // Overlap detected.\n            return this.diff_bisectSplit_(text1, text2, x1, y1, deadline);\n          }\n        }\n      }\n    }\n  }\n  // Diff took too long and hit the deadline or\n  // number of diffs equals number of characters, no commonality at all.\n  return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]];\n};\n\n\n/**\n * Given the location of the 'middle snake', split the diff in two parts\n * and recurse.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {number} x Index of split point in text1.\n * @param {number} y Index of split point in text2.\n * @param {number} deadline Time at which to bail if not yet complete.\n * @return {!Array.<!diff_match_patch.Diff>} Array of diff tuples.\n * @private\n */\ndiff_match_patch.prototype.diff_bisectSplit_ = function(text1, text2, x, y,\n    deadline) {\n  var text1a = text1.substring(0, x);\n  var text2a = text2.substring(0, y);\n  var text1b = text1.substring(x);\n  var text2b = text2.substring(y);\n\n  // Compute both diffs serially.\n  var diffs = this.diff_main(text1a, text2a, false, deadline);\n  var diffsb = this.diff_main(text1b, text2b, false, deadline);\n\n  return diffs.concat(diffsb);\n};\n\n\n/**\n * Split two texts into an array of strings.  Reduce the texts to a string of\n * hashes where each Unicode character represents one line.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {{chars1: string, chars2: string, lineArray: !Array.<string>}}\n *     An object containing the encoded text1, the encoded text2 and\n *     the array of unique strings.\n *     The zeroth element of the array of unique strings is intentionally blank.\n * @private\n */\ndiff_match_patch.prototype.diff_linesToChars_ = function(text1, text2) {\n  var lineArray = [];  // e.g. lineArray[4] == 'Hello\\n'\n  var lineHash = {};   // e.g. lineHash['Hello\\n'] == 4\n\n  // '\\x00' is a valid character, but various debuggers don't like it.\n  // So we'll insert a junk entry to avoid generating a null character.\n  lineArray[0] = '';\n\n  /**\n   * Split a text into an array of strings.  Reduce the texts to a string of\n   * hashes where each Unicode character represents one line.\n   * Modifies linearray and linehash through being a closure.\n   * @param {string} text String to encode.\n   * @return {string} Encoded string.\n   * @private\n   */\n  function diff_linesToCharsMunge_(text) {\n    var chars = '';\n    // Walk the text, pulling out a substring for each line.\n    // text.split('\\n') would would temporarily double our memory footprint.\n    // Modifying text would create many large strings to garbage collect.\n    var lineStart = 0;\n    var lineEnd = -1;\n    // Keeping our own length variable is faster than looking it up.\n    var lineArrayLength = lineArray.length;\n    while (lineEnd < text.length - 1) {\n      lineEnd = text.indexOf('\\n', lineStart);\n      if (lineEnd == -1) {\n        lineEnd = text.length - 1;\n      }\n      var line = text.substring(lineStart, lineEnd + 1);\n      lineStart = lineEnd + 1;\n\n      if (lineHash.hasOwnProperty ? lineHash.hasOwnProperty(line) :\n          (lineHash[line] !== undefined)) {\n        chars += String.fromCharCode(lineHash[line]);\n      } else {\n        chars += String.fromCharCode(lineArrayLength);\n        lineHash[line] = lineArrayLength;\n        lineArray[lineArrayLength++] = line;\n      }\n    }\n    return chars;\n  }\n\n  var chars1 = diff_linesToCharsMunge_(text1);\n  var chars2 = diff_linesToCharsMunge_(text2);\n  return {chars1: chars1, chars2: chars2, lineArray: lineArray};\n};\n\n\n/**\n * Rehydrate the text in a diff from a string of line hashes to real lines of\n * text.\n * @param {!Array.<!diff_match_patch.Diff>} diffs Array of diff tuples.\n * @param {!Array.<string>} lineArray Array of unique strings.\n * @private\n */\ndiff_match_patch.prototype.diff_charsToLines_ = function(diffs, lineArray) {\n  for (var x = 0; x < diffs.length; x++) {\n    var chars = diffs[x][1];\n    var text = [];\n    for (var y = 0; y < chars.length; y++) {\n      text[y] = lineArray[chars.charCodeAt(y)];\n    }\n    diffs[x][1] = text.join('');\n  }\n};\n\n\n/**\n * Determine the common prefix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the start of each\n *     string.\n */\ndiff_match_patch.prototype.diff_commonPrefix = function(text1, text2) {\n  // Quick check for common null cases.\n  if (!text1 || !text2 || text1.charAt(0) != text2.charAt(0)) {\n    return 0;\n  }\n  // Binary search.\n  // Performance analysis: http://neil.fraser.name/news/2007/10/09/\n  var pointermin = 0;\n  var pointermax = Math.min(text1.length, text2.length);\n  var pointermid = pointermax;\n  var pointerstart = 0;\n  while (pointermin < pointermid) {\n    if (text1.substring(pointerstart, pointermid) ==\n        text2.substring(pointerstart, pointermid)) {\n      pointermin = pointermid;\n      pointerstart = pointermin;\n    } else {\n      pointermax = pointermid;\n    }\n    pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n  }\n  return pointermid;\n};\n\n\n/**\n * Determine the common suffix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the end of each string.\n */\ndiff_match_patch.prototype.diff_commonSuffix = function(text1, text2) {\n  // Quick check for common null cases.\n  if (!text1 || !text2 ||\n      text1.charAt(text1.length - 1) != text2.charAt(text2.length - 1)) {\n    return 0;\n  }\n  // Binary search.\n  // Performance analysis: http://neil.fraser.name/news/2007/10/09/\n  var pointermin = 0;\n  var pointermax = Math.min(text1.length, text2.length);\n  var pointermid = pointermax;\n  var pointerend = 0;\n  while (pointermin < pointermid) {\n    if (text1.substring(text1.length - pointermid, text1.length - pointerend) ==\n        text2.substring(text2.length - pointermid, text2.length - pointerend)) {\n      pointermin = pointermid;\n      pointerend = pointermin;\n    } else {\n      pointermax = pointermid;\n    }\n    pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n  }\n  return pointermid;\n};\n\n\n/**\n * Determine if the suffix of one string is the prefix of another.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the end of the first\n *     string and the start of the second string.\n * @private\n */\ndiff_match_patch.prototype.diff_commonOverlap_ = function(text1, text2) {\n  // Cache the text lengths to prevent multiple calls.\n  var text1_length = text1.length;\n  var text2_length = text2.length;\n  // Eliminate the null case.\n  if (text1_length == 0 || text2_length == 0) {\n    return 0;\n  }\n  // Truncate the longer string.\n  if (text1_length > text2_length) {\n    text1 = text1.substring(text1_length - text2_length);\n  } else if (text1_length < text2_length) {\n    text2 = text2.substring(0, text1_length);\n  }\n  var text_length = Math.min(text1_length, text2_length);\n  // Quick check for the worst case.\n  if (text1 == text2) {\n    return text_length;\n  }\n\n  // Start by looking for a single character match\n  // and increase length until no match is found.\n  // Performance analysis: http://neil.fraser.name/news/2010/11/04/\n  var best = 0;\n  var length = 1;\n  while (true) {\n    var pattern = text1.substring(text_length - length);\n    var found = text2.indexOf(pattern);\n    if (found == -1) {\n      return best;\n    }\n    length += found;\n    if (found == 0 || text1.substring(text_length - length) ==\n        text2.substring(0, length)) {\n      best = length;\n      length++;\n    }\n  }\n};\n\n\n/**\n * Do the two texts share a substring which is at least half the length of the\n * longer text?\n * This speedup can produce non-minimal diffs.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {Array.<string>} Five element Array, containing the prefix of\n *     text1, the suffix of text1, the prefix of text2, the suffix of\n *     text2 and the common middle.  Or null if there was no match.\n * @private\n */\ndiff_match_patch.prototype.diff_halfMatch_ = function(text1, text2) {\n  if (this.Diff_Timeout <= 0) {\n    // Don't risk returning a non-optimal diff if we have unlimited time.\n    return null;\n  }\n  var longtext = text1.length > text2.length ? text1 : text2;\n  var shorttext = text1.length > text2.length ? text2 : text1;\n  if (longtext.length < 4 || shorttext.length * 2 < longtext.length) {\n    return null;  // Pointless.\n  }\n  var dmp = this;  // 'this' becomes 'window' in a closure.\n\n  /**\n   * Does a substring of shorttext exist within longtext such that the substring\n   * is at least half the length of longtext?\n   * Closure, but does not reference any external variables.\n   * @param {string} longtext Longer string.\n   * @param {string} shorttext Shorter string.\n   * @param {number} i Start index of quarter length substring within longtext.\n   * @return {Array.<string>} Five element Array, containing the prefix of\n   *     longtext, the suffix of longtext, the prefix of shorttext, the suffix\n   *     of shorttext and the common middle.  Or null if there was no match.\n   * @private\n   */\n  function diff_halfMatchI_(longtext, shorttext, i) {\n    // Start with a 1/4 length substring at position i as a seed.\n    var seed = longtext.substring(i, i + Math.floor(longtext.length / 4));\n    var j = -1;\n    var best_common = '';\n    var best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b;\n    while ((j = shorttext.indexOf(seed, j + 1)) != -1) {\n      var prefixLength = dmp.diff_commonPrefix(longtext.substring(i),\n                                               shorttext.substring(j));\n      var suffixLength = dmp.diff_commonSuffix(longtext.substring(0, i),\n                                               shorttext.substring(0, j));\n      if (best_common.length < suffixLength + prefixLength) {\n        best_common = shorttext.substring(j - suffixLength, j) +\n            shorttext.substring(j, j + prefixLength);\n        best_longtext_a = longtext.substring(0, i - suffixLength);\n        best_longtext_b = longtext.substring(i + prefixLength);\n        best_shorttext_a = shorttext.substring(0, j - suffixLength);\n        best_shorttext_b = shorttext.substring(j + prefixLength);\n      }\n    }\n    if (best_common.length * 2 >= longtext.length) {\n      return [best_longtext_a, best_longtext_b,\n              best_shorttext_a, best_shorttext_b, best_common];\n    } else {\n      return null;\n    }\n  }\n\n  // First check if the second quarter is the seed for a half-match.\n  var hm1 = diff_halfMatchI_(longtext, shorttext,\n                             Math.ceil(longtext.length / 4));\n  // Check again based on the third quarter.\n  var hm2 = diff_halfMatchI_(longtext, shorttext,\n                             Math.ceil(longtext.length / 2));\n  var hm;\n  if (!hm1 && !hm2) {\n    return null;\n  } else if (!hm2) {\n    hm = hm1;\n  } else if (!hm1) {\n    hm = hm2;\n  } else {\n    // Both matched.  Select the longest.\n    hm = hm1[4].length > hm2[4].length ? hm1 : hm2;\n  }\n\n  // A half-match was found, sort out the return data.\n  var text1_a, text1_b, text2_a, text2_b;\n  if (text1.length > text2.length) {\n    text1_a = hm[0];\n    text1_b = hm[1];\n    text2_a = hm[2];\n    text2_b = hm[3];\n  } else {\n    text2_a = hm[0];\n    text2_b = hm[1];\n    text1_a = hm[2];\n    text1_b = hm[3];\n  }\n  var mid_common = hm[4];\n  return [text1_a, text1_b, text2_a, text2_b, mid_common];\n};\n\n\n/**\n * Reduce the number of edits by eliminating semantically trivial equalities.\n * @param {!Array.<!diff_match_patch.Diff>} diffs Array of diff tuples.\n */\ndiff_match_patch.prototype.diff_cleanupSemantic = function(diffs) {\n  var changes = false;\n  var equalities = [];  // Stack of indices where equalities are found.\n  var equalitiesLength = 0;  // Keeping our own length var is faster in JS.\n  /** @type {?string} */\n  var lastequality = null;\n  // Always equal to diffs[equalities[equalitiesLength - 1]][1]\n  var pointer = 0;  // Index of current position.\n  // Number of characters that changed prior to the equality.\n  var length_insertions1 = 0;\n  var length_deletions1 = 0;\n  // Number of characters that changed after the equality.\n  var length_insertions2 = 0;\n  var length_deletions2 = 0;\n  while (pointer < diffs.length) {\n    if (diffs[pointer][0] == DIFF_EQUAL) {  // Equality found.\n      equalities[equalitiesLength++] = pointer;\n      length_insertions1 = length_insertions2;\n      length_deletions1 = length_deletions2;\n      length_insertions2 = 0;\n      length_deletions2 = 0;\n      lastequality = diffs[pointer][1];\n    } else {  // An insertion or deletion.\n      if (diffs[pointer][0] == DIFF_INSERT) {\n        length_insertions2 += diffs[pointer][1].length;\n      } else {\n        length_deletions2 += diffs[pointer][1].length;\n      }\n      // Eliminate an equality that is smaller or equal to the edits on both\n      // sides of it.\n      if (lastequality && (lastequality.length <=\n          Math.max(length_insertions1, length_deletions1)) &&\n          (lastequality.length <= Math.max(length_insertions2,\n                                           length_deletions2))) {\n        // Duplicate record.\n        diffs.splice(equalities[equalitiesLength - 1], 0,\n                     [DIFF_DELETE, lastequality]);\n        // Change second copy to insert.\n        diffs[equalities[equalitiesLength - 1] + 1][0] = DIFF_INSERT;\n        // Throw away the equality we just deleted.\n        equalitiesLength--;\n        // Throw away the previous equality (it needs to be reevaluated).\n        equalitiesLength--;\n        pointer = equalitiesLength > 0 ? equalities[equalitiesLength - 1] : -1;\n        length_insertions1 = 0;  // Reset the counters.\n        length_deletions1 = 0;\n        length_insertions2 = 0;\n        length_deletions2 = 0;\n        lastequality = null;\n        changes = true;\n      }\n    }\n    pointer++;\n  }\n\n  // Normalize the diff.\n  if (changes) {\n    this.diff_cleanupMerge(diffs);\n  }\n  this.diff_cleanupSemanticLossless(diffs);\n\n  // Find any overlaps between deletions and insertions.\n  // e.g: <del>abcxxx</del><ins>xxxdef</ins>\n  //   -> <del>abc</del>xxx<ins>def</ins>\n  // e.g: <del>xxxabc</del><ins>defxxx</ins>\n  //   -> <ins>def</ins>xxx<del>abc</del>\n  // Only extract an overlap if it is as big as the edit ahead or behind it.\n  pointer = 1;\n  while (pointer < diffs.length) {\n    if (diffs[pointer - 1][0] == DIFF_DELETE &&\n        diffs[pointer][0] == DIFF_INSERT) {\n      var deletion = diffs[pointer - 1][1];\n      var insertion = diffs[pointer][1];\n      var overlap_length1 = this.diff_commonOverlap_(deletion, insertion);\n      var overlap_length2 = this.diff_commonOverlap_(insertion, deletion);\n      if (overlap_length1 >= overlap_length2) {\n        if (overlap_length1 >= deletion.length / 2 ||\n            overlap_length1 >= insertion.length / 2) {\n          // Overlap found.  Insert an equality and trim the surrounding edits.\n          diffs.splice(pointer, 0,\n              [DIFF_EQUAL, insertion.substring(0, overlap_length1)]);\n          diffs[pointer - 1][1] =\n              deletion.substring(0, deletion.length - overlap_length1);\n          diffs[pointer + 1][1] = insertion.substring(overlap_length1);\n          pointer++;\n        }\n      } else {\n        if (overlap_length2 >= deletion.length / 2 ||\n            overlap_length2 >= insertion.length / 2) {\n          // Reverse overlap found.\n          // Insert an equality and swap and trim the surrounding edits.\n          diffs.splice(pointer, 0,\n              [DIFF_EQUAL, deletion.substring(0, overlap_length2)]);\n          diffs[pointer - 1][0] = DIFF_INSERT;\n          diffs[pointer - 1][1] =\n              insertion.substring(0, insertion.length - overlap_length2);\n          diffs[pointer + 1][0] = DIFF_DELETE;\n          diffs[pointer + 1][1] =\n              deletion.substring(overlap_length2);\n          pointer++;\n        }\n      }\n      pointer++;\n    }\n    pointer++;\n  }\n};\n\n\n/**\n * Look for single edits surrounded on both sides by equalities\n * which can be shifted sideways to align the edit to a word boundary.\n * e.g: The c<ins>at c</ins>ame. -> The <ins>cat </ins>came.\n * @param {!Array.<!diff_match_patch.Diff>} diffs Array of diff tuples.\n */\ndiff_match_patch.prototype.diff_cleanupSemanticLossless = function(diffs) {\n  /**\n   * Given two strings, compute a score representing whether the internal\n   * boundary falls on logical boundaries.\n   * Scores range from 6 (best) to 0 (worst).\n   * Closure, but does not reference any external variables.\n   * @param {string} one First string.\n   * @param {string} two Second string.\n   * @return {number} The score.\n   * @private\n   */\n  function diff_cleanupSemanticScore_(one, two) {\n    if (!one || !two) {\n      // Edges are the best.\n      return 6;\n    }\n\n    // Each port of this function behaves slightly differently due to\n    // subtle differences in each language's definition of things like\n    // 'whitespace'.  Since this function's purpose is largely cosmetic,\n    // the choice has been made to use each language's native features\n    // rather than force total conformity.\n    var char1 = one.charAt(one.length - 1);\n    var char2 = two.charAt(0);\n    var nonAlphaNumeric1 = char1.match(diff_match_patch.nonAlphaNumericRegex_);\n    var nonAlphaNumeric2 = char2.match(diff_match_patch.nonAlphaNumericRegex_);\n    var whitespace1 = nonAlphaNumeric1 &&\n        char1.match(diff_match_patch.whitespaceRegex_);\n    var whitespace2 = nonAlphaNumeric2 &&\n        char2.match(diff_match_patch.whitespaceRegex_);\n    var lineBreak1 = whitespace1 &&\n        char1.match(diff_match_patch.linebreakRegex_);\n    var lineBreak2 = whitespace2 &&\n        char2.match(diff_match_patch.linebreakRegex_);\n    var blankLine1 = lineBreak1 &&\n        one.match(diff_match_patch.blanklineEndRegex_);\n    var blankLine2 = lineBreak2 &&\n        two.match(diff_match_patch.blanklineStartRegex_);\n\n    if (blankLine1 || blankLine2) {\n      // Five points for blank lines.\n      return 5;\n    } else if (lineBreak1 || lineBreak2) {\n      // Four points for line breaks.\n      return 4;\n    } else if (nonAlphaNumeric1 && !whitespace1 && whitespace2) {\n      // Three points for end of sentences.\n      return 3;\n    } else if (whitespace1 || whitespace2) {\n      // Two points for whitespace.\n      return 2;\n    } else if (nonAlphaNumeric1 || nonAlphaNumeric2) {\n      // One point for non-alphanumeric.\n      return 1;\n    }\n    return 0;\n  }\n\n  var pointer = 1;\n  // Intentionally ignore the first and last element (don't need checking).\n  while (pointer < diffs.length - 1) {\n    if (diffs[pointer - 1][0] == DIFF_EQUAL &&\n        diffs[pointer + 1][0] == DIFF_EQUAL) {\n      // This is a single edit surrounded by equalities.\n      var equality1 = diffs[pointer - 1][1];\n      var edit = diffs[pointer][1];\n      var equality2 = diffs[pointer + 1][1];\n\n      // First, shift the edit as far left as possible.\n      var commonOffset = this.diff_commonSuffix(equality1, edit);\n      if (commonOffset) {\n        var commonString = edit.substring(edit.length - commonOffset);\n        equality1 = equality1.substring(0, equality1.length - commonOffset);\n        edit = commonString + edit.substring(0, edit.length - commonOffset);\n        equality2 = commonString + equality2;\n      }\n\n      // Second, step character by character right, looking for the best fit.\n      var bestEquality1 = equality1;\n      var bestEdit = edit;\n      var bestEquality2 = equality2;\n      var bestScore = diff_cleanupSemanticScore_(equality1, edit) +\n          diff_cleanupSemanticScore_(edit, equality2);\n      while (edit.charAt(0) === equality2.charAt(0)) {\n        equality1 += edit.charAt(0);\n        edit = edit.substring(1) + equality2.charAt(0);\n        equality2 = equality2.substring(1);\n        var score = diff_cleanupSemanticScore_(equality1, edit) +\n            diff_cleanupSemanticScore_(edit, equality2);\n        // The >= encourages trailing rather than leading whitespace on edits.\n        if (score >= bestScore) {\n          bestScore = score;\n          bestEquality1 = equality1;\n          bestEdit = edit;\n          bestEquality2 = equality2;\n        }\n      }\n\n      if (diffs[pointer - 1][1] != bestEquality1) {\n        // We have an improvement, save it back to the diff.\n        if (bestEquality1) {\n          diffs[pointer - 1][1] = bestEquality1;\n        } else {\n          diffs.splice(pointer - 1, 1);\n          pointer--;\n        }\n        diffs[pointer][1] = bestEdit;\n        if (bestEquality2) {\n          diffs[pointer + 1][1] = bestEquality2;\n        } else {\n          diffs.splice(pointer + 1, 1);\n          pointer--;\n        }\n      }\n    }\n    pointer++;\n  }\n};\n\n// Define some regex patterns for matching boundaries.\ndiff_match_patch.nonAlphaNumericRegex_ = /[^a-zA-Z0-9]/;\ndiff_match_patch.whitespaceRegex_ = /\\s/;\ndiff_match_patch.linebreakRegex_ = /[\\r\\n]/;\ndiff_match_patch.blanklineEndRegex_ = /\\n\\r?\\n$/;\ndiff_match_patch.blanklineStartRegex_ = /^\\r?\\n\\r?\\n/;\n\n/**\n * Reduce the number of edits by eliminating operationally trivial equalities.\n * @param {!Array.<!diff_match_patch.Diff>} diffs Array of diff tuples.\n */\ndiff_match_patch.prototype.diff_cleanupEfficiency = function(diffs) {\n  var changes = false;\n  var equalities = [];  // Stack of indices where equalities are found.\n  var equalitiesLength = 0;  // Keeping our own length var is faster in JS.\n  /** @type {?string} */\n  var lastequality = null;\n  // Always equal to diffs[equalities[equalitiesLength - 1]][1]\n  var pointer = 0;  // Index of current position.\n  // Is there an insertion operation before the last equality.\n  var pre_ins = false;\n  // Is there a deletion operation before the last equality.\n  var pre_del = false;\n  // Is there an insertion operation after the last equality.\n  var post_ins = false;\n  // Is there a deletion operation after the last equality.\n  var post_del = false;\n  while (pointer < diffs.length) {\n    if (diffs[pointer][0] == DIFF_EQUAL) {  // Equality found.\n      if (diffs[pointer][1].length < this.Diff_EditCost &&\n          (post_ins || post_del)) {\n        // Candidate found.\n        equalities[equalitiesLength++] = pointer;\n        pre_ins = post_ins;\n        pre_del = post_del;\n        lastequality = diffs[pointer][1];\n      } else {\n        // Not a candidate, and can never become one.\n        equalitiesLength = 0;\n        lastequality = null;\n      }\n      post_ins = post_del = false;\n    } else {  // An insertion or deletion.\n      if (diffs[pointer][0] == DIFF_DELETE) {\n        post_del = true;\n      } else {\n        post_ins = true;\n      }\n      /*\n       * Five types to be split:\n       * <ins>A</ins><del>B</del>XY<ins>C</ins><del>D</del>\n       * <ins>A</ins>X<ins>C</ins><del>D</del>\n       * <ins>A</ins><del>B</del>X<ins>C</ins>\n       * <ins>A</del>X<ins>C</ins><del>D</del>\n       * <ins>A</ins><del>B</del>X<del>C</del>\n       */\n      if (lastequality && ((pre_ins && pre_del && post_ins && post_del) ||\n                           ((lastequality.length < this.Diff_EditCost / 2) &&\n                            (pre_ins + pre_del + post_ins + post_del) == 3))) {\n        // Duplicate record.\n        diffs.splice(equalities[equalitiesLength - 1], 0,\n                     [DIFF_DELETE, lastequality]);\n        // Change second copy to insert.\n        diffs[equalities[equalitiesLength - 1] + 1][0] = DIFF_INSERT;\n        equalitiesLength--;  // Throw away the equality we just deleted;\n        lastequality = null;\n        if (pre_ins && pre_del) {\n          // No changes made which could affect previous entry, keep going.\n          post_ins = post_del = true;\n          equalitiesLength = 0;\n        } else {\n          equalitiesLength--;  // Throw away the previous equality.\n          pointer = equalitiesLength > 0 ?\n              equalities[equalitiesLength - 1] : -1;\n          post_ins = post_del = false;\n        }\n        changes = true;\n      }\n    }\n    pointer++;\n  }\n\n  if (changes) {\n    this.diff_cleanupMerge(diffs);\n  }\n};\n\n\n/**\n * Reorder and merge like edit sections.  Merge equalities.\n * Any edit section can move as long as it doesn't cross an equality.\n * @param {!Array.<!diff_match_patch.Diff>} diffs Array of diff tuples.\n */\ndiff_match_patch.prototype.diff_cleanupMerge = function(diffs) {\n  diffs.push([DIFF_EQUAL, '']);  // Add a dummy entry at the end.\n  var pointer = 0;\n  var count_delete = 0;\n  var count_insert = 0;\n  var text_delete = '';\n  var text_insert = '';\n  var commonlength;\n  while (pointer < diffs.length) {\n    switch (diffs[pointer][0]) {\n      case DIFF_INSERT:\n        count_insert++;\n        text_insert += diffs[pointer][1];\n        pointer++;\n        break;\n      case DIFF_DELETE:\n        count_delete++;\n        text_delete += diffs[pointer][1];\n        pointer++;\n        break;\n      case DIFF_EQUAL:\n        // Upon reaching an equality, check for prior redundancies.\n        if (count_delete + count_insert > 1) {\n          if (count_delete !== 0 && count_insert !== 0) {\n            // Factor out any common prefixies.\n            commonlength = this.diff_commonPrefix(text_insert, text_delete);\n            if (commonlength !== 0) {\n              if ((pointer - count_delete - count_insert) > 0 &&\n                  diffs[pointer - count_delete - count_insert - 1][0] ==\n                  DIFF_EQUAL) {\n                diffs[pointer - count_delete - count_insert - 1][1] +=\n                    text_insert.substring(0, commonlength);\n              } else {\n                diffs.splice(0, 0, [DIFF_EQUAL,\n                                    text_insert.substring(0, commonlength)]);\n                pointer++;\n              }\n              text_insert = text_insert.substring(commonlength);\n              text_delete = text_delete.substring(commonlength);\n            }\n            // Factor out any common suffixies.\n            commonlength = this.diff_commonSuffix(text_insert, text_delete);\n            if (commonlength !== 0) {\n              diffs[pointer][1] = text_insert.substring(text_insert.length -\n                  commonlength) + diffs[pointer][1];\n              text_insert = text_insert.substring(0, text_insert.length -\n                  commonlength);\n              text_delete = text_delete.substring(0, text_delete.length -\n                  commonlength);\n            }\n          }\n          // Delete the offending records and add the merged ones.\n          if (count_delete === 0) {\n            diffs.splice(pointer - count_insert,\n                count_delete + count_insert, [DIFF_INSERT, text_insert]);\n          } else if (count_insert === 0) {\n            diffs.splice(pointer - count_delete,\n                count_delete + count_insert, [DIFF_DELETE, text_delete]);\n          } else {\n            diffs.splice(pointer - count_delete - count_insert,\n                count_delete + count_insert, [DIFF_DELETE, text_delete],\n                [DIFF_INSERT, text_insert]);\n          }\n          pointer = pointer - count_delete - count_insert +\n                    (count_delete ? 1 : 0) + (count_insert ? 1 : 0) + 1;\n        } else if (pointer !== 0 && diffs[pointer - 1][0] == DIFF_EQUAL) {\n          // Merge this equality with the previous one.\n          diffs[pointer - 1][1] += diffs[pointer][1];\n          diffs.splice(pointer, 1);\n        } else {\n          pointer++;\n        }\n        count_insert = 0;\n        count_delete = 0;\n        text_delete = '';\n        text_insert = '';\n        break;\n    }\n  }\n  if (diffs[diffs.length - 1][1] === '') {\n    diffs.pop();  // Remove the dummy entry at the end.\n  }\n\n  // Second pass: look for single edits surrounded on both sides by equalities\n  // which can be shifted sideways to eliminate an equality.\n  // e.g: A<ins>BA</ins>C -> <ins>AB</ins>AC\n  var changes = false;\n  pointer = 1;\n  // Intentionally ignore the first and last element (don't need checking).\n  while (pointer < diffs.length - 1) {\n    if (diffs[pointer - 1][0] == DIFF_EQUAL &&\n        diffs[pointer + 1][0] == DIFF_EQUAL) {\n      // This is a single edit surrounded by equalities.\n      if (diffs[pointer][1].substring(diffs[pointer][1].length -\n          diffs[pointer - 1][1].length) == diffs[pointer - 1][1]) {\n        // Shift the edit over the previous equality.\n        diffs[pointer][1] = diffs[pointer - 1][1] +\n            diffs[pointer][1].substring(0, diffs[pointer][1].length -\n                                        diffs[pointer - 1][1].length);\n        diffs[pointer + 1][1] = diffs[pointer - 1][1] + diffs[pointer + 1][1];\n        diffs.splice(pointer - 1, 1);\n        changes = true;\n      } else if (diffs[pointer][1].substring(0, diffs[pointer + 1][1].length) ==\n          diffs[pointer + 1][1]) {\n        // Shift the edit over the next equality.\n        diffs[pointer - 1][1] += diffs[pointer + 1][1];\n        diffs[pointer][1] =\n            diffs[pointer][1].substring(diffs[pointer + 1][1].length) +\n            diffs[pointer + 1][1];\n        diffs.splice(pointer + 1, 1);\n        changes = true;\n      }\n    }\n    pointer++;\n  }\n  // If shifts were made, the diff needs reordering and another shift sweep.\n  if (changes) {\n    this.diff_cleanupMerge(diffs);\n  }\n};\n\n\n/**\n * loc is a location in text1, compute and return the equivalent location in\n * text2.\n * e.g. 'The cat' vs 'The big cat', 1->1, 5->8\n * @param {!Array.<!diff_match_patch.Diff>} diffs Array of diff tuples.\n * @param {number} loc Location within text1.\n * @return {number} Location within text2.\n */\ndiff_match_patch.prototype.diff_xIndex = function(diffs, loc) {\n  var chars1 = 0;\n  var chars2 = 0;\n  var last_chars1 = 0;\n  var last_chars2 = 0;\n  var x;\n  for (x = 0; x < diffs.length; x++) {\n    if (diffs[x][0] !== DIFF_INSERT) {  // Equality or deletion.\n      chars1 += diffs[x][1].length;\n    }\n    if (diffs[x][0] !== DIFF_DELETE) {  // Equality or insertion.\n      chars2 += diffs[x][1].length;\n    }\n    if (chars1 > loc) {  // Overshot the location.\n      break;\n    }\n    last_chars1 = chars1;\n    last_chars2 = chars2;\n  }\n  // Was the location was deleted?\n  if (diffs.length != x && diffs[x][0] === DIFF_DELETE) {\n    return last_chars2;\n  }\n  // Add the remaining character length.\n  return last_chars2 + (loc - last_chars1);\n};\n\n\n/**\n * Convert a diff array into a pretty HTML report.\n * @param {!Array.<!diff_match_patch.Diff>} diffs Array of diff tuples.\n * @return {string} HTML representation.\n */\ndiff_match_patch.prototype.diff_prettyHtml = function(diffs) {\n  var html = [];\n  var pattern_amp = /&/g;\n  var pattern_lt = /</g;\n  var pattern_gt = />/g;\n  var pattern_para = /\\n/g;\n  for (var x = 0; x < diffs.length; x++) {\n    var op = diffs[x][0];    // Operation (insert, delete, equal)\n    var data = diffs[x][1];  // Text of change.\n    var text = data.replace(pattern_amp, '&amp;').replace(pattern_lt, '&lt;')\n        .replace(pattern_gt, '&gt;').replace(pattern_para, '&para;<br>');\n    switch (op) {\n      case DIFF_INSERT:\n        html[x] = '<ins style=\"background:#e6ffe6;\">' + text + '</ins>';\n        break;\n      case DIFF_DELETE:\n        html[x] = '<del style=\"background:#ffe6e6;\">' + text + '</del>';\n        break;\n      case DIFF_EQUAL:\n        html[x] = '<span>' + text + '</span>';\n        break;\n    }\n  }\n  return html.join('');\n};\n\n\n/**\n * Compute and return the source text (all equalities and deletions).\n * @param {!Array.<!diff_match_patch.Diff>} diffs Array of diff tuples.\n * @return {string} Source text.\n */\ndiff_match_patch.prototype.diff_text1 = function(diffs) {\n  var text = [];\n  for (var x = 0; x < diffs.length; x++) {\n    if (diffs[x][0] !== DIFF_INSERT) {\n      text[x] = diffs[x][1];\n    }\n  }\n  return text.join('');\n};\n\n\n/**\n * Compute and return the destination text (all equalities and insertions).\n * @param {!Array.<!diff_match_patch.Diff>} diffs Array of diff tuples.\n * @return {string} Destination text.\n */\ndiff_match_patch.prototype.diff_text2 = function(diffs) {\n  var text = [];\n  for (var x = 0; x < diffs.length; x++) {\n    if (diffs[x][0] !== DIFF_DELETE) {\n      text[x] = diffs[x][1];\n    }\n  }\n  return text.join('');\n};\n\n\n/**\n * Compute the Levenshtein distance; the number of inserted, deleted or\n * substituted characters.\n * @param {!Array.<!diff_match_patch.Diff>} diffs Array of diff tuples.\n * @return {number} Number of changes.\n */\ndiff_match_patch.prototype.diff_levenshtein = function(diffs) {\n  var levenshtein = 0;\n  var insertions = 0;\n  var deletions = 0;\n  for (var x = 0; x < diffs.length; x++) {\n    var op = diffs[x][0];\n    var data = diffs[x][1];\n    switch (op) {\n      case DIFF_INSERT:\n        insertions += data.length;\n        break;\n      case DIFF_DELETE:\n        deletions += data.length;\n        break;\n      case DIFF_EQUAL:\n        // A deletion and an insertion is one substitution.\n        levenshtein += Math.max(insertions, deletions);\n        insertions = 0;\n        deletions = 0;\n        break;\n    }\n  }\n  levenshtein += Math.max(insertions, deletions);\n  return levenshtein;\n};\n\n\n/**\n * Crush the diff into an encoded string which describes the operations\n * required to transform text1 into text2.\n * E.g. =3\\t-2\\t+ing  -> Keep 3 chars, delete 2 chars, insert 'ing'.\n * Operations are tab-separated.  Inserted text is escaped using %xx notation.\n * @param {!Array.<!diff_match_patch.Diff>} diffs Array of diff tuples.\n * @return {string} Delta text.\n */\ndiff_match_patch.prototype.diff_toDelta = function(diffs) {\n  var text = [];\n  for (var x = 0; x < diffs.length; x++) {\n    switch (diffs[x][0]) {\n      case DIFF_INSERT:\n        text[x] = '+' + encodeURI(diffs[x][1]);\n        break;\n      case DIFF_DELETE:\n        text[x] = '-' + diffs[x][1].length;\n        break;\n      case DIFF_EQUAL:\n        text[x] = '=' + diffs[x][1].length;\n        break;\n    }\n  }\n  return text.join('\\t').replace(/%20/g, ' ');\n};\n\n\n/**\n * Given the original text1, and an encoded string which describes the\n * operations required to transform text1 into text2, compute the full diff.\n * @param {string} text1 Source string for the diff.\n * @param {string} delta Delta text.\n * @return {!Array.<!diff_match_patch.Diff>} Array of diff tuples.\n * @throws {!Error} If invalid input.\n */\ndiff_match_patch.prototype.diff_fromDelta = function(text1, delta) {\n  var diffs = [];\n  var diffsLength = 0;  // Keeping our own length var is faster in JS.\n  var pointer = 0;  // Cursor in text1\n  var tokens = delta.split(/\\t/g);\n  for (var x = 0; x < tokens.length; x++) {\n    // Each token begins with a one character parameter which specifies the\n    // operation of this token (delete, insert, equality).\n    var param = tokens[x].substring(1);\n    switch (tokens[x].charAt(0)) {\n      case '+':\n        try {\n          diffs[diffsLength++] = [DIFF_INSERT, decodeURI(param)];\n        } catch (ex) {\n          // Malformed URI sequence.\n          throw new Error('Illegal escape in diff_fromDelta: ' + param);\n        }\n        break;\n      case '-':\n        // Fall through.\n      case '=':\n        var n = parseInt(param, 10);\n        if (isNaN(n) || n < 0) {\n          throw new Error('Invalid number in diff_fromDelta: ' + param);\n        }\n        var text = text1.substring(pointer, pointer += n);\n        if (tokens[x].charAt(0) == '=') {\n          diffs[diffsLength++] = [DIFF_EQUAL, text];\n        } else {\n          diffs[diffsLength++] = [DIFF_DELETE, text];\n        }\n        break;\n      default:\n        // Blank tokens are ok (from a trailing \\t).\n        // Anything else is an error.\n        if (tokens[x]) {\n          throw new Error('Invalid diff operation in diff_fromDelta: ' +\n                          tokens[x]);\n        }\n    }\n  }\n  if (pointer != text1.length) {\n    throw new Error('Delta length (' + pointer +\n        ') does not equal source text length (' + text1.length + ').');\n  }\n  return diffs;\n};\n\n\n//  MATCH FUNCTIONS\n\n\n/**\n * Locate the best instance of 'pattern' in 'text' near 'loc'.\n * @param {string} text The text to search.\n * @param {string} pattern The pattern to search for.\n * @param {number} loc The location to search around.\n * @return {number} Best match index or -1.\n */\ndiff_match_patch.prototype.match_main = function(text, pattern, loc) {\n  // Check for null inputs.\n  if (text == null || pattern == null || loc == null) {\n    throw new Error('Null input. (match_main)');\n  }\n\n  loc = Math.max(0, Math.min(loc, text.length));\n  if (text == pattern) {\n    // Shortcut (potentially not guaranteed by the algorithm)\n    return 0;\n  } else if (!text.length) {\n    // Nothing to match.\n    return -1;\n  } else if (text.substring(loc, loc + pattern.length) == pattern) {\n    // Perfect match at the perfect spot!  (Includes case of null pattern)\n    return loc;\n  } else {\n    // Do a fuzzy compare.\n    return this.match_bitap_(text, pattern, loc);\n  }\n};\n\n\n/**\n * Locate the best instance of 'pattern' in 'text' near 'loc' using the\n * Bitap algorithm.\n * @param {string} text The text to search.\n * @param {string} pattern The pattern to search for.\n * @param {number} loc The location to search around.\n * @return {number} Best match index or -1.\n * @private\n */\ndiff_match_patch.prototype.match_bitap_ = function(text, pattern, loc) {\n  if (pattern.length > this.Match_MaxBits) {\n    throw new Error('Pattern too long for this browser.');\n  }\n\n  // Initialise the alphabet.\n  var s = this.match_alphabet_(pattern);\n\n  var dmp = this;  // 'this' becomes 'window' in a closure.\n\n  /**\n   * Compute and return the score for a match with e errors and x location.\n   * Accesses loc and pattern through being a closure.\n   * @param {number} e Number of errors in match.\n   * @param {number} x Location of match.\n   * @return {number} Overall score for match (0.0 = good, 1.0 = bad).\n   * @private\n   */\n  function match_bitapScore_(e, x) {\n    var accuracy = e / pattern.length;\n    var proximity = Math.abs(loc - x);\n    if (!dmp.Match_Distance) {\n      // Dodge divide by zero error.\n      return proximity ? 1.0 : accuracy;\n    }\n    return accuracy + (proximity / dmp.Match_Distance);\n  }\n\n  // Highest score beyond which we give up.\n  var score_threshold = this.Match_Threshold;\n  // Is there a nearby exact match? (speedup)\n  var best_loc = text.indexOf(pattern, loc);\n  if (best_loc != -1) {\n    score_threshold = Math.min(match_bitapScore_(0, best_loc), score_threshold);\n    // What about in the other direction? (speedup)\n    best_loc = text.lastIndexOf(pattern, loc + pattern.length);\n    if (best_loc != -1) {\n      score_threshold =\n          Math.min(match_bitapScore_(0, best_loc), score_threshold);\n    }\n  }\n\n  // Initialise the bit arrays.\n  var matchmask = 1 << (pattern.length - 1);\n  best_loc = -1;\n\n  var bin_min, bin_mid;\n  var bin_max = pattern.length + text.length;\n  var last_rd;\n  for (var d = 0; d < pattern.length; d++) {\n    // Scan for the best match; each iteration allows for one more error.\n    // Run a binary search to determine how far from 'loc' we can stray at this\n    // error level.\n    bin_min = 0;\n    bin_mid = bin_max;\n    while (bin_min < bin_mid) {\n      if (match_bitapScore_(d, loc + bin_mid) <= score_threshold) {\n        bin_min = bin_mid;\n      } else {\n        bin_max = bin_mid;\n      }\n      bin_mid = Math.floor((bin_max - bin_min) / 2 + bin_min);\n    }\n    // Use the result from this iteration as the maximum for the next.\n    bin_max = bin_mid;\n    var start = Math.max(1, loc - bin_mid + 1);\n    var finish = Math.min(loc + bin_mid, text.length) + pattern.length;\n\n    var rd = Array(finish + 2);\n    rd[finish + 1] = (1 << d) - 1;\n    for (var j = finish; j >= start; j--) {\n      // The alphabet (s) is a sparse hash, so the following line generates\n      // warnings.\n      var charMatch = s[text.charAt(j - 1)];\n      if (d === 0) {  // First pass: exact match.\n        rd[j] = ((rd[j + 1] << 1) | 1) & charMatch;\n      } else {  // Subsequent passes: fuzzy match.\n        rd[j] = (((rd[j + 1] << 1) | 1) & charMatch) |\n                (((last_rd[j + 1] | last_rd[j]) << 1) | 1) |\n                last_rd[j + 1];\n      }\n      if (rd[j] & matchmask) {\n        var score = match_bitapScore_(d, j - 1);\n        // This match will almost certainly be better than any existing match.\n        // But check anyway.\n        if (score <= score_threshold) {\n          // Told you so.\n          score_threshold = score;\n          best_loc = j - 1;\n          if (best_loc > loc) {\n            // When passing loc, don't exceed our current distance from loc.\n            start = Math.max(1, 2 * loc - best_loc);\n          } else {\n            // Already passed loc, downhill from here on in.\n            break;\n          }\n        }\n      }\n    }\n    // No hope for a (better) match at greater error levels.\n    if (match_bitapScore_(d + 1, loc) > score_threshold) {\n      break;\n    }\n    last_rd = rd;\n  }\n  return best_loc;\n};\n\n\n/**\n * Initialise the alphabet for the Bitap algorithm.\n * @param {string} pattern The text to encode.\n * @return {!Object} Hash of character locations.\n * @private\n */\ndiff_match_patch.prototype.match_alphabet_ = function(pattern) {\n  var s = {};\n  for (var i = 0; i < pattern.length; i++) {\n    s[pattern.charAt(i)] = 0;\n  }\n  for (var i = 0; i < pattern.length; i++) {\n    s[pattern.charAt(i)] |= 1 << (pattern.length - i - 1);\n  }\n  return s;\n};\n\n\n//  PATCH FUNCTIONS\n\n\n/**\n * Increase the context until it is unique,\n * but don't let the pattern expand beyond Match_MaxBits.\n * @param {!diff_match_patch.patch_obj} patch The patch to grow.\n * @param {string} text Source text.\n * @private\n */\ndiff_match_patch.prototype.patch_addContext_ = function(patch, text) {\n  if (text.length == 0) {\n    return;\n  }\n  var pattern = text.substring(patch.start2, patch.start2 + patch.length1);\n  var padding = 0;\n\n  // Look for the first and last matches of pattern in text.  If two different\n  // matches are found, increase the pattern length.\n  while (text.indexOf(pattern) != text.lastIndexOf(pattern) &&\n         pattern.length < this.Match_MaxBits - this.Patch_Margin -\n         this.Patch_Margin) {\n    padding += this.Patch_Margin;\n    pattern = text.substring(patch.start2 - padding,\n                             patch.start2 + patch.length1 + padding);\n  }\n  // Add one chunk for good luck.\n  padding += this.Patch_Margin;\n\n  // Add the prefix.\n  var prefix = text.substring(patch.start2 - padding, patch.start2);\n  if (prefix) {\n    patch.diffs.unshift([DIFF_EQUAL, prefix]);\n  }\n  // Add the suffix.\n  var suffix = text.substring(patch.start2 + patch.length1,\n                              patch.start2 + patch.length1 + padding);\n  if (suffix) {\n    patch.diffs.push([DIFF_EQUAL, suffix]);\n  }\n\n  // Roll back the start points.\n  patch.start1 -= prefix.length;\n  patch.start2 -= prefix.length;\n  // Extend the lengths.\n  patch.length1 += prefix.length + suffix.length;\n  patch.length2 += prefix.length + suffix.length;\n};\n\n\n/**\n * Compute a list of patches to turn text1 into text2.\n * Use diffs if provided, otherwise compute it ourselves.\n * There are four ways to call this function, depending on what data is\n * available to the caller:\n * Method 1:\n * a = text1, b = text2\n * Method 2:\n * a = diffs\n * Method 3 (optimal):\n * a = text1, b = diffs\n * Method 4 (deprecated, use method 3):\n * a = text1, b = text2, c = diffs\n *\n * @param {string|!Array.<!diff_match_patch.Diff>} a text1 (methods 1,3,4) or\n * Array of diff tuples for text1 to text2 (method 2).\n * @param {string|!Array.<!diff_match_patch.Diff>} opt_b text2 (methods 1,4) or\n * Array of diff tuples for text1 to text2 (method 3) or undefined (method 2).\n * @param {string|!Array.<!diff_match_patch.Diff>} opt_c Array of diff tuples\n * for text1 to text2 (method 4) or undefined (methods 1,2,3).\n * @return {!Array.<!diff_match_patch.patch_obj>} Array of Patch objects.\n */\ndiff_match_patch.prototype.patch_make = function(a, opt_b, opt_c) {\n  var text1, diffs;\n  if (typeof a == 'string' && typeof opt_b == 'string' &&\n      typeof opt_c == 'undefined') {\n    // Method 1: text1, text2\n    // Compute diffs from text1 and text2.\n    text1 = /** @type {string} */(a);\n    diffs = this.diff_main(text1, /** @type {string} */(opt_b), true);\n    if (diffs.length > 2) {\n      this.diff_cleanupSemantic(diffs);\n      this.diff_cleanupEfficiency(diffs);\n    }\n  } else if (a && typeof a == 'object' && typeof opt_b == 'undefined' &&\n      typeof opt_c == 'undefined') {\n    // Method 2: diffs\n    // Compute text1 from diffs.\n    diffs = /** @type {!Array.<!diff_match_patch.Diff>} */(a);\n    text1 = this.diff_text1(diffs);\n  } else if (typeof a == 'string' && opt_b && typeof opt_b == 'object' &&\n      typeof opt_c == 'undefined') {\n    // Method 3: text1, diffs\n    text1 = /** @type {string} */(a);\n    diffs = /** @type {!Array.<!diff_match_patch.Diff>} */(opt_b);\n  } else if (typeof a == 'string' && typeof opt_b == 'string' &&\n      opt_c && typeof opt_c == 'object') {\n    // Method 4: text1, text2, diffs\n    // text2 is not used.\n    text1 = /** @type {string} */(a);\n    diffs = /** @type {!Array.<!diff_match_patch.Diff>} */(opt_c);\n  } else {\n    throw new Error('Unknown call format to patch_make.');\n  }\n\n  if (diffs.length === 0) {\n    return [];  // Get rid of the null case.\n  }\n  var patches = [];\n  var patch = new diff_match_patch.patch_obj();\n  var patchDiffLength = 0;  // Keeping our own length var is faster in JS.\n  var char_count1 = 0;  // Number of characters into the text1 string.\n  var char_count2 = 0;  // Number of characters into the text2 string.\n  // Start with text1 (prepatch_text) and apply the diffs until we arrive at\n  // text2 (postpatch_text).  We recreate the patches one by one to determine\n  // context info.\n  var prepatch_text = text1;\n  var postpatch_text = text1;\n  for (var x = 0; x < diffs.length; x++) {\n    var diff_type = diffs[x][0];\n    var diff_text = diffs[x][1];\n\n    if (!patchDiffLength && diff_type !== DIFF_EQUAL) {\n      // A new patch starts here.\n      patch.start1 = char_count1;\n      patch.start2 = char_count2;\n    }\n\n    switch (diff_type) {\n      case DIFF_INSERT:\n        patch.diffs[patchDiffLength++] = diffs[x];\n        patch.length2 += diff_text.length;\n        postpatch_text = postpatch_text.substring(0, char_count2) + diff_text +\n                         postpatch_text.substring(char_count2);\n        break;\n      case DIFF_DELETE:\n        patch.length1 += diff_text.length;\n        patch.diffs[patchDiffLength++] = diffs[x];\n        postpatch_text = postpatch_text.substring(0, char_count2) +\n                         postpatch_text.substring(char_count2 +\n                             diff_text.length);\n        break;\n      case DIFF_EQUAL:\n        if (diff_text.length <= 2 * this.Patch_Margin &&\n            patchDiffLength && diffs.length != x + 1) {\n          // Small equality inside a patch.\n          patch.diffs[patchDiffLength++] = diffs[x];\n          patch.length1 += diff_text.length;\n          patch.length2 += diff_text.length;\n        } else if (diff_text.length >= 2 * this.Patch_Margin) {\n          // Time for a new patch.\n          if (patchDiffLength) {\n            this.patch_addContext_(patch, prepatch_text);\n            patches.push(patch);\n            patch = new diff_match_patch.patch_obj();\n            patchDiffLength = 0;\n            // Unlike Unidiff, our patch lists have a rolling context.\n            // http://code.google.com/p/google-diff-match-patch/wiki/Unidiff\n            // Update prepatch text & pos to reflect the application of the\n            // just completed patch.\n            prepatch_text = postpatch_text;\n            char_count1 = char_count2;\n          }\n        }\n        break;\n    }\n\n    // Update the current character count.\n    if (diff_type !== DIFF_INSERT) {\n      char_count1 += diff_text.length;\n    }\n    if (diff_type !== DIFF_DELETE) {\n      char_count2 += diff_text.length;\n    }\n  }\n  // Pick up the leftover patch if not empty.\n  if (patchDiffLength) {\n    this.patch_addContext_(patch, prepatch_text);\n    patches.push(patch);\n  }\n\n  return patches;\n};\n\n\n/**\n * Given an array of patches, return another array that is identical.\n * @param {!Array.<!diff_match_patch.patch_obj>} patches Array of Patch objects.\n * @return {!Array.<!diff_match_patch.patch_obj>} Array of Patch objects.\n */\ndiff_match_patch.prototype.patch_deepCopy = function(patches) {\n  // Making deep copies is hard in JavaScript.\n  var patchesCopy = [];\n  for (var x = 0; x < patches.length; x++) {\n    var patch = patches[x];\n    var patchCopy = new diff_match_patch.patch_obj();\n    patchCopy.diffs = [];\n    for (var y = 0; y < patch.diffs.length; y++) {\n      patchCopy.diffs[y] = patch.diffs[y].slice();\n    }\n    patchCopy.start1 = patch.start1;\n    patchCopy.start2 = patch.start2;\n    patchCopy.length1 = patch.length1;\n    patchCopy.length2 = patch.length2;\n    patchesCopy[x] = patchCopy;\n  }\n  return patchesCopy;\n};\n\n\n/**\n * Merge a set of patches onto the text.  Return a patched text, as well\n * as a list of true/false values indicating which patches were applied.\n * @param {!Array.<!diff_match_patch.patch_obj>} patches Array of Patch objects.\n * @param {string} text Old text.\n * @return {!Array.<string|!Array.<boolean>>} Two element Array, containing the\n *      new text and an array of boolean values.\n */\ndiff_match_patch.prototype.patch_apply = function(patches, text) {\n  if (patches.length == 0) {\n    return [text, []];\n  }\n\n  // Deep copy the patches so that no changes are made to originals.\n  patches = this.patch_deepCopy(patches);\n\n  var nullPadding = this.patch_addPadding(patches);\n  text = nullPadding + text + nullPadding;\n\n  this.patch_splitMax(patches);\n  // delta keeps track of the offset between the expected and actual location\n  // of the previous patch.  If there are patches expected at positions 10 and\n  // 20, but the first patch was found at 12, delta is 2 and the second patch\n  // has an effective expected position of 22.\n  var delta = 0;\n  var results = [];\n  for (var x = 0; x < patches.length; x++) {\n    var expected_loc = patches[x].start2 + delta;\n    var text1 = this.diff_text1(patches[x].diffs);\n    var start_loc;\n    var end_loc = -1;\n    if (text1.length > this.Match_MaxBits) {\n      // patch_splitMax will only provide an oversized pattern in the case of\n      // a monster delete.\n      start_loc = this.match_main(text, text1.substring(0, this.Match_MaxBits),\n                                  expected_loc);\n      if (start_loc != -1) {\n        end_loc = this.match_main(text,\n            text1.substring(text1.length - this.Match_MaxBits),\n            expected_loc + text1.length - this.Match_MaxBits);\n        if (end_loc == -1 || start_loc >= end_loc) {\n          // Can't find valid trailing context.  Drop this patch.\n          start_loc = -1;\n        }\n      }\n    } else {\n      start_loc = this.match_main(text, text1, expected_loc);\n    }\n    if (start_loc == -1) {\n      // No match found.  :(\n      results[x] = false;\n      // Subtract the delta for this failed patch from subsequent patches.\n      delta -= patches[x].length2 - patches[x].length1;\n    } else {\n      // Found a match.  :)\n      results[x] = true;\n      delta = start_loc - expected_loc;\n      var text2;\n      if (end_loc == -1) {\n        text2 = text.substring(start_loc, start_loc + text1.length);\n      } else {\n        text2 = text.substring(start_loc, end_loc + this.Match_MaxBits);\n      }\n      if (text1 == text2) {\n        // Perfect match, just shove the replacement text in.\n        text = text.substring(0, start_loc) +\n               this.diff_text2(patches[x].diffs) +\n               text.substring(start_loc + text1.length);\n      } else {\n        // Imperfect match.  Run a diff to get a framework of equivalent\n        // indices.\n        var diffs = this.diff_main(text1, text2, false);\n        if (text1.length > this.Match_MaxBits &&\n            this.diff_levenshtein(diffs) / text1.length >\n            this.Patch_DeleteThreshold) {\n          // The end points match, but the content is unacceptably bad.\n          results[x] = false;\n        } else {\n          this.diff_cleanupSemanticLossless(diffs);\n          var index1 = 0;\n          var index2;\n          for (var y = 0; y < patches[x].diffs.length; y++) {\n            var mod = patches[x].diffs[y];\n            if (mod[0] !== DIFF_EQUAL) {\n              index2 = this.diff_xIndex(diffs, index1);\n            }\n            if (mod[0] === DIFF_INSERT) {  // Insertion\n              text = text.substring(0, start_loc + index2) + mod[1] +\n                     text.substring(start_loc + index2);\n            } else if (mod[0] === DIFF_DELETE) {  // Deletion\n              text = text.substring(0, start_loc + index2) +\n                     text.substring(start_loc + this.diff_xIndex(diffs,\n                         index1 + mod[1].length));\n            }\n            if (mod[0] !== DIFF_DELETE) {\n              index1 += mod[1].length;\n            }\n          }\n        }\n      }\n    }\n  }\n  // Strip the padding off.\n  text = text.substring(nullPadding.length, text.length - nullPadding.length);\n  return [text, results];\n};\n\n\n/**\n * Add some padding on text start and end so that edges can match something.\n * Intended to be called only from within patch_apply.\n * @param {!Array.<!diff_match_patch.patch_obj>} patches Array of Patch objects.\n * @return {string} The padding string added to each side.\n */\ndiff_match_patch.prototype.patch_addPadding = function(patches) {\n  var paddingLength = this.Patch_Margin;\n  var nullPadding = '';\n  for (var x = 1; x <= paddingLength; x++) {\n    nullPadding += String.fromCharCode(x);\n  }\n\n  // Bump all the patches forward.\n  for (var x = 0; x < patches.length; x++) {\n    patches[x].start1 += paddingLength;\n    patches[x].start2 += paddingLength;\n  }\n\n  // Add some padding on start of first diff.\n  var patch = patches[0];\n  var diffs = patch.diffs;\n  if (diffs.length == 0 || diffs[0][0] != DIFF_EQUAL) {\n    // Add nullPadding equality.\n    diffs.unshift([DIFF_EQUAL, nullPadding]);\n    patch.start1 -= paddingLength;  // Should be 0.\n    patch.start2 -= paddingLength;  // Should be 0.\n    patch.length1 += paddingLength;\n    patch.length2 += paddingLength;\n  } else if (paddingLength > diffs[0][1].length) {\n    // Grow first equality.\n    var extraLength = paddingLength - diffs[0][1].length;\n    diffs[0][1] = nullPadding.substring(diffs[0][1].length) + diffs[0][1];\n    patch.start1 -= extraLength;\n    patch.start2 -= extraLength;\n    patch.length1 += extraLength;\n    patch.length2 += extraLength;\n  }\n\n  // Add some padding on end of last diff.\n  patch = patches[patches.length - 1];\n  diffs = patch.diffs;\n  if (diffs.length == 0 || diffs[diffs.length - 1][0] != DIFF_EQUAL) {\n    // Add nullPadding equality.\n    diffs.push([DIFF_EQUAL, nullPadding]);\n    patch.length1 += paddingLength;\n    patch.length2 += paddingLength;\n  } else if (paddingLength > diffs[diffs.length - 1][1].length) {\n    // Grow last equality.\n    var extraLength = paddingLength - diffs[diffs.length - 1][1].length;\n    diffs[diffs.length - 1][1] += nullPadding.substring(0, extraLength);\n    patch.length1 += extraLength;\n    patch.length2 += extraLength;\n  }\n\n  return nullPadding;\n};\n\n\n/**\n * Look through the patches and break up any which are longer than the maximum\n * limit of the match algorithm.\n * Intended to be called only from within patch_apply.\n * @param {!Array.<!diff_match_patch.patch_obj>} patches Array of Patch objects.\n */\ndiff_match_patch.prototype.patch_splitMax = function(patches) {\n  var patch_size = this.Match_MaxBits;\n  for (var x = 0; x < patches.length; x++) {\n    if (patches[x].length1 <= patch_size) {\n      continue;\n    }\n    var bigpatch = patches[x];\n    // Remove the big old patch.\n    patches.splice(x--, 1);\n    var start1 = bigpatch.start1;\n    var start2 = bigpatch.start2;\n    var precontext = '';\n    while (bigpatch.diffs.length !== 0) {\n      // Create one of several smaller patches.\n      var patch = new diff_match_patch.patch_obj();\n      var empty = true;\n      patch.start1 = start1 - precontext.length;\n      patch.start2 = start2 - precontext.length;\n      if (precontext !== '') {\n        patch.length1 = patch.length2 = precontext.length;\n        patch.diffs.push([DIFF_EQUAL, precontext]);\n      }\n      while (bigpatch.diffs.length !== 0 &&\n             patch.length1 < patch_size - this.Patch_Margin) {\n        var diff_type = bigpatch.diffs[0][0];\n        var diff_text = bigpatch.diffs[0][1];\n        if (diff_type === DIFF_INSERT) {\n          // Insertions are harmless.\n          patch.length2 += diff_text.length;\n          start2 += diff_text.length;\n          patch.diffs.push(bigpatch.diffs.shift());\n          empty = false;\n        } else if (diff_type === DIFF_DELETE && patch.diffs.length == 1 &&\n                   patch.diffs[0][0] == DIFF_EQUAL &&\n                   diff_text.length > 2 * patch_size) {\n          // This is a large deletion.  Let it pass in one chunk.\n          patch.length1 += diff_text.length;\n          start1 += diff_text.length;\n          empty = false;\n          patch.diffs.push([diff_type, diff_text]);\n          bigpatch.diffs.shift();\n        } else {\n          // Deletion or equality.  Only take as much as we can stomach.\n          diff_text = diff_text.substring(0,\n              patch_size - patch.length1 - this.Patch_Margin);\n          patch.length1 += diff_text.length;\n          start1 += diff_text.length;\n          if (diff_type === DIFF_EQUAL) {\n            patch.length2 += diff_text.length;\n            start2 += diff_text.length;\n          } else {\n            empty = false;\n          }\n          patch.diffs.push([diff_type, diff_text]);\n          if (diff_text == bigpatch.diffs[0][1]) {\n            bigpatch.diffs.shift();\n          } else {\n            bigpatch.diffs[0][1] =\n                bigpatch.diffs[0][1].substring(diff_text.length);\n          }\n        }\n      }\n      // Compute the head context for the next patch.\n      precontext = this.diff_text2(patch.diffs);\n      precontext =\n          precontext.substring(precontext.length - this.Patch_Margin);\n      // Append the end context for this patch.\n      var postcontext = this.diff_text1(bigpatch.diffs)\n                            .substring(0, this.Patch_Margin);\n      if (postcontext !== '') {\n        patch.length1 += postcontext.length;\n        patch.length2 += postcontext.length;\n        if (patch.diffs.length !== 0 &&\n            patch.diffs[patch.diffs.length - 1][0] === DIFF_EQUAL) {\n          patch.diffs[patch.diffs.length - 1][1] += postcontext;\n        } else {\n          patch.diffs.push([DIFF_EQUAL, postcontext]);\n        }\n      }\n      if (!empty) {\n        patches.splice(++x, 0, patch);\n      }\n    }\n  }\n};\n\n\n/**\n * Take a list of patches and return a textual representation.\n * @param {!Array.<!diff_match_patch.patch_obj>} patches Array of Patch objects.\n * @return {string} Text representation of patches.\n */\ndiff_match_patch.prototype.patch_toText = function(patches) {\n  var text = [];\n  for (var x = 0; x < patches.length; x++) {\n    text[x] = patches[x];\n  }\n  return text.join('');\n};\n\n\n/**\n * Parse a textual representation of patches and return a list of Patch objects.\n * @param {string} textline Text representation of patches.\n * @return {!Array.<!diff_match_patch.patch_obj>} Array of Patch objects.\n * @throws {!Error} If invalid input.\n */\ndiff_match_patch.prototype.patch_fromText = function(textline) {\n  var patches = [];\n  if (!textline) {\n    return patches;\n  }\n  var text = textline.split('\\n');\n  var textPointer = 0;\n  var patchHeader = /^@@ -(\\d+),?(\\d*) \\+(\\d+),?(\\d*) @@$/;\n  while (textPointer < text.length) {\n    var m = text[textPointer].match(patchHeader);\n    if (!m) {\n      throw new Error('Invalid patch string: ' + text[textPointer]);\n    }\n    var patch = new diff_match_patch.patch_obj();\n    patches.push(patch);\n    patch.start1 = parseInt(m[1], 10);\n    if (m[2] === '') {\n      patch.start1--;\n      patch.length1 = 1;\n    } else if (m[2] == '0') {\n      patch.length1 = 0;\n    } else {\n      patch.start1--;\n      patch.length1 = parseInt(m[2], 10);\n    }\n\n    patch.start2 = parseInt(m[3], 10);\n    if (m[4] === '') {\n      patch.start2--;\n      patch.length2 = 1;\n    } else if (m[4] == '0') {\n      patch.length2 = 0;\n    } else {\n      patch.start2--;\n      patch.length2 = parseInt(m[4], 10);\n    }\n    textPointer++;\n\n    while (textPointer < text.length) {\n      var sign = text[textPointer].charAt(0);\n      try {\n        var line = decodeURI(text[textPointer].substring(1));\n      } catch (ex) {\n        // Malformed URI sequence.\n        throw new Error('Illegal escape in patch_fromText: ' + line);\n      }\n      if (sign == '-') {\n        // Deletion.\n        patch.diffs.push([DIFF_DELETE, line]);\n      } else if (sign == '+') {\n        // Insertion.\n        patch.diffs.push([DIFF_INSERT, line]);\n      } else if (sign == ' ') {\n        // Minor equality.\n        patch.diffs.push([DIFF_EQUAL, line]);\n      } else if (sign == '@') {\n        // Start of next patch.\n        break;\n      } else if (sign === '') {\n        // Blank line?  Whatever.\n      } else {\n        // WTF?\n        throw new Error('Invalid patch mode \"' + sign + '\" in: ' + line);\n      }\n      textPointer++;\n    }\n  }\n  return patches;\n};\n\n\n/**\n * Class representing one patch operation.\n * @constructor\n */\ndiff_match_patch.patch_obj = function() {\n  /** @type {!Array.<!diff_match_patch.Diff>} */\n  this.diffs = [];\n  /** @type {?number} */\n  this.start1 = null;\n  /** @type {?number} */\n  this.start2 = null;\n  /** @type {number} */\n  this.length1 = 0;\n  /** @type {number} */\n  this.length2 = 0;\n};\n\n\n/**\n * Emmulate GNU diff's format.\n * Header: @@ -382,8 +481,9 @@\n * Indicies are printed as 1-based, not 0-based.\n * @return {string} The GNU diff string.\n */\ndiff_match_patch.patch_obj.prototype.toString = function() {\n  var coords1, coords2;\n  if (this.length1 === 0) {\n    coords1 = this.start1 + ',0';\n  } else if (this.length1 == 1) {\n    coords1 = this.start1 + 1;\n  } else {\n    coords1 = (this.start1 + 1) + ',' + this.length1;\n  }\n  if (this.length2 === 0) {\n    coords2 = this.start2 + ',0';\n  } else if (this.length2 == 1) {\n    coords2 = this.start2 + 1;\n  } else {\n    coords2 = (this.start2 + 1) + ',' + this.length2;\n  }\n  var text = ['@@ -' + coords1 + ' +' + coords2 + ' @@\\n'];\n  var op;\n  // Escape the body of the patch with %xx notation.\n  for (var x = 0; x < this.diffs.length; x++) {\n    switch (this.diffs[x][0]) {\n      case DIFF_INSERT:\n        op = '+';\n        break;\n      case DIFF_DELETE:\n        op = '-';\n        break;\n      case DIFF_EQUAL:\n        op = ' ';\n        break;\n    }\n    text[x + 1] = op + encodeURI(this.diffs[x][1]) + '\\n';\n  }\n  return text.join('').replace(/%20/g, ' ');\n};\n\n\n// The following export code was added by @ForbesLindesay\nmodule.exports = diff_match_patch;\nmodule.exports['diff_match_patch'] = diff_match_patch;\nmodule.exports['DIFF_DELETE'] = DIFF_DELETE;\nmodule.exports['DIFF_INSERT'] = DIFF_INSERT;\nmodule.exports['DIFF_EQUAL'] = DIFF_EQUAL;\n});\n\n/* global diff_match_patch */\nvar TEXT_DIFF = 2;\nvar DEFAULT_MIN_LENGTH = 60;\nvar cachedDiffPatch = null;\n\nvar getDiffMatchPatch = function getDiffMatchPatch(required) {\n  /* jshint camelcase: false */\n\n  if (!cachedDiffPatch) {\n    var instance = void 0;\n    /* eslint-disable camelcase, new-cap */\n    if (typeof diff_match_patch !== 'undefined') {\n      // already loaded, probably a browser\n      instance = typeof diff_match_patch === 'function' ? new diff_match_patch() : new diff_match_patch.diff_match_patch();\n    } else if (diffMatchPatch) {\n      try {\n        instance = diffMatchPatch && new diffMatchPatch();\n      } catch (err) {\n        instance = null;\n      }\n    }\n    /* eslint-enable camelcase, new-cap */\n    if (!instance) {\n      if (!required) {\n        return null;\n      }\n      var error = new Error('text diff_match_patch library not found');\n      // eslint-disable-next-line camelcase\n      error.diff_match_patch_not_found = true;\n      throw error;\n    }\n    cachedDiffPatch = {\n      diff: function diff(txt1, txt2) {\n        return instance.patch_toText(instance.patch_make(txt1, txt2));\n      },\n      patch: function patch(txt1, _patch) {\n        var results = instance.patch_apply(instance.patch_fromText(_patch), txt1);\n        for (var i = 0; i < results[1].length; i++) {\n          if (!results[1][i]) {\n            var _error = new Error('text patch failed');\n            _error.textPatchFailed = true;\n          }\n        }\n        return results[0];\n      }\n    };\n  }\n  return cachedDiffPatch;\n};\n\nvar diffFilter$3 = function textsDiffFilter(context) {\n  if (context.leftType !== 'string') {\n    return;\n  }\n  var minLength = context.options && context.options.textDiff && context.options.textDiff.minLength || DEFAULT_MIN_LENGTH;\n  if (context.left.length < minLength || context.right.length < minLength) {\n    context.setResult([context.left, context.right]).exit();\n    return;\n  }\n  // large text, try to use a text-diff algorithm\n  var diffMatchPatch$$1 = getDiffMatchPatch();\n  if (!diffMatchPatch$$1) {\n    // diff-match-patch library not available,\n    // fallback to regular string replace\n    context.setResult([context.left, context.right]).exit();\n    return;\n  }\n  var diff = diffMatchPatch$$1.diff;\n  context.setResult([diff(context.left, context.right), 0, TEXT_DIFF]).exit();\n};\ndiffFilter$3.filterName = 'texts';\n\nvar patchFilter$3 = function textsPatchFilter(context) {\n  if (context.nested) {\n    return;\n  }\n  if (context.delta[2] !== TEXT_DIFF) {\n    return;\n  }\n\n  // text-diff, use a text-patch algorithm\n  var patch = getDiffMatchPatch(true).patch;\n  context.setResult(patch(context.left, context.delta[0])).exit();\n};\npatchFilter$3.filterName = 'texts';\n\nvar textDeltaReverse = function textDeltaReverse(delta) {\n  var i = void 0;\n  var l = void 0;\n  var lines = void 0;\n  var line = void 0;\n  var lineTmp = void 0;\n  var header = null;\n  var headerRegex = /^@@ +-(\\d+),(\\d+) +\\+(\\d+),(\\d+) +@@$/;\n  var lineHeader = void 0;\n  lines = delta.split('\\n');\n  for (i = 0, l = lines.length; i < l; i++) {\n    line = lines[i];\n    var lineStart = line.slice(0, 1);\n    if (lineStart === '@') {\n      header = headerRegex.exec(line);\n      lineHeader = i;\n\n      // fix header\n      lines[lineHeader] = '@@ -' + header[3] + ',' + header[4] + ' +' + header[1] + ',' + header[2] + ' @@';\n    } else if (lineStart === '+') {\n      lines[i] = '-' + lines[i].slice(1);\n      if (lines[i - 1].slice(0, 1) === '+') {\n        // swap lines to keep default order (-+)\n        lineTmp = lines[i];\n        lines[i] = lines[i - 1];\n        lines[i - 1] = lineTmp;\n      }\n    } else if (lineStart === '-') {\n      lines[i] = '+' + lines[i].slice(1);\n    }\n  }\n  return lines.join('\\n');\n};\n\nvar reverseFilter$3 = function textsReverseFilter(context) {\n  if (context.nested) {\n    return;\n  }\n  if (context.delta[2] !== TEXT_DIFF) {\n    return;\n  }\n\n  // text-diff, use a text-diff algorithm\n  context.setResult([textDeltaReverse(context.delta[0]), 0, TEXT_DIFF]).exit();\n};\nreverseFilter$3.filterName = 'texts';\n\nvar DiffPatcher = function () {\n  function DiffPatcher(options) {\n    classCallCheck(this, DiffPatcher);\n\n    this.processor = new Processor(options);\n    this.processor.pipe(new Pipe('diff').append(collectChildrenDiffFilter, diffFilter, diffFilter$2, diffFilter$3, objectsDiffFilter, diffFilter$1).shouldHaveResult());\n    this.processor.pipe(new Pipe('patch').append(collectChildrenPatchFilter, collectChildrenPatchFilter$1, patchFilter, patchFilter$3, patchFilter$1, patchFilter$2).shouldHaveResult());\n    this.processor.pipe(new Pipe('reverse').append(collectChildrenReverseFilter, collectChildrenReverseFilter$1, reverseFilter, reverseFilter$3, reverseFilter$1, reverseFilter$2).shouldHaveResult());\n  }\n\n  createClass(DiffPatcher, [{\n    key: 'options',\n    value: function options() {\n      var _processor;\n\n      return (_processor = this.processor).options.apply(_processor, arguments);\n    }\n  }, {\n    key: 'diff',\n    value: function diff(left, right) {\n      return this.processor.process(new DiffContext(left, right));\n    }\n  }, {\n    key: 'patch',\n    value: function patch(left, delta) {\n      return this.processor.process(new PatchContext(left, delta));\n    }\n  }, {\n    key: 'reverse',\n    value: function reverse(delta) {\n      return this.processor.process(new ReverseContext(delta));\n    }\n  }, {\n    key: 'unpatch',\n    value: function unpatch(right, delta) {\n      return this.patch(right, this.reverse(delta));\n    }\n  }, {\n    key: 'clone',\n    value: function clone$$1(value) {\n      return clone(value);\n    }\n  }]);\n  return DiffPatcher;\n}();\n\nvar isArray$3 = typeof Array.isArray === 'function' ? Array.isArray : function (a) {\n  return a instanceof Array;\n};\n\nvar getObjectKeys = typeof Object.keys === 'function' ? function (obj) {\n  return Object.keys(obj);\n} : function (obj) {\n  var names = [];\n  for (var property in obj) {\n    if (Object.prototype.hasOwnProperty.call(obj, property)) {\n      names.push(property);\n    }\n  }\n  return names;\n};\n\nvar trimUnderscore = function trimUnderscore(str) {\n  if (str.substr(0, 1) === '_') {\n    return str.slice(1);\n  }\n  return str;\n};\n\nvar arrayKeyToSortNumber = function arrayKeyToSortNumber(key) {\n  if (key === '_t') {\n    return -1;\n  } else {\n    if (key.substr(0, 1) === '_') {\n      return parseInt(key.slice(1), 10);\n    } else {\n      return parseInt(key, 10) + 0.1;\n    }\n  }\n};\n\nvar arrayKeyComparer = function arrayKeyComparer(key1, key2) {\n  return arrayKeyToSortNumber(key1) - arrayKeyToSortNumber(key2);\n};\n\nvar BaseFormatter = function () {\n  function BaseFormatter() {\n    classCallCheck(this, BaseFormatter);\n  }\n\n  createClass(BaseFormatter, [{\n    key: 'format',\n    value: function format(delta, left) {\n      var context = {};\n      this.prepareContext(context);\n      this.recurse(context, delta, left);\n      return this.finalize(context);\n    }\n  }, {\n    key: 'prepareContext',\n    value: function prepareContext(context) {\n      context.buffer = [];\n      context.out = function () {\n        var _buffer;\n\n        (_buffer = this.buffer).push.apply(_buffer, arguments);\n      };\n    }\n  }, {\n    key: 'typeFormattterNotFound',\n    value: function typeFormattterNotFound(context, deltaType) {\n      throw new Error('cannot format delta type: ' + deltaType);\n    }\n  }, {\n    key: 'typeFormattterErrorFormatter',\n    value: function typeFormattterErrorFormatter(context, err) {\n      return err.toString();\n    }\n  }, {\n    key: 'finalize',\n    value: function finalize(_ref) {\n      var buffer = _ref.buffer;\n\n      if (isArray$3(buffer)) {\n        return buffer.join('');\n      }\n    }\n  }, {\n    key: 'recurse',\n    value: function recurse(context, delta, left, key, leftKey, movedFrom, isLast) {\n      var useMoveOriginHere = delta && movedFrom;\n      var leftValue = useMoveOriginHere ? movedFrom.value : left;\n\n      if (typeof delta === 'undefined' && typeof key === 'undefined') {\n        return undefined;\n      }\n\n      var type = this.getDeltaType(delta, movedFrom);\n      var nodeType = type === 'node' ? delta._t === 'a' ? 'array' : 'object' : '';\n\n      if (typeof key !== 'undefined') {\n        this.nodeBegin(context, key, leftKey, type, nodeType, isLast);\n      } else {\n        this.rootBegin(context, type, nodeType);\n      }\n\n      var typeFormattter = void 0;\n      try {\n        typeFormattter = this['format_' + type] || this.typeFormattterNotFound(context, type);\n        typeFormattter.call(this, context, delta, leftValue, key, leftKey, movedFrom);\n      } catch (err) {\n        this.typeFormattterErrorFormatter(context, err, delta, leftValue, key, leftKey, movedFrom);\n        if (typeof console !== 'undefined' && console.error) {\n          console.error(err.stack);\n        }\n      }\n\n      if (typeof key !== 'undefined') {\n        this.nodeEnd(context, key, leftKey, type, nodeType, isLast);\n      } else {\n        this.rootEnd(context, type, nodeType);\n      }\n    }\n  }, {\n    key: 'formatDeltaChildren',\n    value: function formatDeltaChildren(context, delta, left) {\n      var self = this;\n      this.forEachDeltaKey(delta, left, function (key, leftKey, movedFrom, isLast) {\n        self.recurse(context, delta[key], left ? left[leftKey] : undefined, key, leftKey, movedFrom, isLast);\n      });\n    }\n  }, {\n    key: 'forEachDeltaKey',\n    value: function forEachDeltaKey(delta, left, fn) {\n      var keys = getObjectKeys(delta);\n      var arrayKeys = delta._t === 'a';\n      var moveDestinations = {};\n      var name = void 0;\n      if (typeof left !== 'undefined') {\n        for (name in left) {\n          if (Object.prototype.hasOwnProperty.call(left, name)) {\n            if (typeof delta[name] === 'undefined' && (!arrayKeys || typeof delta['_' + name] === 'undefined')) {\n              keys.push(name);\n            }\n          }\n        }\n      }\n      // look for move destinations\n      for (name in delta) {\n        if (Object.prototype.hasOwnProperty.call(delta, name)) {\n          var value = delta[name];\n          if (isArray$3(value) && value[2] === 3) {\n            moveDestinations[value[1].toString()] = {\n              key: name,\n              value: left && left[parseInt(name.substr(1))]\n            };\n            if (this.includeMoveDestinations !== false) {\n              if (typeof left === 'undefined' && typeof delta[value[1]] === 'undefined') {\n                keys.push(value[1].toString());\n              }\n            }\n          }\n        }\n      }\n      if (arrayKeys) {\n        keys.sort(arrayKeyComparer);\n      } else {\n        keys.sort();\n      }\n      for (var index = 0, length = keys.length; index < length; index++) {\n        var key = keys[index];\n        if (arrayKeys && key === '_t') {\n          continue;\n        }\n        var leftKey = arrayKeys ? typeof key === 'number' ? key : parseInt(trimUnderscore(key), 10) : key;\n        var isLast = index === length - 1;\n        fn(key, leftKey, moveDestinations[leftKey], isLast);\n      }\n    }\n  }, {\n    key: 'getDeltaType',\n    value: function getDeltaType(delta, movedFrom) {\n      if (typeof delta === 'undefined') {\n        if (typeof movedFrom !== 'undefined') {\n          return 'movedestination';\n        }\n        return 'unchanged';\n      }\n      if (isArray$3(delta)) {\n        if (delta.length === 1) {\n          return 'added';\n        }\n        if (delta.length === 2) {\n          return 'modified';\n        }\n        if (delta.length === 3 && delta[2] === 0) {\n          return 'deleted';\n        }\n        if (delta.length === 3 && delta[2] === 2) {\n          return 'textdiff';\n        }\n        if (delta.length === 3 && delta[2] === 3) {\n          return 'moved';\n        }\n      } else if ((typeof delta === 'undefined' ? 'undefined' : _typeof(delta)) === 'object') {\n        return 'node';\n      }\n      return 'unknown';\n    }\n  }, {\n    key: 'parseTextDiff',\n    value: function parseTextDiff(value) {\n      var output = [];\n      var lines = value.split('\\n@@ ');\n      for (var i = 0, l = lines.length; i < l; i++) {\n        var line = lines[i];\n        var lineOutput = {\n          pieces: []\n        };\n        var location = /^(?:@@ )?[-+]?(\\d+),(\\d+)/.exec(line).slice(1);\n        lineOutput.location = {\n          line: location[0],\n          chr: location[1]\n        };\n        var pieces = line.split('\\n').slice(1);\n        for (var pieceIndex = 0, piecesLength = pieces.length; pieceIndex < piecesLength; pieceIndex++) {\n          var piece = pieces[pieceIndex];\n          if (!piece.length) {\n            continue;\n          }\n          var pieceOutput = {\n            type: 'context'\n          };\n          if (piece.substr(0, 1) === '+') {\n            pieceOutput.type = 'added';\n          } else if (piece.substr(0, 1) === '-') {\n            pieceOutput.type = 'deleted';\n          }\n          pieceOutput.text = piece.slice(1);\n          lineOutput.pieces.push(pieceOutput);\n        }\n        output.push(lineOutput);\n      }\n      return output;\n    }\n  }]);\n  return BaseFormatter;\n}();\n\n\n\nvar base = Object.freeze({\n\tdefault: BaseFormatter\n});\n\nvar HtmlFormatter = function (_BaseFormatter) {\n  inherits(HtmlFormatter, _BaseFormatter);\n\n  function HtmlFormatter() {\n    classCallCheck(this, HtmlFormatter);\n    return possibleConstructorReturn(this, (HtmlFormatter.__proto__ || Object.getPrototypeOf(HtmlFormatter)).apply(this, arguments));\n  }\n\n  createClass(HtmlFormatter, [{\n    key: 'typeFormattterErrorFormatter',\n    value: function typeFormattterErrorFormatter(context, err) {\n      context.out('<pre class=\"jsondiffpatch-error\">' + err + '</pre>');\n    }\n  }, {\n    key: 'formatValue',\n    value: function formatValue(context, value) {\n      context.out('<pre>' + htmlEscape(JSON.stringify(value, null, 2)) + '</pre>');\n    }\n  }, {\n    key: 'formatTextDiffString',\n    value: function formatTextDiffString(context, value) {\n      var lines = this.parseTextDiff(value);\n      context.out('<ul class=\"jsondiffpatch-textdiff\">');\n      for (var i = 0, l = lines.length; i < l; i++) {\n        var line = lines[i];\n        context.out('<li><div class=\"jsondiffpatch-textdiff-location\">' + ('<span class=\"jsondiffpatch-textdiff-line-number\">' + line.location.line + '</span><span class=\"jsondiffpatch-textdiff-char\">' + line.location.chr + '</span></div><div class=\"jsondiffpatch-textdiff-line\">'));\n        var pieces = line.pieces;\n        for (var pieceIndex = 0, piecesLength = pieces.length; pieceIndex < piecesLength; pieceIndex++) {\n          /* global decodeURI */\n          var piece = pieces[pieceIndex];\n          context.out('<span class=\"jsondiffpatch-textdiff-' + piece.type + '\">' + htmlEscape(decodeURI(piece.text)) + '</span>');\n        }\n        context.out('</div></li>');\n      }\n      context.out('</ul>');\n    }\n  }, {\n    key: 'rootBegin',\n    value: function rootBegin(context, type, nodeType) {\n      var nodeClass = 'jsondiffpatch-' + type + (nodeType ? ' jsondiffpatch-child-node-type-' + nodeType : '');\n      context.out('<div class=\"jsondiffpatch-delta ' + nodeClass + '\">');\n    }\n  }, {\n    key: 'rootEnd',\n    value: function rootEnd(context) {\n      context.out('</div>' + (context.hasArrows ? '<script type=\"text/javascript\">setTimeout(' + (adjustArrows.toString() + ',10);</script>') : ''));\n    }\n  }, {\n    key: 'nodeBegin',\n    value: function nodeBegin(context, key, leftKey, type, nodeType) {\n      var nodeClass = 'jsondiffpatch-' + type + (nodeType ? ' jsondiffpatch-child-node-type-' + nodeType : '');\n      context.out('<li class=\"' + nodeClass + '\" data-key=\"' + leftKey + '\">' + ('<div class=\"jsondiffpatch-property-name\">' + leftKey + '</div>'));\n    }\n  }, {\n    key: 'nodeEnd',\n    value: function nodeEnd(context) {\n      context.out('</li>');\n    }\n\n    /* jshint camelcase: false */\n    /* eslint-disable camelcase */\n\n  }, {\n    key: 'format_unchanged',\n    value: function format_unchanged(context, delta, left) {\n      if (typeof left === 'undefined') {\n        return;\n      }\n      context.out('<div class=\"jsondiffpatch-value\">');\n      this.formatValue(context, left);\n      context.out('</div>');\n    }\n  }, {\n    key: 'format_movedestination',\n    value: function format_movedestination(context, delta, left) {\n      if (typeof left === 'undefined') {\n        return;\n      }\n      context.out('<div class=\"jsondiffpatch-value\">');\n      this.formatValue(context, left);\n      context.out('</div>');\n    }\n  }, {\n    key: 'format_node',\n    value: function format_node(context, delta, left) {\n      // recurse\n      var nodeType = delta._t === 'a' ? 'array' : 'object';\n      context.out('<ul class=\"jsondiffpatch-node jsondiffpatch-node-type-' + nodeType + '\">');\n      this.formatDeltaChildren(context, delta, left);\n      context.out('</ul>');\n    }\n  }, {\n    key: 'format_added',\n    value: function format_added(context, delta) {\n      context.out('<div class=\"jsondiffpatch-value\">');\n      this.formatValue(context, delta[0]);\n      context.out('</div>');\n    }\n  }, {\n    key: 'format_modified',\n    value: function format_modified(context, delta) {\n      context.out('<div class=\"jsondiffpatch-value jsondiffpatch-left-value\">');\n      this.formatValue(context, delta[0]);\n      context.out('</div>' + '<div class=\"jsondiffpatch-value jsondiffpatch-right-value\">');\n      this.formatValue(context, delta[1]);\n      context.out('</div>');\n    }\n  }, {\n    key: 'format_deleted',\n    value: function format_deleted(context, delta) {\n      context.out('<div class=\"jsondiffpatch-value\">');\n      this.formatValue(context, delta[0]);\n      context.out('</div>');\n    }\n  }, {\n    key: 'format_moved',\n    value: function format_moved(context, delta) {\n      context.out('<div class=\"jsondiffpatch-value\">');\n      this.formatValue(context, delta[0]);\n      context.out('</div><div class=\"jsondiffpatch-moved-destination\">' + delta[1] + '</div>');\n\n      // draw an SVG arrow from here to move destination\n      context.out(\n      /* jshint multistr: true */\n      '<div class=\"jsondiffpatch-arrow\" ' + 'style=\"position: relative; left: -34px;\">\\n          <svg width=\"30\" height=\"60\" ' + 'style=\"position: absolute; display: none;\">\\n          <defs>\\n              <marker id=\"markerArrow\" markerWidth=\"8\" markerHeight=\"8\"\\n                 refx=\"2\" refy=\"4\"\\n                     orient=\"auto\" markerUnits=\"userSpaceOnUse\">\\n                  <path d=\"M1,1 L1,7 L7,4 L1,1\" style=\"fill: #339;\" />\\n              </marker>\\n          </defs>\\n          <path d=\"M30,0 Q-10,25 26,50\"\\n            style=\"stroke: #88f; stroke-width: 2px; fill: none; ' + 'stroke-opacity: 0.5; marker-end: url(#markerArrow);\"\\n          ></path>\\n          </svg>\\n      </div>');\n      context.hasArrows = true;\n    }\n  }, {\n    key: 'format_textdiff',\n    value: function format_textdiff(context, delta) {\n      context.out('<div class=\"jsondiffpatch-value\">');\n      this.formatTextDiffString(context, delta[0]);\n      context.out('</div>');\n    }\n  }]);\n  return HtmlFormatter;\n}(BaseFormatter);\n\nfunction htmlEscape(text) {\n  var html = text;\n  var replacements = [[/&/g, '&amp;'], [/</g, '&lt;'], [/>/g, '&gt;'], [/'/g, '&apos;'], [/\"/g, '&quot;']];\n  for (var i = 0; i < replacements.length; i++) {\n    html = html.replace(replacements[i][0], replacements[i][1]);\n  }\n  return html;\n}\n\nvar adjustArrows = function jsondiffpatchHtmlFormatterAdjustArrows(nodeArg) {\n  var node = nodeArg || document;\n  var getElementText = function getElementText(_ref) {\n    var textContent = _ref.textContent,\n        innerText = _ref.innerText;\n    return textContent || innerText;\n  };\n  var eachByQuery = function eachByQuery(el, query, fn) {\n    var elems = el.querySelectorAll(query);\n    for (var i = 0, l = elems.length; i < l; i++) {\n      fn(elems[i]);\n    }\n  };\n  var eachChildren = function eachChildren(_ref2, fn) {\n    var children = _ref2.children;\n\n    for (var i = 0, l = children.length; i < l; i++) {\n      fn(children[i], i);\n    }\n  };\n  eachByQuery(node, '.jsondiffpatch-arrow', function (_ref3) {\n    var parentNode = _ref3.parentNode,\n        children = _ref3.children,\n        style = _ref3.style;\n\n    var arrowParent = parentNode;\n    var svg = children[0];\n    var path = svg.children[1];\n    svg.style.display = 'none';\n    var destination = getElementText(arrowParent.querySelector('.jsondiffpatch-moved-destination'));\n    var container = arrowParent.parentNode;\n    var destinationElem = void 0;\n    eachChildren(container, function (child) {\n      if (child.getAttribute('data-key') === destination) {\n        destinationElem = child;\n      }\n    });\n    if (!destinationElem) {\n      return;\n    }\n    try {\n      var distance = destinationElem.offsetTop - arrowParent.offsetTop;\n      svg.setAttribute('height', Math.abs(distance) + 6);\n      style.top = -8 + (distance > 0 ? 0 : distance) + 'px';\n      var curve = distance > 0 ? 'M30,0 Q-10,' + Math.round(distance / 2) + ' 26,' + (distance - 4) : 'M30,' + -distance + ' Q-10,' + Math.round(-distance / 2) + ' 26,4';\n      path.setAttribute('d', curve);\n      svg.style.display = '';\n    } catch (err) {}\n  });\n};\n\n/* jshint camelcase: true */\n/* eslint-enable camelcase */\n\nvar showUnchanged = function showUnchanged(show, node, delay) {\n  var el = node || document.body;\n  var prefix = 'jsondiffpatch-unchanged-';\n  var classes = {\n    showing: prefix + 'showing',\n    hiding: prefix + 'hiding',\n    visible: prefix + 'visible',\n    hidden: prefix + 'hidden'\n  };\n  var list = el.classList;\n  if (!list) {\n    return;\n  }\n  if (!delay) {\n    list.remove(classes.showing);\n    list.remove(classes.hiding);\n    list.remove(classes.visible);\n    list.remove(classes.hidden);\n    if (show === false) {\n      list.add(classes.hidden);\n    }\n    return;\n  }\n  if (show === false) {\n    list.remove(classes.showing);\n    list.add(classes.visible);\n    setTimeout(function () {\n      list.add(classes.hiding);\n    }, 10);\n  } else {\n    list.remove(classes.hiding);\n    list.add(classes.showing);\n    list.remove(classes.hidden);\n  }\n  var intervalId = setInterval(function () {\n    adjustArrows(el);\n  }, 100);\n  setTimeout(function () {\n    list.remove(classes.showing);\n    list.remove(classes.hiding);\n    if (show === false) {\n      list.add(classes.hidden);\n      list.remove(classes.visible);\n    } else {\n      list.add(classes.visible);\n      list.remove(classes.hidden);\n    }\n    setTimeout(function () {\n      list.remove(classes.visible);\n      clearInterval(intervalId);\n    }, delay + 400);\n  }, delay);\n};\n\nvar hideUnchanged = function hideUnchanged(node, delay) {\n  return showUnchanged(false, node, delay);\n};\n\nvar defaultInstance = void 0;\n\nfunction format(delta, left) {\n  if (!defaultInstance) {\n    defaultInstance = new HtmlFormatter();\n  }\n  return defaultInstance.format(delta, left);\n}\n\n\n\nvar html = Object.freeze({\n\tshowUnchanged: showUnchanged,\n\thideUnchanged: hideUnchanged,\n\tdefault: HtmlFormatter,\n\tformat: format\n});\n\nvar AnnotatedFormatter = function (_BaseFormatter) {\n  inherits(AnnotatedFormatter, _BaseFormatter);\n\n  function AnnotatedFormatter() {\n    classCallCheck(this, AnnotatedFormatter);\n\n    var _this = possibleConstructorReturn(this, (AnnotatedFormatter.__proto__ || Object.getPrototypeOf(AnnotatedFormatter)).call(this));\n\n    _this.includeMoveDestinations = false;\n    return _this;\n  }\n\n  createClass(AnnotatedFormatter, [{\n    key: 'prepareContext',\n    value: function prepareContext(context) {\n      get(AnnotatedFormatter.prototype.__proto__ || Object.getPrototypeOf(AnnotatedFormatter.prototype), 'prepareContext', this).call(this, context);\n      context.indent = function (levels) {\n        this.indentLevel = (this.indentLevel || 0) + (typeof levels === 'undefined' ? 1 : levels);\n        this.indentPad = new Array(this.indentLevel + 1).join('&nbsp;&nbsp;');\n      };\n      context.row = function (json, htmlNote) {\n        context.out('<tr><td style=\"white-space: nowrap;\">' + '<pre class=\"jsondiffpatch-annotated-indent\"' + ' style=\"display: inline-block\">');\n        context.out(context.indentPad);\n        context.out('</pre><pre style=\"display: inline-block\">');\n        context.out(json);\n        context.out('</pre></td><td class=\"jsondiffpatch-delta-note\"><div>');\n        context.out(htmlNote);\n        context.out('</div></td></tr>');\n      };\n    }\n  }, {\n    key: 'typeFormattterErrorFormatter',\n    value: function typeFormattterErrorFormatter(context, err) {\n      context.row('', '<pre class=\"jsondiffpatch-error\">' + err + '</pre>');\n    }\n  }, {\n    key: 'formatTextDiffString',\n    value: function formatTextDiffString(context, value) {\n      var lines = this.parseTextDiff(value);\n      context.out('<ul class=\"jsondiffpatch-textdiff\">');\n      for (var i = 0, l = lines.length; i < l; i++) {\n        var line = lines[i];\n        context.out('<li><div class=\"jsondiffpatch-textdiff-location\">' + ('<span class=\"jsondiffpatch-textdiff-line-number\">' + line.location.line + '</span><span class=\"jsondiffpatch-textdiff-char\">' + line.location.chr + '</span></div><div class=\"jsondiffpatch-textdiff-line\">'));\n        var pieces = line.pieces;\n        for (var pieceIndex = 0, piecesLength = pieces.length; pieceIndex < piecesLength; pieceIndex++) {\n          var piece = pieces[pieceIndex];\n          context.out('<span class=\"jsondiffpatch-textdiff-' + piece.type + '\">' + piece.text + '</span>');\n        }\n        context.out('</div></li>');\n      }\n      context.out('</ul>');\n    }\n  }, {\n    key: 'rootBegin',\n    value: function rootBegin(context, type, nodeType) {\n      context.out('<table class=\"jsondiffpatch-annotated-delta\">');\n      if (type === 'node') {\n        context.row('{');\n        context.indent();\n      }\n      if (nodeType === 'array') {\n        context.row('\"_t\": \"a\",', 'Array delta (member names indicate array indices)');\n      }\n    }\n  }, {\n    key: 'rootEnd',\n    value: function rootEnd(context, type) {\n      if (type === 'node') {\n        context.indent(-1);\n        context.row('}');\n      }\n      context.out('</table>');\n    }\n  }, {\n    key: 'nodeBegin',\n    value: function nodeBegin(context, key, leftKey, type, nodeType) {\n      context.row('&quot;' + key + '&quot;: {');\n      if (type === 'node') {\n        context.indent();\n      }\n      if (nodeType === 'array') {\n        context.row('\"_t\": \"a\",', 'Array delta (member names indicate array indices)');\n      }\n    }\n  }, {\n    key: 'nodeEnd',\n    value: function nodeEnd(context, key, leftKey, type, nodeType, isLast) {\n      if (type === 'node') {\n        context.indent(-1);\n      }\n      context.row('}' + (isLast ? '' : ','));\n    }\n\n    /* jshint camelcase: false */\n\n    /* eslint-disable camelcase */\n\n  }, {\n    key: 'format_unchanged',\n    value: function format_unchanged() {}\n  }, {\n    key: 'format_movedestination',\n    value: function format_movedestination() {}\n  }, {\n    key: 'format_node',\n    value: function format_node(context, delta, left) {\n      // recurse\n      this.formatDeltaChildren(context, delta, left);\n    }\n  }]);\n  return AnnotatedFormatter;\n}(BaseFormatter);\n\n/* eslint-enable camelcase */\n\nvar wrapPropertyName = function wrapPropertyName(name) {\n  return '<pre style=\"display:inline-block\">&quot;' + name + '&quot;</pre>';\n};\n\nvar deltaAnnotations = {\n  added: function added(delta, left, key, leftKey) {\n    var formatLegend = ' <pre>([newValue])</pre>';\n    if (typeof leftKey === 'undefined') {\n      return 'new value' + formatLegend;\n    }\n    if (typeof leftKey === 'number') {\n      return 'insert at index ' + leftKey + formatLegend;\n    }\n    return 'add property ' + wrapPropertyName(leftKey) + formatLegend;\n  },\n  modified: function modified(delta, left, key, leftKey) {\n    var formatLegend = ' <pre>([previousValue, newValue])</pre>';\n    if (typeof leftKey === 'undefined') {\n      return 'modify value' + formatLegend;\n    }\n    if (typeof leftKey === 'number') {\n      return 'modify at index ' + leftKey + formatLegend;\n    }\n    return 'modify property ' + wrapPropertyName(leftKey) + formatLegend;\n  },\n  deleted: function deleted(delta, left, key, leftKey) {\n    var formatLegend = ' <pre>([previousValue, 0, 0])</pre>';\n    if (typeof leftKey === 'undefined') {\n      return 'delete value' + formatLegend;\n    }\n    if (typeof leftKey === 'number') {\n      return 'remove index ' + leftKey + formatLegend;\n    }\n    return 'delete property ' + wrapPropertyName(leftKey) + formatLegend;\n  },\n  moved: function moved(delta, left, key, leftKey) {\n    return 'move from <span title=\"(position to remove at original state)\">' + ('index ' + leftKey + '</span> to <span title=\"(position to insert at final') + (' state)\">index ' + delta[1] + '</span>');\n  },\n  textdiff: function textdiff(delta, left, key, leftKey) {\n    var location = typeof leftKey === 'undefined' ? '' : typeof leftKey === 'number' ? ' at index ' + leftKey : ' at property ' + wrapPropertyName(leftKey);\n    return 'text diff' + location + ', format is <a href=\"https://code.google.com/' + 'p/google-diff-match-patch/wiki/Unidiff\">a variation of Unidiff</a>';\n  }\n};\n\nvar formatAnyChange = function formatAnyChange(context, delta) {\n  var deltaType = this.getDeltaType(delta);\n  var annotator = deltaAnnotations[deltaType];\n  var htmlNote = annotator && annotator.apply(annotator, Array.prototype.slice.call(arguments, 1));\n  var json = JSON.stringify(delta, null, 2);\n  if (deltaType === 'textdiff') {\n    // split text diffs lines\n    json = json.split('\\\\n').join('\\\\n\"+\\n   \"');\n  }\n  context.indent();\n  context.row(json, htmlNote);\n  context.indent(-1);\n};\n\n/* eslint-disable camelcase */\nAnnotatedFormatter.prototype.format_added = formatAnyChange;\nAnnotatedFormatter.prototype.format_modified = formatAnyChange;\nAnnotatedFormatter.prototype.format_deleted = formatAnyChange;\nAnnotatedFormatter.prototype.format_moved = formatAnyChange;\nAnnotatedFormatter.prototype.format_textdiff = formatAnyChange;\nvar defaultInstance$1 = void 0;\n\nfunction format$1(delta, left) {\n  if (!defaultInstance$1) {\n    defaultInstance$1 = new AnnotatedFormatter();\n  }\n  return defaultInstance$1.format(delta, left);\n}\n\n\n\nvar annotated = Object.freeze({\n\tdefault: AnnotatedFormatter,\n\tformat: format$1\n});\n\nvar OPERATIONS = {\n  add: 'add',\n  remove: 'remove',\n  replace: 'replace',\n  move: 'move'\n};\n\nvar JSONFormatter = function (_BaseFormatter) {\n  inherits(JSONFormatter, _BaseFormatter);\n\n  function JSONFormatter() {\n    classCallCheck(this, JSONFormatter);\n\n    var _this = possibleConstructorReturn(this, (JSONFormatter.__proto__ || Object.getPrototypeOf(JSONFormatter)).call(this));\n\n    _this.includeMoveDestinations = true;\n    return _this;\n  }\n\n  createClass(JSONFormatter, [{\n    key: 'prepareContext',\n    value: function prepareContext(context) {\n      get(JSONFormatter.prototype.__proto__ || Object.getPrototypeOf(JSONFormatter.prototype), 'prepareContext', this).call(this, context);\n      context.result = [];\n      context.path = [];\n      context.pushCurrentOp = function (obj) {\n        var op = obj.op,\n            value = obj.value;\n\n        var val = {\n          op: op,\n          path: this.currentPath()\n        };\n        if (typeof value !== 'undefined') {\n          val.value = value;\n        }\n        this.result.push(val);\n      };\n\n      context.pushMoveOp = function (to) {\n        var from = this.currentPath();\n        this.result.push({\n          op: OPERATIONS.move,\n          from: from,\n          path: this.toPath(to)\n        });\n      };\n\n      context.currentPath = function () {\n        return '/' + this.path.join('/');\n      };\n\n      context.toPath = function (toPath) {\n        var to = this.path.slice();\n        to[to.length - 1] = toPath;\n        return '/' + to.join('/');\n      };\n    }\n  }, {\n    key: 'typeFormattterErrorFormatter',\n    value: function typeFormattterErrorFormatter(context, err) {\n      context.out('[ERROR] ' + err);\n    }\n  }, {\n    key: 'rootBegin',\n    value: function rootBegin() {}\n  }, {\n    key: 'rootEnd',\n    value: function rootEnd() {}\n  }, {\n    key: 'nodeBegin',\n    value: function nodeBegin(_ref, key, leftKey) {\n      var path = _ref.path;\n\n      path.push(leftKey);\n    }\n  }, {\n    key: 'nodeEnd',\n    value: function nodeEnd(_ref2) {\n      var path = _ref2.path;\n\n      path.pop();\n    }\n\n    /* jshint camelcase: false */\n    /* eslint-disable camelcase */\n\n  }, {\n    key: 'format_unchanged',\n    value: function format_unchanged() {}\n  }, {\n    key: 'format_movedestination',\n    value: function format_movedestination() {}\n  }, {\n    key: 'format_node',\n    value: function format_node(context, delta, left) {\n      this.formatDeltaChildren(context, delta, left);\n    }\n  }, {\n    key: 'format_added',\n    value: function format_added(context, delta) {\n      context.pushCurrentOp({ op: OPERATIONS.add, value: delta[0] });\n    }\n  }, {\n    key: 'format_modified',\n    value: function format_modified(context, delta) {\n      context.pushCurrentOp({ op: OPERATIONS.replace, value: delta[1] });\n    }\n  }, {\n    key: 'format_deleted',\n    value: function format_deleted(context) {\n      context.pushCurrentOp({ op: OPERATIONS.remove });\n    }\n  }, {\n    key: 'format_moved',\n    value: function format_moved(context, delta) {\n      var to = delta[1];\n      context.pushMoveOp(to);\n    }\n  }, {\n    key: 'format_textdiff',\n    value: function format_textdiff() {\n      throw new Error('Not implemented');\n    }\n  }, {\n    key: 'format',\n    value: function format(delta, left) {\n      var context = {};\n      this.prepareContext(context);\n      this.recurse(context, delta, left);\n      return context.result;\n    }\n  }]);\n  return JSONFormatter;\n}(BaseFormatter);\n\nvar last = function last(arr) {\n  return arr[arr.length - 1];\n};\n\nvar sortBy = function sortBy(arr, pred) {\n  arr.sort(pred);\n  return arr;\n};\n\nvar compareByIndexDesc = function compareByIndexDesc(indexA, indexB) {\n  var lastA = parseInt(indexA, 10);\n  var lastB = parseInt(indexB, 10);\n  if (!(isNaN(lastA) || isNaN(lastB))) {\n    return lastB - lastA;\n  } else {\n    return 0;\n  }\n};\n\nvar opsByDescendingOrder = function opsByDescendingOrder(removeOps) {\n  return sortBy(removeOps, function (a, b) {\n    var splitA = a.path.split('/');\n    var splitB = b.path.split('/');\n    if (splitA.length !== splitB.length) {\n      return splitA.length - splitB.length;\n    } else {\n      return compareByIndexDesc(last(splitA), last(splitB));\n    }\n  });\n};\n\nvar partitionOps = function partitionOps(arr, fns) {\n  var initArr = Array(fns.length + 1).fill().map(function () {\n    return [];\n  });\n  return arr.map(function (item) {\n    var position = fns.map(function (fn) {\n      return fn(item);\n    }).indexOf(true);\n    if (position < 0) {\n      position = fns.length;\n    }\n    return { item: item, position: position };\n  }).reduce(function (acc, item) {\n    acc[item.position].push(item.item);\n    return acc;\n  }, initArr);\n};\nvar isMoveOp = function isMoveOp(_ref3) {\n  var op = _ref3.op;\n  return op === 'move';\n};\nvar isRemoveOp = function isRemoveOp(_ref4) {\n  var op = _ref4.op;\n  return op === 'remove';\n};\n\nvar reorderOps = function reorderOps(diff) {\n  var _partitionOps = partitionOps(diff, [isMoveOp, isRemoveOp]),\n      _partitionOps2 = slicedToArray(_partitionOps, 3),\n      moveOps = _partitionOps2[0],\n      removedOps = _partitionOps2[1],\n      restOps = _partitionOps2[2];\n\n  var removeOpsReverse = opsByDescendingOrder(removedOps);\n  return [].concat(toConsumableArray(removeOpsReverse), toConsumableArray(moveOps), toConsumableArray(restOps));\n};\n\nvar defaultInstance$2 = void 0;\n\nvar format$2 = function format(delta, left) {\n  if (!defaultInstance$2) {\n    defaultInstance$2 = new JSONFormatter();\n  }\n  return reorderOps(defaultInstance$2.format(delta, left));\n};\n\nvar log = function log(delta, left) {\n  console.log(format$2(delta, left));\n};\n\n\n\nvar jsonpatch = Object.freeze({\n\tdefault: JSONFormatter,\n\tpartitionOps: partitionOps,\n\tformat: format$2,\n\tlog: log\n});\n\nfunction chalkColor(name) {\n  return chalk && chalk[name] || function () {\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return args;\n  };\n}\n\nvar colors = {\n  added: chalkColor('green'),\n  deleted: chalkColor('red'),\n  movedestination: chalkColor('gray'),\n  moved: chalkColor('yellow'),\n  unchanged: chalkColor('gray'),\n  error: chalkColor('white.bgRed'),\n  textDiffLine: chalkColor('gray')\n};\n\nvar ConsoleFormatter = function (_BaseFormatter) {\n  inherits(ConsoleFormatter, _BaseFormatter);\n\n  function ConsoleFormatter() {\n    classCallCheck(this, ConsoleFormatter);\n\n    var _this = possibleConstructorReturn(this, (ConsoleFormatter.__proto__ || Object.getPrototypeOf(ConsoleFormatter)).call(this));\n\n    _this.includeMoveDestinations = false;\n    return _this;\n  }\n\n  createClass(ConsoleFormatter, [{\n    key: 'prepareContext',\n    value: function prepareContext(context) {\n      get(ConsoleFormatter.prototype.__proto__ || Object.getPrototypeOf(ConsoleFormatter.prototype), 'prepareContext', this).call(this, context);\n      context.indent = function (levels) {\n        this.indentLevel = (this.indentLevel || 0) + (typeof levels === 'undefined' ? 1 : levels);\n        this.indentPad = new Array(this.indentLevel + 1).join('  ');\n        this.outLine();\n      };\n      context.outLine = function () {\n        this.buffer.push('\\n' + (this.indentPad || ''));\n      };\n      context.out = function () {\n        for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n          args[_key2] = arguments[_key2];\n        }\n\n        for (var i = 0, l = args.length; i < l; i++) {\n          var lines = args[i].split('\\n');\n          var text = lines.join('\\n' + (this.indentPad || ''));\n          if (this.color && this.color[0]) {\n            text = this.color[0](text);\n          }\n          this.buffer.push(text);\n        }\n      };\n      context.pushColor = function (color) {\n        this.color = this.color || [];\n        this.color.unshift(color);\n      };\n      context.popColor = function () {\n        this.color = this.color || [];\n        this.color.shift();\n      };\n    }\n  }, {\n    key: 'typeFormattterErrorFormatter',\n    value: function typeFormattterErrorFormatter(context, err) {\n      context.pushColor(colors.error);\n      context.out('[ERROR]' + err);\n      context.popColor();\n    }\n  }, {\n    key: 'formatValue',\n    value: function formatValue(context, value) {\n      context.out(JSON.stringify(value, null, 2));\n    }\n  }, {\n    key: 'formatTextDiffString',\n    value: function formatTextDiffString(context, value) {\n      var lines = this.parseTextDiff(value);\n      context.indent();\n      for (var i = 0, l = lines.length; i < l; i++) {\n        var line = lines[i];\n        context.pushColor(colors.textDiffLine);\n        context.out(line.location.line + ',' + line.location.chr + ' ');\n        context.popColor();\n        var pieces = line.pieces;\n        for (var pieceIndex = 0, piecesLength = pieces.length; pieceIndex < piecesLength; pieceIndex++) {\n          var piece = pieces[pieceIndex];\n          context.pushColor(colors[piece.type]);\n          context.out(piece.text);\n          context.popColor();\n        }\n        if (i < l - 1) {\n          context.outLine();\n        }\n      }\n      context.indent(-1);\n    }\n  }, {\n    key: 'rootBegin',\n    value: function rootBegin(context, type, nodeType) {\n      context.pushColor(colors[type]);\n      if (type === 'node') {\n        context.out(nodeType === 'array' ? '[' : '{');\n        context.indent();\n      }\n    }\n  }, {\n    key: 'rootEnd',\n    value: function rootEnd(context, type, nodeType) {\n      if (type === 'node') {\n        context.indent(-1);\n        context.out(nodeType === 'array' ? ']' : '}');\n      }\n      context.popColor();\n    }\n  }, {\n    key: 'nodeBegin',\n    value: function nodeBegin(context, key, leftKey, type, nodeType) {\n      context.pushColor(colors[type]);\n      context.out(leftKey + ': ');\n      if (type === 'node') {\n        context.out(nodeType === 'array' ? '[' : '{');\n        context.indent();\n      }\n    }\n  }, {\n    key: 'nodeEnd',\n    value: function nodeEnd(context, key, leftKey, type, nodeType, isLast) {\n      if (type === 'node') {\n        context.indent(-1);\n        context.out(nodeType === 'array' ? ']' : '}' + (isLast ? '' : ','));\n      }\n      if (!isLast) {\n        context.outLine();\n      }\n      context.popColor();\n    }\n\n    /* jshint camelcase: false */\n    /* eslint-disable camelcase */\n\n  }, {\n    key: 'format_unchanged',\n    value: function format_unchanged(context, delta, left) {\n      if (typeof left === 'undefined') {\n        return;\n      }\n      this.formatValue(context, left);\n    }\n  }, {\n    key: 'format_movedestination',\n    value: function format_movedestination(context, delta, left) {\n      if (typeof left === 'undefined') {\n        return;\n      }\n      this.formatValue(context, left);\n    }\n  }, {\n    key: 'format_node',\n    value: function format_node(context, delta, left) {\n      // recurse\n      this.formatDeltaChildren(context, delta, left);\n    }\n  }, {\n    key: 'format_added',\n    value: function format_added(context, delta) {\n      this.formatValue(context, delta[0]);\n    }\n  }, {\n    key: 'format_modified',\n    value: function format_modified(context, delta) {\n      context.pushColor(colors.deleted);\n      this.formatValue(context, delta[0]);\n      context.popColor();\n      context.out(' => ');\n      context.pushColor(colors.added);\n      this.formatValue(context, delta[1]);\n      context.popColor();\n    }\n  }, {\n    key: 'format_deleted',\n    value: function format_deleted(context, delta) {\n      this.formatValue(context, delta[0]);\n    }\n  }, {\n    key: 'format_moved',\n    value: function format_moved(context, delta) {\n      context.out('==> ' + delta[1]);\n    }\n  }, {\n    key: 'format_textdiff',\n    value: function format_textdiff(context, delta) {\n      this.formatTextDiffString(context, delta[0]);\n    }\n  }]);\n  return ConsoleFormatter;\n}(BaseFormatter);\n\nvar defaultInstance$3 = void 0;\n\nvar format$3 = function format(delta, left) {\n  if (!defaultInstance$3) {\n    defaultInstance$3 = new ConsoleFormatter();\n  }\n  return defaultInstance$3.format(delta, left);\n};\n\nfunction log$1(delta, left) {\n  console.log(format$3(delta, left));\n}\n\n\n\nvar console$1 = Object.freeze({\n\tdefault: ConsoleFormatter,\n\tformat: format$3,\n\tlog: log$1\n});\n\n\n\nvar index = Object.freeze({\n\tbase: base,\n\thtml: html,\n\tannotated: annotated,\n\tjsonpatch: jsonpatch,\n\tconsole: console$1\n});\n\n// use as 2nd parameter for JSON.parse to revive Date instances\nfunction dateReviver(key, value) {\n  var parts = void 0;\n  if (typeof value === 'string') {\n    // eslint-disable-next-line max-len\n    parts = /^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2})(?:\\.(\\d*))?(Z|([+-])(\\d{2}):(\\d{2}))$/.exec(value);\n    if (parts) {\n      return new Date(Date.UTC(+parts[1], +parts[2] - 1, +parts[3], +parts[4], +parts[5], +parts[6], +(parts[7] || 0)));\n    }\n  }\n  return value;\n}\n\nfunction create(options) {\n  return new DiffPatcher(options);\n}\n\nvar defaultInstance$4 = void 0;\n\nfunction diff() {\n  if (!defaultInstance$4) {\n    defaultInstance$4 = new DiffPatcher();\n  }\n  return defaultInstance$4.diff.apply(defaultInstance$4, arguments);\n}\n\nfunction patch() {\n  if (!defaultInstance$4) {\n    defaultInstance$4 = new DiffPatcher();\n  }\n  return defaultInstance$4.patch.apply(defaultInstance$4, arguments);\n}\n\nfunction unpatch() {\n  if (!defaultInstance$4) {\n    defaultInstance$4 = new DiffPatcher();\n  }\n  return defaultInstance$4.unpatch.apply(defaultInstance$4, arguments);\n}\n\nfunction reverse() {\n  if (!defaultInstance$4) {\n    defaultInstance$4 = new DiffPatcher();\n  }\n  return defaultInstance$4.reverse.apply(defaultInstance$4, arguments);\n}\n\nfunction clone$1() {\n  if (!defaultInstance$4) {\n    defaultInstance$4 = new DiffPatcher();\n  }\n  return defaultInstance$4.clone.apply(defaultInstance$4, arguments);\n}\n\nexports.DiffPatcher = DiffPatcher;\nexports.formatters = index;\nexports.console = console$1;\nexports.create = create;\nexports.dateReviver = dateReviver;\nexports.diff = diff;\nexports.patch = patch;\nexports.unpatch = unpatch;\nexports.reverse = reverse;\nexports.clone = clone$1;\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n})));\n","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; }, $Symbol = \"function\" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || \"@@iterator\", asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\", toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, \"\"); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return defineProperty(generator, \"_invoke\", { value: makeInvokeMethod(innerFn, self, context) }), generator; } function tryCatch(fn, obj, arg) { try { return { type: \"normal\", arg: fn.call(obj, arg) }; } catch (err) { return { type: \"throw\", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { [\"next\", \"throw\", \"return\"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if (\"throw\" !== record.type) { var result = record.arg, value = result.value; return value && \"object\" == _typeof(value) && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke(\"next\", value, resolve, reject); }, function (err) { invoke(\"throw\", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke(\"throw\", error, resolve, reject); }); } reject(record.arg); } var previousPromise; defineProperty(this, \"_invoke\", { value: function value(method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(innerFn, self, context) { var state = \"suspendedStart\"; return function (method, arg) { if (\"executing\" === state) throw new Error(\"Generator is already running\"); if (\"completed\" === state) { if (\"throw\" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) { if (\"suspendedStart\" === state) throw state = \"completed\", context.arg; context.dispatchException(context.arg); } else \"return\" === context.method && context.abrupt(\"return\", context.arg); state = \"executing\"; var record = tryCatch(innerFn, self, context); if (\"normal\" === record.type) { if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg); } }; } function maybeInvokeDelegate(delegate, context) { var method = delegate.iterator[context.method]; if (undefined === method) { if (context.delegate = null, \"throw\" === context.method) { if (delegate.iterator[\"return\"] && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method)) return ContinueSentinel; context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a 'throw' method\"); } return ContinueSentinel; } var record = tryCatch(method, delegate.iterator, context.arg); if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = \"normal\", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: \"root\" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if (\"function\" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) { if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; } return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), defineProperty(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) { var ctor = \"function\" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, \"toString\", function () { return \"[object Generator]\"; }), exports.keys = function (val) { var object = Object(val), keys = []; for (var key in object) { keys.push(key); } return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) { \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); } }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if (\"throw\" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if (\"root\" === entry.tryLoc) return handle(\"end\"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, \"catchLoc\"), hasFinally = hasOwn.call(entry, \"finallyLoc\"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error(\"try statement without catch or finally\"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if (\"throw\" === record.type) throw record.arg; return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, \"catch\": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if (\"throw\" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nimport { DiffPatcher } from \"jsondiffpatch\";\nimport { IdleScheduler } from \"./idle-scheduler\";\nexport var JsonDiffMain = /*#__PURE__*/function () {\n  function JsonDiffMain() {\n    _classCallCheck(this, JsonDiffMain);\n    _defineProperty(this, \"diffPatcher\", new DiffPatcher({\n      arrays: {\n        detectMove: false,\n        includeValueOnMove: false\n      },\n      textDiff: {\n        minLength: 1\n      }\n    }));\n    _defineProperty(this, \"scheduler\", new IdleScheduler());\n  }\n  _createClass(JsonDiffMain, [{\n    key: \"diff\",\n    value: function () {\n      var _diff = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(input) {\n        return _regeneratorRuntime().wrap(function _callee$(_context) {\n          while (1) {\n            switch (_context.prev = _context.next) {\n              case 0:\n                _context.next = 2;\n                return this.scheduler.request();\n              case 2:\n                return _context.abrupt(\"return\", {\n                  id: input.id,\n                  delta: this.diffPatcher.diff(input.a, input.b)\n                });\n              case 3:\n              case \"end\":\n                return _context.stop();\n            }\n          }\n        }, _callee, this);\n      }));\n      function diff(_x) {\n        return _diff.apply(this, arguments);\n      }\n      return diff;\n    }()\n  }]);\n  return JsonDiffMain;\n}();","import { useSetAtom } from \"jotai\";\nimport React from \"react\";\nimport { editorStateAtom } from \"../state/editor-state\";\nimport { editorViewAtom } from \"../state/editor-view\";\nimport { historyWriteAtom } from \"../state/history\";\nimport subscribeOnUpdates from \"../utils/subscribe-on-updates\";\nexport function useSubscribeToEditorView(editorView, diffWorkerInstance) {\n  var setEditorView = useSetAtom(editorViewAtom);\n  var historyDispatcher = useSetAtom(historyWriteAtom);\n  var setEditorState = useSetAtom(editorStateAtom);\n  var diffWorker = diffWorkerInstance ? import(\"../state/json-diff-worker\").then(function (_ref) {\n    var JsonDiffWorker = _ref.JsonDiffWorker;\n    return new JsonDiffWorker(diffWorkerInstance);\n  }) : import(\"../state/json-diff-main\").then(function (_ref2) {\n    var JsonDiffMain = _ref2.JsonDiffMain;\n    return new JsonDiffMain();\n  });\n  React.useEffect(function () {\n    // set initial editor state\n    setEditorState(editorView.state);\n\n    // store editor view reference\n    setEditorView(editorView);\n    historyDispatcher({\n      type: \"reset\",\n      payload: {\n        state: editorView.state\n      }\n    });\n    subscribeOnUpdates(editorView, function (tr, oldState, newState) {\n      setEditorState(newState);\n      historyDispatcher({\n        type: \"update\",\n        payload: {\n          oldState: oldState,\n          newState: newState,\n          tr: tr,\n          diffWorker: diffWorker\n        }\n      });\n    });\n  }, [editorView, diffWorker]);\n}","import React from \"react\";\nimport { useSetAtom } from \"jotai\";\nimport { Selection } from \"prosemirror-state\";\nimport { editorStateAtom } from \"../state/editor-state\";\nimport { historyRolledBackToAtom } from \"../state/history\";\nimport getEditorStateClass from \"../state/get-editor-state\";\nexport function useRollbackHistory(editorView) {\n  var setHistoryRolledBackTo = useSetAtom(historyRolledBackToAtom);\n  var setEditorState = useSetAtom(editorStateAtom);\n  var rollbackHistory = React.useCallback(function (historyItem, historyItemIndex) {\n    var EditorState = getEditorStateClass();\n    var state = historyItem.state;\n    var newState = EditorState.create({\n      schema: state.schema,\n      plugins: state.plugins,\n      doc: state.schema.nodeFromJSON(state.doc.toJSON())\n    });\n    editorView.updateState(newState);\n    editorView.dom.focus();\n    var selection = Selection.fromJSON(editorView.state.doc, state.selection.toJSON());\n    var tr = editorView.state.tr.setSelection(selection).setMeta(\"addToHistory\", false).setMeta(\"_skip-dev-tools-history_\", true);\n    editorView.dispatch(tr);\n    setEditorState(editorView.state);\n    setHistoryRolledBackTo(historyItemIndex);\n  }, [editorView]);\n  return rollbackHistory;\n}","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nimport React from \"react\";\nimport { useAtom, useAtomValue } from \"jotai\";\nimport { devToolsOpenedAtom, devToolsSizeAtom } from \"./state/global\";\nimport DevToolsCollapsed from \"./dev-tools-collapsed\";\nimport DevToolsExpanded from \"./dev-tools-expanded\";\nimport { useResizeDocument } from \"./hooks/use-resize-document\";\nimport { useSubscribeToEditorView } from \"./hooks/use-subscribe-to-editor-view\";\nimport { useRollbackHistory } from \"./hooks/use-rollback-history\";\nexport default function DevTools(props) {\n  var _useAtom = useAtom(devToolsOpenedAtom),\n    _useAtom2 = _slicedToArray(_useAtom, 2),\n    isOpen = _useAtom2[0],\n    setIsOpen = _useAtom2[1];\n  var defaultSize = useAtomValue(devToolsSizeAtom);\n  var editorView = props.editorView;\n  var toggleOpen = React.useCallback(function () {\n    return setIsOpen(!isOpen);\n  }, [isOpen]);\n  useResizeDocument(isOpen, defaultSize);\n  useSubscribeToEditorView(editorView, props.diffWorker);\n  var rollbackHistory = useRollbackHistory(editorView);\n  if (isOpen) {\n    return /*#__PURE__*/React.createElement(DevToolsExpanded, {\n      rollbackHistory: rollbackHistory\n    });\n  }\n  return /*#__PURE__*/React.createElement(DevToolsCollapsed, {\n    onClick: toggleOpen\n  });\n}","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport DevTools from \"./dev-tools\";\nvar DEVTOOLS_CLASS_NAME = \"__prosemirror-dev-tools__\";\nfunction createPlace() {\n  var place = document.querySelector(\".\".concat(DEVTOOLS_CLASS_NAME));\n  if (!place) {\n    place = document.createElement(\"div\");\n    place.className = DEVTOOLS_CLASS_NAME;\n    document.body.appendChild(place);\n  } else {\n    ReactDOM.unmountComponentAtNode(place);\n    place.innerHTML = \"\";\n  }\n  return place;\n}\nfunction applyDevTools(editorView, props) {\n  var place = createPlace();\n  ReactDOM.render( /*#__PURE__*/React.createElement(DevTools, {\n    editorView: editorView,\n    diffWorker: props === null || props === void 0 ? void 0 : props.diffWorker\n  }), place);\n  return function () {\n    ReactDOM.unmountComponentAtNode(place);\n  };\n}\nexport default applyDevTools;\nexport { applyDevTools };","var addDevToolsClickListener = function addDevToolsClickListener(ref, enableDevTools, editor) {\n  var clickListener = null;\n  var keyDownHandler = function keyDownHandler(e) {\n    if (e.metaKey && e.shiftKey && e.altKey && !clickListener) {\n      clickListener = function clickListener(e2) {\n        if (e2.detail === 2) {\n          enableDevTools();\n          if (editor && typeof window !== \"undefined\") {\n            import(/* webpackChunkName: \"ricos_prosemirror-dev-tools\" */\n            \"prosemirror-dev-tools\").then(function (_ref) {\n              var applyDevTools = _ref.applyDevTools;\n              applyDevTools(editor.view, {});\n            }, function (e3) {\n              console.error(\"Failed to load prosemirror-dev-tools\", e3);\n            });\n          }\n        }\n      };\n      ref === null || ref === void 0 ? void 0 : ref.addEventListener(\"click\", clickListener, {\n        capture: true\n      });\n    }\n  };\n  var keyUpHandler = function keyUpHandler(e) {\n    if (!e.metaKey || !e.shiftKey || !e.altKey) {\n      if (clickListener) {\n        ref === null || ref === void 0 ? void 0 : ref.removeEventListener(\"click\", clickListener);\n        clickListener = null;\n      }\n    }\n  };\n  document.addEventListener(\"keydown\", keyDownHandler);\n  document.addEventListener(\"keyup\", keyUpHandler);\n  return function () {\n    document.removeEventListener(\"keydown\", keyDownHandler);\n    document.removeEventListener(\"keyup\", keyUpHandler);\n    if (clickListener) {\n      ref === null || ref === void 0 ? void 0 : ref.removeEventListener(\"click\", clickListener);\n    }\n  };\n};\nexport { addDevToolsClickListener };","export const isDefined = <T>(x: T | null | undefined): x is T => x !== undefined && x !== null;\n","// Components\nexport { default as AccessibilityListener } from './Components/AccessibilityListener.js';\n\n// Utils\nexport {\n  ADD_PLUGIN_LINK_BI,\n  ANCHOR_CATEGORY,\n  LINK_VIEWER_DATA_HOOK,\n  MAX_LIST_VISIBLE_INDENTATION,\n  MEDIA_POPOVERS_BUTTONS_NAMES_BI,\n  MEDIA_POPOVERS_TABS_NAMES_BI,\n  WEB_ADDRESS_CATEGORY,\n} from './consts.js';\nexport { addAnchorTagToUrl, anchorScroll } from './Utils/anchor.js';\nexport {\n  combineHexWithOpacity,\n  getHexColorFromAlpha,\n  getOpacityFromHex,\n  isHexColor,\n} from './Utils/colorUtils.js';\nexport { GlobalContext } from './Utils/contexts.js';\nexport { createThrottle } from './Utils/createThrottle.js';\nexport { dataHook } from './Utils/dataHook.js';\nexport { fetchEditorTranslations } from './Utils/fetchEditorTranslations.js';\nexport { generateKey } from './Utils/generateKey.js';\nexport { getListSymbol } from './Utils/getListSymbol.js';\nexport {\n  convertRelObjectToString,\n  convertRelStringToObject,\n  getRelValue,\n} from './Utils/linkConverters.js';\nexport { normalizeOffset } from './Utils/normalizeOffset.js';\nexport { RicosTranslate } from './Utils/RicosTranslate.js';\nexport { getLangDir } from './Utils/rtlUtils.js';\nexport { isSSR } from './Utils/ssrUtils.js';\nexport { default as uuid } from './Utils/uuid.js';\nexport { Trans } from 'react-i18next';\n// Reexporting it for viewer, because only this package is excluded in ci-police fe-essential rules\nexport { addDevToolsClickListener } from './devTools/add-dev-tools-click-listener.js';\nexport { isDefined } from './Utils/is-defined.js';\nexport { resolveColorsPalette } from './Utils/resolveColorsPalette.js';\nexport { default as i18next } from 'i18next';\n","import lodash from 'lodash';\n\nimport { RICOS_VERSION as currentVersion } from './../../ricos-schema/next-schema/index.js';\n\n// \"1.2.3-alpha.4\" => [1, 2, 3]\nconst toVersion = (versionString: string) => {\n  return versionString\n    .split('.')\n    .map(literal => {\n      const numeric = parseInt(literal, 10);\n      return lodash.isNaN(numeric) ? 0 : numeric;\n    })\n    .slice(0, 3);\n};\n\nconst compareVersions: (left: string, right: string) => -1 | 0 | 1 = (left, right) => {\n  const leftVersion = toVersion(left);\n  const rightVersion = toVersion(right);\n  const diff = leftVersion.map((left, idx) => Math.sign(left - rightVersion[idx]) as -1 | 0 | 1);\n  return diff.find(num => num !== 0) || 0;\n};\n\nconst evaluations: { [operator: string]: (left: string, right: string) => boolean } = {\n  '<': (left: string, right: string) => compareVersions(left, right) < 0,\n  '>': (left: string, right: string) => compareVersions(left, right) > 0,\n  '=': (left: string, right: string) => compareVersions(left, right) === 0,\n  '<=': (left: string, right: string) => compareVersions(left, right) <= 0,\n  '>=': (left: string, right: string) => compareVersions(left, right) >= 0,\n};\n\nconst evaluateVersion = (tested: string, semver: string) => {\n  const [, operator, version] = /([<>=]{0,2})(.*)/gm.exec(semver) as string[];\n  return evaluations[operator || '='](tested, version);\n};\n\nexport default {\n  lessThan: (left: string, right: string) => compareVersions(left, right) < 0,\n  greaterThan: (left: string, right: string) => compareVersions(left, right) > 0,\n  equal: (left: string, right: string) => compareVersions(left, right) === 0,\n  compare: compareVersions,\n  currentVersion,\n  evaluate: evaluateVersion,\n};\n","export { default as Version } from './versioningUtils.js';\n","export default /[\\0-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/","export default /[\\0-\\x1F\\x7F-\\x9F]/","export default /[\\xAD\\u0600-\\u0605\\u061C\\u06DD\\u070F\\u0890\\u0891\\u08E2\\u180E\\u200B-\\u200F\\u202A-\\u202E\\u2060-\\u2064\\u2066-\\u206F\\uFEFF\\uFFF9-\\uFFFB]|\\uD804[\\uDCBD\\uDCCD]|\\uD80D[\\uDC30-\\uDC3F]|\\uD82F[\\uDCA0-\\uDCA3]|\\uD834[\\uDD73-\\uDD7A]|\\uDB40[\\uDC01\\uDC20-\\uDC7F]/","export default /[!-#%-\\*,-\\/:;\\?@\\[-\\]_\\{\\}\\xA1\\xA7\\xAB\\xB6\\xB7\\xBB\\xBF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061D-\\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\\u1B7D\\u1B7E\\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-\\u2E5D\\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]|\\uD800[\\uDD00-\\uDD02\\uDF9F\\uDFD0]|\\uD801\\uDD6F|\\uD802[\\uDC57\\uDD1F\\uDD3F\\uDE50-\\uDE58\\uDE7F\\uDEF0-\\uDEF6\\uDF39-\\uDF3F\\uDF99-\\uDF9C]|\\uD803[\\uDEAD\\uDF55-\\uDF59\\uDF86-\\uDF89]|\\uD804[\\uDC47-\\uDC4D\\uDCBB\\uDCBC\\uDCBE-\\uDCC1\\uDD40-\\uDD43\\uDD74\\uDD75\\uDDC5-\\uDDC8\\uDDCD\\uDDDB\\uDDDD-\\uDDDF\\uDE38-\\uDE3D\\uDEA9]|\\uD805[\\uDC4B-\\uDC4F\\uDC5A\\uDC5B\\uDC5D\\uDCC6\\uDDC1-\\uDDD7\\uDE41-\\uDE43\\uDE60-\\uDE6C\\uDEB9\\uDF3C-\\uDF3E]|\\uD806[\\uDC3B\\uDD44-\\uDD46\\uDDE2\\uDE3F-\\uDE46\\uDE9A-\\uDE9C\\uDE9E-\\uDEA2\\uDF00-\\uDF09]|\\uD807[\\uDC41-\\uDC45\\uDC70\\uDC71\\uDEF7\\uDEF8\\uDF43-\\uDF4F\\uDFFF]|\\uD809[\\uDC70-\\uDC74]|\\uD80B[\\uDFF1\\uDFF2]|\\uD81A[\\uDE6E\\uDE6F\\uDEF5\\uDF37-\\uDF3B\\uDF44]|\\uD81B[\\uDE97-\\uDE9A\\uDFE2]|\\uD82F\\uDC9F|\\uD836[\\uDE87-\\uDE8B]|\\uD83A[\\uDD5E\\uDD5F]/","export default /[\\$\\+<->\\^`\\|~\\xA2-\\xA6\\xA8\\xA9\\xAC\\xAE-\\xB1\\xB4\\xB8\\xD7\\xF7\\u02C2-\\u02C5\\u02D2-\\u02DF\\u02E5-\\u02EB\\u02ED\\u02EF-\\u02FF\\u0375\\u0384\\u0385\\u03F6\\u0482\\u058D-\\u058F\\u0606-\\u0608\\u060B\\u060E\\u060F\\u06DE\\u06E9\\u06FD\\u06FE\\u07F6\\u07FE\\u07FF\\u0888\\u09F2\\u09F3\\u09FA\\u09FB\\u0AF1\\u0B70\\u0BF3-\\u0BFA\\u0C7F\\u0D4F\\u0D79\\u0E3F\\u0F01-\\u0F03\\u0F13\\u0F15-\\u0F17\\u0F1A-\\u0F1F\\u0F34\\u0F36\\u0F38\\u0FBE-\\u0FC5\\u0FC7-\\u0FCC\\u0FCE\\u0FCF\\u0FD5-\\u0FD8\\u109E\\u109F\\u1390-\\u1399\\u166D\\u17DB\\u1940\\u19DE-\\u19FF\\u1B61-\\u1B6A\\u1B74-\\u1B7C\\u1FBD\\u1FBF-\\u1FC1\\u1FCD-\\u1FCF\\u1FDD-\\u1FDF\\u1FED-\\u1FEF\\u1FFD\\u1FFE\\u2044\\u2052\\u207A-\\u207C\\u208A-\\u208C\\u20A0-\\u20C0\\u2100\\u2101\\u2103-\\u2106\\u2108\\u2109\\u2114\\u2116-\\u2118\\u211E-\\u2123\\u2125\\u2127\\u2129\\u212E\\u213A\\u213B\\u2140-\\u2144\\u214A-\\u214D\\u214F\\u218A\\u218B\\u2190-\\u2307\\u230C-\\u2328\\u232B-\\u2426\\u2440-\\u244A\\u249C-\\u24E9\\u2500-\\u2767\\u2794-\\u27C4\\u27C7-\\u27E5\\u27F0-\\u2982\\u2999-\\u29D7\\u29DC-\\u29FB\\u29FE-\\u2B73\\u2B76-\\u2B95\\u2B97-\\u2BFF\\u2CE5-\\u2CEA\\u2E50\\u2E51\\u2E80-\\u2E99\\u2E9B-\\u2EF3\\u2F00-\\u2FD5\\u2FF0-\\u2FFF\\u3004\\u3012\\u3013\\u3020\\u3036\\u3037\\u303E\\u303F\\u309B\\u309C\\u3190\\u3191\\u3196-\\u319F\\u31C0-\\u31E3\\u31EF\\u3200-\\u321E\\u322A-\\u3247\\u3250\\u3260-\\u327F\\u328A-\\u32B0\\u32C0-\\u33FF\\u4DC0-\\u4DFF\\uA490-\\uA4C6\\uA700-\\uA716\\uA720\\uA721\\uA789\\uA78A\\uA828-\\uA82B\\uA836-\\uA839\\uAA77-\\uAA79\\uAB5B\\uAB6A\\uAB6B\\uFB29\\uFBB2-\\uFBC2\\uFD40-\\uFD4F\\uFDCF\\uFDFC-\\uFDFF\\uFE62\\uFE64-\\uFE66\\uFE69\\uFF04\\uFF0B\\uFF1C-\\uFF1E\\uFF3E\\uFF40\\uFF5C\\uFF5E\\uFFE0-\\uFFE6\\uFFE8-\\uFFEE\\uFFFC\\uFFFD]|\\uD800[\\uDD37-\\uDD3F\\uDD79-\\uDD89\\uDD8C-\\uDD8E\\uDD90-\\uDD9C\\uDDA0\\uDDD0-\\uDDFC]|\\uD802[\\uDC77\\uDC78\\uDEC8]|\\uD805\\uDF3F|\\uD807[\\uDFD5-\\uDFF1]|\\uD81A[\\uDF3C-\\uDF3F\\uDF45]|\\uD82F\\uDC9C|\\uD833[\\uDF50-\\uDFC3]|\\uD834[\\uDC00-\\uDCF5\\uDD00-\\uDD26\\uDD29-\\uDD64\\uDD6A-\\uDD6C\\uDD83\\uDD84\\uDD8C-\\uDDA9\\uDDAE-\\uDDEA\\uDE00-\\uDE41\\uDE45\\uDF00-\\uDF56]|\\uD835[\\uDEC1\\uDEDB\\uDEFB\\uDF15\\uDF35\\uDF4F\\uDF6F\\uDF89\\uDFA9\\uDFC3]|\\uD836[\\uDC00-\\uDDFF\\uDE37-\\uDE3A\\uDE6D-\\uDE74\\uDE76-\\uDE83\\uDE85\\uDE86]|\\uD838[\\uDD4F\\uDEFF]|\\uD83B[\\uDCAC\\uDCB0\\uDD2E\\uDEF0\\uDEF1]|\\uD83C[\\uDC00-\\uDC2B\\uDC30-\\uDC93\\uDCA0-\\uDCAE\\uDCB1-\\uDCBF\\uDCC1-\\uDCCF\\uDCD1-\\uDCF5\\uDD0D-\\uDDAD\\uDDE6-\\uDE02\\uDE10-\\uDE3B\\uDE40-\\uDE48\\uDE50\\uDE51\\uDE60-\\uDE65\\uDF00-\\uDFFF]|\\uD83D[\\uDC00-\\uDED7\\uDEDC-\\uDEEC\\uDEF0-\\uDEFC\\uDF00-\\uDF76\\uDF7B-\\uDFD9\\uDFE0-\\uDFEB\\uDFF0]|\\uD83E[\\uDC00-\\uDC0B\\uDC10-\\uDC47\\uDC50-\\uDC59\\uDC60-\\uDC87\\uDC90-\\uDCAD\\uDCB0\\uDCB1\\uDD00-\\uDE53\\uDE60-\\uDE6D\\uDE70-\\uDE7C\\uDE80-\\uDE88\\uDE90-\\uDEBD\\uDEBF-\\uDEC5\\uDECE-\\uDEDB\\uDEE0-\\uDEE8\\uDEF0-\\uDEF8\\uDF00-\\uDF92\\uDF94-\\uDFCA]/","export default /[ \\xA0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]/","import Any from './properties/Any/regex.mjs';\nimport Cc  from './categories/Cc/regex.mjs';\nimport Cf  from './categories/Cf/regex.mjs';\nimport P   from './categories/P/regex.mjs';\nimport S   from './categories/S/regex.mjs';\nimport Z   from './categories/Z/regex.mjs';\n\nexport { Any, Cc, Cf, P, S, Z };\n","import { Any, Cc, Z, P } from 'uc.micro'\n\nexport default function (opts) {\n  const re = {}\n  opts = opts || {}\n\n  re.src_Any = Any.source\n  re.src_Cc = Cc.source\n  re.src_Z = Z.source\n  re.src_P = P.source\n\n  // \\p{\\Z\\P\\Cc\\CF} (white spaces + control + format + punctuation)\n  re.src_ZPCc = [re.src_Z, re.src_P, re.src_Cc].join('|')\n\n  // \\p{\\Z\\Cc} (white spaces + control)\n  re.src_ZCc = [re.src_Z, re.src_Cc].join('|')\n\n  // Experimental. List of chars, completely prohibited in links\n  // because can separate it from other part of text\n  const text_separators = '[><\\uff5c]'\n\n  // All possible word characters (everything without punctuation, spaces & controls)\n  // Defined via punctuation & spaces to save space\n  // Should be something like \\p{\\L\\N\\S\\M} (\\w but without `_`)\n  re.src_pseudo_letter = '(?:(?!' + text_separators + '|' + re.src_ZPCc + ')' + re.src_Any + ')'\n  // The same as abothe but without [0-9]\n  // var src_pseudo_letter_non_d = '(?:(?![0-9]|' + src_ZPCc + ')' + src_Any + ')';\n\n  re.src_ip4 =\n\n    '(?:(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)'\n\n  // Prohibit any of \"@/[]()\" in user/pass to avoid wrong domain fetch.\n  re.src_auth = '(?:(?:(?!' + re.src_ZCc + '|[@/\\\\[\\\\]()]).)+@)?'\n\n  re.src_port =\n\n    '(?::(?:6(?:[0-4]\\\\d{3}|5(?:[0-4]\\\\d{2}|5(?:[0-2]\\\\d|3[0-5])))|[1-5]?\\\\d{1,4}))?'\n\n  re.src_host_terminator =\n\n    '(?=$|' + text_separators + '|' + re.src_ZPCc + ')' +\n    '(?!' + (opts['---'] ? '-(?!--)|' : '-|') + '_|:\\\\d|\\\\.-|\\\\.(?!$|' + re.src_ZPCc + '))'\n\n  re.src_path =\n\n    '(?:' +\n      '[/?#]' +\n        '(?:' +\n          '(?!' + re.src_ZCc + '|' + text_separators + '|[()[\\\\]{}.,\"\\'?!\\\\-;]).|' +\n          '\\\\[(?:(?!' + re.src_ZCc + '|\\\\]).)*\\\\]|' +\n          '\\\\((?:(?!' + re.src_ZCc + '|[)]).)*\\\\)|' +\n          '\\\\{(?:(?!' + re.src_ZCc + '|[}]).)*\\\\}|' +\n          '\\\\\"(?:(?!' + re.src_ZCc + '|[\"]).)+\\\\\"|' +\n          \"\\\\'(?:(?!\" + re.src_ZCc + \"|[']).)+\\\\'|\" +\n\n          // allow `I'm_king` if no pair found\n          \"\\\\'(?=\" + re.src_pseudo_letter + '|[-])|' +\n\n          // google has many dots in \"google search\" links (#66, #81).\n          // github has ... in commit range links,\n          // Restrict to\n          // - english\n          // - percent-encoded\n          // - parts of file path\n          // - params separator\n          // until more examples found.\n          '\\\\.{2,}[a-zA-Z0-9%/&]|' +\n\n          '\\\\.(?!' + re.src_ZCc + '|[.]|$)|' +\n          (opts['---']\n            ? '\\\\-(?!--(?:[^-]|$))(?:-*)|' // `---` => long dash, terminate\n            : '\\\\-+|'\n          ) +\n          // allow `,,,` in paths\n          ',(?!' + re.src_ZCc + '|$)|' +\n\n          // allow `;` if not followed by space-like char\n          ';(?!' + re.src_ZCc + '|$)|' +\n\n          // allow `!!!` in paths, but not at the end\n          '\\\\!+(?!' + re.src_ZCc + '|[!]|$)|' +\n\n          '\\\\?(?!' + re.src_ZCc + '|[?]|$)' +\n        ')+' +\n      '|\\\\/' +\n    ')?'\n\n  // Allow anything in markdown spec, forbid quote (\") at the first position\n  // because emails enclosed in quotes are far more common\n  re.src_email_name =\n\n    '[\\\\-;:&=\\\\+\\\\$,\\\\.a-zA-Z0-9_][\\\\-;:&=\\\\+\\\\$,\\\\\"\\\\.a-zA-Z0-9_]*'\n\n  re.src_xn =\n\n    'xn--[a-z0-9\\\\-]{1,59}'\n\n  // More to read about domain names\n  // http://serverfault.com/questions/638260/\n\n  re.src_domain_root =\n\n    // Allow letters & digits (http://test1)\n    '(?:' +\n      re.src_xn +\n      '|' +\n      re.src_pseudo_letter + '{1,63}' +\n    ')'\n\n  re.src_domain =\n\n    '(?:' +\n      re.src_xn +\n      '|' +\n      '(?:' + re.src_pseudo_letter + ')' +\n      '|' +\n      '(?:' + re.src_pseudo_letter + '(?:-|' + re.src_pseudo_letter + '){0,61}' + re.src_pseudo_letter + ')' +\n    ')'\n\n  re.src_host =\n\n    '(?:' +\n    // Don't need IP check, because digits are already allowed in normal domain names\n    //   src_ip4 +\n    // '|' +\n      '(?:(?:(?:' + re.src_domain + ')\\\\.)*' + re.src_domain/* _root */ + ')' +\n    ')'\n\n  re.tpl_host_fuzzy =\n\n    '(?:' +\n      re.src_ip4 +\n    '|' +\n      '(?:(?:(?:' + re.src_domain + ')\\\\.)+(?:%TLDS%))' +\n    ')'\n\n  re.tpl_host_no_ip_fuzzy =\n\n    '(?:(?:(?:' + re.src_domain + ')\\\\.)+(?:%TLDS%))'\n\n  re.src_host_strict =\n\n    re.src_host + re.src_host_terminator\n\n  re.tpl_host_fuzzy_strict =\n\n    re.tpl_host_fuzzy + re.src_host_terminator\n\n  re.src_host_port_strict =\n\n    re.src_host + re.src_port + re.src_host_terminator\n\n  re.tpl_host_port_fuzzy_strict =\n\n    re.tpl_host_fuzzy + re.src_port + re.src_host_terminator\n\n  re.tpl_host_port_no_ip_fuzzy_strict =\n\n    re.tpl_host_no_ip_fuzzy + re.src_port + re.src_host_terminator\n\n  //\n  // Main rules\n  //\n\n  // Rude test fuzzy links by host, for quick deny\n  re.tpl_host_fuzzy_test =\n\n    'localhost|www\\\\.|\\\\.\\\\d{1,3}\\\\.|(?:\\\\.(?:%TLDS%)(?:' + re.src_ZPCc + '|>|$))'\n\n  re.tpl_email_fuzzy =\n\n      '(^|' + text_separators + '|\"|\\\\(|' + re.src_ZCc + ')' +\n      '(' + re.src_email_name + '@' + re.tpl_host_fuzzy_strict + ')'\n\n  re.tpl_link_fuzzy =\n      // Fuzzy link can't be prepended with .:/\\- and non punctuation.\n      // but can start with > (markdown blockquote)\n      '(^|(?![.:/\\\\-_@])(?:[$+<=>^`|\\uff5c]|' + re.src_ZPCc + '))' +\n      '((?![$+<=>^`|\\uff5c])' + re.tpl_host_port_fuzzy_strict + re.src_path + ')'\n\n  re.tpl_link_no_ip_fuzzy =\n      // Fuzzy link can't be prepended with .:/\\- and non punctuation.\n      // but can start with > (markdown blockquote)\n      '(^|(?![.:/\\\\-_@])(?:[$+<=>^`|\\uff5c]|' + re.src_ZPCc + '))' +\n      '((?![$+<=>^`|\\uff5c])' + re.tpl_host_port_no_ip_fuzzy_strict + re.src_path + ')'\n\n  return re\n}\n","import reFactory from './lib/re.mjs'\n\n//\n// Helpers\n//\n\n// Merge objects\n//\nfunction assign (obj /* from1, from2, from3, ... */) {\n  const sources = Array.prototype.slice.call(arguments, 1)\n\n  sources.forEach(function (source) {\n    if (!source) { return }\n\n    Object.keys(source).forEach(function (key) {\n      obj[key] = source[key]\n    })\n  })\n\n  return obj\n}\n\nfunction _class (obj) { return Object.prototype.toString.call(obj) }\nfunction isString (obj) { return _class(obj) === '[object String]' }\nfunction isObject (obj) { return _class(obj) === '[object Object]' }\nfunction isRegExp (obj) { return _class(obj) === '[object RegExp]' }\nfunction isFunction (obj) { return _class(obj) === '[object Function]' }\n\nfunction escapeRE (str) { return str.replace(/[.?*+^$[\\]\\\\(){}|-]/g, '\\\\$&') }\n\n//\n\nconst defaultOptions = {\n  fuzzyLink: true,\n  fuzzyEmail: true,\n  fuzzyIP: false\n}\n\nfunction isOptionsObj (obj) {\n  return Object.keys(obj || {}).reduce(function (acc, k) {\n    /* eslint-disable-next-line no-prototype-builtins */\n    return acc || defaultOptions.hasOwnProperty(k)\n  }, false)\n}\n\nconst defaultSchemas = {\n  'http:': {\n    validate: function (text, pos, self) {\n      const tail = text.slice(pos)\n\n      if (!self.re.http) {\n        // compile lazily, because \"host\"-containing variables can change on tlds update.\n        self.re.http = new RegExp(\n          '^\\\\/\\\\/' + self.re.src_auth + self.re.src_host_port_strict + self.re.src_path, 'i'\n        )\n      }\n      if (self.re.http.test(tail)) {\n        return tail.match(self.re.http)[0].length\n      }\n      return 0\n    }\n  },\n  'https:': 'http:',\n  'ftp:': 'http:',\n  '//': {\n    validate: function (text, pos, self) {\n      const tail = text.slice(pos)\n\n      if (!self.re.no_http) {\n      // compile lazily, because \"host\"-containing variables can change on tlds update.\n        self.re.no_http = new RegExp(\n          '^' +\n          self.re.src_auth +\n          // Don't allow single-level domains, because of false positives like '//test'\n          // with code comments\n          '(?:localhost|(?:(?:' + self.re.src_domain + ')\\\\.)+' + self.re.src_domain_root + ')' +\n          self.re.src_port +\n          self.re.src_host_terminator +\n          self.re.src_path,\n\n          'i'\n        )\n      }\n\n      if (self.re.no_http.test(tail)) {\n        // should not be `://` & `///`, that protects from errors in protocol name\n        if (pos >= 3 && text[pos - 3] === ':') { return 0 }\n        if (pos >= 3 && text[pos - 3] === '/') { return 0 }\n        return tail.match(self.re.no_http)[0].length\n      }\n      return 0\n    }\n  },\n  'mailto:': {\n    validate: function (text, pos, self) {\n      const tail = text.slice(pos)\n\n      if (!self.re.mailto) {\n        self.re.mailto = new RegExp(\n          '^' + self.re.src_email_name + '@' + self.re.src_host_strict, 'i'\n        )\n      }\n      if (self.re.mailto.test(tail)) {\n        return tail.match(self.re.mailto)[0].length\n      }\n      return 0\n    }\n  }\n}\n\n// RE pattern for 2-character tlds (autogenerated by ./support/tlds_2char_gen.js)\n/* eslint-disable-next-line max-len */\nconst tlds_2ch_src_re = 'a[cdefgilmnoqrstuwxz]|b[abdefghijmnorstvwyz]|c[acdfghiklmnoruvwxyz]|d[ejkmoz]|e[cegrstu]|f[ijkmor]|g[abdefghilmnpqrstuwy]|h[kmnrtu]|i[delmnoqrst]|j[emop]|k[eghimnprwyz]|l[abcikrstuvy]|m[acdeghklmnopqrstuvwxyz]|n[acefgilopruz]|om|p[aefghklmnrstwy]|qa|r[eosuw]|s[abcdeghijklmnortuvxyz]|t[cdfghjklmnortvwz]|u[agksyz]|v[aceginu]|w[fs]|y[et]|z[amw]'\n\n// DON'T try to make PRs with changes. Extend TLDs with LinkifyIt.tlds() instead\nconst tlds_default = 'biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф'.split('|')\n\nfunction resetScanCache (self) {\n  self.__index__ = -1\n  self.__text_cache__ = ''\n}\n\nfunction createValidator (re) {\n  return function (text, pos) {\n    const tail = text.slice(pos)\n\n    if (re.test(tail)) {\n      return tail.match(re)[0].length\n    }\n    return 0\n  }\n}\n\nfunction createNormalizer () {\n  return function (match, self) {\n    self.normalize(match)\n  }\n}\n\n// Schemas compiler. Build regexps.\n//\nfunction compile (self) {\n  // Load & clone RE patterns.\n  const re = self.re = reFactory(self.__opts__)\n\n  // Define dynamic patterns\n  const tlds = self.__tlds__.slice()\n\n  self.onCompile()\n\n  if (!self.__tlds_replaced__) {\n    tlds.push(tlds_2ch_src_re)\n  }\n  tlds.push(re.src_xn)\n\n  re.src_tlds = tlds.join('|')\n\n  function untpl (tpl) { return tpl.replace('%TLDS%', re.src_tlds) }\n\n  re.email_fuzzy = RegExp(untpl(re.tpl_email_fuzzy), 'i')\n  re.link_fuzzy = RegExp(untpl(re.tpl_link_fuzzy), 'i')\n  re.link_no_ip_fuzzy = RegExp(untpl(re.tpl_link_no_ip_fuzzy), 'i')\n  re.host_fuzzy_test = RegExp(untpl(re.tpl_host_fuzzy_test), 'i')\n\n  //\n  // Compile each schema\n  //\n\n  const aliases = []\n\n  self.__compiled__ = {} // Reset compiled data\n\n  function schemaError (name, val) {\n    throw new Error('(LinkifyIt) Invalid schema \"' + name + '\": ' + val)\n  }\n\n  Object.keys(self.__schemas__).forEach(function (name) {\n    const val = self.__schemas__[name]\n\n    // skip disabled methods\n    if (val === null) { return }\n\n    const compiled = { validate: null, link: null }\n\n    self.__compiled__[name] = compiled\n\n    if (isObject(val)) {\n      if (isRegExp(val.validate)) {\n        compiled.validate = createValidator(val.validate)\n      } else if (isFunction(val.validate)) {\n        compiled.validate = val.validate\n      } else {\n        schemaError(name, val)\n      }\n\n      if (isFunction(val.normalize)) {\n        compiled.normalize = val.normalize\n      } else if (!val.normalize) {\n        compiled.normalize = createNormalizer()\n      } else {\n        schemaError(name, val)\n      }\n\n      return\n    }\n\n    if (isString(val)) {\n      aliases.push(name)\n      return\n    }\n\n    schemaError(name, val)\n  })\n\n  //\n  // Compile postponed aliases\n  //\n\n  aliases.forEach(function (alias) {\n    if (!self.__compiled__[self.__schemas__[alias]]) {\n      // Silently fail on missed schemas to avoid errons on disable.\n      // schemaError(alias, self.__schemas__[alias]);\n      return\n    }\n\n    self.__compiled__[alias].validate =\n      self.__compiled__[self.__schemas__[alias]].validate\n    self.__compiled__[alias].normalize =\n      self.__compiled__[self.__schemas__[alias]].normalize\n  })\n\n  //\n  // Fake record for guessed links\n  //\n  self.__compiled__[''] = { validate: null, normalize: createNormalizer() }\n\n  //\n  // Build schema condition\n  //\n  const slist = Object.keys(self.__compiled__)\n    .filter(function (name) {\n      // Filter disabled & fake schemas\n      return name.length > 0 && self.__compiled__[name]\n    })\n    .map(escapeRE)\n    .join('|')\n  // (?!_) cause 1.5x slowdown\n  self.re.schema_test = RegExp('(^|(?!_)(?:[><\\uff5c]|' + re.src_ZPCc + '))(' + slist + ')', 'i')\n  self.re.schema_search = RegExp('(^|(?!_)(?:[><\\uff5c]|' + re.src_ZPCc + '))(' + slist + ')', 'ig')\n  self.re.schema_at_start = RegExp('^' + self.re.schema_search.source, 'i')\n\n  self.re.pretest = RegExp(\n    '(' + self.re.schema_test.source + ')|(' + self.re.host_fuzzy_test.source + ')|@',\n    'i'\n  )\n\n  //\n  // Cleanup\n  //\n\n  resetScanCache(self)\n}\n\n/**\n * class Match\n *\n * Match result. Single element of array, returned by [[LinkifyIt#match]]\n **/\nfunction Match (self, shift) {\n  const start = self.__index__\n  const end = self.__last_index__\n  const text = self.__text_cache__.slice(start, end)\n\n  /**\n   * Match#schema -> String\n   *\n   * Prefix (protocol) for matched string.\n   **/\n  this.schema = self.__schema__.toLowerCase()\n  /**\n   * Match#index -> Number\n   *\n   * First position of matched string.\n   **/\n  this.index = start + shift\n  /**\n   * Match#lastIndex -> Number\n   *\n   * Next position after matched string.\n   **/\n  this.lastIndex = end + shift\n  /**\n   * Match#raw -> String\n   *\n   * Matched string.\n   **/\n  this.raw = text\n  /**\n   * Match#text -> String\n   *\n   * Notmalized text of matched string.\n   **/\n  this.text = text\n  /**\n   * Match#url -> String\n   *\n   * Normalized url of matched string.\n   **/\n  this.url = text\n}\n\nfunction createMatch (self, shift) {\n  const match = new Match(self, shift)\n\n  self.__compiled__[match.schema].normalize(match, self)\n\n  return match\n}\n\n/**\n * class LinkifyIt\n **/\n\n/**\n * new LinkifyIt(schemas, options)\n * - schemas (Object): Optional. Additional schemas to validate (prefix/validator)\n * - options (Object): { fuzzyLink|fuzzyEmail|fuzzyIP: true|false }\n *\n * Creates new linkifier instance with optional additional schemas.\n * Can be called without `new` keyword for convenience.\n *\n * By default understands:\n *\n * - `http(s)://...` , `ftp://...`, `mailto:...` & `//...` links\n * - \"fuzzy\" links and emails (example.com, foo@bar.com).\n *\n * `schemas` is an object, where each key/value describes protocol/rule:\n *\n * - __key__ - link prefix (usually, protocol name with `:` at the end, `skype:`\n *   for example). `linkify-it` makes shure that prefix is not preceeded with\n *   alphanumeric char and symbols. Only whitespaces and punctuation allowed.\n * - __value__ - rule to check tail after link prefix\n *   - _String_ - just alias to existing rule\n *   - _Object_\n *     - _validate_ - validator function (should return matched length on success),\n *       or `RegExp`.\n *     - _normalize_ - optional function to normalize text & url of matched result\n *       (for example, for @twitter mentions).\n *\n * `options`:\n *\n * - __fuzzyLink__ - recognige URL-s without `http(s):` prefix. Default `true`.\n * - __fuzzyIP__ - allow IPs in fuzzy links above. Can conflict with some texts\n *   like version numbers. Default `false`.\n * - __fuzzyEmail__ - recognize emails without `mailto:` prefix.\n *\n **/\nfunction LinkifyIt (schemas, options) {\n  if (!(this instanceof LinkifyIt)) {\n    return new LinkifyIt(schemas, options)\n  }\n\n  if (!options) {\n    if (isOptionsObj(schemas)) {\n      options = schemas\n      schemas = {}\n    }\n  }\n\n  this.__opts__ = assign({}, defaultOptions, options)\n\n  // Cache last tested result. Used to skip repeating steps on next `match` call.\n  this.__index__ = -1\n  this.__last_index__ = -1 // Next scan position\n  this.__schema__ = ''\n  this.__text_cache__ = ''\n\n  this.__schemas__ = assign({}, defaultSchemas, schemas)\n  this.__compiled__ = {}\n\n  this.__tlds__ = tlds_default\n  this.__tlds_replaced__ = false\n\n  this.re = {}\n\n  compile(this)\n}\n\n/** chainable\n * LinkifyIt#add(schema, definition)\n * - schema (String): rule name (fixed pattern prefix)\n * - definition (String|RegExp|Object): schema definition\n *\n * Add new rule definition. See constructor description for details.\n **/\nLinkifyIt.prototype.add = function add (schema, definition) {\n  this.__schemas__[schema] = definition\n  compile(this)\n  return this\n}\n\n/** chainable\n * LinkifyIt#set(options)\n * - options (Object): { fuzzyLink|fuzzyEmail|fuzzyIP: true|false }\n *\n * Set recognition options for links without schema.\n **/\nLinkifyIt.prototype.set = function set (options) {\n  this.__opts__ = assign(this.__opts__, options)\n  return this\n}\n\n/**\n * LinkifyIt#test(text) -> Boolean\n *\n * Searches linkifiable pattern and returns `true` on success or `false` on fail.\n **/\nLinkifyIt.prototype.test = function test (text) {\n  // Reset scan cache\n  this.__text_cache__ = text\n  this.__index__ = -1\n\n  if (!text.length) { return false }\n\n  let m, ml, me, len, shift, next, re, tld_pos, at_pos\n\n  // try to scan for link with schema - that's the most simple rule\n  if (this.re.schema_test.test(text)) {\n    re = this.re.schema_search\n    re.lastIndex = 0\n    while ((m = re.exec(text)) !== null) {\n      len = this.testSchemaAt(text, m[2], re.lastIndex)\n      if (len) {\n        this.__schema__ = m[2]\n        this.__index__ = m.index + m[1].length\n        this.__last_index__ = m.index + m[0].length + len\n        break\n      }\n    }\n  }\n\n  if (this.__opts__.fuzzyLink && this.__compiled__['http:']) {\n    // guess schemaless links\n    tld_pos = text.search(this.re.host_fuzzy_test)\n    if (tld_pos >= 0) {\n      // if tld is located after found link - no need to check fuzzy pattern\n      if (this.__index__ < 0 || tld_pos < this.__index__) {\n        if ((ml = text.match(this.__opts__.fuzzyIP ? this.re.link_fuzzy : this.re.link_no_ip_fuzzy)) !== null) {\n          shift = ml.index + ml[1].length\n\n          if (this.__index__ < 0 || shift < this.__index__) {\n            this.__schema__ = ''\n            this.__index__ = shift\n            this.__last_index__ = ml.index + ml[0].length\n          }\n        }\n      }\n    }\n  }\n\n  if (this.__opts__.fuzzyEmail && this.__compiled__['mailto:']) {\n    // guess schemaless emails\n    at_pos = text.indexOf('@')\n    if (at_pos >= 0) {\n      // We can't skip this check, because this cases are possible:\n      // 192.168.1.1@gmail.com, my.in@example.com\n      if ((me = text.match(this.re.email_fuzzy)) !== null) {\n        shift = me.index + me[1].length\n        next = me.index + me[0].length\n\n        if (this.__index__ < 0 || shift < this.__index__ ||\n            (shift === this.__index__ && next > this.__last_index__)) {\n          this.__schema__ = 'mailto:'\n          this.__index__ = shift\n          this.__last_index__ = next\n        }\n      }\n    }\n  }\n\n  return this.__index__ >= 0\n}\n\n/**\n * LinkifyIt#pretest(text) -> Boolean\n *\n * Very quick check, that can give false positives. Returns true if link MAY BE\n * can exists. Can be used for speed optimization, when you need to check that\n * link NOT exists.\n **/\nLinkifyIt.prototype.pretest = function pretest (text) {\n  return this.re.pretest.test(text)\n}\n\n/**\n * LinkifyIt#testSchemaAt(text, name, position) -> Number\n * - text (String): text to scan\n * - name (String): rule (schema) name\n * - position (Number): text offset to check from\n *\n * Similar to [[LinkifyIt#test]] but checks only specific protocol tail exactly\n * at given position. Returns length of found pattern (0 on fail).\n **/\nLinkifyIt.prototype.testSchemaAt = function testSchemaAt (text, schema, pos) {\n  // If not supported schema check requested - terminate\n  if (!this.__compiled__[schema.toLowerCase()]) {\n    return 0\n  }\n  return this.__compiled__[schema.toLowerCase()].validate(text, pos, this)\n}\n\n/**\n * LinkifyIt#match(text) -> Array|null\n *\n * Returns array of found link descriptions or `null` on fail. We strongly\n * recommend to use [[LinkifyIt#test]] first, for best speed.\n *\n * ##### Result match description\n *\n * - __schema__ - link schema, can be empty for fuzzy links, or `//` for\n *   protocol-neutral  links.\n * - __index__ - offset of matched text\n * - __lastIndex__ - index of next char after mathch end\n * - __raw__ - matched text\n * - __text__ - normalized text\n * - __url__ - link, generated from matched text\n **/\nLinkifyIt.prototype.match = function match (text) {\n  const result = []\n  let shift = 0\n\n  // Try to take previous element from cache, if .test() called before\n  if (this.__index__ >= 0 && this.__text_cache__ === text) {\n    result.push(createMatch(this, shift))\n    shift = this.__last_index__\n  }\n\n  // Cut head if cache was used\n  let tail = shift ? text.slice(shift) : text\n\n  // Scan string until end reached\n  while (this.test(tail)) {\n    result.push(createMatch(this, shift))\n\n    tail = tail.slice(this.__last_index__)\n    shift += this.__last_index__\n  }\n\n  if (result.length) {\n    return result\n  }\n\n  return null\n}\n\n/**\n * LinkifyIt#matchAtStart(text) -> Match|null\n *\n * Returns fully-formed (not fuzzy) link if it starts at the beginning\n * of the string, and null otherwise.\n **/\nLinkifyIt.prototype.matchAtStart = function matchAtStart (text) {\n  // Reset scan cache\n  this.__text_cache__ = text\n  this.__index__ = -1\n\n  if (!text.length) return null\n\n  const m = this.re.schema_at_start.exec(text)\n  if (!m) return null\n\n  const len = this.testSchemaAt(text, m[2], m[0].length)\n  if (!len) return null\n\n  this.__schema__ = m[2]\n  this.__index__ = m.index + m[1].length\n  this.__last_index__ = m.index + m[0].length + len\n\n  return createMatch(this, 0)\n}\n\n/** chainable\n * LinkifyIt#tlds(list [, keepOld]) -> this\n * - list (Array): list of tlds\n * - keepOld (Boolean): merge with current list if `true` (`false` by default)\n *\n * Load (or merge) new tlds list. Those are user for fuzzy links (without prefix)\n * to avoid false positives. By default this algorythm used:\n *\n * - hostname with any 2-letter root zones are ok.\n * - biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф\n *   are ok.\n * - encoded (`xn--...`) root zones are ok.\n *\n * If list is replaced, then exact match for 2-chars root zones will be checked.\n **/\nLinkifyIt.prototype.tlds = function tlds (list, keepOld) {\n  list = Array.isArray(list) ? list : [list]\n\n  if (!keepOld) {\n    this.__tlds__ = list.slice()\n    this.__tlds_replaced__ = true\n    compile(this)\n    return this\n  }\n\n  this.__tlds__ = this.__tlds__.concat(list)\n    .sort()\n    .filter(function (el, idx, arr) {\n      return el !== arr[idx - 1]\n    })\n    .reverse()\n\n  compile(this)\n  return this\n}\n\n/**\n * LinkifyIt#normalize(match)\n *\n * Default normalizer (if schema does not define it's own).\n **/\nLinkifyIt.prototype.normalize = function normalize (match) {\n  // Do minimal possible changes by default. Need to collect feedback prior\n  // to move forward https://github.com/markdown-it/linkify-it/issues/1\n\n  if (!match.schema) { match.url = 'http://' + match.url }\n\n  if (match.schema === 'mailto:' && !/^mailto:/i.test(match.url)) {\n    match.url = 'mailto:' + match.url\n  }\n}\n\n/**\n * LinkifyIt#onCompile()\n *\n * Override to modify basic RegExp-s.\n **/\nLinkifyIt.prototype.onCompile = function onCompile () {\n}\n\nexport default LinkifyIt\n","import LinkifyIt from 'linkify-it';\n\n// LinkifyIt doesn't allow underscores `_` inside subdomains\n// saying it might add false positives :(\n// The only way to extend it is to use `onCompile`\n// however, since most of the regular expressions are dependent on one another\n// and regexps are constructed before `onCompile` is called, we need to override all\n// derivative expressions.\n// This change is added with all the test cases of linkify-it valid and invalid links.\n// Hopefully this will not be needed util https://github.com/markdown-it/linkify-it/pull/96 is merged\n// Resolves https://jira.wixpress.com/browse/RICH-1410\nLinkifyIt.prototype.onCompile = function () {\n  const re = this.re;\n  const text_separators = '[><\\uff5c]';\n\n  // @ts-ignore $TSFixMe\n  re.src_domain =\n    '(?:' +\n    re.src_xn +\n    '|' +\n    '(?:' +\n    re.src_pseudo_letter +\n    ')' +\n    '|' +\n    // The only difference from original source is added `_|` here:\n    // ----------------------------------v\n    '(?:' +\n    re.src_pseudo_letter +\n    '(?:-|_|' +\n    re.src_pseudo_letter +\n    '){0,61}' +\n    re.src_pseudo_letter +\n    ')' +\n    ')';\n\n  // @ts-ignore $TSFixMe\n  re.src_host = '(?:(?:(?:(?:' + re.src_domain + ')\\\\.)*' + re.src_domain /* _root */ + '))';\n\n  // @ts-ignore $TSFixMe\n  re.tpl_host_fuzzy = '(?:' + re.src_ip4 + '|(?:(?:(?:' + re.src_domain + ')\\\\.)+(?:%TLDS%)))';\n\n  // @ts-ignore $TSFixMe\n  re.src_host_strict = re.src_host + re.src_host_terminator;\n\n  // @ts-ignore $TSFixMe\n  re.tpl_host_fuzzy_strict = re.tpl_host_fuzzy + re.src_host_terminator;\n\n  // @ts-ignore $TSFixMe\n  re.src_host_port_strict = re.src_host + re.src_port + re.src_host_terminator;\n\n  // @ts-ignore $TSFixMe\n  re.tpl_host_port_fuzzy_strict = re.tpl_host_fuzzy + re.src_port + re.src_host_terminator;\n\n  // @ts-ignore $TSFixMe\n  re.tpl_email_fuzzy =\n    '(^|' +\n    text_separators +\n    '|\"|\\\\(|' +\n    re.src_ZCc +\n    ')' +\n    '(' +\n    re.src_email_name +\n    '@' +\n    re.tpl_host_fuzzy_strict +\n    ')';\n\n  // @ts-ignore $TSFixMe\n  re.tpl_link_fuzzy =\n    '(^|(?![.:/\\\\-_@])(?:[$+<=>^`|\\uff5c]|' +\n    re.src_ZPCc +\n    '))' +\n    '((?![$+<=>^`|\\uff5c])' +\n    re.tpl_host_port_fuzzy_strict +\n    re.src_path +\n    ')';\n\n  // @ts-ignore $TSFixMe\n  re.tpl_link_no_ip_fuzzy =\n    '(^|(?![.:/\\\\-_@])(?:[$+<=>^`|\\uff5c]|' +\n    re.src_ZPCc +\n    '))' +\n    '((?![$+<=>^`|\\uff5c])' +\n    re.tpl_host_port_no_ip_fuzzy_strict +\n    re.src_path +\n    ')';\n};\n\nexport const linkify = new LinkifyIt();\n","export default {\"indentation\":0,\"offset\":0}","export default {\"indentation\":0,\"offset\":0,\"start\":1}","export default {\"textStyle\":{\"textAlignment\":\"AUTO\",\"lineHeight\":null},\"indentation\":0,\"level\":null}","export default {\"containerData\":null,\"dimensions\":{\"colsWidthRatio\":[],\"rowsHeight\":[],\"colsMinWidth\":[]},\"header\":null,\"rowHeader\":null,\"columnHeader\":null,\"cellSpacing\":0,\"cellPadding\":[]}","import { pipe } from 'fp-ts-esm/function';\n\nimport type { Node, RichContent } from './../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport { Node_Type } from './../../ricos-schema/legacy/wix/rich_content/v1/index.js';\n\nimport type { Modifier } from '../modifier-infra.js';\nimport { getModifier } from '../modifier-infra.js';\n\nexport type RichContentModifier = {\n  filter: (predicate: (node: Node) => boolean) => RichContentModifier;\n  set: (setter: (node: Node) => Node | Node[]) => RichContent;\n};\n\nconst nodesAccessor = (node: Node) => node.nodes ?? [];\n\nconst nodesSetter = (nodes: Node[]) => ({ nodes });\n\nconst getRootNode = (content: RichContent): Node => ({\n  id: 'root',\n  type: Node_Type.UNRECOGNIZED,\n  nodes: content.nodes,\n});\n\n/**\n * Utilizes function binding and scope to override Modifier.set behavior\n */\nconst toRichContentModifier = (content: RichContent) =>\n  function (modifier: Modifier<Node>): RichContentModifier {\n    const self: { modifier: RichContentModifier } = { modifier };\n    return {\n      filter(predicate: Parameters<Modifier<Node>['filter']>[0]) {\n        self.modifier = modifier.filter.bind(self.modifier)(predicate);\n        self.modifier.set = this.set;\n        self.modifier.filter = this.filter;\n        return self.modifier;\n      },\n      set(setter: Parameters<Modifier<Node>['set']>[0]) {\n        const root = modifier.set.bind(self.modifier)(setter);\n        return { ...content, nodes: root.nodes };\n      },\n    };\n  };\n\nexport const modify = (content: RichContent): RichContentModifier =>\n  pipe(\n    content,\n    getRootNode,\n    getModifier<Node>(nodesAccessor, nodesSetter),\n    toRichContentModifier(content)\n  );\n","import lodash from 'lodash';\n\nimport type { Node, RichContent } from './../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport bulletedListDataDefaults from './../ricos-schema/legacy/statics/bulleted_list.defaults.json.js';\nimport orderedListDataDefaults from './../ricos-schema/legacy/statics/ordered_list.defaults.json.js';\nimport paragraphDataDefaults from './../ricos-schema/legacy/statics/paragraph.defaults.json.js';\nimport tableDataDefaults from './../ricos-schema/legacy/statics/table.defaults.json.js';\n\nimport { modify } from './RicosContentAPI/modify.js';\n\n// This is normalization of the future RicosDocument\n// For now its just a helper for tests\nexport const normalizeRicosDocument = (content: RichContent): RichContent => {\n  const result = modify(content).set(node => {\n    return lodash.flow(\n      removeEmptyDecorations,\n      removeEmptyNodesField,\n      removeDefaultsFromDataFields,\n      removeUndefinedFields\n    )(node);\n  });\n  return cleanDocumentStyle(removeMetadata(result));\n};\n\nconst removeUndefinedFields = (node: Node): Node => {\n  const result = Object.entries(node).reduce((acc, [key, value]) => {\n    if (value === undefined) {\n      return acc;\n    }\n    // @ts-ignore\n    acc[key] = value;\n    return acc;\n  }, {} as Node);\n  return result;\n};\n\nconst removeMetadata = (content: RichContent): RichContent => {\n  const { metadata: _, ...rest } = content;\n  return rest;\n};\n\nconst cleanDocumentStyle = (content: RichContent): RichContent => {\n  const { documentStyle, ...rest } = content;\n  if (!documentStyle || !Object.keys(documentStyle).length) {\n    return rest;\n  }\n  const result = { ...rest, documentStyle: removeDefaults(documentStyle, documentStyleDefaults) };\n  return result;\n};\n\nconst removeEmptyDecorations = (node: Node) => {\n  if (node.type === 'TEXT') {\n    if (node.textData?.decorations?.length) {\n      return node;\n    }\n    return { ...node, textData: lodash.omit(node.textData, 'decorations') };\n  }\n  return node;\n};\n\nconst removeEmptyNodesField = (node: Node) => {\n  return !node.nodes?.length ? lodash.omit(node, 'nodes') : node;\n};\n\nconst removeDefaultsFromDataFields = (node: Node) => {\n  if (node.type === 'PARAGRAPH') {\n    const { paragraphData, ...rest } = node;\n    const normalizedData = removeDefaults(paragraphData ?? {}, paragraphDataDefaults);\n    return { ...rest, ...(normalizedData ? { paragraphData: normalizedData } : {}) };\n  }\n\n  if (node.type === 'BULLETED_LIST') {\n    const { bulletedListData, ...rest } = node;\n    const normalizedData = removeDefaults(bulletedListData ?? {}, bulletedListDataDefaults);\n    return {\n      ...rest,\n      // For now we cannot remove the indentation since it is int32 in proto (not optional)\n      ...(normalizedData ? { bulletedListData: { indentation: 0, ...normalizedData } } : {}),\n    };\n  }\n\n  if (node.type === 'TABLE') {\n    const { tableData, ...rest } = node;\n    const normalizedData = removeDefaults(tableData ?? {}, tableDataDefaults);\n    return {\n      ...rest,\n      ...(normalizedData ? { tableData: normalizedData } : {}),\n    };\n  }\n\n  if (node.type === 'ORDERED_LIST') {\n    const { orderedListData, ...rest } = node;\n    const normalizedData = removeDefaults(orderedListData ?? {}, orderedListDataDefaults);\n    return {\n      ...rest,\n      // For now we cannot remove the indentation since it is int32 in proto (not optional)\n      ...(normalizedData ? { orderedListData: { indentation: 0, ...normalizedData } } : {}),\n    };\n  }\n  return node;\n};\n\nfunction removeDefaults(\n  data: Record<string, any>,\n  defaults: Record<string, any>\n): Record<string, any> | undefined {\n  const result = Object.entries(data).reduce<Record<string, any>>((acc, [key, value]) => {\n    if (value === undefined) {\n      return acc;\n    }\n    if (lodash.isEqual(value, defaults[key])) {\n      return acc;\n    }\n    if (lodash.isPlainObject(value) && lodash.isPlainObject(defaults[key])) {\n      const nested = removeDefaults(value, defaults[key]);\n      if (nested !== undefined) {\n        acc[key] = nested;\n      }\n      return acc;\n    }\n    acc[key] = value;\n    return acc;\n  }, {});\n\n  return Object.keys(result).length ? result : undefined;\n}\n\nconst textNodeStyleDefaults = {\n  decorations: [],\n  nodeStyle: {},\n};\n\nconst documentStyleDefaults: NonNullable<RichContent['documentStyle']> = {\n  headerOne: textNodeStyleDefaults,\n  headerTwo: textNodeStyleDefaults,\n  headerThree: textNodeStyleDefaults,\n  headerFour: textNodeStyleDefaults,\n  headerFive: textNodeStyleDefaults,\n  headerSix: textNodeStyleDefaults,\n  paragraph: textNodeStyleDefaults,\n  blockquote: textNodeStyleDefaults,\n  codeBlock: textNodeStyleDefaults,\n};\n","export { builders } from './builders/index.js';\nexport { compare } from './comparision/compare.js';\nexport {\n  ACTION_BUTTON_TYPE,\n  ANCHOR_TYPE,\n  APP_EMBED_TYPE,\n  AUDIO_TYPE,\n  BLOCKQUOTE,\n  BULLET_LIST_TYPE,\n  CODE_BLOCK_TYPE,\n  COLLAPSIBLE_LIST_TYPE,\n  DIVIDER_TYPE,\n  EMBED_TYPE,\n  EMOJI_TYPE,\n  EXTERNAL,\n  EXTERNAL_LINK_TYPE,\n  EXTERNAL_MENTIONS_TYPE,\n  FILE_UPLOAD_TYPE,\n  GALLERY_TYPE,\n  GIPHY_TYPE,\n  HASHTAG_TYPE,\n  HEADER_BLOCK,\n  HEADERS_MARKDOWN_TYPE,\n  HEADINGS_DROPDOWN_TYPE,\n  HTML_TYPE,\n  IMAGE_TYPE,\n  IMAGE_TYPE_LEGACY,\n  INDENT_TYPE,\n  LINE_SPACING_TYPE,\n  LINK_BUTTON_TYPE,\n  LINK_PREVIEW_TYPE,\n  LINK_TYPE,\n  MENTION_TYPE,\n  NO_WRAP,\n  NUMBERED_LIST_TYPE,\n  POLL_TYPE,\n  PREVIEW,\n  RICOS_ACTION_BUTTON_TYPE,\n  RICOS_ANCHOR_TYPE,\n  RICOS_CAPTION_TYPE,\n  RICOS_COLLAPSIBLE_LIST_TYPE,\n  RICOS_DIVIDER_TYPE,\n  RICOS_FILE_TYPE,\n  RICOS_FONT_SIZE_TYPE,\n  RICOS_GALLERY_TYPE,\n  RICOS_GIPHY_TYPE,\n  RICOS_HTML_TYPE,\n  RICOS_IMAGE_TYPE,\n  RICOS_INDENT_TYPE,\n  RICOS_LAYOUT_CELL_TYPE,\n  RICOS_LAYOUT_TYPE,\n  RICOS_LINE_SPACING_TYPE,\n  RICOS_LINK_BUTTON_TYPE,\n  RICOS_LINK_PREVIEW_TYPE,\n  RICOS_LINK_TYPE,\n  RICOS_MENTION_TYPE,\n  RICOS_NODE_TYPE_TO_DATA_FIELD,\n  RICOS_POLL_TYPE,\n  RICOS_SHAPE_TYPE,\n  RICOS_TABLE_TYPE,\n  RICOS_TEXT_COLOR_TYPE,\n  RICOS_TEXT_HIGHLIGHT_TYPE,\n  RICOS_VERTICAL_EMBED_TYPE,\n  RICOS_VIDEO_TYPE,\n  SHAPE_TYPE,\n  SOUND_CLOUD_TYPE,\n  SPOILER_TYPE,\n  TABLE_TYPE,\n  TEXT_COLOR_TYPE,\n  TEXT_HIGHLIGHT_TYPE,\n  TIPTAP_ACTION_BUTTON_TYPE,\n  TIPTAP_APP_EMBED_TYPE,\n  TIPTAP_AUDIO_TYPE,\n  TIPTAP_CAPTION_TYPE,\n  TIPTAP_CODE_BLOCK_TYPE,\n  TIPTAP_COLLAPSIBLE_ITEM_BODY_TYPE,\n  TIPTAP_COLLAPSIBLE_ITEM_TITLE_TYPE,\n  TIPTAP_COLLAPSIBLE_ITEM_TYPE,\n  TIPTAP_COLLAPSIBLE_LIST_TYPE,\n  TIPTAP_DIVIDER_TYPE,\n  TIPTAP_EMBED_TYPE,\n  TIPTAP_FIGURE_TYPE,\n  TIPTAP_FILE_TYPE,\n  TIPTAP_GALLERY_TYPE,\n  TIPTAP_GIF_TYPE,\n  TIPTAP_HTML_TYPE,\n  TIPTAP_IMAGE_TYPE,\n  TIPTAP_CARD_TYPE,\n  TIPTAP_LAYOUT_CELL_TYPE,\n  TIPTAP_LAYOUT_TYPE,\n  TIPTAP_LINK_BUTTON_TYPE,\n  TIPTAP_LINK_PREVIEW_TYPE,\n  TIPTAP_POLL_TYPE,\n  TIPTAP_SHAPE_TYPE,\n  TIPTAP_TABLE_CELL_TYPE,\n  TIPTAP_TABLE_HEADER_CELL_TYPE,\n  TIPTAP_TABLE_ROW_TYPE,\n  TIPTAP_TABLE_TYPE,\n  TIPTAP_VIDEO_TYPE,\n  UNDO_REDO_TYPE,\n  UNSTYLED,\n  VERTICAL_EMBED_TYPE,\n  VIDEO_TYPE,\n  VIDEO_TYPE_LEGACY,\n  WRAP,\n  CARD_TYPE,\n} from './consts.js';\nexport { isContentStateEmpty, isRichContentEmpty } from './contentStateUtils/contentStateUtils.js';\nexport { createContent } from './contentStateUtils/createContent.js';\nexport { generateId } from './converters/generateRandomId.js';\nexport { toSizeInKb } from './file-size-utils/to-size-in-kb.js';\nexport {\n  and,\n  deepLog,\n  equals,\n  firstRight,\n  getMatches,\n  log,\n  or,\n  stringifyWithReplace,\n  tap,\n} from './fp-utils.js';\nexport { getTextDirection } from './getTextDirection.js';\nexport { normalizeInitialState } from './normalization/index.js';\nexport { normalizeRicosDocument } from './normalize-ricos-document.js';\nexport {\n  getMediaData,\n  type ImageMedia,\n  type VideoMedia,\n} from './RicosContentAPI/get-media-data.js';\nexport type {\n  AudioComponentData,\n  BuilderFunctionsMetadata,\n  CollapsibleListItem,\n  ComponentData,\n  ContentBuilder,\n  DocumentStyle,\n  DraftContent,\n  FileComponentData,\n  ImageComponentData,\n  LinkRange,\n  ListItemData,\n  MediaPrivacy,\n  MediaUploadError,\n  NodeCreatorsCollection,\n  NormalizationProcessor,\n  NormalizeConfig,\n  PDFSettings,\n  RicosContent,\n  RicosContentBlock,\n  RicosEntity,\n  RicosEntityMap,\n  RicosEntityRange,\n  RicosInlineStyleRange,\n  TableCell,\n  TextBlockStyle,\n  UpdateEntityFileSelectFunc,\n  UpdateEntityFileSelectFunctionParams,\n  UpdateEntityFileUploadFunc,\n  UpdateEntityFileUploadFunctionParams,\n  VideoComponentData,\n} from './types/index.js';\nexport { isDraftContent, isRichContent, MediaUploadErrorKey } from './types/index.js';\nexport { getValidHexColor } from './utils.js';\nexport { Version } from './version/index.js';\n","import type { Editor } from '@tiptap/core';\nimport type { NodeSelection, Selection } from '@tiptap/pm/state';\nimport type { ComponentType, FC, PropsWithChildren, ReactNode, Ref } from 'react';\n\nimport type { PmMarkConverter, PmNodeConverter } from './../pm-converters/types.js';\nimport type { IEditorQuery } from './../ricos-content-query/index.js';\nimport type {\n  ACTION_BUTTON_TYPE,\n  AUDIO_TYPE,\n  CODE_BLOCK_TYPE,\n  COLLAPSIBLE_LIST_TYPE,\n  DIVIDER_TYPE,\n  EMOJI_TYPE,\n  EXTERNAL_LINK_TYPE,\n  EXTERNAL_MENTIONS_TYPE,\n  FILE_UPLOAD_TYPE,\n  GALLERY_TYPE,\n  GIPHY_TYPE,\n  HASHTAG_TYPE,\n  HEADERS_MARKDOWN_TYPE,\n  HEADINGS_DROPDOWN_TYPE,\n  HTML_TYPE,\n  IMAGE_TYPE,\n  IMAGE_TYPE_LEGACY,\n  INDENT_TYPE,\n  LINE_SPACING_TYPE,\n  LINK_BUTTON_TYPE,\n  LINK_PREVIEW_TYPE,\n  LINK_TYPE,\n  MENTION_TYPE,\n  POLL_TYPE,\n  PREVIEW,\n  SHAPE_TYPE,\n  SPOILER_TYPE,\n  TABLE_TYPE,\n  TEXT_COLOR_TYPE,\n  TEXT_HIGHLIGHT_TYPE,\n  UNDO_REDO_TYPE,\n  VERTICAL_EMBED_TYPE,\n  VIDEO_TYPE,\n  VIDEO_TYPE_LEGACY,\n} from './../ricos-content/index.js';\nimport type { ModalService } from './../ricos-modals/index.js';\nimport type { PluginServices } from './../ricos-plugins/editorPlugins.js';\nimport type { MentionData as MentionPluginData, Node } from './../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport { Decoration_Type, Node_Type } from './../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport type { ToolbarButtonRenderer } from './/plugin-toolbar';\nimport type { LinkOptions } from './../_shared/link-modal/open-link-modal/types';\nimport type { SitePagesDropdownOption } from './../_shared/site-pages/types.js';\nimport type { FileUploadData } from './../plugin-file-upload/types.js';\nimport type { ContentServices } from './../toolbars-v3/types.js';\n\nimport type { PublicCommands } from './editorCommandsType.js';\nimport type {\n  ClassNameStrategy,\n  GetToolbarSettings,\n  IRicosEditor,\n  PluginExports,\n  ResolveReferenceElement,\n  RicosExtension,\n  RicosPluginToolbarNamesValues,\n  TFunction,\n  TextDirection,\n  ThemeData,\n  TiptapEditor,\n} from './index.js';\nimport type { RicosServices } from './services.js';\nimport type { KeyboardShortcut } from './shortcuts.js';\nimport type { ToolbarType } from './toolbarEnums.js';\nimport type { TextButton } from './toolbarTypes.js';\nimport type { ViewerContextualData } from './viewer.js';\n\nexport { Decoration_Type, Node_Type };\n\nexport type MentionData = { mention: MentionPluginData; trigger: string };\n\nexport type PluginMapping = {\n  [type: string]: {\n    component: ComponentType<PropsWithChildren>;\n    classNameStrategies?: {\n      size?: ClassNameStrategy;\n      alignment?: ClassNameStrategy;\n      textWrap?: ClassNameStrategy;\n    };\n    elementType?: 'inline' | 'block';\n  };\n};\n\nexport type PluginTypeMapper = (...args: $TSFixMe[]) => PluginMapping;\n\ntype PluginType =\n  | typeof LINK_BUTTON_TYPE\n  | typeof ACTION_BUTTON_TYPE\n  | typeof CODE_BLOCK_TYPE\n  | typeof DIVIDER_TYPE\n  | typeof EMOJI_TYPE\n  | typeof FILE_UPLOAD_TYPE\n  | typeof GALLERY_TYPE\n  | typeof GIPHY_TYPE\n  | typeof HASHTAG_TYPE\n  | typeof HEADERS_MARKDOWN_TYPE\n  | typeof HTML_TYPE\n  | typeof IMAGE_TYPE\n  | typeof IMAGE_TYPE_LEGACY\n  | typeof INDENT_TYPE\n  | typeof LINE_SPACING_TYPE\n  | typeof HEADINGS_DROPDOWN_TYPE\n  | typeof SPOILER_TYPE\n  | typeof EXTERNAL_LINK_TYPE\n  | typeof LINK_TYPE\n  | typeof LINK_PREVIEW_TYPE\n  | typeof EXTERNAL_MENTIONS_TYPE\n  | typeof MENTION_TYPE\n  | typeof TEXT_COLOR_TYPE\n  | typeof TEXT_HIGHLIGHT_TYPE\n  | typeof UNDO_REDO_TYPE\n  | typeof VERTICAL_EMBED_TYPE\n  | typeof VIDEO_TYPE\n  | typeof AUDIO_TYPE\n  | typeof VIDEO_TYPE_LEGACY\n  | typeof POLL_TYPE\n  | typeof COLLAPSIBLE_LIST_TYPE\n  | typeof TABLE_TYPE\n  | typeof SHAPE_TYPE;\n\ninterface BasePluginConfig {\n  type: string;\n}\n\nexport type MenuGroups = 'basic' | 'advanced' | 'embed' | 'embed_wix';\n\ntype MenuConfig = {\n  group?: MenuGroups;\n  tags?: string;\n};\n\nexport type AddButton = {\n  id: string;\n  icon: ComponentType;\n  command: (args: {\n    publicCommands: PublicCommands;\n    referenceElement?: HTMLElement | null;\n  }) => boolean;\n  tooltip: string;\n  toolbars: ToolbarType[];\n  dataHook: string;\n  label: string;\n  menuConfig?: MenuConfig;\n  shortcuts?: KeyboardShortcut[];\n};\n\nexport type ToolbarButton<P = any> =\n  | ({\n      id: string;\n      type: 'toggle' | 'modal' | 'color';\n      renderer: ToolbarButtonRenderer;\n      tooltip: string | null;\n      label?: string;\n      dataHook: string;\n      command: ToolbarButtonCommand;\n      attributes?: ToolbarButtonAttributes;\n    } & (\n      | { icon: ComponentType }\n      | {\n          getIcon: (args: {\n            services: RicosServices;\n            attributes: Record<string, any>;\n          }) => ComponentType;\n        }\n    ))\n  | {\n      id: string;\n      type: 'color';\n      renderer: ToolbarButtonRenderer;\n      attributes?: ToolbarButtonAttributes;\n      tooltip: string | null;\n      dataHook: string;\n      command: ToolbarButtonCommand;\n      getComponentProps?: GetComponentPropsFn<P>;\n    }\n  | {\n      id: string;\n      type: 'separator';\n      renderer: ToolbarButtonRenderer;\n      icon: ComponentType;\n      attributes?: ToolbarButtonAttributes;\n    }\n  | ({\n      id: string;\n      type: 'dropdown';\n      tooltip: string | null;\n      label?: string;\n      dataHook: string;\n      renderer: ToolbarButtonRenderer;\n      Component: ComponentType<P>;\n      getComponentProps: GetComponentPropsFn<P>;\n      command: ToolbarButtonCommand<P>;\n      attributes?: ToolbarButtonAttributes;\n    } & (\n      | { icon: ComponentType }\n      | {\n          getIcon: (args: {\n            services: RicosServices;\n            attributes: Record<string, any>;\n          }) => ComponentType;\n        }\n    ));\n\nexport type ToolbarButtonCommand<P = unknown> = (args: {\n  referenceElement: HTMLElement | undefined;\n  tiptapEditor: Editor;\n  publicCommands: PublicCommands;\n  attributes: $TSFixMe;\n  modals: ModalService;\n  isMobile: boolean;\n  getComponentProps: GetComponentPropsFn<P> | undefined;\n}) => void;\n\ntype GetComponentPropsFn<P> = (args: {\n  tiptapEditor: Editor;\n  attributes: $TSFixMe;\n  publicCommands: PublicCommands;\n  t: TFunction;\n  modals: ModalService;\n  languageDir: TextDirection;\n}) => P;\n\nexport type ToolbarButtonAttributes = Record<\n  string,\n  | {\n      resolve: (content: $TSFixMe, services: ContentServices, editor: Editor) => any;\n    }\n  | undefined\n>;\n\nexport type FloatingToolbarButton = {\n  Component: ComponentType<any>;\n  priority: number;\n  isVisible: (args: {\n    editorQuery: IEditorQuery['query'];\n    modalService: ModalService;\n    editor: TiptapEditor;\n    nodeId?: string;\n  }) => boolean;\n};\n\nexport type PluginToolbarConfig<PluginConfig extends EditorPluginConfig = Record<string, any>> = {\n  names: RicosPluginToolbarNamesValues[];\n  getButtons: (config: PluginConfig, services: RicosServices) => ToolbarButton[];\n  isVisible?: (selection: Selection | NodeSelection, editor: IRicosEditor) => boolean;\n  resolveReferenceElement?: ResolveReferenceElement;\n};\n\nexport type AddButtonsCreator<PluginConfig = Record<string, any>> = (\n  config: PluginConfig,\n  services: RicosServices\n) => AddButton[];\n\nexport interface EditorPlugin<\n  PluginConfig extends EditorPluginConfig = Record<string, any>,\n> extends BasePluginConfig {\n  config: PluginConfig;\n  tiptapExtensions: RicosExtension[];\n  pmNodeConverters?: PmNodeConverter[];\n  pmMarkConverters?: PmMarkConverter[];\n  getAddButtons?: AddButtonsCreator<PluginConfig>;\n  textButtons?: TextButton<any>[];\n  getQuickActions?: ({\n    pluginServices,\n  }: {\n    pluginServices: PluginServices;\n    config: PluginConfig;\n  }) => QuickAction[];\n  disableOnMobile?: boolean;\n  shortcuts?: KeyboardShortcut[];\n  toolbar?: PluginToolbarConfig<PluginConfig>;\n  floatingToolbarButton?: FloatingToolbarButton;\n  exports?: Partial<PluginExports>;\n  dependencies?: EditorPlugin[];\n  Provider?: React.ComponentType<{ children: React.ReactNode }>;\n  GlobalComponent?: React.ComponentType;\n}\n\nexport type QuickAction = {\n  id: string;\n  title: string;\n  icon: React.ComponentType;\n  section: QuickActionsModalSection;\n  command: ({\n    editor,\n    publicCommands,\n    modalService,\n    referenceElement,\n  }: {\n    editor: Editor;\n    publicCommands: PublicCommands;\n    modalService: ModalService;\n    referenceElement?: HTMLElement;\n  }) => void;\n  tags: string[];\n};\n\nexport interface ViewerPlugin<PluginConfig = Record<string, any>> extends BasePluginConfig {\n  config: PluginConfig;\n  typeMapper?: PluginTypeMapper;\n  nodeViewRenderers?: NodeViewRenderers;\n  nodeViewDecorators?: NodeViewDecorator<JSX.Element>[];\n}\n\nexport type BasePlugin = EditorPlugin & ViewerPlugin;\n\nexport type EditorPluginCreator<PluginConfig extends Record<string, any> = Record<string, any>> = (\n  config?: PluginConfig\n) => EditorPlugin<PluginConfig>;\n\nexport type ViewerPluginCreator<PluginConfig> = (\n  config?: PluginConfig\n) => ViewerPlugin<PluginConfig>;\n\nexport interface EditorPluginConfig {\n  toolbar?: {\n    hidden?: string[];\n    icons?: {\n      [key: string]: (props: $TSFixMe) => JSX.Element;\n    };\n  };\n  getIsVisiblePromise?: (...args: $TSFixMe[]) => Promise<boolean>;\n}\n\nexport interface ViewerPluginConfig {}\n\nexport type LegacyEditorPluginConfig<\n  PluginConfig extends EditorPluginConfig = Record<string, any>,\n> = Partial<{\n  [key in PluginType]: PluginConfig;\n}> & {\n  uiSettings?: UISettings;\n  getToolbarSettings?: GetToolbarSettings;\n  themeData?: ThemeData;\n\n  resolveFileUrl?: (data: FileUploadData) => Promise<string>;\n  [key: string]: any;\n};\n\nexport type LegacyViewerPluginConfig<PluginConfig = Record<string, any>> = Partial<{\n  [key in PluginType]: PluginConfig;\n}> & {\n  uiSettings?: UISettings;\n\n  [PREVIEW]?: any;\n\n  [key: string]: any;\n};\n\nexport interface LinkPanelSettings {\n  blankTargetToggleVisibilityFn?: () => boolean;\n  nofollowRelToggleVisibilityFn?: () => boolean;\n  showNewTabCheckbox?: boolean;\n  showNoFollowCheckbox?: boolean;\n  showNoReferrerCheckbox?: boolean;\n  showSponsoredCheckbox?: boolean;\n  placeholder?: string;\n\n  dropDown?: any;\n  externalPopups?: boolean;\n}\n\nexport type PublicLinkType = 'section' | SitePagesDropdownOption;\n\nexport type GeneralLinkSettings = {\n  /**\n   *  web-address is always enabled\n   * */\n  enabledLinkTypes?: PublicLinkType[];\n  /**\n   *  Initial link options. These will be used when creating a new link and also displayed in the link panel\n   * */\n  initialLinkOptions?: LinkOptions;\n  /**\n   *  Whether to underline the link text automatically\n   *  @default true\n   * */\n  autoUnderline?: boolean;\n};\n\nexport type HistoryKeyboardShortcuts = {\n  /**\n   * Custom handler for undo keyboard shortcut (Mod-z)\n   * Return true to prevent default behavior\n   */\n  undo?: () => boolean;\n  /**\n   * Custom handler for redo keyboard shortcut (Mod-y, Shift-Mod-z)\n   * Return true to prevent default behavior\n   */\n  redo?: () => boolean;\n};\n\nexport type HistorySettings = {\n  /**\n   * Callback invoked when items are added to the undo stack\n   */\n  onHistoryChange?: () => void;\n  /**\n   * Custom keyboard shortcut handlers for undo/redo.\n   * Set to false to disable keyboard shortcuts entirely.\n   * Provide an object with undo/redo handlers to override default behavior.\n   * @default undefined (uses default keyboard shortcuts)\n   */\n  keyboardShortcuts?: HistoryKeyboardShortcuts | false;\n};\n\nexport type UISettings = {\n  linkPanel?: LinkPanelSettings;\n  disableRightClick?: boolean;\n  disableDownload?: boolean;\n};\n\nexport interface RicosNodesViewRendererProps {\n  nodes: Node[];\n  forwardRef?: Ref<HTMLDivElement>;\n  isRoot?: boolean;\n  addAnchorsPrefix?: string;\n  shouldParagraphApplyTextStyle?: boolean;\n}\n\nexport type RicosNodesViewRenderer = FC<RicosNodesViewRendererProps>;\n\nexport type CustomClassNames = {\n  alignment?: string;\n  size?: string;\n  textWrap?: string;\n};\n\ntype NodeViewContainerProps = {\n  node: Node;\n  nodeIndex: number;\n  customClassNames?: CustomClassNames;\n  withHorizontalScroll?: boolean;\n};\n\nexport type NodeViewContainer = FC<\n  NodeViewContainerProps & {\n    children:\n      | ReactNode\n      | ((args: {\n          ContainerElement: FC<PropsWithChildren>;\n          SpoilerWrapper: FC<PropsWithChildren>;\n          LinkWrapper: FC<PropsWithChildren>;\n        }) => ReactNode);\n  }\n>;\n\nexport type NodeViewRendererProps = {\n  node: Node;\n  nodeIndex: number;\n  RicosNodesRenderer: RicosNodesViewRenderer;\n  NodeViewContainer: NodeViewContainer;\n  isRoot?: boolean;\n  shouldParagraphApplyTextStyle?: boolean;\n  SpoilerViewerWrapper?: ComponentType<{ className: unknown; width?: number }>;\n};\n\nexport type NodeViewRenderer = (props: NodeViewRendererProps) => JSX.Element;\n\nexport type NodeViewRenderers = Partial<Record<Node_Type, NodeViewRenderer>>;\n\nexport type Rule = (node: Node) => boolean;\n\ntype DecorateArgs<T> = {\n  node: Node;\n  context: ViewerContextualData;\n  element?: T;\n  isRoot: boolean;\n};\n\nexport type Decorate<T> = (args: DecorateArgs<T>) => T;\n\nexport type NodeViewDecorator<T> = {\n  rule: Rule;\n  decorate: Decorate<T>;\n  isText?: boolean;\n  /*\n   * The priority property defines the rendering order of decorations\n   * on DOM elements. Higher values render first, ensuring proper\n   * decoration precedence, crucial for cases like link vs. color\n   * decorations.\n   * Default value is 0.\n   */\n  priority?: number;\n};\n\nexport const quickActionsModalSections = {\n  ultra: 'ultra',\n  CommonlyUsed: 'QuickActionsPlugin_SectionTitle_CommonlyUsed',\n  AI: 'QuickActionsPlugin_SectionTitle_AI',\n  FormatLayout: 'QuickActionsPlugin_SectionTitle_FormatLayout',\n  Media: 'QuickActionsPlugin_SectionTitle_Media',\n  Embed: 'QuickActionsPlugin_SectionTitle_Embed',\n  EmbedWix: 'QuickActionsPlugin_SectionTitle_EmbedFromWIX',\n} as const;\n\nexport type QuickActionsModalSection =\n  (typeof quickActionsModalSections)[keyof typeof quickActionsModalSections];\n","export type {\n  BICallbackParams,\n  BICallbacks,\n  changePluginSettingsArgs,\n  mediaPluginsDetailsArgs,\n  onContentEditedArgs,\n  OnInlineToolbarOpen,\n  onKeyboardShortcutActionArgs,\n  onMenuLoadArgs,\n  onPluginAddStepArgs,\n  onPluginDeleteArgs,\n  onPluginModalOpenedArgs,\n  onToolbarButtonClickArgs,\n  onViewerLoadedArgs,\n  PluginAddParams,\n  PluginsCountSummary,\n  pluginsPopoverArgs,\n} from './biCallbacksTypes.js';\nexport type { ColorPaletteManager, SetColors } from './colorPaletteTypes.js';\nexport type { CommandDescriptor } from './commands.js';\nexport type {\n  AddLinkData,\n  AnchorTarget,\n  AvailableExperiments,\n  ClassNameStrategy,\n  CustomAnchorScroll,\n  FocusPosition,\n  InlineStyle,\n  LinkPreviewData,\n  LocaleResource,\n  ModalStyles,\n  onAtomicBlockFocus,\n  RelValue,\n  SEOSettings,\n  TextAlignment,\n  TextDirection,\n  TFunction,\n} from './commonTypes.js';\nexport type { IContent } from './content.js';\nexport type { GeneralContext, Platform, TabFocusBehavior } from './context.js';\nexport type { DebugMode } from './debug-mode.js';\nexport type {\n  AnchorDecoration,\n  BoldDecoration,\n  ColorDecoration,\n  FontSizeDecoration,\n  ItalicDecoration,\n  LinkDecoration,\n  MentionDecoration,\n  SpoilerDecoration,\n  StrikethroughDecoration,\n  UnderlineDecoration,\n} from './decoration-refined-types.js';\nexport type { Editable, Editables } from './editable-content.js';\nexport type { EditorEventSource, IRicosEditor } from './editor.js';\nexport type {\n  ColorType,\n  DecorationsDataMap,\n  HeadingType,\n  InsertTextOptions,\n  PluginsDataMap,\n  PublicCommands,\n  TextBlockType,\n} from './editorCommandsType.js';\nexport { CUSTOM_LINK } from './editorCommandsType.js';\nexport type {\n  EditorStyleClasses,\n  Helpers,\n  OnErrorFunction,\n  OpenModalOptions,\n  RicosEditorAPI,\n} from './editorTypes.js';\nexport { DOC_STYLE_TYPES, DRAFT_TO_DOC_TYPE_WITH_LISTS } from './editorTypes.js';\nexport type { IEventEmitter } from './event-emitter.js';\nexport type {\n  EventData,\n  EventPublisher,\n  EventRegistrar,\n  EventSubscriptor,\n  SubscribeTopicDescriptor,\n  Subscription,\n  TopicComponent,\n  TopicDescriptor,\n} from './events.js';\nexport type { ToolbarButtonProps } from './formatting-toolbar-buttons.js';\nexport type { InsertPluginButtons } from './insertPluginButtons.js';\nexport type {\n  AnyKey,\n  BasicKeyCombination,\n  EditingKeys,\n  FunctionKeys,\n  LatinKeys,\n  ModifierKeys,\n  NavigationKeys,\n  NonAlphaNumericKeys,\n  Numbers,\n  NumericKeypadKeys,\n  TriggerKey,\n  ValidKeyCombination,\n  WhitespaceKeys,\n} from './key-types';\nexport { isModifierKey, isTriggerKey } from './key-types.js';\nexport type {\n  Layout,\n  LayoutTypes,\n  Modal,\n  ModalHandle,\n  ModalProps,\n  Placement,\n  PluginPanel,\n} from './modalTypes.js';\nexport type {\n  AppEmbedNode,\n  AudioNode,\n  BlockquoteNode,\n  BulletedListNode,\n  ButtonNode,\n  CaptionNode,\n  CodeBlockNode,\n  CollapsibleItemBodyNode,\n  CollapsibleItemNode,\n  CollapsibleItemTitleNode,\n  CollapsibleListNode,\n  DividerNode,\n  EmbedNode,\n  ExternalNode,\n  FileNode,\n  GalleryNode,\n  GifNode,\n  HeadingNode,\n  HtmlNode,\n  ImageNode,\n  LayoutCellNode,\n  LayoutNode,\n  LinkPreviewNode,\n  ListItemNode,\n  ListNode,\n  OrderedListNode,\n  ParagraphNode,\n  PollNode,\n  RefinedNode,\n  RichTextNode,\n  TableCellNode,\n  TableNode,\n  TableRowNode,\n  TextNode,\n  VideoNode,\n} from './node-refined-types.js';\nexport type {\n  EventSource,\n  PolicySubscriber,\n  PublisherProvider,\n  Subscriptor,\n  SubscriptorProvider,\n} from './orchestration.js';\nexport type { PluginExports } from './plugin-exports.js';\nexport { PluginNameToToolbarIdMap } from './plugin-name-to-toolbar-id-map.js';\nexport type {\n  IsVisible,\n  ResolveReferenceElement,\n  ToolbarButtonRenderers,\n} from './plugin-toolbar.js';\nexport type { PluginToolbarIds } from './plugin-toolbar-id.js';\nexport { PluginToolbarId } from './plugin-toolbar-id.js';\nexport { PLUGIN_MENU_HORIZONTAL_MODAL_ID } from './pluginMenuTypes.js';\nexport type {\n  AddPluginLinkParams,\n  OnAddPluginLink,\n  OnPluginAction,\n  PluginsActionGenericParams,\n  SearchInsidePluginParams,\n} from './pluginsBiCallbacksTypes.js';\nexport type {\n  AddButton,\n  AddButtonsCreator,\n  BasePlugin,\n  CustomClassNames,\n  Decorate,\n  EditorPlugin,\n  EditorPluginConfig,\n  EditorPluginCreator,\n  FloatingToolbarButton,\n  LegacyEditorPluginConfig,\n  LegacyViewerPluginConfig,\n  LinkPanelSettings,\n  MentionData,\n  MenuGroups,\n  NodeViewContainer,\n  NodeViewDecorator,\n  NodeViewRenderer,\n  NodeViewRendererProps,\n  NodeViewRenderers,\n  PluginMapping,\n  PluginToolbarConfig,\n  PluginTypeMapper,\n  QuickAction,\n  QuickActionsModalSection,\n  RicosNodesViewRenderer,\n  RicosNodesViewRendererProps,\n  Rule,\n  ToolbarButton,\n  UISettings,\n  ViewerPlugin,\n  ViewerPluginConfig,\n  ViewerPluginCreator,\n} from './pluginTypes.js';\nexport { Decoration_Type, Node_Type, quickActionsModalSections } from './pluginTypes.js';\nexport type { ReactNodeViewRendererOptions } from './react-node-view-rendering-options.js';\nexport type { RicosPluginToolbarNamesValues } from './ricos-plugin-toolbar-names.js';\nexport { RicosPluginToolbarNames } from './ricos-plugin-toolbar-names.js';\nexport type {\n  CommonProps,\n  EditorProps,\n  Environment,\n  FullscreenProps,\n  LinkSettings,\n  ContentChangeMeta,\n  ContentChangeSource,\n  MediaSettings,\n  ModalSettings,\n  OnBusyChangeFunction,\n  OnContentChangeFunction,\n  RicosPortal,\n  ToolbarSettings,\n} from './RicosTypes.js';\nexport type { RicosServices } from './services.js';\nexport type {\n  CustomizableKeyboardShortcut,\n  HotKeysProps,\n  KeyboardShortcut,\n  KeyboardShortcutId,\n  LocalizedDisplayData,\n  ShortcutDataProvider,\n  ShortcutScope,\n  ValidatedShortcut,\n} from './shortcuts.js';\nexport { createShortcut } from './shortcuts.js';\nexport type { AmbientStyles } from './styles.js';\nexport type {\n  CssVarsObject,\n  CustomCodeBlockStyle,\n  CustomEditorStyle,\n  CustomFooterToolbarStyle,\n  CustomMentionStyle,\n  CustomQuoteStyle,\n  CustomTextualStyle,\n  PaletteColors,\n  PaletteConfig,\n  PalettePreset,\n  PaletteRgbColors,\n  RicosCustomStyles,\n  RicosNativeStyles,\n  RicosSettingsStyles,\n  RicosTheme,\n  RicosTypography,\n  ThemeData,\n  ThemeStrategyArgs,\n  ThemeStrategyResult,\n  ThemeUtils,\n  WixColor,\n  WixPalette,\n  WixTypography,\n  WixTypographyDefinition,\n} from './themeTypes.js';\nexport type {\n  DOMOutputSpec,\n  ExtensionPlaceholder,\n  ExtensionProps,\n  Group,\n  HtmlAttributes,\n  HtmlRicosNodeExtension,\n  MarkConfig,\n  NodeConfig,\n  NodeHoc,\n  NodeHocDescriptor,\n  PluginProps,\n  ReactRicosNodeExtension,\n  RicosExtension,\n  RicosExtensionConfig,\n  RicosFunctionalExtension,\n  RicosMarkExtension,\n  RicosNodeExtension,\n  RicosNodeExtensionBase,\n  RicosNodeProps,\n  RicosTiptapContextValue,\n  TiptapEditor,\n  TiptapExtensionConfig,\n} from './tiptap.js';\nexport {\n  isRicosFunctionalExtension,\n  isRicosMarkExtension,\n  isRicosNodeExtension,\n  Mark_Type,\n} from './tiptap.js';\nexport { DisplayMode, ToolbarType } from './toolbarEnums.js';\nexport type {\n  DesktopTextButtons,\n  FooterToolbarConfig,\n  GetToolbarSettings,\n  PlatformSettings,\n  PluginButton,\n  TextButtonMapping,\n  TextButtons,\n  TextGroupButtons,\n  ToolbarSettingsFunctions,\n  ToolbarSettingsFunctionsGeneric,\n} from './toolbarSettingsTypes.js';\nexport type {\n  IContentResolver,\n  IToolbarItem,\n  IToolbarItemConfigTiptap,\n  PluginToolbarButtonConfig,\n  TextButton,\n  TiptapCommand,\n  ToolbarItemAttributes,\n} from './toolbarTypes.js';\nexport type {\n  IMediaPluginService,\n  IMessage,\n  INotifier,\n  MediaData,\n  MediaPluginLocalLoadedData,\n  UploadContextType,\n  UploadedData,\n  UploadFn,\n} from './uploadServicesTypes.js';\nexport { MediaUploadProgressKey } from './uploadServicesTypes.js';\nexport type { NotifySpoiler, ViewerContextualData } from './viewer.js';\nexport type { IZindexLayer, IZindexLayers, IZIndexService } from './z-index-layers.js';\nexport type { ComponentData, DraftContent } from './../ricos-content/index.js';\n","/* oxlint-disable symbol-description */\n// Forked from https://github.com/dai-shi/use-context-selector/blob/2dd334d727fc3b4cbadf7876b6ce64e0c633fd25/src/index.ts\n// Changes: removed scheduler dependency, unused functions and added equalityFn support\nimport type { ComponentType, Context as ContextOrig, MutableRefObject, Provider } from 'react';\nimport {\n  createContext as createContextOrig,\n  createElement,\n  useContext as useContextOrig,\n  useEffect,\n  useLayoutEffect,\n  useReducer,\n  useRef,\n} from 'react';\nimport { unstable_batchedUpdates as batchedUpdates } from 'react-dom';\n\nconst CONTEXT_VALUE = Symbol();\nconst ORIGINAL_PROVIDER = Symbol();\n\nconst isSSR = typeof window === 'undefined';\n\nconst useIsomorphicLayoutEffect = isSSR ? useEffect : useLayoutEffect;\n\n// for preact that doesn't have runWithPriority\nconst runWithNormalPriority = (thunk: () => void) => thunk();\n\ntype Version = number;\n\nexport type SelectorContextValue<Value> = {\n  [CONTEXT_VALUE]: {\n    /* \"v\"alue     */ v: MutableRefObject<Value>;\n    /* versio\"n\"   */ n: MutableRefObject<Version>;\n    /* \"l\"isteners */ l: Set<(action: readonly [Version] | readonly [Version, Value]) => void>;\n    /* \"u\"pdate    */ u: (thunk: () => void) => void;\n  };\n};\n\nexport interface Context<Value> {\n  Provider: ComponentType<{\n    value: Value;\n    children: React.ReactNode;\n    onSelectorContextValue?: (v: SelectorContextValue<Value>) => void;\n  }>;\n  displayName?: string;\n}\n\nconst createProvider =\n  <Value>(\n    ProviderOrig: Provider<SelectorContextValue<Value>>\n  ): React.FC<\n    React.PropsWithChildren<{\n      value: Value;\n      onSelectorContextValue?: (v: SelectorContextValue<Value>) => void;\n    }>\n  > =>\n  ({ value, children, onSelectorContextValue }) => {\n    const valueRef = useRef(value);\n    const versionRef = useRef(0);\n    const contextValue = useRef<SelectorContextValue<Value>>();\n    if (!contextValue.current) {\n      const listeners = new Set<(action: readonly [Version] | readonly [Version, Value]) => void>();\n      const update = (thunk: () => void) => {\n        batchedUpdates(() => {\n          versionRef.current += 1;\n          listeners.forEach(listener => listener([versionRef.current]));\n          thunk();\n        });\n      };\n      contextValue.current = {\n        [CONTEXT_VALUE]: {\n          /* \"v\"alue     */ v: valueRef,\n          /* versio\"n\"   */ n: versionRef,\n          /* \"l\"isteners */ l: listeners,\n          /* \"u\"pdate    */ u: update,\n        },\n      };\n      onSelectorContextValue?.(contextValue.current);\n    }\n    useIsomorphicLayoutEffect(() => {\n      valueRef.current = value;\n      versionRef.current += 1;\n      runWithNormalPriority(() => {\n        (contextValue.current as SelectorContextValue<Value>)[CONTEXT_VALUE].l.forEach(listener => {\n          listener([versionRef.current, value]);\n        });\n      });\n    }, [value]);\n    return createElement(ProviderOrig, { value: contextValue.current }, children);\n  };\n\nconst identity = <T>(x: T) => x;\n\n/**\n * This creates a special context for `useContextSelector`.\n *\n * @example\n * import { createContext } from 'use-context-selector';\n *\n * const PersonContext = createContext({ firstName: '', familyName: '' });\n */\nexport function createContext<Value>(defaultValue: Value) {\n  const context = createContextOrig<SelectorContextValue<Value>>({\n    [CONTEXT_VALUE]: {\n      /* \"v\"alue     */ v: { current: defaultValue },\n      /* versio\"n\"   */ n: { current: -1 },\n      /* \"l\"isteners */ l: new Set(),\n      /* \"u\"pdate    */ u: f => f(),\n    },\n  });\n  (\n    context as unknown as {\n      [ORIGINAL_PROVIDER]: Provider<SelectorContextValue<Value>>;\n    }\n  )[ORIGINAL_PROVIDER] = context.Provider;\n  (context as unknown as Context<Value>).Provider = createProvider(context.Provider);\n\n  // oxlint-disable-next-line fp/no-delete\n  delete (context as any).Consumer; // no support for Consumer\n  return context as unknown as Context<Value>;\n}\n\n/**\n * This hook returns context selected value by selector.\n *\n * It will only accept context created by `createContext`.\n * It will trigger re-render if only the selected value is referentially changed.\n *\n * The selector should return referentially equal result for same input for better performance.\n *\n * @example\n * import { useContextSelector } from 'use-context-selector';\n *\n * const firstName = useContextSelector(PersonContext, state => state.firstName);\n */\nexport function useContextSelector<Value, Selected>(\n  context: Context<Value>,\n  selector: (value: Value) => Selected,\n  equalityFn: (v1: Selected, v2: Selected) => boolean,\n  trackString?: string\n) {\n  const contextValue = useContextOrig(\n    context as unknown as ContextOrig<SelectorContextValue<Value>>\n  );\n  return useContextSelectorWithValue(contextValue, selector, equalityFn, trackString);\n}\n\nexport function useContextSelectorWithValue<Value, Selected>(\n  selectorContextValue: SelectorContextValue<Value>,\n  selector: (value: Value) => Selected,\n  equalityFn: (v1: Selected, v2: Selected) => boolean,\n  trackString?: string\n) {\n  const contextValue = selectorContextValue[CONTEXT_VALUE];\n  if (typeof process === 'object' && process.env.NODE_ENV !== 'production') {\n    if (!contextValue) {\n      throw new Error('useContextSelector requires special context');\n    }\n  }\n  const {\n    /* \"v\"alue     */ v: { current: value },\n    /* versio\"n\"   */ n: { current: version },\n    /* \"l\"isteners */ l: listeners,\n  } = contextValue;\n  const selected = selector(value);\n  const [state, dispatch] = useReducer(\n    (\n      prev: readonly [Value, Selected],\n      next?: // undefined from render below\n        | readonly [Version] // from useContextUpdate\n        | readonly [Version, Value] // from provider effect\n    ) => {\n      if (trackString) {\n        // oxlint-disable-next-line no-console\n        console.log(trackString, 're-render');\n      }\n      if (!next) {\n        return [value, selected] as const;\n      }\n      if (next[0] <= version) {\n        if (equalityFn(prev[1], selected)) {\n          return prev; // bail out\n        }\n        return [value, selected] as const;\n      }\n      try {\n        if (next.length === 2) {\n          if (Object.is(prev[0], next[1])) {\n            return prev; // do not update\n          }\n          const nextSelected = selector(next[1]);\n          if (equalityFn(prev[1], nextSelected)) {\n            return prev; // do not update\n          }\n          return [next[1], nextSelected] as const;\n        }\n      } catch {\n        // ignored (stale props or some other reason)\n      }\n      return [...prev] as const; // schedule update\n    },\n    [value, selected] as const\n  );\n  if (!equalityFn(state[1], selected)) {\n    // schedule re-render\n    // this is safe because it's self contained\n    dispatch();\n  }\n  useIsomorphicLayoutEffect(() => {\n    listeners.add(dispatch);\n    return () => {\n      listeners.delete(dispatch);\n    };\n  }, [listeners]);\n  return state[1];\n}\n\n/**\n * This hook returns the entire context value.\n * Use this instead of React.useContext for consistent behavior.\n *\n * @example\n * import { useContext } from 'use-context-selector';\n *\n * const person = useContext(PersonContext);\n */\nexport function useContext<Value>(context: Context<Value>) {\n  return useContextSelector(context, identity, Object.is);\n}\n\n/**\n * This hook returns an update function that accepts a thunk function\n *\n * Use this for a function that will change a value in\n * [Concurrent Mode](https://reactjs.org/docs/concurrent-mode-intro.html).\n * Otherwise, there's no need to use this hook.\n *\n * @example\n * import { useContextUpdate } from 'use-context-selector';\n *\n * const update = useContextUpdate();\n * update(() => setState(...));\n */\n\n// Not needed ATM\n// export function useContextUpdate<Value>(context: Context<Value>) {\n//   const contextValue = useContextOrig((context as unknown) as ContextOrig<ContextValue<Value>>)[\n//     CONTEXT_VALUE\n//   ];\n//   if (typeof process === 'object' && process.env.NODE_ENV !== 'production') {\n//     if (!contextValue) {\n//       throw new Error('useContextUpdate requires special context');\n//     }\n//   }\n//   const { u: update } = contextValue;\n//   return update;\n// }\n","var styleDataHash = '2e77dcda';  \nexport const injectCss = (() => {\n  var css = `.VegOQ{margin-left:0;margin-right:auto;z-index:1}.VegOQ:not(.swhHa){float:left;margin-right:40px}@supports not (contain:inline-size){@media only screen and (max-width:480px){.VegOQ:not(.swhHa){float:none;margin-right:auto}}}@container (width < 480px){.VegOQ:not(.swhHa){float:none;margin-right:auto}}.Wa83i{margin-left:auto;margin-right:0;z-index:1}.Wa83i:not(.swhHa){float:right;margin-left:40px}@supports not (contain:inline-size){@media only screen and (max-width:480px){.Wa83i:not(.swhHa){float:none;margin-left:auto}}}@container (width < 480px){.Wa83i:not(.swhHa){float:none;margin-left:auto}}._3PcS9{clear:both;display:block}._3PcS9:not(._7CpFQ){margin-left:auto;margin-right:auto;max-width:100%}._7CpFQ,.swhHa{width:100%}.WW4lX ._7CpFQ,.WW4lX .swhHa{margin:0 -8px;width:auto}.ozzgJ{width:fit-content}.l41Vz{margin-left:auto;margin-right:auto;max-width:100%}.-P4UH{width:min(350px,100%)!important}.WW4lX .-P4UH{width:50%}.dwA63{margin-left:auto;margin-right:auto}.WW4lX .dwA63{width:150px}.CUkAS{display:flex}`;\n  var isTest = typeof process !== 'undefined' && process.env && process.env['NODE_ENV'] === 'test';\n\n  if (isTest || !css || typeof document === 'undefined') { return; }\n  if (document.querySelector('style[data-ricos-style-hash=\"' + styleDataHash + '\"]')) { return; }\n\n  var head = document.head || document.getElementsByTagName('head')[0];\n  var style = document.createElement('style');\n  style.setAttribute('data-ricos-style-hash', styleDataHash);\n  style.type = 'text/css';\n\n  head.appendChild(style);\n\n  if (style.styleSheet) {\n    style.styleSheet.cssText = css;\n  } else {\n    style.appendChild(document.createTextNode(css));\n  }\n});\n\ninjectCss();\n\n\n\nexport default {\n  \"alignLeft\": \"VegOQ\",\n  \"textWrapNowrap\": \"swhHa\",\n  \"alignRight\": \"Wa83i\",\n  \"alignCenter\": \"_3PcS9\",\n  \"sizeFullWidth\": \"_7CpFQ\",\n  \"renderedInTable\": \"WW4lX\",\n  \"sizeOriginal\": \"ozzgJ\",\n  \"sizeContent\": \"l41Vz\",\n  \"sizeSmall\": \"-P4UH\",\n  \"sizeSmallCenter\": \"dwA63\",\n  \"flex\": \"CUkAS\"\n};","var styleDataHash = '1e613253';  \nexport const injectCss = (() => {\n  var css = `@charset \"UTF-8\";.JUfrJ,.ReactModalPortal,.Xh03S,.glob_fontElementMap,button{font-family:var(--ricos-font-family,unset)}.LCUle{display:flex}.Cw6kn:hover{box-shadow:0 0 0 2px var(--ricos-focus-action-color,var(--ricos-action-color,#116dff))}.Cw6kn:hover,.EaGE4{border-radius:var(--ricos-native-whitebox-border-radius,0);cursor:default}.EaGE4{box-shadow:0 0 0 1px var(--ricos-focus-action-color,var(--ricos-action-color,#116dff))}.lB1eW .EaGE4{box-shadow:none!important}.LDy8h{cursor:move;display:block;height:100%;left:0;position:absolute;top:0;width:100%}.LDy8h.WFxJr{pointer-events:none}._6mGx6 ::selection{background:transparent}.OV--g{display:none}.Xh03S{position:relative}._54Mb-{max-width:100%}.ReactModal__Body--open{overflow-y:hidden}.ReactModal__Content{direction:ltr;font-weight:300}.ReactModalPortal{color:var(--ricos-settings-text-color,#333)}.ReactModalPortal,.ReactModalPortal input{font-family:var(--ricos-settings-text-font-family,Madefor,\"Helvetica Neue\",Helvetica,Arial,メイリオ,meiryo,\"ヒラギノ角ゴ pro w3\",\"hiragino kaku gothic pro\",sans-serif)}.fGmy-{color:#333;text-decoration:none}.lwl-U{display:block}.RQf9L{position:relative}.s2Z8N{margin-left:-20px;margin-right:-20px;overflow-x:auto;overflow-y:hidden}.s2Z8N.vuFg-::-webkit-scrollbar-thumb{background-color:rgba(0,0,0,.5)}.s2Z8N.NX6gd::-webkit-scrollbar-thumb{background-color:transparent}._7s-NQ{max-width:max-content!important;min-width:100%}.s2Z8N::-webkit-scrollbar{-webkit-appearance:none}.s2Z8N::-webkit-scrollbar-thumb{border:2px solid #fff;border-radius:8px}.s2Z8N::-webkit-scrollbar:horizontal{height:10px}`;\n  var isTest = typeof process !== 'undefined' && process.env && process.env['NODE_ENV'] === 'test';\n\n  if (isTest || !css || typeof document === 'undefined') { return; }\n  if (document.querySelector('style[data-ricos-style-hash=\"' + styleDataHash + '\"]')) { return; }\n\n  var head = document.head || document.getElementsByTagName('head')[0];\n  var style = document.createElement('style');\n  style.setAttribute('data-ricos-style-hash', styleDataHash);\n  style.type = 'text/css';\n\n  head.appendChild(style);\n\n  if (style.styleSheet) {\n    style.styleSheet.cssText = css;\n  } else {\n    style.appendChild(document.createTextNode(css));\n  }\n});\n\ninjectCss();\n\n\n\nexport default {\n  \"fontElementMap\": \"JUfrJ\",\n  \"pluginContainer\": \"Xh03S\",\n  \"flex\": \"LCUle\",\n  \"isFocusable\": \"Cw6kn\",\n  \"hasFocus\": \"EaGE4\",\n  \"dragImageView\": \"lB1eW\",\n  \"overlay\": \"LDy8h\",\n  \"noPointerEventsOnFocus\": \"WFxJr\",\n  \"hideTextSelection\": \"_6mGx6\",\n  \"hidden\": \"OV--g\",\n  \"pluginContainerMobile\": \"_54Mb-\",\n  \"isImage\": \"fGmy-\",\n  \"anchor\": \"lwl-U\",\n  \"horizontalScrollbarWrapper\": \"RQf9L\",\n  \"pluginWithHorizontalScrollbar\": \"s2Z8N\",\n  \"show\": \"vuFg-\",\n  \"hide\": \"NX6gd\",\n  \"horizontalScrollbar\": \"_7s-NQ\"\n};","import type { PluginContainerData } from './../../ricos-schema/next-schema/index.js';\nimport {\n  Node_Type,\n  PluginContainerData_Alignment,\n  PluginContainerData_Width_Type,\n} from './../../ricos-schema/next-schema/index.js';\n\nexport const ORIGINAL_SHAPE_WIDTH = 200;\nexport const DEFAULT_COLOR = '#000000';\nexport const SEARCH_DEBOUNCE_MS = 350;\n\nexport const DEFAULTS = {\n  config: {\n    alignment: 'center',\n    size: 'CONTENT',\n    textWrap: true,\n  },\n} as const;\n\nexport type DataColorMap = Record<string, { color: string; opacity: string }>;\n\nexport const RICOS_DEFAULTS: {\n  containerData: PluginContainerData;\n} = {\n  containerData: {\n    alignment: PluginContainerData_Alignment.CENTER,\n    width: {\n      size: PluginContainerData_Width_Type.ORIGINAL,\n    },\n    textWrap: true,\n  },\n} as const;\n\nexport const SHAPE_COLORS_MODAL_ID = `${Node_Type.SHAPE}.colors`;\nexport const SHAPE_SIZE_MODAL_ID = `${Node_Type.SHAPE}.size`;\nexport const SHAPE_ALIGNMENT_MODAL_ID = `${Node_Type.SHAPE}.alignment`;\nexport const SHAPE_COLOR_PICKER_MODAL_ID = `${Node_Type.SHAPE}.colorPicker`;\n\nexport const ALLOWED_SHAPE_ATTRIBUTES = [\n  'data-bbox',\n  'viewBox',\n  'xmlns',\n  'd',\n  'fill',\n  'opacity',\n] as const;\n\nexport const VECTOR_ART_CATEGORY_ID = 'b8774c7d-152e-4fca-b0bd-69601605d49c' as const;\nexport const SHAPES_CATEGORY_ID = '95ffa6e1-99d0-48a4-a3b8-a935fe630596' as const;\n\nexport const SHAPE_SEARCH_ITEMS_BASE_URL =\n  'https://apps.wix.com/_api/ricos-media-proxy/public-media/search-items';\n","import type { Node } from '@tiptap/pm/model';\nimport classNames from 'classnames';\nimport lodash from 'lodash';\n\nimport type { GIFData, ImageData, Node as RicosNode, PluginContainerData } from './../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport {\n  Node_Type,\n  PluginContainerData_Alignment,\n  PluginContainerData_Width_Type,\n} from './../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport generalRTLIgnoredStyles from './../wix-rich-content-common/statics/styles/general-scss.js';\nimport generalStyles from './../editor-common/statics/styles/general-scss.js';\nimport { ORIGINAL_SHAPE_WIDTH } from './../plugin-shape/utils/consts.js';\n\nconst stylesWithRTL = { ...generalStyles, ...generalRTLIgnoredStyles };\n\ntype Nullish<T> = T | null | undefined;\n\nconst getAlignmentClassName = (alignment?: PluginContainerData_Alignment) => {\n  if (!alignment || alignment === PluginContainerData_Alignment.UNRECOGNIZED) {\n    return '';\n  }\n\n  return stylesWithRTL[`align${lodash.upperFirst(alignment.toLowerCase())}`];\n};\n\nconst getSizeClassName = (size?: PluginContainerData_Width_Type) => {\n  if (!size || size === PluginContainerData_Width_Type.UNRECOGNIZED) {\n    return '';\n  }\n\n  return stylesWithRTL[`size${lodash.upperFirst(lodash.camelCase(size))}`];\n};\n\nconst getTextWrapClassName = (textWrap?: boolean) =>\n  textWrap === false ? stylesWithRTL.textWrapNowrap : '';\n\nconst isCustomWidthDisabled = (node: Node, isMobile: boolean) => {\n  if (node.type.name === Node_Type.IMAGE) {\n    const componentData = node.attrs as ImageData;\n\n    return !!(\n      isMobile &&\n      componentData?.image?.width &&\n      Number(componentData?.containerData?.width?.custom || 0) > 150\n    );\n  }\n\n  return false;\n};\n\nconst getOriginalWidth = (node: Node) => {\n  switch (node.type.name) {\n    case Node_Type.IMAGE:\n      return (node.attrs as ImageData)?.image?.width;\n    case Node_Type.GIF:\n      return (node.attrs as GIFData)?.width;\n    case Node_Type.SHAPE:\n      return ORIGINAL_SHAPE_WIDTH;\n    default:\n      return undefined;\n  }\n};\n\n/**\n * Returns base class names for plugin container.\n */\nexport const getPluginContainerClassNames = (isMobile: boolean) =>\n  classNames(stylesWithRTL.pluginContainer, isMobile && stylesWithRTL.pluginContainerMobile);\n\n/**\n * Returns class names for plugin alignment, size, and text wrapping (float).\n */\nexport const getPluginPlacementClassNames = (node: Node, isTextWrapEnabled: boolean) => {\n  const containerData = node.attrs?.containerData as Nullish<PluginContainerData>;\n\n  return classNames(\n    getAlignmentClassName(containerData?.alignment),\n    getSizeClassName(containerData?.width?.size),\n    getTextWrapClassName(isTextWrapEnabled && containerData?.textWrap)\n  );\n};\n\n/**\n * Returns class names for node focus and hover highlighting.\n */\nexport const getPluginFocusClassNames = (isFocused: boolean) =>\n  classNames(\n    stylesWithRTL.isFocusable,\n    isFocused && stylesWithRTL.hasFocus,\n    !isFocused && stylesWithRTL.hideTextSelection\n  );\n\n/**\n * Returns the width of the node based on its type, custom width, and the original width.\n */\nexport const getNodeWidth = (node: Node, isMobile: boolean) => {\n  const containerData = node.attrs?.containerData as Nullish<PluginContainerData>;\n  const disableCustomWidth = isCustomWidthDisabled(node, isMobile);\n\n  const customWidth = !disableCustomWidth && containerData?.width?.custom;\n  const originalWidth =\n    (containerData?.width?.size === 'ORIGINAL' || disableCustomWidth) && getOriginalWidth(node);\n\n  return customWidth || originalWidth;\n};\n\n/**\n * Returns the container data of a Ricos schema node.\n */\nexport const getContainerData = (node: RicosNode): PluginContainerData | undefined | null => {\n  const data = `${lodash.camelCase(node.type)}Data`;\n  return (node?.[data as $TSFixMeKey<RicosNode>] as $TSFixMe)?.containerData;\n};\n","import type {\n  SearchItemsMultiCategoriesRequest,\n  SearchItemsMultiCategoriesResponse,\n} from '@wix/ambassador-media-public-media-v1-media-item/types';\nimport React from 'react';\n\nimport type { UpdateEntityFileSelectFunc } from './../ricos-content/index.js';\nimport type { MediaUploadFn } from './../_shared/create-media-upload-fn.js';\nimport type { PickMediaFn } from './../_shared/media/pick-media.js';\nimport type { DecodedInstance } from './../_shared/request-service-provider/parse-instance.js';\nimport type { FetchSitePages } from './../_shared/site-pages/types.js';\nimport type { AiRequestService } from './../plugin-ai/utils/use-ai-request-service.js';\nimport type { GifsResult } from './../plugin-giphy/types.js';\nimport type { DoPromptStream } from './../plugin-inline-ai/types.js';\nimport type {\n  EmbeddableItem,\n  VerticalApiType,\n} from './../plugin-vertical-embed/types.js';\n\n/** Context to inject dev mocks */\nexport const DevContext = React.createContext<DevContextProps>({});\n\nexport type DevContextProps = {\n  trackRender?: (componentName: string) => void;\n  aiRequestService?: AiRequestService;\n  giphyRequestService?: {\n    getTrendingGifs: (params: {\n      path: 'search' | 'trending';\n      category: 'gifs' | 'stickers';\n      limit: number;\n      offset: number;\n      searchTag?: string;\n    }) => Promise<{ type: string; results: GifsResult }>;\n    getSearchGifs: (params: {\n      path: 'search' | 'trending';\n      category: 'gifs' | 'stickers';\n      limit: number;\n      offset: number;\n      searchTag?: string;\n    }) => Promise<{ type: string; results: GifsResult }>;\n  };\n  shapeService?: {\n    fetchShapes: (\n      options: SearchItemsMultiCategoriesRequest,\n      makeRequest: (input: string | URL, init?: RequestInit) => Promise<Response>\n    ) => Promise<SearchItemsMultiCategoriesResponse>;\n  };\n  pmNodeAttrs?: Record<string, any>;\n  fetchSitePages?: FetchSitePages;\n  fetchOembedWithAuthFromDevContext?: (url: string) => Promise<{\n    html?: string;\n    title?: string;\n    thumbnail_url?: string;\n    thumbnail_width?: number;\n    thumbnail_height?: number;\n  }>;\n  fetchVerticalEmbedItemsFromDevContext?: (\n    type: VerticalApiType,\n    query?: string\n  ) => Promise<EmbeddableItem[]>;\n  fetchVerticalEmbedItemFromDevContext?: (\n    type: VerticalApiType,\n    embedId: string\n  ) => Promise<EmbeddableItem>;\n  renderCounts?: Map<string, number>;\n  pickMedia?: PickMediaFn;\n  resetRenderCounts?: () => void;\n  onRenderCountChange?: (listener: (renderCounts: Map<string, number>) => void) => () => void;\n  connectionState?: ConnectionState;\n  setConnectionState?: React.Dispatch<React.SetStateAction<ConnectionState>>;\n  logBi?: (params: { dataHook: string; value?: string | boolean | number }) => void;\n  decodedInstance?: Partial<DecodedInstance>;\n  handleFileUpload?: MediaUploadFn;\n  mockInlineAiResponseChunks?: DoPromptStream;\n  handleFileSelection?: (\n    updateEntity: UpdateEntityFileSelectFunc<any>,\n    options?: { multiple?: boolean; index?: number; isCover?: boolean }\n  ) => Promise<void>;\n};\n\nexport type DevService = () => DevContextProps;\n\nexport const useDevService = () => {\n  const service = React.useContext(DevContext);\n  const serviceRef = React.useRef<DevContextProps>(service);\n  serviceRef.current = service;\n  return React.useCallback(() => serviceRef.current, []);\n};\n\nexport type ConnectionState =\n  | { type: 'BROKEN'; delay: number; status: number; response?: any }\n  | { type: 'DELAYED'; delay: number }\n  | { type: 'NO_MODIFICATION' };\n\nexport const useTrackRender = (componentName: string) =>\n  React.useContext(DevContext)?.trackRender?.(componentName);\n\nexport const useDevGiphyRequestService = () => React.useContext(DevContext)?.giphyRequestService;\nexport const useDevAiRequestService = () => React.useContext(DevContext)?.aiRequestService;\nexport const useDevShapeService = () => React.useContext(DevContext)?.shapeService;\nexport const useDevConnectionState = () => {\n  const [defaultState] = React.useState({\n    type: 'NO_MODIFICATION' as const,\n  });\n  return (React.useContext(DevContext) as DevContextProps)?.connectionState ?? defaultState;\n};\n\nexport const useDevLogBi = () => {\n  return (React.useContext(DevContext) as DevContextProps)?.logBi ?? undefined;\n};\n\nexport const useDevPmNodeAttrs = () => React.useContext(DevContext)?.pmNodeAttrs ?? undefined;\n\nexport const useDevPickMedia = () => React.useContext(DevContext)?.pickMedia ?? undefined;\n\nexport const useDevVerticalEmbedItems = () =>\n  React.useContext(DevContext)?.fetchVerticalEmbedItemsFromDevContext ?? undefined;\n\nexport const useDevVerticalEmbedItem = () =>\n  React.useContext(DevContext)?.fetchVerticalEmbedItemFromDevContext ?? undefined;\n\nexport const useMockInlineAiResponseChunks = () =>\n  React.useContext(DevContext)?.mockInlineAiResponseChunks ?? undefined;\n","import type { ComponentType } from 'react';\nimport React from 'react';\n\nimport type {\n  ColorPaletteManager,\n  DebugMode,\n  GeneralContext,\n  Platform,\n  RicosPortal,\n  RicosServices,\n  RicosTheme,\n  TabFocusBehavior,\n  TFunction,\n} from './../ricos-types/index.js';\nimport type { InteractionType } from './../_shared/use-user-interaction.js';\n\ntype RicosContextType = GeneralContext & { theme: RicosTheme; colorManager?: ColorPaletteManager };\n\nexport const RicosContext = React.createContext<RicosContextType>({\n  locale: 'en',\n  localeContent: 'en',\n  experiments: {},\n  isMobile: false,\n  t: ((text: string) => text) as TFunction,\n  languageDir: 'ltr',\n  theme: {} as RicosTheme,\n  portal: null,\n  debugMode: [],\n  platform: 'macOs',\n  content: null as unknown as RicosServices['content'],\n  jsdomMode: false,\n  environment: 'liveSite',\n  tabIndex: 0,\n  lastInteraction: null,\n  tabFocusBehavior: 'edit',\n});\n\nexport const RicosContextProvider = ({\n  children,\n  isMobile,\n  locale,\n  localeContent,\n  experiments,\n  languageDir,\n  theme,\n  t,\n  portal,\n  debugMode = [] as DebugMode[],\n  jsdomMode = false,\n  platform = 'macOs' as Platform,\n  content = null as unknown as RicosServices['content'],\n  environment = 'liveSite',\n  tabIndex = 0,\n  lastInteraction = null,\n  tabFocusBehavior = 'edit',\n  colorManager,\n}: {\n  children: React.ReactNode;\n  isMobile: boolean;\n  locale: string;\n  localeContent: string;\n  experiments?: GeneralContext['experiments'];\n  languageDir: GeneralContext['languageDir'];\n  theme: RicosTheme;\n  t: TFunction;\n  portal?: RicosPortal;\n  debugMode?: DebugMode[];\n  jsdomMode?: boolean;\n  platform?: Platform;\n  content?: RicosServices['content'];\n  environment?: GeneralContext['environment'];\n  tabIndex?: number;\n  lastInteraction?: InteractionType;\n  tabFocusBehavior?: TabFocusBehavior;\n  colorManager?: ColorPaletteManager;\n}) => {\n  return (\n    <RicosContext.Provider\n      value={{\n        t,\n        locale,\n        localeContent,\n        isMobile,\n        experiments: experiments ?? {},\n        languageDir,\n        theme,\n        portal: portal ?? null,\n        debugMode,\n        jsdomMode,\n        platform,\n        content,\n        environment,\n        tabIndex,\n        lastInteraction,\n        tabFocusBehavior,\n        colorManager,\n      }}\n    >\n      {children}\n    </RicosContext.Provider>\n  );\n};\n\nexport function withRicosContext<T = any>(Component: ComponentType<T>) {\n  return (props: T) => {\n    return (\n      <RicosContext.Consumer>\n        {(value: GeneralContext) => <Component {...props} ricosContext={value} />}\n      </RicosContext.Consumer>\n    );\n  };\n}\n\nexport const RicosContextConsumer = ({ children }: $TSFixMe) => {\n  return (\n    <RicosContext.Consumer>{(value: GeneralContext) => children(value)}</RicosContext.Consumer>\n  );\n};\n","import type { FC, ReactChild } from 'react';\nimport React from 'react';\n\nimport type { RicosSchema } from './../ricos-orchestrator/ricos-schema.js';\n\nexport const SchemaContext = React.createContext<RicosSchema>(null as unknown as RicosSchema);\n\ntype SchemaContextProps = {\n  schema: RicosSchema;\n  children: ReactChild;\n};\n\nexport const SchemaContextProvider: FC<SchemaContextProps> = ({ schema, children }) => (\n  <SchemaContext.Provider value={schema}>{children}</SchemaContext.Provider>\n);\n\nexport const SchemaContextConsumer = ({ children }: $TSFixMe) => (\n  <SchemaContext.Consumer>{value => children(value)}</SchemaContext.Consumer>\n);\n","import type { FC, ReactChild } from 'react';\nimport React, { useMemo } from 'react';\n\nimport type { TextAlignment } from './../../ricos-types/index.js';\n\ntype RicosAlignmentContextProps = {\n  textAlignment?: TextAlignment;\n  children: ReactChild;\n};\n\ntype ContextType = {\n  textAlignment?: TextAlignment;\n};\n\nexport const RicosAlignmentContext = React.createContext<ContextType>(\n  null as unknown as ContextType\n);\n\nexport const RicosAlignmentContextProvider: FC<RicosAlignmentContextProps> = ({\n  textAlignment,\n  children,\n}) => {\n  const textAlignmentValue = useMemo(() => {\n    return { textAlignment };\n  }, [textAlignment]);\n\n  return (\n    <RicosAlignmentContext.Provider value={textAlignmentValue}>\n      {children}\n    </RicosAlignmentContext.Provider>\n  );\n};\n","import type { ComponentType, FC, PropsWithChildren, ReactChild } from 'react';\nimport React from 'react';\n\nimport type { NodeViewRenderers } from './../../ricos-types/index.js';\nimport type { Decorators } from './../../ricos-viewer-next/ContentViewer/rericos/decorators/nodeViewDecorators.js';\n\ntype ContentTraverserContextProps = {\n  nodeViewDecorators: Decorators<JSX.Element>;\n  renderers: NodeViewRenderers;\n  SpoilerViewerWrapper?: ComponentType<{ className: unknown; width?: number }>;\n  children: ReactChild;\n};\n\ntype ContextType = {\n  nodeViewDecorators: Decorators<JSX.Element>;\n  renderers: NodeViewRenderers;\n  SpoilerViewerWrapper?: ComponentType<\n    PropsWithChildren<{ className: unknown; width?: number; type?: string; componentData?: object }>\n  >;\n};\n\nexport const ContentTraverserContext = React.createContext<ContextType>(\n  null as unknown as ContextType\n);\n\nexport const ContentTraverserContextProvider: FC<ContentTraverserContextProps> = ({\n  nodeViewDecorators,\n  renderers,\n  SpoilerViewerWrapper,\n  children,\n}) => {\n  return (\n    <ContentTraverserContext.Provider\n      value={{ nodeViewDecorators, renderers, SpoilerViewerWrapper }}\n    >\n      {children}\n    </ContentTraverserContext.Provider>\n  );\n};\n","import type { FC, ReactChild } from 'react';\nimport React, { useMemo } from 'react';\n\ntype RicosDirectionHandledContextProps = {\n  directionHandled?: boolean;\n  children: ReactChild;\n};\n\ntype ContextType = {\n  directionHandled?: boolean;\n};\n\nexport const RicosDirectionHandledContext = React.createContext<ContextType>(\n  null as unknown as ContextType\n);\n\nexport const RicosDirectionHandledContextProvider: FC<RicosDirectionHandledContextProps> = ({\n  directionHandled,\n  children,\n}) => {\n  const directionHandledValue = useMemo(() => {\n    return { directionHandled };\n  }, [directionHandled]);\n  return (\n    <RicosDirectionHandledContext.Provider value={directionHandledValue}>\n      {children}\n    </RicosDirectionHandledContext.Provider>\n  );\n};\n","import { type Node } from './../../../ricos-schema/legacy/wix/rich_content/v1/index.js';\n\nexport interface NodeWithMetadata {\n  node: Node;\n  index: number;\n  depth: number;\n  parent?: NodeWithMetadata;\n  children: NodeWithMetadata[];\n}\n\nexport interface NodeTreeMap {\n  [nodeId: string]: NodeWithMetadata;\n}\n\nexport function buildNodeTree(\n  nodes: Node[],\n  depth = 0,\n  parent?: NodeWithMetadata\n): {\n  tree: NodeWithMetadata[];\n  map: NodeTreeMap;\n} {\n  const tree: NodeWithMetadata[] = [];\n  const map: NodeTreeMap = {};\n\n  nodes.forEach((node, index) => {\n    const nodeWithMetadata: NodeWithMetadata = {\n      node,\n      index,\n      depth,\n      parent,\n      children: [],\n    };\n\n    const nodeKey = node.id || `${depth}-${index}`;\n    map[nodeKey] = nodeWithMetadata;\n\n    if (node.nodes && node.nodes.length > 0) {\n      const { tree: childTree, map: childMap } = buildNodeTree(\n        node.nodes,\n        depth + 1,\n        nodeWithMetadata\n      );\n      nodeWithMetadata.children = childTree;\n\n      Object.assign(map, childMap);\n    }\n\n    tree.push(nodeWithMetadata);\n  });\n\n  return { tree, map };\n}\n","import type { FC, ReactChild } from 'react';\nimport React, { useMemo } from 'react';\n\nimport type { Node } from './../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport type { NodeTreeMap } from './../../ricos-viewer-next/ContentViewer/utils/node-tree-traversal.js';\nimport { buildNodeTree } from './../../ricos-viewer-next/ContentViewer/utils/node-tree-traversal.js';\n\ntype NodeTreeMapContextProps = {\n  nodes: Node[];\n  children: ReactChild;\n};\n\ntype ContextType = {\n  nodeTreeMap: NodeTreeMap;\n};\n\nexport const NodeTreeMapContext = React.createContext<ContextType>(null as unknown as ContextType);\n\nexport const NodeTreeMapContextProvider: FC<NodeTreeMapContextProps> = ({ nodes, children }) => {\n  const nodeTreeMap = useMemo(() => {\n    const { map } = buildNodeTree(nodes);\n    return map;\n  }, [nodes]);\n\n  return (\n    <NodeTreeMapContext.Provider value={{ nodeTreeMap }}>{children}</NodeTreeMapContext.Provider>\n  );\n};\n","import type { ComponentType, FC, PropsWithChildren } from 'react';\nimport React from 'react';\n\nimport type { Node } from './../../ricos-schema/legacy/wix/rich_content/v1/index.js';\n\ntype RicosNodeContextProps = {\n  parentNode: Node | null;\n  parentIndex: number;\n};\n\ntype ContextType = {\n  parentNode: Node | null;\n  parentIndex: number;\n};\n\nexport const RicosNodeContext = React.createContext<ContextType>(null as unknown as ContextType);\n\nexport const RicosNodeContextProvider: FC<PropsWithChildren<RicosNodeContextProps>> = ({\n  parentNode,\n  parentIndex,\n  children,\n}) => {\n  return (\n    <RicosNodeContext.Provider value={{ parentNode, parentIndex }}>\n      {children}\n    </RicosNodeContext.Provider>\n  );\n};\n\nexport function withRicosNodeContext<Props>(Component: ComponentType<Props>) {\n  return function (props: Props) {\n    return (\n      <RicosNodeContext.Consumer key={Math.random().toString().slice(2, 9)}>\n        {({ parentNode, parentIndex }) => (\n          <Component {...props} parentNode={parentNode} parentIndex={parentIndex} />\n        )}\n      </RicosNodeContext.Consumer>\n    );\n  };\n}\n","import type { FC, ReactChild } from 'react';\nimport React from 'react';\n\nimport type { SpoilerManager } from './../../ricos-viewer-next/ContentViewer/rericos/utils/SpoilerManager.js';\n\ntype SpoilerContextProps = {\n  spoilerManager: SpoilerManager;\n  children: ReactChild;\n};\n\ntype ContextType = {\n  spoilerManager: SpoilerManager;\n};\n\nexport const SpoilerContext = React.createContext<ContextType>(null as unknown as ContextType);\n\nexport const SpoilerContextProvider: FC<SpoilerContextProps> = ({ spoilerManager, children }) => {\n  return <SpoilerContext.Provider value={{ spoilerManager }}>{children}</SpoilerContext.Provider>;\n};\n","import type { FC, ReactChild } from 'react';\nimport React from 'react';\n\nimport type { ViewerContextualData } from './../../ricos-types/index.js';\n\ntype RicosViewerContextProps = {\n  contextualData: ViewerContextualData;\n  children: ReactChild;\n};\n\ntype ContextType = Omit<\n  ViewerContextualData,\n  't' | 'theme' | 'isMobile' | 'experiments' | 'locale' | 'languageDir' | 'textDirection'\n>;\n\nexport const RicosViewerContext = React.createContext<ContextType>(null as unknown as ContextType);\n\nexport const RicosViewerContextProvider: FC<RicosViewerContextProps> = ({\n  contextualData: {\n    anchorTarget,\n    relValue,\n    plugins,\n    config,\n    helpers,\n    disabled,\n    seoMode,\n    iframeSandboxDomain,\n    disableRightClick,\n    customAnchorScroll,\n    textAlignment,\n    onNodeClick,\n    jsdomMode,\n    baseUrl,\n    isPrint,\n  },\n  children,\n}) => {\n  return (\n    <RicosViewerContext.Provider\n      value={{\n        anchorTarget,\n        relValue,\n        plugins,\n        config,\n        helpers,\n        disabled,\n        seoMode,\n        iframeSandboxDomain,\n        disableRightClick,\n        customAnchorScroll,\n        textAlignment,\n        onNodeClick,\n        jsdomMode,\n        baseUrl,\n        isPrint,\n      }}\n    >\n      {children}\n    </RicosViewerContext.Provider>\n  );\n};\n","import type { FC, PropsWithChildren } from 'react';\nimport React from 'react';\n\ntype VisibleIndentation = {\n  indentation: number;\n  nodeId: string;\n} | null;\n\ntype VisibleIndentationContextProps = {\n  visibleIndentation: VisibleIndentation;\n};\n\ntype ContextType = {\n  visibleIndentation: VisibleIndentation;\n};\n\nexport const VisibleIndentationContext = React.createContext<ContextType>(\n  null as unknown as ContextType\n);\n\nexport const VisibleIndentationContextProvider: FC<\n  PropsWithChildren<VisibleIndentationContextProps>\n> = ({ visibleIndentation, children }) => {\n  return (\n    <VisibleIndentationContext.Provider value={{ visibleIndentation }}>\n      {children}\n    </VisibleIndentationContext.Provider>\n  );\n};\n","export { RicosAlignmentContext, RicosAlignmentContextProvider } from './AlignmentContext.js';\nexport {\n  ContentTraverserContext,\n  ContentTraverserContextProvider,\n} from './ContentTraverserContext.js';\nexport {\n  RicosDirectionHandledContext,\n  RicosDirectionHandledContextProvider,\n} from './DirectionHandledContext.js';\nexport { NodeTreeMapContext, NodeTreeMapContextProvider } from './NodeTreeMapContext.js';\nexport {\n  RicosNodeContext,\n  RicosNodeContextProvider,\n  withRicosNodeContext,\n} from './RicosNodeViewContext.js';\nexport { SpoilerContext, SpoilerContextProvider } from './SpoilerContext.js';\nexport { RicosViewerContext, RicosViewerContextProvider } from './ViewerContext.js';\nexport {\n  VisibleIndentationContext,\n  VisibleIndentationContextProvider,\n} from './VisibleIndentationContext.js';\n","import type { ComponentType, FC, ReactChild } from 'react';\nimport React from 'react';\n\nimport type { IZIndexService } from './../ricos-types/index.js';\n\ntype ZIndexContextProps = {\n  zIndexService: IZIndexService;\n  children: ReactChild;\n};\n\nexport const ZIndexContext = React.createContext<IZIndexService>(null as unknown as IZIndexService);\n\nexport const ZIndexContextProvider: FC<ZIndexContextProps> = ({ zIndexService, children }) => (\n  <ZIndexContext.Provider value={zIndexService}>{children}</ZIndexContext.Provider>\n);\n\nexport function withZIndexContext<T = any>(Component: ComponentType<T>) {\n  return (props: T) => {\n    return (\n      <ZIndexContext.Consumer>\n        {(value: IZIndexService) => <Component {...props} zIndexService={value} />}\n      </ZIndexContext.Consumer>\n    );\n  };\n}\n","export type { ConnectionState, DevContextProps, DevService } from './DevContext.js';\nexport {\n  DevContext,\n  useDevAiRequestService,\n  useDevConnectionState,\n  useDevGiphyRequestService,\n  useDevLogBi,\n  useDevPickMedia,\n  useDevPmNodeAttrs,\n  useDevService,\n  useDevShapeService,\n  useDevVerticalEmbedItem,\n  useDevVerticalEmbedItems,\n  useTrackRender,\n} from './DevContext.js';\nexport { EditorContext, EditorContextConsumer, EditorContextProvider } from './EditorContext.js';\nexport { EditorQueryContext, EditorQueryContextProvider } from './EditorQueryContext.js';\nexport { ModalServiceContext } from './ModalContext.js';\nexport { PluginExportsContextProvider, usePluginExportsContext } from './PluginExportsContext.js';\nexport { PluginsContext, PluginsContextProvider } from './PluginsContext.js';\nexport { PluginsEventsContext, PluginsEventsContextProvider } from './PluginsEventsContext.js';\nexport {\n  RicosContext,\n  RicosContextConsumer,\n  RicosContextProvider,\n  withRicosContext,\n} from './RicosContext.js';\nexport { SchemaContext, SchemaContextConsumer, SchemaContextProvider } from './SchemaContext.js';\nexport { ShortcutsContext, ShortcutsContextProvider } from './ShortcutsContext.js';\nexport type { ToolbarContextType } from './ToolbarContext.js';\nexport { ToolbarContextProvider } from './ToolbarContext.js';\nexport { UploadContext, UploadContextProvider } from './UploadContext.js';\nexport {\n  ContentTraverserContext,\n  ContentTraverserContextProvider,\n  RicosAlignmentContext,\n  RicosAlignmentContextProvider,\n  RicosDirectionHandledContext,\n  RicosDirectionHandledContextProvider,\n  RicosNodeContext,\n  RicosNodeContextProvider,\n  RicosViewerContext,\n  RicosViewerContextProvider,\n  SpoilerContext,\n  SpoilerContextProvider,\n  VisibleIndentationContext,\n  VisibleIndentationContextProvider,\n  withRicosNodeContext,\n} from './viewer/index.js';\nexport { withZIndexContext, ZIndexContext, ZIndexContextProvider } from './ZIndexContext.js';\nexport type { GeneralContext } from './../ricos-types/index.js';\n","// src/index.ts\nvar wixContext = {};\nexport {\n  wixContext\n};\n","// src/event-handlers-modules.ts\nfunction EventDefinition(type, isDomainEvent = false, transformations = (x) => x) {\n  return () => ({\n    __type: \"event-definition\",\n    type,\n    isDomainEvent,\n    transformations\n  });\n}\n\n// src/service-plugins.ts\nfunction ServicePluginDefinition(componentType, methods) {\n  return {\n    __type: \"service-plugin-definition\",\n    componentType,\n    methods\n  };\n}\nvar SERVICE_PLUGIN_ERROR_TYPE = \"wix_spi_error\";\n\n// src/common/sort.ts\nvar SORT_DIRECTIONS = {\n  ASC: \"ASC\",\n  DESC: \"DESC\"\n};\nvar SORT_CAPABILITIES = {\n  ...SORT_DIRECTIONS,\n  BOTH: \"BOTH\",\n  NONE: \"NONE\"\n};\nexport {\n  EventDefinition,\n  SERVICE_PLUGIN_ERROR_TYPE,\n  SORT_CAPABILITIES,\n  SORT_DIRECTIONS,\n  ServicePluginDefinition\n};\n","const parseMethod = (method) => {\n    switch (method) {\n        case 'get':\n        case 'GET':\n            return 'GET';\n        case 'post':\n        case 'POST':\n            return 'POST';\n        case 'put':\n        case 'PUT':\n            return 'PUT';\n        case 'delete':\n        case 'DELETE':\n            return 'DELETE';\n        case 'patch':\n        case 'PATCH':\n            return 'PATCH';\n        case 'head':\n        case 'HEAD':\n            return 'HEAD';\n        case 'options':\n        case 'OPTIONS':\n            return 'OPTIONS';\n        default:\n            throw new Error(`Unknown method: ${method}`);\n    }\n};\nexport const toHTTPModule = (factory) => (httpClient) => async (payload) => {\n    let requestOptions;\n    const HTTPFactory = (context) => {\n        requestOptions = factory(payload)(context);\n        if (requestOptions.url === undefined) {\n            throw new Error('Url was not successfully created for this request, please reach out to support channels for assistance.');\n        }\n        const { method, url, params } = requestOptions;\n        return {\n            ...requestOptions,\n            method: parseMethod(method),\n            url,\n            data: requestOptions.data,\n            params,\n        };\n    };\n    try {\n        const response = await httpClient.request(HTTPFactory);\n        if (requestOptions === undefined) {\n            throw new Error('Request options were not created for this request, please reach out to support channels for assistance.');\n        }\n        const transformations = Array.isArray(requestOptions.transformResponse)\n            ? requestOptions.transformResponse\n            : [requestOptions.transformResponse];\n        /**\n         * Based on Axios implementation:\n         * https://github.com/axios/axios/blob/3f53eb6960f05a1f88409c4b731a40de595cb825/lib/core/transformData.js#L22\n         */\n        let data = response.data;\n        transformations.forEach((transform) => {\n            if (transform) {\n                data = transform(response.data, response.headers);\n            }\n        });\n        return data;\n    }\n    catch (e) {\n        if (typeof e === 'object' &&\n            e !== null &&\n            'response' in e &&\n            typeof e.response === 'object' &&\n            e.response !== null &&\n            'data' in e.response) {\n            throw e.response.data;\n        }\n        throw e;\n    }\n};\n/*\n * Because of issues with tree-shaking, we cant really put static parameter on module.\n * We still have check for __isAmbassador for backward compatibility\n */\nexport const isAmbassadorModule = (module) => {\n    if (module.__isAmbassador) {\n        return true;\n    }\n    const fn = module();\n    return Boolean(fn.__isAmbassador);\n};\n","export const PUBLIC_METADATA_KEY = '__metadata';\nexport const DEFAULT_API_URL = 'www.wixapis.com';\nexport const DEFAULT_EDGE_API_URL = 'edge.wixapis.com';\nexport const FORCE_WRITE_API_URLS = ['/ecom/v1/carts/current'];\n","export class FetchErrorResponse extends Error {\n    message;\n    response;\n    constructor(message, response) {\n        super(message);\n        this.message = message;\n        this.response = response;\n    }\n    async details() {\n        const dataError = await this.response.json();\n        return errorBuilder(this.response.status, dataError?.message, dataError?.details, {\n            requestId: this.response.headers.get('X-Wix-Request-Id'),\n            details: dataError,\n        });\n    }\n}\nconst errorBuilder = (code, description, details, data) => {\n    return {\n        details: {\n            ...(!details?.validationError && {\n                applicationError: {\n                    description,\n                    code,\n                    data,\n                },\n            }),\n            ...details,\n        },\n        message: description,\n        requestId: data?.requestId,\n    };\n};\n","// we follow a simplified version of the axios convention\n// https://github.com/axios/axios/blob/649d739288c8e2c55829ac60e2345a0f3439c730/lib/defaults/index.js#L65\nexport const getDefaultContentHeader = (options) => {\n    if (options?.method &&\n        ['post', 'put', 'patch'].includes(options.method.toLocaleLowerCase()) &&\n        options.body) {\n        return { 'Content-Type': 'application/json' };\n    }\n    return {};\n};\nexport const isObject = (val) => val && typeof val === 'object' && !Array.isArray(val);\nexport function parsePublicKeyIfEncoded(publicKey) {\n    if (publicKey.includes('\\n') || publicKey.includes('\\r')) {\n        // publicKey is multi-line string, can be used as is\n        return publicKey.trim();\n    }\n    else {\n        // publicKey is base64 encoded\n        return typeof atob !== 'undefined'\n            ? atob(publicKey)\n            : Buffer.from(publicKey, 'base64').toString('utf-8');\n    }\n}\n","export const isHostModule = (val) => val.__type === 'host';\nexport function buildHostModule(val, host) {\n    return val.create(host);\n}\n","export const WixBIHeaderName = 'x-wix-bi-gateway';\nexport function biHeaderGenerator(apiMetadata, publicMetadata, environment) {\n    return {\n        [WixBIHeaderName]: objectToKeyValue({\n            environment: `js-sdk${environment ? `-${environment}` : ``}`,\n            'package-name': apiMetadata.packageName ?? publicMetadata?.PACKAGE_NAME,\n            'method-fqn': apiMetadata.methodFqn,\n            entity: apiMetadata.entityFqdn,\n        }),\n    };\n}\nfunction objectToKeyValue(input) {\n    return Object.entries(input)\n        .filter(([_, value]) => Boolean(value))\n        .map(([key, value]) => `${key}=${value}`)\n        .join(',');\n}\n","import { wixContext } from '@wix/sdk-context';\nexport function resolveContext() {\n    const oldContext = typeof $wixContext !== 'undefined' && $wixContext.initWixModules\n        ? $wixContext.initWixModules\n        : typeof globalThis.__wix_context__ !== 'undefined' &&\n            globalThis.__wix_context__.initWixModules\n            ? globalThis.__wix_context__.initWixModules\n            : undefined;\n    if (oldContext) {\n        return {\n            // @ts-expect-error\n            initWixModules(modules, elevated) {\n                return runWithoutContext(() => oldContext(modules, elevated));\n            },\n            fetchWithAuth() {\n                throw new Error('fetchWithAuth is not available in this context');\n            },\n            graphql() {\n                throw new Error('graphql is not available in this context');\n            },\n        };\n    }\n    const contextualClient = typeof $wixContext !== 'undefined'\n        ? $wixContext.client\n        : typeof wixContext.client !== 'undefined'\n            ? wixContext.client\n            : typeof globalThis.__wix_context__ !== 'undefined'\n                ? globalThis.__wix_context__.client\n                : undefined;\n    const elevatedClient = typeof $wixContext !== 'undefined'\n        ? $wixContext.elevatedClient\n        : typeof wixContext.elevatedClient !== 'undefined'\n            ? wixContext.elevatedClient\n            : typeof globalThis.__wix_context__ !== 'undefined'\n                ? globalThis.__wix_context__.elevatedClient\n                : undefined;\n    if (!contextualClient && !elevatedClient) {\n        return;\n    }\n    return {\n        initWixModules(wixModules, elevated) {\n            if (elevated) {\n                if (!elevatedClient) {\n                    throw new Error('An elevated client is required to use elevated modules. Make sure to initialize the Wix context with an elevated client before using elevated SDK modules');\n                }\n                return runWithoutContext(() => elevatedClient.use(wixModules));\n            }\n            if (!contextualClient) {\n                throw new Error('Wix context is not available. Make sure to initialize the Wix context before using SDK modules');\n            }\n            return runWithoutContext(() => contextualClient.use(wixModules));\n        },\n        fetchWithAuth: (urlOrRequest, requestInit) => {\n            if (!contextualClient) {\n                throw new Error('Wix context is not available. Make sure to initialize the Wix context before using SDK modules');\n            }\n            return contextualClient.fetchWithAuth(urlOrRequest, requestInit);\n        },\n        getAuth() {\n            if (!contextualClient) {\n                throw new Error('Wix context is not available. Make sure to initialize the Wix context before using SDK modules');\n            }\n            return contextualClient.auth;\n        },\n        async graphql(query, variables, opts) {\n            if (!contextualClient) {\n                throw new Error('Wix context is not available. Make sure to initialize the Wix context before using SDK modules');\n            }\n            return contextualClient.graphql(query, variables, opts);\n        },\n    };\n}\nexport function contextualizeHostModule(hostModule, prop) {\n    return (...args) => {\n        const context = resolveContext();\n        if (!context) {\n            throw new Error('Wix context is not available. Make sure to initialize the Wix context before using SDK modules');\n        }\n        return context.initWixModules(hostModule)[prop].apply(undefined, args);\n    };\n}\nexport function getContextualAuth() {\n    const context = resolveContext();\n    if (!context) {\n        throw new Error('Wix context is not available. Make sure to initialize the Wix context before using SDK modules');\n    }\n    return context.getAuth();\n}\nexport function contextualizeRESTModule(restModule, expectedArgsLength) {\n    return ((...args) => {\n        const context = resolveContext();\n        if (!context) {\n            throw new Error('Wix context is not available. Make sure to initialize the Wix context before using SDK modules');\n        }\n        return context\n            .initWixModules(restModule, args[expectedArgsLength]?.suppressAuth ? true : false)\n            .apply(undefined, args);\n    });\n}\nexport function contextualizeEventDefinitionModule(eventDefinition) {\n    return ((...args) => {\n        const context = resolveContext();\n        if (!context) {\n            throw new Error('Wix context is not available. Make sure to initialize the Wix context before using SDK modules');\n        }\n        return context.initWixModules(eventDefinition).apply(undefined, args);\n    });\n}\nexport function contextualizeSerivcePluginModule(servicePlugin) {\n    return ((...args) => {\n        const context = resolveContext();\n        if (!context) {\n            throw new Error('Wix context is not available. Make sure to initialize the Wix context before using SDK modules');\n        }\n        return context.initWixModules(servicePlugin).apply(undefined, args);\n    });\n}\nexport * from './context-v2.js';\nexport function runWithoutContext(fn) {\n    const globalContext = globalThis.__wix_context__;\n    const moduleContext = {\n        client: wixContext.client,\n        elevatedClient: wixContext.elevatedClient,\n    };\n    let closureContext;\n    globalThis.__wix_context__ = undefined;\n    wixContext.client = undefined;\n    wixContext.elevatedClient = undefined;\n    if (typeof $wixContext !== 'undefined') {\n        closureContext = {\n            client: $wixContext?.client,\n            elevatedClient: $wixContext?.elevatedClient,\n        };\n        delete $wixContext.client;\n        delete $wixContext.elevatedClient;\n    }\n    try {\n        return fn();\n    }\n    finally {\n        globalThis.__wix_context__ = globalContext;\n        wixContext.client = moduleContext.client;\n        wixContext.elevatedClient = moduleContext.elevatedClient;\n        if (typeof $wixContext !== 'undefined') {\n            $wixContext.client = closureContext.client;\n            $wixContext.elevatedClient = closureContext.elevatedClient;\n        }\n    }\n}\n","import { WIX_PROTOCOL } from './constants.js';\nexport function alignIfLegacy(url, type) {\n    const { protocol } = new URL(url);\n    return protocol === `${type}:` ? `${WIX_PROTOCOL}${url}` : url;\n}\nexport function removeUndefinedKeys(obj) {\n    return Object.fromEntries(Object.entries(obj).filter(([, value]) => value !== undefined));\n}\nexport function constantCase(input) {\n    return split(input)\n        .map((part) => part.toLocaleUpperCase())\n        .join('_');\n}\nconst SPLIT_LOWER_UPPER_RE = /([\\p{Ll}\\d])(\\p{Lu})/gu;\nconst SPLIT_UPPER_UPPER_RE = /(\\p{Lu})([\\p{Lu}][\\p{Ll}])/gu;\nconst SPLIT_REPLACE_VALUE = '$1\\0$2';\nconst DEFAULT_STRIP_REGEXP = /[^\\p{L}\\d]+/giu;\nexport function split(value) {\n    let result = value.trim();\n    result = result\n        .replace(SPLIT_LOWER_UPPER_RE, SPLIT_REPLACE_VALUE)\n        .replace(SPLIT_UPPER_UPPER_RE, SPLIT_REPLACE_VALUE);\n    result = result.replace(DEFAULT_STRIP_REGEXP, '\\0');\n    let start = 0;\n    let end = result.length;\n    // Trim the delimiter from around the output string.\n    while (result.charAt(start) === '\\0') {\n        start++;\n    }\n    if (start === end) {\n        return [];\n    }\n    while (result.charAt(end - 1) === '\\0') {\n        end--;\n    }\n    return result.slice(start, end).split(/\\0/g);\n}\n","import { constantCase } from './utils.js';\nconst isValidationError = (httpClientError) => 'validationError' in (httpClientError.response?.data?.details ?? {});\nconst isApplicationError = (httpClientError) => 'applicationError' in\n    (httpClientError.response?.data?.details ?? {});\nconst isClientError = (httpClientError) => (httpClientError.response?.status ?? -1) >= 400 &&\n    (httpClientError.response?.status ?? -1) < 500;\nexport function transformError(httpClientError, pathsToArguments = {\n    explicitPathsToArguments: {},\n    spreadPathsToArguments: {},\n    singleArgumentUnchanged: false,\n}, argumentNames = []) {\n    if (typeof httpClientError !== 'object' || httpClientError === null) {\n        throw httpClientError;\n    }\n    if (isValidationError(httpClientError)) {\n        return buildValidationError(httpClientError, pathsToArguments, argumentNames);\n    }\n    if (isApplicationError(httpClientError)) {\n        return buildApplicationError(httpClientError);\n    }\n    if (isClientError(httpClientError)) {\n        const status = httpClientError.response?.status;\n        const statusText = httpClientError.response?.statusText ?? 'UNKNOWN';\n        const message = httpClientError.response?.data?.message ?? statusText;\n        const details = {\n            applicationError: {\n                description: statusText,\n                code: constantCase(statusText),\n                data: {},\n            },\n            requestId: httpClientError.requestId,\n        };\n        return wrapError(httpClientError, {\n            message: JSON.stringify({\n                message,\n                details,\n            }, null, 2),\n            extraProperties: {\n                details,\n                status,\n            },\n        });\n    }\n    return buildSystemError(httpClientError);\n}\nconst buildValidationError = (httpClientError, pathsToArguments, argumentNames) => {\n    const validationErrorResponse = httpClientError.response\n        ?.data;\n    const requestId = httpClientError.requestId;\n    const { fieldViolations } = validationErrorResponse.details.validationError;\n    const transformedFieldViolations = violationsWithRenamedFields(pathsToArguments, fieldViolations, argumentNames)?.sort((a, b) => (a.field < b.field ? -1 : 1));\n    const message = `INVALID_ARGUMENT: ${transformedFieldViolations\n        ?.map(({ field, description }) => `\"${field}\" ${description}`)\n        ?.join(', ')}`;\n    const details = {\n        validationError: { fieldViolations: transformedFieldViolations },\n        requestId,\n    };\n    return wrapError(httpClientError, {\n        message: JSON.stringify({ message, details }, null, 2),\n        extraProperties: {\n            details,\n            status: httpClientError.response?.status,\n            requestId,\n        },\n    });\n};\nconst wrapError = (baseError, { message, extraProperties, }) => {\n    return Object.assign(baseError, {\n        ...extraProperties,\n        message,\n    });\n};\nconst buildApplicationError = (httpClientError) => {\n    const status = httpClientError.response?.status;\n    const statusText = httpClientError.response?.statusText ?? 'UNKNOWN';\n    const message = httpClientError.response?.data?.message ?? statusText;\n    const description = httpClientError.response?.data?.details?.applicationError?.description ??\n        statusText;\n    const code = httpClientError.response?.data?.details?.applicationError?.code ??\n        constantCase(statusText);\n    const data = httpClientError.response?.data?.details?.applicationError?.data ?? {};\n    const combinedMessage = message === description ? message : `${message}: ${description}`;\n    const details = {\n        applicationError: {\n            description,\n            code,\n            data,\n        },\n        requestId: httpClientError.requestId,\n    };\n    return wrapError(httpClientError, {\n        message: JSON.stringify({ message: combinedMessage, details }, null, 2),\n        extraProperties: {\n            details,\n            status,\n            requestId: httpClientError.requestId,\n        },\n    });\n};\nconst buildSystemError = (httpClientError) => {\n    const message = httpClientError.requestId\n        ? `System error occurred, request-id: ${httpClientError.requestId}`\n        : `System error occurred: ${JSON.stringify(httpClientError)}`;\n    return wrapError(httpClientError, {\n        message,\n        extraProperties: {\n            requestId: httpClientError.requestId,\n            status: httpClientError.response?.status,\n            code: constantCase(httpClientError.response?.statusText ?? 'UNKNOWN'),\n            ...(!httpClientError.response && {\n                runtimeError: httpClientError,\n            }),\n        },\n    });\n};\nconst violationsWithRenamedFields = ({ spreadPathsToArguments, explicitPathsToArguments, singleArgumentUnchanged, }, fieldViolations, argumentNames) => {\n    const allPathsToArguments = {\n        ...spreadPathsToArguments,\n        ...explicitPathsToArguments,\n    };\n    const allPathsToArgumentsKeys = Object.keys(allPathsToArguments);\n    return fieldViolations\n        ?.filter((fieldViolation) => {\n        // In some cases, the violations error will include both some.nested and some.nested.path,\n        // so we'll pick the more specific one if it's covered by the paths in the transformation.\n        const containedInAMoreSpecificViolationField = fieldViolations.some((anotherViolation) => anotherViolation.field.length > fieldViolation.field.length &&\n            anotherViolation.field.startsWith(fieldViolation.field) &&\n            allPathsToArgumentsKeys.includes(anotherViolation.field));\n        return !containedInAMoreSpecificViolationField;\n    })\n        .map((fieldViolation) => {\n        // This means we've got some.nested.field in the violation,\n        // matched against { some: { nested: { field: $[0].a.b.c } } } in the transformation.\n        // some.nested.field is replaced entirely with $[0].a.b.c, with $[0] replaced with the name of argument 0\n        const exactMatchArgumentExpression = explicitPathsToArguments[fieldViolation.field];\n        if (exactMatchArgumentExpression) {\n            return {\n                ...fieldViolation,\n                field: withRenamedArgument(exactMatchArgumentExpression, argumentNames),\n            };\n        }\n        const longestPartialPathMatch = allPathsToArgumentsKeys\n            ?.sort((a, b) => b.length - a.length)\n            ?.find((path) => fieldViolation.field.startsWith(path));\n        if (longestPartialPathMatch) {\n            // This means we've got some.nested.field in the violation,\n            // matched against { some: { nested: { *: $[0].a.b.c } } } in the transformation.\n            // Only the prefix some.nested is replaced with $[0].a.b.c, with $[0] replaced with the name of argument 0\n            // This can also happen in the case where the #wrap function is used.\n            const partialMatchArgumentExpression = allPathsToArguments[longestPartialPathMatch];\n            if (partialMatchArgumentExpression) {\n                return {\n                    ...fieldViolation,\n                    field: fieldViolation.field.replace(longestPartialPathMatch, withRenamedArgument(partialMatchArgumentExpression, argumentNames)),\n                };\n            }\n        }\n        if (singleArgumentUnchanged) {\n            return {\n                ...fieldViolation,\n                field: `${argumentNames[0]}.${fieldViolation.field}`,\n            };\n        }\n        return fieldViolation;\n    });\n};\nconst withRenamedArgument = (fieldValue, argumentNames) => {\n    const argIndex = getArgumentIndex(fieldValue);\n    if (argIndex !== null && typeof argIndex !== 'undefined') {\n        return fieldValue.replace(`$[${argIndex}]`, argumentNames[argIndex]);\n    }\n    return fieldValue;\n};\nconst getArgumentIndex = (s) => {\n    const match = s.match(/\\$\\[(?<argIndex>\\d+)\\]/);\n    return match && match.groups && Number(match.groups.argIndex);\n};\n","import { biHeaderGenerator } from './bi/biHeaderGenerator.js';\nimport { DEFAULT_API_URL, DEFAULT_EDGE_API_URL } from './common.js';\nimport { runWithoutContext } from '@wix/sdk-runtime/context';\nimport { transformError } from '@wix/sdk-runtime/transform-error';\nexport function buildRESTDescriptor(origFunc, publicMetadata, boundFetch, errorHandler, wixAPIFetch, getActiveToken, getAuthHeaders, options, hostName, useCDN) {\n    return runWithoutContext(() => origFunc({\n        request: async (factory) => {\n            const requestOptions = factory({\n                host: options?.HTTPHost || DEFAULT_API_URL,\n            });\n            let request = requestOptions;\n            if (request.method === 'GET' &&\n                request.fallback?.length &&\n                (request.params?.toString().length ?? 0) > 4000) {\n                request = requestOptions.fallback[0];\n            }\n            const domain = options?.HTTPHost ?? DEFAULT_API_URL;\n            let url = `https://${useCDN ? DEFAULT_EDGE_API_URL : domain}${request.url}`;\n            if (request.params && request.params.toString()) {\n                url += `?${request.params.toString()}`;\n            }\n            try {\n                const biHeader = biHeaderGenerator(requestOptions, publicMetadata, hostName);\n                const requestOptionsInit = {\n                    method: request.method,\n                    ...(request.data && {\n                        body: JSON.stringify(request.data),\n                    }),\n                    headers: {\n                        ...biHeader,\n                    },\n                };\n                const res = await boundFetch(url, requestOptionsInit);\n                if (res.status !== 200) {\n                    let dataError = null;\n                    try {\n                        dataError = await res.json();\n                    }\n                    catch (e) {\n                        //\n                    }\n                    const error = errorBuilder(res.status, dataError?.message, dataError?.details, {\n                        requestId: res.headers.get('X-Wix-Request-Id'),\n                        details: dataError,\n                    });\n                    const transformedError = transformError(error);\n                    errorHandler?.handleError(transformedError, {\n                        requestOptions: {\n                            url: request.url,\n                            method: request.method,\n                            entityFqdn: requestOptions.entityFqdn,\n                            methodFqn: requestOptions.methodFqn,\n                        },\n                    });\n                    throw error;\n                }\n                const rawData = await res.json();\n                const data = \n                // we only transform the response if the optInTransformResponse flag is set\n                // this is for backwards compatibility as some users might rely on not transforming the response\n                // in older modules. In that case the modules would not have the optInTransformResponse flag set\n                request.migrationOptions?.optInTransformResponse &&\n                    request.transformResponse\n                    ? Array.isArray(request.transformResponse)\n                        ? request.transformResponse[0](rawData)\n                        : request.transformResponse(rawData)\n                    : rawData;\n                return {\n                    data,\n                    headers: res.headers,\n                    status: res.status,\n                    statusText: res.statusText,\n                };\n            }\n            catch (e) {\n                if (e.message?.includes('fetch is not defined')) {\n                    console.error('Node.js v18+ is required');\n                }\n                throw e;\n            }\n        },\n        fetchWithAuth: boundFetch,\n        wixAPIFetch,\n        getActiveToken,\n        getAuthHeaders,\n    }));\n}\nclass SDKError extends Error {\n    response;\n    requestId;\n    constructor(params) {\n        super();\n        this.response = params.response;\n        this.requestId = params.requestId;\n    }\n}\nconst errorBuilder = (code, description, details, data) => {\n    return new SDKError({\n        response: {\n            data: {\n                details: {\n                    ...(!details?.validationError && {\n                        applicationError: {\n                            description,\n                            code,\n                            data,\n                        },\n                    }),\n                    ...details,\n                },\n                message: description,\n            },\n            status: code,\n        },\n        requestId: data?.requestId,\n    });\n};\n","import { RESTResponseToSDKResponseRenameMap } from '@wix/sdk-runtime/rest-modules';\nimport { unflatten } from './flat-utils.js';\nexport class ModifiedFieldsManipulator {\n    BRACKET_PATTERN = /\\[(\\d+)\\]/g;\n    NUMERIC_PATTERN = /^\\d+$/;\n    ESCAPED_DOT_PATTERN = /\\\\\\./g;\n    ESCAPED_LEFT_BRACKET_PATTERN = /\\\\\\[/g;\n    ESCAPED_RIGHT_BRACKET_PATTERN = /\\\\\\]/g;\n    SPLIT_PATTERN = /\\.|\\[(\\d+)\\]/g;\n    DOT_BEFORE_BRACKET_PATTERN = /\\.\\[/g;\n    ESCAPED_DOT_PLACEHOLDER = '__DOT__';\n    ESCAPED_RIGHT_BRACKET_PLACEHOLDER = '__RB__';\n    ESCAPED_LEFT_BRACKET_PLACEHOLDER = '__LB__';\n    modifiedFields;\n    cleanedModifiedFields;\n    constructor(modifiedFields) {\n        this.modifiedFields = modifiedFields;\n    }\n    replaceEscapedCharacters(key) {\n        return key\n            .replace(this.ESCAPED_DOT_PATTERN, this.ESCAPED_DOT_PLACEHOLDER)\n            .replace(this.ESCAPED_LEFT_BRACKET_PATTERN, this.ESCAPED_LEFT_BRACKET_PLACEHOLDER)\n            .replace(this.ESCAPED_RIGHT_BRACKET_PATTERN, this.ESCAPED_RIGHT_BRACKET_PLACEHOLDER);\n    }\n    restoreEscapedCharacters(key) {\n        return key\n            .replace(this.ESCAPED_DOT_PLACEHOLDER, '\\\\.')\n            .replace(this.ESCAPED_RIGHT_BRACKET_PLACEHOLDER, '\\\\]')\n            .replace(this.ESCAPED_LEFT_BRACKET_PLACEHOLDER, '\\\\[');\n    }\n    unflatten() {\n        this.cleanedModifiedFields = Object.fromEntries(Object.entries(this.modifiedFields).map(([key, value]) => [\n            this.replaceEscapedCharacters(this.bracketToDotNotation(key)),\n            value,\n        ]));\n        return unflatten(this.cleanedModifiedFields);\n    }\n    flatten(transformedModifiedFields) {\n        let result = {};\n        for (const originalKey of Object.keys(this.cleanedModifiedFields)) {\n            const pathParts = this.splitPath(originalKey);\n            const value = this.navigatePath(transformedModifiedFields, pathParts);\n            result = { ...result, ...value };\n        }\n        return Object.fromEntries(Object.entries(result).map(([key, value]) => [\n            this.restoreEscapedCharacters(key),\n            value,\n        ]));\n    }\n    splitPath(path) {\n        const parts = [];\n        let lastIndex = 0;\n        const matches = Array.from(path.matchAll(this.SPLIT_PATTERN));\n        for (const match of matches) {\n            if (match.index > lastIndex) {\n                parts.push(path.substring(lastIndex, match.index));\n            }\n            if (match[1]) {\n                parts.push(match[1]);\n            }\n            lastIndex = match.index + match[0].length;\n        }\n        if (lastIndex < path.length) {\n            parts.push(path.substring(lastIndex));\n        }\n        return parts;\n    }\n    navigatePath(obj, pathParts) {\n        let current = obj;\n        const transformedPath = [];\n        const handleArray = (part) => {\n            if (!Array.isArray(current)) {\n                throw new Error(`Expected array at path ${this.buildPathString(transformedPath)}, but got ${typeof current}`);\n            }\n            transformedPath.push(`[${part}]`);\n            current = current[parseInt(part, 10)];\n        };\n        const handleTransformedKeyName = (part, currentObj) => {\n            const transformedKey = part in RESTResponseToSDKResponseRenameMap\n                ? RESTResponseToSDKResponseRenameMap[part]\n                : undefined;\n            if (transformedKey && transformedKey in currentObj) {\n                transformedPath.push(transformedKey);\n                current = currentObj[transformedKey];\n                return;\n            }\n            const camelCaseKey = camelCase(part);\n            if (camelCaseKey && camelCaseKey in currentObj) {\n                transformedPath.push(camelCaseKey);\n                current = currentObj[camelCaseKey];\n                return;\n            }\n            throw new Error(`Cannot find key '${part}' or its transformations at path ${this.buildPathString(transformedPath)}`);\n        };\n        const handleObject = (part, currentObj) => {\n            transformedPath.push(part);\n            current = currentObj[part];\n            return;\n        };\n        for (const part of pathParts) {\n            if (this.NUMERIC_PATTERN.test(part)) {\n                handleArray(part);\n                continue;\n            }\n            if (current === null || typeof current !== 'object') {\n                throw new Error(`Cannot access property '${part}' on ${typeof current} at path ${this.buildPathString(transformedPath)}`);\n            }\n            const currentObj = current;\n            if (part in current) {\n                handleObject(part, currentObj);\n                continue;\n            }\n            handleTransformedKeyName(part, currentObj);\n        }\n        return { [this.buildPathString(transformedPath)]: current };\n    }\n    buildPathString(pathParts) {\n        return pathParts.join('.').replace(this.DOT_BEFORE_BRACKET_PATTERN, '[');\n    }\n    bracketToDotNotation(key) {\n        return key.replace(this.BRACKET_PATTERN, (match, number, offset) => {\n            if (offset > 0 && key[offset - 1] === '\\\\') {\n                return match;\n            }\n            return '.' + number;\n        });\n    }\n}\n/**\n * Transforms an envelope while preserving the structure of modifiedFields.\n *\n * Modified fields come as flattened objects, while transformations are applied to the nested object (e.g. \"a.b.c\" -> { a: { b: { c: 'value' } } }).\n * This function handles the transformation of envelopes that contain flattened modifiedFields.\n * It unflattens the modifiedFields, applies the transformation function, and then flattens\n * the modifiedFields back to their original format while preserving the transformation.\n * @param envelope - The envelope object containing flattened modifiedFields\n * @param transformFromRESTFn - Function to transform the envelope from REST format to SDK format\n * @returns The transformed envelope with flattened modifiedFields, or null if transformation fails\n */\nexport function attemptTransformationWithModifiedFields(envelope, transformFromRESTFn) {\n    const modifiedFields = envelope?.modifiedFields;\n    if (!modifiedFields) {\n        return null;\n    }\n    const unflattenedResult = attemptUnflatten(modifiedFields);\n    if (!unflattenedResult) {\n        return null;\n    }\n    const { unflattenedModifiedFields, modifiedFieldsManipulator } = unflattenedResult;\n    envelope = {\n        ...envelope,\n        modifiedFields: unflattenedModifiedFields,\n    };\n    const transformedEnvelope = transformFromRESTFn(envelope);\n    const transformedModifiedFields = transformedEnvelope\n        ?.modifiedFields;\n    if (!transformedModifiedFields) {\n        return null;\n    }\n    const flattened = attemptFlatten(transformedModifiedFields, modifiedFieldsManipulator);\n    if (flattened !== null) {\n        transformedEnvelope.modifiedFields = flattened;\n        return transformedEnvelope;\n    }\n    return null;\n}\nfunction attemptUnflatten(modifiedFields) {\n    if (typeof modifiedFields === 'object' &&\n        modifiedFields !== null &&\n        !Array.isArray(modifiedFields)) {\n        try {\n            const modifiedFieldsManipulator = new ModifiedFieldsManipulator(modifiedFields);\n            const unflattened = modifiedFieldsManipulator.unflatten();\n            return {\n                unflattenedModifiedFields: unflattened,\n                modifiedFieldsManipulator,\n            };\n        }\n        catch (error) {\n            return null;\n        }\n    }\n    return null;\n}\nfunction attemptFlatten(transformedModifiedFields, modifiedFieldsManipulator) {\n    if (typeof transformedModifiedFields === 'object' &&\n        transformedModifiedFields !== null &&\n        !Array.isArray(transformedModifiedFields)) {\n        try {\n            const flattened = modifiedFieldsManipulator.flatten(transformedModifiedFields);\n            return flattened;\n        }\n        catch (error) {\n            return null;\n        }\n    }\n    return null;\n}\n// Simple camelCase implementation to avoid lodash (which uses `new Function()` internally\n// and breaks Cloudflare Workers/Edge runtimes)\nfunction camelCase(str) {\n    return str\n        .replace(/[-_\\s]+(.)?/g, (_, c) => (c ? c.toUpperCase() : ''))\n        .replace(/^./, (c) => c.toLowerCase());\n}\n","// Inlined from https://github.com/ai/nanoevents/blob/main/index.js\n/**\n * Create event emitter.\n *\n * ```js\n * import { createNanoEvents } from 'nanoevents'\n *\n * class Ticker {\n * constructor() {\n * this.emitter = createNanoEvents()\n * }\n * on(...args) {\n * return this.emitter.on(...args)\n * }\n * tick() {\n * this.emitter.emit('tick')\n * }\n * }\n * ```\n * @returns Event emitter.\n */\nexport function createNanoEvents() {\n    return {\n        emit(event, ...args) {\n            for (let i = 0, callbacks = this.events[event] || [], length = callbacks.length; i < length; i++) {\n                callbacks[i](...args);\n            }\n        },\n        events: {},\n        on(event, cb) {\n            (this.events[event] ||= []).push(cb);\n            return () => {\n                this.events[event] = this.events[event]?.filter((i) => cb !== i);\n            };\n        },\n    };\n}\n","import { EventDefinition, } from '@wix/sdk-types';\nimport { attemptTransformationWithModifiedFields } from './modified-fields-manipulator.js';\nimport { createNanoEvents } from './nanoevents.js';\nexport const isEventHandlerModule = (val) => val.__type === 'event-definition';\nexport function buildEventDefinition(eventDefinition, registerHandler) {\n    return (handler) => {\n        registerHandler(eventDefinition, handler);\n    };\n}\nfunction runHandler(eventDefinition, handler, payload, baseEventMetadata) {\n    let envelope;\n    if (eventDefinition.isDomainEvent) {\n        const domainEventPayload = payload;\n        const { deletedEvent, actionEvent, createdEvent, updatedEvent, ...domainEventMetadata } = domainEventPayload;\n        const metadata = {\n            ...baseEventMetadata,\n            ...domainEventMetadata,\n        };\n        if (deletedEvent) {\n            if (deletedEvent?.deletedEntity) {\n                envelope = {\n                    entity: deletedEvent?.deletedEntity,\n                    metadata,\n                };\n            }\n            else {\n                envelope = { metadata };\n            }\n        }\n        else if (actionEvent) {\n            envelope = {\n                data: actionEvent.body,\n                metadata,\n            };\n        }\n        else if (updatedEvent) {\n            envelope = {\n                entity: updatedEvent.currentEntity,\n                metadata,\n                ...(updatedEvent.modifiedFields\n                    ? { modifiedFields: updatedEvent.modifiedFields }\n                    : {}),\n            };\n        }\n        else {\n            // createdEvent\n            envelope = {\n                entity: createdEvent?.entity,\n                metadata,\n            };\n        }\n    }\n    else {\n        envelope = {\n            data: payload,\n            metadata: baseEventMetadata,\n        };\n    }\n    const transformFromRESTFn = eventDefinition.transformations ?? ((x) => x);\n    let originalEnvelope = envelope;\n    const envelopeAny = envelope;\n    if (envelopeAny.modifiedFields) {\n        const modifiedFieldsValue = envelopeAny.modifiedFields;\n        if (typeof modifiedFieldsValue === 'object' &&\n            modifiedFieldsValue !== null &&\n            !Array.isArray(modifiedFieldsValue)) {\n            originalEnvelope = structuredClone(envelope);\n            const transformedEnvelope = attemptTransformationWithModifiedFields(envelopeAny, transformFromRESTFn);\n            if (transformedEnvelope) {\n                return handler(transformedEnvelope);\n            }\n        }\n    }\n    return handler(transformFromRESTFn(originalEnvelope));\n}\nexport function eventHandlersModules(getAuthStrategy) {\n    const eventHandlers = new Map();\n    const webhooksEmitter = createNanoEvents();\n    const client = {\n        ...webhooksEmitter,\n        getRegisteredEvents: () => eventHandlers,\n        async process(jwt, opts = {\n            expectedEvents: [],\n        }) {\n            const { eventType, identity, instanceId, payload, accountInfo } = await this.parseJWT(jwt);\n            const allExpectedEvents = [\n                ...opts.expectedEvents,\n                ...Array.from(eventHandlers.keys()).map((type) => ({ type })),\n            ];\n            if (allExpectedEvents.length > 0 &&\n                !allExpectedEvents.some(({ type }) => type === eventType)) {\n                throw new Error(`Unexpected event type: ${eventType}. Expected one of: ${allExpectedEvents\n                    .map((x) => x.type)\n                    .join(', ')}`);\n            }\n            const handlers = eventHandlers.get(eventType) ?? [];\n            await Promise.all(handlers.map(({ eventDefinition, handler }) => runHandler(eventDefinition, handler, payload, {\n                instanceId,\n                identity,\n                accountInfo,\n            })));\n            return {\n                instanceId,\n                eventType,\n                payload,\n                identity,\n                accountInfo,\n            };\n        },\n        async processRequest(request, opts) {\n            const body = await request.text();\n            return this.process(body, opts);\n        },\n        async parseJWT(jwt) {\n            const authStrategy = getAuthStrategy();\n            if (!authStrategy.decodeJWT) {\n                throw new Error('decodeJWT is not supported by the authentication strategy');\n            }\n            const { decoded, valid } = await authStrategy.decodeJWT(jwt);\n            if (!valid) {\n                throw new Error('JWT is not valid');\n            }\n            if (typeof decoded.data !== 'string') {\n                throw new Error(`Unexpected type of JWT data: expected string, got ${typeof decoded.data}`);\n            }\n            const parsedDecoded = JSON.parse(decoded.data);\n            const eventType = parsedDecoded.eventType;\n            const accountInfo = parsedDecoded.accountInfo;\n            const instanceId = parsedDecoded.instanceId;\n            const identity = parsedDecoded.identity\n                ? JSON.parse(parsedDecoded.identity)\n                : undefined;\n            const payload = JSON.parse(parsedDecoded.data);\n            return {\n                instanceId,\n                eventType,\n                payload,\n                identity,\n                accountInfo,\n            };\n        },\n        async parseRequest(request) {\n            const jwt = await request.text();\n            return this.parseJWT(jwt);\n        },\n        async executeHandlers(event) {\n            const allExpectedEvents = Array.from(eventHandlers.keys()).map((type) => ({ type }));\n            if (allExpectedEvents.length > 0 &&\n                !allExpectedEvents.some(({ type }) => type === event.eventType)) {\n                throw new Error(`Unexpected event type: ${event.eventType}. Expected one of: ${allExpectedEvents\n                    .map((x) => x.type)\n                    .join(', ')}`);\n            }\n            const handlers = eventHandlers.get(event.eventType) ?? [];\n            await Promise.all(handlers.map(({ eventDefinition, handler }) => runHandler(eventDefinition, handler, event.payload, {\n                instanceId: event.instanceId,\n                identity: event.identity,\n            })));\n        },\n        apps: {\n            AppInstalled: EventDefinition('AppInstalled')(),\n            AppRemoved: EventDefinition('AppRemoved')(),\n        },\n    };\n    return {\n        initModule(eventDefinition) {\n            return (handler) => {\n                const handlers = eventHandlers.get(eventDefinition.type) ?? [];\n                handlers.push({ eventDefinition, handler });\n                eventHandlers.set(eventDefinition.type, handlers);\n                webhooksEmitter.emit('registered', eventDefinition);\n            };\n        },\n        client,\n    };\n}\n","import { createNanoEvents } from './nanoevents.js';\nexport const isServicePluginModule = (val) => val.__type === 'service-plugin-definition';\nexport function servicePluginsModules(getAuthStrategy) {\n    const servicePluginsImplementations = new Map();\n    const servicePluginsEmitter = createNanoEvents();\n    const client = {\n        ...servicePluginsEmitter,\n        getRegisteredServicePlugins: () => servicePluginsImplementations,\n        async parseJWT(jwt) {\n            const authStrategy = getAuthStrategy();\n            if (!authStrategy.decodeJWT) {\n                throw new Error('decodeJWT is not supported by the authentication strategy');\n            }\n            const { decoded, valid } = await authStrategy.decodeJWT(jwt, true);\n            if (!valid) {\n                throw new Error('JWT is not valid');\n            }\n            if (typeof decoded.data !== 'object' ||\n                decoded.data === null ||\n                !('metadata' in decoded.data) ||\n                typeof decoded.data.metadata !== 'object' ||\n                decoded.data.metadata === null ||\n                !('appExtensionType' in decoded.data.metadata) ||\n                typeof decoded.data.metadata.appExtensionType !== 'string') {\n                throw new Error('Unexpected JWT data: expected object with metadata.appExtensionType string');\n            }\n            return decoded.data;\n        },\n        async process(request) {\n            const servicePluginRequest = await this.parseJWT(request.body);\n            return this.executeHandler(servicePluginRequest, request.url);\n        },\n        async parseRequest(request) {\n            const body = await request.text();\n            return this.parseJWT(body);\n        },\n        async processRequest(request) {\n            const url = request.url;\n            const body = await request.text();\n            try {\n                const implMethodResult = await this.process({ url, body });\n                return Response.json(implMethodResult);\n            }\n            catch (err) {\n                if (err.errorType === 'SPI' && err.applicationCode && err.httpCode) {\n                    return Response.json({ applicationError: { code: err.applicationCode, data: err.data } }, { status: err.httpCode });\n                }\n                throw err;\n            }\n        },\n        async executeHandler(servicePluginRequest, url) {\n            const componentType = servicePluginRequest.metadata.appExtensionType.toLowerCase();\n            const implementations = servicePluginsImplementations.get(componentType) ?? [];\n            if (implementations.length === 0) {\n                throw new Error(`No service plugin implementations found for component type ${componentType}`);\n            }\n            else if (implementations.length > 1) {\n                throw new Error(`Multiple service plugin implementations found for component type ${componentType}. This is currently not supported`);\n            }\n            const { implementation: impl, servicePluginDefinition } = implementations[0];\n            const method = servicePluginDefinition.methods.find((m) => url.endsWith(m.primaryHttpMappingPath));\n            if (!method) {\n                throw new Error('Unexpect request: request url did not match any method: ' + url);\n            }\n            const implMethod = impl[method.name];\n            if (!implMethod) {\n                throw new Error(`Got request for service plugin method ${method.name} but no implementation was provided. Available methods: ${Object.keys(impl).join(', ')}`);\n            }\n            return method.transformations.toREST(await implMethod(method.transformations.fromREST(servicePluginRequest)));\n        },\n    };\n    return {\n        initModule(servicePluginDefinition) {\n            return (implementation) => {\n                const implementations = servicePluginsImplementations.get(servicePluginDefinition.componentType.toLowerCase()) ?? [];\n                implementations.push({ servicePluginDefinition, implementation });\n                servicePluginsImplementations.set(servicePluginDefinition.componentType.toLowerCase(), implementations);\n                servicePluginsEmitter.emit('registered', servicePluginDefinition);\n            };\n        },\n        client,\n    };\n}\n","import { wixContext } from '@wix/sdk-context';\nimport { SERVICE_PLUGIN_ERROR_TYPE, } from '@wix/sdk-types';\nimport { isAmbassadorModule, toHTTPModule } from './ambassador-modules.js';\nimport { DEFAULT_API_URL, PUBLIC_METADATA_KEY } from './common.js';\nimport { FetchErrorResponse } from './fetch-error.js';\nimport { getDefaultContentHeader, isObject } from './helpers.js';\nimport { buildHostModule, isHostModule } from './host-modules.js';\nimport { buildRESTDescriptor } from './rest-modules.js';\nimport { eventHandlersModules, isEventHandlerModule, } from './event-handlers-modules.js';\nimport { isServicePluginModule, servicePluginsModules, } from './service-plugin-modules.js';\nimport { runWithoutContext } from '@wix/sdk-runtime/context';\nexport const X_WIX_CONSISTENT_HEADER = 'X-Wix-Consistent';\nexport function createClient(config) {\n    const _headers = config.headers || { Authorization: '' };\n    const defaultStrategy = {\n        getAuthHeaders: (_) => Promise.resolve({ headers: {} }),\n    };\n    const auth = config.auth;\n    const getAuthStrategy = typeof auth === 'function' ? auth : () => auth ?? defaultStrategy;\n    const boundGetAuthHeaders = () => {\n        return getAuthStrategy().getAuthHeaders(config.host);\n    };\n    const fetchWithAuth = async (urlOrRequest, requestInit) => {\n        const authHeaders = await boundGetAuthHeaders();\n        const headers = {\n            ...(requestInit?.headers ?? {}),\n            ...authHeaders.headers,\n            ...config.host?.essentials?.passThroughHeaders,\n            ...(_headers[X_WIX_CONSISTENT_HEADER]\n                ? { [X_WIX_CONSISTENT_HEADER]: _headers[X_WIX_CONSISTENT_HEADER] }\n                : {}),\n        };\n        const errorHandler = config.host?.getErrorHandler?.();\n        try {\n            if (typeof urlOrRequest === 'string' || urlOrRequest instanceof URL) {\n                const response = await fetch(urlOrRequest, {\n                    ...requestInit,\n                    headers,\n                });\n                errorHandler?.handleError(response, {\n                    requestOptions: {\n                        url: urlOrRequest.toString(),\n                        method: requestInit?.method,\n                    },\n                });\n                const consistentHeader = findConsistentHeader(response);\n                if (consistentHeader) {\n                    _headers[X_WIX_CONSISTENT_HEADER] = consistentHeader;\n                }\n                return response;\n            }\n            else {\n                for (const [k, v] of Object.entries(headers)) {\n                    if (typeof v === 'string') {\n                        urlOrRequest.headers.set(k, v);\n                    }\n                }\n                const response = await fetch(urlOrRequest, requestInit);\n                errorHandler?.handleError(response, {\n                    requestOptions: {\n                        url: urlOrRequest.url,\n                        method: requestInit?.method,\n                    },\n                });\n                const consistentHeader = findConsistentHeader(response);\n                if (consistentHeader) {\n                    _headers[X_WIX_CONSISTENT_HEADER] = consistentHeader;\n                }\n                return response;\n            }\n        }\n        catch (e) {\n            errorHandler?.handleError(e, {\n                requestOptions: {\n                    url: typeof urlOrRequest === 'string' || urlOrRequest instanceof URL\n                        ? urlOrRequest.toString()\n                        : urlOrRequest.url,\n                    method: requestInit?.method,\n                },\n            });\n            throw e;\n        }\n    };\n    const { client: servicePluginsClient, initModule: initServicePluginModule } = servicePluginsModules(getAuthStrategy);\n    const { client: eventHandlersClient, initModule: initEventHandlerModule } = eventHandlersModules(getAuthStrategy);\n    const boundFetch = async (url, options) => {\n        const authHeaders = await boundGetAuthHeaders();\n        const defaultContentTypeHeader = getDefaultContentHeader(options);\n        const response = await fetch(url, {\n            ...options,\n            headers: {\n                ...defaultContentTypeHeader,\n                ..._headers,\n                ...authHeaders?.headers,\n                ...options?.headers,\n                ...config.host?.essentials?.passThroughHeaders,\n                // Ensure consistent header always takes precedence\n                ...(_headers[X_WIX_CONSISTENT_HEADER]\n                    ? { [X_WIX_CONSISTENT_HEADER]: _headers[X_WIX_CONSISTENT_HEADER] }\n                    : {}),\n            },\n        });\n        const consistentHeader = findConsistentHeader(response);\n        if (consistentHeader) {\n            _headers[X_WIX_CONSISTENT_HEADER] = consistentHeader;\n        }\n        return response;\n    };\n    // This is typed as `any` because when trying to properly type it as defined\n    // on the WixClient, typescript starts failing with `Type instantiation is\n    // excessively deep and possibly infinite.`\n    const use = (modules, metadata) => {\n        if (isEventHandlerModule(modules)) {\n            return initEventHandlerModule(modules);\n        }\n        else if (isServicePluginModule(modules)) {\n            return initServicePluginModule(modules);\n        }\n        else if (isHostModule(modules) && config.host) {\n            return buildHostModule(modules, config.host);\n        }\n        else if (typeof modules === 'function') {\n            // The generated namespaces all have the error classes on them and\n            // a class is also a function, so we need to explicitly ignore these\n            // error classes using a static field that exists on them.\n            if ('__type' in modules && modules.__type === SERVICE_PLUGIN_ERROR_TYPE) {\n                return modules;\n            }\n            const apiBaseUrl = config.host?.apiBaseUrl ?? DEFAULT_API_URL;\n            const shouldUseCDN = config.useCDN === undefined\n                ? getAuthStrategy().shouldUseCDN\n                : config.useCDN;\n            return buildRESTDescriptor(runWithoutContext(() => isAmbassadorModule(modules))\n                ? toHTTPModule(modules)\n                : modules, metadata ?? {}, boundFetch, config.host?.getErrorHandler?.(), (relativeUrl, fetchOptions) => {\n                const finalUrl = new URL(relativeUrl, `https://${apiBaseUrl}`);\n                finalUrl.host = apiBaseUrl;\n                finalUrl.protocol = 'https';\n                return boundFetch(finalUrl.toString(), fetchOptions);\n            }, getAuthStrategy().getActiveToken, \n            // async wrapper normalizes the sync/async union from AuthenticationStrategy.getAuthHeaders\n            async () => boundGetAuthHeaders(), { HTTPHost: apiBaseUrl }, config.host?.name, shouldUseCDN);\n        }\n        else if (isObject(modules)) {\n            return Object.fromEntries(Object.entries(modules).map(([key, value]) => {\n                return [key, use(value, modules[PUBLIC_METADATA_KEY])];\n            }));\n        }\n        else {\n            return modules;\n        }\n    };\n    const setHeaders = (headers) => {\n        for (const k in headers) {\n            _headers[k] = headers[k];\n        }\n    };\n    const wrappedModules = config.modules\n        ? use(config.modules)\n        : {};\n    return {\n        ...wrappedModules,\n        get auth() {\n            const authStrategy = getAuthStrategy();\n            const originalGetAuthHeaders = authStrategy.getAuthHeaders;\n            authStrategy.getAuthHeaders = originalGetAuthHeaders.bind(undefined, config.host);\n            return authStrategy;\n        },\n        setHeaders,\n        use,\n        enableContext(contextType, opts = { elevated: false }) {\n            if (contextType === 'global') {\n                if (globalThis.__wix_context__ != null) {\n                    if (opts.elevated) {\n                        globalThis.__wix_context__.elevatedClient = this;\n                    }\n                    else {\n                        globalThis.__wix_context__.client = this;\n                    }\n                }\n                else {\n                    if (opts.elevated) {\n                        globalThis.__wix_context__ = { elevatedClient: this };\n                    }\n                    else {\n                        globalThis.__wix_context__ = { client: this };\n                    }\n                }\n            }\n            else {\n                if (opts.elevated) {\n                    wixContext.elevatedClient = this;\n                }\n                else {\n                    wixContext.client = this;\n                }\n            }\n        },\n        /**\n         * @param relativeUrl The URL to fetch relative to the API base URL\n         * @param options The fetch options\n         * @returns The fetch Response object\n         * @deprecated Use `fetchWithAuth` instead\n         */\n        fetch: (relativeUrl, options) => {\n            const apiBaseUrl = config.host?.apiBaseUrl ?? DEFAULT_API_URL;\n            const finalUrl = new URL(relativeUrl, `https://${apiBaseUrl}`);\n            finalUrl.host = apiBaseUrl;\n            finalUrl.protocol = 'https';\n            return boundFetch(finalUrl.toString(), options);\n        },\n        fetchWithAuth,\n        async graphql(query, variables, opts = {\n            apiVersion: 'alpha',\n        }) {\n            const apiBaseUrl = config?.host?.apiBaseUrl ?? DEFAULT_API_URL;\n            const res = await boundFetch(`https://${apiBaseUrl}/graphql/${opts.apiVersion}`, {\n                method: 'POST',\n                headers: {\n                    'Content-Type': 'application/json',\n                },\n                body: JSON.stringify({ query, variables }),\n            });\n            if (res.status !== 200) {\n                throw new FetchErrorResponse(`GraphQL request failed with status ${res.status}`, res);\n            }\n            const { data, errors } = await res.json();\n            return { data: data ?? {}, errors };\n        },\n        webhooks: eventHandlersClient,\n        servicePlugins: servicePluginsClient,\n    };\n}\nfunction findConsistentHeader(response) {\n    return (response.headers?.get(X_WIX_CONSISTENT_HEADER) ??\n        response.headers?.get(X_WIX_CONSISTENT_HEADER.toLowerCase()));\n}\n","import type { WixClient } from '@wix/sdk/client';\nimport React from 'react';\n\nexport type GetWixClientPromise = () => Promise<WixClient>;\n\nexport const useGetWixClientPromise = (\n  instance: string,\n  existingWixClientGetter?: GetWixClientPromise\n) => {\n  const getWixClientPromise = React.useMemo(() => {\n    let wixClientPromise: ReturnType<GetWixClientPromise>;\n    return () => {\n      if (wixClientPromise) {\n        return wixClientPromise;\n      }\n\n      wixClientPromise = import(\n        /* webpackChunkName: \"wix-ricos-sdk-client\" */ '@wix/sdk/client'\n      ).then(clientSdk => {\n        return clientSdk.createClient({\n          auth: {\n            getAuthHeaders: () => ({ headers: { Authorization: instance } }),\n          },\n        });\n      });\n      return wixClientPromise;\n    };\n  }, [instance]);\n\n  const result = React.useMemo(() => {\n    return existingWixClientGetter\n      ? { getWixClientPromise: existingWixClientGetter }\n      : { getWixClientPromise };\n  }, [existingWixClientGetter, getWixClientPromise]);\n\n  return result;\n};\n","export const logInvariant = (error: Error): void => {\n  console.error(error);\n  if (typeof window !== 'undefined' && window.__RICOS_LOG_INVARIANT__) {\n    window.__RICOS_LOG_INVARIANT__(error);\n  }\n};\n\ndeclare global {\n  interface Window {\n    __RICOS_LOG_INVARIANT__?: (error: Error) => void;\n  }\n}\n","import * as React from \"react\";\nconst AddSmall = ({ size, ...props }) => /* @__PURE__ */ React.createElement(\"svg\", { viewBox: \"0 0 18 18\", fill: \"currentColor\", width: size || \"18\", height: size || \"18\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M10 9 10 5 9 5 9 9 5 9 5 10 9 10 9 14 10 14 10 10 14 10 14 9z\" }));\nAddSmall.displayName = \"AddSmall\";\nvar AddSmall_default = AddSmall;\nexport {\n  AddSmall_default as default\n};\n","import * as React from \"react\";\nconst DeleteSmall = ({ size, ...props }) => /* @__PURE__ */ React.createElement(\"svg\", { viewBox: \"0 0 18 18\", fill: \"currentColor\", width: size || \"18\", height: size || \"18\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M13,6 L13,13 C13,14.1045695 12.1045695,15 11,15 L7,15 C5.8954305,15 5,14.1045695 5,13 L5,6 L4,6 L4,5 L7,5 L7,4 C7,3.44771525 7.44771525,3 8,3 L10,3 C10.5522847,3 11,3.44771525 11,4 L11,5 L14,5 L14,6 L13,6 Z M6,6 L6,13 C6,13.5522847 6.44771525,14 7,14 L11,14 C11.5522847,14 12,13.5522847 12,13 L12,6 L6,6 Z M8,4 L8,5 L10,5 L10,4 L8,4 Z\" }));\nDeleteSmall.displayName = \"DeleteSmall\";\nvar DeleteSmall_default = DeleteSmall;\nexport {\n  DeleteSmall_default as default\n};\n","import * as React from \"react\";\nconst Globe = ({ size, ...props }) => /* @__PURE__ */ React.createElement(\"svg\", { viewBox: \"0 0 24 24\", fill: \"currentColor\", width: size || \"24\", height: size || \"24\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M4.427 15h2.77C7.07 14.21 7 13.37 7 12.5c0-.87.07-1.71.198-2.5H4.427A7.488 7.488 0 0 0 4 12.5c0 .877.15 1.718.427 2.5Zm.438 1a7.524 7.524 0 0 0 4.14 3.575c-.698-.88-1.258-2.118-1.607-3.575H4.865Zm13.708-1A7.487 7.487 0 0 0 19 12.5a7.47 7.47 0 0 0-.427-2.5h-2.77c.128.79.197 1.63.197 2.5 0 .87-.07 1.71-.198 2.5h2.771Zm-.438 1h-2.533c-.349 1.457-.91 2.695-1.607 3.575A7.525 7.525 0 0 0 18.135 16Zm-9.923-1h6.576c.136-.778.212-1.619.212-2.5s-.076-1.722-.212-2.5H8.212A14.535 14.535 0 0 0 8 12.5c0 .881.076 1.722.212 2.5Zm.217 1c.624 2.4 1.842 4 3.071 4 1.23 0 2.447-1.6 3.071-4H8.43ZM4.865 9h2.533c.349-1.457.91-2.695 1.607-3.575A7.524 7.524 0 0 0 4.865 9Zm13.27 0a7.525 7.525 0 0 0-4.14-3.575c.698.88 1.258 2.118 1.607 3.575h2.533ZM8.429 9h6.142c-.624-2.4-1.842-4-3.071-4-1.23 0-2.447 1.6-3.071 4ZM11.5 21a8.5 8.5 0 1 1 0-17 8.5 8.5 0 0 1 0 17Z\" }));\nGlobe.displayName = \"Globe\";\nvar Globe_default = Globe;\nexport {\n  Globe_default as default\n};\n","import * as React from \"react\";\nconst StatusAlert = ({ size, ...props }) => /* @__PURE__ */ React.createElement(\"svg\", { viewBox: \"0 0 24 24\", fill: \"currentColor\", width: size || \"24\", height: size || \"24\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M12,21 C7.02943725,21 3,16.9705627 3,12 C3,7.02943725 7.02943725,3 12,3 C16.9705627,3 21,7.02943725 21,12 C21,16.9705627 16.9705627,21 12,21 Z M12,20 C16.418278,20 20,16.418278 20,12 C20,7.581722 16.418278,4 12,4 C7.581722,4 4,7.581722 4,12 C4,16.418278 7.581722,20 12,20 Z M12.7287834,7.27532214 C12.9203342,7.46687299 13.0199347,7.73174979 13.0020527,8.00205275 L13.0020527,12.0020527 C13.0199347,12.2723557 12.9203342,12.5372325 12.7287834,12.7287834 C12.5372325,12.9203342 12.2723557,13.0199347 12.0020527,13.0020527 C11.7317498,13.0199347 11.466873,12.9203342 11.2753221,12.7287834 C11.0837713,12.5372325 10.9841708,12.2723557 11.0020527,12.0020527 L11.0020527,8.00205275 C10.9841708,7.73174979 11.0837713,7.46687299 11.2753221,7.27532214 C11.466873,7.08377129 11.7317498,6.98417081 12.0020527,7.00205275 C12.2723557,6.98417081 12.5372325,7.08377129 12.7287834,7.27532214 Z M12.7287834,15.2753221 C12.9203342,15.466873 13.0199347,15.7317498 13.0020527,16.0020527 C13.0199347,16.2723557 12.9203342,16.5372325 12.7287834,16.7287834 C12.5372325,16.9203342 12.2723557,17.0199347 12.0020527,17.0020527 C11.7317498,17.0199347 11.466873,16.9203342 11.2753221,16.7287834 C11.0837713,16.5372325 10.9841708,16.2723557 11.0020527,16.0020527 C10.9841708,15.7317498 11.0837713,15.466873 11.2753221,15.2753221 C11.466873,15.0837713 11.7317498,14.9841708 12.0020527,15.0020527 C12.2723557,14.9841708 12.5372325,15.0837713 12.7287834,15.2753221 Z\" }));\nStatusAlert.displayName = \"StatusAlert\";\nvar StatusAlert_default = StatusAlert;\nexport {\n  StatusAlert_default as default\n};\n","import * as React from \"react\";\nconst StatusAlertSmall = ({ size, ...props }) => /* @__PURE__ */ React.createElement(\"svg\", { viewBox: \"0 0 18 18\", fill: \"currentColor\", width: size || \"18\", height: size || \"18\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M9,15 C12.3137085,15 15,12.3137085 15,9 C15,5.6862915 12.3137085,3 9,3 C5.6862915,3 3,5.6862915 3,9 C3,12.3137085 5.6862915,15 9,15 Z M9,16 C5.13400675,16 2,12.8659932 2,9 C2,5.13400675 5.13400675,2 9,2 C12.8659932,2 16,5.13400675 16,9 C16,12.8659932 12.8659932,16 9,16 Z M9,5 C9.55228475,5 10,5.44771525 10,6 L10,8 C10,8.55228475 9.55228475,9 9,9 C8.44771525,9 8,8.55228475 8,8 L8,6 C8,5.44771525 8.44771525,5 9,5 Z M9,10 C9.55228475,10 10,10.4477153 10,11 C10,11.5522847 9.55228475,12 9,12 C8.44771525,12 8,11.5522847 8,11 C8,10.4477153 8.44771525,10 9,10 Z\" }));\nStatusAlertSmall.displayName = \"StatusAlertSmall\";\nvar StatusAlertSmall_default = StatusAlertSmall;\nexport {\n  StatusAlertSmall_default as default\n};\n","import { default as default2 } from \"./components/AI\";\nimport { default as default3 } from \"./components/AIAssistant\";\nimport { default as default4 } from \"./components/AIAssistantSmall\";\nimport { default as default5 } from \"./components/AIChatbot\";\nimport { default as default6 } from \"./components/AIChatbotSmall\";\nimport { default as default7 } from \"./components/AIFilled\";\nimport { default as default8 } from \"./components/AIFilledSmall\";\nimport { default as default9 } from \"./components/AISmall\";\nimport { default as default10 } from \"./components/API\";\nimport { default as default11 } from \"./components/APISmall\";\nimport { default as default12 } from \"./components/Academy\";\nimport { default as default13 } from \"./components/AcademySmall\";\nimport { default as default14 } from \"./components/Accessibility\";\nimport { default as default15 } from \"./components/AccessibilityFilled\";\nimport { default as default16 } from \"./components/AccessibilitySmall\";\nimport { default as default17 } from \"./components/AccessibilitySmallFilled\";\nimport { default as default18 } from \"./components/Activity\";\nimport { default as default19 } from \"./components/ActivitySmall\";\nimport { default as default20 } from \"./components/Add\";\nimport { default as default21 } from \"./components/AddAI\";\nimport { default as default22 } from \"./components/AddAISmall\";\nimport { default as default23 } from \"./components/AddChannel\";\nimport { default as default24 } from \"./components/AddChannelSmall\";\nimport { default as default25 } from \"./components/AddColumnLeft\";\nimport { default as default26 } from \"./components/AddColumnLeftSmall\";\nimport { default as default27 } from \"./components/AddColumnRight\";\nimport { default as default28 } from \"./components/AddColumnRightSmall\";\nimport { default as default29 } from \"./components/AddPath\";\nimport { default as default30 } from \"./components/AddPathSmall\";\nimport { default as default31 } from \"./components/AddReceipt\";\nimport { default as default32 } from \"./components/AddReceiptSmall\";\nimport { default as default33 } from \"./components/AddSmall\";\nimport { default as default34 } from \"./components/AddressSign\";\nimport { default as default35 } from \"./components/AddressSignSmall\";\nimport { default as default36 } from \"./components/Adjust\";\nimport { default as default37 } from \"./components/AdjustSmall\";\nimport { default as default38 } from \"./components/AdminAccess\";\nimport { default as default39 } from \"./components/AdminAccessSmall\";\nimport { default as default40 } from \"./components/AdmissionArea\";\nimport { default as default41 } from \"./components/AdmissionAreaSmall\";\nimport { default as default42 } from \"./components/Adobe\";\nimport { default as default43 } from \"./components/AdobeExpress\";\nimport { default as default44 } from \"./components/AdobeExpressSmall\";\nimport { default as default45 } from \"./components/AdobeSmall\";\nimport { default as default46 } from \"./components/AlignBottom\";\nimport { default as default47 } from \"./components/AlignBottomSmall\";\nimport { default as default48 } from \"./components/AlignCenterHorizontally\";\nimport { default as default49 } from \"./components/AlignCenterHorizontallySmall\";\nimport { default as default50 } from \"./components/AlignCenterVertically\";\nimport { default as default51 } from \"./components/AlignCenterVerticallySmall\";\nimport { default as default52 } from \"./components/AlignLeft\";\nimport { default as default53 } from \"./components/AlignLeftSmall\";\nimport { default as default54 } from \"./components/AlignRight\";\nimport { default as default55 } from \"./components/AlignRightSmall\";\nimport { default as default56 } from \"./components/AlignTop\";\nimport { default as default57 } from \"./components/AlignTopSmall\";\nimport { default as default58 } from \"./components/AllBorders\";\nimport { default as default59 } from \"./components/AllBordersSmall\";\nimport { default as default60 } from \"./components/Angle\";\nimport { default as default61 } from \"./components/AngleSmall\";\nimport { default as default62 } from \"./components/App\";\nimport { default as default63 } from \"./components/AppMarket\";\nimport { default as default64 } from \"./components/AppMarketSmall\";\nimport { default as default65 } from \"./components/AppSmall\";\nimport { default as default66 } from \"./components/Apple\";\nimport { default as default67 } from \"./components/AppleSmall\";\nimport { default as default68 } from \"./components/Archive\";\nimport { default as default69 } from \"./components/ArchiveSmall\";\nimport { default as default70 } from \"./components/AreaPin\";\nimport { default as default71 } from \"./components/AreaPinSmall\";\nimport { default as default72 } from \"./components/ArrowBentUpLeft\";\nimport { default as default73 } from \"./components/ArrowBentUpLeftFilled\";\nimport { default as default74 } from \"./components/ArrowBentUpLeftFilledSmall\";\nimport { default as default75 } from \"./components/ArrowBentUpLeftSmall\";\nimport { default as default76 } from \"./components/ArrowDown\";\nimport { default as default77 } from \"./components/ArrowDownRight\";\nimport { default as default78 } from \"./components/ArrowDownRightSmall\";\nimport { default as default79 } from \"./components/ArrowDownSmall\";\nimport { default as default80 } from \"./components/ArrowLeft\";\nimport { default as default81 } from \"./components/ArrowLeftRight\";\nimport { default as default82 } from \"./components/ArrowLeftRightSmall\";\nimport { default as default83 } from \"./components/ArrowLeftSmall\";\nimport { default as default84 } from \"./components/ArrowRight\";\nimport { default as default85 } from \"./components/ArrowRightSmall\";\nimport { default as default86 } from \"./components/ArrowUp\";\nimport { default as default87 } from \"./components/ArrowUpDown\";\nimport { default as default88 } from \"./components/ArrowUpDownSmall\";\nimport { default as default89 } from \"./components/ArrowUpSmall\";\nimport { default as default90 } from \"./components/Article\";\nimport { default as default91 } from \"./components/ArticleSmall\";\nimport { default as default92 } from \"./components/Attachement\";\nimport { default as default93 } from \"./components/Attachment\";\nimport { default as default94 } from \"./components/AttachmentSmall\";\nimport { default as default95 } from \"./components/Automations\";\nimport { default as default96 } from \"./components/AutomationsFilled\";\nimport { default as default97 } from \"./components/AutomationsFilledSmall\";\nimport { default as default98 } from \"./components/AutomationsSmall\";\nimport { default as default99 } from \"./components/Background\";\nimport { default as default100 } from \"./components/BackgroundSmall\";\nimport { default as default101 } from \"./components/Backward\";\nimport { default as default102 } from \"./components/BackwardBottom\";\nimport { default as default103 } from \"./components/BackwardBottomSmall\";\nimport { default as default104 } from \"./components/BackwardSmall\";\nimport { default as default105 } from \"./components/Badge\";\nimport { default as default106 } from \"./components/BadgeFilled\";\nimport { default as default107 } from \"./components/BadgeFilledSmall\";\nimport { default as default108 } from \"./components/BadgeSmall\";\nimport { default as default109 } from \"./components/Bar\";\nimport { default as default110 } from \"./components/BarChartSplit\";\nimport { default as default111 } from \"./components/BarChartSplitHorizontal\";\nimport { default as default112 } from \"./components/BarChartSplitHorizontalSmall\";\nimport { default as default113 } from \"./components/BarChartSplitSmall\";\nimport { default as default114 } from \"./components/BarSmall\";\nimport { default as default115 } from \"./components/Bing\";\nimport { default as default116 } from \"./components/BingSmall\";\nimport { default as default117 } from \"./components/Block\";\nimport { default as default118 } from \"./components/BlockSmall\";\nimport { default as default119 } from \"./components/Blur\";\nimport { default as default120 } from \"./components/BlurSmall\";\nimport { default as default121 } from \"./components/Bold\";\nimport { default as default122 } from \"./components/BoldLight\";\nimport { default as default123 } from \"./components/BoldLightSmall\";\nimport { default as default124 } from \"./components/BoldSmall\";\nimport { default as default125 } from \"./components/BonusGift\";\nimport { default as default126 } from \"./components/BonusGiftSmall\";\nimport { default as default127 } from \"./components/BookingChannels\";\nimport { default as default128 } from \"./components/BookingChannelsSmall\";\nimport { default as default129 } from \"./components/BookingPageLinks\";\nimport { default as default130 } from \"./components/BookingPageLinksSmall\";\nimport { default as default131 } from \"./components/Bookmark\";\nimport { default as default132 } from \"./components/BookmarkFilled\";\nimport { default as default133 } from \"./components/BookmarkFilledSmall\";\nimport { default as default134 } from \"./components/BookmarkSmall\";\nimport { default as default135 } from \"./components/Border\";\nimport { default as default136 } from \"./components/BorderDashed\";\nimport { default as default137 } from \"./components/BorderDashedSmall\";\nimport { default as default138 } from \"./components/BorderDouble\";\nimport { default as default139 } from \"./components/BorderDoubleSmall\";\nimport { default as default140 } from \"./components/BorderSingle\";\nimport { default as default141 } from \"./components/BorderSingleSmall\";\nimport { default as default142 } from \"./components/BorderSmall\";\nimport { default as default143 } from \"./components/BorderSmallerDashed\";\nimport { default as default144 } from \"./components/BorderSmallerDashedSmall\";\nimport { default as default145 } from \"./components/BorderWidth\";\nimport { default as default146 } from \"./components/BorderWidthSmall\";\nimport { default as default147 } from \"./components/Bow\";\nimport { default as default148 } from \"./components/BowSmall\";\nimport { default as default149 } from \"./components/BoxOpen\";\nimport { default as default150 } from \"./components/BoxOpenSmall\";\nimport { default as default151 } from \"./components/Branch\";\nimport { default as default152 } from \"./components/BranchSmall\";\nimport { default as default153 } from \"./components/BreakpointDesktop\";\nimport { default as default154 } from \"./components/BreakpointEqualsMobile\";\nimport { default as default155 } from \"./components/BreakpointMobile\";\nimport { default as default156 } from \"./components/BreakpointToMobile\";\nimport { default as default157 } from \"./components/Brightness\";\nimport { default as default158 } from \"./components/BrightnessLight\";\nimport { default as default159 } from \"./components/BrightnessLightSmall\";\nimport { default as default160 } from \"./components/BrightnessSmall\";\nimport { default as default161 } from \"./components/Build\";\nimport { default as default162 } from \"./components/BuildSmall\";\nimport { default as default163 } from \"./components/BulletList\";\nimport { default as default164 } from \"./components/BulletListThin\";\nimport { default as default165 } from \"./components/BulletListThinSmall\";\nimport { default as default166 } from \"./components/Button\";\nimport { default as default167 } from \"./components/ButtonPill\";\nimport { default as default168 } from \"./components/ButtonPillSmall\";\nimport { default as default169 } from \"./components/ButtonRounded\";\nimport { default as default170 } from \"./components/ButtonRoundedSmall\";\nimport { default as default171 } from \"./components/ButtonSmall\";\nimport { default as default172 } from \"./components/ButtonSquare\";\nimport { default as default173 } from \"./components/ButtonSquareSmall\";\nimport { default as default174 } from \"./components/CSS\";\nimport { default as default175 } from \"./components/CSSSmall\";\nimport { default as default176 } from \"./components/CahtFilledSmall\";\nimport { default as default177 } from \"./components/CallEnded\";\nimport { default as default178 } from \"./components/CallEndedSmall\";\nimport { default as default179 } from \"./components/CallMissed\";\nimport { default as default180 } from \"./components/CallMissedSmall\";\nimport { default as default181 } from \"./components/CancelOrder\";\nimport { default as default182 } from \"./components/CancelOrderSmall\";\nimport { default as default183 } from \"./components/Carousel\";\nimport { default as default184 } from \"./components/CarouselSmall\";\nimport { default as default185 } from \"./components/Cart\";\nimport { default as default186 } from \"./components/CartFilled\";\nimport { default as default187 } from \"./components/CartSmall\";\nimport { default as default188 } from \"./components/CartSmallFilled\";\nimport { default as default189 } from \"./components/Catalog\";\nimport { default as default190 } from \"./components/CatalogSmall\";\nimport { default as default191 } from \"./components/Category\";\nimport { default as default192 } from \"./components/CategorySmall\";\nimport { default as default193 } from \"./components/CellBorders\";\nimport { default as default194 } from \"./components/CellBordersSmall\";\nimport { default as default195 } from \"./components/ChangeOrder\";\nimport { default as default196 } from \"./components/ChangeOrderSmall\";\nimport { default as default197 } from \"./components/Chat\";\nimport { default as default198 } from \"./components/ChatDisabed\";\nimport { default as default199 } from \"./components/ChatDisabled\";\nimport { default as default200 } from \"./components/ChatDisabledSmall\";\nimport { default as default201 } from \"./components/ChatFilled\";\nimport { default as default202 } from \"./components/ChatFilledSmall\";\nimport { default as default203 } from \"./components/ChatGPT\";\nimport { default as default204 } from \"./components/ChatGPTSmall\";\nimport { default as default205 } from \"./components/ChatReply\";\nimport { default as default206 } from \"./components/ChatReplySmall\";\nimport { default as default207 } from \"./components/ChatSmall\";\nimport { default as default208 } from \"./components/Check\";\nimport { default as default209 } from \"./components/Checkbox\";\nimport { default as default210 } from \"./components/CheckboxSmall\";\nimport { default as default211 } from \"./components/Checklist\";\nimport { default as default212 } from \"./components/ChecklistSmall\";\nimport { default as default213 } from \"./components/Checkroom\";\nimport { default as default214 } from \"./components/CheckroomSmall\";\nimport { default as default215 } from \"./components/ChevronCollapse\";\nimport { default as default216 } from \"./components/ChevronCollapseSmall\";\nimport { default as default217 } from \"./components/ChevronDown\";\nimport { default as default218 } from \"./components/ChevronDownCircle\";\nimport { default as default219 } from \"./components/ChevronDownCircleSmall\";\nimport { default as default220 } from \"./components/ChevronDownLarge\";\nimport { default as default221 } from \"./components/ChevronDownLargeSmall\";\nimport { default as default222 } from \"./components/ChevronDownSmall\";\nimport { default as default223 } from \"./components/ChevronExpand\";\nimport { default as default224 } from \"./components/ChevronExpandSmall\";\nimport { default as default225 } from \"./components/ChevronLeft\";\nimport { default as default226 } from \"./components/ChevronLeftCircle\";\nimport { default as default227 } from \"./components/ChevronLeftCircleSmall\";\nimport { default as default228 } from \"./components/ChevronLeftLarge\";\nimport { default as default229 } from \"./components/ChevronLeftLargeSmall\";\nimport { default as default230 } from \"./components/ChevronLeftSmall\";\nimport { default as default231 } from \"./components/ChevronRight\";\nimport { default as default232 } from \"./components/ChevronRightCircle\";\nimport { default as default233 } from \"./components/ChevronRightCircleSmall\";\nimport { default as default234 } from \"./components/ChevronRightLarge\";\nimport { default as default235 } from \"./components/ChevronRightLargeSmall\";\nimport { default as default236 } from \"./components/ChevronRightSmall\";\nimport { default as default237 } from \"./components/ChevronUp\";\nimport { default as default238 } from \"./components/ChevronUpCircle\";\nimport { default as default239 } from \"./components/ChevronUpCircleSmall\";\nimport { default as default240 } from \"./components/ChevronUpLarge\";\nimport { default as default241 } from \"./components/ChevronUpLargeSmall\";\nimport { default as default242 } from \"./components/ChevronUpSmall\";\nimport { default as default243 } from \"./components/CircleDashed\";\nimport { default as default244 } from \"./components/CircleDashedSmall\";\nimport { default as default245 } from \"./components/CircleLarge\";\nimport { default as default246 } from \"./components/CircleLargeSmall\";\nimport { default as default247 } from \"./components/CircleSmallFilled\";\nimport { default as default248 } from \"./components/CircleSmallFilledSmall\";\nimport { default as default249 } from \"./components/CircleWedgeBottom\";\nimport { default as default250 } from \"./components/CircleWedgeBottomFilled\";\nimport { default as default251 } from \"./components/CircleWedgeBottomFilledSmall\";\nimport { default as default252 } from \"./components/CircleWedgeBottomSmall\";\nimport { default as default253 } from \"./components/CircleWedgeTop\";\nimport { default as default254 } from \"./components/CircleWedgeTopFilled\";\nimport { default as default255 } from \"./components/CircleWedgeTopFilledSmall\";\nimport { default as default256 } from \"./components/CircleWedgeTopSmall\";\nimport { default as default257 } from \"./components/Claude\";\nimport { default as default258 } from \"./components/ClaudeSmall\";\nimport { default as default259 } from \"./components/ClearChat\";\nimport { default as default260 } from \"./components/ClearChatSmall\";\nimport { default as default261 } from \"./components/Click\";\nimport { default as default262 } from \"./components/ClickSmall\";\nimport { default as default263 } from \"./components/Cloud\";\nimport { default as default264 } from \"./components/CloudSmall\";\nimport { default as default265 } from \"./components/Code\";\nimport { default as default266 } from \"./components/CodeArray\";\nimport { default as default267 } from \"./components/CodeArraySmall\";\nimport { default as default268 } from \"./components/CodeObject\";\nimport { default as default269 } from \"./components/CodeObjectSmall\";\nimport { default as default270 } from \"./components/CodeSmall\";\nimport { default as default271 } from \"./components/Collections\";\nimport { default as default272 } from \"./components/CollectionsSmall\";\nimport { default as default273 } from \"./components/ColorBucket\";\nimport { default as default274 } from \"./components/ColorBucketSmall\";\nimport { default as default275 } from \"./components/ColorDrop\";\nimport { default as default276 } from \"./components/ColorDropSmall\";\nimport { default as default277 } from \"./components/Comment\";\nimport { default as default278 } from \"./components/CommentAdd\";\nimport { default as default279 } from \"./components/CommentAddSmall\";\nimport { default as default280 } from \"./components/CommentMove\";\nimport { default as default281 } from \"./components/CommentMoveSmall\";\nimport { default as default282 } from \"./components/CommentSmall\";\nimport { default as default283 } from \"./components/Compose\";\nimport { default as default284 } from \"./components/ComposeSmall\";\nimport { default as default285 } from \"./components/Condition\";\nimport { default as default286 } from \"./components/ConditionSmall\";\nimport { default as default287 } from \"./components/Confetti\";\nimport { default as default288 } from \"./components/ConfettiSmall\";\nimport { default as default289 } from \"./components/Confirm\";\nimport { default as default290 } from \"./components/ConfirmSmall\";\nimport { default as default291 } from \"./components/Container\";\nimport { default as default292 } from \"./components/ContainerSmall\";\nimport { default as default293 } from \"./components/ContentFilter\";\nimport { default as default294 } from \"./components/ContentFilterSmall\";\nimport { default as default295 } from \"./components/Contrast\";\nimport { default as default296 } from \"./components/ContrastSmall\";\nimport { default as default297 } from \"./components/Copyright\";\nimport { default as default298 } from \"./components/CopyrightSmall\";\nimport { default as default299 } from \"./components/CornerRadius\";\nimport { default as default300 } from \"./components/CornerRadiusSmall\";\nimport { default as default301 } from \"./components/Coupon\";\nimport { default as default302 } from \"./components/CouponSmall\";\nimport { default as default303 } from \"./components/CreditCard\";\nimport { default as default304 } from \"./components/CreditCardAccept\";\nimport { default as default305 } from \"./components/CreditCardAcceptSmall\";\nimport { default as default306 } from \"./components/CreditCardDecline\";\nimport { default as default307 } from \"./components/CreditCardDeclineSmall\";\nimport { default as default308 } from \"./components/CreditCardPending\";\nimport { default as default309 } from \"./components/CreditCardPendingSmall\";\nimport { default as default310 } from \"./components/CreditCardSmall\";\nimport { default as default311 } from \"./components/Crop\";\nimport { default as default312 } from \"./components/CropRotate\";\nimport { default as default313 } from \"./components/CropRotateSmall\";\nimport { default as default314 } from \"./components/CropSmall\";\nimport { default as default315 } from \"./components/Currency\";\nimport { default as default316 } from \"./components/CurrencySmall\";\nimport { default as default317 } from \"./components/CutOut\";\nimport { default as default318 } from \"./components/CutOutSmall\";\nimport { default as default319 } from \"./components/CutOutSparkles\";\nimport { default as default320 } from \"./components/CutOutSparklesSmall\";\nimport { default as default321 } from \"./components/Cutlery\";\nimport { default as default322 } from \"./components/CutlerySmall\";\nimport { default as default323 } from \"./components/Dashboard\";\nimport { default as default324 } from \"./components/DashboardSmall\";\nimport { default as default325 } from \"./components/DataCollection\";\nimport { default as default326 } from \"./components/DataCollectionDownload\";\nimport { default as default327 } from \"./components/DataCollectionDownloadSmall\";\nimport { default as default328 } from \"./components/DataCollectionLinked\";\nimport { default as default329 } from \"./components/DataCollectionLinkedSmall\";\nimport { default as default330 } from \"./components/DataCollectionSmall\";\nimport { default as default331 } from \"./components/DataConnect\";\nimport { default as default332 } from \"./components/DataConnectSmall\";\nimport { default as default333 } from \"./components/DataDisconnect\";\nimport { default as default334 } from \"./components/DataDisconnectSmall\";\nimport { default as default335 } from \"./components/Database\";\nimport { default as default336 } from \"./components/DatabaseSmall\";\nimport { default as default337 } from \"./components/Date\";\nimport { default as default338 } from \"./components/DateAdd\";\nimport { default as default339 } from \"./components/DateAddSmall\";\nimport { default as default340 } from \"./components/DateAndTime\";\nimport { default as default341 } from \"./components/DateAndTimeSmall\";\nimport { default as default342 } from \"./components/DateChecked\";\nimport { default as default343 } from \"./components/DateCheckedSmall\";\nimport { default as default344 } from \"./components/DateDuplicate\";\nimport { default as default345 } from \"./components/DateDuplicateSmall\";\nimport { default as default346 } from \"./components/DateSmall\";\nimport { default as default347 } from \"./components/DateSync\";\nimport { default as default348 } from \"./components/DateSyncSmall\";\nimport { default as default349 } from \"./components/DecreaseIndent\";\nimport { default as default350 } from \"./components/DecreaseIndentLight\";\nimport { default as default351 } from \"./components/DecreaseIndentLightSmall\";\nimport { default as default352 } from \"./components/Delete\";\nimport { default as default353 } from \"./components/DeleteFilled\";\nimport { default as default354 } from \"./components/DeleteFilledSmall\";\nimport { default as default355 } from \"./components/DeleteSmall\";\nimport { default as default356 } from \"./components/Delivery\";\nimport { default as default357 } from \"./components/DeliverySmall\";\nimport { default as default358 } from \"./components/Design\";\nimport { default as default359 } from \"./components/DesignSmall\";\nimport { default as default360 } from \"./components/DesignSparkles\";\nimport { default as default361 } from \"./components/DesignSparklesSmall\";\nimport { default as default362 } from \"./components/DesignToken\";\nimport { default as default363 } from \"./components/DesignTokenSmall\";\nimport { default as default364 } from \"./components/Desktop\";\nimport { default as default365 } from \"./components/DesktopDisabled\";\nimport { default as default366 } from \"./components/DesktopDisabledSmall\";\nimport { default as default367 } from \"./components/DesktopSmall\";\nimport { default as default368 } from \"./components/Detach\";\nimport { default as default369 } from \"./components/DetachSmall\";\nimport { default as default370 } from \"./components/DiamondSmallFilled\";\nimport { default as default371 } from \"./components/DiamondSmallFilledSmall\";\nimport { default as default372 } from \"./components/Discord\";\nimport { default as default373 } from \"./components/DiscordSmall\";\nimport { default as default374 } from \"./components/Discount\";\nimport { default as default375 } from \"./components/DiscountSmall\";\nimport { default as default376 } from \"./components/Dismiss\";\nimport { default as default377 } from \"./components/DismissFilled\";\nimport { default as default378 } from \"./components/DismissFilledSmall\";\nimport { default as default379 } from \"./components/DismissSmall\";\nimport { default as default380 } from \"./components/DistributeCenter\";\nimport { default as default381 } from \"./components/DistributeCenterSmall\";\nimport { default as default382 } from \"./components/DistributeFullWidth\";\nimport { default as default383 } from \"./components/DistributeFullWidthSmall\";\nimport { default as default384 } from \"./components/DistributeGlobe\";\nimport { default as default385 } from \"./components/DistributeGlobeSmall\";\nimport { default as default386 } from \"./components/DistributeHorizontally\";\nimport { default as default387 } from \"./components/DistributeHorizontallySmall\";\nimport { default as default388 } from \"./components/DistributeSmall\";\nimport { default as default389 } from \"./components/DistributeVertically\";\nimport { default as default390 } from \"./components/DistributeVerticallySmall\";\nimport { default as default391 } from \"./components/Divider\";\nimport { default as default392 } from \"./components/DividerSize\";\nimport { default as default393 } from \"./components/DividerSizeLarge\";\nimport { default as default394 } from \"./components/DividerSizeLargeSmall\";\nimport { default as default395 } from \"./components/DividerSizeMedium\";\nimport { default as default396 } from \"./components/DividerSizeMediumSmall\";\nimport { default as default397 } from \"./components/DividerSizeSmall\";\nimport { default as default398 } from \"./components/DividerSmall\";\nimport { default as default399 } from \"./components/DocDownload\";\nimport { default as default400 } from \"./components/DocDownloadSmall\";\nimport { default as default401 } from \"./components/DocDuplicate\";\nimport { default as default402 } from \"./components/DocDuplicateSmall\";\nimport { default as default403 } from \"./components/DocExpire\";\nimport { default as default404 } from \"./components/DocExpireSmall\";\nimport { default as default405 } from \"./components/DocMovePrevious\";\nimport { default as default406 } from \"./components/DocMovePreviousSmall\";\nimport { default as default407 } from \"./components/DocMovefrom\";\nimport { default as default408 } from \"./components/DocMovefromSmall\";\nimport { default as default409 } from \"./components/DocMoveto\";\nimport { default as default410 } from \"./components/DocMovetoSmall\";\nimport { default as default411 } from \"./components/DocSend\";\nimport { default as default412 } from \"./components/DocSendSmall\";\nimport { default as default413 } from \"./components/DockBottom\";\nimport { default as default414 } from \"./components/DockBottomSmall\";\nimport { default as default415 } from \"./components/DockLeft\";\nimport { default as default416 } from \"./components/DockLeftSmall\";\nimport { default as default417 } from \"./components/DockRight\";\nimport { default as default418 } from \"./components/DockRightSmall\";\nimport { default as default419 } from \"./components/DockTop\";\nimport { default as default420 } from \"./components/DockTopSmall\";\nimport { default as default421 } from \"./components/Document\";\nimport { default as default422 } from \"./components/DocumentExpire\";\nimport { default as default423 } from \"./components/DocumentExpireSmall\";\nimport { default as default424 } from \"./components/DocumentSend\";\nimport { default as default425 } from \"./components/DocumentSendSmall\";\nimport { default as default426 } from \"./components/DocumentSmall\";\nimport { default as default427 } from \"./components/Donation\";\nimport { default as default428 } from \"./components/DonationSmall\";\nimport { default as default429 } from \"./components/Door\";\nimport { default as default430 } from \"./components/DoorSmall\";\nimport { default as default431 } from \"./components/Doughnut\";\nimport { default as default432 } from \"./components/DoughnutFilled\";\nimport { default as default433 } from \"./components/DoughnutFilledSmall\";\nimport { default as default434 } from \"./components/DoughnutSmall\";\nimport { default as default435 } from \"./components/Download\";\nimport { default as default436 } from \"./components/DownloadImport\";\nimport { default as default437 } from \"./components/DownloadImportSmall\";\nimport { default as default438 } from \"./components/Draw\";\nimport { default as default439 } from \"./components/DrawSmall\";\nimport { default as default440 } from \"./components/Drink\";\nimport { default as default441 } from \"./components/DrinkSmall\";\nimport { default as default442 } from \"./components/DropShadowBottom\";\nimport { default as default443 } from \"./components/DropShadowBottomSmall\";\nimport { default as default444 } from \"./components/DropShadowLeft\";\nimport { default as default445 } from \"./components/DropShadowLeftSmall\";\nimport { default as default446 } from \"./components/DropShadowRight\";\nimport { default as default447 } from \"./components/DropShadowRightSmall\";\nimport { default as default448 } from \"./components/Dropdown\";\nimport { default as default449 } from \"./components/DropdownList\";\nimport { default as default450 } from \"./components/DropdownListSmall\";\nimport { default as default451 } from \"./components/DropdownSmall\";\nimport { default as default452 } from \"./components/DuckDuckGo\";\nimport { default as default453 } from \"./components/DuckDuckGoSmall\";\nimport { default as default454 } from \"./components/Duplicate\";\nimport { default as default455 } from \"./components/DuplicateSmall\";\nimport { default as default456 } from \"./components/DynamicPage\";\nimport { default as default457 } from \"./components/DynamicPageSmall\";\nimport { default as default458 } from \"./components/ESignature\";\nimport { default as default459 } from \"./components/ESignatureSmall\";\nimport { default as default460 } from \"./components/Edit\";\nimport { default as default461 } from \"./components/EditDisabled\";\nimport { default as default462 } from \"./components/EditDisabledSmall\";\nimport { default as default463 } from \"./components/EditSmall\";\nimport { default as default464 } from \"./components/EditSparkles\";\nimport { default as default465 } from \"./components/EditSparklesSmall\";\nimport { default as default466 } from \"./components/EditorX\";\nimport { default as default467 } from \"./components/EditorXSmall\";\nimport { default as default468 } from \"./components/ElementSelectionTool\";\nimport { default as default469 } from \"./components/ElementSelectionToolSmall\";\nimport { default as default470 } from \"./components/Elevator\";\nimport { default as default471 } from \"./components/ElevatorSmall\";\nimport { default as default472 } from \"./components/Email\";\nimport { default as default473 } from \"./components/EmailAlert\";\nimport { default as default474 } from \"./components/EmailAlertSmall\";\nimport { default as default475 } from \"./components/EmailClick\";\nimport { default as default476 } from \"./components/EmailClickSmall\";\nimport { default as default477 } from \"./components/EmailCode\";\nimport { default as default478 } from \"./components/EmailCodeSmall\";\nimport { default as default479 } from \"./components/EmailFilled\";\nimport { default as default480 } from \"./components/EmailFilledSmall\";\nimport { default as default481 } from \"./components/EmailGoogle\";\nimport { default as default482 } from \"./components/EmailGoogleSmall\";\nimport { default as default483 } from \"./components/EmailOpen\";\nimport { default as default484 } from \"./components/EmailOpenSmall\";\nimport { default as default485 } from \"./components/EmailSend\";\nimport { default as default486 } from \"./components/EmailSendSmall\";\nimport { default as default487 } from \"./components/EmailSent\";\nimport { default as default488 } from \"./components/EmailSentSmall\";\nimport { default as default489 } from \"./components/EmailSettings\";\nimport { default as default490 } from \"./components/EmailSettingsSmall\";\nimport { default as default491 } from \"./components/EmailSmall\";\nimport { default as default492 } from \"./components/EmptyTrash\";\nimport { default as default493 } from \"./components/EmptyTrashSmall\";\nimport { default as default494 } from \"./components/EnhancePrompt\";\nimport { default as default495 } from \"./components/EnhancePromptSmall\";\nimport { default as default496 } from \"./components/Enter\";\nimport { default as default497 } from \"./components/EnterSmall\";\nimport { default as default498 } from \"./components/Equal\";\nimport { default as default499 } from \"./components/EqualSmall\";\nimport { default as default500 } from \"./components/Erase\";\nimport { default as default501 } from \"./components/EraseSmall\";\nimport { default as default502 } from \"./components/EraseSparkles\";\nimport { default as default503 } from \"./components/EraseSparklesSmall\";\nimport { default as default504 } from \"./components/Exclude\";\nimport { default as default505 } from \"./components/ExcludeSmall\";\nimport { default as default506 } from \"./components/Exit\";\nimport { default as default507 } from \"./components/ExitFullScreen\";\nimport { default as default508 } from \"./components/ExitFullScreenSmall\";\nimport { default as default509 } from \"./components/ExitSmall\";\nimport { default as default510 } from \"./components/Experiment\";\nimport { default as default511 } from \"./components/ExperimentSmall\";\nimport { default as default512 } from \"./components/Exposure\";\nimport { default as default513 } from \"./components/ExposureSmall\";\nimport { default as default514 } from \"./components/Extensions\";\nimport { default as default515 } from \"./components/ExtensionsFilled\";\nimport { default as default516 } from \"./components/ExtensionsFilledSmall\";\nimport { default as default517 } from \"./components/ExtensionsSmall\";\nimport { default as default518 } from \"./components/ExternalLink\";\nimport { default as default519 } from \"./components/ExternalLinkSmall\";\nimport { default as default520 } from \"./components/ExtraHot\";\nimport { default as default521 } from \"./components/ExtraHotSmall\";\nimport { default as default522 } from \"./components/FAQ\";\nimport { default as default523 } from \"./components/FAQSmall\";\nimport { default as default524 } from \"./components/FaceDisapointed\";\nimport { default as default525 } from \"./components/FaceFemale\";\nimport { default as default526 } from \"./components/FaceFemaleSmall\";\nimport { default as default527 } from \"./components/FaceFrowning\";\nimport { default as default528 } from \"./components/FaceGrining\";\nimport { default as default529 } from \"./components/FaceNeutral\";\nimport { default as default530 } from \"./components/FaceSmiling\";\nimport { default as default531 } from \"./components/Facebook\";\nimport { default as default532 } from \"./components/FacebookSmall\";\nimport { default as default533 } from \"./components/Favorite\";\nimport { default as default534 } from \"./components/FavoriteFilled\";\nimport { default as default535 } from \"./components/FavoriteFilledSmall\";\nimport { default as default536 } from \"./components/FavoriteSmall\";\nimport { default as default537 } from \"./components/Fax\";\nimport { default as default538 } from \"./components/FaxSmall\";\nimport { default as default539 } from \"./components/Feed\";\nimport { default as default540 } from \"./components/FeedSmall\";\nimport { default as default541 } from \"./components/Female\";\nimport { default as default542 } from \"./components/FemaleSmall\";\nimport { default as default543 } from \"./components/Figma\";\nimport { default as default544 } from \"./components/FigmaSmall\";\nimport { default as default545 } from \"./components/FileDocumentSmall\";\nimport { default as default546 } from \"./components/FilterSmall\";\nimport { default as default547 } from \"./components/Filters\";\nimport { default as default548 } from \"./components/FiltersSmall\";\nimport { default as default549 } from \"./components/FixedWidth\";\nimport { default as default550 } from \"./components/FixedWidthSmall\";\nimport { default as default551 } from \"./components/Flag\";\nimport { default as default552 } from \"./components/FlagDismiss\";\nimport { default as default553 } from \"./components/FlagDismissSmall\";\nimport { default as default554 } from \"./components/FlagFilled\";\nimport { default as default555 } from \"./components/FlagFilledSmall\";\nimport { default as default556 } from \"./components/FlagFind\";\nimport { default as default557 } from \"./components/FlagFindSmall\";\nimport { default as default558 } from \"./components/FlagSmall\";\nimport { default as default559 } from \"./components/Focus\";\nimport { default as default560 } from \"./components/FocusSmall\";\nimport { default as default561 } from \"./components/Folder\";\nimport { default as default562 } from \"./components/FolderFind\";\nimport { default as default563 } from \"./components/FolderFindSmall\";\nimport { default as default564 } from \"./components/FolderMove\";\nimport { default as default565 } from \"./components/FolderMoveSmall\";\nimport { default as default566 } from \"./components/FolderSmall\";\nimport { default as default567 } from \"./components/Food\";\nimport { default as default568 } from \"./components/FoodInStock\";\nimport { default as default569 } from \"./components/FoodInStockSmall\";\nimport { default as default570 } from \"./components/FoodOutOfStock\";\nimport { default as default571 } from \"./components/FoodOutOfStockSmall\";\nimport { default as default572 } from \"./components/FoodSmall\";\nimport { default as default573 } from \"./components/Formula\";\nimport { default as default574 } from \"./components/FormulaSmall\";\nimport { default as default575 } from \"./components/Forward\";\nimport { default as default576 } from \"./components/ForwardSmall\";\nimport { default as default577 } from \"./components/ForwardTop\";\nimport { default as default578 } from \"./components/ForwardTopSmall\";\nimport { default as default579 } from \"./components/FourThreeRatio\";\nimport { default as default580 } from \"./components/FourThreeRatioSmall\";\nimport { default as default581 } from \"./components/Freeze\";\nimport { default as default582 } from \"./components/FreezeSmall\";\nimport { default as default583 } from \"./components/FullScreen\";\nimport { default as default584 } from \"./components/FullScreenSmall\";\nimport { default as default585 } from \"./components/Function\";\nimport { default as default586 } from \"./components/FunctionSmall\";\nimport { default as default587 } from \"./components/FunnelChart\";\nimport { default as default588 } from \"./components/FunnelChartSmall\";\nimport { default as default589 } from \"./components/GallerySparkle\";\nimport { default as default590 } from \"./components/GallerySparkleSmall\";\nimport { default as default591 } from \"./components/Gem\";\nimport { default as default592 } from \"./components/GemSmall\";\nimport { default as default593 } from \"./components/Gemini\";\nimport { default as default594 } from \"./components/GeminiSmall\";\nimport { default as default595 } from \"./components/GetStarted\";\nimport { default as default596 } from \"./components/GetStartedSmall\";\nimport { default as default597 } from \"./components/Gift\";\nimport { default as default598 } from \"./components/GiftSmall\";\nimport { default as default599 } from \"./components/GitHub\";\nimport { default as default600 } from \"./components/GitHubSmall\";\nimport { default as default601 } from \"./components/Globe\";\nimport { default as default602 } from \"./components/GlobeSmall\";\nimport { default as default603 } from \"./components/GlutenFree\";\nimport { default as default604 } from \"./components/GlutenFreeSmall\";\nimport { default as default605 } from \"./components/Google\";\nimport { default as default606 } from \"./components/GoogleAds\";\nimport { default as default607 } from \"./components/GoogleAdsSmall\";\nimport { default as default608 } from \"./components/GoogleSmall\";\nimport { default as default609 } from \"./components/Grafana\";\nimport { default as default610 } from \"./components/GrafanaSmall\";\nimport { default as default611 } from \"./components/Grain\";\nimport { default as default612 } from \"./components/GrainSmall\";\nimport { default as default613 } from \"./components/Groups\";\nimport { default as default614 } from \"./components/GroupsSmall\";\nimport { default as default615 } from \"./components/Gun\";\nimport { default as default616 } from \"./components/GunSmall\";\nimport { default as default617 } from \"./components/Handle\";\nimport { default as default618 } from \"./components/HandleSmall\";\nimport { default as default619 } from \"./components/Heading\";\nimport { default as default620 } from \"./components/HeadingOne\";\nimport { default as default621 } from \"./components/HeadingOneSmall\";\nimport { default as default622 } from \"./components/HeadingSmall\";\nimport { default as default623 } from \"./components/HeadingThree\";\nimport { default as default624 } from \"./components/HeadingThreeSmall\";\nimport { default as default625 } from \"./components/HeadingTwo\";\nimport { default as default626 } from \"./components/HeadingTwoSmall\";\nimport { default as default627 } from \"./components/Heart\";\nimport { default as default628 } from \"./components/HeartFilled\";\nimport { default as default629 } from \"./components/HeartFilledSmall\";\nimport { default as default630 } from \"./components/HeartSmall\";\nimport { default as default631 } from \"./components/HeatmapChart\";\nimport { default as default632 } from \"./components/HeatmapChartSmall\";\nimport { default as default633 } from \"./components/Height\";\nimport { default as default634 } from \"./components/HeightSmall\";\nimport { default as default635 } from \"./components/Help\";\nimport { default as default636 } from \"./components/HelpCircle\";\nimport { default as default637 } from \"./components/HelpCircleSmall\";\nimport { default as default638 } from \"./components/HelpSmall\";\nimport { default as default639 } from \"./components/Hidden\";\nimport { default as default640 } from \"./components/HiddenSmall\";\nimport { default as default641 } from \"./components/HideSidebar\";\nimport { default as default642 } from \"./components/HideSidebarSmall\";\nimport { default as default643 } from \"./components/Highlights\";\nimport { default as default644 } from \"./components/HighlightsSmall\";\nimport { default as default645 } from \"./components/Hint\";\nimport { default as default646 } from \"./components/HintSmall\";\nimport { default as default647 } from \"./components/History\";\nimport { default as default648 } from \"./components/HistorySmall\";\nimport { default as default649 } from \"./components/Home\";\nimport { default as default650 } from \"./components/HomeSmall\";\nimport { default as default651 } from \"./components/HorizontalKerning\";\nimport { default as default652 } from \"./components/HorizontalKerningSmall\";\nimport { default as default653 } from \"./components/HorizontalMenu\";\nimport { default as default654 } from \"./components/HorizontalMenuSmall\";\nimport { default as default655 } from \"./components/HorizontalRatio\";\nimport { default as default656 } from \"./components/HorizontalRatioChecked\";\nimport { default as default657 } from \"./components/HorizontalRatioCheckedSmall\";\nimport { default as default658 } from \"./components/HorizontalRatioSmall\";\nimport { default as default659 } from \"./components/HorizontalTextLight\";\nimport { default as default660 } from \"./components/HorizontalTextLightSmall\";\nimport { default as default661 } from \"./components/Hot\";\nimport { default as default662 } from \"./components/HotSmall\";\nimport { default as default663 } from \"./components/Hotel\";\nimport { default as default664 } from \"./components/HotelSmall\";\nimport { default as default665 } from \"./components/HugContent\";\nimport { default as default666 } from \"./components/HugContentSmall\";\nimport { default as default667 } from \"./components/Image\";\nimport { default as default668 } from \"./components/ImageSmall\";\nimport { default as default669 } from \"./components/ImageSparkles\";\nimport { default as default670 } from \"./components/ImageSparklesSmall\";\nimport { default as default671 } from \"./components/Inbox\";\nimport { default as default672 } from \"./components/InboxSmall\";\nimport { default as default673 } from \"./components/IncreaseIndent\";\nimport { default as default674 } from \"./components/IncreaseIndentLight\";\nimport { default as default675 } from \"./components/IncreaseIndentLightSmall\";\nimport { default as default676 } from \"./components/IndividualPaddings\";\nimport { default as default677 } from \"./components/IndividualPaddingsSmall\";\nimport { default as default678 } from \"./components/IndoorLight\";\nimport { default as default679 } from \"./components/IndoorLightSmall\";\nimport { default as default680 } from \"./components/Info\";\nimport { default as default681 } from \"./components/InfoCircle\";\nimport { default as default682 } from \"./components/InfoCircleFilled\";\nimport { default as default683 } from \"./components/InfoCircleFilledSmall\";\nimport { default as default684 } from \"./components/InfoCircleSmall\";\nimport { default as default685 } from \"./components/InfoSmall\";\nimport { default as default686 } from \"./components/InnerShadow\";\nimport { default as default687 } from \"./components/InnerShadowSmall\";\nimport { default as default688 } from \"./components/Input\";\nimport { default as default689 } from \"./components/InputArea\";\nimport { default as default690 } from \"./components/InputAreaSmall\";\nimport { default as default691 } from \"./components/InputSmall\";\nimport { default as default692 } from \"./components/Instagram\";\nimport { default as default693 } from \"./components/InstagramSmall\";\nimport { default as default694 } from \"./components/Integrations\";\nimport { default as default695 } from \"./components/IntegrationsSmall\";\nimport { default as default696 } from \"./components/Intersect\";\nimport { default as default697 } from \"./components/IntersectSmall\";\nimport { default as default698 } from \"./components/Invoice\";\nimport { default as default699 } from \"./components/InvoiceSmall\";\nimport { default as default700 } from \"./components/Italic\";\nimport { default as default701 } from \"./components/ItalicLight\";\nimport { default as default702 } from \"./components/ItalicLightSmall\";\nimport { default as default703 } from \"./components/ItalicSmall\";\nimport { default as default704 } from \"./components/JS\";\nimport { default as default705 } from \"./components/JSLocked\";\nimport { default as default706 } from \"./components/JSLockedSmall\";\nimport { default as default707 } from \"./components/JSSmall\";\nimport { default as default708 } from \"./components/JSW\";\nimport { default as default709 } from \"./components/JSWSmall\";\nimport { default as default710 } from \"./components/JSX\";\nimport { default as default711 } from \"./components/JSXSmall\";\nimport { default as default712 } from \"./components/JoinPath\";\nimport { default as default713 } from \"./components/JoinPathSmall\";\nimport { default as default714 } from \"./components/JustifyTextLight\";\nimport { default as default715 } from \"./components/JustifyTextLightSmall\";\nimport { default as default716 } from \"./components/Kanban\";\nimport { default as default717 } from \"./components/KanbanSmall\";\nimport { default as default718 } from \"./components/Keypad\";\nimport { default as default719 } from \"./components/KeypadSmall\";\nimport { default as default720 } from \"./components/Languages\";\nimport { default as default721 } from \"./components/LanguagesAdd\";\nimport { default as default722 } from \"./components/LanguagesAddSmall\";\nimport { default as default723 } from \"./components/LanguagesSmall\";\nimport { default as default724 } from \"./components/LargeDesktop\";\nimport { default as default725 } from \"./components/LargeDesktopSmall\";\nimport { default as default726 } from \"./components/LargeSize\";\nimport { default as default727 } from \"./components/LargeSizeSmall\";\nimport { default as default728 } from \"./components/Layers\";\nimport { default as default729 } from \"./components/LayersSmall\";\nimport { default as default730 } from \"./components/LayoutFourColumns\";\nimport { default as default731 } from \"./components/LayoutFourColumnsSmall\";\nimport { default as default732 } from \"./components/LayoutFull\";\nimport { default as default733 } from \"./components/LayoutFullSmall\";\nimport { default as default734 } from \"./components/LayoutGallery\";\nimport { default as default735 } from \"./components/LayoutGallerySmall\";\nimport { default as default736 } from \"./components/LayoutGalleryWithPanel\";\nimport { default as default737 } from \"./components/LayoutGalleryWithPanelSmall\";\nimport { default as default738 } from \"./components/LayoutGalleryWithPanelSparkles\";\nimport { default as default739 } from \"./components/LayoutGalleryWithPanelSparklesSmall\";\nimport { default as default740 } from \"./components/LayoutList\";\nimport { default as default741 } from \"./components/LayoutListSmall\";\nimport { default as default742 } from \"./components/LayoutListWithPanel\";\nimport { default as default743 } from \"./components/LayoutListWithPanelSmall\";\nimport { default as default744 } from \"./components/LayoutOneColumn\";\nimport { default as default745 } from \"./components/LayoutOneColumnSmall\";\nimport { default as default746 } from \"./components/LayoutSplit\";\nimport { default as default747 } from \"./components/LayoutSplitSmall\";\nimport { default as default748 } from \"./components/LayoutThird\";\nimport { default as default749 } from \"./components/LayoutThirdSmall\";\nimport { default as default750 } from \"./components/LayoutThreeColumns\";\nimport { default as default751 } from \"./components/LayoutThreeColumnsSmall\";\nimport { default as default752 } from \"./components/LayoutTwoColumns\";\nimport { default as default753 } from \"./components/LayoutTwoColumnsSmall\";\nimport { default as default754 } from \"./components/LayoutTwoColumnsSplit\";\nimport { default as default755 } from \"./components/LayoutTwoColumnsSplitSmall\";\nimport { default as default756 } from \"./components/LeftToRightText\";\nimport { default as default757 } from \"./components/LeftToRightTextSmall\";\nimport { default as default758 } from \"./components/Legal\";\nimport { default as default759 } from \"./components/LegalSmall\";\nimport { default as default760 } from \"./components/Library\";\nimport { default as default761 } from \"./components/LibrarySmall\";\nimport { default as default762 } from \"./components/LineChart\";\nimport { default as default763 } from \"./components/LineChartSmall\";\nimport { default as default764 } from \"./components/LineChartSplit\";\nimport { default as default765 } from \"./components/LineChartSplitSmall\";\nimport { default as default766 } from \"./components/LineCirclesFilled\";\nimport { default as default767 } from \"./components/LineCirclesFilledSmall\";\nimport { default as default768 } from \"./components/LineDifferentWidth\";\nimport { default as default769 } from \"./components/LineDifferentWidthSmall\";\nimport { default as default770 } from \"./components/LineDotted\";\nimport { default as default771 } from \"./components/LineDottedSmall\";\nimport { default as default772 } from \"./components/LineEndArrow\";\nimport { default as default773 } from \"./components/LineEndArrowSmall\";\nimport { default as default774 } from \"./components/LineEndCircle\";\nimport { default as default775 } from \"./components/LineEndCircleSmall\";\nimport { default as default776 } from \"./components/LineEndSquare\";\nimport { default as default777 } from \"./components/LineEndSquareSmall\";\nimport { default as default778 } from \"./components/LineTrianglesFilled\";\nimport { default as default779 } from \"./components/LineTrianglesFilledSmall\";\nimport { default as default780 } from \"./components/LineWarning\";\nimport { default as default781 } from \"./components/LineWarningSmall\";\nimport { default as default782 } from \"./components/Link\";\nimport { default as default783 } from \"./components/LinkBold\";\nimport { default as default784 } from \"./components/LinkBoldSmall\";\nimport { default as default785 } from \"./components/LinkSmall\";\nimport { default as default786 } from \"./components/LinkedIn\";\nimport { default as default787 } from \"./components/LinkedInSmall\";\nimport { default as default788 } from \"./components/List\";\nimport { default as default789 } from \"./components/ListSmall\";\nimport { default as default790 } from \"./components/Location\";\nimport { default as default791 } from \"./components/LocationSmall\";\nimport { default as default792 } from \"./components/LockLocked\";\nimport { default as default793 } from \"./components/LockLockedFilled\";\nimport { default as default794 } from \"./components/LockLockedFilledSmall\";\nimport { default as default795 } from \"./components/LockLockedSmall\";\nimport { default as default796 } from \"./components/LockUnlocked\";\nimport { default as default797 } from \"./components/LockUnlockedFilled\";\nimport { default as default798 } from \"./components/LockUnlockedFilledSmall\";\nimport { default as default799 } from \"./components/LockUnlockedSmall\";\nimport { default as default800 } from \"./components/LongText\";\nimport { default as default801 } from \"./components/LongTextSmall\";\nimport { default as default802 } from \"./components/LowerCase\";\nimport { default as default803 } from \"./components/LowerCaseSmall\";\nimport { default as default804 } from \"./components/LowercaseLight\";\nimport { default as default805 } from \"./components/LowercaseLightSmall\";\nimport { default as default806 } from \"./components/Loyalty\";\nimport { default as default807 } from \"./components/LoyaltySmall\";\nimport { default as default808 } from \"./components/Ltr\";\nimport { default as default809 } from \"./components/LtrSmall\";\nimport { default as default810 } from \"./components/MagicWand\";\nimport { default as default811 } from \"./components/MagicWandSmall\";\nimport { default as default812 } from \"./components/MagicWandSparkles\";\nimport { default as default813 } from \"./components/MagicWandSparklesSmall\";\nimport { default as default814 } from \"./components/Male\";\nimport { default as default815 } from \"./components/MaleSmall\";\nimport { default as default816 } from \"./components/ManagePhotos\";\nimport { default as default817 } from \"./components/ManagePhotosSmall\";\nimport { default as default818 } from \"./components/Map\";\nimport { default as default819 } from \"./components/MapSmall\";\nimport { default as default820 } from \"./components/MasonaryGrid\";\nimport { default as default821 } from \"./components/MasonaryGridSmall\";\nimport { default as default822 } from \"./components/Maximize\";\nimport { default as default823 } from \"./components/MaximizeSmall\";\nimport { default as default824 } from \"./components/MediaProofing\";\nimport { default as default825 } from \"./components/MediaProofingSmall\";\nimport { default as default826 } from \"./components/MediumSize\";\nimport { default as default827 } from \"./components/MediumSizeSmall\";\nimport { default as default828 } from \"./components/MegaMenu\";\nimport { default as default829 } from \"./components/MegaMenuSmall\";\nimport { default as default830 } from \"./components/Menu\";\nimport { default as default831 } from \"./components/MenuSmall\";\nimport { default as default832 } from \"./components/Merge\";\nimport { default as default833 } from \"./components/MergeCell\";\nimport { default as default834 } from \"./components/MergeCellSmall\";\nimport { default as default835 } from \"./components/MergeSmall\";\nimport { default as default836 } from \"./components/Messenger\";\nimport { default as default837 } from \"./components/MessengerSmall\";\nimport { default as default838 } from \"./components/Microphone\";\nimport { default as default839 } from \"./components/MicrophoneDisabled\";\nimport { default as default840 } from \"./components/MicrophoneDisabledSmall\";\nimport { default as default841 } from \"./components/MicrophoneSmall\";\nimport { default as default842 } from \"./components/Microsoft\";\nimport { default as default843 } from \"./components/Microsoft365\";\nimport { default as default844 } from \"./components/Microsoft365Small\";\nimport { default as default845 } from \"./components/MicrosoftSmall\";\nimport { default as default846 } from \"./components/Minimise\";\nimport { default as default847 } from \"./components/MinimiseSmall\";\nimport { default as default848 } from \"./components/Minus\";\nimport { default as default849 } from \"./components/MinusSmall\";\nimport { default as default850 } from \"./components/MirrorHorizontal\";\nimport { default as default851 } from \"./components/MirrorHorizontalSmall\";\nimport { default as default852 } from \"./components/MirrorVertical\";\nimport { default as default853 } from \"./components/MirrorVerticalSmall\";\nimport { default as default854 } from \"./components/Mobile\";\nimport { default as default855 } from \"./components/MobileHeader\";\nimport { default as default856 } from \"./components/MobileHeaderSmall\";\nimport { default as default857 } from \"./components/MobileSmall\";\nimport { default as default858 } from \"./components/ModalSmall\";\nimport { default as default859 } from \"./components/Moon\";\nimport { default as default860 } from \"./components/MoonFilled\";\nimport { default as default861 } from \"./components/MoonFilledSmall\";\nimport { default as default862 } from \"./components/MoonSmall\";\nimport { default as default863 } from \"./components/More\";\nimport { default as default864 } from \"./components/MoreFilled\";\nimport { default as default865 } from \"./components/MoreFilledSmall\";\nimport { default as default866 } from \"./components/MoreSmall\";\nimport { default as default867 } from \"./components/Move\";\nimport { default as default868 } from \"./components/MoveColumnLeft\";\nimport { default as default869 } from \"./components/MoveColumnLeftSmall\";\nimport { default as default870 } from \"./components/MoveColumnRight\";\nimport { default as default871 } from \"./components/MoveColumnRightSmall\";\nimport { default as default872 } from \"./components/MoveSmall\";\nimport { default as default873 } from \"./components/MoveTo\";\nimport { default as default874 } from \"./components/MoveToSmall\";\nimport { default as default875 } from \"./components/MultiRow\";\nimport { default as default876 } from \"./components/MultiRowSmall\";\nimport { default as default877 } from \"./components/MultiSelect\";\nimport { default as default878 } from \"./components/MultiSelectSmall\";\nimport { default as default879 } from \"./components/Multilingual\";\nimport { default as default880 } from \"./components/MultilingualSmall\";\nimport { default as default881 } from \"./components/MultipleChoices\";\nimport { default as default882 } from \"./components/MultipleChoicesSmall\";\nimport { default as default883 } from \"./components/Multireference\";\nimport { default as default884 } from \"./components/MultireferenceSmall\";\nimport { default as default885 } from \"./components/Music\";\nimport { default as default886 } from \"./components/MusicLibrary\";\nimport { default as default887 } from \"./components/MusicLibrarySmall\";\nimport { default as default888 } from \"./components/MusicSmall\";\nimport { default as default889 } from \"./components/Naver\";\nimport { default as default890 } from \"./components/NaverSmall\";\nimport { default as default891 } from \"./components/NewChat\";\nimport { default as default892 } from \"./components/NewChatSmall\";\nimport { default as default893 } from \"./components/NewFolder\";\nimport { default as default894 } from \"./components/NewFolderSmall\";\nimport { default as default895 } from \"./components/NewRelease\";\nimport { default as default896 } from \"./components/NewReleaseSmall\";\nimport { default as default897 } from \"./components/Newspaper\";\nimport { default as default898 } from \"./components/NewspaperSmall\";\nimport { default as default899 } from \"./components/Note\";\nimport { default as default900 } from \"./components/NoteSmall\";\nimport { default as default901 } from \"./components/Notification\";\nimport { default as default902 } from \"./components/NotificationSmall\";\nimport { default as default903 } from \"./components/NotificationsDisabled\";\nimport { default as default904 } from \"./components/NotificationsDisabledSmall\";\nimport { default as default905 } from \"./components/Number\";\nimport { default as default906 } from \"./components/NumberListThin\";\nimport { default as default907 } from \"./components/NumberListThinSmall\";\nimport { default as default908 } from \"./components/NumberSmall\";\nimport { default as default909 } from \"./components/NumberedList\";\nimport { default as default910 } from \"./components/ObjectPositionBottom\";\nimport { default as default911 } from \"./components/ObjectPositionBottomFilled\";\nimport { default as default912 } from \"./components/ObjectPositionBottomFilledSmall\";\nimport { default as default913 } from \"./components/ObjectPositionBottomSmall\";\nimport { default as default914 } from \"./components/ObjectPositionLeft\";\nimport { default as default915 } from \"./components/ObjectPositionLeftFilled\";\nimport { default as default916 } from \"./components/ObjectPositionLeftFilledSmall\";\nimport { default as default917 } from \"./components/ObjectPositionLeftSmall\";\nimport { default as default918 } from \"./components/ObjectPositionRight\";\nimport { default as default919 } from \"./components/ObjectPositionRightFilled\";\nimport { default as default920 } from \"./components/ObjectPositionRightFilledSmall\";\nimport { default as default921 } from \"./components/ObjectPositionRightSmall\";\nimport { default as default922 } from \"./components/ObjectPositionTop\";\nimport { default as default923 } from \"./components/ObjectPositionTopFilled\";\nimport { default as default924 } from \"./components/ObjectPositionTopFilledSmall\";\nimport { default as default925 } from \"./components/ObjectPositionTopSmall\";\nimport { default as default926 } from \"./components/ObjectSelectionTool\";\nimport { default as default927 } from \"./components/ObjectSelectionToolSmall\";\nimport { default as default928 } from \"./components/Objects\";\nimport { default as default929 } from \"./components/ObjectsSmall\";\nimport { default as default930 } from \"./components/OnlinePrograms\";\nimport { default as default931 } from \"./components/OnlineProgramsSmall\";\nimport { default as default932 } from \"./components/Opacity\";\nimport { default as default933 } from \"./components/OpacitySmall\";\nimport { default as default934 } from \"./components/OpenModal\";\nimport { default as default935 } from \"./components/OpenModalSmall\";\nimport { default as default936 } from \"./components/OptimizeImage\";\nimport { default as default937 } from \"./components/OptimizeImageSmall\";\nimport { default as default938 } from \"./components/Order\";\nimport { default as default939 } from \"./components/OrderAdd\";\nimport { default as default940 } from \"./components/OrderAddSmall\";\nimport { default as default941 } from \"./components/OrderFilled\";\nimport { default as default942 } from \"./components/OrderSmall\";\nimport { default as default943 } from \"./components/OrderSmallFilled\";\nimport { default as default944 } from \"./components/Organic\";\nimport { default as default945 } from \"./components/OrganicSmall\";\nimport { default as default946 } from \"./components/Overlay\";\nimport { default as default947 } from \"./components/OverlaySmall\";\nimport { default as default948 } from \"./components/Package\";\nimport { default as default949 } from \"./components/PackageSmall\";\nimport { default as default950 } from \"./components/PaddingBottom\";\nimport { default as default951 } from \"./components/PaddingBottomSmall\";\nimport { default as default952 } from \"./components/PaddingHorizontal\";\nimport { default as default953 } from \"./components/PaddingHorizontalSmall\";\nimport { default as default954 } from \"./components/PaddingLeft\";\nimport { default as default955 } from \"./components/PaddingLeftSmall\";\nimport { default as default956 } from \"./components/PaddingRight\";\nimport { default as default957 } from \"./components/PaddingRightSmall\";\nimport { default as default958 } from \"./components/PaddingTop\";\nimport { default as default959 } from \"./components/PaddingTopSmall\";\nimport { default as default960 } from \"./components/PaddingVertical\";\nimport { default as default961 } from \"./components/PaddingVerticalSmall\";\nimport { default as default962 } from \"./components/Page\";\nimport { default as default963 } from \"./components/PageAdd\";\nimport { default as default964 } from \"./components/PageAddSmall\";\nimport { default as default965 } from \"./components/PageCode\";\nimport { default as default966 } from \"./components/PageCodeSmall\";\nimport { default as default967 } from \"./components/PageSmall\";\nimport { default as default968 } from \"./components/PageSparkles\";\nimport { default as default969 } from \"./components/PageSparklesSmall\";\nimport { default as default970 } from \"./components/Pages\";\nimport { default as default971 } from \"./components/PagesSmall\";\nimport { default as default972 } from \"./components/PaidPlans\";\nimport { default as default973 } from \"./components/PaidPlansSell\";\nimport { default as default974 } from \"./components/PaidPlansSellSmall\";\nimport { default as default975 } from \"./components/PaidPlansSmall\";\nimport { default as default976 } from \"./components/PanTool\";\nimport { default as default977 } from \"./components/PanToolSmall\";\nimport { default as default978 } from \"./components/Passkey\";\nimport { default as default979 } from \"./components/PasskeySmall\";\nimport { default as default980 } from \"./components/Pause\";\nimport { default as default981 } from \"./components/PauseFilled\";\nimport { default as default982 } from \"./components/PauseFilledSmall\";\nimport { default as default983 } from \"./components/PauseSmall\";\nimport { default as default984 } from \"./components/Payment\";\nimport { default as default985 } from \"./components/PaymentSmall\";\nimport { default as default986 } from \"./components/PenNib\";\nimport { default as default987 } from \"./components/PenNibAdd\";\nimport { default as default988 } from \"./components/PenNibAddSmall\";\nimport { default as default989 } from \"./components/PenNibSmall\";\nimport { default as default990 } from \"./components/Perplexity\";\nimport { default as default991 } from \"./components/PerplexitySmall\";\nimport { default as default992 } from \"./components/Phone\";\nimport { default as default993 } from \"./components/PhoneFilled\";\nimport { default as default994 } from \"./components/PhoneFilledSmall\";\nimport { default as default995 } from \"./components/PhoneSmall\";\nimport { default as default996 } from \"./components/PhotoAlbums\";\nimport { default as default997 } from \"./components/PhotoAlbumsSmall\";\nimport { default as default998 } from \"./components/PhotoCamera\";\nimport { default as default999 } from \"./components/PhotoCameraSmall\";\nimport { default as default1000 } from \"./components/PieChart\";\nimport { default as default1001 } from \"./components/PieChartSlice\";\nimport { default as default1002 } from \"./components/PieChartSliceSmall\";\nimport { default as default1003 } from \"./components/PieChartSmall\";\nimport { default as default1004 } from \"./components/Pin\";\nimport { default as default1005 } from \"./components/PinFilled\";\nimport { default as default1006 } from \"./components/PinFilledSmall\";\nimport { default as default1007 } from \"./components/PinSmall\";\nimport { default as default1008 } from \"./components/Pinterest\";\nimport { default as default1009 } from \"./components/PinterestSmall\";\nimport { default as default1010 } from \"./components/Pipette\";\nimport { default as default1011 } from \"./components/PipetteSmall\";\nimport { default as default1012 } from \"./components/Plant\";\nimport { default as default1013 } from \"./components/PlantSmall\";\nimport { default as default1014 } from \"./components/Play\";\nimport { default as default1015 } from \"./components/PlayFilled\";\nimport { default as default1016 } from \"./components/PlayFilledSmall\";\nimport { default as default1017 } from \"./components/PlaySmall\";\nimport { default as default1018 } from \"./components/PlayingCards\";\nimport { default as default1019 } from \"./components/PlayingCardsSmall\";\nimport { default as default1020 } from \"./components/Portfolio\";\nimport { default as default1021 } from \"./components/PortfolioSmall\";\nimport { default as default1022 } from \"./components/Power\";\nimport { default as default1023 } from \"./components/PowerSmall\";\nimport { default as default1024 } from \"./components/Premium\";\nimport { default as default1025 } from \"./components/PremiumFilled\";\nimport { default as default1026 } from \"./components/PremiumFilledSmall\";\nimport { default as default1027 } from \"./components/PremiumMove\";\nimport { default as default1028 } from \"./components/PremiumMoveSmall\";\nimport { default as default1029 } from \"./components/PremiumSmall\";\nimport { default as default1030 } from \"./components/Preview\";\nimport { default as default1031 } from \"./components/PreviewSmall\";\nimport { default as default1032 } from \"./components/Print\";\nimport { default as default1033 } from \"./components/PrintFilled\";\nimport { default as default1034 } from \"./components/PrintFilledSmall\";\nimport { default as default1035 } from \"./components/PrintSmall\";\nimport { default as default1036 } from \"./components/ProGalleries\";\nimport { default as default1037 } from \"./components/ProGalleriesSmall\";\nimport { default as default1038 } from \"./components/Promote\";\nimport { default as default1039 } from \"./components/PromoteFilled\";\nimport { default as default1040 } from \"./components/PromoteFilledSmall\";\nimport { default as default1041 } from \"./components/PromoteSmall\";\nimport { default as default1042 } from \"./components/Public\";\nimport { default as default1043 } from \"./components/PublicSmall\";\nimport { default as default1044 } from \"./components/Publish\";\nimport { default as default1045 } from \"./components/PublishSmall\";\nimport { default as default1046 } from \"./components/QR\";\nimport { default as default1047 } from \"./components/QRSmall\";\nimport { default as default1048 } from \"./components/QuarterCircleBottom\";\nimport { default as default1049 } from \"./components/QuarterCircleBottomFilled\";\nimport { default as default1050 } from \"./components/QuarterCircleBottomFilledSmall\";\nimport { default as default1051 } from \"./components/QuarterCircleBottomSmall\";\nimport { default as default1052 } from \"./components/QuarterCircleTop\";\nimport { default as default1053 } from \"./components/QuarterCircleTopFilled\";\nimport { default as default1054 } from \"./components/QuarterCircleTopFilledSmall\";\nimport { default as default1055 } from \"./components/QuarterCircleTopSmall\";\nimport { default as default1056 } from \"./components/QuickAccess\";\nimport { default as default1057 } from \"./components/QuickAccessSmall\";\nimport { default as default1058 } from \"./components/QuickFormat\";\nimport { default as default1059 } from \"./components/QuickFormatSmall\";\nimport { default as default1060 } from \"./components/Quote\";\nimport { default as default1061 } from \"./components/QuoteFilled\";\nimport { default as default1062 } from \"./components/QuoteFilledSmall\";\nimport { default as default1063 } from \"./components/QuoteSmall\";\nimport { default as default1064 } from \"./components/RadioButtonGroup\";\nimport { default as default1065 } from \"./components/RadioButtonGroupSmall\";\nimport { default as default1066 } from \"./components/Receipt\";\nimport { default as default1067 } from \"./components/ReceiptSmall\";\nimport { default as default1068 } from \"./components/RectangleLarge\";\nimport { default as default1069 } from \"./components/RectangleLargeSmall\";\nimport { default as default1070 } from \"./components/RecurringPayment\";\nimport { default as default1071 } from \"./components/RecurringPaymentSmall\";\nimport { default as default1072 } from \"./components/Reddit\";\nimport { default as default1073 } from \"./components/RedditSmall\";\nimport { default as default1074 } from \"./components/Redo\";\nimport { default as default1075 } from \"./components/RedoSmall\";\nimport { default as default1076 } from \"./components/Reels\";\nimport { default as default1077 } from \"./components/ReelsSmall\";\nimport { default as default1078 } from \"./components/Reference\";\nimport { default as default1079 } from \"./components/ReferenceSmall\";\nimport { default as default1080 } from \"./components/Refresh\";\nimport { default as default1081 } from \"./components/RefreshSmall\";\nimport { default as default1082 } from \"./components/Refund\";\nimport { default as default1083 } from \"./components/RefundSmall\";\nimport { default as default1084 } from \"./components/RegenerateSparkle\";\nimport { default as default1085 } from \"./components/RegenerateSparkleSmall\";\nimport { default as default1086 } from \"./components/RelatedApps\";\nimport { default as default1087 } from \"./components/RelatedAppsSmall\";\nimport { default as default1088 } from \"./components/Rename\";\nimport { default as default1089 } from \"./components/RenameSmall\";\nimport { default as default1090 } from \"./components/RepeaterVertical\";\nimport { default as default1091 } from \"./components/RepeaterVerticalSmall\";\nimport { default as default1092 } from \"./components/Replace\";\nimport { default as default1093 } from \"./components/ReplaceSmall\";\nimport { default as default1094 } from \"./components/Required\";\nimport { default as default1095 } from \"./components/RequiredSmall\";\nimport { default as default1096 } from \"./components/RestaurantsOrders\";\nimport { default as default1097 } from \"./components/RestaurantsOrdersSmall\";\nimport { default as default1098 } from \"./components/Revert\";\nimport { default as default1099 } from \"./components/RevertClockwise\";\nimport { default as default1100 } from \"./components/RevertClockwiseSmall\";\nimport { default as default1101 } from \"./components/RevertReset\";\nimport { default as default1102 } from \"./components/RevertSmall\";\nimport { default as default1103 } from \"./components/Reviews\";\nimport { default as default1104 } from \"./components/ReviewsSmall\";\nimport { default as default1105 } from \"./components/RichText\";\nimport { default as default1106 } from \"./components/RichTextSmall\";\nimport { default as default1107 } from \"./components/RightToLeftText\";\nimport { default as default1108 } from \"./components/RightToLeftTextSmall\";\nimport { default as default1109 } from \"./components/RotateLeft\";\nimport { default as default1110 } from \"./components/RotateLeftSmall\";\nimport { default as default1111 } from \"./components/RotateRight\";\nimport { default as default1112 } from \"./components/RotateRightSmall\";\nimport { default as default1113 } from \"./components/RoundCorner\";\nimport { default as default1114 } from \"./components/RoundCornerSmall\";\nimport { default as default1115 } from \"./components/RoundedCorner\";\nimport { default as default1116 } from \"./components/RoundedCornerBottomLeft\";\nimport { default as default1117 } from \"./components/RoundedCornerBottomLeftSmall\";\nimport { default as default1118 } from \"./components/RoundedCornerBottomRight\";\nimport { default as default1119 } from \"./components/RoundedCornerBottomRightSmall\";\nimport { default as default1120 } from \"./components/RoundedCornerSmall\";\nimport { default as default1121 } from \"./components/RoundedCornerTopLeft\";\nimport { default as default1122 } from \"./components/RoundedCornerTopLeftSmall\";\nimport { default as default1123 } from \"./components/Rtl\";\nimport { default as default1124 } from \"./components/RtlSmall\";\nimport { default as default1125 } from \"./components/Rule\";\nimport { default as default1126 } from \"./components/RuleSmall\";\nimport { default as default1127 } from \"./components/SaleChannels\";\nimport { default as default1128 } from \"./components/SaleChannelsSmall\";\nimport { default as default1129 } from \"./components/Saturation\";\nimport { default as default1130 } from \"./components/SaturationSmall\";\nimport { default as default1131 } from \"./components/Saved\";\nimport { default as default1132 } from \"./components/SavedSmall\";\nimport { default as default1133 } from \"./components/Scenery\";\nimport { default as default1134 } from \"./components/ScenerySmall\";\nimport { default as default1135 } from \"./components/Search\";\nimport { default as default1136 } from \"./components/SearchCode\";\nimport { default as default1137 } from \"./components/SearchCodeSmall\";\nimport { default as default1138 } from \"./components/SearchSmall\";\nimport { default as default1139 } from \"./components/SearchSparkles\";\nimport { default as default1140 } from \"./components/SearchSparklesSmall\";\nimport { default as default1141 } from \"./components/SeatRow\";\nimport { default as default1142 } from \"./components/SeatRowCurved\";\nimport { default as default1143 } from \"./components/SeatRowCurvedSmall\";\nimport { default as default1144 } from \"./components/SeatRowSmall\";\nimport { default as default1145 } from \"./components/SeatSelectionTool\";\nimport { default as default1146 } from \"./components/SeatSelectionToolSmall\";\nimport { default as default1147 } from \"./components/SectionLayout\";\nimport { default as default1148 } from \"./components/SectionSparkles\";\nimport { default as default1149 } from \"./components/SectionSparklesSmall\";\nimport { default as default1150 } from \"./components/SelectedTag\";\nimport { default as default1151 } from \"./components/SelectedTagSmall\";\nimport { default as default1152 } from \"./components/SelectionTool\";\nimport { default as default1153 } from \"./components/SelectionToolSmall\";\nimport { default as default1154 } from \"./components/SemiCircleBottom\";\nimport { default as default1155 } from \"./components/SemiCircleBottomFilled\";\nimport { default as default1156 } from \"./components/SemiCircleBottomFilledSmall\";\nimport { default as default1157 } from \"./components/SemiCircleBottomSmall\";\nimport { default as default1158 } from \"./components/SemiCircleTop\";\nimport { default as default1159 } from \"./components/SemiCircleTopFilled\";\nimport { default as default1160 } from \"./components/SemiCircleTopFilledSmall\";\nimport { default as default1161 } from \"./components/SemiCircleTopSmall\";\nimport { default as default1162 } from \"./components/Send\";\nimport { default as default1163 } from \"./components/SendSmall\";\nimport { default as default1164 } from \"./components/SentenceCase\";\nimport { default as default1165 } from \"./components/SentenceCaseSmall\";\nimport { default as default1166 } from \"./components/SentencecaseLight\";\nimport { default as default1167 } from \"./components/SentencecaseLightSmall\";\nimport { default as default1168 } from \"./components/Server\";\nimport { default as default1169 } from \"./components/ServerSmall\";\nimport { default as default1170 } from \"./components/Settings\";\nimport { default as default1171 } from \"./components/SettingsSmall\";\nimport { default as default1172 } from \"./components/Shadows\";\nimport { default as default1173 } from \"./components/ShadowsSmall\";\nimport { default as default1174 } from \"./components/Share\";\nimport { default as default1175 } from \"./components/ShareSmall\";\nimport { default as default1176 } from \"./components/Sharpness\";\nimport { default as default1177 } from \"./components/SharpnessSmall\";\nimport { default as default1178 } from \"./components/Shipping\";\nimport { default as default1179 } from \"./components/ShippingSmall\";\nimport { default as default1180 } from \"./components/ShortText\";\nimport { default as default1181 } from \"./components/ShortTextSmall\";\nimport { default as default1182 } from \"./components/ShowSidebar\";\nimport { default as default1183 } from \"./components/ShowSidebarSmall\";\nimport { default as default1184 } from \"./components/Shuffle\";\nimport { default as default1185 } from \"./components/ShuffleSmall\";\nimport { default as default1186 } from \"./components/Shutterstock\";\nimport { default as default1187 } from \"./components/ShutterstockSmall\";\nimport { default as default1188 } from \"./components/SidebarDock\";\nimport { default as default1189 } from \"./components/SidebarDockSmall\";\nimport { default as default1190 } from \"./components/SidebarUndock\";\nimport { default as default1191 } from \"./components/SidebarUndockSmall\";\nimport { default as default1192 } from \"./components/Site\";\nimport { default as default1193 } from \"./components/SiteAdd\";\nimport { default as default1194 } from \"./components/SiteAddSmall\";\nimport { default as default1195 } from \"./components/SiteApp\";\nimport { default as default1196 } from \"./components/SiteAppSmall\";\nimport { default as default1197 } from \"./components/SiteContent\";\nimport { default as default1198 } from \"./components/SiteContentSmall\";\nimport { default as default1199 } from \"./components/SiteDuplicate\";\nimport { default as default1200 } from \"./components/SiteDuplicateSmall\";\nimport { default as default1201 } from \"./components/SiteMap\";\nimport { default as default1202 } from \"./components/SiteMapSmall\";\nimport { default as default1203 } from \"./components/SiteMove\";\nimport { default as default1204 } from \"./components/SiteMoveSmall\";\nimport { default as default1205 } from \"./components/SiteSearch\";\nimport { default as default1206 } from \"./components/SiteSearchSmall\";\nimport { default as default1207 } from \"./components/SiteSmall\";\nimport { default as default1208 } from \"./components/SizeAndRatio\";\nimport { default as default1209 } from \"./components/SizeAndRatioSmall\";\nimport { default as default1210 } from \"./components/Slack\";\nimport { default as default1211 } from \"./components/SlackSmall\";\nimport { default as default1212 } from \"./components/Slider\";\nimport { default as default1213 } from \"./components/SliderSmall\";\nimport { default as default1214 } from \"./components/SmallSize\";\nimport { default as default1215 } from \"./components/SmallSizeSmall\";\nimport { default as default1216 } from \"./components/Smile\";\nimport { default as default1217 } from \"./components/SmileSmall\";\nimport { default as default1218 } from \"./components/Smoking\";\nimport { default as default1219 } from \"./components/SmokingSmall\";\nimport { default as default1220 } from \"./components/Snapchat\";\nimport { default as default1221 } from \"./components/SnapchatSmall\";\nimport { default as default1222 } from \"./components/SocialStory\";\nimport { default as default1223 } from \"./components/SocialStorySmall\";\nimport { default as default1224 } from \"./components/SortAZ\";\nimport { default as default1225 } from \"./components/SortAZSmall\";\nimport { default as default1226 } from \"./components/SortAscending\";\nimport { default as default1227 } from \"./components/SortAscendingSmall\";\nimport { default as default1228 } from \"./components/SortDescending\";\nimport { default as default1229 } from \"./components/SortDescendingSmall\";\nimport { default as default1230 } from \"./components/SortFalseTrue\";\nimport { default as default1231 } from \"./components/SortFalseTrueSmall\";\nimport { default as default1232 } from \"./components/SortTrueFalse\";\nimport { default as default1233 } from \"./components/SortTrueFalseSmall\";\nimport { default as default1234 } from \"./components/SortZA\";\nimport { default as default1235 } from \"./components/SortZASmall\";\nimport { default as default1236 } from \"./components/Sound\";\nimport { default as default1237 } from \"./components/SoundCloud\";\nimport { default as default1238 } from \"./components/SoundCloudSmall\";\nimport { default as default1239 } from \"./components/SoundOff\";\nimport { default as default1240 } from \"./components/SoundOffSmall\";\nimport { default as default1241 } from \"./components/SoundSmall\";\nimport { default as default1242 } from \"./components/Sparkles\";\nimport { default as default1243 } from \"./components/SparklesFilled\";\nimport { default as default1244 } from \"./components/SparklesFilledSmall\";\nimport { default as default1245 } from \"./components/SparklesSmall\";\nimport { default as default1246 } from \"./components/Spicy\";\nimport { default as default1247 } from \"./components/SpicySmall\";\nimport { default as default1248 } from \"./components/SplitCell\";\nimport { default as default1249 } from \"./components/SplitCellSmall\";\nimport { default as default1250 } from \"./components/SplitPath\";\nimport { default as default1251 } from \"./components/SplitPathSmall\";\nimport { default as default1252 } from \"./components/Spotify\";\nimport { default as default1253 } from \"./components/SpotifySmall\";\nimport { default as default1254 } from \"./components/SquareCorner\";\nimport { default as default1255 } from \"./components/SquareCornerSmall\";\nimport { default as default1256 } from \"./components/SquareRatio\";\nimport { default as default1257 } from \"./components/SquareRatioChecked\";\nimport { default as default1258 } from \"./components/SquareRatioCheckedSmall\";\nimport { default as default1259 } from \"./components/SquareRatioSmall\";\nimport { default as default1260 } from \"./components/StackHorizontal\";\nimport { default as default1261 } from \"./components/StackHorizontalSmall\";\nimport { default as default1262 } from \"./components/StackVertical\";\nimport { default as default1263 } from \"./components/StackVerticalSmall\";\nimport { default as default1264 } from \"./components/Staff\";\nimport { default as default1265 } from \"./components/StaffSmall\";\nimport { default as default1266 } from \"./components/Stage\";\nimport { default as default1267 } from \"./components/StageSmall\";\nimport { default as default1268 } from \"./components/Stairs\";\nimport { default as default1269 } from \"./components/StairsSmall\";\nimport { default as default1270 } from \"./components/StandingArea\";\nimport { default as default1271 } from \"./components/StandingAreaSmall\";\nimport { default as default1272 } from \"./components/Star\";\nimport { default as default1273 } from \"./components/StarFilled\";\nimport { default as default1274 } from \"./components/Statistics\";\nimport { default as default1275 } from \"./components/StatisticsHorizontal\";\nimport { default as default1276 } from \"./components/StatisticsHorizontalSmall\";\nimport { default as default1277 } from \"./components/StatisticsSmall\";\nimport { default as default1278 } from \"./components/StatusAlert\";\nimport { default as default1279 } from \"./components/StatusAlertFilled\";\nimport { default as default1280 } from \"./components/StatusAlertFilledSmall\";\nimport { default as default1281 } from \"./components/StatusAlertPlain\";\nimport { default as default1282 } from \"./components/StatusAlertPlainSmall\";\nimport { default as default1283 } from \"./components/StatusAlertSmall\";\nimport { default as default1284 } from \"./components/StatusComplete\";\nimport { default as default1285 } from \"./components/StatusCompleteFilled\";\nimport { default as default1286 } from \"./components/StatusCompleteFilledSmall\";\nimport { default as default1287 } from \"./components/StatusCompleteSmall\";\nimport { default as default1288 } from \"./components/StatusCompleteSparkle\";\nimport { default as default1289 } from \"./components/StatusCompleteSparkleSmall\";\nimport { default as default1290 } from \"./components/StatusCompletetFilled\";\nimport { default as default1291 } from \"./components/StatusDenied\";\nimport { default as default1292 } from \"./components/StatusDeniedFilled\";\nimport { default as default1293 } from \"./components/StatusDeniedFilledSmall\";\nimport { default as default1294 } from \"./components/StatusDeniedSmall\";\nimport { default as default1295 } from \"./components/StatusIndeterminate\";\nimport { default as default1296 } from \"./components/StatusIndeterminateFilled\";\nimport { default as default1297 } from \"./components/StatusIndeterminateFilledSmall\";\nimport { default as default1298 } from \"./components/StatusIndeterminateSmall\";\nimport { default as default1299 } from \"./components/StatusStop\";\nimport { default as default1300 } from \"./components/StatusStopFilled\";\nimport { default as default1301 } from \"./components/StatusStopFilledSmall\";\nimport { default as default1302 } from \"./components/StatusStopSmall\";\nimport { default as default1303 } from \"./components/StatusWarning\";\nimport { default as default1304 } from \"./components/StatusWarningFilled\";\nimport { default as default1305 } from \"./components/StatusWarningFilledSmall\";\nimport { default as default1306 } from \"./components/StatusWarningSmall\";\nimport { default as default1307 } from \"./components/Stop\";\nimport { default as default1308 } from \"./components/StopFilled\";\nimport { default as default1309 } from \"./components/StopFilledSmall\";\nimport { default as default1310 } from \"./components/StopSmall\";\nimport { default as default1311 } from \"./components/StretchContent\";\nimport { default as default1312 } from \"./components/StretchContentSmall\";\nimport { default as default1313 } from \"./components/Strikethrough\";\nimport { default as default1314 } from \"./components/StrikethroughLight\";\nimport { default as default1315 } from \"./components/StrikethroughLightSmall\";\nimport { default as default1316 } from \"./components/Styles\";\nimport { default as default1317 } from \"./components/StylesSmall\";\nimport { default as default1318 } from \"./components/Substract\";\nimport { default as default1319 } from \"./components/SubstractSmall\";\nimport { default as default1320 } from \"./components/TS\";\nimport { default as default1321 } from \"./components/TSSmall\";\nimport { default as default1322 } from \"./components/TShirt\";\nimport { default as default1323 } from \"./components/TShirtSmall\";\nimport { default as default1324 } from \"./components/TableChart\";\nimport { default as default1325 } from \"./components/TableChartCol\";\nimport { default as default1326 } from \"./components/TableChartColRow\";\nimport { default as default1327 } from \"./components/TableChartColRowSmall\";\nimport { default as default1328 } from \"./components/TableChartColSmall\";\nimport { default as default1329 } from \"./components/TableChartRow\";\nimport { default as default1330 } from \"./components/TableChartRowSmall\";\nimport { default as default1331 } from \"./components/TableChartSmall\";\nimport { default as default1332 } from \"./components/TableReservation\";\nimport { default as default1333 } from \"./components/TableReservationSmall\";\nimport { default as default1334 } from \"./components/TableRound\";\nimport { default as default1335 } from \"./components/TableRoundSmall\";\nimport { default as default1336 } from \"./components/TableSquare\";\nimport { default as default1337 } from \"./components/TableSquareSmall\";\nimport { default as default1338 } from \"./components/Tablet\";\nimport { default as default1339 } from \"./components/TabletSmall\";\nimport { default as default1340 } from \"./components/Tag\";\nimport { default as default1341 } from \"./components/TagSmall\";\nimport { default as default1342 } from \"./components/TaskAdd\";\nimport { default as default1343 } from \"./components/TaskAddSmall\";\nimport { default as default1344 } from \"./components/TaskArchiveSmall\";\nimport { default as default1345 } from \"./components/TaskComplete\";\nimport { default as default1346 } from \"./components/TaskCompleteSmall\";\nimport { default as default1347 } from \"./components/Tax\";\nimport { default as default1348 } from \"./components/TaxSmall\";\nimport { default as default1349 } from \"./components/Temperature\";\nimport { default as default1350 } from \"./components/TemperatureSmall\";\nimport { default as default1351 } from \"./components/Template\";\nimport { default as default1352 } from \"./components/TemplateSmall\";\nimport { default as default1353 } from \"./components/Terminal\";\nimport { default as default1354 } from \"./components/TerminalSmall\";\nimport { default as default1355 } from \"./components/Text\";\nimport { default as default1356 } from \"./components/TextAlignCenter\";\nimport { default as default1357 } from \"./components/TextAlignCenterLight\";\nimport { default as default1358 } from \"./components/TextAlignCenterLightSmall\";\nimport { default as default1359 } from \"./components/TextAlignCenterSmall\";\nimport { default as default1360 } from \"./components/TextAlignLeft\";\nimport { default as default1361 } from \"./components/TextAlignLeftLight\";\nimport { default as default1362 } from \"./components/TextAlignLeftLightSmall\";\nimport { default as default1363 } from \"./components/TextAlignLeftSmall\";\nimport { default as default1364 } from \"./components/TextAlignRight\";\nimport { default as default1365 } from \"./components/TextAlignRightLight\";\nimport { default as default1366 } from \"./components/TextAlignRightLightSmall\";\nimport { default as default1367 } from \"./components/TextAlignRightSmall\";\nimport { default as default1368 } from \"./components/TextColor\";\nimport { default as default1369 } from \"./components/TextColorLight\";\nimport { default as default1370 } from \"./components/TextColorLightSmall\";\nimport { default as default1371 } from \"./components/TextColorSmall\";\nimport { default as default1372 } from \"./components/TextFilled\";\nimport { default as default1373 } from \"./components/TextFilledSmall\";\nimport { default as default1374 } from \"./components/TextHighlightColor\";\nimport { default as default1375 } from \"./components/TextHighlightColorLight\";\nimport { default as default1376 } from \"./components/TextHighlightColorLightSmall\";\nimport { default as default1377 } from \"./components/TextJustify\";\nimport { default as default1378 } from \"./components/TextJustifySmall\";\nimport { default as default1379 } from \"./components/TextLengthLight\";\nimport { default as default1380 } from \"./components/TextLengthLightSmall\";\nimport { default as default1381 } from \"./components/TextLineSpacing\";\nimport { default as default1382 } from \"./components/TextLineSpacingSmall\";\nimport { default as default1383 } from \"./components/TextRemove\";\nimport { default as default1384 } from \"./components/TextRemoveFilled\";\nimport { default as default1385 } from \"./components/TextRemoveSmall\";\nimport { default as default1386 } from \"./components/TextSmall\";\nimport { default as default1387 } from \"./components/TextSparkles\";\nimport { default as default1388 } from \"./components/TextSparklesSmall\";\nimport { default as default1389 } from \"./components/TextStrokeColor\";\nimport { default as default1390 } from \"./components/TextStrokeColorLight\";\nimport { default as default1391 } from \"./components/TextStyles\";\nimport { default as default1392 } from \"./components/TextStylesSmall\";\nimport { default as default1393 } from \"./components/ThreeFourRatio\";\nimport { default as default1394 } from \"./components/ThreeFourRatioSmall\";\nimport { default as default1395 } from \"./components/Thumbnails\";\nimport { default as default1396 } from \"./components/ThumbnailsSmall\";\nimport { default as default1397 } from \"./components/ThumbsDown\";\nimport { default as default1398 } from \"./components/ThumbsDownFilled\";\nimport { default as default1399 } from \"./components/ThumbsDownFilledSmall\";\nimport { default as default1400 } from \"./components/ThumbsDownSmall\";\nimport { default as default1401 } from \"./components/ThumbsUp\";\nimport { default as default1402 } from \"./components/ThumbsUpFilled\";\nimport { default as default1403 } from \"./components/ThumbsUpFilledSmall\";\nimport { default as default1404 } from \"./components/ThumbsUpSmall\";\nimport { default as default1405 } from \"./components/TicketDuplicate\";\nimport { default as default1406 } from \"./components/TicketDuplicateSmall\";\nimport { default as default1407 } from \"./components/TikTok\";\nimport { default as default1408 } from \"./components/TikTokSmall\";\nimport { default as default1409 } from \"./components/Time\";\nimport { default as default1410 } from \"./components/TimeSmall\";\nimport { default as default1411 } from \"./components/Timer\";\nimport { default as default1412 } from \"./components/TimerSmall\";\nimport { default as default1413 } from \"./components/Toggle\";\nimport { default as default1414 } from \"./components/ToggleSmall\";\nimport { default as default1415 } from \"./components/Token\";\nimport { default as default1416 } from \"./components/TokenSmall\";\nimport { default as default1417 } from \"./components/Toolbox\";\nimport { default as default1418 } from \"./components/ToolboxSmall\";\nimport { default as default1419 } from \"./components/Transfer\";\nimport { default as default1420 } from \"./components/TransferSmall\";\nimport { default as default1421 } from \"./components/TransformSmall\";\nimport { default as default1422 } from \"./components/TriangleLarge\";\nimport { default as default1423 } from \"./components/TriangleLargeSmall\";\nimport { default as default1424 } from \"./components/Twitch\";\nimport { default as default1425 } from \"./components/TwitchSmall\";\nimport { default as default1426 } from \"./components/Twitter\";\nimport { default as default1427 } from \"./components/TwitterSmall\";\nimport { default as default1428 } from \"./components/Unarchive\";\nimport { default as default1429 } from \"./components/UnarchiveSmall\";\nimport { default as default1430 } from \"./components/Underline\";\nimport { default as default1431 } from \"./components/UnderlineLight\";\nimport { default as default1432 } from \"./components/UnderlineLightSmall\";\nimport { default as default1433 } from \"./components/UnderlineSmall\";\nimport { default as default1434 } from \"./components/Undo\";\nimport { default as default1435 } from \"./components/UndoFilled\";\nimport { default as default1436 } from \"./components/UndoFilledSmall\";\nimport { default as default1437 } from \"./components/UndoSmall\";\nimport { default as default1438 } from \"./components/Union\";\nimport { default as default1439 } from \"./components/UnionSmall\";\nimport { default as default1440 } from \"./components/Unlink\";\nimport { default as default1441 } from \"./components/UnlinkSmall\";\nimport { default as default1442 } from \"./components/Unsaved\";\nimport { default as default1443 } from \"./components/UnsavedSmall\";\nimport { default as default1444 } from \"./components/Update\";\nimport { default as default1445 } from \"./components/UpdateSmall\";\nimport { default as default1446 } from \"./components/Upload\";\nimport { default as default1447 } from \"./components/UploadExport\";\nimport { default as default1448 } from \"./components/UploadExportSmall\";\nimport { default as default1449 } from \"./components/UpperCase\";\nimport { default as default1450 } from \"./components/UpperCaseSmall\";\nimport { default as default1451 } from \"./components/UppercaseLight\";\nimport { default as default1452 } from \"./components/UppercaseLightSmall\";\nimport { default as default1453 } from \"./components/User\";\nimport { default as default1454 } from \"./components/UserAdd\";\nimport { default as default1455 } from \"./components/UserAddSmall\";\nimport { default as default1456 } from \"./components/UserBlock\";\nimport { default as default1457 } from \"./components/UserBlockSmall\";\nimport { default as default1458 } from \"./components/UserChecked\";\nimport { default as default1459 } from \"./components/UserCheckedSmall\";\nimport { default as default1460 } from \"./components/UserFilled\";\nimport { default as default1461 } from \"./components/UserFilledSmall\";\nimport { default as default1462 } from \"./components/UserJoin\";\nimport { default as default1463 } from \"./components/UserJoinSmall\";\nimport { default as default1464 } from \"./components/UserLeave\";\nimport { default as default1465 } from \"./components/UserLeaveSmall\";\nimport { default as default1466 } from \"./components/UserName\";\nimport { default as default1467 } from \"./components/UserNameSmall\";\nimport { default as default1468 } from \"./components/UserRemove\";\nimport { default as default1469 } from \"./components/UserRemoveSmall\";\nimport { default as default1470 } from \"./components/UserSearch\";\nimport { default as default1471 } from \"./components/UserSearchSmall\";\nimport { default as default1472 } from \"./components/UserSmall\";\nimport { default as default1473 } from \"./components/Users\";\nimport { default as default1474 } from \"./components/UsersSmall\";\nimport { default as default1475 } from \"./components/Variable\";\nimport { default as default1476 } from \"./components/VariableSmall\";\nimport { default as default1477 } from \"./components/Vegan\";\nimport { default as default1478 } from \"./components/VeganSmall\";\nimport { default as default1479 } from \"./components/Vegetarian\";\nimport { default as default1480 } from \"./components/VegetarianSmall\";\nimport { default as default1481 } from \"./components/VerticalKerning\";\nimport { default as default1482 } from \"./components/VerticalKerningSmall\";\nimport { default as default1483 } from \"./components/VerticalMenu\";\nimport { default as default1484 } from \"./components/VerticalMenuSmall\";\nimport { default as default1485 } from \"./components/VerticalRatio\";\nimport { default as default1486 } from \"./components/VerticalRatioChecked\";\nimport { default as default1487 } from \"./components/VerticalRatioCheckedSmall\";\nimport { default as default1488 } from \"./components/VerticalRatioSmall\";\nimport { default as default1489 } from \"./components/VerticalTextLight\";\nimport { default as default1490 } from \"./components/VerticalTextLightSmall\";\nimport { default as default1491 } from \"./components/VideoCamera\";\nimport { default as default1492 } from \"./components/VideoCameraDisabled\";\nimport { default as default1493 } from \"./components/VideoCameraDisabledSmall\";\nimport { default as default1494 } from \"./components/VideoCameraSmall\";\nimport { default as default1495 } from \"./components/VideoCameraSparkles\";\nimport { default as default1496 } from \"./components/VideoCameraSparklesSmall\";\nimport { default as default1497 } from \"./components/VideoLibrary\";\nimport { default as default1498 } from \"./components/VideoLibrarySmall\";\nimport { default as default1499 } from \"./components/ViewExternal\";\nimport { default as default1500 } from \"./components/ViewExternalSmall\";\nimport { default as default1501 } from \"./components/Vignette\";\nimport { default as default1502 } from \"./components/VignetteSmall\";\nimport { default as default1503 } from \"./components/Vimeo\";\nimport { default as default1504 } from \"./components/VimeoSmall\";\nimport { default as default1505 } from \"./components/VisibileHidden\";\nimport { default as default1506 } from \"./components/Visible\";\nimport { default as default1507 } from \"./components/VisibleSmall\";\nimport { default as default1508 } from \"./components/VoiceAssistant\";\nimport { default as default1509 } from \"./components/VoiceAssistantSmall\";\nimport { default as default1510 } from \"./components/Volume\";\nimport { default as default1511 } from \"./components/VolumeSmall\";\nimport { default as default1512 } from \"./components/Waitlist\";\nimport { default as default1513 } from \"./components/WaitlistSmall\";\nimport { default as default1514 } from \"./components/Waveform\";\nimport { default as default1515 } from \"./components/WaveformSmall\";\nimport { default as default1516 } from \"./components/Wc\";\nimport { default as default1517 } from \"./components/WcMen\";\nimport { default as default1518 } from \"./components/WcMenSmall\";\nimport { default as default1519 } from \"./components/WcSmall\";\nimport { default as default1520 } from \"./components/WcWomen\";\nimport { default as default1521 } from \"./components/WcWomenSmall\";\nimport { default as default1522 } from \"./components/Webhook\";\nimport { default as default1523 } from \"./components/WebhookSmall\";\nimport { default as default1524 } from \"./components/Whatsapp\";\nimport { default as default1525 } from \"./components/WhatsappSmall\";\nimport { default as default1526 } from \"./components/Wheelchair\";\nimport { default as default1527 } from \"./components/WheelchairSmall\";\nimport { default as default1528 } from \"./components/Widgets\";\nimport { default as default1529 } from \"./components/WidgetsSmall\";\nimport { default as default1530 } from \"./components/Width\";\nimport { default as default1531 } from \"./components/WidthSmall\";\nimport { default as default1532 } from \"./components/WixBooking\";\nimport { default as default1533 } from \"./components/WixBookingSmall\";\nimport { default as default1534 } from \"./components/WixChat\";\nimport { default as default1535 } from \"./components/WixChatFilled\";\nimport { default as default1536 } from \"./components/WixChatFilledSmall\";\nimport { default as default1537 } from \"./components/WixChatSmall\";\nimport { default as default1538 } from \"./components/WixEventSnitch\";\nimport { default as default1539 } from \"./components/WixEventSnitchSmall\";\nimport { default as default1540 } from \"./components/WixForms\";\nimport { default as default1541 } from \"./components/WixFormsFilled\";\nimport { default as default1542 } from \"./components/WixFormsFilledSmall\";\nimport { default as default1543 } from \"./components/WixFormsSmall\";\nimport { default as default1544 } from \"./components/WixForum\";\nimport { default as default1545 } from \"./components/WixForumSmall\";\nimport { default as default1546 } from \"./components/WixMarketplace\";\nimport { default as default1547 } from \"./components/WixMarketplaceSmall\";\nimport { default as default1548 } from \"./components/WixMenu\";\nimport { default as default1549 } from \"./components/WixMenuSmall\";\nimport { default as default1550 } from \"./components/WixSocialPosts\";\nimport { default as default1551 } from \"./components/WixSocialPostsSmall\";\nimport { default as default1552 } from \"./components/Wrap\";\nimport { default as default1553 } from \"./components/WrapFilled\";\nimport { default as default1554 } from \"./components/WrapFilledSmall\";\nimport { default as default1555 } from \"./components/WrapSmall\";\nimport { default as default1556 } from \"./components/WrapSmallFilled\";\nimport { default as default1557 } from \"./components/X\";\nimport { default as default1558 } from \"./components/XCorp\";\nimport { default as default1559 } from \"./components/XCorpSmall\";\nimport { default as default1560 } from \"./components/Yahoo\";\nimport { default as default1561 } from \"./components/YahooSmall\";\nimport { default as default1562 } from \"./components/YandexEn\";\nimport { default as default1563 } from \"./components/YandexEnSmall\";\nimport { default as default1564 } from \"./components/YandexRu\";\nimport { default as default1565 } from \"./components/YandexRuSmall\";\nimport { default as default1566 } from \"./components/Yelp\";\nimport { default as default1567 } from \"./components/YelpSmall\";\nimport { default as default1568 } from \"./components/Youtube\";\nimport { default as default1569 } from \"./components/YoutubeFilled\";\nimport { default as default1570 } from \"./components/YoutubeFilledSmall\";\nimport { default as default1571 } from \"./components/YoutubeSmall\";\nimport { default as default1572 } from \"./components/ZoomIn\";\nimport { default as default1573 } from \"./components/ZoomInSmall\";\nimport { default as default1574 } from \"./components/ZoomOut\";\nimport { default as default1575 } from \"./components/ZoomOutSmall\";\nimport { default as default1576 } from \"./components/sso\";\nimport { default as default1577 } from \"./components/ssoSmall\";\nexport {\n  default2 as AI,\n  default3 as AIAssistant,\n  default4 as AIAssistantSmall,\n  default5 as AIChatbot,\n  default6 as AIChatbotSmall,\n  default7 as AIFilled,\n  default8 as AIFilledSmall,\n  default9 as AISmall,\n  default10 as API,\n  default11 as APISmall,\n  default12 as Academy,\n  default13 as AcademySmall,\n  default14 as Accessibility,\n  default15 as AccessibilityFilled,\n  default16 as AccessibilitySmall,\n  default17 as AccessibilitySmallFilled,\n  default18 as Activity,\n  default19 as ActivitySmall,\n  default20 as Add,\n  default21 as AddAI,\n  default22 as AddAISmall,\n  default23 as AddChannel,\n  default24 as AddChannelSmall,\n  default25 as AddColumnLeft,\n  default26 as AddColumnLeftSmall,\n  default27 as AddColumnRight,\n  default28 as AddColumnRightSmall,\n  default29 as AddPath,\n  default30 as AddPathSmall,\n  default31 as AddReceipt,\n  default32 as AddReceiptSmall,\n  default33 as AddSmall,\n  default34 as AddressSign,\n  default35 as AddressSignSmall,\n  default36 as Adjust,\n  default37 as AdjustSmall,\n  default38 as AdminAccess,\n  default39 as AdminAccessSmall,\n  default40 as AdmissionArea,\n  default41 as AdmissionAreaSmall,\n  default42 as Adobe,\n  default43 as AdobeExpress,\n  default44 as AdobeExpressSmall,\n  default45 as AdobeSmall,\n  default46 as AlignBottom,\n  default47 as AlignBottomSmall,\n  default48 as AlignCenterHorizontally,\n  default49 as AlignCenterHorizontallySmall,\n  default50 as AlignCenterVertically,\n  default51 as AlignCenterVerticallySmall,\n  default52 as AlignLeft,\n  default53 as AlignLeftSmall,\n  default54 as AlignRight,\n  default55 as AlignRightSmall,\n  default56 as AlignTop,\n  default57 as AlignTopSmall,\n  default58 as AllBorders,\n  default59 as AllBordersSmall,\n  default60 as Angle,\n  default61 as AngleSmall,\n  default62 as App,\n  default63 as AppMarket,\n  default64 as AppMarketSmall,\n  default65 as AppSmall,\n  default66 as Apple,\n  default67 as AppleSmall,\n  default68 as Archive,\n  default69 as ArchiveSmall,\n  default70 as AreaPin,\n  default71 as AreaPinSmall,\n  default72 as ArrowBentUpLeft,\n  default73 as ArrowBentUpLeftFilled,\n  default74 as ArrowBentUpLeftFilledSmall,\n  default75 as ArrowBentUpLeftSmall,\n  default76 as ArrowDown,\n  default77 as ArrowDownRight,\n  default78 as ArrowDownRightSmall,\n  default79 as ArrowDownSmall,\n  default80 as ArrowLeft,\n  default81 as ArrowLeftRight,\n  default82 as ArrowLeftRightSmall,\n  default83 as ArrowLeftSmall,\n  default84 as ArrowRight,\n  default85 as ArrowRightSmall,\n  default86 as ArrowUp,\n  default87 as ArrowUpDown,\n  default88 as ArrowUpDownSmall,\n  default89 as ArrowUpSmall,\n  default90 as Article,\n  default91 as ArticleSmall,\n  default92 as Attachement,\n  default93 as Attachment,\n  default94 as AttachmentSmall,\n  default95 as Automations,\n  default96 as AutomationsFilled,\n  default97 as AutomationsFilledSmall,\n  default98 as AutomationsSmall,\n  default99 as Background,\n  default100 as BackgroundSmall,\n  default101 as Backward,\n  default102 as BackwardBottom,\n  default103 as BackwardBottomSmall,\n  default104 as BackwardSmall,\n  default105 as Badge,\n  default106 as BadgeFilled,\n  default107 as BadgeFilledSmall,\n  default108 as BadgeSmall,\n  default109 as Bar,\n  default110 as BarChartSplit,\n  default111 as BarChartSplitHorizontal,\n  default112 as BarChartSplitHorizontalSmall,\n  default113 as BarChartSplitSmall,\n  default114 as BarSmall,\n  default115 as Bing,\n  default116 as BingSmall,\n  default117 as Block,\n  default118 as BlockSmall,\n  default119 as Blur,\n  default120 as BlurSmall,\n  default121 as Bold,\n  default122 as BoldLight,\n  default123 as BoldLightSmall,\n  default124 as BoldSmall,\n  default125 as BonusGift,\n  default126 as BonusGiftSmall,\n  default127 as BookingChannels,\n  default128 as BookingChannelsSmall,\n  default129 as BookingPageLinks,\n  default130 as BookingPageLinksSmall,\n  default131 as Bookmark,\n  default132 as BookmarkFilled,\n  default133 as BookmarkFilledSmall,\n  default134 as BookmarkSmall,\n  default135 as Border,\n  default136 as BorderDashed,\n  default137 as BorderDashedSmall,\n  default138 as BorderDouble,\n  default139 as BorderDoubleSmall,\n  default140 as BorderSingle,\n  default141 as BorderSingleSmall,\n  default142 as BorderSmall,\n  default143 as BorderSmallerDashed,\n  default144 as BorderSmallerDashedSmall,\n  default145 as BorderWidth,\n  default146 as BorderWidthSmall,\n  default147 as Bow,\n  default148 as BowSmall,\n  default149 as BoxOpen,\n  default150 as BoxOpenSmall,\n  default151 as Branch,\n  default152 as BranchSmall,\n  default153 as BreakpointDesktop,\n  default154 as BreakpointEqualsMobile,\n  default155 as BreakpointMobile,\n  default156 as BreakpointToMobile,\n  default157 as Brightness,\n  default158 as BrightnessLight,\n  default159 as BrightnessLightSmall,\n  default160 as BrightnessSmall,\n  default161 as Build,\n  default162 as BuildSmall,\n  default163 as BulletList,\n  default164 as BulletListThin,\n  default165 as BulletListThinSmall,\n  default166 as Button,\n  default167 as ButtonPill,\n  default168 as ButtonPillSmall,\n  default169 as ButtonRounded,\n  default170 as ButtonRoundedSmall,\n  default171 as ButtonSmall,\n  default172 as ButtonSquare,\n  default173 as ButtonSquareSmall,\n  default174 as CSS,\n  default175 as CSSSmall,\n  default176 as CahtFilledSmall,\n  default177 as CallEnded,\n  default178 as CallEndedSmall,\n  default179 as CallMissed,\n  default180 as CallMissedSmall,\n  default181 as CancelOrder,\n  default182 as CancelOrderSmall,\n  default183 as Carousel,\n  default184 as CarouselSmall,\n  default185 as Cart,\n  default186 as CartFilled,\n  default187 as CartSmall,\n  default188 as CartSmallFilled,\n  default189 as Catalog,\n  default190 as CatalogSmall,\n  default191 as Category,\n  default192 as CategorySmall,\n  default193 as CellBorders,\n  default194 as CellBordersSmall,\n  default195 as ChangeOrder,\n  default196 as ChangeOrderSmall,\n  default197 as Chat,\n  default198 as ChatDisabed,\n  default199 as ChatDisabled,\n  default200 as ChatDisabledSmall,\n  default201 as ChatFilled,\n  default202 as ChatFilledSmall,\n  default203 as ChatGPT,\n  default204 as ChatGPTSmall,\n  default205 as ChatReply,\n  default206 as ChatReplySmall,\n  default207 as ChatSmall,\n  default208 as Check,\n  default209 as Checkbox,\n  default210 as CheckboxSmall,\n  default211 as Checklist,\n  default212 as ChecklistSmall,\n  default213 as Checkroom,\n  default214 as CheckroomSmall,\n  default215 as ChevronCollapse,\n  default216 as ChevronCollapseSmall,\n  default217 as ChevronDown,\n  default218 as ChevronDownCircle,\n  default219 as ChevronDownCircleSmall,\n  default220 as ChevronDownLarge,\n  default221 as ChevronDownLargeSmall,\n  default222 as ChevronDownSmall,\n  default223 as ChevronExpand,\n  default224 as ChevronExpandSmall,\n  default225 as ChevronLeft,\n  default226 as ChevronLeftCircle,\n  default227 as ChevronLeftCircleSmall,\n  default228 as ChevronLeftLarge,\n  default229 as ChevronLeftLargeSmall,\n  default230 as ChevronLeftSmall,\n  default231 as ChevronRight,\n  default232 as ChevronRightCircle,\n  default233 as ChevronRightCircleSmall,\n  default234 as ChevronRightLarge,\n  default235 as ChevronRightLargeSmall,\n  default236 as ChevronRightSmall,\n  default237 as ChevronUp,\n  default238 as ChevronUpCircle,\n  default239 as ChevronUpCircleSmall,\n  default240 as ChevronUpLarge,\n  default241 as ChevronUpLargeSmall,\n  default242 as ChevronUpSmall,\n  default243 as CircleDashed,\n  default244 as CircleDashedSmall,\n  default245 as CircleLarge,\n  default246 as CircleLargeSmall,\n  default247 as CircleSmallFilled,\n  default248 as CircleSmallFilledSmall,\n  default249 as CircleWedgeBottom,\n  default250 as CircleWedgeBottomFilled,\n  default251 as CircleWedgeBottomFilledSmall,\n  default252 as CircleWedgeBottomSmall,\n  default253 as CircleWedgeTop,\n  default254 as CircleWedgeTopFilled,\n  default255 as CircleWedgeTopFilledSmall,\n  default256 as CircleWedgeTopSmall,\n  default257 as Claude,\n  default258 as ClaudeSmall,\n  default259 as ClearChat,\n  default260 as ClearChatSmall,\n  default261 as Click,\n  default262 as ClickSmall,\n  default263 as Cloud,\n  default264 as CloudSmall,\n  default265 as Code,\n  default266 as CodeArray,\n  default267 as CodeArraySmall,\n  default268 as CodeObject,\n  default269 as CodeObjectSmall,\n  default270 as CodeSmall,\n  default271 as Collections,\n  default272 as CollectionsSmall,\n  default273 as ColorBucket,\n  default274 as ColorBucketSmall,\n  default275 as ColorDrop,\n  default276 as ColorDropSmall,\n  default277 as Comment,\n  default278 as CommentAdd,\n  default279 as CommentAddSmall,\n  default280 as CommentMove,\n  default281 as CommentMoveSmall,\n  default282 as CommentSmall,\n  default283 as Compose,\n  default284 as ComposeSmall,\n  default285 as Condition,\n  default286 as ConditionSmall,\n  default287 as Confetti,\n  default288 as ConfettiSmall,\n  default289 as Confirm,\n  default290 as ConfirmSmall,\n  default291 as Container,\n  default292 as ContainerSmall,\n  default293 as ContentFilter,\n  default294 as ContentFilterSmall,\n  default295 as Contrast,\n  default296 as ContrastSmall,\n  default297 as Copyright,\n  default298 as CopyrightSmall,\n  default299 as CornerRadius,\n  default300 as CornerRadiusSmall,\n  default301 as Coupon,\n  default302 as CouponSmall,\n  default303 as CreditCard,\n  default304 as CreditCardAccept,\n  default305 as CreditCardAcceptSmall,\n  default306 as CreditCardDecline,\n  default307 as CreditCardDeclineSmall,\n  default308 as CreditCardPending,\n  default309 as CreditCardPendingSmall,\n  default310 as CreditCardSmall,\n  default311 as Crop,\n  default312 as CropRotate,\n  default313 as CropRotateSmall,\n  default314 as CropSmall,\n  default315 as Currency,\n  default316 as CurrencySmall,\n  default317 as CutOut,\n  default318 as CutOutSmall,\n  default319 as CutOutSparkles,\n  default320 as CutOutSparklesSmall,\n  default321 as Cutlery,\n  default322 as CutlerySmall,\n  default323 as Dashboard,\n  default324 as DashboardSmall,\n  default325 as DataCollection,\n  default326 as DataCollectionDownload,\n  default327 as DataCollectionDownloadSmall,\n  default328 as DataCollectionLinked,\n  default329 as DataCollectionLinkedSmall,\n  default330 as DataCollectionSmall,\n  default331 as DataConnect,\n  default332 as DataConnectSmall,\n  default333 as DataDisconnect,\n  default334 as DataDisconnectSmall,\n  default335 as Database,\n  default336 as DatabaseSmall,\n  default337 as Date,\n  default338 as DateAdd,\n  default339 as DateAddSmall,\n  default340 as DateAndTime,\n  default341 as DateAndTimeSmall,\n  default342 as DateChecked,\n  default343 as DateCheckedSmall,\n  default344 as DateDuplicate,\n  default345 as DateDuplicateSmall,\n  default346 as DateSmall,\n  default347 as DateSync,\n  default348 as DateSyncSmall,\n  default349 as DecreaseIndent,\n  default350 as DecreaseIndentLight,\n  default351 as DecreaseIndentLightSmall,\n  default352 as Delete,\n  default353 as DeleteFilled,\n  default354 as DeleteFilledSmall,\n  default355 as DeleteSmall,\n  default356 as Delivery,\n  default357 as DeliverySmall,\n  default358 as Design,\n  default359 as DesignSmall,\n  default360 as DesignSparkles,\n  default361 as DesignSparklesSmall,\n  default362 as DesignToken,\n  default363 as DesignTokenSmall,\n  default364 as Desktop,\n  default365 as DesktopDisabled,\n  default366 as DesktopDisabledSmall,\n  default367 as DesktopSmall,\n  default368 as Detach,\n  default369 as DetachSmall,\n  default370 as DiamondSmallFilled,\n  default371 as DiamondSmallFilledSmall,\n  default372 as Discord,\n  default373 as DiscordSmall,\n  default374 as Discount,\n  default375 as DiscountSmall,\n  default376 as Dismiss,\n  default377 as DismissFilled,\n  default378 as DismissFilledSmall,\n  default379 as DismissSmall,\n  default380 as DistributeCenter,\n  default381 as DistributeCenterSmall,\n  default382 as DistributeFullWidth,\n  default383 as DistributeFullWidthSmall,\n  default384 as DistributeGlobe,\n  default385 as DistributeGlobeSmall,\n  default386 as DistributeHorizontally,\n  default387 as DistributeHorizontallySmall,\n  default388 as DistributeSmall,\n  default389 as DistributeVertically,\n  default390 as DistributeVerticallySmall,\n  default391 as Divider,\n  default392 as DividerSize,\n  default393 as DividerSizeLarge,\n  default394 as DividerSizeLargeSmall,\n  default395 as DividerSizeMedium,\n  default396 as DividerSizeMediumSmall,\n  default397 as DividerSizeSmall,\n  default398 as DividerSmall,\n  default399 as DocDownload,\n  default400 as DocDownloadSmall,\n  default401 as DocDuplicate,\n  default402 as DocDuplicateSmall,\n  default403 as DocExpire,\n  default404 as DocExpireSmall,\n  default405 as DocMovePrevious,\n  default406 as DocMovePreviousSmall,\n  default407 as DocMovefrom,\n  default408 as DocMovefromSmall,\n  default409 as DocMoveto,\n  default410 as DocMovetoSmall,\n  default411 as DocSend,\n  default412 as DocSendSmall,\n  default413 as DockBottom,\n  default414 as DockBottomSmall,\n  default415 as DockLeft,\n  default416 as DockLeftSmall,\n  default417 as DockRight,\n  default418 as DockRightSmall,\n  default419 as DockTop,\n  default420 as DockTopSmall,\n  default421 as Document,\n  default422 as DocumentExpire,\n  default423 as DocumentExpireSmall,\n  default424 as DocumentSend,\n  default425 as DocumentSendSmall,\n  default426 as DocumentSmall,\n  default427 as Donation,\n  default428 as DonationSmall,\n  default429 as Door,\n  default430 as DoorSmall,\n  default431 as Doughnut,\n  default432 as DoughnutFilled,\n  default433 as DoughnutFilledSmall,\n  default434 as DoughnutSmall,\n  default435 as Download,\n  default436 as DownloadImport,\n  default437 as DownloadImportSmall,\n  default438 as Draw,\n  default439 as DrawSmall,\n  default440 as Drink,\n  default441 as DrinkSmall,\n  default442 as DropShadowBottom,\n  default443 as DropShadowBottomSmall,\n  default444 as DropShadowLeft,\n  default445 as DropShadowLeftSmall,\n  default446 as DropShadowRight,\n  default447 as DropShadowRightSmall,\n  default448 as Dropdown,\n  default449 as DropdownList,\n  default450 as DropdownListSmall,\n  default451 as DropdownSmall,\n  default452 as DuckDuckGo,\n  default453 as DuckDuckGoSmall,\n  default454 as Duplicate,\n  default455 as DuplicateSmall,\n  default456 as DynamicPage,\n  default457 as DynamicPageSmall,\n  default458 as ESignature,\n  default459 as ESignatureSmall,\n  default460 as Edit,\n  default461 as EditDisabled,\n  default462 as EditDisabledSmall,\n  default463 as EditSmall,\n  default464 as EditSparkles,\n  default465 as EditSparklesSmall,\n  default466 as EditorX,\n  default467 as EditorXSmall,\n  default468 as ElementSelectionTool,\n  default469 as ElementSelectionToolSmall,\n  default470 as Elevator,\n  default471 as ElevatorSmall,\n  default472 as Email,\n  default473 as EmailAlert,\n  default474 as EmailAlertSmall,\n  default475 as EmailClick,\n  default476 as EmailClickSmall,\n  default477 as EmailCode,\n  default478 as EmailCodeSmall,\n  default479 as EmailFilled,\n  default480 as EmailFilledSmall,\n  default481 as EmailGoogle,\n  default482 as EmailGoogleSmall,\n  default483 as EmailOpen,\n  default484 as EmailOpenSmall,\n  default485 as EmailSend,\n  default486 as EmailSendSmall,\n  default487 as EmailSent,\n  default488 as EmailSentSmall,\n  default489 as EmailSettings,\n  default490 as EmailSettingsSmall,\n  default491 as EmailSmall,\n  default492 as EmptyTrash,\n  default493 as EmptyTrashSmall,\n  default494 as EnhancePrompt,\n  default495 as EnhancePromptSmall,\n  default496 as Enter,\n  default497 as EnterSmall,\n  default498 as Equal,\n  default499 as EqualSmall,\n  default500 as Erase,\n  default501 as EraseSmall,\n  default502 as EraseSparkles,\n  default503 as EraseSparklesSmall,\n  default504 as Exclude,\n  default505 as ExcludeSmall,\n  default506 as Exit,\n  default507 as ExitFullScreen,\n  default508 as ExitFullScreenSmall,\n  default509 as ExitSmall,\n  default510 as Experiment,\n  default511 as ExperimentSmall,\n  default512 as Exposure,\n  default513 as ExposureSmall,\n  default514 as Extensions,\n  default515 as ExtensionsFilled,\n  default516 as ExtensionsFilledSmall,\n  default517 as ExtensionsSmall,\n  default518 as ExternalLink,\n  default519 as ExternalLinkSmall,\n  default520 as ExtraHot,\n  default521 as ExtraHotSmall,\n  default522 as FAQ,\n  default523 as FAQSmall,\n  default524 as FaceDisapointed,\n  default525 as FaceFemale,\n  default526 as FaceFemaleSmall,\n  default527 as FaceFrowning,\n  default528 as FaceGrining,\n  default529 as FaceNeutral,\n  default530 as FaceSmiling,\n  default531 as Facebook,\n  default532 as FacebookSmall,\n  default533 as Favorite,\n  default534 as FavoriteFilled,\n  default535 as FavoriteFilledSmall,\n  default536 as FavoriteSmall,\n  default537 as Fax,\n  default538 as FaxSmall,\n  default539 as Feed,\n  default540 as FeedSmall,\n  default541 as Female,\n  default542 as FemaleSmall,\n  default543 as Figma,\n  default544 as FigmaSmall,\n  default545 as FileDocumentSmall,\n  default546 as FilterSmall,\n  default547 as Filters,\n  default548 as FiltersSmall,\n  default549 as FixedWidth,\n  default550 as FixedWidthSmall,\n  default551 as Flag,\n  default552 as FlagDismiss,\n  default553 as FlagDismissSmall,\n  default554 as FlagFilled,\n  default555 as FlagFilledSmall,\n  default556 as FlagFind,\n  default557 as FlagFindSmall,\n  default558 as FlagSmall,\n  default559 as Focus,\n  default560 as FocusSmall,\n  default561 as Folder,\n  default562 as FolderFind,\n  default563 as FolderFindSmall,\n  default564 as FolderMove,\n  default565 as FolderMoveSmall,\n  default566 as FolderSmall,\n  default567 as Food,\n  default568 as FoodInStock,\n  default569 as FoodInStockSmall,\n  default570 as FoodOutOfStock,\n  default571 as FoodOutOfStockSmall,\n  default572 as FoodSmall,\n  default573 as Formula,\n  default574 as FormulaSmall,\n  default575 as Forward,\n  default576 as ForwardSmall,\n  default577 as ForwardTop,\n  default578 as ForwardTopSmall,\n  default579 as FourThreeRatio,\n  default580 as FourThreeRatioSmall,\n  default581 as Freeze,\n  default582 as FreezeSmall,\n  default583 as FullScreen,\n  default584 as FullScreenSmall,\n  default585 as Function,\n  default586 as FunctionSmall,\n  default587 as FunnelChart,\n  default588 as FunnelChartSmall,\n  default589 as GallerySparkle,\n  default590 as GallerySparkleSmall,\n  default591 as Gem,\n  default592 as GemSmall,\n  default593 as Gemini,\n  default594 as GeminiSmall,\n  default595 as GetStarted,\n  default596 as GetStartedSmall,\n  default597 as Gift,\n  default598 as GiftSmall,\n  default599 as GitHub,\n  default600 as GitHubSmall,\n  default601 as Globe,\n  default602 as GlobeSmall,\n  default603 as GlutenFree,\n  default604 as GlutenFreeSmall,\n  default605 as Google,\n  default606 as GoogleAds,\n  default607 as GoogleAdsSmall,\n  default608 as GoogleSmall,\n  default609 as Grafana,\n  default610 as GrafanaSmall,\n  default611 as Grain,\n  default612 as GrainSmall,\n  default613 as Groups,\n  default614 as GroupsSmall,\n  default615 as Gun,\n  default616 as GunSmall,\n  default617 as Handle,\n  default618 as HandleSmall,\n  default619 as Heading,\n  default620 as HeadingOne,\n  default621 as HeadingOneSmall,\n  default622 as HeadingSmall,\n  default623 as HeadingThree,\n  default624 as HeadingThreeSmall,\n  default625 as HeadingTwo,\n  default626 as HeadingTwoSmall,\n  default627 as Heart,\n  default628 as HeartFilled,\n  default629 as HeartFilledSmall,\n  default630 as HeartSmall,\n  default631 as HeatmapChart,\n  default632 as HeatmapChartSmall,\n  default633 as Height,\n  default634 as HeightSmall,\n  default635 as Help,\n  default636 as HelpCircle,\n  default637 as HelpCircleSmall,\n  default638 as HelpSmall,\n  default639 as Hidden,\n  default640 as HiddenSmall,\n  default641 as HideSidebar,\n  default642 as HideSidebarSmall,\n  default643 as Highlights,\n  default644 as HighlightsSmall,\n  default645 as Hint,\n  default646 as HintSmall,\n  default647 as History,\n  default648 as HistorySmall,\n  default649 as Home,\n  default650 as HomeSmall,\n  default651 as HorizontalKerning,\n  default652 as HorizontalKerningSmall,\n  default653 as HorizontalMenu,\n  default654 as HorizontalMenuSmall,\n  default655 as HorizontalRatio,\n  default656 as HorizontalRatioChecked,\n  default657 as HorizontalRatioCheckedSmall,\n  default658 as HorizontalRatioSmall,\n  default659 as HorizontalTextLight,\n  default660 as HorizontalTextLightSmall,\n  default661 as Hot,\n  default662 as HotSmall,\n  default663 as Hotel,\n  default664 as HotelSmall,\n  default665 as HugContent,\n  default666 as HugContentSmall,\n  default667 as Image,\n  default668 as ImageSmall,\n  default669 as ImageSparkles,\n  default670 as ImageSparklesSmall,\n  default671 as Inbox,\n  default672 as InboxSmall,\n  default673 as IncreaseIndent,\n  default674 as IncreaseIndentLight,\n  default675 as IncreaseIndentLightSmall,\n  default676 as IndividualPaddings,\n  default677 as IndividualPaddingsSmall,\n  default678 as IndoorLight,\n  default679 as IndoorLightSmall,\n  default680 as Info,\n  default681 as InfoCircle,\n  default682 as InfoCircleFilled,\n  default683 as InfoCircleFilledSmall,\n  default684 as InfoCircleSmall,\n  default685 as InfoSmall,\n  default686 as InnerShadow,\n  default687 as InnerShadowSmall,\n  default688 as Input,\n  default689 as InputArea,\n  default690 as InputAreaSmall,\n  default691 as InputSmall,\n  default692 as Instagram,\n  default693 as InstagramSmall,\n  default694 as Integrations,\n  default695 as IntegrationsSmall,\n  default696 as Intersect,\n  default697 as IntersectSmall,\n  default698 as Invoice,\n  default699 as InvoiceSmall,\n  default700 as Italic,\n  default701 as ItalicLight,\n  default702 as ItalicLightSmall,\n  default703 as ItalicSmall,\n  default704 as JS,\n  default705 as JSLocked,\n  default706 as JSLockedSmall,\n  default707 as JSSmall,\n  default708 as JSW,\n  default709 as JSWSmall,\n  default710 as JSX,\n  default711 as JSXSmall,\n  default712 as JoinPath,\n  default713 as JoinPathSmall,\n  default714 as JustifyTextLight,\n  default715 as JustifyTextLightSmall,\n  default716 as Kanban,\n  default717 as KanbanSmall,\n  default718 as Keypad,\n  default719 as KeypadSmall,\n  default720 as Languages,\n  default721 as LanguagesAdd,\n  default722 as LanguagesAddSmall,\n  default723 as LanguagesSmall,\n  default724 as LargeDesktop,\n  default725 as LargeDesktopSmall,\n  default726 as LargeSize,\n  default727 as LargeSizeSmall,\n  default728 as Layers,\n  default729 as LayersSmall,\n  default730 as LayoutFourColumns,\n  default731 as LayoutFourColumnsSmall,\n  default732 as LayoutFull,\n  default733 as LayoutFullSmall,\n  default734 as LayoutGallery,\n  default735 as LayoutGallerySmall,\n  default736 as LayoutGalleryWithPanel,\n  default737 as LayoutGalleryWithPanelSmall,\n  default738 as LayoutGalleryWithPanelSparkles,\n  default739 as LayoutGalleryWithPanelSparklesSmall,\n  default740 as LayoutList,\n  default741 as LayoutListSmall,\n  default742 as LayoutListWithPanel,\n  default743 as LayoutListWithPanelSmall,\n  default744 as LayoutOneColumn,\n  default745 as LayoutOneColumnSmall,\n  default746 as LayoutSplit,\n  default747 as LayoutSplitSmall,\n  default748 as LayoutThird,\n  default749 as LayoutThirdSmall,\n  default750 as LayoutThreeColumns,\n  default751 as LayoutThreeColumnsSmall,\n  default752 as LayoutTwoColumns,\n  default753 as LayoutTwoColumnsSmall,\n  default754 as LayoutTwoColumnsSplit,\n  default755 as LayoutTwoColumnsSplitSmall,\n  default756 as LeftToRightText,\n  default757 as LeftToRightTextSmall,\n  default758 as Legal,\n  default759 as LegalSmall,\n  default760 as Library,\n  default761 as LibrarySmall,\n  default762 as LineChart,\n  default763 as LineChartSmall,\n  default764 as LineChartSplit,\n  default765 as LineChartSplitSmall,\n  default766 as LineCirclesFilled,\n  default767 as LineCirclesFilledSmall,\n  default768 as LineDifferentWidth,\n  default769 as LineDifferentWidthSmall,\n  default770 as LineDotted,\n  default771 as LineDottedSmall,\n  default772 as LineEndArrow,\n  default773 as LineEndArrowSmall,\n  default774 as LineEndCircle,\n  default775 as LineEndCircleSmall,\n  default776 as LineEndSquare,\n  default777 as LineEndSquareSmall,\n  default778 as LineTrianglesFilled,\n  default779 as LineTrianglesFilledSmall,\n  default780 as LineWarning,\n  default781 as LineWarningSmall,\n  default782 as Link,\n  default783 as LinkBold,\n  default784 as LinkBoldSmall,\n  default785 as LinkSmall,\n  default786 as LinkedIn,\n  default787 as LinkedInSmall,\n  default788 as List,\n  default789 as ListSmall,\n  default790 as Location,\n  default791 as LocationSmall,\n  default792 as LockLocked,\n  default793 as LockLockedFilled,\n  default794 as LockLockedFilledSmall,\n  default795 as LockLockedSmall,\n  default796 as LockUnlocked,\n  default797 as LockUnlockedFilled,\n  default798 as LockUnlockedFilledSmall,\n  default799 as LockUnlockedSmall,\n  default800 as LongText,\n  default801 as LongTextSmall,\n  default802 as LowerCase,\n  default803 as LowerCaseSmall,\n  default804 as LowercaseLight,\n  default805 as LowercaseLightSmall,\n  default806 as Loyalty,\n  default807 as LoyaltySmall,\n  default808 as Ltr,\n  default809 as LtrSmall,\n  default810 as MagicWand,\n  default811 as MagicWandSmall,\n  default812 as MagicWandSparkles,\n  default813 as MagicWandSparklesSmall,\n  default814 as Male,\n  default815 as MaleSmall,\n  default816 as ManagePhotos,\n  default817 as ManagePhotosSmall,\n  default818 as Map,\n  default819 as MapSmall,\n  default820 as MasonaryGrid,\n  default821 as MasonaryGridSmall,\n  default822 as Maximize,\n  default823 as MaximizeSmall,\n  default824 as MediaProofing,\n  default825 as MediaProofingSmall,\n  default826 as MediumSize,\n  default827 as MediumSizeSmall,\n  default828 as MegaMenu,\n  default829 as MegaMenuSmall,\n  default830 as Menu,\n  default831 as MenuSmall,\n  default832 as Merge,\n  default833 as MergeCell,\n  default834 as MergeCellSmall,\n  default835 as MergeSmall,\n  default836 as Messenger,\n  default837 as MessengerSmall,\n  default838 as Microphone,\n  default839 as MicrophoneDisabled,\n  default840 as MicrophoneDisabledSmall,\n  default841 as MicrophoneSmall,\n  default842 as Microsoft,\n  default843 as Microsoft365,\n  default844 as Microsoft365Small,\n  default845 as MicrosoftSmall,\n  default846 as Minimise,\n  default847 as MinimiseSmall,\n  default848 as Minus,\n  default849 as MinusSmall,\n  default850 as MirrorHorizontal,\n  default851 as MirrorHorizontalSmall,\n  default852 as MirrorVertical,\n  default853 as MirrorVerticalSmall,\n  default854 as Mobile,\n  default855 as MobileHeader,\n  default856 as MobileHeaderSmall,\n  default857 as MobileSmall,\n  default858 as ModalSmall,\n  default859 as Moon,\n  default860 as MoonFilled,\n  default861 as MoonFilledSmall,\n  default862 as MoonSmall,\n  default863 as More,\n  default864 as MoreFilled,\n  default865 as MoreFilledSmall,\n  default866 as MoreSmall,\n  default867 as Move,\n  default868 as MoveColumnLeft,\n  default869 as MoveColumnLeftSmall,\n  default870 as MoveColumnRight,\n  default871 as MoveColumnRightSmall,\n  default872 as MoveSmall,\n  default873 as MoveTo,\n  default874 as MoveToSmall,\n  default875 as MultiRow,\n  default876 as MultiRowSmall,\n  default877 as MultiSelect,\n  default878 as MultiSelectSmall,\n  default879 as Multilingual,\n  default880 as MultilingualSmall,\n  default881 as MultipleChoices,\n  default882 as MultipleChoicesSmall,\n  default883 as Multireference,\n  default884 as MultireferenceSmall,\n  default885 as Music,\n  default886 as MusicLibrary,\n  default887 as MusicLibrarySmall,\n  default888 as MusicSmall,\n  default889 as Naver,\n  default890 as NaverSmall,\n  default891 as NewChat,\n  default892 as NewChatSmall,\n  default893 as NewFolder,\n  default894 as NewFolderSmall,\n  default895 as NewRelease,\n  default896 as NewReleaseSmall,\n  default897 as Newspaper,\n  default898 as NewspaperSmall,\n  default899 as Note,\n  default900 as NoteSmall,\n  default901 as Notification,\n  default902 as NotificationSmall,\n  default903 as NotificationsDisabled,\n  default904 as NotificationsDisabledSmall,\n  default905 as Number,\n  default906 as NumberListThin,\n  default907 as NumberListThinSmall,\n  default908 as NumberSmall,\n  default909 as NumberedList,\n  default910 as ObjectPositionBottom,\n  default911 as ObjectPositionBottomFilled,\n  default912 as ObjectPositionBottomFilledSmall,\n  default913 as ObjectPositionBottomSmall,\n  default914 as ObjectPositionLeft,\n  default915 as ObjectPositionLeftFilled,\n  default916 as ObjectPositionLeftFilledSmall,\n  default917 as ObjectPositionLeftSmall,\n  default918 as ObjectPositionRight,\n  default919 as ObjectPositionRightFilled,\n  default920 as ObjectPositionRightFilledSmall,\n  default921 as ObjectPositionRightSmall,\n  default922 as ObjectPositionTop,\n  default923 as ObjectPositionTopFilled,\n  default924 as ObjectPositionTopFilledSmall,\n  default925 as ObjectPositionTopSmall,\n  default926 as ObjectSelectionTool,\n  default927 as ObjectSelectionToolSmall,\n  default928 as Objects,\n  default929 as ObjectsSmall,\n  default930 as OnlinePrograms,\n  default931 as OnlineProgramsSmall,\n  default932 as Opacity,\n  default933 as OpacitySmall,\n  default934 as OpenModal,\n  default935 as OpenModalSmall,\n  default936 as OptimizeImage,\n  default937 as OptimizeImageSmall,\n  default938 as Order,\n  default939 as OrderAdd,\n  default940 as OrderAddSmall,\n  default941 as OrderFilled,\n  default942 as OrderSmall,\n  default943 as OrderSmallFilled,\n  default944 as Organic,\n  default945 as OrganicSmall,\n  default946 as Overlay,\n  default947 as OverlaySmall,\n  default948 as Package,\n  default949 as PackageSmall,\n  default950 as PaddingBottom,\n  default951 as PaddingBottomSmall,\n  default952 as PaddingHorizontal,\n  default953 as PaddingHorizontalSmall,\n  default954 as PaddingLeft,\n  default955 as PaddingLeftSmall,\n  default956 as PaddingRight,\n  default957 as PaddingRightSmall,\n  default958 as PaddingTop,\n  default959 as PaddingTopSmall,\n  default960 as PaddingVertical,\n  default961 as PaddingVerticalSmall,\n  default962 as Page,\n  default963 as PageAdd,\n  default964 as PageAddSmall,\n  default965 as PageCode,\n  default966 as PageCodeSmall,\n  default967 as PageSmall,\n  default968 as PageSparkles,\n  default969 as PageSparklesSmall,\n  default970 as Pages,\n  default971 as PagesSmall,\n  default972 as PaidPlans,\n  default973 as PaidPlansSell,\n  default974 as PaidPlansSellSmall,\n  default975 as PaidPlansSmall,\n  default976 as PanTool,\n  default977 as PanToolSmall,\n  default978 as Passkey,\n  default979 as PasskeySmall,\n  default980 as Pause,\n  default981 as PauseFilled,\n  default982 as PauseFilledSmall,\n  default983 as PauseSmall,\n  default984 as Payment,\n  default985 as PaymentSmall,\n  default986 as PenNib,\n  default987 as PenNibAdd,\n  default988 as PenNibAddSmall,\n  default989 as PenNibSmall,\n  default990 as Perplexity,\n  default991 as PerplexitySmall,\n  default992 as Phone,\n  default993 as PhoneFilled,\n  default994 as PhoneFilledSmall,\n  default995 as PhoneSmall,\n  default996 as PhotoAlbums,\n  default997 as PhotoAlbumsSmall,\n  default998 as PhotoCamera,\n  default999 as PhotoCameraSmall,\n  default1000 as PieChart,\n  default1001 as PieChartSlice,\n  default1002 as PieChartSliceSmall,\n  default1003 as PieChartSmall,\n  default1004 as Pin,\n  default1005 as PinFilled,\n  default1006 as PinFilledSmall,\n  default1007 as PinSmall,\n  default1008 as Pinterest,\n  default1009 as PinterestSmall,\n  default1010 as Pipette,\n  default1011 as PipetteSmall,\n  default1012 as Plant,\n  default1013 as PlantSmall,\n  default1014 as Play,\n  default1015 as PlayFilled,\n  default1016 as PlayFilledSmall,\n  default1017 as PlaySmall,\n  default1018 as PlayingCards,\n  default1019 as PlayingCardsSmall,\n  default1020 as Portfolio,\n  default1021 as PortfolioSmall,\n  default1022 as Power,\n  default1023 as PowerSmall,\n  default1024 as Premium,\n  default1025 as PremiumFilled,\n  default1026 as PremiumFilledSmall,\n  default1027 as PremiumMove,\n  default1028 as PremiumMoveSmall,\n  default1029 as PremiumSmall,\n  default1030 as Preview,\n  default1031 as PreviewSmall,\n  default1032 as Print,\n  default1033 as PrintFilled,\n  default1034 as PrintFilledSmall,\n  default1035 as PrintSmall,\n  default1036 as ProGalleries,\n  default1037 as ProGalleriesSmall,\n  default1038 as Promote,\n  default1039 as PromoteFilled,\n  default1040 as PromoteFilledSmall,\n  default1041 as PromoteSmall,\n  default1042 as Public,\n  default1043 as PublicSmall,\n  default1044 as Publish,\n  default1045 as PublishSmall,\n  default1046 as QR,\n  default1047 as QRSmall,\n  default1048 as QuarterCircleBottom,\n  default1049 as QuarterCircleBottomFilled,\n  default1050 as QuarterCircleBottomFilledSmall,\n  default1051 as QuarterCircleBottomSmall,\n  default1052 as QuarterCircleTop,\n  default1053 as QuarterCircleTopFilled,\n  default1054 as QuarterCircleTopFilledSmall,\n  default1055 as QuarterCircleTopSmall,\n  default1056 as QuickAccess,\n  default1057 as QuickAccessSmall,\n  default1058 as QuickFormat,\n  default1059 as QuickFormatSmall,\n  default1060 as Quote,\n  default1061 as QuoteFilled,\n  default1062 as QuoteFilledSmall,\n  default1063 as QuoteSmall,\n  default1064 as RadioButtonGroup,\n  default1065 as RadioButtonGroupSmall,\n  default1066 as Receipt,\n  default1067 as ReceiptSmall,\n  default1068 as RectangleLarge,\n  default1069 as RectangleLargeSmall,\n  default1070 as RecurringPayment,\n  default1071 as RecurringPaymentSmall,\n  default1072 as Reddit,\n  default1073 as RedditSmall,\n  default1074 as Redo,\n  default1075 as RedoSmall,\n  default1076 as Reels,\n  default1077 as ReelsSmall,\n  default1078 as Reference,\n  default1079 as ReferenceSmall,\n  default1080 as Refresh,\n  default1081 as RefreshSmall,\n  default1082 as Refund,\n  default1083 as RefundSmall,\n  default1084 as RegenerateSparkle,\n  default1085 as RegenerateSparkleSmall,\n  default1086 as RelatedApps,\n  default1087 as RelatedAppsSmall,\n  default1088 as Rename,\n  default1089 as RenameSmall,\n  default1090 as RepeaterVertical,\n  default1091 as RepeaterVerticalSmall,\n  default1092 as Replace,\n  default1093 as ReplaceSmall,\n  default1094 as Required,\n  default1095 as RequiredSmall,\n  default1096 as RestaurantsOrders,\n  default1097 as RestaurantsOrdersSmall,\n  default1098 as Revert,\n  default1099 as RevertClockwise,\n  default1100 as RevertClockwiseSmall,\n  default1101 as RevertReset,\n  default1102 as RevertSmall,\n  default1103 as Reviews,\n  default1104 as ReviewsSmall,\n  default1105 as RichText,\n  default1106 as RichTextSmall,\n  default1107 as RightToLeftText,\n  default1108 as RightToLeftTextSmall,\n  default1109 as RotateLeft,\n  default1110 as RotateLeftSmall,\n  default1111 as RotateRight,\n  default1112 as RotateRightSmall,\n  default1113 as RoundCorner,\n  default1114 as RoundCornerSmall,\n  default1115 as RoundedCorner,\n  default1116 as RoundedCornerBottomLeft,\n  default1117 as RoundedCornerBottomLeftSmall,\n  default1118 as RoundedCornerBottomRight,\n  default1119 as RoundedCornerBottomRightSmall,\n  default1120 as RoundedCornerSmall,\n  default1121 as RoundedCornerTopLeft,\n  default1122 as RoundedCornerTopLeftSmall,\n  default1123 as Rtl,\n  default1124 as RtlSmall,\n  default1125 as Rule,\n  default1126 as RuleSmall,\n  default1127 as SaleChannels,\n  default1128 as SaleChannelsSmall,\n  default1129 as Saturation,\n  default1130 as SaturationSmall,\n  default1131 as Saved,\n  default1132 as SavedSmall,\n  default1133 as Scenery,\n  default1134 as ScenerySmall,\n  default1135 as Search,\n  default1136 as SearchCode,\n  default1137 as SearchCodeSmall,\n  default1138 as SearchSmall,\n  default1139 as SearchSparkles,\n  default1140 as SearchSparklesSmall,\n  default1141 as SeatRow,\n  default1142 as SeatRowCurved,\n  default1143 as SeatRowCurvedSmall,\n  default1144 as SeatRowSmall,\n  default1145 as SeatSelectionTool,\n  default1146 as SeatSelectionToolSmall,\n  default1147 as SectionLayout,\n  default1148 as SectionSparkles,\n  default1149 as SectionSparklesSmall,\n  default1150 as SelectedTag,\n  default1151 as SelectedTagSmall,\n  default1152 as SelectionTool,\n  default1153 as SelectionToolSmall,\n  default1154 as SemiCircleBottom,\n  default1155 as SemiCircleBottomFilled,\n  default1156 as SemiCircleBottomFilledSmall,\n  default1157 as SemiCircleBottomSmall,\n  default1158 as SemiCircleTop,\n  default1159 as SemiCircleTopFilled,\n  default1160 as SemiCircleTopFilledSmall,\n  default1161 as SemiCircleTopSmall,\n  default1162 as Send,\n  default1163 as SendSmall,\n  default1164 as SentenceCase,\n  default1165 as SentenceCaseSmall,\n  default1166 as SentencecaseLight,\n  default1167 as SentencecaseLightSmall,\n  default1168 as Server,\n  default1169 as ServerSmall,\n  default1170 as Settings,\n  default1171 as SettingsSmall,\n  default1172 as Shadows,\n  default1173 as ShadowsSmall,\n  default1174 as Share,\n  default1175 as ShareSmall,\n  default1176 as Sharpness,\n  default1177 as SharpnessSmall,\n  default1178 as Shipping,\n  default1179 as ShippingSmall,\n  default1180 as ShortText,\n  default1181 as ShortTextSmall,\n  default1182 as ShowSidebar,\n  default1183 as ShowSidebarSmall,\n  default1184 as Shuffle,\n  default1185 as ShuffleSmall,\n  default1186 as Shutterstock,\n  default1187 as ShutterstockSmall,\n  default1188 as SidebarDock,\n  default1189 as SidebarDockSmall,\n  default1190 as SidebarUndock,\n  default1191 as SidebarUndockSmall,\n  default1192 as Site,\n  default1193 as SiteAdd,\n  default1194 as SiteAddSmall,\n  default1195 as SiteApp,\n  default1196 as SiteAppSmall,\n  default1197 as SiteContent,\n  default1198 as SiteContentSmall,\n  default1199 as SiteDuplicate,\n  default1200 as SiteDuplicateSmall,\n  default1201 as SiteMap,\n  default1202 as SiteMapSmall,\n  default1203 as SiteMove,\n  default1204 as SiteMoveSmall,\n  default1205 as SiteSearch,\n  default1206 as SiteSearchSmall,\n  default1207 as SiteSmall,\n  default1208 as SizeAndRatio,\n  default1209 as SizeAndRatioSmall,\n  default1210 as Slack,\n  default1211 as SlackSmall,\n  default1212 as Slider,\n  default1213 as SliderSmall,\n  default1214 as SmallSize,\n  default1215 as SmallSizeSmall,\n  default1216 as Smile,\n  default1217 as SmileSmall,\n  default1218 as Smoking,\n  default1219 as SmokingSmall,\n  default1220 as Snapchat,\n  default1221 as SnapchatSmall,\n  default1222 as SocialStory,\n  default1223 as SocialStorySmall,\n  default1224 as SortAZ,\n  default1225 as SortAZSmall,\n  default1226 as SortAscending,\n  default1227 as SortAscendingSmall,\n  default1228 as SortDescending,\n  default1229 as SortDescendingSmall,\n  default1230 as SortFalseTrue,\n  default1231 as SortFalseTrueSmall,\n  default1232 as SortTrueFalse,\n  default1233 as SortTrueFalseSmall,\n  default1234 as SortZA,\n  default1235 as SortZASmall,\n  default1236 as Sound,\n  default1237 as SoundCloud,\n  default1238 as SoundCloudSmall,\n  default1239 as SoundOff,\n  default1240 as SoundOffSmall,\n  default1241 as SoundSmall,\n  default1242 as Sparkles,\n  default1243 as SparklesFilled,\n  default1244 as SparklesFilledSmall,\n  default1245 as SparklesSmall,\n  default1246 as Spicy,\n  default1247 as SpicySmall,\n  default1248 as SplitCell,\n  default1249 as SplitCellSmall,\n  default1250 as SplitPath,\n  default1251 as SplitPathSmall,\n  default1252 as Spotify,\n  default1253 as SpotifySmall,\n  default1254 as SquareCorner,\n  default1255 as SquareCornerSmall,\n  default1256 as SquareRatio,\n  default1257 as SquareRatioChecked,\n  default1258 as SquareRatioCheckedSmall,\n  default1259 as SquareRatioSmall,\n  default1260 as StackHorizontal,\n  default1261 as StackHorizontalSmall,\n  default1262 as StackVertical,\n  default1263 as StackVerticalSmall,\n  default1264 as Staff,\n  default1265 as StaffSmall,\n  default1266 as Stage,\n  default1267 as StageSmall,\n  default1268 as Stairs,\n  default1269 as StairsSmall,\n  default1270 as StandingArea,\n  default1271 as StandingAreaSmall,\n  default1272 as Star,\n  default1273 as StarFilled,\n  default1274 as Statistics,\n  default1275 as StatisticsHorizontal,\n  default1276 as StatisticsHorizontalSmall,\n  default1277 as StatisticsSmall,\n  default1278 as StatusAlert,\n  default1279 as StatusAlertFilled,\n  default1280 as StatusAlertFilledSmall,\n  default1281 as StatusAlertPlain,\n  default1282 as StatusAlertPlainSmall,\n  default1283 as StatusAlertSmall,\n  default1284 as StatusComplete,\n  default1285 as StatusCompleteFilled,\n  default1286 as StatusCompleteFilledSmall,\n  default1287 as StatusCompleteSmall,\n  default1288 as StatusCompleteSparkle,\n  default1289 as StatusCompleteSparkleSmall,\n  default1290 as StatusCompletetFilled,\n  default1291 as StatusDenied,\n  default1292 as StatusDeniedFilled,\n  default1293 as StatusDeniedFilledSmall,\n  default1294 as StatusDeniedSmall,\n  default1295 as StatusIndeterminate,\n  default1296 as StatusIndeterminateFilled,\n  default1297 as StatusIndeterminateFilledSmall,\n  default1298 as StatusIndeterminateSmall,\n  default1299 as StatusStop,\n  default1300 as StatusStopFilled,\n  default1301 as StatusStopFilledSmall,\n  default1302 as StatusStopSmall,\n  default1303 as StatusWarning,\n  default1304 as StatusWarningFilled,\n  default1305 as StatusWarningFilledSmall,\n  default1306 as StatusWarningSmall,\n  default1307 as Stop,\n  default1308 as StopFilled,\n  default1309 as StopFilledSmall,\n  default1310 as StopSmall,\n  default1311 as StretchContent,\n  default1312 as StretchContentSmall,\n  default1313 as Strikethrough,\n  default1314 as StrikethroughLight,\n  default1315 as StrikethroughLightSmall,\n  default1316 as Styles,\n  default1317 as StylesSmall,\n  default1318 as Substract,\n  default1319 as SubstractSmall,\n  default1320 as TS,\n  default1321 as TSSmall,\n  default1322 as TShirt,\n  default1323 as TShirtSmall,\n  default1324 as TableChart,\n  default1325 as TableChartCol,\n  default1326 as TableChartColRow,\n  default1327 as TableChartColRowSmall,\n  default1328 as TableChartColSmall,\n  default1329 as TableChartRow,\n  default1330 as TableChartRowSmall,\n  default1331 as TableChartSmall,\n  default1332 as TableReservation,\n  default1333 as TableReservationSmall,\n  default1334 as TableRound,\n  default1335 as TableRoundSmall,\n  default1336 as TableSquare,\n  default1337 as TableSquareSmall,\n  default1338 as Tablet,\n  default1339 as TabletSmall,\n  default1340 as Tag,\n  default1341 as TagSmall,\n  default1342 as TaskAdd,\n  default1343 as TaskAddSmall,\n  default1344 as TaskArchiveSmall,\n  default1345 as TaskComplete,\n  default1346 as TaskCompleteSmall,\n  default1347 as Tax,\n  default1348 as TaxSmall,\n  default1349 as Temperature,\n  default1350 as TemperatureSmall,\n  default1351 as Template,\n  default1352 as TemplateSmall,\n  default1353 as Terminal,\n  default1354 as TerminalSmall,\n  default1355 as Text,\n  default1356 as TextAlignCenter,\n  default1357 as TextAlignCenterLight,\n  default1358 as TextAlignCenterLightSmall,\n  default1359 as TextAlignCenterSmall,\n  default1360 as TextAlignLeft,\n  default1361 as TextAlignLeftLight,\n  default1362 as TextAlignLeftLightSmall,\n  default1363 as TextAlignLeftSmall,\n  default1364 as TextAlignRight,\n  default1365 as TextAlignRightLight,\n  default1366 as TextAlignRightLightSmall,\n  default1367 as TextAlignRightSmall,\n  default1368 as TextColor,\n  default1369 as TextColorLight,\n  default1370 as TextColorLightSmall,\n  default1371 as TextColorSmall,\n  default1372 as TextFilled,\n  default1373 as TextFilledSmall,\n  default1374 as TextHighlightColor,\n  default1375 as TextHighlightColorLight,\n  default1376 as TextHighlightColorLightSmall,\n  default1377 as TextJustify,\n  default1378 as TextJustifySmall,\n  default1379 as TextLengthLight,\n  default1380 as TextLengthLightSmall,\n  default1381 as TextLineSpacing,\n  default1382 as TextLineSpacingSmall,\n  default1383 as TextRemove,\n  default1384 as TextRemoveFilled,\n  default1385 as TextRemoveSmall,\n  default1386 as TextSmall,\n  default1387 as TextSparkles,\n  default1388 as TextSparklesSmall,\n  default1389 as TextStrokeColor,\n  default1390 as TextStrokeColorLight,\n  default1391 as TextStyles,\n  default1392 as TextStylesSmall,\n  default1393 as ThreeFourRatio,\n  default1394 as ThreeFourRatioSmall,\n  default1395 as Thumbnails,\n  default1396 as ThumbnailsSmall,\n  default1397 as ThumbsDown,\n  default1398 as ThumbsDownFilled,\n  default1399 as ThumbsDownFilledSmall,\n  default1400 as ThumbsDownSmall,\n  default1401 as ThumbsUp,\n  default1402 as ThumbsUpFilled,\n  default1403 as ThumbsUpFilledSmall,\n  default1404 as ThumbsUpSmall,\n  default1405 as TicketDuplicate,\n  default1406 as TicketDuplicateSmall,\n  default1407 as TikTok,\n  default1408 as TikTokSmall,\n  default1409 as Time,\n  default1410 as TimeSmall,\n  default1411 as Timer,\n  default1412 as TimerSmall,\n  default1413 as Toggle,\n  default1414 as ToggleSmall,\n  default1415 as Token,\n  default1416 as TokenSmall,\n  default1417 as Toolbox,\n  default1418 as ToolboxSmall,\n  default1419 as Transfer,\n  default1420 as TransferSmall,\n  default1421 as TransformSmall,\n  default1422 as TriangleLarge,\n  default1423 as TriangleLargeSmall,\n  default1424 as Twitch,\n  default1425 as TwitchSmall,\n  default1426 as Twitter,\n  default1427 as TwitterSmall,\n  default1428 as Unarchive,\n  default1429 as UnarchiveSmall,\n  default1430 as Underline,\n  default1431 as UnderlineLight,\n  default1432 as UnderlineLightSmall,\n  default1433 as UnderlineSmall,\n  default1434 as Undo,\n  default1435 as UndoFilled,\n  default1436 as UndoFilledSmall,\n  default1437 as UndoSmall,\n  default1438 as Union,\n  default1439 as UnionSmall,\n  default1440 as Unlink,\n  default1441 as UnlinkSmall,\n  default1442 as Unsaved,\n  default1443 as UnsavedSmall,\n  default1444 as Update,\n  default1445 as UpdateSmall,\n  default1446 as Upload,\n  default1447 as UploadExport,\n  default1448 as UploadExportSmall,\n  default1449 as UpperCase,\n  default1450 as UpperCaseSmall,\n  default1451 as UppercaseLight,\n  default1452 as UppercaseLightSmall,\n  default1453 as User,\n  default1454 as UserAdd,\n  default1455 as UserAddSmall,\n  default1456 as UserBlock,\n  default1457 as UserBlockSmall,\n  default1458 as UserChecked,\n  default1459 as UserCheckedSmall,\n  default1460 as UserFilled,\n  default1461 as UserFilledSmall,\n  default1462 as UserJoin,\n  default1463 as UserJoinSmall,\n  default1464 as UserLeave,\n  default1465 as UserLeaveSmall,\n  default1466 as UserName,\n  default1467 as UserNameSmall,\n  default1468 as UserRemove,\n  default1469 as UserRemoveSmall,\n  default1470 as UserSearch,\n  default1471 as UserSearchSmall,\n  default1472 as UserSmall,\n  default1473 as Users,\n  default1474 as UsersSmall,\n  default1475 as Variable,\n  default1476 as VariableSmall,\n  default1477 as Vegan,\n  default1478 as VeganSmall,\n  default1479 as Vegetarian,\n  default1480 as VegetarianSmall,\n  default1481 as VerticalKerning,\n  default1482 as VerticalKerningSmall,\n  default1483 as VerticalMenu,\n  default1484 as VerticalMenuSmall,\n  default1485 as VerticalRatio,\n  default1486 as VerticalRatioChecked,\n  default1487 as VerticalRatioCheckedSmall,\n  default1488 as VerticalRatioSmall,\n  default1489 as VerticalTextLight,\n  default1490 as VerticalTextLightSmall,\n  default1491 as VideoCamera,\n  default1492 as VideoCameraDisabled,\n  default1493 as VideoCameraDisabledSmall,\n  default1494 as VideoCameraSmall,\n  default1495 as VideoCameraSparkles,\n  default1496 as VideoCameraSparklesSmall,\n  default1497 as VideoLibrary,\n  default1498 as VideoLibrarySmall,\n  default1499 as ViewExternal,\n  default1500 as ViewExternalSmall,\n  default1501 as Vignette,\n  default1502 as VignetteSmall,\n  default1503 as Vimeo,\n  default1504 as VimeoSmall,\n  default1505 as VisibileHidden,\n  default1506 as Visible,\n  default1507 as VisibleSmall,\n  default1508 as VoiceAssistant,\n  default1509 as VoiceAssistantSmall,\n  default1510 as Volume,\n  default1511 as VolumeSmall,\n  default1512 as Waitlist,\n  default1513 as WaitlistSmall,\n  default1514 as Waveform,\n  default1515 as WaveformSmall,\n  default1516 as Wc,\n  default1517 as WcMen,\n  default1518 as WcMenSmall,\n  default1519 as WcSmall,\n  default1520 as WcWomen,\n  default1521 as WcWomenSmall,\n  default1522 as Webhook,\n  default1523 as WebhookSmall,\n  default1524 as Whatsapp,\n  default1525 as WhatsappSmall,\n  default1526 as Wheelchair,\n  default1527 as WheelchairSmall,\n  default1528 as Widgets,\n  default1529 as WidgetsSmall,\n  default1530 as Width,\n  default1531 as WidthSmall,\n  default1532 as WixBooking,\n  default1533 as WixBookingSmall,\n  default1534 as WixChat,\n  default1535 as WixChatFilled,\n  default1536 as WixChatFilledSmall,\n  default1537 as WixChatSmall,\n  default1538 as WixEventSnitch,\n  default1539 as WixEventSnitchSmall,\n  default1540 as WixForms,\n  default1541 as WixFormsFilled,\n  default1542 as WixFormsFilledSmall,\n  default1543 as WixFormsSmall,\n  default1544 as WixForum,\n  default1545 as WixForumSmall,\n  default1546 as WixMarketplace,\n  default1547 as WixMarketplaceSmall,\n  default1548 as WixMenu,\n  default1549 as WixMenuSmall,\n  default1550 as WixSocialPosts,\n  default1551 as WixSocialPostsSmall,\n  default1552 as Wrap,\n  default1553 as WrapFilled,\n  default1554 as WrapFilledSmall,\n  default1555 as WrapSmall,\n  default1556 as WrapSmallFilled,\n  default1557 as X,\n  default1558 as XCorp,\n  default1559 as XCorpSmall,\n  default1560 as Yahoo,\n  default1561 as YahooSmall,\n  default1562 as YandexEn,\n  default1563 as YandexEnSmall,\n  default1564 as YandexRu,\n  default1565 as YandexRuSmall,\n  default1566 as Yelp,\n  default1567 as YelpSmall,\n  default1568 as Youtube,\n  default1569 as YoutubeFilled,\n  default1570 as YoutubeFilledSmall,\n  default1571 as YoutubeSmall,\n  default1572 as ZoomIn,\n  default1573 as ZoomInSmall,\n  default1574 as ZoomOut,\n  default1575 as ZoomOutSmall,\n  default1576 as sso,\n  default1577 as ssoSmall\n};\n","export * from \"./dist\";\n","export * from \"./default/general\";\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\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","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\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 == null ? 0 : array.length,\n      result = Array(length);\n\n  while (++index < length) {\n    result[index] = iteratee(array[index], index, array);\n  }\n  return result;\n}\n\nmodule.exports = arrayMap;\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\nmodule.exports = isArray;\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 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","/**\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 Symbol = require('./_Symbol'),\n    arrayMap = require('./_arrayMap'),\n    isArray = require('./isArray'),\n    isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolToString = symbolProto ? symbolProto.toString : undefined;\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 (isArray(value)) {\n    // Recursively convert values (susceptible to call stack limits).\n    return arrayMap(value, baseToString) + '';\n  }\n  if (isSymbol(value)) {\n    return symbolToString ? symbolToString.call(value) : '';\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n  return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","var toString = require('./toString');\n\n/** Used to generate unique IDs. */\nvar idCounter = 0;\n\n/**\n * Generates a unique ID. If `prefix` is given, the ID is appended to it.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {string} [prefix=''] The value to prefix the ID with.\n * @returns {string} Returns the unique ID.\n * @example\n *\n * _.uniqueId('contact_');\n * // => 'contact_104'\n *\n * _.uniqueId();\n * // => '105'\n */\nfunction uniqueId(prefix) {\n  var id = ++idCounter;\n  return toString(prefix) + id;\n}\n\nmodule.exports = uniqueId;\n","function createStateClass(namespace, stateName, stateValue) {\n    if (stateValue === false ||\n        stateValue === undefined ||\n        stateValue === null ||\n        stateValue !== stateValue // check NaN\n    ) {\n        return '';\n    }\n    if (stateValue === true) {\n        // boolean state\n        return namespace + '--' + stateName;\n    }\n    var param = stateValue.toString();\n    return namespace + '---' + stateName + '-' + param.length + '-' + param.replace(/\\s/gm, '_');\n}\nexport function classesRuntime(namespace) {\n    var classNames = [];\n    for (var i = 1; i < arguments.length; i++) {\n        // eslint-disable-next-line prefer-rest-params\n        var item = arguments[i];\n        if (item) {\n            if (typeof item === 'string') {\n                classNames[classNames.length] = item;\n            }\n            else if (i === 2) {\n                for (var stateName in item) {\n                    var stateValue = item[stateName];\n                    var stateClass = createStateClass(namespace, stateName, stateValue);\n                    if (stateClass) {\n                        classNames[classNames.length] = stateClass;\n                    }\n                }\n            }\n        }\n    }\n    return classNames.join(' ');\n}\nexport function statesRuntime(namespace, stateMapping) {\n    var classNames = [];\n    for (var stateName in stateMapping) {\n        var stateValue = stateMapping[stateName];\n        var stateClass = createStateClass(namespace, stateName, stateValue);\n        if (stateClass) {\n            classNames.push(stateClass);\n        }\n    }\n    return classNames.join(' ');\n}\nexport function injectCSS(id, css, depth, runtimeId) {\n    if (typeof document === 'undefined') {\n        return;\n    }\n    var d = document;\n    var head = d.head;\n    var style = d.createElement('style');\n    style.setAttribute('st_id', id);\n    style.setAttribute('st_depth', depth);\n    style.setAttribute('st_runtime', runtimeId);\n    style.textContent = css;\n    var loadedStyleElements = head.querySelectorAll('style[st_runtime=\"' + runtimeId + '\"]');\n    var inserted = false;\n    var insertAfter;\n    for (var i = 0; i < loadedStyleElements.length; i++) {\n        var styleElement = loadedStyleElements[i];\n        var existingStId = styleElement.getAttribute('st_id');\n        var existingStDepth = Number(styleElement.getAttribute('st_depth'));\n        if (existingStId === id) {\n            if (existingStDepth === depth) {\n                head.replaceChild(style, styleElement);\n                return;\n            }\n            else {\n                styleElement.parentElement.removeChild(styleElement);\n                continue;\n            }\n        }\n        if (!inserted && depth < existingStDepth) {\n            head.insertBefore(style, styleElement);\n            inserted = true;\n        }\n        insertAfter = styleElement;\n    }\n    if (!inserted) {\n        insertAfter\n            ? head.insertBefore(style, insertAfter.nextElementSibling)\n            : head.appendChild(style);\n    }\n}\n//# sourceMappingURL=pure.js.map","\n\nimport { classesRuntime, statesRuntime } from \"./../../stylable-esm-runtime.js\";\n\n\n\nvar _namespace_ = \"wds_1_269_0_colors\";\nvar _style_ = classesRuntime.bind(null, _namespace_);\n\nexport var cssStates = statesRuntime.bind(null, _namespace_);\nexport var style = _style_;\nexport var st = _style_;\n\nexport var namespace = _namespace_;\nexport var classes = {\"root\":\"wds_1_269_0_colors__root\"};\nexport var keyframes = {}; \nexport var layers = {};\nexport var containers = {};\nexport var stVars = {\"D10\":\"var(--wsr-color-D10, #000624)\",\"D20\":\"var(--wsr-color-D20, #333853)\",\"D30\":\"var(--wsr-color-D30, #595D70)\",\"D40\":\"var(--wsr-color-D40, #868AA5)\",\"D50\":\"var(--wsr-color-D50, #ACAFC4)\",\"D55\":\"var(--wsr-color-D55, #CFD1DC)\",\"D60\":\"var(--wsr-color-D60, #DFE5EB)\",\"D70\":\"var(--wsr-color-D70, #ECEFF3)\",\"D75\":\"var(--wsr-color-D75, #F7F8F8)\",\"D80\":\"var(--wsr-color-D80, #FFFFFF)\",\"B00\":\"var(--wsr-color-B00, #084EBD)\",\"B05\":\"var(--wsr-color-B05, #0F62E6)\",\"B10\":\"var(--wsr-color-B10, #116DFF)\",\"B20\":\"var(--wsr-color-B20, #5999FF)\",\"B30\":\"var(--wsr-color-B30, #A8CAFF)\",\"B40\":\"var(--wsr-color-B40, #D6E6FE)\",\"B50\":\"var(--wsr-color-B50, #E7F0FF)\",\"B60\":\"var(--wsr-color-B60, #F4F7FF)\",\"R00\":\"var(--wsr-color-R00, #B81206)\",\"R05\":\"var(--wsr-color-R05, #D0180B)\",\"R10\":\"var(--wsr-color-R10, #E62214)\",\"R20\":\"var(--wsr-color-R20, #FF6D63)\",\"R30\":\"var(--wsr-color-R30, #F69891)\",\"R40\":\"var(--wsr-color-R40, #FBD0CD)\",\"R50\":\"var(--wsr-color-R50, #FDE3E1)\",\"R60\":\"var(--wsr-color-R60, #FDECEB)\",\"P00\":\"var(--wsr-color-P00, #7416A5)\",\"P05\":\"var(--wsr-color-P05, #8E1DD1)\",\"P10\":\"var(--wsr-color-P10, #9A27D5)\",\"P20\":\"var(--wsr-color-P20, #C161F0)\",\"P30\":\"var(--wsr-color-P30, #CF8CF1)\",\"P40\":\"var(--wsr-color-P40, #E3C3F4)\",\"P50\":\"var(--wsr-color-P50, #F1E0F9)\",\"P60\":\"var(--wsr-color-P60, #F7EDFC)\",\"G00\":\"var(--wsr-color-G00, #1D8649)\",\"G05\":\"var(--wsr-color-G05, #229954)\",\"G10\":\"var(--wsr-color-G10, #25A55A)\",\"G20\":\"var(--wsr-color-G20, #51B77B)\",\"G30\":\"var(--wsr-color-G30, #87CEA5)\",\"G40\":\"var(--wsr-color-G40, #C8E8D6)\",\"G50\":\"var(--wsr-color-G50, #E1F4EB)\",\"G60\":\"var(--wsr-color-G60, #E9F6EE)\",\"Y00\":\"var(--wsr-color-Y00, #D59900)\",\"Y05\":\"var(--wsr-color-Y05, #E7A600)\",\"Y10\":\"var(--wsr-color-Y10, #FFB700)\",\"Y20\":\"var(--wsr-color-Y20, #FFC23D)\",\"Y30\":\"var(--wsr-color-Y30, #FFD16E)\",\"Y40\":\"var(--wsr-color-Y40, #FFE2A5)\",\"Y50\":\"var(--wsr-color-Y50, #FFF0D1)\",\"Y60\":\"var(--wsr-color-Y60, #FFF6E5)\",\"O00\":\"var(--wsr-color-O00, #DF4D00)\",\"O05\":\"var(--wsr-color-O05, #F05300)\",\"O10\":\"var(--wsr-color-O10, #FE620F)\",\"O20\":\"var(--wsr-color-O20, #FF7D38)\",\"O30\":\"var(--wsr-color-O30, #FCBD9C)\",\"O40\":\"var(--wsr-color-O40, #FDDBC8)\",\"O50\":\"var(--wsr-color-O50, #FEE5D7)\",\"O60\":\"var(--wsr-color-O60, #FEEFE6)\",\"F00\":\"var(--wsr-color-F00, #A6D0FF)\",\"A1\":\"var(--wsr-color-A1, #1684EA)\",\"A2\":\"var(--wsr-color-A2, #17B0E2)\",\"A3\":\"var(--wsr-color-A3, #6544F9)\",\"A4\":\"var(--wsr-color-A4, #3D9FA1)\",\"A5\":\"var(--wsr-color-A5, #D04091)\",\"A6\":\"var(--wsr-color-A6, #FDB10C)\",\"B1\":\"var(--wsr-color-B1, #FF66C5)\",\"B2\":\"var(--wsr-color-B2, #FF9F41)\",\"B3\":\"var(--wsr-color-B3, #F9677A)\",\"B4\":\"var(--wsr-color-B4, #1550AC)\",\"C1\":\"var(--wsr-color-C1, #54CE91)\",\"C2\":\"var(--wsr-color-C2, #1989E5)\",\"C3\":\"var(--wsr-color-C3, #64B4F6)\",\"C4\":\"var(--wsr-color-C4, #FF9290)\",\"D10-03\":\"var(--wsr-color-D10-03, rgba(0, 6, 36, 0.03))\",\"D10-05\":\"var(--wsr-color-D10-05, rgba(0, 6, 36, 0.05))\",\"D10-06\":\"var(--wsr-color-D10-06, rgba(0, 6, 36, 0.06))\",\"D10-10\":\"var(--wsr-color-D10-10, rgba(0, 6, 36, 0.10))\",\"D10-12\":\"var(--wsr-color-D10-12, rgba(0, 6, 36, 0.12))\",\"D10-18\":\"var(--wsr-color-D10-18, rgba(0, 6, 36, 0.18))\",\"D10-20\":\"var(--wsr-color-D10-20, rgba(0, 6, 36, 0.20))\",\"D10-24\":\"var(--wsr-color-D10-24, rgba(0, 6, 36, 0.24))\",\"D10-30\":\"var(--wsr-color-D10-30, rgba(0, 6, 36, 0.30))\",\"D10-36\":\"var(--wsr-color-D10-36, rgba(0, 6, 36, 0.36))\",\"D10-42\":\"var(--wsr-color-D10-42, rgba(0, 6, 36, 0.42))\",\"D10-66\":\"var(--wsr-color-D10-66, rgba(0, 6, 36, 0.66))\",\"D10-90\":\"var(--wsr-color-D10-90, rgba(0, 6, 36, 0.90))\",\"D10-96\":\"var(--wsr-color-D10-96, rgba(0, 6, 36, 0.96))\",\"D20-48\":\"var(--wsr-color-D20-48, rgba(51, 56, 83, 0.48))\",\"D20-54\":\"var(--wsr-color-D20-54, rgba(51, 56, 83, 0.54))\",\"D20-60\":\"var(--wsr-color-D20-60, rgba(51, 56, 83, 0.60))\",\"D20-72\":\"var(--wsr-color-D20-72, rgba(51, 56, 83, 0.72))\",\"D40-20\":\"var(--wsr-color-D40-20, rgba(134, 138, 165, 0.20))\",\"D80-10\":\"var(--wsr-color-D80-10, rgba(255, 255, 255, 0.10))\",\"D80-20\":\"var(--wsr-color-D80-20, rgba(255, 255, 255, 0.20))\",\"D80-30\":\"var(--wsr-color-D80-30, rgba(255, 255, 255, 0.30))\",\"D80-48\":\"var(--wsr-color-D80-48, rgba(255, 255, 255, 0.48))\",\"D80-60\":\"var(--wsr-color-D80-60, rgba(255, 255, 255, 0.60))\",\"D80-70\":\"var(--wsr-color-D80-70, rgba(255, 255, 255, 0.70))\",\"B00-24\":\"var(--wsr-color-B00-24, rgba(8, 78, 189, 0.24))\",\"B00-42\":\"var(--wsr-color-B00-42, rgba(8, 78, 189, 0.42))\",\"B00-48\":\"var(--wsr-color-B00-48, rgba(8, 78, 189, 0.48))\",\"D10-00\":\"var(--wsr-color-D10-00, rgba(22, 45, 61, 0.00))\",\"D10-54\":\"var(--wsr-color-D10-54, rgba(22, 45, 61, 0.54))\",\"D80-00\":\"var(--wsr-color-D80-00, rgba(255, 255, 255, 0))\",\"D80-42\":\"var(--wsr-color-D80-42, rgba(255, 255, 255, 0.42))\",\"D80-50\":\"var(--wsr-color-D80-50, rgba(255, 255, 255, 0.50))\",\"D80-66\":\"var(--wsr-color-D80-66, rgba(255, 255, 255, 0.66))\",\"D80-96\":\"var(--wsr-color-D80-96, rgba(255, 255, 255, 0.96))\",\"D80-97\":\"var(--wsr-color-D80-97, rgba(255, 255, 255, 0.97))\",\"B00-60\":\"var(--wsr-color-B00-60, rgba(43, 129, 203, 0.60))\",\"B10-18\":\"var(--wsr-color-B10-18, rgba(56, 153, 236, 0.18))\",\"THEME-COLOR-00\":\"var(--wsr-color-B00, #084EBD)\",\"THEME-COLOR-05\":\"var(--wsr-color-B05, #0F62E6)\",\"THEME-COLOR-10\":\"var(--wsr-color-B10, #116DFF)\",\"THEME-COLOR-20\":\"var(--wsr-color-B20, #5999FF)\",\"THEME-COLOR-30\":\"var(--wsr-color-B30, #A8CAFF)\",\"THEME-COLOR-40\":\"var(--wsr-color-B40, #D6E6FE)\",\"THEME-COLOR-50\":\"var(--wsr-color-B50, #E7F0FF)\",\"THEME-COLOR-60\":\"var(--wsr-color-B60, #F4F7FF)\",\"THEME-TEXT-COLOR-PRIMARY\":\"var(--wsr-color-D10, #000624)\",\"THEME-TEXT-COLOR-PRIMARY-LIGHT\":\"var(--wsr-color-D80, #FFFFFF)\",\"THEME-TEXT-COLOR-SECONDARY\":\"var(--wsr-color-D20, #333853)\",\"THEME-TEXT-COLOR-SECONDARY-LIGHT\":\"var(--wsr-color-D40, #868AA5)\",\"THEME-DIVIDER-COLOR\":\"var(--wsr-color-D60, #DFE5EB)\",\"Gradient-AI01\":\"linear-gradient(60deg, #0021FF -31%, #116DFF 65%, #5FF2AE 96%)\",\"Gradient-AI02\":\"linear-gradient(60deg, #0021FF -177%, #116DFF 32%, #5FF2AE 96%)\",\"SECTION-HEADER-COLOR-BG\":\"var(--wsr-section-header-color-bg, #f7f8f8)\",\"SECTION-HEADER-COLOR-BORDER\":\"var(--wsr-section-header-color-border, #dfe5eb)\"}; \nexport var vars = {\"wsr-color-D10\":\"--wsr-color-D10\",\"wsr-color-D20\":\"--wsr-color-D20\",\"wsr-color-D30\":\"--wsr-color-D30\",\"wsr-color-D40\":\"--wsr-color-D40\",\"wsr-color-D50\":\"--wsr-color-D50\",\"wsr-color-D55\":\"--wsr-color-D55\",\"wsr-color-D60\":\"--wsr-color-D60\",\"wsr-color-D70\":\"--wsr-color-D70\",\"wsr-color-D75\":\"--wsr-color-D75\",\"wsr-color-D80\":\"--wsr-color-D80\",\"wsr-color-B00\":\"--wsr-color-B00\",\"wsr-color-B05\":\"--wsr-color-B05\",\"wsr-color-B10\":\"--wsr-color-B10\",\"wsr-color-B20\":\"--wsr-color-B20\",\"wsr-color-B30\":\"--wsr-color-B30\",\"wsr-color-B40\":\"--wsr-color-B40\",\"wsr-color-B50\":\"--wsr-color-B50\",\"wsr-color-B60\":\"--wsr-color-B60\",\"wsr-color-R00\":\"--wsr-color-R00\",\"wsr-color-R05\":\"--wsr-color-R05\",\"wsr-color-R10\":\"--wsr-color-R10\",\"wsr-color-R20\":\"--wsr-color-R20\",\"wsr-color-R30\":\"--wsr-color-R30\",\"wsr-color-R40\":\"--wsr-color-R40\",\"wsr-color-R50\":\"--wsr-color-R50\",\"wsr-color-R60\":\"--wsr-color-R60\",\"wsr-color-P00\":\"--wsr-color-P00\",\"wsr-color-P05\":\"--wsr-color-P05\",\"wsr-color-P10\":\"--wsr-color-P10\",\"wsr-color-P20\":\"--wsr-color-P20\",\"wsr-color-P30\":\"--wsr-color-P30\",\"wsr-color-P40\":\"--wsr-color-P40\",\"wsr-color-P50\":\"--wsr-color-P50\",\"wsr-color-P60\":\"--wsr-color-P60\",\"wsr-color-G00\":\"--wsr-color-G00\",\"wsr-color-G05\":\"--wsr-color-G05\",\"wsr-color-G10\":\"--wsr-color-G10\",\"wsr-color-G20\":\"--wsr-color-G20\",\"wsr-color-G30\":\"--wsr-color-G30\",\"wsr-color-G40\":\"--wsr-color-G40\",\"wsr-color-G50\":\"--wsr-color-G50\",\"wsr-color-G60\":\"--wsr-color-G60\",\"wsr-color-Y00\":\"--wsr-color-Y00\",\"wsr-color-Y05\":\"--wsr-color-Y05\",\"wsr-color-Y10\":\"--wsr-color-Y10\",\"wsr-color-Y20\":\"--wsr-color-Y20\",\"wsr-color-Y30\":\"--wsr-color-Y30\",\"wsr-color-Y40\":\"--wsr-color-Y40\",\"wsr-color-Y50\":\"--wsr-color-Y50\",\"wsr-color-Y60\":\"--wsr-color-Y60\",\"wsr-color-O00\":\"--wsr-color-O00\",\"wsr-color-O05\":\"--wsr-color-O05\",\"wsr-color-O10\":\"--wsr-color-O10\",\"wsr-color-O20\":\"--wsr-color-O20\",\"wsr-color-O30\":\"--wsr-color-O30\",\"wsr-color-O40\":\"--wsr-color-O40\",\"wsr-color-O50\":\"--wsr-color-O50\",\"wsr-color-O60\":\"--wsr-color-O60\",\"wsr-color-F00\":\"--wsr-color-F00\",\"wsr-color-A1\":\"--wsr-color-A1\",\"wsr-color-A2\":\"--wsr-color-A2\",\"wsr-color-A3\":\"--wsr-color-A3\",\"wsr-color-A4\":\"--wsr-color-A4\",\"wsr-color-A5\":\"--wsr-color-A5\",\"wsr-color-A6\":\"--wsr-color-A6\",\"wsr-color-B1\":\"--wsr-color-B1\",\"wsr-color-B2\":\"--wsr-color-B2\",\"wsr-color-B3\":\"--wsr-color-B3\",\"wsr-color-B4\":\"--wsr-color-B4\",\"wsr-color-C1\":\"--wsr-color-C1\",\"wsr-color-C2\":\"--wsr-color-C2\",\"wsr-color-C3\":\"--wsr-color-C3\",\"wsr-color-C4\":\"--wsr-color-C4\",\"wsr-color-D10-03\":\"--wsr-color-D10-03\",\"wsr-color-D10-05\":\"--wsr-color-D10-05\",\"wsr-color-D10-06\":\"--wsr-color-D10-06\",\"wsr-color-D10-10\":\"--wsr-color-D10-10\",\"wsr-color-D10-12\":\"--wsr-color-D10-12\",\"wsr-color-D10-18\":\"--wsr-color-D10-18\",\"wsr-color-D10-20\":\"--wsr-color-D10-20\",\"wsr-color-D10-24\":\"--wsr-color-D10-24\",\"wsr-color-D10-30\":\"--wsr-color-D10-30\",\"wsr-color-D10-36\":\"--wsr-color-D10-36\",\"wsr-color-D10-42\":\"--wsr-color-D10-42\",\"wsr-color-D10-66\":\"--wsr-color-D10-66\",\"wsr-color-D10-90\":\"--wsr-color-D10-90\",\"wsr-color-D10-96\":\"--wsr-color-D10-96\",\"wsr-color-D20-48\":\"--wsr-color-D20-48\",\"wsr-color-D20-54\":\"--wsr-color-D20-54\",\"wsr-color-D20-60\":\"--wsr-color-D20-60\",\"wsr-color-D20-72\":\"--wsr-color-D20-72\",\"wsr-color-D40-20\":\"--wsr-color-D40-20\",\"wsr-color-D80-10\":\"--wsr-color-D80-10\",\"wsr-color-D80-20\":\"--wsr-color-D80-20\",\"wsr-color-D80-30\":\"--wsr-color-D80-30\",\"wsr-color-D80-48\":\"--wsr-color-D80-48\",\"wsr-color-D80-60\":\"--wsr-color-D80-60\",\"wsr-color-D80-70\":\"--wsr-color-D80-70\",\"wsr-color-B00-24\":\"--wsr-color-B00-24\",\"wsr-color-B00-42\":\"--wsr-color-B00-42\",\"wsr-color-B00-48\":\"--wsr-color-B00-48\",\"wsr-color-D10-00\":\"--wsr-color-D10-00\",\"wsr-color-D10-54\":\"--wsr-color-D10-54\",\"wsr-color-D80-00\":\"--wsr-color-D80-00\",\"wsr-color-D80-42\":\"--wsr-color-D80-42\",\"wsr-color-D80-50\":\"--wsr-color-D80-50\",\"wsr-color-D80-66\":\"--wsr-color-D80-66\",\"wsr-color-D80-96\":\"--wsr-color-D80-96\",\"wsr-color-D80-97\":\"--wsr-color-D80-97\",\"wsr-color-B00-60\":\"--wsr-color-B00-60\",\"wsr-color-B10-18\":\"--wsr-color-B10-18\",\"wsr-section-header-color-bg\":\"--wsr-section-header-color-bg\",\"wsr-section-header-color-border\":\"--wsr-section-header-color-border\"}; \n\n\n\n\n","\n\nimport { classesRuntime, statesRuntime } from \"./../../stylable-esm-runtime.js\";\n\n\n\nvar _namespace_ = \"wds_1_269_0_shadows\";\nvar _style_ = classesRuntime.bind(null, _namespace_);\n\nexport var cssStates = statesRuntime.bind(null, _namespace_);\nexport var style = _style_;\nexport var st = _style_;\n\nexport var namespace = _namespace_;\nexport var classes = {\"root\":\"wds_1_269_0_shadows__root\"};\nexport var keyframes = {}; \nexport var layers = {};\nexport var containers = {};\nexport var stVars = {\"s1\":\"rgba(22, 45, 61, 0.12)\",\"s2\":\"rgba(22, 45, 61, 0.48)\",\"s3\":\"rgba(22, 45, 61, 0.06)\",\"s4\":\"rgba(22, 45, 61, 0.18)\",\"s5\":\"rgba(22, 45, 61, 0.24)\",\"s6\":\"rgba(22, 45, 61, 0.3)\",\"s7\":\"rgba(22, 45, 61, 0.36)\",\"shadow10\":\"var(--wsr-shadow10, 0 2px 1px 0 rgba(22, 45, 61, 0.48), 0 0 3px 0 rgba(22, 45, 61, 0.12))\",\"shadow20\":\"var(--wsr-shadow20, 0 2px 4px 0 rgba(22, 45, 61, 0.12), 0 0 6px 0 rgba(22, 45, 61, 0.12))\",\"shadow30\":\"var(--wsr-shadow30, 0 6px 6px 0 rgba(22, 45, 61, 0.06), 0 0 18px 0 rgba(22, 45, 61, 0.12))\",\"shadow30InnerTop\":\"var(--wsr-shadow30, inset 0 22px 18px -18px rgba(22, 45, 61, 0.12), inset 0 8px 6px -6px rgba(22, 45, 61, 0.06))\",\"shadow30InnerBottom\":\"var(--wsr-shadow30, inset 0 -22px 18px -18px rgba(22, 45, 61, 0.12), inset 0 -8px 6px -6px rgba(22, 45, 61, 0.06))\",\"shadow40\":\"var(--wsr-shadow40, 0 8px 8px 0 rgba(22, 45, 61, 0.12), 0 3px 24px 0 rgba(22, 45, 61, 0.18))\"}; \nexport var vars = {\"wsr-shadow10\":\"--wsr-shadow10\",\"wsr-shadow20\":\"--wsr-shadow20\",\"wsr-shadow30\":\"--wsr-shadow30\",\"wsr-shadow40\":\"--wsr-shadow40\"}; \n\n\n\n\n","\n\nimport { classesRuntime, statesRuntime } from \"./../../stylable-esm-runtime.js\";\n\n\n\nvar _namespace_ = \"wds_1_269_0_StylableTypography\";\nvar _style_ = classesRuntime.bind(null, _namespace_);\n\nexport var cssStates = statesRuntime.bind(null, _namespace_);\nexport var style = _style_;\nexport var st = _style_;\n\nexport var namespace = _namespace_;\nexport var classes = {\"root\":\"wds_1_269_0_StylableTypography__root\",\"text-extra-tiny-thin\":\"wds_1_269_0_StylableTypography__text-extra-tiny-thin\",\"text-extra-tiny-normal\":\"wds_1_269_0_StylableTypography__text-extra-tiny-normal\",\"text-extra-tiny-bold\":\"wds_1_269_0_StylableTypography__text-extra-tiny-bold\",\"text-tiny-thin\":\"wds_1_269_0_StylableTypography__text-tiny-thin\",\"text-tiny-normal\":\"wds_1_269_0_StylableTypography__text-tiny-normal\",\"text-tiny-bold\":\"wds_1_269_0_StylableTypography__text-tiny-bold\",\"text-small-thin\":\"wds_1_269_0_StylableTypography__text-small-thin\",\"text-small-normal\":\"wds_1_269_0_StylableTypography__text-small-normal\",\"text-small-bold\":\"wds_1_269_0_StylableTypography__text-small-bold\",\"text-medium-thin\":\"wds_1_269_0_StylableTypography__text-medium-thin\",\"text-medium-normal\":\"wds_1_269_0_StylableTypography__text-medium-normal\",\"text-medium-bold\":\"wds_1_269_0_StylableTypography__text-medium-bold\",\"heading-h1\":\"wds_1_269_0_StylableTypography__heading-h1\",\"heading-h2\":\"wds_1_269_0_StylableTypography__heading-h2\",\"heading-h3\":\"wds_1_269_0_StylableTypography__heading-h3\",\"heading-h4\":\"wds_1_269_0_StylableTypography__heading-h4\",\"heading-h5\":\"wds_1_269_0_StylableTypography__heading-h5\",\"heading-h6\":\"wds_1_269_0_StylableTypography__heading-h6\",\"heading-xl\":\"wds_1_269_0_StylableTypography__heading-xl\",\"heading-l\":\"wds_1_269_0_StylableTypography__heading-l\",\"heading-m\":\"wds_1_269_0_StylableTypography__heading-m\",\"heading-s\":\"wds_1_269_0_StylableTypography__heading-s\",\"heading-t\":\"wds_1_269_0_StylableTypography__heading-t\",\"heading-xt\":\"wds_1_269_0_StylableTypography__heading-xt\",\"caption-1\":\"wds_1_269_0_StylableTypography__caption-1\"};\nexport var keyframes = {}; \nexport var layers = {};\nexport var containers = {};\nexport var stVars = {\"wsr-font-family\":\"Madefor,\\\"Helvetica Neue\\\",Helvetica,Arial,\\\"メイリオ\\\",\\\"meiryo\\\",\\\"ヒラギノ角ゴ pro w3\\\",\\\"hiragino kaku gothic pro\\\", sans-serif\",\"wsr-font-weight-regular\":\"400\",\"wsr-font-weight-medium\":\"530\",\"wsr-font-weight-bold\":\"700\",\"wsr-text-font-size-tiny\":\"12px\",\"wsr-text-font-size-small\":\"14px\",\"wsr-text-font-size-medium\":\"16px\",\"wsr-text-line-height-tiny\":\"15px\",\"wsr-text-line-height-small\":\"18px\",\"wsr-text-line-height-medium\":\"24px\",\"wsr-heading-font-size-h1\":\"32px\",\"wsr-heading-font-size-h2\":\"24px\",\"wsr-heading-font-size-h3\":\"20px\",\"wsr-heading-font-size-h4\":\"18px\",\"wsr-heading-font-size-h5\":\"12px\",\"wsr-heading-font-size-h6\":\"10px\",\"wsr-heading-font-size-xl\":\"28px\",\"wsr-heading-font-size-l\":\"21px\",\"wsr-heading-font-size-m\":\"18px\",\"wsr-heading-font-size-s\":\"18px\",\"wsr-heading-font-size-t\":\"15px\",\"wsr-heading-font-size-xt\":\"12px\",\"wsr-heading-line-height-h1\":\"42px\",\"wsr-heading-line-height-h2\":\"30px\",\"wsr-heading-line-height-h3\":\"24px\",\"wsr-heading-line-height-h4\":\"24px\",\"wsr-heading-line-height-h5\":\"24px\",\"wsr-heading-line-height-h6\":\"18px\",\"wsr-heading-line-height-xl\":\"36px\",\"wsr-heading-line-height-l\":\"28px\",\"wsr-heading-line-height-m\":\"24px\",\"wsr-heading-line-height-s\":\"24px\",\"wsr-heading-line-height-t\":\"24px\",\"wsr-heading-line-height-xt\":\"15px\",\"wsr-caption-font-size-1\":\"10px\",\"wsr-caption-line-height-1\":\"12px\"}; \nexport var vars = {\"wds-font-family-default\":\"--wds-font-family-default\",\"wds-font-family-display\":\"--wds-font-family-display\",\"wds-font-size-body-extra-tiny\":\"--wds-font-size-body-extra-tiny\",\"wds-font-size-body-tiny\":\"--wds-font-size-body-tiny\",\"wds-font-size-body-small\":\"--wds-font-size-body-small\",\"wds-font-size-body-medium\":\"--wds-font-size-body-medium\",\"wds-font-size-heading-1\":\"--wds-font-size-heading-1\",\"wds-font-size-heading-2\":\"--wds-font-size-heading-2\",\"wds-font-size-heading-3\":\"--wds-font-size-heading-3\",\"wds-font-size-heading-4\":\"--wds-font-size-heading-4\",\"wds-font-size-heading-5\":\"--wds-font-size-heading-5\",\"wds-font-size-heading-6\":\"--wds-font-size-heading-6\",\"wds-font-weight-bold\":\"--wds-font-weight-bold\",\"wds-font-weight-medium\":\"--wds-font-weight-medium\",\"wds-font-weight-regular\":\"--wds-font-weight-regular\",\"wds-font-line-height-heading-1\":\"--wds-font-line-height-heading-1\",\"wds-font-line-height-heading-2\":\"--wds-font-line-height-heading-2\",\"wds-font-line-height-heading-3\":\"--wds-font-line-height-heading-3\",\"wds-font-line-height-heading-4\":\"--wds-font-line-height-heading-4\",\"wds-font-line-height-heading-5\":\"--wds-font-line-height-heading-5\",\"wds-font-line-height-heading-6\":\"--wds-font-line-height-heading-6\",\"wds-font-line-height-body-medium\":\"--wds-font-line-height-body-medium\",\"wds-font-line-height-body-small\":\"--wds-font-line-height-body-small\",\"wds-font-line-height-body-tiny\":\"--wds-font-line-height-body-tiny\",\"wds-font-line-height-body-extra-tiny\":\"--wds-font-line-height-body-extra-tiny\",\"wds-font-weight-heading-1\":\"--wds-font-weight-heading-1\",\"wds-font-weight-heading-2\":\"--wds-font-weight-heading-2\",\"wds-font-weight-heading-3\":\"--wds-font-weight-heading-3\",\"wds-font-weight-heading-4\":\"--wds-font-weight-heading-4\",\"wds-font-weight-heading-5\":\"--wds-font-weight-heading-5\",\"wds-font-weight-heading-6\":\"--wds-font-weight-heading-6\",\"wds-font-letter-spacing-heading-1\":\"--wds-font-letter-spacing-heading-1\",\"wds-font-letter-spacing-heading-2\":\"--wds-font-letter-spacing-heading-2\",\"wds-font-letter-spacing-heading-3\":\"--wds-font-letter-spacing-heading-3\",\"wds-font-letter-spacing-heading-4\":\"--wds-font-letter-spacing-heading-4\",\"wds-font-letter-spacing-heading-5\":\"--wds-font-letter-spacing-heading-5\",\"wds-font-letter-spacing-heading-6\":\"--wds-font-letter-spacing-heading-6\",\"wds-font-letter-spacing-0\":\"--wds-font-letter-spacing-0\",\"wsr-font-family\":\"--wsr-font-family\",\"wsr-font-weight-regular\":\"--wsr-font-weight-regular\",\"wsr-font-weight-medium\":\"--wsr-font-weight-medium\",\"wsr-font-weight-bold\":\"--wsr-font-weight-bold\",\"wsr-text-font-size-tiny\":\"--wsr-text-font-size-tiny\",\"wsr-text-font-size-small\":\"--wsr-text-font-size-small\",\"wsr-text-font-size-medium\":\"--wsr-text-font-size-medium\",\"wsr-text-line-height-tiny\":\"--wsr-text-line-height-tiny\",\"wsr-text-line-height-small\":\"--wsr-text-line-height-small\",\"wsr-text-line-height-medium\":\"--wsr-text-line-height-medium\",\"wsr-heading-font-size-h1\":\"--wsr-heading-font-size-h1\",\"wsr-heading-font-size-h2\":\"--wsr-heading-font-size-h2\",\"wsr-heading-font-size-h3\":\"--wsr-heading-font-size-h3\",\"wsr-heading-font-size-h4\":\"--wsr-heading-font-size-h4\",\"wsr-heading-font-size-h5\":\"--wsr-heading-font-size-h5\",\"wsr-heading-font-size-h6\":\"--wsr-heading-font-size-h6\",\"wsr-heading-line-height-h1\":\"--wsr-heading-line-height-h1\",\"wsr-heading-line-height-h2\":\"--wsr-heading-line-height-h2\",\"wsr-heading-line-height-h3\":\"--wsr-heading-line-height-h3\",\"wsr-heading-line-height-h4\":\"--wsr-heading-line-height-h4\",\"wsr-heading-line-height-h5\":\"--wsr-heading-line-height-h5\",\"wsr-heading-line-height-h6\":\"--wsr-heading-line-height-h6\",\"wsr-caption-font-size-1\":\"--wsr-caption-font-size-1\",\"wsr-caption-line-height-1\":\"--wsr-caption-line-height-1\",\"wsr-heading-font-size-xl\":\"--wsr-heading-font-size-xl\",\"wsr-heading-font-size-l\":\"--wsr-heading-font-size-l\",\"wsr-heading-font-size-m\":\"--wsr-heading-font-size-m\",\"wsr-heading-font-size-s\":\"--wsr-heading-font-size-s\",\"wsr-heading-font-size-t\":\"--wsr-heading-font-size-t\",\"wsr-heading-font-size-xt\":\"--wsr-heading-font-size-xt\",\"wsr-heading-line-height-xl\":\"--wsr-heading-line-height-xl\",\"wsr-heading-line-height-l\":\"--wsr-heading-line-height-l\",\"wsr-heading-line-height-m\":\"--wsr-heading-line-height-m\",\"wsr-heading-line-height-s\":\"--wsr-heading-line-height-s\",\"wsr-heading-line-height-t\":\"--wsr-heading-line-height-t\",\"wsr-heading-line-height-xt\":\"--wsr-heading-line-height-xt\"}; \n\n\n\n\n","\n\nimport \"./colors.st.css.js\";\nimport { classesRuntime, statesRuntime } from \"./../../stylable-esm-runtime.js\";\n\n\n\nvar _namespace_ = \"wds_1_269_0_defaultscrollbar\";\nvar _style_ = classesRuntime.bind(null, _namespace_);\n\nexport var cssStates = statesRuntime.bind(null, _namespace_);\nexport var style = _style_;\nexport var st = _style_;\n\nexport var namespace = _namespace_;\nexport var classes = {\"root\":\"wds_1_269_0_defaultscrollbar__root\",\"defaultScrollBar\":\"wds_1_269_0_defaultscrollbar__defaultScrollBar\"};\nexport var keyframes = {}; \nexport var layers = {};\nexport var containers = {};\nexport var stVars = {}; \nexport var vars = {\"wds-scrollbar-fill\":\"--wds-scrollbar-fill\",\"wds-scrollbar-fill-hover\":\"--wds-scrollbar-fill-hover\",\"wds-scrollbar-fill-active\":\"--wds-scrollbar-fill-active\",\"wds-border-radius-full\":\"--wds-border-radius-full\"}; \n\n\n\n\n","\n\nimport \"../Foundation/stylable/typography.st.css.js\";\nimport \"../Foundation/stylable/colors.st.css.js\";\nimport { classesRuntime, statesRuntime } from \"./../stylable-esm-runtime.js\";\n\n\n\nvar _namespace_ = \"wds_1_269_0_Text\";\nvar _style_ = classesRuntime.bind(null, _namespace_);\n\nexport var cssStates = statesRuntime.bind(null, _namespace_);\nexport var style = _style_;\nexport var st = _style_;\n\nexport var namespace = _namespace_;\nexport var classes = {\"root\":\"wds_1_269_0_Text__root\",\"text-tiny-thin\":\"wds_1_269_0_StylableTypography__text-tiny-thin\",\"text-tiny-normal\":\"wds_1_269_0_StylableTypography__text-tiny-normal\",\"text-tiny-bold\":\"wds_1_269_0_StylableTypography__text-tiny-bold\",\"text-small-thin\":\"wds_1_269_0_StylableTypography__text-small-thin\",\"text-small-normal\":\"wds_1_269_0_StylableTypography__text-small-normal\",\"text-small-bold\":\"wds_1_269_0_StylableTypography__text-small-bold\",\"text-medium-thin\":\"wds_1_269_0_StylableTypography__text-medium-thin\",\"text-medium-normal\":\"wds_1_269_0_StylableTypography__text-medium-normal\",\"text-medium-bold\":\"wds_1_269_0_StylableTypography__text-medium-bold\"};\nexport var keyframes = {}; \nexport var layers = {};\nexport var containers = {};\nexport var stVars = {\"listIconUrl\":\"url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath d='M9.5,14.4393398 L16.9393398,7 C17.232233,6.70710678 17.7071068,6.70710678 18,7 C18.2928932,7.29289322 18.2928932,7.76776695 18,8.06066017 L9.5,16.5606602 L6,13.0606602 C5.70710678,12.767767 5.70710678,12.2928932 6,12 C6.29289322,11.7071068 6.76776695,11.7071068 7.06066017,12 L9.5,14.4393398 Z'/%3E%3C/svg%3E\\\")\",\"listIconSmallUrl\":\"url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 18 18'%3E%3Cpath d='M11.9393398,6 C12.232233,5.70710678 12.7071068,5.70710678 13,6 C13.2928932,6.29289322 13.2928932,6.76776695 13,7.06066017 L7.5,12.5606602 L5,10.0606602 C4.70710678,9.76776695 4.70710678,9.29289322 5,9 C5.29289322,8.70710678 5.76776695,8.70710678 6.06066017,9 L7.5,10.4393398 L11.9393398,6 Z'/%3E%3C/svg%3E\\\")\",\"listCircleIconUrl\":\"url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='3'%3E%3C/circle%3E%3C/svg%3E\\\")\",\"listCircleIconSmallUrl\":\"url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 18 18'%3E%3Ccircle cx='9' cy='9' r='2'%3E%3C/circle%3E%3C/svg%3E\\\")\"}; \nexport var vars = {\"wds-color-text-standard-primary\":\"--wds-color-text-standard-primary\",\"wds-color-text-standard-primary-light\":\"--wds-color-text-standard-primary-light\",\"wds-color-text-standard-secondary\":\"--wds-color-text-standard-secondary\",\"wds-color-text-standard-secondary-light\":\"--wds-color-text-standard-secondary-light\",\"wds-color-fill-standard-primary\":\"--wds-color-fill-standard-primary\",\"wds-color-fill-standard-primary-hover\":\"--wds-color-fill-standard-primary-hover\",\"wds-color-text-disabled\":\"--wds-color-text-disabled\",\"wds-color-text-disabled-light\":\"--wds-color-text-disabled-light\",\"wds-color-text-success\":\"--wds-color-text-success\",\"wds-color-text-destructive\":\"--wds-color-text-destructive\",\"wds-color-text-premium\":\"--wds-color-text-premium\",\"wds-color-text-primary\":\"--wds-color-text-primary\",\"wds-font-line-height-body-medium\":\"--wds-font-line-height-body-medium\",\"wds-font-line-height-body-small\":\"--wds-font-line-height-body-small\",\"wds-font-line-height-body-tiny\":\"--wds-font-line-height-body-tiny\",\"wds-space-100\":\"--wds-space-100\",\"wds-space-150\":\"--wds-space-150\",\"wds-space-400\":\"--wds-space-400\",\"wds-space-500\":\"--wds-space-500\"}; \n\n\n\n\n","\n\nimport { classesRuntime, statesRuntime } from \"./../../stylable-esm-runtime.js\";\n\n\n\nvar _namespace_ = \"wds_1_269_0_easing\";\nvar _style_ = classesRuntime.bind(null, _namespace_);\n\nexport var cssStates = statesRuntime.bind(null, _namespace_);\nexport var style = _style_;\nexport var st = _style_;\n\nexport var namespace = _namespace_;\nexport var classes = {\"root\":\"wds_1_269_0_easing__root\"};\nexport var keyframes = {}; \nexport var layers = {};\nexport var containers = {};\nexport var stVars = {\"speed-fast-1\":\"100ms\",\"speed-fast-2\":\"150ms\",\"speed-medium-1\":\"200ms\",\"speed-medium-2\":\"300ms\",\"speed-slow-1\":\"400ms\",\"speed-slow-2\":\"500ms\",\"speed-slow-02\":\"600ms\",\"ease-1\":\"cubic-bezier(0.23, 1, 0.32, 1)\",\"ease-2\":\"cubic-bezier(0.25, 0.46, 0.45, 0.94)\",\"ease-3\":\"cubic-bezier(0, 0, 0.2, 1)\",\"ease-4\":\"cubic-bezier(0.4, 0.0, 1, 1)\",\"ease-5\":\"cubic-bezier(0.81, 0, 1, 1)\",\"ease-6\":\"cubic-bezier(0.18, 0.89, 0.32, 1.28)\",\"ease-7\":\"cubic-bezier(0.19, 1, 0.22, 1)\",\"ease-8\":\"ease-in-out\",\"ease-9\":\"linear\"}; \nexport var vars = {}; \n\n\n\n\n","\n\nimport \"../Foundation/stylable/colors.st.css.js\";\nimport \"../Foundation/stylable/shadows.st.css.js\";\nimport \"../Foundation/stylable/easing.st.css.js\";\nimport { classesRuntime, statesRuntime } from \"./../stylable-esm-runtime.js\";\n\n\n\nvar _namespace_ = \"wds_1_269_0_Popover\";\nvar _style_ = classesRuntime.bind(null, _namespace_);\n\nexport var cssStates = statesRuntime.bind(null, _namespace_);\nexport var style = _style_;\nexport var st = _style_;\n\nexport var namespace = _namespace_;\nexport var classes = {\"root\":\"wds_1_269_0_Popover__root\",\"content\":\"wds_1_269_0_Popover__content\",\"arrow\":\"wds_1_269_0_Popover__arrow\",\"element\":\"wds_1_269_0_Popover__element\",\"animationEnter\":\"wds_1_269_0_Popover__animationEnter\",\"animationEnterActive\":\"wds_1_269_0_Popover__animationEnterActive\",\"animationExit\":\"wds_1_269_0_Popover__animationExit\",\"animationExitActive\":\"wds_1_269_0_Popover__animationExitActive\"};\nexport var keyframes = {}; \nexport var layers = {};\nexport var containers = {};\nexport var stVars = {\"contentArrowSize\":\"8px\"}; \nexport var vars = {\"wds-popover-border-radius\":\"--wds-popover-border-radius\",\"wds-shadow-surface-overlay\":\"--wds-shadow-surface-overlay\",\"wds-color-fill-surface-overlay-dark\":\"--wds-color-fill-surface-overlay-dark\",\"wds-color-text-standard-primary\":\"--wds-color-text-standard-primary\",\"wds-color-text-standard-primary-light\":\"--wds-color-text-standard-primary-light\",\"wds-font-size-body-small\":\"--wds-font-size-body-small\",\"wds-font-line-height-body-small\":\"--wds-font-line-height-body-small\",\"wds-popover-fill\":\"--wds-popover-fill\",\"wds-popover-border-width\":\"--wds-popover-border-width\",\"wds-popover-border-fill\":\"--wds-popover-border-fill\"}; \n\n\n\n\n","import * as React from \"react\";\nconst CircleLoaderCheck = ({ size, ...props }) => /* @__PURE__ */ React.createElement(\"svg\", { viewBox: \"0 0 19 14\", fill: \"currentColor\", width: size || \"19\", height: size || \"14\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M16.4482656,0.439339828 C17.034052,-0.146446609 17.9837995,-0.146446609 18.5695859,0.439339828 C19.1553723,1.02512627 19.1553723,1.97487373 18.5695859,2.56066017 L7.56066017,13.5695859 C6.97487373,14.1553723 6.02512627,14.1553723 5.43933983,13.5695859 L0.439339828,8.5695859 C-0.146446609,7.98379946 -0.146446609,7.03405199 0.439339828,6.44826555 C1.02512627,5.86247912 1.97487373,5.86247912 2.56066017,6.44826555 L6.5,10.3876054 L16.4482656,0.439339828 Z\" }));\nCircleLoaderCheck.displayName = \"CircleLoaderCheck\";\nvar CircleLoaderCheck_default = CircleLoaderCheck;\nexport {\n  CircleLoaderCheck_default as default\n};\n","import * as React from \"react\";\nconst CircleLoaderCheckSmall = ({ size, ...props }) => /* @__PURE__ */ React.createElement(\"svg\", { viewBox: \"0 0 11 8\", fill: \"currentColor\", width: size || \"11\", height: size || \"8\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M1.70710678,3.29289322 C1.31658249,2.90236893 0.683417511,2.90236893 0.292893219,3.29289322 C-0.0976310729,3.68341751 -0.0976310729,4.31658249 0.292893219,4.70710678 L3.29289322,7.70710678 C3.68341751,8.09763107 4.31658249,8.09763107 4.70710678,7.70710678 L10.7071068,1.70710678 C11.0976311,1.31658249 11.0976311,0.683417511 10.7071068,0.292893219 C10.3165825,-0.0976310729 9.68341751,-0.0976310729 9.29289322,0.292893219 L4,5.58578644 L1.70710678,3.29289322 Z\" }));\nCircleLoaderCheckSmall.displayName = \"CircleLoaderCheckSmall\";\nvar CircleLoaderCheckSmall_default = CircleLoaderCheckSmall;\nexport {\n  CircleLoaderCheckSmall_default as default\n};\n","import * as React from \"react\";\nconst FormFieldError = ({ size, ...props }) => /* @__PURE__ */ React.createElement(\"svg\", { viewBox: \"0 0 2 10\", fill: \"currentColor\", width: size || \"2\", height: size || \"10\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M1.72673061,0.273269394 C1.91828145,0.464820242 2.01788194,0.72969704 2,1 L2,5 C2.01788194,5.27030296 1.91828145,5.53517976 1.72673061,5.72673061 C1.53517976,5.91828145 1.27030296,6.01788194 1,6 C0.72969704,6.01788194 0.464820242,5.91828145 0.273269394,5.72673061 C0.0817185472,5.53517976 -0.0178819397,5.27030296 -3.39950724e-13,5 L-3.39950724e-13,1 C-0.0178819397,0.72969704 0.0817185472,0.464820242 0.273269394,0.273269394 C0.464820242,0.0817185472 0.72969704,-0.0178819397 1,1.22124533e-15 C1.27030296,-0.0178819397 1.53517976,0.0817185472 1.72673061,0.273269394 Z M1.72673061,8.27326939 C1.91828145,8.46482024 2.01788194,8.72969704 2,9 C2.01788194,9.27030296 1.91828145,9.53517976 1.72673061,9.72673061 C1.53517976,9.91828145 1.27030296,10.0178819 1,10 C0.72969704,10.0178819 0.464820242,9.91828145 0.273269394,9.72673061 C0.0817185472,9.53517976 -0.0178819397,9.27030296 -3.40054807e-13,9 C-0.0178819397,8.72969704 0.0817185472,8.46482024 0.273269394,8.27326939 C0.464820242,8.08171855 0.72969704,7.98211806 1,8 C1.27030296,7.98211806 1.53517976,8.08171855 1.72673061,8.27326939 Z\" }));\nFormFieldError.displayName = \"FormFieldError\";\nvar FormFieldError_default = FormFieldError;\nexport {\n  FormFieldError_default as default\n};\n","import * as React from \"react\";\nconst FormFieldErrorSmall = ({ size, ...props }) => /* @__PURE__ */ React.createElement(\"svg\", { viewBox: \"0 0 2 10\", fill: \"currentColor\", width: size || \"2\", height: size || \"10\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { fillRule: \"evenodd\", d: \"M1,0 C1.55228475,0 2,0.44771525 2,1 L2,5 C2,5.55228475 1.55228475,6 1,6 C0.44771525,6 0,5.55228475 0,5 L0,1 C0,0.44771525 0.44771525,0 1,0 L1,0 Z M1,8 C1.55228475,8 2,8.44771525 2,9 C2,9.55228475 1.55228475,10 1,10 C0.44771525,10 0,9.55228475 0,9 C0,8.44771525 0.44771525,8 1,8 L1,8 Z\" }));\nFormFieldErrorSmall.displayName = \"FormFieldErrorSmall\";\nvar FormFieldErrorSmall_default = FormFieldErrorSmall;\nexport {\n  FormFieldErrorSmall_default as default\n};\n","import * as React from \"react\";\nconst ToggleOn = ({ size, ...props }) => /* @__PURE__ */ React.createElement(\"svg\", { viewBox: \"0 0 10 8\", fill: \"currentColor\", width: size || \"10\", height: size || \"8\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M3.8 5 1.2 2.5 0 3.7 3.8 7.5 10 1.2 8.8 0z\" }));\nToggleOn.displayName = \"ToggleOn\";\nvar ToggleOn_default = ToggleOn;\nexport {\n  ToggleOn_default as default\n};\n","import { default as default2 } from \"./components/AddItemLarge\";\nimport { default as default3 } from \"./components/AddItemMedium\";\nimport { default as default4 } from \"./components/AddItemSmall\";\nimport { default as default5 } from \"./components/AddMedia\";\nimport { default as default6 } from \"./components/Asterisk\";\nimport { default as default7 } from \"./components/BreadcrumbsChevronRight\";\nimport { default as default8 } from \"./components/CaretDown\";\nimport { default as default9 } from \"./components/CaretRight\";\nimport { default as default10 } from \"./components/CheckboxChecked\";\nimport { default as default11 } from \"./components/CheckboxIndeterminate\";\nimport { default as default12 } from \"./components/CircleLoaderCheck\";\nimport { default as default13 } from \"./components/CircleLoaderCheckSmall\";\nimport { default as default14 } from \"./components/Close\";\nimport { default as default15 } from \"./components/CloseLarge\";\nimport { default as default16 } from \"./components/DragAndDropLarge\";\nimport { default as default17 } from \"./components/DragAndDropLockedLarge\";\nimport { default as default18 } from \"./components/DragAndDropSmall\";\nimport { default as default19 } from \"./components/DropDownArrow\";\nimport { default as default20 } from \"./components/FaceDisapointed30\";\nimport { default as default21 } from \"./components/FaceFrowning30\";\nimport { default as default22 } from \"./components/FaceGrining30\";\nimport { default as default23 } from \"./components/FaceNeutral30\";\nimport { default as default24 } from \"./components/FaceSmiling30\";\nimport { default as default25 } from \"./components/FormFieldError\";\nimport { default as default26 } from \"./components/FormFieldErrorFilled\";\nimport { default as default27 } from \"./components/FormFieldErrorSmall\";\nimport { default as default28 } from \"./components/FormFieldSpinnerDown\";\nimport { default as default29 } from \"./components/FormFieldSpinnerUp\";\nimport { default as default30 } from \"./components/FormFieldSuccessFilled\";\nimport { default as default31 } from \"./components/FormFieldWarningFilled\";\nimport { default as default32 } from \"./components/Help24\";\nimport { default as default33 } from \"./components/InfoCircle\";\nimport { default as default34 } from \"./components/Move\";\nimport { default as default35 } from \"./components/MoveLarge\";\nimport { default as default36 } from \"./components/SocialButtonFacebook\";\nimport { default as default37 } from \"./components/SocialButtonInstagram\";\nimport { default as default38 } from \"./components/SocialButtonLinkedIn\";\nimport { default as default39 } from \"./components/SocialButtonPinterest\";\nimport { default as default40 } from \"./components/SocialButtonTwitter\";\nimport { default as default41 } from \"./components/SocialButtonX\";\nimport { default as default42 } from \"./components/SocialButtonYoutube\";\nimport { default as default43 } from \"./components/SortByArrowDown\";\nimport { default as default44 } from \"./components/SortByArrowUp\";\nimport { default as default45 } from \"./components/StarFilledLarge\";\nimport { default as default46 } from \"./components/StarFilledTiny\";\nimport { default as default47 } from \"./components/StarLarge\";\nimport { default as default48 } from \"./components/TextAreaAlignCenter\";\nimport { default as default49 } from \"./components/TextAreaAlignJustify\";\nimport { default as default50 } from \"./components/TextAreaAlignLeft\";\nimport { default as default51 } from \"./components/TextAreaAlignRight\";\nimport { default as default52 } from \"./components/TextAreaBold\";\nimport { default as default53 } from \"./components/TextAreaBulletList\";\nimport { default as default54 } from \"./components/TextAreaImage\";\nimport { default as default55 } from \"./components/TextAreaItalic\";\nimport { default as default56 } from \"./components/TextAreaLeftToRight\";\nimport { default as default57 } from \"./components/TextAreaLink\";\nimport { default as default58 } from \"./components/TextAreaNumberedList\";\nimport { default as default59 } from \"./components/TextAreaRightToLeft\";\nimport { default as default60 } from \"./components/TextAreaTable\";\nimport { default as default61 } from \"./components/TextAreaTextColor\";\nimport { default as default62 } from \"./components/TextAreaUnderline\";\nimport { default as default63 } from \"./components/ToggleOff\";\nimport { default as default64 } from \"./components/ToggleOffSmall\";\nimport { default as default65 } from \"./components/ToggleOn\";\nimport { default as default66 } from \"./components/ToggleOnSmall\";\nexport {\n  default2 as AddItemLarge,\n  default3 as AddItemMedium,\n  default4 as AddItemSmall,\n  default5 as AddMedia,\n  default6 as Asterisk,\n  default7 as BreadcrumbsChevronRight,\n  default8 as CaretDown,\n  default9 as CaretRight,\n  default10 as CheckboxChecked,\n  default11 as CheckboxIndeterminate,\n  default12 as CircleLoaderCheck,\n  default13 as CircleLoaderCheckSmall,\n  default14 as Close,\n  default15 as CloseLarge,\n  default16 as DragAndDropLarge,\n  default17 as DragAndDropLockedLarge,\n  default18 as DragAndDropSmall,\n  default19 as DropDownArrow,\n  default20 as FaceDisapointed30,\n  default21 as FaceFrowning30,\n  default22 as FaceGrining30,\n  default23 as FaceNeutral30,\n  default24 as FaceSmiling30,\n  default25 as FormFieldError,\n  default26 as FormFieldErrorFilled,\n  default27 as FormFieldErrorSmall,\n  default28 as FormFieldSpinnerDown,\n  default29 as FormFieldSpinnerUp,\n  default30 as FormFieldSuccessFilled,\n  default31 as FormFieldWarningFilled,\n  default32 as Help24,\n  default33 as InfoCircle,\n  default34 as Move,\n  default35 as MoveLarge,\n  default36 as SocialButtonFacebook,\n  default37 as SocialButtonInstagram,\n  default38 as SocialButtonLinkedIn,\n  default39 as SocialButtonPinterest,\n  default40 as SocialButtonTwitter,\n  default41 as SocialButtonX,\n  default42 as SocialButtonYoutube,\n  default43 as SortByArrowDown,\n  default44 as SortByArrowUp,\n  default45 as StarFilledLarge,\n  default46 as StarFilledTiny,\n  default47 as StarLarge,\n  default48 as TextAreaAlignCenter,\n  default49 as TextAreaAlignJustify,\n  default50 as TextAreaAlignLeft,\n  default51 as TextAreaAlignRight,\n  default52 as TextAreaBold,\n  default53 as TextAreaBulletList,\n  default54 as TextAreaImage,\n  default55 as TextAreaItalic,\n  default56 as TextAreaLeftToRight,\n  default57 as TextAreaLink,\n  default58 as TextAreaNumberedList,\n  default59 as TextAreaRightToLeft,\n  default60 as TextAreaTable,\n  default61 as TextAreaTextColor,\n  default62 as TextAreaUnderline,\n  default63 as ToggleOff,\n  default64 as ToggleOffSmall,\n  default65 as ToggleOn,\n  default66 as ToggleOnSmall\n};\n","export * from \"./dist\";\n",null,"/**\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","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","/** 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 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","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","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\nmodule.exports = function shallowEqual(objA, objB, compare, compareContext) {\n  var ret = compare ? compare.call(compareContext, objA, objB) : void 0;\n\n  if (ret !== void 0) {\n    return !!ret;\n  }\n\n  if (objA === objB) {\n    return true;\n  }\n\n  if (typeof objA !== \"object\" || !objA || typeof objB !== \"object\" || !objB) {\n    return false;\n  }\n\n  var keysA = Object.keys(objA);\n  var keysB = Object.keys(objB);\n\n  if (keysA.length !== keysB.length) {\n    return false;\n  }\n\n  var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);\n\n  // Test for A's keys different from B.\n  for (var idx = 0; idx < keysA.length; idx++) {\n    var key = keysA[idx];\n\n    if (!bHasOwnProperty(key)) {\n      return false;\n    }\n\n    var valueA = objA[key];\n    var valueB = objB[key];\n\n    ret = compare ? compare.call(compareContext, valueA, valueB, key) : void 0;\n\n    if (ret === false || (ret === void 0 && valueA !== valueB)) {\n      return false;\n    }\n  }\n\n  return true;\n};\n","\nimport \"../Popover/Popover.st.css.js\";\nimport \"../Foundation/stylable/typography.st.css.js\";\n\nimport \"../Foundation/stylable/colors.st.css.js\";\nimport \"../Foundation/stylable/shadows.st.css.js\";\nimport \"../Text/Text.st.css.js\";\nimport { classesRuntime, statesRuntime } from \"./../stylable-esm-runtime.js\";\n\n\n\nvar _namespace_ = \"wds_1_269_0_Tooltip\";\nvar _style_ = classesRuntime.bind(null, _namespace_);\n\nexport var cssStates = statesRuntime.bind(null, _namespace_);\nexport var style = _style_;\nexport var st = _style_;\n\nexport var namespace = _namespace_;\nexport var classes = {\"root\":\"wds_1_269_0_Tooltip__root\",\"content\":\"wds_1_269_0_Popover__content\",\"text-small-normal\":\"wds_1_269_0_StylableTypography__text-small-normal\",\"text-tiny-thin\":\"wds_1_269_0_StylableTypography__text-tiny-thin\",\"text\":\"wds_1_269_0_Tooltip__text\"};\nexport var keyframes = {}; \nexport var layers = {};\nexport var containers = {};\nexport var stVars = {}; \nexport var vars = {\"wsr-text-line-height-tiny\":\"--wsr-text-line-height-tiny\",\"wsr-font-weight-regular\":\"--wsr-font-weight-regular\",\"wsr-text-font-size-small\":\"--wsr-text-font-size-small\",\"wsr-text-line-height-small\":\"--wsr-text-line-height-small\",\"wds-tooltip-padding-vertical-medium\":\"--wds-tooltip-padding-vertical-medium\",\"wds-tooltip-padding-horizontal-medium\":\"--wds-tooltip-padding-horizontal-medium\",\"wds-tooltip-padding-vertical-small\":\"--wds-tooltip-padding-vertical-small\",\"wds-tooltip-padding-horizontal-small\":\"--wds-tooltip-padding-horizontal-small\",\"wds-tooltip-background-fill\":\"--wds-tooltip-background-fill\",\"wds-tooltip-text-fill\":\"--wds-tooltip-text-fill\",\"wds-tooltip-border-radius\":\"--wds-tooltip-border-radius\",\"wds-tooltip-label-font-weight-medium\":\"--wds-tooltip-label-font-weight-medium\",\"wds-tooltip-label-font-size-medium\":\"--wds-tooltip-label-font-size-medium\",\"wds-tooltip-label-font-line-height-small\":\"--wds-tooltip-label-font-line-height-small\",\"wds-tooltip-label-font-line-height-medium\":\"--wds-tooltip-label-font-line-height-medium\",\"wds-shadow-surface-overlay-dark\":\"--wds-shadow-surface-overlay-dark\",\"wds-font-line-height-body-tiny\":\"--wds-font-line-height-body-tiny\",\"wds-font-weight-regular\":\"--wds-font-weight-regular\",\"wds-font-size-body-small\":\"--wds-font-size-body-small\",\"wds-font-line-height-body-small\":\"--wds-font-line-height-body-small\",\"wds-border-width-none\":\"--wds-border-width-none\"}; \n\n\n\n\n","\nimport \"../../Tooltip/Tooltip.st.css.js\";\nimport { classesRuntime, statesRuntime } from \"./../../stylable-esm-runtime.js\";\n\n\n\nvar _namespace_ = \"wds_1_269_0_Ellipsis\";\nvar _style_ = classesRuntime.bind(null, _namespace_);\n\nexport var cssStates = statesRuntime.bind(null, _namespace_);\nexport var style = _style_;\nexport var st = _style_;\n\nexport var namespace = _namespace_;\nexport var classes = {\"root\":\"wds_1_269_0_Ellipsis__root\",\"tooltip\":\"wds_1_269_0_Ellipsis__tooltip\"};\nexport var keyframes = {}; \nexport var layers = {};\nexport var containers = {};\nexport var stVars = {}; \nexport var vars = {\"maxLines\":\"--wds_1_269_0_Ellipsis-maxLines\"}; \n\n\n\n\n",null,"import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inheritsLoose(t, o) {\n  t.prototype = Object.create(o.prototype), t.prototype.constructor = t, setPrototypeOf(t, o);\n}\nexport { _inheritsLoose as default };","'use strict';\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n","'use strict';\n\nvar keysShim;\nif (!Object.keys) {\n\t// modified from https://github.com/es-shims/es5-shim\n\tvar has = Object.prototype.hasOwnProperty;\n\tvar toStr = Object.prototype.toString;\n\tvar isArgs = require('./isArguments'); // eslint-disable-line global-require\n\tvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\tvar hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\n\tvar hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\n\tvar dontEnums = [\n\t\t'toString',\n\t\t'toLocaleString',\n\t\t'valueOf',\n\t\t'hasOwnProperty',\n\t\t'isPrototypeOf',\n\t\t'propertyIsEnumerable',\n\t\t'constructor'\n\t];\n\tvar equalsConstructorPrototype = function (o) {\n\t\tvar ctor = o.constructor;\n\t\treturn ctor && ctor.prototype === o;\n\t};\n\tvar excludedKeys = {\n\t\t$applicationCache: true,\n\t\t$console: true,\n\t\t$external: true,\n\t\t$frame: true,\n\t\t$frameElement: true,\n\t\t$frames: true,\n\t\t$innerHeight: true,\n\t\t$innerWidth: true,\n\t\t$onmozfullscreenchange: true,\n\t\t$onmozfullscreenerror: true,\n\t\t$outerHeight: true,\n\t\t$outerWidth: true,\n\t\t$pageXOffset: true,\n\t\t$pageYOffset: true,\n\t\t$parent: true,\n\t\t$scrollLeft: true,\n\t\t$scrollTop: true,\n\t\t$scrollX: true,\n\t\t$scrollY: true,\n\t\t$self: true,\n\t\t$webkitIndexedDB: true,\n\t\t$webkitStorageInfo: true,\n\t\t$window: true\n\t};\n\tvar hasAutomationEqualityBug = (function () {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined') { return false; }\n\t\tfor (var k in window) {\n\t\t\ttry {\n\t\t\t\tif (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}());\n\tvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t}\n\t\ttry {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tkeysShim = function keys(object) {\n\t\tvar isObject = object !== null && typeof object === 'object';\n\t\tvar isFunction = toStr.call(object) === '[object Function]';\n\t\tvar isArguments = isArgs(object);\n\t\tvar isString = isObject && toStr.call(object) === '[object String]';\n\t\tvar theKeys = [];\n\n\t\tif (!isObject && !isFunction && !isArguments) {\n\t\t\tthrow new TypeError('Object.keys called on a non-object');\n\t\t}\n\n\t\tvar skipProto = hasProtoEnumBug && isFunction;\n\t\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\t\ttheKeys.push(String(i));\n\t\t\t}\n\t\t}\n\n\t\tif (isArguments && object.length > 0) {\n\t\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\t\ttheKeys.push(String(j));\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var name in object) {\n\t\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\t\ttheKeys.push(String(name));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (hasDontEnumBug) {\n\t\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn theKeys;\n\t};\n}\nmodule.exports = keysShim;\n","'use strict';\n\nvar slice = Array.prototype.slice;\nvar isArgs = require('./isArguments');\n\nvar origKeys = Object.keys;\nvar keysShim = origKeys ? function keys(o) { return origKeys(o); } : require('./implementation');\n\nvar originalKeys = Object.keys;\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (Object.keys) {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\tvar args = Object.keys(arguments);\n\t\t\treturn args && args.length === arguments.length;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tObject.keys = function keys(object) { // eslint-disable-line func-name-matching\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t}\n\t\t\t\treturn originalKeys(object);\n\t\t\t};\n\t\t}\n\t} else {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n","'use strict';\n\n/** @type {import('./shams')} */\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\t/** @type {{ [k in symbol]?: unknown }} */\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 (var _ 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\t// eslint-disable-next-line no-extra-parens\n\t\tvar descriptor = /** @type {PropertyDescriptor} */ (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 hasSymbols = require('has-symbols/shams');\n\n/** @type {import('.')} */\nmodule.exports = function hasToStringTagShams() {\n\treturn hasSymbols() && !!Symbol.toStringTag;\n};\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Object;\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Error;\n","'use strict';\n\n/** @type {import('./eval')} */\nmodule.exports = EvalError;\n","'use strict';\n\n/** @type {import('./range')} */\nmodule.exports = RangeError;\n","'use strict';\n\n/** @type {import('./ref')} */\nmodule.exports = ReferenceError;\n","'use strict';\n\n/** @type {import('./syntax')} */\nmodule.exports = SyntaxError;\n","'use strict';\n\n/** @type {import('./type')} */\nmodule.exports = TypeError;\n","'use strict';\n\n/** @type {import('./uri')} */\nmodule.exports = URIError;\n","'use strict';\n\n/** @type {import('./abs')} */\nmodule.exports = Math.abs;\n","'use strict';\n\n/** @type {import('./floor')} */\nmodule.exports = Math.floor;\n","'use strict';\n\n/** @type {import('./max')} */\nmodule.exports = Math.max;\n","'use strict';\n\n/** @type {import('./min')} */\nmodule.exports = Math.min;\n","'use strict';\n\n/** @type {import('./pow')} */\nmodule.exports = Math.pow;\n","'use strict';\n\n/** @type {import('./round')} */\nmodule.exports = Math.round;\n","'use strict';\n\n/** @type {import('./isNaN')} */\nmodule.exports = Number.isNaN || function isNaN(a) {\n\treturn a !== a;\n};\n","'use strict';\n\nvar $isNaN = require('./isNaN');\n\n/** @type {import('./sign')} */\nmodule.exports = function sign(number) {\n\tif ($isNaN(number) || number === 0) {\n\t\treturn number;\n\t}\n\treturn number < 0 ? -1 : +1;\n};\n","'use strict';\n\n/** @type {import('./gOPD')} */\nmodule.exports = Object.getOwnPropertyDescriptor;\n","'use strict';\n\n/** @type {import('.')} */\nvar $gOPD = require('./gOPD');\n\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n","'use strict';\n\n/** @type {import('.')} */\nvar $defineProperty = Object.defineProperty || false;\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 = false;\n\t}\n}\n\nmodule.exports = $defineProperty;\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\n/** @type {import('.')} */\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/** @type {import('./Reflect.getPrototypeOf')} */\nmodule.exports = (typeof Reflect !== 'undefined' && Reflect.getPrototypeOf) || null;\n","'use strict';\n\nvar $Object = require('es-object-atoms');\n\n/** @type {import('./Object.getPrototypeOf')} */\nmodule.exports = $Object.getPrototypeOf || null;\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar toStr = Object.prototype.toString;\nvar max = Math.max;\nvar funcType = '[object Function]';\n\nvar concatty = function concatty(a, b) {\n    var arr = [];\n\n    for (var i = 0; i < a.length; i += 1) {\n        arr[i] = a[i];\n    }\n    for (var j = 0; j < b.length; j += 1) {\n        arr[j + a.length] = b[j];\n    }\n\n    return arr;\n};\n\nvar slicy = function slicy(arrLike, offset) {\n    var arr = [];\n    for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) {\n        arr[j] = arrLike[i];\n    }\n    return arr;\n};\n\nvar joiny = function (arr, joiner) {\n    var str = '';\n    for (var i = 0; i < arr.length; i += 1) {\n        str += arr[i];\n        if (i + 1 < arr.length) {\n            str += joiner;\n        }\n    }\n    return str;\n};\n\nmodule.exports = function bind(that) {\n    var target = this;\n    if (typeof target !== 'function' || toStr.apply(target) !== funcType) {\n        throw new TypeError(ERROR_MESSAGE + target);\n    }\n    var args = slicy(arguments, 1);\n\n    var bound;\n    var binder = function () {\n        if (this instanceof bound) {\n            var result = target.apply(\n                this,\n                concatty(args, arguments)\n            );\n            if (Object(result) === result) {\n                return result;\n            }\n            return this;\n        }\n        return target.apply(\n            that,\n            concatty(args, arguments)\n        );\n\n    };\n\n    var boundLength = max(0, target.length - args.length);\n    var boundArgs = [];\n    for (var i = 0; i < boundLength; i++) {\n        boundArgs[i] = '$' + i;\n    }\n\n    bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ 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\n/** @type {import('./functionCall')} */\nmodule.exports = Function.prototype.call;\n","'use strict';\n\n/** @type {import('./functionApply')} */\nmodule.exports = Function.prototype.apply;\n","'use strict';\n\n/** @type {import('./reflectApply')} */\nmodule.exports = typeof Reflect !== 'undefined' && Reflect && Reflect.apply;\n","'use strict';\n\nvar bind = require('function-bind');\n\nvar $apply = require('./functionApply');\nvar $call = require('./functionCall');\nvar $reflectApply = require('./reflectApply');\n\n/** @type {import('./actualApply')} */\nmodule.exports = $reflectApply || bind.call($call, $apply);\n","'use strict';\n\nvar bind = require('function-bind');\nvar $TypeError = require('es-errors/type');\n\nvar $call = require('./functionCall');\nvar $actualApply = require('./actualApply');\n\n/** @type {(args: [Function, thisArg?: unknown, ...args: unknown[]]) => Function} TODO FIXME, find a way to use import('.') */\nmodule.exports = function callBindBasic(args) {\n\tif (args.length < 1 || typeof args[0] !== 'function') {\n\t\tthrow new $TypeError('a function is required');\n\t}\n\treturn $actualApply(bind, $call, args);\n};\n","'use strict';\n\nvar callBind = require('call-bind-apply-helpers');\nvar gOPD = require('gopd');\n\nvar hasProtoAccessor;\ntry {\n\t// eslint-disable-next-line no-extra-parens, no-proto\n\thasProtoAccessor = /** @type {{ __proto__?: typeof Array.prototype }} */ ([]).__proto__ === Array.prototype;\n} catch (e) {\n\tif (!e || typeof e !== 'object' || !('code' in e) || e.code !== 'ERR_PROTO_ACCESS') {\n\t\tthrow e;\n\t}\n}\n\n// eslint-disable-next-line no-extra-parens\nvar desc = !!hasProtoAccessor && gOPD && gOPD(Object.prototype, /** @type {keyof typeof Object.prototype} */ ('__proto__'));\n\nvar $Object = Object;\nvar $getPrototypeOf = $Object.getPrototypeOf;\n\n/** @type {import('./get')} */\nmodule.exports = desc && typeof desc.get === 'function'\n\t? callBind([desc.get])\n\t: typeof $getPrototypeOf === 'function'\n\t\t? /** @type {import('./get')} */ function getDunder(value) {\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\treturn $getPrototypeOf(value == null ? value : $Object(value));\n\t\t}\n\t\t: false;\n","'use strict';\n\nvar reflectGetProto = require('./Reflect.getPrototypeOf');\nvar originalGetProto = require('./Object.getPrototypeOf');\n\nvar getDunderProto = require('dunder-proto/get');\n\n/** @type {import('.')} */\nmodule.exports = reflectGetProto\n\t? function getProto(O) {\n\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\treturn reflectGetProto(O);\n\t}\n\t: originalGetProto\n\t\t? function getProto(O) {\n\t\t\tif (!O || (typeof O !== 'object' && typeof O !== 'function')) {\n\t\t\t\tthrow new TypeError('getProto: not an object');\n\t\t\t}\n\t\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\t\treturn originalGetProto(O);\n\t\t}\n\t\t: getDunderProto\n\t\t\t? function getProto(O) {\n\t\t\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\t\t\treturn getDunderProto(O);\n\t\t\t}\n\t\t\t: null;\n","'use strict';\n\nvar call = Function.prototype.call;\nvar $hasOwn = Object.prototype.hasOwnProperty;\nvar bind = require('function-bind');\n\n/** @type {import('.')} */\nmodule.exports = bind.call(call, $hasOwn);\n","'use strict';\n\nvar undefined;\n\nvar $Object = require('es-object-atoms');\n\nvar $Error = require('es-errors');\nvar $EvalError = require('es-errors/eval');\nvar $RangeError = require('es-errors/range');\nvar $ReferenceError = require('es-errors/ref');\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\nvar $URIError = require('es-errors/uri');\n\nvar abs = require('math-intrinsics/abs');\nvar floor = require('math-intrinsics/floor');\nvar max = require('math-intrinsics/max');\nvar min = require('math-intrinsics/min');\nvar pow = require('math-intrinsics/pow');\nvar round = require('math-intrinsics/round');\nvar sign = require('math-intrinsics/sign');\n\nvar $Function = Function;\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 = require('gopd');\nvar $defineProperty = require('es-define-property');\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 = require('get-proto');\nvar $ObjectGPO = require('get-proto/Object.getPrototypeOf');\nvar $ReflectGPO = require('get-proto/Reflect.getPrototypeOf');\n\nvar $apply = require('call-bind-apply-helpers/functionApply');\nvar $call = require('call-bind-apply-helpers/functionCall');\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t__proto__: null,\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 ? 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'%Float16Array%': typeof Float16Array === 'undefined' ? undefined : Float16Array,\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(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 || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': $Object,\n\t'%Object.getOwnPropertyDescriptor%': $gOPD,\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 || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols && getProto ? 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\t'%Function.prototype.call%': $call,\n\t'%Function.prototype.apply%': $apply,\n\t'%Object.defineProperty%': $defineProperty,\n\t'%Object.getPrototypeOf%': $ObjectGPO,\n\t'%Math.abs%': abs,\n\t'%Math.floor%': floor,\n\t'%Math.max%': max,\n\t'%Math.min%': min,\n\t'%Math.pow%': pow,\n\t'%Math.round%': round,\n\t'%Math.sign%': sign,\n\t'%Reflect.getPrototypeOf%': $ReflectGPO\n};\n\nif (getProto) {\n\ttry {\n\t\tnull.error; // eslint-disable-line no-unused-expressions\n\t} catch (e) {\n\t\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\t\tvar errorProto = getProto(getProto(e));\n\t\tINTRINSICS['%Error.prototype%'] = errorProto;\n\t}\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 && getProto) {\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__proto__: null,\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('hasown');\nvar $concat = bind.call($call, Array.prototype.concat);\nvar $spliceApply = bind.call($apply, Array.prototype.splice);\nvar $replace = bind.call($call, String.prototype.replace);\nvar $strSlice = bind.call($call, String.prototype.slice);\nvar $exec = bind.call($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 $defineProperty = require('es-define-property');\n\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\n\nvar gopd = require('gopd');\n\n/** @type {import('.')} */\nmodule.exports = function defineDataProperty(\n\tobj,\n\tproperty,\n\tvalue\n) {\n\tif (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) {\n\t\tthrow new $TypeError('`obj` must be an object or a function`');\n\t}\n\tif (typeof property !== 'string' && typeof property !== 'symbol') {\n\t\tthrow new $TypeError('`property` must be a string or a symbol`');\n\t}\n\tif (arguments.length > 3 && typeof arguments[3] !== 'boolean' && arguments[3] !== null) {\n\t\tthrow new $TypeError('`nonEnumerable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 4 && typeof arguments[4] !== 'boolean' && arguments[4] !== null) {\n\t\tthrow new $TypeError('`nonWritable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 5 && typeof arguments[5] !== 'boolean' && arguments[5] !== null) {\n\t\tthrow new $TypeError('`nonConfigurable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 6 && typeof arguments[6] !== 'boolean') {\n\t\tthrow new $TypeError('`loose`, if provided, must be a boolean');\n\t}\n\n\tvar nonEnumerable = arguments.length > 3 ? arguments[3] : null;\n\tvar nonWritable = arguments.length > 4 ? arguments[4] : null;\n\tvar nonConfigurable = arguments.length > 5 ? arguments[5] : null;\n\tvar loose = arguments.length > 6 ? arguments[6] : false;\n\n\t/* @type {false | TypedPropertyDescriptor<unknown>} */\n\tvar desc = !!gopd && gopd(obj, property);\n\n\tif ($defineProperty) {\n\t\t$defineProperty(obj, property, {\n\t\t\tconfigurable: nonConfigurable === null && desc ? desc.configurable : !nonConfigurable,\n\t\t\tenumerable: nonEnumerable === null && desc ? desc.enumerable : !nonEnumerable,\n\t\t\tvalue: value,\n\t\t\twritable: nonWritable === null && desc ? desc.writable : !nonWritable\n\t\t});\n\t} else if (loose || (!nonEnumerable && !nonWritable && !nonConfigurable)) {\n\t\t// must fall back to [[Set]], and was not explicitly asked to make non-enumerable, non-writable, or non-configurable\n\t\tobj[property] = value; // eslint-disable-line no-param-reassign\n\t} else {\n\t\tthrow new $SyntaxError('This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.');\n\t}\n};\n","'use strict';\n\nvar $defineProperty = require('es-define-property');\n\nvar hasPropertyDescriptors = function hasPropertyDescriptors() {\n\treturn !!$defineProperty;\n};\n\nhasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() {\n\t// node v0.6 has a bug where array lengths can be Set but not Defined\n\tif (!$defineProperty) {\n\t\treturn null;\n\t}\n\ttry {\n\t\treturn $defineProperty([], 'length', { value: 1 }).length !== 1;\n\t} catch (e) {\n\t\t// In Firefox 4-22, defining length on an array throws an exception.\n\t\treturn true;\n\t}\n};\n\nmodule.exports = hasPropertyDescriptors;\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar define = require('define-data-property');\nvar hasDescriptors = require('has-property-descriptors')();\nvar gOPD = require('gopd');\n\nvar $TypeError = require('es-errors/type');\nvar $floor = GetIntrinsic('%Math.floor%');\n\n/** @type {import('.')} */\nmodule.exports = function setFunctionLength(fn, length) {\n\tif (typeof fn !== 'function') {\n\t\tthrow new $TypeError('`fn` is not a function');\n\t}\n\tif (typeof length !== 'number' || length < 0 || length > 0xFFFFFFFF || $floor(length) !== length) {\n\t\tthrow new $TypeError('`length` must be a positive 32-bit integer');\n\t}\n\n\tvar loose = arguments.length > 2 && !!arguments[2];\n\n\tvar functionLengthIsConfigurable = true;\n\tvar functionLengthIsWritable = true;\n\tif ('length' in fn && gOPD) {\n\t\tvar desc = gOPD(fn, 'length');\n\t\tif (desc && !desc.configurable) {\n\t\t\tfunctionLengthIsConfigurable = false;\n\t\t}\n\t\tif (desc && !desc.writable) {\n\t\t\tfunctionLengthIsWritable = false;\n\t\t}\n\t}\n\n\tif (functionLengthIsConfigurable || functionLengthIsWritable || !loose) {\n\t\tif (hasDescriptors) {\n\t\t\tdefine(/** @type {Parameters<define>[0]} */ (fn), 'length', length, true, true);\n\t\t} else {\n\t\t\tdefine(/** @type {Parameters<define>[0]} */ (fn), 'length', length);\n\t\t}\n\t}\n\treturn fn;\n};\n","'use strict';\n\nvar bind = require('function-bind');\nvar $apply = require('./functionApply');\nvar actualApply = require('./actualApply');\n\n/** @type {import('./applyBind')} */\nmodule.exports = function applyBind() {\n\treturn actualApply(bind, $apply, arguments);\n};\n","'use strict';\n\nvar setFunctionLength = require('set-function-length');\n\nvar $defineProperty = require('es-define-property');\n\nvar callBindBasic = require('call-bind-apply-helpers');\nvar applyBind = require('call-bind-apply-helpers/applyBind');\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = callBindBasic(arguments);\n\tvar adjustedLength = originalFunction.length - (arguments.length - 1);\n\treturn setFunctionLength(\n\t\tfunc,\n\t\t1 + (adjustedLength > 0 ? adjustedLength : 0),\n\t\ttrue\n\t);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\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 hasToStringTag = require('has-tostringtag/shams')();\nvar callBound = require('call-bind/callBound');\n\nvar $toString = callBound('Object.prototype.toString');\n\nvar isStandardArguments = function isArguments(value) {\n\tif (hasToStringTag && value && typeof value === 'object' && Symbol.toStringTag in value) {\n\t\treturn false;\n\t}\n\treturn $toString(value) === '[object Arguments]';\n};\n\nvar isLegacyArguments = function isArguments(value) {\n\tif (isStandardArguments(value)) {\n\t\treturn true;\n\t}\n\treturn value !== null &&\n\t\ttypeof value === 'object' &&\n\t\ttypeof value.length === 'number' &&\n\t\tvalue.length >= 0 &&\n\t\t$toString(value) !== '[object Array]' &&\n\t\t$toString(value.callee) === '[object Function]';\n};\n\nvar supportsStandardArguments = (function () {\n\treturn isStandardArguments(arguments);\n}());\n\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\n\nmodule.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\n","'use strict';\n\nvar keys = require('object-keys');\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';\n\nvar toStr = Object.prototype.toString;\nvar concat = Array.prototype.concat;\nvar defineDataProperty = require('define-data-property');\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar supportsDescriptors = require('has-property-descriptors')();\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object) {\n\t\tif (predicate === true) {\n\t\t\tif (object[name] === value) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t} else if (!isFunction(predicate) || !predicate()) {\n\t\t\treturn;\n\t\t}\n\t}\n\n\tif (supportsDescriptors) {\n\t\tdefineDataProperty(object, name, value, true);\n\t} else {\n\t\tdefineDataProperty(object, name, value);\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tvar props = keys(map);\n\tif (hasSymbols) {\n\t\tprops = concat.call(props, Object.getOwnPropertySymbols(map));\n\t}\n\tfor (var i = 0; i < props.length; i += 1) {\n\t\tdefineProperty(object, props[i], map[props[i]], predicates[props[i]]);\n\t}\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n","'use strict';\n\nvar numberIsNaN = function (value) {\n\treturn value !== value;\n};\n\nmodule.exports = function is(a, b) {\n\tif (a === 0 && b === 0) {\n\t\treturn 1 / a === 1 / b;\n\t}\n\tif (a === b) {\n\t\treturn true;\n\t}\n\tif (numberIsNaN(a) && numberIsNaN(b)) {\n\t\treturn true;\n\t}\n\treturn false;\n};\n\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = function getPolyfill() {\n\treturn typeof Object.is === 'function' ? Object.is : implementation;\n};\n","'use strict';\n\nvar getPolyfill = require('./polyfill');\nvar define = require('define-properties');\n\nmodule.exports = function shimObjectIs() {\n\tvar polyfill = getPolyfill();\n\tdefine(Object, { is: polyfill }, {\n\t\tis: function testObjectIs() {\n\t\t\treturn Object.is !== polyfill;\n\t\t}\n\t});\n\treturn polyfill;\n};\n","'use strict';\n\nvar define = require('define-properties');\nvar callBind = require('call-bind');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar polyfill = callBind(getPolyfill(), Object);\n\ndefine(polyfill, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = polyfill;\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBindBasic = require('call-bind-apply-helpers');\n\n/** @type {(thisArg: string, searchString: string, position?: number) => number} */\nvar $indexOf = callBindBasic([GetIntrinsic('%String.prototype.indexOf%')]);\n\n/** @type {import('.')} */\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\t/* eslint no-extra-parens: 0 */\n\n\tvar intrinsic = /** @type {(this: unknown, ...args: unknown[]) => unknown} */ (GetIntrinsic(name, !!allowMissing));\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBindBasic(/** @type {const} */ ([intrinsic]));\n\t}\n\treturn intrinsic;\n};\n","'use strict';\n\nvar callBound = require('call-bound');\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar hasOwn = require('hasown');\nvar gOPD = require('gopd');\n\n/** @type {import('.')} */\nvar fn;\n\nif (hasToStringTag) {\n\t/** @type {(receiver: ThisParameterType<typeof RegExp.prototype.exec>, ...args: Parameters<typeof RegExp.prototype.exec>) => ReturnType<typeof RegExp.prototype.exec>} */\n\tvar $exec = callBound('RegExp.prototype.exec');\n\t/** @type {object} */\n\tvar isRegexMarker = {};\n\n\tvar throwRegexMarker = function () {\n\t\tthrow isRegexMarker;\n\t};\n\t/** @type {{ toString(): never, valueOf(): never, [Symbol.toPrimitive]?(): never }} */\n\tvar badStringifier = {\n\t\ttoString: throwRegexMarker,\n\t\tvalueOf: throwRegexMarker\n\t};\n\n\tif (typeof Symbol.toPrimitive === 'symbol') {\n\t\tbadStringifier[Symbol.toPrimitive] = throwRegexMarker;\n\t}\n\n\t/** @type {import('.')} */\n\t// @ts-expect-error TS can't figure out that the $exec call always throws\n\t// eslint-disable-next-line consistent-return\n\tfn = function isRegex(value) {\n\t\tif (!value || typeof value !== 'object') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// eslint-disable-next-line no-extra-parens\n\t\tvar descriptor = /** @type {NonNullable<typeof gOPD>} */ (gOPD)(/** @type {{ lastIndex?: unknown }} */ (value), 'lastIndex');\n\t\tvar hasLastIndexDataProperty = descriptor && hasOwn(descriptor, 'value');\n\t\tif (!hasLastIndexDataProperty) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\t$exec(value, /** @type {string} */ (/** @type {unknown} */ (badStringifier)));\n\t\t} catch (e) {\n\t\t\treturn e === isRegexMarker;\n\t\t}\n\t};\n} else {\n\t/** @type {(receiver: ThisParameterType<typeof Object.prototype.toString>, ...args: Parameters<typeof Object.prototype.toString>) => ReturnType<typeof Object.prototype.toString>} */\n\tvar $toString = callBound('Object.prototype.toString');\n\t/** @const @type {'[object RegExp]'} */\n\tvar regexClass = '[object RegExp]';\n\n\t/** @type {import('.')} */\n\tfn = function isRegex(value) {\n\t\t// In older browsers, typeof regex incorrectly returns 'function'\n\t\tif (!value || (typeof value !== 'object' && typeof value !== 'function')) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn $toString(value) === regexClass;\n\t};\n}\n\nmodule.exports = fn;\n","'use strict';\n\nvar functionsHaveNames = function functionsHaveNames() {\n\treturn typeof function f() {}.name === 'string';\n};\n\nvar gOPD = Object.getOwnPropertyDescriptor;\nif (gOPD) {\n\ttry {\n\t\tgOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\tgOPD = null;\n\t}\n}\n\nfunctionsHaveNames.functionsHaveConfigurableNames = function functionsHaveConfigurableNames() {\n\tif (!functionsHaveNames() || !gOPD) {\n\t\treturn false;\n\t}\n\tvar desc = gOPD(function () {}, 'name');\n\treturn !!desc && !!desc.configurable;\n};\n\nvar $bind = Function.prototype.bind;\n\nfunctionsHaveNames.boundFunctionsHaveNames = function boundFunctionsHaveNames() {\n\treturn functionsHaveNames() && typeof $bind === 'function' && function f() {}.bind().name !== '';\n};\n\nmodule.exports = functionsHaveNames;\n","'use strict';\n\nvar define = require('define-data-property');\nvar hasDescriptors = require('has-property-descriptors')();\nvar functionsHaveConfigurableNames = require('functions-have-names').functionsHaveConfigurableNames();\n\nvar $TypeError = require('es-errors/type');\n\n/** @type {import('.')} */\nmodule.exports = function setFunctionName(fn, name) {\n\tif (typeof fn !== 'function') {\n\t\tthrow new $TypeError('`fn` is not a function');\n\t}\n\tvar loose = arguments.length > 2 && !!arguments[2];\n\tif (!loose || functionsHaveConfigurableNames) {\n\t\tif (hasDescriptors) {\n\t\t\tdefine(/** @type {Parameters<define>[0]} */ (fn), 'name', name, true, true);\n\t\t} else {\n\t\t\tdefine(/** @type {Parameters<define>[0]} */ (fn), 'name', name);\n\t\t}\n\t}\n\treturn fn;\n};\n","'use strict';\n\nvar setFunctionName = require('set-function-name');\nvar $TypeError = require('es-errors/type');\n\nvar $Object = Object;\n\nmodule.exports = setFunctionName(function flags() {\n\tif (this == null || this !== $Object(this)) {\n\t\tthrow new $TypeError('RegExp.prototype.flags getter called on non-object');\n\t}\n\tvar result = '';\n\tif (this.hasIndices) {\n\t\tresult += 'd';\n\t}\n\tif (this.global) {\n\t\tresult += 'g';\n\t}\n\tif (this.ignoreCase) {\n\t\tresult += 'i';\n\t}\n\tif (this.multiline) {\n\t\tresult += 'm';\n\t}\n\tif (this.dotAll) {\n\t\tresult += 's';\n\t}\n\tif (this.unicode) {\n\t\tresult += 'u';\n\t}\n\tif (this.unicodeSets) {\n\t\tresult += 'v';\n\t}\n\tif (this.sticky) {\n\t\tresult += 'y';\n\t}\n\treturn result;\n}, 'get flags', true);\n\n","'use strict';\n\nvar implementation = require('./implementation');\n\nvar supportsDescriptors = require('define-properties').supportsDescriptors;\nvar $gOPD = Object.getOwnPropertyDescriptor;\n\nmodule.exports = function getPolyfill() {\n\tif (supportsDescriptors && (/a/mig).flags === 'gim') {\n\t\tvar descriptor = $gOPD(RegExp.prototype, 'flags');\n\t\tif (\n\t\t\tdescriptor\n\t\t\t&& typeof descriptor.get === 'function'\n\t\t\t&& 'dotAll' in RegExp.prototype\n\t\t\t&& 'hasIndices' in RegExp.prototype\n\t\t) {\n\t\t\t/* eslint getter-return: 0 */\n\t\t\tvar calls = '';\n\t\t\tvar o = {};\n\t\t\tObject.defineProperty(o, 'hasIndices', {\n\t\t\t\tget: function () {\n\t\t\t\t\tcalls += 'd';\n\t\t\t\t}\n\t\t\t});\n\t\t\tObject.defineProperty(o, 'sticky', {\n\t\t\t\tget: function () {\n\t\t\t\t\tcalls += 'y';\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tdescriptor.get.call(o);\n\n\t\t\tif (calls === 'dy') {\n\t\t\t\treturn descriptor.get;\n\t\t\t}\n\t\t}\n\t}\n\treturn implementation;\n};\n","'use strict';\n\nvar supportsDescriptors = require('define-properties').supportsDescriptors;\nvar getPolyfill = require('./polyfill');\nvar gOPD = require('gopd');\nvar defineProperty = Object.defineProperty;\nvar $TypeError = require('es-errors');\nvar getProto = require('get-proto');\nvar regex = /a/;\n\nmodule.exports = function shimFlags() {\n\tif (!supportsDescriptors || !getProto) {\n\t\tthrow new $TypeError('RegExp.prototype.flags requires a true ES5 environment that supports property descriptors');\n\t}\n\tvar polyfill = getPolyfill();\n\tvar proto = getProto(regex);\n\tvar descriptor = gOPD(proto, 'flags');\n\tif (!descriptor || descriptor.get !== polyfill) {\n\t\tdefineProperty(proto, 'flags', {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tget: polyfill\n\t\t});\n\t}\n\treturn polyfill;\n};\n","'use strict';\n\nvar define = require('define-properties');\nvar callBind = require('call-bind');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar flagsBound = callBind(getPolyfill());\n\ndefine(flagsBound, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = flagsBound;\n","'use strict';\n\nvar callBound = require('call-bound');\n\nvar getDay = callBound('Date.prototype.getDay');\n/** @type {import('.')} */\nvar tryDateObject = function tryDateGetDayCall(value) {\n\ttry {\n\t\tgetDay(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\n\n/** @type {(value: unknown) => string} */\nvar toStr = callBound('Object.prototype.toString');\nvar dateClass = '[object Date]';\nvar hasToStringTag = require('has-tostringtag/shams')();\n\n/** @type {import('.')} */\nmodule.exports = function isDateObject(value) {\n\tif (typeof value !== 'object' || value === null) {\n\t\treturn false;\n\t}\n\treturn hasToStringTag ? tryDateObject(value) : toStr(value) === dateClass;\n};\n","var objectKeys = require('object-keys');\nvar isArguments = require('is-arguments');\nvar is = require('object-is');\nvar isRegex = require('is-regex');\nvar flags = require('regexp.prototype.flags');\nvar isDate = require('is-date-object');\n\nvar getTime = Date.prototype.getTime;\n\nfunction deepEqual(actual, expected, options) {\n  var opts = options || {};\n\n  // 7.1. All identical values are equivalent, as determined by ===.\n  if (opts.strict ? is(actual, expected) : actual === expected) {\n    return true;\n  }\n\n  // 7.3. Other pairs that do not both pass typeof value == 'object', equivalence is determined by ==.\n  if (!actual || !expected || (typeof actual !== 'object' && typeof expected !== 'object')) {\n    return opts.strict ? is(actual, expected) : actual == expected;\n  }\n\n  /*\n   * 7.4. For all other Object pairs, including Array objects, equivalence is\n   * determined by having the same number of owned properties (as verified\n   * with Object.prototype.hasOwnProperty.call), the same set of keys\n   * (although not necessarily the same order), equivalent values for every\n   * corresponding key, and an identical 'prototype' property. Note: this\n   * accounts for both named and indexed properties on Arrays.\n   */\n  // eslint-disable-next-line no-use-before-define\n  return objEquiv(actual, expected, opts);\n}\n\nfunction isUndefinedOrNull(value) {\n  return value === null || value === undefined;\n}\n\nfunction isBuffer(x) {\n  if (!x || typeof x !== 'object' || typeof x.length !== 'number') {\n    return false;\n  }\n  if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\n    return false;\n  }\n  if (x.length > 0 && typeof x[0] !== 'number') {\n    return false;\n  }\n  return true;\n}\n\nfunction objEquiv(a, b, opts) {\n  /* eslint max-statements: [2, 50] */\n  var i, key;\n  if (typeof a !== typeof b) { return false; }\n  if (isUndefinedOrNull(a) || isUndefinedOrNull(b)) { return false; }\n\n  // an identical 'prototype' property.\n  if (a.prototype !== b.prototype) { return false; }\n\n  if (isArguments(a) !== isArguments(b)) { return false; }\n\n  var aIsRegex = isRegex(a);\n  var bIsRegex = isRegex(b);\n  if (aIsRegex !== bIsRegex) { return false; }\n  if (aIsRegex || bIsRegex) {\n    return a.source === b.source && flags(a) === flags(b);\n  }\n\n  if (isDate(a) && isDate(b)) {\n    return getTime.call(a) === getTime.call(b);\n  }\n\n  var aIsBuffer = isBuffer(a);\n  var bIsBuffer = isBuffer(b);\n  if (aIsBuffer !== bIsBuffer) { return false; }\n  if (aIsBuffer || bIsBuffer) { // && would work too, because both are true or both false here\n    if (a.length !== b.length) { return false; }\n    for (i = 0; i < a.length; i++) {\n      if (a[i] !== b[i]) { return false; }\n    }\n    return true;\n  }\n\n  if (typeof a !== typeof b) { return false; }\n\n  try {\n    var ka = objectKeys(a);\n    var kb = objectKeys(b);\n  } catch (e) { // happens when one is a string literal and the other isn't\n    return false;\n  }\n  // having the same number of owned properties (keys incorporates hasOwnProperty)\n  if (ka.length !== kb.length) { return false; }\n\n  // the same set of keys (although not necessarily the same order),\n  ka.sort();\n  kb.sort();\n  // ~~~cheap key test\n  for (i = ka.length - 1; i >= 0; i--) {\n    if (ka[i] != kb[i]) { return false; }\n  }\n  // equivalent values for every corresponding key, and ~~~possibly expensive deep test\n  for (i = ka.length - 1; i >= 0; i--) {\n    key = ka[i];\n    if (!deepEqual(a[key], b[key], opts)) { return false; }\n  }\n\n  return true;\n}\n\nmodule.exports = deepEqual;\n","import isBrowser from './isBrowser';\n\nconst timeoutDuration = (function(){\n  const longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\n  for (let i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n    if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n      return 1;\n    }\n  }\n  return 0;\n}());\n\nexport function microtaskDebounce(fn) {\n  let called = false\n  return () => {\n    if (called) {\n      return\n    }\n    called = true\n    window.Promise.resolve().then(() => {\n      called = false\n      fn()\n    })\n  }\n}\n\nexport function taskDebounce(fn) {\n  let scheduled = false;\n  return () => {\n    if (!scheduled) {\n      scheduled = true;\n      setTimeout(() => {\n        scheduled = false;\n        fn();\n      }, timeoutDuration);\n    }\n  };\n}\n\nconst supportsMicroTasks = isBrowser && window.Promise\n\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nexport default (supportsMicroTasks\n  ? microtaskDebounce\n  : taskDebounce);\n","/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nexport default function isFunction(functionToCheck) {\n  const getType = {};\n  return (\n    functionToCheck &&\n    getType.toString.call(functionToCheck) === '[object Function]'\n  );\n}\n","/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nexport default function getStyleComputedProperty(element, property) {\n  if (element.nodeType !== 1) {\n    return [];\n  }\n  // NOTE: 1 DOM access here\n  const window = element.ownerDocument.defaultView;\n  const css = window.getComputedStyle(element, null);\n  return property ? css[property] : css;\n}\n","/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nexport default function getParentNode(element) {\n  if (element.nodeName === 'HTML') {\n    return element;\n  }\n  return element.parentNode || element.host;\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nexport default function getScrollParent(element) {\n  // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n  if (!element) {\n    return document.body\n  }\n\n  switch (element.nodeName) {\n    case 'HTML':\n    case 'BODY':\n      return element.ownerDocument.body\n    case '#document':\n      return element.body\n  }\n\n  // Firefox want us to check `-x` and `-y` variations as well\n  const { overflow, overflowX, overflowY } = getStyleComputedProperty(element);\n  if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\n    return element;\n  }\n\n  return getScrollParent(getParentNode(element));\n}\n","/**\n * Returns the reference node of the reference object, or the reference object itself.\n * @method\n * @memberof Popper.Utils\n * @param {Element|Object} reference - the reference element (the popper will be relative to this)\n * @returns {Element} parent\n */\nexport default function getReferenceNode(reference) {\n  return reference && reference.referenceNode ? reference.referenceNode : reference;\n}\n","import isBrowser from './isBrowser';\n\nconst isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);\nconst isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);\n\n/**\n * Determines if the browser is Internet Explorer\n * @method\n * @memberof Popper.Utils\n * @param {Number} version to check\n * @returns {Boolean} isIE\n */\nexport default function isIE(version) {\n  if (version === 11) {\n    return isIE11;\n  }\n  if (version === 10) {\n    return isIE10;\n  }\n  return isIE11 || isIE10;\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport isIE from './isIE';\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nexport default function getOffsetParent(element) {\n  if (!element) {\n    return document.documentElement;\n  }\n\n  const noOffsetParent = isIE(10) ? document.body : null;\n\n  // NOTE: 1 DOM access here\n  let offsetParent = element.offsetParent || null;\n  // Skip hidden elements which don't have an offsetParent\n  while (offsetParent === noOffsetParent && element.nextElementSibling) {\n    offsetParent = (element = element.nextElementSibling).offsetParent;\n  }\n\n  const nodeName = offsetParent && offsetParent.nodeName;\n\n  if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n    return element ? element.ownerDocument.documentElement : document.documentElement;\n  }\n\n  // .offsetParent will return the closest TH, TD or TABLE in case\n  // no offsetParent is present, I hate this job...\n  if (\n    ['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 &&\n    getStyleComputedProperty(offsetParent, 'position') === 'static'\n  ) {\n    return getOffsetParent(offsetParent);\n  }\n\n  return offsetParent;\n}\n","import getOffsetParent from './getOffsetParent';\n\nexport default function isOffsetContainer(element) {\n  const { nodeName } = element;\n  if (nodeName === 'BODY') {\n    return false;\n  }\n  return (\n    nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element\n  );\n}\n","/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nexport default function getRoot(node) {\n  if (node.parentNode !== null) {\n    return getRoot(node.parentNode);\n  }\n\n  return node;\n}\n","import isOffsetContainer from './isOffsetContainer';\nimport getRoot from './getRoot';\nimport getOffsetParent from './getOffsetParent';\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nexport default function findCommonOffsetParent(element1, element2) {\n  // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n  if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n    return document.documentElement;\n  }\n\n  // Here we make sure to give as \"start\" the element that comes first in the DOM\n  const order =\n    element1.compareDocumentPosition(element2) &\n    Node.DOCUMENT_POSITION_FOLLOWING;\n  const start = order ? element1 : element2;\n  const end = order ? element2 : element1;\n\n  // Get common ancestor container\n  const range = document.createRange();\n  range.setStart(start, 0);\n  range.setEnd(end, 0);\n  const { commonAncestorContainer } = range;\n\n  // Both nodes are inside #document\n  if (\n    (element1 !== commonAncestorContainer &&\n      element2 !== commonAncestorContainer) ||\n    start.contains(end)\n  ) {\n    if (isOffsetContainer(commonAncestorContainer)) {\n      return commonAncestorContainer;\n    }\n\n    return getOffsetParent(commonAncestorContainer);\n  }\n\n  // one of the nodes is inside shadowDOM, find which one\n  const element1root = getRoot(element1);\n  if (element1root.host) {\n    return findCommonOffsetParent(element1root.host, element2);\n  } else {\n    return findCommonOffsetParent(element1, getRoot(element2).host);\n  }\n}\n","/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nexport default function getScroll(element, side = 'top') {\n  const upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n  const nodeName = element.nodeName;\n\n  if (nodeName === 'BODY' || nodeName === 'HTML') {\n    const html = element.ownerDocument.documentElement;\n    const scrollingElement = element.ownerDocument.scrollingElement || html;\n    return scrollingElement[upperSide];\n  }\n\n  return element[upperSide];\n}\n","import getScroll from './getScroll';\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nexport default function includeScroll(rect, element, subtract = false) {\n  const scrollTop = getScroll(element, 'top');\n  const scrollLeft = getScroll(element, 'left');\n  const modifier = subtract ? -1 : 1;\n  rect.top += scrollTop * modifier;\n  rect.bottom += scrollTop * modifier;\n  rect.left += scrollLeft * modifier;\n  rect.right += scrollLeft * modifier;\n  return rect;\n}\n","/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nexport default function getBordersSize(styles, axis) {\n  const sideA = axis === 'x' ? 'Left' : 'Top';\n  const sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n  return (\n    parseFloat(styles[`border${sideA}Width`]) +\n    parseFloat(styles[`border${sideB}Width`])\n  );\n}\n","import isIE from './isIE';\n\nfunction getSize(axis, body, html, computedStyle) {\n  return Math.max(\n    body[`offset${axis}`],\n    body[`scroll${axis}`],\n    html[`client${axis}`],\n    html[`offset${axis}`],\n    html[`scroll${axis}`],\n    isIE(10)\n      ? (parseInt(html[`offset${axis}`]) + \n      parseInt(computedStyle[`margin${axis === 'Height' ? 'Top' : 'Left'}`]) + \n      parseInt(computedStyle[`margin${axis === 'Height' ? 'Bottom' : 'Right'}`]))\n    : 0 \n  );\n}\n\nexport default function getWindowSizes(document) {\n  const body = document.body;\n  const html = document.documentElement;\n  const computedStyle = isIE(10) && getComputedStyle(html);\n\n  return {\n    height: getSize('Height', body, html, computedStyle),\n    width: getSize('Width', body, html, computedStyle),\n  };\n}\n","/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nexport default function getClientRect(offsets) {\n  return {\n    ...offsets,\n    right: offsets.left + offsets.width,\n    bottom: offsets.top + offsets.height,\n  };\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getBordersSize from './getBordersSize';\nimport getWindowSizes from './getWindowSizes';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\nimport isIE from './isIE';\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nexport default function getBoundingClientRect(element) {\n  let rect = {};\n\n  // IE10 10 FIX: Please, don't ask, the element isn't\n  // considered in DOM in some circumstances...\n  // This isn't reproducible in IE10 compatibility mode of IE11\n  try {\n    if (isIE(10)) {\n      rect = element.getBoundingClientRect();\n      const scrollTop = getScroll(element, 'top');\n      const scrollLeft = getScroll(element, 'left');\n      rect.top += scrollTop;\n      rect.left += scrollLeft;\n      rect.bottom += scrollTop;\n      rect.right += scrollLeft;\n    }\n    else {\n      rect = element.getBoundingClientRect();\n    }\n  }\n  catch(e){}\n\n  const result = {\n    left: rect.left,\n    top: rect.top,\n    width: rect.right - rect.left,\n    height: rect.bottom - rect.top,\n  };\n\n  // subtract scrollbar size from sizes\n  const sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};\n  const width =\n    sizes.width || element.clientWidth || result.width;\n  const height =\n    sizes.height || element.clientHeight || result.height;\n\n  let horizScrollbar = element.offsetWidth - width;\n  let vertScrollbar = element.offsetHeight - height;\n\n  // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n  // we make this check conditional for performance reasons\n  if (horizScrollbar || vertScrollbar) {\n    const styles = getStyleComputedProperty(element);\n    horizScrollbar -= getBordersSize(styles, 'x');\n    vertScrollbar -= getBordersSize(styles, 'y');\n\n    result.width -= horizScrollbar;\n    result.height -= vertScrollbar;\n  }\n\n  return getClientRect(result);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport includeScroll from './includeScroll';\nimport getScrollParent from './getScrollParent';\nimport getBoundingClientRect from './getBoundingClientRect';\nimport runIsIE from './isIE';\nimport getClientRect from './getClientRect';\n\nexport default function getOffsetRectRelativeToArbitraryNode(children, parent, fixedPosition = false) {\n  const isIE10 = runIsIE(10);\n  const isHTML = parent.nodeName === 'HTML';\n  const childrenRect = getBoundingClientRect(children);\n  const parentRect = getBoundingClientRect(parent);\n  const scrollParent = getScrollParent(children);\n\n  const styles = getStyleComputedProperty(parent);\n  const borderTopWidth = parseFloat(styles.borderTopWidth);\n  const borderLeftWidth = parseFloat(styles.borderLeftWidth);\n\n  // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n  if(fixedPosition && isHTML) {\n    parentRect.top = Math.max(parentRect.top, 0);\n    parentRect.left = Math.max(parentRect.left, 0);\n  }\n  let offsets = getClientRect({\n    top: childrenRect.top - parentRect.top - borderTopWidth,\n    left: childrenRect.left - parentRect.left - borderLeftWidth,\n    width: childrenRect.width,\n    height: childrenRect.height,\n  });\n  offsets.marginTop = 0;\n  offsets.marginLeft = 0;\n\n  // Subtract margins of documentElement in case it's being used as parent\n  // we do this only on HTML because it's the only element that behaves\n  // differently when margins are applied to it. The margins are included in\n  // the box of the documentElement, in the other cases not.\n  if (!isIE10 && isHTML) {\n    const marginTop = parseFloat(styles.marginTop);\n    const marginLeft = parseFloat(styles.marginLeft);\n\n    offsets.top -= borderTopWidth - marginTop;\n    offsets.bottom -= borderTopWidth - marginTop;\n    offsets.left -= borderLeftWidth - marginLeft;\n    offsets.right -= borderLeftWidth - marginLeft;\n\n    // Attach marginTop and marginLeft because in some circumstances we may need them\n    offsets.marginTop = marginTop;\n    offsets.marginLeft = marginLeft;\n  }\n\n  if (\n    isIE10 && !fixedPosition\n      ? parent.contains(scrollParent)\n      : parent === scrollParent && scrollParent.nodeName !== 'BODY'\n  ) {\n    offsets = includeScroll(offsets, parent);\n  }\n\n  return offsets;\n}\n","import getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\n\nexport default function getViewportOffsetRectRelativeToArtbitraryNode(element, excludeScroll = false) {\n  const html = element.ownerDocument.documentElement;\n  const relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n  const width = Math.max(html.clientWidth, window.innerWidth || 0);\n  const height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n  const scrollTop = !excludeScroll ? getScroll(html) : 0;\n  const scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n\n  const offset = {\n    top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n    left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n    width,\n    height,\n  };\n\n  return getClientRect(offset);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nexport default function isFixed(element) {\n  const nodeName = element.nodeName;\n  if (nodeName === 'BODY' || nodeName === 'HTML') {\n    return false;\n  }\n  if (getStyleComputedProperty(element, 'position') === 'fixed') {\n    return true;\n  }\n  const parentNode = getParentNode(element);\n  if (!parentNode) {\n    return false;\n  }\n  return isFixed(parentNode);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport isIE from './isIE';\n/**\n * Finds the first parent of an element that has a transformed property defined\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} first transformed parent or documentElement\n */\n\nexport default function getFixedPositionOffsetParent(element) {\n  // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n   if (!element || !element.parentElement || isIE()) {\n    return document.documentElement;\n  }\n  let el = element.parentElement;\n  while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n    el = el.parentElement;\n  }\n  return el || document.documentElement;\n\n}\n","import getScrollParent from './getScrollParent';\nimport getParentNode from './getParentNode';\nimport getReferenceNode from './getReferenceNode';\nimport findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getViewportOffsetRectRelativeToArtbitraryNode from './getViewportOffsetRectRelativeToArtbitraryNode';\nimport getWindowSizes from './getWindowSizes';\nimport isFixed from './isFixed';\nimport getFixedPositionOffsetParent from './getFixedPositionOffsetParent';\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @param {Boolean} fixedPosition - Is in fixed position mode\n * @returns {Object} Coordinates of the boundaries\n */\nexport default function getBoundaries(\n  popper,\n  reference,\n  padding,\n  boundariesElement,\n  fixedPosition = false\n) {\n  // NOTE: 1 DOM access here\n\n  let boundaries = { top: 0, left: 0 };\n  const offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n\n  // Handle viewport case\n  if (boundariesElement === 'viewport' ) {\n    boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n  }\n\n  else {\n    // Handle other cases based on DOM element used as boundaries\n    let boundariesNode;\n    if (boundariesElement === 'scrollParent') {\n      boundariesNode = getScrollParent(getParentNode(reference));\n      if (boundariesNode.nodeName === 'BODY') {\n        boundariesNode = popper.ownerDocument.documentElement;\n      }\n    } else if (boundariesElement === 'window') {\n      boundariesNode = popper.ownerDocument.documentElement;\n    } else {\n      boundariesNode = boundariesElement;\n    }\n\n    const offsets = getOffsetRectRelativeToArbitraryNode(\n      boundariesNode,\n      offsetParent,\n      fixedPosition\n    );\n\n    // In case of HTML, we need a different computation\n    if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n      const { height, width } = getWindowSizes(popper.ownerDocument);\n      boundaries.top += offsets.top - offsets.marginTop;\n      boundaries.bottom = height + offsets.top;\n      boundaries.left += offsets.left - offsets.marginLeft;\n      boundaries.right = width + offsets.left;\n    } else {\n      // for all the other DOM elements, this one is good\n      boundaries = offsets;\n    }\n  }\n\n  // Add paddings\n  padding = padding || 0;\n  const isPaddingNumber = typeof padding === 'number';\n  boundaries.left += isPaddingNumber ? padding : padding.left || 0; \n  boundaries.top += isPaddingNumber ? padding : padding.top || 0; \n  boundaries.right -= isPaddingNumber ? padding : padding.right || 0; \n  boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0; \n\n  return boundaries;\n}\n","import getBoundaries from '../utils/getBoundaries';\n\nfunction getArea({ width, height }) {\n  return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function computeAutoPlacement(\n  placement,\n  refRect,\n  popper,\n  reference,\n  boundariesElement,\n  padding = 0\n) {\n  if (placement.indexOf('auto') === -1) {\n    return placement;\n  }\n\n  const boundaries = getBoundaries(\n    popper,\n    reference,\n    padding,\n    boundariesElement\n  );\n\n  const rects = {\n    top: {\n      width: boundaries.width,\n      height: refRect.top - boundaries.top,\n    },\n    right: {\n      width: boundaries.right - refRect.right,\n      height: boundaries.height,\n    },\n    bottom: {\n      width: boundaries.width,\n      height: boundaries.bottom - refRect.bottom,\n    },\n    left: {\n      width: refRect.left - boundaries.left,\n      height: boundaries.height,\n    },\n  };\n\n  const sortedAreas = Object.keys(rects)\n    .map(key => ({\n      key,\n      ...rects[key],\n      area: getArea(rects[key]),\n    }))\n    .sort((a, b) => b.area - a.area);\n\n  const filteredAreas = sortedAreas.filter(\n    ({ width, height }) =>\n      width >= popper.clientWidth && height >= popper.clientHeight\n  );\n\n  const computedPlacement = filteredAreas.length > 0\n    ? filteredAreas[0].key\n    : sortedAreas[0].key;\n\n  const variation = placement.split('-')[1];\n\n  return computedPlacement + (variation ? `-${variation}` : '');\n}\n","import findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getFixedPositionOffsetParent from './getFixedPositionOffsetParent';\nimport getReferenceNode from './getReferenceNode';\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @param {Element} fixedPosition - is in fixed position mode\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nexport default function getReferenceOffsets(state, popper, reference, fixedPosition = null) {\n  const commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n  return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\n}\n","/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nexport default function getOuterSizes(element) {\n  const window = element.ownerDocument.defaultView;\n  const styles = window.getComputedStyle(element);\n  const x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);\n  const y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);\n  const result = {\n    width: element.offsetWidth + y,\n    height: element.offsetHeight + x,\n  };\n  return result;\n}\n","/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nexport default function getOppositePlacement(placement) {\n  const hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n  return placement.replace(/left|right|bottom|top/g, matched => hash[matched]);\n}\n","import getOuterSizes from './getOuterSizes';\nimport getOppositePlacement from './getOppositePlacement';\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nexport default function getPopperOffsets(popper, referenceOffsets, placement) {\n  placement = placement.split('-')[0];\n\n  // Get popper node sizes\n  const popperRect = getOuterSizes(popper);\n\n  // Add position, width and height to our offsets object\n  const popperOffsets = {\n    width: popperRect.width,\n    height: popperRect.height,\n  };\n\n  // depending by the popper placement we have to compute its offsets slightly differently\n  const isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n  const mainSide = isHoriz ? 'top' : 'left';\n  const secondarySide = isHoriz ? 'left' : 'top';\n  const measurement = isHoriz ? 'height' : 'width';\n  const secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n  popperOffsets[mainSide] =\n    referenceOffsets[mainSide] +\n    referenceOffsets[measurement] / 2 -\n    popperRect[measurement] / 2;\n  if (placement === secondarySide) {\n    popperOffsets[secondarySide] =\n      referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n  } else {\n    popperOffsets[secondarySide] =\n      referenceOffsets[getOppositePlacement(secondarySide)];\n  }\n\n  return popperOffsets;\n}\n","/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function find(arr, check) {\n  // use native find if supported\n  if (Array.prototype.find) {\n    return arr.find(check);\n  }\n\n  // use `filter` to obtain the same behavior of `find`\n  return arr.filter(check)[0];\n}\n","import find from './find';\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function findIndex(arr, prop, value) {\n  // use native findIndex if supported\n  if (Array.prototype.findIndex) {\n    return arr.findIndex(cur => cur[prop] === value);\n  }\n\n  // use `find` + `indexOf` if `findIndex` isn't supported\n  const match = find(arr, obj => obj[prop] === value);\n  return arr.indexOf(match);\n}\n","import isFunction from './isFunction';\nimport findIndex from './findIndex';\nimport getClientRect from '../utils/getClientRect';\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nexport default function runModifiers(modifiers, data, ends) {\n  const modifiersToRun = ends === undefined\n    ? modifiers\n    : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n  modifiersToRun.forEach(modifier => {\n    if (modifier['function']) { // eslint-disable-line dot-notation\n      console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n    }\n    const fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n    if (modifier.enabled && isFunction(fn)) {\n      // Add properties to offsets to make them a complete clientRect object\n      // we do this before each modifier to make sure the previous one doesn't\n      // mess with these values\n      data.offsets.popper = getClientRect(data.offsets.popper);\n      data.offsets.reference = getClientRect(data.offsets.reference);\n\n      data = fn(data, modifier);\n    }\n  });\n\n  return data;\n}\n","import computeAutoPlacement from '../utils/computeAutoPlacement';\nimport getReferenceOffsets from '../utils/getReferenceOffsets';\nimport getPopperOffsets from '../utils/getPopperOffsets';\nimport runModifiers from '../utils/runModifiers';\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.<br />\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\nexport default function update() {\n  // if popper is destroyed, don't perform any further update\n  if (this.state.isDestroyed) {\n    return;\n  }\n\n  let data = {\n    instance: this,\n    styles: {},\n    arrowStyles: {},\n    attributes: {},\n    flipped: false,\n    offsets: {},\n  };\n\n  // compute reference element offsets\n  data.offsets.reference = getReferenceOffsets(\n    this.state,\n    this.popper,\n    this.reference,\n    this.options.positionFixed\n  );\n\n  // compute auto placement, store placement inside the data object,\n  // modifiers will be able to edit `placement` if needed\n  // and refer to originalPlacement to know the original value\n  data.placement = computeAutoPlacement(\n    this.options.placement,\n    data.offsets.reference,\n    this.popper,\n    this.reference,\n    this.options.modifiers.flip.boundariesElement,\n    this.options.modifiers.flip.padding\n  );\n\n  // store the computed placement inside `originalPlacement`\n  data.originalPlacement = data.placement;\n\n  data.positionFixed = this.options.positionFixed;\n\n  // compute the popper offsets\n  data.offsets.popper = getPopperOffsets(\n    this.popper,\n    data.offsets.reference,\n    data.placement\n  );\n\n  data.offsets.popper.position = this.options.positionFixed\n    ? 'fixed'\n    : 'absolute';\n\n  // run the modifiers\n  data = runModifiers(this.modifiers, data);\n\n  // the first `update` will call `onCreate` callback\n  // the other ones will call `onUpdate` callback\n  if (!this.state.isCreated) {\n    this.state.isCreated = true;\n    this.options.onCreate(data);\n  } else {\n    this.options.onUpdate(data);\n  }\n}\n","/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nexport default function isModifierEnabled(modifiers, modifierName) {\n  return modifiers.some(\n    ({ name, enabled }) => enabled && name === modifierName\n  );\n}\n","/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nexport default function getSupportedPropertyName(property) {\n  const prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n  const upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n  for (let i = 0; i < prefixes.length; i++) {\n    const prefix = prefixes[i];\n    const toCheck = prefix ? `${prefix}${upperProp}` : property;\n    if (typeof document.body.style[toCheck] !== 'undefined') {\n      return toCheck;\n    }\n  }\n  return null;\n}\n","import isModifierEnabled from '../utils/isModifierEnabled';\nimport getSupportedPropertyName from '../utils/getSupportedPropertyName';\n\n/**\n * Destroys the popper.\n * @method\n * @memberof Popper\n */\nexport default function destroy() {\n  this.state.isDestroyed = true;\n\n  // touch DOM only if `applyStyle` modifier is enabled\n  if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n    this.popper.removeAttribute('x-placement');\n    this.popper.style.position = '';\n    this.popper.style.top = '';\n    this.popper.style.left = '';\n    this.popper.style.right = '';\n    this.popper.style.bottom = '';\n    this.popper.style.willChange = '';\n    this.popper.style[getSupportedPropertyName('transform')] = '';\n  }\n\n  this.disableEventListeners();\n\n  // remove the popper if user explicitly asked for the deletion on destroy\n  // do not use `remove` because IE11 doesn't support it\n  if (this.options.removeOnDestroy) {\n    this.popper.parentNode.removeChild(this.popper);\n  }\n  return this;\n}\n","/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nexport default function getWindow(element) {\n  const ownerDocument = element.ownerDocument;\n  return ownerDocument ? ownerDocument.defaultView : window;\n}\n","import getScrollParent from './getScrollParent';\nimport getWindow from './getWindow';\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n  const isBody = scrollParent.nodeName === 'BODY';\n  const target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n  target.addEventListener(event, callback, { passive: true });\n\n  if (!isBody) {\n    attachToScrollParents(\n      getScrollParent(target.parentNode),\n      event,\n      callback,\n      scrollParents\n    );\n  }\n  scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function setupEventListeners(\n  reference,\n  options,\n  state,\n  updateBound\n) {\n  // Resize event listener on window\n  state.updateBound = updateBound;\n  getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n  // Scroll event listener on scroll parents\n  const scrollElement = getScrollParent(reference);\n  attachToScrollParents(\n    scrollElement,\n    'scroll',\n    state.updateBound,\n    state.scrollParents\n  );\n  state.scrollElement = scrollElement;\n  state.eventsEnabled = true;\n\n  return state;\n}\n","import setupEventListeners from '../utils/setupEventListeners';\n\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\nexport default function enableEventListeners() {\n  if (!this.state.eventsEnabled) {\n    this.state = setupEventListeners(\n      this.reference,\n      this.options,\n      this.state,\n      this.scheduleUpdate\n    );\n  }\n}\n","import getWindow from './getWindow';\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function removeEventListeners(reference, state) {\n  // Remove resize event listener on window\n  getWindow(reference).removeEventListener('resize', state.updateBound);\n\n  // Remove scroll event listener on scroll parents\n  state.scrollParents.forEach(target => {\n    target.removeEventListener('scroll', state.updateBound);\n  });\n\n  // Reset state\n  state.updateBound = null;\n  state.scrollParents = [];\n  state.scrollElement = null;\n  state.eventsEnabled = false;\n  return state;\n}\n","import removeEventListeners from '../utils/removeEventListeners';\n\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger `onUpdate` callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\nexport default function disableEventListeners() {\n  if (this.state.eventsEnabled) {\n    cancelAnimationFrame(this.scheduleUpdate);\n    this.state = removeEventListeners(this.reference, this.state);\n  }\n}\n","/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nexport default function isNumeric(n) {\n  return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n","import isNumeric from './isNumeric';\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setStyles(element, styles) {\n  Object.keys(styles).forEach(prop => {\n    let unit = '';\n    // add unit if the value is numeric and is one of the following\n    if (\n      ['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !==\n        -1 &&\n      isNumeric(styles[prop])\n    ) {\n      unit = 'px';\n    }\n    element.style[prop] = styles[prop] + unit;\n  });\n}\n","/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setAttributes(element, attributes) {\n  Object.keys(attributes).forEach(function(prop) {\n    const value = attributes[prop];\n    if (value !== false) {\n      element.setAttribute(prop, attributes[prop]);\n    } else {\n      element.removeAttribute(prop);\n    }\n  });\n}\n","import setStyles from '../utils/setStyles';\nimport setAttributes from '../utils/setAttributes';\nimport getReferenceOffsets from '../utils/getReferenceOffsets';\nimport computeAutoPlacement from '../utils/computeAutoPlacement';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\nexport default function applyStyle(data) {\n  // any property present in `data.styles` will be applied to the popper,\n  // in this way we can make the 3rd party modifiers add custom styles to it\n  // Be aware, modifiers could override the properties defined in the previous\n  // lines of this modifier!\n  setStyles(data.instance.popper, data.styles);\n\n  // any property present in `data.attributes` will be applied to the popper,\n  // they will be set as HTML attributes of the element\n  setAttributes(data.instance.popper, data.attributes);\n\n  // if arrowElement is defined and arrowStyles has some properties\n  if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n    setStyles(data.arrowElement, data.arrowStyles);\n  }\n\n  return data;\n}\n\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper\n * @param {Object} options - Popper.js options\n */\nexport function applyStyleOnLoad(\n  reference,\n  popper,\n  options,\n  modifierOptions,\n  state\n) {\n  // compute reference element offsets\n  const referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed);\n\n  // compute auto placement, store placement inside the data object,\n  // modifiers will be able to edit `placement` if needed\n  // and refer to originalPlacement to know the original value\n  const placement = computeAutoPlacement(\n    options.placement,\n    referenceOffsets,\n    popper,\n    reference,\n    options.modifiers.flip.boundariesElement,\n    options.modifiers.flip.padding\n  );\n\n  popper.setAttribute('x-placement', placement);\n\n  // Apply `position` to popper before anything else because\n  // without the position applied we can't guarantee correct computations\n  setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' });\n\n  return options;\n}\n","/**\n * @function\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Boolean} shouldRound - If the offsets should be rounded at all\n * @returns {Object} The popper's position offsets rounded\n *\n * The tale of pixel-perfect positioning. It's still not 100% perfect, but as\n * good as it can be within reason.\n * Discussion here: https://github.com/FezVrasta/popper.js/pull/715\n *\n * Low DPI screens cause a popper to be blurry if not using full pixels (Safari\n * as well on High DPI screens).\n *\n * Firefox prefers no rounding for positioning and does not have blurriness on\n * high DPI screens.\n *\n * Only horizontal placement and left/right values need to be considered.\n */\nexport default function getRoundedOffsets(data, shouldRound) {\n  const { popper, reference } = data.offsets;\n  const { round, floor } = Math;\n  const noRound = v => v;\n  \n  const referenceWidth = round(reference.width);\n  const popperWidth = round(popper.width);\n  \n  const isVertical = ['left', 'right'].indexOf(data.placement) !== -1;\n  const isVariation = data.placement.indexOf('-') !== -1;\n  const sameWidthParity = referenceWidth % 2 === popperWidth % 2;\n  const bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1;\n\n  const horizontalToInteger = !shouldRound\n    ? noRound\n    : isVertical || isVariation || sameWidthParity\n    ? round\n    : floor;\n  const verticalToInteger = !shouldRound ? noRound : round;\n\n  return {\n    left: horizontalToInteger(\n      bothOddWidth && !isVariation && shouldRound\n        ? popper.left - 1\n        : popper.left\n    ),\n    top: verticalToInteger(popper.top),\n    bottom: verticalToInteger(popper.bottom),\n    right: horizontalToInteger(popper.right),\n  };\n}\n","import getSupportedPropertyName from '../utils/getSupportedPropertyName';\nimport find from '../utils/find';\nimport getOffsetParent from '../utils/getOffsetParent';\nimport getBoundingClientRect from '../utils/getBoundingClientRect';\nimport getRoundedOffsets from '../utils/getRoundedOffsets';\nimport isBrowser from '../utils/isBrowser';\n\nconst isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent);\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function computeStyle(data, options) {\n  const { x, y } = options;\n  const { popper } = data.offsets;\n\n  // Remove this legacy support in Popper.js v2\n  const legacyGpuAccelerationOption = find(\n    data.instance.modifiers,\n    modifier => modifier.name === 'applyStyle'\n  ).gpuAcceleration;\n  if (legacyGpuAccelerationOption !== undefined) {\n    console.warn(\n      'WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!'\n    );\n  }\n  const gpuAcceleration =\n    legacyGpuAccelerationOption !== undefined\n      ? legacyGpuAccelerationOption\n      : options.gpuAcceleration;\n\n  const offsetParent = getOffsetParent(data.instance.popper);\n  const offsetParentRect = getBoundingClientRect(offsetParent);\n\n  // Styles\n  const styles = {\n    position: popper.position,\n  };\n\n  const offsets = getRoundedOffsets(\n    data,\n    window.devicePixelRatio < 2 || !isFirefox\n  );\n\n  const sideA = x === 'bottom' ? 'top' : 'bottom';\n  const sideB = y === 'right' ? 'left' : 'right';\n\n  // if gpuAcceleration is set to `true` and transform is supported,\n  //  we use `translate3d` to apply the position to the popper we\n  // automatically use the supported prefixed version if needed\n  const prefixedProperty = getSupportedPropertyName('transform');\n\n  // now, let's make a step back and look at this code closely (wtf?)\n  // If the content of the popper grows once it's been positioned, it\n  // may happen that the popper gets misplaced because of the new content\n  // overflowing its reference element\n  // To avoid this problem, we provide two options (x and y), which allow\n  // the consumer to define the offset origin.\n  // If we position a popper on top of a reference element, we can set\n  // `x` to `top` to make the popper grow towards its top instead of\n  // its bottom.\n  let left, top;\n  if (sideA === 'bottom') {\n    // when offsetParent is <html> the positioning is relative to the bottom of the screen (excluding the scrollbar)\n    // and not the bottom of the html element\n    if (offsetParent.nodeName === 'HTML') {\n      top = -offsetParent.clientHeight + offsets.bottom;\n    } else {\n      top = -offsetParentRect.height + offsets.bottom;\n    }\n  } else {\n    top = offsets.top;\n  }\n  if (sideB === 'right') {\n    if (offsetParent.nodeName === 'HTML') {\n      left = -offsetParent.clientWidth + offsets.right;\n    } else {\n      left = -offsetParentRect.width + offsets.right;\n    }\n  } else {\n    left = offsets.left;\n  }\n  if (gpuAcceleration && prefixedProperty) {\n    styles[prefixedProperty] = `translate3d(${left}px, ${top}px, 0)`;\n    styles[sideA] = 0;\n    styles[sideB] = 0;\n    styles.willChange = 'transform';\n  } else {\n    // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n    const invertTop = sideA === 'bottom' ? -1 : 1;\n    const invertLeft = sideB === 'right' ? -1 : 1;\n    styles[sideA] = top * invertTop;\n    styles[sideB] = left * invertLeft;\n    styles.willChange = `${sideA}, ${sideB}`;\n  }\n\n  // Attributes\n  const attributes = {\n    'x-placement': data.placement,\n  };\n\n  // Update `data` attributes, styles and arrowStyles\n  data.attributes = { ...attributes, ...data.attributes };\n  data.styles = { ...styles, ...data.styles };\n  data.arrowStyles = { ...data.offsets.arrow, ...data.arrowStyles };\n\n  return data;\n}\n","import find from './find';\n\n/**\n * Helper used to know if the given modifier depends from another one.<br />\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nexport default function isModifierRequired(\n  modifiers,\n  requestingName,\n  requestedName\n) {\n  const requesting = find(modifiers, ({ name }) => name === requestingName);\n\n  const isRequired =\n    !!requesting &&\n    modifiers.some(modifier => {\n      return (\n        modifier.name === requestedName &&\n        modifier.enabled &&\n        modifier.order < requesting.order\n      );\n    });\n\n  if (!isRequired) {\n    const requesting = `\\`${requestingName}\\``;\n    const requested = `\\`${requestedName}\\``;\n    console.warn(\n      `${requested} modifier is required by ${requesting} modifier in order to work, be sure to include it before ${requesting}!`\n    );\n  }\n  return isRequired;\n}\n","import getClientRect from '../utils/getClientRect';\nimport getOuterSizes from '../utils/getOuterSizes';\nimport isModifierRequired from '../utils/isModifierRequired';\nimport getStyleComputedProperty from '../utils/getStyleComputedProperty';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function arrow(data, options) {\n  // arrow depends on keepTogether in order to work\n  if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n    return data;\n  }\n\n  let arrowElement = options.element;\n\n  // if arrowElement is a string, suppose it's a CSS selector\n  if (typeof arrowElement === 'string') {\n    arrowElement = data.instance.popper.querySelector(arrowElement);\n\n    // if arrowElement is not found, don't run the modifier\n    if (!arrowElement) {\n      return data;\n    }\n  } else {\n    // if the arrowElement isn't a query selector we must check that the\n    // provided DOM node is child of its popper node\n    if (!data.instance.popper.contains(arrowElement)) {\n      console.warn(\n        'WARNING: `arrow.element` must be child of its popper element!'\n      );\n      return data;\n    }\n  }\n\n  const placement = data.placement.split('-')[0];\n  const { popper, reference } = data.offsets;\n  const isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n  const len = isVertical ? 'height' : 'width';\n  const sideCapitalized = isVertical ? 'Top' : 'Left';\n  const side = sideCapitalized.toLowerCase();\n  const altSide = isVertical ? 'left' : 'top';\n  const opSide = isVertical ? 'bottom' : 'right';\n  const arrowElementSize = getOuterSizes(arrowElement)[len];\n\n  //\n  // extends keepTogether behavior making sure the popper and its\n  // reference have enough pixels in conjunction\n  //\n\n  // top/left side\n  if (reference[opSide] - arrowElementSize < popper[side]) {\n    data.offsets.popper[side] -=\n      popper[side] - (reference[opSide] - arrowElementSize);\n  }\n  // bottom/right side\n  if (reference[side] + arrowElementSize > popper[opSide]) {\n    data.offsets.popper[side] +=\n      reference[side] + arrowElementSize - popper[opSide];\n  }\n  data.offsets.popper = getClientRect(data.offsets.popper);\n\n  // compute center of the popper\n  const center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n  // Compute the sideValue using the updated popper offsets\n  // take popper margin in account because we don't have this info available\n  const css = getStyleComputedProperty(data.instance.popper);\n  const popperMarginSide = parseFloat(css[`margin${sideCapitalized}`]);\n  const popperBorderSide = parseFloat(css[`border${sideCapitalized}Width`]);\n  let sideValue =\n    center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;\n\n  // prevent arrowElement from being placed not contiguously to its popper\n  sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\n  data.arrowElement = arrowElement;\n  data.offsets.arrow = {\n    [side]: Math.round(sideValue),\n    [altSide]: '', // make sure to unset any eventual altSide value from the DOM node\n  };\n\n  return data;\n}\n","/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\nexport default function getOppositeVariation(variation) {\n  if (variation === 'end') {\n    return 'start';\n  } else if (variation === 'start') {\n    return 'end';\n  }\n  return variation;\n}\n","import placements from '../methods/placements';\n\n// Get rid of `auto` `auto-start` and `auto-end`\nconst validPlacements = placements.slice(3);\n\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\nexport default function clockwise(placement, counter = false) {\n  const index = validPlacements.indexOf(placement);\n  const arr = validPlacements\n    .slice(index + 1)\n    .concat(validPlacements.slice(0, index));\n  return counter ? arr.reverse() : arr;\n}\n","import getOppositePlacement from '../utils/getOppositePlacement';\nimport getOppositeVariation from '../utils/getOppositeVariation';\nimport getPopperOffsets from '../utils/getPopperOffsets';\nimport runModifiers from '../utils/runModifiers';\nimport getBoundaries from '../utils/getBoundaries';\nimport isModifierEnabled from '../utils/isModifierEnabled';\nimport clockwise from '../utils/clockwise';\n\nconst BEHAVIORS = {\n  FLIP: 'flip',\n  CLOCKWISE: 'clockwise',\n  COUNTERCLOCKWISE: 'counterclockwise',\n};\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function flip(data, options) {\n  // if `inner` modifier is enabled, we can't use the `flip` modifier\n  if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n    return data;\n  }\n\n  if (data.flipped && data.placement === data.originalPlacement) {\n    // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n    return data;\n  }\n\n  const boundaries = getBoundaries(\n    data.instance.popper,\n    data.instance.reference,\n    options.padding,\n    options.boundariesElement,\n    data.positionFixed\n  );\n\n  let placement = data.placement.split('-')[0];\n  let placementOpposite = getOppositePlacement(placement);\n  let variation = data.placement.split('-')[1] || '';\n\n  let flipOrder = [];\n\n  switch (options.behavior) {\n    case BEHAVIORS.FLIP:\n      flipOrder = [placement, placementOpposite];\n      break;\n    case BEHAVIORS.CLOCKWISE:\n      flipOrder = clockwise(placement);\n      break;\n    case BEHAVIORS.COUNTERCLOCKWISE:\n      flipOrder = clockwise(placement, true);\n      break;\n    default:\n      flipOrder = options.behavior;\n  }\n\n  flipOrder.forEach((step, index) => {\n    if (placement !== step || flipOrder.length === index + 1) {\n      return data;\n    }\n\n    placement = data.placement.split('-')[0];\n    placementOpposite = getOppositePlacement(placement);\n\n    const popperOffsets = data.offsets.popper;\n    const refOffsets = data.offsets.reference;\n\n    // using floor because the reference offsets may contain decimals we are not going to consider here\n    const floor = Math.floor;\n    const overlapsRef =\n      (placement === 'left' &&\n        floor(popperOffsets.right) > floor(refOffsets.left)) ||\n      (placement === 'right' &&\n        floor(popperOffsets.left) < floor(refOffsets.right)) ||\n      (placement === 'top' &&\n        floor(popperOffsets.bottom) > floor(refOffsets.top)) ||\n      (placement === 'bottom' &&\n        floor(popperOffsets.top) < floor(refOffsets.bottom));\n\n    const overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n    const overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n    const overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n    const overflowsBottom =\n      floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n    const overflowsBoundaries =\n      (placement === 'left' && overflowsLeft) ||\n      (placement === 'right' && overflowsRight) ||\n      (placement === 'top' && overflowsTop) ||\n      (placement === 'bottom' && overflowsBottom);\n\n    // flip the variation if required\n    const isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n\n    // flips variation if reference element overflows boundaries\n    const flippedVariationByRef =\n      !!options.flipVariations &&\n      ((isVertical && variation === 'start' && overflowsLeft) ||\n        (isVertical && variation === 'end' && overflowsRight) ||\n        (!isVertical && variation === 'start' && overflowsTop) ||\n        (!isVertical && variation === 'end' && overflowsBottom));\n\n    // flips variation if popper content overflows boundaries\n    const flippedVariationByContent =\n      !!options.flipVariationsByContent &&\n      ((isVertical && variation === 'start' && overflowsRight) ||\n        (isVertical && variation === 'end' && overflowsLeft) ||\n        (!isVertical && variation === 'start' && overflowsBottom) ||\n        (!isVertical && variation === 'end' && overflowsTop));\n\n    const flippedVariation = flippedVariationByRef || flippedVariationByContent;\n\n    if (overlapsRef || overflowsBoundaries || flippedVariation) {\n      // this boolean to detect any flip loop\n      data.flipped = true;\n\n      if (overlapsRef || overflowsBoundaries) {\n        placement = flipOrder[index + 1];\n      }\n\n      if (flippedVariation) {\n        variation = getOppositeVariation(variation);\n      }\n\n      data.placement = placement + (variation ? '-' + variation : '');\n\n      // this object contains `position`, we want to preserve it along with\n      // any additional property we may add in the future\n      data.offsets.popper = {\n        ...data.offsets.popper,\n        ...getPopperOffsets(\n          data.instance.popper,\n          data.offsets.reference,\n          data.placement\n        ),\n      };\n\n      data = runModifiers(data.instance.modifiers, data, 'flip');\n    }\n  });\n  return data;\n}\n","/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function keepTogether(data) {\n  const { popper, reference } = data.offsets;\n  const placement = data.placement.split('-')[0];\n  const floor = Math.floor;\n  const isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n  const side = isVertical ? 'right' : 'bottom';\n  const opSide = isVertical ? 'left' : 'top';\n  const measurement = isVertical ? 'width' : 'height';\n\n  if (popper[side] < floor(reference[opSide])) {\n    data.offsets.popper[opSide] =\n      floor(reference[opSide]) - popper[measurement];\n  }\n  if (popper[opSide] > floor(reference[side])) {\n    data.offsets.popper[opSide] = floor(reference[side]);\n  }\n\n  return data;\n}\n","import isNumeric from '../utils/isNumeric';\nimport getClientRect from '../utils/getClientRect';\nimport find from '../utils/find';\n\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\nexport function toValue(str, measurement, popperOffsets, referenceOffsets) {\n  // separate value from unit\n  const split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n  const value = +split[1];\n  const unit = split[2];\n\n  // If it's not a number it's an operator, I guess\n  if (!value) {\n    return str;\n  }\n\n  if (unit.indexOf('%') === 0) {\n    let element;\n    switch (unit) {\n      case '%p':\n        element = popperOffsets;\n        break;\n      case '%':\n      case '%r':\n      default:\n        element = referenceOffsets;\n    }\n\n    const rect = getClientRect(element);\n    return rect[measurement] / 100 * value;\n  } else if (unit === 'vh' || unit === 'vw') {\n    // if is a vh or vw, we calculate the size based on the viewport\n    let size;\n    if (unit === 'vh') {\n      size = Math.max(\n        document.documentElement.clientHeight,\n        window.innerHeight || 0\n      );\n    } else {\n      size = Math.max(\n        document.documentElement.clientWidth,\n        window.innerWidth || 0\n      );\n    }\n    return size / 100 * value;\n  } else {\n    // if is an explicit pixel unit, we get rid of the unit and keep the value\n    // if is an implicit unit, it's px, and we return just the value\n    return value;\n  }\n}\n\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\nexport function parseOffset(\n  offset,\n  popperOffsets,\n  referenceOffsets,\n  basePlacement\n) {\n  const offsets = [0, 0];\n\n  // Use height if placement is left or right and index is 0 otherwise use width\n  // in this way the first offset will use an axis and the second one\n  // will use the other one\n  const useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n  // Split the offset string to obtain a list of values and operands\n  // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n  const fragments = offset.split(/(\\+|\\-)/).map(frag => frag.trim());\n\n  // Detect if the offset string contains a pair of values or a single one\n  // they could be separated by comma or space\n  const divider = fragments.indexOf(\n    find(fragments, frag => frag.search(/,|\\s/) !== -1)\n  );\n\n  if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n    console.warn(\n      'Offsets separated by white space(s) are deprecated, use a comma (,) instead.'\n    );\n  }\n\n  // If divider is found, we divide the list of values and operands to divide\n  // them by ofset X and Y.\n  const splitRegex = /\\s*,\\s*|\\s+/;\n  let ops = divider !== -1\n    ? [\n        fragments\n          .slice(0, divider)\n          .concat([fragments[divider].split(splitRegex)[0]]),\n        [fragments[divider].split(splitRegex)[1]].concat(\n          fragments.slice(divider + 1)\n        ),\n      ]\n    : [fragments];\n\n  // Convert the values with units to absolute pixels to allow our computations\n  ops = ops.map((op, index) => {\n    // Most of the units rely on the orientation of the popper\n    const measurement = (index === 1 ? !useHeight : useHeight)\n      ? 'height'\n      : 'width';\n    let mergeWithPrevious = false;\n    return (\n      op\n        // This aggregates any `+` or `-` sign that aren't considered operators\n        // e.g.: 10 + +5 => [10, +, +5]\n        .reduce((a, b) => {\n          if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n            a[a.length - 1] = b;\n            mergeWithPrevious = true;\n            return a;\n          } else if (mergeWithPrevious) {\n            a[a.length - 1] += b;\n            mergeWithPrevious = false;\n            return a;\n          } else {\n            return a.concat(b);\n          }\n        }, [])\n        // Here we convert the string values into number values (in px)\n        .map(str => toValue(str, measurement, popperOffsets, referenceOffsets))\n    );\n  });\n\n  // Loop trough the offsets arrays and execute the operations\n  ops.forEach((op, index) => {\n    op.forEach((frag, index2) => {\n      if (isNumeric(frag)) {\n        offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n      }\n    });\n  });\n  return offsets;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\nexport default function offset(data, { offset }) {\n  const { placement, offsets: { popper, reference } } = data;\n  const basePlacement = placement.split('-')[0];\n\n  let offsets;\n  if (isNumeric(+offset)) {\n    offsets = [+offset, 0];\n  } else {\n    offsets = parseOffset(offset, popper, reference, basePlacement);\n  }\n\n  if (basePlacement === 'left') {\n    popper.top += offsets[0];\n    popper.left -= offsets[1];\n  } else if (basePlacement === 'right') {\n    popper.top += offsets[0];\n    popper.left += offsets[1];\n  } else if (basePlacement === 'top') {\n    popper.left += offsets[0];\n    popper.top -= offsets[1];\n  } else if (basePlacement === 'bottom') {\n    popper.left += offsets[0];\n    popper.top += offsets[1];\n  }\n\n  data.popper = popper;\n  return data;\n}\n","import getOffsetParent from '../utils/getOffsetParent';\nimport getBoundaries from '../utils/getBoundaries';\nimport getSupportedPropertyName from '../utils/getSupportedPropertyName';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function preventOverflow(data, options) {\n  let boundariesElement =\n    options.boundariesElement || getOffsetParent(data.instance.popper);\n\n  // If offsetParent is the reference element, we really want to\n  // go one step up and use the next offsetParent as reference to\n  // avoid to make this modifier completely useless and look like broken\n  if (data.instance.reference === boundariesElement) {\n    boundariesElement = getOffsetParent(boundariesElement);\n  }\n\n  // NOTE: DOM access here\n  // resets the popper's position so that the document size can be calculated excluding\n  // the size of the popper element itself\n  const transformProp = getSupportedPropertyName('transform');\n  const popperStyles = data.instance.popper.style; // assignment to help minification\n  const { top, left, [transformProp]: transform } = popperStyles;\n  popperStyles.top = '';\n  popperStyles.left = '';\n  popperStyles[transformProp] = '';\n\n  const boundaries = getBoundaries(\n    data.instance.popper,\n    data.instance.reference,\n    options.padding,\n    boundariesElement,\n    data.positionFixed\n  );\n\n  // NOTE: DOM access here\n  // restores the original style properties after the offsets have been computed\n  popperStyles.top = top;\n  popperStyles.left = left;\n  popperStyles[transformProp] = transform;\n\n  options.boundaries = boundaries;\n\n  const order = options.priority;\n  let popper = data.offsets.popper;\n\n  const check = {\n    primary(placement) {\n      let value = popper[placement];\n      if (\n        popper[placement] < boundaries[placement] &&\n        !options.escapeWithReference\n      ) {\n        value = Math.max(popper[placement], boundaries[placement]);\n      }\n      return { [placement]: value };\n    },\n    secondary(placement) {\n      const mainSide = placement === 'right' ? 'left' : 'top';\n      let value = popper[mainSide];\n      if (\n        popper[placement] > boundaries[placement] &&\n        !options.escapeWithReference\n      ) {\n        value = Math.min(\n          popper[mainSide],\n          boundaries[placement] -\n            (placement === 'right' ? popper.width : popper.height)\n        );\n      }\n      return { [mainSide]: value };\n    },\n  };\n\n  order.forEach(placement => {\n    const side =\n      ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n    popper = { ...popper, ...check[side](placement) };\n  });\n\n  data.offsets.popper = popper;\n\n  return data;\n}\n","/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function shift(data) {\n  const placement = data.placement;\n  const basePlacement = placement.split('-')[0];\n  const shiftvariation = placement.split('-')[1];\n\n  // if shift shiftvariation is specified, run the modifier\n  if (shiftvariation) {\n    const { reference, popper } = data.offsets;\n    const isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n    const side = isVertical ? 'left' : 'top';\n    const measurement = isVertical ? 'width' : 'height';\n\n    const shiftOffsets = {\n      start: { [side]: reference[side] },\n      end: {\n        [side]: reference[side] + reference[measurement] - popper[measurement],\n      },\n    };\n\n    data.offsets.popper = { ...popper, ...shiftOffsets[shiftvariation] };\n  }\n\n  return data;\n}\n","import isModifierRequired from '../utils/isModifierRequired';\nimport find from '../utils/find';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function hide(data) {\n  if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n    return data;\n  }\n\n  const refRect = data.offsets.reference;\n  const bound = find(\n    data.instance.modifiers,\n    modifier => modifier.name === 'preventOverflow'\n  ).boundaries;\n\n  if (\n    refRect.bottom < bound.top ||\n    refRect.left > bound.right ||\n    refRect.top > bound.bottom ||\n    refRect.right < bound.left\n  ) {\n    // Avoid unnecessary DOM access if visibility hasn't changed\n    if (data.hide === true) {\n      return data;\n    }\n\n    data.hide = true;\n    data.attributes['x-out-of-boundaries'] = '';\n  } else {\n    // Avoid unnecessary DOM access if visibility hasn't changed\n    if (data.hide === false) {\n      return data;\n    }\n\n    data.hide = false;\n    data.attributes['x-out-of-boundaries'] = false;\n  }\n\n  return data;\n}\n","import getClientRect from '../utils/getClientRect';\nimport getOppositePlacement from '../utils/getOppositePlacement';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function inner(data) {\n  const placement = data.placement;\n  const basePlacement = placement.split('-')[0];\n  const { popper, reference } = data.offsets;\n  const isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n  const subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n  popper[isHoriz ? 'left' : 'top'] =\n    reference[basePlacement] -\n    (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n  data.placement = getOppositePlacement(placement);\n  data.offsets.popper = getClientRect(popper);\n\n  return data;\n}\n","export default typeof window !== 'undefined' && typeof document !== 'undefined' && typeof navigator !== 'undefined';\n","/**\n * List of accepted placements to use as values of the `placement` option.<br />\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.<br />\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-end` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\nexport default [\n  'auto-start',\n  'auto',\n  'auto-end',\n  'top-start',\n  'top',\n  'top-end',\n  'right-start',\n  'right',\n  'right-end',\n  'bottom-end',\n  'bottom',\n  'bottom-start',\n  'left-end',\n  'left',\n  'left-start',\n];\n","import applyStyle, { applyStyleOnLoad } from './applyStyle';\nimport computeStyle from './computeStyle';\nimport arrow from './arrow';\nimport flip from './flip';\nimport keepTogether from './keepTogether';\nimport offset from './offset';\nimport preventOverflow from './preventOverflow';\nimport shift from './shift';\nimport hide from './hide';\nimport inner from './inner';\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.<br />\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.<br />\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\nexport default {\n  /**\n   * Modifier used to shift the popper on the start or end of its reference\n   * element.<br />\n   * It will read the variation of the `placement` property.<br />\n   * It can be one either `-end` or `-start`.\n   * @memberof modifiers\n   * @inner\n   */\n  shift: {\n    /** @prop {number} order=100 - Index used to define the order of execution */\n    order: 100,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: shift,\n  },\n\n  /**\n   * The `offset` modifier can shift your popper on both its axis.\n   *\n   * It accepts the following units:\n   * - `px` or unit-less, interpreted as pixels\n   * - `%` or `%r`, percentage relative to the length of the reference element\n   * - `%p`, percentage relative to the length of the popper element\n   * - `vw`, CSS viewport width unit\n   * - `vh`, CSS viewport height unit\n   *\n   * For length is intended the main axis relative to the placement of the popper.<br />\n   * This means that if the placement is `top` or `bottom`, the length will be the\n   * `width`. In case of `left` or `right`, it will be the `height`.\n   *\n   * You can provide a single value (as `Number` or `String`), or a pair of values\n   * as `String` divided by a comma or one (or more) white spaces.<br />\n   * The latter is a deprecated method because it leads to confusion and will be\n   * removed in v2.<br />\n   * Additionally, it accepts additions and subtractions between different units.\n   * Note that multiplications and divisions aren't supported.\n   *\n   * Valid examples are:\n   * ```\n   * 10\n   * '10%'\n   * '10, 10'\n   * '10%, 10'\n   * '10 + 10%'\n   * '10 - 5vh + 3%'\n   * '-10px + 5vh, 5px - 6%'\n   * ```\n   * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n   * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n   * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373).\n   *\n   * @memberof modifiers\n   * @inner\n   */\n  offset: {\n    /** @prop {number} order=200 - Index used to define the order of execution */\n    order: 200,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: offset,\n    /** @prop {Number|String} offset=0\n     * The offset value as described in the modifier description\n     */\n    offset: 0,\n  },\n\n  /**\n   * Modifier used to prevent the popper from being positioned outside the boundary.\n   *\n   * A scenario exists where the reference itself is not within the boundaries.<br />\n   * We can say it has \"escaped the boundaries\" — or just \"escaped\".<br />\n   * In this case we need to decide whether the popper should either:\n   *\n   * - detach from the reference and remain \"trapped\" in the boundaries, or\n   * - if it should ignore the boundary and \"escape with its reference\"\n   *\n   * When `escapeWithReference` is set to`true` and reference is completely\n   * outside its boundaries, the popper will overflow (or completely leave)\n   * the boundaries in order to remain attached to the edge of the reference.\n   *\n   * @memberof modifiers\n   * @inner\n   */\n  preventOverflow: {\n    /** @prop {number} order=300 - Index used to define the order of execution */\n    order: 300,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: preventOverflow,\n    /**\n     * @prop {Array} [priority=['left','right','top','bottom']]\n     * Popper will try to prevent overflow following these priorities by default,\n     * then, it could overflow on the left and on top of the `boundariesElement`\n     */\n    priority: ['left', 'right', 'top', 'bottom'],\n    /**\n     * @prop {number} padding=5\n     * Amount of pixel used to define a minimum distance between the boundaries\n     * and the popper. This makes sure the popper always has a little padding\n     * between the edges of its container\n     */\n    padding: 5,\n    /**\n     * @prop {String|HTMLElement} boundariesElement='scrollParent'\n     * Boundaries used by the modifier. Can be `scrollParent`, `window`,\n     * `viewport` or any DOM element.\n     */\n    boundariesElement: 'scrollParent',\n  },\n\n  /**\n   * Modifier used to make sure the reference and its popper stay near each other\n   * without leaving any gap between the two. Especially useful when the arrow is\n   * enabled and you want to ensure that it points to its reference element.\n   * It cares only about the first axis. You can still have poppers with margin\n   * between the popper and its reference element.\n   * @memberof modifiers\n   * @inner\n   */\n  keepTogether: {\n    /** @prop {number} order=400 - Index used to define the order of execution */\n    order: 400,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: keepTogether,\n  },\n\n  /**\n   * This modifier is used to move the `arrowElement` of the popper to make\n   * sure it is positioned between the reference element and its popper element.\n   * It will read the outer size of the `arrowElement` node to detect how many\n   * pixels of conjunction are needed.\n   *\n   * It has no effect if no `arrowElement` is provided.\n   * @memberof modifiers\n   * @inner\n   */\n  arrow: {\n    /** @prop {number} order=500 - Index used to define the order of execution */\n    order: 500,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: arrow,\n    /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n    element: '[x-arrow]',\n  },\n\n  /**\n   * Modifier used to flip the popper's placement when it starts to overlap its\n   * reference element.\n   *\n   * Requires the `preventOverflow` modifier before it in order to work.\n   *\n   * **NOTE:** this modifier will interrupt the current update cycle and will\n   * restart it if it detects the need to flip the placement.\n   * @memberof modifiers\n   * @inner\n   */\n  flip: {\n    /** @prop {number} order=600 - Index used to define the order of execution */\n    order: 600,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: flip,\n    /**\n     * @prop {String|Array} behavior='flip'\n     * The behavior used to change the popper's placement. It can be one of\n     * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n     * placements (with optional variations)\n     */\n    behavior: 'flip',\n    /**\n     * @prop {number} padding=5\n     * The popper will flip if it hits the edges of the `boundariesElement`\n     */\n    padding: 5,\n    /**\n     * @prop {String|HTMLElement} boundariesElement='viewport'\n     * The element which will define the boundaries of the popper position.\n     * The popper will never be placed outside of the defined boundaries\n     * (except if `keepTogether` is enabled)\n     */\n    boundariesElement: 'viewport',\n    /**\n     * @prop {Boolean} flipVariations=false\n     * The popper will switch placement variation between `-start` and `-end` when\n     * the reference element overlaps its boundaries.\n     *\n     * The original placement should have a set variation.\n     */\n    flipVariations: false,\n    /**\n     * @prop {Boolean} flipVariationsByContent=false\n     * The popper will switch placement variation between `-start` and `-end` when\n     * the popper element overlaps its reference boundaries.\n     *\n     * The original placement should have a set variation.\n     */\n    flipVariationsByContent: false,\n  },\n\n  /**\n   * Modifier used to make the popper flow toward the inner of the reference element.\n   * By default, when this modifier is disabled, the popper will be placed outside\n   * the reference element.\n   * @memberof modifiers\n   * @inner\n   */\n  inner: {\n    /** @prop {number} order=700 - Index used to define the order of execution */\n    order: 700,\n    /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n    enabled: false,\n    /** @prop {ModifierFn} */\n    fn: inner,\n  },\n\n  /**\n   * Modifier used to hide the popper when its reference element is outside of the\n   * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n   * be used to hide with a CSS selector the popper when its reference is\n   * out of boundaries.\n   *\n   * Requires the `preventOverflow` modifier before it in order to work.\n   * @memberof modifiers\n   * @inner\n   */\n  hide: {\n    /** @prop {number} order=800 - Index used to define the order of execution */\n    order: 800,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: hide,\n  },\n\n  /**\n   * Computes the style that will be applied to the popper element to gets\n   * properly positioned.\n   *\n   * Note that this modifier will not touch the DOM, it just prepares the styles\n   * so that `applyStyle` modifier can apply it. This separation is useful\n   * in case you need to replace `applyStyle` with a custom implementation.\n   *\n   * This modifier has `850` as `order` value to maintain backward compatibility\n   * with previous versions of Popper.js. Expect the modifiers ordering method\n   * to change in future major versions of the library.\n   *\n   * @memberof modifiers\n   * @inner\n   */\n  computeStyle: {\n    /** @prop {number} order=850 - Index used to define the order of execution */\n    order: 850,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: computeStyle,\n    /**\n     * @prop {Boolean} gpuAcceleration=true\n     * If true, it uses the CSS 3D transformation to position the popper.\n     * Otherwise, it will use the `top` and `left` properties\n     */\n    gpuAcceleration: true,\n    /**\n     * @prop {string} [x='bottom']\n     * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n     * Change this if your popper should grow in a direction different from `bottom`\n     */\n    x: 'bottom',\n    /**\n     * @prop {string} [x='left']\n     * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n     * Change this if your popper should grow in a direction different from `right`\n     */\n    y: 'right',\n  },\n\n  /**\n   * Applies the computed styles to the popper element.\n   *\n   * All the DOM manipulations are limited to this modifier. This is useful in case\n   * you want to integrate Popper.js inside a framework or view library and you\n   * want to delegate all the DOM manipulations to it.\n   *\n   * Note that if you disable this modifier, you must make sure the popper element\n   * has its position set to `absolute` before Popper.js can do its work!\n   *\n   * Just disable this modifier and define your own to achieve the desired effect.\n   *\n   * @memberof modifiers\n   * @inner\n   */\n  applyStyle: {\n    /** @prop {number} order=900 - Index used to define the order of execution */\n    order: 900,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: applyStyle,\n    /** @prop {Function} */\n    onLoad: applyStyleOnLoad,\n    /**\n     * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n     * @prop {Boolean} gpuAcceleration=true\n     * If true, it uses the CSS 3D transformation to position the popper.\n     * Otherwise, it will use the `top` and `left` properties\n     */\n    gpuAcceleration: undefined,\n  },\n};\n\n/**\n * The `dataObject` is an object containing all the information used by Popper.js.\n * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n","import modifiers from '../modifiers/index';\n\n/**\n * Default options provided to Popper.js constructor.<br />\n * These can be overridden using the `options` argument of Popper.js.<br />\n * To override an option, simply pass an object with the same\n * structure of the `options` object, as the 3rd argument. For example:\n * ```\n * new Popper(ref, pop, {\n *   modifiers: {\n *     preventOverflow: { enabled: false }\n *   }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\nexport default {\n  /**\n   * Popper's placement.\n   * @prop {Popper.placements} placement='bottom'\n   */\n  placement: 'bottom',\n\n  /**\n   * Set this to true if you want popper to position it self in 'fixed' mode\n   * @prop {Boolean} positionFixed=false\n   */\n  positionFixed: false,\n\n  /**\n   * Whether events (resize, scroll) are initially enabled.\n   * @prop {Boolean} eventsEnabled=true\n   */\n  eventsEnabled: true,\n\n  /**\n   * Set to true if you want to automatically remove the popper when\n   * you call the `destroy` method.\n   * @prop {Boolean} removeOnDestroy=false\n   */\n  removeOnDestroy: false,\n\n  /**\n   * Callback called when the popper is created.<br />\n   * By default, it is set to no-op.<br />\n   * Access Popper.js instance with `data.instance`.\n   * @prop {onCreate}\n   */\n  onCreate: () => {},\n\n  /**\n   * Callback called when the popper is updated. This callback is not called\n   * on the initialization/creation of the popper, but only on subsequent\n   * updates.<br />\n   * By default, it is set to no-op.<br />\n   * Access Popper.js instance with `data.instance`.\n   * @prop {onUpdate}\n   */\n  onUpdate: () => {},\n\n  /**\n   * List of modifiers used to modify the offsets before they are applied to the popper.\n   * They provide most of the functionalities of Popper.js.\n   * @prop {modifiers}\n   */\n  modifiers,\n};\n\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n","// Utils\nimport debounce from './utils/debounce';\nimport isFunction from './utils/isFunction';\n\n// Methods\nimport update from './methods/update';\nimport destroy from './methods/destroy';\nimport enableEventListeners from './methods/enableEventListeners';\nimport disableEventListeners from './methods/disableEventListeners';\nimport Defaults from './methods/defaults';\nimport placements from './methods/placements';\n\nexport default class Popper {\n  /**\n   * Creates a new Popper.js instance.\n   * @class Popper\n   * @param {Element|referenceObject} reference - The reference element used to position the popper\n   * @param {Element} popper - The HTML / XML element used as the popper\n   * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n   * @return {Object} instance - The generated Popper.js instance\n   */\n  constructor(reference, popper, options = {}) {\n    // make update() debounced, so that it only runs at most once-per-tick\n    this.update = debounce(this.update.bind(this));\n\n    // with {} we create a new object with the options inside it\n    this.options = { ...Popper.Defaults, ...options };\n\n    // init state\n    this.state = {\n      isDestroyed: false,\n      isCreated: false,\n      scrollParents: [],\n    };\n\n    // get reference and popper elements (allow jQuery wrappers)\n    this.reference = reference && reference.jquery ? reference[0] : reference;\n    this.popper = popper && popper.jquery ? popper[0] : popper;\n\n    // Deep merge modifiers options\n    this.options.modifiers = {};\n    Object.keys({\n      ...Popper.Defaults.modifiers,\n      ...options.modifiers,\n    }).forEach(name => {\n      this.options.modifiers[name] = {\n        // If it's a built-in modifier, use it as base\n        ...(Popper.Defaults.modifiers[name] || {}),\n        // If there are custom options, override and merge with default ones\n        ...(options.modifiers ? options.modifiers[name] : {}),\n      };\n    });\n\n    // Refactoring modifiers' list (Object => Array)\n    this.modifiers = Object.keys(this.options.modifiers)\n      .map(name => ({\n        name,\n        ...this.options.modifiers[name],\n      }))\n      // sort the modifiers by order\n      .sort((a, b) => a.order - b.order);\n\n    // modifiers have the ability to execute arbitrary code when Popper.js get inited\n    // such code is executed in the same order of its modifier\n    // they could add new properties to their options configuration\n    // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n    this.modifiers.forEach(modifierOptions => {\n      if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n        modifierOptions.onLoad(\n          this.reference,\n          this.popper,\n          this.options,\n          modifierOptions,\n          this.state\n        );\n      }\n    });\n\n    // fire the first update to position the popper in the right place\n    this.update();\n\n    const eventsEnabled = this.options.eventsEnabled;\n    if (eventsEnabled) {\n      // setup event listeners, they will take care of update the position in specific situations\n      this.enableEventListeners();\n    }\n\n    this.state.eventsEnabled = eventsEnabled;\n  }\n\n  // We can't use class properties because they don't get listed in the\n  // class prototype and break stuff like Sinon stubs\n  update() {\n    return update.call(this);\n  }\n  destroy() {\n    return destroy.call(this);\n  }\n  enableEventListeners() {\n    return enableEventListeners.call(this);\n  }\n  disableEventListeners() {\n    return disableEventListeners.call(this);\n  }\n\n  /**\n   * Schedules an update. It will run on the next UI update available.\n   * @method scheduleUpdate\n   * @memberof Popper\n   */\n  scheduleUpdate = () => requestAnimationFrame(this.update);\n\n  /**\n   * Collection of utilities useful when writing custom modifiers.\n   * Starting from version 1.7, this method is available only if you\n   * include `popper-utils.js` before `popper.js`.\n   *\n   * **DEPRECATION**: This way to access PopperUtils is deprecated\n   * and will be removed in v2! Use the PopperUtils module directly instead.\n   * Due to the high instability of the methods contained in Utils, we can't\n   * guarantee them to follow semver. Use them at your own risk!\n   * @static\n   * @private\n   * @type {Object}\n   * @deprecated since version 1.8\n   * @member Utils\n   * @memberof Popper\n   */\n  static Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\n\n  static placements = placements;\n\n  static Defaults = Defaults;\n}\n\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.<br />\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10.\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n","// @flow\n'use strict';\n\nvar key = '__global_unique_id__';\n\nmodule.exports = function() {\n  return global[key] = (global[key] || 0) + 1;\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\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n  var printWarning = function printWarning(format, args) {\n    var len = arguments.length;\n    args = new Array(len > 1 ? len - 1 : 0);\n    for (var key = 1; key < len; key++) {\n      args[key - 1] = arguments[key];\n    }\n    var argIndex = 0;\n    var message = 'Warning: ' +\n      format.replace(/%s/g, function() {\n        return args[argIndex++];\n      });\n    if (typeof console !== 'undefined') {\n      console.error(message);\n    }\n    try {\n      // --- Welcome to debugging React ---\n      // This error was thrown as a convenience so that you can use this stack\n      // to find the callsite that caused this warning to fire.\n      throw new Error(message);\n    } catch (x) {}\n  }\n\n  warning = function(condition, format, args) {\n    var len = arguments.length;\n    args = new Array(len > 2 ? len - 2 : 0);\n    for (var key = 2; key < len; key++) {\n      args[key - 2] = arguments[key];\n    }\n    if (format === undefined) {\n      throw new Error(\n          '`warning(condition, format, ...args)` requires a warning ' +\n          'message argument'\n      );\n    }\n    if (!condition) {\n      printWarning.apply(null, [format].concat(args));\n    }\n  };\n}\n\nmodule.exports = warning;\n","'use strict';\n\nexports.__esModule = true;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _gud = require('gud');\n\nvar _gud2 = _interopRequireDefault(_gud);\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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 MAX_SIGNED_31_BIT_INT = 1073741823;\n\n// Inlined Object.is polyfill.\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\nfunction objectIs(x, y) {\n  if (x === y) {\n    return x !== 0 || 1 / x === 1 / y;\n  } else {\n    return x !== x && y !== y;\n  }\n}\n\nfunction createEventEmitter(value) {\n  var handlers = [];\n  return {\n    on: function on(handler) {\n      handlers.push(handler);\n    },\n    off: function off(handler) {\n      handlers = handlers.filter(function (h) {\n        return h !== handler;\n      });\n    },\n    get: function get() {\n      return value;\n    },\n    set: function set(newValue, changedBits) {\n      value = newValue;\n      handlers.forEach(function (handler) {\n        return handler(value, changedBits);\n      });\n    }\n  };\n}\n\nfunction onlyChild(children) {\n  return Array.isArray(children) ? children[0] : children;\n}\n\nfunction createReactContext(defaultValue, calculateChangedBits) {\n  var _Provider$childContex, _Consumer$contextType;\n\n  var contextProp = '__create-react-context-' + (0, _gud2.default)() + '__';\n\n  var Provider = function (_Component) {\n    _inherits(Provider, _Component);\n\n    function Provider() {\n      var _temp, _this, _ret;\n\n      _classCallCheck(this, Provider);\n\n      for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n\n      return _ret = (_temp = (_this = _possibleConstructorReturn(this, _Component.call.apply(_Component, [this].concat(args))), _this), _this.emitter = createEventEmitter(_this.props.value), _temp), _possibleConstructorReturn(_this, _ret);\n    }\n\n    Provider.prototype.getChildContext = function getChildContext() {\n      var _ref;\n\n      return _ref = {}, _ref[contextProp] = this.emitter, _ref;\n    };\n\n    Provider.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n      if (this.props.value !== nextProps.value) {\n        var oldValue = this.props.value;\n        var newValue = nextProps.value;\n        var changedBits = void 0;\n\n        if (objectIs(oldValue, newValue)) {\n          changedBits = 0; // No change\n        } else {\n          changedBits = typeof calculateChangedBits === 'function' ? calculateChangedBits(oldValue, newValue) : MAX_SIGNED_31_BIT_INT;\n          if (process.env.NODE_ENV !== 'production') {\n            (0, _warning2.default)((changedBits & MAX_SIGNED_31_BIT_INT) === changedBits, 'calculateChangedBits: Expected the return value to be a ' + '31-bit integer. Instead received: %s', changedBits);\n          }\n\n          changedBits |= 0;\n\n          if (changedBits !== 0) {\n            this.emitter.set(nextProps.value, changedBits);\n          }\n        }\n      }\n    };\n\n    Provider.prototype.render = function render() {\n      return this.props.children;\n    };\n\n    return Provider;\n  }(_react.Component);\n\n  Provider.childContextTypes = (_Provider$childContex = {}, _Provider$childContex[contextProp] = _propTypes2.default.object.isRequired, _Provider$childContex);\n\n  var Consumer = function (_Component2) {\n    _inherits(Consumer, _Component2);\n\n    function Consumer() {\n      var _temp2, _this2, _ret2;\n\n      _classCallCheck(this, Consumer);\n\n      for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        args[_key2] = arguments[_key2];\n      }\n\n      return _ret2 = (_temp2 = (_this2 = _possibleConstructorReturn(this, _Component2.call.apply(_Component2, [this].concat(args))), _this2), _this2.state = {\n        value: _this2.getValue()\n      }, _this2.onUpdate = function (newValue, changedBits) {\n        var observedBits = _this2.observedBits | 0;\n        if ((observedBits & changedBits) !== 0) {\n          _this2.setState({ value: _this2.getValue() });\n        }\n      }, _temp2), _possibleConstructorReturn(_this2, _ret2);\n    }\n\n    Consumer.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n      var observedBits = nextProps.observedBits;\n\n      this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n      : observedBits;\n    };\n\n    Consumer.prototype.componentDidMount = function componentDidMount() {\n      if (this.context[contextProp]) {\n        this.context[contextProp].on(this.onUpdate);\n      }\n      var observedBits = this.props.observedBits;\n\n      this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n      : observedBits;\n    };\n\n    Consumer.prototype.componentWillUnmount = function componentWillUnmount() {\n      if (this.context[contextProp]) {\n        this.context[contextProp].off(this.onUpdate);\n      }\n    };\n\n    Consumer.prototype.getValue = function getValue() {\n      if (this.context[contextProp]) {\n        return this.context[contextProp].get();\n      } else {\n        return defaultValue;\n      }\n    };\n\n    Consumer.prototype.render = function render() {\n      return onlyChild(this.props.children)(this.state.value);\n    };\n\n    return Consumer;\n  }(_react.Component);\n\n  Consumer.contextTypes = (_Consumer$contextType = {}, _Consumer$contextType[contextProp] = _propTypes2.default.object, _Consumer$contextType);\n\n\n  return {\n    Provider: Provider,\n    Consumer: Consumer\n  };\n}\n\nexports.default = createReactContext;\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _implementation = require('./implementation');\n\nvar _implementation2 = _interopRequireDefault(_implementation);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _react2.default.createContext || _implementation2.default;\nmodule.exports = exports['default'];","import _inheritsLoose from \"@babel/runtime/helpers/inheritsLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport * as React from 'react';\nimport createContext from '@hypnosphi/create-react-context';\nexport var ManagerReferenceNodeContext = createContext();\nexport var ManagerReferenceNodeSetterContext = createContext();\n\nvar Manager =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(Manager, _React$Component);\n\n  function Manager() {\n    var _this;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"referenceNode\", void 0);\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"setReferenceNode\", function (newReferenceNode) {\n      if (newReferenceNode && _this.referenceNode !== newReferenceNode) {\n        _this.referenceNode = newReferenceNode;\n\n        _this.forceUpdate();\n      }\n    });\n\n    return _this;\n  }\n\n  var _proto = Manager.prototype;\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    this.referenceNode = null;\n  };\n\n  _proto.render = function render() {\n    return React.createElement(ManagerReferenceNodeContext.Provider, {\n      value: this.referenceNode\n    }, React.createElement(ManagerReferenceNodeSetterContext.Provider, {\n      value: this.setReferenceNode\n    }, this.props.children));\n  };\n\n  return Manager;\n}(React.Component);\n\nexport { Manager as default };","/**\n * Takes an argument and if it's an array, returns the first item in the array,\n * otherwise returns the argument. Used for Preact compatibility.\n */\nexport var unwrapArray = function unwrapArray(arg) {\n  return Array.isArray(arg) ? arg[0] : arg;\n};\n/**\n * Takes a maybe-undefined function and arbitrary args and invokes the function\n * only if it is defined.\n */\n\nexport var safeInvoke = function safeInvoke(fn) {\n  if (typeof fn === \"function\") {\n    for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key - 1] = arguments[_key];\n    }\n\n    return fn.apply(void 0, args);\n  }\n};\n/**\n * Does a shallow equality check of two objects by comparing the reference\n * equality of each value.\n */\n\nexport var shallowEqual = function shallowEqual(objA, objB) {\n  var aKeys = Object.keys(objA);\n  var bKeys = Object.keys(objB);\n\n  if (bKeys.length !== aKeys.length) {\n    return false;\n  }\n\n  for (var i = 0; i < bKeys.length; i++) {\n    var key = aKeys[i];\n\n    if (objA[key] !== objB[key]) {\n      return false;\n    }\n  }\n\n  return true;\n};\n/**\n * Sets a ref using either a ref callback or a ref object\n */\n\nexport var setRef = function setRef(ref, node) {\n  // if its a function call it\n  if (typeof ref === \"function\") {\n    return safeInvoke(ref, node);\n  } // otherwise we should treat it as a ref object\n  else if (ref != null) {\n      ref.current = node;\n    }\n};","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/inheritsLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport deepEqual from \"deep-equal\";\nimport * as React from 'react';\nimport PopperJS from 'popper.js';\nimport { ManagerReferenceNodeContext } from './Manager';\nimport { unwrapArray, setRef, shallowEqual } from './utils';\nvar initialStyle = {\n  position: 'absolute',\n  top: 0,\n  left: 0,\n  opacity: 0,\n  pointerEvents: 'none'\n};\nvar initialArrowStyle = {};\nexport var InnerPopper =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(InnerPopper, _React$Component);\n\n  function InnerPopper() {\n    var _this;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"state\", {\n      data: undefined,\n      placement: undefined\n    });\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"popperInstance\", void 0);\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"popperNode\", null);\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"arrowNode\", null);\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"setPopperNode\", function (popperNode) {\n      if (!popperNode || _this.popperNode === popperNode) return;\n      setRef(_this.props.innerRef, popperNode);\n      _this.popperNode = popperNode;\n\n      _this.updatePopperInstance();\n    });\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"setArrowNode\", function (arrowNode) {\n      _this.arrowNode = arrowNode;\n    });\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"updateStateModifier\", {\n      enabled: true,\n      order: 900,\n      fn: function fn(data) {\n        var placement = data.placement;\n\n        _this.setState({\n          data: data,\n          placement: placement\n        });\n\n        return data;\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getOptions\", function () {\n      return {\n        placement: _this.props.placement,\n        eventsEnabled: _this.props.eventsEnabled,\n        positionFixed: _this.props.positionFixed,\n        modifiers: _extends({}, _this.props.modifiers, {\n          arrow: _extends({}, _this.props.modifiers && _this.props.modifiers.arrow, {\n            enabled: !!_this.arrowNode,\n            element: _this.arrowNode\n          }),\n          applyStyle: {\n            enabled: false\n          },\n          updateStateModifier: _this.updateStateModifier\n        })\n      };\n    });\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getPopperStyle\", function () {\n      return !_this.popperNode || !_this.state.data ? initialStyle : _extends({\n        position: _this.state.data.offsets.popper.position\n      }, _this.state.data.styles);\n    });\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getPopperPlacement\", function () {\n      return !_this.state.data ? undefined : _this.state.placement;\n    });\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getArrowStyle\", function () {\n      return !_this.arrowNode || !_this.state.data ? initialArrowStyle : _this.state.data.arrowStyles;\n    });\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getOutOfBoundariesState\", function () {\n      return _this.state.data ? _this.state.data.hide : undefined;\n    });\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"destroyPopperInstance\", function () {\n      if (!_this.popperInstance) return;\n\n      _this.popperInstance.destroy();\n\n      _this.popperInstance = null;\n    });\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"updatePopperInstance\", function () {\n      _this.destroyPopperInstance();\n\n      var _assertThisInitialize = _assertThisInitialized(_assertThisInitialized(_this)),\n          popperNode = _assertThisInitialize.popperNode;\n\n      var referenceElement = _this.props.referenceElement;\n      if (!referenceElement || !popperNode) return;\n      _this.popperInstance = new PopperJS(referenceElement, popperNode, _this.getOptions());\n    });\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"scheduleUpdate\", function () {\n      if (_this.popperInstance) {\n        _this.popperInstance.scheduleUpdate();\n      }\n    });\n\n    return _this;\n  }\n\n  var _proto = InnerPopper.prototype;\n\n  _proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n    // If the Popper.js options have changed, update the instance (destroy + create)\n    if (this.props.placement !== prevProps.placement || this.props.referenceElement !== prevProps.referenceElement || this.props.positionFixed !== prevProps.positionFixed || !deepEqual(this.props.modifiers, prevProps.modifiers, {\n      strict: true\n    })) {\n      // develop only check that modifiers isn't being updated needlessly\n      if (process.env.NODE_ENV === \"development\") {\n        if (this.props.modifiers !== prevProps.modifiers && this.props.modifiers != null && prevProps.modifiers != null && shallowEqual(this.props.modifiers, prevProps.modifiers)) {\n          console.warn(\"'modifiers' prop reference updated even though all values appear the same.\\nConsider memoizing the 'modifiers' object to avoid needless rendering.\");\n        }\n      }\n\n      this.updatePopperInstance();\n    } else if (this.props.eventsEnabled !== prevProps.eventsEnabled && this.popperInstance) {\n      this.props.eventsEnabled ? this.popperInstance.enableEventListeners() : this.popperInstance.disableEventListeners();\n    } // A placement difference in state means popper determined a new placement\n    // apart from the props value. By the time the popper element is rendered with\n    // the new position Popper has already measured it, if the place change triggers\n    // a size change it will result in a misaligned popper. So we schedule an update to be sure.\n\n\n    if (prevState.placement !== this.state.placement) {\n      this.scheduleUpdate();\n    }\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    setRef(this.props.innerRef, null);\n    this.destroyPopperInstance();\n  };\n\n  _proto.render = function render() {\n    return unwrapArray(this.props.children)({\n      ref: this.setPopperNode,\n      style: this.getPopperStyle(),\n      placement: this.getPopperPlacement(),\n      outOfBoundaries: this.getOutOfBoundariesState(),\n      scheduleUpdate: this.scheduleUpdate,\n      arrowProps: {\n        ref: this.setArrowNode,\n        style: this.getArrowStyle()\n      }\n    });\n  };\n\n  return InnerPopper;\n}(React.Component);\n\n_defineProperty(InnerPopper, \"defaultProps\", {\n  placement: 'bottom',\n  eventsEnabled: true,\n  referenceElement: undefined,\n  positionFixed: false\n});\n\nvar placements = PopperJS.placements;\nexport { placements };\nexport default function Popper(_ref) {\n  var referenceElement = _ref.referenceElement,\n      props = _objectWithoutPropertiesLoose(_ref, [\"referenceElement\"]);\n\n  return React.createElement(ManagerReferenceNodeContext.Consumer, null, function (referenceNode) {\n    return React.createElement(InnerPopper, _extends({\n      referenceElement: referenceElement !== undefined ? referenceElement : referenceNode\n    }, props));\n  });\n}","import _extends from \"@babel/runtime/helpers/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/inheritsLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport * as React from 'react';\nimport warning from 'warning';\nimport { ManagerReferenceNodeSetterContext } from './Manager';\nimport { safeInvoke, unwrapArray, setRef } from './utils';\n\nvar InnerReference =\n/*#__PURE__*/\nfunction (_React$Component) {\n  _inheritsLoose(InnerReference, _React$Component);\n\n  function InnerReference() {\n    var _this;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n    _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"refHandler\", function (node) {\n      setRef(_this.props.innerRef, node);\n      safeInvoke(_this.props.setReferenceNode, node);\n    });\n\n    return _this;\n  }\n\n  var _proto = InnerReference.prototype;\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    setRef(this.props.innerRef, null);\n  };\n\n  _proto.render = function render() {\n    warning(Boolean(this.props.setReferenceNode), '`Reference` should not be used outside of a `Manager` component.');\n    return unwrapArray(this.props.children)({\n      ref: this.refHandler\n    });\n  };\n\n  return InnerReference;\n}(React.Component);\n\nexport default function Reference(props) {\n  return React.createElement(ManagerReferenceNodeSetterContext.Consumer, null, function (setReferenceNode) {\n    return React.createElement(InnerReference, _extends({\n      setReferenceNode: setReferenceNode\n    }, props));\n  });\n}","// Public components\nimport Popper, { placements } from './Popper';\nimport Manager from './Manager';\nimport Reference from './Reference';\nexport { Popper, placements, Manager, Reference }; // Public types","/**\n * Checks if a given element has a CSS class.\n * \n * @param element the element\n * @param className the CSS class name\n */\nexport default function hasClass(element, className) {\n  if (element.classList) return !!className && element.classList.contains(className);\n  return (\" \" + (element.className.baseVal || element.className) + \" \").indexOf(\" \" + className + \" \") !== -1;\n}","import hasClass from './hasClass';\n/**\n * Adds a CSS class to a given element.\n * \n * @param element the element\n * @param className the CSS class name\n */\n\nexport default function addClass(element, className) {\n  if (element.classList) element.classList.add(className);else if (!hasClass(element, className)) if (typeof element.className === 'string') element.className = element.className + \" \" + className;else element.setAttribute('class', (element.className && element.className.baseVal || '') + \" \" + className);\n}","function replaceClassName(origClass, classToRemove) {\n  return origClass.replace(new RegExp(\"(^|\\\\s)\" + classToRemove + \"(?:\\\\s|$)\", 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n}\n/**\n * Removes a CSS class from a given element.\n * \n * @param element the element\n * @param className the CSS class name\n */\n\n\nexport default function removeClass(element, className) {\n  if (element.classList) {\n    element.classList.remove(className);\n  } else if (typeof element.className === 'string') {\n    element.className = replaceClassName(element.className, className);\n  } else {\n    element.setAttribute('class', replaceClassName(element.className && element.className.baseVal || '', className));\n  }\n}","export default {\n  disabled: false\n};","import PropTypes from 'prop-types';\nexport var timeoutsShape = process.env.NODE_ENV !== 'production' ? PropTypes.oneOfType([PropTypes.number, PropTypes.shape({\n  enter: PropTypes.number,\n  exit: PropTypes.number,\n  appear: PropTypes.number\n}).isRequired]) : null;\nexport var classNamesShape = process.env.NODE_ENV !== 'production' ? PropTypes.oneOfType([PropTypes.string, PropTypes.shape({\n  enter: PropTypes.string,\n  exit: PropTypes.string,\n  active: PropTypes.string\n}), PropTypes.shape({\n  enter: PropTypes.string,\n  enterDone: PropTypes.string,\n  enterActive: PropTypes.string,\n  exit: PropTypes.string,\n  exitDone: PropTypes.string,\n  exitActive: PropTypes.string\n})]) : null;","import React from 'react';\nexport default React.createContext(null);","export var forceReflow = function forceReflow(node) {\n  return node.scrollTop;\n};","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport config from './config';\nimport { timeoutsShape } from './utils/PropTypes';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { forceReflow } from './utils/reflow';\nexport var UNMOUNTED = 'unmounted';\nexport var EXITED = 'exited';\nexport var ENTERING = 'entering';\nexport var ENTERED = 'entered';\nexport var EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n *   transition: `opacity ${duration}ms ease-in-out`,\n *   opacity: 0,\n * }\n *\n * const transitionStyles = {\n *   entering: { opacity: 1 },\n *   entered:  { opacity: 1 },\n *   exiting:  { opacity: 0 },\n *   exited:  { opacity: 0 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n *   <Transition in={inProp} timeout={duration}>\n *     {state => (\n *       <div style={{\n *         ...defaultStyle,\n *         ...transitionStyles[state]\n *       }}>\n *         I'm a fade Transition!\n *       </div>\n *     )}\n *   </Transition>\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n *  - `'entering'`\n *  - `'entered'`\n *  - `'exiting'`\n *  - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n *   const [inProp, setInProp] = useState(false);\n *   return (\n *     <div>\n *       <Transition in={inProp} timeout={500}>\n *         {state => (\n *           // ...\n *         )}\n *       </Transition>\n *       <button onClick={() => setInProp(true)}>\n *         Click to Enter\n *       </button>\n *     </div>\n *   );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nvar Transition = /*#__PURE__*/function (_React$Component) {\n  _inheritsLoose(Transition, _React$Component);\n\n  function Transition(props, context) {\n    var _this;\n\n    _this = _React$Component.call(this, props, context) || this;\n    var parentGroup = context; // In the context of a TransitionGroup all enters are really appears\n\n    var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n    var initialStatus;\n    _this.appearStatus = null;\n\n    if (props.in) {\n      if (appear) {\n        initialStatus = EXITED;\n        _this.appearStatus = ENTERING;\n      } else {\n        initialStatus = ENTERED;\n      }\n    } else {\n      if (props.unmountOnExit || props.mountOnEnter) {\n        initialStatus = UNMOUNTED;\n      } else {\n        initialStatus = EXITED;\n      }\n    }\n\n    _this.state = {\n      status: initialStatus\n    };\n    _this.nextCallback = null;\n    return _this;\n  }\n\n  Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n    var nextIn = _ref.in;\n\n    if (nextIn && prevState.status === UNMOUNTED) {\n      return {\n        status: EXITED\n      };\n    }\n\n    return null;\n  } // getSnapshotBeforeUpdate(prevProps) {\n  //   let nextStatus = null\n  //   if (prevProps !== this.props) {\n  //     const { status } = this.state\n  //     if (this.props.in) {\n  //       if (status !== ENTERING && status !== ENTERED) {\n  //         nextStatus = ENTERING\n  //       }\n  //     } else {\n  //       if (status === ENTERING || status === ENTERED) {\n  //         nextStatus = EXITING\n  //       }\n  //     }\n  //   }\n  //   return { nextStatus }\n  // }\n  ;\n\n  var _proto = Transition.prototype;\n\n  _proto.componentDidMount = function componentDidMount() {\n    this.updateStatus(true, this.appearStatus);\n  };\n\n  _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n    var nextStatus = null;\n\n    if (prevProps !== this.props) {\n      var status = this.state.status;\n\n      if (this.props.in) {\n        if (status !== ENTERING && status !== ENTERED) {\n          nextStatus = ENTERING;\n        }\n      } else {\n        if (status === ENTERING || status === ENTERED) {\n          nextStatus = EXITING;\n        }\n      }\n    }\n\n    this.updateStatus(false, nextStatus);\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    this.cancelNextCallback();\n  };\n\n  _proto.getTimeouts = function getTimeouts() {\n    var timeout = this.props.timeout;\n    var exit, enter, appear;\n    exit = enter = appear = timeout;\n\n    if (timeout != null && typeof timeout !== 'number') {\n      exit = timeout.exit;\n      enter = timeout.enter; // TODO: remove fallback for next major\n\n      appear = timeout.appear !== undefined ? timeout.appear : enter;\n    }\n\n    return {\n      exit: exit,\n      enter: enter,\n      appear: appear\n    };\n  };\n\n  _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n    if (mounting === void 0) {\n      mounting = false;\n    }\n\n    if (nextStatus !== null) {\n      // nextStatus will always be ENTERING or EXITING.\n      this.cancelNextCallback();\n\n      if (nextStatus === ENTERING) {\n        if (this.props.unmountOnExit || this.props.mountOnEnter) {\n          var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this); // https://github.com/reactjs/react-transition-group/pull/749\n          // With unmountOnExit or mountOnEnter, the enter animation should happen at the transition between `exited` and `entering`.\n          // To make the animation happen,  we have to separate each rendering and avoid being processed as batched.\n\n          if (node) forceReflow(node);\n        }\n\n        this.performEnter(mounting);\n      } else {\n        this.performExit();\n      }\n    } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n      this.setState({\n        status: UNMOUNTED\n      });\n    }\n  };\n\n  _proto.performEnter = function performEnter(mounting) {\n    var _this2 = this;\n\n    var enter = this.props.enter;\n    var appearing = this.context ? this.context.isMounting : mounting;\n\n    var _ref2 = this.props.nodeRef ? [appearing] : [ReactDOM.findDOMNode(this), appearing],\n        maybeNode = _ref2[0],\n        maybeAppearing = _ref2[1];\n\n    var timeouts = this.getTimeouts();\n    var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n    // if we are mounting and running this it means appear _must_ be set\n\n    if (!mounting && !enter || config.disabled) {\n      this.safeSetState({\n        status: ENTERED\n      }, function () {\n        _this2.props.onEntered(maybeNode);\n      });\n      return;\n    }\n\n    this.props.onEnter(maybeNode, maybeAppearing);\n    this.safeSetState({\n      status: ENTERING\n    }, function () {\n      _this2.props.onEntering(maybeNode, maybeAppearing);\n\n      _this2.onTransitionEnd(enterTimeout, function () {\n        _this2.safeSetState({\n          status: ENTERED\n        }, function () {\n          _this2.props.onEntered(maybeNode, maybeAppearing);\n        });\n      });\n    });\n  };\n\n  _proto.performExit = function performExit() {\n    var _this3 = this;\n\n    var exit = this.props.exit;\n    var timeouts = this.getTimeouts();\n    var maybeNode = this.props.nodeRef ? undefined : ReactDOM.findDOMNode(this); // no exit animation skip right to EXITED\n\n    if (!exit || config.disabled) {\n      this.safeSetState({\n        status: EXITED\n      }, function () {\n        _this3.props.onExited(maybeNode);\n      });\n      return;\n    }\n\n    this.props.onExit(maybeNode);\n    this.safeSetState({\n      status: EXITING\n    }, function () {\n      _this3.props.onExiting(maybeNode);\n\n      _this3.onTransitionEnd(timeouts.exit, function () {\n        _this3.safeSetState({\n          status: EXITED\n        }, function () {\n          _this3.props.onExited(maybeNode);\n        });\n      });\n    });\n  };\n\n  _proto.cancelNextCallback = function cancelNextCallback() {\n    if (this.nextCallback !== null) {\n      this.nextCallback.cancel();\n      this.nextCallback = null;\n    }\n  };\n\n  _proto.safeSetState = function safeSetState(nextState, callback) {\n    // This shouldn't be necessary, but there are weird race conditions with\n    // setState callbacks and unmounting in testing, so always make sure that\n    // we can cancel any pending setState callbacks after we unmount.\n    callback = this.setNextCallback(callback);\n    this.setState(nextState, callback);\n  };\n\n  _proto.setNextCallback = function setNextCallback(callback) {\n    var _this4 = this;\n\n    var active = true;\n\n    this.nextCallback = function (event) {\n      if (active) {\n        active = false;\n        _this4.nextCallback = null;\n        callback(event);\n      }\n    };\n\n    this.nextCallback.cancel = function () {\n      active = false;\n    };\n\n    return this.nextCallback;\n  };\n\n  _proto.onTransitionEnd = function onTransitionEnd(timeout, handler) {\n    this.setNextCallback(handler);\n    var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this);\n    var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n    if (!node || doesNotHaveTimeoutOrListener) {\n      setTimeout(this.nextCallback, 0);\n      return;\n    }\n\n    if (this.props.addEndListener) {\n      var _ref3 = this.props.nodeRef ? [this.nextCallback] : [node, this.nextCallback],\n          maybeNode = _ref3[0],\n          maybeNextCallback = _ref3[1];\n\n      this.props.addEndListener(maybeNode, maybeNextCallback);\n    }\n\n    if (timeout != null) {\n      setTimeout(this.nextCallback, timeout);\n    }\n  };\n\n  _proto.render = function render() {\n    var status = this.state.status;\n\n    if (status === UNMOUNTED) {\n      return null;\n    }\n\n    var _this$props = this.props,\n        children = _this$props.children,\n        _in = _this$props.in,\n        _mountOnEnter = _this$props.mountOnEnter,\n        _unmountOnExit = _this$props.unmountOnExit,\n        _appear = _this$props.appear,\n        _enter = _this$props.enter,\n        _exit = _this$props.exit,\n        _timeout = _this$props.timeout,\n        _addEndListener = _this$props.addEndListener,\n        _onEnter = _this$props.onEnter,\n        _onEntering = _this$props.onEntering,\n        _onEntered = _this$props.onEntered,\n        _onExit = _this$props.onExit,\n        _onExiting = _this$props.onExiting,\n        _onExited = _this$props.onExited,\n        _nodeRef = _this$props.nodeRef,\n        childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\", \"mountOnEnter\", \"unmountOnExit\", \"appear\", \"enter\", \"exit\", \"timeout\", \"addEndListener\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"nodeRef\"]);\n\n    return (\n      /*#__PURE__*/\n      // allows for nested Transitions\n      React.createElement(TransitionGroupContext.Provider, {\n        value: null\n      }, typeof children === 'function' ? children(status, childProps) : React.cloneElement(React.Children.only(children), childProps))\n    );\n  };\n\n  return Transition;\n}(React.Component);\n\nTransition.contextType = TransitionGroupContext;\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n  /**\n   * A React reference to DOM element that need to transition:\n   * https://stackoverflow.com/a/51127130/4671932\n   *\n   *   - When `nodeRef` prop is used, `node` is not passed to callback functions\n   *      (e.g. `onEnter`) because user already has direct access to the node.\n   *   - When changing `key` prop of `Transition` in a `TransitionGroup` a new\n   *     `nodeRef` need to be provided to `Transition` with changed `key` prop\n   *     (see\n   *     [test/CSSTransition-test.js](https://github.com/reactjs/react-transition-group/blob/13435f897b3ab71f6e19d724f145596f5910581c/test/CSSTransition-test.js#L362-L437)).\n   */\n  nodeRef: PropTypes.shape({\n    current: typeof Element === 'undefined' ? PropTypes.any : function (propValue, key, componentName, location, propFullName, secret) {\n      var value = propValue[key];\n      return PropTypes.instanceOf(value && 'ownerDocument' in value ? value.ownerDocument.defaultView.Element : Element)(propValue, key, componentName, location, propFullName, secret);\n    }\n  }),\n\n  /**\n   * A `function` child can be used instead of a React element. This function is\n   * called with the current transition status (`'entering'`, `'entered'`,\n   * `'exiting'`, `'exited'`), which can be used to apply context\n   * specific props to a component.\n   *\n   * ```jsx\n   * <Transition in={this.state.in} timeout={150}>\n   *   {state => (\n   *     <MyComponent className={`fade fade-${state}`} />\n   *   )}\n   * </Transition>\n   * ```\n   */\n  children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n  /**\n   * Show the component; triggers the enter or exit states\n   */\n  in: PropTypes.bool,\n\n  /**\n   * By default the child component is mounted immediately along with\n   * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n   * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n   * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n   */\n  mountOnEnter: PropTypes.bool,\n\n  /**\n   * By default the child component stays mounted after it reaches the `'exited'` state.\n   * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n   */\n  unmountOnExit: PropTypes.bool,\n\n  /**\n   * By default the child component does not perform the enter transition when\n   * it first mounts, regardless of the value of `in`. If you want this\n   * behavior, set both `appear` and `in` to `true`.\n   *\n   * > **Note**: there are no special appear states like `appearing`/`appeared`, this prop\n   * > only adds an additional enter transition. However, in the\n   * > `<CSSTransition>` component that first enter transition does result in\n   * > additional `.appear-*` classes, that way you can choose to style it\n   * > differently.\n   */\n  appear: PropTypes.bool,\n\n  /**\n   * Enable or disable enter transitions.\n   */\n  enter: PropTypes.bool,\n\n  /**\n   * Enable or disable exit transitions.\n   */\n  exit: PropTypes.bool,\n\n  /**\n   * The duration of the transition, in milliseconds.\n   * Required unless `addEndListener` is provided.\n   *\n   * You may specify a single timeout for all transitions:\n   *\n   * ```jsx\n   * timeout={500}\n   * ```\n   *\n   * or individually:\n   *\n   * ```jsx\n   * timeout={{\n   *  appear: 500,\n   *  enter: 300,\n   *  exit: 500,\n   * }}\n   * ```\n   *\n   * - `appear` defaults to the value of `enter`\n   * - `enter` defaults to `0`\n   * - `exit` defaults to `0`\n   *\n   * @type {number | { enter?: number, exit?: number, appear?: number }}\n   */\n  timeout: function timeout(props) {\n    var pt = timeoutsShape;\n    if (!props.addEndListener) pt = pt.isRequired;\n\n    for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key - 1] = arguments[_key];\n    }\n\n    return pt.apply(void 0, [props].concat(args));\n  },\n\n  /**\n   * Add a custom transition end trigger. Called with the transitioning\n   * DOM node and a `done` callback. Allows for more fine grained transition end\n   * logic. Timeouts are still used as a fallback if provided.\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * ```jsx\n   * addEndListener={(node, done) => {\n   *   // use the css transitionend event to mark the finish of a transition\n   *   node.addEventListener('transitionend', done, false);\n   * }}\n   * ```\n   */\n  addEndListener: PropTypes.func,\n\n  /**\n   * Callback fired before the \"entering\" status is applied. An extra parameter\n   * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool) -> void\n   */\n  onEnter: PropTypes.func,\n\n  /**\n   * Callback fired after the \"entering\" status is applied. An extra parameter\n   * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool)\n   */\n  onEntering: PropTypes.func,\n\n  /**\n   * Callback fired after the \"entered\" status is applied. An extra parameter\n   * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool) -> void\n   */\n  onEntered: PropTypes.func,\n\n  /**\n   * Callback fired before the \"exiting\" status is applied.\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * @type Function(node: HtmlElement) -> void\n   */\n  onExit: PropTypes.func,\n\n  /**\n   * Callback fired after the \"exiting\" status is applied.\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * @type Function(node: HtmlElement) -> void\n   */\n  onExiting: PropTypes.func,\n\n  /**\n   * Callback fired after the \"exited\" status is applied.\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed\n   *\n   * @type Function(node: HtmlElement) -> void\n   */\n  onExited: PropTypes.func\n} : {}; // Name the function so it is clearer in the documentation\n\nfunction noop() {}\n\nTransition.defaultProps = {\n  in: false,\n  mountOnEnter: false,\n  unmountOnExit: false,\n  appear: false,\n  enter: true,\n  exit: true,\n  onEnter: noop,\n  onEntering: noop,\n  onEntered: noop,\n  onExit: noop,\n  onExiting: noop,\n  onExited: noop\n};\nTransition.UNMOUNTED = UNMOUNTED;\nTransition.EXITED = EXITED;\nTransition.ENTERING = ENTERING;\nTransition.ENTERED = ENTERED;\nTransition.EXITING = EXITING;\nexport default Transition;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport addOneClass from 'dom-helpers/addClass';\nimport removeOneClass from 'dom-helpers/removeClass';\nimport React from 'react';\nimport Transition from './Transition';\nimport { classNamesShape } from './utils/PropTypes';\nimport { forceReflow } from './utils/reflow';\n\nvar _addClass = function addClass(node, classes) {\n  return node && classes && classes.split(' ').forEach(function (c) {\n    return addOneClass(node, c);\n  });\n};\n\nvar removeClass = function removeClass(node, classes) {\n  return node && classes && classes.split(' ').forEach(function (c) {\n    return removeOneClass(node, c);\n  });\n};\n/**\n * A transition component inspired by the excellent\n * [ng-animate](https://docs.angularjs.org/api/ngAnimate) library, you should\n * use it if you're using CSS transitions or animations. It's built upon the\n * [`Transition`](https://reactcommunity.org/react-transition-group/transition)\n * component, so it inherits all of its props.\n *\n * `CSSTransition` applies a pair of class names during the `appear`, `enter`,\n * and `exit` states of the transition. The first class is applied and then a\n * second `*-active` class in order to activate the CSS transition. After the\n * transition, matching `*-done` class names are applied to persist the\n * transition state.\n *\n * ```jsx\n * function App() {\n *   const [inProp, setInProp] = useState(false);\n *   return (\n *     <div>\n *       <CSSTransition in={inProp} timeout={200} classNames=\"my-node\">\n *         <div>\n *           {\"I'll receive my-node-* classes\"}\n *         </div>\n *       </CSSTransition>\n *       <button type=\"button\" onClick={() => setInProp(true)}>\n *         Click to Enter\n *       </button>\n *     </div>\n *   );\n * }\n * ```\n *\n * When the `in` prop is set to `true`, the child component will first receive\n * the class `example-enter`, then the `example-enter-active` will be added in\n * the next tick. `CSSTransition` [forces a\n * reflow](https://github.com/reactjs/react-transition-group/blob/5007303e729a74be66a21c3e2205e4916821524b/src/CSSTransition.js#L208-L215)\n * between before adding the `example-enter-active`. This is an important trick\n * because it allows us to transition between `example-enter` and\n * `example-enter-active` even though they were added immediately one after\n * another. Most notably, this is what makes it possible for us to animate\n * _appearance_.\n *\n * ```css\n * .my-node-enter {\n *   opacity: 0;\n * }\n * .my-node-enter-active {\n *   opacity: 1;\n *   transition: opacity 200ms;\n * }\n * .my-node-exit {\n *   opacity: 1;\n * }\n * .my-node-exit-active {\n *   opacity: 0;\n *   transition: opacity 200ms;\n * }\n * ```\n *\n * `*-active` classes represent which styles you want to animate **to**, so it's\n * important to add `transition` declaration only to them, otherwise transitions\n * might not behave as intended! This might not be obvious when the transitions\n * are symmetrical, i.e. when `*-enter-active` is the same as `*-exit`, like in\n * the example above (minus `transition`), but it becomes apparent in more\n * complex transitions.\n *\n * **Note**: If you're using the\n * [`appear`](http://reactcommunity.org/react-transition-group/transition#Transition-prop-appear)\n * prop, make sure to define styles for `.appear-*` classes as well.\n */\n\n\nvar CSSTransition = /*#__PURE__*/function (_React$Component) {\n  _inheritsLoose(CSSTransition, _React$Component);\n\n  function CSSTransition() {\n    var _this;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n    _this.appliedClasses = {\n      appear: {},\n      enter: {},\n      exit: {}\n    };\n\n    _this.onEnter = function (maybeNode, maybeAppearing) {\n      var _this$resolveArgument = _this.resolveArguments(maybeNode, maybeAppearing),\n          node = _this$resolveArgument[0],\n          appearing = _this$resolveArgument[1];\n\n      _this.removeClasses(node, 'exit');\n\n      _this.addClass(node, appearing ? 'appear' : 'enter', 'base');\n\n      if (_this.props.onEnter) {\n        _this.props.onEnter(maybeNode, maybeAppearing);\n      }\n    };\n\n    _this.onEntering = function (maybeNode, maybeAppearing) {\n      var _this$resolveArgument2 = _this.resolveArguments(maybeNode, maybeAppearing),\n          node = _this$resolveArgument2[0],\n          appearing = _this$resolveArgument2[1];\n\n      var type = appearing ? 'appear' : 'enter';\n\n      _this.addClass(node, type, 'active');\n\n      if (_this.props.onEntering) {\n        _this.props.onEntering(maybeNode, maybeAppearing);\n      }\n    };\n\n    _this.onEntered = function (maybeNode, maybeAppearing) {\n      var _this$resolveArgument3 = _this.resolveArguments(maybeNode, maybeAppearing),\n          node = _this$resolveArgument3[0],\n          appearing = _this$resolveArgument3[1];\n\n      var type = appearing ? 'appear' : 'enter';\n\n      _this.removeClasses(node, type);\n\n      _this.addClass(node, type, 'done');\n\n      if (_this.props.onEntered) {\n        _this.props.onEntered(maybeNode, maybeAppearing);\n      }\n    };\n\n    _this.onExit = function (maybeNode) {\n      var _this$resolveArgument4 = _this.resolveArguments(maybeNode),\n          node = _this$resolveArgument4[0];\n\n      _this.removeClasses(node, 'appear');\n\n      _this.removeClasses(node, 'enter');\n\n      _this.addClass(node, 'exit', 'base');\n\n      if (_this.props.onExit) {\n        _this.props.onExit(maybeNode);\n      }\n    };\n\n    _this.onExiting = function (maybeNode) {\n      var _this$resolveArgument5 = _this.resolveArguments(maybeNode),\n          node = _this$resolveArgument5[0];\n\n      _this.addClass(node, 'exit', 'active');\n\n      if (_this.props.onExiting) {\n        _this.props.onExiting(maybeNode);\n      }\n    };\n\n    _this.onExited = function (maybeNode) {\n      var _this$resolveArgument6 = _this.resolveArguments(maybeNode),\n          node = _this$resolveArgument6[0];\n\n      _this.removeClasses(node, 'exit');\n\n      _this.addClass(node, 'exit', 'done');\n\n      if (_this.props.onExited) {\n        _this.props.onExited(maybeNode);\n      }\n    };\n\n    _this.resolveArguments = function (maybeNode, maybeAppearing) {\n      return _this.props.nodeRef ? [_this.props.nodeRef.current, maybeNode] // here `maybeNode` is actually `appearing`\n      : [maybeNode, maybeAppearing];\n    };\n\n    _this.getClassNames = function (type) {\n      var classNames = _this.props.classNames;\n      var isStringClassNames = typeof classNames === 'string';\n      var prefix = isStringClassNames && classNames ? classNames + \"-\" : '';\n      var baseClassName = isStringClassNames ? \"\" + prefix + type : classNames[type];\n      var activeClassName = isStringClassNames ? baseClassName + \"-active\" : classNames[type + \"Active\"];\n      var doneClassName = isStringClassNames ? baseClassName + \"-done\" : classNames[type + \"Done\"];\n      return {\n        baseClassName: baseClassName,\n        activeClassName: activeClassName,\n        doneClassName: doneClassName\n      };\n    };\n\n    return _this;\n  }\n\n  var _proto = CSSTransition.prototype;\n\n  _proto.addClass = function addClass(node, type, phase) {\n    var className = this.getClassNames(type)[phase + \"ClassName\"];\n\n    var _this$getClassNames = this.getClassNames('enter'),\n        doneClassName = _this$getClassNames.doneClassName;\n\n    if (type === 'appear' && phase === 'done' && doneClassName) {\n      className += \" \" + doneClassName;\n    } // This is to force a repaint,\n    // which is necessary in order to transition styles when adding a class name.\n\n\n    if (phase === 'active') {\n      if (node) forceReflow(node);\n    }\n\n    if (className) {\n      this.appliedClasses[type][phase] = className;\n\n      _addClass(node, className);\n    }\n  };\n\n  _proto.removeClasses = function removeClasses(node, type) {\n    var _this$appliedClasses$ = this.appliedClasses[type],\n        baseClassName = _this$appliedClasses$.base,\n        activeClassName = _this$appliedClasses$.active,\n        doneClassName = _this$appliedClasses$.done;\n    this.appliedClasses[type] = {};\n\n    if (baseClassName) {\n      removeClass(node, baseClassName);\n    }\n\n    if (activeClassName) {\n      removeClass(node, activeClassName);\n    }\n\n    if (doneClassName) {\n      removeClass(node, doneClassName);\n    }\n  };\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        _ = _this$props.classNames,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"classNames\"]);\n\n    return /*#__PURE__*/React.createElement(Transition, _extends({}, props, {\n      onEnter: this.onEnter,\n      onEntered: this.onEntered,\n      onEntering: this.onEntering,\n      onExit: this.onExit,\n      onExiting: this.onExiting,\n      onExited: this.onExited\n    }));\n  };\n\n  return CSSTransition;\n}(React.Component);\n\nCSSTransition.defaultProps = {\n  classNames: ''\n};\nCSSTransition.propTypes = process.env.NODE_ENV !== \"production\" ? _extends({}, Transition.propTypes, {\n  /**\n   * The animation classNames applied to the component as it appears, enters,\n   * exits or has finished the transition. A single name can be provided, which\n   * will be suffixed for each stage, e.g. `classNames=\"fade\"` applies:\n   *\n   * - `fade-appear`, `fade-appear-active`, `fade-appear-done`\n   * - `fade-enter`, `fade-enter-active`, `fade-enter-done`\n   * - `fade-exit`, `fade-exit-active`, `fade-exit-done`\n   *\n   * A few details to note about how these classes are applied:\n   *\n   * 1. They are _joined_ with the ones that are already defined on the child\n   *    component, so if you want to add some base styles, you can use\n   *    `className` without worrying that it will be overridden.\n   *\n   * 2. If the transition component mounts with `in={false}`, no classes are\n   *    applied yet. You might be expecting `*-exit-done`, but if you think\n   *    about it, a component cannot finish exiting if it hasn't entered yet.\n   *\n   * 2. `fade-appear-done` and `fade-enter-done` will _both_ be applied. This\n   *    allows you to define different behavior for when appearing is done and\n   *    when regular entering is done, using selectors like\n   *    `.fade-enter-done:not(.fade-appear-done)`. For example, you could apply\n   *    an epic entrance animation when element first appears in the DOM using\n   *    [Animate.css](https://daneden.github.io/animate.css/). Otherwise you can\n   *    simply use `fade-enter-done` for defining both cases.\n   *\n   * Each individual classNames can also be specified independently like:\n   *\n   * ```js\n   * classNames={{\n   *  appear: 'my-appear',\n   *  appearActive: 'my-active-appear',\n   *  appearDone: 'my-done-appear',\n   *  enter: 'my-enter',\n   *  enterActive: 'my-active-enter',\n   *  enterDone: 'my-done-enter',\n   *  exit: 'my-exit',\n   *  exitActive: 'my-active-exit',\n   *  exitDone: 'my-done-exit',\n   * }}\n   * ```\n   *\n   * If you want to set these classes using CSS Modules:\n   *\n   * ```js\n   * import styles from './styles.css';\n   * ```\n   *\n   * you might want to use camelCase in your CSS file, that way could simply\n   * spread them instead of listing them one by one:\n   *\n   * ```js\n   * classNames={{ ...styles }}\n   * ```\n   *\n   * @type {string | {\n   *  appear?: string,\n   *  appearActive?: string,\n   *  appearDone?: string,\n   *  enter?: string,\n   *  enterActive?: string,\n   *  enterDone?: string,\n   *  exit?: string,\n   *  exitActive?: string,\n   *  exitDone?: string,\n   * }}\n   */\n  classNames: classNamesShape,\n\n  /**\n   * A `<Transition>` callback fired immediately after the 'enter' or 'appear' class is\n   * applied.\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool)\n   */\n  onEnter: PropTypes.func,\n\n  /**\n   * A `<Transition>` callback fired immediately after the 'enter-active' or\n   * 'appear-active' class is applied.\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool)\n   */\n  onEntering: PropTypes.func,\n\n  /**\n   * A `<Transition>` callback fired immediately after the 'enter' or\n   * 'appear' classes are **removed** and the `done` class is added to the DOM node.\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool)\n   */\n  onEntered: PropTypes.func,\n\n  /**\n   * A `<Transition>` callback fired immediately after the 'exit' class is\n   * applied.\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed\n   *\n   * @type Function(node: HtmlElement)\n   */\n  onExit: PropTypes.func,\n\n  /**\n   * A `<Transition>` callback fired immediately after the 'exit-active' is applied.\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed\n   *\n   * @type Function(node: HtmlElement)\n   */\n  onExiting: PropTypes.func,\n\n  /**\n   * A `<Transition>` callback fired immediately after the 'exit' classes\n   * are **removed** and the `exit-done` class is added to the DOM node.\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed\n   *\n   * @type Function(node: HtmlElement)\n   */\n  onExited: PropTypes.func\n}) : {};\nexport default CSSTransition;","export { default as CSSTransition } from './CSSTransition';\nexport { default as ReplaceTransition } from './ReplaceTransition';\nexport { default as SwitchTransition } from './SwitchTransition';\nexport { default as TransitionGroup } from './TransitionGroup';\nexport { default as Transition } from './Transition';\nexport { default as config } from './config';",null,null,null,null,null,"/**\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\nmodule.exports = overArg;\n","var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n","var baseGetTag = require('./_baseGetTag'),\n    getPrototype = require('./_getPrototype'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * 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\nmodule.exports = isPlainObject;\n","var isObjectLike = require('./isObjectLike'),\n    isPlainObject = require('./isPlainObject');\n\n/**\n * Checks if `value` is likely a DOM element.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.\n * @example\n *\n * _.isElement(document.body);\n * // => true\n *\n * _.isElement('<body>');\n * // => false\n */\nfunction isElement(value) {\n  return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n}\n\nmodule.exports = isElement;\n",null,null,null,null,null,null,null,null,null,null,null,null,null,null,"export {};\n//# sourceMappingURL=Tooltip.types.js.map",null,"\n\nimport { classesRuntime, statesRuntime } from \"./../../../../stylable-esm-runtime.js\";\n\n\n\nvar _namespace_ = \"wds_1_269_0_TextComponent\";\nvar _style_ = classesRuntime.bind(null, _namespace_);\n\nexport var cssStates = statesRuntime.bind(null, _namespace_);\nexport var style = _style_;\nexport var st = _style_;\n\nexport var namespace = _namespace_;\nexport var classes = {\"root\":\"wds_1_269_0_TextComponent__root\",\"text\":\"wds_1_269_0_TextComponent__text\",\"suffix\":\"wds_1_269_0_TextComponent__suffix\",\"multilineSuffixWrapper\":\"wds_1_269_0_TextComponent__multilineSuffixWrapper\",\"multilineSuffix\":\"wds_1_269_0_TextComponent__multilineSuffix\"};\nexport var keyframes = {}; \nexport var layers = {};\nexport var containers = {};\nexport var stVars = {}; \nexport var vars = {\"maxLines\":\"--wds_1_269_0_TextComponent-maxLines\"}; \n\n\n\n\n",null,null,null,"export {};\n//# sourceMappingURL=Ellipsis.types.js.map",null,null,"\n\nimport \"../Foundation/stylable/colors.st.css.js\";\nimport \"../Foundation/stylable/typography.st.css.js\";\nimport { classesRuntime, statesRuntime } from \"./../stylable-esm-runtime.js\";\n\n\n\nvar _namespace_ = \"wds_1_269_0_Heading\";\nvar _style_ = classesRuntime.bind(null, _namespace_);\n\nexport var cssStates = statesRuntime.bind(null, _namespace_);\nexport var style = _style_;\nexport var st = _style_;\n\nexport var namespace = _namespace_;\nexport var classes = {\"root\":\"wds_1_269_0_Heading__root\",\"heading-xl\":\"wds_1_269_0_StylableTypography__heading-xl\",\"heading-l\":\"wds_1_269_0_StylableTypography__heading-l\",\"heading-m\":\"wds_1_269_0_StylableTypography__heading-m\",\"heading-s\":\"wds_1_269_0_StylableTypography__heading-s\",\"heading-t\":\"wds_1_269_0_StylableTypography__heading-t\",\"heading-xt\":\"wds_1_269_0_StylableTypography__heading-xt\"};\nexport var keyframes = {}; \nexport var layers = {};\nexport var containers = {};\nexport var stVars = {}; \nexport var vars = {\"wds-color-text-standard-primary\":\"--wds-color-text-standard-primary\",\"wds-color-text-standard-primary-light\":\"--wds-color-text-standard-primary-light\",\"wds-color-text-standard-secondary\":\"--wds-color-text-standard-secondary\"}; \n\n\n\n\n",null,null,"export {};\n//# sourceMappingURL=Heading.types.js.map",null,null,"\nimport \"../Foundation/stylable/colors.st.css.js\";\n\nimport \"../Foundation/stylable/easing.st.css.js\";\nimport { classesRuntime, statesRuntime } from \"./../stylable-esm-runtime.js\";\n\n\n\nvar _namespace_ = \"wds_1_269_0_Loader\";\nvar _style_ = classesRuntime.bind(null, _namespace_);\n\nexport var cssStates = statesRuntime.bind(null, _namespace_);\nexport var style = _style_;\nexport var st = _style_;\n\nexport var namespace = _namespace_;\nexport var classes = {\"root\":\"wds_1_269_0_Loader__root\",\"statusIndicator\":\"wds_1_269_0_Loader__statusIndicator\",\"arcsContainer\":\"wds_1_269_0_Loader__arcsContainer\",\"darkArc\":\"wds_1_269_0_Loader__darkArc\",\"lightArc\":\"wds_1_269_0_Loader__lightArc\",\"text\":\"wds_1_269_0_Loader__text\"};\nexport var keyframes = {\"rotation\":\"wds_1_269_0_Loader__rotation\",\"staggered-rotation\":\"wds_1_269_0_Loader__staggered-rotation\"}; \nexport var layers = {};\nexport var containers = {};\nexport var stVars = {}; \nexport var vars = {\"wds-loader-fill-loading\":\"--wds-loader-fill-loading\",\"wds-loader-fill-loading-with-error\":\"--wds-loader-fill-loading-with-error\",\"wds-loader-fill\":\"--wds-loader-fill\",\"wds-loader-fill-light\":\"--wds-loader-fill-light\",\"wds-loader-fill-error\":\"--wds-loader-fill-error\",\"wds-loader-fill-success\":\"--wds-loader-fill-success\",\"wds-loader-stroke-width-tiny\":\"--wds-loader-stroke-width-tiny\",\"wds-loader-stroke-width-small\":\"--wds-loader-stroke-width-small\",\"wds-loader-stroke-width-medium\":\"--wds-loader-stroke-width-medium\",\"wds-loader-stroke-width-large\":\"--wds-loader-stroke-width-large\"}; \n\n\n\n\n",null,null,null,"\n\nimport { classesRuntime, statesRuntime } from \"./../../stylable-esm-runtime.js\";\n\n\n\nvar _namespace_ = \"wds_1_269_0_Focusable\";\nvar _style_ = classesRuntime.bind(null, _namespace_);\n\nexport var cssStates = statesRuntime.bind(null, _namespace_);\nexport var style = _style_;\nexport var st = _style_;\n\nexport var namespace = _namespace_;\nexport var classes = {\"root\":\"wds_1_269_0_Focusable__root\",\"focus-box\":\"wds_1_269_0_Focusable__focus-box\",\"focus-box-error\":\"wds_1_269_0_Focusable__focus-box-error\"};\nexport var keyframes = {}; \nexport var layers = {};\nexport var containers = {};\nexport var stVars = {}; \nexport var vars = {}; \n\n\n\n\n","\nimport \"../../common/Focusable/Focusable.st.css.js\";\nimport { classesRuntime, statesRuntime } from \"./../../stylable-esm-runtime.js\";\n\n\n\nvar _namespace_ = \"wds_1_269_0_ButtonCore\";\nvar _style_ = classesRuntime.bind(null, _namespace_);\n\nexport var cssStates = statesRuntime.bind(null, _namespace_);\nexport var style = _style_;\nexport var st = _style_;\n\nexport var namespace = _namespace_;\nexport var classes = {\"root\":\"wds_1_269_0_ButtonCore__root\",\"content\":\"wds_1_269_0_ButtonCore__content\",\"prefix\":\"wds_1_269_0_ButtonCore__prefix\",\"suffix\":\"wds_1_269_0_ButtonCore__suffix\"};\nexport var keyframes = {}; \nexport var layers = {};\nexport var containers = {};\nexport var stVars = {}; \nexport var vars = {}; \n\n\n\n\n","'use strict';\n\nexports.__esModule = true;\nexports.default = hoistNonReactMethods;\nvar REACT_PROTOTYPE = {\n  autobind: true,\n  childContextTypes: true,\n  componentDidMount: true,\n  componentDidUpdate: true,\n  componentWillMount: true,\n  componentWillReceiveProps: true,\n  componentWillUnmount: true,\n  componentWillUpdate: true,\n  contextTypes: true,\n  displayName: true,\n  forceUpdate: true,\n  getChildContext: true,\n  getDefaultProps: true,\n  getDOMNode: true,\n  getInitialState: true,\n  isMounted: true,\n  mixins: true,\n  propTypes: true,\n  render: true,\n  replaceProps: true,\n  replaceState: true,\n  setProps: true,\n  setState: true,\n  shouldComponentUpdate: true,\n  statics: true,\n  updateComponent: true\n};\n\nvar REACT_STATICS = {\n  childContextTypes: true,\n  contextTypes: true,\n  defaultProps: true,\n  displayName: true,\n  getDefaultProps: true,\n  mixins: true,\n  propTypes: true,\n  type: true\n};\n\nvar KNOWN_STATICS = {\n  name: true,\n  length: true,\n  prototype: true,\n  caller: true,\n  arguments: true,\n  arity: true\n};\n\nvar defaultConfig = {\n  delegateTo: function delegateTo(w) {\n    return w.refs.child;\n  },\n  hoistStatics: true\n};\n\nfunction hoistNonReactMethods(targetComponent, sourceComponent, config) {\n  var targetComponentName = targetComponent.displayName || targetComponent.name || 'Wrapper';\n  var sourceComponentName = sourceComponent.displayName || sourceComponent.name || 'WrappedComponent';\n  var hoistStatics = config && typeof config.hoistStatics !== 'undefined' ? config.hoistStatics : defaultConfig.hoistStatics;\n  var delegateTo = config && typeof config.delegateTo !== 'undefined' ? config.delegateTo : defaultConfig.delegateTo;\n  // backwards compatible where config option is delegateTo function\n  if (typeof config === 'function') delegateTo = config;\n\n  if (hoistStatics) {\n    var statics = Object.getOwnPropertyNames(sourceComponent).filter(function (k) {\n      return !REACT_STATICS[k] && !KNOWN_STATICS[k];\n    });\n\n    statics.forEach(function (methodName) {\n      if (targetComponent[methodName]) console.warn('Static method ' + methodName + ' already exists in wrapper component ' + targetComponentName + ', and won\\'t be hoisted. Consider changing the name on ' + sourceComponentName + '.');\n      targetComponent[methodName] = sourceComponent[methodName];\n    });\n  }\n\n  var methods = Object.getOwnPropertyNames(sourceComponent.prototype).filter(function (k) {\n    return !REACT_PROTOTYPE[k];\n  });\n\n  methods.forEach(function (methodName) {\n    if (targetComponent.prototype[methodName]) {\n      console.warn('Method ' + methodName + ' already exists in wrapper component ' + targetComponentName + ', and won\\'t be hoisted. Consider changing the name on ' + sourceComponentName + '.');\n      return;\n    }\n\n    targetComponent.prototype[methodName] = function () {\n      var _sourceComponent$prot;\n\n      for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n\n      return (_sourceComponent$prot = sourceComponent.prototype[methodName]).call.apply(_sourceComponent$prot, [delegateTo.call(this, this)].concat(args));\n    };\n  });\n\n  return targetComponent;\n}\n//# sourceMappingURL=index.js.map",null,null,null,null,null,null,null,"\nimport \"../Foundation/stylable/default-scroll-bar.st.css.js\";\nimport { classesRuntime, statesRuntime } from \"./../stylable-esm-runtime.js\";\n\n\n\nvar _namespace_ = \"wds_1_269_0_Box\";\nvar _style_ = classesRuntime.bind(null, _namespace_);\n\nexport var cssStates = statesRuntime.bind(null, _namespace_);\nexport var style = _style_;\nexport var st = _style_;\n\nexport var namespace = _namespace_;\nexport var classes = {\"root\":\"wds_1_269_0_Box__root\",\"defaultScrollBar\":\"wds_1_269_0_defaultscrollbar__defaultScrollBar\"};\nexport var keyframes = {}; \nexport var layers = {};\nexport var containers = {};\nexport var stVars = {}; \nexport var vars = {\"gap\":\"--wds_1_269_0_Box-gap\"}; \n\n\n\n\n","\n\nimport { classesRuntime, statesRuntime } from \"./../../stylable-esm-runtime.js\";\n\n\n\nvar _namespace_ = \"wds_1_269_0_spacing\";\nvar _style_ = classesRuntime.bind(null, _namespace_);\n\nexport var cssStates = statesRuntime.bind(null, _namespace_);\nexport var style = _style_;\nexport var st = _style_;\n\nexport var namespace = _namespace_;\nexport var classes = {\"root\":\"wds_1_269_0_spacing__root\"};\nexport var keyframes = {}; \nexport var layers = {};\nexport var containers = {};\nexport var stVars = {\"spacing01\":\"1px\",\"spacing02\":\"2px\",\"spacing03\":\"3px\",\"spacing06\":\"6px\",\"spacing12\":\"12px\",\"spacing18\":\"18px\",\"spacing24\":\"24px\",\"spacing30\":\"30px\",\"spacing36\":\"36px\",\"spacing42\":\"42px\",\"spacing48\":\"48px\",\"spacing78\":\"78px\",\"spacing90\":\"90px\",\"DefaultSpacing\":\"6px\",\"Spacing\":\"var(--wds-space-100, 6px)\",\"SP1\":\"calc(var(--wds-space-100, 6px) * 1)\",\"SP2\":\"calc(var(--wds-space-100, 6px) * 2)\",\"SP3\":\"calc(var(--wds-space-100, 6px) * 3)\",\"SP4\":\"calc(var(--wds-space-100, 6px) * 4)\",\"SP5\":\"calc(var(--wds-space-100, 6px) * 5)\",\"SP6\":\"calc(var(--wds-space-100, 6px) * 6)\",\"SP7\":\"calc(var(--wds-space-100, 6px) * 7)\",\"SP8\":\"calc(var(--wds-space-100, 6px) * 8)\",\"SP9\":\"calc(var(--wds-space-100, 6px) * 9)\",\"SP10\":\"calc(var(--wds-space-100, 6px) * 10)\"}; \nexport var vars = {\"wds-space-100\":\"--wds-space-100\"}; \n\n\n\n\n",null,null,null,null,"export {};\n//# sourceMappingURL=Box.types.js.map",null,"function _check_private_redeclaration(obj, privateCollection) {\n    if (privateCollection.has(obj)) {\n        throw new TypeError(\"Cannot initialize the same private elements twice on an object\");\n    }\n}\nexport { _check_private_redeclaration as _ };\n","import { _ as _check_private_redeclaration } from \"./_check_private_redeclaration.js\";\n\nfunction _class_private_field_init(obj, privateMap, value) {\n    _check_private_redeclaration(obj, privateMap);\n    privateMap.set(obj, value);\n}\nexport { _class_private_field_init as _ };\n","// NOTE: separate `:not()` selectors has broader browser support than the newer\n//  `:not([inert], [inert] *)` (Feb 2023)\n// CAREFUL: JSDom does not support `:not([inert] *)` as a selector; using it causes\n//  the entire query to fail, resulting in no nodes found, which will break a lot\n//  of things... so we have to rely on JS to identify nodes inside an inert container\nconst candidateSelectors = [\n  'input:not([inert])',\n  'select:not([inert])',\n  'textarea:not([inert])',\n  'a[href]:not([inert])',\n  'button:not([inert])',\n  '[tabindex]:not(slot):not([inert])',\n  'audio[controls]:not([inert])',\n  'video[controls]:not([inert])',\n  '[contenteditable]:not([contenteditable=\"false\"]):not([inert])',\n  'details>summary:first-of-type:not([inert])',\n  'details:not([inert])',\n];\nconst candidateSelector = /* #__PURE__ */ candidateSelectors.join(',');\n\nconst NoElement = typeof Element === 'undefined';\n\nconst matches = NoElement\n  ? function () {}\n  : Element.prototype.matches ||\n    Element.prototype.msMatchesSelector ||\n    Element.prototype.webkitMatchesSelector;\n\nconst getRootNode =\n  !NoElement && Element.prototype.getRootNode\n    ? (element) => element?.getRootNode?.()\n    : (element) => element?.ownerDocument;\n\n/**\n * Determines if a node is inert or in an inert ancestor.\n * @param {Element} [node]\n * @param {boolean} [lookUp] If true and `node` is not inert, looks up at ancestors to\n *  see if any of them are inert. If false, only `node` itself is considered.\n * @returns {boolean} True if inert itself or by way of being in an inert ancestor.\n *  False if `node` is falsy.\n */\nconst isInert = function (node, lookUp = true) {\n  // CAREFUL: JSDom does not support inert at all, so we can't use the `HTMLElement.inert`\n  //  JS API property; we have to check the attribute, which can either be empty or 'true';\n  //  if it's `null` (not specified) or 'false', it's an active element\n  const inertAtt = node?.getAttribute?.('inert');\n  const inert = inertAtt === '' || inertAtt === 'true';\n\n  // NOTE: this could also be handled with `node.matches('[inert], :is([inert] *)')`\n  //  if it weren't for `matches()` not being a function on shadow roots; the following\n  //  code works for any kind of node\n  // CAREFUL: JSDom does not appear to support certain selectors like `:not([inert] *)`\n  //  so it likely would not support `:is([inert] *)` either...\n  const result = inert || (lookUp && node && isInert(node.parentNode)); // recursive\n\n  return result;\n};\n\n/**\n * Determines if a node's content is editable.\n * @param {Element} [node]\n * @returns True if it's content-editable; false if it's not or `node` is falsy.\n */\nconst isContentEditable = function (node) {\n  // CAREFUL: JSDom does not support the `HTMLElement.isContentEditable` API so we have\n  //  to use the attribute directly to check for this, which can either be empty or 'true';\n  //  if it's `null` (not specified) or 'false', it's a non-editable element\n  const attValue = node?.getAttribute?.('contenteditable');\n  return attValue === '' || attValue === 'true';\n};\n\n/**\n * @param {Element} el container to check in\n * @param {boolean} includeContainer add container to check\n * @param {(node: Element) => boolean} filter filter candidates\n * @returns {Element[]}\n */\nconst getCandidates = function (el, includeContainer, filter) {\n  // even if `includeContainer=false`, we still have to check it for inertness because\n  //  if it's inert, all its children are inert\n  if (isInert(el)) {\n    return [];\n  }\n\n  let candidates = Array.prototype.slice.apply(\n    el.querySelectorAll(candidateSelector)\n  );\n  if (includeContainer && matches.call(el, candidateSelector)) {\n    candidates.unshift(el);\n  }\n  candidates = candidates.filter(filter);\n  return candidates;\n};\n\n/**\n * @callback GetShadowRoot\n * @param {Element} element to check for shadow root\n * @returns {ShadowRoot|boolean} ShadowRoot if available or boolean indicating if a shadowRoot is attached but not available.\n */\n\n/**\n * @callback ShadowRootFilter\n * @param {Element} shadowHostNode the element which contains shadow content\n * @returns {boolean} true if a shadow root could potentially contain valid candidates.\n */\n\n/**\n * @typedef {Object} CandidateScope\n * @property {Element} scopeParent contains inner candidates\n * @property {Element[]} candidates list of candidates found in the scope parent\n */\n\n/**\n * @typedef {Object} IterativeOptions\n * @property {GetShadowRoot|boolean} getShadowRoot true if shadow support is enabled; falsy if not;\n *  if a function, implies shadow support is enabled and either returns the shadow root of an element\n *  or a boolean stating if it has an undisclosed shadow root\n * @property {(node: Element) => boolean} filter filter candidates\n * @property {boolean} flatten if true then result will flatten any CandidateScope into the returned list\n * @property {ShadowRootFilter} shadowRootFilter filter shadow roots;\n */\n\n/**\n * @param {Element[]} elements list of element containers to match candidates from\n * @param {boolean} includeContainer add container list to check\n * @param {IterativeOptions} options\n * @returns {Array.<Element|CandidateScope>}\n */\nconst getCandidatesIteratively = function (\n  elements,\n  includeContainer,\n  options\n) {\n  const candidates = [];\n  const elementsToCheck = Array.from(elements);\n  while (elementsToCheck.length) {\n    const element = elementsToCheck.shift();\n    if (isInert(element, false)) {\n      // no need to look up since we're drilling down\n      // anything inside this container will also be inert\n      continue;\n    }\n\n    if (element.tagName === 'SLOT') {\n      // add shadow dom slot scope (slot itself cannot be focusable)\n      const assigned = element.assignedElements();\n      const content = assigned.length ? assigned : element.children;\n      const nestedCandidates = getCandidatesIteratively(content, true, options);\n      if (options.flatten) {\n        candidates.push(...nestedCandidates);\n      } else {\n        candidates.push({\n          scopeParent: element,\n          candidates: nestedCandidates,\n        });\n      }\n    } else {\n      // check candidate element\n      const validCandidate = matches.call(element, candidateSelector);\n      if (\n        validCandidate &&\n        options.filter(element) &&\n        (includeContainer || !elements.includes(element))\n      ) {\n        candidates.push(element);\n      }\n\n      // iterate over shadow content if possible\n      const shadowRoot =\n        element.shadowRoot ||\n        // check for an undisclosed shadow\n        (typeof options.getShadowRoot === 'function' &&\n          options.getShadowRoot(element));\n\n      // no inert look up because we're already drilling down and checking for inertness\n      //  on the way down, so all containers to this root node should have already been\n      //  vetted as non-inert\n      const validShadowRoot =\n        !isInert(shadowRoot, false) &&\n        (!options.shadowRootFilter || options.shadowRootFilter(element));\n\n      if (shadowRoot && validShadowRoot) {\n        // add shadow dom scope IIF a shadow root node was given; otherwise, an undisclosed\n        //  shadow exists, so look at light dom children as fallback BUT create a scope for any\n        //  child candidates found because they're likely slotted elements (elements that are\n        //  children of the web component element (which has the shadow), in the light dom, but\n        //  slotted somewhere _inside_ the undisclosed shadow) -- the scope is created below,\n        //  _after_ we return from this recursive call\n        const nestedCandidates = getCandidatesIteratively(\n          shadowRoot === true ? element.children : shadowRoot.children,\n          true,\n          options\n        );\n\n        if (options.flatten) {\n          candidates.push(...nestedCandidates);\n        } else {\n          candidates.push({\n            scopeParent: element,\n            candidates: nestedCandidates,\n          });\n        }\n      } else {\n        // there's not shadow so just dig into the element's (light dom) children\n        //  __without__ giving the element special scope treatment\n        elementsToCheck.unshift(...element.children);\n      }\n    }\n  }\n  return candidates;\n};\n\n/**\n * @private\n * Determines if the node has an explicitly specified `tabindex` attribute.\n * @param {HTMLElement} node\n * @returns {boolean} True if so; false if not.\n */\nconst hasTabIndex = function (node) {\n  return !isNaN(parseInt(node.getAttribute('tabindex'), 10));\n};\n\n/**\n * Determine the tab index of a given node.\n * @param {HTMLElement} node\n * @returns {number} Tab order (negative, 0, or positive number).\n * @throws {Error} If `node` is falsy.\n */\nconst getTabIndex = function (node) {\n  if (!node) {\n    throw new Error('No node provided');\n  }\n\n  if (node.tabIndex < 0) {\n    // in Chrome, <details/>, <audio controls/> and <video controls/> elements get a default\n    // `tabIndex` of -1 when the 'tabindex' attribute isn't specified in the DOM,\n    // yet they are still part of the regular tab order; in FF, they get a default\n    // `tabIndex` of 0; since Chrome still puts those elements in the regular tab\n    // order, consider their tab index to be 0.\n    // Also browsers do not return `tabIndex` correctly for contentEditable nodes;\n    // so if they don't have a tabindex attribute specifically set, assume it's 0.\n    if (\n      (/^(AUDIO|VIDEO|DETAILS)$/.test(node.tagName) ||\n        isContentEditable(node)) &&\n      !hasTabIndex(node)\n    ) {\n      return 0;\n    }\n  }\n\n  return node.tabIndex;\n};\n\n/**\n * Determine the tab index of a given node __for sort order purposes__.\n * @param {HTMLElement} node\n * @param {boolean} [isScope] True for a custom element with shadow root or slot that, by default,\n *  has tabIndex -1, but needs to be sorted by document order in order for its content to be\n *  inserted into the correct sort position.\n * @returns {number} Tab order (negative, 0, or positive number).\n */\nconst getSortOrderTabIndex = function (node, isScope) {\n  const tabIndex = getTabIndex(node);\n\n  if (tabIndex < 0 && isScope && !hasTabIndex(node)) {\n    return 0;\n  }\n\n  return tabIndex;\n};\n\nconst sortOrderedTabbables = function (a, b) {\n  return a.tabIndex === b.tabIndex\n    ? a.documentOrder - b.documentOrder\n    : a.tabIndex - b.tabIndex;\n};\n\nconst isInput = function (node) {\n  return node.tagName === 'INPUT';\n};\n\nconst isHiddenInput = function (node) {\n  return isInput(node) && node.type === 'hidden';\n};\n\nconst isDetailsWithSummary = function (node) {\n  const r =\n    node.tagName === 'DETAILS' &&\n    Array.prototype.slice\n      .apply(node.children)\n      .some((child) => child.tagName === 'SUMMARY');\n  return r;\n};\n\nconst getCheckedRadio = function (nodes, form) {\n  for (let i = 0; i < nodes.length; i++) {\n    if (nodes[i].checked && nodes[i].form === form) {\n      return nodes[i];\n    }\n  }\n};\n\nconst isTabbableRadio = function (node) {\n  if (!node.name) {\n    return true;\n  }\n  const radioScope = node.form || getRootNode(node);\n  const queryRadios = function (name) {\n    return radioScope.querySelectorAll(\n      'input[type=\"radio\"][name=\"' + name + '\"]'\n    );\n  };\n\n  let radioSet;\n  if (\n    typeof window !== 'undefined' &&\n    typeof window.CSS !== 'undefined' &&\n    typeof window.CSS.escape === 'function'\n  ) {\n    radioSet = queryRadios(window.CSS.escape(node.name));\n  } else {\n    try {\n      radioSet = queryRadios(node.name);\n    } catch (err) {\n      // eslint-disable-next-line no-console\n      console.error(\n        'Looks like you have a radio button with a name attribute containing invalid CSS selector characters and need the CSS.escape polyfill: %s',\n        err.message\n      );\n      return false;\n    }\n  }\n\n  const checked = getCheckedRadio(radioSet, node.form);\n  return !checked || checked === node;\n};\n\nconst isRadio = function (node) {\n  return isInput(node) && node.type === 'radio';\n};\n\nconst isNonTabbableRadio = function (node) {\n  return isRadio(node) && !isTabbableRadio(node);\n};\n\n// determines if a node is ultimately attached to the window's document\nconst isNodeAttached = function (node) {\n  // The root node is the shadow root if the node is in a shadow DOM; some document otherwise\n  //  (but NOT _the_ document; see second 'If' comment below for more).\n  // If rootNode is shadow root, it'll have a host, which is the element to which the shadow\n  //  is attached, and the one we need to check if it's in the document or not (because the\n  //  shadow, and all nodes it contains, is never considered in the document since shadows\n  //  behave like self-contained DOMs; but if the shadow's HOST, which is part of the document,\n  //  is hidden, or is not in the document itself but is detached, it will affect the shadow's\n  //  visibility, including all the nodes it contains). The host could be any normal node,\n  //  or a custom element (i.e. web component). Either way, that's the one that is considered\n  //  part of the document, not the shadow root, nor any of its children (i.e. the node being\n  //  tested).\n  // To further complicate things, we have to look all the way up until we find a shadow HOST\n  //  that is attached (or find none) because the node might be in nested shadows...\n  // If rootNode is not a shadow root, it won't have a host, and so rootNode should be the\n  //  document (per the docs) and while it's a Document-type object, that document does not\n  //  appear to be the same as the node's `ownerDocument` for some reason, so it's safer\n  //  to ignore the rootNode at this point, and use `node.ownerDocument`. Otherwise,\n  //  using `rootNode.contains(node)` will _always_ be true we'll get false-positives when\n  //  node is actually detached.\n  // NOTE: If `nodeRootHost` or `node` happens to be the `document` itself (which is possible\n  //  if a tabbable/focusable node was quickly added to the DOM, focused, and then removed\n  //  from the DOM as in https://github.com/focus-trap/focus-trap-react/issues/905), then\n  //  `ownerDocument` will be `null`, hence the optional chaining on it.\n  let nodeRoot = node && getRootNode(node);\n  let nodeRootHost = nodeRoot?.host;\n\n  // in some cases, a detached node will return itself as the root instead of a document or\n  //  shadow root object, in which case, we shouldn't try to look further up the host chain\n  let attached = false;\n  if (nodeRoot && nodeRoot !== node) {\n    attached = !!(\n      nodeRootHost?.ownerDocument?.contains(nodeRootHost) ||\n      node?.ownerDocument?.contains(node)\n    );\n\n    while (!attached && nodeRootHost) {\n      // since it's not attached and we have a root host, the node MUST be in a nested shadow DOM,\n      //  which means we need to get the host's host and check if that parent host is contained\n      //  in (i.e. attached to) the document\n      nodeRoot = getRootNode(nodeRootHost);\n      nodeRootHost = nodeRoot?.host;\n      attached = !!nodeRootHost?.ownerDocument?.contains(nodeRootHost);\n    }\n  }\n\n  return attached;\n};\n\nconst isZeroArea = function (node) {\n  const { width, height } = node.getBoundingClientRect();\n  return width === 0 && height === 0;\n};\nconst isHidden = function (node, { displayCheck, getShadowRoot }) {\n  // NOTE: visibility will be `undefined` if node is detached from the document\n  //  (see notes about this further down), which means we will consider it visible\n  //  (this is legacy behavior from a very long way back)\n  // NOTE: we check this regardless of `displayCheck=\"none\"` because this is a\n  //  _visibility_ check, not a _display_ check\n  if (getComputedStyle(node).visibility === 'hidden') {\n    return true;\n  }\n\n  const isDirectSummary = matches.call(node, 'details>summary:first-of-type');\n  const nodeUnderDetails = isDirectSummary ? node.parentElement : node;\n  if (matches.call(nodeUnderDetails, 'details:not([open]) *')) {\n    return true;\n  }\n\n  if (\n    !displayCheck ||\n    displayCheck === 'full' ||\n    displayCheck === 'legacy-full'\n  ) {\n    if (typeof getShadowRoot === 'function') {\n      // figure out if we should consider the node to be in an undisclosed shadow and use the\n      //  'non-zero-area' fallback\n      const originalNode = node;\n      while (node) {\n        const parentElement = node.parentElement;\n        const rootNode = getRootNode(node);\n        if (\n          parentElement &&\n          !parentElement.shadowRoot &&\n          getShadowRoot(parentElement) === true // check if there's an undisclosed shadow\n        ) {\n          // node has an undisclosed shadow which means we can only treat it as a black box, so we\n          //  fall back to a non-zero-area test\n          return isZeroArea(node);\n        } else if (node.assignedSlot) {\n          // iterate up slot\n          node = node.assignedSlot;\n        } else if (!parentElement && rootNode !== node.ownerDocument) {\n          // cross shadow boundary\n          node = rootNode.host;\n        } else {\n          // iterate up normal dom\n          node = parentElement;\n        }\n      }\n\n      node = originalNode;\n    }\n    // else, `getShadowRoot` might be true, but all that does is enable shadow DOM support\n    //  (i.e. it does not also presume that all nodes might have undisclosed shadows); or\n    //  it might be a falsy value, which means shadow DOM support is disabled\n\n    // Since we didn't find it sitting in an undisclosed shadow (or shadows are disabled)\n    //  now we can just test to see if it would normally be visible or not, provided it's\n    //  attached to the main document.\n    // NOTE: We must consider case where node is inside a shadow DOM and given directly to\n    //  `isTabbable()` or `isFocusable()` -- regardless of `getShadowRoot` option setting.\n\n    if (isNodeAttached(node)) {\n      // this works wherever the node is: if there's at least one client rect, it's\n      //  somehow displayed; it also covers the CSS 'display: contents' case where the\n      //  node itself is hidden in place of its contents; and there's no need to search\n      //  up the hierarchy either\n      return !node.getClientRects().length;\n    }\n\n    // Else, the node isn't attached to the document, which means the `getClientRects()`\n    //  API will __always__ return zero rects (this can happen, for example, if React\n    //  is used to render nodes onto a detached tree, as confirmed in this thread:\n    //  https://github.com/facebook/react/issues/9117#issuecomment-284228870)\n    //\n    // It also means that even window.getComputedStyle(node).display will return `undefined`\n    //  because styles are only computed for nodes that are in the document.\n    //\n    // NOTE: THIS HAS BEEN THE CASE FOR YEARS. It is not new, nor is it caused by tabbable\n    //  somehow. Though it was never stated officially, anyone who has ever used tabbable\n    //  APIs on nodes in detached containers has actually implicitly used tabbable in what\n    //  was later (as of v5.2.0 on Apr 9, 2021) called `displayCheck=\"none\"` mode -- essentially\n    //  considering __everything__ to be visible because of the innability to determine styles.\n    //\n    // v6.0.0: As of this major release, the default 'full' option __no longer treats detached\n    //  nodes as visible with the 'none' fallback.__\n    if (displayCheck !== 'legacy-full') {\n      return true; // hidden\n    }\n    // else, fallback to 'none' mode and consider the node visible\n  } else if (displayCheck === 'non-zero-area') {\n    // NOTE: Even though this tests that the node's client rect is non-zero to determine\n    //  whether it's displayed, and that a detached node will __always__ have a zero-area\n    //  client rect, we don't special-case for whether the node is attached or not. In\n    //  this mode, we do want to consider nodes that have a zero area to be hidden at all\n    //  times, and that includes attached or not.\n    return isZeroArea(node);\n  }\n\n  // visible, as far as we can tell, or per current `displayCheck=none` mode, we assume\n  //  it's visible\n  return false;\n};\n\n// form fields (nested) inside a disabled fieldset are not focusable/tabbable\n//  unless they are in the _first_ <legend> element of the top-most disabled\n//  fieldset\nconst isDisabledFromFieldset = function (node) {\n  if (/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(node.tagName)) {\n    let parentNode = node.parentElement;\n    // check if `node` is contained in a disabled <fieldset>\n    while (parentNode) {\n      if (parentNode.tagName === 'FIELDSET' && parentNode.disabled) {\n        // look for the first <legend> among the children of the disabled <fieldset>\n        for (let i = 0; i < parentNode.children.length; i++) {\n          const child = parentNode.children.item(i);\n          // when the first <legend> (in document order) is found\n          if (child.tagName === 'LEGEND') {\n            // if its parent <fieldset> is not nested in another disabled <fieldset>,\n            // return whether `node` is a descendant of its first <legend>\n            return matches.call(parentNode, 'fieldset[disabled] *')\n              ? true\n              : !child.contains(node);\n          }\n        }\n        // the disabled <fieldset> containing `node` has no <legend>\n        return true;\n      }\n      parentNode = parentNode.parentElement;\n    }\n  }\n\n  // else, node's tabbable/focusable state should not be affected by a fieldset's\n  //  enabled/disabled state\n  return false;\n};\n\nconst isNodeMatchingSelectorFocusable = function (options, node) {\n  if (\n    node.disabled ||\n    // we must do an inert look up to filter out any elements inside an inert ancestor\n    //  because we're limited in the type of selectors we can use in JSDom (see related\n    //  note related to `candidateSelectors`)\n    isInert(node) ||\n    isHiddenInput(node) ||\n    isHidden(node, options) ||\n    // For a details element with a summary, the summary element gets the focus\n    isDetailsWithSummary(node) ||\n    isDisabledFromFieldset(node)\n  ) {\n    return false;\n  }\n  return true;\n};\n\nconst isNodeMatchingSelectorTabbable = function (options, node) {\n  if (\n    isNonTabbableRadio(node) ||\n    getTabIndex(node) < 0 ||\n    !isNodeMatchingSelectorFocusable(options, node)\n  ) {\n    return false;\n  }\n  return true;\n};\n\nconst isValidShadowRootTabbable = function (shadowHostNode) {\n  const tabIndex = parseInt(shadowHostNode.getAttribute('tabindex'), 10);\n  if (isNaN(tabIndex) || tabIndex >= 0) {\n    return true;\n  }\n  // If a custom element has an explicit negative tabindex,\n  // browsers will not allow tab targeting said element's children.\n  return false;\n};\n\n/**\n * @param {Array.<Element|CandidateScope>} candidates\n * @returns Element[]\n */\nconst sortByOrder = function (candidates) {\n  const regularTabbables = [];\n  const orderedTabbables = [];\n  candidates.forEach(function (item, i) {\n    const isScope = !!item.scopeParent;\n    const element = isScope ? item.scopeParent : item;\n    const candidateTabindex = getSortOrderTabIndex(element, isScope);\n    const elements = isScope ? sortByOrder(item.candidates) : element;\n    if (candidateTabindex === 0) {\n      isScope\n        ? regularTabbables.push(...elements)\n        : regularTabbables.push(element);\n    } else {\n      orderedTabbables.push({\n        documentOrder: i,\n        tabIndex: candidateTabindex,\n        item: item,\n        isScope: isScope,\n        content: elements,\n      });\n    }\n  });\n\n  return orderedTabbables\n    .sort(sortOrderedTabbables)\n    .reduce((acc, sortable) => {\n      sortable.isScope\n        ? acc.push(...sortable.content)\n        : acc.push(sortable.content);\n      return acc;\n    }, [])\n    .concat(regularTabbables);\n};\n\nconst tabbable = function (container, options) {\n  options = options || {};\n\n  let candidates;\n  if (options.getShadowRoot) {\n    candidates = getCandidatesIteratively(\n      [container],\n      options.includeContainer,\n      {\n        filter: isNodeMatchingSelectorTabbable.bind(null, options),\n        flatten: false,\n        getShadowRoot: options.getShadowRoot,\n        shadowRootFilter: isValidShadowRootTabbable,\n      }\n    );\n  } else {\n    candidates = getCandidates(\n      container,\n      options.includeContainer,\n      isNodeMatchingSelectorTabbable.bind(null, options)\n    );\n  }\n  return sortByOrder(candidates);\n};\n\nconst focusable = function (container, options) {\n  options = options || {};\n\n  let candidates;\n  if (options.getShadowRoot) {\n    candidates = getCandidatesIteratively(\n      [container],\n      options.includeContainer,\n      {\n        filter: isNodeMatchingSelectorFocusable.bind(null, options),\n        flatten: true,\n        getShadowRoot: options.getShadowRoot,\n      }\n    );\n  } else {\n    candidates = getCandidates(\n      container,\n      options.includeContainer,\n      isNodeMatchingSelectorFocusable.bind(null, options)\n    );\n  }\n\n  return candidates;\n};\n\nconst isTabbable = function (node, options) {\n  options = options || {};\n  if (!node) {\n    throw new Error('No node provided');\n  }\n  if (matches.call(node, candidateSelector) === false) {\n    return false;\n  }\n  return isNodeMatchingSelectorTabbable(options, node);\n};\n\nconst focusableCandidateSelector = /* #__PURE__ */ candidateSelectors\n  .concat('iframe')\n  .join(',');\n\nconst isFocusable = function (node, options) {\n  options = options || {};\n  if (!node) {\n    throw new Error('No node provided');\n  }\n  if (matches.call(node, focusableCandidateSelector) === false) {\n    return false;\n  }\n  return isNodeMatchingSelectorFocusable(options, node);\n};\n\nexport { tabbable, focusable, isTabbable, isFocusable, getTabIndex };\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/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n  extendStatics = Object.setPrototypeOf ||\n      ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n      function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n  return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n  if (typeof b !== \"function\" && b !== null)\n      throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n  extendStatics(d, b);\n  function __() { this.constructor = d; }\n  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n  __assign = Object.assign || function __assign(t) {\n      for (var s, i = 1, n = arguments.length; i < n; i++) {\n          s = arguments[i];\n          for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n      return t;\n  }\n  return __assign.apply(this, arguments);\n}\n\nexport function __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\nexport function __decorate(decorators, target, key, desc) {\n  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n  if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n  return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n  return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n  function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n  var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n  var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n  var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n  var _, done = false;\n  for (var i = decorators.length - 1; i >= 0; i--) {\n      var context = {};\n      for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n      for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n      context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n      var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n      if (kind === \"accessor\") {\n          if (result === void 0) continue;\n          if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n          if (_ = accept(result.get)) descriptor.get = _;\n          if (_ = accept(result.set)) descriptor.set = _;\n          if (_ = accept(result.init)) initializers.unshift(_);\n      }\n      else if (_ = accept(result)) {\n          if (kind === \"field\") initializers.unshift(_);\n          else descriptor[key] = _;\n      }\n  }\n  if (target) Object.defineProperty(target, contextIn.name, descriptor);\n  done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n  var useValue = arguments.length > 2;\n  for (var i = 0; i < initializers.length; i++) {\n      value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n  }\n  return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n  return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n  if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n  return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n  if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n  return new (P || (P = Promise))(function (resolve, reject) {\n      function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n      function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n      function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n      step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n}\n\nexport function __generator(thisArg, body) {\n  var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n  return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n  function verb(n) { return function (v) { return step([n, v]); }; }\n  function step(op) {\n      if (f) throw new TypeError(\"Generator is already executing.\");\n      while (g && (g = 0, op[0] && (_ = 0)), _) try {\n          if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n          if (y = 0, t) op = [op[0] & 2, t.value];\n          switch (op[0]) {\n              case 0: case 1: t = op; break;\n              case 4: _.label++; return { value: op[1], done: false };\n              case 5: _.label++; y = op[1]; op = [0]; continue;\n              case 7: op = _.ops.pop(); _.trys.pop(); continue;\n              default:\n                  if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                  if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                  if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                  if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                  if (t[2]) _.ops.pop();\n                  _.trys.pop(); continue;\n          }\n          op = body.call(thisArg, _);\n      } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n      if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n  }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n  if (k2 === undefined) k2 = k;\n  var desc = Object.getOwnPropertyDescriptor(m, k);\n  if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n  }\n  Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n  if (k2 === undefined) k2 = k;\n  o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n  for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n  var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n  if (m) return m.call(o);\n  if (o && typeof o.length === \"number\") return {\n      next: function () {\n          if (o && i >= o.length) o = void 0;\n          return { value: o && o[i++], done: !o };\n      }\n  };\n  throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n  var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n  if (!m) return o;\n  var i = m.call(o), r, ar = [], e;\n  try {\n      while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n  }\n  catch (error) { e = { error: error }; }\n  finally {\n      try {\n          if (r && !r.done && (m = i[\"return\"])) m.call(i);\n      }\n      finally { if (e) throw e.error; }\n  }\n  return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n  for (var ar = [], i = 0; i < arguments.length; i++)\n      ar = ar.concat(__read(arguments[i]));\n  return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n  for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n  for (var r = Array(s), k = 0, i = 0; i < il; i++)\n      for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n          r[k] = a[j];\n  return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n      if (ar || !(i in from)) {\n          if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n          ar[i] = from[i];\n      }\n  }\n  return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n  return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n  if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n  var g = generator.apply(thisArg, _arguments || []), i, q = [];\n  return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n  function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n  function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n  function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n  function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n  function fulfill(value) { resume(\"next\", value); }\n  function reject(value) { resume(\"throw\", value); }\n  function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n  var i, p;\n  return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n  function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n  if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n  var m = o[Symbol.asyncIterator], i;\n  return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n  function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n  function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n  if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n  return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n  Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n  o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n  ownKeys = Object.getOwnPropertyNames || function (o) {\n    var ar = [];\n    for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n    return ar;\n  };\n  return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n  if (mod && mod.__esModule) return mod;\n  var result = {};\n  if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n  __setModuleDefault(result, mod);\n  return result;\n}\n\nexport function __importDefault(mod) {\n  return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n  if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n  if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n  return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n  if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n  if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n  if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n  return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n  if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n  return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n  if (value !== null && value !== void 0) {\n    if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n    var dispose, inner;\n    if (async) {\n      if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n      dispose = value[Symbol.asyncDispose];\n    }\n    if (dispose === void 0) {\n      if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n      dispose = value[Symbol.dispose];\n      if (async) inner = dispose;\n    }\n    if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n    if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n    env.stack.push({ value: value, dispose: dispose, async: async });\n  }\n  else if (async) {\n    env.stack.push({ async: true });\n  }\n  return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n  var e = new Error(message);\n  return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n  function fail(e) {\n    env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n    env.hasError = true;\n  }\n  var r, s = 0;\n  function next() {\n    while (r = env.stack.pop()) {\n      try {\n        if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n        if (r.dispose) {\n          var result = r.dispose.call(r.value);\n          if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n        }\n        else s |= 1;\n      }\n      catch (e) {\n        fail(e);\n      }\n    }\n    if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n    if (env.hasError) throw env.error;\n  }\n  return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n  if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n      return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n          return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n      });\n  }\n  return path;\n}\n\nexport default {\n  __extends,\n  __assign,\n  __rest,\n  __decorate,\n  __param,\n  __esDecorate,\n  __runInitializers,\n  __propKey,\n  __setFunctionName,\n  __metadata,\n  __awaiter,\n  __generator,\n  __createBinding,\n  __exportStar,\n  __values,\n  __read,\n  __spread,\n  __spreadArrays,\n  __spreadArray,\n  __await,\n  __asyncGenerator,\n  __asyncDelegator,\n  __asyncValues,\n  __makeTemplateObject,\n  __importStar,\n  __importDefault,\n  __classPrivateFieldGet,\n  __classPrivateFieldSet,\n  __classPrivateFieldIn,\n  __addDisposableResource,\n  __disposeResources,\n  __rewriteRelativeImportExtension,\n};\n",null,null,null,"export {};\n//# sourceMappingURL=Loader.types.js.map",null,"\n\nimport \"./ButtonCore/ButtonCore.st.css.js\";\nimport \"../Foundation/stylable/easing.st.css.js\";\nimport \"../Foundation/stylable/colors.st.css.js\";\nimport \"../Foundation/stylable/typography.st.css.js\";\nimport { classesRuntime, statesRuntime } from \"./../stylable-esm-runtime.js\";\n\n\n\nvar _namespace_ = \"wds_1_269_0_Button\";\nvar _style_ = classesRuntime.bind(null, _namespace_);\n\nexport var cssStates = statesRuntime.bind(null, _namespace_);\nexport var style = _style_;\nexport var st = _style_;\n\nexport var namespace = _namespace_;\nexport var classes = {\"root\":\"wds_1_269_0_Button__root\",\"text-small-normal\":\"wds_1_269_0_StylableTypography__text-small-normal\",\"text-medium-normal\":\"wds_1_269_0_StylableTypography__text-medium-normal\",\"text-tiny-bold\":\"wds_1_269_0_StylableTypography__text-tiny-bold\"};\nexport var keyframes = {}; \nexport var layers = {};\nexport var containers = {};\nexport var stVars = {}; \nexport var vars = {\"wds-button-border-radius-large\":\"--wds-button-border-radius-large\",\"wds-button-border-radius-medium\":\"--wds-button-border-radius-medium\",\"wds-button-border-radius-small\":\"--wds-button-border-radius-small\",\"wds-button-border-radius-tiny\":\"--wds-button-border-radius-tiny\",\"wds-button-gap-large\":\"--wds-button-gap-large\",\"wds-button-gap-medium\":\"--wds-button-gap-medium\",\"wds-button-gap-small\":\"--wds-button-gap-small\",\"wds-button-gap-tiny\":\"--wds-button-gap-tiny\",\"wds-button-padding-vertical-large\":\"--wds-button-padding-vertical-large\",\"wds-button-padding-horizontal-large\":\"--wds-button-padding-horizontal-large\",\"wds-button-padding-vertical-medium\":\"--wds-button-padding-vertical-medium\",\"wds-button-padding-horizontal-medium\":\"--wds-button-padding-horizontal-medium\",\"wds-button-padding-vertical-small\":\"--wds-button-padding-vertical-small\",\"wds-button-padding-horizontal-small\":\"--wds-button-padding-horizontal-small\",\"wds-button-padding-vertical-tiny\":\"--wds-button-padding-vertical-tiny\",\"wds-button-padding-horizontal-tiny\":\"--wds-button-padding-horizontal-tiny\",\"wds-button-size-large\":\"--wds-button-size-large\",\"wds-button-size-medium\":\"--wds-button-size-medium\",\"wds-button-size-small\":\"--wds-button-size-small\",\"wds-button-size-tiny\":\"--wds-button-size-tiny\",\"wds-color-border-standard-secondary\":\"--wds-color-border-standard-secondary\",\"wds-color-border-standard-secondary-disabled\":\"--wds-color-border-standard-secondary-disabled\",\"wds-color-border-light\":\"--wds-color-border-light\",\"wds-color-border-light-disabled\":\"--wds-color-border-light-disabled\",\"wds-color-border-premium-secondary\":\"--wds-color-border-premium-secondary\",\"wds-color-border-premium-secondary-disabled\":\"--wds-color-border-premium-secondary-disabled\",\"wds-color-border-destructive-secondary\":\"--wds-color-border-destructive-secondary\",\"wds-color-border-destructive-secondary-disabled\":\"--wds-color-border-destructive-secondary-disabled\",\"wds-color-border-dark-primary\":\"--wds-color-border-dark-primary\",\"wds-color-border-dark-primary-disabled\":\"--wds-color-border-dark-primary-disabled\",\"wds-color-border-dark-secondary-disabled\":\"--wds-color-border-dark-secondary-disabled\",\"wds-color-border-ai-primary\":\"--wds-color-border-ai-primary\",\"wds-color-fill-standard-primary\":\"--wds-color-fill-standard-primary\",\"wds-color-fill-standard-primary-hover\":\"--wds-color-fill-standard-primary-hover\",\"wds-color-fill-standard-primary-active\":\"--wds-color-fill-standard-primary-active\",\"wds-color-fill-standard-primary-disabled\":\"--wds-color-fill-standard-primary-disabled\",\"wds-color-fill-standard-tertiary\":\"--wds-color-fill-standard-tertiary\",\"wds-color-fill-standard-tertiary-disabled\":\"--wds-color-fill-standard-tertiary-disabled\",\"wds-color-fill-light-primary\":\"--wds-color-fill-light-primary\",\"wds-color-fill-light-primary-hover\":\"--wds-color-fill-light-primary-hover\",\"wds-color-fill-light-primary-active\":\"--wds-color-fill-light-primary-active\",\"wds-color-fill-light-primary-disabled\":\"--wds-color-fill-light-primary-disabled\",\"wds-color-fill-light-secondary\":\"--wds-color-fill-light-secondary\",\"wds-color-fill-light-secondary-hover\":\"--wds-color-fill-light-secondary-hover\",\"wds-color-fill-light-secondary-active\":\"--wds-color-fill-light-secondary-active\",\"wds-color-fill-light-secondary-disabled\":\"--wds-color-fill-light-secondary-disabled\",\"wds-color-fill-destructive-primary\":\"--wds-color-fill-destructive-primary\",\"wds-color-fill-destructive-primary-hover\":\"--wds-color-fill-destructive-primary-hover\",\"wds-color-fill-destructive-primary-active\":\"--wds-color-fill-destructive-primary-active\",\"wds-color-fill-destructive-primary-disabled\":\"--wds-color-fill-destructive-primary-disabled\",\"wds-color-fill-destructive-tertiary\":\"--wds-color-fill-destructive-tertiary\",\"wds-color-fill-destructive-tertiary-disabled\":\"--wds-color-fill-destructive-tertiary-disabled\",\"wds-color-fill-premium-primary\":\"--wds-color-fill-premium-primary\",\"wds-color-fill-premium-primary-hover\":\"--wds-color-fill-premium-primary-hover\",\"wds-color-fill-premium-primary-active\":\"--wds-color-fill-premium-primary-active\",\"wds-color-fill-premium-primary-disabled\":\"--wds-color-fill-premium-primary-disabled\",\"wds-color-fill-premium-light-primary\":\"--wds-color-fill-premium-light-primary\",\"wds-color-fill-premium-light-primary-hover\":\"--wds-color-fill-premium-light-primary-hover\",\"wds-color-fill-premium-light-primary-active\":\"--wds-color-fill-premium-light-primary-active\",\"wds-color-fill-premium-light-primary-disabled\":\"--wds-color-fill-premium-light-primary-disabled\",\"wds-color-fill-premium-light-secondary\":\"--wds-color-fill-premium-light-secondary\",\"wds-color-fill-premium-light-secondary-hover\":\"--wds-color-fill-premium-light-secondary-hover\",\"wds-color-fill-premium-light-secondary-active\":\"--wds-color-fill-premium-light-secondary-active\",\"wds-color-fill-premium-light-secondary-disabled\":\"--wds-color-fill-premium-light-secondary-disabled\",\"wds-color-fill-premium-tertiary\":\"--wds-color-fill-premium-tertiary\",\"wds-color-fill-premium-tertiary-disabled\":\"--wds-color-fill-premium-tertiary-disabled\",\"wds-color-fill-dark-primary\":\"--wds-color-fill-dark-primary\",\"wds-color-fill-dark-primary-hover\":\"--wds-color-fill-dark-primary-hover\",\"wds-color-fill-dark-primary-active\":\"--wds-color-fill-dark-primary-active\",\"wds-color-fill-dark-primary-disabled\":\"--wds-color-fill-dark-primary-disabled\",\"wds-color-fill-transparent-primary\":\"--wds-color-fill-transparent-primary\",\"wds-color-fill-transparent-primary-hover\":\"--wds-color-fill-transparent-primary-hover\",\"wds-color-fill-transparent-primary-active\":\"--wds-color-fill-transparent-primary-active\",\"wds-color-fill-transparent-primary-disabled\":\"--wds-color-fill-transparent-primary-disabled\",\"wds-color-fill-transparent-secondary\":\"--wds-color-fill-transparent-secondary\",\"wds-color-fill-transparent-secondary-hover\":\"--wds-color-fill-transparent-secondary-hover\",\"wds-color-fill-transparent-secondary-active\":\"--wds-color-fill-transparent-secondary-active\",\"wds-color-fill-transparent-secondary-disabled\":\"--wds-color-fill-transparent-secondary-disabled\",\"wds-color-fill-ai-primary\":\"--wds-color-fill-ai-primary\",\"wds-color-fill-ai-primary-hover\":\"--wds-color-fill-ai-primary-hover\",\"wds-color-fill-ai-primary-active\":\"--wds-color-fill-ai-primary-active\",\"wds-color-fill-ai-primary-disabled\":\"--wds-color-fill-ai-primary-disabled\",\"wds-color-text-primary\":\"--wds-color-text-primary\",\"wds-color-text-premium\":\"--wds-color-text-premium\",\"wds-color-text-destructive\":\"--wds-color-text-destructive\",\"wds-color-text-disabled\":\"--wds-color-text-disabled\",\"wds-color-text-disabled-light\":\"--wds-color-text-disabled-light\",\"wds-color-text-standard-primary\":\"--wds-color-text-standard-primary\",\"wds-color-text-standard-primary-light\":\"--wds-color-text-standard-primary-light\",\"wds-shadow-focus-standard\":\"--wds-shadow-focus-standard\",\"wds-button-fill-standard-primary\":\"--wds-button-fill-standard-primary\",\"wds-button-fill-standard-primary-hover\":\"--wds-button-fill-standard-primary-hover\",\"wds-button-fill-standard-primary-active\":\"--wds-button-fill-standard-primary-active\",\"wds-button-fill-standard-secondary\":\"--wds-button-fill-standard-secondary\",\"wds-button-fill-standard-secondary-hover\":\"--wds-button-fill-standard-secondary-hover\",\"wds-button-fill-standard-secondary-active\":\"--wds-button-fill-standard-secondary-active\",\"wds-button-text-hover\":\"--wds-button-text-hover\",\"wds-button-outline-hover\":\"--wds-button-outline-hover\",\"wds-button-font-weight-large\":\"--wds-button-font-weight-large\",\"wds-button-font-weight-medium\":\"--wds-button-font-weight-medium\",\"wds-button-font-weight-small\":\"--wds-button-font-weight-small\",\"wds-button-font-weight-tiny\":\"--wds-button-font-weight-tiny\",\"wds-button-font-line-height-large\":\"--wds-button-font-line-height-large\",\"wds-button-font-line-height-medium\":\"--wds-button-font-line-height-medium\",\"wds-button-font-line-height-small\":\"--wds-button-font-line-height-small\",\"wds-button-font-line-height-tiny\":\"--wds-button-font-line-height-tiny\",\"wds-button-font-size-large\":\"--wds-button-font-size-large\",\"wds-button-font-size-medium\":\"--wds-button-font-size-medium\",\"wds-button-font-size-small\":\"--wds-button-font-size-small\",\"wds-button-font-size-tiny\":\"--wds-button-font-size-tiny\",\"wds-button-label-fill-standard-primary\":\"--wds-button-label-fill-standard-primary\",\"wds-button-label-fill-standard-primary-hover\":\"--wds-button-label-fill-standard-primary-hover\",\"wds-button-label-fill-standard-primary-active\":\"--wds-button-label-fill-standard-primary-active\",\"wds-button-label-fill-standard-primary-disabled\":\"--wds-button-label-fill-standard-primary-disabled\",\"wds-button-label-fill-standard-secondary\":\"--wds-button-label-fill-standard-secondary\",\"wds-button-label-fill-standard-secondary-active\":\"--wds-button-label-fill-standard-secondary-active\",\"wds-button-label-fill-standard-secondary-hover\":\"--wds-button-label-fill-standard-secondary-hover\",\"wds-button-label-fill-standard-secondary-disabled\":\"--wds-button-label-fill-standard-secondary-disabled\",\"wds-button-label-fill-destructive-secondary\":\"--wds-button-label-fill-destructive-secondary\",\"wds-button-label-fill-destructive-secondary-hover\":\"--wds-button-label-fill-destructive-secondary-hover\",\"wds-button-label-fill-destructive-secondary-active\":\"--wds-button-label-fill-destructive-secondary-active\",\"wds-button-label-fill-premium-primary-disabled\":\"--wds-button-label-fill-premium-primary-disabled\",\"wds-button-label-fill-premium-secondary\":\"--wds-button-label-fill-premium-secondary\",\"wds-button-label-fill-premium-secondary-hover\":\"--wds-button-label-fill-premium-secondary-hover\",\"wds-button-label-fill-premium-secondary-active\":\"--wds-button-label-fill-premium-secondary-active\",\"wds-button-label-fill-premium-secondary-disabled\":\"--wds-button-label-fill-premium-secondary-disabled\",\"wds-button-label-fill-dark-primary-disabled\":\"--wds-button-label-fill-dark-primary-disabled\",\"wds-button-label-fill-dark-secondary\":\"--wds-button-label-fill-dark-secondary\",\"wds-button-label-fill-dark-secondary-hover\":\"--wds-button-label-fill-dark-secondary-hover\",\"wds-button-label-fill-dark-secondary-active\":\"--wds-button-label-fill-dark-secondary-active\",\"wds-button-label-fill-dark-secondary-disabled\":\"--wds-button-label-fill-dark-secondary-disabled\",\"wds-button-fill-standard-primary-disabled\":\"--wds-button-fill-standard-primary-disabled\",\"wds-button-fill-standard-secondary-disabled\":\"--wds-button-fill-standard-secondary-disabled\",\"wds-button-fill-destructive-primary-disabled\":\"--wds-button-fill-destructive-primary-disabled\",\"wds-button-fill-destructive-secondary\":\"--wds-button-fill-destructive-secondary\",\"wds-button-fill-destructive-secondary-hover\":\"--wds-button-fill-destructive-secondary-hover\",\"wds-button-fill-destructive-secondary-active\":\"--wds-button-fill-destructive-secondary-active\",\"wds-button-fill-destructive-secondary-disabled\":\"--wds-button-fill-destructive-secondary-disabled\",\"wds-button-fill-premium-primary-disabled\":\"--wds-button-fill-premium-primary-disabled\",\"wds-button-fill-premium-secondary\":\"--wds-button-fill-premium-secondary\",\"wds-button-fill-premium-secondary-hover\":\"--wds-button-fill-premium-secondary-hover\",\"wds-button-fill-premium-secondary-active\":\"--wds-button-fill-premium-secondary-active\",\"wds-button-fill-premium-secondary-disabled\":\"--wds-button-fill-premium-secondary-disabled\",\"wds-button-fill-dark-primary-disabled\":\"--wds-button-fill-dark-primary-disabled\",\"wds-button-fill-dark-secondary-hover\":\"--wds-button-fill-dark-secondary-hover\",\"wds-button-fill-dark-secondary-active\":\"--wds-button-fill-dark-secondary-active\",\"wds-button-fill-dark-secondary-disabled\":\"--wds-button-fill-dark-secondary-disabled\",\"wds-button-border-standard-secondary\":\"--wds-button-border-standard-secondary\",\"wds-button-border-standard-secondary-hover\":\"--wds-button-border-standard-secondary-hover\",\"wds-button-border-standard-secondary-active\":\"--wds-button-border-standard-secondary-active\",\"wds-button-border-standard-secondary-disabled\":\"--wds-button-border-standard-secondary-disabled\",\"wds-button-border-destructive-secondary\":\"--wds-button-border-destructive-secondary\",\"wds-button-border-destructive-secondary-hover\":\"--wds-button-border-destructive-secondary-hover\",\"wds-button-border-destructive-secondary-active\":\"--wds-button-border-destructive-secondary-active\",\"wds-button-border-destructive-secondary-disabled\":\"--wds-button-border-destructive-secondary-disabled\",\"wds-button-border-premium-secondary\":\"--wds-button-border-premium-secondary\",\"wds-button-border-premium-secondary-hover\":\"--wds-button-border-premium-secondary-hover\",\"wds-button-border-premium-secondary-active\":\"--wds-button-border-premium-secondary-active\",\"wds-button-border-premium-secondary-disabled\":\"--wds-button-border-premium-secondary-disabled\",\"wds-button-border-dark-secondary\":\"--wds-button-border-dark-secondary\",\"wds-button-border-dark-secondary-hover\":\"--wds-button-border-dark-secondary-hover\",\"wds-button-border-dark-secondary-active\":\"--wds-button-border-dark-secondary-active\",\"wds-button-border-dark-secondary-disabled\":\"--wds-button-border-dark-secondary-disabled\",\"wsr-text-font-size-tiny\":\"--wsr-text-font-size-tiny\",\"wsr-text-font-size-small\":\"--wsr-text-font-size-small\",\"wsr-text-font-size-medium\":\"--wsr-text-font-size-medium\",\"wsr-text-line-height-small\":\"--wsr-text-line-height-small\",\"wsr-text-line-height-medium\":\"--wsr-text-line-height-medium\",\"wsr-font-weight-medium\":\"--wsr-font-weight-medium\",\"button-border-color\":\"--wds_1_269_0_Button-button-border-color\"}; \n\n\n\n\n",null,null,null,"var safeIsNaN = Number.isNaN ||\n    function ponyfill(value) {\n        return typeof value === 'number' && value !== value;\n    };\nfunction isEqual(first, second) {\n    if (first === second) {\n        return true;\n    }\n    if (safeIsNaN(first) && safeIsNaN(second)) {\n        return true;\n    }\n    return false;\n}\nfunction areInputsEqual(newInputs, lastInputs) {\n    if (newInputs.length !== lastInputs.length) {\n        return false;\n    }\n    for (var i = 0; i < newInputs.length; i++) {\n        if (!isEqual(newInputs[i], lastInputs[i])) {\n            return false;\n        }\n    }\n    return true;\n}\n\nfunction memoizeOne(resultFn, isEqual) {\n    if (isEqual === void 0) { isEqual = areInputsEqual; }\n    var lastThis;\n    var lastArgs = [];\n    var lastResult;\n    var calledOnce = false;\n    function memoized() {\n        var newArgs = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            newArgs[_i] = arguments[_i];\n        }\n        if (calledOnce && lastThis === this && isEqual(newArgs, lastArgs)) {\n            return lastResult;\n        }\n        lastResult = resultFn.apply(this, newArgs);\n        calledOnce = true;\n        lastThis = this;\n        lastArgs = newArgs;\n        return lastResult;\n    }\n    return memoized;\n}\n\nexport default memoizeOne;\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\nmodule.exports = listCacheClear;\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\nmodule.exports = eq;\n","var eq = require('./eq');\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\nmodule.exports = assocIndexOf;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\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\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\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\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\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\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\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\nmodule.exports = listCacheSet;\n","var listCacheClear = require('./_listCacheClear'),\n    listCacheDelete = require('./_listCacheDelete'),\n    listCacheGet = require('./_listCacheGet'),\n    listCacheHas = require('./_listCacheHas'),\n    listCacheSet = require('./_listCacheSet');\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// 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\nmodule.exports = ListCache;\n","var ListCache = require('./_ListCache');\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\nmodule.exports = stackClear;\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\nmodule.exports = stackDelete;\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\nmodule.exports = stackGet;\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\nmodule.exports = stackHas;\n","var baseGetTag = require('./_baseGetTag'),\n    isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    proxyTag = '[object Proxy]';\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\nmodule.exports = isFunction;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var coreJsData = require('./_coreJsData');\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 * 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\nmodule.exports = isMasked;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\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\nmodule.exports = toSource;\n","var isFunction = require('./isFunction'),\n    isMasked = require('./_isMasked'),\n    isObject = require('./isObject'),\n    toSource = require('./_toSource');\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 for built-in method references. */\nvar funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to 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/**\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\nmodule.exports = baseIsNative;\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\nmodule.exports = getValue;\n","var baseIsNative = require('./_baseIsNative'),\n    getValue = require('./_getValue');\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\nmodule.exports = getNative;\n","var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var nativeCreate = require('./_nativeCreate');\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\nmodule.exports = hashClear;\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\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\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 * 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\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\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 * 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\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\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\nmodule.exports = hashSet;\n","var hashClear = require('./_hashClear'),\n    hashDelete = require('./_hashDelete'),\n    hashGet = require('./_hashGet'),\n    hashHas = require('./_hashHas'),\n    hashSet = require('./_hashSet');\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// 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\nmodule.exports = Hash;\n","var Hash = require('./_Hash'),\n    ListCache = require('./_ListCache'),\n    Map = require('./_Map');\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\nmodule.exports = mapCacheClear;\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\nmodule.exports = isKeyable;\n","var isKeyable = require('./_isKeyable');\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\nmodule.exports = getMapData;\n","var getMapData = require('./_getMapData');\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\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\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\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\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\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\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\nmodule.exports = mapCacheSet;\n","var mapCacheClear = require('./_mapCacheClear'),\n    mapCacheDelete = require('./_mapCacheDelete'),\n    mapCacheGet = require('./_mapCacheGet'),\n    mapCacheHas = require('./_mapCacheHas'),\n    mapCacheSet = require('./_mapCacheSet');\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// 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\nmodule.exports = MapCache;\n","var ListCache = require('./_ListCache'),\n    Map = require('./_Map'),\n    MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\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\nmodule.exports = stackSet;\n","var ListCache = require('./_ListCache'),\n    stackClear = require('./_stackClear'),\n    stackDelete = require('./_stackDelete'),\n    stackGet = require('./_stackGet'),\n    stackHas = require('./_stackHas'),\n    stackSet = require('./_stackSet');\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// 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\nmodule.exports = Stack;\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 == null ? 0 : array.length;\n\n  while (++index < length) {\n    if (iteratee(array[index], index, array) === false) {\n      break;\n    }\n  }\n  return array;\n}\n\nmodule.exports = arrayEach;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n  try {\n    var func = getNative(Object, 'defineProperty');\n    func({}, '', {});\n    return func;\n  } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","var defineProperty = require('./_defineProperty');\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\nmodule.exports = baseAssignValue;\n","var baseAssignValue = require('./_baseAssignValue'),\n    eq = require('./eq');\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 * 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\nmodule.exports = assignValue;\n","var assignValue = require('./_assignValue'),\n    baseAssignValue = require('./_baseAssignValue');\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\nmodule.exports = copyObject;\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\nmodule.exports = baseTimes;\n","var baseGetTag = require('./_baseGetTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\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\nmodule.exports = baseIsArguments;\n","var baseIsArguments = require('./_baseIsArguments'),\n    isObjectLike = require('./isObjectLike');\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/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\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\nmodule.exports = isArguments;\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 = stubFalse;\n","var root = require('./_root'),\n    stubFalse = require('./stubFalse');\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/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\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\nmodule.exports = isBuffer;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\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\nmodule.exports = isIndex;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\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\nmodule.exports = isLength;\n","var baseGetTag = require('./_baseGetTag'),\n    isLength = require('./isLength'),\n    isObjectLike = require('./isObjectLike');\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    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    objectTag = '[object Object]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\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 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/**\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\nmodule.exports = baseIsTypedArray;\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\nmodule.exports = baseUnary;\n","var freeGlobal = require('./_freeGlobal');\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\nmodule.exports = nodeUtil;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n    baseUnary = require('./_baseUnary'),\n    nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\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\nmodule.exports = isTypedArray;\n","var baseTimes = require('./_baseTimes'),\n    isArguments = require('./isArguments'),\n    isArray = require('./isArray'),\n    isBuffer = require('./isBuffer'),\n    isIndex = require('./_isIndex'),\n    isTypedArray = require('./isTypedArray');\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 * 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\nmodule.exports = arrayLikeKeys;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\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\nmodule.exports = isPrototype;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","var isPrototype = require('./_isPrototype'),\n    nativeKeys = require('./_nativeKeys');\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 * 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\nmodule.exports = baseKeys;\n","var isFunction = require('./isFunction'),\n    isLength = require('./isLength');\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\nmodule.exports = isArrayLike;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n    baseKeys = require('./_baseKeys'),\n    isArrayLike = require('./isArrayLike');\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\nmodule.exports = keys;\n","var copyObject = require('./_copyObject'),\n    keys = require('./keys');\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n  return object && copyObject(source, keys(source), object);\n}\n\nmodule.exports = baseAssign;\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\nmodule.exports = nativeKeysIn;\n","var isObject = require('./isObject'),\n    isPrototype = require('./_isPrototype'),\n    nativeKeysIn = require('./_nativeKeysIn');\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 * 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\nmodule.exports = baseKeysIn;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n    baseKeysIn = require('./_baseKeysIn'),\n    isArrayLike = require('./isArrayLike');\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 = keysIn;\n","var copyObject = require('./_copyObject'),\n    keysIn = require('./keysIn');\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n  return object && copyObject(source, keysIn(source), object);\n}\n\nmodule.exports = baseAssignIn;\n","var root = require('./_root');\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/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n    allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\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\nmodule.exports = cloneBuffer;\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\nmodule.exports = copyArray;\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 == null ? 0 : array.length,\n      resIndex = 0,\n      result = [];\n\n  while (++index < length) {\n    var value = array[index];\n    if (predicate(value, index, array)) {\n      result[resIndex++] = value;\n    }\n  }\n  return result;\n}\n\nmodule.exports = arrayFilter;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n  return [];\n}\n\nmodule.exports = stubArray;\n","var arrayFilter = require('./_arrayFilter'),\n    stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\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 nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n  if (object == null) {\n    return [];\n  }\n  object = Object(object);\n  return arrayFilter(nativeGetSymbols(object), function(symbol) {\n    return propertyIsEnumerable.call(object, symbol);\n  });\n};\n\nmodule.exports = getSymbols;\n","var copyObject = require('./_copyObject'),\n    getSymbols = require('./_getSymbols');\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n  return copyObject(source, getSymbols(source), object);\n}\n\nmodule.exports = copySymbols;\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\nmodule.exports = arrayPush;\n","var arrayPush = require('./_arrayPush'),\n    getPrototype = require('./_getPrototype'),\n    getSymbols = require('./_getSymbols'),\n    stubArray = require('./stubArray');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n  var result = [];\n  while (object) {\n    arrayPush(result, getSymbols(object));\n    object = getPrototype(object);\n  }\n  return result;\n};\n\nmodule.exports = getSymbolsIn;\n","var copyObject = require('./_copyObject'),\n    getSymbolsIn = require('./_getSymbolsIn');\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n  return copyObject(source, getSymbolsIn(source), object);\n}\n\nmodule.exports = copySymbolsIn;\n","var arrayPush = require('./_arrayPush'),\n    isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n  var result = keysFunc(object);\n  return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n    getSymbols = require('./_getSymbols'),\n    keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n  return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n    getSymbolsIn = require('./_getSymbolsIn'),\n    keysIn = require('./keysIn');\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n  return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nmodule.exports = getAllKeysIn;\n","var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","var DataView = require('./_DataView'),\n    Map = require('./_Map'),\n    Promise = require('./_Promise'),\n    Set = require('./_Set'),\n    WeakMap = require('./_WeakMap'),\n    baseGetTag = require('./_baseGetTag'),\n    toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n    objectTag = '[object Object]',\n    promiseTag = '[object Promise]',\n    setTag = '[object Set]',\n    weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\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/**\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 and promises in Node.js < 6.\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 = baseGetTag(value),\n        Ctor = result == objectTag ? value.constructor : undefined,\n        ctorString = Ctor ? toSource(Ctor) : '';\n\n    if (ctorString) {\n      switch (ctorString) {\n        case dataViewCtorString: return dataViewTag;\n        case mapCtorString: return mapTag;\n        case promiseCtorString: return promiseTag;\n        case setCtorString: return setTag;\n        case weakMapCtorString: return weakMapTag;\n      }\n    }\n    return result;\n  };\n}\n\nmodule.exports = getTag;\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 * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n  var length = array.length,\n      result = new array.constructor(length);\n\n  // Add properties assigned by `RegExp#exec`.\n  if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n    result.index = array.index;\n    result.input = array.input;\n  }\n  return result;\n}\n\nmodule.exports = initCloneArray;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var Uint8Array = require('./_Uint8Array');\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\nmodule.exports = cloneArrayBuffer;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n  var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n  return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nmodule.exports = cloneDataView;\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n  var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n  result.lastIndex = regexp.lastIndex;\n  return result;\n}\n\nmodule.exports = cloneRegExp;\n","var Symbol = require('./_Symbol');\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n  return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nmodule.exports = cloneSymbol;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\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\nmodule.exports = cloneTypedArray;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer'),\n    cloneDataView = require('./_cloneDataView'),\n    cloneRegExp = require('./_cloneRegExp'),\n    cloneSymbol = require('./_cloneSymbol'),\n    cloneTypedArray = require('./_cloneTypedArray');\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]';\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 * 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 */\nfunction initCloneByTag(object, tag, isDeep) {\n  var Ctor = object.constructor;\n  switch (tag) {\n    case arrayBufferTag:\n      return cloneArrayBuffer(object);\n\n    case boolTag:\n    case dateTag:\n      return new Ctor(+object);\n\n    case dataViewTag:\n      return cloneDataView(object, isDeep);\n\n    case float32Tag: case float64Tag:\n    case int8Tag: case int16Tag: case int32Tag:\n    case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n      return cloneTypedArray(object, isDeep);\n\n    case mapTag:\n      return new Ctor;\n\n    case numberTag:\n    case stringTag:\n      return new Ctor(object);\n\n    case regexpTag:\n      return cloneRegExp(object);\n\n    case setTag:\n      return new Ctor;\n\n    case symbolTag:\n      return cloneSymbol(object);\n  }\n}\n\nmodule.exports = initCloneByTag;\n","var isObject = require('./isObject');\n\n/** Built-in value references. */\nvar objectCreate = 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\nmodule.exports = baseCreate;\n","var baseCreate = require('./_baseCreate'),\n    getPrototype = require('./_getPrototype'),\n    isPrototype = require('./_isPrototype');\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\nmodule.exports = initCloneObject;\n","var getTag = require('./_getTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n  return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nmodule.exports = baseIsMap;\n","var baseIsMap = require('./_baseIsMap'),\n    baseUnary = require('./_baseUnary'),\n    nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nmodule.exports = isMap;\n","var getTag = require('./_getTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n  return isObjectLike(value) && getTag(value) == setTag;\n}\n\nmodule.exports = baseIsSet;\n","var baseIsSet = require('./_baseIsSet'),\n    baseUnary = require('./_baseUnary'),\n    nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nmodule.exports = isSet;\n","var Stack = require('./_Stack'),\n    arrayEach = require('./_arrayEach'),\n    assignValue = require('./_assignValue'),\n    baseAssign = require('./_baseAssign'),\n    baseAssignIn = require('./_baseAssignIn'),\n    cloneBuffer = require('./_cloneBuffer'),\n    copyArray = require('./_copyArray'),\n    copySymbols = require('./_copySymbols'),\n    copySymbolsIn = require('./_copySymbolsIn'),\n    getAllKeys = require('./_getAllKeys'),\n    getAllKeysIn = require('./_getAllKeysIn'),\n    getTag = require('./_getTag'),\n    initCloneArray = require('./_initCloneArray'),\n    initCloneByTag = require('./_initCloneByTag'),\n    initCloneObject = require('./_initCloneObject'),\n    isArray = require('./isArray'),\n    isBuffer = require('./isBuffer'),\n    isMap = require('./isMap'),\n    isObject = require('./isObject'),\n    isSet = require('./isSet'),\n    keys = require('./keys'),\n    keysIn = require('./keysIn');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n    CLONE_FLAT_FLAG = 2,\n    CLONE_SYMBOLS_FLAG = 4;\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    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 identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\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 */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n  var result,\n      isDeep = bitmask & CLONE_DEEP_FLAG,\n      isFlat = bitmask & CLONE_FLAT_FLAG,\n      isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n  if (customizer) {\n    result = object ? customizer(value, key, object, stack) : customizer(value);\n  }\n  if (result !== undefined) {\n    return result;\n  }\n  if (!isObject(value)) {\n    return value;\n  }\n  var isArr = isArray(value);\n  if (isArr) {\n    result = initCloneArray(value);\n    if (!isDeep) {\n      return copyArray(value, result);\n    }\n  } else {\n    var tag = getTag(value),\n        isFunc = tag == funcTag || tag == genTag;\n\n    if (isBuffer(value)) {\n      return cloneBuffer(value, isDeep);\n    }\n    if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n      result = (isFlat || isFunc) ? {} : initCloneObject(value);\n      if (!isDeep) {\n        return isFlat\n          ? copySymbolsIn(value, baseAssignIn(result, value))\n          : copySymbols(value, baseAssign(result, value));\n      }\n    } else {\n      if (!cloneableTags[tag]) {\n        return object ? value : {};\n      }\n      result = initCloneByTag(value, tag, isDeep);\n    }\n  }\n  // Check for circular references and return its corresponding clone.\n  stack || (stack = new Stack);\n  var stacked = stack.get(value);\n  if (stacked) {\n    return stacked;\n  }\n  stack.set(value, result);\n\n  if (isSet(value)) {\n    value.forEach(function(subValue) {\n      result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n    });\n  } else if (isMap(value)) {\n    value.forEach(function(subValue, key) {\n      result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n    });\n  }\n\n  var keysFunc = isFull\n    ? (isFlat ? getAllKeysIn : getAllKeys)\n    : (isFlat ? keysIn : keys);\n\n  var props = isArr ? undefined : keysFunc(value);\n  arrayEach(props || value, function(subValue, key) {\n    if (props) {\n      key = subValue;\n      subValue = value[key];\n    }\n    // Recursively populate clone (susceptible to call stack limits).\n    assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n  });\n  return result;\n}\n\nmodule.exports = baseClone;\n","var baseClone = require('./_baseClone');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n    CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n  return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n}\n\nmodule.exports = cloneDeep;\n",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"export {};\n//# sourceMappingURL=types.js.map",null,"(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"imageClientSDK\"] = factory();\n\telse\n\t\troot[\"imageClientSDK\"] = factory();\n})(this, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 15);\n","'use strict'\n\n/**\n * image service api version\n */\nconst API_VERSION = 'v1'\n\n\n/*\nthe maximum retina factor\n */\nconst MAX_DEVICE_PIXEL_RATIO = 2\n\n/**\n * Enum string values of requested image fitting types\n * Note: TILE_HORIZONTAL, TILE_VERTICAL, FIT_AND_TILE are supported for legacy purposes but are not exposed\n * in the documentation because they should not be exposed for new features\n * @type {{SCALE_TO_FILL: string, SCALE_TO_FIT: string, TILE: string, ORIGINAL_SIZE: string, STRETCH: string}}\n */\nconst fittingTypes = {\n    SCALE_TO_FILL: 'fill',\n    SCALE_TO_FIT: 'fit',\n    STRETCH: 'stretch',\n    ORIGINAL_SIZE: 'original_size',\n    TILE: 'tile',\n    TILE_HORIZONTAL: 'tile_horizontal',\n    TILE_VERTICAL: 'tile_vertical',\n    FIT_AND_TILE: 'fit_and_tile',\n    LEGACY_STRIP_TILE: 'legacy_strip_tile',\n    LEGACY_STRIP_TILE_HORIZONTAL: 'legacy_strip_tile_horizontal',\n    LEGACY_STRIP_TILE_VERTICAL: 'legacy_strip_tile_vertical',\n    LEGACY_STRIP_SCALE_TO_FILL: 'legacy_strip_fill',\n    LEGACY_STRIP_SCALE_TO_FIT: 'legacy_strip_fit',\n    LEGACY_STRIP_FIT_AND_TILE: 'legacy_strip_fit_and_tile',\n    LEGACY_STRIP_ORIGINAL_SIZE: 'legacy_strip_original_size',\n    LEGACY_ORIGINAL_SIZE: 'actual_size',\n    LEGACY_FIT_WIDTH: 'fitWidth',\n    LEGACY_FIT_HEIGHT: 'fitHeight',\n    LEGACY_FULL: 'full',\n    LEGACY_BG_FIT_AND_TILE: 'legacy_tile',\n    LEGACY_BG_FIT_AND_TILE_HORIZONTAL: 'legacy_tile_horizontal',\n    LEGACY_BG_FIT_AND_TILE_VERTICAL: 'legacy_tile_vertical',\n    LEGACY_BG_NORMAL: 'legacy_normal'\n}\n\n/**\n * Enum string values of image transform types as passed to the image service api\n */\nconst transformTypes = {\n    FIT: 'fit',\n    FILL: 'fill',\n    FILL_FOCAL: 'fill_focal',\n    CROP: 'crop',\n    LEGACY_CROP: 'legacy_crop',\n    LEGACY_FILL: 'legacy_fill'\n}\n\n/**\n * Enum string values of requested image align types\n * @type {{CENTER: string, RIGHT: string, LEFT: string, TOP: string, BOTTOM: string, TOP_RIGHT: string, TOP_LEFT: string, BOTTOM_RIGHT: string, BOTTOM_LEFT: string}}\n */\nconst alignTypes = {\n    CENTER: 'center',\n    TOP: 'top',\n    TOP_LEFT: 'top_left',\n    TOP_RIGHT: 'top_right',\n    BOTTOM: 'bottom',\n    BOTTOM_LEFT: 'bottom_left',\n    BOTTOM_RIGHT: 'bottom_right',\n    LEFT: 'left',\n    RIGHT: 'right'\n}\n\n/**\n * Enum string values of image align types as passed to the image service\n */\nconst alignTypesMap = {\n    center: 'c',\n    top: 't',\n    top_left: 'tl',\n    top_right: 'tr',\n    bottom: 'b',\n    bottom_left: 'bl',\n    bottom_right: 'br',\n    left: 'l',\n    right: 'r'\n}\n\n/**\n * Enum string values of html tag used to construct the css or svg attributes\n *  @type {{BG: string, IMG: string, SVG: string}}\n */\nconst htmlTag = {\n    BG: 'bg',\n    IMG: 'img',\n    SVG: 'svg'\n}\n\n/**\n * Enum string values of upscale method\n *  @type {{DEFAULT: string, SUPER: string}}\n */\nconst upscaleMethods = {\n    AUTO: 'auto',\n    CLASSIC: 'classic',\n    SUPER: 'super'\n}\n\n/**\n *  api values of upscale method\n *  @type {{default: number, super: number}}\n */\nconst upscaleMethodsValues = {\n    classic: 1,\n    super: 2\n}\n\n\n/**\n * default unsharp mask values\n *  @type {{radius: number, amount: number, threshold: number}}\n */\nconst defaultUSM = {\n    radius: 0.66,\n    amount: 1.0,\n    threshold: 0.01\n}\n\n/**\n * default empty data\n *  @type {{uri: '', css: {img: {}, container: {}}, attr: {img: {}, container: {}}}}\n */\nconst emptyData = {\n    uri: '',\n    css: {\n        img: {},\n        container: {}\n    },\n    attr: {\n        img: {},\n        container: {}\n    }\n}\n\nconst MAX_TRANSFORMED_IMAGE_WIDTH = 5000\nconst MAX_TRANSFORMED_IMAGE_HEIGHT = 5000\nconst SAFE_TRANSFORMED_AREA = MAX_TRANSFORMED_IMAGE_WIDTH * MAX_TRANSFORMED_IMAGE_HEIGHT\n\n/**\n * super res machine learning upscale factor models -\n * @type {number[]}\n */\nconst SUPER_UPSCALE_MODELS = [1.5, 2, 4]\n\n/**\n * image qualities\n */\nconst imageScaleDefaults = {\n    HIGH: {\n        size: 1400 * 1400,\n        quality: 90,\n        maxUpscale: 1\n    },\n    MEDIUM: {\n        size: 600 * 600,\n        quality: 85,\n        maxUpscale: 1\n    },\n    LOW: {\n        size: 400 * 400,\n        quality: 80,\n        maxUpscale: 1.2\n    },\n    TINY: {\n        size: 0,\n        quality: 80,\n        maxUpscale: 1.4\n    }\n}\n\n/**\n * image quality\n * @type {{HIGH: string, MEDIUM: string, LOW: string, TINY: string}}\n */\nconst imageQuality = {\n    HIGH: 'HIGH',\n    MEDIUM: 'MEDIUM',\n    LOW: 'LOW',\n    TINY: 'TINY'\n}\n\n/**\n * image filters\n * @type {{CONTRAST: string, BRIGHTNESS: string, SATURATION: string, HUE: string, BLUR: string}}\n */\nconst imageFilters = {\n    CONTRAST: 'contrast',\n    BRIGHTNESS: 'brightness',\n    SATURATION: 'saturation',\n    HUE: 'hue',\n    BLUR: 'blur'\n}\n\n\nconst fileType = {\n    JPG: 'jpg',\n    JPEG: 'jpeg',\n    PNG: 'png',\n    WEBP: 'webp',\n    WIX_ICO_MP: 'wix_ico_mp',\n    WIX_MP: 'wix_mp',\n    GIF: 'gif',\n    SVG: 'svg',\n    UNRECOGNIZED: 'unrecognized'\n}\n\nconst supportedExtensions = [fileType.JPG, fileType.JPEG, fileType.PNG, fileType.GIF, fileType.WEBP]\n\nconst webp = {\n    LOSSLESS: 'lossless',\n    LOSSY: 'lossy',\n    ALPHA: 'alpha',\n    ANIMATION: 'animation'\n}\n\nmodule.exports = {\n    alignTypes,\n    alignTypesMap,\n    transformTypes,\n    fittingTypes,\n    htmlTag,\n    upscaleMethods,\n    upscaleMethodsValues,\n    defaultUSM,\n    emptyData,\n    imageQuality,\n    imageFilters,\n    imageScaleDefaults,\n    fileType,\n    supportedExtensions,\n    webp,\n    SAFE_TRANSFORMED_AREA,\n    SUPER_UPSCALE_MODELS,\n    MAX_DEVICE_PIXEL_RATIO,\n    API_VERSION\n\n}\n","'use strict'\nconst utils = require('./utils')\nconst constants = require('./imageServiceConstants')\nconst globalFeatureSupportObject = require('./imageServiceFeatureSupportObject')\n\n/**\n * Check once for browser support and store on global features support object\n * https://developers.google.com/speed/webp/faq#how_can_i_detect_browser_support_using_javascript\n */\nfunction checkWEBPSupport(type) {\n    const webpTypes = {\n        lossy: 'UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA',\n        lossless: 'UklGRhoAAABXRUJQVlA4TA0AAAAvAAAAEAcQERGIiP4HAA==',\n        alpha: 'UklGRkoAAABXRUJQVlA4WAoAAAAQAAAAAAAAAAAAQUxQSAwAAAARBxAR/Q9ERP8DAABWUDggGAAAABQBAJ0BKgEAAQAAAP4AAA3AAP7mtQAAAA==',\n        animation: 'UklGRlIAAABXRUJQVlA4WAoAAAASAAAAAAAAAAAAQU5JTQYAAAD/////AABBTk1GJgAAAAAAAAAAAAAAAAAAAGQAAABWUDhMDQAAAC8AAAAQBxAREYiI/gcA'\n    }\n\n    const webpImg = new window.Image()\n    webpImg.onload = function () {\n        const isWebpFeature = globalFeatureSupportObject.getFeature('isWEBP')\n        isWebpFeature[type] = webpImg.width > 0 && webpImg.height > 0\n        globalFeatureSupportObject.setFeature('isWEBP', isWebpFeature)\n    }\n\n    webpImg.src = `data:image/webp;base64,${webpTypes[type]}`\n}\n\n/**\n * Populate the global feature support object with browser specific values\n */\nfunction populateGlobalFeatureSupport() {\n    if (typeof window !== 'undefined') {\n        // jpg 2 webp\n        checkWEBPSupport(constants.webp.LOSSY)\n        // png 2 webp\n        checkWEBPSupport(constants.webp.LOSSLESS)\n        checkWEBPSupport(constants.webp.ALPHA)\n        // 2 animation\n        checkWEBPSupport(constants.webp.ANIMATION)\n\n        // objectfit support\n        globalFeatureSupportObject.setFeature('isObjectFitBrowser', isPropertySupported('objectFit'))\n    }\n}\n\n/**\n * check if the browser supports webp image display\n * for the image source type\n * @param {string}    fileType\n *\n * @returns {boolean}\n */\nfunction isWEBPBrowserSupport(fileType) {\n    const isWebpFeature = globalFeatureSupportObject.getFeature('isWEBP')\n    const isLosssyJPG = fileType === constants.fileType.JPG && isWebpFeature[constants.webp.LOSSY]\n    const isLosslessPNG = fileType === constants.fileType.PNG && isWebpFeature[constants.webp.LOSSLESS]\n    const isAlphaPNG = fileType === constants.fileType.PNG && isWebpFeature[constants.webp.ALPHA]\n\n    return isLosssyJPG || isLosslessPNG && isAlphaPNG\n}\n\n/**\n * check if the browser supports ObjectFit css attribute\n *\n * @returns {boolean}\n */\nfunction isObjectFitBrowserSupport() {\n    return globalFeatureSupportObject.getFeature('isObjectFitBrowser')\n}\n\n/**\n * returns if a css property is supported\n * @param property\n *\n * @returns {boolean}\n */\nfunction isPropertySupported(property) {\n    return property in window.document.documentElement.style\n}\n\n/**\n * checks if image type is supported\n * @param {string}     uri      image source uri\n *\n * @returns {boolean}\n */\nfunction isImageTypeSupported(uri) {\n    const supportedImageExtensions = [\n        constants.fileType.PNG,\n        constants.fileType.JPEG,\n        constants.fileType.JPG,\n        constants.fileType.WIX_ICO_MP,\n        constants.fileType.WIX_MP\n    ]\n    return utils.includes(supportedImageExtensions, getFileExtension(uri))\n}\n\n/**\n * check request integrity\n * @param {string}                  fittingType         imageService.fittingTypes\n * @param {ImageTransformSource}    src\n * @param {ImageTransformTarget}    target\n *\n * @returns {boolean}\n */\nfunction isValidRequest(fittingType, src, target) {\n    return target && (src && !isUrlEmptyOrNone(src.id)) && utils.includes(constants.fittingTypes, fittingType)\n}\n\n/**\n * check if image transform is supported for source image\n * @param {string}     uri\n *\n * @returns {boolean}\n */\nfunction isImageTransformApplicable(uri) {\n    return isImageTypeSupported(uri) && !isExternalUrl(uri)\n}\n\n/**\n * returns true if image is of JPG type\n * @param {string}  uri\n *\n * @returns {boolean}\n */\nfunction isJPG(uri) {\n    return utils.includes(['jpg', 'jpeg'], getFileExtension(uri))\n}\n\n/**\n * returns true if image is of PNG type\n * @param {string}  uri\n *\n * @returns {boolean}\n */\nfunction isPNG(uri) {\n    return utils.includes(['png'], getFileExtension(uri))\n}\n\n/**\n * returns true if image is of webP type\n * @param {string}  uri\n *\n * @returns {boolean}\n */\nfunction isWEBP(uri) {\n    return utils.includes(['webp'], getFileExtension(uri))\n}\n\n/**\n * returns true if the url starts with http, https, // or data\n * @param {string}  url\n *\n * @returns {boolean}\n */\nfunction isExternalUrl(url) {\n    return (/(^https?)|(^data)|(^\\/\\/)/).test(url)\n}\n\n/**\n * returns true if the url empty or none string\n * @param {string}  url\n *\n * @returns {boolean}\n */\nfunction isUrlEmptyOrNone(url) {\n    return !url || !url.trim() || url.toLowerCase() === 'none'\n}\n\n/**\n * returns source image file name (no extension)\n * @param {string}     uri      image source uri\n * @param {string}     [name]   optional image source name\n *\n * @returns {string}\n */\nfunction getFileName(uri, name) {\n    const beforeLeadingSlashRegexp = /\\/(.*?)$/\n    const fileExtensionRegexp = /\\.([^.]*)$/\n\n    // if name is a non empty string, remove only supported extension if exists and url encode the string\n    if (typeof name === 'string' && name.length) {\n        //https://jira.wixpress.com/browse/WEED-12667\n        //const illegalChars = ['/', '\\\\', '#', '^', '?', '{', '}', '<', '>', '|', '`', '“', ':', '\"'].map(encodeURIComponent)\n        const illegalChars = ['/', '\\\\', '?', '<', '>', '|', '“', ':', '\"'].map(encodeURIComponent)\n        const urlSafeIllegalChars = ['\\\\.', '\\\\*']\n        const illegalCharsRegex = new RegExp(`(${illegalChars.concat(urlSafeIllegalChars).join('|')})`, 'g')\n        const illegalCharsReplacement = '_'\n\n        let fileName = name\n\n        const extension = name.match(fileExtensionRegexp)\n\n        if (extension && utils.includes(constants.supportedExtensions, extension[1])) {\n            fileName = name.replace(fileExtensionRegexp, '')\n        }\n        return encodeURIComponent(fileName).replace(illegalCharsRegex, illegalCharsReplacement)\n    }\n\n    // else, trim any preceding media structure from the uri string (like \"media/\" etc.) and remove extension\n    const trimmed = uri.match(beforeLeadingSlashRegexp)\n    const fileName = trimmed ? trimmed[1] : uri\n    return fileName.replace(fileExtensionRegexp, '')\n}\n\n/**\n * returns source image file name (no extension)\n * @param {string}     uri      image source uri\n *\n * @returns {string}\n */\nfunction getFileType(uri) {\n    if (isJPG(uri)) {\n        return constants.fileType.JPG\n    } else if (isPNG(uri)) {\n        return constants.fileType.PNG\n    } else if (isWEBP(uri)) {\n        return constants.fileType.WEBP\n    }\n    return constants.fileType.UNRECOGNIZED\n}\n\n/**\n * returns source image file extension\n * @param {string}     uri      image source uri\n *\n * @returns {string}\n */\nfunction getFileExtension(uri) {\n    const splitURI = /[.]([^.]+)$/.exec(uri)\n    return (splitURI && /[.]([^.]+)$/.exec(uri)[1] || '').toLowerCase()\n}\n\n/**\n * returns scale factor needed if FIT fitting\n * @param {number}  sWidth\n * @param {number}  sHeight\n * @param {number}  dWidth\n * @param {number}  dHeight\n *\n * @returns {number}\n */\nfunction getFitScaleFactor(sWidth, sHeight, dWidth, dHeight) {\n    return Math.min(dWidth / sWidth, dHeight / sHeight)\n}\n\n/**\n * returns scale factor needed if FILL fitting\n * @param {number}  sWidth\n * @param {number}  sHeight\n * @param {number}  dWidth\n * @param {number}  dHeight\n *\n * @returns {number}\n */\nfunction getFillScaleFactor(sWidth, sHeight, dWidth, dHeight) {\n    return Math.max(dWidth / sWidth, dHeight / sHeight)\n}\n\n/**\n * returns scale factor source target\n * @param {number}  sWidth\n * @param {number}  sHeight\n * @param {number}  dWidth\n * @param {number}  dHeight\n * @param {string}  transformType\n *\n * @returns {number}\n */\nfunction getScaleFactor(sWidth, sHeight, dWidth, dHeight, transformType) {\n    let scaleFactor\n    if (transformType === constants.transformTypes.FILL) {\n        scaleFactor = getFillScaleFactor(sWidth, sHeight, dWidth, dHeight)\n    } else if (transformType === constants.transformTypes.FIT) {\n        scaleFactor = getFitScaleFactor(sWidth, sHeight, dWidth, dHeight)\n    } else {\n        scaleFactor = 1\n    }\n    return scaleFactor\n}\n\n\n/**\n * get calculated scale factor , width and height while considering wixmp image transform dimension limits\n * @param sWidth\n * @param sHeight\n * @param dWidth\n * @param dHeight\n * @param transformType\n * @returns {{scaleFactor: *, width: *, height: *}}\n */\nfunction getSafeTransformData(sWidth, sHeight, dWidth, dHeight, transformType) {\n    let scaleFactor\n    let width\n    let height\n\n\n    // calculate safe image transformed area\n    scaleFactor = getScaleFactor(sWidth, sHeight, dWidth, dHeight, transformType)\n    if (transformType === constants.transformTypes.FILL) {\n        width = dWidth\n        height = dHeight\n    } else if (transformType === constants.transformTypes.FIT) {\n        width = sWidth * scaleFactor\n        height = sHeight * scaleFactor\n    }\n\n    // adjust target width & height & scaleFactor\n    if (width * height > constants.SAFE_TRANSFORMED_AREA) {\n        const dimensionScaleFactor = Math.sqrt(constants.SAFE_TRANSFORMED_AREA / (width * height))\n        width *= dimensionScaleFactor\n        height *= dimensionScaleFactor\n        //get the new scale factor\n        scaleFactor = getScaleFactor(sWidth, sHeight, width, height, transformType)\n    }\n\n    return {\n        scaleFactor,\n        width,\n        height\n    }\n}\n\n\n\n/**\n * returns the destination rectangle\n * @param {number}                  sWidth\n * @param {number}                  sHeight\n * @param {ImageTransformTarget}    target\n * @param {string}                  transformType\n * @param {string}                  upscaleMethod\n *\n * @returns {object}                {width, height, scaleFactor, upscaleMethodValue, forceUSM, cssUpscaleNeeded}\n */\nfunction getTransformData(sWidth, sHeight, target, transformType, upscaleMethod) {\n    //use target dimension is src not provided\n    sWidth = sWidth || target.width\n    sHeight = sHeight || target.height\n    // device pixel aspect ratio\n    const DAR = getDevicePixelRatio(target)\n\n    // adjust image transform values considering server side transform limitations and performance\n    const {scaleFactor, width, height} = getSafeTransformData(sWidth, sHeight, target.width * DAR, target.height * DAR, transformType)\n\n    // adjust image transform values to optimizing upsacle quality and payload\n    return getOptimizedTransformData(sWidth, sHeight, width, height, upscaleMethod, scaleFactor, transformType)\n}\n\n/**\n * returns overlapping rectangle where sRect\n * id aligned (according to alignment) within dRect\n * @param {object}      sRect         rect 1\n * @param {object}      dRect         rect 2\n * @param {string}      alignment\n *\n * @returns {{x:number,y:number,width:number, height:number}}\n */\nfunction getAlignedRect(sRect, dRect, alignment) {\n    let x\n    let y\n\n    // calculate cropping x,y\n    switch (alignment) {\n        case constants.alignTypes.CENTER:\n            x = Math.max(0, (sRect.width - dRect.width) / 2)\n            y = Math.max(0, (sRect.height - dRect.height) / 2)\n            break\n        case constants.alignTypes.TOP:\n            x = Math.max(0, (sRect.width - dRect.width) / 2)\n            y = 0\n            break\n        case constants.alignTypes.TOP_LEFT:\n            x = 0\n            y = 0\n            break\n        case constants.alignTypes.TOP_RIGHT:\n            x = Math.max(0, sRect.width - dRect.width)\n            y = 0\n            break\n        case constants.alignTypes.BOTTOM:\n            x = Math.max(0, (sRect.width - dRect.width) / 2)\n            y = Math.max(0, sRect.height - dRect.height)\n            break\n        case constants.alignTypes.BOTTOM_LEFT:\n            x = 0\n            y = Math.max(0, sRect.height - dRect.height)\n            break\n        case constants.alignTypes.BOTTOM_RIGHT:\n            x = Math.max(0, sRect.width - dRect.width)\n            y = Math.max(0, sRect.height - dRect.height)\n            break\n        case constants.alignTypes.LEFT:\n            x = 0\n            y = Math.max(0, (sRect.height - dRect.height) / 2)\n            break\n        case constants.alignTypes.RIGHT:\n            x = Math.max(0, sRect.width - dRect.width)\n            y = Math.max(0, (sRect.height - dRect.height) / 2)\n            break\n    }\n\n    // rect\n    return {\n        x: sRect.x ? sRect.x + x : x,\n        y: sRect.y ? sRect.y + y : y,\n        width: Math.min(sRect.width, dRect.width),\n        height: Math.min(sRect.height, dRect.height)\n    }\n}\n\n/**\n * returns overlapping rectangle between sRect and dRect\n * @param {object}      sRect         rect 1\n * @param {object}      dRect         rect 2\n *\n * @returns {{x:number,y:number,width:number, height:number} || null}\n */\nfunction getOverlappingRect(sRect, dRect) {\n    const width = Math.max(0, Math.min(sRect.width, dRect.x + dRect.width) - Math.max(0, dRect.x))\n    const height = Math.max(0, Math.min(sRect.height, dRect.y + dRect.height) - Math.max(0, dRect.y))\n\n\n    const isValidRect = width && height && (sRect.width !== width || sRect.height !== height)\n\n    // return overlapping sRect/dRect rectangle(x, y, width, height)\n    return isValidRect ? {\n        x: Math.max(0, dRect.x),\n        y: Math.max(0, dRect.y),\n        width,\n        height\n    } : null\n}\n\n/**\n * returns pixel aspect ratio value\n * @param {ImageTransformTarget}    target\n *\n * @returns {number}\n */\nfunction getDevicePixelRatio(target) {\n    return Math.min(target.pixelAspectRatio || 1, constants.MAX_DEVICE_PIXEL_RATIO)\n}\n\n/**\n * returns target alignment value\n * @param {ImageTransformTarget}    target\n *\n * @returns {string}\n */\nfunction getAlignment(target) {\n    return constants.alignTypesMap[target.alignment] || constants.alignTypesMap[constants.alignTypes.CENTER]\n}\n\n/**\n * returns the focal point value, if no focal point passed use alignment\n * @param {{x: number, y: number}|undefined} focalPoint\n */\nfunction getFocalPoint(focalPoint) {\n    let fp = null\n\n    if (typeof focalPoint.x === 'number' && !isNaN(focalPoint.x) && typeof focalPoint.y === 'number' && !isNaN(focalPoint.y)) {\n        fp = {\n            x: roundToFixed(Math.max(0, Math.min(100, focalPoint.x)) / 100, 2),\n            y: roundToFixed(Math.max(0, Math.min(100, focalPoint.y)) / 100, 2)\n        }\n    }\n\n    return fp\n}\n\n/**\n * returns preferred image quality value\n * @param {number}    imageWidth\n * @param {number}    imageHeight\n *\n * @returns {number}\n */\nfunction getPreferredImageQuality(imageWidth, imageHeight) {\n    return constants.imageScaleDefaults[getImageQualityKey(imageWidth, imageHeight)].quality\n}\n\n/**\n * returns the scale descriptor of CLASSIC upscale method\n * @param sWidth\n * @param sHeight\n * @returns {{optimizedScaleFactor: number, upscaleMethodValue: number, forceUSM: boolean}}\n */\nfunction getClassicScaleData(sWidth, sHeight) {\n    const imageKey = getImageQualityKey(sWidth, sHeight)\n    return {\n        optimizedScaleFactor: constants.imageScaleDefaults[imageKey].maxUpscale,\n        upscaleMethodValue: constants.upscaleMethodsValues.classic,\n        forceUSM: false\n    }\n}\n\n/**\n * returns the scale descriptor of AUTO upscale method\n * @param sWidth\n * @param sHeight\n * @returns {{optimizedScaleFactor: number, upscaleMethodValue: number, forceUSM: boolean}}\n */\nfunction getAutoScaleData(sWidth, sHeight) {\n    const imageKey = getImageQualityKey(sWidth, sHeight)\n    return {\n        optimizedScaleFactor: constants.imageScaleDefaults[imageKey].maxUpscale,\n        upscaleMethodValue: constants.upscaleMethodsValues.classic,\n        forceUSM: false\n    }\n}\n\n/**\n * returns the scale descriptor of SUPER upscale method\n * @param sWidth\n * @param sHeight\n * @param scaleFactor\n * @returns {{optimizedScaleFactor: number, upscaleMethodValue: number, forceUSM: boolean}}\n */\nfunction getSuperScaleData(sWidth, sHeight, scaleFactor) {\n    return {\n        optimizedScaleFactor: utils.last(constants.SUPER_UPSCALE_MODELS),\n        upscaleMethodValue: constants.upscaleMethodsValues.super,\n        forceUSM: !(constants.SUPER_UPSCALE_MODELS.includes(scaleFactor) || scaleFactor > utils.last(constants.SUPER_UPSCALE_MODELS))\n    }\n}\n\n/**\n * returns upscale descriptor object\n * @param {number}    sWidth\n * @param {number}    sHeight\n * @param {string}    upscaleMethod\n * @param {number}    scaleFactor\n *\n * @returns  {{maxScale: number, upscaleMethodValue: number, forceUSM: boolean}}\n */\nfunction getOptimizedScaleData(sWidth, sHeight, scaleFactor, upscaleMethod) {\n    const scaleDataFunc = {\n        classic: getClassicScaleData,\n        auto: getAutoScaleData,\n        super: getSuperScaleData\n    }\n    return scaleDataFunc[upscaleMethod](sWidth, sHeight, scaleFactor)\n}\n\n/**\n * returns optimized upscale data, considering requested upscale method , optimize upscale for best quality and banswidth\n * @param {number}    sWidth\n * @param {number}    sHeight\n * @param {number}    tWidth\n * @param {number}    tHeight\n * @param {string}    upscaleMethod\n * @param {number}    scaleFactor\n * @param {string}    transformType\n *\n * @returns  {{width: number, height: number, sacleFactor: number, upscaleMethodValue: number, forceUSM: boolean, cssUpscaleNeeded: boolean}}\n */\nfunction getOptimizedTransformData(sWidth, sHeight, tWidth, tHeight, upscaleMethod, scaleFactor, transformType) {\n    const {optimizedScaleFactor, upscaleMethodValue, forceUSM} = getOptimizedScaleData(sWidth, sHeight, scaleFactor, upscaleMethod)\n\n    if (scaleFactor <= optimizedScaleFactor) {\n        // target upscale within limits or downscale\n        return {\n            width: tWidth,\n            height: tHeight,\n            scaleFactor,\n            upscaleMethodValue,\n            forceUSM,\n            cssUpscaleNeeded: false\n        }\n    }\n    // limited upscale\n    let width\n    let height\n    switch (transformType) {\n        case constants.transformTypes.FILL:\n            width = tWidth * (optimizedScaleFactor / scaleFactor)\n            height = tHeight * (optimizedScaleFactor / scaleFactor)\n            break\n        case constants.transformTypes.FIT:\n            width = sWidth * optimizedScaleFactor\n            height = sHeight * optimizedScaleFactor\n            break\n        default:\n            break\n    }\n    // adjust transform values\n    return {\n        width,\n        height,\n        scaleFactor: optimizedScaleFactor,\n        upscaleMethodValue,\n        forceUSM,\n        cssUpscaleNeeded: true\n    }\n}\n\n\n/**\n * returns image quality key\n * @param {number}    imageWidth\n * @param {number}    imageHeight\n *\n * @returns {string}\n */\nfunction getImageQualityKey(imageWidth, imageHeight) {\n    const size = imageWidth * imageHeight\n\n    if (size > constants.imageScaleDefaults[constants.imageQuality.HIGH].size) {\n        return constants.imageQuality.HIGH\n    } else if (size > constants.imageScaleDefaults[constants.imageQuality.MEDIUM].size) {\n        return constants.imageQuality.MEDIUM\n    } else if (size > constants.imageScaleDefaults[constants.imageQuality.LOW].size) {\n        return constants.imageQuality.LOW\n    }\n    return constants.imageQuality.TINY\n}\n\n/**\n * return the actual rounded dimension of a scaled rectangle\n * @param sWidth\n * @param sHeight\n * @param tWidth\n * @param tHeight\n * @param transformType\n * @returns {{width: number, height: number}}\n */\nfunction getDimension(sWidth, sHeight, tWidth, tHeight, transformType) {\n    const scaleFactor = getScaleFactor(sWidth, sHeight, tWidth, tHeight, transformType)\n    return {\n        width: Math.round(sWidth * scaleFactor),\n        height: Math.round(sHeight * scaleFactor)\n    }\n}\n\n/**\n * rounds number n digit precision and converts to string\n * @param {number}      value\n * @param {number}      precision\n *\n * @returns {string}\n */\nfunction roundToFixed(value, precision) {\n    const truncatePrecision = Math.pow(10, precision || 0)\n    return (value * truncatePrecision / truncatePrecision).toFixed(parseInt(precision, 10))\n}\n\n/**\n * get normalize scale method\n * @param options\n * @returns {*}\n */\nfunction getUpscaleString(options) {\n    if (!options || !options.upscaleMethod || typeof options.upscaleMethod !== 'string') {\n        return constants.upscaleMethods.AUTO\n    }\n    return constants.upscaleMethods[options.upscaleMethod.toUpperCase()] || constants.upscaleMethods.AUTO\n}\n\n\nmodule.exports = {\n    populateGlobalFeatureSupport,\n    isWEBPBrowserSupport,\n    isObjectFitBrowserSupport,\n    isImageTransformApplicable,\n    isValidRequest,\n    isImageTypeSupported,\n    isExternalUrl,\n    isWEBP,\n    getFileType,\n    getFileExtension,\n    getFileName,\n    getAlignedRect,\n    getOverlappingRect,\n    getScaleFactor,\n    getTransformData,\n    getAlignment,\n    getPreferredImageQuality,\n    getDimension,\n    getFocalPoint,\n    getUpscaleString,\n    roundToFixed\n}\n","'use strict'\n\n/**\n * Shallow object 'extend' function.\n * Receives any number of objects and assigns all by order to the first\n * @returns {{}}\n */\nfunction assign() {\n    const target = arguments[0] || {}\n    const sources = Array.prototype.slice.call(arguments, 1, arguments.length)\n\n    for (let i = 0; i < sources.length; i++) {\n        const source = sources[i]\n        for (const prop in source) {\n            if (source.hasOwnProperty(prop)) {\n                target[prop] = source[prop]\n            }\n        }\n    }\n    return target\n}\n\n/**\n * return if an Array, String or Object includes a value\n * @param source\n * @param value\n * @returns {boolean}\n */\nfunction includes(source, value) {\n    // Array and String\n    if (source.indexOf) {\n        return source.indexOf(value) > -1 // eslint-disable-line lodash/prefer-includes\n    }\n    // Object\n    if (source && typeof source === 'object') {\n        return Object.keys(source).some(key => source[key] === value)\n    }\n    return false\n}\n\n/**\n * Simple templates.\n * Receives a string with es6 ${...} style template arguments and returns a transformed string.\n * @param string\n * @returns {Function}\n */\nfunction template(string) {\n    return function templateFunc(data) {\n        let result = string\n        for (const key in data) {\n            if (data.hasOwnProperty(key)) {\n                result = result.replace(new RegExp(`\\\\$\\{${key}\\}`, 'g'), data[key])\n            }\n        }\n        return result\n    }\n}\n\n/**\n * Get the last element in an array\n * @param array\n * @returns {*}\n */\nfunction last(array) {\n    return array[array.length - 1]\n}\n\nmodule.exports = {\n    assign,\n    includes,\n    last,\n    template\n}\n\n","'use strict'\n\nconst imageServiceUtils = require('../helpers/imageServiceUtils')\nconst transformParts = require('../helpers/imageTransformParts')\nconst transformOptions = require('../helpers/imageTransformOptions')\n\n/**\n * returns image transform data\n *\n * @param {string}                  fittingType         imageServicesTypes.fittingTypes\n * @param {ImageTransformSource}    src                 source image\n * @param {ImageTransformTarget}    target              target component\n * @param {ImageTransformOptions}   [options]           transform options\n *\n * @returns {Object}\n */\nfunction getTransform(fittingType, src, target, options) {\n    const fileType = imageServiceUtils.getFileType(src.id)\n    const fileName = imageServiceUtils.getFileName(src.id, src.name)\n    const fileExtension = imageServiceUtils.getFileExtension(src.id)\n    const isWEBPSupport = imageServiceUtils.isWEBPBrowserSupport(fileType)\n\n    const transformsObj = {\n        fileName,\n        fileExtension,\n        fileType,\n        isWEBPSupport,\n        fittingType,\n        src: {\n            id: src.id,\n            width: src.width,\n            height: src.height,\n            isCropped: false\n        },\n        focalPoint: {\n            x: src.focalPoint && src.focalPoint.x,\n            y: src.focalPoint && src.focalPoint.y\n        },\n        parts: [],\n        // options - general\n        quality: 0,\n        upscaleMethod: imageServiceUtils.getUpscaleString(options),\n        progressive: true,\n        watermark: '',\n        // options - filters & adjustments\n        unsharpMask: {},\n        filters: {}\n    }\n\n    if (imageServiceUtils.isImageTransformApplicable(src.id)) {\n        transformParts.setTransformParts(transformsObj, src, target)\n        transformOptions.setTransformOptions(transformsObj, options)\n    }\n\n    return transformsObj\n}\n\nmodule.exports = getTransform\n\n/**\n * the source image to transform\n * @typedef  {object} ImageTransformSource\n * @property {string}  id               source image uri\n * @property {number}  width            source image width\n * @property {number}  height           source image height\n * @property {string}  [name]           source image display name\n * @property {object}  [crop]           source image crop values\n * @property {number}  crop.x           crop x\n * @property {number}  crop.y           crop y\n * @property {number}  crop.width       crop width\n * @property {number}  crop.height      crop height\n * @property {object}  [focalPoint]     source image focal point values\n * @property {number}  focalPoint.x     focal point x\n * @property {number}  focalPoint.y     focal point y\n */\n\n/**\n * the destination container\n * @typedef  {object}  ImageTransformTarget\n * @property {number}  width                destination container width\n * @property {number}  height               destination container height\n * @property {number}  [pixelAspectRatio]   for retina and mobile displays, 1 (default)\n * @property {string}  [alignment]          how to align the image in the container, imageService.alignTypes  CENTER(default)\n * @property {string}  [htmlTag]            the css style, imageService.htmlTag IMG(default)\n */\n\n/**\n * the transform options\n * @typedef  {object}   ImageTransformOptions\n * @property {boolean}  [progressive]               image transform progressive\n * @property {string}   [upscaleMethod]             image upscale method\n * @property {number}   [quality]                   image transform quality\n * @property {string}   [watermark]                 image watermark id\n * @property {object}   [unsharpMask]               unsharpMask filter\n * @property {number}   [unsharpMask.radius]        unsharpMask radius\n * @property {number}   [unsharpMask.amount]        unsharpMask amount\n * @property {number}   [unsharpMask.threshold]     unsharpMask threshold\n */\n\n/**\n * the transform results\n * @typedef  {object} ImageTransformResult\n * @property {string} uri the generated image uri, *without* base path\n * @property {object} css CSS properties for the image and it's parent container, empty object for SVG\n * @property {object} css.img CSS for the image element\n * @property {object} css.container CSS for the image container\n * @property {object} attr HTML Attributes for the image and it's parent container, empty object for bg and img types\n * @property {object} attr.img HTML Attributes for the image element\n * @property {object} attr.container HTML Attributes for the image container\n *\n */\n","'use strict'\n\n/**\n * Global MUTABLE support object\n * For tests, override the getFeature function and not the object\n * @type {{isWEBP: {lossless: boolean, lossy: boolean, alpha: boolean, animation: boolean}, isObjectFitBrowser: boolean}}\n */\nconst globalFeaturesSupportObj = {\n    /**\n     * checks if the browser supports webp image type\n     * @type {object<boolean>}\n     */\n    isWEBP: {\n        lossless: false,\n        lossy: false,\n        alpha: false,\n        animation: false\n    },\n    /**\n     * checks if the browser supports 'objectFit'\n     * @type {boolean}\n     */\n    isObjectFitBrowser: true\n}\n\nmodule.exports = {\n    getFeature(feature) {\n        return globalFeaturesSupportObj[feature]\n    },\n    setFeature(feature, value) {\n        globalFeaturesSupportObj[feature] = value\n    }\n}\n","'use strict'\n\nconst utils = require('./utils')\nconst constants = require('./imageServiceConstants')\nconst imageServiceUtils = require('./imageServiceUtils')\n\n/**\n * request analysis, returns parsed transforms object\n * @param {object}                  transformsObj\n * @param {ImageTransformSource}    src\n * @param {ImageTransformTarget}    target\n */\nfunction setTransformParts(transformsObj, src, target) {\n    let rect\n\n    // crop source image if needed\n    // set crop part and adjust source dimensions\n    if (src.crop) {\n        rect = imageServiceUtils.getOverlappingRect(src, src.crop)\n        if (rect) {\n            transformsObj.src.width = rect.width\n            transformsObj.src.height = rect.height\n            transformsObj.src.cropped = true\n            transformsObj.parts.push(getCropPart(rect))\n        }\n    }\n\n    // set additional transform part\n    switch (transformsObj.fittingType) {\n        case constants.fittingTypes.SCALE_TO_FIT:\n        case constants.fittingTypes.LEGACY_FIT_WIDTH:\n        case constants.fittingTypes.LEGACY_FIT_HEIGHT:\n        case constants.fittingTypes.LEGACY_FULL:\n        case constants.fittingTypes.FIT_AND_TILE:\n        case constants.fittingTypes.LEGACY_BG_FIT_AND_TILE:\n        case constants.fittingTypes.LEGACY_BG_FIT_AND_TILE_HORIZONTAL:\n        case constants.fittingTypes.LEGACY_BG_FIT_AND_TILE_VERTICAL:\n        case constants.fittingTypes.LEGACY_BG_NORMAL:\n        // fit\n            transformsObj.parts.push(getFitPart(transformsObj, target))\n            break\n\n        case constants.fittingTypes.SCALE_TO_FILL:\n        // fill\n            transformsObj.parts.push(getFillPart(transformsObj, target))\n            break\n\n        case constants.fittingTypes.STRETCH:\n        // stretch\n            transformsObj.parts.push(getStretchPart(transformsObj, target))\n            break\n\n        case constants.fittingTypes.TILE_HORIZONTAL:\n        case constants.fittingTypes.TILE_VERTICAL:\n        case constants.fittingTypes.TILE:\n        case constants.fittingTypes.LEGACY_ORIGINAL_SIZE:\n        case constants.fittingTypes.ORIGINAL_SIZE:\n        // use crop transform\n        // if crop of source image was requested adjust cropping rectangle\n            rect = imageServiceUtils.getAlignedRect(transformsObj.src, target, target.alignment)\n            if (transformsObj.src.isCropped) {\n                utils.assign(transformsObj.parts[0], rect)\n\n                // update source width & height accordingly\n                transformsObj.src.width = rect.width\n                transformsObj.src.height = rect.height\n            } else {\n                transformsObj.parts.push(getCropPart(rect))\n            }\n            break\n\n        // ---------------------------------------------------------------------------------------\n        // handles a legacy bug on bgImageStrip, background html tag\n        // component Full Width Strip stored incorrect image source width and height\n        // ---------------------------------------------------------------------------------------\n        case constants.fittingTypes.LEGACY_STRIP_TILE_HORIZONTAL:\n        case constants.fittingTypes.LEGACY_STRIP_TILE_VERTICAL:\n        case constants.fittingTypes.LEGACY_STRIP_TILE:\n        case constants.fittingTypes.LEGACY_STRIP_ORIGINAL_SIZE:\n        // crop request of source image is not supported\n        // use legacy crop\n            transformsObj.parts.push(getLegacyCropPart(target))\n            break\n\n        case constants.fittingTypes.LEGACY_STRIP_SCALE_TO_FIT:\n        case constants.fittingTypes.LEGACY_STRIP_FIT_AND_TILE:\n        // legacy fit\n            transformsObj.parts.push(getLegacyFitPart(target))\n            break\n\n        case constants.fittingTypes.LEGACY_STRIP_SCALE_TO_FILL:\n        // legacy fill\n            transformsObj.parts.push(getLegacyFillPart(target))\n            break\n    }\n}\n\n/**\n * returns fit part of the image transform uri\n * @param {object}                  transformsObj\n * @param {ImageTransformTarget}    target\n *\n * @returns {object}\n */\nfunction getFitPart(transformsObj, target) {\n    // calculate the transformed image size needed\n    const transformedData = imageServiceUtils.getTransformData(\n        transformsObj.src.width,\n        transformsObj.src.height,\n        target,\n        constants.transformTypes.FIT,\n        transformsObj.upscaleMethod)\n    const transformType = constants.transformTypes.FILL\n\n    // return fit transform data\n    return {\n        transformType,\n        width: Math.round(transformedData.width),\n        height: Math.round(transformedData.height),\n        alignment: constants.alignTypesMap.center,\n        upscale: transformedData.scaleFactor > 1,\n\n        forceUSM: transformedData.forceUSM,\n        scaleFactor: transformedData.scaleFactor,\n        cssUpscaleNeeded: transformedData.cssUpscaleNeeded,\n        upscaleMethodValue: transformedData.upscaleMethodValue\n    }\n}\n\n/**\n * returns fill part of the image transform uri\n * @param {object}                  transformsObj\n * @param {ImageTransformTarget}    target\n *\n * @returns {object}                {transformType, width, height, alignment, upscale, scaleFactor}\n */\nfunction getFillPart(transformsObj, target) {\n    // calculate the transformed image size needed\n    const transformedData = imageServiceUtils.getTransformData(\n        transformsObj.src.width,\n        transformsObj.src.height,\n        target,\n        constants.transformTypes.FILL,\n        transformsObj.upscaleMethod\n    )\n    const focalPoint = imageServiceUtils.getFocalPoint(transformsObj.focalPoint)\n    const transformType = focalPoint ? constants.transformTypes.FILL_FOCAL : constants.transformTypes.FILL\n\n    // return fill transform data\n    return {\n        transformType,\n        width: Math.round(transformedData.width),\n        height: Math.round(transformedData.height),\n        alignment: imageServiceUtils.getAlignment(target),\n        focalPointX: focalPoint && focalPoint.x,\n        focalPointY: focalPoint && focalPoint.y,\n        upscale: transformedData.scaleFactor > 1,\n\n        forceUSM: transformedData.forceUSM,\n        scaleFactor: transformedData.scaleFactor,\n        cssUpscaleNeeded: transformedData.cssUpscaleNeeded,\n        upscaleMethodValue: transformedData.upscaleMethodValue\n    }\n}\n\n/**\n * returns fill part of the image transform uri\n * @param {object}                  transformsObj\n * @param {ImageTransformTarget}    target\n *\n * @returns {object}\n */\nfunction getStretchPart(transformsObj, target) {\n    // stretch data\n    const scaleFactor = imageServiceUtils.getScaleFactor(transformsObj.src.width, transformsObj.src.height, target.width, target.height, constants.transformTypes.FILL)\n    const clonedTarget = utils.assign({}, target)\n    clonedTarget.width = transformsObj.src.width * scaleFactor\n    clonedTarget.height = transformsObj.src.height * scaleFactor\n\n    // return stretch part\n    return getFitPart(transformsObj, clonedTarget)\n}\n\n/**\n * returns crop part of the image transform uri\n * @param {Object}  rect     x, y, width, height\n *\n * @returns {object}\n */\nfunction getCropPart(rect) {\n    // crop data\n    return {\n        transformType: constants.transformTypes.CROP,\n        x: Math.round(rect.x),\n        y: Math.round(rect.y),\n        width: Math.round(rect.width),\n        height: Math.round(rect.height),\n        upscale: false,\n\n        forceUSM: false,\n        scaleFactor: 1,\n        cssUpscaleNeeded: false\n    }\n}\n\n// ---------------------------------------------------------------------------------------\n// handles a legacy bug on bgImageStrip, background html tag\n// component Full Width Strip stored incorrect image source width and height\n// ---------------------------------------------------------------------------------------\n\n/**\n * returns fit part of the image transform uri\n * @param {ImageTransformTarget}    target\n *\n * @returns {object}\n */\nfunction getLegacyFitPart(target) {\n    // return fit part\n    return {\n        transformType: constants.transformTypes.FIT,\n        width: Math.round(target.width),\n        height: Math.round(target.height),\n        upscale: false,\n\n        forceUSM: true,\n        scaleFactor: 1,\n        cssUpscaleNeeded: false\n    }\n}\n\n\n/**\n * returns fill part of the image transform uri\n * @param {ImageTransformTarget}    target\n *\n * @returns {object}\n */\nfunction getLegacyFillPart(target) {\n    // return fill part\n    return {\n        transformType: constants.transformTypes.LEGACY_FILL,\n        width: Math.round(target.width),\n        height: Math.round(target.height),\n        alignment: imageServiceUtils.getAlignment(target),\n        upscale: false,\n\n        forceUSM: true,\n        scaleFactor: 1,\n        cssUpscaleNeeded: false\n    }\n}\n\n/**\n * returns legacy crop part of the image transform uri\n * @param {ImageTransformTarget}     target\n *\n * @returns {object}\n */\nfunction getLegacyCropPart(target) {\n    // return crop part\n    return {\n        transformType: constants.transformTypes.LEGACY_CROP,\n        width: Math.round(target.width),\n        height: Math.round(target.height),\n        alignment: imageServiceUtils.getAlignment(target),\n        upscale: false,\n\n        forceUSM: false,\n        scaleFactor: 1,\n        cssUpscaleNeeded: false\n    }\n}\n\n\nmodule.exports = {\n    setTransformParts\n}\n","'use strict'\n\nconst utils = require('./utils')\nconst constants = require('./imageServiceConstants')\nconst imageServiceUtils = require('./imageServiceUtils')\n\n\n/**\n * returns image filters part of the image transform uri\n * @param {object}                  transformsObj    transform parts object\n * @param {ImageTransformOptions}   options\n */\nfunction setTransformOptions(transformsObj, options) {\n    options = options || {}\n    // options - general\n    transformsObj.quality = getQuality(transformsObj, options)\n    transformsObj.progressive = getProgressive(options)\n    transformsObj.watermark = getWatermark(options)\n    // options - filters & adjustments\n    transformsObj.unsharpMask = getUnsharpMask(transformsObj, options)\n    transformsObj.filters = getFilters(options)\n}\n\n/**\n *\n * @param {ImageTransformOptions}   options\n * @returns {string}\n */\nfunction getWatermark(options) {\n    return options.watermark\n}\n\n\n/**\n * returns progressive if required\n * @param {ImageTransformOptions}   options\n *\n * @returns {boolean}\n */\nfunction getProgressive(options) {\n    return options.progressive !== false\n}\n\n/**\n * returns image filters part of the image transform uri\n * @param {object}                  transformsObj    transform parts object\n * @param {ImageTransformOptions}   options\n *\n * @returns {number}\n */\nfunction getQuality(transformsObj, options) {\n    const transformData = utils.last(transformsObj.parts)\n\n    const defaultQuality = imageServiceUtils.getPreferredImageQuality(transformData.width, transformData.height)\n    const quality = options.quality && (options.quality >= 5 && options.quality <= 90) ? options.quality : defaultQuality\n\n    // return quality\n    return parseInt(quality, 10)\n}\n\n/**\n * returns the desired transformed image filters\n * @param {ImageTransformOptions}   options\n *\n * @returns {object}\n */\nfunction getFilters(options) {\n    const filterOptions = options.filters || {}\n    const filters = {}\n\n\n    // contrast\n    if (isValidImageFilter(filterOptions[constants.imageFilters.CONTRAST], -100, 100)) {\n        filters[constants.imageFilters.CONTRAST] = filterOptions[constants.imageFilters.CONTRAST]\n    }\n\n    // brightness\n    if (isValidImageFilter(filterOptions[constants.imageFilters.BRIGHTNESS], -100, 100)) {\n        filters[constants.imageFilters.BRIGHTNESS] = filterOptions[constants.imageFilters.BRIGHTNESS]\n    }\n\n    // saturation\n    if (isValidImageFilter(filterOptions[constants.imageFilters.SATURATION], -100, 100)) {\n        filters[constants.imageFilters.SATURATION] = filterOptions[constants.imageFilters.SATURATION]\n    }\n\n    // hue\n    if (isValidImageFilter(filterOptions[constants.imageFilters.HUE], -180, 180)) {\n        filters[constants.imageFilters.HUE] = filterOptions[constants.imageFilters.HUE]\n    }\n\n    // blur\n    if (isValidImageFilter(filterOptions[constants.imageFilters.BLUR], 0, 100)) {\n        filters[constants.imageFilters.BLUR] = filterOptions[constants.imageFilters.BLUR]\n    }\n\n    return filters\n}\n\n/**\n * indicates if requested filter value is valid\n * @param {number}  filterValue     filter's value\n * @param {number}  minValue        min range\n * @param {number}  maxValue        max range\n *\n * @returns {boolean}\n */\nfunction isValidImageFilter(filterValue, minValue, maxValue) {\n    // check if filter name and filter values range valid\n    return !isNaN(filterValue) && typeof filterValue === 'number' && filterValue !== 0 && (filterValue >= minValue && filterValue <= maxValue)\n}\n\n/**\n * returns the desired transformed image unSharpMask values\n * @param {object}                  transformsObj    transform parts object\n * @param {ImageTransformOptions}   options\n *\n * @returns {object}\n */\nfunction getUnsharpMask(transformsObj, options) {\n    // construct usm values\n    let usm\n\n    // If options.unsharpMask is a valid value, use it\n    if (isUSMValid(options.unsharpMask)) {\n        usm = {\n            radius: options.unsharpMask.radius,\n            amount: options.unsharpMask.amount,\n            threshold: options.unsharpMask.threshold\n        }\n    // if options.unsharpMask is not all zeros and not valid and usm should be used, use default\n    } else if (!isZeroUSM(options.unsharpMask)) {\n        if (isUSMNeeded(transformsObj)) {\n            usm = constants.defaultUSM\n        }\n    }\n    // If we got usm, change values to have trailing zeros (.00), else return undefined\n    if (usm) {\n        usm.radius = imageServiceUtils.roundToFixed(usm.radius, 2)\n        usm.amount = imageServiceUtils.roundToFixed(usm.amount, 2)\n        usm.threshold = imageServiceUtils.roundToFixed(usm.threshold, 2)\n    }\n\n    return usm\n}\n\n/**\n * indicates if usm is needed\n * @param {object}      transformsObj   transform parts object\n *\n * @returns {boolean}\n */\nfunction isUSMNeeded(transformsObj) {\n    // ---------------------------------------------------------------------------------------\n    // do not apply usm if transformed image width & height is same as source image or larger\n    // and no force usm is desired\n    // ---------------------------------------------------------------------------------------\n    const transformPart = utils.last(transformsObj.parts)\n    const upscale = transformPart.scaleFactor >= 1\n\n    // return if usm is needed\n    return !upscale || transformPart.forceUSM\n}\n\n\n/**\n * indicates if all usm values are presented and in range\n * @param {object}  usm     unsharp mask\n *\n * @returns {boolean}\n */\nfunction isUSMValid(usm) {\n    usm = usm || {}\n    const radius = !isNaN(usm.radius) && typeof usm.radius === 'number' && (usm.radius >= 0.1 && usm.radius <= 500)\n    const amount = !isNaN(usm.amount) && typeof usm.amount === 'number' && (usm.amount >= 0 && usm.amount <= 10)\n    const threshold = !isNaN(usm.threshold) && typeof usm.threshold === 'number' && (usm.threshold >= 0 && usm.threshold <= 255)\n\n    // return is a valid USM data\n    return radius && amount && threshold\n}\n\n/**\n * indicates if all usm values are presented and are zero. an explicit request to not apply usm\n * @param {object}  usm     unsharp mask\n *\n * @returns {boolean}\n */\nfunction isZeroUSM(usm) {\n    usm = usm || {}\n    return !isNaN(usm.radius) && typeof usm.radius === 'number' && usm.radius === 0 &&\n        (!isNaN(usm.amount) && typeof usm.amount === 'number' && usm.amount === 0) &&\n        (!isNaN(usm.threshold) && typeof usm.threshold === 'number' && usm.threshold === 0)\n}\n\nmodule.exports = {\n    setTransformOptions\n}\n","'use strict'\n\nconst constants = require('../helpers/imageServiceConstants')\nconst imageServiceUtils = require('../helpers/imageServiceUtils')\nconst transforms = require('../engines/transforms')\nconst transform = require('./transform')\n\n/**\n * returns image transform uri\n *\n * @param {string}                  fittingType         imageServicesTypes.fittingTypes\n * @param {ImageTransformSource}    src                 source image\n * @param {ImageTransformTarget}    target              target component\n * @param {ImageTransformOptions}   options             transform options\n * @param {Object}                  [transformObj]      transform data object to use\n *\n * @returns {string}\n */\nfunction getURI(fittingType, src, target, options, transformObj) {\n    let uri = constants.emptyData.uri\n\n    // check if image transformation is applicable (e.g. .gif, .wix_mp)\n    if (imageServiceUtils.isImageTransformApplicable(src.id)) {\n        transformObj = transformObj || transform(fittingType, src, target, options, transformObj)\n\n        // set the uri property\n        uri = transforms.getImageURI(transformObj)\n    } else {\n        uri = src.id\n    }\n\n    return uri\n}\n\nmodule.exports = getURI\n\n/**\n * the source image to transform\n * @typedef  {object} ImageTransformSource\n * @property {string}  id               source image uri\n * @property {number}  width            source image width\n * @property {number}  height           source image height\n * @property {object}  [crop]           source image crop values\n * @property {number}  crop.x           crop x\n * @property {number}  crop.y           crop y\n * @property {number}  crop.width       crop width\n * @property {number}  crop.height      crop height\n * @property {object}  [focalPoint]     source image focal point values\n * @property {number}  focalPoint.x     focal point x\n * @property {number}  focalPoint.y     focal point y\n */\n\n/**\n * the destination container\n * @typedef  {object}  ImageTransformTarget\n * @property {number}  width                destination container width\n * @property {number}  height               destination container height\n * @property {number}  [pixelAspectRatio]   for retina and mobile displays, 1 (default)\n * @property {string}  [alignment]          how to align the image in the container, imageService.alignTypes  CENTER(default)\n * @property {string}  [htmlTag]            the css style, imageService.htmlTag IMG(default)\n */\n\n/**\n * the transform options\n * @typedef  {object}   ImageTransformOptions\n * @property {boolean}  [progressive]               image transform progressive\n * @property {number}   [quality]                   image transform quality\n * @property {string}   [watermark]                 image watermark id\n * @property {object}   [unsharpMask]               unsharpMask filter\n * @property {number}   [unsharpMask.radius]        unsharpMask radius\n * @property {number}   [unsharpMask.amount]        unsharpMask amount\n * @property {number}   [unsharpMask.threshold]     unsharpMask threshold\n */\n\n/**\n * the transform results\n * @typedef  {object} ImageTransformResult\n * @property {string} uri the generated image uri, *without* base path\n * @property {object} css CSS properties for the image and it's parent container, empty object for SVG\n * @property {object} css.img CSS for the image element\n * @property {object} css.container CSS for the image container\n * @property {object} attr HTML Attributes for the image and it's parent container, empty object for bg and img types\n * @property {object} attr.img HTML Attributes for the image element\n * @property {object} attr.container HTML Attributes for the image container\n *\n */\n","'use strict'\nconst utils = require('../helpers/utils')\nconst constants = require('../helpers/imageServiceConstants')\n\n// transform templates\nconst fitTemplate = utils.template('fit/w_${width},h_${height}')\nconst fillTemplate = utils.template('fill/w_${width},h_${height},al_${alignment}')\nconst fillFocalTemplate = utils.template('fill/w_${width},h_${height},fp_${focalPointX}_${focalPointY}')\nconst cropTemplate = utils.template('crop/x_${x},y_${y},w_${width},h_${height}')\n\n// legacy templates\nconst legacyCropTemplate = utils.template('crop/w_${width},h_${height},al_${alignment}')\nconst legacyFillTemplate = utils.template('fill/w_${width},h_${height},al_${alignment}')\n\n// upscale template\nconst upscaleTemplate = utils.template(',lg_${upscaleMethodValue}')\n\n// options templates\nconst qualityTemplate = utils.template(',q_${quality}')\nconst unSharpMaskTemplate = utils.template(',usm_${radius}_${amount}_${threshold}')\nconst nonProgressiveTemplate = utils.template(',bl')\nconst watermarkTemplate = utils.template(',wm_${watermark}')\nconst filterTemplatesMap = {\n    [constants.imageFilters.CONTRAST]: utils.template(',con_${contrast}'),\n    [constants.imageFilters.BRIGHTNESS]: utils.template(',br_${brightness}'),\n    [constants.imageFilters.SATURATION]: utils.template(',sat_${saturation}'),\n    [constants.imageFilters.HUE]: utils.template(',hue_${hue}'),\n    [constants.imageFilters.BLUR]: utils.template(',blur_${blur}')\n}\n\n/**\n * returns image transform uri\n * @param {object}  transformsObj\n *\n * @returns {string}\n */\nfunction getImageURI(transformsObj) {\n    // construct image transforms\n    const transformsObjStrArr = []\n\n    // construct transform\n    transformsObj.parts.forEach(transformPart => {\n        switch (transformPart.transformType) {\n            case constants.transformTypes.CROP:\n                transformsObjStrArr.push(cropTemplate(transformPart))\n                break\n\n            case constants.transformTypes.LEGACY_CROP:\n                transformsObjStrArr.push(legacyCropTemplate(transformPart))\n                break\n\n            case constants.transformTypes.LEGACY_FILL:\n                let legacyFillStr = legacyFillTemplate(transformPart)\n                if (transformPart.upscale) {\n                    legacyFillStr += upscaleTemplate(transformPart)\n                }\n                transformsObjStrArr.push(legacyFillStr)\n                break\n\n            case constants.transformTypes.FIT:\n                let fitStr = fitTemplate(transformPart)\n                if (transformPart.upscale) {\n                    fitStr += upscaleTemplate(transformPart)\n                }\n                transformsObjStrArr.push(fitStr)\n                break\n\n            case constants.transformTypes.FILL:\n                let fillStr = fillTemplate(transformPart)\n                if (transformPart.upscale) {\n                    fillStr += upscaleTemplate(transformPart)\n                }\n                transformsObjStrArr.push(fillStr)\n                break\n\n            case constants.transformTypes.FILL_FOCAL:\n                let fillFocalStr = fillFocalTemplate(transformPart)\n                if (transformPart.upscale) {\n                    fillFocalStr += upscaleTemplate(transformPart)\n                }\n                transformsObjStrArr.push(fillFocalStr)\n                break\n        }\n    })\n\n    let transformsStr = transformsObjStrArr.join('/')\n\n    // construct transform options\n    // quality\n    if (transformsObj.fileType === constants.fileType.PNG && transformsObj.isWEBPSupport ||\n        transformsObj.fileType === constants.fileType.JPG) {\n        transformsStr += qualityTemplate(transformsObj)\n    }\n    // un-sharp mask\n    if (transformsObj.unsharpMask) {\n        transformsStr += unSharpMaskTemplate(transformsObj.unsharpMask)\n    }\n    // progressive\n    if (!transformsObj.progressive) {\n        transformsStr += nonProgressiveTemplate(transformsObj)\n    }\n    // watermark\n    if (transformsObj.watermark) {\n        transformsStr += watermarkTemplate(transformsObj)\n    }\n    // filters\n    if (transformsObj.filters) {\n        transformsStr += Object.keys(transformsObj.filters).map(filterName =>\n            filterTemplatesMap[filterName](transformsObj.filters)\n        ).join('')\n    }\n\n    // image url string\n    return `${transformsObj.src.id}/${constants.API_VERSION}/${transformsStr}/${transformsObj.fileName}.${transformsObj.isWEBPSupport ? 'webp' : transformsObj.fileExtension}`\n}\n\nmodule.exports = {\n    getImageURI\n}\n","'use strict'\nconst imageClientApi = require('../api/uri/index')\nconst constants = require('../helpers/imageServiceConstants')\n\nimageClientApi.populateGlobalFeatureSupport()\n\nconst wixStatic = 'https://static.wixstatic.com/'\nconst wixStaticWithMedia = 'https://static.wixstatic.com/media/'\nconst HAS_MEDIA_PREFIX_RE = /^media\\//i\n\nconst devicePixelRatio = typeof window !== 'undefined' ? window.devicePixelRatio : 1\n\nfunction getURL(uri) {\n    return HAS_MEDIA_PREFIX_RE.test(uri) ? `${wixStatic}${uri}` : `${wixStaticWithMedia}${uri}`\n}\n\nfunction getScaleToFitImageURL(relativeUrl, sourceWidth, sourceHeight, targetWidth, targetHeight, options) {\n    const data = imageClientApi.getData(constants.fittingTypes.SCALE_TO_FIT, {\n        id: relativeUrl,\n        width: sourceWidth,\n        height: sourceHeight,\n        name: options && options.name\n    }, {\n        width: targetWidth,\n        height: targetHeight,\n        htmlTag: imageClientApi.htmlTag.IMG,\n        alignment: imageClientApi.alignTypes.CENTER,\n        pixelAspectRatio: devicePixelRatio\n    }, options)\n\n    return getURL(data.uri)\n}\n\nfunction getScaleToFillImageURL(relativeUrl, sourceWidth, sourceHeight, targetWidth, targetHeight, options) {\n    const data = imageClientApi.getData(constants.fittingTypes.SCALE_TO_FILL, {\n        id: relativeUrl,\n        width: sourceWidth,\n        height: sourceHeight,\n        name: options && options.name,\n        focalPoint: {\n            x: options && options.focalPoint && options.focalPoint.x,\n            y: options && options.focalPoint && options.focalPoint.y\n        }\n    }, {\n        width: targetWidth,\n        height: targetHeight,\n        htmlTag: imageClientApi.htmlTag.IMG,\n        alignment: imageClientApi.alignTypes.CENTER,\n        pixelAspectRatio: devicePixelRatio\n    }, options)\n\n    return getURL(data.uri)\n}\n\nfunction getCropImageURL(relativeUrl, sourceWidth, sourceHeight, cropX, cropY, cropWidth, cropHeight, targetWidth, targetHeight, options) {\n    const data = imageClientApi.getData(constants.fittingTypes.SCALE_TO_FILL, {\n        id: relativeUrl,\n        width: sourceWidth,\n        height: sourceHeight,\n        name: options && options.name,\n        crop: {\n            x: cropX,\n            y: cropY,\n            width: cropWidth,\n            height: cropHeight\n        }\n    }, {\n        width: targetWidth,\n        height: targetHeight,\n        htmlTag: imageClientApi.htmlTag.IMG,\n        alignment: imageClientApi.alignTypes.CENTER,\n        pixelAspectRatio: devicePixelRatio\n    }, options)\n\n    return getURL(data.uri)\n}\n\nmodule.exports = {\n    getScaleToFitImageURL,\n    getScaleToFillImageURL,\n    getCropImageURL\n}","'use strict'\n\nconst constants = require('../../helpers/imageServiceConstants')\nconst imageServiceUtils = require('../../helpers/imageServiceUtils')\nconst getURI = require('../uri')\n\n/**\n * returns image transform uri\n *\n * @param {string}                  fittingType         imageServicesTypes.fittingTypes\n * @param {ImageTransformSource}    src                 source image\n * @param {ImageTransformTarget}    target              target component\n * @param {ImageTransformOptions}   [options]           transform options\n *\n * @returns {{uri: string}}\n */\nfunction getData(fittingType, src, target, options) {\n    let uri = constants.emptyData.uri\n\n    // check if valid request\n    if (imageServiceUtils.isValidRequest(fittingType, src, target)) {\n        uri = getURI(fittingType, src, target, options)\n    }\n\n    return {\n        uri\n    }\n}\n\nmodule.exports = {\n    populateGlobalFeatureSupport: imageServiceUtils.populateGlobalFeatureSupport,\n    getData,\n    fittingTypes: constants.fittingTypes,\n    alignTypes: constants.alignTypes,\n    htmlTag: constants.htmlTag,\n    upscaleMethods: constants.upscaleMethods\n}\n\n/**\n * the source image to transform\n * @typedef  {object} ImageTransformSource\n * @property {string}  id               source image uri\n * @property {number}  width            source image width\n * @property {number}  height           source image height\n * @property {object}  [crop]           source image crop values\n * @property {number}  crop.x           crop x\n * @property {number}  crop.y           crop y\n * @property {number}  crop.width       crop width\n * @property {number}  crop.height      crop height\n * @property {object}  [focalPoint]     source image focal point values\n * @property {number}  focalPoint.x     focal point x\n * @property {number}  focalPoint.y     focal point y\n */\n\n/**\n * the destination container\n * @typedef  {object}  ImageTransformTarget\n * @property {number}  width                destination container width\n * @property {number}  height               destination container height\n * @property {number}  [pixelAspectRatio]   for retina and mobile displays, 1 (default)\n * @property {string}  [alignment]          how to align the image in the container, imageService.alignTypes  CENTER(default)\n * @property {string}  [htmlTag]            the css style, imageService.htmlTag IMG(default)\n */\n\n/**\n * the transform options\n * @typedef  {object}   ImageTransformOptions\n * @property {boolean}  [progressive]               image transform progressive\n * @property {number}   [quality]                   image transform quality\n * @property {string}   [watermark]                 image watermark id\n * @property {object}   [unsharpMask]               unsharpMask filter\n * @property {number}   [unsharpMask.radius]        unsharpMask radius\n * @property {number}   [unsharpMask.amount]        unsharpMask amount\n * @property {number}   [unsharpMask.threshold]     unsharpMask threshold\n */\n\n/**\n * the transform results\n * @typedef  {object} ImageTransformResult\n * @property {string} uri the generated image uri, *without* base path\n * @property {object} css CSS properties for the image and it's parent container, empty object for SVG\n * @property {object} css.img CSS for the image element\n * @property {object} css.container CSS for the image container\n * @property {object} attr HTML Attributes for the image and it's parent container, empty object for bg and img types\n * @property {object} attr.img HTML Attributes for the image element\n * @property {object} attr.container HTML Attributes for the image container\n *\n */\n","import imageClientAPI from 'image-client-api/dist/imageClientSDK.js';\n\nimport type { ComponentData } from './../../ricos-content/index.js';\n\nconst WIX_STATIC_URL = 'https://static.wixstatic.com';\nconst DEFAULT = {\n  SIZE: 300,\n  QUALITY: 5,\n  TYPE: 'preload',\n};\n\nconst PRELOAD = {\n  WIDTH: 750,\n  QUALITY: 20,\n};\n\nconst IMAGE_SIZE = {\n  small: 350,\n  fullWidth: 940,\n};\n\nconst resize = (w: number, h: number, rw: number, rh: number) => {\n  if (rw > w && rh > h) {\n    return { width: w, height: h };\n  }\n  return { width: rw, height: rh };\n};\n\ntype Dimension = { w: number; h: number };\nconst ceilDimension = (dim: Dimension) => ({ w: Math.ceil(dim.w), h: Math.ceil(dim.h) });\n\nconst createUrl = (\n  src: ComponentData['src'],\n  rw?: number,\n  rh?: number,\n  rq?: number,\n  type = DEFAULT.TYPE,\n  size?: string,\n  options?: {\n    removeUsm?: boolean;\n    encAutoImageUrls?: boolean;\n  }\n) => {\n  if (type === 'preload') {\n    return createPreloadUrl(src, rw, rh, rq, options?.encAutoImageUrls);\n  }\n  if (type === 'quailtyPreload') {\n    return createQuailtyPreloadUrl(src, rw, rq, size, options?.encAutoImageUrls);\n  }\n  return createHiResUrl(src, rw, rh, rq, options?.removeUsm);\n};\n\nconst createPreloadUrl = (\n  { file_name: fileName, width: w, height: h }: ComponentData['src'] = {},\n  rw = DEFAULT.SIZE,\n  rh = DEFAULT.SIZE,\n  rq = DEFAULT.QUALITY,\n  encAutoImageUrls: $TSFixMe\n) => {\n  if (fileName) {\n    const { width, height } = resize(w, h, rw, rh);\n    const H = Math.ceil(height); //make sure no sterching will occur\n    const W = Math.ceil(width);\n    const format = getImageFormat(fileName);\n    const params = `w_${W},h_${H},al_c,q_${rq}${encAutoImageUrls ? ',enc_auto' : ''}`;\n    return `${WIX_STATIC_URL}/media/${fileName}/v1/fit/${params}/file${format}`;\n  }\n};\n\nconst createQuailtyPreloadUrl = (\n  { file_name: fileName, width: w, height: h }: ComponentData['src'] = {},\n  rw: $TSFixMe,\n  rq = PRELOAD.QUALITY,\n  size: $TSFixMe,\n  encAutoImageUrls: $TSFixMe\n) => {\n  if (fileName) {\n    const width = rw || IMAGE_SIZE[(size as $TSFixMeKey<typeof IMAGE_SIZE>) || PRELOAD.WIDTH];\n    const minW = Math.min(width, w);\n    const ratio = h / w;\n    const tDim: Dimension = ceilDimension({ w: minW, h: minW * ratio });\n    const params = `w_${tDim.w},h_${tDim.h},al_c,q_${rq}${encAutoImageUrls ? ',enc_auto' : ''}`;\n    return `${WIX_STATIC_URL}/media/${fileName}/v1/fit/${params}/file${getImageFormat(fileName)}`;\n  }\n  return '';\n};\n\nconst createHiResUrl = (\n  { file_name: fileName, width: w, height: h }: ComponentData['src'] = {},\n  rw = DEFAULT.SIZE,\n  rh = DEFAULT.SIZE,\n  rq = DEFAULT.QUALITY,\n  removeUsm = false\n) =>\n  fileName\n    ? imageClientAPI.getScaleToFitImageURL(fileName, w, h, rw, rh, {\n        quality: rq,\n        ...(removeUsm && {\n          unsharpMask: {\n            amount: 0,\n            radius: 0,\n            threshold: 0,\n          },\n        }),\n      })\n    : '';\n\nconst getImageFormat = (fileName: string) => {\n  const matches = /\\.([0-9a-z]+)(?=[?#])|(\\.)(?:[\\w]+)$/i.exec(fileName);\n  return matches ? matches[0] : '.jpg';\n};\n\nconst getImageSrc = (\n  src: ComponentData['src'],\n  customGetImageUrl?: ({ file_name }: { file_name: string }) => string,\n  options: {\n    requiredWidth?: number;\n    requiredHeight?: number;\n    requiredQuality?: number;\n    imageType?: string;\n    removeUsm?: boolean;\n    encAutoImageUrls?: boolean;\n    size?: string;\n  } = {}\n) => {\n  if (typeof src === 'object') {\n    if (src.source) {\n      if (src.source === 'static') {\n        if (src.url) {\n          return src.url;\n        } else {\n          console.error('must provide src url when using static image source!', src); //oxlint-disable-line no-console\n        }\n      } else if (src.source === 'custom') {\n        if (customGetImageUrl) {\n          return customGetImageUrl({ file_name: src.file_name }); //oxlint-disable-line camelcase\n        } else {\n          console.error('must provide getImageUrl helper when using custom image source!', src); //oxlint-disable-line no-console\n        }\n      }\n    } else if (src.file_name) {\n      const url = createUrl(\n        src,\n        options.requiredWidth,\n        options.requiredHeight,\n        options.requiredQuality,\n        options.imageType,\n        options.size,\n        {\n          removeUsm: options.removeUsm,\n          encAutoImageUrls: options.encAutoImageUrls,\n        }\n      );\n      return url;\n    }\n  }\n\n  return src;\n};\n\nfunction getMediaId(src: string) {\n  try {\n    const [, mediaId] = /media\\/([^/]+)/.exec(src) as string[];\n    return mediaId;\n  } catch {\n    return src;\n  }\n}\n\nfunction getScaleImageSrc(src: string, width: number, height: number) {\n  const mediaId = getMediaId(src);\n\n  try {\n    return imageClientAPI.getScaleToFillImageURL(mediaId, null, null, width, height, {\n      quality: 90,\n    });\n  } catch {\n    return src;\n  }\n}\n\nexport { getImageSrc, getScaleImageSrc };\n","export const isValidTelUrl = (str: string) => /^tel:[0-9-()+#*]+$/.test(str);\n","export function unreachable(_x: never) {\n  console.error('Not handled value', _x);\n  return new Error('Unreachable code reached');\n}\n","import type { Node as PmNode } from '@tiptap/pm/model';\n\nimport {\n  TIPTAP_ACTION_BUTTON_TYPE,\n  TIPTAP_FIGURE_TYPE,\n  TIPTAP_LINK_BUTTON_TYPE,\n} from './../../ricos-content/index.js';\nimport type { Node, PluginContainerData } from './../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport { Node_Type } from './../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport { getContainerData } from './../../_shared/node-styles.js';\nimport { PmNodeType } from './../../_shared/pm-node-types.js';\n\nconst CLOSED_FOR_SPACING_TYPES: readonly (Node_Type | string)[] = [\n  TIPTAP_FIGURE_TYPE,\n  TIPTAP_LINK_BUTTON_TYPE,\n  TIPTAP_ACTION_BUTTON_TYPE,\n  Node_Type.IMAGE,\n  Node_Type.VIDEO,\n  Node_Type.GALLERY,\n  Node_Type.DIVIDER,\n  Node_Type.HTML,\n  Node_Type.EMBED,\n  Node_Type.FILE,\n  Node_Type.GIF,\n  Node_Type.AUDIO,\n  Node_Type.POLL,\n  Node_Type.BUTTON,\n  Node_Type.ORDERED_LIST,\n  Node_Type.BULLETED_LIST,\n  Node_Type.LIST_ITEM,\n  Node_Type.LINK_PREVIEW,\n  Node_Type.APP_EMBED,\n  Node_Type.CODE_BLOCK,\n  Node_Type.BLOCKQUOTE,\n  Node_Type.TABLE,\n  Node_Type.TABLE_CELL,\n  Node_Type.LAYOUT,\n  Node_Type.LAYOUT_CELL,\n  Node_Type.COLLAPSIBLE_LIST,\n  Node_Type.COLLAPSIBLE_ITEM_BODY,\n  Node_Type.SHAPE,\n] as const;\n\nexport const isNodeSpaced = (nodeType: string): boolean =>\n  CLOSED_FOR_SPACING_TYPES.includes(nodeType);\n\n/**\n * Nodes that have UI elements overflowing above them when selected:\n * - IMAGE, SHAPE: Top resize handles (5px overflow)\n * - LAYOUT: Column drag handlers (9px overflow)\n */\nconst NODES_WITH_TOP_OVERFLOW: readonly (Node_Type | string)[] = [\n  Node_Type.IMAGE,\n  Node_Type.SHAPE,\n  Node_Type.LAYOUT,\n] as const;\n\n/**\n * For viewer - checks node type string directly\n */\nexport const needsTopMargin = (nodeType?: string | null): boolean =>\n  nodeType ? NODES_WITH_TOP_OVERFLOW.includes(nodeType as Node_Type) : false;\n\n/**\n * For editor - checks ProseMirror node, including FIGURE's first child.\n * In ProseMirror, IMAGE nodes are wrapped in FIGURE nodes, so we need to\n * check the first child to determine if it's an IMAGE with top resize handles.\n */\nexport const needsTopMarginForPmNode = (node?: PmNode | null): boolean => {\n  if (!node) return false;\n\n  const nodeType = node.type.name;\n\n  // Direct match for SHAPE, LAYOUT\n  if (NODES_WITH_TOP_OVERFLOW.includes(nodeType as Node_Type)) {\n    return true;\n  }\n\n  // Check FIGURE's first child for IMAGE (which has verticallyResizable: true)\n  if (nodeType === TIPTAP_FIGURE_TYPE) {\n    const firstChild = node.firstChild;\n    return firstChild?.type.name === Node_Type.IMAGE;\n  }\n\n  return false;\n};\n\nexport const isCollapsedBetween = (\n  firstNodeType?: string | null,\n  secondNodeType?: string | null,\n  parentNodeType?: string | null,\n  options?: { bothFullWidth?: boolean }\n): boolean => {\n  const isEdgeNode = !firstNodeType || !secondNodeType;\n\n  if (isEdgeNode && parentNodeType !== Node_Type.LIST_ITEM) {\n    // Collapse edge gap spacers everywhere except in list items. List items look ugly when collapsed.\n    return true;\n  }\n\n  // Collapse gap between any two full-width (extended) elements\n  if (options?.bothFullWidth) {\n    return true;\n  }\n\n  return false;\n};\n\nconst getNodeContainerData = (node: Node | PmNode): PluginContainerData | undefined | null => {\n  // Handle PM nodes\n  if ('attrs' in node && node.attrs) {\n    // If it's a figure, we need its' first child's container data\n    if (node.type.name === PmNodeType.FIGURE) {\n      return node.firstChild?.attrs?.containerData;\n    }\n\n    return node.attrs.containerData;\n  }\n\n  if ('type' in node && 'id' in node) {\n    return getContainerData(node);\n  }\n\n  return null;\n};\n\nexport const isNodeFloated = (node?: Node | PmNode | null): boolean => {\n  if (!node) return false;\n\n  const containerData = getNodeContainerData(node);\n  const hasTextWrap = containerData?.textWrap ?? true;\n  const isFloatableAlignment =\n    containerData?.alignment === 'LEFT' || containerData?.alignment === 'RIGHT';\n\n  return hasTextWrap && isFloatableAlignment;\n};\n\nexport const isBetweenFloatedNodes = (\n  node1?: Node | PmNode | null,\n  node2?: Node | PmNode | null\n): boolean => isNodeFloated(node1) && isNodeFloated(node2);\n\nconst getNodeType = (node: Node | PmNode): string => {\n  // PM node\n  if ('attrs' in node && node.type?.name) {\n    // For FIGURE nodes, get the actual content type from first child\n    if (node.type.name === PmNodeType.FIGURE) {\n      return node.firstChild?.type.name || node.type.name;\n    }\n    return node.type.name;\n  }\n  // Ricos node\n  if ('type' in node && 'id' in node) {\n    return (node as Node).type;\n  }\n  return '';\n};\n\n/**\n * Check if a node is full-width (extended).\n * Layouts are always full-width.\n * Other plugin nodes are full-width when containerData.width.size === 'FULL_WIDTH'.\n */\nexport const isNodeFullWidth = (node?: Node | PmNode | null): boolean => {\n  if (!node) return false;\n\n  const nodeType = getNodeType(node);\n\n  // Layouts are always full-width (breakout)\n  if (nodeType === Node_Type.LAYOUT) {\n    return true;\n  }\n\n  const containerData = getNodeContainerData(node);\n  return containerData?.width?.size === 'FULL_WIDTH';\n};\n\nexport const isBetweenFullWidthNodes = (\n  node1?: Node | PmNode | null,\n  node2?: Node | PmNode | null\n): boolean => isNodeFullWidth(node1) && isNodeFullWidth(node2);\n","import {\n  tabbable,\n  focusable,\n  isFocusable,\n  isTabbable,\n  getTabIndex,\n} from 'tabbable';\n\nconst activeFocusTraps = {\n  activateTrap(trapStack, trap) {\n    if (trapStack.length > 0) {\n      const activeTrap = trapStack[trapStack.length - 1];\n      if (activeTrap !== trap) {\n        activeTrap.pause();\n      }\n    }\n\n    const trapIndex = trapStack.indexOf(trap);\n    if (trapIndex === -1) {\n      trapStack.push(trap);\n    } else {\n      // move this existing trap to the front of the queue\n      trapStack.splice(trapIndex, 1);\n      trapStack.push(trap);\n    }\n  },\n\n  deactivateTrap(trapStack, trap) {\n    const trapIndex = trapStack.indexOf(trap);\n    if (trapIndex !== -1) {\n      trapStack.splice(trapIndex, 1);\n    }\n\n    if (trapStack.length > 0) {\n      trapStack[trapStack.length - 1].unpause();\n    }\n  },\n};\n\nconst isSelectableInput = function (node) {\n  return (\n    node.tagName &&\n    node.tagName.toLowerCase() === 'input' &&\n    typeof node.select === 'function'\n  );\n};\n\nconst isEscapeEvent = function (e) {\n  return e?.key === 'Escape' || e?.key === 'Esc' || e?.keyCode === 27;\n};\n\nconst isTabEvent = function (e) {\n  return e?.key === 'Tab' || e?.keyCode === 9;\n};\n\n// checks for TAB by default\nconst isKeyForward = function (e) {\n  return isTabEvent(e) && !e.shiftKey;\n};\n\n// checks for SHIFT+TAB by default\nconst isKeyBackward = function (e) {\n  return isTabEvent(e) && e.shiftKey;\n};\n\nconst delay = function (fn) {\n  return setTimeout(fn, 0);\n};\n\n/**\n * Get an option's value when it could be a plain value, or a handler that provides\n *  the value.\n * @param {*} value Option's value to check.\n * @param {...*} [params] Any parameters to pass to the handler, if `value` is a function.\n * @returns {*} The `value`, or the handler's returned value.\n */\nconst valueOrHandler = function (value, ...params) {\n  return typeof value === 'function' ? value(...params) : value;\n};\n\nconst getActualTarget = function (event) {\n  // NOTE: If the trap is _inside_ a shadow DOM, event.target will always be the\n  //  shadow host. However, event.target.composedPath() will be an array of\n  //  nodes \"clicked\" from inner-most (the actual element inside the shadow) to\n  //  outer-most (the host HTML document). If we have access to composedPath(),\n  //  then use its first element; otherwise, fall back to event.target (and\n  //  this only works for an _open_ shadow DOM; otherwise,\n  //  composedPath()[0] === event.target always).\n  return event.target.shadowRoot && typeof event.composedPath === 'function'\n    ? event.composedPath()[0]\n    : event.target;\n};\n\n// NOTE: this must be _outside_ `createFocusTrap()` to make sure all traps in this\n//  current instance use the same stack if `userOptions.trapStack` isn't specified\nconst internalTrapStack = [];\n\nconst createFocusTrap = function (elements, userOptions) {\n  // SSR: a live trap shouldn't be created in this type of environment so this\n  //  should be safe code to execute if the `document` option isn't specified\n  const doc = userOptions?.document || document;\n\n  const trapStack = userOptions?.trapStack || internalTrapStack;\n\n  const config = {\n    returnFocusOnDeactivate: true,\n    escapeDeactivates: true,\n    delayInitialFocus: true,\n    isKeyForward,\n    isKeyBackward,\n    ...userOptions,\n  };\n\n  const state = {\n    // containers given to createFocusTrap()\n    // @type {Array<HTMLElement>}\n    containers: [],\n\n    // list of objects identifying tabbable nodes in `containers` in the trap\n    // NOTE: it's possible that a group has no tabbable nodes if nodes get removed while the trap\n    //  is active, but the trap should never get to a state where there isn't at least one group\n    //  with at least one tabbable node in it (that would lead to an error condition that would\n    //  result in an error being thrown)\n    // @type {Array<{\n    //   container: HTMLElement,\n    //   tabbableNodes: Array<HTMLElement>, // empty if none\n    //   focusableNodes: Array<HTMLElement>, // empty if none\n    //   posTabIndexesFound: boolean,\n    //   firstTabbableNode: HTMLElement|undefined,\n    //   lastTabbableNode: HTMLElement|undefined,\n    //   firstDomTabbableNode: HTMLElement|undefined,\n    //   lastDomTabbableNode: HTMLElement|undefined,\n    //   nextTabbableNode: (node: HTMLElement, forward: boolean) => HTMLElement|undefined\n    // }>}\n    containerGroups: [], // same order/length as `containers` list\n\n    // references to objects in `containerGroups`, but only those that actually have\n    //  tabbable nodes in them\n    // NOTE: same order as `containers` and `containerGroups`, but __not necessarily__\n    //  the same length\n    tabbableGroups: [],\n\n    nodeFocusedBeforeActivation: null,\n    mostRecentlyFocusedNode: null,\n    active: false,\n    paused: false,\n\n    // timer ID for when delayInitialFocus is true and initial focus in this trap\n    //  has been delayed during activation\n    delayInitialFocusTimer: undefined,\n\n    // the most recent KeyboardEvent for the configured nav key (typically [SHIFT+]TAB), if any\n    recentNavEvent: undefined,\n  };\n\n  let trap; // eslint-disable-line prefer-const -- some private functions reference it, and its methods reference private functions, so we must declare here and define later\n\n  /**\n   * Gets a configuration option value.\n   * @param {Object|undefined} configOverrideOptions If true, and option is defined in this set,\n   *  value will be taken from this object. Otherwise, value will be taken from base configuration.\n   * @param {string} optionName Name of the option whose value is sought.\n   * @param {string|undefined} [configOptionName] Name of option to use __instead of__ `optionName`\n   *  IIF `configOverrideOptions` is not defined. Otherwise, `optionName` is used.\n   */\n  const getOption = (configOverrideOptions, optionName, configOptionName) => {\n    return configOverrideOptions &&\n      configOverrideOptions[optionName] !== undefined\n      ? configOverrideOptions[optionName]\n      : config[configOptionName || optionName];\n  };\n\n  /**\n   * Finds the index of the container that contains the element.\n   * @param {HTMLElement} element\n   * @param {Event} [event] If available, and `element` isn't directly found in any container,\n   *  the event's composed path is used to see if includes any known trap containers in the\n   *  case where the element is inside a Shadow DOM.\n   * @returns {number} Index of the container in either `state.containers` or\n   *  `state.containerGroups` (the order/length of these lists are the same); -1\n   *  if the element isn't found.\n   */\n  const findContainerIndex = function (element, event) {\n    const composedPath =\n      typeof event?.composedPath === 'function'\n        ? event.composedPath()\n        : undefined;\n    // NOTE: search `containerGroups` because it's possible a group contains no tabbable\n    //  nodes, but still contains focusable nodes (e.g. if they all have `tabindex=-1`)\n    //  and we still need to find the element in there\n    return state.containerGroups.findIndex(\n      ({ container, tabbableNodes }) =>\n        container.contains(element) ||\n        // fall back to explicit tabbable search which will take into consideration any\n        //  web components if the `tabbableOptions.getShadowRoot` option was used for\n        //  the trap, enabling shadow DOM support in tabbable (`Node.contains()` doesn't\n        //  look inside web components even if open)\n        composedPath?.includes(container) ||\n        tabbableNodes.find((node) => node === element)\n    );\n  };\n\n  /**\n   * Gets the node for the given option, which is expected to be an option that\n   *  can be either a DOM node, a string that is a selector to get a node, `false`\n   *  (if a node is explicitly NOT given), or a function that returns any of these\n   *  values.\n   * @param {string} optionName\n   * @param {Object} options\n   * @param {boolean} [options.hasFallback] True if the option could be a selector string\n   *  and the option allows for a fallback scenario in the case where the selector is\n   *  valid but does not match a node (i.e. the queried node doesn't exist in the DOM).\n   * @param {Array} [options.params] Params to pass to the option if it's a function.\n   * @returns {undefined | null | false | HTMLElement | SVGElement} Returns\n   *  `undefined` if the option is not specified; `null` if the option didn't resolve\n   *  to a node but `options.hasFallback=true`, `false` if the option resolved to `false`\n   *  (node explicitly not given); otherwise, the resolved DOM node.\n   * @throws {Error} If the option is set, not `false`, and is not, or does not\n   *  resolve to a node, unless the option is a selector string and `options.hasFallback=true`.\n   */\n  const getNodeForOption = function (\n    optionName,\n    { hasFallback = false, params = [] } = {}\n  ) {\n    let optionValue = config[optionName];\n\n    if (typeof optionValue === 'function') {\n      optionValue = optionValue(...params);\n    }\n\n    if (optionValue === true) {\n      optionValue = undefined; // use default value\n    }\n\n    if (!optionValue) {\n      if (optionValue === undefined || optionValue === false) {\n        return optionValue;\n      }\n      // else, empty string (invalid), null (invalid), 0 (invalid)\n\n      throw new Error(\n        `\\`${optionName}\\` was specified but was not a node, or did not return a node`\n      );\n    }\n\n    let node = optionValue; // could be HTMLElement, SVGElement, or non-empty string at this point\n\n    if (typeof optionValue === 'string') {\n      try {\n        node = doc.querySelector(optionValue); // resolve to node, or null if fails\n      } catch (err) {\n        throw new Error(\n          `\\`${optionName}\\` appears to be an invalid selector; error=\"${err.message}\"`\n        );\n      }\n\n      if (!node) {\n        if (!hasFallback) {\n          throw new Error(\n            `\\`${optionName}\\` as selector refers to no known node`\n          );\n        }\n        // else, `node` MUST be `null` because that's what `Document.querySelector()` returns\n        //  if the selector is valid but doesn't match anything\n      }\n    }\n\n    return node;\n  };\n\n  const getInitialFocusNode = function () {\n    let node = getNodeForOption('initialFocus', { hasFallback: true });\n\n    // false explicitly indicates we want no initialFocus at all\n    if (node === false) {\n      return false;\n    }\n\n    if (\n      node === undefined ||\n      (node && !isFocusable(node, config.tabbableOptions))\n    ) {\n      // option not specified nor focusable: use fallback options\n      if (findContainerIndex(doc.activeElement) >= 0) {\n        node = doc.activeElement;\n      } else {\n        const firstTabbableGroup = state.tabbableGroups[0];\n        const firstTabbableNode =\n          firstTabbableGroup && firstTabbableGroup.firstTabbableNode;\n\n        // NOTE: `fallbackFocus` option function cannot return `false` (not supported)\n        node = firstTabbableNode || getNodeForOption('fallbackFocus');\n      }\n    } else if (node === null) {\n      // option is a VALID selector string that doesn't yield a node: use the `fallbackFocus`\n      //  option instead of the default behavior when the option isn't specified at all\n      node = getNodeForOption('fallbackFocus');\n    }\n\n    if (!node) {\n      throw new Error(\n        'Your focus-trap needs to have at least one focusable element'\n      );\n    }\n\n    return node;\n  };\n\n  const updateTabbableNodes = function () {\n    state.containerGroups = state.containers.map((container) => {\n      const tabbableNodes = tabbable(container, config.tabbableOptions);\n\n      // NOTE: if we have tabbable nodes, we must have focusable nodes; focusable nodes\n      //  are a superset of tabbable nodes since nodes with negative `tabindex` attributes\n      //  are focusable but not tabbable\n      const focusableNodes = focusable(container, config.tabbableOptions);\n\n      const firstTabbableNode =\n        tabbableNodes.length > 0 ? tabbableNodes[0] : undefined;\n      const lastTabbableNode =\n        tabbableNodes.length > 0\n          ? tabbableNodes[tabbableNodes.length - 1]\n          : undefined;\n\n      const firstDomTabbableNode = focusableNodes.find((node) =>\n        isTabbable(node)\n      );\n      const lastDomTabbableNode = focusableNodes\n        .slice()\n        .reverse()\n        .find((node) => isTabbable(node));\n\n      const posTabIndexesFound = !!tabbableNodes.find(\n        (node) => getTabIndex(node) > 0\n      );\n\n      return {\n        container,\n        tabbableNodes,\n        focusableNodes,\n\n        /** True if at least one node with positive `tabindex` was found in this container. */\n        posTabIndexesFound,\n\n        /** First tabbable node in container, __tabindex__ order; `undefined` if none. */\n        firstTabbableNode,\n        /** Last tabbable node in container, __tabindex__ order; `undefined` if none. */\n        lastTabbableNode,\n\n        // NOTE: DOM order is NOT NECESSARILY \"document position\" order, but figuring that out\n        //  would require more than just https://developer.mozilla.org/en-US/docs/Web/API/Node/compareDocumentPosition\n        //  because that API doesn't work with Shadow DOM as well as it should (@see\n        //  https://github.com/whatwg/dom/issues/320) and since this first/last is only needed, so far,\n        //  to address an edge case related to positive tabindex support, this seems like a much easier,\n        //  \"close enough most of the time\" alternative for positive tabindexes which should generally\n        //  be avoided anyway...\n        /** First tabbable node in container, __DOM__ order; `undefined` if none. */\n        firstDomTabbableNode,\n        /** Last tabbable node in container, __DOM__ order; `undefined` if none. */\n        lastDomTabbableNode,\n\n        /**\n         * Finds the __tabbable__ node that follows the given node in the specified direction,\n         *  in this container, if any.\n         * @param {HTMLElement} node\n         * @param {boolean} [forward] True if going in forward tab order; false if going\n         *  in reverse.\n         * @returns {HTMLElement|undefined} The next tabbable node, if any.\n         */\n        nextTabbableNode(node, forward = true) {\n          const nodeIdx = tabbableNodes.indexOf(node);\n          if (nodeIdx < 0) {\n            // either not tabbable nor focusable, or was focused but not tabbable (negative tabindex):\n            //  since `node` should at least have been focusable, we assume that's the case and mimic\n            //  what browsers do, which is set focus to the next node in __document position order__,\n            //  regardless of positive tabindexes, if any -- and for reasons explained in the NOTE\n            //  above related to `firstDomTabbable` and `lastDomTabbable` properties, we fall back to\n            //  basic DOM order\n            if (forward) {\n              return focusableNodes\n                .slice(focusableNodes.indexOf(node) + 1)\n                .find((el) => isTabbable(el));\n            }\n\n            return focusableNodes\n              .slice(0, focusableNodes.indexOf(node))\n              .reverse()\n              .find((el) => isTabbable(el));\n          }\n\n          return tabbableNodes[nodeIdx + (forward ? 1 : -1)];\n        },\n      };\n    });\n\n    state.tabbableGroups = state.containerGroups.filter(\n      (group) => group.tabbableNodes.length > 0\n    );\n\n    // throw if no groups have tabbable nodes and we don't have a fallback focus node either\n    if (\n      state.tabbableGroups.length <= 0 &&\n      !getNodeForOption('fallbackFocus') // returning false not supported for this option\n    ) {\n      throw new Error(\n        'Your focus-trap must have at least one container with at least one tabbable node in it at all times'\n      );\n    }\n\n    // NOTE: Positive tabindexes are only properly supported in single-container traps because\n    //  doing it across multiple containers where tabindexes could be all over the place\n    //  would require Tabbable to support multiple containers, would require additional\n    //  specialized Shadow DOM support, and would require Tabbable's multi-container support\n    //  to look at those containers in document position order rather than user-provided\n    //  order (as they are treated in Focus-trap, for legacy reasons). See discussion on\n    //  https://github.com/focus-trap/focus-trap/issues/375 for more details.\n    if (\n      state.containerGroups.find((g) => g.posTabIndexesFound) &&\n      state.containerGroups.length > 1\n    ) {\n      throw new Error(\n        \"At least one node with a positive tabindex was found in one of your focus-trap's multiple containers. Positive tabindexes are only supported in single-container focus-traps.\"\n      );\n    }\n  };\n\n  /**\n   * Gets the current activeElement. If it's a web-component and has open shadow-root\n   * it will recursively search inside shadow roots for the \"true\" activeElement.\n   *\n   * @param {Document | ShadowRoot} el\n   *\n   * @returns {HTMLElement} The element that currently has the focus\n   **/\n  const getActiveElement = function (el) {\n    const activeElement = el.activeElement;\n\n    if (!activeElement) {\n      return;\n    }\n\n    if (\n      activeElement.shadowRoot &&\n      activeElement.shadowRoot.activeElement !== null\n    ) {\n      return getActiveElement(activeElement.shadowRoot);\n    }\n\n    return activeElement;\n  };\n\n  const tryFocus = function (node) {\n    if (node === false) {\n      return;\n    }\n\n    if (node === getActiveElement(document)) {\n      return;\n    }\n\n    if (!node || !node.focus) {\n      tryFocus(getInitialFocusNode());\n      return;\n    }\n\n    node.focus({ preventScroll: !!config.preventScroll });\n    // NOTE: focus() API does not trigger focusIn event so set MRU node manually\n    state.mostRecentlyFocusedNode = node;\n\n    if (isSelectableInput(node)) {\n      node.select();\n    }\n  };\n\n  const getReturnFocusNode = function (previousActiveElement) {\n    const node = getNodeForOption('setReturnFocus', {\n      params: [previousActiveElement],\n    });\n    return node ? node : node === false ? false : previousActiveElement;\n  };\n\n  /**\n   * Finds the next node (in either direction) where focus should move according to a\n   *  keyboard focus-in event.\n   * @param {Object} params\n   * @param {Node} [params.target] Known target __from which__ to navigate, if any.\n   * @param {KeyboardEvent|FocusEvent} [params.event] Event to use if `target` isn't known (event\n   *  will be used to determine the `target`). Ignored if `target` is specified.\n   * @param {boolean} [params.isBackward] True if focus should move backward.\n   * @returns {Node|undefined} The next node, or `undefined` if a next node couldn't be\n   *  determined given the current state of the trap.\n   */\n  const findNextNavNode = function ({ target, event, isBackward = false }) {\n    target = target || getActualTarget(event);\n    updateTabbableNodes();\n\n    let destinationNode = null;\n\n    if (state.tabbableGroups.length > 0) {\n      // make sure the target is actually contained in a group\n      // NOTE: the target may also be the container itself if it's focusable\n      //  with tabIndex='-1' and was given initial focus\n      const containerIndex = findContainerIndex(target, event);\n      const containerGroup =\n        containerIndex >= 0 ? state.containerGroups[containerIndex] : undefined;\n\n      if (containerIndex < 0) {\n        // target not found in any group: quite possible focus has escaped the trap,\n        //  so bring it back into...\n        if (isBackward) {\n          // ...the last node in the last group\n          destinationNode =\n            state.tabbableGroups[state.tabbableGroups.length - 1]\n              .lastTabbableNode;\n        } else {\n          // ...the first node in the first group\n          destinationNode = state.tabbableGroups[0].firstTabbableNode;\n        }\n      } else if (isBackward) {\n        // REVERSE\n\n        // is the target the first tabbable node in a group?\n        let startOfGroupIndex = state.tabbableGroups.findIndex(\n          ({ firstTabbableNode }) => target === firstTabbableNode\n        );\n\n        if (\n          startOfGroupIndex < 0 &&\n          (containerGroup.container === target ||\n            (isFocusable(target, config.tabbableOptions) &&\n              !isTabbable(target, config.tabbableOptions) &&\n              !containerGroup.nextTabbableNode(target, false)))\n        ) {\n          // an exception case where the target is either the container itself, or\n          //  a non-tabbable node that was given focus (i.e. tabindex is negative\n          //  and user clicked on it or node was programmatically given focus)\n          //  and is not followed by any other tabbable node, in which\n          //  case, we should handle shift+tab as if focus were on the container's\n          //  first tabbable node, and go to the last tabbable node of the LAST group\n          startOfGroupIndex = containerIndex;\n        }\n\n        if (startOfGroupIndex >= 0) {\n          // YES: then shift+tab should go to the last tabbable node in the\n          //  previous group (and wrap around to the last tabbable node of\n          //  the LAST group if it's the first tabbable node of the FIRST group)\n          const destinationGroupIndex =\n            startOfGroupIndex === 0\n              ? state.tabbableGroups.length - 1\n              : startOfGroupIndex - 1;\n\n          const destinationGroup = state.tabbableGroups[destinationGroupIndex];\n\n          destinationNode =\n            getTabIndex(target) >= 0\n              ? destinationGroup.lastTabbableNode\n              : destinationGroup.lastDomTabbableNode;\n        } else if (!isTabEvent(event)) {\n          // user must have customized the nav keys so we have to move focus manually _within_\n          //  the active group: do this based on the order determined by tabbable()\n          destinationNode = containerGroup.nextTabbableNode(target, false);\n        }\n      } else {\n        // FORWARD\n\n        // is the target the last tabbable node in a group?\n        let lastOfGroupIndex = state.tabbableGroups.findIndex(\n          ({ lastTabbableNode }) => target === lastTabbableNode\n        );\n\n        if (\n          lastOfGroupIndex < 0 &&\n          (containerGroup.container === target ||\n            (isFocusable(target, config.tabbableOptions) &&\n              !isTabbable(target, config.tabbableOptions) &&\n              !containerGroup.nextTabbableNode(target)))\n        ) {\n          // an exception case where the target is the container itself, or\n          //  a non-tabbable node that was given focus (i.e. tabindex is negative\n          //  and user clicked on it or node was programmatically given focus)\n          //  and is not followed by any other tabbable node, in which\n          //  case, we should handle tab as if focus were on the container's\n          //  last tabbable node, and go to the first tabbable node of the FIRST group\n          lastOfGroupIndex = containerIndex;\n        }\n\n        if (lastOfGroupIndex >= 0) {\n          // YES: then tab should go to the first tabbable node in the next\n          //  group (and wrap around to the first tabbable node of the FIRST\n          //  group if it's the last tabbable node of the LAST group)\n          const destinationGroupIndex =\n            lastOfGroupIndex === state.tabbableGroups.length - 1\n              ? 0\n              : lastOfGroupIndex + 1;\n\n          const destinationGroup = state.tabbableGroups[destinationGroupIndex];\n\n          destinationNode =\n            getTabIndex(target) >= 0\n              ? destinationGroup.firstTabbableNode\n              : destinationGroup.firstDomTabbableNode;\n        } else if (!isTabEvent(event)) {\n          // user must have customized the nav keys so we have to move focus manually _within_\n          //  the active group: do this based on the order determined by tabbable()\n          destinationNode = containerGroup.nextTabbableNode(target);\n        }\n      }\n    } else {\n      // no groups available\n      // NOTE: the fallbackFocus option does not support returning false to opt-out\n      destinationNode = getNodeForOption('fallbackFocus');\n    }\n\n    return destinationNode;\n  };\n\n  // This needs to be done on mousedown and touchstart instead of click\n  // so that it precedes the focus event.\n  const checkPointerDown = function (e) {\n    const target = getActualTarget(e);\n\n    if (findContainerIndex(target, e) >= 0) {\n      // allow the click since it ocurred inside the trap\n      return;\n    }\n\n    if (valueOrHandler(config.clickOutsideDeactivates, e)) {\n      // immediately deactivate the trap\n      trap.deactivate({\n        // NOTE: by setting `returnFocus: false`, deactivate() will do nothing,\n        //  which will result in the outside click setting focus to the node\n        //  that was clicked (and if not focusable, to \"nothing\"); by setting\n        //  `returnFocus: true`, we'll attempt to re-focus the node originally-focused\n        //  on activation (or the configured `setReturnFocus` node), whether the\n        //  outside click was on a focusable node or not\n        returnFocus: config.returnFocusOnDeactivate,\n      });\n      return;\n    }\n\n    // This is needed for mobile devices.\n    // (If we'll only let `click` events through,\n    // then on mobile they will be blocked anyways if `touchstart` is blocked.)\n    if (valueOrHandler(config.allowOutsideClick, e)) {\n      // allow the click outside the trap to take place\n      return;\n    }\n\n    // otherwise, prevent the click\n    e.preventDefault();\n  };\n\n  // In case focus escapes the trap for some strange reason, pull it back in.\n  // NOTE: the focusIn event is NOT cancelable, so if focus escapes, it may cause unexpected\n  //  scrolling if the node that got focused was out of view; there's nothing we can do to\n  //  prevent that from happening by the time we discover that focus escaped\n  const checkFocusIn = function (event) {\n    const target = getActualTarget(event);\n    const targetContained = findContainerIndex(target, event) >= 0;\n\n    // In Firefox when you Tab out of an iframe the Document is briefly focused.\n    if (targetContained || target instanceof Document) {\n      if (targetContained) {\n        state.mostRecentlyFocusedNode = target;\n      }\n    } else {\n      // escaped! pull it back in to where it just left\n      event.stopImmediatePropagation();\n\n      // focus will escape if the MRU node had a positive tab index and user tried to nav forward;\n      //  it will also escape if the MRU node had a 0 tab index and user tried to nav backward\n      //  toward a node with a positive tab index\n      let nextNode; // next node to focus, if we find one\n      let navAcrossContainers = true;\n      if (state.mostRecentlyFocusedNode) {\n        if (getTabIndex(state.mostRecentlyFocusedNode) > 0) {\n          // MRU container index must be >=0 otherwise we wouldn't have it as an MRU node...\n          const mruContainerIdx = findContainerIndex(\n            state.mostRecentlyFocusedNode\n          );\n          // there MAY not be any tabbable nodes in the container if there are at least 2 containers\n          //  and the MRU node is focusable but not tabbable (focus-trap requires at least 1 container\n          //  with at least one tabbable node in order to function, so this could be the other container\n          //  with nothing tabbable in it)\n          const { tabbableNodes } = state.containerGroups[mruContainerIdx];\n          if (tabbableNodes.length > 0) {\n            // MRU tab index MAY not be found if the MRU node is focusable but not tabbable\n            const mruTabIdx = tabbableNodes.findIndex(\n              (node) => node === state.mostRecentlyFocusedNode\n            );\n            if (mruTabIdx >= 0) {\n              if (config.isKeyForward(state.recentNavEvent)) {\n                if (mruTabIdx + 1 < tabbableNodes.length) {\n                  nextNode = tabbableNodes[mruTabIdx + 1];\n                  navAcrossContainers = false;\n                }\n                // else, don't wrap within the container as focus should move to next/previous\n                //  container\n              } else {\n                if (mruTabIdx - 1 >= 0) {\n                  nextNode = tabbableNodes[mruTabIdx - 1];\n                  navAcrossContainers = false;\n                }\n                // else, don't wrap within the container as focus should move to next/previous\n                //  container\n              }\n              // else, don't find in container order without considering direction too\n            }\n          }\n          // else, no tabbable nodes in that container (which means we must have at least one other\n          //  container with at least one tabbable node in it, otherwise focus-trap would've thrown\n          //  an error the last time updateTabbableNodes() was run): find next node among all known\n          //  containers\n        } else {\n          // check to see if there's at least one tabbable node with a positive tab index inside\n          //  the trap because focus seems to escape when navigating backward from a tabbable node\n          //  with tabindex=0 when this is the case (instead of wrapping to the tabbable node with\n          //  the greatest positive tab index like it should)\n          if (\n            !state.containerGroups.some((g) =>\n              g.tabbableNodes.some((n) => getTabIndex(n) > 0)\n            )\n          ) {\n            // no containers with tabbable nodes with positive tab indexes which means the focus\n            //  escaped for some other reason and we should just execute the fallback to the\n            //  MRU node or initial focus node, if any\n            navAcrossContainers = false;\n          }\n        }\n      } else {\n        // no MRU node means we're likely in some initial condition when the trap has just\n        //  been activated and initial focus hasn't been given yet, in which case we should\n        //  fall through to trying to focus the initial focus node, which is what should\n        //  happen below at this point in the logic\n        navAcrossContainers = false;\n      }\n\n      if (navAcrossContainers) {\n        nextNode = findNextNavNode({\n          // move FROM the MRU node, not event-related node (which will be the node that is\n          //  outside the trap causing the focus escape we're trying to fix)\n          target: state.mostRecentlyFocusedNode,\n          isBackward: config.isKeyBackward(state.recentNavEvent),\n        });\n      }\n\n      if (nextNode) {\n        tryFocus(nextNode);\n      } else {\n        tryFocus(state.mostRecentlyFocusedNode || getInitialFocusNode());\n      }\n    }\n\n    state.recentNavEvent = undefined; // clear\n  };\n\n  // Hijack key nav events on the first and last focusable nodes of the trap,\n  // in order to prevent focus from escaping. If it escapes for even a\n  // moment it can end up scrolling the page and causing confusion so we\n  // kind of need to capture the action at the keydown phase.\n  const checkKeyNav = function (event, isBackward = false) {\n    state.recentNavEvent = event;\n\n    const destinationNode = findNextNavNode({ event, isBackward });\n    if (destinationNode) {\n      if (isTabEvent(event)) {\n        // since tab natively moves focus, we wouldn't have a destination node unless we\n        //  were on the edge of a container and had to move to the next/previous edge, in\n        //  which case we want to prevent default to keep the browser from moving focus\n        //  to where it normally would\n        event.preventDefault();\n      }\n      tryFocus(destinationNode);\n    }\n    // else, let the browser take care of [shift+]tab and move the focus\n  };\n\n  const checkTabKey = function (event) {\n    if (config.isKeyForward(event) || config.isKeyBackward(event)) {\n      checkKeyNav(event, config.isKeyBackward(event));\n    }\n  };\n\n  // we use a different event phase for the Escape key to allow canceling the event and checking for this in escapeDeactivates\n  const checkEscapeKey = function (event) {\n    if (\n      isEscapeEvent(event) &&\n      valueOrHandler(config.escapeDeactivates, event) !== false\n    ) {\n      event.preventDefault();\n      trap.deactivate();\n    }\n  };\n\n  const checkClick = function (e) {\n    const target = getActualTarget(e);\n\n    if (findContainerIndex(target, e) >= 0) {\n      return;\n    }\n\n    if (valueOrHandler(config.clickOutsideDeactivates, e)) {\n      return;\n    }\n\n    if (valueOrHandler(config.allowOutsideClick, e)) {\n      return;\n    }\n\n    e.preventDefault();\n    e.stopImmediatePropagation();\n  };\n\n  //\n  // EVENT LISTENERS\n  //\n\n  const addListeners = function () {\n    if (!state.active) {\n      return;\n    }\n\n    // There can be only one listening focus trap at a time\n    activeFocusTraps.activateTrap(trapStack, trap);\n\n    // Delay ensures that the focused element doesn't capture the event\n    // that caused the focus trap activation.\n    state.delayInitialFocusTimer = config.delayInitialFocus\n      ? delay(function () {\n          tryFocus(getInitialFocusNode());\n        })\n      : tryFocus(getInitialFocusNode());\n\n    doc.addEventListener('focusin', checkFocusIn, true);\n    doc.addEventListener('mousedown', checkPointerDown, {\n      capture: true,\n      passive: false,\n    });\n    doc.addEventListener('touchstart', checkPointerDown, {\n      capture: true,\n      passive: false,\n    });\n    doc.addEventListener('click', checkClick, {\n      capture: true,\n      passive: false,\n    });\n    doc.addEventListener('keydown', checkTabKey, {\n      capture: true,\n      passive: false,\n    });\n    doc.addEventListener('keydown', checkEscapeKey);\n\n    return trap;\n  };\n\n  const removeListeners = function () {\n    if (!state.active) {\n      return;\n    }\n\n    doc.removeEventListener('focusin', checkFocusIn, true);\n    doc.removeEventListener('mousedown', checkPointerDown, true);\n    doc.removeEventListener('touchstart', checkPointerDown, true);\n    doc.removeEventListener('click', checkClick, true);\n    doc.removeEventListener('keydown', checkTabKey, true);\n    doc.removeEventListener('keydown', checkEscapeKey);\n\n    return trap;\n  };\n\n  //\n  // MUTATION OBSERVER\n  //\n\n  const checkDomRemoval = function (mutations) {\n    const isFocusedNodeRemoved = mutations.some(function (mutation) {\n      const removedNodes = Array.from(mutation.removedNodes);\n      return removedNodes.some(function (node) {\n        return node === state.mostRecentlyFocusedNode;\n      });\n    });\n\n    // If the currently focused is removed then browsers will move focus to the\n    // <body> element. If this happens, try to move focus back into the trap.\n    if (isFocusedNodeRemoved) {\n      tryFocus(getInitialFocusNode());\n    }\n  };\n\n  // Use MutationObserver - if supported - to detect if focused node is removed\n  // from the DOM.\n  const mutationObserver =\n    typeof window !== 'undefined' && 'MutationObserver' in window\n      ? new MutationObserver(checkDomRemoval)\n      : undefined;\n\n  const updateObservedNodes = function () {\n    if (!mutationObserver) {\n      return;\n    }\n\n    mutationObserver.disconnect();\n    if (state.active && !state.paused) {\n      state.containers.map(function (container) {\n        mutationObserver.observe(container, {\n          subtree: true,\n          childList: true,\n        });\n      });\n    }\n  };\n\n  //\n  // TRAP DEFINITION\n  //\n\n  trap = {\n    get active() {\n      return state.active;\n    },\n\n    get paused() {\n      return state.paused;\n    },\n\n    activate(activateOptions) {\n      if (state.active) {\n        return this;\n      }\n\n      const onActivate = getOption(activateOptions, 'onActivate');\n      const onPostActivate = getOption(activateOptions, 'onPostActivate');\n      const checkCanFocusTrap = getOption(activateOptions, 'checkCanFocusTrap');\n\n      if (!checkCanFocusTrap) {\n        updateTabbableNodes();\n      }\n\n      state.active = true;\n      state.paused = false;\n      state.nodeFocusedBeforeActivation = doc.activeElement;\n\n      onActivate?.();\n\n      const finishActivation = () => {\n        if (checkCanFocusTrap) {\n          updateTabbableNodes();\n        }\n        addListeners();\n        updateObservedNodes();\n        onPostActivate?.();\n      };\n\n      if (checkCanFocusTrap) {\n        checkCanFocusTrap(state.containers.concat()).then(\n          finishActivation,\n          finishActivation\n        );\n        return this;\n      }\n\n      finishActivation();\n      return this;\n    },\n\n    deactivate(deactivateOptions) {\n      if (!state.active) {\n        return this;\n      }\n\n      const options = {\n        onDeactivate: config.onDeactivate,\n        onPostDeactivate: config.onPostDeactivate,\n        checkCanReturnFocus: config.checkCanReturnFocus,\n        ...deactivateOptions,\n      };\n\n      clearTimeout(state.delayInitialFocusTimer); // noop if undefined\n      state.delayInitialFocusTimer = undefined;\n\n      removeListeners();\n      state.active = false;\n      state.paused = false;\n      updateObservedNodes();\n\n      activeFocusTraps.deactivateTrap(trapStack, trap);\n\n      const onDeactivate = getOption(options, 'onDeactivate');\n      const onPostDeactivate = getOption(options, 'onPostDeactivate');\n      const checkCanReturnFocus = getOption(options, 'checkCanReturnFocus');\n      const returnFocus = getOption(\n        options,\n        'returnFocus',\n        'returnFocusOnDeactivate'\n      );\n\n      onDeactivate?.();\n\n      const finishDeactivation = () => {\n        delay(() => {\n          if (returnFocus) {\n            tryFocus(getReturnFocusNode(state.nodeFocusedBeforeActivation));\n          }\n          onPostDeactivate?.();\n        });\n      };\n\n      if (returnFocus && checkCanReturnFocus) {\n        checkCanReturnFocus(\n          getReturnFocusNode(state.nodeFocusedBeforeActivation)\n        ).then(finishDeactivation, finishDeactivation);\n        return this;\n      }\n\n      finishDeactivation();\n      return this;\n    },\n\n    pause(pauseOptions) {\n      if (state.paused || !state.active) {\n        return this;\n      }\n\n      const onPause = getOption(pauseOptions, 'onPause');\n      const onPostPause = getOption(pauseOptions, 'onPostPause');\n\n      state.paused = true;\n      onPause?.();\n\n      removeListeners();\n      updateObservedNodes();\n\n      onPostPause?.();\n      return this;\n    },\n\n    unpause(unpauseOptions) {\n      if (!state.paused || !state.active) {\n        return this;\n      }\n\n      const onUnpause = getOption(unpauseOptions, 'onUnpause');\n      const onPostUnpause = getOption(unpauseOptions, 'onPostUnpause');\n\n      state.paused = false;\n      onUnpause?.();\n\n      updateTabbableNodes();\n      addListeners();\n      updateObservedNodes();\n\n      onPostUnpause?.();\n      return this;\n    },\n\n    updateContainerElements(containerElements) {\n      const elementsAsArray = [].concat(containerElements).filter(Boolean);\n\n      state.containers = elementsAsArray.map((element) =>\n        typeof element === 'string' ? doc.querySelector(element) : element\n      );\n\n      if (state.active) {\n        updateTabbableNodes();\n      }\n\n      updateObservedNodes();\n\n      return this;\n    },\n  };\n\n  // initialize container elements\n  trap.updateContainerElements(elements);\n\n  return trap;\n};\n\nexport { createFocusTrap };\n","export const keys: <T extends object>(o: T) => (keyof T)[] = Object.keys;\n","import type { FocusTrap as ElementFocusTrap, Options as FocusTrapOptions } from 'focus-trap';\nimport { createFocusTrap } from 'focus-trap';\nimport type { PropsWithChildren } from 'react';\nimport React from 'react';\n\nimport { keys } from './../ts-utils/keys.js';\n\nconst checkedProps = ['active', 'paused', 'tag', 'focusTrapOptions', '_createFocusTrap'];\n\ntype FocusTrapProps = {\n  active?: boolean;\n  tag: string;\n  paused?: boolean;\n  focusTrapOptions?: FocusTrapOptions;\n  _createFocusTrap: typeof createFocusTrap;\n};\n\nexport default class FocusTrap extends React.Component<PropsWithChildren<FocusTrapProps>> {\n  static defaultProps = {\n    active: true,\n    tag: 'div',\n    paused: false,\n    focusTrapOptions: {},\n    _createFocusTrap: createFocusTrap,\n  };\n\n  node!: HTMLElement;\n\n  focusTrap!: ElementFocusTrap;\n\n  componentDidMount() {\n    const options = this.getOptionsWithScopedInitialFocus();\n    this.focusTrap = this.props._createFocusTrap(this.node, options);\n    if (!this.node.firstElementChild?.hasAttribute('nofocus')) {\n      if (this.props.active) {\n        this.focusTrap.activate();\n      }\n      if (this.props.paused) {\n        this.focusTrap.pause();\n      }\n    }\n  }\n\n  getOptionsWithScopedInitialFocus(): FocusTrapOptions | undefined {\n    const options = this.props.focusTrapOptions;\n    // If no initialFocus specified, look for [data-autofocus] within the trap container\n    if (!options?.initialFocus) {\n      return {\n        ...options,\n        initialFocus: () => {\n          const autofocusElement = this.node.querySelector<HTMLElement>('[data-autofocus]');\n          return autofocusElement || undefined;\n        },\n      };\n    }\n    return options;\n  }\n\n  componentDidUpdate(prevProps: FocusTrapProps) {\n    if (prevProps.active && !this.props.active) {\n      this.focusTrap.deactivate();\n    } else if (!prevProps.active && this.props.active) {\n      this.focusTrap.activate();\n    }\n\n    if (prevProps.paused && !this.props.paused) {\n      this.focusTrap.unpause();\n    } else if (!prevProps.paused && this.props.paused) {\n      this.focusTrap.pause();\n    }\n  }\n\n  componentWillUnmount() {\n    this.focusTrap.deactivate();\n  }\n\n  setNode = (el: $TSFixMe) => (this.node = el);\n\n  render() {\n    const elementProps = keys(this.props)\n      .filter(\n        prop =>\n          Object.prototype.hasOwnProperty.call(this.props, prop) && !checkedProps.includes(prop)\n      )\n      .reduce(\n        (resultProps, prop) => ({\n          ...resultProps,\n          [prop]: this.props[prop],\n        }),\n        {\n          ref: this.setNode,\n        }\n      );\n\n    return React.createElement(this.props.tag, elementProps, this.props.children);\n  }\n}\n","import type { Options as FocusTrapOptions } from 'focus-trap';\nimport type { KeyboardEventHandler, PropsWithChildren } from 'react';\nimport React, { Component } from 'react';\n\nimport FocusTrap from './focus-trap-react.js';\n\ntype FocusManagerProps = {\n  focusTrapOptions?: FocusTrapOptions;\n  onKeyDown?: KeyboardEventHandler;\n  jsdomMode?: boolean;\n  active?: boolean;\n  preventScroll?: boolean;\n};\n\nexport class FocusManager extends Component<PropsWithChildren<FocusManagerProps>> {\n  static defaultProps = {\n    focusTrapOptions: {\n      clickOutsideDeactivates: true,\n    },\n    jsdomMode: false,\n  };\n\n  id: string;\n\n  constructor(props: FocusManagerProps) {\n    super(props);\n    this.id = `fm_${Math.floor(Math.random() * 9999)}`;\n    this.onActivate = this.onActivate.bind(this);\n    this.onDeactivate = this.onDeactivate.bind(this);\n  }\n\n  onActivate() {}\n\n  onDeactivate() {}\n\n  render() {\n    const { children, focusTrapOptions, jsdomMode, preventScroll, ...rest } = this.props;\n    const options = {\n      ...focusTrapOptions,\n      onActivate: this.onActivate,\n      onDeactivate: this.onDeactivate,\n      clickOutsideDeactivates: true,\n    };\n    if (jsdomMode) {\n      return <div {...rest}>{children}</div>;\n    } else {\n      return (\n        <FocusTrap focusTrapOptions={{ ...options, preventScroll }} {...rest}>\n          {children}\n        </FocusTrap>\n      );\n    }\n  }\n}\n","export const isSSR = () => typeof window === 'undefined';\n","/* oxlint-disable no-console */\n\nimport { isSSR } from '../is-ssr.js';\n\nexport type DecodedInstance = {\n  instanceId: string;\n  appDefId: string;\n  string?: Date;\n  metaSiteId: string;\n  uid: string;\n  siteOwnerId: string;\n};\n\nconst baseDecodedInstance = {\n  instanceId: '',\n  appDefId: '',\n  metaSiteId: '',\n  uid: '',\n  siteOwnerId: '',\n};\n\nfunction splitInstance(instance: string) {\n  console.assert(instance, 'instance is mandatory');\n\n  const splitted = instance.split('.');\n  console.assert(splitted.length >= 2, 'instance must contain data and signature separated by .');\n\n  const data = splitted.reduce(\n    (longest, current) => (current.length > longest.length ? current : longest),\n    ''\n  );\n\n  return data;\n}\n\nexport function parseInstance(instance?: string): DecodedInstance {\n  if (!instance) {\n    return baseDecodedInstance;\n  }\n\n  try {\n    const data = splitInstance(instance);\n    const bit64Data = isSSR()\n      ? // Accessing 'Buffer' via 'global' prevents webpack polyfilling it for web environment\n        global.Buffer.from(data, 'base64').toString('utf8')\n      : atob(data);\n    const decodedInstance = JSON.parse(bit64Data);\n\n    if (decodedInstance.data) {\n      return {\n        ...baseDecodedInstance,\n        ...JSON.parse(decodedInstance.data).instance,\n      };\n    }\n\n    return {\n      ...baseDecodedInstance,\n      ...decodedInstance,\n    };\n  } catch {\n    return baseDecodedInstance;\n  }\n}\n","import React from 'react';\n\nimport { DevContext } from './../../ricos-context/index.js';\nimport { logInvariant } from './../log-invariant.js';\nimport { createContext, useContext } from './../use-context-selector.js';\n\nimport { type DecodedInstance, parseInstance } from './parse-instance.js';\nimport { type GetWixClientPromise, useGetWixClientPromise } from './use-get-wix-client-promise.js';\n\nexport type WixInstanceState = Partial<DecodedInstance> & {\n  getWixClientPromise: GetWixClientPromise;\n};\n\nexport const WixInstanceContext = createContext<WixInstanceState>({} as WixInstanceState);\n\nexport const WixInstanceContextProvider: React.FC<{\n  getWixClientPromise?: GetWixClientPromise;\n  children: React.ReactNode;\n  jsdomMode: boolean | undefined;\n  instance: string | undefined;\n}> = ({ children, getWixClientPromise: existingGetWixClientPromise, jsdomMode, instance }) => {\n  const { getWixClientPromise } = useGetWixClientPromise('', existingGetWixClientPromise);\n  const [state, setState] = React.useState<WixInstanceState>(() => ({\n    ...(instance ? parseInstance(instance) : {}),\n    getWixClientPromise,\n  }));\n\n  const devContext = React.useContext(DevContext);\n\n  React.useEffect(() => {\n    if (jsdomMode) {\n      if (devContext.decodedInstance) {\n        setState(prev => ({\n          ...prev,\n          ...devContext.decodedInstance,\n        }));\n      }\n      return;\n    }\n\n    const decode = async () => {\n      try {\n        if (instance) {\n          return;\n        }\n\n        const wixClient = await getWixClientPromise();\n        const { headers } = await wixClient.auth.getAuthHeaders();\n        const authorizationHeader = headers.Authorization;\n\n        setState(prev => ({\n          ...prev,\n          ...(authorizationHeader ? parseInstance(authorizationHeader) : {}),\n        }));\n      } catch (error) {\n        logInvariant(new Error(`Failed to decode instance: ${error}`));\n        setState(prev => ({ ...prev, getWixClientPromise }));\n      }\n    };\n\n    decode();\n  }, [instance, getWixClientPromise, jsdomMode, devContext.decodedInstance]);\n\n  return <WixInstanceContext.Provider value={state}>{children}</WixInstanceContext.Provider>;\n};\n\nexport type WixInstanceService = () => WixInstanceState;\n\nexport const useWixInstanceService = (): WixInstanceService => {\n  const context = useContext(WixInstanceContext);\n  if (!context) {\n    throw new Error('useWixInstanceService must be used within a WixInstanceContextProvider');\n  }\n  const serviceRef = React.useRef<WixInstanceState>(context);\n  serviceRef.current = context;\n  return React.useCallback(() => serviceRef.current, []);\n};\n","var styleDataHash = '3c61703b';  \nexport const injectCss = (() => {\n  var css = `.VaqkL,.aMNDb{cursor:pointer;height:14px;margin:0;padding:0;pointer-events:auto;position:relative;width:100%}.VaqkL:not(.YVPkJ):hover .XHUjm,.aMNDb:not(.YVPkJ):hover .XHUjm{opacity:1}.YVPkJ.VaqkL,.aMNDb.YVPkJ{cursor:auto;height:0;pointer-events:none}.VaqkL{cursor:none;pointer-events:none}.nOsLr .XHUjm{opacity:1}.XHUjm{height:2px;opacity:0;top:50%;transform:translateY(-50%);transition:opacity .2s ease;z-index:1000000}.XHUjm,.XHUjm:after,.XHUjm:before{background-color:var(--ricos-action-color,#116dff);position:absolute;width:100%}.XHUjm:after,.XHUjm:before{content:\"\";height:3px;left:0;opacity:.3}.XHUjm:before{top:-3px}.XHUjm:after{bottom:-3px}.HN7I1{background:var(--wds-tooltip-background-fill,var(--wsr-color-D10,#000624));border-radius:var(--wds-tooltip-border-radius,8px);box-shadow:var(--wds-shadow-surface-overlay-dark,var(--wsr-shadow30,0 6px 6px 0 rgba(22,45,61,.06),0 0 18px 0 rgba(22,45,61,.12)));color:var(--wds-tooltip-text-fill,var(--wsr-color-D80,#fff));font-family:var(--wds-font-family-default,var(--wsr-font-family,Madefor,\"Helvetica Neue\",Helvetica,Arial,\"\\\\30E1\\\\30A4\\\\30EA\\\\30AA\",\"meiryo\",\"\\\\30D2\\\\30E9\\\\30AE\\\\30CE\\\\89D2\\\\30B4 pro w3\",\"hiragino kaku gothic pro\",sans-serif));font-size:var(--wds-font-size-body-tiny,var(--wsr-text-font-size-tiny,12px));font-weight:var(--wds-font-weight-regular,var(--wsr-font-weight-regular,400));letter-spacing:var(--wds-font-letter-spacing-0,unset);line-height:var(--wds-font-line-height-body-tiny,var(--wsr-text-line-height-tiny,15px));padding:var(--wds-tooltip-padding-vertical-small,8px) var(--wds-tooltip-padding-horizontal-small,12px) var(--wds-tooltip-padding-vertical-small,7px);position:absolute;word-wrap:break-word;border:none;max-width:180px;opacity:0;pointer-events:none;transform:translateX(-50%) translateY(-100%) scale(.8);transition:opacity .15s ease-out,transform .15s ease-out;word-break:break-word;z-index:1000000}._9Ukeg{display:none}@supports not (contain:inline-size){@media only screen and (max-width:480px){._9Ukeg{display:block}}}@container (width < 480px){._9Ukeg{display:block}}.j2-If{margin-top:14px}`;\n  var isTest = typeof process !== 'undefined' && process.env && process.env['NODE_ENV'] === 'test';\n\n  if (isTest || !css || typeof document === 'undefined') { return; }\n  if (document.querySelector('style[data-ricos-style-hash=\"' + styleDataHash + '\"]')) { return; }\n\n  var head = document.head || document.getElementsByTagName('head')[0];\n  var style = document.createElement('style');\n  style.setAttribute('data-ricos-style-hash', styleDataHash);\n  style.type = 'text/css';\n\n  head.appendChild(style);\n\n  if (style.styleSheet) {\n    style.styleSheet.cssText = css;\n  } else {\n    style.appendChild(document.createTextNode(css));\n  }\n});\n\ninjectCss();\n\n\n\nexport default {\n  \"gapSpacerContainer\": \"aMNDb\",\n  \"gapSpacerViewer\": \"VaqkL\",\n  \"collapsed\": \"YVPkJ\",\n  \"gapSpacerLine\": \"XHUjm\",\n  \"gapSpacerFocused\": \"nOsLr\",\n  \"gapSpacerTooltip\": \"HN7I1\",\n  \"betweenFloated\": \"_9Ukeg\",\n  \"withTopMargin\": \"j2-If\"\n};","export const MAX_COLUMNS = 12;\nexport const MIN_COL_SPAN = 1;\nexport const MAX_CELLS = 6;\nexport const MAX_VERTICAL_MARGIN = 250;\n\nexport const LAYOUT_DEFAULTS = {\n  backgroundColor: null,\n  backgroundImage: null,\n  borderColor: null,\n  borderWidth: 0,\n  borderRadius: 0,\n  backdropColor: null,\n  backdropImage: null,\n  backdropPaddingTop: 0,\n  backdropPaddingBottom: 0,\n  gap: 20,\n  cellPadding: [18, 0, 18, 0],\n  cellVerticalAlignment: 'TOP',\n  responsivenessBehaviour: 'STACK',\n  responsivenessBreakpoint: 440,\n  designTarget: 'LAYOUT',\n  banner: null,\n} as const;\n\nexport const normalizePadding = (padding: number[] | undefined, defaults: number[]) => {\n  if (!padding || padding.length === 0) {\n    return defaults;\n  }\n\n  if (padding.length === 1) {\n    return [padding[0], padding[0], padding[0], padding[0]];\n  }\n\n  if (padding.length === 2) {\n    return [padding[0], padding[1], padding[0], padding[1]];\n  }\n\n  if (padding.length === 3) {\n    return [padding[0], padding[1], padding[2], padding[1]];\n  }\n\n  return padding;\n};\n","import { MAX_COLUMNS, MIN_COL_SPAN } from './../../ricos-common-plugins/layout/shared-with-viewer.js';\n\nexport const getNormalizedColSpans = (cellsColSpans: number[]): number[] => {\n  const totalColSpans = cellsColSpans.reduce((sum, colSpan) => sum + colSpan, 0);\n  const allCellsValid = cellsColSpans.every(colSpan => colSpan >= MIN_COL_SPAN);\n\n  if (totalColSpans === MAX_COLUMNS && allCellsValid) {\n    return cellsColSpans;\n  }\n\n  let remainingColumns = MAX_COLUMNS - totalColSpans;\n  const cellsWithoutColSpan = cellsColSpans.filter(colSpan => colSpan === 0);\n  const canUseColSpan =\n    totalColSpans <= MAX_COLUMNS && remainingColumns / cellsWithoutColSpan.length >= MIN_COL_SPAN;\n  const defaultColSpan = Math.floor(MAX_COLUMNS / cellsColSpans.length);\n\n  return cellsColSpans.map((oldColSpan, index) => {\n    let colSpan = defaultColSpan;\n    if (canUseColSpan) {\n      if (oldColSpan) {\n        colSpan = oldColSpan;\n      } else if (index === cellsColSpans.length - 1) {\n        colSpan = remainingColumns;\n      } else {\n        colSpan = defaultColSpan;\n        remainingColumns -= defaultColSpan;\n      }\n    }\n    return colSpan;\n  });\n};\n","export const MIN_LINE_HEIGHT = 0.8;\n\nexport const normalizeLineHeight = (lineHeight: string | number) => {\n  let unit = '';\n  if (\n    (typeof lineHeight === 'string' && lineHeight.match(/^\\d+(\\.\\d+)?$/)) ||\n    typeof lineHeight === 'number'\n  ) {\n    unit = 'em';\n  }\n  return `max(${MIN_LINE_HEIGHT}em, ${lineHeight}${unit})`;\n};\n","import { flow } from 'fp-ts-esm/function';\n\nimport type { Node } from './../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport { Node_Type } from './../../ricos-schema/legacy/wix/rich_content/v1/index.js';\n\nimport type { Extractor } from '../extractor-infra.js';\nimport { getExtractor } from '../extractor-infra.js';\n\nconst nodesAccessor = (node: Node) => (Array.isArray(node.nodes) ? node.nodes : []);\n\nconst getRootNode = (nodes: Node | Node[]): Node =>\n  Array.isArray(nodes)\n    ? {\n        id: 'root',\n        type: Node_Type.UNRECOGNIZED,\n        nodes,\n      }\n    : nodes;\n\nexport const extract: (nodes: Node | Node[]) => Extractor<Node> = flow(\n  getRootNode,\n  getExtractor<Node>(nodesAccessor)\n);\n","export { extract } from '../RicosContentAPI/extract.js';\n","export const WIX_MEDIA_BASE_URL = 'https://static.wixstatic.com/';\nexport const WIX_VIDEO_BASE_URL = 'https://video.wixstatic.com/';\nexport const WIX_SHAPES_BASE_URL = 'https://static.wixstatic.com/shapes/';\n","export const isPageUrl = (url: string): boolean => !!url && url[0] === '/' && url[1] !== '/';\n","export const getBasedUrl = (url: string, baseUrl: string) => `${baseUrl.replace(/\\/+$/, '')}${url}`;\n","export const isMaliciousUrl = (url: string) => url.toLowerCase().trim().startsWith('data:');\n","import { isValidTelUrl } from './is-valid-te-url.js';\nimport { linkify } from './linkify/linkify.js';\n\nexport const normalizeHref = (value: string): string | undefined => {\n  if (isValidTelUrl(value)) {\n    return value;\n  }\n\n  if (value.startsWith('mailto:')) {\n    const [email, ...queryParts] = value.substring(7).split('?');\n    const queryString = queryParts.join('?');\n    const sanitizedQuery = queryString ? `?${new URLSearchParams(queryString).toString()}` : '';\n    return `mailto:${email}${sanitizedQuery}`;\n  }\n\n  const [urlValue, anchor] = value.split('#');\n  const normalizedUrl = urlValue && linkify.match(urlValue) && linkify.match(urlValue)?.[0]?.url;\n\n  if (normalizedUrl === null) {\n    return undefined;\n  }\n\n  return anchor ? `${normalizedUrl}#${anchor}` : normalizedUrl;\n};\n","import { isMaliciousUrl } from './../link/is-malicious-url.js';\nimport { normalizeHref } from './../link/normalize-href.js';\n\nimport { getBasedUrl } from './get-based-url.js';\nimport { isPageUrl } from './is-page-url.js';\n\nexport const getHrefUrl = (url: string, baseUrl?: string): string | undefined =>\n  typeof url !== 'string'\n    ? undefined\n    : isMaliciousUrl(url)\n      ? undefined\n      : isPageUrl(url)\n        ? getBasedUrl(url, baseUrl || '')\n        : normalizeHref(url);\n","import { getHrefUrl } from './../url/get-href-url.js';\n\nimport type { LinkOldOrNew } from './types.js';\n\nexport const getLinkHrefUrl = (link: LinkOldOrNew, baseUrl?: string): string | undefined =>\n  typeof link.url === 'string' && link.url\n    ? getHrefUrl(link.url, baseUrl)\n    : typeof link.anchor === 'string'\n      ? `#viewer-${link.anchor}`\n      : undefined;\n","/* oxlint-disable camelcase */\nimport { GalleryOptions_Layout_Type as GALLERY_LAYOUT } from './../ricos-schema/legacy/wix/rich_content/v1/index.js';\n\nexport const GALLERY_ITEMS_TYPES = Object.freeze({\n  IMAGE: 'image',\n  VIDEO: 'video',\n});\n\nexport const DEFAULTS = Object.freeze({\n  items: [],\n  options: {\n    layout: {\n      type: GALLERY_LAYOUT.GRID,\n      orientation: 'COLUMNS',\n      horizontalScroll: true,\n      numberOfColumns: 3,\n    },\n    item: {\n      crop: 'FILL',\n      ratio: 1,\n    },\n  },\n  containerData: {\n    alignment: 'CENTER',\n    width: {\n      size: 'CONTENT',\n    },\n  },\n});\n\nconst LAYOUT_FIXED_STYLES = {\n  [GALLERY_LAYOUT.COLLAGE]: {\n    galleryType: 'Columns',\n    imageMargin: 5,\n  },\n  [GALLERY_LAYOUT.MASONRY]: {\n    imageMargin: 5,\n    isVertical: false,\n    gridStyle: 0,\n  },\n  [GALLERY_LAYOUT.GRID]: {\n    imageResize: false,\n    gridStyle: 1,\n    galleryImageRatio: 2,\n    imageMargin: 5,\n  },\n  [GALLERY_LAYOUT.THUMBNAIL]: {\n    arrowsSize: 23,\n    thumbnailSize: 120,\n    floatingImages: 0,\n  },\n  [GALLERY_LAYOUT.SLIDER]: {\n    arrowsSize: 23,\n    imageMargin: 5,\n  },\n  [GALLERY_LAYOUT.SLIDESHOW]: {\n    arrowsSize: 23,\n    floatingImages: 0,\n    slideshowInfoSize: 0,\n  },\n  [GALLERY_LAYOUT.PANORAMA]: {\n    hasThumbnails: false,\n    imageMargin: 5,\n  },\n  [GALLERY_LAYOUT.COLUMN]: {\n    arrowsSize: 23,\n    hasThumbnails: false,\n    imageMargin: 5,\n  },\n  [GALLERY_LAYOUT.FULLSIZE]: {\n    arrowsSize: 23,\n    floatingImages: 0,\n    slideshowInfoSize: 0,\n  },\n  [GALLERY_LAYOUT.MAGIC]: {\n    imageResize: false,\n    gridStyle: 1,\n    galleryImageRatio: 2,\n    imageMargin: 5,\n  },\n  [GALLERY_LAYOUT.UNRECOGNIZED]: {\n    imageResize: false,\n    gridStyle: 1,\n    galleryImageRatio: 2,\n    imageMargin: 5,\n  },\n};\n\nconst FIXED_STYLES = {\n  gallerySizeType: 'px',\n  enableInfiniteScroll: true,\n  titlePlacement: 'SHOW_ON_HOVER',\n  hoveringBehaviour: 'NO_CHANGE',\n  alwaysShowHover: true,\n  allowHover: true,\n  itemClick: 'link',\n  fullscreen: false,\n  loveButton: false,\n  allowSocial: false,\n  allowDownload: false,\n  mobileSwipeAnimation: 'NO_EFFECT',\n  gotStyleParams: true,\n  videoPlay: 'CLICK',\n  videoLoop: false,\n  videoSound: true,\n  hidePlay: false,\n  showVideoPlayButton: true,\n  showVideoControls: true,\n};\n\nexport const getFixedStyles = (layout: GALLERY_LAYOUT) => {\n  return { ...FIXED_STYLES, ...LAYOUT_FIXED_STYLES[layout] };\n};\n","const VIEW_MODE = {\n  SITE: 'SITE',\n  EDIT: 'EDIT',\n  PREVIEW: 'PREVIEW',\n  SEO: 'SEO',\n} as const;\n\nexport default VIEW_MODE;\n","export const URL_SIZES = {\n  RESIZED: 'resized',\n  MULTI: 'multi',\n  SCALED: 'scaled',\n  PIXEL: 'pixel',\n  THUMBNAIL: 'thumbnail',\n  SQUARE: 'square',\n  FULL: 'full',\n  SAMPLE: 'sample',\n  PRELOAD: 'preload',\n  DOWNLOAD: 'download',\n  DOWNLOAD_SAMPLE: 'download_sample',\n  MAGNIFIED: 'magnified',\n} as const;\n\nexport const URL_TYPES = {\n  HIGH_RES: 'img',\n  LOW_RES: 'thumb',\n  VIDEO: 'video',\n  THREE_D: '3d',\n} as const;\n","const SOCIAL_NETWORKS = {\n  FACEBOOK: 'facebook',\n  TWITTER: 'twitter',\n  PINTEREST: 'pinterest',\n  EMAIL: 'email',\n  TUMBLR: 'tumblr',\n} as const;\n\nexport default SOCIAL_NETWORKS;\n","const RESIZE_METHODS = {\n  FILL: 'fill',\n  FIT: 'fit',\n  FULL: 'full',\n  VIDEO: 'video',\n} as const;\n\nexport default RESIZE_METHODS;\n","const DEVICE_TYPE = {\n  DESKTOP: 'desktop',\n  MOBILE: 'mobile',\n  TABLET: 'tablet',\n} as const;\n\nexport default DEVICE_TYPE;\n","const EVENTS = {\n  APP_LOADED: 'APP_LOADED',\n  ITEM_CREATED: 'ITEM_CREATED',\n  ITEM_LOADED: 'ITEM_LOADED',\n  GALLERY_CHANGE: 'GALLERY_CHANGE',\n  ITEM_ACTION_TRIGGERED: 'ITEM_ACTION_TRIGGERED',\n  CURRENT_ITEM_CHANGED: 'CURRENT_ITEM_CHANGED',\n  NEED_MORE_ITEMS: 'NEED_MORE_ITEMS',\n  VIDEO_ENDED: 'VIDEO_ENDED',\n  VIDEO_ERROR: 'VIDEO_ERROR',\n  VIDEO_PAUSED: 'VIDEO_PAUSED',\n  VIDEO_PLAYED: 'VIDEO_PLAYED',\n  HOVER_SET: 'HOVER_SET',\n  LOAD_MORE_CLICKED: 'LOAD_MORE_CLICKED',\n  ITEM_CLICKED: 'ITEM_CLICKED',\n  THUMBNAIL_CLICKED: 'THUMBNAIL_CLICKED',\n  ITEM_FOCUSED: 'ITEM_FOCUSED',\n  ITEM_LOST_FOCUS: 'ITEM_LOST_FOCUS',\n  GALLERY_SCROLLED: 'GALLERY_SCROLLED',\n  NAVIGATION_API_READY: 'NAVIGATION_API_READY',\n  GALLERY_NAVIGATION_START: 'GALLERY_NAVIGATION_START',\n} as const;\n\nexport default EVENTS;\n","const CROP_METHODS = {\n  FILL: 'FILL',\n  FIT: 'FIT',\n  MIN: 'MIN',\n  MAX: 'MAX',\n};\n\nexport default CROP_METHODS;\n","const CROP_ALIGNMENT = {\n  CENTER: 'CENTER',\n  TOP: 'TOP',\n  LEFT: 'LEFT',\n  RIGHT: 'RIGHT',\n  BOTTOM: 'BOTTOM',\n};\n\nexport default CROP_ALIGNMENT;\n","export default {\n    \"layoutParams\": {\n        \"groups\": {\n            \"density\": \"layoutParams_groups_density\",\n            \"groupByOrientation\": \"layoutParams_groups_groupByOrientation\",\n            \"numberOfGroupsPerRow\": \"layoutParams_groups_numberOfGroupsPerRow\",\n            \"allowedGroupTypes\": \"layoutParams_groups_allowedGroupTypes\",\n            \"repeatingGroupTypes\": \"layoutParams_groups_repeatingGroupTypes\",\n            \"groupSize\": \"layoutParams_groups_groupSize\"\n        },\n        \"crop\": {\n            \"method\": \"layoutParams_crop_method\",\n            \"alignment\": \"layoutParams_crop_alignment\",\n            \"enable\": \"layoutParams_crop_enable\",\n            \"enableSmartCrop\": \"layoutParams_crop_enableSmartCrop\",\n            \"cropOnlyFill\": \"layoutParams_crop_cropOnlyFill\",\n            \"ratios\": \"layoutParams_crop_ratios\"\n        },\n        \"structure\": {\n            \"galleryLayout\": \"layoutParams_structure_galleryLayout\",\n            \"galleryRatio\": {\n                \"value\": \"layoutParams_structure_galleryRatio_value\",\n                \"includeExternalInfo\": \"layoutParams_structure_galleryRatio_includeExternalInfo\"\n            },\n            \"enableStreching\": \"layoutParams_structure_enableStreching\",\n            \"gallerySpacing\": \"layoutParams_structure_gallerySpacing\",\n            \"itemSpacing\": \"layoutParams_structure_itemSpacing\",\n            \"scrollDirection\": \"layoutParams_structure_scrollDirection\",\n            \"numberOfColumns\": \"layoutParams_structure_numberOfColumns\",\n            \"numberOfGridRows\": \"layoutParams_structure_numberOfGridRows\",\n            \"responsiveMode\": \"layoutParams_structure_responsiveMode\",\n            \"columnRatios\": \"layoutParams_structure_columnRatios\",\n            \"scatter\": {\n                \"randomScatter\": \"layoutParams_structure_scatter_randomScatter\",\n                \"manualScatter\": \"layoutParams_structure_scatter_manualScatter\"\n            },\n            \"layoutOrientation\": \"layoutParams_structure_layoutOrientation\",\n            \"groupsOrder\": \"layoutParams_structure_groupsOrder\"\n        },\n        \"thumbnails\": {\n            \"enable\": \"layoutParams_thumbnails_enable\",\n            \"position\": \"layoutParams_thumbnails_position\",\n            \"spacing\": \"layoutParams_thumbnails_spacing\",\n            \"marginToGallery\": \"layoutParams_thumbnails_marginToGallery\",\n            \"size\": \"layoutParams_thumbnails_size\",\n            \"alignment\": \"layoutParams_thumbnails_alignment\"\n        },\n        \"navigationArrows\": {\n            \"enable\": \"layoutParams_navigationArrows_enable\",\n            \"size\": \"layoutParams_navigationArrows_size\",\n            \"padding\": \"layoutParams_navigationArrows_padding\",\n            \"position\": \"layoutParams_navigationArrows_position\",\n            \"verticalAlignment\": \"layoutParams_navigationArrows_verticalAlignment\",\n            \"type\": \"layoutParams_navigationArrows_type\",\n            \"container\": {\n                \"type\": \"layoutParams_navigationArrows_container_type\",\n                \"borderRadius\": \"layoutParams_navigationArrows_container_borderRadius\",\n                \"backgroundColor\": \"layoutParams_navigationArrows_container_backgroundColor\"\n            },\n            \"mouseCursorContainerMaxWidth\": \"layoutParams_navigationArrows_mouseCursorContainerMaxWidth\"\n        },\n        \"info\": {\n            \"sizeUnits\": \"layoutParams_info_sizeUnits\",\n            \"width\": \"layoutParams_info_width\",\n            \"height\": \"layoutParams_info_height\",\n            \"spacing\": \"layoutParams_info_spacing\",\n            \"layout\": \"layoutParams_info_layout\",\n            \"border\": {\n                \"width\": \"layoutParams_info_border_width\",\n                \"color\": \"layoutParams_info_border_color\",\n                \"radius\": \"layoutParams_info_border_radius\"\n            },\n            \"placement\": \"layoutParams_info_placement\"\n        },\n        \"targetItemSize\": {\n            \"unit\": \"layoutParams_targetItemSize_unit\",\n            \"value\": \"layoutParams_targetItemSize_value\",\n            \"minimum\": \"layoutParams_targetItemSize_minimum\"\n        }\n    },\n    \"behaviourParams\": {\n        \"item\": {\n            \"clickAction\": \"behaviourParams_item_clickAction\",\n            \"video\": {\n                \"speed\": \"behaviourParams_item_video_speed\",\n                \"volume\": \"behaviourParams_item_video_volume\",\n                \"loop\": \"behaviourParams_item_video_loop\",\n                \"playTrigger\": \"behaviourParams_item_video_playTrigger\",\n                \"enablePlayButton\": \"behaviourParams_item_video_enablePlayButton\",\n                \"enableThumbnailsPlayButton\": \"behaviourParams_item_video_enableThumbnailsPlayButton\",\n                \"enableControls\": \"behaviourParams_item_video_enableControls\",\n                \"enablePlaceholder\": \"behaviourParams_item_video_enablePlaceholder\"\n            },\n            \"threeDimensionalScene\": {\n                \"transform\": {\n                    \"rotation\": \"behaviourParams_item_threeDimensionalScene_transform_rotation\",\n                    \"scale\": \"behaviourParams_item_threeDimensionalScene_transform_scale\",\n                    \"position\": \"behaviourParams_item_threeDimensionalScene_transform_position\"\n                },\n                \"controls\": {\n                    \"enableZoom\": \"behaviourParams_item_threeDimensionalScene_controls_enableZoom\",\n                    \"enableRotate\": \"behaviourParams_item_threeDimensionalScene_controls_enableRotate\",\n                    \"enablePan\": \"behaviourParams_item_threeDimensionalScene_controls_enablePan\",\n                    \"enableAutoRotate\": \"behaviourParams_item_threeDimensionalScene_controls_enableAutoRotate\"\n                },\n                \"enablePlayButton\": \"behaviourParams_item_threeDimensionalScene_enablePlayButton\",\n                \"enableThumbnailsPlayButton\": \"behaviourParams_item_threeDimensionalScene_enableThumbnailsPlayButton\",\n                \"playTrigger\": \"behaviourParams_item_threeDimensionalScene_playTrigger\"\n            },\n            \"overlay\": {\n                \"hoveringBehaviour\": \"behaviourParams_item_overlay_hoveringBehaviour\",\n                \"hoverAnimation\": \"behaviourParams_item_overlay_hoverAnimation\",\n                \"position\": \"behaviourParams_item_overlay_position\",\n                \"size\": \"behaviourParams_item_overlay_size\",\n                \"sizeUnits\": \"behaviourParams_item_overlay_sizeUnits\",\n                \"padding\": \"behaviourParams_item_overlay_padding\",\n                \"backgroundColor\": \"behaviourParams_item_overlay_backgroundColor\"\n            },\n            \"content\": {\n                \"hoverAnimation\": \"behaviourParams_item_content_hoverAnimation\",\n                \"placementAnimation\": \"behaviourParams_item_content_placementAnimation\",\n                \"loader\": \"behaviourParams_item_content_loader\",\n                \"magnificationValue\": \"behaviourParams_item_content_magnificationValue\",\n                \"tiltAngleValue\": \"behaviourParams_item_content_tiltAngleValue\"\n            },\n            \"secondaryMedia\": {\n                \"trigger\": \"behaviourParams_item_secondaryMedia_trigger\",\n                \"behaviour\": \"behaviourParams_item_secondaryMedia_behaviour\"\n            }\n        },\n        \"gallery\": {\n            \"layoutDirection\": \"behaviourParams_gallery_layoutDirection\",\n            \"blockContextMenu\": \"behaviourParams_gallery_blockContextMenu\",\n            \"scrollAnimation\": \"behaviourParams_gallery_scrollAnimation\",\n            \"enableIndexingShareLinks\": \"behaviourParams_gallery_enableIndexingShareLinks\",\n            \"vertical\": {\n                \"loadMore\": {\n                    \"enable\": \"behaviourParams_gallery_vertical_loadMore_enable\",\n                    \"amount\": \"behaviourParams_gallery_vertical_loadMore_amount\",\n                    \"text\": \"behaviourParams_gallery_vertical_loadMore_text\"\n                }\n            },\n            \"horizontal\": {\n                \"enableScrollSnap\": \"behaviourParams_gallery_horizontal_enableScrollSnap\",\n                \"slideAnimation\": \"behaviourParams_gallery_horizontal_slideAnimation\",\n                \"slideTransition\": \"behaviourParams_gallery_horizontal_slideTransition\",\n                \"blockScroll\": \"behaviourParams_gallery_horizontal_blockScroll\",\n                \"navigationDuration\": \"behaviourParams_gallery_horizontal_navigationDuration\",\n                \"loop\": \"behaviourParams_gallery_horizontal_loop\",\n                \"autoSlide\": {\n                    \"behaviour\": \"behaviourParams_gallery_horizontal_autoSlide_behaviour\",\n                    \"interval\": \"behaviourParams_gallery_horizontal_autoSlide_interval\",\n                    \"pauseOnHover\": \"behaviourParams_gallery_horizontal_autoSlide_pauseOnHover\",\n                    \"speed\": \"behaviourParams_gallery_horizontal_autoSlide_speed\"\n                },\n                \"slideshowInfo\": {\n                    \"buttonsAlignment\": \"behaviourParams_gallery_horizontal_slideshowInfo_buttonsAlignment\",\n                    \"enableCounter\": \"behaviourParams_gallery_horizontal_slideshowInfo_enableCounter\",\n                    \"enablePlayButton\": \"behaviourParams_gallery_horizontal_slideshowInfo_enablePlayButton\"\n                }\n            }\n        }\n    },\n    \"stylingParams\": {\n        \"arrowsColor\": \"stylingParams_arrowsColor\",\n        \"itemShadowBlur\": \"stylingParams_itemShadowBlur\",\n        \"itemShadowDirection\": \"stylingParams_itemShadowDirection\",\n        \"itemShadowOpacityAndColor\": \"stylingParams_itemShadowOpacityAndColor\",\n        \"itemShadowSize\": \"stylingParams_itemShadowSize\",\n        \"itemEnableShadow\": \"stylingParams_itemEnableShadow\",\n        \"itemBorderRadius\": \"stylingParams_itemBorderRadius\",\n        \"itemBorderWidth\": \"stylingParams_itemBorderWidth\",\n        \"itemBorderColor\": \"stylingParams_itemBorderColor\",\n        \"itemResolutionMode\": \"stylingParams_itemResolutionMode\"\n    }\n}","import optionsMap from '../../core/helpers/optionsMap.js';\n\nconst LAYOUTS = {\n  JSON_FIXED: -3,\n  DESIGNED_PRESET: -2,\n  EMPTY: -1,\n  COLLAGE: 0,\n  MASONRY: 1,\n  GRID: 2,\n  THUMBNAIL: 3,\n  SLIDER: 4,\n  SLIDESHOW: 5,\n  PANORAMA: 6,\n  COLUMN: 7,\n  MAGIC: 8,\n  FULLSIZE: 9,\n  BRICKS: 10,\n  MIX: 11,\n  ALTERNATE: 12,\n};\n\nconst isLayout = (layoutName) => (options) => {\n  return options[optionsMap.layoutParams.structure.galleryLayout] === LAYOUTS[layoutName];\n};\n\nexport default LAYOUTS;\nexport { isLayout };\n","const GROUPS_ORDER = {\n  BY_HEIGHT: 'BY_HEIGHT',\n  LEFT_TO_RIGHT: 'LEFT_TO_RIGHT',\n};\n\nexport default GROUPS_ORDER;\n","const LAYOUT_ORIENTATION = {\n  VERTICAL: 'VERTICAL',\n  HORIZONTAL: 'HORIZONTAL',\n};\n\nexport default LAYOUT_ORIENTATION;\n","const RESPONSIVE_MODE = {\n  FIT_TO_SCREEN: 'FIT_TO_SCREEN',\n  SET_ITEMS_PER_ROW: 'SET_ITEMS_PER_ROW',\n};\n\nexport default RESPONSIVE_MODE;\n","const SCROLL_DIRECTION = {\n  VERTICAL: 'VERTICAL',\n  HORIZONTAL: 'HORIZONTAL',\n};\n\nexport default SCROLL_DIRECTION;\n","const GROUP_TYPES = {\n  1: '1',\n  '2v': '2v',\n  '2h': '2h',\n  '3r': '3r',\n  '3b': '3b',\n  '3t': '3t',\n  '3l': '3l',\n  '3v': '3v',\n  '3h': '3h',\n};\n\nexport default GROUP_TYPES;\n","const THUMBNAILS_ALIGNMENT = {\n  BOTTOM: 'BOTTOM',\n  LEFT: 'LEFT',\n  TOP: 'TOP',\n  RIGHT: 'RIGHT',\n};\n\nexport default THUMBNAILS_ALIGNMENT;\n","const ARROWS_VERTICAL_POSITION = {\n  ITEM_CENTER: 'ITEM_CENTER',\n  IMAGE_CENTER: 'IMAGE_CENTER',\n  INFO_CENTER: 'INFO_CENTER',\n};\n\nexport default ARROWS_VERTICAL_POSITION;\n","const ARROWS_POSITION = {\n  ON_GALLERY: 'ON_GALLERY',\n  OUTSIDE_GALLERY: 'OUTSIDE_GALLERY',\n  MOUSE_CURSOR: 'MOUSE_CURSOR',\n};\n\nexport default ARROWS_POSITION;\n","const ARROWS_TYPE = {\n  DEFAULT_ARROW: 'DEFAULT_ARROW',\n  ARROW_2: 'ARROW_2',\n  ARROW_3: 'ARROW_3',\n  ARROW_4: 'ARROW_4',\n  ARROW_5: 'ARROW_5',\n  ARROW_6: 'ARROW_6',\n  ARROW_7: 'ARROW_7',\n} as const;\n\nexport default ARROWS_TYPE;\n","const ARROWS_CONTAINER_STYLE_TYPE = {\n  NONE: 'NONE',\n  SHADOW: 'SHADOW',\n  BOX: 'BOX',\n} as const;\n\nexport default ARROWS_CONTAINER_STYLE_TYPE;\n","const INFO_LAYOUT = {\n  NO_BACKGROUND: 'NO_BACKGROUND',\n  ATTACHED_BACKGROUND: 'ATTACHED_BACKGROUND',\n  SEPARATED_BACKGROUND: 'SEPARATED_BACKGROUND',\n  DONT_SHOW: 'DONT_SHOW',\n};\n\nexport default INFO_LAYOUT;\n","const TEXT_BOX_SIZE_UNITS = {\n  PERCENT: 'PERCENT',\n  PIXEL: 'PIXEL',\n};\n\nexport default TEXT_BOX_SIZE_UNITS;\n","const PLACEMENTS = {\n  OVERLAY: 'OVERLAY',\n  ABOVE: 'ABOVE',\n  BELOW: 'BELOW',\n  LEFT: 'LEFT',\n  RIGHT: 'RIGHT',\n  ALTERNATE_HORIZONTALLY: 'ALTERNATE_HORIZONTALLY',\n  ALTERNATE_VERTICALLY: 'ALTERNATE_VERTICALLY',\n};\nexport const hasHoverPlacement = (placement: string) => String(placement).includes(PLACEMENTS.OVERLAY);\n\nexport const hasExternalAbovePlacement = (placement: string, idx: number) =>\n  String(placement).includes(PLACEMENTS.ABOVE) ||\n  (idx % 2 === 0 && String(placement).includes(PLACEMENTS.ALTERNATE_VERTICALLY));\n\nexport const hasExternalBelowPlacement = (placement: string, idx: number) =>\n  String(placement).includes(PLACEMENTS.BELOW) ||\n  (idx % 2 === 1 && String(placement).includes(PLACEMENTS.ALTERNATE_VERTICALLY));\n\nexport const hasExternalRightPlacement = (placement: string, idx: number) =>\n  String(placement).includes(PLACEMENTS.RIGHT) ||\n  (idx % 2 === 0 && String(placement).includes(PLACEMENTS.ALTERNATE_HORIZONTALLY));\n\nexport const hasExternalLeftPlacement = (placement: string, idx: number) =>\n  String(placement).includes(PLACEMENTS.LEFT) ||\n  (idx % 2 === 1 && String(placement).includes(PLACEMENTS.ALTERNATE_HORIZONTALLY));\n\nexport const hasExternalVerticalPlacement = (placement: string) =>\n  hasExternalAbovePlacement(placement, 0) || hasExternalBelowPlacement(placement, 1);\n\nexport const hasExternalHorizontalPlacement = (placement: string) =>\n  hasExternalRightPlacement(placement, 0) || hasExternalLeftPlacement(placement, 1);\n\nexport const isExternalVerticalPlacement = (placement: string) =>\n  hasExternalVerticalPlacement(placement) &&\n  !hasExternalHorizontalPlacement(placement) &&\n  !hasHoverPlacement(placement);\n\nexport const isExternalHorizontalPlacement = (placement: string) =>\n  hasExternalHorizontalPlacement(placement) &&\n  !hasExternalVerticalPlacement(placement) &&\n  !hasHoverPlacement(placement);\n\nexport const isExternalAbovePlacement = (placement?: string) => String(placement) === PLACEMENTS.ABOVE;\n\nexport const isExternalBelowPlacement = (placement?: string) => String(placement) === PLACEMENTS.BELOW;\n\nexport const isExternalAboveOrBelowSinglePlacement = (placement?: string) =>\n  isExternalAbovePlacement(placement) || isExternalBelowPlacement(placement);\n\nexport const isHoverPlacement = (placement: string) => String(placement) === PLACEMENTS.OVERLAY;\n\nexport const isExternalRightPlacement = (placement: string) => String(placement) === PLACEMENTS.RIGHT;\n\nexport const isExternalLeftPlacement = (placement: string) => String(placement) === PLACEMENTS.LEFT;\n\nexport const isConstantVerticalPlacement = (placement: string) => {\n  const placementArray = placement.split(',');\n  const firstPlacement = placementArray.shift();\n\n  return (\n    isExternalAboveOrBelowSinglePlacement(firstPlacement) &&\n    placementArray.every((placement) => placement === firstPlacement)\n  );\n};\n\nexport default PLACEMENTS;\n","const ITEM_SIZE_UNITS = {\n  SMART: 'SMART',\n  PIXEL: 'PIXEL',\n  PERCENT: 'PERCENT',\n};\n\nexport default ITEM_SIZE_UNITS;\n","const CLICK_ACTION = {\n  ACTION: 'ACTION',\n  LINK: 'LINK',\n  NOTHING: 'NOTHING',\n  MAGNIFY: 'MAGNIFY',\n};\n\nexport default CLICK_ACTION;\n","const PLAY_TRIGGER = {\n  HOVER: 'HOVER',\n  AUTO: 'AUTO',\n  CLICK: 'CLICK',\n};\nexport default PLAY_TRIGGER;\n","const OVERLAY_BEHAVIOUR_ON_HOVER = {\n  APPEARS: 'APPEARS',\n  DISAPPEARS: 'DISAPPEARS',\n  ALWAYS_SHOW: 'ALWAYS_SHOW',\n  NEVER_SHOW: 'NEVER_SHOW',\n};\nexport default OVERLAY_BEHAVIOUR_ON_HOVER;\n","const OVERLAY_HOVER_ANIMATION = {\n  NO_EFFECT: 'NO_EFFECT',\n  FADE_IN: 'FADE_IN',\n  EXPAND: 'EXPAND',\n  SLIDE_UP: 'SLIDE_UP',\n  SLIDE_RIGHT: 'SLIDE_RIGHT',\n  SLIDE_DOWN: 'SLIDE_DOWN',\n  SLIDE_LEFT: 'SLIDE_LEFT',\n};\n\nexport default OVERLAY_HOVER_ANIMATION;\n","const OVERLAY_POSITIONS = {\n  LEFT: 'LEFT',\n  RIGHT: 'RIGHT',\n  BOTTOM: 'BOTTOM',\n  TOP: 'TOP',\n  CENTERED_VERTICALLY: 'CENTERED_VERTICALLY',\n  CENTERED_HORIZONTALLY: 'CENTERED_HORIZONTALLY',\n};\n\nexport default OVERLAY_POSITIONS;\n","const OVERLAY_SIZE_UNITS = {\n  PIXEL: 'PIXEL',\n  PERCENT: 'PERCENT',\n};\n\nexport default OVERLAY_SIZE_UNITS;\n","const CONTENT_HOVER_ANIMATIONS = {\n  NO_EFFECT: 'NO_EFFECT',\n  ZOOM_IN: 'ZOOM_IN',\n  TILT: 'TILT',\n  BLUR: 'BLUR',\n  GRAYSCALE: 'GRAYSCALE',\n  SHRINK: 'SHRINK',\n  INVERT: 'INVERT',\n  COLOR_IN: 'COLOR_IN',\n  DARKENED: 'DARKENED',\n  MAIN_COLOR: 'MAIN_COLOR',\n};\n\nexport default CONTENT_HOVER_ANIMATIONS;\n","const CONTENT_PLACEMENT_ANIMATIONS = {\n  NO_EFFECT: 'NO_EFFECT',\n  SLIDE: 'SLIDE',\n};\n\nexport default CONTENT_PLACEMENT_ANIMATIONS;\n","const CONTENT_LOAD_PLACEHOLDER = {\n  BLUR: 'BLUR',\n  COLOR: 'COLOR',\n  MAIN_COLOR: 'MAIN_COLOR',\n};\n\nexport default CONTENT_LOAD_PLACEHOLDER;\n","const SECONDARY_MEDIA_TRIGGER = {\n  OFF: 'OFF',\n  HOVER: 'HOVER',\n};\n\nexport default SECONDARY_MEDIA_TRIGGER;\n","const SECONDARY_MEDIA_BEHAVIOUR = {\n  APPEARS: 'APPEARS',\n};\n\nexport default SECONDARY_MEDIA_BEHAVIOUR;\n","const LAYOUT_DIRECTION = {\n  LEFT_TO_RIGHT: 'LEFT_TO_RIGHT',\n  RIGHT_TO_LEFT: 'RIGHT_TO_LEFT',\n};\n\nexport default LAYOUT_DIRECTION;\n","const SCROLL_ANIMATIONS = {\n  NO_EFFECT: 'NO_EFFECT',\n  FADE_IN: 'FADE_IN',\n  GRAYSCALE: 'GRAYSCALE',\n  SLIDE_UP: 'SLIDE_UP',\n  EXPAND: 'EXPAND',\n  SHRINK: 'SHRINK',\n  ZOOM_OUT: 'ZOOM_OUT',\n  ONE_COLOR: 'ONE_COLOR',\n  MAIN_COLOR: 'MAIN_COLOR',\n  BLUR: 'BLUR',\n};\n\nexport default SCROLL_ANIMATIONS;\n","const LOAD_MORE_AMOUNT = {\n  PARTIAL: 'PARTIAL',\n  ALL: 'ALL',\n};\n\nexport default LOAD_MORE_AMOUNT;\n","const SLIDE_ANIMATIONS = {\n  SCROLL: 'SCROLL',\n  FADE: 'FADE',\n  DECK: 'DECK',\n};\n\nexport default SLIDE_ANIMATIONS;\n","const SLIDE_TRANSITION = {\n  EASE: 'cubic-bezier(0.46,0.1,0.25,1)',\n};\n\nexport default SLIDE_TRANSITION;\n","const AUTO_SLIDE_BEHAVIOUR = {\n  OFF: 'OFF',\n  INTERVAL: 'INTERVAL',\n  CONTINUOUS: 'CONTINUOUS',\n};\n\nexport default AUTO_SLIDE_BEHAVIOUR;\n","const GALLERY_TEXT_ALIGN = {\n  LEFT: 'LEFT',\n  RIGHT: 'RIGHT',\n  CENTER: 'CENTER',\n};\n\nexport default GALLERY_TEXT_ALIGN;\n","const ITEM_RESOLUTION_MODE = {\n  FULL: 'FULL',\n  SCALED_DOWN: 'SCALED_DOWN',\n};\n\nexport default ITEM_RESOLUTION_MODE;\n","const THUMBNAILS_POSITION = {\n  ON_GALLERY: 'ON_GALLERY',\n  OUTSIDE_GALLERY: 'OUTSIDE_GALLERY',\n} as const;\n\nexport default THUMBNAILS_POSITION;\n","import { Dimensions } from '../interfaces/behaviourParams.js';\nexport const parse3DDimensions = (dimensions: Dimensions) => {\n  const x = parseFloat(dimensions.split('x')[1].split('y')[0]);\n  const y = parseFloat(dimensions.split('y')[1].split('z')[0]);\n  const z = parseFloat(dimensions.split('z')[1]);\n  return { x, y, z };\n};\n","import viewMode from './viewMode.js';\nimport { URL_SIZES as urlSizes, URL_TYPES as urlTypes } from './urlTypes.js';\nimport socialNetworks from './socialNetworks.js';\nimport resizeMethods from './resizeMethods.js';\nimport deviceType from './deviceType.js';\nimport events from './events.js';\n\nimport layoutParams_crop_method from './layoutParams_crop_method.js';\nimport layoutParams_crop_alignment from './layoutParams_crop_alignment.js';\nimport layoutParams_structure_galleryLayout, { isLayout } from './layoutParams_structure_galleryLayout.js';\nimport layoutParams_structure_groupsOrder from './layoutParams_structure_groupsOrder.js';\nimport layoutParams_structure_layoutOrientation from './layoutParams_structure_layoutOrientation.js';\nimport layoutParams_structure_responsiveMode from './layoutParams_structure_responsiveMode.js';\nimport layoutParams_structure_scrollDirection from './layoutParams_structure_scrollDirection.js';\nimport layoutParams_groups_allowedGroupTypes from './layoutParams_groups_allowedGroupTypes.js';\nimport layoutParams_thumbnails_alignment from './layoutParams_thumbnails_alignment.js';\n\nimport layoutParams_navigationArrows_verticalAlignment from './layoutParams_navigationArrows_verticalAlignment.js';\nimport layoutParams_navigationArrows_position from './layoutParams_navigationArrows_position.js';\nimport layoutParams_navigationArrows_type from './layoutParams_navigationArrows_type.js';\nimport layoutParams_navigationArrows_container_type from './layoutParams_navigationArrows_container_type.js';\n\nimport layoutParams_info_layout from './layoutParams_info_layout.js';\nimport layoutParams_info_sizeUnits from './layoutParams_info_sizeUnits.js';\nimport layoutParams_info_placement, {\n  hasExternalAbovePlacement,\n  hasExternalBelowPlacement,\n  hasHoverPlacement,\n  hasExternalRightPlacement,\n  hasExternalLeftPlacement,\n  hasExternalVerticalPlacement,\n  hasExternalHorizontalPlacement,\n  isExternalAbovePlacement,\n  isExternalBelowPlacement,\n  isHoverPlacement,\n  isExternalRightPlacement,\n  isExternalLeftPlacement,\n  isExternalVerticalPlacement,\n  isExternalHorizontalPlacement,\n  isConstantVerticalPlacement,\n} from './layoutParams_info_placement.js';\n\nimport layoutParams_targetItemSize_unit from './layoutParams_targetItemSize_unit.js';\n\nimport behaviourParams_item_clickAction from './behaviourParams_item_clickAction.js';\nimport playTrigger from './playTrigger.js';\nimport behaviourParams_item_overlay_hoveringBehaviour from './behaviourParams_item_overlay_hoveringBehaviour.js';\nimport behaviourParams_item_overlay_hoverAnimation from './behaviourParams_item_overlay_hoverAnimation.js';\nimport behaviourParams_item_overlay_position from './behaviourParams_item_overlay_position.js';\nimport behaviourParams_item_overlay_sizeUnits from './behaviourParams_item_overlay_sizeUnits.js';\nimport behaviourParams_item_content_hoverAnimation from './behaviourParams_item_content_hoverAnimation.js';\nimport behaviourParams_item_content_placementAnimation from './behaviourParams_item_content_placementAnimation.js';\nimport behaviourParams_item_content_loader from './behaviourParams_item_content_loader.js';\nimport behaviourParams_item_secondaryMedia_trigger from './behaviourParams_item_secondaryMedia_trigger.js';\nimport behaviourParams_item_secondaryMedia_behaviour from './behaviourParams_item_secondaryMedia_behaviour.js';\nimport behaviourParams_gallery_layoutDirection from './behaviourParams_gallery_layoutDirection.js';\nimport behaviourParams_gallery_scrollAnimation from './behaviourParams_gallery_scrollAnimation.js';\nimport behaviourParams_gallery_vertical_loadMore_amount from './behaviourParams_gallery_vertical_loadMore_amount.js';\nimport behaviourParams_gallery_horizontal_slideAnimation from './behaviourParams_gallery_horizontal_slideAnimation.js';\nimport behaviourParams_gallery_horizontal_slideTransition from './behaviourParams_gallery_horizontal_slideTransition.js';\nimport behaviourParams_gallery_horizontal_autoSlide_behaviour from './behaviourParams_gallery_horizontal_autoSlide_behaviour.js';\nimport behaviourParams_gallery_horizontal_slideshowInfo_buttonsAlignment from './behaviourParams_gallery_horizontal_slideshowInfo_buttonsAlignment.js';\nimport stylingParams_itemResolutionMode from './stylingParams_itemResolutionMode.js';\nimport layoutParams_thumbnails_position from './layoutParams_thumbnails_position.js';\nimport { parse3DDimensions } from './behaviourParams_item_threeDimensionalScene_controls.js';\n\n//NEW STYPEPARAMS METHOD\n\nexport default {\n  events,\n  deviceType,\n  isLayout,\n  hasExternalAbovePlacement,\n  hasExternalBelowPlacement,\n  hasHoverPlacement,\n  hasExternalRightPlacement,\n  hasExternalLeftPlacement,\n  hasExternalVerticalPlacement,\n  hasExternalHorizontalPlacement,\n  isExternalAbovePlacement,\n  isExternalBelowPlacement,\n  isHoverPlacement,\n  isExternalRightPlacement,\n  isExternalLeftPlacement,\n  isExternalVerticalPlacement,\n  isExternalHorizontalPlacement,\n  isConstantVerticalPlacement,\n  resizeMethods,\n\n  socialNetworks,\n\n  urlSizes,\n  urlTypes,\n  viewMode,\n\n  layoutParams_crop_method,\n  layoutParams_crop_alignment,\n  layoutParams_structure_galleryLayout,\n  layoutParams_structure_groupsOrder,\n  layoutParams_structure_layoutOrientation,\n  layoutParams_structure_responsiveMode,\n  layoutParams_structure_scrollDirection,\n  layoutParams_groups_allowedGroupTypes,\n  layoutParams_thumbnails_alignment,\n  layoutParams_navigationArrows_verticalAlignment,\n  layoutParams_navigationArrows_position,\n  layoutParams_navigationArrows_type,\n  layoutParams_navigationArrows_container_type,\n  layoutParams_info_layout,\n  layoutParams_info_sizeUnits,\n  layoutParams_info_placement,\n  layoutParams_targetItemSize_unit,\n  behaviourParams_item_clickAction,\n  behaviourParams_item_video_playTrigger: playTrigger,\n  behaviourParams_item_overlay_hoveringBehaviour,\n  behaviourParams_item_overlay_hoverAnimation,\n  behaviourParams_item_overlay_position,\n  behaviourParams_item_overlay_sizeUnits,\n  behaviourParams_item_content_hoverAnimation,\n  behaviourParams_item_content_placementAnimation,\n  behaviourParams_item_content_loader,\n  behaviourParams_item_secondaryMedia_trigger,\n  behaviourParams_item_secondaryMedia_behaviour,\n  behaviourParams_gallery_layoutDirection,\n  behaviourParams_gallery_scrollAnimation,\n  behaviourParams_gallery_vertical_loadMore_amount,\n  behaviourParams_gallery_horizontal_slideAnimation,\n  behaviourParams_gallery_horizontal_slideTransition,\n  behaviourParams_gallery_horizontal_autoSlide_behaviour,\n  behaviourParams_gallery_horizontal_slideshowInfo_buttonsAlignment,\n  behaviourParams_item_threeDimensionalScene_playTrigger: playTrigger,\n  parse3DDimensions,\n  stylingParams_itemResolutionMode,\n  layoutParams_thumbnails_position,\n  //NEW STYPEPARAMS METHOD\n};\n","function assignByString(Obj, string, value, cloneObject = true) {\n  let _obj = cloneObject ? { ...Obj } : Obj;\n  let keyArr = string.split('_');\n  let assignedProperty = keyArr.pop();\n  let pointer = _obj;\n  keyArr.forEach((key) => {\n    if (typeof pointer[key] !== 'object') pointer[key] = {}; //if its not an object we put an object over it to allow assignments\n    pointer = pointer[key];\n  });\n  pointer[assignedProperty] = value;\n  return _obj;\n}\nfunction getByString(Obj, string) {\n  let keyArr = string.split('_');\n  let assignedProperty = keyArr.pop();\n  let pointer = Obj;\n  if (\n    !keyArr.every((key) => {\n      if (typeof pointer[key] !== 'object') return false; //if its not an object there will be nothing in it...\n      pointer = pointer[key]; //programatically going town the rabit hole\n      return true;\n    })\n  ) {\n    return undefined;\n  } else {\n    return pointer[assignedProperty];\n  }\n}\n\nfunction mutatingAssignMultipleByStrings(Obj, stringValuePairArray) {\n  for (let [string, value] of stringValuePairArray) {\n    Object.assign(Obj, assignByString(Obj, string, value));\n  }\n}\n\nfunction flattenObject(ob) {\n  var toReturn = {};\n\n  for (var i in ob) {\n    // eslint-disable-next-line no-prototype-builtins\n    if (!ob.hasOwnProperty(i)) continue;\n\n    if (typeof ob[i] == 'object' && !(ob[i] instanceof Array) && ob[i] !== null && Object.keys(ob[i]).length > 0) {\n      var flatObject = flattenObject(ob[i]);\n      for (var x in flatObject) {\n        // eslint-disable-next-line no-prototype-builtins\n        if (!flatObject.hasOwnProperty(x)) continue;\n\n        toReturn[i + '_' + x] = flatObject[x];\n      }\n    } else {\n      toReturn[i] = ob[i];\n    }\n  }\n  return toReturn;\n}\n\nfunction flatToNested(ob) {\n  const cloneObject = false;\n  return Object.entries(ob).reduce((obj, [option, value]) => assignByString(obj, option, value, cloneObject), {});\n}\nfunction trimUndefinedValues_nested(object) {\n  const flatObject = flattenObject(object);\n  Object.keys(flatObject).forEach((key) => (flatObject[key] === undefined ? delete flatObject[key] : {}));\n  return flatToNested(flatObject);\n}\nfunction trimUndefinedValues_flat(flatObject) {\n  Object.keys(flatObject).forEach((key) => (flatObject[key] === undefined ? delete flatObject[key] : {}));\n  return flatObject;\n}\n\nfunction mergeNestedObjects(...args) {\n  return flatToNested(Object.assign({}, ...args.map(flattenObject)));\n}\n\nexport {\n  flattenObject,\n  assignByString,\n  flatToNested,\n  mergeNestedObjects,\n  getByString,\n  mutatingAssignMultipleByStrings,\n  trimUndefinedValues_nested,\n  trimUndefinedValues_flat,\n};\n","import optionsMap from '../core/helpers/optionsMap.js';\nimport { flattenObject } from '../core/helpers/optionsUtils.js';\nimport GALLERY_CONSTS from './constants/index.js';\n\nconst defaultOptions = flattenObject({\n  layoutParams: {\n    crop: {\n      ratios: [1], // determine the ratio of the images when using grid (use 1 for squares grid)\n      method: GALLERY_CONSTS[optionsMap.layoutParams.crop.method].FILL,\n      enable: false,\n      enableSmartCrop: false,\n      cropOnlyFill: false,\n      alignment: GALLERY_CONSTS[optionsMap.layoutParams.crop.alignment].CENTER,\n    },\n    structure: {\n      galleryLayout: -1,\n      galleryRatio: { value: 0, includeExternalInfo: false },\n      scrollDirection: GALLERY_CONSTS[optionsMap.layoutParams.structure.scrollDirection].VERTICAL,\n      gallerySpacing: 0,\n      itemSpacing: 10,\n      enableStreching: true,\n      responsiveMode: GALLERY_CONSTS[optionsMap.layoutParams.structure.responsiveMode].FIT_TO_SCREEN,\n      scatter: {\n        randomScatter: 0,\n        manualScatter: '',\n      },\n      layoutOrientation: GALLERY_CONSTS[optionsMap.layoutParams.structure.layoutOrientation].HORIZONTAL,\n      groupsOrder: GALLERY_CONSTS[optionsMap.layoutParams.structure.groupsOrder].BY_HEIGHT,\n      numberOfGridRows: 1,\n      numberOfColumns: 3,\n      columnRatios: [],\n    },\n\n    groups: {\n      groupByOrientation: true,\n      numberOfGroupsPerRow: 0,\n      density: 0.8,\n      groupSize: 3,\n      allowedGroupTypes: [\n        GALLERY_CONSTS[optionsMap.layoutParams.groups.allowedGroupTypes]['1'],\n        GALLERY_CONSTS[optionsMap.layoutParams.groups.allowedGroupTypes]['2h'],\n        GALLERY_CONSTS[optionsMap.layoutParams.groups.allowedGroupTypes]['2v'],\n        GALLERY_CONSTS[optionsMap.layoutParams.groups.allowedGroupTypes]['3t'],\n        GALLERY_CONSTS[optionsMap.layoutParams.groups.allowedGroupTypes]['3b'],\n        GALLERY_CONSTS[optionsMap.layoutParams.groups.allowedGroupTypes]['3l'],\n        GALLERY_CONSTS[optionsMap.layoutParams.groups.allowedGroupTypes]['3r'],\n      ],\n      repeatingGroupTypes: [],\n    },\n    thumbnails: {\n      size: 120,\n      spacing: 4,\n      marginToGallery: 0,\n      enable: false,\n      position: GALLERY_CONSTS[optionsMap.layoutParams.thumbnails.position].OUTSIDE_GALLERY,\n      alignment: GALLERY_CONSTS[optionsMap.layoutParams.thumbnails.alignment].BOTTOM,\n    },\n    navigationArrows: {\n      enable: true,\n      position: GALLERY_CONSTS[optionsMap.layoutParams.navigationArrows.position].ON_GALLERY,\n      padding: 23,\n      size: 23,\n      verticalAlignment: GALLERY_CONSTS[optionsMap.layoutParams.navigationArrows.verticalAlignment].ITEM_CENTER,\n      type: GALLERY_CONSTS[optionsMap.layoutParams.navigationArrows.type].DEFAULT_ARROW,\n      container: {\n        type: GALLERY_CONSTS[optionsMap.layoutParams.navigationArrows.container.type].SHADOW,\n        backgroundColor: '',\n        borderRadius: -1,\n      },\n    },\n    targetItemSize: {\n      unit: GALLERY_CONSTS[optionsMap.layoutParams.targetItemSize.unit].SMART,\n      value: 30,\n      minimum: 120,\n    },\n    info: {\n      sizeUnits: GALLERY_CONSTS[optionsMap.layoutParams.info.sizeUnits].PERCENT,\n      width: 50,\n      height: 200,\n      spacing: 10,\n      layout: GALLERY_CONSTS[optionsMap.layoutParams.info.layout].NO_BACKGROUND,\n      // widthByPercent: 50, //I want this to be in the width just like we did the overlaySize\n      placement: GALLERY_CONSTS[optionsMap.layoutParams.info.placement].OVERLAY,\n      border: {\n        width: 0,\n        radius: 0,\n        color: '',\n      },\n    },\n  },\n  behaviourParams: {\n    item: {\n      clickAction: GALLERY_CONSTS[optionsMap.behaviourParams.item.clickAction].NOTHING,\n      video: {\n        playTrigger: GALLERY_CONSTS[optionsMap.behaviourParams.item.video.playTrigger].HOVER,\n        loop: true,\n        volume: 0,\n        enableControls: false,\n        speed: 1,\n        enablePlayButton: false,\n        enableThumbnailsPlayButton: false,\n        enablePlaceholder: true,\n      },\n      overlay: {\n        hoveringBehaviour: GALLERY_CONSTS[optionsMap.behaviourParams.item.overlay.hoveringBehaviour].APPEARS,\n        hoverAnimation: GALLERY_CONSTS[optionsMap.behaviourParams.item.overlay.hoverAnimation].NO_EFFECT,\n        position: GALLERY_CONSTS[optionsMap.behaviourParams.item.overlay.position].LEFT,\n        size: 100,\n        sizeUnits: GALLERY_CONSTS[optionsMap.behaviourParams.item.overlay.sizeUnits].PERCENT,\n        padding: 0,\n      },\n      content: {\n        hoverAnimation: GALLERY_CONSTS[optionsMap.behaviourParams.item.content.hoverAnimation].NO_EFFECT,\n        loader: GALLERY_CONSTS[optionsMap.behaviourParams.item.content.loader].BLUR,\n        placementAnimation: GALLERY_CONSTS[optionsMap.behaviourParams.item.content.placementAnimation].NO_EFFECT,\n        magnificationValue: 2,\n        tiltAngleValue: -4,\n      },\n      secondaryMedia: {\n        trigger: GALLERY_CONSTS[optionsMap.behaviourParams.item.secondaryMedia.trigger].OFF,\n        behaviour: GALLERY_CONSTS[optionsMap.behaviourParams.item.secondaryMedia.behaviour].APPEARS,\n      },\n      threeDimensionalScene: {\n        controls: {\n          enableAutoRotate: false,\n          enablePan: true,\n          enableRotate: true,\n          enableZoom: false,\n        },\n        transform: {\n          rotation: 'x0y0z0',\n          scale: 'x1y1z1',\n          position: 'x0y0z0',\n        },\n        playTrigger: GALLERY_CONSTS[optionsMap.behaviourParams.item.threeDimensionalScene.playTrigger].HOVER,\n        enablePlayButton: false,\n        enableThumbnailsPlayButton: false,\n        enablePlaceholder: true,\n      },\n    },\n    gallery: {\n      blockContextMenu: true, //is this actually a default??\n      layoutDirection: GALLERY_CONSTS[optionsMap.behaviourParams.gallery.layoutDirection].LEFT_TO_RIGHT,\n      scrollAnimation: GALLERY_CONSTS[optionsMap.behaviourParams.gallery.scrollAnimation].NO_EFFECT,\n      enableIndexingShareLinks: true,\n      horizontal: {\n        enableScrollSnap: false,\n        navigationDuration: 400,\n        blockScroll: false,\n        loop: false,\n        slideTransition: GALLERY_CONSTS[optionsMap.behaviourParams.gallery.horizontal.slideTransition].EASE,\n        slideAnimation: GALLERY_CONSTS[optionsMap.behaviourParams.gallery.horizontal.slideAnimation].SCROLL,\n        autoSlide: {\n          behaviour: GALLERY_CONSTS[optionsMap.behaviourParams.gallery.horizontal.autoSlide.behaviour].OFF,\n          interval: 4,\n          pauseOnHover: true,\n          speed: 200,\n        },\n        slideshowInfo: {\n          buttonsAlignment:\n            GALLERY_CONSTS[optionsMap.behaviourParams.gallery.horizontal.slideshowInfo.buttonsAlignment].CENTER,\n          enablePlayButton: false,\n          enableCounter: false,\n        },\n      },\n      vertical: {\n        loadMore: {\n          enable: false,\n          text: '',\n          amount: GALLERY_CONSTS[optionsMap.behaviourParams.gallery.vertical.loadMore.amount].ALL,\n        },\n      },\n    },\n  },\n  stylingParams: {\n    itemBorderWidth: 0,\n    itemBorderRadius: 0,\n    itemEnableShadow: false,\n    itemBorderColor: '',\n    itemShadowBlur: 20,\n    itemShadowDirection: 135,\n    itemShadowSize: 10,\n    itemShadowOpacityAndColor: '',\n    arrowsColor: '',\n  },\n  //layouter API params\n  fixedColumns: 0, // determine the number of columns regardless of the screen size (use 0 to ignore)\n});\n\nexport function populateWithDefaultOptions(options) {\n  const mergedOptions = Object.assign({}, defaultOptions, options);\n  Object.keys(mergedOptions).forEach((key) => {\n    if (typeof mergedOptions[key] === 'undefined') {\n      mergedOptions[key] = defaultOptions[key];\n    }\n  });\n  return mergedOptions;\n}\n\nexport default defaultOptions;\n","export const INPUT_TYPES = {\n  NUMBER: 'NUMBER',\n  BOOLEAN: 'BOOLEAN',\n  OPTIONS: 'OPTIONS',\n  TEXT: 'TEXT',\n  COLOR_PICKER: 'COLOR_PICKER',\n  FONT_PICKER: 'FONT_PICKER',\n  BUTTON: 'BUTTON',\n  MULTISELECT: 'MULTISELECT',\n  MULTIREPEAT: 'MULTIREPEAT',\n  TRANSFORM: 'TRANSFORM',\n};\n","import { default as GALLERY_CONSTS } from '../../common/constants/index.js';\nimport optionsMap from '../../core/helpers/optionsMap.js';\nimport { INPUT_TYPES } from '../utils/constants.js';\n\nexport default {\n  title: 'Gallery Ratio',\n  description: `This option allows horizontally scrolled galleries to link their height to the width of the gallery by the provided ratio`,\n  isRelevant: (options) => {\n    return (\n      options[optionsMap.layoutParams.structure.scrollDirection] ===\n      GALLERY_CONSTS[optionsMap.layoutParams.structure.scrollDirection].HORIZONTAL\n    );\n  },\n  isRelevantDescription: 'Set a Horizontal gallery (\"Scroll Direction\" as \"Horizontal\")',\n  default: 0,\n  type: INPUT_TYPES.NUMBER,\n};\n","import { default as galleryRatioValue } from './layoutParams_structure_galleryRatio_value.js';\nimport { INPUT_TYPES } from '../utils/constants.js';\n\nimport { isConstantVerticalPlacement, isHoverPlacement } from '../../common/constants/layoutParams_info_placement.js';\nimport optionsMap from '../../core/helpers/optionsMap.js';\nexport default {\n  title: 'Include External Info in gallery Ratio',\n  description: `Set to true with a single row horizontal gallery to include the external info (above or below) in the fixed gallery Ratio`,\n  isRelevant: (options) => {\n    const isSingleVerticalItemRendered =\n      options[optionsMap.layoutParams.groups.repeatingGroupTypes].length > 1\n        ? options[optionsMap.layoutParams.groups.repeatingGroupTypes].join('') === '1'\n        : options[optionsMap.layoutParams.groups.allowedGroupTypes].join('') === '1';\n    const filteredPlacement = options[optionsMap.layoutParams.info.placement] // filtering hover since it doesn't affect this\n      .split(',')\n      .filter((placement) => !isHoverPlacement(placement))\n      .join(',');\n    return (\n      isSingleVerticalItemRendered &&\n      isConstantVerticalPlacement(filteredPlacement) &&\n      galleryRatioValue.isRelevant(options) &&\n      options[optionsMap.layoutParams.structure.galleryRatio.value] > 0\n    );\n  },\n  isRelevantDescription:\n    'Must be a single row horizontal gallery with a provided galleryRatio value and a below/above info placement',\n  default: false,\n  type: INPUT_TYPES.BOOLEAN,\n};\n","import { default as GALLERY_CONSTS } from '../../common/constants/index.js';\nimport { default as includeExternalInfo } from '../../settings/options/layoutParams_structure_galleryRatio_includeExternalInfo.js';\nimport optionsMap from './optionsMap.js';\n\nclass DimensionsHelper {\n  constructor() {\n    this.options = {};\n    this.container = {};\n    this.id = '';\n    this._cache = {};\n  }\n\n  getOrPutInCache(field, createValue) {\n    if (this._cache[field]) return this._cache[field];\n    this._cache[field] = createValue();\n    return this._cache[field];\n  }\n\n  dumpCache() {\n    this._cache = {};\n  }\n\n  updateParams({ options, container, id }) {\n    this.dumpCache();\n    this.id = id || this.id;\n    this.options = options || this.options;\n    this.container = container || this.container;\n    this.fixHeightForHorizontalGalleryIfNeeded();\n  }\n\n  getGalleryDimensions() {\n    return this.getOrPutInCache('galleryDimensions', () => {\n      const res = {\n        galleryWidth: Math.ceil(this.getGalleryWidth()),\n        galleryHeight: Math.ceil(this.getGalleryHeight()),\n        scrollBase: this.container.scrollBase ? Math.ceil(this.container.scrollBase) : 0,\n        height: Math.ceil(this.container.height),\n        width: Math.ceil(this.container.width),\n      };\n\n      if (this.container.externalScrollBase) {\n        //if was provided from the wrapper\n        res.scrollBase += this.container.externalScrollBase;\n      }\n      if (\n        this.options[optionsMap.layoutParams.thumbnails.enable] &&\n        this.options[optionsMap.layoutParams.thumbnails.position] ===\n          GALLERY_CONSTS[optionsMap.layoutParams.thumbnails.position].OUTSIDE_GALLERY\n      ) {\n        res.galleryHeight -= this.getThumbnailHeightDelta();\n        res.galleryWidth -= this.getThumbnailWidthDelta();\n      }\n      if (this.options[optionsMap.layoutParams.thumbnails.enable]) {\n        res.navigationBarHeight = this.getThumbnailHeightDelta() || res.galleryHeight;\n        res.navigationBarWidth = this.getThumbnailWidthDelta() || res.galleryWidth;\n      }\n      return res;\n    });\n  }\n\n  getGalleryWidth() {\n    return this.getOrPutInCache('galleryWidth', () => {\n      let width = Math.floor(this.container.width) + this.getDimensionFix() * 2; //add margins to width and then remove them in css negative margins\n      if (\n        this.options[optionsMap.layoutParams.navigationArrows.position] ===\n          GALLERY_CONSTS[optionsMap.layoutParams.navigationArrows.position].OUTSIDE_GALLERY &&\n        this.options[optionsMap.layoutParams.structure.scrollDirection] ===\n          GALLERY_CONSTS[optionsMap.layoutParams.structure.scrollDirection].HORIZONTAL\n      ) {\n        width -=\n          2 *\n          (this.options[optionsMap.layoutParams.navigationArrows.size] +\n            40 +\n            this.options[optionsMap.layoutParams.structure.itemSpacing] / 2);\n      }\n      return width;\n    });\n  }\n\n  getGalleryHeight() {\n    return this.getOrPutInCache('galleryHeight', () => {\n      //const offsetTop = this.options.scrollDirection === GALLERY_CONSTS[optionsMap.layoutParams.structure.scrollDirection].HORIZONTAL ? this.container.offsetTop : 0;\n      const dimensionFix = () =>\n        this.options[optionsMap.layoutParams.structure.scrollDirection] ===\n        GALLERY_CONSTS[optionsMap.layoutParams.structure.scrollDirection].HORIZONTAL\n          ? this.getDimensionFix()\n          : 0;\n      const res = Math.floor((this.container.height > 0 ? this.container.height : 0) + dimensionFix());\n      return res;\n    });\n  }\n\n  getDimensionFix() {\n    return this.getOrPutInCache('dimensionFix', () => {\n      return (\n        Number(this.options[optionsMap.layoutParams.structure.itemSpacing] / 2) -\n        Number(this.options[optionsMap.layoutParams.structure.gallerySpacing])\n      );\n    });\n  }\n\n  getGalleryRatio() {\n    return this.getOrPutInCache('galleryRatio', () => {\n      const res = this.getGalleryDimensions();\n      return res.galleryWidth / res.galleryHeight;\n    });\n  }\n\n  getThumbnailSize() {\n    const fixedThumbnailSize =\n      this.options[optionsMap.layoutParams.thumbnails.size] +\n      this.options[optionsMap.layoutParams.structure.gallerySpacing] +\n      this.options[optionsMap.layoutParams.thumbnails.marginToGallery];\n    return fixedThumbnailSize;\n  }\n\n  getThumbnailHeightDelta() {\n    switch (this.options[optionsMap.layoutParams.thumbnails.alignment]) {\n      case GALLERY_CONSTS[optionsMap.layoutParams.thumbnails.alignment].TOP:\n      case GALLERY_CONSTS[optionsMap.layoutParams.thumbnails.alignment].BOTTOM:\n        return this.getThumbnailSize();\n      case GALLERY_CONSTS[optionsMap.layoutParams.thumbnails.alignment].RIGHT:\n      case GALLERY_CONSTS[optionsMap.layoutParams.thumbnails.alignment].LEFT:\n        return 0;\n      default:\n        break;\n    }\n  }\n  getThumbnailWidthDelta() {\n    switch (this.options[optionsMap.layoutParams.thumbnails.alignment]) {\n      case GALLERY_CONSTS[optionsMap.layoutParams.thumbnails.alignment].TOP:\n      case GALLERY_CONSTS[optionsMap.layoutParams.thumbnails.alignment].BOTTOM:\n        return 0;\n      case GALLERY_CONSTS[optionsMap.layoutParams.thumbnails.alignment].RIGHT:\n      case GALLERY_CONSTS[optionsMap.layoutParams.thumbnails.alignment].LEFT:\n        return this.getThumbnailSize();\n      default:\n        break;\n    }\n  }\n\n  fixHeightForHorizontalGalleryIfNeeded() {\n    if (\n      this.options[optionsMap.layoutParams.structure.scrollDirection] ===\n        GALLERY_CONSTS[optionsMap.layoutParams.structure.scrollDirection].HORIZONTAL &&\n      this.options[optionsMap.layoutParams.structure.galleryRatio.value] > 0\n    ) {\n      if (\n        this.options[optionsMap.layoutParams.thumbnails.enable] &&\n        this.options[optionsMap.layoutParams.thumbnails.position] ===\n          GALLERY_CONSTS[optionsMap.layoutParams.thumbnails.position].OUTSIDE_GALLERY\n      ) {\n        switch (this.options[optionsMap.layoutParams.thumbnails.alignment]) {\n          case GALLERY_CONSTS[optionsMap.layoutParams.thumbnails.alignment].TOP:\n          case GALLERY_CONSTS[optionsMap.layoutParams.thumbnails.alignment].BOTTOM:\n            this.container.height =\n              this.container.width * this.options[optionsMap.layoutParams.structure.galleryRatio.value] +\n              this.getThumbnailHeightDelta();\n            break;\n          case GALLERY_CONSTS[optionsMap.layoutParams.thumbnails.alignment].RIGHT:\n          case GALLERY_CONSTS[optionsMap.layoutParams.thumbnails.alignment].LEFT:\n            this.container.height =\n              (this.container.width - this.getThumbnailWidthDelta()) *\n              this.options[optionsMap.layoutParams.structure.galleryRatio.value];\n            break;\n          default:\n            break;\n        }\n      } else {\n        this.container.height =\n          this.container.width * this.options[optionsMap.layoutParams.structure.galleryRatio.value];\n        if (\n          !this.options[optionsMap.layoutParams.structure.galleryRatio.includeExternalInfo] &&\n          includeExternalInfo.isRelevant(this.options)\n        ) {\n          this.container.height += this.options.externalInfoHeight;\n        }\n      }\n    }\n  }\n}\n\nexport default new DimensionsHelper();\n","export const pick = (obj, keys) => {\n  const res = {};\n  Object.entries(obj || {}).forEach(([key, val]) => {\n    if (keys.indexOf(key) >= 0) {\n      res[key] = val;\n    }\n  });\n  return res;\n};\n\nexport const throttle = (callback, limit) => {\n  let wait = false;\n  let callAfterWait = false;\n  return (...args) => {\n    if (!wait) {\n      callAfterWait = false;\n      callback.apply(this, args);\n      wait = true;\n      setTimeout(() => {\n        callAfterWait && callback.apply(this, args);\n        wait = false;\n      }, limit);\n    } else {\n      callAfterWait = true;\n    }\n  };\n};\n\nexport const debounce = (callback, wait) => {\n  let timeout;\n  return (...args) => {\n    clearTimeout(timeout);\n    timeout = setTimeout(() => {\n      callback.apply(this, args);\n    }, wait);\n  };\n};\n\nexport const get = (obj, path, defaultValue) => {\n  const result = String.prototype.split\n    .call(path, /[,[\\].]+?/)\n    .filter(Boolean)\n    .reduce((res, key) => (res !== null && res !== undefined ? res[key] : res), obj);\n  return result === undefined || result === obj ? defaultValue : result;\n};\n\nexport const isFunction = (something) => typeof something === 'function';\n\nexport const isEqual = (obj1, obj2) => {\n  try {\n    return JSON.stringify(obj1) === JSON.stringify(obj2);\n  } catch (e) {\n    return false;\n  }\n};\n\nexport const isNumber = (n) => {\n  return !isNaN(parseFloat(n)) && isFinite(n);\n};\n","const noop = () => ({});\nconst width = 2560;\nconst height = 1440;\n\nexport const dimsMock = {\n  y: 0,\n  x: 0,\n  width,\n  height,\n  innerWidth: width,\n  innerHeight: height,\n  outerWidth: width,\n  outerHeight: height,\n  clientWidth: width,\n  clientHeight: height,\n};\n\nconst elem = {\n  ...dimsMock,\n  getBoundingClientRect: () => dimsMock,\n};\n\nconst documentMock = {\n  addEventListener: noop,\n  removeEventListener: noop,\n  createEvent: noop,\n  getElementById: () => elem,\n  getElementsByClassName: () => [elem],\n  getElementsByTagName: () => [elem],\n  querySelector: () => [elem],\n  documentElement: elem,\n  activeElement: elem,\n  style: dimsMock,\n  ...dimsMock,\n};\n\ndocumentMock.body = documentMock;\n\nconst locationMock = {\n  href: 'http://mock.wix.com/',\n  protocol: 'http:',\n  host: 'mock.wix.com',\n  hostname: 'mock.wix.com',\n  port: '',\n  pathname: '/',\n  search: '',\n  hash: '',\n};\nexport const scrollMock = {\n  scrollTop: 0,\n  scrollY: 0,\n};\nconst windowHydrateMock = {\n  ...dimsMock,\n  ...scrollMock,\n};\nconst windowMock = {\n  isMock: true,\n  isSSR: true,\n  orientation: 0,\n  devicePixelRatio: 1,\n  addEventListener: noop,\n  removeEventListener: noop,\n  createEvent: noop,\n  CustomEvent: noop,\n  screen: dimsMock,\n  open: noop,\n  petri: {},\n  search: {},\n  location: locationMock,\n  postMessage: noop,\n  requestAnimationFrame: noop,\n  dispatchEvent: noop,\n  document: documentMock,\n  getComputedStyle: noop,\n  localStorage: {},\n  frames: [],\n  ...windowHydrateMock,\n};\n\nexport const hydrateMockMap = new Map(Object.keys(windowHydrateMock).map((key) => [key, windowHydrateMock[key]]));\nwindowMock.parent = windowMock;\n\nexport default windowMock;\n","import WindowMock, { hydrateMockMap } from './window.mock.js';\n\nclass WindowWrapper {\n  constructor() {\n    this.shouldUseMock = true;\n    this.initProxyWindow = this.initProxyWindow.bind(this);\n    if (this.windowIsAvailable()) {\n      // this will wrap the real window with partial mock for the dimensions\n      // once the gallery is mounted we will switch from the mocked properties to the real values\n      this.initProxyWindow();\n    } else {\n      this.initMockWindow();\n    }\n  }\n\n  windowIsAvailable() {\n    try {\n      return typeof window !== 'undefined';\n    } catch (e) {\n      return false;\n    }\n  }\n\n  initProxyWindow() {\n    const handler = {\n      // here the proxy target is the global window object\n      get: function (target, property) {\n        if (hydrateMockMap.has(property) && this.shouldUseMock) {\n          return hydrateMockMap.get(property);\n        }\n        return target[property];\n      }.bind(this),\n      // here we push to the custom props Set to know later if we want to bind the prop\n      // reflect just assigns the proprty and returns boolean if the assign was successfull\n      set: function (target, property, value) {\n        return Reflect.set(target, property, value);\n      },\n    };\n    // eslint-disable-next-line no-undef\n    const windowProxy = new Proxy(window, handler);\n    const windowFuncHandler = {\n      get: function (target, property) {\n        if (!windowProxy.proGalleryCustomProps.has(property) && typeof windowProxy[property] === 'function') {\n          return windowProxy[property].bind(window);\n        }\n        return windowProxy[property];\n      },\n      set: function (target, property, value) {\n        windowProxy.proGalleryCustomProps.add(property);\n        return Reflect.set(windowProxy, property, value);\n      },\n    };\n    if (!windowProxy.proGalleryCustomProps) {\n      windowProxy.proGalleryCustomProps = new Set();\n    }\n    // this second proxy that returnes binded functions to avoid issues with non configurable proprties\n    // eslint-disable-next-line no-undef\n    this.window = new Proxy({}, windowFuncHandler);\n  }\n  initMockWindow() {\n    this.window = WindowMock;\n    this.window.mockInstanceId = Math.floor(Math.random() * 100000);\n  }\n  stopUsingMock() {\n    this.shouldUseMock = false;\n  }\n  get shouldUseMock() {\n    return this._shouldUseMock;\n  }\n  set shouldUseMock(shouldUseMock) {\n    this._shouldUseMock = shouldUseMock;\n  }\n}\n\nconst windowWrapper = new WindowWrapper();\nconst _window = windowWrapper.window;\n\nexport default _window;\nexport { windowWrapper };\n","import VIEW_MODE from '../constants/viewMode.js';\nimport DEVICE_TYPE from '../constants/deviceType.js';\n\nclass ViewModeWrapper {\n  constructor() {\n    this.setViewMode = this.setViewMode.bind(this);\n    this.isSiteMode = this.isSiteMode.bind(this);\n    this.isEditMode = this.isEditMode.bind(this);\n    this.isPreviewMode = this.isPreviewMode.bind(this);\n    this.isSEOMode = this.isSEOMode.bind(this);\n    this.setDeviceType = this.setDeviceType.bind(this);\n    this.isDeviceTypeDesktop = this.isDeviceTypeDesktop.bind(this);\n    this.isDeviceTypeMobile = this.isDeviceTypeMobile.bind(this);\n    this.isDeviceTypeTablet = this.isDeviceTypeTablet.bind(this);\n    this.isDeviceTypeTouch = this.isDeviceTypeTouch.bind(this);\n    this._viewMode = VIEW_MODE.SITE;\n    this._deviceType = DEVICE_TYPE.DESKTOP;\n  }\n\n  setViewMode(viewMode) {\n    this._viewMode = viewMode;\n  }\n  setDeviceType(forceVal) {\n    this._deviceType = forceVal;\n  }\n\n  isDeviceTypeMobile() {\n    return this._deviceType === DEVICE_TYPE.MOBILE;\n  }\n  isDeviceTypeTablet() {\n    return this._deviceType === DEVICE_TYPE.TABLET;\n  }\n  isDeviceTypeDesktop() {\n    return this._deviceType === DEVICE_TYPE.DESKTOP;\n  }\n  isDeviceTypeTouch() {\n    return this.isDeviceTypeMobile() || this.isDeviceTypeTablet();\n  }\n\n  isSiteMode() {\n    return this._viewMode === VIEW_MODE.SITE;\n  }\n\n  isEditMode() {\n    return this._viewMode === VIEW_MODE.EDIT;\n  }\n\n  isPreviewMode() {\n    return this._viewMode === VIEW_MODE.PREVIEW;\n  }\n\n  isSEOMode() {\n    return this._viewMode === VIEW_MODE.SEO;\n  }\n}\n\nconst viewModeWrapper = new ViewModeWrapper();\nconst isSiteMode = viewModeWrapper.isSiteMode;\nconst isEditMode = viewModeWrapper.isEditMode;\nconst isPreviewMode = viewModeWrapper.isPreviewMode;\nconst isSEOMode = viewModeWrapper.isSEOMode;\nconst isDeviceTypeMobile = viewModeWrapper.isDeviceTypeMobile;\nconst isDeviceTypeTablet = viewModeWrapper.isDeviceTypeTablet;\nconst isDeviceTypeDesktop = viewModeWrapper.isDeviceTypeDesktop;\nconst isDeviceTypeTouch = viewModeWrapper.isDeviceTypeTouch;\n\nexport { viewModeWrapper };\nexport { isSiteMode };\nexport { isEditMode };\nexport { isPreviewMode };\nexport { isSEOMode };\nexport { isDeviceTypeMobile };\nexport { isDeviceTypeTablet };\nexport { isDeviceTypeDesktop };\nexport { isDeviceTypeTouch };\n","import * as lodash from './lodash.js';\nimport window from '../window/windowWrapper.js';\nimport { isEditMode, isPreviewMode, isDeviceTypeMobile, isDeviceTypeTouch } from '../window/viewModeWrapper.js';\nimport GALLERY_CONSTS from '../constants/index.js';\nimport optionsMap from '../../core/helpers/optionsMap.js';\n\nclass Utils {\n  constructor() {\n    this._cache = {};\n    this._hash2int = {};\n    this._params = {};\n\n    Object.assign(this, lodash);\n  }\n\n  shouldUseCache() {\n    return !isEditMode() && !isPreviewMode() && !this.isSSR();\n  }\n\n  isUndefined(something) {\n    return typeof something === 'undefined';\n  }\n\n  uniqueBy(array, key) {\n    return array.filter((obj, pos, arr) => {\n      return arr.map((mapObj) => mapObj[key]).indexOf(obj[key]) === pos;\n    });\n  }\n\n  inRange(value, range, max = range) {\n    if (range === 0) {\n      return -1;\n    }\n    while (value < 0) {\n      value += range;\n    }\n    while (value > max) {\n      value -= range;\n    }\n    return value;\n  }\n\n  sliceArrayWithRange(array, start, end) {\n    return Array(end - start)\n      .fill(0)\n      .map((_, i) => {\n        const index = start + i;\n        return array[this.inRange(index, array.length, array.length - 1)];\n      });\n  }\n\n  sliceArrayIfAvailable(array, start, end) {\n    let maxStart = Math.max(start, 0);\n    let minEnd = Math.min(end, array.length);\n    if (maxStart > start) {\n      minEnd = Math.min(minEnd + (maxStart - start), array.length);\n    }\n    if (minEnd < end) {\n      maxStart = Math.max(maxStart - (end - minEnd), 0);\n    }\n    return this.sliceArrayWithRange(array, maxStart, minEnd);\n  }\n\n  dumpCache() {\n    this._cache = {};\n  }\n\n  getOrPutFromCache(fld, func) {\n    if (!this.shouldUseCache()) {\n      return func();\n    }\n    if (this._cache[fld] !== undefined) {\n      return this._cache[fld];\n    }\n    this._cache[fld] = func();\n    return this._cache[fld];\n  }\n\n  hashToInt(str, min, max) {\n    let int = 0;\n\n    if (this.isUndefined(str) || str.length === 0) {\n      return int;\n    }\n\n    if (!this._hash2int[str]) {\n      for (let i = 0; i < str.length; i++) {\n        int += str.charCodeAt(i);\n      }\n      this._hash2int[str] = int;\n    }\n\n    if (this.isUndefined(min) || this.isUndefined(max)) {\n      return this._hash2int[str];\n    } else {\n      return (this._hash2int[str] % (max - min + 1)) + min;\n    }\n  }\n\n  parseGetParam(val, url) {\n    try {\n      if (!this.isUndefined(this._params[val])) {\n        return this._params[val];\n      }\n\n      let result = '',\n        tmp = [];\n\n      let _location = location;\n\n      if (url) {\n        _location = {\n          search: '?' + (url.split('?')[1] || ''),\n          pathname: (url.split('?')[0] || '').split('/')[1] || '',\n        };\n      }\n\n      _location.search\n        // .replace ( \"?\", \"\" )\n        // this is better, there might be a question mark inside\n        .substr(1)\n        .split('&')\n        .forEach((item) => {\n          tmp = item.split('=');\n          if (tmp[0] === val) {\n            result = decodeURIComponent(tmp[1]);\n          }\n        });\n\n      if (!result) {\n        // if the param was not found in the search, try decoding the path\n        const query = decodeURIComponent(_location.pathname).split('?')[1];\n        if (!query) {\n          return '';\n        }\n\n        query.split('&').forEach((item) => {\n          tmp = item.split('=');\n          if (tmp[0] === val) {\n            result = decodeURIComponent(tmp[1]);\n          }\n        });\n      }\n\n      this._params[val] = result;\n\n      return result;\n    } catch (e) {\n      return false;\n    }\n  }\n\n  stripSlashes(str) {\n    let newStr = '';\n    if (typeof str === 'string') {\n      newStr = str\n        .replace(/\\\\\\//g, '/')\n        .replace(/\\\\'/g, \"'\")\n        .replace(/\\\\\"/g, '\"')\n        .replace(/\\\\0/g, '\\0')\n        .replace(/\\\\\\\\/g, '\\\\');\n    }\n    return newStr;\n  }\n\n  parseStringObject(sObj) {\n    if (typeof sObj !== 'string') {\n      return sObj;\n    }\n\n    const stripedObj = this.stripSlashes(sObj);\n    if (\n      typeof sObj === 'string' &&\n      /^[\\],:{}\\s]*$/.test(\n        stripedObj\n          .replace(/\\\\[\"\\\\/bfnrtu]/g, '@')\n          .replace(/\"[^\"\\\\\\n\\r]*\"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+-]?\\d+)?/g, ']')\n          .replace(/(?:^|:|,)(?:\\s*\\[)+/g, '')\n      )\n    ) {\n      // this is a json\n      try {\n        return JSON.parse(stripedObj);\n      } catch (e) {\n        // console.error('Parse object error: Catched ', e);\n      }\n    }\n    return stripedObj;\n  }\n\n  hashCode(str) {\n    let hash = 0,\n      i,\n      chr;\n    if (str.length === 0) return hash;\n    for (i = 0; i < str.length; i++) {\n      chr = str.charCodeAt(i);\n      hash = (hash << 5) - hash + chr;\n      hash |= 0; // Convert to 32bit integer\n    }\n    return hash;\n  }\n\n  isMobileByProps() {\n    const _isMobileByProps = () => {\n      const deviceType = this.parseGetParam('deviceType') || window.deviceType;\n      const isMobileViewer = this.parseGetParam('showMobileView') === 'true';\n      const deviceTypeMobile = isDeviceTypeMobile();\n      if (isMobileViewer) {\n        return true;\n      } else if (deviceType) {\n        return String(deviceType).toLowerCase().indexOf('mobile') >= 0;\n      } else if (deviceTypeMobile) {\n        return deviceTypeMobile;\n      } else {\n        return undefined;\n      }\n    };\n\n    return this.getOrPutFromCache('isMobileByProps', _isMobileByProps);\n  }\n\n  isUserAgentMobile() {\n    try {\n      const _isUserAgentMobile = () => {\n        let check = false;\n        (function (a) {\n          if (\n            /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|pixel|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(\n              a\n            ) ||\n            /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55\\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\\/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/i.test(\n              a.substr(0, 4)\n            )\n          ) {\n            check = true;\n          }\n        })(navigator.userAgent || navigator.vendor || window.opera);\n        return check;\n      };\n\n      return this.getOrPutFromCache('isUserAgentMobile', _isUserAgentMobile);\n    } catch (e) {\n      return false;\n    }\n  }\n\n  isMobile() {\n    const _isMobile = () => {\n      const isMobileByProps = this.isMobileByProps();\n      const isUserAgentMobile = this.isUserAgentMobile();\n\n      return this.isUndefined(isMobileByProps) ? isUserAgentMobile : isMobileByProps;\n    };\n\n    return this.getOrPutFromCache('isMobile', _isMobile);\n  }\n\n  isTouch() {\n    const _isTouch = () => {\n      const isTouchByProps = isDeviceTypeTouch();\n      const isTouchBrowser =\n        window.navigator?.maxTouchPoints > 0 || // checking if navigator exists because of SSR\n        'ontouchstart' in window.document.documentElement;\n\n      return this.isUndefined(isTouchByProps) ? isTouchBrowser : isTouchByProps;\n    };\n\n    return this.getOrPutFromCache('isTouch', _isTouch);\n  }\n\n  isTest() {\n    try {\n      return window.isTest;\n    } catch (e) {\n      return false;\n    }\n  }\n\n  isLocal() {\n    try {\n      const host = window.location.hostname;\n      if (host === 'local.wix.com') {\n        return true;\n      }\n      if (host.indexOf('localhost') >= 0) {\n        return true;\n      }\n      if (this.parseGetParam('debug') === 'true') {\n        return true;\n      }\n      return false;\n    } catch (E) {\n      return false;\n    }\n  }\n\n  isDev() {\n    return this.getOrPutFromCache('isDev', () => {\n      return (\n        this.shouldDebug('ph_local') ||\n        (this.isOOI() && process.env.NODE_ENV === 'development') ||\n        (this.safeLocalStorage() || {}).forceDevMode === 'true'\n      );\n    });\n  }\n\n  isVerbose() {\n    return !this.isTest() && (this.safeLocalStorage() || {}).forceDevMode === 'true';\n  }\n\n  isStoreGallery() {\n    return this.getOrPutFromCache('isStoreGallery', () => {\n      try {\n        return window.location.search.toLowerCase().indexOf('isstore') > -1;\n      } catch (e) {\n        if (this.isDev()) {\n          console.error('cant find window', e);\n        }\n        return false;\n      }\n    });\n  }\n\n  // TODO : Replace with isPrerender mode\n  isSSR() {\n    return typeof global !== 'undefined' && typeof global?.window === 'undefined';\n  }\n\n  isOOI() {\n    return (\n      this.isSSR() ||\n      (typeof top !== 'undefined' &&\n        typeof self !== 'undefined' &&\n        (top === self || self.location.origin.includes('editor.wix.com')))\n    );\n  }\n\n  generateUUID() {\n    return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n      const r = Math.floor(Math.random() * 16) || 0;\n      return c === 'x' ? r.toString(16) : c;\n    });\n  }\n\n  isExternalUrl(url) {\n    return /(^https?)|(^data)|(^blob)/.test(url);\n  }\n\n  isiOS() {\n    return this.getOrPutFromCache('isiOS', () => {\n      try {\n        return /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;\n      } catch (e) {\n        return false;\n      }\n    });\n  }\n\n  isiPhone() {\n    return this.getOrPutFromCache('isiPhone', () => {\n      try {\n        return /iPhone/.test(navigator.userAgent) && !window.MSStream;\n      } catch (e) {\n        return false;\n      }\n    });\n  }\n\n  isLandscape() {\n    return this.getOrPutFromCache('isLandscape', () => {\n      if (!this.isMobile()) {\n        return false;\n      }\n      try {\n        if (!this.isUndefined(window.orientation)) {\n          return window.orientation === 90 || window.orientation === -90;\n        } else {\n          const mql = window.matchMedia('(orientation: landscape)');\n          if (mql && mql.matches === true) {\n            return true;\n          } else {\n            return false;\n          }\n        }\n      } catch (e) {\n        return false;\n      }\n    });\n  }\n\n  safeLocalStorage() {\n    try {\n      return localStorage ? localStorage : window; // TrackJS errors, function returning null\n    } catch (e) {\n      return window;\n    }\n  }\n\n  shouldDebug(str) {\n    try {\n      return (\n        !!this.safeLocalStorage()[str] ||\n        (window.debugApp || '').indexOf(str) >= 0 ||\n        (this.parseGetParam('debugApp') || '').indexOf(str) >= 0\n      );\n    } catch (e) {\n      return false;\n    }\n  }\n\n  deviceHasMemoryIssues() {\n    return this.isiOS();\n  }\n\n  getTabIndex(elementName) {\n    const elementsArr = [\n      'currentGalleryItem',\n      'loadMoreButton',\n      'slideshowNext',\n      'slideshowPrev',\n      'currentThumbnail',\n      'slideshowLove',\n      'slideshowShare',\n\n      'cartIcon',\n      'cartClose',\n      'cartFrame',\n\n      'fullscreenClose',\n      'fullscreenNext',\n      'fullscreenPrev',\n      'fullscreenInfo',\n      // 'fullscreenTitle',\n      // 'fullscreenDesc',\n      'fullscreenLink',\n      'fullscreenProvider',\n      'fullscreenCartButton',\n      'fullscreenCheckout',\n      'fullscreenExpand',\n      'fullscreenVideoPlay',\n      'fullscreenVideoBar',\n      'fullscreenVideoMute',\n      'fullscreenVideoVolume',\n      'fullscreenCartIcon',\n      'fullscreenDownload',\n      'fullscreenLove',\n      'fullscreenShare',\n    ];\n\n    const elementIdx = elementsArr.indexOf(elementName) + 1;\n    if (elementIdx >= 0 && this.isOOI()) {\n      return 0;\n    }\n    return elementIdx || -1; // no tabIndex (tab will not focus on this item)\n  }\n\n  setStateAndLog(that, caller, state, callback) {\n    if (this.isVerbose()) {\n      console.log(`State Change Called (${caller})`, state);\n      const oldState = { ...that.state };\n      that.setState(state, () => {\n        const newState = { ...that.state };\n        const change = this.printableObjectsDiff(oldState, newState, 'state');\n        if (Object.keys(change).length > 0) {\n          console.log(`State Change Completed (${caller})`, change);\n        }\n        if (this.isFunction(callback)) {\n          callback.bind(that)();\n        }\n      });\n    } else {\n      that.setState(state, () => {\n        if (this.isFunction(callback)) {\n          callback.bind(that)();\n        }\n      });\n    }\n  }\n\n  printableObjectsDiff(obj1, obj2, prefix = '') {\n    const _toString = (v) => {\n      if (v === '') {\n        v = \"''\";\n      } else if (this.isUndefined(v)) {\n        v = 'undefined';\n      }\n      return String(v);\n    };\n\n    const getInnerDiff = (_obj1 = {}, _obj2 = {}, _prefix, depth = 1) => {\n      if (depth > 3) {\n        return {};\n      }\n      const innerDiff = Object.entries(_obj1).reduce((res, [k, v]) => {\n        if (!this.isEqual(v, _obj2[k])) {\n          if (Array.isArray(_obj2[k])) {\n            if (v.length !== _obj2[k].length) {\n              res[k + '.length'] = '[' + v.length + '] => [' + _obj2[k].length + ']';\n            }\n            res = Object.assign(res, getInnerDiff(v, _obj2[k], (_prefix ? _prefix + '.' : '') + k, depth + 1));\n          } else if (typeof _obj2[k] === 'object') {\n            res = Object.assign(res, getInnerDiff(v, _obj2[k], (_prefix ? _prefix + '.' : '') + k, depth + 1));\n          } else {\n            res[(_prefix ? _prefix + '.' : '') + k] = _toString(v) + ' => ' + _toString(_obj2[k]);\n          }\n        }\n        return res;\n      }, {});\n      return innerDiff;\n    };\n\n    return getInnerDiff(obj1, obj2, prefix, 1);\n  }\n\n  getScreenWidth() {\n    if (isPreviewMode() && this.isMobile()) {\n      // In editor preview-mode, the screen is still a desktop, but the viewport in which the preview mode renders us is only 320, so 'window.screen.width' returns a wrong value.\n      return 320;\n    }\n    if (this.isTest()) {\n      return 1920;\n    }\n    try {\n      if (this.isLandscape()) {\n        return Math.max(window.screen.width, window.screen.height);\n      } else {\n        return window.screen.width;\n      }\n    } catch (e) {\n      return 1920;\n    }\n  }\n\n  getScreenHeight() {\n    if (this.isTest()) {\n      return 1200;\n    }\n    try {\n      if (this.isLandscape()) {\n        return Math.min(window.screen.width, window.screen.height);\n      } else {\n        return window.screen.height;\n      }\n    } catch (e) {\n      return 1200;\n    }\n  }\n\n  getWindowWidth() {\n    try {\n      return window.innerWidth || 980;\n    } catch (e) {\n      return 980;\n    }\n  }\n\n  getMobileEnabledClick(action) {\n    // todo: bring back this line before pushing to master\n    return this.isMobile() ? { onTouchEnd: action } : { onClick: action };\n    // return {onClick: action};\n  }\n\n  getTopUrlParam(name) {\n    if (this.isUndefined(this._cache.params)) {\n      this._cache.params = {};\n    }\n    if (this.isUndefined(this._cache.params[name])) {\n      try {\n        this._cache.params[name] = top.location.search\n          .replace('?', '')\n          .split('&')\n          .map((ele) => {\n            const arr = ele.split('=');\n            return arr[0] === name ? arr[1] || '' : '';\n          })\n          .join('');\n      } catch (e) {\n        this._cache.params[name] = false;\n        // console.log('caught cross origin error');\n        // comment to avoid 'block is empty' from linter\n      }\n    }\n    return this._cache.params[name];\n  }\n\n  scrollTo(element, to, duration, isHorizontal, callback) {\n    if (this.isMobile()) {\n      duration = 0; // do not animate scroll on mobile (looks jumpy and buggy)\n    }\n\n    const easeInOutQuad = (currentTime, start, change, _duration) => {\n      // t = current time\n      // b = start value\n      // c = change in value\n      // d = _duration\n      if (_duration === 0) {\n        return change + start;\n      }\n\n      currentTime /= _duration / 2;\n      if (currentTime < 1) {\n        return (change / 2) * currentTime * currentTime + start;\n      }\n      currentTime--;\n      return (-change / 2) * (currentTime * (currentTime - 2) - 1) + start;\n    };\n\n    const start = isHorizontal ? element.scrollLeft : element.scrollTop;\n    const change = to - start;\n    let currentTime = 0;\n    const increment = 20;\n\n    const animateScroll = () => {\n      currentTime += increment;\n      const val = easeInOutQuad(currentTime, start, change, duration);\n\n      if (currentTime < duration) {\n        setTimeout(animateScroll, increment);\n      } else {\n        element.setAttribute('data-scrolling', '');\n        if (typeof callback === 'function') {\n          callback();\n        }\n      }\n\n      if (isHorizontal) {\n        element.scrollLeft = val;\n      } else {\n        element.scrollTop = val;\n      }\n    };\n\n    element.setAttribute('data-scrolling', 'true');\n    animateScroll();\n  }\n\n  formatColor(color) {\n    const defaultColor = 'inherit';\n    if (!color) {\n      return defaultColor;\n    }\n    const colorStr = color.value ? color.value : color;\n    const colorRegex = /(?:#|0x)(?:[A-Fa-f0-9]{3}|[A-Fa-f0-9]{6})\\b|(?:rgb|hsl)a?\\([^)]*\\)/;\n    const regexRes = colorRegex.exec(colorStr);\n    const isValidColor = regexRes && regexRes[0];\n    return isValidColor ? colorStr : defaultColor;\n  }\n\n  logPlaygroundLink(options) {\n    try {\n      if (this.isVerbose()) {\n        const optionsStr = Object.entries(options)\n          .filter(\n            ([key, val]) =>\n              typeof val !== 'object' && String(key).indexOf('Expand') === -1 && String(key).indexOf('Color') === -1\n          )\n          .map(([key, val]) => `${key}=${encodeURI(val)}`)\n          .join('&');\n\n        console.log('Gallery Playground link:', `https://pro-gallery.surge.sh?${optionsStr}`);\n      }\n    } catch (e) {\n      console.error(e);\n    }\n  }\n\n  isSingleItemHorizontalDisplay(options) {\n    return (\n      options.scrollDirection === GALLERY_CONSTS[optionsMap.layoutParams.structure.scrollDirection].HORIZONTAL &&\n      options[optionsMap.layoutParams.groups.groupSize] === 1 &&\n      options[optionsMap.layoutParams.crop.enable] &&\n      options[optionsMap.layoutParams.crop.ratios].length === 1 &&\n      options[optionsMap.layoutParams.crop.ratios][0] === '100%/100%'\n    );\n  }\n\n  getAriaAttributes({ proGalleryRole, proGalleryRegionLabel }) {\n    const role = proGalleryRole || 'region';\n    const roledescription = proGalleryRole === 'application' ? 'gallery application' : 'region';\n    const attr = {\n      role: proGalleryRole || 'region',\n      ['aria-label']: proGalleryRegionLabel,\n    };\n    if (role !== roledescription) {\n      attr['aria-roledescription'] = roledescription;\n    }\n    return attr;\n  }\n\n  focusGalleryElement(element) {\n    element.focus();\n  }\n\n  isMeaningfulString(str) {\n    if (typeof str !== 'string') return false;\n    return !!str.trim().length;\n  }\n\n  isHeightSetByGallery(options) {\n    return (\n      options[optionsMap.layoutParams.structure.scrollDirection] ===\n        GALLERY_CONSTS[optionsMap.layoutParams.structure.scrollDirection].VERTICAL &&\n      !options[optionsMap.behaviourParams.gallery.vertical.loadMore.enable]\n    ); //v5 TODO!!! NEW STYLEPARAMS METHOD POSSIBLE BUG FOUND Could be that I need to add the horizontal gallery ratio thing here....\n  }\n}\n\nexport default new Utils();\n/* eslint-enable prettier/prettier */\n","import {\n  hasExternalVerticalPlacement,\n  hasExternalHorizontalPlacement,\n} from '../../common/constants/layoutParams_info_placement.js';\nimport { default as GALLERY_CONSTS } from '../../common/constants/index.js';\nimport optionsMap from './optionsMap.js';\n\nconst processTextDimensions = (options, customExternalInfoRendererExists) => {\n  let _options = { ...options };\n\n  _options[optionsMap.layoutParams.info.height] = getTextBoxAboveOrBelowHeight(\n    _options,\n    customExternalInfoRendererExists\n  );\n\n  _options.externalInfoHeight = getHeightFromOptions(_options, _options[optionsMap.layoutParams.info.height]);\n\n  _options.externalInfoWidth = getTextBoxRightOrLeftWidth(_options, customExternalInfoRendererExists);\n  return _options;\n};\n\nfunction getHeightFromOptions(options, infoHeight) {\n  let additionalHeight = infoHeight;\n  if (\n    infoHeight > 0 &&\n    hasExternalVerticalPlacement(options[optionsMap.layoutParams.info.placement]) &&\n    options[optionsMap.layoutParams.info.layout] ===\n      GALLERY_CONSTS[optionsMap.layoutParams.info.layout].SEPARATED_BACKGROUND\n  ) {\n    additionalHeight += options[optionsMap.layoutParams.info.spacing];\n    additionalHeight += options[optionsMap.layoutParams.info.border.width] * 2;\n  }\n  return additionalHeight;\n}\n\nfunction getTextBoxRightOrLeftWidth(options, customExternalInfoRendererExists) {\n  if (!shouldShowTextRightOrLeft(options, customExternalInfoRendererExists)) {\n    return 0;\n  }\n  let width = 0;\n  if (\n    options[optionsMap.layoutParams.info.sizeUnits] === GALLERY_CONSTS[optionsMap.layoutParams.info.sizeUnits].PERCENT\n  ) {\n    width = Math.min(100, Math.max(0, options[optionsMap.layoutParams.info.width])) / 100;\n  } else {\n    width = options[optionsMap.layoutParams.info.width];\n  }\n  return width;\n}\n\nfunction shouldShowTextRightOrLeft(options, customExternalInfoRendererExists) {\n  const allowedByLayoutConfig =\n    options[optionsMap.layoutParams.structure.scrollDirection] ===\n      GALLERY_CONSTS[optionsMap.layoutParams.structure.scrollDirection].VERTICAL &&\n    options[optionsMap.layoutParams.structure.layoutOrientation] ===\n      GALLERY_CONSTS[optionsMap.layoutParams.structure.layoutOrientation].VERTICAL &&\n    options[optionsMap.layoutParams.groups.groupSize] === 1;\n\n  return (\n    allowedByLayoutConfig &&\n    hasExternalHorizontalPlacement(options[optionsMap.layoutParams.info.placement]) &&\n    customExternalInfoRendererExists\n  );\n}\n\nfunction getTextBoxAboveOrBelowHeight(options, customExternalInfoRendererExists) {\n  if (!shouldShowTextBoxAboveOrBelow(options, customExternalInfoRendererExists)) {\n    return 0;\n  }\n  return options[optionsMap.layoutParams.info.height];\n}\n\nfunction shouldShowTextBoxAboveOrBelow(options, customExternalInfoRendererExists) {\n  return (\n    hasExternalVerticalPlacement(options[optionsMap.layoutParams.info.placement]) && customExternalInfoRendererExists\n  );\n}\n\nexport default processTextDimensions;\n/* eslint-enable prettier/prettier */\n","import { default as GALLERY_CONSTS } from '../../common/constants/index.js';\n\nexport const formatTitle = (title) =>\n  title\n    .replace(/_/g, ' ')\n    .split(' ')\n    .map((word) => word[0].toUpperCase() + word.substr(1).toLowerCase())\n    .join(' ');\nexport const createOptions = (constName) =>\n  Object.entries(GALLERY_CONSTS[constName]).map(([title, value]) => ({\n    value,\n    title: formatTitle(title),\n  }));\n","import { INPUT_TYPES } from '../utils/constants.js';\nimport { default as GALLERY_CONSTS } from '../../common/constants/index.js';\nimport { createOptions } from '../utils/utils.js';\nimport optionsMap from '../../core/helpers/optionsMap.js';\n\nexport default {\n  title: 'Slide Animation',\n  isRelevant: (options) =>\n    options[optionsMap.layoutParams.structure.scrollDirection] ===\n      GALLERY_CONSTS[optionsMap.layoutParams.structure.scrollDirection].HORIZONTAL &&\n    options[optionsMap.layoutParams.groups.groupSize] === 1 &&\n    options[optionsMap.layoutParams.crop.enable] &&\n    JSON.stringify(options[optionsMap.layoutParams.crop.ratios]) === JSON.stringify(['100%/100%']), //v5 TODO check that this works\n  isRelevantDescription:\n    'Set a Horizontal gallery (\"Scroll Direction\" as \"Horizontal\"), set \"Max Group Size\" to \"1\" and set \"Crop Images\" to true.',\n  type: INPUT_TYPES.OPTIONS,\n  default: GALLERY_CONSTS[optionsMap.behaviourParams.gallery.horizontal.slideAnimation].SCROLL, //one source\n  get options() {\n    return createOptions(optionsMap.behaviourParams.gallery.horizontal.slideAnimation);\n  },\n  description: `Choose the slide animation effect to be used when navigating between items in a slideshow`,\n};\n","import { INPUT_TYPES } from '../utils/constants.js';\nimport { default as GALLERY_CONSTS } from '../../common/constants/index.js';\nimport { createOptions } from '../utils/utils.js';\nimport optionsMap from '../../core/helpers/optionsMap.js';\n\nexport default {\n  title: 'Scroll Direction',\n  isRelevant: () => true,\n  isRelevantDescription: 'Always relevant.',\n  type: INPUT_TYPES.OPTIONS,\n  default: GALLERY_CONSTS[optionsMap.layoutParams.structure.scrollDirection].VERTICAL,\n  get options() {\n    return createOptions(optionsMap.layoutParams.structure.scrollDirection);\n  },\n  description: `Toggle between two types of galleries. Vertical and Horizontal. Notice that many options are available only for a specific scroll direction.`,\n};\n","import { INPUT_TYPES } from '../utils/constants.js';\nimport { default as GALLERY_CONSTS } from '../../common/constants/index.js';\nimport { default as layoutParams_structure_scrollDirection } from './layoutParams_structure_scrollDirection.js';\nimport optionsMap from '../../core/helpers/optionsMap.js';\n\nexport default {\n  title: 'Show Navigation Arrows',\n  description: `Choose if you want to have navigation arrows in a sliding gallery`,\n  isRelevant: (options) =>\n    layoutParams_structure_scrollDirection.isRelevant(options) &&\n    options[optionsMap.layoutParams.structure.scrollDirection] ===\n      GALLERY_CONSTS[optionsMap.layoutParams.structure.scrollDirection].HORIZONTAL,\n  isRelevantDescription: 'Set a Horizontal gallery (\"Scroll Direction\" as \"Horizontal\").',\n  type: INPUT_TYPES.BOOLEAN,\n  default: true,\n};\n","import { INPUT_TYPES } from '../utils/constants.js';\nimport { default as GALLERY_CONSTS } from '../../common/constants/index.js';\nimport { createOptions } from '../utils/utils.js';\nimport { default as layoutParams_navigationArrows_enable } from './layoutParams_navigationArrows_enable.js';\nimport optionsMap from '../../core/helpers/optionsMap.js';\n\nexport default {\n  title: 'Navigation Arrows Position',\n  isRelevant: (options) =>\n    layoutParams_navigationArrows_enable.isRelevant(options) &&\n    options[optionsMap.layoutParams.navigationArrows.enable],\n  isRelevantDescription:\n    'Set a Horizontal gallery (\"Scroll Direction\" as \"Horizontal\") and set \"Show Navigation Arrows\" to \"true\".',\n  type: INPUT_TYPES.OPTIONS,\n  default: GALLERY_CONSTS.layoutParams_navigationArrows_position.ON_GALLERY,\n  get options() {\n    return createOptions('layoutParams_navigationArrows_position');\n  },\n  description: `Set the position of the navigation arrows in sliders. You can choose to position the arrows on the gallery (ON_GALLERY)\n  ,outside the gallery (OUTSIDE_GALLERY- in these case the gallery will margins from both sides to make room for the arrows), or on the mouse cursor (still in experimental mode).);\n  `,\n};\n","/* eslint-disable prettier/prettier */\nimport utils from '../../common/utils/index.js';\nimport window from '../../common/window/windowWrapper.js';\nimport {\n  hasHoverPlacement,\n  isConstantVerticalPlacement,\n  isHoverPlacement,\n} from '../../common/constants/layoutParams_info_placement.js';\nimport { default as GALLERY_CONSTS } from '../../common/constants/index.js';\nimport processTextDimensions from './textBoxDimensionsHelper.js'\nimport { default as slideAnimation } from '../../settings/options/behaviourParams_gallery_horizontal_slideAnimation.js';\nimport { default as arrowsPosition } from '../../settings/options/layoutParams_navigationArrows_position.js';\nimport optionsMap from './optionsMap.js';\n\nexport const calcTargetItemSize = (options, smartValue) => { \n  if (\n    options[optionsMap.layoutParams.targetItemSize.unit] === GALLERY_CONSTS[optionsMap.layoutParams.targetItemSize.unit].PIXEL &&\n    options[optionsMap.layoutParams.targetItemSize.value] > 0\n  ) {\n    return options[optionsMap.layoutParams.targetItemSize.value];\n  } else if (\n    options[optionsMap.layoutParams.targetItemSize.unit] === GALLERY_CONSTS[optionsMap.layoutParams.targetItemSize.unit].PERCENT &&\n    options[optionsMap.layoutParams.targetItemSize.value] > 0\n  ) {\n    return (\n      ((window && window.innerWidth) || 980) * (options[optionsMap.layoutParams.targetItemSize.value] / 100)\n    );\n  } else if(smartValue > 0) {\n    return smartValue;\n  } else {\n    return options[optionsMap.layoutParams.targetItemSize.value];\n  }\n};\n\nexport const processNumberOfImagesPerRow = (options) => { \n  //This will be used in the masonry and grid presets\n  let res = {...options}\n  res = fixColumnsIfNeeded(res);\n  if (\n    res[optionsMap.layoutParams.structure.scrollDirection] ===\n    GALLERY_CONSTS[optionsMap.layoutParams.structure.scrollDirection].VERTICAL || //relevant for grid, in Masonry its fixed to !oneRow\n    res[optionsMap.layoutParams.structure.layoutOrientation] ===\n    GALLERY_CONSTS[\n      optionsMap.layoutParams.structure.layoutOrientation\n    ].VERTICAL //relevant for masonry, in grid its fixed to vertical.\n  ) {\n    res[optionsMap.layoutParams.groups.allowedGroupTypes] = [\n      GALLERY_CONSTS[optionsMap.layoutParams.groups.allowedGroupTypes]['1'],\n    ];\n    res[optionsMap.layoutParams.groups.groupSize] = 1;\n    // res.collageAmount = 0; //doesnt really exist. I'll comment and then remove.\n    res[optionsMap.layoutParams.groups.density] = 0;\n  }\n  return res;\n}\n\nexport const fixColumnsIfNeeded = (options) => {\n  let res = {...options}\n  res.fixedColumns = 0;\n  if (\n    res[optionsMap.layoutParams.structure.scrollDirection] ===\n    GALLERY_CONSTS[optionsMap.layoutParams.structure.scrollDirection].VERTICAL || //relevant for grid, in Masonry its fixed to !oneRow\n    res[optionsMap.layoutParams.structure.layoutOrientation] ===\n    GALLERY_CONSTS[\n      optionsMap.layoutParams.structure.layoutOrientation\n    ].VERTICAL //relevant for masonry, in grid its fixed to vertical.\n  ) {\n    res.fixedColumns = // a layouter thing\n      options[optionsMap.layoutParams.structure.responsiveMode] === GALLERY_CONSTS[optionsMap.layoutParams.structure.responsiveMode].SET_ITEMS_PER_ROW\n        ? res[optionsMap.layoutParams.structure.numberOfColumns]\n        : 0;\n  }\n  return res;\n}\n\nexport const processGridStyle = (options) => { \n  let res = {...options};\n  const isVerticalOrientation =\n    res[optionsMap.layoutParams.structure.layoutOrientation] ===\n    GALLERY_CONSTS[optionsMap.layoutParams.structure.layoutOrientation]\n      .VERTICAL;\n  res[optionsMap.layoutParams.structure.responsiveMode] =\n  isVerticalOrientation ? options[optionsMap.layoutParams.structure.responsiveMode] : GALLERY_CONSTS[optionsMap.layoutParams.structure.responsiveMode].FIT_TO_SCREEN;\n  return res;\n}\n\nexport const processNumberOfImagesPerCol = (options) => { \n  //This will be used in the grid preset\n  let res = {...options}\n  if (\n    !utils.isUndefined(options[optionsMap.layoutParams.structure.numberOfGridRows]) &&\n    options[optionsMap.layoutParams.structure.scrollDirection] ===\n    GALLERY_CONSTS[optionsMap.layoutParams.structure.scrollDirection].HORIZONTAL ) {\n      res[optionsMap.layoutParams.structure.numberOfColumns] = 0;\n    switch (options[optionsMap.layoutParams.structure.numberOfGridRows]) {\n      case 1:\n      default:\n        res[optionsMap.layoutParams.groups.allowedGroupTypes] = [\n          GALLERY_CONSTS[optionsMap.layoutParams.groups.allowedGroupTypes]['1'],\n        ];\n        res[optionsMap.layoutParams.groups.groupSize] = 1;\n        // res.collageAmount = 0;\n        res[optionsMap.layoutParams.groups.density] = 0;\n        break;\n      case 2:\n        res[optionsMap.layoutParams.groups.allowedGroupTypes] = [\n          GALLERY_CONSTS[optionsMap.layoutParams.groups.allowedGroupTypes]['2v'],\n        ];\n        res[optionsMap.layoutParams.groups.groupSize] = 2;\n        // res.collageAmount = 1;\n        res[optionsMap.layoutParams.groups.density] = 1;\n        break;\n      case 3:\n        res[optionsMap.layoutParams.groups.allowedGroupTypes] = [\n          GALLERY_CONSTS[optionsMap.layoutParams.groups.allowedGroupTypes]['3v'],\n        ];\n        res[optionsMap.layoutParams.groups.groupSize] = 3;\n        // res.collageAmount = 1;\n        res[optionsMap.layoutParams.groups.density] = 1;\n        break;\n    }\n  }\n  return res\n}\n\nconst forceInfoOnHoverWhenNeeded = (options) =>{ \n  let _options = {...options}\nif (    \n  !GALLERY_CONSTS.isLayout('SLIDER')(_options) && //not slider\n  !GALLERY_CONSTS.isLayout('COLUMN')(_options) &&  //not columns\n  !GALLERY_CONSTS.isLayout('SLIDESHOW')(_options) //not columns\n  ) {\n    if (\n      (_options[optionsMap.layoutParams.structure.layoutOrientation] === GALLERY_CONSTS[optionsMap.layoutParams.structure.layoutOrientation].HORIZONTAL || //layout orientation is horizontal\n        _options[optionsMap.layoutParams.groups.groupSize] > 1) //groups are larger than one (items can be on top or right left of eachother)\n    ) {\n      // Dont allow info placement to be external\n      _options[optionsMap.layoutParams.info.placement] = GALLERY_CONSTS[optionsMap.layoutParams.info.placement].OVERLAY;\n    }\n  }\n\n  return _options;\n}\n\nconst forceHoverToShowTextsIfNeeded = (options) => { \n  let _options = {...options}\n  if(options.EXPERIMENTALallowParallelInfos) return _options\n  if (\n    !hasHoverPlacement(_options[optionsMap.layoutParams.info.placement]) &&\n    _options[optionsMap.behaviourParams.item.overlay.hoveringBehaviour] !== GALLERY_CONSTS[optionsMap.behaviourParams.item.overlay.hoveringBehaviour].NEVER_SHOW\n  ) {\n    _options[optionsMap.behaviourParams.item.overlay.hoveringBehaviour] = GALLERY_CONSTS[optionsMap.behaviourParams.item.overlay.hoveringBehaviour].APPEARS;\n  }\n  return _options\n}\n\nconst blockScrollOnFadeOrDeckScrollAnimations = (options) => { \n  let _options = {...options}\n  if ((\n    options[optionsMap.behaviourParams.gallery.horizontal.slideAnimation] === GALLERY_CONSTS[optionsMap.behaviourParams.gallery.horizontal.slideAnimation].FADE ||\n    options[optionsMap.behaviourParams.gallery.horizontal.slideAnimation] === GALLERY_CONSTS[optionsMap.behaviourParams.gallery.horizontal.slideAnimation].DECK\n  ) && (slideAnimation.isRelevant(options))) {\n    _options[optionsMap.behaviourParams.gallery.horizontal.blockScroll] = true;\n  }\n\n  return _options\n}\n\nconst blockVideoControlsOnMouseCursorNavigation = (options) => { \n  let _options = {...options}\n  if ((options[optionsMap.layoutParams.navigationArrows.position] === GALLERY_CONSTS[optionsMap.layoutParams.navigationArrows.position].MOUSE_CURSOR) && (arrowsPosition.isRelevant(options))) {\n    _options[optionsMap.behaviourParams.item.video.enableControls] = false;\n  }\n  return _options\n}\n\nconst blockMouseCursorNavigationOnTouchDevice = (options) => { \n  let _options = {...options}\n  if (utils.isTouch() && (options[optionsMap.layoutParams.navigationArrows.position] === GALLERY_CONSTS[optionsMap.layoutParams.navigationArrows.position].MOUSE_CURSOR) && (arrowsPosition.isRelevant(options))) {\n    _options[optionsMap.layoutParams.navigationArrows.enable] = false;\n\n  }\n  return _options\n}\n\nconst removeShadowOnHorizontalGalleries = (options) => { \n  let _options = {...options}\n  if(_options[optionsMap.stylingParams.itemEnableShadow] && _options[optionsMap.layoutParams.structure.scrollDirection] === GALLERY_CONSTS[optionsMap.layoutParams.structure.scrollDirection].HORIZONTAL) {\n    _options[optionsMap.stylingParams.itemEnableShadow] = false;\n  }\n  return _options;\n}\n\nconst forceHorizontalOrientationInHorizontalGalleries = (options) => { \n  let _options = {...options}\n  if (_options[optionsMap.layoutParams.structure.scrollDirection] === GALLERY_CONSTS[optionsMap.layoutParams.structure.scrollDirection].HORIZONTAL) {\n    // in horizontal galleries allow only horizontal orientation\n    _options[optionsMap.layoutParams.structure.layoutOrientation] = GALLERY_CONSTS[optionsMap.layoutParams.structure.layoutOrientation].HORIZONTAL;\n  }\n  return _options;\n}\n\nconst removeLoopOnVerticalGalleries = (options) => { \n  let _options = {...options}\n  if (_options[optionsMap.layoutParams.structure.scrollDirection] === GALLERY_CONSTS[optionsMap.layoutParams.structure.scrollDirection].VERTICAL) {\n    _options[optionsMap.behaviourParams.gallery.horizontal.loop] = false; // allow loop only for horizontal layouts\n  }\n  return _options;\n}\n\nconst limitImageMargin = (options) => { \n  let _options = {...options}\n  if (_options[optionsMap.layoutParams.structure.itemSpacing] > 0) {\n    _options[optionsMap.layoutParams.structure.itemSpacing] = Math.min(_options[optionsMap.layoutParams.structure.itemSpacing], 50); // limit mobile spacing to 50px (25 on each side)\n  }\n  return _options;\n}\n\nconst forceScrollAnimationOnSingleImageInViewGalleries = (options) => { \n  let _options = {...options}\n  if (\n    _options[optionsMap.layoutParams.structure.scrollDirection] === GALLERY_CONSTS[optionsMap.layoutParams.structure.scrollDirection].VERTICAL ||\n    _options[optionsMap.layoutParams.groups.groupSize] > 1 ||\n    !_options[optionsMap.layoutParams.crop.enable]\n  ) {\n    _options[optionsMap.behaviourParams.gallery.horizontal.slideAnimation] = GALLERY_CONSTS[optionsMap.behaviourParams.gallery.horizontal.slideAnimation].SCROLL;\n  }\n  return _options;\n}\n\nconst removeArrowPaddingIfOutsideTheGallery = (options) => { \n  let _options = {...options}\n  if (_options[optionsMap.layoutParams.navigationArrows.position] === GALLERY_CONSTS[optionsMap.layoutParams.navigationArrows.position].OUTSIDE_GALLERY) {\n    _options[optionsMap.layoutParams.navigationArrows.padding] = 0;\n  }\n  return _options;\n}\n\n\nconst processLoadMoreButtonFont = (options) => { //This is not a pg option per se. it should be removed...\n  let _options = {...options}\n  if (_options.loadMoreButtonFont && utils.isMobile()) {\n    _options.loadMoreButtonFont.value =\n      _options.loadMoreButtonFont.value.replace(/^font\\s*:\\s*/, '');\n    _options.loadMoreButtonFont.value =\n      _options.loadMoreButtonFont.value.replace(/;$/, '');\n    if (_options.loadMoreButtonFont.value.indexOf('underline') > -1) {\n      _options.loadMoreButtonFont.value =\n        _options.loadMoreButtonFont.value.replace('underline', '');\n      _options.textDecorationLoadMore = 'underline';\n    } else {\n      _options.textDecorationLoadMore = 'none';\n    }\n  }\n  return _options;\n}\nconst blockCounterByProduct = (options) => { \n  let _options = {...options}\n  if(!_options[optionsMap.behaviourParams.gallery.horizontal.slideshowInfo.enableCounter]) {\n    return _options\n  }\n\n  if(_options[optionsMap.behaviourParams.gallery.horizontal.autoSlide.behaviour] === GALLERY_CONSTS[optionsMap.behaviourParams.gallery.horizontal.autoSlide.behaviour].OFF) {\n    _options[optionsMap.behaviourParams.gallery.horizontal.slideshowInfo.enableCounter] = false\n  }\n\n  if (GALLERY_CONSTS.isLayout('SLIDESHOW')(options) === false) {\n    _options[optionsMap.behaviourParams.gallery.horizontal.slideshowInfo.enableCounter] = false;\n  }\n  return _options;\n}\n\nconst addMarginsToSupportShadows = (options) => { \n  let _options = {...options}\n\n  if (_options[optionsMap.stylingParams.itemEnableShadow] && _options[optionsMap.layoutParams.structure.scrollDirection] === GALLERY_CONSTS[optionsMap.layoutParams.structure.scrollDirection].VERTICAL) {\n    // add gallerySpacing to allow the shadow to be seen\n    _options[optionsMap.layoutParams.structure.gallerySpacing] = Math.max(\n      _options[optionsMap.layoutParams.structure.gallerySpacing],\n      (_options[optionsMap.stylingParams.itemShadowSize] || 0) +\n        (_options[optionsMap.stylingParams.itemShadowBlur] || 0)\n    );\n  }\n  return _options;\n}\n\nconst centerArrowsWhenNeeded = (options) => {  \n  let _options = {...options}\n  const isSingleVerticalItemRendered =  _options[optionsMap.layoutParams.groups.allowedGroupTypes].length >= 1 ? \n  _options[optionsMap.layoutParams.groups.allowedGroupTypes].join('') === '1' : false\n  const filteredPlacement = _options[optionsMap.layoutParams.info.placement] // filtering hover since it doesn't affect this product\n  .split(',')\n  .filter(placement => !isHoverPlacement(placement))\n  .join(',')\n  if (!isConstantVerticalPlacement(filteredPlacement) || \n      !isSingleVerticalItemRendered)\n    {\n    // if text (info) placement is not above/below placement or more then 1 images per col, arrows are gallery(\"item\") centered\n    _options[optionsMap.layoutParams.navigationArrows.verticalAlignment] = GALLERY_CONSTS[optionsMap.layoutParams.navigationArrows.verticalAlignment].ITEM_CENTER;\n  }\n  return _options;\n}\n\nexport const removeBordersIfNeeded = (options) => { \n  //TODO this can go into the _optionspective 4 layouts.\n  let _options = {...options}\n\n  if (_options[optionsMap.layoutParams.crop.method] ===\n    GALLERY_CONSTS[optionsMap.layoutParams.crop.method].FIT ) {\n    _options[optionsMap.stylingParams.itemBorderWidth] = 0;\n    _options[optionsMap.stylingParams.itemBorderRadius] = 0;\n    _options[optionsMap.stylingParams.itemEnableShadow] = false;\n  }\n\n  return _options\n}\n\nconst cropItemsWithCropOnlyFillParam = (options) => {\n  let _options = { ...options };\n  if (_options[optionsMap.layoutParams.crop.cropOnlyFill]) {\n    _options[optionsMap.layoutParams.crop.enable] =\n      _options[optionsMap.layoutParams.crop.method] === GALLERY_CONSTS[optionsMap.layoutParams.crop.method].FILL;\n  }\n  return _options;\n};\n\nfunction processLayouts(options, customExternalInfoRendererExists) {\n  let processedOptions = {...options};\n  if (utils.isMobile()) {\n    processedOptions = limitImageMargin(processedOptions);\n  }\n    processedOptions = forceInfoOnHoverWhenNeeded(processedOptions);\n    processedOptions = forceHoverToShowTextsIfNeeded(processedOptions); \n    processedOptions = removeShadowOnHorizontalGalleries(processedOptions); \n    processedOptions = addMarginsToSupportShadows(processedOptions); \n    processedOptions = removeArrowPaddingIfOutsideTheGallery(processedOptions); \n    processedOptions = forceHorizontalOrientationInHorizontalGalleries(processedOptions);\n    processedOptions = removeLoopOnVerticalGalleries(processedOptions);\n    processedOptions = forceScrollAnimationOnSingleImageInViewGalleries(processedOptions);\n    processedOptions = processLoadMoreButtonFont(processedOptions); // NEW STYPEPARAMS METHOD - should be removed but currently supported//contains if isMobile, but also has an else.\n    processedOptions = processTextDimensions(processedOptions, customExternalInfoRendererExists);\n    processedOptions = centerArrowsWhenNeeded(processedOptions); \n    processedOptions = blockCounterByProduct(processedOptions); \n    processedOptions = blockScrollOnFadeOrDeckScrollAnimations(processedOptions); \n    processedOptions = blockVideoControlsOnMouseCursorNavigation(processedOptions);\n    processedOptions = blockMouseCursorNavigationOnTouchDevice(processedOptions);\n    processedOptions = cropItemsWithCropOnlyFillParam(processedOptions);\n\n  return processedOptions;\n}\n\nexport default processLayouts;\n/* eslint-enable prettier/prettier */\n","import { calcTargetItemSize } from '../helpers/layoutHelper.js';\nimport optionsMap from '../helpers/optionsMap.js';\nimport { GALLERY_CONSTS } from '../../index.js';\n\nconst fixToAlternate = (options) => {\n  let presetOptions = { ...options };\n  presetOptions[optionsMap.layoutParams.structure.galleryLayout] =\n    GALLERY_CONSTS[optionsMap.layoutParams.structure.galleryLayout].ALTERNATE;\n  presetOptions[optionsMap.layoutParams.crop.method] = GALLERY_CONSTS[optionsMap.layoutParams.crop.method].FILL;\n  presetOptions[optionsMap.layoutParams.crop.enable] = true;\n  presetOptions[optionsMap.layoutParams.crop.ratios] = [1];\n  presetOptions[optionsMap.layoutParams.info.placement] =\n    GALLERY_CONSTS[optionsMap.layoutParams.info.placement].OVERLAY;\n  presetOptions[optionsMap.layoutParams.structure.scrollDirection] =\n    GALLERY_CONSTS[optionsMap.layoutParams.structure.scrollDirection].VERTICAL;\n  presetOptions[optionsMap.layoutParams.structure.responsiveMode] =\n    GALLERY_CONSTS[optionsMap.layoutParams.structure.responsiveMode].SET_ITEMS_PER_ROW;\n  presetOptions[optionsMap.layoutParams.structure.gallerySpacing] = 0;\n  presetOptions[optionsMap.layoutParams.structure.layoutOrientation] =\n    GALLERY_CONSTS[optionsMap.layoutParams.structure.layoutOrientation].VERTICAL;\n  presetOptions[optionsMap.layoutParams.groups.groupSize] = 3;\n  presetOptions[optionsMap.layoutParams.groups.density] = 0.48;\n  presetOptions[optionsMap.layoutParams.groups.allowedGroupTypes] = [\n    GALLERY_CONSTS[optionsMap.layoutParams.groups.allowedGroupTypes]['1'],\n    GALLERY_CONSTS[optionsMap.layoutParams.groups.allowedGroupTypes]['2h'],\n    GALLERY_CONSTS[optionsMap.layoutParams.groups.allowedGroupTypes]['2v'],\n    GALLERY_CONSTS[optionsMap.layoutParams.groups.allowedGroupTypes]['3t'],\n    GALLERY_CONSTS[optionsMap.layoutParams.groups.allowedGroupTypes]['3b'],\n    GALLERY_CONSTS[optionsMap.layoutParams.groups.allowedGroupTypes]['3l'],\n    GALLERY_CONSTS[optionsMap.layoutParams.groups.allowedGroupTypes]['3r'],\n    GALLERY_CONSTS[optionsMap.layoutParams.groups.allowedGroupTypes]['3v'],\n    GALLERY_CONSTS[optionsMap.layoutParams.groups.allowedGroupTypes]['3h'],\n  ];\n  presetOptions[optionsMap.layoutParams.targetItemSize.value] = 86;\n  presetOptions[optionsMap.layoutParams.targetItemSize.minimum] = 50;\n  presetOptions[optionsMap.layoutParams.groups.groupByOrientation] = true;\n  presetOptions[optionsMap.layoutParams.groups.repeatingGroupTypes] = [\n    GALLERY_CONSTS[optionsMap.layoutParams.groups.allowedGroupTypes]['1'],\n    GALLERY_CONSTS[optionsMap.layoutParams.groups.allowedGroupTypes]['2h'],\n    GALLERY_CONSTS[optionsMap.layoutParams.groups.allowedGroupTypes]['1'],\n    GALLERY_CONSTS[optionsMap.layoutParams.groups.allowedGroupTypes]['2h'],\n  ];\n  presetOptions[optionsMap.layoutParams.crop.enableSmartCrop] = false;\n  presetOptions[optionsMap.layoutParams.structure.scatter.randomScatter] = 0;\n  presetOptions[optionsMap.layoutParams.structure.scatter.manualScatter] = '';\n  presetOptions[optionsMap.layoutParams.structure.numberOfColumns] = 1;\n  presetOptions[optionsMap.layoutParams.groups.numberOfGroupsPerRow] = 0;\n  presetOptions[optionsMap.layoutParams.structure.groupsOrder] =\n    GALLERY_CONSTS[optionsMap.layoutParams.structure.groupsOrder].BY_HEIGHT;\n  // presetOptions.rotatingCropRatios = ''; //merged with crop.ratio(s) in the new method\n  // presetOptions.slideshowLoop = false; //ALTERNATE is strictly vertical, this is irrelevant.\n  //layouter direct API\n  presetOptions.fixedColumns = 1;\n  //layouter direct API\n  return presetOptions;\n};\nexport const fixedOptions = fixToAlternate({});\n\nexport const createOptions = (options) => {\n  let res = { ...options };\n  res = fixToAlternate(res);\n  res.targetItemSize = calcTargetItemSize(res);\n  return res;\n};\n","import { calcTargetItemSize } from '../helpers/layoutHelper.js';\nimport optionsMap from '../helpers/optionsMap.js';\nimport { GALLERY_CONSTS } from '../../index.js';\n\nconst fixToBricks = (options) => {\n  let presetOptions = { ...options };\n  presetOptions[optionsMap.layoutParams.structure.galleryLayout] =\n    GALLERY_CONSTS[optionsMap.layoutParams.structure.galleryLayout].BRICKS;\n  presetOptions[optionsMap.layoutParams.crop.method] = GALLERY_CONSTS[optionsMap.layoutParams.crop.method].FILL;\n  presetOptions[optionsMap.layoutParams.crop.enable] = true;\n\n  // presetOptions[optionsMap.layoutParams.crop.ratios] = [1]; replaced by the assignment of the rotating crop ratios that is now merged with this\n\n  presetOptions[optionsMap.layoutParams.info.placement] =\n    GALLERY_CONSTS[optionsMap.layoutParams.info.placement].OVERLAY;\n  presetOptions[optionsMap.layoutParams.structure.scrollDirection] =\n    GALLERY_CONSTS[optionsMap.layoutParams.structure.scrollDirection].VERTICAL;\n  presetOptions[optionsMap.layoutParams.structure.gallerySpacing] = 0;\n\n  presetOptions[optionsMap.layoutParams.structure.layoutOrientation] =\n    GALLERY_CONSTS[optionsMap.layoutParams.structure.layoutOrientation].VERTICAL;\n  presetOptions[optionsMap.layoutParams.groups.groupSize] = 3;\n  presetOptions[optionsMap.layoutParams.groups.density] = 0.8;\n  presetOptions[optionsMap.layoutParams.groups.allowedGroupTypes] = [\n    GALLERY_CONSTS[optionsMap.layoutParams.groups.allowedGroupTypes]['1'],\n    GALLERY_CONSTS[optionsMap.layoutParams.groups.allowedGroupTypes]['2h'],\n    GALLERY_CONSTS[optionsMap.layoutParams.groups.allowedGroupTypes]['2v'],\n    GALLERY_CONSTS[optionsMap.layoutParams.groups.allowedGroupTypes]['3t'],\n    GALLERY_CONSTS[optionsMap.layoutParams.groups.allowedGroupTypes]['3b'],\n    GALLERY_CONSTS[optionsMap.layoutParams.groups.allowedGroupTypes]['3l'],\n    GALLERY_CONSTS[optionsMap.layoutParams.groups.allowedGroupTypes]['3r'],\n    GALLERY_CONSTS[optionsMap.layoutParams.groups.allowedGroupTypes]['3v'],\n    GALLERY_CONSTS[optionsMap.layoutParams.groups.allowedGroupTypes]['3h'],\n  ];\n  presetOptions[optionsMap.behaviourParams.gallery.horizontal.loop] = false;\n  presetOptions[optionsMap.layoutParams.structure.responsiveMode] =\n    GALLERY_CONSTS[optionsMap.layoutParams.structure.responsiveMode].SET_ITEMS_PER_ROW;\n  presetOptions[optionsMap.layoutParams.targetItemSize.value] = 400;\n  presetOptions[optionsMap.layoutParams.targetItemSize.minimum] = 50;\n  presetOptions[optionsMap.layoutParams.groups.groupByOrientation] = true;\n  presetOptions[optionsMap.layoutParams.groups.repeatingGroupTypes] = [\n    GALLERY_CONSTS[optionsMap.layoutParams.groups.allowedGroupTypes]['2h'],\n  ];\n  presetOptions[optionsMap.layoutParams.crop.enableSmartCrop] = false;\n  presetOptions[optionsMap.layoutParams.structure.scatter.randomScatter] = 0;\n\n  presetOptions[optionsMap.layoutParams.structure.scatter.manualScatter] = '';\n  presetOptions[optionsMap.layoutParams.structure.numberOfColumns] = 1;\n  presetOptions[optionsMap.layoutParams.groups.numberOfGroupsPerRow] = 0;\n  presetOptions[optionsMap.layoutParams.structure.groupsOrder] =\n    GALLERY_CONSTS[optionsMap.layoutParams.structure.groupsOrder].BY_HEIGHT;\n  presetOptions[optionsMap.layoutParams.crop.ratios] = [0.707, 1.414, 1.414, 0.707];\n  //layouter direct API\n  presetOptions.fixedColumns = 1;\n  //layouter direct API\n  return presetOptions;\n};\n\nexport const fixedOptions = fixToBricks({});\n\nexport const createOptions = (options) => {\n  let res = { ...options };\n  res = fixToBricks(res);\n  res.targetItemSize = calcTargetItemSize(res);\n  return res;\n};\n","import { calcTargetItemSize } from '../helpers/layoutHelper.js';\nimport optionsMap from '../helpers/optionsMap.js';\nimport { GALLERY_CONSTS } from '../../index.js';\n\nconst fixToCollage = (options) => {\n  let presetOptions = { ...options };\n  presetOptions[optionsMap.layoutParams.structure.galleryLayout] =\n    GALLERY_CONSTS[optionsMap.layoutParams.structure.galleryLayout].COLLAGE;\n  presetOptions[optionsMap.layoutParams.crop.enable] = false;\n  GALLERY_CONSTS[optionsMap.layoutParams.info.placement].OVERLAY;\n  presetOptions[optionsMap.layoutParams.groups.groupSize] = 3;\n  presetOptions[optionsMap.layoutParams.groups.allowedGroupTypes] = [\n    GALLERY_CONSTS[optionsMap.layoutParams.groups.allowedGroupTypes]['1'],\n    GALLERY_CONSTS[optionsMap.layoutParams.groups.allowedGroupTypes]['2h'],\n    GALLERY_CONSTS[optionsMap.layoutParams.groups.allowedGroupTypes]['2v'],\n    GALLERY_CONSTS[optionsMap.layoutParams.groups.allowedGroupTypes]['3t'],\n    GALLERY_CONSTS[optionsMap.layoutParams.groups.allowedGroupTypes]['3b'],\n    GALLERY_CONSTS[optionsMap.layoutParams.groups.allowedGroupTypes]['3l'],\n    GALLERY_CONSTS[optionsMap.layoutParams.groups.allowedGroupTypes]['3r'],\n  ];\n  presetOptions[optionsMap.behaviourParams.gallery.horizontal.loop] = false;\n  presetOptions[optionsMap.layoutParams.structure.numberOfGridRows] = 1;\n  presetOptions[optionsMap.layoutParams.structure.responsiveMode] =\n    GALLERY_CONSTS[optionsMap.layoutParams.structure.responsiveMode].FIT_TO_SCREEN;\n  presetOptions[optionsMap.layoutParams.structure.numberOfColumns] = 0;\n  presetOptions[optionsMap.layoutParams.crop.cropOnlyFill] = false;\n  presetOptions[optionsMap.behaviourParams.gallery.horizontal.slideAnimation] =\n    GALLERY_CONSTS[optionsMap.behaviourParams.gallery.horizontal.slideAnimation].SCROLL;\n\n  //layouter direct API\n  presetOptions.fixedColumns = 0;\n  //layouter direct API\n  return presetOptions;\n};\nexport const fixedOptions = fixToCollage({});\n\nexport const createOptions = (options) => {\n  let res = { ...options };\n  res = fixToCollage(res);\n  const userDefinedTargetItemSizeValue = options[optionsMap.layoutParams.targetItemSize.value];\n  res.targetItemSize = calcTargetItemSize(res, Math.round(userDefinedTargetItemSizeValue * 5 + 500));\n  return res;\n};\n","import { calcTargetItemSize } from '../helpers/layoutHelper.js';\nimport optionsMap from '../helpers/optionsMap.js';\nimport { GALLERY_CONSTS } from '../../index.js';\n\nconst fixToFullsize = (options) => {\n  let presetOptions = { ...options };\n  presetOptions[optionsMap.layoutParams.structure.galleryLayout] =\n    GALLERY_CONSTS[optionsMap.layoutParams.structure.galleryLayout].FULLSIZE;\n  presetOptions[optionsMap.layoutParams.crop.enable] = true;\n  presetOptions[optionsMap.layoutParams.crop.ratios] = ['100%/100%'];\n  presetOptions[optionsMap.layoutParams.crop.method] = GALLERY_CONSTS[optionsMap.layoutParams.crop.method].FILL;\n  presetOptions[optionsMap.layoutParams.info.placement] =\n    GALLERY_CONSTS[optionsMap.layoutParams.info.placement].OVERLAY;\n  presetOptions[optionsMap.layoutParams.structure.scrollDirection] =\n    GALLERY_CONSTS[optionsMap.layoutParams.structure.scrollDirection].HORIZONTAL;\n  presetOptions[optionsMap.layoutParams.structure.gallerySpacing] = 0;\n  presetOptions[optionsMap.layoutParams.structure.layoutOrientation] =\n    GALLERY_CONSTS[optionsMap.layoutParams.structure.layoutOrientation].HORIZONTAL;\n  presetOptions[optionsMap.layoutParams.groups.groupSize] = 1;\n  presetOptions[optionsMap.layoutParams.groups.allowedGroupTypes] = [\n    GALLERY_CONSTS[optionsMap.layoutParams.groups.allowedGroupTypes]['1'],\n  ];\n  presetOptions[optionsMap.layoutParams.structure.responsiveMode] =\n    GALLERY_CONSTS[optionsMap.layoutParams.structure.responsiveMode].SET_ITEMS_PER_ROW;\n  presetOptions[optionsMap.layoutParams.structure.numberOfGridRows] = 1;\n  presetOptions[optionsMap.layoutParams.crop.enableSmartCrop] = false;\n  presetOptions[optionsMap.behaviourParams.gallery.horizontal.enableScrollSnap] = true;\n  presetOptions[optionsMap.layoutParams.crop.cropOnlyFill] = true;\n  presetOptions[optionsMap.layoutParams.structure.scatter.randomScatter] = 0;\n  presetOptions[optionsMap.layoutParams.structure.scatter.manualScatter] = '';\n  presetOptions[optionsMap.layoutParams.structure.itemSpacing] = 0;\n  return presetOptions;\n};\nexport const fixedOptions = fixToFullsize({});\n\nexport const createOptions = (options) => {\n  let res = { ...options };\n  res = fixToFullsize(res);\n  res.targetItemSize = calcTargetItemSize(res);\n  return res;\n};\n","import { calcTargetItemSize } from '../helpers/layoutHelper.js';\nimport { GALLERY_CONSTS } from '../../index.js';\nimport optionsMap from '../helpers/optionsMap.js';\n\nconst fixToColumn = (options) => {\n  let presetOptions = { ...options };\n  presetOptions[optionsMap.layoutParams.structure.galleryLayout] =\n    GALLERY_CONSTS[optionsMap.layoutParams.structure.galleryLayout].COLUMN;\n  presetOptions[optionsMap.layoutParams.crop.method] = GALLERY_CONSTS[optionsMap.layoutParams.crop.method].FILL;\n  presetOptions[optionsMap.layoutParams.crop.enable] = true;\n  presetOptions[optionsMap.layoutParams.crop.ratios] = [0.35];\n  presetOptions[optionsMap.layoutParams.structure.scrollDirection] =\n    GALLERY_CONSTS[optionsMap.layoutParams.structure.scrollDirection].HORIZONTAL;\n  presetOptions[optionsMap.layoutParams.structure.layoutOrientation] =\n    GALLERY_CONSTS[optionsMap.layoutParams.structure.layoutOrientation].HORIZONTAL;\n  presetOptions[optionsMap.layoutParams.groups.groupSize] = 1;\n  presetOptions[optionsMap.layoutParams.groups.allowedGroupTypes] = [\n    GALLERY_CONSTS[optionsMap.layoutParams.groups.allowedGroupTypes]['1'],\n  ];\n  presetOptions[optionsMap.layoutParams.structure.responsiveMode] =\n    GALLERY_CONSTS[optionsMap.layoutParams.structure.responsiveMode].SET_ITEMS_PER_ROW;\n  presetOptions[optionsMap.layoutParams.structure.numberOfGridRows] = 1;\n  presetOptions[optionsMap.layoutParams.crop.enableSmartCrop] = false;\n\n  presetOptions[optionsMap.layoutParams.structure.numberOfColumns] = 0;\n  presetOptions[optionsMap.layoutParams.crop.cropOnlyFill] = false;\n\n  presetOptions[optionsMap.behaviourParams.gallery.horizontal.slideAnimation] =\n    GALLERY_CONSTS[optionsMap.behaviourParams.gallery.horizontal.slideAnimation].SCROLL;\n\n  //layouter direct API\n  presetOptions.fixedColumns = 0;\n  //layouter direct API\n  return presetOptions;\n};\nexport const fixedOptions = fixToColumn({});\n\nexport const createOptions = (options) => {\n  let res = { ...options };\n  res = fixToColumn(res);\n  res.targetItemSize = calcTargetItemSize(res);\n  return res;\n};\n","import {\n  calcTargetItemSize,\n  processNumberOfImagesPerRow,\n  processNumberOfImagesPerCol,\n  removeBordersIfNeeded,\n} from '../helpers/layoutHelper.js';\nimport optionsMap from '../helpers/optionsMap.js';\nimport { GALLERY_CONSTS } from '../../index.js';\n\nconst fixToGrid = (options) => {\n  let presetOptions = { ...options };\n  presetOptions[optionsMap.layoutParams.structure.galleryLayout] =\n    GALLERY_CONSTS[optionsMap.layoutParams.structure.galleryLayout].GRID;\n  presetOptions[optionsMap.layoutParams.crop.enable] = true;\n  presetOptions[optionsMap.layoutParams.structure.layoutOrientation] =\n    GALLERY_CONSTS[optionsMap.layoutParams.structure.layoutOrientation].VERTICAL;\n  presetOptions[optionsMap.layoutParams.groups.groupSize] = 1;\n  presetOptions[optionsMap.layoutParams.groups.allowedGroupTypes] = [\n    GALLERY_CONSTS[optionsMap.layoutParams.groups.allowedGroupTypes]['1'],\n  ];\n  presetOptions[optionsMap.behaviourParams.gallery.horizontal.loop] = false;\n  presetOptions[optionsMap.layoutParams.crop.enableSmartCrop] = false;\n  // presetOptions.galleryType = 'Columns';\n  presetOptions[optionsMap.layoutParams.crop.cropOnlyFill] = false;\n  presetOptions[optionsMap.layoutParams.targetItemSize.minimum] = 50;\n  presetOptions[optionsMap.behaviourParams.gallery.horizontal.slideAnimation] =\n    GALLERY_CONSTS[optionsMap.behaviourParams.gallery.horizontal.slideAnimation].SCROLL;\n  presetOptions[optionsMap.layoutParams.groups.density] = 0;\n  return presetOptions;\n};\n\nexport const fixedOptions = fixToGrid({});\n\nexport const createOptions = (options) => {\n  let res = { ...options };\n  res = fixToGrid(res);\n  res.targetItemSize = calcTargetItemSize(\n    res,\n    Math.round(res[optionsMap.layoutParams.targetItemSize.value] * 8.5 + 150)\n  );\n  res = processNumberOfImagesPerRow(res);\n  res = processNumberOfImagesPerCol(res);\n  res = removeBordersIfNeeded(res);\n  return res;\n};\n","import { calcTargetItemSize, processNumberOfImagesPerRow, processGridStyle } from '../helpers/layoutHelper.js';\nimport optionsMap from '../helpers/optionsMap.js';\n\nimport { GALLERY_CONSTS } from '../../index.js';\nconst fixToMasonry = (options) => {\n  let presetOptions = { ...options };\n  presetOptions[optionsMap.layoutParams.structure.galleryLayout] =\n    GALLERY_CONSTS[optionsMap.layoutParams.structure.galleryLayout].MASONRY;\n  presetOptions[optionsMap.layoutParams.crop.enable] = false;\n  presetOptions[optionsMap.layoutParams.structure.scrollDirection] =\n    GALLERY_CONSTS[optionsMap.layoutParams.structure.scrollDirection].VERTICAL;\n  presetOptions[optionsMap.layoutParams.groups.groupSize] = 1;\n  presetOptions[optionsMap.layoutParams.groups.allowedGroupTypes] = [\n    GALLERY_CONSTS[optionsMap.layoutParams.groups.allowedGroupTypes]['1'],\n  ];\n  presetOptions[optionsMap.behaviourParams.gallery.horizontal.loop] = false;\n  presetOptions[optionsMap.layoutParams.crop.cropOnlyFill] = false;\n  return presetOptions;\n};\nexport const fixedOptions = fixToMasonry({});\n\nexport const createOptions = (options) => {\n  let res = { ...options };\n  res = fixToMasonry(res);\n  const isVerticalOrientation =\n    res[optionsMap.layoutParams.structure.layoutOrientation] ===\n    GALLERY_CONSTS[optionsMap.layoutParams.structure.layoutOrientation].VERTICAL;\n  const userDefinedTargetItemSizeValue = options[optionsMap.layoutParams.targetItemSize.value];\n  res.targetItemSize = calcTargetItemSize(\n    res,\n    isVerticalOrientation ? userDefinedTargetItemSizeValue * 8 + 200 : userDefinedTargetItemSizeValue * 5 + 200\n  );\n  res = processNumberOfImagesPerRow(res);\n  res = processGridStyle(res);\n  return res;\n};\n","import { calcTargetItemSize } from '../helpers/layoutHelper.js';\nimport optionsMap from '../helpers/optionsMap.js';\nimport { GALLERY_CONSTS } from '../../index.js';\nconst fixToMix = (options) => {\n  let presetOptions = { ...options };\n  presetOptions[optionsMap.layoutParams.structure.galleryLayout] =\n    GALLERY_CONSTS[optionsMap.layoutParams.structure.galleryLayout].MIX;\n  presetOptions[optionsMap.layoutParams.crop.method] = GALLERY_CONSTS[optionsMap.layoutParams.crop.method].FILL;\n  presetOptions[optionsMap.layoutParams.crop.enable] = true;\n  presetOptions[optionsMap.layoutParams.crop.ratios] = [1];\n  presetOptions[optionsMap.layoutParams.info.placement] =\n    GALLERY_CONSTS[optionsMap.layoutParams.info.placement].OVERLAY;\n  presetOptions[optionsMap.layoutParams.structure.scrollDirection] =\n    GALLERY_CONSTS[optionsMap.layoutParams.structure.scrollDirection].VERTICAL;\n  presetOptions[optionsMap.layoutParams.structure.gallerySpacing] = 0;\n  presetOptions[optionsMap.layoutParams.structure.layoutOrientation] =\n    GALLERY_CONSTS[optionsMap.layoutParams.structure.layoutOrientation].VERTICAL;\n  presetOptions[optionsMap.layoutParams.groups.groupSize] = 3;\n  presetOptions[optionsMap.layoutParams.groups.allowedGroupTypes] = [\n    GALLERY_CONSTS[optionsMap.layoutParams.groups.allowedGroupTypes]['1'],\n    GALLERY_CONSTS[optionsMap.layoutParams.groups.allowedGroupTypes]['2h'],\n    GALLERY_CONSTS[optionsMap.layoutParams.groups.allowedGroupTypes]['2v'],\n    GALLERY_CONSTS[optionsMap.layoutParams.groups.allowedGroupTypes]['3t'],\n    GALLERY_CONSTS[optionsMap.layoutParams.groups.allowedGroupTypes]['3b'],\n    GALLERY_CONSTS[optionsMap.layoutParams.groups.allowedGroupTypes]['3l'],\n    GALLERY_CONSTS[optionsMap.layoutParams.groups.allowedGroupTypes]['3r'],\n    GALLERY_CONSTS[optionsMap.layoutParams.groups.allowedGroupTypes]['3v'],\n    GALLERY_CONSTS[optionsMap.layoutParams.groups.allowedGroupTypes]['3h'],\n  ];\n  presetOptions[optionsMap.layoutParams.groups.density] = 0.48;\n  presetOptions[optionsMap.layoutParams.structure.responsiveMode] =\n    GALLERY_CONSTS[optionsMap.layoutParams.structure.responsiveMode].SET_ITEMS_PER_ROW;\n  presetOptions[optionsMap.layoutParams.targetItemSize.value] = 86;\n  presetOptions[optionsMap.layoutParams.targetItemSize.minimum] = 50;\n  presetOptions[optionsMap.layoutParams.groups.groupByOrientation] = true;\n  presetOptions[optionsMap.layoutParams.groups.repeatingGroupTypes] = [\n    GALLERY_CONSTS[optionsMap.layoutParams.groups.allowedGroupTypes]['1'],\n    GALLERY_CONSTS[optionsMap.layoutParams.groups.allowedGroupTypes]['3l'],\n    GALLERY_CONSTS[optionsMap.layoutParams.groups.allowedGroupTypes]['1'],\n    GALLERY_CONSTS[optionsMap.layoutParams.groups.allowedGroupTypes]['3r'],\n  ];\n  presetOptions[optionsMap.layoutParams.crop.enableSmartCrop] = false;\n  presetOptions[optionsMap.layoutParams.structure.scatter.randomScatter] = 0;\n  presetOptions[optionsMap.layoutParams.structure.scatter.manualScatter] = '';\n  presetOptions[optionsMap.layoutParams.structure.numberOfColumns] = 1;\n  presetOptions[optionsMap.layoutParams.groups.numberOfGroupsPerRow] = 0;\n  presetOptions[optionsMap.layoutParams.structure.groupsOrder] =\n    GALLERY_CONSTS[optionsMap.layoutParams.structure.groupsOrder].BY_HEIGHT;\n\n  //layouter direct API\n  presetOptions.fixedColumns = 1;\n  //layouter direct API\n\n  return presetOptions;\n};\nexport const fixedOptions = fixToMix({});\n\nexport const createOptions = (options) => {\n  let res = { ...options };\n  res = fixToMix(res);\n  res.targetItemSize = calcTargetItemSize(res);\n  return res;\n};\n","import { calcTargetItemSize } from '../helpers/layoutHelper.js';\nimport optionsMap from '../helpers/optionsMap.js';\nimport { GALLERY_CONSTS } from '../../index.js';\n\nconst fixToPanorama = (options) => {\n  let presetOptions = { ...options };\n  presetOptions[optionsMap.layoutParams.structure.galleryLayout] =\n    GALLERY_CONSTS[optionsMap.layoutParams.structure.galleryLayout].PANORAMA;\n  presetOptions[optionsMap.layoutParams.crop.enable] = false;\n  presetOptions[optionsMap.layoutParams.structure.scrollDirection] =\n    GALLERY_CONSTS[optionsMap.layoutParams.structure.scrollDirection].VERTICAL;\n  presetOptions[optionsMap.layoutParams.structure.layoutOrientation] =\n    GALLERY_CONSTS[optionsMap.layoutParams.structure.layoutOrientation].VERTICAL;\n  presetOptions[optionsMap.layoutParams.groups.groupSize] = 1;\n  presetOptions[optionsMap.layoutParams.groups.allowedGroupTypes] = [\n    GALLERY_CONSTS[optionsMap.layoutParams.groups.allowedGroupTypes]['1'],\n  ];\n  presetOptions[optionsMap.layoutParams.structure.responsiveMode] =\n    GALLERY_CONSTS[optionsMap.layoutParams.structure.responsiveMode].SET_ITEMS_PER_ROW;\n  presetOptions[optionsMap.layoutParams.structure.numberOfColumns] = 1;\n  presetOptions[optionsMap.layoutParams.crop.cropOnlyFill] = false;\n  presetOptions[optionsMap.behaviourParams.gallery.horizontal.loop] = false;\n\n  //layouter direct API\n  presetOptions.fixedColumns = 1;\n  //layouter direct API\n  return presetOptions;\n};\nexport const fixedOptions = fixToPanorama({});\n\nexport const createOptions = (options) => {\n  let res = { ...options };\n  res = fixToPanorama(res);\n  res.targetItemSize = calcTargetItemSize(res);\n  return res;\n};\n","import { calcTargetItemSize, removeBordersIfNeeded } from '../helpers/layoutHelper.js';\nimport optionsMap from '../helpers/optionsMap.js';\nimport { GALLERY_CONSTS } from '../../index.js';\n\nconst fixToSlider = (options) => {\n  let presetOptions = { ...options };\n  presetOptions[optionsMap.layoutParams.structure.galleryLayout] =\n    GALLERY_CONSTS[optionsMap.layoutParams.structure.galleryLayout].SLIDER;\n  presetOptions[optionsMap.layoutParams.crop.enable] = true;\n  presetOptions[optionsMap.layoutParams.structure.scrollDirection] =\n    GALLERY_CONSTS[optionsMap.layoutParams.structure.scrollDirection].HORIZONTAL;\n  presetOptions[optionsMap.layoutParams.structure.layoutOrientation] =\n    GALLERY_CONSTS[optionsMap.layoutParams.structure.layoutOrientation].HORIZONTAL;\n  presetOptions[optionsMap.layoutParams.groups.groupSize] = 1;\n  presetOptions[optionsMap.layoutParams.groups.allowedGroupTypes] = [\n    GALLERY_CONSTS[optionsMap.layoutParams.groups.allowedGroupTypes]['1'],\n  ];\n  presetOptions[optionsMap.layoutParams.structure.numberOfGridRows] = 1;\n  presetOptions[optionsMap.layoutParams.crop.enableSmartCrop] = false;\n  presetOptions[optionsMap.layoutParams.structure.responsiveMode] =\n    GALLERY_CONSTS[optionsMap.layoutParams.structure.responsiveMode].SET_ITEMS_PER_ROW;\n  presetOptions[optionsMap.behaviourParams.gallery.horizontal.enableScrollSnap] = true;\n  presetOptions[optionsMap.layoutParams.crop.cropOnlyFill] = true;\n  presetOptions[optionsMap.behaviourParams.gallery.horizontal.slideAnimation] =\n    GALLERY_CONSTS[optionsMap.behaviourParams.gallery.horizontal.slideAnimation].SCROLL;\n  return presetOptions;\n};\nexport const fixedOptions = fixToSlider({});\n\nexport const createOptions = (options) => {\n  let res = { ...options };\n  res = fixToSlider(res);\n  res.targetItemSize = calcTargetItemSize(res);\n  res = removeBordersIfNeeded(res);\n  return res;\n};\n","export default disableAnimationsForSlideshowLayouts;\n\nimport optionsMap from '../helpers/optionsMap.js';\nimport { GALLERY_CONSTS } from '../../index.js';\n\nfunction disableAnimationsForSlideshowLayouts(presetOptions) {\n  presetOptions[optionsMap.behaviourParams.item.content.placementAnimation] =\n    GALLERY_CONSTS[optionsMap.behaviourParams.item.content.placementAnimation].NO_EFFECT;\n  presetOptions[optionsMap.behaviourParams.item.overlay.hoverAnimation] =\n    GALLERY_CONSTS[optionsMap.behaviourParams.item.overlay.hoverAnimation].NO_EFFECT;\n  presetOptions[optionsMap.behaviourParams.item.content.hoverAnimation] =\n    GALLERY_CONSTS[optionsMap.behaviourParams.item.content.hoverAnimation].NO_EFFECT;\n}\n","import { calcTargetItemSize, removeBordersIfNeeded } from '../helpers/layoutHelper.js';\nimport disableAnimationsForSlideshowLayouts from './disableAnimationsForSlideshowLayouts.js';\nimport optionsMap from '../helpers/optionsMap.js';\nimport { GALLERY_CONSTS } from '../../index.js';\n\nconst fixToSlideshow = (options) => {\n  let presetOptions = { ...options };\n  presetOptions[optionsMap.layoutParams.structure.galleryLayout] =\n    GALLERY_CONSTS[optionsMap.layoutParams.structure.galleryLayout].SLIDESHOW;\n  presetOptions[optionsMap.layoutParams.crop.ratios] = ['100%/100%'];\n  presetOptions[optionsMap.layoutParams.structure.responsiveMode] =\n    GALLERY_CONSTS[optionsMap.layoutParams.structure.responsiveMode].SET_ITEMS_PER_ROW;\n  presetOptions[optionsMap.layoutParams.crop.enable] = true;\n\n  presetOptions[optionsMap.layoutParams.structure.scrollDirection] =\n    GALLERY_CONSTS[optionsMap.layoutParams.structure.scrollDirection].HORIZONTAL;\n  presetOptions[optionsMap.layoutParams.structure.gallerySpacing] = 0;\n\n  presetOptions[optionsMap.layoutParams.structure.layoutOrientation] =\n    GALLERY_CONSTS[optionsMap.layoutParams.structure.layoutOrientation].HORIZONTAL;\n  presetOptions[optionsMap.layoutParams.groups.groupSize] = 1;\n  presetOptions[optionsMap.layoutParams.info.placement] = GALLERY_CONSTS[optionsMap.layoutParams.info.placement].BELOW;\n  presetOptions[optionsMap.layoutParams.groups.allowedGroupTypes] = [\n    GALLERY_CONSTS[optionsMap.layoutParams.groups.allowedGroupTypes]['1'],\n  ];\n  presetOptions[optionsMap.stylingParams.itemBorderWidth] = 0;\n  presetOptions[optionsMap.stylingParams.itemBorderRadius] = 0;\n  presetOptions[optionsMap.stylingParams.itemBorderColor] = undefined;\n  presetOptions[optionsMap.layoutParams.structure.numberOfGridRows] = 1;\n  disableAnimationsForSlideshowLayouts(presetOptions);\n  presetOptions[optionsMap.layoutParams.crop.enableSmartCrop] = false;\n  presetOptions[optionsMap.layoutParams.targetItemSize.value] = 550;\n\n  presetOptions[optionsMap.layoutParams.structure.numberOfColumns] = 1;\n  presetOptions[optionsMap.behaviourParams.gallery.horizontal.enableScrollSnap] = true;\n  presetOptions[optionsMap.layoutParams.crop.cropOnlyFill] = false;\n\n  presetOptions[optionsMap.layoutParams.structure.scatter.randomScatter] = 0;\n\n  presetOptions[optionsMap.layoutParams.structure.scatter.manualScatter] = '';\n  presetOptions[optionsMap.layoutParams.structure.itemSpacing] = 0;\n\n  //layouter direct API\n  presetOptions.fixedColumns = 1;\n  //layouter direct API\n  return presetOptions;\n};\nexport const fixedOptions = fixToSlideshow({});\n\nexport const createOptions = (options) => {\n  let res = { ...options };\n  res = fixToSlideshow(res);\n  res.targetItemSize = calcTargetItemSize(res);\n  res = removeBordersIfNeeded(res);\n  return res;\n};\n","import { calcTargetItemSize, removeBordersIfNeeded } from '../helpers/layoutHelper.js';\nimport optionsMap from '../helpers/optionsMap.js';\nimport { GALLERY_CONSTS } from '../../index.js';\n\nconst fixToThumbnail = (options) => {\n  let presetOptions = { ...options };\n  presetOptions[optionsMap.layoutParams.structure.galleryLayout] =\n    GALLERY_CONSTS[optionsMap.layoutParams.structure.galleryLayout].THUMBNAIL;\n  presetOptions[optionsMap.layoutParams.crop.ratios] = ['100%/100%'];\n  presetOptions[optionsMap.layoutParams.structure.responsiveMode] =\n    GALLERY_CONSTS[optionsMap.layoutParams.structure.responsiveMode].SET_ITEMS_PER_ROW;\n  presetOptions[optionsMap.layoutParams.crop.enable] = true;\n  presetOptions[optionsMap.layoutParams.info.placement] =\n    GALLERY_CONSTS[optionsMap.layoutParams.info.placement].OVERLAY;\n  presetOptions[optionsMap.layoutParams.structure.scrollDirection] =\n    GALLERY_CONSTS[optionsMap.layoutParams.structure.scrollDirection].HORIZONTAL;\n\n  presetOptions[optionsMap.layoutParams.structure.gallerySpacing] = 0;\n\n  presetOptions[optionsMap.layoutParams.structure.layoutOrientation] =\n    GALLERY_CONSTS[optionsMap.layoutParams.structure.layoutOrientation].HORIZONTAL;\n  presetOptions[optionsMap.layoutParams.groups.groupSize] = 1;\n  presetOptions[optionsMap.layoutParams.groups.allowedGroupTypes] = [\n    GALLERY_CONSTS[optionsMap.layoutParams.groups.allowedGroupTypes]['1'],\n  ];\n  presetOptions[optionsMap.layoutParams.structure.numberOfGridRows] = 1;\n  presetOptions[optionsMap.layoutParams.crop.enableSmartCrop] = false;\n  presetOptions[optionsMap.layoutParams.thumbnails.enable] = true;\n  presetOptions[optionsMap.behaviourParams.gallery.horizontal.enableScrollSnap] = true;\n  presetOptions[optionsMap.layoutParams.crop.cropOnlyFill] = false;\n  presetOptions[optionsMap.layoutParams.structure.scatter.randomScatter] = 0;\n  presetOptions[optionsMap.layoutParams.structure.scatter.manualScatter] = '';\n  presetOptions[optionsMap.layoutParams.structure.itemSpacing] = 0;\n  presetOptions[optionsMap.layoutParams.targetItemSize.value] = 550;\n\n  return presetOptions;\n};\nexport const fixedOptions = fixToThumbnail({});\n\nexport const createOptions = (options) => {\n  let res = { ...options };\n  res = fixToThumbnail(res);\n  res.targetItemSize = calcTargetItemSize(res);\n  res = removeBordersIfNeeded(res);\n  return res;\n};\n","import { calcTargetItemSize, fixColumnsIfNeeded } from '../helpers/layoutHelper.js';\nimport optionsMap from '../helpers/optionsMap.js';\nimport { GALLERY_CONSTS } from '../../index.js';\n\nconst fixToEmpty = (options) => {\n  let presetOptions = { ...options };\n  presetOptions[optionsMap.layoutParams.structure.galleryLayout] =\n    GALLERY_CONSTS[optionsMap.layoutParams.structure.galleryLayout].EMPTY;\n  return presetOptions;\n};\nexport const fixedOptions = fixToEmpty({});\n\nexport const createOptions = (options) => {\n  let res = { ...options };\n  res = fixToEmpty(res);\n  res = fixColumnsIfNeeded(res);\n  res.targetItemSize = calcTargetItemSize(res, Math.round(res[optionsMap.layoutParams.targetItemSize.value] * 9 + 100));\n  return res;\n};\n","// import { calcTargetItemSize } from './layoutHelper.js';\nimport { mergeNestedObjects, flatToNested } from '../helpers/optionsUtils.js';\n\nexport const createOptions = (options) => {\n  try {\n    const parsedOptions = options.jsonStyleParams ? JSON.parse(options.jsonStyleParams) : {};\n\n    const combinedOptions = mergeNestedObjects(options, flatToNested(parsedOptions));\n\n    return combinedOptions;\n  } catch (e) {\n    return {};\n  }\n};\n","//#region Imports Layouts\nimport { fixedOptions as alternate, createOptions as alternateOptions } from './alternateGallery.js';\nimport { fixedOptions as bricks, createOptions as bricksOptions } from './bricksGallery.js';\n\nimport { fixedOptions as collage, createOptions as collageOptions } from './collageGallery.js';\n\nimport { fixedOptions as fullsize, createOptions as fullsizeOptions } from './fullsizeGallery.js';\n\nimport { fixedOptions as column, createOptions as columnOptions } from './columnGallery.js';\n\nimport { fixedOptions as grid, createOptions as gridOptions } from './gridGallery.js';\n\nimport { fixedOptions as masonry, createOptions as masonryOptions } from './masonryGallery.js';\n\nimport { fixedOptions as mix, createOptions as mixOptions } from './mixGallery.js';\n\nimport { fixedOptions as panorama, createOptions as panoramaOptions } from './panoramaGallery.js';\n\nimport { fixedOptions as slider, createOptions as sliderOptions } from './sliderGallery.js';\n\nimport { fixedOptions as slideshow, createOptions as slideshowOptions } from './slideshowGallery.js';\n\nimport { fixedOptions as thumbnails, createOptions as thumbnailsOptions } from './thumbnailsGallery.js';\n\nimport { fixedOptions as empty, createOptions as emptyOptions } from './emptyGallery.js';\nimport { createOptions as jsonFixedOptions } from './designedPresetGallery.js';\n\nimport optionsMap from '../helpers/optionsMap.js';\nimport { GALLERY_CONSTS } from '../../index.js';\n\n//#endregion Imports\n\nconst addPresetOptions = (options) => {\n  // new layouts\n  const LAYOUTS = GALLERY_CONSTS[optionsMap.layoutParams.structure.galleryLayout];\n  switch (options[optionsMap.layoutParams.structure.galleryLayout]) {\n    case LAYOUTS.MASONRY:\n      return masonryOptions(options);\n    case LAYOUTS.GRID:\n      return gridOptions(options);\n    case LAYOUTS.THUMBNAIL:\n      return thumbnailsOptions(options);\n    case LAYOUTS.SLIDER:\n      return sliderOptions(options);\n    case LAYOUTS.SLIDESHOW:\n      return slideshowOptions(options);\n    case LAYOUTS.PANORAMA:\n      return panoramaOptions(options);\n    case LAYOUTS.COLUMN:\n      return columnOptions(options);\n    case LAYOUTS.MAGIC:\n      console.error('A layout generated by the magicLayoutSeed is no longer supported as of Pro Gallery v5');\n      return options;\n    case LAYOUTS.FULLSIZE:\n      return fullsizeOptions(options);\n    case LAYOUTS.BRICKS:\n      return bricksOptions(options);\n    case LAYOUTS.MIX:\n      return mixOptions(options);\n    case LAYOUTS.ALTERNATE:\n      return alternateOptions(options);\n    case LAYOUTS.EMPTY:\n      return emptyOptions(options);\n    case LAYOUTS.JSON_FIXED:\n      return jsonFixedOptions(options);\n    case LAYOUTS.COLLAGE:\n    default:\n      return collageOptions(options);\n  }\n};\n\nconst NEW_PRESETS = {\n  alternate,\n  bricks,\n  collage,\n  fullsize,\n  column,\n  grid,\n  masonry,\n  mix,\n  panorama,\n  slider,\n  slideshow,\n  thumbnails,\n  empty,\n};\n\nconst getLayoutName = (galleryLayout) => {\n  const galleyLayoutList = [\n    'empty', // -1\n    'collage', // 0\n    'masonry', // 1\n    'grid', // 2\n    'thumbnails', // 3\n    'slider', // 4\n    'slideshow', // 5\n    'panorama', // 6\n    'column', // 7\n    'magic-deprecated', // 8\n    'fullsize', // 9\n    'bricks', // 10\n    'mix', // 11,\n    'alternate', // 12\n  ];\n  return galleyLayoutList[galleryLayout + 1];\n};\n\n// returns true if the given param is in the current layout preset\nconst isInPreset = (galleryLayout, paramToCheck) => {\n  const layoutName = getLayoutName(galleryLayout) || 'empty'; // empty for when there is no layout given\n  return Object.keys(NEW_PRESETS[layoutName]).includes(paramToCheck);\n};\n\nexport { addPresetOptions, NEW_PRESETS, getLayoutName, isInPreset };\n","import optionsMap from './optionsMap.js';\n\nexport const nameChangedLayoutParams = [\n  ['galleryLayout', optionsMap.layoutParams.structure.galleryLayout],\n  ['imageMargin', optionsMap.layoutParams.structure.itemSpacing],\n  ['groupsPerStrip', optionsMap.layoutParams.groups.numberOfGroupsPerRow],\n  ['cubeImages', optionsMap.layoutParams.crop.enable],\n  ['smartCrop', optionsMap.layoutParams.crop.enableSmartCrop],\n  ['cropOnlyFill', optionsMap.layoutParams.crop.cropOnlyFill],\n  ['minItemSize', optionsMap.layoutParams.targetItemSize.minimum],\n  ['scatter', optionsMap.layoutParams.structure.scatter.randomScatter],\n  ['rotatingScatter', optionsMap.layoutParams.structure.scatter.manualScatter],\n  ['numberOfImagesPerCol', optionsMap.layoutParams.structure.numberOfGridRows],\n  //['collageAmount', optionsMap.layoutParams.groups.amount], //This doesnt really exist. need to eradicate as a refactor\n  ['collageDensity', optionsMap.layoutParams.groups.density],\n  ['chooseBestGroup', optionsMap.layoutParams.groups.groupByOrientation],\n  ['groupSize', optionsMap.layoutParams.groups.groupSize],\n  ['hasThumbnails', optionsMap.layoutParams.thumbnails.enable],\n  ['thumbnailSpacings', optionsMap.layoutParams.thumbnails.spacing],\n  ['thumbnailSize', optionsMap.layoutParams.thumbnails.size],\n  ['showArrows', optionsMap.layoutParams.navigationArrows.enable],\n  ['arrowsPadding', optionsMap.layoutParams.navigationArrows.padding],\n  ['arrowsVerticalPosition', optionsMap.layoutParams.navigationArrows.verticalAlignment],\n  ['arrowsSize', optionsMap.layoutParams.navigationArrows.size],\n  ['imageInfoType', optionsMap.layoutParams.info.layout],\n\n  //['textBoxWidthPercent', optionsMap.layoutParams.info.widthByPercent],\n  ['textImageSpace', optionsMap.layoutParams.info.spacing],\n  ['textBoxBorderWidth', optionsMap.layoutParams.info.border.width],\n  ['textBoxBorderColor', optionsMap.layoutParams.info.border.color],\n  ['textBoxBorderRadius', optionsMap.layoutParams.info.border.radius],\n];\n\nexport const reversedLayoutParams = [['useMaxDimensions', optionsMap.layoutParams.structure.enableStreching]];\n\nexport const nameChangedBehaviourParams = [\n  ['magnificationLevel', optionsMap.behaviourParams.item.content.magnificationValue],\n  ['tiltAngleValue', optionsMap.behaviourParams.item.content.tiltAngleValue],\n  ['videoLoop', optionsMap.behaviourParams.item.video.loop],\n  ['showVideoPlayButton', optionsMap.behaviourParams.item.video.enablePlayButton],\n  ['showVideoControls', optionsMap.behaviourParams.item.video.enableControls],\n  ['enableVideoPlaceholder', optionsMap.behaviourParams.item.video.enablePlaceholder],\n  ['overlayAnimation', optionsMap.behaviourParams.item.overlay.hoverAnimation],\n  ['overlayPosition', optionsMap.behaviourParams.item.overlay.position],\n  ['overlaySize', optionsMap.behaviourParams.item.overlay.size],\n  ['overlaySizeType', optionsMap.behaviourParams.item.overlay.sizeUnits],\n  ['overlayPadding', optionsMap.behaviourParams.item.overlay.padding],\n  ['overlayBackground', optionsMap.behaviourParams.item.overlay.backgroundColor],\n  ['imageHoverAnimation', optionsMap.behaviourParams.item.content.hoverAnimation],\n  ['imagePlacementAnimation', optionsMap.behaviourParams.item.content.placementAnimation],\n  ['imageLoadingMode', optionsMap.behaviourParams.item.content.loader],\n  ['scrollSnap', optionsMap.behaviourParams.gallery.horizontal.enableScrollSnap],\n  ['scrollAnimation', optionsMap.behaviourParams.gallery.scrollAnimation],\n  ['shouldIndexDirectShareLinkInSEO', optionsMap.behaviourParams.gallery.enableIndexingShareLinks],\n  ['loadMoreButtonText', optionsMap.behaviourParams.gallery.vertical.loadMore.text],\n  ['slideAnimation', optionsMap.behaviourParams.gallery.horizontal.slideAnimation],\n  ['slideTransition', optionsMap.behaviourParams.gallery.horizontal.slideTransition],\n  ['scrollDuration', optionsMap.behaviourParams.gallery.horizontal.navigationDuration], //This might need to move to navigationArrows in layoutParams.\n  ['slideshowLoop', optionsMap.behaviourParams.gallery.horizontal.loop],\n  ['autoSlideshowInterval', optionsMap.behaviourParams.gallery.horizontal.autoSlide.interval],\n  ['pauseAutoSlideshowOnHover', optionsMap.behaviourParams.gallery.horizontal.autoSlide.pauseOnHover],\n  ['autoSlideshowContinuousSpeed', optionsMap.behaviourParams.gallery.horizontal.autoSlide.speed],\n  ['allowSlideshowCounter', optionsMap.behaviourParams.gallery.horizontal.slideshowInfo.enableCounter],\n  ['playButtonForAutoSlideShow', optionsMap.behaviourParams.gallery.horizontal.slideshowInfo.enablePlayButton],\n];\n\nexport const reversedBehaviourParams = [\n  ['enableInfiniteScroll', optionsMap.behaviourParams.gallery.vertical.loadMore.enable],\n  ['allowContextMenu', optionsMap.behaviourParams.gallery.blockContextMenu],\n  ['enableScroll', optionsMap.behaviourParams.gallery.horizontal.blockScroll], //requires a reversal! (blocks instead of allowing),\n];\n\nexport const nameChangedStylingParams = [\n  ['itemShadowBlur', optionsMap.stylingParams.itemShadowBlur],\n  ['itemShadowDirection', optionsMap.stylingParams.itemShadowDirection],\n  ['itemShadowOpacityAndColor', optionsMap.stylingParams.itemShadowOpacityAndColor],\n  ['arrowsColor', optionsMap.stylingParams.arrowsColor],\n  ['itemShadowSize', optionsMap.stylingParams.itemShadowSize],\n  ['itemEnableShadow', optionsMap.stylingParams.itemEnableShadow],\n  ['itemBorderRadius', optionsMap.stylingParams.itemBorderRadius],\n  ['itemBorderColor', optionsMap.stylingParams.itemBorderColor],\n  ['itemBorderWidth', optionsMap.stylingParams.itemBorderWidth],\n];\n\n//---------tooling---------//\nexport function changeNames(obj, pairsArray) {\n  let _obj = { ...obj };\n  for (const [oldName, newName] of pairsArray) {\n    _obj = namingChange(_obj, oldName, newName);\n  }\n  return _obj;\n}\nexport function reverseBooleans(obj, pairsArray) {\n  let _obj = { ...obj };\n  for (const [oldName, newName] of pairsArray) {\n    _obj = reverseBooleanTo(_obj, oldName, newName);\n  }\n  return _obj;\n}\nexport function namingChange(obj, oldName, newName) {\n  if (typeof obj[newName] === 'undefined' && typeof obj[oldName] !== 'undefined') {\n    obj[newName] = obj[oldName];\n  }\n  delete obj[oldName];\n  return obj;\n}\nexport function reverseBooleanTo(obj, oldName, newName) {\n  if (typeof obj[newName] === 'undefined' && typeof obj[oldName] !== 'undefined') {\n    obj[newName] = !obj[oldName];\n  }\n  delete obj[oldName];\n  return obj;\n}\n","import { trimUndefinedValues_flat, flattenObject, flatToNested } from './optionsUtils.js';\n\nimport { isLayout } from '../../common/constants/layoutParams_structure_galleryLayout.js';\nimport optionsMap from './optionsMap.js';\nimport { addOldOptions } from './optionsBackwardConverter.js';\nimport {\n  nameChangedLayoutParams,\n  nameChangedBehaviourParams,\n  nameChangedStylingParams,\n  reversedLayoutParams,\n  reversedBehaviourParams,\n  changeNames,\n  namingChange,\n  reverseBooleans,\n} from './migratorStore.js';\n\nfunction extendNestedOptionsToIncludeOldAndNew(nestedOptions) {\n  let flatOptions = flattenObject(nestedOptions);\n  let populatedFlatOptions = addOldOptions(addMigratedOptions(flatOptions));\n  return { ...flatToNested(populatedFlatOptions), ...populatedFlatOptions };\n}\n\nfunction addMigratedOptions(flatOptions) {\n  const flat_migrated = migrateOptions(flatOptions);\n  let flat_combinedOptions = {\n    ...trimUndefinedValues_flat(flat_migrated),\n    ...trimUndefinedValues_flat(flatOptions),\n  };\n  delete flat_combinedOptions.oldRefactoredOptionInCore;\n  return flat_combinedOptions;\n}\n\nfunction migrateOptions(flatOptionsObject) {\n  let migratedOptions = { ...flatOptionsObject };\n  // let newStyles = flattenObject(cloneDeep(oldStyles));\n  ///----------- LAYOUT -------------///\n  migratedOptions = changeNames(migratedOptions, nameChangedLayoutParams);\n  migratedOptions = reverseBooleans(migratedOptions, reversedLayoutParams);\n  migratedOptions = process_old_to_new_ThumbnailAlignment(migratedOptions);\n  migratedOptions = process_old_to_new_ScrollDirection(migratedOptions);\n  migratedOptions = process_old_to_new_LayoutOrientation(migratedOptions);\n  migratedOptions = process_old_to_new_groupsOrder(migratedOptions);\n  migratedOptions = process_old_to_new_repeatingGroupTypes(migratedOptions);\n  migratedOptions = process_old_to_new_AllowedGroupTypes(migratedOptions);\n  migratedOptions = process_old_to_new_NumberOfColumns(migratedOptions); // fixedColumns || numberOfImagesPerRow\n  migratedOptions = process_old_to_new_targetItemSizeUnit(migratedOptions);\n  migratedOptions = process_old_to_new_targetItemSizeValue(migratedOptions);\n  migratedOptions = process_old_to_new_CroppedAlignment(migratedOptions);\n  migratedOptions = process_old_to_new_CropRatio(migratedOptions);\n  migratedOptions = process_old_to_new_textBoxSizeMode(migratedOptions);\n  migratedOptions = process_old_to_new_columnRatios(migratedOptions);\n  migratedOptions = process_old_to_new_cropMethod(migratedOptions);\n  migratedOptions = process_old_to_new_responsiveMode(migratedOptions);\n  migratedOptions = process_old_to_new_gallerySpacing(migratedOptions);\n  migratedOptions = process_old_to_new_slideshowInfoSize(migratedOptions);\n  migratedOptions = process_old_to_new_arrowsPosition(migratedOptions);\n\n  ///----------- BEHAVIOUR -------------///\n  migratedOptions = changeNames(migratedOptions, nameChangedBehaviourParams);\n  migratedOptions = reverseBooleans(migratedOptions, reversedBehaviourParams);\n  migratedOptions = process_old_to_new_ClickAction(migratedOptions);\n  migratedOptions = process_old_to_new_VideoPlayTrigger(migratedOptions);\n  migratedOptions = process_old_to_new_VideoVolume(migratedOptions);\n  migratedOptions = process_old_to_new_VideoSpeed(migratedOptions);\n  migratedOptions = process_old_to_new_OverlayHoveringBehaviour(migratedOptions);\n  migratedOptions = process_old_to_new_InfoPlacement(migratedOptions);\n  migratedOptions = process_old_to_new_layoutDirection(migratedOptions);\n  migratedOptions = process_old_to_new_LoadMoreAmount(migratedOptions);\n  migratedOptions = process_old_to_new_AutoSlideBehaviour(migratedOptions);\n  migratedOptions = process_old_to_new_galleryTextAlign(migratedOptions);\n\n  ///----------- STYLING -------------///\n\n  migratedOptions = changeNames(migratedOptions, nameChangedStylingParams);\n  delete migratedOptions.fullscreen;\n  return migratedOptions;\n}\n\n//----- refactor functions ----------//\nfunction process_old_to_new_columnRatios(obj) {\n  let _obj = obj;\n\n  _obj = namingChange(_obj, 'columnWidths', optionsMap.layoutParams.structure.columnRatios);\n  if (_obj[optionsMap.layoutParams.structure.columnRatios]?.length === 0) {\n    _obj[optionsMap.layoutParams.structure.columnRatios] = [];\n  } else {\n    _obj[optionsMap.layoutParams.structure.columnRatios] = _obj[optionsMap.layoutParams.structure.columnRatios]\n      ? _obj[optionsMap.layoutParams.structure.columnRatios]?.split\n        ? [...(_obj[optionsMap.layoutParams.structure.columnRatios]?.split(',') || []).map(Number)]\n        : _obj[optionsMap.layoutParams.structure.columnRatios]\n      : undefined;\n  }\n  return _obj;\n}\n\nfunction process_old_to_new_targetItemSizeValue(obj) {\n  let _obj = obj;\n  let unit = _obj[optionsMap.layoutParams.targetItemSize.unit];\n  let key;\n  switch (unit) {\n    case 'PIXEL':\n      key = 'gallerySizePx';\n      break;\n    case 'SMART':\n      key = 'gallerySize';\n      break;\n    case 'PERCENT':\n      key = 'gallerySizeRatio';\n      break;\n  }\n  _obj = namingChange(_obj, key, optionsMap.layoutParams.targetItemSize.value);\n\n  delete _obj['gallerySizePx'];\n  delete _obj['gallerySizeRatio'];\n  delete _obj['gallerySize'];\n\n  return _obj;\n}\nfunction process_old_to_new_cropMethod(obj) {\n  let _obj = obj;\n  _obj = namingChange(_obj, 'cubeType', optionsMap.layoutParams.crop.method);\n  _obj[optionsMap.layoutParams.crop.method] = _obj[optionsMap.layoutParams.crop.method]?.toUpperCase();\n  return _obj;\n}\nfunction process_old_to_new_ThumbnailAlignment(obj) {\n  //['galleryThumbnailsAlignment', optionsMap.layoutParams.thumbnails.alignment'],\n  let _obj = obj;\n  _obj = namingChange(_obj, 'galleryThumbnailsAlignment', optionsMap.layoutParams.thumbnails.alignment);\n  _obj[optionsMap.layoutParams.thumbnails.alignment] =\n    _obj[optionsMap.layoutParams.thumbnails.alignment]?.toUpperCase();\n  return _obj;\n}\nfunction process_old_to_new_VideoPlayTrigger(obj) {\n  let _obj = obj;\n  _obj = namingChange(_obj, 'videoPlay', optionsMap.behaviourParams.item.video.playTrigger);\n  _obj[optionsMap.behaviourParams.item.video.playTrigger] =\n    _obj[optionsMap.behaviourParams.item.video.playTrigger]?.toUpperCase();\n  return _obj;\n}\nfunction process_old_to_new_targetItemSizeUnit(obj) {\n  let _obj = obj;\n  _obj = namingChange(_obj, 'gallerySizeType', optionsMap.layoutParams.targetItemSize.unit);\n  switch (_obj[optionsMap.layoutParams.targetItemSize.unit]) {\n    case 'px':\n      _obj[optionsMap.layoutParams.targetItemSize.unit] = 'PIXEL';\n      break;\n    case 'ratio':\n      _obj[optionsMap.layoutParams.targetItemSize.unit] = 'PERCENT';\n      break;\n    case 'smart':\n      _obj[optionsMap.layoutParams.targetItemSize.unit] = 'SMART';\n      break;\n  }\n  return _obj;\n}\nfunction process_old_to_new_VideoVolume(obj) {\n  let _obj = obj;\n  _obj = namingChange(_obj, 'videoSound', optionsMap.behaviourParams.item.video.volume);\n  if (typeof _obj[optionsMap.behaviourParams.item.video.volume] !== 'undefined') {\n    _obj[optionsMap.behaviourParams.item.video.volume] = Number(_obj[optionsMap.behaviourParams.item.video.volume]);\n  }\n  return _obj;\n}\nfunction process_old_to_new_VideoSpeed(obj) {\n  let _obj = obj;\n  _obj = namingChange(_obj, 'videoSpeed', optionsMap.behaviourParams.item.video.speed);\n  _obj[optionsMap.behaviourParams.item.video.speed] =\n    Number(_obj[optionsMap.behaviourParams.item.video.speed]) >= 0\n      ? Number(_obj[optionsMap.behaviourParams.item.video.speed])\n      : undefined;\n  return _obj;\n}\nfunction process_old_to_new_gallerySpacing(obj) {\n  if (typeof obj[optionsMap.layoutParams.structure.gallerySpacing] !== 'undefined') {\n    return obj;\n  }\n  let _obj = obj;\n  let spacingVal;\n  if (_obj['layoutParams_gallerySpacing'] >= 0) {\n    spacingVal = _obj['layoutParams_gallerySpacing'];\n  } else if (_obj['galleryMargin'] >= 0) {\n    spacingVal = _obj['galleryMargin'];\n  }\n  _obj[optionsMap.layoutParams.structure.gallerySpacing] = spacingVal;\n  delete _obj['layoutParams_gallerySpacing'];\n  delete _obj['galleryMargin'];\n  return _obj;\n}\nfunction process_old_to_new_arrowsPosition(obj) {\n  let _obj = obj;\n  _obj = namingChange(_obj, 'arrowsPosition', optionsMap.layoutParams.navigationArrows.position);\n  switch (_obj[optionsMap.layoutParams.navigationArrows.position]) {\n    case 0:\n      _obj[optionsMap.layoutParams.navigationArrows.position] = 'ON_GALLERY';\n      break;\n    case 1:\n      _obj[optionsMap.layoutParams.navigationArrows.position] = 'OUTSIDE_GALLERY';\n      break;\n    case 2:\n      _obj[optionsMap.layoutParams.navigationArrows.position] = 'MOUSE_CURSOR';\n      break;\n    default:\n      break;\n  }\n  return _obj;\n}\nfunction process_old_to_new_responsiveMode(obj) {\n  let _obj = obj;\n  _obj = namingChange(_obj, 'gridStyle', optionsMap.layoutParams.structure.responsiveMode);\n  switch (_obj[optionsMap.layoutParams.structure.responsiveMode]) {\n    case 0:\n      _obj[optionsMap.layoutParams.structure.responsiveMode] = 'FIT_TO_SCREEN';\n      break;\n    case 1:\n      _obj[optionsMap.layoutParams.structure.responsiveMode] = 'SET_ITEMS_PER_ROW';\n      break;\n    default:\n      break;\n  }\n  return _obj;\n}\nfunction process_old_to_new_ScrollDirection(obj) {\n  let _obj = obj;\n  _obj = namingChange(_obj, 'scrollDirection', optionsMap.layoutParams.structure.scrollDirection);\n  switch (_obj[optionsMap.layoutParams.structure.scrollDirection]) {\n    case 0:\n      _obj[optionsMap.layoutParams.structure.scrollDirection] = 'VERTICAL';\n      break;\n    case 1:\n      _obj[optionsMap.layoutParams.structure.scrollDirection] = 'HORIZONTAL';\n      break;\n    default:\n      break;\n  }\n  return _obj;\n}\nfunction process_old_to_new_layoutDirection(obj) {\n  let _obj = obj;\n  _obj = namingChange(_obj, 'isRTL', optionsMap.behaviourParams.gallery.layoutDirection);\n  switch (_obj[optionsMap.behaviourParams.gallery.layoutDirection]) {\n    case true:\n      _obj[optionsMap.behaviourParams.gallery.layoutDirection] = 'RIGHT_TO_LEFT';\n      break;\n    case false:\n      _obj[optionsMap.behaviourParams.gallery.layoutDirection] = 'LEFT_TO_RIGHT';\n      break;\n    default:\n      break;\n  }\n  return _obj;\n}\nfunction process_old_to_new_slideshowInfoSize(obj) {\n  let _obj = obj;\n  const isSlideshow = isLayout('SLIDESHOW')({\n    galleryLayout:\n      obj['galleryLayout'] >= -3 ? obj['galleryLayout'] : obj[optionsMap.layoutParams.structure.galleryLayout],\n  });\n  if (isSlideshow) {\n    _obj = namingChange(_obj, 'slideshowInfoSize', optionsMap.layoutParams.info.height);\n  } else {\n    _obj = namingChange(_obj, 'textBoxHeight', optionsMap.layoutParams.info.height);\n  }\n  delete _obj['slideshowInfoSize'];\n  delete _obj['textBoxHeight'];\n  return _obj;\n}\nfunction process_old_to_new_textBoxSizeMode(obj) {\n  let _obj = obj;\n  _obj = namingChange(_obj, 'calculateTextBoxWidthMode', optionsMap.layoutParams.info.sizeUnits);\n  switch (_obj[optionsMap.layoutParams.info.sizeUnits]) {\n    case 'PERCENT':\n      _obj[optionsMap.layoutParams.info.sizeUnits] = 'PERCENT';\n      _obj = namingChange(_obj, 'textBoxWidthPercent', optionsMap.layoutParams.info.width);\n      delete _obj['textBoxWidth'];\n      break;\n    case 'MANUAL':\n      _obj[optionsMap.layoutParams.info.sizeUnits] = 'PIXEL';\n      _obj = namingChange(_obj, 'textBoxWidth', optionsMap.layoutParams.info.width);\n      delete _obj['textBoxWidthPercent'];\n      break;\n    default:\n      break;\n  }\n  return _obj;\n}\nfunction process_old_to_new_LayoutOrientation(obj) {\n  let _obj = obj;\n  _obj = namingChange(_obj, 'isVertical', optionsMap.layoutParams.structure.layoutOrientation);\n  switch (_obj[optionsMap.layoutParams.structure.layoutOrientation]) {\n    case true:\n      _obj[optionsMap.layoutParams.structure.layoutOrientation] = 'VERTICAL';\n      break;\n    case false:\n      _obj[optionsMap.layoutParams.structure.layoutOrientation] = 'HORIZONTAL';\n      break;\n    default:\n      break;\n  }\n  return _obj;\n}\nfunction process_old_to_new_groupsOrder(obj) {\n  let _obj = obj;\n  _obj = namingChange(_obj, 'placeGroupsLtr', optionsMap.layoutParams.structure.groupsOrder);\n  switch (_obj[optionsMap.layoutParams.structure.groupsOrder]) {\n    case true:\n      _obj[optionsMap.layoutParams.structure.groupsOrder] = 'LEFT_TO_RIGHT';\n      break;\n    case false:\n      _obj[optionsMap.layoutParams.structure.groupsOrder] = 'BY_HEIGHT';\n      break;\n    default:\n      break;\n  }\n  // 'RIGHT_TO_LEFT' doesnt exist yet.\n  return _obj;\n}\nfunction process_old_to_new_galleryTextAlign(obj) {\n  let _obj = obj;\n  _obj = namingChange(\n    _obj,\n    'galleryTextAlign',\n    optionsMap.behaviourParams.gallery.horizontal.slideshowInfo.buttonsAlignment\n  );\n  _obj[optionsMap.behaviourParams.gallery.horizontal.slideshowInfo.buttonsAlignment] =\n    _obj[optionsMap.behaviourParams.gallery.horizontal.slideshowInfo.buttonsAlignment]?.toUpperCase();\n  return _obj;\n}\nfunction process_old_to_new_LoadMoreAmount(obj) {\n  let _obj = obj;\n  _obj = namingChange(_obj, 'loadMoreAmount', optionsMap.behaviourParams.gallery.vertical.loadMore.amount);\n  _obj[optionsMap.behaviourParams.gallery.vertical.loadMore.amount] =\n    _obj[optionsMap.behaviourParams.gallery.vertical.loadMore.amount]?.toUpperCase();\n  return _obj;\n}\nfunction process_old_to_new_CroppedAlignment(obj) {\n  let _obj = obj;\n  _obj = namingChange(_obj, 'cubeFitPosition', optionsMap.layoutParams.crop.alignment);\n  switch (_obj[optionsMap.layoutParams.crop.alignment]) {\n    case 'MIDDLE':\n      _obj[optionsMap.layoutParams.crop.alignment] = 'CENTER';\n      break;\n    default:\n      break;\n  }\n  return _obj;\n}\nfunction process_old_to_new_OverlayHoveringBehaviour(obj) {\n  let _obj = obj;\n  _obj = namingChange(_obj, 'hoveringBehaviour', optionsMap.behaviourParams.item.overlay.hoveringBehaviour);\n  switch (_obj[optionsMap.behaviourParams.item.overlay.hoveringBehaviour]) {\n    case 'NO_CHANGE':\n      _obj[optionsMap.behaviourParams.item.overlay.hoveringBehaviour] = 'ALWAYS_SHOW';\n      break;\n    case 'NEVER_SHOW':\n      _obj[optionsMap.behaviourParams.item.overlay.hoveringBehaviour] = 'NEVER_SHOW';\n      break;\n    default:\n      break;\n  }\n  return _obj;\n}\nfunction process_old_to_new_InfoPlacement(obj) {\n  let _obj = obj;\n  _obj = namingChange(_obj, 'titlePlacement', optionsMap.layoutParams.info.placement);\n  switch (_obj[optionsMap.layoutParams.info.placement]) {\n    case 'SHOW_ON_HOVER':\n      _obj[optionsMap.layoutParams.info.placement] = 'OVERLAY';\n      break;\n    case 'SHOW_BELOW':\n      _obj[optionsMap.layoutParams.info.placement] = 'BELOW';\n      break;\n    case 'SHOW_ABOVE':\n      _obj[optionsMap.layoutParams.info.placement] = 'ABOVE';\n      break;\n    case 'SHOW_ON_THE_RIGHT':\n      _obj[optionsMap.layoutParams.info.placement] = 'RIGHT';\n      break;\n    case 'SHOW_ON_THE_LEFT':\n      _obj[optionsMap.layoutParams.info.placement] = 'LEFT';\n      break;\n    case 'ALTERNATE_HORIZONTAL':\n      _obj[optionsMap.layoutParams.info.placement] = 'ALTERNATE_HORIZONTALLY';\n      break;\n    case 'ALTERNATE_VERTICAL':\n      _obj[optionsMap.layoutParams.info.placement] = 'ALTERNATE_VERTICALLY';\n      break;\n    default:\n      break;\n  }\n  return _obj;\n}\nfunction process_old_to_new_ClickAction(obj) {\n  let _obj = obj;\n  _obj = namingChange(_obj, 'itemClick', optionsMap.behaviourParams.item.clickAction);\n  _obj[optionsMap.behaviourParams.item.clickAction] = _obj[optionsMap.behaviourParams.item.clickAction]?.toUpperCase();\n  switch (_obj[optionsMap.behaviourParams.item.clickAction]) {\n    case 'FULLSCREEN':\n    case 'EXPAND':\n      _obj[optionsMap.behaviourParams.item.clickAction] = 'ACTION';\n      break;\n    default:\n      break;\n  }\n  return _obj;\n}\nfunction process_old_to_new_AutoSlideBehaviour(obj) {\n  if (typeof obj[optionsMap.behaviourParams.gallery.horizontal.autoSlide.behaviour] !== 'undefined') {\n    return obj;\n  }\n  let _obj = obj;\n  let isAutoSlide = _obj['isAutoSlideshow'];\n  let autoSlideshowType = _obj['autoSlideshowType'];\n  let finalVal;\n  if (typeof isAutoSlide === 'undefined') {\n    finalVal = undefined;\n  } else {\n    if (!isAutoSlide) {\n      finalVal = 'OFF';\n    } else {\n      if (autoSlideshowType === 'interval') {\n        finalVal = 'INTERVAL';\n      } else {\n        finalVal = 'CONTINUOUS';\n      }\n    }\n  }\n  _obj[optionsMap.behaviourParams.gallery.horizontal.autoSlide.behaviour] = finalVal;\n  delete _obj['isAutoSlideshow'];\n  delete _obj['autoSlideshowType'];\n  return _obj;\n}\nfunction process_old_to_new_CropRatio(obj) {\n  if (typeof obj[optionsMap.layoutParams.crop.ratios] !== 'undefined') {\n    return obj;\n  }\n  let _obj = obj;\n  let repeatingVal = _obj['rotatingCropRatios'];\n  let val = _obj['cubeRatio'] || _obj['layoutParams_cropRatio'];\n  let finalVal;\n  if (typeof repeatingVal === 'string' && repeatingVal !== '') {\n    finalVal = repeatingVal;\n  } else {\n    finalVal = val;\n  }\n  const getVal = (ele) => {\n    if (Number(ele) >= 0) {\n      return Number(ele);\n    } else {\n      return ele;\n    }\n  };\n  _obj[optionsMap.layoutParams.crop.ratios] = finalVal && String(finalVal).split(',').map(getVal);\n  delete _obj['cubeRatio'];\n  delete _obj['layoutParams_cropRatio'];\n  delete _obj['rotatingCropRatios'];\n  return _obj;\n}\nfunction process_old_to_new_AllowedGroupTypes(obj) {\n  if (typeof obj[optionsMap.layoutParams.groups.allowedGroupTypes] !== 'undefined') {\n    return obj;\n  }\n  let _obj = obj;\n\n  _obj[optionsMap.layoutParams.groups.allowedGroupTypes] = _obj['groupTypes']?.split\n    ? _obj['groupTypes'].split(',')\n    : _obj['groupTypes']\n    ? _obj['groupTypes']\n    : undefined;\n  delete _obj['groupTypes'];\n  return _obj;\n}\nfunction process_old_to_new_repeatingGroupTypes(obj) {\n  if (typeof obj[optionsMap.layoutParams.groups.repeatingGroupTypes] !== 'undefined') {\n    return obj;\n  }\n  let _obj = obj;\n  let repeatingVal = _obj['rotatingGroupTypes'] || _obj['layoutParams_repeatingGroupTypes'];\n  let finalVal;\n  if (typeof repeatingVal === 'string' && repeatingVal !== '') {\n    finalVal = repeatingVal.split(',');\n  } else if (typeof repeatingVal === 'string' && repeatingVal === '') {\n    finalVal = [];\n  } else {\n    finalVal = undefined;\n  }\n  _obj[optionsMap.layoutParams.groups.repeatingGroupTypes] = finalVal;\n  delete _obj['layoutParams_repeatingGroupTypes'];\n  delete _obj['rotatingGroupTypes'];\n  return _obj;\n}\nfunction process_old_to_new_NumberOfColumns(obj) {\n  if (typeof obj[optionsMap.layoutParams.structure.numberOfColumns] !== 'undefined') {\n    return obj;\n  }\n  let _obj = obj;\n  const numberOfImagesPerRow = obj['numberOfImagesPerRow'];\n  const finalVal = numberOfImagesPerRow >= 0 ? numberOfImagesPerRow : undefined;\n\n  _obj[optionsMap.layoutParams.structure.numberOfColumns] = finalVal;\n  delete _obj['numberOfImagesPerRow'];\n  return _obj;\n}\n\nexport { migrateOptions, addMigratedOptions, extendNestedOptionsToIncludeOldAndNew };\n","\"use strict\";export const validate = validate10;export default validate10;const schema11 = {\"type\":\"object\",\"properties\":{\"layoutParams\":{\"$ref\":\"#/definitions/LayoutParams\"},\"behaviourParams\":{\"$ref\":\"#/definitions/BehaviourParams\"},\"stylingParams\":{\"$ref\":\"#/definitions/StylingParams\"}},\"definitions\":{\"LayoutParams\":{\"type\":\"object\",\"properties\":{\"groups\":{\"$ref\":\"#/definitions/Groups\"},\"crop\":{\"$ref\":\"#/definitions/Crop\"},\"structure\":{\"$ref\":\"#/definitions/Structure\"},\"thumbnails\":{\"$ref\":\"#/definitions/Thumbnails\"},\"navigationArrows\":{\"$ref\":\"#/definitions/NavigationArrows\"},\"info\":{\"$ref\":\"#/definitions/Info\"},\"targetItemSize\":{\"$ref\":\"#/definitions/TargetItemSize\"}}},\"Groups\":{\"type\":\"object\",\"properties\":{\"density\":{\"type\":\"number\"},\"groupByOrientation\":{\"type\":\"boolean\"},\"numberOfGroupsPerRow\":{\"type\":\"number\"},\"allowedGroupTypes\":{\"type\":\"array\",\"items\":{\"enum\":[\"1\",\"2h\",\"2v\",\"3b\",\"3h\",\"3l\",\"3r\",\"3t\",\"3v\"],\"type\":\"string\"}},\"repeatingGroupTypes\":{\"type\":\"array\",\"items\":{\"enum\":[\"1\",\"2h\",\"2v\",\"3b\",\"3h\",\"3l\",\"3r\",\"3t\",\"3v\"],\"type\":\"string\"}},\"groupSize\":{\"type\":\"number\"}}},\"Crop\":{\"type\":\"object\",\"properties\":{\"method\":{\"enum\":[\"FILL\",\"FIT\",\"MAX\",\"MIN\"],\"type\":\"string\"},\"alignment\":{\"enum\":[\"BOTTOM\",\"CENTER\",\"LEFT\",\"RIGHT\",\"TOP\"],\"type\":\"string\"},\"enable\":{\"type\":\"boolean\"},\"enableSmartCrop\":{\"type\":\"boolean\"},\"cropOnlyFill\":{\"type\":\"boolean\"},\"ratios\":{\"type\":\"array\",\"items\":{\"type\":\"number\"}}}},\"Structure\":{\"type\":\"object\",\"properties\":{\"galleryLayout\":{\"type\":\"number\"},\"galleryRatio\":{\"$ref\":\"#/definitions/GalleryRatio\"},\"enableStreching\":{\"type\":\"boolean\"},\"gallerySpacing\":{\"type\":\"number\"},\"itemSpacing\":{\"type\":\"number\"},\"scrollDirection\":{\"enum\":[\"HORIZONTAL\",\"VERTICAL\"],\"type\":\"string\"},\"numberOfColumns\":{\"type\":\"number\"},\"numberOfGridRows\":{\"type\":\"number\"},\"responsiveMode\":{\"enum\":[\"FIT_TO_SCREEN\",\"SET_ITEMS_PER_ROW\"],\"type\":\"string\"},\"columnRatios\":{\"type\":\"array\",\"items\":{\"type\":\"number\"}},\"scatter\":{\"$ref\":\"#/definitions/Scatter\"},\"layoutOrientation\":{\"enum\":[\"HORIZONTAL\",\"VERTICAL\"],\"type\":\"string\"},\"groupsOrder\":{\"enum\":[\"BY_HEIGHT\",\"LEFT_TO_RIGHT\"],\"type\":\"string\"}}},\"GalleryRatio\":{\"type\":\"object\",\"properties\":{\"value\":{\"type\":\"number\"},\"includeExternalInfo\":{\"type\":\"boolean\"}},\"required\":[\"includeExternalInfo\",\"value\"]},\"Scatter\":{\"type\":\"object\",\"properties\":{\"randomScatter\":{\"type\":\"number\"},\"manualScatter\":{\"type\":\"string\"}}},\"Thumbnails\":{\"type\":\"object\",\"properties\":{\"enable\":{\"type\":\"boolean\"},\"position\":{\"enum\":[\"ON_GALLERY\",\"OUTSIDE_GALLERY\"],\"type\":\"string\"},\"spacing\":{\"type\":\"number\"},\"marginToGallery\":{\"type\":\"number\"},\"size\":{\"type\":\"number\"},\"alignment\":{\"enum\":[\"BOTTOM\",\"LEFT\",\"RIGHT\",\"TOP\"],\"type\":\"string\"}}},\"NavigationArrows\":{\"type\":\"object\",\"properties\":{\"enable\":{\"type\":\"boolean\"},\"size\":{\"type\":\"number\"},\"padding\":{\"type\":\"number\"},\"position\":{\"enum\":[\"MOUSE_CURSOR\",\"ON_GALLERY\",\"OUTSIDE_GALLERY\"],\"type\":\"string\"},\"verticalAlignment\":{\"enum\":[\"IMAGE_CENTER\",\"INFO_CENTER\",\"ITEM_CENTER\"],\"type\":\"string\"},\"type\":{\"enum\":[\"ARROW_2\",\"ARROW_3\",\"DEFAULT_ARROW\"],\"type\":\"string\"},\"container\":{\"$ref\":\"#/definitions/NavigationArrowsContainer\"},\"mouseCursorContainerMaxWidth\":{\"type\":\"number\"}}},\"NavigationArrowsContainer\":{\"type\":\"object\",\"properties\":{\"type\":{\"enum\":[\"BOX\",\"NONE\",\"SHADOW\"],\"type\":\"string\"},\"borderRadius\":{\"type\":\"number\"},\"backgroundColor\":{\"type\":\"string\"}}},\"Info\":{\"type\":\"object\",\"properties\":{\"sizeUnits\":{\"enum\":[\"PERCENT\",\"PIXEL\"],\"type\":\"string\"},\"width\":{\"type\":\"number\"},\"height\":{\"type\":\"number\"},\"spacing\":{\"type\":\"number\"},\"layout\":{\"enum\":[\"ATTACHED_BACKGROUND\",\"DONT_SHOW\",\"NO_BACKGROUND\",\"SEPARATED_BACKGROUND\"],\"type\":\"string\"},\"border\":{\"$ref\":\"#/definitions/InfoBorder\"},\"placement\":{\"enum\":[\"ABOVE\",\"ALTERNATE_HORIZONTALLY\",\"ALTERNATE_VERTICALLY\",\"BELOW\",\"LEFT\",\"OVERLAY\",\"RIGHT\"],\"type\":\"string\"}}},\"InfoBorder\":{\"type\":\"object\",\"properties\":{\"width\":{\"type\":\"number\"},\"color\":{\"type\":\"string\"},\"radius\":{\"type\":\"number\"}}},\"TargetItemSize\":{\"type\":\"object\",\"properties\":{\"unit\":{\"enum\":[\"PERCENT\",\"PIXEL\",\"SMART\"],\"type\":\"string\"},\"value\":{\"type\":\"number\"},\"minimum\":{\"type\":\"number\"}}},\"BehaviourParams\":{\"type\":\"object\",\"properties\":{\"item\":{\"$ref\":\"#/definitions/Item\"},\"gallery\":{\"$ref\":\"#/definitions/Gallery\"}}},\"Item\":{\"type\":\"object\",\"properties\":{\"clickAction\":{\"enum\":[\"ACTION\",\"LINK\",\"MAGNIFY\",\"NOTHING\"],\"type\":\"string\"},\"video\":{\"$ref\":\"#/definitions/Video\"},\"threeDimensionalScene\":{\"$ref\":\"#/definitions/ThreeDimensionalScene\"},\"overlay\":{\"$ref\":\"#/definitions/Overlay\"},\"content\":{\"$ref\":\"#/definitions/Content\"},\"secondaryMedia\":{\"$ref\":\"#/definitions/SecondaryMedia\"}}},\"Video\":{\"type\":\"object\",\"properties\":{\"speed\":{\"type\":\"number\"},\"volume\":{\"type\":\"number\"},\"loop\":{\"type\":\"boolean\"},\"playTrigger\":{\"enum\":[\"AUTO\",\"CLICK\",\"HOVER\"],\"type\":\"string\"},\"enablePlayButton\":{\"type\":\"boolean\"},\"enableThumbnailsPlayButton\":{\"type\":\"boolean\"},\"enableControls\":{\"type\":\"boolean\"},\"enablePlaceholder\":{\"type\":\"boolean\"}}},\"ThreeDimensionalScene\":{\"type\":\"object\",\"properties\":{\"transform\":{\"$ref\":\"#/definitions/Transform\"},\"controls\":{\"$ref\":\"#/definitions/Controls\"},\"enablePlayButton\":{\"type\":\"boolean\"},\"enableThumbnailsPlayButton\":{\"type\":\"boolean\"},\"playTrigger\":{\"enum\":[\"AUTO\",\"CLICK\",\"HOVER\"],\"type\":\"string\"}}},\"Transform\":{\"type\":\"object\",\"properties\":{\"rotation\":{\"type\":\"string\"},\"scale\":{\"type\":\"string\"},\"position\":{\"type\":\"string\"}}},\"Controls\":{\"type\":\"object\",\"properties\":{\"enableZoom\":{\"type\":\"boolean\"},\"enableRotate\":{\"type\":\"boolean\"},\"enablePan\":{\"type\":\"boolean\"},\"enableAutoRotate\":{\"type\":\"boolean\"}}},\"Overlay\":{\"type\":\"object\",\"properties\":{\"hoveringBehaviour\":{\"enum\":[\"ALWAYS_SHOW\",\"APPEARS\",\"DISAPPEARS\",\"NEVER_SHOW\"],\"type\":\"string\"},\"hoverAnimation\":{\"enum\":[\"EXPAND\",\"FADE_IN\",\"NO_EFFECT\",\"SLIDE_DOWN\",\"SLIDE_LEFT\",\"SLIDE_RIGHT\",\"SLIDE_UP\"],\"type\":\"string\"},\"position\":{\"enum\":[\"BUTTOM\",\"CENTERED_HORIZONTALLY\",\"CENTERED_VERTICALLY\",\"LEFT\",\"RIGHT\",\"TOP\"],\"type\":\"string\"},\"size\":{\"type\":\"number\"},\"sizeUnits\":{\"enum\":[\"PERCENT\",\"PIXEL\"],\"type\":\"string\"},\"padding\":{\"type\":\"number\"},\"backgroundColor\":{}}},\"Content\":{\"type\":\"object\",\"properties\":{\"hoverAnimation\":{\"enum\":[\"BLUR\",\"COLOR_IN\",\"DARKENED\",\"GRAYSCALE\",\"INVERT\",\"NO_EFFECT\",\"SHRINK\",\"TILT\",\"ZOOM_IN\"],\"type\":\"string\"},\"placementAnimation\":{\"enum\":[\"NO_EFFECT\",\"SLIDE\"],\"type\":\"string\"},\"loader\":{\"enum\":[\"BLUR\",\"COLOR\",\"MAIN_COLOR\"],\"type\":\"string\"},\"magnificationValue\":{\"type\":\"number\"},\"tiltAngleValue\":{\"type\":\"number\"}}},\"SecondaryMedia\":{\"type\":\"object\",\"properties\":{\"trigger\":{\"enum\":[\"HOVER\",\"OFF\"],\"type\":\"string\"},\"behaviour\":{\"type\":\"string\",\"const\":\"APPEARS\"}},\"required\":[\"behaviour\",\"trigger\"]},\"Gallery\":{\"type\":\"object\",\"properties\":{\"layoutDirection\":{\"enum\":[\"LEFT_TO_RIGHT\",\"RIGHT_TO_LEFT\"],\"type\":\"string\"},\"blockContextMenu\":{\"type\":\"boolean\"},\"scrollAnimation\":{\"enum\":[\"BLUR\",\"EXPAND\",\"FADE_IN\",\"GRAYSCALE\",\"MAIN_COLOR\",\"NO_EFFECT\",\"ONE_COLOR\",\"SHRINK\",\"SLIDE_UP\",\"ZOOM_OUT\"],\"type\":\"string\"},\"enableIndexingShareLinks\":{\"type\":\"boolean\"},\"vertical\":{\"$ref\":\"#/definitions/Vertical\"},\"horizontal\":{\"$ref\":\"#/definitions/Horizontal\"}}},\"Vertical\":{\"type\":\"object\",\"properties\":{\"loadMore\":{\"$ref\":\"#/definitions/LoadMore\"}}},\"LoadMore\":{\"type\":\"object\",\"properties\":{\"enable\":{\"type\":\"boolean\"},\"amount\":{\"enum\":[\"ALL\",\"PARTIAL\"],\"type\":\"string\"},\"text\":{\"type\":\"string\"}}},\"Horizontal\":{\"type\":\"object\",\"properties\":{\"enableScrollSnap\":{\"type\":\"boolean\"},\"slideAnimation\":{\"enum\":[\"DECK\",\"FADE\",\"SCROLL\"],\"type\":\"string\"},\"slideTransition\":{\"type\":\"string\"},\"blockScroll\":{\"type\":\"boolean\"},\"navigationDuration\":{\"type\":\"number\"},\"loop\":{\"type\":\"boolean\"},\"autoSlide\":{\"$ref\":\"#/definitions/AutoSlide\"},\"slideshowInfo\":{\"$ref\":\"#/definitions/SlideshowInfo\"}}},\"AutoSlide\":{\"type\":\"object\",\"properties\":{\"behaviour\":{\"enum\":[\"CONTINUOUS\",\"INTERVAL\",\"OFF\"],\"type\":\"string\"},\"interval\":{\"type\":\"number\"},\"pauseOnHover\":{\"type\":\"boolean\"},\"speed\":{\"type\":\"number\"}}},\"SlideshowInfo\":{\"type\":\"object\",\"properties\":{\"buttonsAlignment\":{\"enum\":[\"CENTER\",\"LEFT\",\"RIGHT\"],\"type\":\"string\"},\"enableCounter\":{\"type\":\"boolean\"},\"enablePlayButton\":{\"type\":\"boolean\"}}},\"StylingParams\":{\"type\":\"object\",\"properties\":{\"arrowsColor\":{\"type\":\"string\"},\"itemShadowBlur\":{\"type\":\"number\"},\"itemShadowDirection\":{\"type\":\"number\"},\"itemShadowOpacityAndColor\":{\"type\":\"string\"},\"itemShadowSize\":{\"type\":\"number\"},\"itemEnableShadow\":{\"type\":\"boolean\"},\"itemBorderRadius\":{\"type\":\"number\"},\"itemBorderWidth\":{\"type\":\"number\"},\"itemBorderColor\":{},\"itemResolutionMode\":{\"enum\":[\"FULL\",\"SCLAED_DOWN\"],\"type\":\"string\"}}}},\"$schema\":\"http://json-schema.org/draft-07/schema#\"};const schema39 = {\"type\":\"object\",\"properties\":{\"arrowsColor\":{\"type\":\"string\"},\"itemShadowBlur\":{\"type\":\"number\"},\"itemShadowDirection\":{\"type\":\"number\"},\"itemShadowOpacityAndColor\":{\"type\":\"string\"},\"itemShadowSize\":{\"type\":\"number\"},\"itemEnableShadow\":{\"type\":\"boolean\"},\"itemBorderRadius\":{\"type\":\"number\"},\"itemBorderWidth\":{\"type\":\"number\"},\"itemBorderColor\":{},\"itemResolutionMode\":{\"enum\":[\"FULL\",\"SCLAED_DOWN\"],\"type\":\"string\"}}};const schema12 = {\"type\":\"object\",\"properties\":{\"groups\":{\"$ref\":\"#/definitions/Groups\"},\"crop\":{\"$ref\":\"#/definitions/Crop\"},\"structure\":{\"$ref\":\"#/definitions/Structure\"},\"thumbnails\":{\"$ref\":\"#/definitions/Thumbnails\"},\"navigationArrows\":{\"$ref\":\"#/definitions/NavigationArrows\"},\"info\":{\"$ref\":\"#/definitions/Info\"},\"targetItemSize\":{\"$ref\":\"#/definitions/TargetItemSize\"}}};const schema13 = {\"type\":\"object\",\"properties\":{\"density\":{\"type\":\"number\"},\"groupByOrientation\":{\"type\":\"boolean\"},\"numberOfGroupsPerRow\":{\"type\":\"number\"},\"allowedGroupTypes\":{\"type\":\"array\",\"items\":{\"enum\":[\"1\",\"2h\",\"2v\",\"3b\",\"3h\",\"3l\",\"3r\",\"3t\",\"3v\"],\"type\":\"string\"}},\"repeatingGroupTypes\":{\"type\":\"array\",\"items\":{\"enum\":[\"1\",\"2h\",\"2v\",\"3b\",\"3h\",\"3l\",\"3r\",\"3t\",\"3v\"],\"type\":\"string\"}},\"groupSize\":{\"type\":\"number\"}}};const schema14 = {\"type\":\"object\",\"properties\":{\"method\":{\"enum\":[\"FILL\",\"FIT\",\"MAX\",\"MIN\"],\"type\":\"string\"},\"alignment\":{\"enum\":[\"BOTTOM\",\"CENTER\",\"LEFT\",\"RIGHT\",\"TOP\"],\"type\":\"string\"},\"enable\":{\"type\":\"boolean\"},\"enableSmartCrop\":{\"type\":\"boolean\"},\"cropOnlyFill\":{\"type\":\"boolean\"},\"ratios\":{\"type\":\"array\",\"items\":{\"type\":\"number\"}}}};const schema18 = {\"type\":\"object\",\"properties\":{\"enable\":{\"type\":\"boolean\"},\"position\":{\"enum\":[\"ON_GALLERY\",\"OUTSIDE_GALLERY\"],\"type\":\"string\"},\"spacing\":{\"type\":\"number\"},\"marginToGallery\":{\"type\":\"number\"},\"size\":{\"type\":\"number\"},\"alignment\":{\"enum\":[\"BOTTOM\",\"LEFT\",\"RIGHT\",\"TOP\"],\"type\":\"string\"}}};const schema23 = {\"type\":\"object\",\"properties\":{\"unit\":{\"enum\":[\"PERCENT\",\"PIXEL\",\"SMART\"],\"type\":\"string\"},\"value\":{\"type\":\"number\"},\"minimum\":{\"type\":\"number\"}}};const schema15 = {\"type\":\"object\",\"properties\":{\"galleryLayout\":{\"type\":\"number\"},\"galleryRatio\":{\"$ref\":\"#/definitions/GalleryRatio\"},\"enableStreching\":{\"type\":\"boolean\"},\"gallerySpacing\":{\"type\":\"number\"},\"itemSpacing\":{\"type\":\"number\"},\"scrollDirection\":{\"enum\":[\"HORIZONTAL\",\"VERTICAL\"],\"type\":\"string\"},\"numberOfColumns\":{\"type\":\"number\"},\"numberOfGridRows\":{\"type\":\"number\"},\"responsiveMode\":{\"enum\":[\"FIT_TO_SCREEN\",\"SET_ITEMS_PER_ROW\"],\"type\":\"string\"},\"columnRatios\":{\"type\":\"array\",\"items\":{\"type\":\"number\"}},\"scatter\":{\"$ref\":\"#/definitions/Scatter\"},\"layoutOrientation\":{\"enum\":[\"HORIZONTAL\",\"VERTICAL\"],\"type\":\"string\"},\"groupsOrder\":{\"enum\":[\"BY_HEIGHT\",\"LEFT_TO_RIGHT\"],\"type\":\"string\"}}};const schema16 = {\"type\":\"object\",\"properties\":{\"value\":{\"type\":\"number\"},\"includeExternalInfo\":{\"type\":\"boolean\"}},\"required\":[\"includeExternalInfo\",\"value\"]};const schema17 = {\"type\":\"object\",\"properties\":{\"randomScatter\":{\"type\":\"number\"},\"manualScatter\":{\"type\":\"string\"}}};function validate12(data, {instancePath=\"\", parentData, parentDataProperty, rootData=data}={}){let vErrors = null;let errors = 0;if(data && typeof data == \"object\" && !Array.isArray(data)){if(data.galleryLayout !== undefined){let data0 = data.galleryLayout;if(!((typeof data0 == \"number\") && (isFinite(data0)))){const err0 = {instancePath:instancePath+\"/galleryLayout\",schemaPath:\"#/properties/galleryLayout/type\",keyword:\"type\",params:{type: \"number\"},message:\"must be number\",schema:schema15.properties.galleryLayout.type,parentSchema:schema15.properties.galleryLayout,data:data0};if(vErrors === null){vErrors = [err0];}else {vErrors.push(err0);}errors++;}}if(data.galleryRatio !== undefined){let data1 = data.galleryRatio;if(data1 && typeof data1 == \"object\" && !Array.isArray(data1)){if(data1.includeExternalInfo === undefined){const err1 = {instancePath:instancePath+\"/galleryRatio\",schemaPath:\"#/definitions/GalleryRatio/required\",keyword:\"required\",params:{missingProperty: \"includeExternalInfo\"},message:\"must have required property '\"+\"includeExternalInfo\"+\"'\",schema:schema16.required,parentSchema:schema16,data:data1};if(vErrors === null){vErrors = [err1];}else {vErrors.push(err1);}errors++;}if(data1.value === undefined){const err2 = {instancePath:instancePath+\"/galleryRatio\",schemaPath:\"#/definitions/GalleryRatio/required\",keyword:\"required\",params:{missingProperty: \"value\"},message:\"must have required property '\"+\"value\"+\"'\",schema:schema16.required,parentSchema:schema16,data:data1};if(vErrors === null){vErrors = [err2];}else {vErrors.push(err2);}errors++;}if(data1.value !== undefined){let data2 = data1.value;if(!((typeof data2 == \"number\") && (isFinite(data2)))){const err3 = {instancePath:instancePath+\"/galleryRatio/value\",schemaPath:\"#/definitions/GalleryRatio/properties/value/type\",keyword:\"type\",params:{type: \"number\"},message:\"must be number\",schema:schema16.properties.value.type,parentSchema:schema16.properties.value,data:data2};if(vErrors === null){vErrors = [err3];}else {vErrors.push(err3);}errors++;}}if(data1.includeExternalInfo !== undefined){let data3 = data1.includeExternalInfo;if(typeof data3 !== \"boolean\"){const err4 = {instancePath:instancePath+\"/galleryRatio/includeExternalInfo\",schemaPath:\"#/definitions/GalleryRatio/properties/includeExternalInfo/type\",keyword:\"type\",params:{type: \"boolean\"},message:\"must be boolean\",schema:schema16.properties.includeExternalInfo.type,parentSchema:schema16.properties.includeExternalInfo,data:data3};if(vErrors === null){vErrors = [err4];}else {vErrors.push(err4);}errors++;}}}else {const err5 = {instancePath:instancePath+\"/galleryRatio\",schemaPath:\"#/definitions/GalleryRatio/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\",schema:schema16.type,parentSchema:schema16,data:data1};if(vErrors === null){vErrors = [err5];}else {vErrors.push(err5);}errors++;}}if(data.enableStreching !== undefined){let data4 = data.enableStreching;if(typeof data4 !== \"boolean\"){const err6 = {instancePath:instancePath+\"/enableStreching\",schemaPath:\"#/properties/enableStreching/type\",keyword:\"type\",params:{type: \"boolean\"},message:\"must be boolean\",schema:schema15.properties.enableStreching.type,parentSchema:schema15.properties.enableStreching,data:data4};if(vErrors === null){vErrors = [err6];}else {vErrors.push(err6);}errors++;}}if(data.gallerySpacing !== undefined){let data5 = data.gallerySpacing;if(!((typeof data5 == \"number\") && (isFinite(data5)))){const err7 = {instancePath:instancePath+\"/gallerySpacing\",schemaPath:\"#/properties/gallerySpacing/type\",keyword:\"type\",params:{type: \"number\"},message:\"must be number\",schema:schema15.properties.gallerySpacing.type,parentSchema:schema15.properties.gallerySpacing,data:data5};if(vErrors === null){vErrors = [err7];}else {vErrors.push(err7);}errors++;}}if(data.itemSpacing !== undefined){let data6 = data.itemSpacing;if(!((typeof data6 == \"number\") && (isFinite(data6)))){const err8 = {instancePath:instancePath+\"/itemSpacing\",schemaPath:\"#/properties/itemSpacing/type\",keyword:\"type\",params:{type: \"number\"},message:\"must be number\",schema:schema15.properties.itemSpacing.type,parentSchema:schema15.properties.itemSpacing,data:data6};if(vErrors === null){vErrors = [err8];}else {vErrors.push(err8);}errors++;}}if(data.scrollDirection !== undefined){let data7 = data.scrollDirection;if(typeof data7 !== \"string\"){const err9 = {instancePath:instancePath+\"/scrollDirection\",schemaPath:\"#/properties/scrollDirection/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",schema:schema15.properties.scrollDirection.type,parentSchema:schema15.properties.scrollDirection,data:data7};if(vErrors === null){vErrors = [err9];}else {vErrors.push(err9);}errors++;}if(!((data7 === \"HORIZONTAL\") || (data7 === \"VERTICAL\"))){const err10 = {instancePath:instancePath+\"/scrollDirection\",schemaPath:\"#/properties/scrollDirection/enum\",keyword:\"enum\",params:{allowedValues: schema15.properties.scrollDirection.enum},message:\"must be equal to one of the allowed values\",schema:schema15.properties.scrollDirection.enum,parentSchema:schema15.properties.scrollDirection,data:data7};if(vErrors === null){vErrors = [err10];}else {vErrors.push(err10);}errors++;}}if(data.numberOfColumns !== undefined){let data8 = data.numberOfColumns;if(!((typeof data8 == \"number\") && (isFinite(data8)))){const err11 = {instancePath:instancePath+\"/numberOfColumns\",schemaPath:\"#/properties/numberOfColumns/type\",keyword:\"type\",params:{type: \"number\"},message:\"must be number\",schema:schema15.properties.numberOfColumns.type,parentSchema:schema15.properties.numberOfColumns,data:data8};if(vErrors === null){vErrors = [err11];}else {vErrors.push(err11);}errors++;}}if(data.numberOfGridRows !== undefined){let data9 = data.numberOfGridRows;if(!((typeof data9 == \"number\") && (isFinite(data9)))){const err12 = {instancePath:instancePath+\"/numberOfGridRows\",schemaPath:\"#/properties/numberOfGridRows/type\",keyword:\"type\",params:{type: \"number\"},message:\"must be number\",schema:schema15.properties.numberOfGridRows.type,parentSchema:schema15.properties.numberOfGridRows,data:data9};if(vErrors === null){vErrors = [err12];}else {vErrors.push(err12);}errors++;}}if(data.responsiveMode !== undefined){let data10 = data.responsiveMode;if(typeof data10 !== \"string\"){const err13 = {instancePath:instancePath+\"/responsiveMode\",schemaPath:\"#/properties/responsiveMode/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",schema:schema15.properties.responsiveMode.type,parentSchema:schema15.properties.responsiveMode,data:data10};if(vErrors === null){vErrors = [err13];}else {vErrors.push(err13);}errors++;}if(!((data10 === \"FIT_TO_SCREEN\") || (data10 === \"SET_ITEMS_PER_ROW\"))){const err14 = {instancePath:instancePath+\"/responsiveMode\",schemaPath:\"#/properties/responsiveMode/enum\",keyword:\"enum\",params:{allowedValues: schema15.properties.responsiveMode.enum},message:\"must be equal to one of the allowed values\",schema:schema15.properties.responsiveMode.enum,parentSchema:schema15.properties.responsiveMode,data:data10};if(vErrors === null){vErrors = [err14];}else {vErrors.push(err14);}errors++;}}if(data.columnRatios !== undefined){let data11 = data.columnRatios;if(Array.isArray(data11)){const len0 = data11.length;for(let i0=0; i0<len0; i0++){let data12 = data11[i0];if(!((typeof data12 == \"number\") && (isFinite(data12)))){const err15 = {instancePath:instancePath+\"/columnRatios/\" + i0,schemaPath:\"#/properties/columnRatios/items/type\",keyword:\"type\",params:{type: \"number\"},message:\"must be number\",schema:schema15.properties.columnRatios.items.type,parentSchema:schema15.properties.columnRatios.items,data:data12};if(vErrors === null){vErrors = [err15];}else {vErrors.push(err15);}errors++;}}}else {const err16 = {instancePath:instancePath+\"/columnRatios\",schemaPath:\"#/properties/columnRatios/type\",keyword:\"type\",params:{type: \"array\"},message:\"must be array\",schema:schema15.properties.columnRatios.type,parentSchema:schema15.properties.columnRatios,data:data11};if(vErrors === null){vErrors = [err16];}else {vErrors.push(err16);}errors++;}}if(data.scatter !== undefined){let data13 = data.scatter;if(data13 && typeof data13 == \"object\" && !Array.isArray(data13)){if(data13.randomScatter !== undefined){let data14 = data13.randomScatter;if(!((typeof data14 == \"number\") && (isFinite(data14)))){const err17 = {instancePath:instancePath+\"/scatter/randomScatter\",schemaPath:\"#/definitions/Scatter/properties/randomScatter/type\",keyword:\"type\",params:{type: \"number\"},message:\"must be number\",schema:schema17.properties.randomScatter.type,parentSchema:schema17.properties.randomScatter,data:data14};if(vErrors === null){vErrors = [err17];}else {vErrors.push(err17);}errors++;}}if(data13.manualScatter !== undefined){let data15 = data13.manualScatter;if(typeof data15 !== \"string\"){const err18 = {instancePath:instancePath+\"/scatter/manualScatter\",schemaPath:\"#/definitions/Scatter/properties/manualScatter/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",schema:schema17.properties.manualScatter.type,parentSchema:schema17.properties.manualScatter,data:data15};if(vErrors === null){vErrors = [err18];}else {vErrors.push(err18);}errors++;}}}else {const err19 = {instancePath:instancePath+\"/scatter\",schemaPath:\"#/definitions/Scatter/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\",schema:schema17.type,parentSchema:schema17,data:data13};if(vErrors === null){vErrors = [err19];}else {vErrors.push(err19);}errors++;}}if(data.layoutOrientation !== undefined){let data16 = data.layoutOrientation;if(typeof data16 !== \"string\"){const err20 = {instancePath:instancePath+\"/layoutOrientation\",schemaPath:\"#/properties/layoutOrientation/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",schema:schema15.properties.layoutOrientation.type,parentSchema:schema15.properties.layoutOrientation,data:data16};if(vErrors === null){vErrors = [err20];}else {vErrors.push(err20);}errors++;}if(!((data16 === \"HORIZONTAL\") || (data16 === \"VERTICAL\"))){const err21 = {instancePath:instancePath+\"/layoutOrientation\",schemaPath:\"#/properties/layoutOrientation/enum\",keyword:\"enum\",params:{allowedValues: schema15.properties.layoutOrientation.enum},message:\"must be equal to one of the allowed values\",schema:schema15.properties.layoutOrientation.enum,parentSchema:schema15.properties.layoutOrientation,data:data16};if(vErrors === null){vErrors = [err21];}else {vErrors.push(err21);}errors++;}}if(data.groupsOrder !== undefined){let data17 = data.groupsOrder;if(typeof data17 !== \"string\"){const err22 = {instancePath:instancePath+\"/groupsOrder\",schemaPath:\"#/properties/groupsOrder/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",schema:schema15.properties.groupsOrder.type,parentSchema:schema15.properties.groupsOrder,data:data17};if(vErrors === null){vErrors = [err22];}else {vErrors.push(err22);}errors++;}if(!((data17 === \"BY_HEIGHT\") || (data17 === \"LEFT_TO_RIGHT\"))){const err23 = {instancePath:instancePath+\"/groupsOrder\",schemaPath:\"#/properties/groupsOrder/enum\",keyword:\"enum\",params:{allowedValues: schema15.properties.groupsOrder.enum},message:\"must be equal to one of the allowed values\",schema:schema15.properties.groupsOrder.enum,parentSchema:schema15.properties.groupsOrder,data:data17};if(vErrors === null){vErrors = [err23];}else {vErrors.push(err23);}errors++;}}}else {const err24 = {instancePath,schemaPath:\"#/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\",schema:schema15.type,parentSchema:schema15,data};if(vErrors === null){vErrors = [err24];}else {vErrors.push(err24);}errors++;}validate12.errors = vErrors;return errors === 0;}const schema19 = {\"type\":\"object\",\"properties\":{\"enable\":{\"type\":\"boolean\"},\"size\":{\"type\":\"number\"},\"padding\":{\"type\":\"number\"},\"position\":{\"enum\":[\"MOUSE_CURSOR\",\"ON_GALLERY\",\"OUTSIDE_GALLERY\"],\"type\":\"string\"},\"verticalAlignment\":{\"enum\":[\"IMAGE_CENTER\",\"INFO_CENTER\",\"ITEM_CENTER\"],\"type\":\"string\"},\"type\":{\"enum\":[\"ARROW_2\",\"ARROW_3\",\"DEFAULT_ARROW\"],\"type\":\"string\"},\"container\":{\"$ref\":\"#/definitions/NavigationArrowsContainer\"},\"mouseCursorContainerMaxWidth\":{\"type\":\"number\"}}};const schema20 = {\"type\":\"object\",\"properties\":{\"type\":{\"enum\":[\"BOX\",\"NONE\",\"SHADOW\"],\"type\":\"string\"},\"borderRadius\":{\"type\":\"number\"},\"backgroundColor\":{\"type\":\"string\"}}};function validate14(data, {instancePath=\"\", parentData, parentDataProperty, rootData=data}={}){let vErrors = null;let errors = 0;if(data && typeof data == \"object\" && !Array.isArray(data)){if(data.enable !== undefined){let data0 = data.enable;if(typeof data0 !== \"boolean\"){const err0 = {instancePath:instancePath+\"/enable\",schemaPath:\"#/properties/enable/type\",keyword:\"type\",params:{type: \"boolean\"},message:\"must be boolean\",schema:schema19.properties.enable.type,parentSchema:schema19.properties.enable,data:data0};if(vErrors === null){vErrors = [err0];}else {vErrors.push(err0);}errors++;}}if(data.size !== undefined){let data1 = data.size;if(!((typeof data1 == \"number\") && (isFinite(data1)))){const err1 = {instancePath:instancePath+\"/size\",schemaPath:\"#/properties/size/type\",keyword:\"type\",params:{type: \"number\"},message:\"must be number\",schema:schema19.properties.size.type,parentSchema:schema19.properties.size,data:data1};if(vErrors === null){vErrors = [err1];}else {vErrors.push(err1);}errors++;}}if(data.padding !== undefined){let data2 = data.padding;if(!((typeof data2 == \"number\") && (isFinite(data2)))){const err2 = {instancePath:instancePath+\"/padding\",schemaPath:\"#/properties/padding/type\",keyword:\"type\",params:{type: \"number\"},message:\"must be number\",schema:schema19.properties.padding.type,parentSchema:schema19.properties.padding,data:data2};if(vErrors === null){vErrors = [err2];}else {vErrors.push(err2);}errors++;}}if(data.position !== undefined){let data3 = data.position;if(typeof data3 !== \"string\"){const err3 = {instancePath:instancePath+\"/position\",schemaPath:\"#/properties/position/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",schema:schema19.properties.position.type,parentSchema:schema19.properties.position,data:data3};if(vErrors === null){vErrors = [err3];}else {vErrors.push(err3);}errors++;}if(!(((data3 === \"MOUSE_CURSOR\") || (data3 === \"ON_GALLERY\")) || (data3 === \"OUTSIDE_GALLERY\"))){const err4 = {instancePath:instancePath+\"/position\",schemaPath:\"#/properties/position/enum\",keyword:\"enum\",params:{allowedValues: schema19.properties.position.enum},message:\"must be equal to one of the allowed values\",schema:schema19.properties.position.enum,parentSchema:schema19.properties.position,data:data3};if(vErrors === null){vErrors = [err4];}else {vErrors.push(err4);}errors++;}}if(data.verticalAlignment !== undefined){let data4 = data.verticalAlignment;if(typeof data4 !== \"string\"){const err5 = {instancePath:instancePath+\"/verticalAlignment\",schemaPath:\"#/properties/verticalAlignment/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",schema:schema19.properties.verticalAlignment.type,parentSchema:schema19.properties.verticalAlignment,data:data4};if(vErrors === null){vErrors = [err5];}else {vErrors.push(err5);}errors++;}if(!(((data4 === \"IMAGE_CENTER\") || (data4 === \"INFO_CENTER\")) || (data4 === \"ITEM_CENTER\"))){const err6 = {instancePath:instancePath+\"/verticalAlignment\",schemaPath:\"#/properties/verticalAlignment/enum\",keyword:\"enum\",params:{allowedValues: schema19.properties.verticalAlignment.enum},message:\"must be equal to one of the allowed values\",schema:schema19.properties.verticalAlignment.enum,parentSchema:schema19.properties.verticalAlignment,data:data4};if(vErrors === null){vErrors = [err6];}else {vErrors.push(err6);}errors++;}}if(data.type !== undefined){let data5 = data.type;if(typeof data5 !== \"string\"){const err7 = {instancePath:instancePath+\"/type\",schemaPath:\"#/properties/type/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",schema:schema19.properties.type.type,parentSchema:schema19.properties.type,data:data5};if(vErrors === null){vErrors = [err7];}else {vErrors.push(err7);}errors++;}if(!(((data5 === \"ARROW_2\") || (data5 === \"ARROW_3\")) || (data5 === \"DEFAULT_ARROW\"))){const err8 = {instancePath:instancePath+\"/type\",schemaPath:\"#/properties/type/enum\",keyword:\"enum\",params:{allowedValues: schema19.properties.type.enum},message:\"must be equal to one of the allowed values\",schema:schema19.properties.type.enum,parentSchema:schema19.properties.type,data:data5};if(vErrors === null){vErrors = [err8];}else {vErrors.push(err8);}errors++;}}if(data.container !== undefined){let data6 = data.container;if(data6 && typeof data6 == \"object\" && !Array.isArray(data6)){if(data6.type !== undefined){let data7 = data6.type;if(typeof data7 !== \"string\"){const err9 = {instancePath:instancePath+\"/container/type\",schemaPath:\"#/definitions/NavigationArrowsContainer/properties/type/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",schema:schema20.properties.type.type,parentSchema:schema20.properties.type,data:data7};if(vErrors === null){vErrors = [err9];}else {vErrors.push(err9);}errors++;}if(!(((data7 === \"BOX\") || (data7 === \"NONE\")) || (data7 === \"SHADOW\"))){const err10 = {instancePath:instancePath+\"/container/type\",schemaPath:\"#/definitions/NavigationArrowsContainer/properties/type/enum\",keyword:\"enum\",params:{allowedValues: schema20.properties.type.enum},message:\"must be equal to one of the allowed values\",schema:schema20.properties.type.enum,parentSchema:schema20.properties.type,data:data7};if(vErrors === null){vErrors = [err10];}else {vErrors.push(err10);}errors++;}}if(data6.borderRadius !== undefined){let data8 = data6.borderRadius;if(!((typeof data8 == \"number\") && (isFinite(data8)))){const err11 = {instancePath:instancePath+\"/container/borderRadius\",schemaPath:\"#/definitions/NavigationArrowsContainer/properties/borderRadius/type\",keyword:\"type\",params:{type: \"number\"},message:\"must be number\",schema:schema20.properties.borderRadius.type,parentSchema:schema20.properties.borderRadius,data:data8};if(vErrors === null){vErrors = [err11];}else {vErrors.push(err11);}errors++;}}if(data6.backgroundColor !== undefined){let data9 = data6.backgroundColor;if(typeof data9 !== \"string\"){const err12 = {instancePath:instancePath+\"/container/backgroundColor\",schemaPath:\"#/definitions/NavigationArrowsContainer/properties/backgroundColor/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",schema:schema20.properties.backgroundColor.type,parentSchema:schema20.properties.backgroundColor,data:data9};if(vErrors === null){vErrors = [err12];}else {vErrors.push(err12);}errors++;}}}else {const err13 = {instancePath:instancePath+\"/container\",schemaPath:\"#/definitions/NavigationArrowsContainer/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\",schema:schema20.type,parentSchema:schema20,data:data6};if(vErrors === null){vErrors = [err13];}else {vErrors.push(err13);}errors++;}}if(data.mouseCursorContainerMaxWidth !== undefined){let data10 = data.mouseCursorContainerMaxWidth;if(!((typeof data10 == \"number\") && (isFinite(data10)))){const err14 = {instancePath:instancePath+\"/mouseCursorContainerMaxWidth\",schemaPath:\"#/properties/mouseCursorContainerMaxWidth/type\",keyword:\"type\",params:{type: \"number\"},message:\"must be number\",schema:schema19.properties.mouseCursorContainerMaxWidth.type,parentSchema:schema19.properties.mouseCursorContainerMaxWidth,data:data10};if(vErrors === null){vErrors = [err14];}else {vErrors.push(err14);}errors++;}}}else {const err15 = {instancePath,schemaPath:\"#/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\",schema:schema19.type,parentSchema:schema19,data};if(vErrors === null){vErrors = [err15];}else {vErrors.push(err15);}errors++;}validate14.errors = vErrors;return errors === 0;}const schema21 = {\"type\":\"object\",\"properties\":{\"sizeUnits\":{\"enum\":[\"PERCENT\",\"PIXEL\"],\"type\":\"string\"},\"width\":{\"type\":\"number\"},\"height\":{\"type\":\"number\"},\"spacing\":{\"type\":\"number\"},\"layout\":{\"enum\":[\"ATTACHED_BACKGROUND\",\"DONT_SHOW\",\"NO_BACKGROUND\",\"SEPARATED_BACKGROUND\"],\"type\":\"string\"},\"border\":{\"$ref\":\"#/definitions/InfoBorder\"},\"placement\":{\"enum\":[\"ABOVE\",\"ALTERNATE_HORIZONTALLY\",\"ALTERNATE_VERTICALLY\",\"BELOW\",\"LEFT\",\"OVERLAY\",\"RIGHT\"],\"type\":\"string\"}}};const schema22 = {\"type\":\"object\",\"properties\":{\"width\":{\"type\":\"number\"},\"color\":{\"type\":\"string\"},\"radius\":{\"type\":\"number\"}}};function validate16(data, {instancePath=\"\", parentData, parentDataProperty, rootData=data}={}){let vErrors = null;let errors = 0;if(data && typeof data == \"object\" && !Array.isArray(data)){if(data.sizeUnits !== undefined){let data0 = data.sizeUnits;if(typeof data0 !== \"string\"){const err0 = {instancePath:instancePath+\"/sizeUnits\",schemaPath:\"#/properties/sizeUnits/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",schema:schema21.properties.sizeUnits.type,parentSchema:schema21.properties.sizeUnits,data:data0};if(vErrors === null){vErrors = [err0];}else {vErrors.push(err0);}errors++;}if(!((data0 === \"PERCENT\") || (data0 === \"PIXEL\"))){const err1 = {instancePath:instancePath+\"/sizeUnits\",schemaPath:\"#/properties/sizeUnits/enum\",keyword:\"enum\",params:{allowedValues: schema21.properties.sizeUnits.enum},message:\"must be equal to one of the allowed values\",schema:schema21.properties.sizeUnits.enum,parentSchema:schema21.properties.sizeUnits,data:data0};if(vErrors === null){vErrors = [err1];}else {vErrors.push(err1);}errors++;}}if(data.width !== undefined){let data1 = data.width;if(!((typeof data1 == \"number\") && (isFinite(data1)))){const err2 = {instancePath:instancePath+\"/width\",schemaPath:\"#/properties/width/type\",keyword:\"type\",params:{type: \"number\"},message:\"must be number\",schema:schema21.properties.width.type,parentSchema:schema21.properties.width,data:data1};if(vErrors === null){vErrors = [err2];}else {vErrors.push(err2);}errors++;}}if(data.height !== undefined){let data2 = data.height;if(!((typeof data2 == \"number\") && (isFinite(data2)))){const err3 = {instancePath:instancePath+\"/height\",schemaPath:\"#/properties/height/type\",keyword:\"type\",params:{type: \"number\"},message:\"must be number\",schema:schema21.properties.height.type,parentSchema:schema21.properties.height,data:data2};if(vErrors === null){vErrors = [err3];}else {vErrors.push(err3);}errors++;}}if(data.spacing !== undefined){let data3 = data.spacing;if(!((typeof data3 == \"number\") && (isFinite(data3)))){const err4 = {instancePath:instancePath+\"/spacing\",schemaPath:\"#/properties/spacing/type\",keyword:\"type\",params:{type: \"number\"},message:\"must be number\",schema:schema21.properties.spacing.type,parentSchema:schema21.properties.spacing,data:data3};if(vErrors === null){vErrors = [err4];}else {vErrors.push(err4);}errors++;}}if(data.layout !== undefined){let data4 = data.layout;if(typeof data4 !== \"string\"){const err5 = {instancePath:instancePath+\"/layout\",schemaPath:\"#/properties/layout/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",schema:schema21.properties.layout.type,parentSchema:schema21.properties.layout,data:data4};if(vErrors === null){vErrors = [err5];}else {vErrors.push(err5);}errors++;}if(!((((data4 === \"ATTACHED_BACKGROUND\") || (data4 === \"DONT_SHOW\")) || (data4 === \"NO_BACKGROUND\")) || (data4 === \"SEPARATED_BACKGROUND\"))){const err6 = {instancePath:instancePath+\"/layout\",schemaPath:\"#/properties/layout/enum\",keyword:\"enum\",params:{allowedValues: schema21.properties.layout.enum},message:\"must be equal to one of the allowed values\",schema:schema21.properties.layout.enum,parentSchema:schema21.properties.layout,data:data4};if(vErrors === null){vErrors = [err6];}else {vErrors.push(err6);}errors++;}}if(data.border !== undefined){let data5 = data.border;if(data5 && typeof data5 == \"object\" && !Array.isArray(data5)){if(data5.width !== undefined){let data6 = data5.width;if(!((typeof data6 == \"number\") && (isFinite(data6)))){const err7 = {instancePath:instancePath+\"/border/width\",schemaPath:\"#/definitions/InfoBorder/properties/width/type\",keyword:\"type\",params:{type: \"number\"},message:\"must be number\",schema:schema22.properties.width.type,parentSchema:schema22.properties.width,data:data6};if(vErrors === null){vErrors = [err7];}else {vErrors.push(err7);}errors++;}}if(data5.color !== undefined){let data7 = data5.color;if(typeof data7 !== \"string\"){const err8 = {instancePath:instancePath+\"/border/color\",schemaPath:\"#/definitions/InfoBorder/properties/color/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",schema:schema22.properties.color.type,parentSchema:schema22.properties.color,data:data7};if(vErrors === null){vErrors = [err8];}else {vErrors.push(err8);}errors++;}}if(data5.radius !== undefined){let data8 = data5.radius;if(!((typeof data8 == \"number\") && (isFinite(data8)))){const err9 = {instancePath:instancePath+\"/border/radius\",schemaPath:\"#/definitions/InfoBorder/properties/radius/type\",keyword:\"type\",params:{type: \"number\"},message:\"must be number\",schema:schema22.properties.radius.type,parentSchema:schema22.properties.radius,data:data8};if(vErrors === null){vErrors = [err9];}else {vErrors.push(err9);}errors++;}}}else {const err10 = {instancePath:instancePath+\"/border\",schemaPath:\"#/definitions/InfoBorder/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\",schema:schema22.type,parentSchema:schema22,data:data5};if(vErrors === null){vErrors = [err10];}else {vErrors.push(err10);}errors++;}}if(data.placement !== undefined){let data9 = data.placement;if(typeof data9 !== \"string\"){const err11 = {instancePath:instancePath+\"/placement\",schemaPath:\"#/properties/placement/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",schema:schema21.properties.placement.type,parentSchema:schema21.properties.placement,data:data9};if(vErrors === null){vErrors = [err11];}else {vErrors.push(err11);}errors++;}if(!(((((((data9 === \"ABOVE\") || (data9 === \"ALTERNATE_HORIZONTALLY\")) || (data9 === \"ALTERNATE_VERTICALLY\")) || (data9 === \"BELOW\")) || (data9 === \"LEFT\")) || (data9 === \"OVERLAY\")) || (data9 === \"RIGHT\"))){const err12 = {instancePath:instancePath+\"/placement\",schemaPath:\"#/properties/placement/enum\",keyword:\"enum\",params:{allowedValues: schema21.properties.placement.enum},message:\"must be equal to one of the allowed values\",schema:schema21.properties.placement.enum,parentSchema:schema21.properties.placement,data:data9};if(vErrors === null){vErrors = [err12];}else {vErrors.push(err12);}errors++;}}}else {const err13 = {instancePath,schemaPath:\"#/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\",schema:schema21.type,parentSchema:schema21,data};if(vErrors === null){vErrors = [err13];}else {vErrors.push(err13);}errors++;}validate16.errors = vErrors;return errors === 0;}function validate11(data, {instancePath=\"\", parentData, parentDataProperty, rootData=data}={}){let vErrors = null;let errors = 0;if(data && typeof data == \"object\" && !Array.isArray(data)){if(data.groups !== undefined){let data0 = data.groups;if(data0 && typeof data0 == \"object\" && !Array.isArray(data0)){if(data0.density !== undefined){let data1 = data0.density;if(!((typeof data1 == \"number\") && (isFinite(data1)))){const err0 = {instancePath:instancePath+\"/groups/density\",schemaPath:\"#/definitions/Groups/properties/density/type\",keyword:\"type\",params:{type: \"number\"},message:\"must be number\",schema:schema13.properties.density.type,parentSchema:schema13.properties.density,data:data1};if(vErrors === null){vErrors = [err0];}else {vErrors.push(err0);}errors++;}}if(data0.groupByOrientation !== undefined){let data2 = data0.groupByOrientation;if(typeof data2 !== \"boolean\"){const err1 = {instancePath:instancePath+\"/groups/groupByOrientation\",schemaPath:\"#/definitions/Groups/properties/groupByOrientation/type\",keyword:\"type\",params:{type: \"boolean\"},message:\"must be boolean\",schema:schema13.properties.groupByOrientation.type,parentSchema:schema13.properties.groupByOrientation,data:data2};if(vErrors === null){vErrors = [err1];}else {vErrors.push(err1);}errors++;}}if(data0.numberOfGroupsPerRow !== undefined){let data3 = data0.numberOfGroupsPerRow;if(!((typeof data3 == \"number\") && (isFinite(data3)))){const err2 = {instancePath:instancePath+\"/groups/numberOfGroupsPerRow\",schemaPath:\"#/definitions/Groups/properties/numberOfGroupsPerRow/type\",keyword:\"type\",params:{type: \"number\"},message:\"must be number\",schema:schema13.properties.numberOfGroupsPerRow.type,parentSchema:schema13.properties.numberOfGroupsPerRow,data:data3};if(vErrors === null){vErrors = [err2];}else {vErrors.push(err2);}errors++;}}if(data0.allowedGroupTypes !== undefined){let data4 = data0.allowedGroupTypes;if(Array.isArray(data4)){const len0 = data4.length;for(let i0=0; i0<len0; i0++){let data5 = data4[i0];if(typeof data5 !== \"string\"){const err3 = {instancePath:instancePath+\"/groups/allowedGroupTypes/\" + i0,schemaPath:\"#/definitions/Groups/properties/allowedGroupTypes/items/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",schema:schema13.properties.allowedGroupTypes.items.type,parentSchema:schema13.properties.allowedGroupTypes.items,data:data5};if(vErrors === null){vErrors = [err3];}else {vErrors.push(err3);}errors++;}if(!(((((((((data5 === \"1\") || (data5 === \"2h\")) || (data5 === \"2v\")) || (data5 === \"3b\")) || (data5 === \"3h\")) || (data5 === \"3l\")) || (data5 === \"3r\")) || (data5 === \"3t\")) || (data5 === \"3v\"))){const err4 = {instancePath:instancePath+\"/groups/allowedGroupTypes/\" + i0,schemaPath:\"#/definitions/Groups/properties/allowedGroupTypes/items/enum\",keyword:\"enum\",params:{allowedValues: schema13.properties.allowedGroupTypes.items.enum},message:\"must be equal to one of the allowed values\",schema:schema13.properties.allowedGroupTypes.items.enum,parentSchema:schema13.properties.allowedGroupTypes.items,data:data5};if(vErrors === null){vErrors = [err4];}else {vErrors.push(err4);}errors++;}}}else {const err5 = {instancePath:instancePath+\"/groups/allowedGroupTypes\",schemaPath:\"#/definitions/Groups/properties/allowedGroupTypes/type\",keyword:\"type\",params:{type: \"array\"},message:\"must be array\",schema:schema13.properties.allowedGroupTypes.type,parentSchema:schema13.properties.allowedGroupTypes,data:data4};if(vErrors === null){vErrors = [err5];}else {vErrors.push(err5);}errors++;}}if(data0.repeatingGroupTypes !== undefined){let data6 = data0.repeatingGroupTypes;if(Array.isArray(data6)){const len1 = data6.length;for(let i1=0; i1<len1; i1++){let data7 = data6[i1];if(typeof data7 !== \"string\"){const err6 = {instancePath:instancePath+\"/groups/repeatingGroupTypes/\" + i1,schemaPath:\"#/definitions/Groups/properties/repeatingGroupTypes/items/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",schema:schema13.properties.repeatingGroupTypes.items.type,parentSchema:schema13.properties.repeatingGroupTypes.items,data:data7};if(vErrors === null){vErrors = [err6];}else {vErrors.push(err6);}errors++;}if(!(((((((((data7 === \"1\") || (data7 === \"2h\")) || (data7 === \"2v\")) || (data7 === \"3b\")) || (data7 === \"3h\")) || (data7 === \"3l\")) || (data7 === \"3r\")) || (data7 === \"3t\")) || (data7 === \"3v\"))){const err7 = {instancePath:instancePath+\"/groups/repeatingGroupTypes/\" + i1,schemaPath:\"#/definitions/Groups/properties/repeatingGroupTypes/items/enum\",keyword:\"enum\",params:{allowedValues: schema13.properties.repeatingGroupTypes.items.enum},message:\"must be equal to one of the allowed values\",schema:schema13.properties.repeatingGroupTypes.items.enum,parentSchema:schema13.properties.repeatingGroupTypes.items,data:data7};if(vErrors === null){vErrors = [err7];}else {vErrors.push(err7);}errors++;}}}else {const err8 = {instancePath:instancePath+\"/groups/repeatingGroupTypes\",schemaPath:\"#/definitions/Groups/properties/repeatingGroupTypes/type\",keyword:\"type\",params:{type: \"array\"},message:\"must be array\",schema:schema13.properties.repeatingGroupTypes.type,parentSchema:schema13.properties.repeatingGroupTypes,data:data6};if(vErrors === null){vErrors = [err8];}else {vErrors.push(err8);}errors++;}}if(data0.groupSize !== undefined){let data8 = data0.groupSize;if(!((typeof data8 == \"number\") && (isFinite(data8)))){const err9 = {instancePath:instancePath+\"/groups/groupSize\",schemaPath:\"#/definitions/Groups/properties/groupSize/type\",keyword:\"type\",params:{type: \"number\"},message:\"must be number\",schema:schema13.properties.groupSize.type,parentSchema:schema13.properties.groupSize,data:data8};if(vErrors === null){vErrors = [err9];}else {vErrors.push(err9);}errors++;}}}else {const err10 = {instancePath:instancePath+\"/groups\",schemaPath:\"#/definitions/Groups/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\",schema:schema13.type,parentSchema:schema13,data:data0};if(vErrors === null){vErrors = [err10];}else {vErrors.push(err10);}errors++;}}if(data.crop !== undefined){let data9 = data.crop;if(data9 && typeof data9 == \"object\" && !Array.isArray(data9)){if(data9.method !== undefined){let data10 = data9.method;if(typeof data10 !== \"string\"){const err11 = {instancePath:instancePath+\"/crop/method\",schemaPath:\"#/definitions/Crop/properties/method/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",schema:schema14.properties.method.type,parentSchema:schema14.properties.method,data:data10};if(vErrors === null){vErrors = [err11];}else {vErrors.push(err11);}errors++;}if(!((((data10 === \"FILL\") || (data10 === \"FIT\")) || (data10 === \"MAX\")) || (data10 === \"MIN\"))){const err12 = {instancePath:instancePath+\"/crop/method\",schemaPath:\"#/definitions/Crop/properties/method/enum\",keyword:\"enum\",params:{allowedValues: schema14.properties.method.enum},message:\"must be equal to one of the allowed values\",schema:schema14.properties.method.enum,parentSchema:schema14.properties.method,data:data10};if(vErrors === null){vErrors = [err12];}else {vErrors.push(err12);}errors++;}}if(data9.alignment !== undefined){let data11 = data9.alignment;if(typeof data11 !== \"string\"){const err13 = {instancePath:instancePath+\"/crop/alignment\",schemaPath:\"#/definitions/Crop/properties/alignment/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",schema:schema14.properties.alignment.type,parentSchema:schema14.properties.alignment,data:data11};if(vErrors === null){vErrors = [err13];}else {vErrors.push(err13);}errors++;}if(!(((((data11 === \"BOTTOM\") || (data11 === \"CENTER\")) || (data11 === \"LEFT\")) || (data11 === \"RIGHT\")) || (data11 === \"TOP\"))){const err14 = {instancePath:instancePath+\"/crop/alignment\",schemaPath:\"#/definitions/Crop/properties/alignment/enum\",keyword:\"enum\",params:{allowedValues: schema14.properties.alignment.enum},message:\"must be equal to one of the allowed values\",schema:schema14.properties.alignment.enum,parentSchema:schema14.properties.alignment,data:data11};if(vErrors === null){vErrors = [err14];}else {vErrors.push(err14);}errors++;}}if(data9.enable !== undefined){let data12 = data9.enable;if(typeof data12 !== \"boolean\"){const err15 = {instancePath:instancePath+\"/crop/enable\",schemaPath:\"#/definitions/Crop/properties/enable/type\",keyword:\"type\",params:{type: \"boolean\"},message:\"must be boolean\",schema:schema14.properties.enable.type,parentSchema:schema14.properties.enable,data:data12};if(vErrors === null){vErrors = [err15];}else {vErrors.push(err15);}errors++;}}if(data9.enableSmartCrop !== undefined){let data13 = data9.enableSmartCrop;if(typeof data13 !== \"boolean\"){const err16 = {instancePath:instancePath+\"/crop/enableSmartCrop\",schemaPath:\"#/definitions/Crop/properties/enableSmartCrop/type\",keyword:\"type\",params:{type: \"boolean\"},message:\"must be boolean\",schema:schema14.properties.enableSmartCrop.type,parentSchema:schema14.properties.enableSmartCrop,data:data13};if(vErrors === null){vErrors = [err16];}else {vErrors.push(err16);}errors++;}}if(data9.cropOnlyFill !== undefined){let data14 = data9.cropOnlyFill;if(typeof data14 !== \"boolean\"){const err17 = {instancePath:instancePath+\"/crop/cropOnlyFill\",schemaPath:\"#/definitions/Crop/properties/cropOnlyFill/type\",keyword:\"type\",params:{type: \"boolean\"},message:\"must be boolean\",schema:schema14.properties.cropOnlyFill.type,parentSchema:schema14.properties.cropOnlyFill,data:data14};if(vErrors === null){vErrors = [err17];}else {vErrors.push(err17);}errors++;}}if(data9.ratios !== undefined){let data15 = data9.ratios;if(Array.isArray(data15)){const len2 = data15.length;for(let i2=0; i2<len2; i2++){let data16 = data15[i2];if(!((typeof data16 == \"number\") && (isFinite(data16)))){const err18 = {instancePath:instancePath+\"/crop/ratios/\" + i2,schemaPath:\"#/definitions/Crop/properties/ratios/items/type\",keyword:\"type\",params:{type: \"number\"},message:\"must be number\",schema:schema14.properties.ratios.items.type,parentSchema:schema14.properties.ratios.items,data:data16};if(vErrors === null){vErrors = [err18];}else {vErrors.push(err18);}errors++;}}}else {const err19 = {instancePath:instancePath+\"/crop/ratios\",schemaPath:\"#/definitions/Crop/properties/ratios/type\",keyword:\"type\",params:{type: \"array\"},message:\"must be array\",schema:schema14.properties.ratios.type,parentSchema:schema14.properties.ratios,data:data15};if(vErrors === null){vErrors = [err19];}else {vErrors.push(err19);}errors++;}}}else {const err20 = {instancePath:instancePath+\"/crop\",schemaPath:\"#/definitions/Crop/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\",schema:schema14.type,parentSchema:schema14,data:data9};if(vErrors === null){vErrors = [err20];}else {vErrors.push(err20);}errors++;}}if(data.structure !== undefined){if(!(validate12(data.structure, {instancePath:instancePath+\"/structure\",parentData:data,parentDataProperty:\"structure\",rootData}))){vErrors = vErrors === null ? validate12.errors : vErrors.concat(validate12.errors);errors = vErrors.length;}}if(data.thumbnails !== undefined){let data18 = data.thumbnails;if(data18 && typeof data18 == \"object\" && !Array.isArray(data18)){if(data18.enable !== undefined){let data19 = data18.enable;if(typeof data19 !== \"boolean\"){const err21 = {instancePath:instancePath+\"/thumbnails/enable\",schemaPath:\"#/definitions/Thumbnails/properties/enable/type\",keyword:\"type\",params:{type: \"boolean\"},message:\"must be boolean\",schema:schema18.properties.enable.type,parentSchema:schema18.properties.enable,data:data19};if(vErrors === null){vErrors = [err21];}else {vErrors.push(err21);}errors++;}}if(data18.position !== undefined){let data20 = data18.position;if(typeof data20 !== \"string\"){const err22 = {instancePath:instancePath+\"/thumbnails/position\",schemaPath:\"#/definitions/Thumbnails/properties/position/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",schema:schema18.properties.position.type,parentSchema:schema18.properties.position,data:data20};if(vErrors === null){vErrors = [err22];}else {vErrors.push(err22);}errors++;}if(!((data20 === \"ON_GALLERY\") || (data20 === \"OUTSIDE_GALLERY\"))){const err23 = {instancePath:instancePath+\"/thumbnails/position\",schemaPath:\"#/definitions/Thumbnails/properties/position/enum\",keyword:\"enum\",params:{allowedValues: schema18.properties.position.enum},message:\"must be equal to one of the allowed values\",schema:schema18.properties.position.enum,parentSchema:schema18.properties.position,data:data20};if(vErrors === null){vErrors = [err23];}else {vErrors.push(err23);}errors++;}}if(data18.spacing !== undefined){let data21 = data18.spacing;if(!((typeof data21 == \"number\") && (isFinite(data21)))){const err24 = {instancePath:instancePath+\"/thumbnails/spacing\",schemaPath:\"#/definitions/Thumbnails/properties/spacing/type\",keyword:\"type\",params:{type: \"number\"},message:\"must be number\",schema:schema18.properties.spacing.type,parentSchema:schema18.properties.spacing,data:data21};if(vErrors === null){vErrors = [err24];}else {vErrors.push(err24);}errors++;}}if(data18.marginToGallery !== undefined){let data22 = data18.marginToGallery;if(!((typeof data22 == \"number\") && (isFinite(data22)))){const err25 = {instancePath:instancePath+\"/thumbnails/marginToGallery\",schemaPath:\"#/definitions/Thumbnails/properties/marginToGallery/type\",keyword:\"type\",params:{type: \"number\"},message:\"must be number\",schema:schema18.properties.marginToGallery.type,parentSchema:schema18.properties.marginToGallery,data:data22};if(vErrors === null){vErrors = [err25];}else {vErrors.push(err25);}errors++;}}if(data18.size !== undefined){let data23 = data18.size;if(!((typeof data23 == \"number\") && (isFinite(data23)))){const err26 = {instancePath:instancePath+\"/thumbnails/size\",schemaPath:\"#/definitions/Thumbnails/properties/size/type\",keyword:\"type\",params:{type: \"number\"},message:\"must be number\",schema:schema18.properties.size.type,parentSchema:schema18.properties.size,data:data23};if(vErrors === null){vErrors = [err26];}else {vErrors.push(err26);}errors++;}}if(data18.alignment !== undefined){let data24 = data18.alignment;if(typeof data24 !== \"string\"){const err27 = {instancePath:instancePath+\"/thumbnails/alignment\",schemaPath:\"#/definitions/Thumbnails/properties/alignment/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",schema:schema18.properties.alignment.type,parentSchema:schema18.properties.alignment,data:data24};if(vErrors === null){vErrors = [err27];}else {vErrors.push(err27);}errors++;}if(!((((data24 === \"BOTTOM\") || (data24 === \"LEFT\")) || (data24 === \"RIGHT\")) || (data24 === \"TOP\"))){const err28 = {instancePath:instancePath+\"/thumbnails/alignment\",schemaPath:\"#/definitions/Thumbnails/properties/alignment/enum\",keyword:\"enum\",params:{allowedValues: schema18.properties.alignment.enum},message:\"must be equal to one of the allowed values\",schema:schema18.properties.alignment.enum,parentSchema:schema18.properties.alignment,data:data24};if(vErrors === null){vErrors = [err28];}else {vErrors.push(err28);}errors++;}}}else {const err29 = {instancePath:instancePath+\"/thumbnails\",schemaPath:\"#/definitions/Thumbnails/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\",schema:schema18.type,parentSchema:schema18,data:data18};if(vErrors === null){vErrors = [err29];}else {vErrors.push(err29);}errors++;}}if(data.navigationArrows !== undefined){if(!(validate14(data.navigationArrows, {instancePath:instancePath+\"/navigationArrows\",parentData:data,parentDataProperty:\"navigationArrows\",rootData}))){vErrors = vErrors === null ? validate14.errors : vErrors.concat(validate14.errors);errors = vErrors.length;}}if(data.info !== undefined){if(!(validate16(data.info, {instancePath:instancePath+\"/info\",parentData:data,parentDataProperty:\"info\",rootData}))){vErrors = vErrors === null ? validate16.errors : vErrors.concat(validate16.errors);errors = vErrors.length;}}if(data.targetItemSize !== undefined){let data27 = data.targetItemSize;if(data27 && typeof data27 == \"object\" && !Array.isArray(data27)){if(data27.unit !== undefined){let data28 = data27.unit;if(typeof data28 !== \"string\"){const err30 = {instancePath:instancePath+\"/targetItemSize/unit\",schemaPath:\"#/definitions/TargetItemSize/properties/unit/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",schema:schema23.properties.unit.type,parentSchema:schema23.properties.unit,data:data28};if(vErrors === null){vErrors = [err30];}else {vErrors.push(err30);}errors++;}if(!(((data28 === \"PERCENT\") || (data28 === \"PIXEL\")) || (data28 === \"SMART\"))){const err31 = {instancePath:instancePath+\"/targetItemSize/unit\",schemaPath:\"#/definitions/TargetItemSize/properties/unit/enum\",keyword:\"enum\",params:{allowedValues: schema23.properties.unit.enum},message:\"must be equal to one of the allowed values\",schema:schema23.properties.unit.enum,parentSchema:schema23.properties.unit,data:data28};if(vErrors === null){vErrors = [err31];}else {vErrors.push(err31);}errors++;}}if(data27.value !== undefined){let data29 = data27.value;if(!((typeof data29 == \"number\") && (isFinite(data29)))){const err32 = {instancePath:instancePath+\"/targetItemSize/value\",schemaPath:\"#/definitions/TargetItemSize/properties/value/type\",keyword:\"type\",params:{type: \"number\"},message:\"must be number\",schema:schema23.properties.value.type,parentSchema:schema23.properties.value,data:data29};if(vErrors === null){vErrors = [err32];}else {vErrors.push(err32);}errors++;}}if(data27.minimum !== undefined){let data30 = data27.minimum;if(!((typeof data30 == \"number\") && (isFinite(data30)))){const err33 = {instancePath:instancePath+\"/targetItemSize/minimum\",schemaPath:\"#/definitions/TargetItemSize/properties/minimum/type\",keyword:\"type\",params:{type: \"number\"},message:\"must be number\",schema:schema23.properties.minimum.type,parentSchema:schema23.properties.minimum,data:data30};if(vErrors === null){vErrors = [err33];}else {vErrors.push(err33);}errors++;}}}else {const err34 = {instancePath:instancePath+\"/targetItemSize\",schemaPath:\"#/definitions/TargetItemSize/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\",schema:schema23.type,parentSchema:schema23,data:data27};if(vErrors === null){vErrors = [err34];}else {vErrors.push(err34);}errors++;}}}else {const err35 = {instancePath,schemaPath:\"#/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\",schema:schema12.type,parentSchema:schema12,data};if(vErrors === null){vErrors = [err35];}else {vErrors.push(err35);}errors++;}validate11.errors = vErrors;return errors === 0;}const schema24 = {\"type\":\"object\",\"properties\":{\"item\":{\"$ref\":\"#/definitions/Item\"},\"gallery\":{\"$ref\":\"#/definitions/Gallery\"}}};const schema25 = {\"type\":\"object\",\"properties\":{\"clickAction\":{\"enum\":[\"ACTION\",\"LINK\",\"MAGNIFY\",\"NOTHING\"],\"type\":\"string\"},\"video\":{\"$ref\":\"#/definitions/Video\"},\"threeDimensionalScene\":{\"$ref\":\"#/definitions/ThreeDimensionalScene\"},\"overlay\":{\"$ref\":\"#/definitions/Overlay\"},\"content\":{\"$ref\":\"#/definitions/Content\"},\"secondaryMedia\":{\"$ref\":\"#/definitions/SecondaryMedia\"}}};const schema26 = {\"type\":\"object\",\"properties\":{\"speed\":{\"type\":\"number\"},\"volume\":{\"type\":\"number\"},\"loop\":{\"type\":\"boolean\"},\"playTrigger\":{\"enum\":[\"AUTO\",\"CLICK\",\"HOVER\"],\"type\":\"string\"},\"enablePlayButton\":{\"type\":\"boolean\"},\"enableThumbnailsPlayButton\":{\"type\":\"boolean\"},\"enableControls\":{\"type\":\"boolean\"},\"enablePlaceholder\":{\"type\":\"boolean\"}}};const schema30 = {\"type\":\"object\",\"properties\":{\"hoveringBehaviour\":{\"enum\":[\"ALWAYS_SHOW\",\"APPEARS\",\"DISAPPEARS\",\"NEVER_SHOW\"],\"type\":\"string\"},\"hoverAnimation\":{\"enum\":[\"EXPAND\",\"FADE_IN\",\"NO_EFFECT\",\"SLIDE_DOWN\",\"SLIDE_LEFT\",\"SLIDE_RIGHT\",\"SLIDE_UP\"],\"type\":\"string\"},\"position\":{\"enum\":[\"BUTTOM\",\"CENTERED_HORIZONTALLY\",\"CENTERED_VERTICALLY\",\"LEFT\",\"RIGHT\",\"TOP\"],\"type\":\"string\"},\"size\":{\"type\":\"number\"},\"sizeUnits\":{\"enum\":[\"PERCENT\",\"PIXEL\"],\"type\":\"string\"},\"padding\":{\"type\":\"number\"},\"backgroundColor\":{}}};const schema31 = {\"type\":\"object\",\"properties\":{\"hoverAnimation\":{\"enum\":[\"BLUR\",\"COLOR_IN\",\"DARKENED\",\"GRAYSCALE\",\"INVERT\",\"NO_EFFECT\",\"SHRINK\",\"TILT\",\"ZOOM_IN\"],\"type\":\"string\"},\"placementAnimation\":{\"enum\":[\"NO_EFFECT\",\"SLIDE\"],\"type\":\"string\"},\"loader\":{\"enum\":[\"BLUR\",\"COLOR\",\"MAIN_COLOR\"],\"type\":\"string\"},\"magnificationValue\":{\"type\":\"number\"},\"tiltAngleValue\":{\"type\":\"number\"}}};const schema32 = {\"type\":\"object\",\"properties\":{\"trigger\":{\"enum\":[\"HOVER\",\"OFF\"],\"type\":\"string\"},\"behaviour\":{\"type\":\"string\",\"const\":\"APPEARS\"}},\"required\":[\"behaviour\",\"trigger\"]};const schema27 = {\"type\":\"object\",\"properties\":{\"transform\":{\"$ref\":\"#/definitions/Transform\"},\"controls\":{\"$ref\":\"#/definitions/Controls\"},\"enablePlayButton\":{\"type\":\"boolean\"},\"enableThumbnailsPlayButton\":{\"type\":\"boolean\"},\"playTrigger\":{\"enum\":[\"AUTO\",\"CLICK\",\"HOVER\"],\"type\":\"string\"}}};const schema28 = {\"type\":\"object\",\"properties\":{\"rotation\":{\"type\":\"string\"},\"scale\":{\"type\":\"string\"},\"position\":{\"type\":\"string\"}}};const schema29 = {\"type\":\"object\",\"properties\":{\"enableZoom\":{\"type\":\"boolean\"},\"enableRotate\":{\"type\":\"boolean\"},\"enablePan\":{\"type\":\"boolean\"},\"enableAutoRotate\":{\"type\":\"boolean\"}}};function validate21(data, {instancePath=\"\", parentData, parentDataProperty, rootData=data}={}){let vErrors = null;let errors = 0;if(data && typeof data == \"object\" && !Array.isArray(data)){if(data.transform !== undefined){let data0 = data.transform;if(data0 && typeof data0 == \"object\" && !Array.isArray(data0)){if(data0.rotation !== undefined){let data1 = data0.rotation;if(typeof data1 !== \"string\"){const err0 = {instancePath:instancePath+\"/transform/rotation\",schemaPath:\"#/definitions/Transform/properties/rotation/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",schema:schema28.properties.rotation.type,parentSchema:schema28.properties.rotation,data:data1};if(vErrors === null){vErrors = [err0];}else {vErrors.push(err0);}errors++;}}if(data0.scale !== undefined){let data2 = data0.scale;if(typeof data2 !== \"string\"){const err1 = {instancePath:instancePath+\"/transform/scale\",schemaPath:\"#/definitions/Transform/properties/scale/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",schema:schema28.properties.scale.type,parentSchema:schema28.properties.scale,data:data2};if(vErrors === null){vErrors = [err1];}else {vErrors.push(err1);}errors++;}}if(data0.position !== undefined){let data3 = data0.position;if(typeof data3 !== \"string\"){const err2 = {instancePath:instancePath+\"/transform/position\",schemaPath:\"#/definitions/Transform/properties/position/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",schema:schema28.properties.position.type,parentSchema:schema28.properties.position,data:data3};if(vErrors === null){vErrors = [err2];}else {vErrors.push(err2);}errors++;}}}else {const err3 = {instancePath:instancePath+\"/transform\",schemaPath:\"#/definitions/Transform/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\",schema:schema28.type,parentSchema:schema28,data:data0};if(vErrors === null){vErrors = [err3];}else {vErrors.push(err3);}errors++;}}if(data.controls !== undefined){let data4 = data.controls;if(data4 && typeof data4 == \"object\" && !Array.isArray(data4)){if(data4.enableZoom !== undefined){let data5 = data4.enableZoom;if(typeof data5 !== \"boolean\"){const err4 = {instancePath:instancePath+\"/controls/enableZoom\",schemaPath:\"#/definitions/Controls/properties/enableZoom/type\",keyword:\"type\",params:{type: \"boolean\"},message:\"must be boolean\",schema:schema29.properties.enableZoom.type,parentSchema:schema29.properties.enableZoom,data:data5};if(vErrors === null){vErrors = [err4];}else {vErrors.push(err4);}errors++;}}if(data4.enableRotate !== undefined){let data6 = data4.enableRotate;if(typeof data6 !== \"boolean\"){const err5 = {instancePath:instancePath+\"/controls/enableRotate\",schemaPath:\"#/definitions/Controls/properties/enableRotate/type\",keyword:\"type\",params:{type: \"boolean\"},message:\"must be boolean\",schema:schema29.properties.enableRotate.type,parentSchema:schema29.properties.enableRotate,data:data6};if(vErrors === null){vErrors = [err5];}else {vErrors.push(err5);}errors++;}}if(data4.enablePan !== undefined){let data7 = data4.enablePan;if(typeof data7 !== \"boolean\"){const err6 = {instancePath:instancePath+\"/controls/enablePan\",schemaPath:\"#/definitions/Controls/properties/enablePan/type\",keyword:\"type\",params:{type: \"boolean\"},message:\"must be boolean\",schema:schema29.properties.enablePan.type,parentSchema:schema29.properties.enablePan,data:data7};if(vErrors === null){vErrors = [err6];}else {vErrors.push(err6);}errors++;}}if(data4.enableAutoRotate !== undefined){let data8 = data4.enableAutoRotate;if(typeof data8 !== \"boolean\"){const err7 = {instancePath:instancePath+\"/controls/enableAutoRotate\",schemaPath:\"#/definitions/Controls/properties/enableAutoRotate/type\",keyword:\"type\",params:{type: \"boolean\"},message:\"must be boolean\",schema:schema29.properties.enableAutoRotate.type,parentSchema:schema29.properties.enableAutoRotate,data:data8};if(vErrors === null){vErrors = [err7];}else {vErrors.push(err7);}errors++;}}}else {const err8 = {instancePath:instancePath+\"/controls\",schemaPath:\"#/definitions/Controls/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\",schema:schema29.type,parentSchema:schema29,data:data4};if(vErrors === null){vErrors = [err8];}else {vErrors.push(err8);}errors++;}}if(data.enablePlayButton !== undefined){let data9 = data.enablePlayButton;if(typeof data9 !== \"boolean\"){const err9 = {instancePath:instancePath+\"/enablePlayButton\",schemaPath:\"#/properties/enablePlayButton/type\",keyword:\"type\",params:{type: \"boolean\"},message:\"must be boolean\",schema:schema27.properties.enablePlayButton.type,parentSchema:schema27.properties.enablePlayButton,data:data9};if(vErrors === null){vErrors = [err9];}else {vErrors.push(err9);}errors++;}}if(data.enableThumbnailsPlayButton !== undefined){let data10 = data.enableThumbnailsPlayButton;if(typeof data10 !== \"boolean\"){const err10 = {instancePath:instancePath+\"/enableThumbnailsPlayButton\",schemaPath:\"#/properties/enableThumbnailsPlayButton/type\",keyword:\"type\",params:{type: \"boolean\"},message:\"must be boolean\",schema:schema27.properties.enableThumbnailsPlayButton.type,parentSchema:schema27.properties.enableThumbnailsPlayButton,data:data10};if(vErrors === null){vErrors = [err10];}else {vErrors.push(err10);}errors++;}}if(data.playTrigger !== undefined){let data11 = data.playTrigger;if(typeof data11 !== \"string\"){const err11 = {instancePath:instancePath+\"/playTrigger\",schemaPath:\"#/properties/playTrigger/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",schema:schema27.properties.playTrigger.type,parentSchema:schema27.properties.playTrigger,data:data11};if(vErrors === null){vErrors = [err11];}else {vErrors.push(err11);}errors++;}if(!(((data11 === \"AUTO\") || (data11 === \"CLICK\")) || (data11 === \"HOVER\"))){const err12 = {instancePath:instancePath+\"/playTrigger\",schemaPath:\"#/properties/playTrigger/enum\",keyword:\"enum\",params:{allowedValues: schema27.properties.playTrigger.enum},message:\"must be equal to one of the allowed values\",schema:schema27.properties.playTrigger.enum,parentSchema:schema27.properties.playTrigger,data:data11};if(vErrors === null){vErrors = [err12];}else {vErrors.push(err12);}errors++;}}}else {const err13 = {instancePath,schemaPath:\"#/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\",schema:schema27.type,parentSchema:schema27,data};if(vErrors === null){vErrors = [err13];}else {vErrors.push(err13);}errors++;}validate21.errors = vErrors;return errors === 0;}function validate20(data, {instancePath=\"\", parentData, parentDataProperty, rootData=data}={}){let vErrors = null;let errors = 0;if(data && typeof data == \"object\" && !Array.isArray(data)){if(data.clickAction !== undefined){let data0 = data.clickAction;if(typeof data0 !== \"string\"){const err0 = {instancePath:instancePath+\"/clickAction\",schemaPath:\"#/properties/clickAction/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",schema:schema25.properties.clickAction.type,parentSchema:schema25.properties.clickAction,data:data0};if(vErrors === null){vErrors = [err0];}else {vErrors.push(err0);}errors++;}if(!((((data0 === \"ACTION\") || (data0 === \"LINK\")) || (data0 === \"MAGNIFY\")) || (data0 === \"NOTHING\"))){const err1 = {instancePath:instancePath+\"/clickAction\",schemaPath:\"#/properties/clickAction/enum\",keyword:\"enum\",params:{allowedValues: schema25.properties.clickAction.enum},message:\"must be equal to one of the allowed values\",schema:schema25.properties.clickAction.enum,parentSchema:schema25.properties.clickAction,data:data0};if(vErrors === null){vErrors = [err1];}else {vErrors.push(err1);}errors++;}}if(data.video !== undefined){let data1 = data.video;if(data1 && typeof data1 == \"object\" && !Array.isArray(data1)){if(data1.speed !== undefined){let data2 = data1.speed;if(!((typeof data2 == \"number\") && (isFinite(data2)))){const err2 = {instancePath:instancePath+\"/video/speed\",schemaPath:\"#/definitions/Video/properties/speed/type\",keyword:\"type\",params:{type: \"number\"},message:\"must be number\",schema:schema26.properties.speed.type,parentSchema:schema26.properties.speed,data:data2};if(vErrors === null){vErrors = [err2];}else {vErrors.push(err2);}errors++;}}if(data1.volume !== undefined){let data3 = data1.volume;if(!((typeof data3 == \"number\") && (isFinite(data3)))){const err3 = {instancePath:instancePath+\"/video/volume\",schemaPath:\"#/definitions/Video/properties/volume/type\",keyword:\"type\",params:{type: \"number\"},message:\"must be number\",schema:schema26.properties.volume.type,parentSchema:schema26.properties.volume,data:data3};if(vErrors === null){vErrors = [err3];}else {vErrors.push(err3);}errors++;}}if(data1.loop !== undefined){let data4 = data1.loop;if(typeof data4 !== \"boolean\"){const err4 = {instancePath:instancePath+\"/video/loop\",schemaPath:\"#/definitions/Video/properties/loop/type\",keyword:\"type\",params:{type: \"boolean\"},message:\"must be boolean\",schema:schema26.properties.loop.type,parentSchema:schema26.properties.loop,data:data4};if(vErrors === null){vErrors = [err4];}else {vErrors.push(err4);}errors++;}}if(data1.playTrigger !== undefined){let data5 = data1.playTrigger;if(typeof data5 !== \"string\"){const err5 = {instancePath:instancePath+\"/video/playTrigger\",schemaPath:\"#/definitions/Video/properties/playTrigger/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",schema:schema26.properties.playTrigger.type,parentSchema:schema26.properties.playTrigger,data:data5};if(vErrors === null){vErrors = [err5];}else {vErrors.push(err5);}errors++;}if(!(((data5 === \"AUTO\") || (data5 === \"CLICK\")) || (data5 === \"HOVER\"))){const err6 = {instancePath:instancePath+\"/video/playTrigger\",schemaPath:\"#/definitions/Video/properties/playTrigger/enum\",keyword:\"enum\",params:{allowedValues: schema26.properties.playTrigger.enum},message:\"must be equal to one of the allowed values\",schema:schema26.properties.playTrigger.enum,parentSchema:schema26.properties.playTrigger,data:data5};if(vErrors === null){vErrors = [err6];}else {vErrors.push(err6);}errors++;}}if(data1.enablePlayButton !== undefined){let data6 = data1.enablePlayButton;if(typeof data6 !== \"boolean\"){const err7 = {instancePath:instancePath+\"/video/enablePlayButton\",schemaPath:\"#/definitions/Video/properties/enablePlayButton/type\",keyword:\"type\",params:{type: \"boolean\"},message:\"must be boolean\",schema:schema26.properties.enablePlayButton.type,parentSchema:schema26.properties.enablePlayButton,data:data6};if(vErrors === null){vErrors = [err7];}else {vErrors.push(err7);}errors++;}}if(data1.enableThumbnailsPlayButton !== undefined){let data7 = data1.enableThumbnailsPlayButton;if(typeof data7 !== \"boolean\"){const err8 = {instancePath:instancePath+\"/video/enableThumbnailsPlayButton\",schemaPath:\"#/definitions/Video/properties/enableThumbnailsPlayButton/type\",keyword:\"type\",params:{type: \"boolean\"},message:\"must be boolean\",schema:schema26.properties.enableThumbnailsPlayButton.type,parentSchema:schema26.properties.enableThumbnailsPlayButton,data:data7};if(vErrors === null){vErrors = [err8];}else {vErrors.push(err8);}errors++;}}if(data1.enableControls !== undefined){let data8 = data1.enableControls;if(typeof data8 !== \"boolean\"){const err9 = {instancePath:instancePath+\"/video/enableControls\",schemaPath:\"#/definitions/Video/properties/enableControls/type\",keyword:\"type\",params:{type: \"boolean\"},message:\"must be boolean\",schema:schema26.properties.enableControls.type,parentSchema:schema26.properties.enableControls,data:data8};if(vErrors === null){vErrors = [err9];}else {vErrors.push(err9);}errors++;}}if(data1.enablePlaceholder !== undefined){let data9 = data1.enablePlaceholder;if(typeof data9 !== \"boolean\"){const err10 = {instancePath:instancePath+\"/video/enablePlaceholder\",schemaPath:\"#/definitions/Video/properties/enablePlaceholder/type\",keyword:\"type\",params:{type: \"boolean\"},message:\"must be boolean\",schema:schema26.properties.enablePlaceholder.type,parentSchema:schema26.properties.enablePlaceholder,data:data9};if(vErrors === null){vErrors = [err10];}else {vErrors.push(err10);}errors++;}}}else {const err11 = {instancePath:instancePath+\"/video\",schemaPath:\"#/definitions/Video/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\",schema:schema26.type,parentSchema:schema26,data:data1};if(vErrors === null){vErrors = [err11];}else {vErrors.push(err11);}errors++;}}if(data.threeDimensionalScene !== undefined){if(!(validate21(data.threeDimensionalScene, {instancePath:instancePath+\"/threeDimensionalScene\",parentData:data,parentDataProperty:\"threeDimensionalScene\",rootData}))){vErrors = vErrors === null ? validate21.errors : vErrors.concat(validate21.errors);errors = vErrors.length;}}if(data.overlay !== undefined){let data11 = data.overlay;if(data11 && typeof data11 == \"object\" && !Array.isArray(data11)){if(data11.hoveringBehaviour !== undefined){let data12 = data11.hoveringBehaviour;if(typeof data12 !== \"string\"){const err12 = {instancePath:instancePath+\"/overlay/hoveringBehaviour\",schemaPath:\"#/definitions/Overlay/properties/hoveringBehaviour/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",schema:schema30.properties.hoveringBehaviour.type,parentSchema:schema30.properties.hoveringBehaviour,data:data12};if(vErrors === null){vErrors = [err12];}else {vErrors.push(err12);}errors++;}if(!((((data12 === \"ALWAYS_SHOW\") || (data12 === \"APPEARS\")) || (data12 === \"DISAPPEARS\")) || (data12 === \"NEVER_SHOW\"))){const err13 = {instancePath:instancePath+\"/overlay/hoveringBehaviour\",schemaPath:\"#/definitions/Overlay/properties/hoveringBehaviour/enum\",keyword:\"enum\",params:{allowedValues: schema30.properties.hoveringBehaviour.enum},message:\"must be equal to one of the allowed values\",schema:schema30.properties.hoveringBehaviour.enum,parentSchema:schema30.properties.hoveringBehaviour,data:data12};if(vErrors === null){vErrors = [err13];}else {vErrors.push(err13);}errors++;}}if(data11.hoverAnimation !== undefined){let data13 = data11.hoverAnimation;if(typeof data13 !== \"string\"){const err14 = {instancePath:instancePath+\"/overlay/hoverAnimation\",schemaPath:\"#/definitions/Overlay/properties/hoverAnimation/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",schema:schema30.properties.hoverAnimation.type,parentSchema:schema30.properties.hoverAnimation,data:data13};if(vErrors === null){vErrors = [err14];}else {vErrors.push(err14);}errors++;}if(!(((((((data13 === \"EXPAND\") || (data13 === \"FADE_IN\")) || (data13 === \"NO_EFFECT\")) || (data13 === \"SLIDE_DOWN\")) || (data13 === \"SLIDE_LEFT\")) || (data13 === \"SLIDE_RIGHT\")) || (data13 === \"SLIDE_UP\"))){const err15 = {instancePath:instancePath+\"/overlay/hoverAnimation\",schemaPath:\"#/definitions/Overlay/properties/hoverAnimation/enum\",keyword:\"enum\",params:{allowedValues: schema30.properties.hoverAnimation.enum},message:\"must be equal to one of the allowed values\",schema:schema30.properties.hoverAnimation.enum,parentSchema:schema30.properties.hoverAnimation,data:data13};if(vErrors === null){vErrors = [err15];}else {vErrors.push(err15);}errors++;}}if(data11.position !== undefined){let data14 = data11.position;if(typeof data14 !== \"string\"){const err16 = {instancePath:instancePath+\"/overlay/position\",schemaPath:\"#/definitions/Overlay/properties/position/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",schema:schema30.properties.position.type,parentSchema:schema30.properties.position,data:data14};if(vErrors === null){vErrors = [err16];}else {vErrors.push(err16);}errors++;}if(!((((((data14 === \"BUTTOM\") || (data14 === \"CENTERED_HORIZONTALLY\")) || (data14 === \"CENTERED_VERTICALLY\")) || (data14 === \"LEFT\")) || (data14 === \"RIGHT\")) || (data14 === \"TOP\"))){const err17 = {instancePath:instancePath+\"/overlay/position\",schemaPath:\"#/definitions/Overlay/properties/position/enum\",keyword:\"enum\",params:{allowedValues: schema30.properties.position.enum},message:\"must be equal to one of the allowed values\",schema:schema30.properties.position.enum,parentSchema:schema30.properties.position,data:data14};if(vErrors === null){vErrors = [err17];}else {vErrors.push(err17);}errors++;}}if(data11.size !== undefined){let data15 = data11.size;if(!((typeof data15 == \"number\") && (isFinite(data15)))){const err18 = {instancePath:instancePath+\"/overlay/size\",schemaPath:\"#/definitions/Overlay/properties/size/type\",keyword:\"type\",params:{type: \"number\"},message:\"must be number\",schema:schema30.properties.size.type,parentSchema:schema30.properties.size,data:data15};if(vErrors === null){vErrors = [err18];}else {vErrors.push(err18);}errors++;}}if(data11.sizeUnits !== undefined){let data16 = data11.sizeUnits;if(typeof data16 !== \"string\"){const err19 = {instancePath:instancePath+\"/overlay/sizeUnits\",schemaPath:\"#/definitions/Overlay/properties/sizeUnits/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",schema:schema30.properties.sizeUnits.type,parentSchema:schema30.properties.sizeUnits,data:data16};if(vErrors === null){vErrors = [err19];}else {vErrors.push(err19);}errors++;}if(!((data16 === \"PERCENT\") || (data16 === \"PIXEL\"))){const err20 = {instancePath:instancePath+\"/overlay/sizeUnits\",schemaPath:\"#/definitions/Overlay/properties/sizeUnits/enum\",keyword:\"enum\",params:{allowedValues: schema30.properties.sizeUnits.enum},message:\"must be equal to one of the allowed values\",schema:schema30.properties.sizeUnits.enum,parentSchema:schema30.properties.sizeUnits,data:data16};if(vErrors === null){vErrors = [err20];}else {vErrors.push(err20);}errors++;}}if(data11.padding !== undefined){let data17 = data11.padding;if(!((typeof data17 == \"number\") && (isFinite(data17)))){const err21 = {instancePath:instancePath+\"/overlay/padding\",schemaPath:\"#/definitions/Overlay/properties/padding/type\",keyword:\"type\",params:{type: \"number\"},message:\"must be number\",schema:schema30.properties.padding.type,parentSchema:schema30.properties.padding,data:data17};if(vErrors === null){vErrors = [err21];}else {vErrors.push(err21);}errors++;}}}else {const err22 = {instancePath:instancePath+\"/overlay\",schemaPath:\"#/definitions/Overlay/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\",schema:schema30.type,parentSchema:schema30,data:data11};if(vErrors === null){vErrors = [err22];}else {vErrors.push(err22);}errors++;}}if(data.content !== undefined){let data18 = data.content;if(data18 && typeof data18 == \"object\" && !Array.isArray(data18)){if(data18.hoverAnimation !== undefined){let data19 = data18.hoverAnimation;if(typeof data19 !== \"string\"){const err23 = {instancePath:instancePath+\"/content/hoverAnimation\",schemaPath:\"#/definitions/Content/properties/hoverAnimation/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",schema:schema31.properties.hoverAnimation.type,parentSchema:schema31.properties.hoverAnimation,data:data19};if(vErrors === null){vErrors = [err23];}else {vErrors.push(err23);}errors++;}if(!(((((((((data19 === \"BLUR\") || (data19 === \"COLOR_IN\")) || (data19 === \"DARKENED\")) || (data19 === \"GRAYSCALE\")) || (data19 === \"INVERT\")) || (data19 === \"NO_EFFECT\")) || (data19 === \"SHRINK\")) || (data19 === \"TILT\")) || (data19 === \"ZOOM_IN\"))){const err24 = {instancePath:instancePath+\"/content/hoverAnimation\",schemaPath:\"#/definitions/Content/properties/hoverAnimation/enum\",keyword:\"enum\",params:{allowedValues: schema31.properties.hoverAnimation.enum},message:\"must be equal to one of the allowed values\",schema:schema31.properties.hoverAnimation.enum,parentSchema:schema31.properties.hoverAnimation,data:data19};if(vErrors === null){vErrors = [err24];}else {vErrors.push(err24);}errors++;}}if(data18.placementAnimation !== undefined){let data20 = data18.placementAnimation;if(typeof data20 !== \"string\"){const err25 = {instancePath:instancePath+\"/content/placementAnimation\",schemaPath:\"#/definitions/Content/properties/placementAnimation/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",schema:schema31.properties.placementAnimation.type,parentSchema:schema31.properties.placementAnimation,data:data20};if(vErrors === null){vErrors = [err25];}else {vErrors.push(err25);}errors++;}if(!((data20 === \"NO_EFFECT\") || (data20 === \"SLIDE\"))){const err26 = {instancePath:instancePath+\"/content/placementAnimation\",schemaPath:\"#/definitions/Content/properties/placementAnimation/enum\",keyword:\"enum\",params:{allowedValues: schema31.properties.placementAnimation.enum},message:\"must be equal to one of the allowed values\",schema:schema31.properties.placementAnimation.enum,parentSchema:schema31.properties.placementAnimation,data:data20};if(vErrors === null){vErrors = [err26];}else {vErrors.push(err26);}errors++;}}if(data18.loader !== undefined){let data21 = data18.loader;if(typeof data21 !== \"string\"){const err27 = {instancePath:instancePath+\"/content/loader\",schemaPath:\"#/definitions/Content/properties/loader/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",schema:schema31.properties.loader.type,parentSchema:schema31.properties.loader,data:data21};if(vErrors === null){vErrors = [err27];}else {vErrors.push(err27);}errors++;}if(!(((data21 === \"BLUR\") || (data21 === \"COLOR\")) || (data21 === \"MAIN_COLOR\"))){const err28 = {instancePath:instancePath+\"/content/loader\",schemaPath:\"#/definitions/Content/properties/loader/enum\",keyword:\"enum\",params:{allowedValues: schema31.properties.loader.enum},message:\"must be equal to one of the allowed values\",schema:schema31.properties.loader.enum,parentSchema:schema31.properties.loader,data:data21};if(vErrors === null){vErrors = [err28];}else {vErrors.push(err28);}errors++;}}if(data18.magnificationValue !== undefined){let data22 = data18.magnificationValue;if(!((typeof data22 == \"number\") && (isFinite(data22)))){const err29 = {instancePath:instancePath+\"/content/magnificationValue\",schemaPath:\"#/definitions/Content/properties/magnificationValue/type\",keyword:\"type\",params:{type: \"number\"},message:\"must be number\",schema:schema31.properties.magnificationValue.type,parentSchema:schema31.properties.magnificationValue,data:data22};if(vErrors === null){vErrors = [err29];}else {vErrors.push(err29);}errors++;}}if(data18.tiltAngleValue !== undefined){let data23 = data18.tiltAngleValue;if(!((typeof data23 == \"number\") && (isFinite(data23)))){const err30 = {instancePath:instancePath+\"/content/tiltAngleValue\",schemaPath:\"#/definitions/Content/properties/tiltAngleValue/type\",keyword:\"type\",params:{type: \"number\"},message:\"must be number\",schema:schema31.properties.tiltAngleValue.type,parentSchema:schema31.properties.tiltAngleValue,data:data23};if(vErrors === null){vErrors = [err30];}else {vErrors.push(err30);}errors++;}}}else {const err31 = {instancePath:instancePath+\"/content\",schemaPath:\"#/definitions/Content/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\",schema:schema31.type,parentSchema:schema31,data:data18};if(vErrors === null){vErrors = [err31];}else {vErrors.push(err31);}errors++;}}if(data.secondaryMedia !== undefined){let data24 = data.secondaryMedia;if(data24 && typeof data24 == \"object\" && !Array.isArray(data24)){if(data24.behaviour === undefined){const err32 = {instancePath:instancePath+\"/secondaryMedia\",schemaPath:\"#/definitions/SecondaryMedia/required\",keyword:\"required\",params:{missingProperty: \"behaviour\"},message:\"must have required property '\"+\"behaviour\"+\"'\",schema:schema32.required,parentSchema:schema32,data:data24};if(vErrors === null){vErrors = [err32];}else {vErrors.push(err32);}errors++;}if(data24.trigger === undefined){const err33 = {instancePath:instancePath+\"/secondaryMedia\",schemaPath:\"#/definitions/SecondaryMedia/required\",keyword:\"required\",params:{missingProperty: \"trigger\"},message:\"must have required property '\"+\"trigger\"+\"'\",schema:schema32.required,parentSchema:schema32,data:data24};if(vErrors === null){vErrors = [err33];}else {vErrors.push(err33);}errors++;}if(data24.trigger !== undefined){let data25 = data24.trigger;if(typeof data25 !== \"string\"){const err34 = {instancePath:instancePath+\"/secondaryMedia/trigger\",schemaPath:\"#/definitions/SecondaryMedia/properties/trigger/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",schema:schema32.properties.trigger.type,parentSchema:schema32.properties.trigger,data:data25};if(vErrors === null){vErrors = [err34];}else {vErrors.push(err34);}errors++;}if(!((data25 === \"HOVER\") || (data25 === \"OFF\"))){const err35 = {instancePath:instancePath+\"/secondaryMedia/trigger\",schemaPath:\"#/definitions/SecondaryMedia/properties/trigger/enum\",keyword:\"enum\",params:{allowedValues: schema32.properties.trigger.enum},message:\"must be equal to one of the allowed values\",schema:schema32.properties.trigger.enum,parentSchema:schema32.properties.trigger,data:data25};if(vErrors === null){vErrors = [err35];}else {vErrors.push(err35);}errors++;}}if(data24.behaviour !== undefined){let data26 = data24.behaviour;if(typeof data26 !== \"string\"){const err36 = {instancePath:instancePath+\"/secondaryMedia/behaviour\",schemaPath:\"#/definitions/SecondaryMedia/properties/behaviour/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",schema:schema32.properties.behaviour.type,parentSchema:schema32.properties.behaviour,data:data26};if(vErrors === null){vErrors = [err36];}else {vErrors.push(err36);}errors++;}if(\"APPEARS\" !== data26){const err37 = {instancePath:instancePath+\"/secondaryMedia/behaviour\",schemaPath:\"#/definitions/SecondaryMedia/properties/behaviour/const\",keyword:\"const\",params:{allowedValue: \"APPEARS\"},message:\"must be equal to constant\",schema:\"APPEARS\",parentSchema:schema32.properties.behaviour,data:data26};if(vErrors === null){vErrors = [err37];}else {vErrors.push(err37);}errors++;}}}else {const err38 = {instancePath:instancePath+\"/secondaryMedia\",schemaPath:\"#/definitions/SecondaryMedia/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\",schema:schema32.type,parentSchema:schema32,data:data24};if(vErrors === null){vErrors = [err38];}else {vErrors.push(err38);}errors++;}}}else {const err39 = {instancePath,schemaPath:\"#/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\",schema:schema25.type,parentSchema:schema25,data};if(vErrors === null){vErrors = [err39];}else {vErrors.push(err39);}errors++;}validate20.errors = vErrors;return errors === 0;}const schema33 = {\"type\":\"object\",\"properties\":{\"layoutDirection\":{\"enum\":[\"LEFT_TO_RIGHT\",\"RIGHT_TO_LEFT\"],\"type\":\"string\"},\"blockContextMenu\":{\"type\":\"boolean\"},\"scrollAnimation\":{\"enum\":[\"BLUR\",\"EXPAND\",\"FADE_IN\",\"GRAYSCALE\",\"MAIN_COLOR\",\"NO_EFFECT\",\"ONE_COLOR\",\"SHRINK\",\"SLIDE_UP\",\"ZOOM_OUT\"],\"type\":\"string\"},\"enableIndexingShareLinks\":{\"type\":\"boolean\"},\"vertical\":{\"$ref\":\"#/definitions/Vertical\"},\"horizontal\":{\"$ref\":\"#/definitions/Horizontal\"}}};const schema34 = {\"type\":\"object\",\"properties\":{\"loadMore\":{\"$ref\":\"#/definitions/LoadMore\"}}};const schema35 = {\"type\":\"object\",\"properties\":{\"enable\":{\"type\":\"boolean\"},\"amount\":{\"enum\":[\"ALL\",\"PARTIAL\"],\"type\":\"string\"},\"text\":{\"type\":\"string\"}}};function validate25(data, {instancePath=\"\", parentData, parentDataProperty, rootData=data}={}){let vErrors = null;let errors = 0;if(data && typeof data == \"object\" && !Array.isArray(data)){if(data.loadMore !== undefined){let data0 = data.loadMore;if(data0 && typeof data0 == \"object\" && !Array.isArray(data0)){if(data0.enable !== undefined){let data1 = data0.enable;if(typeof data1 !== \"boolean\"){const err0 = {instancePath:instancePath+\"/loadMore/enable\",schemaPath:\"#/definitions/LoadMore/properties/enable/type\",keyword:\"type\",params:{type: \"boolean\"},message:\"must be boolean\",schema:schema35.properties.enable.type,parentSchema:schema35.properties.enable,data:data1};if(vErrors === null){vErrors = [err0];}else {vErrors.push(err0);}errors++;}}if(data0.amount !== undefined){let data2 = data0.amount;if(typeof data2 !== \"string\"){const err1 = {instancePath:instancePath+\"/loadMore/amount\",schemaPath:\"#/definitions/LoadMore/properties/amount/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",schema:schema35.properties.amount.type,parentSchema:schema35.properties.amount,data:data2};if(vErrors === null){vErrors = [err1];}else {vErrors.push(err1);}errors++;}if(!((data2 === \"ALL\") || (data2 === \"PARTIAL\"))){const err2 = {instancePath:instancePath+\"/loadMore/amount\",schemaPath:\"#/definitions/LoadMore/properties/amount/enum\",keyword:\"enum\",params:{allowedValues: schema35.properties.amount.enum},message:\"must be equal to one of the allowed values\",schema:schema35.properties.amount.enum,parentSchema:schema35.properties.amount,data:data2};if(vErrors === null){vErrors = [err2];}else {vErrors.push(err2);}errors++;}}if(data0.text !== undefined){let data3 = data0.text;if(typeof data3 !== \"string\"){const err3 = {instancePath:instancePath+\"/loadMore/text\",schemaPath:\"#/definitions/LoadMore/properties/text/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",schema:schema35.properties.text.type,parentSchema:schema35.properties.text,data:data3};if(vErrors === null){vErrors = [err3];}else {vErrors.push(err3);}errors++;}}}else {const err4 = {instancePath:instancePath+\"/loadMore\",schemaPath:\"#/definitions/LoadMore/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\",schema:schema35.type,parentSchema:schema35,data:data0};if(vErrors === null){vErrors = [err4];}else {vErrors.push(err4);}errors++;}}}else {const err5 = {instancePath,schemaPath:\"#/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\",schema:schema34.type,parentSchema:schema34,data};if(vErrors === null){vErrors = [err5];}else {vErrors.push(err5);}errors++;}validate25.errors = vErrors;return errors === 0;}const schema36 = {\"type\":\"object\",\"properties\":{\"enableScrollSnap\":{\"type\":\"boolean\"},\"slideAnimation\":{\"enum\":[\"DECK\",\"FADE\",\"SCROLL\"],\"type\":\"string\"},\"slideTransition\":{\"type\":\"string\"},\"blockScroll\":{\"type\":\"boolean\"},\"navigationDuration\":{\"type\":\"number\"},\"loop\":{\"type\":\"boolean\"},\"autoSlide\":{\"$ref\":\"#/definitions/AutoSlide\"},\"slideshowInfo\":{\"$ref\":\"#/definitions/SlideshowInfo\"}}};const schema37 = {\"type\":\"object\",\"properties\":{\"behaviour\":{\"enum\":[\"CONTINUOUS\",\"INTERVAL\",\"OFF\"],\"type\":\"string\"},\"interval\":{\"type\":\"number\"},\"pauseOnHover\":{\"type\":\"boolean\"},\"speed\":{\"type\":\"number\"}}};const schema38 = {\"type\":\"object\",\"properties\":{\"buttonsAlignment\":{\"enum\":[\"CENTER\",\"LEFT\",\"RIGHT\"],\"type\":\"string\"},\"enableCounter\":{\"type\":\"boolean\"},\"enablePlayButton\":{\"type\":\"boolean\"}}};function validate27(data, {instancePath=\"\", parentData, parentDataProperty, rootData=data}={}){let vErrors = null;let errors = 0;if(data && typeof data == \"object\" && !Array.isArray(data)){if(data.enableScrollSnap !== undefined){let data0 = data.enableScrollSnap;if(typeof data0 !== \"boolean\"){const err0 = {instancePath:instancePath+\"/enableScrollSnap\",schemaPath:\"#/properties/enableScrollSnap/type\",keyword:\"type\",params:{type: \"boolean\"},message:\"must be boolean\",schema:schema36.properties.enableScrollSnap.type,parentSchema:schema36.properties.enableScrollSnap,data:data0};if(vErrors === null){vErrors = [err0];}else {vErrors.push(err0);}errors++;}}if(data.slideAnimation !== undefined){let data1 = data.slideAnimation;if(typeof data1 !== \"string\"){const err1 = {instancePath:instancePath+\"/slideAnimation\",schemaPath:\"#/properties/slideAnimation/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",schema:schema36.properties.slideAnimation.type,parentSchema:schema36.properties.slideAnimation,data:data1};if(vErrors === null){vErrors = [err1];}else {vErrors.push(err1);}errors++;}if(!(((data1 === \"DECK\") || (data1 === \"FADE\")) || (data1 === \"SCROLL\"))){const err2 = {instancePath:instancePath+\"/slideAnimation\",schemaPath:\"#/properties/slideAnimation/enum\",keyword:\"enum\",params:{allowedValues: schema36.properties.slideAnimation.enum},message:\"must be equal to one of the allowed values\",schema:schema36.properties.slideAnimation.enum,parentSchema:schema36.properties.slideAnimation,data:data1};if(vErrors === null){vErrors = [err2];}else {vErrors.push(err2);}errors++;}}if(data.slideTransition !== undefined){let data2 = data.slideTransition;if(typeof data2 !== \"string\"){const err3 = {instancePath:instancePath+\"/slideTransition\",schemaPath:\"#/properties/slideTransition/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",schema:schema36.properties.slideTransition.type,parentSchema:schema36.properties.slideTransition,data:data2};if(vErrors === null){vErrors = [err3];}else {vErrors.push(err3);}errors++;}}if(data.blockScroll !== undefined){let data3 = data.blockScroll;if(typeof data3 !== \"boolean\"){const err4 = {instancePath:instancePath+\"/blockScroll\",schemaPath:\"#/properties/blockScroll/type\",keyword:\"type\",params:{type: \"boolean\"},message:\"must be boolean\",schema:schema36.properties.blockScroll.type,parentSchema:schema36.properties.blockScroll,data:data3};if(vErrors === null){vErrors = [err4];}else {vErrors.push(err4);}errors++;}}if(data.navigationDuration !== undefined){let data4 = data.navigationDuration;if(!((typeof data4 == \"number\") && (isFinite(data4)))){const err5 = {instancePath:instancePath+\"/navigationDuration\",schemaPath:\"#/properties/navigationDuration/type\",keyword:\"type\",params:{type: \"number\"},message:\"must be number\",schema:schema36.properties.navigationDuration.type,parentSchema:schema36.properties.navigationDuration,data:data4};if(vErrors === null){vErrors = [err5];}else {vErrors.push(err5);}errors++;}}if(data.loop !== undefined){let data5 = data.loop;if(typeof data5 !== \"boolean\"){const err6 = {instancePath:instancePath+\"/loop\",schemaPath:\"#/properties/loop/type\",keyword:\"type\",params:{type: \"boolean\"},message:\"must be boolean\",schema:schema36.properties.loop.type,parentSchema:schema36.properties.loop,data:data5};if(vErrors === null){vErrors = [err6];}else {vErrors.push(err6);}errors++;}}if(data.autoSlide !== undefined){let data6 = data.autoSlide;if(data6 && typeof data6 == \"object\" && !Array.isArray(data6)){if(data6.behaviour !== undefined){let data7 = data6.behaviour;if(typeof data7 !== \"string\"){const err7 = {instancePath:instancePath+\"/autoSlide/behaviour\",schemaPath:\"#/definitions/AutoSlide/properties/behaviour/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",schema:schema37.properties.behaviour.type,parentSchema:schema37.properties.behaviour,data:data7};if(vErrors === null){vErrors = [err7];}else {vErrors.push(err7);}errors++;}if(!(((data7 === \"CONTINUOUS\") || (data7 === \"INTERVAL\")) || (data7 === \"OFF\"))){const err8 = {instancePath:instancePath+\"/autoSlide/behaviour\",schemaPath:\"#/definitions/AutoSlide/properties/behaviour/enum\",keyword:\"enum\",params:{allowedValues: schema37.properties.behaviour.enum},message:\"must be equal to one of the allowed values\",schema:schema37.properties.behaviour.enum,parentSchema:schema37.properties.behaviour,data:data7};if(vErrors === null){vErrors = [err8];}else {vErrors.push(err8);}errors++;}}if(data6.interval !== undefined){let data8 = data6.interval;if(!((typeof data8 == \"number\") && (isFinite(data8)))){const err9 = {instancePath:instancePath+\"/autoSlide/interval\",schemaPath:\"#/definitions/AutoSlide/properties/interval/type\",keyword:\"type\",params:{type: \"number\"},message:\"must be number\",schema:schema37.properties.interval.type,parentSchema:schema37.properties.interval,data:data8};if(vErrors === null){vErrors = [err9];}else {vErrors.push(err9);}errors++;}}if(data6.pauseOnHover !== undefined){let data9 = data6.pauseOnHover;if(typeof data9 !== \"boolean\"){const err10 = {instancePath:instancePath+\"/autoSlide/pauseOnHover\",schemaPath:\"#/definitions/AutoSlide/properties/pauseOnHover/type\",keyword:\"type\",params:{type: \"boolean\"},message:\"must be boolean\",schema:schema37.properties.pauseOnHover.type,parentSchema:schema37.properties.pauseOnHover,data:data9};if(vErrors === null){vErrors = [err10];}else {vErrors.push(err10);}errors++;}}if(data6.speed !== undefined){let data10 = data6.speed;if(!((typeof data10 == \"number\") && (isFinite(data10)))){const err11 = {instancePath:instancePath+\"/autoSlide/speed\",schemaPath:\"#/definitions/AutoSlide/properties/speed/type\",keyword:\"type\",params:{type: \"number\"},message:\"must be number\",schema:schema37.properties.speed.type,parentSchema:schema37.properties.speed,data:data10};if(vErrors === null){vErrors = [err11];}else {vErrors.push(err11);}errors++;}}}else {const err12 = {instancePath:instancePath+\"/autoSlide\",schemaPath:\"#/definitions/AutoSlide/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\",schema:schema37.type,parentSchema:schema37,data:data6};if(vErrors === null){vErrors = [err12];}else {vErrors.push(err12);}errors++;}}if(data.slideshowInfo !== undefined){let data11 = data.slideshowInfo;if(data11 && typeof data11 == \"object\" && !Array.isArray(data11)){if(data11.buttonsAlignment !== undefined){let data12 = data11.buttonsAlignment;if(typeof data12 !== \"string\"){const err13 = {instancePath:instancePath+\"/slideshowInfo/buttonsAlignment\",schemaPath:\"#/definitions/SlideshowInfo/properties/buttonsAlignment/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",schema:schema38.properties.buttonsAlignment.type,parentSchema:schema38.properties.buttonsAlignment,data:data12};if(vErrors === null){vErrors = [err13];}else {vErrors.push(err13);}errors++;}if(!(((data12 === \"CENTER\") || (data12 === \"LEFT\")) || (data12 === \"RIGHT\"))){const err14 = {instancePath:instancePath+\"/slideshowInfo/buttonsAlignment\",schemaPath:\"#/definitions/SlideshowInfo/properties/buttonsAlignment/enum\",keyword:\"enum\",params:{allowedValues: schema38.properties.buttonsAlignment.enum},message:\"must be equal to one of the allowed values\",schema:schema38.properties.buttonsAlignment.enum,parentSchema:schema38.properties.buttonsAlignment,data:data12};if(vErrors === null){vErrors = [err14];}else {vErrors.push(err14);}errors++;}}if(data11.enableCounter !== undefined){let data13 = data11.enableCounter;if(typeof data13 !== \"boolean\"){const err15 = {instancePath:instancePath+\"/slideshowInfo/enableCounter\",schemaPath:\"#/definitions/SlideshowInfo/properties/enableCounter/type\",keyword:\"type\",params:{type: \"boolean\"},message:\"must be boolean\",schema:schema38.properties.enableCounter.type,parentSchema:schema38.properties.enableCounter,data:data13};if(vErrors === null){vErrors = [err15];}else {vErrors.push(err15);}errors++;}}if(data11.enablePlayButton !== undefined){let data14 = data11.enablePlayButton;if(typeof data14 !== \"boolean\"){const err16 = {instancePath:instancePath+\"/slideshowInfo/enablePlayButton\",schemaPath:\"#/definitions/SlideshowInfo/properties/enablePlayButton/type\",keyword:\"type\",params:{type: \"boolean\"},message:\"must be boolean\",schema:schema38.properties.enablePlayButton.type,parentSchema:schema38.properties.enablePlayButton,data:data14};if(vErrors === null){vErrors = [err16];}else {vErrors.push(err16);}errors++;}}}else {const err17 = {instancePath:instancePath+\"/slideshowInfo\",schemaPath:\"#/definitions/SlideshowInfo/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\",schema:schema38.type,parentSchema:schema38,data:data11};if(vErrors === null){vErrors = [err17];}else {vErrors.push(err17);}errors++;}}}else {const err18 = {instancePath,schemaPath:\"#/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\",schema:schema36.type,parentSchema:schema36,data};if(vErrors === null){vErrors = [err18];}else {vErrors.push(err18);}errors++;}validate27.errors = vErrors;return errors === 0;}function validate24(data, {instancePath=\"\", parentData, parentDataProperty, rootData=data}={}){let vErrors = null;let errors = 0;if(data && typeof data == \"object\" && !Array.isArray(data)){if(data.layoutDirection !== undefined){let data0 = data.layoutDirection;if(typeof data0 !== \"string\"){const err0 = {instancePath:instancePath+\"/layoutDirection\",schemaPath:\"#/properties/layoutDirection/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",schema:schema33.properties.layoutDirection.type,parentSchema:schema33.properties.layoutDirection,data:data0};if(vErrors === null){vErrors = [err0];}else {vErrors.push(err0);}errors++;}if(!((data0 === \"LEFT_TO_RIGHT\") || (data0 === \"RIGHT_TO_LEFT\"))){const err1 = {instancePath:instancePath+\"/layoutDirection\",schemaPath:\"#/properties/layoutDirection/enum\",keyword:\"enum\",params:{allowedValues: schema33.properties.layoutDirection.enum},message:\"must be equal to one of the allowed values\",schema:schema33.properties.layoutDirection.enum,parentSchema:schema33.properties.layoutDirection,data:data0};if(vErrors === null){vErrors = [err1];}else {vErrors.push(err1);}errors++;}}if(data.blockContextMenu !== undefined){let data1 = data.blockContextMenu;if(typeof data1 !== \"boolean\"){const err2 = {instancePath:instancePath+\"/blockContextMenu\",schemaPath:\"#/properties/blockContextMenu/type\",keyword:\"type\",params:{type: \"boolean\"},message:\"must be boolean\",schema:schema33.properties.blockContextMenu.type,parentSchema:schema33.properties.blockContextMenu,data:data1};if(vErrors === null){vErrors = [err2];}else {vErrors.push(err2);}errors++;}}if(data.scrollAnimation !== undefined){let data2 = data.scrollAnimation;if(typeof data2 !== \"string\"){const err3 = {instancePath:instancePath+\"/scrollAnimation\",schemaPath:\"#/properties/scrollAnimation/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",schema:schema33.properties.scrollAnimation.type,parentSchema:schema33.properties.scrollAnimation,data:data2};if(vErrors === null){vErrors = [err3];}else {vErrors.push(err3);}errors++;}if(!((((((((((data2 === \"BLUR\") || (data2 === \"EXPAND\")) || (data2 === \"FADE_IN\")) || (data2 === \"GRAYSCALE\")) || (data2 === \"MAIN_COLOR\")) || (data2 === \"NO_EFFECT\")) || (data2 === \"ONE_COLOR\")) || (data2 === \"SHRINK\")) || (data2 === \"SLIDE_UP\")) || (data2 === \"ZOOM_OUT\"))){const err4 = {instancePath:instancePath+\"/scrollAnimation\",schemaPath:\"#/properties/scrollAnimation/enum\",keyword:\"enum\",params:{allowedValues: schema33.properties.scrollAnimation.enum},message:\"must be equal to one of the allowed values\",schema:schema33.properties.scrollAnimation.enum,parentSchema:schema33.properties.scrollAnimation,data:data2};if(vErrors === null){vErrors = [err4];}else {vErrors.push(err4);}errors++;}}if(data.enableIndexingShareLinks !== undefined){let data3 = data.enableIndexingShareLinks;if(typeof data3 !== \"boolean\"){const err5 = {instancePath:instancePath+\"/enableIndexingShareLinks\",schemaPath:\"#/properties/enableIndexingShareLinks/type\",keyword:\"type\",params:{type: \"boolean\"},message:\"must be boolean\",schema:schema33.properties.enableIndexingShareLinks.type,parentSchema:schema33.properties.enableIndexingShareLinks,data:data3};if(vErrors === null){vErrors = [err5];}else {vErrors.push(err5);}errors++;}}if(data.vertical !== undefined){if(!(validate25(data.vertical, {instancePath:instancePath+\"/vertical\",parentData:data,parentDataProperty:\"vertical\",rootData}))){vErrors = vErrors === null ? validate25.errors : vErrors.concat(validate25.errors);errors = vErrors.length;}}if(data.horizontal !== undefined){if(!(validate27(data.horizontal, {instancePath:instancePath+\"/horizontal\",parentData:data,parentDataProperty:\"horizontal\",rootData}))){vErrors = vErrors === null ? validate27.errors : vErrors.concat(validate27.errors);errors = vErrors.length;}}}else {const err6 = {instancePath,schemaPath:\"#/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\",schema:schema33.type,parentSchema:schema33,data};if(vErrors === null){vErrors = [err6];}else {vErrors.push(err6);}errors++;}validate24.errors = vErrors;return errors === 0;}function validate19(data, {instancePath=\"\", parentData, parentDataProperty, rootData=data}={}){let vErrors = null;let errors = 0;if(data && typeof data == \"object\" && !Array.isArray(data)){if(data.item !== undefined){if(!(validate20(data.item, {instancePath:instancePath+\"/item\",parentData:data,parentDataProperty:\"item\",rootData}))){vErrors = vErrors === null ? validate20.errors : vErrors.concat(validate20.errors);errors = vErrors.length;}}if(data.gallery !== undefined){if(!(validate24(data.gallery, {instancePath:instancePath+\"/gallery\",parentData:data,parentDataProperty:\"gallery\",rootData}))){vErrors = vErrors === null ? validate24.errors : vErrors.concat(validate24.errors);errors = vErrors.length;}}}else {const err0 = {instancePath,schemaPath:\"#/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\",schema:schema24.type,parentSchema:schema24,data};if(vErrors === null){vErrors = [err0];}else {vErrors.push(err0);}errors++;}validate19.errors = vErrors;return errors === 0;}function validate10(data, {instancePath=\"\", parentData, parentDataProperty, rootData=data}={}){let vErrors = null;let errors = 0;if(data && typeof data == \"object\" && !Array.isArray(data)){if(data.layoutParams !== undefined){if(!(validate11(data.layoutParams, {instancePath:instancePath+\"/layoutParams\",parentData:data,parentDataProperty:\"layoutParams\",rootData}))){vErrors = vErrors === null ? validate11.errors : vErrors.concat(validate11.errors);errors = vErrors.length;}}if(data.behaviourParams !== undefined){if(!(validate19(data.behaviourParams, {instancePath:instancePath+\"/behaviourParams\",parentData:data,parentDataProperty:\"behaviourParams\",rootData}))){vErrors = vErrors === null ? validate19.errors : vErrors.concat(validate19.errors);errors = vErrors.length;}}if(data.stylingParams !== undefined){let data2 = data.stylingParams;if(data2 && typeof data2 == \"object\" && !Array.isArray(data2)){if(data2.arrowsColor !== undefined){let data3 = data2.arrowsColor;if(typeof data3 !== \"string\"){const err0 = {instancePath:instancePath+\"/stylingParams/arrowsColor\",schemaPath:\"#/definitions/StylingParams/properties/arrowsColor/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",schema:schema39.properties.arrowsColor.type,parentSchema:schema39.properties.arrowsColor,data:data3};if(vErrors === null){vErrors = [err0];}else {vErrors.push(err0);}errors++;}}if(data2.itemShadowBlur !== undefined){let data4 = data2.itemShadowBlur;if(!((typeof data4 == \"number\") && (isFinite(data4)))){const err1 = {instancePath:instancePath+\"/stylingParams/itemShadowBlur\",schemaPath:\"#/definitions/StylingParams/properties/itemShadowBlur/type\",keyword:\"type\",params:{type: \"number\"},message:\"must be number\",schema:schema39.properties.itemShadowBlur.type,parentSchema:schema39.properties.itemShadowBlur,data:data4};if(vErrors === null){vErrors = [err1];}else {vErrors.push(err1);}errors++;}}if(data2.itemShadowDirection !== undefined){let data5 = data2.itemShadowDirection;if(!((typeof data5 == \"number\") && (isFinite(data5)))){const err2 = {instancePath:instancePath+\"/stylingParams/itemShadowDirection\",schemaPath:\"#/definitions/StylingParams/properties/itemShadowDirection/type\",keyword:\"type\",params:{type: \"number\"},message:\"must be number\",schema:schema39.properties.itemShadowDirection.type,parentSchema:schema39.properties.itemShadowDirection,data:data5};if(vErrors === null){vErrors = [err2];}else {vErrors.push(err2);}errors++;}}if(data2.itemShadowOpacityAndColor !== undefined){let data6 = data2.itemShadowOpacityAndColor;if(typeof data6 !== \"string\"){const err3 = {instancePath:instancePath+\"/stylingParams/itemShadowOpacityAndColor\",schemaPath:\"#/definitions/StylingParams/properties/itemShadowOpacityAndColor/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",schema:schema39.properties.itemShadowOpacityAndColor.type,parentSchema:schema39.properties.itemShadowOpacityAndColor,data:data6};if(vErrors === null){vErrors = [err3];}else {vErrors.push(err3);}errors++;}}if(data2.itemShadowSize !== undefined){let data7 = data2.itemShadowSize;if(!((typeof data7 == \"number\") && (isFinite(data7)))){const err4 = {instancePath:instancePath+\"/stylingParams/itemShadowSize\",schemaPath:\"#/definitions/StylingParams/properties/itemShadowSize/type\",keyword:\"type\",params:{type: \"number\"},message:\"must be number\",schema:schema39.properties.itemShadowSize.type,parentSchema:schema39.properties.itemShadowSize,data:data7};if(vErrors === null){vErrors = [err4];}else {vErrors.push(err4);}errors++;}}if(data2.itemEnableShadow !== undefined){let data8 = data2.itemEnableShadow;if(typeof data8 !== \"boolean\"){const err5 = {instancePath:instancePath+\"/stylingParams/itemEnableShadow\",schemaPath:\"#/definitions/StylingParams/properties/itemEnableShadow/type\",keyword:\"type\",params:{type: \"boolean\"},message:\"must be boolean\",schema:schema39.properties.itemEnableShadow.type,parentSchema:schema39.properties.itemEnableShadow,data:data8};if(vErrors === null){vErrors = [err5];}else {vErrors.push(err5);}errors++;}}if(data2.itemBorderRadius !== undefined){let data9 = data2.itemBorderRadius;if(!((typeof data9 == \"number\") && (isFinite(data9)))){const err6 = {instancePath:instancePath+\"/stylingParams/itemBorderRadius\",schemaPath:\"#/definitions/StylingParams/properties/itemBorderRadius/type\",keyword:\"type\",params:{type: \"number\"},message:\"must be number\",schema:schema39.properties.itemBorderRadius.type,parentSchema:schema39.properties.itemBorderRadius,data:data9};if(vErrors === null){vErrors = [err6];}else {vErrors.push(err6);}errors++;}}if(data2.itemBorderWidth !== undefined){let data10 = data2.itemBorderWidth;if(!((typeof data10 == \"number\") && (isFinite(data10)))){const err7 = {instancePath:instancePath+\"/stylingParams/itemBorderWidth\",schemaPath:\"#/definitions/StylingParams/properties/itemBorderWidth/type\",keyword:\"type\",params:{type: \"number\"},message:\"must be number\",schema:schema39.properties.itemBorderWidth.type,parentSchema:schema39.properties.itemBorderWidth,data:data10};if(vErrors === null){vErrors = [err7];}else {vErrors.push(err7);}errors++;}}if(data2.itemResolutionMode !== undefined){let data11 = data2.itemResolutionMode;if(typeof data11 !== \"string\"){const err8 = {instancePath:instancePath+\"/stylingParams/itemResolutionMode\",schemaPath:\"#/definitions/StylingParams/properties/itemResolutionMode/type\",keyword:\"type\",params:{type: \"string\"},message:\"must be string\",schema:schema39.properties.itemResolutionMode.type,parentSchema:schema39.properties.itemResolutionMode,data:data11};if(vErrors === null){vErrors = [err8];}else {vErrors.push(err8);}errors++;}if(!((data11 === \"FULL\") || (data11 === \"SCLAED_DOWN\"))){const err9 = {instancePath:instancePath+\"/stylingParams/itemResolutionMode\",schemaPath:\"#/definitions/StylingParams/properties/itemResolutionMode/enum\",keyword:\"enum\",params:{allowedValues: schema39.properties.itemResolutionMode.enum},message:\"must be equal to one of the allowed values\",schema:schema39.properties.itemResolutionMode.enum,parentSchema:schema39.properties.itemResolutionMode,data:data11};if(vErrors === null){vErrors = [err9];}else {vErrors.push(err9);}errors++;}}}else {const err10 = {instancePath:instancePath+\"/stylingParams\",schemaPath:\"#/definitions/StylingParams/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\",schema:schema39.type,parentSchema:schema39,data:data2};if(vErrors === null){vErrors = [err10];}else {vErrors.push(err10);}errors++;}}}else {const err11 = {instancePath,schemaPath:\"#/type\",keyword:\"type\",params:{type: \"object\"},message:\"must be object\",schema:schema11.type,parentSchema:schema11,data};if(vErrors === null){vErrors = [err11];}else {vErrors.push(err11);}errors++;}validate10.errors = vErrors;return errors === 0;}","import validateFunc from './standaloneValidateCode.js';\nexport { validateTypes };\nfunction validateTypes(data?: any): Record<string, unknown>[] {\n  validateFunc(data);\n  // @ts-expect-error\n  return validateFunc.errors || [];\n}\n","import { default as GALLERY_CONSTS } from '../../common/constants/index.js';\nimport optionsMap from './optionsMap.js';\nimport utils from '../../common/utils/index.js';\nimport { GalleryProps } from '../../common/interfaces/galleryTypes.js';\n\nfunction calculateActiveIndexOffset({ activeIndex, prevActiveIndex, activeIndexOffsetMemory, items }) {\n  const itemsLength = items.length;\n  if (activeIndex === prevActiveIndex) {\n    return activeIndexOffsetMemory;\n  }\n  activeIndex = utils.inRange(activeIndex, itemsLength);\n  const initialRoute = Math.abs(prevActiveIndex - activeIndex);\n  const jumpForwardRoute = Math.abs(prevActiveIndex - itemsLength - activeIndex);\n  const jumpBackwardRoute = Math.abs(prevActiveIndex + itemsLength - activeIndex);\n  if (jumpBackwardRoute < jumpForwardRoute && jumpBackwardRoute < initialRoute) {\n    return activeIndexOffsetMemory - itemsLength;\n  }\n  if (jumpForwardRoute < jumpBackwardRoute && jumpForwardRoute < initialRoute) {\n    return activeIndexOffsetMemory + itemsLength;\n  }\n  return activeIndexOffsetMemory;\n}\n\nfunction clearGalleryItems(items: any[], galleryItems: any[]): any[] {\n  const clear = (list) =>\n    utils\n      .uniqueBy(list, 'id')\n      .filter((item) => item.idx !== undefined)\n      .sort((a, b) => a.idx - b.idx);\n  const clearedGalleryItems = clear(galleryItems);\n  return clearedGalleryItems.map((item) => {\n    const realItem = items.find((clearedItem) => clearedItem.id === item.id);\n    return {\n      item: realItem,\n      thumbnailItem: item,\n      idx: item.idx,\n    };\n  });\n}\n\nfunction getThumbnailsData({\n  options,\n  activeIndex,\n  items,\n  thumbnailAlignment,\n  galleryStructure,\n  containerWidth,\n  containerHeight,\n  activeIndexOffsetMemory = activeIndex,\n  prevActiveIndex = activeIndex,\n}: {\n  options: GalleryProps['options'];\n  activeIndex: number;\n  items: GalleryProps['items'];\n  thumbnailAlignment: string;\n  galleryStructure: any;\n  containerWidth: number;\n  containerHeight: number;\n  activeIndexOffsetMemory?: number;\n  prevActiveIndex?: number;\n}) {\n  const galleryItems = clearGalleryItems(items, galleryStructure.galleryItems);\n  activeIndexOffsetMemory = calculateActiveIndexOffset({\n    activeIndex,\n    activeIndexOffsetMemory,\n    items: galleryItems,\n    prevActiveIndex,\n  });\n  const activeIndexWithOffset = activeIndexOffsetMemory! + activeIndex;\n  const isRTL =\n    options[optionsMap.behaviourParams.gallery.layoutDirection] ===\n    GALLERY_CONSTS[optionsMap.behaviourParams.gallery.layoutDirection].RIGHT_TO_LEFT;\n\n  if (utils.isVerbose()) {\n    console.log('creating thumbnails for idx', activeIndex);\n  }\n\n  const withInfiniteScroll = false; // this is not supported yet\n  const thumbnailSize = options[optionsMap.layoutParams.thumbnails.size];\n  const thumbnailSizeWithSpacing = thumbnailSize + options[optionsMap.layoutParams.thumbnails.spacing];\n  const horizontalThumbnails =\n    thumbnailAlignment === GALLERY_CONSTS[optionsMap.layoutParams.thumbnails.alignment].BOTTOM ||\n    thumbnailAlignment === GALLERY_CONSTS[optionsMap.layoutParams.thumbnails.alignment].TOP;\n  const { width, height } = getThumbnailsContainerSize({\n    horizontalThumbnails,\n    containerWidth,\n    containerHeight,\n    thumbnailSize,\n  });\n  const minNumOfThumbnails = getNumberOfThumbnails({\n    width,\n    height,\n    horizontalThumbnails,\n  });\n\n  const numberOfThumbnails = minNumOfThumbnails % 2 === 1 ? minNumOfThumbnails : minNumOfThumbnails + 1;\n  const thumbnailsInEachSide = (numberOfThumbnails - 1) / 2;\n\n  const itemRangeStart = (activeIndexWithOffset % galleryItems.length) - thumbnailsInEachSide;\n  const itemRangeEnd = itemRangeStart + numberOfThumbnails;\n\n  const itemToDisplay = withInfiniteScroll\n    ? utils.sliceArrayWithRange(galleryItems, itemRangeStart, itemRangeEnd)\n    : utils.sliceArrayIfAvailable(galleryItems, itemRangeStart, itemRangeEnd);\n\n  const thumbnailsStyle = getThumbnailsStyles({\n    horizontalThumbnails,\n    width,\n    height,\n    thumbnailSizeWithSpacing,\n    activeIndex: activeIndexWithOffset,\n    itemsCount: galleryItems.length,\n  });\n\n  const thumbnailsStyleWithRTLCalc = isRTL\n    ? {\n        ...thumbnailsStyle,\n        left: undefined,\n        top: undefined,\n        right: thumbnailsStyle.left,\n        bottom: thumbnailsStyle.top,\n      }\n    : thumbnailsStyle;\n\n  const thumbnailsMargins = getThumbnailsContainerMargin({\n    thumbnailAlignment,\n    thumbnailsMarginToGallery: options[optionsMap.layoutParams.thumbnails.marginToGallery],\n  });\n  return {\n    items: itemToDisplay.map(({ item, thumbnailItem, idx }, index) => {\n      const offset = index + itemToDisplay[0].idx;\n      return {\n        thumbnailItem: thumbnailItem,\n        item: item,\n        location: getThumbnailLocation({\n          thumbnailAlignment,\n          offset,\n          isRTL,\n          thumbnailSizeWithSpacing,\n        }),\n        idx: idx,\n      };\n    }),\n    thumbnailsMargins,\n    horizontalThumbnails,\n    thumbnailsStyle: thumbnailsStyleWithRTLCalc,\n    activeIndexOffsetMemory,\n  };\n}\n\nfunction getThumbnailsContainerSize({\n  horizontalThumbnails,\n  containerWidth,\n  containerHeight,\n  thumbnailSize,\n}: {\n  horizontalThumbnails: boolean;\n  containerWidth: number;\n  containerHeight: number;\n  thumbnailSize: number;\n}) {\n  if (horizontalThumbnails) {\n    return {\n      width: containerWidth,\n      height: thumbnailSize,\n    };\n  } else {\n    return {\n      width: thumbnailSize,\n      height: containerHeight,\n    };\n  }\n}\n\nfunction getNumberOfThumbnails({\n  width,\n  height,\n  horizontalThumbnails,\n}: {\n  width: number;\n  height: number;\n  horizontalThumbnails: boolean;\n}) {\n  if (horizontalThumbnails) {\n    return Math.ceil(width / height);\n  } else {\n    return Math.ceil(height / width);\n  }\n}\n\nfunction getThumbnailsStyles({\n  horizontalThumbnails,\n  width,\n  height,\n  activeIndex,\n  thumbnailSizeWithSpacing,\n  itemsCount: numberOfItems,\n}: {\n  horizontalThumbnails: boolean;\n  width: number;\n  height: number;\n  activeIndex: number;\n  thumbnailSizeWithSpacing: number;\n  itemsCount: number;\n}): any {\n  const baseStyle = {\n    overflow: 'visible',\n    width,\n    height,\n  };\n  const size = horizontalThumbnails ? width : height;\n  const unit = horizontalThumbnails ? 'left' : 'top';\n  const distance = thumbnailSizeWithSpacing * (activeIndex % numberOfItems);\n  const initialCenter = size / 2 - thumbnailSizeWithSpacing / 2;\n\n  return {\n    ...baseStyle,\n    [unit]: distance < initialCenter ? 0 : initialCenter - distance,\n  };\n}\n\nfunction getThumbnailsContainerMargin({\n  thumbnailAlignment,\n  thumbnailsMarginToGallery,\n}: {\n  thumbnailAlignment: string;\n  thumbnailsMarginToGallery: number;\n}) {\n  const horizontalThumbnails =\n    thumbnailAlignment === GALLERY_CONSTS[optionsMap.layoutParams.thumbnails.alignment].BOTTOM ||\n    thumbnailAlignment === GALLERY_CONSTS[optionsMap.layoutParams.thumbnails.alignment].TOP;\n  if (horizontalThumbnails) {\n    const isTop = thumbnailAlignment === GALLERY_CONSTS[optionsMap.layoutParams.thumbnails.alignment].TOP;\n    return {\n      marginTop: isTop ? 0 : thumbnailsMarginToGallery,\n      marginBottom: isTop ? thumbnailsMarginToGallery : 0,\n    };\n  }\n  const isLeft = thumbnailAlignment === GALLERY_CONSTS[optionsMap.layoutParams.thumbnails.alignment].LEFT;\n  return {\n    marginLeft: isLeft ? 0 : thumbnailsMarginToGallery,\n    marginRight: isLeft ? thumbnailsMarginToGallery : 0,\n  };\n}\n\nfunction getThumbnailLocation({\n  thumbnailAlignment,\n  thumbnailSizeWithSpacing,\n  offset,\n  isRTL,\n}: {\n  thumbnailAlignment: string;\n  thumbnailSizeWithSpacing: number;\n  offset: number;\n  isRTL: boolean;\n}) {\n  const horizontalThumbnails =\n    thumbnailAlignment === GALLERY_CONSTS[optionsMap.layoutParams.thumbnails.alignment].BOTTOM ||\n    thumbnailAlignment === GALLERY_CONSTS[optionsMap.layoutParams.thumbnails.alignment].TOP;\n  const offsetSize = offset * thumbnailSizeWithSpacing;\n  if (horizontalThumbnails) {\n    return {\n      [isRTL ? 'right' : 'left']: offsetSize,\n    };\n  }\n  return {\n    [isRTL ? 'bottom' : 'top']: offsetSize,\n  };\n}\n\nexport default {\n  getThumbnailsData,\n  getThumbnailsContainerSize,\n  getNumberOfThumbnails,\n  getThumbnailsStyles,\n  getThumbnailsContainerMargin,\n  getThumbnailLocation,\n  calculateActiveIndexOffset,\n  clearGalleryItems,\n};\n","export { default as GALLERY_CONSTS } from './common/constants/index.js';\nexport { default as defaultOptions, populateWithDefaultOptions } from './common/defaultOptions.js';\nexport { default as v4DefaultOptions } from './common/v4DefaultOptions.js';\nexport { flatV4DefaultOptions } from './common/v4DefaultOptions.js';\nexport { default as dimensionsHelper } from './core/helpers/dimensionsHelper.js';\nexport { default as processLayouts } from './core/helpers/layoutHelper.js';\nexport { addPresetOptions } from './core/presets/presets.js';\nexport {\n  migrateOptions,\n  addMigratedOptions,\n  extendNestedOptionsToIncludeOldAndNew,\n} from './core/helpers/optionsConverter.js';\nexport { addOldOptions, reverseMigrateOptions } from './core/helpers/optionsBackwardConverter.js';\nexport { assignByString } from './core/helpers/optionsUtils.js';\nexport { mutatingAssignMultipleByStrings } from './core/helpers/optionsUtils.js';\nexport { default as optionsMap } from './core/helpers/optionsMap.js';\nexport { validateTypes } from './common/validateTypes/validateTypes.js';\nexport { flatToNested } from './core/helpers/optionsUtils.js';\nexport { flattenObject } from './core/helpers/optionsUtils.js';\nexport { mergeNestedObjects } from './core/helpers/optionsUtils.js';\nexport { NEW_PRESETS } from './core/presets/presets.js';\nexport { getLayoutName } from './core/presets/presets.js';\nexport { isInPreset } from './core/presets/presets.js';\n\nexport { default as window, windowWrapper } from './common/window/windowWrapper.js';\nexport { default as utils } from './common/utils/index.js';\n\nexport { viewModeWrapper } from './common/window/viewModeWrapper.js';\nexport { isSiteMode } from './common/window/viewModeWrapper.js';\nexport { isEditMode } from './common/window/viewModeWrapper.js';\nexport { isPreviewMode } from './common/window/viewModeWrapper.js';\nexport { isSEOMode } from './common/window/viewModeWrapper.js';\nexport { isDeviceTypeMobile } from './common/window/viewModeWrapper.js';\nexport { isDeviceTypeTablet } from './common/window/viewModeWrapper.js';\nexport { isDeviceTypeDesktop } from './common/window/viewModeWrapper.js';\nexport { isDeviceTypeTouch } from './common/window/viewModeWrapper.js';\n\nexport { default as galleryOptions } from './settings/options/index.js';\nexport { INPUT_TYPES } from './settings/utils/constants.js';\n\nexport { Item, PhotoItem, VideoItem, TextItem } from './common/interfaces/Item.js';\nexport { Container } from './common/interfaces/Container.js';\nexport { RendererContainer } from './common/interfaces/RendererContainer.js';\nexport { EventsListener } from './common/interfaces/EventsListener.js';\nexport { CreateMediaUrl } from './common/interfaces/CreateMediaUrl.js';\nexport { CustomComponents } from './common/interfaces/CustomComponents.js';\nexport { ScrollingElement } from './common/interfaces/ScrollingElement.js';\nexport { Structure } from './common/interfaces/Structure.js';\nexport { GalleryProps, GalleryState } from './common/interfaces/galleryTypes.js';\nexport { Options as NestedOptions } from './common/interfaces/options.js';\nexport { FlattenOptions as Options } from './common/interfaces/flatten.js';\nexport { ThreeDimensionalScene, PlayTrigger } from './common/interfaces/behaviourParams.js';\nexport { Settings } from './common/interfaces/Settings.js';\nexport { GalleryRendererProps } from './common/interfaces/galleryRendererTypes.js';\nexport { VirtualizationSettings } from './common/interfaces/virtualization.js';\nexport { default as thumbnailsLogic } from './core/helpers/thumbnailsLogic.js';\n","import { optionsMap } from 'pro-gallery-lib';\n\nclass Utils {\n  constructor() {\n    this._hash2int = {};\n  }\n\n  stripSlashes(str) {\n    let newStr = '';\n    if (typeof str === 'string') {\n      newStr = str\n        .replace(/\\\\\\//g, '/')\n        .replace(/\\\\'/g, \"'\")\n        .replace(/\\\\\"/g, '\"')\n        .replace(/\\\\0/g, '\\0')\n        .replace(/\\\\\\\\/g, '\\\\');\n    }\n    return newStr;\n  }\n\n  parseStringObject(sObj) {\n    if (typeof sObj !== 'string') {\n      return sObj;\n    }\n\n    const stripedObj = this.stripSlashes(sObj);\n    //eslint-disable-next-line\n    if (typeof sObj === 'string' && (/^[\\],:{}\\s]*$/.test(stripedObj.replace(/\\\\[\"\\\\\\/bfnrtu]/g, '@').replace(/\"[^\"\\\\\\n\\r]*\"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g, ']').replace(/(?:^|:|,)(?:\\s*\\[)+/g, '')))) {\n      //this is a json\n      try {\n        return JSON.parse(stripedObj);\n      } catch (e) {\n        // console.error('Parse object error: Catched ', e);\n      }\n    }\n    return stripedObj;\n  }\n\n  hashToInt(str, min, max) {\n    let int = 0;\n\n    if (typeof str === 'undefined' || str.length === 0) {\n      return int;\n    }\n\n    if (!this._hash2int[str]) {\n      for (let i = 0; i < str.length; i++) {\n        int += str.charCodeAt(i);\n      }\n      this._hash2int[str] = int;\n    }\n\n    if (typeof min === 'undefined' || typeof max === 'undefined') {\n      return this._hash2int[str];\n    } else {\n      return (this._hash2int[str] % (max - min + 1)) + min;\n    }\n  }\n\n  hashToRandomInt(str, min = 0, max = 100000) {\n    if (typeof str === 'undefined' || str.length === 0) {\n      return 0;\n    }\n\n    min = Math.round(min);\n    max = Math.round(max);\n    str += str.length + min + max;\n\n    if (!this._hash2int[str]) {\n      this._hash2int[str] = Math.round(Math.random() * (max - min) + min);\n    }\n    return this._hash2int[str];\n  }\n\n  addDefaultStyleParams(styleParams) {\n    function populateWithDefaultOptions(options) {\n      //This will override only undefined values with default values\n      const mergedOptions = Object.assign({}, defaultLayouterSP, options);\n      Object.keys(mergedOptions).forEach((key) => {\n        if (typeof mergedOptions[key] === 'undefined') {\n          mergedOptions[key] = defaultLayouterSP[key];\n        }\n      });\n      return mergedOptions;\n    }\n    //default styleParams\n    const defaultLayouterSP = {\n      [optionsMap.layoutParams.structure.gallerySpacing]: 0,\n      [optionsMap.layoutParams.groups.repeatingGroupTypes]: [],\n      [optionsMap.layoutParams.crop.enable]: false,\n      [optionsMap.layoutParams.crop.method]: 'FILL',\n      [optionsMap.layoutParams.crop.ratios]: [1],\n      [optionsMap.layoutParams.crop.enableSmartCrop]: false,\n      [optionsMap.layoutParams.structure.itemSpacing]: 10,\n      [optionsMap.layoutParams.structure.scatter.randomScatter]: 0,\n      [optionsMap.layoutParams.structure.scatter.manualScatter]: '',\n      [optionsMap.layoutParams.groups.groupByOrientation]: true,\n      [optionsMap.layoutParams.groups.groupSize]: 3,\n      [optionsMap.layoutParams.groups.allowedGroupTypes]: ['1', '2h', '2v', '3h', '3v', '3t', '3b', '3l', '3r'],\n      [optionsMap.layoutParams.structure.layoutOrientation]: 'VERTICAL',\n      [optionsMap.layoutParams.targetItemSize.minimum]: 120,\n      [optionsMap.layoutParams.structure.scrollDirection]: 'VERTICAL',\n      targetItemSize: 500,\n      [optionsMap.layoutParams.groups.density]: 50,\n      fixedColumns: 0,\n      [optionsMap.layoutParams.structure.columnRatios]: [],\n    };\n\n    return populateWithDefaultOptions(styleParams);\n  }\n\n  convertContainer(container, styleParams) {\n    const convertedContainer = {\n      bounds: {},\n      ...container,\n    };\n    // galleryWidth is a value calculated prior to the layouter. if it exists it is stronger than width. if galleryWidth doesnt exist width(the total container width) is used instead but it then requieres adding margin calculations. Same is true for the height.\n    // this is mostly true for \"galleries\" containing more than one \"gallery\" such as thumbnails where teh thumbnails are also a gallery and both are contained within container.width/height and have their own galleryWidth/Height\n    if (container.width >= 0 && !(container.galleryWidth >= 0)) {\n      convertedContainer.galleryWidth =\n        container.width +\n        ((styleParams[optionsMap.layoutParams.structure.itemSpacing] / 2 || 0) -\n          (styleParams[optionsMap.layoutParams.structure.gallerySpacing] || 0)) *\n          2;\n      delete convertedContainer.width;\n    }\n    if (container.height >= 0 && !(container.galleryHeight >= 0)) {\n      convertedContainer.galleryHeight =\n        container.height +\n        ((styleParams[optionsMap.layoutParams.structure.itemSpacing] / 2 || 0) -\n          (styleParams[optionsMap.layoutParams.structure.gallerySpacing] || 0));\n      delete convertedContainer.height;\n    }\n    if (\n      styleParams.externalInfoHeight >= 0 &&\n      styleParams[optionsMap.layoutParams.structure.scrollDirection] === 'HORIZONTAL'\n    ) {\n      convertedContainer.galleryHeight -= styleParams.externalInfoHeight;\n    }\n\n    return convertedContainer;\n  }\n}\nexport const utils = new Utils();\n","import { optionsMap } from 'pro-gallery-lib';\nimport { utils } from './utils.js';\n\nexport class Item {\n  /* @ngInject */\n  constructor(config) {\n    this.style = {};\n    this.visibility = {};\n\n    config = config || {};\n\n    if (!config.dto) {\n      console.error('Item has no DTO', config);\n      config.dto = {};\n    }\n\n    this.config = config;\n    this.dto = config.dto;\n    this.idx = config.idx;\n    this.inGroupIdx = config.inGroupIdx;\n    this.container = config.container;\n    this.cubeType = 'FILL';\n\n    if (config.styleParams) {\n      const { styleParams } = config;\n      this.cubeType = styleParams[optionsMap.layoutParams.crop.method];\n      this.cubeImages = styleParams[optionsMap.layoutParams.crop.enable];\n      this._cropRatio = styleParams[optionsMap.layoutParams.crop.ratios];\n      this.rotatingCropRatios =\n        styleParams[optionsMap.layoutParams.crop.ratios].length > 1 && styleParams[optionsMap.layoutParams.crop.ratios];\n      this.smartCrop = styleParams[optionsMap.layoutParams.crop.enableSmartCrop];\n      this.cropOnlyFill = styleParams[optionsMap.layoutParams.crop.cropOnlyFill];\n      this.imageMargin = styleParams[optionsMap.layoutParams.structure.itemSpacing];\n      this.gallerySpacing = styleParams[optionsMap.layoutParams.structure.gallerySpacing];\n      this.scatter = styleParams[optionsMap.layoutParams.structure.scatter.randomScatter];\n      this.rotatingScatter = styleParams[optionsMap.layoutParams.structure.scatter.manualScatter];\n      this.smartCrop = styleParams[optionsMap.layoutParams.crop.enableSmartCrop];\n      this.useMaxDimensions =\n        !styleParams[optionsMap.layoutParams.structure.enableStreching] && this.itemType !== 'text';\n      this.cubeFitPosition = styleParams[optionsMap.layoutParams.crop.alignment];\n    }\n\n    this._groupOffset = {\n      top: 0,\n      left: 0,\n      right: 0,\n      bottom: 0,\n    };\n\n    this._group = {};\n    this.calcPinOffset = () => 0;\n\n    this.resize(1);\n  }\n\n  fixMetadataVerticalVideoRatio(metadata) {\n    if (metadata.qualities && metadata.qualities[0]) {\n      //fix incorrect width height for vertical videos\n      const { qualities } = metadata;\n      const { height, width } = qualities[qualities.length - 1];\n      metadata.height = height;\n      metadata.width = width;\n    }\n  }\n\n  resize(scaleOrDimensions) {\n    let scale = 1;\n    if (scaleOrDimensions === false) {\n      return;\n    } else if (scaleOrDimensions > 0) {\n      scale = scaleOrDimensions;\n    } else if (typeof scaleOrDimensions === 'object') {\n      if (scaleOrDimensions.width) {\n        const w = Math.max(1, scaleOrDimensions.width);\n        scale = w / this.width;\n      } else if (scaleOrDimensions.height) {\n        const h = Math.max(1, scaleOrDimensions.height);\n        scale = h / this.height;\n      }\n    }\n\n    this.width *= scale;\n    this.height *= scale;\n\n    this.resized = true;\n\n    return this;\n  }\n\n  pinToCorner(cornerName, pinAfter = false) {\n    const isTop = cornerName.indexOf('top') >= 0;\n    const isLeft = cornerName.indexOf('left') >= 0;\n\n    this.style.top = isTop ? 0 : 'auto';\n    this.style.bottom = isTop ? 'auto' : 0;\n    this.style.left = isLeft ? 0 : 'auto';\n    this.style.right = isLeft ? 'auto' : 0;\n\n    this.pin = cornerName;\n    this.isPinnedTop = isTop;\n    this.isPinnedLeft = isLeft;\n    this.pinAfter = pinAfter;\n    this.pinAfterType = isTop ? 'top' : isLeft ? 'left' : '';\n    this.calcPinOffset = (groupSize, dir) => {\n      if (!this.pinAfter) {\n        return 0;\n      } else if (this.pin === dir) {\n        //this is used only for 3h/3v group types - to calc the offset of the middle item\n        const m = this.imageMargin / 2;\n        // return ((groupSize - 6 * m) * this.pinOffset + 2 * m);\n        if (dir === 'top') {\n          return this.pinAfter.height + 2 * m;\n        } else if (dir === 'left') {\n          return this.pinAfter.width + 2 * m;\n        } else {\n          return 0;\n        }\n        // return ((groupSize - 6 * m) * this.pinOffset + 4 * m);\n      } else {\n        return 0;\n      }\n    };\n  }\n\n  setPosition(position) {\n    this.style.position = position;\n  }\n\n  getPosition(pos) {\n    return parseInt(pos, 10) >= 0 ? pos : 'auto';\n  }\n\n  calcScatter(offset) {\n    const m = this.imageMargin / 2;\n    const g = this.gallerySpacing;\n\n    const spaceLeft = offset.left > 0 ? m : g;\n    const spaceRight = this.container.galleryWidth - offset.right > 2 * m ? m : g;\n    const spaceUp = offset.top > 0 ? m : g;\n    const spaceDown = this.container.galleryHeight - offset.bottom > 2 * m ? m : g;\n\n    if (this.rotatingScatter.length > 0) {\n      try {\n        const scatterArr = this.rotatingScatter.split(',');\n        const [x, y] = scatterArr[this.idx % scatterArr.length]\n          .split('/')\n          .map((dim) => parseInt(dim))\n          .map((dim) => dim / 100);\n        let horizontalShift = x * (x > 0 ? spaceRight : spaceLeft);\n        let verticalShift = y * (y > 0 ? spaceDown : spaceUp);\n        return { x: horizontalShift, y: verticalShift };\n      } catch (e) {\n        console.error('Cannot calculate rotating scatter', e);\n      }\n    } else if (this.scatter > 0) {\n      const minShift = 0.4 * (this.scatter / 100);\n\n      let horizontalShift = utils.hashToRandomInt(this.seed + offset.right + 'x', -spaceLeft, spaceRight);\n\n      horizontalShift *= this.scatter / 100;\n      horizontalShift *= 1 - minShift;\n\n      horizontalShift +=\n        (horizontalShift > 0 ? minShift * spaceRight : minShift * spaceLeft) * Math.sign(horizontalShift);\n\n      horizontalShift = Math.round(horizontalShift);\n\n      let verticalShift = utils.hashToRandomInt(this.seed + offset.right + 'y', -spaceUp, spaceDown);\n\n      verticalShift *= this.scatter / 100;\n      verticalShift *= 1 - minShift;\n\n      verticalShift += (verticalShift > 0 ? minShift * spaceDown : minShift * spaceUp) * Math.sign(verticalShift);\n\n      verticalShift = Math.round(verticalShift);\n\n      return { x: horizontalShift, y: verticalShift };\n    } else {\n      return { x: 0, y: 0 };\n    }\n  }\n\n  get top() {\n    return this.getPosition(this.style.top);\n  }\n\n  get left() {\n    return this.getPosition(this.style.left);\n  }\n\n  get right() {\n    return this.getPosition(this.style.right);\n  }\n\n  get bottom() {\n    return this.getPosition(this.style.bottom);\n  }\n\n  set group(group) {\n    Object.assign(this._group, group);\n  }\n\n  get group() {\n    return this._group;\n  }\n\n  set groupOffset(offset) {\n    Object.assign(this._groupOffset, offset);\n  }\n\n  get offset() {\n    const offset = {\n      top:\n        this._groupOffset.top +\n          (this.isPinnedTop ? this.calcPinOffset(this._group.height, 'top') : this._group.height - this.outerHeight) ||\n        0,\n      left:\n        this._groupOffset.left +\n          (this.isPinnedLeft ? this.calcPinOffset(this._group.width, 'left') : this._group.width - this.outerWidth) ||\n        0,\n    };\n    const { fixTop = 0, fixLeft = 0, fixRight = 0, fixBottom = 0 } = this.dimensions;\n\n    offset.innerTop = fixTop;\n    offset.innerLeft = fixLeft;\n    offset.innerRight = fixRight;\n    offset.innerBottom = fixBottom;\n\n    offset.right = offset.left + this.width;\n    offset.bottom = offset.top + this.height;\n\n    if (this.scatter > 0 || this.rotatingScatter?.length > 0) {\n      const { x, y } = this.calcScatter(offset);\n      offset.left += x;\n      offset.top += y;\n      offset.right = offset.left + this.width;\n      offset.bottom = offset.top + this.height;\n    }\n\n    return offset;\n  }\n\n  get id() {\n    return this.dto.id || this.dto.photoId || this.dto.itemId;\n  }\n\n  set id(id) {\n    this.dto.itemId = this.dto.photoId = this.dto.id = id;\n  }\n\n  get hash() {\n    return this.dto.hash || this.dto.mediaUrl || this.dto.id;\n  }\n\n  get seed() {\n    return this.dto.seed || utils.hashToInt(this.hash);\n  }\n\n  get metadata() {\n    return this.dto.metadata || this.dto.metaData || {};\n  }\n\n  get itemType() {\n    return this.metadata.type || 'image';\n  }\n\n  get maxWidth() {\n    return this.dto.width || this.dto.w;\n  }\n  set maxWidth(w) {\n    this.dto.width = w;\n  }\n\n  get outerWidth() {\n    return this.width + 2 * this.margins;\n  }\n\n  get infoWidth() {\n    return this.Group ? this.Group.infoWidth : 0;\n  }\n\n  get orgWidth() {\n    return this.style.orgWidth || this.dto.width || this.dto.w || 1; //make sure the width / height is not undefined (crashes the gallery)\n  }\n\n  get width() {\n    let width;\n    if (this.cubeImages && this.ratio >= this.cropRatio) {\n      width = this.style.cubedWidth || this.orgHeight * this.cropRatio;\n    } else {\n      width = this.orgWidth;\n    }\n    return Math.max(width, 1);\n  }\n\n  set width(w) {\n    // prettier-ignore\n    this.style.cubedWidth =\n    // prettier-ignore\n      this.style.orgWidth =\n    // prettier-ignore\n      this.style.width =\n    // prettier-ignore\n        Math.max(1, w);\n\n    const { fixLeft = 0, fixRight = 0 } = this.dimensions;\n    this.style.innerWidth = this.style.width - fixLeft - fixRight;\n  }\n\n  get outerHeight() {\n    return this.height + 2 * this.margins;\n  }\n\n  get orgHeight() {\n    return this.style.orgHeight || this.dto.height || this.dto.h || 1; //make sure the width / height is not undefined (creashes the gallery)\n  }\n\n  get height() {\n    let height;\n    if (this.cubeImages && this.ratio < this.cropRatio) {\n      height = this.style.cubedHeight || this.orgWidth / this.cropRatio;\n    } else {\n      height = this.orgHeight;\n    }\n    return Math.max(height, 1);\n  }\n\n  set height(h) {\n    // prettier-ignore\n    this.style.cubedHeight =\n    // prettier-ignore\n      this.style.orgHeight =\n    // prettier-ignore\n      this.style.height =\n    // prettier-ignore\n        Math.max(1, h);\n\n    const { fixTop = 0, fixBottom = 0 } = this.dimensions;\n    this.style.innerHeight = this.style.height - fixBottom - fixTop;\n  }\n\n  get maxHeight() {\n    return this.dto.height || this.dto.h;\n  }\n  set maxHeight(h) {\n    h = this.dto.height;\n  }\n  get infoHeight() {\n    return this.Group ? this.Group.infoHeight : 0;\n  }\n\n  get margins() {\n    return this.imageMargin / 2 || 0;\n  }\n  set margins(m) {\n    this.imageMargin = m;\n  }\n\n  get dimensions() {\n    const isGridFit = this.cubeImages && this.cubeType === 'FIT';\n\n    let targetWidth = this.width;\n    let targetHeight = this.height;\n\n    const setTargetDimensions = (setByWidth, ratio) => {\n      if (setByWidth) {\n        targetWidth = this.useMaxDimensions ? Math.min(this.width, this.maxWidth) : this.width;\n        targetHeight = targetWidth / ratio;\n      } else {\n        targetHeight = this.useMaxDimensions ? Math.min(this.height, this.maxHeight) : this.height;\n        targetWidth = targetHeight * ratio;\n      }\n    };\n\n    const isLandscape = this.ratio >= this.cropRatio; //relative to container size\n    if (isGridFit) {\n      setTargetDimensions(isLandscape, this.ratio);\n    } else if (this.useMaxDimensions && (this.width > this.maxWidth || this.height > this.maxHeight)) {\n      if (this.cubeImages) {\n        setTargetDimensions(!isLandscape, this.cropRatio);\n      } else {\n        setTargetDimensions(!isLandscape, this.ratio);\n      }\n    }\n\n    let fixVals = {\n      fixTop: (this.height - targetHeight) / 2,\n      fixLeft: (this.width - targetWidth) / 2,\n      fixRight: (this.width - targetWidth) / 2,\n      fixBottom: (this.height - targetHeight) / 2,\n    };\n\n    switch (this.cubeFitPosition) {\n      case 'TOP':\n        fixVals.fixTop = 0;\n        fixVals.fixBottom *= 2;\n        break;\n      case 'BOTTOM':\n        fixVals.fixTop *= 2;\n        fixVals.fixBottom = 0;\n        break;\n      case 'LEFT':\n        fixVals.fixLeft = 0;\n        fixVals.fixRight *= 2;\n        break;\n      case 'RIGHT':\n        fixVals.fixLeft *= 2;\n        fixVals.fixRight = 0;\n        break;\n    }\n\n    return fixVals;\n  }\n\n  get cropRatio() {\n    let ratio;\n    if (this.rotatingCropRatio) {\n      ratio = this.rotatingCropRatio;\n    } else if (this.rotatingCropRatios && this.rotatingCropRatios.length > 1) {\n      const cropRatiosArr = this.rotatingCropRatios;\n      ratio = this.rotatingCropRatio = cropRatiosArr[this.idx % cropRatiosArr.length];\n    }\n    if (!ratio && typeof this._cropRatio === 'function') {\n      ratio = this._cropRatio();\n    }\n    if (!ratio && this.cropOnlyFill && this.cubeType === 'FIT') {\n      ratio = this.ratio;\n    }\n\n    if (!ratio) {\n      ratio = (this._cropRatio && this._cropRatio[0]) || this.ratio;\n    }\n\n    if (this.dynamicCropRatios !== null && typeof ratio === 'string') {\n      if (!this.dynamicCropRatios) {\n        const dynamicCropRegex = /^\\d*\\.?\\d*(%|px)\\/\\d*\\.?\\d*(%|px)$/;\n        const match = dynamicCropRegex.exec(ratio);\n        if (match) {\n          this.dynamicCropRatios = ratio.split('/').map((val, idx) => {\n            if (val.indexOf('%') > 0) {\n              return {\n                type: '%',\n                val: parseFloat(val.replace('%', '')) / 100,\n                dim: idx === 0 ? 'galleryWidth' : 'galleryHeight',\n              };\n            } else {\n              return {\n                type: 'px',\n                val: parseInt(val.replace('px', '')),\n              };\n            }\n          });\n        } else {\n          this.dynamicCropRatios = null;\n        }\n      }\n      if (this.dynamicCropRatios) {\n        const dynamicCropRatio = this.dynamicCropRatios.map((r) => {\n          if (r.type === '%') {\n            const dim = this.container[r.dim] + (r.dim === 'galleryHeight' ? this.imageMargin / 2 : 0);\n            const relativeDim = r.val * dim - this.imageMargin;\n            return relativeDim;\n          } else {\n            return r.val;\n          }\n        });\n        ratio = dynamicCropRatio[0] / dynamicCropRatio[1];\n      }\n    }\n\n    ratio = Number(ratio);\n\n    if (this.smartCrop === true) {\n      if (this.isPortrait) {\n        ratio = Math.min(ratio, 1 / ratio);\n      } else {\n        ratio = Math.max(ratio, 1 / ratio);\n      }\n    }\n\n    if (this.cubeType === 'MIN') {\n      ratio = Math.max(ratio, this.orgRatio);\n    } else if (this.cubeType === 'MAX') {\n      ratio = Math.min(ratio, this.orgRatio);\n    }\n\n    return ratio;\n  }\n\n  set cropRatio(ratio) {\n    if (typeof this._cropRatio === 'number') {\n      this._cropRatio = ratio;\n      this.style.cubedHeight = this.style.cubedWidth = 0;\n    }\n  }\n\n  get orientation() {\n    return this.ratio < 0.999 ? 'portrait' : 'landscape'; //make sure that almost square images get the same treatment\n  }\n\n  get isPortrait() {\n    return this.orientation === 'portrait';\n  }\n\n  get isLandscape() {\n    return this.orientation === 'landscape';\n  }\n\n  get ratio() {\n    if (!this.orgRatio) {\n      this.orgRatio = this.orgWidth / this.orgHeight;\n    }\n    return this.orgRatio;\n  }\n\n  set ratio(r) {\n    this.orgRatio = r;\n  }\n\n  get roundedStyle() {\n    return {\n      ...this.style,\n      width: Math.round(this.style.width),\n      height: Math.round(this.style.height),\n    };\n  }\n\n  get scheme() {\n    return {\n      id: this.id,\n      idx: this.idx,\n      inGroupIdx: this.inGroupIdx,\n      dto: this.dto,\n      type: this.type,\n      style: this.style,\n      roundedStyle: this.roundedStyle,\n      width: this.width,\n      maxWidth: this.maxWidth,\n      outerWidth: this.outerWidth,\n      infoWidth: this.infoWidth,\n      margins: this.margins,\n      ratio: this.ratio,\n      dimensions: this.dimensions,\n      cropRatio: this.cropRatio,\n      isCropped: this.cubeImages,\n      cropType: this.cubeType,\n      height: this.height,\n      maxHeight: this.maxHeight,\n      outerHeight: this.outerHeight,\n      infoHeight: this.infoHeight,\n      group: this.group,\n      offset: this.offset,\n      groupOffset: this._groupOffset,\n      orientation: this.orientation,\n      isPortrait: this.isPortrait,\n      isLandscape: this.isLandscape,\n      visibility: this.visibility,\n    };\n  }\n}\n","/* eslint-disable prettier/prettier */\nimport { optionsMap } from 'pro-gallery-lib';\nimport { Item } from './item.js';\n\nconst GROUP_TYPES_BY_RATIOS_V = {\n  lll: '1,2h',\n  llp: '1,3r',\n  lpl: '1,2h',\n  pll: '1,2h,3l',\n  lpp: '1,2h,3r,3h',\n  plp: '1,2h,3l,3r,3h',\n  ppl: '1,2h,3l,3h',\n  ppp: '1,2h,3l,3r,3h',\n};\n\nconst GROUP_TYPES_BY_RATIOS_H = {\n  lll: '1,2v,3t,3b,3v',\n  llp: '1,2v,3t,3v',\n  lpl: '1,2v,3t,3b,3v',\n  pll: '1,2v,3b,3v',\n  lpp: '1,2v,3t',\n  plp: '1,2v',\n  ppl: '1,3b',\n  ppp: '1,2h',\n};\n\nconst GROUP_SIZES_BY_MAX_SIZE = {\n  1: [[1]],\n  2: [[1], [1, 2], [2]],\n  3: [[1], [1, 2], [1, 2, 3], [2, 3], [3]],\n};\n\nexport class Group {\n  constructor(config) {\n    this.idx = config.idx;\n    this.stripIdx = config.stripIdx;\n    this.inStripIdx = config.inStripIdx;\n    this.top = config.top;\n    this.showAllItems = config.showAllItems;\n    this.isLastItems = config.isLastItems;\n    this.dummyItems = [];\n    this.targetItemSize = config.targetItemSize;\n\n    this.items = config.items.map((item) => {\n      item.Group = this;\n      return item;\n    });\n\n    if (config.styleParams) {\n      const { styleParams } = config;\n      this.scrollDirection = styleParams[optionsMap.layoutParams.structure.scrollDirection];\n      this.cubeType = styleParams[optionsMap.layoutParams.crop.method];\n      this.cubeImages = styleParams[optionsMap.layoutParams.crop.enable];\n      this.layoutOrientation = styleParams[optionsMap.layoutParams.structure.layoutOrientation];\n      this.minItemSize = styleParams[optionsMap.layoutParams.targetItemSize.minimum];\n      this.collageDensity = styleParams[optionsMap.layoutParams.groups.density];\n      this.groupTypes = String(styleParams[optionsMap.layoutParams.groups.allowedGroupTypes]);\n      this.repeatingGroupTypes = String(styleParams[optionsMap.layoutParams.groups.repeatingGroupTypes]);\n      this.rotatingCropRatios = styleParams[optionsMap.layoutParams.crop.ratios];\n      this.chooseBestGroup = styleParams[optionsMap.layoutParams.groups.groupByOrientation];\n      this.externalInfoHeight = styleParams.externalInfoHeight;\n      this.externalInfoWidth = styleParams.externalInfoWidth;\n      this.imageMargin = styleParams[optionsMap.layoutParams.structure.itemSpacing];\n      this.groupSize = styleParams[optionsMap.layoutParams.groups.groupSize];\n    }\n\n    this.visible = true;\n    this.rendered = true;\n    this.required = true;\n\n    //prepare the group\n    let forcedGroupSize = this.items.length;\n\n    //todo - check if minItem size is really working\n    while (!this.isWithinMinItemSize && forcedGroupSize > 0) {\n      this.placeItems(forcedGroupSize);\n      this.resize();\n      forcedGroupSize--;\n    }\n  }\n\n  resize() {\n    if (this.layoutOrientation === 'VERTICAL') {\n      this.resizeToWidth(this.targetItemSize);\n    } else {\n      this.resizeToHeight(this.targetItemSize);\n    }\n    this.setLeft(this.left);\n    this.setTop(this.top);\n  }\n\n  safeGetItem(idx) {\n    if (this.items[idx]) {\n      return this.items[idx];\n    } else if (this.dummyItems[idx]) {\n      return this.dummyItems[idx];\n    } else {\n      // dummy created from the last item config\n      const item = new Item({ ...this.items[this.items.length - 1].config });\n\n      // const item = {...(this.items[this.items.length - 1])};\n      // item.id += 'dummy';\n\n      // item.idx given to dummy items starting from the last item\n      // item.config.idx = last item index (all gallery items, not group items)\n      // idx = in group item index\n      // this.items = the group's items\n      item.idx = item.config.idx + idx - (this.items.length - 1);\n      item.type = 'dummy';\n      this.dummyItems[idx] = item;\n      return item;\n    }\n  }\n\n  setCubedHeight(height) {\n    const shouldUseFixedHeight =\n      this.cubeImages &&\n      this.groupSize === 1 &&\n      ['FILL', 'FIT'].includes(this.cubeType) &&\n      this.repeatingGroupTypes.length === 0 &&\n      this.rotatingCropRatios.length < 2;\n    this.cubedHeight = shouldUseFixedHeight ? height : null;\n  }\n\n  round() {\n    //round all sizes to full pixels\n    \n    if (this.isLastGroup && this.scrollDirection === 'VERTICAL') {\n      this.width = this.stripWidth - this.left;\n    } else {\n      this.width = Math.round(this.width);\n    }\n    this.height = Math.round(this.height);\n\n    for (const item of this.items) {\n      item.width = Math.round(item.width);\n      item.height = Math.round(item.height);\n      item.group = {\n        width: this.width,\n        height: this.height,\n      };\n    }\n    const m = this.imageMargin;\n\n    switch (this.type) {\n      default:\n      case '1':\n        this.safeGetItem(0).width = this.width - m;\n        this.safeGetItem(0).height = this.height - m;\n        break;\n      case '2v':\n        this.safeGetItem(0).width = this.safeGetItem(1).width = this.width - m;\n        this.safeGetItem(0).height =\n          this.height - this.safeGetItem(1).height - 2 * m;\n        break;\n      case '2h':\n        this.safeGetItem(0).height = this.safeGetItem(1).height =\n          this.height - m;\n        this.safeGetItem(0).width =\n          this.width - this.safeGetItem(1).width - 2 * m;\n        break;\n      case '3t':\n        this.safeGetItem(0).width = this.width - m;\n        this.safeGetItem(0).height =\n          this.height - this.safeGetItem(1).height - 2 * m;\n        this.safeGetItem(1).width =\n          this.width - this.safeGetItem(2).width - 2 * m;\n        this.safeGetItem(2).height = this.safeGetItem(1).height;\n        break;\n      case '3b':\n        this.safeGetItem(0).width =\n          this.width - this.safeGetItem(1).width - 2 * m;\n        this.safeGetItem(1).height = this.safeGetItem(0).height;\n        this.safeGetItem(2).height =\n          this.height - this.safeGetItem(1).height - 2 * m;\n        this.safeGetItem(2).width = this.width - m;\n        break;\n      case '3l':\n        this.safeGetItem(1).height =\n          this.height - this.safeGetItem(2).height - 2 * m;\n        this.safeGetItem(2).width = this.safeGetItem(1).width;\n        this.safeGetItem(0).width =\n          this.width - this.safeGetItem(1).width - 2 * m;\n        this.safeGetItem(0).height = this.height - m;\n        break;\n      case '3r':\n        this.safeGetItem(0).height =\n          this.height - this.safeGetItem(1).height - 2 * m;\n        this.safeGetItem(1).width = this.safeGetItem(0).width;\n        this.safeGetItem(2).width =\n          this.width - this.safeGetItem(1).width - 2 * m;\n        this.safeGetItem(2).height = this.height - m;\n        break;\n      case '3v':\n        this.safeGetItem(0).width = this.width - m;\n        this.safeGetItem(1).width = this.width - m;\n        this.safeGetItem(2).width = this.width - m;\n        this.safeGetItem(2).height =\n          this.height -\n          this.safeGetItem(0).height -\n          this.safeGetItem(1).height -\n          3 * m;\n        break;\n      case '3h':\n        this.safeGetItem(0).height = this.height - m;\n        this.safeGetItem(1).height = this.height - m;\n        this.safeGetItem(2).height = this.height - m;\n        this.safeGetItem(2).width =\n          this.width -\n          this.safeGetItem(0).width -\n          this.safeGetItem(1).width -\n          3 * m;\n        break;\n    }\n  }\n\n  getGroupType(forcedGroupSize) {\n    //---------| Override with specifically defined rotating group types (ignores everything else)\n    if (this.repeatingGroupTypes) {\n      const groupTypesArr = String(this.repeatingGroupTypes).split(',');\n      return groupTypesArr[this.idx % groupTypesArr.length];\n\n      // } else if (this.isLastItems) {\n      //   return this.groupTypes.split(',')[0] || '1';\n    } else {\n      //layoutOrientation === 'VERTICAL' - is the gallery vertical (pinterest style) or horizontal (flickr style)\n\n      //---------| Find the best groupType for each ratios case\n      //optional types:\n      //  1   => single photo\n      //  2v  => 2 photos one above the other\n      //  2h  => 2 photos one alongside the other\n      //  3b  => 3 photos - one large at the bottom and two small on top, one alongside the other\n      //  3t  => 3 photos - one large on top and two small at the bottom, one alongside the other\n      //  3l  => 3 photos - one large on the left and two small on the right, one above the other\n      //  3r  => 3 photos - one large on the right and two small on the left, one above the other\n\n      //define optional ratios for each type:\n      //  1   => all\n      //  2v  => lll,llp,ppp     (horizontal only)\n      //  2h  => ppp,ppl,lll     (vertical only)\n      //  3b  => lll,lpl,pll,ppl (horizontal only)\n      //  3t  => lll,lpl,llp,lpp (horizontal only)\n      //  3l  => ppp,plp,ppl,pll (vertical only)\n      //  3r  => ppp,plp,lpp,llp (vertical only)\n\n      const isV = this.layoutOrientation === 'VERTICAL';\n      let optionalTypes; //optional groupTypes (separated by ,). 1 is always optional\n\n      if (this.chooseBestGroup) {\n        //map the group to l=landscape and p=portrait\n        //create a string to state the images group's type\n        const ratios = this.items\n          .map((item) => item.orientation.slice(0, 1))\n          .join('');\n        optionalTypes = (\n          isV ? GROUP_TYPES_BY_RATIOS_V : GROUP_TYPES_BY_RATIOS_H\n        )[ratios];\n      } else if (this.items.length === 3 || forcedGroupSize === 3) {\n        optionalTypes = isV ? '1,2h,3l,3r,3h' : '1,2v,3t,3b,3v';\n      }\n\n      if (this.items.length === 2 || forcedGroupSize === 2) {\n        optionalTypes = isV ? '1,2h' : '1,2v';\n      }\n      if (this.items.length === 1 || forcedGroupSize === 1) {\n        optionalTypes = '1';\n      }\n\n      let groupTypes = optionalTypes.length > 0 ? optionalTypes.split(',') : [];\n\n      //---------| Override with specifically defined group types\n      if (this.groupTypes) {\n        // let groupTypesArr = union(['1'], this.groupTypes.split(','));\n        const groupTypesArr = this.groupTypes.split(',');\n\n        if (groupTypesArr.length > 1) {\n          groupTypes = groupTypes.filter(\n            (gt) => groupTypesArr.indexOf(gt) >= 0\n          );\n\n          if (groupTypes.length === 0) {\n            //there is no match between required group types and the optional ones - use\n            groupTypes = ['1'];\n          }\n        } else {\n          groupTypes = groupTypesArr;\n        }\n      }\n\n      //---------| Calc collage density\n      if (this.collageDensity >= 0) {\n        //th new calculation of the collage amount\n\n        const collageDensity = this.collageDensity;\n\n        //use the collage amount to determine the optional groupsize\n        const maxGroupType = parseInt(groupTypes[groupTypes.length - 1]);\n        const optionalGroupSizes = GROUP_SIZES_BY_MAX_SIZE[maxGroupType];\n        const targetGroupSizes =\n          optionalGroupSizes[\n            Math.floor(collageDensity * (optionalGroupSizes.length - 1))\n          ];\n        // seed += ((collageDensity * 1.5) - 0.75) * numOfOptions;\n\n        groupTypes = groupTypes.filter(\n          (groupType) => targetGroupSizes.indexOf(parseInt(groupType)) >= 0\n        );\n\n        if (groupTypes.length === 0) {\n          groupTypes = ['1'];\n        }\n      }\n\n      const seed = this.calculateRandomSeed(groupTypes.length);\n\n      //---------| Final group type to render according to:\n      // - the number of options\n      // - the collageAmount (if 0 - always renders 1 image, if 1 always renders the max amount)\n      // - random seed (determined by the hash)\n      return groupTypes[seed] || '1';\n    }\n  }\n\n  calculateRandomSeed(numOfOptions) {\n    let seed;\n    if (this.layoutOrientation === 'VERTICAL') {\n      //vertical galleries random is not relevant (previous group is in another column)\n      seed = this.items[0].seed % numOfOptions;\n    } else {\n      seed = (this.inStripIdx + this.stripIdx) % numOfOptions;\n    }\n\n    return Math.round(Math.min(Math.max(0, seed), numOfOptions - 1));\n  }\n\n  placeItems(forcedGroupSize) {\n    this.type = this.getGroupType(forcedGroupSize);\n\n    //---------| Render the images by the groupType\n    let items = [];\n    let item;\n    let w = 0;\n    let h = 0;\n\n    switch (this.type) {\n      default:\n      case '1':\n        item = this.safeGetItem(0);\n        item.pinToCorner('top-left');\n        items.push(item);\n        w = item.width;\n        h = item.height;\n\n        break;\n\n      case '2v':\n        item = this.safeGetItem(0);\n        item.pinToCorner('top-left');\n        items.push(item);\n        w = item.width;\n        h = item.height;\n\n        item = this.safeGetItem(1);\n        item.pinToCorner('bottom-left');\n        item.resize(w / item.width);\n        h += item.height;\n        items.push(item);\n\n        break;\n\n      case '2h':\n        item = this.safeGetItem(0);\n        item.pinToCorner('top-left');\n        item.innerOffset = [0, 0];\n        items.push(item);\n        w = item.width;\n        h = item.height;\n\n        item = this.safeGetItem(1);\n        item.pinToCorner('top-right');\n        item.innerOffset = [0, 0];\n        item.resize(h / item.height);\n        w += item.width;\n        items.push(item);\n\n        break;\n\n      case '3b':\n        item = this.safeGetItem(0);\n        item.pinToCorner('top-left');\n        items.push(item);\n        w = item.width;\n        h = item.height;\n\n        item = this.safeGetItem(1);\n        item.pinToCorner('top-right');\n        item.resize(h / item.height);\n        w += item.width;\n        items.push(item);\n\n        item = this.safeGetItem(2);\n        item.pinToCorner('bottom-left');\n        item.resize(w / item.width);\n        h += item.height;\n        items.push(item);\n\n        break;\n\n      case '3t':\n        item = this.safeGetItem(1);\n        item.pinToCorner('bottom-left');\n        items.push(item);\n        w = item.width;\n        h = item.height;\n\n        item = this.safeGetItem(2);\n        item.pinToCorner('bottom-right');\n        item.resize(h / item.height);\n        w += item.width;\n        items.push(item);\n\n        item = this.safeGetItem(0);\n        item.pinToCorner('top-left');\n        item.resize(w / item.width);\n        h += item.height;\n        items = [item].concat(items);\n\n        break;\n\n      case '3r':\n        item = this.safeGetItem(0);\n        item.pinToCorner('top-left');\n        items.push(item);\n        w = item.width;\n        h = item.height;\n\n        item = this.safeGetItem(1);\n        item.pinToCorner('bottom-left');\n        item.resize(w / item.width);\n        h += item.height;\n        items.push(item);\n\n        item = this.safeGetItem(2);\n        item.pinToCorner('top-right');\n        item.resize(h / item.height);\n        w += item.width;\n        items.push(item);\n\n        break;\n\n      case '3l':\n        item = this.safeGetItem(1);\n        item.pinToCorner('top-right');\n        items.push(item);\n        w = item.width;\n        h = item.height;\n\n        item = this.safeGetItem(2);\n        item.pinToCorner('bottom-right');\n        item.resize(w / item.width);\n        h += item.height;\n        items.push(item);\n\n        item = this.safeGetItem(0);\n        item.pinToCorner('top-left');\n        item.resize(h / item.height);\n        w += item.width;\n        items = [item].concat(items);\n\n        break;\n\n      case '3v':\n        item = this.safeGetItem(0);\n        item.pinToCorner('top-left');\n        item.setPosition('relative');\n        items.push(item);\n        w = item.width;\n        h = item.height;\n\n        item = this.safeGetItem(2);\n        item.pinToCorner('bottom-left');\n        item.setPosition('relative');\n        item.resize(w / item.width);\n        h += item.height;\n        items.push(item);\n\n        //the middle item must be last to position it in the middle (h must be full height)\n        item = this.safeGetItem(1);\n        item.setPosition('relative');\n        item.resize(w / item.width);\n        h += item.height;\n        item.pinToCorner('top', items[0]);\n        items = [items[0], item, items[1]];\n\n        break;\n\n      case '3h':\n        item = this.safeGetItem(0);\n        item.pinToCorner('top-left');\n        item.setPosition('relative');\n        items.push(item);\n        w = item.width;\n        h = item.height;\n\n        item = this.safeGetItem(2);\n        item.pinToCorner('top-right');\n        item.setPosition('relative');\n        item.resize(h / item.height);\n        w += item.width;\n        items.push(item);\n\n        //the middle item must be last to position it in the middle (w must be full width)\n        item = this.safeGetItem(1);\n        item.setPosition('relative');\n        item.resize(h / item.height);\n        w += item.width;\n        item.pinToCorner('left', items[0]);\n        items = [items[0], item, items[1]];\n\n        break;\n    }\n\n    this.width = w;\n    this.height = h;\n    this.items = items;\n    this.placed = true;\n  }\n\n  resizeToHeight(height) {\n    this.height = height;\n    this.width = this.getWidthByHeight(height);\n    this.resizeItems();\n  }\n\n  resizeToWidth(width) {\n    this.width = width;\n    this.height = this.getHeightByWidth(width);\n\n    this.resizeItems();\n  }\n\n  resizeItems() {\n    const items =\n      ['3b', '3r'].indexOf(this.type) >= 0\n        ? this.items.slice().reverse()\n        : this.items;\n    items.forEach((item, i) => {\n      item.resize(this.getItemDimensions(items, i));\n      item.group = {\n        top: this.top,\n        left: this.left,\n        width: this.width,\n        height: this.height,\n      };\n      item.groupOffset = {\n        bottom: this.top + this.height,\n        right: this.left + this.width,\n      };\n    });\n  }\n\n  getItemDimensions(items, idx) {\n    const m = this.imageMargin;\n    switch (this.type) {\n      default:\n      case '1':\n      case '2v':\n      case '3v': {\n        const w = this.width - m;\n        return {\n          width: w,\n        };\n      }\n      case '2h':\n      case '3h': {\n        const h = this.height - m;\n        return {\n          height: h,\n        };\n      }\n      case '3t':\n      case '3b':\n        if (idx === 0) {\n          const w = this.width - m;\n          return {\n            width: w,\n          };\n        } else {\n          const h = this.height - items[0].height - 2 * m;\n          return {\n            height: h,\n          };\n        }\n      case '3r':\n      case '3l':\n        if (idx === 0) {\n          const h = this.height - m;\n          return {\n            height: h,\n          };\n        } else {\n          const w = this.width - items[0].width - 2 * m;\n          return {\n            width: w,\n          };\n        }\n    }\n  }\n\n  getHeightByWidth(W) {\n    let Rg = 1;\n    let Rm = 1;\n    const M = this.imageMargin;\n    const R = this.items.map((item) => item.width / item.height);\n    switch (this.type) {\n      // ---------------------------------\n      // GENERAL FORMULA:\n      // ---------------------------------\n      // Rg = Group ratio [layout specific calculation]\n      // M = margin space between items ( = margin around item * 2)\n      // Rm = Margin ratio [layout specific calculation]\n      // ---------------------------------\n      // | H = W * R + M * Rm |\n      // ---------------------------------\n      //    const H = W * Rg + M * (Vi - Hi * Rg);\n\n      default:\n      case '1':\n        Rg = 1 / R[0];\n        Rm = 1 - Rg;\n        break;\n      case '2h':\n        Rg = 1 / (R[0] + R[1]);\n        Rm = 1 - 2 * Rg;\n        break;\n      case '2v':\n        Rg = 1 / R[0] + 1 / R[1];\n        Rm = 2 - Rg;\n        break;\n      case '3h':\n        Rg = 1 / (R[0] + R[1] + R[2]);\n        Rm = 1 - 3 * Rg;\n        break;\n      case '3v':\n        Rg = 1 / R[0] + 1 / R[1] + 1 / R[2];\n        Rm = 3 - Rg;\n        break;\n      case '3t':\n        Rg = 1 / (R[2] + R[1]) + 1 / R[0];\n        Rm = 2 - 2 / (R[2] + R[1]) + 1 / R[0];\n        break;\n      case '3b':\n        Rg = 1 / (R[0] + R[1]) + 1 / R[2];\n        Rm = 2 - 2 / (R[0] + R[1]) + 1 / R[2];\n        break;\n      case '3l':\n        Rg = (R[1] + R[2]) / (R[0] * R[1] + R[1] * R[2] + R[0] * R[2]);\n        Rm = 2 - Rg * (2 + R[0]);\n        break;\n      case '3r':\n        Rg = (R[0] + R[1]) / (R[0] * R[1] + R[1] * R[2] + R[0] * R[2]);\n        Rm = 2 - Rg * (2 + R[2]);\n        break;\n    }\n    const H = W * Rg + M * Rm;\n\n    return H;\n  }\n\n  getWidthByHeight(H) {\n    let Rg = 1;\n    let Rm = 1;\n    const M = this.imageMargin;\n    const R = this.items.map((item) => item.width / item.height);\n    switch (this.type) {\n      // ---------------------------------\n      // GENERAL FORMULA:\n      // ---------------------------------\n      // Rh = Group ratio [layout specific calculation]\n      // M = margin space between items ( = margin around item * 2)\n      // Rm = Margin ratio [layout specific calculation]\n      // ---------------------------------\n      // | W = H * Rg + M * Rm |\n      // ---------------------------------\n      default:\n      case '1':\n        Rg = R[0];\n        Rm = 1 - Rg;\n        break;\n      case '2h':\n        Rg = R[0] + R[1];\n        Rm = 2 - Rg;\n        break;\n      case '2v':\n        Rg = 1 / (1 / R[0] + 1 / R[1]);\n        Rm = 1 - 2 * Rg;\n        break;\n      case '3h':\n        Rg = R[0] + R[1] + R[2];\n        Rm = 3 - Rg;\n        break;\n      case '3v':\n        Rg = 1 / (1 / R[0] + 1 / R[1] + 1 / R[2]);\n        Rm = 1 - 3 * Rg;\n        break;\n      case '3t':\n        Rg = 1 / (1 / (R[2] + R[1]) + 1 / R[0]);\n        Rm = (2 / (R[2] + R[1]) + 1 / R[0] - 2) * Rg;\n        break;\n      case '3b':\n        Rg = 1 / (1 / (R[0] + R[1]) + 1 / R[2]);\n        Rm = (2 / (R[0] + R[1]) + 1 / R[2] - 2) * Rg;\n        break;\n      case '3l':\n        Rg = (R[0] * R[1] + R[1] * R[2] + R[0] * R[2]) / (R[1] + R[2]);\n        Rm = 2 + R[0] - 2 * Rg;\n        break;\n      case '3r':\n        Rg = (R[0] * R[1] + R[1] * R[2] + R[0] * R[2]) / (R[0] + R[1]);\n        Rm = 2 + R[2] - 2 * Rg;\n        break;\n    }\n    const W = H * Rg + M * Rm;\n\n    return W;\n  }\n\n  setTop(top) {\n    this.top = top || 0;\n    for (const item of this.items) {\n      item.groupOffset = {\n        top,\n        bottom: top + this.height,\n      };\n    }\n  }\n\n  setLeft(left) {\n    this.left = left || 0;\n    for (const item of this.items) {\n      item.groupOffset = {\n        left,\n        right: left + this.width,\n      };\n    }\n  }\n\n  get id() {\n    return 'g' + this.idx + '_' + (this.items[0] || {}).id;\n  }\n\n  get ratio() {\n    const w = this.width;\n    const h = this.height;\n    return w / h;\n  }\n\n  get height() {\n    return this.cubedHeight || this._height;\n  }\n\n  set height(h) {\n    this._height = h;\n  }\n\n  get totalHeight() {\n    return this.height + this.infoHeight;\n  }\n\n  get infoHeight() {\n    return this.externalInfoHeight || 0;\n  }\n\n  get infoWidth() {\n    return this.Column ? this.Column.infoWidth : this.externalInfoWidth || 0;\n  }\n\n  get bottom() {\n    return this.top + this.height;\n  }\n\n  get right() {\n    return this.left + this.width;\n  }\n\n  set items(items) {\n    this._items = items;\n  }\n\n  get items() {\n    return this._items;\n  }\n\n  get realItems() {\n    return this._items.filter((item) => item.type !== 'dummy');\n  }\n\n  get isWithinMinItemSize() {\n    if (this.items.length === 0 || !this.placed) {\n      return false;\n    }\n    if (this.items.length === 1) {\n      return true;\n    } else {\n      return this.items.reduce((i, item) => {\n        const isInSize = Math.min(item.width, item.height) >= this.minItemSize;\n        return i && isInSize;\n      }, true);\n    }\n  }\n\n  get scheme() {\n    return {\n      id: this.id,\n      idx: this.idx,\n      stripIdx: this.stripIdx,\n      inStripIdx: this.inStripIdx,\n      isLastGroup: this.isLastGroup,\n      items: this.items.map((item) => item.scheme),\n      type: this.type,\n      width: this.width,\n      height: this.height,\n      infoHeight: this.infoHeight,\n      infoWidth: this.infoWidth,\n      ratio: this.ratio,\n      top: this.top,\n      left: this.left,\n      right: this.right,\n      bottom: this.bottom,\n      visible: this.visible,\n      rendered: this.rendered,\n      required: this.required,\n    };\n  }\n}\n/* eslint-enable prettier/prettier */\n","export class Strip {\n  constructor(config) {\n    this.ratio = 0;\n    this.groups = [];\n    this.width = 0;\n    this.height = 0;\n    this.isFullWidth = true;\n\n    this.idx = config.idx;\n    this.groupsPerStrip = config.groupsPerStrip;\n    this.scrollDirection = config.scrollDirection;\n    this.targetItemSize = config.targetItemSize;\n    this.container = config.container;\n  }\n\n  addGroup(group) {\n    if (this.hasGroups) {\n      this.lastGroup.isLastGroup = false;\n    }\n    this.groups.push(group);\n    group.stripIdx = this.idx;\n    group.Strip = this;\n    this.lastGroup.isLastGroup = true;\n    this.lastGroup.stripWidth = this.height * this.ratio;\n  }\n\n  markAsIncomplete() {\n    //prevent from the last group to be streched\n    this.isFullWidth = false;\n    this.lastGroup.isLastGroup = false;\n  }\n\n  canRemainIncomplete() {\n    if (this.groupsPerStrip > 0) {\n      return false;\n    } else {\n      return this.targetItemSize * 1.5 < this.height;\n    }\n  }\n\n  setWidth(width) {\n    this.width = width;\n    if (this.hasGroups) {\n      this.lastGroup.stripWidth = width;\n    }\n  }\n\n  resizeToHeight(height) {\n    this.height = height;\n    let left = 0;\n    let remainder = 0;\n    for (const group of this.groups) {\n      group.setLeft(left);\n      // group.left = (left);\n      group.width += remainder; //add the remainder from the last group round\n      group.resizeToHeight(height);\n      remainder = group.width;\n      group.round();\n      remainder -= group.width;\n      left += group.width;\n    }\n  }\n\n  isFull(newGroup, isLastImage) {\n    if (!this.hasGroups) {\n      return false;\n    }\n\n    const { groupsPerStrip, scrollDirection, targetItemSize } = this;\n\n    if (groupsPerStrip > 0) {\n      return this.groups.length >= groupsPerStrip;\n    }\n\n    const { galleryWidth } = this.container;\n\n    let isStripSmallEnough;\n    if (scrollDirection === 'HORIZONTAL') {\n      isStripSmallEnough = false; //horizontal layout is one long strip\n    } else {\n      const withNewGroup = galleryWidth / (this.ratio + newGroup.ratio) - targetItemSize; //start a new strip BEFORE adding the current group\n      const withoutNewGroup = galleryWidth / this.ratio - targetItemSize; //start a new strip AFTER adding the current group\n      if (isNaN(withNewGroup) || isNaN(withoutNewGroup)) {\n        isStripSmallEnough = false;\n      } else if (withoutNewGroup < 0) {\n        //the strip is already too small\n        isStripSmallEnough = true;\n      } else if (withNewGroup < 0) {\n        //adding the new group makes is small enough\n        // check if adding the new group makes the strip TOO small\n        //so - without the new group, the strip is larger than the required size - but adding the new group might make it too small\n        isStripSmallEnough = Math.abs(withoutNewGroup) < Math.abs(withNewGroup);\n      } else {\n        isStripSmallEnough = false;\n      }\n\n      if (isStripSmallEnough && isLastImage) {\n        //if it is the last image - prefer adding it to the last strip rather putting it on a new strip\n        isStripSmallEnough = Number(Math.abs(withoutNewGroup)) < Math.abs(withNewGroup);\n      }\n    }\n\n    return isStripSmallEnough;\n  }\n\n  get hasGroups() {\n    return this.groups.length > 0;\n  }\n\n  get lastGroup() {\n    return this.groups[this.groups.length - 1];\n  }\n\n  get scheme() {\n    return {\n      idx: this.idx,\n      groups: this.groups.map((group) => group.scheme),\n      width: this.width,\n      height: this.height,\n      ratio: this.ratio,\n      isFullWidth: this.isFullWidth,\n    };\n  }\n}\n","export class Column {\n  constructor(idx, width, left, cubedHeight, infoWidth) {\n    this.idx = idx;\n    this.groups = [];\n    this.height = 0;\n    this.width = width;\n    this.left = left;\n    this.cubedHeight = cubedHeight; //v5 I think this is not used, not even a possible value to use if its rotating ratios or a function for crop ratio\n    this.infoWidth = infoWidth || 0;\n  }\n\n  addGroup(group) {\n    this.addGroups([group]);\n  }\n\n  addGroups(groups) {\n    this.groups = this.groups.concat(groups);\n    groups.forEach((group) => {\n      group.columnIdx = this.idx;\n      group.Column = this;\n    });\n  }\n\n  get totalWidth() {\n    return this.width + this.infoWidth;\n  }\n\n  get scheme() {\n    return {\n      idx: this.idx,\n      groups: this.groups.map((group) => group.scheme),\n      width: this.width,\n      height: this.height,\n    };\n  }\n}\n","class LayoutsStore {\n  set layout(_layout) {\n    this._layout = { ..._layout };\n  }\n\n  get layout() {\n    return this._layout;\n  }\n}\n\nexport default new LayoutsStore();\n","/* eslint-disable prettier/prettier */\nimport { utils } from './utils.js';\nimport { Item } from './item.js';\nimport { Group } from './group.js';\nimport { Strip } from './strip.js';\nimport { Column } from './column.js';\nimport layoutsStore from './layoutsStore.js';\nimport { optionsMap } from 'pro-gallery-lib';\n\nexport default class Layouter {\n  constructor(layoutParams) {\n    //dummy commit\n    this.ready = false;\n    this.pointer = 0;\n    this.layoutItems = [];\n\n    this.findNeighborItem = this.findNeighborItem.bind(this);\n\n    this.updateParams(layoutParams);\n\n    if (this.createLayoutOnInit !== false) {\n      this.createLayout(layoutParams);\n    }\n  }\n\n  updateParams(layoutParams) {\n    this.srcItems = layoutParams.items;\n    this.styleParams = utils.addDefaultStyleParams(layoutParams.styleParams);\n    this.container = utils.convertContainer(\n      layoutParams.container,\n      this.styleParams\n    );\n\n    const options = layoutParams.options || {};\n    this.useExistingLayout = !!options.useExistingLayout;\n    this.createLayoutOnInit = options.createLayoutOnInit;\n    this.showAllItems = !!options.showAllItems || !!layoutParams.showAllItems;\n    this.useLayoutStore = !!options.useLayoutStore;\n  }\n\n  verifyGalleryState() {\n    if (!this.container.galleryWidth) {\n      this.ready = false;\n      throw new Error(\n        'Layouter: cannot create layout, galleryWidth is undefined or 0'\n      );\n    }\n\n    if (!this.styleParams.targetItemSize) {\n      this.ready = false;\n      throw new Error(\n        'Layouter: cannot create layout, targetItemSize is undefined or 0'\n      );\n    }\n  }\n\n  calcNumberOfColumns(galleryWidth, targetItemSize) {\n    let numOfCols = 1;\n    if (this.styleParams[optionsMap.layoutParams.structure.layoutOrientation] === 'VERTICAL') {\n      if (this.styleParams.fixedColumns > 0) {\n        numOfCols = this.styleParams.fixedColumns;\n      \n      } else {\n        // find the number of columns that makes each column width the closet to the targetItemSize\n        const numOfColsFloat = galleryWidth / targetItemSize;\n        const roundFuncs = [Math.floor, Math.ceil];\n        const diffs = roundFuncs\n          .map((func) => func(numOfColsFloat)) //round to top, round to bottom\n          .map((n) => Math.round(galleryWidth / n)) //width of each col\n          .map((w) => Math.abs(targetItemSize - w)); //diff from targetItemSize\n        const roundFunc = roundFuncs[diffs.indexOf(Math.min(...diffs))]; //choose the round function that has the lowest diff from the targetItemSize\n        numOfCols = roundFunc(numOfColsFloat) || 1;\n      }\n    } else {\n      numOfCols = 1;\n    }\n    return numOfCols;\n  }\n\n  findShortestColumn(columns, groupIdx) {\n    let minCol = columns[0];\n    if (this.styleParams[optionsMap.layoutParams.structure.groupsOrder] === 'LEFT_TO_RIGHT') {\n      minCol = columns[groupIdx % columns.length];\n    } else {\n      let minColH = -1;\n      for (const column of columns) {\n        const colH = column.height;\n        if (colH < minColH || minColH < 0) {\n          minColH = colH;\n          minCol = column;\n        }\n      }\n    }\n    return minCol;\n  }\n\n  saveExistingLayout() {\n    if (this.useLayoutStore) {\n      layoutsStore.layout = {\n        pointer: this.pointer,\n        layoutItems: this.layoutItems,\n        groups: this.groups,\n        strips: this.strips,\n        groupIdx: this.groupIdx,\n        groupItems: this.groupItems,\n        group: this.group,\n        strip: this.strip,\n        targetItemSize: this.targetItemSize,\n        galleryHeight: this.galleryHeight,\n        columns: this.columns,\n      };\n    }\n  }\n\n  prepareLayoutParams() {\n    if (this.useExistingLayout && this.pointer > 0) {\n      if (this.useLayoutStore) {\n        Object.assign(this, layoutsStore.layout);\n      } else {\n        if (this.styleParams[optionsMap.layoutParams.structure.layoutOrientation] === 'VERTICAL') {\n          //---------------------| COLUMNS GALLERY |----------------------//\n          //remove items from the last 3 groups;\n          const lastGroups = this.groups.slice(-3);\n          lastGroups.forEach((group) => {\n            const column = this.columns[group.columnIdx];\n            if (column) {\n              column.height -= group.totalHeight;\n              column.groups.splice(-1, 1);\n            }\n            this.groups.splice(-1, 1);\n            group.realItems.forEach(() => {\n              this.layoutItems.splice(-1, 1);\n              this.pointer--;\n            });\n            this.groupIdx--;\n          });\n        } else {\n          //---------------------| STRIPS GALLERY |----------------------//\n          if (this.scrollDirection === 'HORIZONTAL') {\n            //remove items from the last group:\n            const lastGroups = this.groups.slice(-1);\n            lastGroups.forEach((group) => {\n              const column = this.columns[0];\n              if (column) {\n                column.groups.splice(-1, 1);\n              }\n              const strip = this.strips[0];\n              if (strip) {\n                strip.setWidth(strip.width - group.width);\n                strip.ratio = strip.width / strip.height;\n                strip.groups.splice(-1, 1);\n                this.strip = strip;\n              }\n              this.strips = [];\n\n              this.groups.splice(-1, 1);\n              group.realItems.forEach(() => {\n                this.layoutItems.splice(-1, 1);\n                this.pointer--;\n              });\n              this.groupIdx--;\n            });\n            this.galleryHeight = 0;\n          } else {\n            //remove items from the last 2 strips;\n            const lastStrips = this.strips.slice(-2);\n            if (lastStrips) {\n              lastStrips.forEach((lastStrip) => {\n                if (lastStrip) {\n                  this.strips.splice(-1, 1);\n                  const groups = lastStrip.groups;\n                  groups.forEach((group) => {\n                    this.groups.splice(-1, 1);\n                    group.items.forEach(() => {\n                      this.layoutItems.splice(-1, 1);\n                      this.pointer--;\n                    });\n                    this.groupIdx--;\n                  });\n                }\n              });\n              this.galleryHeight = this.strips.reduce(\n                (totalHeight, strip) => (totalHeight += strip.height),\n                0\n              );\n              // this.strip = this.strips[this.strips.length - 1];\n              this.strip = new Strip({\n                idx: this.strips.length + 1,\n                container: this.container,\n                groupsPerStrip: this.styleParams[optionsMap.layoutParams.groups.numberOfGroupsPerRow],\n                scrollDirection: this.styleParams[optionsMap.layoutParams.structure.scrollDirection],\n                targetItemSize: this.targetItemSize,\n              });\n            }\n          }\n\n          this.groupItems = [];\n        }\n      }\n\n      this.item = {};\n      this.pointer = Math.max(0, this.pointer);\n      this.maxLoops = this.srcItems.length * 10;\n    } else {\n      this.pointer = 0;\n      this.firstGroup = false;\n      this.layoutItems = [];\n      this.groups = [];\n      this.strips = [];\n\n      if (this.styleParams.forceFullHeight) { //v5 TODO check and remove this API\n        this.targetItemSize = Math.sqrt(\n          (this.container.galleryHeight * this.container.galleryWidth) /\n            this.srcItems.length\n        );\n      } else {\n        let gallerySizeVal;\n        if (typeof this.styleParams.targetItemSize === 'function') {\n          gallerySizeVal = this.styleParams.targetItemSize();\n        } else {\n          gallerySizeVal = this.styleParams.targetItemSize;\n        }\n        this.targetItemSize =\n          Math.floor(gallerySizeVal) +\n          Math.ceil(\n            2 *\n              (this.styleParams[optionsMap.layoutParams.structure.itemSpacing] / 2 -\n                this.styleParams[optionsMap.layoutParams.structure.gallerySpacing])\n          );\n      }\n\n      this.galleryWidth = Math.floor(this.container.galleryWidth);\n      this.maxGroupSize = this.getMaxGroupSize();\n\n      this.groupIdx = 0;\n      this.item = {};\n\n      this.groupItems = [];\n      this.group = {};\n      this.bounds = this.container.bounds || {};\n\n      this.strip = new Strip({\n        idx: 1,\n        container: this.container,\n        groupsPerStrip: this.styleParams[optionsMap.layoutParams.groups.numberOfGroupsPerRow],\n        scrollDirection: this.styleParams[optionsMap.layoutParams.structure.scrollDirection],\n        targetItemSize: this.targetItemSize,\n      });\n\n      this.galleryHeight = 0;\n\n      this.numOfCols = this.calcNumberOfColumns(\n        this.galleryWidth,\n        this.targetItemSize\n      );\n      this.targetItemSize = this.styleParams[optionsMap.layoutParams.structure.layoutOrientation] === 'VERTICAL'\n        ? Math.floor(this.galleryWidth / this.numOfCols)\n        : this.targetItemSize;\n\n      const { externalInfoWidth } =\n        this.styleParams;\n        const columnWidths = this.styleParams[optionsMap.layoutParams.structure.columnRatios]\n        const imageMargin = this.styleParams[optionsMap.layoutParams.structure.itemSpacing]\n      const cropRatio = this.styleParams[optionsMap.layoutParams.crop.ratios];\n      let columnWidthsArr = false;\n      if (columnWidths && columnWidths.length > 0) {\n        columnWidthsArr = columnWidths.map(Number);\n        while (columnWidthsArr.length < this.numOfCols) {\n          columnWidthsArr.push(...columnWidthsArr);\n        }\n        columnWidthsArr = columnWidthsArr.slice(0, this.numOfCols);\n        const columnMultiplier =\n          this.galleryWidth / columnWidthsArr.reduce((a, b) => a + b, 0);\n        columnWidthsArr = columnWidthsArr.map((col) =>\n          Math.round((col *= columnMultiplier))\n        );\n      }\n\n      let totalLeft = 0;\n      let remainderWidth = this.galleryWidth;\n      let fixedCubeHeight;\n      this.columns = Array(this.numOfCols)\n        .fill(0)\n        .map((column, idx) => {\n          //round group widths to fit an even number of pixels\n          let colWidth = columnWidthsArr\n            ? columnWidthsArr[idx]\n            : Math.round(remainderWidth / (this.numOfCols - idx));\n          const curLeft = totalLeft;\n          totalLeft += colWidth;\n          remainderWidth -= colWidth;\n          //fix cropRatio of rounded columns\n          const infoWidth =\n            Math.round(\n              externalInfoWidth > 1 // integer represent size in pixels, floats size in percentage\n                ? externalInfoWidth\n                : externalInfoWidth * colWidth\n            ) || 0;\n          colWidth -= infoWidth;\n          fixedCubeHeight =\n            fixedCubeHeight ||\n            (this.targetItemSize - infoWidth - imageMargin) / cropRatio[0] + //v5 check how this works if there are multiple ratios or if this is a function......wtf\n              imageMargin; //calc the cube height only once\n          //add space for info on the side\n          return new Column(idx, colWidth, curLeft, fixedCubeHeight, infoWidth);\n        });\n      this.maxLoops = this.srcItems.length * 10;\n    }\n  }\n\n  createLayout(layoutParams) {\n    if (typeof layoutParams !== 'undefined') {\n      this.updateParams(layoutParams);\n    }\n\n    this.verifyGalleryState();\n\n    this.prepareLayoutParams();\n\n    while (this.srcItems[this.pointer]) {\n      if (this.imagesLeft === 6) {\n        this.saveExistingLayout();\n      }\n\n      this.maxLoops--;\n      if (this.maxLoops <= 0) {\n        console.error('Cannot create layout, maxLoops reached!!!');\n        return false;\n      }\n\n      this.item = new Item({\n        idx: this.pointer,\n        inGroupIdx: this.groupItems.length + 1,\n        scrollTop: this.galleryHeight,\n        dto: this.srcItems[this.pointer],\n        container: this.container,\n        styleParams: this.styleParams,\n      });\n\n      this.layoutItems[this.pointer] = this.item;\n\n      //push the image to a group - until its full\n      this.groupItems.push(this.item);\n      if (\n        this.groupItems.length < this.maxGroupSize &&\n        this.srcItems[this.pointer + 1]\n      ) {\n        this.pointer++;\n        continue;\n      }\n\n      this.group = new Group({\n        idx: this.groupIdx,\n        stripIdx: this.strip.idx,\n        inStripIdx: this.strip.groups.length + 1,\n        top: this.galleryHeight,\n        items: this.groupItems,\n        isLastItems: this.isLastImages,\n        targetItemSize: this.targetItemSize,\n        showAllItems: this.showAllItems,\n        container: this.container,\n        styleParams: this.styleParams,\n      });\n      this.groups[this.groupIdx] = this.group;\n\n      //take back the pointer in case the group was created with less items\n      this.pointer += this.group.realItems.length - this.groupItems.length;\n\n      this.groupIdx++;\n      this.groupItems = [];\n\n      //resize and fit the group in the strip / column\n      if (this.styleParams[optionsMap.layoutParams.structure.layoutOrientation] === 'HORIZONTAL') {\n        //---------------------| STRIPS GALLERY |----------------------//\n\n        if (this.strip.isFull(this.group, this.isLastImage)) {\n          //close the current strip\n          this.strip.resizeToHeight(this.galleryWidth / this.strip.ratio);\n          this.strip.setWidth(this.galleryWidth);\n          this.galleryHeight += this.strip.height;\n          this.columns[0].addGroups(this.strip.groups);\n          this.strips.push(this.strip);\n\n          //open a new strip\n          this.strip = new Strip({\n            idx: this.strip.idx + 1,\n            container: this.container,\n            groupsPerStrip: this.styleParams[optionsMap.layoutParams.groups.numberOfGroupsPerRow],\n            scrollDirection: this.styleParams[optionsMap.layoutParams.structure.scrollDirection],\n            targetItemSize: this.targetItemSize,\n          });\n\n          //reset the group (this group will be rebuilt)\n          this.pointer -= this.group.realItems.length - 1;\n          this.groupIdx--;\n          continue;\n        }\n\n        //add the group to the (current/new) strip\n        this.group.setTop(this.galleryHeight);\n        this.strip.ratio += this.group.ratio;\n        // this.strip.height = Math.min(targetItemSize, (galleryWidth / this.strip.ratio));\n        this.strip.height = this.galleryWidth / this.strip.ratio;\n        this.strip.setWidth(this.galleryWidth);\n        this.strip.addGroup(this.group);\n\n        if (this.isLastImage && this.strip.hasGroups) {\n          if (this.styleParams[optionsMap.layoutParams.structure.scrollDirection] === 'HORIZONTAL') {\n            this.strip.height =\n              this.container.galleryHeight +\n              (this.styleParams[optionsMap.layoutParams.structure.itemSpacing] / 2 -\n                this.styleParams[optionsMap.layoutParams.structure.gallerySpacing]);\n          } else if (this.strip.canRemainIncomplete()) {\n            //stretching the this.strip to the full width will make it too high - so make it as high as the targetItemSize and not stretch\n            this.strip.height = this.targetItemSize;\n            this.strip.markAsIncomplete();\n          }\n\n          this.strip.resizeToHeight(this.strip.height);\n          this.galleryHeight += this.strip.height;\n          this.columns[0].addGroups(this.strip.groups);\n          this.strips.push(this.strip);\n        }\n      } else {\n        //---------------------| COLUMNS GALLERY |----------------------//\n\n        //find the shortest column\n        const minCol = this.findShortestColumn(\n          this.columns,\n          this.groups.length - 1\n        );\n\n        //resize the group and images\n        this.group.setCubedHeight(minCol.cubedHeight); //fix last column's items ratio (caused by stretching it to fill the screen)\n        this.group.resizeToWidth(minCol.width);\n        this.group.round();\n\n        //update the group's position\n        this.group.setTop(minCol.height);\n        this.group.setLeft(minCol.left);\n\n        //add the image to the column\n        minCol.addGroup(this.group);\n\n        //add the image height to the column\n        minCol.height += this.group.totalHeight;\n\n        if (this.galleryHeight < minCol.height) {\n          this.galleryHeight = minCol.height;\n        }\n      }\n\n      if (!this.firstGroup) {\n        this.firstGroup = this.group;\n      }\n\n      this.pointer++;\n    }\n\n    if (this.styleParams.forceFullHeight) { //v5 TODO check and remove this API\n      const stretchRatio = this.container.galleryHeight / this.galleryHeight;\n      this.items.map((item) => {\n        item.cubeImages = true;\n        item.cropRatio = item.ratio = item.width / (item.height * stretchRatio);\n        item.height *= stretchRatio;\n        return item;\n      });\n      this.groups.map((group) => {\n        group.height *= stretchRatio;\n        group.setTop(group.top * stretchRatio);\n        group.resizeItems();\n        return group;\n      });\n    }\n\n    //results\n    this.lastGroup = this.group;\n    this.colWidth = Math.floor(this.galleryWidth / this.numOfCols);\n    this.height =\n      this.galleryHeight -\n      (this.styleParams[optionsMap.layoutParams.structure.itemSpacing] / 2 - this.styleParams[optionsMap.layoutParams.structure.gallerySpacing]) * 2;\n\n    this.width = this.lastGroup.left + this.lastGroup.width;\n\n    this.ready = true;\n\n    return this.scheme;\n  }\n\n  lastVisibleItemIdxInHeight(height) {\n    for (let i = this.items.length - 1; i >= 0; i--) {\n      const item = this.items[i];\n      const isVisible = item.offset.top < height;\n      if (isVisible) {\n        return i;\n      }\n    }\n    return this.items.length - 1;\n  }\n\n  lastVisibleItemIdx() {\n    //the item must be visible and about the show more button\n    return this.lastVisibleItemIdxInHeight(this.container.galleryHeight - 100);\n  }\n\n  findNeighborItem(itemIdx, dir) {\n    const currentItem = this.layoutItems[itemIdx];\n\n    let neighborItem;\n\n    const findClosestItem = (currentItemX, currentItemY, condition) => {\n      let minDistance = null;\n      let minDistanceItem = {};\n\n      let itemY;\n      let itemX;\n      let distance;\n\n      // each(slice(this.layoutItems, itemIdx - 50, itemIdx + 50), (item) => {\n      this.layoutItems.forEach((item) => {\n        itemY = item.offset.top + item.height / 2;\n        itemX = item.offset.left + item.width / 2;\n        distance = Math.sqrt(\n          Math.pow(itemY - currentItemY, 2) + Math.pow(itemX - currentItemX, 2)\n        );\n        if (\n          (minDistance === null || (distance > 0 && distance < minDistance)) &&\n          condition(currentItemX, currentItemY, itemX, itemY)\n        ) {\n          minDistance = distance;\n          minDistanceItem = item;\n        }\n      });\n      return minDistanceItem;\n    };\n\n    switch (dir) {\n      case 'up':\n        neighborItem = findClosestItem(\n          currentItem.offset.left + currentItem.width / 2,\n          currentItem.offset.top,\n          (curX, curY, itmX, itmY) => itmY < curY\n        );\n        break;\n\n      case 'left':\n        neighborItem = findClosestItem(\n          currentItem.offset.left,\n          currentItem.offset.top + currentItem.height / 2,\n          (curX, curY, itmX) => itmX < curX\n        );\n        break;\n\n      case 'down':\n        neighborItem = findClosestItem(\n          currentItem.offset.left + currentItem.width / 2,\n          currentItem.offset.bottom,\n          (curX, curY, itmX, itmY) => itmY > curY\n        );\n        break;\n\n      default:\n      case 'right':\n        neighborItem = findClosestItem(\n          currentItem.offset.right,\n          currentItem.offset.top + currentItem.height / 2,\n          (curX, curY, itmX) => itmX > curX\n        );\n        break;\n    }\n\n    if (neighborItem.idx >= 0) {\n      return neighborItem.idx;\n    } else {\n      console.warn('Could not find offset for itemIdx', itemIdx, dir);\n      return itemIdx; //stay on the same item\n    }\n  }\n\n  getMaxGroupSize() {\n    let _maxGroupSize = 1;\n    try {\n      const groupTypes =\n        typeof this.styleParams[optionsMap.layoutParams.groups.allowedGroupTypes] === 'string' &&\n        this.styleParams[optionsMap.layoutParams.groups.allowedGroupTypes].length > 0\n          ? this.styleParams[optionsMap.layoutParams.groups.allowedGroupTypes].split(',')\n          : this.styleParams[optionsMap.layoutParams.groups.allowedGroupTypes];\n      _maxGroupSize =\n        groupTypes.length > 0\n          ? groupTypes.reduce(\n              (curSize, groupType) => Math.max(curSize, parseInt(groupType)),\n              1\n            )\n          : Number(groupTypes);\n      _maxGroupSize = Math.min(_maxGroupSize, this.styleParams[optionsMap.layoutParams.groups.groupSize]);\n    } catch (e) {\n      console.error(\"couldn't calculate max group size - returing 3 (?)\", e);\n      _maxGroupSize = 3;\n    }\n    return _maxGroupSize;\n  }\n\n  get isLastImage() {\n    return !this.srcItems[this.pointer + 1];\n  }\n\n  get isLastImages() {\n    return !this.srcItems[this.pointer + 1];\n  }\n\n  get imagesLeft() {\n    return this.srcItems.length - this.pointer - 1;\n  }\n\n  get items() {\n    return this.layoutItems;\n  }\n\n  get scheme() {\n    return {\n      items: this.items.map((item) => item.scheme),\n      groups: this.groups.map((group) => group.scheme),\n      strips: this.strips.map((strip) => strip.scheme),\n      columns: this.columns.map((column) => column.scheme),\n      height: this.height,\n      width: this.width,\n    };\n  }\n}\n/* eslint-enable prettier/prettier */\n","import { utils, GALLERY_CONSTS } from 'pro-gallery-lib';\nimport { Item } from '../logic/item.js';\n\nclass GalleryItem {\n  constructor(config) {\n    this.uniqueId = utils.generateUUID();\n    this.isGalleryItem = true;\n    this.createdBy = config.createdBy;\n\n    this.createUrl = this.createUrl.bind(this);\n    this.createMagnifiedUrl = this.createMagnifiedUrl.bind(this);\n    this.createSecondMediaItemIfNeeded(config);\n\n    this.update(config);\n  }\n  createSecondMediaItemIfNeeded(config) {\n    if (config.dto?.secondaryMedia) {\n      this.secondaryMediaItem = new GalleryItem(this.mapItemConfig(config));\n    }\n  }\n\n  updateSecondaryMedia(config) {\n    if (this.secondaryMediaItem) {\n      this.secondaryMediaItem.update(this.mapItemConfig(config));\n    }\n  }\n\n  mapItemConfig(config) {\n    const dto = {};\n    Object.assign(dto, config.dto.secondaryMedia, config.dto.secondaryMedia.metadata);\n    return {\n      ...config,\n      dto,\n      scheme: {\n        ...config.scheme,\n        maxHeight: dto.height,\n        maxWidth: dto.width,\n      },\n    };\n  }\n\n  update(config) {\n    this.createMediaUrl = config.createMediaUrl;\n\n    if (config.dto && config.dto.dto) {\n      config.dto = config.dto.dto; // defence patch due to mis-use of item-core\n      if (utils.isDev()) {\n        console.warn('Item core is created with already existing item core');\n      }\n    }\n    this.dto = { ...config.dto };\n\n    if (config.scheme) {\n      this.processScheme(config.scheme);\n    } else {\n      const dto = {};\n      Object.assign(dto, this.dto, this.metadata);\n      this.processScheme(new Item({ dto }).scheme);\n    }\n\n    if (this.dto) {\n      const itemMetadata = this.dto.metaData || this.dto.metadata;\n      if (itemMetadata) {\n        // metadata is encoded encoded, parsed if needed\n        this.dto.metaData = utils.parseStringObject(itemMetadata);\n      }\n    }\n\n    this.sharpParams = { ...config.sharpParams };\n    if (!this.sharpParams.quality) {\n      this.sharpParams.quality = 90;\n    }\n    if (!this.sharpParams.usm) {\n      this.sharpParams.usm = {};\n    }\n    this.thumbnailSize = config.thumbnailSize || 120;\n\n    this.resetUrls();\n    this.updateSharpParams();\n    this.updateSecondaryMedia(config);\n  }\n\n  processScheme(scheme) {\n    this.id = scheme.id;\n    this.idx = scheme.idx;\n    this.type = scheme.type;\n    this.style = scheme.style;\n    this.width = scheme.width;\n    this.maxWidth = scheme.maxWidth;\n    this.infoWidth = scheme.infoWidth;\n    this.height = scheme.height;\n    this.maxHeight = scheme.maxHeight;\n    this.infoHeight = scheme.infoHeight;\n    this.margins = scheme.margins;\n    this.ratio = scheme.ratio;\n    this.cropRatio = scheme.cropRatio;\n    this.cubeImages = scheme.isCropped;\n    this.cubeType = scheme.cropType || GALLERY_CONSTS.resizeMethods.FILL;\n    this.offset = scheme.offset;\n    this.group = scheme.group;\n    this.orientation = scheme.orientation;\n    this.visibility = scheme.visibility;\n  }\n\n  renderProps(config) {\n    const style = {\n      ratio: this.ratio,\n      bgColor: this.bgColor,\n      maxWidth: this.maxWidth,\n      maxHeight: this.maxHeight,\n      infoWidth: this.infoWidth,\n      infoHeight: this.infoHeight,\n      orientation: this.orientation,\n      ...this.style,\n    };\n    const itemProps = {\n      className: 'image',\n      key: this.key,\n      idx: this.idx,\n      photoId: this.photoId,\n      id: this.id,\n      hash: this.id,\n      html: this.html,\n      type: this.type,\n      isVideoPlaceholder: this.isVideoPlaceholder,\n      videoPlaceholderUrl: this.videoPlaceholderUrl,\n      url: this.url,\n      alt: this.alt,\n      htmlContent: this.htmlContent,\n      directLink: this.directLink,\n      directShareLink: this.directShareLink,\n      linkUrl: this.linkUrl,\n      linkType: this.linkType,\n      linkOpenType: this.linkOpenType,\n      linkData: this.linkData,\n      title: this.title,\n      fileName: this.fileName,\n      description: this.description,\n      createUrl: this.createUrl,\n      createMagnifiedUrl: this.createMagnifiedUrl,\n      cubeImages: this.cubeImages,\n      cubeType: this.cubeType,\n      cropRatio: this.cropRatio,\n      isTransparent: this.isTransparent,\n      offset: this.offset,\n      style,\n      isDemo: this.isDemo,\n      videoUrl: this.videoUrl,\n      isExternalVideo: this.isExternalVideo,\n      hasSecondaryMedia: this.hasSecondaryMedia,\n      scene: this.scene,\n      ...config,\n    };\n    if (this.hasSecondaryMedia) {\n      itemProps.secondaryMediaItem = {\n        ...this.secondaryMediaItem.renderProps(),\n        style: {\n          ...style,\n          bgColor: this.secondaryMediaItem.bgColor,\n        },\n      };\n    }\n    return itemProps;\n  }\n\n  getDataForShop() {\n    const focalPoint = this.focalPoint;\n    const metadata = this.metadata;\n    return {\n      isDemo: metadata.isDemo,\n      orderIndex: this.orderIndex,\n      itemId: this.dto.itemId,\n      itemUrl: this.url,\n      itemHeight: metadata.height,\n      title: metadata.title,\n      itemWidth: metadata.width,\n      itemType: metadata.type || 'image',\n      imageUrl: this.processedMediaUrl(GALLERY_CONSTS.resizeMethods.FIT, 200, 200, null, null).img(),\n      imagePurchasedUrl: this.dto.mediaUrl,\n      fpX: focalPoint[0],\n      fpY: focalPoint[1],\n    };\n  }\n\n  getHighestMp4Resolution(qualities) {\n    const mp4s = qualities.filter((video) => video.formats[0] === 'mp4');\n    const { width, height } = mp4s.sort((a, b) => b.width - a.width)[0];\n    return { width, height };\n  }\n\n  processedMediaUrl(resizeMethod, requiredWidth, requiredHeight, sharpParams, createMultipleUrls = false) {\n    const mediaUrl = (\n      item,\n      url,\n      resizeMethod,\n      requiredWidth,\n      requiredHeight,\n      sharpParams = null,\n      focalPoint = null\n    ) => {\n      let mediaUrl;\n      if (typeof this.createMediaUrl === 'function') {\n        try {\n          const str = String(\n            utils.hashCode(\n              JSON.stringify({\n                url,\n                resizeMethod,\n                requiredWidth,\n                requiredHeight,\n                sharpParams,\n                focalPoint,\n              })\n            )\n          );\n          if (!this._cachedUrls[str]) {\n            this._cachedUrls[str] =\n              this.createMediaUrl({\n                item,\n                originalUrl: url,\n                resizeMethod,\n                requiredWidth,\n                requiredHeight,\n                sharpParams,\n                focalPoint,\n                createMultiple: createMultipleUrls,\n              }) || '';\n          }\n          mediaUrl = this._cachedUrls[str];\n        } catch (e) {\n          console.error(\n            'Cannot create url',\n            e,\n            item,\n            url,\n            resizeMethod,\n            requiredWidth,\n            requiredHeight,\n            sharpParams,\n            focalPoint\n          );\n          mediaUrl = String(url);\n        }\n      } else {\n        mediaUrl = String(url);\n      }\n      return mediaUrl;\n    };\n\n    requiredWidth = Math.ceil(requiredWidth);\n    requiredHeight = Math.ceil(requiredHeight);\n    const thumbSize = 250;\n\n    const focalPoint = resizeMethod === GALLERY_CONSTS.resizeMethods.FILL && this.isCropped && this.focalPoint;\n\n    const urls = {};\n    let imgUrl = this.url;\n\n    urls[GALLERY_CONSTS.urlTypes.THREE_D] = () => this.url;\n    if (this.is3D) {\n      imgUrl = this.poster.url;\n    }\n    if (this.isText) {\n      return Object.assign(\n        {},\n        ...Object.values(GALLERY_CONSTS.urlTypes).map((value) => ({\n          [value]: () => '',\n        }))\n      );\n    } else if (this.isVideo || this.isVideoPlaceholder) {\n      imgUrl = this.poster?.url;\n\n      if (utils.isExternalUrl(this.url)) {\n        urls[GALLERY_CONSTS.urlTypes.VIDEO] = () => this.url;\n      } else {\n        urls[GALLERY_CONSTS.urlTypes.VIDEO] = () =>\n          mediaUrl(this, this.url, GALLERY_CONSTS.resizeMethods.VIDEO, requiredWidth, requiredHeight);\n      }\n    }\n\n    urls[GALLERY_CONSTS.urlTypes.HIGH_RES] = () =>\n      mediaUrl(this, imgUrl, resizeMethod, requiredWidth, requiredHeight, sharpParams, focalPoint);\n\n    urls[GALLERY_CONSTS.urlTypes.LOW_RES] = () => {\n      const resizedRatio = this.resizeWidth / this.resizeHeight;\n      return mediaUrl(\n        this,\n        imgUrl,\n        this.cubeImages && resizeMethod !== GALLERY_CONSTS.resizeMethods.FIT\n          ? GALLERY_CONSTS.resizeMethods.FILL\n          : GALLERY_CONSTS.resizeMethods.FIT,\n        thumbSize * resizedRatio,\n        thumbSize,\n        { ...sharpParams, quality: 30, blur: 30 },\n        focalPoint\n      );\n    };\n    return urls;\n  }\n\n  resetUrls() {\n    const maxWidth = this.maxWidth || this.dto.width || this.metadata.width;\n    const maxHeight = this.maxHeight || this.dto.height || this.metadata.height;\n\n    this.resizeWidth = Math.min(maxWidth, Math.ceil(this.width));\n    this.resizeHeight = Math.min(maxHeight, Math.ceil(this.height));\n\n    this._cachedUrls = {};\n    this.urls = {};\n  }\n\n  createUrl(size, type) {\n    try {\n      return this[size + '_url'][type]();\n    } catch (e) {\n      return '';\n    }\n  }\n\n  get cubeTypeResizeMethod() {\n    return {\n      [GALLERY_CONSTS.layoutParams_crop_method.FIT]: GALLERY_CONSTS.resizeMethods.FIT,\n      [GALLERY_CONSTS.layoutParams_crop_method.FILL]: GALLERY_CONSTS.resizeMethods.FILL,\n    }[this.cubeType];\n  }\n\n  createMagnifiedUrl(scale = 1) {\n    if (!this.urls.magnified_url) {\n      const { innerWidth, innerHeight } = this.style;\n      this.urls.magnified_url = this.processedMediaUrl(\n        this.cubeTypeResizeMethod,\n        innerWidth * scale,\n        innerHeight * scale,\n        this.sharpParams,\n        true\n      );\n    }\n    return this.urls.magnified_url[GALLERY_CONSTS.urlTypes.HIGH_RES]();\n  }\n\n  get resized_url() {\n    if (!this.urls.resized_url) {\n      this.urls.resized_url = this.processedMediaUrl(\n        this.cubeTypeResizeMethod,\n        this.resizeWidth,\n        this.resizeHeight,\n        this.sharpParams\n      );\n    }\n    return this.urls.resized_url;\n  }\n\n  get multi_url() {\n    if (!this.urls.multi_url) {\n      this.urls.multi_url = this.processedMediaUrl(\n        this.cubeTypeResizeMethod,\n        this.resizeWidth,\n        this.resizeHeight,\n        this.sharpParams,\n        true\n      );\n    }\n    return this.urls.multi_url;\n  }\n\n  get scaled_url() {\n    if (!this.urls.scaled_url) {\n      const orgRatio = this.maxWidth / this.maxHeight;\n      const resizedRatio = this.resizeWidth / this.resizeHeight;\n      const isOrgWider = resizedRatio < orgRatio;\n      this.urls.scaled_url = this.processedMediaUrl(\n        GALLERY_CONSTS.resizeMethods.FILL,\n        isOrgWider ? orgRatio * this.resizeHeight : this.resizeWidth,\n        isOrgWider ? this.resizeHeight : this.resizeWidth / orgRatio,\n        this.sharpParams\n      );\n    }\n    return this.urls.scaled_url;\n  }\n\n  get pixel_url() {\n    if (!this.urls.pixel_url) {\n      this.urls.pixel_url = this.processedMediaUrl(GALLERY_CONSTS.resizeMethods.FILL, 1, 1, {\n        quality: 90,\n      });\n    }\n    return this.urls.pixel_url;\n  }\n\n  get thumbnail_url() {\n    if (!this.urls.thumbnail_url) {\n      this.urls.thumbnail_url = this.processedMediaUrl(\n        GALLERY_CONSTS.resizeMethods.FILL,\n        this.thumbnailSize,\n        this.thumbnailSize,\n        { quality: 70 }\n      );\n    }\n    return this.urls.thumbnail_url;\n  }\n\n  get square_url() {\n    if (!this.urls.square_url) {\n      this.urls.square_url = this.processedMediaUrl(GALLERY_CONSTS.resizeMethods.FILL, 100, 100, {\n        quality: 80,\n      });\n    }\n    return this.urls.square_url;\n  }\n\n  get full_url() {\n    if (!this.urls.full_url) {\n      this.urls.full_url = this.processedMediaUrl(\n        GALLERY_CONSTS.resizeMethods.FULL,\n        this.maxWidth,\n        this.maxHeight,\n        this.sharpParams\n      );\n    }\n    return this.urls.full_url;\n  }\n\n  get sample_url() {\n    if (!this.urls.sample_url) {\n      this.urls.sample_url = this.processedMediaUrl(GALLERY_CONSTS.resizeMethods.FIT, 500, 500, this.sharpParams);\n    }\n    return this.urls.sample_url;\n  }\n\n  get preload_url() {\n    if (!this.urls.preload_url) {\n      this.urls.preload_url = this.processed_url;\n    }\n    return this.urls.preload_url;\n  }\n\n  get download_url() {\n    return this.createDownloadUrl(this.full_url);\n  }\n\n  get download_sample_url() {\n    return this.createDownloadUrl(this.sample_url);\n  }\n\n  createDownloadUrl(url) {\n    if (!this.urls.download_url) {\n      this.urls.download_url = url;\n      this.urls.download_url._img = this.urls.download_url.img;\n      this.urls.download_url.img = () => {\n        const downloadUrl = this.urls.download_url._img();\n        return downloadUrl + (downloadUrl.includes('?') ? '&' : '?') + `dn=${this.fileName}`;\n      };\n    }\n    return this.urls.download_url;\n  }\n\n  updateSharpParams() {\n    // override sharpParams with item sharpParams\n    if (this.dto.metaData && this.dto.metaData.sharpParams && this.dto.metaData.sharpParams.L) {\n      const sharpParams = this.dto.metaData.sharpParams.L;\n      if (sharpParams.quality && sharpParams.overrideQuality === true) {\n        this.sharpParams.quality = sharpParams.quality;\n      }\n\n      if (sharpParams.usm && sharpParams.overrideUsm === true) {\n        this.sharpParams.usm = sharpParams.usm;\n      }\n    }\n  }\n\n  get hasSecondaryMedia() {\n    return !!this.secondaryMediaItem;\n  }\n  get itemId() {\n    return this.id;\n  }\n\n  updateId(id) {\n    this.dto.itemId = this.id = id;\n  }\n\n  get metadata() {\n    let md = this.dto.metaData || this.dto.metadata;\n    if (utils.isUndefined(md)) {\n      // console.error('Item with no metadata' + JSON.stringify(this.dto));\n      md = {};\n    }\n    return md;\n  }\n\n  get metaData() {\n    return this.metadata;\n  }\n\n  get bgColor() {\n    let bg;\n    if (this.isText) {\n      bg =\n        this.metadata &&\n        ((this.metadata.textStyle && this.metadata.textStyle.backgroundColor) || this.metadata.backgroundColor);\n    } else {\n      bg = 'none';\n    }\n    return bg;\n  }\n\n  get isCropped() {\n    return this.cubeImages && this.cubeTypeResizeMethod === GALLERY_CONSTS.resizeMethods.FILL;\n  }\n\n  get focalPoint() {\n    return this.metadata.focalPoint || [0.5, 0.5];\n  }\n\n  set focalPoint(value) {\n    this.metadata.focalPoint = value;\n  }\n\n  // ----------------------------------------------------------------//\n\n  get photoId() {\n    return this.id;\n  }\n\n  get key() {\n    if (!this._key) {\n      this._key = (this.dto.key || this.id || this.dto.url || 'no_key_found').replace(/\\W/g, '');\n    }\n    return this._key;\n  }\n\n  get orderIndex() {\n    return this.dto.orderIndex || this.dto.o || 0;\n  }\n\n  set orderIndex(value) {\n    this.dto.orderIndex = value;\n  }\n\n  updateOrderIndex(value) {\n    const ret = this.orderIndex !== value;\n    this.orderIndex = value;\n    return ret;\n  }\n\n  get url() {\n    // todo :change from mediaUrl\n    return this.dto.file_url || this.dto.mediaUrl || this.dto.url || this.dto.src || '';\n  }\n\n  get mediaUrl() {\n    return this.url;\n  }\n\n  get html() {\n    return this.dto.html || this.dto.text || this.metadata.html || this.metadata.text;\n  }\n\n  get lastModified() {\n    return this.metadata.lastModified;\n  }\n\n  get seed() {\n    return utils.hashToInt(this.url);\n  }\n\n  get isImage() {\n    return this.type === 'image';\n  }\n\n  get isImportant() {\n    return !!this.dto.i;\n  }\n\n  get videoUrl() {\n    return this.metadata.videoUrl;\n  }\n\n  get poster() {\n    return (\n      this.metadata.poster ||\n      (this.metadata.customPoster && this.metadata.customPoster) ||\n      (this.metadata.posters ? this.metadata.posters[this.metadata.posters.length - 1] : null)\n    );\n  }\n\n  get scene() {\n    return this.metadata.scene;\n  }\n\n  get qualities() {\n    return this.metadata.qualities;\n  }\n\n  get isExternalVideo() {\n    return this.metadata.isExternal;\n  }\n\n  get isExternal() {\n    return this.metadata.isExternal === true;\n  }\n\n  set type(type) {\n    this._type = type;\n  }\n\n  get type() {\n    switch (this._type || this.dto.type || this.metadata.type || this.dto.media_type) {\n      case 'dummy':\n        return 'dummy';\n      case 'v':\n      case 'video':\n        return 'video';\n      case 'h':\n      case 'html':\n      case 'text':\n        return 'text';\n      case '3d':\n        return '3d';\n      case 'i':\n      case 'image':\n      default:\n        return 'image';\n    }\n  }\n\n  get isVideoPlaceholder() {\n    return !!(this.dto.isVideoPlaceholder || this.metadata.isVideoPlaceholder || this.dto.media_isVideoPlaceholder);\n  }\n\n  get videoPlaceholderUrl() {\n    return this.dto.videoPlaceholderUrl || this.metadata.videoPlaceholderUrl || this.dto.media_videoPlaceholderUrl;\n  }\n\n  get htmlContent() {\n    return this.html?.replace(/<[^<>]*>/g, '').trim();\n  }\n\n  get alt() {\n    return (utils.isMeaningfulString(this.metadata.alt) && this.metadata.alt) || '';\n  }\n\n  set alt(value) {\n    this.metadata.alt = value;\n  }\n\n  get title() {\n    return this.metadata.title || '';\n  }\n\n  set title(value) {\n    this.metadata.title = value;\n  }\n\n  get fileName() {\n    return this.metadata.fileName || '';\n  }\n\n  set fileName(value) {\n    this.metadata.fileName = value;\n  }\n\n  get description() {\n    return this.metadata.description || '';\n    // if (!this.metadata.isDemo) {\n    //   return this.metadata.description || '';\n    // }\n    // return this.getTranslatedValue(this.metadata.description);\n  }\n\n  set description(value) {\n    this.metadata.description = value;\n  }\n\n  get exif() {\n    return this.metadata.exif || '';\n  }\n\n  get hasLink() {\n    switch (this.linkType) {\n      case 'wix':\n        return !!this.linkData.type;\n      default:\n        return !!this.linkUrl;\n    }\n  }\n\n  get link() {\n    return this.metadata.link || {};\n  }\n\n  get linkData() {\n    if (this.metadata.link && this.metadata.link.data) {\n      return this.metadata.link.data;\n    } else if (this.isWixUrl) {\n      return {\n        type: 'web',\n        url: this.linkUrl,\n      };\n    } else {\n      return {};\n    }\n  }\n\n  set linkData(value) {\n    if (!this.metadata.link) {\n      this.metadata.link = {};\n    }\n    this.metadata.link.data = value;\n  }\n\n  get linkType() {\n    if (this.metadata.link && !utils.isUndefined(this.metadata.link.type)) {\n      return this.metadata.link.type;\n    } else if (this.linkUrl) {\n      return 'web';\n    } else {\n      return 'none';\n    }\n  }\n\n  set linkType(value) {\n    if (!this.metadata.link) {\n      this.metadata.link = {};\n    }\n\n    // reset metadata.link when 'none' is selected - that's the way wix galleries work\n    this.metadata.link = {\n      type: value,\n      url: undefined,\n      text: undefined,\n      title: undefined,\n      target: '_blank',\n    };\n  }\n\n  get defaultLinkText() {\n    const linkData = this.linkData;\n\n    switch (this.linkType) {\n      case 'wix':\n        if (linkData) {\n          switch (linkData.type) {\n            case 'PageLink':\n              return `Go to Page ${linkData.pageName}`;\n            case 'AnchorLink':\n              return `Scroll to ${linkData.anchorName}`;\n            case 'ExternalLink':\n              return `${linkData.url}`;\n            case 'EmailLink':\n              return `Email ${linkData.recipient}`;\n            case 'PhoneLink':\n              return `Call ${linkData.phoneNumber}`;\n            case 'DocumentLink':\n              return `Open ${linkData.name}`;\n            default:\n              return 'Go to Link';\n          }\n        } else {\n          return 'Go to Link';\n        }\n      case 'web':\n        return this.linkTitleFromUrl || this.linkUrl;\n      case 'page':\n        return this.linkTitle;\n      default:\n        return '';\n    }\n  }\n\n  get defaultLinkValue() {\n    const linkData = this.linkData;\n\n    switch (this.linkType) {\n      case 'wix':\n        if (linkData) {\n          switch (linkData.type) {\n            case 'PageLink':\n              if (linkData.pageName) {\n                return `PAGE - ${linkData.pageName}`;\n              } else {\n                return 'PAGE';\n              }\n            case 'AnchorLink':\n              return `ANCHOR - ${linkData.anchorName}`;\n            case 'ExternalLink':\n              return `LINK - ${linkData.url}`;\n            case 'EmailLink':\n              return `EMAIL - ${linkData.recipient}`;\n            case 'PhoneLink':\n              return `PHONE - ${linkData.phoneNumber}`;\n            case 'DocumentLink':\n              return `DOCUMENT - ${linkData.name}`;\n            default:\n              return 'Add a Link';\n          }\n        } else {\n          return 'Add a Link';\n        }\n      case 'web':\n        return this.linkUrl;\n      case 'page':\n        return this.linkTitle;\n      default:\n        return '';\n    }\n  }\n\n  get linkText() {\n    return (this.metadata.link && this.metadata.link.text) || this.defaultLinkText;\n  }\n\n  set linkText(value) {\n    if (!this.metadata.link) {\n      this.metadata.link = {};\n    }\n    this.metadata.link.text = value;\n  }\n\n  get linkTitle() {\n    return this.metadata.link && this.metadata.link.title;\n  }\n\n  set linkTitle(value) {\n    if (!this.metadata.link) {\n      this.metadata.link = {};\n    }\n    this.metadata.link.title = value;\n  }\n\n  get linkUrl() {\n    return this.metadata.link && this.metadata.link.url;\n  }\n\n  set linkUrl(value) {\n    if (!this.metadata.link) {\n      this.metadata.link = {};\n    }\n    this.metadata.link.url = value;\n  }\n\n  get isWixUrl() {\n    return this.linkUrl && this.linkUrl.indexOf('wix') === 0;\n  }\n\n  get linkTitleFromUrl() {\n    const regex = /[^/]*\\.\\w+$/g;\n    const regexRes = regex.exec(this.linkUrl);\n    const match = regexRes && regexRes[0];\n    return match && match.split('.')[0];\n  }\n\n  get unprotectedLinkOpenType() {\n    return utils.get(this, 'metadata.link.target');\n  }\n\n  get linkOpenType() {\n    if (this.metadata.link && !utils.isUndefined(this.metadata.link.target)) {\n      return this.unprotectedLinkOpenType;\n    } else if (this.metadata.link && !utils.isUndefined(this.metadata.link.targetBlank)) {\n      return this.metadata.link.targetBlank ? '_blank' : '_top';\n    } else {\n      return '_blank';\n    }\n  }\n\n  set linkOpenType(value) {\n    if (!this.metadata.link) {\n      this.metadata.link = {};\n    }\n    this.metadata.link.target = value;\n  }\n\n  get initialLinkObject() {\n    return {\n      type: 'none',\n      url: undefined,\n      text: undefined,\n      title: undefined,\n      target: '_blank',\n    };\n  }\n\n  get isDemo() {\n    return (\n      this.metadata.isDemo ||\n      this.dto.isDemo ||\n      this.metadata.sourceName === 'public' ||\n      (this.metadata.tags && Array.isArray(this.metadata.tags) && this.metadata.tags.indexOf('_paid') >= 0)\n    );\n  }\n\n  set isDemo(val) {\n    this.metadata.isDemo = val;\n  }\n\n  get isText() {\n    return this.type === 'text';\n  }\n\n  get isVideo() {\n    return this.type === 'video';\n  }\n\n  get is3D() {\n    return this.type === '3d';\n  }\n\n  get isVisible() {\n    return true;\n  }\n\n  get isRendered() {\n    return true;\n  }\n\n  get isDimensionless() {\n    return !(this.maxWidth > 1 || this.maxHeight > 1);\n  }\n\n  get isTransparent() {\n    return this.url && (this.url.indexOf('.png') > 0 || this.url.indexOf('.gif') > 0);\n  }\n\n  get webLink() {\n    if (this.linkUrl?.length > 0 && this.linkType === 'web') {\n      return { url: this.linkUrl, target: this.linkOpenType };\n    } else {\n      return {};\n    }\n  }\n\n  get directLink() {\n    return this.dto.directLink || this.webLink || {};\n  }\n  get directShareLink() {\n    return this.dto.directShareLink || '';\n  }\n}\n\nexport default GalleryItem;\n","import { Group } from '../logic/group.js';\nimport { utils } from 'pro-gallery-lib';\n\nclass GalleryGroup {\n  constructor(config) {\n    this.uniqueId = utils.generateUUID();\n    this.isGalleryGroup = true;\n\n    if (config.dto && config.dto.dto) {\n      config.dto = config.dto.dto; //defence patch due to mis-use of item-core\n      if (utils.isDev()) {\n        console.warn('Item core is created with already existing item core');\n      }\n    }\n    this.dto = Object.assign({}, config.dto);\n\n    if (config.scheme) {\n      this.processScheme(config.scheme);\n    } else {\n      this.processScheme(new Group({ dto: config.dto }).scheme);\n    }\n\n    if (config.items) {\n      this.items = config.items;\n    } else {\n      console.warn('Pro Gallery created Gallery Group without items', config);\n    }\n  }\n\n  processScheme(scheme) {\n    this.id = scheme.id;\n    this.idx = scheme.idx;\n    this.width = scheme.width;\n    this.height = scheme.height;\n    this.totalHeight = scheme.totalHeight;\n    this.ratio = scheme.ratio;\n    this.top = scheme.top;\n    this.left = scheme.left;\n    this.right = scheme.right;\n    this.bottom = scheme.bottom;\n    this.visible = scheme.visible;\n    this.rendered = scheme.rendered;\n    this.required = scheme.required;\n  }\n\n  renderProps(galleryConfig) {\n    return {\n      className: 'group',\n      id: this.id,\n      idx: this.idx,\n      key: this.key,\n      type: this.type,\n      top: this.top,\n      left: this.left,\n      right: this.right,\n      bottom: this.bottom,\n      width: this.width,\n      height: this.height,\n      totalHeight: this.totalHeight,\n      items: this.items,\n      visible: this.visible,\n      rendered: this.rendered,\n      required: this.required,\n      galleryConfig,\n    };\n  }\n\n  get key() {\n    return 'group_' + this.id;\n  }\n}\n\nexport default GalleryGroup;\n","import GalleryItem from './galleryItem.js';\nimport GalleryGroup from './galleryGroup.js';\nimport { utils } from 'pro-gallery-lib';\n\nexport class ItemsHelper {\n  static convertDtoToLayoutItem(dto) {\n    const isLayoutItem = !!(dto.id && dto.width > 0 && dto.height > 0);\n    if (isLayoutItem) {\n      return dto;\n    } else {\n      const dtoMetadata = dto.metadata || dto.metaData;\n      const metadata = typeof dtoMetadata === 'object' ? dtoMetadata : utils.parseStringObject(dtoMetadata) || {};\n      return {\n        id: dto.itemId || dto.photoId,\n        width: metadata.width,\n        height: metadata.height,\n        ...dto,\n      };\n    }\n  }\n\n  static convertToGalleryItems(galleryStructure, itemConfig = {}, existingItems = []) {\n    galleryStructure.galleryItems = [];\n    for (let c = 0; c < galleryStructure.columns.length; c++) {\n      const column = galleryStructure.columns[c];\n      column.galleryGroups = [];\n      const groups = column.groups || column;\n      for (let g = 0; g < groups.length; g++) {\n        const group = groups[g];\n        const groupItems = [];\n        for (let i = 0; i < group.items.length; i++) {\n          const item = group.items[i];\n          const _itemConfig = {\n            scheme: item,\n            dto: item.dto,\n            ...itemConfig,\n          };\n          const existingItem = existingItems[item.idx];\n          let newItem;\n          if (existingItem && existingItem.id && existingItem.id === item.id) {\n            newItem = existingItem;\n            newItem.update(_itemConfig);\n          } else {\n            newItem = new GalleryItem(_itemConfig);\n          }\n          groupItems[i] = newItem;\n          galleryStructure.galleryItems[item.idx] = groupItems[i];\n        }\n        column.galleryGroups[g] = new GalleryGroup({\n          scheme: group,\n          dto: group.dto,\n          items: groupItems,\n        });\n      }\n    }\n\n    return galleryStructure;\n  }\n\n  static convertExistingStructureToGalleryItems(existingStructure, galleryStructure, itemConfig = {}) {\n    // console.log('convertToGalleryItems', existingStructure.galleryItems);\n    // console.count('convertToGalleryItems');\n    if (utils.isVerbose()) {\n      console.time('convertToGalleryItems');\n    }\n    if (!existingStructure.galleryItems) {\n      existingStructure.galleryItems = [];\n    }\n    // remove last group so it will be rebuilt in case of dummy item\n    const lastColumn = existingStructure.columns.slice(-1)[0];\n    const lastGroup = lastColumn.galleryGroups.pop();\n    lastGroup && existingStructure.galleryItems.splice(-lastGroup.items.length);\n\n    for (let c = 0; c < galleryStructure.columns.length; c++) {\n      const column = galleryStructure.columns[c];\n      const existingColumn = existingStructure.columns[c] || column;\n      if (!existingColumn.galleryGroups) {\n        existingColumn.galleryGroups = [];\n      }\n      const groups = column.groups || column;\n      for (let g = 0; g < groups.length; g++) {\n        const group = groups[g];\n        const groupItems = [];\n        for (let i = 0; i < group.items.length; i++) {\n          const item = group.items[i];\n          if (!existingStructure.galleryItems[item.idx]) {\n            // console.count(`convertToGalleryItems - item [${item.idx}]`);\n            groupItems[i] = new GalleryItem(\n              Object.assign(\n                {\n                  scheme: item,\n                  dto: item.dto,\n                },\n                itemConfig\n              )\n            );\n            existingStructure.galleryItems[item.idx] = groupItems[i];\n          } else {\n            existingStructure.galleryItems[item.idx].processScheme(item);\n          }\n        }\n        if (!existingColumn.galleryGroups[g]) {\n          // console.count(`convertToGalleryItems - group [${g}]`);\n          existingColumn.galleryGroups[g] = new GalleryGroup({\n            scheme: group,\n            dto: group.dto,\n            items: groupItems,\n          });\n        } else {\n          existingColumn.galleryGroups[g].processScheme(group);\n        }\n      }\n      column.galleryGroups = existingColumn.galleryGroups;\n    }\n    galleryStructure.galleryItems = existingStructure.galleryItems;\n    if (utils.isVerbose()) {\n      console.timeEnd('convertToGalleryItems');\n    }\n    return galleryStructure;\n  }\n}\n","export { default as Layouter } from './logic/layouter.js';\nexport { Item } from './logic/item.js';\nexport { Group } from './logic/group.js';\nexport { default as GalleryItem } from './classes/galleryItem.js';\nexport { ItemsHelper } from './classes/itemsHelper.js';\nexport { default as createLayout } from './logic/create-layout.js';\n","import { Layouter, ItemsHelper } from 'pro-layouts';\nimport { populateWithDefaultOptions, addPresetOptions, dimensionsHelper, processLayouts, utils } from 'pro-gallery-lib';\n\nclass Blueprints {\n  createBlueprint({ params, lastParams, existingBlueprint, blueprintManagerId, isUsingCustomInfoElements }) {\n    // cacheBlocker\n    // if (this.cache[params]) return this.cache[params];\n\n    this.reasons = {\n      items: '',\n      itemsAdded: '',\n      options: '',\n      container: '',\n    };\n\n    let changedParams = {};\n    try {\n      const { container: newContainerParams, items: newItemsParams, options: newOptions } = params;\n      const { container: oldContainerParams, items: oldItemsParams, options: oldOptions } = lastParams;\n      // getItems,options and dimesions if not supplied in params;\n\n      const { formattedItems, changed: itemsChanged } = this.formatItemsIfNeeded(newItemsParams, oldItemsParams);\n      const { formattedOptions, changed: optionsChanged } = this.formatOptionsIfNeeded(\n        newOptions,\n        oldOptions,\n        isUsingCustomInfoElements\n      );\n      const { formattedContainer, changed: containerChanged } = this.formatContainerIfNeeded(\n        newContainerParams,\n        oldContainerParams,\n        oldOptions,\n        formattedOptions || existingBlueprint.options,\n        optionsChanged\n      );\n\n      const changed = itemsChanged || optionsChanged || containerChanged;\n      changedParams = { itemsChanged, optionsChanged, containerChanged };\n\n      if (changed || !existingBlueprint) {\n        if (!existingBlueprint) {\n          existingBlueprint = {};\n        }\n\n        const structure = this.createStructure(\n          {\n            formattedContainer: formattedContainer || existingBlueprint.container,\n            formattedItems: formattedItems || existingBlueprint.items,\n            formattedOptions: formattedOptions || existingBlueprint.options,\n          },\n          changed\n        );\n\n        // assign changed values w/o replacing the original object;\n        if (formattedOptions) {\n          existingBlueprint.options = formattedOptions;\n        }\n        if (formattedItems) {\n          existingBlueprint.items = formattedItems;\n        }\n        if (formattedContainer) {\n          existingBlueprint.container = formattedContainer;\n        }\n        existingBlueprint.structure = structure;\n\n        // if its an infinite gallery - let the container loose\n        const isInfinite = utils.isHeightSetByGallery(existingBlueprint.options);\n        if (isInfinite) {\n          existingBlueprint.container.height = existingBlueprint.container.galleryHeight = structure.height;\n        }\n      }\n    } catch (error) {\n      console.error('Could not create blueprint, error:', error);\n    }\n\n    const reasons = Object.entries(this.reasons)\n      .reduce((reasons, [param, reason]) => [...reasons, `${param}: ${reason}`], [])\n      .join(', ');\n\n    // return the existing or the modified existing object\n    return {\n      blueprint: existingBlueprint,\n      changedParams,\n      blueprintManagerId,\n      reasons,\n    };\n  }\n\n  // ------------------ Raw data to Formated data (if needed) ---------------------------- //\n\n  formatItemsIfNeeded(items, lastItems) {\n    const itemsWereAdded = (newItemsParams, oldItemsParams) => {\n      if (newItemsParams === oldItemsParams) {\n        this.reasons.itemsAdded = 'items are the same object.';\n        return false; // it is the exact same object\n      }\n      if (!newItemsParams) {\n        this.reasons.itemsAdded = 'new items do not exist.';\n        return false; // new items do not exist (use old items)\n      }\n      if (!oldItemsParams || (oldItemsParams && oldItemsParams.length === 0)) {\n        this.reasons.itemsAdded = 'old items do not exist.';\n        return false; // old items do not exist (it is not items addition)\n      }\n      if (oldItemsParams.length >= newItemsParams.length) {\n        this.reasons.itemsAdded = 'more old items than new items.';\n        return false; // more old items than new items\n      }\n      const idsNotChanged = oldItemsParams.reduce((is, _item, idx) => {\n        // check that all the existing items exist in the new array\n        return is && _item.id === newItemsParams[idx].itemId;\n      }, true);\n\n      if (!idsNotChanged) {\n        this.reasons.itemsAdded = 'items ids were changed. ';\n      }\n      return idsNotChanged;\n    };\n\n    const itemsHaveChanged = (newItemsParams, oldItemsParams) => {\n      if (newItemsParams === oldItemsParams) {\n        this.reasons.items = 'items are the same object.';\n        return false; // it is the exact same object\n      }\n      if (!newItemsParams) {\n        this.reasons.items = 'new items do not exist.';\n        return false; // new items do not exist (use old items)\n      }\n      if (!oldItemsParams || (oldItemsParams && oldItemsParams.length === 0)) {\n        this.reasons.items = 'old items do not exist.';\n        return true; // old items do not exist\n      }\n      if (oldItemsParams.length !== newItemsParams.length) {\n        this.reasons.items = 'more new items than old items (or vice versa).';\n        return true; // more new items than old items (or vice versa)\n      }\n      return newItemsParams.some((newItem, idx) => {\n        // check that all the items are identical\n        const existingItem = oldItemsParams[idx];\n        try {\n          const itemsChanged =\n            !newItem ||\n            !existingItem ||\n            newItem.itemId !== existingItem.itemId ||\n            newItem.mediaUrl !== existingItem.mediaUrl ||\n            newItem.measured !== existingItem.measured ||\n            (newItem.metaData &&\n              existingItem.metaData &&\n              (newItem.metaData.type !== existingItem.metaData.type ||\n                newItem.metaData.title !== existingItem.metaData.title ||\n                newItem.metaData.description !== existingItem.metaData.description)) ||\n            (newItem.metaData &&\n              newItem.metaData.type === 'text' &&\n              existingItem.metaData &&\n              existingItem.metaData.type === 'text' &&\n              (newItem.metaData.width !== existingItem.metaData.width ||\n                newItem.metaData.height !== existingItem.metaData.height ||\n                newItem.metaData.html !== existingItem.metaData.html ||\n                newItem.metaData.textStyle !== existingItem.metaData.textStyle ||\n                newItem.metaData.editorHtml !== existingItem.metaData.editorHtml));\n          if (itemsChanged) {\n            this.reasons.items = `items #${idx} id was changed.`;\n          }\n          return itemsChanged;\n        } catch (e) {\n          this.reasons.items = 'an error occured';\n          return true;\n        }\n      }, false);\n    };\n\n    const oldItemsParams = lastItems;\n    let changed = false;\n    let formattedItems;\n    if (itemsWereAdded(items, oldItemsParams)) {\n      formattedItems = oldItemsParams.concat(\n        items.slice(oldItemsParams.length).map((item) => {\n          return ItemsHelper.convertDtoToLayoutItem(item);\n        })\n      );\n      this.gettingMoreItems = false; // probably finished getting more items       //TODO - what is this and how we keep it alive if needed?\n      changed = true;\n    } else if (itemsHaveChanged(items, oldItemsParams)) {\n      formattedItems = items.map((item) => Object.assign(ItemsHelper.convertDtoToLayoutItem(item)));\n      this.gettingMoreItems = false; // probably finished getting more items\n      changed = true;\n    }\n    return { formattedItems, changed };\n  }\n\n  formatOptionsIfNeeded(options, lastOptions, isUsingCustomInfoElements) {\n    const optionsHaveChanged = (newOptions, oldOptions) => {\n      if (!newOptions) {\n        this.reasons.options = 'no new options.';\n        return false; // no new options - use old options\n      }\n      if (!oldOptions) {\n        this.reasons.options = 'no old options.';\n        return true; // no old options\n      }\n      try {\n        const oldOptionsSorted = {};\n        Object.keys(oldOptions)\n          .sort() // sort by keys alphabetically\n          .forEach((key) => (oldOptionsSorted[key] = oldOptions[key]));\n        const newOptionsSorted = {};\n        Object.keys(newOptions)\n          .sort() // sort by keys alphabetically\n          .forEach((key) => (newOptionsSorted[key] = newOptions[key]));\n        const wasChanged = JSON.stringify(newOptionsSorted) !== JSON.stringify(oldOptionsSorted);\n        if (wasChanged) {\n          this.reasons.options = 'options were changed.';\n        }\n        return wasChanged;\n      } catch (e) {\n        console.error('Could not compare options', e);\n        return false;\n      }\n    };\n\n    const oldOptions = lastOptions;\n    let changed = false;\n    let formattedOptions;\n    if (optionsHaveChanged(options, oldOptions)) {\n      const optionsOverDefaults = populateWithDefaultOptions(options); //add default for any undefined option\n      formattedOptions = processLayouts(addPresetOptions(optionsOverDefaults), isUsingCustomInfoElements);\n      changed = true;\n    }\n\n    return { formattedOptions, changed };\n  }\n\n  formatContainerIfNeeded(container, lastContainer, lastOptions, formattedOptions, optionsChanged) {\n    const containerHasChanged = ({ newContainerParams, oldContainerParams, oldOptions }) => {\n      if (!oldOptions || !oldContainerParams) {\n        this.reasons.container = 'no old container or options. ';\n        return true; // no old container or options (style may change container)\n      }\n      if (!newContainerParams) {\n        this.reasons.container = 'no new container.';\n        return false; // no new continainer\n      }\n      const containerHasChanged = {\n        height: utils.isHeightSetByGallery(formattedOptions) // height doesnt matter if the new gallery is going to be vertical\n          ? false\n          : !!newContainerParams.height && newContainerParams.height !== oldContainerParams.height,\n        width:\n          !oldContainerParams || (!!newContainerParams.width && newContainerParams.width !== oldContainerParams.width),\n      };\n      return Object.keys(containerHasChanged).reduce((is, key) => {\n        if (containerHasChanged[key]) {\n          this.reasons.container += `container.${key} has changed. `;\n        }\n        return is || containerHasChanged[key];\n      }, false);\n    };\n\n    const oldContainerParams = lastContainer;\n    let changed = false;\n    const oldOptions = lastOptions;\n    let formattedContainer;\n    if (\n      optionsChanged || // If options changed they could affect the container and a new container must be created (slideshow,thumbs,shadow,borders...etc)\n      containerHasChanged({\n        newContainerParams: container,\n        oldContainerParams,\n        oldOptions,\n      })\n    ) {\n      dimensionsHelper.updateParams({\n        options: formattedOptions,\n        container,\n      });\n      changed = true;\n      formattedContainer = Object.assign({}, container, dimensionsHelper.getGalleryDimensions());\n    }\n    return { formattedContainer, changed };\n  }\n\n  createStructure({ formattedContainer, formattedOptions, formattedItems }) {\n    const layoutParams = {\n      items: formattedItems,\n      container: formattedContainer,\n      styleParams: formattedOptions,\n      options: {\n        showAllItems: true,\n        skipVisibilitiesCalc: true,\n        useLayoutStore: false,\n      },\n    };\n\n    // if (this.layouter && addingItems) {\n    //   layoutParams.options.useExistingLayout = true;\n    // } else {\n    layoutParams.options.createLayoutOnInit = false; // TODO - what does this do?\n    this.layouter = new Layouter(layoutParams); // TODO - no need for \"this.\"\n    // }\n\n    return this.layouter.createLayout(layoutParams);\n  }\n}\nconst blueprints = new Blueprints();\nexport default blueprints;\n","/* eslint-disable prettier/prettier */\nimport blueprints from './Blueprints.js';\nimport { GALLERY_CONSTS, optionsMap, viewModeWrapper } from 'pro-gallery-lib';\nexport default class BlueprintsManager {\n  constructor({ id }) {\n    this.id = id + `'s blueprintsManager`;\n    this.currentState = {};\n    this.existingBlueprint = {};\n    this.lastBlueprintId = 0;\n    this.cache = {};\n    this.api = {};\n    this.currentState.totalItemsCount = Infinity;\n    this.onBlueprintReady = () => {};\n    this.loopingItems = false;\n  }\n\n  init(config) {\n    this.api = config.api;\n    this.currentState.totalItemsCount =\n      (config && config.totalItemsCount) || this.currentState.totalItemsCount;\n    viewModeWrapper.setDeviceType(config.deviceType);\n  }\n\n  setCurrentBlueprint(id) {\n    this.lastBlueprintId = id;\n  }\n\n  async createBlueprint(params = {}) {\n    const lastBlueprintId = Math.floor(Math.random() * 1000);\n\n    this.currentState.totalItemsCount =\n      params.totalItemsCount ||\n      (this.api.getTotalItemsCount && this.api.getTotalItemsCount()) ||\n      this.currentState.totalItemsCount;\n\n    this.currentState.isUsingCustomInfoElements =\n      params.isUsingCustomInfoElements ||\n      (this.api.isUsingCustomInfoElements &&\n        this.api.isUsingCustomInfoElements()) ||\n      this.currentState.isUsingCustomInfoElements;\n\n    params = { ...params, ...(await this.completeParams(params)) };\n\n    params = this.duplicateItemsForSlideshowLoopIfNeeded(params);\n\n    const _createBlueprint = async (args) => {\n      this.setCurrentBlueprint(args.blueprintManagerId);\n      if (this.api.createBlueprintImp) {\n        return await this.api.createBlueprintImp(args);\n      } else {\n        return await blueprints.createBlueprint(args);\n      }\n    };\n    const { blueprintManagerId, blueprint, changedParams, reasons } = await _createBlueprint({\n      params,\n      lastParams: this.currentState,\n      existingBlueprint: this.existingBlueprint,\n      blueprintManagerId: this.id + lastBlueprintId,\n      isUsingCustomInfoElements: this.currentState.isUsingCustomInfoElements,\n    });\n\n    if (blueprintManagerId !== this.lastBlueprintId) return;\n\n    const blueprintChanged = Object.values(changedParams).some(\n      (changedParam) => !!changedParam\n    );\n\n    const blueprintCreated = Object.keys(blueprint).length > 0;\n\n    this.updateLastParamsIfNeeded(params, changedParams, blueprintCreated);\n\n    await new Promise((resolve) => setTimeout(resolve, 0)); //yeild to main thread. (this splits the task to 2 frames, so the UI thread will not be blocked for too long)\n    \n    blueprintCreated &&\n      this.api.onBlueprintReady &&\n      this.api.onBlueprintReady({ blueprint, blueprintChanged, reasons });\n    return (this.cache[params] = this.existingBlueprint = blueprint); // still returning for awaits... event is !blueprintCreated\n  }\n\n  async getMoreItems(currentItemLength) {\n    let items;\n    if (currentItemLength < this.currentState.totalItemsCount) {\n      // this.gettingMoreItems = true;\n      items = await this.api.fetchMoreItems(currentItemLength);\n      if (items) {\n        this.createBlueprint({ items });\n        // work with the new items...\n      }\n    } else if (this.existingBlueprint.options[optionsMap.behaviourParams.gallery.horizontal.loop] ) { \n      this.duplicateItemsAndCreateBlueprint();\n    }\n  }\n\n  resetItemLooping() {\n    this.loopingItems = false;\n  }\n\n  createInitialBlueprint(params) {\n    this.currentState.totalItemsCount =\n      params.totalItemsCount ||\n      (this.api.getTotalItemsCount && this.api.getTotalItemsCount()) ||\n      this.currentState.totalItemsCount;\n\n    this.currentState.isUsingCustomInfoElements =\n      params.isUsingCustomInfoElements ||\n      (this.api.isUsingCustomInfoElements &&\n        this.api.isUsingCustomInfoElements()) ||\n      this.currentState.isUsingCustomInfoElements;\n\n    params = this.duplicateItemsForSlideshowLoopIfNeeded(params);\n\n    const { blueprint, changedParams, reasons } = blueprints.createBlueprint({\n      params,\n      lastParams: this.currentState,\n      existingBlueprint: this.existingBlueprint,\n      blueprintManagerId: this.id,\n      isUsingCustomInfoElements: this.currentState.isUsingCustomInfoElements,\n    });\n\n    const blueprintChanged = Object.values(changedParams).some(\n      (changedParam) => !!changedParam\n    );\n\n    const blueprintCreated = Object.keys(blueprint).length > 0;\n\n    this.updateLastParamsIfNeeded(params, changedParams, blueprintCreated);\n    \n    blueprintCreated &&\n      this.api.onBlueprintReady &&\n      this.api.onBlueprintReady({\n        blueprint,\n        blueprintChanged,\n        reasons,\n        initialBlueprint: true,\n      });\n    return (\n      blueprintCreated &&\n      (this.cache[params] = this.existingBlueprint = blueprint)\n    );\n  }\n\n  createSingleBlueprint(params = {}) {\n    let { isUsingCustomInfoElements } = params;\n\n    const { blueprint } = blueprints.createBlueprint({\n      params,\n      lastParams: {},\n      existingBlueprint: {},\n      blueprintManagerId: this.id + '_singleBlueprint',\n      isUsingCustomInfoElements,\n    });\n\n    return blueprint;\n  }\n\n  duplicateGalleryItems( {items, duplicateFactor = 1}) {\n    items = items || this.currentState.items;\n    const uniqueItems = items.slice(0, this.currentState.totalItemsCount);\n    for (let i = 0; i < duplicateFactor; i++){      \n      items = items.concat(...uniqueItems);\n    }\n    this.loopingItems = true;\n    return items;\n  }\n\n  // Wrapper for the duplicateGalleryItems func, it duplicates, and createBlueprint with duplicated items *\n  duplicateItemsAndCreateBlueprint(){\n    const items = this.duplicateGalleryItems({});\n    this.createBlueprint({items})\n  }\n\n// The following function duplicate the items if necessary for slideshowLoop\n  duplicateItemsForSlideshowLoopIfNeeded(params){\n    const { items, options } = params;\n    const { totalItemsCount } = this.currentState;\n    const loopThreshold = 30;\n    // If we've reached last items (no more items in server), and there are less items than the threshold\n    const numOfItemsCondition = items.length < loopThreshold && items.length === totalItemsCount;\n    // If the gallery is a horizontal scrolling gallery\n    const isHorizontalScrolling = options[optionsMap.layoutParams.structure.scrollDirection] === GALLERY_CONSTS[optionsMap.layoutParams.structure.galleryLayout].HORIZONTAL;\n    // If slideshowLoop is True and both conditions are True as well then we duplicate number of items to reach threshold\n    if (options[optionsMap.behaviourParams.gallery.horizontal.loop] && numOfItemsCondition && isHorizontalScrolling){\n      const duplicateFactor = Math.ceil(loopThreshold / items.length) - 1;\n      return {...params, items: this.duplicateGalleryItems({items, duplicateFactor})};\n    }\n    return params;\n  }\n\n  // ------------------ Get all the needed raw data ---------------------------- //\n  async completeParams(params) {\n    let { container, items, options, id } = params || {}\n    container = await this.fetchContainerIfNeeded(container);\n    items = await this.fetchItemsIfNeeded(items);\n    options = await this.fetchOptionsIfNeeded(options); // can be async... TODO\n\n    return { container, items, options, id };\n  }\n\n  async fetchContainerIfNeeded(container) {\n    const shouldFetchContainer = (_container) => {\n      let should = true;\n      if (_container && Object.keys(_container).length > 0) {\n        should = false;\n      }\n\n      return should;\n    };\n\n    if (shouldFetchContainer(container)) {\n      // dimensions = {yonatanFakeDimensions: true, width: \"\", height: \"\"} // TODO - is there something here???\n      container =\n        (this.api.fetchContainer && (await this.api.fetchContainer())) ||\n        this.currentState.container;\n    }\n\n    return container;\n  }\n\n  async fetchItemsIfNeeded(items) {\n    const shouldFetchItems = (_items) => {\n      let should = true;\n      if (_items && _items.length > 0) {\n        should = false;\n      }\n\n      return should;\n    };\n\n    if (shouldFetchItems(items)) {\n      // items = ['yonatan - fake items'] // getGalleryDataFromServer(); - worker code to be used here.\n      items =\n        (!this.loopingItems &&\n          this.api.fetchItems &&\n          (await this.api.fetchItems())) ||\n        this.currentState.items;\n    }\n\n    // TODO - this.loadItemsDimensionsIfNeeded();\n\n    return items;\n  }\n\n  async fetchOptionsIfNeeded(options) {\n    const shouldFetchOptions = (_options) => {\n      let should = true;\n      if (_options && Object.keys(_options).length > 0) {\n        // TODO - should check if they are ready options and use ClientLib if not?\n        should = false;\n      }\n\n      return should;\n    };\n    if (shouldFetchOptions(options)) {\n      // styles = ['yonatan - fake styles'] // get styles - from SA ; - worker code to be used here.\n      options =\n        (this.api.fetchOptions && (await this.api.fetchOptions())) ||\n        this.currentState.options;\n    }\n\n    return options;\n  }\n\n  updateLastParamsIfNeeded(\n    { items, container, options },\n    changedParams,\n    blueprintCreated\n  ) {\n    if (blueprintCreated) {\n      this.currentState.items = changedParams.itemsChanged\n        ? items\n        : this.currentState.items;\n      this.currentState.container = changedParams.containerChanged\n        ? { ...container }\n        : this.currentState.container;\n      this.currentState.options = changedParams.optionsChanged\n        ? { ...options }\n        : this.currentState.options;\n    }\n  }\n\n  needMoreItems(currentItemLength) {\n    this.getMoreItems(currentItemLength);\n  }\n}\n/* eslint-enable prettier/prettier */\n","export { default as BlueprintsManager } from './BlueprintsManager.js';\nexport { default as blueprints } from './Blueprints.js';\n","import React from 'react';\nimport { window, utils } from 'pro-gallery-lib';\n\nclass GalleryDebugMessage extends React.Component {\n  render() {\n    if (utils.getTopUrlParam('pgdebug') !== 'true') {\n      return false;\n    }\n\n    const version = <div className=\"version-header \">Pro Gallery Version #{window.staticsVersion}</div>;\n\n    let parentSize = '';\n    try {\n      parentSize =\n        ' psw' +\n        window.top.screen.width +\n        ' piw' +\n        window.top.innerWidth +\n        ' pbw' +\n        window.top.document.body.clientWidth;\n    } catch (e) {\n      //not on the domain\n    }\n\n    const debugMsg = (\n      <div className=\"version-header \">\n        {utils.isLandscape() ? 'land' : 'port'} sw{window.screen.width}\n        sh{window.screen.height} iw{window.innerWidth} bw\n        {window.document.body.clientWidth} sr{'1'}\n        rc{this.props.resizeCount} oc{this.props.orientationCount} nh\n        {this.props.newHeight} lh{this.props.lastHeight}\n        {parentSize}\n        www{this.props.maxGalleryWidth}\n      </div>\n    );\n\n    return (\n      <div>\n        {version}\n        {debugMsg}\n      </div>\n    );\n  }\n}\n\nexport default GalleryDebugMessage;\n","import React from 'react';\n\ntype PrintOnlySourceProps = React.SourceHTMLAttributes<HTMLSourceElement>;\n\nexport class PrintOnlyImageSource extends React.Component<PrintOnlySourceProps, { isPrinting: boolean }> {\n  constructor(props: PrintOnlySourceProps) {\n    super(props);\n    this.state = {\n      isPrinting: false,\n    };\n  }\n\n  componentDidMount(): void {\n    window.addEventListener('beforeprint', () => {\n      this.setState({ isPrinting: true });\n    });\n    window.addEventListener('afterprint', () => {\n      this.setState({ isPrinting: false });\n    });\n  }\n\n  render(): React.ReactNode {\n    return this.state.isPrinting ? <source {...this.props} /> : null;\n  }\n}\n","import React from 'react';\nimport { PrintOnlyImageSource } from './printOnlySource.js';\n\nclass ImageRenderer extends React.Component {\n  constructor(props) {\n    super(props);\n    this.imageRef = null;\n  }\n  componentDidMount() {\n    if (this.imageRef?.complete && typeof this.props.onLoad === 'function') {\n      this.props.onLoad();\n    }\n  }\n  render() {\n    const { customImageRenderer, ...imageProps } = this.props; // customImageRenderer is not valid for dom elements.\n    if (typeof customImageRenderer === 'function') {\n      return customImageRenderer(this.props);\n    } else if (typeof this.props.src === 'string') {\n      return (\n        <img\n          ref={(ref) => {\n            this.imageRef = ref;\n          }}\n          alt={this.props.alt}\n          {...imageProps}\n        />\n      );\n    } else if (typeof this.props.src === 'object') {\n      return (\n        <picture id={`multi_picture_${this.props.id}`} key={`multi_picture_${this.props.id}`}>\n          {this.props.src.map((src, index) =>\n            src.forPrinting ? (\n              <PrintOnlyImageSource key={`print-only-image-${index}`} srcSet={src.dpr} type={`image/${src.type}`} />\n            ) : (\n              <source key={`image-source-${index}`} srcSet={src.dpr || src.url} type={`image/${src.type}`} />\n            )\n          )}\n          <img\n            ref={(ref) => {\n              this.imageRef = ref;\n            }}\n            alt={this.props.alt}\n            {...imageProps}\n            src={this.props.src[this.props.src.length - 1].url}\n          />\n        </picture>\n      );\n    } else {\n      return null;\n    }\n  }\n}\n\nexport default ImageRenderer;\n","import React from 'react';\nimport { GALLERY_CONSTS, optionsMap, utils } from 'pro-gallery-lib';\nimport ImageRenderer from './imageRenderer.js';\n\nclass ImageItem extends React.Component {\n  constructor(props) {\n    super(props);\n    this.getImageContainer = this.getImageContainer.bind(this);\n    this.getImageContainerClassNames = this.getImageContainerClassNames.bind(this);\n\n    this.state = {\n      isHighResImageLoaded: false,\n    };\n\n    this.handleHighResImageLoad = this.handleHighResImageLoad.bind(this);\n  }\n\n  componentDidMount() {\n    try {\n      if (typeof this.props.actions.setItemLoaded === 'function') {\n        this.props.actions.setItemLoaded();\n      }\n    } catch (e) {\n      console.error(e);\n    }\n  }\n\n  handleHighResImageLoad() {\n    this.setState({ isHighResImageLoaded: true });\n    try {\n      this.props.actions.setItemLoaded();\n    } catch (e) {\n      console.error('Failed to load high res image', e);\n    }\n  }\n\n  getImageContainerClassNames() {\n    const { isCurrentHover, options } = this.props;\n    const { isHighResImageLoaded } = this.state;\n\n    const imageContainerClassNames = [\n      'gallery-item-content',\n      isCurrentHover ? 'item-content-hover' : 'item-content-regular',\n      'image-item',\n      'gallery-item-visible',\n      'gallery-item',\n      'gallery-item-preloaded',\n      options[optionsMap.layoutParams.crop.enable] &&\n      options[optionsMap.layoutParams.crop.method] === GALLERY_CONSTS[optionsMap.layoutParams.crop.method].FIT\n        ? 'grid-fit'\n        : '',\n      options[optionsMap.behaviourParams.item.content.loader] ===\n      GALLERY_CONSTS[optionsMap.behaviourParams.item.content.loader].COLOR\n        ? `load-with-color ${isHighResImageLoaded ? 'image-loaded' : ''}`\n        : '',\n    ].join(' ');\n\n    return imageContainerClassNames;\n  }\n\n  getImageContainer(imageRenderer, classNames, extraNodes) {\n    const { imageDimensions, id, actions } = this.props;\n\n    return (\n      <div\n        className={classNames}\n        onTouchStart={actions.handleItemMouseDown}\n        onTouchEnd={actions.handleItemMouseUp}\n        key={'image_container-' + id}\n        data-hook={'image-item'}\n        style={imageDimensions}\n      >\n        {imageRenderer()}\n        {extraNodes}\n      </div>\n    );\n  }\n\n  getImageAnimationOverlay() {\n    const { imageDimensions, options, createUrl, id } = this.props;\n\n    let imageAnimationUrl = null;\n    switch (options[optionsMap.behaviourParams.gallery.scrollAnimation]) {\n      case GALLERY_CONSTS[optionsMap.behaviourParams.gallery.scrollAnimation].BLUR:\n        imageAnimationUrl = createUrl(GALLERY_CONSTS.urlSizes.RESIZED, GALLERY_CONSTS.urlTypes.LOW_RES);\n        break;\n      case GALLERY_CONSTS[optionsMap.behaviourParams.gallery.scrollAnimation].MAIN_COLOR:\n        imageAnimationUrl = createUrl(GALLERY_CONSTS.urlSizes.PIXEL, GALLERY_CONSTS.urlTypes.HIGH_RES);\n        break;\n    }\n\n    return (\n      imageAnimationUrl && (\n        <div\n          key={'image_container-overlay-' + id}\n          data-hook={'image-item-overlay'}\n          style={{\n            ...imageDimensions,\n            backgroundImage: `url(${imageAnimationUrl})`,\n            backgroundSize: 'cover',\n            pointerEvents: 'none',\n            position: 'absolute',\n            top: 0,\n            left: 0,\n          }}\n        ></div>\n      )\n    );\n  }\n\n  getImageElement() {\n    const { alt, imageDimensions, createUrl, id, idx, settings = {}, options } = this.props;\n    const { isHighResImageLoaded } = this.state;\n    const imageProps =\n      settings && settings.imageProps && typeof settings.imageProps === 'function' ? settings.imageProps(id) : {};\n\n    // eslint-disable-next-line no-unused-vars\n    const { marginLeft, marginTop, ...imageSizing } = imageDimensions;\n\n    const image = () => {\n      const imagesComponents = [];\n      const altText = typeof alt === 'string' ? alt : 'untitled image';\n      const blockDownloadStyles =\n        utils.isMobile() && this.props.options[optionsMap.behaviourParams.gallery.blockContextMenu]\n          ? {\n              WebkitUserSelect: 'none',\n              WebkitTouchCallout: 'none',\n            }\n          : {};\n\n      const preloadStyles = this.props.isPrerenderMode\n        ? {\n            width: '100%',\n            height: '100%',\n          }\n        : {};\n      if (!isHighResImageLoaded) {\n        let preload = null;\n        const preloadProps = {\n          className: 'gallery-item-visible gallery-item gallery-item-preloaded',\n          key: 'gallery-item-image-img-preload',\n          'data-hook': 'gallery-item-image-img-preload',\n          loading: 'eager',\n          ...imageProps,\n        };\n        switch (options[optionsMap.behaviourParams.item.content.loader]) {\n          case GALLERY_CONSTS[optionsMap.behaviourParams.item.content.loader].BLUR:\n            preload = (\n              <ImageRenderer\n                alt={altText}\n                key={'image_preload_blur-' + id}\n                src={createUrl(GALLERY_CONSTS.urlSizes.RESIZED, GALLERY_CONSTS.urlTypes.LOW_RES)}\n                style={{\n                  ...imageSizing,\n                  ...preloadStyles,\n                  ...blockDownloadStyles,\n                }}\n                {...preloadProps}\n                customImageRenderer={this.props.customComponents?.customImageRenderer}\n              />\n            );\n            break;\n          case GALLERY_CONSTS[optionsMap.behaviourParams.item.content.loader].MAIN_COLOR:\n            preload = (\n              <ImageRenderer\n                alt={altText}\n                key={'image_preload_main_color-' + id}\n                src={createUrl(GALLERY_CONSTS.urlSizes.PIXEL, GALLERY_CONSTS.urlTypes.HIGH_RES)}\n                style={{\n                  ...imageSizing,\n                  ...preloadStyles,\n                  ...blockDownloadStyles,\n                }}\n                {...preloadProps}\n                customImageRenderer={this.props.customComponents?.customImageRenderer}\n              />\n            );\n            break;\n        }\n\n        imagesComponents.push(preload);\n      }\n\n      const shouldRenderHighResImages = !this.props.isPrerenderMode;\n      const imageType =\n        options[optionsMap.stylingParams.itemResolutionMode] ===\n        GALLERY_CONSTS[optionsMap.stylingParams.itemResolutionMode].FULL\n          ? GALLERY_CONSTS.urlSizes.FULL\n          : GALLERY_CONSTS.urlSizes.MULTI;\n      const src = createUrl(imageType, GALLERY_CONSTS.urlTypes.HIGH_RES);\n\n      const highres = (\n        <ImageRenderer\n          key={'image_highres-' + id}\n          className={`gallery-item-visible gallery-item gallery-item-preloaded`}\n          data-hook=\"gallery-item-image-img\"\n          data-idx={idx}\n          src={src}\n          alt={altText}\n          onLoad={this.handleHighResImageLoad}\n          loading={this.props.isPrerenderMode ? 'lazy' : 'eager'}\n          style={{\n            ...imageSizing,\n            ...blockDownloadStyles,\n            ...(!shouldRenderHighResImages && preloadStyles),\n          }}\n          {...imageProps}\n          customImageRenderer={this.props.customComponents?.customImageRenderer}\n        />\n      );\n\n      imagesComponents.push(highres);\n\n      return imagesComponents;\n    };\n\n    return image;\n  }\n\n  render() {\n    const imageRenderer = this.getImageElement();\n    const imageContainerClassNames = `${this.getImageContainerClassNames()} ${this.props.extraClasses || ''}`;\n    const animationOverlay = this.props.overlay || this.getImageAnimationOverlay();\n\n    const renderedItem = this.getImageContainer(imageRenderer, imageContainerClassNames, animationOverlay);\n    return renderedItem;\n  }\n}\n/* eslint-enable prettier/prettier */\nexport default ImageItem;\n","import React, { Component } from 'react';\nimport { GALLERY_CONSTS, optionsMap } from 'pro-gallery-lib';\nimport ImageRenderer from '../item/imageRenderer.js';\n\nfunction withMagnified(WrappedComponent) {\n  return class extends Component {\n    constructor(props) {\n      super(props);\n      this.onMouseMove = this.onMouseMove.bind(this);\n      this.onMouseDown = this.onMouseDown.bind(this);\n      this.onMouseUp = this.onMouseUp.bind(this);\n      this.isMagnifiedBiggerThanContainer = this.isMagnifiedBiggerThanContainer.bind(this);\n      this.toggleMagnify = this.toggleMagnify.bind(this);\n      this.getMagnifyInitialPos = this.getMagnifyInitialPos.bind(this);\n      this.getBoundrys = this.getBoundrys.bind(this);\n      this.getMagnifiedDimensions = this.getMagnifiedDimensions.bind(this);\n      this.containerRef = null;\n      this.state = {\n        shouldMagnify: false,\n        x: 0,\n        y: 0,\n      };\n    }\n\n    onDragStart(e) {\n      e.preventDefault();\n    }\n\n    onMouseMove(e) {\n      if (this.dragStarted) {\n        const { magnifiedWidth, magnifiedHeight } = this.getMagnifiedDimensions();\n        this.isDragging = true;\n        const { cubedWidth, cubedHeight } = this.props.style;\n        const { clientY, clientX } = e;\n        const { boundryY, boundryX } = this.getBoundrys();\n        this.setState({\n          x: Math.max(-boundryX, Math.min(this.dragStartX - clientX, magnifiedWidth - cubedWidth)),\n          y: Math.max(-boundryY, Math.min(this.dragStartY - clientY, magnifiedHeight - cubedHeight)),\n        });\n      }\n    }\n\n    onMouseDown(e) {\n      const { clientX, clientY } = e;\n      const { x, y, shouldMagnify } = this.state;\n      if (!shouldMagnify) {\n        this.setState(this.getMagnifyInitialPos(e));\n      } else {\n        this.dragStartX = x + clientX;\n        this.dragStartY = y + clientY;\n        this.dragStarted = true;\n      }\n    }\n    onMouseUp() {\n      if (!this.isDragging) {\n        this.toggleMagnify();\n      }\n      this.dragStarted = false;\n      this.isDragging = false;\n    }\n\n    toggleMagnify(bool) {\n      const { shouldMagnify } = this.state;\n      if (typeof bool === 'boolean') {\n        this.setState({ shouldMagnify: bool });\n      } else {\n        this.setState({ shouldMagnify: !shouldMagnify });\n      }\n    }\n\n    getMagnifiedDimensions() {\n      const {\n        style: { innerHeight, innerWidth },\n      } = this.props;\n      const magnificationValue = this.props.options[optionsMap.behaviourParams.item.content.magnificationValue];\n      return {\n        magnifiedHeight: innerHeight * magnificationValue,\n        magnifiedWidth: innerWidth * magnificationValue,\n      };\n    }\n    getPreloadImage() {\n      const { createUrl, id, style, imageDimensions, options } = this.props;\n      const { innerWidth, innerHeight } = style;\n      const { marginTop, marginLeft } = imageDimensions;\n      const { shouldMagnify, x, y } = this.state;\n      const magnificationValue = options[optionsMap.behaviourParams.item.content.magnificationValue];\n      const src = createUrl(GALLERY_CONSTS.urlSizes.RESIZED, GALLERY_CONSTS.urlTypes.HIGH_RES);\n      const scale = shouldMagnify ? magnificationValue : 1;\n      return (\n        <ImageRenderer\n          alt=\"\"\n          key={'magnified-item-preload-' + id}\n          className=\"magnified-item-preload\"\n          src={src}\n          style={{\n            width: innerWidth,\n            height: innerHeight,\n            position: 'relative',\n            zIndex: 1,\n            opacity: shouldMagnify ? 1 : 0,\n            transform: `scale(${scale})`,\n            transformOrigin: `${(x + marginLeft) / (magnificationValue - 1)}px ${\n              (y + marginTop) / (magnificationValue - 1)\n            }px`,\n            transition: `transform 0.3s ease${shouldMagnify ? '' : ', opacity 0.1s ease 0.3s'}`,\n          }}\n          customImageRenderer={this.props.customComponents?.customImageRenderer}\n        />\n      );\n    }\n\n    getHighResImage() {\n      const { createMagnifiedUrl, id, alt, options, isPrerenderMode } = this.props;\n      const { magnifiedWidth, magnifiedHeight } = this.getMagnifiedDimensions();\n      const src = createMagnifiedUrl(options[optionsMap.behaviourParams.item.content.magnificationValue]);\n      return (\n        <ImageRenderer\n          key={`magnified-item-${id}`}\n          className=\"magnified-item\"\n          data-hook=\"magnified-item\"\n          src={src}\n          alt={typeof alt === 'string' ? alt : 'untitled image'}\n          id={id}\n          isPrerenderMode={isPrerenderMode}\n          style={{\n            width: magnifiedWidth,\n            height: magnifiedHeight,\n            position: 'absolute',\n          }}\n          customImageRenderer={this.props.customComponents?.customImageRenderer}\n        />\n      );\n    }\n\n    isMagnifiedBiggerThanContainer(itemStyle) {\n      const { magnifiedWidth, magnifiedHeight } = this.getMagnifiedDimensions();\n      const { cubedWidth, cubedHeight } = itemStyle;\n\n      return cubedWidth < magnifiedWidth || cubedHeight < magnifiedHeight;\n    }\n\n    getMagnifyInitialPos(e) {\n      const { clientX, clientY } = e;\n      const { style } = this.props;\n      const { magnifiedWidth, magnifiedHeight } = this.getMagnifiedDimensions();\n      const { cubedWidth, cubedHeight } = style;\n      const { top, left } = this.containerRef.getBoundingClientRect();\n\n      const x = ((clientX - left) / cubedWidth) * magnifiedWidth - (clientX - left);\n      const y = ((clientY - top) / cubedHeight) * magnifiedHeight - (clientY - top);\n\n      const { boundryY, boundryX } = this.getBoundrys();\n      return {\n        x: Math.max(-boundryX, Math.min(x, magnifiedWidth - cubedWidth)),\n        y: Math.max(-boundryY, Math.min(y, magnifiedHeight - cubedHeight)),\n      };\n    }\n\n    getBoundrys() {\n      const { style } = this.props;\n      const { magnifiedWidth, magnifiedHeight } = this.getMagnifiedDimensions();\n      const { cubedWidth, cubedHeight } = style;\n      const boundryY = magnifiedHeight < cubedHeight ? cubedHeight / 2 - magnifiedHeight / 2 : 0;\n      const boundryX = magnifiedWidth < cubedWidth ? cubedWidth / 2 - magnifiedWidth / 2 : 0;\n      return {\n        boundryY,\n        boundryX,\n      };\n    }\n\n    getContainerStyle() {\n      const { shouldMagnify } = this.state;\n      const { style } = this.props;\n      const { cubedWidth, cubedHeight } = style;\n      return {\n        width: cubedWidth,\n        height: cubedHeight,\n        position: 'relative',\n        display: 'flex',\n        justifyContent: 'center',\n        alignItems: 'center',\n        cursor: shouldMagnify ? 'zoom-out' : 'zoom-in',\n      };\n    }\n\n    getMagnifiedImageStyle() {\n      const { shouldMagnify, x, y } = this.state;\n      return {\n        zIndex: 2,\n        position: 'absolute',\n        top: 0,\n        left: 0,\n        transform: `translate(${-x}px, ${-y}px)`,\n        opacity: shouldMagnify ? 1 : 0,\n        transition: 'opacity 0.1s ease',\n        transitionDelay: shouldMagnify ? '0.3s' : 'none',\n      };\n    }\n\n    render() {\n      const { shouldMagnify } = this.state;\n      if (\n        this.props.options[optionsMap.behaviourParams.item.clickAction] !==\n        GALLERY_CONSTS[optionsMap.behaviourParams.item.clickAction].MAGNIFY\n      ) {\n        return <WrappedComponent {...this.props} />;\n      }\n      return (\n        <div\n          ref={(ref) => (this.containerRef = ref)}\n          className={'magnified-item-container'}\n          style={this.getContainerStyle()}\n          onDragStart={this.onDragStart}\n          onMouseMove={this.onMouseMove}\n          onMouseDown={this.onMouseDown}\n          onMouseUp={this.onMouseUp}\n        >\n          <WrappedComponent {...this.props} />\n          {this.getPreloadImage()}\n          <div className={'magnified-images'} style={this.getMagnifiedImageStyle()}>\n            {shouldMagnify && this.getHighResImage()}\n          </div>\n        </div>\n      );\n    }\n  };\n}\n\nexport default withMagnified;\n","import ImageItem from './imageItem.js';\nimport withMagnified from '../hoc/withMagnified.js';\nexport default withMagnified(ImageItem);\n","import React from 'react';\n\nconst GalleryContext = React.createContext({});\nexport const GalleryProvider = ({ children, ...rest }) => {\n  const galleryUI = rest.customComponents.EXPERIMENTAL_customGalleryUI;\n  return <GalleryContext.Provider value={{ galleryUI }}>{children}</GalleryContext.Provider>;\n};\n\nexport const useGalleryUI = () => {\n  const { galleryUI } = React.useContext(GalleryContext);\n  return galleryUI;\n};\n","/* eslint-disable */\n/* tslint:disable */\nimport PropTypes from 'prop-types';\nimport React from 'react';\nconst play_background = ({size = 60, ...props}) => (\n  <svg viewBox=\"0 0 60 60\" fill=\"currentColor\" width={ size  } height={ size } {...props}>\n    <path d=\"M30,0c16.6,0,30,13.4,30,30S46.6,60,30,60C13.4,60,0,46.6,0,30S13.4,0,30,0z\" fillRule=\"evenodd\" clipRule=\"evenodd\" />\n  </svg>\n);\nplay_background.displayName = 'play_background';\nplay_background.propTypes = {\n  size: PropTypes.number\n}\nexport default play_background;\n/* tslint:enable */\n/* eslint-enable */\n","/* eslint-disable */\n/* tslint:disable */\nimport PropTypes from 'prop-types';\nimport React from 'react';\nconst play_triangle = ({size = 60, ...props}) => (\n  <svg viewBox=\"0 0 60 60\" fill=\"currentColor\" width={ size } height={ size } {...props}>\n    <path d=\"M41.5,30l-17,10V20L41.5,30z\" />\n  </svg>\n);\nplay_triangle.displayName = 'play_triangle';\nplay_triangle.propTypes = {\n  size: PropTypes.number\n}\nexport default play_triangle;\n/* tslint:enable */\n/* eslint-enable */\n","export function proxy<T extends Record<string, any>>(getter: (key: keyof T) => T[keyof T]): T {\n  return new Proxy(\n    {},\n    {\n      get: (_, key) => getter(key as keyof T),\n    }\n  ) as T;\n}\n","import { proxy } from './proxy.js';\n\nexport default class Emitter<T extends Record<string, (...args: any[]) => void>> {\n  private listeners: Partial<{\n    [K in keyof T]: T[K][];\n  }> = {};\n\n  on<K extends keyof T>(event: K, listener: T[K]) {\n    this.listeners[event] = this.listeners[event] || [];\n    this.listeners[event]!.push(listener);\n    return {\n      remove: () => {\n        this.off(event, listener);\n      },\n    };\n  }\n\n  emit<K extends keyof T>(event: K, ...args: Parameters<T[K]>): void {\n    const listener = this.listeners[event];\n    if (listener) {\n      listener.forEach((listener) => listener(...args));\n    }\n  }\n\n  off<K extends keyof T>(event: K, listener: T[K]): void {\n    const listeners = this.listeners[event];\n    if (listeners) {\n      listeners.splice(listeners.indexOf(listener), 1);\n    }\n  }\n\n  get call() {\n    return proxy<{\n      [K in keyof T]: (...args: Parameters<T[K]>) => void;\n    }>((property) => {\n      return (...args: Parameters<T[typeof property]>) => {\n        this.emit(property, ...args);\n      };\n    });\n  }\n\n  get listen() {\n    return proxy<{\n      [K in keyof T]: (listener: T[K]) => () => void;\n    }>((property) => {\n      return (listener) => {\n        this.on(property, listener);\n        return () => {\n          this.off(property, listener);\n        };\n      };\n    });\n  }\n}\n","import React, { useEffect } from 'react';\nimport Emitter from './emitter.js';\nimport { proxy } from './proxy.js';\nimport { utils } from 'pro-gallery-lib';\n\ntype MouseFollowerEvents = {\n  mouseMove: (x: number, y: number) => void;\n  mouseClickInteractionEvent: (e: MouseEvent) => void;\n  mouseEnterState: (mouseIn: boolean, x: number, y: number) => void;\n};\n\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport function mouseFollower(container: HTMLElement) {\n  const emitter = new Emitter<MouseFollowerEvents>();\n  let state = {\n    mouseIn: false,\n    position: [0, 0] as [number, number],\n  };\n  emitter.listen.mouseEnterState((mouseIn, ...position) => {\n    state = {\n      mouseIn,\n      position,\n    };\n  });\n  emitter.listen.mouseMove((x, y) => {\n    state = {\n      ...state,\n      position: [x, y],\n    };\n  });\n  const getMousePosition = (event: MouseEvent) => {\n    const bounding = container.getBoundingClientRect();\n    const position = [event.clientX - bounding.left, event.clientY - bounding.top] as [number, number];\n    return position;\n  };\n\n  function onMouseEnter(event: MouseEvent) {\n    const position = getMousePosition(event);\n    emitter.call.mouseEnterState(!isHoveringClickableElement(container, event, ...position), ...position);\n  }\n  function onMouseMove(event: MouseEvent) {\n    const position = getMousePosition(event);\n    emitter.call.mouseEnterState(!isHoveringClickableElement(container, event, ...position), ...position);\n    emitter.call.mouseMove(...position);\n  }\n  function onMouseLeave() {\n    emitter.call.mouseEnterState(false, 0, 0);\n  }\n  function onMouseClickInteractionEvent(event: MouseEvent) {\n    emitter.call.mouseClickInteractionEvent(event);\n  }\n  container.addEventListener('mouseenter', onMouseEnter);\n  container.addEventListener('mousemove', onMouseMove);\n  container.addEventListener('mouseleave', onMouseLeave);\n  container.addEventListener('click', onMouseClickInteractionEvent);\n  container.addEventListener('mousedown', onMouseClickInteractionEvent);\n  container.addEventListener('mouseup', onMouseClickInteractionEvent);\n  return {\n    listen: emitter.listen,\n    get state() {\n      return state;\n    },\n    destroy: () => {\n      container.removeEventListener('mouseenter', onMouseEnter);\n      container.removeEventListener('mousemove', onMouseMove);\n      container.removeEventListener('mouseleave', onMouseLeave);\n      container.removeEventListener('click', onMouseClickInteractionEvent);\n      container.removeEventListener('mousedown', onMouseClickInteractionEvent);\n      container.removeEventListener('mouseup', onMouseClickInteractionEvent);\n    },\n  };\n}\n\ninterface MouseCursorProps {\n  render: (x: number, y: number) => React.ReactNode;\n  onClick: (e: MouseEvent) => void;\n  onMouseDownOrUp: (e: MouseEvent) => void;\n  onEnterState?: (mouseIn: boolean) => void;\n  getElement: () => HTMLElement;\n  shouldRenderAtPosition: (x: number, y: number) => boolean;\n  throttle: number;\n}\n\ninterface MouseCursorState {\n  position: [number, number];\n  mouseIn: boolean;\n}\n\nconst getContainerById = (id: string) => document.getElementById(`pro-gallery-container-${id}`) as HTMLElement;\n\nconst MouseFollowerContext = React.createContext<ReturnType<typeof mouseFollower> | undefined>(undefined);\n\nexport const MouseFollowerProvider = ({ children, id }: { children: React.ReactNode; id: string }) => {\n  const [mouseFollowerValue, setMouseFollowerValue] = React.useState<ReturnType<typeof mouseFollower>>();\n  useEffect(() => {\n    const container = getContainerById(id);\n    const mouseFollowerValue = mouseFollower(container);\n    setMouseFollowerValue(mouseFollowerValue);\n    return () => {\n      mouseFollowerValue.destroy();\n    };\n  }, [id]);\n\n  return (\n    <MouseFollowerContext.Provider value={mouseFollowerValue}>\n      {mouseFollowerValue && children}\n    </MouseFollowerContext.Provider>\n  );\n};\n\nexport class MouseCursor extends React.Component<MouseCursorProps, MouseCursorState> {\n  declare context: NonNullable<React.ContextType<typeof MouseFollowerContext>>;\n\n  static contextType = MouseFollowerContext;\n\n  cleanup: (() => void) | undefined;\n  componentDidMount(): void {\n    if (!this.context) {\n      throw new Error('MouseFollowerContext is undefined');\n    }\n    const removeMoveListener = this.context.listen.mouseMove(\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      (utils as any).throttle(() => {\n        this.setState({\n          position: this.context.state.position,\n        });\n      }, this.props.throttle)\n    );\n    const removeEnterListener = this.context.listen.mouseEnterState(() => {\n      const { mouseIn, position } = this.context.state;\n      if (this.state.mouseIn !== mouseIn) {\n        this.setState({\n          mouseIn: mouseIn,\n          position,\n        });\n        if (this.props.onEnterState) {\n          this.props.onEnterState(mouseIn);\n        }\n      }\n    });\n    const removeClickListener = this.context.listen.mouseClickInteractionEvent((e) => {\n      if (!this.state.mouseIn) {\n        return;\n      }\n      const [x, y] = this.state.position;\n      if (!this.props.shouldRenderAtPosition(x, y)) {\n        return;\n      }\n      if (e.type === 'mousedown' || e.type === 'mouseup') {\n        this.props.onMouseDownOrUp(e);\n        return;\n      }\n      this.props.onClick(e);\n    });\n    this.cleanup = () => {\n      removeMoveListener();\n      removeEnterListener();\n      removeClickListener();\n    };\n  }\n  componentWillUnmount(): void {\n    this.cleanup?.();\n  }\n\n  state: MouseCursorState = {\n    position: this.context?.state.position || [0, 0],\n    mouseIn: this.context?.state.mouseIn || false,\n  };\n  render(): React.ReactNode {\n    if (!this.state.mouseIn) {\n      return null;\n    }\n    const [x, y] = this.state.position;\n    if (!this.props.shouldRenderAtPosition(x, y)) {\n      return null;\n    }\n    return this.props.render(this.state.position[0], this.state.position[1]);\n  }\n}\n\nconst CLICKABLE_ATTR = 'pg-clickable';\ninterface ArrowFollowerProps {\n  children: (x: number, y: number) => React.ReactNode;\n  onNavigate: () => void;\n  mouseCursorContainerMaxWidth: number;\n  id: string;\n  direction: 'right' | 'left';\n  isTheOnlyArrow: boolean;\n}\n\nconst isHoveringClickableElement = (element: HTMLElement, e: MouseEvent, x: number, y: number) => {\n  // cancel the click event\n  for (const ele of e.composedPath() as HTMLElement[]) {\n    if (ele instanceof HTMLElement && ele.getAttribute(CLICKABLE_ATTR) === 'true') {\n      return true;\n    }\n  }\n  const bounding = element.getBoundingClientRect();\n  const elementUnderMouse = document.elementFromPoint(x + bounding.left, y + bounding.top) as HTMLElement | null;\n  if (!elementUnderMouse) {\n    return false;\n  }\n  let parent = elementUnderMouse as HTMLElement | null;\n  while (parent) {\n    if (parent.getAttribute(CLICKABLE_ATTR) === 'true') {\n      return true;\n    }\n    parent = parent.parentElement;\n  }\n  return false;\n};\n\nexport class ArrowFollower extends React.Component<ArrowFollowerProps> {\n  shouldRender = (x: number): boolean => {\n    const element = getContainerById(this.props.id);\n    const containerWidth = element.offsetWidth;\n    const realMaxWidth = Math.min(this.props.mouseCursorContainerMaxWidth, this.props.isTheOnlyArrow ? 100 : 50);\n    const amountOfPixelsNeeded = containerWidth * (realMaxWidth / 100);\n    const isLeft = amountOfPixelsNeeded >= x;\n    const isRight = x > containerWidth - amountOfPixelsNeeded;\n\n    return this.props.direction === 'left' ? isLeft : isRight;\n  };\n\n  onNavigation = (e: MouseEvent): void => {\n    e.preventDefault();\n    e.stopPropagation();\n    this.props.onNavigate();\n  };\n\n  render(): React.ReactNode {\n    return (\n      <MouseCursor\n        getElement={() => getContainerById(this.props.id)}\n        render={(x, y) => {\n          return (\n            <>\n              {this.props.children(x, y)}\n              <style>\n                {`\n                  #${getContainerById(this.props.id)?.id} * {\n                    cursor: none !important;\n                  }\n              `}\n              </style>\n            </>\n          );\n        }}\n        shouldRenderAtPosition={this.shouldRender}\n        onClick={this.onNavigation}\n        onMouseDownOrUp={(e) => e.stopPropagation()}\n        throttle={50}\n      />\n    );\n  }\n}\n\nexport function clickableFactory(): React.ReactHTML {\n  const instances = new Map<string, React.FC>();\n  return proxy<React.ReactHTML>((name) => {\n    if (!instances.get(name)) {\n      instances.set(name, (props) => {\n        return React.createElement(name, {\n          ...props,\n          [CLICKABLE_ATTR]: 'true',\n        });\n      });\n    }\n    return instances.get(name) as React.ReactHTML[keyof React.ReactHTML];\n  });\n}\n\nexport const clickable = clickableFactory();\n","import React from 'react';\nimport PlayBackground from '../../svgs/components/play_background.js';\nimport PlayTriangle from '../../svgs/components/play_triangle.js';\nimport { clickable } from '../../helpers/mouseCursorPosition.js';\ninterface VideoPlayButtonProps {\n  size?: number;\n}\nexport const VideoPlayButton = ({ size = 60 }: VideoPlayButtonProps): JSX.Element => (\n  <clickable.div\n    style={{\n      cursor: 'pointer',\n    }}\n    className=\"play-button\"\n  >\n    <i key=\"play-triangle\" data-hook=\"play-triangle\" className={'gallery-item-video-play-triangle play-triangle '}>\n      <PlayTriangle size={size} />\n    </i>\n    <i key=\"play-bg\" data-hook=\"play-background\" className={'gallery-item-video-play-background play-background '}>\n      <PlayBackground size={size} />\n    </i>\n  </clickable.div>\n);\n\nexport default VideoPlayButton;\n","/* eslint-disable */\n/* tslint:disable */\nimport PropTypes from 'prop-types';\nimport React from 'react';\nconst rotate_arrow = ({size = 20, ...props}) => (\n  <svg xmlns=\"http://www.w3.org/2000/svg\" width={ size } height={ size } {...props} viewBox=\"0 0 20 20\" fill=\"currentColor\">\n    <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M11 13.9502C12.4415 13.8056 13.7613 13.3512 14.7973 12.6605C16.0619 11.8174 17 10.543 17 9C17 7.45705 16.0619 6.18257 14.7973 5.33952C13.5258 4.49182 11.8267 4 10 4C8.17326 4 6.47422 4.49182 5.20266 5.33952C3.93809 6.18257 3 7.45705 3 9C3 10.4989 3.88534 11.7445 5.09526 12.5873L5.89741 11.9188C4.72961 11.189 4 10.1513 4 9C4 6.79086 6.68629 5 10 5C13.3137 5 16 6.79086 16 9C16 10.982 13.8377 12.6273 11 12.9447V11L8 13.5L11 16V13.9502Z\"/>\n  </svg>\n);\nrotate_arrow.displayName = 'rotate_arrow';\nrotate_arrow.propTypes = {\n  size: PropTypes.number\n}\nexport default rotate_arrow;\n/* tslint:enable */\n/* eslint-enable */\n","import React from 'react';\nimport PlayBackground from '../../svgs/components/play_background.js';\nimport RotateArrow from '../../svgs/components/rotate_arrow.js';\nimport { clickable } from '../../helpers/mouseCursorPosition.js';\n\ninterface ThreeDimensionsRotateArrowProps {\n  size: number;\n}\nexport const ThreeDimensionsRotateArrow = ({ size }: ThreeDimensionsRotateArrowProps): JSX.Element => (\n  <clickable.div\n    style={{\n      cursor: 'pointer',\n    }}\n    className=\"play-button\"\n  >\n    <i key=\"play-triangle\" data-hook=\"play-triangle\" className={'gallery-item-video-play-triangle play-triangle '}>\n      <RotateArrow size={size} />\n    </i>\n    <i key=\"play-bg\" data-hook=\"play-background\" className={'gallery-item-video-play-background play-background '}>\n      <PlayBackground size={size} />\n    </i>\n  </clickable.div>\n);\n\nexport default ThreeDimensionsRotateArrow;\n","import React, { useEffect, useState } from 'react';\nimport { useGalleryUI } from '../../../context/GalleryContext.js';\n\ntype ComponentType = React.ComponentType<{ size: number }>;\n\ninterface GalleryComponents {\n  videoPlayButton: ComponentType;\n  rotateArrow: ComponentType;\n}\n\nconst galleryUiComponents = {\n  // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n  // @ts-ignore\n  videoPlayButton: React.lazy(() => import(/* webpackChunkName: \"defaultPlayButton\" */ './playButton.js')),\n  // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n  // @ts-ignore\n  rotateArrow: React.lazy(() => import(/* webpackChunkName: \"defaultRotateArrow\" */ './rotateArrow.js')),\n};\n\ninterface GalleryUIProps {\n  size: number;\n  type: keyof GalleryComponents;\n}\n\nexport const GalleryUI = ({ type, size }: GalleryUIProps): JSX.Element => {\n  const [isMounted, setIsMounted] = useState(false);\n  const galleryUI = useGalleryUI();\n\n  useEffect(() => {\n    setIsMounted(true);\n  }, []);\n\n  if (!isMounted) {\n    return <></>;\n  }\n\n  if (typeof galleryUI?.[type] === 'function') {\n    return galleryUI[type](size);\n  }\n\n  const Component = galleryUiComponents[type];\n\n  if (!Component) {\n    return <></>;\n  }\n\n  return (\n    <React.Suspense fallback={<></>}>\n      <Component size={size} />\n    </React.Suspense>\n  );\n};\n","import React from 'react';\n\ninterface Props {\n  url: string;\n  dimensions: any;\n}\nconst IframePlayer: React.FC<Props> = ({ url, dimensions }) => {\n  const src = url;\n  const commonProps: any = {\n    'data-hook': 'video-iframe-placeholder',\n    className: 'gallery-item-content video-iframe-placeholder',\n    title: 'pro-gallery-video',\n    style: dimensions,\n    allow: 'fullscreen',\n    allowFullScreen: true,\n    loading: 'lazy',\n  };\n  if (url?.includes('youtube.com') || url?.includes('youtu.be') || url?.includes('vimeo.com')) {\n    return <iframe {...commonProps} src={url + '&autoplay=0&muted=1'} />;\n  } else {\n    return (\n      <iframe\n        {...commonProps}\n        src={src}\n        srcDoc={`\n      <video controls preload='metadata'>\n      <source src='${src}' type='video/mp4'>\n    </video>\n    `}\n      />\n    );\n  }\n};\nexport default IframePlayer;\n","/* eslint-disable @typescript-eslint/ban-types */\nimport React, { useMemo, useEffect, useState } from 'react';\nimport { optionsMap, GALLERY_CONSTS, isEditMode } from 'pro-gallery-lib';\nimport { GalleryUI } from './GalleryUI.js';\nimport { Options, Settings, utils } from 'pro-gallery-lib';\nimport ImageItem from '../imageItem.js';\nimport IframeVideoPlayer from '../videos/IframeVideoPlayer.js';\n\nexport type MediaBaseProps = {\n  calculatedAlt: string;\n  title: string;\n  description: string;\n  id: string;\n  idx: number;\n  activeIndex: number;\n  isCurrentHover: boolean;\n  options: Options;\n  createUrl: any;\n  createMagnifiedUrl: any;\n  settings: Settings;\n  isPrerenderMode: boolean;\n  isTransparent: boolean;\n  style: any;\n  actions: any;\n  customComponents: any;\n  shouldPlay: boolean;\n  imageDimensions: any;\n  hasLink: boolean;\n  placeholderExtraClasses: string[];\n  showPlayButton: boolean;\n  hover: JSX.Element;\n  enableImagePlaceholder: boolean;\n};\n\nexport type MediaProps<T extends Record<string, any>> = MediaBaseProps & {\n  MediaImplementation: React.ComponentType<MediaImplementationProps<Omit<T, 'MediaImplementation'>>>;\n} & T;\n\nexport type MediaImplementationProps<T = {}> = T &\n  MediaBaseProps & {\n    thumbnail: JSX.Element;\n    thumbnailWithOverride(props: ImageItem['props']): JSX.Element;\n    placeholder: JSX.Element;\n  };\n\nconst getPlayButtonComponentByItemType = (type: string) => {\n  if (type === 'video') {\n    return <GalleryUI type={'videoPlayButton'} size={60} />;\n  } else if (type === '3d') {\n    return <GalleryUI type={'rotateArrow'} size={60} />;\n  } else {\n    return <></>;\n  }\n};\n\nexport default function MediaItem<T extends Record<string, any>>(props: MediaProps<T>): JSX.Element {\n  const {\n    hasLink,\n    options,\n    imageDimensions,\n    showPlayButton,\n    MediaImplementation,\n    enableImagePlaceholder,\n    isVideoPlaceholder,\n    videoPlaceholderUrl,\n  } = props;\n  const { behaviourParams_item_clickAction: clickAction, behaviourParams_item_video_playTrigger: playTrigger } =\n    options;\n\n  const [isMounted, setIsMounted] = useState(false);\n\n  useEffect(() => {\n    setIsMounted(true);\n  }, []);\n\n  const isMediaPlayable = useMemo(() => {\n    if (utils.isSSR()) {\n      return false;\n    }\n    if (\n      playTrigger === GALLERY_CONSTS[optionsMap.behaviourParams.item.video.playTrigger].HOVER ||\n      playTrigger === GALLERY_CONSTS[optionsMap.behaviourParams.item.video.playTrigger].AUTO\n    ) {\n      return true;\n    } else if (\n      clickAction === GALLERY_CONSTS[optionsMap.behaviourParams.item.clickAction].NOTHING ||\n      clickAction === GALLERY_CONSTS[optionsMap.behaviourParams.item.clickAction].MAGNIFY\n    ) {\n      return true;\n    } else if (clickAction === GALLERY_CONSTS[optionsMap.behaviourParams.item.clickAction].LINK && !hasLink) {\n      return true;\n    }\n    return false;\n  }, [hasLink, playTrigger, clickAction]);\n\n  const createIframePlayer = () => (\n    <IframeVideoPlayer dimensions={imageDimensions} url={isVideoPlaceholder ? videoPlaceholderUrl : props.videoUrl} />\n  );\n\n  const createThumbnail = (propsOverrides: any = {}) =>\n    enableImagePlaceholder ? (\n      <ImageItem\n        {...props}\n        imageDimensions={imageDimensions}\n        id={props.idx}\n        overlay={showPlayButton && !isMediaPlayable && getPlayButtonComponentByItemType(props.type)}\n        extraClasses={props.placeholderExtraClasses.join(' ')}\n        {...propsOverrides}\n      />\n    ) : (\n      <></>\n    );\n  const thumbnail = createThumbnail();\n  const iframeVideoPlayer = createIframePlayer();\n  const placeholder = (\n    <>\n      {thumbnail}\n      {iframeVideoPlayer}\n      {props.hover}\n    </>\n  );\n  if (!isMediaPlayable || props.isPrerenderMode || !isMounted) {\n    return placeholder;\n  }\n\n  if (isEditMode()) {\n    return (\n      <>\n        {thumbnail}\n        {props.hover}\n      </>\n    );\n  }\n\n  return (\n    <React.Suspense fallback={placeholder}>\n      <MediaImplementation\n        {...props}\n        thumbnail={thumbnail}\n        placeholder={placeholder}\n        thumbnailWithOverride={createThumbnail}\n      />\n    </React.Suspense>\n  );\n}\n","/**\n * @license\n * Copyright 2010-2022 Three.js Authors\n * SPDX-License-Identifier: MIT\n */\nconst REVISION = '143';\nconst MOUSE = { LEFT: 0, MIDDLE: 1, RIGHT: 2, ROTATE: 0, DOLLY: 1, PAN: 2 };\nconst TOUCH = { ROTATE: 0, PAN: 1, DOLLY_PAN: 2, DOLLY_ROTATE: 3 };\nconst CullFaceNone = 0;\nconst CullFaceBack = 1;\nconst CullFaceFront = 2;\nconst CullFaceFrontBack = 3;\nconst BasicShadowMap = 0;\nconst PCFShadowMap = 1;\nconst PCFSoftShadowMap = 2;\nconst VSMShadowMap = 3;\nconst FrontSide = 0;\nconst BackSide = 1;\nconst DoubleSide = 2;\nconst FlatShading = 1;\nconst SmoothShading = 2;\nconst NoBlending = 0;\nconst NormalBlending = 1;\nconst AdditiveBlending = 2;\nconst SubtractiveBlending = 3;\nconst MultiplyBlending = 4;\nconst CustomBlending = 5;\nconst AddEquation = 100;\nconst SubtractEquation = 101;\nconst ReverseSubtractEquation = 102;\nconst MinEquation = 103;\nconst MaxEquation = 104;\nconst ZeroFactor = 200;\nconst OneFactor = 201;\nconst SrcColorFactor = 202;\nconst OneMinusSrcColorFactor = 203;\nconst SrcAlphaFactor = 204;\nconst OneMinusSrcAlphaFactor = 205;\nconst DstAlphaFactor = 206;\nconst OneMinusDstAlphaFactor = 207;\nconst DstColorFactor = 208;\nconst OneMinusDstColorFactor = 209;\nconst SrcAlphaSaturateFactor = 210;\nconst NeverDepth = 0;\nconst AlwaysDepth = 1;\nconst LessDepth = 2;\nconst LessEqualDepth = 3;\nconst EqualDepth = 4;\nconst GreaterEqualDepth = 5;\nconst GreaterDepth = 6;\nconst NotEqualDepth = 7;\nconst MultiplyOperation = 0;\nconst MixOperation = 1;\nconst AddOperation = 2;\nconst NoToneMapping = 0;\nconst LinearToneMapping = 1;\nconst ReinhardToneMapping = 2;\nconst CineonToneMapping = 3;\nconst ACESFilmicToneMapping = 4;\nconst CustomToneMapping = 5;\n\nconst UVMapping = 300;\nconst CubeReflectionMapping = 301;\nconst CubeRefractionMapping = 302;\nconst EquirectangularReflectionMapping = 303;\nconst EquirectangularRefractionMapping = 304;\nconst CubeUVReflectionMapping = 306;\nconst RepeatWrapping = 1000;\nconst ClampToEdgeWrapping = 1001;\nconst MirroredRepeatWrapping = 1002;\nconst NearestFilter = 1003;\nconst NearestMipmapNearestFilter = 1004;\nconst NearestMipMapNearestFilter = 1004;\nconst NearestMipmapLinearFilter = 1005;\nconst NearestMipMapLinearFilter = 1005;\nconst LinearFilter = 1006;\nconst LinearMipmapNearestFilter = 1007;\nconst LinearMipMapNearestFilter = 1007;\nconst LinearMipmapLinearFilter = 1008;\nconst LinearMipMapLinearFilter = 1008;\nconst UnsignedByteType = 1009;\nconst ByteType = 1010;\nconst ShortType = 1011;\nconst UnsignedShortType = 1012;\nconst IntType = 1013;\nconst UnsignedIntType = 1014;\nconst FloatType = 1015;\nconst HalfFloatType = 1016;\nconst UnsignedShort4444Type = 1017;\nconst UnsignedShort5551Type = 1018;\nconst UnsignedInt248Type = 1020;\nconst AlphaFormat = 1021;\nconst RGBFormat = 1022;\nconst RGBAFormat = 1023;\nconst LuminanceFormat = 1024;\nconst LuminanceAlphaFormat = 1025;\nconst DepthFormat = 1026;\nconst DepthStencilFormat = 1027;\nconst RedFormat = 1028;\nconst RedIntegerFormat = 1029;\nconst RGFormat = 1030;\nconst RGIntegerFormat = 1031;\nconst RGBAIntegerFormat = 1033;\n\nconst RGB_S3TC_DXT1_Format = 33776;\nconst RGBA_S3TC_DXT1_Format = 33777;\nconst RGBA_S3TC_DXT3_Format = 33778;\nconst RGBA_S3TC_DXT5_Format = 33779;\nconst RGB_PVRTC_4BPPV1_Format = 35840;\nconst RGB_PVRTC_2BPPV1_Format = 35841;\nconst RGBA_PVRTC_4BPPV1_Format = 35842;\nconst RGBA_PVRTC_2BPPV1_Format = 35843;\nconst RGB_ETC1_Format = 36196;\nconst RGB_ETC2_Format = 37492;\nconst RGBA_ETC2_EAC_Format = 37496;\nconst RGBA_ASTC_4x4_Format = 37808;\nconst RGBA_ASTC_5x4_Format = 37809;\nconst RGBA_ASTC_5x5_Format = 37810;\nconst RGBA_ASTC_6x5_Format = 37811;\nconst RGBA_ASTC_6x6_Format = 37812;\nconst RGBA_ASTC_8x5_Format = 37813;\nconst RGBA_ASTC_8x6_Format = 37814;\nconst RGBA_ASTC_8x8_Format = 37815;\nconst RGBA_ASTC_10x5_Format = 37816;\nconst RGBA_ASTC_10x6_Format = 37817;\nconst RGBA_ASTC_10x8_Format = 37818;\nconst RGBA_ASTC_10x10_Format = 37819;\nconst RGBA_ASTC_12x10_Format = 37820;\nconst RGBA_ASTC_12x12_Format = 37821;\nconst RGBA_BPTC_Format = 36492;\nconst LoopOnce = 2200;\nconst LoopRepeat = 2201;\nconst LoopPingPong = 2202;\nconst InterpolateDiscrete = 2300;\nconst InterpolateLinear = 2301;\nconst InterpolateSmooth = 2302;\nconst ZeroCurvatureEnding = 2400;\nconst ZeroSlopeEnding = 2401;\nconst WrapAroundEnding = 2402;\nconst NormalAnimationBlendMode = 2500;\nconst AdditiveAnimationBlendMode = 2501;\nconst TrianglesDrawMode = 0;\nconst TriangleStripDrawMode = 1;\nconst TriangleFanDrawMode = 2;\nconst LinearEncoding = 3000;\nconst sRGBEncoding = 3001;\nconst BasicDepthPacking = 3200;\nconst RGBADepthPacking = 3201;\nconst TangentSpaceNormalMap = 0;\nconst ObjectSpaceNormalMap = 1;\n\n// Color space string identifiers, matching CSS Color Module Level 4 and WebGPU names where available.\nconst NoColorSpace = '';\nconst SRGBColorSpace = 'srgb';\nconst LinearSRGBColorSpace = 'srgb-linear';\n\nconst ZeroStencilOp = 0;\nconst KeepStencilOp = 7680;\nconst ReplaceStencilOp = 7681;\nconst IncrementStencilOp = 7682;\nconst DecrementStencilOp = 7683;\nconst IncrementWrapStencilOp = 34055;\nconst DecrementWrapStencilOp = 34056;\nconst InvertStencilOp = 5386;\n\nconst NeverStencilFunc = 512;\nconst LessStencilFunc = 513;\nconst EqualStencilFunc = 514;\nconst LessEqualStencilFunc = 515;\nconst GreaterStencilFunc = 516;\nconst NotEqualStencilFunc = 517;\nconst GreaterEqualStencilFunc = 518;\nconst AlwaysStencilFunc = 519;\n\nconst StaticDrawUsage = 35044;\nconst DynamicDrawUsage = 35048;\nconst StreamDrawUsage = 35040;\nconst StaticReadUsage = 35045;\nconst DynamicReadUsage = 35049;\nconst StreamReadUsage = 35041;\nconst StaticCopyUsage = 35046;\nconst DynamicCopyUsage = 35050;\nconst StreamCopyUsage = 35042;\n\nconst GLSL1 = '100';\nconst GLSL3 = '300 es';\n\nconst _SRGBAFormat = 1035; // fallback for WebGL 1\n\n/**\n * https://github.com/mrdoob/eventdispatcher.js/\n */\n\nclass EventDispatcher {\n\n\taddEventListener( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) this._listeners = {};\n\n\t\tconst listeners = this._listeners;\n\n\t\tif ( listeners[ type ] === undefined ) {\n\n\t\t\tlisteners[ type ] = [];\n\n\t\t}\n\n\t\tif ( listeners[ type ].indexOf( listener ) === - 1 ) {\n\n\t\t\tlisteners[ type ].push( listener );\n\n\t\t}\n\n\t}\n\n\thasEventListener( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) return false;\n\n\t\tconst listeners = this._listeners;\n\n\t\treturn listeners[ type ] !== undefined && listeners[ type ].indexOf( listener ) !== - 1;\n\n\t}\n\n\tremoveEventListener( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) return;\n\n\t\tconst listeners = this._listeners;\n\t\tconst listenerArray = listeners[ type ];\n\n\t\tif ( listenerArray !== undefined ) {\n\n\t\t\tconst index = listenerArray.indexOf( listener );\n\n\t\t\tif ( index !== - 1 ) {\n\n\t\t\t\tlistenerArray.splice( index, 1 );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tdispatchEvent( event ) {\n\n\t\tif ( this._listeners === undefined ) return;\n\n\t\tconst listeners = this._listeners;\n\t\tconst listenerArray = listeners[ event.type ];\n\n\t\tif ( listenerArray !== undefined ) {\n\n\t\t\tevent.target = this;\n\n\t\t\t// Make a copy, in case listeners are removed while iterating.\n\t\t\tconst array = listenerArray.slice( 0 );\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tarray[ i ].call( this, event );\n\n\t\t\t}\n\n\t\t\tevent.target = null;\n\n\t\t}\n\n\t}\n\n}\n\nconst _lut = [ '00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '0a', '0b', '0c', '0d', '0e', '0f', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '1a', '1b', '1c', '1d', '1e', '1f', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '2a', '2b', '2c', '2d', '2e', '2f', '30', '31', '32', '33', '34', '35', '36', '37', '38', '39', '3a', '3b', '3c', '3d', '3e', '3f', '40', '41', '42', '43', '44', '45', '46', '47', '48', '49', '4a', '4b', '4c', '4d', '4e', '4f', '50', '51', '52', '53', '54', '55', '56', '57', '58', '59', '5a', '5b', '5c', '5d', '5e', '5f', '60', '61', '62', '63', '64', '65', '66', '67', '68', '69', '6a', '6b', '6c', '6d', '6e', '6f', '70', '71', '72', '73', '74', '75', '76', '77', '78', '79', '7a', '7b', '7c', '7d', '7e', '7f', '80', '81', '82', '83', '84', '85', '86', '87', '88', '89', '8a', '8b', '8c', '8d', '8e', '8f', '90', '91', '92', '93', '94', '95', '96', '97', '98', '99', '9a', '9b', '9c', '9d', '9e', '9f', 'a0', 'a1', 'a2', 'a3', 'a4', 'a5', 'a6', 'a7', 'a8', 'a9', 'aa', 'ab', 'ac', 'ad', 'ae', 'af', 'b0', 'b1', 'b2', 'b3', 'b4', 'b5', 'b6', 'b7', 'b8', 'b9', 'ba', 'bb', 'bc', 'bd', 'be', 'bf', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6', 'c7', 'c8', 'c9', 'ca', 'cb', 'cc', 'cd', 'ce', 'cf', 'd0', 'd1', 'd2', 'd3', 'd4', 'd5', 'd6', 'd7', 'd8', 'd9', 'da', 'db', 'dc', 'dd', 'de', 'df', 'e0', 'e1', 'e2', 'e3', 'e4', 'e5', 'e6', 'e7', 'e8', 'e9', 'ea', 'eb', 'ec', 'ed', 'ee', 'ef', 'f0', 'f1', 'f2', 'f3', 'f4', 'f5', 'f6', 'f7', 'f8', 'f9', 'fa', 'fb', 'fc', 'fd', 'fe', 'ff' ];\n\nlet _seed = 1234567;\n\n\nconst DEG2RAD = Math.PI / 180;\nconst RAD2DEG = 180 / Math.PI;\n\n// http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/21963136#21963136\nfunction generateUUID() {\n\n\tconst d0 = Math.random() * 0xffffffff | 0;\n\tconst d1 = Math.random() * 0xffffffff | 0;\n\tconst d2 = Math.random() * 0xffffffff | 0;\n\tconst d3 = Math.random() * 0xffffffff | 0;\n\tconst uuid = _lut[ d0 & 0xff ] + _lut[ d0 >> 8 & 0xff ] + _lut[ d0 >> 16 & 0xff ] + _lut[ d0 >> 24 & 0xff ] + '-' +\n\t\t\t_lut[ d1 & 0xff ] + _lut[ d1 >> 8 & 0xff ] + '-' + _lut[ d1 >> 16 & 0x0f | 0x40 ] + _lut[ d1 >> 24 & 0xff ] + '-' +\n\t\t\t_lut[ d2 & 0x3f | 0x80 ] + _lut[ d2 >> 8 & 0xff ] + '-' + _lut[ d2 >> 16 & 0xff ] + _lut[ d2 >> 24 & 0xff ] +\n\t\t\t_lut[ d3 & 0xff ] + _lut[ d3 >> 8 & 0xff ] + _lut[ d3 >> 16 & 0xff ] + _lut[ d3 >> 24 & 0xff ];\n\n\t// .toLowerCase() here flattens concatenated strings to save heap memory space.\n\treturn uuid.toLowerCase();\n\n}\n\nfunction clamp( value, min, max ) {\n\n\treturn Math.max( min, Math.min( max, value ) );\n\n}\n\n// compute euclidean modulo of m % n\n// https://en.wikipedia.org/wiki/Modulo_operation\nfunction euclideanModulo( n, m ) {\n\n\treturn ( ( n % m ) + m ) % m;\n\n}\n\n// Linear mapping from range <a1, a2> to range <b1, b2>\nfunction mapLinear( x, a1, a2, b1, b2 ) {\n\n\treturn b1 + ( x - a1 ) * ( b2 - b1 ) / ( a2 - a1 );\n\n}\n\n// https://www.gamedev.net/tutorials/programming/general-and-gameplay-programming/inverse-lerp-a-super-useful-yet-often-overlooked-function-r5230/\nfunction inverseLerp( x, y, value ) {\n\n\tif ( x !== y ) {\n\n\t\treturn ( value - x ) / ( y - x );\n\n\t} else {\n\n\t\treturn 0;\n\n\t}\n\n}\n\n// https://en.wikipedia.org/wiki/Linear_interpolation\nfunction lerp( x, y, t ) {\n\n\treturn ( 1 - t ) * x + t * y;\n\n}\n\n// http://www.rorydriscoll.com/2016/03/07/frame-rate-independent-damping-using-lerp/\nfunction damp( x, y, lambda, dt ) {\n\n\treturn lerp( x, y, 1 - Math.exp( - lambda * dt ) );\n\n}\n\n// https://www.desmos.com/calculator/vcsjnyz7x4\nfunction pingpong( x, length = 1 ) {\n\n\treturn length - Math.abs( euclideanModulo( x, length * 2 ) - length );\n\n}\n\n// http://en.wikipedia.org/wiki/Smoothstep\nfunction smoothstep( x, min, max ) {\n\n\tif ( x <= min ) return 0;\n\tif ( x >= max ) return 1;\n\n\tx = ( x - min ) / ( max - min );\n\n\treturn x * x * ( 3 - 2 * x );\n\n}\n\nfunction smootherstep( x, min, max ) {\n\n\tif ( x <= min ) return 0;\n\tif ( x >= max ) return 1;\n\n\tx = ( x - min ) / ( max - min );\n\n\treturn x * x * x * ( x * ( x * 6 - 15 ) + 10 );\n\n}\n\n// Random integer from <low, high> interval\nfunction randInt( low, high ) {\n\n\treturn low + Math.floor( Math.random() * ( high - low + 1 ) );\n\n}\n\n// Random float from <low, high> interval\nfunction randFloat( low, high ) {\n\n\treturn low + Math.random() * ( high - low );\n\n}\n\n// Random float from <-range/2, range/2> interval\nfunction randFloatSpread( range ) {\n\n\treturn range * ( 0.5 - Math.random() );\n\n}\n\n// Deterministic pseudo-random float in the interval [ 0, 1 ]\nfunction seededRandom( s ) {\n\n\tif ( s !== undefined ) _seed = s;\n\n\t// Mulberry32 generator\n\n\tlet t = _seed += 0x6D2B79F5;\n\n\tt = Math.imul( t ^ t >>> 15, t | 1 );\n\n\tt ^= t + Math.imul( t ^ t >>> 7, t | 61 );\n\n\treturn ( ( t ^ t >>> 14 ) >>> 0 ) / 4294967296;\n\n}\n\nfunction degToRad( degrees ) {\n\n\treturn degrees * DEG2RAD;\n\n}\n\nfunction radToDeg( radians ) {\n\n\treturn radians * RAD2DEG;\n\n}\n\nfunction isPowerOfTwo( value ) {\n\n\treturn ( value & ( value - 1 ) ) === 0 && value !== 0;\n\n}\n\nfunction ceilPowerOfTwo( value ) {\n\n\treturn Math.pow( 2, Math.ceil( Math.log( value ) / Math.LN2 ) );\n\n}\n\nfunction floorPowerOfTwo( value ) {\n\n\treturn Math.pow( 2, Math.floor( Math.log( value ) / Math.LN2 ) );\n\n}\n\nfunction setQuaternionFromProperEuler( q, a, b, c, order ) {\n\n\t// Intrinsic Proper Euler Angles - see https://en.wikipedia.org/wiki/Euler_angles\n\n\t// rotations are applied to the axes in the order specified by 'order'\n\t// rotation by angle 'a' is applied first, then by angle 'b', then by angle 'c'\n\t// angles are in radians\n\n\tconst cos = Math.cos;\n\tconst sin = Math.sin;\n\n\tconst c2 = cos( b / 2 );\n\tconst s2 = sin( b / 2 );\n\n\tconst c13 = cos( ( a + c ) / 2 );\n\tconst s13 = sin( ( a + c ) / 2 );\n\n\tconst c1_3 = cos( ( a - c ) / 2 );\n\tconst s1_3 = sin( ( a - c ) / 2 );\n\n\tconst c3_1 = cos( ( c - a ) / 2 );\n\tconst s3_1 = sin( ( c - a ) / 2 );\n\n\tswitch ( order ) {\n\n\t\tcase 'XYX':\n\t\t\tq.set( c2 * s13, s2 * c1_3, s2 * s1_3, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'YZY':\n\t\t\tq.set( s2 * s1_3, c2 * s13, s2 * c1_3, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'ZXZ':\n\t\t\tq.set( s2 * c1_3, s2 * s1_3, c2 * s13, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'XZX':\n\t\t\tq.set( c2 * s13, s2 * s3_1, s2 * c3_1, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'YXY':\n\t\t\tq.set( s2 * c3_1, c2 * s13, s2 * s3_1, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'ZYZ':\n\t\t\tq.set( s2 * s3_1, s2 * c3_1, c2 * s13, c2 * c13 );\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: ' + order );\n\n\t}\n\n}\n\nfunction denormalize$1( value, array ) {\n\n\tswitch ( array.constructor ) {\n\n\t\tcase Float32Array:\n\n\t\t\treturn value;\n\n\t\tcase Uint16Array:\n\n\t\t\treturn value / 65535.0;\n\n\t\tcase Uint8Array:\n\n\t\t\treturn value / 255.0;\n\n\t\tcase Int16Array:\n\n\t\t\treturn Math.max( value / 32767.0, - 1.0 );\n\n\t\tcase Int8Array:\n\n\t\t\treturn Math.max( value / 127.0, - 1.0 );\n\n\t\tdefault:\n\n\t\t\tthrow new Error( 'Invalid component type.' );\n\n\t}\n\n}\n\nfunction normalize( value, array ) {\n\n\tswitch ( array.constructor ) {\n\n\t\tcase Float32Array:\n\n\t\t\treturn value;\n\n\t\tcase Uint16Array:\n\n\t\t\treturn Math.round( value * 65535.0 );\n\n\t\tcase Uint8Array:\n\n\t\t\treturn Math.round( value * 255.0 );\n\n\t\tcase Int16Array:\n\n\t\t\treturn Math.round( value * 32767.0 );\n\n\t\tcase Int8Array:\n\n\t\t\treturn Math.round( value * 127.0 );\n\n\t\tdefault:\n\n\t\t\tthrow new Error( 'Invalid component type.' );\n\n\t}\n\n}\n\nvar MathUtils = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tDEG2RAD: DEG2RAD,\n\tRAD2DEG: RAD2DEG,\n\tgenerateUUID: generateUUID,\n\tclamp: clamp,\n\teuclideanModulo: euclideanModulo,\n\tmapLinear: mapLinear,\n\tinverseLerp: inverseLerp,\n\tlerp: lerp,\n\tdamp: damp,\n\tpingpong: pingpong,\n\tsmoothstep: smoothstep,\n\tsmootherstep: smootherstep,\n\trandInt: randInt,\n\trandFloat: randFloat,\n\trandFloatSpread: randFloatSpread,\n\tseededRandom: seededRandom,\n\tdegToRad: degToRad,\n\tradToDeg: radToDeg,\n\tisPowerOfTwo: isPowerOfTwo,\n\tceilPowerOfTwo: ceilPowerOfTwo,\n\tfloorPowerOfTwo: floorPowerOfTwo,\n\tsetQuaternionFromProperEuler: setQuaternionFromProperEuler,\n\tnormalize: normalize,\n\tdenormalize: denormalize$1\n});\n\nclass Vector2 {\n\n\tconstructor( x = 0, y = 0 ) {\n\n\t\tVector2.prototype.isVector2 = true;\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\n\t}\n\n\tget width() {\n\n\t\treturn this.x;\n\n\t}\n\n\tset width( value ) {\n\n\t\tthis.x = value;\n\n\t}\n\n\tget height() {\n\n\t\treturn this.y;\n\n\t}\n\n\tset height( value ) {\n\n\t\tthis.y = value;\n\n\t}\n\n\tset( x, y ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetX( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponent( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetComponent( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.x, this.y );\n\n\t}\n\n\tcopy( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\n\t\treturn this;\n\n\t}\n\n\tadd( v ) {\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\n\t\treturn this;\n\n\t}\n\n\taddVectors( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\n\t\treturn this;\n\n\t}\n\n\taddScaledVector( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( v ) {\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\n\t\treturn this;\n\n\t}\n\n\tsubScalar( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\n\t\treturn this;\n\n\t}\n\n\tsubVectors( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( v ) {\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\n\t\treturn this;\n\n\t}\n\n\tdivide( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\n\t\treturn this;\n\n\t}\n\n\tdivideScalar( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\n\tapplyMatrix3( m ) {\n\n\t\tconst x = this.x, y = this.y;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ];\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ];\n\n\t\treturn this;\n\n\t}\n\n\tmin( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\n\t\treturn this;\n\n\t}\n\n\tmax( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\n\t\treturn this;\n\n\t}\n\n\tclamp( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampScalar( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampLength( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t}\n\n\tfloor() {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\n\t\treturn this;\n\n\t}\n\n\tceil() {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\n\t\treturn this;\n\n\t}\n\n\tround() {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\n\t\treturn this;\n\n\t}\n\n\troundToZero() {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y;\n\n\t}\n\n\tcross( v ) {\n\n\t\treturn this.x * v.y - this.y * v.x;\n\n\t}\n\n\tlengthSq() {\n\n\t\treturn this.x * this.x + this.y * this.y;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y );\n\n\t}\n\n\tmanhattanLength() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y );\n\n\t}\n\n\tnormalize() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\tangle() {\n\n\t\t// computes the angle in radians with respect to the positive x-axis\n\n\t\tconst angle = Math.atan2( - this.y, - this.x ) + Math.PI;\n\n\t\treturn angle;\n\n\t}\n\n\tdistanceTo( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t}\n\n\tdistanceToSquared( v ) {\n\n\t\tconst dx = this.x - v.x, dy = this.y - v.y;\n\t\treturn dx * dx + dy * dy;\n\n\t}\n\n\tmanhattanDistanceTo( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y );\n\n\t}\n\n\tsetLength( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t}\n\n\tlerp( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpVectors( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tequals( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\n\t\treturn this;\n\n\t}\n\n\trotateAround( center, angle ) {\n\n\t\tconst c = Math.cos( angle ), s = Math.sin( angle );\n\n\t\tconst x = this.x - center.x;\n\t\tconst y = this.y - center.y;\n\n\t\tthis.x = x * c - y * s + center.x;\n\t\tthis.y = x * s + y * c + center.y;\n\n\t\treturn this;\n\n\t}\n\n\trandom() {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\n\t\treturn this;\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.x;\n\t\tyield this.y;\n\n\t}\n\n}\n\nclass Matrix3 {\n\n\tconstructor() {\n\n\t\tMatrix3.prototype.isMatrix3 = true;\n\n\t\tthis.elements = [\n\n\t\t\t1, 0, 0,\n\t\t\t0, 1, 0,\n\t\t\t0, 0, 1\n\n\t\t];\n\n\t}\n\n\tset( n11, n12, n13, n21, n22, n23, n31, n32, n33 ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 1 ] = n21; te[ 2 ] = n31;\n\t\tte[ 3 ] = n12; te[ 4 ] = n22; te[ 5 ] = n32;\n\t\tte[ 6 ] = n13; te[ 7 ] = n23; te[ 8 ] = n33;\n\n\t\treturn this;\n\n\t}\n\n\tidentity() {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0,\n\t\t\t0, 1, 0,\n\t\t\t0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tcopy( m ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ];\n\t\tte[ 3 ] = me[ 3 ]; te[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ];\n\t\tte[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ]; te[ 8 ] = me[ 8 ];\n\n\t\treturn this;\n\n\t}\n\n\textractBasis( xAxis, yAxis, zAxis ) {\n\n\t\txAxis.setFromMatrix3Column( this, 0 );\n\t\tyAxis.setFromMatrix3Column( this, 1 );\n\t\tzAxis.setFromMatrix3Column( this, 2 );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrix4( m ) {\n\n\t\tconst me = m.elements;\n\n\t\tthis.set(\n\n\t\t\tme[ 0 ], me[ 4 ], me[ 8 ],\n\t\t\tme[ 1 ], me[ 5 ], me[ 9 ],\n\t\t\tme[ 2 ], me[ 6 ], me[ 10 ]\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( m ) {\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t}\n\n\tpremultiply( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t}\n\n\tmultiplyMatrices( a, b ) {\n\n\t\tconst ae = a.elements;\n\t\tconst be = b.elements;\n\t\tconst te = this.elements;\n\n\t\tconst a11 = ae[ 0 ], a12 = ae[ 3 ], a13 = ae[ 6 ];\n\t\tconst a21 = ae[ 1 ], a22 = ae[ 4 ], a23 = ae[ 7 ];\n\t\tconst a31 = ae[ 2 ], a32 = ae[ 5 ], a33 = ae[ 8 ];\n\n\t\tconst b11 = be[ 0 ], b12 = be[ 3 ], b13 = be[ 6 ];\n\t\tconst b21 = be[ 1 ], b22 = be[ 4 ], b23 = be[ 7 ];\n\t\tconst b31 = be[ 2 ], b32 = be[ 5 ], b33 = be[ 8 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31;\n\t\tte[ 3 ] = a11 * b12 + a12 * b22 + a13 * b32;\n\t\tte[ 6 ] = a11 * b13 + a12 * b23 + a13 * b33;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31;\n\t\tte[ 4 ] = a21 * b12 + a22 * b22 + a23 * b32;\n\t\tte[ 7 ] = a21 * b13 + a22 * b23 + a23 * b33;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31;\n\t\tte[ 5 ] = a31 * b12 + a32 * b22 + a33 * b32;\n\t\tte[ 8 ] = a31 * b13 + a32 * b23 + a33 * b33;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( s ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 3 ] *= s; te[ 6 ] *= s;\n\t\tte[ 1 ] *= s; te[ 4 ] *= s; te[ 7 ] *= s;\n\t\tte[ 2 ] *= s; te[ 5 ] *= s; te[ 8 ] *= s;\n\n\t\treturn this;\n\n\t}\n\n\tdeterminant() {\n\n\t\tconst te = this.elements;\n\n\t\tconst a = te[ 0 ], b = te[ 1 ], c = te[ 2 ],\n\t\t\td = te[ 3 ], e = te[ 4 ], f = te[ 5 ],\n\t\t\tg = te[ 6 ], h = te[ 7 ], i = te[ 8 ];\n\n\t\treturn a * e * i - a * f * h - b * d * i + b * f * g + c * d * h - c * e * g;\n\n\t}\n\n\tinvert() {\n\n\t\tconst te = this.elements,\n\n\t\t\tn11 = te[ 0 ], n21 = te[ 1 ], n31 = te[ 2 ],\n\t\t\tn12 = te[ 3 ], n22 = te[ 4 ], n32 = te[ 5 ],\n\t\t\tn13 = te[ 6 ], n23 = te[ 7 ], n33 = te[ 8 ],\n\n\t\t\tt11 = n33 * n22 - n32 * n23,\n\t\t\tt12 = n32 * n13 - n33 * n12,\n\t\t\tt13 = n23 * n12 - n22 * n13,\n\n\t\t\tdet = n11 * t11 + n21 * t12 + n31 * t13;\n\n\t\tif ( det === 0 ) return this.set( 0, 0, 0, 0, 0, 0, 0, 0, 0 );\n\n\t\tconst detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n31 * n23 - n33 * n21 ) * detInv;\n\t\tte[ 2 ] = ( n32 * n21 - n31 * n22 ) * detInv;\n\n\t\tte[ 3 ] = t12 * detInv;\n\t\tte[ 4 ] = ( n33 * n11 - n31 * n13 ) * detInv;\n\t\tte[ 5 ] = ( n31 * n12 - n32 * n11 ) * detInv;\n\n\t\tte[ 6 ] = t13 * detInv;\n\t\tte[ 7 ] = ( n21 * n13 - n23 * n11 ) * detInv;\n\t\tte[ 8 ] = ( n22 * n11 - n21 * n12 ) * detInv;\n\n\t\treturn this;\n\n\t}\n\n\ttranspose() {\n\n\t\tlet tmp;\n\t\tconst m = this.elements;\n\n\t\ttmp = m[ 1 ]; m[ 1 ] = m[ 3 ]; m[ 3 ] = tmp;\n\t\ttmp = m[ 2 ]; m[ 2 ] = m[ 6 ]; m[ 6 ] = tmp;\n\t\ttmp = m[ 5 ]; m[ 5 ] = m[ 7 ]; m[ 7 ] = tmp;\n\n\t\treturn this;\n\n\t}\n\n\tgetNormalMatrix( matrix4 ) {\n\n\t\treturn this.setFromMatrix4( matrix4 ).invert().transpose();\n\n\t}\n\n\ttransposeIntoArray( r ) {\n\n\t\tconst m = this.elements;\n\n\t\tr[ 0 ] = m[ 0 ];\n\t\tr[ 1 ] = m[ 3 ];\n\t\tr[ 2 ] = m[ 6 ];\n\t\tr[ 3 ] = m[ 1 ];\n\t\tr[ 4 ] = m[ 4 ];\n\t\tr[ 5 ] = m[ 7 ];\n\t\tr[ 6 ] = m[ 2 ];\n\t\tr[ 7 ] = m[ 5 ];\n\t\tr[ 8 ] = m[ 8 ];\n\n\t\treturn this;\n\n\t}\n\n\tsetUvTransform( tx, ty, sx, sy, rotation, cx, cy ) {\n\n\t\tconst c = Math.cos( rotation );\n\t\tconst s = Math.sin( rotation );\n\n\t\tthis.set(\n\t\t\tsx * c, sx * s, - sx * ( c * cx + s * cy ) + cx + tx,\n\t\t\t- sy * s, sy * c, - sy * ( - s * cx + c * cy ) + cy + ty,\n\t\t\t0, 0, 1\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tscale( sx, sy ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= sx; te[ 3 ] *= sx; te[ 6 ] *= sx;\n\t\tte[ 1 ] *= sy; te[ 4 ] *= sy; te[ 7 ] *= sy;\n\n\t\treturn this;\n\n\t}\n\n\trotate( theta ) {\n\n\t\tconst c = Math.cos( theta );\n\t\tconst s = Math.sin( theta );\n\n\t\tconst te = this.elements;\n\n\t\tconst a11 = te[ 0 ], a12 = te[ 3 ], a13 = te[ 6 ];\n\t\tconst a21 = te[ 1 ], a22 = te[ 4 ], a23 = te[ 7 ];\n\n\t\tte[ 0 ] = c * a11 + s * a21;\n\t\tte[ 3 ] = c * a12 + s * a22;\n\t\tte[ 6 ] = c * a13 + s * a23;\n\n\t\tte[ 1 ] = - s * a11 + c * a21;\n\t\tte[ 4 ] = - s * a12 + c * a22;\n\t\tte[ 7 ] = - s * a13 + c * a23;\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( tx, ty ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] += tx * te[ 2 ]; te[ 3 ] += tx * te[ 5 ]; te[ 6 ] += tx * te[ 8 ];\n\t\tte[ 1 ] += ty * te[ 2 ]; te[ 4 ] += ty * te[ 5 ]; te[ 7 ] += ty * te[ 8 ];\n\n\t\treturn this;\n\n\t}\n\n\tequals( matrix ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = matrix.elements;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tconst te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\n\t\treturn array;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().fromArray( this.elements );\n\n\t}\n\n}\n\nfunction arrayNeedsUint32( array ) {\n\n\t// assumes larger values usually on last\n\n\tfor ( let i = array.length - 1; i >= 0; -- i ) {\n\n\t\tif ( array[ i ] > 65535 ) return true;\n\n\t}\n\n\treturn false;\n\n}\n\nconst TYPED_ARRAYS = {\n\tInt8Array: Int8Array,\n\tUint8Array: Uint8Array,\n\tUint8ClampedArray: Uint8ClampedArray,\n\tInt16Array: Int16Array,\n\tUint16Array: Uint16Array,\n\tInt32Array: Int32Array,\n\tUint32Array: Uint32Array,\n\tFloat32Array: Float32Array,\n\tFloat64Array: Float64Array\n};\n\nfunction getTypedArray( type, buffer ) {\n\n\treturn new TYPED_ARRAYS[ type ]( buffer );\n\n}\n\nfunction createElementNS( name ) {\n\n\treturn document.createElementNS( 'http://www.w3.org/1999/xhtml', name );\n\n}\n\nfunction SRGBToLinear( c ) {\n\n\treturn ( c < 0.04045 ) ? c * 0.0773993808 : Math.pow( c * 0.9478672986 + 0.0521327014, 2.4 );\n\n}\n\nfunction LinearToSRGB( c ) {\n\n\treturn ( c < 0.0031308 ) ? c * 12.92 : 1.055 * ( Math.pow( c, 0.41666 ) ) - 0.055;\n\n}\n\n// JavaScript RGB-to-RGB transforms, defined as\n// FN[InputColorSpace][OutputColorSpace] callback functions.\nconst FN = {\n\t[ SRGBColorSpace ]: { [ LinearSRGBColorSpace ]: SRGBToLinear },\n\t[ LinearSRGBColorSpace ]: { [ SRGBColorSpace ]: LinearToSRGB },\n};\n\nconst ColorManagement = {\n\n\tlegacyMode: true,\n\n\tget workingColorSpace() {\n\n\t\treturn LinearSRGBColorSpace;\n\n\t},\n\n\tset workingColorSpace( colorSpace ) {\n\n\t\tconsole.warn( 'THREE.ColorManagement: .workingColorSpace is readonly.' );\n\n\t},\n\n\tconvert: function ( color, sourceColorSpace, targetColorSpace ) {\n\n\t\tif ( this.legacyMode || sourceColorSpace === targetColorSpace || ! sourceColorSpace || ! targetColorSpace ) {\n\n\t\t\treturn color;\n\n\t\t}\n\n\t\tif ( FN[ sourceColorSpace ] && FN[ sourceColorSpace ][ targetColorSpace ] !== undefined ) {\n\n\t\t\tconst fn = FN[ sourceColorSpace ][ targetColorSpace ];\n\n\t\t\tcolor.r = fn( color.r );\n\t\t\tcolor.g = fn( color.g );\n\t\t\tcolor.b = fn( color.b );\n\n\t\t\treturn color;\n\n\t\t}\n\n\t\tthrow new Error( 'Unsupported color space conversion.' );\n\n\t},\n\n\tfromWorkingColorSpace: function ( color, targetColorSpace ) {\n\n\t\treturn this.convert( color, this.workingColorSpace, targetColorSpace );\n\n\t},\n\n\ttoWorkingColorSpace: function ( color, sourceColorSpace ) {\n\n\t\treturn this.convert( color, sourceColorSpace, this.workingColorSpace );\n\n\t},\n\n};\n\nconst _colorKeywords = { 'aliceblue': 0xF0F8FF, 'antiquewhite': 0xFAEBD7, 'aqua': 0x00FFFF, 'aquamarine': 0x7FFFD4, 'azure': 0xF0FFFF,\n\t'beige': 0xF5F5DC, 'bisque': 0xFFE4C4, 'black': 0x000000, 'blanchedalmond': 0xFFEBCD, 'blue': 0x0000FF, 'blueviolet': 0x8A2BE2,\n\t'brown': 0xA52A2A, 'burlywood': 0xDEB887, 'cadetblue': 0x5F9EA0, 'chartreuse': 0x7FFF00, 'chocolate': 0xD2691E, 'coral': 0xFF7F50,\n\t'cornflowerblue': 0x6495ED, 'cornsilk': 0xFFF8DC, 'crimson': 0xDC143C, 'cyan': 0x00FFFF, 'darkblue': 0x00008B, 'darkcyan': 0x008B8B,\n\t'darkgoldenrod': 0xB8860B, 'darkgray': 0xA9A9A9, 'darkgreen': 0x006400, 'darkgrey': 0xA9A9A9, 'darkkhaki': 0xBDB76B, 'darkmagenta': 0x8B008B,\n\t'darkolivegreen': 0x556B2F, 'darkorange': 0xFF8C00, 'darkorchid': 0x9932CC, 'darkred': 0x8B0000, 'darksalmon': 0xE9967A, 'darkseagreen': 0x8FBC8F,\n\t'darkslateblue': 0x483D8B, 'darkslategray': 0x2F4F4F, 'darkslategrey': 0x2F4F4F, 'darkturquoise': 0x00CED1, 'darkviolet': 0x9400D3,\n\t'deeppink': 0xFF1493, 'deepskyblue': 0x00BFFF, 'dimgray': 0x696969, 'dimgrey': 0x696969, 'dodgerblue': 0x1E90FF, 'firebrick': 0xB22222,\n\t'floralwhite': 0xFFFAF0, 'forestgreen': 0x228B22, 'fuchsia': 0xFF00FF, 'gainsboro': 0xDCDCDC, 'ghostwhite': 0xF8F8FF, 'gold': 0xFFD700,\n\t'goldenrod': 0xDAA520, 'gray': 0x808080, 'green': 0x008000, 'greenyellow': 0xADFF2F, 'grey': 0x808080, 'honeydew': 0xF0FFF0, 'hotpink': 0xFF69B4,\n\t'indianred': 0xCD5C5C, 'indigo': 0x4B0082, 'ivory': 0xFFFFF0, 'khaki': 0xF0E68C, 'lavender': 0xE6E6FA, 'lavenderblush': 0xFFF0F5, 'lawngreen': 0x7CFC00,\n\t'lemonchiffon': 0xFFFACD, 'lightblue': 0xADD8E6, 'lightcoral': 0xF08080, 'lightcyan': 0xE0FFFF, 'lightgoldenrodyellow': 0xFAFAD2, 'lightgray': 0xD3D3D3,\n\t'lightgreen': 0x90EE90, 'lightgrey': 0xD3D3D3, 'lightpink': 0xFFB6C1, 'lightsalmon': 0xFFA07A, 'lightseagreen': 0x20B2AA, 'lightskyblue': 0x87CEFA,\n\t'lightslategray': 0x778899, 'lightslategrey': 0x778899, 'lightsteelblue': 0xB0C4DE, 'lightyellow': 0xFFFFE0, 'lime': 0x00FF00, 'limegreen': 0x32CD32,\n\t'linen': 0xFAF0E6, 'magenta': 0xFF00FF, 'maroon': 0x800000, 'mediumaquamarine': 0x66CDAA, 'mediumblue': 0x0000CD, 'mediumorchid': 0xBA55D3,\n\t'mediumpurple': 0x9370DB, 'mediumseagreen': 0x3CB371, 'mediumslateblue': 0x7B68EE, 'mediumspringgreen': 0x00FA9A, 'mediumturquoise': 0x48D1CC,\n\t'mediumvioletred': 0xC71585, 'midnightblue': 0x191970, 'mintcream': 0xF5FFFA, 'mistyrose': 0xFFE4E1, 'moccasin': 0xFFE4B5, 'navajowhite': 0xFFDEAD,\n\t'navy': 0x000080, 'oldlace': 0xFDF5E6, 'olive': 0x808000, 'olivedrab': 0x6B8E23, 'orange': 0xFFA500, 'orangered': 0xFF4500, 'orchid': 0xDA70D6,\n\t'palegoldenrod': 0xEEE8AA, 'palegreen': 0x98FB98, 'paleturquoise': 0xAFEEEE, 'palevioletred': 0xDB7093, 'papayawhip': 0xFFEFD5, 'peachpuff': 0xFFDAB9,\n\t'peru': 0xCD853F, 'pink': 0xFFC0CB, 'plum': 0xDDA0DD, 'powderblue': 0xB0E0E6, 'purple': 0x800080, 'rebeccapurple': 0x663399, 'red': 0xFF0000, 'rosybrown': 0xBC8F8F,\n\t'royalblue': 0x4169E1, 'saddlebrown': 0x8B4513, 'salmon': 0xFA8072, 'sandybrown': 0xF4A460, 'seagreen': 0x2E8B57, 'seashell': 0xFFF5EE,\n\t'sienna': 0xA0522D, 'silver': 0xC0C0C0, 'skyblue': 0x87CEEB, 'slateblue': 0x6A5ACD, 'slategray': 0x708090, 'slategrey': 0x708090, 'snow': 0xFFFAFA,\n\t'springgreen': 0x00FF7F, 'steelblue': 0x4682B4, 'tan': 0xD2B48C, 'teal': 0x008080, 'thistle': 0xD8BFD8, 'tomato': 0xFF6347, 'turquoise': 0x40E0D0,\n\t'violet': 0xEE82EE, 'wheat': 0xF5DEB3, 'white': 0xFFFFFF, 'whitesmoke': 0xF5F5F5, 'yellow': 0xFFFF00, 'yellowgreen': 0x9ACD32 };\n\nconst _rgb = { r: 0, g: 0, b: 0 };\nconst _hslA = { h: 0, s: 0, l: 0 };\nconst _hslB = { h: 0, s: 0, l: 0 };\n\nfunction hue2rgb( p, q, t ) {\n\n\tif ( t < 0 ) t += 1;\n\tif ( t > 1 ) t -= 1;\n\tif ( t < 1 / 6 ) return p + ( q - p ) * 6 * t;\n\tif ( t < 1 / 2 ) return q;\n\tif ( t < 2 / 3 ) return p + ( q - p ) * 6 * ( 2 / 3 - t );\n\treturn p;\n\n}\n\nfunction toComponents( source, target ) {\n\n\ttarget.r = source.r;\n\ttarget.g = source.g;\n\ttarget.b = source.b;\n\n\treturn target;\n\n}\n\nclass Color {\n\n\tconstructor( r, g, b ) {\n\n\t\tthis.isColor = true;\n\n\t\tthis.r = 1;\n\t\tthis.g = 1;\n\t\tthis.b = 1;\n\n\t\tif ( g === undefined && b === undefined ) {\n\n\t\t\t// r is THREE.Color, hex or string\n\t\t\treturn this.set( r );\n\n\t\t}\n\n\t\treturn this.setRGB( r, g, b );\n\n\t}\n\n\tset( value ) {\n\n\t\tif ( value && value.isColor ) {\n\n\t\t\tthis.copy( value );\n\n\t\t} else if ( typeof value === 'number' ) {\n\n\t\t\tthis.setHex( value );\n\n\t\t} else if ( typeof value === 'string' ) {\n\n\t\t\tthis.setStyle( value );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.r = scalar;\n\t\tthis.g = scalar;\n\t\tthis.b = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetHex( hex, colorSpace = SRGBColorSpace ) {\n\n\t\thex = Math.floor( hex );\n\n\t\tthis.r = ( hex >> 16 & 255 ) / 255;\n\t\tthis.g = ( hex >> 8 & 255 ) / 255;\n\t\tthis.b = ( hex & 255 ) / 255;\n\n\t\tColorManagement.toWorkingColorSpace( this, colorSpace );\n\n\t\treturn this;\n\n\t}\n\n\tsetRGB( r, g, b, colorSpace = LinearSRGBColorSpace ) {\n\n\t\tthis.r = r;\n\t\tthis.g = g;\n\t\tthis.b = b;\n\n\t\tColorManagement.toWorkingColorSpace( this, colorSpace );\n\n\t\treturn this;\n\n\t}\n\n\tsetHSL( h, s, l, colorSpace = LinearSRGBColorSpace ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\t\th = euclideanModulo( h, 1 );\n\t\ts = clamp( s, 0, 1 );\n\t\tl = clamp( l, 0, 1 );\n\n\t\tif ( s === 0 ) {\n\n\t\t\tthis.r = this.g = this.b = l;\n\n\t\t} else {\n\n\t\t\tconst p = l <= 0.5 ? l * ( 1 + s ) : l + s - ( l * s );\n\t\t\tconst q = ( 2 * l ) - p;\n\n\t\t\tthis.r = hue2rgb( q, p, h + 1 / 3 );\n\t\t\tthis.g = hue2rgb( q, p, h );\n\t\t\tthis.b = hue2rgb( q, p, h - 1 / 3 );\n\n\t\t}\n\n\t\tColorManagement.toWorkingColorSpace( this, colorSpace );\n\n\t\treturn this;\n\n\t}\n\n\tsetStyle( style, colorSpace = SRGBColorSpace ) {\n\n\t\tfunction handleAlpha( string ) {\n\n\t\t\tif ( string === undefined ) return;\n\n\t\t\tif ( parseFloat( string ) < 1 ) {\n\n\t\t\t\tconsole.warn( 'THREE.Color: Alpha component of ' + style + ' will be ignored.' );\n\n\t\t\t}\n\n\t\t}\n\n\n\t\tlet m;\n\n\t\tif ( m = /^((?:rgb|hsl)a?)\\(([^\\)]*)\\)/.exec( style ) ) {\n\n\t\t\t// rgb / hsl\n\n\t\t\tlet color;\n\t\t\tconst name = m[ 1 ];\n\t\t\tconst components = m[ 2 ];\n\n\t\t\tswitch ( name ) {\n\n\t\t\t\tcase 'rgb':\n\t\t\t\tcase 'rgba':\n\n\t\t\t\t\tif ( color = /^\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(255,0,0) rgba(255,0,0,0.5)\n\t\t\t\t\t\tthis.r = Math.min( 255, parseInt( color[ 1 ], 10 ) ) / 255;\n\t\t\t\t\t\tthis.g = Math.min( 255, parseInt( color[ 2 ], 10 ) ) / 255;\n\t\t\t\t\t\tthis.b = Math.min( 255, parseInt( color[ 3 ], 10 ) ) / 255;\n\n\t\t\t\t\t\tColorManagement.toWorkingColorSpace( this, colorSpace );\n\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\n\n\t\t\t\t\t\treturn this;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( color = /^\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(100%,0%,0%) rgba(100%,0%,0%,0.5)\n\t\t\t\t\t\tthis.r = Math.min( 100, parseInt( color[ 1 ], 10 ) ) / 100;\n\t\t\t\t\t\tthis.g = Math.min( 100, parseInt( color[ 2 ], 10 ) ) / 100;\n\t\t\t\t\t\tthis.b = Math.min( 100, parseInt( color[ 3 ], 10 ) ) / 100;\n\n\t\t\t\t\t\tColorManagement.toWorkingColorSpace( this, colorSpace );\n\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\n\n\t\t\t\t\t\treturn this;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'hsl':\n\t\t\t\tcase 'hsla':\n\n\t\t\t\t\tif ( color = /^\\s*(\\d*\\.?\\d+)\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// hsl(120,50%,50%) hsla(120,50%,50%,0.5)\n\t\t\t\t\t\tconst h = parseFloat( color[ 1 ] ) / 360;\n\t\t\t\t\t\tconst s = parseInt( color[ 2 ], 10 ) / 100;\n\t\t\t\t\t\tconst l = parseInt( color[ 3 ], 10 ) / 100;\n\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\n\n\t\t\t\t\t\treturn this.setHSL( h, s, l, colorSpace );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t} else if ( m = /^\\#([A-Fa-f\\d]+)$/.exec( style ) ) {\n\n\t\t\t// hex color\n\n\t\t\tconst hex = m[ 1 ];\n\t\t\tconst size = hex.length;\n\n\t\t\tif ( size === 3 ) {\n\n\t\t\t\t// #ff0\n\t\t\t\tthis.r = parseInt( hex.charAt( 0 ) + hex.charAt( 0 ), 16 ) / 255;\n\t\t\t\tthis.g = parseInt( hex.charAt( 1 ) + hex.charAt( 1 ), 16 ) / 255;\n\t\t\t\tthis.b = parseInt( hex.charAt( 2 ) + hex.charAt( 2 ), 16 ) / 255;\n\n\t\t\t\tColorManagement.toWorkingColorSpace( this, colorSpace );\n\n\t\t\t\treturn this;\n\n\t\t\t} else if ( size === 6 ) {\n\n\t\t\t\t// #ff0000\n\t\t\t\tthis.r = parseInt( hex.charAt( 0 ) + hex.charAt( 1 ), 16 ) / 255;\n\t\t\t\tthis.g = parseInt( hex.charAt( 2 ) + hex.charAt( 3 ), 16 ) / 255;\n\t\t\t\tthis.b = parseInt( hex.charAt( 4 ) + hex.charAt( 5 ), 16 ) / 255;\n\n\t\t\t\tColorManagement.toWorkingColorSpace( this, colorSpace );\n\n\t\t\t\treturn this;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( style && style.length > 0 ) {\n\n\t\t\treturn this.setColorName( style, colorSpace );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetColorName( style, colorSpace = SRGBColorSpace ) {\n\n\t\t// color keywords\n\t\tconst hex = _colorKeywords[ style.toLowerCase() ];\n\n\t\tif ( hex !== undefined ) {\n\n\t\t\t// red\n\t\t\tthis.setHex( hex, colorSpace );\n\n\t\t} else {\n\n\t\t\t// unknown color\n\t\t\tconsole.warn( 'THREE.Color: Unknown color ' + style );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.r, this.g, this.b );\n\n\t}\n\n\tcopy( color ) {\n\n\t\tthis.r = color.r;\n\t\tthis.g = color.g;\n\t\tthis.b = color.b;\n\n\t\treturn this;\n\n\t}\n\n\tcopySRGBToLinear( color ) {\n\n\t\tthis.r = SRGBToLinear( color.r );\n\t\tthis.g = SRGBToLinear( color.g );\n\t\tthis.b = SRGBToLinear( color.b );\n\n\t\treturn this;\n\n\t}\n\n\tcopyLinearToSRGB( color ) {\n\n\t\tthis.r = LinearToSRGB( color.r );\n\t\tthis.g = LinearToSRGB( color.g );\n\t\tthis.b = LinearToSRGB( color.b );\n\n\t\treturn this;\n\n\t}\n\n\tconvertSRGBToLinear() {\n\n\t\tthis.copySRGBToLinear( this );\n\n\t\treturn this;\n\n\t}\n\n\tconvertLinearToSRGB() {\n\n\t\tthis.copyLinearToSRGB( this );\n\n\t\treturn this;\n\n\t}\n\n\tgetHex( colorSpace = SRGBColorSpace ) {\n\n\t\tColorManagement.fromWorkingColorSpace( toComponents( this, _rgb ), colorSpace );\n\n\t\treturn clamp( _rgb.r * 255, 0, 255 ) << 16 ^ clamp( _rgb.g * 255, 0, 255 ) << 8 ^ clamp( _rgb.b * 255, 0, 255 ) << 0;\n\n\t}\n\n\tgetHexString( colorSpace = SRGBColorSpace ) {\n\n\t\treturn ( '000000' + this.getHex( colorSpace ).toString( 16 ) ).slice( - 6 );\n\n\t}\n\n\tgetHSL( target, colorSpace = LinearSRGBColorSpace ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\n\t\tColorManagement.fromWorkingColorSpace( toComponents( this, _rgb ), colorSpace );\n\n\t\tconst r = _rgb.r, g = _rgb.g, b = _rgb.b;\n\n\t\tconst max = Math.max( r, g, b );\n\t\tconst min = Math.min( r, g, b );\n\n\t\tlet hue, saturation;\n\t\tconst lightness = ( min + max ) / 2.0;\n\n\t\tif ( min === max ) {\n\n\t\t\thue = 0;\n\t\t\tsaturation = 0;\n\n\t\t} else {\n\n\t\t\tconst delta = max - min;\n\n\t\t\tsaturation = lightness <= 0.5 ? delta / ( max + min ) : delta / ( 2 - max - min );\n\n\t\t\tswitch ( max ) {\n\n\t\t\t\tcase r: hue = ( g - b ) / delta + ( g < b ? 6 : 0 ); break;\n\t\t\t\tcase g: hue = ( b - r ) / delta + 2; break;\n\t\t\t\tcase b: hue = ( r - g ) / delta + 4; break;\n\n\t\t\t}\n\n\t\t\thue /= 6;\n\n\t\t}\n\n\t\ttarget.h = hue;\n\t\ttarget.s = saturation;\n\t\ttarget.l = lightness;\n\n\t\treturn target;\n\n\t}\n\n\tgetRGB( target, colorSpace = LinearSRGBColorSpace ) {\n\n\t\tColorManagement.fromWorkingColorSpace( toComponents( this, _rgb ), colorSpace );\n\n\t\ttarget.r = _rgb.r;\n\t\ttarget.g = _rgb.g;\n\t\ttarget.b = _rgb.b;\n\n\t\treturn target;\n\n\t}\n\n\tgetStyle( colorSpace = SRGBColorSpace ) {\n\n\t\tColorManagement.fromWorkingColorSpace( toComponents( this, _rgb ), colorSpace );\n\n\t\tif ( colorSpace !== SRGBColorSpace ) {\n\n\t\t\t// Requires CSS Color Module Level 4 (https://www.w3.org/TR/css-color-4/).\n\t\t\treturn `color(${ colorSpace } ${ _rgb.r } ${ _rgb.g } ${ _rgb.b })`;\n\n\t\t}\n\n\t\treturn `rgb(${( _rgb.r * 255 ) | 0},${( _rgb.g * 255 ) | 0},${( _rgb.b * 255 ) | 0})`;\n\n\t}\n\n\toffsetHSL( h, s, l ) {\n\n\t\tthis.getHSL( _hslA );\n\n\t\t_hslA.h += h; _hslA.s += s; _hslA.l += l;\n\n\t\tthis.setHSL( _hslA.h, _hslA.s, _hslA.l );\n\n\t\treturn this;\n\n\t}\n\n\tadd( color ) {\n\n\t\tthis.r += color.r;\n\t\tthis.g += color.g;\n\t\tthis.b += color.b;\n\n\t\treturn this;\n\n\t}\n\n\taddColors( color1, color2 ) {\n\n\t\tthis.r = color1.r + color2.r;\n\t\tthis.g = color1.g + color2.g;\n\t\tthis.b = color1.b + color2.b;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.r += s;\n\t\tthis.g += s;\n\t\tthis.b += s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( color ) {\n\n\t\tthis.r = Math.max( 0, this.r - color.r );\n\t\tthis.g = Math.max( 0, this.g - color.g );\n\t\tthis.b = Math.max( 0, this.b - color.b );\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( color ) {\n\n\t\tthis.r *= color.r;\n\t\tthis.g *= color.g;\n\t\tthis.b *= color.b;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( s ) {\n\n\t\tthis.r *= s;\n\t\tthis.g *= s;\n\t\tthis.b *= s;\n\n\t\treturn this;\n\n\t}\n\n\tlerp( color, alpha ) {\n\n\t\tthis.r += ( color.r - this.r ) * alpha;\n\t\tthis.g += ( color.g - this.g ) * alpha;\n\t\tthis.b += ( color.b - this.b ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpColors( color1, color2, alpha ) {\n\n\t\tthis.r = color1.r + ( color2.r - color1.r ) * alpha;\n\t\tthis.g = color1.g + ( color2.g - color1.g ) * alpha;\n\t\tthis.b = color1.b + ( color2.b - color1.b ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpHSL( color, alpha ) {\n\n\t\tthis.getHSL( _hslA );\n\t\tcolor.getHSL( _hslB );\n\n\t\tconst h = lerp( _hslA.h, _hslB.h, alpha );\n\t\tconst s = lerp( _hslA.s, _hslB.s, alpha );\n\t\tconst l = lerp( _hslA.l, _hslB.l, alpha );\n\n\t\tthis.setHSL( h, s, l );\n\n\t\treturn this;\n\n\t}\n\n\tequals( c ) {\n\n\t\treturn ( c.r === this.r ) && ( c.g === this.g ) && ( c.b === this.b );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.r = array[ offset ];\n\t\tthis.g = array[ offset + 1 ];\n\t\tthis.b = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.r;\n\t\tarray[ offset + 1 ] = this.g;\n\t\tarray[ offset + 2 ] = this.b;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis.r = attribute.getX( index );\n\t\tthis.g = attribute.getY( index );\n\t\tthis.b = attribute.getZ( index );\n\n\t\tif ( attribute.normalized === true ) {\n\n\t\t\t// assuming Uint8Array\n\n\t\t\tthis.r /= 255;\n\t\t\tthis.g /= 255;\n\t\t\tthis.b /= 255;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\treturn this.getHex();\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.r;\n\t\tyield this.g;\n\t\tyield this.b;\n\n\t}\n\n}\n\nColor.NAMES = _colorKeywords;\n\nlet _canvas;\n\nclass ImageUtils {\n\n\tstatic getDataURL( image ) {\n\n\t\tif ( /^data:/i.test( image.src ) ) {\n\n\t\t\treturn image.src;\n\n\t\t}\n\n\t\tif ( typeof HTMLCanvasElement == 'undefined' ) {\n\n\t\t\treturn image.src;\n\n\t\t}\n\n\t\tlet canvas;\n\n\t\tif ( image instanceof HTMLCanvasElement ) {\n\n\t\t\tcanvas = image;\n\n\t\t} else {\n\n\t\t\tif ( _canvas === undefined ) _canvas = createElementNS( 'canvas' );\n\n\t\t\t_canvas.width = image.width;\n\t\t\t_canvas.height = image.height;\n\n\t\t\tconst context = _canvas.getContext( '2d' );\n\n\t\t\tif ( image instanceof ImageData ) {\n\n\t\t\t\tcontext.putImageData( image, 0, 0 );\n\n\t\t\t} else {\n\n\t\t\t\tcontext.drawImage( image, 0, 0, image.width, image.height );\n\n\t\t\t}\n\n\t\t\tcanvas = _canvas;\n\n\t\t}\n\n\t\tif ( canvas.width > 2048 || canvas.height > 2048 ) {\n\n\t\t\tconsole.warn( 'THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons', image );\n\n\t\t\treturn canvas.toDataURL( 'image/jpeg', 0.6 );\n\n\t\t} else {\n\n\t\t\treturn canvas.toDataURL( 'image/png' );\n\n\t\t}\n\n\t}\n\n\tstatic sRGBToLinear( image ) {\n\n\t\tif ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||\n\t\t\t( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||\n\t\t\t( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) {\n\n\t\t\tconst canvas = createElementNS( 'canvas' );\n\n\t\t\tcanvas.width = image.width;\n\t\t\tcanvas.height = image.height;\n\n\t\t\tconst context = canvas.getContext( '2d' );\n\t\t\tcontext.drawImage( image, 0, 0, image.width, image.height );\n\n\t\t\tconst imageData = context.getImageData( 0, 0, image.width, image.height );\n\t\t\tconst data = imageData.data;\n\n\t\t\tfor ( let i = 0; i < data.length; i ++ ) {\n\n\t\t\t\tdata[ i ] = SRGBToLinear( data[ i ] / 255 ) * 255;\n\n\t\t\t}\n\n\t\t\tcontext.putImageData( imageData, 0, 0 );\n\n\t\t\treturn canvas;\n\n\t\t} else if ( image.data ) {\n\n\t\t\tconst data = image.data.slice( 0 );\n\n\t\t\tfor ( let i = 0; i < data.length; i ++ ) {\n\n\t\t\t\tif ( data instanceof Uint8Array || data instanceof Uint8ClampedArray ) {\n\n\t\t\t\t\tdata[ i ] = Math.floor( SRGBToLinear( data[ i ] / 255 ) * 255 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// assuming float\n\n\t\t\t\t\tdata[ i ] = SRGBToLinear( data[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tdata: data,\n\t\t\t\twidth: image.width,\n\t\t\t\theight: image.height\n\t\t\t};\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.ImageUtils.sRGBToLinear(): Unsupported image type. No color space conversion applied.' );\n\t\t\treturn image;\n\n\t\t}\n\n\t}\n\n}\n\nclass Source {\n\n\tconstructor( data = null ) {\n\n\t\tthis.isSource = true;\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.data = data;\n\n\t\tthis.version = 0;\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( ! isRootObject && meta.images[ this.uuid ] !== undefined ) {\n\n\t\t\treturn meta.images[ this.uuid ];\n\n\t\t}\n\n\t\tconst output = {\n\t\t\tuuid: this.uuid,\n\t\t\turl: ''\n\t\t};\n\n\t\tconst data = this.data;\n\n\t\tif ( data !== null ) {\n\n\t\t\tlet url;\n\n\t\t\tif ( Array.isArray( data ) ) {\n\n\t\t\t\t// cube texture\n\n\t\t\t\turl = [];\n\n\t\t\t\tfor ( let i = 0, l = data.length; i < l; i ++ ) {\n\n\t\t\t\t\tif ( data[ i ].isDataTexture ) {\n\n\t\t\t\t\t\turl.push( serializeImage( data[ i ].image ) );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\turl.push( serializeImage( data[ i ] ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// texture\n\n\t\t\t\turl = serializeImage( data );\n\n\t\t\t}\n\n\t\t\toutput.url = url;\n\n\t\t}\n\n\t\tif ( ! isRootObject ) {\n\n\t\t\tmeta.images[ this.uuid ] = output;\n\n\t\t}\n\n\t\treturn output;\n\n\t}\n\n}\n\nfunction serializeImage( image ) {\n\n\tif ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||\n\t\t( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||\n\t\t( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) {\n\n\t\t// default images\n\n\t\treturn ImageUtils.getDataURL( image );\n\n\t} else {\n\n\t\tif ( image.data ) {\n\n\t\t\t// images of DataTexture\n\n\t\t\treturn {\n\t\t\t\tdata: Array.from( image.data ),\n\t\t\t\twidth: image.width,\n\t\t\t\theight: image.height,\n\t\t\t\ttype: image.data.constructor.name\n\t\t\t};\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.Texture: Unable to serialize Texture.' );\n\t\t\treturn {};\n\n\t\t}\n\n\t}\n\n}\n\nlet textureId = 0;\n\nclass Texture extends EventDispatcher {\n\n\tconstructor( image = Texture.DEFAULT_IMAGE, mapping = Texture.DEFAULT_MAPPING, wrapS = ClampToEdgeWrapping, wrapT = ClampToEdgeWrapping, magFilter = LinearFilter, minFilter = LinearMipmapLinearFilter, format = RGBAFormat, type = UnsignedByteType, anisotropy = 1, encoding = LinearEncoding ) {\n\n\t\tsuper();\n\n\t\tthis.isTexture = true;\n\n\t\tObject.defineProperty( this, 'id', { value: textureId ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.name = '';\n\n\t\tthis.source = new Source( image );\n\t\tthis.mipmaps = [];\n\n\t\tthis.mapping = mapping;\n\n\t\tthis.wrapS = wrapS;\n\t\tthis.wrapT = wrapT;\n\n\t\tthis.magFilter = magFilter;\n\t\tthis.minFilter = minFilter;\n\n\t\tthis.anisotropy = anisotropy;\n\n\t\tthis.format = format;\n\t\tthis.internalFormat = null;\n\t\tthis.type = type;\n\n\t\tthis.offset = new Vector2( 0, 0 );\n\t\tthis.repeat = new Vector2( 1, 1 );\n\t\tthis.center = new Vector2( 0, 0 );\n\t\tthis.rotation = 0;\n\n\t\tthis.matrixAutoUpdate = true;\n\t\tthis.matrix = new Matrix3();\n\n\t\tthis.generateMipmaps = true;\n\t\tthis.premultiplyAlpha = false;\n\t\tthis.flipY = true;\n\t\tthis.unpackAlignment = 4;\t// valid values: 1, 2, 4, 8 (see http://www.khronos.org/opengles/sdk/docs/man/xhtml/glPixelStorei.xml)\n\n\t\t// Values of encoding !== THREE.LinearEncoding only supported on map, envMap and emissiveMap.\n\t\t//\n\t\t// Also changing the encoding after already used by a Material will not automatically make the Material\n\t\t// update. You need to explicitly call Material.needsUpdate to trigger it to recompile.\n\t\tthis.encoding = encoding;\n\n\t\tthis.userData = {};\n\n\t\tthis.version = 0;\n\t\tthis.onUpdate = null;\n\n\t\tthis.isRenderTargetTexture = false; // indicates whether a texture belongs to a render target or not\n\t\tthis.needsPMREMUpdate = false; // indicates whether this texture should be processed by PMREMGenerator or not (only relevant for render target textures)\n\n\t}\n\n\tget image() {\n\n\t\treturn this.source.data;\n\n\t}\n\n\tset image( value ) {\n\n\t\tthis.source.data = value;\n\n\t}\n\n\tupdateMatrix() {\n\n\t\tthis.matrix.setUvTransform( this.offset.x, this.offset.y, this.repeat.x, this.repeat.y, this.rotation, this.center.x, this.center.y );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.source = source.source;\n\t\tthis.mipmaps = source.mipmaps.slice( 0 );\n\n\t\tthis.mapping = source.mapping;\n\n\t\tthis.wrapS = source.wrapS;\n\t\tthis.wrapT = source.wrapT;\n\n\t\tthis.magFilter = source.magFilter;\n\t\tthis.minFilter = source.minFilter;\n\n\t\tthis.anisotropy = source.anisotropy;\n\n\t\tthis.format = source.format;\n\t\tthis.internalFormat = source.internalFormat;\n\t\tthis.type = source.type;\n\n\t\tthis.offset.copy( source.offset );\n\t\tthis.repeat.copy( source.repeat );\n\t\tthis.center.copy( source.center );\n\t\tthis.rotation = source.rotation;\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\t\tthis.matrix.copy( source.matrix );\n\n\t\tthis.generateMipmaps = source.generateMipmaps;\n\t\tthis.premultiplyAlpha = source.premultiplyAlpha;\n\t\tthis.flipY = source.flipY;\n\t\tthis.unpackAlignment = source.unpackAlignment;\n\t\tthis.encoding = source.encoding;\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\tthis.needsUpdate = true;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( ! isRootObject && meta.textures[ this.uuid ] !== undefined ) {\n\n\t\t\treturn meta.textures[ this.uuid ];\n\n\t\t}\n\n\t\tconst output = {\n\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Texture',\n\t\t\t\tgenerator: 'Texture.toJSON'\n\t\t\t},\n\n\t\t\tuuid: this.uuid,\n\t\t\tname: this.name,\n\n\t\t\timage: this.source.toJSON( meta ).uuid,\n\n\t\t\tmapping: this.mapping,\n\n\t\t\trepeat: [ this.repeat.x, this.repeat.y ],\n\t\t\toffset: [ this.offset.x, this.offset.y ],\n\t\t\tcenter: [ this.center.x, this.center.y ],\n\t\t\trotation: this.rotation,\n\n\t\t\twrap: [ this.wrapS, this.wrapT ],\n\n\t\t\tformat: this.format,\n\t\t\ttype: this.type,\n\t\t\tencoding: this.encoding,\n\n\t\t\tminFilter: this.minFilter,\n\t\t\tmagFilter: this.magFilter,\n\t\t\tanisotropy: this.anisotropy,\n\n\t\t\tflipY: this.flipY,\n\n\t\t\tpremultiplyAlpha: this.premultiplyAlpha,\n\t\t\tunpackAlignment: this.unpackAlignment\n\n\t\t};\n\n\t\tif ( JSON.stringify( this.userData ) !== '{}' ) output.userData = this.userData;\n\n\t\tif ( ! isRootObject ) {\n\n\t\t\tmeta.textures[ this.uuid ] = output;\n\n\t\t}\n\n\t\treturn output;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n\ttransformUv( uv ) {\n\n\t\tif ( this.mapping !== UVMapping ) return uv;\n\n\t\tuv.applyMatrix3( this.matrix );\n\n\t\tif ( uv.x < 0 || uv.x > 1 ) {\n\n\t\t\tswitch ( this.wrapS ) {\n\n\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\tuv.x = uv.x < 0 ? 0 : 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.x ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\tuv.x = Math.ceil( uv.x ) - uv.x;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( uv.y < 0 || uv.y > 1 ) {\n\n\t\t\tswitch ( this.wrapT ) {\n\n\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\tuv.y = uv.y < 0 ? 0 : 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.y ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\tuv.y = Math.ceil( uv.y ) - uv.y;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.flipY ) {\n\n\t\t\tuv.y = 1 - uv.y;\n\n\t\t}\n\n\t\treturn uv;\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) {\n\n\t\t\tthis.version ++;\n\t\t\tthis.source.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n}\n\nTexture.DEFAULT_IMAGE = null;\nTexture.DEFAULT_MAPPING = UVMapping;\n\nclass Vector4 {\n\n\tconstructor( x = 0, y = 0, z = 0, w = 1 ) {\n\n\t\tVector4.prototype.isVector4 = true;\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\t\tthis.w = w;\n\n\t}\n\n\tget width() {\n\n\t\treturn this.z;\n\n\t}\n\n\tset width( value ) {\n\n\t\tthis.z = value;\n\n\t}\n\n\tget height() {\n\n\t\treturn this.w;\n\n\t}\n\n\tset height( value ) {\n\n\t\tthis.w = value;\n\n\t}\n\n\tset( x, y, z, w ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\t\tthis.w = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetX( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetZ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetW( w ) {\n\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponent( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tcase 3: this.w = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetComponent( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tcase 3: return this.w;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.x, this.y, this.z, this.w );\n\n\t}\n\n\tcopy( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\t\tthis.w = ( v.w !== undefined ) ? v.w : 1;\n\n\t\treturn this;\n\n\t}\n\n\tadd( v ) {\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\t\tthis.w += v.w;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\t\tthis.w += s;\n\n\t\treturn this;\n\n\t}\n\n\taddVectors( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\t\tthis.w = a.w + b.w;\n\n\t\treturn this;\n\n\t}\n\n\taddScaledVector( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\t\tthis.w += v.w * s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( v ) {\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\t\tthis.w -= v.w;\n\n\t\treturn this;\n\n\t}\n\n\tsubScalar( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\t\tthis.w -= s;\n\n\t\treturn this;\n\n\t}\n\n\tsubVectors( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\t\tthis.w = a.w - b.w;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( v ) {\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\t\tthis.z *= v.z;\n\t\tthis.w *= v.w;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\tthis.z *= scalar;\n\t\tthis.w *= scalar;\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix4( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z, w = this.w;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] * w;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] * w;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] * w;\n\t\tthis.w = e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] * w;\n\n\t\treturn this;\n\n\t}\n\n\tdivideScalar( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\n\tsetAxisAngleFromQuaternion( q ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToAngle/index.htm\n\n\t\t// q is assumed to be normalized\n\n\t\tthis.w = 2 * Math.acos( q.w );\n\n\t\tconst s = Math.sqrt( 1 - q.w * q.w );\n\n\t\tif ( s < 0.0001 ) {\n\n\t\t\tthis.x = 1;\n\t\t\tthis.y = 0;\n\t\t\tthis.z = 0;\n\n\t\t} else {\n\n\t\t\tthis.x = q.x / s;\n\t\t\tthis.y = q.y / s;\n\t\t\tthis.z = q.z / s;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetAxisAngleFromRotationMatrix( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToAngle/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tlet angle, x, y, z; // variables for result\n\t\tconst epsilon = 0.01,\t\t// margin to allow for rounding errors\n\t\t\tepsilon2 = 0.1,\t\t// margin to distinguish between 0 and 180 degrees\n\n\t\t\tte = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\tif ( ( Math.abs( m12 - m21 ) < epsilon ) &&\n\t\t     ( Math.abs( m13 - m31 ) < epsilon ) &&\n\t\t     ( Math.abs( m23 - m32 ) < epsilon ) ) {\n\n\t\t\t// singularity found\n\t\t\t// first check for identity matrix which must have +1 for all terms\n\t\t\t// in leading diagonal and zero in other terms\n\n\t\t\tif ( ( Math.abs( m12 + m21 ) < epsilon2 ) &&\n\t\t\t     ( Math.abs( m13 + m31 ) < epsilon2 ) &&\n\t\t\t     ( Math.abs( m23 + m32 ) < epsilon2 ) &&\n\t\t\t     ( Math.abs( m11 + m22 + m33 - 3 ) < epsilon2 ) ) {\n\n\t\t\t\t// this singularity is identity matrix so angle = 0\n\n\t\t\t\tthis.set( 1, 0, 0, 0 );\n\n\t\t\t\treturn this; // zero angle, arbitrary axis\n\n\t\t\t}\n\n\t\t\t// otherwise this singularity is angle = 180\n\n\t\t\tangle = Math.PI;\n\n\t\t\tconst xx = ( m11 + 1 ) / 2;\n\t\t\tconst yy = ( m22 + 1 ) / 2;\n\t\t\tconst zz = ( m33 + 1 ) / 2;\n\t\t\tconst xy = ( m12 + m21 ) / 4;\n\t\t\tconst xz = ( m13 + m31 ) / 4;\n\t\t\tconst yz = ( m23 + m32 ) / 4;\n\n\t\t\tif ( ( xx > yy ) && ( xx > zz ) ) {\n\n\t\t\t\t// m11 is the largest diagonal term\n\n\t\t\t\tif ( xx < epsilon ) {\n\n\t\t\t\t\tx = 0;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tx = Math.sqrt( xx );\n\t\t\t\t\ty = xy / x;\n\t\t\t\t\tz = xz / x;\n\n\t\t\t\t}\n\n\t\t\t} else if ( yy > zz ) {\n\n\t\t\t\t// m22 is the largest diagonal term\n\n\t\t\t\tif ( yy < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\ty = Math.sqrt( yy );\n\t\t\t\t\tx = xy / y;\n\t\t\t\t\tz = yz / y;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// m33 is the largest diagonal term so base result on this\n\n\t\t\t\tif ( zz < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tz = Math.sqrt( zz );\n\t\t\t\t\tx = xz / z;\n\t\t\t\t\ty = yz / z;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.set( x, y, z, angle );\n\n\t\t\treturn this; // return 180 deg rotation\n\n\t\t}\n\n\t\t// as we have reached here there are no singularities so we can handle normally\n\n\t\tlet s = Math.sqrt( ( m32 - m23 ) * ( m32 - m23 ) +\n\t\t\t( m13 - m31 ) * ( m13 - m31 ) +\n\t\t\t( m21 - m12 ) * ( m21 - m12 ) ); // used to normalize\n\n\t\tif ( Math.abs( s ) < 0.001 ) s = 1;\n\n\t\t// prevent divide by zero, should not happen if matrix is orthogonal and should be\n\t\t// caught by singularity test above, but I've left it in just in case\n\n\t\tthis.x = ( m32 - m23 ) / s;\n\t\tthis.y = ( m13 - m31 ) / s;\n\t\tthis.z = ( m21 - m12 ) / s;\n\t\tthis.w = Math.acos( ( m11 + m22 + m33 - 1 ) / 2 );\n\n\t\treturn this;\n\n\t}\n\n\tmin( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\t\tthis.w = Math.min( this.w, v.w );\n\n\t\treturn this;\n\n\t}\n\n\tmax( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\t\tthis.w = Math.max( this.w, v.w );\n\n\t\treturn this;\n\n\t}\n\n\tclamp( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\t\tthis.w = Math.max( min.w, Math.min( max.w, this.w ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampScalar( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\t\tthis.z = Math.max( minVal, Math.min( maxVal, this.z ) );\n\t\tthis.w = Math.max( minVal, Math.min( maxVal, this.w ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampLength( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t}\n\n\tfloor() {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\t\tthis.w = Math.floor( this.w );\n\n\t\treturn this;\n\n\t}\n\n\tceil() {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\t\tthis.w = Math.ceil( this.w );\n\n\t\treturn this;\n\n\t}\n\n\tround() {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\t\tthis.w = Math.round( this.w );\n\n\t\treturn this;\n\n\t}\n\n\troundToZero() {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\t\tthis.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z );\n\t\tthis.w = ( this.w < 0 ) ? Math.ceil( this.w ) : Math.floor( this.w );\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\t\tthis.w = - this.w;\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.w;\n\n\t}\n\n\tlengthSq() {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w );\n\n\t}\n\n\tmanhattanLength() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z ) + Math.abs( this.w );\n\n\t}\n\n\tnormalize() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\tsetLength( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t}\n\n\tlerp( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\t\tthis.w += ( v.w - this.w ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpVectors( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\t\tthis.z = v1.z + ( v2.z - v1.z ) * alpha;\n\t\tthis.w = v1.w + ( v2.w - v1.w ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tequals( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) && ( v.w === this.w ) );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\t\tthis.w = array[ offset + 3 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\t\tarray[ offset + 3 ] = this.w;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\t\tthis.z = attribute.getZ( index );\n\t\tthis.w = attribute.getW( index );\n\n\t\treturn this;\n\n\t}\n\n\trandom() {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\t\tthis.z = Math.random();\n\t\tthis.w = Math.random();\n\n\t\treturn this;\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.x;\n\t\tyield this.y;\n\t\tyield this.z;\n\t\tyield this.w;\n\n\t}\n\n}\n\n/*\n In options, we can specify:\n * Texture parameters for an auto-generated target texture\n * depthBuffer/stencilBuffer: Booleans to indicate if we should generate these buffers\n*/\nclass WebGLRenderTarget extends EventDispatcher {\n\n\tconstructor( width, height, options = {} ) {\n\n\t\tsuper();\n\n\t\tthis.isWebGLRenderTarget = true;\n\n\t\tthis.width = width;\n\t\tthis.height = height;\n\t\tthis.depth = 1;\n\n\t\tthis.scissor = new Vector4( 0, 0, width, height );\n\t\tthis.scissorTest = false;\n\n\t\tthis.viewport = new Vector4( 0, 0, width, height );\n\n\t\tconst image = { width: width, height: height, depth: 1 };\n\n\t\tthis.texture = new Texture( image, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.encoding );\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t\tthis.texture.flipY = false;\n\t\tthis.texture.generateMipmaps = options.generateMipmaps !== undefined ? options.generateMipmaps : false;\n\t\tthis.texture.internalFormat = options.internalFormat !== undefined ? options.internalFormat : null;\n\t\tthis.texture.minFilter = options.minFilter !== undefined ? options.minFilter : LinearFilter;\n\n\t\tthis.depthBuffer = options.depthBuffer !== undefined ? options.depthBuffer : true;\n\t\tthis.stencilBuffer = options.stencilBuffer !== undefined ? options.stencilBuffer : false;\n\n\t\tthis.depthTexture = options.depthTexture !== undefined ? options.depthTexture : null;\n\n\t\tthis.samples = options.samples !== undefined ? options.samples : 0;\n\n\t}\n\n\tsetSize( width, height, depth = 1 ) {\n\n\t\tif ( this.width !== width || this.height !== height || this.depth !== depth ) {\n\n\t\t\tthis.width = width;\n\t\t\tthis.height = height;\n\t\t\tthis.depth = depth;\n\n\t\t\tthis.texture.image.width = width;\n\t\t\tthis.texture.image.height = height;\n\t\t\tthis.texture.image.depth = depth;\n\n\t\t\tthis.dispose();\n\n\t\t}\n\n\t\tthis.viewport.set( 0, 0, width, height );\n\t\tthis.scissor.set( 0, 0, width, height );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\t\tthis.depth = source.depth;\n\n\t\tthis.viewport.copy( source.viewport );\n\n\t\tthis.texture = source.texture.clone();\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t\t// ensure image object is not shared, see #20328\n\n\t\tconst image = Object.assign( {}, source.texture.image );\n\t\tthis.texture.source = new Source( image );\n\n\t\tthis.depthBuffer = source.depthBuffer;\n\t\tthis.stencilBuffer = source.stencilBuffer;\n\n\t\tif ( source.depthTexture !== null ) this.depthTexture = source.depthTexture.clone();\n\n\t\tthis.samples = source.samples;\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n}\n\nclass DataArrayTexture extends Texture {\n\n\tconstructor( data = null, width = 1, height = 1, depth = 1 ) {\n\n\t\tsuper( null );\n\n\t\tthis.isDataArrayTexture = true;\n\n\t\tthis.image = { data, width, height, depth };\n\n\t\tthis.magFilter = NearestFilter;\n\t\tthis.minFilter = NearestFilter;\n\n\t\tthis.wrapR = ClampToEdgeWrapping;\n\n\t\tthis.generateMipmaps = false;\n\t\tthis.flipY = false;\n\t\tthis.unpackAlignment = 1;\n\n\t}\n\n}\n\nclass WebGLArrayRenderTarget extends WebGLRenderTarget {\n\n\tconstructor( width, height, depth ) {\n\n\t\tsuper( width, height );\n\n\t\tthis.isWebGLArrayRenderTarget = true;\n\n\t\tthis.depth = depth;\n\n\t\tthis.texture = new DataArrayTexture( null, width, height, depth );\n\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t}\n\n}\n\nclass Data3DTexture extends Texture {\n\n\tconstructor( data = null, width = 1, height = 1, depth = 1 ) {\n\n\t\t// We're going to add .setXXX() methods for setting properties later.\n\t\t// Users can still set in DataTexture3D directly.\n\t\t//\n\t\t//\tconst texture = new THREE.DataTexture3D( data, width, height, depth );\n\t\t// \ttexture.anisotropy = 16;\n\t\t//\n\t\t// See #14839\n\n\t\tsuper( null );\n\n\t\tthis.isData3DTexture = true;\n\n\t\tthis.image = { data, width, height, depth };\n\n\t\tthis.magFilter = NearestFilter;\n\t\tthis.minFilter = NearestFilter;\n\n\t\tthis.wrapR = ClampToEdgeWrapping;\n\n\t\tthis.generateMipmaps = false;\n\t\tthis.flipY = false;\n\t\tthis.unpackAlignment = 1;\n\n\t}\n\n}\n\nclass WebGL3DRenderTarget extends WebGLRenderTarget {\n\n\tconstructor( width, height, depth ) {\n\n\t\tsuper( width, height );\n\n\t\tthis.isWebGL3DRenderTarget = true;\n\n\t\tthis.depth = depth;\n\n\t\tthis.texture = new Data3DTexture( null, width, height, depth );\n\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t}\n\n}\n\nclass WebGLMultipleRenderTargets extends WebGLRenderTarget {\n\n\tconstructor( width, height, count, options = {} ) {\n\n\t\tsuper( width, height, options );\n\n\t\tthis.isWebGLMultipleRenderTargets = true;\n\n\t\tconst texture = this.texture;\n\n\t\tthis.texture = [];\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tthis.texture[ i ] = texture.clone();\n\t\t\tthis.texture[ i ].isRenderTargetTexture = true;\n\n\t\t}\n\n\t}\n\n\tsetSize( width, height, depth = 1 ) {\n\n\t\tif ( this.width !== width || this.height !== height || this.depth !== depth ) {\n\n\t\t\tthis.width = width;\n\t\t\tthis.height = height;\n\t\t\tthis.depth = depth;\n\n\t\t\tfor ( let i = 0, il = this.texture.length; i < il; i ++ ) {\n\n\t\t\t\tthis.texture[ i ].image.width = width;\n\t\t\t\tthis.texture[ i ].image.height = height;\n\t\t\t\tthis.texture[ i ].image.depth = depth;\n\n\t\t\t}\n\n\t\t\tthis.dispose();\n\n\t\t}\n\n\t\tthis.viewport.set( 0, 0, width, height );\n\t\tthis.scissor.set( 0, 0, width, height );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.dispose();\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\t\tthis.depth = source.depth;\n\n\t\tthis.viewport.set( 0, 0, this.width, this.height );\n\t\tthis.scissor.set( 0, 0, this.width, this.height );\n\n\t\tthis.depthBuffer = source.depthBuffer;\n\t\tthis.stencilBuffer = source.stencilBuffer;\n\n\t\tif ( source.depthTexture !== null ) this.depthTexture = source.depthTexture.clone();\n\n\t\tthis.texture.length = 0;\n\n\t\tfor ( let i = 0, il = source.texture.length; i < il; i ++ ) {\n\n\t\t\tthis.texture[ i ] = source.texture[ i ].clone();\n\t\t\tthis.texture[ i ].isRenderTargetTexture = true;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass Quaternion {\n\n\tconstructor( x = 0, y = 0, z = 0, w = 1 ) {\n\n\t\tthis.isQuaternion = true;\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._w = w;\n\n\t}\n\n\tstatic slerpFlat( dst, dstOffset, src0, srcOffset0, src1, srcOffset1, t ) {\n\n\t\t// fuzz-free, array-based Quaternion SLERP operation\n\n\t\tlet x0 = src0[ srcOffset0 + 0 ],\n\t\t\ty0 = src0[ srcOffset0 + 1 ],\n\t\t\tz0 = src0[ srcOffset0 + 2 ],\n\t\t\tw0 = src0[ srcOffset0 + 3 ];\n\n\t\tconst x1 = src1[ srcOffset1 + 0 ],\n\t\t\ty1 = src1[ srcOffset1 + 1 ],\n\t\t\tz1 = src1[ srcOffset1 + 2 ],\n\t\t\tw1 = src1[ srcOffset1 + 3 ];\n\n\t\tif ( t === 0 ) {\n\n\t\t\tdst[ dstOffset + 0 ] = x0;\n\t\t\tdst[ dstOffset + 1 ] = y0;\n\t\t\tdst[ dstOffset + 2 ] = z0;\n\t\t\tdst[ dstOffset + 3 ] = w0;\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( t === 1 ) {\n\n\t\t\tdst[ dstOffset + 0 ] = x1;\n\t\t\tdst[ dstOffset + 1 ] = y1;\n\t\t\tdst[ dstOffset + 2 ] = z1;\n\t\t\tdst[ dstOffset + 3 ] = w1;\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1 ) {\n\n\t\t\tlet s = 1 - t;\n\t\t\tconst cos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1,\n\t\t\t\tdir = ( cos >= 0 ? 1 : - 1 ),\n\t\t\t\tsqrSin = 1 - cos * cos;\n\n\t\t\t// Skip the Slerp for tiny steps to avoid numeric problems:\n\t\t\tif ( sqrSin > Number.EPSILON ) {\n\n\t\t\t\tconst sin = Math.sqrt( sqrSin ),\n\t\t\t\t\tlen = Math.atan2( sin, cos * dir );\n\n\t\t\t\ts = Math.sin( s * len ) / sin;\n\t\t\t\tt = Math.sin( t * len ) / sin;\n\n\t\t\t}\n\n\t\t\tconst tDir = t * dir;\n\n\t\t\tx0 = x0 * s + x1 * tDir;\n\t\t\ty0 = y0 * s + y1 * tDir;\n\t\t\tz0 = z0 * s + z1 * tDir;\n\t\t\tw0 = w0 * s + w1 * tDir;\n\n\t\t\t// Normalize in case we just did a lerp:\n\t\t\tif ( s === 1 - t ) {\n\n\t\t\t\tconst f = 1 / Math.sqrt( x0 * x0 + y0 * y0 + z0 * z0 + w0 * w0 );\n\n\t\t\t\tx0 *= f;\n\t\t\t\ty0 *= f;\n\t\t\t\tz0 *= f;\n\t\t\t\tw0 *= f;\n\n\t\t\t}\n\n\t\t}\n\n\t\tdst[ dstOffset ] = x0;\n\t\tdst[ dstOffset + 1 ] = y0;\n\t\tdst[ dstOffset + 2 ] = z0;\n\t\tdst[ dstOffset + 3 ] = w0;\n\n\t}\n\n\tstatic multiplyQuaternionsFlat( dst, dstOffset, src0, srcOffset0, src1, srcOffset1 ) {\n\n\t\tconst x0 = src0[ srcOffset0 ];\n\t\tconst y0 = src0[ srcOffset0 + 1 ];\n\t\tconst z0 = src0[ srcOffset0 + 2 ];\n\t\tconst w0 = src0[ srcOffset0 + 3 ];\n\n\t\tconst x1 = src1[ srcOffset1 ];\n\t\tconst y1 = src1[ srcOffset1 + 1 ];\n\t\tconst z1 = src1[ srcOffset1 + 2 ];\n\t\tconst w1 = src1[ srcOffset1 + 3 ];\n\n\t\tdst[ dstOffset ] = x0 * w1 + w0 * x1 + y0 * z1 - z0 * y1;\n\t\tdst[ dstOffset + 1 ] = y0 * w1 + w0 * y1 + z0 * x1 - x0 * z1;\n\t\tdst[ dstOffset + 2 ] = z0 * w1 + w0 * z1 + x0 * y1 - y0 * x1;\n\t\tdst[ dstOffset + 3 ] = w0 * w1 - x0 * x1 - y0 * y1 - z0 * z1;\n\n\t\treturn dst;\n\n\t}\n\n\tget x() {\n\n\t\treturn this._x;\n\n\t}\n\n\tset x( value ) {\n\n\t\tthis._x = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget y() {\n\n\t\treturn this._y;\n\n\t}\n\n\tset y( value ) {\n\n\t\tthis._y = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget z() {\n\n\t\treturn this._z;\n\n\t}\n\n\tset z( value ) {\n\n\t\tthis._z = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget w() {\n\n\t\treturn this._w;\n\n\t}\n\n\tset w( value ) {\n\n\t\tthis._w = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tset( x, y, z, w ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._w = w;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._w );\n\n\t}\n\n\tcopy( quaternion ) {\n\n\t\tthis._x = quaternion.x;\n\t\tthis._y = quaternion.y;\n\t\tthis._z = quaternion.z;\n\t\tthis._w = quaternion.w;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromEuler( euler, update ) {\n\n\t\tif ( ! ( euler && euler.isEuler ) ) {\n\n\t\t\tthrow new Error( 'THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.' );\n\n\t\t}\n\n\t\tconst x = euler._x, y = euler._y, z = euler._z, order = euler._order;\n\n\t\t// http://www.mathworks.com/matlabcentral/fileexchange/\n\t\t// \t20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors/\n\t\t//\tcontent/SpinCalc.m\n\n\t\tconst cos = Math.cos;\n\t\tconst sin = Math.sin;\n\n\t\tconst c1 = cos( x / 2 );\n\t\tconst c2 = cos( y / 2 );\n\t\tconst c3 = cos( z / 2 );\n\n\t\tconst s1 = sin( x / 2 );\n\t\tconst s2 = sin( y / 2 );\n\t\tconst s3 = sin( z / 2 );\n\n\t\tswitch ( order ) {\n\n\t\t\tcase 'XYZ':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'YXZ':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZXY':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZYX':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'YZX':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'XZY':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.warn( 'THREE.Quaternion: .setFromEuler() encountered an unknown order: ' + order );\n\n\t\t}\n\n\t\tif ( update !== false ) this._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromAxisAngle( axis, angle ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/index.htm\n\n\t\t// assumes axis is normalized\n\n\t\tconst halfAngle = angle / 2, s = Math.sin( halfAngle );\n\n\t\tthis._x = axis.x * s;\n\t\tthis._y = axis.y * s;\n\t\tthis._z = axis.z * s;\n\t\tthis._w = Math.cos( halfAngle );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromRotationMatrix( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tconst te = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ],\n\n\t\t\ttrace = m11 + m22 + m33;\n\n\t\tif ( trace > 0 ) {\n\n\t\t\tconst s = 0.5 / Math.sqrt( trace + 1.0 );\n\n\t\t\tthis._w = 0.25 / s;\n\t\t\tthis._x = ( m32 - m23 ) * s;\n\t\t\tthis._y = ( m13 - m31 ) * s;\n\t\t\tthis._z = ( m21 - m12 ) * s;\n\n\t\t} else if ( m11 > m22 && m11 > m33 ) {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m11 - m22 - m33 );\n\n\t\t\tthis._w = ( m32 - m23 ) / s;\n\t\t\tthis._x = 0.25 * s;\n\t\t\tthis._y = ( m12 + m21 ) / s;\n\t\t\tthis._z = ( m13 + m31 ) / s;\n\n\t\t} else if ( m22 > m33 ) {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m22 - m11 - m33 );\n\n\t\t\tthis._w = ( m13 - m31 ) / s;\n\t\t\tthis._x = ( m12 + m21 ) / s;\n\t\t\tthis._y = 0.25 * s;\n\t\t\tthis._z = ( m23 + m32 ) / s;\n\n\t\t} else {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m33 - m11 - m22 );\n\n\t\t\tthis._w = ( m21 - m12 ) / s;\n\t\t\tthis._x = ( m13 + m31 ) / s;\n\t\t\tthis._y = ( m23 + m32 ) / s;\n\t\t\tthis._z = 0.25 * s;\n\n\t\t}\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromUnitVectors( vFrom, vTo ) {\n\n\t\t// assumes direction vectors vFrom and vTo are normalized\n\n\t\tlet r = vFrom.dot( vTo ) + 1;\n\n\t\tif ( r < Number.EPSILON ) {\n\n\t\t\t// vFrom and vTo point in opposite directions\n\n\t\t\tr = 0;\n\n\t\t\tif ( Math.abs( vFrom.x ) > Math.abs( vFrom.z ) ) {\n\n\t\t\t\tthis._x = - vFrom.y;\n\t\t\t\tthis._y = vFrom.x;\n\t\t\t\tthis._z = 0;\n\t\t\t\tthis._w = r;\n\n\t\t\t} else {\n\n\t\t\t\tthis._x = 0;\n\t\t\t\tthis._y = - vFrom.z;\n\t\t\t\tthis._z = vFrom.y;\n\t\t\t\tthis._w = r;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// crossVectors( vFrom, vTo ); // inlined to avoid cyclic dependency on Vector3\n\n\t\t\tthis._x = vFrom.y * vTo.z - vFrom.z * vTo.y;\n\t\t\tthis._y = vFrom.z * vTo.x - vFrom.x * vTo.z;\n\t\t\tthis._z = vFrom.x * vTo.y - vFrom.y * vTo.x;\n\t\t\tthis._w = r;\n\n\t\t}\n\n\t\treturn this.normalize();\n\n\t}\n\n\tangleTo( q ) {\n\n\t\treturn 2 * Math.acos( Math.abs( clamp( this.dot( q ), - 1, 1 ) ) );\n\n\t}\n\n\trotateTowards( q, step ) {\n\n\t\tconst angle = this.angleTo( q );\n\n\t\tif ( angle === 0 ) return this;\n\n\t\tconst t = Math.min( 1, step / angle );\n\n\t\tthis.slerp( q, t );\n\n\t\treturn this;\n\n\t}\n\n\tidentity() {\n\n\t\treturn this.set( 0, 0, 0, 1 );\n\n\t}\n\n\tinvert() {\n\n\t\t// quaternion is assumed to have unit length\n\n\t\treturn this.conjugate();\n\n\t}\n\n\tconjugate() {\n\n\t\tthis._x *= - 1;\n\t\tthis._y *= - 1;\n\t\tthis._z *= - 1;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this._x * v._x + this._y * v._y + this._z * v._z + this._w * v._w;\n\n\t}\n\n\tlengthSq() {\n\n\t\treturn this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w );\n\n\t}\n\n\tnormalize() {\n\n\t\tlet l = this.length();\n\n\t\tif ( l === 0 ) {\n\n\t\t\tthis._x = 0;\n\t\t\tthis._y = 0;\n\t\t\tthis._z = 0;\n\t\t\tthis._w = 1;\n\n\t\t} else {\n\n\t\t\tl = 1 / l;\n\n\t\t\tthis._x = this._x * l;\n\t\t\tthis._y = this._y * l;\n\t\t\tthis._z = this._z * l;\n\t\t\tthis._w = this._w * l;\n\n\t\t}\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( q ) {\n\n\t\treturn this.multiplyQuaternions( this, q );\n\n\t}\n\n\tpremultiply( q ) {\n\n\t\treturn this.multiplyQuaternions( q, this );\n\n\t}\n\n\tmultiplyQuaternions( a, b ) {\n\n\t\t// from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm\n\n\t\tconst qax = a._x, qay = a._y, qaz = a._z, qaw = a._w;\n\t\tconst qbx = b._x, qby = b._y, qbz = b._z, qbw = b._w;\n\n\t\tthis._x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby;\n\t\tthis._y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz;\n\t\tthis._z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx;\n\t\tthis._w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tslerp( qb, t ) {\n\n\t\tif ( t === 0 ) return this;\n\t\tif ( t === 1 ) return this.copy( qb );\n\n\t\tconst x = this._x, y = this._y, z = this._z, w = this._w;\n\n\t\t// http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/\n\n\t\tlet cosHalfTheta = w * qb._w + x * qb._x + y * qb._y + z * qb._z;\n\n\t\tif ( cosHalfTheta < 0 ) {\n\n\t\t\tthis._w = - qb._w;\n\t\t\tthis._x = - qb._x;\n\t\t\tthis._y = - qb._y;\n\t\t\tthis._z = - qb._z;\n\n\t\t\tcosHalfTheta = - cosHalfTheta;\n\n\t\t} else {\n\n\t\t\tthis.copy( qb );\n\n\t\t}\n\n\t\tif ( cosHalfTheta >= 1.0 ) {\n\n\t\t\tthis._w = w;\n\t\t\tthis._x = x;\n\t\t\tthis._y = y;\n\t\t\tthis._z = z;\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst sqrSinHalfTheta = 1.0 - cosHalfTheta * cosHalfTheta;\n\n\t\tif ( sqrSinHalfTheta <= Number.EPSILON ) {\n\n\t\t\tconst s = 1 - t;\n\t\t\tthis._w = s * w + t * this._w;\n\t\t\tthis._x = s * x + t * this._x;\n\t\t\tthis._y = s * y + t * this._y;\n\t\t\tthis._z = s * z + t * this._z;\n\n\t\t\tthis.normalize();\n\t\t\tthis._onChangeCallback();\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst sinHalfTheta = Math.sqrt( sqrSinHalfTheta );\n\t\tconst halfTheta = Math.atan2( sinHalfTheta, cosHalfTheta );\n\t\tconst ratioA = Math.sin( ( 1 - t ) * halfTheta ) / sinHalfTheta,\n\t\t\tratioB = Math.sin( t * halfTheta ) / sinHalfTheta;\n\n\t\tthis._w = ( w * ratioA + this._w * ratioB );\n\t\tthis._x = ( x * ratioA + this._x * ratioB );\n\t\tthis._y = ( y * ratioA + this._y * ratioB );\n\t\tthis._z = ( z * ratioA + this._z * ratioB );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tslerpQuaternions( qa, qb, t ) {\n\n\t\treturn this.copy( qa ).slerp( qb, t );\n\n\t}\n\n\trandom() {\n\n\t\t// Derived from http://planning.cs.uiuc.edu/node198.html\n\t\t// Note, this source uses w, x, y, z ordering,\n\t\t// so we swap the order below.\n\n\t\tconst u1 = Math.random();\n\t\tconst sqrt1u1 = Math.sqrt( 1 - u1 );\n\t\tconst sqrtu1 = Math.sqrt( u1 );\n\n\t\tconst u2 = 2 * Math.PI * Math.random();\n\n\t\tconst u3 = 2 * Math.PI * Math.random();\n\n\t\treturn this.set(\n\t\t\tsqrt1u1 * Math.cos( u2 ),\n\t\t\tsqrtu1 * Math.sin( u3 ),\n\t\t\tsqrtu1 * Math.cos( u3 ),\n\t\t\tsqrt1u1 * Math.sin( u2 ),\n\t\t);\n\n\t}\n\n\tequals( quaternion ) {\n\n\t\treturn ( quaternion._x === this._x ) && ( quaternion._y === this._y ) && ( quaternion._z === this._z ) && ( quaternion._w === this._w );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis._x = array[ offset ];\n\t\tthis._y = array[ offset + 1 ];\n\t\tthis._z = array[ offset + 2 ];\n\t\tthis._w = array[ offset + 3 ];\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._w;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis._x = attribute.getX( index );\n\t\tthis._y = attribute.getY( index );\n\t\tthis._z = attribute.getZ( index );\n\t\tthis._w = attribute.getW( index );\n\n\t\treturn this;\n\n\t}\n\n\t_onChange( callback ) {\n\n\t\tthis._onChangeCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\t_onChangeCallback() {}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this._x;\n\t\tyield this._y;\n\t\tyield this._z;\n\t\tyield this._w;\n\n\t}\n\n}\n\nclass Vector3 {\n\n\tconstructor( x = 0, y = 0, z = 0 ) {\n\n\t\tVector3.prototype.isVector3 = true;\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\n\t}\n\n\tset( x, y, z ) {\n\n\t\tif ( z === undefined ) z = this.z; // sprite.scale.set(x,y)\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetX( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetZ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponent( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetComponent( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.x, this.y, this.z );\n\n\t}\n\n\tcopy( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\n\t\treturn this;\n\n\t}\n\n\tadd( v ) {\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\n\t\treturn this;\n\n\t}\n\n\taddVectors( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\n\t\treturn this;\n\n\t}\n\n\taddScaledVector( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( v ) {\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\n\t\treturn this;\n\n\t}\n\n\tsubScalar( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\n\t\treturn this;\n\n\t}\n\n\tsubVectors( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( v ) {\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\t\tthis.z *= v.z;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\tthis.z *= scalar;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyVectors( a, b ) {\n\n\t\tthis.x = a.x * b.x;\n\t\tthis.y = a.y * b.y;\n\t\tthis.z = a.z * b.z;\n\n\t\treturn this;\n\n\t}\n\n\tapplyEuler( euler ) {\n\n\t\treturn this.applyQuaternion( _quaternion$4.setFromEuler( euler ) );\n\n\t}\n\n\tapplyAxisAngle( axis, angle ) {\n\n\t\treturn this.applyQuaternion( _quaternion$4.setFromAxisAngle( axis, angle ) );\n\n\t}\n\n\tapplyMatrix3( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 5 ] * y + e[ 8 ] * z;\n\n\t\treturn this;\n\n\t}\n\n\tapplyNormalMatrix( m ) {\n\n\t\treturn this.applyMatrix3( m ).normalize();\n\n\t}\n\n\tapplyMatrix4( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tconst w = 1 / ( e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] );\n\n\t\tthis.x = ( e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] ) * w;\n\t\tthis.y = ( e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] ) * w;\n\t\tthis.z = ( e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] ) * w;\n\n\t\treturn this;\n\n\t}\n\n\tapplyQuaternion( q ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst qx = q.x, qy = q.y, qz = q.z, qw = q.w;\n\n\t\t// calculate quat * vector\n\n\t\tconst ix = qw * x + qy * z - qz * y;\n\t\tconst iy = qw * y + qz * x - qx * z;\n\t\tconst iz = qw * z + qx * y - qy * x;\n\t\tconst iw = - qx * x - qy * y - qz * z;\n\n\t\t// calculate result * inverse quat\n\n\t\tthis.x = ix * qw + iw * - qx + iy * - qz - iz * - qy;\n\t\tthis.y = iy * qw + iw * - qy + iz * - qx - ix * - qz;\n\t\tthis.z = iz * qw + iw * - qz + ix * - qy - iy * - qx;\n\n\t\treturn this;\n\n\t}\n\n\tproject( camera ) {\n\n\t\treturn this.applyMatrix4( camera.matrixWorldInverse ).applyMatrix4( camera.projectionMatrix );\n\n\t}\n\n\tunproject( camera ) {\n\n\t\treturn this.applyMatrix4( camera.projectionMatrixInverse ).applyMatrix4( camera.matrixWorld );\n\n\t}\n\n\ttransformDirection( m ) {\n\n\t\t// input: THREE.Matrix4 affine matrix\n\t\t// vector interpreted as a direction\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z;\n\n\t\treturn this.normalize();\n\n\t}\n\n\tdivide( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\t\tthis.z /= v.z;\n\n\t\treturn this;\n\n\t}\n\n\tdivideScalar( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\n\tmin( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\n\t\treturn this;\n\n\t}\n\n\tmax( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\n\t\treturn this;\n\n\t}\n\n\tclamp( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampScalar( minVal, maxVal ) {\n\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\n\t\tthis.z = Math.max( minVal, Math.min( maxVal, this.z ) );\n\n\t\treturn this;\n\n\t}\n\n\tclampLength( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\n\n\t}\n\n\tfloor() {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\n\t\treturn this;\n\n\t}\n\n\tceil() {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\n\t\treturn this;\n\n\t}\n\n\tround() {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\n\t\treturn this;\n\n\t}\n\n\troundToZero() {\n\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\n\t\tthis.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z );\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z;\n\n\t}\n\n\t// TODO lengthSquared?\n\n\tlengthSq() {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z );\n\n\t}\n\n\tmanhattanLength() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z );\n\n\t}\n\n\tnormalize() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\tsetLength( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t}\n\n\tlerp( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpVectors( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\t\tthis.z = v1.z + ( v2.z - v1.z ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tcross( v ) {\n\n\t\treturn this.crossVectors( this, v );\n\n\t}\n\n\tcrossVectors( a, b ) {\n\n\t\tconst ax = a.x, ay = a.y, az = a.z;\n\t\tconst bx = b.x, by = b.y, bz = b.z;\n\n\t\tthis.x = ay * bz - az * by;\n\t\tthis.y = az * bx - ax * bz;\n\t\tthis.z = ax * by - ay * bx;\n\n\t\treturn this;\n\n\t}\n\n\tprojectOnVector( v ) {\n\n\t\tconst denominator = v.lengthSq();\n\n\t\tif ( denominator === 0 ) return this.set( 0, 0, 0 );\n\n\t\tconst scalar = v.dot( this ) / denominator;\n\n\t\treturn this.copy( v ).multiplyScalar( scalar );\n\n\t}\n\n\tprojectOnPlane( planeNormal ) {\n\n\t\t_vector$c.copy( this ).projectOnVector( planeNormal );\n\n\t\treturn this.sub( _vector$c );\n\n\t}\n\n\treflect( normal ) {\n\n\t\t// reflect incident vector off plane orthogonal to normal\n\t\t// normal is assumed to have unit length\n\n\t\treturn this.sub( _vector$c.copy( normal ).multiplyScalar( 2 * this.dot( normal ) ) );\n\n\t}\n\n\tangleTo( v ) {\n\n\t\tconst denominator = Math.sqrt( this.lengthSq() * v.lengthSq() );\n\n\t\tif ( denominator === 0 ) return Math.PI / 2;\n\n\t\tconst theta = this.dot( v ) / denominator;\n\n\t\t// clamp, to handle numerical problems\n\n\t\treturn Math.acos( clamp( theta, - 1, 1 ) );\n\n\t}\n\n\tdistanceTo( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t}\n\n\tdistanceToSquared( v ) {\n\n\t\tconst dx = this.x - v.x, dy = this.y - v.y, dz = this.z - v.z;\n\n\t\treturn dx * dx + dy * dy + dz * dz;\n\n\t}\n\n\tmanhattanDistanceTo( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y ) + Math.abs( this.z - v.z );\n\n\t}\n\n\tsetFromSpherical( s ) {\n\n\t\treturn this.setFromSphericalCoords( s.radius, s.phi, s.theta );\n\n\t}\n\n\tsetFromSphericalCoords( radius, phi, theta ) {\n\n\t\tconst sinPhiRadius = Math.sin( phi ) * radius;\n\n\t\tthis.x = sinPhiRadius * Math.sin( theta );\n\t\tthis.y = Math.cos( phi ) * radius;\n\t\tthis.z = sinPhiRadius * Math.cos( theta );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromCylindrical( c ) {\n\n\t\treturn this.setFromCylindricalCoords( c.radius, c.theta, c.y );\n\n\t}\n\n\tsetFromCylindricalCoords( radius, theta, y ) {\n\n\t\tthis.x = radius * Math.sin( theta );\n\t\tthis.y = y;\n\t\tthis.z = radius * Math.cos( theta );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrixPosition( m ) {\n\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 12 ];\n\t\tthis.y = e[ 13 ];\n\t\tthis.z = e[ 14 ];\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrixScale( m ) {\n\n\t\tconst sx = this.setFromMatrixColumn( m, 0 ).length();\n\t\tconst sy = this.setFromMatrixColumn( m, 1 ).length();\n\t\tconst sz = this.setFromMatrixColumn( m, 2 ).length();\n\n\t\tthis.x = sx;\n\t\tthis.y = sy;\n\t\tthis.z = sz;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrixColumn( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 4 );\n\n\t}\n\n\tsetFromMatrix3Column( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 3 );\n\n\t}\n\n\tsetFromEuler( e ) {\n\n\t\tthis.x = e._x;\n\t\tthis.y = e._y;\n\t\tthis.z = e._z;\n\n\t\treturn this;\n\n\t}\n\n\tequals( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\t\tthis.z = attribute.getZ( index );\n\n\t\treturn this;\n\n\t}\n\n\trandom() {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\t\tthis.z = Math.random();\n\n\t\treturn this;\n\n\t}\n\n\trandomDirection() {\n\n\t\t// Derived from https://mathworld.wolfram.com/SpherePointPicking.html\n\n\t\tconst u = ( Math.random() - 0.5 ) * 2;\n\t\tconst t = Math.random() * Math.PI * 2;\n\t\tconst f = Math.sqrt( 1 - u ** 2 );\n\n\t\tthis.x = f * Math.cos( t );\n\t\tthis.y = f * Math.sin( t );\n\t\tthis.z = u;\n\n\t\treturn this;\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.x;\n\t\tyield this.y;\n\t\tyield this.z;\n\n\t}\n\n}\n\nconst _vector$c = /*@__PURE__*/ new Vector3();\nconst _quaternion$4 = /*@__PURE__*/ new Quaternion();\n\nclass Box3 {\n\n\tconstructor( min = new Vector3( + Infinity, + Infinity, + Infinity ), max = new Vector3( - Infinity, - Infinity, - Infinity ) ) {\n\n\t\tthis.isBox3 = true;\n\n\t\tthis.min = min;\n\t\tthis.max = max;\n\n\t}\n\n\tset( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromArray( array ) {\n\n\t\tlet minX = + Infinity;\n\t\tlet minY = + Infinity;\n\t\tlet minZ = + Infinity;\n\n\t\tlet maxX = - Infinity;\n\t\tlet maxY = - Infinity;\n\t\tlet maxZ = - Infinity;\n\n\t\tfor ( let i = 0, l = array.length; i < l; i += 3 ) {\n\n\t\t\tconst x = array[ i ];\n\t\t\tconst y = array[ i + 1 ];\n\t\t\tconst z = array[ i + 2 ];\n\n\t\t\tif ( x < minX ) minX = x;\n\t\t\tif ( y < minY ) minY = y;\n\t\t\tif ( z < minZ ) minZ = z;\n\n\t\t\tif ( x > maxX ) maxX = x;\n\t\t\tif ( y > maxY ) maxY = y;\n\t\t\tif ( z > maxZ ) maxZ = z;\n\n\t\t}\n\n\t\tthis.min.set( minX, minY, minZ );\n\t\tthis.max.set( maxX, maxY, maxZ );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromBufferAttribute( attribute ) {\n\n\t\tlet minX = + Infinity;\n\t\tlet minY = + Infinity;\n\t\tlet minZ = + Infinity;\n\n\t\tlet maxX = - Infinity;\n\t\tlet maxY = - Infinity;\n\t\tlet maxZ = - Infinity;\n\n\t\tfor ( let i = 0, l = attribute.count; i < l; i ++ ) {\n\n\t\t\tconst x = attribute.getX( i );\n\t\t\tconst y = attribute.getY( i );\n\t\t\tconst z = attribute.getZ( i );\n\n\t\t\tif ( x < minX ) minX = x;\n\t\t\tif ( y < minY ) minY = y;\n\t\t\tif ( z < minZ ) minZ = z;\n\n\t\t\tif ( x > maxX ) maxX = x;\n\t\t\tif ( y > maxY ) maxY = y;\n\t\t\tif ( z > maxZ ) maxZ = z;\n\n\t\t}\n\n\t\tthis.min.set( minX, minY, minZ );\n\t\tthis.max.set( maxX, maxY, maxZ );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPoints( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetFromCenterAndSize( center, size ) {\n\n\t\tconst halfSize = _vector$b.copy( size ).multiplyScalar( 0.5 );\n\n\t\tthis.min.copy( center ).sub( halfSize );\n\t\tthis.max.copy( center ).add( halfSize );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromObject( object, precise = false ) {\n\n\t\tthis.makeEmpty();\n\n\t\treturn this.expandByObject( object, precise );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t}\n\n\tmakeEmpty() {\n\n\t\tthis.min.x = this.min.y = this.min.z = + Infinity;\n\t\tthis.max.x = this.max.y = this.max.z = - Infinity;\n\n\t\treturn this;\n\n\t}\n\n\tisEmpty() {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y ) || ( this.max.z < this.min.z );\n\n\t}\n\n\tgetCenter( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t}\n\n\tgetSize( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.subVectors( this.max, this.min );\n\n\t}\n\n\texpandByPoint( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t}\n\n\texpandByVector( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t}\n\n\texpandByScalar( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t}\n\n\texpandByObject( object, precise = false ) {\n\n\t\t// Computes the world-axis-aligned bounding box of an object (including its children),\n\t\t// accounting for both the object's, and children's, world transforms\n\n\t\tobject.updateWorldMatrix( false, false );\n\n\t\tconst geometry = object.geometry;\n\n\t\tif ( geometry !== undefined ) {\n\n\t\t\tif ( precise && geometry.attributes != undefined && geometry.attributes.position !== undefined ) {\n\n\t\t\t\tconst position = geometry.attributes.position;\n\t\t\t\tfor ( let i = 0, l = position.count; i < l; i ++ ) {\n\n\t\t\t\t\t_vector$b.fromBufferAttribute( position, i ).applyMatrix4( object.matrixWorld );\n\t\t\t\t\tthis.expandByPoint( _vector$b );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( geometry.boundingBox === null ) {\n\n\t\t\t\t\tgeometry.computeBoundingBox();\n\n\t\t\t\t}\n\n\t\t\t\t_box$3.copy( geometry.boundingBox );\n\t\t\t\t_box$3.applyMatrix4( object.matrixWorld );\n\n\t\t\t\tthis.union( _box$3 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tthis.expandByObject( children[ i ], precise );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\treturn point.x < this.min.x || point.x > this.max.x ||\n\t\t\tpoint.y < this.min.y || point.y > this.max.y ||\n\t\t\tpoint.z < this.min.z || point.z > this.max.z ? false : true;\n\n\t}\n\n\tcontainsBox( box ) {\n\n\t\treturn this.min.x <= box.min.x && box.max.x <= this.max.x &&\n\t\t\tthis.min.y <= box.min.y && box.max.y <= this.max.y &&\n\t\t\tthis.min.z <= box.min.z && box.max.z <= this.max.z;\n\n\t}\n\n\tgetParameter( point, target ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\treturn target.set(\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y ),\n\t\t\t( point.z - this.min.z ) / ( this.max.z - this.min.z )\n\t\t);\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\t// using 6 splitting planes to rule out intersections.\n\t\treturn box.max.x < this.min.x || box.min.x > this.max.x ||\n\t\t\tbox.max.y < this.min.y || box.min.y > this.max.y ||\n\t\t\tbox.max.z < this.min.z || box.min.z > this.max.z ? false : true;\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\t// Find the point on the AABB closest to the sphere center.\n\t\tthis.clampPoint( sphere.center, _vector$b );\n\n\t\t// If that point is inside the sphere, the AABB and sphere intersect.\n\t\treturn _vector$b.distanceToSquared( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t}\n\n\tintersectsPlane( plane ) {\n\n\t\t// We compute the minimum and maximum dot product values. If those values\n\t\t// are on the same side (back or front) of the plane, then there is no intersection.\n\n\t\tlet min, max;\n\n\t\tif ( plane.normal.x > 0 ) {\n\n\t\t\tmin = plane.normal.x * this.min.x;\n\t\t\tmax = plane.normal.x * this.max.x;\n\n\t\t} else {\n\n\t\t\tmin = plane.normal.x * this.max.x;\n\t\t\tmax = plane.normal.x * this.min.x;\n\n\t\t}\n\n\t\tif ( plane.normal.y > 0 ) {\n\n\t\t\tmin += plane.normal.y * this.min.y;\n\t\t\tmax += plane.normal.y * this.max.y;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.y * this.max.y;\n\t\t\tmax += plane.normal.y * this.min.y;\n\n\t\t}\n\n\t\tif ( plane.normal.z > 0 ) {\n\n\t\t\tmin += plane.normal.z * this.min.z;\n\t\t\tmax += plane.normal.z * this.max.z;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.z * this.max.z;\n\t\t\tmax += plane.normal.z * this.min.z;\n\n\t\t}\n\n\t\treturn ( min <= - plane.constant && max >= - plane.constant );\n\n\t}\n\n\tintersectsTriangle( triangle ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// compute box center and extents\n\t\tthis.getCenter( _center );\n\t\t_extents.subVectors( this.max, _center );\n\n\t\t// translate triangle to aabb origin\n\t\t_v0$2.subVectors( triangle.a, _center );\n\t\t_v1$7.subVectors( triangle.b, _center );\n\t\t_v2$3.subVectors( triangle.c, _center );\n\n\t\t// compute edge vectors for triangle\n\t\t_f0.subVectors( _v1$7, _v0$2 );\n\t\t_f1.subVectors( _v2$3, _v1$7 );\n\t\t_f2.subVectors( _v0$2, _v2$3 );\n\n\t\t// test against axes that are given by cross product combinations of the edges of the triangle and the edges of the aabb\n\t\t// make an axis testing of each of the 3 sides of the aabb against each of the 3 sides of the triangle = 9 axis of separation\n\t\t// axis_ij = u_i x f_j (u0, u1, u2 = face normals of aabb = x,y,z axes vectors since aabb is axis aligned)\n\t\tlet axes = [\n\t\t\t0, - _f0.z, _f0.y, 0, - _f1.z, _f1.y, 0, - _f2.z, _f2.y,\n\t\t\t_f0.z, 0, - _f0.x, _f1.z, 0, - _f1.x, _f2.z, 0, - _f2.x,\n\t\t\t- _f0.y, _f0.x, 0, - _f1.y, _f1.x, 0, - _f2.y, _f2.x, 0\n\t\t];\n\t\tif ( ! satForAxes( axes, _v0$2, _v1$7, _v2$3, _extents ) ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// test 3 face normals from the aabb\n\t\taxes = [ 1, 0, 0, 0, 1, 0, 0, 0, 1 ];\n\t\tif ( ! satForAxes( axes, _v0$2, _v1$7, _v2$3, _extents ) ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// finally testing the face normal of the triangle\n\t\t// use already existing triangle edge vectors here\n\t\t_triangleNormal.crossVectors( _f0, _f1 );\n\t\taxes = [ _triangleNormal.x, _triangleNormal.y, _triangleNormal.z ];\n\n\t\treturn satForAxes( axes, _v0$2, _v1$7, _v2$3, _extents );\n\n\t}\n\n\tclampPoint( point, target ) {\n\n\t\treturn target.copy( point ).clamp( this.min, this.max );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\tconst clampedPoint = _vector$b.copy( point ).clamp( this.min, this.max );\n\n\t\treturn clampedPoint.sub( point ).length();\n\n\t}\n\n\tgetBoundingSphere( target ) {\n\n\t\tthis.getCenter( target.center );\n\n\t\ttarget.radius = this.getSize( _vector$b ).length() * 0.5;\n\n\t\treturn target;\n\n\t}\n\n\tintersect( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\t// ensure that if there is no overlap, the result is fully empty, not slightly empty with non-inf/+inf values that will cause subsequence intersects to erroneously return valid values.\n\t\tif ( this.isEmpty() ) this.makeEmpty();\n\n\t\treturn this;\n\n\t}\n\n\tunion( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix4( matrix ) {\n\n\t\t// transform of empty box is an empty box.\n\t\tif ( this.isEmpty() ) return this;\n\n\t\t// NOTE: I am using a binary pattern to specify all 2^3 combinations below\n\t\t_points[ 0 ].set( this.min.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 000\n\t\t_points[ 1 ].set( this.min.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 001\n\t\t_points[ 2 ].set( this.min.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 010\n\t\t_points[ 3 ].set( this.min.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 011\n\t\t_points[ 4 ].set( this.max.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 100\n\t\t_points[ 5 ].set( this.max.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 101\n\t\t_points[ 6 ].set( this.max.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 110\n\t\t_points[ 7 ].set( this.max.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 111\n\n\t\tthis.setFromPoints( _points );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t}\n\n\tequals( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n}\n\nconst _points = [\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3()\n];\n\nconst _vector$b = /*@__PURE__*/ new Vector3();\n\nconst _box$3 = /*@__PURE__*/ new Box3();\n\n// triangle centered vertices\n\nconst _v0$2 = /*@__PURE__*/ new Vector3();\nconst _v1$7 = /*@__PURE__*/ new Vector3();\nconst _v2$3 = /*@__PURE__*/ new Vector3();\n\n// triangle edge vectors\n\nconst _f0 = /*@__PURE__*/ new Vector3();\nconst _f1 = /*@__PURE__*/ new Vector3();\nconst _f2 = /*@__PURE__*/ new Vector3();\n\nconst _center = /*@__PURE__*/ new Vector3();\nconst _extents = /*@__PURE__*/ new Vector3();\nconst _triangleNormal = /*@__PURE__*/ new Vector3();\nconst _testAxis = /*@__PURE__*/ new Vector3();\n\nfunction satForAxes( axes, v0, v1, v2, extents ) {\n\n\tfor ( let i = 0, j = axes.length - 3; i <= j; i += 3 ) {\n\n\t\t_testAxis.fromArray( axes, i );\n\t\t// project the aabb onto the separating axis\n\t\tconst r = extents.x * Math.abs( _testAxis.x ) + extents.y * Math.abs( _testAxis.y ) + extents.z * Math.abs( _testAxis.z );\n\t\t// project all 3 vertices of the triangle onto the separating axis\n\t\tconst p0 = v0.dot( _testAxis );\n\t\tconst p1 = v1.dot( _testAxis );\n\t\tconst p2 = v2.dot( _testAxis );\n\t\t// actual test, basically see if either of the most extreme of the triangle points intersects r\n\t\tif ( Math.max( - Math.max( p0, p1, p2 ), Math.min( p0, p1, p2 ) ) > r ) {\n\n\t\t\t// points of the projected triangle are outside the projected half-length of the aabb\n\t\t\t// the axis is separating and we can exit\n\t\t\treturn false;\n\n\t\t}\n\n\t}\n\n\treturn true;\n\n}\n\nconst _box$2 = /*@__PURE__*/ new Box3();\nconst _v1$6 = /*@__PURE__*/ new Vector3();\nconst _toFarthestPoint = /*@__PURE__*/ new Vector3();\nconst _toPoint = /*@__PURE__*/ new Vector3();\n\nclass Sphere {\n\n\tconstructor( center = new Vector3(), radius = - 1 ) {\n\n\t\tthis.center = center;\n\t\tthis.radius = radius;\n\n\t}\n\n\tset( center, radius ) {\n\n\t\tthis.center.copy( center );\n\t\tthis.radius = radius;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPoints( points, optionalCenter ) {\n\n\t\tconst center = this.center;\n\n\t\tif ( optionalCenter !== undefined ) {\n\n\t\t\tcenter.copy( optionalCenter );\n\n\t\t} else {\n\n\t\t\t_box$2.setFromPoints( points ).getCenter( center );\n\n\t\t}\n\n\t\tlet maxRadiusSq = 0;\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( points[ i ] ) );\n\n\t\t}\n\n\t\tthis.radius = Math.sqrt( maxRadiusSq );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( sphere ) {\n\n\t\tthis.center.copy( sphere.center );\n\t\tthis.radius = sphere.radius;\n\n\t\treturn this;\n\n\t}\n\n\tisEmpty() {\n\n\t\treturn ( this.radius < 0 );\n\n\t}\n\n\tmakeEmpty() {\n\n\t\tthis.center.set( 0, 0, 0 );\n\t\tthis.radius = - 1;\n\n\t\treturn this;\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\treturn ( point.distanceToSquared( this.center ) <= ( this.radius * this.radius ) );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn ( point.distanceTo( this.center ) - this.radius );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\tconst radiusSum = this.radius + sphere.radius;\n\n\t\treturn sphere.center.distanceToSquared( this.center ) <= ( radiusSum * radiusSum );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn box.intersectsSphere( this );\n\n\t}\n\n\tintersectsPlane( plane ) {\n\n\t\treturn Math.abs( plane.distanceToPoint( this.center ) ) <= this.radius;\n\n\t}\n\n\tclampPoint( point, target ) {\n\n\t\tconst deltaLengthSq = this.center.distanceToSquared( point );\n\n\t\ttarget.copy( point );\n\n\t\tif ( deltaLengthSq > ( this.radius * this.radius ) ) {\n\n\t\t\ttarget.sub( this.center ).normalize();\n\t\t\ttarget.multiplyScalar( this.radius ).add( this.center );\n\n\t\t}\n\n\t\treturn target;\n\n\t}\n\n\tgetBoundingBox( target ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\t// Empty sphere produces empty bounding box\n\t\t\ttarget.makeEmpty();\n\t\t\treturn target;\n\n\t\t}\n\n\t\ttarget.set( this.center, this.center );\n\t\ttarget.expandByScalar( this.radius );\n\n\t\treturn target;\n\n\t}\n\n\tapplyMatrix4( matrix ) {\n\n\t\tthis.center.applyMatrix4( matrix );\n\t\tthis.radius = this.radius * matrix.getMaxScaleOnAxis();\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( offset ) {\n\n\t\tthis.center.add( offset );\n\n\t\treturn this;\n\n\t}\n\n\texpandByPoint( point ) {\n\n\t\t// from https://github.com/juj/MathGeoLib/blob/2940b99b99cfe575dd45103ef20f4019dee15b54/src/Geometry/Sphere.cpp#L649-L671\n\n\t\t_toPoint.subVectors( point, this.center );\n\n\t\tconst lengthSq = _toPoint.lengthSq();\n\n\t\tif ( lengthSq > ( this.radius * this.radius ) ) {\n\n\t\t\tconst length = Math.sqrt( lengthSq );\n\t\t\tconst missingRadiusHalf = ( length - this.radius ) * 0.5;\n\n\t\t\t// Nudge this sphere towards the target point. Add half the missing distance to radius,\n\t\t\t// and the other half to position. This gives a tighter enclosure, instead of if\n\t\t\t// the whole missing distance were just added to radius.\n\n\t\t\tthis.center.add( _toPoint.multiplyScalar( missingRadiusHalf / length ) );\n\t\t\tthis.radius += missingRadiusHalf;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tunion( sphere ) {\n\n\t\t// from https://github.com/juj/MathGeoLib/blob/2940b99b99cfe575dd45103ef20f4019dee15b54/src/Geometry/Sphere.cpp#L759-L769\n\n\t\t// To enclose another sphere into this sphere, we only need to enclose two points:\n\t\t// 1) Enclose the farthest point on the other sphere into this sphere.\n\t\t// 2) Enclose the opposite point of the farthest point into this sphere.\n\n\t\t if ( this.center.equals( sphere.center ) === true ) {\n\n\t\t\t _toFarthestPoint.set( 0, 0, 1 ).multiplyScalar( sphere.radius );\n\n\n\t\t} else {\n\n\t\t\t_toFarthestPoint.subVectors( sphere.center, this.center ).normalize().multiplyScalar( sphere.radius );\n\n\t\t}\n\n\t\tthis.expandByPoint( _v1$6.copy( sphere.center ).add( _toFarthestPoint ) );\n\t\tthis.expandByPoint( _v1$6.copy( sphere.center ).sub( _toFarthestPoint ) );\n\n\t\treturn this;\n\n\t}\n\n\tequals( sphere ) {\n\n\t\treturn sphere.center.equals( this.center ) && ( sphere.radius === this.radius );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nconst _vector$a = /*@__PURE__*/ new Vector3();\nconst _segCenter = /*@__PURE__*/ new Vector3();\nconst _segDir = /*@__PURE__*/ new Vector3();\nconst _diff = /*@__PURE__*/ new Vector3();\n\nconst _edge1 = /*@__PURE__*/ new Vector3();\nconst _edge2 = /*@__PURE__*/ new Vector3();\nconst _normal$1 = /*@__PURE__*/ new Vector3();\n\nclass Ray {\n\n\tconstructor( origin = new Vector3(), direction = new Vector3( 0, 0, - 1 ) ) {\n\n\t\tthis.origin = origin;\n\t\tthis.direction = direction;\n\n\t}\n\n\tset( origin, direction ) {\n\n\t\tthis.origin.copy( origin );\n\t\tthis.direction.copy( direction );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( ray ) {\n\n\t\tthis.origin.copy( ray.origin );\n\t\tthis.direction.copy( ray.direction );\n\n\t\treturn this;\n\n\t}\n\n\tat( t, target ) {\n\n\t\treturn target.copy( this.direction ).multiplyScalar( t ).add( this.origin );\n\n\t}\n\n\tlookAt( v ) {\n\n\t\tthis.direction.copy( v ).sub( this.origin ).normalize();\n\n\t\treturn this;\n\n\t}\n\n\trecast( t ) {\n\n\t\tthis.origin.copy( this.at( t, _vector$a ) );\n\n\t\treturn this;\n\n\t}\n\n\tclosestPointToPoint( point, target ) {\n\n\t\ttarget.subVectors( point, this.origin );\n\n\t\tconst directionDistance = target.dot( this.direction );\n\n\t\tif ( directionDistance < 0 ) {\n\n\t\t\treturn target.copy( this.origin );\n\n\t\t}\n\n\t\treturn target.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn Math.sqrt( this.distanceSqToPoint( point ) );\n\n\t}\n\n\tdistanceSqToPoint( point ) {\n\n\t\tconst directionDistance = _vector$a.subVectors( point, this.origin ).dot( this.direction );\n\n\t\t// point behind the ray\n\n\t\tif ( directionDistance < 0 ) {\n\n\t\t\treturn this.origin.distanceToSquared( point );\n\n\t\t}\n\n\t\t_vector$a.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin );\n\n\t\treturn _vector$a.distanceToSquared( point );\n\n\t}\n\n\tdistanceSqToSegment( v0, v1, optionalPointOnRay, optionalPointOnSegment ) {\n\n\t\t// from https://github.com/pmjoniak/GeometricTools/blob/master/GTEngine/Include/Mathematics/GteDistRaySegment.h\n\t\t// It returns the min distance between the ray and the segment\n\t\t// defined by v0 and v1\n\t\t// It can also set two optional targets :\n\t\t// - The closest point on the ray\n\t\t// - The closest point on the segment\n\n\t\t_segCenter.copy( v0 ).add( v1 ).multiplyScalar( 0.5 );\n\t\t_segDir.copy( v1 ).sub( v0 ).normalize();\n\t\t_diff.copy( this.origin ).sub( _segCenter );\n\n\t\tconst segExtent = v0.distanceTo( v1 ) * 0.5;\n\t\tconst a01 = - this.direction.dot( _segDir );\n\t\tconst b0 = _diff.dot( this.direction );\n\t\tconst b1 = - _diff.dot( _segDir );\n\t\tconst c = _diff.lengthSq();\n\t\tconst det = Math.abs( 1 - a01 * a01 );\n\t\tlet s0, s1, sqrDist, extDet;\n\n\t\tif ( det > 0 ) {\n\n\t\t\t// The ray and segment are not parallel.\n\n\t\t\ts0 = a01 * b1 - b0;\n\t\t\ts1 = a01 * b0 - b1;\n\t\t\textDet = segExtent * det;\n\n\t\t\tif ( s0 >= 0 ) {\n\n\t\t\t\tif ( s1 >= - extDet ) {\n\n\t\t\t\t\tif ( s1 <= extDet ) {\n\n\t\t\t\t\t\t// region 0\n\t\t\t\t\t\t// Minimum at interior points of ray and segment.\n\n\t\t\t\t\t\tconst invDet = 1 / det;\n\t\t\t\t\t\ts0 *= invDet;\n\t\t\t\t\t\ts1 *= invDet;\n\t\t\t\t\t\tsqrDist = s0 * ( s0 + a01 * s1 + 2 * b0 ) + s1 * ( a01 * s0 + s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// region 1\n\n\t\t\t\t\t\ts1 = segExtent;\n\t\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// region 5\n\n\t\t\t\t\ts1 = - segExtent;\n\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( s1 <= - extDet ) {\n\n\t\t\t\t\t// region 4\n\n\t\t\t\t\ts0 = Math.max( 0, - ( - a01 * segExtent + b0 ) );\n\t\t\t\t\ts1 = ( s0 > 0 ) ? - segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t} else if ( s1 <= extDet ) {\n\n\t\t\t\t\t// region 3\n\n\t\t\t\t\ts0 = 0;\n\t\t\t\t\ts1 = Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// region 2\n\n\t\t\t\t\ts0 = Math.max( 0, - ( a01 * segExtent + b0 ) );\n\t\t\t\t\ts1 = ( s0 > 0 ) ? segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// Ray and segment are parallel.\n\n\t\t\ts1 = ( a01 > 0 ) ? - segExtent : segExtent;\n\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t}\n\n\t\tif ( optionalPointOnRay ) {\n\n\t\t\toptionalPointOnRay.copy( this.direction ).multiplyScalar( s0 ).add( this.origin );\n\n\t\t}\n\n\t\tif ( optionalPointOnSegment ) {\n\n\t\t\toptionalPointOnSegment.copy( _segDir ).multiplyScalar( s1 ).add( _segCenter );\n\n\t\t}\n\n\t\treturn sqrDist;\n\n\t}\n\n\tintersectSphere( sphere, target ) {\n\n\t\t_vector$a.subVectors( sphere.center, this.origin );\n\t\tconst tca = _vector$a.dot( this.direction );\n\t\tconst d2 = _vector$a.dot( _vector$a ) - tca * tca;\n\t\tconst radius2 = sphere.radius * sphere.radius;\n\n\t\tif ( d2 > radius2 ) return null;\n\n\t\tconst thc = Math.sqrt( radius2 - d2 );\n\n\t\t// t0 = first intersect point - entrance on front of sphere\n\t\tconst t0 = tca - thc;\n\n\t\t// t1 = second intersect point - exit point on back of sphere\n\t\tconst t1 = tca + thc;\n\n\t\t// test to see if both t0 and t1 are behind the ray - if so, return null\n\t\tif ( t0 < 0 && t1 < 0 ) return null;\n\n\t\t// test to see if t0 is behind the ray:\n\t\t// if it is, the ray is inside the sphere, so return the second exit point scaled by t1,\n\t\t// in order to always return an intersect point that is in front of the ray.\n\t\tif ( t0 < 0 ) return this.at( t1, target );\n\n\t\t// else t0 is in front of the ray, so return the first collision point scaled by t0\n\t\treturn this.at( t0, target );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\treturn this.distanceSqToPoint( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t}\n\n\tdistanceToPlane( plane ) {\n\n\t\tconst denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator === 0 ) {\n\n\t\t\t// line is coplanar, return origin\n\t\t\tif ( plane.distanceToPoint( this.origin ) === 0 ) {\n\n\t\t\t\treturn 0;\n\n\t\t\t}\n\n\t\t\t// Null is preferable to undefined since undefined means.... it is undefined\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst t = - ( this.origin.dot( plane.normal ) + plane.constant ) / denominator;\n\n\t\t// Return if the ray never intersects the plane\n\n\t\treturn t >= 0 ? t : null;\n\n\t}\n\n\tintersectPlane( plane, target ) {\n\n\t\tconst t = this.distanceToPlane( plane );\n\n\t\tif ( t === null ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\treturn this.at( t, target );\n\n\t}\n\n\tintersectsPlane( plane ) {\n\n\t\t// check if the ray lies on the plane first\n\n\t\tconst distToPoint = plane.distanceToPoint( this.origin );\n\n\t\tif ( distToPoint === 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\tconst denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator * distToPoint < 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\t// ray origin is behind the plane (and is pointing behind it)\n\n\t\treturn false;\n\n\t}\n\n\tintersectBox( box, target ) {\n\n\t\tlet tmin, tmax, tymin, tymax, tzmin, tzmax;\n\n\t\tconst invdirx = 1 / this.direction.x,\n\t\t\tinvdiry = 1 / this.direction.y,\n\t\t\tinvdirz = 1 / this.direction.z;\n\n\t\tconst origin = this.origin;\n\n\t\tif ( invdirx >= 0 ) {\n\n\t\t\ttmin = ( box.min.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.max.x - origin.x ) * invdirx;\n\n\t\t} else {\n\n\t\t\ttmin = ( box.max.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.min.x - origin.x ) * invdirx;\n\n\t\t}\n\n\t\tif ( invdiry >= 0 ) {\n\n\t\t\ttymin = ( box.min.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.max.y - origin.y ) * invdiry;\n\n\t\t} else {\n\n\t\t\ttymin = ( box.max.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.min.y - origin.y ) * invdiry;\n\n\t\t}\n\n\t\tif ( ( tmin > tymax ) || ( tymin > tmax ) ) return null;\n\n\t\t// These lines also handle the case where tmin or tmax is NaN\n\t\t// (result of 0 * Infinity). x !== x returns true if x is NaN\n\n\t\tif ( tymin > tmin || tmin !== tmin ) tmin = tymin;\n\n\t\tif ( tymax < tmax || tmax !== tmax ) tmax = tymax;\n\n\t\tif ( invdirz >= 0 ) {\n\n\t\t\ttzmin = ( box.min.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.max.z - origin.z ) * invdirz;\n\n\t\t} else {\n\n\t\t\ttzmin = ( box.max.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.min.z - origin.z ) * invdirz;\n\n\t\t}\n\n\t\tif ( ( tmin > tzmax ) || ( tzmin > tmax ) ) return null;\n\n\t\tif ( tzmin > tmin || tmin !== tmin ) tmin = tzmin;\n\n\t\tif ( tzmax < tmax || tmax !== tmax ) tmax = tzmax;\n\n\t\t//return point closest to the ray (positive side)\n\n\t\tif ( tmax < 0 ) return null;\n\n\t\treturn this.at( tmin >= 0 ? tmin : tmax, target );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn this.intersectBox( box, _vector$a ) !== null;\n\n\t}\n\n\tintersectTriangle( a, b, c, backfaceCulling, target ) {\n\n\t\t// Compute the offset origin, edges, and normal.\n\n\t\t// from https://github.com/pmjoniak/GeometricTools/blob/master/GTEngine/Include/Mathematics/GteIntrRay3Triangle3.h\n\n\t\t_edge1.subVectors( b, a );\n\t\t_edge2.subVectors( c, a );\n\t\t_normal$1.crossVectors( _edge1, _edge2 );\n\n\t\t// Solve Q + t*D = b1*E1 + b2*E2 (Q = kDiff, D = ray direction,\n\t\t// E1 = kEdge1, E2 = kEdge2, N = Cross(E1,E2)) by\n\t\t//   |Dot(D,N)|*b1 = sign(Dot(D,N))*Dot(D,Cross(Q,E2))\n\t\t//   |Dot(D,N)|*b2 = sign(Dot(D,N))*Dot(D,Cross(E1,Q))\n\t\t//   |Dot(D,N)|*t = -sign(Dot(D,N))*Dot(Q,N)\n\t\tlet DdN = this.direction.dot( _normal$1 );\n\t\tlet sign;\n\n\t\tif ( DdN > 0 ) {\n\n\t\t\tif ( backfaceCulling ) return null;\n\t\t\tsign = 1;\n\n\t\t} else if ( DdN < 0 ) {\n\n\t\t\tsign = - 1;\n\t\t\tDdN = - DdN;\n\n\t\t} else {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t_diff.subVectors( this.origin, a );\n\t\tconst DdQxE2 = sign * this.direction.dot( _edge2.crossVectors( _diff, _edge2 ) );\n\n\t\t// b1 < 0, no intersection\n\t\tif ( DdQxE2 < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst DdE1xQ = sign * this.direction.dot( _edge1.cross( _diff ) );\n\n\t\t// b2 < 0, no intersection\n\t\tif ( DdE1xQ < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// b1+b2 > 1, no intersection\n\t\tif ( DdQxE2 + DdE1xQ > DdN ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// Line intersects triangle, check if ray does.\n\t\tconst QdN = - sign * _diff.dot( _normal$1 );\n\n\t\t// t < 0, no intersection\n\t\tif ( QdN < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// Ray intersects triangle.\n\t\treturn this.at( QdN / DdN, target );\n\n\t}\n\n\tapplyMatrix4( matrix4 ) {\n\n\t\tthis.origin.applyMatrix4( matrix4 );\n\t\tthis.direction.transformDirection( matrix4 );\n\n\t\treturn this;\n\n\t}\n\n\tequals( ray ) {\n\n\t\treturn ray.origin.equals( this.origin ) && ray.direction.equals( this.direction );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nclass Matrix4 {\n\n\tconstructor() {\n\n\t\tMatrix4.prototype.isMatrix4 = true;\n\n\t\tthis.elements = [\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, 1, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t];\n\n\t}\n\n\tset( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 4 ] = n12; te[ 8 ] = n13; te[ 12 ] = n14;\n\t\tte[ 1 ] = n21; te[ 5 ] = n22; te[ 9 ] = n23; te[ 13 ] = n24;\n\t\tte[ 2 ] = n31; te[ 6 ] = n32; te[ 10 ] = n33; te[ 14 ] = n34;\n\t\tte[ 3 ] = n41; te[ 7 ] = n42; te[ 11 ] = n43; te[ 15 ] = n44;\n\n\t\treturn this;\n\n\t}\n\n\tidentity() {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, 1, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new Matrix4().fromArray( this.elements );\n\n\t}\n\n\tcopy( m ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ]; te[ 3 ] = me[ 3 ];\n\t\tte[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ]; te[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ];\n\t\tte[ 8 ] = me[ 8 ]; te[ 9 ] = me[ 9 ]; te[ 10 ] = me[ 10 ]; te[ 11 ] = me[ 11 ];\n\t\tte[ 12 ] = me[ 12 ]; te[ 13 ] = me[ 13 ]; te[ 14 ] = me[ 14 ]; te[ 15 ] = me[ 15 ];\n\n\t\treturn this;\n\n\t}\n\n\tcopyPosition( m ) {\n\n\t\tconst te = this.elements, me = m.elements;\n\n\t\tte[ 12 ] = me[ 12 ];\n\t\tte[ 13 ] = me[ 13 ];\n\t\tte[ 14 ] = me[ 14 ];\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrix3( m ) {\n\n\t\tconst me = m.elements;\n\n\t\tthis.set(\n\n\t\t\tme[ 0 ], me[ 3 ], me[ 6 ], 0,\n\t\t\tme[ 1 ], me[ 4 ], me[ 7 ], 0,\n\t\t\tme[ 2 ], me[ 5 ], me[ 8 ], 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\textractBasis( xAxis, yAxis, zAxis ) {\n\n\t\txAxis.setFromMatrixColumn( this, 0 );\n\t\tyAxis.setFromMatrixColumn( this, 1 );\n\t\tzAxis.setFromMatrixColumn( this, 2 );\n\n\t\treturn this;\n\n\t}\n\n\tmakeBasis( xAxis, yAxis, zAxis ) {\n\n\t\tthis.set(\n\t\t\txAxis.x, yAxis.x, zAxis.x, 0,\n\t\t\txAxis.y, yAxis.y, zAxis.y, 0,\n\t\t\txAxis.z, yAxis.z, zAxis.z, 0,\n\t\t\t0, 0, 0, 1\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\textractRotation( m ) {\n\n\t\t// this method does not support reflection matrices\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tconst scaleX = 1 / _v1$5.setFromMatrixColumn( m, 0 ).length();\n\t\tconst scaleY = 1 / _v1$5.setFromMatrixColumn( m, 1 ).length();\n\t\tconst scaleZ = 1 / _v1$5.setFromMatrixColumn( m, 2 ).length();\n\n\t\tte[ 0 ] = me[ 0 ] * scaleX;\n\t\tte[ 1 ] = me[ 1 ] * scaleX;\n\t\tte[ 2 ] = me[ 2 ] * scaleX;\n\t\tte[ 3 ] = 0;\n\n\t\tte[ 4 ] = me[ 4 ] * scaleY;\n\t\tte[ 5 ] = me[ 5 ] * scaleY;\n\t\tte[ 6 ] = me[ 6 ] * scaleY;\n\t\tte[ 7 ] = 0;\n\n\t\tte[ 8 ] = me[ 8 ] * scaleZ;\n\t\tte[ 9 ] = me[ 9 ] * scaleZ;\n\t\tte[ 10 ] = me[ 10 ] * scaleZ;\n\t\tte[ 11 ] = 0;\n\n\t\tte[ 12 ] = 0;\n\t\tte[ 13 ] = 0;\n\t\tte[ 14 ] = 0;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationFromEuler( euler ) {\n\n\t\tconst te = this.elements;\n\n\t\tconst x = euler.x, y = euler.y, z = euler.z;\n\t\tconst a = Math.cos( x ), b = Math.sin( x );\n\t\tconst c = Math.cos( y ), d = Math.sin( y );\n\t\tconst e = Math.cos( z ), f = Math.sin( z );\n\n\t\tif ( euler.order === 'XYZ' ) {\n\n\t\t\tconst ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - c * f;\n\t\t\tte[ 8 ] = d;\n\n\t\t\tte[ 1 ] = af + be * d;\n\t\t\tte[ 5 ] = ae - bf * d;\n\t\t\tte[ 9 ] = - b * c;\n\n\t\t\tte[ 2 ] = bf - ae * d;\n\t\t\tte[ 6 ] = be + af * d;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YXZ' ) {\n\n\t\t\tconst ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce + df * b;\n\t\t\tte[ 4 ] = de * b - cf;\n\t\t\tte[ 8 ] = a * d;\n\n\t\t\tte[ 1 ] = a * f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b;\n\n\t\t\tte[ 2 ] = cf * b - de;\n\t\t\tte[ 6 ] = df + ce * b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZXY' ) {\n\n\t\t\tconst ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce - df * b;\n\t\t\tte[ 4 ] = - a * f;\n\t\t\tte[ 8 ] = de + cf * b;\n\n\t\t\tte[ 1 ] = cf + de * b;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = df - ce * b;\n\n\t\t\tte[ 2 ] = - a * d;\n\t\t\tte[ 6 ] = b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZYX' ) {\n\n\t\t\tconst ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = be * d - af;\n\t\t\tte[ 8 ] = ae * d + bf;\n\n\t\t\tte[ 1 ] = c * f;\n\t\t\tte[ 5 ] = bf * d + ae;\n\t\t\tte[ 9 ] = af * d - be;\n\n\t\t\tte[ 2 ] = - d;\n\t\t\tte[ 6 ] = b * c;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YZX' ) {\n\n\t\t\tconst ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = bd - ac * f;\n\t\t\tte[ 8 ] = bc * f + ad;\n\n\t\t\tte[ 1 ] = f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b * e;\n\n\t\t\tte[ 2 ] = - d * e;\n\t\t\tte[ 6 ] = ad * f + bc;\n\t\t\tte[ 10 ] = ac - bd * f;\n\n\t\t} else if ( euler.order === 'XZY' ) {\n\n\t\t\tconst ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - f;\n\t\t\tte[ 8 ] = d * e;\n\n\t\t\tte[ 1 ] = ac * f + bd;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = ad * f - bc;\n\n\t\t\tte[ 2 ] = bc * f - ad;\n\t\t\tte[ 6 ] = b * e;\n\t\t\tte[ 10 ] = bd * f + ac;\n\n\t\t}\n\n\t\t// bottom row\n\t\tte[ 3 ] = 0;\n\t\tte[ 7 ] = 0;\n\t\tte[ 11 ] = 0;\n\n\t\t// last column\n\t\tte[ 12 ] = 0;\n\t\tte[ 13 ] = 0;\n\t\tte[ 14 ] = 0;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationFromQuaternion( q ) {\n\n\t\treturn this.compose( _zero, q, _one );\n\n\t}\n\n\tlookAt( eye, target, up ) {\n\n\t\tconst te = this.elements;\n\n\t\t_z.subVectors( eye, target );\n\n\t\tif ( _z.lengthSq() === 0 ) {\n\n\t\t\t// eye and target are in the same position\n\n\t\t\t_z.z = 1;\n\n\t\t}\n\n\t\t_z.normalize();\n\t\t_x.crossVectors( up, _z );\n\n\t\tif ( _x.lengthSq() === 0 ) {\n\n\t\t\t// up and z are parallel\n\n\t\t\tif ( Math.abs( up.z ) === 1 ) {\n\n\t\t\t\t_z.x += 0.0001;\n\n\t\t\t} else {\n\n\t\t\t\t_z.z += 0.0001;\n\n\t\t\t}\n\n\t\t\t_z.normalize();\n\t\t\t_x.crossVectors( up, _z );\n\n\t\t}\n\n\t\t_x.normalize();\n\t\t_y.crossVectors( _z, _x );\n\n\t\tte[ 0 ] = _x.x; te[ 4 ] = _y.x; te[ 8 ] = _z.x;\n\t\tte[ 1 ] = _x.y; te[ 5 ] = _y.y; te[ 9 ] = _z.y;\n\t\tte[ 2 ] = _x.z; te[ 6 ] = _y.z; te[ 10 ] = _z.z;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( m ) {\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t}\n\n\tpremultiply( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t}\n\n\tmultiplyMatrices( a, b ) {\n\n\t\tconst ae = a.elements;\n\t\tconst be = b.elements;\n\t\tconst te = this.elements;\n\n\t\tconst a11 = ae[ 0 ], a12 = ae[ 4 ], a13 = ae[ 8 ], a14 = ae[ 12 ];\n\t\tconst a21 = ae[ 1 ], a22 = ae[ 5 ], a23 = ae[ 9 ], a24 = ae[ 13 ];\n\t\tconst a31 = ae[ 2 ], a32 = ae[ 6 ], a33 = ae[ 10 ], a34 = ae[ 14 ];\n\t\tconst a41 = ae[ 3 ], a42 = ae[ 7 ], a43 = ae[ 11 ], a44 = ae[ 15 ];\n\n\t\tconst b11 = be[ 0 ], b12 = be[ 4 ], b13 = be[ 8 ], b14 = be[ 12 ];\n\t\tconst b21 = be[ 1 ], b22 = be[ 5 ], b23 = be[ 9 ], b24 = be[ 13 ];\n\t\tconst b31 = be[ 2 ], b32 = be[ 6 ], b33 = be[ 10 ], b34 = be[ 14 ];\n\t\tconst b41 = be[ 3 ], b42 = be[ 7 ], b43 = be[ 11 ], b44 = be[ 15 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41;\n\t\tte[ 4 ] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42;\n\t\tte[ 8 ] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43;\n\t\tte[ 12 ] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41;\n\t\tte[ 5 ] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42;\n\t\tte[ 9 ] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43;\n\t\tte[ 13 ] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41;\n\t\tte[ 6 ] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42;\n\t\tte[ 10 ] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43;\n\t\tte[ 14 ] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44;\n\n\t\tte[ 3 ] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41;\n\t\tte[ 7 ] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42;\n\t\tte[ 11 ] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43;\n\t\tte[ 15 ] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( s ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 4 ] *= s; te[ 8 ] *= s; te[ 12 ] *= s;\n\t\tte[ 1 ] *= s; te[ 5 ] *= s; te[ 9 ] *= s; te[ 13 ] *= s;\n\t\tte[ 2 ] *= s; te[ 6 ] *= s; te[ 10 ] *= s; te[ 14 ] *= s;\n\t\tte[ 3 ] *= s; te[ 7 ] *= s; te[ 11 ] *= s; te[ 15 ] *= s;\n\n\t\treturn this;\n\n\t}\n\n\tdeterminant() {\n\n\t\tconst te = this.elements;\n\n\t\tconst n11 = te[ 0 ], n12 = te[ 4 ], n13 = te[ 8 ], n14 = te[ 12 ];\n\t\tconst n21 = te[ 1 ], n22 = te[ 5 ], n23 = te[ 9 ], n24 = te[ 13 ];\n\t\tconst n31 = te[ 2 ], n32 = te[ 6 ], n33 = te[ 10 ], n34 = te[ 14 ];\n\t\tconst n41 = te[ 3 ], n42 = te[ 7 ], n43 = te[ 11 ], n44 = te[ 15 ];\n\n\t\t//TODO: make this more efficient\n\t\t//( based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm )\n\n\t\treturn (\n\t\t\tn41 * (\n\t\t\t\t+ n14 * n23 * n32\n\t\t\t\t - n13 * n24 * n32\n\t\t\t\t - n14 * n22 * n33\n\t\t\t\t + n12 * n24 * n33\n\t\t\t\t + n13 * n22 * n34\n\t\t\t\t - n12 * n23 * n34\n\t\t\t) +\n\t\t\tn42 * (\n\t\t\t\t+ n11 * n23 * n34\n\t\t\t\t - n11 * n24 * n33\n\t\t\t\t + n14 * n21 * n33\n\t\t\t\t - n13 * n21 * n34\n\t\t\t\t + n13 * n24 * n31\n\t\t\t\t - n14 * n23 * n31\n\t\t\t) +\n\t\t\tn43 * (\n\t\t\t\t+ n11 * n24 * n32\n\t\t\t\t - n11 * n22 * n34\n\t\t\t\t - n14 * n21 * n32\n\t\t\t\t + n12 * n21 * n34\n\t\t\t\t + n14 * n22 * n31\n\t\t\t\t - n12 * n24 * n31\n\t\t\t) +\n\t\t\tn44 * (\n\t\t\t\t- n13 * n22 * n31\n\t\t\t\t - n11 * n23 * n32\n\t\t\t\t + n11 * n22 * n33\n\t\t\t\t + n13 * n21 * n32\n\t\t\t\t - n12 * n21 * n33\n\t\t\t\t + n12 * n23 * n31\n\t\t\t)\n\n\t\t);\n\n\t}\n\n\ttranspose() {\n\n\t\tconst te = this.elements;\n\t\tlet tmp;\n\n\t\ttmp = te[ 1 ]; te[ 1 ] = te[ 4 ]; te[ 4 ] = tmp;\n\t\ttmp = te[ 2 ]; te[ 2 ] = te[ 8 ]; te[ 8 ] = tmp;\n\t\ttmp = te[ 6 ]; te[ 6 ] = te[ 9 ]; te[ 9 ] = tmp;\n\n\t\ttmp = te[ 3 ]; te[ 3 ] = te[ 12 ]; te[ 12 ] = tmp;\n\t\ttmp = te[ 7 ]; te[ 7 ] = te[ 13 ]; te[ 13 ] = tmp;\n\t\ttmp = te[ 11 ]; te[ 11 ] = te[ 14 ]; te[ 14 ] = tmp;\n\n\t\treturn this;\n\n\t}\n\n\tsetPosition( x, y, z ) {\n\n\t\tconst te = this.elements;\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\tte[ 12 ] = x.x;\n\t\t\tte[ 13 ] = x.y;\n\t\t\tte[ 14 ] = x.z;\n\n\t\t} else {\n\n\t\t\tte[ 12 ] = x;\n\t\t\tte[ 13 ] = y;\n\t\t\tte[ 14 ] = z;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tinvert() {\n\n\t\t// based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm\n\t\tconst te = this.elements,\n\n\t\t\tn11 = te[ 0 ], n21 = te[ 1 ], n31 = te[ 2 ], n41 = te[ 3 ],\n\t\t\tn12 = te[ 4 ], n22 = te[ 5 ], n32 = te[ 6 ], n42 = te[ 7 ],\n\t\t\tn13 = te[ 8 ], n23 = te[ 9 ], n33 = te[ 10 ], n43 = te[ 11 ],\n\t\t\tn14 = te[ 12 ], n24 = te[ 13 ], n34 = te[ 14 ], n44 = te[ 15 ],\n\n\t\t\tt11 = n23 * n34 * n42 - n24 * n33 * n42 + n24 * n32 * n43 - n22 * n34 * n43 - n23 * n32 * n44 + n22 * n33 * n44,\n\t\t\tt12 = n14 * n33 * n42 - n13 * n34 * n42 - n14 * n32 * n43 + n12 * n34 * n43 + n13 * n32 * n44 - n12 * n33 * n44,\n\t\t\tt13 = n13 * n24 * n42 - n14 * n23 * n42 + n14 * n22 * n43 - n12 * n24 * n43 - n13 * n22 * n44 + n12 * n23 * n44,\n\t\t\tt14 = n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34;\n\n\t\tconst det = n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14;\n\n\t\tif ( det === 0 ) return this.set( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 );\n\n\t\tconst detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n24 * n33 * n41 - n23 * n34 * n41 - n24 * n31 * n43 + n21 * n34 * n43 + n23 * n31 * n44 - n21 * n33 * n44 ) * detInv;\n\t\tte[ 2 ] = ( n22 * n34 * n41 - n24 * n32 * n41 + n24 * n31 * n42 - n21 * n34 * n42 - n22 * n31 * n44 + n21 * n32 * n44 ) * detInv;\n\t\tte[ 3 ] = ( n23 * n32 * n41 - n22 * n33 * n41 - n23 * n31 * n42 + n21 * n33 * n42 + n22 * n31 * n43 - n21 * n32 * n43 ) * detInv;\n\n\t\tte[ 4 ] = t12 * detInv;\n\t\tte[ 5 ] = ( n13 * n34 * n41 - n14 * n33 * n41 + n14 * n31 * n43 - n11 * n34 * n43 - n13 * n31 * n44 + n11 * n33 * n44 ) * detInv;\n\t\tte[ 6 ] = ( n14 * n32 * n41 - n12 * n34 * n41 - n14 * n31 * n42 + n11 * n34 * n42 + n12 * n31 * n44 - n11 * n32 * n44 ) * detInv;\n\t\tte[ 7 ] = ( n12 * n33 * n41 - n13 * n32 * n41 + n13 * n31 * n42 - n11 * n33 * n42 - n12 * n31 * n43 + n11 * n32 * n43 ) * detInv;\n\n\t\tte[ 8 ] = t13 * detInv;\n\t\tte[ 9 ] = ( n14 * n23 * n41 - n13 * n24 * n41 - n14 * n21 * n43 + n11 * n24 * n43 + n13 * n21 * n44 - n11 * n23 * n44 ) * detInv;\n\t\tte[ 10 ] = ( n12 * n24 * n41 - n14 * n22 * n41 + n14 * n21 * n42 - n11 * n24 * n42 - n12 * n21 * n44 + n11 * n22 * n44 ) * detInv;\n\t\tte[ 11 ] = ( n13 * n22 * n41 - n12 * n23 * n41 - n13 * n21 * n42 + n11 * n23 * n42 + n12 * n21 * n43 - n11 * n22 * n43 ) * detInv;\n\n\t\tte[ 12 ] = t14 * detInv;\n\t\tte[ 13 ] = ( n13 * n24 * n31 - n14 * n23 * n31 + n14 * n21 * n33 - n11 * n24 * n33 - n13 * n21 * n34 + n11 * n23 * n34 ) * detInv;\n\t\tte[ 14 ] = ( n14 * n22 * n31 - n12 * n24 * n31 - n14 * n21 * n32 + n11 * n24 * n32 + n12 * n21 * n34 - n11 * n22 * n34 ) * detInv;\n\t\tte[ 15 ] = ( n12 * n23 * n31 - n13 * n22 * n31 + n13 * n21 * n32 - n11 * n23 * n32 - n12 * n21 * n33 + n11 * n22 * n33 ) * detInv;\n\n\t\treturn this;\n\n\t}\n\n\tscale( v ) {\n\n\t\tconst te = this.elements;\n\t\tconst x = v.x, y = v.y, z = v.z;\n\n\t\tte[ 0 ] *= x; te[ 4 ] *= y; te[ 8 ] *= z;\n\t\tte[ 1 ] *= x; te[ 5 ] *= y; te[ 9 ] *= z;\n\t\tte[ 2 ] *= x; te[ 6 ] *= y; te[ 10 ] *= z;\n\t\tte[ 3 ] *= x; te[ 7 ] *= y; te[ 11 ] *= z;\n\n\t\treturn this;\n\n\t}\n\n\tgetMaxScaleOnAxis() {\n\n\t\tconst te = this.elements;\n\n\t\tconst scaleXSq = te[ 0 ] * te[ 0 ] + te[ 1 ] * te[ 1 ] + te[ 2 ] * te[ 2 ];\n\t\tconst scaleYSq = te[ 4 ] * te[ 4 ] + te[ 5 ] * te[ 5 ] + te[ 6 ] * te[ 6 ];\n\t\tconst scaleZSq = te[ 8 ] * te[ 8 ] + te[ 9 ] * te[ 9 ] + te[ 10 ] * te[ 10 ];\n\n\t\treturn Math.sqrt( Math.max( scaleXSq, scaleYSq, scaleZSq ) );\n\n\t}\n\n\tmakeTranslation( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, x,\n\t\t\t0, 1, 0, y,\n\t\t\t0, 0, 1, z,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationX( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, c, - s, 0,\n\t\t\t0, s, c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationY( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t c, 0, s, 0,\n\t\t\t 0, 1, 0, 0,\n\t\t\t- s, 0, c, 0,\n\t\t\t 0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationZ( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\tc, - s, 0, 0,\n\t\t\ts, c, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationAxis( axis, angle ) {\n\n\t\t// Based on http://www.gamedev.net/reference/articles/article1199.asp\n\n\t\tconst c = Math.cos( angle );\n\t\tconst s = Math.sin( angle );\n\t\tconst t = 1 - c;\n\t\tconst x = axis.x, y = axis.y, z = axis.z;\n\t\tconst tx = t * x, ty = t * y;\n\n\t\tthis.set(\n\n\t\t\ttx * x + c, tx * y - s * z, tx * z + s * y, 0,\n\t\t\ttx * y + s * z, ty * y + c, ty * z - s * x, 0,\n\t\t\ttx * z - s * y, ty * z + s * x, t * z * z + c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeScale( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\tx, 0, 0, 0,\n\t\t\t0, y, 0, 0,\n\t\t\t0, 0, z, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeShear( xy, xz, yx, yz, zx, zy ) {\n\n\t\tthis.set(\n\n\t\t\t1, yx, zx, 0,\n\t\t\txy, 1, zy, 0,\n\t\t\txz, yz, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tcompose( position, quaternion, scale ) {\n\n\t\tconst te = this.elements;\n\n\t\tconst x = quaternion._x, y = quaternion._y, z = quaternion._z, w = quaternion._w;\n\t\tconst x2 = x + x,\ty2 = y + y, z2 = z + z;\n\t\tconst xx = x * x2, xy = x * y2, xz = x * z2;\n\t\tconst yy = y * y2, yz = y * z2, zz = z * z2;\n\t\tconst wx = w * x2, wy = w * y2, wz = w * z2;\n\n\t\tconst sx = scale.x, sy = scale.y, sz = scale.z;\n\n\t\tte[ 0 ] = ( 1 - ( yy + zz ) ) * sx;\n\t\tte[ 1 ] = ( xy + wz ) * sx;\n\t\tte[ 2 ] = ( xz - wy ) * sx;\n\t\tte[ 3 ] = 0;\n\n\t\tte[ 4 ] = ( xy - wz ) * sy;\n\t\tte[ 5 ] = ( 1 - ( xx + zz ) ) * sy;\n\t\tte[ 6 ] = ( yz + wx ) * sy;\n\t\tte[ 7 ] = 0;\n\n\t\tte[ 8 ] = ( xz + wy ) * sz;\n\t\tte[ 9 ] = ( yz - wx ) * sz;\n\t\tte[ 10 ] = ( 1 - ( xx + yy ) ) * sz;\n\t\tte[ 11 ] = 0;\n\n\t\tte[ 12 ] = position.x;\n\t\tte[ 13 ] = position.y;\n\t\tte[ 14 ] = position.z;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tdecompose( position, quaternion, scale ) {\n\n\t\tconst te = this.elements;\n\n\t\tlet sx = _v1$5.set( te[ 0 ], te[ 1 ], te[ 2 ] ).length();\n\t\tconst sy = _v1$5.set( te[ 4 ], te[ 5 ], te[ 6 ] ).length();\n\t\tconst sz = _v1$5.set( te[ 8 ], te[ 9 ], te[ 10 ] ).length();\n\n\t\t// if determine is negative, we need to invert one scale\n\t\tconst det = this.determinant();\n\t\tif ( det < 0 ) sx = - sx;\n\n\t\tposition.x = te[ 12 ];\n\t\tposition.y = te[ 13 ];\n\t\tposition.z = te[ 14 ];\n\n\t\t// scale the rotation part\n\t\t_m1$2.copy( this );\n\n\t\tconst invSX = 1 / sx;\n\t\tconst invSY = 1 / sy;\n\t\tconst invSZ = 1 / sz;\n\n\t\t_m1$2.elements[ 0 ] *= invSX;\n\t\t_m1$2.elements[ 1 ] *= invSX;\n\t\t_m1$2.elements[ 2 ] *= invSX;\n\n\t\t_m1$2.elements[ 4 ] *= invSY;\n\t\t_m1$2.elements[ 5 ] *= invSY;\n\t\t_m1$2.elements[ 6 ] *= invSY;\n\n\t\t_m1$2.elements[ 8 ] *= invSZ;\n\t\t_m1$2.elements[ 9 ] *= invSZ;\n\t\t_m1$2.elements[ 10 ] *= invSZ;\n\n\t\tquaternion.setFromRotationMatrix( _m1$2 );\n\n\t\tscale.x = sx;\n\t\tscale.y = sy;\n\t\tscale.z = sz;\n\n\t\treturn this;\n\n\t}\n\n\tmakePerspective( left, right, top, bottom, near, far ) {\n\n\t\tconst te = this.elements;\n\t\tconst x = 2 * near / ( right - left );\n\t\tconst y = 2 * near / ( top - bottom );\n\n\t\tconst a = ( right + left ) / ( right - left );\n\t\tconst b = ( top + bottom ) / ( top - bottom );\n\t\tconst c = - ( far + near ) / ( far - near );\n\t\tconst d = - 2 * far * near / ( far - near );\n\n\t\tte[ 0 ] = x;\tte[ 4 ] = 0;\tte[ 8 ] = a;\tte[ 12 ] = 0;\n\t\tte[ 1 ] = 0;\tte[ 5 ] = y;\tte[ 9 ] = b;\tte[ 13 ] = 0;\n\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = c;\tte[ 14 ] = d;\n\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = - 1;\tte[ 15 ] = 0;\n\n\t\treturn this;\n\n\t}\n\n\tmakeOrthographic( left, right, top, bottom, near, far ) {\n\n\t\tconst te = this.elements;\n\t\tconst w = 1.0 / ( right - left );\n\t\tconst h = 1.0 / ( top - bottom );\n\t\tconst p = 1.0 / ( far - near );\n\n\t\tconst x = ( right + left ) * w;\n\t\tconst y = ( top + bottom ) * h;\n\t\tconst z = ( far + near ) * p;\n\n\t\tte[ 0 ] = 2 * w;\tte[ 4 ] = 0;\tte[ 8 ] = 0;\tte[ 12 ] = - x;\n\t\tte[ 1 ] = 0;\tte[ 5 ] = 2 * h;\tte[ 9 ] = 0;\tte[ 13 ] = - y;\n\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = - 2 * p;\tte[ 14 ] = - z;\n\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = 0;\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tequals( matrix ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = matrix.elements;\n\n\t\tfor ( let i = 0; i < 16; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tfor ( let i = 0; i < 16; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tconst te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\t\tarray[ offset + 9 ] = te[ 9 ];\n\t\tarray[ offset + 10 ] = te[ 10 ];\n\t\tarray[ offset + 11 ] = te[ 11 ];\n\n\t\tarray[ offset + 12 ] = te[ 12 ];\n\t\tarray[ offset + 13 ] = te[ 13 ];\n\t\tarray[ offset + 14 ] = te[ 14 ];\n\t\tarray[ offset + 15 ] = te[ 15 ];\n\n\t\treturn array;\n\n\t}\n\n}\n\nconst _v1$5 = /*@__PURE__*/ new Vector3();\nconst _m1$2 = /*@__PURE__*/ new Matrix4();\nconst _zero = /*@__PURE__*/ new Vector3( 0, 0, 0 );\nconst _one = /*@__PURE__*/ new Vector3( 1, 1, 1 );\nconst _x = /*@__PURE__*/ new Vector3();\nconst _y = /*@__PURE__*/ new Vector3();\nconst _z = /*@__PURE__*/ new Vector3();\n\nconst _matrix$1 = /*@__PURE__*/ new Matrix4();\nconst _quaternion$3 = /*@__PURE__*/ new Quaternion();\n\nclass Euler {\n\n\tconstructor( x = 0, y = 0, z = 0, order = Euler.DefaultOrder ) {\n\n\t\tthis.isEuler = true;\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._order = order;\n\n\t}\n\n\tget x() {\n\n\t\treturn this._x;\n\n\t}\n\n\tset x( value ) {\n\n\t\tthis._x = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget y() {\n\n\t\treturn this._y;\n\n\t}\n\n\tset y( value ) {\n\n\t\tthis._y = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget z() {\n\n\t\treturn this._z;\n\n\t}\n\n\tset z( value ) {\n\n\t\tthis._z = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget order() {\n\n\t\treturn this._order;\n\n\t}\n\n\tset order( value ) {\n\n\t\tthis._order = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tset( x, y, z, order = this._order ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._order = order;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._order );\n\n\t}\n\n\tcopy( euler ) {\n\n\t\tthis._x = euler._x;\n\t\tthis._y = euler._y;\n\t\tthis._z = euler._z;\n\t\tthis._order = euler._order;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromRotationMatrix( m, order = this._order, update = true ) {\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tconst te = m.elements;\n\t\tconst m11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ];\n\t\tconst m21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ];\n\t\tconst m31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\tswitch ( order ) {\n\n\t\t\tcase 'XYZ':\n\n\t\t\t\tthis._y = Math.asin( clamp( m13, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m13 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\t\tthis._z = Math.atan2( - m12, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\t\tthis._z = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'YXZ':\n\n\t\t\t\tthis._x = Math.asin( - clamp( m23, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m23 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\t\t\t\t\tthis._z = Math.atan2( m21, m22 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\t\t\t\t\tthis._z = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZXY':\n\n\t\t\t\tthis._x = Math.asin( clamp( m32, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m32 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._y = Math.atan2( - m31, m33 );\n\t\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._y = 0;\n\t\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZYX':\n\n\t\t\t\tthis._y = Math.asin( - clamp( m31, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m31 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m33 );\n\t\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = 0;\n\t\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'YZX':\n\n\t\t\t\tthis._z = Math.asin( clamp( m21, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m21 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m22 );\n\t\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = 0;\n\t\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'XZY':\n\n\t\t\t\tthis._z = Math.asin( - clamp( m12, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m12 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\t\tthis._y = Math.atan2( m13, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\t\tthis._y = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tconsole.warn( 'THREE.Euler: .setFromRotationMatrix() encountered an unknown order: ' + order );\n\n\t\t}\n\n\t\tthis._order = order;\n\n\t\tif ( update === true ) this._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromQuaternion( q, order, update ) {\n\n\t\t_matrix$1.makeRotationFromQuaternion( q );\n\n\t\treturn this.setFromRotationMatrix( _matrix$1, order, update );\n\n\t}\n\n\tsetFromVector3( v, order = this._order ) {\n\n\t\treturn this.set( v.x, v.y, v.z, order );\n\n\t}\n\n\treorder( newOrder ) {\n\n\t\t// WARNING: this discards revolution information -bhouston\n\n\t\t_quaternion$3.setFromEuler( this );\n\n\t\treturn this.setFromQuaternion( _quaternion$3, newOrder );\n\n\t}\n\n\tequals( euler ) {\n\n\t\treturn ( euler._x === this._x ) && ( euler._y === this._y ) && ( euler._z === this._z ) && ( euler._order === this._order );\n\n\t}\n\n\tfromArray( array ) {\n\n\t\tthis._x = array[ 0 ];\n\t\tthis._y = array[ 1 ];\n\t\tthis._z = array[ 2 ];\n\t\tif ( array[ 3 ] !== undefined ) this._order = array[ 3 ];\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._order;\n\n\t\treturn array;\n\n\t}\n\n\t_onChange( callback ) {\n\n\t\tthis._onChangeCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\t_onChangeCallback() {}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this._x;\n\t\tyield this._y;\n\t\tyield this._z;\n\t\tyield this._order;\n\n\t}\n\n\t// @deprecated since r138, 02cf0df1cb4575d5842fef9c85bb5a89fe020d53\n\n\ttoVector3() {\n\n\t\tconsole.error( 'THREE.Euler: .toVector3() has been removed. Use Vector3.setFromEuler() instead' );\n\n\t}\n\n}\n\nEuler.DefaultOrder = 'XYZ';\nEuler.RotationOrders = [ 'XYZ', 'YZX', 'ZXY', 'XZY', 'YXZ', 'ZYX' ];\n\nclass Layers {\n\n\tconstructor() {\n\n\t\tthis.mask = 1 | 0;\n\n\t}\n\n\tset( channel ) {\n\n\t\tthis.mask = ( 1 << channel | 0 ) >>> 0;\n\n\t}\n\n\tenable( channel ) {\n\n\t\tthis.mask |= 1 << channel | 0;\n\n\t}\n\n\tenableAll() {\n\n\t\tthis.mask = 0xffffffff | 0;\n\n\t}\n\n\ttoggle( channel ) {\n\n\t\tthis.mask ^= 1 << channel | 0;\n\n\t}\n\n\tdisable( channel ) {\n\n\t\tthis.mask &= ~ ( 1 << channel | 0 );\n\n\t}\n\n\tdisableAll() {\n\n\t\tthis.mask = 0;\n\n\t}\n\n\ttest( layers ) {\n\n\t\treturn ( this.mask & layers.mask ) !== 0;\n\n\t}\n\n\tisEnabled( channel ) {\n\n\t\treturn ( this.mask & ( 1 << channel | 0 ) ) !== 0;\n\n\t}\n\n}\n\nlet _object3DId = 0;\n\nconst _v1$4 = /*@__PURE__*/ new Vector3();\nconst _q1 = /*@__PURE__*/ new Quaternion();\nconst _m1$1 = /*@__PURE__*/ new Matrix4();\nconst _target = /*@__PURE__*/ new Vector3();\n\nconst _position$3 = /*@__PURE__*/ new Vector3();\nconst _scale$2 = /*@__PURE__*/ new Vector3();\nconst _quaternion$2 = /*@__PURE__*/ new Quaternion();\n\nconst _xAxis = /*@__PURE__*/ new Vector3( 1, 0, 0 );\nconst _yAxis = /*@__PURE__*/ new Vector3( 0, 1, 0 );\nconst _zAxis = /*@__PURE__*/ new Vector3( 0, 0, 1 );\n\nconst _addedEvent = { type: 'added' };\nconst _removedEvent = { type: 'removed' };\n\nclass Object3D extends EventDispatcher {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isObject3D = true;\n\n\t\tObject.defineProperty( this, 'id', { value: _object3DId ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.name = '';\n\t\tthis.type = 'Object3D';\n\n\t\tthis.parent = null;\n\t\tthis.children = [];\n\n\t\tthis.up = Object3D.DefaultUp.clone();\n\n\t\tconst position = new Vector3();\n\t\tconst rotation = new Euler();\n\t\tconst quaternion = new Quaternion();\n\t\tconst scale = new Vector3( 1, 1, 1 );\n\n\t\tfunction onRotationChange() {\n\n\t\t\tquaternion.setFromEuler( rotation, false );\n\n\t\t}\n\n\t\tfunction onQuaternionChange() {\n\n\t\t\trotation.setFromQuaternion( quaternion, undefined, false );\n\n\t\t}\n\n\t\trotation._onChange( onRotationChange );\n\t\tquaternion._onChange( onQuaternionChange );\n\n\t\tObject.defineProperties( this, {\n\t\t\tposition: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: position\n\t\t\t},\n\t\t\trotation: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: rotation\n\t\t\t},\n\t\t\tquaternion: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: quaternion\n\t\t\t},\n\t\t\tscale: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: scale\n\t\t\t},\n\t\t\tmodelViewMatrix: {\n\t\t\t\tvalue: new Matrix4()\n\t\t\t},\n\t\t\tnormalMatrix: {\n\t\t\t\tvalue: new Matrix3()\n\t\t\t}\n\t\t} );\n\n\t\tthis.matrix = new Matrix4();\n\t\tthis.matrixWorld = new Matrix4();\n\n\t\tthis.matrixAutoUpdate = Object3D.DefaultMatrixAutoUpdate;\n\t\tthis.matrixWorldNeedsUpdate = false;\n\n\t\tthis.layers = new Layers();\n\t\tthis.visible = true;\n\n\t\tthis.castShadow = false;\n\t\tthis.receiveShadow = false;\n\n\t\tthis.frustumCulled = true;\n\t\tthis.renderOrder = 0;\n\n\t\tthis.animations = [];\n\n\t\tthis.userData = {};\n\n\t}\n\n\tonBeforeRender( /* renderer, scene, camera, geometry, material, group */ ) {}\n\n\tonAfterRender( /* renderer, scene, camera, geometry, material, group */ ) {}\n\n\tapplyMatrix4( matrix ) {\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tthis.matrix.premultiply( matrix );\n\n\t\tthis.matrix.decompose( this.position, this.quaternion, this.scale );\n\n\t}\n\n\tapplyQuaternion( q ) {\n\n\t\tthis.quaternion.premultiply( q );\n\n\t\treturn this;\n\n\t}\n\n\tsetRotationFromAxisAngle( axis, angle ) {\n\n\t\t// assumes axis is normalized\n\n\t\tthis.quaternion.setFromAxisAngle( axis, angle );\n\n\t}\n\n\tsetRotationFromEuler( euler ) {\n\n\t\tthis.quaternion.setFromEuler( euler, true );\n\n\t}\n\n\tsetRotationFromMatrix( m ) {\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tthis.quaternion.setFromRotationMatrix( m );\n\n\t}\n\n\tsetRotationFromQuaternion( q ) {\n\n\t\t// assumes q is normalized\n\n\t\tthis.quaternion.copy( q );\n\n\t}\n\n\trotateOnAxis( axis, angle ) {\n\n\t\t// rotate object on axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\t_q1.setFromAxisAngle( axis, angle );\n\n\t\tthis.quaternion.multiply( _q1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateOnWorldAxis( axis, angle ) {\n\n\t\t// rotate object on axis in world space\n\t\t// axis is assumed to be normalized\n\t\t// method assumes no rotated parent\n\n\t\t_q1.setFromAxisAngle( axis, angle );\n\n\t\tthis.quaternion.premultiply( _q1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateX( angle ) {\n\n\t\treturn this.rotateOnAxis( _xAxis, angle );\n\n\t}\n\n\trotateY( angle ) {\n\n\t\treturn this.rotateOnAxis( _yAxis, angle );\n\n\t}\n\n\trotateZ( angle ) {\n\n\t\treturn this.rotateOnAxis( _zAxis, angle );\n\n\t}\n\n\ttranslateOnAxis( axis, distance ) {\n\n\t\t// translate object by distance along axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\t_v1$4.copy( axis ).applyQuaternion( this.quaternion );\n\n\t\tthis.position.add( _v1$4.multiplyScalar( distance ) );\n\n\t\treturn this;\n\n\t}\n\n\ttranslateX( distance ) {\n\n\t\treturn this.translateOnAxis( _xAxis, distance );\n\n\t}\n\n\ttranslateY( distance ) {\n\n\t\treturn this.translateOnAxis( _yAxis, distance );\n\n\t}\n\n\ttranslateZ( distance ) {\n\n\t\treturn this.translateOnAxis( _zAxis, distance );\n\n\t}\n\n\tlocalToWorld( vector ) {\n\n\t\treturn vector.applyMatrix4( this.matrixWorld );\n\n\t}\n\n\tworldToLocal( vector ) {\n\n\t\treturn vector.applyMatrix4( _m1$1.copy( this.matrixWorld ).invert() );\n\n\t}\n\n\tlookAt( x, y, z ) {\n\n\t\t// This method does not support objects having non-uniformly-scaled parent(s)\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\t_target.copy( x );\n\n\t\t} else {\n\n\t\t\t_target.set( x, y, z );\n\n\t\t}\n\n\t\tconst parent = this.parent;\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\t_position$3.setFromMatrixPosition( this.matrixWorld );\n\n\t\tif ( this.isCamera || this.isLight ) {\n\n\t\t\t_m1$1.lookAt( _position$3, _target, this.up );\n\n\t\t} else {\n\n\t\t\t_m1$1.lookAt( _target, _position$3, this.up );\n\n\t\t}\n\n\t\tthis.quaternion.setFromRotationMatrix( _m1$1 );\n\n\t\tif ( parent ) {\n\n\t\t\t_m1$1.extractRotation( parent.matrixWorld );\n\t\t\t_q1.setFromRotationMatrix( _m1$1 );\n\t\t\tthis.quaternion.premultiply( _q1.invert() );\n\n\t\t}\n\n\t}\n\n\tadd( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( let i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\tthis.add( arguments[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( object === this ) {\n\n\t\t\tconsole.error( 'THREE.Object3D.add: object can\\'t be added as a child of itself.', object );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( object && object.isObject3D ) {\n\n\t\t\tif ( object.parent !== null ) {\n\n\t\t\t\tobject.parent.remove( object );\n\n\t\t\t}\n\n\t\t\tobject.parent = this;\n\t\t\tthis.children.push( object );\n\n\t\t\tobject.dispatchEvent( _addedEvent );\n\n\t\t} else {\n\n\t\t\tconsole.error( 'THREE.Object3D.add: object not an instance of THREE.Object3D.', object );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tremove( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( let i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\tthis.remove( arguments[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst index = this.children.indexOf( object );\n\n\t\tif ( index !== - 1 ) {\n\n\t\t\tobject.parent = null;\n\t\t\tthis.children.splice( index, 1 );\n\n\t\t\tobject.dispatchEvent( _removedEvent );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tremoveFromParent() {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( parent !== null ) {\n\n\t\t\tparent.remove( this );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclear() {\n\n\t\tfor ( let i = 0; i < this.children.length; i ++ ) {\n\n\t\t\tconst object = this.children[ i ];\n\n\t\t\tobject.parent = null;\n\n\t\t\tobject.dispatchEvent( _removedEvent );\n\n\t\t}\n\n\t\tthis.children.length = 0;\n\n\t\treturn this;\n\n\n\t}\n\n\tattach( object ) {\n\n\t\t// adds object as a child of this, while maintaining the object's world transform\n\n\t\t// Note: This method does not support scene graphs having non-uniformly-scaled nodes(s)\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\t_m1$1.copy( this.matrixWorld ).invert();\n\n\t\tif ( object.parent !== null ) {\n\n\t\t\tobject.parent.updateWorldMatrix( true, false );\n\n\t\t\t_m1$1.multiply( object.parent.matrixWorld );\n\n\t\t}\n\n\t\tobject.applyMatrix4( _m1$1 );\n\n\t\tthis.add( object );\n\n\t\tobject.updateWorldMatrix( false, true );\n\n\t\treturn this;\n\n\t}\n\n\tgetObjectById( id ) {\n\n\t\treturn this.getObjectByProperty( 'id', id );\n\n\t}\n\n\tgetObjectByName( name ) {\n\n\t\treturn this.getObjectByProperty( 'name', name );\n\n\t}\n\n\tgetObjectByProperty( name, value ) {\n\n\t\tif ( this[ name ] === value ) return this;\n\n\t\tfor ( let i = 0, l = this.children.length; i < l; i ++ ) {\n\n\t\t\tconst child = this.children[ i ];\n\t\t\tconst object = child.getObjectByProperty( name, value );\n\n\t\t\tif ( object !== undefined ) {\n\n\t\t\t\treturn object;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn undefined;\n\n\t}\n\n\tgetWorldPosition( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\treturn target.setFromMatrixPosition( this.matrixWorld );\n\n\t}\n\n\tgetWorldQuaternion( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\tthis.matrixWorld.decompose( _position$3, target, _scale$2 );\n\n\t\treturn target;\n\n\t}\n\n\tgetWorldScale( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\tthis.matrixWorld.decompose( _position$3, _quaternion$2, target );\n\n\t\treturn target;\n\n\t}\n\n\tgetWorldDirection( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\tconst e = this.matrixWorld.elements;\n\n\t\treturn target.set( e[ 8 ], e[ 9 ], e[ 10 ] ).normalize();\n\n\t}\n\n\traycast( /* raycaster, intersects */ ) {}\n\n\ttraverse( callback ) {\n\n\t\tcallback( this );\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].traverse( callback );\n\n\t\t}\n\n\t}\n\n\ttraverseVisible( callback ) {\n\n\t\tif ( this.visible === false ) return;\n\n\t\tcallback( this );\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].traverseVisible( callback );\n\n\t\t}\n\n\t}\n\n\ttraverseAncestors( callback ) {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( parent !== null ) {\n\n\t\t\tcallback( parent );\n\n\t\t\tparent.traverseAncestors( callback );\n\n\t\t}\n\n\t}\n\n\tupdateMatrix() {\n\n\t\tthis.matrix.compose( this.position, this.quaternion, this.scale );\n\n\t\tthis.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tif ( this.matrixWorldNeedsUpdate || force ) {\n\n\t\t\tif ( this.parent === null ) {\n\n\t\t\t\tthis.matrixWorld.copy( this.matrix );\n\n\t\t\t} else {\n\n\t\t\t\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\n\n\t\t\t}\n\n\t\t\tthis.matrixWorldNeedsUpdate = false;\n\n\t\t\tforce = true;\n\n\t\t}\n\n\t\t// update children\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].updateMatrixWorld( force );\n\n\t\t}\n\n\t}\n\n\tupdateWorldMatrix( updateParents, updateChildren ) {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( updateParents === true && parent !== null ) {\n\n\t\t\tparent.updateWorldMatrix( true, false );\n\n\t\t}\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tif ( this.parent === null ) {\n\n\t\t\tthis.matrixWorld.copy( this.matrix );\n\n\t\t} else {\n\n\t\t\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\n\n\t\t}\n\n\t\t// update children\n\n\t\tif ( updateChildren === true ) {\n\n\t\t\tconst children = this.children;\n\n\t\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\t\tchildren[ i ].updateWorldMatrix( false, true );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\t// meta is a string when called from JSON.stringify\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tconst output = {};\n\n\t\t// meta is a hash used to collect geometries, materials.\n\t\t// not providing it implies that this is the root object\n\t\t// being serialized.\n\t\tif ( isRootObject ) {\n\n\t\t\t// initialize meta obj\n\t\t\tmeta = {\n\t\t\t\tgeometries: {},\n\t\t\t\tmaterials: {},\n\t\t\t\ttextures: {},\n\t\t\t\timages: {},\n\t\t\t\tshapes: {},\n\t\t\t\tskeletons: {},\n\t\t\t\tanimations: {},\n\t\t\t\tnodes: {}\n\t\t\t};\n\n\t\t\toutput.metadata = {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Object',\n\t\t\t\tgenerator: 'Object3D.toJSON'\n\t\t\t};\n\n\t\t}\n\n\t\t// standard Object3D serialization\n\n\t\tconst object = {};\n\n\t\tobject.uuid = this.uuid;\n\t\tobject.type = this.type;\n\n\t\tif ( this.name !== '' ) object.name = this.name;\n\t\tif ( this.castShadow === true ) object.castShadow = true;\n\t\tif ( this.receiveShadow === true ) object.receiveShadow = true;\n\t\tif ( this.visible === false ) object.visible = false;\n\t\tif ( this.frustumCulled === false ) object.frustumCulled = false;\n\t\tif ( this.renderOrder !== 0 ) object.renderOrder = this.renderOrder;\n\t\tif ( JSON.stringify( this.userData ) !== '{}' ) object.userData = this.userData;\n\n\t\tobject.layers = this.layers.mask;\n\t\tobject.matrix = this.matrix.toArray();\n\n\t\tif ( this.matrixAutoUpdate === false ) object.matrixAutoUpdate = false;\n\n\t\t// object specific properties\n\n\t\tif ( this.isInstancedMesh ) {\n\n\t\t\tobject.type = 'InstancedMesh';\n\t\t\tobject.count = this.count;\n\t\t\tobject.instanceMatrix = this.instanceMatrix.toJSON();\n\t\t\tif ( this.instanceColor !== null ) object.instanceColor = this.instanceColor.toJSON();\n\n\t\t}\n\n\t\t//\n\n\t\tfunction serialize( library, element ) {\n\n\t\t\tif ( library[ element.uuid ] === undefined ) {\n\n\t\t\t\tlibrary[ element.uuid ] = element.toJSON( meta );\n\n\t\t\t}\n\n\t\t\treturn element.uuid;\n\n\t\t}\n\n\t\tif ( this.isScene ) {\n\n\t\t\tif ( this.background ) {\n\n\t\t\t\tif ( this.background.isColor ) {\n\n\t\t\t\t\tobject.background = this.background.toJSON();\n\n\t\t\t\t} else if ( this.background.isTexture ) {\n\n\t\t\t\t\tobject.background = this.background.toJSON( meta ).uuid;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( this.environment && this.environment.isTexture && this.environment.isRenderTargetTexture !== true ) {\n\n\t\t\t\tobject.environment = this.environment.toJSON( meta ).uuid;\n\n\t\t\t}\n\n\t\t} else if ( this.isMesh || this.isLine || this.isPoints ) {\n\n\t\t\tobject.geometry = serialize( meta.geometries, this.geometry );\n\n\t\t\tconst parameters = this.geometry.parameters;\n\n\t\t\tif ( parameters !== undefined && parameters.shapes !== undefined ) {\n\n\t\t\t\tconst shapes = parameters.shapes;\n\n\t\t\t\tif ( Array.isArray( shapes ) ) {\n\n\t\t\t\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\t\t\t\tconst shape = shapes[ i ];\n\n\t\t\t\t\t\tserialize( meta.shapes, shape );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tserialize( meta.shapes, shapes );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.isSkinnedMesh ) {\n\n\t\t\tobject.bindMode = this.bindMode;\n\t\t\tobject.bindMatrix = this.bindMatrix.toArray();\n\n\t\t\tif ( this.skeleton !== undefined ) {\n\n\t\t\t\tserialize( meta.skeletons, this.skeleton );\n\n\t\t\t\tobject.skeleton = this.skeleton.uuid;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.material !== undefined ) {\n\n\t\t\tif ( Array.isArray( this.material ) ) {\n\n\t\t\t\tconst uuids = [];\n\n\t\t\t\tfor ( let i = 0, l = this.material.length; i < l; i ++ ) {\n\n\t\t\t\t\tuuids.push( serialize( meta.materials, this.material[ i ] ) );\n\n\t\t\t\t}\n\n\t\t\t\tobject.material = uuids;\n\n\t\t\t} else {\n\n\t\t\t\tobject.material = serialize( meta.materials, this.material );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.children.length > 0 ) {\n\n\t\t\tobject.children = [];\n\n\t\t\tfor ( let i = 0; i < this.children.length; i ++ ) {\n\n\t\t\t\tobject.children.push( this.children[ i ].toJSON( meta ).object );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.animations.length > 0 ) {\n\n\t\t\tobject.animations = [];\n\n\t\t\tfor ( let i = 0; i < this.animations.length; i ++ ) {\n\n\t\t\t\tconst animation = this.animations[ i ];\n\n\t\t\t\tobject.animations.push( serialize( meta.animations, animation ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( isRootObject ) {\n\n\t\t\tconst geometries = extractFromCache( meta.geometries );\n\t\t\tconst materials = extractFromCache( meta.materials );\n\t\t\tconst textures = extractFromCache( meta.textures );\n\t\t\tconst images = extractFromCache( meta.images );\n\t\t\tconst shapes = extractFromCache( meta.shapes );\n\t\t\tconst skeletons = extractFromCache( meta.skeletons );\n\t\t\tconst animations = extractFromCache( meta.animations );\n\t\t\tconst nodes = extractFromCache( meta.nodes );\n\n\t\t\tif ( geometries.length > 0 ) output.geometries = geometries;\n\t\t\tif ( materials.length > 0 ) output.materials = materials;\n\t\t\tif ( textures.length > 0 ) output.textures = textures;\n\t\t\tif ( images.length > 0 ) output.images = images;\n\t\t\tif ( shapes.length > 0 ) output.shapes = shapes;\n\t\t\tif ( skeletons.length > 0 ) output.skeletons = skeletons;\n\t\t\tif ( animations.length > 0 ) output.animations = animations;\n\t\t\tif ( nodes.length > 0 ) output.nodes = nodes;\n\n\t\t}\n\n\t\toutput.object = object;\n\n\t\treturn output;\n\n\t\t// extract data from the cache hash\n\t\t// remove metadata on each item\n\t\t// and return as array\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tconst values = [];\n\t\t\tfor ( const key in cache ) {\n\n\t\t\t\tconst data = cache[ key ];\n\t\t\t\tdelete data.metadata;\n\t\t\t\tvalues.push( data );\n\n\t\t\t}\n\n\t\t\treturn values;\n\n\t\t}\n\n\t}\n\n\tclone( recursive ) {\n\n\t\treturn new this.constructor().copy( this, recursive );\n\n\t}\n\n\tcopy( source, recursive = true ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.up.copy( source.up );\n\n\t\tthis.position.copy( source.position );\n\t\tthis.rotation.order = source.rotation.order;\n\t\tthis.quaternion.copy( source.quaternion );\n\t\tthis.scale.copy( source.scale );\n\n\t\tthis.matrix.copy( source.matrix );\n\t\tthis.matrixWorld.copy( source.matrixWorld );\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\t\tthis.matrixWorldNeedsUpdate = source.matrixWorldNeedsUpdate;\n\n\t\tthis.layers.mask = source.layers.mask;\n\t\tthis.visible = source.visible;\n\n\t\tthis.castShadow = source.castShadow;\n\t\tthis.receiveShadow = source.receiveShadow;\n\n\t\tthis.frustumCulled = source.frustumCulled;\n\t\tthis.renderOrder = source.renderOrder;\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\tif ( recursive === true ) {\n\n\t\t\tfor ( let i = 0; i < source.children.length; i ++ ) {\n\n\t\t\t\tconst child = source.children[ i ];\n\t\t\t\tthis.add( child.clone() );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nObject3D.DefaultUp = /*@__PURE__*/ new Vector3( 0, 1, 0 );\nObject3D.DefaultMatrixAutoUpdate = true;\n\nconst _v0$1 = /*@__PURE__*/ new Vector3();\nconst _v1$3 = /*@__PURE__*/ new Vector3();\nconst _v2$2 = /*@__PURE__*/ new Vector3();\nconst _v3$1 = /*@__PURE__*/ new Vector3();\n\nconst _vab = /*@__PURE__*/ new Vector3();\nconst _vac = /*@__PURE__*/ new Vector3();\nconst _vbc = /*@__PURE__*/ new Vector3();\nconst _vap = /*@__PURE__*/ new Vector3();\nconst _vbp = /*@__PURE__*/ new Vector3();\nconst _vcp = /*@__PURE__*/ new Vector3();\n\nclass Triangle {\n\n\tconstructor( a = new Vector3(), b = new Vector3(), c = new Vector3() ) {\n\n\t\tthis.a = a;\n\t\tthis.b = b;\n\t\tthis.c = c;\n\n\t}\n\n\tstatic getNormal( a, b, c, target ) {\n\n\t\ttarget.subVectors( c, b );\n\t\t_v0$1.subVectors( a, b );\n\t\ttarget.cross( _v0$1 );\n\n\t\tconst targetLengthSq = target.lengthSq();\n\t\tif ( targetLengthSq > 0 ) {\n\n\t\t\treturn target.multiplyScalar( 1 / Math.sqrt( targetLengthSq ) );\n\n\t\t}\n\n\t\treturn target.set( 0, 0, 0 );\n\n\t}\n\n\t// static/instance method to calculate barycentric coordinates\n\t// based on: http://www.blackpawn.com/texts/pointinpoly/default.html\n\tstatic getBarycoord( point, a, b, c, target ) {\n\n\t\t_v0$1.subVectors( c, a );\n\t\t_v1$3.subVectors( b, a );\n\t\t_v2$2.subVectors( point, a );\n\n\t\tconst dot00 = _v0$1.dot( _v0$1 );\n\t\tconst dot01 = _v0$1.dot( _v1$3 );\n\t\tconst dot02 = _v0$1.dot( _v2$2 );\n\t\tconst dot11 = _v1$3.dot( _v1$3 );\n\t\tconst dot12 = _v1$3.dot( _v2$2 );\n\n\t\tconst denom = ( dot00 * dot11 - dot01 * dot01 );\n\n\t\t// collinear or singular triangle\n\t\tif ( denom === 0 ) {\n\n\t\t\t// arbitrary location outside of triangle?\n\t\t\t// not sure if this is the best idea, maybe should be returning undefined\n\t\t\treturn target.set( - 2, - 1, - 1 );\n\n\t\t}\n\n\t\tconst invDenom = 1 / denom;\n\t\tconst u = ( dot11 * dot02 - dot01 * dot12 ) * invDenom;\n\t\tconst v = ( dot00 * dot12 - dot01 * dot02 ) * invDenom;\n\n\t\t// barycentric coordinates must always sum to 1\n\t\treturn target.set( 1 - u - v, v, u );\n\n\t}\n\n\tstatic containsPoint( point, a, b, c ) {\n\n\t\tthis.getBarycoord( point, a, b, c, _v3$1 );\n\n\t\treturn ( _v3$1.x >= 0 ) && ( _v3$1.y >= 0 ) && ( ( _v3$1.x + _v3$1.y ) <= 1 );\n\n\t}\n\n\tstatic getUV( point, p1, p2, p3, uv1, uv2, uv3, target ) {\n\n\t\tthis.getBarycoord( point, p1, p2, p3, _v3$1 );\n\n\t\ttarget.set( 0, 0 );\n\t\ttarget.addScaledVector( uv1, _v3$1.x );\n\t\ttarget.addScaledVector( uv2, _v3$1.y );\n\t\ttarget.addScaledVector( uv3, _v3$1.z );\n\n\t\treturn target;\n\n\t}\n\n\tstatic isFrontFacing( a, b, c, direction ) {\n\n\t\t_v0$1.subVectors( c, b );\n\t\t_v1$3.subVectors( a, b );\n\n\t\t// strictly front facing\n\t\treturn ( _v0$1.cross( _v1$3 ).dot( direction ) < 0 ) ? true : false;\n\n\t}\n\n\tset( a, b, c ) {\n\n\t\tthis.a.copy( a );\n\t\tthis.b.copy( b );\n\t\tthis.c.copy( c );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPointsAndIndices( points, i0, i1, i2 ) {\n\n\t\tthis.a.copy( points[ i0 ] );\n\t\tthis.b.copy( points[ i1 ] );\n\t\tthis.c.copy( points[ i2 ] );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromAttributeAndIndices( attribute, i0, i1, i2 ) {\n\n\t\tthis.a.fromBufferAttribute( attribute, i0 );\n\t\tthis.b.fromBufferAttribute( attribute, i1 );\n\t\tthis.c.fromBufferAttribute( attribute, i2 );\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( triangle ) {\n\n\t\tthis.a.copy( triangle.a );\n\t\tthis.b.copy( triangle.b );\n\t\tthis.c.copy( triangle.c );\n\n\t\treturn this;\n\n\t}\n\n\tgetArea() {\n\n\t\t_v0$1.subVectors( this.c, this.b );\n\t\t_v1$3.subVectors( this.a, this.b );\n\n\t\treturn _v0$1.cross( _v1$3 ).length() * 0.5;\n\n\t}\n\n\tgetMidpoint( target ) {\n\n\t\treturn target.addVectors( this.a, this.b ).add( this.c ).multiplyScalar( 1 / 3 );\n\n\t}\n\n\tgetNormal( target ) {\n\n\t\treturn Triangle.getNormal( this.a, this.b, this.c, target );\n\n\t}\n\n\tgetPlane( target ) {\n\n\t\treturn target.setFromCoplanarPoints( this.a, this.b, this.c );\n\n\t}\n\n\tgetBarycoord( point, target ) {\n\n\t\treturn Triangle.getBarycoord( point, this.a, this.b, this.c, target );\n\n\t}\n\n\tgetUV( point, uv1, uv2, uv3, target ) {\n\n\t\treturn Triangle.getUV( point, this.a, this.b, this.c, uv1, uv2, uv3, target );\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\treturn Triangle.containsPoint( point, this.a, this.b, this.c );\n\n\t}\n\n\tisFrontFacing( direction ) {\n\n\t\treturn Triangle.isFrontFacing( this.a, this.b, this.c, direction );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn box.intersectsTriangle( this );\n\n\t}\n\n\tclosestPointToPoint( p, target ) {\n\n\t\tconst a = this.a, b = this.b, c = this.c;\n\t\tlet v, w;\n\n\t\t// algorithm thanks to Real-Time Collision Detection by Christer Ericson,\n\t\t// published by Morgan Kaufmann Publishers, (c) 2005 Elsevier Inc.,\n\t\t// under the accompanying license; see chapter 5.1.5 for detailed explanation.\n\t\t// basically, we're distinguishing which of the voronoi regions of the triangle\n\t\t// the point lies in with the minimum amount of redundant computation.\n\n\t\t_vab.subVectors( b, a );\n\t\t_vac.subVectors( c, a );\n\t\t_vap.subVectors( p, a );\n\t\tconst d1 = _vab.dot( _vap );\n\t\tconst d2 = _vac.dot( _vap );\n\t\tif ( d1 <= 0 && d2 <= 0 ) {\n\n\t\t\t// vertex region of A; barycentric coords (1, 0, 0)\n\t\t\treturn target.copy( a );\n\n\t\t}\n\n\t\t_vbp.subVectors( p, b );\n\t\tconst d3 = _vab.dot( _vbp );\n\t\tconst d4 = _vac.dot( _vbp );\n\t\tif ( d3 >= 0 && d4 <= d3 ) {\n\n\t\t\t// vertex region of B; barycentric coords (0, 1, 0)\n\t\t\treturn target.copy( b );\n\n\t\t}\n\n\t\tconst vc = d1 * d4 - d3 * d2;\n\t\tif ( vc <= 0 && d1 >= 0 && d3 <= 0 ) {\n\n\t\t\tv = d1 / ( d1 - d3 );\n\t\t\t// edge region of AB; barycentric coords (1-v, v, 0)\n\t\t\treturn target.copy( a ).addScaledVector( _vab, v );\n\n\t\t}\n\n\t\t_vcp.subVectors( p, c );\n\t\tconst d5 = _vab.dot( _vcp );\n\t\tconst d6 = _vac.dot( _vcp );\n\t\tif ( d6 >= 0 && d5 <= d6 ) {\n\n\t\t\t// vertex region of C; barycentric coords (0, 0, 1)\n\t\t\treturn target.copy( c );\n\n\t\t}\n\n\t\tconst vb = d5 * d2 - d1 * d6;\n\t\tif ( vb <= 0 && d2 >= 0 && d6 <= 0 ) {\n\n\t\t\tw = d2 / ( d2 - d6 );\n\t\t\t// edge region of AC; barycentric coords (1-w, 0, w)\n\t\t\treturn target.copy( a ).addScaledVector( _vac, w );\n\n\t\t}\n\n\t\tconst va = d3 * d6 - d5 * d4;\n\t\tif ( va <= 0 && ( d4 - d3 ) >= 0 && ( d5 - d6 ) >= 0 ) {\n\n\t\t\t_vbc.subVectors( c, b );\n\t\t\tw = ( d4 - d3 ) / ( ( d4 - d3 ) + ( d5 - d6 ) );\n\t\t\t// edge region of BC; barycentric coords (0, 1-w, w)\n\t\t\treturn target.copy( b ).addScaledVector( _vbc, w ); // edge region of BC\n\n\t\t}\n\n\t\t// face region\n\t\tconst denom = 1 / ( va + vb + vc );\n\t\t// u = va * denom\n\t\tv = vb * denom;\n\t\tw = vc * denom;\n\n\t\treturn target.copy( a ).addScaledVector( _vab, v ).addScaledVector( _vac, w );\n\n\t}\n\n\tequals( triangle ) {\n\n\t\treturn triangle.a.equals( this.a ) && triangle.b.equals( this.b ) && triangle.c.equals( this.c );\n\n\t}\n\n}\n\nlet materialId = 0;\n\nclass Material extends EventDispatcher {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isMaterial = true;\n\n\t\tObject.defineProperty( this, 'id', { value: materialId ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.name = '';\n\t\tthis.type = 'Material';\n\n\t\tthis.blending = NormalBlending;\n\t\tthis.side = FrontSide;\n\t\tthis.vertexColors = false;\n\n\t\tthis.opacity = 1;\n\t\tthis.transparent = false;\n\n\t\tthis.blendSrc = SrcAlphaFactor;\n\t\tthis.blendDst = OneMinusSrcAlphaFactor;\n\t\tthis.blendEquation = AddEquation;\n\t\tthis.blendSrcAlpha = null;\n\t\tthis.blendDstAlpha = null;\n\t\tthis.blendEquationAlpha = null;\n\n\t\tthis.depthFunc = LessEqualDepth;\n\t\tthis.depthTest = true;\n\t\tthis.depthWrite = true;\n\n\t\tthis.stencilWriteMask = 0xff;\n\t\tthis.stencilFunc = AlwaysStencilFunc;\n\t\tthis.stencilRef = 0;\n\t\tthis.stencilFuncMask = 0xff;\n\t\tthis.stencilFail = KeepStencilOp;\n\t\tthis.stencilZFail = KeepStencilOp;\n\t\tthis.stencilZPass = KeepStencilOp;\n\t\tthis.stencilWrite = false;\n\n\t\tthis.clippingPlanes = null;\n\t\tthis.clipIntersection = false;\n\t\tthis.clipShadows = false;\n\n\t\tthis.shadowSide = null;\n\n\t\tthis.colorWrite = true;\n\n\t\tthis.precision = null; // override the renderer's default precision for this material\n\n\t\tthis.polygonOffset = false;\n\t\tthis.polygonOffsetFactor = 0;\n\t\tthis.polygonOffsetUnits = 0;\n\n\t\tthis.dithering = false;\n\n\t\tthis.alphaToCoverage = false;\n\t\tthis.premultipliedAlpha = false;\n\n\t\tthis.visible = true;\n\n\t\tthis.toneMapped = true;\n\n\t\tthis.userData = {};\n\n\t\tthis.version = 0;\n\n\t\tthis._alphaTest = 0;\n\n\t}\n\n\tget alphaTest() {\n\n\t\treturn this._alphaTest;\n\n\t}\n\n\tset alphaTest( value ) {\n\n\t\tif ( this._alphaTest > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._alphaTest = value;\n\n\t}\n\n\tonBuild( /* shaderobject, renderer */ ) {}\n\n\tonBeforeRender( /* renderer, scene, camera, geometry, object, group */ ) {}\n\n\tonBeforeCompile( /* shaderobject, renderer */ ) {}\n\n\tcustomProgramCacheKey() {\n\n\t\treturn this.onBeforeCompile.toString();\n\n\t}\n\n\tsetValues( values ) {\n\n\t\tif ( values === undefined ) return;\n\n\t\tfor ( const key in values ) {\n\n\t\t\tconst newValue = values[ key ];\n\n\t\t\tif ( newValue === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Material: \\'' + key + '\\' parameter is undefined.' );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\t// for backward compatibility if shading is set in the constructor\n\t\t\tif ( key === 'shading' ) {\n\n\t\t\t\tconsole.warn( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' );\n\t\t\t\tthis.flatShading = ( newValue === FlatShading ) ? true : false;\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tconst currentValue = this[ key ];\n\n\t\t\tif ( currentValue === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.' + this.type + ': \\'' + key + '\\' is not a property of this material.' );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tif ( currentValue && currentValue.isColor ) {\n\n\t\t\t\tcurrentValue.set( newValue );\n\n\t\t\t} else if ( ( currentValue && currentValue.isVector3 ) && ( newValue && newValue.isVector3 ) ) {\n\n\t\t\t\tcurrentValue.copy( newValue );\n\n\t\t\t} else {\n\n\t\t\t\tthis[ key ] = newValue;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( isRootObject ) {\n\n\t\t\tmeta = {\n\t\t\t\ttextures: {},\n\t\t\t\timages: {}\n\t\t\t};\n\n\t\t}\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Material',\n\t\t\t\tgenerator: 'Material.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard Material serialization\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\n\t\tif ( this.name !== '' ) data.name = this.name;\n\n\t\tif ( this.color && this.color.isColor ) data.color = this.color.getHex();\n\n\t\tif ( this.roughness !== undefined ) data.roughness = this.roughness;\n\t\tif ( this.metalness !== undefined ) data.metalness = this.metalness;\n\n\t\tif ( this.sheen !== undefined ) data.sheen = this.sheen;\n\t\tif ( this.sheenColor && this.sheenColor.isColor ) data.sheenColor = this.sheenColor.getHex();\n\t\tif ( this.sheenRoughness !== undefined ) data.sheenRoughness = this.sheenRoughness;\n\t\tif ( this.emissive && this.emissive.isColor ) data.emissive = this.emissive.getHex();\n\t\tif ( this.emissiveIntensity && this.emissiveIntensity !== 1 ) data.emissiveIntensity = this.emissiveIntensity;\n\n\t\tif ( this.specular && this.specular.isColor ) data.specular = this.specular.getHex();\n\t\tif ( this.specularIntensity !== undefined ) data.specularIntensity = this.specularIntensity;\n\t\tif ( this.specularColor && this.specularColor.isColor ) data.specularColor = this.specularColor.getHex();\n\t\tif ( this.shininess !== undefined ) data.shininess = this.shininess;\n\t\tif ( this.clearcoat !== undefined ) data.clearcoat = this.clearcoat;\n\t\tif ( this.clearcoatRoughness !== undefined ) data.clearcoatRoughness = this.clearcoatRoughness;\n\n\t\tif ( this.clearcoatMap && this.clearcoatMap.isTexture ) {\n\n\t\t\tdata.clearcoatMap = this.clearcoatMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.clearcoatRoughnessMap && this.clearcoatRoughnessMap.isTexture ) {\n\n\t\t\tdata.clearcoatRoughnessMap = this.clearcoatRoughnessMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.clearcoatNormalMap && this.clearcoatNormalMap.isTexture ) {\n\n\t\t\tdata.clearcoatNormalMap = this.clearcoatNormalMap.toJSON( meta ).uuid;\n\t\t\tdata.clearcoatNormalScale = this.clearcoatNormalScale.toArray();\n\n\t\t}\n\n\t\tif ( this.iridescence !== undefined ) data.iridescence = this.iridescence;\n\t\tif ( this.iridescenceIOR !== undefined ) data.iridescenceIOR = this.iridescenceIOR;\n\t\tif ( this.iridescenceThicknessRange !== undefined ) data.iridescenceThicknessRange = this.iridescenceThicknessRange;\n\n\t\tif ( this.iridescenceMap && this.iridescenceMap.isTexture ) {\n\n\t\t\tdata.iridescenceMap = this.iridescenceMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.iridescenceThicknessMap && this.iridescenceThicknessMap.isTexture ) {\n\n\t\t\tdata.iridescenceThicknessMap = this.iridescenceThicknessMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.map && this.map.isTexture ) data.map = this.map.toJSON( meta ).uuid;\n\t\tif ( this.matcap && this.matcap.isTexture ) data.matcap = this.matcap.toJSON( meta ).uuid;\n\t\tif ( this.alphaMap && this.alphaMap.isTexture ) data.alphaMap = this.alphaMap.toJSON( meta ).uuid;\n\n\t\tif ( this.lightMap && this.lightMap.isTexture ) {\n\n\t\t\tdata.lightMap = this.lightMap.toJSON( meta ).uuid;\n\t\t\tdata.lightMapIntensity = this.lightMapIntensity;\n\n\t\t}\n\n\t\tif ( this.aoMap && this.aoMap.isTexture ) {\n\n\t\t\tdata.aoMap = this.aoMap.toJSON( meta ).uuid;\n\t\t\tdata.aoMapIntensity = this.aoMapIntensity;\n\n\t\t}\n\n\t\tif ( this.bumpMap && this.bumpMap.isTexture ) {\n\n\t\t\tdata.bumpMap = this.bumpMap.toJSON( meta ).uuid;\n\t\t\tdata.bumpScale = this.bumpScale;\n\n\t\t}\n\n\t\tif ( this.normalMap && this.normalMap.isTexture ) {\n\n\t\t\tdata.normalMap = this.normalMap.toJSON( meta ).uuid;\n\t\t\tdata.normalMapType = this.normalMapType;\n\t\t\tdata.normalScale = this.normalScale.toArray();\n\n\t\t}\n\n\t\tif ( this.displacementMap && this.displacementMap.isTexture ) {\n\n\t\t\tdata.displacementMap = this.displacementMap.toJSON( meta ).uuid;\n\t\t\tdata.displacementScale = this.displacementScale;\n\t\t\tdata.displacementBias = this.displacementBias;\n\n\t\t}\n\n\t\tif ( this.roughnessMap && this.roughnessMap.isTexture ) data.roughnessMap = this.roughnessMap.toJSON( meta ).uuid;\n\t\tif ( this.metalnessMap && this.metalnessMap.isTexture ) data.metalnessMap = this.metalnessMap.toJSON( meta ).uuid;\n\n\t\tif ( this.emissiveMap && this.emissiveMap.isTexture ) data.emissiveMap = this.emissiveMap.toJSON( meta ).uuid;\n\t\tif ( this.specularMap && this.specularMap.isTexture ) data.specularMap = this.specularMap.toJSON( meta ).uuid;\n\t\tif ( this.specularIntensityMap && this.specularIntensityMap.isTexture ) data.specularIntensityMap = this.specularIntensityMap.toJSON( meta ).uuid;\n\t\tif ( this.specularColorMap && this.specularColorMap.isTexture ) data.specularColorMap = this.specularColorMap.toJSON( meta ).uuid;\n\n\t\tif ( this.envMap && this.envMap.isTexture ) {\n\n\t\t\tdata.envMap = this.envMap.toJSON( meta ).uuid;\n\n\t\t\tif ( this.combine !== undefined ) data.combine = this.combine;\n\n\t\t}\n\n\t\tif ( this.envMapIntensity !== undefined ) data.envMapIntensity = this.envMapIntensity;\n\t\tif ( this.reflectivity !== undefined ) data.reflectivity = this.reflectivity;\n\t\tif ( this.refractionRatio !== undefined ) data.refractionRatio = this.refractionRatio;\n\n\t\tif ( this.gradientMap && this.gradientMap.isTexture ) {\n\n\t\t\tdata.gradientMap = this.gradientMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.transmission !== undefined ) data.transmission = this.transmission;\n\t\tif ( this.transmissionMap && this.transmissionMap.isTexture ) data.transmissionMap = this.transmissionMap.toJSON( meta ).uuid;\n\t\tif ( this.thickness !== undefined ) data.thickness = this.thickness;\n\t\tif ( this.thicknessMap && this.thicknessMap.isTexture ) data.thicknessMap = this.thicknessMap.toJSON( meta ).uuid;\n\t\tif ( this.attenuationDistance !== undefined ) data.attenuationDistance = this.attenuationDistance;\n\t\tif ( this.attenuationColor !== undefined ) data.attenuationColor = this.attenuationColor.getHex();\n\n\t\tif ( this.size !== undefined ) data.size = this.size;\n\t\tif ( this.shadowSide !== null ) data.shadowSide = this.shadowSide;\n\t\tif ( this.sizeAttenuation !== undefined ) data.sizeAttenuation = this.sizeAttenuation;\n\n\t\tif ( this.blending !== NormalBlending ) data.blending = this.blending;\n\t\tif ( this.side !== FrontSide ) data.side = this.side;\n\t\tif ( this.vertexColors ) data.vertexColors = true;\n\n\t\tif ( this.opacity < 1 ) data.opacity = this.opacity;\n\t\tif ( this.transparent === true ) data.transparent = this.transparent;\n\n\t\tdata.depthFunc = this.depthFunc;\n\t\tdata.depthTest = this.depthTest;\n\t\tdata.depthWrite = this.depthWrite;\n\t\tdata.colorWrite = this.colorWrite;\n\n\t\tdata.stencilWrite = this.stencilWrite;\n\t\tdata.stencilWriteMask = this.stencilWriteMask;\n\t\tdata.stencilFunc = this.stencilFunc;\n\t\tdata.stencilRef = this.stencilRef;\n\t\tdata.stencilFuncMask = this.stencilFuncMask;\n\t\tdata.stencilFail = this.stencilFail;\n\t\tdata.stencilZFail = this.stencilZFail;\n\t\tdata.stencilZPass = this.stencilZPass;\n\n\t\t// rotation (SpriteMaterial)\n\t\tif ( this.rotation !== undefined && this.rotation !== 0 ) data.rotation = this.rotation;\n\n\t\tif ( this.polygonOffset === true ) data.polygonOffset = true;\n\t\tif ( this.polygonOffsetFactor !== 0 ) data.polygonOffsetFactor = this.polygonOffsetFactor;\n\t\tif ( this.polygonOffsetUnits !== 0 ) data.polygonOffsetUnits = this.polygonOffsetUnits;\n\n\t\tif ( this.linewidth !== undefined && this.linewidth !== 1 ) data.linewidth = this.linewidth;\n\t\tif ( this.dashSize !== undefined ) data.dashSize = this.dashSize;\n\t\tif ( this.gapSize !== undefined ) data.gapSize = this.gapSize;\n\t\tif ( this.scale !== undefined ) data.scale = this.scale;\n\n\t\tif ( this.dithering === true ) data.dithering = true;\n\n\t\tif ( this.alphaTest > 0 ) data.alphaTest = this.alphaTest;\n\t\tif ( this.alphaToCoverage === true ) data.alphaToCoverage = this.alphaToCoverage;\n\t\tif ( this.premultipliedAlpha === true ) data.premultipliedAlpha = this.premultipliedAlpha;\n\n\t\tif ( this.wireframe === true ) data.wireframe = this.wireframe;\n\t\tif ( this.wireframeLinewidth > 1 ) data.wireframeLinewidth = this.wireframeLinewidth;\n\t\tif ( this.wireframeLinecap !== 'round' ) data.wireframeLinecap = this.wireframeLinecap;\n\t\tif ( this.wireframeLinejoin !== 'round' ) data.wireframeLinejoin = this.wireframeLinejoin;\n\n\t\tif ( this.flatShading === true ) data.flatShading = this.flatShading;\n\n\t\tif ( this.visible === false ) data.visible = false;\n\n\t\tif ( this.toneMapped === false ) data.toneMapped = false;\n\n\t\tif ( this.fog === false ) data.fog = false;\n\n\t\tif ( JSON.stringify( this.userData ) !== '{}' ) data.userData = this.userData;\n\n\t\t// TODO: Copied from Object3D.toJSON\n\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tconst values = [];\n\n\t\t\tfor ( const key in cache ) {\n\n\t\t\t\tconst data = cache[ key ];\n\t\t\t\tdelete data.metadata;\n\t\t\t\tvalues.push( data );\n\n\t\t\t}\n\n\t\t\treturn values;\n\n\t\t}\n\n\t\tif ( isRootObject ) {\n\n\t\t\tconst textures = extractFromCache( meta.textures );\n\t\t\tconst images = extractFromCache( meta.images );\n\n\t\t\tif ( textures.length > 0 ) data.textures = textures;\n\t\t\tif ( images.length > 0 ) data.images = images;\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.blending = source.blending;\n\t\tthis.side = source.side;\n\t\tthis.vertexColors = source.vertexColors;\n\n\t\tthis.opacity = source.opacity;\n\t\tthis.transparent = source.transparent;\n\n\t\tthis.blendSrc = source.blendSrc;\n\t\tthis.blendDst = source.blendDst;\n\t\tthis.blendEquation = source.blendEquation;\n\t\tthis.blendSrcAlpha = source.blendSrcAlpha;\n\t\tthis.blendDstAlpha = source.blendDstAlpha;\n\t\tthis.blendEquationAlpha = source.blendEquationAlpha;\n\n\t\tthis.depthFunc = source.depthFunc;\n\t\tthis.depthTest = source.depthTest;\n\t\tthis.depthWrite = source.depthWrite;\n\n\t\tthis.stencilWriteMask = source.stencilWriteMask;\n\t\tthis.stencilFunc = source.stencilFunc;\n\t\tthis.stencilRef = source.stencilRef;\n\t\tthis.stencilFuncMask = source.stencilFuncMask;\n\t\tthis.stencilFail = source.stencilFail;\n\t\tthis.stencilZFail = source.stencilZFail;\n\t\tthis.stencilZPass = source.stencilZPass;\n\t\tthis.stencilWrite = source.stencilWrite;\n\n\t\tconst srcPlanes = source.clippingPlanes;\n\t\tlet dstPlanes = null;\n\n\t\tif ( srcPlanes !== null ) {\n\n\t\t\tconst n = srcPlanes.length;\n\t\t\tdstPlanes = new Array( n );\n\n\t\t\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\t\t\tdstPlanes[ i ] = srcPlanes[ i ].clone();\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.clippingPlanes = dstPlanes;\n\t\tthis.clipIntersection = source.clipIntersection;\n\t\tthis.clipShadows = source.clipShadows;\n\n\t\tthis.shadowSide = source.shadowSide;\n\n\t\tthis.colorWrite = source.colorWrite;\n\n\t\tthis.precision = source.precision;\n\n\t\tthis.polygonOffset = source.polygonOffset;\n\t\tthis.polygonOffsetFactor = source.polygonOffsetFactor;\n\t\tthis.polygonOffsetUnits = source.polygonOffsetUnits;\n\n\t\tthis.dithering = source.dithering;\n\n\t\tthis.alphaTest = source.alphaTest;\n\t\tthis.alphaToCoverage = source.alphaToCoverage;\n\t\tthis.premultipliedAlpha = source.premultipliedAlpha;\n\n\t\tthis.visible = source.visible;\n\n\t\tthis.toneMapped = source.toneMapped;\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n}\n\nclass MeshBasicMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshBasicMaterial = true;\n\n\t\tthis.type = 'MeshBasicMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // emissive\n\n\t\tthis.map = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.specularMap = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.envMap = null;\n\t\tthis.combine = MultiplyOperation;\n\t\tthis.reflectivity = 1;\n\t\tthis.refractionRatio = 0.98;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.specularMap = source.specularMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.combine = source.combine;\n\t\tthis.reflectivity = source.reflectivity;\n\t\tthis.refractionRatio = source.refractionRatio;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _vector$9 = /*@__PURE__*/ new Vector3();\nconst _vector2$1 = /*@__PURE__*/ new Vector2();\n\nclass BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tif ( Array.isArray( array ) ) {\n\n\t\t\tthrow new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' );\n\n\t\t}\n\n\t\tthis.isBufferAttribute = true;\n\n\t\tthis.name = '';\n\n\t\tthis.array = array;\n\t\tthis.itemSize = itemSize;\n\t\tthis.count = array !== undefined ? array.length / itemSize : 0;\n\t\tthis.normalized = normalized === true;\n\n\t\tthis.usage = StaticDrawUsage;\n\t\tthis.updateRange = { offset: 0, count: - 1 };\n\n\t\tthis.version = 0;\n\n\t}\n\n\tonUploadCallback() {}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\tsetUsage( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.name = source.name;\n\t\tthis.array = new source.array.constructor( source.array );\n\t\tthis.itemSize = source.itemSize;\n\t\tthis.count = source.count;\n\t\tthis.normalized = source.normalized;\n\n\t\tthis.usage = source.usage;\n\n\t\treturn this;\n\n\t}\n\n\tcopyAt( index1, attribute, index2 ) {\n\n\t\tindex1 *= this.itemSize;\n\t\tindex2 *= attribute.itemSize;\n\n\t\tfor ( let i = 0, l = this.itemSize; i < l; i ++ ) {\n\n\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcopyArray( array ) {\n\n\t\tthis.array.set( array );\n\n\t\treturn this;\n\n\t}\n\n\tcopyColorsArray( colors ) {\n\n\t\tconst array = this.array;\n\t\tlet offset = 0;\n\n\t\tfor ( let i = 0, l = colors.length; i < l; i ++ ) {\n\n\t\t\tlet color = colors[ i ];\n\n\t\t\tif ( color === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyColorsArray(): color is undefined', i );\n\t\t\t\tcolor = new Color();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = color.r;\n\t\t\tarray[ offset ++ ] = color.g;\n\t\t\tarray[ offset ++ ] = color.b;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcopyVector2sArray( vectors ) {\n\n\t\tconst array = this.array;\n\t\tlet offset = 0;\n\n\t\tfor ( let i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tlet vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector2sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector2();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcopyVector3sArray( vectors ) {\n\n\t\tconst array = this.array;\n\t\tlet offset = 0;\n\n\t\tfor ( let i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tlet vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector3sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector3();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\t\t\tarray[ offset ++ ] = vector.z;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcopyVector4sArray( vectors ) {\n\n\t\tconst array = this.array;\n\t\tlet offset = 0;\n\n\t\tfor ( let i = 0, l = vectors.length; i < l; i ++ ) {\n\n\t\t\tlet vector = vectors[ i ];\n\n\t\t\tif ( vector === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector4sArray(): vector is undefined', i );\n\t\t\t\tvector = new Vector4();\n\n\t\t\t}\n\n\t\t\tarray[ offset ++ ] = vector.x;\n\t\t\tarray[ offset ++ ] = vector.y;\n\t\t\tarray[ offset ++ ] = vector.z;\n\t\t\tarray[ offset ++ ] = vector.w;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix3( m ) {\n\n\t\tif ( this.itemSize === 2 ) {\n\n\t\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t\t_vector2$1.fromBufferAttribute( this, i );\n\t\t\t\t_vector2$1.applyMatrix3( m );\n\n\t\t\t\tthis.setXY( i, _vector2$1.x, _vector2$1.y );\n\n\t\t\t}\n\n\t\t} else if ( this.itemSize === 3 ) {\n\n\t\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t\t_vector$9.fromBufferAttribute( this, i );\n\t\t\t\t_vector$9.applyMatrix3( m );\n\n\t\t\t\tthis.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix4( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$9.fromBufferAttribute( this, i );\n\n\t\t\t_vector$9.applyMatrix4( m );\n\n\t\t\tthis.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tapplyNormalMatrix( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$9.fromBufferAttribute( this, i );\n\n\t\t\t_vector$9.applyNormalMatrix( m );\n\n\t\t\tthis.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttransformDirection( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$9.fromBufferAttribute( this, i );\n\n\t\t\t_vector$9.transformDirection( m );\n\n\t\t\tthis.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tset( value, offset = 0 ) {\n\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t}\n\n\tgetX( index ) {\n\n\t\treturn this.array[ index * this.itemSize ];\n\n\t}\n\n\tsetX( index, x ) {\n\n\t\tthis.array[ index * this.itemSize ] = x;\n\n\t\treturn this;\n\n\t}\n\n\tgetY( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 1 ];\n\n\t}\n\n\tsetY( index, y ) {\n\n\t\tthis.array[ index * this.itemSize + 1 ] = y;\n\n\t\treturn this;\n\n\t}\n\n\tgetZ( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 2 ];\n\n\t}\n\n\tsetZ( index, z ) {\n\n\t\tthis.array[ index * this.itemSize + 2 ] = z;\n\n\t\treturn this;\n\n\t}\n\n\tgetW( index ) {\n\n\t\treturn this.array[ index * this.itemSize + 3 ];\n\n\t}\n\n\tsetW( index, w ) {\n\n\t\tthis.array[ index * this.itemSize + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetXY( index, x, y ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZ( index, x, y, z ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZW( index, x, y, z, w ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\t\tthis.array[ index + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n\tonUpload( callback ) {\n\n\t\tthis.onUploadCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.array, this.itemSize ).copy( this );\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\titemSize: this.itemSize,\n\t\t\ttype: this.array.constructor.name,\n\t\t\tarray: Array.from( this.array ),\n\t\t\tnormalized: this.normalized\n\t\t};\n\n\t\tif ( this.name !== '' ) data.name = this.name;\n\t\tif ( this.usage !== StaticDrawUsage ) data.usage = this.usage;\n\t\tif ( this.updateRange.offset !== 0 || this.updateRange.count !== - 1 ) data.updateRange = this.updateRange;\n\n\t\treturn data;\n\n\t}\n\n}\n\n//\n\nclass Int8BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Int8Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Uint8BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint8Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Uint8ClampedBufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint8ClampedArray( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Int16BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Int16Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Uint16BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint16Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Int32BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Int32Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Uint32BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint32Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Float16BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint16Array( array ), itemSize, normalized );\n\n\t\tthis.isFloat16BufferAttribute = true;\n\n\t}\n\n}\n\n\nclass Float32BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Float32Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Float64BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Float64Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nlet _id$1 = 0;\n\nconst _m1 = /*@__PURE__*/ new Matrix4();\nconst _obj = /*@__PURE__*/ new Object3D();\nconst _offset = /*@__PURE__*/ new Vector3();\nconst _box$1 = /*@__PURE__*/ new Box3();\nconst _boxMorphTargets = /*@__PURE__*/ new Box3();\nconst _vector$8 = /*@__PURE__*/ new Vector3();\n\nclass BufferGeometry extends EventDispatcher {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isBufferGeometry = true;\n\n\t\tObject.defineProperty( this, 'id', { value: _id$1 ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.name = '';\n\t\tthis.type = 'BufferGeometry';\n\n\t\tthis.index = null;\n\t\tthis.attributes = {};\n\n\t\tthis.morphAttributes = {};\n\t\tthis.morphTargetsRelative = false;\n\n\t\tthis.groups = [];\n\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\tthis.drawRange = { start: 0, count: Infinity };\n\n\t\tthis.userData = {};\n\n\t}\n\n\tgetIndex() {\n\n\t\treturn this.index;\n\n\t}\n\n\tsetIndex( index ) {\n\n\t\tif ( Array.isArray( index ) ) {\n\n\t\t\tthis.index = new ( arrayNeedsUint32( index ) ? Uint32BufferAttribute : Uint16BufferAttribute )( index, 1 );\n\n\t\t} else {\n\n\t\t\tthis.index = index;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetAttribute( name ) {\n\n\t\treturn this.attributes[ name ];\n\n\t}\n\n\tsetAttribute( name, attribute ) {\n\n\t\tthis.attributes[ name ] = attribute;\n\n\t\treturn this;\n\n\t}\n\n\tdeleteAttribute( name ) {\n\n\t\tdelete this.attributes[ name ];\n\n\t\treturn this;\n\n\t}\n\n\thasAttribute( name ) {\n\n\t\treturn this.attributes[ name ] !== undefined;\n\n\t}\n\n\taddGroup( start, count, materialIndex = 0 ) {\n\n\t\tthis.groups.push( {\n\n\t\t\tstart: start,\n\t\t\tcount: count,\n\t\t\tmaterialIndex: materialIndex\n\n\t\t} );\n\n\t}\n\n\tclearGroups() {\n\n\t\tthis.groups = [];\n\n\t}\n\n\tsetDrawRange( start, count ) {\n\n\t\tthis.drawRange.start = start;\n\t\tthis.drawRange.count = count;\n\n\t}\n\n\tapplyMatrix4( matrix ) {\n\n\t\tconst position = this.attributes.position;\n\n\t\tif ( position !== undefined ) {\n\n\t\t\tposition.applyMatrix4( matrix );\n\n\t\t\tposition.needsUpdate = true;\n\n\t\t}\n\n\t\tconst normal = this.attributes.normal;\n\n\t\tif ( normal !== undefined ) {\n\n\t\t\tconst normalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\t\tnormal.applyNormalMatrix( normalMatrix );\n\n\t\t\tnormal.needsUpdate = true;\n\n\t\t}\n\n\t\tconst tangent = this.attributes.tangent;\n\n\t\tif ( tangent !== undefined ) {\n\n\t\t\ttangent.transformDirection( matrix );\n\n\t\t\ttangent.needsUpdate = true;\n\n\t\t}\n\n\t\tif ( this.boundingBox !== null ) {\n\n\t\t\tthis.computeBoundingBox();\n\n\t\t}\n\n\t\tif ( this.boundingSphere !== null ) {\n\n\t\t\tthis.computeBoundingSphere();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tapplyQuaternion( q ) {\n\n\t\t_m1.makeRotationFromQuaternion( q );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateX( angle ) {\n\n\t\t// rotate geometry around world x-axis\n\n\t\t_m1.makeRotationX( angle );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateY( angle ) {\n\n\t\t// rotate geometry around world y-axis\n\n\t\t_m1.makeRotationY( angle );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateZ( angle ) {\n\n\t\t// rotate geometry around world z-axis\n\n\t\t_m1.makeRotationZ( angle );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( x, y, z ) {\n\n\t\t// translate geometry\n\n\t\t_m1.makeTranslation( x, y, z );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\tscale( x, y, z ) {\n\n\t\t// scale geometry\n\n\t\t_m1.makeScale( x, y, z );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\tlookAt( vector ) {\n\n\t\t_obj.lookAt( vector );\n\n\t\t_obj.updateMatrix();\n\n\t\tthis.applyMatrix4( _obj.matrix );\n\n\t\treturn this;\n\n\t}\n\n\tcenter() {\n\n\t\tthis.computeBoundingBox();\n\n\t\tthis.boundingBox.getCenter( _offset ).negate();\n\n\t\tthis.translate( _offset.x, _offset.y, _offset.z );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPoints( points ) {\n\n\t\tconst position = [];\n\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tconst point = points[ i ];\n\t\t\tposition.push( point.x, point.y, point.z || 0 );\n\n\t\t}\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( position, 3 ) );\n\n\t\treturn this;\n\n\t}\n\n\tcomputeBoundingBox() {\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tconst position = this.attributes.position;\n\t\tconst morphAttributesPosition = this.morphAttributes.position;\n\n\t\tif ( position && position.isGLBufferAttribute ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box. Alternatively set \"mesh.frustumCulled\" to \"false\".', this );\n\n\t\t\tthis.boundingBox.set(\n\t\t\t\tnew Vector3( - Infinity, - Infinity, - Infinity ),\n\t\t\t\tnew Vector3( + Infinity, + Infinity, + Infinity )\n\t\t\t);\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( position !== undefined ) {\n\n\t\t\tthis.boundingBox.setFromBufferAttribute( position );\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\t_box$1.setFromBufferAttribute( morphAttribute );\n\n\t\t\t\t\tif ( this.morphTargetsRelative ) {\n\n\t\t\t\t\t\t_vector$8.addVectors( this.boundingBox.min, _box$1.min );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _vector$8 );\n\n\t\t\t\t\t\t_vector$8.addVectors( this.boundingBox.max, _box$1.max );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _vector$8 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _box$1.min );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _box$1.max );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthis.boundingBox.makeEmpty();\n\n\t\t}\n\n\t\tif ( isNaN( this.boundingBox.min.x ) || isNaN( this.boundingBox.min.y ) || isNaN( this.boundingBox.min.z ) ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t}\n\n\t}\n\n\tcomputeBoundingSphere() {\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tconst position = this.attributes.position;\n\t\tconst morphAttributesPosition = this.morphAttributes.position;\n\n\t\tif ( position && position.isGLBufferAttribute ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere. Alternatively set \"mesh.frustumCulled\" to \"false\".', this );\n\n\t\t\tthis.boundingSphere.set( new Vector3(), Infinity );\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( position ) {\n\n\t\t\t// first, find the center of the bounding sphere\n\n\t\t\tconst center = this.boundingSphere.center;\n\n\t\t\t_box$1.setFromBufferAttribute( position );\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\t_boxMorphTargets.setFromBufferAttribute( morphAttribute );\n\n\t\t\t\t\tif ( this.morphTargetsRelative ) {\n\n\t\t\t\t\t\t_vector$8.addVectors( _box$1.min, _boxMorphTargets.min );\n\t\t\t\t\t\t_box$1.expandByPoint( _vector$8 );\n\n\t\t\t\t\t\t_vector$8.addVectors( _box$1.max, _boxMorphTargets.max );\n\t\t\t\t\t\t_box$1.expandByPoint( _vector$8 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t_box$1.expandByPoint( _boxMorphTargets.min );\n\t\t\t\t\t\t_box$1.expandByPoint( _boxMorphTargets.max );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t_box$1.getCenter( center );\n\n\t\t\t// second, try to find a boundingSphere with a radius smaller than the\n\t\t\t// boundingSphere of the boundingBox: sqrt(3) smaller in the best case\n\n\t\t\tlet maxRadiusSq = 0;\n\n\t\t\tfor ( let i = 0, il = position.count; i < il; i ++ ) {\n\n\t\t\t\t_vector$8.fromBufferAttribute( position, i );\n\n\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector$8 ) );\n\n\t\t\t}\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\tconst morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t\t\t\tfor ( let j = 0, jl = morphAttribute.count; j < jl; j ++ ) {\n\n\t\t\t\t\t\t_vector$8.fromBufferAttribute( morphAttribute, j );\n\n\t\t\t\t\t\tif ( morphTargetsRelative ) {\n\n\t\t\t\t\t\t\t_offset.fromBufferAttribute( position, j );\n\t\t\t\t\t\t\t_vector$8.add( _offset );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector$8 ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.boundingSphere.radius = Math.sqrt( maxRadiusSq );\n\n\t\t\tif ( isNaN( this.boundingSphere.radius ) ) {\n\n\t\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcomputeTangents() {\n\n\t\tconst index = this.index;\n\t\tconst attributes = this.attributes;\n\n\t\t// based on http://www.terathon.com/code/tangent.html\n\t\t// (per vertex tangents)\n\n\t\tif ( index === null ||\n\t\t\t attributes.position === undefined ||\n\t\t\t attributes.normal === undefined ||\n\t\t\t attributes.uv === undefined ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst indices = index.array;\n\t\tconst positions = attributes.position.array;\n\t\tconst normals = attributes.normal.array;\n\t\tconst uvs = attributes.uv.array;\n\n\t\tconst nVertices = positions.length / 3;\n\n\t\tif ( this.hasAttribute( 'tangent' ) === false ) {\n\n\t\t\tthis.setAttribute( 'tangent', new BufferAttribute( new Float32Array( 4 * nVertices ), 4 ) );\n\n\t\t}\n\n\t\tconst tangents = this.getAttribute( 'tangent' ).array;\n\n\t\tconst tan1 = [], tan2 = [];\n\n\t\tfor ( let i = 0; i < nVertices; i ++ ) {\n\n\t\t\ttan1[ i ] = new Vector3();\n\t\t\ttan2[ i ] = new Vector3();\n\n\t\t}\n\n\t\tconst vA = new Vector3(),\n\t\t\tvB = new Vector3(),\n\t\t\tvC = new Vector3(),\n\n\t\t\tuvA = new Vector2(),\n\t\t\tuvB = new Vector2(),\n\t\t\tuvC = new Vector2(),\n\n\t\t\tsdir = new Vector3(),\n\t\t\ttdir = new Vector3();\n\n\t\tfunction handleTriangle( a, b, c ) {\n\n\t\t\tvA.fromArray( positions, a * 3 );\n\t\t\tvB.fromArray( positions, b * 3 );\n\t\t\tvC.fromArray( positions, c * 3 );\n\n\t\t\tuvA.fromArray( uvs, a * 2 );\n\t\t\tuvB.fromArray( uvs, b * 2 );\n\t\t\tuvC.fromArray( uvs, c * 2 );\n\n\t\t\tvB.sub( vA );\n\t\t\tvC.sub( vA );\n\n\t\t\tuvB.sub( uvA );\n\t\t\tuvC.sub( uvA );\n\n\t\t\tconst r = 1.0 / ( uvB.x * uvC.y - uvC.x * uvB.y );\n\n\t\t\t// silently ignore degenerate uv triangles having coincident or colinear vertices\n\n\t\t\tif ( ! isFinite( r ) ) return;\n\n\t\t\tsdir.copy( vB ).multiplyScalar( uvC.y ).addScaledVector( vC, - uvB.y ).multiplyScalar( r );\n\t\t\ttdir.copy( vC ).multiplyScalar( uvB.x ).addScaledVector( vB, - uvC.x ).multiplyScalar( r );\n\n\t\t\ttan1[ a ].add( sdir );\n\t\t\ttan1[ b ].add( sdir );\n\t\t\ttan1[ c ].add( sdir );\n\n\t\t\ttan2[ a ].add( tdir );\n\t\t\ttan2[ b ].add( tdir );\n\t\t\ttan2[ c ].add( tdir );\n\n\t\t}\n\n\t\tlet groups = this.groups;\n\n\t\tif ( groups.length === 0 ) {\n\n\t\t\tgroups = [ {\n\t\t\t\tstart: 0,\n\t\t\t\tcount: indices.length\n\t\t\t} ];\n\n\t\t}\n\n\t\tfor ( let i = 0, il = groups.length; i < il; ++ i ) {\n\n\t\t\tconst group = groups[ i ];\n\n\t\t\tconst start = group.start;\n\t\t\tconst count = group.count;\n\n\t\t\tfor ( let j = start, jl = start + count; j < jl; j += 3 ) {\n\n\t\t\t\thandleTriangle(\n\t\t\t\t\tindices[ j + 0 ],\n\t\t\t\t\tindices[ j + 1 ],\n\t\t\t\t\tindices[ j + 2 ]\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst tmp = new Vector3(), tmp2 = new Vector3();\n\t\tconst n = new Vector3(), n2 = new Vector3();\n\n\t\tfunction handleVertex( v ) {\n\n\t\t\tn.fromArray( normals, v * 3 );\n\t\t\tn2.copy( n );\n\n\t\t\tconst t = tan1[ v ];\n\n\t\t\t// Gram-Schmidt orthogonalize\n\n\t\t\ttmp.copy( t );\n\t\t\ttmp.sub( n.multiplyScalar( n.dot( t ) ) ).normalize();\n\n\t\t\t// Calculate handedness\n\n\t\t\ttmp2.crossVectors( n2, t );\n\t\t\tconst test = tmp2.dot( tan2[ v ] );\n\t\t\tconst w = ( test < 0.0 ) ? - 1.0 : 1.0;\n\n\t\t\ttangents[ v * 4 ] = tmp.x;\n\t\t\ttangents[ v * 4 + 1 ] = tmp.y;\n\t\t\ttangents[ v * 4 + 2 ] = tmp.z;\n\t\t\ttangents[ v * 4 + 3 ] = w;\n\n\t\t}\n\n\t\tfor ( let i = 0, il = groups.length; i < il; ++ i ) {\n\n\t\t\tconst group = groups[ i ];\n\n\t\t\tconst start = group.start;\n\t\t\tconst count = group.count;\n\n\t\t\tfor ( let j = start, jl = start + count; j < jl; j += 3 ) {\n\n\t\t\t\thandleVertex( indices[ j + 0 ] );\n\t\t\t\thandleVertex( indices[ j + 1 ] );\n\t\t\t\thandleVertex( indices[ j + 2 ] );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcomputeVertexNormals() {\n\n\t\tconst index = this.index;\n\t\tconst positionAttribute = this.getAttribute( 'position' );\n\n\t\tif ( positionAttribute !== undefined ) {\n\n\t\t\tlet normalAttribute = this.getAttribute( 'normal' );\n\n\t\t\tif ( normalAttribute === undefined ) {\n\n\t\t\t\tnormalAttribute = new BufferAttribute( new Float32Array( positionAttribute.count * 3 ), 3 );\n\t\t\t\tthis.setAttribute( 'normal', normalAttribute );\n\n\t\t\t} else {\n\n\t\t\t\t// reset existing normals to zero\n\n\t\t\t\tfor ( let i = 0, il = normalAttribute.count; i < il; i ++ ) {\n\n\t\t\t\t\tnormalAttribute.setXYZ( i, 0, 0, 0 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst pA = new Vector3(), pB = new Vector3(), pC = new Vector3();\n\t\t\tconst nA = new Vector3(), nB = new Vector3(), nC = new Vector3();\n\t\t\tconst cb = new Vector3(), ab = new Vector3();\n\n\t\t\t// indexed elements\n\n\t\t\tif ( index ) {\n\n\t\t\t\tfor ( let i = 0, il = index.count; i < il; i += 3 ) {\n\n\t\t\t\t\tconst vA = index.getX( i + 0 );\n\t\t\t\t\tconst vB = index.getX( i + 1 );\n\t\t\t\t\tconst vC = index.getX( i + 2 );\n\n\t\t\t\t\tpA.fromBufferAttribute( positionAttribute, vA );\n\t\t\t\t\tpB.fromBufferAttribute( positionAttribute, vB );\n\t\t\t\t\tpC.fromBufferAttribute( positionAttribute, vC );\n\n\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\tnA.fromBufferAttribute( normalAttribute, vA );\n\t\t\t\t\tnB.fromBufferAttribute( normalAttribute, vB );\n\t\t\t\t\tnC.fromBufferAttribute( normalAttribute, vC );\n\n\t\t\t\t\tnA.add( cb );\n\t\t\t\t\tnB.add( cb );\n\t\t\t\t\tnC.add( cb );\n\n\t\t\t\t\tnormalAttribute.setXYZ( vA, nA.x, nA.y, nA.z );\n\t\t\t\t\tnormalAttribute.setXYZ( vB, nB.x, nB.y, nB.z );\n\t\t\t\t\tnormalAttribute.setXYZ( vC, nC.x, nC.y, nC.z );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// non-indexed elements (unconnected triangle soup)\n\n\t\t\t\tfor ( let i = 0, il = positionAttribute.count; i < il; i += 3 ) {\n\n\t\t\t\t\tpA.fromBufferAttribute( positionAttribute, i + 0 );\n\t\t\t\t\tpB.fromBufferAttribute( positionAttribute, i + 1 );\n\t\t\t\t\tpC.fromBufferAttribute( positionAttribute, i + 2 );\n\n\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\tnormalAttribute.setXYZ( i + 0, cb.x, cb.y, cb.z );\n\t\t\t\t\tnormalAttribute.setXYZ( i + 1, cb.x, cb.y, cb.z );\n\t\t\t\t\tnormalAttribute.setXYZ( i + 2, cb.x, cb.y, cb.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.normalizeNormals();\n\n\t\t\tnormalAttribute.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n\tmerge( geometry, offset ) {\n\n\t\tif ( ! ( geometry && geometry.isBufferGeometry ) ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.merge(): geometry not an instance of THREE.BufferGeometry.', geometry );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( offset === undefined ) {\n\n\t\t\toffset = 0;\n\n\t\t\tconsole.warn(\n\t\t\t\t'THREE.BufferGeometry.merge(): Overwriting original geometry, starting at offset=0. '\n\t\t\t\t+ 'Use BufferGeometryUtils.mergeBufferGeometries() for lossless merge.'\n\t\t\t);\n\n\t\t}\n\n\t\tconst attributes = this.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tif ( geometry.attributes[ key ] === undefined ) continue;\n\n\t\t\tconst attribute1 = attributes[ key ];\n\t\t\tconst attributeArray1 = attribute1.array;\n\n\t\t\tconst attribute2 = geometry.attributes[ key ];\n\t\t\tconst attributeArray2 = attribute2.array;\n\n\t\t\tconst attributeOffset = attribute2.itemSize * offset;\n\t\t\tconst length = Math.min( attributeArray2.length, attributeArray1.length - attributeOffset );\n\n\t\t\tfor ( let i = 0, j = attributeOffset; i < length; i ++, j ++ ) {\n\n\t\t\t\tattributeArray1[ j ] = attributeArray2[ i ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tnormalizeNormals() {\n\n\t\tconst normals = this.attributes.normal;\n\n\t\tfor ( let i = 0, il = normals.count; i < il; i ++ ) {\n\n\t\t\t_vector$8.fromBufferAttribute( normals, i );\n\n\t\t\t_vector$8.normalize();\n\n\t\t\tnormals.setXYZ( i, _vector$8.x, _vector$8.y, _vector$8.z );\n\n\t\t}\n\n\t}\n\n\ttoNonIndexed() {\n\n\t\tfunction convertBufferAttribute( attribute, indices ) {\n\n\t\t\tconst array = attribute.array;\n\t\t\tconst itemSize = attribute.itemSize;\n\t\t\tconst normalized = attribute.normalized;\n\n\t\t\tconst array2 = new array.constructor( indices.length * itemSize );\n\n\t\t\tlet index = 0, index2 = 0;\n\n\t\t\tfor ( let i = 0, l = indices.length; i < l; i ++ ) {\n\n\t\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\tindex = indices[ i ] * attribute.data.stride + attribute.offset;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tindex = indices[ i ] * itemSize;\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let j = 0; j < itemSize; j ++ ) {\n\n\t\t\t\t\tarray2[ index2 ++ ] = array[ index ++ ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new BufferAttribute( array2, itemSize, normalized );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.index === null ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed.' );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst geometry2 = new BufferGeometry();\n\n\t\tconst indices = this.index.array;\n\t\tconst attributes = this.attributes;\n\n\t\t// attributes\n\n\t\tfor ( const name in attributes ) {\n\n\t\t\tconst attribute = attributes[ name ];\n\n\t\t\tconst newAttribute = convertBufferAttribute( attribute, indices );\n\n\t\t\tgeometry2.setAttribute( name, newAttribute );\n\n\t\t}\n\n\t\t// morph attributes\n\n\t\tconst morphAttributes = this.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst morphArray = [];\n\t\t\tconst morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes\n\n\t\t\tfor ( let i = 0, il = morphAttribute.length; i < il; i ++ ) {\n\n\t\t\t\tconst attribute = morphAttribute[ i ];\n\n\t\t\t\tconst newAttribute = convertBufferAttribute( attribute, indices );\n\n\t\t\t\tmorphArray.push( newAttribute );\n\n\t\t\t}\n\n\t\t\tgeometry2.morphAttributes[ name ] = morphArray;\n\n\t\t}\n\n\t\tgeometry2.morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t// groups\n\n\t\tconst groups = this.groups;\n\n\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\tconst group = groups[ i ];\n\t\t\tgeometry2.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t}\n\n\t\treturn geometry2;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'BufferGeometry',\n\t\t\t\tgenerator: 'BufferGeometry.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard BufferGeometry serialization\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\t\tif ( this.name !== '' ) data.name = this.name;\n\t\tif ( Object.keys( this.userData ).length > 0 ) data.userData = this.userData;\n\n\t\tif ( this.parameters !== undefined ) {\n\n\t\t\tconst parameters = this.parameters;\n\n\t\t\tfor ( const key in parameters ) {\n\n\t\t\t\tif ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ];\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\t// for simplicity the code assumes attributes are not shared across geometries, see #15811\n\n\t\tdata.data = { attributes: {} };\n\n\t\tconst index = this.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tdata.data.index = {\n\t\t\t\ttype: index.array.constructor.name,\n\t\t\t\tarray: Array.prototype.slice.call( index.array )\n\t\t\t};\n\n\t\t}\n\n\t\tconst attributes = this.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tconst attribute = attributes[ key ];\n\n\t\t\tdata.data.attributes[ key ] = attribute.toJSON( data.data );\n\n\t\t}\n\n\t\tconst morphAttributes = {};\n\t\tlet hasMorphAttributes = false;\n\n\t\tfor ( const key in this.morphAttributes ) {\n\n\t\t\tconst attributeArray = this.morphAttributes[ key ];\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0, il = attributeArray.length; i < il; i ++ ) {\n\n\t\t\t\tconst attribute = attributeArray[ i ];\n\n\t\t\t\tarray.push( attribute.toJSON( data.data ) );\n\n\t\t\t}\n\n\t\t\tif ( array.length > 0 ) {\n\n\t\t\t\tmorphAttributes[ key ] = array;\n\n\t\t\t\thasMorphAttributes = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( hasMorphAttributes ) {\n\n\t\t\tdata.data.morphAttributes = morphAttributes;\n\t\t\tdata.data.morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t}\n\n\t\tconst groups = this.groups;\n\n\t\tif ( groups.length > 0 ) {\n\n\t\t\tdata.data.groups = JSON.parse( JSON.stringify( groups ) );\n\n\t\t}\n\n\t\tconst boundingSphere = this.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tdata.data.boundingSphere = {\n\t\t\t\tcenter: boundingSphere.center.toArray(),\n\t\t\t\tradius: boundingSphere.radius\n\t\t\t};\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tclone() {\n\n\t\t return new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\t// reset\n\n\t\tthis.index = null;\n\t\tthis.attributes = {};\n\t\tthis.morphAttributes = {};\n\t\tthis.groups = [];\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\t// used for storing cloned, shared data\n\n\t\tconst data = {};\n\n\t\t// name\n\n\t\tthis.name = source.name;\n\n\t\t// index\n\n\t\tconst index = source.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tthis.setIndex( index.clone( data ) );\n\n\t\t}\n\n\t\t// attributes\n\n\t\tconst attributes = source.attributes;\n\n\t\tfor ( const name in attributes ) {\n\n\t\t\tconst attribute = attributes[ name ];\n\t\t\tthis.setAttribute( name, attribute.clone( data ) );\n\n\t\t}\n\n\t\t// morph attributes\n\n\t\tconst morphAttributes = source.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst array = [];\n\t\t\tconst morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes\n\n\t\t\tfor ( let i = 0, l = morphAttribute.length; i < l; i ++ ) {\n\n\t\t\t\tarray.push( morphAttribute[ i ].clone( data ) );\n\n\t\t\t}\n\n\t\t\tthis.morphAttributes[ name ] = array;\n\n\t\t}\n\n\t\tthis.morphTargetsRelative = source.morphTargetsRelative;\n\n\t\t// groups\n\n\t\tconst groups = source.groups;\n\n\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\tconst group = groups[ i ];\n\t\t\tthis.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t}\n\n\t\t// bounding box\n\n\t\tconst boundingBox = source.boundingBox;\n\n\t\tif ( boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = boundingBox.clone();\n\n\t\t}\n\n\t\t// bounding sphere\n\n\t\tconst boundingSphere = source.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = boundingSphere.clone();\n\n\t\t}\n\n\t\t// draw range\n\n\t\tthis.drawRange.start = source.drawRange.start;\n\t\tthis.drawRange.count = source.drawRange.count;\n\n\t\t// user data\n\n\t\tthis.userData = source.userData;\n\n\t\t// geometry generator parameters\n\n\t\tif ( source.parameters !== undefined ) this.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n}\n\nconst _inverseMatrix$2 = /*@__PURE__*/ new Matrix4();\nconst _ray$2 = /*@__PURE__*/ new Ray();\nconst _sphere$3 = /*@__PURE__*/ new Sphere();\n\nconst _vA$1 = /*@__PURE__*/ new Vector3();\nconst _vB$1 = /*@__PURE__*/ new Vector3();\nconst _vC$1 = /*@__PURE__*/ new Vector3();\n\nconst _tempA = /*@__PURE__*/ new Vector3();\nconst _tempB = /*@__PURE__*/ new Vector3();\nconst _tempC = /*@__PURE__*/ new Vector3();\n\nconst _morphA = /*@__PURE__*/ new Vector3();\nconst _morphB = /*@__PURE__*/ new Vector3();\nconst _morphC = /*@__PURE__*/ new Vector3();\n\nconst _uvA$1 = /*@__PURE__*/ new Vector2();\nconst _uvB$1 = /*@__PURE__*/ new Vector2();\nconst _uvC$1 = /*@__PURE__*/ new Vector2();\n\nconst _intersectionPoint = /*@__PURE__*/ new Vector3();\nconst _intersectionPointWorld = /*@__PURE__*/ new Vector3();\n\nclass Mesh extends Object3D {\n\n\tconstructor( geometry = new BufferGeometry(), material = new MeshBasicMaterial() ) {\n\n\t\tsuper();\n\n\t\tthis.isMesh = true;\n\n\t\tthis.type = 'Mesh';\n\n\t\tthis.geometry = geometry;\n\t\tthis.material = material;\n\n\t\tthis.updateMorphTargets();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tif ( source.morphTargetInfluences !== undefined ) {\n\n\t\t\tthis.morphTargetInfluences = source.morphTargetInfluences.slice();\n\n\t\t}\n\n\t\tif ( source.morphTargetDictionary !== undefined ) {\n\n\t\t\tthis.morphTargetDictionary = Object.assign( {}, source.morphTargetDictionary );\n\n\t\t}\n\n\t\tthis.material = source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t}\n\n\tupdateMorphTargets() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\t\tconst keys = Object.keys( morphAttributes );\n\n\t\tif ( keys.length > 0 ) {\n\n\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst material = this.material;\n\t\tconst matrixWorld = this.matrixWorld;\n\n\t\tif ( material === undefined ) return;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$3.copy( geometry.boundingSphere );\n\t\t_sphere$3.applyMatrix4( matrixWorld );\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$3 ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix$2.copy( matrixWorld ).invert();\n\t\t_ray$2.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$2 );\n\n\t\t// Check boundingBox before continuing\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tif ( _ray$2.intersectsBox( geometry.boundingBox ) === false ) return;\n\n\t\t}\n\n\t\tlet intersection;\n\n\t\tconst index = geometry.index;\n\t\tconst position = geometry.attributes.position;\n\t\tconst morphPosition = geometry.morphAttributes.position;\n\t\tconst morphTargetsRelative = geometry.morphTargetsRelative;\n\t\tconst uv = geometry.attributes.uv;\n\t\tconst uv2 = geometry.attributes.uv2;\n\t\tconst groups = geometry.groups;\n\t\tconst drawRange = geometry.drawRange;\n\n\t\tif ( index !== null ) {\n\n\t\t\t// indexed buffer geometry\n\n\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\tfor ( let i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\tconst start = Math.max( group.start, drawRange.start );\n\t\t\t\t\tconst end = Math.min( index.count, Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) ) );\n\n\t\t\t\t\tfor ( let j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\t\tconst a = index.getX( j );\n\t\t\t\t\t\tconst b = index.getX( j + 1 );\n\t\t\t\t\t\tconst c = index.getX( j + 2 );\n\n\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, groupMaterial, raycaster, _ray$2, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( j / 3 ); // triangle number in indexed buffer semantics\n\t\t\t\t\t\t\tintersection.face.materialIndex = group.materialIndex;\n\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\tconst end = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\tfor ( let i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\t\tconst a = index.getX( i );\n\t\t\t\t\tconst b = index.getX( i + 1 );\n\t\t\t\t\tconst c = index.getX( i + 2 );\n\n\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, material, raycaster, _ray$2, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in indexed buffer semantics\n\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else if ( position !== undefined ) {\n\n\t\t\t// non-indexed buffer geometry\n\n\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\tfor ( let i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\tconst start = Math.max( group.start, drawRange.start );\n\t\t\t\t\tconst end = Math.min( position.count, Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) ) );\n\n\t\t\t\t\tfor ( let j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\t\tconst a = j;\n\t\t\t\t\t\tconst b = j + 1;\n\t\t\t\t\t\tconst c = j + 2;\n\n\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, groupMaterial, raycaster, _ray$2, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( j / 3 ); // triangle number in non-indexed buffer semantics\n\t\t\t\t\t\t\tintersection.face.materialIndex = group.materialIndex;\n\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\tconst end = Math.min( position.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\tfor ( let i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\t\tconst a = i;\n\t\t\t\t\tconst b = i + 1;\n\t\t\t\t\tconst c = i + 2;\n\n\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, material, raycaster, _ray$2, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\n\n\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in non-indexed buffer semantics\n\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nfunction checkIntersection( object, material, raycaster, ray, pA, pB, pC, point ) {\n\n\tlet intersect;\n\n\tif ( material.side === BackSide ) {\n\n\t\tintersect = ray.intersectTriangle( pC, pB, pA, true, point );\n\n\t} else {\n\n\t\tintersect = ray.intersectTriangle( pA, pB, pC, material.side !== DoubleSide, point );\n\n\t}\n\n\tif ( intersect === null ) return null;\n\n\t_intersectionPointWorld.copy( point );\n\t_intersectionPointWorld.applyMatrix4( object.matrixWorld );\n\n\tconst distance = raycaster.ray.origin.distanceTo( _intersectionPointWorld );\n\n\tif ( distance < raycaster.near || distance > raycaster.far ) return null;\n\n\treturn {\n\t\tdistance: distance,\n\t\tpoint: _intersectionPointWorld.clone(),\n\t\tobject: object\n\t};\n\n}\n\nfunction checkBufferGeometryIntersection( object, material, raycaster, ray, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c ) {\n\n\t_vA$1.fromBufferAttribute( position, a );\n\t_vB$1.fromBufferAttribute( position, b );\n\t_vC$1.fromBufferAttribute( position, c );\n\n\tconst morphInfluences = object.morphTargetInfluences;\n\n\tif ( morphPosition && morphInfluences ) {\n\n\t\t_morphA.set( 0, 0, 0 );\n\t\t_morphB.set( 0, 0, 0 );\n\t\t_morphC.set( 0, 0, 0 );\n\n\t\tfor ( let i = 0, il = morphPosition.length; i < il; i ++ ) {\n\n\t\t\tconst influence = morphInfluences[ i ];\n\t\t\tconst morphAttribute = morphPosition[ i ];\n\n\t\t\tif ( influence === 0 ) continue;\n\n\t\t\t_tempA.fromBufferAttribute( morphAttribute, a );\n\t\t\t_tempB.fromBufferAttribute( morphAttribute, b );\n\t\t\t_tempC.fromBufferAttribute( morphAttribute, c );\n\n\t\t\tif ( morphTargetsRelative ) {\n\n\t\t\t\t_morphA.addScaledVector( _tempA, influence );\n\t\t\t\t_morphB.addScaledVector( _tempB, influence );\n\t\t\t\t_morphC.addScaledVector( _tempC, influence );\n\n\t\t\t} else {\n\n\t\t\t\t_morphA.addScaledVector( _tempA.sub( _vA$1 ), influence );\n\t\t\t\t_morphB.addScaledVector( _tempB.sub( _vB$1 ), influence );\n\t\t\t\t_morphC.addScaledVector( _tempC.sub( _vC$1 ), influence );\n\n\t\t\t}\n\n\t\t}\n\n\t\t_vA$1.add( _morphA );\n\t\t_vB$1.add( _morphB );\n\t\t_vC$1.add( _morphC );\n\n\t}\n\n\tif ( object.isSkinnedMesh ) {\n\n\t\tobject.boneTransform( a, _vA$1 );\n\t\tobject.boneTransform( b, _vB$1 );\n\t\tobject.boneTransform( c, _vC$1 );\n\n\t}\n\n\tconst intersection = checkIntersection( object, material, raycaster, ray, _vA$1, _vB$1, _vC$1, _intersectionPoint );\n\n\tif ( intersection ) {\n\n\t\tif ( uv ) {\n\n\t\t\t_uvA$1.fromBufferAttribute( uv, a );\n\t\t\t_uvB$1.fromBufferAttribute( uv, b );\n\t\t\t_uvC$1.fromBufferAttribute( uv, c );\n\n\t\t\tintersection.uv = Triangle.getUV( _intersectionPoint, _vA$1, _vB$1, _vC$1, _uvA$1, _uvB$1, _uvC$1, new Vector2() );\n\n\t\t}\n\n\t\tif ( uv2 ) {\n\n\t\t\t_uvA$1.fromBufferAttribute( uv2, a );\n\t\t\t_uvB$1.fromBufferAttribute( uv2, b );\n\t\t\t_uvC$1.fromBufferAttribute( uv2, c );\n\n\t\t\tintersection.uv2 = Triangle.getUV( _intersectionPoint, _vA$1, _vB$1, _vC$1, _uvA$1, _uvB$1, _uvC$1, new Vector2() );\n\n\t\t}\n\n\t\tconst face = {\n\t\t\ta: a,\n\t\t\tb: b,\n\t\t\tc: c,\n\t\t\tnormal: new Vector3(),\n\t\t\tmaterialIndex: 0\n\t\t};\n\n\t\tTriangle.getNormal( _vA$1, _vB$1, _vC$1, face.normal );\n\n\t\tintersection.face = face;\n\n\t}\n\n\treturn intersection;\n\n}\n\nclass BoxGeometry extends BufferGeometry {\n\n\tconstructor( width = 1, height = 1, depth = 1, widthSegments = 1, heightSegments = 1, depthSegments = 1 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'BoxGeometry';\n\n\t\tthis.parameters = {\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\tdepth: depth,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\tdepthSegments: depthSegments\n\t\t};\n\n\t\tconst scope = this;\n\n\t\t// segments\n\n\t\twidthSegments = Math.floor( widthSegments );\n\t\theightSegments = Math.floor( heightSegments );\n\t\tdepthSegments = Math.floor( depthSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tlet numberOfVertices = 0;\n\t\tlet groupStart = 0;\n\n\t\t// build each side of the box geometry\n\n\t\tbuildPlane( 'z', 'y', 'x', - 1, - 1, depth, height, width, depthSegments, heightSegments, 0 ); // px\n\t\tbuildPlane( 'z', 'y', 'x', 1, - 1, depth, height, - width, depthSegments, heightSegments, 1 ); // nx\n\t\tbuildPlane( 'x', 'z', 'y', 1, 1, width, depth, height, widthSegments, depthSegments, 2 ); // py\n\t\tbuildPlane( 'x', 'z', 'y', 1, - 1, width, depth, - height, widthSegments, depthSegments, 3 ); // ny\n\t\tbuildPlane( 'x', 'y', 'z', 1, - 1, width, height, depth, widthSegments, heightSegments, 4 ); // pz\n\t\tbuildPlane( 'x', 'y', 'z', - 1, - 1, width, height, - depth, widthSegments, heightSegments, 5 ); // nz\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\tfunction buildPlane( u, v, w, udir, vdir, width, height, depth, gridX, gridY, materialIndex ) {\n\n\t\t\tconst segmentWidth = width / gridX;\n\t\t\tconst segmentHeight = height / gridY;\n\n\t\t\tconst widthHalf = width / 2;\n\t\t\tconst heightHalf = height / 2;\n\t\t\tconst depthHalf = depth / 2;\n\n\t\t\tconst gridX1 = gridX + 1;\n\t\t\tconst gridY1 = gridY + 1;\n\n\t\t\tlet vertexCounter = 0;\n\t\t\tlet groupCount = 0;\n\n\t\t\tconst vector = new Vector3();\n\n\t\t\t// generate vertices, normals and uvs\n\n\t\t\tfor ( let iy = 0; iy < gridY1; iy ++ ) {\n\n\t\t\t\tconst y = iy * segmentHeight - heightHalf;\n\n\t\t\t\tfor ( let ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\t\t\tconst x = ix * segmentWidth - widthHalf;\n\n\t\t\t\t\t// set values to correct vector component\n\n\t\t\t\t\tvector[ u ] = x * udir;\n\t\t\t\t\tvector[ v ] = y * vdir;\n\t\t\t\t\tvector[ w ] = depthHalf;\n\n\t\t\t\t\t// now apply vector to vertex buffer\n\n\t\t\t\t\tvertices.push( vector.x, vector.y, vector.z );\n\n\t\t\t\t\t// set values to correct vector component\n\n\t\t\t\t\tvector[ u ] = 0;\n\t\t\t\t\tvector[ v ] = 0;\n\t\t\t\t\tvector[ w ] = depth > 0 ? 1 : - 1;\n\n\t\t\t\t\t// now apply vector to normal buffer\n\n\t\t\t\t\tnormals.push( vector.x, vector.y, vector.z );\n\n\t\t\t\t\t// uvs\n\n\t\t\t\t\tuvs.push( ix / gridX );\n\t\t\t\t\tuvs.push( 1 - ( iy / gridY ) );\n\n\t\t\t\t\t// counters\n\n\t\t\t\t\tvertexCounter += 1;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// indices\n\n\t\t\t// 1. you need three indices to draw a single face\n\t\t\t// 2. a single segment consists of two faces\n\t\t\t// 3. so we need to generate six (2*3) indices per segment\n\n\t\t\tfor ( let iy = 0; iy < gridY; iy ++ ) {\n\n\t\t\t\tfor ( let ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\t\t\tconst a = numberOfVertices + ix + gridX1 * iy;\n\t\t\t\t\tconst b = numberOfVertices + ix + gridX1 * ( iy + 1 );\n\t\t\t\t\tconst c = numberOfVertices + ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\t\t\tconst d = numberOfVertices + ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t\t\t// faces\n\n\t\t\t\t\tindices.push( a, b, d );\n\t\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t\t// increase counter\n\n\t\t\t\t\tgroupCount += 6;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\t\tscope.addGroup( groupStart, groupCount, materialIndex );\n\n\t\t\t// calculate new start value for groups\n\n\t\t\tgroupStart += groupCount;\n\n\t\t\t// update total number of vertices\n\n\t\t\tnumberOfVertices += vertexCounter;\n\n\t\t}\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new BoxGeometry( data.width, data.height, data.depth, data.widthSegments, data.heightSegments, data.depthSegments );\n\n\t}\n\n}\n\n/**\n * Uniform Utilities\n */\n\nfunction cloneUniforms( src ) {\n\n\tconst dst = {};\n\n\tfor ( const u in src ) {\n\n\t\tdst[ u ] = {};\n\n\t\tfor ( const p in src[ u ] ) {\n\n\t\t\tconst property = src[ u ][ p ];\n\n\t\t\tif ( property && ( property.isColor ||\n\t\t\t\tproperty.isMatrix3 || property.isMatrix4 ||\n\t\t\t\tproperty.isVector2 || property.isVector3 || property.isVector4 ||\n\t\t\t\tproperty.isTexture || property.isQuaternion ) ) {\n\n\t\t\t\tdst[ u ][ p ] = property.clone();\n\n\t\t\t} else if ( Array.isArray( property ) ) {\n\n\t\t\t\tdst[ u ][ p ] = property.slice();\n\n\t\t\t} else {\n\n\t\t\t\tdst[ u ][ p ] = property;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn dst;\n\n}\n\nfunction mergeUniforms( uniforms ) {\n\n\tconst merged = {};\n\n\tfor ( let u = 0; u < uniforms.length; u ++ ) {\n\n\t\tconst tmp = cloneUniforms( uniforms[ u ] );\n\n\t\tfor ( const p in tmp ) {\n\n\t\t\tmerged[ p ] = tmp[ p ];\n\n\t\t}\n\n\t}\n\n\treturn merged;\n\n}\n\nfunction cloneUniformsGroups( src ) {\n\n\tconst dst = [];\n\n\tfor ( let u = 0; u < src.length; u ++ ) {\n\n\t\tdst.push( src[ u ].clone() );\n\n\t}\n\n\treturn dst;\n\n}\n\n// Legacy\n\nconst UniformsUtils = { clone: cloneUniforms, merge: mergeUniforms };\n\nvar default_vertex = \"void main() {\\n\\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\\n}\";\n\nvar default_fragment = \"void main() {\\n\\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\\n}\";\n\nclass ShaderMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isShaderMaterial = true;\n\n\t\tthis.type = 'ShaderMaterial';\n\n\t\tthis.defines = {};\n\t\tthis.uniforms = {};\n\t\tthis.uniformsGroups = [];\n\n\t\tthis.vertexShader = default_vertex;\n\t\tthis.fragmentShader = default_fragment;\n\n\t\tthis.linewidth = 1;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\n\t\tthis.fog = false; // set to use scene fog\n\t\tthis.lights = false; // set to use scene lights\n\t\tthis.clipping = false; // set to use user-defined clipping planes\n\n\t\tthis.extensions = {\n\t\t\tderivatives: false, // set to use derivatives\n\t\t\tfragDepth: false, // set to use fragment depth values\n\t\t\tdrawBuffers: false, // set to use draw buffers\n\t\t\tshaderTextureLOD: false // set to use shader texture LOD\n\t\t};\n\n\t\t// When rendered geometry doesn't include these attributes but the material does,\n\t\t// use these default values in WebGL. This avoids errors when buffer data is missing.\n\t\tthis.defaultAttributeValues = {\n\t\t\t'color': [ 1, 1, 1 ],\n\t\t\t'uv': [ 0, 0 ],\n\t\t\t'uv2': [ 0, 0 ]\n\t\t};\n\n\t\tthis.index0AttributeName = undefined;\n\t\tthis.uniformsNeedUpdate = false;\n\n\t\tthis.glslVersion = null;\n\n\t\tif ( parameters !== undefined ) {\n\n\t\t\tif ( parameters.attributes !== undefined ) {\n\n\t\t\t\tconsole.error( 'THREE.ShaderMaterial: attributes should now be defined in THREE.BufferGeometry instead.' );\n\n\t\t\t}\n\n\t\t\tthis.setValues( parameters );\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.fragmentShader = source.fragmentShader;\n\t\tthis.vertexShader = source.vertexShader;\n\n\t\tthis.uniforms = cloneUniforms( source.uniforms );\n\t\tthis.uniformsGroups = cloneUniformsGroups( source.uniformsGroups );\n\n\t\tthis.defines = Object.assign( {}, source.defines );\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\t\tthis.fog = source.fog;\n\t\tthis.lights = source.lights;\n\t\tthis.clipping = source.clipping;\n\n\t\tthis.extensions = Object.assign( {}, source.extensions );\n\n\t\tthis.glslVersion = source.glslVersion;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.glslVersion = this.glslVersion;\n\t\tdata.uniforms = {};\n\n\t\tfor ( const name in this.uniforms ) {\n\n\t\t\tconst uniform = this.uniforms[ name ];\n\t\t\tconst value = uniform.value;\n\n\t\t\tif ( value && value.isTexture ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 't',\n\t\t\t\t\tvalue: value.toJSON( meta ).uuid\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isColor ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'c',\n\t\t\t\t\tvalue: value.getHex()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isVector2 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'v2',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isVector3 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'v3',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isVector4 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'v4',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isMatrix3 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'm3',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isMatrix4 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'm4',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\tvalue: value\n\t\t\t\t};\n\n\t\t\t\t// note: the array variants v2v, v3v, v4v, m4v and tv are not supported so far\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( Object.keys( this.defines ).length > 0 ) data.defines = this.defines;\n\n\t\tdata.vertexShader = this.vertexShader;\n\t\tdata.fragmentShader = this.fragmentShader;\n\n\t\tconst extensions = {};\n\n\t\tfor ( const key in this.extensions ) {\n\n\t\t\tif ( this.extensions[ key ] === true ) extensions[ key ] = true;\n\n\t\t}\n\n\t\tif ( Object.keys( extensions ).length > 0 ) data.extensions = extensions;\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass Camera extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isCamera = true;\n\n\t\tthis.type = 'Camera';\n\n\t\tthis.matrixWorldInverse = new Matrix4();\n\n\t\tthis.projectionMatrix = new Matrix4();\n\t\tthis.projectionMatrixInverse = new Matrix4();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.matrixWorldInverse.copy( source.matrixWorldInverse );\n\n\t\tthis.projectionMatrix.copy( source.projectionMatrix );\n\t\tthis.projectionMatrixInverse.copy( source.projectionMatrixInverse );\n\n\t\treturn this;\n\n\t}\n\n\tgetWorldDirection( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\tconst e = this.matrixWorld.elements;\n\n\t\treturn target.set( - e[ 8 ], - e[ 9 ], - e[ 10 ] ).normalize();\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tthis.matrixWorldInverse.copy( this.matrixWorld ).invert();\n\n\t}\n\n\tupdateWorldMatrix( updateParents, updateChildren ) {\n\n\t\tsuper.updateWorldMatrix( updateParents, updateChildren );\n\n\t\tthis.matrixWorldInverse.copy( this.matrixWorld ).invert();\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nclass PerspectiveCamera extends Camera {\n\n\tconstructor( fov = 50, aspect = 1, near = 0.1, far = 2000 ) {\n\n\t\tsuper();\n\n\t\tthis.isPerspectiveCamera = true;\n\n\t\tthis.type = 'PerspectiveCamera';\n\n\t\tthis.fov = fov;\n\t\tthis.zoom = 1;\n\n\t\tthis.near = near;\n\t\tthis.far = far;\n\t\tthis.focus = 10;\n\n\t\tthis.aspect = aspect;\n\t\tthis.view = null;\n\n\t\tthis.filmGauge = 35;\t// width of the film (default in millimeters)\n\t\tthis.filmOffset = 0;\t// horizontal film offset (same unit as gauge)\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.fov = source.fov;\n\t\tthis.zoom = source.zoom;\n\n\t\tthis.near = source.near;\n\t\tthis.far = source.far;\n\t\tthis.focus = source.focus;\n\n\t\tthis.aspect = source.aspect;\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\tthis.filmGauge = source.filmGauge;\n\t\tthis.filmOffset = source.filmOffset;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the FOV by focal length in respect to the current .filmGauge.\n\t *\n\t * The default film gauge is 35, so that the focal length can be specified for\n\t * a 35mm (full frame) camera.\n\t *\n\t * Values for focal length and film gauge must have the same unit.\n\t */\n\tsetFocalLength( focalLength ) {\n\n\t\t/** see {@link http://www.bobatkins.com/photography/technical/field_of_view.html} */\n\t\tconst vExtentSlope = 0.5 * this.getFilmHeight() / focalLength;\n\n\t\tthis.fov = RAD2DEG * 2 * Math.atan( vExtentSlope );\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\t/**\n\t * Calculates the focal length from the current .fov and .filmGauge.\n\t */\n\tgetFocalLength() {\n\n\t\tconst vExtentSlope = Math.tan( DEG2RAD * 0.5 * this.fov );\n\n\t\treturn 0.5 * this.getFilmHeight() / vExtentSlope;\n\n\t}\n\n\tgetEffectiveFOV() {\n\n\t\treturn RAD2DEG * 2 * Math.atan(\n\t\t\tMath.tan( DEG2RAD * 0.5 * this.fov ) / this.zoom );\n\n\t}\n\n\tgetFilmWidth() {\n\n\t\t// film not completely covered in portrait format (aspect < 1)\n\t\treturn this.filmGauge * Math.min( this.aspect, 1 );\n\n\t}\n\n\tgetFilmHeight() {\n\n\t\t// film not completely covered in landscape format (aspect > 1)\n\t\treturn this.filmGauge / Math.max( this.aspect, 1 );\n\n\t}\n\n\t/**\n\t * Sets an offset in a larger frustum. This is useful for multi-window or\n\t * multi-monitor/multi-machine setups.\n\t *\n\t * For example, if you have 3x2 monitors and each monitor is 1920x1080 and\n\t * the monitors are in grid like this\n\t *\n\t *   +---+---+---+\n\t *   | A | B | C |\n\t *   +---+---+---+\n\t *   | D | E | F |\n\t *   +---+---+---+\n\t *\n\t * then for each monitor you would call it like this\n\t *\n\t *   const w = 1920;\n\t *   const h = 1080;\n\t *   const fullWidth = w * 3;\n\t *   const fullHeight = h * 2;\n\t *\n\t *   --A--\n\t *   camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 0, w, h );\n\t *   --B--\n\t *   camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 0, w, h );\n\t *   --C--\n\t *   camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 0, w, h );\n\t *   --D--\n\t *   camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 1, w, h );\n\t *   --E--\n\t *   camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 1, w, h );\n\t *   --F--\n\t *   camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 1, w, h );\n\t *\n\t *   Note there is no reason monitors have to be the same size or in a grid.\n\t */\n\tsetViewOffset( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\tthis.aspect = fullWidth / fullHeight;\n\n\t\tif ( this.view === null ) {\n\n\t\t\tthis.view = {\n\t\t\t\tenabled: true,\n\t\t\t\tfullWidth: 1,\n\t\t\t\tfullHeight: 1,\n\t\t\t\toffsetX: 0,\n\t\t\t\toffsetY: 0,\n\t\t\t\twidth: 1,\n\t\t\t\theight: 1\n\t\t\t};\n\n\t\t}\n\n\t\tthis.view.enabled = true;\n\t\tthis.view.fullWidth = fullWidth;\n\t\tthis.view.fullHeight = fullHeight;\n\t\tthis.view.offsetX = x;\n\t\tthis.view.offsetY = y;\n\t\tthis.view.width = width;\n\t\tthis.view.height = height;\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tclearViewOffset() {\n\n\t\tif ( this.view !== null ) {\n\n\t\t\tthis.view.enabled = false;\n\n\t\t}\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tupdateProjectionMatrix() {\n\n\t\tconst near = this.near;\n\t\tlet top = near * Math.tan( DEG2RAD * 0.5 * this.fov ) / this.zoom;\n\t\tlet height = 2 * top;\n\t\tlet width = this.aspect * height;\n\t\tlet left = - 0.5 * width;\n\t\tconst view = this.view;\n\n\t\tif ( this.view !== null && this.view.enabled ) {\n\n\t\t\tconst fullWidth = view.fullWidth,\n\t\t\t\tfullHeight = view.fullHeight;\n\n\t\t\tleft += view.offsetX * width / fullWidth;\n\t\t\ttop -= view.offsetY * height / fullHeight;\n\t\t\twidth *= view.width / fullWidth;\n\t\t\theight *= view.height / fullHeight;\n\n\t\t}\n\n\t\tconst skew = this.filmOffset;\n\t\tif ( skew !== 0 ) left += near * skew / this.getFilmWidth();\n\n\t\tthis.projectionMatrix.makePerspective( left, left + width, top, top - height, near, this.far );\n\n\t\tthis.projectionMatrixInverse.copy( this.projectionMatrix ).invert();\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.fov = this.fov;\n\t\tdata.object.zoom = this.zoom;\n\n\t\tdata.object.near = this.near;\n\t\tdata.object.far = this.far;\n\t\tdata.object.focus = this.focus;\n\n\t\tdata.object.aspect = this.aspect;\n\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\tdata.object.filmGauge = this.filmGauge;\n\t\tdata.object.filmOffset = this.filmOffset;\n\n\t\treturn data;\n\n\t}\n\n}\n\nconst fov = 90, aspect = 1;\n\nclass CubeCamera extends Object3D {\n\n\tconstructor( near, far, renderTarget ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'CubeCamera';\n\n\t\tif ( renderTarget.isWebGLCubeRenderTarget !== true ) {\n\n\t\t\tconsole.error( 'THREE.CubeCamera: The constructor now expects an instance of WebGLCubeRenderTarget as third parameter.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.renderTarget = renderTarget;\n\n\t\tconst cameraPX = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraPX.layers = this.layers;\n\t\tcameraPX.up.set( 0, - 1, 0 );\n\t\tcameraPX.lookAt( new Vector3( 1, 0, 0 ) );\n\t\tthis.add( cameraPX );\n\n\t\tconst cameraNX = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraNX.layers = this.layers;\n\t\tcameraNX.up.set( 0, - 1, 0 );\n\t\tcameraNX.lookAt( new Vector3( - 1, 0, 0 ) );\n\t\tthis.add( cameraNX );\n\n\t\tconst cameraPY = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraPY.layers = this.layers;\n\t\tcameraPY.up.set( 0, 0, 1 );\n\t\tcameraPY.lookAt( new Vector3( 0, 1, 0 ) );\n\t\tthis.add( cameraPY );\n\n\t\tconst cameraNY = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraNY.layers = this.layers;\n\t\tcameraNY.up.set( 0, 0, - 1 );\n\t\tcameraNY.lookAt( new Vector3( 0, - 1, 0 ) );\n\t\tthis.add( cameraNY );\n\n\t\tconst cameraPZ = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraPZ.layers = this.layers;\n\t\tcameraPZ.up.set( 0, - 1, 0 );\n\t\tcameraPZ.lookAt( new Vector3( 0, 0, 1 ) );\n\t\tthis.add( cameraPZ );\n\n\t\tconst cameraNZ = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraNZ.layers = this.layers;\n\t\tcameraNZ.up.set( 0, - 1, 0 );\n\t\tcameraNZ.lookAt( new Vector3( 0, 0, - 1 ) );\n\t\tthis.add( cameraNZ );\n\n\t}\n\n\tupdate( renderer, scene ) {\n\n\t\tif ( this.parent === null ) this.updateMatrixWorld();\n\n\t\tconst renderTarget = this.renderTarget;\n\n\t\tconst [ cameraPX, cameraNX, cameraPY, cameraNY, cameraPZ, cameraNZ ] = this.children;\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\tconst currentToneMapping = renderer.toneMapping;\n\t\tconst currentXrEnabled = renderer.xr.enabled;\n\n\t\trenderer.toneMapping = NoToneMapping;\n\t\trenderer.xr.enabled = false;\n\n\t\tconst generateMipmaps = renderTarget.texture.generateMipmaps;\n\n\t\trenderTarget.texture.generateMipmaps = false;\n\n\t\trenderer.setRenderTarget( renderTarget, 0 );\n\t\trenderer.render( scene, cameraPX );\n\n\t\trenderer.setRenderTarget( renderTarget, 1 );\n\t\trenderer.render( scene, cameraNX );\n\n\t\trenderer.setRenderTarget( renderTarget, 2 );\n\t\trenderer.render( scene, cameraPY );\n\n\t\trenderer.setRenderTarget( renderTarget, 3 );\n\t\trenderer.render( scene, cameraNY );\n\n\t\trenderer.setRenderTarget( renderTarget, 4 );\n\t\trenderer.render( scene, cameraPZ );\n\n\t\trenderTarget.texture.generateMipmaps = generateMipmaps;\n\n\t\trenderer.setRenderTarget( renderTarget, 5 );\n\t\trenderer.render( scene, cameraNZ );\n\n\t\trenderer.setRenderTarget( currentRenderTarget );\n\n\t\trenderer.toneMapping = currentToneMapping;\n\t\trenderer.xr.enabled = currentXrEnabled;\n\n\t\trenderTarget.texture.needsPMREMUpdate = true;\n\n\t}\n\n}\n\nclass CubeTexture extends Texture {\n\n\tconstructor( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ) {\n\n\t\timages = images !== undefined ? images : [];\n\t\tmapping = mapping !== undefined ? mapping : CubeReflectionMapping;\n\n\t\tsuper( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\t\tthis.isCubeTexture = true;\n\n\t\tthis.flipY = false;\n\n\t}\n\n\tget images() {\n\n\t\treturn this.image;\n\n\t}\n\n\tset images( value ) {\n\n\t\tthis.image = value;\n\n\t}\n\n}\n\nclass WebGLCubeRenderTarget extends WebGLRenderTarget {\n\n\tconstructor( size, options = {} ) {\n\n\t\tsuper( size, size, options );\n\n\t\tthis.isWebGLCubeRenderTarget = true;\n\n\t\tconst image = { width: size, height: size, depth: 1 };\n\t\tconst images = [ image, image, image, image, image, image ];\n\n\t\tthis.texture = new CubeTexture( images, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.encoding );\n\n\t\t// By convention -- likely based on the RenderMan spec from the 1990's -- cube maps are specified by WebGL (and three.js)\n\t\t// in a coordinate system in which positive-x is to the right when looking up the positive-z axis -- in other words,\n\t\t// in a left-handed coordinate system. By continuing this convention, preexisting cube maps continued to render correctly.\n\n\t\t// three.js uses a right-handed coordinate system. So environment maps used in three.js appear to have px and nx swapped\n\t\t// and the flag isRenderTargetTexture controls this conversion. The flip is not required when using WebGLCubeRenderTarget.texture\n\t\t// as a cube texture (this is detected when isRenderTargetTexture is set to true for cube textures).\n\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t\tthis.texture.generateMipmaps = options.generateMipmaps !== undefined ? options.generateMipmaps : false;\n\t\tthis.texture.minFilter = options.minFilter !== undefined ? options.minFilter : LinearFilter;\n\n\t}\n\n\tfromEquirectangularTexture( renderer, texture ) {\n\n\t\tthis.texture.type = texture.type;\n\t\tthis.texture.encoding = texture.encoding;\n\n\t\tthis.texture.generateMipmaps = texture.generateMipmaps;\n\t\tthis.texture.minFilter = texture.minFilter;\n\t\tthis.texture.magFilter = texture.magFilter;\n\n\t\tconst shader = {\n\n\t\t\tuniforms: {\n\t\t\t\ttEquirect: { value: null },\n\t\t\t},\n\n\t\t\tvertexShader: /* glsl */`\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\tvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\n\t\t\t\t\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n\n\t\t\t\t}\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvWorldDirection = transformDirection( position, modelMatrix );\n\n\t\t\t\t\t#include <begin_vertex>\n\t\t\t\t\t#include <project_vertex>\n\n\t\t\t\t}\n\t\t\t`,\n\n\t\t\tfragmentShader: /* glsl */`\n\n\t\t\t\tuniform sampler2D tEquirect;\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\t#include <common>\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvec3 direction = normalize( vWorldDirection );\n\n\t\t\t\t\tvec2 sampleUV = equirectUv( direction );\n\n\t\t\t\t\tgl_FragColor = texture2D( tEquirect, sampleUV );\n\n\t\t\t\t}\n\t\t\t`\n\t\t};\n\n\t\tconst geometry = new BoxGeometry( 5, 5, 5 );\n\n\t\tconst material = new ShaderMaterial( {\n\n\t\t\tname: 'CubemapFromEquirect',\n\n\t\t\tuniforms: cloneUniforms( shader.uniforms ),\n\t\t\tvertexShader: shader.vertexShader,\n\t\t\tfragmentShader: shader.fragmentShader,\n\t\t\tside: BackSide,\n\t\t\tblending: NoBlending\n\n\t\t} );\n\n\t\tmaterial.uniforms.tEquirect.value = texture;\n\n\t\tconst mesh = new Mesh( geometry, material );\n\n\t\tconst currentMinFilter = texture.minFilter;\n\n\t\t// Avoid blurred poles\n\t\tif ( texture.minFilter === LinearMipmapLinearFilter ) texture.minFilter = LinearFilter;\n\n\t\tconst camera = new CubeCamera( 1, 10, this );\n\t\tcamera.update( renderer, mesh );\n\n\t\ttexture.minFilter = currentMinFilter;\n\n\t\tmesh.geometry.dispose();\n\t\tmesh.material.dispose();\n\n\t\treturn this;\n\n\t}\n\n\tclear( renderer, color, depth, stencil ) {\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\trenderer.setRenderTarget( this, i );\n\n\t\t\trenderer.clear( color, depth, stencil );\n\n\t\t}\n\n\t\trenderer.setRenderTarget( currentRenderTarget );\n\n\t}\n\n}\n\nconst _vector1 = /*@__PURE__*/ new Vector3();\nconst _vector2 = /*@__PURE__*/ new Vector3();\nconst _normalMatrix = /*@__PURE__*/ new Matrix3();\n\nclass Plane {\n\n\tconstructor( normal = new Vector3( 1, 0, 0 ), constant = 0 ) {\n\n\t\tthis.isPlane = true;\n\n\t\t// normal is assumed to be normalized\n\n\t\tthis.normal = normal;\n\t\tthis.constant = constant;\n\n\t}\n\n\tset( normal, constant ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = constant;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponents( x, y, z, w ) {\n\n\t\tthis.normal.set( x, y, z );\n\t\tthis.constant = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromNormalAndCoplanarPoint( normal, point ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = - point.dot( this.normal );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromCoplanarPoints( a, b, c ) {\n\n\t\tconst normal = _vector1.subVectors( c, b ).cross( _vector2.subVectors( a, b ) ).normalize();\n\n\t\t// Q: should an error be thrown if normal is zero (e.g. degenerate plane)?\n\n\t\tthis.setFromNormalAndCoplanarPoint( normal, a );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( plane ) {\n\n\t\tthis.normal.copy( plane.normal );\n\t\tthis.constant = plane.constant;\n\n\t\treturn this;\n\n\t}\n\n\tnormalize() {\n\n\t\t// Note: will lead to a divide by zero if the plane is invalid.\n\n\t\tconst inverseNormalLength = 1.0 / this.normal.length();\n\t\tthis.normal.multiplyScalar( inverseNormalLength );\n\t\tthis.constant *= inverseNormalLength;\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.constant *= - 1;\n\t\tthis.normal.negate();\n\n\t\treturn this;\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn this.normal.dot( point ) + this.constant;\n\n\t}\n\n\tdistanceToSphere( sphere ) {\n\n\t\treturn this.distanceToPoint( sphere.center ) - sphere.radius;\n\n\t}\n\n\tprojectPoint( point, target ) {\n\n\t\treturn target.copy( this.normal ).multiplyScalar( - this.distanceToPoint( point ) ).add( point );\n\n\t}\n\n\tintersectLine( line, target ) {\n\n\t\tconst direction = line.delta( _vector1 );\n\n\t\tconst denominator = this.normal.dot( direction );\n\n\t\tif ( denominator === 0 ) {\n\n\t\t\t// line is coplanar, return origin\n\t\t\tif ( this.distanceToPoint( line.start ) === 0 ) {\n\n\t\t\t\treturn target.copy( line.start );\n\n\t\t\t}\n\n\t\t\t// Unsure if this is the correct method to handle this case.\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst t = - ( line.start.dot( this.normal ) + this.constant ) / denominator;\n\n\t\tif ( t < 0 || t > 1 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\treturn target.copy( direction ).multiplyScalar( t ).add( line.start );\n\n\t}\n\n\tintersectsLine( line ) {\n\n\t\t// Note: this tests if a line intersects the plane, not whether it (or its end-points) are coplanar with it.\n\n\t\tconst startSign = this.distanceToPoint( line.start );\n\t\tconst endSign = this.distanceToPoint( line.end );\n\n\t\treturn ( startSign < 0 && endSign > 0 ) || ( endSign < 0 && startSign > 0 );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn box.intersectsPlane( this );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\treturn sphere.intersectsPlane( this );\n\n\t}\n\n\tcoplanarPoint( target ) {\n\n\t\treturn target.copy( this.normal ).multiplyScalar( - this.constant );\n\n\t}\n\n\tapplyMatrix4( matrix, optionalNormalMatrix ) {\n\n\t\tconst normalMatrix = optionalNormalMatrix || _normalMatrix.getNormalMatrix( matrix );\n\n\t\tconst referencePoint = this.coplanarPoint( _vector1 ).applyMatrix4( matrix );\n\n\t\tconst normal = this.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\tthis.constant = - referencePoint.dot( normal );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( offset ) {\n\n\t\tthis.constant -= offset.dot( this.normal );\n\n\t\treturn this;\n\n\t}\n\n\tequals( plane ) {\n\n\t\treturn plane.normal.equals( this.normal ) && ( plane.constant === this.constant );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nconst _sphere$2 = /*@__PURE__*/ new Sphere();\nconst _vector$7 = /*@__PURE__*/ new Vector3();\n\nclass Frustum {\n\n\tconstructor( p0 = new Plane(), p1 = new Plane(), p2 = new Plane(), p3 = new Plane(), p4 = new Plane(), p5 = new Plane() ) {\n\n\t\tthis.planes = [ p0, p1, p2, p3, p4, p5 ];\n\n\t}\n\n\tset( p0, p1, p2, p3, p4, p5 ) {\n\n\t\tconst planes = this.planes;\n\n\t\tplanes[ 0 ].copy( p0 );\n\t\tplanes[ 1 ].copy( p1 );\n\t\tplanes[ 2 ].copy( p2 );\n\t\tplanes[ 3 ].copy( p3 );\n\t\tplanes[ 4 ].copy( p4 );\n\t\tplanes[ 5 ].copy( p5 );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( frustum ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tplanes[ i ].copy( frustum.planes[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetFromProjectionMatrix( m ) {\n\n\t\tconst planes = this.planes;\n\t\tconst me = m.elements;\n\t\tconst me0 = me[ 0 ], me1 = me[ 1 ], me2 = me[ 2 ], me3 = me[ 3 ];\n\t\tconst me4 = me[ 4 ], me5 = me[ 5 ], me6 = me[ 6 ], me7 = me[ 7 ];\n\t\tconst me8 = me[ 8 ], me9 = me[ 9 ], me10 = me[ 10 ], me11 = me[ 11 ];\n\t\tconst me12 = me[ 12 ], me13 = me[ 13 ], me14 = me[ 14 ], me15 = me[ 15 ];\n\n\t\tplanes[ 0 ].setComponents( me3 - me0, me7 - me4, me11 - me8, me15 - me12 ).normalize();\n\t\tplanes[ 1 ].setComponents( me3 + me0, me7 + me4, me11 + me8, me15 + me12 ).normalize();\n\t\tplanes[ 2 ].setComponents( me3 + me1, me7 + me5, me11 + me9, me15 + me13 ).normalize();\n\t\tplanes[ 3 ].setComponents( me3 - me1, me7 - me5, me11 - me9, me15 - me13 ).normalize();\n\t\tplanes[ 4 ].setComponents( me3 - me2, me7 - me6, me11 - me10, me15 - me14 ).normalize();\n\t\tplanes[ 5 ].setComponents( me3 + me2, me7 + me6, me11 + me10, me15 + me14 ).normalize();\n\n\t\treturn this;\n\n\t}\n\n\tintersectsObject( object ) {\n\n\t\tconst geometry = object.geometry;\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$2.copy( geometry.boundingSphere ).applyMatrix4( object.matrixWorld );\n\n\t\treturn this.intersectsSphere( _sphere$2 );\n\n\t}\n\n\tintersectsSprite( sprite ) {\n\n\t\t_sphere$2.center.set( 0, 0, 0 );\n\t\t_sphere$2.radius = 0.7071067811865476;\n\t\t_sphere$2.applyMatrix4( sprite.matrixWorld );\n\n\t\treturn this.intersectsSphere( _sphere$2 );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\tconst planes = this.planes;\n\t\tconst center = sphere.center;\n\t\tconst negRadius = - sphere.radius;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst distance = planes[ i ].distanceToPoint( center );\n\n\t\t\tif ( distance < negRadius ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst plane = planes[ i ];\n\n\t\t\t// corner at max distance\n\n\t\t\t_vector$7.x = plane.normal.x > 0 ? box.max.x : box.min.x;\n\t\t\t_vector$7.y = plane.normal.y > 0 ? box.max.y : box.min.y;\n\t\t\t_vector$7.z = plane.normal.z > 0 ? box.max.z : box.min.z;\n\n\t\t\tif ( plane.distanceToPoint( _vector$7 ) < 0 ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tif ( planes[ i ].distanceToPoint( point ) < 0 ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nfunction WebGLAnimation() {\n\n\tlet context = null;\n\tlet isAnimating = false;\n\tlet animationLoop = null;\n\tlet requestId = null;\n\n\tfunction onAnimationFrame( time, frame ) {\n\n\t\tanimationLoop( time, frame );\n\n\t\trequestId = context.requestAnimationFrame( onAnimationFrame );\n\n\t}\n\n\treturn {\n\n\t\tstart: function () {\n\n\t\t\tif ( isAnimating === true ) return;\n\t\t\tif ( animationLoop === null ) return;\n\n\t\t\trequestId = context.requestAnimationFrame( onAnimationFrame );\n\n\t\t\tisAnimating = true;\n\n\t\t},\n\n\t\tstop: function () {\n\n\t\t\tcontext.cancelAnimationFrame( requestId );\n\n\t\t\tisAnimating = false;\n\n\t\t},\n\n\t\tsetAnimationLoop: function ( callback ) {\n\n\t\t\tanimationLoop = callback;\n\n\t\t},\n\n\t\tsetContext: function ( value ) {\n\n\t\t\tcontext = value;\n\n\t\t}\n\n\t};\n\n}\n\nfunction WebGLAttributes( gl, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tconst buffers = new WeakMap();\n\n\tfunction createBuffer( attribute, bufferType ) {\n\n\t\tconst array = attribute.array;\n\t\tconst usage = attribute.usage;\n\n\t\tconst buffer = gl.createBuffer();\n\n\t\tgl.bindBuffer( bufferType, buffer );\n\t\tgl.bufferData( bufferType, array, usage );\n\n\t\tattribute.onUploadCallback();\n\n\t\tlet type;\n\n\t\tif ( array instanceof Float32Array ) {\n\n\t\t\ttype = 5126;\n\n\t\t} else if ( array instanceof Uint16Array ) {\n\n\t\t\tif ( attribute.isFloat16BufferAttribute ) {\n\n\t\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t\ttype = 5131;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( 'THREE.WebGLAttributes: Usage of Float16BufferAttribute requires WebGL2.' );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\ttype = 5123;\n\n\t\t\t}\n\n\t\t} else if ( array instanceof Int16Array ) {\n\n\t\t\ttype = 5122;\n\n\t\t} else if ( array instanceof Uint32Array ) {\n\n\t\t\ttype = 5125;\n\n\t\t} else if ( array instanceof Int32Array ) {\n\n\t\t\ttype = 5124;\n\n\t\t} else if ( array instanceof Int8Array ) {\n\n\t\t\ttype = 5120;\n\n\t\t} else if ( array instanceof Uint8Array ) {\n\n\t\t\ttype = 5121;\n\n\t\t} else if ( array instanceof Uint8ClampedArray ) {\n\n\t\t\ttype = 5121;\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'THREE.WebGLAttributes: Unsupported buffer data format: ' + array );\n\n\t\t}\n\n\t\treturn {\n\t\t\tbuffer: buffer,\n\t\t\ttype: type,\n\t\t\tbytesPerElement: array.BYTES_PER_ELEMENT,\n\t\t\tversion: attribute.version\n\t\t};\n\n\t}\n\n\tfunction updateBuffer( buffer, attribute, bufferType ) {\n\n\t\tconst array = attribute.array;\n\t\tconst updateRange = attribute.updateRange;\n\n\t\tgl.bindBuffer( bufferType, buffer );\n\n\t\tif ( updateRange.count === - 1 ) {\n\n\t\t\t// Not using update ranges\n\n\t\t\tgl.bufferSubData( bufferType, 0, array );\n\n\t\t} else {\n\n\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\tgl.bufferSubData( bufferType, updateRange.offset * array.BYTES_PER_ELEMENT,\n\t\t\t\t\tarray, updateRange.offset, updateRange.count );\n\n\t\t\t} else {\n\n\t\t\t\tgl.bufferSubData( bufferType, updateRange.offset * array.BYTES_PER_ELEMENT,\n\t\t\t\t\tarray.subarray( updateRange.offset, updateRange.offset + updateRange.count ) );\n\n\t\t\t}\n\n\t\t\tupdateRange.count = - 1; // reset range\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction get( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\treturn buffers.get( attribute );\n\n\t}\n\n\tfunction remove( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\tconst data = buffers.get( attribute );\n\n\t\tif ( data ) {\n\n\t\t\tgl.deleteBuffer( data.buffer );\n\n\t\t\tbuffers.delete( attribute );\n\n\t\t}\n\n\t}\n\n\tfunction update( attribute, bufferType ) {\n\n\t\tif ( attribute.isGLBufferAttribute ) {\n\n\t\t\tconst cached = buffers.get( attribute );\n\n\t\t\tif ( ! cached || cached.version < attribute.version ) {\n\n\t\t\t\tbuffers.set( attribute, {\n\t\t\t\t\tbuffer: attribute.buffer,\n\t\t\t\t\ttype: attribute.type,\n\t\t\t\t\tbytesPerElement: attribute.elementSize,\n\t\t\t\t\tversion: attribute.version\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\tconst data = buffers.get( attribute );\n\n\t\tif ( data === undefined ) {\n\n\t\t\tbuffers.set( attribute, createBuffer( attribute, bufferType ) );\n\n\t\t} else if ( data.version < attribute.version ) {\n\n\t\t\tupdateBuffer( data.buffer, attribute, bufferType );\n\n\t\t\tdata.version = attribute.version;\n\n\t\t}\n\n\t}\n\n\treturn {\n\n\t\tget: get,\n\t\tremove: remove,\n\t\tupdate: update\n\n\t};\n\n}\n\nclass PlaneGeometry extends BufferGeometry {\n\n\tconstructor( width = 1, height = 1, widthSegments = 1, heightSegments = 1 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'PlaneGeometry';\n\n\t\tthis.parameters = {\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments\n\t\t};\n\n\t\tconst width_half = width / 2;\n\t\tconst height_half = height / 2;\n\n\t\tconst gridX = Math.floor( widthSegments );\n\t\tconst gridY = Math.floor( heightSegments );\n\n\t\tconst gridX1 = gridX + 1;\n\t\tconst gridY1 = gridY + 1;\n\n\t\tconst segment_width = width / gridX;\n\t\tconst segment_height = height / gridY;\n\n\t\t//\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\tfor ( let iy = 0; iy < gridY1; iy ++ ) {\n\n\t\t\tconst y = iy * segment_height - height_half;\n\n\t\t\tfor ( let ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\t\tconst x = ix * segment_width - width_half;\n\n\t\t\t\tvertices.push( x, - y, 0 );\n\n\t\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t\tuvs.push( ix / gridX );\n\t\t\t\tuvs.push( 1 - ( iy / gridY ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( let iy = 0; iy < gridY; iy ++ ) {\n\n\t\t\tfor ( let ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\t\tconst a = ix + gridX1 * iy;\n\t\t\t\tconst b = ix + gridX1 * ( iy + 1 );\n\t\t\t\tconst c = ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\t\tconst d = ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new PlaneGeometry( data.width, data.height, data.widthSegments, data.heightSegments );\n\n\t}\n\n}\n\nvar alphamap_fragment = \"#ifdef USE_ALPHAMAP\\n\\tdiffuseColor.a *= texture2D( alphaMap, vUv ).g;\\n#endif\";\n\nvar alphamap_pars_fragment = \"#ifdef USE_ALPHAMAP\\n\\tuniform sampler2D alphaMap;\\n#endif\";\n\nvar alphatest_fragment = \"#ifdef USE_ALPHATEST\\n\\tif ( diffuseColor.a < alphaTest ) discard;\\n#endif\";\n\nvar alphatest_pars_fragment = \"#ifdef USE_ALPHATEST\\n\\tuniform float alphaTest;\\n#endif\";\n\nvar aomap_fragment = \"#ifdef USE_AOMAP\\n\\tfloat ambientOcclusion = ( texture2D( aoMap, vUv2 ).r - 1.0 ) * aoMapIntensity + 1.0;\\n\\treflectedLight.indirectDiffuse *= ambientOcclusion;\\n\\t#if defined( USE_ENVMAP ) && defined( STANDARD )\\n\\t\\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\\n\\t\\treflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.roughness );\\n\\t#endif\\n#endif\";\n\nvar aomap_pars_fragment = \"#ifdef USE_AOMAP\\n\\tuniform sampler2D aoMap;\\n\\tuniform float aoMapIntensity;\\n#endif\";\n\nvar begin_vertex = \"vec3 transformed = vec3( position );\";\n\nvar beginnormal_vertex = \"vec3 objectNormal = vec3( normal );\\n#ifdef USE_TANGENT\\n\\tvec3 objectTangent = vec3( tangent.xyz );\\n#endif\";\n\nvar bsdfs = \"vec3 BRDF_Lambert( const in vec3 diffuseColor ) {\\n\\treturn RECIPROCAL_PI * diffuseColor;\\n}\\nvec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) {\\n\\tfloat fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );\\n\\treturn f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );\\n}\\nfloat F_Schlick( const in float f0, const in float f90, const in float dotVH ) {\\n\\tfloat fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );\\n\\treturn f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );\\n}\\nvec3 Schlick_to_F0( const in vec3 f, const in float f90, const in float dotVH ) {\\n    float x = clamp( 1.0 - dotVH, 0.0, 1.0 );\\n    float x2 = x * x;\\n    float x5 = clamp( x * x2 * x2, 0.0, 0.9999 );\\n    return ( f - vec3( f90 ) * x5 ) / ( 1.0 - x5 );\\n}\\nfloat V_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\\n\\tfloat gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\\n\\treturn 0.5 / max( gv + gl, EPSILON );\\n}\\nfloat D_GGX( const in float alpha, const in float dotNH ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;\\n\\treturn RECIPROCAL_PI * a2 / pow2( denom );\\n}\\nvec3 BRDF_GGX( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 f0, const in float f90, const in float roughness ) {\\n\\tfloat alpha = pow2( roughness );\\n\\tvec3 halfDir = normalize( lightDir + viewDir );\\n\\tfloat dotNL = saturate( dot( normal, lightDir ) );\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\\n\\tvec3 F = F_Schlick( f0, f90, dotVH );\\n\\tfloat V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\\n\\tfloat D = D_GGX( alpha, dotNH );\\n\\treturn F * ( V * D );\\n}\\n#ifdef USE_IRIDESCENCE\\n\\tvec3 BRDF_GGX_Iridescence( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 f0, const in float f90, const in float iridescence, const in vec3 iridescenceFresnel, const in float roughness ) {\\n\\t\\tfloat alpha = pow2( roughness );\\n\\t\\tvec3 halfDir = normalize( lightDir + viewDir );\\n\\t\\tfloat dotNL = saturate( dot( normal, lightDir ) );\\n\\t\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\t\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\t\\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\\n\\t\\tvec3 F = mix( F_Schlick( f0, f90, dotVH ), iridescenceFresnel, iridescence );\\n\\t\\tfloat V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\\n\\t\\tfloat D = D_GGX( alpha, dotNH );\\n\\t\\treturn F * ( V * D );\\n\\t}\\n#endif\\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\\n\\tconst float LUT_SIZE = 64.0;\\n\\tconst float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\\n\\tconst float LUT_BIAS = 0.5 / LUT_SIZE;\\n\\tfloat dotNV = saturate( dot( N, V ) );\\n\\tvec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );\\n\\tuv = uv * LUT_SCALE + LUT_BIAS;\\n\\treturn uv;\\n}\\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\\n\\tfloat l = length( f );\\n\\treturn max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\\n}\\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\\n\\tfloat x = dot( v1, v2 );\\n\\tfloat y = abs( x );\\n\\tfloat a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;\\n\\tfloat b = 3.4175940 + ( 4.1616724 + y ) * y;\\n\\tfloat v = a / b;\\n\\tfloat theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\\n\\treturn cross( v1, v2 ) * theta_sintheta;\\n}\\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\\n\\tvec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\\n\\tvec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\\n\\tvec3 lightNormal = cross( v1, v2 );\\n\\tif( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\\n\\tvec3 T1, T2;\\n\\tT1 = normalize( V - N * dot( V, N ) );\\n\\tT2 = - cross( N, T1 );\\n\\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\\n\\tvec3 coords[ 4 ];\\n\\tcoords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\\n\\tcoords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\\n\\tcoords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\\n\\tcoords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\\n\\tcoords[ 0 ] = normalize( coords[ 0 ] );\\n\\tcoords[ 1 ] = normalize( coords[ 1 ] );\\n\\tcoords[ 2 ] = normalize( coords[ 2 ] );\\n\\tcoords[ 3 ] = normalize( coords[ 3 ] );\\n\\tvec3 vectorFormFactor = vec3( 0.0 );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\\n\\tfloat result = LTC_ClippedSphereFormFactor( vectorFormFactor );\\n\\treturn vec3( result );\\n}\\nfloat G_BlinnPhong_Implicit( ) {\\n\\treturn 0.25;\\n}\\nfloat D_BlinnPhong( const in float shininess, const in float dotNH ) {\\n\\treturn RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );\\n}\\nvec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float shininess ) {\\n\\tvec3 halfDir = normalize( lightDir + viewDir );\\n\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\\n\\tvec3 F = F_Schlick( specularColor, 1.0, dotVH );\\n\\tfloat G = G_BlinnPhong_Implicit( );\\n\\tfloat D = D_BlinnPhong( shininess, dotNH );\\n\\treturn F * ( G * D );\\n}\\n#if defined( USE_SHEEN )\\nfloat D_Charlie( float roughness, float dotNH ) {\\n\\tfloat alpha = pow2( roughness );\\n\\tfloat invAlpha = 1.0 / alpha;\\n\\tfloat cos2h = dotNH * dotNH;\\n\\tfloat sin2h = max( 1.0 - cos2h, 0.0078125 );\\n\\treturn ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI );\\n}\\nfloat V_Neubelt( float dotNV, float dotNL ) {\\n\\treturn saturate( 1.0 / ( 4.0 * ( dotNL + dotNV - dotNL * dotNV ) ) );\\n}\\nvec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenColor, const in float sheenRoughness ) {\\n\\tvec3 halfDir = normalize( lightDir + viewDir );\\n\\tfloat dotNL = saturate( dot( normal, lightDir ) );\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\tfloat D = D_Charlie( sheenRoughness, dotNH );\\n\\tfloat V = V_Neubelt( dotNV, dotNL );\\n\\treturn sheenColor * ( D * V );\\n}\\n#endif\";\n\nvar iridescence_fragment = \"#ifdef USE_IRIDESCENCE\\n\\tconst mat3 XYZ_TO_REC709 = mat3(\\n\\t\\t 3.2404542, -0.9692660,  0.0556434,\\n\\t\\t-1.5371385,  1.8760108, -0.2040259,\\n\\t\\t-0.4985314,  0.0415560,  1.0572252\\n\\t);\\n\\tvec3 Fresnel0ToIor( vec3 fresnel0 ) {\\n\\t\\tvec3 sqrtF0 = sqrt( fresnel0 );\\n\\t\\treturn ( vec3( 1.0 ) + sqrtF0 ) / ( vec3( 1.0 ) - sqrtF0 );\\n\\t}\\n\\tvec3 IorToFresnel0( vec3 transmittedIor, float incidentIor ) {\\n\\t\\treturn pow2( ( transmittedIor - vec3( incidentIor ) ) / ( transmittedIor + vec3( incidentIor ) ) );\\n\\t}\\n\\tfloat IorToFresnel0( float transmittedIor, float incidentIor ) {\\n\\t\\treturn pow2( ( transmittedIor - incidentIor ) / ( transmittedIor + incidentIor ));\\n\\t}\\n\\tvec3 evalSensitivity( float OPD, vec3 shift ) {\\n\\t\\tfloat phase = 2.0 * PI * OPD * 1.0e-9;\\n\\t\\tvec3 val = vec3( 5.4856e-13, 4.4201e-13, 5.2481e-13 );\\n\\t\\tvec3 pos = vec3( 1.6810e+06, 1.7953e+06, 2.2084e+06 );\\n\\t\\tvec3 var = vec3( 4.3278e+09, 9.3046e+09, 6.6121e+09 );\\n\\t\\tvec3 xyz = val * sqrt( 2.0 * PI * var ) * cos( pos * phase + shift ) * exp( - pow2( phase ) * var );\\n\\t\\txyz.x += 9.7470e-14 * sqrt( 2.0 * PI * 4.5282e+09 ) * cos( 2.2399e+06 * phase + shift[ 0 ] ) * exp( - 4.5282e+09 * pow2( phase ) );\\n\\t\\txyz /= 1.0685e-7;\\n\\t\\tvec3 rgb = XYZ_TO_REC709 * xyz;\\n\\t\\treturn rgb;\\n\\t}\\n\\tvec3 evalIridescence( float outsideIOR, float eta2, float cosTheta1, float thinFilmThickness, vec3 baseF0 ) {\\n\\t\\tvec3 I;\\n\\t\\tfloat iridescenceIOR = mix( outsideIOR, eta2, smoothstep( 0.0, 0.03, thinFilmThickness ) );\\n\\t\\tfloat sinTheta2Sq = pow2( outsideIOR / iridescenceIOR ) * ( 1.0 - pow2( cosTheta1 ) );\\n\\t\\tfloat cosTheta2Sq = 1.0 - sinTheta2Sq;\\n\\t\\tif ( cosTheta2Sq < 0.0 ) {\\n\\t\\t\\t return vec3( 1.0 );\\n\\t\\t}\\n\\t\\tfloat cosTheta2 = sqrt( cosTheta2Sq );\\n\\t\\tfloat R0 = IorToFresnel0( iridescenceIOR, outsideIOR );\\n\\t\\tfloat R12 = F_Schlick( R0, 1.0, cosTheta1 );\\n\\t\\tfloat R21 = R12;\\n\\t\\tfloat T121 = 1.0 - R12;\\n\\t\\tfloat phi12 = 0.0;\\n\\t\\tif ( iridescenceIOR < outsideIOR ) phi12 = PI;\\n\\t\\tfloat phi21 = PI - phi12;\\n\\t\\tvec3 baseIOR = Fresnel0ToIor( clamp( baseF0, 0.0, 0.9999 ) );\\t\\tvec3 R1 = IorToFresnel0( baseIOR, iridescenceIOR );\\n\\t\\tvec3 R23 = F_Schlick( R1, 1.0, cosTheta2 );\\n\\t\\tvec3 phi23 = vec3( 0.0 );\\n\\t\\tif ( baseIOR[ 0 ] < iridescenceIOR ) phi23[ 0 ] = PI;\\n\\t\\tif ( baseIOR[ 1 ] < iridescenceIOR ) phi23[ 1 ] = PI;\\n\\t\\tif ( baseIOR[ 2 ] < iridescenceIOR ) phi23[ 2 ] = PI;\\n\\t\\tfloat OPD = 2.0 * iridescenceIOR * thinFilmThickness * cosTheta2;\\n\\t\\tvec3 phi = vec3( phi21 ) + phi23;\\n\\t\\tvec3 R123 = clamp( R12 * R23, 1e-5, 0.9999 );\\n\\t\\tvec3 r123 = sqrt( R123 );\\n\\t\\tvec3 Rs = pow2( T121 ) * R23 / ( vec3( 1.0 ) - R123 );\\n\\t\\tvec3 C0 = R12 + Rs;\\n\\t\\tI = C0;\\n\\t\\tvec3 Cm = Rs - T121;\\n\\t\\tfor ( int m = 1; m <= 2; ++ m ) {\\n\\t\\t\\tCm *= r123;\\n\\t\\t\\tvec3 Sm = 2.0 * evalSensitivity( float( m ) * OPD, float( m ) * phi );\\n\\t\\t\\tI += Cm * Sm;\\n\\t\\t}\\n\\t\\treturn max( I, vec3( 0.0 ) );\\n\\t}\\n#endif\";\n\nvar bumpmap_pars_fragment = \"#ifdef USE_BUMPMAP\\n\\tuniform sampler2D bumpMap;\\n\\tuniform float bumpScale;\\n\\tvec2 dHdxy_fwd() {\\n\\t\\tvec2 dSTdx = dFdx( vUv );\\n\\t\\tvec2 dSTdy = dFdy( vUv );\\n\\t\\tfloat Hll = bumpScale * texture2D( bumpMap, vUv ).x;\\n\\t\\tfloat dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll;\\n\\t\\tfloat dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll;\\n\\t\\treturn vec2( dBx, dBy );\\n\\t}\\n\\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy, float faceDirection ) {\\n\\t\\tvec3 vSigmaX = dFdx( surf_pos.xyz );\\n\\t\\tvec3 vSigmaY = dFdy( surf_pos.xyz );\\n\\t\\tvec3 vN = surf_norm;\\n\\t\\tvec3 R1 = cross( vSigmaY, vN );\\n\\t\\tvec3 R2 = cross( vN, vSigmaX );\\n\\t\\tfloat fDet = dot( vSigmaX, R1 ) * faceDirection;\\n\\t\\tvec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\\n\\t\\treturn normalize( abs( fDet ) * surf_norm - vGrad );\\n\\t}\\n#endif\";\n\nvar clipping_planes_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvec4 plane;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\\n\\t\\tplane = clippingPlanes[ i ];\\n\\t\\tif ( dot( vClipPosition, plane.xyz ) > plane.w ) discard;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\\n\\t\\tbool clipped = true;\\n\\t\\t#pragma unroll_loop_start\\n\\t\\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\\n\\t\\t\\tplane = clippingPlanes[ i ];\\n\\t\\t\\tclipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped;\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t\\tif ( clipped ) discard;\\n\\t#endif\\n#endif\";\n\nvar clipping_planes_pars_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvarying vec3 vClipPosition;\\n\\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\\n#endif\";\n\nvar clipping_planes_pars_vertex = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvarying vec3 vClipPosition;\\n#endif\";\n\nvar clipping_planes_vertex = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvClipPosition = - mvPosition.xyz;\\n#endif\";\n\nvar color_fragment = \"#if defined( USE_COLOR_ALPHA )\\n\\tdiffuseColor *= vColor;\\n#elif defined( USE_COLOR )\\n\\tdiffuseColor.rgb *= vColor;\\n#endif\";\n\nvar color_pars_fragment = \"#if defined( USE_COLOR_ALPHA )\\n\\tvarying vec4 vColor;\\n#elif defined( USE_COLOR )\\n\\tvarying vec3 vColor;\\n#endif\";\n\nvar color_pars_vertex = \"#if defined( USE_COLOR_ALPHA )\\n\\tvarying vec4 vColor;\\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\\n\\tvarying vec3 vColor;\\n#endif\";\n\nvar color_vertex = \"#if defined( USE_COLOR_ALPHA )\\n\\tvColor = vec4( 1.0 );\\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\\n\\tvColor = vec3( 1.0 );\\n#endif\\n#ifdef USE_COLOR\\n\\tvColor *= color;\\n#endif\\n#ifdef USE_INSTANCING_COLOR\\n\\tvColor.xyz *= instanceColor.xyz;\\n#endif\";\n\nvar common = \"#define PI 3.141592653589793\\n#define PI2 6.283185307179586\\n#define PI_HALF 1.5707963267948966\\n#define RECIPROCAL_PI 0.3183098861837907\\n#define RECIPROCAL_PI2 0.15915494309189535\\n#define EPSILON 1e-6\\n#ifndef saturate\\n#define saturate( a ) clamp( a, 0.0, 1.0 )\\n#endif\\n#define whiteComplement( a ) ( 1.0 - saturate( a ) )\\nfloat pow2( const in float x ) { return x*x; }\\nvec3 pow2( const in vec3 x ) { return x*x; }\\nfloat pow3( const in float x ) { return x*x*x; }\\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\\nfloat max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); }\\nfloat average( const in vec3 v ) { return dot( v, vec3( 0.3333333 ) ); }\\nhighp float rand( const in vec2 uv ) {\\n\\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\\n\\thighp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\\n\\treturn fract( sin( sn ) * c );\\n}\\n#ifdef HIGH_PRECISION\\n\\tfloat precisionSafeLength( vec3 v ) { return length( v ); }\\n#else\\n\\tfloat precisionSafeLength( vec3 v ) {\\n\\t\\tfloat maxComponent = max3( abs( v ) );\\n\\t\\treturn length( v / maxComponent ) * maxComponent;\\n\\t}\\n#endif\\nstruct IncidentLight {\\n\\tvec3 color;\\n\\tvec3 direction;\\n\\tbool visible;\\n};\\nstruct ReflectedLight {\\n\\tvec3 directDiffuse;\\n\\tvec3 directSpecular;\\n\\tvec3 indirectDiffuse;\\n\\tvec3 indirectSpecular;\\n};\\nstruct GeometricContext {\\n\\tvec3 position;\\n\\tvec3 normal;\\n\\tvec3 viewDir;\\n#ifdef USE_CLEARCOAT\\n\\tvec3 clearcoatNormal;\\n#endif\\n};\\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\\n\\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\\n}\\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\\n\\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\\n}\\nmat3 transposeMat3( const in mat3 m ) {\\n\\tmat3 tmp;\\n\\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\\n\\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\\n\\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\\n\\treturn tmp;\\n}\\nfloat luminance( const in vec3 rgb ) {\\n\\tconst vec3 weights = vec3( 0.2126729, 0.7151522, 0.0721750 );\\n\\treturn dot( weights, rgb );\\n}\\nbool isPerspectiveMatrix( mat4 m ) {\\n\\treturn m[ 2 ][ 3 ] == - 1.0;\\n}\\nvec2 equirectUv( in vec3 dir ) {\\n\\tfloat u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5;\\n\\tfloat v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\\n\\treturn vec2( u, v );\\n}\";\n\nvar cube_uv_reflection_fragment = \"#ifdef ENVMAP_TYPE_CUBE_UV\\n\\t#define cubeUV_minMipLevel 4.0\\n\\t#define cubeUV_minTileSize 16.0\\n\\tfloat getFace( vec3 direction ) {\\n\\t\\tvec3 absDirection = abs( direction );\\n\\t\\tfloat face = - 1.0;\\n\\t\\tif ( absDirection.x > absDirection.z ) {\\n\\t\\t\\tif ( absDirection.x > absDirection.y )\\n\\t\\t\\t\\tface = direction.x > 0.0 ? 0.0 : 3.0;\\n\\t\\t\\telse\\n\\t\\t\\t\\tface = direction.y > 0.0 ? 1.0 : 4.0;\\n\\t\\t} else {\\n\\t\\t\\tif ( absDirection.z > absDirection.y )\\n\\t\\t\\t\\tface = direction.z > 0.0 ? 2.0 : 5.0;\\n\\t\\t\\telse\\n\\t\\t\\t\\tface = direction.y > 0.0 ? 1.0 : 4.0;\\n\\t\\t}\\n\\t\\treturn face;\\n\\t}\\n\\tvec2 getUV( vec3 direction, float face ) {\\n\\t\\tvec2 uv;\\n\\t\\tif ( face == 0.0 ) {\\n\\t\\t\\tuv = vec2( direction.z, direction.y ) / abs( direction.x );\\n\\t\\t} else if ( face == 1.0 ) {\\n\\t\\t\\tuv = vec2( - direction.x, - direction.z ) / abs( direction.y );\\n\\t\\t} else if ( face == 2.0 ) {\\n\\t\\t\\tuv = vec2( - direction.x, direction.y ) / abs( direction.z );\\n\\t\\t} else if ( face == 3.0 ) {\\n\\t\\t\\tuv = vec2( - direction.z, direction.y ) / abs( direction.x );\\n\\t\\t} else if ( face == 4.0 ) {\\n\\t\\t\\tuv = vec2( - direction.x, direction.z ) / abs( direction.y );\\n\\t\\t} else {\\n\\t\\t\\tuv = vec2( direction.x, direction.y ) / abs( direction.z );\\n\\t\\t}\\n\\t\\treturn 0.5 * ( uv + 1.0 );\\n\\t}\\n\\tvec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) {\\n\\t\\tfloat face = getFace( direction );\\n\\t\\tfloat filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 );\\n\\t\\tmipInt = max( mipInt, cubeUV_minMipLevel );\\n\\t\\tfloat faceSize = exp2( mipInt );\\n\\t\\tvec2 uv = getUV( direction, face ) * ( faceSize - 2.0 ) + 1.0;\\n\\t\\tif ( face > 2.0 ) {\\n\\t\\t\\tuv.y += faceSize;\\n\\t\\t\\tface -= 3.0;\\n\\t\\t}\\n\\t\\tuv.x += face * faceSize;\\n\\t\\tuv.x += filterInt * 3.0 * cubeUV_minTileSize;\\n\\t\\tuv.y += 4.0 * ( exp2( CUBEUV_MAX_MIP ) - faceSize );\\n\\t\\tuv.x *= CUBEUV_TEXEL_WIDTH;\\n\\t\\tuv.y *= CUBEUV_TEXEL_HEIGHT;\\n\\t\\t#ifdef texture2DGradEXT\\n\\t\\t\\treturn texture2DGradEXT( envMap, uv, vec2( 0.0 ), vec2( 0.0 ) ).rgb;\\n\\t\\t#else\\n\\t\\t\\treturn texture2D( envMap, uv ).rgb;\\n\\t\\t#endif\\n\\t}\\n\\t#define r0 1.0\\n\\t#define v0 0.339\\n\\t#define m0 - 2.0\\n\\t#define r1 0.8\\n\\t#define v1 0.276\\n\\t#define m1 - 1.0\\n\\t#define r4 0.4\\n\\t#define v4 0.046\\n\\t#define m4 2.0\\n\\t#define r5 0.305\\n\\t#define v5 0.016\\n\\t#define m5 3.0\\n\\t#define r6 0.21\\n\\t#define v6 0.0038\\n\\t#define m6 4.0\\n\\tfloat roughnessToMip( float roughness ) {\\n\\t\\tfloat mip = 0.0;\\n\\t\\tif ( roughness >= r1 ) {\\n\\t\\t\\tmip = ( r0 - roughness ) * ( m1 - m0 ) / ( r0 - r1 ) + m0;\\n\\t\\t} else if ( roughness >= r4 ) {\\n\\t\\t\\tmip = ( r1 - roughness ) * ( m4 - m1 ) / ( r1 - r4 ) + m1;\\n\\t\\t} else if ( roughness >= r5 ) {\\n\\t\\t\\tmip = ( r4 - roughness ) * ( m5 - m4 ) / ( r4 - r5 ) + m4;\\n\\t\\t} else if ( roughness >= r6 ) {\\n\\t\\t\\tmip = ( r5 - roughness ) * ( m6 - m5 ) / ( r5 - r6 ) + m5;\\n\\t\\t} else {\\n\\t\\t\\tmip = - 2.0 * log2( 1.16 * roughness );\\t\\t}\\n\\t\\treturn mip;\\n\\t}\\n\\tvec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) {\\n\\t\\tfloat mip = clamp( roughnessToMip( roughness ), m0, CUBEUV_MAX_MIP );\\n\\t\\tfloat mipF = fract( mip );\\n\\t\\tfloat mipInt = floor( mip );\\n\\t\\tvec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt );\\n\\t\\tif ( mipF == 0.0 ) {\\n\\t\\t\\treturn vec4( color0, 1.0 );\\n\\t\\t} else {\\n\\t\\t\\tvec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 );\\n\\t\\t\\treturn vec4( mix( color0, color1, mipF ), 1.0 );\\n\\t\\t}\\n\\t}\\n#endif\";\n\nvar defaultnormal_vertex = \"vec3 transformedNormal = objectNormal;\\n#ifdef USE_INSTANCING\\n\\tmat3 m = mat3( instanceMatrix );\\n\\ttransformedNormal /= vec3( dot( m[ 0 ], m[ 0 ] ), dot( m[ 1 ], m[ 1 ] ), dot( m[ 2 ], m[ 2 ] ) );\\n\\ttransformedNormal = m * transformedNormal;\\n#endif\\ntransformedNormal = normalMatrix * transformedNormal;\\n#ifdef FLIP_SIDED\\n\\ttransformedNormal = - transformedNormal;\\n#endif\\n#ifdef USE_TANGENT\\n\\tvec3 transformedTangent = ( modelViewMatrix * vec4( objectTangent, 0.0 ) ).xyz;\\n\\t#ifdef FLIP_SIDED\\n\\t\\ttransformedTangent = - transformedTangent;\\n\\t#endif\\n#endif\";\n\nvar displacementmap_pars_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\\tuniform sampler2D displacementMap;\\n\\tuniform float displacementScale;\\n\\tuniform float displacementBias;\\n#endif\";\n\nvar displacementmap_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, vUv ).x * displacementScale + displacementBias );\\n#endif\";\n\nvar emissivemap_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tvec4 emissiveColor = texture2D( emissiveMap, vUv );\\n\\ttotalEmissiveRadiance *= emissiveColor.rgb;\\n#endif\";\n\nvar emissivemap_pars_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tuniform sampler2D emissiveMap;\\n#endif\";\n\nvar encodings_fragment = \"gl_FragColor = linearToOutputTexel( gl_FragColor );\";\n\nvar encodings_pars_fragment = \"vec4 LinearToLinear( in vec4 value ) {\\n\\treturn value;\\n}\\nvec4 LinearTosRGB( in vec4 value ) {\\n\\treturn vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );\\n}\";\n\nvar envmap_fragment = \"#ifdef USE_ENVMAP\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\tvec3 cameraToFrag;\\n\\t\\tif ( isOrthographic ) {\\n\\t\\t\\tcameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\\n\\t\\t} else {\\n\\t\\t\\tcameraToFrag = normalize( vWorldPosition - cameraPosition );\\n\\t\\t}\\n\\t\\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t\\tvec3 reflectVec = reflect( cameraToFrag, worldNormal );\\n\\t\\t#else\\n\\t\\t\\tvec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio );\\n\\t\\t#endif\\n\\t#else\\n\\t\\tvec3 reflectVec = vReflect;\\n\\t#endif\\n\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\tvec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\\n\\t#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\tvec4 envColor = textureCubeUV( envMap, reflectVec, 0.0 );\\n\\t#else\\n\\t\\tvec4 envColor = vec4( 0.0 );\\n\\t#endif\\n\\t#ifdef ENVMAP_BLENDING_MULTIPLY\\n\\t\\toutgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\\n\\t#elif defined( ENVMAP_BLENDING_MIX )\\n\\t\\toutgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\\n\\t#elif defined( ENVMAP_BLENDING_ADD )\\n\\t\\toutgoingLight += envColor.xyz * specularStrength * reflectivity;\\n\\t#endif\\n#endif\";\n\nvar envmap_common_pars_fragment = \"#ifdef USE_ENVMAP\\n\\tuniform float envMapIntensity;\\n\\tuniform float flipEnvMap;\\n\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\tuniform samplerCube envMap;\\n\\t#else\\n\\t\\tuniform sampler2D envMap;\\n\\t#endif\\n\\t\\n#endif\";\n\nvar envmap_pars_fragment = \"#ifdef USE_ENVMAP\\n\\tuniform float reflectivity;\\n\\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\\n\\t\\t#define ENV_WORLDPOS\\n\\t#endif\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\tvarying vec3 vWorldPosition;\\n\\t\\tuniform float refractionRatio;\\n\\t#else\\n\\t\\tvarying vec3 vReflect;\\n\\t#endif\\n#endif\";\n\nvar envmap_pars_vertex = \"#ifdef USE_ENVMAP\\n\\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) ||defined( PHONG )\\n\\t\\t#define ENV_WORLDPOS\\n\\t#endif\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\t\\n\\t\\tvarying vec3 vWorldPosition;\\n\\t#else\\n\\t\\tvarying vec3 vReflect;\\n\\t\\tuniform float refractionRatio;\\n\\t#endif\\n#endif\";\n\nvar envmap_vertex = \"#ifdef USE_ENVMAP\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\tvWorldPosition = worldPosition.xyz;\\n\\t#else\\n\\t\\tvec3 cameraToVertex;\\n\\t\\tif ( isOrthographic ) {\\n\\t\\t\\tcameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\\n\\t\\t} else {\\n\\t\\t\\tcameraToVertex = normalize( worldPosition.xyz - cameraPosition );\\n\\t\\t}\\n\\t\\tvec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\\n\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t\\tvReflect = reflect( cameraToVertex, worldNormal );\\n\\t\\t#else\\n\\t\\t\\tvReflect = refract( cameraToVertex, worldNormal, refractionRatio );\\n\\t\\t#endif\\n\\t#endif\\n#endif\";\n\nvar fog_vertex = \"#ifdef USE_FOG\\n\\tvFogDepth = - mvPosition.z;\\n#endif\";\n\nvar fog_pars_vertex = \"#ifdef USE_FOG\\n\\tvarying float vFogDepth;\\n#endif\";\n\nvar fog_fragment = \"#ifdef USE_FOG\\n\\t#ifdef FOG_EXP2\\n\\t\\tfloat fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth );\\n\\t#else\\n\\t\\tfloat fogFactor = smoothstep( fogNear, fogFar, vFogDepth );\\n\\t#endif\\n\\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\\n#endif\";\n\nvar fog_pars_fragment = \"#ifdef USE_FOG\\n\\tuniform vec3 fogColor;\\n\\tvarying float vFogDepth;\\n\\t#ifdef FOG_EXP2\\n\\t\\tuniform float fogDensity;\\n\\t#else\\n\\t\\tuniform float fogNear;\\n\\t\\tuniform float fogFar;\\n\\t#endif\\n#endif\";\n\nvar gradientmap_pars_fragment = \"#ifdef USE_GRADIENTMAP\\n\\tuniform sampler2D gradientMap;\\n#endif\\nvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\\n\\tfloat dotNL = dot( normal, lightDirection );\\n\\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\\n\\t#ifdef USE_GRADIENTMAP\\n\\t\\treturn vec3( texture2D( gradientMap, coord ).r );\\n\\t#else\\n\\t\\treturn ( coord.x < 0.7 ) ? vec3( 0.7 ) : vec3( 1.0 );\\n\\t#endif\\n}\";\n\nvar lightmap_fragment = \"#ifdef USE_LIGHTMAP\\n\\tvec4 lightMapTexel = texture2D( lightMap, vUv2 );\\n\\tvec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;\\n\\treflectedLight.indirectDiffuse += lightMapIrradiance;\\n#endif\";\n\nvar lightmap_pars_fragment = \"#ifdef USE_LIGHTMAP\\n\\tuniform sampler2D lightMap;\\n\\tuniform float lightMapIntensity;\\n#endif\";\n\nvar lights_lambert_vertex = \"vec3 diffuse = vec3( 1.0 );\\nGeometricContext geometry;\\ngeometry.position = mvPosition.xyz;\\ngeometry.normal = normalize( transformedNormal );\\ngeometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( -mvPosition.xyz );\\nGeometricContext backGeometry;\\nbackGeometry.position = geometry.position;\\nbackGeometry.normal = -geometry.normal;\\nbackGeometry.viewDir = geometry.viewDir;\\nvLightFront = vec3( 0.0 );\\nvIndirectFront = vec3( 0.0 );\\n#ifdef DOUBLE_SIDED\\n\\tvLightBack = vec3( 0.0 );\\n\\tvIndirectBack = vec3( 0.0 );\\n#endif\\nIncidentLight directLight;\\nfloat dotNL;\\nvec3 directLightColor_Diffuse;\\nvIndirectFront += getAmbientLightIrradiance( ambientLightColor );\\nvIndirectFront += getLightProbeIrradiance( lightProbe, geometry.normal );\\n#ifdef DOUBLE_SIDED\\n\\tvIndirectBack += getAmbientLightIrradiance( ambientLightColor );\\n\\tvIndirectBack += getLightProbeIrradiance( lightProbe, backGeometry.normal );\\n#endif\\n#if NUM_POINT_LIGHTS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\\t\\tgetPointLightInfo( pointLights[ i ], geometry, directLight );\\n\\t\\tdotNL = dot( geometry.normal, directLight.direction );\\n\\t\\tdirectLightColor_Diffuse = directLight.color;\\n\\t\\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvLightBack += saturate( - dotNL ) * directLightColor_Diffuse;\\n\\t\\t#endif\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if NUM_SPOT_LIGHTS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\\t\\tgetSpotLightInfo( spotLights[ i ], geometry, directLight );\\n\\t\\tdotNL = dot( geometry.normal, directLight.direction );\\n\\t\\tdirectLightColor_Diffuse = directLight.color;\\n\\t\\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvLightBack += saturate( - dotNL ) * directLightColor_Diffuse;\\n\\t\\t#endif\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if NUM_DIR_LIGHTS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\n\\t\\tgetDirectionalLightInfo( directionalLights[ i ], geometry, directLight );\\n\\t\\tdotNL = dot( geometry.normal, directLight.direction );\\n\\t\\tdirectLightColor_Diffuse = directLight.color;\\n\\t\\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvLightBack += saturate( - dotNL ) * directLightColor_Diffuse;\\n\\t\\t#endif\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if NUM_HEMI_LIGHTS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\\n\\t\\tvIndirectFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry.normal );\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvIndirectBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry.normal );\\n\\t\\t#endif\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\";\n\nvar lights_pars_begin = \"uniform bool receiveShadow;\\nuniform vec3 ambientLightColor;\\nuniform vec3 lightProbe[ 9 ];\\nvec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {\\n\\tfloat x = normal.x, y = normal.y, z = normal.z;\\n\\tvec3 result = shCoefficients[ 0 ] * 0.886227;\\n\\tresult += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;\\n\\tresult += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;\\n\\tresult += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;\\n\\tresult += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;\\n\\tresult += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;\\n\\tresult += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );\\n\\tresult += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;\\n\\tresult += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );\\n\\treturn result;\\n}\\nvec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in vec3 normal ) {\\n\\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\\tvec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );\\n\\treturn irradiance;\\n}\\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\\n\\tvec3 irradiance = ambientLightColor;\\n\\treturn irradiance;\\n}\\nfloat getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\\n\\t#if defined ( PHYSICALLY_CORRECT_LIGHTS )\\n\\t\\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\\n\\t\\tif ( cutoffDistance > 0.0 ) {\\n\\t\\t\\tdistanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\\n\\t\\t}\\n\\t\\treturn distanceFalloff;\\n\\t#else\\n\\t\\tif ( cutoffDistance > 0.0 && decayExponent > 0.0 ) {\\n\\t\\t\\treturn pow( saturate( - lightDistance / cutoffDistance + 1.0 ), decayExponent );\\n\\t\\t}\\n\\t\\treturn 1.0;\\n\\t#endif\\n}\\nfloat getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) {\\n\\treturn smoothstep( coneCosine, penumbraCosine, angleCosine );\\n}\\n#if NUM_DIR_LIGHTS > 0\\n\\tstruct DirectionalLight {\\n\\t\\tvec3 direction;\\n\\t\\tvec3 color;\\n\\t};\\n\\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\\n\\tvoid getDirectionalLightInfo( const in DirectionalLight directionalLight, const in GeometricContext geometry, out IncidentLight light ) {\\n\\t\\tlight.color = directionalLight.color;\\n\\t\\tlight.direction = directionalLight.direction;\\n\\t\\tlight.visible = true;\\n\\t}\\n#endif\\n#if NUM_POINT_LIGHTS > 0\\n\\tstruct PointLight {\\n\\t\\tvec3 position;\\n\\t\\tvec3 color;\\n\\t\\tfloat distance;\\n\\t\\tfloat decay;\\n\\t};\\n\\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\\n\\tvoid getPointLightInfo( const in PointLight pointLight, const in GeometricContext geometry, out IncidentLight light ) {\\n\\t\\tvec3 lVector = pointLight.position - geometry.position;\\n\\t\\tlight.direction = normalize( lVector );\\n\\t\\tfloat lightDistance = length( lVector );\\n\\t\\tlight.color = pointLight.color;\\n\\t\\tlight.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay );\\n\\t\\tlight.visible = ( light.color != vec3( 0.0 ) );\\n\\t}\\n#endif\\n#if NUM_SPOT_LIGHTS > 0\\n\\tstruct SpotLight {\\n\\t\\tvec3 position;\\n\\t\\tvec3 direction;\\n\\t\\tvec3 color;\\n\\t\\tfloat distance;\\n\\t\\tfloat decay;\\n\\t\\tfloat coneCos;\\n\\t\\tfloat penumbraCos;\\n\\t};\\n\\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\\n\\tvoid getSpotLightInfo( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight light ) {\\n\\t\\tvec3 lVector = spotLight.position - geometry.position;\\n\\t\\tlight.direction = normalize( lVector );\\n\\t\\tfloat angleCos = dot( light.direction, spotLight.direction );\\n\\t\\tfloat spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos );\\n\\t\\tif ( spotAttenuation > 0.0 ) {\\n\\t\\t\\tfloat lightDistance = length( lVector );\\n\\t\\t\\tlight.color = spotLight.color * spotAttenuation;\\n\\t\\t\\tlight.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay );\\n\\t\\t\\tlight.visible = ( light.color != vec3( 0.0 ) );\\n\\t\\t} else {\\n\\t\\t\\tlight.color = vec3( 0.0 );\\n\\t\\t\\tlight.visible = false;\\n\\t\\t}\\n\\t}\\n#endif\\n#if NUM_RECT_AREA_LIGHTS > 0\\n\\tstruct RectAreaLight {\\n\\t\\tvec3 color;\\n\\t\\tvec3 position;\\n\\t\\tvec3 halfWidth;\\n\\t\\tvec3 halfHeight;\\n\\t};\\n\\tuniform sampler2D ltc_1;\\tuniform sampler2D ltc_2;\\n\\tuniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\\n#endif\\n#if NUM_HEMI_LIGHTS > 0\\n\\tstruct HemisphereLight {\\n\\t\\tvec3 direction;\\n\\t\\tvec3 skyColor;\\n\\t\\tvec3 groundColor;\\n\\t};\\n\\tuniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\\n\\tvec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in vec3 normal ) {\\n\\t\\tfloat dotNL = dot( normal, hemiLight.direction );\\n\\t\\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\\n\\t\\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\\n\\t\\treturn irradiance;\\n\\t}\\n#endif\";\n\nvar envmap_physical_pars_fragment = \"#if defined( USE_ENVMAP )\\n\\tvec3 getIBLIrradiance( const in vec3 normal ) {\\n\\t\\t#if defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\t\\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\\t\\t\\tvec4 envMapColor = textureCubeUV( envMap, worldNormal, 1.0 );\\n\\t\\t\\treturn PI * envMapColor.rgb * envMapIntensity;\\n\\t\\t#else\\n\\t\\t\\treturn vec3( 0.0 );\\n\\t\\t#endif\\n\\t}\\n\\tvec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) {\\n\\t\\t#if defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\t\\tvec3 reflectVec = reflect( - viewDir, normal );\\n\\t\\t\\treflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );\\n\\t\\t\\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\\n\\t\\t\\tvec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness );\\n\\t\\t\\treturn envMapColor.rgb * envMapIntensity;\\n\\t\\t#else\\n\\t\\t\\treturn vec3( 0.0 );\\n\\t\\t#endif\\n\\t}\\n#endif\";\n\nvar lights_toon_fragment = \"ToonMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\";\n\nvar lights_toon_pars_fragment = \"varying vec3 vViewPosition;\\nstruct ToonMaterial {\\n\\tvec3 diffuseColor;\\n};\\nvoid RE_Direct_Toon( const in IncidentLight directLight, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tvec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_Toon\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_Toon\\n#define Material_LightProbeLOD( material )\\t(0)\";\n\nvar lights_phong_fragment = \"BlinnPhongMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\\nmaterial.specularColor = specular;\\nmaterial.specularShininess = shininess;\\nmaterial.specularStrength = specularStrength;\";\n\nvar lights_phong_pars_fragment = \"varying vec3 vViewPosition;\\nstruct BlinnPhongMaterial {\\n\\tvec3 diffuseColor;\\n\\tvec3 specularColor;\\n\\tfloat specularShininess;\\n\\tfloat specularStrength;\\n};\\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\\n\\tvec3 irradiance = dotNL * directLight.color;\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n\\treflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularShininess ) * material.specularStrength;\\n}\\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_BlinnPhong\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_BlinnPhong\\n#define Material_LightProbeLOD( material )\\t(0)\";\n\nvar lights_physical_fragment = \"PhysicalMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\\nvec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );\\nfloat geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );\\nmaterial.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness;\\nmaterial.roughness = min( material.roughness, 1.0 );\\n#ifdef IOR\\n\\t#ifdef SPECULAR\\n\\t\\tfloat specularIntensityFactor = specularIntensity;\\n\\t\\tvec3 specularColorFactor = specularColor;\\n\\t\\t#ifdef USE_SPECULARINTENSITYMAP\\n\\t\\t\\tspecularIntensityFactor *= texture2D( specularIntensityMap, vUv ).a;\\n\\t\\t#endif\\n\\t\\t#ifdef USE_SPECULARCOLORMAP\\n\\t\\t\\tspecularColorFactor *= texture2D( specularColorMap, vUv ).rgb;\\n\\t\\t#endif\\n\\t\\tmaterial.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor );\\n\\t#else\\n\\t\\tfloat specularIntensityFactor = 1.0;\\n\\t\\tvec3 specularColorFactor = vec3( 1.0 );\\n\\t\\tmaterial.specularF90 = 1.0;\\n\\t#endif\\n\\tmaterial.specularColor = mix( min( pow2( ( ior - 1.0 ) / ( ior + 1.0 ) ) * specularColorFactor, vec3( 1.0 ) ) * specularIntensityFactor, diffuseColor.rgb, metalnessFactor );\\n#else\\n\\tmaterial.specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor );\\n\\tmaterial.specularF90 = 1.0;\\n#endif\\n#ifdef USE_CLEARCOAT\\n\\tmaterial.clearcoat = clearcoat;\\n\\tmaterial.clearcoatRoughness = clearcoatRoughness;\\n\\tmaterial.clearcoatF0 = vec3( 0.04 );\\n\\tmaterial.clearcoatF90 = 1.0;\\n\\t#ifdef USE_CLEARCOATMAP\\n\\t\\tmaterial.clearcoat *= texture2D( clearcoatMap, vUv ).x;\\n\\t#endif\\n\\t#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\t\\tmaterial.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vUv ).y;\\n\\t#endif\\n\\tmaterial.clearcoat = saturate( material.clearcoat );\\tmaterial.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 );\\n\\tmaterial.clearcoatRoughness += geometryRoughness;\\n\\tmaterial.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 );\\n#endif\\n#ifdef USE_IRIDESCENCE\\n\\tmaterial.iridescence = iridescence;\\n\\tmaterial.iridescenceIOR = iridescenceIOR;\\n\\t#ifdef USE_IRIDESCENCEMAP\\n\\t\\tmaterial.iridescence *= texture2D( iridescenceMap, vUv ).r;\\n\\t#endif\\n\\t#ifdef USE_IRIDESCENCE_THICKNESSMAP\\n\\t\\tmaterial.iridescenceThickness = (iridescenceThicknessMaximum - iridescenceThicknessMinimum) * texture2D( iridescenceThicknessMap, vUv ).g + iridescenceThicknessMinimum;\\n\\t#else\\n\\t\\tmaterial.iridescenceThickness = iridescenceThicknessMaximum;\\n\\t#endif\\n#endif\\n#ifdef USE_SHEEN\\n\\tmaterial.sheenColor = sheenColor;\\n\\t#ifdef USE_SHEENCOLORMAP\\n\\t\\tmaterial.sheenColor *= texture2D( sheenColorMap, vUv ).rgb;\\n\\t#endif\\n\\tmaterial.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 );\\n\\t#ifdef USE_SHEENROUGHNESSMAP\\n\\t\\tmaterial.sheenRoughness *= texture2D( sheenRoughnessMap, vUv ).a;\\n\\t#endif\\n#endif\";\n\nvar lights_physical_pars_fragment = \"struct PhysicalMaterial {\\n\\tvec3 diffuseColor;\\n\\tfloat roughness;\\n\\tvec3 specularColor;\\n\\tfloat specularF90;\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tfloat clearcoat;\\n\\t\\tfloat clearcoatRoughness;\\n\\t\\tvec3 clearcoatF0;\\n\\t\\tfloat clearcoatF90;\\n\\t#endif\\n\\t#ifdef USE_IRIDESCENCE\\n\\t\\tfloat iridescence;\\n\\t\\tfloat iridescenceIOR;\\n\\t\\tfloat iridescenceThickness;\\n\\t\\tvec3 iridescenceFresnel;\\n\\t\\tvec3 iridescenceF0;\\n\\t#endif\\n\\t#ifdef USE_SHEEN\\n\\t\\tvec3 sheenColor;\\n\\t\\tfloat sheenRoughness;\\n\\t#endif\\n};\\nvec3 clearcoatSpecular = vec3( 0.0 );\\nvec3 sheenSpecular = vec3( 0.0 );\\nfloat IBLSheenBRDF( const in vec3 normal, const in vec3 viewDir, const in float roughness) {\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tfloat r2 = roughness * roughness;\\n\\tfloat a = roughness < 0.25 ? -339.2 * r2 + 161.4 * roughness - 25.9 : -8.48 * r2 + 14.3 * roughness - 9.95;\\n\\tfloat b = roughness < 0.25 ? 44.0 * r2 - 23.7 * roughness + 3.26 : 1.97 * r2 - 3.27 * roughness + 0.72;\\n\\tfloat DG = exp( a * dotNV + b ) + ( roughness < 0.25 ? 0.0 : 0.1 * ( roughness - 0.25 ) );\\n\\treturn saturate( DG * RECIPROCAL_PI );\\n}\\nvec2 DFGApprox( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tconst vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\\n\\tconst vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\\n\\tvec4 r = roughness * c0 + c1;\\n\\tfloat a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\\n\\tvec2 fab = vec2( - 1.04, 1.04 ) * a004 + r.zw;\\n\\treturn fab;\\n}\\nvec3 EnvironmentBRDF( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness ) {\\n\\tvec2 fab = DFGApprox( normal, viewDir, roughness );\\n\\treturn specularColor * fab.x + specularF90 * fab.y;\\n}\\n#ifdef USE_IRIDESCENCE\\nvoid computeMultiscatteringIridescence( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float iridescence, const in vec3 iridescenceF0, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\\n#else\\nvoid computeMultiscattering( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\\n#endif\\n\\tvec2 fab = DFGApprox( normal, viewDir, roughness );\\n\\t#ifdef USE_IRIDESCENCE\\n\\t\\tvec3 Fr = mix( specularColor, iridescenceF0, iridescence );\\n\\t#else\\n\\t\\tvec3 Fr = specularColor;\\n\\t#endif\\n\\tvec3 FssEss = Fr * fab.x + specularF90 * fab.y;\\n\\tfloat Ess = fab.x + fab.y;\\n\\tfloat Ems = 1.0 - Ess;\\n\\tvec3 Favg = Fr + ( 1.0 - Fr ) * 0.047619;\\tvec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );\\n\\tsingleScatter += FssEss;\\n\\tmultiScatter += Fms * Ems;\\n}\\n#if NUM_RECT_AREA_LIGHTS > 0\\n\\tvoid RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\t\\tvec3 normal = geometry.normal;\\n\\t\\tvec3 viewDir = geometry.viewDir;\\n\\t\\tvec3 position = geometry.position;\\n\\t\\tvec3 lightPos = rectAreaLight.position;\\n\\t\\tvec3 halfWidth = rectAreaLight.halfWidth;\\n\\t\\tvec3 halfHeight = rectAreaLight.halfHeight;\\n\\t\\tvec3 lightColor = rectAreaLight.color;\\n\\t\\tfloat roughness = material.roughness;\\n\\t\\tvec3 rectCoords[ 4 ];\\n\\t\\trectCoords[ 0 ] = lightPos + halfWidth - halfHeight;\\t\\trectCoords[ 1 ] = lightPos - halfWidth - halfHeight;\\n\\t\\trectCoords[ 2 ] = lightPos - halfWidth + halfHeight;\\n\\t\\trectCoords[ 3 ] = lightPos + halfWidth + halfHeight;\\n\\t\\tvec2 uv = LTC_Uv( normal, viewDir, roughness );\\n\\t\\tvec4 t1 = texture2D( ltc_1, uv );\\n\\t\\tvec4 t2 = texture2D( ltc_2, uv );\\n\\t\\tmat3 mInv = mat3(\\n\\t\\t\\tvec3( t1.x, 0, t1.y ),\\n\\t\\t\\tvec3(    0, 1,    0 ),\\n\\t\\t\\tvec3( t1.z, 0, t1.w )\\n\\t\\t);\\n\\t\\tvec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );\\n\\t\\treflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\\n\\t\\treflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\\n\\t}\\n#endif\\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\\n\\tvec3 irradiance = dotNL * directLight.color;\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tfloat dotNLcc = saturate( dot( geometry.clearcoatNormal, directLight.direction ) );\\n\\t\\tvec3 ccIrradiance = dotNLcc * directLight.color;\\n\\t\\tclearcoatSpecular += ccIrradiance * BRDF_GGX( directLight.direction, geometry.viewDir, geometry.clearcoatNormal, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\\n\\t#endif\\n\\t#ifdef USE_SHEEN\\n\\t\\tsheenSpecular += irradiance * BRDF_Sheen( directLight.direction, geometry.viewDir, geometry.normal, material.sheenColor, material.sheenRoughness );\\n\\t#endif\\n\\t#ifdef USE_IRIDESCENCE\\n\\t\\treflectedLight.directSpecular += irradiance * BRDF_GGX_Iridescence( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness );\\n\\t#else\\n\\t\\treflectedLight.directSpecular += irradiance * BRDF_GGX( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularF90, material.roughness );\\n\\t#endif\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tclearcoatSpecular += clearcoatRadiance * EnvironmentBRDF( geometry.clearcoatNormal, geometry.viewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\\n\\t#endif\\n\\t#ifdef USE_SHEEN\\n\\t\\tsheenSpecular += irradiance * material.sheenColor * IBLSheenBRDF( geometry.normal, geometry.viewDir, material.sheenRoughness );\\n\\t#endif\\n\\tvec3 singleScattering = vec3( 0.0 );\\n\\tvec3 multiScattering = vec3( 0.0 );\\n\\tvec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\\n\\t#ifdef USE_IRIDESCENCE\\n\\t\\tcomputeMultiscatteringIridescence( geometry.normal, geometry.viewDir, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness, singleScattering, multiScattering );\\n\\t#else\\n\\t\\tcomputeMultiscattering( geometry.normal, geometry.viewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering );\\n\\t#endif\\n\\tvec3 totalScattering = singleScattering + multiScattering;\\n\\tvec3 diffuse = material.diffuseColor * ( 1.0 - max( max( totalScattering.r, totalScattering.g ), totalScattering.b ) );\\n\\treflectedLight.indirectSpecular += radiance * singleScattering;\\n\\treflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance;\\n\\treflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_Physical\\n#define RE_Direct_RectArea\\t\\tRE_Direct_RectArea_Physical\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_Physical\\n#define RE_IndirectSpecular\\t\\tRE_IndirectSpecular_Physical\\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\\n\\treturn saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\\n}\";\n\nvar lights_fragment_begin = \"\\nGeometricContext geometry;\\ngeometry.position = - vViewPosition;\\ngeometry.normal = normal;\\ngeometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );\\n#ifdef USE_CLEARCOAT\\n\\tgeometry.clearcoatNormal = clearcoatNormal;\\n#endif\\n#ifdef USE_IRIDESCENCE\\n\\tfloat dotNVi = saturate( dot( normal, geometry.viewDir ) );\\n\\tif ( material.iridescenceThickness == 0.0 ) {\\n\\t\\tmaterial.iridescence = 0.0;\\n\\t} else {\\n\\t\\tmaterial.iridescence = saturate( material.iridescence );\\n\\t}\\n\\tif ( material.iridescence > 0.0 ) {\\n\\t\\tmaterial.iridescenceFresnel = evalIridescence( 1.0, material.iridescenceIOR, dotNVi, material.iridescenceThickness, material.specularColor );\\n\\t\\tmaterial.iridescenceF0 = Schlick_to_F0( material.iridescenceFresnel, 1.0, dotNVi );\\n\\t}\\n#endif\\nIncidentLight directLight;\\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tPointLight pointLight;\\n\\t#if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0\\n\\tPointLightShadow pointLightShadow;\\n\\t#endif\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\\t\\tpointLight = pointLights[ i ];\\n\\t\\tgetPointLightInfo( pointLight, geometry, directLight );\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )\\n\\t\\tpointLightShadow = pointLightShadows[ i ];\\n\\t\\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tSpotLight spotLight;\\n\\t#if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0\\n\\tSpotLightShadow spotLightShadow;\\n\\t#endif\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\\t\\tspotLight = spotLights[ i ];\\n\\t\\tgetSpotLightInfo( spotLight, geometry, directLight );\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\\n\\t\\tspotLightShadow = spotLightShadows[ i ];\\n\\t\\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tDirectionalLight directionalLight;\\n\\t#if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0\\n\\tDirectionalLightShadow directionalLightShadow;\\n\\t#endif\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\n\\t\\tdirectionalLight = directionalLights[ i ];\\n\\t\\tgetDirectionalLightInfo( directionalLight, geometry, directLight );\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )\\n\\t\\tdirectionalLightShadow = directionalLightShadows[ i ];\\n\\t\\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\\n\\tRectAreaLight rectAreaLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\\n\\t\\trectAreaLight = rectAreaLights[ i ];\\n\\t\\tRE_Direct_RectArea( rectAreaLight, geometry, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if defined( RE_IndirectDiffuse )\\n\\tvec3 iblIrradiance = vec3( 0.0 );\\n\\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\\n\\tirradiance += getLightProbeIrradiance( lightProbe, geometry.normal );\\n\\t#if ( NUM_HEMI_LIGHTS > 0 )\\n\\t\\t#pragma unroll_loop_start\\n\\t\\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\\n\\t\\t\\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry.normal );\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t#endif\\n#endif\\n#if defined( RE_IndirectSpecular )\\n\\tvec3 radiance = vec3( 0.0 );\\n\\tvec3 clearcoatRadiance = vec3( 0.0 );\\n#endif\";\n\nvar lights_fragment_maps = \"#if defined( RE_IndirectDiffuse )\\n\\t#ifdef USE_LIGHTMAP\\n\\t\\tvec4 lightMapTexel = texture2D( lightMap, vUv2 );\\n\\t\\tvec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;\\n\\t\\tirradiance += lightMapIrradiance;\\n\\t#endif\\n\\t#if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\tiblIrradiance += getIBLIrradiance( geometry.normal );\\n\\t#endif\\n#endif\\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\\n\\tradiance += getIBLRadiance( geometry.viewDir, geometry.normal, material.roughness );\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tclearcoatRadiance += getIBLRadiance( geometry.viewDir, geometry.clearcoatNormal, material.clearcoatRoughness );\\n\\t#endif\\n#endif\";\n\nvar lights_fragment_end = \"#if defined( RE_IndirectDiffuse )\\n\\tRE_IndirectDiffuse( irradiance, geometry, material, reflectedLight );\\n#endif\\n#if defined( RE_IndirectSpecular )\\n\\tRE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometry, material, reflectedLight );\\n#endif\";\n\nvar logdepthbuf_fragment = \"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\\n\\tgl_FragDepthEXT = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\\n#endif\";\n\nvar logdepthbuf_pars_fragment = \"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\\n\\tuniform float logDepthBufFC;\\n\\tvarying float vFragDepth;\\n\\tvarying float vIsPerspective;\\n#endif\";\n\nvar logdepthbuf_pars_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\\t#ifdef USE_LOGDEPTHBUF_EXT\\n\\t\\tvarying float vFragDepth;\\n\\t\\tvarying float vIsPerspective;\\n\\t#else\\n\\t\\tuniform float logDepthBufFC;\\n\\t#endif\\n#endif\";\n\nvar logdepthbuf_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\\t#ifdef USE_LOGDEPTHBUF_EXT\\n\\t\\tvFragDepth = 1.0 + gl_Position.w;\\n\\t\\tvIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );\\n\\t#else\\n\\t\\tif ( isPerspectiveMatrix( projectionMatrix ) ) {\\n\\t\\t\\tgl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;\\n\\t\\t\\tgl_Position.z *= gl_Position.w;\\n\\t\\t}\\n\\t#endif\\n#endif\";\n\nvar map_fragment = \"#ifdef USE_MAP\\n\\tvec4 sampledDiffuseColor = texture2D( map, vUv );\\n\\t#ifdef DECODE_VIDEO_TEXTURE\\n\\t\\tsampledDiffuseColor = vec4( mix( pow( sampledDiffuseColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), sampledDiffuseColor.rgb * 0.0773993808, vec3( lessThanEqual( sampledDiffuseColor.rgb, vec3( 0.04045 ) ) ) ), sampledDiffuseColor.w );\\n\\t#endif\\n\\tdiffuseColor *= sampledDiffuseColor;\\n#endif\";\n\nvar map_pars_fragment = \"#ifdef USE_MAP\\n\\tuniform sampler2D map;\\n#endif\";\n\nvar map_particle_fragment = \"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\\n\\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\\n#endif\\n#ifdef USE_MAP\\n\\tdiffuseColor *= texture2D( map, uv );\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tdiffuseColor.a *= texture2D( alphaMap, uv ).g;\\n#endif\";\n\nvar map_particle_pars_fragment = \"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\\n\\tuniform mat3 uvTransform;\\n#endif\\n#ifdef USE_MAP\\n\\tuniform sampler2D map;\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tuniform sampler2D alphaMap;\\n#endif\";\n\nvar metalnessmap_fragment = \"float metalnessFactor = metalness;\\n#ifdef USE_METALNESSMAP\\n\\tvec4 texelMetalness = texture2D( metalnessMap, vUv );\\n\\tmetalnessFactor *= texelMetalness.b;\\n#endif\";\n\nvar metalnessmap_pars_fragment = \"#ifdef USE_METALNESSMAP\\n\\tuniform sampler2D metalnessMap;\\n#endif\";\n\nvar morphcolor_vertex = \"#if defined( USE_MORPHCOLORS ) && defined( MORPHTARGETS_TEXTURE )\\n\\tvColor *= morphTargetBaseInfluence;\\n\\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\\n\\t\\t#if defined( USE_COLOR_ALPHA )\\n\\t\\t\\tif ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ) * morphTargetInfluences[ i ];\\n\\t\\t#elif defined( USE_COLOR )\\n\\t\\t\\tif ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ).rgb * morphTargetInfluences[ i ];\\n\\t\\t#endif\\n\\t}\\n#endif\";\n\nvar morphnormal_vertex = \"#ifdef USE_MORPHNORMALS\\n\\tobjectNormal *= morphTargetBaseInfluence;\\n\\t#ifdef MORPHTARGETS_TEXTURE\\n\\t\\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\\n\\t\\t\\tif ( morphTargetInfluences[ i ] != 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1 ).xyz * morphTargetInfluences[ i ];\\n\\t\\t}\\n\\t#else\\n\\t\\tobjectNormal += morphNormal0 * morphTargetInfluences[ 0 ];\\n\\t\\tobjectNormal += morphNormal1 * morphTargetInfluences[ 1 ];\\n\\t\\tobjectNormal += morphNormal2 * morphTargetInfluences[ 2 ];\\n\\t\\tobjectNormal += morphNormal3 * morphTargetInfluences[ 3 ];\\n\\t#endif\\n#endif\";\n\nvar morphtarget_pars_vertex = \"#ifdef USE_MORPHTARGETS\\n\\tuniform float morphTargetBaseInfluence;\\n\\t#ifdef MORPHTARGETS_TEXTURE\\n\\t\\tuniform float morphTargetInfluences[ MORPHTARGETS_COUNT ];\\n\\t\\tuniform sampler2DArray morphTargetsTexture;\\n\\t\\tuniform ivec2 morphTargetsTextureSize;\\n\\t\\tvec4 getMorph( const in int vertexIndex, const in int morphTargetIndex, const in int offset ) {\\n\\t\\t\\tint texelIndex = vertexIndex * MORPHTARGETS_TEXTURE_STRIDE + offset;\\n\\t\\t\\tint y = texelIndex / morphTargetsTextureSize.x;\\n\\t\\t\\tint x = texelIndex - y * morphTargetsTextureSize.x;\\n\\t\\t\\tivec3 morphUV = ivec3( x, y, morphTargetIndex );\\n\\t\\t\\treturn texelFetch( morphTargetsTexture, morphUV, 0 );\\n\\t\\t}\\n\\t#else\\n\\t\\t#ifndef USE_MORPHNORMALS\\n\\t\\t\\tuniform float morphTargetInfluences[ 8 ];\\n\\t\\t#else\\n\\t\\t\\tuniform float morphTargetInfluences[ 4 ];\\n\\t\\t#endif\\n\\t#endif\\n#endif\";\n\nvar morphtarget_vertex = \"#ifdef USE_MORPHTARGETS\\n\\ttransformed *= morphTargetBaseInfluence;\\n\\t#ifdef MORPHTARGETS_TEXTURE\\n\\t\\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\\n\\t\\t\\tif ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0 ).xyz * morphTargetInfluences[ i ];\\n\\t\\t}\\n\\t#else\\n\\t\\ttransformed += morphTarget0 * morphTargetInfluences[ 0 ];\\n\\t\\ttransformed += morphTarget1 * morphTargetInfluences[ 1 ];\\n\\t\\ttransformed += morphTarget2 * morphTargetInfluences[ 2 ];\\n\\t\\ttransformed += morphTarget3 * morphTargetInfluences[ 3 ];\\n\\t\\t#ifndef USE_MORPHNORMALS\\n\\t\\t\\ttransformed += morphTarget4 * morphTargetInfluences[ 4 ];\\n\\t\\t\\ttransformed += morphTarget5 * morphTargetInfluences[ 5 ];\\n\\t\\t\\ttransformed += morphTarget6 * morphTargetInfluences[ 6 ];\\n\\t\\t\\ttransformed += morphTarget7 * morphTargetInfluences[ 7 ];\\n\\t\\t#endif\\n\\t#endif\\n#endif\";\n\nvar normal_fragment_begin = \"float faceDirection = gl_FrontFacing ? 1.0 : - 1.0;\\n#ifdef FLAT_SHADED\\n\\tvec3 fdx = vec3( dFdx( vViewPosition.x ), dFdx( vViewPosition.y ), dFdx( vViewPosition.z ) );\\n\\tvec3 fdy = vec3( dFdy( vViewPosition.x ), dFdy( vViewPosition.y ), dFdy( vViewPosition.z ) );\\n\\tvec3 normal = normalize( cross( fdx, fdy ) );\\n#else\\n\\tvec3 normal = normalize( vNormal );\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\tnormal = normal * faceDirection;\\n\\t#endif\\n\\t#ifdef USE_TANGENT\\n\\t\\tvec3 tangent = normalize( vTangent );\\n\\t\\tvec3 bitangent = normalize( vBitangent );\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\ttangent = tangent * faceDirection;\\n\\t\\t\\tbitangent = bitangent * faceDirection;\\n\\t\\t#endif\\n\\t\\t#if defined( TANGENTSPACE_NORMALMAP ) || defined( USE_CLEARCOAT_NORMALMAP )\\n\\t\\t\\tmat3 vTBN = mat3( tangent, bitangent, normal );\\n\\t\\t#endif\\n\\t#endif\\n#endif\\nvec3 geometryNormal = normal;\";\n\nvar normal_fragment_maps = \"#ifdef OBJECTSPACE_NORMALMAP\\n\\tnormal = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\\n\\t#ifdef FLIP_SIDED\\n\\t\\tnormal = - normal;\\n\\t#endif\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\tnormal = normal * faceDirection;\\n\\t#endif\\n\\tnormal = normalize( normalMatrix * normal );\\n#elif defined( TANGENTSPACE_NORMALMAP )\\n\\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\\n\\tmapN.xy *= normalScale;\\n\\t#ifdef USE_TANGENT\\n\\t\\tnormal = normalize( vTBN * mapN );\\n\\t#else\\n\\t\\tnormal = perturbNormal2Arb( - vViewPosition, normal, mapN, faceDirection );\\n\\t#endif\\n#elif defined( USE_BUMPMAP )\\n\\tnormal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection );\\n#endif\";\n\nvar normal_pars_fragment = \"#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\";\n\nvar normal_pars_vertex = \"#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\";\n\nvar normal_vertex = \"#ifndef FLAT_SHADED\\n\\tvNormal = normalize( transformedNormal );\\n\\t#ifdef USE_TANGENT\\n\\t\\tvTangent = normalize( transformedTangent );\\n\\t\\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\\n\\t#endif\\n#endif\";\n\nvar normalmap_pars_fragment = \"#ifdef USE_NORMALMAP\\n\\tuniform sampler2D normalMap;\\n\\tuniform vec2 normalScale;\\n#endif\\n#ifdef OBJECTSPACE_NORMALMAP\\n\\tuniform mat3 normalMatrix;\\n#endif\\n#if ! defined ( USE_TANGENT ) && ( defined ( TANGENTSPACE_NORMALMAP ) || defined ( USE_CLEARCOAT_NORMALMAP ) )\\n\\tvec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm, vec3 mapN, float faceDirection ) {\\n\\t\\tvec3 q0 = dFdx( eye_pos.xyz );\\n\\t\\tvec3 q1 = dFdy( eye_pos.xyz );\\n\\t\\tvec2 st0 = dFdx( vUv.st );\\n\\t\\tvec2 st1 = dFdy( vUv.st );\\n\\t\\tvec3 N = surf_norm;\\n\\t\\tvec3 q1perp = cross( q1, N );\\n\\t\\tvec3 q0perp = cross( N, q0 );\\n\\t\\tvec3 T = q1perp * st0.x + q0perp * st1.x;\\n\\t\\tvec3 B = q1perp * st0.y + q0perp * st1.y;\\n\\t\\tfloat det = max( dot( T, T ), dot( B, B ) );\\n\\t\\tfloat scale = ( det == 0.0 ) ? 0.0 : faceDirection * inversesqrt( det );\\n\\t\\treturn normalize( T * ( mapN.x * scale ) + B * ( mapN.y * scale ) + N * mapN.z );\\n\\t}\\n#endif\";\n\nvar clearcoat_normal_fragment_begin = \"#ifdef USE_CLEARCOAT\\n\\tvec3 clearcoatNormal = geometryNormal;\\n#endif\";\n\nvar clearcoat_normal_fragment_maps = \"#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tvec3 clearcoatMapN = texture2D( clearcoatNormalMap, vUv ).xyz * 2.0 - 1.0;\\n\\tclearcoatMapN.xy *= clearcoatNormalScale;\\n\\t#ifdef USE_TANGENT\\n\\t\\tclearcoatNormal = normalize( vTBN * clearcoatMapN );\\n\\t#else\\n\\t\\tclearcoatNormal = perturbNormal2Arb( - vViewPosition, clearcoatNormal, clearcoatMapN, faceDirection );\\n\\t#endif\\n#endif\";\n\nvar clearcoat_pars_fragment = \"#ifdef USE_CLEARCOATMAP\\n\\tuniform sampler2D clearcoatMap;\\n#endif\\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\tuniform sampler2D clearcoatRoughnessMap;\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tuniform sampler2D clearcoatNormalMap;\\n\\tuniform vec2 clearcoatNormalScale;\\n#endif\";\n\nvar iridescence_pars_fragment = \"#ifdef USE_IRIDESCENCEMAP\\n\\tuniform sampler2D iridescenceMap;\\n#endif\\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\\n\\tuniform sampler2D iridescenceThicknessMap;\\n#endif\";\n\nvar output_fragment = \"#ifdef OPAQUE\\ndiffuseColor.a = 1.0;\\n#endif\\n#ifdef USE_TRANSMISSION\\ndiffuseColor.a *= transmissionAlpha + 0.1;\\n#endif\\ngl_FragColor = vec4( outgoingLight, diffuseColor.a );\";\n\nvar packing = \"vec3 packNormalToRGB( const in vec3 normal ) {\\n\\treturn normalize( normal ) * 0.5 + 0.5;\\n}\\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\\n\\treturn 2.0 * rgb.xyz - 1.0;\\n}\\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;\\nconst vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\\nconst vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );\\nconst float ShiftRight8 = 1. / 256.;\\nvec4 packDepthToRGBA( const in float v ) {\\n\\tvec4 r = vec4( fract( v * PackFactors ), v );\\n\\tr.yzw -= r.xyz * ShiftRight8;\\treturn r * PackUpscale;\\n}\\nfloat unpackRGBAToDepth( const in vec4 v ) {\\n\\treturn dot( v, UnpackFactors );\\n}\\nvec4 pack2HalfToRGBA( vec2 v ) {\\n\\tvec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ) );\\n\\treturn vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w );\\n}\\nvec2 unpackRGBATo2Half( vec4 v ) {\\n\\treturn vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) );\\n}\\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\\n\\treturn ( viewZ + near ) / ( near - far );\\n}\\nfloat orthographicDepthToViewZ( const in float linearClipZ, const in float near, const in float far ) {\\n\\treturn linearClipZ * ( near - far ) - near;\\n}\\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\\n\\treturn ( ( near + viewZ ) * far ) / ( ( far - near ) * viewZ );\\n}\\nfloat perspectiveDepthToViewZ( const in float invClipZ, const in float near, const in float far ) {\\n\\treturn ( near * far ) / ( ( far - near ) * invClipZ - far );\\n}\";\n\nvar premultiplied_alpha_fragment = \"#ifdef PREMULTIPLIED_ALPHA\\n\\tgl_FragColor.rgb *= gl_FragColor.a;\\n#endif\";\n\nvar project_vertex = \"vec4 mvPosition = vec4( transformed, 1.0 );\\n#ifdef USE_INSTANCING\\n\\tmvPosition = instanceMatrix * mvPosition;\\n#endif\\nmvPosition = modelViewMatrix * mvPosition;\\ngl_Position = projectionMatrix * mvPosition;\";\n\nvar dithering_fragment = \"#ifdef DITHERING\\n\\tgl_FragColor.rgb = dithering( gl_FragColor.rgb );\\n#endif\";\n\nvar dithering_pars_fragment = \"#ifdef DITHERING\\n\\tvec3 dithering( vec3 color ) {\\n\\t\\tfloat grid_position = rand( gl_FragCoord.xy );\\n\\t\\tvec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\\n\\t\\tdither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\\n\\t\\treturn color + dither_shift_RGB;\\n\\t}\\n#endif\";\n\nvar roughnessmap_fragment = \"float roughnessFactor = roughness;\\n#ifdef USE_ROUGHNESSMAP\\n\\tvec4 texelRoughness = texture2D( roughnessMap, vUv );\\n\\troughnessFactor *= texelRoughness.g;\\n#endif\";\n\nvar roughnessmap_pars_fragment = \"#ifdef USE_ROUGHNESSMAP\\n\\tuniform sampler2D roughnessMap;\\n#endif\";\n\nvar shadowmap_pars_fragment = \"#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\t\\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tstruct DirectionalLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\t\\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t\\tstruct SpotLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\t\\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tstruct PointLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t\\tfloat shadowCameraNear;\\n\\t\\t\\tfloat shadowCameraFar;\\n\\t\\t};\\n\\t\\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t#endif\\n\\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\\n\\t\\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\\n\\t}\\n\\tvec2 texture2DDistribution( sampler2D shadow, vec2 uv ) {\\n\\t\\treturn unpackRGBATo2Half( texture2D( shadow, uv ) );\\n\\t}\\n\\tfloat VSMShadow (sampler2D shadow, vec2 uv, float compare ){\\n\\t\\tfloat occlusion = 1.0;\\n\\t\\tvec2 distribution = texture2DDistribution( shadow, uv );\\n\\t\\tfloat hard_shadow = step( compare , distribution.x );\\n\\t\\tif (hard_shadow != 1.0 ) {\\n\\t\\t\\tfloat distance = compare - distribution.x ;\\n\\t\\t\\tfloat variance = max( 0.00000, distribution.y * distribution.y );\\n\\t\\t\\tfloat softness_probability = variance / (variance + distance * distance );\\t\\t\\tsoftness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 );\\t\\t\\tocclusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 );\\n\\t\\t}\\n\\t\\treturn occlusion;\\n\\t}\\n\\tfloat getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\\n\\t\\tfloat shadow = 1.0;\\n\\t\\tshadowCoord.xyz /= shadowCoord.w;\\n\\t\\tshadowCoord.z += shadowBias;\\n\\t\\tbvec4 inFrustumVec = bvec4 ( shadowCoord.x >= 0.0, shadowCoord.x <= 1.0, shadowCoord.y >= 0.0, shadowCoord.y <= 1.0 );\\n\\t\\tbool inFrustum = all( inFrustumVec );\\n\\t\\tbvec2 frustumTestVec = bvec2( inFrustum, shadowCoord.z <= 1.0 );\\n\\t\\tbool frustumTest = all( frustumTestVec );\\n\\t\\tif ( frustumTest ) {\\n\\t\\t#if defined( SHADOWMAP_TYPE_PCF )\\n\\t\\t\\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\\n\\t\\t\\tfloat dx0 = - texelSize.x * shadowRadius;\\n\\t\\t\\tfloat dy0 = - texelSize.y * shadowRadius;\\n\\t\\t\\tfloat dx1 = + texelSize.x * shadowRadius;\\n\\t\\t\\tfloat dy1 = + texelSize.y * shadowRadius;\\n\\t\\t\\tfloat dx2 = dx0 / 2.0;\\n\\t\\t\\tfloat dy2 = dy0 / 2.0;\\n\\t\\t\\tfloat dx3 = dx1 / 2.0;\\n\\t\\t\\tfloat dy3 = dy1 / 2.0;\\n\\t\\t\\tshadow = (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\\n\\t\\t\\t) * ( 1.0 / 17.0 );\\n\\t\\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\\n\\t\\t\\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\\n\\t\\t\\tfloat dx = texelSize.x;\\n\\t\\t\\tfloat dy = texelSize.y;\\n\\t\\t\\tvec2 uv = shadowCoord.xy;\\n\\t\\t\\tvec2 f = fract( uv * shadowMapSize + 0.5 );\\n\\t\\t\\tuv -= f * texelSize;\\n\\t\\t\\tshadow = (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv, shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.x ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.x ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.y ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.y ) +\\n\\t\\t\\t\\tmix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t\\t  texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t\\t  f.x ),\\n\\t\\t\\t\\t\\t mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t\\t  texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t\\t  f.x ),\\n\\t\\t\\t\\t\\t f.y )\\n\\t\\t\\t) * ( 1.0 / 9.0 );\\n\\t\\t#elif defined( SHADOWMAP_TYPE_VSM )\\n\\t\\t\\tshadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z );\\n\\t\\t#else\\n\\t\\t\\tshadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\\n\\t\\t#endif\\n\\t\\t}\\n\\t\\treturn shadow;\\n\\t}\\n\\tvec2 cubeToUV( vec3 v, float texelSizeY ) {\\n\\t\\tvec3 absV = abs( v );\\n\\t\\tfloat scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\\n\\t\\tabsV *= scaleToCube;\\n\\t\\tv *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\\n\\t\\tvec2 planar = v.xy;\\n\\t\\tfloat almostATexel = 1.5 * texelSizeY;\\n\\t\\tfloat almostOne = 1.0 - almostATexel;\\n\\t\\tif ( absV.z >= almostOne ) {\\n\\t\\t\\tif ( v.z > 0.0 )\\n\\t\\t\\t\\tplanar.x = 4.0 - v.x;\\n\\t\\t} else if ( absV.x >= almostOne ) {\\n\\t\\t\\tfloat signX = sign( v.x );\\n\\t\\t\\tplanar.x = v.z * signX + 2.0 * signX;\\n\\t\\t} else if ( absV.y >= almostOne ) {\\n\\t\\t\\tfloat signY = sign( v.y );\\n\\t\\t\\tplanar.x = v.x + 2.0 * signY + 2.0;\\n\\t\\t\\tplanar.y = v.z * signY - 2.0;\\n\\t\\t}\\n\\t\\treturn vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\\n\\t}\\n\\tfloat getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\\n\\t\\tvec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\\n\\t\\tvec3 lightToPosition = shadowCoord.xyz;\\n\\t\\tfloat dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear );\\t\\tdp += shadowBias;\\n\\t\\tvec3 bd3D = normalize( lightToPosition );\\n\\t\\t#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM )\\n\\t\\t\\tvec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\\n\\t\\t\\treturn (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\\n\\t\\t\\t) * ( 1.0 / 9.0 );\\n\\t\\t#else\\n\\t\\t\\treturn texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\\n\\t\\t#endif\\n\\t}\\n#endif\";\n\nvar shadowmap_pars_vertex = \"#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\t\\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tstruct DirectionalLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\t\\tuniform mat4 spotShadowMatrix[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t\\tstruct SpotLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\t\\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tstruct PointLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t\\tfloat shadowCameraNear;\\n\\t\\t\\tfloat shadowCameraFar;\\n\\t\\t};\\n\\t\\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t#endif\\n#endif\";\n\nvar shadowmap_vertex = \"#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0 || NUM_SPOT_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0\\n\\t\\tvec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\\n\\t\\tvec4 shadowWorldPosition;\\n\\t#endif\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 );\\n\\t\\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias, 0 );\\n\\t\\tvSpotShadowCoord[ i ] = spotShadowMatrix[ i ] * shadowWorldPosition;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 );\\n\\t\\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n#endif\";\n\nvar shadowmask_pars_fragment = \"float getShadowMask() {\\n\\tfloat shadow = 1.0;\\n\\t#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\tDirectionalLightShadow directionalLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tdirectionalLight = directionalLightShadows[ i ];\\n\\t\\tshadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\tSpotLightShadow spotLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tspotLight = spotLightShadows[ i ];\\n\\t\\tshadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\tPointLightShadow pointLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tpointLight = pointLightShadows[ i ];\\n\\t\\tshadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#endif\\n\\treturn shadow;\\n}\";\n\nvar skinbase_vertex = \"#ifdef USE_SKINNING\\n\\tmat4 boneMatX = getBoneMatrix( skinIndex.x );\\n\\tmat4 boneMatY = getBoneMatrix( skinIndex.y );\\n\\tmat4 boneMatZ = getBoneMatrix( skinIndex.z );\\n\\tmat4 boneMatW = getBoneMatrix( skinIndex.w );\\n#endif\";\n\nvar skinning_pars_vertex = \"#ifdef USE_SKINNING\\n\\tuniform mat4 bindMatrix;\\n\\tuniform mat4 bindMatrixInverse;\\n\\tuniform highp sampler2D boneTexture;\\n\\tuniform int boneTextureSize;\\n\\tmat4 getBoneMatrix( const in float i ) {\\n\\t\\tfloat j = i * 4.0;\\n\\t\\tfloat x = mod( j, float( boneTextureSize ) );\\n\\t\\tfloat y = floor( j / float( boneTextureSize ) );\\n\\t\\tfloat dx = 1.0 / float( boneTextureSize );\\n\\t\\tfloat dy = 1.0 / float( boneTextureSize );\\n\\t\\ty = dy * ( y + 0.5 );\\n\\t\\tvec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) );\\n\\t\\tvec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) );\\n\\t\\tvec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) );\\n\\t\\tvec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) );\\n\\t\\tmat4 bone = mat4( v1, v2, v3, v4 );\\n\\t\\treturn bone;\\n\\t}\\n#endif\";\n\nvar skinning_vertex = \"#ifdef USE_SKINNING\\n\\tvec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );\\n\\tvec4 skinned = vec4( 0.0 );\\n\\tskinned += boneMatX * skinVertex * skinWeight.x;\\n\\tskinned += boneMatY * skinVertex * skinWeight.y;\\n\\tskinned += boneMatZ * skinVertex * skinWeight.z;\\n\\tskinned += boneMatW * skinVertex * skinWeight.w;\\n\\ttransformed = ( bindMatrixInverse * skinned ).xyz;\\n#endif\";\n\nvar skinnormal_vertex = \"#ifdef USE_SKINNING\\n\\tmat4 skinMatrix = mat4( 0.0 );\\n\\tskinMatrix += skinWeight.x * boneMatX;\\n\\tskinMatrix += skinWeight.y * boneMatY;\\n\\tskinMatrix += skinWeight.z * boneMatZ;\\n\\tskinMatrix += skinWeight.w * boneMatW;\\n\\tskinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\\n\\tobjectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;\\n\\t#ifdef USE_TANGENT\\n\\t\\tobjectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz;\\n\\t#endif\\n#endif\";\n\nvar specularmap_fragment = \"float specularStrength;\\n#ifdef USE_SPECULARMAP\\n\\tvec4 texelSpecular = texture2D( specularMap, vUv );\\n\\tspecularStrength = texelSpecular.r;\\n#else\\n\\tspecularStrength = 1.0;\\n#endif\";\n\nvar specularmap_pars_fragment = \"#ifdef USE_SPECULARMAP\\n\\tuniform sampler2D specularMap;\\n#endif\";\n\nvar tonemapping_fragment = \"#if defined( TONE_MAPPING )\\n\\tgl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\\n#endif\";\n\nvar tonemapping_pars_fragment = \"#ifndef saturate\\n#define saturate( a ) clamp( a, 0.0, 1.0 )\\n#endif\\nuniform float toneMappingExposure;\\nvec3 LinearToneMapping( vec3 color ) {\\n\\treturn toneMappingExposure * color;\\n}\\nvec3 ReinhardToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\treturn saturate( color / ( vec3( 1.0 ) + color ) );\\n}\\nvec3 OptimizedCineonToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\tcolor = max( vec3( 0.0 ), color - 0.004 );\\n\\treturn pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\\n}\\nvec3 RRTAndODTFit( vec3 v ) {\\n\\tvec3 a = v * ( v + 0.0245786 ) - 0.000090537;\\n\\tvec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081;\\n\\treturn a / b;\\n}\\nvec3 ACESFilmicToneMapping( vec3 color ) {\\n\\tconst mat3 ACESInputMat = mat3(\\n\\t\\tvec3( 0.59719, 0.07600, 0.02840 ),\\t\\tvec3( 0.35458, 0.90834, 0.13383 ),\\n\\t\\tvec3( 0.04823, 0.01566, 0.83777 )\\n\\t);\\n\\tconst mat3 ACESOutputMat = mat3(\\n\\t\\tvec3(  1.60475, -0.10208, -0.00327 ),\\t\\tvec3( -0.53108,  1.10813, -0.07276 ),\\n\\t\\tvec3( -0.07367, -0.00605,  1.07602 )\\n\\t);\\n\\tcolor *= toneMappingExposure / 0.6;\\n\\tcolor = ACESInputMat * color;\\n\\tcolor = RRTAndODTFit( color );\\n\\tcolor = ACESOutputMat * color;\\n\\treturn saturate( color );\\n}\\nvec3 CustomToneMapping( vec3 color ) { return color; }\";\n\nvar transmission_fragment = \"#ifdef USE_TRANSMISSION\\n\\tfloat transmissionAlpha = 1.0;\\n\\tfloat transmissionFactor = transmission;\\n\\tfloat thicknessFactor = thickness;\\n\\t#ifdef USE_TRANSMISSIONMAP\\n\\t\\ttransmissionFactor *= texture2D( transmissionMap, vUv ).r;\\n\\t#endif\\n\\t#ifdef USE_THICKNESSMAP\\n\\t\\tthicknessFactor *= texture2D( thicknessMap, vUv ).g;\\n\\t#endif\\n\\tvec3 pos = vWorldPosition;\\n\\tvec3 v = normalize( cameraPosition - pos );\\n\\tvec3 n = inverseTransformDirection( normal, viewMatrix );\\n\\tvec4 transmission = getIBLVolumeRefraction(\\n\\t\\tn, v, roughnessFactor, material.diffuseColor, material.specularColor, material.specularF90,\\n\\t\\tpos, modelMatrix, viewMatrix, projectionMatrix, ior, thicknessFactor,\\n\\t\\tattenuationColor, attenuationDistance );\\n\\ttotalDiffuse = mix( totalDiffuse, transmission.rgb, transmissionFactor );\\n\\ttransmissionAlpha = mix( transmissionAlpha, transmission.a, transmissionFactor );\\n#endif\";\n\nvar transmission_pars_fragment = \"#ifdef USE_TRANSMISSION\\n\\tuniform float transmission;\\n\\tuniform float thickness;\\n\\tuniform float attenuationDistance;\\n\\tuniform vec3 attenuationColor;\\n\\t#ifdef USE_TRANSMISSIONMAP\\n\\t\\tuniform sampler2D transmissionMap;\\n\\t#endif\\n\\t#ifdef USE_THICKNESSMAP\\n\\t\\tuniform sampler2D thicknessMap;\\n\\t#endif\\n\\tuniform vec2 transmissionSamplerSize;\\n\\tuniform sampler2D transmissionSamplerMap;\\n\\tuniform mat4 modelMatrix;\\n\\tuniform mat4 projectionMatrix;\\n\\tvarying vec3 vWorldPosition;\\n\\tvec3 getVolumeTransmissionRay( const in vec3 n, const in vec3 v, const in float thickness, const in float ior, const in mat4 modelMatrix ) {\\n\\t\\tvec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior );\\n\\t\\tvec3 modelScale;\\n\\t\\tmodelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) );\\n\\t\\tmodelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) );\\n\\t\\tmodelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) );\\n\\t\\treturn normalize( refractionVector ) * thickness * modelScale;\\n\\t}\\n\\tfloat applyIorToRoughness( const in float roughness, const in float ior ) {\\n\\t\\treturn roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );\\n\\t}\\n\\tvec4 getTransmissionSample( const in vec2 fragCoord, const in float roughness, const in float ior ) {\\n\\t\\tfloat framebufferLod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );\\n\\t\\t#ifdef texture2DLodEXT\\n\\t\\t\\treturn texture2DLodEXT( transmissionSamplerMap, fragCoord.xy, framebufferLod );\\n\\t\\t#else\\n\\t\\t\\treturn texture2D( transmissionSamplerMap, fragCoord.xy, framebufferLod );\\n\\t\\t#endif\\n\\t}\\n\\tvec3 applyVolumeAttenuation( const in vec3 radiance, const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) {\\n\\t\\tif ( attenuationDistance == 0.0 ) {\\n\\t\\t\\treturn radiance;\\n\\t\\t} else {\\n\\t\\t\\tvec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance;\\n\\t\\t\\tvec3 transmittance = exp( - attenuationCoefficient * transmissionDistance );\\t\\t\\treturn transmittance * radiance;\\n\\t\\t}\\n\\t}\\n\\tvec4 getIBLVolumeRefraction( const in vec3 n, const in vec3 v, const in float roughness, const in vec3 diffuseColor,\\n\\t\\tconst in vec3 specularColor, const in float specularF90, const in vec3 position, const in mat4 modelMatrix,\\n\\t\\tconst in mat4 viewMatrix, const in mat4 projMatrix, const in float ior, const in float thickness,\\n\\t\\tconst in vec3 attenuationColor, const in float attenuationDistance ) {\\n\\t\\tvec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );\\n\\t\\tvec3 refractedRayExit = position + transmissionRay;\\n\\t\\tvec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );\\n\\t\\tvec2 refractionCoords = ndcPos.xy / ndcPos.w;\\n\\t\\trefractionCoords += 1.0;\\n\\t\\trefractionCoords /= 2.0;\\n\\t\\tvec4 transmittedLight = getTransmissionSample( refractionCoords, roughness, ior );\\n\\t\\tvec3 attenuatedColor = applyVolumeAttenuation( transmittedLight.rgb, length( transmissionRay ), attenuationColor, attenuationDistance );\\n\\t\\tvec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness );\\n\\t\\treturn vec4( ( 1.0 - F ) * attenuatedColor * diffuseColor, transmittedLight.a );\\n\\t}\\n#endif\";\n\nvar uv_pars_fragment = \"#if ( defined( USE_UV ) && ! defined( UVS_VERTEX_ONLY ) )\\n\\tvarying vec2 vUv;\\n#endif\";\n\nvar uv_pars_vertex = \"#ifdef USE_UV\\n\\t#ifdef UVS_VERTEX_ONLY\\n\\t\\tvec2 vUv;\\n\\t#else\\n\\t\\tvarying vec2 vUv;\\n\\t#endif\\n\\tuniform mat3 uvTransform;\\n#endif\";\n\nvar uv_vertex = \"#ifdef USE_UV\\n\\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\\n#endif\";\n\nvar uv2_pars_fragment = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tvarying vec2 vUv2;\\n#endif\";\n\nvar uv2_pars_vertex = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tattribute vec2 uv2;\\n\\tvarying vec2 vUv2;\\n\\tuniform mat3 uv2Transform;\\n#endif\";\n\nvar uv2_vertex = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tvUv2 = ( uv2Transform * vec3( uv2, 1 ) ).xy;\\n#endif\";\n\nvar worldpos_vertex = \"#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION )\\n\\tvec4 worldPosition = vec4( transformed, 1.0 );\\n\\t#ifdef USE_INSTANCING\\n\\t\\tworldPosition = instanceMatrix * worldPosition;\\n\\t#endif\\n\\tworldPosition = modelMatrix * worldPosition;\\n#endif\";\n\nconst vertex$g = \"varying vec2 vUv;\\nuniform mat3 uvTransform;\\nvoid main() {\\n\\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\\n\\tgl_Position = vec4( position.xy, 1.0, 1.0 );\\n}\";\n\nconst fragment$g = \"uniform sampler2D t2D;\\nvarying vec2 vUv;\\nvoid main() {\\n\\tgl_FragColor = texture2D( t2D, vUv );\\n\\t#ifdef DECODE_VIDEO_TEXTURE\\n\\t\\tgl_FragColor = vec4( mix( pow( gl_FragColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), gl_FragColor.rgb * 0.0773993808, vec3( lessThanEqual( gl_FragColor.rgb, vec3( 0.04045 ) ) ) ), gl_FragColor.w );\\n\\t#endif\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n}\";\n\nconst vertex$f = \"varying vec3 vWorldDirection;\\n#include <common>\\nvoid main() {\\n\\tvWorldDirection = transformDirection( position, modelMatrix );\\n\\t#include <begin_vertex>\\n\\t#include <project_vertex>\\n\\tgl_Position.z = gl_Position.w;\\n}\";\n\nconst fragment$f = \"#include <envmap_common_pars_fragment>\\nuniform float opacity;\\nvarying vec3 vWorldDirection;\\n#include <cube_uv_reflection_fragment>\\nvoid main() {\\n\\tvec3 vReflect = vWorldDirection;\\n\\t#include <envmap_fragment>\\n\\tgl_FragColor = envColor;\\n\\tgl_FragColor.a *= opacity;\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n}\";\n\nconst vertex$e = \"#include <common>\\n#include <uv_pars_vertex>\\n#include <displacementmap_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvarying vec2 vHighPrecisionZW;\\nvoid main() {\\n\\t#include <uv_vertex>\\n\\t#include <skinbase_vertex>\\n\\t#ifdef USE_DISPLACEMENTMAP\\n\\t\\t#include <beginnormal_vertex>\\n\\t\\t#include <morphnormal_vertex>\\n\\t\\t#include <skinnormal_vertex>\\n\\t#endif\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <skinning_vertex>\\n\\t#include <displacementmap_vertex>\\n\\t#include <project_vertex>\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\tvHighPrecisionZW = gl_Position.zw;\\n}\";\n\nconst fragment$e = \"#if DEPTH_PACKING == 3200\\n\\tuniform float opacity;\\n#endif\\n#include <common>\\n#include <packing>\\n#include <uv_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <alphatest_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvarying vec2 vHighPrecisionZW;\\nvoid main() {\\n\\t#include <clipping_planes_fragment>\\n\\tvec4 diffuseColor = vec4( 1.0 );\\n\\t#if DEPTH_PACKING == 3200\\n\\t\\tdiffuseColor.a = opacity;\\n\\t#endif\\n\\t#include <map_fragment>\\n\\t#include <alphamap_fragment>\\n\\t#include <alphatest_fragment>\\n\\t#include <logdepthbuf_fragment>\\n\\tfloat fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;\\n\\t#if DEPTH_PACKING == 3200\\n\\t\\tgl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );\\n\\t#elif DEPTH_PACKING == 3201\\n\\t\\tgl_FragColor = packDepthToRGBA( fragCoordZ );\\n\\t#endif\\n}\";\n\nconst vertex$d = \"#define DISTANCE\\nvarying vec3 vWorldPosition;\\n#include <common>\\n#include <uv_pars_vertex>\\n#include <displacementmap_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include <uv_vertex>\\n\\t#include <skinbase_vertex>\\n\\t#ifdef USE_DISPLACEMENTMAP\\n\\t\\t#include <beginnormal_vertex>\\n\\t\\t#include <morphnormal_vertex>\\n\\t\\t#include <skinnormal_vertex>\\n\\t#endif\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <skinning_vertex>\\n\\t#include <displacementmap_vertex>\\n\\t#include <project_vertex>\\n\\t#include <worldpos_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\tvWorldPosition = worldPosition.xyz;\\n}\";\n\nconst fragment$d = \"#define DISTANCE\\nuniform vec3 referencePosition;\\nuniform float nearDistance;\\nuniform float farDistance;\\nvarying vec3 vWorldPosition;\\n#include <common>\\n#include <packing>\\n#include <uv_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <alphatest_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main () {\\n\\t#include <clipping_planes_fragment>\\n\\tvec4 diffuseColor = vec4( 1.0 );\\n\\t#include <map_fragment>\\n\\t#include <alphamap_fragment>\\n\\t#include <alphatest_fragment>\\n\\tfloat dist = length( vWorldPosition - referencePosition );\\n\\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\\n\\tdist = saturate( dist );\\n\\tgl_FragColor = packDepthToRGBA( dist );\\n}\";\n\nconst vertex$c = \"varying vec3 vWorldDirection;\\n#include <common>\\nvoid main() {\\n\\tvWorldDirection = transformDirection( position, modelMatrix );\\n\\t#include <begin_vertex>\\n\\t#include <project_vertex>\\n}\";\n\nconst fragment$c = \"uniform sampler2D tEquirect;\\nvarying vec3 vWorldDirection;\\n#include <common>\\nvoid main() {\\n\\tvec3 direction = normalize( vWorldDirection );\\n\\tvec2 sampleUV = equirectUv( direction );\\n\\tgl_FragColor = texture2D( tEquirect, sampleUV );\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n}\";\n\nconst vertex$b = \"uniform float scale;\\nattribute float lineDistance;\\nvarying float vLineDistance;\\n#include <common>\\n#include <color_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\tvLineDistance = scale * lineDistance;\\n\\t#include <color_vertex>\\n\\t#include <morphcolor_vertex>\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <project_vertex>\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\t#include <fog_vertex>\\n}\";\n\nconst fragment$b = \"uniform vec3 diffuse;\\nuniform float opacity;\\nuniform float dashSize;\\nuniform float totalSize;\\nvarying float vLineDistance;\\n#include <common>\\n#include <color_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include <clipping_planes_fragment>\\n\\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\\n\\t\\tdiscard;\\n\\t}\\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include <logdepthbuf_fragment>\\n\\t#include <color_fragment>\\n\\toutgoingLight = diffuseColor.rgb;\\n\\t#include <output_fragment>\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n\\t#include <fog_fragment>\\n\\t#include <premultiplied_alpha_fragment>\\n}\";\n\nconst vertex$a = \"#include <common>\\n#include <uv_pars_vertex>\\n#include <uv2_pars_vertex>\\n#include <envmap_pars_vertex>\\n#include <color_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include <uv_vertex>\\n\\t#include <uv2_vertex>\\n\\t#include <color_vertex>\\n\\t#include <morphcolor_vertex>\\n\\t#if defined ( USE_ENVMAP ) || defined ( USE_SKINNING )\\n\\t\\t#include <beginnormal_vertex>\\n\\t\\t#include <morphnormal_vertex>\\n\\t\\t#include <skinbase_vertex>\\n\\t\\t#include <skinnormal_vertex>\\n\\t\\t#include <defaultnormal_vertex>\\n\\t#endif\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <skinning_vertex>\\n\\t#include <project_vertex>\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\t#include <worldpos_vertex>\\n\\t#include <envmap_vertex>\\n\\t#include <fog_vertex>\\n}\";\n\nconst fragment$a = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include <common>\\n#include <dithering_pars_fragment>\\n#include <color_pars_fragment>\\n#include <uv_pars_fragment>\\n#include <uv2_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <alphatest_pars_fragment>\\n#include <aomap_pars_fragment>\\n#include <lightmap_pars_fragment>\\n#include <envmap_common_pars_fragment>\\n#include <envmap_pars_fragment>\\n#include <cube_uv_reflection_fragment>\\n#include <fog_pars_fragment>\\n#include <specularmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include <clipping_planes_fragment>\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include <logdepthbuf_fragment>\\n\\t#include <map_fragment>\\n\\t#include <color_fragment>\\n\\t#include <alphamap_fragment>\\n\\t#include <alphatest_fragment>\\n\\t#include <specularmap_fragment>\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\t#ifdef USE_LIGHTMAP\\n\\t\\tvec4 lightMapTexel = texture2D( lightMap, vUv2 );\\n\\t\\treflectedLight.indirectDiffuse += lightMapTexel.rgb * lightMapIntensity * RECIPROCAL_PI;\\n\\t#else\\n\\t\\treflectedLight.indirectDiffuse += vec3( 1.0 );\\n\\t#endif\\n\\t#include <aomap_fragment>\\n\\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\\n\\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\\n\\t#include <envmap_fragment>\\n\\t#include <output_fragment>\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n\\t#include <fog_fragment>\\n\\t#include <premultiplied_alpha_fragment>\\n\\t#include <dithering_fragment>\\n}\";\n\nconst vertex$9 = \"#define LAMBERT\\nvarying vec3 vLightFront;\\nvarying vec3 vIndirectFront;\\n#ifdef DOUBLE_SIDED\\n\\tvarying vec3 vLightBack;\\n\\tvarying vec3 vIndirectBack;\\n#endif\\n#include <common>\\n#include <uv_pars_vertex>\\n#include <uv2_pars_vertex>\\n#include <envmap_pars_vertex>\\n#include <bsdfs>\\n#include <lights_pars_begin>\\n#include <color_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <shadowmap_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include <uv_vertex>\\n\\t#include <uv2_vertex>\\n\\t#include <color_vertex>\\n\\t#include <morphcolor_vertex>\\n\\t#include <beginnormal_vertex>\\n\\t#include <morphnormal_vertex>\\n\\t#include <skinbase_vertex>\\n\\t#include <skinnormal_vertex>\\n\\t#include <defaultnormal_vertex>\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <skinning_vertex>\\n\\t#include <project_vertex>\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\t#include <worldpos_vertex>\\n\\t#include <envmap_vertex>\\n\\t#include <lights_lambert_vertex>\\n\\t#include <shadowmap_vertex>\\n\\t#include <fog_vertex>\\n}\";\n\nconst fragment$9 = \"uniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float opacity;\\nvarying vec3 vLightFront;\\nvarying vec3 vIndirectFront;\\n#ifdef DOUBLE_SIDED\\n\\tvarying vec3 vLightBack;\\n\\tvarying vec3 vIndirectBack;\\n#endif\\n#include <common>\\n#include <packing>\\n#include <dithering_pars_fragment>\\n#include <color_pars_fragment>\\n#include <uv_pars_fragment>\\n#include <uv2_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <alphatest_pars_fragment>\\n#include <aomap_pars_fragment>\\n#include <lightmap_pars_fragment>\\n#include <emissivemap_pars_fragment>\\n#include <envmap_common_pars_fragment>\\n#include <envmap_pars_fragment>\\n#include <cube_uv_reflection_fragment>\\n#include <bsdfs>\\n#include <lights_pars_begin>\\n#include <fog_pars_fragment>\\n#include <shadowmap_pars_fragment>\\n#include <shadowmask_pars_fragment>\\n#include <specularmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include <clipping_planes_fragment>\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include <logdepthbuf_fragment>\\n\\t#include <map_fragment>\\n\\t#include <color_fragment>\\n\\t#include <alphamap_fragment>\\n\\t#include <alphatest_fragment>\\n\\t#include <specularmap_fragment>\\n\\t#include <emissivemap_fragment>\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\treflectedLight.indirectDiffuse += ( gl_FrontFacing ) ? vIndirectFront : vIndirectBack;\\n\\t#else\\n\\t\\treflectedLight.indirectDiffuse += vIndirectFront;\\n\\t#endif\\n\\t#include <lightmap_fragment>\\n\\treflectedLight.indirectDiffuse *= BRDF_Lambert( diffuseColor.rgb );\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\treflectedLight.directDiffuse = ( gl_FrontFacing ) ? vLightFront : vLightBack;\\n\\t#else\\n\\t\\treflectedLight.directDiffuse = vLightFront;\\n\\t#endif\\n\\treflectedLight.directDiffuse *= BRDF_Lambert( diffuseColor.rgb ) * getShadowMask();\\n\\t#include <aomap_fragment>\\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\\n\\t#include <envmap_fragment>\\n\\t#include <output_fragment>\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n\\t#include <fog_fragment>\\n\\t#include <premultiplied_alpha_fragment>\\n\\t#include <dithering_fragment>\\n}\";\n\nconst vertex$8 = \"#define MATCAP\\nvarying vec3 vViewPosition;\\n#include <common>\\n#include <uv_pars_vertex>\\n#include <color_pars_vertex>\\n#include <displacementmap_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <normal_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include <uv_vertex>\\n\\t#include <color_vertex>\\n\\t#include <morphcolor_vertex>\\n\\t#include <beginnormal_vertex>\\n\\t#include <morphnormal_vertex>\\n\\t#include <skinbase_vertex>\\n\\t#include <skinnormal_vertex>\\n\\t#include <defaultnormal_vertex>\\n\\t#include <normal_vertex>\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <skinning_vertex>\\n\\t#include <displacementmap_vertex>\\n\\t#include <project_vertex>\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\t#include <fog_vertex>\\n\\tvViewPosition = - mvPosition.xyz;\\n}\";\n\nconst fragment$8 = \"#define MATCAP\\nuniform vec3 diffuse;\\nuniform float opacity;\\nuniform sampler2D matcap;\\nvarying vec3 vViewPosition;\\n#include <common>\\n#include <dithering_pars_fragment>\\n#include <color_pars_fragment>\\n#include <uv_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <alphatest_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <normal_pars_fragment>\\n#include <bumpmap_pars_fragment>\\n#include <normalmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include <clipping_planes_fragment>\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include <logdepthbuf_fragment>\\n\\t#include <map_fragment>\\n\\t#include <color_fragment>\\n\\t#include <alphamap_fragment>\\n\\t#include <alphatest_fragment>\\n\\t#include <normal_fragment_begin>\\n\\t#include <normal_fragment_maps>\\n\\tvec3 viewDir = normalize( vViewPosition );\\n\\tvec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );\\n\\tvec3 y = cross( viewDir, x );\\n\\tvec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5;\\n\\t#ifdef USE_MATCAP\\n\\t\\tvec4 matcapColor = texture2D( matcap, uv );\\n\\t#else\\n\\t\\tvec4 matcapColor = vec4( vec3( mix( 0.2, 0.8, uv.y ) ), 1.0 );\\n\\t#endif\\n\\tvec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;\\n\\t#include <output_fragment>\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n\\t#include <fog_fragment>\\n\\t#include <premultiplied_alpha_fragment>\\n\\t#include <dithering_fragment>\\n}\";\n\nconst vertex$7 = \"#define NORMAL\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\\n\\tvarying vec3 vViewPosition;\\n#endif\\n#include <common>\\n#include <uv_pars_vertex>\\n#include <displacementmap_pars_vertex>\\n#include <normal_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include <uv_vertex>\\n\\t#include <beginnormal_vertex>\\n\\t#include <morphnormal_vertex>\\n\\t#include <skinbase_vertex>\\n\\t#include <skinnormal_vertex>\\n\\t#include <defaultnormal_vertex>\\n\\t#include <normal_vertex>\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <skinning_vertex>\\n\\t#include <displacementmap_vertex>\\n\\t#include <project_vertex>\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <clipping_planes_vertex>\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\\n\\tvViewPosition = - mvPosition.xyz;\\n#endif\\n}\";\n\nconst fragment$7 = \"#define NORMAL\\nuniform float opacity;\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\\n\\tvarying vec3 vViewPosition;\\n#endif\\n#include <packing>\\n#include <uv_pars_fragment>\\n#include <normal_pars_fragment>\\n#include <bumpmap_pars_fragment>\\n#include <normalmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include <clipping_planes_fragment>\\n\\t#include <logdepthbuf_fragment>\\n\\t#include <normal_fragment_begin>\\n\\t#include <normal_fragment_maps>\\n\\tgl_FragColor = vec4( packNormalToRGB( normal ), opacity );\\n\\t#ifdef OPAQUE\\n\\t\\tgl_FragColor.a = 1.0;\\n\\t#endif\\n}\";\n\nconst vertex$6 = \"#define PHONG\\nvarying vec3 vViewPosition;\\n#include <common>\\n#include <uv_pars_vertex>\\n#include <uv2_pars_vertex>\\n#include <displacementmap_pars_vertex>\\n#include <envmap_pars_vertex>\\n#include <color_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <normal_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <shadowmap_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include <uv_vertex>\\n\\t#include <uv2_vertex>\\n\\t#include <color_vertex>\\n\\t#include <morphcolor_vertex>\\n\\t#include <beginnormal_vertex>\\n\\t#include <morphnormal_vertex>\\n\\t#include <skinbase_vertex>\\n\\t#include <skinnormal_vertex>\\n\\t#include <defaultnormal_vertex>\\n\\t#include <normal_vertex>\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <skinning_vertex>\\n\\t#include <displacementmap_vertex>\\n\\t#include <project_vertex>\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include <worldpos_vertex>\\n\\t#include <envmap_vertex>\\n\\t#include <shadowmap_vertex>\\n\\t#include <fog_vertex>\\n}\";\n\nconst fragment$6 = \"#define PHONG\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform vec3 specular;\\nuniform float shininess;\\nuniform float opacity;\\n#include <common>\\n#include <packing>\\n#include <dithering_pars_fragment>\\n#include <color_pars_fragment>\\n#include <uv_pars_fragment>\\n#include <uv2_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <alphatest_pars_fragment>\\n#include <aomap_pars_fragment>\\n#include <lightmap_pars_fragment>\\n#include <emissivemap_pars_fragment>\\n#include <envmap_common_pars_fragment>\\n#include <envmap_pars_fragment>\\n#include <cube_uv_reflection_fragment>\\n#include <fog_pars_fragment>\\n#include <bsdfs>\\n#include <lights_pars_begin>\\n#include <normal_pars_fragment>\\n#include <lights_phong_pars_fragment>\\n#include <shadowmap_pars_fragment>\\n#include <bumpmap_pars_fragment>\\n#include <normalmap_pars_fragment>\\n#include <specularmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include <clipping_planes_fragment>\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include <logdepthbuf_fragment>\\n\\t#include <map_fragment>\\n\\t#include <color_fragment>\\n\\t#include <alphamap_fragment>\\n\\t#include <alphatest_fragment>\\n\\t#include <specularmap_fragment>\\n\\t#include <normal_fragment_begin>\\n\\t#include <normal_fragment_maps>\\n\\t#include <emissivemap_fragment>\\n\\t#include <lights_phong_fragment>\\n\\t#include <lights_fragment_begin>\\n\\t#include <lights_fragment_maps>\\n\\t#include <lights_fragment_end>\\n\\t#include <aomap_fragment>\\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\\n\\t#include <envmap_fragment>\\n\\t#include <output_fragment>\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n\\t#include <fog_fragment>\\n\\t#include <premultiplied_alpha_fragment>\\n\\t#include <dithering_fragment>\\n}\";\n\nconst vertex$5 = \"#define STANDARD\\nvarying vec3 vViewPosition;\\n#ifdef USE_TRANSMISSION\\n\\tvarying vec3 vWorldPosition;\\n#endif\\n#include <common>\\n#include <uv_pars_vertex>\\n#include <uv2_pars_vertex>\\n#include <displacementmap_pars_vertex>\\n#include <color_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <normal_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <shadowmap_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include <uv_vertex>\\n\\t#include <uv2_vertex>\\n\\t#include <color_vertex>\\n\\t#include <morphcolor_vertex>\\n\\t#include <beginnormal_vertex>\\n\\t#include <morphnormal_vertex>\\n\\t#include <skinbase_vertex>\\n\\t#include <skinnormal_vertex>\\n\\t#include <defaultnormal_vertex>\\n\\t#include <normal_vertex>\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <skinning_vertex>\\n\\t#include <displacementmap_vertex>\\n\\t#include <project_vertex>\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include <worldpos_vertex>\\n\\t#include <shadowmap_vertex>\\n\\t#include <fog_vertex>\\n#ifdef USE_TRANSMISSION\\n\\tvWorldPosition = worldPosition.xyz;\\n#endif\\n}\";\n\nconst fragment$5 = \"#define STANDARD\\n#ifdef PHYSICAL\\n\\t#define IOR\\n\\t#define SPECULAR\\n#endif\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float roughness;\\nuniform float metalness;\\nuniform float opacity;\\n#ifdef IOR\\n\\tuniform float ior;\\n#endif\\n#ifdef SPECULAR\\n\\tuniform float specularIntensity;\\n\\tuniform vec3 specularColor;\\n\\t#ifdef USE_SPECULARINTENSITYMAP\\n\\t\\tuniform sampler2D specularIntensityMap;\\n\\t#endif\\n\\t#ifdef USE_SPECULARCOLORMAP\\n\\t\\tuniform sampler2D specularColorMap;\\n\\t#endif\\n#endif\\n#ifdef USE_CLEARCOAT\\n\\tuniform float clearcoat;\\n\\tuniform float clearcoatRoughness;\\n#endif\\n#ifdef USE_IRIDESCENCE\\n\\tuniform float iridescence;\\n\\tuniform float iridescenceIOR;\\n\\tuniform float iridescenceThicknessMinimum;\\n\\tuniform float iridescenceThicknessMaximum;\\n#endif\\n#ifdef USE_SHEEN\\n\\tuniform vec3 sheenColor;\\n\\tuniform float sheenRoughness;\\n\\t#ifdef USE_SHEENCOLORMAP\\n\\t\\tuniform sampler2D sheenColorMap;\\n\\t#endif\\n\\t#ifdef USE_SHEENROUGHNESSMAP\\n\\t\\tuniform sampler2D sheenRoughnessMap;\\n\\t#endif\\n#endif\\nvarying vec3 vViewPosition;\\n#include <common>\\n#include <packing>\\n#include <dithering_pars_fragment>\\n#include <color_pars_fragment>\\n#include <uv_pars_fragment>\\n#include <uv2_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <alphatest_pars_fragment>\\n#include <aomap_pars_fragment>\\n#include <lightmap_pars_fragment>\\n#include <emissivemap_pars_fragment>\\n#include <bsdfs>\\n#include <iridescence_fragment>\\n#include <cube_uv_reflection_fragment>\\n#include <envmap_common_pars_fragment>\\n#include <envmap_physical_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <lights_pars_begin>\\n#include <normal_pars_fragment>\\n#include <lights_physical_pars_fragment>\\n#include <transmission_pars_fragment>\\n#include <shadowmap_pars_fragment>\\n#include <bumpmap_pars_fragment>\\n#include <normalmap_pars_fragment>\\n#include <clearcoat_pars_fragment>\\n#include <iridescence_pars_fragment>\\n#include <roughnessmap_pars_fragment>\\n#include <metalnessmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include <clipping_planes_fragment>\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include <logdepthbuf_fragment>\\n\\t#include <map_fragment>\\n\\t#include <color_fragment>\\n\\t#include <alphamap_fragment>\\n\\t#include <alphatest_fragment>\\n\\t#include <roughnessmap_fragment>\\n\\t#include <metalnessmap_fragment>\\n\\t#include <normal_fragment_begin>\\n\\t#include <normal_fragment_maps>\\n\\t#include <clearcoat_normal_fragment_begin>\\n\\t#include <clearcoat_normal_fragment_maps>\\n\\t#include <emissivemap_fragment>\\n\\t#include <lights_physical_fragment>\\n\\t#include <lights_fragment_begin>\\n\\t#include <lights_fragment_maps>\\n\\t#include <lights_fragment_end>\\n\\t#include <aomap_fragment>\\n\\tvec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;\\n\\tvec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular;\\n\\t#include <transmission_fragment>\\n\\tvec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance;\\n\\t#ifdef USE_SHEEN\\n\\t\\tfloat sheenEnergyComp = 1.0 - 0.157 * max3( material.sheenColor );\\n\\t\\toutgoingLight = outgoingLight * sheenEnergyComp + sheenSpecular;\\n\\t#endif\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tfloat dotNVcc = saturate( dot( geometry.clearcoatNormal, geometry.viewDir ) );\\n\\t\\tvec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc );\\n\\t\\toutgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + clearcoatSpecular * material.clearcoat;\\n\\t#endif\\n\\t#include <output_fragment>\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n\\t#include <fog_fragment>\\n\\t#include <premultiplied_alpha_fragment>\\n\\t#include <dithering_fragment>\\n}\";\n\nconst vertex$4 = \"#define TOON\\nvarying vec3 vViewPosition;\\n#include <common>\\n#include <uv_pars_vertex>\\n#include <uv2_pars_vertex>\\n#include <displacementmap_pars_vertex>\\n#include <color_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <normal_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <shadowmap_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include <uv_vertex>\\n\\t#include <uv2_vertex>\\n\\t#include <color_vertex>\\n\\t#include <morphcolor_vertex>\\n\\t#include <beginnormal_vertex>\\n\\t#include <morphnormal_vertex>\\n\\t#include <skinbase_vertex>\\n\\t#include <skinnormal_vertex>\\n\\t#include <defaultnormal_vertex>\\n\\t#include <normal_vertex>\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <skinning_vertex>\\n\\t#include <displacementmap_vertex>\\n\\t#include <project_vertex>\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include <worldpos_vertex>\\n\\t#include <shadowmap_vertex>\\n\\t#include <fog_vertex>\\n}\";\n\nconst fragment$4 = \"#define TOON\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float opacity;\\n#include <common>\\n#include <packing>\\n#include <dithering_pars_fragment>\\n#include <color_pars_fragment>\\n#include <uv_pars_fragment>\\n#include <uv2_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <alphatest_pars_fragment>\\n#include <aomap_pars_fragment>\\n#include <lightmap_pars_fragment>\\n#include <emissivemap_pars_fragment>\\n#include <gradientmap_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <bsdfs>\\n#include <lights_pars_begin>\\n#include <normal_pars_fragment>\\n#include <lights_toon_pars_fragment>\\n#include <shadowmap_pars_fragment>\\n#include <bumpmap_pars_fragment>\\n#include <normalmap_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include <clipping_planes_fragment>\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include <logdepthbuf_fragment>\\n\\t#include <map_fragment>\\n\\t#include <color_fragment>\\n\\t#include <alphamap_fragment>\\n\\t#include <alphatest_fragment>\\n\\t#include <normal_fragment_begin>\\n\\t#include <normal_fragment_maps>\\n\\t#include <emissivemap_fragment>\\n\\t#include <lights_toon_fragment>\\n\\t#include <lights_fragment_begin>\\n\\t#include <lights_fragment_maps>\\n\\t#include <lights_fragment_end>\\n\\t#include <aomap_fragment>\\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\\n\\t#include <output_fragment>\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n\\t#include <fog_fragment>\\n\\t#include <premultiplied_alpha_fragment>\\n\\t#include <dithering_fragment>\\n}\";\n\nconst vertex$3 = \"uniform float size;\\nuniform float scale;\\n#include <common>\\n#include <color_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include <color_vertex>\\n\\t#include <morphcolor_vertex>\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <project_vertex>\\n\\tgl_PointSize = size;\\n\\t#ifdef USE_SIZEATTENUATION\\n\\t\\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\\n\\t\\tif ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z );\\n\\t#endif\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\t#include <worldpos_vertex>\\n\\t#include <fog_vertex>\\n}\";\n\nconst fragment$3 = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#include <common>\\n#include <color_pars_fragment>\\n#include <map_particle_pars_fragment>\\n#include <alphatest_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include <clipping_planes_fragment>\\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include <logdepthbuf_fragment>\\n\\t#include <map_particle_fragment>\\n\\t#include <color_fragment>\\n\\t#include <alphatest_fragment>\\n\\toutgoingLight = diffuseColor.rgb;\\n\\t#include <output_fragment>\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n\\t#include <fog_fragment>\\n\\t#include <premultiplied_alpha_fragment>\\n}\";\n\nconst vertex$2 = \"#include <common>\\n#include <fog_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <shadowmap_pars_vertex>\\nvoid main() {\\n\\t#include <beginnormal_vertex>\\n\\t#include <morphnormal_vertex>\\n\\t#include <skinbase_vertex>\\n\\t#include <skinnormal_vertex>\\n\\t#include <defaultnormal_vertex>\\n\\t#include <begin_vertex>\\n\\t#include <morphtarget_vertex>\\n\\t#include <skinning_vertex>\\n\\t#include <project_vertex>\\n\\t#include <worldpos_vertex>\\n\\t#include <shadowmap_vertex>\\n\\t#include <fog_vertex>\\n}\";\n\nconst fragment$2 = \"uniform vec3 color;\\nuniform float opacity;\\n#include <common>\\n#include <packing>\\n#include <fog_pars_fragment>\\n#include <bsdfs>\\n#include <lights_pars_begin>\\n#include <shadowmap_pars_fragment>\\n#include <shadowmask_pars_fragment>\\nvoid main() {\\n\\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n\\t#include <fog_fragment>\\n}\";\n\nconst vertex$1 = \"uniform float rotation;\\nuniform vec2 center;\\n#include <common>\\n#include <uv_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvoid main() {\\n\\t#include <uv_vertex>\\n\\tvec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\\n\\tvec2 scale;\\n\\tscale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );\\n\\tscale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );\\n\\t#ifndef USE_SIZEATTENUATION\\n\\t\\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\\n\\t\\tif ( isPerspective ) scale *= - mvPosition.z;\\n\\t#endif\\n\\tvec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale;\\n\\tvec2 rotatedPosition;\\n\\trotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\\n\\trotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\\n\\tmvPosition.xy += rotatedPosition;\\n\\tgl_Position = projectionMatrix * mvPosition;\\n\\t#include <logdepthbuf_vertex>\\n\\t#include <clipping_planes_vertex>\\n\\t#include <fog_vertex>\\n}\";\n\nconst fragment$1 = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#include <common>\\n#include <uv_pars_fragment>\\n#include <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <alphatest_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\\t#include <clipping_planes_fragment>\\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include <logdepthbuf_fragment>\\n\\t#include <map_fragment>\\n\\t#include <alphamap_fragment>\\n\\t#include <alphatest_fragment>\\n\\toutgoingLight = diffuseColor.rgb;\\n\\t#include <output_fragment>\\n\\t#include <tonemapping_fragment>\\n\\t#include <encodings_fragment>\\n\\t#include <fog_fragment>\\n}\";\n\nconst ShaderChunk = {\n\talphamap_fragment: alphamap_fragment,\n\talphamap_pars_fragment: alphamap_pars_fragment,\n\talphatest_fragment: alphatest_fragment,\n\talphatest_pars_fragment: alphatest_pars_fragment,\n\taomap_fragment: aomap_fragment,\n\taomap_pars_fragment: aomap_pars_fragment,\n\tbegin_vertex: begin_vertex,\n\tbeginnormal_vertex: beginnormal_vertex,\n\tbsdfs: bsdfs,\n\tiridescence_fragment: iridescence_fragment,\n\tbumpmap_pars_fragment: bumpmap_pars_fragment,\n\tclipping_planes_fragment: clipping_planes_fragment,\n\tclipping_planes_pars_fragment: clipping_planes_pars_fragment,\n\tclipping_planes_pars_vertex: clipping_planes_pars_vertex,\n\tclipping_planes_vertex: clipping_planes_vertex,\n\tcolor_fragment: color_fragment,\n\tcolor_pars_fragment: color_pars_fragment,\n\tcolor_pars_vertex: color_pars_vertex,\n\tcolor_vertex: color_vertex,\n\tcommon: common,\n\tcube_uv_reflection_fragment: cube_uv_reflection_fragment,\n\tdefaultnormal_vertex: defaultnormal_vertex,\n\tdisplacementmap_pars_vertex: displacementmap_pars_vertex,\n\tdisplacementmap_vertex: displacementmap_vertex,\n\temissivemap_fragment: emissivemap_fragment,\n\temissivemap_pars_fragment: emissivemap_pars_fragment,\n\tencodings_fragment: encodings_fragment,\n\tencodings_pars_fragment: encodings_pars_fragment,\n\tenvmap_fragment: envmap_fragment,\n\tenvmap_common_pars_fragment: envmap_common_pars_fragment,\n\tenvmap_pars_fragment: envmap_pars_fragment,\n\tenvmap_pars_vertex: envmap_pars_vertex,\n\tenvmap_physical_pars_fragment: envmap_physical_pars_fragment,\n\tenvmap_vertex: envmap_vertex,\n\tfog_vertex: fog_vertex,\n\tfog_pars_vertex: fog_pars_vertex,\n\tfog_fragment: fog_fragment,\n\tfog_pars_fragment: fog_pars_fragment,\n\tgradientmap_pars_fragment: gradientmap_pars_fragment,\n\tlightmap_fragment: lightmap_fragment,\n\tlightmap_pars_fragment: lightmap_pars_fragment,\n\tlights_lambert_vertex: lights_lambert_vertex,\n\tlights_pars_begin: lights_pars_begin,\n\tlights_toon_fragment: lights_toon_fragment,\n\tlights_toon_pars_fragment: lights_toon_pars_fragment,\n\tlights_phong_fragment: lights_phong_fragment,\n\tlights_phong_pars_fragment: lights_phong_pars_fragment,\n\tlights_physical_fragment: lights_physical_fragment,\n\tlights_physical_pars_fragment: lights_physical_pars_fragment,\n\tlights_fragment_begin: lights_fragment_begin,\n\tlights_fragment_maps: lights_fragment_maps,\n\tlights_fragment_end: lights_fragment_end,\n\tlogdepthbuf_fragment: logdepthbuf_fragment,\n\tlogdepthbuf_pars_fragment: logdepthbuf_pars_fragment,\n\tlogdepthbuf_pars_vertex: logdepthbuf_pars_vertex,\n\tlogdepthbuf_vertex: logdepthbuf_vertex,\n\tmap_fragment: map_fragment,\n\tmap_pars_fragment: map_pars_fragment,\n\tmap_particle_fragment: map_particle_fragment,\n\tmap_particle_pars_fragment: map_particle_pars_fragment,\n\tmetalnessmap_fragment: metalnessmap_fragment,\n\tmetalnessmap_pars_fragment: metalnessmap_pars_fragment,\n\tmorphcolor_vertex: morphcolor_vertex,\n\tmorphnormal_vertex: morphnormal_vertex,\n\tmorphtarget_pars_vertex: morphtarget_pars_vertex,\n\tmorphtarget_vertex: morphtarget_vertex,\n\tnormal_fragment_begin: normal_fragment_begin,\n\tnormal_fragment_maps: normal_fragment_maps,\n\tnormal_pars_fragment: normal_pars_fragment,\n\tnormal_pars_vertex: normal_pars_vertex,\n\tnormal_vertex: normal_vertex,\n\tnormalmap_pars_fragment: normalmap_pars_fragment,\n\tclearcoat_normal_fragment_begin: clearcoat_normal_fragment_begin,\n\tclearcoat_normal_fragment_maps: clearcoat_normal_fragment_maps,\n\tclearcoat_pars_fragment: clearcoat_pars_fragment,\n\tiridescence_pars_fragment: iridescence_pars_fragment,\n\toutput_fragment: output_fragment,\n\tpacking: packing,\n\tpremultiplied_alpha_fragment: premultiplied_alpha_fragment,\n\tproject_vertex: project_vertex,\n\tdithering_fragment: dithering_fragment,\n\tdithering_pars_fragment: dithering_pars_fragment,\n\troughnessmap_fragment: roughnessmap_fragment,\n\troughnessmap_pars_fragment: roughnessmap_pars_fragment,\n\tshadowmap_pars_fragment: shadowmap_pars_fragment,\n\tshadowmap_pars_vertex: shadowmap_pars_vertex,\n\tshadowmap_vertex: shadowmap_vertex,\n\tshadowmask_pars_fragment: shadowmask_pars_fragment,\n\tskinbase_vertex: skinbase_vertex,\n\tskinning_pars_vertex: skinning_pars_vertex,\n\tskinning_vertex: skinning_vertex,\n\tskinnormal_vertex: skinnormal_vertex,\n\tspecularmap_fragment: specularmap_fragment,\n\tspecularmap_pars_fragment: specularmap_pars_fragment,\n\ttonemapping_fragment: tonemapping_fragment,\n\ttonemapping_pars_fragment: tonemapping_pars_fragment,\n\ttransmission_fragment: transmission_fragment,\n\ttransmission_pars_fragment: transmission_pars_fragment,\n\tuv_pars_fragment: uv_pars_fragment,\n\tuv_pars_vertex: uv_pars_vertex,\n\tuv_vertex: uv_vertex,\n\tuv2_pars_fragment: uv2_pars_fragment,\n\tuv2_pars_vertex: uv2_pars_vertex,\n\tuv2_vertex: uv2_vertex,\n\tworldpos_vertex: worldpos_vertex,\n\n\tbackground_vert: vertex$g,\n\tbackground_frag: fragment$g,\n\tcube_vert: vertex$f,\n\tcube_frag: fragment$f,\n\tdepth_vert: vertex$e,\n\tdepth_frag: fragment$e,\n\tdistanceRGBA_vert: vertex$d,\n\tdistanceRGBA_frag: fragment$d,\n\tequirect_vert: vertex$c,\n\tequirect_frag: fragment$c,\n\tlinedashed_vert: vertex$b,\n\tlinedashed_frag: fragment$b,\n\tmeshbasic_vert: vertex$a,\n\tmeshbasic_frag: fragment$a,\n\tmeshlambert_vert: vertex$9,\n\tmeshlambert_frag: fragment$9,\n\tmeshmatcap_vert: vertex$8,\n\tmeshmatcap_frag: fragment$8,\n\tmeshnormal_vert: vertex$7,\n\tmeshnormal_frag: fragment$7,\n\tmeshphong_vert: vertex$6,\n\tmeshphong_frag: fragment$6,\n\tmeshphysical_vert: vertex$5,\n\tmeshphysical_frag: fragment$5,\n\tmeshtoon_vert: vertex$4,\n\tmeshtoon_frag: fragment$4,\n\tpoints_vert: vertex$3,\n\tpoints_frag: fragment$3,\n\tshadow_vert: vertex$2,\n\tshadow_frag: fragment$2,\n\tsprite_vert: vertex$1,\n\tsprite_frag: fragment$1\n};\n\n/**\n * Uniforms library for shared webgl shaders\n */\n\nconst UniformsLib = {\n\n\tcommon: {\n\n\t\tdiffuse: { value: /*@__PURE__*/ new Color( 0xffffff ) },\n\t\topacity: { value: 1.0 },\n\n\t\tmap: { value: null },\n\t\tuvTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\tuv2Transform: { value: /*@__PURE__*/ new Matrix3() },\n\n\t\talphaMap: { value: null },\n\t\talphaTest: { value: 0 }\n\n\t},\n\n\tspecularmap: {\n\n\t\tspecularMap: { value: null },\n\n\t},\n\n\tenvmap: {\n\n\t\tenvMap: { value: null },\n\t\tflipEnvMap: { value: - 1 },\n\t\treflectivity: { value: 1.0 }, // basic, lambert, phong\n\t\tior: { value: 1.5 }, // physical\n\t\trefractionRatio: { value: 0.98 } // basic, lambert, phong\n\n\t},\n\n\taomap: {\n\n\t\taoMap: { value: null },\n\t\taoMapIntensity: { value: 1 }\n\n\t},\n\n\tlightmap: {\n\n\t\tlightMap: { value: null },\n\t\tlightMapIntensity: { value: 1 }\n\n\t},\n\n\temissivemap: {\n\n\t\temissiveMap: { value: null }\n\n\t},\n\n\tbumpmap: {\n\n\t\tbumpMap: { value: null },\n\t\tbumpScale: { value: 1 }\n\n\t},\n\n\tnormalmap: {\n\n\t\tnormalMap: { value: null },\n\t\tnormalScale: { value: /*@__PURE__*/ new Vector2( 1, 1 ) }\n\n\t},\n\n\tdisplacementmap: {\n\n\t\tdisplacementMap: { value: null },\n\t\tdisplacementScale: { value: 1 },\n\t\tdisplacementBias: { value: 0 }\n\n\t},\n\n\troughnessmap: {\n\n\t\troughnessMap: { value: null }\n\n\t},\n\n\tmetalnessmap: {\n\n\t\tmetalnessMap: { value: null }\n\n\t},\n\n\tgradientmap: {\n\n\t\tgradientMap: { value: null }\n\n\t},\n\n\tfog: {\n\n\t\tfogDensity: { value: 0.00025 },\n\t\tfogNear: { value: 1 },\n\t\tfogFar: { value: 2000 },\n\t\tfogColor: { value: /*@__PURE__*/ new Color( 0xffffff ) }\n\n\t},\n\n\tlights: {\n\n\t\tambientLightColor: { value: [] },\n\n\t\tlightProbe: { value: [] },\n\n\t\tdirectionalLights: { value: [], properties: {\n\t\t\tdirection: {},\n\t\t\tcolor: {}\n\t\t} },\n\n\t\tdirectionalLightShadows: { value: [], properties: {\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {}\n\t\t} },\n\n\t\tdirectionalShadowMap: { value: [] },\n\t\tdirectionalShadowMatrix: { value: [] },\n\n\t\tspotLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\tdirection: {},\n\t\t\tdistance: {},\n\t\t\tconeCos: {},\n\t\t\tpenumbraCos: {},\n\t\t\tdecay: {}\n\t\t} },\n\n\t\tspotLightShadows: { value: [], properties: {\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {}\n\t\t} },\n\n\t\tspotShadowMap: { value: [] },\n\t\tspotShadowMatrix: { value: [] },\n\n\t\tpointLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\tdecay: {},\n\t\t\tdistance: {}\n\t\t} },\n\n\t\tpointLightShadows: { value: [], properties: {\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {},\n\t\t\tshadowCameraNear: {},\n\t\t\tshadowCameraFar: {}\n\t\t} },\n\n\t\tpointShadowMap: { value: [] },\n\t\tpointShadowMatrix: { value: [] },\n\n\t\themisphereLights: { value: [], properties: {\n\t\t\tdirection: {},\n\t\t\tskyColor: {},\n\t\t\tgroundColor: {}\n\t\t} },\n\n\t\t// TODO (abelnation): RectAreaLight BRDF data needs to be moved from example to main src\n\t\trectAreaLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\twidth: {},\n\t\t\theight: {}\n\t\t} },\n\n\t\tltc_1: { value: null },\n\t\tltc_2: { value: null }\n\n\t},\n\n\tpoints: {\n\n\t\tdiffuse: { value: /*@__PURE__*/ new Color( 0xffffff ) },\n\t\topacity: { value: 1.0 },\n\t\tsize: { value: 1.0 },\n\t\tscale: { value: 1.0 },\n\t\tmap: { value: null },\n\t\talphaMap: { value: null },\n\t\talphaTest: { value: 0 },\n\t\tuvTransform: { value: /*@__PURE__*/ new Matrix3() }\n\n\t},\n\n\tsprite: {\n\n\t\tdiffuse: { value: /*@__PURE__*/ new Color( 0xffffff ) },\n\t\topacity: { value: 1.0 },\n\t\tcenter: { value: /*@__PURE__*/ new Vector2( 0.5, 0.5 ) },\n\t\trotation: { value: 0.0 },\n\t\tmap: { value: null },\n\t\talphaMap: { value: null },\n\t\talphaTest: { value: 0 },\n\t\tuvTransform: { value: /*@__PURE__*/ new Matrix3() }\n\n\t}\n\n};\n\nconst ShaderLib = {\n\n\tbasic: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshbasic_vert,\n\t\tfragmentShader: ShaderChunk.meshbasic_frag\n\n\t},\n\n\tlambert: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: /*@__PURE__*/ new Color( 0x000000 ) }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshlambert_vert,\n\t\tfragmentShader: ShaderChunk.meshlambert_frag\n\n\t},\n\n\tphong: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: /*@__PURE__*/ new Color( 0x000000 ) },\n\t\t\t\tspecular: { value: /*@__PURE__*/ new Color( 0x111111 ) },\n\t\t\t\tshininess: { value: 30 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshphong_vert,\n\t\tfragmentShader: ShaderChunk.meshphong_frag\n\n\t},\n\n\tstandard: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.roughnessmap,\n\t\t\tUniformsLib.metalnessmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: /*@__PURE__*/ new Color( 0x000000 ) },\n\t\t\t\troughness: { value: 1.0 },\n\t\t\t\tmetalness: { value: 0.0 },\n\t\t\t\tenvMapIntensity: { value: 1 } // temporary\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshphysical_vert,\n\t\tfragmentShader: ShaderChunk.meshphysical_frag\n\n\t},\n\n\ttoon: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.gradientmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: /*@__PURE__*/ new Color( 0x000000 ) }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshtoon_vert,\n\t\tfragmentShader: ShaderChunk.meshtoon_frag\n\n\t},\n\n\tmatcap: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tmatcap: { value: null }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshmatcap_vert,\n\t\tfragmentShader: ShaderChunk.meshmatcap_frag\n\n\t},\n\n\tpoints: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.points,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.points_vert,\n\t\tfragmentShader: ShaderChunk.points_frag\n\n\t},\n\n\tdashed: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tscale: { value: 1 },\n\t\t\t\tdashSize: { value: 1 },\n\t\t\t\ttotalSize: { value: 2 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.linedashed_vert,\n\t\tfragmentShader: ShaderChunk.linedashed_frag\n\n\t},\n\n\tdepth: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.displacementmap\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.depth_vert,\n\t\tfragmentShader: ShaderChunk.depth_frag\n\n\t},\n\n\tnormal: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\t{\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshnormal_vert,\n\t\tfragmentShader: ShaderChunk.meshnormal_frag\n\n\t},\n\n\tsprite: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.sprite,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.sprite_vert,\n\t\tfragmentShader: ShaderChunk.sprite_frag\n\n\t},\n\n\tbackground: {\n\n\t\tuniforms: {\n\t\t\tuvTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tt2D: { value: null },\n\t\t},\n\n\t\tvertexShader: ShaderChunk.background_vert,\n\t\tfragmentShader: ShaderChunk.background_frag\n\n\t},\n\n\tcube: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.envmap,\n\t\t\t{\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.cube_vert,\n\t\tfragmentShader: ShaderChunk.cube_frag\n\n\t},\n\n\tequirect: {\n\n\t\tuniforms: {\n\t\t\ttEquirect: { value: null },\n\t\t},\n\n\t\tvertexShader: ShaderChunk.equirect_vert,\n\t\tfragmentShader: ShaderChunk.equirect_frag\n\n\t},\n\n\tdistanceRGBA: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.displacementmap,\n\t\t\t{\n\t\t\t\treferencePosition: { value: /*@__PURE__*/ new Vector3() },\n\t\t\t\tnearDistance: { value: 1 },\n\t\t\t\tfarDistance: { value: 1000 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.distanceRGBA_vert,\n\t\tfragmentShader: ShaderChunk.distanceRGBA_frag\n\n\t},\n\n\tshadow: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.lights,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tcolor: { value: /*@__PURE__*/ new Color( 0x00000 ) },\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t},\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.shadow_vert,\n\t\tfragmentShader: ShaderChunk.shadow_frag\n\n\t}\n\n};\n\nShaderLib.physical = {\n\n\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\tShaderLib.standard.uniforms,\n\t\t{\n\t\t\tclearcoat: { value: 0 },\n\t\t\tclearcoatMap: { value: null },\n\t\t\tclearcoatRoughness: { value: 0 },\n\t\t\tclearcoatRoughnessMap: { value: null },\n\t\t\tclearcoatNormalScale: { value: /*@__PURE__*/ new Vector2( 1, 1 ) },\n\t\t\tclearcoatNormalMap: { value: null },\n\t\t\tiridescence: { value: 0 },\n\t\t\tiridescenceMap: { value: null },\n\t\t\tiridescenceIOR: { value: 1.3 },\n\t\t\tiridescenceThicknessMinimum: { value: 100 },\n\t\t\tiridescenceThicknessMaximum: { value: 400 },\n\t\t\tiridescenceThicknessMap: { value: null },\n\t\t\tsheen: { value: 0 },\n\t\t\tsheenColor: { value: /*@__PURE__*/ new Color( 0x000000 ) },\n\t\t\tsheenColorMap: { value: null },\n\t\t\tsheenRoughness: { value: 1 },\n\t\t\tsheenRoughnessMap: { value: null },\n\t\t\ttransmission: { value: 0 },\n\t\t\ttransmissionMap: { value: null },\n\t\t\ttransmissionSamplerSize: { value: /*@__PURE__*/ new Vector2() },\n\t\t\ttransmissionSamplerMap: { value: null },\n\t\t\tthickness: { value: 0 },\n\t\t\tthicknessMap: { value: null },\n\t\t\tattenuationDistance: { value: 0 },\n\t\t\tattenuationColor: { value: /*@__PURE__*/ new Color( 0x000000 ) },\n\t\t\tspecularIntensity: { value: 1 },\n\t\t\tspecularIntensityMap: { value: null },\n\t\t\tspecularColor: { value: /*@__PURE__*/ new Color( 1, 1, 1 ) },\n\t\t\tspecularColorMap: { value: null },\n\t\t}\n\t] ),\n\n\tvertexShader: ShaderChunk.meshphysical_vert,\n\tfragmentShader: ShaderChunk.meshphysical_frag\n\n};\n\nfunction WebGLBackground( renderer, cubemaps, state, objects, alpha, premultipliedAlpha ) {\n\n\tconst clearColor = new Color( 0x000000 );\n\tlet clearAlpha = alpha === true ? 0 : 1;\n\n\tlet planeMesh;\n\tlet boxMesh;\n\n\tlet currentBackground = null;\n\tlet currentBackgroundVersion = 0;\n\tlet currentTonemapping = null;\n\n\tfunction render( renderList, scene ) {\n\n\t\tlet forceClear = false;\n\t\tlet background = scene.isScene === true ? scene.background : null;\n\n\t\tif ( background && background.isTexture ) {\n\n\t\t\tbackground = cubemaps.get( background );\n\n\t\t}\n\n\t\t// Ignore background in AR\n\t\t// TODO: Reconsider this.\n\n\t\tconst xr = renderer.xr;\n\t\tconst session = xr.getSession && xr.getSession();\n\n\t\tif ( session && session.environmentBlendMode === 'additive' ) {\n\n\t\t\tbackground = null;\n\n\t\t}\n\n\t\tif ( background === null ) {\n\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t} else if ( background && background.isColor ) {\n\n\t\t\tsetClear( background, 1 );\n\t\t\tforceClear = true;\n\n\t\t}\n\n\t\tif ( renderer.autoClear || forceClear ) {\n\n\t\t\trenderer.clear( renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil );\n\n\t\t}\n\n\t\tif ( background && ( background.isCubeTexture || background.mapping === CubeUVReflectionMapping ) ) {\n\n\t\t\tif ( boxMesh === undefined ) {\n\n\t\t\t\tboxMesh = new Mesh(\n\t\t\t\t\tnew BoxGeometry( 1, 1, 1 ),\n\t\t\t\t\tnew ShaderMaterial( {\n\t\t\t\t\t\tname: 'BackgroundCubeMaterial',\n\t\t\t\t\t\tuniforms: cloneUniforms( ShaderLib.cube.uniforms ),\n\t\t\t\t\t\tvertexShader: ShaderLib.cube.vertexShader,\n\t\t\t\t\t\tfragmentShader: ShaderLib.cube.fragmentShader,\n\t\t\t\t\t\tside: BackSide,\n\t\t\t\t\t\tdepthTest: false,\n\t\t\t\t\t\tdepthWrite: false,\n\t\t\t\t\t\tfog: false\n\t\t\t\t\t} )\n\t\t\t\t);\n\n\t\t\t\tboxMesh.geometry.deleteAttribute( 'normal' );\n\t\t\t\tboxMesh.geometry.deleteAttribute( 'uv' );\n\n\t\t\t\tboxMesh.onBeforeRender = function ( renderer, scene, camera ) {\n\n\t\t\t\t\tthis.matrixWorld.copyPosition( camera.matrixWorld );\n\n\t\t\t\t};\n\n\t\t\t\t// enable code injection for non-built-in material\n\t\t\t\tObject.defineProperty( boxMesh.material, 'envMap', {\n\n\t\t\t\t\tget: function () {\n\n\t\t\t\t\t\treturn this.uniforms.envMap.value;\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t\tobjects.update( boxMesh );\n\n\t\t\t}\n\n\t\t\tboxMesh.material.uniforms.envMap.value = background;\n\t\t\tboxMesh.material.uniforms.flipEnvMap.value = ( background.isCubeTexture && background.isRenderTargetTexture === false ) ? - 1 : 1;\n\n\t\t\tif ( currentBackground !== background ||\n\t\t\t\tcurrentBackgroundVersion !== background.version ||\n\t\t\t\tcurrentTonemapping !== renderer.toneMapping ) {\n\n\t\t\t\tboxMesh.material.needsUpdate = true;\n\n\t\t\t\tcurrentBackground = background;\n\t\t\t\tcurrentBackgroundVersion = background.version;\n\t\t\t\tcurrentTonemapping = renderer.toneMapping;\n\n\t\t\t}\n\n\t\t\tboxMesh.layers.enableAll();\n\n\t\t\t// push to the pre-sorted opaque render list\n\t\t\trenderList.unshift( boxMesh, boxMesh.geometry, boxMesh.material, 0, 0, null );\n\n\t\t} else if ( background && background.isTexture ) {\n\n\t\t\tif ( planeMesh === undefined ) {\n\n\t\t\t\tplaneMesh = new Mesh(\n\t\t\t\t\tnew PlaneGeometry( 2, 2 ),\n\t\t\t\t\tnew ShaderMaterial( {\n\t\t\t\t\t\tname: 'BackgroundMaterial',\n\t\t\t\t\t\tuniforms: cloneUniforms( ShaderLib.background.uniforms ),\n\t\t\t\t\t\tvertexShader: ShaderLib.background.vertexShader,\n\t\t\t\t\t\tfragmentShader: ShaderLib.background.fragmentShader,\n\t\t\t\t\t\tside: FrontSide,\n\t\t\t\t\t\tdepthTest: false,\n\t\t\t\t\t\tdepthWrite: false,\n\t\t\t\t\t\tfog: false\n\t\t\t\t\t} )\n\t\t\t\t);\n\n\t\t\t\tplaneMesh.geometry.deleteAttribute( 'normal' );\n\n\t\t\t\t// enable code injection for non-built-in material\n\t\t\t\tObject.defineProperty( planeMesh.material, 'map', {\n\n\t\t\t\t\tget: function () {\n\n\t\t\t\t\t\treturn this.uniforms.t2D.value;\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t\tobjects.update( planeMesh );\n\n\t\t\t}\n\n\t\t\tplaneMesh.material.uniforms.t2D.value = background;\n\n\t\t\tif ( background.matrixAutoUpdate === true ) {\n\n\t\t\t\tbackground.updateMatrix();\n\n\t\t\t}\n\n\t\t\tplaneMesh.material.uniforms.uvTransform.value.copy( background.matrix );\n\n\t\t\tif ( currentBackground !== background ||\n\t\t\t\tcurrentBackgroundVersion !== background.version ||\n\t\t\t\tcurrentTonemapping !== renderer.toneMapping ) {\n\n\t\t\t\tplaneMesh.material.needsUpdate = true;\n\n\t\t\t\tcurrentBackground = background;\n\t\t\t\tcurrentBackgroundVersion = background.version;\n\t\t\t\tcurrentTonemapping = renderer.toneMapping;\n\n\t\t\t}\n\n\t\t\tplaneMesh.layers.enableAll();\n\n\t\t\t// push to the pre-sorted opaque render list\n\t\t\trenderList.unshift( planeMesh, planeMesh.geometry, planeMesh.material, 0, 0, null );\n\n\t\t}\n\n\t}\n\n\tfunction setClear( color, alpha ) {\n\n\t\tstate.buffers.color.setClear( color.r, color.g, color.b, alpha, premultipliedAlpha );\n\n\t}\n\n\treturn {\n\n\t\tgetClearColor: function () {\n\n\t\t\treturn clearColor;\n\n\t\t},\n\t\tsetClearColor: function ( color, alpha = 1 ) {\n\n\t\t\tclearColor.set( color );\n\t\t\tclearAlpha = alpha;\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t},\n\t\tgetClearAlpha: function () {\n\n\t\t\treturn clearAlpha;\n\n\t\t},\n\t\tsetClearAlpha: function ( alpha ) {\n\n\t\t\tclearAlpha = alpha;\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t},\n\t\trender: render\n\n\t};\n\n}\n\nfunction WebGLBindingStates( gl, extensions, attributes, capabilities ) {\n\n\tconst maxVertexAttributes = gl.getParameter( 34921 );\n\n\tconst extension = capabilities.isWebGL2 ? null : extensions.get( 'OES_vertex_array_object' );\n\tconst vaoAvailable = capabilities.isWebGL2 || extension !== null;\n\n\tconst bindingStates = {};\n\n\tconst defaultState = createBindingState( null );\n\tlet currentState = defaultState;\n\tlet forceUpdate = false;\n\n\tfunction setup( object, material, program, geometry, index ) {\n\n\t\tlet updateBuffers = false;\n\n\t\tif ( vaoAvailable ) {\n\n\t\t\tconst state = getBindingState( geometry, program, material );\n\n\t\t\tif ( currentState !== state ) {\n\n\t\t\t\tcurrentState = state;\n\t\t\t\tbindVertexArrayObject( currentState.object );\n\n\t\t\t}\n\n\t\t\tupdateBuffers = needsUpdate( object, geometry, program, index );\n\n\t\t\tif ( updateBuffers ) saveCache( object, geometry, program, index );\n\n\t\t} else {\n\n\t\t\tconst wireframe = ( material.wireframe === true );\n\n\t\t\tif ( currentState.geometry !== geometry.id ||\n\t\t\t\tcurrentState.program !== program.id ||\n\t\t\t\tcurrentState.wireframe !== wireframe ) {\n\n\t\t\t\tcurrentState.geometry = geometry.id;\n\t\t\t\tcurrentState.program = program.id;\n\t\t\t\tcurrentState.wireframe = wireframe;\n\n\t\t\t\tupdateBuffers = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( index !== null ) {\n\n\t\t\tattributes.update( index, 34963 );\n\n\t\t}\n\n\t\tif ( updateBuffers || forceUpdate ) {\n\n\t\t\tforceUpdate = false;\n\n\t\t\tsetupVertexAttributes( object, material, program, geometry );\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tgl.bindBuffer( 34963, attributes.get( index ).buffer );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction createVertexArrayObject() {\n\n\t\tif ( capabilities.isWebGL2 ) return gl.createVertexArray();\n\n\t\treturn extension.createVertexArrayOES();\n\n\t}\n\n\tfunction bindVertexArrayObject( vao ) {\n\n\t\tif ( capabilities.isWebGL2 ) return gl.bindVertexArray( vao );\n\n\t\treturn extension.bindVertexArrayOES( vao );\n\n\t}\n\n\tfunction deleteVertexArrayObject( vao ) {\n\n\t\tif ( capabilities.isWebGL2 ) return gl.deleteVertexArray( vao );\n\n\t\treturn extension.deleteVertexArrayOES( vao );\n\n\t}\n\n\tfunction getBindingState( geometry, program, material ) {\n\n\t\tconst wireframe = ( material.wireframe === true );\n\n\t\tlet programMap = bindingStates[ geometry.id ];\n\n\t\tif ( programMap === undefined ) {\n\n\t\t\tprogramMap = {};\n\t\t\tbindingStates[ geometry.id ] = programMap;\n\n\t\t}\n\n\t\tlet stateMap = programMap[ program.id ];\n\n\t\tif ( stateMap === undefined ) {\n\n\t\t\tstateMap = {};\n\t\t\tprogramMap[ program.id ] = stateMap;\n\n\t\t}\n\n\t\tlet state = stateMap[ wireframe ];\n\n\t\tif ( state === undefined ) {\n\n\t\t\tstate = createBindingState( createVertexArrayObject() );\n\t\t\tstateMap[ wireframe ] = state;\n\n\t\t}\n\n\t\treturn state;\n\n\t}\n\n\tfunction createBindingState( vao ) {\n\n\t\tconst newAttributes = [];\n\t\tconst enabledAttributes = [];\n\t\tconst attributeDivisors = [];\n\n\t\tfor ( let i = 0; i < maxVertexAttributes; i ++ ) {\n\n\t\t\tnewAttributes[ i ] = 0;\n\t\t\tenabledAttributes[ i ] = 0;\n\t\t\tattributeDivisors[ i ] = 0;\n\n\t\t}\n\n\t\treturn {\n\n\t\t\t// for backward compatibility on non-VAO support browser\n\t\t\tgeometry: null,\n\t\t\tprogram: null,\n\t\t\twireframe: false,\n\n\t\t\tnewAttributes: newAttributes,\n\t\t\tenabledAttributes: enabledAttributes,\n\t\t\tattributeDivisors: attributeDivisors,\n\t\t\tobject: vao,\n\t\t\tattributes: {},\n\t\t\tindex: null\n\n\t\t};\n\n\t}\n\n\tfunction needsUpdate( object, geometry, program, index ) {\n\n\t\tconst cachedAttributes = currentState.attributes;\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\tlet attributesNum = 0;\n\n\t\tconst programAttributes = program.getAttributes();\n\n\t\tfor ( const name in programAttributes ) {\n\n\t\t\tconst programAttribute = programAttributes[ name ];\n\n\t\t\tif ( programAttribute.location >= 0 ) {\n\n\t\t\t\tconst cachedAttribute = cachedAttributes[ name ];\n\t\t\t\tlet geometryAttribute = geometryAttributes[ name ];\n\n\t\t\t\tif ( geometryAttribute === undefined ) {\n\n\t\t\t\t\tif ( name === 'instanceMatrix' && object.instanceMatrix ) geometryAttribute = object.instanceMatrix;\n\t\t\t\t\tif ( name === 'instanceColor' && object.instanceColor ) geometryAttribute = object.instanceColor;\n\n\t\t\t\t}\n\n\t\t\t\tif ( cachedAttribute === undefined ) return true;\n\n\t\t\t\tif ( cachedAttribute.attribute !== geometryAttribute ) return true;\n\n\t\t\t\tif ( geometryAttribute && cachedAttribute.data !== geometryAttribute.data ) return true;\n\n\t\t\t\tattributesNum ++;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( currentState.attributesNum !== attributesNum ) return true;\n\n\t\tif ( currentState.index !== index ) return true;\n\n\t\treturn false;\n\n\t}\n\n\tfunction saveCache( object, geometry, program, index ) {\n\n\t\tconst cache = {};\n\t\tconst attributes = geometry.attributes;\n\t\tlet attributesNum = 0;\n\n\t\tconst programAttributes = program.getAttributes();\n\n\t\tfor ( const name in programAttributes ) {\n\n\t\t\tconst programAttribute = programAttributes[ name ];\n\n\t\t\tif ( programAttribute.location >= 0 ) {\n\n\t\t\t\tlet attribute = attributes[ name ];\n\n\t\t\t\tif ( attribute === undefined ) {\n\n\t\t\t\t\tif ( name === 'instanceMatrix' && object.instanceMatrix ) attribute = object.instanceMatrix;\n\t\t\t\t\tif ( name === 'instanceColor' && object.instanceColor ) attribute = object.instanceColor;\n\n\t\t\t\t}\n\n\t\t\t\tconst data = {};\n\t\t\t\tdata.attribute = attribute;\n\n\t\t\t\tif ( attribute && attribute.data ) {\n\n\t\t\t\t\tdata.data = attribute.data;\n\n\t\t\t\t}\n\n\t\t\t\tcache[ name ] = data;\n\n\t\t\t\tattributesNum ++;\n\n\t\t\t}\n\n\t\t}\n\n\t\tcurrentState.attributes = cache;\n\t\tcurrentState.attributesNum = attributesNum;\n\n\t\tcurrentState.index = index;\n\n\t}\n\n\tfunction initAttributes() {\n\n\t\tconst newAttributes = currentState.newAttributes;\n\n\t\tfor ( let i = 0, il = newAttributes.length; i < il; i ++ ) {\n\n\t\t\tnewAttributes[ i ] = 0;\n\n\t\t}\n\n\t}\n\n\tfunction enableAttribute( attribute ) {\n\n\t\tenableAttributeAndDivisor( attribute, 0 );\n\n\t}\n\n\tfunction enableAttributeAndDivisor( attribute, meshPerAttribute ) {\n\n\t\tconst newAttributes = currentState.newAttributes;\n\t\tconst enabledAttributes = currentState.enabledAttributes;\n\t\tconst attributeDivisors = currentState.attributeDivisors;\n\n\t\tnewAttributes[ attribute ] = 1;\n\n\t\tif ( enabledAttributes[ attribute ] === 0 ) {\n\n\t\t\tgl.enableVertexAttribArray( attribute );\n\t\t\tenabledAttributes[ attribute ] = 1;\n\n\t\t}\n\n\t\tif ( attributeDivisors[ attribute ] !== meshPerAttribute ) {\n\n\t\t\tconst extension = capabilities.isWebGL2 ? gl : extensions.get( 'ANGLE_instanced_arrays' );\n\n\t\t\textension[ capabilities.isWebGL2 ? 'vertexAttribDivisor' : 'vertexAttribDivisorANGLE' ]( attribute, meshPerAttribute );\n\t\t\tattributeDivisors[ attribute ] = meshPerAttribute;\n\n\t\t}\n\n\t}\n\n\tfunction disableUnusedAttributes() {\n\n\t\tconst newAttributes = currentState.newAttributes;\n\t\tconst enabledAttributes = currentState.enabledAttributes;\n\n\t\tfor ( let i = 0, il = enabledAttributes.length; i < il; i ++ ) {\n\n\t\t\tif ( enabledAttributes[ i ] !== newAttributes[ i ] ) {\n\n\t\t\t\tgl.disableVertexAttribArray( i );\n\t\t\t\tenabledAttributes[ i ] = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction vertexAttribPointer( index, size, type, normalized, stride, offset ) {\n\n\t\tif ( capabilities.isWebGL2 === true && ( type === 5124 || type === 5125 ) ) {\n\n\t\t\tgl.vertexAttribIPointer( index, size, type, stride, offset );\n\n\t\t} else {\n\n\t\t\tgl.vertexAttribPointer( index, size, type, normalized, stride, offset );\n\n\t\t}\n\n\t}\n\n\tfunction setupVertexAttributes( object, material, program, geometry ) {\n\n\t\tif ( capabilities.isWebGL2 === false && ( object.isInstancedMesh || geometry.isInstancedBufferGeometry ) ) {\n\n\t\t\tif ( extensions.get( 'ANGLE_instanced_arrays' ) === null ) return;\n\n\t\t}\n\n\t\tinitAttributes();\n\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\tconst programAttributes = program.getAttributes();\n\n\t\tconst materialDefaultAttributeValues = material.defaultAttributeValues;\n\n\t\tfor ( const name in programAttributes ) {\n\n\t\t\tconst programAttribute = programAttributes[ name ];\n\n\t\t\tif ( programAttribute.location >= 0 ) {\n\n\t\t\t\tlet geometryAttribute = geometryAttributes[ name ];\n\n\t\t\t\tif ( geometryAttribute === undefined ) {\n\n\t\t\t\t\tif ( name === 'instanceMatrix' && object.instanceMatrix ) geometryAttribute = object.instanceMatrix;\n\t\t\t\t\tif ( name === 'instanceColor' && object.instanceColor ) geometryAttribute = object.instanceColor;\n\n\t\t\t\t}\n\n\t\t\t\tif ( geometryAttribute !== undefined ) {\n\n\t\t\t\t\tconst normalized = geometryAttribute.normalized;\n\t\t\t\t\tconst size = geometryAttribute.itemSize;\n\n\t\t\t\t\tconst attribute = attributes.get( geometryAttribute );\n\n\t\t\t\t\t// TODO Attribute may not be available on context restore\n\n\t\t\t\t\tif ( attribute === undefined ) continue;\n\n\t\t\t\t\tconst buffer = attribute.buffer;\n\t\t\t\t\tconst type = attribute.type;\n\t\t\t\t\tconst bytesPerElement = attribute.bytesPerElement;\n\n\t\t\t\t\tif ( geometryAttribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\t\tconst data = geometryAttribute.data;\n\t\t\t\t\t\tconst stride = data.stride;\n\t\t\t\t\t\tconst offset = geometryAttribute.offset;\n\n\t\t\t\t\t\tif ( data.isInstancedInterleavedBuffer ) {\n\n\t\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\t\tenableAttributeAndDivisor( programAttribute.location + i, data.meshPerAttribute );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( object.isInstancedMesh !== true && geometry._maxInstanceCount === undefined ) {\n\n\t\t\t\t\t\t\t\tgeometry._maxInstanceCount = data.meshPerAttribute * data.count;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\t\tenableAttribute( programAttribute.location + i );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgl.bindBuffer( 34962, buffer );\n\n\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\tvertexAttribPointer(\n\t\t\t\t\t\t\t\tprogramAttribute.location + i,\n\t\t\t\t\t\t\t\tsize / programAttribute.locationSize,\n\t\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\t\tnormalized,\n\t\t\t\t\t\t\t\tstride * bytesPerElement,\n\t\t\t\t\t\t\t\t( offset + ( size / programAttribute.locationSize ) * i ) * bytesPerElement\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( geometryAttribute.isInstancedBufferAttribute ) {\n\n\t\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\t\tenableAttributeAndDivisor( programAttribute.location + i, geometryAttribute.meshPerAttribute );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( object.isInstancedMesh !== true && geometry._maxInstanceCount === undefined ) {\n\n\t\t\t\t\t\t\t\tgeometry._maxInstanceCount = geometryAttribute.meshPerAttribute * geometryAttribute.count;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\t\tenableAttribute( programAttribute.location + i );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgl.bindBuffer( 34962, buffer );\n\n\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\tvertexAttribPointer(\n\t\t\t\t\t\t\t\tprogramAttribute.location + i,\n\t\t\t\t\t\t\t\tsize / programAttribute.locationSize,\n\t\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\t\tnormalized,\n\t\t\t\t\t\t\t\tsize * bytesPerElement,\n\t\t\t\t\t\t\t\t( size / programAttribute.locationSize ) * i * bytesPerElement\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( materialDefaultAttributeValues !== undefined ) {\n\n\t\t\t\t\tconst value = materialDefaultAttributeValues[ name ];\n\n\t\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\t\tswitch ( value.length ) {\n\n\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\tgl.vertexAttrib2fv( programAttribute.location, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\tgl.vertexAttrib3fv( programAttribute.location, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 4:\n\t\t\t\t\t\t\t\tgl.vertexAttrib4fv( programAttribute.location, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tgl.vertexAttrib1fv( programAttribute.location, value );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tdisableUnusedAttributes();\n\n\t}\n\n\tfunction dispose() {\n\n\t\treset();\n\n\t\tfor ( const geometryId in bindingStates ) {\n\n\t\t\tconst programMap = bindingStates[ geometryId ];\n\n\t\t\tfor ( const programId in programMap ) {\n\n\t\t\t\tconst stateMap = programMap[ programId ];\n\n\t\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t\t}\n\n\t\t\t\tdelete programMap[ programId ];\n\n\t\t\t}\n\n\t\t\tdelete bindingStates[ geometryId ];\n\n\t\t}\n\n\t}\n\n\tfunction releaseStatesOfGeometry( geometry ) {\n\n\t\tif ( bindingStates[ geometry.id ] === undefined ) return;\n\n\t\tconst programMap = bindingStates[ geometry.id ];\n\n\t\tfor ( const programId in programMap ) {\n\n\t\t\tconst stateMap = programMap[ programId ];\n\n\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t}\n\n\t\t\tdelete programMap[ programId ];\n\n\t\t}\n\n\t\tdelete bindingStates[ geometry.id ];\n\n\t}\n\n\tfunction releaseStatesOfProgram( program ) {\n\n\t\tfor ( const geometryId in bindingStates ) {\n\n\t\t\tconst programMap = bindingStates[ geometryId ];\n\n\t\t\tif ( programMap[ program.id ] === undefined ) continue;\n\n\t\t\tconst stateMap = programMap[ program.id ];\n\n\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t}\n\n\t\t\tdelete programMap[ program.id ];\n\n\t\t}\n\n\t}\n\n\tfunction reset() {\n\n\t\tresetDefaultState();\n\t\tforceUpdate = true;\n\n\t\tif ( currentState === defaultState ) return;\n\n\t\tcurrentState = defaultState;\n\t\tbindVertexArrayObject( currentState.object );\n\n\t}\n\n\t// for backward-compatibility\n\n\tfunction resetDefaultState() {\n\n\t\tdefaultState.geometry = null;\n\t\tdefaultState.program = null;\n\t\tdefaultState.wireframe = false;\n\n\t}\n\n\treturn {\n\n\t\tsetup: setup,\n\t\treset: reset,\n\t\tresetDefaultState: resetDefaultState,\n\t\tdispose: dispose,\n\t\treleaseStatesOfGeometry: releaseStatesOfGeometry,\n\t\treleaseStatesOfProgram: releaseStatesOfProgram,\n\n\t\tinitAttributes: initAttributes,\n\t\tenableAttribute: enableAttribute,\n\t\tdisableUnusedAttributes: disableUnusedAttributes\n\n\t};\n\n}\n\nfunction WebGLBufferRenderer( gl, extensions, info, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tlet mode;\n\n\tfunction setMode( value ) {\n\n\t\tmode = value;\n\n\t}\n\n\tfunction render( start, count ) {\n\n\t\tgl.drawArrays( mode, start, count );\n\n\t\tinfo.update( count, mode, 1 );\n\n\t}\n\n\tfunction renderInstances( start, count, primcount ) {\n\n\t\tif ( primcount === 0 ) return;\n\n\t\tlet extension, methodName;\n\n\t\tif ( isWebGL2 ) {\n\n\t\t\textension = gl;\n\t\t\tmethodName = 'drawArraysInstanced';\n\n\t\t} else {\n\n\t\t\textension = extensions.get( 'ANGLE_instanced_arrays' );\n\t\t\tmethodName = 'drawArraysInstancedANGLE';\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\textension[ methodName ]( mode, start, count, primcount );\n\n\t\tinfo.update( count, mode, primcount );\n\n\t}\n\n\t//\n\n\tthis.setMode = setMode;\n\tthis.render = render;\n\tthis.renderInstances = renderInstances;\n\n}\n\nfunction WebGLCapabilities( gl, extensions, parameters ) {\n\n\tlet maxAnisotropy;\n\n\tfunction getMaxAnisotropy() {\n\n\t\tif ( maxAnisotropy !== undefined ) return maxAnisotropy;\n\n\t\tif ( extensions.has( 'EXT_texture_filter_anisotropic' ) === true ) {\n\n\t\t\tconst extension = extensions.get( 'EXT_texture_filter_anisotropic' );\n\n\t\t\tmaxAnisotropy = gl.getParameter( extension.MAX_TEXTURE_MAX_ANISOTROPY_EXT );\n\n\t\t} else {\n\n\t\t\tmaxAnisotropy = 0;\n\n\t\t}\n\n\t\treturn maxAnisotropy;\n\n\t}\n\n\tfunction getMaxPrecision( precision ) {\n\n\t\tif ( precision === 'highp' ) {\n\n\t\t\tif ( gl.getShaderPrecisionFormat( 35633, 36338 ).precision > 0 &&\n\t\t\t\tgl.getShaderPrecisionFormat( 35632, 36338 ).precision > 0 ) {\n\n\t\t\t\treturn 'highp';\n\n\t\t\t}\n\n\t\t\tprecision = 'mediump';\n\n\t\t}\n\n\t\tif ( precision === 'mediump' ) {\n\n\t\t\tif ( gl.getShaderPrecisionFormat( 35633, 36337 ).precision > 0 &&\n\t\t\t\tgl.getShaderPrecisionFormat( 35632, 36337 ).precision > 0 ) {\n\n\t\t\t\treturn 'mediump';\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn 'lowp';\n\n\t}\n\n\tconst isWebGL2 = ( typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext ) ||\n\t\t( typeof WebGL2ComputeRenderingContext !== 'undefined' && gl instanceof WebGL2ComputeRenderingContext );\n\n\tlet precision = parameters.precision !== undefined ? parameters.precision : 'highp';\n\tconst maxPrecision = getMaxPrecision( precision );\n\n\tif ( maxPrecision !== precision ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer:', precision, 'not supported, using', maxPrecision, 'instead.' );\n\t\tprecision = maxPrecision;\n\n\t}\n\n\tconst drawBuffers = isWebGL2 || extensions.has( 'WEBGL_draw_buffers' );\n\n\tconst logarithmicDepthBuffer = parameters.logarithmicDepthBuffer === true;\n\n\tconst maxTextures = gl.getParameter( 34930 );\n\tconst maxVertexTextures = gl.getParameter( 35660 );\n\tconst maxTextureSize = gl.getParameter( 3379 );\n\tconst maxCubemapSize = gl.getParameter( 34076 );\n\n\tconst maxAttributes = gl.getParameter( 34921 );\n\tconst maxVertexUniforms = gl.getParameter( 36347 );\n\tconst maxVaryings = gl.getParameter( 36348 );\n\tconst maxFragmentUniforms = gl.getParameter( 36349 );\n\n\tconst vertexTextures = maxVertexTextures > 0;\n\tconst floatFragmentTextures = isWebGL2 || extensions.has( 'OES_texture_float' );\n\tconst floatVertexTextures = vertexTextures && floatFragmentTextures;\n\n\tconst maxSamples = isWebGL2 ? gl.getParameter( 36183 ) : 0;\n\n\treturn {\n\n\t\tisWebGL2: isWebGL2,\n\n\t\tdrawBuffers: drawBuffers,\n\n\t\tgetMaxAnisotropy: getMaxAnisotropy,\n\t\tgetMaxPrecision: getMaxPrecision,\n\n\t\tprecision: precision,\n\t\tlogarithmicDepthBuffer: logarithmicDepthBuffer,\n\n\t\tmaxTextures: maxTextures,\n\t\tmaxVertexTextures: maxVertexTextures,\n\t\tmaxTextureSize: maxTextureSize,\n\t\tmaxCubemapSize: maxCubemapSize,\n\n\t\tmaxAttributes: maxAttributes,\n\t\tmaxVertexUniforms: maxVertexUniforms,\n\t\tmaxVaryings: maxVaryings,\n\t\tmaxFragmentUniforms: maxFragmentUniforms,\n\n\t\tvertexTextures: vertexTextures,\n\t\tfloatFragmentTextures: floatFragmentTextures,\n\t\tfloatVertexTextures: floatVertexTextures,\n\n\t\tmaxSamples: maxSamples\n\n\t};\n\n}\n\nfunction WebGLClipping( properties ) {\n\n\tconst scope = this;\n\n\tlet globalState = null,\n\t\tnumGlobalPlanes = 0,\n\t\tlocalClippingEnabled = false,\n\t\trenderingShadows = false;\n\n\tconst plane = new Plane(),\n\t\tviewNormalMatrix = new Matrix3(),\n\n\t\tuniform = { value: null, needsUpdate: false };\n\n\tthis.uniform = uniform;\n\tthis.numPlanes = 0;\n\tthis.numIntersection = 0;\n\n\tthis.init = function ( planes, enableLocalClipping, camera ) {\n\n\t\tconst enabled =\n\t\t\tplanes.length !== 0 ||\n\t\t\tenableLocalClipping ||\n\t\t\t// enable state of previous frame - the clipping code has to\n\t\t\t// run another frame in order to reset the state:\n\t\t\tnumGlobalPlanes !== 0 ||\n\t\t\tlocalClippingEnabled;\n\n\t\tlocalClippingEnabled = enableLocalClipping;\n\n\t\tglobalState = projectPlanes( planes, camera, 0 );\n\t\tnumGlobalPlanes = planes.length;\n\n\t\treturn enabled;\n\n\t};\n\n\tthis.beginShadows = function () {\n\n\t\trenderingShadows = true;\n\t\tprojectPlanes( null );\n\n\t};\n\n\tthis.endShadows = function () {\n\n\t\trenderingShadows = false;\n\t\tresetGlobalState();\n\n\t};\n\n\tthis.setState = function ( material, camera, useCache ) {\n\n\t\tconst planes = material.clippingPlanes,\n\t\t\tclipIntersection = material.clipIntersection,\n\t\t\tclipShadows = material.clipShadows;\n\n\t\tconst materialProperties = properties.get( material );\n\n\t\tif ( ! localClippingEnabled || planes === null || planes.length === 0 || renderingShadows && ! clipShadows ) {\n\n\t\t\t// there's no local clipping\n\n\t\t\tif ( renderingShadows ) {\n\n\t\t\t\t// there's no global clipping\n\n\t\t\t\tprojectPlanes( null );\n\n\t\t\t} else {\n\n\t\t\t\tresetGlobalState();\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst nGlobal = renderingShadows ? 0 : numGlobalPlanes,\n\t\t\t\tlGlobal = nGlobal * 4;\n\n\t\t\tlet dstArray = materialProperties.clippingState || null;\n\n\t\t\tuniform.value = dstArray; // ensure unique state\n\n\t\t\tdstArray = projectPlanes( planes, camera, lGlobal, useCache );\n\n\t\t\tfor ( let i = 0; i !== lGlobal; ++ i ) {\n\n\t\t\t\tdstArray[ i ] = globalState[ i ];\n\n\t\t\t}\n\n\t\t\tmaterialProperties.clippingState = dstArray;\n\t\t\tthis.numIntersection = clipIntersection ? this.numPlanes : 0;\n\t\t\tthis.numPlanes += nGlobal;\n\n\t\t}\n\n\n\t};\n\n\tfunction resetGlobalState() {\n\n\t\tif ( uniform.value !== globalState ) {\n\n\t\t\tuniform.value = globalState;\n\t\t\tuniform.needsUpdate = numGlobalPlanes > 0;\n\n\t\t}\n\n\t\tscope.numPlanes = numGlobalPlanes;\n\t\tscope.numIntersection = 0;\n\n\t}\n\n\tfunction projectPlanes( planes, camera, dstOffset, skipTransform ) {\n\n\t\tconst nPlanes = planes !== null ? planes.length : 0;\n\t\tlet dstArray = null;\n\n\t\tif ( nPlanes !== 0 ) {\n\n\t\t\tdstArray = uniform.value;\n\n\t\t\tif ( skipTransform !== true || dstArray === null ) {\n\n\t\t\t\tconst flatSize = dstOffset + nPlanes * 4,\n\t\t\t\t\tviewMatrix = camera.matrixWorldInverse;\n\n\t\t\t\tviewNormalMatrix.getNormalMatrix( viewMatrix );\n\n\t\t\t\tif ( dstArray === null || dstArray.length < flatSize ) {\n\n\t\t\t\t\tdstArray = new Float32Array( flatSize );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0, i4 = dstOffset; i !== nPlanes; ++ i, i4 += 4 ) {\n\n\t\t\t\t\tplane.copy( planes[ i ] ).applyMatrix4( viewMatrix, viewNormalMatrix );\n\n\t\t\t\t\tplane.normal.toArray( dstArray, i4 );\n\t\t\t\t\tdstArray[ i4 + 3 ] = plane.constant;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tuniform.value = dstArray;\n\t\t\tuniform.needsUpdate = true;\n\n\t\t}\n\n\t\tscope.numPlanes = nPlanes;\n\t\tscope.numIntersection = 0;\n\n\t\treturn dstArray;\n\n\t}\n\n}\n\nfunction WebGLCubeMaps( renderer ) {\n\n\tlet cubemaps = new WeakMap();\n\n\tfunction mapTextureMapping( texture, mapping ) {\n\n\t\tif ( mapping === EquirectangularReflectionMapping ) {\n\n\t\t\ttexture.mapping = CubeReflectionMapping;\n\n\t\t} else if ( mapping === EquirectangularRefractionMapping ) {\n\n\t\t\ttexture.mapping = CubeRefractionMapping;\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tfunction get( texture ) {\n\n\t\tif ( texture && texture.isTexture && texture.isRenderTargetTexture === false ) {\n\n\t\t\tconst mapping = texture.mapping;\n\n\t\t\tif ( mapping === EquirectangularReflectionMapping || mapping === EquirectangularRefractionMapping ) {\n\n\t\t\t\tif ( cubemaps.has( texture ) ) {\n\n\t\t\t\t\tconst cubemap = cubemaps.get( texture ).texture;\n\t\t\t\t\treturn mapTextureMapping( cubemap, texture.mapping );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconst image = texture.image;\n\n\t\t\t\t\tif ( image && image.height > 0 ) {\n\n\t\t\t\t\t\tconst renderTarget = new WebGLCubeRenderTarget( image.height / 2 );\n\t\t\t\t\t\trenderTarget.fromEquirectangularTexture( renderer, texture );\n\t\t\t\t\t\tcubemaps.set( texture, renderTarget );\n\n\t\t\t\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t\t\t\t\treturn mapTextureMapping( renderTarget.texture, texture.mapping );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// image not yet ready. try the conversion next frame\n\n\t\t\t\t\t\treturn null;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tfunction onTextureDispose( event ) {\n\n\t\tconst texture = event.target;\n\n\t\ttexture.removeEventListener( 'dispose', onTextureDispose );\n\n\t\tconst cubemap = cubemaps.get( texture );\n\n\t\tif ( cubemap !== undefined ) {\n\n\t\t\tcubemaps.delete( texture );\n\t\t\tcubemap.dispose();\n\n\t\t}\n\n\t}\n\n\tfunction dispose() {\n\n\t\tcubemaps = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\nclass OrthographicCamera extends Camera {\n\n\tconstructor( left = - 1, right = 1, top = 1, bottom = - 1, near = 0.1, far = 2000 ) {\n\n\t\tsuper();\n\n\t\tthis.isOrthographicCamera = true;\n\n\t\tthis.type = 'OrthographicCamera';\n\n\t\tthis.zoom = 1;\n\t\tthis.view = null;\n\n\t\tthis.left = left;\n\t\tthis.right = right;\n\t\tthis.top = top;\n\t\tthis.bottom = bottom;\n\n\t\tthis.near = near;\n\t\tthis.far = far;\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.left = source.left;\n\t\tthis.right = source.right;\n\t\tthis.top = source.top;\n\t\tthis.bottom = source.bottom;\n\t\tthis.near = source.near;\n\t\tthis.far = source.far;\n\n\t\tthis.zoom = source.zoom;\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\treturn this;\n\n\t}\n\n\tsetViewOffset( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\tif ( this.view === null ) {\n\n\t\t\tthis.view = {\n\t\t\t\tenabled: true,\n\t\t\t\tfullWidth: 1,\n\t\t\t\tfullHeight: 1,\n\t\t\t\toffsetX: 0,\n\t\t\t\toffsetY: 0,\n\t\t\t\twidth: 1,\n\t\t\t\theight: 1\n\t\t\t};\n\n\t\t}\n\n\t\tthis.view.enabled = true;\n\t\tthis.view.fullWidth = fullWidth;\n\t\tthis.view.fullHeight = fullHeight;\n\t\tthis.view.offsetX = x;\n\t\tthis.view.offsetY = y;\n\t\tthis.view.width = width;\n\t\tthis.view.height = height;\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tclearViewOffset() {\n\n\t\tif ( this.view !== null ) {\n\n\t\t\tthis.view.enabled = false;\n\n\t\t}\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tupdateProjectionMatrix() {\n\n\t\tconst dx = ( this.right - this.left ) / ( 2 * this.zoom );\n\t\tconst dy = ( this.top - this.bottom ) / ( 2 * this.zoom );\n\t\tconst cx = ( this.right + this.left ) / 2;\n\t\tconst cy = ( this.top + this.bottom ) / 2;\n\n\t\tlet left = cx - dx;\n\t\tlet right = cx + dx;\n\t\tlet top = cy + dy;\n\t\tlet bottom = cy - dy;\n\n\t\tif ( this.view !== null && this.view.enabled ) {\n\n\t\t\tconst scaleW = ( this.right - this.left ) / this.view.fullWidth / this.zoom;\n\t\t\tconst scaleH = ( this.top - this.bottom ) / this.view.fullHeight / this.zoom;\n\n\t\t\tleft += scaleW * this.view.offsetX;\n\t\t\tright = left + scaleW * this.view.width;\n\t\t\ttop -= scaleH * this.view.offsetY;\n\t\t\tbottom = top - scaleH * this.view.height;\n\n\t\t}\n\n\t\tthis.projectionMatrix.makeOrthographic( left, right, top, bottom, this.near, this.far );\n\n\t\tthis.projectionMatrixInverse.copy( this.projectionMatrix ).invert();\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.zoom = this.zoom;\n\t\tdata.object.left = this.left;\n\t\tdata.object.right = this.right;\n\t\tdata.object.top = this.top;\n\t\tdata.object.bottom = this.bottom;\n\t\tdata.object.near = this.near;\n\t\tdata.object.far = this.far;\n\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\treturn data;\n\n\t}\n\n}\n\nconst LOD_MIN = 4;\n\n// The standard deviations (radians) associated with the extra mips. These are\n// chosen to approximate a Trowbridge-Reitz distribution function times the\n// geometric shadowing function. These sigma values squared must match the\n// variance #defines in cube_uv_reflection_fragment.glsl.js.\nconst EXTRA_LOD_SIGMA = [ 0.125, 0.215, 0.35, 0.446, 0.526, 0.582 ];\n\n// The maximum length of the blur for loop. Smaller sigmas will use fewer\n// samples and exit early, but not recompile the shader.\nconst MAX_SAMPLES = 20;\n\nconst _flatCamera = /*@__PURE__*/ new OrthographicCamera();\nconst _clearColor = /*@__PURE__*/ new Color();\nlet _oldTarget = null;\n\n// Golden Ratio\nconst PHI = ( 1 + Math.sqrt( 5 ) ) / 2;\nconst INV_PHI = 1 / PHI;\n\n// Vertices of a dodecahedron (except the opposites, which represent the\n// same axis), used as axis directions evenly spread on a sphere.\nconst _axisDirections = [\n\t/*@__PURE__*/ new Vector3( 1, 1, 1 ),\n\t/*@__PURE__*/ new Vector3( - 1, 1, 1 ),\n\t/*@__PURE__*/ new Vector3( 1, 1, - 1 ),\n\t/*@__PURE__*/ new Vector3( - 1, 1, - 1 ),\n\t/*@__PURE__*/ new Vector3( 0, PHI, INV_PHI ),\n\t/*@__PURE__*/ new Vector3( 0, PHI, - INV_PHI ),\n\t/*@__PURE__*/ new Vector3( INV_PHI, 0, PHI ),\n\t/*@__PURE__*/ new Vector3( - INV_PHI, 0, PHI ),\n\t/*@__PURE__*/ new Vector3( PHI, INV_PHI, 0 ),\n\t/*@__PURE__*/ new Vector3( - PHI, INV_PHI, 0 ) ];\n\n/**\n * This class generates a Prefiltered, Mipmapped Radiance Environment Map\n * (PMREM) from a cubeMap environment texture. This allows different levels of\n * blur to be quickly accessed based on material roughness. It is packed into a\n * special CubeUV format that allows us to perform custom interpolation so that\n * we can support nonlinear formats such as RGBE. Unlike a traditional mipmap\n * chain, it only goes down to the LOD_MIN level (above), and then creates extra\n * even more filtered 'mips' at the same LOD_MIN resolution, associated with\n * higher roughness levels. In this way we maintain resolution to smoothly\n * interpolate diffuse lighting while limiting sampling computation.\n *\n * Paper: Fast, Accurate Image-Based Lighting\n * https://drive.google.com/file/d/15y8r_UpKlU9SvV4ILb0C3qCPecS8pvLz/view\n*/\n\nclass PMREMGenerator {\n\n\tconstructor( renderer ) {\n\n\t\tthis._renderer = renderer;\n\t\tthis._pingPongRenderTarget = null;\n\n\t\tthis._lodMax = 0;\n\t\tthis._cubeSize = 0;\n\t\tthis._lodPlanes = [];\n\t\tthis._sizeLods = [];\n\t\tthis._sigmas = [];\n\n\t\tthis._blurMaterial = null;\n\t\tthis._cubemapMaterial = null;\n\t\tthis._equirectMaterial = null;\n\n\t\tthis._compileMaterial( this._blurMaterial );\n\n\t}\n\n\t/**\n\t * Generates a PMREM from a supplied Scene, which can be faster than using an\n\t * image if networking bandwidth is low. Optional sigma specifies a blur radius\n\t * in radians to be applied to the scene before PMREM generation. Optional near\n\t * and far planes ensure the scene is rendered in its entirety (the cubeCamera\n\t * is placed at the origin).\n\t */\n\tfromScene( scene, sigma = 0, near = 0.1, far = 100 ) {\n\n\t\t_oldTarget = this._renderer.getRenderTarget();\n\n\t\tthis._setSize( 256 );\n\n\t\tconst cubeUVRenderTarget = this._allocateTargets();\n\t\tcubeUVRenderTarget.depthBuffer = true;\n\n\t\tthis._sceneToCubeUV( scene, near, far, cubeUVRenderTarget );\n\n\t\tif ( sigma > 0 ) {\n\n\t\t\tthis._blur( cubeUVRenderTarget, 0, 0, sigma );\n\n\t\t}\n\n\t\tthis._applyPMREM( cubeUVRenderTarget );\n\t\tthis._cleanup( cubeUVRenderTarget );\n\n\t\treturn cubeUVRenderTarget;\n\n\t}\n\n\t/**\n\t * Generates a PMREM from an equirectangular texture, which can be either LDR\n\t * or HDR. The ideal input image size is 1k (1024 x 512),\n\t * as this matches best with the 256 x 256 cubemap output.\n\t */\n\tfromEquirectangular( equirectangular, renderTarget = null ) {\n\n\t\treturn this._fromTexture( equirectangular, renderTarget );\n\n\t}\n\n\t/**\n\t * Generates a PMREM from an cubemap texture, which can be either LDR\n\t * or HDR. The ideal input cube size is 256 x 256,\n\t * as this matches best with the 256 x 256 cubemap output.\n\t */\n\tfromCubemap( cubemap, renderTarget = null ) {\n\n\t\treturn this._fromTexture( cubemap, renderTarget );\n\n\t}\n\n\t/**\n\t * Pre-compiles the cubemap shader. You can get faster start-up by invoking this method during\n\t * your texture's network fetch for increased concurrency.\n\t */\n\tcompileCubemapShader() {\n\n\t\tif ( this._cubemapMaterial === null ) {\n\n\t\t\tthis._cubemapMaterial = _getCubemapMaterial();\n\t\t\tthis._compileMaterial( this._cubemapMaterial );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Pre-compiles the equirectangular shader. You can get faster start-up by invoking this method during\n\t * your texture's network fetch for increased concurrency.\n\t */\n\tcompileEquirectangularShader() {\n\n\t\tif ( this._equirectMaterial === null ) {\n\n\t\t\tthis._equirectMaterial = _getEquirectMaterial();\n\t\t\tthis._compileMaterial( this._equirectMaterial );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Disposes of the PMREMGenerator's internal memory. Note that PMREMGenerator is a static class,\n\t * so you should not need more than one PMREMGenerator object. If you do, calling dispose() on\n\t * one of them will cause any others to also become unusable.\n\t */\n\tdispose() {\n\n\t\tthis._dispose();\n\n\t\tif ( this._cubemapMaterial !== null ) this._cubemapMaterial.dispose();\n\t\tif ( this._equirectMaterial !== null ) this._equirectMaterial.dispose();\n\n\t}\n\n\t// private interface\n\n\t_setSize( cubeSize ) {\n\n\t\tthis._lodMax = Math.floor( Math.log2( cubeSize ) );\n\t\tthis._cubeSize = Math.pow( 2, this._lodMax );\n\n\t}\n\n\t_dispose() {\n\n\t\tif ( this._blurMaterial !== null ) this._blurMaterial.dispose();\n\n\t\tif ( this._pingPongRenderTarget !== null ) this._pingPongRenderTarget.dispose();\n\n\t\tfor ( let i = 0; i < this._lodPlanes.length; i ++ ) {\n\n\t\t\tthis._lodPlanes[ i ].dispose();\n\n\t\t}\n\n\t}\n\n\t_cleanup( outputTarget ) {\n\n\t\tthis._renderer.setRenderTarget( _oldTarget );\n\t\toutputTarget.scissorTest = false;\n\t\t_setViewport( outputTarget, 0, 0, outputTarget.width, outputTarget.height );\n\n\t}\n\n\t_fromTexture( texture, renderTarget ) {\n\n\t\tif ( texture.mapping === CubeReflectionMapping || texture.mapping === CubeRefractionMapping ) {\n\n\t\t\tthis._setSize( texture.image.length === 0 ? 16 : ( texture.image[ 0 ].width || texture.image[ 0 ].image.width ) );\n\n\t\t} else { // Equirectangular\n\n\t\t\tthis._setSize( texture.image.width / 4 );\n\n\t\t}\n\n\t\t_oldTarget = this._renderer.getRenderTarget();\n\n\t\tconst cubeUVRenderTarget = renderTarget || this._allocateTargets();\n\t\tthis._textureToCubeUV( texture, cubeUVRenderTarget );\n\t\tthis._applyPMREM( cubeUVRenderTarget );\n\t\tthis._cleanup( cubeUVRenderTarget );\n\n\t\treturn cubeUVRenderTarget;\n\n\t}\n\n\t_allocateTargets() {\n\n\t\tconst width = 3 * Math.max( this._cubeSize, 16 * 7 );\n\t\tconst height = 4 * this._cubeSize;\n\n\t\tconst params = {\n\t\t\tmagFilter: LinearFilter,\n\t\t\tminFilter: LinearFilter,\n\t\t\tgenerateMipmaps: false,\n\t\t\ttype: HalfFloatType,\n\t\t\tformat: RGBAFormat,\n\t\t\tencoding: LinearEncoding,\n\t\t\tdepthBuffer: false\n\t\t};\n\n\t\tconst cubeUVRenderTarget = _createRenderTarget( width, height, params );\n\n\t\tif ( this._pingPongRenderTarget === null || this._pingPongRenderTarget.width !== width ) {\n\n\t\t\tif ( this._pingPongRenderTarget !== null ) {\n\n\t\t\t\tthis._dispose();\n\n\t\t\t}\n\n\t\t\tthis._pingPongRenderTarget = _createRenderTarget( width, height, params );\n\n\t\t\tconst { _lodMax } = this;\n\t\t\t( { sizeLods: this._sizeLods, lodPlanes: this._lodPlanes, sigmas: this._sigmas } = _createPlanes( _lodMax ) );\n\n\t\t\tthis._blurMaterial = _getBlurShader( _lodMax, width, height );\n\n\t\t}\n\n\t\treturn cubeUVRenderTarget;\n\n\t}\n\n\t_compileMaterial( material ) {\n\n\t\tconst tmpMesh = new Mesh( this._lodPlanes[ 0 ], material );\n\t\tthis._renderer.compile( tmpMesh, _flatCamera );\n\n\t}\n\n\t_sceneToCubeUV( scene, near, far, cubeUVRenderTarget ) {\n\n\t\tconst fov = 90;\n\t\tconst aspect = 1;\n\t\tconst cubeCamera = new PerspectiveCamera( fov, aspect, near, far );\n\t\tconst upSign = [ 1, - 1, 1, 1, 1, 1 ];\n\t\tconst forwardSign = [ 1, 1, 1, - 1, - 1, - 1 ];\n\t\tconst renderer = this._renderer;\n\n\t\tconst originalAutoClear = renderer.autoClear;\n\t\tconst toneMapping = renderer.toneMapping;\n\t\trenderer.getClearColor( _clearColor );\n\n\t\trenderer.toneMapping = NoToneMapping;\n\t\trenderer.autoClear = false;\n\n\t\tconst backgroundMaterial = new MeshBasicMaterial( {\n\t\t\tname: 'PMREM.Background',\n\t\t\tside: BackSide,\n\t\t\tdepthWrite: false,\n\t\t\tdepthTest: false,\n\t\t} );\n\n\t\tconst backgroundBox = new Mesh( new BoxGeometry(), backgroundMaterial );\n\n\t\tlet useSolidColor = false;\n\t\tconst background = scene.background;\n\n\t\tif ( background ) {\n\n\t\t\tif ( background.isColor ) {\n\n\t\t\t\tbackgroundMaterial.color.copy( background );\n\t\t\t\tscene.background = null;\n\t\t\t\tuseSolidColor = true;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tbackgroundMaterial.color.copy( _clearColor );\n\t\t\tuseSolidColor = true;\n\n\t\t}\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst col = i % 3;\n\n\t\t\tif ( col === 0 ) {\n\n\t\t\t\tcubeCamera.up.set( 0, upSign[ i ], 0 );\n\t\t\t\tcubeCamera.lookAt( forwardSign[ i ], 0, 0 );\n\n\t\t\t} else if ( col === 1 ) {\n\n\t\t\t\tcubeCamera.up.set( 0, 0, upSign[ i ] );\n\t\t\t\tcubeCamera.lookAt( 0, forwardSign[ i ], 0 );\n\n\t\t\t} else {\n\n\t\t\t\tcubeCamera.up.set( 0, upSign[ i ], 0 );\n\t\t\t\tcubeCamera.lookAt( 0, 0, forwardSign[ i ] );\n\n\t\t\t}\n\n\t\t\tconst size = this._cubeSize;\n\n\t\t\t_setViewport( cubeUVRenderTarget, col * size, i > 2 ? size : 0, size, size );\n\n\t\t\trenderer.setRenderTarget( cubeUVRenderTarget );\n\n\t\t\tif ( useSolidColor ) {\n\n\t\t\t\trenderer.render( backgroundBox, cubeCamera );\n\n\t\t\t}\n\n\t\t\trenderer.render( scene, cubeCamera );\n\n\t\t}\n\n\t\tbackgroundBox.geometry.dispose();\n\t\tbackgroundBox.material.dispose();\n\n\t\trenderer.toneMapping = toneMapping;\n\t\trenderer.autoClear = originalAutoClear;\n\t\tscene.background = background;\n\n\t}\n\n\t_textureToCubeUV( texture, cubeUVRenderTarget ) {\n\n\t\tconst renderer = this._renderer;\n\n\t\tconst isCubeTexture = ( texture.mapping === CubeReflectionMapping || texture.mapping === CubeRefractionMapping );\n\n\t\tif ( isCubeTexture ) {\n\n\t\t\tif ( this._cubemapMaterial === null ) {\n\n\t\t\t\tthis._cubemapMaterial = _getCubemapMaterial();\n\n\t\t\t}\n\n\t\t\tthis._cubemapMaterial.uniforms.flipEnvMap.value = ( texture.isRenderTargetTexture === false ) ? - 1 : 1;\n\n\t\t} else {\n\n\t\t\tif ( this._equirectMaterial === null ) {\n\n\t\t\t\tthis._equirectMaterial = _getEquirectMaterial();\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst material = isCubeTexture ? this._cubemapMaterial : this._equirectMaterial;\n\t\tconst mesh = new Mesh( this._lodPlanes[ 0 ], material );\n\n\t\tconst uniforms = material.uniforms;\n\n\t\tuniforms[ 'envMap' ].value = texture;\n\n\t\tconst size = this._cubeSize;\n\n\t\t_setViewport( cubeUVRenderTarget, 0, 0, 3 * size, 2 * size );\n\n\t\trenderer.setRenderTarget( cubeUVRenderTarget );\n\t\trenderer.render( mesh, _flatCamera );\n\n\t}\n\n\t_applyPMREM( cubeUVRenderTarget ) {\n\n\t\tconst renderer = this._renderer;\n\t\tconst autoClear = renderer.autoClear;\n\t\trenderer.autoClear = false;\n\n\t\tfor ( let i = 1; i < this._lodPlanes.length; i ++ ) {\n\n\t\t\tconst sigma = Math.sqrt( this._sigmas[ i ] * this._sigmas[ i ] - this._sigmas[ i - 1 ] * this._sigmas[ i - 1 ] );\n\n\t\t\tconst poleAxis = _axisDirections[ ( i - 1 ) % _axisDirections.length ];\n\n\t\t\tthis._blur( cubeUVRenderTarget, i - 1, i, sigma, poleAxis );\n\n\t\t}\n\n\t\trenderer.autoClear = autoClear;\n\n\t}\n\n\t/**\n\t * This is a two-pass Gaussian blur for a cubemap. Normally this is done\n\t * vertically and horizontally, but this breaks down on a cube. Here we apply\n\t * the blur latitudinally (around the poles), and then longitudinally (towards\n\t * the poles) to approximate the orthogonally-separable blur. It is least\n\t * accurate at the poles, but still does a decent job.\n\t */\n\t_blur( cubeUVRenderTarget, lodIn, lodOut, sigma, poleAxis ) {\n\n\t\tconst pingPongRenderTarget = this._pingPongRenderTarget;\n\n\t\tthis._halfBlur(\n\t\t\tcubeUVRenderTarget,\n\t\t\tpingPongRenderTarget,\n\t\t\tlodIn,\n\t\t\tlodOut,\n\t\t\tsigma,\n\t\t\t'latitudinal',\n\t\t\tpoleAxis );\n\n\t\tthis._halfBlur(\n\t\t\tpingPongRenderTarget,\n\t\t\tcubeUVRenderTarget,\n\t\t\tlodOut,\n\t\t\tlodOut,\n\t\t\tsigma,\n\t\t\t'longitudinal',\n\t\t\tpoleAxis );\n\n\t}\n\n\t_halfBlur( targetIn, targetOut, lodIn, lodOut, sigmaRadians, direction, poleAxis ) {\n\n\t\tconst renderer = this._renderer;\n\t\tconst blurMaterial = this._blurMaterial;\n\n\t\tif ( direction !== 'latitudinal' && direction !== 'longitudinal' ) {\n\n\t\t\tconsole.error(\n\t\t\t\t'blur direction must be either latitudinal or longitudinal!' );\n\n\t\t}\n\n\t\t// Number of standard deviations at which to cut off the discrete approximation.\n\t\tconst STANDARD_DEVIATIONS = 3;\n\n\t\tconst blurMesh = new Mesh( this._lodPlanes[ lodOut ], blurMaterial );\n\t\tconst blurUniforms = blurMaterial.uniforms;\n\n\t\tconst pixels = this._sizeLods[ lodIn ] - 1;\n\t\tconst radiansPerPixel = isFinite( sigmaRadians ) ? Math.PI / ( 2 * pixels ) : 2 * Math.PI / ( 2 * MAX_SAMPLES - 1 );\n\t\tconst sigmaPixels = sigmaRadians / radiansPerPixel;\n\t\tconst samples = isFinite( sigmaRadians ) ? 1 + Math.floor( STANDARD_DEVIATIONS * sigmaPixels ) : MAX_SAMPLES;\n\n\t\tif ( samples > MAX_SAMPLES ) {\n\n\t\t\tconsole.warn( `sigmaRadians, ${\n\t\t\t\tsigmaRadians}, is too large and will clip, as it requested ${\n\t\t\t\tsamples} samples when the maximum is set to ${MAX_SAMPLES}` );\n\n\t\t}\n\n\t\tconst weights = [];\n\t\tlet sum = 0;\n\n\t\tfor ( let i = 0; i < MAX_SAMPLES; ++ i ) {\n\n\t\t\tconst x = i / sigmaPixels;\n\t\t\tconst weight = Math.exp( - x * x / 2 );\n\t\t\tweights.push( weight );\n\n\t\t\tif ( i === 0 ) {\n\n\t\t\t\tsum += weight;\n\n\t\t\t} else if ( i < samples ) {\n\n\t\t\t\tsum += 2 * weight;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( let i = 0; i < weights.length; i ++ ) {\n\n\t\t\tweights[ i ] = weights[ i ] / sum;\n\n\t\t}\n\n\t\tblurUniforms[ 'envMap' ].value = targetIn.texture;\n\t\tblurUniforms[ 'samples' ].value = samples;\n\t\tblurUniforms[ 'weights' ].value = weights;\n\t\tblurUniforms[ 'latitudinal' ].value = direction === 'latitudinal';\n\n\t\tif ( poleAxis ) {\n\n\t\t\tblurUniforms[ 'poleAxis' ].value = poleAxis;\n\n\t\t}\n\n\t\tconst { _lodMax } = this;\n\t\tblurUniforms[ 'dTheta' ].value = radiansPerPixel;\n\t\tblurUniforms[ 'mipInt' ].value = _lodMax - lodIn;\n\n\t\tconst outputSize = this._sizeLods[ lodOut ];\n\t\tconst x = 3 * outputSize * ( lodOut > _lodMax - LOD_MIN ? lodOut - _lodMax + LOD_MIN : 0 );\n\t\tconst y = 4 * ( this._cubeSize - outputSize );\n\n\t\t_setViewport( targetOut, x, y, 3 * outputSize, 2 * outputSize );\n\t\trenderer.setRenderTarget( targetOut );\n\t\trenderer.render( blurMesh, _flatCamera );\n\n\t}\n\n}\n\n\n\nfunction _createPlanes( lodMax ) {\n\n\tconst lodPlanes = [];\n\tconst sizeLods = [];\n\tconst sigmas = [];\n\n\tlet lod = lodMax;\n\n\tconst totalLods = lodMax - LOD_MIN + 1 + EXTRA_LOD_SIGMA.length;\n\n\tfor ( let i = 0; i < totalLods; i ++ ) {\n\n\t\tconst sizeLod = Math.pow( 2, lod );\n\t\tsizeLods.push( sizeLod );\n\t\tlet sigma = 1.0 / sizeLod;\n\n\t\tif ( i > lodMax - LOD_MIN ) {\n\n\t\t\tsigma = EXTRA_LOD_SIGMA[ i - lodMax + LOD_MIN - 1 ];\n\n\t\t} else if ( i === 0 ) {\n\n\t\t\tsigma = 0;\n\n\t\t}\n\n\t\tsigmas.push( sigma );\n\n\t\tconst texelSize = 1.0 / ( sizeLod - 2 );\n\t\tconst min = - texelSize;\n\t\tconst max = 1 + texelSize;\n\t\tconst uv1 = [ min, min, max, min, max, max, min, min, max, max, min, max ];\n\n\t\tconst cubeFaces = 6;\n\t\tconst vertices = 6;\n\t\tconst positionSize = 3;\n\t\tconst uvSize = 2;\n\t\tconst faceIndexSize = 1;\n\n\t\tconst position = new Float32Array( positionSize * vertices * cubeFaces );\n\t\tconst uv = new Float32Array( uvSize * vertices * cubeFaces );\n\t\tconst faceIndex = new Float32Array( faceIndexSize * vertices * cubeFaces );\n\n\t\tfor ( let face = 0; face < cubeFaces; face ++ ) {\n\n\t\t\tconst x = ( face % 3 ) * 2 / 3 - 1;\n\t\t\tconst y = face > 2 ? 0 : - 1;\n\t\t\tconst coordinates = [\n\t\t\t\tx, y, 0,\n\t\t\t\tx + 2 / 3, y, 0,\n\t\t\t\tx + 2 / 3, y + 1, 0,\n\t\t\t\tx, y, 0,\n\t\t\t\tx + 2 / 3, y + 1, 0,\n\t\t\t\tx, y + 1, 0\n\t\t\t];\n\t\t\tposition.set( coordinates, positionSize * vertices * face );\n\t\t\tuv.set( uv1, uvSize * vertices * face );\n\t\t\tconst fill = [ face, face, face, face, face, face ];\n\t\t\tfaceIndex.set( fill, faceIndexSize * vertices * face );\n\n\t\t}\n\n\t\tconst planes = new BufferGeometry();\n\t\tplanes.setAttribute( 'position', new BufferAttribute( position, positionSize ) );\n\t\tplanes.setAttribute( 'uv', new BufferAttribute( uv, uvSize ) );\n\t\tplanes.setAttribute( 'faceIndex', new BufferAttribute( faceIndex, faceIndexSize ) );\n\t\tlodPlanes.push( planes );\n\n\t\tif ( lod > LOD_MIN ) {\n\n\t\t\tlod --;\n\n\t\t}\n\n\t}\n\n\treturn { lodPlanes, sizeLods, sigmas };\n\n}\n\nfunction _createRenderTarget( width, height, params ) {\n\n\tconst cubeUVRenderTarget = new WebGLRenderTarget( width, height, params );\n\tcubeUVRenderTarget.texture.mapping = CubeUVReflectionMapping;\n\tcubeUVRenderTarget.texture.name = 'PMREM.cubeUv';\n\tcubeUVRenderTarget.scissorTest = true;\n\treturn cubeUVRenderTarget;\n\n}\n\nfunction _setViewport( target, x, y, width, height ) {\n\n\ttarget.viewport.set( x, y, width, height );\n\ttarget.scissor.set( x, y, width, height );\n\n}\n\nfunction _getBlurShader( lodMax, width, height ) {\n\n\tconst weights = new Float32Array( MAX_SAMPLES );\n\tconst poleAxis = new Vector3( 0, 1, 0 );\n\tconst shaderMaterial = new ShaderMaterial( {\n\n\t\tname: 'SphericalGaussianBlur',\n\n\t\tdefines: {\n\t\t\t'n': MAX_SAMPLES,\n\t\t\t'CUBEUV_TEXEL_WIDTH': 1.0 / width,\n\t\t\t'CUBEUV_TEXEL_HEIGHT': 1.0 / height,\n\t\t\t'CUBEUV_MAX_MIP': `${lodMax}.0`,\n\t\t},\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null },\n\t\t\t'samples': { value: 1 },\n\t\t\t'weights': { value: weights },\n\t\t\t'latitudinal': { value: false },\n\t\t\t'dTheta': { value: 0 },\n\t\t\t'mipInt': { value: 0 },\n\t\t\t'poleAxis': { value: poleAxis }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: /* glsl */`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\t\t\tuniform int samples;\n\t\t\tuniform float weights[ n ];\n\t\t\tuniform bool latitudinal;\n\t\t\tuniform float dTheta;\n\t\t\tuniform float mipInt;\n\t\t\tuniform vec3 poleAxis;\n\n\t\t\t#define ENVMAP_TYPE_CUBE_UV\n\t\t\t#include <cube_uv_reflection_fragment>\n\n\t\t\tvec3 getSample( float theta, vec3 axis ) {\n\n\t\t\t\tfloat cosTheta = cos( theta );\n\t\t\t\t// Rodrigues' axis-angle rotation\n\t\t\t\tvec3 sampleDirection = vOutputDirection * cosTheta\n\t\t\t\t\t+ cross( axis, vOutputDirection ) * sin( theta )\n\t\t\t\t\t+ axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta );\n\n\t\t\t\treturn bilinearCubeUV( envMap, sampleDirection, mipInt );\n\n\t\t\t}\n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection );\n\n\t\t\t\tif ( all( equal( axis, vec3( 0.0 ) ) ) ) {\n\n\t\t\t\t\taxis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x );\n\n\t\t\t\t}\n\n\t\t\t\taxis = normalize( axis );\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t\t\t\tgl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis );\n\n\t\t\t\tfor ( int i = 1; i < n; i++ ) {\n\n\t\t\t\t\tif ( i >= samples ) {\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfloat theta = dTheta * float( i );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( theta, axis );\n\n\t\t\t\t}\n\n\t\t\t}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n\treturn shaderMaterial;\n\n}\n\nfunction _getEquirectMaterial() {\n\n\treturn new ShaderMaterial( {\n\n\t\tname: 'EquirectangularToCubeUV',\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: /* glsl */`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\n\t\t\t#include <common>\n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 outputDirection = normalize( vOutputDirection );\n\t\t\t\tvec2 uv = equirectUv( outputDirection );\n\n\t\t\t\tgl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 );\n\n\t\t\t}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n}\n\nfunction _getCubemapMaterial() {\n\n\treturn new ShaderMaterial( {\n\n\t\tname: 'CubemapToCubeUV',\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null },\n\t\t\t'flipEnvMap': { value: - 1 }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: /* glsl */`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tuniform float flipEnvMap;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform samplerCube envMap;\n\n\t\t\tvoid main() {\n\n\t\t\t\tgl_FragColor = textureCube( envMap, vec3( flipEnvMap * vOutputDirection.x, vOutputDirection.yz ) );\n\n\t\t\t}\n\t\t`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n}\n\nfunction _getCommonVertexShader() {\n\n\treturn /* glsl */`\n\n\t\tprecision mediump float;\n\t\tprecision mediump int;\n\n\t\tattribute float faceIndex;\n\n\t\tvarying vec3 vOutputDirection;\n\n\t\t// RH coordinate system; PMREM face-indexing convention\n\t\tvec3 getDirection( vec2 uv, float face ) {\n\n\t\t\tuv = 2.0 * uv - 1.0;\n\n\t\t\tvec3 direction = vec3( uv, 1.0 );\n\n\t\t\tif ( face == 0.0 ) {\n\n\t\t\t\tdirection = direction.zyx; // ( 1, v, u ) pos x\n\n\t\t\t} else if ( face == 1.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xz *= -1.0; // ( -u, 1, -v ) pos y\n\n\t\t\t} else if ( face == 2.0 ) {\n\n\t\t\t\tdirection.x *= -1.0; // ( -u, v, 1 ) pos z\n\n\t\t\t} else if ( face == 3.0 ) {\n\n\t\t\t\tdirection = direction.zyx;\n\t\t\t\tdirection.xz *= -1.0; // ( -1, v, -u ) neg x\n\n\t\t\t} else if ( face == 4.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xy *= -1.0; // ( -u, -1, v ) neg y\n\n\t\t\t} else if ( face == 5.0 ) {\n\n\t\t\t\tdirection.z *= -1.0; // ( u, v, -1 ) neg z\n\n\t\t\t}\n\n\t\t\treturn direction;\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tvOutputDirection = getDirection( uv, faceIndex );\n\t\t\tgl_Position = vec4( position, 1.0 );\n\n\t\t}\n\t`;\n\n}\n\nfunction WebGLCubeUVMaps( renderer ) {\n\n\tlet cubeUVmaps = new WeakMap();\n\n\tlet pmremGenerator = null;\n\n\tfunction get( texture ) {\n\n\t\tif ( texture && texture.isTexture ) {\n\n\t\t\tconst mapping = texture.mapping;\n\n\t\t\tconst isEquirectMap = ( mapping === EquirectangularReflectionMapping || mapping === EquirectangularRefractionMapping );\n\t\t\tconst isCubeMap = ( mapping === CubeReflectionMapping || mapping === CubeRefractionMapping );\n\n\t\t\t// equirect/cube map to cubeUV conversion\n\n\t\t\tif ( isEquirectMap || isCubeMap ) {\n\n\t\t\t\tif ( texture.isRenderTargetTexture && texture.needsPMREMUpdate === true ) {\n\n\t\t\t\t\ttexture.needsPMREMUpdate = false;\n\n\t\t\t\t\tlet renderTarget = cubeUVmaps.get( texture );\n\n\t\t\t\t\tif ( pmremGenerator === null ) pmremGenerator = new PMREMGenerator( renderer );\n\n\t\t\t\t\trenderTarget = isEquirectMap ? pmremGenerator.fromEquirectangular( texture, renderTarget ) : pmremGenerator.fromCubemap( texture, renderTarget );\n\t\t\t\t\tcubeUVmaps.set( texture, renderTarget );\n\n\t\t\t\t\treturn renderTarget.texture;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( cubeUVmaps.has( texture ) ) {\n\n\t\t\t\t\t\treturn cubeUVmaps.get( texture ).texture;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst image = texture.image;\n\n\t\t\t\t\t\tif ( ( isEquirectMap && image && image.height > 0 ) || ( isCubeMap && image && isCubeTextureComplete( image ) ) ) {\n\n\t\t\t\t\t\t\tif ( pmremGenerator === null ) pmremGenerator = new PMREMGenerator( renderer );\n\n\t\t\t\t\t\t\tconst renderTarget = isEquirectMap ? pmremGenerator.fromEquirectangular( texture ) : pmremGenerator.fromCubemap( texture );\n\t\t\t\t\t\t\tcubeUVmaps.set( texture, renderTarget );\n\n\t\t\t\t\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t\t\t\t\t\treturn renderTarget.texture;\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// image not yet ready. try the conversion next frame\n\n\t\t\t\t\t\t\treturn null;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tfunction isCubeTextureComplete( image ) {\n\n\t\tlet count = 0;\n\t\tconst length = 6;\n\n\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\tif ( image[ i ] !== undefined ) count ++;\n\n\t\t}\n\n\t\treturn count === length;\n\n\n\t}\n\n\tfunction onTextureDispose( event ) {\n\n\t\tconst texture = event.target;\n\n\t\ttexture.removeEventListener( 'dispose', onTextureDispose );\n\n\t\tconst cubemapUV = cubeUVmaps.get( texture );\n\n\t\tif ( cubemapUV !== undefined ) {\n\n\t\t\tcubeUVmaps.delete( texture );\n\t\t\tcubemapUV.dispose();\n\n\t\t}\n\n\t}\n\n\tfunction dispose() {\n\n\t\tcubeUVmaps = new WeakMap();\n\n\t\tif ( pmremGenerator !== null ) {\n\n\t\t\tpmremGenerator.dispose();\n\t\t\tpmremGenerator = null;\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\nfunction WebGLExtensions( gl ) {\n\n\tconst extensions = {};\n\n\tfunction getExtension( name ) {\n\n\t\tif ( extensions[ name ] !== undefined ) {\n\n\t\t\treturn extensions[ name ];\n\n\t\t}\n\n\t\tlet extension;\n\n\t\tswitch ( name ) {\n\n\t\t\tcase 'WEBGL_depth_texture':\n\t\t\t\textension = gl.getExtension( 'WEBGL_depth_texture' ) || gl.getExtension( 'MOZ_WEBGL_depth_texture' ) || gl.getExtension( 'WEBKIT_WEBGL_depth_texture' );\n\t\t\t\tbreak;\n\n\t\t\tcase 'EXT_texture_filter_anisotropic':\n\t\t\t\textension = gl.getExtension( 'EXT_texture_filter_anisotropic' ) || gl.getExtension( 'MOZ_EXT_texture_filter_anisotropic' ) || gl.getExtension( 'WEBKIT_EXT_texture_filter_anisotropic' );\n\t\t\t\tbreak;\n\n\t\t\tcase 'WEBGL_compressed_texture_s3tc':\n\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'MOZ_WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_s3tc' );\n\t\t\t\tbreak;\n\n\t\t\tcase 'WEBGL_compressed_texture_pvrtc':\n\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_pvrtc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_pvrtc' );\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\textension = gl.getExtension( name );\n\n\t\t}\n\n\t\textensions[ name ] = extension;\n\n\t\treturn extension;\n\n\t}\n\n\treturn {\n\n\t\thas: function ( name ) {\n\n\t\t\treturn getExtension( name ) !== null;\n\n\t\t},\n\n\t\tinit: function ( capabilities ) {\n\n\t\t\tif ( capabilities.isWebGL2 ) {\n\n\t\t\t\tgetExtension( 'EXT_color_buffer_float' );\n\n\t\t\t} else {\n\n\t\t\t\tgetExtension( 'WEBGL_depth_texture' );\n\t\t\t\tgetExtension( 'OES_texture_float' );\n\t\t\t\tgetExtension( 'OES_texture_half_float' );\n\t\t\t\tgetExtension( 'OES_texture_half_float_linear' );\n\t\t\t\tgetExtension( 'OES_standard_derivatives' );\n\t\t\t\tgetExtension( 'OES_element_index_uint' );\n\t\t\t\tgetExtension( 'OES_vertex_array_object' );\n\t\t\t\tgetExtension( 'ANGLE_instanced_arrays' );\n\n\t\t\t}\n\n\t\t\tgetExtension( 'OES_texture_float_linear' );\n\t\t\tgetExtension( 'EXT_color_buffer_half_float' );\n\t\t\tgetExtension( 'WEBGL_multisampled_render_to_texture' );\n\n\t\t},\n\n\t\tget: function ( name ) {\n\n\t\t\tconst extension = getExtension( name );\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: ' + name + ' extension not supported.' );\n\n\t\t\t}\n\n\t\t\treturn extension;\n\n\t\t}\n\n\t};\n\n}\n\nfunction WebGLGeometries( gl, attributes, info, bindingStates ) {\n\n\tconst geometries = {};\n\tconst wireframeAttributes = new WeakMap();\n\n\tfunction onGeometryDispose( event ) {\n\n\t\tconst geometry = event.target;\n\n\t\tif ( geometry.index !== null ) {\n\n\t\t\tattributes.remove( geometry.index );\n\n\t\t}\n\n\t\tfor ( const name in geometry.attributes ) {\n\n\t\t\tattributes.remove( geometry.attributes[ name ] );\n\n\t\t}\n\n\t\tgeometry.removeEventListener( 'dispose', onGeometryDispose );\n\n\t\tdelete geometries[ geometry.id ];\n\n\t\tconst attribute = wireframeAttributes.get( geometry );\n\n\t\tif ( attribute ) {\n\n\t\t\tattributes.remove( attribute );\n\t\t\twireframeAttributes.delete( geometry );\n\n\t\t}\n\n\t\tbindingStates.releaseStatesOfGeometry( geometry );\n\n\t\tif ( geometry.isInstancedBufferGeometry === true ) {\n\n\t\t\tdelete geometry._maxInstanceCount;\n\n\t\t}\n\n\t\t//\n\n\t\tinfo.memory.geometries --;\n\n\t}\n\n\tfunction get( object, geometry ) {\n\n\t\tif ( geometries[ geometry.id ] === true ) return geometry;\n\n\t\tgeometry.addEventListener( 'dispose', onGeometryDispose );\n\n\t\tgeometries[ geometry.id ] = true;\n\n\t\tinfo.memory.geometries ++;\n\n\t\treturn geometry;\n\n\t}\n\n\tfunction update( geometry ) {\n\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\t// Updating index buffer in VAO now. See WebGLBindingStates.\n\n\t\tfor ( const name in geometryAttributes ) {\n\n\t\t\tattributes.update( geometryAttributes[ name ], 34962 );\n\n\t\t}\n\n\t\t// morph targets\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst array = morphAttributes[ name ];\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tattributes.update( array[ i ], 34962 );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction updateWireframeAttribute( geometry ) {\n\n\t\tconst indices = [];\n\n\t\tconst geometryIndex = geometry.index;\n\t\tconst geometryPosition = geometry.attributes.position;\n\t\tlet version = 0;\n\n\t\tif ( geometryIndex !== null ) {\n\n\t\t\tconst array = geometryIndex.array;\n\t\t\tversion = geometryIndex.version;\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i += 3 ) {\n\n\t\t\t\tconst a = array[ i + 0 ];\n\t\t\t\tconst b = array[ i + 1 ];\n\t\t\t\tconst c = array[ i + 2 ];\n\n\t\t\t\tindices.push( a, b, b, c, c, a );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst array = geometryPosition.array;\n\t\t\tversion = geometryPosition.version;\n\n\t\t\tfor ( let i = 0, l = ( array.length / 3 ) - 1; i < l; i += 3 ) {\n\n\t\t\t\tconst a = i + 0;\n\t\t\t\tconst b = i + 1;\n\t\t\t\tconst c = i + 2;\n\n\t\t\t\tindices.push( a, b, b, c, c, a );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst attribute = new ( arrayNeedsUint32( indices ) ? Uint32BufferAttribute : Uint16BufferAttribute )( indices, 1 );\n\t\tattribute.version = version;\n\n\t\t// Updating index buffer in VAO now. See WebGLBindingStates\n\n\t\t//\n\n\t\tconst previousAttribute = wireframeAttributes.get( geometry );\n\n\t\tif ( previousAttribute ) attributes.remove( previousAttribute );\n\n\t\t//\n\n\t\twireframeAttributes.set( geometry, attribute );\n\n\t}\n\n\tfunction getWireframeAttribute( geometry ) {\n\n\t\tconst currentAttribute = wireframeAttributes.get( geometry );\n\n\t\tif ( currentAttribute ) {\n\n\t\t\tconst geometryIndex = geometry.index;\n\n\t\t\tif ( geometryIndex !== null ) {\n\n\t\t\t\t// if the attribute is obsolete, create a new one\n\n\t\t\t\tif ( currentAttribute.version < geometryIndex.version ) {\n\n\t\t\t\t\tupdateWireframeAttribute( geometry );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tupdateWireframeAttribute( geometry );\n\n\t\t}\n\n\t\treturn wireframeAttributes.get( geometry );\n\n\t}\n\n\treturn {\n\n\t\tget: get,\n\t\tupdate: update,\n\n\t\tgetWireframeAttribute: getWireframeAttribute\n\n\t};\n\n}\n\nfunction WebGLIndexedBufferRenderer( gl, extensions, info, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tlet mode;\n\n\tfunction setMode( value ) {\n\n\t\tmode = value;\n\n\t}\n\n\tlet type, bytesPerElement;\n\n\tfunction setIndex( value ) {\n\n\t\ttype = value.type;\n\t\tbytesPerElement = value.bytesPerElement;\n\n\t}\n\n\tfunction render( start, count ) {\n\n\t\tgl.drawElements( mode, count, type, start * bytesPerElement );\n\n\t\tinfo.update( count, mode, 1 );\n\n\t}\n\n\tfunction renderInstances( start, count, primcount ) {\n\n\t\tif ( primcount === 0 ) return;\n\n\t\tlet extension, methodName;\n\n\t\tif ( isWebGL2 ) {\n\n\t\t\textension = gl;\n\t\t\tmethodName = 'drawElementsInstanced';\n\n\t\t} else {\n\n\t\t\textension = extensions.get( 'ANGLE_instanced_arrays' );\n\t\t\tmethodName = 'drawElementsInstancedANGLE';\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLIndexedBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\textension[ methodName ]( mode, count, type, start * bytesPerElement, primcount );\n\n\t\tinfo.update( count, mode, primcount );\n\n\t}\n\n\t//\n\n\tthis.setMode = setMode;\n\tthis.setIndex = setIndex;\n\tthis.render = render;\n\tthis.renderInstances = renderInstances;\n\n}\n\nfunction WebGLInfo( gl ) {\n\n\tconst memory = {\n\t\tgeometries: 0,\n\t\ttextures: 0\n\t};\n\n\tconst render = {\n\t\tframe: 0,\n\t\tcalls: 0,\n\t\ttriangles: 0,\n\t\tpoints: 0,\n\t\tlines: 0\n\t};\n\n\tfunction update( count, mode, instanceCount ) {\n\n\t\trender.calls ++;\n\n\t\tswitch ( mode ) {\n\n\t\t\tcase 4:\n\t\t\t\trender.triangles += instanceCount * ( count / 3 );\n\t\t\t\tbreak;\n\n\t\t\tcase 1:\n\t\t\t\trender.lines += instanceCount * ( count / 2 );\n\t\t\t\tbreak;\n\n\t\t\tcase 3:\n\t\t\t\trender.lines += instanceCount * ( count - 1 );\n\t\t\t\tbreak;\n\n\t\t\tcase 2:\n\t\t\t\trender.lines += instanceCount * count;\n\t\t\t\tbreak;\n\n\t\t\tcase 0:\n\t\t\t\trender.points += instanceCount * count;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.error( 'THREE.WebGLInfo: Unknown draw mode:', mode );\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\tfunction reset() {\n\n\t\trender.frame ++;\n\t\trender.calls = 0;\n\t\trender.triangles = 0;\n\t\trender.points = 0;\n\t\trender.lines = 0;\n\n\t}\n\n\treturn {\n\t\tmemory: memory,\n\t\trender: render,\n\t\tprograms: null,\n\t\tautoReset: true,\n\t\treset: reset,\n\t\tupdate: update\n\t};\n\n}\n\nfunction numericalSort( a, b ) {\n\n\treturn a[ 0 ] - b[ 0 ];\n\n}\n\nfunction absNumericalSort( a, b ) {\n\n\treturn Math.abs( b[ 1 ] ) - Math.abs( a[ 1 ] );\n\n}\n\nfunction denormalize( morph, attribute ) {\n\n\tlet denominator = 1;\n\tconst array = attribute.isInterleavedBufferAttribute ? attribute.data.array : attribute.array;\n\n\tif ( array instanceof Int8Array ) denominator = 127;\n\telse if ( array instanceof Uint8Array ) denominator = 255;\n\telse if ( array instanceof Uint16Array ) denominator = 65535;\n\telse if ( array instanceof Int16Array ) denominator = 32767;\n\telse if ( array instanceof Int32Array ) denominator = 2147483647;\n\telse console.error( 'THREE.WebGLMorphtargets: Unsupported morph attribute data type: ', array );\n\n\tmorph.divideScalar( denominator );\n\n}\n\nfunction WebGLMorphtargets( gl, capabilities, textures ) {\n\n\tconst influencesList = {};\n\tconst morphInfluences = new Float32Array( 8 );\n\tconst morphTextures = new WeakMap();\n\tconst morph = new Vector4();\n\n\tconst workInfluences = [];\n\n\tfor ( let i = 0; i < 8; i ++ ) {\n\n\t\tworkInfluences[ i ] = [ i, 0 ];\n\n\t}\n\n\tfunction update( object, geometry, material, program ) {\n\n\t\tconst objectInfluences = object.morphTargetInfluences;\n\n\t\tif ( capabilities.isWebGL2 === true ) {\n\n\t\t\t// instead of using attributes, the WebGL 2 code path encodes morph targets\n\t\t\t// into an array of data textures. Each layer represents a single morph target.\n\n\t\t\tconst morphAttribute = geometry.morphAttributes.position || geometry.morphAttributes.normal || geometry.morphAttributes.color;\n\t\t\tconst morphTargetsCount = ( morphAttribute !== undefined ) ? morphAttribute.length : 0;\n\n\t\t\tlet entry = morphTextures.get( geometry );\n\n\t\t\tif ( entry === undefined || entry.count !== morphTargetsCount ) {\n\n\t\t\t\tif ( entry !== undefined ) entry.texture.dispose();\n\n\t\t\t\tconst hasMorphPosition = geometry.morphAttributes.position !== undefined;\n\t\t\t\tconst hasMorphNormals = geometry.morphAttributes.normal !== undefined;\n\t\t\t\tconst hasMorphColors = geometry.morphAttributes.color !== undefined;\n\n\t\t\t\tconst morphTargets = geometry.morphAttributes.position || [];\n\t\t\t\tconst morphNormals = geometry.morphAttributes.normal || [];\n\t\t\t\tconst morphColors = geometry.morphAttributes.color || [];\n\n\t\t\t\tlet vertexDataCount = 0;\n\n\t\t\t\tif ( hasMorphPosition === true ) vertexDataCount = 1;\n\t\t\t\tif ( hasMorphNormals === true ) vertexDataCount = 2;\n\t\t\t\tif ( hasMorphColors === true ) vertexDataCount = 3;\n\n\t\t\t\tlet width = geometry.attributes.position.count * vertexDataCount;\n\t\t\t\tlet height = 1;\n\n\t\t\t\tif ( width > capabilities.maxTextureSize ) {\n\n\t\t\t\t\theight = Math.ceil( width / capabilities.maxTextureSize );\n\t\t\t\t\twidth = capabilities.maxTextureSize;\n\n\t\t\t\t}\n\n\t\t\t\tconst buffer = new Float32Array( width * height * 4 * morphTargetsCount );\n\n\t\t\t\tconst texture = new DataArrayTexture( buffer, width, height, morphTargetsCount );\n\t\t\t\ttexture.type = FloatType;\n\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t// fill buffer\n\n\t\t\t\tconst vertexDataStride = vertexDataCount * 4;\n\n\t\t\t\tfor ( let i = 0; i < morphTargetsCount; i ++ ) {\n\n\t\t\t\t\tconst morphTarget = morphTargets[ i ];\n\t\t\t\t\tconst morphNormal = morphNormals[ i ];\n\t\t\t\t\tconst morphColor = morphColors[ i ];\n\n\t\t\t\t\tconst offset = width * height * 4 * i;\n\n\t\t\t\t\tfor ( let j = 0; j < morphTarget.count; j ++ ) {\n\n\t\t\t\t\t\tconst stride = j * vertexDataStride;\n\n\t\t\t\t\t\tif ( hasMorphPosition === true ) {\n\n\t\t\t\t\t\t\tmorph.fromBufferAttribute( morphTarget, j );\n\n\t\t\t\t\t\t\tif ( morphTarget.normalized === true ) denormalize( morph, morphTarget );\n\n\t\t\t\t\t\t\tbuffer[ offset + stride + 0 ] = morph.x;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 1 ] = morph.y;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 2 ] = morph.z;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 3 ] = 0;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( hasMorphNormals === true ) {\n\n\t\t\t\t\t\t\tmorph.fromBufferAttribute( morphNormal, j );\n\n\t\t\t\t\t\t\tif ( morphNormal.normalized === true ) denormalize( morph, morphNormal );\n\n\t\t\t\t\t\t\tbuffer[ offset + stride + 4 ] = morph.x;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 5 ] = morph.y;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 6 ] = morph.z;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 7 ] = 0;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( hasMorphColors === true ) {\n\n\t\t\t\t\t\t\tmorph.fromBufferAttribute( morphColor, j );\n\n\t\t\t\t\t\t\tif ( morphColor.normalized === true ) denormalize( morph, morphColor );\n\n\t\t\t\t\t\t\tbuffer[ offset + stride + 8 ] = morph.x;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 9 ] = morph.y;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 10 ] = morph.z;\n\t\t\t\t\t\t\tbuffer[ offset + stride + 11 ] = ( morphColor.itemSize === 4 ) ? morph.w : 1;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tentry = {\n\t\t\t\t\tcount: morphTargetsCount,\n\t\t\t\t\ttexture: texture,\n\t\t\t\t\tsize: new Vector2( width, height )\n\t\t\t\t};\n\n\t\t\t\tmorphTextures.set( geometry, entry );\n\n\t\t\t\tfunction disposeTexture() {\n\n\t\t\t\t\ttexture.dispose();\n\n\t\t\t\t\tmorphTextures.delete( geometry );\n\n\t\t\t\t\tgeometry.removeEventListener( 'dispose', disposeTexture );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.addEventListener( 'dispose', disposeTexture );\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tlet morphInfluencesSum = 0;\n\n\t\t\tfor ( let i = 0; i < objectInfluences.length; i ++ ) {\n\n\t\t\t\tmorphInfluencesSum += objectInfluences[ i ];\n\n\t\t\t}\n\n\t\t\tconst morphBaseInfluence = geometry.morphTargetsRelative ? 1 : 1 - morphInfluencesSum;\n\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetBaseInfluence', morphBaseInfluence );\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetInfluences', objectInfluences );\n\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetsTexture', entry.texture, textures );\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetsTextureSize', entry.size );\n\n\n\t\t} else {\n\n\t\t\t// When object doesn't have morph target influences defined, we treat it as a 0-length array\n\t\t\t// This is important to make sure we set up morphTargetBaseInfluence / morphTargetInfluences\n\n\t\t\tconst length = objectInfluences === undefined ? 0 : objectInfluences.length;\n\n\t\t\tlet influences = influencesList[ geometry.id ];\n\n\t\t\tif ( influences === undefined || influences.length !== length ) {\n\n\t\t\t\t// initialise list\n\n\t\t\t\tinfluences = [];\n\n\t\t\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\t\t\tinfluences[ i ] = [ i, 0 ];\n\n\t\t\t\t}\n\n\t\t\t\tinfluencesList[ geometry.id ] = influences;\n\n\t\t\t}\n\n\t\t\t// Collect influences\n\n\t\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\t\tconst influence = influences[ i ];\n\n\t\t\t\tinfluence[ 0 ] = i;\n\t\t\t\tinfluence[ 1 ] = objectInfluences[ i ];\n\n\t\t\t}\n\n\t\t\tinfluences.sort( absNumericalSort );\n\n\t\t\tfor ( let i = 0; i < 8; i ++ ) {\n\n\t\t\t\tif ( i < length && influences[ i ][ 1 ] ) {\n\n\t\t\t\t\tworkInfluences[ i ][ 0 ] = influences[ i ][ 0 ];\n\t\t\t\t\tworkInfluences[ i ][ 1 ] = influences[ i ][ 1 ];\n\n\t\t\t\t} else {\n\n\t\t\t\t\tworkInfluences[ i ][ 0 ] = Number.MAX_SAFE_INTEGER;\n\t\t\t\t\tworkInfluences[ i ][ 1 ] = 0;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tworkInfluences.sort( numericalSort );\n\n\t\t\tconst morphTargets = geometry.morphAttributes.position;\n\t\t\tconst morphNormals = geometry.morphAttributes.normal;\n\n\t\t\tlet morphInfluencesSum = 0;\n\n\t\t\tfor ( let i = 0; i < 8; i ++ ) {\n\n\t\t\t\tconst influence = workInfluences[ i ];\n\t\t\t\tconst index = influence[ 0 ];\n\t\t\t\tconst value = influence[ 1 ];\n\n\t\t\t\tif ( index !== Number.MAX_SAFE_INTEGER && value ) {\n\n\t\t\t\t\tif ( morphTargets && geometry.getAttribute( 'morphTarget' + i ) !== morphTargets[ index ] ) {\n\n\t\t\t\t\t\tgeometry.setAttribute( 'morphTarget' + i, morphTargets[ index ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( morphNormals && geometry.getAttribute( 'morphNormal' + i ) !== morphNormals[ index ] ) {\n\n\t\t\t\t\t\tgeometry.setAttribute( 'morphNormal' + i, morphNormals[ index ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmorphInfluences[ i ] = value;\n\t\t\t\t\tmorphInfluencesSum += value;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( morphTargets && geometry.hasAttribute( 'morphTarget' + i ) === true ) {\n\n\t\t\t\t\t\tgeometry.deleteAttribute( 'morphTarget' + i );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( morphNormals && geometry.hasAttribute( 'morphNormal' + i ) === true ) {\n\n\t\t\t\t\t\tgeometry.deleteAttribute( 'morphNormal' + i );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmorphInfluences[ i ] = 0;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// GLSL shader uses formula baseinfluence * base + sum(target * influence)\n\t\t\t// This allows us to switch between absolute morphs and relative morphs without changing shader code\n\t\t\t// When baseinfluence = 1 - sum(influence), the above is equivalent to sum((target - base) * influence)\n\t\t\tconst morphBaseInfluence = geometry.morphTargetsRelative ? 1 : 1 - morphInfluencesSum;\n\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetBaseInfluence', morphBaseInfluence );\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetInfluences', morphInfluences );\n\n\t\t}\n\n\t}\n\n\treturn {\n\n\t\tupdate: update\n\n\t};\n\n}\n\nfunction WebGLObjects( gl, geometries, attributes, info ) {\n\n\tlet updateMap = new WeakMap();\n\n\tfunction update( object ) {\n\n\t\tconst frame = info.render.frame;\n\n\t\tconst geometry = object.geometry;\n\t\tconst buffergeometry = geometries.get( object, geometry );\n\n\t\t// Update once per frame\n\n\t\tif ( updateMap.get( buffergeometry ) !== frame ) {\n\n\t\t\tgeometries.update( buffergeometry );\n\n\t\t\tupdateMap.set( buffergeometry, frame );\n\n\t\t}\n\n\t\tif ( object.isInstancedMesh ) {\n\n\t\t\tif ( object.hasEventListener( 'dispose', onInstancedMeshDispose ) === false ) {\n\n\t\t\t\tobject.addEventListener( 'dispose', onInstancedMeshDispose );\n\n\t\t\t}\n\n\t\t\tattributes.update( object.instanceMatrix, 34962 );\n\n\t\t\tif ( object.instanceColor !== null ) {\n\n\t\t\t\tattributes.update( object.instanceColor, 34962 );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn buffergeometry;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tupdateMap = new WeakMap();\n\n\t}\n\n\tfunction onInstancedMeshDispose( event ) {\n\n\t\tconst instancedMesh = event.target;\n\n\t\tinstancedMesh.removeEventListener( 'dispose', onInstancedMeshDispose );\n\n\t\tattributes.remove( instancedMesh.instanceMatrix );\n\n\t\tif ( instancedMesh.instanceColor !== null ) attributes.remove( instancedMesh.instanceColor );\n\n\t}\n\n\treturn {\n\n\t\tupdate: update,\n\t\tdispose: dispose\n\n\t};\n\n}\n\n/**\n * Uniforms of a program.\n * Those form a tree structure with a special top-level container for the root,\n * which you get by calling 'new WebGLUniforms( gl, program )'.\n *\n *\n * Properties of inner nodes including the top-level container:\n *\n * .seq - array of nested uniforms\n * .map - nested uniforms by name\n *\n *\n * Methods of all nodes except the top-level container:\n *\n * .setValue( gl, value, [textures] )\n *\n * \t\tuploads a uniform value(s)\n *  \tthe 'textures' parameter is needed for sampler uniforms\n *\n *\n * Static methods of the top-level container (textures factorizations):\n *\n * .upload( gl, seq, values, textures )\n *\n * \t\tsets uniforms in 'seq' to 'values[id].value'\n *\n * .seqWithValue( seq, values ) : filteredSeq\n *\n * \t\tfilters 'seq' entries with corresponding entry in values\n *\n *\n * Methods of the top-level container (textures factorizations):\n *\n * .setValue( gl, name, value, textures )\n *\n * \t\tsets uniform with  name 'name' to 'value'\n *\n * .setOptional( gl, obj, prop )\n *\n * \t\tlike .set for an optional property of the object\n *\n */\n\nconst emptyTexture = /*@__PURE__*/ new Texture();\nconst emptyArrayTexture = /*@__PURE__*/ new DataArrayTexture();\nconst empty3dTexture = /*@__PURE__*/ new Data3DTexture();\nconst emptyCubeTexture = /*@__PURE__*/ new CubeTexture();\n\n// --- Utilities ---\n\n// Array Caches (provide typed arrays for temporary by size)\n\nconst arrayCacheF32 = [];\nconst arrayCacheI32 = [];\n\n// Float32Array caches used for uploading Matrix uniforms\n\nconst mat4array = new Float32Array( 16 );\nconst mat3array = new Float32Array( 9 );\nconst mat2array = new Float32Array( 4 );\n\n// Flattening for arrays of vectors and matrices\n\nfunction flatten( array, nBlocks, blockSize ) {\n\n\tconst firstElem = array[ 0 ];\n\n\tif ( firstElem <= 0 || firstElem > 0 ) return array;\n\t// unoptimized: ! isNaN( firstElem )\n\t// see http://jacksondunstan.com/articles/983\n\n\tconst n = nBlocks * blockSize;\n\tlet r = arrayCacheF32[ n ];\n\n\tif ( r === undefined ) {\n\n\t\tr = new Float32Array( n );\n\t\tarrayCacheF32[ n ] = r;\n\n\t}\n\n\tif ( nBlocks !== 0 ) {\n\n\t\tfirstElem.toArray( r, 0 );\n\n\t\tfor ( let i = 1, offset = 0; i !== nBlocks; ++ i ) {\n\n\t\t\toffset += blockSize;\n\t\t\tarray[ i ].toArray( r, offset );\n\n\t\t}\n\n\t}\n\n\treturn r;\n\n}\n\nfunction arraysEqual( a, b ) {\n\n\tif ( a.length !== b.length ) return false;\n\n\tfor ( let i = 0, l = a.length; i < l; i ++ ) {\n\n\t\tif ( a[ i ] !== b[ i ] ) return false;\n\n\t}\n\n\treturn true;\n\n}\n\nfunction copyArray( a, b ) {\n\n\tfor ( let i = 0, l = b.length; i < l; i ++ ) {\n\n\t\ta[ i ] = b[ i ];\n\n\t}\n\n}\n\n// Texture unit allocation\n\nfunction allocTexUnits( textures, n ) {\n\n\tlet r = arrayCacheI32[ n ];\n\n\tif ( r === undefined ) {\n\n\t\tr = new Int32Array( n );\n\t\tarrayCacheI32[ n ] = r;\n\n\t}\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\tr[ i ] = textures.allocateTextureUnit();\n\n\t}\n\n\treturn r;\n\n}\n\n// --- Setters ---\n\n// Note: Defining these methods externally, because they come in a bunch\n// and this way their names minify.\n\n// Single scalar\n\nfunction setValueV1f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1f( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\n// Single float vector (from flat array or THREE.VectorN)\n\nfunction setValueV2f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y ) {\n\n\t\t\tgl.uniform2f( this.addr, v.x, v.y );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform2fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV3f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z ) {\n\n\t\t\tgl.uniform3f( this.addr, v.x, v.y, v.z );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\n\t\t}\n\n\t} else if ( v.r !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.r || cache[ 1 ] !== v.g || cache[ 2 ] !== v.b ) {\n\n\t\t\tgl.uniform3f( this.addr, v.r, v.g, v.b );\n\n\t\t\tcache[ 0 ] = v.r;\n\t\t\tcache[ 1 ] = v.g;\n\t\t\tcache[ 2 ] = v.b;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform3fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV4f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z || cache[ 3 ] !== v.w ) {\n\n\t\t\tgl.uniform4f( this.addr, v.x, v.y, v.z, v.w );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\t\t\tcache[ 3 ] = v.w;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform4fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\n// Single matrix (from flat array or THREE.MatrixN)\n\nfunction setValueM2( gl, v ) {\n\n\tconst cache = this.cache;\n\tconst elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix2fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat2array.set( elements );\n\n\t\tgl.uniformMatrix2fv( this.addr, false, mat2array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\nfunction setValueM3( gl, v ) {\n\n\tconst cache = this.cache;\n\tconst elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix3fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat3array.set( elements );\n\n\t\tgl.uniformMatrix3fv( this.addr, false, mat3array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\nfunction setValueM4( gl, v ) {\n\n\tconst cache = this.cache;\n\tconst elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix4fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat4array.set( elements );\n\n\t\tgl.uniformMatrix4fv( this.addr, false, mat4array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\n// Single integer / boolean\n\nfunction setValueV1i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1i( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\n// Single integer / boolean vector (from flat array)\n\nfunction setValueV2i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform2iv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\nfunction setValueV3i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform3iv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\nfunction setValueV4i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform4iv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\n// Single unsigned integer\n\nfunction setValueV1ui( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1ui( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\n// Single unsigned integer vector (from flat array)\n\nfunction setValueV2ui( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform2uiv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\nfunction setValueV3ui( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform3uiv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\nfunction setValueV4ui( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( arraysEqual( cache, v ) ) return;\n\n\tgl.uniform4uiv( this.addr, v );\n\n\tcopyArray( cache, v );\n\n}\n\n\n// Single texture (2D / Cube)\n\nfunction setValueT1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.setTexture2D( v || emptyTexture, unit );\n\n}\n\nfunction setValueT3D1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.setTexture3D( v || empty3dTexture, unit );\n\n}\n\nfunction setValueT6( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.setTextureCube( v || emptyCubeTexture, unit );\n\n}\n\nfunction setValueT2DArray1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.setTexture2DArray( v || emptyArrayTexture, unit );\n\n}\n\n// Helper to pick the right setter for the singular case\n\nfunction getSingularSetter( type ) {\n\n\tswitch ( type ) {\n\n\t\tcase 0x1406: return setValueV1f; // FLOAT\n\t\tcase 0x8b50: return setValueV2f; // _VEC2\n\t\tcase 0x8b51: return setValueV3f; // _VEC3\n\t\tcase 0x8b52: return setValueV4f; // _VEC4\n\n\t\tcase 0x8b5a: return setValueM2; // _MAT2\n\t\tcase 0x8b5b: return setValueM3; // _MAT3\n\t\tcase 0x8b5c: return setValueM4; // _MAT4\n\n\t\tcase 0x1404: case 0x8b56: return setValueV1i; // INT, BOOL\n\t\tcase 0x8b53: case 0x8b57: return setValueV2i; // _VEC2\n\t\tcase 0x8b54: case 0x8b58: return setValueV3i; // _VEC3\n\t\tcase 0x8b55: case 0x8b59: return setValueV4i; // _VEC4\n\n\t\tcase 0x1405: return setValueV1ui; // UINT\n\t\tcase 0x8dc6: return setValueV2ui; // _VEC2\n\t\tcase 0x8dc7: return setValueV3ui; // _VEC3\n\t\tcase 0x8dc8: return setValueV4ui; // _VEC4\n\n\t\tcase 0x8b5e: // SAMPLER_2D\n\t\tcase 0x8d66: // SAMPLER_EXTERNAL_OES\n\t\tcase 0x8dca: // INT_SAMPLER_2D\n\t\tcase 0x8dd2: // UNSIGNED_INT_SAMPLER_2D\n\t\tcase 0x8b62: // SAMPLER_2D_SHADOW\n\t\t\treturn setValueT1;\n\n\t\tcase 0x8b5f: // SAMPLER_3D\n\t\tcase 0x8dcb: // INT_SAMPLER_3D\n\t\tcase 0x8dd3: // UNSIGNED_INT_SAMPLER_3D\n\t\t\treturn setValueT3D1;\n\n\t\tcase 0x8b60: // SAMPLER_CUBE\n\t\tcase 0x8dcc: // INT_SAMPLER_CUBE\n\t\tcase 0x8dd4: // UNSIGNED_INT_SAMPLER_CUBE\n\t\tcase 0x8dc5: // SAMPLER_CUBE_SHADOW\n\t\t\treturn setValueT6;\n\n\t\tcase 0x8dc1: // SAMPLER_2D_ARRAY\n\t\tcase 0x8dcf: // INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dd7: // UNSIGNED_INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dc4: // SAMPLER_2D_ARRAY_SHADOW\n\t\t\treturn setValueT2DArray1;\n\n\t}\n\n}\n\n\n// Array of scalars\n\nfunction setValueV1fArray( gl, v ) {\n\n\tgl.uniform1fv( this.addr, v );\n\n}\n\n// Array of vectors (from flat array or array of THREE.VectorN)\n\nfunction setValueV2fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 2 );\n\n\tgl.uniform2fv( this.addr, data );\n\n}\n\nfunction setValueV3fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 3 );\n\n\tgl.uniform3fv( this.addr, data );\n\n}\n\nfunction setValueV4fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 4 );\n\n\tgl.uniform4fv( this.addr, data );\n\n}\n\n// Array of matrices (from flat array or array of THREE.MatrixN)\n\nfunction setValueM2Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 4 );\n\n\tgl.uniformMatrix2fv( this.addr, false, data );\n\n}\n\nfunction setValueM3Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 9 );\n\n\tgl.uniformMatrix3fv( this.addr, false, data );\n\n}\n\nfunction setValueM4Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 16 );\n\n\tgl.uniformMatrix4fv( this.addr, false, data );\n\n}\n\n// Array of integer / boolean\n\nfunction setValueV1iArray( gl, v ) {\n\n\tgl.uniform1iv( this.addr, v );\n\n}\n\n// Array of integer / boolean vectors (from flat array)\n\nfunction setValueV2iArray( gl, v ) {\n\n\tgl.uniform2iv( this.addr, v );\n\n}\n\nfunction setValueV3iArray( gl, v ) {\n\n\tgl.uniform3iv( this.addr, v );\n\n}\n\nfunction setValueV4iArray( gl, v ) {\n\n\tgl.uniform4iv( this.addr, v );\n\n}\n\n// Array of unsigned integer\n\nfunction setValueV1uiArray( gl, v ) {\n\n\tgl.uniform1uiv( this.addr, v );\n\n}\n\n// Array of unsigned integer vectors (from flat array)\n\nfunction setValueV2uiArray( gl, v ) {\n\n\tgl.uniform2uiv( this.addr, v );\n\n}\n\nfunction setValueV3uiArray( gl, v ) {\n\n\tgl.uniform3uiv( this.addr, v );\n\n}\n\nfunction setValueV4uiArray( gl, v ) {\n\n\tgl.uniform4uiv( this.addr, v );\n\n}\n\n\n// Array of textures (2D / 3D / Cube / 2DArray)\n\nfunction setValueT1Array( gl, v, textures ) {\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tgl.uniform1iv( this.addr, units );\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.setTexture2D( v[ i ] || emptyTexture, units[ i ] );\n\n\t}\n\n}\n\nfunction setValueT3DArray( gl, v, textures ) {\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tgl.uniform1iv( this.addr, units );\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.setTexture3D( v[ i ] || empty3dTexture, units[ i ] );\n\n\t}\n\n}\n\nfunction setValueT6Array( gl, v, textures ) {\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tgl.uniform1iv( this.addr, units );\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.setTextureCube( v[ i ] || emptyCubeTexture, units[ i ] );\n\n\t}\n\n}\n\nfunction setValueT2DArrayArray( gl, v, textures ) {\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tgl.uniform1iv( this.addr, units );\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.setTexture2DArray( v[ i ] || emptyArrayTexture, units[ i ] );\n\n\t}\n\n}\n\n\n// Helper to pick the right setter for a pure (bottom-level) array\n\nfunction getPureArraySetter( type ) {\n\n\tswitch ( type ) {\n\n\t\tcase 0x1406: return setValueV1fArray; // FLOAT\n\t\tcase 0x8b50: return setValueV2fArray; // _VEC2\n\t\tcase 0x8b51: return setValueV3fArray; // _VEC3\n\t\tcase 0x8b52: return setValueV4fArray; // _VEC4\n\n\t\tcase 0x8b5a: return setValueM2Array; // _MAT2\n\t\tcase 0x8b5b: return setValueM3Array; // _MAT3\n\t\tcase 0x8b5c: return setValueM4Array; // _MAT4\n\n\t\tcase 0x1404: case 0x8b56: return setValueV1iArray; // INT, BOOL\n\t\tcase 0x8b53: case 0x8b57: return setValueV2iArray; // _VEC2\n\t\tcase 0x8b54: case 0x8b58: return setValueV3iArray; // _VEC3\n\t\tcase 0x8b55: case 0x8b59: return setValueV4iArray; // _VEC4\n\n\t\tcase 0x1405: return setValueV1uiArray; // UINT\n\t\tcase 0x8dc6: return setValueV2uiArray; // _VEC2\n\t\tcase 0x8dc7: return setValueV3uiArray; // _VEC3\n\t\tcase 0x8dc8: return setValueV4uiArray; // _VEC4\n\n\t\tcase 0x8b5e: // SAMPLER_2D\n\t\tcase 0x8d66: // SAMPLER_EXTERNAL_OES\n\t\tcase 0x8dca: // INT_SAMPLER_2D\n\t\tcase 0x8dd2: // UNSIGNED_INT_SAMPLER_2D\n\t\tcase 0x8b62: // SAMPLER_2D_SHADOW\n\t\t\treturn setValueT1Array;\n\n\t\tcase 0x8b5f: // SAMPLER_3D\n\t\tcase 0x8dcb: // INT_SAMPLER_3D\n\t\tcase 0x8dd3: // UNSIGNED_INT_SAMPLER_3D\n\t\t\treturn setValueT3DArray;\n\n\t\tcase 0x8b60: // SAMPLER_CUBE\n\t\tcase 0x8dcc: // INT_SAMPLER_CUBE\n\t\tcase 0x8dd4: // UNSIGNED_INT_SAMPLER_CUBE\n\t\tcase 0x8dc5: // SAMPLER_CUBE_SHADOW\n\t\t\treturn setValueT6Array;\n\n\t\tcase 0x8dc1: // SAMPLER_2D_ARRAY\n\t\tcase 0x8dcf: // INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dd7: // UNSIGNED_INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dc4: // SAMPLER_2D_ARRAY_SHADOW\n\t\t\treturn setValueT2DArrayArray;\n\n\t}\n\n}\n\n// --- Uniform Classes ---\n\nclass SingleUniform {\n\n\tconstructor( id, activeInfo, addr ) {\n\n\t\tthis.id = id;\n\t\tthis.addr = addr;\n\t\tthis.cache = [];\n\t\tthis.setValue = getSingularSetter( activeInfo.type );\n\n\t\t// this.path = activeInfo.name; // DEBUG\n\n\t}\n\n}\n\nclass PureArrayUniform {\n\n\tconstructor( id, activeInfo, addr ) {\n\n\t\tthis.id = id;\n\t\tthis.addr = addr;\n\t\tthis.cache = [];\n\t\tthis.size = activeInfo.size;\n\t\tthis.setValue = getPureArraySetter( activeInfo.type );\n\n\t\t// this.path = activeInfo.name; // DEBUG\n\n\t}\n\n}\n\nclass StructuredUniform {\n\n\tconstructor( id ) {\n\n\t\tthis.id = id;\n\n\t\tthis.seq = [];\n\t\tthis.map = {};\n\n\t}\n\n\tsetValue( gl, value, textures ) {\n\n\t\tconst seq = this.seq;\n\n\t\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\t\tconst u = seq[ i ];\n\t\t\tu.setValue( gl, value[ u.id ], textures );\n\n\t\t}\n\n\t}\n\n}\n\n// --- Top-level ---\n\n// Parser - builds up the property tree from the path strings\n\nconst RePathPart = /(\\w+)(\\])?(\\[|\\.)?/g;\n\n// extracts\n// \t- the identifier (member name or array index)\n//  - followed by an optional right bracket (found when array index)\n//  - followed by an optional left bracket or dot (type of subscript)\n//\n// Note: These portions can be read in a non-overlapping fashion and\n// allow straightforward parsing of the hierarchy that WebGL encodes\n// in the uniform names.\n\nfunction addUniform( container, uniformObject ) {\n\n\tcontainer.seq.push( uniformObject );\n\tcontainer.map[ uniformObject.id ] = uniformObject;\n\n}\n\nfunction parseUniform( activeInfo, addr, container ) {\n\n\tconst path = activeInfo.name,\n\t\tpathLength = path.length;\n\n\t// reset RegExp object, because of the early exit of a previous run\n\tRePathPart.lastIndex = 0;\n\n\twhile ( true ) {\n\n\t\tconst match = RePathPart.exec( path ),\n\t\t\tmatchEnd = RePathPart.lastIndex;\n\n\t\tlet id = match[ 1 ];\n\t\tconst idIsIndex = match[ 2 ] === ']',\n\t\t\tsubscript = match[ 3 ];\n\n\t\tif ( idIsIndex ) id = id | 0; // convert to integer\n\n\t\tif ( subscript === undefined || subscript === '[' && matchEnd + 2 === pathLength ) {\n\n\t\t\t// bare name or \"pure\" bottom-level array \"[0]\" suffix\n\n\t\t\taddUniform( container, subscript === undefined ?\n\t\t\t\tnew SingleUniform( id, activeInfo, addr ) :\n\t\t\t\tnew PureArrayUniform( id, activeInfo, addr ) );\n\n\t\t\tbreak;\n\n\t\t} else {\n\n\t\t\t// step into inner node / create it in case it doesn't exist\n\n\t\t\tconst map = container.map;\n\t\t\tlet next = map[ id ];\n\n\t\t\tif ( next === undefined ) {\n\n\t\t\t\tnext = new StructuredUniform( id );\n\t\t\t\taddUniform( container, next );\n\n\t\t\t}\n\n\t\t\tcontainer = next;\n\n\t\t}\n\n\t}\n\n}\n\n// Root Container\n\nclass WebGLUniforms {\n\n\tconstructor( gl, program ) {\n\n\t\tthis.seq = [];\n\t\tthis.map = {};\n\n\t\tconst n = gl.getProgramParameter( program, 35718 );\n\n\t\tfor ( let i = 0; i < n; ++ i ) {\n\n\t\t\tconst info = gl.getActiveUniform( program, i ),\n\t\t\t\taddr = gl.getUniformLocation( program, info.name );\n\n\t\t\tparseUniform( info, addr, this );\n\n\t\t}\n\n\t}\n\n\tsetValue( gl, name, value, textures ) {\n\n\t\tconst u = this.map[ name ];\n\n\t\tif ( u !== undefined ) u.setValue( gl, value, textures );\n\n\t}\n\n\tsetOptional( gl, object, name ) {\n\n\t\tconst v = object[ name ];\n\n\t\tif ( v !== undefined ) this.setValue( gl, name, v );\n\n\t}\n\n\tstatic upload( gl, seq, values, textures ) {\n\n\t\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\t\tconst u = seq[ i ],\n\t\t\t\tv = values[ u.id ];\n\n\t\t\tif ( v.needsUpdate !== false ) {\n\n\t\t\t\t// note: always updating when .needsUpdate is undefined\n\t\t\t\tu.setValue( gl, v.value, textures );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tstatic seqWithValue( seq, values ) {\n\n\t\tconst r = [];\n\n\t\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\t\tconst u = seq[ i ];\n\t\t\tif ( u.id in values ) r.push( u );\n\n\t\t}\n\n\t\treturn r;\n\n\t}\n\n}\n\nfunction WebGLShader( gl, type, string ) {\n\n\tconst shader = gl.createShader( type );\n\n\tgl.shaderSource( shader, string );\n\tgl.compileShader( shader );\n\n\treturn shader;\n\n}\n\nlet programIdCount = 0;\n\nfunction handleSource( string, errorLine ) {\n\n\tconst lines = string.split( '\\n' );\n\tconst lines2 = [];\n\n\tconst from = Math.max( errorLine - 6, 0 );\n\tconst to = Math.min( errorLine + 6, lines.length );\n\n\tfor ( let i = from; i < to; i ++ ) {\n\n\t\tconst line = i + 1;\n\t\tlines2.push( `${line === errorLine ? '>' : ' '} ${line}: ${lines[ i ]}` );\n\n\t}\n\n\treturn lines2.join( '\\n' );\n\n}\n\nfunction getEncodingComponents( encoding ) {\n\n\tswitch ( encoding ) {\n\n\t\tcase LinearEncoding:\n\t\t\treturn [ 'Linear', '( value )' ];\n\t\tcase sRGBEncoding:\n\t\t\treturn [ 'sRGB', '( value )' ];\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.WebGLProgram: Unsupported encoding:', encoding );\n\t\t\treturn [ 'Linear', '( value )' ];\n\n\t}\n\n}\n\nfunction getShaderErrors( gl, shader, type ) {\n\n\tconst status = gl.getShaderParameter( shader, 35713 );\n\tconst errors = gl.getShaderInfoLog( shader ).trim();\n\n\tif ( status && errors === '' ) return '';\n\n\tconst errorMatches = /ERROR: 0:(\\d+)/.exec( errors );\n\tif ( errorMatches ) {\n\n\t\t// --enable-privileged-webgl-extension\n\t\t// console.log( '**' + type + '**', gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( shader ) );\n\n\t\tconst errorLine = parseInt( errorMatches[ 1 ] );\n\t\treturn type.toUpperCase() + '\\n\\n' + errors + '\\n\\n' + handleSource( gl.getShaderSource( shader ), errorLine );\n\n\t} else {\n\n\t\treturn errors;\n\n\t}\n\n}\n\nfunction getTexelEncodingFunction( functionName, encoding ) {\n\n\tconst components = getEncodingComponents( encoding );\n\treturn 'vec4 ' + functionName + '( vec4 value ) { return LinearTo' + components[ 0 ] + components[ 1 ] + '; }';\n\n}\n\nfunction getToneMappingFunction( functionName, toneMapping ) {\n\n\tlet toneMappingName;\n\n\tswitch ( toneMapping ) {\n\n\t\tcase LinearToneMapping:\n\t\t\ttoneMappingName = 'Linear';\n\t\t\tbreak;\n\n\t\tcase ReinhardToneMapping:\n\t\t\ttoneMappingName = 'Reinhard';\n\t\t\tbreak;\n\n\t\tcase CineonToneMapping:\n\t\t\ttoneMappingName = 'OptimizedCineon';\n\t\t\tbreak;\n\n\t\tcase ACESFilmicToneMapping:\n\t\t\ttoneMappingName = 'ACESFilmic';\n\t\t\tbreak;\n\n\t\tcase CustomToneMapping:\n\t\t\ttoneMappingName = 'Custom';\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.WebGLProgram: Unsupported toneMapping:', toneMapping );\n\t\t\ttoneMappingName = 'Linear';\n\n\t}\n\n\treturn 'vec3 ' + functionName + '( vec3 color ) { return ' + toneMappingName + 'ToneMapping( color ); }';\n\n}\n\nfunction generateExtensions( parameters ) {\n\n\tconst chunks = [\n\t\t( parameters.extensionDerivatives || !! parameters.envMapCubeUVHeight || parameters.bumpMap || parameters.tangentSpaceNormalMap || parameters.clearcoatNormalMap || parameters.flatShading || parameters.shaderID === 'physical' ) ? '#extension GL_OES_standard_derivatives : enable' : '',\n\t\t( parameters.extensionFragDepth || parameters.logarithmicDepthBuffer ) && parameters.rendererExtensionFragDepth ? '#extension GL_EXT_frag_depth : enable' : '',\n\t\t( parameters.extensionDrawBuffers && parameters.rendererExtensionDrawBuffers ) ? '#extension GL_EXT_draw_buffers : require' : '',\n\t\t( parameters.extensionShaderTextureLOD || parameters.envMap || parameters.transmission ) && parameters.rendererExtensionShaderTextureLod ? '#extension GL_EXT_shader_texture_lod : enable' : ''\n\t];\n\n\treturn chunks.filter( filterEmptyLine ).join( '\\n' );\n\n}\n\nfunction generateDefines( defines ) {\n\n\tconst chunks = [];\n\n\tfor ( const name in defines ) {\n\n\t\tconst value = defines[ name ];\n\n\t\tif ( value === false ) continue;\n\n\t\tchunks.push( '#define ' + name + ' ' + value );\n\n\t}\n\n\treturn chunks.join( '\\n' );\n\n}\n\nfunction fetchAttributeLocations( gl, program ) {\n\n\tconst attributes = {};\n\n\tconst n = gl.getProgramParameter( program, 35721 );\n\n\tfor ( let i = 0; i < n; i ++ ) {\n\n\t\tconst info = gl.getActiveAttrib( program, i );\n\t\tconst name = info.name;\n\n\t\tlet locationSize = 1;\n\t\tif ( info.type === 35674 ) locationSize = 2;\n\t\tif ( info.type === 35675 ) locationSize = 3;\n\t\tif ( info.type === 35676 ) locationSize = 4;\n\n\t\t// console.log( 'THREE.WebGLProgram: ACTIVE VERTEX ATTRIBUTE:', name, i );\n\n\t\tattributes[ name ] = {\n\t\t\ttype: info.type,\n\t\t\tlocation: gl.getAttribLocation( program, name ),\n\t\t\tlocationSize: locationSize\n\t\t};\n\n\t}\n\n\treturn attributes;\n\n}\n\nfunction filterEmptyLine( string ) {\n\n\treturn string !== '';\n\n}\n\nfunction replaceLightNums( string, parameters ) {\n\n\treturn string\n\t\t.replace( /NUM_DIR_LIGHTS/g, parameters.numDirLights )\n\t\t.replace( /NUM_SPOT_LIGHTS/g, parameters.numSpotLights )\n\t\t.replace( /NUM_RECT_AREA_LIGHTS/g, parameters.numRectAreaLights )\n\t\t.replace( /NUM_POINT_LIGHTS/g, parameters.numPointLights )\n\t\t.replace( /NUM_HEMI_LIGHTS/g, parameters.numHemiLights )\n\t\t.replace( /NUM_DIR_LIGHT_SHADOWS/g, parameters.numDirLightShadows )\n\t\t.replace( /NUM_SPOT_LIGHT_SHADOWS/g, parameters.numSpotLightShadows )\n\t\t.replace( /NUM_POINT_LIGHT_SHADOWS/g, parameters.numPointLightShadows );\n\n}\n\nfunction replaceClippingPlaneNums( string, parameters ) {\n\n\treturn string\n\t\t.replace( /NUM_CLIPPING_PLANES/g, parameters.numClippingPlanes )\n\t\t.replace( /UNION_CLIPPING_PLANES/g, ( parameters.numClippingPlanes - parameters.numClipIntersection ) );\n\n}\n\n// Resolve Includes\n\nconst includePattern = /^[ \\t]*#include +<([\\w\\d./]+)>/gm;\n\nfunction resolveIncludes( string ) {\n\n\treturn string.replace( includePattern, includeReplacer );\n\n}\n\nfunction includeReplacer( match, include ) {\n\n\tconst string = ShaderChunk[ include ];\n\n\tif ( string === undefined ) {\n\n\t\tthrow new Error( 'Can not resolve #include <' + include + '>' );\n\n\t}\n\n\treturn resolveIncludes( string );\n\n}\n\n// Unroll Loops\n\nconst deprecatedUnrollLoopPattern = /#pragma unroll_loop[\\s]+?for \\( int i \\= (\\d+)\\; i < (\\d+)\\; i \\+\\+ \\) \\{([\\s\\S]+?)(?=\\})\\}/g;\nconst unrollLoopPattern = /#pragma unroll_loop_start\\s+for\\s*\\(\\s*int\\s+i\\s*=\\s*(\\d+)\\s*;\\s*i\\s*<\\s*(\\d+)\\s*;\\s*i\\s*\\+\\+\\s*\\)\\s*{([\\s\\S]+?)}\\s+#pragma unroll_loop_end/g;\n\nfunction unrollLoops( string ) {\n\n\treturn string\n\t\t.replace( unrollLoopPattern, loopReplacer )\n\t\t.replace( deprecatedUnrollLoopPattern, deprecatedLoopReplacer );\n\n}\n\nfunction deprecatedLoopReplacer( match, start, end, snippet ) {\n\n\tconsole.warn( 'WebGLProgram: #pragma unroll_loop shader syntax is deprecated. Please use #pragma unroll_loop_start syntax instead.' );\n\treturn loopReplacer( match, start, end, snippet );\n\n}\n\nfunction loopReplacer( match, start, end, snippet ) {\n\n\tlet string = '';\n\n\tfor ( let i = parseInt( start ); i < parseInt( end ); i ++ ) {\n\n\t\tstring += snippet\n\t\t\t.replace( /\\[\\s*i\\s*\\]/g, '[ ' + i + ' ]' )\n\t\t\t.replace( /UNROLLED_LOOP_INDEX/g, i );\n\n\t}\n\n\treturn string;\n\n}\n\n//\n\nfunction generatePrecision( parameters ) {\n\n\tlet precisionstring = 'precision ' + parameters.precision + ' float;\\nprecision ' + parameters.precision + ' int;';\n\n\tif ( parameters.precision === 'highp' ) {\n\n\t\tprecisionstring += '\\n#define HIGH_PRECISION';\n\n\t} else if ( parameters.precision === 'mediump' ) {\n\n\t\tprecisionstring += '\\n#define MEDIUM_PRECISION';\n\n\t} else if ( parameters.precision === 'lowp' ) {\n\n\t\tprecisionstring += '\\n#define LOW_PRECISION';\n\n\t}\n\n\treturn precisionstring;\n\n}\n\nfunction generateShadowMapTypeDefine( parameters ) {\n\n\tlet shadowMapTypeDefine = 'SHADOWMAP_TYPE_BASIC';\n\n\tif ( parameters.shadowMapType === PCFShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF';\n\n\t} else if ( parameters.shadowMapType === PCFSoftShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF_SOFT';\n\n\t} else if ( parameters.shadowMapType === VSMShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_VSM';\n\n\t}\n\n\treturn shadowMapTypeDefine;\n\n}\n\nfunction generateEnvMapTypeDefine( parameters ) {\n\n\tlet envMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.envMapMode ) {\n\n\t\t\tcase CubeReflectionMapping:\n\t\t\tcase CubeRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\t\t\t\tbreak;\n\n\t\t\tcase CubeUVReflectionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE_UV';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapTypeDefine;\n\n}\n\nfunction generateEnvMapModeDefine( parameters ) {\n\n\tlet envMapModeDefine = 'ENVMAP_MODE_REFLECTION';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.envMapMode ) {\n\n\t\t\tcase CubeRefractionMapping:\n\n\t\t\t\tenvMapModeDefine = 'ENVMAP_MODE_REFRACTION';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapModeDefine;\n\n}\n\nfunction generateEnvMapBlendingDefine( parameters ) {\n\n\tlet envMapBlendingDefine = 'ENVMAP_BLENDING_NONE';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.combine ) {\n\n\t\t\tcase MultiplyOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MULTIPLY';\n\t\t\t\tbreak;\n\n\t\t\tcase MixOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MIX';\n\t\t\t\tbreak;\n\n\t\t\tcase AddOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_ADD';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapBlendingDefine;\n\n}\n\nfunction generateCubeUVSize( parameters ) {\n\n\tconst imageHeight = parameters.envMapCubeUVHeight;\n\n\tif ( imageHeight === null ) return null;\n\n\tconst maxMip = Math.log2( imageHeight ) - 2;\n\n\tconst texelHeight = 1.0 / imageHeight;\n\n\tconst texelWidth = 1.0 / ( 3 * Math.max( Math.pow( 2, maxMip ), 7 * 16 ) );\n\n\treturn { texelWidth, texelHeight, maxMip };\n\n}\n\nfunction WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {\n\n\t// TODO Send this event to Three.js DevTools\n\t// console.log( 'WebGLProgram', cacheKey );\n\n\tconst gl = renderer.getContext();\n\n\tconst defines = parameters.defines;\n\n\tlet vertexShader = parameters.vertexShader;\n\tlet fragmentShader = parameters.fragmentShader;\n\n\tconst shadowMapTypeDefine = generateShadowMapTypeDefine( parameters );\n\tconst envMapTypeDefine = generateEnvMapTypeDefine( parameters );\n\tconst envMapModeDefine = generateEnvMapModeDefine( parameters );\n\tconst envMapBlendingDefine = generateEnvMapBlendingDefine( parameters );\n\tconst envMapCubeUVSize = generateCubeUVSize( parameters );\n\n\tconst customExtensions = parameters.isWebGL2 ? '' : generateExtensions( parameters );\n\n\tconst customDefines = generateDefines( defines );\n\n\tconst program = gl.createProgram();\n\n\tlet prefixVertex, prefixFragment;\n\tlet versionString = parameters.glslVersion ? '#version ' + parameters.glslVersion + '\\n' : '';\n\n\tif ( parameters.isRawShaderMaterial ) {\n\n\t\tprefixVertex = [\n\n\t\t\tcustomDefines\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tif ( prefixVertex.length > 0 ) {\n\n\t\t\tprefixVertex += '\\n';\n\n\t\t}\n\n\t\tprefixFragment = [\n\n\t\t\tcustomExtensions,\n\t\t\tcustomDefines\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tif ( prefixFragment.length > 0 ) {\n\n\t\t\tprefixFragment += '\\n';\n\n\t\t}\n\n\t} else {\n\n\t\tprefixVertex = [\n\n\t\t\tgeneratePrecision( parameters ),\n\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\n\n\t\t\tcustomDefines,\n\n\t\t\tparameters.instancing ? '#define USE_INSTANCING' : '',\n\t\t\tparameters.instancingColor ? '#define USE_INSTANCING_COLOR' : '',\n\n\t\t\tparameters.supportsVertexTextures ? '#define VERTEX_TEXTURES' : '',\n\n\t\t\t( parameters.useFog && parameters.fog ) ? '#define USE_FOG' : '',\n\t\t\t( parameters.useFog && parameters.fogExp2 ) ? '#define FOG_EXP2' : '',\n\n\t\t\tparameters.map ? '#define USE_MAP' : '',\n\t\t\tparameters.envMap ? '#define USE_ENVMAP' : '',\n\t\t\tparameters.envMap ? '#define ' + envMapModeDefine : '',\n\t\t\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\n\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\n\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.objectSpaceNormalMap ) ? '#define OBJECTSPACE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.tangentSpaceNormalMap ) ? '#define TANGENTSPACE_NORMALMAP' : '',\n\n\t\t\tparameters.clearcoatMap ? '#define USE_CLEARCOATMAP' : '',\n\t\t\tparameters.clearcoatRoughnessMap ? '#define USE_CLEARCOAT_ROUGHNESSMAP' : '',\n\t\t\tparameters.clearcoatNormalMap ? '#define USE_CLEARCOAT_NORMALMAP' : '',\n\n\t\t\tparameters.iridescenceMap ? '#define USE_IRIDESCENCEMAP' : '',\n\t\t\tparameters.iridescenceThicknessMap ? '#define USE_IRIDESCENCE_THICKNESSMAP' : '',\n\n\t\t\tparameters.displacementMap && parameters.supportsVertexTextures ? '#define USE_DISPLACEMENTMAP' : '',\n\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.specularIntensityMap ? '#define USE_SPECULARINTENSITYMAP' : '',\n\t\t\tparameters.specularColorMap ? '#define USE_SPECULARCOLORMAP' : '',\n\n\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\n\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\n\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\n\n\t\t\tparameters.transmission ? '#define USE_TRANSMISSION' : '',\n\t\t\tparameters.transmissionMap ? '#define USE_TRANSMISSIONMAP' : '',\n\t\t\tparameters.thicknessMap ? '#define USE_THICKNESSMAP' : '',\n\n\t\t\tparameters.sheenColorMap ? '#define USE_SHEENCOLORMAP' : '',\n\t\t\tparameters.sheenRoughnessMap ? '#define USE_SHEENROUGHNESSMAP' : '',\n\n\t\t\tparameters.vertexTangents ? '#define USE_TANGENT' : '',\n\t\t\tparameters.vertexColors ? '#define USE_COLOR' : '',\n\t\t\tparameters.vertexAlphas ? '#define USE_COLOR_ALPHA' : '',\n\t\t\tparameters.vertexUvs ? '#define USE_UV' : '',\n\t\t\tparameters.uvsVertexOnly ? '#define UVS_VERTEX_ONLY' : '',\n\n\t\t\tparameters.flatShading ? '#define FLAT_SHADED' : '',\n\n\t\t\tparameters.skinning ? '#define USE_SKINNING' : '',\n\n\t\t\tparameters.morphTargets ? '#define USE_MORPHTARGETS' : '',\n\t\t\tparameters.morphNormals && parameters.flatShading === false ? '#define USE_MORPHNORMALS' : '',\n\t\t\t( parameters.morphColors && parameters.isWebGL2 ) ? '#define USE_MORPHCOLORS' : '',\n\t\t\t( parameters.morphTargetsCount > 0 && parameters.isWebGL2 ) ? '#define MORPHTARGETS_TEXTURE' : '',\n\t\t\t( parameters.morphTargetsCount > 0 && parameters.isWebGL2 ) ? '#define MORPHTARGETS_TEXTURE_STRIDE ' + parameters.morphTextureStride : '',\n\t\t\t( parameters.morphTargetsCount > 0 && parameters.isWebGL2 ) ? '#define MORPHTARGETS_COUNT ' + parameters.morphTargetsCount : '',\n\t\t\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\n\t\t\tparameters.flipSided ? '#define FLIP_SIDED' : '',\n\n\t\t\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\n\t\t\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\n\n\t\t\tparameters.sizeAttenuation ? '#define USE_SIZEATTENUATION' : '',\n\n\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\t\t\t( parameters.logarithmicDepthBuffer && parameters.rendererExtensionFragDepth ) ? '#define USE_LOGDEPTHBUF_EXT' : '',\n\n\t\t\t'uniform mat4 modelMatrix;',\n\t\t\t'uniform mat4 modelViewMatrix;',\n\t\t\t'uniform mat4 projectionMatrix;',\n\t\t\t'uniform mat4 viewMatrix;',\n\t\t\t'uniform mat3 normalMatrix;',\n\t\t\t'uniform vec3 cameraPosition;',\n\t\t\t'uniform bool isOrthographic;',\n\n\t\t\t'#ifdef USE_INSTANCING',\n\n\t\t\t'\tattribute mat4 instanceMatrix;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_INSTANCING_COLOR',\n\n\t\t\t'\tattribute vec3 instanceColor;',\n\n\t\t\t'#endif',\n\n\t\t\t'attribute vec3 position;',\n\t\t\t'attribute vec3 normal;',\n\t\t\t'attribute vec2 uv;',\n\n\t\t\t'#ifdef USE_TANGENT',\n\n\t\t\t'\tattribute vec4 tangent;',\n\n\t\t\t'#endif',\n\n\t\t\t'#if defined( USE_COLOR_ALPHA )',\n\n\t\t\t'\tattribute vec4 color;',\n\n\t\t\t'#elif defined( USE_COLOR )',\n\n\t\t\t'\tattribute vec3 color;',\n\n\t\t\t'#endif',\n\n\t\t\t'#if ( defined( USE_MORPHTARGETS ) && ! defined( MORPHTARGETS_TEXTURE ) )',\n\n\t\t\t'\tattribute vec3 morphTarget0;',\n\t\t\t'\tattribute vec3 morphTarget1;',\n\t\t\t'\tattribute vec3 morphTarget2;',\n\t\t\t'\tattribute vec3 morphTarget3;',\n\n\t\t\t'\t#ifdef USE_MORPHNORMALS',\n\n\t\t\t'\t\tattribute vec3 morphNormal0;',\n\t\t\t'\t\tattribute vec3 morphNormal1;',\n\t\t\t'\t\tattribute vec3 morphNormal2;',\n\t\t\t'\t\tattribute vec3 morphNormal3;',\n\n\t\t\t'\t#else',\n\n\t\t\t'\t\tattribute vec3 morphTarget4;',\n\t\t\t'\t\tattribute vec3 morphTarget5;',\n\t\t\t'\t\tattribute vec3 morphTarget6;',\n\t\t\t'\t\tattribute vec3 morphTarget7;',\n\n\t\t\t'\t#endif',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_SKINNING',\n\n\t\t\t'\tattribute vec4 skinIndex;',\n\t\t\t'\tattribute vec4 skinWeight;',\n\n\t\t\t'#endif',\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tprefixFragment = [\n\n\t\t\tcustomExtensions,\n\n\t\t\tgeneratePrecision( parameters ),\n\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\n\n\t\t\tcustomDefines,\n\n\t\t\t( parameters.useFog && parameters.fog ) ? '#define USE_FOG' : '',\n\t\t\t( parameters.useFog && parameters.fogExp2 ) ? '#define FOG_EXP2' : '',\n\n\t\t\tparameters.map ? '#define USE_MAP' : '',\n\t\t\tparameters.matcap ? '#define USE_MATCAP' : '',\n\t\t\tparameters.envMap ? '#define USE_ENVMAP' : '',\n\t\t\tparameters.envMap ? '#define ' + envMapTypeDefine : '',\n\t\t\tparameters.envMap ? '#define ' + envMapModeDefine : '',\n\t\t\tparameters.envMap ? '#define ' + envMapBlendingDefine : '',\n\t\t\tenvMapCubeUVSize ? '#define CUBEUV_TEXEL_WIDTH ' + envMapCubeUVSize.texelWidth : '',\n\t\t\tenvMapCubeUVSize ? '#define CUBEUV_TEXEL_HEIGHT ' + envMapCubeUVSize.texelHeight : '',\n\t\t\tenvMapCubeUVSize ? '#define CUBEUV_MAX_MIP ' + envMapCubeUVSize.maxMip + '.0' : '',\n\t\t\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\n\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\n\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.objectSpaceNormalMap ) ? '#define OBJECTSPACE_NORMALMAP' : '',\n\t\t\t( parameters.normalMap && parameters.tangentSpaceNormalMap ) ? '#define TANGENTSPACE_NORMALMAP' : '',\n\n\t\t\tparameters.clearcoat ? '#define USE_CLEARCOAT' : '',\n\t\t\tparameters.clearcoatMap ? '#define USE_CLEARCOATMAP' : '',\n\t\t\tparameters.clearcoatRoughnessMap ? '#define USE_CLEARCOAT_ROUGHNESSMAP' : '',\n\t\t\tparameters.clearcoatNormalMap ? '#define USE_CLEARCOAT_NORMALMAP' : '',\n\n\t\t\tparameters.iridescence ? '#define USE_IRIDESCENCE' : '',\n\t\t\tparameters.iridescenceMap ? '#define USE_IRIDESCENCEMAP' : '',\n\t\t\tparameters.iridescenceThicknessMap ? '#define USE_IRIDESCENCE_THICKNESSMAP' : '',\n\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.specularIntensityMap ? '#define USE_SPECULARINTENSITYMAP' : '',\n\t\t\tparameters.specularColorMap ? '#define USE_SPECULARCOLORMAP' : '',\n\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\n\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\n\n\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\n\t\t\tparameters.alphaTest ? '#define USE_ALPHATEST' : '',\n\n\t\t\tparameters.sheen ? '#define USE_SHEEN' : '',\n\t\t\tparameters.sheenColorMap ? '#define USE_SHEENCOLORMAP' : '',\n\t\t\tparameters.sheenRoughnessMap ? '#define USE_SHEENROUGHNESSMAP' : '',\n\n\t\t\tparameters.transmission ? '#define USE_TRANSMISSION' : '',\n\t\t\tparameters.transmissionMap ? '#define USE_TRANSMISSIONMAP' : '',\n\t\t\tparameters.thicknessMap ? '#define USE_THICKNESSMAP' : '',\n\n\t\t\tparameters.decodeVideoTexture ? '#define DECODE_VIDEO_TEXTURE' : '',\n\n\t\t\tparameters.vertexTangents ? '#define USE_TANGENT' : '',\n\t\t\tparameters.vertexColors || parameters.instancingColor ? '#define USE_COLOR' : '',\n\t\t\tparameters.vertexAlphas ? '#define USE_COLOR_ALPHA' : '',\n\t\t\tparameters.vertexUvs ? '#define USE_UV' : '',\n\t\t\tparameters.uvsVertexOnly ? '#define UVS_VERTEX_ONLY' : '',\n\n\t\t\tparameters.gradientMap ? '#define USE_GRADIENTMAP' : '',\n\n\t\t\tparameters.flatShading ? '#define FLAT_SHADED' : '',\n\n\t\t\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\n\t\t\tparameters.flipSided ? '#define FLIP_SIDED' : '',\n\n\t\t\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\n\t\t\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\n\n\t\t\tparameters.premultipliedAlpha ? '#define PREMULTIPLIED_ALPHA' : '',\n\n\t\t\tparameters.physicallyCorrectLights ? '#define PHYSICALLY_CORRECT_LIGHTS' : '',\n\n\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\t\t\t( parameters.logarithmicDepthBuffer && parameters.rendererExtensionFragDepth ) ? '#define USE_LOGDEPTHBUF_EXT' : '',\n\n\t\t\t'uniform mat4 viewMatrix;',\n\t\t\t'uniform vec3 cameraPosition;',\n\t\t\t'uniform bool isOrthographic;',\n\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? '#define TONE_MAPPING' : '',\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? ShaderChunk[ 'tonemapping_pars_fragment' ] : '', // this code is required here because it is used by the toneMapping() function defined below\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? getToneMappingFunction( 'toneMapping', parameters.toneMapping ) : '',\n\n\t\t\tparameters.dithering ? '#define DITHERING' : '',\n\t\t\tparameters.opaque ? '#define OPAQUE' : '',\n\n\t\t\tShaderChunk[ 'encodings_pars_fragment' ], // this code is required here because it is used by the various encoding/decoding function defined below\n\t\t\tgetTexelEncodingFunction( 'linearToOutputTexel', parameters.outputEncoding ),\n\n\t\t\tparameters.useDepthPacking ? '#define DEPTH_PACKING ' + parameters.depthPacking : '',\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t}\n\n\tvertexShader = resolveIncludes( vertexShader );\n\tvertexShader = replaceLightNums( vertexShader, parameters );\n\tvertexShader = replaceClippingPlaneNums( vertexShader, parameters );\n\n\tfragmentShader = resolveIncludes( fragmentShader );\n\tfragmentShader = replaceLightNums( fragmentShader, parameters );\n\tfragmentShader = replaceClippingPlaneNums( fragmentShader, parameters );\n\n\tvertexShader = unrollLoops( vertexShader );\n\tfragmentShader = unrollLoops( fragmentShader );\n\n\tif ( parameters.isWebGL2 && parameters.isRawShaderMaterial !== true ) {\n\n\t\t// GLSL 3.0 conversion for built-in materials and ShaderMaterial\n\n\t\tversionString = '#version 300 es\\n';\n\n\t\tprefixVertex = [\n\t\t\t'precision mediump sampler2DArray;',\n\t\t\t'#define attribute in',\n\t\t\t'#define varying out',\n\t\t\t'#define texture2D texture'\n\t\t].join( '\\n' ) + '\\n' + prefixVertex;\n\n\t\tprefixFragment = [\n\t\t\t'#define varying in',\n\t\t\t( parameters.glslVersion === GLSL3 ) ? '' : 'layout(location = 0) out highp vec4 pc_fragColor;',\n\t\t\t( parameters.glslVersion === GLSL3 ) ? '' : '#define gl_FragColor pc_fragColor',\n\t\t\t'#define gl_FragDepthEXT gl_FragDepth',\n\t\t\t'#define texture2D texture',\n\t\t\t'#define textureCube texture',\n\t\t\t'#define texture2DProj textureProj',\n\t\t\t'#define texture2DLodEXT textureLod',\n\t\t\t'#define texture2DProjLodEXT textureProjLod',\n\t\t\t'#define textureCubeLodEXT textureLod',\n\t\t\t'#define texture2DGradEXT textureGrad',\n\t\t\t'#define texture2DProjGradEXT textureProjGrad',\n\t\t\t'#define textureCubeGradEXT textureGrad'\n\t\t].join( '\\n' ) + '\\n' + prefixFragment;\n\n\t}\n\n\tconst vertexGlsl = versionString + prefixVertex + vertexShader;\n\tconst fragmentGlsl = versionString + prefixFragment + fragmentShader;\n\n\t// console.log( '*VERTEX*', vertexGlsl );\n\t// console.log( '*FRAGMENT*', fragmentGlsl );\n\n\tconst glVertexShader = WebGLShader( gl, 35633, vertexGlsl );\n\tconst glFragmentShader = WebGLShader( gl, 35632, fragmentGlsl );\n\n\tgl.attachShader( program, glVertexShader );\n\tgl.attachShader( program, glFragmentShader );\n\n\t// Force a particular attribute to index 0.\n\n\tif ( parameters.index0AttributeName !== undefined ) {\n\n\t\tgl.bindAttribLocation( program, 0, parameters.index0AttributeName );\n\n\t} else if ( parameters.morphTargets === true ) {\n\n\t\t// programs with morphTargets displace position out of attribute 0\n\t\tgl.bindAttribLocation( program, 0, 'position' );\n\n\t}\n\n\tgl.linkProgram( program );\n\n\t// check for link errors\n\tif ( renderer.debug.checkShaderErrors ) {\n\n\t\tconst programLog = gl.getProgramInfoLog( program ).trim();\n\t\tconst vertexLog = gl.getShaderInfoLog( glVertexShader ).trim();\n\t\tconst fragmentLog = gl.getShaderInfoLog( glFragmentShader ).trim();\n\n\t\tlet runnable = true;\n\t\tlet haveDiagnostics = true;\n\n\t\tif ( gl.getProgramParameter( program, 35714 ) === false ) {\n\n\t\t\trunnable = false;\n\n\t\t\tconst vertexErrors = getShaderErrors( gl, glVertexShader, 'vertex' );\n\t\t\tconst fragmentErrors = getShaderErrors( gl, glFragmentShader, 'fragment' );\n\n\t\t\tconsole.error(\n\t\t\t\t'THREE.WebGLProgram: Shader Error ' + gl.getError() + ' - ' +\n\t\t\t\t'VALIDATE_STATUS ' + gl.getProgramParameter( program, 35715 ) + '\\n\\n' +\n\t\t\t\t'Program Info Log: ' + programLog + '\\n' +\n\t\t\t\tvertexErrors + '\\n' +\n\t\t\t\tfragmentErrors\n\t\t\t);\n\n\t\t} else if ( programLog !== '' ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLProgram: Program Info Log:', programLog );\n\n\t\t} else if ( vertexLog === '' || fragmentLog === '' ) {\n\n\t\t\thaveDiagnostics = false;\n\n\t\t}\n\n\t\tif ( haveDiagnostics ) {\n\n\t\t\tthis.diagnostics = {\n\n\t\t\t\trunnable: runnable,\n\n\t\t\t\tprogramLog: programLog,\n\n\t\t\t\tvertexShader: {\n\n\t\t\t\t\tlog: vertexLog,\n\t\t\t\t\tprefix: prefixVertex\n\n\t\t\t\t},\n\n\t\t\t\tfragmentShader: {\n\n\t\t\t\t\tlog: fragmentLog,\n\t\t\t\t\tprefix: prefixFragment\n\n\t\t\t\t}\n\n\t\t\t};\n\n\t\t}\n\n\t}\n\n\t// Clean up\n\n\t// Crashes in iOS9 and iOS10. #18402\n\t// gl.detachShader( program, glVertexShader );\n\t// gl.detachShader( program, glFragmentShader );\n\n\tgl.deleteShader( glVertexShader );\n\tgl.deleteShader( glFragmentShader );\n\n\t// set up caching for uniform locations\n\n\tlet cachedUniforms;\n\n\tthis.getUniforms = function () {\n\n\t\tif ( cachedUniforms === undefined ) {\n\n\t\t\tcachedUniforms = new WebGLUniforms( gl, program );\n\n\t\t}\n\n\t\treturn cachedUniforms;\n\n\t};\n\n\t// set up caching for attribute locations\n\n\tlet cachedAttributes;\n\n\tthis.getAttributes = function () {\n\n\t\tif ( cachedAttributes === undefined ) {\n\n\t\t\tcachedAttributes = fetchAttributeLocations( gl, program );\n\n\t\t}\n\n\t\treturn cachedAttributes;\n\n\t};\n\n\t// free resource\n\n\tthis.destroy = function () {\n\n\t\tbindingStates.releaseStatesOfProgram( this );\n\n\t\tgl.deleteProgram( program );\n\t\tthis.program = undefined;\n\n\t};\n\n\t//\n\n\tthis.name = parameters.shaderName;\n\tthis.id = programIdCount ++;\n\tthis.cacheKey = cacheKey;\n\tthis.usedTimes = 1;\n\tthis.program = program;\n\tthis.vertexShader = glVertexShader;\n\tthis.fragmentShader = glFragmentShader;\n\n\treturn this;\n\n}\n\nlet _id = 0;\n\nclass WebGLShaderCache {\n\n\tconstructor() {\n\n\t\tthis.shaderCache = new Map();\n\t\tthis.materialCache = new Map();\n\n\t}\n\n\tupdate( material ) {\n\n\t\tconst vertexShader = material.vertexShader;\n\t\tconst fragmentShader = material.fragmentShader;\n\n\t\tconst vertexShaderStage = this._getShaderStage( vertexShader );\n\t\tconst fragmentShaderStage = this._getShaderStage( fragmentShader );\n\n\t\tconst materialShaders = this._getShaderCacheForMaterial( material );\n\n\t\tif ( materialShaders.has( vertexShaderStage ) === false ) {\n\n\t\t\tmaterialShaders.add( vertexShaderStage );\n\t\t\tvertexShaderStage.usedTimes ++;\n\n\t\t}\n\n\t\tif ( materialShaders.has( fragmentShaderStage ) === false ) {\n\n\t\t\tmaterialShaders.add( fragmentShaderStage );\n\t\t\tfragmentShaderStage.usedTimes ++;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tremove( material ) {\n\n\t\tconst materialShaders = this.materialCache.get( material );\n\n\t\tfor ( const shaderStage of materialShaders ) {\n\n\t\t\tshaderStage.usedTimes --;\n\n\t\t\tif ( shaderStage.usedTimes === 0 ) this.shaderCache.delete( shaderStage.code );\n\n\t\t}\n\n\t\tthis.materialCache.delete( material );\n\n\t\treturn this;\n\n\t}\n\n\tgetVertexShaderID( material ) {\n\n\t\treturn this._getShaderStage( material.vertexShader ).id;\n\n\t}\n\n\tgetFragmentShaderID( material ) {\n\n\t\treturn this._getShaderStage( material.fragmentShader ).id;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.shaderCache.clear();\n\t\tthis.materialCache.clear();\n\n\t}\n\n\t_getShaderCacheForMaterial( material ) {\n\n\t\tconst cache = this.materialCache;\n\n\t\tif ( cache.has( material ) === false ) {\n\n\t\t\tcache.set( material, new Set() );\n\n\t\t}\n\n\t\treturn cache.get( material );\n\n\t}\n\n\t_getShaderStage( code ) {\n\n\t\tconst cache = this.shaderCache;\n\n\t\tif ( cache.has( code ) === false ) {\n\n\t\t\tconst stage = new WebGLShaderStage( code );\n\t\t\tcache.set( code, stage );\n\n\t\t}\n\n\t\treturn cache.get( code );\n\n\t}\n\n}\n\nclass WebGLShaderStage {\n\n\tconstructor( code ) {\n\n\t\tthis.id = _id ++;\n\n\t\tthis.code = code;\n\t\tthis.usedTimes = 0;\n\n\t}\n\n}\n\nfunction WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities, bindingStates, clipping ) {\n\n\tconst _programLayers = new Layers();\n\tconst _customShaders = new WebGLShaderCache();\n\tconst programs = [];\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\tconst logarithmicDepthBuffer = capabilities.logarithmicDepthBuffer;\n\tconst vertexTextures = capabilities.vertexTextures;\n\tlet precision = capabilities.precision;\n\n\tconst shaderIDs = {\n\t\tMeshDepthMaterial: 'depth',\n\t\tMeshDistanceMaterial: 'distanceRGBA',\n\t\tMeshNormalMaterial: 'normal',\n\t\tMeshBasicMaterial: 'basic',\n\t\tMeshLambertMaterial: 'lambert',\n\t\tMeshPhongMaterial: 'phong',\n\t\tMeshToonMaterial: 'toon',\n\t\tMeshStandardMaterial: 'physical',\n\t\tMeshPhysicalMaterial: 'physical',\n\t\tMeshMatcapMaterial: 'matcap',\n\t\tLineBasicMaterial: 'basic',\n\t\tLineDashedMaterial: 'dashed',\n\t\tPointsMaterial: 'points',\n\t\tShadowMaterial: 'shadow',\n\t\tSpriteMaterial: 'sprite'\n\t};\n\n\tfunction getParameters( material, lights, shadows, scene, object ) {\n\n\t\tconst fog = scene.fog;\n\t\tconst geometry = object.geometry;\n\t\tconst environment = material.isMeshStandardMaterial ? scene.environment : null;\n\n\t\tconst envMap = ( material.isMeshStandardMaterial ? cubeuvmaps : cubemaps ).get( material.envMap || environment );\n\t\tconst envMapCubeUVHeight = ( !! envMap ) && ( envMap.mapping === CubeUVReflectionMapping ) ? envMap.image.height : null;\n\n\t\tconst shaderID = shaderIDs[ material.type ];\n\n\t\t// heuristics to create shader parameters according to lights in the scene\n\t\t// (not to blow over maxLights budget)\n\n\t\tif ( material.precision !== null ) {\n\n\t\t\tprecision = capabilities.getMaxPrecision( material.precision );\n\n\t\t\tif ( precision !== material.precision ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLProgram.getParameters:', material.precision, 'not supported, using', precision, 'instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tconst morphAttribute = geometry.morphAttributes.position || geometry.morphAttributes.normal || geometry.morphAttributes.color;\n\t\tconst morphTargetsCount = ( morphAttribute !== undefined ) ? morphAttribute.length : 0;\n\n\t\tlet morphTextureStride = 0;\n\n\t\tif ( geometry.morphAttributes.position !== undefined ) morphTextureStride = 1;\n\t\tif ( geometry.morphAttributes.normal !== undefined ) morphTextureStride = 2;\n\t\tif ( geometry.morphAttributes.color !== undefined ) morphTextureStride = 3;\n\n\t\t//\n\n\t\tlet vertexShader, fragmentShader;\n\t\tlet customVertexShaderID, customFragmentShaderID;\n\n\t\tif ( shaderID ) {\n\n\t\t\tconst shader = ShaderLib[ shaderID ];\n\n\t\t\tvertexShader = shader.vertexShader;\n\t\t\tfragmentShader = shader.fragmentShader;\n\n\t\t} else {\n\n\t\t\tvertexShader = material.vertexShader;\n\t\t\tfragmentShader = material.fragmentShader;\n\n\t\t\t_customShaders.update( material );\n\n\t\t\tcustomVertexShaderID = _customShaders.getVertexShaderID( material );\n\t\t\tcustomFragmentShaderID = _customShaders.getFragmentShaderID( material );\n\n\t\t}\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\tconst useAlphaTest = material.alphaTest > 0;\n\t\tconst useClearcoat = material.clearcoat > 0;\n\t\tconst useIridescence = material.iridescence > 0;\n\n\t\tconst parameters = {\n\n\t\t\tisWebGL2: isWebGL2,\n\n\t\t\tshaderID: shaderID,\n\t\t\tshaderName: material.type,\n\n\t\t\tvertexShader: vertexShader,\n\t\t\tfragmentShader: fragmentShader,\n\t\t\tdefines: material.defines,\n\n\t\t\tcustomVertexShaderID: customVertexShaderID,\n\t\t\tcustomFragmentShaderID: customFragmentShaderID,\n\n\t\t\tisRawShaderMaterial: material.isRawShaderMaterial === true,\n\t\t\tglslVersion: material.glslVersion,\n\n\t\t\tprecision: precision,\n\n\t\t\tinstancing: object.isInstancedMesh === true,\n\t\t\tinstancingColor: object.isInstancedMesh === true && object.instanceColor !== null,\n\n\t\t\tsupportsVertexTextures: vertexTextures,\n\t\t\toutputEncoding: ( currentRenderTarget === null ) ? renderer.outputEncoding : ( currentRenderTarget.isXRRenderTarget === true ? currentRenderTarget.texture.encoding : LinearEncoding ),\n\t\t\tmap: !! material.map,\n\t\t\tmatcap: !! material.matcap,\n\t\t\tenvMap: !! envMap,\n\t\t\tenvMapMode: envMap && envMap.mapping,\n\t\t\tenvMapCubeUVHeight: envMapCubeUVHeight,\n\t\t\tlightMap: !! material.lightMap,\n\t\t\taoMap: !! material.aoMap,\n\t\t\temissiveMap: !! material.emissiveMap,\n\t\t\tbumpMap: !! material.bumpMap,\n\t\t\tnormalMap: !! material.normalMap,\n\t\t\tobjectSpaceNormalMap: material.normalMapType === ObjectSpaceNormalMap,\n\t\t\ttangentSpaceNormalMap: material.normalMapType === TangentSpaceNormalMap,\n\n\t\t\tdecodeVideoTexture: !! material.map && ( material.map.isVideoTexture === true ) && ( material.map.encoding === sRGBEncoding ),\n\n\t\t\tclearcoat: useClearcoat,\n\t\t\tclearcoatMap: useClearcoat && !! material.clearcoatMap,\n\t\t\tclearcoatRoughnessMap: useClearcoat && !! material.clearcoatRoughnessMap,\n\t\t\tclearcoatNormalMap: useClearcoat && !! material.clearcoatNormalMap,\n\n\t\t\tiridescence: useIridescence,\n\t\t\tiridescenceMap: useIridescence && !! material.iridescenceMap,\n\t\t\tiridescenceThicknessMap: useIridescence && !! material.iridescenceThicknessMap,\n\n\t\t\tdisplacementMap: !! material.displacementMap,\n\t\t\troughnessMap: !! material.roughnessMap,\n\t\t\tmetalnessMap: !! material.metalnessMap,\n\t\t\tspecularMap: !! material.specularMap,\n\t\t\tspecularIntensityMap: !! material.specularIntensityMap,\n\t\t\tspecularColorMap: !! material.specularColorMap,\n\n\t\t\topaque: material.transparent === false && material.blending === NormalBlending,\n\n\t\t\talphaMap: !! material.alphaMap,\n\t\t\talphaTest: useAlphaTest,\n\n\t\t\tgradientMap: !! material.gradientMap,\n\n\t\t\tsheen: material.sheen > 0,\n\t\t\tsheenColorMap: !! material.sheenColorMap,\n\t\t\tsheenRoughnessMap: !! material.sheenRoughnessMap,\n\n\t\t\ttransmission: material.transmission > 0,\n\t\t\ttransmissionMap: !! material.transmissionMap,\n\t\t\tthicknessMap: !! material.thicknessMap,\n\n\t\t\tcombine: material.combine,\n\n\t\t\tvertexTangents: ( !! material.normalMap && !! geometry.attributes.tangent ),\n\t\t\tvertexColors: material.vertexColors,\n\t\t\tvertexAlphas: material.vertexColors === true && !! geometry.attributes.color && geometry.attributes.color.itemSize === 4,\n\t\t\tvertexUvs: !! material.map || !! material.bumpMap || !! material.normalMap || !! material.specularMap || !! material.alphaMap || !! material.emissiveMap || !! material.roughnessMap || !! material.metalnessMap || !! material.clearcoatMap || !! material.clearcoatRoughnessMap || !! material.clearcoatNormalMap || !! material.iridescenceMap || !! material.iridescenceThicknessMap || !! material.displacementMap || !! material.transmissionMap || !! material.thicknessMap || !! material.specularIntensityMap || !! material.specularColorMap || !! material.sheenColorMap || !! material.sheenRoughnessMap,\n\t\t\tuvsVertexOnly: ! ( !! material.map || !! material.bumpMap || !! material.normalMap || !! material.specularMap || !! material.alphaMap || !! material.emissiveMap || !! material.roughnessMap || !! material.metalnessMap || !! material.clearcoatNormalMap || !! material.iridescenceMap || !! material.iridescenceThicknessMap || material.transmission > 0 || !! material.transmissionMap || !! material.thicknessMap || !! material.specularIntensityMap || !! material.specularColorMap || material.sheen > 0 || !! material.sheenColorMap || !! material.sheenRoughnessMap ) && !! material.displacementMap,\n\n\t\t\tfog: !! fog,\n\t\t\tuseFog: material.fog === true,\n\t\t\tfogExp2: ( fog && fog.isFogExp2 ),\n\n\t\t\tflatShading: !! material.flatShading,\n\n\t\t\tsizeAttenuation: material.sizeAttenuation,\n\t\t\tlogarithmicDepthBuffer: logarithmicDepthBuffer,\n\n\t\t\tskinning: object.isSkinnedMesh === true,\n\n\t\t\tmorphTargets: geometry.morphAttributes.position !== undefined,\n\t\t\tmorphNormals: geometry.morphAttributes.normal !== undefined,\n\t\t\tmorphColors: geometry.morphAttributes.color !== undefined,\n\t\t\tmorphTargetsCount: morphTargetsCount,\n\t\t\tmorphTextureStride: morphTextureStride,\n\n\t\t\tnumDirLights: lights.directional.length,\n\t\t\tnumPointLights: lights.point.length,\n\t\t\tnumSpotLights: lights.spot.length,\n\t\t\tnumRectAreaLights: lights.rectArea.length,\n\t\t\tnumHemiLights: lights.hemi.length,\n\n\t\t\tnumDirLightShadows: lights.directionalShadowMap.length,\n\t\t\tnumPointLightShadows: lights.pointShadowMap.length,\n\t\t\tnumSpotLightShadows: lights.spotShadowMap.length,\n\n\t\t\tnumClippingPlanes: clipping.numPlanes,\n\t\t\tnumClipIntersection: clipping.numIntersection,\n\n\t\t\tdithering: material.dithering,\n\n\t\t\tshadowMapEnabled: renderer.shadowMap.enabled && shadows.length > 0,\n\t\t\tshadowMapType: renderer.shadowMap.type,\n\n\t\t\ttoneMapping: material.toneMapped ? renderer.toneMapping : NoToneMapping,\n\t\t\tphysicallyCorrectLights: renderer.physicallyCorrectLights,\n\n\t\t\tpremultipliedAlpha: material.premultipliedAlpha,\n\n\t\t\tdoubleSided: material.side === DoubleSide,\n\t\t\tflipSided: material.side === BackSide,\n\n\t\t\tuseDepthPacking: !! material.depthPacking,\n\t\t\tdepthPacking: material.depthPacking || 0,\n\n\t\t\tindex0AttributeName: material.index0AttributeName,\n\n\t\t\textensionDerivatives: material.extensions && material.extensions.derivatives,\n\t\t\textensionFragDepth: material.extensions && material.extensions.fragDepth,\n\t\t\textensionDrawBuffers: material.extensions && material.extensions.drawBuffers,\n\t\t\textensionShaderTextureLOD: material.extensions && material.extensions.shaderTextureLOD,\n\n\t\t\trendererExtensionFragDepth: isWebGL2 || extensions.has( 'EXT_frag_depth' ),\n\t\t\trendererExtensionDrawBuffers: isWebGL2 || extensions.has( 'WEBGL_draw_buffers' ),\n\t\t\trendererExtensionShaderTextureLod: isWebGL2 || extensions.has( 'EXT_shader_texture_lod' ),\n\n\t\t\tcustomProgramCacheKey: material.customProgramCacheKey()\n\n\t\t};\n\n\t\treturn parameters;\n\n\t}\n\n\tfunction getProgramCacheKey( parameters ) {\n\n\t\tconst array = [];\n\n\t\tif ( parameters.shaderID ) {\n\n\t\t\tarray.push( parameters.shaderID );\n\n\t\t} else {\n\n\t\t\tarray.push( parameters.customVertexShaderID );\n\t\t\tarray.push( parameters.customFragmentShaderID );\n\n\t\t}\n\n\t\tif ( parameters.defines !== undefined ) {\n\n\t\t\tfor ( const name in parameters.defines ) {\n\n\t\t\t\tarray.push( name );\n\t\t\t\tarray.push( parameters.defines[ name ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( parameters.isRawShaderMaterial === false ) {\n\n\t\t\tgetProgramCacheKeyParameters( array, parameters );\n\t\t\tgetProgramCacheKeyBooleans( array, parameters );\n\t\t\tarray.push( renderer.outputEncoding );\n\n\t\t}\n\n\t\tarray.push( parameters.customProgramCacheKey );\n\n\t\treturn array.join();\n\n\t}\n\n\tfunction getProgramCacheKeyParameters( array, parameters ) {\n\n\t\tarray.push( parameters.precision );\n\t\tarray.push( parameters.outputEncoding );\n\t\tarray.push( parameters.envMapMode );\n\t\tarray.push( parameters.envMapCubeUVHeight );\n\t\tarray.push( parameters.combine );\n\t\tarray.push( parameters.vertexUvs );\n\t\tarray.push( parameters.fogExp2 );\n\t\tarray.push( parameters.sizeAttenuation );\n\t\tarray.push( parameters.morphTargetsCount );\n\t\tarray.push( parameters.morphAttributeCount );\n\t\tarray.push( parameters.numDirLights );\n\t\tarray.push( parameters.numPointLights );\n\t\tarray.push( parameters.numSpotLights );\n\t\tarray.push( parameters.numHemiLights );\n\t\tarray.push( parameters.numRectAreaLights );\n\t\tarray.push( parameters.numDirLightShadows );\n\t\tarray.push( parameters.numPointLightShadows );\n\t\tarray.push( parameters.numSpotLightShadows );\n\t\tarray.push( parameters.shadowMapType );\n\t\tarray.push( parameters.toneMapping );\n\t\tarray.push( parameters.numClippingPlanes );\n\t\tarray.push( parameters.numClipIntersection );\n\t\tarray.push( parameters.depthPacking );\n\n\t}\n\n\tfunction getProgramCacheKeyBooleans( array, parameters ) {\n\n\t\t_programLayers.disableAll();\n\n\t\tif ( parameters.isWebGL2 )\n\t\t\t_programLayers.enable( 0 );\n\t\tif ( parameters.supportsVertexTextures )\n\t\t\t_programLayers.enable( 1 );\n\t\tif ( parameters.instancing )\n\t\t\t_programLayers.enable( 2 );\n\t\tif ( parameters.instancingColor )\n\t\t\t_programLayers.enable( 3 );\n\t\tif ( parameters.map )\n\t\t\t_programLayers.enable( 4 );\n\t\tif ( parameters.matcap )\n\t\t\t_programLayers.enable( 5 );\n\t\tif ( parameters.envMap )\n\t\t\t_programLayers.enable( 6 );\n\t\tif ( parameters.lightMap )\n\t\t\t_programLayers.enable( 7 );\n\t\tif ( parameters.aoMap )\n\t\t\t_programLayers.enable( 8 );\n\t\tif ( parameters.emissiveMap )\n\t\t\t_programLayers.enable( 9 );\n\t\tif ( parameters.bumpMap )\n\t\t\t_programLayers.enable( 10 );\n\t\tif ( parameters.normalMap )\n\t\t\t_programLayers.enable( 11 );\n\t\tif ( parameters.objectSpaceNormalMap )\n\t\t\t_programLayers.enable( 12 );\n\t\tif ( parameters.tangentSpaceNormalMap )\n\t\t\t_programLayers.enable( 13 );\n\t\tif ( parameters.clearcoat )\n\t\t\t_programLayers.enable( 14 );\n\t\tif ( parameters.clearcoatMap )\n\t\t\t_programLayers.enable( 15 );\n\t\tif ( parameters.clearcoatRoughnessMap )\n\t\t\t_programLayers.enable( 16 );\n\t\tif ( parameters.clearcoatNormalMap )\n\t\t\t_programLayers.enable( 17 );\n\t\tif ( parameters.iridescence )\n\t\t\t_programLayers.enable( 18 );\n\t\tif ( parameters.iridescenceMap )\n\t\t\t_programLayers.enable( 19 );\n\t\tif ( parameters.iridescenceThicknessMap )\n\t\t\t_programLayers.enable( 20 );\n\t\tif ( parameters.displacementMap )\n\t\t\t_programLayers.enable( 21 );\n\t\tif ( parameters.specularMap )\n\t\t\t_programLayers.enable( 22 );\n\t\tif ( parameters.roughnessMap )\n\t\t\t_programLayers.enable( 23 );\n\t\tif ( parameters.metalnessMap )\n\t\t\t_programLayers.enable( 24 );\n\t\tif ( parameters.gradientMap )\n\t\t\t_programLayers.enable( 25 );\n\t\tif ( parameters.alphaMap )\n\t\t\t_programLayers.enable( 26 );\n\t\tif ( parameters.alphaTest )\n\t\t\t_programLayers.enable( 27 );\n\t\tif ( parameters.vertexColors )\n\t\t\t_programLayers.enable( 28 );\n\t\tif ( parameters.vertexAlphas )\n\t\t\t_programLayers.enable( 29 );\n\t\tif ( parameters.vertexUvs )\n\t\t\t_programLayers.enable( 30 );\n\t\tif ( parameters.vertexTangents )\n\t\t\t_programLayers.enable( 31 );\n\t\tif ( parameters.uvsVertexOnly )\n\t\t\t_programLayers.enable( 32 );\n\t\tif ( parameters.fog )\n\t\t\t_programLayers.enable( 33 );\n\n\t\tarray.push( _programLayers.mask );\n\t\t_programLayers.disableAll();\n\n\t\tif ( parameters.useFog )\n\t\t\t_programLayers.enable( 0 );\n\t\tif ( parameters.flatShading )\n\t\t\t_programLayers.enable( 1 );\n\t\tif ( parameters.logarithmicDepthBuffer )\n\t\t\t_programLayers.enable( 2 );\n\t\tif ( parameters.skinning )\n\t\t\t_programLayers.enable( 3 );\n\t\tif ( parameters.morphTargets )\n\t\t\t_programLayers.enable( 4 );\n\t\tif ( parameters.morphNormals )\n\t\t\t_programLayers.enable( 5 );\n\t\tif ( parameters.morphColors )\n\t\t\t_programLayers.enable( 6 );\n\t\tif ( parameters.premultipliedAlpha )\n\t\t\t_programLayers.enable( 7 );\n\t\tif ( parameters.shadowMapEnabled )\n\t\t\t_programLayers.enable( 8 );\n\t\tif ( parameters.physicallyCorrectLights )\n\t\t\t_programLayers.enable( 9 );\n\t\tif ( parameters.doubleSided )\n\t\t\t_programLayers.enable( 10 );\n\t\tif ( parameters.flipSided )\n\t\t\t_programLayers.enable( 11 );\n\t\tif ( parameters.useDepthPacking )\n\t\t\t_programLayers.enable( 12 );\n\t\tif ( parameters.dithering )\n\t\t\t_programLayers.enable( 13 );\n\t\tif ( parameters.specularIntensityMap )\n\t\t\t_programLayers.enable( 14 );\n\t\tif ( parameters.specularColorMap )\n\t\t\t_programLayers.enable( 15 );\n\t\tif ( parameters.transmission )\n\t\t\t_programLayers.enable( 16 );\n\t\tif ( parameters.transmissionMap )\n\t\t\t_programLayers.enable( 17 );\n\t\tif ( parameters.thicknessMap )\n\t\t\t_programLayers.enable( 18 );\n\t\tif ( parameters.sheen )\n\t\t\t_programLayers.enable( 19 );\n\t\tif ( parameters.sheenColorMap )\n\t\t\t_programLayers.enable( 20 );\n\t\tif ( parameters.sheenRoughnessMap )\n\t\t\t_programLayers.enable( 21 );\n\t\tif ( parameters.decodeVideoTexture )\n\t\t\t_programLayers.enable( 22 );\n\t\tif ( parameters.opaque )\n\t\t\t_programLayers.enable( 23 );\n\n\t\tarray.push( _programLayers.mask );\n\n\t}\n\n\tfunction getUniforms( material ) {\n\n\t\tconst shaderID = shaderIDs[ material.type ];\n\t\tlet uniforms;\n\n\t\tif ( shaderID ) {\n\n\t\t\tconst shader = ShaderLib[ shaderID ];\n\t\t\tuniforms = UniformsUtils.clone( shader.uniforms );\n\n\t\t} else {\n\n\t\t\tuniforms = material.uniforms;\n\n\t\t}\n\n\t\treturn uniforms;\n\n\t}\n\n\tfunction acquireProgram( parameters, cacheKey ) {\n\n\t\tlet program;\n\n\t\t// Check if code has been already compiled\n\t\tfor ( let p = 0, pl = programs.length; p < pl; p ++ ) {\n\n\t\t\tconst preexistingProgram = programs[ p ];\n\n\t\t\tif ( preexistingProgram.cacheKey === cacheKey ) {\n\n\t\t\t\tprogram = preexistingProgram;\n\t\t\t\t++ program.usedTimes;\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( program === undefined ) {\n\n\t\t\tprogram = new WebGLProgram( renderer, cacheKey, parameters, bindingStates );\n\t\t\tprograms.push( program );\n\n\t\t}\n\n\t\treturn program;\n\n\t}\n\n\tfunction releaseProgram( program ) {\n\n\t\tif ( -- program.usedTimes === 0 ) {\n\n\t\t\t// Remove from unordered set\n\t\t\tconst i = programs.indexOf( program );\n\t\t\tprograms[ i ] = programs[ programs.length - 1 ];\n\t\t\tprograms.pop();\n\n\t\t\t// Free WebGL resources\n\t\t\tprogram.destroy();\n\n\t\t}\n\n\t}\n\n\tfunction releaseShaderCache( material ) {\n\n\t\t_customShaders.remove( material );\n\n\t}\n\n\tfunction dispose() {\n\n\t\t_customShaders.dispose();\n\n\t}\n\n\treturn {\n\t\tgetParameters: getParameters,\n\t\tgetProgramCacheKey: getProgramCacheKey,\n\t\tgetUniforms: getUniforms,\n\t\tacquireProgram: acquireProgram,\n\t\treleaseProgram: releaseProgram,\n\t\treleaseShaderCache: releaseShaderCache,\n\t\t// Exposed for resource monitoring & error feedback via renderer.info:\n\t\tprograms: programs,\n\t\tdispose: dispose\n\t};\n\n}\n\nfunction WebGLProperties() {\n\n\tlet properties = new WeakMap();\n\n\tfunction get( object ) {\n\n\t\tlet map = properties.get( object );\n\n\t\tif ( map === undefined ) {\n\n\t\t\tmap = {};\n\t\t\tproperties.set( object, map );\n\n\t\t}\n\n\t\treturn map;\n\n\t}\n\n\tfunction remove( object ) {\n\n\t\tproperties.delete( object );\n\n\t}\n\n\tfunction update( object, key, value ) {\n\n\t\tproperties.get( object )[ key ] = value;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tproperties = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tremove: remove,\n\t\tupdate: update,\n\t\tdispose: dispose\n\t};\n\n}\n\nfunction painterSortStable( a, b ) {\n\n\tif ( a.groupOrder !== b.groupOrder ) {\n\n\t\treturn a.groupOrder - b.groupOrder;\n\n\t} else if ( a.renderOrder !== b.renderOrder ) {\n\n\t\treturn a.renderOrder - b.renderOrder;\n\n\t} else if ( a.material.id !== b.material.id ) {\n\n\t\treturn a.material.id - b.material.id;\n\n\t} else if ( a.z !== b.z ) {\n\n\t\treturn a.z - b.z;\n\n\t} else {\n\n\t\treturn a.id - b.id;\n\n\t}\n\n}\n\nfunction reversePainterSortStable( a, b ) {\n\n\tif ( a.groupOrder !== b.groupOrder ) {\n\n\t\treturn a.groupOrder - b.groupOrder;\n\n\t} else if ( a.renderOrder !== b.renderOrder ) {\n\n\t\treturn a.renderOrder - b.renderOrder;\n\n\t} else if ( a.z !== b.z ) {\n\n\t\treturn b.z - a.z;\n\n\t} else {\n\n\t\treturn a.id - b.id;\n\n\t}\n\n}\n\n\nfunction WebGLRenderList() {\n\n\tconst renderItems = [];\n\tlet renderItemsIndex = 0;\n\n\tconst opaque = [];\n\tconst transmissive = [];\n\tconst transparent = [];\n\n\tfunction init() {\n\n\t\trenderItemsIndex = 0;\n\n\t\topaque.length = 0;\n\t\ttransmissive.length = 0;\n\t\ttransparent.length = 0;\n\n\t}\n\n\tfunction getNextRenderItem( object, geometry, material, groupOrder, z, group ) {\n\n\t\tlet renderItem = renderItems[ renderItemsIndex ];\n\n\t\tif ( renderItem === undefined ) {\n\n\t\t\trenderItem = {\n\t\t\t\tid: object.id,\n\t\t\t\tobject: object,\n\t\t\t\tgeometry: geometry,\n\t\t\t\tmaterial: material,\n\t\t\t\tgroupOrder: groupOrder,\n\t\t\t\trenderOrder: object.renderOrder,\n\t\t\t\tz: z,\n\t\t\t\tgroup: group\n\t\t\t};\n\n\t\t\trenderItems[ renderItemsIndex ] = renderItem;\n\n\t\t} else {\n\n\t\t\trenderItem.id = object.id;\n\t\t\trenderItem.object = object;\n\t\t\trenderItem.geometry = geometry;\n\t\t\trenderItem.material = material;\n\t\t\trenderItem.groupOrder = groupOrder;\n\t\t\trenderItem.renderOrder = object.renderOrder;\n\t\t\trenderItem.z = z;\n\t\t\trenderItem.group = group;\n\n\t\t}\n\n\t\trenderItemsIndex ++;\n\n\t\treturn renderItem;\n\n\t}\n\n\tfunction push( object, geometry, material, groupOrder, z, group ) {\n\n\t\tconst renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group );\n\n\t\tif ( material.transmission > 0.0 ) {\n\n\t\t\ttransmissive.push( renderItem );\n\n\t\t} else if ( material.transparent === true ) {\n\n\t\t\ttransparent.push( renderItem );\n\n\t\t} else {\n\n\t\t\topaque.push( renderItem );\n\n\t\t}\n\n\t}\n\n\tfunction unshift( object, geometry, material, groupOrder, z, group ) {\n\n\t\tconst renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group );\n\n\t\tif ( material.transmission > 0.0 ) {\n\n\t\t\ttransmissive.unshift( renderItem );\n\n\t\t} else if ( material.transparent === true ) {\n\n\t\t\ttransparent.unshift( renderItem );\n\n\t\t} else {\n\n\t\t\topaque.unshift( renderItem );\n\n\t\t}\n\n\t}\n\n\tfunction sort( customOpaqueSort, customTransparentSort ) {\n\n\t\tif ( opaque.length > 1 ) opaque.sort( customOpaqueSort || painterSortStable );\n\t\tif ( transmissive.length > 1 ) transmissive.sort( customTransparentSort || reversePainterSortStable );\n\t\tif ( transparent.length > 1 ) transparent.sort( customTransparentSort || reversePainterSortStable );\n\n\t}\n\n\tfunction finish() {\n\n\t\t// Clear references from inactive renderItems in the list\n\n\t\tfor ( let i = renderItemsIndex, il = renderItems.length; i < il; i ++ ) {\n\n\t\t\tconst renderItem = renderItems[ i ];\n\n\t\t\tif ( renderItem.id === null ) break;\n\n\t\t\trenderItem.id = null;\n\t\t\trenderItem.object = null;\n\t\t\trenderItem.geometry = null;\n\t\t\trenderItem.material = null;\n\t\t\trenderItem.group = null;\n\n\t\t}\n\n\t}\n\n\treturn {\n\n\t\topaque: opaque,\n\t\ttransmissive: transmissive,\n\t\ttransparent: transparent,\n\n\t\tinit: init,\n\t\tpush: push,\n\t\tunshift: unshift,\n\t\tfinish: finish,\n\n\t\tsort: sort\n\t};\n\n}\n\nfunction WebGLRenderLists() {\n\n\tlet lists = new WeakMap();\n\n\tfunction get( scene, renderCallDepth ) {\n\n\t\tlet list;\n\n\t\tif ( lists.has( scene ) === false ) {\n\n\t\t\tlist = new WebGLRenderList();\n\t\t\tlists.set( scene, [ list ] );\n\n\t\t} else {\n\n\t\t\tif ( renderCallDepth >= lists.get( scene ).length ) {\n\n\t\t\t\tlist = new WebGLRenderList();\n\t\t\t\tlists.get( scene ).push( list );\n\n\t\t\t} else {\n\n\t\t\t\tlist = lists.get( scene )[ renderCallDepth ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn list;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tlists = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\nfunction UniformsCache() {\n\n\tconst lights = {};\n\n\treturn {\n\n\t\tget: function ( light ) {\n\n\t\t\tif ( lights[ light.id ] !== undefined ) {\n\n\t\t\t\treturn lights[ light.id ];\n\n\t\t\t}\n\n\t\t\tlet uniforms;\n\n\t\t\tswitch ( light.type ) {\n\n\t\t\t\tcase 'DirectionalLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tcolor: new Color()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'SpotLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tdistance: 0,\n\t\t\t\t\t\tconeCos: 0,\n\t\t\t\t\t\tpenumbraCos: 0,\n\t\t\t\t\t\tdecay: 0\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PointLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tdistance: 0,\n\t\t\t\t\t\tdecay: 0\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'HemisphereLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tskyColor: new Color(),\n\t\t\t\t\t\tgroundColor: new Color()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'RectAreaLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\thalfWidth: new Vector3(),\n\t\t\t\t\t\thalfHeight: new Vector3()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tlights[ light.id ] = uniforms;\n\n\t\t\treturn uniforms;\n\n\t\t}\n\n\t};\n\n}\n\nfunction ShadowUniformsCache() {\n\n\tconst lights = {};\n\n\treturn {\n\n\t\tget: function ( light ) {\n\n\t\t\tif ( lights[ light.id ] !== undefined ) {\n\n\t\t\t\treturn lights[ light.id ];\n\n\t\t\t}\n\n\t\t\tlet uniforms;\n\n\t\t\tswitch ( light.type ) {\n\n\t\t\t\tcase 'DirectionalLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'SpotLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PointLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2(),\n\t\t\t\t\t\tshadowCameraNear: 1,\n\t\t\t\t\t\tshadowCameraFar: 1000\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\t// TODO (abelnation): set RectAreaLight shadow uniforms\n\n\t\t\t}\n\n\t\t\tlights[ light.id ] = uniforms;\n\n\t\t\treturn uniforms;\n\n\t\t}\n\n\t};\n\n}\n\n\n\nlet nextVersion = 0;\n\nfunction shadowCastingLightsFirst( lightA, lightB ) {\n\n\treturn ( lightB.castShadow ? 1 : 0 ) - ( lightA.castShadow ? 1 : 0 );\n\n}\n\nfunction WebGLLights( extensions, capabilities ) {\n\n\tconst cache = new UniformsCache();\n\n\tconst shadowCache = ShadowUniformsCache();\n\n\tconst state = {\n\n\t\tversion: 0,\n\n\t\thash: {\n\t\t\tdirectionalLength: - 1,\n\t\t\tpointLength: - 1,\n\t\t\tspotLength: - 1,\n\t\t\trectAreaLength: - 1,\n\t\t\themiLength: - 1,\n\n\t\t\tnumDirectionalShadows: - 1,\n\t\t\tnumPointShadows: - 1,\n\t\t\tnumSpotShadows: - 1\n\t\t},\n\n\t\tambient: [ 0, 0, 0 ],\n\t\tprobe: [],\n\t\tdirectional: [],\n\t\tdirectionalShadow: [],\n\t\tdirectionalShadowMap: [],\n\t\tdirectionalShadowMatrix: [],\n\t\tspot: [],\n\t\tspotShadow: [],\n\t\tspotShadowMap: [],\n\t\tspotShadowMatrix: [],\n\t\trectArea: [],\n\t\trectAreaLTC1: null,\n\t\trectAreaLTC2: null,\n\t\tpoint: [],\n\t\tpointShadow: [],\n\t\tpointShadowMap: [],\n\t\tpointShadowMatrix: [],\n\t\themi: []\n\n\t};\n\n\tfor ( let i = 0; i < 9; i ++ ) state.probe.push( new Vector3() );\n\n\tconst vector3 = new Vector3();\n\tconst matrix4 = new Matrix4();\n\tconst matrix42 = new Matrix4();\n\n\tfunction setup( lights, physicallyCorrectLights ) {\n\n\t\tlet r = 0, g = 0, b = 0;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) state.probe[ i ].set( 0, 0, 0 );\n\n\t\tlet directionalLength = 0;\n\t\tlet pointLength = 0;\n\t\tlet spotLength = 0;\n\t\tlet rectAreaLength = 0;\n\t\tlet hemiLength = 0;\n\n\t\tlet numDirectionalShadows = 0;\n\t\tlet numPointShadows = 0;\n\t\tlet numSpotShadows = 0;\n\n\t\tlights.sort( shadowCastingLightsFirst );\n\n\t\t// artist-friendly light intensity scaling factor\n\t\tconst scaleFactor = ( physicallyCorrectLights !== true ) ? Math.PI : 1;\n\n\t\tfor ( let i = 0, l = lights.length; i < l; i ++ ) {\n\n\t\t\tconst light = lights[ i ];\n\n\t\t\tconst color = light.color;\n\t\t\tconst intensity = light.intensity;\n\t\t\tconst distance = light.distance;\n\n\t\t\tconst shadowMap = ( light.shadow && light.shadow.map ) ? light.shadow.map.texture : null;\n\n\t\t\tif ( light.isAmbientLight ) {\n\n\t\t\t\tr += color.r * intensity * scaleFactor;\n\t\t\t\tg += color.g * intensity * scaleFactor;\n\t\t\t\tb += color.b * intensity * scaleFactor;\n\n\t\t\t} else if ( light.isLightProbe ) {\n\n\t\t\t\tfor ( let j = 0; j < 9; j ++ ) {\n\n\t\t\t\t\tstate.probe[ j ].addScaledVector( light.sh.coefficients[ j ], intensity );\n\n\t\t\t\t}\n\n\t\t\t} else if ( light.isDirectionalLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity * scaleFactor );\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\n\t\t\t\t\tstate.directionalShadow[ directionalLength ] = shadowUniforms;\n\t\t\t\t\tstate.directionalShadowMap[ directionalLength ] = shadowMap;\n\t\t\t\t\tstate.directionalShadowMatrix[ directionalLength ] = light.shadow.matrix;\n\n\t\t\t\t\tnumDirectionalShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.directional[ directionalLength ] = uniforms;\n\n\t\t\t\tdirectionalLength ++;\n\n\t\t\t} else if ( light.isSpotLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\n\t\t\t\tuniforms.color.copy( color ).multiplyScalar( intensity * scaleFactor );\n\t\t\t\tuniforms.distance = distance;\n\n\t\t\t\tuniforms.coneCos = Math.cos( light.angle );\n\t\t\t\tuniforms.penumbraCos = Math.cos( light.angle * ( 1 - light.penumbra ) );\n\t\t\t\tuniforms.decay = light.decay;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\n\t\t\t\t\tstate.spotShadow[ spotLength ] = shadowUniforms;\n\t\t\t\t\tstate.spotShadowMap[ spotLength ] = shadowMap;\n\t\t\t\t\tstate.spotShadowMatrix[ spotLength ] = light.shadow.matrix;\n\n\t\t\t\t\tnumSpotShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.spot[ spotLength ] = uniforms;\n\n\t\t\t\tspotLength ++;\n\n\t\t\t} else if ( light.isRectAreaLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\t// (a) intensity is the total visible light emitted\n\t\t\t\t//uniforms.color.copy( color ).multiplyScalar( intensity / ( light.width * light.height * Math.PI ) );\n\n\t\t\t\t// (b) intensity is the brightness of the light\n\t\t\t\tuniforms.color.copy( color ).multiplyScalar( intensity );\n\n\t\t\t\tuniforms.halfWidth.set( light.width * 0.5, 0.0, 0.0 );\n\t\t\t\tuniforms.halfHeight.set( 0.0, light.height * 0.5, 0.0 );\n\n\t\t\t\tstate.rectArea[ rectAreaLength ] = uniforms;\n\n\t\t\t\trectAreaLength ++;\n\n\t\t\t} else if ( light.isPointLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity * scaleFactor );\n\t\t\t\tuniforms.distance = light.distance;\n\t\t\t\tuniforms.decay = light.decay;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\t\t\t\t\tshadowUniforms.shadowCameraNear = shadow.camera.near;\n\t\t\t\t\tshadowUniforms.shadowCameraFar = shadow.camera.far;\n\n\t\t\t\t\tstate.pointShadow[ pointLength ] = shadowUniforms;\n\t\t\t\t\tstate.pointShadowMap[ pointLength ] = shadowMap;\n\t\t\t\t\tstate.pointShadowMatrix[ pointLength ] = light.shadow.matrix;\n\n\t\t\t\t\tnumPointShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.point[ pointLength ] = uniforms;\n\n\t\t\t\tpointLength ++;\n\n\t\t\t} else if ( light.isHemisphereLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.skyColor.copy( light.color ).multiplyScalar( intensity * scaleFactor );\n\t\t\t\tuniforms.groundColor.copy( light.groundColor ).multiplyScalar( intensity * scaleFactor );\n\n\t\t\t\tstate.hemi[ hemiLength ] = uniforms;\n\n\t\t\t\themiLength ++;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( rectAreaLength > 0 ) {\n\n\t\t\tif ( capabilities.isWebGL2 ) {\n\n\t\t\t\t// WebGL 2\n\n\t\t\t\tstate.rectAreaLTC1 = UniformsLib.LTC_FLOAT_1;\n\t\t\t\tstate.rectAreaLTC2 = UniformsLib.LTC_FLOAT_2;\n\n\t\t\t} else {\n\n\t\t\t\t// WebGL 1\n\n\t\t\t\tif ( extensions.has( 'OES_texture_float_linear' ) === true ) {\n\n\t\t\t\t\tstate.rectAreaLTC1 = UniformsLib.LTC_FLOAT_1;\n\t\t\t\t\tstate.rectAreaLTC2 = UniformsLib.LTC_FLOAT_2;\n\n\t\t\t\t} else if ( extensions.has( 'OES_texture_half_float_linear' ) === true ) {\n\n\t\t\t\t\tstate.rectAreaLTC1 = UniformsLib.LTC_HALF_1;\n\t\t\t\t\tstate.rectAreaLTC2 = UniformsLib.LTC_HALF_2;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer: Unable to use RectAreaLight. Missing WebGL extensions.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.ambient[ 0 ] = r;\n\t\tstate.ambient[ 1 ] = g;\n\t\tstate.ambient[ 2 ] = b;\n\n\t\tconst hash = state.hash;\n\n\t\tif ( hash.directionalLength !== directionalLength ||\n\t\t\thash.pointLength !== pointLength ||\n\t\t\thash.spotLength !== spotLength ||\n\t\t\thash.rectAreaLength !== rectAreaLength ||\n\t\t\thash.hemiLength !== hemiLength ||\n\t\t\thash.numDirectionalShadows !== numDirectionalShadows ||\n\t\t\thash.numPointShadows !== numPointShadows ||\n\t\t\thash.numSpotShadows !== numSpotShadows ) {\n\n\t\t\tstate.directional.length = directionalLength;\n\t\t\tstate.spot.length = spotLength;\n\t\t\tstate.rectArea.length = rectAreaLength;\n\t\t\tstate.point.length = pointLength;\n\t\t\tstate.hemi.length = hemiLength;\n\n\t\t\tstate.directionalShadow.length = numDirectionalShadows;\n\t\t\tstate.directionalShadowMap.length = numDirectionalShadows;\n\t\t\tstate.pointShadow.length = numPointShadows;\n\t\t\tstate.pointShadowMap.length = numPointShadows;\n\t\t\tstate.spotShadow.length = numSpotShadows;\n\t\t\tstate.spotShadowMap.length = numSpotShadows;\n\t\t\tstate.directionalShadowMatrix.length = numDirectionalShadows;\n\t\t\tstate.pointShadowMatrix.length = numPointShadows;\n\t\t\tstate.spotShadowMatrix.length = numSpotShadows;\n\n\t\t\thash.directionalLength = directionalLength;\n\t\t\thash.pointLength = pointLength;\n\t\t\thash.spotLength = spotLength;\n\t\t\thash.rectAreaLength = rectAreaLength;\n\t\t\thash.hemiLength = hemiLength;\n\n\t\t\thash.numDirectionalShadows = numDirectionalShadows;\n\t\t\thash.numPointShadows = numPointShadows;\n\t\t\thash.numSpotShadows = numSpotShadows;\n\n\t\t\tstate.version = nextVersion ++;\n\n\t\t}\n\n\t}\n\n\tfunction setupView( lights, camera ) {\n\n\t\tlet directionalLength = 0;\n\t\tlet pointLength = 0;\n\t\tlet spotLength = 0;\n\t\tlet rectAreaLength = 0;\n\t\tlet hemiLength = 0;\n\n\t\tconst viewMatrix = camera.matrixWorldInverse;\n\n\t\tfor ( let i = 0, l = lights.length; i < l; i ++ ) {\n\n\t\t\tconst light = lights[ i ];\n\n\t\t\tif ( light.isDirectionalLight ) {\n\n\t\t\t\tconst uniforms = state.directional[ directionalLength ];\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tvector3.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\tuniforms.direction.sub( vector3 );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\tdirectionalLength ++;\n\n\t\t\t} else if ( light.isSpotLight ) {\n\n\t\t\t\tconst uniforms = state.spot[ spotLength ];\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tvector3.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\tuniforms.direction.sub( vector3 );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\tspotLength ++;\n\n\t\t\t} else if ( light.isRectAreaLight ) {\n\n\t\t\t\tconst uniforms = state.rectArea[ rectAreaLength ];\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\t// extract local rotation of light to derive width/height half vectors\n\t\t\t\tmatrix42.identity();\n\t\t\t\tmatrix4.copy( light.matrixWorld );\n\t\t\t\tmatrix4.premultiply( viewMatrix );\n\t\t\t\tmatrix42.extractRotation( matrix4 );\n\n\t\t\t\tuniforms.halfWidth.set( light.width * 0.5, 0.0, 0.0 );\n\t\t\t\tuniforms.halfHeight.set( 0.0, light.height * 0.5, 0.0 );\n\n\t\t\t\tuniforms.halfWidth.applyMatrix4( matrix42 );\n\t\t\t\tuniforms.halfHeight.applyMatrix4( matrix42 );\n\n\t\t\t\trectAreaLength ++;\n\n\t\t\t} else if ( light.isPointLight ) {\n\n\t\t\t\tconst uniforms = state.point[ pointLength ];\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\tpointLength ++;\n\n\t\t\t} else if ( light.isHemisphereLight ) {\n\n\t\t\t\tconst uniforms = state.hemi[ hemiLength ];\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\themiLength ++;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\tsetup: setup,\n\t\tsetupView: setupView,\n\t\tstate: state\n\t};\n\n}\n\nfunction WebGLRenderState( extensions, capabilities ) {\n\n\tconst lights = new WebGLLights( extensions, capabilities );\n\n\tconst lightsArray = [];\n\tconst shadowsArray = [];\n\n\tfunction init() {\n\n\t\tlightsArray.length = 0;\n\t\tshadowsArray.length = 0;\n\n\t}\n\n\tfunction pushLight( light ) {\n\n\t\tlightsArray.push( light );\n\n\t}\n\n\tfunction pushShadow( shadowLight ) {\n\n\t\tshadowsArray.push( shadowLight );\n\n\t}\n\n\tfunction setupLights( physicallyCorrectLights ) {\n\n\t\tlights.setup( lightsArray, physicallyCorrectLights );\n\n\t}\n\n\tfunction setupLightsView( camera ) {\n\n\t\tlights.setupView( lightsArray, camera );\n\n\t}\n\n\tconst state = {\n\t\tlightsArray: lightsArray,\n\t\tshadowsArray: shadowsArray,\n\n\t\tlights: lights\n\t};\n\n\treturn {\n\t\tinit: init,\n\t\tstate: state,\n\t\tsetupLights: setupLights,\n\t\tsetupLightsView: setupLightsView,\n\n\t\tpushLight: pushLight,\n\t\tpushShadow: pushShadow\n\t};\n\n}\n\nfunction WebGLRenderStates( extensions, capabilities ) {\n\n\tlet renderStates = new WeakMap();\n\n\tfunction get( scene, renderCallDepth = 0 ) {\n\n\t\tlet renderState;\n\n\t\tif ( renderStates.has( scene ) === false ) {\n\n\t\t\trenderState = new WebGLRenderState( extensions, capabilities );\n\t\t\trenderStates.set( scene, [ renderState ] );\n\n\t\t} else {\n\n\t\t\tif ( renderCallDepth >= renderStates.get( scene ).length ) {\n\n\t\t\t\trenderState = new WebGLRenderState( extensions, capabilities );\n\t\t\t\trenderStates.get( scene ).push( renderState );\n\n\t\t\t} else {\n\n\t\t\t\trenderState = renderStates.get( scene )[ renderCallDepth ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn renderState;\n\n\t}\n\n\tfunction dispose() {\n\n\t\trenderStates = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\nclass MeshDepthMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshDepthMaterial = true;\n\n\t\tthis.type = 'MeshDepthMaterial';\n\n\t\tthis.depthPacking = BasicDepthPacking;\n\n\t\tthis.map = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.depthPacking = source.depthPacking;\n\n\t\tthis.map = source.map;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshDistanceMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshDistanceMaterial = true;\n\n\t\tthis.type = 'MeshDistanceMaterial';\n\n\t\tthis.referencePosition = new Vector3();\n\t\tthis.nearDistance = 1;\n\t\tthis.farDistance = 1000;\n\n\t\tthis.map = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.referencePosition.copy( source.referencePosition );\n\t\tthis.nearDistance = source.nearDistance;\n\t\tthis.farDistance = source.farDistance;\n\n\t\tthis.map = source.map;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst vertex = \"void main() {\\n\\tgl_Position = vec4( position, 1.0 );\\n}\";\n\nconst fragment = \"uniform sampler2D shadow_pass;\\nuniform vec2 resolution;\\nuniform float radius;\\n#include <packing>\\nvoid main() {\\n\\tconst float samples = float( VSM_SAMPLES );\\n\\tfloat mean = 0.0;\\n\\tfloat squared_mean = 0.0;\\n\\tfloat uvStride = samples <= 1.0 ? 0.0 : 2.0 / ( samples - 1.0 );\\n\\tfloat uvStart = samples <= 1.0 ? 0.0 : - 1.0;\\n\\tfor ( float i = 0.0; i < samples; i ++ ) {\\n\\t\\tfloat uvOffset = uvStart + i * uvStride;\\n\\t\\t#ifdef HORIZONTAL_PASS\\n\\t\\t\\tvec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( uvOffset, 0.0 ) * radius ) / resolution ) );\\n\\t\\t\\tmean += distribution.x;\\n\\t\\t\\tsquared_mean += distribution.y * distribution.y + distribution.x * distribution.x;\\n\\t\\t#else\\n\\t\\t\\tfloat depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, uvOffset ) * radius ) / resolution ) );\\n\\t\\t\\tmean += depth;\\n\\t\\t\\tsquared_mean += depth * depth;\\n\\t\\t#endif\\n\\t}\\n\\tmean = mean / samples;\\n\\tsquared_mean = squared_mean / samples;\\n\\tfloat std_dev = sqrt( squared_mean - mean * mean );\\n\\tgl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );\\n}\";\n\nfunction WebGLShadowMap( _renderer, _objects, _capabilities ) {\n\n\tlet _frustum = new Frustum();\n\n\tconst _shadowMapSize = new Vector2(),\n\t\t_viewportSize = new Vector2(),\n\n\t\t_viewport = new Vector4(),\n\n\t\t_depthMaterial = new MeshDepthMaterial( { depthPacking: RGBADepthPacking } ),\n\t\t_distanceMaterial = new MeshDistanceMaterial(),\n\n\t\t_materialCache = {},\n\n\t\t_maxTextureSize = _capabilities.maxTextureSize;\n\n\tconst shadowSide = { 0: BackSide, 1: FrontSide, 2: DoubleSide };\n\n\tconst shadowMaterialVertical = new ShaderMaterial( {\n\t\tdefines: {\n\t\t\tVSM_SAMPLES: 8\n\t\t},\n\t\tuniforms: {\n\t\t\tshadow_pass: { value: null },\n\t\t\tresolution: { value: new Vector2() },\n\t\t\tradius: { value: 4.0 }\n\t\t},\n\n\t\tvertexShader: vertex,\n\t\tfragmentShader: fragment\n\n\t} );\n\n\tconst shadowMaterialHorizontal = shadowMaterialVertical.clone();\n\tshadowMaterialHorizontal.defines.HORIZONTAL_PASS = 1;\n\n\tconst fullScreenTri = new BufferGeometry();\n\tfullScreenTri.setAttribute(\n\t\t'position',\n\t\tnew BufferAttribute(\n\t\t\tnew Float32Array( [ - 1, - 1, 0.5, 3, - 1, 0.5, - 1, 3, 0.5 ] ),\n\t\t\t3\n\t\t)\n\t);\n\n\tconst fullScreenMesh = new Mesh( fullScreenTri, shadowMaterialVertical );\n\n\tconst scope = this;\n\n\tthis.enabled = false;\n\n\tthis.autoUpdate = true;\n\tthis.needsUpdate = false;\n\n\tthis.type = PCFShadowMap;\n\n\tthis.render = function ( lights, scene, camera ) {\n\n\t\tif ( scope.enabled === false ) return;\n\t\tif ( scope.autoUpdate === false && scope.needsUpdate === false ) return;\n\n\t\tif ( lights.length === 0 ) return;\n\n\t\tconst currentRenderTarget = _renderer.getRenderTarget();\n\t\tconst activeCubeFace = _renderer.getActiveCubeFace();\n\t\tconst activeMipmapLevel = _renderer.getActiveMipmapLevel();\n\n\t\tconst _state = _renderer.state;\n\n\t\t// Set GL state for depth map.\n\t\t_state.setBlending( NoBlending );\n\t\t_state.buffers.color.setClear( 1, 1, 1, 1 );\n\t\t_state.buffers.depth.setTest( true );\n\t\t_state.setScissorTest( false );\n\n\t\t// render depth map\n\n\t\tfor ( let i = 0, il = lights.length; i < il; i ++ ) {\n\n\t\t\tconst light = lights[ i ];\n\t\t\tconst shadow = light.shadow;\n\n\t\t\tif ( shadow === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLShadowMap:', light, 'has no shadow.' );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tif ( shadow.autoUpdate === false && shadow.needsUpdate === false ) continue;\n\n\t\t\t_shadowMapSize.copy( shadow.mapSize );\n\n\t\t\tconst shadowFrameExtents = shadow.getFrameExtents();\n\n\t\t\t_shadowMapSize.multiply( shadowFrameExtents );\n\n\t\t\t_viewportSize.copy( shadow.mapSize );\n\n\t\t\tif ( _shadowMapSize.x > _maxTextureSize || _shadowMapSize.y > _maxTextureSize ) {\n\n\t\t\t\tif ( _shadowMapSize.x > _maxTextureSize ) {\n\n\t\t\t\t\t_viewportSize.x = Math.floor( _maxTextureSize / shadowFrameExtents.x );\n\t\t\t\t\t_shadowMapSize.x = _viewportSize.x * shadowFrameExtents.x;\n\t\t\t\t\tshadow.mapSize.x = _viewportSize.x;\n\n\t\t\t\t}\n\n\t\t\t\tif ( _shadowMapSize.y > _maxTextureSize ) {\n\n\t\t\t\t\t_viewportSize.y = Math.floor( _maxTextureSize / shadowFrameExtents.y );\n\t\t\t\t\t_shadowMapSize.y = _viewportSize.y * shadowFrameExtents.y;\n\t\t\t\t\tshadow.mapSize.y = _viewportSize.y;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( shadow.map === null ) {\n\n\t\t\t\tconst pars = ( this.type !== VSMShadowMap ) ? { minFilter: NearestFilter, magFilter: NearestFilter } : {};\n\n\t\t\t\tshadow.map = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars );\n\t\t\t\tshadow.map.texture.name = light.name + '.shadowMap';\n\n\t\t\t\tshadow.camera.updateProjectionMatrix();\n\n\t\t\t}\n\n\t\t\t_renderer.setRenderTarget( shadow.map );\n\t\t\t_renderer.clear();\n\n\t\t\tconst viewportCount = shadow.getViewportCount();\n\n\t\t\tfor ( let vp = 0; vp < viewportCount; vp ++ ) {\n\n\t\t\t\tconst viewport = shadow.getViewport( vp );\n\n\t\t\t\t_viewport.set(\n\t\t\t\t\t_viewportSize.x * viewport.x,\n\t\t\t\t\t_viewportSize.y * viewport.y,\n\t\t\t\t\t_viewportSize.x * viewport.z,\n\t\t\t\t\t_viewportSize.y * viewport.w\n\t\t\t\t);\n\n\t\t\t\t_state.viewport( _viewport );\n\n\t\t\t\tshadow.updateMatrices( light, vp );\n\n\t\t\t\t_frustum = shadow.getFrustum();\n\n\t\t\t\trenderObject( scene, camera, shadow.camera, light, this.type );\n\n\t\t\t}\n\n\t\t\t// do blur pass for VSM\n\n\t\t\tif ( shadow.isPointLightShadow !== true && this.type === VSMShadowMap ) {\n\n\t\t\t\tVSMPass( shadow, camera );\n\n\t\t\t}\n\n\t\t\tshadow.needsUpdate = false;\n\n\t\t}\n\n\t\tscope.needsUpdate = false;\n\n\t\t_renderer.setRenderTarget( currentRenderTarget, activeCubeFace, activeMipmapLevel );\n\n\t};\n\n\tfunction VSMPass( shadow, camera ) {\n\n\t\tconst geometry = _objects.update( fullScreenMesh );\n\n\t\tif ( shadowMaterialVertical.defines.VSM_SAMPLES !== shadow.blurSamples ) {\n\n\t\t\tshadowMaterialVertical.defines.VSM_SAMPLES = shadow.blurSamples;\n\t\t\tshadowMaterialHorizontal.defines.VSM_SAMPLES = shadow.blurSamples;\n\n\t\t\tshadowMaterialVertical.needsUpdate = true;\n\t\t\tshadowMaterialHorizontal.needsUpdate = true;\n\n\t\t}\n\n\t\tif ( shadow.mapPass === null ) {\n\n\t\t\tshadow.mapPass = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y );\n\n\t\t}\n\n\t\t// vertical pass\n\n\t\tshadowMaterialVertical.uniforms.shadow_pass.value = shadow.map.texture;\n\t\tshadowMaterialVertical.uniforms.resolution.value = shadow.mapSize;\n\t\tshadowMaterialVertical.uniforms.radius.value = shadow.radius;\n\t\t_renderer.setRenderTarget( shadow.mapPass );\n\t\t_renderer.clear();\n\t\t_renderer.renderBufferDirect( camera, null, geometry, shadowMaterialVertical, fullScreenMesh, null );\n\n\t\t// horizontal pass\n\n\t\tshadowMaterialHorizontal.uniforms.shadow_pass.value = shadow.mapPass.texture;\n\t\tshadowMaterialHorizontal.uniforms.resolution.value = shadow.mapSize;\n\t\tshadowMaterialHorizontal.uniforms.radius.value = shadow.radius;\n\t\t_renderer.setRenderTarget( shadow.map );\n\t\t_renderer.clear();\n\t\t_renderer.renderBufferDirect( camera, null, geometry, shadowMaterialHorizontal, fullScreenMesh, null );\n\n\t}\n\n\tfunction getDepthMaterial( object, material, light, shadowCameraNear, shadowCameraFar, type ) {\n\n\t\tlet result = null;\n\n\t\tconst customMaterial = ( light.isPointLight === true ) ? object.customDistanceMaterial : object.customDepthMaterial;\n\n\t\tif ( customMaterial !== undefined ) {\n\n\t\t\tresult = customMaterial;\n\n\t\t} else {\n\n\t\t\tresult = ( light.isPointLight === true ) ? _distanceMaterial : _depthMaterial;\n\n\t\t}\n\n\t\tif ( ( _renderer.localClippingEnabled && material.clipShadows === true && Array.isArray( material.clippingPlanes ) && material.clippingPlanes.length !== 0 ) ||\n\t\t\t( material.displacementMap && material.displacementScale !== 0 ) ||\n\t\t\t( material.alphaMap && material.alphaTest > 0 ) ) {\n\n\t\t\t// in this case we need a unique material instance reflecting the\n\t\t\t// appropriate state\n\n\t\t\tconst keyA = result.uuid, keyB = material.uuid;\n\n\t\t\tlet materialsForVariant = _materialCache[ keyA ];\n\n\t\t\tif ( materialsForVariant === undefined ) {\n\n\t\t\t\tmaterialsForVariant = {};\n\t\t\t\t_materialCache[ keyA ] = materialsForVariant;\n\n\t\t\t}\n\n\t\t\tlet cachedMaterial = materialsForVariant[ keyB ];\n\n\t\t\tif ( cachedMaterial === undefined ) {\n\n\t\t\t\tcachedMaterial = result.clone();\n\t\t\t\tmaterialsForVariant[ keyB ] = cachedMaterial;\n\n\t\t\t}\n\n\t\t\tresult = cachedMaterial;\n\n\t\t}\n\n\t\tresult.visible = material.visible;\n\t\tresult.wireframe = material.wireframe;\n\n\t\tif ( type === VSMShadowMap ) {\n\n\t\t\tresult.side = ( material.shadowSide !== null ) ? material.shadowSide : material.side;\n\n\t\t} else {\n\n\t\t\tresult.side = ( material.shadowSide !== null ) ? material.shadowSide : shadowSide[ material.side ];\n\n\t\t}\n\n\t\tresult.alphaMap = material.alphaMap;\n\t\tresult.alphaTest = material.alphaTest;\n\n\t\tresult.clipShadows = material.clipShadows;\n\t\tresult.clippingPlanes = material.clippingPlanes;\n\t\tresult.clipIntersection = material.clipIntersection;\n\n\t\tresult.displacementMap = material.displacementMap;\n\t\tresult.displacementScale = material.displacementScale;\n\t\tresult.displacementBias = material.displacementBias;\n\n\t\tresult.wireframeLinewidth = material.wireframeLinewidth;\n\t\tresult.linewidth = material.linewidth;\n\n\t\tif ( light.isPointLight === true && result.isMeshDistanceMaterial === true ) {\n\n\t\t\tresult.referencePosition.setFromMatrixPosition( light.matrixWorld );\n\t\t\tresult.nearDistance = shadowCameraNear;\n\t\t\tresult.farDistance = shadowCameraFar;\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n\tfunction renderObject( object, camera, shadowCamera, light, type ) {\n\n\t\tif ( object.visible === false ) return;\n\n\t\tconst visible = object.layers.test( camera.layers );\n\n\t\tif ( visible && ( object.isMesh || object.isLine || object.isPoints ) ) {\n\n\t\t\tif ( ( object.castShadow || ( object.receiveShadow && type === VSMShadowMap ) ) && ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) ) {\n\n\t\t\t\tobject.modelViewMatrix.multiplyMatrices( shadowCamera.matrixWorldInverse, object.matrixWorld );\n\n\t\t\t\tconst geometry = _objects.update( object );\n\t\t\t\tconst material = object.material;\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tconst groups = geometry.groups;\n\n\t\t\t\t\tfor ( let k = 0, kl = groups.length; k < kl; k ++ ) {\n\n\t\t\t\t\t\tconst group = groups[ k ];\n\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\tif ( groupMaterial && groupMaterial.visible ) {\n\n\t\t\t\t\t\t\tconst depthMaterial = getDepthMaterial( object, groupMaterial, light, shadowCamera.near, shadowCamera.far, type );\n\n\t\t\t\t\t\t\t_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, group );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( material.visible ) {\n\n\t\t\t\t\tconst depthMaterial = getDepthMaterial( object, material, light, shadowCamera.near, shadowCamera.far, type );\n\n\t\t\t\t\t_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, null );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\trenderObject( children[ i ], camera, shadowCamera, light, type );\n\n\t\t}\n\n\t}\n\n}\n\nfunction WebGLState( gl, extensions, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tfunction ColorBuffer() {\n\n\t\tlet locked = false;\n\n\t\tconst color = new Vector4();\n\t\tlet currentColorMask = null;\n\t\tconst currentColorClear = new Vector4( 0, 0, 0, 0 );\n\n\t\treturn {\n\n\t\t\tsetMask: function ( colorMask ) {\n\n\t\t\t\tif ( currentColorMask !== colorMask && ! locked ) {\n\n\t\t\t\t\tgl.colorMask( colorMask, colorMask, colorMask, colorMask );\n\t\t\t\t\tcurrentColorMask = colorMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( r, g, b, a, premultipliedAlpha ) {\n\n\t\t\t\tif ( premultipliedAlpha === true ) {\n\n\t\t\t\t\tr *= a; g *= a; b *= a;\n\n\t\t\t\t}\n\n\t\t\t\tcolor.set( r, g, b, a );\n\n\t\t\t\tif ( currentColorClear.equals( color ) === false ) {\n\n\t\t\t\t\tgl.clearColor( r, g, b, a );\n\t\t\t\t\tcurrentColorClear.copy( color );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentColorMask = null;\n\t\t\t\tcurrentColorClear.set( - 1, 0, 0, 0 ); // set to invalid state\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tfunction DepthBuffer() {\n\n\t\tlet locked = false;\n\n\t\tlet currentDepthMask = null;\n\t\tlet currentDepthFunc = null;\n\t\tlet currentDepthClear = null;\n\n\t\treturn {\n\n\t\t\tsetTest: function ( depthTest ) {\n\n\t\t\t\tif ( depthTest ) {\n\n\t\t\t\t\tenable( 2929 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tdisable( 2929 );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetMask: function ( depthMask ) {\n\n\t\t\t\tif ( currentDepthMask !== depthMask && ! locked ) {\n\n\t\t\t\t\tgl.depthMask( depthMask );\n\t\t\t\t\tcurrentDepthMask = depthMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetFunc: function ( depthFunc ) {\n\n\t\t\t\tif ( currentDepthFunc !== depthFunc ) {\n\n\t\t\t\t\tif ( depthFunc ) {\n\n\t\t\t\t\t\tswitch ( depthFunc ) {\n\n\t\t\t\t\t\t\tcase NeverDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 512 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase AlwaysDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 519 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase LessDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 513 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase LessEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 515 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase EqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 514 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase GreaterEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 518 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase GreaterDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 516 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase NotEqualDepth:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 517 );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\n\t\t\t\t\t\t\t\tgl.depthFunc( 515 );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tgl.depthFunc( 515 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcurrentDepthFunc = depthFunc;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( depth ) {\n\n\t\t\t\tif ( currentDepthClear !== depth ) {\n\n\t\t\t\t\tgl.clearDepth( depth );\n\t\t\t\t\tcurrentDepthClear = depth;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentDepthMask = null;\n\t\t\t\tcurrentDepthFunc = null;\n\t\t\t\tcurrentDepthClear = null;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tfunction StencilBuffer() {\n\n\t\tlet locked = false;\n\n\t\tlet currentStencilMask = null;\n\t\tlet currentStencilFunc = null;\n\t\tlet currentStencilRef = null;\n\t\tlet currentStencilFuncMask = null;\n\t\tlet currentStencilFail = null;\n\t\tlet currentStencilZFail = null;\n\t\tlet currentStencilZPass = null;\n\t\tlet currentStencilClear = null;\n\n\t\treturn {\n\n\t\t\tsetTest: function ( stencilTest ) {\n\n\t\t\t\tif ( ! locked ) {\n\n\t\t\t\t\tif ( stencilTest ) {\n\n\t\t\t\t\t\tenable( 2960 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tdisable( 2960 );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetMask: function ( stencilMask ) {\n\n\t\t\t\tif ( currentStencilMask !== stencilMask && ! locked ) {\n\n\t\t\t\t\tgl.stencilMask( stencilMask );\n\t\t\t\t\tcurrentStencilMask = stencilMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetFunc: function ( stencilFunc, stencilRef, stencilMask ) {\n\n\t\t\t\tif ( currentStencilFunc !== stencilFunc ||\n\t\t\t\t     currentStencilRef !== stencilRef ||\n\t\t\t\t     currentStencilFuncMask !== stencilMask ) {\n\n\t\t\t\t\tgl.stencilFunc( stencilFunc, stencilRef, stencilMask );\n\n\t\t\t\t\tcurrentStencilFunc = stencilFunc;\n\t\t\t\t\tcurrentStencilRef = stencilRef;\n\t\t\t\t\tcurrentStencilFuncMask = stencilMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetOp: function ( stencilFail, stencilZFail, stencilZPass ) {\n\n\t\t\t\tif ( currentStencilFail !== stencilFail ||\n\t\t\t\t     currentStencilZFail !== stencilZFail ||\n\t\t\t\t     currentStencilZPass !== stencilZPass ) {\n\n\t\t\t\t\tgl.stencilOp( stencilFail, stencilZFail, stencilZPass );\n\n\t\t\t\t\tcurrentStencilFail = stencilFail;\n\t\t\t\t\tcurrentStencilZFail = stencilZFail;\n\t\t\t\t\tcurrentStencilZPass = stencilZPass;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( stencil ) {\n\n\t\t\t\tif ( currentStencilClear !== stencil ) {\n\n\t\t\t\t\tgl.clearStencil( stencil );\n\t\t\t\t\tcurrentStencilClear = stencil;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentStencilMask = null;\n\t\t\t\tcurrentStencilFunc = null;\n\t\t\t\tcurrentStencilRef = null;\n\t\t\t\tcurrentStencilFuncMask = null;\n\t\t\t\tcurrentStencilFail = null;\n\t\t\t\tcurrentStencilZFail = null;\n\t\t\t\tcurrentStencilZPass = null;\n\t\t\t\tcurrentStencilClear = null;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\t//\n\n\tconst colorBuffer = new ColorBuffer();\n\tconst depthBuffer = new DepthBuffer();\n\tconst stencilBuffer = new StencilBuffer();\n\n\tconst uboBindings = new WeakMap();\n\tconst uboProgamMap = new WeakMap();\n\n\tlet enabledCapabilities = {};\n\n\tlet currentBoundFramebuffers = {};\n\tlet currentDrawbuffers = new WeakMap();\n\tlet defaultDrawbuffers = [];\n\n\tlet currentProgram = null;\n\n\tlet currentBlendingEnabled = false;\n\tlet currentBlending = null;\n\tlet currentBlendEquation = null;\n\tlet currentBlendSrc = null;\n\tlet currentBlendDst = null;\n\tlet currentBlendEquationAlpha = null;\n\tlet currentBlendSrcAlpha = null;\n\tlet currentBlendDstAlpha = null;\n\tlet currentPremultipledAlpha = false;\n\n\tlet currentFlipSided = null;\n\tlet currentCullFace = null;\n\n\tlet currentLineWidth = null;\n\n\tlet currentPolygonOffsetFactor = null;\n\tlet currentPolygonOffsetUnits = null;\n\n\tconst maxTextures = gl.getParameter( 35661 );\n\n\tlet lineWidthAvailable = false;\n\tlet version = 0;\n\tconst glVersion = gl.getParameter( 7938 );\n\n\tif ( glVersion.indexOf( 'WebGL' ) !== - 1 ) {\n\n\t\tversion = parseFloat( /^WebGL (\\d)/.exec( glVersion )[ 1 ] );\n\t\tlineWidthAvailable = ( version >= 1.0 );\n\n\t} else if ( glVersion.indexOf( 'OpenGL ES' ) !== - 1 ) {\n\n\t\tversion = parseFloat( /^OpenGL ES (\\d)/.exec( glVersion )[ 1 ] );\n\t\tlineWidthAvailable = ( version >= 2.0 );\n\n\t}\n\n\tlet currentTextureSlot = null;\n\tlet currentBoundTextures = {};\n\n\tconst scissorParam = gl.getParameter( 3088 );\n\tconst viewportParam = gl.getParameter( 2978 );\n\n\tconst currentScissor = new Vector4().fromArray( scissorParam );\n\tconst currentViewport = new Vector4().fromArray( viewportParam );\n\n\tfunction createTexture( type, target, count ) {\n\n\t\tconst data = new Uint8Array( 4 ); // 4 is required to match default unpack alignment of 4.\n\t\tconst texture = gl.createTexture();\n\n\t\tgl.bindTexture( type, texture );\n\t\tgl.texParameteri( type, 10241, 9728 );\n\t\tgl.texParameteri( type, 10240, 9728 );\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tgl.texImage2D( target + i, 0, 6408, 1, 1, 0, 6408, 5121, data );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tconst emptyTextures = {};\n\temptyTextures[ 3553 ] = createTexture( 3553, 3553, 1 );\n\temptyTextures[ 34067 ] = createTexture( 34067, 34069, 6 );\n\n\t// init\n\n\tcolorBuffer.setClear( 0, 0, 0, 1 );\n\tdepthBuffer.setClear( 1 );\n\tstencilBuffer.setClear( 0 );\n\n\tenable( 2929 );\n\tdepthBuffer.setFunc( LessEqualDepth );\n\n\tsetFlipSided( false );\n\tsetCullFace( CullFaceBack );\n\tenable( 2884 );\n\n\tsetBlending( NoBlending );\n\n\t//\n\n\tfunction enable( id ) {\n\n\t\tif ( enabledCapabilities[ id ] !== true ) {\n\n\t\t\tgl.enable( id );\n\t\t\tenabledCapabilities[ id ] = true;\n\n\t\t}\n\n\t}\n\n\tfunction disable( id ) {\n\n\t\tif ( enabledCapabilities[ id ] !== false ) {\n\n\t\t\tgl.disable( id );\n\t\t\tenabledCapabilities[ id ] = false;\n\n\t\t}\n\n\t}\n\n\tfunction bindFramebuffer( target, framebuffer ) {\n\n\t\tif ( currentBoundFramebuffers[ target ] !== framebuffer ) {\n\n\t\t\tgl.bindFramebuffer( target, framebuffer );\n\n\t\t\tcurrentBoundFramebuffers[ target ] = framebuffer;\n\n\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t// 36009 is equivalent to 36160\n\n\t\t\t\tif ( target === 36009 ) {\n\n\t\t\t\t\tcurrentBoundFramebuffers[ 36160 ] = framebuffer;\n\n\t\t\t\t}\n\n\t\t\t\tif ( target === 36160 ) {\n\n\t\t\t\t\tcurrentBoundFramebuffers[ 36009 ] = framebuffer;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\tfunction drawBuffers( renderTarget, framebuffer ) {\n\n\t\tlet drawBuffers = defaultDrawbuffers;\n\n\t\tlet needsUpdate = false;\n\n\t\tif ( renderTarget ) {\n\n\t\t\tdrawBuffers = currentDrawbuffers.get( framebuffer );\n\n\t\t\tif ( drawBuffers === undefined ) {\n\n\t\t\t\tdrawBuffers = [];\n\t\t\t\tcurrentDrawbuffers.set( framebuffer, drawBuffers );\n\n\t\t\t}\n\n\t\t\tif ( renderTarget.isWebGLMultipleRenderTargets ) {\n\n\t\t\t\tconst textures = renderTarget.texture;\n\n\t\t\t\tif ( drawBuffers.length !== textures.length || drawBuffers[ 0 ] !== 36064 ) {\n\n\t\t\t\t\tfor ( let i = 0, il = textures.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tdrawBuffers[ i ] = 36064 + i;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tdrawBuffers.length = textures.length;\n\n\t\t\t\t\tneedsUpdate = true;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( drawBuffers[ 0 ] !== 36064 ) {\n\n\t\t\t\t\tdrawBuffers[ 0 ] = 36064;\n\n\t\t\t\t\tneedsUpdate = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( drawBuffers[ 0 ] !== 1029 ) {\n\n\t\t\t\tdrawBuffers[ 0 ] = 1029;\n\n\t\t\t\tneedsUpdate = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( needsUpdate ) {\n\n\t\t\tif ( capabilities.isWebGL2 ) {\n\n\t\t\t\tgl.drawBuffers( drawBuffers );\n\n\t\t\t} else {\n\n\t\t\t\textensions.get( 'WEBGL_draw_buffers' ).drawBuffersWEBGL( drawBuffers );\n\n\t\t\t}\n\n\t\t}\n\n\n\t}\n\n\tfunction useProgram( program ) {\n\n\t\tif ( currentProgram !== program ) {\n\n\t\t\tgl.useProgram( program );\n\n\t\t\tcurrentProgram = program;\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\tconst equationToGL = {\n\t\t[ AddEquation ]: 32774,\n\t\t[ SubtractEquation ]: 32778,\n\t\t[ ReverseSubtractEquation ]: 32779\n\t};\n\n\tif ( isWebGL2 ) {\n\n\t\tequationToGL[ MinEquation ] = 32775;\n\t\tequationToGL[ MaxEquation ] = 32776;\n\n\t} else {\n\n\t\tconst extension = extensions.get( 'EXT_blend_minmax' );\n\n\t\tif ( extension !== null ) {\n\n\t\t\tequationToGL[ MinEquation ] = extension.MIN_EXT;\n\t\t\tequationToGL[ MaxEquation ] = extension.MAX_EXT;\n\n\t\t}\n\n\t}\n\n\tconst factorToGL = {\n\t\t[ ZeroFactor ]: 0,\n\t\t[ OneFactor ]: 1,\n\t\t[ SrcColorFactor ]: 768,\n\t\t[ SrcAlphaFactor ]: 770,\n\t\t[ SrcAlphaSaturateFactor ]: 776,\n\t\t[ DstColorFactor ]: 774,\n\t\t[ DstAlphaFactor ]: 772,\n\t\t[ OneMinusSrcColorFactor ]: 769,\n\t\t[ OneMinusSrcAlphaFactor ]: 771,\n\t\t[ OneMinusDstColorFactor ]: 775,\n\t\t[ OneMinusDstAlphaFactor ]: 773\n\t};\n\n\tfunction setBlending( blending, blendEquation, blendSrc, blendDst, blendEquationAlpha, blendSrcAlpha, blendDstAlpha, premultipliedAlpha ) {\n\n\t\tif ( blending === NoBlending ) {\n\n\t\t\tif ( currentBlendingEnabled === true ) {\n\n\t\t\t\tdisable( 3042 );\n\t\t\t\tcurrentBlendingEnabled = false;\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( currentBlendingEnabled === false ) {\n\n\t\t\tenable( 3042 );\n\t\t\tcurrentBlendingEnabled = true;\n\n\t\t}\n\n\t\tif ( blending !== CustomBlending ) {\n\n\t\t\tif ( blending !== currentBlending || premultipliedAlpha !== currentPremultipledAlpha ) {\n\n\t\t\t\tif ( currentBlendEquation !== AddEquation || currentBlendEquationAlpha !== AddEquation ) {\n\n\t\t\t\t\tgl.blendEquation( 32774 );\n\n\t\t\t\t\tcurrentBlendEquation = AddEquation;\n\t\t\t\t\tcurrentBlendEquationAlpha = AddEquation;\n\n\t\t\t\t}\n\n\t\t\t\tif ( premultipliedAlpha ) {\n\n\t\t\t\t\tswitch ( blending ) {\n\n\t\t\t\t\t\tcase NormalBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 1, 771, 1, 771 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase AdditiveBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 1, 1 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase SubtractiveBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 0, 769, 0, 1 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase MultiplyBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 0, 768, 0, 770 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tconsole.error( 'THREE.WebGLState: Invalid blending: ', blending );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tswitch ( blending ) {\n\n\t\t\t\t\t\tcase NormalBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 770, 771, 1, 771 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase AdditiveBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 770, 1 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase SubtractiveBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 0, 769, 0, 1 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase MultiplyBlending:\n\t\t\t\t\t\t\tgl.blendFunc( 0, 768 );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tconsole.error( 'THREE.WebGLState: Invalid blending: ', blending );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tcurrentBlendSrc = null;\n\t\t\t\tcurrentBlendDst = null;\n\t\t\t\tcurrentBlendSrcAlpha = null;\n\t\t\t\tcurrentBlendDstAlpha = null;\n\n\t\t\t\tcurrentBlending = blending;\n\t\t\t\tcurrentPremultipledAlpha = premultipliedAlpha;\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t// custom blending\n\n\t\tblendEquationAlpha = blendEquationAlpha || blendEquation;\n\t\tblendSrcAlpha = blendSrcAlpha || blendSrc;\n\t\tblendDstAlpha = blendDstAlpha || blendDst;\n\n\t\tif ( blendEquation !== currentBlendEquation || blendEquationAlpha !== currentBlendEquationAlpha ) {\n\n\t\t\tgl.blendEquationSeparate( equationToGL[ blendEquation ], equationToGL[ blendEquationAlpha ] );\n\n\t\t\tcurrentBlendEquation = blendEquation;\n\t\t\tcurrentBlendEquationAlpha = blendEquationAlpha;\n\n\t\t}\n\n\t\tif ( blendSrc !== currentBlendSrc || blendDst !== currentBlendDst || blendSrcAlpha !== currentBlendSrcAlpha || blendDstAlpha !== currentBlendDstAlpha ) {\n\n\t\t\tgl.blendFuncSeparate( factorToGL[ blendSrc ], factorToGL[ blendDst ], factorToGL[ blendSrcAlpha ], factorToGL[ blendDstAlpha ] );\n\n\t\t\tcurrentBlendSrc = blendSrc;\n\t\t\tcurrentBlendDst = blendDst;\n\t\t\tcurrentBlendSrcAlpha = blendSrcAlpha;\n\t\t\tcurrentBlendDstAlpha = blendDstAlpha;\n\n\t\t}\n\n\t\tcurrentBlending = blending;\n\t\tcurrentPremultipledAlpha = null;\n\n\t}\n\n\tfunction setMaterial( material, frontFaceCW ) {\n\n\t\tmaterial.side === DoubleSide\n\t\t\t? disable( 2884 )\n\t\t\t: enable( 2884 );\n\n\t\tlet flipSided = ( material.side === BackSide );\n\t\tif ( frontFaceCW ) flipSided = ! flipSided;\n\n\t\tsetFlipSided( flipSided );\n\n\t\t( material.blending === NormalBlending && material.transparent === false )\n\t\t\t? setBlending( NoBlending )\n\t\t\t: setBlending( material.blending, material.blendEquation, material.blendSrc, material.blendDst, material.blendEquationAlpha, material.blendSrcAlpha, material.blendDstAlpha, material.premultipliedAlpha );\n\n\t\tdepthBuffer.setFunc( material.depthFunc );\n\t\tdepthBuffer.setTest( material.depthTest );\n\t\tdepthBuffer.setMask( material.depthWrite );\n\t\tcolorBuffer.setMask( material.colorWrite );\n\n\t\tconst stencilWrite = material.stencilWrite;\n\t\tstencilBuffer.setTest( stencilWrite );\n\t\tif ( stencilWrite ) {\n\n\t\t\tstencilBuffer.setMask( material.stencilWriteMask );\n\t\t\tstencilBuffer.setFunc( material.stencilFunc, material.stencilRef, material.stencilFuncMask );\n\t\t\tstencilBuffer.setOp( material.stencilFail, material.stencilZFail, material.stencilZPass );\n\n\t\t}\n\n\t\tsetPolygonOffset( material.polygonOffset, material.polygonOffsetFactor, material.polygonOffsetUnits );\n\n\t\tmaterial.alphaToCoverage === true\n\t\t\t? enable( 32926 )\n\t\t\t: disable( 32926 );\n\n\t}\n\n\t//\n\n\tfunction setFlipSided( flipSided ) {\n\n\t\tif ( currentFlipSided !== flipSided ) {\n\n\t\t\tif ( flipSided ) {\n\n\t\t\t\tgl.frontFace( 2304 );\n\n\t\t\t} else {\n\n\t\t\t\tgl.frontFace( 2305 );\n\n\t\t\t}\n\n\t\t\tcurrentFlipSided = flipSided;\n\n\t\t}\n\n\t}\n\n\tfunction setCullFace( cullFace ) {\n\n\t\tif ( cullFace !== CullFaceNone ) {\n\n\t\t\tenable( 2884 );\n\n\t\t\tif ( cullFace !== currentCullFace ) {\n\n\t\t\t\tif ( cullFace === CullFaceBack ) {\n\n\t\t\t\t\tgl.cullFace( 1029 );\n\n\t\t\t\t} else if ( cullFace === CullFaceFront ) {\n\n\t\t\t\t\tgl.cullFace( 1028 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tgl.cullFace( 1032 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tdisable( 2884 );\n\n\t\t}\n\n\t\tcurrentCullFace = cullFace;\n\n\t}\n\n\tfunction setLineWidth( width ) {\n\n\t\tif ( width !== currentLineWidth ) {\n\n\t\t\tif ( lineWidthAvailable ) gl.lineWidth( width );\n\n\t\t\tcurrentLineWidth = width;\n\n\t\t}\n\n\t}\n\n\tfunction setPolygonOffset( polygonOffset, factor, units ) {\n\n\t\tif ( polygonOffset ) {\n\n\t\t\tenable( 32823 );\n\n\t\t\tif ( currentPolygonOffsetFactor !== factor || currentPolygonOffsetUnits !== units ) {\n\n\t\t\t\tgl.polygonOffset( factor, units );\n\n\t\t\t\tcurrentPolygonOffsetFactor = factor;\n\t\t\t\tcurrentPolygonOffsetUnits = units;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tdisable( 32823 );\n\n\t\t}\n\n\t}\n\n\tfunction setScissorTest( scissorTest ) {\n\n\t\tif ( scissorTest ) {\n\n\t\t\tenable( 3089 );\n\n\t\t} else {\n\n\t\t\tdisable( 3089 );\n\n\t\t}\n\n\t}\n\n\t// texture\n\n\tfunction activeTexture( webglSlot ) {\n\n\t\tif ( webglSlot === undefined ) webglSlot = 33984 + maxTextures - 1;\n\n\t\tif ( currentTextureSlot !== webglSlot ) {\n\n\t\t\tgl.activeTexture( webglSlot );\n\t\t\tcurrentTextureSlot = webglSlot;\n\n\t\t}\n\n\t}\n\n\tfunction bindTexture( webglType, webglTexture ) {\n\n\t\tif ( currentTextureSlot === null ) {\n\n\t\t\tactiveTexture();\n\n\t\t}\n\n\t\tlet boundTexture = currentBoundTextures[ currentTextureSlot ];\n\n\t\tif ( boundTexture === undefined ) {\n\n\t\t\tboundTexture = { type: undefined, texture: undefined };\n\t\t\tcurrentBoundTextures[ currentTextureSlot ] = boundTexture;\n\n\t\t}\n\n\t\tif ( boundTexture.type !== webglType || boundTexture.texture !== webglTexture ) {\n\n\t\t\tgl.bindTexture( webglType, webglTexture || emptyTextures[ webglType ] );\n\n\t\t\tboundTexture.type = webglType;\n\t\t\tboundTexture.texture = webglTexture;\n\n\t\t}\n\n\t}\n\n\tfunction unbindTexture() {\n\n\t\tconst boundTexture = currentBoundTextures[ currentTextureSlot ];\n\n\t\tif ( boundTexture !== undefined && boundTexture.type !== undefined ) {\n\n\t\t\tgl.bindTexture( boundTexture.type, null );\n\n\t\t\tboundTexture.type = undefined;\n\t\t\tboundTexture.texture = undefined;\n\n\t\t}\n\n\t}\n\n\tfunction compressedTexImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.compressedTexImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texSubImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.texSubImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texSubImage3D() {\n\n\t\ttry {\n\n\t\t\tgl.texSubImage3D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction compressedTexSubImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.compressedTexSubImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texStorage2D() {\n\n\t\ttry {\n\n\t\t\tgl.texStorage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texStorage3D() {\n\n\t\ttry {\n\n\t\t\tgl.texStorage3D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.texImage2D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texImage3D() {\n\n\t\ttry {\n\n\t\t\tgl.texImage3D.apply( gl, arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction scissor( scissor ) {\n\n\t\tif ( currentScissor.equals( scissor ) === false ) {\n\n\t\t\tgl.scissor( scissor.x, scissor.y, scissor.z, scissor.w );\n\t\t\tcurrentScissor.copy( scissor );\n\n\t\t}\n\n\t}\n\n\tfunction viewport( viewport ) {\n\n\t\tif ( currentViewport.equals( viewport ) === false ) {\n\n\t\t\tgl.viewport( viewport.x, viewport.y, viewport.z, viewport.w );\n\t\t\tcurrentViewport.copy( viewport );\n\n\t\t}\n\n\t}\n\n\tfunction updateUBOMapping( uniformsGroup, program ) {\n\n\t\tlet mapping = uboProgamMap.get( program );\n\n\t\tif ( mapping === undefined ) {\n\n\t\t\tmapping = new WeakMap();\n\n\t\t\tuboProgamMap.set( program, mapping );\n\n\t\t}\n\n\t\tlet blockIndex = mapping.get( uniformsGroup );\n\n\t\tif ( blockIndex === undefined ) {\n\n\t\t\tblockIndex = gl.getUniformBlockIndex( program, uniformsGroup.name );\n\n\t\t\tmapping.set( uniformsGroup, blockIndex );\n\n\t\t}\n\n\t}\n\n\tfunction uniformBlockBinding( uniformsGroup, program ) {\n\n\t\tconst mapping = uboProgamMap.get( program );\n\t\tconst blockIndex = mapping.get( uniformsGroup );\n\n\t\tif ( uboBindings.get( uniformsGroup ) !== blockIndex ) {\n\n\t\t\t// bind shader specific block index to global block point\n\n\t\t\tgl.uniformBlockBinding( program, blockIndex, uniformsGroup.__bindingPointIndex );\n\n\t\t\tuboBindings.set( uniformsGroup, blockIndex );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction reset() {\n\n\t\t// reset state\n\n\t\tgl.disable( 3042 );\n\t\tgl.disable( 2884 );\n\t\tgl.disable( 2929 );\n\t\tgl.disable( 32823 );\n\t\tgl.disable( 3089 );\n\t\tgl.disable( 2960 );\n\t\tgl.disable( 32926 );\n\n\t\tgl.blendEquation( 32774 );\n\t\tgl.blendFunc( 1, 0 );\n\t\tgl.blendFuncSeparate( 1, 0, 1, 0 );\n\n\t\tgl.colorMask( true, true, true, true );\n\t\tgl.clearColor( 0, 0, 0, 0 );\n\n\t\tgl.depthMask( true );\n\t\tgl.depthFunc( 513 );\n\t\tgl.clearDepth( 1 );\n\n\t\tgl.stencilMask( 0xffffffff );\n\t\tgl.stencilFunc( 519, 0, 0xffffffff );\n\t\tgl.stencilOp( 7680, 7680, 7680 );\n\t\tgl.clearStencil( 0 );\n\n\t\tgl.cullFace( 1029 );\n\t\tgl.frontFace( 2305 );\n\n\t\tgl.polygonOffset( 0, 0 );\n\n\t\tgl.activeTexture( 33984 );\n\n\t\tgl.bindFramebuffer( 36160, null );\n\n\t\tif ( isWebGL2 === true ) {\n\n\t\t\tgl.bindFramebuffer( 36009, null );\n\t\t\tgl.bindFramebuffer( 36008, null );\n\n\t\t}\n\n\t\tgl.useProgram( null );\n\n\t\tgl.lineWidth( 1 );\n\n\t\tgl.scissor( 0, 0, gl.canvas.width, gl.canvas.height );\n\t\tgl.viewport( 0, 0, gl.canvas.width, gl.canvas.height );\n\n\t\t// reset internals\n\n\t\tenabledCapabilities = {};\n\n\t\tcurrentTextureSlot = null;\n\t\tcurrentBoundTextures = {};\n\n\t\tcurrentBoundFramebuffers = {};\n\t\tcurrentDrawbuffers = new WeakMap();\n\t\tdefaultDrawbuffers = [];\n\n\t\tcurrentProgram = null;\n\n\t\tcurrentBlendingEnabled = false;\n\t\tcurrentBlending = null;\n\t\tcurrentBlendEquation = null;\n\t\tcurrentBlendSrc = null;\n\t\tcurrentBlendDst = null;\n\t\tcurrentBlendEquationAlpha = null;\n\t\tcurrentBlendSrcAlpha = null;\n\t\tcurrentBlendDstAlpha = null;\n\t\tcurrentPremultipledAlpha = false;\n\n\t\tcurrentFlipSided = null;\n\t\tcurrentCullFace = null;\n\n\t\tcurrentLineWidth = null;\n\n\t\tcurrentPolygonOffsetFactor = null;\n\t\tcurrentPolygonOffsetUnits = null;\n\n\t\tcurrentScissor.set( 0, 0, gl.canvas.width, gl.canvas.height );\n\t\tcurrentViewport.set( 0, 0, gl.canvas.width, gl.canvas.height );\n\n\t\tcolorBuffer.reset();\n\t\tdepthBuffer.reset();\n\t\tstencilBuffer.reset();\n\n\t}\n\n\treturn {\n\n\t\tbuffers: {\n\t\t\tcolor: colorBuffer,\n\t\t\tdepth: depthBuffer,\n\t\t\tstencil: stencilBuffer\n\t\t},\n\n\t\tenable: enable,\n\t\tdisable: disable,\n\n\t\tbindFramebuffer: bindFramebuffer,\n\t\tdrawBuffers: drawBuffers,\n\n\t\tuseProgram: useProgram,\n\n\t\tsetBlending: setBlending,\n\t\tsetMaterial: setMaterial,\n\n\t\tsetFlipSided: setFlipSided,\n\t\tsetCullFace: setCullFace,\n\n\t\tsetLineWidth: setLineWidth,\n\t\tsetPolygonOffset: setPolygonOffset,\n\n\t\tsetScissorTest: setScissorTest,\n\n\t\tactiveTexture: activeTexture,\n\t\tbindTexture: bindTexture,\n\t\tunbindTexture: unbindTexture,\n\t\tcompressedTexImage2D: compressedTexImage2D,\n\t\ttexImage2D: texImage2D,\n\t\ttexImage3D: texImage3D,\n\n\t\tupdateUBOMapping: updateUBOMapping,\n\t\tuniformBlockBinding: uniformBlockBinding,\n\n\t\ttexStorage2D: texStorage2D,\n\t\ttexStorage3D: texStorage3D,\n\t\ttexSubImage2D: texSubImage2D,\n\t\ttexSubImage3D: texSubImage3D,\n\t\tcompressedTexSubImage2D: compressedTexSubImage2D,\n\n\t\tscissor: scissor,\n\t\tviewport: viewport,\n\n\t\treset: reset\n\n\t};\n\n}\n\nfunction WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\tconst maxTextures = capabilities.maxTextures;\n\tconst maxCubemapSize = capabilities.maxCubemapSize;\n\tconst maxTextureSize = capabilities.maxTextureSize;\n\tconst maxSamples = capabilities.maxSamples;\n\tconst multisampledRTTExt = extensions.has( 'WEBGL_multisampled_render_to_texture' ) ? extensions.get( 'WEBGL_multisampled_render_to_texture' ) : null;\n\tconst supportsInvalidateFramebuffer = /OculusBrowser/g.test( navigator.userAgent );\n\n\tconst _videoTextures = new WeakMap();\n\tlet _canvas;\n\n\tconst _sources = new WeakMap(); // maps WebglTexture objects to instances of Source\n\n\t// cordova iOS (as of 5.0) still uses UIWebView, which provides OffscreenCanvas,\n\t// also OffscreenCanvas.getContext(\"webgl\"), but not OffscreenCanvas.getContext(\"2d\")!\n\t// Some implementations may only implement OffscreenCanvas partially (e.g. lacking 2d).\n\n\tlet useOffscreenCanvas = false;\n\n\ttry {\n\n\t\tuseOffscreenCanvas = typeof OffscreenCanvas !== 'undefined'\n\t\t\t// eslint-disable-next-line compat/compat\n\t\t\t&& ( new OffscreenCanvas( 1, 1 ).getContext( '2d' ) ) !== null;\n\n\t} catch ( err ) {\n\n\t\t// Ignore any errors\n\n\t}\n\n\tfunction createCanvas( width, height ) {\n\n\t\t// Use OffscreenCanvas when available. Specially needed in web workers\n\n\t\treturn useOffscreenCanvas ?\n\t\t\t// eslint-disable-next-line compat/compat\n\t\t\tnew OffscreenCanvas( width, height ) : createElementNS( 'canvas' );\n\n\t}\n\n\tfunction resizeImage( image, needsPowerOfTwo, needsNewCanvas, maxSize ) {\n\n\t\tlet scale = 1;\n\n\t\t// handle case if texture exceeds max size\n\n\t\tif ( image.width > maxSize || image.height > maxSize ) {\n\n\t\t\tscale = maxSize / Math.max( image.width, image.height );\n\n\t\t}\n\n\t\t// only perform resize if necessary\n\n\t\tif ( scale < 1 || needsPowerOfTwo === true ) {\n\n\t\t\t// only perform resize for certain image types\n\n\t\t\tif ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||\n\t\t\t\t( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||\n\t\t\t\t( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) {\n\n\t\t\t\tconst floor = needsPowerOfTwo ? floorPowerOfTwo : Math.floor;\n\n\t\t\t\tconst width = floor( scale * image.width );\n\t\t\t\tconst height = floor( scale * image.height );\n\n\t\t\t\tif ( _canvas === undefined ) _canvas = createCanvas( width, height );\n\n\t\t\t\t// cube textures can't reuse the same canvas\n\n\t\t\t\tconst canvas = needsNewCanvas ? createCanvas( width, height ) : _canvas;\n\n\t\t\t\tcanvas.width = width;\n\t\t\t\tcanvas.height = height;\n\n\t\t\t\tconst context = canvas.getContext( '2d' );\n\t\t\t\tcontext.drawImage( image, 0, 0, width, height );\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture has been resized from (' + image.width + 'x' + image.height + ') to (' + width + 'x' + height + ').' );\n\n\t\t\t\treturn canvas;\n\n\t\t\t} else {\n\n\t\t\t\tif ( 'data' in image ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Image in DataTexture is too big (' + image.width + 'x' + image.height + ').' );\n\n\t\t\t\t}\n\n\t\t\t\treturn image;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn image;\n\n\t}\n\n\tfunction isPowerOfTwo$1( image ) {\n\n\t\treturn isPowerOfTwo( image.width ) && isPowerOfTwo( image.height );\n\n\t}\n\n\tfunction textureNeedsPowerOfTwo( texture ) {\n\n\t\tif ( isWebGL2 ) return false;\n\n\t\treturn ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) ||\n\t\t\t( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter );\n\n\t}\n\n\tfunction textureNeedsGenerateMipmaps( texture, supportsMips ) {\n\n\t\treturn texture.generateMipmaps && supportsMips &&\n\t\t\ttexture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter;\n\n\t}\n\n\tfunction generateMipmap( target ) {\n\n\t\t_gl.generateMipmap( target );\n\n\t}\n\n\tfunction getInternalFormat( internalFormatName, glFormat, glType, encoding, isVideoTexture = false ) {\n\n\t\tif ( isWebGL2 === false ) return glFormat;\n\n\t\tif ( internalFormatName !== null ) {\n\n\t\t\tif ( _gl[ internalFormatName ] !== undefined ) return _gl[ internalFormatName ];\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format \\'' + internalFormatName + '\\'' );\n\n\t\t}\n\n\t\tlet internalFormat = glFormat;\n\n\t\tif ( glFormat === 6403 ) {\n\n\t\t\tif ( glType === 5126 ) internalFormat = 33326;\n\t\t\tif ( glType === 5131 ) internalFormat = 33325;\n\t\t\tif ( glType === 5121 ) internalFormat = 33321;\n\n\t\t}\n\n\t\tif ( glFormat === 33319 ) {\n\n\t\t\tif ( glType === 5126 ) internalFormat = 33328;\n\t\t\tif ( glType === 5131 ) internalFormat = 33327;\n\t\t\tif ( glType === 5121 ) internalFormat = 33323;\n\n\t\t}\n\n\t\tif ( glFormat === 6408 ) {\n\n\t\t\tif ( glType === 5126 ) internalFormat = 34836;\n\t\t\tif ( glType === 5131 ) internalFormat = 34842;\n\t\t\tif ( glType === 5121 ) internalFormat = ( encoding === sRGBEncoding && isVideoTexture === false ) ? 35907 : 32856;\n\t\t\tif ( glType === 32819 ) internalFormat = 32854;\n\t\t\tif ( glType === 32820 ) internalFormat = 32855;\n\n\t\t}\n\n\t\tif ( internalFormat === 33325 || internalFormat === 33326 ||\n\t\t\tinternalFormat === 33327 || internalFormat === 33328 ||\n\t\t\tinternalFormat === 34842 || internalFormat === 34836 ) {\n\n\t\t\textensions.get( 'EXT_color_buffer_float' );\n\n\t\t}\n\n\t\treturn internalFormat;\n\n\t}\n\n\tfunction getMipLevels( texture, image, supportsMips ) {\n\n\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) === true || ( texture.isFramebufferTexture && texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter ) ) {\n\n\t\t\treturn Math.log2( Math.max( image.width, image.height ) ) + 1;\n\n\t\t} else if ( texture.mipmaps !== undefined && texture.mipmaps.length > 0 ) {\n\n\t\t\t// user-defined mipmaps\n\n\t\t\treturn texture.mipmaps.length;\n\n\t\t} else if ( texture.isCompressedTexture && Array.isArray( texture.image ) ) {\n\n\t\t\treturn image.mipmaps.length;\n\n\t\t} else {\n\n\t\t\t// texture without mipmaps (only base level)\n\n\t\t\treturn 1;\n\n\t\t}\n\n\t}\n\n\t// Fallback filters for non-power-of-2 textures\n\n\tfunction filterFallback( f ) {\n\n\t\tif ( f === NearestFilter || f === NearestMipmapNearestFilter || f === NearestMipmapLinearFilter ) {\n\n\t\t\treturn 9728;\n\n\t\t}\n\n\t\treturn 9729;\n\n\t}\n\n\t//\n\n\tfunction onTextureDispose( event ) {\n\n\t\tconst texture = event.target;\n\n\t\ttexture.removeEventListener( 'dispose', onTextureDispose );\n\n\t\tdeallocateTexture( texture );\n\n\t\tif ( texture.isVideoTexture ) {\n\n\t\t\t_videoTextures.delete( texture );\n\n\t\t}\n\n\t}\n\n\tfunction onRenderTargetDispose( event ) {\n\n\t\tconst renderTarget = event.target;\n\n\t\trenderTarget.removeEventListener( 'dispose', onRenderTargetDispose );\n\n\t\tdeallocateRenderTarget( renderTarget );\n\n\t}\n\n\t//\n\n\tfunction deallocateTexture( texture ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( textureProperties.__webglInit === undefined ) return;\n\n\t\t// check if it's necessary to remove the WebGLTexture object\n\n\t\tconst source = texture.source;\n\t\tconst webglTextures = _sources.get( source );\n\n\t\tif ( webglTextures ) {\n\n\t\t\tconst webglTexture = webglTextures[ textureProperties.__cacheKey ];\n\t\t\twebglTexture.usedTimes --;\n\n\t\t\t// the WebGLTexture object is not used anymore, remove it\n\n\t\t\tif ( webglTexture.usedTimes === 0 ) {\n\n\t\t\t\tdeleteTexture( texture );\n\n\t\t\t}\n\n\t\t\t// remove the weak map entry if no WebGLTexture uses the source anymore\n\n\t\t\tif ( Object.keys( webglTextures ).length === 0 ) {\n\n\t\t\t\t_sources.delete( source );\n\n\t\t\t}\n\n\t\t}\n\n\t\tproperties.remove( texture );\n\n\t}\n\n\tfunction deleteTexture( texture ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\t\t_gl.deleteTexture( textureProperties.__webglTexture );\n\n\t\tconst source = texture.source;\n\t\tconst webglTextures = _sources.get( source );\n\t\tdelete webglTextures[ textureProperties.__cacheKey ];\n\n\t\tinfo.memory.textures --;\n\n\t}\n\n\tfunction deallocateRenderTarget( renderTarget ) {\n\n\t\tconst texture = renderTarget.texture;\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( textureProperties.__webglTexture !== undefined ) {\n\n\t\t\t_gl.deleteTexture( textureProperties.__webglTexture );\n\n\t\t\tinfo.memory.textures --;\n\n\t\t}\n\n\t\tif ( renderTarget.depthTexture ) {\n\n\t\t\trenderTarget.depthTexture.dispose();\n\n\t\t}\n\n\t\tif ( renderTarget.isWebGLCubeRenderTarget ) {\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer[ i ] );\n\t\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer[ i ] );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer );\n\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer );\n\t\t\tif ( renderTargetProperties.__webglMultisampledFramebuffer ) _gl.deleteFramebuffer( renderTargetProperties.__webglMultisampledFramebuffer );\n\n\t\t\tif ( renderTargetProperties.__webglColorRenderbuffer ) {\n\n\t\t\t\tfor ( let i = 0; i < renderTargetProperties.__webglColorRenderbuffer.length; i ++ ) {\n\n\t\t\t\t\tif ( renderTargetProperties.__webglColorRenderbuffer[ i ] ) _gl.deleteRenderbuffer( renderTargetProperties.__webglColorRenderbuffer[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( renderTargetProperties.__webglDepthRenderbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthRenderbuffer );\n\n\t\t}\n\n\t\tif ( renderTarget.isWebGLMultipleRenderTargets ) {\n\n\t\t\tfor ( let i = 0, il = texture.length; i < il; i ++ ) {\n\n\t\t\t\tconst attachmentProperties = properties.get( texture[ i ] );\n\n\t\t\t\tif ( attachmentProperties.__webglTexture ) {\n\n\t\t\t\t\t_gl.deleteTexture( attachmentProperties.__webglTexture );\n\n\t\t\t\t\tinfo.memory.textures --;\n\n\t\t\t\t}\n\n\t\t\t\tproperties.remove( texture[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tproperties.remove( texture );\n\t\tproperties.remove( renderTarget );\n\n\t}\n\n\t//\n\n\tlet textureUnits = 0;\n\n\tfunction resetTextureUnits() {\n\n\t\ttextureUnits = 0;\n\n\t}\n\n\tfunction allocateTextureUnit() {\n\n\t\tconst textureUnit = textureUnits;\n\n\t\tif ( textureUnit >= maxTextures ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLTextures: Trying to use ' + textureUnit + ' texture units while this GPU supports only ' + maxTextures );\n\n\t\t}\n\n\t\ttextureUnits += 1;\n\n\t\treturn textureUnit;\n\n\t}\n\n\tfunction getTextureCacheKey( texture ) {\n\n\t\tconst array = [];\n\n\t\tarray.push( texture.wrapS );\n\t\tarray.push( texture.wrapT );\n\t\tarray.push( texture.magFilter );\n\t\tarray.push( texture.minFilter );\n\t\tarray.push( texture.anisotropy );\n\t\tarray.push( texture.internalFormat );\n\t\tarray.push( texture.format );\n\t\tarray.push( texture.type );\n\t\tarray.push( texture.generateMipmaps );\n\t\tarray.push( texture.premultiplyAlpha );\n\t\tarray.push( texture.flipY );\n\t\tarray.push( texture.unpackAlignment );\n\t\tarray.push( texture.encoding );\n\n\t\treturn array.join();\n\n\t}\n\n\t//\n\n\tfunction setTexture2D( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.isVideoTexture ) updateVideoTexture( texture );\n\n\t\tif ( texture.isRenderTargetTexture === false && texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tconst image = texture.image;\n\n\t\t\tif ( image === null ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but no image data found.' );\n\n\t\t\t} else if ( image.complete === false ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but image is incomplete' );\n\n\t\t\t} else {\n\n\t\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 3553, textureProperties.__webglTexture );\n\n\t}\n\n\tfunction setTexture2DArray( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 35866, textureProperties.__webglTexture );\n\n\t}\n\n\tfunction setTexture3D( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 32879, textureProperties.__webglTexture );\n\n\t}\n\n\tfunction setTextureCube( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadCubeTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 34067, textureProperties.__webglTexture );\n\n\t}\n\n\tconst wrappingToGL = {\n\t\t[ RepeatWrapping ]: 10497,\n\t\t[ ClampToEdgeWrapping ]: 33071,\n\t\t[ MirroredRepeatWrapping ]: 33648\n\t};\n\n\tconst filterToGL = {\n\t\t[ NearestFilter ]: 9728,\n\t\t[ NearestMipmapNearestFilter ]: 9984,\n\t\t[ NearestMipmapLinearFilter ]: 9986,\n\n\t\t[ LinearFilter ]: 9729,\n\t\t[ LinearMipmapNearestFilter ]: 9985,\n\t\t[ LinearMipmapLinearFilter ]: 9987\n\t};\n\n\tfunction setTextureParameters( textureType, texture, supportsMips ) {\n\n\t\tif ( supportsMips ) {\n\n\t\t\t_gl.texParameteri( textureType, 10242, wrappingToGL[ texture.wrapS ] );\n\t\t\t_gl.texParameteri( textureType, 10243, wrappingToGL[ texture.wrapT ] );\n\n\t\t\tif ( textureType === 32879 || textureType === 35866 ) {\n\n\t\t\t\t_gl.texParameteri( textureType, 32882, wrappingToGL[ texture.wrapR ] );\n\n\t\t\t}\n\n\t\t\t_gl.texParameteri( textureType, 10240, filterToGL[ texture.magFilter ] );\n\t\t\t_gl.texParameteri( textureType, 10241, filterToGL[ texture.minFilter ] );\n\n\t\t} else {\n\n\t\t\t_gl.texParameteri( textureType, 10242, 33071 );\n\t\t\t_gl.texParameteri( textureType, 10243, 33071 );\n\n\t\t\tif ( textureType === 32879 || textureType === 35866 ) {\n\n\t\t\t\t_gl.texParameteri( textureType, 32882, 33071 );\n\n\t\t\t}\n\n\t\t\tif ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping.' );\n\n\t\t\t}\n\n\t\t\t_gl.texParameteri( textureType, 10240, filterFallback( texture.magFilter ) );\n\t\t\t_gl.texParameteri( textureType, 10241, filterFallback( texture.minFilter ) );\n\n\t\t\tif ( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.' );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( extensions.has( 'EXT_texture_filter_anisotropic' ) === true ) {\n\n\t\t\tconst extension = extensions.get( 'EXT_texture_filter_anisotropic' );\n\n\t\t\tif ( texture.type === FloatType && extensions.has( 'OES_texture_float_linear' ) === false ) return; // verify extension for WebGL 1 and WebGL 2\n\t\t\tif ( isWebGL2 === false && ( texture.type === HalfFloatType && extensions.has( 'OES_texture_half_float_linear' ) === false ) ) return; // verify extension for WebGL 1 only\n\n\t\t\tif ( texture.anisotropy > 1 || properties.get( texture ).__currentAnisotropy ) {\n\n\t\t\t\t_gl.texParameterf( textureType, extension.TEXTURE_MAX_ANISOTROPY_EXT, Math.min( texture.anisotropy, capabilities.getMaxAnisotropy() ) );\n\t\t\t\tproperties.get( texture ).__currentAnisotropy = texture.anisotropy;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction initTexture( textureProperties, texture ) {\n\n\t\tlet forceUpload = false;\n\n\t\tif ( textureProperties.__webglInit === undefined ) {\n\n\t\t\ttextureProperties.__webglInit = true;\n\n\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t}\n\n\t\t// create Source <-> WebGLTextures mapping if necessary\n\n\t\tconst source = texture.source;\n\t\tlet webglTextures = _sources.get( source );\n\n\t\tif ( webglTextures === undefined ) {\n\n\t\t\twebglTextures = {};\n\t\t\t_sources.set( source, webglTextures );\n\n\t\t}\n\n\t\t// check if there is already a WebGLTexture object for the given texture parameters\n\n\t\tconst textureCacheKey = getTextureCacheKey( texture );\n\n\t\tif ( textureCacheKey !== textureProperties.__cacheKey ) {\n\n\t\t\t// if not, create a new instance of WebGLTexture\n\n\t\t\tif ( webglTextures[ textureCacheKey ] === undefined ) {\n\n\t\t\t\t// create new entry\n\n\t\t\t\twebglTextures[ textureCacheKey ] = {\n\t\t\t\t\ttexture: _gl.createTexture(),\n\t\t\t\t\tusedTimes: 0\n\t\t\t\t};\n\n\t\t\t\tinfo.memory.textures ++;\n\n\t\t\t\t// when a new instance of WebGLTexture was created, a texture upload is required\n\t\t\t\t// even if the image contents are identical\n\n\t\t\t\tforceUpload = true;\n\n\t\t\t}\n\n\t\t\twebglTextures[ textureCacheKey ].usedTimes ++;\n\n\t\t\t// every time the texture cache key changes, it's necessary to check if an instance of\n\t\t\t// WebGLTexture can be deleted in order to avoid a memory leak.\n\n\t\t\tconst webglTexture = webglTextures[ textureProperties.__cacheKey ];\n\n\t\t\tif ( webglTexture !== undefined ) {\n\n\t\t\t\twebglTextures[ textureProperties.__cacheKey ].usedTimes --;\n\n\t\t\t\tif ( webglTexture.usedTimes === 0 ) {\n\n\t\t\t\t\tdeleteTexture( texture );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// store references to cache key and WebGLTexture object\n\n\t\t\ttextureProperties.__cacheKey = textureCacheKey;\n\t\t\ttextureProperties.__webglTexture = webglTextures[ textureCacheKey ].texture;\n\n\t\t}\n\n\t\treturn forceUpload;\n\n\t}\n\n\tfunction uploadTexture( textureProperties, texture, slot ) {\n\n\t\tlet textureType = 3553;\n\n\t\tif ( texture.isDataArrayTexture ) textureType = 35866;\n\t\tif ( texture.isData3DTexture ) textureType = 32879;\n\n\t\tconst forceUpload = initTexture( textureProperties, texture );\n\t\tconst source = texture.source;\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( textureType, textureProperties.__webglTexture );\n\n\t\tif ( source.version !== source.__currentVersion || forceUpload === true ) {\n\n\t\t\t_gl.pixelStorei( 37440, texture.flipY );\n\t\t\t_gl.pixelStorei( 37441, texture.premultiplyAlpha );\n\t\t\t_gl.pixelStorei( 3317, texture.unpackAlignment );\n\t\t\t_gl.pixelStorei( 37443, 0 );\n\n\t\t\tconst needsPowerOfTwo = textureNeedsPowerOfTwo( texture ) && isPowerOfTwo$1( texture.image ) === false;\n\t\t\tlet image = resizeImage( texture.image, needsPowerOfTwo, false, maxTextureSize );\n\t\t\timage = verifyColorSpace( texture, image );\n\n\t\t\tconst supportsMips = isPowerOfTwo$1( image ) || isWebGL2,\n\t\t\t\tglFormat = utils.convert( texture.format, texture.encoding );\n\n\t\t\tlet glType = utils.convert( texture.type ),\n\t\t\t\tglInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.encoding, texture.isVideoTexture );\n\n\t\t\tsetTextureParameters( textureType, texture, supportsMips );\n\n\t\t\tlet mipmap;\n\t\t\tconst mipmaps = texture.mipmaps;\n\n\t\t\tconst useTexStorage = ( isWebGL2 && texture.isVideoTexture !== true );\n\t\t\tconst allocateMemory = ( source.__currentVersion === undefined ) || ( forceUpload === true );\n\t\t\tconst levels = getMipLevels( texture, image, supportsMips );\n\n\t\t\tif ( texture.isDepthTexture ) {\n\n\t\t\t\t// populate depth texture with dummy data\n\n\t\t\t\tglInternalFormat = 6402;\n\n\t\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t\tif ( texture.type === FloatType ) {\n\n\t\t\t\t\t\tglInternalFormat = 36012;\n\n\t\t\t\t\t} else if ( texture.type === UnsignedIntType ) {\n\n\t\t\t\t\t\tglInternalFormat = 33190;\n\n\t\t\t\t\t} else if ( texture.type === UnsignedInt248Type ) {\n\n\t\t\t\t\t\tglInternalFormat = 35056;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tglInternalFormat = 33189; // WebGL2 requires sized internalformat for glTexImage2D\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( texture.type === FloatType ) {\n\n\t\t\t\t\t\tconsole.error( 'WebGLRenderer: Floating point depth texture requires WebGL2.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// validation checks for WebGL 1\n\n\t\t\t\tif ( texture.format === DepthFormat && glInternalFormat === 6402 ) {\n\n\t\t\t\t\t// The error INVALID_OPERATION is generated by texImage2D if format and internalformat are\n\t\t\t\t\t// DEPTH_COMPONENT and type is not UNSIGNED_SHORT or UNSIGNED_INT\n\t\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\t\tif ( texture.type !== UnsignedShortType && texture.type !== UnsignedIntType ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture.' );\n\n\t\t\t\t\t\ttexture.type = UnsignedIntType;\n\t\t\t\t\t\tglType = utils.convert( texture.type );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( texture.format === DepthStencilFormat && glInternalFormat === 6402 ) {\n\n\t\t\t\t\t// Depth stencil textures need the DEPTH_STENCIL internal format\n\t\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\t\tglInternalFormat = 34041;\n\n\t\t\t\t\t// The error INVALID_OPERATION is generated by texImage2D if format and internalformat are\n\t\t\t\t\t// DEPTH_STENCIL and type is not UNSIGNED_INT_24_8_WEBGL.\n\t\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\n\t\t\t\t\tif ( texture.type !== UnsignedInt248Type ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture.' );\n\n\t\t\t\t\t\ttexture.type = UnsignedInt248Type;\n\t\t\t\t\t\tglType = utils.convert( texture.type );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t//\n\n\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\tstate.texStorage2D( 3553, 1, glInternalFormat, image.width, image.height );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tstate.texImage2D( 3553, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, null );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( texture.isDataTexture ) {\n\n\t\t\t\t// use manually created mipmaps if available\n\t\t\t\t// if there are no manual mipmaps\n\t\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\t\tif ( mipmaps.length > 0 && supportsMips ) {\n\n\t\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage2D( 3553, levels, glInternalFormat, mipmaps[ 0 ].width, mipmaps[ 0 ].height );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\tstate.texSubImage2D( 3553, i, 0, 0, mipmap.width, mipmap.height, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttexture.generateMipmaps = false;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\t\t\tstate.texStorage2D( 3553, levels, glInternalFormat, image.width, image.height );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstate.texSubImage2D( 3553, 0, 0, 0, image.width, image.height, glFormat, glType, image.data );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tstate.texImage2D( 3553, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, image.data );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( texture.isCompressedTexture ) {\n\n\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\tstate.texStorage2D( 3553, levels, glInternalFormat, mipmaps[ 0 ].width, mipmaps[ 0 ].height );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\t\tif ( texture.format !== RGBAFormat ) {\n\n\t\t\t\t\t\tif ( glFormat !== null ) {\n\n\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\tstate.compressedTexSubImage2D( 3553, i, 0, 0, mipmap.width, mipmap.height, glFormat, mipmap.data );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.compressedTexImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()' );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\tstate.texSubImage2D( 3553, i, 0, 0, mipmap.width, mipmap.height, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( texture.isDataArrayTexture ) {\n\n\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage3D( 35866, levels, glInternalFormat, image.width, image.height, image.depth );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tstate.texSubImage3D( 35866, 0, 0, 0, 0, image.width, image.height, image.depth, glFormat, glType, image.data );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tstate.texImage3D( 35866, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data );\n\n\t\t\t\t}\n\n\t\t\t} else if ( texture.isData3DTexture ) {\n\n\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage3D( 32879, levels, glInternalFormat, image.width, image.height, image.depth );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tstate.texSubImage3D( 32879, 0, 0, 0, 0, image.width, image.height, image.depth, glFormat, glType, image.data );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tstate.texImage3D( 32879, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data );\n\n\t\t\t\t}\n\n\t\t\t} else if ( texture.isFramebufferTexture ) {\n\n\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\tstate.texStorage2D( 3553, levels, glInternalFormat, image.width, image.height );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tlet width = image.width, height = image.height;\n\n\t\t\t\t\t\tfor ( let i = 0; i < levels; i ++ ) {\n\n\t\t\t\t\t\t\tstate.texImage2D( 3553, i, glInternalFormat, width, height, 0, glFormat, glType, null );\n\n\t\t\t\t\t\t\twidth >>= 1;\n\t\t\t\t\t\t\theight >>= 1;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// regular Texture (image, video, canvas)\n\n\t\t\t\t// use manually created mipmaps if available\n\t\t\t\t// if there are no manual mipmaps\n\t\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\t\tif ( mipmaps.length > 0 && supportsMips ) {\n\n\t\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage2D( 3553, levels, glInternalFormat, mipmaps[ 0 ].width, mipmaps[ 0 ].height );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\tstate.texSubImage2D( 3553, i, 0, 0, glFormat, glType, mipmap );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( 3553, i, glInternalFormat, glFormat, glType, mipmap );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttexture.generateMipmaps = false;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\t\t\tstate.texStorage2D( 3553, levels, glInternalFormat, image.width, image.height );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstate.texSubImage2D( 3553, 0, 0, 0, glFormat, glType, image );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tstate.texImage2D( 3553, 0, glInternalFormat, glFormat, glType, image );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t\tgenerateMipmap( textureType );\n\n\t\t\t}\n\n\t\t\tsource.__currentVersion = source.version;\n\n\t\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t\t}\n\n\t\ttextureProperties.__version = texture.version;\n\n\t}\n\n\tfunction uploadCubeTexture( textureProperties, texture, slot ) {\n\n\t\tif ( texture.image.length !== 6 ) return;\n\n\t\tconst forceUpload = initTexture( textureProperties, texture );\n\t\tconst source = texture.source;\n\n\t\tstate.activeTexture( 33984 + slot );\n\t\tstate.bindTexture( 34067, textureProperties.__webglTexture );\n\n\t\tif ( source.version !== source.__currentVersion || forceUpload === true ) {\n\n\t\t\t_gl.pixelStorei( 37440, texture.flipY );\n\t\t\t_gl.pixelStorei( 37441, texture.premultiplyAlpha );\n\t\t\t_gl.pixelStorei( 3317, texture.unpackAlignment );\n\t\t\t_gl.pixelStorei( 37443, 0 );\n\n\t\t\tconst isCompressed = ( texture.isCompressedTexture || texture.image[ 0 ].isCompressedTexture );\n\t\t\tconst isDataTexture = ( texture.image[ 0 ] && texture.image[ 0 ].isDataTexture );\n\n\t\t\tconst cubeImage = [];\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tif ( ! isCompressed && ! isDataTexture ) {\n\n\t\t\t\t\tcubeImage[ i ] = resizeImage( texture.image[ i ], false, true, maxCubemapSize );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tcubeImage[ i ] = isDataTexture ? texture.image[ i ].image : texture.image[ i ];\n\n\t\t\t\t}\n\n\t\t\t\tcubeImage[ i ] = verifyColorSpace( texture, cubeImage[ i ] );\n\n\t\t\t}\n\n\t\t\tconst image = cubeImage[ 0 ],\n\t\t\t\tsupportsMips = isPowerOfTwo$1( image ) || isWebGL2,\n\t\t\t\tglFormat = utils.convert( texture.format, texture.encoding ),\n\t\t\t\tglType = utils.convert( texture.type ),\n\t\t\t\tglInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.encoding );\n\n\t\t\tconst useTexStorage = ( isWebGL2 && texture.isVideoTexture !== true );\n\t\t\tconst allocateMemory = ( source.__currentVersion === undefined ) || ( forceUpload === true );\n\t\t\tlet levels = getMipLevels( texture, image, supportsMips );\n\n\t\t\tsetTextureParameters( 34067, texture, supportsMips );\n\n\t\t\tlet mipmaps;\n\n\t\t\tif ( isCompressed ) {\n\n\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\tstate.texStorage2D( 34067, levels, glInternalFormat, image.width, image.height );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tmipmaps = cubeImage[ i ].mipmaps;\n\n\t\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\n\t\t\t\t\t\tif ( texture.format !== RGBAFormat ) {\n\n\t\t\t\t\t\t\tif ( glFormat !== null ) {\n\n\t\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\t\tstate.compressedTexSubImage2D( 34069 + i, j, 0, 0, mipmap.width, mipmap.height, glFormat, mipmap.data );\n\n\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\tstate.compressedTexImage2D( 34069 + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()' );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\tstate.texSubImage2D( 34069 + i, j, 0, 0, mipmap.width, mipmap.height, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.texImage2D( 34069 + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tmipmaps = texture.mipmaps;\n\n\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\t// TODO: Uniformly handle mipmap definitions\n\t\t\t\t\t// Normal textures and compressed cube textures define base level + mips with their mipmap array\n\t\t\t\t\t// Uncompressed cube textures use their mipmap array only for mips (no base level)\n\n\t\t\t\t\tif ( mipmaps.length > 0 ) levels ++;\n\n\t\t\t\t\tstate.texStorage2D( 34067, levels, glInternalFormat, cubeImage[ 0 ].width, cubeImage[ 0 ].height );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tif ( isDataTexture ) {\n\n\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\tstate.texSubImage2D( 34069 + i, 0, 0, 0, cubeImage[ i ].width, cubeImage[ i ].height, glFormat, glType, cubeImage[ i ].data );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( 34069 + i, 0, glInternalFormat, cubeImage[ i ].width, cubeImage[ i ].height, 0, glFormat, glType, cubeImage[ i ].data );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\t\t\t\t\t\t\tconst mipmapImage = mipmap.image[ i ].image;\n\n\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\tstate.texSubImage2D( 34069 + i, j + 1, 0, 0, mipmapImage.width, mipmapImage.height, glFormat, glType, mipmapImage.data );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.texImage2D( 34069 + i, j + 1, glInternalFormat, mipmapImage.width, mipmapImage.height, 0, glFormat, glType, mipmapImage.data );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\tstate.texSubImage2D( 34069 + i, 0, 0, 0, glFormat, glType, cubeImage[ i ] );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( 34069 + i, 0, glInternalFormat, glFormat, glType, cubeImage[ i ] );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\n\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\tstate.texSubImage2D( 34069 + i, j + 1, 0, 0, glFormat, glType, mipmap.image[ i ] );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.texImage2D( 34069 + i, j + 1, glInternalFormat, glFormat, glType, mipmap.image[ i ] );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t\t// We assume images for cube map have the same size.\n\t\t\t\tgenerateMipmap( 34067 );\n\n\t\t\t}\n\n\t\t\tsource.__currentVersion = source.version;\n\n\t\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t\t}\n\n\t\ttextureProperties.__version = texture.version;\n\n\t}\n\n\t// Render targets\n\n\t// Setup storage for target texture and bind it to correct framebuffer\n\tfunction setupFrameBufferTexture( framebuffer, renderTarget, texture, attachment, textureTarget ) {\n\n\t\tconst glFormat = utils.convert( texture.format, texture.encoding );\n\t\tconst glType = utils.convert( texture.type );\n\t\tconst glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.encoding );\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\tif ( ! renderTargetProperties.__hasExternalTextures ) {\n\n\t\t\tif ( textureTarget === 32879 || textureTarget === 35866 ) {\n\n\t\t\t\tstate.texImage3D( textureTarget, 0, glInternalFormat, renderTarget.width, renderTarget.height, renderTarget.depth, 0, glFormat, glType, null );\n\n\t\t\t} else {\n\n\t\t\t\tstate.texImage2D( textureTarget, 0, glInternalFormat, renderTarget.width, renderTarget.height, 0, glFormat, glType, null );\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.bindFramebuffer( 36160, framebuffer );\n\n\t\tif ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\tmultisampledRTTExt.framebufferTexture2DMultisampleEXT( 36160, attachment, textureTarget, properties.get( texture ).__webglTexture, 0, getRenderTargetSamples( renderTarget ) );\n\n\t\t} else {\n\n\t\t\t_gl.framebufferTexture2D( 36160, attachment, textureTarget, properties.get( texture ).__webglTexture, 0 );\n\n\t\t}\n\n\t\tstate.bindFramebuffer( 36160, null );\n\n\t}\n\n\n\t// Setup storage for internal depth/stencil buffers and bind to correct framebuffer\n\tfunction setupRenderBufferStorage( renderbuffer, renderTarget, isMultisample ) {\n\n\t\t_gl.bindRenderbuffer( 36161, renderbuffer );\n\n\t\tif ( renderTarget.depthBuffer && ! renderTarget.stencilBuffer ) {\n\n\t\t\tlet glInternalFormat = 33189;\n\n\t\t\tif ( isMultisample || useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\tconst depthTexture = renderTarget.depthTexture;\n\n\t\t\t\tif ( depthTexture && depthTexture.isDepthTexture ) {\n\n\t\t\t\t\tif ( depthTexture.type === FloatType ) {\n\n\t\t\t\t\t\tglInternalFormat = 36012;\n\n\t\t\t\t\t} else if ( depthTexture.type === UnsignedIntType ) {\n\n\t\t\t\t\t\tglInternalFormat = 33190;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\t\tif ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\t\tmultisampledRTTExt.renderbufferStorageMultisampleEXT( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t_gl.renderbufferStorage( 36161, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t\t_gl.framebufferRenderbuffer( 36160, 36096, 36161, renderbuffer );\n\n\t\t} else if ( renderTarget.depthBuffer && renderTarget.stencilBuffer ) {\n\n\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\tif ( isMultisample && useMultisampledRTT( renderTarget ) === false ) {\n\n\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, 35056, renderTarget.width, renderTarget.height );\n\n\t\t\t} else if ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\tmultisampledRTTExt.renderbufferStorageMultisampleEXT( 36161, samples, 35056, renderTarget.width, renderTarget.height );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.renderbufferStorage( 36161, 34041, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\n\t\t\t_gl.framebufferRenderbuffer( 36160, 33306, 36161, renderbuffer );\n\n\t\t} else {\n\n\t\t\tconst textures = renderTarget.isWebGLMultipleRenderTargets === true ? renderTarget.texture : [ renderTarget.texture ];\n\n\t\t\tfor ( let i = 0; i < textures.length; i ++ ) {\n\n\t\t\t\tconst texture = textures[ i ];\n\n\t\t\t\tconst glFormat = utils.convert( texture.format, texture.encoding );\n\t\t\t\tconst glType = utils.convert( texture.type );\n\t\t\t\tconst glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.encoding );\n\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\t\tif ( isMultisample && useMultisampledRTT( renderTarget ) === false ) {\n\n\t\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t} else if ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\t\tmultisampledRTTExt.renderbufferStorageMultisampleEXT( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_gl.renderbufferStorage( 36161, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t_gl.bindRenderbuffer( 36161, null );\n\n\t}\n\n\t// Setup resources for a Depth Texture for a FBO (needs an extension)\n\tfunction setupDepthTexture( framebuffer, renderTarget ) {\n\n\t\tconst isCube = ( renderTarget && renderTarget.isWebGLCubeRenderTarget );\n\t\tif ( isCube ) throw new Error( 'Depth Texture with cube render targets is not supported' );\n\n\t\tstate.bindFramebuffer( 36160, framebuffer );\n\n\t\tif ( ! ( renderTarget.depthTexture && renderTarget.depthTexture.isDepthTexture ) ) {\n\n\t\t\tthrow new Error( 'renderTarget.depthTexture must be an instance of THREE.DepthTexture' );\n\n\t\t}\n\n\t\t// upload an empty depth texture with framebuffer size\n\t\tif ( ! properties.get( renderTarget.depthTexture ).__webglTexture ||\n\t\t\t\trenderTarget.depthTexture.image.width !== renderTarget.width ||\n\t\t\t\trenderTarget.depthTexture.image.height !== renderTarget.height ) {\n\n\t\t\trenderTarget.depthTexture.image.width = renderTarget.width;\n\t\t\trenderTarget.depthTexture.image.height = renderTarget.height;\n\t\t\trenderTarget.depthTexture.needsUpdate = true;\n\n\t\t}\n\n\t\tsetTexture2D( renderTarget.depthTexture, 0 );\n\n\t\tconst webglDepthTexture = properties.get( renderTarget.depthTexture ).__webglTexture;\n\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\tif ( renderTarget.depthTexture.format === DepthFormat ) {\n\n\t\t\tif ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\tmultisampledRTTExt.framebufferTexture2DMultisampleEXT( 36160, 36096, 3553, webglDepthTexture, 0, samples );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.framebufferTexture2D( 36160, 36096, 3553, webglDepthTexture, 0 );\n\n\t\t\t}\n\n\t\t} else if ( renderTarget.depthTexture.format === DepthStencilFormat ) {\n\n\t\t\tif ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\tmultisampledRTTExt.framebufferTexture2DMultisampleEXT( 36160, 33306, 3553, webglDepthTexture, 0, samples );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.framebufferTexture2D( 36160, 33306, 3553, webglDepthTexture, 0 );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'Unknown depthTexture format' );\n\n\t\t}\n\n\t}\n\n\t// Setup GL resources for a non-texture depth buffer\n\tfunction setupDepthRenderbuffer( renderTarget ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\tconst isCube = ( renderTarget.isWebGLCubeRenderTarget === true );\n\n\t\tif ( renderTarget.depthTexture && ! renderTargetProperties.__autoAllocateDepthBuffer ) {\n\n\t\t\tif ( isCube ) throw new Error( 'target.depthTexture not supported in Cube render targets' );\n\n\t\t\tsetupDepthTexture( renderTargetProperties.__webglFramebuffer, renderTarget );\n\n\t\t} else {\n\n\t\t\tif ( isCube ) {\n\n\t\t\t\trenderTargetProperties.__webglDepthbuffer = [];\n\n\t\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tstate.bindFramebuffer( 36160, renderTargetProperties.__webglFramebuffer[ i ] );\n\t\t\t\t\trenderTargetProperties.__webglDepthbuffer[ i ] = _gl.createRenderbuffer();\n\t\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer[ i ], renderTarget, false );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tstate.bindFramebuffer( 36160, renderTargetProperties.__webglFramebuffer );\n\t\t\t\trenderTargetProperties.__webglDepthbuffer = _gl.createRenderbuffer();\n\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer, renderTarget, false );\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.bindFramebuffer( 36160, null );\n\n\t}\n\n\t// rebind framebuffer with external textures\n\tfunction rebindTextures( renderTarget, colorTexture, depthTexture ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\tif ( colorTexture !== undefined ) {\n\n\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, renderTarget.texture, 36064, 3553 );\n\n\t\t}\n\n\t\tif ( depthTexture !== undefined ) {\n\n\t\t\tsetupDepthRenderbuffer( renderTarget );\n\n\t\t}\n\n\t}\n\n\t// Set up GL resources for the render target\n\tfunction setupRenderTarget( renderTarget ) {\n\n\t\tconst texture = renderTarget.texture;\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\tconst textureProperties = properties.get( texture );\n\n\t\trenderTarget.addEventListener( 'dispose', onRenderTargetDispose );\n\n\t\tif ( renderTarget.isWebGLMultipleRenderTargets !== true ) {\n\n\t\t\tif ( textureProperties.__webglTexture === undefined ) {\n\n\t\t\t\ttextureProperties.__webglTexture = _gl.createTexture();\n\n\t\t\t}\n\n\t\t\ttextureProperties.__version = texture.version;\n\t\t\tinfo.memory.textures ++;\n\n\t\t}\n\n\t\tconst isCube = ( renderTarget.isWebGLCubeRenderTarget === true );\n\t\tconst isMultipleRenderTargets = ( renderTarget.isWebGLMultipleRenderTargets === true );\n\t\tconst supportsMips = isPowerOfTwo$1( renderTarget ) || isWebGL2;\n\n\t\t// Setup framebuffer\n\n\t\tif ( isCube ) {\n\n\t\t\trenderTargetProperties.__webglFramebuffer = [];\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\trenderTargetProperties.__webglFramebuffer[ i ] = _gl.createFramebuffer();\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\trenderTargetProperties.__webglFramebuffer = _gl.createFramebuffer();\n\n\t\t\tif ( isMultipleRenderTargets ) {\n\n\t\t\t\tif ( capabilities.drawBuffers ) {\n\n\t\t\t\t\tconst textures = renderTarget.texture;\n\n\t\t\t\t\tfor ( let i = 0, il = textures.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst attachmentProperties = properties.get( textures[ i ] );\n\n\t\t\t\t\t\tif ( attachmentProperties.__webglTexture === undefined ) {\n\n\t\t\t\t\t\t\tattachmentProperties.__webglTexture = _gl.createTexture();\n\n\t\t\t\t\t\t\tinfo.memory.textures ++;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: WebGLMultipleRenderTargets can only be used with WebGL2 or WEBGL_draw_buffers extension.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( ( isWebGL2 && renderTarget.samples > 0 ) && useMultisampledRTT( renderTarget ) === false ) {\n\n\t\t\t\tconst textures = isMultipleRenderTargets ? texture : [ texture ];\n\n\t\t\t\trenderTargetProperties.__webglMultisampledFramebuffer = _gl.createFramebuffer();\n\t\t\t\trenderTargetProperties.__webglColorRenderbuffer = [];\n\n\t\t\t\tstate.bindFramebuffer( 36160, renderTargetProperties.__webglMultisampledFramebuffer );\n\n\t\t\t\tfor ( let i = 0; i < textures.length; i ++ ) {\n\n\t\t\t\t\tconst texture = textures[ i ];\n\t\t\t\t\trenderTargetProperties.__webglColorRenderbuffer[ i ] = _gl.createRenderbuffer();\n\n\t\t\t\t\t_gl.bindRenderbuffer( 36161, renderTargetProperties.__webglColorRenderbuffer[ i ] );\n\n\t\t\t\t\tconst glFormat = utils.convert( texture.format, texture.encoding );\n\t\t\t\t\tconst glType = utils.convert( texture.type );\n\t\t\t\t\tconst glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.encoding );\n\t\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\t\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t\t_gl.framebufferRenderbuffer( 36160, 36064 + i, 36161, renderTargetProperties.__webglColorRenderbuffer[ i ] );\n\n\t\t\t\t}\n\n\t\t\t\t_gl.bindRenderbuffer( 36161, null );\n\n\t\t\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\t\t\trenderTargetProperties.__webglDepthRenderbuffer = _gl.createRenderbuffer();\n\t\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthRenderbuffer, renderTarget, true );\n\n\t\t\t\t}\n\n\t\t\t\tstate.bindFramebuffer( 36160, null );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Setup color buffer\n\n\t\tif ( isCube ) {\n\n\t\t\tstate.bindTexture( 34067, textureProperties.__webglTexture );\n\t\t\tsetTextureParameters( 34067, texture, supportsMips );\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer[ i ], renderTarget, texture, 36064, 34069 + i );\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t\tgenerateMipmap( 34067 );\n\n\t\t\t}\n\n\t\t\tstate.unbindTexture();\n\n\t\t} else if ( isMultipleRenderTargets ) {\n\n\t\t\tconst textures = renderTarget.texture;\n\n\t\t\tfor ( let i = 0, il = textures.length; i < il; i ++ ) {\n\n\t\t\t\tconst attachment = textures[ i ];\n\t\t\t\tconst attachmentProperties = properties.get( attachment );\n\n\t\t\t\tstate.bindTexture( 3553, attachmentProperties.__webglTexture );\n\t\t\t\tsetTextureParameters( 3553, attachment, supportsMips );\n\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, attachment, 36064 + i, 3553 );\n\n\t\t\t\tif ( textureNeedsGenerateMipmaps( attachment, supportsMips ) ) {\n\n\t\t\t\t\tgenerateMipmap( 3553 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tstate.unbindTexture();\n\n\t\t} else {\n\n\t\t\tlet glTextureType = 3553;\n\n\t\t\tif ( renderTarget.isWebGL3DRenderTarget || renderTarget.isWebGLArrayRenderTarget ) {\n\n\t\t\t\tif ( isWebGL2 ) {\n\n\t\t\t\t\tglTextureType = renderTarget.isWebGL3DRenderTarget ? 32879 : 35866;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLTextures: THREE.Data3DTexture and THREE.DataArrayTexture only supported with WebGL2.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tstate.bindTexture( glTextureType, textureProperties.__webglTexture );\n\t\t\tsetTextureParameters( glTextureType, texture, supportsMips );\n\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, texture, 36064, glTextureType );\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t\tgenerateMipmap( glTextureType );\n\n\t\t\t}\n\n\t\t\tstate.unbindTexture();\n\n\t\t}\n\n\t\t// Setup depth and stencil buffers\n\n\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\tsetupDepthRenderbuffer( renderTarget );\n\n\t\t}\n\n\t}\n\n\tfunction updateRenderTargetMipmap( renderTarget ) {\n\n\t\tconst supportsMips = isPowerOfTwo$1( renderTarget ) || isWebGL2;\n\n\t\tconst textures = renderTarget.isWebGLMultipleRenderTargets === true ? renderTarget.texture : [ renderTarget.texture ];\n\n\t\tfor ( let i = 0, il = textures.length; i < il; i ++ ) {\n\n\t\t\tconst texture = textures[ i ];\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\n\n\t\t\t\tconst target = renderTarget.isWebGLCubeRenderTarget ? 34067 : 3553;\n\t\t\t\tconst webglTexture = properties.get( texture ).__webglTexture;\n\n\t\t\t\tstate.bindTexture( target, webglTexture );\n\t\t\t\tgenerateMipmap( target );\n\t\t\t\tstate.unbindTexture();\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction updateMultisampleRenderTarget( renderTarget ) {\n\n\t\tif ( ( isWebGL2 && renderTarget.samples > 0 ) && useMultisampledRTT( renderTarget ) === false ) {\n\n\t\t\tconst textures = renderTarget.isWebGLMultipleRenderTargets ? renderTarget.texture : [ renderTarget.texture ];\n\t\t\tconst width = renderTarget.width;\n\t\t\tconst height = renderTarget.height;\n\t\t\tlet mask = 16384;\n\t\t\tconst invalidationArray = [];\n\t\t\tconst depthStyle = renderTarget.stencilBuffer ? 33306 : 36096;\n\t\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\t\tconst isMultipleRenderTargets = ( renderTarget.isWebGLMultipleRenderTargets === true );\n\n\t\t\t// If MRT we need to remove FBO attachments\n\t\t\tif ( isMultipleRenderTargets ) {\n\n\t\t\t\tfor ( let i = 0; i < textures.length; i ++ ) {\n\n\t\t\t\t\tstate.bindFramebuffer( 36160, renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\t\t\t_gl.framebufferRenderbuffer( 36160, 36064 + i, 36161, null );\n\n\t\t\t\t\tstate.bindFramebuffer( 36160, renderTargetProperties.__webglFramebuffer );\n\t\t\t\t\t_gl.framebufferTexture2D( 36009, 36064 + i, 3553, null, 0 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tstate.bindFramebuffer( 36008, renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\tstate.bindFramebuffer( 36009, renderTargetProperties.__webglFramebuffer );\n\n\t\t\tfor ( let i = 0; i < textures.length; i ++ ) {\n\n\t\t\t\tinvalidationArray.push( 36064 + i );\n\n\t\t\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\t\t\tinvalidationArray.push( depthStyle );\n\n\t\t\t\t}\n\n\t\t\t\tconst ignoreDepthValues = ( renderTargetProperties.__ignoreDepthValues !== undefined ) ? renderTargetProperties.__ignoreDepthValues : false;\n\n\t\t\t\tif ( ignoreDepthValues === false ) {\n\n\t\t\t\t\tif ( renderTarget.depthBuffer ) mask |= 256;\n\t\t\t\t\tif ( renderTarget.stencilBuffer ) mask |= 1024;\n\n\t\t\t\t}\n\n\t\t\t\tif ( isMultipleRenderTargets ) {\n\n\t\t\t\t\t_gl.framebufferRenderbuffer( 36008, 36064, 36161, renderTargetProperties.__webglColorRenderbuffer[ i ] );\n\n\t\t\t\t}\n\n\t\t\t\tif ( ignoreDepthValues === true ) {\n\n\t\t\t\t\t_gl.invalidateFramebuffer( 36008, [ depthStyle ] );\n\t\t\t\t\t_gl.invalidateFramebuffer( 36009, [ depthStyle ] );\n\n\t\t\t\t}\n\n\t\t\t\tif ( isMultipleRenderTargets ) {\n\n\t\t\t\t\tconst webglTexture = properties.get( textures[ i ] ).__webglTexture;\n\t\t\t\t\t_gl.framebufferTexture2D( 36009, 36064, 3553, webglTexture, 0 );\n\n\t\t\t\t}\n\n\t\t\t\t_gl.blitFramebuffer( 0, 0, width, height, 0, 0, width, height, mask, 9728 );\n\n\t\t\t\tif ( supportsInvalidateFramebuffer ) {\n\n\t\t\t\t\t_gl.invalidateFramebuffer( 36008, invalidationArray );\n\n\t\t\t\t}\n\n\n\t\t\t}\n\n\t\t\tstate.bindFramebuffer( 36008, null );\n\t\t\tstate.bindFramebuffer( 36009, null );\n\n\t\t\t// If MRT since pre-blit we removed the FBO we need to reconstruct the attachments\n\t\t\tif ( isMultipleRenderTargets ) {\n\n\t\t\t\tfor ( let i = 0; i < textures.length; i ++ ) {\n\n\t\t\t\t\tstate.bindFramebuffer( 36160, renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\t\t\t_gl.framebufferRenderbuffer( 36160, 36064 + i, 36161, renderTargetProperties.__webglColorRenderbuffer[ i ] );\n\n\t\t\t\t\tconst webglTexture = properties.get( textures[ i ] ).__webglTexture;\n\n\t\t\t\t\tstate.bindFramebuffer( 36160, renderTargetProperties.__webglFramebuffer );\n\t\t\t\t\t_gl.framebufferTexture2D( 36009, 36064 + i, 3553, webglTexture, 0 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tstate.bindFramebuffer( 36009, renderTargetProperties.__webglMultisampledFramebuffer );\n\n\t\t}\n\n\t}\n\n\tfunction getRenderTargetSamples( renderTarget ) {\n\n\t\treturn Math.min( maxSamples, renderTarget.samples );\n\n\t}\n\n\tfunction useMultisampledRTT( renderTarget ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\treturn isWebGL2 && renderTarget.samples > 0 && extensions.has( 'WEBGL_multisampled_render_to_texture' ) === true && renderTargetProperties.__useRenderToTexture !== false;\n\n\t}\n\n\tfunction updateVideoTexture( texture ) {\n\n\t\tconst frame = info.render.frame;\n\n\t\t// Check the last frame we updated the VideoTexture\n\n\t\tif ( _videoTextures.get( texture ) !== frame ) {\n\n\t\t\t_videoTextures.set( texture, frame );\n\t\t\ttexture.update();\n\n\t\t}\n\n\t}\n\n\tfunction verifyColorSpace( texture, image ) {\n\n\t\tconst encoding = texture.encoding;\n\t\tconst format = texture.format;\n\t\tconst type = texture.type;\n\n\t\tif ( texture.isCompressedTexture === true || texture.isVideoTexture === true || texture.format === _SRGBAFormat ) return image;\n\n\t\tif ( encoding !== LinearEncoding ) {\n\n\t\t\t// sRGB\n\n\t\t\tif ( encoding === sRGBEncoding ) {\n\n\t\t\t\tif ( isWebGL2 === false ) {\n\n\t\t\t\t\t// in WebGL 1, try to use EXT_sRGB extension and unsized formats\n\n\t\t\t\t\tif ( extensions.has( 'EXT_sRGB' ) === true && format === RGBAFormat ) {\n\n\t\t\t\t\t\ttexture.format = _SRGBAFormat;\n\n\t\t\t\t\t\t// it's not possible to generate mips in WebGL 1 with this extension\n\n\t\t\t\t\t\ttexture.minFilter = LinearFilter;\n\t\t\t\t\t\ttexture.generateMipmaps = false;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// slow fallback (CPU decode)\n\n\t\t\t\t\t\timage = ImageUtils.sRGBToLinear( image );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// in WebGL 2 uncompressed textures can only be sRGB encoded if they have the RGBA8 format\n\n\t\t\t\t\tif ( format !== RGBAFormat || type !== UnsignedByteType ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tconsole.error( 'THREE.WebGLTextures: Unsupported texture encoding:', encoding );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn image;\n\n\t}\n\n\t//\n\n\tthis.allocateTextureUnit = allocateTextureUnit;\n\tthis.resetTextureUnits = resetTextureUnits;\n\n\tthis.setTexture2D = setTexture2D;\n\tthis.setTexture2DArray = setTexture2DArray;\n\tthis.setTexture3D = setTexture3D;\n\tthis.setTextureCube = setTextureCube;\n\tthis.rebindTextures = rebindTextures;\n\tthis.setupRenderTarget = setupRenderTarget;\n\tthis.updateRenderTargetMipmap = updateRenderTargetMipmap;\n\tthis.updateMultisampleRenderTarget = updateMultisampleRenderTarget;\n\tthis.setupDepthRenderbuffer = setupDepthRenderbuffer;\n\tthis.setupFrameBufferTexture = setupFrameBufferTexture;\n\tthis.useMultisampledRTT = useMultisampledRTT;\n\n}\n\nfunction WebGLUtils( gl, extensions, capabilities ) {\n\n\tconst isWebGL2 = capabilities.isWebGL2;\n\n\tfunction convert( p, encoding = null ) {\n\n\t\tlet extension;\n\n\t\tif ( p === UnsignedByteType ) return 5121;\n\t\tif ( p === UnsignedShort4444Type ) return 32819;\n\t\tif ( p === UnsignedShort5551Type ) return 32820;\n\n\t\tif ( p === ByteType ) return 5120;\n\t\tif ( p === ShortType ) return 5122;\n\t\tif ( p === UnsignedShortType ) return 5123;\n\t\tif ( p === IntType ) return 5124;\n\t\tif ( p === UnsignedIntType ) return 5125;\n\t\tif ( p === FloatType ) return 5126;\n\n\t\tif ( p === HalfFloatType ) {\n\n\t\t\tif ( isWebGL2 ) return 5131;\n\n\t\t\textension = extensions.get( 'OES_texture_half_float' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.HALF_FLOAT_OES;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( p === AlphaFormat ) return 6406;\n\t\tif ( p === RGBAFormat ) return 6408;\n\t\tif ( p === LuminanceFormat ) return 6409;\n\t\tif ( p === LuminanceAlphaFormat ) return 6410;\n\t\tif ( p === DepthFormat ) return 6402;\n\t\tif ( p === DepthStencilFormat ) return 34041;\n\t\tif ( p === RedFormat ) return 6403;\n\n\t\tif ( p === RGBFormat ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: THREE.RGBFormat has been removed. Use THREE.RGBAFormat instead. https://github.com/mrdoob/three.js/pull/23228' );\n\t\t\treturn 6408;\n\n\t\t}\n\n\t\t// WebGL 1 sRGB fallback\n\n\t\tif ( p === _SRGBAFormat ) {\n\n\t\t\textension = extensions.get( 'EXT_sRGB' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.SRGB_ALPHA_EXT;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// WebGL2 formats.\n\n\t\tif ( p === RedIntegerFormat ) return 36244;\n\t\tif ( p === RGFormat ) return 33319;\n\t\tif ( p === RGIntegerFormat ) return 33320;\n\t\tif ( p === RGBAIntegerFormat ) return 36249;\n\n\t\t// S3TC\n\n\t\tif ( p === RGB_S3TC_DXT1_Format || p === RGBA_S3TC_DXT1_Format || p === RGBA_S3TC_DXT3_Format || p === RGBA_S3TC_DXT5_Format ) {\n\n\t\t\tif ( encoding === sRGBEncoding ) {\n\n\t\t\t\textension = extensions.get( 'WEBGL_compressed_texture_s3tc_srgb' );\n\n\t\t\t\tif ( extension !== null ) {\n\n\t\t\t\t\tif ( p === RGB_S3TC_DXT1_Format ) return extension.COMPRESSED_SRGB_S3TC_DXT1_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT1_Format ) return extension.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT3_Format ) return extension.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT5_Format ) return extension.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT;\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\textension = extensions.get( 'WEBGL_compressed_texture_s3tc' );\n\n\t\t\t\tif ( extension !== null ) {\n\n\t\t\t\t\tif ( p === RGB_S3TC_DXT1_Format ) return extension.COMPRESSED_RGB_S3TC_DXT1_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT1_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT1_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT3_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT3_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT5_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT5_EXT;\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// PVRTC\n\n\t\tif ( p === RGB_PVRTC_4BPPV1_Format || p === RGB_PVRTC_2BPPV1_Format || p === RGBA_PVRTC_4BPPV1_Format || p === RGBA_PVRTC_2BPPV1_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_pvrtc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;\n\t\t\t\tif ( p === RGB_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;\n\t\t\t\tif ( p === RGBA_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;\n\t\t\t\tif ( p === RGBA_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// ETC1\n\n\t\tif ( p === RGB_ETC1_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_etc1' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.COMPRESSED_RGB_ETC1_WEBGL;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// ETC2\n\n\t\tif ( p === RGB_ETC2_Format || p === RGBA_ETC2_EAC_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_etc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_ETC2_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ETC2 : extension.COMPRESSED_RGB8_ETC2;\n\t\t\t\tif ( p === RGBA_ETC2_EAC_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC : extension.COMPRESSED_RGBA8_ETC2_EAC;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// ASTC\n\n\t\tif ( p === RGBA_ASTC_4x4_Format || p === RGBA_ASTC_5x4_Format || p === RGBA_ASTC_5x5_Format ||\n\t\t\tp === RGBA_ASTC_6x5_Format || p === RGBA_ASTC_6x6_Format || p === RGBA_ASTC_8x5_Format ||\n\t\t\tp === RGBA_ASTC_8x6_Format || p === RGBA_ASTC_8x8_Format || p === RGBA_ASTC_10x5_Format ||\n\t\t\tp === RGBA_ASTC_10x6_Format || p === RGBA_ASTC_10x8_Format || p === RGBA_ASTC_10x10_Format ||\n\t\t\tp === RGBA_ASTC_12x10_Format || p === RGBA_ASTC_12x12_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_astc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGBA_ASTC_4x4_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR : extension.COMPRESSED_RGBA_ASTC_4x4_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_5x4_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR : extension.COMPRESSED_RGBA_ASTC_5x4_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_5x5_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR : extension.COMPRESSED_RGBA_ASTC_5x5_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_6x5_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR : extension.COMPRESSED_RGBA_ASTC_6x5_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_6x6_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR : extension.COMPRESSED_RGBA_ASTC_6x6_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_8x5_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR : extension.COMPRESSED_RGBA_ASTC_8x5_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_8x6_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR : extension.COMPRESSED_RGBA_ASTC_8x6_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_8x8_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR : extension.COMPRESSED_RGBA_ASTC_8x8_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_10x5_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR : extension.COMPRESSED_RGBA_ASTC_10x5_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_10x6_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR : extension.COMPRESSED_RGBA_ASTC_10x6_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_10x8_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR : extension.COMPRESSED_RGBA_ASTC_10x8_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_10x10_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR : extension.COMPRESSED_RGBA_ASTC_10x10_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_12x10_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR : extension.COMPRESSED_RGBA_ASTC_12x10_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_12x12_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR : extension.COMPRESSED_RGBA_ASTC_12x12_KHR;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// BPTC\n\n\t\tif ( p === RGBA_BPTC_Format ) {\n\n\t\t\textension = extensions.get( 'EXT_texture_compression_bptc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGBA_BPTC_Format ) return ( encoding === sRGBEncoding ) ? extension.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT : extension.COMPRESSED_RGBA_BPTC_UNORM_EXT;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tif ( p === UnsignedInt248Type ) {\n\n\t\t\tif ( isWebGL2 ) return 34042;\n\n\t\t\textension = extensions.get( 'WEBGL_depth_texture' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\treturn extension.UNSIGNED_INT_24_8_WEBGL;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// if \"p\" can't be resolved, assume the user defines a WebGL constant as a string (fallback/workaround for packed RGB formats)\n\n\t\treturn ( gl[ p ] !== undefined ) ? gl[ p ] : null;\n\n\t}\n\n\treturn { convert: convert };\n\n}\n\nclass ArrayCamera extends PerspectiveCamera {\n\n\tconstructor( array = [] ) {\n\n\t\tsuper();\n\n\t\tthis.isArrayCamera = true;\n\n\t\tthis.cameras = array;\n\n\t}\n\n}\n\nclass Group extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isGroup = true;\n\n\t\tthis.type = 'Group';\n\n\t}\n\n}\n\nconst _moveEvent = { type: 'move' };\n\nclass WebXRController {\n\n\tconstructor() {\n\n\t\tthis._targetRay = null;\n\t\tthis._grip = null;\n\t\tthis._hand = null;\n\n\t}\n\n\tgetHandSpace() {\n\n\t\tif ( this._hand === null ) {\n\n\t\t\tthis._hand = new Group();\n\t\t\tthis._hand.matrixAutoUpdate = false;\n\t\t\tthis._hand.visible = false;\n\n\t\t\tthis._hand.joints = {};\n\t\t\tthis._hand.inputState = { pinching: false };\n\n\t\t}\n\n\t\treturn this._hand;\n\n\t}\n\n\tgetTargetRaySpace() {\n\n\t\tif ( this._targetRay === null ) {\n\n\t\t\tthis._targetRay = new Group();\n\t\t\tthis._targetRay.matrixAutoUpdate = false;\n\t\t\tthis._targetRay.visible = false;\n\t\t\tthis._targetRay.hasLinearVelocity = false;\n\t\t\tthis._targetRay.linearVelocity = new Vector3();\n\t\t\tthis._targetRay.hasAngularVelocity = false;\n\t\t\tthis._targetRay.angularVelocity = new Vector3();\n\n\t\t}\n\n\t\treturn this._targetRay;\n\n\t}\n\n\tgetGripSpace() {\n\n\t\tif ( this._grip === null ) {\n\n\t\t\tthis._grip = new Group();\n\t\t\tthis._grip.matrixAutoUpdate = false;\n\t\t\tthis._grip.visible = false;\n\t\t\tthis._grip.hasLinearVelocity = false;\n\t\t\tthis._grip.linearVelocity = new Vector3();\n\t\t\tthis._grip.hasAngularVelocity = false;\n\t\t\tthis._grip.angularVelocity = new Vector3();\n\n\t\t}\n\n\t\treturn this._grip;\n\n\t}\n\n\tdispatchEvent( event ) {\n\n\t\tif ( this._targetRay !== null ) {\n\n\t\t\tthis._targetRay.dispatchEvent( event );\n\n\t\t}\n\n\t\tif ( this._grip !== null ) {\n\n\t\t\tthis._grip.dispatchEvent( event );\n\n\t\t}\n\n\t\tif ( this._hand !== null ) {\n\n\t\t\tthis._hand.dispatchEvent( event );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tdisconnect( inputSource ) {\n\n\t\tthis.dispatchEvent( { type: 'disconnected', data: inputSource } );\n\n\t\tif ( this._targetRay !== null ) {\n\n\t\t\tthis._targetRay.visible = false;\n\n\t\t}\n\n\t\tif ( this._grip !== null ) {\n\n\t\t\tthis._grip.visible = false;\n\n\t\t}\n\n\t\tif ( this._hand !== null ) {\n\n\t\t\tthis._hand.visible = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tupdate( inputSource, frame, referenceSpace ) {\n\n\t\tlet inputPose = null;\n\t\tlet gripPose = null;\n\t\tlet handPose = null;\n\n\t\tconst targetRay = this._targetRay;\n\t\tconst grip = this._grip;\n\t\tconst hand = this._hand;\n\n\t\tif ( inputSource && frame.session.visibilityState !== 'visible-blurred' ) {\n\n\t\t\tif ( hand && inputSource.hand ) {\n\n\t\t\t\thandPose = true;\n\n\t\t\t\tfor ( const inputjoint of inputSource.hand.values() ) {\n\n\t\t\t\t\t// Update the joints groups with the XRJoint poses\n\t\t\t\t\tconst jointPose = frame.getJointPose( inputjoint, referenceSpace );\n\n\t\t\t\t\tif ( hand.joints[ inputjoint.jointName ] === undefined ) {\n\n\t\t\t\t\t\t// The transform of this joint will be updated with the joint pose on each frame\n\t\t\t\t\t\tconst joint = new Group();\n\t\t\t\t\t\tjoint.matrixAutoUpdate = false;\n\t\t\t\t\t\tjoint.visible = false;\n\t\t\t\t\t\thand.joints[ inputjoint.jointName ] = joint;\n\t\t\t\t\t\t// ??\n\t\t\t\t\t\thand.add( joint );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst joint = hand.joints[ inputjoint.jointName ];\n\n\t\t\t\t\tif ( jointPose !== null ) {\n\n\t\t\t\t\t\tjoint.matrix.fromArray( jointPose.transform.matrix );\n\t\t\t\t\t\tjoint.matrix.decompose( joint.position, joint.rotation, joint.scale );\n\t\t\t\t\t\tjoint.jointRadius = jointPose.radius;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tjoint.visible = jointPose !== null;\n\n\t\t\t\t}\n\n\t\t\t\t// Custom events\n\n\t\t\t\t// Check pinchz\n\t\t\t\tconst indexTip = hand.joints[ 'index-finger-tip' ];\n\t\t\t\tconst thumbTip = hand.joints[ 'thumb-tip' ];\n\t\t\t\tconst distance = indexTip.position.distanceTo( thumbTip.position );\n\n\t\t\t\tconst distanceToPinch = 0.02;\n\t\t\t\tconst threshold = 0.005;\n\n\t\t\t\tif ( hand.inputState.pinching && distance > distanceToPinch + threshold ) {\n\n\t\t\t\t\thand.inputState.pinching = false;\n\t\t\t\t\tthis.dispatchEvent( {\n\t\t\t\t\t\ttype: 'pinchend',\n\t\t\t\t\t\thandedness: inputSource.handedness,\n\t\t\t\t\t\ttarget: this\n\t\t\t\t\t} );\n\n\t\t\t\t} else if ( ! hand.inputState.pinching && distance <= distanceToPinch - threshold ) {\n\n\t\t\t\t\thand.inputState.pinching = true;\n\t\t\t\t\tthis.dispatchEvent( {\n\t\t\t\t\t\ttype: 'pinchstart',\n\t\t\t\t\t\thandedness: inputSource.handedness,\n\t\t\t\t\t\ttarget: this\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( grip !== null && inputSource.gripSpace ) {\n\n\t\t\t\t\tgripPose = frame.getPose( inputSource.gripSpace, referenceSpace );\n\n\t\t\t\t\tif ( gripPose !== null ) {\n\n\t\t\t\t\t\tgrip.matrix.fromArray( gripPose.transform.matrix );\n\t\t\t\t\t\tgrip.matrix.decompose( grip.position, grip.rotation, grip.scale );\n\n\t\t\t\t\t\tif ( gripPose.linearVelocity ) {\n\n\t\t\t\t\t\t\tgrip.hasLinearVelocity = true;\n\t\t\t\t\t\t\tgrip.linearVelocity.copy( gripPose.linearVelocity );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tgrip.hasLinearVelocity = false;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( gripPose.angularVelocity ) {\n\n\t\t\t\t\t\t\tgrip.hasAngularVelocity = true;\n\t\t\t\t\t\t\tgrip.angularVelocity.copy( gripPose.angularVelocity );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tgrip.hasAngularVelocity = false;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( targetRay !== null ) {\n\n\t\t\t\tinputPose = frame.getPose( inputSource.targetRaySpace, referenceSpace );\n\n\t\t\t\t// Some runtimes (namely Vive Cosmos with Vive OpenXR Runtime) have only grip space and ray space is equal to it\n\t\t\t\tif ( inputPose === null && gripPose !== null ) {\n\n\t\t\t\t\tinputPose = gripPose;\n\n\t\t\t\t}\n\n\t\t\t\tif ( inputPose !== null ) {\n\n\t\t\t\t\ttargetRay.matrix.fromArray( inputPose.transform.matrix );\n\t\t\t\t\ttargetRay.matrix.decompose( targetRay.position, targetRay.rotation, targetRay.scale );\n\n\t\t\t\t\tif ( inputPose.linearVelocity ) {\n\n\t\t\t\t\t\ttargetRay.hasLinearVelocity = true;\n\t\t\t\t\t\ttargetRay.linearVelocity.copy( inputPose.linearVelocity );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ttargetRay.hasLinearVelocity = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( inputPose.angularVelocity ) {\n\n\t\t\t\t\t\ttargetRay.hasAngularVelocity = true;\n\t\t\t\t\t\ttargetRay.angularVelocity.copy( inputPose.angularVelocity );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ttargetRay.hasAngularVelocity = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.dispatchEvent( _moveEvent );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\n\t\t}\n\n\t\tif ( targetRay !== null ) {\n\n\t\t\ttargetRay.visible = ( inputPose !== null );\n\n\t\t}\n\n\t\tif ( grip !== null ) {\n\n\t\t\tgrip.visible = ( gripPose !== null );\n\n\t\t}\n\n\t\tif ( hand !== null ) {\n\n\t\t\thand.visible = ( handPose !== null );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass DepthTexture extends Texture {\n\n\tconstructor( width, height, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, format ) {\n\n\t\tformat = format !== undefined ? format : DepthFormat;\n\n\t\tif ( format !== DepthFormat && format !== DepthStencilFormat ) {\n\n\t\t\tthrow new Error( 'DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat' );\n\n\t\t}\n\n\t\tif ( type === undefined && format === DepthFormat ) type = UnsignedIntType;\n\t\tif ( type === undefined && format === DepthStencilFormat ) type = UnsignedInt248Type;\n\n\t\tsuper( null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\t\tthis.isDepthTexture = true;\n\n\t\tthis.image = { width: width, height: height };\n\n\t\tthis.magFilter = magFilter !== undefined ? magFilter : NearestFilter;\n\t\tthis.minFilter = minFilter !== undefined ? minFilter : NearestFilter;\n\n\t\tthis.flipY = false;\n\t\tthis.generateMipmaps = false;\n\n\t}\n\n\n}\n\nclass WebXRManager extends EventDispatcher {\n\n\tconstructor( renderer, gl ) {\n\n\t\tsuper();\n\n\t\tconst scope = this;\n\n\t\tlet session = null;\n\t\tlet framebufferScaleFactor = 1.0;\n\n\t\tlet referenceSpace = null;\n\t\tlet referenceSpaceType = 'local-floor';\n\t\tlet customReferenceSpace = null;\n\n\t\tlet pose = null;\n\t\tlet glBinding = null;\n\t\tlet glProjLayer = null;\n\t\tlet glBaseLayer = null;\n\t\tlet xrFrame = null;\n\t\tconst attributes = gl.getContextAttributes();\n\t\tlet initialRenderTarget = null;\n\t\tlet newRenderTarget = null;\n\n\t\tconst controllers = [];\n\t\tconst controllerInputSources = [];\n\n\t\t//\n\n\t\tconst cameraL = new PerspectiveCamera();\n\t\tcameraL.layers.enable( 1 );\n\t\tcameraL.viewport = new Vector4();\n\n\t\tconst cameraR = new PerspectiveCamera();\n\t\tcameraR.layers.enable( 2 );\n\t\tcameraR.viewport = new Vector4();\n\n\t\tconst cameras = [ cameraL, cameraR ];\n\n\t\tconst cameraVR = new ArrayCamera();\n\t\tcameraVR.layers.enable( 1 );\n\t\tcameraVR.layers.enable( 2 );\n\n\t\tlet _currentDepthNear = null;\n\t\tlet _currentDepthFar = null;\n\n\t\t//\n\n\t\tthis.cameraAutoUpdate = true;\n\t\tthis.enabled = false;\n\n\t\tthis.isPresenting = false;\n\n\t\tthis.getController = function ( index ) {\n\n\t\t\tlet controller = controllers[ index ];\n\n\t\t\tif ( controller === undefined ) {\n\n\t\t\t\tcontroller = new WebXRController();\n\t\t\t\tcontrollers[ index ] = controller;\n\n\t\t\t}\n\n\t\t\treturn controller.getTargetRaySpace();\n\n\t\t};\n\n\t\tthis.getControllerGrip = function ( index ) {\n\n\t\t\tlet controller = controllers[ index ];\n\n\t\t\tif ( controller === undefined ) {\n\n\t\t\t\tcontroller = new WebXRController();\n\t\t\t\tcontrollers[ index ] = controller;\n\n\t\t\t}\n\n\t\t\treturn controller.getGripSpace();\n\n\t\t};\n\n\t\tthis.getHand = function ( index ) {\n\n\t\t\tlet controller = controllers[ index ];\n\n\t\t\tif ( controller === undefined ) {\n\n\t\t\t\tcontroller = new WebXRController();\n\t\t\t\tcontrollers[ index ] = controller;\n\n\t\t\t}\n\n\t\t\treturn controller.getHandSpace();\n\n\t\t};\n\n\t\t//\n\n\t\tfunction onSessionEvent( event ) {\n\n\t\t\tconst controllerIndex = controllerInputSources.indexOf( event.inputSource );\n\n\t\t\tif ( controllerIndex === - 1 ) {\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tconst controller = controllers[ controllerIndex ];\n\n\t\t\tif ( controller !== undefined ) {\n\n\t\t\t\tcontroller.dispatchEvent( { type: event.type, data: event.inputSource } );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction onSessionEnd() {\n\n\t\t\tsession.removeEventListener( 'select', onSessionEvent );\n\t\t\tsession.removeEventListener( 'selectstart', onSessionEvent );\n\t\t\tsession.removeEventListener( 'selectend', onSessionEvent );\n\t\t\tsession.removeEventListener( 'squeeze', onSessionEvent );\n\t\t\tsession.removeEventListener( 'squeezestart', onSessionEvent );\n\t\t\tsession.removeEventListener( 'squeezeend', onSessionEvent );\n\t\t\tsession.removeEventListener( 'end', onSessionEnd );\n\t\t\tsession.removeEventListener( 'inputsourceschange', onInputSourcesChange );\n\n\t\t\tfor ( let i = 0; i < controllers.length; i ++ ) {\n\n\t\t\t\tconst inputSource = controllerInputSources[ i ];\n\n\t\t\t\tif ( inputSource === null ) continue;\n\n\t\t\t\tcontrollerInputSources[ i ] = null;\n\n\t\t\t\tcontrollers[ i ].disconnect( inputSource );\n\n\t\t\t}\n\n\t\t\t_currentDepthNear = null;\n\t\t\t_currentDepthFar = null;\n\n\t\t\t// restore framebuffer/rendering state\n\n\t\t\trenderer.setRenderTarget( initialRenderTarget );\n\n\t\t\tglBaseLayer = null;\n\t\t\tglProjLayer = null;\n\t\t\tglBinding = null;\n\t\t\tsession = null;\n\t\t\tnewRenderTarget = null;\n\n\t\t\t//\n\n\t\t\tanimation.stop();\n\n\t\t\tscope.isPresenting = false;\n\n\t\t\tscope.dispatchEvent( { type: 'sessionend' } );\n\n\t\t}\n\n\t\tthis.setFramebufferScaleFactor = function ( value ) {\n\n\t\t\tframebufferScaleFactor = value;\n\n\t\t\tif ( scope.isPresenting === true ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebXRManager: Cannot change framebuffer scale while presenting.' );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.setReferenceSpaceType = function ( value ) {\n\n\t\t\treferenceSpaceType = value;\n\n\t\t\tif ( scope.isPresenting === true ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebXRManager: Cannot change reference space type while presenting.' );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.getReferenceSpace = function () {\n\n\t\t\treturn customReferenceSpace || referenceSpace;\n\n\t\t};\n\n\t\tthis.setReferenceSpace = function ( space ) {\n\n\t\t\tcustomReferenceSpace = space;\n\n\t\t};\n\n\t\tthis.getBaseLayer = function () {\n\n\t\t\treturn glProjLayer !== null ? glProjLayer : glBaseLayer;\n\n\t\t};\n\n\t\tthis.getBinding = function () {\n\n\t\t\treturn glBinding;\n\n\t\t};\n\n\t\tthis.getFrame = function () {\n\n\t\t\treturn xrFrame;\n\n\t\t};\n\n\t\tthis.getSession = function () {\n\n\t\t\treturn session;\n\n\t\t};\n\n\t\tthis.setSession = async function ( value ) {\n\n\t\t\tsession = value;\n\n\t\t\tif ( session !== null ) {\n\n\t\t\t\tinitialRenderTarget = renderer.getRenderTarget();\n\n\t\t\t\tsession.addEventListener( 'select', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'selectstart', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'selectend', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'squeeze', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'squeezestart', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'squeezeend', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'end', onSessionEnd );\n\t\t\t\tsession.addEventListener( 'inputsourceschange', onInputSourcesChange );\n\n\t\t\t\tif ( attributes.xrCompatible !== true ) {\n\n\t\t\t\t\tawait gl.makeXRCompatible();\n\n\t\t\t\t}\n\n\t\t\t\tif ( ( session.renderState.layers === undefined ) || ( renderer.capabilities.isWebGL2 === false ) ) {\n\n\t\t\t\t\tconst layerInit = {\n\t\t\t\t\t\tantialias: ( session.renderState.layers === undefined ) ? attributes.antialias : true,\n\t\t\t\t\t\talpha: attributes.alpha,\n\t\t\t\t\t\tdepth: attributes.depth,\n\t\t\t\t\t\tstencil: attributes.stencil,\n\t\t\t\t\t\tframebufferScaleFactor: framebufferScaleFactor\n\t\t\t\t\t};\n\n\t\t\t\t\tglBaseLayer = new XRWebGLLayer( session, gl, layerInit );\n\n\t\t\t\t\tsession.updateRenderState( { baseLayer: glBaseLayer } );\n\n\t\t\t\t\tnewRenderTarget = new WebGLRenderTarget(\n\t\t\t\t\t\tglBaseLayer.framebufferWidth,\n\t\t\t\t\t\tglBaseLayer.framebufferHeight,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tformat: RGBAFormat,\n\t\t\t\t\t\t\ttype: UnsignedByteType,\n\t\t\t\t\t\t\tencoding: renderer.outputEncoding\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\n\t\t\t\t} else {\n\n\t\t\t\t\tlet depthFormat = null;\n\t\t\t\t\tlet depthType = null;\n\t\t\t\t\tlet glDepthFormat = null;\n\n\t\t\t\t\tif ( attributes.depth ) {\n\n\t\t\t\t\t\tglDepthFormat = attributes.stencil ? 35056 : 33190;\n\t\t\t\t\t\tdepthFormat = attributes.stencil ? DepthStencilFormat : DepthFormat;\n\t\t\t\t\t\tdepthType = attributes.stencil ? UnsignedInt248Type : UnsignedIntType;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst projectionlayerInit = {\n\t\t\t\t\t\tcolorFormat: 32856,\n\t\t\t\t\t\tdepthFormat: glDepthFormat,\n\t\t\t\t\t\tscaleFactor: framebufferScaleFactor\n\t\t\t\t\t};\n\n\t\t\t\t\tglBinding = new XRWebGLBinding( session, gl );\n\n\t\t\t\t\tglProjLayer = glBinding.createProjectionLayer( projectionlayerInit );\n\n\t\t\t\t\tsession.updateRenderState( { layers: [ glProjLayer ] } );\n\n\t\t\t\t\tnewRenderTarget = new WebGLRenderTarget(\n\t\t\t\t\t\tglProjLayer.textureWidth,\n\t\t\t\t\t\tglProjLayer.textureHeight,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tformat: RGBAFormat,\n\t\t\t\t\t\t\ttype: UnsignedByteType,\n\t\t\t\t\t\t\tdepthTexture: new DepthTexture( glProjLayer.textureWidth, glProjLayer.textureHeight, depthType, undefined, undefined, undefined, undefined, undefined, undefined, depthFormat ),\n\t\t\t\t\t\t\tstencilBuffer: attributes.stencil,\n\t\t\t\t\t\t\tencoding: renderer.outputEncoding,\n\t\t\t\t\t\t\tsamples: attributes.antialias ? 4 : 0\n\t\t\t\t\t\t} );\n\n\t\t\t\t\tconst renderTargetProperties = renderer.properties.get( newRenderTarget );\n\t\t\t\t\trenderTargetProperties.__ignoreDepthValues = glProjLayer.ignoreDepthValues;\n\n\t\t\t\t}\n\n\t\t\t\tnewRenderTarget.isXRRenderTarget = true; // TODO Remove this when possible, see #23278\n\n\t\t\t\t// Set foveation to maximum.\n\t\t\t\tthis.setFoveation( 1.0 );\n\n\t\t\t\tcustomReferenceSpace = null;\n\t\t\t\treferenceSpace = await session.requestReferenceSpace( referenceSpaceType );\n\n\t\t\t\tanimation.setContext( session );\n\t\t\t\tanimation.start();\n\n\t\t\t\tscope.isPresenting = true;\n\n\t\t\t\tscope.dispatchEvent( { type: 'sessionstart' } );\n\n\t\t\t}\n\n\t\t};\n\n\t\tfunction onInputSourcesChange( event ) {\n\n\t\t\t// Notify disconnected\n\n\t\t\tfor ( let i = 0; i < event.removed.length; i ++ ) {\n\n\t\t\t\tconst inputSource = event.removed[ i ];\n\t\t\t\tconst index = controllerInputSources.indexOf( inputSource );\n\n\t\t\t\tif ( index >= 0 ) {\n\n\t\t\t\t\tcontrollerInputSources[ index ] = null;\n\t\t\t\t\tcontrollers[ index ].dispatchEvent( { type: 'disconnected', data: inputSource } );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Notify connected\n\n\t\t\tfor ( let i = 0; i < event.added.length; i ++ ) {\n\n\t\t\t\tconst inputSource = event.added[ i ];\n\n\t\t\t\tlet controllerIndex = controllerInputSources.indexOf( inputSource );\n\n\t\t\t\tif ( controllerIndex === - 1 ) {\n\n\t\t\t\t\t// Assign input source a controller that currently has no input source\n\n\t\t\t\t\tfor ( let i = 0; i < controllers.length; i ++ ) {\n\n\t\t\t\t\t\tif ( i >= controllerInputSources.length ) {\n\n\t\t\t\t\t\t\tcontrollerInputSources.push( inputSource );\n\t\t\t\t\t\t\tcontrollerIndex = i;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t} else if ( controllerInputSources[ i ] === null ) {\n\n\t\t\t\t\t\t\tcontrollerInputSources[ i ] = inputSource;\n\t\t\t\t\t\t\tcontrollerIndex = i;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// If all controllers do currently receive input we ignore new ones\n\n\t\t\t\t\tif ( controllerIndex === - 1 ) break;\n\n\t\t\t\t}\n\n\t\t\t\tconst controller = controllers[ controllerIndex ];\n\n\t\t\t\tif ( controller ) {\n\n\t\t\t\t\tcontroller.dispatchEvent( { type: 'connected', data: inputSource } );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tconst cameraLPos = new Vector3();\n\t\tconst cameraRPos = new Vector3();\n\n\t\t/**\n\t\t * Assumes 2 cameras that are parallel and share an X-axis, and that\n\t\t * the cameras' projection and world matrices have already been set.\n\t\t * And that near and far planes are identical for both cameras.\n\t\t * Visualization of this technique: https://computergraphics.stackexchange.com/a/4765\n\t\t */\n\t\tfunction setProjectionFromUnion( camera, cameraL, cameraR ) {\n\n\t\t\tcameraLPos.setFromMatrixPosition( cameraL.matrixWorld );\n\t\t\tcameraRPos.setFromMatrixPosition( cameraR.matrixWorld );\n\n\t\t\tconst ipd = cameraLPos.distanceTo( cameraRPos );\n\n\t\t\tconst projL = cameraL.projectionMatrix.elements;\n\t\t\tconst projR = cameraR.projectionMatrix.elements;\n\n\t\t\t// VR systems will have identical far and near planes, and\n\t\t\t// most likely identical top and bottom frustum extents.\n\t\t\t// Use the left camera for these values.\n\t\t\tconst near = projL[ 14 ] / ( projL[ 10 ] - 1 );\n\t\t\tconst far = projL[ 14 ] / ( projL[ 10 ] + 1 );\n\t\t\tconst topFov = ( projL[ 9 ] + 1 ) / projL[ 5 ];\n\t\t\tconst bottomFov = ( projL[ 9 ] - 1 ) / projL[ 5 ];\n\n\t\t\tconst leftFov = ( projL[ 8 ] - 1 ) / projL[ 0 ];\n\t\t\tconst rightFov = ( projR[ 8 ] + 1 ) / projR[ 0 ];\n\t\t\tconst left = near * leftFov;\n\t\t\tconst right = near * rightFov;\n\n\t\t\t// Calculate the new camera's position offset from the\n\t\t\t// left camera. xOffset should be roughly half `ipd`.\n\t\t\tconst zOffset = ipd / ( - leftFov + rightFov );\n\t\t\tconst xOffset = zOffset * - leftFov;\n\n\t\t\t// TODO: Better way to apply this offset?\n\t\t\tcameraL.matrixWorld.decompose( camera.position, camera.quaternion, camera.scale );\n\t\t\tcamera.translateX( xOffset );\n\t\t\tcamera.translateZ( zOffset );\n\t\t\tcamera.matrixWorld.compose( camera.position, camera.quaternion, camera.scale );\n\t\t\tcamera.matrixWorldInverse.copy( camera.matrixWorld ).invert();\n\n\t\t\t// Find the union of the frustum values of the cameras and scale\n\t\t\t// the values so that the near plane's position does not change in world space,\n\t\t\t// although must now be relative to the new union camera.\n\t\t\tconst near2 = near + zOffset;\n\t\t\tconst far2 = far + zOffset;\n\t\t\tconst left2 = left - xOffset;\n\t\t\tconst right2 = right + ( ipd - xOffset );\n\t\t\tconst top2 = topFov * far / far2 * near2;\n\t\t\tconst bottom2 = bottomFov * far / far2 * near2;\n\n\t\t\tcamera.projectionMatrix.makePerspective( left2, right2, top2, bottom2, near2, far2 );\n\n\t\t}\n\n\t\tfunction updateCamera( camera, parent ) {\n\n\t\t\tif ( parent === null ) {\n\n\t\t\t\tcamera.matrixWorld.copy( camera.matrix );\n\n\t\t\t} else {\n\n\t\t\t\tcamera.matrixWorld.multiplyMatrices( parent.matrixWorld, camera.matrix );\n\n\t\t\t}\n\n\t\t\tcamera.matrixWorldInverse.copy( camera.matrixWorld ).invert();\n\n\t\t}\n\n\t\tthis.updateCamera = function ( camera ) {\n\n\t\t\tif ( session === null ) return;\n\n\t\t\tcameraVR.near = cameraR.near = cameraL.near = camera.near;\n\t\t\tcameraVR.far = cameraR.far = cameraL.far = camera.far;\n\n\t\t\tif ( _currentDepthNear !== cameraVR.near || _currentDepthFar !== cameraVR.far ) {\n\n\t\t\t\t// Note that the new renderState won't apply until the next frame. See #18320\n\n\t\t\t\tsession.updateRenderState( {\n\t\t\t\t\tdepthNear: cameraVR.near,\n\t\t\t\t\tdepthFar: cameraVR.far\n\t\t\t\t} );\n\n\t\t\t\t_currentDepthNear = cameraVR.near;\n\t\t\t\t_currentDepthFar = cameraVR.far;\n\n\t\t\t}\n\n\t\t\tconst parent = camera.parent;\n\t\t\tconst cameras = cameraVR.cameras;\n\n\t\t\tupdateCamera( cameraVR, parent );\n\n\t\t\tfor ( let i = 0; i < cameras.length; i ++ ) {\n\n\t\t\t\tupdateCamera( cameras[ i ], parent );\n\n\t\t\t}\n\n\t\t\tcameraVR.matrixWorld.decompose( cameraVR.position, cameraVR.quaternion, cameraVR.scale );\n\n\t\t\t// update user camera and its children\n\n\t\t\tcamera.position.copy( cameraVR.position );\n\t\t\tcamera.quaternion.copy( cameraVR.quaternion );\n\t\t\tcamera.scale.copy( cameraVR.scale );\n\t\t\tcamera.matrix.copy( cameraVR.matrix );\n\t\t\tcamera.matrixWorld.copy( cameraVR.matrixWorld );\n\n\t\t\tconst children = camera.children;\n\n\t\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\t\tchildren[ i ].updateMatrixWorld( true );\n\n\t\t\t}\n\n\t\t\t// update projection matrix for proper view frustum culling\n\n\t\t\tif ( cameras.length === 2 ) {\n\n\t\t\t\tsetProjectionFromUnion( cameraVR, cameraL, cameraR );\n\n\t\t\t} else {\n\n\t\t\t\t// assume single camera setup (AR)\n\n\t\t\t\tcameraVR.projectionMatrix.copy( cameraL.projectionMatrix );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.getCamera = function () {\n\n\t\t\treturn cameraVR;\n\n\t\t};\n\n\t\tthis.getFoveation = function () {\n\n\t\t\tif ( glProjLayer !== null ) {\n\n\t\t\t\treturn glProjLayer.fixedFoveation;\n\n\t\t\t}\n\n\t\t\tif ( glBaseLayer !== null ) {\n\n\t\t\t\treturn glBaseLayer.fixedFoveation;\n\n\t\t\t}\n\n\t\t\treturn undefined;\n\n\t\t};\n\n\t\tthis.setFoveation = function ( foveation ) {\n\n\t\t\t// 0 = no foveation = full resolution\n\t\t\t// 1 = maximum foveation = the edges render at lower resolution\n\n\t\t\tif ( glProjLayer !== null ) {\n\n\t\t\t\tglProjLayer.fixedFoveation = foveation;\n\n\t\t\t}\n\n\t\t\tif ( glBaseLayer !== null && glBaseLayer.fixedFoveation !== undefined ) {\n\n\t\t\t\tglBaseLayer.fixedFoveation = foveation;\n\n\t\t\t}\n\n\t\t};\n\n\t\t// Animation Loop\n\n\t\tlet onAnimationFrameCallback = null;\n\n\t\tfunction onAnimationFrame( time, frame ) {\n\n\t\t\tpose = frame.getViewerPose( customReferenceSpace || referenceSpace );\n\t\t\txrFrame = frame;\n\n\t\t\tif ( pose !== null ) {\n\n\t\t\t\tconst views = pose.views;\n\n\t\t\t\tif ( glBaseLayer !== null ) {\n\n\t\t\t\t\trenderer.setRenderTargetFramebuffer( newRenderTarget, glBaseLayer.framebuffer );\n\t\t\t\t\trenderer.setRenderTarget( newRenderTarget );\n\n\t\t\t\t}\n\n\t\t\t\tlet cameraVRNeedsUpdate = false;\n\n\t\t\t\t// check if it's necessary to rebuild cameraVR's camera list\n\n\t\t\t\tif ( views.length !== cameraVR.cameras.length ) {\n\n\t\t\t\t\tcameraVR.cameras.length = 0;\n\t\t\t\t\tcameraVRNeedsUpdate = true;\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0; i < views.length; i ++ ) {\n\n\t\t\t\t\tconst view = views[ i ];\n\n\t\t\t\t\tlet viewport = null;\n\n\t\t\t\t\tif ( glBaseLayer !== null ) {\n\n\t\t\t\t\t\tviewport = glBaseLayer.getViewport( view );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst glSubImage = glBinding.getViewSubImage( glProjLayer, view );\n\t\t\t\t\t\tviewport = glSubImage.viewport;\n\n\t\t\t\t\t\t// For side-by-side projection, we only produce a single texture for both eyes.\n\t\t\t\t\t\tif ( i === 0 ) {\n\n\t\t\t\t\t\t\trenderer.setRenderTargetTextures(\n\t\t\t\t\t\t\t\tnewRenderTarget,\n\t\t\t\t\t\t\t\tglSubImage.colorTexture,\n\t\t\t\t\t\t\t\tglProjLayer.ignoreDepthValues ? undefined : glSubImage.depthStencilTexture );\n\n\t\t\t\t\t\t\trenderer.setRenderTarget( newRenderTarget );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tlet camera = cameras[ i ];\n\n\t\t\t\t\tif ( camera === undefined ) {\n\n\t\t\t\t\t\tcamera = new PerspectiveCamera();\n\t\t\t\t\t\tcamera.layers.enable( i );\n\t\t\t\t\t\tcamera.viewport = new Vector4();\n\t\t\t\t\t\tcameras[ i ] = camera;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcamera.matrix.fromArray( view.transform.matrix );\n\t\t\t\t\tcamera.projectionMatrix.fromArray( view.projectionMatrix );\n\t\t\t\t\tcamera.viewport.set( viewport.x, viewport.y, viewport.width, viewport.height );\n\n\t\t\t\t\tif ( i === 0 ) {\n\n\t\t\t\t\t\tcameraVR.matrix.copy( camera.matrix );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( cameraVRNeedsUpdate === true ) {\n\n\t\t\t\t\t\tcameraVR.cameras.push( camera );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tfor ( let i = 0; i < controllers.length; i ++ ) {\n\n\t\t\t\tconst inputSource = controllerInputSources[ i ];\n\t\t\t\tconst controller = controllers[ i ];\n\n\t\t\t\tif ( inputSource !== null && controller !== undefined ) {\n\n\t\t\t\t\tcontroller.update( inputSource, frame, customReferenceSpace || referenceSpace );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( onAnimationFrameCallback ) onAnimationFrameCallback( time, frame );\n\n\t\t\txrFrame = null;\n\n\t\t}\n\n\t\tconst animation = new WebGLAnimation();\n\n\t\tanimation.setAnimationLoop( onAnimationFrame );\n\n\t\tthis.setAnimationLoop = function ( callback ) {\n\n\t\t\tonAnimationFrameCallback = callback;\n\n\t\t};\n\n\t\tthis.dispose = function () {};\n\n\t}\n\n}\n\nfunction WebGLMaterials( renderer, properties ) {\n\n\tfunction refreshFogUniforms( uniforms, fog ) {\n\n\t\tuniforms.fogColor.value.copy( fog.color );\n\n\t\tif ( fog.isFog ) {\n\n\t\t\tuniforms.fogNear.value = fog.near;\n\t\t\tuniforms.fogFar.value = fog.far;\n\n\t\t} else if ( fog.isFogExp2 ) {\n\n\t\t\tuniforms.fogDensity.value = fog.density;\n\n\t\t}\n\n\t}\n\n\tfunction refreshMaterialUniforms( uniforms, material, pixelRatio, height, transmissionRenderTarget ) {\n\n\t\tif ( material.isMeshBasicMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\n\t\t} else if ( material.isMeshLambertMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\n\t\t} else if ( material.isMeshToonMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsToon( uniforms, material );\n\n\t\t} else if ( material.isMeshPhongMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsPhong( uniforms, material );\n\n\t\t} else if ( material.isMeshStandardMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsStandard( uniforms, material );\n\n\t\t\tif ( material.isMeshPhysicalMaterial ) {\n\n\t\t\t\trefreshUniformsPhysical( uniforms, material, transmissionRenderTarget );\n\n\t\t\t}\n\n\t\t} else if ( material.isMeshMatcapMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsMatcap( uniforms, material );\n\n\t\t} else if ( material.isMeshDepthMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\n\t\t} else if ( material.isMeshDistanceMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsDistance( uniforms, material );\n\n\t\t} else if ( material.isMeshNormalMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\n\t\t} else if ( material.isLineBasicMaterial ) {\n\n\t\t\trefreshUniformsLine( uniforms, material );\n\n\t\t\tif ( material.isLineDashedMaterial ) {\n\n\t\t\t\trefreshUniformsDash( uniforms, material );\n\n\t\t\t}\n\n\t\t} else if ( material.isPointsMaterial ) {\n\n\t\t\trefreshUniformsPoints( uniforms, material, pixelRatio, height );\n\n\t\t} else if ( material.isSpriteMaterial ) {\n\n\t\t\trefreshUniformsSprites( uniforms, material );\n\n\t\t} else if ( material.isShadowMaterial ) {\n\n\t\t\tuniforms.color.value.copy( material.color );\n\t\t\tuniforms.opacity.value = material.opacity;\n\n\t\t} else if ( material.isShaderMaterial ) {\n\n\t\t\tmaterial.uniformsNeedUpdate = false; // #15581\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsCommon( uniforms, material ) {\n\n\t\tuniforms.opacity.value = material.opacity;\n\n\t\tif ( material.color ) {\n\n\t\t\tuniforms.diffuse.value.copy( material.color );\n\n\t\t}\n\n\t\tif ( material.emissive ) {\n\n\t\t\tuniforms.emissive.value.copy( material.emissive ).multiplyScalar( material.emissiveIntensity );\n\n\t\t}\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\n\n\t\t}\n\n\t\tif ( material.specularMap ) {\n\n\t\t\tuniforms.specularMap.value = material.specularMap;\n\n\t\t}\n\n\t\tif ( material.alphaTest > 0 ) {\n\n\t\t\tuniforms.alphaTest.value = material.alphaTest;\n\n\t\t}\n\n\t\tconst envMap = properties.get( material ).envMap;\n\n\t\tif ( envMap ) {\n\n\t\t\tuniforms.envMap.value = envMap;\n\n\t\t\tuniforms.flipEnvMap.value = ( envMap.isCubeTexture && envMap.isRenderTargetTexture === false ) ? - 1 : 1;\n\n\t\t\tuniforms.reflectivity.value = material.reflectivity;\n\t\t\tuniforms.ior.value = material.ior;\n\t\t\tuniforms.refractionRatio.value = material.refractionRatio;\n\n\t\t}\n\n\t\tif ( material.lightMap ) {\n\n\t\t\tuniforms.lightMap.value = material.lightMap;\n\n\t\t\t// artist-friendly light intensity scaling factor\n\t\t\tconst scaleFactor = ( renderer.physicallyCorrectLights !== true ) ? Math.PI : 1;\n\n\t\t\tuniforms.lightMapIntensity.value = material.lightMapIntensity * scaleFactor;\n\n\t\t}\n\n\t\tif ( material.aoMap ) {\n\n\t\t\tuniforms.aoMap.value = material.aoMap;\n\t\t\tuniforms.aoMapIntensity.value = material.aoMapIntensity;\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities\n\t\t// 1. color map\n\t\t// 2. specular map\n\t\t// 3. displacementMap map\n\t\t// 4. normal map\n\t\t// 5. bump map\n\t\t// 6. roughnessMap map\n\t\t// 7. metalnessMap map\n\t\t// 8. alphaMap map\n\t\t// 9. emissiveMap map\n\t\t// 10. clearcoat map\n\t\t// 11. clearcoat normal map\n\t\t// 12. clearcoat roughnessMap map\n\t\t// 13. iridescence map\n\t\t// 14. iridescence thickness map\n\t\t// 15. specular intensity map\n\t\t// 16. specular tint map\n\t\t// 17. transmission map\n\t\t// 18. thickness map\n\n\t\tlet uvScaleMap;\n\n\t\tif ( material.map ) {\n\n\t\t\tuvScaleMap = material.map;\n\n\t\t} else if ( material.specularMap ) {\n\n\t\t\tuvScaleMap = material.specularMap;\n\n\t\t} else if ( material.displacementMap ) {\n\n\t\t\tuvScaleMap = material.displacementMap;\n\n\t\t} else if ( material.normalMap ) {\n\n\t\t\tuvScaleMap = material.normalMap;\n\n\t\t} else if ( material.bumpMap ) {\n\n\t\t\tuvScaleMap = material.bumpMap;\n\n\t\t} else if ( material.roughnessMap ) {\n\n\t\t\tuvScaleMap = material.roughnessMap;\n\n\t\t} else if ( material.metalnessMap ) {\n\n\t\t\tuvScaleMap = material.metalnessMap;\n\n\t\t} else if ( material.alphaMap ) {\n\n\t\t\tuvScaleMap = material.alphaMap;\n\n\t\t} else if ( material.emissiveMap ) {\n\n\t\t\tuvScaleMap = material.emissiveMap;\n\n\t\t} else if ( material.clearcoatMap ) {\n\n\t\t\tuvScaleMap = material.clearcoatMap;\n\n\t\t} else if ( material.clearcoatNormalMap ) {\n\n\t\t\tuvScaleMap = material.clearcoatNormalMap;\n\n\t\t} else if ( material.clearcoatRoughnessMap ) {\n\n\t\t\tuvScaleMap = material.clearcoatRoughnessMap;\n\n\t\t} else if ( material.iridescenceMap ) {\n\n\t\t\tuvScaleMap = material.iridescenceMap;\n\n\t\t} else if ( material.iridescenceThicknessMap ) {\n\n\t\t\tuvScaleMap = material.iridescenceThicknessMap;\n\n\t\t} else if ( material.specularIntensityMap ) {\n\n\t\t\tuvScaleMap = material.specularIntensityMap;\n\n\t\t} else if ( material.specularColorMap ) {\n\n\t\t\tuvScaleMap = material.specularColorMap;\n\n\t\t} else if ( material.transmissionMap ) {\n\n\t\t\tuvScaleMap = material.transmissionMap;\n\n\t\t} else if ( material.thicknessMap ) {\n\n\t\t\tuvScaleMap = material.thicknessMap;\n\n\t\t} else if ( material.sheenColorMap ) {\n\n\t\t\tuvScaleMap = material.sheenColorMap;\n\n\t\t} else if ( material.sheenRoughnessMap ) {\n\n\t\t\tuvScaleMap = material.sheenRoughnessMap;\n\n\t\t}\n\n\t\tif ( uvScaleMap !== undefined ) {\n\n\t\t\t// backwards compatibility\n\t\t\tif ( uvScaleMap.isWebGLRenderTarget ) {\n\n\t\t\t\tuvScaleMap = uvScaleMap.texture;\n\n\t\t\t}\n\n\t\t\tif ( uvScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuvScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uvTransform.value.copy( uvScaleMap.matrix );\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities for uv2\n\t\t// 1. ao map\n\t\t// 2. light map\n\n\t\tlet uv2ScaleMap;\n\n\t\tif ( material.aoMap ) {\n\n\t\t\tuv2ScaleMap = material.aoMap;\n\n\t\t} else if ( material.lightMap ) {\n\n\t\t\tuv2ScaleMap = material.lightMap;\n\n\t\t}\n\n\t\tif ( uv2ScaleMap !== undefined ) {\n\n\t\t\t// backwards compatibility\n\t\t\tif ( uv2ScaleMap.isWebGLRenderTarget ) {\n\n\t\t\t\tuv2ScaleMap = uv2ScaleMap.texture;\n\n\t\t\t}\n\n\t\t\tif ( uv2ScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuv2ScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uv2Transform.value.copy( uv2ScaleMap.matrix );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsLine( uniforms, material ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\n\t}\n\n\tfunction refreshUniformsDash( uniforms, material ) {\n\n\t\tuniforms.dashSize.value = material.dashSize;\n\t\tuniforms.totalSize.value = material.dashSize + material.gapSize;\n\t\tuniforms.scale.value = material.scale;\n\n\t}\n\n\tfunction refreshUniformsPoints( uniforms, material, pixelRatio, height ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\t\tuniforms.size.value = material.size * pixelRatio;\n\t\tuniforms.scale.value = height * 0.5;\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t}\n\n\t\tif ( material.alphaTest > 0 ) {\n\n\t\t\tuniforms.alphaTest.value = material.alphaTest;\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities\n\t\t// 1. color map\n\t\t// 2. alpha map\n\n\t\tlet uvScaleMap;\n\n\t\tif ( material.map ) {\n\n\t\t\tuvScaleMap = material.map;\n\n\t\t} else if ( material.alphaMap ) {\n\n\t\t\tuvScaleMap = material.alphaMap;\n\n\t\t}\n\n\t\tif ( uvScaleMap !== undefined ) {\n\n\t\t\tif ( uvScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuvScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uvTransform.value.copy( uvScaleMap.matrix );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsSprites( uniforms, material ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\t\tuniforms.rotation.value = material.rotation;\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t}\n\n\t\tif ( material.alphaTest > 0 ) {\n\n\t\t\tuniforms.alphaTest.value = material.alphaTest;\n\n\t\t}\n\n\t\t// uv repeat and offset setting priorities\n\t\t// 1. color map\n\t\t// 2. alpha map\n\n\t\tlet uvScaleMap;\n\n\t\tif ( material.map ) {\n\n\t\t\tuvScaleMap = material.map;\n\n\t\t} else if ( material.alphaMap ) {\n\n\t\t\tuvScaleMap = material.alphaMap;\n\n\t\t}\n\n\t\tif ( uvScaleMap !== undefined ) {\n\n\t\t\tif ( uvScaleMap.matrixAutoUpdate === true ) {\n\n\t\t\t\tuvScaleMap.updateMatrix();\n\n\t\t\t}\n\n\t\t\tuniforms.uvTransform.value.copy( uvScaleMap.matrix );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsPhong( uniforms, material ) {\n\n\t\tuniforms.specular.value.copy( material.specular );\n\t\tuniforms.shininess.value = Math.max( material.shininess, 1e-4 ); // to prevent pow( 0.0, 0.0 )\n\n\t}\n\n\tfunction refreshUniformsToon( uniforms, material ) {\n\n\t\tif ( material.gradientMap ) {\n\n\t\t\tuniforms.gradientMap.value = material.gradientMap;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsStandard( uniforms, material ) {\n\n\t\tuniforms.roughness.value = material.roughness;\n\t\tuniforms.metalness.value = material.metalness;\n\n\t\tif ( material.roughnessMap ) {\n\n\t\t\tuniforms.roughnessMap.value = material.roughnessMap;\n\n\t\t}\n\n\t\tif ( material.metalnessMap ) {\n\n\t\t\tuniforms.metalnessMap.value = material.metalnessMap;\n\n\t\t}\n\n\t\tconst envMap = properties.get( material ).envMap;\n\n\t\tif ( envMap ) {\n\n\t\t\t//uniforms.envMap.value = material.envMap; // part of uniforms common\n\t\t\tuniforms.envMapIntensity.value = material.envMapIntensity;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsPhysical( uniforms, material, transmissionRenderTarget ) {\n\n\t\tuniforms.ior.value = material.ior; // also part of uniforms common\n\n\t\tif ( material.sheen > 0 ) {\n\n\t\t\tuniforms.sheenColor.value.copy( material.sheenColor ).multiplyScalar( material.sheen );\n\n\t\t\tuniforms.sheenRoughness.value = material.sheenRoughness;\n\n\t\t\tif ( material.sheenColorMap ) {\n\n\t\t\t\tuniforms.sheenColorMap.value = material.sheenColorMap;\n\n\t\t\t}\n\n\t\t\tif ( material.sheenRoughnessMap ) {\n\n\t\t\t\tuniforms.sheenRoughnessMap.value = material.sheenRoughnessMap;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.clearcoat > 0 ) {\n\n\t\t\tuniforms.clearcoat.value = material.clearcoat;\n\t\t\tuniforms.clearcoatRoughness.value = material.clearcoatRoughness;\n\n\t\t\tif ( material.clearcoatMap ) {\n\n\t\t\t\tuniforms.clearcoatMap.value = material.clearcoatMap;\n\n\t\t\t}\n\n\t\t\tif ( material.clearcoatRoughnessMap ) {\n\n\t\t\t\tuniforms.clearcoatRoughnessMap.value = material.clearcoatRoughnessMap;\n\n\t\t\t}\n\n\t\t\tif ( material.clearcoatNormalMap ) {\n\n\t\t\t\tuniforms.clearcoatNormalScale.value.copy( material.clearcoatNormalScale );\n\t\t\t\tuniforms.clearcoatNormalMap.value = material.clearcoatNormalMap;\n\n\t\t\t\tif ( material.side === BackSide ) {\n\n\t\t\t\t\tuniforms.clearcoatNormalScale.value.negate();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.iridescence > 0 ) {\n\n\t\t\tuniforms.iridescence.value = material.iridescence;\n\t\t\tuniforms.iridescenceIOR.value = material.iridescenceIOR;\n\t\t\tuniforms.iridescenceThicknessMinimum.value = material.iridescenceThicknessRange[ 0 ];\n\t\t\tuniforms.iridescenceThicknessMaximum.value = material.iridescenceThicknessRange[ 1 ];\n\n\t\t\tif ( material.iridescenceMap ) {\n\n\t\t\t\tuniforms.iridescenceMap.value = material.iridescenceMap;\n\n\t\t\t}\n\n\t\t\tif ( material.iridescenceThicknessMap ) {\n\n\t\t\t\tuniforms.iridescenceThicknessMap.value = material.iridescenceThicknessMap;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.transmission > 0 ) {\n\n\t\t\tuniforms.transmission.value = material.transmission;\n\t\t\tuniforms.transmissionSamplerMap.value = transmissionRenderTarget.texture;\n\t\t\tuniforms.transmissionSamplerSize.value.set( transmissionRenderTarget.width, transmissionRenderTarget.height );\n\n\t\t\tif ( material.transmissionMap ) {\n\n\t\t\t\tuniforms.transmissionMap.value = material.transmissionMap;\n\n\t\t\t}\n\n\t\t\tuniforms.thickness.value = material.thickness;\n\n\t\t\tif ( material.thicknessMap ) {\n\n\t\t\t\tuniforms.thicknessMap.value = material.thicknessMap;\n\n\t\t\t}\n\n\t\t\tuniforms.attenuationDistance.value = material.attenuationDistance;\n\t\t\tuniforms.attenuationColor.value.copy( material.attenuationColor );\n\n\t\t}\n\n\t\tuniforms.specularIntensity.value = material.specularIntensity;\n\t\tuniforms.specularColor.value.copy( material.specularColor );\n\n\t\tif ( material.specularIntensityMap ) {\n\n\t\t\tuniforms.specularIntensityMap.value = material.specularIntensityMap;\n\n\t\t}\n\n\t\tif ( material.specularColorMap ) {\n\n\t\t\tuniforms.specularColorMap.value = material.specularColorMap;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsMatcap( uniforms, material ) {\n\n\t\tif ( material.matcap ) {\n\n\t\t\tuniforms.matcap.value = material.matcap;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsDistance( uniforms, material ) {\n\n\t\tuniforms.referencePosition.value.copy( material.referencePosition );\n\t\tuniforms.nearDistance.value = material.nearDistance;\n\t\tuniforms.farDistance.value = material.farDistance;\n\n\t}\n\n\treturn {\n\t\trefreshFogUniforms: refreshFogUniforms,\n\t\trefreshMaterialUniforms: refreshMaterialUniforms\n\t};\n\n}\n\nfunction WebGLUniformsGroups( gl, info, capabilities, state ) {\n\n\tlet buffers = {};\n\tlet updateList = {};\n\tlet allocatedBindingPoints = [];\n\n\tconst maxBindingPoints = ( capabilities.isWebGL2 ) ? gl.getParameter( 35375 ) : 0; // binding points are global whereas block indices are per shader program\n\n\tfunction bind( uniformsGroup, program ) {\n\n\t\tconst webglProgram = program.program;\n\t\tstate.uniformBlockBinding( uniformsGroup, webglProgram );\n\n\t}\n\n\tfunction update( uniformsGroup, program ) {\n\n\t\tlet buffer = buffers[ uniformsGroup.id ];\n\n\t\tif ( buffer === undefined ) {\n\n\t\t\tprepareUniformsGroup( uniformsGroup );\n\n\t\t\tbuffer = createBuffer( uniformsGroup );\n\t\t\tbuffers[ uniformsGroup.id ] = buffer;\n\n\t\t\tuniformsGroup.addEventListener( 'dispose', onUniformsGroupsDispose );\n\n\t\t}\n\n\t\t// ensure to update the binding points/block indices mapping for this program\n\n\t\tconst webglProgram = program.program;\n\t\tstate.updateUBOMapping( uniformsGroup, webglProgram );\n\n\t\t// update UBO once per frame\n\n\t\tconst frame = info.render.frame;\n\n\t\tif ( updateList[ uniformsGroup.id ] !== frame ) {\n\n\t\t\tupdateBufferData( uniformsGroup );\n\n\t\t\tupdateList[ uniformsGroup.id ] = frame;\n\n\t\t}\n\n\t}\n\n\tfunction createBuffer( uniformsGroup ) {\n\n\t\t// the setup of an UBO is independent of a particular shader program but global\n\n\t\tconst bindingPointIndex = allocateBindingPointIndex();\n\t\tuniformsGroup.__bindingPointIndex = bindingPointIndex;\n\n\t\tconst buffer = gl.createBuffer();\n\t\tconst size = uniformsGroup.__size;\n\t\tconst usage = uniformsGroup.usage;\n\n\t\tgl.bindBuffer( 35345, buffer );\n\t\tgl.bufferData( 35345, size, usage );\n\t\tgl.bindBuffer( 35345, null );\n\t\tgl.bindBufferBase( 35345, bindingPointIndex, buffer );\n\n\t\treturn buffer;\n\n\t}\n\n\tfunction allocateBindingPointIndex() {\n\n\t\tfor ( let i = 0; i < maxBindingPoints; i ++ ) {\n\n\t\t\tif ( allocatedBindingPoints.indexOf( i ) === - 1 ) {\n\n\t\t\t\tallocatedBindingPoints.push( i );\n\t\t\t\treturn i;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconsole.error( 'THREE.WebGLRenderer: Maximum number of simultaneously usable uniforms groups reached.' );\n\n\t\treturn 0;\n\n\t}\n\n\tfunction updateBufferData( uniformsGroup ) {\n\n\t\tconst buffer = buffers[ uniformsGroup.id ];\n\t\tconst uniforms = uniformsGroup.uniforms;\n\t\tconst cache = uniformsGroup.__cache;\n\n\t\tgl.bindBuffer( 35345, buffer );\n\n\t\tfor ( let i = 0, il = uniforms.length; i < il; i ++ ) {\n\n\t\t\tconst uniform = uniforms[ i ];\n\n\t\t\t// partly update the buffer if necessary\n\n\t\t\tif ( hasUniformChanged( uniform, i, cache ) === true ) {\n\n\t\t\t\tconst value = uniform.value;\n\t\t\t\tconst offset = uniform.__offset;\n\n\t\t\t\tif ( typeof value === 'number' ) {\n\n\t\t\t\t\tuniform.__data[ 0 ] = value;\n\t\t\t\t\tgl.bufferSubData( 35345, offset, uniform.__data );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( uniform.value.isMatrix3 ) {\n\n\t\t\t\t\t\t// manually converting 3x3 to 3x4\n\n\t\t\t\t\t\tuniform.__data[ 0 ] = uniform.value.elements[ 0 ];\n\t\t\t\t\t\tuniform.__data[ 1 ] = uniform.value.elements[ 1 ];\n\t\t\t\t\t\tuniform.__data[ 2 ] = uniform.value.elements[ 2 ];\n\t\t\t\t\t\tuniform.__data[ 3 ] = uniform.value.elements[ 0 ];\n\t\t\t\t\t\tuniform.__data[ 4 ] = uniform.value.elements[ 3 ];\n\t\t\t\t\t\tuniform.__data[ 5 ] = uniform.value.elements[ 4 ];\n\t\t\t\t\t\tuniform.__data[ 6 ] = uniform.value.elements[ 5 ];\n\t\t\t\t\t\tuniform.__data[ 7 ] = uniform.value.elements[ 0 ];\n\t\t\t\t\t\tuniform.__data[ 8 ] = uniform.value.elements[ 6 ];\n\t\t\t\t\t\tuniform.__data[ 9 ] = uniform.value.elements[ 7 ];\n\t\t\t\t\t\tuniform.__data[ 10 ] = uniform.value.elements[ 8 ];\n\t\t\t\t\t\tuniform.__data[ 11 ] = uniform.value.elements[ 0 ];\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tvalue.toArray( uniform.__data );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tgl.bufferSubData( 35345, offset, uniform.__data );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tgl.bindBuffer( 35345, null );\n\n\t}\n\n\tfunction hasUniformChanged( uniform, index, cache ) {\n\n\t\tconst value = uniform.value;\n\n\t\tif ( cache[ index ] === undefined ) {\n\n\t\t\t// cache entry does not exist so far\n\n\t\t\tif ( typeof value === 'number' ) {\n\n\t\t\t\tcache[ index ] = value;\n\n\t\t\t} else {\n\n\t\t\t\tcache[ index ] = value.clone();\n\n\t\t\t}\n\n\t\t\treturn true;\n\n\t\t} else {\n\n\t\t\t// compare current value with cached entry\n\n\t\t\tif ( typeof value === 'number' ) {\n\n\t\t\t\tif ( cache[ index ] !== value ) {\n\n\t\t\t\t\tcache[ index ] = value;\n\t\t\t\t\treturn true;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tconst cachedObject = cache[ index ];\n\n\t\t\t\tif ( cachedObject.equals( value ) === false ) {\n\n\t\t\t\t\tcachedObject.copy( value );\n\t\t\t\t\treturn true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\tfunction prepareUniformsGroup( uniformsGroup ) {\n\n\t\t// determine total buffer size according to the STD140 layout\n\t\t// Hint: STD140 is the only supported layout in WebGL 2\n\n\t\tconst uniforms = uniformsGroup.uniforms;\n\n\t\tlet offset = 0; // global buffer offset in bytes\n\t\tconst chunkSize = 16; // size of a chunk in bytes\n\t\tlet chunkOffset = 0; // offset within a single chunk in bytes\n\n\t\tfor ( let i = 0, l = uniforms.length; i < l; i ++ ) {\n\n\t\t\tconst uniform = uniforms[ i ];\n\t\t\tconst info = getUniformSize( uniform );\n\n\t\t\t// the following two properties will be used for partial buffer updates\n\n\t\t\tuniform.__data = new Float32Array( info.storage / Float32Array.BYTES_PER_ELEMENT );\n\t\t\tuniform.__offset = offset;\n\n\t\t\t//\n\n\t\t\tif ( i > 0 ) {\n\n\t\t\t\tchunkOffset = offset % chunkSize;\n\n\t\t\t\tconst remainingSizeInChunk = chunkSize - chunkOffset;\n\n\t\t\t\t// check for chunk overflow\n\n\t\t\t\tif ( chunkOffset !== 0 && ( remainingSizeInChunk - info.boundary ) < 0 ) {\n\n\t\t\t\t\t// add padding and adjust offset\n\n\t\t\t\t\toffset += ( chunkSize - chunkOffset );\n\t\t\t\t\tuniform.__offset = offset;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\toffset += info.storage;\n\n\t\t}\n\n\t\t// ensure correct final padding\n\n\t\tchunkOffset = offset % chunkSize;\n\n\t\tif ( chunkOffset > 0 ) offset += ( chunkSize - chunkOffset );\n\n\t\t//\n\n\t\tuniformsGroup.__size = offset;\n\t\tuniformsGroup.__cache = {};\n\n\t\treturn this;\n\n\t}\n\n\tfunction getUniformSize( uniform ) {\n\n\t\tconst value = uniform.value;\n\n\t\tconst info = {\n\t\t\tboundary: 0, // bytes\n\t\t\tstorage: 0 // bytes\n\t\t};\n\n\t\t// determine sizes according to STD140\n\n\t\tif ( typeof value === 'number' ) {\n\n\t\t\t// float/int\n\n\t\t\tinfo.boundary = 4;\n\t\t\tinfo.storage = 4;\n\n\t\t} else if ( value.isVector2 ) {\n\n\t\t\t// vec2\n\n\t\t\tinfo.boundary = 8;\n\t\t\tinfo.storage = 8;\n\n\t\t} else if ( value.isVector3 || value.isColor ) {\n\n\t\t\t// vec3\n\n\t\t\tinfo.boundary = 16;\n\t\t\tinfo.storage = 12; // evil: vec3 must start on a 16-byte boundary but it only consumes 12 bytes\n\n\t\t} else if ( value.isVector4 ) {\n\n\t\t\t// vec4\n\n\t\t\tinfo.boundary = 16;\n\t\t\tinfo.storage = 16;\n\n\t\t} else if ( value.isMatrix3 ) {\n\n\t\t\t// mat3 (in STD140 a 3x3 matrix is represented as 3x4)\n\n\t\t\tinfo.boundary = 48;\n\t\t\tinfo.storage = 48;\n\n\t\t} else if ( value.isMatrix4 ) {\n\n\t\t\t// mat4\n\n\t\t\tinfo.boundary = 64;\n\t\t\tinfo.storage = 64;\n\n\t\t} else if ( value.isTexture ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group.' );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Unsupported uniform value type.', value );\n\n\t\t}\n\n\t\treturn info;\n\n\t}\n\n\tfunction onUniformsGroupsDispose( event ) {\n\n\t\tconst uniformsGroup = event.target;\n\n\t\tuniformsGroup.removeEventListener( 'dispose', onUniformsGroupsDispose );\n\n\t\tconst index = allocatedBindingPoints.indexOf( uniformsGroup.__bindingPointIndex );\n\t\tallocatedBindingPoints.splice( index, 1 );\n\n\t\tgl.deleteBuffer( buffers[ uniformsGroup.id ] );\n\n\t\tdelete buffers[ uniformsGroup.id ];\n\t\tdelete updateList[ uniformsGroup.id ];\n\n\t}\n\n\tfunction dispose() {\n\n\t\tfor ( const id in buffers ) {\n\n\t\t\tgl.deleteBuffer( buffers[ id ] );\n\n\t\t}\n\n\t\tallocatedBindingPoints = [];\n\t\tbuffers = {};\n\t\tupdateList = {};\n\n\t}\n\n\treturn {\n\n\t\tbind: bind,\n\t\tupdate: update,\n\n\t\tdispose: dispose\n\n\t};\n\n}\n\nfunction createCanvasElement() {\n\n\tconst canvas = createElementNS( 'canvas' );\n\tcanvas.style.display = 'block';\n\treturn canvas;\n\n}\n\nfunction WebGLRenderer( parameters = {} ) {\n\n\tthis.isWebGLRenderer = true;\n\n\tconst _canvas = parameters.canvas !== undefined ? parameters.canvas : createCanvasElement(),\n\t\t_context = parameters.context !== undefined ? parameters.context : null,\n\n\t\t_depth = parameters.depth !== undefined ? parameters.depth : true,\n\t\t_stencil = parameters.stencil !== undefined ? parameters.stencil : true,\n\t\t_antialias = parameters.antialias !== undefined ? parameters.antialias : false,\n\t\t_premultipliedAlpha = parameters.premultipliedAlpha !== undefined ? parameters.premultipliedAlpha : true,\n\t\t_preserveDrawingBuffer = parameters.preserveDrawingBuffer !== undefined ? parameters.preserveDrawingBuffer : false,\n\t\t_powerPreference = parameters.powerPreference !== undefined ? parameters.powerPreference : 'default',\n\t\t_failIfMajorPerformanceCaveat = parameters.failIfMajorPerformanceCaveat !== undefined ? parameters.failIfMajorPerformanceCaveat : false;\n\n\tlet _alpha;\n\n\tif ( _context !== null ) {\n\n\t\t_alpha = _context.getContextAttributes().alpha;\n\n\t} else {\n\n\t\t_alpha = parameters.alpha !== undefined ? parameters.alpha : false;\n\n\t}\n\n\tlet currentRenderList = null;\n\tlet currentRenderState = null;\n\n\t// render() can be called from within a callback triggered by another render.\n\t// We track this so that the nested render call gets its list and state isolated from the parent render call.\n\n\tconst renderListStack = [];\n\tconst renderStateStack = [];\n\n\t// public properties\n\n\tthis.domElement = _canvas;\n\n\t// Debug configuration container\n\tthis.debug = {\n\n\t\t/**\n\t\t * Enables error checking and reporting when shader programs are being compiled\n\t\t * @type {boolean}\n\t\t */\n\t\tcheckShaderErrors: true\n\t};\n\n\t// clearing\n\n\tthis.autoClear = true;\n\tthis.autoClearColor = true;\n\tthis.autoClearDepth = true;\n\tthis.autoClearStencil = true;\n\n\t// scene graph\n\n\tthis.sortObjects = true;\n\n\t// user-defined clipping\n\n\tthis.clippingPlanes = [];\n\tthis.localClippingEnabled = false;\n\n\t// physically based shading\n\n\tthis.outputEncoding = LinearEncoding;\n\n\t// physical lights\n\n\tthis.physicallyCorrectLights = false;\n\n\t// tone mapping\n\n\tthis.toneMapping = NoToneMapping;\n\tthis.toneMappingExposure = 1.0;\n\n\t//\n\n\tObject.defineProperties( this, {\n\n\t\t// @deprecated since r136, 0e21088102b4de7e0a0a33140620b7a3424b9e6d\n\n\t\tgammaFactor: {\n\t\t\tget: function () {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaFactor has been removed.' );\n\t\t\t\treturn 2;\n\n\t\t\t},\n\t\t\tset: function () {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaFactor has been removed.' );\n\n\t\t\t}\n\t\t}\n\n\t} );\n\n\t// internal properties\n\n\tconst _this = this;\n\n\tlet _isContextLost = false;\n\n\t// internal state cache\n\n\tlet _currentActiveCubeFace = 0;\n\tlet _currentActiveMipmapLevel = 0;\n\tlet _currentRenderTarget = null;\n\tlet _currentMaterialId = - 1;\n\n\tlet _currentCamera = null;\n\n\tconst _currentViewport = new Vector4();\n\tconst _currentScissor = new Vector4();\n\tlet _currentScissorTest = null;\n\n\t//\n\n\tlet _width = _canvas.width;\n\tlet _height = _canvas.height;\n\n\tlet _pixelRatio = 1;\n\tlet _opaqueSort = null;\n\tlet _transparentSort = null;\n\n\tconst _viewport = new Vector4( 0, 0, _width, _height );\n\tconst _scissor = new Vector4( 0, 0, _width, _height );\n\tlet _scissorTest = false;\n\n\t// frustum\n\n\tconst _frustum = new Frustum();\n\n\t// clipping\n\n\tlet _clippingEnabled = false;\n\tlet _localClippingEnabled = false;\n\n\t// transmission\n\n\tlet _transmissionRenderTarget = null;\n\n\t// camera matrices cache\n\n\tconst _projScreenMatrix = new Matrix4();\n\n\tconst _vector2 = new Vector2();\n\tconst _vector3 = new Vector3();\n\n\tconst _emptyScene = { background: null, fog: null, environment: null, overrideMaterial: null, isScene: true };\n\n\tfunction getTargetPixelRatio() {\n\n\t\treturn _currentRenderTarget === null ? _pixelRatio : 1;\n\n\t}\n\n\t// initialize\n\n\tlet _gl = _context;\n\n\tfunction getContext( contextNames, contextAttributes ) {\n\n\t\tfor ( let i = 0; i < contextNames.length; i ++ ) {\n\n\t\t\tconst contextName = contextNames[ i ];\n\t\t\tconst context = _canvas.getContext( contextName, contextAttributes );\n\t\t\tif ( context !== null ) return context;\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\ttry {\n\n\t\tconst contextAttributes = {\n\t\t\talpha: true,\n\t\t\tdepth: _depth,\n\t\t\tstencil: _stencil,\n\t\t\tantialias: _antialias,\n\t\t\tpremultipliedAlpha: _premultipliedAlpha,\n\t\t\tpreserveDrawingBuffer: _preserveDrawingBuffer,\n\t\t\tpowerPreference: _powerPreference,\n\t\t\tfailIfMajorPerformanceCaveat: _failIfMajorPerformanceCaveat\n\t\t};\n\n\t\t// OffscreenCanvas does not have setAttribute, see #22811\n\t\tif ( 'setAttribute' in _canvas ) _canvas.setAttribute( 'data-engine', `three.js r${REVISION}` );\n\n\t\t// event listeners must be registered before WebGL context is created, see #12753\n\t\t_canvas.addEventListener( 'webglcontextlost', onContextLost, false );\n\t\t_canvas.addEventListener( 'webglcontextrestored', onContextRestore, false );\n\t\t_canvas.addEventListener( 'webglcontextcreationerror', onContextCreationError, false );\n\n\t\tif ( _gl === null ) {\n\n\t\t\tconst contextNames = [ 'webgl2', 'webgl', 'experimental-webgl' ];\n\n\t\t\tif ( _this.isWebGL1Renderer === true ) {\n\n\t\t\t\tcontextNames.shift();\n\n\t\t\t}\n\n\t\t\t_gl = getContext( contextNames, contextAttributes );\n\n\t\t\tif ( _gl === null ) {\n\n\t\t\t\tif ( getContext( contextNames ) ) {\n\n\t\t\t\t\tthrow new Error( 'Error creating WebGL context with your selected attributes.' );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( 'Error creating WebGL context.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Some experimental-webgl implementations do not have getShaderPrecisionFormat\n\n\t\tif ( _gl.getShaderPrecisionFormat === undefined ) {\n\n\t\t\t_gl.getShaderPrecisionFormat = function () {\n\n\t\t\t\treturn { 'rangeMin': 1, 'rangeMax': 1, 'precision': 1 };\n\n\t\t\t};\n\n\t\t}\n\n\t} catch ( error ) {\n\n\t\tconsole.error( 'THREE.WebGLRenderer: ' + error.message );\n\t\tthrow error;\n\n\t}\n\n\tlet extensions, capabilities, state, info;\n\tlet properties, textures, cubemaps, cubeuvmaps, attributes, geometries, objects;\n\tlet programCache, materials, renderLists, renderStates, clipping, shadowMap;\n\n\tlet background, morphtargets, bufferRenderer, indexedBufferRenderer;\n\n\tlet utils, bindingStates, uniformsGroups;\n\n\tfunction initGLContext() {\n\n\t\textensions = new WebGLExtensions( _gl );\n\n\t\tcapabilities = new WebGLCapabilities( _gl, extensions, parameters );\n\n\t\textensions.init( capabilities );\n\n\t\tutils = new WebGLUtils( _gl, extensions, capabilities );\n\n\t\tstate = new WebGLState( _gl, extensions, capabilities );\n\n\t\tinfo = new WebGLInfo();\n\t\tproperties = new WebGLProperties();\n\t\ttextures = new WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info );\n\t\tcubemaps = new WebGLCubeMaps( _this );\n\t\tcubeuvmaps = new WebGLCubeUVMaps( _this );\n\t\tattributes = new WebGLAttributes( _gl, capabilities );\n\t\tbindingStates = new WebGLBindingStates( _gl, extensions, attributes, capabilities );\n\t\tgeometries = new WebGLGeometries( _gl, attributes, info, bindingStates );\n\t\tobjects = new WebGLObjects( _gl, geometries, attributes, info );\n\t\tmorphtargets = new WebGLMorphtargets( _gl, capabilities, textures );\n\t\tclipping = new WebGLClipping( properties );\n\t\tprogramCache = new WebGLPrograms( _this, cubemaps, cubeuvmaps, extensions, capabilities, bindingStates, clipping );\n\t\tmaterials = new WebGLMaterials( _this, properties );\n\t\trenderLists = new WebGLRenderLists();\n\t\trenderStates = new WebGLRenderStates( extensions, capabilities );\n\t\tbackground = new WebGLBackground( _this, cubemaps, state, objects, _alpha, _premultipliedAlpha );\n\t\tshadowMap = new WebGLShadowMap( _this, objects, capabilities );\n\t\tuniformsGroups = new WebGLUniformsGroups( _gl, info, capabilities, state );\n\n\t\tbufferRenderer = new WebGLBufferRenderer( _gl, extensions, info, capabilities );\n\t\tindexedBufferRenderer = new WebGLIndexedBufferRenderer( _gl, extensions, info, capabilities );\n\n\t\tinfo.programs = programCache.programs;\n\n\t\t_this.capabilities = capabilities;\n\t\t_this.extensions = extensions;\n\t\t_this.properties = properties;\n\t\t_this.renderLists = renderLists;\n\t\t_this.shadowMap = shadowMap;\n\t\t_this.state = state;\n\t\t_this.info = info;\n\n\t}\n\n\tinitGLContext();\n\n\t// xr\n\n\tconst xr = new WebXRManager( _this, _gl );\n\n\tthis.xr = xr;\n\n\t// API\n\n\tthis.getContext = function () {\n\n\t\treturn _gl;\n\n\t};\n\n\tthis.getContextAttributes = function () {\n\n\t\treturn _gl.getContextAttributes();\n\n\t};\n\n\tthis.forceContextLoss = function () {\n\n\t\tconst extension = extensions.get( 'WEBGL_lose_context' );\n\t\tif ( extension ) extension.loseContext();\n\n\t};\n\n\tthis.forceContextRestore = function () {\n\n\t\tconst extension = extensions.get( 'WEBGL_lose_context' );\n\t\tif ( extension ) extension.restoreContext();\n\n\t};\n\n\tthis.getPixelRatio = function () {\n\n\t\treturn _pixelRatio;\n\n\t};\n\n\tthis.setPixelRatio = function ( value ) {\n\n\t\tif ( value === undefined ) return;\n\n\t\t_pixelRatio = value;\n\n\t\tthis.setSize( _width, _height, false );\n\n\t};\n\n\tthis.getSize = function ( target ) {\n\n\t\treturn target.set( _width, _height );\n\n\t};\n\n\tthis.setSize = function ( width, height, updateStyle ) {\n\n\t\tif ( xr.isPresenting ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Can\\'t change size while VR device is presenting.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\t_width = width;\n\t\t_height = height;\n\n\t\t_canvas.width = Math.floor( width * _pixelRatio );\n\t\t_canvas.height = Math.floor( height * _pixelRatio );\n\n\t\tif ( updateStyle !== false ) {\n\n\t\t\t_canvas.style.width = width + 'px';\n\t\t\t_canvas.style.height = height + 'px';\n\n\t\t}\n\n\t\tthis.setViewport( 0, 0, width, height );\n\n\t};\n\n\tthis.getDrawingBufferSize = function ( target ) {\n\n\t\treturn target.set( _width * _pixelRatio, _height * _pixelRatio ).floor();\n\n\t};\n\n\tthis.setDrawingBufferSize = function ( width, height, pixelRatio ) {\n\n\t\t_width = width;\n\t\t_height = height;\n\n\t\t_pixelRatio = pixelRatio;\n\n\t\t_canvas.width = Math.floor( width * pixelRatio );\n\t\t_canvas.height = Math.floor( height * pixelRatio );\n\n\t\tthis.setViewport( 0, 0, width, height );\n\n\t};\n\n\tthis.getCurrentViewport = function ( target ) {\n\n\t\treturn target.copy( _currentViewport );\n\n\t};\n\n\tthis.getViewport = function ( target ) {\n\n\t\treturn target.copy( _viewport );\n\n\t};\n\n\tthis.setViewport = function ( x, y, width, height ) {\n\n\t\tif ( x.isVector4 ) {\n\n\t\t\t_viewport.set( x.x, x.y, x.z, x.w );\n\n\t\t} else {\n\n\t\t\t_viewport.set( x, y, width, height );\n\n\t\t}\n\n\t\tstate.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor() );\n\n\t};\n\n\tthis.getScissor = function ( target ) {\n\n\t\treturn target.copy( _scissor );\n\n\t};\n\n\tthis.setScissor = function ( x, y, width, height ) {\n\n\t\tif ( x.isVector4 ) {\n\n\t\t\t_scissor.set( x.x, x.y, x.z, x.w );\n\n\t\t} else {\n\n\t\t\t_scissor.set( x, y, width, height );\n\n\t\t}\n\n\t\tstate.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor() );\n\n\t};\n\n\tthis.getScissorTest = function () {\n\n\t\treturn _scissorTest;\n\n\t};\n\n\tthis.setScissorTest = function ( boolean ) {\n\n\t\tstate.setScissorTest( _scissorTest = boolean );\n\n\t};\n\n\tthis.setOpaqueSort = function ( method ) {\n\n\t\t_opaqueSort = method;\n\n\t};\n\n\tthis.setTransparentSort = function ( method ) {\n\n\t\t_transparentSort = method;\n\n\t};\n\n\t// Clearing\n\n\tthis.getClearColor = function ( target ) {\n\n\t\treturn target.copy( background.getClearColor() );\n\n\t};\n\n\tthis.setClearColor = function () {\n\n\t\tbackground.setClearColor.apply( background, arguments );\n\n\t};\n\n\tthis.getClearAlpha = function () {\n\n\t\treturn background.getClearAlpha();\n\n\t};\n\n\tthis.setClearAlpha = function () {\n\n\t\tbackground.setClearAlpha.apply( background, arguments );\n\n\t};\n\n\tthis.clear = function ( color = true, depth = true, stencil = true ) {\n\n\t\tlet bits = 0;\n\n\t\tif ( color ) bits |= 16384;\n\t\tif ( depth ) bits |= 256;\n\t\tif ( stencil ) bits |= 1024;\n\n\t\t_gl.clear( bits );\n\n\t};\n\n\tthis.clearColor = function () {\n\n\t\tthis.clear( true, false, false );\n\n\t};\n\n\tthis.clearDepth = function () {\n\n\t\tthis.clear( false, true, false );\n\n\t};\n\n\tthis.clearStencil = function () {\n\n\t\tthis.clear( false, false, true );\n\n\t};\n\n\t//\n\n\tthis.dispose = function () {\n\n\t\t_canvas.removeEventListener( 'webglcontextlost', onContextLost, false );\n\t\t_canvas.removeEventListener( 'webglcontextrestored', onContextRestore, false );\n\t\t_canvas.removeEventListener( 'webglcontextcreationerror', onContextCreationError, false );\n\n\t\trenderLists.dispose();\n\t\trenderStates.dispose();\n\t\tproperties.dispose();\n\t\tcubemaps.dispose();\n\t\tcubeuvmaps.dispose();\n\t\tobjects.dispose();\n\t\tbindingStates.dispose();\n\t\tuniformsGroups.dispose();\n\t\tprogramCache.dispose();\n\n\t\txr.dispose();\n\n\t\txr.removeEventListener( 'sessionstart', onXRSessionStart );\n\t\txr.removeEventListener( 'sessionend', onXRSessionEnd );\n\n\t\tif ( _transmissionRenderTarget ) {\n\n\t\t\t_transmissionRenderTarget.dispose();\n\t\t\t_transmissionRenderTarget = null;\n\n\t\t}\n\n\t\tanimation.stop();\n\n\t};\n\n\t// Events\n\n\tfunction onContextLost( event ) {\n\n\t\tevent.preventDefault();\n\n\t\tconsole.log( 'THREE.WebGLRenderer: Context Lost.' );\n\n\t\t_isContextLost = true;\n\n\t}\n\n\tfunction onContextRestore( /* event */ ) {\n\n\t\tconsole.log( 'THREE.WebGLRenderer: Context Restored.' );\n\n\t\t_isContextLost = false;\n\n\t\tconst infoAutoReset = info.autoReset;\n\t\tconst shadowMapEnabled = shadowMap.enabled;\n\t\tconst shadowMapAutoUpdate = shadowMap.autoUpdate;\n\t\tconst shadowMapNeedsUpdate = shadowMap.needsUpdate;\n\t\tconst shadowMapType = shadowMap.type;\n\n\t\tinitGLContext();\n\n\t\tinfo.autoReset = infoAutoReset;\n\t\tshadowMap.enabled = shadowMapEnabled;\n\t\tshadowMap.autoUpdate = shadowMapAutoUpdate;\n\t\tshadowMap.needsUpdate = shadowMapNeedsUpdate;\n\t\tshadowMap.type = shadowMapType;\n\n\t}\n\n\tfunction onContextCreationError( event ) {\n\n\t\tconsole.error( 'THREE.WebGLRenderer: A WebGL context could not be created. Reason: ', event.statusMessage );\n\n\t}\n\n\tfunction onMaterialDispose( event ) {\n\n\t\tconst material = event.target;\n\n\t\tmaterial.removeEventListener( 'dispose', onMaterialDispose );\n\n\t\tdeallocateMaterial( material );\n\n\t}\n\n\t// Buffer deallocation\n\n\tfunction deallocateMaterial( material ) {\n\n\t\treleaseMaterialProgramReferences( material );\n\n\t\tproperties.remove( material );\n\n\t}\n\n\n\tfunction releaseMaterialProgramReferences( material ) {\n\n\t\tconst programs = properties.get( material ).programs;\n\n\t\tif ( programs !== undefined ) {\n\n\t\t\tprograms.forEach( function ( program ) {\n\n\t\t\t\tprogramCache.releaseProgram( program );\n\n\t\t\t} );\n\n\t\t\tif ( material.isShaderMaterial ) {\n\n\t\t\t\tprogramCache.releaseShaderCache( material );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t// Buffer rendering\n\n\tthis.renderBufferDirect = function ( camera, scene, geometry, material, object, group ) {\n\n\t\tif ( scene === null ) scene = _emptyScene; // renderBufferDirect second parameter used to be fog (could be null)\n\n\t\tconst frontFaceCW = ( object.isMesh && object.matrixWorld.determinant() < 0 );\n\n\t\tconst program = setProgram( camera, scene, geometry, material, object );\n\n\t\tstate.setMaterial( material, frontFaceCW );\n\n\t\t//\n\n\t\tlet index = geometry.index;\n\t\tconst position = geometry.attributes.position;\n\n\t\t//\n\n\t\tif ( index === null ) {\n\n\t\t\tif ( position === undefined || position.count === 0 ) return;\n\n\t\t} else if ( index.count === 0 ) {\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t//\n\n\t\tlet rangeFactor = 1;\n\n\t\tif ( material.wireframe === true ) {\n\n\t\t\tindex = geometries.getWireframeAttribute( geometry );\n\t\t\trangeFactor = 2;\n\n\t\t}\n\n\t\tbindingStates.setup( object, material, program, geometry, index );\n\n\t\tlet attribute;\n\t\tlet renderer = bufferRenderer;\n\n\t\tif ( index !== null ) {\n\n\t\t\tattribute = attributes.get( index );\n\n\t\t\trenderer = indexedBufferRenderer;\n\t\t\trenderer.setIndex( attribute );\n\n\t\t}\n\n\t\t//\n\n\t\tconst dataCount = ( index !== null ) ? index.count : position.count;\n\n\t\tconst rangeStart = geometry.drawRange.start * rangeFactor;\n\t\tconst rangeCount = geometry.drawRange.count * rangeFactor;\n\n\t\tconst groupStart = group !== null ? group.start * rangeFactor : 0;\n\t\tconst groupCount = group !== null ? group.count * rangeFactor : Infinity;\n\n\t\tconst drawStart = Math.max( rangeStart, groupStart );\n\t\tconst drawEnd = Math.min( dataCount, rangeStart + rangeCount, groupStart + groupCount ) - 1;\n\n\t\tconst drawCount = Math.max( 0, drawEnd - drawStart + 1 );\n\n\t\tif ( drawCount === 0 ) return;\n\n\t\t//\n\n\t\tif ( object.isMesh ) {\n\n\t\t\tif ( material.wireframe === true ) {\n\n\t\t\t\tstate.setLineWidth( material.wireframeLinewidth * getTargetPixelRatio() );\n\t\t\t\trenderer.setMode( 1 );\n\n\t\t\t} else {\n\n\t\t\t\trenderer.setMode( 4 );\n\n\t\t\t}\n\n\t\t} else if ( object.isLine ) {\n\n\t\t\tlet lineWidth = material.linewidth;\n\n\t\t\tif ( lineWidth === undefined ) lineWidth = 1; // Not using Line*Material\n\n\t\t\tstate.setLineWidth( lineWidth * getTargetPixelRatio() );\n\n\t\t\tif ( object.isLineSegments ) {\n\n\t\t\t\trenderer.setMode( 1 );\n\n\t\t\t} else if ( object.isLineLoop ) {\n\n\t\t\t\trenderer.setMode( 2 );\n\n\t\t\t} else {\n\n\t\t\t\trenderer.setMode( 3 );\n\n\t\t\t}\n\n\t\t} else if ( object.isPoints ) {\n\n\t\t\trenderer.setMode( 0 );\n\n\t\t} else if ( object.isSprite ) {\n\n\t\t\trenderer.setMode( 4 );\n\n\t\t}\n\n\t\tif ( object.isInstancedMesh ) {\n\n\t\t\trenderer.renderInstances( drawStart, drawCount, object.count );\n\n\t\t} else if ( geometry.isInstancedBufferGeometry ) {\n\n\t\t\tconst instanceCount = Math.min( geometry.instanceCount, geometry._maxInstanceCount );\n\n\t\t\trenderer.renderInstances( drawStart, drawCount, instanceCount );\n\n\t\t} else {\n\n\t\t\trenderer.render( drawStart, drawCount );\n\n\t\t}\n\n\t};\n\n\t// Compile\n\n\tthis.compile = function ( scene, camera ) {\n\n\t\tcurrentRenderState = renderStates.get( scene );\n\t\tcurrentRenderState.init();\n\n\t\trenderStateStack.push( currentRenderState );\n\n\t\tscene.traverseVisible( function ( object ) {\n\n\t\t\tif ( object.isLight && object.layers.test( camera.layers ) ) {\n\n\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\tcurrentRenderState.pushShadow( object );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t\tcurrentRenderState.setupLights( _this.physicallyCorrectLights );\n\n\t\tscene.traverse( function ( object ) {\n\n\t\t\tconst material = object.material;\n\n\t\t\tif ( material ) {\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tfor ( let i = 0; i < material.length; i ++ ) {\n\n\t\t\t\t\t\tconst material2 = material[ i ];\n\n\t\t\t\t\t\tgetProgram( material2, scene, object );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tgetProgram( material, scene, object );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t\trenderStateStack.pop();\n\t\tcurrentRenderState = null;\n\n\t};\n\n\t// Animation Loop\n\n\tlet onAnimationFrameCallback = null;\n\n\tfunction onAnimationFrame( time ) {\n\n\t\tif ( onAnimationFrameCallback ) onAnimationFrameCallback( time );\n\n\t}\n\n\tfunction onXRSessionStart() {\n\n\t\tanimation.stop();\n\n\t}\n\n\tfunction onXRSessionEnd() {\n\n\t\tanimation.start();\n\n\t}\n\n\tconst animation = new WebGLAnimation();\n\tanimation.setAnimationLoop( onAnimationFrame );\n\n\tif ( typeof self !== 'undefined' ) animation.setContext( self );\n\n\tthis.setAnimationLoop = function ( callback ) {\n\n\t\tonAnimationFrameCallback = callback;\n\t\txr.setAnimationLoop( callback );\n\n\t\t( callback === null ) ? animation.stop() : animation.start();\n\n\t};\n\n\txr.addEventListener( 'sessionstart', onXRSessionStart );\n\txr.addEventListener( 'sessionend', onXRSessionEnd );\n\n\t// Rendering\n\n\tthis.render = function ( scene, camera ) {\n\n\t\tif ( camera !== undefined && camera.isCamera !== true ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( _isContextLost === true ) return;\n\n\t\t// update scene graph\n\n\t\tif ( scene.autoUpdate === true ) scene.updateMatrixWorld();\n\n\t\t// update camera matrices and frustum\n\n\t\tif ( camera.parent === null ) camera.updateMatrixWorld();\n\n\t\tif ( xr.enabled === true && xr.isPresenting === true ) {\n\n\t\t\tif ( xr.cameraAutoUpdate === true ) xr.updateCamera( camera );\n\n\t\t\tcamera = xr.getCamera(); // use XR camera for rendering\n\n\t\t}\n\n\t\t//\n\t\tif ( scene.isScene === true ) scene.onBeforeRender( _this, scene, camera, _currentRenderTarget );\n\n\t\tcurrentRenderState = renderStates.get( scene, renderStateStack.length );\n\t\tcurrentRenderState.init();\n\n\t\trenderStateStack.push( currentRenderState );\n\n\t\t_projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );\n\t\t_frustum.setFromProjectionMatrix( _projScreenMatrix );\n\n\t\t_localClippingEnabled = this.localClippingEnabled;\n\t\t_clippingEnabled = clipping.init( this.clippingPlanes, _localClippingEnabled, camera );\n\n\t\tcurrentRenderList = renderLists.get( scene, renderListStack.length );\n\t\tcurrentRenderList.init();\n\n\t\trenderListStack.push( currentRenderList );\n\n\t\tprojectObject( scene, camera, 0, _this.sortObjects );\n\n\t\tcurrentRenderList.finish();\n\n\t\tif ( _this.sortObjects === true ) {\n\n\t\t\tcurrentRenderList.sort( _opaqueSort, _transparentSort );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( _clippingEnabled === true ) clipping.beginShadows();\n\n\t\tconst shadowsArray = currentRenderState.state.shadowsArray;\n\n\t\tshadowMap.render( shadowsArray, scene, camera );\n\n\t\tif ( _clippingEnabled === true ) clipping.endShadows();\n\n\t\t//\n\n\t\tif ( this.info.autoReset === true ) this.info.reset();\n\n\t\t//\n\n\t\tbackground.render( currentRenderList, scene );\n\n\t\t// render scene\n\n\t\tcurrentRenderState.setupLights( _this.physicallyCorrectLights );\n\n\t\tif ( camera.isArrayCamera ) {\n\n\t\t\tconst cameras = camera.cameras;\n\n\t\t\tfor ( let i = 0, l = cameras.length; i < l; i ++ ) {\n\n\t\t\t\tconst camera2 = cameras[ i ];\n\n\t\t\t\trenderScene( currentRenderList, scene, camera2, camera2.viewport );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\trenderScene( currentRenderList, scene, camera );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( _currentRenderTarget !== null ) {\n\n\t\t\t// resolve multisample renderbuffers to a single-sample texture if necessary\n\n\t\t\ttextures.updateMultisampleRenderTarget( _currentRenderTarget );\n\n\t\t\t// Generate mipmap if we're using any kind of mipmap filtering\n\n\t\t\ttextures.updateRenderTargetMipmap( _currentRenderTarget );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( scene.isScene === true ) scene.onAfterRender( _this, scene, camera );\n\n\t\t// _gl.finish();\n\n\t\tbindingStates.resetDefaultState();\n\t\t_currentMaterialId = - 1;\n\t\t_currentCamera = null;\n\n\t\trenderStateStack.pop();\n\n\t\tif ( renderStateStack.length > 0 ) {\n\n\t\t\tcurrentRenderState = renderStateStack[ renderStateStack.length - 1 ];\n\n\t\t} else {\n\n\t\t\tcurrentRenderState = null;\n\n\t\t}\n\n\t\trenderListStack.pop();\n\n\t\tif ( renderListStack.length > 0 ) {\n\n\t\t\tcurrentRenderList = renderListStack[ renderListStack.length - 1 ];\n\n\t\t} else {\n\n\t\t\tcurrentRenderList = null;\n\n\t\t}\n\n\t};\n\n\tfunction projectObject( object, camera, groupOrder, sortObjects ) {\n\n\t\tif ( object.visible === false ) return;\n\n\t\tconst visible = object.layers.test( camera.layers );\n\n\t\tif ( visible ) {\n\n\t\t\tif ( object.isGroup ) {\n\n\t\t\t\tgroupOrder = object.renderOrder;\n\n\t\t\t} else if ( object.isLOD ) {\n\n\t\t\t\tif ( object.autoUpdate === true ) object.update( camera );\n\n\t\t\t} else if ( object.isLight ) {\n\n\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\tcurrentRenderState.pushShadow( object );\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isSprite ) {\n\n\t\t\t\tif ( ! object.frustumCulled || _frustum.intersectsSprite( object ) ) {\n\n\t\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld )\n\t\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst geometry = objects.update( object );\n\t\t\t\t\tconst material = object.material;\n\n\t\t\t\t\tif ( material.visible ) {\n\n\t\t\t\t\t\tcurrentRenderList.push( object, geometry, material, groupOrder, _vector3.z, null );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isMesh || object.isLine || object.isPoints ) {\n\n\t\t\t\tif ( object.isSkinnedMesh ) {\n\n\t\t\t\t\t// update skeleton only once in a frame\n\n\t\t\t\t\tif ( object.skeleton.frame !== info.render.frame ) {\n\n\t\t\t\t\t\tobject.skeleton.update();\n\t\t\t\t\t\tobject.skeleton.frame = info.render.frame;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) {\n\n\t\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld )\n\t\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst geometry = objects.update( object );\n\t\t\t\t\tconst material = object.material;\n\n\t\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\t\tconst groups = geometry.groups;\n\n\t\t\t\t\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\t\tif ( groupMaterial && groupMaterial.visible ) {\n\n\t\t\t\t\t\t\t\tcurrentRenderList.push( object, geometry, groupMaterial, groupOrder, _vector3.z, group );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( material.visible ) {\n\n\t\t\t\t\t\tcurrentRenderList.push( object, geometry, material, groupOrder, _vector3.z, null );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tprojectObject( children[ i ], camera, groupOrder, sortObjects );\n\n\t\t}\n\n\t}\n\n\tfunction renderScene( currentRenderList, scene, camera, viewport ) {\n\n\t\tconst opaqueObjects = currentRenderList.opaque;\n\t\tconst transmissiveObjects = currentRenderList.transmissive;\n\t\tconst transparentObjects = currentRenderList.transparent;\n\n\t\tcurrentRenderState.setupLightsView( camera );\n\n\t\tif ( transmissiveObjects.length > 0 ) renderTransmissionPass( opaqueObjects, scene, camera );\n\n\t\tif ( viewport ) state.viewport( _currentViewport.copy( viewport ) );\n\n\t\tif ( opaqueObjects.length > 0 ) renderObjects( opaqueObjects, scene, camera );\n\t\tif ( transmissiveObjects.length > 0 ) renderObjects( transmissiveObjects, scene, camera );\n\t\tif ( transparentObjects.length > 0 ) renderObjects( transparentObjects, scene, camera );\n\n\t\t// Ensure depth buffer writing is enabled so it can be cleared on next render\n\n\t\tstate.buffers.depth.setTest( true );\n\t\tstate.buffers.depth.setMask( true );\n\t\tstate.buffers.color.setMask( true );\n\n\t\tstate.setPolygonOffset( false );\n\n\t}\n\n\tfunction renderTransmissionPass( opaqueObjects, scene, camera ) {\n\n\t\tconst isWebGL2 = capabilities.isWebGL2;\n\n\t\tif ( _transmissionRenderTarget === null ) {\n\n\t\t\t_transmissionRenderTarget = new WebGLRenderTarget( 1, 1, {\n\t\t\t\tgenerateMipmaps: true,\n\t\t\t\ttype: extensions.has( 'EXT_color_buffer_half_float' ) ? HalfFloatType : UnsignedByteType,\n\t\t\t\tminFilter: LinearMipmapLinearFilter,\n\t\t\t\tsamples: ( isWebGL2 && _antialias === true ) ? 4 : 0\n\t\t\t} );\n\n\t\t}\n\n\t\t_this.getDrawingBufferSize( _vector2 );\n\n\t\tif ( isWebGL2 ) {\n\n\t\t\t_transmissionRenderTarget.setSize( _vector2.x, _vector2.y );\n\n\t\t} else {\n\n\t\t\t_transmissionRenderTarget.setSize( floorPowerOfTwo( _vector2.x ), floorPowerOfTwo( _vector2.y ) );\n\n\t\t}\n\n\t\t//\n\n\t\tconst currentRenderTarget = _this.getRenderTarget();\n\t\t_this.setRenderTarget( _transmissionRenderTarget );\n\t\t_this.clear();\n\n\t\t// Turn off the features which can affect the frag color for opaque objects pass.\n\t\t// Otherwise they are applied twice in opaque objects pass and transmission objects pass.\n\t\tconst currentToneMapping = _this.toneMapping;\n\t\t_this.toneMapping = NoToneMapping;\n\n\t\trenderObjects( opaqueObjects, scene, camera );\n\n\t\t_this.toneMapping = currentToneMapping;\n\n\t\ttextures.updateMultisampleRenderTarget( _transmissionRenderTarget );\n\t\ttextures.updateRenderTargetMipmap( _transmissionRenderTarget );\n\n\t\t_this.setRenderTarget( currentRenderTarget );\n\n\t}\n\n\tfunction renderObjects( renderList, scene, camera ) {\n\n\t\tconst overrideMaterial = scene.isScene === true ? scene.overrideMaterial : null;\n\n\t\tfor ( let i = 0, l = renderList.length; i < l; i ++ ) {\n\n\t\t\tconst renderItem = renderList[ i ];\n\n\t\t\tconst object = renderItem.object;\n\t\t\tconst geometry = renderItem.geometry;\n\t\t\tconst material = overrideMaterial === null ? renderItem.material : overrideMaterial;\n\t\t\tconst group = renderItem.group;\n\n\t\t\tif ( object.layers.test( camera.layers ) ) {\n\n\t\t\t\trenderObject( object, scene, camera, geometry, material, group );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction renderObject( object, scene, camera, geometry, material, group ) {\n\n\t\tobject.onBeforeRender( _this, scene, camera, geometry, material, group );\n\n\t\tobject.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, object.matrixWorld );\n\t\tobject.normalMatrix.getNormalMatrix( object.modelViewMatrix );\n\n\t\tmaterial.onBeforeRender( _this, scene, camera, geometry, object, group );\n\n\t\tif ( material.transparent === true && material.side === DoubleSide ) {\n\n\t\t\tmaterial.side = BackSide;\n\t\t\tmaterial.needsUpdate = true;\n\t\t\t_this.renderBufferDirect( camera, scene, geometry, material, object, group );\n\n\t\t\tmaterial.side = FrontSide;\n\t\t\tmaterial.needsUpdate = true;\n\t\t\t_this.renderBufferDirect( camera, scene, geometry, material, object, group );\n\n\t\t\tmaterial.side = DoubleSide;\n\n\t\t} else {\n\n\t\t\t_this.renderBufferDirect( camera, scene, geometry, material, object, group );\n\n\t\t}\n\n\t\tobject.onAfterRender( _this, scene, camera, geometry, material, group );\n\n\t}\n\n\tfunction getProgram( material, scene, object ) {\n\n\t\tif ( scene.isScene !== true ) scene = _emptyScene; // scene could be a Mesh, Line, Points, ...\n\n\t\tconst materialProperties = properties.get( material );\n\n\t\tconst lights = currentRenderState.state.lights;\n\t\tconst shadowsArray = currentRenderState.state.shadowsArray;\n\n\t\tconst lightsStateVersion = lights.state.version;\n\n\t\tconst parameters = programCache.getParameters( material, lights.state, shadowsArray, scene, object );\n\t\tconst programCacheKey = programCache.getProgramCacheKey( parameters );\n\n\t\tlet programs = materialProperties.programs;\n\n\t\t// always update environment and fog - changing these trigger an getProgram call, but it's possible that the program doesn't change\n\n\t\tmaterialProperties.environment = material.isMeshStandardMaterial ? scene.environment : null;\n\t\tmaterialProperties.fog = scene.fog;\n\t\tmaterialProperties.envMap = ( material.isMeshStandardMaterial ? cubeuvmaps : cubemaps ).get( material.envMap || materialProperties.environment );\n\n\t\tif ( programs === undefined ) {\n\n\t\t\t// new material\n\n\t\t\tmaterial.addEventListener( 'dispose', onMaterialDispose );\n\n\t\t\tprograms = new Map();\n\t\t\tmaterialProperties.programs = programs;\n\n\t\t}\n\n\t\tlet program = programs.get( programCacheKey );\n\n\t\tif ( program !== undefined ) {\n\n\t\t\t// early out if program and light state is identical\n\n\t\t\tif ( materialProperties.currentProgram === program && materialProperties.lightsStateVersion === lightsStateVersion ) {\n\n\t\t\t\tupdateCommonMaterialProperties( material, parameters );\n\n\t\t\t\treturn program;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tparameters.uniforms = programCache.getUniforms( material );\n\n\t\t\tmaterial.onBuild( object, parameters, _this );\n\n\t\t\tmaterial.onBeforeCompile( parameters, _this );\n\n\t\t\tprogram = programCache.acquireProgram( parameters, programCacheKey );\n\t\t\tprograms.set( programCacheKey, program );\n\n\t\t\tmaterialProperties.uniforms = parameters.uniforms;\n\n\t\t}\n\n\t\tconst uniforms = materialProperties.uniforms;\n\n\t\tif ( ( ! material.isShaderMaterial && ! material.isRawShaderMaterial ) || material.clipping === true ) {\n\n\t\t\tuniforms.clippingPlanes = clipping.uniform;\n\n\t\t}\n\n\t\tupdateCommonMaterialProperties( material, parameters );\n\n\t\t// store the light setup it was created for\n\n\t\tmaterialProperties.needsLights = materialNeedsLights( material );\n\t\tmaterialProperties.lightsStateVersion = lightsStateVersion;\n\n\t\tif ( materialProperties.needsLights ) {\n\n\t\t\t// wire up the material to this renderer's lighting state\n\n\t\t\tuniforms.ambientLightColor.value = lights.state.ambient;\n\t\t\tuniforms.lightProbe.value = lights.state.probe;\n\t\t\tuniforms.directionalLights.value = lights.state.directional;\n\t\t\tuniforms.directionalLightShadows.value = lights.state.directionalShadow;\n\t\t\tuniforms.spotLights.value = lights.state.spot;\n\t\t\tuniforms.spotLightShadows.value = lights.state.spotShadow;\n\t\t\tuniforms.rectAreaLights.value = lights.state.rectArea;\n\t\t\tuniforms.ltc_1.value = lights.state.rectAreaLTC1;\n\t\t\tuniforms.ltc_2.value = lights.state.rectAreaLTC2;\n\t\t\tuniforms.pointLights.value = lights.state.point;\n\t\t\tuniforms.pointLightShadows.value = lights.state.pointShadow;\n\t\t\tuniforms.hemisphereLights.value = lights.state.hemi;\n\n\t\t\tuniforms.directionalShadowMap.value = lights.state.directionalShadowMap;\n\t\t\tuniforms.directionalShadowMatrix.value = lights.state.directionalShadowMatrix;\n\t\t\tuniforms.spotShadowMap.value = lights.state.spotShadowMap;\n\t\t\tuniforms.spotShadowMatrix.value = lights.state.spotShadowMatrix;\n\t\t\tuniforms.pointShadowMap.value = lights.state.pointShadowMap;\n\t\t\tuniforms.pointShadowMatrix.value = lights.state.pointShadowMatrix;\n\t\t\t// TODO (abelnation): add area lights shadow info to uniforms\n\n\t\t}\n\n\t\tconst progUniforms = program.getUniforms();\n\t\tconst uniformsList = WebGLUniforms.seqWithValue( progUniforms.seq, uniforms );\n\n\t\tmaterialProperties.currentProgram = program;\n\t\tmaterialProperties.uniformsList = uniformsList;\n\n\t\treturn program;\n\n\t}\n\n\tfunction updateCommonMaterialProperties( material, parameters ) {\n\n\t\tconst materialProperties = properties.get( material );\n\n\t\tmaterialProperties.outputEncoding = parameters.outputEncoding;\n\t\tmaterialProperties.instancing = parameters.instancing;\n\t\tmaterialProperties.skinning = parameters.skinning;\n\t\tmaterialProperties.morphTargets = parameters.morphTargets;\n\t\tmaterialProperties.morphNormals = parameters.morphNormals;\n\t\tmaterialProperties.morphColors = parameters.morphColors;\n\t\tmaterialProperties.morphTargetsCount = parameters.morphTargetsCount;\n\t\tmaterialProperties.numClippingPlanes = parameters.numClippingPlanes;\n\t\tmaterialProperties.numIntersection = parameters.numClipIntersection;\n\t\tmaterialProperties.vertexAlphas = parameters.vertexAlphas;\n\t\tmaterialProperties.vertexTangents = parameters.vertexTangents;\n\t\tmaterialProperties.toneMapping = parameters.toneMapping;\n\n\t}\n\n\tfunction setProgram( camera, scene, geometry, material, object ) {\n\n\t\tif ( scene.isScene !== true ) scene = _emptyScene; // scene could be a Mesh, Line, Points, ...\n\n\t\ttextures.resetTextureUnits();\n\n\t\tconst fog = scene.fog;\n\t\tconst environment = material.isMeshStandardMaterial ? scene.environment : null;\n\t\tconst encoding = ( _currentRenderTarget === null ) ? _this.outputEncoding : ( _currentRenderTarget.isXRRenderTarget === true ? _currentRenderTarget.texture.encoding : LinearEncoding );\n\t\tconst envMap = ( material.isMeshStandardMaterial ? cubeuvmaps : cubemaps ).get( material.envMap || environment );\n\t\tconst vertexAlphas = material.vertexColors === true && !! geometry.attributes.color && geometry.attributes.color.itemSize === 4;\n\t\tconst vertexTangents = !! material.normalMap && !! geometry.attributes.tangent;\n\t\tconst morphTargets = !! geometry.morphAttributes.position;\n\t\tconst morphNormals = !! geometry.morphAttributes.normal;\n\t\tconst morphColors = !! geometry.morphAttributes.color;\n\t\tconst toneMapping = material.toneMapped ? _this.toneMapping : NoToneMapping;\n\n\t\tconst morphAttribute = geometry.morphAttributes.position || geometry.morphAttributes.normal || geometry.morphAttributes.color;\n\t\tconst morphTargetsCount = ( morphAttribute !== undefined ) ? morphAttribute.length : 0;\n\n\t\tconst materialProperties = properties.get( material );\n\t\tconst lights = currentRenderState.state.lights;\n\n\t\tif ( _clippingEnabled === true ) {\n\n\t\t\tif ( _localClippingEnabled === true || camera !== _currentCamera ) {\n\n\t\t\t\tconst useCache =\n\t\t\t\t\tcamera === _currentCamera &&\n\t\t\t\t\tmaterial.id === _currentMaterialId;\n\n\t\t\t\t// we might want to call this function with some ClippingGroup\n\t\t\t\t// object instead of the material, once it becomes feasible\n\t\t\t\t// (#8465, #8379)\n\t\t\t\tclipping.setState( material, camera, useCache );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tlet needsProgramChange = false;\n\n\t\tif ( material.version === materialProperties.__version ) {\n\n\t\t\tif ( materialProperties.needsLights && ( materialProperties.lightsStateVersion !== lights.state.version ) ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( materialProperties.outputEncoding !== encoding ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( object.isInstancedMesh && materialProperties.instancing === false ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( ! object.isInstancedMesh && materialProperties.instancing === true ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( object.isSkinnedMesh && materialProperties.skinning === false ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( ! object.isSkinnedMesh && materialProperties.skinning === true ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( materialProperties.envMap !== envMap ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( material.fog === true && materialProperties.fog !== fog ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( materialProperties.numClippingPlanes !== undefined &&\n\t\t\t\t( materialProperties.numClippingPlanes !== clipping.numPlanes ||\n\t\t\t\tmaterialProperties.numIntersection !== clipping.numIntersection ) ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( materialProperties.vertexAlphas !== vertexAlphas ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( materialProperties.vertexTangents !== vertexTangents ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( materialProperties.morphTargets !== morphTargets ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( materialProperties.morphNormals !== morphNormals ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( materialProperties.morphColors !== morphColors ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( materialProperties.toneMapping !== toneMapping ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t} else if ( capabilities.isWebGL2 === true && materialProperties.morphTargetsCount !== morphTargetsCount ) {\n\n\t\t\t\tneedsProgramChange = true;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tneedsProgramChange = true;\n\t\t\tmaterialProperties.__version = material.version;\n\n\t\t}\n\n\t\t//\n\n\t\tlet program = materialProperties.currentProgram;\n\n\t\tif ( needsProgramChange === true ) {\n\n\t\t\tprogram = getProgram( material, scene, object );\n\n\t\t}\n\n\t\tlet refreshProgram = false;\n\t\tlet refreshMaterial = false;\n\t\tlet refreshLights = false;\n\n\t\tconst p_uniforms = program.getUniforms(),\n\t\t\tm_uniforms = materialProperties.uniforms;\n\n\t\tif ( state.useProgram( program.program ) ) {\n\n\t\t\trefreshProgram = true;\n\t\t\trefreshMaterial = true;\n\t\t\trefreshLights = true;\n\n\t\t}\n\n\t\tif ( material.id !== _currentMaterialId ) {\n\n\t\t\t_currentMaterialId = material.id;\n\n\t\t\trefreshMaterial = true;\n\n\t\t}\n\n\t\tif ( refreshProgram || _currentCamera !== camera ) {\n\n\t\t\tp_uniforms.setValue( _gl, 'projectionMatrix', camera.projectionMatrix );\n\n\t\t\tif ( capabilities.logarithmicDepthBuffer ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'logDepthBufFC',\n\t\t\t\t\t2.0 / ( Math.log( camera.far + 1.0 ) / Math.LN2 ) );\n\n\t\t\t}\n\n\t\t\tif ( _currentCamera !== camera ) {\n\n\t\t\t\t_currentCamera = camera;\n\n\t\t\t\t// lighting uniforms depend on the camera so enforce an update\n\t\t\t\t// now, in case this material supports lights - or later, when\n\t\t\t\t// the next material that does gets activated:\n\n\t\t\t\trefreshMaterial = true;\t\t// set to true on material change\n\t\t\t\trefreshLights = true;\t\t// remains set until update done\n\n\t\t\t}\n\n\t\t\t// load material specific uniforms\n\t\t\t// (shader material also gets them for the sake of genericity)\n\n\t\t\tif ( material.isShaderMaterial ||\n\t\t\t\tmaterial.isMeshPhongMaterial ||\n\t\t\t\tmaterial.isMeshToonMaterial ||\n\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\tmaterial.envMap ) {\n\n\t\t\t\tconst uCamPos = p_uniforms.map.cameraPosition;\n\n\t\t\t\tif ( uCamPos !== undefined ) {\n\n\t\t\t\t\tuCamPos.setValue( _gl,\n\t\t\t\t\t\t_vector3.setFromMatrixPosition( camera.matrixWorld ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( material.isMeshPhongMaterial ||\n\t\t\t\tmaterial.isMeshToonMaterial ||\n\t\t\t\tmaterial.isMeshLambertMaterial ||\n\t\t\t\tmaterial.isMeshBasicMaterial ||\n\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\tmaterial.isShaderMaterial ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'isOrthographic', camera.isOrthographicCamera === true );\n\n\t\t\t}\n\n\t\t\tif ( material.isMeshPhongMaterial ||\n\t\t\t\tmaterial.isMeshToonMaterial ||\n\t\t\t\tmaterial.isMeshLambertMaterial ||\n\t\t\t\tmaterial.isMeshBasicMaterial ||\n\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\tmaterial.isShaderMaterial ||\n\t\t\t\tmaterial.isShadowMaterial ||\n\t\t\t\tobject.isSkinnedMesh ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'viewMatrix', camera.matrixWorldInverse );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// skinning and morph target uniforms must be set even if material didn't change\n\t\t// auto-setting of texture unit for bone and morph texture must go before other textures\n\t\t// otherwise textures used for skinning and morphing can take over texture units reserved for other material textures\n\n\t\tif ( object.isSkinnedMesh ) {\n\n\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrix' );\n\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrixInverse' );\n\n\t\t\tconst skeleton = object.skeleton;\n\n\t\t\tif ( skeleton ) {\n\n\t\t\t\tif ( capabilities.floatVertexTextures ) {\n\n\t\t\t\t\tif ( skeleton.boneTexture === null ) skeleton.computeBoneTexture();\n\n\t\t\t\t\tp_uniforms.setValue( _gl, 'boneTexture', skeleton.boneTexture, textures );\n\t\t\t\t\tp_uniforms.setValue( _gl, 'boneTextureSize', skeleton.boneTextureSize );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: SkinnedMesh can only be used with WebGL 2. With WebGL 1 OES_texture_float and vertex textures support is required.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\n\t\tif ( morphAttributes.position !== undefined || morphAttributes.normal !== undefined || ( morphAttributes.color !== undefined && capabilities.isWebGL2 === true ) ) {\n\n\t\t\tmorphtargets.update( object, geometry, material, program );\n\n\t\t}\n\n\n\t\tif ( refreshMaterial || materialProperties.receiveShadow !== object.receiveShadow ) {\n\n\t\t\tmaterialProperties.receiveShadow = object.receiveShadow;\n\t\t\tp_uniforms.setValue( _gl, 'receiveShadow', object.receiveShadow );\n\n\t\t}\n\n\t\tif ( refreshMaterial ) {\n\n\t\t\tp_uniforms.setValue( _gl, 'toneMappingExposure', _this.toneMappingExposure );\n\n\t\t\tif ( materialProperties.needsLights ) {\n\n\t\t\t\t// the current material requires lighting info\n\n\t\t\t\t// note: all lighting uniforms are always set correctly\n\t\t\t\t// they simply reference the renderer's state for their\n\t\t\t\t// values\n\t\t\t\t//\n\t\t\t\t// use the current material's .needsUpdate flags to set\n\t\t\t\t// the GL state when required\n\n\t\t\t\tmarkUniformsLightsNeedsUpdate( m_uniforms, refreshLights );\n\n\t\t\t}\n\n\t\t\t// refresh uniforms common to several materials\n\n\t\t\tif ( fog && material.fog === true ) {\n\n\t\t\t\tmaterials.refreshFogUniforms( m_uniforms, fog );\n\n\t\t\t}\n\n\t\t\tmaterials.refreshMaterialUniforms( m_uniforms, material, _pixelRatio, _height, _transmissionRenderTarget );\n\n\t\t\tWebGLUniforms.upload( _gl, materialProperties.uniformsList, m_uniforms, textures );\n\n\t\t}\n\n\t\tif ( material.isShaderMaterial && material.uniformsNeedUpdate === true ) {\n\n\t\t\tWebGLUniforms.upload( _gl, materialProperties.uniformsList, m_uniforms, textures );\n\t\t\tmaterial.uniformsNeedUpdate = false;\n\n\t\t}\n\n\t\tif ( material.isSpriteMaterial ) {\n\n\t\t\tp_uniforms.setValue( _gl, 'center', object.center );\n\n\t\t}\n\n\t\t// common matrices\n\n\t\tp_uniforms.setValue( _gl, 'modelViewMatrix', object.modelViewMatrix );\n\t\tp_uniforms.setValue( _gl, 'normalMatrix', object.normalMatrix );\n\t\tp_uniforms.setValue( _gl, 'modelMatrix', object.matrixWorld );\n\n\t\t// UBOs\n\n\t\tif ( material.isShaderMaterial || material.isRawShaderMaterial ) {\n\n\t\t\tconst groups = material.uniformsGroups;\n\n\t\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\t\tif ( capabilities.isWebGL2 ) {\n\n\t\t\t\t\tconst group = groups[ i ];\n\n\t\t\t\t\tuniformsGroups.update( group, program );\n\t\t\t\t\tuniformsGroups.bind( group, program );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Uniform Buffer Objects can only be used with WebGL 2.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn program;\n\n\t}\n\n\t// If uniforms are marked as clean, they don't need to be loaded to the GPU.\n\n\tfunction markUniformsLightsNeedsUpdate( uniforms, value ) {\n\n\t\tuniforms.ambientLightColor.needsUpdate = value;\n\t\tuniforms.lightProbe.needsUpdate = value;\n\n\t\tuniforms.directionalLights.needsUpdate = value;\n\t\tuniforms.directionalLightShadows.needsUpdate = value;\n\t\tuniforms.pointLights.needsUpdate = value;\n\t\tuniforms.pointLightShadows.needsUpdate = value;\n\t\tuniforms.spotLights.needsUpdate = value;\n\t\tuniforms.spotLightShadows.needsUpdate = value;\n\t\tuniforms.rectAreaLights.needsUpdate = value;\n\t\tuniforms.hemisphereLights.needsUpdate = value;\n\n\t}\n\n\tfunction materialNeedsLights( material ) {\n\n\t\treturn material.isMeshLambertMaterial || material.isMeshToonMaterial || material.isMeshPhongMaterial ||\n\t\t\tmaterial.isMeshStandardMaterial || material.isShadowMaterial ||\n\t\t\t( material.isShaderMaterial && material.lights === true );\n\n\t}\n\n\tthis.getActiveCubeFace = function () {\n\n\t\treturn _currentActiveCubeFace;\n\n\t};\n\n\tthis.getActiveMipmapLevel = function () {\n\n\t\treturn _currentActiveMipmapLevel;\n\n\t};\n\n\tthis.getRenderTarget = function () {\n\n\t\treturn _currentRenderTarget;\n\n\t};\n\n\tthis.setRenderTargetTextures = function ( renderTarget, colorTexture, depthTexture ) {\n\n\t\tproperties.get( renderTarget.texture ).__webglTexture = colorTexture;\n\t\tproperties.get( renderTarget.depthTexture ).__webglTexture = depthTexture;\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\trenderTargetProperties.__hasExternalTextures = true;\n\n\t\tif ( renderTargetProperties.__hasExternalTextures ) {\n\n\t\t\trenderTargetProperties.__autoAllocateDepthBuffer = depthTexture === undefined;\n\n\t\t\tif ( ! renderTargetProperties.__autoAllocateDepthBuffer ) {\n\n\t\t\t\t// The multisample_render_to_texture extension doesn't work properly if there\n\t\t\t\t// are midframe flushes and an external depth buffer. Disable use of the extension.\n\t\t\t\tif ( extensions.has( 'WEBGL_multisampled_render_to_texture' ) === true ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Render-to-texture extension was disabled because an external texture was provided' );\n\t\t\t\t\trenderTargetProperties.__useRenderToTexture = false;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\tthis.setRenderTargetFramebuffer = function ( renderTarget, defaultFramebuffer ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\trenderTargetProperties.__webglFramebuffer = defaultFramebuffer;\n\t\trenderTargetProperties.__useDefaultFramebuffer = defaultFramebuffer === undefined;\n\n\t};\n\n\tthis.setRenderTarget = function ( renderTarget, activeCubeFace = 0, activeMipmapLevel = 0 ) {\n\n\t\t_currentRenderTarget = renderTarget;\n\t\t_currentActiveCubeFace = activeCubeFace;\n\t\t_currentActiveMipmapLevel = activeMipmapLevel;\n\n\t\tlet useDefaultFramebuffer = true;\n\n\t\tif ( renderTarget ) {\n\n\t\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\t\tif ( renderTargetProperties.__useDefaultFramebuffer !== undefined ) {\n\n\t\t\t\t// We need to make sure to rebind the framebuffer.\n\t\t\t\tstate.bindFramebuffer( 36160, null );\n\t\t\t\tuseDefaultFramebuffer = false;\n\n\t\t\t} else if ( renderTargetProperties.__webglFramebuffer === undefined ) {\n\n\t\t\t\ttextures.setupRenderTarget( renderTarget );\n\n\t\t\t} else if ( renderTargetProperties.__hasExternalTextures ) {\n\n\t\t\t\t// Color and depth texture must be rebound in order for the swapchain to update.\n\t\t\t\ttextures.rebindTextures( renderTarget, properties.get( renderTarget.texture ).__webglTexture, properties.get( renderTarget.depthTexture ).__webglTexture );\n\n\t\t\t}\n\n\t\t}\n\n\t\tlet framebuffer = null;\n\t\tlet isCube = false;\n\t\tlet isRenderTarget3D = false;\n\n\t\tif ( renderTarget ) {\n\n\t\t\tconst texture = renderTarget.texture;\n\n\t\t\tif ( texture.isData3DTexture || texture.isDataArrayTexture ) {\n\n\t\t\t\tisRenderTarget3D = true;\n\n\t\t\t}\n\n\t\t\tconst __webglFramebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\n\t\t\tif ( renderTarget.isWebGLCubeRenderTarget ) {\n\n\t\t\t\tframebuffer = __webglFramebuffer[ activeCubeFace ];\n\t\t\t\tisCube = true;\n\n\t\t\t} else if ( ( capabilities.isWebGL2 && renderTarget.samples > 0 ) && textures.useMultisampledRTT( renderTarget ) === false ) {\n\n\t\t\t\tframebuffer = properties.get( renderTarget ).__webglMultisampledFramebuffer;\n\n\t\t\t} else {\n\n\t\t\t\tframebuffer = __webglFramebuffer;\n\n\t\t\t}\n\n\t\t\t_currentViewport.copy( renderTarget.viewport );\n\t\t\t_currentScissor.copy( renderTarget.scissor );\n\t\t\t_currentScissorTest = renderTarget.scissorTest;\n\n\t\t} else {\n\n\t\t\t_currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor();\n\t\t\t_currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor();\n\t\t\t_currentScissorTest = _scissorTest;\n\n\t\t}\n\n\t\tconst framebufferBound = state.bindFramebuffer( 36160, framebuffer );\n\n\t\tif ( framebufferBound && capabilities.drawBuffers && useDefaultFramebuffer ) {\n\n\t\t\tstate.drawBuffers( renderTarget, framebuffer );\n\n\t\t}\n\n\t\tstate.viewport( _currentViewport );\n\t\tstate.scissor( _currentScissor );\n\t\tstate.setScissorTest( _currentScissorTest );\n\n\t\tif ( isCube ) {\n\n\t\t\tconst textureProperties = properties.get( renderTarget.texture );\n\t\t\t_gl.framebufferTexture2D( 36160, 36064, 34069 + activeCubeFace, textureProperties.__webglTexture, activeMipmapLevel );\n\n\t\t} else if ( isRenderTarget3D ) {\n\n\t\t\tconst textureProperties = properties.get( renderTarget.texture );\n\t\t\tconst layer = activeCubeFace || 0;\n\t\t\t_gl.framebufferTextureLayer( 36160, 36064, textureProperties.__webglTexture, activeMipmapLevel || 0, layer );\n\n\t\t}\n\n\t\t_currentMaterialId = - 1; // reset current material to ensure correct uniform bindings\n\n\t};\n\n\tthis.readRenderTargetPixels = function ( renderTarget, x, y, width, height, buffer, activeCubeFaceIndex ) {\n\n\t\tif ( ! ( renderTarget && renderTarget.isWebGLRenderTarget ) ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tlet framebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\n\t\tif ( renderTarget.isWebGLCubeRenderTarget && activeCubeFaceIndex !== undefined ) {\n\n\t\t\tframebuffer = framebuffer[ activeCubeFaceIndex ];\n\n\t\t}\n\n\t\tif ( framebuffer ) {\n\n\t\t\tstate.bindFramebuffer( 36160, framebuffer );\n\n\t\t\ttry {\n\n\t\t\t\tconst texture = renderTarget.texture;\n\t\t\t\tconst textureFormat = texture.format;\n\t\t\t\tconst textureType = texture.type;\n\n\t\t\t\tif ( textureFormat !== RGBAFormat && utils.convert( textureFormat ) !== _gl.getParameter( 35739 ) ) {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.' );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tconst halfFloatSupportedByExt = ( textureType === HalfFloatType ) && ( extensions.has( 'EXT_color_buffer_half_float' ) || ( capabilities.isWebGL2 && extensions.has( 'EXT_color_buffer_float' ) ) );\n\n\t\t\t\tif ( textureType !== UnsignedByteType && utils.convert( textureType ) !== _gl.getParameter( 35738 ) && // Edge and Chrome Mac < 52 (#9513)\n\t\t\t\t\t! ( textureType === FloatType && ( capabilities.isWebGL2 || extensions.has( 'OES_texture_float' ) || extensions.has( 'WEBGL_color_buffer_float' ) ) ) && // Chrome Mac >= 52 and Firefox\n\t\t\t\t\t! halfFloatSupportedByExt ) {\n\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.' );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\t// the following if statement ensures valid read requests (no out-of-bounds pixels, see #8604)\n\n\t\t\t\tif ( ( x >= 0 && x <= ( renderTarget.width - width ) ) && ( y >= 0 && y <= ( renderTarget.height - height ) ) ) {\n\n\t\t\t\t\t_gl.readPixels( x, y, width, height, utils.convert( textureFormat ), utils.convert( textureType ), buffer );\n\n\t\t\t\t}\n\n\t\t\t} finally {\n\n\t\t\t\t// restore framebuffer of current render target if necessary\n\n\t\t\t\tconst framebuffer = ( _currentRenderTarget !== null ) ? properties.get( _currentRenderTarget ).__webglFramebuffer : null;\n\t\t\t\tstate.bindFramebuffer( 36160, framebuffer );\n\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\tthis.copyFramebufferToTexture = function ( position, texture, level = 0 ) {\n\n\t\tconst levelScale = Math.pow( 2, - level );\n\t\tconst width = Math.floor( texture.image.width * levelScale );\n\t\tconst height = Math.floor( texture.image.height * levelScale );\n\n\t\ttextures.setTexture2D( texture, 0 );\n\n\t\t_gl.copyTexSubImage2D( 3553, level, 0, 0, position.x, position.y, width, height );\n\n\t\tstate.unbindTexture();\n\n\t};\n\n\tthis.copyTextureToTexture = function ( position, srcTexture, dstTexture, level = 0 ) {\n\n\t\tconst width = srcTexture.image.width;\n\t\tconst height = srcTexture.image.height;\n\t\tconst glFormat = utils.convert( dstTexture.format );\n\t\tconst glType = utils.convert( dstTexture.type );\n\n\t\ttextures.setTexture2D( dstTexture, 0 );\n\n\t\t// As another texture upload may have changed pixelStorei\n\t\t// parameters, make sure they are correct for the dstTexture\n\t\t_gl.pixelStorei( 37440, dstTexture.flipY );\n\t\t_gl.pixelStorei( 37441, dstTexture.premultiplyAlpha );\n\t\t_gl.pixelStorei( 3317, dstTexture.unpackAlignment );\n\n\t\tif ( srcTexture.isDataTexture ) {\n\n\t\t\t_gl.texSubImage2D( 3553, level, position.x, position.y, width, height, glFormat, glType, srcTexture.image.data );\n\n\t\t} else {\n\n\t\t\tif ( srcTexture.isCompressedTexture ) {\n\n\t\t\t\t_gl.compressedTexSubImage2D( 3553, level, position.x, position.y, srcTexture.mipmaps[ 0 ].width, srcTexture.mipmaps[ 0 ].height, glFormat, srcTexture.mipmaps[ 0 ].data );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.texSubImage2D( 3553, level, position.x, position.y, glFormat, glType, srcTexture.image );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Generate mipmaps only when copying level 0\n\t\tif ( level === 0 && dstTexture.generateMipmaps ) _gl.generateMipmap( 3553 );\n\n\t\tstate.unbindTexture();\n\n\t};\n\n\tthis.copyTextureToTexture3D = function ( sourceBox, position, srcTexture, dstTexture, level = 0 ) {\n\n\t\tif ( _this.isWebGL1Renderer ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer.copyTextureToTexture3D: can only be used with WebGL2.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst width = sourceBox.max.x - sourceBox.min.x + 1;\n\t\tconst height = sourceBox.max.y - sourceBox.min.y + 1;\n\t\tconst depth = sourceBox.max.z - sourceBox.min.z + 1;\n\t\tconst glFormat = utils.convert( dstTexture.format );\n\t\tconst glType = utils.convert( dstTexture.type );\n\t\tlet glTarget;\n\n\t\tif ( dstTexture.isData3DTexture ) {\n\n\t\t\ttextures.setTexture3D( dstTexture, 0 );\n\t\t\tglTarget = 32879;\n\n\t\t} else if ( dstTexture.isDataArrayTexture ) {\n\n\t\t\ttextures.setTexture2DArray( dstTexture, 0 );\n\t\t\tglTarget = 35866;\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\t_gl.pixelStorei( 37440, dstTexture.flipY );\n\t\t_gl.pixelStorei( 37441, dstTexture.premultiplyAlpha );\n\t\t_gl.pixelStorei( 3317, dstTexture.unpackAlignment );\n\n\t\tconst unpackRowLen = _gl.getParameter( 3314 );\n\t\tconst unpackImageHeight = _gl.getParameter( 32878 );\n\t\tconst unpackSkipPixels = _gl.getParameter( 3316 );\n\t\tconst unpackSkipRows = _gl.getParameter( 3315 );\n\t\tconst unpackSkipImages = _gl.getParameter( 32877 );\n\n\t\tconst image = srcTexture.isCompressedTexture ? srcTexture.mipmaps[ 0 ] : srcTexture.image;\n\n\t\t_gl.pixelStorei( 3314, image.width );\n\t\t_gl.pixelStorei( 32878, image.height );\n\t\t_gl.pixelStorei( 3316, sourceBox.min.x );\n\t\t_gl.pixelStorei( 3315, sourceBox.min.y );\n\t\t_gl.pixelStorei( 32877, sourceBox.min.z );\n\n\t\tif ( srcTexture.isDataTexture || srcTexture.isData3DTexture ) {\n\n\t\t\t_gl.texSubImage3D( glTarget, level, position.x, position.y, position.z, width, height, depth, glFormat, glType, image.data );\n\n\t\t} else {\n\n\t\t\tif ( srcTexture.isCompressedTexture ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer.copyTextureToTexture3D: untested support for compressed srcTexture.' );\n\t\t\t\t_gl.compressedTexSubImage3D( glTarget, level, position.x, position.y, position.z, width, height, depth, glFormat, image.data );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.texSubImage3D( glTarget, level, position.x, position.y, position.z, width, height, depth, glFormat, glType, image );\n\n\t\t\t}\n\n\t\t}\n\n\t\t_gl.pixelStorei( 3314, unpackRowLen );\n\t\t_gl.pixelStorei( 32878, unpackImageHeight );\n\t\t_gl.pixelStorei( 3316, unpackSkipPixels );\n\t\t_gl.pixelStorei( 3315, unpackSkipRows );\n\t\t_gl.pixelStorei( 32877, unpackSkipImages );\n\n\t\t// Generate mipmaps only when copying level 0\n\t\tif ( level === 0 && dstTexture.generateMipmaps ) _gl.generateMipmap( glTarget );\n\n\t\tstate.unbindTexture();\n\n\t};\n\n\tthis.initTexture = function ( texture ) {\n\n\t\tif ( texture.isCubeTexture ) {\n\n\t\t\ttextures.setTextureCube( texture, 0 );\n\n\t\t} else if ( texture.isData3DTexture ) {\n\n\t\t\ttextures.setTexture3D( texture, 0 );\n\n\t\t} else if ( texture.isDataArrayTexture ) {\n\n\t\t\ttextures.setTexture2DArray( texture, 0 );\n\n\t\t} else {\n\n\t\t\ttextures.setTexture2D( texture, 0 );\n\n\t\t}\n\n\t\tstate.unbindTexture();\n\n\t};\n\n\tthis.resetState = function () {\n\n\t\t_currentActiveCubeFace = 0;\n\t\t_currentActiveMipmapLevel = 0;\n\t\t_currentRenderTarget = null;\n\n\t\tstate.reset();\n\t\tbindingStates.reset();\n\n\t};\n\n\tif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) );\n\n\t}\n\n}\n\nclass WebGL1Renderer extends WebGLRenderer {}\n\nWebGL1Renderer.prototype.isWebGL1Renderer = true;\n\nclass FogExp2 {\n\n\tconstructor( color, density = 0.00025 ) {\n\n\t\tthis.isFogExp2 = true;\n\n\t\tthis.name = '';\n\n\t\tthis.color = new Color( color );\n\t\tthis.density = density;\n\n\t}\n\n\tclone() {\n\n\t\treturn new FogExp2( this.color, this.density );\n\n\t}\n\n\ttoJSON( /* meta */ ) {\n\n\t\treturn {\n\t\t\ttype: 'FogExp2',\n\t\t\tcolor: this.color.getHex(),\n\t\t\tdensity: this.density\n\t\t};\n\n\t}\n\n}\n\nclass Fog {\n\n\tconstructor( color, near = 1, far = 1000 ) {\n\n\t\tthis.isFog = true;\n\n\t\tthis.name = '';\n\n\t\tthis.color = new Color( color );\n\n\t\tthis.near = near;\n\t\tthis.far = far;\n\n\t}\n\n\tclone() {\n\n\t\treturn new Fog( this.color, this.near, this.far );\n\n\t}\n\n\ttoJSON( /* meta */ ) {\n\n\t\treturn {\n\t\t\ttype: 'Fog',\n\t\t\tcolor: this.color.getHex(),\n\t\t\tnear: this.near,\n\t\t\tfar: this.far\n\t\t};\n\n\t}\n\n}\n\nclass Scene extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isScene = true;\n\n\t\tthis.type = 'Scene';\n\n\t\tthis.background = null;\n\t\tthis.environment = null;\n\t\tthis.fog = null;\n\n\t\tthis.overrideMaterial = null;\n\n\t\tthis.autoUpdate = true; // checked by the renderer\n\n\t\tif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t\t\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) );\n\n\t\t}\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tif ( source.background !== null ) this.background = source.background.clone();\n\t\tif ( source.environment !== null ) this.environment = source.environment.clone();\n\t\tif ( source.fog !== null ) this.fog = source.fog.clone();\n\n\t\tif ( source.overrideMaterial !== null ) this.overrideMaterial = source.overrideMaterial.clone();\n\n\t\tthis.autoUpdate = source.autoUpdate;\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tif ( this.fog !== null ) data.object.fog = this.fog.toJSON();\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass InterleavedBuffer {\n\n\tconstructor( array, stride ) {\n\n\t\tthis.isInterleavedBuffer = true;\n\n\t\tthis.array = array;\n\t\tthis.stride = stride;\n\t\tthis.count = array !== undefined ? array.length / stride : 0;\n\n\t\tthis.usage = StaticDrawUsage;\n\t\tthis.updateRange = { offset: 0, count: - 1 };\n\n\t\tthis.version = 0;\n\n\t\tthis.uuid = generateUUID();\n\n\t}\n\n\tonUploadCallback() {}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\tsetUsage( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.array = new source.array.constructor( source.array );\n\t\tthis.count = source.count;\n\t\tthis.stride = source.stride;\n\t\tthis.usage = source.usage;\n\n\t\treturn this;\n\n\t}\n\n\tcopyAt( index1, attribute, index2 ) {\n\n\t\tindex1 *= this.stride;\n\t\tindex2 *= attribute.stride;\n\n\t\tfor ( let i = 0, l = this.stride; i < l; i ++ ) {\n\n\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tset( value, offset = 0 ) {\n\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t}\n\n\tclone( data ) {\n\n\t\tif ( data.arrayBuffers === undefined ) {\n\n\t\t\tdata.arrayBuffers = {};\n\n\t\t}\n\n\t\tif ( this.array.buffer._uuid === undefined ) {\n\n\t\t\tthis.array.buffer._uuid = generateUUID();\n\n\t\t}\n\n\t\tif ( data.arrayBuffers[ this.array.buffer._uuid ] === undefined ) {\n\n\t\t\tdata.arrayBuffers[ this.array.buffer._uuid ] = this.array.slice( 0 ).buffer;\n\n\t\t}\n\n\t\tconst array = new this.array.constructor( data.arrayBuffers[ this.array.buffer._uuid ] );\n\n\t\tconst ib = new this.constructor( array, this.stride );\n\t\tib.setUsage( this.usage );\n\n\t\treturn ib;\n\n\t}\n\n\tonUpload( callback ) {\n\n\t\tthis.onUploadCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( data ) {\n\n\t\tif ( data.arrayBuffers === undefined ) {\n\n\t\t\tdata.arrayBuffers = {};\n\n\t\t}\n\n\t\t// generate UUID for array buffer if necessary\n\n\t\tif ( this.array.buffer._uuid === undefined ) {\n\n\t\t\tthis.array.buffer._uuid = generateUUID();\n\n\t\t}\n\n\t\tif ( data.arrayBuffers[ this.array.buffer._uuid ] === undefined ) {\n\n\t\t\tdata.arrayBuffers[ this.array.buffer._uuid ] = Array.from( new Uint32Array( this.array.buffer ) );\n\n\t\t}\n\n\t\t//\n\n\t\treturn {\n\t\t\tuuid: this.uuid,\n\t\t\tbuffer: this.array.buffer._uuid,\n\t\t\ttype: this.array.constructor.name,\n\t\t\tstride: this.stride\n\t\t};\n\n\t}\n\n}\n\nconst _vector$6 = /*@__PURE__*/ new Vector3();\n\nclass InterleavedBufferAttribute {\n\n\tconstructor( interleavedBuffer, itemSize, offset, normalized = false ) {\n\n\t\tthis.isInterleavedBufferAttribute = true;\n\n\t\tthis.name = '';\n\n\t\tthis.data = interleavedBuffer;\n\t\tthis.itemSize = itemSize;\n\t\tthis.offset = offset;\n\n\t\tthis.normalized = normalized === true;\n\n\t}\n\n\tget count() {\n\n\t\treturn this.data.count;\n\n\t}\n\n\tget array() {\n\n\t\treturn this.data.array;\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tthis.data.needsUpdate = value;\n\n\t}\n\n\tapplyMatrix4( m ) {\n\n\t\tfor ( let i = 0, l = this.data.count; i < l; i ++ ) {\n\n\t\t\t_vector$6.fromBufferAttribute( this, i );\n\n\t\t\t_vector$6.applyMatrix4( m );\n\n\t\t\tthis.setXYZ( i, _vector$6.x, _vector$6.y, _vector$6.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tapplyNormalMatrix( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$6.fromBufferAttribute( this, i );\n\n\t\t\t_vector$6.applyNormalMatrix( m );\n\n\t\t\tthis.setXYZ( i, _vector$6.x, _vector$6.y, _vector$6.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttransformDirection( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$6.fromBufferAttribute( this, i );\n\n\t\t\t_vector$6.transformDirection( m );\n\n\t\t\tthis.setXYZ( i, _vector$6.x, _vector$6.y, _vector$6.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetX( index, x ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset ] = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( index, y ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 1 ] = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetZ( index, z ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 2 ] = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetW( index, w ) {\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n\tgetX( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset ];\n\n\t}\n\n\tgetY( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 1 ];\n\n\t}\n\n\tgetZ( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 2 ];\n\n\t}\n\n\tgetW( index ) {\n\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 3 ];\n\n\t}\n\n\tsetXY( index, x, y ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZ( index, x, y, z ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\t\tthis.data.array[ index + 2 ] = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZW( index, x, y, z, w ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\t\tthis.data.array[ index + 2 ] = z;\n\t\tthis.data.array[ index + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n\tclone( data ) {\n\n\t\tif ( data === undefined ) {\n\n\t\t\tconsole.log( 'THREE.InterleavedBufferAttribute.clone(): Cloning an interleaved buffer attribute will deinterleave buffer data.' );\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0; i < this.count; i ++ ) {\n\n\t\t\t\tconst index = i * this.data.stride + this.offset;\n\n\t\t\t\tfor ( let j = 0; j < this.itemSize; j ++ ) {\n\n\t\t\t\t\tarray.push( this.data.array[ index + j ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new BufferAttribute( new this.array.constructor( array ), this.itemSize, this.normalized );\n\n\t\t} else {\n\n\t\t\tif ( data.interleavedBuffers === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers = {};\n\n\t\t\t}\n\n\t\t\tif ( data.interleavedBuffers[ this.data.uuid ] === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers[ this.data.uuid ] = this.data.clone( data );\n\n\t\t\t}\n\n\t\t\treturn new InterleavedBufferAttribute( data.interleavedBuffers[ this.data.uuid ], this.itemSize, this.offset, this.normalized );\n\n\t\t}\n\n\t}\n\n\ttoJSON( data ) {\n\n\t\tif ( data === undefined ) {\n\n\t\t\tconsole.log( 'THREE.InterleavedBufferAttribute.toJSON(): Serializing an interleaved buffer attribute will deinterleave buffer data.' );\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0; i < this.count; i ++ ) {\n\n\t\t\t\tconst index = i * this.data.stride + this.offset;\n\n\t\t\t\tfor ( let j = 0; j < this.itemSize; j ++ ) {\n\n\t\t\t\t\tarray.push( this.data.array[ index + j ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// deinterleave data and save it as an ordinary buffer attribute for now\n\n\t\t\treturn {\n\t\t\t\titemSize: this.itemSize,\n\t\t\t\ttype: this.array.constructor.name,\n\t\t\t\tarray: array,\n\t\t\t\tnormalized: this.normalized\n\t\t\t};\n\n\t\t} else {\n\n\t\t\t// save as true interleaved attribtue\n\n\t\t\tif ( data.interleavedBuffers === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers = {};\n\n\t\t\t}\n\n\t\t\tif ( data.interleavedBuffers[ this.data.uuid ] === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers[ this.data.uuid ] = this.data.toJSON( data );\n\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tisInterleavedBufferAttribute: true,\n\t\t\t\titemSize: this.itemSize,\n\t\t\t\tdata: this.data.uuid,\n\t\t\t\toffset: this.offset,\n\t\t\t\tnormalized: this.normalized\n\t\t\t};\n\n\t\t}\n\n\t}\n\n}\n\nclass SpriteMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isSpriteMaterial = true;\n\n\t\tthis.type = 'SpriteMaterial';\n\n\t\tthis.color = new Color( 0xffffff );\n\n\t\tthis.map = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.rotation = 0;\n\n\t\tthis.sizeAttenuation = true;\n\n\t\tthis.transparent = true;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.rotation = source.rotation;\n\n\t\tthis.sizeAttenuation = source.sizeAttenuation;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nlet _geometry;\n\nconst _intersectPoint = /*@__PURE__*/ new Vector3();\nconst _worldScale = /*@__PURE__*/ new Vector3();\nconst _mvPosition = /*@__PURE__*/ new Vector3();\n\nconst _alignedPosition = /*@__PURE__*/ new Vector2();\nconst _rotatedPosition = /*@__PURE__*/ new Vector2();\nconst _viewWorldMatrix = /*@__PURE__*/ new Matrix4();\n\nconst _vA = /*@__PURE__*/ new Vector3();\nconst _vB = /*@__PURE__*/ new Vector3();\nconst _vC = /*@__PURE__*/ new Vector3();\n\nconst _uvA = /*@__PURE__*/ new Vector2();\nconst _uvB = /*@__PURE__*/ new Vector2();\nconst _uvC = /*@__PURE__*/ new Vector2();\n\nclass Sprite extends Object3D {\n\n\tconstructor( material ) {\n\n\t\tsuper();\n\n\t\tthis.isSprite = true;\n\n\t\tthis.type = 'Sprite';\n\n\t\tif ( _geometry === undefined ) {\n\n\t\t\t_geometry = new BufferGeometry();\n\n\t\t\tconst float32Array = new Float32Array( [\n\t\t\t\t- 0.5, - 0.5, 0, 0, 0,\n\t\t\t\t0.5, - 0.5, 0, 1, 0,\n\t\t\t\t0.5, 0.5, 0, 1, 1,\n\t\t\t\t- 0.5, 0.5, 0, 0, 1\n\t\t\t] );\n\n\t\t\tconst interleavedBuffer = new InterleavedBuffer( float32Array, 5 );\n\n\t\t\t_geometry.setIndex( [ 0, 1, 2,\t0, 2, 3 ] );\n\t\t\t_geometry.setAttribute( 'position', new InterleavedBufferAttribute( interleavedBuffer, 3, 0, false ) );\n\t\t\t_geometry.setAttribute( 'uv', new InterleavedBufferAttribute( interleavedBuffer, 2, 3, false ) );\n\n\t\t}\n\n\t\tthis.geometry = _geometry;\n\t\tthis.material = ( material !== undefined ) ? material : new SpriteMaterial();\n\n\t\tthis.center = new Vector2( 0.5, 0.5 );\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tif ( raycaster.camera === null ) {\n\n\t\t\tconsole.error( 'THREE.Sprite: \"Raycaster.camera\" needs to be set in order to raycast against sprites.' );\n\n\t\t}\n\n\t\t_worldScale.setFromMatrixScale( this.matrixWorld );\n\n\t\t_viewWorldMatrix.copy( raycaster.camera.matrixWorld );\n\t\tthis.modelViewMatrix.multiplyMatrices( raycaster.camera.matrixWorldInverse, this.matrixWorld );\n\n\t\t_mvPosition.setFromMatrixPosition( this.modelViewMatrix );\n\n\t\tif ( raycaster.camera.isPerspectiveCamera && this.material.sizeAttenuation === false ) {\n\n\t\t\t_worldScale.multiplyScalar( - _mvPosition.z );\n\n\t\t}\n\n\t\tconst rotation = this.material.rotation;\n\t\tlet sin, cos;\n\n\t\tif ( rotation !== 0 ) {\n\n\t\t\tcos = Math.cos( rotation );\n\t\t\tsin = Math.sin( rotation );\n\n\t\t}\n\n\t\tconst center = this.center;\n\n\t\ttransformVertex( _vA.set( - 0.5, - 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\ttransformVertex( _vB.set( 0.5, - 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\ttransformVertex( _vC.set( 0.5, 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\n\t\t_uvA.set( 0, 0 );\n\t\t_uvB.set( 1, 0 );\n\t\t_uvC.set( 1, 1 );\n\n\t\t// check first triangle\n\t\tlet intersect = raycaster.ray.intersectTriangle( _vA, _vB, _vC, false, _intersectPoint );\n\n\t\tif ( intersect === null ) {\n\n\t\t\t// check second triangle\n\t\t\ttransformVertex( _vB.set( - 0.5, 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\t\t_uvB.set( 0, 1 );\n\n\t\t\tintersect = raycaster.ray.intersectTriangle( _vA, _vC, _vB, false, _intersectPoint );\n\t\t\tif ( intersect === null ) {\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst distance = raycaster.ray.origin.distanceTo( _intersectPoint );\n\n\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\t\tintersects.push( {\n\n\t\t\tdistance: distance,\n\t\t\tpoint: _intersectPoint.clone(),\n\t\t\tuv: Triangle.getUV( _intersectPoint, _vA, _vB, _vC, _uvA, _uvB, _uvC, new Vector2() ),\n\t\t\tface: null,\n\t\t\tobject: this\n\n\t\t} );\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tif ( source.center !== undefined ) this.center.copy( source.center );\n\n\t\tthis.material = source.material;\n\n\t\treturn this;\n\n\t}\n\n}\n\nfunction transformVertex( vertexPosition, mvPosition, center, scale, sin, cos ) {\n\n\t// compute position in camera space\n\t_alignedPosition.subVectors( vertexPosition, center ).addScalar( 0.5 ).multiply( scale );\n\n\t// to check if rotation is not zero\n\tif ( sin !== undefined ) {\n\n\t\t_rotatedPosition.x = ( cos * _alignedPosition.x ) - ( sin * _alignedPosition.y );\n\t\t_rotatedPosition.y = ( sin * _alignedPosition.x ) + ( cos * _alignedPosition.y );\n\n\t} else {\n\n\t\t_rotatedPosition.copy( _alignedPosition );\n\n\t}\n\n\n\tvertexPosition.copy( mvPosition );\n\tvertexPosition.x += _rotatedPosition.x;\n\tvertexPosition.y += _rotatedPosition.y;\n\n\t// transform to world space\n\tvertexPosition.applyMatrix4( _viewWorldMatrix );\n\n}\n\nconst _v1$2 = /*@__PURE__*/ new Vector3();\nconst _v2$1 = /*@__PURE__*/ new Vector3();\n\nclass LOD extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis._currentLevel = 0;\n\n\t\tthis.type = 'LOD';\n\n\t\tObject.defineProperties( this, {\n\t\t\tlevels: {\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: []\n\t\t\t},\n\t\t\tisLOD: {\n\t\t\t\tvalue: true,\n\t\t\t}\n\t\t} );\n\n\t\tthis.autoUpdate = true;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source, false );\n\n\t\tconst levels = source.levels;\n\n\t\tfor ( let i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tconst level = levels[ i ];\n\n\t\t\tthis.addLevel( level.object.clone(), level.distance );\n\n\t\t}\n\n\t\tthis.autoUpdate = source.autoUpdate;\n\n\t\treturn this;\n\n\t}\n\n\taddLevel( object, distance = 0 ) {\n\n\t\tdistance = Math.abs( distance );\n\n\t\tconst levels = this.levels;\n\n\t\tlet l;\n\n\t\tfor ( l = 0; l < levels.length; l ++ ) {\n\n\t\t\tif ( distance < levels[ l ].distance ) {\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlevels.splice( l, 0, { distance: distance, object: object } );\n\n\t\tthis.add( object );\n\n\t\treturn this;\n\n\t}\n\n\tgetCurrentLevel() {\n\n\t\treturn this._currentLevel;\n\n\t}\n\n\tgetObjectForDistance( distance ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 0 ) {\n\n\t\t\tlet i, l;\n\n\t\t\tfor ( i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\t\tif ( distance < levels[ i ].distance ) {\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn levels[ i - 1 ].object;\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 0 ) {\n\n\t\t\t_v1$2.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tconst distance = raycaster.ray.origin.distanceTo( _v1$2 );\n\n\t\t\tthis.getObjectForDistance( distance ).raycast( raycaster, intersects );\n\n\t\t}\n\n\t}\n\n\tupdate( camera ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 1 ) {\n\n\t\t\t_v1$2.setFromMatrixPosition( camera.matrixWorld );\n\t\t\t_v2$1.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tconst distance = _v1$2.distanceTo( _v2$1 ) / camera.zoom;\n\n\t\t\tlevels[ 0 ].object.visible = true;\n\n\t\t\tlet i, l;\n\n\t\t\tfor ( i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\t\tif ( distance >= levels[ i ].distance ) {\n\n\t\t\t\t\tlevels[ i - 1 ].object.visible = false;\n\t\t\t\t\tlevels[ i ].object.visible = true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._currentLevel = i - 1;\n\n\t\t\tfor ( ; i < l; i ++ ) {\n\n\t\t\t\tlevels[ i ].object.visible = false;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tif ( this.autoUpdate === false ) data.object.autoUpdate = false;\n\n\t\tdata.object.levels = [];\n\n\t\tconst levels = this.levels;\n\n\t\tfor ( let i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tconst level = levels[ i ];\n\n\t\t\tdata.object.levels.push( {\n\t\t\t\tobject: level.object.uuid,\n\t\t\t\tdistance: level.distance\n\t\t\t} );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n}\n\nconst _basePosition = /*@__PURE__*/ new Vector3();\n\nconst _skinIndex = /*@__PURE__*/ new Vector4();\nconst _skinWeight = /*@__PURE__*/ new Vector4();\n\nconst _vector$5 = /*@__PURE__*/ new Vector3();\nconst _matrix = /*@__PURE__*/ new Matrix4();\n\nclass SkinnedMesh extends Mesh {\n\n\tconstructor( geometry, material ) {\n\n\t\tsuper( geometry, material );\n\n\t\tthis.isSkinnedMesh = true;\n\n\t\tthis.type = 'SkinnedMesh';\n\n\t\tthis.bindMode = 'attached';\n\t\tthis.bindMatrix = new Matrix4();\n\t\tthis.bindMatrixInverse = new Matrix4();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.bindMode = source.bindMode;\n\t\tthis.bindMatrix.copy( source.bindMatrix );\n\t\tthis.bindMatrixInverse.copy( source.bindMatrixInverse );\n\n\t\tthis.skeleton = source.skeleton;\n\n\t\treturn this;\n\n\t}\n\n\tbind( skeleton, bindMatrix ) {\n\n\t\tthis.skeleton = skeleton;\n\n\t\tif ( bindMatrix === undefined ) {\n\n\t\t\tthis.updateMatrixWorld( true );\n\n\t\t\tthis.skeleton.calculateInverses();\n\n\t\t\tbindMatrix = this.matrixWorld;\n\n\t\t}\n\n\t\tthis.bindMatrix.copy( bindMatrix );\n\t\tthis.bindMatrixInverse.copy( bindMatrix ).invert();\n\n\t}\n\n\tpose() {\n\n\t\tthis.skeleton.pose();\n\n\t}\n\n\tnormalizeSkinWeights() {\n\n\t\tconst vector = new Vector4();\n\n\t\tconst skinWeight = this.geometry.attributes.skinWeight;\n\n\t\tfor ( let i = 0, l = skinWeight.count; i < l; i ++ ) {\n\n\t\t\tvector.fromBufferAttribute( skinWeight, i );\n\n\t\t\tconst scale = 1.0 / vector.manhattanLength();\n\n\t\t\tif ( scale !== Infinity ) {\n\n\t\t\t\tvector.multiplyScalar( scale );\n\n\t\t\t} else {\n\n\t\t\t\tvector.set( 1, 0, 0, 0 ); // do something reasonable\n\n\t\t\t}\n\n\t\t\tskinWeight.setXYZW( i, vector.x, vector.y, vector.z, vector.w );\n\n\t\t}\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tif ( this.bindMode === 'attached' ) {\n\n\t\t\tthis.bindMatrixInverse.copy( this.matrixWorld ).invert();\n\n\t\t} else if ( this.bindMode === 'detached' ) {\n\n\t\t\tthis.bindMatrixInverse.copy( this.bindMatrix ).invert();\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.SkinnedMesh: Unrecognized bindMode: ' + this.bindMode );\n\n\t\t}\n\n\t}\n\n\tboneTransform( index, target ) {\n\n\t\tconst skeleton = this.skeleton;\n\t\tconst geometry = this.geometry;\n\n\t\t_skinIndex.fromBufferAttribute( geometry.attributes.skinIndex, index );\n\t\t_skinWeight.fromBufferAttribute( geometry.attributes.skinWeight, index );\n\n\t\t_basePosition.copy( target ).applyMatrix4( this.bindMatrix );\n\n\t\ttarget.set( 0, 0, 0 );\n\n\t\tfor ( let i = 0; i < 4; i ++ ) {\n\n\t\t\tconst weight = _skinWeight.getComponent( i );\n\n\t\t\tif ( weight !== 0 ) {\n\n\t\t\t\tconst boneIndex = _skinIndex.getComponent( i );\n\n\t\t\t\t_matrix.multiplyMatrices( skeleton.bones[ boneIndex ].matrixWorld, skeleton.boneInverses[ boneIndex ] );\n\n\t\t\t\ttarget.addScaledVector( _vector$5.copy( _basePosition ).applyMatrix4( _matrix ), weight );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn target.applyMatrix4( this.bindMatrixInverse );\n\n\t}\n\n}\n\nclass Bone extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isBone = true;\n\n\t\tthis.type = 'Bone';\n\n\t}\n\n}\n\nclass DataTexture extends Texture {\n\n\tconstructor( data = null, width = 1, height = 1, format, type, mapping, wrapS, wrapT, magFilter = NearestFilter, minFilter = NearestFilter, anisotropy, encoding ) {\n\n\t\tsuper( null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\t\tthis.isDataTexture = true;\n\n\t\tthis.image = { data: data, width: width, height: height };\n\n\t\tthis.generateMipmaps = false;\n\t\tthis.flipY = false;\n\t\tthis.unpackAlignment = 1;\n\n\t}\n\n}\n\nconst _offsetMatrix = /*@__PURE__*/ new Matrix4();\nconst _identityMatrix = /*@__PURE__*/ new Matrix4();\n\nclass Skeleton {\n\n\tconstructor( bones = [], boneInverses = [] ) {\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.bones = bones.slice( 0 );\n\t\tthis.boneInverses = boneInverses;\n\t\tthis.boneMatrices = null;\n\n\t\tthis.boneTexture = null;\n\t\tthis.boneTextureSize = 0;\n\n\t\tthis.frame = - 1;\n\n\t\tthis.init();\n\n\t}\n\n\tinit() {\n\n\t\tconst bones = this.bones;\n\t\tconst boneInverses = this.boneInverses;\n\n\t\tthis.boneMatrices = new Float32Array( bones.length * 16 );\n\n\t\t// calculate inverse bone matrices if necessary\n\n\t\tif ( boneInverses.length === 0 ) {\n\n\t\t\tthis.calculateInverses();\n\n\t\t} else {\n\n\t\t\t// handle special case\n\n\t\t\tif ( bones.length !== boneInverses.length ) {\n\n\t\t\t\tconsole.warn( 'THREE.Skeleton: Number of inverse bone matrices does not match amount of bones.' );\n\n\t\t\t\tthis.boneInverses = [];\n\n\t\t\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\t\t\tthis.boneInverses.push( new Matrix4() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcalculateInverses() {\n\n\t\tthis.boneInverses.length = 0;\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst inverse = new Matrix4();\n\n\t\t\tif ( this.bones[ i ] ) {\n\n\t\t\t\tinverse.copy( this.bones[ i ].matrixWorld ).invert();\n\n\t\t\t}\n\n\t\t\tthis.boneInverses.push( inverse );\n\n\t\t}\n\n\t}\n\n\tpose() {\n\n\t\t// recover the bind-time world matrices\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tbone.matrixWorld.copy( this.boneInverses[ i ] ).invert();\n\n\t\t\t}\n\n\t\t}\n\n\t\t// compute the local matrices, positions, rotations and scales\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\t\tbone.matrix.copy( bone.parent.matrixWorld ).invert();\n\t\t\t\t\tbone.matrix.multiply( bone.matrixWorld );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbone.matrix.copy( bone.matrixWorld );\n\n\t\t\t\t}\n\n\t\t\t\tbone.matrix.decompose( bone.position, bone.quaternion, bone.scale );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tupdate() {\n\n\t\tconst bones = this.bones;\n\t\tconst boneInverses = this.boneInverses;\n\t\tconst boneMatrices = this.boneMatrices;\n\t\tconst boneTexture = this.boneTexture;\n\n\t\t// flatten bone matrices to array\n\n\t\tfor ( let i = 0, il = bones.length; i < il; i ++ ) {\n\n\t\t\t// compute the offset between the current and the original transform\n\n\t\t\tconst matrix = bones[ i ] ? bones[ i ].matrixWorld : _identityMatrix;\n\n\t\t\t_offsetMatrix.multiplyMatrices( matrix, boneInverses[ i ] );\n\t\t\t_offsetMatrix.toArray( boneMatrices, i * 16 );\n\n\t\t}\n\n\t\tif ( boneTexture !== null ) {\n\n\t\t\tboneTexture.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new Skeleton( this.bones, this.boneInverses );\n\n\t}\n\n\tcomputeBoneTexture() {\n\n\t\t// layout (1 matrix = 4 pixels)\n\t\t//      RGBA RGBA RGBA RGBA (=> column1, column2, column3, column4)\n\t\t//  with  8x8  pixel texture max   16 bones * 4 pixels =  (8 * 8)\n\t\t//       16x16 pixel texture max   64 bones * 4 pixels = (16 * 16)\n\t\t//       32x32 pixel texture max  256 bones * 4 pixels = (32 * 32)\n\t\t//       64x64 pixel texture max 1024 bones * 4 pixels = (64 * 64)\n\n\t\tlet size = Math.sqrt( this.bones.length * 4 ); // 4 pixels needed for 1 matrix\n\t\tsize = ceilPowerOfTwo( size );\n\t\tsize = Math.max( size, 4 );\n\n\t\tconst boneMatrices = new Float32Array( size * size * 4 ); // 4 floats per RGBA pixel\n\t\tboneMatrices.set( this.boneMatrices ); // copy current values\n\n\t\tconst boneTexture = new DataTexture( boneMatrices, size, size, RGBAFormat, FloatType );\n\t\tboneTexture.needsUpdate = true;\n\n\t\tthis.boneMatrices = boneMatrices;\n\t\tthis.boneTexture = boneTexture;\n\t\tthis.boneTextureSize = size;\n\n\t\treturn this;\n\n\t}\n\n\tgetBoneByName( name ) {\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone.name === name ) {\n\n\t\t\t\treturn bone;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn undefined;\n\n\t}\n\n\tdispose( ) {\n\n\t\tif ( this.boneTexture !== null ) {\n\n\t\t\tthis.boneTexture.dispose();\n\n\t\t\tthis.boneTexture = null;\n\n\t\t}\n\n\t}\n\n\tfromJSON( json, bones ) {\n\n\t\tthis.uuid = json.uuid;\n\n\t\tfor ( let i = 0, l = json.bones.length; i < l; i ++ ) {\n\n\t\t\tconst uuid = json.bones[ i ];\n\t\t\tlet bone = bones[ uuid ];\n\n\t\t\tif ( bone === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Skeleton: No bone found with UUID:', uuid );\n\t\t\t\tbone = new Bone();\n\n\t\t\t}\n\n\t\t\tthis.bones.push( bone );\n\t\t\tthis.boneInverses.push( new Matrix4().fromArray( json.boneInverses[ i ] ) );\n\n\t\t}\n\n\t\tthis.init();\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Skeleton',\n\t\t\t\tgenerator: 'Skeleton.toJSON'\n\t\t\t},\n\t\t\tbones: [],\n\t\t\tboneInverses: []\n\t\t};\n\n\t\tdata.uuid = this.uuid;\n\n\t\tconst bones = this.bones;\n\t\tconst boneInverses = this.boneInverses;\n\n\t\tfor ( let i = 0, l = bones.length; i < l; i ++ ) {\n\n\t\t\tconst bone = bones[ i ];\n\t\t\tdata.bones.push( bone.uuid );\n\n\t\t\tconst boneInverse = boneInverses[ i ];\n\t\t\tdata.boneInverses.push( boneInverse.toArray() );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass InstancedBufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized, meshPerAttribute = 1 ) {\n\n\t\tif ( typeof normalized === 'number' ) {\n\n\t\t\tmeshPerAttribute = normalized;\n\n\t\t\tnormalized = false;\n\n\t\t\tconsole.error( 'THREE.InstancedBufferAttribute: The constructor now expects normalized as the third argument.' );\n\n\t\t}\n\n\t\tsuper( array, itemSize, normalized );\n\n\t\tthis.isInstancedBufferAttribute = true;\n\n\t\tthis.meshPerAttribute = meshPerAttribute;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.meshPerAttribute = this.meshPerAttribute;\n\n\t\tdata.isInstancedBufferAttribute = true;\n\n\t\treturn data;\n\n\t}\n\n}\n\nconst _instanceLocalMatrix = /*@__PURE__*/ new Matrix4();\nconst _instanceWorldMatrix = /*@__PURE__*/ new Matrix4();\n\nconst _instanceIntersects = [];\n\nconst _mesh = /*@__PURE__*/ new Mesh();\n\nclass InstancedMesh extends Mesh {\n\n\tconstructor( geometry, material, count ) {\n\n\t\tsuper( geometry, material );\n\n\t\tthis.isInstancedMesh = true;\n\n\t\tthis.instanceMatrix = new InstancedBufferAttribute( new Float32Array( count * 16 ), 16 );\n\t\tthis.instanceColor = null;\n\n\t\tthis.count = count;\n\n\t\tthis.frustumCulled = false;\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.instanceMatrix.copy( source.instanceMatrix );\n\n\t\tif ( source.instanceColor !== null ) this.instanceColor = source.instanceColor.clone();\n\n\t\tthis.count = source.count;\n\n\t\treturn this;\n\n\t}\n\n\tgetColorAt( index, color ) {\n\n\t\tcolor.fromArray( this.instanceColor.array, index * 3 );\n\n\t}\n\n\tgetMatrixAt( index, matrix ) {\n\n\t\tmatrix.fromArray( this.instanceMatrix.array, index * 16 );\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst raycastTimes = this.count;\n\n\t\t_mesh.geometry = this.geometry;\n\t\t_mesh.material = this.material;\n\n\t\tif ( _mesh.material === undefined ) return;\n\n\t\tfor ( let instanceId = 0; instanceId < raycastTimes; instanceId ++ ) {\n\n\t\t\t// calculate the world matrix for each instance\n\n\t\t\tthis.getMatrixAt( instanceId, _instanceLocalMatrix );\n\n\t\t\t_instanceWorldMatrix.multiplyMatrices( matrixWorld, _instanceLocalMatrix );\n\n\t\t\t// the mesh represents this single instance\n\n\t\t\t_mesh.matrixWorld = _instanceWorldMatrix;\n\n\t\t\t_mesh.raycast( raycaster, _instanceIntersects );\n\n\t\t\t// process the result of raycast\n\n\t\t\tfor ( let i = 0, l = _instanceIntersects.length; i < l; i ++ ) {\n\n\t\t\t\tconst intersect = _instanceIntersects[ i ];\n\t\t\t\tintersect.instanceId = instanceId;\n\t\t\t\tintersect.object = this;\n\t\t\t\tintersects.push( intersect );\n\n\t\t\t}\n\n\t\t\t_instanceIntersects.length = 0;\n\n\t\t}\n\n\t}\n\n\tsetColorAt( index, color ) {\n\n\t\tif ( this.instanceColor === null ) {\n\n\t\t\tthis.instanceColor = new InstancedBufferAttribute( new Float32Array( this.instanceMatrix.count * 3 ), 3 );\n\n\t\t}\n\n\t\tcolor.toArray( this.instanceColor.array, index * 3 );\n\n\t}\n\n\tsetMatrixAt( index, matrix ) {\n\n\t\tmatrix.toArray( this.instanceMatrix.array, index * 16 );\n\n\t}\n\n\tupdateMorphTargets() {\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n}\n\nclass LineBasicMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isLineBasicMaterial = true;\n\n\t\tthis.type = 'LineBasicMaterial';\n\n\t\tthis.color = new Color( 0xffffff );\n\n\t\tthis.linewidth = 1;\n\t\tthis.linecap = 'round';\n\t\tthis.linejoin = 'round';\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.linewidth = source.linewidth;\n\t\tthis.linecap = source.linecap;\n\t\tthis.linejoin = source.linejoin;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _start$1 = /*@__PURE__*/ new Vector3();\nconst _end$1 = /*@__PURE__*/ new Vector3();\nconst _inverseMatrix$1 = /*@__PURE__*/ new Matrix4();\nconst _ray$1 = /*@__PURE__*/ new Ray();\nconst _sphere$1 = /*@__PURE__*/ new Sphere();\n\nclass Line extends Object3D {\n\n\tconstructor( geometry = new BufferGeometry(), material = new LineBasicMaterial() ) {\n\n\t\tsuper();\n\n\t\tthis.isLine = true;\n\n\t\tthis.type = 'Line';\n\n\t\tthis.geometry = geometry;\n\t\tthis.material = material;\n\n\t\tthis.updateMorphTargets();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.material = source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t}\n\n\tcomputeLineDistances() {\n\n\t\tconst geometry = this.geometry;\n\n\t\t// we assume non-indexed geometry\n\n\t\tif ( geometry.index === null ) {\n\n\t\t\tconst positionAttribute = geometry.attributes.position;\n\t\t\tconst lineDistances = [ 0 ];\n\n\t\t\tfor ( let i = 1, l = positionAttribute.count; i < l; i ++ ) {\n\n\t\t\t\t_start$1.fromBufferAttribute( positionAttribute, i - 1 );\n\t\t\t\t_end$1.fromBufferAttribute( positionAttribute, i );\n\n\t\t\t\tlineDistances[ i ] = lineDistances[ i - 1 ];\n\t\t\t\tlineDistances[ i ] += _start$1.distanceTo( _end$1 );\n\n\t\t\t}\n\n\t\t\tgeometry.setAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst threshold = raycaster.params.Line.threshold;\n\t\tconst drawRange = geometry.drawRange;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$1.copy( geometry.boundingSphere );\n\t\t_sphere$1.applyMatrix4( matrixWorld );\n\t\t_sphere$1.radius += threshold;\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$1 ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix$1.copy( matrixWorld ).invert();\n\t\t_ray$1.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$1 );\n\n\t\tconst localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\n\t\tconst localThresholdSq = localThreshold * localThreshold;\n\n\t\tconst vStart = new Vector3();\n\t\tconst vEnd = new Vector3();\n\t\tconst interSegment = new Vector3();\n\t\tconst interRay = new Vector3();\n\t\tconst step = this.isLineSegments ? 2 : 1;\n\n\t\tconst index = geometry.index;\n\t\tconst attributes = geometry.attributes;\n\t\tconst positionAttribute = attributes.position;\n\n\t\tif ( index !== null ) {\n\n\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\tconst end = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\tfor ( let i = start, l = end - 1; i < l; i += step ) {\n\n\t\t\t\tconst a = index.getX( i );\n\t\t\t\tconst b = index.getX( i + 1 );\n\n\t\t\t\tvStart.fromBufferAttribute( positionAttribute, a );\n\t\t\t\tvEnd.fromBufferAttribute( positionAttribute, b );\n\n\t\t\t\tconst distSq = _ray$1.distanceSqToSegment( vStart, vEnd, interRay, interSegment );\n\n\t\t\t\tif ( distSq > localThresholdSq ) continue;\n\n\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\tconst distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\tintersects.push( {\n\n\t\t\t\t\tdistance: distance,\n\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\tindex: i,\n\t\t\t\t\tface: null,\n\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\tobject: this\n\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\tconst end = Math.min( positionAttribute.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\tfor ( let i = start, l = end - 1; i < l; i += step ) {\n\n\t\t\t\tvStart.fromBufferAttribute( positionAttribute, i );\n\t\t\t\tvEnd.fromBufferAttribute( positionAttribute, i + 1 );\n\n\t\t\t\tconst distSq = _ray$1.distanceSqToSegment( vStart, vEnd, interRay, interSegment );\n\n\t\t\t\tif ( distSq > localThresholdSq ) continue;\n\n\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\n\n\t\t\t\tconst distance = raycaster.ray.origin.distanceTo( interRay );\n\n\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\n\n\t\t\t\tintersects.push( {\n\n\t\t\t\t\tdistance: distance,\n\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t\t\t\t// point: raycaster.ray.at( distance ),\n\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\n\t\t\t\t\tindex: i,\n\t\t\t\t\tface: null,\n\t\t\t\t\tfaceIndex: null,\n\t\t\t\t\tobject: this\n\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tupdateMorphTargets() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\t\tconst keys = Object.keys( morphAttributes );\n\n\t\tif ( keys.length > 0 ) {\n\n\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nconst _start = /*@__PURE__*/ new Vector3();\nconst _end = /*@__PURE__*/ new Vector3();\n\nclass LineSegments extends Line {\n\n\tconstructor( geometry, material ) {\n\n\t\tsuper( geometry, material );\n\n\t\tthis.isLineSegments = true;\n\n\t\tthis.type = 'LineSegments';\n\n\t}\n\n\tcomputeLineDistances() {\n\n\t\tconst geometry = this.geometry;\n\n\t\t// we assume non-indexed geometry\n\n\t\tif ( geometry.index === null ) {\n\n\t\t\tconst positionAttribute = geometry.attributes.position;\n\t\t\tconst lineDistances = [];\n\n\t\t\tfor ( let i = 0, l = positionAttribute.count; i < l; i += 2 ) {\n\n\t\t\t\t_start.fromBufferAttribute( positionAttribute, i );\n\t\t\t\t_end.fromBufferAttribute( positionAttribute, i + 1 );\n\n\t\t\t\tlineDistances[ i ] = ( i === 0 ) ? 0 : lineDistances[ i - 1 ];\n\t\t\t\tlineDistances[ i + 1 ] = lineDistances[ i ] + _start.distanceTo( _end );\n\n\t\t\t}\n\n\t\t\tgeometry.setAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass LineLoop extends Line {\n\n\tconstructor( geometry, material ) {\n\n\t\tsuper( geometry, material );\n\n\t\tthis.isLineLoop = true;\n\n\t\tthis.type = 'LineLoop';\n\n\t}\n\n}\n\nclass PointsMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isPointsMaterial = true;\n\n\t\tthis.type = 'PointsMaterial';\n\n\t\tthis.color = new Color( 0xffffff );\n\n\t\tthis.map = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.size = 1;\n\t\tthis.sizeAttenuation = true;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.size = source.size;\n\t\tthis.sizeAttenuation = source.sizeAttenuation;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _inverseMatrix = /*@__PURE__*/ new Matrix4();\nconst _ray = /*@__PURE__*/ new Ray();\nconst _sphere = /*@__PURE__*/ new Sphere();\nconst _position$2 = /*@__PURE__*/ new Vector3();\n\nclass Points extends Object3D {\n\n\tconstructor( geometry = new BufferGeometry(), material = new PointsMaterial() ) {\n\n\t\tsuper();\n\n\t\tthis.isPoints = true;\n\n\t\tthis.type = 'Points';\n\n\t\tthis.geometry = geometry;\n\t\tthis.material = material;\n\n\t\tthis.updateMorphTargets();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.material = source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst threshold = raycaster.params.Points.threshold;\n\t\tconst drawRange = geometry.drawRange;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere.copy( geometry.boundingSphere );\n\t\t_sphere.applyMatrix4( matrixWorld );\n\t\t_sphere.radius += threshold;\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix.copy( matrixWorld ).invert();\n\t\t_ray.copy( raycaster.ray ).applyMatrix4( _inverseMatrix );\n\n\t\tconst localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\n\t\tconst localThresholdSq = localThreshold * localThreshold;\n\n\t\tconst index = geometry.index;\n\t\tconst attributes = geometry.attributes;\n\t\tconst positionAttribute = attributes.position;\n\n\t\tif ( index !== null ) {\n\n\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\tconst end = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\tfor ( let i = start, il = end; i < il; i ++ ) {\n\n\t\t\t\tconst a = index.getX( i );\n\n\t\t\t\t_position$2.fromBufferAttribute( positionAttribute, a );\n\n\t\t\t\ttestPoint( _position$2, a, localThresholdSq, matrixWorld, raycaster, intersects, this );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\tconst end = Math.min( positionAttribute.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\tfor ( let i = start, l = end; i < l; i ++ ) {\n\n\t\t\t\t_position$2.fromBufferAttribute( positionAttribute, i );\n\n\t\t\t\ttestPoint( _position$2, i, localThresholdSq, matrixWorld, raycaster, intersects, this );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tupdateMorphTargets() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\t\tconst keys = Object.keys( morphAttributes );\n\n\t\tif ( keys.length > 0 ) {\n\n\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nfunction testPoint( point, index, localThresholdSq, matrixWorld, raycaster, intersects, object ) {\n\n\tconst rayPointDistanceSq = _ray.distanceSqToPoint( point );\n\n\tif ( rayPointDistanceSq < localThresholdSq ) {\n\n\t\tconst intersectPoint = new Vector3();\n\n\t\t_ray.closestPointToPoint( point, intersectPoint );\n\t\tintersectPoint.applyMatrix4( matrixWorld );\n\n\t\tconst distance = raycaster.ray.origin.distanceTo( intersectPoint );\n\n\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\t\tintersects.push( {\n\n\t\t\tdistance: distance,\n\t\t\tdistanceToRay: Math.sqrt( rayPointDistanceSq ),\n\t\t\tpoint: intersectPoint,\n\t\t\tindex: index,\n\t\t\tface: null,\n\t\t\tobject: object\n\n\t\t} );\n\n\t}\n\n}\n\nclass VideoTexture extends Texture {\n\n\tconstructor( video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\t\tsuper( video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\t\tthis.isVideoTexture = true;\n\n\t\tthis.minFilter = minFilter !== undefined ? minFilter : LinearFilter;\n\t\tthis.magFilter = magFilter !== undefined ? magFilter : LinearFilter;\n\n\t\tthis.generateMipmaps = false;\n\n\t\tconst scope = this;\n\n\t\tfunction updateVideo() {\n\n\t\t\tscope.needsUpdate = true;\n\t\t\tvideo.requestVideoFrameCallback( updateVideo );\n\n\t\t}\n\n\t\tif ( 'requestVideoFrameCallback' in video ) {\n\n\t\t\tvideo.requestVideoFrameCallback( updateVideo );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.image ).copy( this );\n\n\t}\n\n\tupdate() {\n\n\t\tconst video = this.image;\n\t\tconst hasVideoFrameCallback = 'requestVideoFrameCallback' in video;\n\n\t\tif ( hasVideoFrameCallback === false && video.readyState >= video.HAVE_CURRENT_DATA ) {\n\n\t\t\tthis.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n}\n\nclass FramebufferTexture extends Texture {\n\n\tconstructor( width, height, format ) {\n\n\t\tsuper( { width, height } );\n\n\t\tthis.isFramebufferTexture = true;\n\n\t\tthis.format = format;\n\n\t\tthis.magFilter = NearestFilter;\n\t\tthis.minFilter = NearestFilter;\n\n\t\tthis.generateMipmaps = false;\n\n\t\tthis.needsUpdate = true;\n\n\t}\n\n}\n\nclass CompressedTexture extends Texture {\n\n\tconstructor( mipmaps, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) {\n\n\t\tsuper( null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\n\n\t\tthis.isCompressedTexture = true;\n\n\t\tthis.image = { width: width, height: height };\n\t\tthis.mipmaps = mipmaps;\n\n\t\t// no flipping for cube textures\n\t\t// (also flipping doesn't work for compressed textures )\n\n\t\tthis.flipY = false;\n\n\t\t// can't generate mipmaps for compressed textures\n\t\t// mips must be embedded in DDS files\n\n\t\tthis.generateMipmaps = false;\n\n\t}\n\n}\n\nclass CanvasTexture extends Texture {\n\n\tconstructor( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\t\tsuper( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\t\tthis.isCanvasTexture = true;\n\n\t\tthis.needsUpdate = true;\n\n\t}\n\n}\n\n/**\n * Extensible curve object.\n *\n * Some common of curve methods:\n * .getPoint( t, optionalTarget ), .getTangent( t, optionalTarget )\n * .getPointAt( u, optionalTarget ), .getTangentAt( u, optionalTarget )\n * .getPoints(), .getSpacedPoints()\n * .getLength()\n * .updateArcLengths()\n *\n * This following curves inherit from THREE.Curve:\n *\n * -- 2D curves --\n * THREE.ArcCurve\n * THREE.CubicBezierCurve\n * THREE.EllipseCurve\n * THREE.LineCurve\n * THREE.QuadraticBezierCurve\n * THREE.SplineCurve\n *\n * -- 3D curves --\n * THREE.CatmullRomCurve3\n * THREE.CubicBezierCurve3\n * THREE.LineCurve3\n * THREE.QuadraticBezierCurve3\n *\n * A series of curves can be represented as a THREE.CurvePath.\n *\n **/\n\nclass Curve {\n\n\tconstructor() {\n\n\t\tthis.type = 'Curve';\n\n\t\tthis.arcLengthDivisions = 200;\n\n\t}\n\n\t// Virtual base class method to overwrite and implement in subclasses\n\t//\t- t [0 .. 1]\n\n\tgetPoint( /* t, optionalTarget */ ) {\n\n\t\tconsole.warn( 'THREE.Curve: .getPoint() not implemented.' );\n\t\treturn null;\n\n\t}\n\n\t// Get point at relative position in curve according to arc length\n\t// - u [0 .. 1]\n\n\tgetPointAt( u, optionalTarget ) {\n\n\t\tconst t = this.getUtoTmapping( u );\n\t\treturn this.getPoint( t, optionalTarget );\n\n\t}\n\n\t// Get sequence of points using getPoint( t )\n\n\tgetPoints( divisions = 5 ) {\n\n\t\tconst points = [];\n\n\t\tfor ( let d = 0; d <= divisions; d ++ ) {\n\n\t\t\tpoints.push( this.getPoint( d / divisions ) );\n\n\t\t}\n\n\t\treturn points;\n\n\t}\n\n\t// Get sequence of points using getPointAt( u )\n\n\tgetSpacedPoints( divisions = 5 ) {\n\n\t\tconst points = [];\n\n\t\tfor ( let d = 0; d <= divisions; d ++ ) {\n\n\t\t\tpoints.push( this.getPointAt( d / divisions ) );\n\n\t\t}\n\n\t\treturn points;\n\n\t}\n\n\t// Get total curve arc length\n\n\tgetLength() {\n\n\t\tconst lengths = this.getLengths();\n\t\treturn lengths[ lengths.length - 1 ];\n\n\t}\n\n\t// Get list of cumulative segment lengths\n\n\tgetLengths( divisions = this.arcLengthDivisions ) {\n\n\t\tif ( this.cacheArcLengths &&\n\t\t\t( this.cacheArcLengths.length === divisions + 1 ) &&\n\t\t\t! this.needsUpdate ) {\n\n\t\t\treturn this.cacheArcLengths;\n\n\t\t}\n\n\t\tthis.needsUpdate = false;\n\n\t\tconst cache = [];\n\t\tlet current, last = this.getPoint( 0 );\n\t\tlet sum = 0;\n\n\t\tcache.push( 0 );\n\n\t\tfor ( let p = 1; p <= divisions; p ++ ) {\n\n\t\t\tcurrent = this.getPoint( p / divisions );\n\t\t\tsum += current.distanceTo( last );\n\t\t\tcache.push( sum );\n\t\t\tlast = current;\n\n\t\t}\n\n\t\tthis.cacheArcLengths = cache;\n\n\t\treturn cache; // { sums: cache, sum: sum }; Sum is in the last element.\n\n\t}\n\n\tupdateArcLengths() {\n\n\t\tthis.needsUpdate = true;\n\t\tthis.getLengths();\n\n\t}\n\n\t// Given u ( 0 .. 1 ), get a t to find p. This gives you points which are equidistant\n\n\tgetUtoTmapping( u, distance ) {\n\n\t\tconst arcLengths = this.getLengths();\n\n\t\tlet i = 0;\n\t\tconst il = arcLengths.length;\n\n\t\tlet targetArcLength; // The targeted u distance value to get\n\n\t\tif ( distance ) {\n\n\t\t\ttargetArcLength = distance;\n\n\t\t} else {\n\n\t\t\ttargetArcLength = u * arcLengths[ il - 1 ];\n\n\t\t}\n\n\t\t// binary search for the index with largest value smaller than target u distance\n\n\t\tlet low = 0, high = il - 1, comparison;\n\n\t\twhile ( low <= high ) {\n\n\t\t\ti = Math.floor( low + ( high - low ) / 2 ); // less likely to overflow, though probably not issue here, JS doesn't really have integers, all numbers are floats\n\n\t\t\tcomparison = arcLengths[ i ] - targetArcLength;\n\n\t\t\tif ( comparison < 0 ) {\n\n\t\t\t\tlow = i + 1;\n\n\t\t\t} else if ( comparison > 0 ) {\n\n\t\t\t\thigh = i - 1;\n\n\t\t\t} else {\n\n\t\t\t\thigh = i;\n\t\t\t\tbreak;\n\n\t\t\t\t// DONE\n\n\t\t\t}\n\n\t\t}\n\n\t\ti = high;\n\n\t\tif ( arcLengths[ i ] === targetArcLength ) {\n\n\t\t\treturn i / ( il - 1 );\n\n\t\t}\n\n\t\t// we could get finer grain at lengths, or use simple interpolation between two points\n\n\t\tconst lengthBefore = arcLengths[ i ];\n\t\tconst lengthAfter = arcLengths[ i + 1 ];\n\n\t\tconst segmentLength = lengthAfter - lengthBefore;\n\n\t\t// determine where we are between the 'before' and 'after' points\n\n\t\tconst segmentFraction = ( targetArcLength - lengthBefore ) / segmentLength;\n\n\t\t// add that fractional amount to t\n\n\t\tconst t = ( i + segmentFraction ) / ( il - 1 );\n\n\t\treturn t;\n\n\t}\n\n\t// Returns a unit vector tangent at t\n\t// In case any sub curve does not implement its tangent derivation,\n\t// 2 points a small delta apart will be used to find its gradient\n\t// which seems to give a reasonable approximation\n\n\tgetTangent( t, optionalTarget ) {\n\n\t\tconst delta = 0.0001;\n\t\tlet t1 = t - delta;\n\t\tlet t2 = t + delta;\n\n\t\t// Capping in case of danger\n\n\t\tif ( t1 < 0 ) t1 = 0;\n\t\tif ( t2 > 1 ) t2 = 1;\n\n\t\tconst pt1 = this.getPoint( t1 );\n\t\tconst pt2 = this.getPoint( t2 );\n\n\t\tconst tangent = optionalTarget || ( ( pt1.isVector2 ) ? new Vector2() : new Vector3() );\n\n\t\ttangent.copy( pt2 ).sub( pt1 ).normalize();\n\n\t\treturn tangent;\n\n\t}\n\n\tgetTangentAt( u, optionalTarget ) {\n\n\t\tconst t = this.getUtoTmapping( u );\n\t\treturn this.getTangent( t, optionalTarget );\n\n\t}\n\n\tcomputeFrenetFrames( segments, closed ) {\n\n\t\t// see http://www.cs.indiana.edu/pub/techreports/TR425.pdf\n\n\t\tconst normal = new Vector3();\n\n\t\tconst tangents = [];\n\t\tconst normals = [];\n\t\tconst binormals = [];\n\n\t\tconst vec = new Vector3();\n\t\tconst mat = new Matrix4();\n\n\t\t// compute the tangent vectors for each segment on the curve\n\n\t\tfor ( let i = 0; i <= segments; i ++ ) {\n\n\t\t\tconst u = i / segments;\n\n\t\t\ttangents[ i ] = this.getTangentAt( u, new Vector3() );\n\n\t\t}\n\n\t\t// select an initial normal vector perpendicular to the first tangent vector,\n\t\t// and in the direction of the minimum tangent xyz component\n\n\t\tnormals[ 0 ] = new Vector3();\n\t\tbinormals[ 0 ] = new Vector3();\n\t\tlet min = Number.MAX_VALUE;\n\t\tconst tx = Math.abs( tangents[ 0 ].x );\n\t\tconst ty = Math.abs( tangents[ 0 ].y );\n\t\tconst tz = Math.abs( tangents[ 0 ].z );\n\n\t\tif ( tx <= min ) {\n\n\t\t\tmin = tx;\n\t\t\tnormal.set( 1, 0, 0 );\n\n\t\t}\n\n\t\tif ( ty <= min ) {\n\n\t\t\tmin = ty;\n\t\t\tnormal.set( 0, 1, 0 );\n\n\t\t}\n\n\t\tif ( tz <= min ) {\n\n\t\t\tnormal.set( 0, 0, 1 );\n\n\t\t}\n\n\t\tvec.crossVectors( tangents[ 0 ], normal ).normalize();\n\n\t\tnormals[ 0 ].crossVectors( tangents[ 0 ], vec );\n\t\tbinormals[ 0 ].crossVectors( tangents[ 0 ], normals[ 0 ] );\n\n\n\t\t// compute the slowly-varying normal and binormal vectors for each segment on the curve\n\n\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\tnormals[ i ] = normals[ i - 1 ].clone();\n\n\t\t\tbinormals[ i ] = binormals[ i - 1 ].clone();\n\n\t\t\tvec.crossVectors( tangents[ i - 1 ], tangents[ i ] );\n\n\t\t\tif ( vec.length() > Number.EPSILON ) {\n\n\t\t\t\tvec.normalize();\n\n\t\t\t\tconst theta = Math.acos( clamp( tangents[ i - 1 ].dot( tangents[ i ] ), - 1, 1 ) ); // clamp for floating pt errors\n\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( vec, theta ) );\n\n\t\t\t}\n\n\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t}\n\n\t\t// if the curve is closed, postprocess the vectors so the first and last normal vectors are the same\n\n\t\tif ( closed === true ) {\n\n\t\t\tlet theta = Math.acos( clamp( normals[ 0 ].dot( normals[ segments ] ), - 1, 1 ) );\n\t\t\ttheta /= segments;\n\n\t\t\tif ( tangents[ 0 ].dot( vec.crossVectors( normals[ 0 ], normals[ segments ] ) ) > 0 ) {\n\n\t\t\t\ttheta = - theta;\n\n\t\t\t}\n\n\t\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\t\t// twist a little...\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( tangents[ i ], theta * i ) );\n\t\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn {\n\t\t\ttangents: tangents,\n\t\t\tnormals: normals,\n\t\t\tbinormals: binormals\n\t\t};\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.arcLengthDivisions = source.arcLengthDivisions;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.5,\n\t\t\t\ttype: 'Curve',\n\t\t\t\tgenerator: 'Curve.toJSON'\n\t\t\t}\n\t\t};\n\n\t\tdata.arcLengthDivisions = this.arcLengthDivisions;\n\t\tdata.type = this.type;\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tthis.arcLengthDivisions = json.arcLengthDivisions;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass EllipseCurve extends Curve {\n\n\tconstructor( aX = 0, aY = 0, xRadius = 1, yRadius = 1, aStartAngle = 0, aEndAngle = Math.PI * 2, aClockwise = false, aRotation = 0 ) {\n\n\t\tsuper();\n\n\t\tthis.isEllipseCurve = true;\n\n\t\tthis.type = 'EllipseCurve';\n\n\t\tthis.aX = aX;\n\t\tthis.aY = aY;\n\n\t\tthis.xRadius = xRadius;\n\t\tthis.yRadius = yRadius;\n\n\t\tthis.aStartAngle = aStartAngle;\n\t\tthis.aEndAngle = aEndAngle;\n\n\t\tthis.aClockwise = aClockwise;\n\n\t\tthis.aRotation = aRotation;\n\n\t}\n\n\tgetPoint( t, optionalTarget ) {\n\n\t\tconst point = optionalTarget || new Vector2();\n\n\t\tconst twoPi = Math.PI * 2;\n\t\tlet deltaAngle = this.aEndAngle - this.aStartAngle;\n\t\tconst samePoints = Math.abs( deltaAngle ) < Number.EPSILON;\n\n\t\t// ensures that deltaAngle is 0 .. 2 PI\n\t\twhile ( deltaAngle < 0 ) deltaAngle += twoPi;\n\t\twhile ( deltaAngle > twoPi ) deltaAngle -= twoPi;\n\n\t\tif ( deltaAngle < Number.EPSILON ) {\n\n\t\t\tif ( samePoints ) {\n\n\t\t\t\tdeltaAngle = 0;\n\n\t\t\t} else {\n\n\t\t\t\tdeltaAngle = twoPi;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.aClockwise === true && ! samePoints ) {\n\n\t\t\tif ( deltaAngle === twoPi ) {\n\n\t\t\t\tdeltaAngle = - twoPi;\n\n\t\t\t} else {\n\n\t\t\t\tdeltaAngle = deltaAngle - twoPi;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst angle = this.aStartAngle + t * deltaAngle;\n\t\tlet x = this.aX + this.xRadius * Math.cos( angle );\n\t\tlet y = this.aY + this.yRadius * Math.sin( angle );\n\n\t\tif ( this.aRotation !== 0 ) {\n\n\t\t\tconst cos = Math.cos( this.aRotation );\n\t\t\tconst sin = Math.sin( this.aRotation );\n\n\t\t\tconst tx = x - this.aX;\n\t\t\tconst ty = y - this.aY;\n\n\t\t\t// Rotate the point about the center of the ellipse.\n\t\t\tx = tx * cos - ty * sin + this.aX;\n\t\t\ty = tx * sin + ty * cos + this.aY;\n\n\t\t}\n\n\t\treturn point.set( x, y );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.aX = source.aX;\n\t\tthis.aY = source.aY;\n\n\t\tthis.xRadius = source.xRadius;\n\t\tthis.yRadius = source.yRadius;\n\n\t\tthis.aStartAngle = source.aStartAngle;\n\t\tthis.aEndAngle = source.aEndAngle;\n\n\t\tthis.aClockwise = source.aClockwise;\n\n\t\tthis.aRotation = source.aRotation;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.aX = this.aX;\n\t\tdata.aY = this.aY;\n\n\t\tdata.xRadius = this.xRadius;\n\t\tdata.yRadius = this.yRadius;\n\n\t\tdata.aStartAngle = this.aStartAngle;\n\t\tdata.aEndAngle = this.aEndAngle;\n\n\t\tdata.aClockwise = this.aClockwise;\n\n\t\tdata.aRotation = this.aRotation;\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.aX = json.aX;\n\t\tthis.aY = json.aY;\n\n\t\tthis.xRadius = json.xRadius;\n\t\tthis.yRadius = json.yRadius;\n\n\t\tthis.aStartAngle = json.aStartAngle;\n\t\tthis.aEndAngle = json.aEndAngle;\n\n\t\tthis.aClockwise = json.aClockwise;\n\n\t\tthis.aRotation = json.aRotation;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass ArcCurve extends EllipseCurve {\n\n\tconstructor( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tsuper( aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\t\tthis.isArcCurve = true;\n\n\t\tthis.type = 'ArcCurve';\n\n\t}\n\n}\n\n/**\n * Centripetal CatmullRom Curve - which is useful for avoiding\n * cusps and self-intersections in non-uniform catmull rom curves.\n * http://www.cemyuksel.com/research/catmullrom_param/catmullrom.pdf\n *\n * curve.type accepts centripetal(default), chordal and catmullrom\n * curve.tension is used for catmullrom which defaults to 0.5\n */\n\n\n/*\nBased on an optimized c++ solution in\n - http://stackoverflow.com/questions/9489736/catmull-rom-curve-with-no-cusps-and-no-self-intersections/\n - http://ideone.com/NoEbVM\n\nThis CubicPoly class could be used for reusing some variables and calculations,\nbut for three.js curve use, it could be possible inlined and flatten into a single function call\nwhich can be placed in CurveUtils.\n*/\n\nfunction CubicPoly() {\n\n\tlet c0 = 0, c1 = 0, c2 = 0, c3 = 0;\n\n\t/*\n\t * Compute coefficients for a cubic polynomial\n\t *   p(s) = c0 + c1*s + c2*s^2 + c3*s^3\n\t * such that\n\t *   p(0) = x0, p(1) = x1\n\t *  and\n\t *   p'(0) = t0, p'(1) = t1.\n\t */\n\tfunction init( x0, x1, t0, t1 ) {\n\n\t\tc0 = x0;\n\t\tc1 = t0;\n\t\tc2 = - 3 * x0 + 3 * x1 - 2 * t0 - t1;\n\t\tc3 = 2 * x0 - 2 * x1 + t0 + t1;\n\n\t}\n\n\treturn {\n\n\t\tinitCatmullRom: function ( x0, x1, x2, x3, tension ) {\n\n\t\t\tinit( x1, x2, tension * ( x2 - x0 ), tension * ( x3 - x1 ) );\n\n\t\t},\n\n\t\tinitNonuniformCatmullRom: function ( x0, x1, x2, x3, dt0, dt1, dt2 ) {\n\n\t\t\t// compute tangents when parameterized in [t1,t2]\n\t\t\tlet t1 = ( x1 - x0 ) / dt0 - ( x2 - x0 ) / ( dt0 + dt1 ) + ( x2 - x1 ) / dt1;\n\t\t\tlet t2 = ( x2 - x1 ) / dt1 - ( x3 - x1 ) / ( dt1 + dt2 ) + ( x3 - x2 ) / dt2;\n\n\t\t\t// rescale tangents for parametrization in [0,1]\n\t\t\tt1 *= dt1;\n\t\t\tt2 *= dt1;\n\n\t\t\tinit( x1, x2, t1, t2 );\n\n\t\t},\n\n\t\tcalc: function ( t ) {\n\n\t\t\tconst t2 = t * t;\n\t\t\tconst t3 = t2 * t;\n\t\t\treturn c0 + c1 * t + c2 * t2 + c3 * t3;\n\n\t\t}\n\n\t};\n\n}\n\n//\n\nconst tmp = /*@__PURE__*/ new Vector3();\nconst px = /*@__PURE__*/ new CubicPoly();\nconst py = /*@__PURE__*/ new CubicPoly();\nconst pz = /*@__PURE__*/ new CubicPoly();\n\nclass CatmullRomCurve3 extends Curve {\n\n\tconstructor( points = [], closed = false, curveType = 'centripetal', tension = 0.5 ) {\n\n\t\tsuper();\n\n\t\tthis.isCatmullRomCurve3 = true;\n\n\t\tthis.type = 'CatmullRomCurve3';\n\n\t\tthis.points = points;\n\t\tthis.closed = closed;\n\t\tthis.curveType = curveType;\n\t\tthis.tension = tension;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst points = this.points;\n\t\tconst l = points.length;\n\n\t\tconst p = ( l - ( this.closed ? 0 : 1 ) ) * t;\n\t\tlet intPoint = Math.floor( p );\n\t\tlet weight = p - intPoint;\n\n\t\tif ( this.closed ) {\n\n\t\t\tintPoint += intPoint > 0 ? 0 : ( Math.floor( Math.abs( intPoint ) / l ) + 1 ) * l;\n\n\t\t} else if ( weight === 0 && intPoint === l - 1 ) {\n\n\t\t\tintPoint = l - 2;\n\t\t\tweight = 1;\n\n\t\t}\n\n\t\tlet p0, p3; // 4 points (p1 & p2 defined below)\n\n\t\tif ( this.closed || intPoint > 0 ) {\n\n\t\t\tp0 = points[ ( intPoint - 1 ) % l ];\n\n\t\t} else {\n\n\t\t\t// extrapolate first point\n\t\t\ttmp.subVectors( points[ 0 ], points[ 1 ] ).add( points[ 0 ] );\n\t\t\tp0 = tmp;\n\n\t\t}\n\n\t\tconst p1 = points[ intPoint % l ];\n\t\tconst p2 = points[ ( intPoint + 1 ) % l ];\n\n\t\tif ( this.closed || intPoint + 2 < l ) {\n\n\t\t\tp3 = points[ ( intPoint + 2 ) % l ];\n\n\t\t} else {\n\n\t\t\t// extrapolate last point\n\t\t\ttmp.subVectors( points[ l - 1 ], points[ l - 2 ] ).add( points[ l - 1 ] );\n\t\t\tp3 = tmp;\n\n\t\t}\n\n\t\tif ( this.curveType === 'centripetal' || this.curveType === 'chordal' ) {\n\n\t\t\t// init Centripetal / Chordal Catmull-Rom\n\t\t\tconst pow = this.curveType === 'chordal' ? 0.5 : 0.25;\n\t\t\tlet dt0 = Math.pow( p0.distanceToSquared( p1 ), pow );\n\t\t\tlet dt1 = Math.pow( p1.distanceToSquared( p2 ), pow );\n\t\t\tlet dt2 = Math.pow( p2.distanceToSquared( p3 ), pow );\n\n\t\t\t// safety check for repeated points\n\t\t\tif ( dt1 < 1e-4 ) dt1 = 1.0;\n\t\t\tif ( dt0 < 1e-4 ) dt0 = dt1;\n\t\t\tif ( dt2 < 1e-4 ) dt2 = dt1;\n\n\t\t\tpx.initNonuniformCatmullRom( p0.x, p1.x, p2.x, p3.x, dt0, dt1, dt2 );\n\t\t\tpy.initNonuniformCatmullRom( p0.y, p1.y, p2.y, p3.y, dt0, dt1, dt2 );\n\t\t\tpz.initNonuniformCatmullRom( p0.z, p1.z, p2.z, p3.z, dt0, dt1, dt2 );\n\n\t\t} else if ( this.curveType === 'catmullrom' ) {\n\n\t\t\tpx.initCatmullRom( p0.x, p1.x, p2.x, p3.x, this.tension );\n\t\t\tpy.initCatmullRom( p0.y, p1.y, p2.y, p3.y, this.tension );\n\t\t\tpz.initCatmullRom( p0.z, p1.z, p2.z, p3.z, this.tension );\n\n\t\t}\n\n\t\tpoint.set(\n\t\t\tpx.calc( weight ),\n\t\t\tpy.calc( weight ),\n\t\t\tpz.calc( weight )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = source.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = source.points[ i ];\n\n\t\t\tthis.points.push( point.clone() );\n\n\t\t}\n\n\t\tthis.closed = source.closed;\n\t\tthis.curveType = source.curveType;\n\t\tthis.tension = source.tension;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.points = [];\n\n\t\tfor ( let i = 0, l = this.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = this.points[ i ];\n\t\t\tdata.points.push( point.toArray() );\n\n\t\t}\n\n\t\tdata.closed = this.closed;\n\t\tdata.curveType = this.curveType;\n\t\tdata.tension = this.tension;\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = json.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = json.points[ i ];\n\t\t\tthis.points.push( new Vector3().fromArray( point ) );\n\n\t\t}\n\n\t\tthis.closed = json.closed;\n\t\tthis.curveType = json.curveType;\n\t\tthis.tension = json.tension;\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * Bezier Curves formulas obtained from\n * https://en.wikipedia.org/wiki/B%C3%A9zier_curve\n */\n\nfunction CatmullRom( t, p0, p1, p2, p3 ) {\n\n\tconst v0 = ( p2 - p0 ) * 0.5;\n\tconst v1 = ( p3 - p1 ) * 0.5;\n\tconst t2 = t * t;\n\tconst t3 = t * t2;\n\treturn ( 2 * p1 - 2 * p2 + v0 + v1 ) * t3 + ( - 3 * p1 + 3 * p2 - 2 * v0 - v1 ) * t2 + v0 * t + p1;\n\n}\n\n//\n\nfunction QuadraticBezierP0( t, p ) {\n\n\tconst k = 1 - t;\n\treturn k * k * p;\n\n}\n\nfunction QuadraticBezierP1( t, p ) {\n\n\treturn 2 * ( 1 - t ) * t * p;\n\n}\n\nfunction QuadraticBezierP2( t, p ) {\n\n\treturn t * t * p;\n\n}\n\nfunction QuadraticBezier( t, p0, p1, p2 ) {\n\n\treturn QuadraticBezierP0( t, p0 ) + QuadraticBezierP1( t, p1 ) +\n\t\tQuadraticBezierP2( t, p2 );\n\n}\n\n//\n\nfunction CubicBezierP0( t, p ) {\n\n\tconst k = 1 - t;\n\treturn k * k * k * p;\n\n}\n\nfunction CubicBezierP1( t, p ) {\n\n\tconst k = 1 - t;\n\treturn 3 * k * k * t * p;\n\n}\n\nfunction CubicBezierP2( t, p ) {\n\n\treturn 3 * ( 1 - t ) * t * t * p;\n\n}\n\nfunction CubicBezierP3( t, p ) {\n\n\treturn t * t * t * p;\n\n}\n\nfunction CubicBezier( t, p0, p1, p2, p3 ) {\n\n\treturn CubicBezierP0( t, p0 ) + CubicBezierP1( t, p1 ) + CubicBezierP2( t, p2 ) +\n\t\tCubicBezierP3( t, p3 );\n\n}\n\nclass CubicBezierCurve extends Curve {\n\n\tconstructor( v0 = new Vector2(), v1 = new Vector2(), v2 = new Vector2(), v3 = new Vector2() ) {\n\n\t\tsuper();\n\n\t\tthis.isCubicBezierCurve = true;\n\n\t\tthis.type = 'CubicBezierCurve';\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\t\tthis.v3 = v3;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n\n\t\tpoint.set(\n\t\t\tCubicBezier( t, v0.x, v1.x, v2.x, v3.x ),\n\t\t\tCubicBezier( t, v0.y, v1.y, v2.y, v3.y )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\t\tthis.v3.copy( source.v3 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\t\tdata.v3 = this.v3.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\t\tthis.v3.fromArray( json.v3 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass CubicBezierCurve3 extends Curve {\n\n\tconstructor( v0 = new Vector3(), v1 = new Vector3(), v2 = new Vector3(), v3 = new Vector3() ) {\n\n\t\tsuper();\n\n\t\tthis.isCubicBezierCurve3 = true;\n\n\t\tthis.type = 'CubicBezierCurve3';\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\t\tthis.v3 = v3;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n\n\t\tpoint.set(\n\t\t\tCubicBezier( t, v0.x, v1.x, v2.x, v3.x ),\n\t\t\tCubicBezier( t, v0.y, v1.y, v2.y, v3.y ),\n\t\t\tCubicBezier( t, v0.z, v1.z, v2.z, v3.z )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\t\tthis.v3.copy( source.v3 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\t\tdata.v3 = this.v3.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\t\tthis.v3.fromArray( json.v3 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass LineCurve extends Curve {\n\n\tconstructor( v1 = new Vector2(), v2 = new Vector2() ) {\n\n\t\tsuper();\n\n\t\tthis.isLineCurve = true;\n\n\t\tthis.type = 'LineCurve';\n\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tif ( t === 1 ) {\n\n\t\t\tpoint.copy( this.v2 );\n\n\t\t} else {\n\n\t\t\tpoint.copy( this.v2 ).sub( this.v1 );\n\t\t\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\t\t}\n\n\t\treturn point;\n\n\t}\n\n\t// Line curve is linear, so we can overwrite default getPointAt\n\tgetPointAt( u, optionalTarget ) {\n\n\t\treturn this.getPoint( u, optionalTarget );\n\n\t}\n\n\tgetTangent( t, optionalTarget ) {\n\n\t\tconst tangent = optionalTarget || new Vector2();\n\n\t\ttangent.copy( this.v2 ).sub( this.v1 ).normalize();\n\n\t\treturn tangent;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass LineCurve3 extends Curve {\n\n\tconstructor( v1 = new Vector3(), v2 = new Vector3() ) {\n\n\t\tsuper();\n\n\t\tthis.isLineCurve3 = true;\n\n\t\tthis.type = 'LineCurve3';\n\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t}\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tif ( t === 1 ) {\n\n\t\t\tpoint.copy( this.v2 );\n\n\t\t} else {\n\n\t\t\tpoint.copy( this.v2 ).sub( this.v1 );\n\t\t\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\t\t}\n\n\t\treturn point;\n\n\t}\n\t// Line curve is linear, so we can overwrite default getPointAt\n\tgetPointAt( u, optionalTarget ) {\n\n\t\treturn this.getPoint( u, optionalTarget );\n\n\t}\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass QuadraticBezierCurve extends Curve {\n\n\tconstructor( v0 = new Vector2(), v1 = new Vector2(), v2 = new Vector2() ) {\n\n\t\tsuper();\n\n\t\tthis.isQuadraticBezierCurve = true;\n\n\t\tthis.type = 'QuadraticBezierCurve';\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2;\n\n\t\tpoint.set(\n\t\t\tQuadraticBezier( t, v0.x, v1.x, v2.x ),\n\t\t\tQuadraticBezier( t, v0.y, v1.y, v2.y )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass QuadraticBezierCurve3 extends Curve {\n\n\tconstructor( v0 = new Vector3(), v1 = new Vector3(), v2 = new Vector3() ) {\n\n\t\tsuper();\n\n\t\tthis.isQuadraticBezierCurve3 = true;\n\n\t\tthis.type = 'QuadraticBezierCurve3';\n\n\t\tthis.v0 = v0;\n\t\tthis.v1 = v1;\n\t\tthis.v2 = v2;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2;\n\n\t\tpoint.set(\n\t\t\tQuadraticBezier( t, v0.x, v1.x, v2.x ),\n\t\t\tQuadraticBezier( t, v0.y, v1.y, v2.y ),\n\t\t\tQuadraticBezier( t, v0.z, v1.z, v2.z )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass SplineCurve extends Curve {\n\n\tconstructor( points = [] ) {\n\n\t\tsuper();\n\n\t\tthis.isSplineCurve = true;\n\n\t\tthis.type = 'SplineCurve';\n\n\t\tthis.points = points;\n\n\t}\n\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst points = this.points;\n\t\tconst p = ( points.length - 1 ) * t;\n\n\t\tconst intPoint = Math.floor( p );\n\t\tconst weight = p - intPoint;\n\n\t\tconst p0 = points[ intPoint === 0 ? intPoint : intPoint - 1 ];\n\t\tconst p1 = points[ intPoint ];\n\t\tconst p2 = points[ intPoint > points.length - 2 ? points.length - 1 : intPoint + 1 ];\n\t\tconst p3 = points[ intPoint > points.length - 3 ? points.length - 1 : intPoint + 2 ];\n\n\t\tpoint.set(\n\t\t\tCatmullRom( weight, p0.x, p1.x, p2.x, p3.x ),\n\t\t\tCatmullRom( weight, p0.y, p1.y, p2.y, p3.y )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = source.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = source.points[ i ];\n\n\t\t\tthis.points.push( point.clone() );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.points = [];\n\n\t\tfor ( let i = 0, l = this.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = this.points[ i ];\n\t\t\tdata.points.push( point.toArray() );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = json.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = json.points[ i ];\n\t\t\tthis.points.push( new Vector2().fromArray( point ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nvar Curves = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tArcCurve: ArcCurve,\n\tCatmullRomCurve3: CatmullRomCurve3,\n\tCubicBezierCurve: CubicBezierCurve,\n\tCubicBezierCurve3: CubicBezierCurve3,\n\tEllipseCurve: EllipseCurve,\n\tLineCurve: LineCurve,\n\tLineCurve3: LineCurve3,\n\tQuadraticBezierCurve: QuadraticBezierCurve,\n\tQuadraticBezierCurve3: QuadraticBezierCurve3,\n\tSplineCurve: SplineCurve\n});\n\n/**************************************************************\n *\tCurved Path - a curve path is simply a array of connected\n *  curves, but retains the api of a curve\n **************************************************************/\n\nclass CurvePath extends Curve {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.type = 'CurvePath';\n\n\t\tthis.curves = [];\n\t\tthis.autoClose = false; // Automatically closes the path\n\n\t}\n\n\tadd( curve ) {\n\n\t\tthis.curves.push( curve );\n\n\t}\n\n\tclosePath() {\n\n\t\t// Add a line curve if start and end of lines are not connected\n\t\tconst startPoint = this.curves[ 0 ].getPoint( 0 );\n\t\tconst endPoint = this.curves[ this.curves.length - 1 ].getPoint( 1 );\n\n\t\tif ( ! startPoint.equals( endPoint ) ) {\n\n\t\t\tthis.curves.push( new LineCurve( endPoint, startPoint ) );\n\n\t\t}\n\n\t}\n\n\t// To get accurate point with reference to\n\t// entire path distance at time t,\n\t// following has to be done:\n\n\t// 1. Length of each sub path have to be known\n\t// 2. Locate and identify type of curve\n\t// 3. Get t for the curve\n\t// 4. Return curve.getPointAt(t')\n\n\tgetPoint( t, optionalTarget ) {\n\n\t\tconst d = t * this.getLength();\n\t\tconst curveLengths = this.getCurveLengths();\n\t\tlet i = 0;\n\n\t\t// To think about boundaries points.\n\n\t\twhile ( i < curveLengths.length ) {\n\n\t\t\tif ( curveLengths[ i ] >= d ) {\n\n\t\t\t\tconst diff = curveLengths[ i ] - d;\n\t\t\t\tconst curve = this.curves[ i ];\n\n\t\t\t\tconst segmentLength = curve.getLength();\n\t\t\t\tconst u = segmentLength === 0 ? 0 : 1 - diff / segmentLength;\n\n\t\t\t\treturn curve.getPointAt( u, optionalTarget );\n\n\t\t\t}\n\n\t\t\ti ++;\n\n\t\t}\n\n\t\treturn null;\n\n\t\t// loop where sum != 0, sum > d , sum+1 <d\n\n\t}\n\n\t// We cannot use the default THREE.Curve getPoint() with getLength() because in\n\t// THREE.Curve, getLength() depends on getPoint() but in THREE.CurvePath\n\t// getPoint() depends on getLength\n\n\tgetLength() {\n\n\t\tconst lens = this.getCurveLengths();\n\t\treturn lens[ lens.length - 1 ];\n\n\t}\n\n\t// cacheLengths must be recalculated.\n\tupdateArcLengths() {\n\n\t\tthis.needsUpdate = true;\n\t\tthis.cacheLengths = null;\n\t\tthis.getCurveLengths();\n\n\t}\n\n\t// Compute lengths and cache them\n\t// We cannot overwrite getLengths() because UtoT mapping uses it.\n\n\tgetCurveLengths() {\n\n\t\t// We use cache values if curves and cache array are same length\n\n\t\tif ( this.cacheLengths && this.cacheLengths.length === this.curves.length ) {\n\n\t\t\treturn this.cacheLengths;\n\n\t\t}\n\n\t\t// Get length of sub-curve\n\t\t// Push sums into cached array\n\n\t\tconst lengths = [];\n\t\tlet sums = 0;\n\n\t\tfor ( let i = 0, l = this.curves.length; i < l; i ++ ) {\n\n\t\t\tsums += this.curves[ i ].getLength();\n\t\t\tlengths.push( sums );\n\n\t\t}\n\n\t\tthis.cacheLengths = lengths;\n\n\t\treturn lengths;\n\n\t}\n\n\tgetSpacedPoints( divisions = 40 ) {\n\n\t\tconst points = [];\n\n\t\tfor ( let i = 0; i <= divisions; i ++ ) {\n\n\t\t\tpoints.push( this.getPoint( i / divisions ) );\n\n\t\t}\n\n\t\tif ( this.autoClose ) {\n\n\t\t\tpoints.push( points[ 0 ] );\n\n\t\t}\n\n\t\treturn points;\n\n\t}\n\n\tgetPoints( divisions = 12 ) {\n\n\t\tconst points = [];\n\t\tlet last;\n\n\t\tfor ( let i = 0, curves = this.curves; i < curves.length; i ++ ) {\n\n\t\t\tconst curve = curves[ i ];\n\t\t\tconst resolution = curve.isEllipseCurve ? divisions * 2\n\t\t\t\t: ( curve.isLineCurve || curve.isLineCurve3 ) ? 1\n\t\t\t\t\t: curve.isSplineCurve ? divisions * curve.points.length\n\t\t\t\t\t\t: divisions;\n\n\t\t\tconst pts = curve.getPoints( resolution );\n\n\t\t\tfor ( let j = 0; j < pts.length; j ++ ) {\n\n\t\t\t\tconst point = pts[ j ];\n\n\t\t\t\tif ( last && last.equals( point ) ) continue; // ensures no consecutive points are duplicates\n\n\t\t\t\tpoints.push( point );\n\t\t\t\tlast = point;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.autoClose && points.length > 1 && ! points[ points.length - 1 ].equals( points[ 0 ] ) ) {\n\n\t\t\tpoints.push( points[ 0 ] );\n\n\t\t}\n\n\t\treturn points;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.curves = [];\n\n\t\tfor ( let i = 0, l = source.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = source.curves[ i ];\n\n\t\t\tthis.curves.push( curve.clone() );\n\n\t\t}\n\n\t\tthis.autoClose = source.autoClose;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.autoClose = this.autoClose;\n\t\tdata.curves = [];\n\n\t\tfor ( let i = 0, l = this.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = this.curves[ i ];\n\t\t\tdata.curves.push( curve.toJSON() );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.autoClose = json.autoClose;\n\t\tthis.curves = [];\n\n\t\tfor ( let i = 0, l = json.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = json.curves[ i ];\n\t\t\tthis.curves.push( new Curves[ curve.type ]().fromJSON( curve ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass Path extends CurvePath {\n\n\tconstructor( points ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'Path';\n\n\t\tthis.currentPoint = new Vector2();\n\n\t\tif ( points ) {\n\n\t\t\tthis.setFromPoints( points );\n\n\t\t}\n\n\t}\n\n\tsetFromPoints( points ) {\n\n\t\tthis.moveTo( points[ 0 ].x, points[ 0 ].y );\n\n\t\tfor ( let i = 1, l = points.length; i < l; i ++ ) {\n\n\t\t\tthis.lineTo( points[ i ].x, points[ i ].y );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tmoveTo( x, y ) {\n\n\t\tthis.currentPoint.set( x, y ); // TODO consider referencing vectors instead of copying?\n\n\t\treturn this;\n\n\t}\n\n\tlineTo( x, y ) {\n\n\t\tconst curve = new LineCurve( this.currentPoint.clone(), new Vector2( x, y ) );\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( x, y );\n\n\t\treturn this;\n\n\t}\n\n\tquadraticCurveTo( aCPx, aCPy, aX, aY ) {\n\n\t\tconst curve = new QuadraticBezierCurve(\n\t\t\tthis.currentPoint.clone(),\n\t\t\tnew Vector2( aCPx, aCPy ),\n\t\t\tnew Vector2( aX, aY )\n\t\t);\n\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( aX, aY );\n\n\t\treturn this;\n\n\t}\n\n\tbezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\n\t\tconst curve = new CubicBezierCurve(\n\t\t\tthis.currentPoint.clone(),\n\t\t\tnew Vector2( aCP1x, aCP1y ),\n\t\t\tnew Vector2( aCP2x, aCP2y ),\n\t\t\tnew Vector2( aX, aY )\n\t\t);\n\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( aX, aY );\n\n\t\treturn this;\n\n\t}\n\n\tsplineThru( pts /*Array of Vector*/ ) {\n\n\t\tconst npts = [ this.currentPoint.clone() ].concat( pts );\n\n\t\tconst curve = new SplineCurve( npts );\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.copy( pts[ pts.length - 1 ] );\n\n\t\treturn this;\n\n\t}\n\n\tarc( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tconst x0 = this.currentPoint.x;\n\t\tconst y0 = this.currentPoint.y;\n\n\t\tthis.absarc( aX + x0, aY + y0, aRadius,\n\t\t\taStartAngle, aEndAngle, aClockwise );\n\n\t\treturn this;\n\n\t}\n\n\tabsarc( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tthis.absellipse( aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\t\treturn this;\n\n\t}\n\n\tellipse( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tconst x0 = this.currentPoint.x;\n\t\tconst y0 = this.currentPoint.y;\n\n\t\tthis.absellipse( aX + x0, aY + y0, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t\treturn this;\n\n\t}\n\n\tabsellipse( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tconst curve = new EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t\tif ( this.curves.length > 0 ) {\n\n\t\t\t// if a previous curve is present, attempt to join\n\t\t\tconst firstPoint = curve.getPoint( 0 );\n\n\t\t\tif ( ! firstPoint.equals( this.currentPoint ) ) {\n\n\t\t\t\tthis.lineTo( firstPoint.x, firstPoint.y );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.curves.push( curve );\n\n\t\tconst lastPoint = curve.getPoint( 1 );\n\t\tthis.currentPoint.copy( lastPoint );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.currentPoint.copy( source.currentPoint );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.currentPoint = this.currentPoint.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.currentPoint.fromArray( json.currentPoint );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass LatheGeometry extends BufferGeometry {\n\n\tconstructor( points = [ new Vector2( 0, - 0.5 ), new Vector2( 0.5, 0 ), new Vector2( 0, 0.5 ) ], segments = 12, phiStart = 0, phiLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'LatheGeometry';\n\n\t\tthis.parameters = {\n\t\t\tpoints: points,\n\t\t\tsegments: segments,\n\t\t\tphiStart: phiStart,\n\t\t\tphiLength: phiLength\n\t\t};\n\n\t\tsegments = Math.floor( segments );\n\n\t\t// clamp phiLength so it's in range of [ 0, 2PI ]\n\n\t\tphiLength = clamp( phiLength, 0, Math.PI * 2 );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst uvs = [];\n\t\tconst initNormals = [];\n\t\tconst normals = [];\n\n\t\t// helper variables\n\n\t\tconst inverseSegments = 1.0 / segments;\n\t\tconst vertex = new Vector3();\n\t\tconst uv = new Vector2();\n\t\tconst normal = new Vector3();\n\t\tconst curNormal = new Vector3();\n\t\tconst prevNormal = new Vector3();\n\t\tlet dx = 0;\n\t\tlet dy = 0;\n\n\t\t// pre-compute normals for initial \"meridian\"\n\n\t\tfor ( let j = 0; j <= ( points.length - 1 ); j ++ ) {\n\n\t\t\tswitch ( j ) {\n\n\t\t\t\tcase 0:\t\t\t\t// special handling for 1st vertex on path\n\n\t\t\t\t\tdx = points[ j + 1 ].x - points[ j ].x;\n\t\t\t\t\tdy = points[ j + 1 ].y - points[ j ].y;\n\n\t\t\t\t\tnormal.x = dy * 1.0;\n\t\t\t\t\tnormal.y = - dx;\n\t\t\t\t\tnormal.z = dy * 0.0;\n\n\t\t\t\t\tprevNormal.copy( normal );\n\n\t\t\t\t\tnormal.normalize();\n\n\t\t\t\t\tinitNormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ( points.length - 1 ):\t// special handling for last Vertex on path\n\n\t\t\t\t\tinitNormals.push( prevNormal.x, prevNormal.y, prevNormal.z );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\t\t\t// default handling for all vertices in between\n\n\t\t\t\t\tdx = points[ j + 1 ].x - points[ j ].x;\n\t\t\t\t\tdy = points[ j + 1 ].y - points[ j ].y;\n\n\t\t\t\t\tnormal.x = dy * 1.0;\n\t\t\t\t\tnormal.y = - dx;\n\t\t\t\t\tnormal.z = dy * 0.0;\n\n\t\t\t\t\tcurNormal.copy( normal );\n\n\t\t\t\t\tnormal.x += prevNormal.x;\n\t\t\t\t\tnormal.y += prevNormal.y;\n\t\t\t\t\tnormal.z += prevNormal.z;\n\n\t\t\t\t\tnormal.normalize();\n\n\t\t\t\t\tinitNormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t\tprevNormal.copy( curNormal );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate vertices, uvs and normals\n\n\t\tfor ( let i = 0; i <= segments; i ++ ) {\n\n\t\t\tconst phi = phiStart + i * inverseSegments * phiLength;\n\n\t\t\tconst sin = Math.sin( phi );\n\t\t\tconst cos = Math.cos( phi );\n\n\t\t\tfor ( let j = 0; j <= ( points.length - 1 ); j ++ ) {\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = points[ j ].x * sin;\n\t\t\t\tvertex.y = points[ j ].y;\n\t\t\t\tvertex.z = points[ j ].x * cos;\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuv.x = i / segments;\n\t\t\t\tuv.y = j / ( points.length - 1 );\n\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t\t// normal\n\n\t\t\t\tconst x = initNormals[ 3 * j + 0 ] * sin;\n\t\t\t\tconst y = initNormals[ 3 * j + 1 ];\n\t\t\t\tconst z = initNormals[ 3 * j + 0 ] * cos;\n\n\t\t\t\tnormals.push( x, y, z );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let i = 0; i < segments; i ++ ) {\n\n\t\t\tfor ( let j = 0; j < ( points.length - 1 ); j ++ ) {\n\n\t\t\t\tconst base = j + i * points.length;\n\n\t\t\t\tconst a = base;\n\t\t\t\tconst b = base + points.length;\n\t\t\t\tconst c = base + points.length + 1;\n\t\t\t\tconst d = base + 1;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( c, d, b );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new LatheGeometry( data.points, data.segments, data.phiStart, data.phiLength );\n\n\t}\n\n}\n\nclass CapsuleGeometry extends LatheGeometry {\n\n\tconstructor( radius = 1, length = 1, capSegments = 4, radialSegments = 8 ) {\n\n\t\tconst path = new Path();\n\t\tpath.absarc( 0, - length / 2, radius, Math.PI * 1.5, 0 );\n\t\tpath.absarc( 0, length / 2, radius, 0, Math.PI * 0.5 );\n\n\t\tsuper( path.getPoints( capSegments ), radialSegments );\n\n\t\tthis.type = 'CapsuleGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\theight: length,\n\t\t\tcapSegments: capSegments,\n\t\t\tradialSegments: radialSegments,\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new CapsuleGeometry( data.radius, data.length, data.capSegments, data.radialSegments );\n\n\t}\n\n}\n\nclass CircleGeometry extends BufferGeometry {\n\n\tconstructor( radius = 1, segments = 8, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'CircleGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tsegments: segments,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tsegments = Math.max( 3, segments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tconst vertex = new Vector3();\n\t\tconst uv = new Vector2();\n\n\t\t// center point\n\n\t\tvertices.push( 0, 0, 0 );\n\t\tnormals.push( 0, 0, 1 );\n\t\tuvs.push( 0.5, 0.5 );\n\n\t\tfor ( let s = 0, i = 3; s <= segments; s ++, i += 3 ) {\n\n\t\t\tconst segment = thetaStart + s / segments * thetaLength;\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = radius * Math.cos( segment );\n\t\t\tvertex.y = radius * Math.sin( segment );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t// uvs\n\n\t\t\tuv.x = ( vertices[ i ] / radius + 1 ) / 2;\n\t\t\tuv.y = ( vertices[ i + 1 ] / radius + 1 ) / 2;\n\n\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\tindices.push( i, i + 1, 0 );\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new CircleGeometry( data.radius, data.segments, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass CylinderGeometry extends BufferGeometry {\n\n\tconstructor( radiusTop = 1, radiusBottom = 1, height = 1, radialSegments = 8, heightSegments = 1, openEnded = false, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'CylinderGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradiusTop: radiusTop,\n\t\t\tradiusBottom: radiusBottom,\n\t\t\theight: height,\n\t\t\tradialSegments: radialSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\topenEnded: openEnded,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tconst scope = this;\n\n\t\tradialSegments = Math.floor( radialSegments );\n\t\theightSegments = Math.floor( heightSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tlet index = 0;\n\t\tconst indexArray = [];\n\t\tconst halfHeight = height / 2;\n\t\tlet groupStart = 0;\n\n\t\t// generate geometry\n\n\t\tgenerateTorso();\n\n\t\tif ( openEnded === false ) {\n\n\t\t\tif ( radiusTop > 0 ) generateCap( true );\n\t\t\tif ( radiusBottom > 0 ) generateCap( false );\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\tfunction generateTorso() {\n\n\t\t\tconst normal = new Vector3();\n\t\t\tconst vertex = new Vector3();\n\n\t\t\tlet groupCount = 0;\n\n\t\t\t// this will be used to calculate the normal\n\t\t\tconst slope = ( radiusBottom - radiusTop ) / height;\n\n\t\t\t// generate vertices, normals and uvs\n\n\t\t\tfor ( let y = 0; y <= heightSegments; y ++ ) {\n\n\t\t\t\tconst indexRow = [];\n\n\t\t\t\tconst v = y / heightSegments;\n\n\t\t\t\t// calculate the radius of the current row\n\n\t\t\t\tconst radius = v * ( radiusBottom - radiusTop ) + radiusTop;\n\n\t\t\t\tfor ( let x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\t\t\tconst u = x / radialSegments;\n\n\t\t\t\t\tconst theta = u * thetaLength + thetaStart;\n\n\t\t\t\t\tconst sinTheta = Math.sin( theta );\n\t\t\t\t\tconst cosTheta = Math.cos( theta );\n\n\t\t\t\t\t// vertex\n\n\t\t\t\t\tvertex.x = radius * sinTheta;\n\t\t\t\t\tvertex.y = - v * height + halfHeight;\n\t\t\t\t\tvertex.z = radius * cosTheta;\n\t\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t\t// normal\n\n\t\t\t\t\tnormal.set( sinTheta, slope, cosTheta ).normalize();\n\t\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t\t// uv\n\n\t\t\t\t\tuvs.push( u, 1 - v );\n\n\t\t\t\t\t// save index of vertex in respective row\n\n\t\t\t\t\tindexRow.push( index ++ );\n\n\t\t\t\t}\n\n\t\t\t\t// now save vertices of the row in our index array\n\n\t\t\t\tindexArray.push( indexRow );\n\n\t\t\t}\n\n\t\t\t// generate indices\n\n\t\t\tfor ( let x = 0; x < radialSegments; x ++ ) {\n\n\t\t\t\tfor ( let y = 0; y < heightSegments; y ++ ) {\n\n\t\t\t\t\t// we use the index array to access the correct indices\n\n\t\t\t\t\tconst a = indexArray[ y ][ x ];\n\t\t\t\t\tconst b = indexArray[ y + 1 ][ x ];\n\t\t\t\t\tconst c = indexArray[ y + 1 ][ x + 1 ];\n\t\t\t\t\tconst d = indexArray[ y ][ x + 1 ];\n\n\t\t\t\t\t// faces\n\n\t\t\t\t\tindices.push( a, b, d );\n\t\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t\t// update group counter\n\n\t\t\t\t\tgroupCount += 6;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\t\tscope.addGroup( groupStart, groupCount, 0 );\n\n\t\t\t// calculate new start value for groups\n\n\t\t\tgroupStart += groupCount;\n\n\t\t}\n\n\t\tfunction generateCap( top ) {\n\n\t\t\t// save the index of the first center vertex\n\t\t\tconst centerIndexStart = index;\n\n\t\t\tconst uv = new Vector2();\n\t\t\tconst vertex = new Vector3();\n\n\t\t\tlet groupCount = 0;\n\n\t\t\tconst radius = ( top === true ) ? radiusTop : radiusBottom;\n\t\t\tconst sign = ( top === true ) ? 1 : - 1;\n\n\t\t\t// first we generate the center vertex data of the cap.\n\t\t\t// because the geometry needs one set of uvs per face,\n\t\t\t// we must generate a center vertex per face/segment\n\n\t\t\tfor ( let x = 1; x <= radialSegments; x ++ ) {\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertices.push( 0, halfHeight * sign, 0 );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormals.push( 0, sign, 0 );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( 0.5, 0.5 );\n\n\t\t\t\t// increase index\n\n\t\t\t\tindex ++;\n\n\t\t\t}\n\n\t\t\t// save the index of the last center vertex\n\t\t\tconst centerIndexEnd = index;\n\n\t\t\t// now we generate the surrounding vertices, normals and uvs\n\n\t\t\tfor ( let x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\t\tconst u = x / radialSegments;\n\t\t\t\tconst theta = u * thetaLength + thetaStart;\n\n\t\t\t\tconst cosTheta = Math.cos( theta );\n\t\t\t\tconst sinTheta = Math.sin( theta );\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = radius * sinTheta;\n\t\t\t\tvertex.y = halfHeight * sign;\n\t\t\t\tvertex.z = radius * cosTheta;\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormals.push( 0, sign, 0 );\n\n\t\t\t\t// uv\n\n\t\t\t\tuv.x = ( cosTheta * 0.5 ) + 0.5;\n\t\t\t\tuv.y = ( sinTheta * 0.5 * sign ) + 0.5;\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t\t// increase index\n\n\t\t\t\tindex ++;\n\n\t\t\t}\n\n\t\t\t// generate indices\n\n\t\t\tfor ( let x = 0; x < radialSegments; x ++ ) {\n\n\t\t\t\tconst c = centerIndexStart + x;\n\t\t\t\tconst i = centerIndexEnd + x;\n\n\t\t\t\tif ( top === true ) {\n\n\t\t\t\t\t// face top\n\n\t\t\t\t\tindices.push( i, i + 1, c );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// face bottom\n\n\t\t\t\t\tindices.push( i + 1, i, c );\n\n\t\t\t\t}\n\n\t\t\t\tgroupCount += 3;\n\n\t\t\t}\n\n\t\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\t\tscope.addGroup( groupStart, groupCount, top === true ? 1 : 2 );\n\n\t\t\t// calculate new start value for groups\n\n\t\t\tgroupStart += groupCount;\n\n\t\t}\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new CylinderGeometry( data.radiusTop, data.radiusBottom, data.height, data.radialSegments, data.heightSegments, data.openEnded, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass ConeGeometry extends CylinderGeometry {\n\n\tconstructor( radius = 1, height = 1, radialSegments = 8, heightSegments = 1, openEnded = false, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper( 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength );\n\n\t\tthis.type = 'ConeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\theight: height,\n\t\t\tradialSegments: radialSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\topenEnded: openEnded,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new ConeGeometry( data.radius, data.height, data.radialSegments, data.heightSegments, data.openEnded, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass PolyhedronGeometry extends BufferGeometry {\n\n\tconstructor( vertices = [], indices = [], radius = 1, detail = 0 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'PolyhedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tvertices: vertices,\n\t\t\tindices: indices,\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t\t// default buffer data\n\n\t\tconst vertexBuffer = [];\n\t\tconst uvBuffer = [];\n\n\t\t// the subdivision creates the vertex buffer data\n\n\t\tsubdivide( detail );\n\n\t\t// all vertices should lie on a conceptual sphere with a given radius\n\n\t\tapplyRadius( radius );\n\n\t\t// finally, create the uv data\n\n\t\tgenerateUVs();\n\n\t\t// build non-indexed geometry\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertexBuffer, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( vertexBuffer.slice(), 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvBuffer, 2 ) );\n\n\t\tif ( detail === 0 ) {\n\n\t\t\tthis.computeVertexNormals(); // flat normals\n\n\t\t} else {\n\n\t\t\tthis.normalizeNormals(); // smooth normals\n\n\t\t}\n\n\t\t// helper functions\n\n\t\tfunction subdivide( detail ) {\n\n\t\t\tconst a = new Vector3();\n\t\t\tconst b = new Vector3();\n\t\t\tconst c = new Vector3();\n\n\t\t\t// iterate over all faces and apply a subdivison with the given detail value\n\n\t\t\tfor ( let i = 0; i < indices.length; i += 3 ) {\n\n\t\t\t\t// get the vertices of the face\n\n\t\t\t\tgetVertexByIndex( indices[ i + 0 ], a );\n\t\t\t\tgetVertexByIndex( indices[ i + 1 ], b );\n\t\t\t\tgetVertexByIndex( indices[ i + 2 ], c );\n\n\t\t\t\t// perform subdivision\n\n\t\t\t\tsubdivideFace( a, b, c, detail );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction subdivideFace( a, b, c, detail ) {\n\n\t\t\tconst cols = detail + 1;\n\n\t\t\t// we use this multidimensional array as a data structure for creating the subdivision\n\n\t\t\tconst v = [];\n\n\t\t\t// construct all of the vertices for this subdivision\n\n\t\t\tfor ( let i = 0; i <= cols; i ++ ) {\n\n\t\t\t\tv[ i ] = [];\n\n\t\t\t\tconst aj = a.clone().lerp( c, i / cols );\n\t\t\t\tconst bj = b.clone().lerp( c, i / cols );\n\n\t\t\t\tconst rows = cols - i;\n\n\t\t\t\tfor ( let j = 0; j <= rows; j ++ ) {\n\n\t\t\t\t\tif ( j === 0 && i === cols ) {\n\n\t\t\t\t\t\tv[ i ][ j ] = aj;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tv[ i ][ j ] = aj.clone().lerp( bj, j / rows );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// construct all of the faces\n\n\t\t\tfor ( let i = 0; i < cols; i ++ ) {\n\n\t\t\t\tfor ( let j = 0; j < 2 * ( cols - i ) - 1; j ++ ) {\n\n\t\t\t\t\tconst k = Math.floor( j / 2 );\n\n\t\t\t\t\tif ( j % 2 === 0 ) {\n\n\t\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\t\t\t\t\t\tpushVertex( v[ i ][ k ] );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\t\tpushVertex( v[ i + 1 ][ k + 1 ] );\n\t\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction applyRadius( radius ) {\n\n\t\t\tconst vertex = new Vector3();\n\n\t\t\t// iterate over the entire buffer and apply the radius to each vertex\n\n\t\t\tfor ( let i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\t\tvertex.normalize().multiplyScalar( radius );\n\n\t\t\t\tvertexBuffer[ i + 0 ] = vertex.x;\n\t\t\t\tvertexBuffer[ i + 1 ] = vertex.y;\n\t\t\t\tvertexBuffer[ i + 2 ] = vertex.z;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction generateUVs() {\n\n\t\t\tconst vertex = new Vector3();\n\n\t\t\tfor ( let i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\t\tconst u = azimuth( vertex ) / 2 / Math.PI + 0.5;\n\t\t\t\tconst v = inclination( vertex ) / Math.PI + 0.5;\n\t\t\t\tuvBuffer.push( u, 1 - v );\n\n\t\t\t}\n\n\t\t\tcorrectUVs();\n\n\t\t\tcorrectSeam();\n\n\t\t}\n\n\t\tfunction correctSeam() {\n\n\t\t\t// handle case when face straddles the seam, see #3269\n\n\t\t\tfor ( let i = 0; i < uvBuffer.length; i += 6 ) {\n\n\t\t\t\t// uv data of a single face\n\n\t\t\t\tconst x0 = uvBuffer[ i + 0 ];\n\t\t\t\tconst x1 = uvBuffer[ i + 2 ];\n\t\t\t\tconst x2 = uvBuffer[ i + 4 ];\n\n\t\t\t\tconst max = Math.max( x0, x1, x2 );\n\t\t\t\tconst min = Math.min( x0, x1, x2 );\n\n\t\t\t\t// 0.9 is somewhat arbitrary\n\n\t\t\t\tif ( max > 0.9 && min < 0.1 ) {\n\n\t\t\t\t\tif ( x0 < 0.2 ) uvBuffer[ i + 0 ] += 1;\n\t\t\t\t\tif ( x1 < 0.2 ) uvBuffer[ i + 2 ] += 1;\n\t\t\t\t\tif ( x2 < 0.2 ) uvBuffer[ i + 4 ] += 1;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction pushVertex( vertex ) {\n\n\t\t\tvertexBuffer.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t\tfunction getVertexByIndex( index, vertex ) {\n\n\t\t\tconst stride = index * 3;\n\n\t\t\tvertex.x = vertices[ stride + 0 ];\n\t\t\tvertex.y = vertices[ stride + 1 ];\n\t\t\tvertex.z = vertices[ stride + 2 ];\n\n\t\t}\n\n\t\tfunction correctUVs() {\n\n\t\t\tconst a = new Vector3();\n\t\t\tconst b = new Vector3();\n\t\t\tconst c = new Vector3();\n\n\t\t\tconst centroid = new Vector3();\n\n\t\t\tconst uvA = new Vector2();\n\t\t\tconst uvB = new Vector2();\n\t\t\tconst uvC = new Vector2();\n\n\t\t\tfor ( let i = 0, j = 0; i < vertexBuffer.length; i += 9, j += 6 ) {\n\n\t\t\t\ta.set( vertexBuffer[ i + 0 ], vertexBuffer[ i + 1 ], vertexBuffer[ i + 2 ] );\n\t\t\t\tb.set( vertexBuffer[ i + 3 ], vertexBuffer[ i + 4 ], vertexBuffer[ i + 5 ] );\n\t\t\t\tc.set( vertexBuffer[ i + 6 ], vertexBuffer[ i + 7 ], vertexBuffer[ i + 8 ] );\n\n\t\t\t\tuvA.set( uvBuffer[ j + 0 ], uvBuffer[ j + 1 ] );\n\t\t\t\tuvB.set( uvBuffer[ j + 2 ], uvBuffer[ j + 3 ] );\n\t\t\t\tuvC.set( uvBuffer[ j + 4 ], uvBuffer[ j + 5 ] );\n\n\t\t\t\tcentroid.copy( a ).add( b ).add( c ).divideScalar( 3 );\n\n\t\t\t\tconst azi = azimuth( centroid );\n\n\t\t\t\tcorrectUV( uvA, j + 0, a, azi );\n\t\t\t\tcorrectUV( uvB, j + 2, b, azi );\n\t\t\t\tcorrectUV( uvC, j + 4, c, azi );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction correctUV( uv, stride, vector, azimuth ) {\n\n\t\t\tif ( ( azimuth < 0 ) && ( uv.x === 1 ) ) {\n\n\t\t\t\tuvBuffer[ stride ] = uv.x - 1;\n\n\t\t\t}\n\n\t\t\tif ( ( vector.x === 0 ) && ( vector.z === 0 ) ) {\n\n\t\t\t\tuvBuffer[ stride ] = azimuth / 2 / Math.PI + 0.5;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Angle around the Y axis, counter-clockwise when looking from above.\n\n\t\tfunction azimuth( vector ) {\n\n\t\t\treturn Math.atan2( vector.z, - vector.x );\n\n\t\t}\n\n\n\t\t// Angle above the XZ plane.\n\n\t\tfunction inclination( vector ) {\n\n\t\t\treturn Math.atan2( - vector.y, Math.sqrt( ( vector.x * vector.x ) + ( vector.z * vector.z ) ) );\n\n\t\t}\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new PolyhedronGeometry( data.vertices, data.indices, data.radius, data.details );\n\n\t}\n\n}\n\nclass DodecahedronGeometry extends PolyhedronGeometry {\n\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\t\tconst r = 1 / t;\n\n\t\tconst vertices = [\n\n\t\t\t// (±1, ±1, ±1)\n\t\t\t- 1, - 1, - 1,\t- 1, - 1, 1,\n\t\t\t- 1, 1, - 1, - 1, 1, 1,\n\t\t\t1, - 1, - 1, 1, - 1, 1,\n\t\t\t1, 1, - 1, 1, 1, 1,\n\n\t\t\t// (0, ±1/φ, ±φ)\n\t\t\t0, - r, - t, 0, - r, t,\n\t\t\t0, r, - t, 0, r, t,\n\n\t\t\t// (±1/φ, ±φ, 0)\n\t\t\t- r, - t, 0, - r, t, 0,\n\t\t\tr, - t, 0, r, t, 0,\n\n\t\t\t// (±φ, 0, ±1/φ)\n\t\t\t- t, 0, - r, t, 0, - r,\n\t\t\t- t, 0, r, t, 0, r\n\t\t];\n\n\t\tconst indices = [\n\t\t\t3, 11, 7, \t3, 7, 15, \t3, 15, 13,\n\t\t\t7, 19, 17, \t7, 17, 6, \t7, 6, 15,\n\t\t\t17, 4, 8, \t17, 8, 10, \t17, 10, 6,\n\t\t\t8, 0, 16, \t8, 16, 2, \t8, 2, 10,\n\t\t\t0, 12, 1, \t0, 1, 18, \t0, 18, 16,\n\t\t\t6, 10, 2, \t6, 2, 13, \t6, 13, 15,\n\t\t\t2, 16, 18, \t2, 18, 3, \t2, 3, 13,\n\t\t\t18, 1, 9, \t18, 9, 11, \t18, 11, 3,\n\t\t\t4, 14, 12, \t4, 12, 0, \t4, 0, 8,\n\t\t\t11, 9, 5, \t11, 5, 19, \t11, 19, 7,\n\t\t\t19, 5, 14, \t19, 14, 4, \t19, 4, 17,\n\t\t\t1, 12, 14, \t1, 14, 5, \t1, 5, 9\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'DodecahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new DodecahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\nconst _v0 = /*@__PURE__*/ new Vector3();\nconst _v1$1 = /*@__PURE__*/ new Vector3();\nconst _normal = /*@__PURE__*/ new Vector3();\nconst _triangle = /*@__PURE__*/ new Triangle();\n\nclass EdgesGeometry extends BufferGeometry {\n\n\tconstructor( geometry = null, thresholdAngle = 1 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'EdgesGeometry';\n\n\t\tthis.parameters = {\n\t\t\tgeometry: geometry,\n\t\t\tthresholdAngle: thresholdAngle\n\t\t};\n\n\t\tif ( geometry !== null ) {\n\n\t\t\tconst precisionPoints = 4;\n\t\t\tconst precision = Math.pow( 10, precisionPoints );\n\t\t\tconst thresholdDot = Math.cos( DEG2RAD * thresholdAngle );\n\n\t\t\tconst indexAttr = geometry.getIndex();\n\t\t\tconst positionAttr = geometry.getAttribute( 'position' );\n\t\t\tconst indexCount = indexAttr ? indexAttr.count : positionAttr.count;\n\n\t\t\tconst indexArr = [ 0, 0, 0 ];\n\t\t\tconst vertKeys = [ 'a', 'b', 'c' ];\n\t\t\tconst hashes = new Array( 3 );\n\n\t\t\tconst edgeData = {};\n\t\t\tconst vertices = [];\n\t\t\tfor ( let i = 0; i < indexCount; i += 3 ) {\n\n\t\t\t\tif ( indexAttr ) {\n\n\t\t\t\t\tindexArr[ 0 ] = indexAttr.getX( i );\n\t\t\t\t\tindexArr[ 1 ] = indexAttr.getX( i + 1 );\n\t\t\t\t\tindexArr[ 2 ] = indexAttr.getX( i + 2 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tindexArr[ 0 ] = i;\n\t\t\t\t\tindexArr[ 1 ] = i + 1;\n\t\t\t\t\tindexArr[ 2 ] = i + 2;\n\n\t\t\t\t}\n\n\t\t\t\tconst { a, b, c } = _triangle;\n\t\t\t\ta.fromBufferAttribute( positionAttr, indexArr[ 0 ] );\n\t\t\t\tb.fromBufferAttribute( positionAttr, indexArr[ 1 ] );\n\t\t\t\tc.fromBufferAttribute( positionAttr, indexArr[ 2 ] );\n\t\t\t\t_triangle.getNormal( _normal );\n\n\t\t\t\t// create hashes for the edge from the vertices\n\t\t\t\thashes[ 0 ] = `${ Math.round( a.x * precision ) },${ Math.round( a.y * precision ) },${ Math.round( a.z * precision ) }`;\n\t\t\t\thashes[ 1 ] = `${ Math.round( b.x * precision ) },${ Math.round( b.y * precision ) },${ Math.round( b.z * precision ) }`;\n\t\t\t\thashes[ 2 ] = `${ Math.round( c.x * precision ) },${ Math.round( c.y * precision ) },${ Math.round( c.z * precision ) }`;\n\n\t\t\t\t// skip degenerate triangles\n\t\t\t\tif ( hashes[ 0 ] === hashes[ 1 ] || hashes[ 1 ] === hashes[ 2 ] || hashes[ 2 ] === hashes[ 0 ] ) {\n\n\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\t// iterate over every edge\n\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t// get the first and next vertex making up the edge\n\t\t\t\t\tconst jNext = ( j + 1 ) % 3;\n\t\t\t\t\tconst vecHash0 = hashes[ j ];\n\t\t\t\t\tconst vecHash1 = hashes[ jNext ];\n\t\t\t\t\tconst v0 = _triangle[ vertKeys[ j ] ];\n\t\t\t\t\tconst v1 = _triangle[ vertKeys[ jNext ] ];\n\n\t\t\t\t\tconst hash = `${ vecHash0 }_${ vecHash1 }`;\n\t\t\t\t\tconst reverseHash = `${ vecHash1 }_${ vecHash0 }`;\n\n\t\t\t\t\tif ( reverseHash in edgeData && edgeData[ reverseHash ] ) {\n\n\t\t\t\t\t\t// if we found a sibling edge add it into the vertex array if\n\t\t\t\t\t\t// it meets the angle threshold and delete the edge from the map.\n\t\t\t\t\t\tif ( _normal.dot( edgeData[ reverseHash ].normal ) <= thresholdDot ) {\n\n\t\t\t\t\t\t\tvertices.push( v0.x, v0.y, v0.z );\n\t\t\t\t\t\t\tvertices.push( v1.x, v1.y, v1.z );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tedgeData[ reverseHash ] = null;\n\n\t\t\t\t\t} else if ( ! ( hash in edgeData ) ) {\n\n\t\t\t\t\t\t// if we've already got an edge here then skip adding a new one\n\t\t\t\t\t\tedgeData[ hash ] = {\n\n\t\t\t\t\t\t\tindex0: indexArr[ j ],\n\t\t\t\t\t\t\tindex1: indexArr[ jNext ],\n\t\t\t\t\t\t\tnormal: _normal.clone(),\n\n\t\t\t\t\t\t};\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// iterate over all remaining, unmatched edges and add them to the vertex array\n\t\t\tfor ( const key in edgeData ) {\n\n\t\t\t\tif ( edgeData[ key ] ) {\n\n\t\t\t\t\tconst { index0, index1 } = edgeData[ key ];\n\t\t\t\t\t_v0.fromBufferAttribute( positionAttr, index0 );\n\t\t\t\t\t_v1$1.fromBufferAttribute( positionAttr, index1 );\n\n\t\t\t\t\tvertices.push( _v0.x, _v0.y, _v0.z );\n\t\t\t\t\tvertices.push( _v1$1.x, _v1$1.y, _v1$1.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\n\t\t}\n\n\t}\n\n}\n\nclass Shape extends Path {\n\n\tconstructor( points ) {\n\n\t\tsuper( points );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.type = 'Shape';\n\n\t\tthis.holes = [];\n\n\t}\n\n\tgetPointsHoles( divisions ) {\n\n\t\tconst holesPts = [];\n\n\t\tfor ( let i = 0, l = this.holes.length; i < l; i ++ ) {\n\n\t\t\tholesPts[ i ] = this.holes[ i ].getPoints( divisions );\n\n\t\t}\n\n\t\treturn holesPts;\n\n\t}\n\n\t// get points of shape and holes (keypoints based on segments parameter)\n\n\textractPoints( divisions ) {\n\n\t\treturn {\n\n\t\t\tshape: this.getPoints( divisions ),\n\t\t\tholes: this.getPointsHoles( divisions )\n\n\t\t};\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.holes = [];\n\n\t\tfor ( let i = 0, l = source.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = source.holes[ i ];\n\n\t\t\tthis.holes.push( hole.clone() );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.holes = [];\n\n\t\tfor ( let i = 0, l = this.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = this.holes[ i ];\n\t\t\tdata.holes.push( hole.toJSON() );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.uuid = json.uuid;\n\t\tthis.holes = [];\n\n\t\tfor ( let i = 0, l = json.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = json.holes[ i ];\n\t\t\tthis.holes.push( new Path().fromJSON( hole ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * Port from https://github.com/mapbox/earcut (v2.2.2)\n */\n\nconst Earcut = {\n\n\ttriangulate: function ( data, holeIndices, dim = 2 ) {\n\n\t\tconst hasHoles = holeIndices && holeIndices.length;\n\t\tconst outerLen = hasHoles ? holeIndices[ 0 ] * dim : data.length;\n\t\tlet outerNode = linkedList( data, 0, outerLen, dim, true );\n\t\tconst triangles = [];\n\n\t\tif ( ! outerNode || outerNode.next === outerNode.prev ) return triangles;\n\n\t\tlet minX, minY, maxX, maxY, x, y, invSize;\n\n\t\tif ( hasHoles ) outerNode = eliminateHoles( data, holeIndices, outerNode, dim );\n\n\t\t// if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n\t\tif ( data.length > 80 * dim ) {\n\n\t\t\tminX = maxX = data[ 0 ];\n\t\t\tminY = maxY = data[ 1 ];\n\n\t\t\tfor ( let i = dim; i < outerLen; i += dim ) {\n\n\t\t\t\tx = data[ i ];\n\t\t\t\ty = data[ i + 1 ];\n\t\t\t\tif ( x < minX ) minX = x;\n\t\t\t\tif ( y < minY ) minY = y;\n\t\t\t\tif ( x > maxX ) maxX = x;\n\t\t\t\tif ( y > maxY ) maxY = y;\n\n\t\t\t}\n\n\t\t\t// minX, minY and invSize are later used to transform coords into integers for z-order calculation\n\t\t\tinvSize = Math.max( maxX - minX, maxY - minY );\n\t\t\tinvSize = invSize !== 0 ? 1 / invSize : 0;\n\n\t\t}\n\n\t\tearcutLinked( outerNode, triangles, dim, minX, minY, invSize );\n\n\t\treturn triangles;\n\n\t}\n\n};\n\n// create a circular doubly linked list from polygon points in the specified winding order\nfunction linkedList( data, start, end, dim, clockwise ) {\n\n\tlet i, last;\n\n\tif ( clockwise === ( signedArea( data, start, end, dim ) > 0 ) ) {\n\n\t\tfor ( i = start; i < end; i += dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last );\n\n\t} else {\n\n\t\tfor ( i = end - dim; i >= start; i -= dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last );\n\n\t}\n\n\tif ( last && equals( last, last.next ) ) {\n\n\t\tremoveNode( last );\n\t\tlast = last.next;\n\n\t}\n\n\treturn last;\n\n}\n\n// eliminate colinear or duplicate points\nfunction filterPoints( start, end ) {\n\n\tif ( ! start ) return start;\n\tif ( ! end ) end = start;\n\n\tlet p = start,\n\t\tagain;\n\tdo {\n\n\t\tagain = false;\n\n\t\tif ( ! p.steiner && ( equals( p, p.next ) || area( p.prev, p, p.next ) === 0 ) ) {\n\n\t\t\tremoveNode( p );\n\t\t\tp = end = p.prev;\n\t\t\tif ( p === p.next ) break;\n\t\t\tagain = true;\n\n\t\t} else {\n\n\t\t\tp = p.next;\n\n\t\t}\n\n\t} while ( again || p !== end );\n\n\treturn end;\n\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\nfunction earcutLinked( ear, triangles, dim, minX, minY, invSize, pass ) {\n\n\tif ( ! ear ) return;\n\n\t// interlink polygon nodes in z-order\n\tif ( ! pass && invSize ) indexCurve( ear, minX, minY, invSize );\n\n\tlet stop = ear,\n\t\tprev, next;\n\n\t// iterate through ears, slicing them one by one\n\twhile ( ear.prev !== ear.next ) {\n\n\t\tprev = ear.prev;\n\t\tnext = ear.next;\n\n\t\tif ( invSize ? isEarHashed( ear, minX, minY, invSize ) : isEar( ear ) ) {\n\n\t\t\t// cut off the triangle\n\t\t\ttriangles.push( prev.i / dim );\n\t\t\ttriangles.push( ear.i / dim );\n\t\t\ttriangles.push( next.i / dim );\n\n\t\t\tremoveNode( ear );\n\n\t\t\t// skipping the next vertex leads to less sliver triangles\n\t\t\tear = next.next;\n\t\t\tstop = next.next;\n\n\t\t\tcontinue;\n\n\t\t}\n\n\t\tear = next;\n\n\t\t// if we looped through the whole remaining polygon and can't find any more ears\n\t\tif ( ear === stop ) {\n\n\t\t\t// try filtering points and slicing again\n\t\t\tif ( ! pass ) {\n\n\t\t\t\tearcutLinked( filterPoints( ear ), triangles, dim, minX, minY, invSize, 1 );\n\n\t\t\t\t// if this didn't work, try curing all small self-intersections locally\n\n\t\t\t} else if ( pass === 1 ) {\n\n\t\t\t\tear = cureLocalIntersections( filterPoints( ear ), triangles, dim );\n\t\t\t\tearcutLinked( ear, triangles, dim, minX, minY, invSize, 2 );\n\n\t\t\t\t// as a last resort, try splitting the remaining polygon into two\n\n\t\t\t} else if ( pass === 2 ) {\n\n\t\t\t\tsplitEarcut( ear, triangles, dim, minX, minY, invSize );\n\n\t\t\t}\n\n\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\nfunction isEar( ear ) {\n\n\tconst a = ear.prev,\n\t\tb = ear,\n\t\tc = ear.next;\n\n\tif ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear\n\n\t// now make sure we don't have other points inside the potential ear\n\tlet p = ear.next.next;\n\n\twhile ( p !== ear.prev ) {\n\n\t\tif ( pointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) &&\n\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.next;\n\n\t}\n\n\treturn true;\n\n}\n\nfunction isEarHashed( ear, minX, minY, invSize ) {\n\n\tconst a = ear.prev,\n\t\tb = ear,\n\t\tc = ear.next;\n\n\tif ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear\n\n\t// triangle bbox; min & max are calculated like this for speed\n\tconst minTX = a.x < b.x ? ( a.x < c.x ? a.x : c.x ) : ( b.x < c.x ? b.x : c.x ),\n\t\tminTY = a.y < b.y ? ( a.y < c.y ? a.y : c.y ) : ( b.y < c.y ? b.y : c.y ),\n\t\tmaxTX = a.x > b.x ? ( a.x > c.x ? a.x : c.x ) : ( b.x > c.x ? b.x : c.x ),\n\t\tmaxTY = a.y > b.y ? ( a.y > c.y ? a.y : c.y ) : ( b.y > c.y ? b.y : c.y );\n\n\t// z-order range for the current triangle bbox;\n\tconst minZ = zOrder( minTX, minTY, minX, minY, invSize ),\n\t\tmaxZ = zOrder( maxTX, maxTY, minX, minY, invSize );\n\n\tlet p = ear.prevZ,\n\t\tn = ear.nextZ;\n\n\t// look for points inside the triangle in both directions\n\twhile ( p && p.z >= minZ && n && n.z <= maxZ ) {\n\n\t\tif ( p !== ear.prev && p !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) &&\n\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.prevZ;\n\n\t\tif ( n !== ear.prev && n !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y ) &&\n\t\t\tarea( n.prev, n, n.next ) >= 0 ) return false;\n\t\tn = n.nextZ;\n\n\t}\n\n\t// look for remaining points in decreasing z-order\n\twhile ( p && p.z >= minZ ) {\n\n\t\tif ( p !== ear.prev && p !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) &&\n\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.prevZ;\n\n\t}\n\n\t// look for remaining points in increasing z-order\n\twhile ( n && n.z <= maxZ ) {\n\n\t\tif ( n !== ear.prev && n !== ear.next &&\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y ) &&\n\t\t\tarea( n.prev, n, n.next ) >= 0 ) return false;\n\t\tn = n.nextZ;\n\n\t}\n\n\treturn true;\n\n}\n\n// go through all polygon nodes and cure small local self-intersections\nfunction cureLocalIntersections( start, triangles, dim ) {\n\n\tlet p = start;\n\tdo {\n\n\t\tconst a = p.prev,\n\t\t\tb = p.next.next;\n\n\t\tif ( ! equals( a, b ) && intersects( a, p, p.next, b ) && locallyInside( a, b ) && locallyInside( b, a ) ) {\n\n\t\t\ttriangles.push( a.i / dim );\n\t\t\ttriangles.push( p.i / dim );\n\t\t\ttriangles.push( b.i / dim );\n\n\t\t\t// remove two nodes involved\n\t\t\tremoveNode( p );\n\t\t\tremoveNode( p.next );\n\n\t\t\tp = start = b;\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\treturn filterPoints( p );\n\n}\n\n// try splitting polygon into two and triangulate them independently\nfunction splitEarcut( start, triangles, dim, minX, minY, invSize ) {\n\n\t// look for a valid diagonal that divides the polygon into two\n\tlet a = start;\n\tdo {\n\n\t\tlet b = a.next.next;\n\t\twhile ( b !== a.prev ) {\n\n\t\t\tif ( a.i !== b.i && isValidDiagonal( a, b ) ) {\n\n\t\t\t\t// split the polygon in two by the diagonal\n\t\t\t\tlet c = splitPolygon( a, b );\n\n\t\t\t\t// filter colinear points around the cuts\n\t\t\t\ta = filterPoints( a, a.next );\n\t\t\t\tc = filterPoints( c, c.next );\n\n\t\t\t\t// run earcut on each half\n\t\t\t\tearcutLinked( a, triangles, dim, minX, minY, invSize );\n\t\t\t\tearcutLinked( c, triangles, dim, minX, minY, invSize );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tb = b.next;\n\n\t\t}\n\n\t\ta = a.next;\n\n\t} while ( a !== start );\n\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\nfunction eliminateHoles( data, holeIndices, outerNode, dim ) {\n\n\tconst queue = [];\n\tlet i, len, start, end, list;\n\n\tfor ( i = 0, len = holeIndices.length; i < len; i ++ ) {\n\n\t\tstart = holeIndices[ i ] * dim;\n\t\tend = i < len - 1 ? holeIndices[ i + 1 ] * dim : data.length;\n\t\tlist = linkedList( data, start, end, dim, false );\n\t\tif ( list === list.next ) list.steiner = true;\n\t\tqueue.push( getLeftmost( list ) );\n\n\t}\n\n\tqueue.sort( compareX );\n\n\t// process holes from left to right\n\tfor ( i = 0; i < queue.length; i ++ ) {\n\n\t\teliminateHole( queue[ i ], outerNode );\n\t\touterNode = filterPoints( outerNode, outerNode.next );\n\n\t}\n\n\treturn outerNode;\n\n}\n\nfunction compareX( a, b ) {\n\n\treturn a.x - b.x;\n\n}\n\n// find a bridge between vertices that connects hole with an outer ring and link it\nfunction eliminateHole( hole, outerNode ) {\n\n\touterNode = findHoleBridge( hole, outerNode );\n\tif ( outerNode ) {\n\n\t\tconst b = splitPolygon( outerNode, hole );\n\n\t\t// filter collinear points around the cuts\n\t\tfilterPoints( outerNode, outerNode.next );\n\t\tfilterPoints( b, b.next );\n\n\t}\n\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\nfunction findHoleBridge( hole, outerNode ) {\n\n\tlet p = outerNode;\n\tconst hx = hole.x;\n\tconst hy = hole.y;\n\tlet qx = - Infinity, m;\n\n\t// find a segment intersected by a ray from the hole's leftmost point to the left;\n\t// segment's endpoint with lesser x will be potential connection point\n\tdo {\n\n\t\tif ( hy <= p.y && hy >= p.next.y && p.next.y !== p.y ) {\n\n\t\t\tconst x = p.x + ( hy - p.y ) * ( p.next.x - p.x ) / ( p.next.y - p.y );\n\t\t\tif ( x <= hx && x > qx ) {\n\n\t\t\t\tqx = x;\n\t\t\t\tif ( x === hx ) {\n\n\t\t\t\t\tif ( hy === p.y ) return p;\n\t\t\t\t\tif ( hy === p.next.y ) return p.next;\n\n\t\t\t\t}\n\n\t\t\t\tm = p.x < p.next.x ? p : p.next;\n\n\t\t\t}\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== outerNode );\n\n\tif ( ! m ) return null;\n\n\tif ( hx === qx ) return m; // hole touches outer segment; pick leftmost endpoint\n\n\t// look for points inside the triangle of hole point, segment intersection and endpoint;\n\t// if there are no points found, we have a valid connection;\n\t// otherwise choose the point of the minimum angle with the ray as connection point\n\n\tconst stop = m,\n\t\tmx = m.x,\n\t\tmy = m.y;\n\tlet tanMin = Infinity, tan;\n\n\tp = m;\n\n\tdo {\n\n\t\tif ( hx >= p.x && p.x >= mx && hx !== p.x &&\n\t\t\t\tpointInTriangle( hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y ) ) {\n\n\t\t\ttan = Math.abs( hy - p.y ) / ( hx - p.x ); // tangential\n\n\t\t\tif ( locallyInside( p, hole ) && ( tan < tanMin || ( tan === tanMin && ( p.x > m.x || ( p.x === m.x && sectorContainsSector( m, p ) ) ) ) ) ) {\n\n\t\t\t\tm = p;\n\t\t\t\ttanMin = tan;\n\n\t\t\t}\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== stop );\n\n\treturn m;\n\n}\n\n// whether sector in vertex m contains sector in vertex p in the same coordinates\nfunction sectorContainsSector( m, p ) {\n\n\treturn area( m.prev, m, p.prev ) < 0 && area( p.next, m, m.next ) < 0;\n\n}\n\n// interlink polygon nodes in z-order\nfunction indexCurve( start, minX, minY, invSize ) {\n\n\tlet p = start;\n\tdo {\n\n\t\tif ( p.z === null ) p.z = zOrder( p.x, p.y, minX, minY, invSize );\n\t\tp.prevZ = p.prev;\n\t\tp.nextZ = p.next;\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\tp.prevZ.nextZ = null;\n\tp.prevZ = null;\n\n\tsortLinked( p );\n\n}\n\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\nfunction sortLinked( list ) {\n\n\tlet i, p, q, e, tail, numMerges, pSize, qSize,\n\t\tinSize = 1;\n\n\tdo {\n\n\t\tp = list;\n\t\tlist = null;\n\t\ttail = null;\n\t\tnumMerges = 0;\n\n\t\twhile ( p ) {\n\n\t\t\tnumMerges ++;\n\t\t\tq = p;\n\t\t\tpSize = 0;\n\t\t\tfor ( i = 0; i < inSize; i ++ ) {\n\n\t\t\t\tpSize ++;\n\t\t\t\tq = q.nextZ;\n\t\t\t\tif ( ! q ) break;\n\n\t\t\t}\n\n\t\t\tqSize = inSize;\n\n\t\t\twhile ( pSize > 0 || ( qSize > 0 && q ) ) {\n\n\t\t\t\tif ( pSize !== 0 && ( qSize === 0 || ! q || p.z <= q.z ) ) {\n\n\t\t\t\t\te = p;\n\t\t\t\t\tp = p.nextZ;\n\t\t\t\t\tpSize --;\n\n\t\t\t\t} else {\n\n\t\t\t\t\te = q;\n\t\t\t\t\tq = q.nextZ;\n\t\t\t\t\tqSize --;\n\n\t\t\t\t}\n\n\t\t\t\tif ( tail ) tail.nextZ = e;\n\t\t\t\telse list = e;\n\n\t\t\t\te.prevZ = tail;\n\t\t\t\ttail = e;\n\n\t\t\t}\n\n\t\t\tp = q;\n\n\t\t}\n\n\t\ttail.nextZ = null;\n\t\tinSize *= 2;\n\n\t} while ( numMerges > 1 );\n\n\treturn list;\n\n}\n\n// z-order of a point given coords and inverse of the longer side of data bbox\nfunction zOrder( x, y, minX, minY, invSize ) {\n\n\t// coords are transformed into non-negative 15-bit integer range\n\tx = 32767 * ( x - minX ) * invSize;\n\ty = 32767 * ( y - minY ) * invSize;\n\n\tx = ( x | ( x << 8 ) ) & 0x00FF00FF;\n\tx = ( x | ( x << 4 ) ) & 0x0F0F0F0F;\n\tx = ( x | ( x << 2 ) ) & 0x33333333;\n\tx = ( x | ( x << 1 ) ) & 0x55555555;\n\n\ty = ( y | ( y << 8 ) ) & 0x00FF00FF;\n\ty = ( y | ( y << 4 ) ) & 0x0F0F0F0F;\n\ty = ( y | ( y << 2 ) ) & 0x33333333;\n\ty = ( y | ( y << 1 ) ) & 0x55555555;\n\n\treturn x | ( y << 1 );\n\n}\n\n// find the leftmost node of a polygon ring\nfunction getLeftmost( start ) {\n\n\tlet p = start,\n\t\tleftmost = start;\n\tdo {\n\n\t\tif ( p.x < leftmost.x || ( p.x === leftmost.x && p.y < leftmost.y ) ) leftmost = p;\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\treturn leftmost;\n\n}\n\n// check if a point lies within a convex triangle\nfunction pointInTriangle( ax, ay, bx, by, cx, cy, px, py ) {\n\n\treturn ( cx - px ) * ( ay - py ) - ( ax - px ) * ( cy - py ) >= 0 &&\n\t\t\t( ax - px ) * ( by - py ) - ( bx - px ) * ( ay - py ) >= 0 &&\n\t\t\t( bx - px ) * ( cy - py ) - ( cx - px ) * ( by - py ) >= 0;\n\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\nfunction isValidDiagonal( a, b ) {\n\n\treturn a.next.i !== b.i && a.prev.i !== b.i && ! intersectsPolygon( a, b ) && // doesn't intersect other edges\n\t\t( locallyInside( a, b ) && locallyInside( b, a ) && middleInside( a, b ) && // locally visible\n\t\t( area( a.prev, a, b.prev ) || area( a, b.prev, b ) ) || // does not create opposite-facing sectors\n\t\tequals( a, b ) && area( a.prev, a, a.next ) > 0 && area( b.prev, b, b.next ) > 0 ); // special zero-length case\n\n}\n\n// signed area of a triangle\nfunction area( p, q, r ) {\n\n\treturn ( q.y - p.y ) * ( r.x - q.x ) - ( q.x - p.x ) * ( r.y - q.y );\n\n}\n\n// check if two points are equal\nfunction equals( p1, p2 ) {\n\n\treturn p1.x === p2.x && p1.y === p2.y;\n\n}\n\n// check if two segments intersect\nfunction intersects( p1, q1, p2, q2 ) {\n\n\tconst o1 = sign( area( p1, q1, p2 ) );\n\tconst o2 = sign( area( p1, q1, q2 ) );\n\tconst o3 = sign( area( p2, q2, p1 ) );\n\tconst o4 = sign( area( p2, q2, q1 ) );\n\n\tif ( o1 !== o2 && o3 !== o4 ) return true; // general case\n\n\tif ( o1 === 0 && onSegment( p1, p2, q1 ) ) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1\n\tif ( o2 === 0 && onSegment( p1, q2, q1 ) ) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1\n\tif ( o3 === 0 && onSegment( p2, p1, q2 ) ) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2\n\tif ( o4 === 0 && onSegment( p2, q1, q2 ) ) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2\n\n\treturn false;\n\n}\n\n// for collinear points p, q, r, check if point q lies on segment pr\nfunction onSegment( p, q, r ) {\n\n\treturn q.x <= Math.max( p.x, r.x ) && q.x >= Math.min( p.x, r.x ) && q.y <= Math.max( p.y, r.y ) && q.y >= Math.min( p.y, r.y );\n\n}\n\nfunction sign( num ) {\n\n\treturn num > 0 ? 1 : num < 0 ? - 1 : 0;\n\n}\n\n// check if a polygon diagonal intersects any polygon segments\nfunction intersectsPolygon( a, b ) {\n\n\tlet p = a;\n\tdo {\n\n\t\tif ( p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\n\t\t\t\tintersects( p, p.next, a, b ) ) return true;\n\t\tp = p.next;\n\n\t} while ( p !== a );\n\n\treturn false;\n\n}\n\n// check if a polygon diagonal is locally inside the polygon\nfunction locallyInside( a, b ) {\n\n\treturn area( a.prev, a, a.next ) < 0 ?\n\t\tarea( a, b, a.next ) >= 0 && area( a, a.prev, b ) >= 0 :\n\t\tarea( a, b, a.prev ) < 0 || area( a, a.next, b ) < 0;\n\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\nfunction middleInside( a, b ) {\n\n\tlet p = a,\n\t\tinside = false;\n\tconst px = ( a.x + b.x ) / 2,\n\t\tpy = ( a.y + b.y ) / 2;\n\tdo {\n\n\t\tif ( ( ( p.y > py ) !== ( p.next.y > py ) ) && p.next.y !== p.y &&\n\t\t\t\t( px < ( p.next.x - p.x ) * ( py - p.y ) / ( p.next.y - p.y ) + p.x ) )\n\t\t\tinside = ! inside;\n\t\tp = p.next;\n\n\t} while ( p !== a );\n\n\treturn inside;\n\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\nfunction splitPolygon( a, b ) {\n\n\tconst a2 = new Node( a.i, a.x, a.y ),\n\t\tb2 = new Node( b.i, b.x, b.y ),\n\t\tan = a.next,\n\t\tbp = b.prev;\n\n\ta.next = b;\n\tb.prev = a;\n\n\ta2.next = an;\n\tan.prev = a2;\n\n\tb2.next = a2;\n\ta2.prev = b2;\n\n\tbp.next = b2;\n\tb2.prev = bp;\n\n\treturn b2;\n\n}\n\n// create a node and optionally link it with previous one (in a circular doubly linked list)\nfunction insertNode( i, x, y, last ) {\n\n\tconst p = new Node( i, x, y );\n\n\tif ( ! last ) {\n\n\t\tp.prev = p;\n\t\tp.next = p;\n\n\t} else {\n\n\t\tp.next = last.next;\n\t\tp.prev = last;\n\t\tlast.next.prev = p;\n\t\tlast.next = p;\n\n\t}\n\n\treturn p;\n\n}\n\nfunction removeNode( p ) {\n\n\tp.next.prev = p.prev;\n\tp.prev.next = p.next;\n\n\tif ( p.prevZ ) p.prevZ.nextZ = p.nextZ;\n\tif ( p.nextZ ) p.nextZ.prevZ = p.prevZ;\n\n}\n\nfunction Node( i, x, y ) {\n\n\t// vertex index in coordinates array\n\tthis.i = i;\n\n\t// vertex coordinates\n\tthis.x = x;\n\tthis.y = y;\n\n\t// previous and next vertex nodes in a polygon ring\n\tthis.prev = null;\n\tthis.next = null;\n\n\t// z-order curve value\n\tthis.z = null;\n\n\t// previous and next nodes in z-order\n\tthis.prevZ = null;\n\tthis.nextZ = null;\n\n\t// indicates whether this is a steiner point\n\tthis.steiner = false;\n\n}\n\nfunction signedArea( data, start, end, dim ) {\n\n\tlet sum = 0;\n\tfor ( let i = start, j = end - dim; i < end; i += dim ) {\n\n\t\tsum += ( data[ j ] - data[ i ] ) * ( data[ i + 1 ] + data[ j + 1 ] );\n\t\tj = i;\n\n\t}\n\n\treturn sum;\n\n}\n\nclass ShapeUtils {\n\n\t// calculate area of the contour polygon\n\n\tstatic area( contour ) {\n\n\t\tconst n = contour.length;\n\t\tlet a = 0.0;\n\n\t\tfor ( let p = n - 1, q = 0; q < n; p = q ++ ) {\n\n\t\t\ta += contour[ p ].x * contour[ q ].y - contour[ q ].x * contour[ p ].y;\n\n\t\t}\n\n\t\treturn a * 0.5;\n\n\t}\n\n\tstatic isClockWise( pts ) {\n\n\t\treturn ShapeUtils.area( pts ) < 0;\n\n\t}\n\n\tstatic triangulateShape( contour, holes ) {\n\n\t\tconst vertices = []; // flat array of vertices like [ x0,y0, x1,y1, x2,y2, ... ]\n\t\tconst holeIndices = []; // array of hole indices\n\t\tconst faces = []; // final array of vertex indices like [ [ a,b,d ], [ b,c,d ] ]\n\n\t\tremoveDupEndPts( contour );\n\t\taddContour( vertices, contour );\n\n\t\t//\n\n\t\tlet holeIndex = contour.length;\n\n\t\tholes.forEach( removeDupEndPts );\n\n\t\tfor ( let i = 0; i < holes.length; i ++ ) {\n\n\t\t\tholeIndices.push( holeIndex );\n\t\t\tholeIndex += holes[ i ].length;\n\t\t\taddContour( vertices, holes[ i ] );\n\n\t\t}\n\n\t\t//\n\n\t\tconst triangles = Earcut.triangulate( vertices, holeIndices );\n\n\t\t//\n\n\t\tfor ( let i = 0; i < triangles.length; i += 3 ) {\n\n\t\t\tfaces.push( triangles.slice( i, i + 3 ) );\n\n\t\t}\n\n\t\treturn faces;\n\n\t}\n\n}\n\nfunction removeDupEndPts( points ) {\n\n\tconst l = points.length;\n\n\tif ( l > 2 && points[ l - 1 ].equals( points[ 0 ] ) ) {\n\n\t\tpoints.pop();\n\n\t}\n\n}\n\nfunction addContour( vertices, contour ) {\n\n\tfor ( let i = 0; i < contour.length; i ++ ) {\n\n\t\tvertices.push( contour[ i ].x );\n\t\tvertices.push( contour[ i ].y );\n\n\t}\n\n}\n\n/**\n * Creates extruded geometry from a path shape.\n *\n * parameters = {\n *\n *  curveSegments: <int>, // number of points on the curves\n *  steps: <int>, // number of points for z-side extrusions / used for subdividing segments of extrude spline too\n *  depth: <float>, // Depth to extrude the shape\n *\n *  bevelEnabled: <bool>, // turn on bevel\n *  bevelThickness: <float>, // how deep into the original shape bevel goes\n *  bevelSize: <float>, // how far from shape outline (including bevelOffset) is bevel\n *  bevelOffset: <float>, // how far from shape outline does bevel start\n *  bevelSegments: <int>, // number of bevel layers\n *\n *  extrudePath: <THREE.Curve> // curve to extrude shape along\n *\n *  UVGenerator: <Object> // object that provides UV generator functions\n *\n * }\n */\n\nclass ExtrudeGeometry extends BufferGeometry {\n\n\tconstructor( shapes = new Shape( [ new Vector2( 0.5, 0.5 ), new Vector2( - 0.5, 0.5 ), new Vector2( - 0.5, - 0.5 ), new Vector2( 0.5, - 0.5 ) ] ), options = {} ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'ExtrudeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tshapes: shapes,\n\t\t\toptions: options\n\t\t};\n\n\t\tshapes = Array.isArray( shapes ) ? shapes : [ shapes ];\n\n\t\tconst scope = this;\n\n\t\tconst verticesArray = [];\n\t\tconst uvArray = [];\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst shape = shapes[ i ];\n\t\t\taddShape( shape );\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( verticesArray, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvArray, 2 ) );\n\n\t\tthis.computeVertexNormals();\n\n\t\t// functions\n\n\t\tfunction addShape( shape ) {\n\n\t\t\tconst placeholder = [];\n\n\t\t\t// options\n\n\t\t\tconst curveSegments = options.curveSegments !== undefined ? options.curveSegments : 12;\n\t\t\tconst steps = options.steps !== undefined ? options.steps : 1;\n\t\t\tconst depth = options.depth !== undefined ? options.depth : 1;\n\n\t\t\tlet bevelEnabled = options.bevelEnabled !== undefined ? options.bevelEnabled : true;\n\t\t\tlet bevelThickness = options.bevelThickness !== undefined ? options.bevelThickness : 0.2;\n\t\t\tlet bevelSize = options.bevelSize !== undefined ? options.bevelSize : bevelThickness - 0.1;\n\t\t\tlet bevelOffset = options.bevelOffset !== undefined ? options.bevelOffset : 0;\n\t\t\tlet bevelSegments = options.bevelSegments !== undefined ? options.bevelSegments : 3;\n\n\t\t\tconst extrudePath = options.extrudePath;\n\n\t\t\tconst uvgen = options.UVGenerator !== undefined ? options.UVGenerator : WorldUVGenerator;\n\n\t\t\t//\n\n\t\t\tlet extrudePts, extrudeByPath = false;\n\t\t\tlet splineTube, binormal, normal, position2;\n\n\t\t\tif ( extrudePath ) {\n\n\t\t\t\textrudePts = extrudePath.getSpacedPoints( steps );\n\n\t\t\t\textrudeByPath = true;\n\t\t\t\tbevelEnabled = false; // bevels not supported for path extrusion\n\n\t\t\t\t// SETUP TNB variables\n\n\t\t\t\t// TODO1 - have a .isClosed in spline?\n\n\t\t\t\tsplineTube = extrudePath.computeFrenetFrames( steps, false );\n\n\t\t\t\t// console.log(splineTube, 'splineTube', splineTube.normals.length, 'steps', steps, 'extrudePts', extrudePts.length);\n\n\t\t\t\tbinormal = new Vector3();\n\t\t\t\tnormal = new Vector3();\n\t\t\t\tposition2 = new Vector3();\n\n\t\t\t}\n\n\t\t\t// Safeguards if bevels are not enabled\n\n\t\t\tif ( ! bevelEnabled ) {\n\n\t\t\t\tbevelSegments = 0;\n\t\t\t\tbevelThickness = 0;\n\t\t\t\tbevelSize = 0;\n\t\t\t\tbevelOffset = 0;\n\n\t\t\t}\n\n\t\t\t// Variables initialization\n\n\t\t\tconst shapePoints = shape.extractPoints( curveSegments );\n\n\t\t\tlet vertices = shapePoints.shape;\n\t\t\tconst holes = shapePoints.holes;\n\n\t\t\tconst reverse = ! ShapeUtils.isClockWise( vertices );\n\n\t\t\tif ( reverse ) {\n\n\t\t\t\tvertices = vertices.reverse();\n\n\t\t\t\t// Maybe we should also check if holes are in the opposite direction, just to be safe ...\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\n\t\t\t\t\tif ( ShapeUtils.isClockWise( ahole ) ) {\n\n\t\t\t\t\t\tholes[ h ] = ahole.reverse();\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\n\t\t\tconst faces = ShapeUtils.triangulateShape( vertices, holes );\n\n\t\t\t/* Vertices */\n\n\t\t\tconst contour = vertices; // vertices has all points but contour has only points of circumference\n\n\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tconst ahole = holes[ h ];\n\n\t\t\t\tvertices = vertices.concat( ahole );\n\n\t\t\t}\n\n\n\t\t\tfunction scalePt2( pt, vec, size ) {\n\n\t\t\t\tif ( ! vec ) console.error( 'THREE.ExtrudeGeometry: vec does not exist' );\n\n\t\t\t\treturn vec.clone().multiplyScalar( size ).add( pt );\n\n\t\t\t}\n\n\t\t\tconst vlen = vertices.length, flen = faces.length;\n\n\n\t\t\t// Find directions for point movement\n\n\n\t\t\tfunction getBevelVec( inPt, inPrev, inNext ) {\n\n\t\t\t\t// computes for inPt the corresponding point inPt' on a new contour\n\t\t\t\t//   shifted by 1 unit (length of normalized vector) to the left\n\t\t\t\t// if we walk along contour clockwise, this new contour is outside the old one\n\t\t\t\t//\n\t\t\t\t// inPt' is the intersection of the two lines parallel to the two\n\t\t\t\t//  adjacent edges of inPt at a distance of 1 unit on the left side.\n\n\t\t\t\tlet v_trans_x, v_trans_y, shrink_by; // resulting translation vector for inPt\n\n\t\t\t\t// good reading for geometry algorithms (here: line-line intersection)\n\t\t\t\t// http://geomalgorithms.com/a05-_intersect-1.html\n\n\t\t\t\tconst v_prev_x = inPt.x - inPrev.x,\n\t\t\t\t\tv_prev_y = inPt.y - inPrev.y;\n\t\t\t\tconst v_next_x = inNext.x - inPt.x,\n\t\t\t\t\tv_next_y = inNext.y - inPt.y;\n\n\t\t\t\tconst v_prev_lensq = ( v_prev_x * v_prev_x + v_prev_y * v_prev_y );\n\n\t\t\t\t// check for collinear edges\n\t\t\t\tconst collinear0 = ( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\t\tif ( Math.abs( collinear0 ) > Number.EPSILON ) {\n\n\t\t\t\t\t// not collinear\n\n\t\t\t\t\t// length of vectors for normalizing\n\n\t\t\t\t\tconst v_prev_len = Math.sqrt( v_prev_lensq );\n\t\t\t\t\tconst v_next_len = Math.sqrt( v_next_x * v_next_x + v_next_y * v_next_y );\n\n\t\t\t\t\t// shift adjacent points by unit vectors to the left\n\n\t\t\t\t\tconst ptPrevShift_x = ( inPrev.x - v_prev_y / v_prev_len );\n\t\t\t\t\tconst ptPrevShift_y = ( inPrev.y + v_prev_x / v_prev_len );\n\n\t\t\t\t\tconst ptNextShift_x = ( inNext.x - v_next_y / v_next_len );\n\t\t\t\t\tconst ptNextShift_y = ( inNext.y + v_next_x / v_next_len );\n\n\t\t\t\t\t// scaling factor for v_prev to intersection point\n\n\t\t\t\t\tconst sf = ( ( ptNextShift_x - ptPrevShift_x ) * v_next_y -\n\t\t\t\t\t\t\t( ptNextShift_y - ptPrevShift_y ) * v_next_x ) /\n\t\t\t\t\t\t( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\t\t\t// vector from inPt to intersection point\n\n\t\t\t\t\tv_trans_x = ( ptPrevShift_x + v_prev_x * sf - inPt.x );\n\t\t\t\t\tv_trans_y = ( ptPrevShift_y + v_prev_y * sf - inPt.y );\n\n\t\t\t\t\t// Don't normalize!, otherwise sharp corners become ugly\n\t\t\t\t\t//  but prevent crazy spikes\n\t\t\t\t\tconst v_trans_lensq = ( v_trans_x * v_trans_x + v_trans_y * v_trans_y );\n\t\t\t\t\tif ( v_trans_lensq <= 2 ) {\n\n\t\t\t\t\t\treturn new Vector2( v_trans_x, v_trans_y );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tshrink_by = Math.sqrt( v_trans_lensq / 2 );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// handle special case of collinear edges\n\n\t\t\t\t\tlet direction_eq = false; // assumes: opposite\n\n\t\t\t\t\tif ( v_prev_x > Number.EPSILON ) {\n\n\t\t\t\t\t\tif ( v_next_x > Number.EPSILON ) {\n\n\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( v_prev_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\t\tif ( v_next_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tif ( Math.sign( v_prev_y ) === Math.sign( v_next_y ) ) {\n\n\t\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( direction_eq ) {\n\n\t\t\t\t\t\t// console.log(\"Warning: lines are a straight sequence\");\n\t\t\t\t\t\tv_trans_x = - v_prev_y;\n\t\t\t\t\t\tv_trans_y = v_prev_x;\n\t\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// console.log(\"Warning: lines are a straight spike\");\n\t\t\t\t\t\tv_trans_x = v_prev_x;\n\t\t\t\t\t\tv_trans_y = v_prev_y;\n\t\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq / 2 );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\treturn new Vector2( v_trans_x / shrink_by, v_trans_y / shrink_by );\n\n\t\t\t}\n\n\n\t\t\tconst contourMovements = [];\n\n\t\t\tfor ( let i = 0, il = contour.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\t\t\tif ( j === il ) j = 0;\n\t\t\t\tif ( k === il ) k = 0;\n\n\t\t\t\t//  (j)---(i)---(k)\n\t\t\t\t// console.log('i,j,k', i, j , k)\n\n\t\t\t\tcontourMovements[ i ] = getBevelVec( contour[ i ], contour[ j ], contour[ k ] );\n\n\t\t\t}\n\n\t\t\tconst holesMovements = [];\n\t\t\tlet oneHoleMovements, verticesMovements = contourMovements.concat();\n\n\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tconst ahole = holes[ h ];\n\n\t\t\t\toneHoleMovements = [];\n\n\t\t\t\tfor ( let i = 0, il = ahole.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\t\t\t\tif ( j === il ) j = 0;\n\t\t\t\t\tif ( k === il ) k = 0;\n\n\t\t\t\t\t//  (j)---(i)---(k)\n\t\t\t\t\toneHoleMovements[ i ] = getBevelVec( ahole[ i ], ahole[ j ], ahole[ k ] );\n\n\t\t\t\t}\n\n\t\t\t\tholesMovements.push( oneHoleMovements );\n\t\t\t\tverticesMovements = verticesMovements.concat( oneHoleMovements );\n\n\t\t\t}\n\n\n\t\t\t// Loop bevelSegments, 1 for the front, 1 for the back\n\n\t\t\tfor ( let b = 0; b < bevelSegments; b ++ ) {\n\n\t\t\t\t//for ( b = bevelSegments; b > 0; b -- ) {\n\n\t\t\t\tconst t = b / bevelSegments;\n\t\t\t\tconst z = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\t\t\tconst bs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset;\n\n\t\t\t\t// contract shape\n\n\t\t\t\tfor ( let i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst vert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\n\t\t\t\t\tv( vert.x, vert.y, - z );\n\n\t\t\t\t}\n\n\t\t\t\t// expand holes\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\t\t\tfor ( let i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\t\t\tv( vert.x, vert.y, - z );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst bs = bevelSize + bevelOffset;\n\n\t\t\t// Back facing vertices\n\n\t\t\tfor ( let i = 0; i < vlen; i ++ ) {\n\n\t\t\t\tconst vert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\tv( vert.x, vert.y, 0 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// v( vert.x, vert.y + extrudePts[ 0 ].y, extrudePts[ 0 ].x );\n\n\t\t\t\t\tnormal.copy( splineTube.normals[ 0 ] ).multiplyScalar( vert.x );\n\t\t\t\t\tbinormal.copy( splineTube.binormals[ 0 ] ).multiplyScalar( vert.y );\n\n\t\t\t\t\tposition2.copy( extrudePts[ 0 ] ).add( normal ).add( binormal );\n\n\t\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Add stepped vertices...\n\t\t\t// Including front facing vertices\n\n\t\t\tfor ( let s = 1; s <= steps; s ++ ) {\n\n\t\t\t\tfor ( let i = 0; i < vlen; i ++ ) {\n\n\t\t\t\t\tconst vert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\t\tv( vert.x, vert.y, depth / steps * s );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// v( vert.x, vert.y + extrudePts[ s - 1 ].y, extrudePts[ s - 1 ].x );\n\n\t\t\t\t\t\tnormal.copy( splineTube.normals[ s ] ).multiplyScalar( vert.x );\n\t\t\t\t\t\tbinormal.copy( splineTube.binormals[ s ] ).multiplyScalar( vert.y );\n\n\t\t\t\t\t\tposition2.copy( extrudePts[ s ] ).add( normal ).add( binormal );\n\n\t\t\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\n\t\t\t// Add bevel segments planes\n\n\t\t\t//for ( b = 1; b <= bevelSegments; b ++ ) {\n\t\t\tfor ( let b = bevelSegments - 1; b >= 0; b -- ) {\n\n\t\t\t\tconst t = b / bevelSegments;\n\t\t\t\tconst z = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\t\t\tconst bs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset;\n\n\t\t\t\t// contract shape\n\n\t\t\t\tfor ( let i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst vert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\t\t\t\t\tv( vert.x, vert.y, depth + z );\n\n\t\t\t\t}\n\n\t\t\t\t// expand holes\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\t\t\tfor ( let i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\t\t\tv( vert.x, vert.y, depth + z );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tv( vert.x, vert.y + extrudePts[ steps - 1 ].y, extrudePts[ steps - 1 ].x + z );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t/* Faces */\n\n\t\t\t// Top and bottom faces\n\n\t\t\tbuildLidFaces();\n\n\t\t\t// Sides faces\n\n\t\t\tbuildSideFaces();\n\n\n\t\t\t/////  Internal functions\n\n\t\t\tfunction buildLidFaces() {\n\n\t\t\t\tconst start = verticesArray.length / 3;\n\n\t\t\t\tif ( bevelEnabled ) {\n\n\t\t\t\t\tlet layer = 0; // steps + 1\n\t\t\t\t\tlet offset = vlen * layer;\n\n\t\t\t\t\t// Bottom faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 2 ] + offset, face[ 1 ] + offset, face[ 0 ] + offset );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tlayer = steps + bevelSegments * 2;\n\t\t\t\t\toffset = vlen * layer;\n\n\t\t\t\t\t// Top faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 0 ] + offset, face[ 1 ] + offset, face[ 2 ] + offset );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// Bottom faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 2 ], face[ 1 ], face[ 0 ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// Top faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 0 ] + vlen * steps, face[ 1 ] + vlen * steps, face[ 2 ] + vlen * steps );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tscope.addGroup( start, verticesArray.length / 3 - start, 0 );\n\n\t\t\t}\n\n\t\t\t// Create faces for the z-sides of the shape\n\n\t\t\tfunction buildSideFaces() {\n\n\t\t\t\tconst start = verticesArray.length / 3;\n\t\t\t\tlet layeroffset = 0;\n\t\t\t\tsidewalls( contour, layeroffset );\n\t\t\t\tlayeroffset += contour.length;\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\t\tsidewalls( ahole, layeroffset );\n\n\t\t\t\t\t//, true\n\t\t\t\t\tlayeroffset += ahole.length;\n\n\t\t\t\t}\n\n\n\t\t\t\tscope.addGroup( start, verticesArray.length / 3 - start, 1 );\n\n\n\t\t\t}\n\n\t\t\tfunction sidewalls( contour, layeroffset ) {\n\n\t\t\t\tlet i = contour.length;\n\n\t\t\t\twhile ( -- i >= 0 ) {\n\n\t\t\t\t\tconst j = i;\n\t\t\t\t\tlet k = i - 1;\n\t\t\t\t\tif ( k < 0 ) k = contour.length - 1;\n\n\t\t\t\t\t//console.log('b', i,j, i-1, k,vertices.length);\n\n\t\t\t\t\tfor ( let s = 0, sl = ( steps + bevelSegments * 2 ); s < sl; s ++ ) {\n\n\t\t\t\t\t\tconst slen1 = vlen * s;\n\t\t\t\t\t\tconst slen2 = vlen * ( s + 1 );\n\n\t\t\t\t\t\tconst a = layeroffset + j + slen1,\n\t\t\t\t\t\t\tb = layeroffset + k + slen1,\n\t\t\t\t\t\t\tc = layeroffset + k + slen2,\n\t\t\t\t\t\t\td = layeroffset + j + slen2;\n\n\t\t\t\t\t\tf4( a, b, c, d );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tfunction v( x, y, z ) {\n\n\t\t\t\tplaceholder.push( x );\n\t\t\t\tplaceholder.push( y );\n\t\t\t\tplaceholder.push( z );\n\n\t\t\t}\n\n\n\t\t\tfunction f3( a, b, c ) {\n\n\t\t\t\taddVertex( a );\n\t\t\t\taddVertex( b );\n\t\t\t\taddVertex( c );\n\n\t\t\t\tconst nextIndex = verticesArray.length / 3;\n\t\t\t\tconst uvs = uvgen.generateTopUV( scope, verticesArray, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\n\n\t\t\t\taddUV( uvs[ 0 ] );\n\t\t\t\taddUV( uvs[ 1 ] );\n\t\t\t\taddUV( uvs[ 2 ] );\n\n\t\t\t}\n\n\t\t\tfunction f4( a, b, c, d ) {\n\n\t\t\t\taddVertex( a );\n\t\t\t\taddVertex( b );\n\t\t\t\taddVertex( d );\n\n\t\t\t\taddVertex( b );\n\t\t\t\taddVertex( c );\n\t\t\t\taddVertex( d );\n\n\n\t\t\t\tconst nextIndex = verticesArray.length / 3;\n\t\t\t\tconst uvs = uvgen.generateSideWallUV( scope, verticesArray, nextIndex - 6, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\n\n\t\t\t\taddUV( uvs[ 0 ] );\n\t\t\t\taddUV( uvs[ 1 ] );\n\t\t\t\taddUV( uvs[ 3 ] );\n\n\t\t\t\taddUV( uvs[ 1 ] );\n\t\t\t\taddUV( uvs[ 2 ] );\n\t\t\t\taddUV( uvs[ 3 ] );\n\n\t\t\t}\n\n\t\t\tfunction addVertex( index ) {\n\n\t\t\t\tverticesArray.push( placeholder[ index * 3 + 0 ] );\n\t\t\t\tverticesArray.push( placeholder[ index * 3 + 1 ] );\n\t\t\t\tverticesArray.push( placeholder[ index * 3 + 2 ] );\n\n\t\t\t}\n\n\n\t\t\tfunction addUV( vector2 ) {\n\n\t\t\t\tuvArray.push( vector2.x );\n\t\t\t\tuvArray.push( vector2.y );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tconst shapes = this.parameters.shapes;\n\t\tconst options = this.parameters.options;\n\n\t\treturn toJSON$1( shapes, options, data );\n\n\t}\n\n\tstatic fromJSON( data, shapes ) {\n\n\t\tconst geometryShapes = [];\n\n\t\tfor ( let j = 0, jl = data.shapes.length; j < jl; j ++ ) {\n\n\t\t\tconst shape = shapes[ data.shapes[ j ] ];\n\n\t\t\tgeometryShapes.push( shape );\n\n\t\t}\n\n\t\tconst extrudePath = data.options.extrudePath;\n\n\t\tif ( extrudePath !== undefined ) {\n\n\t\t\tdata.options.extrudePath = new Curves[ extrudePath.type ]().fromJSON( extrudePath );\n\n\t\t}\n\n\t\treturn new ExtrudeGeometry( geometryShapes, data.options );\n\n\t}\n\n}\n\nconst WorldUVGenerator = {\n\n\tgenerateTopUV: function ( geometry, vertices, indexA, indexB, indexC ) {\n\n\t\tconst a_x = vertices[ indexA * 3 ];\n\t\tconst a_y = vertices[ indexA * 3 + 1 ];\n\t\tconst b_x = vertices[ indexB * 3 ];\n\t\tconst b_y = vertices[ indexB * 3 + 1 ];\n\t\tconst c_x = vertices[ indexC * 3 ];\n\t\tconst c_y = vertices[ indexC * 3 + 1 ];\n\n\t\treturn [\n\t\t\tnew Vector2( a_x, a_y ),\n\t\t\tnew Vector2( b_x, b_y ),\n\t\t\tnew Vector2( c_x, c_y )\n\t\t];\n\n\t},\n\n\tgenerateSideWallUV: function ( geometry, vertices, indexA, indexB, indexC, indexD ) {\n\n\t\tconst a_x = vertices[ indexA * 3 ];\n\t\tconst a_y = vertices[ indexA * 3 + 1 ];\n\t\tconst a_z = vertices[ indexA * 3 + 2 ];\n\t\tconst b_x = vertices[ indexB * 3 ];\n\t\tconst b_y = vertices[ indexB * 3 + 1 ];\n\t\tconst b_z = vertices[ indexB * 3 + 2 ];\n\t\tconst c_x = vertices[ indexC * 3 ];\n\t\tconst c_y = vertices[ indexC * 3 + 1 ];\n\t\tconst c_z = vertices[ indexC * 3 + 2 ];\n\t\tconst d_x = vertices[ indexD * 3 ];\n\t\tconst d_y = vertices[ indexD * 3 + 1 ];\n\t\tconst d_z = vertices[ indexD * 3 + 2 ];\n\n\t\tif ( Math.abs( a_y - b_y ) < Math.abs( a_x - b_x ) ) {\n\n\t\t\treturn [\n\t\t\t\tnew Vector2( a_x, 1 - a_z ),\n\t\t\t\tnew Vector2( b_x, 1 - b_z ),\n\t\t\t\tnew Vector2( c_x, 1 - c_z ),\n\t\t\t\tnew Vector2( d_x, 1 - d_z )\n\t\t\t];\n\n\t\t} else {\n\n\t\t\treturn [\n\t\t\t\tnew Vector2( a_y, 1 - a_z ),\n\t\t\t\tnew Vector2( b_y, 1 - b_z ),\n\t\t\t\tnew Vector2( c_y, 1 - c_z ),\n\t\t\t\tnew Vector2( d_y, 1 - d_z )\n\t\t\t];\n\n\t\t}\n\n\t}\n\n};\n\nfunction toJSON$1( shapes, options, data ) {\n\n\tdata.shapes = [];\n\n\tif ( Array.isArray( shapes ) ) {\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst shape = shapes[ i ];\n\n\t\t\tdata.shapes.push( shape.uuid );\n\n\t\t}\n\n\t} else {\n\n\t\tdata.shapes.push( shapes.uuid );\n\n\t}\n\n\tdata.options = Object.assign( {}, options );\n\n\tif ( options.extrudePath !== undefined ) data.options.extrudePath = options.extrudePath.toJSON();\n\n\treturn data;\n\n}\n\nclass IcosahedronGeometry extends PolyhedronGeometry {\n\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\n\t\tconst vertices = [\n\t\t\t- 1, t, 0, \t1, t, 0, \t- 1, - t, 0, \t1, - t, 0,\n\t\t\t0, - 1, t, \t0, 1, t,\t0, - 1, - t, \t0, 1, - t,\n\t\t\tt, 0, - 1, \tt, 0, 1, \t- t, 0, - 1, \t- t, 0, 1\n\t\t];\n\n\t\tconst indices = [\n\t\t\t0, 11, 5, \t0, 5, 1, \t0, 1, 7, \t0, 7, 10, \t0, 10, 11,\n\t\t\t1, 5, 9, \t5, 11, 4,\t11, 10, 2,\t10, 7, 6,\t7, 1, 8,\n\t\t\t3, 9, 4, \t3, 4, 2,\t3, 2, 6,\t3, 6, 8,\t3, 8, 9,\n\t\t\t4, 9, 5, \t2, 4, 11,\t6, 2, 10,\t8, 6, 7,\t9, 8, 1\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'IcosahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new IcosahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\nclass OctahedronGeometry extends PolyhedronGeometry {\n\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst vertices = [\n\t\t\t1, 0, 0, \t- 1, 0, 0,\t0, 1, 0,\n\t\t\t0, - 1, 0, \t0, 0, 1,\t0, 0, - 1\n\t\t];\n\n\t\tconst indices = [\n\t\t\t0, 2, 4,\t0, 4, 3,\t0, 3, 5,\n\t\t\t0, 5, 2,\t1, 2, 5,\t1, 5, 3,\n\t\t\t1, 3, 4,\t1, 4, 2\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'OctahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new OctahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\nclass RingGeometry extends BufferGeometry {\n\n\tconstructor( innerRadius = 0.5, outerRadius = 1, thetaSegments = 8, phiSegments = 1, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'RingGeometry';\n\n\t\tthis.parameters = {\n\t\t\tinnerRadius: innerRadius,\n\t\t\touterRadius: outerRadius,\n\t\t\tthetaSegments: thetaSegments,\n\t\t\tphiSegments: phiSegments,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tthetaSegments = Math.max( 3, thetaSegments );\n\t\tphiSegments = Math.max( 1, phiSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// some helper variables\n\n\t\tlet radius = innerRadius;\n\t\tconst radiusStep = ( ( outerRadius - innerRadius ) / phiSegments );\n\t\tconst vertex = new Vector3();\n\t\tconst uv = new Vector2();\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let j = 0; j <= phiSegments; j ++ ) {\n\n\t\t\tfor ( let i = 0; i <= thetaSegments; i ++ ) {\n\n\t\t\t\t// values are generate from the inside of the ring to the outside\n\n\t\t\t\tconst segment = thetaStart + i / thetaSegments * thetaLength;\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = radius * Math.cos( segment );\n\t\t\t\tvertex.y = radius * Math.sin( segment );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t\t// uv\n\n\t\t\t\tuv.x = ( vertex.x / outerRadius + 1 ) / 2;\n\t\t\t\tuv.y = ( vertex.y / outerRadius + 1 ) / 2;\n\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t}\n\n\t\t\t// increase the radius for next row of vertices\n\n\t\t\tradius += radiusStep;\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let j = 0; j < phiSegments; j ++ ) {\n\n\t\t\tconst thetaSegmentLevel = j * ( thetaSegments + 1 );\n\n\t\t\tfor ( let i = 0; i < thetaSegments; i ++ ) {\n\n\t\t\t\tconst segment = i + thetaSegmentLevel;\n\n\t\t\t\tconst a = segment;\n\t\t\t\tconst b = segment + thetaSegments + 1;\n\t\t\t\tconst c = segment + thetaSegments + 2;\n\t\t\t\tconst d = segment + 1;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new RingGeometry( data.innerRadius, data.outerRadius, data.thetaSegments, data.phiSegments, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass ShapeGeometry extends BufferGeometry {\n\n\tconstructor( shapes = new Shape( [ new Vector2( 0, 0.5 ), new Vector2( - 0.5, - 0.5 ), new Vector2( 0.5, - 0.5 ) ] ), curveSegments = 12 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'ShapeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tshapes: shapes,\n\t\t\tcurveSegments: curveSegments\n\t\t};\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tlet groupStart = 0;\n\t\tlet groupCount = 0;\n\n\t\t// allow single and array values for \"shapes\" parameter\n\n\t\tif ( Array.isArray( shapes ) === false ) {\n\n\t\t\taddShape( shapes );\n\n\t\t} else {\n\n\t\t\tfor ( let i = 0; i < shapes.length; i ++ ) {\n\n\t\t\t\taddShape( shapes[ i ] );\n\n\t\t\t\tthis.addGroup( groupStart, groupCount, i ); // enables MultiMaterial support\n\n\t\t\t\tgroupStart += groupCount;\n\t\t\t\tgroupCount = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\n\t\t// helper functions\n\n\t\tfunction addShape( shape ) {\n\n\t\t\tconst indexOffset = vertices.length / 3;\n\t\t\tconst points = shape.extractPoints( curveSegments );\n\n\t\t\tlet shapeVertices = points.shape;\n\t\t\tconst shapeHoles = points.holes;\n\n\t\t\t// check direction of vertices\n\n\t\t\tif ( ShapeUtils.isClockWise( shapeVertices ) === false ) {\n\n\t\t\t\tshapeVertices = shapeVertices.reverse();\n\n\t\t\t}\n\n\t\t\tfor ( let i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\t\tconst shapeHole = shapeHoles[ i ];\n\n\t\t\t\tif ( ShapeUtils.isClockWise( shapeHole ) === true ) {\n\n\t\t\t\t\tshapeHoles[ i ] = shapeHole.reverse();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst faces = ShapeUtils.triangulateShape( shapeVertices, shapeHoles );\n\n\t\t\t// join vertices of inner and outer paths to a single array\n\n\t\t\tfor ( let i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\t\tconst shapeHole = shapeHoles[ i ];\n\t\t\t\tshapeVertices = shapeVertices.concat( shapeHole );\n\n\t\t\t}\n\n\t\t\t// vertices, normals, uvs\n\n\t\t\tfor ( let i = 0, l = shapeVertices.length; i < l; i ++ ) {\n\n\t\t\t\tconst vertex = shapeVertices[ i ];\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, 0 );\n\t\t\t\tnormals.push( 0, 0, 1 );\n\t\t\t\tuvs.push( vertex.x, vertex.y ); // world uvs\n\n\t\t\t}\n\n\t\t\t// incides\n\n\t\t\tfor ( let i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\t\tconst face = faces[ i ];\n\n\t\t\t\tconst a = face[ 0 ] + indexOffset;\n\t\t\t\tconst b = face[ 1 ] + indexOffset;\n\t\t\t\tconst c = face[ 2 ] + indexOffset;\n\n\t\t\t\tindices.push( a, b, c );\n\t\t\t\tgroupCount += 3;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tconst shapes = this.parameters.shapes;\n\n\t\treturn toJSON( shapes, data );\n\n\t}\n\n\tstatic fromJSON( data, shapes ) {\n\n\t\tconst geometryShapes = [];\n\n\t\tfor ( let j = 0, jl = data.shapes.length; j < jl; j ++ ) {\n\n\t\t\tconst shape = shapes[ data.shapes[ j ] ];\n\n\t\t\tgeometryShapes.push( shape );\n\n\t\t}\n\n\t\treturn new ShapeGeometry( geometryShapes, data.curveSegments );\n\n\t}\n\n}\n\nfunction toJSON( shapes, data ) {\n\n\tdata.shapes = [];\n\n\tif ( Array.isArray( shapes ) ) {\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst shape = shapes[ i ];\n\n\t\t\tdata.shapes.push( shape.uuid );\n\n\t\t}\n\n\t} else {\n\n\t\tdata.shapes.push( shapes.uuid );\n\n\t}\n\n\treturn data;\n\n}\n\nclass SphereGeometry extends BufferGeometry {\n\n\tconstructor( radius = 1, widthSegments = 32, heightSegments = 16, phiStart = 0, phiLength = Math.PI * 2, thetaStart = 0, thetaLength = Math.PI ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'SphereGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\tphiStart: phiStart,\n\t\t\tphiLength: phiLength,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\twidthSegments = Math.max( 3, Math.floor( widthSegments ) );\n\t\theightSegments = Math.max( 2, Math.floor( heightSegments ) );\n\n\t\tconst thetaEnd = Math.min( thetaStart + thetaLength, Math.PI );\n\n\t\tlet index = 0;\n\t\tconst grid = [];\n\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let iy = 0; iy <= heightSegments; iy ++ ) {\n\n\t\t\tconst verticesRow = [];\n\n\t\t\tconst v = iy / heightSegments;\n\n\t\t\t// special case for the poles\n\n\t\t\tlet uOffset = 0;\n\n\t\t\tif ( iy == 0 && thetaStart == 0 ) {\n\n\t\t\t\tuOffset = 0.5 / widthSegments;\n\n\t\t\t} else if ( iy == heightSegments && thetaEnd == Math.PI ) {\n\n\t\t\t\tuOffset = - 0.5 / widthSegments;\n\n\t\t\t}\n\n\t\t\tfor ( let ix = 0; ix <= widthSegments; ix ++ ) {\n\n\t\t\t\tconst u = ix / widthSegments;\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = - radius * Math.cos( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\t\t\t\tvertex.y = radius * Math.cos( thetaStart + v * thetaLength );\n\t\t\t\tvertex.z = radius * Math.sin( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormal.copy( vertex ).normalize();\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( u + uOffset, 1 - v );\n\n\t\t\t\tverticesRow.push( index ++ );\n\n\t\t\t}\n\n\t\t\tgrid.push( verticesRow );\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let iy = 0; iy < heightSegments; iy ++ ) {\n\n\t\t\tfor ( let ix = 0; ix < widthSegments; ix ++ ) {\n\n\t\t\t\tconst a = grid[ iy ][ ix + 1 ];\n\t\t\t\tconst b = grid[ iy ][ ix ];\n\t\t\t\tconst c = grid[ iy + 1 ][ ix ];\n\t\t\t\tconst d = grid[ iy + 1 ][ ix + 1 ];\n\n\t\t\t\tif ( iy !== 0 || thetaStart > 0 ) indices.push( a, b, d );\n\t\t\t\tif ( iy !== heightSegments - 1 || thetaEnd < Math.PI ) indices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new SphereGeometry( data.radius, data.widthSegments, data.heightSegments, data.phiStart, data.phiLength, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\nclass TetrahedronGeometry extends PolyhedronGeometry {\n\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst vertices = [\n\t\t\t1, 1, 1, \t- 1, - 1, 1, \t- 1, 1, - 1, \t1, - 1, - 1\n\t\t];\n\n\t\tconst indices = [\n\t\t\t2, 1, 0, \t0, 3, 2,\t1, 3, 0,\t2, 3, 1\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'TetrahedronGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new TetrahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\nclass TorusGeometry extends BufferGeometry {\n\n\tconstructor( radius = 1, tube = 0.4, radialSegments = 8, tubularSegments = 6, arc = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'TorusGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\ttube: tube,\n\t\t\tradialSegments: radialSegments,\n\t\t\ttubularSegments: tubularSegments,\n\t\t\tarc: arc\n\t\t};\n\n\t\tradialSegments = Math.floor( radialSegments );\n\t\ttubularSegments = Math.floor( tubularSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tconst center = new Vector3();\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\tfor ( let i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\t\tconst u = i / tubularSegments * arc;\n\t\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = ( radius + tube * Math.cos( v ) ) * Math.cos( u );\n\t\t\t\tvertex.y = ( radius + tube * Math.cos( v ) ) * Math.sin( u );\n\t\t\t\tvertex.z = tube * Math.sin( v );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tcenter.x = radius * Math.cos( u );\n\t\t\t\tcenter.y = radius * Math.sin( u );\n\t\t\t\tnormal.subVectors( vertex, center ).normalize();\n\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( i / tubularSegments );\n\t\t\t\tuvs.push( j / radialSegments );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( let j = 1; j <= radialSegments; j ++ ) {\n\n\t\t\tfor ( let i = 1; i <= tubularSegments; i ++ ) {\n\n\t\t\t\t// indices\n\n\t\t\t\tconst a = ( tubularSegments + 1 ) * j + i - 1;\n\t\t\t\tconst b = ( tubularSegments + 1 ) * ( j - 1 ) + i - 1;\n\t\t\t\tconst c = ( tubularSegments + 1 ) * ( j - 1 ) + i;\n\t\t\t\tconst d = ( tubularSegments + 1 ) * j + i;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new TorusGeometry( data.radius, data.tube, data.radialSegments, data.tubularSegments, data.arc );\n\n\t}\n\n}\n\nclass TorusKnotGeometry extends BufferGeometry {\n\n\tconstructor( radius = 1, tube = 0.4, tubularSegments = 64, radialSegments = 8, p = 2, q = 3 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'TorusKnotGeometry';\n\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\ttube: tube,\n\t\t\ttubularSegments: tubularSegments,\n\t\t\tradialSegments: radialSegments,\n\t\t\tp: p,\n\t\t\tq: q\n\t\t};\n\n\t\ttubularSegments = Math.floor( tubularSegments );\n\t\tradialSegments = Math.floor( radialSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\n\t\tconst P1 = new Vector3();\n\t\tconst P2 = new Vector3();\n\n\t\tconst B = new Vector3();\n\t\tconst T = new Vector3();\n\t\tconst N = new Vector3();\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let i = 0; i <= tubularSegments; ++ i ) {\n\n\t\t\t// the radian \"u\" is used to calculate the position on the torus curve of the current tubular segment\n\n\t\t\tconst u = i / tubularSegments * p * Math.PI * 2;\n\n\t\t\t// now we calculate two points. P1 is our current position on the curve, P2 is a little farther ahead.\n\t\t\t// these points are used to create a special \"coordinate space\", which is necessary to calculate the correct vertex positions\n\n\t\t\tcalculatePositionOnCurve( u, p, q, radius, P1 );\n\t\t\tcalculatePositionOnCurve( u + 0.01, p, q, radius, P2 );\n\n\t\t\t// calculate orthonormal basis\n\n\t\t\tT.subVectors( P2, P1 );\n\t\t\tN.addVectors( P2, P1 );\n\t\t\tB.crossVectors( T, N );\n\t\t\tN.crossVectors( B, T );\n\n\t\t\t// normalize B, N. T can be ignored, we don't use it\n\n\t\t\tB.normalize();\n\t\t\tN.normalize();\n\n\t\t\tfor ( let j = 0; j <= radialSegments; ++ j ) {\n\n\t\t\t\t// now calculate the vertices. they are nothing more than an extrusion of the torus curve.\n\t\t\t\t// because we extrude a shape in the xy-plane, there is no need to calculate a z-value.\n\n\t\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\t\t\t\tconst cx = - tube * Math.cos( v );\n\t\t\t\tconst cy = tube * Math.sin( v );\n\n\t\t\t\t// now calculate the final vertex position.\n\t\t\t\t// first we orient the extrusion with our basis vectors, then we add it to the current position on the curve\n\n\t\t\t\tvertex.x = P1.x + ( cx * N.x + cy * B.x );\n\t\t\t\tvertex.y = P1.y + ( cx * N.y + cy * B.y );\n\t\t\t\tvertex.z = P1.z + ( cx * N.z + cy * B.z );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal (P1 is always the center/origin of the extrusion, thus we can use it to calculate the normal)\n\n\t\t\t\tnormal.subVectors( vertex, P1 ).normalize();\n\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( i / tubularSegments );\n\t\t\t\tuvs.push( j / radialSegments );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( let j = 1; j <= tubularSegments; j ++ ) {\n\n\t\t\tfor ( let i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t\t// indices\n\n\t\t\t\tconst a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\t\tconst b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\t\tconst c = ( radialSegments + 1 ) * j + i;\n\t\t\t\tconst d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\t// this function calculates the current position on the torus curve\n\n\t\tfunction calculatePositionOnCurve( u, p, q, radius, position ) {\n\n\t\t\tconst cu = Math.cos( u );\n\t\t\tconst su = Math.sin( u );\n\t\t\tconst quOverP = q / p * u;\n\t\t\tconst cs = Math.cos( quOverP );\n\n\t\t\tposition.x = radius * ( 2 + cs ) * 0.5 * cu;\n\t\t\tposition.y = radius * ( 2 + cs ) * su * 0.5;\n\t\t\tposition.z = radius * Math.sin( quOverP ) * 0.5;\n\n\t\t}\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\treturn new TorusKnotGeometry( data.radius, data.tube, data.tubularSegments, data.radialSegments, data.p, data.q );\n\n\t}\n\n}\n\nclass TubeGeometry extends BufferGeometry {\n\n\tconstructor( path = new QuadraticBezierCurve3( new Vector3( - 1, - 1, 0 ), new Vector3( - 1, 1, 0 ), new Vector3( 1, 1, 0 ) ), tubularSegments = 64, radius = 1, radialSegments = 8, closed = false ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'TubeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tpath: path,\n\t\t\ttubularSegments: tubularSegments,\n\t\t\tradius: radius,\n\t\t\tradialSegments: radialSegments,\n\t\t\tclosed: closed\n\t\t};\n\n\t\tconst frames = path.computeFrenetFrames( tubularSegments, closed );\n\n\t\t// expose internals\n\n\t\tthis.tangents = frames.tangents;\n\t\tthis.normals = frames.normals;\n\t\tthis.binormals = frames.binormals;\n\n\t\t// helper variables\n\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\t\tconst uv = new Vector2();\n\t\tlet P = new Vector3();\n\n\t\t// buffer\n\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\t\tconst indices = [];\n\n\t\t// create buffer data\n\n\t\tgenerateBufferData();\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\t// functions\n\n\t\tfunction generateBufferData() {\n\n\t\t\tfor ( let i = 0; i < tubularSegments; i ++ ) {\n\n\t\t\t\tgenerateSegment( i );\n\n\t\t\t}\n\n\t\t\t// if the geometry is not closed, generate the last row of vertices and normals\n\t\t\t// at the regular position on the given path\n\t\t\t//\n\t\t\t// if the geometry is closed, duplicate the first row of vertices and normals (uvs will differ)\n\n\t\t\tgenerateSegment( ( closed === false ) ? tubularSegments : 0 );\n\n\t\t\t// uvs are generated in a separate function.\n\t\t\t// this makes it easy compute correct values for closed geometries\n\n\t\t\tgenerateUVs();\n\n\t\t\t// finally create faces\n\n\t\t\tgenerateIndices();\n\n\t\t}\n\n\t\tfunction generateSegment( i ) {\n\n\t\t\t// we use getPointAt to sample evenly distributed points from the given path\n\n\t\t\tP = path.getPointAt( i / tubularSegments, P );\n\n\t\t\t// retrieve corresponding normal and binormal\n\n\t\t\tconst N = frames.normals[ i ];\n\t\t\tconst B = frames.binormals[ i ];\n\n\t\t\t// generate normals and vertices for the current segment\n\n\t\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\n\t\t\t\tconst sin = Math.sin( v );\n\t\t\t\tconst cos = - Math.cos( v );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormal.x = ( cos * N.x + sin * B.x );\n\t\t\t\tnormal.y = ( cos * N.y + sin * B.y );\n\t\t\t\tnormal.z = ( cos * N.z + sin * B.z );\n\t\t\t\tnormal.normalize();\n\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = P.x + radius * normal.x;\n\t\t\t\tvertex.y = P.y + radius * normal.y;\n\t\t\t\tvertex.z = P.z + radius * normal.z;\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction generateIndices() {\n\n\t\t\tfor ( let j = 1; j <= tubularSegments; j ++ ) {\n\n\t\t\t\tfor ( let i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t\t\tconst a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\t\t\tconst b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\t\t\tconst c = ( radialSegments + 1 ) * j + i;\n\t\t\t\t\tconst d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t\t\t// faces\n\n\t\t\t\t\tindices.push( a, b, d );\n\t\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction generateUVs() {\n\n\t\t\tfor ( let i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\t\t\tuv.x = i / tubularSegments;\n\t\t\t\t\tuv.y = j / radialSegments;\n\n\t\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.path = this.parameters.path.toJSON();\n\n\t\treturn data;\n\n\t}\n\n\tstatic fromJSON( data ) {\n\n\t\t// This only works for built-in curves (e.g. CatmullRomCurve3).\n\t\t// User defined curves or instances of CurvePath will not be deserialized.\n\t\treturn new TubeGeometry(\n\t\t\tnew Curves[ data.path.type ]().fromJSON( data.path ),\n\t\t\tdata.tubularSegments,\n\t\t\tdata.radius,\n\t\t\tdata.radialSegments,\n\t\t\tdata.closed\n\t\t);\n\n\t}\n\n}\n\nclass WireframeGeometry extends BufferGeometry {\n\n\tconstructor( geometry = null ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'WireframeGeometry';\n\n\t\tthis.parameters = {\n\t\t\tgeometry: geometry\n\t\t};\n\n\t\tif ( geometry !== null ) {\n\n\t\t\t// buffer\n\n\t\t\tconst vertices = [];\n\t\t\tconst edges = new Set();\n\n\t\t\t// helper variables\n\n\t\t\tconst start = new Vector3();\n\t\t\tconst end = new Vector3();\n\n\t\t\tif ( geometry.index !== null ) {\n\n\t\t\t\t// indexed BufferGeometry\n\n\t\t\t\tconst position = geometry.attributes.position;\n\t\t\t\tconst indices = geometry.index;\n\t\t\t\tlet groups = geometry.groups;\n\n\t\t\t\tif ( groups.length === 0 ) {\n\n\t\t\t\t\tgroups = [ { start: 0, count: indices.count, materialIndex: 0 } ];\n\n\t\t\t\t}\n\n\t\t\t\t// create a data structure that contains all edges without duplicates\n\n\t\t\t\tfor ( let o = 0, ol = groups.length; o < ol; ++ o ) {\n\n\t\t\t\t\tconst group = groups[ o ];\n\n\t\t\t\t\tconst groupStart = group.start;\n\t\t\t\t\tconst groupCount = group.count;\n\n\t\t\t\t\tfor ( let i = groupStart, l = ( groupStart + groupCount ); i < l; i += 3 ) {\n\n\t\t\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t\t\tconst index1 = indices.getX( i + j );\n\t\t\t\t\t\t\tconst index2 = indices.getX( i + ( j + 1 ) % 3 );\n\n\t\t\t\t\t\t\tstart.fromBufferAttribute( position, index1 );\n\t\t\t\t\t\t\tend.fromBufferAttribute( position, index2 );\n\n\t\t\t\t\t\t\tif ( isUniqueEdge( start, end, edges ) === true ) {\n\n\t\t\t\t\t\t\t\tvertices.push( start.x, start.y, start.z );\n\t\t\t\t\t\t\t\tvertices.push( end.x, end.y, end.z );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// non-indexed BufferGeometry\n\n\t\t\t\tconst position = geometry.attributes.position;\n\n\t\t\t\tfor ( let i = 0, l = ( position.count / 3 ); i < l; i ++ ) {\n\n\t\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t\t// three edges per triangle, an edge is represented as (index1, index2)\n\t\t\t\t\t\t// e.g. the first triangle has the following edges: (0,1),(1,2),(2,0)\n\n\t\t\t\t\t\tconst index1 = 3 * i + j;\n\t\t\t\t\t\tconst index2 = 3 * i + ( ( j + 1 ) % 3 );\n\n\t\t\t\t\t\tstart.fromBufferAttribute( position, index1 );\n\t\t\t\t\t\tend.fromBufferAttribute( position, index2 );\n\n\t\t\t\t\t\tif ( isUniqueEdge( start, end, edges ) === true ) {\n\n\t\t\t\t\t\t\tvertices.push( start.x, start.y, start.z );\n\t\t\t\t\t\t\tvertices.push( end.x, end.y, end.z );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// build geometry\n\n\t\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\n\t\t}\n\n\t}\n\n}\n\nfunction isUniqueEdge( start, end, edges ) {\n\n\tconst hash1 = `${start.x},${start.y},${start.z}-${end.x},${end.y},${end.z}`;\n\tconst hash2 = `${end.x},${end.y},${end.z}-${start.x},${start.y},${start.z}`; // coincident edge\n\n\tif ( edges.has( hash1 ) === true || edges.has( hash2 ) === true ) {\n\n\t\treturn false;\n\n\t} else {\n\n\t\tedges.add( hash1 );\n\t\tedges.add( hash2 );\n\t\treturn true;\n\n\t}\n\n}\n\nvar Geometries = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tBoxGeometry: BoxGeometry,\n\tBoxBufferGeometry: BoxGeometry,\n\tCapsuleGeometry: CapsuleGeometry,\n\tCapsuleBufferGeometry: CapsuleGeometry,\n\tCircleGeometry: CircleGeometry,\n\tCircleBufferGeometry: CircleGeometry,\n\tConeGeometry: ConeGeometry,\n\tConeBufferGeometry: ConeGeometry,\n\tCylinderGeometry: CylinderGeometry,\n\tCylinderBufferGeometry: CylinderGeometry,\n\tDodecahedronGeometry: DodecahedronGeometry,\n\tDodecahedronBufferGeometry: DodecahedronGeometry,\n\tEdgesGeometry: EdgesGeometry,\n\tExtrudeGeometry: ExtrudeGeometry,\n\tExtrudeBufferGeometry: ExtrudeGeometry,\n\tIcosahedronGeometry: IcosahedronGeometry,\n\tIcosahedronBufferGeometry: IcosahedronGeometry,\n\tLatheGeometry: LatheGeometry,\n\tLatheBufferGeometry: LatheGeometry,\n\tOctahedronGeometry: OctahedronGeometry,\n\tOctahedronBufferGeometry: OctahedronGeometry,\n\tPlaneGeometry: PlaneGeometry,\n\tPlaneBufferGeometry: PlaneGeometry,\n\tPolyhedronGeometry: PolyhedronGeometry,\n\tPolyhedronBufferGeometry: PolyhedronGeometry,\n\tRingGeometry: RingGeometry,\n\tRingBufferGeometry: RingGeometry,\n\tShapeGeometry: ShapeGeometry,\n\tShapeBufferGeometry: ShapeGeometry,\n\tSphereGeometry: SphereGeometry,\n\tSphereBufferGeometry: SphereGeometry,\n\tTetrahedronGeometry: TetrahedronGeometry,\n\tTetrahedronBufferGeometry: TetrahedronGeometry,\n\tTorusGeometry: TorusGeometry,\n\tTorusBufferGeometry: TorusGeometry,\n\tTorusKnotGeometry: TorusKnotGeometry,\n\tTorusKnotBufferGeometry: TorusKnotGeometry,\n\tTubeGeometry: TubeGeometry,\n\tTubeBufferGeometry: TubeGeometry,\n\tWireframeGeometry: WireframeGeometry\n});\n\nclass ShadowMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isShadowMaterial = true;\n\n\t\tthis.type = 'ShadowMaterial';\n\n\t\tthis.color = new Color( 0x000000 );\n\t\tthis.transparent = true;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass RawShaderMaterial extends ShaderMaterial {\n\n\tconstructor( parameters ) {\n\n\t\tsuper( parameters );\n\n\t\tthis.isRawShaderMaterial = true;\n\n\t\tthis.type = 'RawShaderMaterial';\n\n\t}\n\n}\n\nclass MeshStandardMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshStandardMaterial = true;\n\n\t\tthis.defines = { 'STANDARD': '' };\n\n\t\tthis.type = 'MeshStandardMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\t\tthis.roughness = 1.0;\n\t\tthis.metalness = 0.0;\n\n\t\tthis.map = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.emissive = new Color( 0x000000 );\n\t\tthis.emissiveIntensity = 1.0;\n\t\tthis.emissiveMap = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.roughnessMap = null;\n\n\t\tthis.metalnessMap = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.envMap = null;\n\t\tthis.envMapIntensity = 1.0;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.flatShading = false;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.defines = { 'STANDARD': '' };\n\n\t\tthis.color.copy( source.color );\n\t\tthis.roughness = source.roughness;\n\t\tthis.metalness = source.metalness;\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.roughnessMap = source.roughnessMap;\n\n\t\tthis.metalnessMap = source.metalnessMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.envMapIntensity = source.envMapIntensity;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshPhysicalMaterial extends MeshStandardMaterial {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshPhysicalMaterial = true;\n\n\t\tthis.defines = {\n\n\t\t\t'STANDARD': '',\n\t\t\t'PHYSICAL': ''\n\n\t\t};\n\n\t\tthis.type = 'MeshPhysicalMaterial';\n\n\t\tthis.clearcoatMap = null;\n\t\tthis.clearcoatRoughness = 0.0;\n\t\tthis.clearcoatRoughnessMap = null;\n\t\tthis.clearcoatNormalScale = new Vector2( 1, 1 );\n\t\tthis.clearcoatNormalMap = null;\n\n\t\tthis.ior = 1.5;\n\n\t\tObject.defineProperty( this, 'reflectivity', {\n\t\t\tget: function () {\n\n\t\t\t\treturn ( clamp( 2.5 * ( this.ior - 1 ) / ( this.ior + 1 ), 0, 1 ) );\n\n\t\t\t},\n\t\t\tset: function ( reflectivity ) {\n\n\t\t\t\tthis.ior = ( 1 + 0.4 * reflectivity ) / ( 1 - 0.4 * reflectivity );\n\n\t\t\t}\n\t\t} );\n\n\t\tthis.iridescenceMap = null;\n\t\tthis.iridescenceIOR = 1.3;\n\t\tthis.iridescenceThicknessRange = [ 100, 400 ];\n\t\tthis.iridescenceThicknessMap = null;\n\n\t\tthis.sheenColor = new Color( 0x000000 );\n\t\tthis.sheenColorMap = null;\n\t\tthis.sheenRoughness = 1.0;\n\t\tthis.sheenRoughnessMap = null;\n\n\t\tthis.transmissionMap = null;\n\n\t\tthis.thickness = 0;\n\t\tthis.thicknessMap = null;\n\t\tthis.attenuationDistance = 0.0;\n\t\tthis.attenuationColor = new Color( 1, 1, 1 );\n\n\t\tthis.specularIntensity = 1.0;\n\t\tthis.specularIntensityMap = null;\n\t\tthis.specularColor = new Color( 1, 1, 1 );\n\t\tthis.specularColorMap = null;\n\n\t\tthis._sheen = 0.0;\n\t\tthis._clearcoat = 0;\n\t\tthis._iridescence = 0;\n\t\tthis._transmission = 0;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tget sheen() {\n\n\t\treturn this._sheen;\n\n\t}\n\n\tset sheen( value ) {\n\n\t\tif ( this._sheen > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._sheen = value;\n\n\t}\n\n\tget clearcoat() {\n\n\t\treturn this._clearcoat;\n\n\t}\n\n\tset clearcoat( value ) {\n\n\t\tif ( this._clearcoat > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._clearcoat = value;\n\n\t}\n\n\tget iridescence() {\n\n\t\treturn this._iridescence;\n\n\t}\n\n\tset iridescence( value ) {\n\n\t\tif ( this._iridescence > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._iridescence = value;\n\n\t}\n\n\tget transmission() {\n\n\t\treturn this._transmission;\n\n\t}\n\n\tset transmission( value ) {\n\n\t\tif ( this._transmission > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._transmission = value;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.defines = {\n\n\t\t\t'STANDARD': '',\n\t\t\t'PHYSICAL': ''\n\n\t\t};\n\n\t\tthis.clearcoat = source.clearcoat;\n\t\tthis.clearcoatMap = source.clearcoatMap;\n\t\tthis.clearcoatRoughness = source.clearcoatRoughness;\n\t\tthis.clearcoatRoughnessMap = source.clearcoatRoughnessMap;\n\t\tthis.clearcoatNormalMap = source.clearcoatNormalMap;\n\t\tthis.clearcoatNormalScale.copy( source.clearcoatNormalScale );\n\n\t\tthis.ior = source.ior;\n\n\t\tthis.iridescence = source.iridescence;\n\t\tthis.iridescenceMap = source.iridescenceMap;\n\t\tthis.iridescenceIOR = source.iridescenceIOR;\n\t\tthis.iridescenceThicknessRange = [ ...source.iridescenceThicknessRange ];\n\t\tthis.iridescenceThicknessMap = source.iridescenceThicknessMap;\n\n\t\tthis.sheen = source.sheen;\n\t\tthis.sheenColor.copy( source.sheenColor );\n\t\tthis.sheenColorMap = source.sheenColorMap;\n\t\tthis.sheenRoughness = source.sheenRoughness;\n\t\tthis.sheenRoughnessMap = source.sheenRoughnessMap;\n\n\t\tthis.transmission = source.transmission;\n\t\tthis.transmissionMap = source.transmissionMap;\n\n\t\tthis.thickness = source.thickness;\n\t\tthis.thicknessMap = source.thicknessMap;\n\t\tthis.attenuationDistance = source.attenuationDistance;\n\t\tthis.attenuationColor.copy( source.attenuationColor );\n\n\t\tthis.specularIntensity = source.specularIntensity;\n\t\tthis.specularIntensityMap = source.specularIntensityMap;\n\t\tthis.specularColor.copy( source.specularColor );\n\t\tthis.specularColorMap = source.specularColorMap;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshPhongMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshPhongMaterial = true;\n\n\t\tthis.type = 'MeshPhongMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\t\tthis.specular = new Color( 0x111111 );\n\t\tthis.shininess = 30;\n\n\t\tthis.map = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.emissive = new Color( 0x000000 );\n\t\tthis.emissiveIntensity = 1.0;\n\t\tthis.emissiveMap = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.specularMap = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.envMap = null;\n\t\tthis.combine = MultiplyOperation;\n\t\tthis.reflectivity = 1;\n\t\tthis.refractionRatio = 0.98;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.flatShading = false;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\t\tthis.specular.copy( source.specular );\n\t\tthis.shininess = source.shininess;\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.specularMap = source.specularMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.combine = source.combine;\n\t\tthis.reflectivity = source.reflectivity;\n\t\tthis.refractionRatio = source.refractionRatio;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshToonMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshToonMaterial = true;\n\n\t\tthis.defines = { 'TOON': '' };\n\n\t\tthis.type = 'MeshToonMaterial';\n\n\t\tthis.color = new Color( 0xffffff );\n\n\t\tthis.map = null;\n\t\tthis.gradientMap = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.emissive = new Color( 0x000000 );\n\t\tthis.emissiveIntensity = 1.0;\n\t\tthis.emissiveMap = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\t\tthis.gradientMap = source.gradientMap;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshNormalMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshNormalMaterial = true;\n\n\t\tthis.type = 'MeshNormalMaterial';\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\n\t\tthis.flatShading = false;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshLambertMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshLambertMaterial = true;\n\n\t\tthis.type = 'MeshLambertMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\n\t\tthis.map = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.emissive = new Color( 0x000000 );\n\t\tthis.emissiveIntensity = 1.0;\n\t\tthis.emissiveMap = null;\n\n\t\tthis.specularMap = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.envMap = null;\n\t\tthis.combine = MultiplyOperation;\n\t\tthis.reflectivity = 1;\n\t\tthis.refractionRatio = 0.98;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.specularMap = source.specularMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.combine = source.combine;\n\t\tthis.reflectivity = source.reflectivity;\n\t\tthis.refractionRatio = source.refractionRatio;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshMatcapMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshMatcapMaterial = true;\n\n\t\tthis.defines = { 'MATCAP': '' };\n\n\t\tthis.type = 'MeshMatcapMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\n\t\tthis.matcap = null;\n\n\t\tthis.map = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.flatShading = false;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.defines = { 'MATCAP': '' };\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.matcap = source.matcap;\n\n\t\tthis.map = source.map;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass LineDashedMaterial extends LineBasicMaterial {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isLineDashedMaterial = true;\n\n\t\tthis.type = 'LineDashedMaterial';\n\n\t\tthis.scale = 1;\n\t\tthis.dashSize = 3;\n\t\tthis.gapSize = 1;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.scale = source.scale;\n\t\tthis.dashSize = source.dashSize;\n\t\tthis.gapSize = source.gapSize;\n\n\t\treturn this;\n\n\t}\n\n}\n\n// same as Array.prototype.slice, but also works on typed arrays\nfunction arraySlice( array, from, to ) {\n\n\tif ( isTypedArray( array ) ) {\n\n\t\t// in ios9 array.subarray(from, undefined) will return empty array\n\t\t// but array.subarray(from) or array.subarray(from, len) is correct\n\t\treturn new array.constructor( array.subarray( from, to !== undefined ? to : array.length ) );\n\n\t}\n\n\treturn array.slice( from, to );\n\n}\n\n// converts an array to a specific type\nfunction convertArray( array, type, forceClone ) {\n\n\tif ( ! array || // let 'undefined' and 'null' pass\n\t\t! forceClone && array.constructor === type ) return array;\n\n\tif ( typeof type.BYTES_PER_ELEMENT === 'number' ) {\n\n\t\treturn new type( array ); // create typed array\n\n\t}\n\n\treturn Array.prototype.slice.call( array ); // create Array\n\n}\n\nfunction isTypedArray( object ) {\n\n\treturn ArrayBuffer.isView( object ) &&\n\t\t! ( object instanceof DataView );\n\n}\n\n// returns an array by which times and values can be sorted\nfunction getKeyframeOrder( times ) {\n\n\tfunction compareTime( i, j ) {\n\n\t\treturn times[ i ] - times[ j ];\n\n\t}\n\n\tconst n = times.length;\n\tconst result = new Array( n );\n\tfor ( let i = 0; i !== n; ++ i ) result[ i ] = i;\n\n\tresult.sort( compareTime );\n\n\treturn result;\n\n}\n\n// uses the array previously returned by 'getKeyframeOrder' to sort data\nfunction sortedArray( values, stride, order ) {\n\n\tconst nValues = values.length;\n\tconst result = new values.constructor( nValues );\n\n\tfor ( let i = 0, dstOffset = 0; dstOffset !== nValues; ++ i ) {\n\n\t\tconst srcOffset = order[ i ] * stride;\n\n\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\tresult[ dstOffset ++ ] = values[ srcOffset + j ];\n\n\t\t}\n\n\t}\n\n\treturn result;\n\n}\n\n// function for parsing AOS keyframe formats\nfunction flattenJSON( jsonKeys, times, values, valuePropertyName ) {\n\n\tlet i = 1, key = jsonKeys[ 0 ];\n\n\twhile ( key !== undefined && key[ valuePropertyName ] === undefined ) {\n\n\t\tkey = jsonKeys[ i ++ ];\n\n\t}\n\n\tif ( key === undefined ) return; // no data\n\n\tlet value = key[ valuePropertyName ];\n\tif ( value === undefined ) return; // no data\n\n\tif ( Array.isArray( value ) ) {\n\n\t\tdo {\n\n\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\tif ( value !== undefined ) {\n\n\t\t\t\ttimes.push( key.time );\n\t\t\t\tvalues.push.apply( values, value ); // push all elements\n\n\t\t\t}\n\n\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t} while ( key !== undefined );\n\n\t} else if ( value.toArray !== undefined ) {\n\n\t\t// ...assume THREE.Math-ish\n\n\t\tdo {\n\n\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\tif ( value !== undefined ) {\n\n\t\t\t\ttimes.push( key.time );\n\t\t\t\tvalue.toArray( values, values.length );\n\n\t\t\t}\n\n\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t} while ( key !== undefined );\n\n\t} else {\n\n\t\t// otherwise push as-is\n\n\t\tdo {\n\n\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\tif ( value !== undefined ) {\n\n\t\t\t\ttimes.push( key.time );\n\t\t\t\tvalues.push( value );\n\n\t\t\t}\n\n\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t} while ( key !== undefined );\n\n\t}\n\n}\n\nfunction subclip( sourceClip, name, startFrame, endFrame, fps = 30 ) {\n\n\tconst clip = sourceClip.clone();\n\n\tclip.name = name;\n\n\tconst tracks = [];\n\n\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\tconst track = clip.tracks[ i ];\n\t\tconst valueSize = track.getValueSize();\n\n\t\tconst times = [];\n\t\tconst values = [];\n\n\t\tfor ( let j = 0; j < track.times.length; ++ j ) {\n\n\t\t\tconst frame = track.times[ j ] * fps;\n\n\t\t\tif ( frame < startFrame || frame >= endFrame ) continue;\n\n\t\t\ttimes.push( track.times[ j ] );\n\n\t\t\tfor ( let k = 0; k < valueSize; ++ k ) {\n\n\t\t\t\tvalues.push( track.values[ j * valueSize + k ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( times.length === 0 ) continue;\n\n\t\ttrack.times = convertArray( times, track.times.constructor );\n\t\ttrack.values = convertArray( values, track.values.constructor );\n\n\t\ttracks.push( track );\n\n\t}\n\n\tclip.tracks = tracks;\n\n\t// find minimum .times value across all tracks in the trimmed clip\n\n\tlet minStartTime = Infinity;\n\n\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\tif ( minStartTime > clip.tracks[ i ].times[ 0 ] ) {\n\n\t\t\tminStartTime = clip.tracks[ i ].times[ 0 ];\n\n\t\t}\n\n\t}\n\n\t// shift all tracks such that clip begins at t=0\n\n\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\tclip.tracks[ i ].shift( - 1 * minStartTime );\n\n\t}\n\n\tclip.resetDuration();\n\n\treturn clip;\n\n}\n\nfunction makeClipAdditive( targetClip, referenceFrame = 0, referenceClip = targetClip, fps = 30 ) {\n\n\tif ( fps <= 0 ) fps = 30;\n\n\tconst numTracks = referenceClip.tracks.length;\n\tconst referenceTime = referenceFrame / fps;\n\n\t// Make each track's values relative to the values at the reference frame\n\tfor ( let i = 0; i < numTracks; ++ i ) {\n\n\t\tconst referenceTrack = referenceClip.tracks[ i ];\n\t\tconst referenceTrackType = referenceTrack.ValueTypeName;\n\n\t\t// Skip this track if it's non-numeric\n\t\tif ( referenceTrackType === 'bool' || referenceTrackType === 'string' ) continue;\n\n\t\t// Find the track in the target clip whose name and type matches the reference track\n\t\tconst targetTrack = targetClip.tracks.find( function ( track ) {\n\n\t\t\treturn track.name === referenceTrack.name\n\t\t\t\t&& track.ValueTypeName === referenceTrackType;\n\n\t\t} );\n\n\t\tif ( targetTrack === undefined ) continue;\n\n\t\tlet referenceOffset = 0;\n\t\tconst referenceValueSize = referenceTrack.getValueSize();\n\n\t\tif ( referenceTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline ) {\n\n\t\t\treferenceOffset = referenceValueSize / 3;\n\n\t\t}\n\n\t\tlet targetOffset = 0;\n\t\tconst targetValueSize = targetTrack.getValueSize();\n\n\t\tif ( targetTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline ) {\n\n\t\t\ttargetOffset = targetValueSize / 3;\n\n\t\t}\n\n\t\tconst lastIndex = referenceTrack.times.length - 1;\n\t\tlet referenceValue;\n\n\t\t// Find the value to subtract out of the track\n\t\tif ( referenceTime <= referenceTrack.times[ 0 ] ) {\n\n\t\t\t// Reference frame is earlier than the first keyframe, so just use the first keyframe\n\t\t\tconst startIndex = referenceOffset;\n\t\t\tconst endIndex = referenceValueSize - referenceOffset;\n\t\t\treferenceValue = arraySlice( referenceTrack.values, startIndex, endIndex );\n\n\t\t} else if ( referenceTime >= referenceTrack.times[ lastIndex ] ) {\n\n\t\t\t// Reference frame is after the last keyframe, so just use the last keyframe\n\t\t\tconst startIndex = lastIndex * referenceValueSize + referenceOffset;\n\t\t\tconst endIndex = startIndex + referenceValueSize - referenceOffset;\n\t\t\treferenceValue = arraySlice( referenceTrack.values, startIndex, endIndex );\n\n\t\t} else {\n\n\t\t\t// Interpolate to the reference value\n\t\t\tconst interpolant = referenceTrack.createInterpolant();\n\t\t\tconst startIndex = referenceOffset;\n\t\t\tconst endIndex = referenceValueSize - referenceOffset;\n\t\t\tinterpolant.evaluate( referenceTime );\n\t\t\treferenceValue = arraySlice( interpolant.resultBuffer, startIndex, endIndex );\n\n\t\t}\n\n\t\t// Conjugate the quaternion\n\t\tif ( referenceTrackType === 'quaternion' ) {\n\n\t\t\tconst referenceQuat = new Quaternion().fromArray( referenceValue ).normalize().conjugate();\n\t\t\treferenceQuat.toArray( referenceValue );\n\n\t\t}\n\n\t\t// Subtract the reference value from all of the track values\n\n\t\tconst numTimes = targetTrack.times.length;\n\t\tfor ( let j = 0; j < numTimes; ++ j ) {\n\n\t\t\tconst valueStart = j * targetValueSize + targetOffset;\n\n\t\t\tif ( referenceTrackType === 'quaternion' ) {\n\n\t\t\t\t// Multiply the conjugate for quaternion track types\n\t\t\t\tQuaternion.multiplyQuaternionsFlat(\n\t\t\t\t\ttargetTrack.values,\n\t\t\t\t\tvalueStart,\n\t\t\t\t\treferenceValue,\n\t\t\t\t\t0,\n\t\t\t\t\ttargetTrack.values,\n\t\t\t\t\tvalueStart\n\t\t\t\t);\n\n\t\t\t} else {\n\n\t\t\t\tconst valueEnd = targetValueSize - targetOffset * 2;\n\n\t\t\t\t// Subtract each value for all other numeric track types\n\t\t\t\tfor ( let k = 0; k < valueEnd; ++ k ) {\n\n\t\t\t\t\ttargetTrack.values[ valueStart + k ] -= referenceValue[ k ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttargetClip.blendMode = AdditiveAnimationBlendMode;\n\n\treturn targetClip;\n\n}\n\nvar AnimationUtils = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tarraySlice: arraySlice,\n\tconvertArray: convertArray,\n\tisTypedArray: isTypedArray,\n\tgetKeyframeOrder: getKeyframeOrder,\n\tsortedArray: sortedArray,\n\tflattenJSON: flattenJSON,\n\tsubclip: subclip,\n\tmakeClipAdditive: makeClipAdditive\n});\n\n/**\n * Abstract base class of interpolants over parametric samples.\n *\n * The parameter domain is one dimensional, typically the time or a path\n * along a curve defined by the data.\n *\n * The sample values can have any dimensionality and derived classes may\n * apply special interpretations to the data.\n *\n * This class provides the interval seek in a Template Method, deferring\n * the actual interpolation to derived classes.\n *\n * Time complexity is O(1) for linear access crossing at most two points\n * and O(log N) for random access, where N is the number of positions.\n *\n * References:\n *\n * \t\thttp://www.oodesign.com/template-method-pattern.html\n *\n */\n\nclass Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tthis.parameterPositions = parameterPositions;\n\t\tthis._cachedIndex = 0;\n\n\t\tthis.resultBuffer = resultBuffer !== undefined ?\n\t\t\tresultBuffer : new sampleValues.constructor( sampleSize );\n\t\tthis.sampleValues = sampleValues;\n\t\tthis.valueSize = sampleSize;\n\n\t\tthis.settings = null;\n\t\tthis.DefaultSettings_ = {};\n\n\t}\n\n\tevaluate( t ) {\n\n\t\tconst pp = this.parameterPositions;\n\t\tlet i1 = this._cachedIndex,\n\t\t\tt1 = pp[ i1 ],\n\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\tvalidate_interval: {\n\n\t\t\tseek: {\n\n\t\t\t\tlet right;\n\n\t\t\t\tlinear_scan: {\n\n\t\t\t\t\t//- See http://jsperf.com/comparison-to-undefined/3\n\t\t\t\t\t//- slower code:\n\t\t\t\t\t//-\n\t\t\t\t\t//- \t\t\t\tif ( t >= t1 || t1 === undefined ) {\n\t\t\t\t\tforward_scan: if ( ! ( t < t1 ) ) {\n\n\t\t\t\t\t\tfor ( let giveUpAt = i1 + 2; ; ) {\n\n\t\t\t\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\t\t\t\tif ( t < t0 ) break forward_scan;\n\n\t\t\t\t\t\t\t\t// after end\n\n\t\t\t\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\t\t\t\treturn this.copySampleValue_( i1 - 1 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\tt0 = t1;\n\t\t\t\t\t\t\tt1 = pp[ ++ i1 ];\n\n\t\t\t\t\t\t\tif ( t < t1 ) {\n\n\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\tbreak seek;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// prepare binary search on the right side of the index\n\t\t\t\t\t\tright = pp.length;\n\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t//- slower code:\n\t\t\t\t\t//-\t\t\t\t\tif ( t < t0 || t0 === undefined ) {\n\t\t\t\t\tif ( ! ( t >= t0 ) ) {\n\n\t\t\t\t\t\t// looping?\n\n\t\t\t\t\t\tconst t1global = pp[ 1 ];\n\n\t\t\t\t\t\tif ( t < t1global ) {\n\n\t\t\t\t\t\t\ti1 = 2; // + 1, using the scan for the details\n\t\t\t\t\t\t\tt0 = t1global;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// linear reverse scan\n\n\t\t\t\t\t\tfor ( let giveUpAt = i1 - 2; ; ) {\n\n\t\t\t\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\t\t\t\t// before start\n\n\t\t\t\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\t\t\t\treturn this.copySampleValue_( 0 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\tt1 = t0;\n\t\t\t\t\t\t\tt0 = pp[ -- i1 - 1 ];\n\n\t\t\t\t\t\t\tif ( t >= t0 ) {\n\n\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\tbreak seek;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// prepare binary search on the left side of the index\n\t\t\t\t\t\tright = i1;\n\t\t\t\t\t\ti1 = 0;\n\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// the interval is valid\n\n\t\t\t\t\tbreak validate_interval;\n\n\t\t\t\t} // linear scan\n\n\t\t\t\t// binary search\n\n\t\t\t\twhile ( i1 < right ) {\n\n\t\t\t\t\tconst mid = ( i1 + right ) >>> 1;\n\n\t\t\t\t\tif ( t < pp[ mid ] ) {\n\n\t\t\t\t\t\tright = mid;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ti1 = mid + 1;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tt1 = pp[ i1 ];\n\t\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\t\t\t// check boundary cases, again\n\n\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\treturn this.copySampleValue_( 0 );\n\n\t\t\t\t}\n\n\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\treturn this.copySampleValue_( i1 - 1 );\n\n\t\t\t\t}\n\n\t\t\t} // seek\n\n\t\t\tthis._cachedIndex = i1;\n\n\t\t\tthis.intervalChanged_( i1, t0, t1 );\n\n\t\t} // validate_interval\n\n\t\treturn this.interpolate_( i1, t0, t, t1 );\n\n\t}\n\n\tgetSettings_() {\n\n\t\treturn this.settings || this.DefaultSettings_;\n\n\t}\n\n\tcopySampleValue_( index ) {\n\n\t\t// copies a sample value to the result buffer\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = index * stride;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] = values[ offset + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n\t// Template methods for derived classes:\n\n\tinterpolate_( /* i1, t0, t, t1 */ ) {\n\n\t\tthrow new Error( 'call to abstract method' );\n\t\t// implementations shall return this.resultBuffer\n\n\t}\n\n\tintervalChanged_( /* i1, t0, t1 */ ) {\n\n\t\t// empty\n\n\t}\n\n}\n\n/**\n * Fast and simple cubic spline interpolant.\n *\n * It was derived from a Hermitian construction setting the first derivative\n * at each sample position to the linear slope between neighboring positions\n * over their parameter interval.\n */\n\nclass CubicInterpolant extends Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t\tthis._weightPrev = - 0;\n\t\tthis._offsetPrev = - 0;\n\t\tthis._weightNext = - 0;\n\t\tthis._offsetNext = - 0;\n\n\t\tthis.DefaultSettings_ = {\n\n\t\t\tendingStart: ZeroCurvatureEnding,\n\t\t\tendingEnd: ZeroCurvatureEnding\n\n\t\t};\n\n\t}\n\n\tintervalChanged_( i1, t0, t1 ) {\n\n\t\tconst pp = this.parameterPositions;\n\t\tlet iPrev = i1 - 2,\n\t\t\tiNext = i1 + 1,\n\n\t\t\ttPrev = pp[ iPrev ],\n\t\t\ttNext = pp[ iNext ];\n\n\t\tif ( tPrev === undefined ) {\n\n\t\t\tswitch ( this.getSettings_().endingStart ) {\n\n\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t// f'(t0) = 0\n\t\t\t\t\tiPrev = i1;\n\t\t\t\t\ttPrev = 2 * t0 - t1;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\tiPrev = pp.length - 2;\n\t\t\t\t\ttPrev = t0 + pp[ iPrev ] - pp[ iPrev + 1 ];\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t// f''(t0) = 0 a.k.a. Natural Spline\n\t\t\t\t\tiPrev = i1;\n\t\t\t\t\ttPrev = t1;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( tNext === undefined ) {\n\n\t\t\tswitch ( this.getSettings_().endingEnd ) {\n\n\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t// f'(tN) = 0\n\t\t\t\t\tiNext = i1;\n\t\t\t\t\ttNext = 2 * t1 - t0;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\tiNext = 1;\n\t\t\t\t\ttNext = t1 + pp[ 1 ] - pp[ 0 ];\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t// f''(tN) = 0, a.k.a. Natural Spline\n\t\t\t\t\tiNext = i1 - 1;\n\t\t\t\t\ttNext = t0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst halfDt = ( t1 - t0 ) * 0.5,\n\t\t\tstride = this.valueSize;\n\n\t\tthis._weightPrev = halfDt / ( t0 - tPrev );\n\t\tthis._weightNext = halfDt / ( tNext - t1 );\n\t\tthis._offsetPrev = iPrev * stride;\n\t\tthis._offsetNext = iNext * stride;\n\n\t}\n\n\tinterpolate_( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\to1 = i1 * stride,\t\to0 = o1 - stride,\n\t\t\toP = this._offsetPrev, \toN = this._offsetNext,\n\t\t\twP = this._weightPrev,\twN = this._weightNext,\n\n\t\t\tp = ( t - t0 ) / ( t1 - t0 ),\n\t\t\tpp = p * p,\n\t\t\tppp = pp * p;\n\n\t\t// evaluate polynomials\n\n\t\tconst sP = - wP * ppp + 2 * wP * pp - wP * p;\n\t\tconst s0 = ( 1 + wP ) * ppp + ( - 1.5 - 2 * wP ) * pp + ( - 0.5 + wP ) * p + 1;\n\t\tconst s1 = ( - 1 - wN ) * ppp + ( 1.5 + wN ) * pp + 0.5 * p;\n\t\tconst sN = wN * ppp - wN * pp;\n\n\t\t// combine data linearly\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] =\n\t\t\t\t\tsP * values[ oP + i ] +\n\t\t\t\t\ts0 * values[ o0 + i ] +\n\t\t\t\t\ts1 * values[ o1 + i ] +\n\t\t\t\t\tsN * values[ oN + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n}\n\nclass LinearInterpolant extends Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t}\n\n\tinterpolate_( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\toffset1 = i1 * stride,\n\t\t\toffset0 = offset1 - stride,\n\n\t\t\tweight1 = ( t - t0 ) / ( t1 - t0 ),\n\t\t\tweight0 = 1 - weight1;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] =\n\t\t\t\t\tvalues[ offset0 + i ] * weight0 +\n\t\t\t\t\tvalues[ offset1 + i ] * weight1;\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n}\n\n/**\n *\n * Interpolant that evaluates to the sample value at the position preceding\n * the parameter.\n */\n\nclass DiscreteInterpolant extends Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t}\n\n\tinterpolate_( i1 /*, t0, t, t1 */ ) {\n\n\t\treturn this.copySampleValue_( i1 - 1 );\n\n\t}\n\n}\n\nclass KeyframeTrack {\n\n\tconstructor( name, times, values, interpolation ) {\n\n\t\tif ( name === undefined ) throw new Error( 'THREE.KeyframeTrack: track name is undefined' );\n\t\tif ( times === undefined || times.length === 0 ) throw new Error( 'THREE.KeyframeTrack: no keyframes in track named ' + name );\n\n\t\tthis.name = name;\n\n\t\tthis.times = convertArray( times, this.TimeBufferType );\n\t\tthis.values = convertArray( values, this.ValueBufferType );\n\n\t\tthis.setInterpolation( interpolation || this.DefaultInterpolation );\n\n\t}\n\n\t// Serialization (in static context, because of constructor invocation\n\t// and automatic invocation of .toJSON):\n\n\tstatic toJSON( track ) {\n\n\t\tconst trackType = track.constructor;\n\n\t\tlet json;\n\n\t\t// derived classes can define a static toJSON method\n\t\tif ( trackType.toJSON !== this.toJSON ) {\n\n\t\t\tjson = trackType.toJSON( track );\n\n\t\t} else {\n\n\t\t\t// by default, we assume the data can be serialized as-is\n\t\t\tjson = {\n\n\t\t\t\t'name': track.name,\n\t\t\t\t'times': convertArray( track.times, Array ),\n\t\t\t\t'values': convertArray( track.values, Array )\n\n\t\t\t};\n\n\t\t\tconst interpolation = track.getInterpolation();\n\n\t\t\tif ( interpolation !== track.DefaultInterpolation ) {\n\n\t\t\t\tjson.interpolation = interpolation;\n\n\t\t\t}\n\n\t\t}\n\n\t\tjson.type = track.ValueTypeName; // mandatory\n\n\t\treturn json;\n\n\t}\n\n\tInterpolantFactoryMethodDiscrete( result ) {\n\n\t\treturn new DiscreteInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t}\n\n\tInterpolantFactoryMethodLinear( result ) {\n\n\t\treturn new LinearInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t}\n\n\tInterpolantFactoryMethodSmooth( result ) {\n\n\t\treturn new CubicInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t}\n\n\tsetInterpolation( interpolation ) {\n\n\t\tlet factoryMethod;\n\n\t\tswitch ( interpolation ) {\n\n\t\t\tcase InterpolateDiscrete:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodDiscrete;\n\n\t\t\t\tbreak;\n\n\t\t\tcase InterpolateLinear:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodLinear;\n\n\t\t\t\tbreak;\n\n\t\t\tcase InterpolateSmooth:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodSmooth;\n\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tif ( factoryMethod === undefined ) {\n\n\t\t\tconst message = 'unsupported interpolation for ' +\n\t\t\t\tthis.ValueTypeName + ' keyframe track named ' + this.name;\n\n\t\t\tif ( this.createInterpolant === undefined ) {\n\n\t\t\t\t// fall back to default, unless the default itself is messed up\n\t\t\t\tif ( interpolation !== this.DefaultInterpolation ) {\n\n\t\t\t\t\tthis.setInterpolation( this.DefaultInterpolation );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( message ); // fatal, in this case\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconsole.warn( 'THREE.KeyframeTrack:', message );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tthis.createInterpolant = factoryMethod;\n\n\t\treturn this;\n\n\t}\n\n\tgetInterpolation() {\n\n\t\tswitch ( this.createInterpolant ) {\n\n\t\t\tcase this.InterpolantFactoryMethodDiscrete:\n\n\t\t\t\treturn InterpolateDiscrete;\n\n\t\t\tcase this.InterpolantFactoryMethodLinear:\n\n\t\t\t\treturn InterpolateLinear;\n\n\t\t\tcase this.InterpolantFactoryMethodSmooth:\n\n\t\t\t\treturn InterpolateSmooth;\n\n\t\t}\n\n\t}\n\n\tgetValueSize() {\n\n\t\treturn this.values.length / this.times.length;\n\n\t}\n\n\t// move all keyframes either forwards or backwards in time\n\tshift( timeOffset ) {\n\n\t\tif ( timeOffset !== 0.0 ) {\n\n\t\t\tconst times = this.times;\n\n\t\t\tfor ( let i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\ttimes[ i ] += timeOffset;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// scale all keyframe times by a factor (useful for frame <-> seconds conversions)\n\tscale( timeScale ) {\n\n\t\tif ( timeScale !== 1.0 ) {\n\n\t\t\tconst times = this.times;\n\n\t\t\tfor ( let i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\ttimes[ i ] *= timeScale;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// removes keyframes before and after animation without changing any values within the range [startTime, endTime].\n\t// IMPORTANT: We do not shift around keys to the start of the track time, because for interpolated keys this will change their values\n\ttrim( startTime, endTime ) {\n\n\t\tconst times = this.times,\n\t\t\tnKeys = times.length;\n\n\t\tlet from = 0,\n\t\t\tto = nKeys - 1;\n\n\t\twhile ( from !== nKeys && times[ from ] < startTime ) {\n\n\t\t\t++ from;\n\n\t\t}\n\n\t\twhile ( to !== - 1 && times[ to ] > endTime ) {\n\n\t\t\t-- to;\n\n\t\t}\n\n\t\t++ to; // inclusive -> exclusive bound\n\n\t\tif ( from !== 0 || to !== nKeys ) {\n\n\t\t\t// empty tracks are forbidden, so keep at least one keyframe\n\t\t\tif ( from >= to ) {\n\n\t\t\t\tto = Math.max( to, 1 );\n\t\t\t\tfrom = to - 1;\n\n\t\t\t}\n\n\t\t\tconst stride = this.getValueSize();\n\t\t\tthis.times = arraySlice( times, from, to );\n\t\t\tthis.values = arraySlice( this.values, from * stride, to * stride );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// ensure we do not get a GarbageInGarbageOut situation, make sure tracks are at least minimally viable\n\tvalidate() {\n\n\t\tlet valid = true;\n\n\t\tconst valueSize = this.getValueSize();\n\t\tif ( valueSize - Math.floor( valueSize ) !== 0 ) {\n\n\t\t\tconsole.error( 'THREE.KeyframeTrack: Invalid value size in track.', this );\n\t\t\tvalid = false;\n\n\t\t}\n\n\t\tconst times = this.times,\n\t\t\tvalues = this.values,\n\n\t\t\tnKeys = times.length;\n\n\t\tif ( nKeys === 0 ) {\n\n\t\t\tconsole.error( 'THREE.KeyframeTrack: Track is empty.', this );\n\t\t\tvalid = false;\n\n\t\t}\n\n\t\tlet prevTime = null;\n\n\t\tfor ( let i = 0; i !== nKeys; i ++ ) {\n\n\t\t\tconst currTime = times[ i ];\n\n\t\t\tif ( typeof currTime === 'number' && isNaN( currTime ) ) {\n\n\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Time is not a valid number.', this, i, currTime );\n\t\t\t\tvalid = false;\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tif ( prevTime !== null && prevTime > currTime ) {\n\n\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Out of order keys.', this, i, currTime, prevTime );\n\t\t\t\tvalid = false;\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tprevTime = currTime;\n\n\t\t}\n\n\t\tif ( values !== undefined ) {\n\n\t\t\tif ( isTypedArray( values ) ) {\n\n\t\t\t\tfor ( let i = 0, n = values.length; i !== n; ++ i ) {\n\n\t\t\t\t\tconst value = values[ i ];\n\n\t\t\t\t\tif ( isNaN( value ) ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Value is not a valid number.', this, i, value );\n\t\t\t\t\t\tvalid = false;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn valid;\n\n\t}\n\n\t// removes equivalent sequential keys as common in morph target sequences\n\t// (0,0,0,0,1,1,1,0,0,0,0,0,0,0) --> (0,0,1,1,0,0)\n\toptimize() {\n\n\t\t// times or values may be shared with other tracks, so overwriting is unsafe\n\t\tconst times = arraySlice( this.times ),\n\t\t\tvalues = arraySlice( this.values ),\n\t\t\tstride = this.getValueSize(),\n\n\t\t\tsmoothInterpolation = this.getInterpolation() === InterpolateSmooth,\n\n\t\t\tlastIndex = times.length - 1;\n\n\t\tlet writeIndex = 1;\n\n\t\tfor ( let i = 1; i < lastIndex; ++ i ) {\n\n\t\t\tlet keep = false;\n\n\t\t\tconst time = times[ i ];\n\t\t\tconst timeNext = times[ i + 1 ];\n\n\t\t\t// remove adjacent keyframes scheduled at the same time\n\n\t\t\tif ( time !== timeNext && ( i !== 1 || time !== times[ 0 ] ) ) {\n\n\t\t\t\tif ( ! smoothInterpolation ) {\n\n\t\t\t\t\t// remove unnecessary keyframes same as their neighbors\n\n\t\t\t\t\tconst offset = i * stride,\n\t\t\t\t\t\toffsetP = offset - stride,\n\t\t\t\t\t\toffsetN = offset + stride;\n\n\t\t\t\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\t\t\t\tconst value = values[ offset + j ];\n\n\t\t\t\t\t\tif ( value !== values[ offsetP + j ] ||\n\t\t\t\t\t\t\tvalue !== values[ offsetN + j ] ) {\n\n\t\t\t\t\t\t\tkeep = true;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tkeep = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// in-place compaction\n\n\t\t\tif ( keep ) {\n\n\t\t\t\tif ( i !== writeIndex ) {\n\n\t\t\t\t\ttimes[ writeIndex ] = times[ i ];\n\n\t\t\t\t\tconst readOffset = i * stride,\n\t\t\t\t\t\twriteOffset = writeIndex * stride;\n\n\t\t\t\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t++ writeIndex;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// flush last keyframe (compaction looks ahead)\n\n\t\tif ( lastIndex > 0 ) {\n\n\t\t\ttimes[ writeIndex ] = times[ lastIndex ];\n\n\t\t\tfor ( let readOffset = lastIndex * stride, writeOffset = writeIndex * stride, j = 0; j !== stride; ++ j ) {\n\n\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\n\n\t\t\t}\n\n\t\t\t++ writeIndex;\n\n\t\t}\n\n\t\tif ( writeIndex !== times.length ) {\n\n\t\t\tthis.times = arraySlice( times, 0, writeIndex );\n\t\t\tthis.values = arraySlice( values, 0, writeIndex * stride );\n\n\t\t} else {\n\n\t\t\tthis.times = times;\n\t\t\tthis.values = values;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\tconst times = arraySlice( this.times, 0 );\n\t\tconst values = arraySlice( this.values, 0 );\n\n\t\tconst TypedKeyframeTrack = this.constructor;\n\t\tconst track = new TypedKeyframeTrack( this.name, times, values );\n\n\t\t// Interpolant argument to constructor is not saved, so copy the factory method directly.\n\t\ttrack.createInterpolant = this.createInterpolant;\n\n\t\treturn track;\n\n\t}\n\n}\n\nKeyframeTrack.prototype.TimeBufferType = Float32Array;\nKeyframeTrack.prototype.ValueBufferType = Float32Array;\nKeyframeTrack.prototype.DefaultInterpolation = InterpolateLinear;\n\n/**\n * A Track of Boolean keyframe values.\n */\nclass BooleanKeyframeTrack extends KeyframeTrack {}\n\nBooleanKeyframeTrack.prototype.ValueTypeName = 'bool';\nBooleanKeyframeTrack.prototype.ValueBufferType = Array;\nBooleanKeyframeTrack.prototype.DefaultInterpolation = InterpolateDiscrete;\nBooleanKeyframeTrack.prototype.InterpolantFactoryMethodLinear = undefined;\nBooleanKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = undefined;\n\n/**\n * A Track of keyframe values that represent color.\n */\nclass ColorKeyframeTrack extends KeyframeTrack {}\n\nColorKeyframeTrack.prototype.ValueTypeName = 'color';\n\n/**\n * A Track of numeric keyframe values.\n */\nclass NumberKeyframeTrack extends KeyframeTrack {}\n\nNumberKeyframeTrack.prototype.ValueTypeName = 'number';\n\n/**\n * Spherical linear unit quaternion interpolant.\n */\n\nclass QuaternionLinearInterpolant extends Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t}\n\n\tinterpolate_( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\talpha = ( t - t0 ) / ( t1 - t0 );\n\n\t\tlet offset = i1 * stride;\n\n\t\tfor ( let end = offset + stride; offset !== end; offset += 4 ) {\n\n\t\t\tQuaternion.slerpFlat( result, 0, values, offset - stride, values, offset, alpha );\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n}\n\n/**\n * A Track of quaternion keyframe values.\n */\nclass QuaternionKeyframeTrack extends KeyframeTrack {\n\n\tInterpolantFactoryMethodLinear( result ) {\n\n\t\treturn new QuaternionLinearInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t}\n\n}\n\nQuaternionKeyframeTrack.prototype.ValueTypeName = 'quaternion';\n// ValueBufferType is inherited\nQuaternionKeyframeTrack.prototype.DefaultInterpolation = InterpolateLinear;\nQuaternionKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = undefined;\n\n/**\n * A Track that interpolates Strings\n */\nclass StringKeyframeTrack extends KeyframeTrack {}\n\nStringKeyframeTrack.prototype.ValueTypeName = 'string';\nStringKeyframeTrack.prototype.ValueBufferType = Array;\nStringKeyframeTrack.prototype.DefaultInterpolation = InterpolateDiscrete;\nStringKeyframeTrack.prototype.InterpolantFactoryMethodLinear = undefined;\nStringKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = undefined;\n\n/**\n * A Track of vectored keyframe values.\n */\nclass VectorKeyframeTrack extends KeyframeTrack {}\n\nVectorKeyframeTrack.prototype.ValueTypeName = 'vector';\n\nclass AnimationClip {\n\n\tconstructor( name, duration = - 1, tracks, blendMode = NormalAnimationBlendMode ) {\n\n\t\tthis.name = name;\n\t\tthis.tracks = tracks;\n\t\tthis.duration = duration;\n\t\tthis.blendMode = blendMode;\n\n\t\tthis.uuid = generateUUID();\n\n\t\t// this means it should figure out its duration by scanning the tracks\n\t\tif ( this.duration < 0 ) {\n\n\t\t\tthis.resetDuration();\n\n\t\t}\n\n\t}\n\n\n\tstatic parse( json ) {\n\n\t\tconst tracks = [],\n\t\t\tjsonTracks = json.tracks,\n\t\t\tframeTime = 1.0 / ( json.fps || 1.0 );\n\n\t\tfor ( let i = 0, n = jsonTracks.length; i !== n; ++ i ) {\n\n\t\t\ttracks.push( parseKeyframeTrack( jsonTracks[ i ] ).scale( frameTime ) );\n\n\t\t}\n\n\t\tconst clip = new this( json.name, json.duration, tracks, json.blendMode );\n\t\tclip.uuid = json.uuid;\n\n\t\treturn clip;\n\n\t}\n\n\tstatic toJSON( clip ) {\n\n\t\tconst tracks = [],\n\t\t\tclipTracks = clip.tracks;\n\n\t\tconst json = {\n\n\t\t\t'name': clip.name,\n\t\t\t'duration': clip.duration,\n\t\t\t'tracks': tracks,\n\t\t\t'uuid': clip.uuid,\n\t\t\t'blendMode': clip.blendMode\n\n\t\t};\n\n\t\tfor ( let i = 0, n = clipTracks.length; i !== n; ++ i ) {\n\n\t\t\ttracks.push( KeyframeTrack.toJSON( clipTracks[ i ] ) );\n\n\t\t}\n\n\t\treturn json;\n\n\t}\n\n\tstatic CreateFromMorphTargetSequence( name, morphTargetSequence, fps, noLoop ) {\n\n\t\tconst numMorphTargets = morphTargetSequence.length;\n\t\tconst tracks = [];\n\n\t\tfor ( let i = 0; i < numMorphTargets; i ++ ) {\n\n\t\t\tlet times = [];\n\t\t\tlet values = [];\n\n\t\t\ttimes.push(\n\t\t\t\t( i + numMorphTargets - 1 ) % numMorphTargets,\n\t\t\t\ti,\n\t\t\t\t( i + 1 ) % numMorphTargets );\n\n\t\t\tvalues.push( 0, 1, 0 );\n\n\t\t\tconst order = getKeyframeOrder( times );\n\t\t\ttimes = sortedArray( times, 1, order );\n\t\t\tvalues = sortedArray( values, 1, order );\n\n\t\t\t// if there is a key at the first frame, duplicate it as the\n\t\t\t// last frame as well for perfect loop.\n\t\t\tif ( ! noLoop && times[ 0 ] === 0 ) {\n\n\t\t\t\ttimes.push( numMorphTargets );\n\t\t\t\tvalues.push( values[ 0 ] );\n\n\t\t\t}\n\n\t\t\ttracks.push(\n\t\t\t\tnew NumberKeyframeTrack(\n\t\t\t\t\t'.morphTargetInfluences[' + morphTargetSequence[ i ].name + ']',\n\t\t\t\t\ttimes, values\n\t\t\t\t).scale( 1.0 / fps ) );\n\n\t\t}\n\n\t\treturn new this( name, - 1, tracks );\n\n\t}\n\n\tstatic findByName( objectOrClipArray, name ) {\n\n\t\tlet clipArray = objectOrClipArray;\n\n\t\tif ( ! Array.isArray( objectOrClipArray ) ) {\n\n\t\t\tconst o = objectOrClipArray;\n\t\t\tclipArray = o.geometry && o.geometry.animations || o.animations;\n\n\t\t}\n\n\t\tfor ( let i = 0; i < clipArray.length; i ++ ) {\n\n\t\t\tif ( clipArray[ i ].name === name ) {\n\n\t\t\t\treturn clipArray[ i ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\tstatic CreateClipsFromMorphTargetSequences( morphTargets, fps, noLoop ) {\n\n\t\tconst animationToMorphTargets = {};\n\n\t\t// tested with https://regex101.com/ on trick sequences\n\t\t// such flamingo_flyA_003, flamingo_run1_003, crdeath0059\n\t\tconst pattern = /^([\\w-]*?)([\\d]+)$/;\n\n\t\t// sort morph target names into animation groups based\n\t\t// patterns like Walk_001, Walk_002, Run_001, Run_002\n\t\tfor ( let i = 0, il = morphTargets.length; i < il; i ++ ) {\n\n\t\t\tconst morphTarget = morphTargets[ i ];\n\t\t\tconst parts = morphTarget.name.match( pattern );\n\n\t\t\tif ( parts && parts.length > 1 ) {\n\n\t\t\t\tconst name = parts[ 1 ];\n\n\t\t\t\tlet animationMorphTargets = animationToMorphTargets[ name ];\n\n\t\t\t\tif ( ! animationMorphTargets ) {\n\n\t\t\t\t\tanimationToMorphTargets[ name ] = animationMorphTargets = [];\n\n\t\t\t\t}\n\n\t\t\t\tanimationMorphTargets.push( morphTarget );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst clips = [];\n\n\t\tfor ( const name in animationToMorphTargets ) {\n\n\t\t\tclips.push( this.CreateFromMorphTargetSequence( name, animationToMorphTargets[ name ], fps, noLoop ) );\n\n\t\t}\n\n\t\treturn clips;\n\n\t}\n\n\t// parse the animation.hierarchy format\n\tstatic parseAnimation( animation, bones ) {\n\n\t\tif ( ! animation ) {\n\n\t\t\tconsole.error( 'THREE.AnimationClip: No animation in JSONLoader data.' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst addNonemptyTrack = function ( trackType, trackName, animationKeys, propertyName, destTracks ) {\n\n\t\t\t// only return track if there are actually keys.\n\t\t\tif ( animationKeys.length !== 0 ) {\n\n\t\t\t\tconst times = [];\n\t\t\t\tconst values = [];\n\n\t\t\t\tflattenJSON( animationKeys, times, values, propertyName );\n\n\t\t\t\t// empty keys are filtered out, so check again\n\t\t\t\tif ( times.length !== 0 ) {\n\n\t\t\t\t\tdestTracks.push( new trackType( trackName, times, values ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tconst tracks = [];\n\n\t\tconst clipName = animation.name || 'default';\n\t\tconst fps = animation.fps || 30;\n\t\tconst blendMode = animation.blendMode;\n\n\t\t// automatic length determination in AnimationClip.\n\t\tlet duration = animation.length || - 1;\n\n\t\tconst hierarchyTracks = animation.hierarchy || [];\n\n\t\tfor ( let h = 0; h < hierarchyTracks.length; h ++ ) {\n\n\t\t\tconst animationKeys = hierarchyTracks[ h ].keys;\n\n\t\t\t// skip empty tracks\n\t\t\tif ( ! animationKeys || animationKeys.length === 0 ) continue;\n\n\t\t\t// process morph targets\n\t\t\tif ( animationKeys[ 0 ].morphTargets ) {\n\n\t\t\t\t// figure out all morph targets used in this track\n\t\t\t\tconst morphTargetNames = {};\n\n\t\t\t\tlet k;\n\n\t\t\t\tfor ( k = 0; k < animationKeys.length; k ++ ) {\n\n\t\t\t\t\tif ( animationKeys[ k ].morphTargets ) {\n\n\t\t\t\t\t\tfor ( let m = 0; m < animationKeys[ k ].morphTargets.length; m ++ ) {\n\n\t\t\t\t\t\t\tmorphTargetNames[ animationKeys[ k ].morphTargets[ m ] ] = - 1;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// create a track for each morph target with all zero\n\t\t\t\t// morphTargetInfluences except for the keys in which\n\t\t\t\t// the morphTarget is named.\n\t\t\t\tfor ( const morphTargetName in morphTargetNames ) {\n\n\t\t\t\t\tconst times = [];\n\t\t\t\t\tconst values = [];\n\n\t\t\t\t\tfor ( let m = 0; m !== animationKeys[ k ].morphTargets.length; ++ m ) {\n\n\t\t\t\t\t\tconst animationKey = animationKeys[ k ];\n\n\t\t\t\t\t\ttimes.push( animationKey.time );\n\t\t\t\t\t\tvalues.push( ( animationKey.morphTarget === morphTargetName ) ? 1 : 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttracks.push( new NumberKeyframeTrack( '.morphTargetInfluence[' + morphTargetName + ']', times, values ) );\n\n\t\t\t\t}\n\n\t\t\t\tduration = morphTargetNames.length * fps;\n\n\t\t\t} else {\n\n\t\t\t\t// ...assume skeletal animation\n\n\t\t\t\tconst boneName = '.bones[' + bones[ h ].name + ']';\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tVectorKeyframeTrack, boneName + '.position',\n\t\t\t\t\tanimationKeys, 'pos', tracks );\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tQuaternionKeyframeTrack, boneName + '.quaternion',\n\t\t\t\t\tanimationKeys, 'rot', tracks );\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tVectorKeyframeTrack, boneName + '.scale',\n\t\t\t\t\tanimationKeys, 'scl', tracks );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( tracks.length === 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst clip = new this( clipName, duration, tracks, blendMode );\n\n\t\treturn clip;\n\n\t}\n\n\tresetDuration() {\n\n\t\tconst tracks = this.tracks;\n\t\tlet duration = 0;\n\n\t\tfor ( let i = 0, n = tracks.length; i !== n; ++ i ) {\n\n\t\t\tconst track = this.tracks[ i ];\n\n\t\t\tduration = Math.max( duration, track.times[ track.times.length - 1 ] );\n\n\t\t}\n\n\t\tthis.duration = duration;\n\n\t\treturn this;\n\n\t}\n\n\ttrim() {\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tthis.tracks[ i ].trim( 0, this.duration );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tvalidate() {\n\n\t\tlet valid = true;\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tvalid = valid && this.tracks[ i ].validate();\n\n\t\t}\n\n\t\treturn valid;\n\n\t}\n\n\toptimize() {\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tthis.tracks[ i ].optimize();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\tconst tracks = [];\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\ttracks.push( this.tracks[ i ].clone() );\n\n\t\t}\n\n\t\treturn new this.constructor( this.name, this.duration, tracks, this.blendMode );\n\n\t}\n\n\ttoJSON() {\n\n\t\treturn this.constructor.toJSON( this );\n\n\t}\n\n}\n\nfunction getTrackTypeForValueTypeName( typeName ) {\n\n\tswitch ( typeName.toLowerCase() ) {\n\n\t\tcase 'scalar':\n\t\tcase 'double':\n\t\tcase 'float':\n\t\tcase 'number':\n\t\tcase 'integer':\n\n\t\t\treturn NumberKeyframeTrack;\n\n\t\tcase 'vector':\n\t\tcase 'vector2':\n\t\tcase 'vector3':\n\t\tcase 'vector4':\n\n\t\t\treturn VectorKeyframeTrack;\n\n\t\tcase 'color':\n\n\t\t\treturn ColorKeyframeTrack;\n\n\t\tcase 'quaternion':\n\n\t\t\treturn QuaternionKeyframeTrack;\n\n\t\tcase 'bool':\n\t\tcase 'boolean':\n\n\t\t\treturn BooleanKeyframeTrack;\n\n\t\tcase 'string':\n\n\t\t\treturn StringKeyframeTrack;\n\n\t}\n\n\tthrow new Error( 'THREE.KeyframeTrack: Unsupported typeName: ' + typeName );\n\n}\n\nfunction parseKeyframeTrack( json ) {\n\n\tif ( json.type === undefined ) {\n\n\t\tthrow new Error( 'THREE.KeyframeTrack: track type undefined, can not parse' );\n\n\t}\n\n\tconst trackType = getTrackTypeForValueTypeName( json.type );\n\n\tif ( json.times === undefined ) {\n\n\t\tconst times = [], values = [];\n\n\t\tflattenJSON( json.keys, times, values, 'value' );\n\n\t\tjson.times = times;\n\t\tjson.values = values;\n\n\t}\n\n\t// derived classes can define a static parse method\n\tif ( trackType.parse !== undefined ) {\n\n\t\treturn trackType.parse( json );\n\n\t} else {\n\n\t\t// by default, we assume a constructor compatible with the base\n\t\treturn new trackType( json.name, json.times, json.values, json.interpolation );\n\n\t}\n\n}\n\nconst Cache = {\n\n\tenabled: false,\n\n\tfiles: {},\n\n\tadd: function ( key, file ) {\n\n\t\tif ( this.enabled === false ) return;\n\n\t\t// console.log( 'THREE.Cache', 'Adding key:', key );\n\n\t\tthis.files[ key ] = file;\n\n\t},\n\n\tget: function ( key ) {\n\n\t\tif ( this.enabled === false ) return;\n\n\t\t// console.log( 'THREE.Cache', 'Checking key:', key );\n\n\t\treturn this.files[ key ];\n\n\t},\n\n\tremove: function ( key ) {\n\n\t\tdelete this.files[ key ];\n\n\t},\n\n\tclear: function () {\n\n\t\tthis.files = {};\n\n\t}\n\n};\n\nclass LoadingManager {\n\n\tconstructor( onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tlet isLoading = false;\n\t\tlet itemsLoaded = 0;\n\t\tlet itemsTotal = 0;\n\t\tlet urlModifier = undefined;\n\t\tconst handlers = [];\n\n\t\t// Refer to #5689 for the reason why we don't set .onStart\n\t\t// in the constructor\n\n\t\tthis.onStart = undefined;\n\t\tthis.onLoad = onLoad;\n\t\tthis.onProgress = onProgress;\n\t\tthis.onError = onError;\n\n\t\tthis.itemStart = function ( url ) {\n\n\t\t\titemsTotal ++;\n\n\t\t\tif ( isLoading === false ) {\n\n\t\t\t\tif ( scope.onStart !== undefined ) {\n\n\t\t\t\t\tscope.onStart( url, itemsLoaded, itemsTotal );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tisLoading = true;\n\n\t\t};\n\n\t\tthis.itemEnd = function ( url ) {\n\n\t\t\titemsLoaded ++;\n\n\t\t\tif ( scope.onProgress !== undefined ) {\n\n\t\t\t\tscope.onProgress( url, itemsLoaded, itemsTotal );\n\n\t\t\t}\n\n\t\t\tif ( itemsLoaded === itemsTotal ) {\n\n\t\t\t\tisLoading = false;\n\n\t\t\t\tif ( scope.onLoad !== undefined ) {\n\n\t\t\t\t\tscope.onLoad();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.itemError = function ( url ) {\n\n\t\t\tif ( scope.onError !== undefined ) {\n\n\t\t\t\tscope.onError( url );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.resolveURL = function ( url ) {\n\n\t\t\tif ( urlModifier ) {\n\n\t\t\t\treturn urlModifier( url );\n\n\t\t\t}\n\n\t\t\treturn url;\n\n\t\t};\n\n\t\tthis.setURLModifier = function ( transform ) {\n\n\t\t\turlModifier = transform;\n\n\t\t\treturn this;\n\n\t\t};\n\n\t\tthis.addHandler = function ( regex, loader ) {\n\n\t\t\thandlers.push( regex, loader );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t\tthis.removeHandler = function ( regex ) {\n\n\t\t\tconst index = handlers.indexOf( regex );\n\n\t\t\tif ( index !== - 1 ) {\n\n\t\t\t\thandlers.splice( index, 2 );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t};\n\n\t\tthis.getHandler = function ( file ) {\n\n\t\t\tfor ( let i = 0, l = handlers.length; i < l; i += 2 ) {\n\n\t\t\t\tconst regex = handlers[ i ];\n\t\t\t\tconst loader = handlers[ i + 1 ];\n\n\t\t\t\tif ( regex.global ) regex.lastIndex = 0; // see #17920\n\n\t\t\t\tif ( regex.test( file ) ) {\n\n\t\t\t\t\treturn loader;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn null;\n\n\t\t};\n\n\t}\n\n}\n\nconst DefaultLoadingManager = /*@__PURE__*/ new LoadingManager();\n\nclass Loader {\n\n\tconstructor( manager ) {\n\n\t\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n\t\tthis.crossOrigin = 'anonymous';\n\t\tthis.withCredentials = false;\n\t\tthis.path = '';\n\t\tthis.resourcePath = '';\n\t\tthis.requestHeader = {};\n\n\t}\n\n\tload( /* url, onLoad, onProgress, onError */ ) {}\n\n\tloadAsync( url, onProgress ) {\n\n\t\tconst scope = this;\n\n\t\treturn new Promise( function ( resolve, reject ) {\n\n\t\t\tscope.load( url, resolve, onProgress, reject );\n\n\t\t} );\n\n\t}\n\n\tparse( /* data */ ) {}\n\n\tsetCrossOrigin( crossOrigin ) {\n\n\t\tthis.crossOrigin = crossOrigin;\n\t\treturn this;\n\n\t}\n\n\tsetWithCredentials( value ) {\n\n\t\tthis.withCredentials = value;\n\t\treturn this;\n\n\t}\n\n\tsetPath( path ) {\n\n\t\tthis.path = path;\n\t\treturn this;\n\n\t}\n\n\tsetResourcePath( resourcePath ) {\n\n\t\tthis.resourcePath = resourcePath;\n\t\treturn this;\n\n\t}\n\n\tsetRequestHeader( requestHeader ) {\n\n\t\tthis.requestHeader = requestHeader;\n\t\treturn this;\n\n\t}\n\n}\n\nconst loading = {};\n\nclass HttpError extends Error {\n\n\tconstructor( message, response ) {\n\n\t\tsuper( message );\n\t\tthis.response = response;\n\n\t}\n\n}\n\nclass FileLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tif ( url === undefined ) url = '';\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tthis.manager.itemStart( url );\n\n\t\t\tsetTimeout( () => {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tthis.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\t// Check if request is duplicate\n\n\t\tif ( loading[ url ] !== undefined ) {\n\n\t\t\tloading[ url ].push( {\n\n\t\t\t\tonLoad: onLoad,\n\t\t\t\tonProgress: onProgress,\n\t\t\t\tonError: onError\n\n\t\t\t} );\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t// Initialise array for duplicate requests\n\t\tloading[ url ] = [];\n\n\t\tloading[ url ].push( {\n\t\t\tonLoad: onLoad,\n\t\t\tonProgress: onProgress,\n\t\t\tonError: onError,\n\t\t} );\n\n\t\t// create request\n\t\tconst req = new Request( url, {\n\t\t\theaders: new Headers( this.requestHeader ),\n\t\t\tcredentials: this.withCredentials ? 'include' : 'same-origin',\n\t\t\t// An abort controller could be added within a future PR\n\t\t} );\n\n\t\t// record states ( avoid data race )\n\t\tconst mimeType = this.mimeType;\n\t\tconst responseType = this.responseType;\n\n\t\t// start the fetch\n\t\tfetch( req )\n\t\t\t.then( response => {\n\n\t\t\t\tif ( response.status === 200 || response.status === 0 ) {\n\n\t\t\t\t\t// Some browsers return HTTP Status 0 when using non-http protocol\n\t\t\t\t\t// e.g. 'file://' or 'data://'. Handle as success.\n\n\t\t\t\t\tif ( response.status === 0 ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.FileLoader: HTTP Status 0 received.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// Workaround: Checking if response.body === undefined for Alipay browser #23548\n\n\t\t\t\t\tif ( typeof ReadableStream === 'undefined' || response.body === undefined || response.body.getReader === undefined ) {\n\n\t\t\t\t\t\treturn response;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst callbacks = loading[ url ];\n\t\t\t\t\tconst reader = response.body.getReader();\n\t\t\t\t\tconst contentLength = response.headers.get( 'Content-Length' );\n\t\t\t\t\tconst total = contentLength ? parseInt( contentLength ) : 0;\n\t\t\t\t\tconst lengthComputable = total !== 0;\n\t\t\t\t\tlet loaded = 0;\n\n\t\t\t\t\t// periodically read data into the new stream tracking while download progress\n\t\t\t\t\tconst stream = new ReadableStream( {\n\t\t\t\t\t\tstart( controller ) {\n\n\t\t\t\t\t\t\treadData();\n\n\t\t\t\t\t\t\tfunction readData() {\n\n\t\t\t\t\t\t\t\treader.read().then( ( { done, value } ) => {\n\n\t\t\t\t\t\t\t\t\tif ( done ) {\n\n\t\t\t\t\t\t\t\t\t\tcontroller.close();\n\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\tloaded += value.byteLength;\n\n\t\t\t\t\t\t\t\t\t\tconst event = new ProgressEvent( 'progress', { lengthComputable, loaded, total } );\n\t\t\t\t\t\t\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\t\t\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\t\t\t\t\t\t\tif ( callback.onProgress ) callback.onProgress( event );\n\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tcontroller.enqueue( value );\n\t\t\t\t\t\t\t\t\t\treadData();\n\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} );\n\n\t\t\t\t\treturn new Response( stream );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new HttpError( `fetch for \"${response.url}\" responded with ${response.status}: ${response.statusText}`, response );\n\n\t\t\t\t}\n\n\t\t\t} )\n\t\t\t.then( response => {\n\n\t\t\t\tswitch ( responseType ) {\n\n\t\t\t\t\tcase 'arraybuffer':\n\n\t\t\t\t\t\treturn response.arrayBuffer();\n\n\t\t\t\t\tcase 'blob':\n\n\t\t\t\t\t\treturn response.blob();\n\n\t\t\t\t\tcase 'document':\n\n\t\t\t\t\t\treturn response.text()\n\t\t\t\t\t\t\t.then( text => {\n\n\t\t\t\t\t\t\t\tconst parser = new DOMParser();\n\t\t\t\t\t\t\t\treturn parser.parseFromString( text, mimeType );\n\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\tcase 'json':\n\n\t\t\t\t\t\treturn response.json();\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tif ( mimeType === undefined ) {\n\n\t\t\t\t\t\t\treturn response.text();\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// sniff encoding\n\t\t\t\t\t\t\tconst re = /charset=\"?([^;\"\\s]*)\"?/i;\n\t\t\t\t\t\t\tconst exec = re.exec( mimeType );\n\t\t\t\t\t\t\tconst label = exec && exec[ 1 ] ? exec[ 1 ].toLowerCase() : undefined;\n\t\t\t\t\t\t\tconst decoder = new TextDecoder( label );\n\t\t\t\t\t\t\treturn response.arrayBuffer().then( ab => decoder.decode( ab ) );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} )\n\t\t\t.then( data => {\n\n\t\t\t\t// Add to cache only on HTTP success, so that we do not cache\n\t\t\t\t// error response bodies as proper responses to requests.\n\t\t\t\tCache.add( url, data );\n\n\t\t\t\tconst callbacks = loading[ url ];\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onLoad ) callback.onLoad( data );\n\n\t\t\t\t}\n\n\t\t\t} )\n\t\t\t.catch( err => {\n\n\t\t\t\t// Abort errors and other errors are handled the same\n\n\t\t\t\tconst callbacks = loading[ url ];\n\n\t\t\t\tif ( callbacks === undefined ) {\n\n\t\t\t\t\t// When onLoad was called and url was deleted in `loading`\n\t\t\t\t\tthis.manager.itemError( url );\n\t\t\t\t\tthrow err;\n\n\t\t\t\t}\n\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onError ) callback.onError( err );\n\n\t\t\t\t}\n\n\t\t\t\tthis.manager.itemError( url );\n\n\t\t\t} )\n\t\t\t.finally( () => {\n\n\t\t\t\tthis.manager.itemEnd( url );\n\n\t\t\t} );\n\n\t\tthis.manager.itemStart( url );\n\n\t}\n\n\tsetResponseType( value ) {\n\n\t\tthis.responseType = value;\n\t\treturn this;\n\n\t}\n\n\tsetMimeType( value ) {\n\n\t\tthis.mimeType = value;\n\t\treturn this;\n\n\t}\n\n}\n\nclass AnimationLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\tparse( json ) {\n\n\t\tconst animations = [];\n\n\t\tfor ( let i = 0; i < json.length; i ++ ) {\n\n\t\t\tconst clip = AnimationClip.parse( json[ i ] );\n\n\t\t\tanimations.push( clip );\n\n\t\t}\n\n\t\treturn animations;\n\n\t}\n\n}\n\n/**\n * Abstract Base class to block based textures loader (dds, pvr, ...)\n *\n * Sub classes have to implement the parse() method which will be used in load().\n */\n\nclass CompressedTextureLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst images = [];\n\n\t\tconst texture = new CompressedTexture();\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\n\t\tlet loaded = 0;\n\n\t\tfunction loadTexture( i ) {\n\n\t\t\tloader.load( url[ i ], function ( buffer ) {\n\n\t\t\t\tconst texDatas = scope.parse( buffer, true );\n\n\t\t\t\timages[ i ] = {\n\t\t\t\t\twidth: texDatas.width,\n\t\t\t\t\theight: texDatas.height,\n\t\t\t\t\tformat: texDatas.format,\n\t\t\t\t\tmipmaps: texDatas.mipmaps\n\t\t\t\t};\n\n\t\t\t\tloaded += 1;\n\n\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\tif ( texDatas.mipmapCount === 1 ) texture.minFilter = LinearFilter;\n\n\t\t\t\t\ttexture.image = images;\n\t\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t}\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\tif ( Array.isArray( url ) ) {\n\n\t\t\tfor ( let i = 0, il = url.length; i < il; ++ i ) {\n\n\t\t\t\tloadTexture( i );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// compressed cubemap texture stored in a single DDS file\n\n\t\t\tloader.load( url, function ( buffer ) {\n\n\t\t\t\tconst texDatas = scope.parse( buffer, true );\n\n\t\t\t\tif ( texDatas.isCubemap ) {\n\n\t\t\t\t\tconst faces = texDatas.mipmaps.length / texDatas.mipmapCount;\n\n\t\t\t\t\tfor ( let f = 0; f < faces; f ++ ) {\n\n\t\t\t\t\t\timages[ f ] = { mipmaps: [] };\n\n\t\t\t\t\t\tfor ( let i = 0; i < texDatas.mipmapCount; i ++ ) {\n\n\t\t\t\t\t\t\timages[ f ].mipmaps.push( texDatas.mipmaps[ f * texDatas.mipmapCount + i ] );\n\t\t\t\t\t\t\timages[ f ].format = texDatas.format;\n\t\t\t\t\t\t\timages[ f ].width = texDatas.width;\n\t\t\t\t\t\t\timages[ f ].height = texDatas.height;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttexture.image = images;\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttexture.image.width = texDatas.width;\n\t\t\t\t\ttexture.image.height = texDatas.height;\n\t\t\t\t\ttexture.mipmaps = texDatas.mipmaps;\n\n\t\t\t\t}\n\n\t\t\t\tif ( texDatas.mipmapCount === 1 ) {\n\n\t\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t\t}\n\n\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n}\n\nclass ImageLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst scope = this;\n\n\t\tconst cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\tconst image = createElementNS( 'img' );\n\n\t\tfunction onImageLoad() {\n\n\t\t\tremoveEventListeners();\n\n\t\t\tCache.add( url, this );\n\n\t\t\tif ( onLoad ) onLoad( this );\n\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t}\n\n\t\tfunction onImageError( event ) {\n\n\t\t\tremoveEventListeners();\n\n\t\t\tif ( onError ) onError( event );\n\n\t\t\tscope.manager.itemError( url );\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t}\n\n\t\tfunction removeEventListeners() {\n\n\t\t\timage.removeEventListener( 'load', onImageLoad, false );\n\t\t\timage.removeEventListener( 'error', onImageError, false );\n\n\t\t}\n\n\t\timage.addEventListener( 'load', onImageLoad, false );\n\t\timage.addEventListener( 'error', onImageError, false );\n\n\t\tif ( url.slice( 0, 5 ) !== 'data:' ) {\n\n\t\t\tif ( this.crossOrigin !== undefined ) image.crossOrigin = this.crossOrigin;\n\n\t\t}\n\n\t\tscope.manager.itemStart( url );\n\n\t\timage.src = url;\n\n\t\treturn image;\n\n\t}\n\n}\n\nclass CubeTextureLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( urls, onLoad, onProgress, onError ) {\n\n\t\tconst texture = new CubeTexture();\n\n\t\tconst loader = new ImageLoader( this.manager );\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\tloader.setPath( this.path );\n\n\t\tlet loaded = 0;\n\n\t\tfunction loadTexture( i ) {\n\n\t\t\tloader.load( urls[ i ], function ( image ) {\n\n\t\t\t\ttexture.images[ i ] = image;\n\n\t\t\t\tloaded ++;\n\n\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t}\n\n\t\t\t}, undefined, onError );\n\n\t\t}\n\n\t\tfor ( let i = 0; i < urls.length; ++ i ) {\n\n\t\t\tloadTexture( i );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n}\n\n/**\n * Abstract Base class to load generic binary textures formats (rgbe, hdr, ...)\n *\n * Sub classes have to implement the parse() method which will be used in load().\n */\n\nclass DataTextureLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst texture = new DataTexture();\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setPath( this.path );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\tconst texData = scope.parse( buffer );\n\n\t\t\tif ( ! texData ) return;\n\n\t\t\tif ( texData.image !== undefined ) {\n\n\t\t\t\ttexture.image = texData.image;\n\n\t\t\t} else if ( texData.data !== undefined ) {\n\n\t\t\t\ttexture.image.width = texData.width;\n\t\t\t\ttexture.image.height = texData.height;\n\t\t\t\ttexture.image.data = texData.data;\n\n\t\t\t}\n\n\t\t\ttexture.wrapS = texData.wrapS !== undefined ? texData.wrapS : ClampToEdgeWrapping;\n\t\t\ttexture.wrapT = texData.wrapT !== undefined ? texData.wrapT : ClampToEdgeWrapping;\n\n\t\t\ttexture.magFilter = texData.magFilter !== undefined ? texData.magFilter : LinearFilter;\n\t\t\ttexture.minFilter = texData.minFilter !== undefined ? texData.minFilter : LinearFilter;\n\n\t\t\ttexture.anisotropy = texData.anisotropy !== undefined ? texData.anisotropy : 1;\n\n\t\t\tif ( texData.encoding !== undefined ) {\n\n\t\t\t\ttexture.encoding = texData.encoding;\n\n\t\t\t}\n\n\t\t\tif ( texData.flipY !== undefined ) {\n\n\t\t\t\ttexture.flipY = texData.flipY;\n\n\t\t\t}\n\n\t\t\tif ( texData.format !== undefined ) {\n\n\t\t\t\ttexture.format = texData.format;\n\n\t\t\t}\n\n\t\t\tif ( texData.type !== undefined ) {\n\n\t\t\t\ttexture.type = texData.type;\n\n\t\t\t}\n\n\t\t\tif ( texData.mipmaps !== undefined ) {\n\n\t\t\t\ttexture.mipmaps = texData.mipmaps;\n\t\t\t\ttexture.minFilter = LinearMipmapLinearFilter; // presumably...\n\n\t\t\t}\n\n\t\t\tif ( texData.mipmapCount === 1 ) {\n\n\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t}\n\n\t\t\tif ( texData.generateMipmaps !== undefined ) {\n\n\t\t\t\ttexture.generateMipmaps = texData.generateMipmaps;\n\n\t\t\t}\n\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tif ( onLoad ) onLoad( texture, texData );\n\n\t\t}, onProgress, onError );\n\n\n\t\treturn texture;\n\n\t}\n\n}\n\nclass TextureLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst texture = new Texture();\n\n\t\tconst loader = new ImageLoader( this.manager );\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\tloader.setPath( this.path );\n\n\t\tloader.load( url, function ( image ) {\n\n\t\t\ttexture.image = image;\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tif ( onLoad !== undefined ) {\n\n\t\t\t\tonLoad( texture );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t\treturn texture;\n\n\t}\n\n}\n\nclass Light extends Object3D {\n\n\tconstructor( color, intensity = 1 ) {\n\n\t\tsuper();\n\n\t\tthis.isLight = true;\n\n\t\tthis.type = 'Light';\n\n\t\tthis.color = new Color( color );\n\t\tthis.intensity = intensity;\n\n\t}\n\n\tdispose() {\n\n\t\t// Empty here in base class; some subclasses override.\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.color.copy( source.color );\n\t\tthis.intensity = source.intensity;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.color = this.color.getHex();\n\t\tdata.object.intensity = this.intensity;\n\n\t\tif ( this.groundColor !== undefined ) data.object.groundColor = this.groundColor.getHex();\n\n\t\tif ( this.distance !== undefined ) data.object.distance = this.distance;\n\t\tif ( this.angle !== undefined ) data.object.angle = this.angle;\n\t\tif ( this.decay !== undefined ) data.object.decay = this.decay;\n\t\tif ( this.penumbra !== undefined ) data.object.penumbra = this.penumbra;\n\n\t\tif ( this.shadow !== undefined ) data.object.shadow = this.shadow.toJSON();\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass HemisphereLight extends Light {\n\n\tconstructor( skyColor, groundColor, intensity ) {\n\n\t\tsuper( skyColor, intensity );\n\n\t\tthis.isHemisphereLight = true;\n\n\t\tthis.type = 'HemisphereLight';\n\n\t\tthis.position.copy( Object3D.DefaultUp );\n\t\tthis.updateMatrix();\n\n\t\tthis.groundColor = new Color( groundColor );\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.groundColor.copy( source.groundColor );\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _projScreenMatrix$1 = /*@__PURE__*/ new Matrix4();\nconst _lightPositionWorld$1 = /*@__PURE__*/ new Vector3();\nconst _lookTarget$1 = /*@__PURE__*/ new Vector3();\n\nclass LightShadow {\n\n\tconstructor( camera ) {\n\n\t\tthis.camera = camera;\n\n\t\tthis.bias = 0;\n\t\tthis.normalBias = 0;\n\t\tthis.radius = 1;\n\t\tthis.blurSamples = 8;\n\n\t\tthis.mapSize = new Vector2( 512, 512 );\n\n\t\tthis.map = null;\n\t\tthis.mapPass = null;\n\t\tthis.matrix = new Matrix4();\n\n\t\tthis.autoUpdate = true;\n\t\tthis.needsUpdate = false;\n\n\t\tthis._frustum = new Frustum();\n\t\tthis._frameExtents = new Vector2( 1, 1 );\n\n\t\tthis._viewportCount = 1;\n\n\t\tthis._viewports = [\n\n\t\t\tnew Vector4( 0, 0, 1, 1 )\n\n\t\t];\n\n\t}\n\n\tgetViewportCount() {\n\n\t\treturn this._viewportCount;\n\n\t}\n\n\tgetFrustum() {\n\n\t\treturn this._frustum;\n\n\t}\n\n\tupdateMatrices( light ) {\n\n\t\tconst shadowCamera = this.camera;\n\t\tconst shadowMatrix = this.matrix;\n\n\t\t_lightPositionWorld$1.setFromMatrixPosition( light.matrixWorld );\n\t\tshadowCamera.position.copy( _lightPositionWorld$1 );\n\n\t\t_lookTarget$1.setFromMatrixPosition( light.target.matrixWorld );\n\t\tshadowCamera.lookAt( _lookTarget$1 );\n\t\tshadowCamera.updateMatrixWorld();\n\n\t\t_projScreenMatrix$1.multiplyMatrices( shadowCamera.projectionMatrix, shadowCamera.matrixWorldInverse );\n\t\tthis._frustum.setFromProjectionMatrix( _projScreenMatrix$1 );\n\n\t\tshadowMatrix.set(\n\t\t\t0.5, 0.0, 0.0, 0.5,\n\t\t\t0.0, 0.5, 0.0, 0.5,\n\t\t\t0.0, 0.0, 0.5, 0.5,\n\t\t\t0.0, 0.0, 0.0, 1.0\n\t\t);\n\n\t\tshadowMatrix.multiply( shadowCamera.projectionMatrix );\n\t\tshadowMatrix.multiply( shadowCamera.matrixWorldInverse );\n\n\t}\n\n\tgetViewport( viewportIndex ) {\n\n\t\treturn this._viewports[ viewportIndex ];\n\n\t}\n\n\tgetFrameExtents() {\n\n\t\treturn this._frameExtents;\n\n\t}\n\n\tdispose() {\n\n\t\tif ( this.map ) {\n\n\t\t\tthis.map.dispose();\n\n\t\t}\n\n\t\tif ( this.mapPass ) {\n\n\t\t\tthis.mapPass.dispose();\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.camera = source.camera.clone();\n\n\t\tthis.bias = source.bias;\n\t\tthis.radius = source.radius;\n\n\t\tthis.mapSize.copy( source.mapSize );\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst object = {};\n\n\t\tif ( this.bias !== 0 ) object.bias = this.bias;\n\t\tif ( this.normalBias !== 0 ) object.normalBias = this.normalBias;\n\t\tif ( this.radius !== 1 ) object.radius = this.radius;\n\t\tif ( this.mapSize.x !== 512 || this.mapSize.y !== 512 ) object.mapSize = this.mapSize.toArray();\n\n\t\tobject.camera = this.camera.toJSON( false ).object;\n\t\tdelete object.camera.matrix;\n\n\t\treturn object;\n\n\t}\n\n}\n\nclass SpotLightShadow extends LightShadow {\n\n\tconstructor() {\n\n\t\tsuper( new PerspectiveCamera( 50, 1, 0.5, 500 ) );\n\n\t\tthis.isSpotLightShadow = true;\n\n\t\tthis.focus = 1;\n\n\t}\n\n\tupdateMatrices( light ) {\n\n\t\tconst camera = this.camera;\n\n\t\tconst fov = RAD2DEG * 2 * light.angle * this.focus;\n\t\tconst aspect = this.mapSize.width / this.mapSize.height;\n\t\tconst far = light.distance || camera.far;\n\n\t\tif ( fov !== camera.fov || aspect !== camera.aspect || far !== camera.far ) {\n\n\t\t\tcamera.fov = fov;\n\t\t\tcamera.aspect = aspect;\n\t\t\tcamera.far = far;\n\t\t\tcamera.updateProjectionMatrix();\n\n\t\t}\n\n\t\tsuper.updateMatrices( light );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.focus = source.focus;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass SpotLight extends Light {\n\n\tconstructor( color, intensity, distance = 0, angle = Math.PI / 3, penumbra = 0, decay = 1 ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.isSpotLight = true;\n\n\t\tthis.type = 'SpotLight';\n\n\t\tthis.position.copy( Object3D.DefaultUp );\n\t\tthis.updateMatrix();\n\n\t\tthis.target = new Object3D();\n\n\t\tthis.distance = distance;\n\t\tthis.angle = angle;\n\t\tthis.penumbra = penumbra;\n\t\tthis.decay = decay; // for physically correct lights, should be 2.\n\n\t\tthis.shadow = new SpotLightShadow();\n\n\t}\n\n\tget power() {\n\n\t\t// compute the light's luminous power (in lumens) from its intensity (in candela)\n\t\t// by convention for a spotlight, luminous power (lm) = π * luminous intensity (cd)\n\t\treturn this.intensity * Math.PI;\n\n\t}\n\n\tset power( power ) {\n\n\t\t// set the light's intensity (in candela) from the desired luminous power (in lumens)\n\t\tthis.intensity = power / Math.PI;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.shadow.dispose();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.distance = source.distance;\n\t\tthis.angle = source.angle;\n\t\tthis.penumbra = source.penumbra;\n\t\tthis.decay = source.decay;\n\n\t\tthis.target = source.target.clone();\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _projScreenMatrix = /*@__PURE__*/ new Matrix4();\nconst _lightPositionWorld = /*@__PURE__*/ new Vector3();\nconst _lookTarget = /*@__PURE__*/ new Vector3();\n\nclass PointLightShadow extends LightShadow {\n\n\tconstructor() {\n\n\t\tsuper( new PerspectiveCamera( 90, 1, 0.5, 500 ) );\n\n\t\tthis.isPointLightShadow = true;\n\n\t\tthis._frameExtents = new Vector2( 4, 2 );\n\n\t\tthis._viewportCount = 6;\n\n\t\tthis._viewports = [\n\t\t\t// These viewports map a cube-map onto a 2D texture with the\n\t\t\t// following orientation:\n\t\t\t//\n\t\t\t//  xzXZ\n\t\t\t//   y Y\n\t\t\t//\n\t\t\t// X - Positive x direction\n\t\t\t// x - Negative x direction\n\t\t\t// Y - Positive y direction\n\t\t\t// y - Negative y direction\n\t\t\t// Z - Positive z direction\n\t\t\t// z - Negative z direction\n\n\t\t\t// positive X\n\t\t\tnew Vector4( 2, 1, 1, 1 ),\n\t\t\t// negative X\n\t\t\tnew Vector4( 0, 1, 1, 1 ),\n\t\t\t// positive Z\n\t\t\tnew Vector4( 3, 1, 1, 1 ),\n\t\t\t// negative Z\n\t\t\tnew Vector4( 1, 1, 1, 1 ),\n\t\t\t// positive Y\n\t\t\tnew Vector4( 3, 0, 1, 1 ),\n\t\t\t// negative Y\n\t\t\tnew Vector4( 1, 0, 1, 1 )\n\t\t];\n\n\t\tthis._cubeDirections = [\n\t\t\tnew Vector3( 1, 0, 0 ), new Vector3( - 1, 0, 0 ), new Vector3( 0, 0, 1 ),\n\t\t\tnew Vector3( 0, 0, - 1 ), new Vector3( 0, 1, 0 ), new Vector3( 0, - 1, 0 )\n\t\t];\n\n\t\tthis._cubeUps = [\n\t\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ),\n\t\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 0, 1 ),\tnew Vector3( 0, 0, - 1 )\n\t\t];\n\n\t}\n\n\tupdateMatrices( light, viewportIndex = 0 ) {\n\n\t\tconst camera = this.camera;\n\t\tconst shadowMatrix = this.matrix;\n\n\t\tconst far = light.distance || camera.far;\n\n\t\tif ( far !== camera.far ) {\n\n\t\t\tcamera.far = far;\n\t\t\tcamera.updateProjectionMatrix();\n\n\t\t}\n\n\t\t_lightPositionWorld.setFromMatrixPosition( light.matrixWorld );\n\t\tcamera.position.copy( _lightPositionWorld );\n\n\t\t_lookTarget.copy( camera.position );\n\t\t_lookTarget.add( this._cubeDirections[ viewportIndex ] );\n\t\tcamera.up.copy( this._cubeUps[ viewportIndex ] );\n\t\tcamera.lookAt( _lookTarget );\n\t\tcamera.updateMatrixWorld();\n\n\t\tshadowMatrix.makeTranslation( - _lightPositionWorld.x, - _lightPositionWorld.y, - _lightPositionWorld.z );\n\n\t\t_projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );\n\t\tthis._frustum.setFromProjectionMatrix( _projScreenMatrix );\n\n\t}\n\n}\n\nclass PointLight extends Light {\n\n\tconstructor( color, intensity, distance = 0, decay = 1 ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.isPointLight = true;\n\n\t\tthis.type = 'PointLight';\n\n\t\tthis.distance = distance;\n\t\tthis.decay = decay; // for physically correct lights, should be 2.\n\n\t\tthis.shadow = new PointLightShadow();\n\n\t}\n\n\tget power() {\n\n\t\t// compute the light's luminous power (in lumens) from its intensity (in candela)\n\t\t// for an isotropic light source, luminous power (lm) = 4 π luminous intensity (cd)\n\t\treturn this.intensity * 4 * Math.PI;\n\n\t}\n\n\tset power( power ) {\n\n\t\t// set the light's intensity (in candela) from the desired luminous power (in lumens)\n\t\tthis.intensity = power / ( 4 * Math.PI );\n\n\t}\n\n\tdispose() {\n\n\t\tthis.shadow.dispose();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.distance = source.distance;\n\t\tthis.decay = source.decay;\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass DirectionalLightShadow extends LightShadow {\n\n\tconstructor() {\n\n\t\tsuper( new OrthographicCamera( - 5, 5, 5, - 5, 0.5, 500 ) );\n\n\t\tthis.isDirectionalLightShadow = true;\n\n\t}\n\n}\n\nclass DirectionalLight extends Light {\n\n\tconstructor( color, intensity ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.isDirectionalLight = true;\n\n\t\tthis.type = 'DirectionalLight';\n\n\t\tthis.position.copy( Object3D.DefaultUp );\n\t\tthis.updateMatrix();\n\n\t\tthis.target = new Object3D();\n\n\t\tthis.shadow = new DirectionalLightShadow();\n\n\t}\n\n\tdispose() {\n\n\t\tthis.shadow.dispose();\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.target = source.target.clone();\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass AmbientLight extends Light {\n\n\tconstructor( color, intensity ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.isAmbientLight = true;\n\n\t\tthis.type = 'AmbientLight';\n\n\t}\n\n}\n\nclass RectAreaLight extends Light {\n\n\tconstructor( color, intensity, width = 10, height = 10 ) {\n\n\t\tsuper( color, intensity );\n\n\t\tthis.isRectAreaLight = true;\n\n\t\tthis.type = 'RectAreaLight';\n\n\t\tthis.width = width;\n\t\tthis.height = height;\n\n\t}\n\n\tget power() {\n\n\t\t// compute the light's luminous power (in lumens) from its intensity (in nits)\n\t\treturn this.intensity * this.width * this.height * Math.PI;\n\n\t}\n\n\tset power( power ) {\n\n\t\t// set the light's intensity (in nits) from the desired luminous power (in lumens)\n\t\tthis.intensity = power / ( this.width * this.height * Math.PI );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.width = this.width;\n\t\tdata.object.height = this.height;\n\n\t\treturn data;\n\n\t}\n\n}\n\n/**\n * Primary reference:\n *   https://graphics.stanford.edu/papers/envmap/envmap.pdf\n *\n * Secondary reference:\n *   https://www.ppsloan.org/publications/StupidSH36.pdf\n */\n\n// 3-band SH defined by 9 coefficients\n\nclass SphericalHarmonics3 {\n\n\tconstructor() {\n\n\t\tthis.isSphericalHarmonics3 = true;\n\n\t\tthis.coefficients = [];\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients.push( new Vector3() );\n\n\t\t}\n\n\t}\n\n\tset( coefficients ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].copy( coefficients[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tzero() {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].set( 0, 0, 0 );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// get the radiance in the direction of the normal\n\t// target is a Vector3\n\tgetAt( normal, target ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\tconst coeff = this.coefficients;\n\n\t\t// band 0\n\t\ttarget.copy( coeff[ 0 ] ).multiplyScalar( 0.282095 );\n\n\t\t// band 1\n\t\ttarget.addScaledVector( coeff[ 1 ], 0.488603 * y );\n\t\ttarget.addScaledVector( coeff[ 2 ], 0.488603 * z );\n\t\ttarget.addScaledVector( coeff[ 3 ], 0.488603 * x );\n\n\t\t// band 2\n\t\ttarget.addScaledVector( coeff[ 4 ], 1.092548 * ( x * y ) );\n\t\ttarget.addScaledVector( coeff[ 5 ], 1.092548 * ( y * z ) );\n\t\ttarget.addScaledVector( coeff[ 6 ], 0.315392 * ( 3.0 * z * z - 1.0 ) );\n\t\ttarget.addScaledVector( coeff[ 7 ], 1.092548 * ( x * z ) );\n\t\ttarget.addScaledVector( coeff[ 8 ], 0.546274 * ( x * x - y * y ) );\n\n\t\treturn target;\n\n\t}\n\n\t// get the irradiance (radiance convolved with cosine lobe) in the direction of the normal\n\t// target is a Vector3\n\t// https://graphics.stanford.edu/papers/envmap/envmap.pdf\n\tgetIrradianceAt( normal, target ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\tconst coeff = this.coefficients;\n\n\t\t// band 0\n\t\ttarget.copy( coeff[ 0 ] ).multiplyScalar( 0.886227 ); // π * 0.282095\n\n\t\t// band 1\n\t\ttarget.addScaledVector( coeff[ 1 ], 2.0 * 0.511664 * y ); // ( 2 * π / 3 ) * 0.488603\n\t\ttarget.addScaledVector( coeff[ 2 ], 2.0 * 0.511664 * z );\n\t\ttarget.addScaledVector( coeff[ 3 ], 2.0 * 0.511664 * x );\n\n\t\t// band 2\n\t\ttarget.addScaledVector( coeff[ 4 ], 2.0 * 0.429043 * x * y ); // ( π / 4 ) * 1.092548\n\t\ttarget.addScaledVector( coeff[ 5 ], 2.0 * 0.429043 * y * z );\n\t\ttarget.addScaledVector( coeff[ 6 ], 0.743125 * z * z - 0.247708 ); // ( π / 4 ) * 0.315392 * 3\n\t\ttarget.addScaledVector( coeff[ 7 ], 2.0 * 0.429043 * x * z );\n\t\ttarget.addScaledVector( coeff[ 8 ], 0.429043 * ( x * x - y * y ) ); // ( π / 4 ) * 0.546274\n\n\t\treturn target;\n\n\t}\n\n\tadd( sh ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].add( sh.coefficients[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\taddScaledSH( sh, s ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].addScaledVector( sh.coefficients[ i ], s );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tscale( s ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].multiplyScalar( s );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tlerp( sh, alpha ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].lerp( sh.coefficients[ i ], alpha );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tequals( sh ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tif ( ! this.coefficients[ i ].equals( sh.coefficients[ i ] ) ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tcopy( sh ) {\n\n\t\treturn this.set( sh.coefficients );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tconst coefficients = this.coefficients;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tcoefficients[ i ].fromArray( array, offset + ( i * 3 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tconst coefficients = this.coefficients;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tcoefficients[ i ].toArray( array, offset + ( i * 3 ) );\n\n\t\t}\n\n\t\treturn array;\n\n\t}\n\n\t// evaluate the basis functions\n\t// shBasis is an Array[ 9 ]\n\tstatic getBasisAt( normal, shBasis ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\t// band 0\n\t\tshBasis[ 0 ] = 0.282095;\n\n\t\t// band 1\n\t\tshBasis[ 1 ] = 0.488603 * y;\n\t\tshBasis[ 2 ] = 0.488603 * z;\n\t\tshBasis[ 3 ] = 0.488603 * x;\n\n\t\t// band 2\n\t\tshBasis[ 4 ] = 1.092548 * x * y;\n\t\tshBasis[ 5 ] = 1.092548 * y * z;\n\t\tshBasis[ 6 ] = 0.315392 * ( 3 * z * z - 1 );\n\t\tshBasis[ 7 ] = 1.092548 * x * z;\n\t\tshBasis[ 8 ] = 0.546274 * ( x * x - y * y );\n\n\t}\n\n}\n\nclass LightProbe extends Light {\n\n\tconstructor( sh = new SphericalHarmonics3(), intensity = 1 ) {\n\n\t\tsuper( undefined, intensity );\n\n\t\tthis.isLightProbe = true;\n\n\t\tthis.sh = sh;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.sh.copy( source.sh );\n\n\t\treturn this;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tthis.intensity = json.intensity; // TODO: Move this bit to Light.fromJSON();\n\t\tthis.sh.fromArray( json.sh );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.sh = this.sh.toArray();\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass MaterialLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\t\tthis.textures = {};\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.setRequestHeader( scope.requestHeader );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\tparse( json ) {\n\n\t\tconst textures = this.textures;\n\n\t\tfunction getTexture( name ) {\n\n\t\t\tif ( textures[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.MaterialLoader: Undefined texture', name );\n\n\t\t\t}\n\n\t\t\treturn textures[ name ];\n\n\t\t}\n\n\t\tconst material = MaterialLoader.createMaterialFromType( json.type );\n\n\t\tif ( json.uuid !== undefined ) material.uuid = json.uuid;\n\t\tif ( json.name !== undefined ) material.name = json.name;\n\t\tif ( json.color !== undefined && material.color !== undefined ) material.color.setHex( json.color );\n\t\tif ( json.roughness !== undefined ) material.roughness = json.roughness;\n\t\tif ( json.metalness !== undefined ) material.metalness = json.metalness;\n\t\tif ( json.sheen !== undefined ) material.sheen = json.sheen;\n\t\tif ( json.sheenColor !== undefined ) material.sheenColor = new Color().setHex( json.sheenColor );\n\t\tif ( json.sheenRoughness !== undefined ) material.sheenRoughness = json.sheenRoughness;\n\t\tif ( json.emissive !== undefined && material.emissive !== undefined ) material.emissive.setHex( json.emissive );\n\t\tif ( json.specular !== undefined && material.specular !== undefined ) material.specular.setHex( json.specular );\n\t\tif ( json.specularIntensity !== undefined ) material.specularIntensity = json.specularIntensity;\n\t\tif ( json.specularColor !== undefined && material.specularColor !== undefined ) material.specularColor.setHex( json.specularColor );\n\t\tif ( json.shininess !== undefined ) material.shininess = json.shininess;\n\t\tif ( json.clearcoat !== undefined ) material.clearcoat = json.clearcoat;\n\t\tif ( json.clearcoatRoughness !== undefined ) material.clearcoatRoughness = json.clearcoatRoughness;\n\t\tif ( json.iridescence !== undefined ) material.iridescence = json.iridescence;\n\t\tif ( json.iridescenceIOR !== undefined ) material.iridescenceIOR = json.iridescenceIOR;\n\t\tif ( json.iridescenceThicknessRange !== undefined ) material.iridescenceThicknessRange = json.iridescenceThicknessRange;\n\t\tif ( json.transmission !== undefined ) material.transmission = json.transmission;\n\t\tif ( json.thickness !== undefined ) material.thickness = json.thickness;\n\t\tif ( json.attenuationDistance !== undefined ) material.attenuationDistance = json.attenuationDistance;\n\t\tif ( json.attenuationColor !== undefined && material.attenuationColor !== undefined ) material.attenuationColor.setHex( json.attenuationColor );\n\t\tif ( json.fog !== undefined ) material.fog = json.fog;\n\t\tif ( json.flatShading !== undefined ) material.flatShading = json.flatShading;\n\t\tif ( json.blending !== undefined ) material.blending = json.blending;\n\t\tif ( json.combine !== undefined ) material.combine = json.combine;\n\t\tif ( json.side !== undefined ) material.side = json.side;\n\t\tif ( json.shadowSide !== undefined ) material.shadowSide = json.shadowSide;\n\t\tif ( json.opacity !== undefined ) material.opacity = json.opacity;\n\t\tif ( json.transparent !== undefined ) material.transparent = json.transparent;\n\t\tif ( json.alphaTest !== undefined ) material.alphaTest = json.alphaTest;\n\t\tif ( json.depthTest !== undefined ) material.depthTest = json.depthTest;\n\t\tif ( json.depthWrite !== undefined ) material.depthWrite = json.depthWrite;\n\t\tif ( json.colorWrite !== undefined ) material.colorWrite = json.colorWrite;\n\n\t\tif ( json.stencilWrite !== undefined ) material.stencilWrite = json.stencilWrite;\n\t\tif ( json.stencilWriteMask !== undefined ) material.stencilWriteMask = json.stencilWriteMask;\n\t\tif ( json.stencilFunc !== undefined ) material.stencilFunc = json.stencilFunc;\n\t\tif ( json.stencilRef !== undefined ) material.stencilRef = json.stencilRef;\n\t\tif ( json.stencilFuncMask !== undefined ) material.stencilFuncMask = json.stencilFuncMask;\n\t\tif ( json.stencilFail !== undefined ) material.stencilFail = json.stencilFail;\n\t\tif ( json.stencilZFail !== undefined ) material.stencilZFail = json.stencilZFail;\n\t\tif ( json.stencilZPass !== undefined ) material.stencilZPass = json.stencilZPass;\n\n\t\tif ( json.wireframe !== undefined ) material.wireframe = json.wireframe;\n\t\tif ( json.wireframeLinewidth !== undefined ) material.wireframeLinewidth = json.wireframeLinewidth;\n\t\tif ( json.wireframeLinecap !== undefined ) material.wireframeLinecap = json.wireframeLinecap;\n\t\tif ( json.wireframeLinejoin !== undefined ) material.wireframeLinejoin = json.wireframeLinejoin;\n\n\t\tif ( json.rotation !== undefined ) material.rotation = json.rotation;\n\n\t\tif ( json.linewidth !== 1 ) material.linewidth = json.linewidth;\n\t\tif ( json.dashSize !== undefined ) material.dashSize = json.dashSize;\n\t\tif ( json.gapSize !== undefined ) material.gapSize = json.gapSize;\n\t\tif ( json.scale !== undefined ) material.scale = json.scale;\n\n\t\tif ( json.polygonOffset !== undefined ) material.polygonOffset = json.polygonOffset;\n\t\tif ( json.polygonOffsetFactor !== undefined ) material.polygonOffsetFactor = json.polygonOffsetFactor;\n\t\tif ( json.polygonOffsetUnits !== undefined ) material.polygonOffsetUnits = json.polygonOffsetUnits;\n\n\t\tif ( json.dithering !== undefined ) material.dithering = json.dithering;\n\n\t\tif ( json.alphaToCoverage !== undefined ) material.alphaToCoverage = json.alphaToCoverage;\n\t\tif ( json.premultipliedAlpha !== undefined ) material.premultipliedAlpha = json.premultipliedAlpha;\n\n\t\tif ( json.visible !== undefined ) material.visible = json.visible;\n\n\t\tif ( json.toneMapped !== undefined ) material.toneMapped = json.toneMapped;\n\n\t\tif ( json.userData !== undefined ) material.userData = json.userData;\n\n\t\tif ( json.vertexColors !== undefined ) {\n\n\t\t\tif ( typeof json.vertexColors === 'number' ) {\n\n\t\t\t\tmaterial.vertexColors = ( json.vertexColors > 0 ) ? true : false;\n\n\t\t\t} else {\n\n\t\t\t\tmaterial.vertexColors = json.vertexColors;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Shader Material\n\n\t\tif ( json.uniforms !== undefined ) {\n\n\t\t\tfor ( const name in json.uniforms ) {\n\n\t\t\t\tconst uniform = json.uniforms[ name ];\n\n\t\t\t\tmaterial.uniforms[ name ] = {};\n\n\t\t\t\tswitch ( uniform.type ) {\n\n\t\t\t\t\tcase 't':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = getTexture( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'c':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Color().setHex( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v2':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector2().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v3':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector3().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v4':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector4().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'm3':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Matrix3().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'm4':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Matrix4().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = uniform.value;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json.defines !== undefined ) material.defines = json.defines;\n\t\tif ( json.vertexShader !== undefined ) material.vertexShader = json.vertexShader;\n\t\tif ( json.fragmentShader !== undefined ) material.fragmentShader = json.fragmentShader;\n\n\t\tif ( json.extensions !== undefined ) {\n\n\t\t\tfor ( const key in json.extensions ) {\n\n\t\t\t\tmaterial.extensions[ key ] = json.extensions[ key ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Deprecated\n\n\t\tif ( json.shading !== undefined ) material.flatShading = json.shading === 1; // THREE.FlatShading\n\n\t\t// for PointsMaterial\n\n\t\tif ( json.size !== undefined ) material.size = json.size;\n\t\tif ( json.sizeAttenuation !== undefined ) material.sizeAttenuation = json.sizeAttenuation;\n\n\t\t// maps\n\n\t\tif ( json.map !== undefined ) material.map = getTexture( json.map );\n\t\tif ( json.matcap !== undefined ) material.matcap = getTexture( json.matcap );\n\n\t\tif ( json.alphaMap !== undefined ) material.alphaMap = getTexture( json.alphaMap );\n\n\t\tif ( json.bumpMap !== undefined ) material.bumpMap = getTexture( json.bumpMap );\n\t\tif ( json.bumpScale !== undefined ) material.bumpScale = json.bumpScale;\n\n\t\tif ( json.normalMap !== undefined ) material.normalMap = getTexture( json.normalMap );\n\t\tif ( json.normalMapType !== undefined ) material.normalMapType = json.normalMapType;\n\t\tif ( json.normalScale !== undefined ) {\n\n\t\t\tlet normalScale = json.normalScale;\n\n\t\t\tif ( Array.isArray( normalScale ) === false ) {\n\n\t\t\t\t// Blender exporter used to export a scalar. See #7459\n\n\t\t\t\tnormalScale = [ normalScale, normalScale ];\n\n\t\t\t}\n\n\t\t\tmaterial.normalScale = new Vector2().fromArray( normalScale );\n\n\t\t}\n\n\t\tif ( json.displacementMap !== undefined ) material.displacementMap = getTexture( json.displacementMap );\n\t\tif ( json.displacementScale !== undefined ) material.displacementScale = json.displacementScale;\n\t\tif ( json.displacementBias !== undefined ) material.displacementBias = json.displacementBias;\n\n\t\tif ( json.roughnessMap !== undefined ) material.roughnessMap = getTexture( json.roughnessMap );\n\t\tif ( json.metalnessMap !== undefined ) material.metalnessMap = getTexture( json.metalnessMap );\n\n\t\tif ( json.emissiveMap !== undefined ) material.emissiveMap = getTexture( json.emissiveMap );\n\t\tif ( json.emissiveIntensity !== undefined ) material.emissiveIntensity = json.emissiveIntensity;\n\n\t\tif ( json.specularMap !== undefined ) material.specularMap = getTexture( json.specularMap );\n\t\tif ( json.specularIntensityMap !== undefined ) material.specularIntensityMap = getTexture( json.specularIntensityMap );\n\t\tif ( json.specularColorMap !== undefined ) material.specularColorMap = getTexture( json.specularColorMap );\n\n\t\tif ( json.envMap !== undefined ) material.envMap = getTexture( json.envMap );\n\t\tif ( json.envMapIntensity !== undefined ) material.envMapIntensity = json.envMapIntensity;\n\n\t\tif ( json.reflectivity !== undefined ) material.reflectivity = json.reflectivity;\n\t\tif ( json.refractionRatio !== undefined ) material.refractionRatio = json.refractionRatio;\n\n\t\tif ( json.lightMap !== undefined ) material.lightMap = getTexture( json.lightMap );\n\t\tif ( json.lightMapIntensity !== undefined ) material.lightMapIntensity = json.lightMapIntensity;\n\n\t\tif ( json.aoMap !== undefined ) material.aoMap = getTexture( json.aoMap );\n\t\tif ( json.aoMapIntensity !== undefined ) material.aoMapIntensity = json.aoMapIntensity;\n\n\t\tif ( json.gradientMap !== undefined ) material.gradientMap = getTexture( json.gradientMap );\n\n\t\tif ( json.clearcoatMap !== undefined ) material.clearcoatMap = getTexture( json.clearcoatMap );\n\t\tif ( json.clearcoatRoughnessMap !== undefined ) material.clearcoatRoughnessMap = getTexture( json.clearcoatRoughnessMap );\n\t\tif ( json.clearcoatNormalMap !== undefined ) material.clearcoatNormalMap = getTexture( json.clearcoatNormalMap );\n\t\tif ( json.clearcoatNormalScale !== undefined ) material.clearcoatNormalScale = new Vector2().fromArray( json.clearcoatNormalScale );\n\n\t\tif ( json.iridescenceMap !== undefined ) material.iridescenceMap = getTexture( json.iridescenceMap );\n\t\tif ( json.iridescenceThicknessMap !== undefined ) material.iridescenceThicknessMap = getTexture( json.iridescenceThicknessMap );\n\n\t\tif ( json.transmissionMap !== undefined ) material.transmissionMap = getTexture( json.transmissionMap );\n\t\tif ( json.thicknessMap !== undefined ) material.thicknessMap = getTexture( json.thicknessMap );\n\n\t\tif ( json.sheenColorMap !== undefined ) material.sheenColorMap = getTexture( json.sheenColorMap );\n\t\tif ( json.sheenRoughnessMap !== undefined ) material.sheenRoughnessMap = getTexture( json.sheenRoughnessMap );\n\n\t\treturn material;\n\n\t}\n\n\tsetTextures( value ) {\n\n\t\tthis.textures = value;\n\t\treturn this;\n\n\t}\n\n\tstatic createMaterialFromType( type ) {\n\n\t\tconst materialLib = {\n\t\t\tShadowMaterial,\n\t\t\tSpriteMaterial,\n\t\t\tRawShaderMaterial,\n\t\t\tShaderMaterial,\n\t\t\tPointsMaterial,\n\t\t\tMeshPhysicalMaterial,\n\t\t\tMeshStandardMaterial,\n\t\t\tMeshPhongMaterial,\n\t\t\tMeshToonMaterial,\n\t\t\tMeshNormalMaterial,\n\t\t\tMeshLambertMaterial,\n\t\t\tMeshDepthMaterial,\n\t\t\tMeshDistanceMaterial,\n\t\t\tMeshBasicMaterial,\n\t\t\tMeshMatcapMaterial,\n\t\t\tLineDashedMaterial,\n\t\t\tLineBasicMaterial,\n\t\t\tMaterial\n\t\t};\n\n\t\treturn new materialLib[ type ]();\n\n\t}\n\n}\n\nclass LoaderUtils {\n\n\tstatic decodeText( array ) {\n\n\t\tif ( typeof TextDecoder !== 'undefined' ) {\n\n\t\t\treturn new TextDecoder().decode( array );\n\n\t\t}\n\n\t\t// Avoid the String.fromCharCode.apply(null, array) shortcut, which\n\t\t// throws a \"maximum call stack size exceeded\" error for large arrays.\n\n\t\tlet s = '';\n\n\t\tfor ( let i = 0, il = array.length; i < il; i ++ ) {\n\n\t\t\t// Implicitly assumes little-endian.\n\t\t\ts += String.fromCharCode( array[ i ] );\n\n\t\t}\n\n\t\ttry {\n\n\t\t\t// merges multi-byte utf-8 characters.\n\n\t\t\treturn decodeURIComponent( escape( s ) );\n\n\t\t} catch ( e ) { // see #16358\n\n\t\t\treturn s;\n\n\t\t}\n\n\t}\n\n\tstatic extractUrlBase( url ) {\n\n\t\tconst index = url.lastIndexOf( '/' );\n\n\t\tif ( index === - 1 ) return './';\n\n\t\treturn url.slice( 0, index + 1 );\n\n\t}\n\n\tstatic resolveURL( url, path ) {\n\n\t\t// Invalid URL\n\t\tif ( typeof url !== 'string' || url === '' ) return '';\n\n\t\t// Host Relative URL\n\t\tif ( /^https?:\\/\\//i.test( path ) && /^\\//.test( url ) ) {\n\n\t\t\tpath = path.replace( /(^https?:\\/\\/[^\\/]+).*/i, '$1' );\n\n\t\t}\n\n\t\t// Absolute URL http://,https://,//\n\t\tif ( /^(https?:)?\\/\\//i.test( url ) ) return url;\n\n\t\t// Data URI\n\t\tif ( /^data:.*,.*$/i.test( url ) ) return url;\n\n\t\t// Blob URL\n\t\tif ( /^blob:.*$/i.test( url ) ) return url;\n\n\t\t// Relative URL\n\t\treturn path + url;\n\n\t}\n\n}\n\nclass InstancedBufferGeometry extends BufferGeometry {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isInstancedBufferGeometry = true;\n\n\t\tthis.type = 'InstancedBufferGeometry';\n\t\tthis.instanceCount = Infinity;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.instanceCount = source.instanceCount;\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON( this );\n\n\t\tdata.instanceCount = this.instanceCount;\n\n\t\tdata.isInstancedBufferGeometry = true;\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass BufferGeometryLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.setRequestHeader( scope.requestHeader );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\tparse( json ) {\n\n\t\tconst interleavedBufferMap = {};\n\t\tconst arrayBufferMap = {};\n\n\t\tfunction getInterleavedBuffer( json, uuid ) {\n\n\t\t\tif ( interleavedBufferMap[ uuid ] !== undefined ) return interleavedBufferMap[ uuid ];\n\n\t\t\tconst interleavedBuffers = json.interleavedBuffers;\n\t\t\tconst interleavedBuffer = interleavedBuffers[ uuid ];\n\n\t\t\tconst buffer = getArrayBuffer( json, interleavedBuffer.buffer );\n\n\t\t\tconst array = getTypedArray( interleavedBuffer.type, buffer );\n\t\t\tconst ib = new InterleavedBuffer( array, interleavedBuffer.stride );\n\t\t\tib.uuid = interleavedBuffer.uuid;\n\n\t\t\tinterleavedBufferMap[ uuid ] = ib;\n\n\t\t\treturn ib;\n\n\t\t}\n\n\t\tfunction getArrayBuffer( json, uuid ) {\n\n\t\t\tif ( arrayBufferMap[ uuid ] !== undefined ) return arrayBufferMap[ uuid ];\n\n\t\t\tconst arrayBuffers = json.arrayBuffers;\n\t\t\tconst arrayBuffer = arrayBuffers[ uuid ];\n\n\t\t\tconst ab = new Uint32Array( arrayBuffer ).buffer;\n\n\t\t\tarrayBufferMap[ uuid ] = ab;\n\n\t\t\treturn ab;\n\n\t\t}\n\n\t\tconst geometry = json.isInstancedBufferGeometry ? new InstancedBufferGeometry() : new BufferGeometry();\n\n\t\tconst index = json.data.index;\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tconst typedArray = getTypedArray( index.type, index.array );\n\t\t\tgeometry.setIndex( new BufferAttribute( typedArray, 1 ) );\n\n\t\t}\n\n\t\tconst attributes = json.data.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tconst attribute = attributes[ key ];\n\t\t\tlet bufferAttribute;\n\n\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\tconst interleavedBuffer = getInterleavedBuffer( json.data, attribute.data );\n\t\t\t\tbufferAttribute = new InterleavedBufferAttribute( interleavedBuffer, attribute.itemSize, attribute.offset, attribute.normalized );\n\n\t\t\t} else {\n\n\t\t\t\tconst typedArray = getTypedArray( attribute.type, attribute.array );\n\t\t\t\tconst bufferAttributeConstr = attribute.isInstancedBufferAttribute ? InstancedBufferAttribute : BufferAttribute;\n\t\t\t\tbufferAttribute = new bufferAttributeConstr( typedArray, attribute.itemSize, attribute.normalized );\n\n\t\t\t}\n\n\t\t\tif ( attribute.name !== undefined ) bufferAttribute.name = attribute.name;\n\t\t\tif ( attribute.usage !== undefined ) bufferAttribute.setUsage( attribute.usage );\n\n\t\t\tif ( attribute.updateRange !== undefined ) {\n\n\t\t\t\tbufferAttribute.updateRange.offset = attribute.updateRange.offset;\n\t\t\t\tbufferAttribute.updateRange.count = attribute.updateRange.count;\n\n\t\t\t}\n\n\t\t\tgeometry.setAttribute( key, bufferAttribute );\n\n\t\t}\n\n\t\tconst morphAttributes = json.data.morphAttributes;\n\n\t\tif ( morphAttributes ) {\n\n\t\t\tfor ( const key in morphAttributes ) {\n\n\t\t\t\tconst attributeArray = morphAttributes[ key ];\n\n\t\t\t\tconst array = [];\n\n\t\t\t\tfor ( let i = 0, il = attributeArray.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst attribute = attributeArray[ i ];\n\t\t\t\t\tlet bufferAttribute;\n\n\t\t\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\t\tconst interleavedBuffer = getInterleavedBuffer( json.data, attribute.data );\n\t\t\t\t\t\tbufferAttribute = new InterleavedBufferAttribute( interleavedBuffer, attribute.itemSize, attribute.offset, attribute.normalized );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst typedArray = getTypedArray( attribute.type, attribute.array );\n\t\t\t\t\t\tbufferAttribute = new BufferAttribute( typedArray, attribute.itemSize, attribute.normalized );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( attribute.name !== undefined ) bufferAttribute.name = attribute.name;\n\t\t\t\t\tarray.push( bufferAttribute );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.morphAttributes[ key ] = array;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst morphTargetsRelative = json.data.morphTargetsRelative;\n\n\t\tif ( morphTargetsRelative ) {\n\n\t\t\tgeometry.morphTargetsRelative = true;\n\n\t\t}\n\n\t\tconst groups = json.data.groups || json.data.drawcalls || json.data.offsets;\n\n\t\tif ( groups !== undefined ) {\n\n\t\t\tfor ( let i = 0, n = groups.length; i !== n; ++ i ) {\n\n\t\t\t\tconst group = groups[ i ];\n\n\t\t\t\tgeometry.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst boundingSphere = json.data.boundingSphere;\n\n\t\tif ( boundingSphere !== undefined ) {\n\n\t\t\tconst center = new Vector3();\n\n\t\t\tif ( boundingSphere.center !== undefined ) {\n\n\t\t\t\tcenter.fromArray( boundingSphere.center );\n\n\t\t\t}\n\n\t\t\tgeometry.boundingSphere = new Sphere( center, boundingSphere.radius );\n\n\t\t}\n\n\t\tif ( json.name ) geometry.name = json.name;\n\t\tif ( json.userData ) geometry.userData = json.userData;\n\n\t\treturn geometry;\n\n\t}\n\n}\n\nclass ObjectLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst path = ( this.path === '' ) ? LoaderUtils.extractUrlBase( url ) : this.path;\n\t\tthis.resourcePath = this.resourcePath || path;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tlet json = null;\n\n\t\t\ttry {\n\n\t\t\t\tjson = JSON.parse( text );\n\n\t\t\t} catch ( error ) {\n\n\t\t\t\tif ( onError !== undefined ) onError( error );\n\n\t\t\t\tconsole.error( 'THREE:ObjectLoader: Can\\'t parse ' + url + '.', error.message );\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tconst metadata = json.metadata;\n\n\t\t\tif ( metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry' ) {\n\n\t\t\t\tconsole.error( 'THREE.ObjectLoader: Can\\'t load ' + url );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tscope.parse( json, onLoad );\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\tasync loadAsync( url, onProgress ) {\n\n\t\tconst scope = this;\n\n\t\tconst path = ( this.path === '' ) ? LoaderUtils.extractUrlBase( url ) : this.path;\n\t\tthis.resourcePath = this.resourcePath || path;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\n\t\tconst text = await loader.loadAsync( url, onProgress );\n\n\t\tconst json = JSON.parse( text );\n\n\t\tconst metadata = json.metadata;\n\n\t\tif ( metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry' ) {\n\n\t\t\tthrow new Error( 'THREE.ObjectLoader: Can\\'t load ' + url );\n\n\t\t}\n\n\t\treturn await scope.parseAsync( json );\n\n\t}\n\n\tparse( json, onLoad ) {\n\n\t\tconst animations = this.parseAnimations( json.animations );\n\t\tconst shapes = this.parseShapes( json.shapes );\n\t\tconst geometries = this.parseGeometries( json.geometries, shapes );\n\n\t\tconst images = this.parseImages( json.images, function () {\n\n\t\t\tif ( onLoad !== undefined ) onLoad( object );\n\n\t\t} );\n\n\t\tconst textures = this.parseTextures( json.textures, images );\n\t\tconst materials = this.parseMaterials( json.materials, textures );\n\n\t\tconst object = this.parseObject( json.object, geometries, materials, textures, animations );\n\t\tconst skeletons = this.parseSkeletons( json.skeletons, object );\n\n\t\tthis.bindSkeletons( object, skeletons );\n\n\t\t//\n\n\t\tif ( onLoad !== undefined ) {\n\n\t\t\tlet hasImages = false;\n\n\t\t\tfor ( const uuid in images ) {\n\n\t\t\t\tif ( images[ uuid ].data instanceof HTMLImageElement ) {\n\n\t\t\t\t\thasImages = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( hasImages === false ) onLoad( object );\n\n\t\t}\n\n\t\treturn object;\n\n\t}\n\n\tasync parseAsync( json ) {\n\n\t\tconst animations = this.parseAnimations( json.animations );\n\t\tconst shapes = this.parseShapes( json.shapes );\n\t\tconst geometries = this.parseGeometries( json.geometries, shapes );\n\n\t\tconst images = await this.parseImagesAsync( json.images );\n\n\t\tconst textures = this.parseTextures( json.textures, images );\n\t\tconst materials = this.parseMaterials( json.materials, textures );\n\n\t\tconst object = this.parseObject( json.object, geometries, materials, textures, animations );\n\t\tconst skeletons = this.parseSkeletons( json.skeletons, object );\n\n\t\tthis.bindSkeletons( object, skeletons );\n\n\t\treturn object;\n\n\t}\n\n\tparseShapes( json ) {\n\n\t\tconst shapes = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst shape = new Shape().fromJSON( json[ i ] );\n\n\t\t\t\tshapes[ shape.uuid ] = shape;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn shapes;\n\n\t}\n\n\tparseSkeletons( json, object ) {\n\n\t\tconst skeletons = {};\n\t\tconst bones = {};\n\n\t\t// generate bone lookup table\n\n\t\tobject.traverse( function ( child ) {\n\n\t\t\tif ( child.isBone ) bones[ child.uuid ] = child;\n\n\t\t} );\n\n\t\t// create skeletons\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst skeleton = new Skeleton().fromJSON( json[ i ], bones );\n\n\t\t\t\tskeletons[ skeleton.uuid ] = skeleton;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn skeletons;\n\n\t}\n\n\tparseGeometries( json, shapes ) {\n\n\t\tconst geometries = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tconst bufferGeometryLoader = new BufferGeometryLoader();\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tlet geometry;\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tswitch ( data.type ) {\n\n\t\t\t\t\tcase 'BufferGeometry':\n\t\t\t\t\tcase 'InstancedBufferGeometry':\n\n\t\t\t\t\t\tgeometry = bufferGeometryLoader.parse( data );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'Geometry':\n\n\t\t\t\t\t\tconsole.error( 'THREE.ObjectLoader: The legacy Geometry type is no longer supported.' );\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tif ( data.type in Geometries ) {\n\n\t\t\t\t\t\t\tgeometry = Geometries[ data.type ].fromJSON( data, shapes );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tconsole.warn( `THREE.ObjectLoader: Unsupported geometry type \"${ data.type }\"` );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) geometry.name = data.name;\n\t\t\t\tif ( geometry.isBufferGeometry === true && data.userData !== undefined ) geometry.userData = data.userData;\n\n\t\t\t\tgeometries[ data.uuid ] = geometry;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn geometries;\n\n\t}\n\n\tparseMaterials( json, textures ) {\n\n\t\tconst cache = {}; // MultiMaterial\n\t\tconst materials = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tconst loader = new MaterialLoader();\n\t\t\tloader.setTextures( textures );\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tif ( data.type === 'MultiMaterial' ) {\n\n\t\t\t\t\t// Deprecated\n\n\t\t\t\t\tconst array = [];\n\n\t\t\t\t\tfor ( let j = 0; j < data.materials.length; j ++ ) {\n\n\t\t\t\t\t\tconst material = data.materials[ j ];\n\n\t\t\t\t\t\tif ( cache[ material.uuid ] === undefined ) {\n\n\t\t\t\t\t\t\tcache[ material.uuid ] = loader.parse( material );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tarray.push( cache[ material.uuid ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmaterials[ data.uuid ] = array;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( cache[ data.uuid ] === undefined ) {\n\n\t\t\t\t\t\tcache[ data.uuid ] = loader.parse( data );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tmaterials[ data.uuid ] = cache[ data.uuid ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn materials;\n\n\t}\n\n\tparseAnimations( json ) {\n\n\t\tconst animations = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0; i < json.length; i ++ ) {\n\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tconst clip = AnimationClip.parse( data );\n\n\t\t\t\tanimations[ clip.uuid ] = clip;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn animations;\n\n\t}\n\n\tparseImages( json, onLoad ) {\n\n\t\tconst scope = this;\n\t\tconst images = {};\n\n\t\tlet loader;\n\n\t\tfunction loadImage( url ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\treturn loader.load( url, function () {\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, undefined, function () {\n\n\t\t\t\tscope.manager.itemError( url );\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t} );\n\n\t\t}\n\n\t\tfunction deserializeImage( image ) {\n\n\t\t\tif ( typeof image === 'string' ) {\n\n\t\t\t\tconst url = image;\n\n\t\t\t\tconst path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( url ) ? url : scope.resourcePath + url;\n\n\t\t\t\treturn loadImage( path );\n\n\t\t\t} else {\n\n\t\t\t\tif ( image.data ) {\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdata: getTypedArray( image.type, image.data ),\n\t\t\t\t\t\twidth: image.width,\n\t\t\t\t\t\theight: image.height\n\t\t\t\t\t};\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json !== undefined && json.length > 0 ) {\n\n\t\t\tconst manager = new LoadingManager( onLoad );\n\n\t\t\tloader = new ImageLoader( manager );\n\t\t\tloader.setCrossOrigin( this.crossOrigin );\n\n\t\t\tfor ( let i = 0, il = json.length; i < il; i ++ ) {\n\n\t\t\t\tconst image = json[ i ];\n\t\t\t\tconst url = image.url;\n\n\t\t\t\tif ( Array.isArray( url ) ) {\n\n\t\t\t\t\t// load array of images e.g CubeTexture\n\n\t\t\t\t\tconst imageArray = [];\n\n\t\t\t\t\tfor ( let j = 0, jl = url.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tconst currentUrl = url[ j ];\n\n\t\t\t\t\t\tconst deserializedImage = deserializeImage( currentUrl );\n\n\t\t\t\t\t\tif ( deserializedImage !== null ) {\n\n\t\t\t\t\t\t\tif ( deserializedImage instanceof HTMLImageElement ) {\n\n\t\t\t\t\t\t\t\timageArray.push( deserializedImage );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// special case: handle array of data textures for cube textures\n\n\t\t\t\t\t\t\t\timageArray.push( new DataTexture( deserializedImage.data, deserializedImage.width, deserializedImage.height ) );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\timages[ image.uuid ] = new Source( imageArray );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// load single image\n\n\t\t\t\t\tconst deserializedImage = deserializeImage( image.url );\n\t\t\t\t\timages[ image.uuid ] = new Source( deserializedImage );\n\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn images;\n\n\t}\n\n\tasync parseImagesAsync( json ) {\n\n\t\tconst scope = this;\n\t\tconst images = {};\n\n\t\tlet loader;\n\n\t\tasync function deserializeImage( image ) {\n\n\t\t\tif ( typeof image === 'string' ) {\n\n\t\t\t\tconst url = image;\n\n\t\t\t\tconst path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( url ) ? url : scope.resourcePath + url;\n\n\t\t\t\treturn await loader.loadAsync( path );\n\n\t\t\t} else {\n\n\t\t\t\tif ( image.data ) {\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdata: getTypedArray( image.type, image.data ),\n\t\t\t\t\t\twidth: image.width,\n\t\t\t\t\t\theight: image.height\n\t\t\t\t\t};\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json !== undefined && json.length > 0 ) {\n\n\t\t\tloader = new ImageLoader( this.manager );\n\t\t\tloader.setCrossOrigin( this.crossOrigin );\n\n\t\t\tfor ( let i = 0, il = json.length; i < il; i ++ ) {\n\n\t\t\t\tconst image = json[ i ];\n\t\t\t\tconst url = image.url;\n\n\t\t\t\tif ( Array.isArray( url ) ) {\n\n\t\t\t\t\t// load array of images e.g CubeTexture\n\n\t\t\t\t\tconst imageArray = [];\n\n\t\t\t\t\tfor ( let j = 0, jl = url.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tconst currentUrl = url[ j ];\n\n\t\t\t\t\t\tconst deserializedImage = await deserializeImage( currentUrl );\n\n\t\t\t\t\t\tif ( deserializedImage !== null ) {\n\n\t\t\t\t\t\t\tif ( deserializedImage instanceof HTMLImageElement ) {\n\n\t\t\t\t\t\t\t\timageArray.push( deserializedImage );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// special case: handle array of data textures for cube textures\n\n\t\t\t\t\t\t\t\timageArray.push( new DataTexture( deserializedImage.data, deserializedImage.width, deserializedImage.height ) );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\timages[ image.uuid ] = new Source( imageArray );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// load single image\n\n\t\t\t\t\tconst deserializedImage = await deserializeImage( image.url );\n\t\t\t\t\timages[ image.uuid ] = new Source( deserializedImage );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn images;\n\n\t}\n\n\tparseTextures( json, images ) {\n\n\t\tfunction parseConstant( value, type ) {\n\n\t\t\tif ( typeof value === 'number' ) return value;\n\n\t\t\tconsole.warn( 'THREE.ObjectLoader.parseTexture: Constant should be in numeric form.', value );\n\n\t\t\treturn type[ value ];\n\n\t\t}\n\n\t\tconst textures = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tif ( data.image === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: No \"image\" specified for', data.uuid );\n\n\t\t\t\t}\n\n\t\t\t\tif ( images[ data.image ] === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined image', data.image );\n\n\t\t\t\t}\n\n\t\t\t\tconst source = images[ data.image ];\n\t\t\t\tconst image = source.data;\n\n\t\t\t\tlet texture;\n\n\t\t\t\tif ( Array.isArray( image ) ) {\n\n\t\t\t\t\ttexture = new CubeTexture();\n\n\t\t\t\t\tif ( image.length === 6 ) texture.needsUpdate = true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( image && image.data ) {\n\n\t\t\t\t\t\ttexture = new DataTexture();\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ttexture = new Texture();\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( image ) texture.needsUpdate = true; // textures can have undefined image data\n\n\t\t\t\t}\n\n\t\t\t\ttexture.source = source;\n\n\t\t\t\ttexture.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) texture.name = data.name;\n\n\t\t\t\tif ( data.mapping !== undefined ) texture.mapping = parseConstant( data.mapping, TEXTURE_MAPPING );\n\n\t\t\t\tif ( data.offset !== undefined ) texture.offset.fromArray( data.offset );\n\t\t\t\tif ( data.repeat !== undefined ) texture.repeat.fromArray( data.repeat );\n\t\t\t\tif ( data.center !== undefined ) texture.center.fromArray( data.center );\n\t\t\t\tif ( data.rotation !== undefined ) texture.rotation = data.rotation;\n\n\t\t\t\tif ( data.wrap !== undefined ) {\n\n\t\t\t\t\ttexture.wrapS = parseConstant( data.wrap[ 0 ], TEXTURE_WRAPPING );\n\t\t\t\t\ttexture.wrapT = parseConstant( data.wrap[ 1 ], TEXTURE_WRAPPING );\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.format !== undefined ) texture.format = data.format;\n\t\t\t\tif ( data.type !== undefined ) texture.type = data.type;\n\t\t\t\tif ( data.encoding !== undefined ) texture.encoding = data.encoding;\n\n\t\t\t\tif ( data.minFilter !== undefined ) texture.minFilter = parseConstant( data.minFilter, TEXTURE_FILTER );\n\t\t\t\tif ( data.magFilter !== undefined ) texture.magFilter = parseConstant( data.magFilter, TEXTURE_FILTER );\n\t\t\t\tif ( data.anisotropy !== undefined ) texture.anisotropy = data.anisotropy;\n\n\t\t\t\tif ( data.flipY !== undefined ) texture.flipY = data.flipY;\n\n\t\t\t\tif ( data.premultiplyAlpha !== undefined ) texture.premultiplyAlpha = data.premultiplyAlpha;\n\t\t\t\tif ( data.unpackAlignment !== undefined ) texture.unpackAlignment = data.unpackAlignment;\n\n\t\t\t\tif ( data.userData !== undefined ) texture.userData = data.userData;\n\n\t\t\t\ttextures[ data.uuid ] = texture;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn textures;\n\n\t}\n\n\tparseObject( data, geometries, materials, textures, animations ) {\n\n\t\tlet object;\n\n\t\tfunction getGeometry( name ) {\n\n\t\t\tif ( geometries[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined geometry', name );\n\n\t\t\t}\n\n\t\t\treturn geometries[ name ];\n\n\t\t}\n\n\t\tfunction getMaterial( name ) {\n\n\t\t\tif ( name === undefined ) return undefined;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\n\t\t\t\tconst array = [];\n\n\t\t\t\tfor ( let i = 0, l = name.length; i < l; i ++ ) {\n\n\t\t\t\t\tconst uuid = name[ i ];\n\n\t\t\t\t\tif ( materials[ uuid ] === undefined ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined material', uuid );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tarray.push( materials[ uuid ] );\n\n\t\t\t\t}\n\n\t\t\t\treturn array;\n\n\t\t\t}\n\n\t\t\tif ( materials[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined material', name );\n\n\t\t\t}\n\n\t\t\treturn materials[ name ];\n\n\t\t}\n\n\t\tfunction getTexture( uuid ) {\n\n\t\t\tif ( textures[ uuid ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined texture', uuid );\n\n\t\t\t}\n\n\t\t\treturn textures[ uuid ];\n\n\t\t}\n\n\t\tlet geometry, material;\n\n\t\tswitch ( data.type ) {\n\n\t\t\tcase 'Scene':\n\n\t\t\t\tobject = new Scene();\n\n\t\t\t\tif ( data.background !== undefined ) {\n\n\t\t\t\t\tif ( Number.isInteger( data.background ) ) {\n\n\t\t\t\t\t\tobject.background = new Color( data.background );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tobject.background = getTexture( data.background );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.environment !== undefined ) {\n\n\t\t\t\t\tobject.environment = getTexture( data.environment );\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.fog !== undefined ) {\n\n\t\t\t\t\tif ( data.fog.type === 'Fog' ) {\n\n\t\t\t\t\t\tobject.fog = new Fog( data.fog.color, data.fog.near, data.fog.far );\n\n\t\t\t\t\t} else if ( data.fog.type === 'FogExp2' ) {\n\n\t\t\t\t\t\tobject.fog = new FogExp2( data.fog.color, data.fog.density );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PerspectiveCamera':\n\n\t\t\t\tobject = new PerspectiveCamera( data.fov, data.aspect, data.near, data.far );\n\n\t\t\t\tif ( data.focus !== undefined ) object.focus = data.focus;\n\t\t\t\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\n\t\t\t\tif ( data.filmGauge !== undefined ) object.filmGauge = data.filmGauge;\n\t\t\t\tif ( data.filmOffset !== undefined ) object.filmOffset = data.filmOffset;\n\t\t\t\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'OrthographicCamera':\n\n\t\t\t\tobject = new OrthographicCamera( data.left, data.right, data.top, data.bottom, data.near, data.far );\n\n\t\t\t\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\n\t\t\t\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'AmbientLight':\n\n\t\t\t\tobject = new AmbientLight( data.color, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'DirectionalLight':\n\n\t\t\t\tobject = new DirectionalLight( data.color, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PointLight':\n\n\t\t\t\tobject = new PointLight( data.color, data.intensity, data.distance, data.decay );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'RectAreaLight':\n\n\t\t\t\tobject = new RectAreaLight( data.color, data.intensity, data.width, data.height );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'SpotLight':\n\n\t\t\t\tobject = new SpotLight( data.color, data.intensity, data.distance, data.angle, data.penumbra, data.decay );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'HemisphereLight':\n\n\t\t\t\tobject = new HemisphereLight( data.color, data.groundColor, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LightProbe':\n\n\t\t\t\tobject = new LightProbe().fromJSON( data );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'SkinnedMesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t \tmaterial = getMaterial( data.material );\n\n\t\t\t\tobject = new SkinnedMesh( geometry, material );\n\n\t\t\t\tif ( data.bindMode !== undefined ) object.bindMode = data.bindMode;\n\t\t\t\tif ( data.bindMatrix !== undefined ) object.bindMatrix.fromArray( data.bindMatrix );\n\t\t\t\tif ( data.skeleton !== undefined ) object.skeleton = data.skeleton;\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Mesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t\tmaterial = getMaterial( data.material );\n\n\t\t\t\tobject = new Mesh( geometry, material );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'InstancedMesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t\tmaterial = getMaterial( data.material );\n\t\t\t\tconst count = data.count;\n\t\t\t\tconst instanceMatrix = data.instanceMatrix;\n\t\t\t\tconst instanceColor = data.instanceColor;\n\n\t\t\t\tobject = new InstancedMesh( geometry, material, count );\n\t\t\t\tobject.instanceMatrix = new InstancedBufferAttribute( new Float32Array( instanceMatrix.array ), 16 );\n\t\t\t\tif ( instanceColor !== undefined ) object.instanceColor = new InstancedBufferAttribute( new Float32Array( instanceColor.array ), instanceColor.itemSize );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LOD':\n\n\t\t\t\tobject = new LOD();\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Line':\n\n\t\t\t\tobject = new Line( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LineLoop':\n\n\t\t\t\tobject = new LineLoop( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LineSegments':\n\n\t\t\t\tobject = new LineSegments( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PointCloud':\n\t\t\tcase 'Points':\n\n\t\t\t\tobject = new Points( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Sprite':\n\n\t\t\t\tobject = new Sprite( getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Group':\n\n\t\t\t\tobject = new Group();\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Bone':\n\n\t\t\t\tobject = new Bone();\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tobject = new Object3D();\n\n\t\t}\n\n\t\tobject.uuid = data.uuid;\n\n\t\tif ( data.name !== undefined ) object.name = data.name;\n\n\t\tif ( data.matrix !== undefined ) {\n\n\t\t\tobject.matrix.fromArray( data.matrix );\n\n\t\t\tif ( data.matrixAutoUpdate !== undefined ) object.matrixAutoUpdate = data.matrixAutoUpdate;\n\t\t\tif ( object.matrixAutoUpdate ) object.matrix.decompose( object.position, object.quaternion, object.scale );\n\n\t\t} else {\n\n\t\t\tif ( data.position !== undefined ) object.position.fromArray( data.position );\n\t\t\tif ( data.rotation !== undefined ) object.rotation.fromArray( data.rotation );\n\t\t\tif ( data.quaternion !== undefined ) object.quaternion.fromArray( data.quaternion );\n\t\t\tif ( data.scale !== undefined ) object.scale.fromArray( data.scale );\n\n\t\t}\n\n\t\tif ( data.castShadow !== undefined ) object.castShadow = data.castShadow;\n\t\tif ( data.receiveShadow !== undefined ) object.receiveShadow = data.receiveShadow;\n\n\t\tif ( data.shadow ) {\n\n\t\t\tif ( data.shadow.bias !== undefined ) object.shadow.bias = data.shadow.bias;\n\t\t\tif ( data.shadow.normalBias !== undefined ) object.shadow.normalBias = data.shadow.normalBias;\n\t\t\tif ( data.shadow.radius !== undefined ) object.shadow.radius = data.shadow.radius;\n\t\t\tif ( data.shadow.mapSize !== undefined ) object.shadow.mapSize.fromArray( data.shadow.mapSize );\n\t\t\tif ( data.shadow.camera !== undefined ) object.shadow.camera = this.parseObject( data.shadow.camera );\n\n\t\t}\n\n\t\tif ( data.visible !== undefined ) object.visible = data.visible;\n\t\tif ( data.frustumCulled !== undefined ) object.frustumCulled = data.frustumCulled;\n\t\tif ( data.renderOrder !== undefined ) object.renderOrder = data.renderOrder;\n\t\tif ( data.userData !== undefined ) object.userData = data.userData;\n\t\tif ( data.layers !== undefined ) object.layers.mask = data.layers;\n\n\t\tif ( data.children !== undefined ) {\n\n\t\t\tconst children = data.children;\n\n\t\t\tfor ( let i = 0; i < children.length; i ++ ) {\n\n\t\t\t\tobject.add( this.parseObject( children[ i ], geometries, materials, textures, animations ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( data.animations !== undefined ) {\n\n\t\t\tconst objectAnimations = data.animations;\n\n\t\t\tfor ( let i = 0; i < objectAnimations.length; i ++ ) {\n\n\t\t\t\tconst uuid = objectAnimations[ i ];\n\n\t\t\t\tobject.animations.push( animations[ uuid ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( data.type === 'LOD' ) {\n\n\t\t\tif ( data.autoUpdate !== undefined ) object.autoUpdate = data.autoUpdate;\n\n\t\t\tconst levels = data.levels;\n\n\t\t\tfor ( let l = 0; l < levels.length; l ++ ) {\n\n\t\t\t\tconst level = levels[ l ];\n\t\t\t\tconst child = object.getObjectByProperty( 'uuid', level.object );\n\n\t\t\t\tif ( child !== undefined ) {\n\n\t\t\t\t\tobject.addLevel( child, level.distance );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn object;\n\n\t}\n\n\tbindSkeletons( object, skeletons ) {\n\n\t\tif ( Object.keys( skeletons ).length === 0 ) return;\n\n\t\tobject.traverse( function ( child ) {\n\n\t\t\tif ( child.isSkinnedMesh === true && child.skeleton !== undefined ) {\n\n\t\t\t\tconst skeleton = skeletons[ child.skeleton ];\n\n\t\t\t\tif ( skeleton === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: No skeleton found with UUID:', child.skeleton );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tchild.bind( skeleton, child.bindMatrix );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t}\n\n}\n\nconst TEXTURE_MAPPING = {\n\tUVMapping: UVMapping,\n\tCubeReflectionMapping: CubeReflectionMapping,\n\tCubeRefractionMapping: CubeRefractionMapping,\n\tEquirectangularReflectionMapping: EquirectangularReflectionMapping,\n\tEquirectangularRefractionMapping: EquirectangularRefractionMapping,\n\tCubeUVReflectionMapping: CubeUVReflectionMapping\n};\n\nconst TEXTURE_WRAPPING = {\n\tRepeatWrapping: RepeatWrapping,\n\tClampToEdgeWrapping: ClampToEdgeWrapping,\n\tMirroredRepeatWrapping: MirroredRepeatWrapping\n};\n\nconst TEXTURE_FILTER = {\n\tNearestFilter: NearestFilter,\n\tNearestMipmapNearestFilter: NearestMipmapNearestFilter,\n\tNearestMipmapLinearFilter: NearestMipmapLinearFilter,\n\tLinearFilter: LinearFilter,\n\tLinearMipmapNearestFilter: LinearMipmapNearestFilter,\n\tLinearMipmapLinearFilter: LinearMipmapLinearFilter\n};\n\nclass ImageBitmapLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t\tthis.isImageBitmapLoader = true;\n\n\t\tif ( typeof createImageBitmap === 'undefined' ) {\n\n\t\t\tconsole.warn( 'THREE.ImageBitmapLoader: createImageBitmap() not supported.' );\n\n\t\t}\n\n\t\tif ( typeof fetch === 'undefined' ) {\n\n\t\t\tconsole.warn( 'THREE.ImageBitmapLoader: fetch() not supported.' );\n\n\t\t}\n\n\t\tthis.options = { premultiplyAlpha: 'none' };\n\n\t}\n\n\tsetOptions( options ) {\n\n\t\tthis.options = options;\n\n\t\treturn this;\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tif ( url === undefined ) url = '';\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst scope = this;\n\n\t\tconst cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\tconst fetchOptions = {};\n\t\tfetchOptions.credentials = ( this.crossOrigin === 'anonymous' ) ? 'same-origin' : 'include';\n\t\tfetchOptions.headers = this.requestHeader;\n\n\t\tfetch( url, fetchOptions ).then( function ( res ) {\n\n\t\t\treturn res.blob();\n\n\t\t} ).then( function ( blob ) {\n\n\t\t\treturn createImageBitmap( blob, Object.assign( scope.options, { colorSpaceConversion: 'none' } ) );\n\n\t\t} ).then( function ( imageBitmap ) {\n\n\t\t\tCache.add( url, imageBitmap );\n\n\t\t\tif ( onLoad ) onLoad( imageBitmap );\n\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t} ).catch( function ( e ) {\n\n\t\t\tif ( onError ) onError( e );\n\n\t\t\tscope.manager.itemError( url );\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t} );\n\n\t\tscope.manager.itemStart( url );\n\n\t}\n\n}\n\nlet _context;\n\nconst AudioContext = {\n\n\tgetContext: function () {\n\n\t\tif ( _context === undefined ) {\n\n\t\t\t_context = new ( window.AudioContext || window.webkitAudioContext )();\n\n\t\t}\n\n\t\treturn _context;\n\n\t},\n\n\tsetContext: function ( value ) {\n\n\t\t_context = value;\n\n\t}\n\n};\n\nclass AudioLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\ttry {\n\n\t\t\t\t// Create a copy of the buffer. The `decodeAudioData` method\n\t\t\t\t// detaches the buffer when complete, preventing reuse.\n\t\t\t\tconst bufferCopy = buffer.slice( 0 );\n\n\t\t\t\tconst context = AudioContext.getContext();\n\t\t\t\tcontext.decodeAudioData( bufferCopy, function ( audioBuffer ) {\n\n\t\t\t\t\tonLoad( audioBuffer );\n\n\t\t\t\t} );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t}\n\n}\n\nclass HemisphereLightProbe extends LightProbe {\n\n\tconstructor( skyColor, groundColor, intensity = 1 ) {\n\n\t\tsuper( undefined, intensity );\n\n\t\tthis.isHemisphereLightProbe = true;\n\n\t\tconst color1 = new Color().set( skyColor );\n\t\tconst color2 = new Color().set( groundColor );\n\n\t\tconst sky = new Vector3( color1.r, color1.g, color1.b );\n\t\tconst ground = new Vector3( color2.r, color2.g, color2.b );\n\n\t\t// without extra factor of PI in the shader, should = 1 / Math.sqrt( Math.PI );\n\t\tconst c0 = Math.sqrt( Math.PI );\n\t\tconst c1 = c0 * Math.sqrt( 0.75 );\n\n\t\tthis.sh.coefficients[ 0 ].copy( sky ).add( ground ).multiplyScalar( c0 );\n\t\tthis.sh.coefficients[ 1 ].copy( sky ).sub( ground ).multiplyScalar( c1 );\n\n\t}\n\n}\n\nclass AmbientLightProbe extends LightProbe {\n\n\tconstructor( color, intensity = 1 ) {\n\n\t\tsuper( undefined, intensity );\n\n\t\tthis.isAmbientLightProbe = true;\n\n\t\tconst color1 = new Color().set( color );\n\n\t\t// without extra factor of PI in the shader, would be 2 / Math.sqrt( Math.PI );\n\t\tthis.sh.coefficients[ 0 ].set( color1.r, color1.g, color1.b ).multiplyScalar( 2 * Math.sqrt( Math.PI ) );\n\n\t}\n\n}\n\nconst _eyeRight = /*@__PURE__*/ new Matrix4();\nconst _eyeLeft = /*@__PURE__*/ new Matrix4();\nconst _projectionMatrix = /*@__PURE__*/ new Matrix4();\n\nclass StereoCamera {\n\n\tconstructor() {\n\n\t\tthis.type = 'StereoCamera';\n\n\t\tthis.aspect = 1;\n\n\t\tthis.eyeSep = 0.064;\n\n\t\tthis.cameraL = new PerspectiveCamera();\n\t\tthis.cameraL.layers.enable( 1 );\n\t\tthis.cameraL.matrixAutoUpdate = false;\n\n\t\tthis.cameraR = new PerspectiveCamera();\n\t\tthis.cameraR.layers.enable( 2 );\n\t\tthis.cameraR.matrixAutoUpdate = false;\n\n\t\tthis._cache = {\n\t\t\tfocus: null,\n\t\t\tfov: null,\n\t\t\taspect: null,\n\t\t\tnear: null,\n\t\t\tfar: null,\n\t\t\tzoom: null,\n\t\t\teyeSep: null\n\t\t};\n\n\t}\n\n\tupdate( camera ) {\n\n\t\tconst cache = this._cache;\n\n\t\tconst needsUpdate = cache.focus !== camera.focus || cache.fov !== camera.fov ||\n\t\t\tcache.aspect !== camera.aspect * this.aspect || cache.near !== camera.near ||\n\t\t\tcache.far !== camera.far || cache.zoom !== camera.zoom || cache.eyeSep !== this.eyeSep;\n\n\t\tif ( needsUpdate ) {\n\n\t\t\tcache.focus = camera.focus;\n\t\t\tcache.fov = camera.fov;\n\t\t\tcache.aspect = camera.aspect * this.aspect;\n\t\t\tcache.near = camera.near;\n\t\t\tcache.far = camera.far;\n\t\t\tcache.zoom = camera.zoom;\n\t\t\tcache.eyeSep = this.eyeSep;\n\n\t\t\t// Off-axis stereoscopic effect based on\n\t\t\t// http://paulbourke.net/stereographics/stereorender/\n\n\t\t\t_projectionMatrix.copy( camera.projectionMatrix );\n\t\t\tconst eyeSepHalf = cache.eyeSep / 2;\n\t\t\tconst eyeSepOnProjection = eyeSepHalf * cache.near / cache.focus;\n\t\t\tconst ymax = ( cache.near * Math.tan( DEG2RAD * cache.fov * 0.5 ) ) / cache.zoom;\n\t\t\tlet xmin, xmax;\n\n\t\t\t// translate xOffset\n\n\t\t\t_eyeLeft.elements[ 12 ] = - eyeSepHalf;\n\t\t\t_eyeRight.elements[ 12 ] = eyeSepHalf;\n\n\t\t\t// for left eye\n\n\t\t\txmin = - ymax * cache.aspect + eyeSepOnProjection;\n\t\t\txmax = ymax * cache.aspect + eyeSepOnProjection;\n\n\t\t\t_projectionMatrix.elements[ 0 ] = 2 * cache.near / ( xmax - xmin );\n\t\t\t_projectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\tthis.cameraL.projectionMatrix.copy( _projectionMatrix );\n\n\t\t\t// for right eye\n\n\t\t\txmin = - ymax * cache.aspect - eyeSepOnProjection;\n\t\t\txmax = ymax * cache.aspect - eyeSepOnProjection;\n\n\t\t\t_projectionMatrix.elements[ 0 ] = 2 * cache.near / ( xmax - xmin );\n\t\t\t_projectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\tthis.cameraR.projectionMatrix.copy( _projectionMatrix );\n\n\t\t}\n\n\t\tthis.cameraL.matrixWorld.copy( camera.matrixWorld ).multiply( _eyeLeft );\n\t\tthis.cameraR.matrixWorld.copy( camera.matrixWorld ).multiply( _eyeRight );\n\n\t}\n\n}\n\nclass Clock {\n\n\tconstructor( autoStart = true ) {\n\n\t\tthis.autoStart = autoStart;\n\n\t\tthis.startTime = 0;\n\t\tthis.oldTime = 0;\n\t\tthis.elapsedTime = 0;\n\n\t\tthis.running = false;\n\n\t}\n\n\tstart() {\n\n\t\tthis.startTime = now();\n\n\t\tthis.oldTime = this.startTime;\n\t\tthis.elapsedTime = 0;\n\t\tthis.running = true;\n\n\t}\n\n\tstop() {\n\n\t\tthis.getElapsedTime();\n\t\tthis.running = false;\n\t\tthis.autoStart = false;\n\n\t}\n\n\tgetElapsedTime() {\n\n\t\tthis.getDelta();\n\t\treturn this.elapsedTime;\n\n\t}\n\n\tgetDelta() {\n\n\t\tlet diff = 0;\n\n\t\tif ( this.autoStart && ! this.running ) {\n\n\t\t\tthis.start();\n\t\t\treturn 0;\n\n\t\t}\n\n\t\tif ( this.running ) {\n\n\t\t\tconst newTime = now();\n\n\t\t\tdiff = ( newTime - this.oldTime ) / 1000;\n\t\t\tthis.oldTime = newTime;\n\n\t\t\tthis.elapsedTime += diff;\n\n\t\t}\n\n\t\treturn diff;\n\n\t}\n\n}\n\nfunction now() {\n\n\treturn ( typeof performance === 'undefined' ? Date : performance ).now(); // see #10732\n\n}\n\nconst _position$1 = /*@__PURE__*/ new Vector3();\nconst _quaternion$1 = /*@__PURE__*/ new Quaternion();\nconst _scale$1 = /*@__PURE__*/ new Vector3();\nconst _orientation$1 = /*@__PURE__*/ new Vector3();\n\nclass AudioListener extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.type = 'AudioListener';\n\n\t\tthis.context = AudioContext.getContext();\n\n\t\tthis.gain = this.context.createGain();\n\t\tthis.gain.connect( this.context.destination );\n\n\t\tthis.filter = null;\n\n\t\tthis.timeDelta = 0;\n\n\t\t// private\n\n\t\tthis._clock = new Clock();\n\n\t}\n\n\tgetInput() {\n\n\t\treturn this.gain;\n\n\t}\n\n\tremoveFilter() {\n\n\t\tif ( this.filter !== null ) {\n\n\t\t\tthis.gain.disconnect( this.filter );\n\t\t\tthis.filter.disconnect( this.context.destination );\n\t\t\tthis.gain.connect( this.context.destination );\n\t\t\tthis.filter = null;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetFilter() {\n\n\t\treturn this.filter;\n\n\t}\n\n\tsetFilter( value ) {\n\n\t\tif ( this.filter !== null ) {\n\n\t\t\tthis.gain.disconnect( this.filter );\n\t\t\tthis.filter.disconnect( this.context.destination );\n\n\t\t} else {\n\n\t\t\tthis.gain.disconnect( this.context.destination );\n\n\t\t}\n\n\t\tthis.filter = value;\n\t\tthis.gain.connect( this.filter );\n\t\tthis.filter.connect( this.context.destination );\n\n\t\treturn this;\n\n\t}\n\n\tgetMasterVolume() {\n\n\t\treturn this.gain.gain.value;\n\n\t}\n\n\tsetMasterVolume( value ) {\n\n\t\tthis.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 );\n\n\t\treturn this;\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tconst listener = this.context.listener;\n\t\tconst up = this.up;\n\n\t\tthis.timeDelta = this._clock.getDelta();\n\n\t\tthis.matrixWorld.decompose( _position$1, _quaternion$1, _scale$1 );\n\n\t\t_orientation$1.set( 0, 0, - 1 ).applyQuaternion( _quaternion$1 );\n\n\t\tif ( listener.positionX ) {\n\n\t\t\t// code path for Chrome (see #14393)\n\n\t\t\tconst endTime = this.context.currentTime + this.timeDelta;\n\n\t\t\tlistener.positionX.linearRampToValueAtTime( _position$1.x, endTime );\n\t\t\tlistener.positionY.linearRampToValueAtTime( _position$1.y, endTime );\n\t\t\tlistener.positionZ.linearRampToValueAtTime( _position$1.z, endTime );\n\t\t\tlistener.forwardX.linearRampToValueAtTime( _orientation$1.x, endTime );\n\t\t\tlistener.forwardY.linearRampToValueAtTime( _orientation$1.y, endTime );\n\t\t\tlistener.forwardZ.linearRampToValueAtTime( _orientation$1.z, endTime );\n\t\t\tlistener.upX.linearRampToValueAtTime( up.x, endTime );\n\t\t\tlistener.upY.linearRampToValueAtTime( up.y, endTime );\n\t\t\tlistener.upZ.linearRampToValueAtTime( up.z, endTime );\n\n\t\t} else {\n\n\t\t\tlistener.setPosition( _position$1.x, _position$1.y, _position$1.z );\n\t\t\tlistener.setOrientation( _orientation$1.x, _orientation$1.y, _orientation$1.z, up.x, up.y, up.z );\n\n\t\t}\n\n\t}\n\n}\n\nclass Audio extends Object3D {\n\n\tconstructor( listener ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'Audio';\n\n\t\tthis.listener = listener;\n\t\tthis.context = listener.context;\n\n\t\tthis.gain = this.context.createGain();\n\t\tthis.gain.connect( listener.getInput() );\n\n\t\tthis.autoplay = false;\n\n\t\tthis.buffer = null;\n\t\tthis.detune = 0;\n\t\tthis.loop = false;\n\t\tthis.loopStart = 0;\n\t\tthis.loopEnd = 0;\n\t\tthis.offset = 0;\n\t\tthis.duration = undefined;\n\t\tthis.playbackRate = 1;\n\t\tthis.isPlaying = false;\n\t\tthis.hasPlaybackControl = true;\n\t\tthis.source = null;\n\t\tthis.sourceType = 'empty';\n\n\t\tthis._startedAt = 0;\n\t\tthis._progress = 0;\n\t\tthis._connected = false;\n\n\t\tthis.filters = [];\n\n\t}\n\n\tgetOutput() {\n\n\t\treturn this.gain;\n\n\t}\n\n\tsetNodeSource( audioNode ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'audioNode';\n\t\tthis.source = audioNode;\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t}\n\n\tsetMediaElementSource( mediaElement ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'mediaNode';\n\t\tthis.source = this.context.createMediaElementSource( mediaElement );\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t}\n\n\tsetMediaStreamSource( mediaStream ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'mediaStreamNode';\n\t\tthis.source = this.context.createMediaStreamSource( mediaStream );\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t}\n\n\tsetBuffer( audioBuffer ) {\n\n\t\tthis.buffer = audioBuffer;\n\t\tthis.sourceType = 'buffer';\n\n\t\tif ( this.autoplay ) this.play();\n\n\t\treturn this;\n\n\t}\n\n\tplay( delay = 0 ) {\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: Audio is already playing.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis._startedAt = this.context.currentTime + delay;\n\n\t\tconst source = this.context.createBufferSource();\n\t\tsource.buffer = this.buffer;\n\t\tsource.loop = this.loop;\n\t\tsource.loopStart = this.loopStart;\n\t\tsource.loopEnd = this.loopEnd;\n\t\tsource.onended = this.onEnded.bind( this );\n\t\tsource.start( this._startedAt, this._progress + this.offset, this.duration );\n\n\t\tthis.isPlaying = true;\n\n\t\tthis.source = source;\n\n\t\tthis.setDetune( this.detune );\n\t\tthis.setPlaybackRate( this.playbackRate );\n\n\t\treturn this.connect();\n\n\t}\n\n\tpause() {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\t// update current progress\n\n\t\t\tthis._progress += Math.max( this.context.currentTime - this._startedAt, 0 ) * this.playbackRate;\n\n\t\t\tif ( this.loop === true ) {\n\n\t\t\t\t// ensure _progress does not exceed duration with looped audios\n\n\t\t\t\tthis._progress = this._progress % ( this.duration || this.buffer.duration );\n\n\t\t\t}\n\n\t\t\tthis.source.stop();\n\t\t\tthis.source.onended = null;\n\n\t\t\tthis.isPlaying = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tstop() {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis._progress = 0;\n\n\t\tthis.source.stop();\n\t\tthis.source.onended = null;\n\t\tthis.isPlaying = false;\n\n\t\treturn this;\n\n\t}\n\n\tconnect() {\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.connect( this.filters[ 0 ] );\n\n\t\t\tfor ( let i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\tthis.filters[ i - 1 ].connect( this.filters[ i ] );\n\n\t\t\t}\n\n\t\t\tthis.filters[ this.filters.length - 1 ].connect( this.getOutput() );\n\n\t\t} else {\n\n\t\t\tthis.source.connect( this.getOutput() );\n\n\t\t}\n\n\t\tthis._connected = true;\n\n\t\treturn this;\n\n\t}\n\n\tdisconnect() {\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.disconnect( this.filters[ 0 ] );\n\n\t\t\tfor ( let i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\tthis.filters[ i - 1 ].disconnect( this.filters[ i ] );\n\n\t\t\t}\n\n\t\t\tthis.filters[ this.filters.length - 1 ].disconnect( this.getOutput() );\n\n\t\t} else {\n\n\t\t\tthis.source.disconnect( this.getOutput() );\n\n\t\t}\n\n\t\tthis._connected = false;\n\n\t\treturn this;\n\n\t}\n\n\tgetFilters() {\n\n\t\treturn this.filters;\n\n\t}\n\n\tsetFilters( value ) {\n\n\t\tif ( ! value ) value = [];\n\n\t\tif ( this._connected === true ) {\n\n\t\t\tthis.disconnect();\n\t\t\tthis.filters = value.slice();\n\t\t\tthis.connect();\n\n\t\t} else {\n\n\t\t\tthis.filters = value.slice();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetDetune( value ) {\n\n\t\tthis.detune = value;\n\n\t\tif ( this.source.detune === undefined ) return; // only set detune when available\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.detune.setTargetAtTime( this.detune, this.context.currentTime, 0.01 );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetDetune() {\n\n\t\treturn this.detune;\n\n\t}\n\n\tgetFilter() {\n\n\t\treturn this.getFilters()[ 0 ];\n\n\t}\n\n\tsetFilter( filter ) {\n\n\t\treturn this.setFilters( filter ? [ filter ] : [] );\n\n\t}\n\n\tsetPlaybackRate( value ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.playbackRate = value;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.playbackRate.setTargetAtTime( this.playbackRate, this.context.currentTime, 0.01 );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetPlaybackRate() {\n\n\t\treturn this.playbackRate;\n\n\t}\n\n\tonEnded() {\n\n\t\tthis.isPlaying = false;\n\n\t}\n\n\tgetLoop() {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn this.loop;\n\n\t}\n\n\tsetLoop( value ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.loop = value;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.loop = this.loop;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetLoopStart( value ) {\n\n\t\tthis.loopStart = value;\n\n\t\treturn this;\n\n\t}\n\n\tsetLoopEnd( value ) {\n\n\t\tthis.loopEnd = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetVolume() {\n\n\t\treturn this.gain.gain.value;\n\n\t}\n\n\tsetVolume( value ) {\n\n\t\tthis.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 );\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _position = /*@__PURE__*/ new Vector3();\nconst _quaternion = /*@__PURE__*/ new Quaternion();\nconst _scale = /*@__PURE__*/ new Vector3();\nconst _orientation = /*@__PURE__*/ new Vector3();\n\nclass PositionalAudio extends Audio {\n\n\tconstructor( listener ) {\n\n\t\tsuper( listener );\n\n\t\tthis.panner = this.context.createPanner();\n\t\tthis.panner.panningModel = 'HRTF';\n\t\tthis.panner.connect( this.gain );\n\n\t}\n\n\tdisconnect() {\n\n\t\tsuper.disconnect();\n\n\t\tthis.panner.disconnect( this.gain );\n\n\t}\n\n\tgetOutput() {\n\n\t\treturn this.panner;\n\n\t}\n\n\tgetRefDistance() {\n\n\t\treturn this.panner.refDistance;\n\n\t}\n\n\tsetRefDistance( value ) {\n\n\t\tthis.panner.refDistance = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetRolloffFactor() {\n\n\t\treturn this.panner.rolloffFactor;\n\n\t}\n\n\tsetRolloffFactor( value ) {\n\n\t\tthis.panner.rolloffFactor = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetDistanceModel() {\n\n\t\treturn this.panner.distanceModel;\n\n\t}\n\n\tsetDistanceModel( value ) {\n\n\t\tthis.panner.distanceModel = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetMaxDistance() {\n\n\t\treturn this.panner.maxDistance;\n\n\t}\n\n\tsetMaxDistance( value ) {\n\n\t\tthis.panner.maxDistance = value;\n\n\t\treturn this;\n\n\t}\n\n\tsetDirectionalCone( coneInnerAngle, coneOuterAngle, coneOuterGain ) {\n\n\t\tthis.panner.coneInnerAngle = coneInnerAngle;\n\t\tthis.panner.coneOuterAngle = coneOuterAngle;\n\t\tthis.panner.coneOuterGain = coneOuterGain;\n\n\t\treturn this;\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tif ( this.hasPlaybackControl === true && this.isPlaying === false ) return;\n\n\t\tthis.matrixWorld.decompose( _position, _quaternion, _scale );\n\n\t\t_orientation.set( 0, 0, 1 ).applyQuaternion( _quaternion );\n\n\t\tconst panner = this.panner;\n\n\t\tif ( panner.positionX ) {\n\n\t\t\t// code path for Chrome and Firefox (see #14393)\n\n\t\t\tconst endTime = this.context.currentTime + this.listener.timeDelta;\n\n\t\t\tpanner.positionX.linearRampToValueAtTime( _position.x, endTime );\n\t\t\tpanner.positionY.linearRampToValueAtTime( _position.y, endTime );\n\t\t\tpanner.positionZ.linearRampToValueAtTime( _position.z, endTime );\n\t\t\tpanner.orientationX.linearRampToValueAtTime( _orientation.x, endTime );\n\t\t\tpanner.orientationY.linearRampToValueAtTime( _orientation.y, endTime );\n\t\t\tpanner.orientationZ.linearRampToValueAtTime( _orientation.z, endTime );\n\n\t\t} else {\n\n\t\t\tpanner.setPosition( _position.x, _position.y, _position.z );\n\t\t\tpanner.setOrientation( _orientation.x, _orientation.y, _orientation.z );\n\n\t\t}\n\n\t}\n\n}\n\nclass AudioAnalyser {\n\n\tconstructor( audio, fftSize = 2048 ) {\n\n\t\tthis.analyser = audio.context.createAnalyser();\n\t\tthis.analyser.fftSize = fftSize;\n\n\t\tthis.data = new Uint8Array( this.analyser.frequencyBinCount );\n\n\t\taudio.getOutput().connect( this.analyser );\n\n\t}\n\n\n\tgetFrequencyData() {\n\n\t\tthis.analyser.getByteFrequencyData( this.data );\n\n\t\treturn this.data;\n\n\t}\n\n\tgetAverageFrequency() {\n\n\t\tlet value = 0;\n\t\tconst data = this.getFrequencyData();\n\n\t\tfor ( let i = 0; i < data.length; i ++ ) {\n\n\t\t\tvalue += data[ i ];\n\n\t\t}\n\n\t\treturn value / data.length;\n\n\t}\n\n}\n\nclass PropertyMixer {\n\n\tconstructor( binding, typeName, valueSize ) {\n\n\t\tthis.binding = binding;\n\t\tthis.valueSize = valueSize;\n\n\t\tlet mixFunction,\n\t\t\tmixFunctionAdditive,\n\t\t\tsetIdentity;\n\n\t\t// buffer layout: [ incoming | accu0 | accu1 | orig | addAccu | (optional work) ]\n\t\t//\n\t\t// interpolators can use .buffer as their .result\n\t\t// the data then goes to 'incoming'\n\t\t//\n\t\t// 'accu0' and 'accu1' are used frame-interleaved for\n\t\t// the cumulative result and are compared to detect\n\t\t// changes\n\t\t//\n\t\t// 'orig' stores the original state of the property\n\t\t//\n\t\t// 'add' is used for additive cumulative results\n\t\t//\n\t\t// 'work' is optional and is only present for quaternion types. It is used\n\t\t// to store intermediate quaternion multiplication results\n\n\t\tswitch ( typeName ) {\n\n\t\t\tcase 'quaternion':\n\t\t\t\tmixFunction = this._slerp;\n\t\t\t\tmixFunctionAdditive = this._slerpAdditive;\n\t\t\t\tsetIdentity = this._setAdditiveIdentityQuaternion;\n\n\t\t\t\tthis.buffer = new Float64Array( valueSize * 6 );\n\t\t\t\tthis._workIndex = 5;\n\t\t\t\tbreak;\n\n\t\t\tcase 'string':\n\t\t\tcase 'bool':\n\t\t\t\tmixFunction = this._select;\n\n\t\t\t\t// Use the regular mix function and for additive on these types,\n\t\t\t\t// additive is not relevant for non-numeric types\n\t\t\t\tmixFunctionAdditive = this._select;\n\n\t\t\t\tsetIdentity = this._setAdditiveIdentityOther;\n\n\t\t\t\tthis.buffer = new Array( valueSize * 5 );\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tmixFunction = this._lerp;\n\t\t\t\tmixFunctionAdditive = this._lerpAdditive;\n\t\t\t\tsetIdentity = this._setAdditiveIdentityNumeric;\n\n\t\t\t\tthis.buffer = new Float64Array( valueSize * 5 );\n\n\t\t}\n\n\t\tthis._mixBufferRegion = mixFunction;\n\t\tthis._mixBufferRegionAdditive = mixFunctionAdditive;\n\t\tthis._setIdentity = setIdentity;\n\t\tthis._origIndex = 3;\n\t\tthis._addIndex = 4;\n\n\t\tthis.cumulativeWeight = 0;\n\t\tthis.cumulativeWeightAdditive = 0;\n\n\t\tthis.useCount = 0;\n\t\tthis.referenceCount = 0;\n\n\t}\n\n\t// accumulate data in the 'incoming' region into 'accu<i>'\n\taccumulate( accuIndex, weight ) {\n\n\t\t// note: happily accumulating nothing when weight = 0, the caller knows\n\t\t// the weight and shouldn't have made the call in the first place\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = accuIndex * stride + stride;\n\n\t\tlet currentWeight = this.cumulativeWeight;\n\n\t\tif ( currentWeight === 0 ) {\n\n\t\t\t// accuN := incoming * weight\n\n\t\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tbuffer[ offset + i ] = buffer[ i ];\n\n\t\t\t}\n\n\t\t\tcurrentWeight = weight;\n\n\t\t} else {\n\n\t\t\t// accuN := accuN + incoming * weight\n\n\t\t\tcurrentWeight += weight;\n\t\t\tconst mix = weight / currentWeight;\n\t\t\tthis._mixBufferRegion( buffer, offset, 0, mix, stride );\n\n\t\t}\n\n\t\tthis.cumulativeWeight = currentWeight;\n\n\t}\n\n\t// accumulate data in the 'incoming' region into 'add'\n\taccumulateAdditive( weight ) {\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = stride * this._addIndex;\n\n\t\tif ( this.cumulativeWeightAdditive === 0 ) {\n\n\t\t\t// add = identity\n\n\t\t\tthis._setIdentity();\n\n\t\t}\n\n\t\t// add := add + incoming * weight\n\n\t\tthis._mixBufferRegionAdditive( buffer, offset, 0, weight, stride );\n\t\tthis.cumulativeWeightAdditive += weight;\n\n\t}\n\n\t// apply the state of 'accu<i>' to the binding when accus differ\n\tapply( accuIndex ) {\n\n\t\tconst stride = this.valueSize,\n\t\t\tbuffer = this.buffer,\n\t\t\toffset = accuIndex * stride + stride,\n\n\t\t\tweight = this.cumulativeWeight,\n\t\t\tweightAdditive = this.cumulativeWeightAdditive,\n\n\t\t\tbinding = this.binding;\n\n\t\tthis.cumulativeWeight = 0;\n\t\tthis.cumulativeWeightAdditive = 0;\n\n\t\tif ( weight < 1 ) {\n\n\t\t\t// accuN := accuN + original * ( 1 - cumulativeWeight )\n\n\t\t\tconst originalValueOffset = stride * this._origIndex;\n\n\t\t\tthis._mixBufferRegion(\n\t\t\t\tbuffer, offset, originalValueOffset, 1 - weight, stride );\n\n\t\t}\n\n\t\tif ( weightAdditive > 0 ) {\n\n\t\t\t// accuN := accuN + additive accuN\n\n\t\t\tthis._mixBufferRegionAdditive( buffer, offset, this._addIndex * stride, 1, stride );\n\n\t\t}\n\n\t\tfor ( let i = stride, e = stride + stride; i !== e; ++ i ) {\n\n\t\t\tif ( buffer[ i ] !== buffer[ i + stride ] ) {\n\n\t\t\t\t// value has changed -> update scene graph\n\n\t\t\t\tbinding.setValue( buffer, offset );\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t// remember the state of the bound property and copy it to both accus\n\tsaveOriginalState() {\n\n\t\tconst binding = this.binding;\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\n\t\t\toriginalValueOffset = stride * this._origIndex;\n\n\t\tbinding.getValue( buffer, originalValueOffset );\n\n\t\t// accu[0..1] := orig -- initially detect changes against the original\n\t\tfor ( let i = stride, e = originalValueOffset; i !== e; ++ i ) {\n\n\t\t\tbuffer[ i ] = buffer[ originalValueOffset + ( i % stride ) ];\n\n\t\t}\n\n\t\t// Add to identity for additive\n\t\tthis._setIdentity();\n\n\t\tthis.cumulativeWeight = 0;\n\t\tthis.cumulativeWeightAdditive = 0;\n\n\t}\n\n\t// apply the state previously taken via 'saveOriginalState' to the binding\n\trestoreOriginalState() {\n\n\t\tconst originalValueOffset = this.valueSize * 3;\n\t\tthis.binding.setValue( this.buffer, originalValueOffset );\n\n\t}\n\n\t_setAdditiveIdentityNumeric() {\n\n\t\tconst startIndex = this._addIndex * this.valueSize;\n\t\tconst endIndex = startIndex + this.valueSize;\n\n\t\tfor ( let i = startIndex; i < endIndex; i ++ ) {\n\n\t\t\tthis.buffer[ i ] = 0;\n\n\t\t}\n\n\t}\n\n\t_setAdditiveIdentityQuaternion() {\n\n\t\tthis._setAdditiveIdentityNumeric();\n\t\tthis.buffer[ this._addIndex * this.valueSize + 3 ] = 1;\n\n\t}\n\n\t_setAdditiveIdentityOther() {\n\n\t\tconst startIndex = this._origIndex * this.valueSize;\n\t\tconst targetIndex = this._addIndex * this.valueSize;\n\n\t\tfor ( let i = 0; i < this.valueSize; i ++ ) {\n\n\t\t\tthis.buffer[ targetIndex + i ] = this.buffer[ startIndex + i ];\n\n\t\t}\n\n\t}\n\n\n\t// mix functions\n\n\t_select( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tif ( t >= 0.5 ) {\n\n\t\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tbuffer[ dstOffset + i ] = buffer[ srcOffset + i ];\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_slerp( buffer, dstOffset, srcOffset, t ) {\n\n\t\tQuaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, srcOffset, t );\n\n\t}\n\n\t_slerpAdditive( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tconst workOffset = this._workIndex * stride;\n\n\t\t// Store result in intermediate buffer offset\n\t\tQuaternion.multiplyQuaternionsFlat( buffer, workOffset, buffer, dstOffset, buffer, srcOffset );\n\n\t\t// Slerp to the intermediate result\n\t\tQuaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, workOffset, t );\n\n\t}\n\n\t_lerp( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tconst s = 1 - t;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tconst j = dstOffset + i;\n\n\t\t\tbuffer[ j ] = buffer[ j ] * s + buffer[ srcOffset + i ] * t;\n\n\t\t}\n\n\t}\n\n\t_lerpAdditive( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tconst j = dstOffset + i;\n\n\t\t\tbuffer[ j ] = buffer[ j ] + buffer[ srcOffset + i ] * t;\n\n\t\t}\n\n\t}\n\n}\n\n// Characters [].:/ are reserved for track binding syntax.\nconst _RESERVED_CHARS_RE = '\\\\[\\\\]\\\\.:\\\\/';\nconst _reservedRe = new RegExp( '[' + _RESERVED_CHARS_RE + ']', 'g' );\n\n// Attempts to allow node names from any language. ES5's `\\w` regexp matches\n// only latin characters, and the unicode \\p{L} is not yet supported. So\n// instead, we exclude reserved characters and match everything else.\nconst _wordChar = '[^' + _RESERVED_CHARS_RE + ']';\nconst _wordCharOrDot = '[^' + _RESERVED_CHARS_RE.replace( '\\\\.', '' ) + ']';\n\n// Parent directories, delimited by '/' or ':'. Currently unused, but must\n// be matched to parse the rest of the track name.\nconst _directoryRe = /*@__PURE__*/ /((?:WC+[\\/:])*)/.source.replace( 'WC', _wordChar );\n\n// Target node. May contain word characters (a-zA-Z0-9_) and '.' or '-'.\nconst _nodeRe = /*@__PURE__*/ /(WCOD+)?/.source.replace( 'WCOD', _wordCharOrDot );\n\n// Object on target node, and accessor. May not contain reserved\n// characters. Accessor may contain any character except closing bracket.\nconst _objectRe = /*@__PURE__*/ /(?:\\.(WC+)(?:\\[(.+)\\])?)?/.source.replace( 'WC', _wordChar );\n\n// Property and accessor. May not contain reserved characters. Accessor may\n// contain any non-bracket characters.\nconst _propertyRe = /*@__PURE__*/ /\\.(WC+)(?:\\[(.+)\\])?/.source.replace( 'WC', _wordChar );\n\nconst _trackRe = new RegExp( ''\n\t+ '^'\n\t+ _directoryRe\n\t+ _nodeRe\n\t+ _objectRe\n\t+ _propertyRe\n\t+ '$'\n);\n\nconst _supportedObjectNames = [ 'material', 'materials', 'bones' ];\n\nclass Composite {\n\n\tconstructor( targetGroup, path, optionalParsedPath ) {\n\n\t\tconst parsedPath = optionalParsedPath || PropertyBinding.parseTrackName( path );\n\n\t\tthis._targetGroup = targetGroup;\n\t\tthis._bindings = targetGroup.subscribe_( path, parsedPath );\n\n\t}\n\n\tgetValue( array, offset ) {\n\n\t\tthis.bind(); // bind all binding\n\n\t\tconst firstValidIndex = this._targetGroup.nCachedObjects_,\n\t\t\tbinding = this._bindings[ firstValidIndex ];\n\n\t\t// and only call .getValue on the first\n\t\tif ( binding !== undefined ) binding.getValue( array, offset );\n\n\t}\n\n\tsetValue( array, offset ) {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].setValue( array, offset );\n\n\t\t}\n\n\t}\n\n\tbind() {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].bind();\n\n\t\t}\n\n\t}\n\n\tunbind() {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].unbind();\n\n\t\t}\n\n\t}\n\n}\n\n// Note: This class uses a State pattern on a per-method basis:\n// 'bind' sets 'this.getValue' / 'setValue' and shadows the\n// prototype version of these methods with one that represents\n// the bound state. When the property is not found, the methods\n// become no-ops.\nclass PropertyBinding {\n\n\tconstructor( rootNode, path, parsedPath ) {\n\n\t\tthis.path = path;\n\t\tthis.parsedPath = parsedPath || PropertyBinding.parseTrackName( path );\n\n\t\tthis.node = PropertyBinding.findNode( rootNode, this.parsedPath.nodeName ) || rootNode;\n\n\t\tthis.rootNode = rootNode;\n\n\t\t// initial state of these methods that calls 'bind'\n\t\tthis.getValue = this._getValue_unbound;\n\t\tthis.setValue = this._setValue_unbound;\n\n\t}\n\n\n\tstatic create( root, path, parsedPath ) {\n\n\t\tif ( ! ( root && root.isAnimationObjectGroup ) ) {\n\n\t\t\treturn new PropertyBinding( root, path, parsedPath );\n\n\t\t} else {\n\n\t\t\treturn new PropertyBinding.Composite( root, path, parsedPath );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Replaces spaces with underscores and removes unsupported characters from\n\t * node names, to ensure compatibility with parseTrackName().\n\t *\n\t * @param {string} name Node name to be sanitized.\n\t * @return {string}\n\t */\n\tstatic sanitizeNodeName( name ) {\n\n\t\treturn name.replace( /\\s/g, '_' ).replace( _reservedRe, '' );\n\n\t}\n\n\tstatic parseTrackName( trackName ) {\n\n\t\tconst matches = _trackRe.exec( trackName );\n\n\t\tif ( matches === null ) {\n\n\t\t\tthrow new Error( 'PropertyBinding: Cannot parse trackName: ' + trackName );\n\n\t\t}\n\n\t\tconst results = {\n\t\t\t// directoryName: matches[ 1 ], // (tschw) currently unused\n\t\t\tnodeName: matches[ 2 ],\n\t\t\tobjectName: matches[ 3 ],\n\t\t\tobjectIndex: matches[ 4 ],\n\t\t\tpropertyName: matches[ 5 ], // required\n\t\t\tpropertyIndex: matches[ 6 ]\n\t\t};\n\n\t\tconst lastDot = results.nodeName && results.nodeName.lastIndexOf( '.' );\n\n\t\tif ( lastDot !== undefined && lastDot !== - 1 ) {\n\n\t\t\tconst objectName = results.nodeName.substring( lastDot + 1 );\n\n\t\t\t// Object names must be checked against an allowlist. Otherwise, there\n\t\t\t// is no way to parse 'foo.bar.baz': 'baz' must be a property, but\n\t\t\t// 'bar' could be the objectName, or part of a nodeName (which can\n\t\t\t// include '.' characters).\n\t\t\tif ( _supportedObjectNames.indexOf( objectName ) !== - 1 ) {\n\n\t\t\t\tresults.nodeName = results.nodeName.substring( 0, lastDot );\n\t\t\t\tresults.objectName = objectName;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( results.propertyName === null || results.propertyName.length === 0 ) {\n\n\t\t\tthrow new Error( 'PropertyBinding: can not parse propertyName from trackName: ' + trackName );\n\n\t\t}\n\n\t\treturn results;\n\n\t}\n\n\tstatic findNode( root, nodeName ) {\n\n\t\tif ( nodeName === undefined || nodeName === '' || nodeName === '.' || nodeName === - 1 || nodeName === root.name || nodeName === root.uuid ) {\n\n\t\t\treturn root;\n\n\t\t}\n\n\t\t// search into skeleton bones.\n\t\tif ( root.skeleton ) {\n\n\t\t\tconst bone = root.skeleton.getBoneByName( nodeName );\n\n\t\t\tif ( bone !== undefined ) {\n\n\t\t\t\treturn bone;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// search into node subtree.\n\t\tif ( root.children ) {\n\n\t\t\tconst searchNodeSubtree = function ( children ) {\n\n\t\t\t\tfor ( let i = 0; i < children.length; i ++ ) {\n\n\t\t\t\t\tconst childNode = children[ i ];\n\n\t\t\t\t\tif ( childNode.name === nodeName || childNode.uuid === nodeName ) {\n\n\t\t\t\t\t\treturn childNode;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst result = searchNodeSubtree( childNode.children );\n\n\t\t\t\t\tif ( result ) return result;\n\n\t\t\t\t}\n\n\t\t\t\treturn null;\n\n\t\t\t};\n\n\t\t\tconst subTreeNode = searchNodeSubtree( root.children );\n\n\t\t\tif ( subTreeNode ) {\n\n\t\t\t\treturn subTreeNode;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\t// these are used to \"bind\" a nonexistent property\n\t_getValue_unavailable() {}\n\t_setValue_unavailable() {}\n\n\t// Getters\n\n\t_getValue_direct( buffer, offset ) {\n\n\t\tbuffer[ offset ] = this.targetObject[ this.propertyName ];\n\n\t}\n\n\t_getValue_array( buffer, offset ) {\n\n\t\tconst source = this.resolvedProperty;\n\n\t\tfor ( let i = 0, n = source.length; i !== n; ++ i ) {\n\n\t\t\tbuffer[ offset ++ ] = source[ i ];\n\n\t\t}\n\n\t}\n\n\t_getValue_arrayElement( buffer, offset ) {\n\n\t\tbuffer[ offset ] = this.resolvedProperty[ this.propertyIndex ];\n\n\t}\n\n\t_getValue_toArray( buffer, offset ) {\n\n\t\tthis.resolvedProperty.toArray( buffer, offset );\n\n\t}\n\n\t// Direct\n\n\t_setValue_direct( buffer, offset ) {\n\n\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\n\t}\n\n\t_setValue_direct_setNeedsUpdate( buffer, offset ) {\n\n\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\t\tthis.targetObject.needsUpdate = true;\n\n\t}\n\n\t_setValue_direct_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t// EntireArray\n\n\t_setValue_array( buffer, offset ) {\n\n\t\tconst dest = this.resolvedProperty;\n\n\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t}\n\n\t}\n\n\t_setValue_array_setNeedsUpdate( buffer, offset ) {\n\n\t\tconst dest = this.resolvedProperty;\n\n\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t}\n\n\t\tthis.targetObject.needsUpdate = true;\n\n\t}\n\n\t_setValue_array_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\tconst dest = this.resolvedProperty;\n\n\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t}\n\n\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t// ArrayElement\n\n\t_setValue_arrayElement( buffer, offset ) {\n\n\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\n\t}\n\n\t_setValue_arrayElement_setNeedsUpdate( buffer, offset ) {\n\n\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\tthis.targetObject.needsUpdate = true;\n\n\t}\n\n\t_setValue_arrayElement_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t// HasToFromArray\n\n\t_setValue_fromArray( buffer, offset ) {\n\n\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\n\t}\n\n\t_setValue_fromArray_setNeedsUpdate( buffer, offset ) {\n\n\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\tthis.targetObject.needsUpdate = true;\n\n\t}\n\n\t_setValue_fromArray_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t_getValue_unbound( targetArray, offset ) {\n\n\t\tthis.bind();\n\t\tthis.getValue( targetArray, offset );\n\n\t}\n\n\t_setValue_unbound( sourceArray, offset ) {\n\n\t\tthis.bind();\n\t\tthis.setValue( sourceArray, offset );\n\n\t}\n\n\t// create getter / setter pair for a property in the scene graph\n\tbind() {\n\n\t\tlet targetObject = this.node;\n\t\tconst parsedPath = this.parsedPath;\n\n\t\tconst objectName = parsedPath.objectName;\n\t\tconst propertyName = parsedPath.propertyName;\n\t\tlet propertyIndex = parsedPath.propertyIndex;\n\n\t\tif ( ! targetObject ) {\n\n\t\t\ttargetObject = PropertyBinding.findNode( this.rootNode, parsedPath.nodeName ) || this.rootNode;\n\n\t\t\tthis.node = targetObject;\n\n\t\t}\n\n\t\t// set fail state so we can just 'return' on error\n\t\tthis.getValue = this._getValue_unavailable;\n\t\tthis.setValue = this._setValue_unavailable;\n\n\t\t// ensure there is a value node\n\t\tif ( ! targetObject ) {\n\n\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to update node for track: ' + this.path + ' but it wasn\\'t found.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( objectName ) {\n\n\t\t\tlet objectIndex = parsedPath.objectIndex;\n\n\t\t\t// special cases were we need to reach deeper into the hierarchy to get the face materials....\n\t\t\tswitch ( objectName ) {\n\n\t\t\t\tcase 'materials':\n\n\t\t\t\t\tif ( ! targetObject.material ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material as node does not have a material.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! targetObject.material.materials ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject.material.materials;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'bones':\n\n\t\t\t\t\tif ( ! targetObject.skeleton ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// potential future optimization: skip this if propertyIndex is already an integer\n\t\t\t\t\t// and convert the integer string to a true integer.\n\n\t\t\t\t\ttargetObject = targetObject.skeleton.bones;\n\n\t\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\t\tfor ( let i = 0; i < targetObject.length; i ++ ) {\n\n\t\t\t\t\t\tif ( targetObject[ i ].name === objectIndex ) {\n\n\t\t\t\t\t\t\tobjectIndex = i;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tif ( targetObject[ objectName ] === undefined ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to objectName of node undefined.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject[ objectName ];\n\n\t\t\t}\n\n\n\t\t\tif ( objectIndex !== undefined ) {\n\n\t\t\t\tif ( targetObject[ objectIndex ] === undefined ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.', this, targetObject );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\ttargetObject = targetObject[ objectIndex ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// resolve property\n\t\tconst nodeProperty = targetObject[ propertyName ];\n\n\t\tif ( nodeProperty === undefined ) {\n\n\t\t\tconst nodeName = parsedPath.nodeName;\n\n\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to update property for track: ' + nodeName +\n\t\t\t\t'.' + propertyName + ' but it wasn\\'t found.', targetObject );\n\t\t\treturn;\n\n\t\t}\n\n\t\t// determine versioning scheme\n\t\tlet versioning = this.Versioning.None;\n\n\t\tthis.targetObject = targetObject;\n\n\t\tif ( targetObject.needsUpdate !== undefined ) { // material\n\n\t\t\tversioning = this.Versioning.NeedsUpdate;\n\n\t\t} else if ( targetObject.matrixWorldNeedsUpdate !== undefined ) { // node transform\n\n\t\t\tversioning = this.Versioning.MatrixWorldNeedsUpdate;\n\n\t\t}\n\n\t\t// determine how the property gets bound\n\t\tlet bindingType = this.BindingType.Direct;\n\n\t\tif ( propertyIndex !== undefined ) {\n\n\t\t\t// access a sub element of the property array (only primitives are supported right now)\n\n\t\t\tif ( propertyName === 'morphTargetInfluences' ) {\n\n\t\t\t\t// potential optimization, skip this if propertyIndex is already an integer, and convert the integer string to a true integer.\n\n\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\tif ( ! targetObject.geometry ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.', this );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( ! targetObject.geometry.morphAttributes ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.', this );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( targetObject.morphTargetDictionary[ propertyIndex ] !== undefined ) {\n\n\t\t\t\t\tpropertyIndex = targetObject.morphTargetDictionary[ propertyIndex ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tbindingType = this.BindingType.ArrayElement;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\t\t\tthis.propertyIndex = propertyIndex;\n\n\t\t} else if ( nodeProperty.fromArray !== undefined && nodeProperty.toArray !== undefined ) {\n\n\t\t\t// must use copy for Object3D.Euler/Quaternion\n\n\t\t\tbindingType = this.BindingType.HasFromToArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else if ( Array.isArray( nodeProperty ) ) {\n\n\t\t\tbindingType = this.BindingType.EntireArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else {\n\n\t\t\tthis.propertyName = propertyName;\n\n\t\t}\n\n\t\t// select getter / setter\n\t\tthis.getValue = this.GetterByBindingType[ bindingType ];\n\t\tthis.setValue = this.SetterByBindingTypeAndVersioning[ bindingType ][ versioning ];\n\n\t}\n\n\tunbind() {\n\n\t\tthis.node = null;\n\n\t\t// back to the prototype version of getValue / setValue\n\t\t// note: avoiding to mutate the shape of 'this' via 'delete'\n\t\tthis.getValue = this._getValue_unbound;\n\t\tthis.setValue = this._setValue_unbound;\n\n\t}\n\n}\n\nPropertyBinding.Composite = Composite;\n\nPropertyBinding.prototype.BindingType = {\n\tDirect: 0,\n\tEntireArray: 1,\n\tArrayElement: 2,\n\tHasFromToArray: 3\n};\n\nPropertyBinding.prototype.Versioning = {\n\tNone: 0,\n\tNeedsUpdate: 1,\n\tMatrixWorldNeedsUpdate: 2\n};\n\nPropertyBinding.prototype.GetterByBindingType = [\n\n\tPropertyBinding.prototype._getValue_direct,\n\tPropertyBinding.prototype._getValue_array,\n\tPropertyBinding.prototype._getValue_arrayElement,\n\tPropertyBinding.prototype._getValue_toArray,\n\n];\n\nPropertyBinding.prototype.SetterByBindingTypeAndVersioning = [\n\n\t[\n\t\t// Direct\n\t\tPropertyBinding.prototype._setValue_direct,\n\t\tPropertyBinding.prototype._setValue_direct_setNeedsUpdate,\n\t\tPropertyBinding.prototype._setValue_direct_setMatrixWorldNeedsUpdate,\n\n\t], [\n\n\t\t// EntireArray\n\n\t\tPropertyBinding.prototype._setValue_array,\n\t\tPropertyBinding.prototype._setValue_array_setNeedsUpdate,\n\t\tPropertyBinding.prototype._setValue_array_setMatrixWorldNeedsUpdate,\n\n\t], [\n\n\t\t// ArrayElement\n\t\tPropertyBinding.prototype._setValue_arrayElement,\n\t\tPropertyBinding.prototype._setValue_arrayElement_setNeedsUpdate,\n\t\tPropertyBinding.prototype._setValue_arrayElement_setMatrixWorldNeedsUpdate,\n\n\t], [\n\n\t\t// HasToFromArray\n\t\tPropertyBinding.prototype._setValue_fromArray,\n\t\tPropertyBinding.prototype._setValue_fromArray_setNeedsUpdate,\n\t\tPropertyBinding.prototype._setValue_fromArray_setMatrixWorldNeedsUpdate,\n\n\t]\n\n];\n\n/**\n *\n * A group of objects that receives a shared animation state.\n *\n * Usage:\n *\n *  - Add objects you would otherwise pass as 'root' to the\n *    constructor or the .clipAction method of AnimationMixer.\n *\n *  - Instead pass this object as 'root'.\n *\n *  - You can also add and remove objects later when the mixer\n *    is running.\n *\n * Note:\n *\n *    Objects of this class appear as one object to the mixer,\n *    so cache control of the individual objects must be done\n *    on the group.\n *\n * Limitation:\n *\n *  - The animated properties must be compatible among the\n *    all objects in the group.\n *\n *  - A single property can either be controlled through a\n *    target group or directly, but not both.\n */\n\nclass AnimationObjectGroup {\n\n\tconstructor() {\n\n\t\tthis.isAnimationObjectGroup = true;\n\n\t\tthis.uuid = generateUUID();\n\n\t\t// cached objects followed by the active ones\n\t\tthis._objects = Array.prototype.slice.call( arguments );\n\n\t\tthis.nCachedObjects_ = 0; // threshold\n\t\t// note: read by PropertyBinding.Composite\n\n\t\tconst indices = {};\n\t\tthis._indicesByUUID = indices; // for bookkeeping\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tindices[ arguments[ i ].uuid ] = i;\n\n\t\t}\n\n\t\tthis._paths = []; // inside: string\n\t\tthis._parsedPaths = []; // inside: { we don't care, here }\n\t\tthis._bindings = []; // inside: Array< PropertyBinding >\n\t\tthis._bindingsIndicesByPath = {}; // inside: indices in these arrays\n\n\t\tconst scope = this;\n\n\t\tthis.stats = {\n\n\t\t\tobjects: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._objects.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn this.total - scope.nCachedObjects_;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tget bindingsPerObject() {\n\n\t\t\t\treturn scope._bindings.length;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tadd() {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tpaths = this._paths,\n\t\t\tparsedPaths = this._parsedPaths,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet knownObject = undefined,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid;\n\t\t\tlet index = indicesByUUID[ uuid ];\n\n\t\t\tif ( index === undefined ) {\n\n\t\t\t\t// unknown object -> add it to the ACTIVE region\n\n\t\t\t\tindex = nObjects ++;\n\t\t\t\tindicesByUUID[ uuid ] = index;\n\t\t\t\tobjects.push( object );\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tbindings[ j ].push( new PropertyBinding( object, paths[ j ], parsedPaths[ j ] ) );\n\n\t\t\t\t}\n\n\t\t\t} else if ( index < nCachedObjects ) {\n\n\t\t\t\tknownObject = objects[ index ];\n\n\t\t\t\t// move existing object to the ACTIVE region\n\n\t\t\t\tconst firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ];\n\n\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\tindicesByUUID[ uuid ] = firstActiveIndex;\n\t\t\t\tobjects[ firstActiveIndex ] = object;\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ];\n\n\t\t\t\t\tlet binding = bindingsForPath[ index ];\n\n\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\n\t\t\t\t\tif ( binding === undefined ) {\n\n\t\t\t\t\t\t// since we do not bother to create new bindings\n\t\t\t\t\t\t// for objects that are cached, the binding may\n\t\t\t\t\t\t// or may not exist\n\n\t\t\t\t\t\tbinding = new PropertyBinding( object, paths[ j ], parsedPaths[ j ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = binding;\n\n\t\t\t\t}\n\n\t\t\t} else if ( objects[ index ] !== knownObject ) {\n\n\t\t\t\tconsole.error( 'THREE.AnimationObjectGroup: Different objects with the same UUID ' +\n\t\t\t\t\t'detected. Clean the caches or recreate your infrastructure when reloading scenes.' );\n\n\t\t\t} // else the object is already where we want it to be\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t}\n\n\tremove() {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet nCachedObjects = this.nCachedObjects_;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index !== undefined && index >= nCachedObjects ) {\n\n\t\t\t\t// move existing object into the CACHED region\n\n\t\t\t\tconst lastCachedIndex = nCachedObjects ++,\n\t\t\t\t\tfirstActiveObject = objects[ lastCachedIndex ];\n\n\t\t\t\tindicesByUUID[ firstActiveObject.uuid ] = index;\n\t\t\t\tobjects[ index ] = firstActiveObject;\n\n\t\t\t\tindicesByUUID[ uuid ] = lastCachedIndex;\n\t\t\t\tobjects[ lastCachedIndex ] = object;\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\tfirstActive = bindingsForPath[ lastCachedIndex ],\n\t\t\t\t\t\tbinding = bindingsForPath[ index ];\n\n\t\t\t\t\tbindingsForPath[ index ] = firstActive;\n\t\t\t\t\tbindingsForPath[ lastCachedIndex ] = binding;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t}\n\n\t// remove & forget\n\tuncache() {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet nCachedObjects = this.nCachedObjects_,\n\t\t\tnObjects = objects.length;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index !== undefined ) {\n\n\t\t\t\tdelete indicesByUUID[ uuid ];\n\n\t\t\t\tif ( index < nCachedObjects ) {\n\n\t\t\t\t\t// object is cached, shrink the CACHED region\n\n\t\t\t\t\tconst firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ],\n\t\t\t\t\t\tlastIndex = -- nObjects,\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\t// last cached object takes this object's place\n\t\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\t\t// last object goes to the activated slot and pop\n\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = firstActiveIndex;\n\t\t\t\t\tobjects[ firstActiveIndex ] = lastObject;\n\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ],\n\t\t\t\t\t\t\tlast = bindingsForPath[ lastIndex ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\t\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = last;\n\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// object is active, just swap with the last and pop\n\n\t\t\t\t\tconst lastIndex = -- nObjects,\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\tif ( lastIndex > 0 ) {\n\n\t\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = index;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tobjects[ index ] = lastObject;\n\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tconst bindingsForPath = bindings[ j ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = bindingsForPath[ lastIndex ];\n\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t}\n\n\t\t\t\t} // cached or active\n\n\t\t\t} // if object is known\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t}\n\n\t// Internal interface used by befriended PropertyBinding.Composite:\n\n\tsubscribe_( path, parsedPath ) {\n\n\t\t// returns an array of bindings for the given path that is changed\n\t\t// according to the contained objects in the group\n\n\t\tconst indicesByPath = this._bindingsIndicesByPath;\n\t\tlet index = indicesByPath[ path ];\n\t\tconst bindings = this._bindings;\n\n\t\tif ( index !== undefined ) return bindings[ index ];\n\n\t\tconst paths = this._paths,\n\t\t\tparsedPaths = this._parsedPaths,\n\t\t\tobjects = this._objects,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\tbindingsForPath = new Array( nObjects );\n\n\t\tindex = bindings.length;\n\n\t\tindicesByPath[ path ] = index;\n\n\t\tpaths.push( path );\n\t\tparsedPaths.push( parsedPath );\n\t\tbindings.push( bindingsForPath );\n\n\t\tfor ( let i = nCachedObjects, n = objects.length; i !== n; ++ i ) {\n\n\t\t\tconst object = objects[ i ];\n\t\t\tbindingsForPath[ i ] = new PropertyBinding( object, path, parsedPath );\n\n\t\t}\n\n\t\treturn bindingsForPath;\n\n\t}\n\n\tunsubscribe_( path ) {\n\n\t\t// tells the group to forget about a property path and no longer\n\t\t// update the array previously obtained with 'subscribe_'\n\n\t\tconst indicesByPath = this._bindingsIndicesByPath,\n\t\t\tindex = indicesByPath[ path ];\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tconst paths = this._paths,\n\t\t\t\tparsedPaths = this._parsedPaths,\n\t\t\t\tbindings = this._bindings,\n\t\t\t\tlastBindingsIndex = bindings.length - 1,\n\t\t\t\tlastBindings = bindings[ lastBindingsIndex ],\n\t\t\t\tlastBindingsPath = path[ lastBindingsIndex ];\n\n\t\t\tindicesByPath[ lastBindingsPath ] = index;\n\n\t\t\tbindings[ index ] = lastBindings;\n\t\t\tbindings.pop();\n\n\t\t\tparsedPaths[ index ] = parsedPaths[ lastBindingsIndex ];\n\t\t\tparsedPaths.pop();\n\n\t\t\tpaths[ index ] = paths[ lastBindingsIndex ];\n\t\t\tpaths.pop();\n\n\t\t}\n\n\t}\n\n}\n\nclass AnimationAction {\n\n\tconstructor( mixer, clip, localRoot = null, blendMode = clip.blendMode ) {\n\n\t\tthis._mixer = mixer;\n\t\tthis._clip = clip;\n\t\tthis._localRoot = localRoot;\n\t\tthis.blendMode = blendMode;\n\n\t\tconst tracks = clip.tracks,\n\t\t\tnTracks = tracks.length,\n\t\t\tinterpolants = new Array( nTracks );\n\n\t\tconst interpolantSettings = {\n\t\t\tendingStart: ZeroCurvatureEnding,\n\t\t\tendingEnd: ZeroCurvatureEnding\n\t\t};\n\n\t\tfor ( let i = 0; i !== nTracks; ++ i ) {\n\n\t\t\tconst interpolant = tracks[ i ].createInterpolant( null );\n\t\t\tinterpolants[ i ] = interpolant;\n\t\t\tinterpolant.settings = interpolantSettings;\n\n\t\t}\n\n\t\tthis._interpolantSettings = interpolantSettings;\n\n\t\tthis._interpolants = interpolants; // bound by the mixer\n\n\t\t// inside: PropertyMixer (managed by the mixer)\n\t\tthis._propertyBindings = new Array( nTracks );\n\n\t\tthis._cacheIndex = null; // for the memory manager\n\t\tthis._byClipCacheIndex = null; // for the memory manager\n\n\t\tthis._timeScaleInterpolant = null;\n\t\tthis._weightInterpolant = null;\n\n\t\tthis.loop = LoopRepeat;\n\t\tthis._loopCount = - 1;\n\n\t\t// global mixer time when the action is to be started\n\t\t// it's set back to 'null' upon start of the action\n\t\tthis._startTime = null;\n\n\t\t// scaled local time of the action\n\t\t// gets clamped or wrapped to 0..clip.duration according to loop\n\t\tthis.time = 0;\n\n\t\tthis.timeScale = 1;\n\t\tthis._effectiveTimeScale = 1;\n\n\t\tthis.weight = 1;\n\t\tthis._effectiveWeight = 1;\n\n\t\tthis.repetitions = Infinity; // no. of repetitions when looping\n\n\t\tthis.paused = false; // true -> zero effective time scale\n\t\tthis.enabled = true; // false -> zero effective weight\n\n\t\tthis.clampWhenFinished = false;// keep feeding the last frame?\n\n\t\tthis.zeroSlopeAtStart = true;// for smooth interpolation w/o separate\n\t\tthis.zeroSlopeAtEnd = true;// clips for start, loop and end\n\n\t}\n\n\t// State & Scheduling\n\n\tplay() {\n\n\t\tthis._mixer._activateAction( this );\n\n\t\treturn this;\n\n\t}\n\n\tstop() {\n\n\t\tthis._mixer._deactivateAction( this );\n\n\t\treturn this.reset();\n\n\t}\n\n\treset() {\n\n\t\tthis.paused = false;\n\t\tthis.enabled = true;\n\n\t\tthis.time = 0; // restart clip\n\t\tthis._loopCount = - 1;// forget previous loops\n\t\tthis._startTime = null;// forget scheduling\n\n\t\treturn this.stopFading().stopWarping();\n\n\t}\n\n\tisRunning() {\n\n\t\treturn this.enabled && ! this.paused && this.timeScale !== 0 &&\n\t\t\tthis._startTime === null && this._mixer._isActiveAction( this );\n\n\t}\n\n\t// return true when play has been called\n\tisScheduled() {\n\n\t\treturn this._mixer._isActiveAction( this );\n\n\t}\n\n\tstartAt( time ) {\n\n\t\tthis._startTime = time;\n\n\t\treturn this;\n\n\t}\n\n\tsetLoop( mode, repetitions ) {\n\n\t\tthis.loop = mode;\n\t\tthis.repetitions = repetitions;\n\n\t\treturn this;\n\n\t}\n\n\t// Weight\n\n\t// set the weight stopping any scheduled fading\n\t// although .enabled = false yields an effective weight of zero, this\n\t// method does *not* change .enabled, because it would be confusing\n\tsetEffectiveWeight( weight ) {\n\n\t\tthis.weight = weight;\n\n\t\t// note: same logic as when updated at runtime\n\t\tthis._effectiveWeight = this.enabled ? weight : 0;\n\n\t\treturn this.stopFading();\n\n\t}\n\n\t// return the weight considering fading and .enabled\n\tgetEffectiveWeight() {\n\n\t\treturn this._effectiveWeight;\n\n\t}\n\n\tfadeIn( duration ) {\n\n\t\treturn this._scheduleFading( duration, 0, 1 );\n\n\t}\n\n\tfadeOut( duration ) {\n\n\t\treturn this._scheduleFading( duration, 1, 0 );\n\n\t}\n\n\tcrossFadeFrom( fadeOutAction, duration, warp ) {\n\n\t\tfadeOutAction.fadeOut( duration );\n\t\tthis.fadeIn( duration );\n\n\t\tif ( warp ) {\n\n\t\t\tconst fadeInDuration = this._clip.duration,\n\t\t\t\tfadeOutDuration = fadeOutAction._clip.duration,\n\n\t\t\t\tstartEndRatio = fadeOutDuration / fadeInDuration,\n\t\t\t\tendStartRatio = fadeInDuration / fadeOutDuration;\n\n\t\t\tfadeOutAction.warp( 1.0, startEndRatio, duration );\n\t\t\tthis.warp( endStartRatio, 1.0, duration );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcrossFadeTo( fadeInAction, duration, warp ) {\n\n\t\treturn fadeInAction.crossFadeFrom( this, duration, warp );\n\n\t}\n\n\tstopFading() {\n\n\t\tconst weightInterpolant = this._weightInterpolant;\n\n\t\tif ( weightInterpolant !== null ) {\n\n\t\t\tthis._weightInterpolant = null;\n\t\t\tthis._mixer._takeBackControlInterpolant( weightInterpolant );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// Time Scale Control\n\n\t// set the time scale stopping any scheduled warping\n\t// although .paused = true yields an effective time scale of zero, this\n\t// method does *not* change .paused, because it would be confusing\n\tsetEffectiveTimeScale( timeScale ) {\n\n\t\tthis.timeScale = timeScale;\n\t\tthis._effectiveTimeScale = this.paused ? 0 : timeScale;\n\n\t\treturn this.stopWarping();\n\n\t}\n\n\t// return the time scale considering warping and .paused\n\tgetEffectiveTimeScale() {\n\n\t\treturn this._effectiveTimeScale;\n\n\t}\n\n\tsetDuration( duration ) {\n\n\t\tthis.timeScale = this._clip.duration / duration;\n\n\t\treturn this.stopWarping();\n\n\t}\n\n\tsyncWith( action ) {\n\n\t\tthis.time = action.time;\n\t\tthis.timeScale = action.timeScale;\n\n\t\treturn this.stopWarping();\n\n\t}\n\n\thalt( duration ) {\n\n\t\treturn this.warp( this._effectiveTimeScale, 0, duration );\n\n\t}\n\n\twarp( startTimeScale, endTimeScale, duration ) {\n\n\t\tconst mixer = this._mixer,\n\t\t\tnow = mixer.time,\n\t\t\ttimeScale = this.timeScale;\n\n\t\tlet interpolant = this._timeScaleInterpolant;\n\n\t\tif ( interpolant === null ) {\n\n\t\t\tinterpolant = mixer._lendControlInterpolant();\n\t\t\tthis._timeScaleInterpolant = interpolant;\n\n\t\t}\n\n\t\tconst times = interpolant.parameterPositions,\n\t\t\tvalues = interpolant.sampleValues;\n\n\t\ttimes[ 0 ] = now;\n\t\ttimes[ 1 ] = now + duration;\n\n\t\tvalues[ 0 ] = startTimeScale / timeScale;\n\t\tvalues[ 1 ] = endTimeScale / timeScale;\n\n\t\treturn this;\n\n\t}\n\n\tstopWarping() {\n\n\t\tconst timeScaleInterpolant = this._timeScaleInterpolant;\n\n\t\tif ( timeScaleInterpolant !== null ) {\n\n\t\t\tthis._timeScaleInterpolant = null;\n\t\t\tthis._mixer._takeBackControlInterpolant( timeScaleInterpolant );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// Object Accessors\n\n\tgetMixer() {\n\n\t\treturn this._mixer;\n\n\t}\n\n\tgetClip() {\n\n\t\treturn this._clip;\n\n\t}\n\n\tgetRoot() {\n\n\t\treturn this._localRoot || this._mixer._root;\n\n\t}\n\n\t// Interna\n\n\t_update( time, deltaTime, timeDirection, accuIndex ) {\n\n\t\t// called by the mixer\n\n\t\tif ( ! this.enabled ) {\n\n\t\t\t// call ._updateWeight() to update ._effectiveWeight\n\n\t\t\tthis._updateWeight( time );\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst startTime = this._startTime;\n\n\t\tif ( startTime !== null ) {\n\n\t\t\t// check for scheduled start of action\n\n\t\t\tconst timeRunning = ( time - startTime ) * timeDirection;\n\t\t\tif ( timeRunning < 0 || timeDirection === 0 ) {\n\n\t\t\t\treturn; // yet to come / don't decide when delta = 0\n\n\t\t\t}\n\n\t\t\t// start\n\n\t\t\tthis._startTime = null; // unschedule\n\t\t\tdeltaTime = timeDirection * timeRunning;\n\n\t\t}\n\n\t\t// apply time scale and advance time\n\n\t\tdeltaTime *= this._updateTimeScale( time );\n\t\tconst clipTime = this._updateTime( deltaTime );\n\n\t\t// note: _updateTime may disable the action resulting in\n\t\t// an effective weight of 0\n\n\t\tconst weight = this._updateWeight( time );\n\n\t\tif ( weight > 0 ) {\n\n\t\t\tconst interpolants = this._interpolants;\n\t\t\tconst propertyMixers = this._propertyBindings;\n\n\t\t\tswitch ( this.blendMode ) {\n\n\t\t\t\tcase AdditiveAnimationBlendMode:\n\n\t\t\t\t\tfor ( let j = 0, m = interpolants.length; j !== m; ++ j ) {\n\n\t\t\t\t\t\tinterpolants[ j ].evaluate( clipTime );\n\t\t\t\t\t\tpropertyMixers[ j ].accumulateAdditive( weight );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase NormalAnimationBlendMode:\n\t\t\t\tdefault:\n\n\t\t\t\t\tfor ( let j = 0, m = interpolants.length; j !== m; ++ j ) {\n\n\t\t\t\t\t\tinterpolants[ j ].evaluate( clipTime );\n\t\t\t\t\t\tpropertyMixers[ j ].accumulate( accuIndex, weight );\n\n\t\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_updateWeight( time ) {\n\n\t\tlet weight = 0;\n\n\t\tif ( this.enabled ) {\n\n\t\t\tweight = this.weight;\n\t\t\tconst interpolant = this._weightInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tconst interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\tweight *= interpolantValue;\n\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\tthis.stopFading();\n\n\t\t\t\t\tif ( interpolantValue === 0 ) {\n\n\t\t\t\t\t\t// faded out, disable\n\t\t\t\t\t\tthis.enabled = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._effectiveWeight = weight;\n\t\treturn weight;\n\n\t}\n\n\t_updateTimeScale( time ) {\n\n\t\tlet timeScale = 0;\n\n\t\tif ( ! this.paused ) {\n\n\t\t\ttimeScale = this.timeScale;\n\n\t\t\tconst interpolant = this._timeScaleInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tconst interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\ttimeScale *= interpolantValue;\n\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\tthis.stopWarping();\n\n\t\t\t\t\tif ( timeScale === 0 ) {\n\n\t\t\t\t\t\t// motion has halted, pause\n\t\t\t\t\t\tthis.paused = true;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// warp done - apply final time scale\n\t\t\t\t\t\tthis.timeScale = timeScale;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._effectiveTimeScale = timeScale;\n\t\treturn timeScale;\n\n\t}\n\n\t_updateTime( deltaTime ) {\n\n\t\tconst duration = this._clip.duration;\n\t\tconst loop = this.loop;\n\n\t\tlet time = this.time + deltaTime;\n\t\tlet loopCount = this._loopCount;\n\n\t\tconst pingPong = ( loop === LoopPingPong );\n\n\t\tif ( deltaTime === 0 ) {\n\n\t\t\tif ( loopCount === - 1 ) return time;\n\n\t\t\treturn ( pingPong && ( loopCount & 1 ) === 1 ) ? duration - time : time;\n\n\t\t}\n\n\t\tif ( loop === LoopOnce ) {\n\n\t\t\tif ( loopCount === - 1 ) {\n\n\t\t\t\t// just started\n\n\t\t\t\tthis._loopCount = 0;\n\t\t\t\tthis._setEndings( true, true, false );\n\n\t\t\t}\n\n\t\t\thandle_stop: {\n\n\t\t\t\tif ( time >= duration ) {\n\n\t\t\t\t\ttime = duration;\n\n\t\t\t\t} else if ( time < 0 ) {\n\n\t\t\t\t\ttime = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tbreak handle_stop;\n\n\t\t\t\t}\n\n\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\n\t\t\t\telse this.enabled = false;\n\n\t\t\t\tthis.time = time;\n\n\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\ttype: 'finished', action: this,\n\t\t\t\t\tdirection: deltaTime < 0 ? - 1 : 1\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t} else { // repetitive Repeat or PingPong\n\n\t\t\tif ( loopCount === - 1 ) {\n\n\t\t\t\t// just started\n\n\t\t\t\tif ( deltaTime >= 0 ) {\n\n\t\t\t\t\tloopCount = 0;\n\n\t\t\t\t\tthis._setEndings( true, this.repetitions === 0, pingPong );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// when looping in reverse direction, the initial\n\t\t\t\t\t// transition through zero counts as a repetition,\n\t\t\t\t\t// so leave loopCount at -1\n\n\t\t\t\t\tthis._setEndings( this.repetitions === 0, true, pingPong );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( time >= duration || time < 0 ) {\n\n\t\t\t\t// wrap around\n\n\t\t\t\tconst loopDelta = Math.floor( time / duration ); // signed\n\t\t\t\ttime -= duration * loopDelta;\n\n\t\t\t\tloopCount += Math.abs( loopDelta );\n\n\t\t\t\tconst pending = this.repetitions - loopCount;\n\n\t\t\t\tif ( pending <= 0 ) {\n\n\t\t\t\t\t// have to stop (switch state, clamp time, fire event)\n\n\t\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\n\t\t\t\t\telse this.enabled = false;\n\n\t\t\t\t\ttime = deltaTime > 0 ? duration : 0;\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\ttype: 'finished', action: this,\n\t\t\t\t\t\tdirection: deltaTime > 0 ? 1 : - 1\n\t\t\t\t\t} );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// keep running\n\n\t\t\t\t\tif ( pending === 1 ) {\n\n\t\t\t\t\t\t// entering the last round\n\n\t\t\t\t\t\tconst atStart = deltaTime < 0;\n\t\t\t\t\t\tthis._setEndings( atStart, ! atStart, pingPong );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthis._setEndings( false, false, pingPong );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._loopCount = loopCount;\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\ttype: 'loop', action: this, loopDelta: loopDelta\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tthis.time = time;\n\n\t\t\t}\n\n\t\t\tif ( pingPong && ( loopCount & 1 ) === 1 ) {\n\n\t\t\t\t// invert time for the \"pong round\"\n\n\t\t\t\treturn duration - time;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn time;\n\n\t}\n\n\t_setEndings( atStart, atEnd, pingPong ) {\n\n\t\tconst settings = this._interpolantSettings;\n\n\t\tif ( pingPong ) {\n\n\t\t\tsettings.endingStart = ZeroSlopeEnding;\n\t\t\tsettings.endingEnd = ZeroSlopeEnding;\n\n\t\t} else {\n\n\t\t\t// assuming for LoopOnce atStart == atEnd == true\n\n\t\t\tif ( atStart ) {\n\n\t\t\t\tsettings.endingStart = this.zeroSlopeAtStart ? ZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t} else {\n\n\t\t\t\tsettings.endingStart = WrapAroundEnding;\n\n\t\t\t}\n\n\t\t\tif ( atEnd ) {\n\n\t\t\t\tsettings.endingEnd = this.zeroSlopeAtEnd ? ZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t} else {\n\n\t\t\t\tsettings.endingEnd \t = WrapAroundEnding;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_scheduleFading( duration, weightNow, weightThen ) {\n\n\t\tconst mixer = this._mixer, now = mixer.time;\n\t\tlet interpolant = this._weightInterpolant;\n\n\t\tif ( interpolant === null ) {\n\n\t\t\tinterpolant = mixer._lendControlInterpolant();\n\t\t\tthis._weightInterpolant = interpolant;\n\n\t\t}\n\n\t\tconst times = interpolant.parameterPositions,\n\t\t\tvalues = interpolant.sampleValues;\n\n\t\ttimes[ 0 ] = now;\n\t\tvalues[ 0 ] = weightNow;\n\t\ttimes[ 1 ] = now + duration;\n\t\tvalues[ 1 ] = weightThen;\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _controlInterpolantsResultBuffer = new Float32Array( 1 );\n\n\nclass AnimationMixer extends EventDispatcher {\n\n\tconstructor( root ) {\n\n\t\tsuper();\n\n\t\tthis._root = root;\n\t\tthis._initMemoryManager();\n\t\tthis._accuIndex = 0;\n\t\tthis.time = 0;\n\t\tthis.timeScale = 1.0;\n\n\t}\n\n\t_bindAction( action, prototypeAction ) {\n\n\t\tconst root = action._localRoot || this._root,\n\t\t\ttracks = action._clip.tracks,\n\t\t\tnTracks = tracks.length,\n\t\t\tbindings = action._propertyBindings,\n\t\t\tinterpolants = action._interpolants,\n\t\t\trootUuid = root.uuid,\n\t\t\tbindingsByRoot = this._bindingsByRootAndName;\n\n\t\tlet bindingsByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingsByName === undefined ) {\n\n\t\t\tbindingsByName = {};\n\t\t\tbindingsByRoot[ rootUuid ] = bindingsByName;\n\n\t\t}\n\n\t\tfor ( let i = 0; i !== nTracks; ++ i ) {\n\n\t\t\tconst track = tracks[ i ],\n\t\t\t\ttrackName = track.name;\n\n\t\t\tlet binding = bindingsByName[ trackName ];\n\n\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\t++ binding.referenceCount;\n\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t} else {\n\n\t\t\t\tbinding = bindings[ i ];\n\n\t\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\t\t// existing binding, make sure the cache knows\n\n\t\t\t\t\tif ( binding._cacheIndex === null ) {\n\n\t\t\t\t\t\t++ binding.referenceCount;\n\t\t\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\tconst path = prototypeAction && prototypeAction.\n\t\t\t\t\t_propertyBindings[ i ].binding.parsedPath;\n\n\t\t\t\tbinding = new PropertyMixer(\n\t\t\t\t\tPropertyBinding.create( root, trackName, path ),\n\t\t\t\t\ttrack.ValueTypeName, track.getValueSize() );\n\n\t\t\t\t++ binding.referenceCount;\n\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t}\n\n\t\t\tinterpolants[ i ].resultBuffer = binding.buffer;\n\n\t\t}\n\n\t}\n\n\t_activateAction( action ) {\n\n\t\tif ( ! this._isActiveAction( action ) ) {\n\n\t\t\tif ( action._cacheIndex === null ) {\n\n\t\t\t\t// this action has been forgotten by the cache, but the user\n\t\t\t\t// appears to be still using it -> rebind\n\n\t\t\t\tconst rootUuid = ( action._localRoot || this._root ).uuid,\n\t\t\t\t\tclipUuid = action._clip.uuid,\n\t\t\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\t\t\tthis._bindAction( action,\n\t\t\t\t\tactionsForClip && actionsForClip.knownActions[ 0 ] );\n\n\t\t\t\tthis._addInactiveAction( action, clipUuid, rootUuid );\n\n\t\t\t}\n\n\t\t\tconst bindings = action._propertyBindings;\n\n\t\t\t// increment reference counts / sort out state\n\t\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tconst binding = bindings[ i ];\n\n\t\t\t\tif ( binding.useCount ++ === 0 ) {\n\n\t\t\t\t\tthis._lendBinding( binding );\n\t\t\t\t\tbinding.saveOriginalState();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._lendAction( action );\n\n\t\t}\n\n\t}\n\n\t_deactivateAction( action ) {\n\n\t\tif ( this._isActiveAction( action ) ) {\n\n\t\t\tconst bindings = action._propertyBindings;\n\n\t\t\t// decrement reference counts / sort out state\n\t\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tconst binding = bindings[ i ];\n\n\t\t\t\tif ( -- binding.useCount === 0 ) {\n\n\t\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\t\tthis._takeBackBinding( binding );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._takeBackAction( action );\n\n\t\t}\n\n\t}\n\n\t// Memory manager\n\n\t_initMemoryManager() {\n\n\t\tthis._actions = []; // 'nActiveActions' followed by inactive ones\n\t\tthis._nActiveActions = 0;\n\n\t\tthis._actionsByClip = {};\n\t\t// inside:\n\t\t// {\n\t\t// \tknownActions: Array< AnimationAction > - used as prototypes\n\t\t// \tactionByRoot: AnimationAction - lookup\n\t\t// }\n\n\n\t\tthis._bindings = []; // 'nActiveBindings' followed by inactive ones\n\t\tthis._nActiveBindings = 0;\n\n\t\tthis._bindingsByRootAndName = {}; // inside: Map< name, PropertyMixer >\n\n\n\t\tthis._controlInterpolants = []; // same game as above\n\t\tthis._nActiveControlInterpolants = 0;\n\n\t\tconst scope = this;\n\n\t\tthis.stats = {\n\n\t\t\tactions: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._actions.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveActions;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tbindings: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._bindings.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveBindings;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tcontrolInterpolants: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._controlInterpolants.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveControlInterpolants;\n\n\t\t\t\t}\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\t// Memory management for AnimationAction objects\n\n\t_isActiveAction( action ) {\n\n\t\tconst index = action._cacheIndex;\n\t\treturn index !== null && index < this._nActiveActions;\n\n\t}\n\n\t_addInactiveAction( action, clipUuid, rootUuid ) {\n\n\t\tconst actions = this._actions,\n\t\t\tactionsByClip = this._actionsByClip;\n\n\t\tlet actionsForClip = actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip === undefined ) {\n\n\t\t\tactionsForClip = {\n\n\t\t\t\tknownActions: [ action ],\n\t\t\t\tactionByRoot: {}\n\n\t\t\t};\n\n\t\t\taction._byClipCacheIndex = 0;\n\n\t\t\tactionsByClip[ clipUuid ] = actionsForClip;\n\n\t\t} else {\n\n\t\t\tconst knownActions = actionsForClip.knownActions;\n\n\t\t\taction._byClipCacheIndex = knownActions.length;\n\t\t\tknownActions.push( action );\n\n\t\t}\n\n\t\taction._cacheIndex = actions.length;\n\t\tactions.push( action );\n\n\t\tactionsForClip.actionByRoot[ rootUuid ] = action;\n\n\t}\n\n\t_removeInactiveAction( action ) {\n\n\t\tconst actions = this._actions,\n\t\t\tlastInactiveAction = actions[ actions.length - 1 ],\n\t\t\tcacheIndex = action._cacheIndex;\n\n\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\tactions.pop();\n\n\t\taction._cacheIndex = null;\n\n\n\t\tconst clipUuid = action._clip.uuid,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ],\n\t\t\tknownActionsForClip = actionsForClip.knownActions,\n\n\t\t\tlastKnownAction =\n\t\t\t\tknownActionsForClip[ knownActionsForClip.length - 1 ],\n\n\t\t\tbyClipCacheIndex = action._byClipCacheIndex;\n\n\t\tlastKnownAction._byClipCacheIndex = byClipCacheIndex;\n\t\tknownActionsForClip[ byClipCacheIndex ] = lastKnownAction;\n\t\tknownActionsForClip.pop();\n\n\t\taction._byClipCacheIndex = null;\n\n\n\t\tconst actionByRoot = actionsForClip.actionByRoot,\n\t\t\trootUuid = ( action._localRoot || this._root ).uuid;\n\n\t\tdelete actionByRoot[ rootUuid ];\n\n\t\tif ( knownActionsForClip.length === 0 ) {\n\n\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t}\n\n\t\tthis._removeInactiveBindingsForAction( action );\n\n\t}\n\n\t_removeInactiveBindingsForAction( action ) {\n\n\t\tconst bindings = action._propertyBindings;\n\n\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tconst binding = bindings[ i ];\n\n\t\t\tif ( -- binding.referenceCount === 0 ) {\n\n\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_lendAction( action ) {\n\n\t\t// [ active actions |  inactive actions  ]\n\t\t// [  active actions >| inactive actions ]\n\t\t//                 s        a\n\t\t//                  <-swap->\n\t\t//                 a        s\n\n\t\tconst actions = this._actions,\n\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\tlastActiveIndex = this._nActiveActions ++,\n\n\t\t\tfirstInactiveAction = actions[ lastActiveIndex ];\n\n\t\taction._cacheIndex = lastActiveIndex;\n\t\tactions[ lastActiveIndex ] = action;\n\n\t\tfirstInactiveAction._cacheIndex = prevIndex;\n\t\tactions[ prevIndex ] = firstInactiveAction;\n\n\t}\n\n\t_takeBackAction( action ) {\n\n\t\t// [  active actions  | inactive actions ]\n\t\t// [ active actions |< inactive actions  ]\n\t\t//        a        s\n\t\t//         <-swap->\n\t\t//        s        a\n\n\t\tconst actions = this._actions,\n\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveActions,\n\n\t\t\tlastActiveAction = actions[ firstInactiveIndex ];\n\n\t\taction._cacheIndex = firstInactiveIndex;\n\t\tactions[ firstInactiveIndex ] = action;\n\n\t\tlastActiveAction._cacheIndex = prevIndex;\n\t\tactions[ prevIndex ] = lastActiveAction;\n\n\t}\n\n\t// Memory management for PropertyMixer objects\n\n\t_addInactiveBinding( binding, rootUuid, trackName ) {\n\n\t\tconst bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindings = this._bindings;\n\n\t\tlet bindingByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingByName === undefined ) {\n\n\t\t\tbindingByName = {};\n\t\t\tbindingsByRoot[ rootUuid ] = bindingByName;\n\n\t\t}\n\n\t\tbindingByName[ trackName ] = binding;\n\n\t\tbinding._cacheIndex = bindings.length;\n\t\tbindings.push( binding );\n\n\t}\n\n\t_removeInactiveBinding( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tpropBinding = binding.binding,\n\t\t\trootUuid = propBinding.rootNode.uuid,\n\t\t\ttrackName = propBinding.path,\n\t\t\tbindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ],\n\n\t\t\tlastInactiveBinding = bindings[ bindings.length - 1 ],\n\t\t\tcacheIndex = binding._cacheIndex;\n\n\t\tlastInactiveBinding._cacheIndex = cacheIndex;\n\t\tbindings[ cacheIndex ] = lastInactiveBinding;\n\t\tbindings.pop();\n\n\t\tdelete bindingByName[ trackName ];\n\n\t\tif ( Object.keys( bindingByName ).length === 0 ) {\n\n\t\t\tdelete bindingsByRoot[ rootUuid ];\n\n\t\t}\n\n\t}\n\n\t_lendBinding( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\tlastActiveIndex = this._nActiveBindings ++,\n\n\t\t\tfirstInactiveBinding = bindings[ lastActiveIndex ];\n\n\t\tbinding._cacheIndex = lastActiveIndex;\n\t\tbindings[ lastActiveIndex ] = binding;\n\n\t\tfirstInactiveBinding._cacheIndex = prevIndex;\n\t\tbindings[ prevIndex ] = firstInactiveBinding;\n\n\t}\n\n\t_takeBackBinding( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveBindings,\n\n\t\t\tlastActiveBinding = bindings[ firstInactiveIndex ];\n\n\t\tbinding._cacheIndex = firstInactiveIndex;\n\t\tbindings[ firstInactiveIndex ] = binding;\n\n\t\tlastActiveBinding._cacheIndex = prevIndex;\n\t\tbindings[ prevIndex ] = lastActiveBinding;\n\n\t}\n\n\n\t// Memory management of Interpolants for weight and time scale\n\n\t_lendControlInterpolant() {\n\n\t\tconst interpolants = this._controlInterpolants,\n\t\t\tlastActiveIndex = this._nActiveControlInterpolants ++;\n\n\t\tlet interpolant = interpolants[ lastActiveIndex ];\n\n\t\tif ( interpolant === undefined ) {\n\n\t\t\tinterpolant = new LinearInterpolant(\n\t\t\t\tnew Float32Array( 2 ), new Float32Array( 2 ),\n\t\t\t\t1, _controlInterpolantsResultBuffer );\n\n\t\t\tinterpolant.__cacheIndex = lastActiveIndex;\n\t\t\tinterpolants[ lastActiveIndex ] = interpolant;\n\n\t\t}\n\n\t\treturn interpolant;\n\n\t}\n\n\t_takeBackControlInterpolant( interpolant ) {\n\n\t\tconst interpolants = this._controlInterpolants,\n\t\t\tprevIndex = interpolant.__cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveControlInterpolants,\n\n\t\t\tlastActiveInterpolant = interpolants[ firstInactiveIndex ];\n\n\t\tinterpolant.__cacheIndex = firstInactiveIndex;\n\t\tinterpolants[ firstInactiveIndex ] = interpolant;\n\n\t\tlastActiveInterpolant.__cacheIndex = prevIndex;\n\t\tinterpolants[ prevIndex ] = lastActiveInterpolant;\n\n\t}\n\n\t// return an action for a clip optionally using a custom root target\n\t// object (this method allocates a lot of dynamic memory in case a\n\t// previously unknown clip/root combination is specified)\n\tclipAction( clip, optionalRoot, blendMode ) {\n\n\t\tconst root = optionalRoot || this._root,\n\t\t\trootUuid = root.uuid;\n\n\t\tlet clipObject = typeof clip === 'string' ? AnimationClip.findByName( root, clip ) : clip;\n\n\t\tconst clipUuid = clipObject !== null ? clipObject.uuid : clip;\n\n\t\tconst actionsForClip = this._actionsByClip[ clipUuid ];\n\t\tlet prototypeAction = null;\n\n\t\tif ( blendMode === undefined ) {\n\n\t\t\tif ( clipObject !== null ) {\n\n\t\t\t\tblendMode = clipObject.blendMode;\n\n\t\t\t} else {\n\n\t\t\t\tblendMode = NormalAnimationBlendMode;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\tconst existingAction = actionsForClip.actionByRoot[ rootUuid ];\n\n\t\t\tif ( existingAction !== undefined && existingAction.blendMode === blendMode ) {\n\n\t\t\t\treturn existingAction;\n\n\t\t\t}\n\n\t\t\t// we know the clip, so we don't have to parse all\n\t\t\t// the bindings again but can just copy\n\t\t\tprototypeAction = actionsForClip.knownActions[ 0 ];\n\n\t\t\t// also, take the clip from the prototype action\n\t\t\tif ( clipObject === null )\n\t\t\t\tclipObject = prototypeAction._clip;\n\n\t\t}\n\n\t\t// clip must be known when specified via string\n\t\tif ( clipObject === null ) return null;\n\n\t\t// allocate all resources required to run it\n\t\tconst newAction = new AnimationAction( this, clipObject, optionalRoot, blendMode );\n\n\t\tthis._bindAction( newAction, prototypeAction );\n\n\t\t// and make the action known to the memory manager\n\t\tthis._addInactiveAction( newAction, clipUuid, rootUuid );\n\n\t\treturn newAction;\n\n\t}\n\n\t// get an existing action\n\texistingAction( clip, optionalRoot ) {\n\n\t\tconst root = optionalRoot || this._root,\n\t\t\trootUuid = root.uuid,\n\n\t\t\tclipObject = typeof clip === 'string' ?\n\t\t\t\tAnimationClip.findByName( root, clip ) : clip,\n\n\t\t\tclipUuid = clipObject ? clipObject.uuid : clip,\n\n\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\treturn actionsForClip.actionByRoot[ rootUuid ] || null;\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\t// deactivates all previously scheduled actions\n\tstopAllAction() {\n\n\t\tconst actions = this._actions,\n\t\t\tnActions = this._nActiveActions;\n\n\t\tfor ( let i = nActions - 1; i >= 0; -- i ) {\n\n\t\t\tactions[ i ].stop();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// advance the time and update apply the animation\n\tupdate( deltaTime ) {\n\n\t\tdeltaTime *= this.timeScale;\n\n\t\tconst actions = this._actions,\n\t\t\tnActions = this._nActiveActions,\n\n\t\t\ttime = this.time += deltaTime,\n\t\t\ttimeDirection = Math.sign( deltaTime ),\n\n\t\t\taccuIndex = this._accuIndex ^= 1;\n\n\t\t// run active actions\n\n\t\tfor ( let i = 0; i !== nActions; ++ i ) {\n\n\t\t\tconst action = actions[ i ];\n\n\t\t\taction._update( time, deltaTime, timeDirection, accuIndex );\n\n\t\t}\n\n\t\t// update scene graph\n\n\t\tconst bindings = this._bindings,\n\t\t\tnBindings = this._nActiveBindings;\n\n\t\tfor ( let i = 0; i !== nBindings; ++ i ) {\n\n\t\t\tbindings[ i ].apply( accuIndex );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// Allows you to seek to a specific time in an animation.\n\tsetTime( timeInSeconds ) {\n\n\t\tthis.time = 0; // Zero out time attribute for AnimationMixer object;\n\t\tfor ( let i = 0; i < this._actions.length; i ++ ) {\n\n\t\t\tthis._actions[ i ].time = 0; // Zero out time attribute for all associated AnimationAction objects.\n\n\t\t}\n\n\t\treturn this.update( timeInSeconds ); // Update used to set exact time. Returns \"this\" AnimationMixer object.\n\n\t}\n\n\t// return this mixer's root target object\n\tgetRoot() {\n\n\t\treturn this._root;\n\n\t}\n\n\t// free all resources specific to a particular clip\n\tuncacheClip( clip ) {\n\n\t\tconst actions = this._actions,\n\t\t\tclipUuid = clip.uuid,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\t// note: just calling _removeInactiveAction would mess up the\n\t\t\t// iteration state and also require updating the state we can\n\t\t\t// just throw away\n\n\t\t\tconst actionsToRemove = actionsForClip.knownActions;\n\n\t\t\tfor ( let i = 0, n = actionsToRemove.length; i !== n; ++ i ) {\n\n\t\t\t\tconst action = actionsToRemove[ i ];\n\n\t\t\t\tthis._deactivateAction( action );\n\n\t\t\t\tconst cacheIndex = action._cacheIndex,\n\t\t\t\t\tlastInactiveAction = actions[ actions.length - 1 ];\n\n\t\t\t\taction._cacheIndex = null;\n\t\t\t\taction._byClipCacheIndex = null;\n\n\t\t\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\t\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\t\t\tactions.pop();\n\n\t\t\t\tthis._removeInactiveBindingsForAction( action );\n\n\t\t\t}\n\n\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t}\n\n\t}\n\n\t// free all resources specific to a particular root target object\n\tuncacheRoot( root ) {\n\n\t\tconst rootUuid = root.uuid,\n\t\t\tactionsByClip = this._actionsByClip;\n\n\t\tfor ( const clipUuid in actionsByClip ) {\n\n\t\t\tconst actionByRoot = actionsByClip[ clipUuid ].actionByRoot,\n\t\t\t\taction = actionByRoot[ rootUuid ];\n\n\t\t\tif ( action !== undefined ) {\n\n\t\t\t\tthis._deactivateAction( action );\n\t\t\t\tthis._removeInactiveAction( action );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingByName !== undefined ) {\n\n\t\t\tfor ( const trackName in bindingByName ) {\n\n\t\t\t\tconst binding = bindingByName[ trackName ];\n\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t// remove a targeted clip from the cache\n\tuncacheAction( clip, optionalRoot ) {\n\n\t\tconst action = this.existingAction( clip, optionalRoot );\n\n\t\tif ( action !== null ) {\n\n\t\t\tthis._deactivateAction( action );\n\t\t\tthis._removeInactiveAction( action );\n\n\t\t}\n\n\t}\n\n}\n\nclass Uniform {\n\n\tconstructor( value ) {\n\n\t\tif ( typeof value === 'string' ) {\n\n\t\t\tconsole.warn( 'THREE.Uniform: Type parameter is no longer needed.' );\n\t\t\tvalue = arguments[ 1 ];\n\n\t\t}\n\n\t\tthis.value = value;\n\n\t}\n\n\tclone() {\n\n\t\treturn new Uniform( this.value.clone === undefined ? this.value : this.value.clone() );\n\n\t}\n\n}\n\nlet id = 0;\n\nclass UniformsGroup extends EventDispatcher {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isUniformsGroup = true;\n\n\t\tObject.defineProperty( this, 'id', { value: id ++ } );\n\n\t\tthis.name = '';\n\n\t\tthis.usage = StaticDrawUsage;\n\t\tthis.uniforms = [];\n\n\t}\n\n\tadd( uniform ) {\n\n\t\tthis.uniforms.push( uniform );\n\n\t\treturn this;\n\n\t}\n\n\tremove( uniform ) {\n\n\t\tconst index = this.uniforms.indexOf( uniform );\n\n\t\tif ( index !== - 1 ) this.uniforms.splice( index, 1 );\n\n\t\treturn this;\n\n\t}\n\n\tsetName( name ) {\n\n\t\tthis.name = name;\n\n\t\treturn this;\n\n\t}\n\n\tsetUsage( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.name = source.name;\n\t\tthis.usage = source.usage;\n\n\t\tconst uniformsSource = source.uniforms;\n\n\t\tthis.uniforms.length = 0;\n\n\t\tfor ( let i = 0, l = uniformsSource.length; i < l; i ++ ) {\n\n\t\t\tthis.uniforms.push( uniformsSource[ i ].clone() );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nclass InstancedInterleavedBuffer extends InterleavedBuffer {\n\n\tconstructor( array, stride, meshPerAttribute = 1 ) {\n\n\t\tsuper( array, stride );\n\n\t\tthis.isInstancedInterleavedBuffer = true;\n\n\t\tthis.meshPerAttribute = meshPerAttribute;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\t\treturn this;\n\n\t}\n\n\tclone( data ) {\n\n\t\tconst ib = super.clone( data );\n\n\t\tib.meshPerAttribute = this.meshPerAttribute;\n\n\t\treturn ib;\n\n\t}\n\n\ttoJSON( data ) {\n\n\t\tconst json = super.toJSON( data );\n\n\t\tjson.isInstancedInterleavedBuffer = true;\n\t\tjson.meshPerAttribute = this.meshPerAttribute;\n\n\t\treturn json;\n\n\t}\n\n}\n\nclass GLBufferAttribute {\n\n\tconstructor( buffer, type, itemSize, elementSize, count ) {\n\n\t\tthis.isGLBufferAttribute = true;\n\n\t\tthis.buffer = buffer;\n\t\tthis.type = type;\n\t\tthis.itemSize = itemSize;\n\t\tthis.elementSize = elementSize;\n\t\tthis.count = count;\n\n\t\tthis.version = 0;\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\tsetBuffer( buffer ) {\n\n\t\tthis.buffer = buffer;\n\n\t\treturn this;\n\n\t}\n\n\tsetType( type, elementSize ) {\n\n\t\tthis.type = type;\n\t\tthis.elementSize = elementSize;\n\n\t\treturn this;\n\n\t}\n\n\tsetItemSize( itemSize ) {\n\n\t\tthis.itemSize = itemSize;\n\n\t\treturn this;\n\n\t}\n\n\tsetCount( count ) {\n\n\t\tthis.count = count;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass Raycaster {\n\n\tconstructor( origin, direction, near = 0, far = Infinity ) {\n\n\t\tthis.ray = new Ray( origin, direction );\n\t\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\t\tthis.near = near;\n\t\tthis.far = far;\n\t\tthis.camera = null;\n\t\tthis.layers = new Layers();\n\n\t\tthis.params = {\n\t\t\tMesh: {},\n\t\t\tLine: { threshold: 1 },\n\t\t\tLOD: {},\n\t\t\tPoints: { threshold: 1 },\n\t\t\tSprite: {}\n\t\t};\n\n\t}\n\n\tset( origin, direction ) {\n\n\t\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\t\tthis.ray.set( origin, direction );\n\n\t}\n\n\tsetFromCamera( coords, camera ) {\n\n\t\tif ( camera.isPerspectiveCamera ) {\n\n\t\t\tthis.ray.origin.setFromMatrixPosition( camera.matrixWorld );\n\t\t\tthis.ray.direction.set( coords.x, coords.y, 0.5 ).unproject( camera ).sub( this.ray.origin ).normalize();\n\t\t\tthis.camera = camera;\n\n\t\t} else if ( camera.isOrthographicCamera ) {\n\n\t\t\tthis.ray.origin.set( coords.x, coords.y, ( camera.near + camera.far ) / ( camera.near - camera.far ) ).unproject( camera ); // set origin in plane of camera\n\t\t\tthis.ray.direction.set( 0, 0, - 1 ).transformDirection( camera.matrixWorld );\n\t\t\tthis.camera = camera;\n\n\t\t} else {\n\n\t\t\tconsole.error( 'THREE.Raycaster: Unsupported camera type: ' + camera.type );\n\n\t\t}\n\n\t}\n\n\tintersectObject( object, recursive = true, intersects = [] ) {\n\n\t\tintersectObject( object, this, intersects, recursive );\n\n\t\tintersects.sort( ascSort );\n\n\t\treturn intersects;\n\n\t}\n\n\tintersectObjects( objects, recursive = true, intersects = [] ) {\n\n\t\tfor ( let i = 0, l = objects.length; i < l; i ++ ) {\n\n\t\t\tintersectObject( objects[ i ], this, intersects, recursive );\n\n\t\t}\n\n\t\tintersects.sort( ascSort );\n\n\t\treturn intersects;\n\n\t}\n\n}\n\nfunction ascSort( a, b ) {\n\n\treturn a.distance - b.distance;\n\n}\n\nfunction intersectObject( object, raycaster, intersects, recursive ) {\n\n\tif ( object.layers.test( raycaster.layers ) ) {\n\n\t\tobject.raycast( raycaster, intersects );\n\n\t}\n\n\tif ( recursive === true ) {\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tintersectObject( children[ i ], raycaster, intersects, true );\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * Ref: https://en.wikipedia.org/wiki/Spherical_coordinate_system\n *\n * The polar angle (phi) is measured from the positive y-axis. The positive y-axis is up.\n * The azimuthal angle (theta) is measured from the positive z-axis.\n */\n\nclass Spherical {\n\n\tconstructor( radius = 1, phi = 0, theta = 0 ) {\n\n\t\tthis.radius = radius;\n\t\tthis.phi = phi; // polar angle\n\t\tthis.theta = theta; // azimuthal angle\n\n\t\treturn this;\n\n\t}\n\n\tset( radius, phi, theta ) {\n\n\t\tthis.radius = radius;\n\t\tthis.phi = phi;\n\t\tthis.theta = theta;\n\n\t\treturn this;\n\n\t}\n\n\tcopy( other ) {\n\n\t\tthis.radius = other.radius;\n\t\tthis.phi = other.phi;\n\t\tthis.theta = other.theta;\n\n\t\treturn this;\n\n\t}\n\n\t// restrict phi to be between EPS and PI-EPS\n\tmakeSafe() {\n\n\t\tconst EPS = 0.000001;\n\t\tthis.phi = Math.max( EPS, Math.min( Math.PI - EPS, this.phi ) );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromVector3( v ) {\n\n\t\treturn this.setFromCartesianCoords( v.x, v.y, v.z );\n\n\t}\n\n\tsetFromCartesianCoords( x, y, z ) {\n\n\t\tthis.radius = Math.sqrt( x * x + y * y + z * z );\n\n\t\tif ( this.radius === 0 ) {\n\n\t\t\tthis.theta = 0;\n\t\t\tthis.phi = 0;\n\n\t\t} else {\n\n\t\t\tthis.theta = Math.atan2( x, z );\n\t\t\tthis.phi = Math.acos( clamp( y / this.radius, - 1, 1 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\n/**\n * Ref: https://en.wikipedia.org/wiki/Cylindrical_coordinate_system\n */\n\nclass Cylindrical {\n\n\tconstructor( radius = 1, theta = 0, y = 0 ) {\n\n\t\tthis.radius = radius; // distance from the origin to a point in the x-z plane\n\t\tthis.theta = theta; // counterclockwise angle in the x-z plane measured in radians from the positive z-axis\n\t\tthis.y = y; // height above the x-z plane\n\n\t\treturn this;\n\n\t}\n\n\tset( radius, theta, y ) {\n\n\t\tthis.radius = radius;\n\t\tthis.theta = theta;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tcopy( other ) {\n\n\t\tthis.radius = other.radius;\n\t\tthis.theta = other.theta;\n\t\tthis.y = other.y;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromVector3( v ) {\n\n\t\treturn this.setFromCartesianCoords( v.x, v.y, v.z );\n\n\t}\n\n\tsetFromCartesianCoords( x, y, z ) {\n\n\t\tthis.radius = Math.sqrt( x * x + z * z );\n\t\tthis.theta = Math.atan2( x, z );\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nconst _vector$4 = /*@__PURE__*/ new Vector2();\n\nclass Box2 {\n\n\tconstructor( min = new Vector2( + Infinity, + Infinity ), max = new Vector2( - Infinity, - Infinity ) ) {\n\n\t\tthis.isBox2 = true;\n\n\t\tthis.min = min;\n\t\tthis.max = max;\n\n\t}\n\n\tset( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPoints( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetFromCenterAndSize( center, size ) {\n\n\t\tconst halfSize = _vector$4.copy( size ).multiplyScalar( 0.5 );\n\t\tthis.min.copy( center ).sub( halfSize );\n\t\tthis.max.copy( center ).add( halfSize );\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t}\n\n\tmakeEmpty() {\n\n\t\tthis.min.x = this.min.y = + Infinity;\n\t\tthis.max.x = this.max.y = - Infinity;\n\n\t\treturn this;\n\n\t}\n\n\tisEmpty() {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y );\n\n\t}\n\n\tgetCenter( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t}\n\n\tgetSize( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0 ) : target.subVectors( this.max, this.min );\n\n\t}\n\n\texpandByPoint( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t}\n\n\texpandByVector( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t}\n\n\texpandByScalar( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\treturn point.x < this.min.x || point.x > this.max.x ||\n\t\t\tpoint.y < this.min.y || point.y > this.max.y ? false : true;\n\n\t}\n\n\tcontainsBox( box ) {\n\n\t\treturn this.min.x <= box.min.x && box.max.x <= this.max.x &&\n\t\t\tthis.min.y <= box.min.y && box.max.y <= this.max.y;\n\n\t}\n\n\tgetParameter( point, target ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\treturn target.set(\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y )\n\t\t);\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\t// using 4 splitting planes to rule out intersections\n\n\t\treturn box.max.x < this.min.x || box.min.x > this.max.x ||\n\t\t\tbox.max.y < this.min.y || box.min.y > this.max.y ? false : true;\n\n\t}\n\n\tclampPoint( point, target ) {\n\n\t\treturn target.copy( point ).clamp( this.min, this.max );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\tconst clampedPoint = _vector$4.copy( point ).clamp( this.min, this.max );\n\t\treturn clampedPoint.sub( point ).length();\n\n\t}\n\n\tintersect( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\treturn this;\n\n\t}\n\n\tunion( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t}\n\n\tequals( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n}\n\nconst _startP = /*@__PURE__*/ new Vector3();\nconst _startEnd = /*@__PURE__*/ new Vector3();\n\nclass Line3 {\n\n\tconstructor( start = new Vector3(), end = new Vector3() ) {\n\n\t\tthis.start = start;\n\t\tthis.end = end;\n\n\t}\n\n\tset( start, end ) {\n\n\t\tthis.start.copy( start );\n\t\tthis.end.copy( end );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( line ) {\n\n\t\tthis.start.copy( line.start );\n\t\tthis.end.copy( line.end );\n\n\t\treturn this;\n\n\t}\n\n\tgetCenter( target ) {\n\n\t\treturn target.addVectors( this.start, this.end ).multiplyScalar( 0.5 );\n\n\t}\n\n\tdelta( target ) {\n\n\t\treturn target.subVectors( this.end, this.start );\n\n\t}\n\n\tdistanceSq() {\n\n\t\treturn this.start.distanceToSquared( this.end );\n\n\t}\n\n\tdistance() {\n\n\t\treturn this.start.distanceTo( this.end );\n\n\t}\n\n\tat( t, target ) {\n\n\t\treturn this.delta( target ).multiplyScalar( t ).add( this.start );\n\n\t}\n\n\tclosestPointToPointParameter( point, clampToLine ) {\n\n\t\t_startP.subVectors( point, this.start );\n\t\t_startEnd.subVectors( this.end, this.start );\n\n\t\tconst startEnd2 = _startEnd.dot( _startEnd );\n\t\tconst startEnd_startP = _startEnd.dot( _startP );\n\n\t\tlet t = startEnd_startP / startEnd2;\n\n\t\tif ( clampToLine ) {\n\n\t\t\tt = clamp( t, 0, 1 );\n\n\t\t}\n\n\t\treturn t;\n\n\t}\n\n\tclosestPointToPoint( point, clampToLine, target ) {\n\n\t\tconst t = this.closestPointToPointParameter( point, clampToLine );\n\n\t\treturn this.delta( target ).multiplyScalar( t ).add( this.start );\n\n\t}\n\n\tapplyMatrix4( matrix ) {\n\n\t\tthis.start.applyMatrix4( matrix );\n\t\tthis.end.applyMatrix4( matrix );\n\n\t\treturn this;\n\n\t}\n\n\tequals( line ) {\n\n\t\treturn line.start.equals( this.start ) && line.end.equals( this.end );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nconst _vector$3 = /*@__PURE__*/ new Vector3();\n\nclass SpotLightHelper extends Object3D {\n\n\tconstructor( light, color ) {\n\n\t\tsuper();\n\n\t\tthis.light = light;\n\t\tthis.light.updateMatrixWorld();\n\n\t\tthis.matrix = light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.color = color;\n\n\t\tconst geometry = new BufferGeometry();\n\n\t\tconst positions = [\n\t\t\t0, 0, 0, \t0, 0, 1,\n\t\t\t0, 0, 0, \t1, 0, 1,\n\t\t\t0, 0, 0,\t- 1, 0, 1,\n\t\t\t0, 0, 0, \t0, 1, 1,\n\t\t\t0, 0, 0, \t0, - 1, 1\n\t\t];\n\n\t\tfor ( let i = 0, j = 1, l = 32; i < l; i ++, j ++ ) {\n\n\t\t\tconst p1 = ( i / l ) * Math.PI * 2;\n\t\t\tconst p2 = ( j / l ) * Math.PI * 2;\n\n\t\t\tpositions.push(\n\t\t\t\tMath.cos( p1 ), Math.sin( p1 ), 1,\n\t\t\t\tMath.cos( p2 ), Math.sin( p2 ), 1\n\t\t\t);\n\n\t\t}\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { fog: false, toneMapped: false } );\n\n\t\tthis.cone = new LineSegments( geometry, material );\n\t\tthis.add( this.cone );\n\n\t\tthis.update();\n\n\t}\n\n\tdispose() {\n\n\t\tthis.cone.geometry.dispose();\n\t\tthis.cone.material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\tthis.light.updateMatrixWorld();\n\n\t\tconst coneLength = this.light.distance ? this.light.distance : 1000;\n\t\tconst coneWidth = coneLength * Math.tan( this.light.angle );\n\n\t\tthis.cone.scale.set( coneWidth, coneWidth, coneLength );\n\n\t\t_vector$3.setFromMatrixPosition( this.light.target.matrixWorld );\n\n\t\tthis.cone.lookAt( _vector$3 );\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.cone.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tthis.cone.material.color.copy( this.light.color );\n\n\t\t}\n\n\t}\n\n}\n\nconst _vector$2 = /*@__PURE__*/ new Vector3();\nconst _boneMatrix = /*@__PURE__*/ new Matrix4();\nconst _matrixWorldInv = /*@__PURE__*/ new Matrix4();\n\n\nclass SkeletonHelper extends LineSegments {\n\n\tconstructor( object ) {\n\n\t\tconst bones = getBoneList( object );\n\n\t\tconst geometry = new BufferGeometry();\n\n\t\tconst vertices = [];\n\t\tconst colors = [];\n\n\t\tconst color1 = new Color( 0, 0, 1 );\n\t\tconst color2 = new Color( 0, 1, 0 );\n\n\t\tfor ( let i = 0; i < bones.length; i ++ ) {\n\n\t\t\tconst bone = bones[ i ];\n\n\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\tvertices.push( 0, 0, 0 );\n\t\t\t\tvertices.push( 0, 0, 0 );\n\t\t\t\tcolors.push( color1.r, color1.g, color1.b );\n\t\t\t\tcolors.push( color2.r, color2.g, color2.b );\n\n\t\t\t}\n\n\t\t}\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, depthTest: false, depthWrite: false, toneMapped: false, transparent: true } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.isSkeletonHelper = true;\n\n\t\tthis.type = 'SkeletonHelper';\n\n\t\tthis.root = object;\n\t\tthis.bones = bones;\n\n\t\tthis.matrix = object.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tconst bones = this.bones;\n\n\t\tconst geometry = this.geometry;\n\t\tconst position = geometry.getAttribute( 'position' );\n\n\t\t_matrixWorldInv.copy( this.root.matrixWorld ).invert();\n\n\t\tfor ( let i = 0, j = 0; i < bones.length; i ++ ) {\n\n\t\t\tconst bone = bones[ i ];\n\n\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\t_boneMatrix.multiplyMatrices( _matrixWorldInv, bone.matrixWorld );\n\t\t\t\t_vector$2.setFromMatrixPosition( _boneMatrix );\n\t\t\t\tposition.setXYZ( j, _vector$2.x, _vector$2.y, _vector$2.z );\n\n\t\t\t\t_boneMatrix.multiplyMatrices( _matrixWorldInv, bone.parent.matrixWorld );\n\t\t\t\t_vector$2.setFromMatrixPosition( _boneMatrix );\n\t\t\t\tposition.setXYZ( j + 1, _vector$2.x, _vector$2.y, _vector$2.z );\n\n\t\t\t\tj += 2;\n\n\t\t\t}\n\n\t\t}\n\n\t\tgeometry.getAttribute( 'position' ).needsUpdate = true;\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t}\n\n}\n\n\nfunction getBoneList( object ) {\n\n\tconst boneList = [];\n\n\tif ( object.isBone === true ) {\n\n\t\tboneList.push( object );\n\n\t}\n\n\tfor ( let i = 0; i < object.children.length; i ++ ) {\n\n\t\tboneList.push.apply( boneList, getBoneList( object.children[ i ] ) );\n\n\t}\n\n\treturn boneList;\n\n}\n\nclass PointLightHelper extends Mesh {\n\n\tconstructor( light, sphereSize, color ) {\n\n\t\tconst geometry = new SphereGeometry( sphereSize, 4, 2 );\n\t\tconst material = new MeshBasicMaterial( { wireframe: true, fog: false, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.light = light;\n\t\tthis.light.updateMatrixWorld();\n\n\t\tthis.color = color;\n\n\t\tthis.type = 'PointLightHelper';\n\n\t\tthis.matrix = this.light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.update();\n\n\n\t\t/*\n\t// TODO: delete this comment?\n\tconst distanceGeometry = new THREE.IcosahedronGeometry( 1, 2 );\n\tconst distanceMaterial = new THREE.MeshBasicMaterial( { color: hexColor, fog: false, wireframe: true, opacity: 0.1, transparent: true } );\n\n\tthis.lightSphere = new THREE.Mesh( bulbGeometry, bulbMaterial );\n\tthis.lightDistance = new THREE.Mesh( distanceGeometry, distanceMaterial );\n\n\tconst d = light.distance;\n\n\tif ( d === 0.0 ) {\n\n\t\tthis.lightDistance.visible = false;\n\n\t} else {\n\n\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t}\n\n\tthis.add( this.lightDistance );\n\t*/\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tthis.material.color.copy( this.light.color );\n\n\t\t}\n\n\t\t/*\n\t\tconst d = this.light.distance;\n\n\t\tif ( d === 0.0 ) {\n\n\t\t\tthis.lightDistance.visible = false;\n\n\t\t} else {\n\n\t\t\tthis.lightDistance.visible = true;\n\t\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t\t}\n\t\t*/\n\n\t}\n\n}\n\nconst _vector$1 = /*@__PURE__*/ new Vector3();\nconst _color1 = /*@__PURE__*/ new Color();\nconst _color2 = /*@__PURE__*/ new Color();\n\nclass HemisphereLightHelper extends Object3D {\n\n\tconstructor( light, size, color ) {\n\n\t\tsuper();\n\n\t\tthis.light = light;\n\t\tthis.light.updateMatrixWorld();\n\n\t\tthis.matrix = light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.color = color;\n\n\t\tconst geometry = new OctahedronGeometry( size );\n\t\tgeometry.rotateY( Math.PI * 0.5 );\n\n\t\tthis.material = new MeshBasicMaterial( { wireframe: true, fog: false, toneMapped: false } );\n\t\tif ( this.color === undefined ) this.material.vertexColors = true;\n\n\t\tconst position = geometry.getAttribute( 'position' );\n\t\tconst colors = new Float32Array( position.count * 3 );\n\n\t\tgeometry.setAttribute( 'color', new BufferAttribute( colors, 3 ) );\n\n\t\tthis.add( new Mesh( geometry, this.material ) );\n\n\t\tthis.update();\n\n\t}\n\n\tdispose() {\n\n\t\tthis.children[ 0 ].geometry.dispose();\n\t\tthis.children[ 0 ].material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\tconst mesh = this.children[ 0 ];\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tconst colors = mesh.geometry.getAttribute( 'color' );\n\n\t\t\t_color1.copy( this.light.color );\n\t\t\t_color2.copy( this.light.groundColor );\n\n\t\t\tfor ( let i = 0, l = colors.count; i < l; i ++ ) {\n\n\t\t\t\tconst color = ( i < ( l / 2 ) ) ? _color1 : _color2;\n\n\t\t\t\tcolors.setXYZ( i, color.r, color.g, color.b );\n\n\t\t\t}\n\n\t\t\tcolors.needsUpdate = true;\n\n\t\t}\n\n\t\tmesh.lookAt( _vector$1.setFromMatrixPosition( this.light.matrixWorld ).negate() );\n\n\t}\n\n}\n\nclass GridHelper extends LineSegments {\n\n\tconstructor( size = 10, divisions = 10, color1 = 0x444444, color2 = 0x888888 ) {\n\n\t\tcolor1 = new Color( color1 );\n\t\tcolor2 = new Color( color2 );\n\n\t\tconst center = divisions / 2;\n\t\tconst step = size / divisions;\n\t\tconst halfSize = size / 2;\n\n\t\tconst vertices = [], colors = [];\n\n\t\tfor ( let i = 0, j = 0, k = - halfSize; i <= divisions; i ++, k += step ) {\n\n\t\t\tvertices.push( - halfSize, 0, k, halfSize, 0, k );\n\t\t\tvertices.push( k, 0, - halfSize, k, 0, halfSize );\n\n\t\t\tconst color = i === center ? color1 : color2;\n\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\n\t\t}\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'GridHelper';\n\n\t}\n\n}\n\nclass PolarGridHelper extends LineSegments {\n\n\tconstructor( radius = 10, radials = 16, circles = 8, divisions = 64, color1 = 0x444444, color2 = 0x888888 ) {\n\n\t\tcolor1 = new Color( color1 );\n\t\tcolor2 = new Color( color2 );\n\n\t\tconst vertices = [];\n\t\tconst colors = [];\n\n\t\t// create the radials\n\n\t\tfor ( let i = 0; i <= radials; i ++ ) {\n\n\t\t\tconst v = ( i / radials ) * ( Math.PI * 2 );\n\n\t\t\tconst x = Math.sin( v ) * radius;\n\t\t\tconst z = Math.cos( v ) * radius;\n\n\t\t\tvertices.push( 0, 0, 0 );\n\t\t\tvertices.push( x, 0, z );\n\n\t\t\tconst color = ( i & 1 ) ? color1 : color2;\n\n\t\t\tcolors.push( color.r, color.g, color.b );\n\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t}\n\n\t\t// create the circles\n\n\t\tfor ( let i = 0; i <= circles; i ++ ) {\n\n\t\t\tconst color = ( i & 1 ) ? color1 : color2;\n\n\t\t\tconst r = radius - ( radius / circles * i );\n\n\t\t\tfor ( let j = 0; j < divisions; j ++ ) {\n\n\t\t\t\t// first vertex\n\n\t\t\t\tlet v = ( j / divisions ) * ( Math.PI * 2 );\n\n\t\t\t\tlet x = Math.sin( v ) * r;\n\t\t\t\tlet z = Math.cos( v ) * r;\n\n\t\t\t\tvertices.push( x, 0, z );\n\t\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\t\t// second vertex\n\n\t\t\t\tv = ( ( j + 1 ) / divisions ) * ( Math.PI * 2 );\n\n\t\t\t\tx = Math.sin( v ) * r;\n\t\t\t\tz = Math.cos( v ) * r;\n\n\t\t\t\tvertices.push( x, 0, z );\n\t\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'PolarGridHelper';\n\n\t}\n\n}\n\nconst _v1 = /*@__PURE__*/ new Vector3();\nconst _v2 = /*@__PURE__*/ new Vector3();\nconst _v3 = /*@__PURE__*/ new Vector3();\n\nclass DirectionalLightHelper extends Object3D {\n\n\tconstructor( light, size, color ) {\n\n\t\tsuper();\n\n\t\tthis.light = light;\n\t\tthis.light.updateMatrixWorld();\n\n\t\tthis.matrix = light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.color = color;\n\n\t\tif ( size === undefined ) size = 1;\n\n\t\tlet geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( [\n\t\t\t- size, size, 0,\n\t\t\tsize, size, 0,\n\t\t\tsize, - size, 0,\n\t\t\t- size, - size, 0,\n\t\t\t- size, size, 0\n\t\t], 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { fog: false, toneMapped: false } );\n\n\t\tthis.lightPlane = new Line( geometry, material );\n\t\tthis.add( this.lightPlane );\n\n\t\tgeometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 0, 1 ], 3 ) );\n\n\t\tthis.targetLine = new Line( geometry, material );\n\t\tthis.add( this.targetLine );\n\n\t\tthis.update();\n\n\t}\n\n\tdispose() {\n\n\t\tthis.lightPlane.geometry.dispose();\n\t\tthis.lightPlane.material.dispose();\n\t\tthis.targetLine.geometry.dispose();\n\t\tthis.targetLine.material.dispose();\n\n\t}\n\n\tupdate() {\n\n\t\t_v1.setFromMatrixPosition( this.light.matrixWorld );\n\t\t_v2.setFromMatrixPosition( this.light.target.matrixWorld );\n\t\t_v3.subVectors( _v2, _v1 );\n\n\t\tthis.lightPlane.lookAt( _v2 );\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.lightPlane.material.color.set( this.color );\n\t\t\tthis.targetLine.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tthis.lightPlane.material.color.copy( this.light.color );\n\t\t\tthis.targetLine.material.color.copy( this.light.color );\n\n\t\t}\n\n\t\tthis.targetLine.lookAt( _v2 );\n\t\tthis.targetLine.scale.z = _v3.length();\n\n\t}\n\n}\n\nconst _vector = /*@__PURE__*/ new Vector3();\nconst _camera = /*@__PURE__*/ new Camera();\n\n/**\n *\t- shows frustum, line of sight and up of the camera\n *\t- suitable for fast updates\n * \t- based on frustum visualization in lightgl.js shadowmap example\n *\t\thttps://github.com/evanw/lightgl.js/blob/master/tests/shadowmap.html\n */\n\nclass CameraHelper extends LineSegments {\n\n\tconstructor( camera ) {\n\n\t\tconst geometry = new BufferGeometry();\n\t\tconst material = new LineBasicMaterial( { color: 0xffffff, vertexColors: true, toneMapped: false } );\n\n\t\tconst vertices = [];\n\t\tconst colors = [];\n\n\t\tconst pointMap = {};\n\n\t\t// near\n\n\t\taddLine( 'n1', 'n2' );\n\t\taddLine( 'n2', 'n4' );\n\t\taddLine( 'n4', 'n3' );\n\t\taddLine( 'n3', 'n1' );\n\n\t\t// far\n\n\t\taddLine( 'f1', 'f2' );\n\t\taddLine( 'f2', 'f4' );\n\t\taddLine( 'f4', 'f3' );\n\t\taddLine( 'f3', 'f1' );\n\n\t\t// sides\n\n\t\taddLine( 'n1', 'f1' );\n\t\taddLine( 'n2', 'f2' );\n\t\taddLine( 'n3', 'f3' );\n\t\taddLine( 'n4', 'f4' );\n\n\t\t// cone\n\n\t\taddLine( 'p', 'n1' );\n\t\taddLine( 'p', 'n2' );\n\t\taddLine( 'p', 'n3' );\n\t\taddLine( 'p', 'n4' );\n\n\t\t// up\n\n\t\taddLine( 'u1', 'u2' );\n\t\taddLine( 'u2', 'u3' );\n\t\taddLine( 'u3', 'u1' );\n\n\t\t// target\n\n\t\taddLine( 'c', 't' );\n\t\taddLine( 'p', 'c' );\n\n\t\t// cross\n\n\t\taddLine( 'cn1', 'cn2' );\n\t\taddLine( 'cn3', 'cn4' );\n\n\t\taddLine( 'cf1', 'cf2' );\n\t\taddLine( 'cf3', 'cf4' );\n\n\t\tfunction addLine( a, b ) {\n\n\t\t\taddPoint( a );\n\t\t\taddPoint( b );\n\n\t\t}\n\n\t\tfunction addPoint( id ) {\n\n\t\t\tvertices.push( 0, 0, 0 );\n\t\t\tcolors.push( 0, 0, 0 );\n\n\t\t\tif ( pointMap[ id ] === undefined ) {\n\n\t\t\t\tpointMap[ id ] = [];\n\n\t\t\t}\n\n\t\t\tpointMap[ id ].push( ( vertices.length / 3 ) - 1 );\n\n\t\t}\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'CameraHelper';\n\n\t\tthis.camera = camera;\n\t\tif ( this.camera.updateProjectionMatrix ) this.camera.updateProjectionMatrix();\n\n\t\tthis.matrix = camera.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.pointMap = pointMap;\n\n\t\tthis.update();\n\n\t\t// colors\n\n\t\tconst colorFrustum = new Color( 0xffaa00 );\n\t\tconst colorCone = new Color( 0xff0000 );\n\t\tconst colorUp = new Color( 0x00aaff );\n\t\tconst colorTarget = new Color( 0xffffff );\n\t\tconst colorCross = new Color( 0x333333 );\n\n\t\tthis.setColors( colorFrustum, colorCone, colorUp, colorTarget, colorCross );\n\n\t}\n\n\tsetColors( frustum, cone, up, target, cross ) {\n\n\t\tconst geometry = this.geometry;\n\n\t\tconst colorAttribute = geometry.getAttribute( 'color' );\n\n\t\t// near\n\n\t\tcolorAttribute.setXYZ( 0, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 1, frustum.r, frustum.g, frustum.b ); // n1, n2\n\t\tcolorAttribute.setXYZ( 2, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 3, frustum.r, frustum.g, frustum.b ); // n2, n4\n\t\tcolorAttribute.setXYZ( 4, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 5, frustum.r, frustum.g, frustum.b ); // n4, n3\n\t\tcolorAttribute.setXYZ( 6, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 7, frustum.r, frustum.g, frustum.b ); // n3, n1\n\n\t\t// far\n\n\t\tcolorAttribute.setXYZ( 8, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 9, frustum.r, frustum.g, frustum.b ); // f1, f2\n\t\tcolorAttribute.setXYZ( 10, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 11, frustum.r, frustum.g, frustum.b ); // f2, f4\n\t\tcolorAttribute.setXYZ( 12, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 13, frustum.r, frustum.g, frustum.b ); // f4, f3\n\t\tcolorAttribute.setXYZ( 14, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 15, frustum.r, frustum.g, frustum.b ); // f3, f1\n\n\t\t// sides\n\n\t\tcolorAttribute.setXYZ( 16, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 17, frustum.r, frustum.g, frustum.b ); // n1, f1\n\t\tcolorAttribute.setXYZ( 18, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 19, frustum.r, frustum.g, frustum.b ); // n2, f2\n\t\tcolorAttribute.setXYZ( 20, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 21, frustum.r, frustum.g, frustum.b ); // n3, f3\n\t\tcolorAttribute.setXYZ( 22, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 23, frustum.r, frustum.g, frustum.b ); // n4, f4\n\n\t\t// cone\n\n\t\tcolorAttribute.setXYZ( 24, cone.r, cone.g, cone.b ); colorAttribute.setXYZ( 25, cone.r, cone.g, cone.b ); // p, n1\n\t\tcolorAttribute.setXYZ( 26, cone.r, cone.g, cone.b ); colorAttribute.setXYZ( 27, cone.r, cone.g, cone.b ); // p, n2\n\t\tcolorAttribute.setXYZ( 28, cone.r, cone.g, cone.b ); colorAttribute.setXYZ( 29, cone.r, cone.g, cone.b ); // p, n3\n\t\tcolorAttribute.setXYZ( 30, cone.r, cone.g, cone.b ); colorAttribute.setXYZ( 31, cone.r, cone.g, cone.b ); // p, n4\n\n\t\t// up\n\n\t\tcolorAttribute.setXYZ( 32, up.r, up.g, up.b ); colorAttribute.setXYZ( 33, up.r, up.g, up.b ); // u1, u2\n\t\tcolorAttribute.setXYZ( 34, up.r, up.g, up.b ); colorAttribute.setXYZ( 35, up.r, up.g, up.b ); // u2, u3\n\t\tcolorAttribute.setXYZ( 36, up.r, up.g, up.b ); colorAttribute.setXYZ( 37, up.r, up.g, up.b ); // u3, u1\n\n\t\t// target\n\n\t\tcolorAttribute.setXYZ( 38, target.r, target.g, target.b ); colorAttribute.setXYZ( 39, target.r, target.g, target.b ); // c, t\n\t\tcolorAttribute.setXYZ( 40, cross.r, cross.g, cross.b ); colorAttribute.setXYZ( 41, cross.r, cross.g, cross.b ); // p, c\n\n\t\t// cross\n\n\t\tcolorAttribute.setXYZ( 42, cross.r, cross.g, cross.b ); colorAttribute.setXYZ( 43, cross.r, cross.g, cross.b ); // cn1, cn2\n\t\tcolorAttribute.setXYZ( 44, cross.r, cross.g, cross.b ); colorAttribute.setXYZ( 45, cross.r, cross.g, cross.b ); // cn3, cn4\n\n\t\tcolorAttribute.setXYZ( 46, cross.r, cross.g, cross.b ); colorAttribute.setXYZ( 47, cross.r, cross.g, cross.b ); // cf1, cf2\n\t\tcolorAttribute.setXYZ( 48, cross.r, cross.g, cross.b ); colorAttribute.setXYZ( 49, cross.r, cross.g, cross.b ); // cf3, cf4\n\n\t\tcolorAttribute.needsUpdate = true;\n\n\t}\n\n\tupdate() {\n\n\t\tconst geometry = this.geometry;\n\t\tconst pointMap = this.pointMap;\n\n\t\tconst w = 1, h = 1;\n\n\t\t// we need just camera projection matrix inverse\n\t\t// world matrix must be identity\n\n\t\t_camera.projectionMatrixInverse.copy( this.camera.projectionMatrixInverse );\n\n\t\t// center / target\n\n\t\tsetPoint( 'c', pointMap, geometry, _camera, 0, 0, - 1 );\n\t\tsetPoint( 't', pointMap, geometry, _camera, 0, 0, 1 );\n\n\t\t// near\n\n\t\tsetPoint( 'n1', pointMap, geometry, _camera, - w, - h, - 1 );\n\t\tsetPoint( 'n2', pointMap, geometry, _camera, w, - h, - 1 );\n\t\tsetPoint( 'n3', pointMap, geometry, _camera, - w, h, - 1 );\n\t\tsetPoint( 'n4', pointMap, geometry, _camera, w, h, - 1 );\n\n\t\t// far\n\n\t\tsetPoint( 'f1', pointMap, geometry, _camera, - w, - h, 1 );\n\t\tsetPoint( 'f2', pointMap, geometry, _camera, w, - h, 1 );\n\t\tsetPoint( 'f3', pointMap, geometry, _camera, - w, h, 1 );\n\t\tsetPoint( 'f4', pointMap, geometry, _camera, w, h, 1 );\n\n\t\t// up\n\n\t\tsetPoint( 'u1', pointMap, geometry, _camera, w * 0.7, h * 1.1, - 1 );\n\t\tsetPoint( 'u2', pointMap, geometry, _camera, - w * 0.7, h * 1.1, - 1 );\n\t\tsetPoint( 'u3', pointMap, geometry, _camera, 0, h * 2, - 1 );\n\n\t\t// cross\n\n\t\tsetPoint( 'cf1', pointMap, geometry, _camera, - w, 0, 1 );\n\t\tsetPoint( 'cf2', pointMap, geometry, _camera, w, 0, 1 );\n\t\tsetPoint( 'cf3', pointMap, geometry, _camera, 0, - h, 1 );\n\t\tsetPoint( 'cf4', pointMap, geometry, _camera, 0, h, 1 );\n\n\t\tsetPoint( 'cn1', pointMap, geometry, _camera, - w, 0, - 1 );\n\t\tsetPoint( 'cn2', pointMap, geometry, _camera, w, 0, - 1 );\n\t\tsetPoint( 'cn3', pointMap, geometry, _camera, 0, - h, - 1 );\n\t\tsetPoint( 'cn4', pointMap, geometry, _camera, 0, h, - 1 );\n\n\t\tgeometry.getAttribute( 'position' ).needsUpdate = true;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\n\nfunction setPoint( point, pointMap, geometry, camera, x, y, z ) {\n\n\t_vector.set( x, y, z ).unproject( camera );\n\n\tconst points = pointMap[ point ];\n\n\tif ( points !== undefined ) {\n\n\t\tconst position = geometry.getAttribute( 'position' );\n\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tposition.setXYZ( points[ i ], _vector.x, _vector.y, _vector.z );\n\n\t\t}\n\n\t}\n\n}\n\nconst _box = /*@__PURE__*/ new Box3();\n\nclass BoxHelper extends LineSegments {\n\n\tconstructor( object, color = 0xffff00 ) {\n\n\t\tconst indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] );\n\t\tconst positions = new Float32Array( 8 * 3 );\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\t\tgeometry.setAttribute( 'position', new BufferAttribute( positions, 3 ) );\n\n\t\tsuper( geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\t\tthis.object = object;\n\t\tthis.type = 'BoxHelper';\n\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.update();\n\n\t}\n\n\tupdate( object ) {\n\n\t\tif ( object !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.BoxHelper: .update() has no longer arguments.' );\n\n\t\t}\n\n\t\tif ( this.object !== undefined ) {\n\n\t\t\t_box.setFromObject( this.object );\n\n\t\t}\n\n\t\tif ( _box.isEmpty() ) return;\n\n\t\tconst min = _box.min;\n\t\tconst max = _box.max;\n\n\t\t/*\n\t\t\t5____4\n\t\t1/___0/|\n\t\t| 6__|_7\n\t\t2/___3/\n\n\t\t0: max.x, max.y, max.z\n\t\t1: min.x, max.y, max.z\n\t\t2: min.x, min.y, max.z\n\t\t3: max.x, min.y, max.z\n\t\t4: max.x, max.y, min.z\n\t\t5: min.x, max.y, min.z\n\t\t6: min.x, min.y, min.z\n\t\t7: max.x, min.y, min.z\n\t\t*/\n\n\t\tconst position = this.geometry.attributes.position;\n\t\tconst array = position.array;\n\n\t\tarray[ 0 ] = max.x; array[ 1 ] = max.y; array[ 2 ] = max.z;\n\t\tarray[ 3 ] = min.x; array[ 4 ] = max.y; array[ 5 ] = max.z;\n\t\tarray[ 6 ] = min.x; array[ 7 ] = min.y; array[ 8 ] = max.z;\n\t\tarray[ 9 ] = max.x; array[ 10 ] = min.y; array[ 11 ] = max.z;\n\t\tarray[ 12 ] = max.x; array[ 13 ] = max.y; array[ 14 ] = min.z;\n\t\tarray[ 15 ] = min.x; array[ 16 ] = max.y; array[ 17 ] = min.z;\n\t\tarray[ 18 ] = min.x; array[ 19 ] = min.y; array[ 20 ] = min.z;\n\t\tarray[ 21 ] = max.x; array[ 22 ] = min.y; array[ 23 ] = min.z;\n\n\t\tposition.needsUpdate = true;\n\n\t\tthis.geometry.computeBoundingSphere();\n\n\n\t}\n\n\tsetFromObject( object ) {\n\n\t\tthis.object = object;\n\t\tthis.update();\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.object = source.object;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass Box3Helper extends LineSegments {\n\n\tconstructor( box, color = 0xffff00 ) {\n\n\t\tconst indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] );\n\n\t\tconst positions = [ 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, - 1, 1, 1, 1, - 1, - 1, 1, - 1, - 1, - 1, - 1, 1, - 1, - 1 ];\n\n\t\tconst geometry = new BufferGeometry();\n\n\t\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\t\tsuper( geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\t\tthis.box = box;\n\n\t\tthis.type = 'Box3Helper';\n\n\t\tthis.geometry.computeBoundingSphere();\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tconst box = this.box;\n\n\t\tif ( box.isEmpty() ) return;\n\n\t\tbox.getCenter( this.position );\n\n\t\tbox.getSize( this.scale );\n\n\t\tthis.scale.multiplyScalar( 0.5 );\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t}\n\n}\n\nclass PlaneHelper extends Line {\n\n\tconstructor( plane, size = 1, hex = 0xffff00 ) {\n\n\t\tconst color = hex;\n\n\t\tconst positions = [ 1, - 1, 0, - 1, 1, 0, - 1, - 1, 0, 1, 1, 0, - 1, 1, 0, - 1, - 1, 0, 1, - 1, 0, 1, 1, 0 ];\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\t\tgeometry.computeBoundingSphere();\n\n\t\tsuper( geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\t\tthis.type = 'PlaneHelper';\n\n\t\tthis.plane = plane;\n\n\t\tthis.size = size;\n\n\t\tconst positions2 = [ 1, 1, 0, - 1, 1, 0, - 1, - 1, 0, 1, 1, 0, - 1, - 1, 0, 1, - 1, 0 ];\n\n\t\tconst geometry2 = new BufferGeometry();\n\t\tgeometry2.setAttribute( 'position', new Float32BufferAttribute( positions2, 3 ) );\n\t\tgeometry2.computeBoundingSphere();\n\n\t\tthis.add( new Mesh( geometry2, new MeshBasicMaterial( { color: color, opacity: 0.2, transparent: true, depthWrite: false, toneMapped: false } ) ) );\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tthis.position.set( 0, 0, 0 );\n\n\t\tthis.scale.set( 0.5 * this.size, 0.5 * this.size, 1 );\n\n\t\tthis.lookAt( this.plane.normal );\n\n\t\tthis.translateZ( - this.plane.constant );\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t}\n\n}\n\nconst _axis = /*@__PURE__*/ new Vector3();\nlet _lineGeometry, _coneGeometry;\n\nclass ArrowHelper extends Object3D {\n\n\t// dir is assumed to be normalized\n\n\tconstructor( dir = new Vector3( 0, 0, 1 ), origin = new Vector3( 0, 0, 0 ), length = 1, color = 0xffff00, headLength = length * 0.2, headWidth = headLength * 0.2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'ArrowHelper';\n\n\t\tif ( _lineGeometry === undefined ) {\n\n\t\t\t_lineGeometry = new BufferGeometry();\n\t\t\t_lineGeometry.setAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 1, 0 ], 3 ) );\n\n\t\t\t_coneGeometry = new CylinderGeometry( 0, 0.5, 1, 5, 1 );\n\t\t\t_coneGeometry.translate( 0, - 0.5, 0 );\n\n\t\t}\n\n\t\tthis.position.copy( origin );\n\n\t\tthis.line = new Line( _lineGeometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\t\tthis.line.matrixAutoUpdate = false;\n\t\tthis.add( this.line );\n\n\t\tthis.cone = new Mesh( _coneGeometry, new MeshBasicMaterial( { color: color, toneMapped: false } ) );\n\t\tthis.cone.matrixAutoUpdate = false;\n\t\tthis.add( this.cone );\n\n\t\tthis.setDirection( dir );\n\t\tthis.setLength( length, headLength, headWidth );\n\n\t}\n\n\tsetDirection( dir ) {\n\n\t\t// dir is assumed to be normalized\n\n\t\tif ( dir.y > 0.99999 ) {\n\n\t\t\tthis.quaternion.set( 0, 0, 0, 1 );\n\n\t\t} else if ( dir.y < - 0.99999 ) {\n\n\t\t\tthis.quaternion.set( 1, 0, 0, 0 );\n\n\t\t} else {\n\n\t\t\t_axis.set( dir.z, 0, - dir.x ).normalize();\n\n\t\t\tconst radians = Math.acos( dir.y );\n\n\t\t\tthis.quaternion.setFromAxisAngle( _axis, radians );\n\n\t\t}\n\n\t}\n\n\tsetLength( length, headLength = length * 0.2, headWidth = headLength * 0.2 ) {\n\n\t\tthis.line.scale.set( 1, Math.max( 0.0001, length - headLength ), 1 ); // see #17458\n\t\tthis.line.updateMatrix();\n\n\t\tthis.cone.scale.set( headWidth, headLength, headWidth );\n\t\tthis.cone.position.y = length;\n\t\tthis.cone.updateMatrix();\n\n\t}\n\n\tsetColor( color ) {\n\n\t\tthis.line.material.color.set( color );\n\t\tthis.cone.material.color.set( color );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source, false );\n\n\t\tthis.line.copy( source.line );\n\t\tthis.cone.copy( source.cone );\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass AxesHelper extends LineSegments {\n\n\tconstructor( size = 1 ) {\n\n\t\tconst vertices = [\n\t\t\t0, 0, 0,\tsize, 0, 0,\n\t\t\t0, 0, 0,\t0, size, 0,\n\t\t\t0, 0, 0,\t0, 0, size\n\t\t];\n\n\t\tconst colors = [\n\t\t\t1, 0, 0,\t1, 0.6, 0,\n\t\t\t0, 1, 0,\t0.6, 1, 0,\n\t\t\t0, 0, 1,\t0, 0.6, 1\n\t\t];\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'AxesHelper';\n\n\t}\n\n\tsetColors( xAxisColor, yAxisColor, zAxisColor ) {\n\n\t\tconst color = new Color();\n\t\tconst array = this.geometry.attributes.color.array;\n\n\t\tcolor.set( xAxisColor );\n\t\tcolor.toArray( array, 0 );\n\t\tcolor.toArray( array, 3 );\n\n\t\tcolor.set( yAxisColor );\n\t\tcolor.toArray( array, 6 );\n\t\tcolor.toArray( array, 9 );\n\n\t\tcolor.set( zAxisColor );\n\t\tcolor.toArray( array, 12 );\n\t\tcolor.toArray( array, 15 );\n\n\t\tthis.geometry.attributes.color.needsUpdate = true;\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\nclass ShapePath {\n\n\tconstructor() {\n\n\t\tthis.type = 'ShapePath';\n\n\t\tthis.color = new Color();\n\n\t\tthis.subPaths = [];\n\t\tthis.currentPath = null;\n\n\t}\n\n\tmoveTo( x, y ) {\n\n\t\tthis.currentPath = new Path();\n\t\tthis.subPaths.push( this.currentPath );\n\t\tthis.currentPath.moveTo( x, y );\n\n\t\treturn this;\n\n\t}\n\n\tlineTo( x, y ) {\n\n\t\tthis.currentPath.lineTo( x, y );\n\n\t\treturn this;\n\n\t}\n\n\tquadraticCurveTo( aCPx, aCPy, aX, aY ) {\n\n\t\tthis.currentPath.quadraticCurveTo( aCPx, aCPy, aX, aY );\n\n\t\treturn this;\n\n\t}\n\n\tbezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\n\t\tthis.currentPath.bezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY );\n\n\t\treturn this;\n\n\t}\n\n\tsplineThru( pts ) {\n\n\t\tthis.currentPath.splineThru( pts );\n\n\t\treturn this;\n\n\t}\n\n\ttoShapes( isCCW, noHoles ) {\n\n\t\tfunction toShapesNoHoles( inSubpaths ) {\n\n\t\t\tconst shapes = [];\n\n\t\t\tfor ( let i = 0, l = inSubpaths.length; i < l; i ++ ) {\n\n\t\t\t\tconst tmpPath = inSubpaths[ i ];\n\n\t\t\t\tconst tmpShape = new Shape();\n\t\t\t\ttmpShape.curves = tmpPath.curves;\n\n\t\t\t\tshapes.push( tmpShape );\n\n\t\t\t}\n\n\t\t\treturn shapes;\n\n\t\t}\n\n\t\tfunction isPointInsidePolygon( inPt, inPolygon ) {\n\n\t\t\tconst polyLen = inPolygon.length;\n\n\t\t\t// inPt on polygon contour => immediate success    or\n\t\t\t// toggling of inside/outside at every single! intersection point of an edge\n\t\t\t//  with the horizontal line through inPt, left of inPt\n\t\t\t//  not counting lowerY endpoints of edges and whole edges on that line\n\t\t\tlet inside = false;\n\t\t\tfor ( let p = polyLen - 1, q = 0; q < polyLen; p = q ++ ) {\n\n\t\t\t\tlet edgeLowPt = inPolygon[ p ];\n\t\t\t\tlet edgeHighPt = inPolygon[ q ];\n\n\t\t\t\tlet edgeDx = edgeHighPt.x - edgeLowPt.x;\n\t\t\t\tlet edgeDy = edgeHighPt.y - edgeLowPt.y;\n\n\t\t\t\tif ( Math.abs( edgeDy ) > Number.EPSILON ) {\n\n\t\t\t\t\t// not parallel\n\t\t\t\t\tif ( edgeDy < 0 ) {\n\n\t\t\t\t\t\tedgeLowPt = inPolygon[ q ]; edgeDx = - edgeDx;\n\t\t\t\t\t\tedgeHighPt = inPolygon[ p ]; edgeDy = - edgeDy;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ( inPt.y < edgeLowPt.y ) || ( inPt.y > edgeHighPt.y ) ) \t\tcontinue;\n\n\t\t\t\t\tif ( inPt.y === edgeLowPt.y ) {\n\n\t\t\t\t\t\tif ( inPt.x === edgeLowPt.x )\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\t// continue;\t\t\t\t// no intersection or edgeLowPt => doesn't count !!!\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst perpEdge = edgeDy * ( inPt.x - edgeLowPt.x ) - edgeDx * ( inPt.y - edgeLowPt.y );\n\t\t\t\t\t\tif ( perpEdge === 0 )\t\t\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\tif ( perpEdge < 0 ) \t\t\t\tcontinue;\n\t\t\t\t\t\tinside = ! inside;\t\t// true intersection left of inPt\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// parallel or collinear\n\t\t\t\t\tif ( inPt.y !== edgeLowPt.y ) \t\tcontinue;\t\t\t// parallel\n\t\t\t\t\t// edge lies on the same horizontal line as inPt\n\t\t\t\t\tif ( ( ( edgeHighPt.x <= inPt.x ) && ( inPt.x <= edgeLowPt.x ) ) ||\n\t\t\t\t\t\t ( ( edgeLowPt.x <= inPt.x ) && ( inPt.x <= edgeHighPt.x ) ) )\t\treturn\ttrue;\t// inPt: Point on contour !\n\t\t\t\t\t// continue;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn\tinside;\n\n\t\t}\n\n\t\tconst isClockWise = ShapeUtils.isClockWise;\n\n\t\tconst subPaths = this.subPaths;\n\t\tif ( subPaths.length === 0 ) return [];\n\n\t\tif ( noHoles === true )\treturn\ttoShapesNoHoles( subPaths );\n\n\n\t\tlet solid, tmpPath, tmpShape;\n\t\tconst shapes = [];\n\n\t\tif ( subPaths.length === 1 ) {\n\n\t\t\ttmpPath = subPaths[ 0 ];\n\t\t\ttmpShape = new Shape();\n\t\t\ttmpShape.curves = tmpPath.curves;\n\t\t\tshapes.push( tmpShape );\n\t\t\treturn shapes;\n\n\t\t}\n\n\t\tlet holesFirst = ! isClockWise( subPaths[ 0 ].getPoints() );\n\t\tholesFirst = isCCW ? ! holesFirst : holesFirst;\n\n\t\t// console.log(\"Holes first\", holesFirst);\n\n\t\tconst betterShapeHoles = [];\n\t\tconst newShapes = [];\n\t\tlet newShapeHoles = [];\n\t\tlet mainIdx = 0;\n\t\tlet tmpPoints;\n\n\t\tnewShapes[ mainIdx ] = undefined;\n\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\tfor ( let i = 0, l = subPaths.length; i < l; i ++ ) {\n\n\t\t\ttmpPath = subPaths[ i ];\n\t\t\ttmpPoints = tmpPath.getPoints();\n\t\t\tsolid = isClockWise( tmpPoints );\n\t\t\tsolid = isCCW ? ! solid : solid;\n\n\t\t\tif ( solid ) {\n\n\t\t\t\tif ( ( ! holesFirst ) && ( newShapes[ mainIdx ] ) )\tmainIdx ++;\n\n\t\t\t\tnewShapes[ mainIdx ] = { s: new Shape(), p: tmpPoints };\n\t\t\t\tnewShapes[ mainIdx ].s.curves = tmpPath.curves;\n\n\t\t\t\tif ( holesFirst )\tmainIdx ++;\n\t\t\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\t\t\t//console.log('cw', i);\n\n\t\t\t} else {\n\n\t\t\t\tnewShapeHoles[ mainIdx ].push( { h: tmpPath, p: tmpPoints[ 0 ] } );\n\n\t\t\t\t//console.log('ccw', i);\n\n\t\t\t}\n\n\t\t}\n\n\t\t// only Holes? -> probably all Shapes with wrong orientation\n\t\tif ( ! newShapes[ 0 ] )\treturn\ttoShapesNoHoles( subPaths );\n\n\n\t\tif ( newShapes.length > 1 ) {\n\n\t\t\tlet ambiguous = false;\n\t\t\tlet toChange = 0;\n\n\t\t\tfor ( let sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tbetterShapeHoles[ sIdx ] = [];\n\n\t\t\t}\n\n\t\t\tfor ( let sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tconst sho = newShapeHoles[ sIdx ];\n\n\t\t\t\tfor ( let hIdx = 0; hIdx < sho.length; hIdx ++ ) {\n\n\t\t\t\t\tconst ho = sho[ hIdx ];\n\t\t\t\t\tlet hole_unassigned = true;\n\n\t\t\t\t\tfor ( let s2Idx = 0; s2Idx < newShapes.length; s2Idx ++ ) {\n\n\t\t\t\t\t\tif ( isPointInsidePolygon( ho.p, newShapes[ s2Idx ].p ) ) {\n\n\t\t\t\t\t\t\tif ( sIdx !== s2Idx )\ttoChange ++;\n\n\t\t\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\t\t\thole_unassigned = false;\n\t\t\t\t\t\t\t\tbetterShapeHoles[ s2Idx ].push( ho );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tambiguous = true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\tbetterShapeHoles[ sIdx ].push( ho );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( toChange > 0 && ambiguous === false ) {\n\n\t\t\t\tnewShapeHoles = betterShapeHoles;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlet tmpHoles;\n\n\t\tfor ( let i = 0, il = newShapes.length; i < il; i ++ ) {\n\n\t\t\ttmpShape = newShapes[ i ].s;\n\t\t\tshapes.push( tmpShape );\n\t\t\ttmpHoles = newShapeHoles[ i ];\n\n\t\t\tfor ( let j = 0, jl = tmpHoles.length; j < jl; j ++ ) {\n\n\t\t\t\ttmpShape.holes.push( tmpHoles[ j ].h );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//console.log(\"shape\", shapes);\n\n\t\treturn shapes;\n\n\t}\n\n}\n\n// Fast Half Float Conversions, http://www.fox-toolkit.org/ftp/fasthalffloatconversion.pdf\n\nconst _tables = /*@__PURE__*/ _generateTables();\n\nfunction _generateTables() {\n\n\t// float32 to float16 helpers\n\n\tconst buffer = new ArrayBuffer( 4 );\n\tconst floatView = new Float32Array( buffer );\n\tconst uint32View = new Uint32Array( buffer );\n\n\tconst baseTable = new Uint32Array( 512 );\n\tconst shiftTable = new Uint32Array( 512 );\n\n\tfor ( let i = 0; i < 256; ++ i ) {\n\n\t\tconst e = i - 127;\n\n\t\t// very small number (0, -0)\n\n\t\tif ( e < - 27 ) {\n\n\t\t\tbaseTable[ i ] = 0x0000;\n\t\t\tbaseTable[ i | 0x100 ] = 0x8000;\n\t\t\tshiftTable[ i ] = 24;\n\t\t\tshiftTable[ i | 0x100 ] = 24;\n\n\t\t\t// small number (denorm)\n\n\t\t} else if ( e < - 14 ) {\n\n\t\t\tbaseTable[ i ] = 0x0400 >> ( - e - 14 );\n\t\t\tbaseTable[ i | 0x100 ] = ( 0x0400 >> ( - e - 14 ) ) | 0x8000;\n\t\t\tshiftTable[ i ] = - e - 1;\n\t\t\tshiftTable[ i | 0x100 ] = - e - 1;\n\n\t\t\t// normal number\n\n\t\t} else if ( e <= 15 ) {\n\n\t\t\tbaseTable[ i ] = ( e + 15 ) << 10;\n\t\t\tbaseTable[ i | 0x100 ] = ( ( e + 15 ) << 10 ) | 0x8000;\n\t\t\tshiftTable[ i ] = 13;\n\t\t\tshiftTable[ i | 0x100 ] = 13;\n\n\t\t\t// large number (Infinity, -Infinity)\n\n\t\t} else if ( e < 128 ) {\n\n\t\t\tbaseTable[ i ] = 0x7c00;\n\t\t\tbaseTable[ i | 0x100 ] = 0xfc00;\n\t\t\tshiftTable[ i ] = 24;\n\t\t\tshiftTable[ i | 0x100 ] = 24;\n\n\t\t\t// stay (NaN, Infinity, -Infinity)\n\n\t\t} else {\n\n\t\t\tbaseTable[ i ] = 0x7c00;\n\t\t\tbaseTable[ i | 0x100 ] = 0xfc00;\n\t\t\tshiftTable[ i ] = 13;\n\t\t\tshiftTable[ i | 0x100 ] = 13;\n\n\t\t}\n\n\t}\n\n\t// float16 to float32 helpers\n\n\tconst mantissaTable = new Uint32Array( 2048 );\n\tconst exponentTable = new Uint32Array( 64 );\n\tconst offsetTable = new Uint32Array( 64 );\n\n\tfor ( let i = 1; i < 1024; ++ i ) {\n\n\t\tlet m = i << 13; // zero pad mantissa bits\n\t\tlet e = 0; // zero exponent\n\n\t\t// normalized\n\t\twhile ( ( m & 0x00800000 ) === 0 ) {\n\n\t\t\tm <<= 1;\n\t\t\te -= 0x00800000; // decrement exponent\n\n\t\t}\n\n\t\tm &= ~ 0x00800000; // clear leading 1 bit\n\t\te += 0x38800000; // adjust bias\n\n\t\tmantissaTable[ i ] = m | e;\n\n\t}\n\n\tfor ( let i = 1024; i < 2048; ++ i ) {\n\n\t\tmantissaTable[ i ] = 0x38000000 + ( ( i - 1024 ) << 13 );\n\n\t}\n\n\tfor ( let i = 1; i < 31; ++ i ) {\n\n\t\texponentTable[ i ] = i << 23;\n\n\t}\n\n\texponentTable[ 31 ] = 0x47800000;\n\texponentTable[ 32 ] = 0x80000000;\n\n\tfor ( let i = 33; i < 63; ++ i ) {\n\n\t\texponentTable[ i ] = 0x80000000 + ( ( i - 32 ) << 23 );\n\n\t}\n\n\texponentTable[ 63 ] = 0xc7800000;\n\n\tfor ( let i = 1; i < 64; ++ i ) {\n\n\t\tif ( i !== 32 ) {\n\n\t\t\toffsetTable[ i ] = 1024;\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\tfloatView: floatView,\n\t\tuint32View: uint32View,\n\t\tbaseTable: baseTable,\n\t\tshiftTable: shiftTable,\n\t\tmantissaTable: mantissaTable,\n\t\texponentTable: exponentTable,\n\t\toffsetTable: offsetTable\n\t};\n\n}\n\n// float32 to float16\n\nfunction toHalfFloat( val ) {\n\n\tif ( Math.abs( val ) > 65504 ) console.warn( 'THREE.DataUtils.toHalfFloat(): Value out of range.' );\n\n\tval = clamp( val, - 65504, 65504 );\n\n\t_tables.floatView[ 0 ] = val;\n\tconst f = _tables.uint32View[ 0 ];\n\tconst e = ( f >> 23 ) & 0x1ff;\n\treturn _tables.baseTable[ e ] + ( ( f & 0x007fffff ) >> _tables.shiftTable[ e ] );\n\n}\n\n// float16 to float32\n\nfunction fromHalfFloat( val ) {\n\n\tconst m = val >> 10;\n\t_tables.uint32View[ 0 ] = _tables.mantissaTable[ _tables.offsetTable[ m ] + ( val & 0x3ff ) ] + _tables.exponentTable[ m ];\n\treturn _tables.floatView[ 0 ];\n\n}\n\nvar DataUtils = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\ttoHalfFloat: toHalfFloat,\n\tfromHalfFloat: fromHalfFloat\n});\n\n// r133, c5bb5434555a3c3ddd784944a0a124f996fc721b\n\nclass ParametricGeometry extends BufferGeometry {\n\n\tconstructor() {\n\n\t\tconsole.error( 'THREE.ParametricGeometry has been moved to /examples/jsm/geometries/ParametricGeometry.js' );\n\t\tsuper();\n\n\t}\n\n}\n\n// r133, eb58ff153119090d3bbb24474ea0ffc40c70dc92\n\nclass TextGeometry extends BufferGeometry {\n\n\tconstructor() {\n\n\t\tconsole.error( 'THREE.TextGeometry has been moved to /examples/jsm/geometries/TextGeometry.js' );\n\t\tsuper();\n\n\t}\n\n}\n\n// r133, eb58ff153119090d3bbb24474ea0ffc40c70dc92\n\nfunction FontLoader() {\n\n\tconsole.error( 'THREE.FontLoader has been moved to /examples/jsm/loaders/FontLoader.js' );\n\n}\n\n// r133, eb58ff153119090d3bbb24474ea0ffc40c70dc92\n\nfunction Font() {\n\n\tconsole.error( 'THREE.Font has been moved to /examples/jsm/loaders/FontLoader.js' );\n\n}\n\n// r134, d65e0af06644fe5a84a6fc0e372f4318f95a04c0\n\nfunction ImmediateRenderObject() {\n\n\tconsole.error( 'THREE.ImmediateRenderObject has been removed.' );\n\n}\n\n// r138, 48b05d3500acc084df50be9b4c90781ad9b8cb17\n\nclass WebGLMultisampleRenderTarget extends WebGLRenderTarget {\n\n\tconstructor( width, height, options ) {\n\n\t\tconsole.error( 'THREE.WebGLMultisampleRenderTarget has been removed. Use a normal render target and set the \"samples\" property to greater 0 to enable multisampling.' );\n\t\tsuper( width, height, options );\n\t\tthis.samples = 4;\n\n\t}\n\n}\n\n// r138, f9cd9cab03b7b64244e304900a3a2eeaa3a588ce\n\nclass DataTexture2DArray extends DataArrayTexture {\n\n\tconstructor( data, width, height, depth ) {\n\n\t\tconsole.warn( 'THREE.DataTexture2DArray has been renamed to DataArrayTexture.' );\n\t\tsuper( data, width, height, depth );\n\n\t}\n\n}\n\n// r138, f9cd9cab03b7b64244e304900a3a2eeaa3a588ce\n\nclass DataTexture3D extends Data3DTexture {\n\n\tconstructor( data, width, height, depth ) {\n\n\t\tconsole.warn( 'THREE.DataTexture3D has been renamed to Data3DTexture.' );\n\t\tsuper( data, width, height, depth );\n\n\t}\n\n}\n\nif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'register', { detail: {\n\t\trevision: REVISION,\n\t} } ) );\n\n}\n\nif ( typeof window !== 'undefined' ) {\n\n\tif ( window.__THREE__ ) {\n\n\t\tconsole.warn( 'WARNING: Multiple instances of Three.js being imported.' );\n\n\t} else {\n\n\t\twindow.__THREE__ = REVISION;\n\n\t}\n\n}\n\nexport { ACESFilmicToneMapping, AddEquation, AddOperation, AdditiveAnimationBlendMode, AdditiveBlending, AlphaFormat, AlwaysDepth, AlwaysStencilFunc, AmbientLight, AmbientLightProbe, AnimationClip, AnimationLoader, AnimationMixer, AnimationObjectGroup, AnimationUtils, ArcCurve, ArrayCamera, ArrowHelper, Audio, AudioAnalyser, AudioContext, AudioListener, AudioLoader, AxesHelper, BackSide, BasicDepthPacking, BasicShadowMap, Bone, BooleanKeyframeTrack, Box2, Box3, Box3Helper, BoxGeometry as BoxBufferGeometry, BoxGeometry, BoxHelper, BufferAttribute, BufferGeometry, BufferGeometryLoader, ByteType, Cache, Camera, CameraHelper, CanvasTexture, CapsuleGeometry as CapsuleBufferGeometry, CapsuleGeometry, CatmullRomCurve3, CineonToneMapping, CircleGeometry as CircleBufferGeometry, CircleGeometry, ClampToEdgeWrapping, Clock, Color, ColorKeyframeTrack, ColorManagement, CompressedTexture, CompressedTextureLoader, ConeGeometry as ConeBufferGeometry, ConeGeometry, CubeCamera, CubeReflectionMapping, CubeRefractionMapping, CubeTexture, CubeTextureLoader, CubeUVReflectionMapping, CubicBezierCurve, CubicBezierCurve3, CubicInterpolant, CullFaceBack, CullFaceFront, CullFaceFrontBack, CullFaceNone, Curve, CurvePath, CustomBlending, CustomToneMapping, CylinderGeometry as CylinderBufferGeometry, CylinderGeometry, Cylindrical, Data3DTexture, DataArrayTexture, DataTexture, DataTexture2DArray, DataTexture3D, DataTextureLoader, DataUtils, DecrementStencilOp, DecrementWrapStencilOp, DefaultLoadingManager, DepthFormat, DepthStencilFormat, DepthTexture, DirectionalLight, DirectionalLightHelper, DiscreteInterpolant, DodecahedronGeometry as DodecahedronBufferGeometry, DodecahedronGeometry, DoubleSide, DstAlphaFactor, DstColorFactor, DynamicCopyUsage, DynamicDrawUsage, DynamicReadUsage, EdgesGeometry, EllipseCurve, EqualDepth, EqualStencilFunc, EquirectangularReflectionMapping, EquirectangularRefractionMapping, Euler, EventDispatcher, ExtrudeGeometry as ExtrudeBufferGeometry, ExtrudeGeometry, FileLoader, FlatShading, Float16BufferAttribute, Float32BufferAttribute, Float64BufferAttribute, FloatType, Fog, FogExp2, Font, FontLoader, FramebufferTexture, FrontSide, Frustum, GLBufferAttribute, GLSL1, GLSL3, GreaterDepth, GreaterEqualDepth, GreaterEqualStencilFunc, GreaterStencilFunc, GridHelper, Group, HalfFloatType, HemisphereLight, HemisphereLightHelper, HemisphereLightProbe, IcosahedronGeometry as IcosahedronBufferGeometry, IcosahedronGeometry, ImageBitmapLoader, ImageLoader, ImageUtils, ImmediateRenderObject, IncrementStencilOp, IncrementWrapStencilOp, InstancedBufferAttribute, InstancedBufferGeometry, InstancedInterleavedBuffer, InstancedMesh, Int16BufferAttribute, Int32BufferAttribute, Int8BufferAttribute, IntType, InterleavedBuffer, InterleavedBufferAttribute, Interpolant, InterpolateDiscrete, InterpolateLinear, InterpolateSmooth, InvertStencilOp, KeepStencilOp, KeyframeTrack, LOD, LatheGeometry as LatheBufferGeometry, LatheGeometry, Layers, LessDepth, LessEqualDepth, LessEqualStencilFunc, LessStencilFunc, Light, LightProbe, Line, Line3, LineBasicMaterial, LineCurve, LineCurve3, LineDashedMaterial, LineLoop, LineSegments, LinearEncoding, LinearFilter, LinearInterpolant, LinearMipMapLinearFilter, LinearMipMapNearestFilter, LinearMipmapLinearFilter, LinearMipmapNearestFilter, LinearSRGBColorSpace, LinearToneMapping, Loader, LoaderUtils, LoadingManager, LoopOnce, LoopPingPong, LoopRepeat, LuminanceAlphaFormat, LuminanceFormat, MOUSE, Material, MaterialLoader, MathUtils, Matrix3, Matrix4, MaxEquation, Mesh, MeshBasicMaterial, MeshDepthMaterial, MeshDistanceMaterial, MeshLambertMaterial, MeshMatcapMaterial, MeshNormalMaterial, MeshPhongMaterial, MeshPhysicalMaterial, MeshStandardMaterial, MeshToonMaterial, MinEquation, MirroredRepeatWrapping, MixOperation, MultiplyBlending, MultiplyOperation, NearestFilter, NearestMipMapLinearFilter, NearestMipMapNearestFilter, NearestMipmapLinearFilter, NearestMipmapNearestFilter, NeverDepth, NeverStencilFunc, NoBlending, NoColorSpace, NoToneMapping, NormalAnimationBlendMode, NormalBlending, NotEqualDepth, NotEqualStencilFunc, NumberKeyframeTrack, Object3D, ObjectLoader, ObjectSpaceNormalMap, OctahedronGeometry as OctahedronBufferGeometry, OctahedronGeometry, OneFactor, OneMinusDstAlphaFactor, OneMinusDstColorFactor, OneMinusSrcAlphaFactor, OneMinusSrcColorFactor, OrthographicCamera, PCFShadowMap, PCFSoftShadowMap, PMREMGenerator, ParametricGeometry, Path, PerspectiveCamera, Plane, PlaneGeometry as PlaneBufferGeometry, PlaneGeometry, PlaneHelper, PointLight, PointLightHelper, Points, PointsMaterial, PolarGridHelper, PolyhedronGeometry as PolyhedronBufferGeometry, PolyhedronGeometry, PositionalAudio, PropertyBinding, PropertyMixer, QuadraticBezierCurve, QuadraticBezierCurve3, Quaternion, QuaternionKeyframeTrack, QuaternionLinearInterpolant, REVISION, RGBADepthPacking, RGBAFormat, RGBAIntegerFormat, RGBA_ASTC_10x10_Format, RGBA_ASTC_10x5_Format, RGBA_ASTC_10x6_Format, RGBA_ASTC_10x8_Format, RGBA_ASTC_12x10_Format, RGBA_ASTC_12x12_Format, RGBA_ASTC_4x4_Format, RGBA_ASTC_5x4_Format, RGBA_ASTC_5x5_Format, RGBA_ASTC_6x5_Format, RGBA_ASTC_6x6_Format, RGBA_ASTC_8x5_Format, RGBA_ASTC_8x6_Format, RGBA_ASTC_8x8_Format, RGBA_BPTC_Format, RGBA_ETC2_EAC_Format, RGBA_PVRTC_2BPPV1_Format, RGBA_PVRTC_4BPPV1_Format, RGBA_S3TC_DXT1_Format, RGBA_S3TC_DXT3_Format, RGBA_S3TC_DXT5_Format, RGBFormat, RGB_ETC1_Format, RGB_ETC2_Format, RGB_PVRTC_2BPPV1_Format, RGB_PVRTC_4BPPV1_Format, RGB_S3TC_DXT1_Format, RGFormat, RGIntegerFormat, RawShaderMaterial, Ray, Raycaster, RectAreaLight, RedFormat, RedIntegerFormat, ReinhardToneMapping, RepeatWrapping, ReplaceStencilOp, ReverseSubtractEquation, RingGeometry as RingBufferGeometry, RingGeometry, SRGBColorSpace, Scene, ShaderChunk, ShaderLib, ShaderMaterial, ShadowMaterial, Shape, ShapeGeometry as ShapeBufferGeometry, ShapeGeometry, ShapePath, ShapeUtils, ShortType, Skeleton, SkeletonHelper, SkinnedMesh, SmoothShading, Source, Sphere, SphereGeometry as SphereBufferGeometry, SphereGeometry, Spherical, SphericalHarmonics3, SplineCurve, SpotLight, SpotLightHelper, Sprite, SpriteMaterial, SrcAlphaFactor, SrcAlphaSaturateFactor, SrcColorFactor, StaticCopyUsage, StaticDrawUsage, StaticReadUsage, StereoCamera, StreamCopyUsage, StreamDrawUsage, StreamReadUsage, StringKeyframeTrack, SubtractEquation, SubtractiveBlending, TOUCH, TangentSpaceNormalMap, TetrahedronGeometry as TetrahedronBufferGeometry, TetrahedronGeometry, TextGeometry, Texture, TextureLoader, TorusGeometry as TorusBufferGeometry, TorusGeometry, TorusKnotGeometry as TorusKnotBufferGeometry, TorusKnotGeometry, Triangle, TriangleFanDrawMode, TriangleStripDrawMode, TrianglesDrawMode, TubeGeometry as TubeBufferGeometry, TubeGeometry, UVMapping, Uint16BufferAttribute, Uint32BufferAttribute, Uint8BufferAttribute, Uint8ClampedBufferAttribute, Uniform, UniformsGroup, UniformsLib, UniformsUtils, UnsignedByteType, UnsignedInt248Type, UnsignedIntType, UnsignedShort4444Type, UnsignedShort5551Type, UnsignedShortType, VSMShadowMap, Vector2, Vector3, Vector4, VectorKeyframeTrack, VideoTexture, WebGL1Renderer, WebGL3DRenderTarget, WebGLArrayRenderTarget, WebGLCubeRenderTarget, WebGLMultipleRenderTargets, WebGLMultisampleRenderTarget, WebGLRenderTarget, WebGLRenderer, WebGLUtils, WireframeGeometry, WrapAroundEnding, ZeroCurvatureEnding, ZeroFactor, ZeroSlopeEnding, ZeroStencilOp, _SRGBAFormat, sRGBEncoding };\n","import {\n\tAnimationClip,\n\tBone,\n\tBox3,\n\tBufferAttribute,\n\tBufferGeometry,\n\tClampToEdgeWrapping,\n\tColor,\n\tDirectionalLight,\n\tDoubleSide,\n\tFileLoader,\n\tFrontSide,\n\tGroup,\n\tImageBitmapLoader,\n\tInterleavedBuffer,\n\tInterleavedBufferAttribute,\n\tInterpolant,\n\tInterpolateDiscrete,\n\tInterpolateLinear,\n\tLine,\n\tLineBasicMaterial,\n\tLineLoop,\n\tLineSegments,\n\tLinearFilter,\n\tLinearMipmapLinearFilter,\n\tLinearMipmapNearestFilter,\n\tLoader,\n\tLoaderUtils,\n\tMaterial,\n\tMathUtils,\n\tMatrix4,\n\tMesh,\n\tMeshBasicMaterial,\n\tMeshPhysicalMaterial,\n\tMeshStandardMaterial,\n\tMirroredRepeatWrapping,\n\tNearestFilter,\n\tNearestMipmapLinearFilter,\n\tNearestMipmapNearestFilter,\n\tNumberKeyframeTrack,\n\tObject3D,\n\tOrthographicCamera,\n\tPerspectiveCamera,\n\tPointLight,\n\tPoints,\n\tPointsMaterial,\n\tPropertyBinding,\n\tQuaternion,\n\tQuaternionKeyframeTrack,\n\tRepeatWrapping,\n\tSkeleton,\n\tSkinnedMesh,\n\tSphere,\n\tSpotLight,\n\tTangentSpaceNormalMap,\n\tTexture,\n\tTextureLoader,\n\tTriangleFanDrawMode,\n\tTriangleStripDrawMode,\n\tVector2,\n\tVector3,\n\tVectorKeyframeTrack,\n\tsRGBEncoding\n} from 'three';\n\nclass GLTFLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t\tthis.dracoLoader = null;\n\t\tthis.ktx2Loader = null;\n\t\tthis.meshoptDecoder = null;\n\n\t\tthis.pluginCallbacks = [];\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFMaterialsClearcoatExtension( parser );\n\n\t\t} );\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFTextureBasisUExtension( parser );\n\n\t\t} );\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFTextureWebPExtension( parser );\n\n\t\t} );\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFMaterialsSheenExtension( parser );\n\n\t\t} );\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFMaterialsTransmissionExtension( parser );\n\n\t\t} );\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFMaterialsVolumeExtension( parser );\n\n\t\t} );\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFMaterialsIorExtension( parser );\n\n\t\t} );\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFMaterialsEmissiveStrengthExtension( parser );\n\n\t\t} );\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFMaterialsSpecularExtension( parser );\n\n\t\t} );\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFMaterialsIridescenceExtension( parser );\n\n\t\t} );\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFLightsExtension( parser );\n\n\t\t} );\n\n\t\tthis.register( function ( parser ) {\n\n\t\t\treturn new GLTFMeshoptCompression( parser );\n\n\t\t} );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tlet resourcePath;\n\n\t\tif ( this.resourcePath !== '' ) {\n\n\t\t\tresourcePath = this.resourcePath;\n\n\t\t} else if ( this.path !== '' ) {\n\n\t\t\tresourcePath = this.path;\n\n\t\t} else {\n\n\t\t\tresourcePath = LoaderUtils.extractUrlBase( url );\n\n\t\t}\n\n\t\t// Tells the LoadingManager to track an extra item, which resolves after\n\t\t// the model is fully loaded. This means the count of items loaded will\n\t\t// be incorrect, but ensures manager.onLoad() does not fire early.\n\t\tthis.manager.itemStart( url );\n\n\t\tconst _onError = function ( e ) {\n\n\t\t\tif ( onError ) {\n\n\t\t\t\tonError( e );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.error( e );\n\n\t\t\t}\n\n\t\t\tscope.manager.itemError( url );\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t};\n\n\t\tconst loader = new FileLoader( this.manager );\n\n\t\tloader.setPath( this.path );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\n\t\tloader.load( url, function ( data ) {\n\n\t\t\ttry {\n\n\t\t\t\tscope.parse( data, resourcePath, function ( gltf ) {\n\n\t\t\t\t\tonLoad( gltf );\n\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t}, _onError );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\t_onError( e );\n\n\t\t\t}\n\n\t\t}, onProgress, _onError );\n\n\t}\n\n\tsetDRACOLoader( dracoLoader ) {\n\n\t\tthis.dracoLoader = dracoLoader;\n\t\treturn this;\n\n\t}\n\n\tsetDDSLoader() {\n\n\t\tthrow new Error(\n\n\t\t\t'THREE.GLTFLoader: \"MSFT_texture_dds\" no longer supported. Please update to \"KHR_texture_basisu\".'\n\n\t\t);\n\n\t}\n\n\tsetKTX2Loader( ktx2Loader ) {\n\n\t\tthis.ktx2Loader = ktx2Loader;\n\t\treturn this;\n\n\t}\n\n\tsetMeshoptDecoder( meshoptDecoder ) {\n\n\t\tthis.meshoptDecoder = meshoptDecoder;\n\t\treturn this;\n\n\t}\n\n\tregister( callback ) {\n\n\t\tif ( this.pluginCallbacks.indexOf( callback ) === - 1 ) {\n\n\t\t\tthis.pluginCallbacks.push( callback );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tunregister( callback ) {\n\n\t\tif ( this.pluginCallbacks.indexOf( callback ) !== - 1 ) {\n\n\t\t\tthis.pluginCallbacks.splice( this.pluginCallbacks.indexOf( callback ), 1 );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tparse( data, path, onLoad, onError ) {\n\n\t\tlet content;\n\t\tconst extensions = {};\n\t\tconst plugins = {};\n\n\t\tif ( typeof data === 'string' ) {\n\n\t\t\tcontent = data;\n\n\t\t} else {\n\n\t\t\tconst magic = LoaderUtils.decodeText( new Uint8Array( data, 0, 4 ) );\n\n\t\t\tif ( magic === BINARY_EXTENSION_HEADER_MAGIC ) {\n\n\t\t\t\ttry {\n\n\t\t\t\t\textensions[ EXTENSIONS.KHR_BINARY_GLTF ] = new GLTFBinaryExtension( data );\n\n\t\t\t\t} catch ( error ) {\n\n\t\t\t\t\tif ( onError ) onError( error );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tcontent = extensions[ EXTENSIONS.KHR_BINARY_GLTF ].content;\n\n\t\t\t} else {\n\n\t\t\t\tcontent = LoaderUtils.decodeText( new Uint8Array( data ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst json = JSON.parse( content );\n\n\t\tif ( json.asset === undefined || json.asset.version[ 0 ] < 2 ) {\n\n\t\t\tif ( onError ) onError( new Error( 'THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported.' ) );\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst parser = new GLTFParser( json, {\n\n\t\t\tpath: path || this.resourcePath || '',\n\t\t\tcrossOrigin: this.crossOrigin,\n\t\t\trequestHeader: this.requestHeader,\n\t\t\tmanager: this.manager,\n\t\t\tktx2Loader: this.ktx2Loader,\n\t\t\tmeshoptDecoder: this.meshoptDecoder\n\n\t\t} );\n\n\t\tparser.fileLoader.setRequestHeader( this.requestHeader );\n\n\t\tfor ( let i = 0; i < this.pluginCallbacks.length; i ++ ) {\n\n\t\t\tconst plugin = this.pluginCallbacks[ i ]( parser );\n\t\t\tplugins[ plugin.name ] = plugin;\n\n\t\t\t// Workaround to avoid determining as unknown extension\n\t\t\t// in addUnknownExtensionsToUserData().\n\t\t\t// Remove this workaround if we move all the existing\n\t\t\t// extension handlers to plugin system\n\t\t\textensions[ plugin.name ] = true;\n\n\t\t}\n\n\t\tif ( json.extensionsUsed ) {\n\n\t\t\tfor ( let i = 0; i < json.extensionsUsed.length; ++ i ) {\n\n\t\t\t\tconst extensionName = json.extensionsUsed[ i ];\n\t\t\t\tconst extensionsRequired = json.extensionsRequired || [];\n\n\t\t\t\tswitch ( extensionName ) {\n\n\t\t\t\t\tcase EXTENSIONS.KHR_MATERIALS_UNLIT:\n\t\t\t\t\t\textensions[ extensionName ] = new GLTFMaterialsUnlitExtension();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS:\n\t\t\t\t\t\textensions[ extensionName ] = new GLTFMaterialsPbrSpecularGlossinessExtension();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase EXTENSIONS.KHR_DRACO_MESH_COMPRESSION:\n\t\t\t\t\t\textensions[ extensionName ] = new GLTFDracoMeshCompressionExtension( json, this.dracoLoader );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase EXTENSIONS.KHR_TEXTURE_TRANSFORM:\n\t\t\t\t\t\textensions[ extensionName ] = new GLTFTextureTransformExtension();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase EXTENSIONS.KHR_MESH_QUANTIZATION:\n\t\t\t\t\t\textensions[ extensionName ] = new GLTFMeshQuantizationExtension();\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tif ( extensionsRequired.indexOf( extensionName ) >= 0 && plugins[ extensionName ] === undefined ) {\n\n\t\t\t\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Unknown extension \"' + extensionName + '\".' );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tparser.setExtensions( extensions );\n\t\tparser.setPlugins( plugins );\n\t\tparser.parse( onLoad, onError );\n\n\t}\n\n\tparseAsync( data, path ) {\n\n\t\tconst scope = this;\n\n\t\treturn new Promise( function ( resolve, reject ) {\n\n\t\t\tscope.parse( data, path, resolve, reject );\n\n\t\t} );\n\n\t}\n\n}\n\n/* GLTFREGISTRY */\n\nfunction GLTFRegistry() {\n\n\tlet objects = {};\n\n\treturn\t{\n\n\t\tget: function ( key ) {\n\n\t\t\treturn objects[ key ];\n\n\t\t},\n\n\t\tadd: function ( key, object ) {\n\n\t\t\tobjects[ key ] = object;\n\n\t\t},\n\n\t\tremove: function ( key ) {\n\n\t\t\tdelete objects[ key ];\n\n\t\t},\n\n\t\tremoveAll: function () {\n\n\t\t\tobjects = {};\n\n\t\t}\n\n\t};\n\n}\n\n/*********************************/\n/********** EXTENSIONS ***********/\n/*********************************/\n\nconst EXTENSIONS = {\n\tKHR_BINARY_GLTF: 'KHR_binary_glTF',\n\tKHR_DRACO_MESH_COMPRESSION: 'KHR_draco_mesh_compression',\n\tKHR_LIGHTS_PUNCTUAL: 'KHR_lights_punctual',\n\tKHR_MATERIALS_CLEARCOAT: 'KHR_materials_clearcoat',\n\tKHR_MATERIALS_IOR: 'KHR_materials_ior',\n\tKHR_MATERIALS_PBR_SPECULAR_GLOSSINESS: 'KHR_materials_pbrSpecularGlossiness',\n\tKHR_MATERIALS_SHEEN: 'KHR_materials_sheen',\n\tKHR_MATERIALS_SPECULAR: 'KHR_materials_specular',\n\tKHR_MATERIALS_TRANSMISSION: 'KHR_materials_transmission',\n\tKHR_MATERIALS_IRIDESCENCE: 'KHR_materials_iridescence',\n\tKHR_MATERIALS_UNLIT: 'KHR_materials_unlit',\n\tKHR_MATERIALS_VOLUME: 'KHR_materials_volume',\n\tKHR_TEXTURE_BASISU: 'KHR_texture_basisu',\n\tKHR_TEXTURE_TRANSFORM: 'KHR_texture_transform',\n\tKHR_MESH_QUANTIZATION: 'KHR_mesh_quantization',\n\tKHR_MATERIALS_EMISSIVE_STRENGTH: 'KHR_materials_emissive_strength',\n\tEXT_TEXTURE_WEBP: 'EXT_texture_webp',\n\tEXT_MESHOPT_COMPRESSION: 'EXT_meshopt_compression'\n};\n\n/**\n * Punctual Lights Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_lights_punctual\n */\nclass GLTFLightsExtension {\n\n\tconstructor( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.KHR_LIGHTS_PUNCTUAL;\n\n\t\t// Object3D instance caches\n\t\tthis.cache = { refs: {}, uses: {} };\n\n\t}\n\n\t_markDefs() {\n\n\t\tconst parser = this.parser;\n\t\tconst nodeDefs = this.parser.json.nodes || [];\n\n\t\tfor ( let nodeIndex = 0, nodeLength = nodeDefs.length; nodeIndex < nodeLength; nodeIndex ++ ) {\n\n\t\t\tconst nodeDef = nodeDefs[ nodeIndex ];\n\n\t\t\tif ( nodeDef.extensions\n\t\t\t\t\t&& nodeDef.extensions[ this.name ]\n\t\t\t\t\t&& nodeDef.extensions[ this.name ].light !== undefined ) {\n\n\t\t\t\tparser._addNodeRef( this.cache, nodeDef.extensions[ this.name ].light );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_loadLight( lightIndex ) {\n\n\t\tconst parser = this.parser;\n\t\tconst cacheKey = 'light:' + lightIndex;\n\t\tlet dependency = parser.cache.get( cacheKey );\n\n\t\tif ( dependency ) return dependency;\n\n\t\tconst json = parser.json;\n\t\tconst extensions = ( json.extensions && json.extensions[ this.name ] ) || {};\n\t\tconst lightDefs = extensions.lights || [];\n\t\tconst lightDef = lightDefs[ lightIndex ];\n\t\tlet lightNode;\n\n\t\tconst color = new Color( 0xffffff );\n\n\t\tif ( lightDef.color !== undefined ) color.fromArray( lightDef.color );\n\n\t\tconst range = lightDef.range !== undefined ? lightDef.range : 0;\n\n\t\tswitch ( lightDef.type ) {\n\n\t\t\tcase 'directional':\n\t\t\t\tlightNode = new DirectionalLight( color );\n\t\t\t\tlightNode.target.position.set( 0, 0, - 1 );\n\t\t\t\tlightNode.add( lightNode.target );\n\t\t\t\tbreak;\n\n\t\t\tcase 'point':\n\t\t\t\tlightNode = new PointLight( color );\n\t\t\t\tlightNode.distance = range;\n\t\t\t\tbreak;\n\n\t\t\tcase 'spot':\n\t\t\t\tlightNode = new SpotLight( color );\n\t\t\t\tlightNode.distance = range;\n\t\t\t\t// Handle spotlight properties.\n\t\t\t\tlightDef.spot = lightDef.spot || {};\n\t\t\t\tlightDef.spot.innerConeAngle = lightDef.spot.innerConeAngle !== undefined ? lightDef.spot.innerConeAngle : 0;\n\t\t\t\tlightDef.spot.outerConeAngle = lightDef.spot.outerConeAngle !== undefined ? lightDef.spot.outerConeAngle : Math.PI / 4.0;\n\t\t\t\tlightNode.angle = lightDef.spot.outerConeAngle;\n\t\t\t\tlightNode.penumbra = 1.0 - lightDef.spot.innerConeAngle / lightDef.spot.outerConeAngle;\n\t\t\t\tlightNode.target.position.set( 0, 0, - 1 );\n\t\t\t\tlightNode.add( lightNode.target );\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tthrow new Error( 'THREE.GLTFLoader: Unexpected light type: ' + lightDef.type );\n\n\t\t}\n\n\t\t// Some lights (e.g. spot) default to a position other than the origin. Reset the position\n\t\t// here, because node-level parsing will only override position if explicitly specified.\n\t\tlightNode.position.set( 0, 0, 0 );\n\n\t\tlightNode.decay = 2;\n\n\t\tif ( lightDef.intensity !== undefined ) lightNode.intensity = lightDef.intensity;\n\n\t\tlightNode.name = parser.createUniqueName( lightDef.name || ( 'light_' + lightIndex ) );\n\n\t\tdependency = Promise.resolve( lightNode );\n\n\t\tparser.cache.add( cacheKey, dependency );\n\n\t\treturn dependency;\n\n\t}\n\n\tcreateNodeAttachment( nodeIndex ) {\n\n\t\tconst self = this;\n\t\tconst parser = this.parser;\n\t\tconst json = parser.json;\n\t\tconst nodeDef = json.nodes[ nodeIndex ];\n\t\tconst lightDef = ( nodeDef.extensions && nodeDef.extensions[ this.name ] ) || {};\n\t\tconst lightIndex = lightDef.light;\n\n\t\tif ( lightIndex === undefined ) return null;\n\n\t\treturn this._loadLight( lightIndex ).then( function ( light ) {\n\n\t\t\treturn parser._getNodeRef( self.cache, lightIndex, light );\n\n\t\t} );\n\n\t}\n\n}\n\n/**\n * Unlit Materials Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_unlit\n */\nclass GLTFMaterialsUnlitExtension {\n\n\tconstructor() {\n\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_UNLIT;\n\n\t}\n\n\tgetMaterialType() {\n\n\t\treturn MeshBasicMaterial;\n\n\t}\n\n\textendParams( materialParams, materialDef, parser ) {\n\n\t\tconst pending = [];\n\n\t\tmaterialParams.color = new Color( 1.0, 1.0, 1.0 );\n\t\tmaterialParams.opacity = 1.0;\n\n\t\tconst metallicRoughness = materialDef.pbrMetallicRoughness;\n\n\t\tif ( metallicRoughness ) {\n\n\t\t\tif ( Array.isArray( metallicRoughness.baseColorFactor ) ) {\n\n\t\t\t\tconst array = metallicRoughness.baseColorFactor;\n\n\t\t\t\tmaterialParams.color.fromArray( array );\n\t\t\t\tmaterialParams.opacity = array[ 3 ];\n\n\t\t\t}\n\n\t\t\tif ( metallicRoughness.baseColorTexture !== undefined ) {\n\n\t\t\t\tpending.push( parser.assignTexture( materialParams, 'map', metallicRoughness.baseColorTexture, sRGBEncoding ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t}\n\n}\n\n/**\n * Materials Emissive Strength Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/blob/5768b3ce0ef32bc39cdf1bef10b948586635ead3/extensions/2.0/Khronos/KHR_materials_emissive_strength/README.md\n */\nclass GLTFMaterialsEmissiveStrengthExtension {\n\n\tconstructor( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_EMISSIVE_STRENGTH;\n\n\t}\n\n\textendMaterialParams( materialIndex, materialParams ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) {\n\n\t\t\treturn Promise.resolve();\n\n\t\t}\n\n\t\tconst emissiveStrength = materialDef.extensions[ this.name ].emissiveStrength;\n\n\t\tif ( emissiveStrength !== undefined ) {\n\n\t\t\tmaterialParams.emissiveIntensity = emissiveStrength;\n\n\t\t}\n\n\t\treturn Promise.resolve();\n\n\t}\n\n}\n\n/**\n * Clearcoat Materials Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_clearcoat\n */\nclass GLTFMaterialsClearcoatExtension {\n\n\tconstructor( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_CLEARCOAT;\n\n\t}\n\n\tgetMaterialType( materialIndex ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) return null;\n\n\t\treturn MeshPhysicalMaterial;\n\n\t}\n\n\textendMaterialParams( materialIndex, materialParams ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) {\n\n\t\t\treturn Promise.resolve();\n\n\t\t}\n\n\t\tconst pending = [];\n\n\t\tconst extension = materialDef.extensions[ this.name ];\n\n\t\tif ( extension.clearcoatFactor !== undefined ) {\n\n\t\t\tmaterialParams.clearcoat = extension.clearcoatFactor;\n\n\t\t}\n\n\t\tif ( extension.clearcoatTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'clearcoatMap', extension.clearcoatTexture ) );\n\n\t\t}\n\n\t\tif ( extension.clearcoatRoughnessFactor !== undefined ) {\n\n\t\t\tmaterialParams.clearcoatRoughness = extension.clearcoatRoughnessFactor;\n\n\t\t}\n\n\t\tif ( extension.clearcoatRoughnessTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'clearcoatRoughnessMap', extension.clearcoatRoughnessTexture ) );\n\n\t\t}\n\n\t\tif ( extension.clearcoatNormalTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'clearcoatNormalMap', extension.clearcoatNormalTexture ) );\n\n\t\t\tif ( extension.clearcoatNormalTexture.scale !== undefined ) {\n\n\t\t\t\tconst scale = extension.clearcoatNormalTexture.scale;\n\n\t\t\t\tmaterialParams.clearcoatNormalScale = new Vector2( scale, scale );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t}\n\n}\n\n/**\n * Iridescence Materials Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_iridescence\n */\nclass GLTFMaterialsIridescenceExtension {\n\n\tconstructor( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_IRIDESCENCE;\n\n\t}\n\n\tgetMaterialType( materialIndex ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) return null;\n\n\t\treturn MeshPhysicalMaterial;\n\n\t}\n\n\textendMaterialParams( materialIndex, materialParams ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) {\n\n\t\t\treturn Promise.resolve();\n\n\t\t}\n\n\t\tconst pending = [];\n\n\t\tconst extension = materialDef.extensions[ this.name ];\n\n\t\tif ( extension.iridescenceFactor !== undefined ) {\n\n\t\t\tmaterialParams.iridescence = extension.iridescenceFactor;\n\n\t\t}\n\n\t\tif ( extension.iridescenceTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'iridescenceMap', extension.iridescenceTexture ) );\n\n\t\t}\n\n\t\tif ( extension.iridescenceIor !== undefined ) {\n\n\t\t\tmaterialParams.iridescenceIOR = extension.iridescenceIor;\n\n\t\t}\n\n\t\tif ( materialParams.iridescenceThicknessRange === undefined ) {\n\n\t\t\tmaterialParams.iridescenceThicknessRange = [ 100, 400 ];\n\n\t\t}\n\n\t\tif ( extension.iridescenceThicknessMinimum !== undefined ) {\n\n\t\t\tmaterialParams.iridescenceThicknessRange[ 0 ] = extension.iridescenceThicknessMinimum;\n\n\t\t}\n\n\t\tif ( extension.iridescenceThicknessMaximum !== undefined ) {\n\n\t\t\tmaterialParams.iridescenceThicknessRange[ 1 ] = extension.iridescenceThicknessMaximum;\n\n\t\t}\n\n\t\tif ( extension.iridescenceThicknessTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'iridescenceThicknessMap', extension.iridescenceThicknessTexture ) );\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t}\n\n}\n\n/**\n * Sheen Materials Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/main/extensions/2.0/Khronos/KHR_materials_sheen\n */\nclass GLTFMaterialsSheenExtension {\n\n\tconstructor( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_SHEEN;\n\n\t}\n\n\tgetMaterialType( materialIndex ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) return null;\n\n\t\treturn MeshPhysicalMaterial;\n\n\t}\n\n\textendMaterialParams( materialIndex, materialParams ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) {\n\n\t\t\treturn Promise.resolve();\n\n\t\t}\n\n\t\tconst pending = [];\n\n\t\tmaterialParams.sheenColor = new Color( 0, 0, 0 );\n\t\tmaterialParams.sheenRoughness = 0;\n\t\tmaterialParams.sheen = 1;\n\n\t\tconst extension = materialDef.extensions[ this.name ];\n\n\t\tif ( extension.sheenColorFactor !== undefined ) {\n\n\t\t\tmaterialParams.sheenColor.fromArray( extension.sheenColorFactor );\n\n\t\t}\n\n\t\tif ( extension.sheenRoughnessFactor !== undefined ) {\n\n\t\t\tmaterialParams.sheenRoughness = extension.sheenRoughnessFactor;\n\n\t\t}\n\n\t\tif ( extension.sheenColorTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'sheenColorMap', extension.sheenColorTexture, sRGBEncoding ) );\n\n\t\t}\n\n\t\tif ( extension.sheenRoughnessTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'sheenRoughnessMap', extension.sheenRoughnessTexture ) );\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t}\n\n}\n\n/**\n * Transmission Materials Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_transmission\n * Draft: https://github.com/KhronosGroup/glTF/pull/1698\n */\nclass GLTFMaterialsTransmissionExtension {\n\n\tconstructor( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_TRANSMISSION;\n\n\t}\n\n\tgetMaterialType( materialIndex ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) return null;\n\n\t\treturn MeshPhysicalMaterial;\n\n\t}\n\n\textendMaterialParams( materialIndex, materialParams ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) {\n\n\t\t\treturn Promise.resolve();\n\n\t\t}\n\n\t\tconst pending = [];\n\n\t\tconst extension = materialDef.extensions[ this.name ];\n\n\t\tif ( extension.transmissionFactor !== undefined ) {\n\n\t\t\tmaterialParams.transmission = extension.transmissionFactor;\n\n\t\t}\n\n\t\tif ( extension.transmissionTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'transmissionMap', extension.transmissionTexture ) );\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t}\n\n}\n\n/**\n * Materials Volume Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_volume\n */\nclass GLTFMaterialsVolumeExtension {\n\n\tconstructor( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_VOLUME;\n\n\t}\n\n\tgetMaterialType( materialIndex ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) return null;\n\n\t\treturn MeshPhysicalMaterial;\n\n\t}\n\n\textendMaterialParams( materialIndex, materialParams ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) {\n\n\t\t\treturn Promise.resolve();\n\n\t\t}\n\n\t\tconst pending = [];\n\n\t\tconst extension = materialDef.extensions[ this.name ];\n\n\t\tmaterialParams.thickness = extension.thicknessFactor !== undefined ? extension.thicknessFactor : 0;\n\n\t\tif ( extension.thicknessTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'thicknessMap', extension.thicknessTexture ) );\n\n\t\t}\n\n\t\tmaterialParams.attenuationDistance = extension.attenuationDistance || 0;\n\n\t\tconst colorArray = extension.attenuationColor || [ 1, 1, 1 ];\n\t\tmaterialParams.attenuationColor = new Color( colorArray[ 0 ], colorArray[ 1 ], colorArray[ 2 ] );\n\n\t\treturn Promise.all( pending );\n\n\t}\n\n}\n\n/**\n * Materials ior Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_ior\n */\nclass GLTFMaterialsIorExtension {\n\n\tconstructor( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_IOR;\n\n\t}\n\n\tgetMaterialType( materialIndex ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) return null;\n\n\t\treturn MeshPhysicalMaterial;\n\n\t}\n\n\textendMaterialParams( materialIndex, materialParams ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) {\n\n\t\t\treturn Promise.resolve();\n\n\t\t}\n\n\t\tconst extension = materialDef.extensions[ this.name ];\n\n\t\tmaterialParams.ior = extension.ior !== undefined ? extension.ior : 1.5;\n\n\t\treturn Promise.resolve();\n\n\t}\n\n}\n\n/**\n * Materials specular Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_specular\n */\nclass GLTFMaterialsSpecularExtension {\n\n\tconstructor( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_SPECULAR;\n\n\t}\n\n\tgetMaterialType( materialIndex ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) return null;\n\n\t\treturn MeshPhysicalMaterial;\n\n\t}\n\n\textendMaterialParams( materialIndex, materialParams ) {\n\n\t\tconst parser = this.parser;\n\t\tconst materialDef = parser.json.materials[ materialIndex ];\n\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) {\n\n\t\t\treturn Promise.resolve();\n\n\t\t}\n\n\t\tconst pending = [];\n\n\t\tconst extension = materialDef.extensions[ this.name ];\n\n\t\tmaterialParams.specularIntensity = extension.specularFactor !== undefined ? extension.specularFactor : 1.0;\n\n\t\tif ( extension.specularTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'specularIntensityMap', extension.specularTexture ) );\n\n\t\t}\n\n\t\tconst colorArray = extension.specularColorFactor || [ 1, 1, 1 ];\n\t\tmaterialParams.specularColor = new Color( colorArray[ 0 ], colorArray[ 1 ], colorArray[ 2 ] );\n\n\t\tif ( extension.specularColorTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'specularColorMap', extension.specularColorTexture, sRGBEncoding ) );\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t}\n\n}\n\n/**\n * BasisU Texture Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_texture_basisu\n */\nclass GLTFTextureBasisUExtension {\n\n\tconstructor( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.KHR_TEXTURE_BASISU;\n\n\t}\n\n\tloadTexture( textureIndex ) {\n\n\t\tconst parser = this.parser;\n\t\tconst json = parser.json;\n\n\t\tconst textureDef = json.textures[ textureIndex ];\n\n\t\tif ( ! textureDef.extensions || ! textureDef.extensions[ this.name ] ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst extension = textureDef.extensions[ this.name ];\n\t\tconst loader = parser.options.ktx2Loader;\n\n\t\tif ( ! loader ) {\n\n\t\t\tif ( json.extensionsRequired && json.extensionsRequired.indexOf( this.name ) >= 0 ) {\n\n\t\t\t\tthrow new Error( 'THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures' );\n\n\t\t\t} else {\n\n\t\t\t\t// Assumes that the extension is optional and that a fallback texture is present\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn parser.loadTextureImage( textureIndex, extension.source, loader );\n\n\t}\n\n}\n\n/**\n * WebP Texture Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/EXT_texture_webp\n */\nclass GLTFTextureWebPExtension {\n\n\tconstructor( parser ) {\n\n\t\tthis.parser = parser;\n\t\tthis.name = EXTENSIONS.EXT_TEXTURE_WEBP;\n\t\tthis.isSupported = null;\n\n\t}\n\n\tloadTexture( textureIndex ) {\n\n\t\tconst name = this.name;\n\t\tconst parser = this.parser;\n\t\tconst json = parser.json;\n\n\t\tconst textureDef = json.textures[ textureIndex ];\n\n\t\tif ( ! textureDef.extensions || ! textureDef.extensions[ name ] ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst extension = textureDef.extensions[ name ];\n\t\tconst source = json.images[ extension.source ];\n\n\t\tlet loader = parser.textureLoader;\n\t\tif ( source.uri ) {\n\n\t\t\tconst handler = parser.options.manager.getHandler( source.uri );\n\t\t\tif ( handler !== null ) loader = handler;\n\n\t\t}\n\n\t\treturn this.detectSupport().then( function ( isSupported ) {\n\n\t\t\tif ( isSupported ) return parser.loadTextureImage( textureIndex, extension.source, loader );\n\n\t\t\tif ( json.extensionsRequired && json.extensionsRequired.indexOf( name ) >= 0 ) {\n\n\t\t\t\tthrow new Error( 'THREE.GLTFLoader: WebP required by asset but unsupported.' );\n\n\t\t\t}\n\n\t\t\t// Fall back to PNG or JPEG.\n\t\t\treturn parser.loadTexture( textureIndex );\n\n\t\t} );\n\n\t}\n\n\tdetectSupport() {\n\n\t\tif ( ! this.isSupported ) {\n\n\t\t\tthis.isSupported = new Promise( function ( resolve ) {\n\n\t\t\t\tconst image = new Image();\n\n\t\t\t\t// Lossy test image. Support for lossy images doesn't guarantee support for all\n\t\t\t\t// WebP images, unfortunately.\n\t\t\t\timage.src = 'data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA';\n\n\t\t\t\timage.onload = image.onerror = function () {\n\n\t\t\t\t\tresolve( image.height === 1 );\n\n\t\t\t\t};\n\n\t\t\t} );\n\n\t\t}\n\n\t\treturn this.isSupported;\n\n\t}\n\n}\n\n/**\n * meshopt BufferView Compression Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/EXT_meshopt_compression\n */\nclass GLTFMeshoptCompression {\n\n\tconstructor( parser ) {\n\n\t\tthis.name = EXTENSIONS.EXT_MESHOPT_COMPRESSION;\n\t\tthis.parser = parser;\n\n\t}\n\n\tloadBufferView( index ) {\n\n\t\tconst json = this.parser.json;\n\t\tconst bufferView = json.bufferViews[ index ];\n\n\t\tif ( bufferView.extensions && bufferView.extensions[ this.name ] ) {\n\n\t\t\tconst extensionDef = bufferView.extensions[ this.name ];\n\n\t\t\tconst buffer = this.parser.getDependency( 'buffer', extensionDef.buffer );\n\t\t\tconst decoder = this.parser.options.meshoptDecoder;\n\n\t\t\tif ( ! decoder || ! decoder.supported ) {\n\n\t\t\t\tif ( json.extensionsRequired && json.extensionsRequired.indexOf( this.name ) >= 0 ) {\n\n\t\t\t\t\tthrow new Error( 'THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files' );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// Assumes that the extension is optional and that fallback buffer data is present\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn Promise.all( [ buffer, decoder.ready ] ).then( function ( res ) {\n\n\t\t\t\tconst byteOffset = extensionDef.byteOffset || 0;\n\t\t\t\tconst byteLength = extensionDef.byteLength || 0;\n\n\t\t\t\tconst count = extensionDef.count;\n\t\t\t\tconst stride = extensionDef.byteStride;\n\n\t\t\t\tconst result = new ArrayBuffer( count * stride );\n\t\t\t\tconst source = new Uint8Array( res[ 0 ], byteOffset, byteLength );\n\n\t\t\t\tdecoder.decodeGltfBuffer( new Uint8Array( result ), count, stride, source, extensionDef.mode, extensionDef.filter );\n\t\t\t\treturn result;\n\n\t\t\t} );\n\n\t\t} else {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t}\n\n}\n\n/* BINARY EXTENSION */\nconst BINARY_EXTENSION_HEADER_MAGIC = 'glTF';\nconst BINARY_EXTENSION_HEADER_LENGTH = 12;\nconst BINARY_EXTENSION_CHUNK_TYPES = { JSON: 0x4E4F534A, BIN: 0x004E4942 };\n\nclass GLTFBinaryExtension {\n\n\tconstructor( data ) {\n\n\t\tthis.name = EXTENSIONS.KHR_BINARY_GLTF;\n\t\tthis.content = null;\n\t\tthis.body = null;\n\n\t\tconst headerView = new DataView( data, 0, BINARY_EXTENSION_HEADER_LENGTH );\n\n\t\tthis.header = {\n\t\t\tmagic: LoaderUtils.decodeText( new Uint8Array( data.slice( 0, 4 ) ) ),\n\t\t\tversion: headerView.getUint32( 4, true ),\n\t\t\tlength: headerView.getUint32( 8, true )\n\t\t};\n\n\t\tif ( this.header.magic !== BINARY_EXTENSION_HEADER_MAGIC ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: Unsupported glTF-Binary header.' );\n\n\t\t} else if ( this.header.version < 2.0 ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: Legacy binary file detected.' );\n\n\t\t}\n\n\t\tconst chunkContentsLength = this.header.length - BINARY_EXTENSION_HEADER_LENGTH;\n\t\tconst chunkView = new DataView( data, BINARY_EXTENSION_HEADER_LENGTH );\n\t\tlet chunkIndex = 0;\n\n\t\twhile ( chunkIndex < chunkContentsLength ) {\n\n\t\t\tconst chunkLength = chunkView.getUint32( chunkIndex, true );\n\t\t\tchunkIndex += 4;\n\n\t\t\tconst chunkType = chunkView.getUint32( chunkIndex, true );\n\t\t\tchunkIndex += 4;\n\n\t\t\tif ( chunkType === BINARY_EXTENSION_CHUNK_TYPES.JSON ) {\n\n\t\t\t\tconst contentArray = new Uint8Array( data, BINARY_EXTENSION_HEADER_LENGTH + chunkIndex, chunkLength );\n\t\t\t\tthis.content = LoaderUtils.decodeText( contentArray );\n\n\t\t\t} else if ( chunkType === BINARY_EXTENSION_CHUNK_TYPES.BIN ) {\n\n\t\t\t\tconst byteOffset = BINARY_EXTENSION_HEADER_LENGTH + chunkIndex;\n\t\t\t\tthis.body = data.slice( byteOffset, byteOffset + chunkLength );\n\n\t\t\t}\n\n\t\t\t// Clients must ignore chunks with unknown types.\n\n\t\t\tchunkIndex += chunkLength;\n\n\t\t}\n\n\t\tif ( this.content === null ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: JSON content not found.' );\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * DRACO Mesh Compression Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_draco_mesh_compression\n */\nclass GLTFDracoMeshCompressionExtension {\n\n\tconstructor( json, dracoLoader ) {\n\n\t\tif ( ! dracoLoader ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: No DRACOLoader instance provided.' );\n\n\t\t}\n\n\t\tthis.name = EXTENSIONS.KHR_DRACO_MESH_COMPRESSION;\n\t\tthis.json = json;\n\t\tthis.dracoLoader = dracoLoader;\n\t\tthis.dracoLoader.preload();\n\n\t}\n\n\tdecodePrimitive( primitive, parser ) {\n\n\t\tconst json = this.json;\n\t\tconst dracoLoader = this.dracoLoader;\n\t\tconst bufferViewIndex = primitive.extensions[ this.name ].bufferView;\n\t\tconst gltfAttributeMap = primitive.extensions[ this.name ].attributes;\n\t\tconst threeAttributeMap = {};\n\t\tconst attributeNormalizedMap = {};\n\t\tconst attributeTypeMap = {};\n\n\t\tfor ( const attributeName in gltfAttributeMap ) {\n\n\t\t\tconst threeAttributeName = ATTRIBUTES[ attributeName ] || attributeName.toLowerCase();\n\n\t\t\tthreeAttributeMap[ threeAttributeName ] = gltfAttributeMap[ attributeName ];\n\n\t\t}\n\n\t\tfor ( const attributeName in primitive.attributes ) {\n\n\t\t\tconst threeAttributeName = ATTRIBUTES[ attributeName ] || attributeName.toLowerCase();\n\n\t\t\tif ( gltfAttributeMap[ attributeName ] !== undefined ) {\n\n\t\t\t\tconst accessorDef = json.accessors[ primitive.attributes[ attributeName ] ];\n\t\t\t\tconst componentType = WEBGL_COMPONENT_TYPES[ accessorDef.componentType ];\n\n\t\t\t\tattributeTypeMap[ threeAttributeName ] = componentType;\n\t\t\t\tattributeNormalizedMap[ threeAttributeName ] = accessorDef.normalized === true;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn parser.getDependency( 'bufferView', bufferViewIndex ).then( function ( bufferView ) {\n\n\t\t\treturn new Promise( function ( resolve ) {\n\n\t\t\t\tdracoLoader.decodeDracoFile( bufferView, function ( geometry ) {\n\n\t\t\t\t\tfor ( const attributeName in geometry.attributes ) {\n\n\t\t\t\t\t\tconst attribute = geometry.attributes[ attributeName ];\n\t\t\t\t\t\tconst normalized = attributeNormalizedMap[ attributeName ];\n\n\t\t\t\t\t\tif ( normalized !== undefined ) attribute.normalized = normalized;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tresolve( geometry );\n\n\t\t\t\t}, threeAttributeMap, attributeTypeMap );\n\n\t\t\t} );\n\n\t\t} );\n\n\t}\n\n}\n\n/**\n * Texture Transform Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_texture_transform\n */\nclass GLTFTextureTransformExtension {\n\n\tconstructor() {\n\n\t\tthis.name = EXTENSIONS.KHR_TEXTURE_TRANSFORM;\n\n\t}\n\n\textendTexture( texture, transform ) {\n\n\t\tif ( transform.texCoord !== undefined ) {\n\n\t\t\tconsole.warn( 'THREE.GLTFLoader: Custom UV sets in \"' + this.name + '\" extension not yet supported.' );\n\n\t\t}\n\n\t\tif ( transform.offset === undefined && transform.rotation === undefined && transform.scale === undefined ) {\n\n\t\t\t// See https://github.com/mrdoob/three.js/issues/21819.\n\t\t\treturn texture;\n\n\t\t}\n\n\t\ttexture = texture.clone();\n\n\t\tif ( transform.offset !== undefined ) {\n\n\t\t\ttexture.offset.fromArray( transform.offset );\n\n\t\t}\n\n\t\tif ( transform.rotation !== undefined ) {\n\n\t\t\ttexture.rotation = transform.rotation;\n\n\t\t}\n\n\t\tif ( transform.scale !== undefined ) {\n\n\t\t\ttexture.repeat.fromArray( transform.scale );\n\n\t\t}\n\n\t\ttexture.needsUpdate = true;\n\n\t\treturn texture;\n\n\t}\n\n}\n\n/**\n * Specular-Glossiness Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/main/extensions/2.0/Archived/KHR_materials_pbrSpecularGlossiness\n */\n\n/**\n * A sub class of StandardMaterial with some of the functionality\n * changed via the `onBeforeCompile` callback\n * @pailhead\n */\nclass GLTFMeshStandardSGMaterial extends MeshStandardMaterial {\n\n\tconstructor( params ) {\n\n\t\tsuper();\n\n\t\tthis.isGLTFSpecularGlossinessMaterial = true;\n\n\t\t//various chunks that need replacing\n\t\tconst specularMapParsFragmentChunk = [\n\t\t\t'#ifdef USE_SPECULARMAP',\n\t\t\t'\tuniform sampler2D specularMap;',\n\t\t\t'#endif'\n\t\t].join( '\\n' );\n\n\t\tconst glossinessMapParsFragmentChunk = [\n\t\t\t'#ifdef USE_GLOSSINESSMAP',\n\t\t\t'\tuniform sampler2D glossinessMap;',\n\t\t\t'#endif'\n\t\t].join( '\\n' );\n\n\t\tconst specularMapFragmentChunk = [\n\t\t\t'vec3 specularFactor = specular;',\n\t\t\t'#ifdef USE_SPECULARMAP',\n\t\t\t'\tvec4 texelSpecular = texture2D( specularMap, vUv );',\n\t\t\t'\t// reads channel RGB, compatible with a glTF Specular-Glossiness (RGBA) texture',\n\t\t\t'\tspecularFactor *= texelSpecular.rgb;',\n\t\t\t'#endif'\n\t\t].join( '\\n' );\n\n\t\tconst glossinessMapFragmentChunk = [\n\t\t\t'float glossinessFactor = glossiness;',\n\t\t\t'#ifdef USE_GLOSSINESSMAP',\n\t\t\t'\tvec4 texelGlossiness = texture2D( glossinessMap, vUv );',\n\t\t\t'\t// reads channel A, compatible with a glTF Specular-Glossiness (RGBA) texture',\n\t\t\t'\tglossinessFactor *= texelGlossiness.a;',\n\t\t\t'#endif'\n\t\t].join( '\\n' );\n\n\t\tconst lightPhysicalFragmentChunk = [\n\t\t\t'PhysicalMaterial material;',\n\t\t\t'material.diffuseColor = diffuseColor.rgb * ( 1. - max( specularFactor.r, max( specularFactor.g, specularFactor.b ) ) );',\n\t\t\t'vec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );',\n\t\t\t'float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );',\n\t\t\t'material.roughness = max( 1.0 - glossinessFactor, 0.0525 ); // 0.0525 corresponds to the base mip of a 256 cubemap.',\n\t\t\t'material.roughness += geometryRoughness;',\n\t\t\t'material.roughness = min( material.roughness, 1.0 );',\n\t\t\t'material.specularColor = specularFactor;',\n\t\t].join( '\\n' );\n\n\t\tconst uniforms = {\n\t\t\tspecular: { value: new Color().setHex( 0xffffff ) },\n\t\t\tglossiness: { value: 1 },\n\t\t\tspecularMap: { value: null },\n\t\t\tglossinessMap: { value: null }\n\t\t};\n\n\t\tthis._extraUniforms = uniforms;\n\n\t\tthis.onBeforeCompile = function ( shader ) {\n\n\t\t\tfor ( const uniformName in uniforms ) {\n\n\t\t\t\tshader.uniforms[ uniformName ] = uniforms[ uniformName ];\n\n\t\t\t}\n\n\t\t\tshader.fragmentShader = shader.fragmentShader\n\t\t\t\t.replace( 'uniform float roughness;', 'uniform vec3 specular;' )\n\t\t\t\t.replace( 'uniform float metalness;', 'uniform float glossiness;' )\n\t\t\t\t.replace( '#include <roughnessmap_pars_fragment>', specularMapParsFragmentChunk )\n\t\t\t\t.replace( '#include <metalnessmap_pars_fragment>', glossinessMapParsFragmentChunk )\n\t\t\t\t.replace( '#include <roughnessmap_fragment>', specularMapFragmentChunk )\n\t\t\t\t.replace( '#include <metalnessmap_fragment>', glossinessMapFragmentChunk )\n\t\t\t\t.replace( '#include <lights_physical_fragment>', lightPhysicalFragmentChunk );\n\n\t\t};\n\n\t\tObject.defineProperties( this, {\n\n\t\t\tspecular: {\n\t\t\t\tget: function () {\n\n\t\t\t\t\treturn uniforms.specular.value;\n\n\t\t\t\t},\n\t\t\t\tset: function ( v ) {\n\n\t\t\t\t\tuniforms.specular.value = v;\n\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tspecularMap: {\n\t\t\t\tget: function () {\n\n\t\t\t\t\treturn uniforms.specularMap.value;\n\n\t\t\t\t},\n\t\t\t\tset: function ( v ) {\n\n\t\t\t\t\tuniforms.specularMap.value = v;\n\n\t\t\t\t\tif ( v ) {\n\n\t\t\t\t\t\tthis.defines.USE_SPECULARMAP = ''; // USE_UV is set by the renderer for specular maps\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tdelete this.defines.USE_SPECULARMAP;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tglossiness: {\n\t\t\t\tget: function () {\n\n\t\t\t\t\treturn uniforms.glossiness.value;\n\n\t\t\t\t},\n\t\t\t\tset: function ( v ) {\n\n\t\t\t\t\tuniforms.glossiness.value = v;\n\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tglossinessMap: {\n\t\t\t\tget: function () {\n\n\t\t\t\t\treturn uniforms.glossinessMap.value;\n\n\t\t\t\t},\n\t\t\t\tset: function ( v ) {\n\n\t\t\t\t\tuniforms.glossinessMap.value = v;\n\n\t\t\t\t\tif ( v ) {\n\n\t\t\t\t\t\tthis.defines.USE_GLOSSINESSMAP = '';\n\t\t\t\t\t\tthis.defines.USE_UV = '';\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tdelete this.defines.USE_GLOSSINESSMAP;\n\t\t\t\t\t\tdelete this.defines.USE_UV;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t}\n\n\t\t} );\n\n\t\tdelete this.metalness;\n\t\tdelete this.roughness;\n\t\tdelete this.metalnessMap;\n\t\tdelete this.roughnessMap;\n\n\t\tthis.setValues( params );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.specularMap = source.specularMap;\n\t\tthis.specular.copy( source.specular );\n\t\tthis.glossinessMap = source.glossinessMap;\n\t\tthis.glossiness = source.glossiness;\n\t\tdelete this.metalness;\n\t\tdelete this.roughness;\n\t\tdelete this.metalnessMap;\n\t\tdelete this.roughnessMap;\n\t\treturn this;\n\n\t}\n\n}\n\n\nclass GLTFMaterialsPbrSpecularGlossinessExtension {\n\n\tconstructor() {\n\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS;\n\n\t\tthis.specularGlossinessParams = [\n\t\t\t'color',\n\t\t\t'map',\n\t\t\t'lightMap',\n\t\t\t'lightMapIntensity',\n\t\t\t'aoMap',\n\t\t\t'aoMapIntensity',\n\t\t\t'emissive',\n\t\t\t'emissiveIntensity',\n\t\t\t'emissiveMap',\n\t\t\t'bumpMap',\n\t\t\t'bumpScale',\n\t\t\t'normalMap',\n\t\t\t'normalMapType',\n\t\t\t'displacementMap',\n\t\t\t'displacementScale',\n\t\t\t'displacementBias',\n\t\t\t'specularMap',\n\t\t\t'specular',\n\t\t\t'glossinessMap',\n\t\t\t'glossiness',\n\t\t\t'alphaMap',\n\t\t\t'envMap',\n\t\t\t'envMapIntensity'\n\t\t];\n\n\t}\n\n\tgetMaterialType() {\n\n\t\treturn GLTFMeshStandardSGMaterial;\n\n\t}\n\n\textendParams( materialParams, materialDef, parser ) {\n\n\t\tconst pbrSpecularGlossiness = materialDef.extensions[ this.name ];\n\n\t\tmaterialParams.color = new Color( 1.0, 1.0, 1.0 );\n\t\tmaterialParams.opacity = 1.0;\n\n\t\tconst pending = [];\n\n\t\tif ( Array.isArray( pbrSpecularGlossiness.diffuseFactor ) ) {\n\n\t\t\tconst array = pbrSpecularGlossiness.diffuseFactor;\n\n\t\t\tmaterialParams.color.fromArray( array );\n\t\t\tmaterialParams.opacity = array[ 3 ];\n\n\t\t}\n\n\t\tif ( pbrSpecularGlossiness.diffuseTexture !== undefined ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'map', pbrSpecularGlossiness.diffuseTexture, sRGBEncoding ) );\n\n\t\t}\n\n\t\tmaterialParams.emissive = new Color( 0.0, 0.0, 0.0 );\n\t\tmaterialParams.glossiness = pbrSpecularGlossiness.glossinessFactor !== undefined ? pbrSpecularGlossiness.glossinessFactor : 1.0;\n\t\tmaterialParams.specular = new Color( 1.0, 1.0, 1.0 );\n\n\t\tif ( Array.isArray( pbrSpecularGlossiness.specularFactor ) ) {\n\n\t\t\tmaterialParams.specular.fromArray( pbrSpecularGlossiness.specularFactor );\n\n\t\t}\n\n\t\tif ( pbrSpecularGlossiness.specularGlossinessTexture !== undefined ) {\n\n\t\t\tconst specGlossMapDef = pbrSpecularGlossiness.specularGlossinessTexture;\n\t\t\tpending.push( parser.assignTexture( materialParams, 'glossinessMap', specGlossMapDef ) );\n\t\t\tpending.push( parser.assignTexture( materialParams, 'specularMap', specGlossMapDef, sRGBEncoding ) );\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t}\n\n\tcreateMaterial( materialParams ) {\n\n\t\tconst material = new GLTFMeshStandardSGMaterial( materialParams );\n\t\tmaterial.fog = true;\n\n\t\tmaterial.color = materialParams.color;\n\n\t\tmaterial.map = materialParams.map === undefined ? null : materialParams.map;\n\n\t\tmaterial.lightMap = null;\n\t\tmaterial.lightMapIntensity = 1.0;\n\n\t\tmaterial.aoMap = materialParams.aoMap === undefined ? null : materialParams.aoMap;\n\t\tmaterial.aoMapIntensity = 1.0;\n\n\t\tmaterial.emissive = materialParams.emissive;\n\t\tmaterial.emissiveIntensity = materialParams.emissiveIntensity === undefined ? 1.0 : materialParams.emissiveIntensity;\n\t\tmaterial.emissiveMap = materialParams.emissiveMap === undefined ? null : materialParams.emissiveMap;\n\n\t\tmaterial.bumpMap = materialParams.bumpMap === undefined ? null : materialParams.bumpMap;\n\t\tmaterial.bumpScale = 1;\n\n\t\tmaterial.normalMap = materialParams.normalMap === undefined ? null : materialParams.normalMap;\n\t\tmaterial.normalMapType = TangentSpaceNormalMap;\n\n\t\tif ( materialParams.normalScale ) material.normalScale = materialParams.normalScale;\n\n\t\tmaterial.displacementMap = null;\n\t\tmaterial.displacementScale = 1;\n\t\tmaterial.displacementBias = 0;\n\n\t\tmaterial.specularMap = materialParams.specularMap === undefined ? null : materialParams.specularMap;\n\t\tmaterial.specular = materialParams.specular;\n\n\t\tmaterial.glossinessMap = materialParams.glossinessMap === undefined ? null : materialParams.glossinessMap;\n\t\tmaterial.glossiness = materialParams.glossiness;\n\n\t\tmaterial.alphaMap = null;\n\n\t\tmaterial.envMap = materialParams.envMap === undefined ? null : materialParams.envMap;\n\t\tmaterial.envMapIntensity = 1.0;\n\n\t\treturn material;\n\n\t}\n\n}\n\n/**\n * Mesh Quantization Extension\n *\n * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_mesh_quantization\n */\nclass GLTFMeshQuantizationExtension {\n\n\tconstructor() {\n\n\t\tthis.name = EXTENSIONS.KHR_MESH_QUANTIZATION;\n\n\t}\n\n}\n\n/*********************************/\n/********** INTERPOLATION ********/\n/*********************************/\n\n// Spline Interpolation\n// Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#appendix-c-spline-interpolation\nclass GLTFCubicSplineInterpolant extends Interpolant {\n\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t}\n\n\tcopySampleValue_( index ) {\n\n\t\t// Copies a sample value to the result buffer. See description of glTF\n\t\t// CUBICSPLINE values layout in interpolate_() function below.\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tvalueSize = this.valueSize,\n\t\t\toffset = index * valueSize * 3 + valueSize;\n\n\t\tfor ( let i = 0; i !== valueSize; i ++ ) {\n\n\t\t\tresult[ i ] = values[ offset + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n\tinterpolate_( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer;\n\t\tconst values = this.sampleValues;\n\t\tconst stride = this.valueSize;\n\n\t\tconst stride2 = stride * 2;\n\t\tconst stride3 = stride * 3;\n\n\t\tconst td = t1 - t0;\n\n\t\tconst p = ( t - t0 ) / td;\n\t\tconst pp = p * p;\n\t\tconst ppp = pp * p;\n\n\t\tconst offset1 = i1 * stride3;\n\t\tconst offset0 = offset1 - stride3;\n\n\t\tconst s2 = - 2 * ppp + 3 * pp;\n\t\tconst s3 = ppp - pp;\n\t\tconst s0 = 1 - s2;\n\t\tconst s1 = s3 - pp + p;\n\n\t\t// Layout of keyframe output values for CUBICSPLINE animations:\n\t\t//   [ inTangent_1, splineVertex_1, outTangent_1, inTangent_2, splineVertex_2, ... ]\n\t\tfor ( let i = 0; i !== stride; i ++ ) {\n\n\t\t\tconst p0 = values[ offset0 + i + stride ]; // splineVertex_k\n\t\t\tconst m0 = values[ offset0 + i + stride2 ] * td; // outTangent_k * (t_k+1 - t_k)\n\t\t\tconst p1 = values[ offset1 + i + stride ]; // splineVertex_k+1\n\t\t\tconst m1 = values[ offset1 + i ] * td; // inTangent_k+1 * (t_k+1 - t_k)\n\n\t\t\tresult[ i ] = s0 * p0 + s1 * m0 + s2 * p1 + s3 * m1;\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n}\n\nconst _q = new Quaternion();\n\nclass GLTFCubicSplineQuaternionInterpolant extends GLTFCubicSplineInterpolant {\n\n\tinterpolate_( i1, t0, t, t1 ) {\n\n\t\tconst result = super.interpolate_( i1, t0, t, t1 );\n\n\t\t_q.fromArray( result ).normalize().toArray( result );\n\n\t\treturn result;\n\n\t}\n\n}\n\n\n/*********************************/\n/********** INTERNALS ************/\n/*********************************/\n\n/* CONSTANTS */\n\nconst WEBGL_CONSTANTS = {\n\tFLOAT: 5126,\n\t//FLOAT_MAT2: 35674,\n\tFLOAT_MAT3: 35675,\n\tFLOAT_MAT4: 35676,\n\tFLOAT_VEC2: 35664,\n\tFLOAT_VEC3: 35665,\n\tFLOAT_VEC4: 35666,\n\tLINEAR: 9729,\n\tREPEAT: 10497,\n\tSAMPLER_2D: 35678,\n\tPOINTS: 0,\n\tLINES: 1,\n\tLINE_LOOP: 2,\n\tLINE_STRIP: 3,\n\tTRIANGLES: 4,\n\tTRIANGLE_STRIP: 5,\n\tTRIANGLE_FAN: 6,\n\tUNSIGNED_BYTE: 5121,\n\tUNSIGNED_SHORT: 5123\n};\n\nconst WEBGL_COMPONENT_TYPES = {\n\t5120: Int8Array,\n\t5121: Uint8Array,\n\t5122: Int16Array,\n\t5123: Uint16Array,\n\t5125: Uint32Array,\n\t5126: Float32Array\n};\n\nconst WEBGL_FILTERS = {\n\t9728: NearestFilter,\n\t9729: LinearFilter,\n\t9984: NearestMipmapNearestFilter,\n\t9985: LinearMipmapNearestFilter,\n\t9986: NearestMipmapLinearFilter,\n\t9987: LinearMipmapLinearFilter\n};\n\nconst WEBGL_WRAPPINGS = {\n\t33071: ClampToEdgeWrapping,\n\t33648: MirroredRepeatWrapping,\n\t10497: RepeatWrapping\n};\n\nconst WEBGL_TYPE_SIZES = {\n\t'SCALAR': 1,\n\t'VEC2': 2,\n\t'VEC3': 3,\n\t'VEC4': 4,\n\t'MAT2': 4,\n\t'MAT3': 9,\n\t'MAT4': 16\n};\n\nconst ATTRIBUTES = {\n\tPOSITION: 'position',\n\tNORMAL: 'normal',\n\tTANGENT: 'tangent',\n\tTEXCOORD_0: 'uv',\n\tTEXCOORD_1: 'uv2',\n\tCOLOR_0: 'color',\n\tWEIGHTS_0: 'skinWeight',\n\tJOINTS_0: 'skinIndex',\n};\n\nconst PATH_PROPERTIES = {\n\tscale: 'scale',\n\ttranslation: 'position',\n\trotation: 'quaternion',\n\tweights: 'morphTargetInfluences'\n};\n\nconst INTERPOLATION = {\n\tCUBICSPLINE: undefined, // We use a custom interpolant (GLTFCubicSplineInterpolation) for CUBICSPLINE tracks. Each\n\t\t                        // keyframe track will be initialized with a default interpolation type, then modified.\n\tLINEAR: InterpolateLinear,\n\tSTEP: InterpolateDiscrete\n};\n\nconst ALPHA_MODES = {\n\tOPAQUE: 'OPAQUE',\n\tMASK: 'MASK',\n\tBLEND: 'BLEND'\n};\n\n/**\n * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#default-material\n */\nfunction createDefaultMaterial( cache ) {\n\n\tif ( cache[ 'DefaultMaterial' ] === undefined ) {\n\n\t\tcache[ 'DefaultMaterial' ] = new MeshStandardMaterial( {\n\t\t\tcolor: 0xFFFFFF,\n\t\t\temissive: 0x000000,\n\t\t\tmetalness: 1,\n\t\t\troughness: 1,\n\t\t\ttransparent: false,\n\t\t\tdepthTest: true,\n\t\t\tside: FrontSide\n\t\t} );\n\n\t}\n\n\treturn cache[ 'DefaultMaterial' ];\n\n}\n\nfunction addUnknownExtensionsToUserData( knownExtensions, object, objectDef ) {\n\n\t// Add unknown glTF extensions to an object's userData.\n\n\tfor ( const name in objectDef.extensions ) {\n\n\t\tif ( knownExtensions[ name ] === undefined ) {\n\n\t\t\tobject.userData.gltfExtensions = object.userData.gltfExtensions || {};\n\t\t\tobject.userData.gltfExtensions[ name ] = objectDef.extensions[ name ];\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * @param {Object3D|Material|BufferGeometry} object\n * @param {GLTF.definition} gltfDef\n */\nfunction assignExtrasToUserData( object, gltfDef ) {\n\n\tif ( gltfDef.extras !== undefined ) {\n\n\t\tif ( typeof gltfDef.extras === 'object' ) {\n\n\t\t\tObject.assign( object.userData, gltfDef.extras );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.GLTFLoader: Ignoring primitive type .extras, ' + gltfDef.extras );\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#morph-targets\n *\n * @param {BufferGeometry} geometry\n * @param {Array<GLTF.Target>} targets\n * @param {GLTFParser} parser\n * @return {Promise<BufferGeometry>}\n */\nfunction addMorphTargets( geometry, targets, parser ) {\n\n\tlet hasMorphPosition = false;\n\tlet hasMorphNormal = false;\n\tlet hasMorphColor = false;\n\n\tfor ( let i = 0, il = targets.length; i < il; i ++ ) {\n\n\t\tconst target = targets[ i ];\n\n\t\tif ( target.POSITION !== undefined ) hasMorphPosition = true;\n\t\tif ( target.NORMAL !== undefined ) hasMorphNormal = true;\n\t\tif ( target.COLOR_0 !== undefined ) hasMorphColor = true;\n\n\t\tif ( hasMorphPosition && hasMorphNormal && hasMorphColor ) break;\n\n\t}\n\n\tif ( ! hasMorphPosition && ! hasMorphNormal && ! hasMorphColor ) return Promise.resolve( geometry );\n\n\tconst pendingPositionAccessors = [];\n\tconst pendingNormalAccessors = [];\n\tconst pendingColorAccessors = [];\n\n\tfor ( let i = 0, il = targets.length; i < il; i ++ ) {\n\n\t\tconst target = targets[ i ];\n\n\t\tif ( hasMorphPosition ) {\n\n\t\t\tconst pendingAccessor = target.POSITION !== undefined\n\t\t\t\t? parser.getDependency( 'accessor', target.POSITION )\n\t\t\t\t: geometry.attributes.position;\n\n\t\t\tpendingPositionAccessors.push( pendingAccessor );\n\n\t\t}\n\n\t\tif ( hasMorphNormal ) {\n\n\t\t\tconst pendingAccessor = target.NORMAL !== undefined\n\t\t\t\t? parser.getDependency( 'accessor', target.NORMAL )\n\t\t\t\t: geometry.attributes.normal;\n\n\t\t\tpendingNormalAccessors.push( pendingAccessor );\n\n\t\t}\n\n\t\tif ( hasMorphColor ) {\n\n\t\t\tconst pendingAccessor = target.COLOR_0 !== undefined\n\t\t\t\t? parser.getDependency( 'accessor', target.COLOR_0 )\n\t\t\t\t: geometry.attributes.color;\n\n\t\t\tpendingColorAccessors.push( pendingAccessor );\n\n\t\t}\n\n\t}\n\n\treturn Promise.all( [\n\t\tPromise.all( pendingPositionAccessors ),\n\t\tPromise.all( pendingNormalAccessors ),\n\t\tPromise.all( pendingColorAccessors )\n\t] ).then( function ( accessors ) {\n\n\t\tconst morphPositions = accessors[ 0 ];\n\t\tconst morphNormals = accessors[ 1 ];\n\t\tconst morphColors = accessors[ 2 ];\n\n\t\tif ( hasMorphPosition ) geometry.morphAttributes.position = morphPositions;\n\t\tif ( hasMorphNormal ) geometry.morphAttributes.normal = morphNormals;\n\t\tif ( hasMorphColor ) geometry.morphAttributes.color = morphColors;\n\t\tgeometry.morphTargetsRelative = true;\n\n\t\treturn geometry;\n\n\t} );\n\n}\n\n/**\n * @param {Mesh} mesh\n * @param {GLTF.Mesh} meshDef\n */\nfunction updateMorphTargets( mesh, meshDef ) {\n\n\tmesh.updateMorphTargets();\n\n\tif ( meshDef.weights !== undefined ) {\n\n\t\tfor ( let i = 0, il = meshDef.weights.length; i < il; i ++ ) {\n\n\t\t\tmesh.morphTargetInfluences[ i ] = meshDef.weights[ i ];\n\n\t\t}\n\n\t}\n\n\t// .extras has user-defined data, so check that .extras.targetNames is an array.\n\tif ( meshDef.extras && Array.isArray( meshDef.extras.targetNames ) ) {\n\n\t\tconst targetNames = meshDef.extras.targetNames;\n\n\t\tif ( mesh.morphTargetInfluences.length === targetNames.length ) {\n\n\t\t\tmesh.morphTargetDictionary = {};\n\n\t\t\tfor ( let i = 0, il = targetNames.length; i < il; i ++ ) {\n\n\t\t\t\tmesh.morphTargetDictionary[ targetNames[ i ] ] = i;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.' );\n\n\t\t}\n\n\t}\n\n}\n\nfunction createPrimitiveKey( primitiveDef ) {\n\n\tconst dracoExtension = primitiveDef.extensions && primitiveDef.extensions[ EXTENSIONS.KHR_DRACO_MESH_COMPRESSION ];\n\tlet geometryKey;\n\n\tif ( dracoExtension ) {\n\n\t\tgeometryKey = 'draco:' + dracoExtension.bufferView\n\t\t\t\t+ ':' + dracoExtension.indices\n\t\t\t\t+ ':' + createAttributesKey( dracoExtension.attributes );\n\n\t} else {\n\n\t\tgeometryKey = primitiveDef.indices + ':' + createAttributesKey( primitiveDef.attributes ) + ':' + primitiveDef.mode;\n\n\t}\n\n\treturn geometryKey;\n\n}\n\nfunction createAttributesKey( attributes ) {\n\n\tlet attributesKey = '';\n\n\tconst keys = Object.keys( attributes ).sort();\n\n\tfor ( let i = 0, il = keys.length; i < il; i ++ ) {\n\n\t\tattributesKey += keys[ i ] + ':' + attributes[ keys[ i ] ] + ';';\n\n\t}\n\n\treturn attributesKey;\n\n}\n\nfunction getNormalizedComponentScale( constructor ) {\n\n\t// Reference:\n\t// https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_mesh_quantization#encoding-quantized-data\n\n\tswitch ( constructor ) {\n\n\t\tcase Int8Array:\n\t\t\treturn 1 / 127;\n\n\t\tcase Uint8Array:\n\t\t\treturn 1 / 255;\n\n\t\tcase Int16Array:\n\t\t\treturn 1 / 32767;\n\n\t\tcase Uint16Array:\n\t\t\treturn 1 / 65535;\n\n\t\tdefault:\n\t\t\tthrow new Error( 'THREE.GLTFLoader: Unsupported normalized accessor component type.' );\n\n\t}\n\n}\n\nfunction getImageURIMimeType( uri ) {\n\n\tif ( uri.search( /\\.jpe?g($|\\?)/i ) > 0 || uri.search( /^data\\:image\\/jpeg/ ) === 0 ) return 'image/jpeg';\n\tif ( uri.search( /\\.webp($|\\?)/i ) > 0 || uri.search( /^data\\:image\\/webp/ ) === 0 ) return 'image/webp';\n\n\treturn 'image/png';\n\n}\n\n/* GLTF PARSER */\n\nclass GLTFParser {\n\n\tconstructor( json = {}, options = {} ) {\n\n\t\tthis.json = json;\n\t\tthis.extensions = {};\n\t\tthis.plugins = {};\n\t\tthis.options = options;\n\n\t\t// loader object cache\n\t\tthis.cache = new GLTFRegistry();\n\n\t\t// associations between Three.js objects and glTF elements\n\t\tthis.associations = new Map();\n\n\t\t// BufferGeometry caching\n\t\tthis.primitiveCache = {};\n\n\t\t// Object3D instance caches\n\t\tthis.meshCache = { refs: {}, uses: {} };\n\t\tthis.cameraCache = { refs: {}, uses: {} };\n\t\tthis.lightCache = { refs: {}, uses: {} };\n\n\t\tthis.sourceCache = {};\n\t\tthis.textureCache = {};\n\n\t\t// Track node names, to ensure no duplicates\n\t\tthis.nodeNamesUsed = {};\n\n\t\t// Use an ImageBitmapLoader if imageBitmaps are supported. Moves much of the\n\t\t// expensive work of uploading a texture to the GPU off the main thread.\n\n\t\tconst isSafari = /^((?!chrome|android).)*safari/i.test( navigator.userAgent ) === true;\n\t\tconst isFirefox = navigator.userAgent.indexOf( 'Firefox' ) > - 1;\n\t\tconst firefoxVersion = isFirefox ? navigator.userAgent.match( /Firefox\\/([0-9]+)\\./ )[ 1 ] : - 1;\n\n\t\tif ( typeof createImageBitmap === 'undefined' || isSafari || ( isFirefox && firefoxVersion < 98 ) ) {\n\n\t\t\tthis.textureLoader = new TextureLoader( this.options.manager );\n\n\t\t} else {\n\n\t\t\tthis.textureLoader = new ImageBitmapLoader( this.options.manager );\n\n\t\t}\n\n\t\tthis.textureLoader.setCrossOrigin( this.options.crossOrigin );\n\t\tthis.textureLoader.setRequestHeader( this.options.requestHeader );\n\n\t\tthis.fileLoader = new FileLoader( this.options.manager );\n\t\tthis.fileLoader.setResponseType( 'arraybuffer' );\n\n\t\tif ( this.options.crossOrigin === 'use-credentials' ) {\n\n\t\t\tthis.fileLoader.setWithCredentials( true );\n\n\t\t}\n\n\t}\n\n\tsetExtensions( extensions ) {\n\n\t\tthis.extensions = extensions;\n\n\t}\n\n\tsetPlugins( plugins ) {\n\n\t\tthis.plugins = plugins;\n\n\t}\n\n\tparse( onLoad, onError ) {\n\n\t\tconst parser = this;\n\t\tconst json = this.json;\n\t\tconst extensions = this.extensions;\n\n\t\t// Clear the loader cache\n\t\tthis.cache.removeAll();\n\n\t\t// Mark the special nodes/meshes in json for efficient parse\n\t\tthis._invokeAll( function ( ext ) {\n\n\t\t\treturn ext._markDefs && ext._markDefs();\n\n\t\t} );\n\n\t\tPromise.all( this._invokeAll( function ( ext ) {\n\n\t\t\treturn ext.beforeRoot && ext.beforeRoot();\n\n\t\t} ) ).then( function () {\n\n\t\t\treturn Promise.all( [\n\n\t\t\t\tparser.getDependencies( 'scene' ),\n\t\t\t\tparser.getDependencies( 'animation' ),\n\t\t\t\tparser.getDependencies( 'camera' ),\n\n\t\t\t] );\n\n\t\t} ).then( function ( dependencies ) {\n\n\t\t\tconst result = {\n\t\t\t\tscene: dependencies[ 0 ][ json.scene || 0 ],\n\t\t\t\tscenes: dependencies[ 0 ],\n\t\t\t\tanimations: dependencies[ 1 ],\n\t\t\t\tcameras: dependencies[ 2 ],\n\t\t\t\tasset: json.asset,\n\t\t\t\tparser: parser,\n\t\t\t\tuserData: {}\n\t\t\t};\n\n\t\t\taddUnknownExtensionsToUserData( extensions, result, json );\n\n\t\t\tassignExtrasToUserData( result, json );\n\n\t\t\tPromise.all( parser._invokeAll( function ( ext ) {\n\n\t\t\t\treturn ext.afterRoot && ext.afterRoot( result );\n\n\t\t\t} ) ).then( function () {\n\n\t\t\t\tonLoad( result );\n\n\t\t\t} );\n\n\t\t} ).catch( onError );\n\n\t}\n\n\t/**\n\t * Marks the special nodes/meshes in json for efficient parse.\n\t */\n\t_markDefs() {\n\n\t\tconst nodeDefs = this.json.nodes || [];\n\t\tconst skinDefs = this.json.skins || [];\n\t\tconst meshDefs = this.json.meshes || [];\n\n\t\t// Nothing in the node definition indicates whether it is a Bone or an\n\t\t// Object3D. Use the skins' joint references to mark bones.\n\t\tfor ( let skinIndex = 0, skinLength = skinDefs.length; skinIndex < skinLength; skinIndex ++ ) {\n\n\t\t\tconst joints = skinDefs[ skinIndex ].joints;\n\n\t\t\tfor ( let i = 0, il = joints.length; i < il; i ++ ) {\n\n\t\t\t\tnodeDefs[ joints[ i ] ].isBone = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Iterate over all nodes, marking references to shared resources,\n\t\t// as well as skeleton joints.\n\t\tfor ( let nodeIndex = 0, nodeLength = nodeDefs.length; nodeIndex < nodeLength; nodeIndex ++ ) {\n\n\t\t\tconst nodeDef = nodeDefs[ nodeIndex ];\n\n\t\t\tif ( nodeDef.mesh !== undefined ) {\n\n\t\t\t\tthis._addNodeRef( this.meshCache, nodeDef.mesh );\n\n\t\t\t\t// Nothing in the mesh definition indicates whether it is\n\t\t\t\t// a SkinnedMesh or Mesh. Use the node's mesh reference\n\t\t\t\t// to mark SkinnedMesh if node has skin.\n\t\t\t\tif ( nodeDef.skin !== undefined ) {\n\n\t\t\t\t\tmeshDefs[ nodeDef.mesh ].isSkinnedMesh = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( nodeDef.camera !== undefined ) {\n\n\t\t\t\tthis._addNodeRef( this.cameraCache, nodeDef.camera );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Counts references to shared node / Object3D resources. These resources\n\t * can be reused, or \"instantiated\", at multiple nodes in the scene\n\t * hierarchy. Mesh, Camera, and Light instances are instantiated and must\n\t * be marked. Non-scenegraph resources (like Materials, Geometries, and\n\t * Textures) can be reused directly and are not marked here.\n\t *\n\t * Example: CesiumMilkTruck sample model reuses \"Wheel\" meshes.\n\t */\n\t_addNodeRef( cache, index ) {\n\n\t\tif ( index === undefined ) return;\n\n\t\tif ( cache.refs[ index ] === undefined ) {\n\n\t\t\tcache.refs[ index ] = cache.uses[ index ] = 0;\n\n\t\t}\n\n\t\tcache.refs[ index ] ++;\n\n\t}\n\n\t/** Returns a reference to a shared resource, cloning it if necessary. */\n\t_getNodeRef( cache, index, object ) {\n\n\t\tif ( cache.refs[ index ] <= 1 ) return object;\n\n\t\tconst ref = object.clone();\n\n\t\t// Propagates mappings to the cloned object, prevents mappings on the\n\t\t// original object from being lost.\n\t\tconst updateMappings = ( original, clone ) => {\n\n\t\t\tconst mappings = this.associations.get( original );\n\t\t\tif ( mappings != null ) {\n\n\t\t\t\tthis.associations.set( clone, mappings );\n\n\t\t\t}\n\n\t\t\tfor ( const [ i, child ] of original.children.entries() ) {\n\n\t\t\t\tupdateMappings( child, clone.children[ i ] );\n\n\t\t\t}\n\n\t\t};\n\n\t\tupdateMappings( object, ref );\n\n\t\tref.name += '_instance_' + ( cache.uses[ index ] ++ );\n\n\t\treturn ref;\n\n\t}\n\n\t_invokeOne( func ) {\n\n\t\tconst extensions = Object.values( this.plugins );\n\t\textensions.push( this );\n\n\t\tfor ( let i = 0; i < extensions.length; i ++ ) {\n\n\t\t\tconst result = func( extensions[ i ] );\n\n\t\t\tif ( result ) return result;\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\t_invokeAll( func ) {\n\n\t\tconst extensions = Object.values( this.plugins );\n\t\textensions.unshift( this );\n\n\t\tconst pending = [];\n\n\t\tfor ( let i = 0; i < extensions.length; i ++ ) {\n\n\t\t\tconst result = func( extensions[ i ] );\n\n\t\t\tif ( result ) pending.push( result );\n\n\t\t}\n\n\t\treturn pending;\n\n\t}\n\n\t/**\n\t * Requests the specified dependency asynchronously, with caching.\n\t * @param {string} type\n\t * @param {number} index\n\t * @return {Promise<Object3D|Material|THREE.Texture|AnimationClip|ArrayBuffer|Object>}\n\t */\n\tgetDependency( type, index ) {\n\n\t\tconst cacheKey = type + ':' + index;\n\t\tlet dependency = this.cache.get( cacheKey );\n\n\t\tif ( ! dependency ) {\n\n\t\t\tswitch ( type ) {\n\n\t\t\t\tcase 'scene':\n\t\t\t\t\tdependency = this.loadScene( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'node':\n\t\t\t\t\tdependency = this.loadNode( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'mesh':\n\t\t\t\t\tdependency = this._invokeOne( function ( ext ) {\n\n\t\t\t\t\t\treturn ext.loadMesh && ext.loadMesh( index );\n\n\t\t\t\t\t} );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'accessor':\n\t\t\t\t\tdependency = this.loadAccessor( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'bufferView':\n\t\t\t\t\tdependency = this._invokeOne( function ( ext ) {\n\n\t\t\t\t\t\treturn ext.loadBufferView && ext.loadBufferView( index );\n\n\t\t\t\t\t} );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'buffer':\n\t\t\t\t\tdependency = this.loadBuffer( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'material':\n\t\t\t\t\tdependency = this._invokeOne( function ( ext ) {\n\n\t\t\t\t\t\treturn ext.loadMaterial && ext.loadMaterial( index );\n\n\t\t\t\t\t} );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'texture':\n\t\t\t\t\tdependency = this._invokeOne( function ( ext ) {\n\n\t\t\t\t\t\treturn ext.loadTexture && ext.loadTexture( index );\n\n\t\t\t\t\t} );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'skin':\n\t\t\t\t\tdependency = this.loadSkin( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'animation':\n\t\t\t\t\tdependency = this._invokeOne( function ( ext ) {\n\n\t\t\t\t\t\treturn ext.loadAnimation && ext.loadAnimation( index );\n\n\t\t\t\t\t} );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'camera':\n\t\t\t\t\tdependency = this.loadCamera( index );\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new Error( 'Unknown type: ' + type );\n\n\t\t\t}\n\n\t\t\tthis.cache.add( cacheKey, dependency );\n\n\t\t}\n\n\t\treturn dependency;\n\n\t}\n\n\t/**\n\t * Requests all dependencies of the specified type asynchronously, with caching.\n\t * @param {string} type\n\t * @return {Promise<Array<Object>>}\n\t */\n\tgetDependencies( type ) {\n\n\t\tlet dependencies = this.cache.get( type );\n\n\t\tif ( ! dependencies ) {\n\n\t\t\tconst parser = this;\n\t\t\tconst defs = this.json[ type + ( type === 'mesh' ? 'es' : 's' ) ] || [];\n\n\t\t\tdependencies = Promise.all( defs.map( function ( def, index ) {\n\n\t\t\t\treturn parser.getDependency( type, index );\n\n\t\t\t} ) );\n\n\t\t\tthis.cache.add( type, dependencies );\n\n\t\t}\n\n\t\treturn dependencies;\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views\n\t * @param {number} bufferIndex\n\t * @return {Promise<ArrayBuffer>}\n\t */\n\tloadBuffer( bufferIndex ) {\n\n\t\tconst bufferDef = this.json.buffers[ bufferIndex ];\n\t\tconst loader = this.fileLoader;\n\n\t\tif ( bufferDef.type && bufferDef.type !== 'arraybuffer' ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: ' + bufferDef.type + ' buffer type is not supported.' );\n\n\t\t}\n\n\t\t// If present, GLB container is required to be the first buffer.\n\t\tif ( bufferDef.uri === undefined && bufferIndex === 0 ) {\n\n\t\t\treturn Promise.resolve( this.extensions[ EXTENSIONS.KHR_BINARY_GLTF ].body );\n\n\t\t}\n\n\t\tconst options = this.options;\n\n\t\treturn new Promise( function ( resolve, reject ) {\n\n\t\t\tloader.load( LoaderUtils.resolveURL( bufferDef.uri, options.path ), resolve, undefined, function () {\n\n\t\t\t\treject( new Error( 'THREE.GLTFLoader: Failed to load buffer \"' + bufferDef.uri + '\".' ) );\n\n\t\t\t} );\n\n\t\t} );\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views\n\t * @param {number} bufferViewIndex\n\t * @return {Promise<ArrayBuffer>}\n\t */\n\tloadBufferView( bufferViewIndex ) {\n\n\t\tconst bufferViewDef = this.json.bufferViews[ bufferViewIndex ];\n\n\t\treturn this.getDependency( 'buffer', bufferViewDef.buffer ).then( function ( buffer ) {\n\n\t\t\tconst byteLength = bufferViewDef.byteLength || 0;\n\t\t\tconst byteOffset = bufferViewDef.byteOffset || 0;\n\t\t\treturn buffer.slice( byteOffset, byteOffset + byteLength );\n\n\t\t} );\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#accessors\n\t * @param {number} accessorIndex\n\t * @return {Promise<BufferAttribute|InterleavedBufferAttribute>}\n\t */\n\tloadAccessor( accessorIndex ) {\n\n\t\tconst parser = this;\n\t\tconst json = this.json;\n\n\t\tconst accessorDef = this.json.accessors[ accessorIndex ];\n\n\t\tif ( accessorDef.bufferView === undefined && accessorDef.sparse === undefined ) {\n\n\t\t\t// Ignore empty accessors, which may be used to declare runtime\n\t\t\t// information about attributes coming from another source (e.g. Draco\n\t\t\t// compression extension).\n\t\t\treturn Promise.resolve( null );\n\n\t\t}\n\n\t\tconst pendingBufferViews = [];\n\n\t\tif ( accessorDef.bufferView !== undefined ) {\n\n\t\t\tpendingBufferViews.push( this.getDependency( 'bufferView', accessorDef.bufferView ) );\n\n\t\t} else {\n\n\t\t\tpendingBufferViews.push( null );\n\n\t\t}\n\n\t\tif ( accessorDef.sparse !== undefined ) {\n\n\t\t\tpendingBufferViews.push( this.getDependency( 'bufferView', accessorDef.sparse.indices.bufferView ) );\n\t\t\tpendingBufferViews.push( this.getDependency( 'bufferView', accessorDef.sparse.values.bufferView ) );\n\n\t\t}\n\n\t\treturn Promise.all( pendingBufferViews ).then( function ( bufferViews ) {\n\n\t\t\tconst bufferView = bufferViews[ 0 ];\n\n\t\t\tconst itemSize = WEBGL_TYPE_SIZES[ accessorDef.type ];\n\t\t\tconst TypedArray = WEBGL_COMPONENT_TYPES[ accessorDef.componentType ];\n\n\t\t\t// For VEC3: itemSize is 3, elementBytes is 4, itemBytes is 12.\n\t\t\tconst elementBytes = TypedArray.BYTES_PER_ELEMENT;\n\t\t\tconst itemBytes = elementBytes * itemSize;\n\t\t\tconst byteOffset = accessorDef.byteOffset || 0;\n\t\t\tconst byteStride = accessorDef.bufferView !== undefined ? json.bufferViews[ accessorDef.bufferView ].byteStride : undefined;\n\t\t\tconst normalized = accessorDef.normalized === true;\n\t\t\tlet array, bufferAttribute;\n\n\t\t\t// The buffer is not interleaved if the stride is the item size in bytes.\n\t\t\tif ( byteStride && byteStride !== itemBytes ) {\n\n\t\t\t\t// Each \"slice\" of the buffer, as defined by 'count' elements of 'byteStride' bytes, gets its own InterleavedBuffer\n\t\t\t\t// This makes sure that IBA.count reflects accessor.count properly\n\t\t\t\tconst ibSlice = Math.floor( byteOffset / byteStride );\n\t\t\t\tconst ibCacheKey = 'InterleavedBuffer:' + accessorDef.bufferView + ':' + accessorDef.componentType + ':' + ibSlice + ':' + accessorDef.count;\n\t\t\t\tlet ib = parser.cache.get( ibCacheKey );\n\n\t\t\t\tif ( ! ib ) {\n\n\t\t\t\t\tarray = new TypedArray( bufferView, ibSlice * byteStride, accessorDef.count * byteStride / elementBytes );\n\n\t\t\t\t\t// Integer parameters to IB/IBA are in array elements, not bytes.\n\t\t\t\t\tib = new InterleavedBuffer( array, byteStride / elementBytes );\n\n\t\t\t\t\tparser.cache.add( ibCacheKey, ib );\n\n\t\t\t\t}\n\n\t\t\t\tbufferAttribute = new InterleavedBufferAttribute( ib, itemSize, ( byteOffset % byteStride ) / elementBytes, normalized );\n\n\t\t\t} else {\n\n\t\t\t\tif ( bufferView === null ) {\n\n\t\t\t\t\tarray = new TypedArray( accessorDef.count * itemSize );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tarray = new TypedArray( bufferView, byteOffset, accessorDef.count * itemSize );\n\n\t\t\t\t}\n\n\t\t\t\tbufferAttribute = new BufferAttribute( array, itemSize, normalized );\n\n\t\t\t}\n\n\t\t\t// https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#sparse-accessors\n\t\t\tif ( accessorDef.sparse !== undefined ) {\n\n\t\t\t\tconst itemSizeIndices = WEBGL_TYPE_SIZES.SCALAR;\n\t\t\t\tconst TypedArrayIndices = WEBGL_COMPONENT_TYPES[ accessorDef.sparse.indices.componentType ];\n\n\t\t\t\tconst byteOffsetIndices = accessorDef.sparse.indices.byteOffset || 0;\n\t\t\t\tconst byteOffsetValues = accessorDef.sparse.values.byteOffset || 0;\n\n\t\t\t\tconst sparseIndices = new TypedArrayIndices( bufferViews[ 1 ], byteOffsetIndices, accessorDef.sparse.count * itemSizeIndices );\n\t\t\t\tconst sparseValues = new TypedArray( bufferViews[ 2 ], byteOffsetValues, accessorDef.sparse.count * itemSize );\n\n\t\t\t\tif ( bufferView !== null ) {\n\n\t\t\t\t\t// Avoid modifying the original ArrayBuffer, if the bufferView wasn't initialized with zeroes.\n\t\t\t\t\tbufferAttribute = new BufferAttribute( bufferAttribute.array.slice(), bufferAttribute.itemSize, bufferAttribute.normalized );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0, il = sparseIndices.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst index = sparseIndices[ i ];\n\n\t\t\t\t\tbufferAttribute.setX( index, sparseValues[ i * itemSize ] );\n\t\t\t\t\tif ( itemSize >= 2 ) bufferAttribute.setY( index, sparseValues[ i * itemSize + 1 ] );\n\t\t\t\t\tif ( itemSize >= 3 ) bufferAttribute.setZ( index, sparseValues[ i * itemSize + 2 ] );\n\t\t\t\t\tif ( itemSize >= 4 ) bufferAttribute.setW( index, sparseValues[ i * itemSize + 3 ] );\n\t\t\t\t\tif ( itemSize >= 5 ) throw new Error( 'THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn bufferAttribute;\n\n\t\t} );\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#textures\n\t * @param {number} textureIndex\n\t * @return {Promise<THREE.Texture>}\n\t */\n\tloadTexture( textureIndex ) {\n\n\t\tconst json = this.json;\n\t\tconst options = this.options;\n\t\tconst textureDef = json.textures[ textureIndex ];\n\t\tconst sourceIndex = textureDef.source;\n\t\tconst sourceDef = json.images[ sourceIndex ];\n\n\t\tlet loader = this.textureLoader;\n\n\t\tif ( sourceDef.uri ) {\n\n\t\t\tconst handler = options.manager.getHandler( sourceDef.uri );\n\t\t\tif ( handler !== null ) loader = handler;\n\n\t\t}\n\n\t\treturn this.loadTextureImage( textureIndex, sourceIndex, loader );\n\n\t}\n\n\tloadTextureImage( textureIndex, sourceIndex, loader ) {\n\n\t\tconst parser = this;\n\t\tconst json = this.json;\n\n\t\tconst textureDef = json.textures[ textureIndex ];\n\t\tconst sourceDef = json.images[ sourceIndex ];\n\n\t\tconst cacheKey = ( sourceDef.uri || sourceDef.bufferView ) + ':' + textureDef.sampler;\n\n\t\tif ( this.textureCache[ cacheKey ] ) {\n\n\t\t\t// See https://github.com/mrdoob/three.js/issues/21559.\n\t\t\treturn this.textureCache[ cacheKey ];\n\n\t\t}\n\n\t\tconst promise = this.loadImageSource( sourceIndex, loader ).then( function ( texture ) {\n\n\t\t\ttexture.flipY = false;\n\n\t\t\tif ( textureDef.name ) texture.name = textureDef.name;\n\n\t\t\tconst samplers = json.samplers || {};\n\t\t\tconst sampler = samplers[ textureDef.sampler ] || {};\n\n\t\t\ttexture.magFilter = WEBGL_FILTERS[ sampler.magFilter ] || LinearFilter;\n\t\t\ttexture.minFilter = WEBGL_FILTERS[ sampler.minFilter ] || LinearMipmapLinearFilter;\n\t\t\ttexture.wrapS = WEBGL_WRAPPINGS[ sampler.wrapS ] || RepeatWrapping;\n\t\t\ttexture.wrapT = WEBGL_WRAPPINGS[ sampler.wrapT ] || RepeatWrapping;\n\n\t\t\tparser.associations.set( texture, { textures: textureIndex } );\n\n\t\t\treturn texture;\n\n\t\t} ).catch( function () {\n\n\t\t\treturn null;\n\n\t\t} );\n\n\t\tthis.textureCache[ cacheKey ] = promise;\n\n\t\treturn promise;\n\n\t}\n\n\tloadImageSource( sourceIndex, loader ) {\n\n\t\tconst parser = this;\n\t\tconst json = this.json;\n\t\tconst options = this.options;\n\n\t\tif ( this.sourceCache[ sourceIndex ] !== undefined ) {\n\n\t\t\treturn this.sourceCache[ sourceIndex ].then( ( texture ) => texture.clone() );\n\n\t\t}\n\n\t\tconst sourceDef = json.images[ sourceIndex ];\n\n\t\tconst URL = self.URL || self.webkitURL;\n\n\t\tlet sourceURI = sourceDef.uri || '';\n\t\tlet isObjectURL = false;\n\n\t\tif ( sourceDef.bufferView !== undefined ) {\n\n\t\t\t// Load binary image data from bufferView, if provided.\n\n\t\t\tsourceURI = parser.getDependency( 'bufferView', sourceDef.bufferView ).then( function ( bufferView ) {\n\n\t\t\t\tisObjectURL = true;\n\t\t\t\tconst blob = new Blob( [ bufferView ], { type: sourceDef.mimeType } );\n\t\t\t\tsourceURI = URL.createObjectURL( blob );\n\t\t\t\treturn sourceURI;\n\n\t\t\t} );\n\n\t\t} else if ( sourceDef.uri === undefined ) {\n\n\t\t\tthrow new Error( 'THREE.GLTFLoader: Image ' + sourceIndex + ' is missing URI and bufferView' );\n\n\t\t}\n\n\t\tconst promise = Promise.resolve( sourceURI ).then( function ( sourceURI ) {\n\n\t\t\treturn new Promise( function ( resolve, reject ) {\n\n\t\t\t\tlet onLoad = resolve;\n\n\t\t\t\tif ( loader.isImageBitmapLoader === true ) {\n\n\t\t\t\t\tonLoad = function ( imageBitmap ) {\n\n\t\t\t\t\t\tconst texture = new Texture( imageBitmap );\n\t\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\t\tresolve( texture );\n\n\t\t\t\t\t};\n\n\t\t\t\t}\n\n\t\t\t\tloader.load( LoaderUtils.resolveURL( sourceURI, options.path ), onLoad, undefined, reject );\n\n\t\t\t} );\n\n\t\t} ).then( function ( texture ) {\n\n\t\t\t// Clean up resources and configure Texture.\n\n\t\t\tif ( isObjectURL === true ) {\n\n\t\t\t\tURL.revokeObjectURL( sourceURI );\n\n\t\t\t}\n\n\t\t\ttexture.userData.mimeType = sourceDef.mimeType || getImageURIMimeType( sourceDef.uri );\n\n\t\t\treturn texture;\n\n\t\t} ).catch( function ( error ) {\n\n\t\t\tconsole.error( 'THREE.GLTFLoader: Couldn\\'t load texture', sourceURI );\n\t\t\tthrow error;\n\n\t\t} );\n\n\t\tthis.sourceCache[ sourceIndex ] = promise;\n\t\treturn promise;\n\n\t}\n\n\t/**\n\t * Asynchronously assigns a texture to the given material parameters.\n\t * @param {Object} materialParams\n\t * @param {string} mapName\n\t * @param {Object} mapDef\n\t * @return {Promise<Texture>}\n\t */\n\tassignTexture( materialParams, mapName, mapDef, encoding ) {\n\n\t\tconst parser = this;\n\n\t\treturn this.getDependency( 'texture', mapDef.index ).then( function ( texture ) {\n\n\t\t\t// Materials sample aoMap from UV set 1 and other maps from UV set 0 - this can't be configured\n\t\t\t// However, we will copy UV set 0 to UV set 1 on demand for aoMap\n\t\t\tif ( mapDef.texCoord !== undefined && mapDef.texCoord != 0 && ! ( mapName === 'aoMap' && mapDef.texCoord == 1 ) ) {\n\n\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Custom UV set ' + mapDef.texCoord + ' for texture ' + mapName + ' not yet supported.' );\n\n\t\t\t}\n\n\t\t\tif ( parser.extensions[ EXTENSIONS.KHR_TEXTURE_TRANSFORM ] ) {\n\n\t\t\t\tconst transform = mapDef.extensions !== undefined ? mapDef.extensions[ EXTENSIONS.KHR_TEXTURE_TRANSFORM ] : undefined;\n\n\t\t\t\tif ( transform ) {\n\n\t\t\t\t\tconst gltfReference = parser.associations.get( texture );\n\t\t\t\t\ttexture = parser.extensions[ EXTENSIONS.KHR_TEXTURE_TRANSFORM ].extendTexture( texture, transform );\n\t\t\t\t\tparser.associations.set( texture, gltfReference );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( encoding !== undefined ) {\n\n\t\t\t\ttexture.encoding = encoding;\n\n\t\t\t}\n\n\t\t\tmaterialParams[ mapName ] = texture;\n\n\t\t\treturn texture;\n\n\t\t} );\n\n\t}\n\n\t/**\n\t * Assigns final material to a Mesh, Line, or Points instance. The instance\n\t * already has a material (generated from the glTF material options alone)\n\t * but reuse of the same glTF material may require multiple threejs materials\n\t * to accommodate different primitive types, defines, etc. New materials will\n\t * be created if necessary, and reused from a cache.\n\t * @param  {Object3D} mesh Mesh, Line, or Points instance.\n\t */\n\tassignFinalMaterial( mesh ) {\n\n\t\tconst geometry = mesh.geometry;\n\t\tlet material = mesh.material;\n\n\t\tconst useDerivativeTangents = geometry.attributes.tangent === undefined;\n\t\tconst useVertexColors = geometry.attributes.color !== undefined;\n\t\tconst useFlatShading = geometry.attributes.normal === undefined;\n\n\t\tif ( mesh.isPoints ) {\n\n\t\t\tconst cacheKey = 'PointsMaterial:' + material.uuid;\n\n\t\t\tlet pointsMaterial = this.cache.get( cacheKey );\n\n\t\t\tif ( ! pointsMaterial ) {\n\n\t\t\t\tpointsMaterial = new PointsMaterial();\n\t\t\t\tMaterial.prototype.copy.call( pointsMaterial, material );\n\t\t\t\tpointsMaterial.color.copy( material.color );\n\t\t\t\tpointsMaterial.map = material.map;\n\t\t\t\tpointsMaterial.sizeAttenuation = false; // glTF spec says points should be 1px\n\n\t\t\t\tthis.cache.add( cacheKey, pointsMaterial );\n\n\t\t\t}\n\n\t\t\tmaterial = pointsMaterial;\n\n\t\t} else if ( mesh.isLine ) {\n\n\t\t\tconst cacheKey = 'LineBasicMaterial:' + material.uuid;\n\n\t\t\tlet lineMaterial = this.cache.get( cacheKey );\n\n\t\t\tif ( ! lineMaterial ) {\n\n\t\t\t\tlineMaterial = new LineBasicMaterial();\n\t\t\t\tMaterial.prototype.copy.call( lineMaterial, material );\n\t\t\t\tlineMaterial.color.copy( material.color );\n\n\t\t\t\tthis.cache.add( cacheKey, lineMaterial );\n\n\t\t\t}\n\n\t\t\tmaterial = lineMaterial;\n\n\t\t}\n\n\t\t// Clone the material if it will be modified\n\t\tif ( useDerivativeTangents || useVertexColors || useFlatShading ) {\n\n\t\t\tlet cacheKey = 'ClonedMaterial:' + material.uuid + ':';\n\n\t\t\tif ( material.isGLTFSpecularGlossinessMaterial ) cacheKey += 'specular-glossiness:';\n\t\t\tif ( useDerivativeTangents ) cacheKey += 'derivative-tangents:';\n\t\t\tif ( useVertexColors ) cacheKey += 'vertex-colors:';\n\t\t\tif ( useFlatShading ) cacheKey += 'flat-shading:';\n\n\t\t\tlet cachedMaterial = this.cache.get( cacheKey );\n\n\t\t\tif ( ! cachedMaterial ) {\n\n\t\t\t\tcachedMaterial = material.clone();\n\n\t\t\t\tif ( useVertexColors ) cachedMaterial.vertexColors = true;\n\t\t\t\tif ( useFlatShading ) cachedMaterial.flatShading = true;\n\n\t\t\t\tif ( useDerivativeTangents ) {\n\n\t\t\t\t\t// https://github.com/mrdoob/three.js/issues/11438#issuecomment-507003995\n\t\t\t\t\tif ( cachedMaterial.normalScale ) cachedMaterial.normalScale.y *= - 1;\n\t\t\t\t\tif ( cachedMaterial.clearcoatNormalScale ) cachedMaterial.clearcoatNormalScale.y *= - 1;\n\n\t\t\t\t}\n\n\t\t\t\tthis.cache.add( cacheKey, cachedMaterial );\n\n\t\t\t\tthis.associations.set( cachedMaterial, this.associations.get( material ) );\n\n\t\t\t}\n\n\t\t\tmaterial = cachedMaterial;\n\n\t\t}\n\n\t\t// workarounds for mesh and geometry\n\n\t\tif ( material.aoMap && geometry.attributes.uv2 === undefined && geometry.attributes.uv !== undefined ) {\n\n\t\t\tgeometry.setAttribute( 'uv2', geometry.attributes.uv );\n\n\t\t}\n\n\t\tmesh.material = material;\n\n\t}\n\n\tgetMaterialType( /* materialIndex */ ) {\n\n\t\treturn MeshStandardMaterial;\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#materials\n\t * @param {number} materialIndex\n\t * @return {Promise<Material>}\n\t */\n\tloadMaterial( materialIndex ) {\n\n\t\tconst parser = this;\n\t\tconst json = this.json;\n\t\tconst extensions = this.extensions;\n\t\tconst materialDef = json.materials[ materialIndex ];\n\n\t\tlet materialType;\n\t\tconst materialParams = {};\n\t\tconst materialExtensions = materialDef.extensions || {};\n\n\t\tconst pending = [];\n\n\t\tif ( materialExtensions[ EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS ] ) {\n\n\t\t\tconst sgExtension = extensions[ EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS ];\n\t\t\tmaterialType = sgExtension.getMaterialType();\n\t\t\tpending.push( sgExtension.extendParams( materialParams, materialDef, parser ) );\n\n\t\t} else if ( materialExtensions[ EXTENSIONS.KHR_MATERIALS_UNLIT ] ) {\n\n\t\t\tconst kmuExtension = extensions[ EXTENSIONS.KHR_MATERIALS_UNLIT ];\n\t\t\tmaterialType = kmuExtension.getMaterialType();\n\t\t\tpending.push( kmuExtension.extendParams( materialParams, materialDef, parser ) );\n\n\t\t} else {\n\n\t\t\t// Specification:\n\t\t\t// https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#metallic-roughness-material\n\n\t\t\tconst metallicRoughness = materialDef.pbrMetallicRoughness || {};\n\n\t\t\tmaterialParams.color = new Color( 1.0, 1.0, 1.0 );\n\t\t\tmaterialParams.opacity = 1.0;\n\n\t\t\tif ( Array.isArray( metallicRoughness.baseColorFactor ) ) {\n\n\t\t\t\tconst array = metallicRoughness.baseColorFactor;\n\n\t\t\t\tmaterialParams.color.fromArray( array );\n\t\t\t\tmaterialParams.opacity = array[ 3 ];\n\n\t\t\t}\n\n\t\t\tif ( metallicRoughness.baseColorTexture !== undefined ) {\n\n\t\t\t\tpending.push( parser.assignTexture( materialParams, 'map', metallicRoughness.baseColorTexture, sRGBEncoding ) );\n\n\t\t\t}\n\n\t\t\tmaterialParams.metalness = metallicRoughness.metallicFactor !== undefined ? metallicRoughness.metallicFactor : 1.0;\n\t\t\tmaterialParams.roughness = metallicRoughness.roughnessFactor !== undefined ? metallicRoughness.roughnessFactor : 1.0;\n\n\t\t\tif ( metallicRoughness.metallicRoughnessTexture !== undefined ) {\n\n\t\t\t\tpending.push( parser.assignTexture( materialParams, 'metalnessMap', metallicRoughness.metallicRoughnessTexture ) );\n\t\t\t\tpending.push( parser.assignTexture( materialParams, 'roughnessMap', metallicRoughness.metallicRoughnessTexture ) );\n\n\t\t\t}\n\n\t\t\tmaterialType = this._invokeOne( function ( ext ) {\n\n\t\t\t\treturn ext.getMaterialType && ext.getMaterialType( materialIndex );\n\n\t\t\t} );\n\n\t\t\tpending.push( Promise.all( this._invokeAll( function ( ext ) {\n\n\t\t\t\treturn ext.extendMaterialParams && ext.extendMaterialParams( materialIndex, materialParams );\n\n\t\t\t} ) ) );\n\n\t\t}\n\n\t\tif ( materialDef.doubleSided === true ) {\n\n\t\t\tmaterialParams.side = DoubleSide;\n\n\t\t}\n\n\t\tconst alphaMode = materialDef.alphaMode || ALPHA_MODES.OPAQUE;\n\n\t\tif ( alphaMode === ALPHA_MODES.BLEND ) {\n\n\t\t\tmaterialParams.transparent = true;\n\n\t\t\t// See: https://github.com/mrdoob/three.js/issues/17706\n\t\t\tmaterialParams.depthWrite = false;\n\n\t\t} else {\n\n\t\t\tmaterialParams.transparent = false;\n\n\t\t\tif ( alphaMode === ALPHA_MODES.MASK ) {\n\n\t\t\t\tmaterialParams.alphaTest = materialDef.alphaCutoff !== undefined ? materialDef.alphaCutoff : 0.5;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( materialDef.normalTexture !== undefined && materialType !== MeshBasicMaterial ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'normalMap', materialDef.normalTexture ) );\n\n\t\t\tmaterialParams.normalScale = new Vector2( 1, 1 );\n\n\t\t\tif ( materialDef.normalTexture.scale !== undefined ) {\n\n\t\t\t\tconst scale = materialDef.normalTexture.scale;\n\n\t\t\t\tmaterialParams.normalScale.set( scale, scale );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( materialDef.occlusionTexture !== undefined && materialType !== MeshBasicMaterial ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'aoMap', materialDef.occlusionTexture ) );\n\n\t\t\tif ( materialDef.occlusionTexture.strength !== undefined ) {\n\n\t\t\t\tmaterialParams.aoMapIntensity = materialDef.occlusionTexture.strength;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( materialDef.emissiveFactor !== undefined && materialType !== MeshBasicMaterial ) {\n\n\t\t\tmaterialParams.emissive = new Color().fromArray( materialDef.emissiveFactor );\n\n\t\t}\n\n\t\tif ( materialDef.emissiveTexture !== undefined && materialType !== MeshBasicMaterial ) {\n\n\t\t\tpending.push( parser.assignTexture( materialParams, 'emissiveMap', materialDef.emissiveTexture, sRGBEncoding ) );\n\n\t\t}\n\n\t\treturn Promise.all( pending ).then( function () {\n\n\t\t\tlet material;\n\n\t\t\tif ( materialType === GLTFMeshStandardSGMaterial ) {\n\n\t\t\t\tmaterial = extensions[ EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS ].createMaterial( materialParams );\n\n\t\t\t} else {\n\n\t\t\t\tmaterial = new materialType( materialParams );\n\n\t\t\t}\n\n\t\t\tif ( materialDef.name ) material.name = materialDef.name;\n\n\t\t\tassignExtrasToUserData( material, materialDef );\n\n\t\t\tparser.associations.set( material, { materials: materialIndex } );\n\n\t\t\tif ( materialDef.extensions ) addUnknownExtensionsToUserData( extensions, material, materialDef );\n\n\t\t\treturn material;\n\n\t\t} );\n\n\t}\n\n\t/** When Object3D instances are targeted by animation, they need unique names. */\n\tcreateUniqueName( originalName ) {\n\n\t\tconst sanitizedName = PropertyBinding.sanitizeNodeName( originalName || '' );\n\n\t\tlet name = sanitizedName;\n\n\t\tfor ( let i = 1; this.nodeNamesUsed[ name ]; ++ i ) {\n\n\t\t\tname = sanitizedName + '_' + i;\n\n\t\t}\n\n\t\tthis.nodeNamesUsed[ name ] = true;\n\n\t\treturn name;\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#geometry\n\t *\n\t * Creates BufferGeometries from primitives.\n\t *\n\t * @param {Array<GLTF.Primitive>} primitives\n\t * @return {Promise<Array<BufferGeometry>>}\n\t */\n\tloadGeometries( primitives ) {\n\n\t\tconst parser = this;\n\t\tconst extensions = this.extensions;\n\t\tconst cache = this.primitiveCache;\n\n\t\tfunction createDracoPrimitive( primitive ) {\n\n\t\t\treturn extensions[ EXTENSIONS.KHR_DRACO_MESH_COMPRESSION ]\n\t\t\t\t.decodePrimitive( primitive, parser )\n\t\t\t\t.then( function ( geometry ) {\n\n\t\t\t\t\treturn addPrimitiveAttributes( geometry, primitive, parser );\n\n\t\t\t\t} );\n\n\t\t}\n\n\t\tconst pending = [];\n\n\t\tfor ( let i = 0, il = primitives.length; i < il; i ++ ) {\n\n\t\t\tconst primitive = primitives[ i ];\n\t\t\tconst cacheKey = createPrimitiveKey( primitive );\n\n\t\t\t// See if we've already created this geometry\n\t\t\tconst cached = cache[ cacheKey ];\n\n\t\t\tif ( cached ) {\n\n\t\t\t\t// Use the cached geometry if it exists\n\t\t\t\tpending.push( cached.promise );\n\n\t\t\t} else {\n\n\t\t\t\tlet geometryPromise;\n\n\t\t\t\tif ( primitive.extensions && primitive.extensions[ EXTENSIONS.KHR_DRACO_MESH_COMPRESSION ] ) {\n\n\t\t\t\t\t// Use DRACO geometry if available\n\t\t\t\t\tgeometryPromise = createDracoPrimitive( primitive );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// Otherwise create a new geometry\n\t\t\t\t\tgeometryPromise = addPrimitiveAttributes( new BufferGeometry(), primitive, parser );\n\n\t\t\t\t}\n\n\t\t\t\t// Cache this geometry\n\t\t\t\tcache[ cacheKey ] = { primitive: primitive, promise: geometryPromise };\n\n\t\t\t\tpending.push( geometryPromise );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#meshes\n\t * @param {number} meshIndex\n\t * @return {Promise<Group|Mesh|SkinnedMesh>}\n\t */\n\tloadMesh( meshIndex ) {\n\n\t\tconst parser = this;\n\t\tconst json = this.json;\n\t\tconst extensions = this.extensions;\n\n\t\tconst meshDef = json.meshes[ meshIndex ];\n\t\tconst primitives = meshDef.primitives;\n\n\t\tconst pending = [];\n\n\t\tfor ( let i = 0, il = primitives.length; i < il; i ++ ) {\n\n\t\t\tconst material = primitives[ i ].material === undefined\n\t\t\t\t? createDefaultMaterial( this.cache )\n\t\t\t\t: this.getDependency( 'material', primitives[ i ].material );\n\n\t\t\tpending.push( material );\n\n\t\t}\n\n\t\tpending.push( parser.loadGeometries( primitives ) );\n\n\t\treturn Promise.all( pending ).then( function ( results ) {\n\n\t\t\tconst materials = results.slice( 0, results.length - 1 );\n\t\t\tconst geometries = results[ results.length - 1 ];\n\n\t\t\tconst meshes = [];\n\n\t\t\tfor ( let i = 0, il = geometries.length; i < il; i ++ ) {\n\n\t\t\t\tconst geometry = geometries[ i ];\n\t\t\t\tconst primitive = primitives[ i ];\n\n\t\t\t\t// 1. create Mesh\n\n\t\t\t\tlet mesh;\n\n\t\t\t\tconst material = materials[ i ];\n\n\t\t\t\tif ( primitive.mode === WEBGL_CONSTANTS.TRIANGLES ||\n\t\t\t\t\t\tprimitive.mode === WEBGL_CONSTANTS.TRIANGLE_STRIP ||\n\t\t\t\t\t\tprimitive.mode === WEBGL_CONSTANTS.TRIANGLE_FAN ||\n\t\t\t\t\t\tprimitive.mode === undefined ) {\n\n\t\t\t\t\t// .isSkinnedMesh isn't in glTF spec. See ._markDefs()\n\t\t\t\t\tmesh = meshDef.isSkinnedMesh === true\n\t\t\t\t\t\t? new SkinnedMesh( geometry, material )\n\t\t\t\t\t\t: new Mesh( geometry, material );\n\n\t\t\t\t\tif ( mesh.isSkinnedMesh === true && ! mesh.geometry.attributes.skinWeight.normalized ) {\n\n\t\t\t\t\t\t// we normalize floating point skin weight array to fix malformed assets (see #15319)\n\t\t\t\t\t\t// it's important to skip this for non-float32 data since normalizeSkinWeights assumes non-normalized inputs\n\t\t\t\t\t\tmesh.normalizeSkinWeights();\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( primitive.mode === WEBGL_CONSTANTS.TRIANGLE_STRIP ) {\n\n\t\t\t\t\t\tmesh.geometry = toTrianglesDrawMode( mesh.geometry, TriangleStripDrawMode );\n\n\t\t\t\t\t} else if ( primitive.mode === WEBGL_CONSTANTS.TRIANGLE_FAN ) {\n\n\t\t\t\t\t\tmesh.geometry = toTrianglesDrawMode( mesh.geometry, TriangleFanDrawMode );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( primitive.mode === WEBGL_CONSTANTS.LINES ) {\n\n\t\t\t\t\tmesh = new LineSegments( geometry, material );\n\n\t\t\t\t} else if ( primitive.mode === WEBGL_CONSTANTS.LINE_STRIP ) {\n\n\t\t\t\t\tmesh = new Line( geometry, material );\n\n\t\t\t\t} else if ( primitive.mode === WEBGL_CONSTANTS.LINE_LOOP ) {\n\n\t\t\t\t\tmesh = new LineLoop( geometry, material );\n\n\t\t\t\t} else if ( primitive.mode === WEBGL_CONSTANTS.POINTS ) {\n\n\t\t\t\t\tmesh = new Points( geometry, material );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( 'THREE.GLTFLoader: Primitive mode unsupported: ' + primitive.mode );\n\n\t\t\t\t}\n\n\t\t\t\tif ( Object.keys( mesh.geometry.morphAttributes ).length > 0 ) {\n\n\t\t\t\t\tupdateMorphTargets( mesh, meshDef );\n\n\t\t\t\t}\n\n\t\t\t\tmesh.name = parser.createUniqueName( meshDef.name || ( 'mesh_' + meshIndex ) );\n\n\t\t\t\tassignExtrasToUserData( mesh, meshDef );\n\n\t\t\t\tif ( primitive.extensions ) addUnknownExtensionsToUserData( extensions, mesh, primitive );\n\n\t\t\t\tparser.assignFinalMaterial( mesh );\n\n\t\t\t\tmeshes.push( mesh );\n\n\t\t\t}\n\n\t\t\tfor ( let i = 0, il = meshes.length; i < il; i ++ ) {\n\n\t\t\t\tparser.associations.set( meshes[ i ], {\n\t\t\t\t\tmeshes: meshIndex,\n\t\t\t\t\tprimitives: i\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t\tif ( meshes.length === 1 ) {\n\n\t\t\t\treturn meshes[ 0 ];\n\n\t\t\t}\n\n\t\t\tconst group = new Group();\n\n\t\t\tparser.associations.set( group, { meshes: meshIndex } );\n\n\t\t\tfor ( let i = 0, il = meshes.length; i < il; i ++ ) {\n\n\t\t\t\tgroup.add( meshes[ i ] );\n\n\t\t\t}\n\n\t\t\treturn group;\n\n\t\t} );\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#cameras\n\t * @param {number} cameraIndex\n\t * @return {Promise<THREE.Camera>}\n\t */\n\tloadCamera( cameraIndex ) {\n\n\t\tlet camera;\n\t\tconst cameraDef = this.json.cameras[ cameraIndex ];\n\t\tconst params = cameraDef[ cameraDef.type ];\n\n\t\tif ( ! params ) {\n\n\t\t\tconsole.warn( 'THREE.GLTFLoader: Missing camera parameters.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( cameraDef.type === 'perspective' ) {\n\n\t\t\tcamera = new PerspectiveCamera( MathUtils.radToDeg( params.yfov ), params.aspectRatio || 1, params.znear || 1, params.zfar || 2e6 );\n\n\t\t} else if ( cameraDef.type === 'orthographic' ) {\n\n\t\t\tcamera = new OrthographicCamera( - params.xmag, params.xmag, params.ymag, - params.ymag, params.znear, params.zfar );\n\n\t\t}\n\n\t\tif ( cameraDef.name ) camera.name = this.createUniqueName( cameraDef.name );\n\n\t\tassignExtrasToUserData( camera, cameraDef );\n\n\t\treturn Promise.resolve( camera );\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#skins\n\t * @param {number} skinIndex\n\t * @return {Promise<Object>}\n\t */\n\tloadSkin( skinIndex ) {\n\n\t\tconst skinDef = this.json.skins[ skinIndex ];\n\n\t\tconst skinEntry = { joints: skinDef.joints };\n\n\t\tif ( skinDef.inverseBindMatrices === undefined ) {\n\n\t\t\treturn Promise.resolve( skinEntry );\n\n\t\t}\n\n\t\treturn this.getDependency( 'accessor', skinDef.inverseBindMatrices ).then( function ( accessor ) {\n\n\t\t\tskinEntry.inverseBindMatrices = accessor;\n\n\t\t\treturn skinEntry;\n\n\t\t} );\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#animations\n\t * @param {number} animationIndex\n\t * @return {Promise<AnimationClip>}\n\t */\n\tloadAnimation( animationIndex ) {\n\n\t\tconst json = this.json;\n\n\t\tconst animationDef = json.animations[ animationIndex ];\n\n\t\tconst pendingNodes = [];\n\t\tconst pendingInputAccessors = [];\n\t\tconst pendingOutputAccessors = [];\n\t\tconst pendingSamplers = [];\n\t\tconst pendingTargets = [];\n\n\t\tfor ( let i = 0, il = animationDef.channels.length; i < il; i ++ ) {\n\n\t\t\tconst channel = animationDef.channels[ i ];\n\t\t\tconst sampler = animationDef.samplers[ channel.sampler ];\n\t\t\tconst target = channel.target;\n\t\t\tconst name = target.node !== undefined ? target.node : target.id; // NOTE: target.id is deprecated.\n\t\t\tconst input = animationDef.parameters !== undefined ? animationDef.parameters[ sampler.input ] : sampler.input;\n\t\t\tconst output = animationDef.parameters !== undefined ? animationDef.parameters[ sampler.output ] : sampler.output;\n\n\t\t\tpendingNodes.push( this.getDependency( 'node', name ) );\n\t\t\tpendingInputAccessors.push( this.getDependency( 'accessor', input ) );\n\t\t\tpendingOutputAccessors.push( this.getDependency( 'accessor', output ) );\n\t\t\tpendingSamplers.push( sampler );\n\t\t\tpendingTargets.push( target );\n\n\t\t}\n\n\t\treturn Promise.all( [\n\n\t\t\tPromise.all( pendingNodes ),\n\t\t\tPromise.all( pendingInputAccessors ),\n\t\t\tPromise.all( pendingOutputAccessors ),\n\t\t\tPromise.all( pendingSamplers ),\n\t\t\tPromise.all( pendingTargets )\n\n\t\t] ).then( function ( dependencies ) {\n\n\t\t\tconst nodes = dependencies[ 0 ];\n\t\t\tconst inputAccessors = dependencies[ 1 ];\n\t\t\tconst outputAccessors = dependencies[ 2 ];\n\t\t\tconst samplers = dependencies[ 3 ];\n\t\t\tconst targets = dependencies[ 4 ];\n\n\t\t\tconst tracks = [];\n\n\t\t\tfor ( let i = 0, il = nodes.length; i < il; i ++ ) {\n\n\t\t\t\tconst node = nodes[ i ];\n\t\t\t\tconst inputAccessor = inputAccessors[ i ];\n\t\t\t\tconst outputAccessor = outputAccessors[ i ];\n\t\t\t\tconst sampler = samplers[ i ];\n\t\t\t\tconst target = targets[ i ];\n\n\t\t\t\tif ( node === undefined ) continue;\n\n\t\t\t\tnode.updateMatrix();\n\n\t\t\t\tlet TypedKeyframeTrack;\n\n\t\t\t\tswitch ( PATH_PROPERTIES[ target.path ] ) {\n\n\t\t\t\t\tcase PATH_PROPERTIES.weights:\n\n\t\t\t\t\t\tTypedKeyframeTrack = NumberKeyframeTrack;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase PATH_PROPERTIES.rotation:\n\n\t\t\t\t\t\tTypedKeyframeTrack = QuaternionKeyframeTrack;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase PATH_PROPERTIES.position:\n\t\t\t\t\tcase PATH_PROPERTIES.scale:\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tTypedKeyframeTrack = VectorKeyframeTrack;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t\tconst targetName = node.name ? node.name : node.uuid;\n\n\t\t\t\tconst interpolation = sampler.interpolation !== undefined ? INTERPOLATION[ sampler.interpolation ] : InterpolateLinear;\n\n\t\t\t\tconst targetNames = [];\n\n\t\t\t\tif ( PATH_PROPERTIES[ target.path ] === PATH_PROPERTIES.weights ) {\n\n\t\t\t\t\tnode.traverse( function ( object ) {\n\n\t\t\t\t\t\tif ( object.morphTargetInfluences ) {\n\n\t\t\t\t\t\t\ttargetNames.push( object.name ? object.name : object.uuid );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} );\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttargetNames.push( targetName );\n\n\t\t\t\t}\n\n\t\t\t\tlet outputArray = outputAccessor.array;\n\n\t\t\t\tif ( outputAccessor.normalized ) {\n\n\t\t\t\t\tconst scale = getNormalizedComponentScale( outputArray.constructor );\n\t\t\t\t\tconst scaled = new Float32Array( outputArray.length );\n\n\t\t\t\t\tfor ( let j = 0, jl = outputArray.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tscaled[ j ] = outputArray[ j ] * scale;\n\n\t\t\t\t\t}\n\n\t\t\t\t\toutputArray = scaled;\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let j = 0, jl = targetNames.length; j < jl; j ++ ) {\n\n\t\t\t\t\tconst track = new TypedKeyframeTrack(\n\t\t\t\t\t\ttargetNames[ j ] + '.' + PATH_PROPERTIES[ target.path ],\n\t\t\t\t\t\tinputAccessor.array,\n\t\t\t\t\t\toutputArray,\n\t\t\t\t\t\tinterpolation\n\t\t\t\t\t);\n\n\t\t\t\t\t// Override interpolation with custom factory method.\n\t\t\t\t\tif ( sampler.interpolation === 'CUBICSPLINE' ) {\n\n\t\t\t\t\t\ttrack.createInterpolant = function InterpolantFactoryMethodGLTFCubicSpline( result ) {\n\n\t\t\t\t\t\t\t// A CUBICSPLINE keyframe in glTF has three output values for each input value,\n\t\t\t\t\t\t\t// representing inTangent, splineVertex, and outTangent. As a result, track.getValueSize()\n\t\t\t\t\t\t\t// must be divided by three to get the interpolant's sampleSize argument.\n\n\t\t\t\t\t\t\tconst interpolantType = ( this instanceof QuaternionKeyframeTrack ) ? GLTFCubicSplineQuaternionInterpolant : GLTFCubicSplineInterpolant;\n\n\t\t\t\t\t\t\treturn new interpolantType( this.times, this.values, this.getValueSize() / 3, result );\n\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\t// Mark as CUBICSPLINE. `track.getInterpolation()` doesn't support custom interpolants.\n\t\t\t\t\t\ttrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline = true;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttracks.push( track );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst name = animationDef.name ? animationDef.name : 'animation_' + animationIndex;\n\n\t\t\treturn new AnimationClip( name, undefined, tracks );\n\n\t\t} );\n\n\t}\n\n\tcreateNodeMesh( nodeIndex ) {\n\n\t\tconst json = this.json;\n\t\tconst parser = this;\n\t\tconst nodeDef = json.nodes[ nodeIndex ];\n\n\t\tif ( nodeDef.mesh === undefined ) return null;\n\n\t\treturn parser.getDependency( 'mesh', nodeDef.mesh ).then( function ( mesh ) {\n\n\t\t\tconst node = parser._getNodeRef( parser.meshCache, nodeDef.mesh, mesh );\n\n\t\t\t// if weights are provided on the node, override weights on the mesh.\n\t\t\tif ( nodeDef.weights !== undefined ) {\n\n\t\t\t\tnode.traverse( function ( o ) {\n\n\t\t\t\t\tif ( ! o.isMesh ) return;\n\n\t\t\t\t\tfor ( let i = 0, il = nodeDef.weights.length; i < il; i ++ ) {\n\n\t\t\t\t\t\to.morphTargetInfluences[ i ] = nodeDef.weights[ i ];\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t\treturn node;\n\n\t\t} );\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#nodes-and-hierarchy\n\t * @param {number} nodeIndex\n\t * @return {Promise<Object3D>}\n\t */\n\tloadNode( nodeIndex ) {\n\n\t\tconst json = this.json;\n\t\tconst extensions = this.extensions;\n\t\tconst parser = this;\n\n\t\tconst nodeDef = json.nodes[ nodeIndex ];\n\n\t\t// reserve node's name before its dependencies, so the root has the intended name.\n\t\tconst nodeName = nodeDef.name ? parser.createUniqueName( nodeDef.name ) : '';\n\n\t\treturn ( function () {\n\n\t\t\tconst pending = [];\n\n\t\t\tconst meshPromise = parser._invokeOne( function ( ext ) {\n\n\t\t\t\treturn ext.createNodeMesh && ext.createNodeMesh( nodeIndex );\n\n\t\t\t} );\n\n\t\t\tif ( meshPromise ) {\n\n\t\t\t\tpending.push( meshPromise );\n\n\t\t\t}\n\n\t\t\tif ( nodeDef.camera !== undefined ) {\n\n\t\t\t\tpending.push( parser.getDependency( 'camera', nodeDef.camera ).then( function ( camera ) {\n\n\t\t\t\t\treturn parser._getNodeRef( parser.cameraCache, nodeDef.camera, camera );\n\n\t\t\t\t} ) );\n\n\t\t\t}\n\n\t\t\tparser._invokeAll( function ( ext ) {\n\n\t\t\t\treturn ext.createNodeAttachment && ext.createNodeAttachment( nodeIndex );\n\n\t\t\t} ).forEach( function ( promise ) {\n\n\t\t\t\tpending.push( promise );\n\n\t\t\t} );\n\n\t\t\treturn Promise.all( pending );\n\n\t\t}() ).then( function ( objects ) {\n\n\t\t\tlet node;\n\n\t\t\t// .isBone isn't in glTF spec. See ._markDefs\n\t\t\tif ( nodeDef.isBone === true ) {\n\n\t\t\t\tnode = new Bone();\n\n\t\t\t} else if ( objects.length > 1 ) {\n\n\t\t\t\tnode = new Group();\n\n\t\t\t} else if ( objects.length === 1 ) {\n\n\t\t\t\tnode = objects[ 0 ];\n\n\t\t\t} else {\n\n\t\t\t\tnode = new Object3D();\n\n\t\t\t}\n\n\t\t\tif ( node !== objects[ 0 ] ) {\n\n\t\t\t\tfor ( let i = 0, il = objects.length; i < il; i ++ ) {\n\n\t\t\t\t\tnode.add( objects[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( nodeDef.name ) {\n\n\t\t\t\tnode.userData.name = nodeDef.name;\n\t\t\t\tnode.name = nodeName;\n\n\t\t\t}\n\n\t\t\tassignExtrasToUserData( node, nodeDef );\n\n\t\t\tif ( nodeDef.extensions ) addUnknownExtensionsToUserData( extensions, node, nodeDef );\n\n\t\t\tif ( nodeDef.matrix !== undefined ) {\n\n\t\t\t\tconst matrix = new Matrix4();\n\t\t\t\tmatrix.fromArray( nodeDef.matrix );\n\t\t\t\tnode.applyMatrix4( matrix );\n\n\t\t\t} else {\n\n\t\t\t\tif ( nodeDef.translation !== undefined ) {\n\n\t\t\t\t\tnode.position.fromArray( nodeDef.translation );\n\n\t\t\t\t}\n\n\t\t\t\tif ( nodeDef.rotation !== undefined ) {\n\n\t\t\t\t\tnode.quaternion.fromArray( nodeDef.rotation );\n\n\t\t\t\t}\n\n\t\t\t\tif ( nodeDef.scale !== undefined ) {\n\n\t\t\t\t\tnode.scale.fromArray( nodeDef.scale );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( ! parser.associations.has( node ) ) {\n\n\t\t\t\tparser.associations.set( node, {} );\n\n\t\t\t}\n\n\t\t\tparser.associations.get( node ).nodes = nodeIndex;\n\n\t\t\treturn node;\n\n\t\t} );\n\n\t}\n\n\t/**\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#scenes\n\t * @param {number} sceneIndex\n\t * @return {Promise<Group>}\n\t */\n\tloadScene( sceneIndex ) {\n\n\t\tconst json = this.json;\n\t\tconst extensions = this.extensions;\n\t\tconst sceneDef = this.json.scenes[ sceneIndex ];\n\t\tconst parser = this;\n\n\t\t// Loader returns Group, not Scene.\n\t\t// See: https://github.com/mrdoob/three.js/issues/18342#issuecomment-578981172\n\t\tconst scene = new Group();\n\t\tif ( sceneDef.name ) scene.name = parser.createUniqueName( sceneDef.name );\n\n\t\tassignExtrasToUserData( scene, sceneDef );\n\n\t\tif ( sceneDef.extensions ) addUnknownExtensionsToUserData( extensions, scene, sceneDef );\n\n\t\tconst nodeIds = sceneDef.nodes || [];\n\n\t\tconst pending = [];\n\n\t\tfor ( let i = 0, il = nodeIds.length; i < il; i ++ ) {\n\n\t\t\tpending.push( buildNodeHierarchy( nodeIds[ i ], scene, json, parser ) );\n\n\t\t}\n\n\t\treturn Promise.all( pending ).then( function () {\n\n\t\t\t// Removes dangling associations, associations that reference a node that\n\t\t\t// didn't make it into the scene.\n\t\t\tconst reduceAssociations = ( node ) => {\n\n\t\t\t\tconst reducedAssociations = new Map();\n\n\t\t\t\tfor ( const [ key, value ] of parser.associations ) {\n\n\t\t\t\t\tif ( key instanceof Material || key instanceof Texture ) {\n\n\t\t\t\t\t\treducedAssociations.set( key, value );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tnode.traverse( ( node ) => {\n\n\t\t\t\t\tconst mappings = parser.associations.get( node );\n\n\t\t\t\t\tif ( mappings != null ) {\n\n\t\t\t\t\t\treducedAssociations.set( node, mappings );\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t\treturn reducedAssociations;\n\n\t\t\t};\n\n\t\t\tparser.associations = reduceAssociations( scene );\n\n\t\t\treturn scene;\n\n\t\t} );\n\n\t}\n\n}\n\nfunction buildNodeHierarchy( nodeId, parentObject, json, parser ) {\n\n\tconst nodeDef = json.nodes[ nodeId ];\n\n\treturn parser.getDependency( 'node', nodeId ).then( function ( node ) {\n\n\t\tif ( nodeDef.skin === undefined ) return node;\n\n\t\t// build skeleton here as well\n\n\t\tlet skinEntry;\n\n\t\treturn parser.getDependency( 'skin', nodeDef.skin ).then( function ( skin ) {\n\n\t\t\tskinEntry = skin;\n\n\t\t\tconst pendingJoints = [];\n\n\t\t\tfor ( let i = 0, il = skinEntry.joints.length; i < il; i ++ ) {\n\n\t\t\t\tpendingJoints.push( parser.getDependency( 'node', skinEntry.joints[ i ] ) );\n\n\t\t\t}\n\n\t\t\treturn Promise.all( pendingJoints );\n\n\t\t} ).then( function ( jointNodes ) {\n\n\t\t\tnode.traverse( function ( mesh ) {\n\n\t\t\t\tif ( ! mesh.isMesh ) return;\n\n\t\t\t\tconst bones = [];\n\t\t\t\tconst boneInverses = [];\n\n\t\t\t\tfor ( let j = 0, jl = jointNodes.length; j < jl; j ++ ) {\n\n\t\t\t\t\tconst jointNode = jointNodes[ j ];\n\n\t\t\t\t\tif ( jointNode ) {\n\n\t\t\t\t\t\tbones.push( jointNode );\n\n\t\t\t\t\t\tconst mat = new Matrix4();\n\n\t\t\t\t\t\tif ( skinEntry.inverseBindMatrices !== undefined ) {\n\n\t\t\t\t\t\t\tmat.fromArray( skinEntry.inverseBindMatrices.array, j * 16 );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tboneInverses.push( mat );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Joint \"%s\" could not be found.', skinEntry.joints[ j ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tmesh.bind( new Skeleton( bones, boneInverses ), mesh.matrixWorld );\n\n\t\t\t} );\n\n\t\t\treturn node;\n\n\t\t} );\n\n\t} ).then( function ( node ) {\n\n\t\t// build node hierachy\n\n\t\tparentObject.add( node );\n\n\t\tconst pending = [];\n\n\t\tif ( nodeDef.children ) {\n\n\t\t\tconst children = nodeDef.children;\n\n\t\t\tfor ( let i = 0, il = children.length; i < il; i ++ ) {\n\n\t\t\t\tconst child = children[ i ];\n\t\t\t\tpending.push( buildNodeHierarchy( child, node, json, parser ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn Promise.all( pending );\n\n\t} );\n\n}\n\n/**\n * @param {BufferGeometry} geometry\n * @param {GLTF.Primitive} primitiveDef\n * @param {GLTFParser} parser\n */\nfunction computeBounds( geometry, primitiveDef, parser ) {\n\n\tconst attributes = primitiveDef.attributes;\n\n\tconst box = new Box3();\n\n\tif ( attributes.POSITION !== undefined ) {\n\n\t\tconst accessor = parser.json.accessors[ attributes.POSITION ];\n\n\t\tconst min = accessor.min;\n\t\tconst max = accessor.max;\n\n\t\t// glTF requires 'min' and 'max', but VRM (which extends glTF) currently ignores that requirement.\n\n\t\tif ( min !== undefined && max !== undefined ) {\n\n\t\t\tbox.set(\n\t\t\t\tnew Vector3( min[ 0 ], min[ 1 ], min[ 2 ] ),\n\t\t\t\tnew Vector3( max[ 0 ], max[ 1 ], max[ 2 ] )\n\t\t\t);\n\n\t\t\tif ( accessor.normalized ) {\n\n\t\t\t\tconst boxScale = getNormalizedComponentScale( WEBGL_COMPONENT_TYPES[ accessor.componentType ] );\n\t\t\t\tbox.min.multiplyScalar( boxScale );\n\t\t\t\tbox.max.multiplyScalar( boxScale );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.GLTFLoader: Missing min/max properties for accessor POSITION.' );\n\n\t\t\treturn;\n\n\t\t}\n\n\t} else {\n\n\t\treturn;\n\n\t}\n\n\tconst targets = primitiveDef.targets;\n\n\tif ( targets !== undefined ) {\n\n\t\tconst maxDisplacement = new Vector3();\n\t\tconst vector = new Vector3();\n\n\t\tfor ( let i = 0, il = targets.length; i < il; i ++ ) {\n\n\t\t\tconst target = targets[ i ];\n\n\t\t\tif ( target.POSITION !== undefined ) {\n\n\t\t\t\tconst accessor = parser.json.accessors[ target.POSITION ];\n\t\t\t\tconst min = accessor.min;\n\t\t\t\tconst max = accessor.max;\n\n\t\t\t\t// glTF requires 'min' and 'max', but VRM (which extends glTF) currently ignores that requirement.\n\n\t\t\t\tif ( min !== undefined && max !== undefined ) {\n\n\t\t\t\t\t// we need to get max of absolute components because target weight is [-1,1]\n\t\t\t\t\tvector.setX( Math.max( Math.abs( min[ 0 ] ), Math.abs( max[ 0 ] ) ) );\n\t\t\t\t\tvector.setY( Math.max( Math.abs( min[ 1 ] ), Math.abs( max[ 1 ] ) ) );\n\t\t\t\t\tvector.setZ( Math.max( Math.abs( min[ 2 ] ), Math.abs( max[ 2 ] ) ) );\n\n\n\t\t\t\t\tif ( accessor.normalized ) {\n\n\t\t\t\t\t\tconst boxScale = getNormalizedComponentScale( WEBGL_COMPONENT_TYPES[ accessor.componentType ] );\n\t\t\t\t\t\tvector.multiplyScalar( boxScale );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// Note: this assumes that the sum of all weights is at most 1. This isn't quite correct - it's more conservative\n\t\t\t\t\t// to assume that each target can have a max weight of 1. However, for some use cases - notably, when morph targets\n\t\t\t\t\t// are used to implement key-frame animations and as such only two are active at a time - this results in very large\n\t\t\t\t\t// boxes. So for now we make a box that's sometimes a touch too small but is hopefully mostly of reasonable size.\n\t\t\t\t\tmaxDisplacement.max( vector );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Missing min/max properties for accessor POSITION.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// As per comment above this box isn't conservative, but has a reasonable size for a very large number of morph targets.\n\t\tbox.expandByVector( maxDisplacement );\n\n\t}\n\n\tgeometry.boundingBox = box;\n\n\tconst sphere = new Sphere();\n\n\tbox.getCenter( sphere.center );\n\tsphere.radius = box.min.distanceTo( box.max ) / 2;\n\n\tgeometry.boundingSphere = sphere;\n\n}\n\n/**\n * @param {BufferGeometry} geometry\n * @param {GLTF.Primitive} primitiveDef\n * @param {GLTFParser} parser\n * @return {Promise<BufferGeometry>}\n */\nfunction addPrimitiveAttributes( geometry, primitiveDef, parser ) {\n\n\tconst attributes = primitiveDef.attributes;\n\n\tconst pending = [];\n\n\tfunction assignAttributeAccessor( accessorIndex, attributeName ) {\n\n\t\treturn parser.getDependency( 'accessor', accessorIndex )\n\t\t\t.then( function ( accessor ) {\n\n\t\t\t\tgeometry.setAttribute( attributeName, accessor );\n\n\t\t\t} );\n\n\t}\n\n\tfor ( const gltfAttributeName in attributes ) {\n\n\t\tconst threeAttributeName = ATTRIBUTES[ gltfAttributeName ] || gltfAttributeName.toLowerCase();\n\n\t\t// Skip attributes already provided by e.g. Draco extension.\n\t\tif ( threeAttributeName in geometry.attributes ) continue;\n\n\t\tpending.push( assignAttributeAccessor( attributes[ gltfAttributeName ], threeAttributeName ) );\n\n\t}\n\n\tif ( primitiveDef.indices !== undefined && ! geometry.index ) {\n\n\t\tconst accessor = parser.getDependency( 'accessor', primitiveDef.indices ).then( function ( accessor ) {\n\n\t\t\tgeometry.setIndex( accessor );\n\n\t\t} );\n\n\t\tpending.push( accessor );\n\n\t}\n\n\tassignExtrasToUserData( geometry, primitiveDef );\n\n\tcomputeBounds( geometry, primitiveDef, parser );\n\n\treturn Promise.all( pending ).then( function () {\n\n\t\treturn primitiveDef.targets !== undefined\n\t\t\t? addMorphTargets( geometry, primitiveDef.targets, parser )\n\t\t\t: geometry;\n\n\t} );\n\n}\n\n/**\n * @param {BufferGeometry} geometry\n * @param {Number} drawMode\n * @return {BufferGeometry}\n */\nfunction toTrianglesDrawMode( geometry, drawMode ) {\n\n\tlet index = geometry.getIndex();\n\n\t// generate index if not present\n\n\tif ( index === null ) {\n\n\t\tconst indices = [];\n\n\t\tconst position = geometry.getAttribute( 'position' );\n\n\t\tif ( position !== undefined ) {\n\n\t\t\tfor ( let i = 0; i < position.count; i ++ ) {\n\n\t\t\t\tindices.push( i );\n\n\t\t\t}\n\n\t\t\tgeometry.setIndex( indices );\n\t\t\tindex = geometry.getIndex();\n\n\t\t} else {\n\n\t\t\tconsole.error( 'THREE.GLTFLoader.toTrianglesDrawMode(): Undefined position attribute. Processing not possible.' );\n\t\t\treturn geometry;\n\n\t\t}\n\n\t}\n\n\t//\n\n\tconst numberOfTriangles = index.count - 2;\n\tconst newIndices = [];\n\n\tif ( drawMode === TriangleFanDrawMode ) {\n\n\t\t// gl.TRIANGLE_FAN\n\n\t\tfor ( let i = 1; i <= numberOfTriangles; i ++ ) {\n\n\t\t\tnewIndices.push( index.getX( 0 ) );\n\t\t\tnewIndices.push( index.getX( i ) );\n\t\t\tnewIndices.push( index.getX( i + 1 ) );\n\n\t\t}\n\n\t} else {\n\n\t\t// gl.TRIANGLE_STRIP\n\n\t\tfor ( let i = 0; i < numberOfTriangles; i ++ ) {\n\n\t\t\tif ( i % 2 === 0 ) {\n\n\t\t\t\tnewIndices.push( index.getX( i ) );\n\t\t\t\tnewIndices.push( index.getX( i + 1 ) );\n\t\t\t\tnewIndices.push( index.getX( i + 2 ) );\n\n\n\t\t\t} else {\n\n\t\t\t\tnewIndices.push( index.getX( i + 2 ) );\n\t\t\t\tnewIndices.push( index.getX( i + 1 ) );\n\t\t\t\tnewIndices.push( index.getX( i ) );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tif ( ( newIndices.length / 3 ) !== numberOfTriangles ) {\n\n\t\tconsole.error( 'THREE.GLTFLoader.toTrianglesDrawMode(): Unable to generate correct amount of triangles.' );\n\n\t}\n\n\t// build final geometry\n\n\tconst newGeometry = geometry.clone();\n\tnewGeometry.setIndex( newIndices );\n\n\treturn newGeometry;\n\n}\n\nexport { GLTFLoader };\n","import {\n\tBufferAttribute,\n\tBufferGeometry,\n\tFileLoader,\n\tLoader\n} from 'three';\n\nconst _taskCache = new WeakMap();\n\nclass DRACOLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t\tthis.decoderPath = '';\n\t\tthis.decoderConfig = {};\n\t\tthis.decoderBinary = null;\n\t\tthis.decoderPending = null;\n\n\t\tthis.workerLimit = 4;\n\t\tthis.workerPool = [];\n\t\tthis.workerNextTaskID = 1;\n\t\tthis.workerSourceURL = '';\n\n\t\tthis.defaultAttributeIDs = {\n\t\t\tposition: 'POSITION',\n\t\t\tnormal: 'NORMAL',\n\t\t\tcolor: 'COLOR',\n\t\t\tuv: 'TEX_COORD'\n\t\t};\n\t\tthis.defaultAttributeTypes = {\n\t\t\tposition: 'Float32Array',\n\t\t\tnormal: 'Float32Array',\n\t\t\tcolor: 'Float32Array',\n\t\t\tuv: 'Float32Array'\n\t\t};\n\n\t}\n\n\tsetDecoderPath( path ) {\n\n\t\tthis.decoderPath = path;\n\n\t\treturn this;\n\n\t}\n\n\tsetDecoderConfig( config ) {\n\n\t\tthis.decoderConfig = config;\n\n\t\treturn this;\n\n\t}\n\n\tsetWorkerLimit( workerLimit ) {\n\n\t\tthis.workerLimit = workerLimit;\n\n\t\treturn this;\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst loader = new FileLoader( this.manager );\n\n\t\tloader.setPath( this.path );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\n\t\tloader.load( url, ( buffer ) => {\n\n\t\t\tconst taskConfig = {\n\t\t\t\tattributeIDs: this.defaultAttributeIDs,\n\t\t\t\tattributeTypes: this.defaultAttributeTypes,\n\t\t\t\tuseUniqueIDs: false\n\t\t\t};\n\n\t\t\tthis.decodeGeometry( buffer, taskConfig )\n\t\t\t\t.then( onLoad )\n\t\t\t\t.catch( onError );\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\t/** @deprecated Kept for backward-compatibility with previous DRACOLoader versions. */\n\tdecodeDracoFile( buffer, callback, attributeIDs, attributeTypes ) {\n\n\t\tconst taskConfig = {\n\t\t\tattributeIDs: attributeIDs || this.defaultAttributeIDs,\n\t\t\tattributeTypes: attributeTypes || this.defaultAttributeTypes,\n\t\t\tuseUniqueIDs: !! attributeIDs\n\t\t};\n\n\t\tthis.decodeGeometry( buffer, taskConfig ).then( callback );\n\n\t}\n\n\tdecodeGeometry( buffer, taskConfig ) {\n\n\t\t// TODO: For backward-compatibility, support 'attributeTypes' objects containing\n\t\t// references (rather than names) to typed array constructors. These must be\n\t\t// serialized before sending them to the worker.\n\t\tfor ( const attribute in taskConfig.attributeTypes ) {\n\n\t\t\tconst type = taskConfig.attributeTypes[ attribute ];\n\n\t\t\tif ( type.BYTES_PER_ELEMENT !== undefined ) {\n\n\t\t\t\ttaskConfig.attributeTypes[ attribute ] = type.name;\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tconst taskKey = JSON.stringify( taskConfig );\n\n\t\t// Check for an existing task using this buffer. A transferred buffer cannot be transferred\n\t\t// again from this thread.\n\t\tif ( _taskCache.has( buffer ) ) {\n\n\t\t\tconst cachedTask = _taskCache.get( buffer );\n\n\t\t\tif ( cachedTask.key === taskKey ) {\n\n\t\t\t\treturn cachedTask.promise;\n\n\t\t\t} else if ( buffer.byteLength === 0 ) {\n\n\t\t\t\t// Technically, it would be possible to wait for the previous task to complete,\n\t\t\t\t// transfer the buffer back, and decode again with the second configuration. That\n\t\t\t\t// is complex, and I don't know of any reason to decode a Draco buffer twice in\n\t\t\t\t// different ways, so this is left unimplemented.\n\t\t\t\tthrow new Error(\n\n\t\t\t\t\t'THREE.DRACOLoader: Unable to re-decode a buffer with different ' +\n\t\t\t\t\t'settings. Buffer has already been transferred.'\n\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tlet worker;\n\t\tconst taskID = this.workerNextTaskID ++;\n\t\tconst taskCost = buffer.byteLength;\n\n\t\t// Obtain a worker and assign a task, and construct a geometry instance\n\t\t// when the task completes.\n\t\tconst geometryPending = this._getWorker( taskID, taskCost )\n\t\t\t.then( ( _worker ) => {\n\n\t\t\t\tworker = _worker;\n\n\t\t\t\treturn new Promise( ( resolve, reject ) => {\n\n\t\t\t\t\tworker._callbacks[ taskID ] = { resolve, reject };\n\n\t\t\t\t\tworker.postMessage( { type: 'decode', id: taskID, taskConfig, buffer }, [ buffer ] );\n\n\t\t\t\t\t// this.debug();\n\n\t\t\t\t} );\n\n\t\t\t} )\n\t\t\t.then( ( message ) => this._createGeometry( message.geometry ) );\n\n\t\t// Remove task from the task list.\n\t\t// Note: replaced '.finally()' with '.catch().then()' block - iOS 11 support (#19416)\n\t\tgeometryPending\n\t\t\t.catch( () => true )\n\t\t\t.then( () => {\n\n\t\t\t\tif ( worker && taskID ) {\n\n\t\t\t\t\tthis._releaseTask( worker, taskID );\n\n\t\t\t\t\t// this.debug();\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t// Cache the task result.\n\t\t_taskCache.set( buffer, {\n\n\t\t\tkey: taskKey,\n\t\t\tpromise: geometryPending\n\n\t\t} );\n\n\t\treturn geometryPending;\n\n\t}\n\n\t_createGeometry( geometryData ) {\n\n\t\tconst geometry = new BufferGeometry();\n\n\t\tif ( geometryData.index ) {\n\n\t\t\tgeometry.setIndex( new BufferAttribute( geometryData.index.array, 1 ) );\n\n\t\t}\n\n\t\tfor ( let i = 0; i < geometryData.attributes.length; i ++ ) {\n\n\t\t\tconst attribute = geometryData.attributes[ i ];\n\t\t\tconst name = attribute.name;\n\t\t\tconst array = attribute.array;\n\t\t\tconst itemSize = attribute.itemSize;\n\n\t\t\tgeometry.setAttribute( name, new BufferAttribute( array, itemSize ) );\n\n\t\t}\n\n\t\treturn geometry;\n\n\t}\n\n\t_loadLibrary( url, responseType ) {\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.decoderPath );\n\t\tloader.setResponseType( responseType );\n\t\tloader.setWithCredentials( this.withCredentials );\n\n\t\treturn new Promise( ( resolve, reject ) => {\n\n\t\t\tloader.load( url, resolve, undefined, reject );\n\n\t\t} );\n\n\t}\n\n\tpreload() {\n\n\t\tthis._initDecoder();\n\n\t\treturn this;\n\n\t}\n\n\t_initDecoder() {\n\n\t\tif ( this.decoderPending ) return this.decoderPending;\n\n\t\tconst useJS = typeof WebAssembly !== 'object' || this.decoderConfig.type === 'js';\n\t\tconst librariesPending = [];\n\n\t\tif ( useJS ) {\n\n\t\t\tlibrariesPending.push( this._loadLibrary( 'draco_decoder.js', 'text' ) );\n\n\t\t} else {\n\n\t\t\tlibrariesPending.push( this._loadLibrary( 'draco_wasm_wrapper.js', 'text' ) );\n\t\t\tlibrariesPending.push( this._loadLibrary( 'draco_decoder.wasm', 'arraybuffer' ) );\n\n\t\t}\n\n\t\tthis.decoderPending = Promise.all( librariesPending )\n\t\t\t.then( ( libraries ) => {\n\n\t\t\t\tconst jsContent = libraries[ 0 ];\n\n\t\t\t\tif ( ! useJS ) {\n\n\t\t\t\t\tthis.decoderConfig.wasmBinary = libraries[ 1 ];\n\n\t\t\t\t}\n\n\t\t\t\tconst fn = DRACOWorker.toString();\n\n\t\t\t\tconst body = [\n\t\t\t\t\t'/* draco decoder */',\n\t\t\t\t\tjsContent,\n\t\t\t\t\t'',\n\t\t\t\t\t'/* worker */',\n\t\t\t\t\tfn.substring( fn.indexOf( '{' ) + 1, fn.lastIndexOf( '}' ) )\n\t\t\t\t].join( '\\n' );\n\n\t\t\t\tthis.workerSourceURL = URL.createObjectURL( new Blob( [ body ] ) );\n\n\t\t\t} );\n\n\t\treturn this.decoderPending;\n\n\t}\n\n\t_getWorker( taskID, taskCost ) {\n\n\t\treturn this._initDecoder().then( () => {\n\n\t\t\tif ( this.workerPool.length < this.workerLimit ) {\n\n\t\t\t\tconst worker = new Worker( this.workerSourceURL );\n\n\t\t\t\tworker._callbacks = {};\n\t\t\t\tworker._taskCosts = {};\n\t\t\t\tworker._taskLoad = 0;\n\n\t\t\t\tworker.postMessage( { type: 'init', decoderConfig: this.decoderConfig } );\n\n\t\t\t\tworker.onmessage = function ( e ) {\n\n\t\t\t\t\tconst message = e.data;\n\n\t\t\t\t\tswitch ( message.type ) {\n\n\t\t\t\t\t\tcase 'decode':\n\t\t\t\t\t\t\tworker._callbacks[ message.id ].resolve( message );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase 'error':\n\t\t\t\t\t\t\tworker._callbacks[ message.id ].reject( message );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tconsole.error( 'THREE.DRACOLoader: Unexpected message, \"' + message.type + '\"' );\n\n\t\t\t\t\t}\n\n\t\t\t\t};\n\n\t\t\t\tthis.workerPool.push( worker );\n\n\t\t\t} else {\n\n\t\t\t\tthis.workerPool.sort( function ( a, b ) {\n\n\t\t\t\t\treturn a._taskLoad > b._taskLoad ? - 1 : 1;\n\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t\tconst worker = this.workerPool[ this.workerPool.length - 1 ];\n\t\t\tworker._taskCosts[ taskID ] = taskCost;\n\t\t\tworker._taskLoad += taskCost;\n\t\t\treturn worker;\n\n\t\t} );\n\n\t}\n\n\t_releaseTask( worker, taskID ) {\n\n\t\tworker._taskLoad -= worker._taskCosts[ taskID ];\n\t\tdelete worker._callbacks[ taskID ];\n\t\tdelete worker._taskCosts[ taskID ];\n\n\t}\n\n\tdebug() {\n\n\t\tconsole.log( 'Task load: ', this.workerPool.map( ( worker ) => worker._taskLoad ) );\n\n\t}\n\n\tdispose() {\n\n\t\tfor ( let i = 0; i < this.workerPool.length; ++ i ) {\n\n\t\t\tthis.workerPool[ i ].terminate();\n\n\t\t}\n\n\t\tthis.workerPool.length = 0;\n\n\t\treturn this;\n\n\t}\n\n}\n\n/* WEB WORKER */\n\nfunction DRACOWorker() {\n\n\tlet decoderConfig;\n\tlet decoderPending;\n\n\tonmessage = function ( e ) {\n\n\t\tconst message = e.data;\n\n\t\tswitch ( message.type ) {\n\n\t\t\tcase 'init':\n\t\t\t\tdecoderConfig = message.decoderConfig;\n\t\t\t\tdecoderPending = new Promise( function ( resolve/*, reject*/ ) {\n\n\t\t\t\t\tdecoderConfig.onModuleLoaded = function ( draco ) {\n\n\t\t\t\t\t\t// Module is Promise-like. Wrap before resolving to avoid loop.\n\t\t\t\t\t\tresolve( { draco: draco } );\n\n\t\t\t\t\t};\n\n\t\t\t\t\tDracoDecoderModule( decoderConfig ); // eslint-disable-line no-undef\n\n\t\t\t\t} );\n\t\t\t\tbreak;\n\n\t\t\tcase 'decode':\n\t\t\t\tconst buffer = message.buffer;\n\t\t\t\tconst taskConfig = message.taskConfig;\n\t\t\t\tdecoderPending.then( ( module ) => {\n\n\t\t\t\t\tconst draco = module.draco;\n\t\t\t\t\tconst decoder = new draco.Decoder();\n\t\t\t\t\tconst decoderBuffer = new draco.DecoderBuffer();\n\t\t\t\t\tdecoderBuffer.Init( new Int8Array( buffer ), buffer.byteLength );\n\n\t\t\t\t\ttry {\n\n\t\t\t\t\t\tconst geometry = decodeGeometry( draco, decoder, decoderBuffer, taskConfig );\n\n\t\t\t\t\t\tconst buffers = geometry.attributes.map( ( attr ) => attr.array.buffer );\n\n\t\t\t\t\t\tif ( geometry.index ) buffers.push( geometry.index.array.buffer );\n\n\t\t\t\t\t\tself.postMessage( { type: 'decode', id: message.id, geometry }, buffers );\n\n\t\t\t\t\t} catch ( error ) {\n\n\t\t\t\t\t\tconsole.error( error );\n\n\t\t\t\t\t\tself.postMessage( { type: 'error', id: message.id, error: error.message } );\n\n\t\t\t\t\t} finally {\n\n\t\t\t\t\t\tdraco.destroy( decoderBuffer );\n\t\t\t\t\t\tdraco.destroy( decoder );\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\t\t\t\tbreak;\n\n\t\t}\n\n\t};\n\n\tfunction decodeGeometry( draco, decoder, decoderBuffer, taskConfig ) {\n\n\t\tconst attributeIDs = taskConfig.attributeIDs;\n\t\tconst attributeTypes = taskConfig.attributeTypes;\n\n\t\tlet dracoGeometry;\n\t\tlet decodingStatus;\n\n\t\tconst geometryType = decoder.GetEncodedGeometryType( decoderBuffer );\n\n\t\tif ( geometryType === draco.TRIANGULAR_MESH ) {\n\n\t\t\tdracoGeometry = new draco.Mesh();\n\t\t\tdecodingStatus = decoder.DecodeBufferToMesh( decoderBuffer, dracoGeometry );\n\n\t\t} else if ( geometryType === draco.POINT_CLOUD ) {\n\n\t\t\tdracoGeometry = new draco.PointCloud();\n\t\t\tdecodingStatus = decoder.DecodeBufferToPointCloud( decoderBuffer, dracoGeometry );\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'THREE.DRACOLoader: Unexpected geometry type.' );\n\n\t\t}\n\n\t\tif ( ! decodingStatus.ok() || dracoGeometry.ptr === 0 ) {\n\n\t\t\tthrow new Error( 'THREE.DRACOLoader: Decoding failed: ' + decodingStatus.error_msg() );\n\n\t\t}\n\n\t\tconst geometry = { index: null, attributes: [] };\n\n\t\t// Gather all vertex attributes.\n\t\tfor ( const attributeName in attributeIDs ) {\n\n\t\t\tconst attributeType = self[ attributeTypes[ attributeName ] ];\n\n\t\t\tlet attribute;\n\t\t\tlet attributeID;\n\n\t\t\t// A Draco file may be created with default vertex attributes, whose attribute IDs\n\t\t\t// are mapped 1:1 from their semantic name (POSITION, NORMAL, ...). Alternatively,\n\t\t\t// a Draco file may contain a custom set of attributes, identified by known unique\n\t\t\t// IDs. glTF files always do the latter, and `.drc` files typically do the former.\n\t\t\tif ( taskConfig.useUniqueIDs ) {\n\n\t\t\t\tattributeID = attributeIDs[ attributeName ];\n\t\t\t\tattribute = decoder.GetAttributeByUniqueId( dracoGeometry, attributeID );\n\n\t\t\t} else {\n\n\t\t\t\tattributeID = decoder.GetAttributeId( dracoGeometry, draco[ attributeIDs[ attributeName ] ] );\n\n\t\t\t\tif ( attributeID === - 1 ) continue;\n\n\t\t\t\tattribute = decoder.GetAttribute( dracoGeometry, attributeID );\n\n\t\t\t}\n\n\t\t\tgeometry.attributes.push( decodeAttribute( draco, decoder, dracoGeometry, attributeName, attributeType, attribute ) );\n\n\t\t}\n\n\t\t// Add index.\n\t\tif ( geometryType === draco.TRIANGULAR_MESH ) {\n\n\t\t\tgeometry.index = decodeIndex( draco, decoder, dracoGeometry );\n\n\t\t}\n\n\t\tdraco.destroy( dracoGeometry );\n\n\t\treturn geometry;\n\n\t}\n\n\tfunction decodeIndex( draco, decoder, dracoGeometry ) {\n\n\t\tconst numFaces = dracoGeometry.num_faces();\n\t\tconst numIndices = numFaces * 3;\n\t\tconst byteLength = numIndices * 4;\n\n\t\tconst ptr = draco._malloc( byteLength );\n\t\tdecoder.GetTrianglesUInt32Array( dracoGeometry, byteLength, ptr );\n\t\tconst index = new Uint32Array( draco.HEAPF32.buffer, ptr, numIndices ).slice();\n\t\tdraco._free( ptr );\n\n\t\treturn { array: index, itemSize: 1 };\n\n\t}\n\n\tfunction decodeAttribute( draco, decoder, dracoGeometry, attributeName, attributeType, attribute ) {\n\n\t\tconst numComponents = attribute.num_components();\n\t\tconst numPoints = dracoGeometry.num_points();\n\t\tconst numValues = numPoints * numComponents;\n\t\tconst byteLength = numValues * attributeType.BYTES_PER_ELEMENT;\n\t\tconst dataType = getDracoDataType( draco, attributeType );\n\n\t\tconst ptr = draco._malloc( byteLength );\n\t\tdecoder.GetAttributeDataArrayForAllPoints( dracoGeometry, attribute, dataType, byteLength, ptr );\n\t\tconst array = new attributeType( draco.HEAPF32.buffer, ptr, numValues ).slice();\n\t\tdraco._free( ptr );\n\n\t\treturn {\n\t\t\tname: attributeName,\n\t\t\tarray: array,\n\t\t\titemSize: numComponents\n\t\t};\n\n\t}\n\n\tfunction getDracoDataType( draco, attributeType ) {\n\n\t\tswitch ( attributeType ) {\n\n\t\t\tcase Float32Array: return draco.DT_FLOAT32;\n\t\t\tcase Int8Array: return draco.DT_INT8;\n\t\t\tcase Int16Array: return draco.DT_INT16;\n\t\t\tcase Int32Array: return draco.DT_INT32;\n\t\t\tcase Uint8Array: return draco.DT_UINT8;\n\t\t\tcase Uint16Array: return draco.DT_UINT16;\n\t\t\tcase Uint32Array: return draco.DT_UINT32;\n\n\t\t}\n\n\t}\n\n}\n\nexport { DRACOLoader };\n","import {\n\tEventDispatcher,\n\tMOUSE,\n\tQuaternion,\n\tSpherical,\n\tTOUCH,\n\tVector2,\n\tVector3\n} from 'three';\n\n// This set of controls performs orbiting, dollying (zooming), and panning.\n// Unlike TrackballControls, it maintains the \"up\" direction object.up (+Y by default).\n//\n//    Orbit - left mouse / touch: one-finger move\n//    Zoom - middle mouse, or mousewheel / touch: two-finger spread or squish\n//    Pan - right mouse, or left mouse + ctrl/meta/shiftKey, or arrow keys / touch: two-finger move\n\nconst _changeEvent = { type: 'change' };\nconst _startEvent = { type: 'start' };\nconst _endEvent = { type: 'end' };\n\nclass OrbitControls extends EventDispatcher {\n\n\tconstructor( object, domElement ) {\n\n\t\tsuper();\n\n\t\tif ( domElement === undefined ) console.warn( 'THREE.OrbitControls: The second parameter \"domElement\" is now mandatory.' );\n\t\tif ( domElement === document ) console.error( 'THREE.OrbitControls: \"document\" should not be used as the target \"domElement\". Please use \"renderer.domElement\" instead.' );\n\n\t\tthis.object = object;\n\t\tthis.domElement = domElement;\n\t\tthis.domElement.style.touchAction = 'none'; // disable touch scroll\n\n\t\t// Set to false to disable this control\n\t\tthis.enabled = true;\n\n\t\t// \"target\" sets the location of focus, where the object orbits around\n\t\tthis.target = new Vector3();\n\n\t\t// How far you can dolly in and out ( PerspectiveCamera only )\n\t\tthis.minDistance = 0;\n\t\tthis.maxDistance = Infinity;\n\n\t\t// How far you can zoom in and out ( OrthographicCamera only )\n\t\tthis.minZoom = 0;\n\t\tthis.maxZoom = Infinity;\n\n\t\t// How far you can orbit vertically, upper and lower limits.\n\t\t// Range is 0 to Math.PI radians.\n\t\tthis.minPolarAngle = 0; // radians\n\t\tthis.maxPolarAngle = Math.PI; // radians\n\n\t\t// How far you can orbit horizontally, upper and lower limits.\n\t\t// If set, the interval [ min, max ] must be a sub-interval of [ - 2 PI, 2 PI ], with ( max - min < 2 PI )\n\t\tthis.minAzimuthAngle = - Infinity; // radians\n\t\tthis.maxAzimuthAngle = Infinity; // radians\n\n\t\t// Set to true to enable damping (inertia)\n\t\t// If damping is enabled, you must call controls.update() in your animation loop\n\t\tthis.enableDamping = false;\n\t\tthis.dampingFactor = 0.05;\n\n\t\t// This option actually enables dollying in and out; left as \"zoom\" for backwards compatibility.\n\t\t// Set to false to disable zooming\n\t\tthis.enableZoom = true;\n\t\tthis.zoomSpeed = 1.0;\n\n\t\t// Set to false to disable rotating\n\t\tthis.enableRotate = true;\n\t\tthis.rotateSpeed = 1.0;\n\n\t\t// Set to false to disable panning\n\t\tthis.enablePan = true;\n\t\tthis.panSpeed = 1.0;\n\t\tthis.screenSpacePanning = true; // if false, pan orthogonal to world-space direction camera.up\n\t\tthis.keyPanSpeed = 7.0;\t// pixels moved per arrow key push\n\n\t\t// Set to true to automatically rotate around the target\n\t\t// If auto-rotate is enabled, you must call controls.update() in your animation loop\n\t\tthis.autoRotate = false;\n\t\tthis.autoRotateSpeed = 2.0; // 30 seconds per orbit when fps is 60\n\n\t\t// The four arrow keys\n\t\tthis.keys = { LEFT: 'ArrowLeft', UP: 'ArrowUp', RIGHT: 'ArrowRight', BOTTOM: 'ArrowDown' };\n\n\t\t// Mouse buttons\n\t\tthis.mouseButtons = { LEFT: MOUSE.ROTATE, MIDDLE: MOUSE.DOLLY, RIGHT: MOUSE.PAN };\n\n\t\t// Touch fingers\n\t\tthis.touches = { ONE: TOUCH.ROTATE, TWO: TOUCH.DOLLY_PAN };\n\n\t\t// for reset\n\t\tthis.target0 = this.target.clone();\n\t\tthis.position0 = this.object.position.clone();\n\t\tthis.zoom0 = this.object.zoom;\n\n\t\t// the target DOM element for key events\n\t\tthis._domElementKeyEvents = null;\n\n\t\t//\n\t\t// public methods\n\t\t//\n\n\t\tthis.getPolarAngle = function () {\n\n\t\t\treturn spherical.phi;\n\n\t\t};\n\n\t\tthis.getAzimuthalAngle = function () {\n\n\t\t\treturn spherical.theta;\n\n\t\t};\n\n\t\tthis.getDistance = function () {\n\n\t\t\treturn this.object.position.distanceTo( this.target );\n\n\t\t};\n\n\t\tthis.listenToKeyEvents = function ( domElement ) {\n\n\t\t\tdomElement.addEventListener( 'keydown', onKeyDown );\n\t\t\tthis._domElementKeyEvents = domElement;\n\n\t\t};\n\n\t\tthis.saveState = function () {\n\n\t\t\tscope.target0.copy( scope.target );\n\t\t\tscope.position0.copy( scope.object.position );\n\t\t\tscope.zoom0 = scope.object.zoom;\n\n\t\t};\n\n\t\tthis.reset = function () {\n\n\t\t\tscope.target.copy( scope.target0 );\n\t\t\tscope.object.position.copy( scope.position0 );\n\t\t\tscope.object.zoom = scope.zoom0;\n\n\t\t\tscope.object.updateProjectionMatrix();\n\t\t\tscope.dispatchEvent( _changeEvent );\n\n\t\t\tscope.update();\n\n\t\t\tstate = STATE.NONE;\n\n\t\t};\n\n\t\t// this method is exposed, but perhaps it would be better if we can make it private...\n\t\tthis.update = function () {\n\n\t\t\tconst offset = new Vector3();\n\n\t\t\t// so camera.up is the orbit axis\n\t\t\tconst quat = new Quaternion().setFromUnitVectors( object.up, new Vector3( 0, 1, 0 ) );\n\t\t\tconst quatInverse = quat.clone().invert();\n\n\t\t\tconst lastPosition = new Vector3();\n\t\t\tconst lastQuaternion = new Quaternion();\n\n\t\t\tconst twoPI = 2 * Math.PI;\n\n\t\t\treturn function update() {\n\n\t\t\t\tconst position = scope.object.position;\n\n\t\t\t\toffset.copy( position ).sub( scope.target );\n\n\t\t\t\t// rotate offset to \"y-axis-is-up\" space\n\t\t\t\toffset.applyQuaternion( quat );\n\n\t\t\t\t// angle from z-axis around y-axis\n\t\t\t\tspherical.setFromVector3( offset );\n\n\t\t\t\tif ( scope.autoRotate && state === STATE.NONE ) {\n\n\t\t\t\t\trotateLeft( getAutoRotationAngle() );\n\n\t\t\t\t}\n\n\t\t\t\tif ( scope.enableDamping ) {\n\n\t\t\t\t\tspherical.theta += sphericalDelta.theta * scope.dampingFactor;\n\t\t\t\t\tspherical.phi += sphericalDelta.phi * scope.dampingFactor;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tspherical.theta += sphericalDelta.theta;\n\t\t\t\t\tspherical.phi += sphericalDelta.phi;\n\n\t\t\t\t}\n\n\t\t\t\t// restrict theta to be between desired limits\n\n\t\t\t\tlet min = scope.minAzimuthAngle;\n\t\t\t\tlet max = scope.maxAzimuthAngle;\n\n\t\t\t\tif ( isFinite( min ) && isFinite( max ) ) {\n\n\t\t\t\t\tif ( min < - Math.PI ) min += twoPI; else if ( min > Math.PI ) min -= twoPI;\n\n\t\t\t\t\tif ( max < - Math.PI ) max += twoPI; else if ( max > Math.PI ) max -= twoPI;\n\n\t\t\t\t\tif ( min <= max ) {\n\n\t\t\t\t\t\tspherical.theta = Math.max( min, Math.min( max, spherical.theta ) );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tspherical.theta = ( spherical.theta > ( min + max ) / 2 ) ?\n\t\t\t\t\t\t\tMath.max( min, spherical.theta ) :\n\t\t\t\t\t\t\tMath.min( max, spherical.theta );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// restrict phi to be between desired limits\n\t\t\t\tspherical.phi = Math.max( scope.minPolarAngle, Math.min( scope.maxPolarAngle, spherical.phi ) );\n\n\t\t\t\tspherical.makeSafe();\n\n\n\t\t\t\tspherical.radius *= scale;\n\n\t\t\t\t// restrict radius to be between desired limits\n\t\t\t\tspherical.radius = Math.max( scope.minDistance, Math.min( scope.maxDistance, spherical.radius ) );\n\n\t\t\t\t// move target to panned location\n\n\t\t\t\tif ( scope.enableDamping === true ) {\n\n\t\t\t\t\tscope.target.addScaledVector( panOffset, scope.dampingFactor );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tscope.target.add( panOffset );\n\n\t\t\t\t}\n\n\t\t\t\toffset.setFromSpherical( spherical );\n\n\t\t\t\t// rotate offset back to \"camera-up-vector-is-up\" space\n\t\t\t\toffset.applyQuaternion( quatInverse );\n\n\t\t\t\tposition.copy( scope.target ).add( offset );\n\n\t\t\t\tscope.object.lookAt( scope.target );\n\n\t\t\t\tif ( scope.enableDamping === true ) {\n\n\t\t\t\t\tsphericalDelta.theta *= ( 1 - scope.dampingFactor );\n\t\t\t\t\tsphericalDelta.phi *= ( 1 - scope.dampingFactor );\n\n\t\t\t\t\tpanOffset.multiplyScalar( 1 - scope.dampingFactor );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tsphericalDelta.set( 0, 0, 0 );\n\n\t\t\t\t\tpanOffset.set( 0, 0, 0 );\n\n\t\t\t\t}\n\n\t\t\t\tscale = 1;\n\n\t\t\t\t// update condition is:\n\t\t\t\t// min(camera displacement, camera rotation in radians)^2 > EPS\n\t\t\t\t// using small-angle approximation cos(x/2) = 1 - x^2 / 8\n\n\t\t\t\tif ( zoomChanged ||\n\t\t\t\t\tlastPosition.distanceToSquared( scope.object.position ) > EPS ||\n\t\t\t\t\t8 * ( 1 - lastQuaternion.dot( scope.object.quaternion ) ) > EPS ) {\n\n\t\t\t\t\tscope.dispatchEvent( _changeEvent );\n\n\t\t\t\t\tlastPosition.copy( scope.object.position );\n\t\t\t\t\tlastQuaternion.copy( scope.object.quaternion );\n\t\t\t\t\tzoomChanged = false;\n\n\t\t\t\t\treturn true;\n\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\n\t\t\t};\n\n\t\t}();\n\n\t\tthis.dispose = function () {\n\n\t\t\tscope.domElement.removeEventListener( 'contextmenu', onContextMenu );\n\n\t\t\tscope.domElement.removeEventListener( 'pointerdown', onPointerDown );\n\t\t\tscope.domElement.removeEventListener( 'pointercancel', onPointerCancel );\n\t\t\tscope.domElement.removeEventListener( 'wheel', onMouseWheel );\n\n\t\t\tscope.domElement.removeEventListener( 'pointermove', onPointerMove );\n\t\t\tscope.domElement.removeEventListener( 'pointerup', onPointerUp );\n\n\n\t\t\tif ( scope._domElementKeyEvents !== null ) {\n\n\t\t\t\tscope._domElementKeyEvents.removeEventListener( 'keydown', onKeyDown );\n\n\t\t\t}\n\n\t\t\t//scope.dispatchEvent( { type: 'dispose' } ); // should this be added here?\n\n\t\t};\n\n\t\t//\n\t\t// internals\n\t\t//\n\n\t\tconst scope = this;\n\n\t\tconst STATE = {\n\t\t\tNONE: - 1,\n\t\t\tROTATE: 0,\n\t\t\tDOLLY: 1,\n\t\t\tPAN: 2,\n\t\t\tTOUCH_ROTATE: 3,\n\t\t\tTOUCH_PAN: 4,\n\t\t\tTOUCH_DOLLY_PAN: 5,\n\t\t\tTOUCH_DOLLY_ROTATE: 6\n\t\t};\n\n\t\tlet state = STATE.NONE;\n\n\t\tconst EPS = 0.000001;\n\n\t\t// current position in spherical coordinates\n\t\tconst spherical = new Spherical();\n\t\tconst sphericalDelta = new Spherical();\n\n\t\tlet scale = 1;\n\t\tconst panOffset = new Vector3();\n\t\tlet zoomChanged = false;\n\n\t\tconst rotateStart = new Vector2();\n\t\tconst rotateEnd = new Vector2();\n\t\tconst rotateDelta = new Vector2();\n\n\t\tconst panStart = new Vector2();\n\t\tconst panEnd = new Vector2();\n\t\tconst panDelta = new Vector2();\n\n\t\tconst dollyStart = new Vector2();\n\t\tconst dollyEnd = new Vector2();\n\t\tconst dollyDelta = new Vector2();\n\n\t\tconst pointers = [];\n\t\tconst pointerPositions = {};\n\n\t\tfunction getAutoRotationAngle() {\n\n\t\t\treturn 2 * Math.PI / 60 / 60 * scope.autoRotateSpeed;\n\n\t\t}\n\n\t\tfunction getZoomScale() {\n\n\t\t\treturn Math.pow( 0.95, scope.zoomSpeed );\n\n\t\t}\n\n\t\tfunction rotateLeft( angle ) {\n\n\t\t\tsphericalDelta.theta -= angle;\n\n\t\t}\n\n\t\tfunction rotateUp( angle ) {\n\n\t\t\tsphericalDelta.phi -= angle;\n\n\t\t}\n\n\t\tconst panLeft = function () {\n\n\t\t\tconst v = new Vector3();\n\n\t\t\treturn function panLeft( distance, objectMatrix ) {\n\n\t\t\t\tv.setFromMatrixColumn( objectMatrix, 0 ); // get X column of objectMatrix\n\t\t\t\tv.multiplyScalar( - distance );\n\n\t\t\t\tpanOffset.add( v );\n\n\t\t\t};\n\n\t\t}();\n\n\t\tconst panUp = function () {\n\n\t\t\tconst v = new Vector3();\n\n\t\t\treturn function panUp( distance, objectMatrix ) {\n\n\t\t\t\tif ( scope.screenSpacePanning === true ) {\n\n\t\t\t\t\tv.setFromMatrixColumn( objectMatrix, 1 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tv.setFromMatrixColumn( objectMatrix, 0 );\n\t\t\t\t\tv.crossVectors( scope.object.up, v );\n\n\t\t\t\t}\n\n\t\t\t\tv.multiplyScalar( distance );\n\n\t\t\t\tpanOffset.add( v );\n\n\t\t\t};\n\n\t\t}();\n\n\t\t// deltaX and deltaY are in pixels; right and down are positive\n\t\tconst pan = function () {\n\n\t\t\tconst offset = new Vector3();\n\n\t\t\treturn function pan( deltaX, deltaY ) {\n\n\t\t\t\tconst element = scope.domElement;\n\n\t\t\t\tif ( scope.object.isPerspectiveCamera ) {\n\n\t\t\t\t\t// perspective\n\t\t\t\t\tconst position = scope.object.position;\n\t\t\t\t\toffset.copy( position ).sub( scope.target );\n\t\t\t\t\tlet targetDistance = offset.length();\n\n\t\t\t\t\t// half of the fov is center to top of screen\n\t\t\t\t\ttargetDistance *= Math.tan( ( scope.object.fov / 2 ) * Math.PI / 180.0 );\n\n\t\t\t\t\t// we use only clientHeight here so aspect ratio does not distort speed\n\t\t\t\t\tpanLeft( 2 * deltaX * targetDistance / element.clientHeight, scope.object.matrix );\n\t\t\t\t\tpanUp( 2 * deltaY * targetDistance / element.clientHeight, scope.object.matrix );\n\n\t\t\t\t} else if ( scope.object.isOrthographicCamera ) {\n\n\t\t\t\t\t// orthographic\n\t\t\t\t\tpanLeft( deltaX * ( scope.object.right - scope.object.left ) / scope.object.zoom / element.clientWidth, scope.object.matrix );\n\t\t\t\t\tpanUp( deltaY * ( scope.object.top - scope.object.bottom ) / scope.object.zoom / element.clientHeight, scope.object.matrix );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// camera neither orthographic nor perspective\n\t\t\t\t\tconsole.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.' );\n\t\t\t\t\tscope.enablePan = false;\n\n\t\t\t\t}\n\n\t\t\t};\n\n\t\t}();\n\n\t\tfunction dollyOut( dollyScale ) {\n\n\t\t\tif ( scope.object.isPerspectiveCamera ) {\n\n\t\t\t\tscale /= dollyScale;\n\n\t\t\t} else if ( scope.object.isOrthographicCamera ) {\n\n\t\t\t\tscope.object.zoom = Math.max( scope.minZoom, Math.min( scope.maxZoom, scope.object.zoom * dollyScale ) );\n\t\t\t\tscope.object.updateProjectionMatrix();\n\t\t\t\tzoomChanged = true;\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.' );\n\t\t\t\tscope.enableZoom = false;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction dollyIn( dollyScale ) {\n\n\t\t\tif ( scope.object.isPerspectiveCamera ) {\n\n\t\t\t\tscale *= dollyScale;\n\n\t\t\t} else if ( scope.object.isOrthographicCamera ) {\n\n\t\t\t\tscope.object.zoom = Math.max( scope.minZoom, Math.min( scope.maxZoom, scope.object.zoom / dollyScale ) );\n\t\t\t\tscope.object.updateProjectionMatrix();\n\t\t\t\tzoomChanged = true;\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.' );\n\t\t\t\tscope.enableZoom = false;\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\t\t// event callbacks - update the object state\n\t\t//\n\n\t\tfunction handleMouseDownRotate( event ) {\n\n\t\t\trotateStart.set( event.clientX, event.clientY );\n\n\t\t}\n\n\t\tfunction handleMouseDownDolly( event ) {\n\n\t\t\tdollyStart.set( event.clientX, event.clientY );\n\n\t\t}\n\n\t\tfunction handleMouseDownPan( event ) {\n\n\t\t\tpanStart.set( event.clientX, event.clientY );\n\n\t\t}\n\n\t\tfunction handleMouseMoveRotate( event ) {\n\n\t\t\trotateEnd.set( event.clientX, event.clientY );\n\n\t\t\trotateDelta.subVectors( rotateEnd, rotateStart ).multiplyScalar( scope.rotateSpeed );\n\n\t\t\tconst element = scope.domElement;\n\n\t\t\trotateLeft( 2 * Math.PI * rotateDelta.x / element.clientHeight ); // yes, height\n\n\t\t\trotateUp( 2 * Math.PI * rotateDelta.y / element.clientHeight );\n\n\t\t\trotateStart.copy( rotateEnd );\n\n\t\t\tscope.update();\n\n\t\t}\n\n\t\tfunction handleMouseMoveDolly( event ) {\n\n\t\t\tdollyEnd.set( event.clientX, event.clientY );\n\n\t\t\tdollyDelta.subVectors( dollyEnd, dollyStart );\n\n\t\t\tif ( dollyDelta.y > 0 ) {\n\n\t\t\t\tdollyOut( getZoomScale() );\n\n\t\t\t} else if ( dollyDelta.y < 0 ) {\n\n\t\t\t\tdollyIn( getZoomScale() );\n\n\t\t\t}\n\n\t\t\tdollyStart.copy( dollyEnd );\n\n\t\t\tscope.update();\n\n\t\t}\n\n\t\tfunction handleMouseMovePan( event ) {\n\n\t\t\tpanEnd.set( event.clientX, event.clientY );\n\n\t\t\tpanDelta.subVectors( panEnd, panStart ).multiplyScalar( scope.panSpeed );\n\n\t\t\tpan( panDelta.x, panDelta.y );\n\n\t\t\tpanStart.copy( panEnd );\n\n\t\t\tscope.update();\n\n\t\t}\n\n\t\tfunction handleMouseWheel( event ) {\n\n\t\t\tif ( event.deltaY < 0 ) {\n\n\t\t\t\tdollyIn( getZoomScale() );\n\n\t\t\t} else if ( event.deltaY > 0 ) {\n\n\t\t\t\tdollyOut( getZoomScale() );\n\n\t\t\t}\n\n\t\t\tscope.update();\n\n\t\t}\n\n\t\tfunction handleKeyDown( event ) {\n\n\t\t\tlet needsUpdate = false;\n\n\t\t\tswitch ( event.code ) {\n\n\t\t\t\tcase scope.keys.UP:\n\t\t\t\t\tpan( 0, scope.keyPanSpeed );\n\t\t\t\t\tneedsUpdate = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase scope.keys.BOTTOM:\n\t\t\t\t\tpan( 0, - scope.keyPanSpeed );\n\t\t\t\t\tneedsUpdate = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase scope.keys.LEFT:\n\t\t\t\t\tpan( scope.keyPanSpeed, 0 );\n\t\t\t\t\tneedsUpdate = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase scope.keys.RIGHT:\n\t\t\t\t\tpan( - scope.keyPanSpeed, 0 );\n\t\t\t\t\tneedsUpdate = true;\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tif ( needsUpdate ) {\n\n\t\t\t\t// prevent the browser from scrolling on cursor keys\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\tscope.update();\n\n\t\t\t}\n\n\n\t\t}\n\n\t\tfunction handleTouchStartRotate() {\n\n\t\t\tif ( pointers.length === 1 ) {\n\n\t\t\t\trotateStart.set( pointers[ 0 ].pageX, pointers[ 0 ].pageY );\n\n\t\t\t} else {\n\n\t\t\t\tconst x = 0.5 * ( pointers[ 0 ].pageX + pointers[ 1 ].pageX );\n\t\t\t\tconst y = 0.5 * ( pointers[ 0 ].pageY + pointers[ 1 ].pageY );\n\n\t\t\t\trotateStart.set( x, y );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction handleTouchStartPan() {\n\n\t\t\tif ( pointers.length === 1 ) {\n\n\t\t\t\tpanStart.set( pointers[ 0 ].pageX, pointers[ 0 ].pageY );\n\n\t\t\t} else {\n\n\t\t\t\tconst x = 0.5 * ( pointers[ 0 ].pageX + pointers[ 1 ].pageX );\n\t\t\t\tconst y = 0.5 * ( pointers[ 0 ].pageY + pointers[ 1 ].pageY );\n\n\t\t\t\tpanStart.set( x, y );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction handleTouchStartDolly() {\n\n\t\t\tconst dx = pointers[ 0 ].pageX - pointers[ 1 ].pageX;\n\t\t\tconst dy = pointers[ 0 ].pageY - pointers[ 1 ].pageY;\n\n\t\t\tconst distance = Math.sqrt( dx * dx + dy * dy );\n\n\t\t\tdollyStart.set( 0, distance );\n\n\t\t}\n\n\t\tfunction handleTouchStartDollyPan() {\n\n\t\t\tif ( scope.enableZoom ) handleTouchStartDolly();\n\n\t\t\tif ( scope.enablePan ) handleTouchStartPan();\n\n\t\t}\n\n\t\tfunction handleTouchStartDollyRotate() {\n\n\t\t\tif ( scope.enableZoom ) handleTouchStartDolly();\n\n\t\t\tif ( scope.enableRotate ) handleTouchStartRotate();\n\n\t\t}\n\n\t\tfunction handleTouchMoveRotate( event ) {\n\n\t\t\tif ( pointers.length == 1 ) {\n\n\t\t\t\trotateEnd.set( event.pageX, event.pageY );\n\n\t\t\t} else {\n\n\t\t\t\tconst position = getSecondPointerPosition( event );\n\n\t\t\t\tconst x = 0.5 * ( event.pageX + position.x );\n\t\t\t\tconst y = 0.5 * ( event.pageY + position.y );\n\n\t\t\t\trotateEnd.set( x, y );\n\n\t\t\t}\n\n\t\t\trotateDelta.subVectors( rotateEnd, rotateStart ).multiplyScalar( scope.rotateSpeed );\n\n\t\t\tconst element = scope.domElement;\n\n\t\t\trotateLeft( 2 * Math.PI * rotateDelta.x / element.clientHeight ); // yes, height\n\n\t\t\trotateUp( 2 * Math.PI * rotateDelta.y / element.clientHeight );\n\n\t\t\trotateStart.copy( rotateEnd );\n\n\t\t}\n\n\t\tfunction handleTouchMovePan( event ) {\n\n\t\t\tif ( pointers.length === 1 ) {\n\n\t\t\t\tpanEnd.set( event.pageX, event.pageY );\n\n\t\t\t} else {\n\n\t\t\t\tconst position = getSecondPointerPosition( event );\n\n\t\t\t\tconst x = 0.5 * ( event.pageX + position.x );\n\t\t\t\tconst y = 0.5 * ( event.pageY + position.y );\n\n\t\t\t\tpanEnd.set( x, y );\n\n\t\t\t}\n\n\t\t\tpanDelta.subVectors( panEnd, panStart ).multiplyScalar( scope.panSpeed );\n\n\t\t\tpan( panDelta.x, panDelta.y );\n\n\t\t\tpanStart.copy( panEnd );\n\n\t\t}\n\n\t\tfunction handleTouchMoveDolly( event ) {\n\n\t\t\tconst position = getSecondPointerPosition( event );\n\n\t\t\tconst dx = event.pageX - position.x;\n\t\t\tconst dy = event.pageY - position.y;\n\n\t\t\tconst distance = Math.sqrt( dx * dx + dy * dy );\n\n\t\t\tdollyEnd.set( 0, distance );\n\n\t\t\tdollyDelta.set( 0, Math.pow( dollyEnd.y / dollyStart.y, scope.zoomSpeed ) );\n\n\t\t\tdollyOut( dollyDelta.y );\n\n\t\t\tdollyStart.copy( dollyEnd );\n\n\t\t}\n\n\t\tfunction handleTouchMoveDollyPan( event ) {\n\n\t\t\tif ( scope.enableZoom ) handleTouchMoveDolly( event );\n\n\t\t\tif ( scope.enablePan ) handleTouchMovePan( event );\n\n\t\t}\n\n\t\tfunction handleTouchMoveDollyRotate( event ) {\n\n\t\t\tif ( scope.enableZoom ) handleTouchMoveDolly( event );\n\n\t\t\tif ( scope.enableRotate ) handleTouchMoveRotate( event );\n\n\t\t}\n\n\t\t//\n\t\t// event handlers - FSM: listen for events and reset state\n\t\t//\n\n\t\tfunction onPointerDown( event ) {\n\n\t\t\tif ( scope.enabled === false ) return;\n\n\t\t\tif ( pointers.length === 0 ) {\n\n\t\t\t\tscope.domElement.setPointerCapture( event.pointerId );\n\n\t\t\t\tscope.domElement.addEventListener( 'pointermove', onPointerMove );\n\t\t\t\tscope.domElement.addEventListener( 'pointerup', onPointerUp );\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\taddPointer( event );\n\n\t\t\tif ( event.pointerType === 'touch' ) {\n\n\t\t\t\tonTouchStart( event );\n\n\t\t\t} else {\n\n\t\t\t\tonMouseDown( event );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction onPointerMove( event ) {\n\n\t\t\tif ( scope.enabled === false ) return;\n\n\t\t\tif ( event.pointerType === 'touch' ) {\n\n\t\t\t\tonTouchMove( event );\n\n\t\t\t} else {\n\n\t\t\t\tonMouseMove( event );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction onPointerUp( event ) {\n\n\t\t    removePointer( event );\n\n\t\t    if ( pointers.length === 0 ) {\n\n\t\t        scope.domElement.releasePointerCapture( event.pointerId );\n\n\t\t        scope.domElement.removeEventListener( 'pointermove', onPointerMove );\n\t\t        scope.domElement.removeEventListener( 'pointerup', onPointerUp );\n\n\t\t    }\n\n\t\t    scope.dispatchEvent( _endEvent );\n\n\t\t    state = STATE.NONE;\n\n\t\t}\n\n\t\tfunction onPointerCancel( event ) {\n\n\t\t\tremovePointer( event );\n\n\t\t}\n\n\t\tfunction onMouseDown( event ) {\n\n\t\t\tlet mouseAction;\n\n\t\t\tswitch ( event.button ) {\n\n\t\t\t\tcase 0:\n\n\t\t\t\t\tmouseAction = scope.mouseButtons.LEFT;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 1:\n\n\t\t\t\t\tmouseAction = scope.mouseButtons.MIDDLE;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 2:\n\n\t\t\t\t\tmouseAction = scope.mouseButtons.RIGHT;\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tmouseAction = - 1;\n\n\t\t\t}\n\n\t\t\tswitch ( mouseAction ) {\n\n\t\t\t\tcase MOUSE.DOLLY:\n\n\t\t\t\t\tif ( scope.enableZoom === false ) return;\n\n\t\t\t\t\thandleMouseDownDolly( event );\n\n\t\t\t\t\tstate = STATE.DOLLY;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MOUSE.ROTATE:\n\n\t\t\t\t\tif ( event.ctrlKey || event.metaKey || event.shiftKey ) {\n\n\t\t\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\t\t\thandleMouseDownPan( event );\n\n\t\t\t\t\t\tstate = STATE.PAN;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\t\t\thandleMouseDownRotate( event );\n\n\t\t\t\t\t\tstate = STATE.ROTATE;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MOUSE.PAN:\n\n\t\t\t\t\tif ( event.ctrlKey || event.metaKey || event.shiftKey ) {\n\n\t\t\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\t\t\thandleMouseDownRotate( event );\n\n\t\t\t\t\t\tstate = STATE.ROTATE;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\t\t\thandleMouseDownPan( event );\n\n\t\t\t\t\t\tstate = STATE.PAN;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tstate = STATE.NONE;\n\n\t\t\t}\n\n\t\t\tif ( state !== STATE.NONE ) {\n\n\t\t\t\tscope.dispatchEvent( _startEvent );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction onMouseMove( event ) {\n\n\t\t\tswitch ( state ) {\n\n\t\t\t\tcase STATE.ROTATE:\n\n\t\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\t\thandleMouseMoveRotate( event );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase STATE.DOLLY:\n\n\t\t\t\t\tif ( scope.enableZoom === false ) return;\n\n\t\t\t\t\thandleMouseMoveDolly( event );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase STATE.PAN:\n\n\t\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\t\thandleMouseMovePan( event );\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction onMouseWheel( event ) {\n\n\t\t\tif ( scope.enabled === false || scope.enableZoom === false || state !== STATE.NONE ) return;\n\n\t\t\tevent.preventDefault();\n\n\t\t\tscope.dispatchEvent( _startEvent );\n\n\t\t\thandleMouseWheel( event );\n\n\t\t\tscope.dispatchEvent( _endEvent );\n\n\t\t}\n\n\t\tfunction onKeyDown( event ) {\n\n\t\t\tif ( scope.enabled === false || scope.enablePan === false ) return;\n\n\t\t\thandleKeyDown( event );\n\n\t\t}\n\n\t\tfunction onTouchStart( event ) {\n\n\t\t\ttrackPointer( event );\n\n\t\t\tswitch ( pointers.length ) {\n\n\t\t\t\tcase 1:\n\n\t\t\t\t\tswitch ( scope.touches.ONE ) {\n\n\t\t\t\t\t\tcase TOUCH.ROTATE:\n\n\t\t\t\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\t\t\t\thandleTouchStartRotate();\n\n\t\t\t\t\t\t\tstate = STATE.TOUCH_ROTATE;\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase TOUCH.PAN:\n\n\t\t\t\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\t\t\t\thandleTouchStartPan();\n\n\t\t\t\t\t\t\tstate = STATE.TOUCH_PAN;\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\n\t\t\t\t\t\t\tstate = STATE.NONE;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 2:\n\n\t\t\t\t\tswitch ( scope.touches.TWO ) {\n\n\t\t\t\t\t\tcase TOUCH.DOLLY_PAN:\n\n\t\t\t\t\t\t\tif ( scope.enableZoom === false && scope.enablePan === false ) return;\n\n\t\t\t\t\t\t\thandleTouchStartDollyPan();\n\n\t\t\t\t\t\t\tstate = STATE.TOUCH_DOLLY_PAN;\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase TOUCH.DOLLY_ROTATE:\n\n\t\t\t\t\t\t\tif ( scope.enableZoom === false && scope.enableRotate === false ) return;\n\n\t\t\t\t\t\t\thandleTouchStartDollyRotate();\n\n\t\t\t\t\t\t\tstate = STATE.TOUCH_DOLLY_ROTATE;\n\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\n\t\t\t\t\t\t\tstate = STATE.NONE;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tstate = STATE.NONE;\n\n\t\t\t}\n\n\t\t\tif ( state !== STATE.NONE ) {\n\n\t\t\t\tscope.dispatchEvent( _startEvent );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction onTouchMove( event ) {\n\n\t\t\ttrackPointer( event );\n\n\t\t\tswitch ( state ) {\n\n\t\t\t\tcase STATE.TOUCH_ROTATE:\n\n\t\t\t\t\tif ( scope.enableRotate === false ) return;\n\n\t\t\t\t\thandleTouchMoveRotate( event );\n\n\t\t\t\t\tscope.update();\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase STATE.TOUCH_PAN:\n\n\t\t\t\t\tif ( scope.enablePan === false ) return;\n\n\t\t\t\t\thandleTouchMovePan( event );\n\n\t\t\t\t\tscope.update();\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase STATE.TOUCH_DOLLY_PAN:\n\n\t\t\t\t\tif ( scope.enableZoom === false && scope.enablePan === false ) return;\n\n\t\t\t\t\thandleTouchMoveDollyPan( event );\n\n\t\t\t\t\tscope.update();\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase STATE.TOUCH_DOLLY_ROTATE:\n\n\t\t\t\t\tif ( scope.enableZoom === false && scope.enableRotate === false ) return;\n\n\t\t\t\t\thandleTouchMoveDollyRotate( event );\n\n\t\t\t\t\tscope.update();\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tstate = STATE.NONE;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction onContextMenu( event ) {\n\n\t\t\tif ( scope.enabled === false ) return;\n\n\t\t\tevent.preventDefault();\n\n\t\t}\n\n\t\tfunction addPointer( event ) {\n\n\t\t\tpointers.push( event );\n\n\t\t}\n\n\t\tfunction removePointer( event ) {\n\n\t\t\tdelete pointerPositions[ event.pointerId ];\n\n\t\t\tfor ( let i = 0; i < pointers.length; i ++ ) {\n\n\t\t\t\tif ( pointers[ i ].pointerId == event.pointerId ) {\n\n\t\t\t\t\tpointers.splice( i, 1 );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction trackPointer( event ) {\n\n\t\t\tlet position = pointerPositions[ event.pointerId ];\n\n\t\t\tif ( position === undefined ) {\n\n\t\t\t\tposition = new Vector2();\n\t\t\t\tpointerPositions[ event.pointerId ] = position;\n\n\t\t\t}\n\n\t\t\tposition.set( event.pageX, event.pageY );\n\n\t\t}\n\n\t\tfunction getSecondPointerPosition( event ) {\n\n\t\t\tconst pointer = ( event.pointerId === pointers[ 0 ].pointerId ) ? pointers[ 1 ] : pointers[ 0 ];\n\n\t\t\treturn pointerPositions[ pointer.pointerId ];\n\n\t\t}\n\n\t\t//\n\n\t\tscope.domElement.addEventListener( 'contextmenu', onContextMenu );\n\n\t\tscope.domElement.addEventListener( 'pointerdown', onPointerDown );\n\t\tscope.domElement.addEventListener( 'pointercancel', onPointerCancel );\n\t\tscope.domElement.addEventListener( 'wheel', onMouseWheel, { passive: false } );\n\n\t\t// force an update at start\n\n\t\tthis.update();\n\n\t}\n\n}\n\n\n// This set of controls performs orbiting, dollying (zooming), and panning.\n// Unlike TrackballControls, it maintains the \"up\" direction object.up (+Y by default).\n// This is very similar to OrbitControls, another set of touch behavior\n//\n//    Orbit - right mouse, or left mouse + ctrl/meta/shiftKey / touch: two-finger rotate\n//    Zoom - middle mouse, or mousewheel / touch: two-finger spread or squish\n//    Pan - left mouse, or arrow keys / touch: one-finger move\n\nclass MapControls extends OrbitControls {\n\n\tconstructor( object, domElement ) {\n\n\t\tsuper( object, domElement );\n\n\t\tthis.screenSpacePanning = false; // pan orthogonal to world-space direction camera.up\n\n\t\tthis.mouseButtons.LEFT = MOUSE.PAN;\n\t\tthis.mouseButtons.RIGHT = MOUSE.ROTATE;\n\n\t\tthis.touches.ONE = TOUCH.PAN;\n\t\tthis.touches.TWO = TOUCH.DOLLY_ROTATE;\n\n\t}\n\n}\n\nexport { OrbitControls, MapControls };\n","/**\n * https://github.com/google/model-viewer/blob/master/packages/model-viewer/src/three-components/EnvironmentScene.ts\n */\n\nimport {\n \tBackSide,\n \tBoxGeometry,\n \tMesh,\n\tMeshBasicMaterial,\n \tMeshStandardMaterial,\n \tPointLight,\n \tScene,\n} from 'three';\n\nclass RoomEnvironment extends Scene {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tconst geometry = new BoxGeometry();\n\t\tgeometry.deleteAttribute( 'uv' );\n\n\t\tconst roomMaterial = new MeshStandardMaterial( { side: BackSide } );\n\t\tconst boxMaterial = new MeshStandardMaterial();\n\n\t\tconst mainLight = new PointLight( 0xffffff, 5.0, 28, 2 );\n\t\tmainLight.position.set( 0.418, 16.199, 0.300 );\n\t\tthis.add( mainLight );\n\n\t\tconst room = new Mesh( geometry, roomMaterial );\n\t\troom.position.set( - 0.757, 13.219, 0.717 );\n\t\troom.scale.set( 31.713, 28.305, 28.591 );\n\t\tthis.add( room );\n\n\t\tconst box1 = new Mesh( geometry, boxMaterial );\n\t\tbox1.position.set( - 10.906, 2.009, 1.846 );\n\t\tbox1.rotation.set( 0, - 0.195, 0 );\n\t\tbox1.scale.set( 2.328, 7.905, 4.651 );\n\t\tthis.add( box1 );\n\n\t\tconst box2 = new Mesh( geometry, boxMaterial );\n\t\tbox2.position.set( - 5.607, - 0.754, - 0.758 );\n\t\tbox2.rotation.set( 0, 0.994, 0 );\n\t\tbox2.scale.set( 1.970, 1.534, 3.955 );\n\t\tthis.add( box2 );\n\n\t\tconst box3 = new Mesh( geometry, boxMaterial );\n\t\tbox3.position.set( 6.167, 0.857, 7.803 );\n\t\tbox3.rotation.set( 0, 0.561, 0 );\n\t\tbox3.scale.set( 3.927, 6.285, 3.687 );\n\t\tthis.add( box3 );\n\n\t\tconst box4 = new Mesh( geometry, boxMaterial );\n\t\tbox4.position.set( - 2.017, 0.018, 6.124 );\n\t\tbox4.rotation.set( 0, 0.333, 0 );\n\t\tbox4.scale.set( 2.002, 4.566, 2.064 );\n\t\tthis.add( box4 );\n\n\t\tconst box5 = new Mesh( geometry, boxMaterial );\n\t\tbox5.position.set( 2.291, - 0.756, - 2.621 );\n\t\tbox5.rotation.set( 0, - 0.286, 0 );\n\t\tbox5.scale.set( 1.546, 1.552, 1.496 );\n\t\tthis.add( box5 );\n\n\t\tconst box6 = new Mesh( geometry, boxMaterial );\n\t\tbox6.position.set( - 2.193, - 0.369, - 5.547 );\n\t\tbox6.rotation.set( 0, 0.516, 0 );\n\t\tbox6.scale.set( 3.875, 3.487, 2.986 );\n\t\tthis.add( box6 );\n\n\n\t\t// -x right\n\t\tconst light1 = new Mesh( geometry, createAreaLightMaterial( 50 ) );\n\t\tlight1.position.set( - 16.116, 14.37, 8.208 );\n\t\tlight1.scale.set( 0.1, 2.428, 2.739 );\n\t\tthis.add( light1 );\n\n\t\t// -x left\n\t\tconst light2 = new Mesh( geometry, createAreaLightMaterial( 50 ) );\n\t\tlight2.position.set( - 16.109, 18.021, - 8.207 );\n\t\tlight2.scale.set( 0.1, 2.425, 2.751 );\n\t\tthis.add( light2 );\n\n\t\t// +x\n\t\tconst light3 = new Mesh( geometry, createAreaLightMaterial( 17 ) );\n\t\tlight3.position.set( 14.904, 12.198, - 1.832 );\n\t\tlight3.scale.set( 0.15, 4.265, 6.331 );\n\t\tthis.add( light3 );\n\n\t\t// +z\n\t\tconst light4 = new Mesh( geometry, createAreaLightMaterial( 43 ) );\n\t\tlight4.position.set( - 0.462, 8.89, 14.520 );\n\t\tlight4.scale.set( 4.38, 5.441, 0.088 );\n\t\tthis.add( light4 );\n\n\t\t// -z\n\t\tconst light5 = new Mesh( geometry, createAreaLightMaterial( 20 ) );\n\t\tlight5.position.set( 3.235, 11.486, - 12.541 );\n\t\tlight5.scale.set( 2.5, 2.0, 0.1 );\n\t\tthis.add( light5 );\n\n\t\t// +y\n\t\tconst light6 = new Mesh( geometry, createAreaLightMaterial( 100 ) );\n\t\tlight6.position.set( 0.0, 20.0, 0.0 );\n\t\tlight6.scale.set( 1.0, 0.1, 1.0 );\n\t\tthis.add( light6 );\n\n\t}\n\n}\n\nfunction createAreaLightMaterial( intensity ) {\n\n\tconst material = new MeshBasicMaterial();\n\tmaterial.color.setScalar( intensity );\n\treturn material;\n\n}\n\nexport { RoomEnvironment };\n","import {\n\tDataTextureLoader,\n\tDataUtils,\n\tFloatType,\n\tHalfFloatType,\n\tLinearEncoding,\n\tLinearFilter\n} from 'three';\n\n// https://github.com/mrdoob/three.js/issues/5552\n// http://en.wikipedia.org/wiki/RGBE_image_format\n\nclass RGBELoader extends DataTextureLoader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t\tthis.type = HalfFloatType;\n\n\t}\n\n\t// adapted from http://www.graphics.cornell.edu/~bjw/rgbe.html\n\n\tparse( buffer ) {\n\n\t\tconst\n\t\t\t/* return codes for rgbe routines */\n\t\t\t//RGBE_RETURN_SUCCESS = 0,\n\t\t\tRGBE_RETURN_FAILURE = - 1,\n\n\t\t\t/* default error routine.  change this to change error handling */\n\t\t\trgbe_read_error = 1,\n\t\t\trgbe_write_error = 2,\n\t\t\trgbe_format_error = 3,\n\t\t\trgbe_memory_error = 4,\n\t\t\trgbe_error = function ( rgbe_error_code, msg ) {\n\n\t\t\t\tswitch ( rgbe_error_code ) {\n\n\t\t\t\t\tcase rgbe_read_error: console.error( 'THREE.RGBELoader Read Error: ' + ( msg || '' ) );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase rgbe_write_error: console.error( 'THREE.RGBELoader Write Error: ' + ( msg || '' ) );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase rgbe_format_error: console.error( 'THREE.RGBELoader Bad File Format: ' + ( msg || '' ) );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\tcase rgbe_memory_error: console.error( 'THREE.RGBELoader: Error: ' + ( msg || '' ) );\n\n\t\t\t\t}\n\n\t\t\t\treturn RGBE_RETURN_FAILURE;\n\n\t\t\t},\n\n\t\t\t/* offsets to red, green, and blue components in a data (float) pixel */\n\t\t\t//RGBE_DATA_RED = 0,\n\t\t\t//RGBE_DATA_GREEN = 1,\n\t\t\t//RGBE_DATA_BLUE = 2,\n\n\t\t\t/* number of floats per pixel, use 4 since stored in rgba image format */\n\t\t\t//RGBE_DATA_SIZE = 4,\n\n\t\t\t/* flags indicating which fields in an rgbe_header_info are valid */\n\t\t\tRGBE_VALID_PROGRAMTYPE = 1,\n\t\t\tRGBE_VALID_FORMAT = 2,\n\t\t\tRGBE_VALID_DIMENSIONS = 4,\n\n\t\t\tNEWLINE = '\\n',\n\n\t\t\tfgets = function ( buffer, lineLimit, consume ) {\n\n\t\t\t\tconst chunkSize = 128;\n\n\t\t\t\tlineLimit = ! lineLimit ? 1024 : lineLimit;\n\t\t\t\tlet p = buffer.pos,\n\t\t\t\t\ti = - 1, len = 0, s = '',\n\t\t\t\t\tchunk = String.fromCharCode.apply( null, new Uint16Array( buffer.subarray( p, p + chunkSize ) ) );\n\n\t\t\t\twhile ( ( 0 > ( i = chunk.indexOf( NEWLINE ) ) ) && ( len < lineLimit ) && ( p < buffer.byteLength ) ) {\n\n\t\t\t\t\ts += chunk; len += chunk.length;\n\t\t\t\t\tp += chunkSize;\n\t\t\t\t\tchunk += String.fromCharCode.apply( null, new Uint16Array( buffer.subarray( p, p + chunkSize ) ) );\n\n\t\t\t\t}\n\n\t\t\t\tif ( - 1 < i ) {\n\n\t\t\t\t\t/*for (i=l-1; i>=0; i--) {\n\t\t\t\t\t\tbyteCode = m.charCodeAt(i);\n\t\t\t\t\t\tif (byteCode > 0x7f && byteCode <= 0x7ff) byteLen++;\n\t\t\t\t\t\telse if (byteCode > 0x7ff && byteCode <= 0xffff) byteLen += 2;\n\t\t\t\t\t\tif (byteCode >= 0xDC00 && byteCode <= 0xDFFF) i--; //trail surrogate\n\t\t\t\t\t}*/\n\t\t\t\t\tif ( false !== consume ) buffer.pos += len + i + 1;\n\t\t\t\t\treturn s + chunk.slice( 0, i );\n\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\n\t\t\t},\n\n\t\t\t/* minimal header reading.  modify if you want to parse more information */\n\t\t\tRGBE_ReadHeader = function ( buffer ) {\n\n\n\t\t\t\t// regexes to parse header info fields\n\t\t\t\tconst magic_token_re = /^#\\?(\\S+)/,\n\t\t\t\t\tgamma_re = /^\\s*GAMMA\\s*=\\s*(\\d+(\\.\\d+)?)\\s*$/,\n\t\t\t\t\texposure_re = /^\\s*EXPOSURE\\s*=\\s*(\\d+(\\.\\d+)?)\\s*$/,\n\t\t\t\t\tformat_re = /^\\s*FORMAT=(\\S+)\\s*$/,\n\t\t\t\t\tdimensions_re = /^\\s*\\-Y\\s+(\\d+)\\s+\\+X\\s+(\\d+)\\s*$/,\n\n\t\t\t\t\t// RGBE format header struct\n\t\t\t\t\theader = {\n\n\t\t\t\t\t\tvalid: 0, /* indicate which fields are valid */\n\n\t\t\t\t\t\tstring: '', /* the actual header string */\n\n\t\t\t\t\t\tcomments: '', /* comments found in header */\n\n\t\t\t\t\t\tprogramtype: 'RGBE', /* listed at beginning of file to identify it after \"#?\". defaults to \"RGBE\" */\n\n\t\t\t\t\t\tformat: '', /* RGBE format, default 32-bit_rle_rgbe */\n\n\t\t\t\t\t\tgamma: 1.0, /* image has already been gamma corrected with given gamma. defaults to 1.0 (no correction) */\n\n\t\t\t\t\t\texposure: 1.0, /* a value of 1.0 in an image corresponds to <exposure> watts/steradian/m^2. defaults to 1.0 */\n\n\t\t\t\t\t\twidth: 0, height: 0 /* image dimensions, width/height */\n\n\t\t\t\t\t};\n\n\t\t\t\tlet line, match;\n\n\t\t\t\tif ( buffer.pos >= buffer.byteLength || ! ( line = fgets( buffer ) ) ) {\n\n\t\t\t\t\treturn rgbe_error( rgbe_read_error, 'no header found' );\n\n\t\t\t\t}\n\n\t\t\t\t/* if you want to require the magic token then uncomment the next line */\n\t\t\t\tif ( ! ( match = line.match( magic_token_re ) ) ) {\n\n\t\t\t\t\treturn rgbe_error( rgbe_format_error, 'bad initial token' );\n\n\t\t\t\t}\n\n\t\t\t\theader.valid |= RGBE_VALID_PROGRAMTYPE;\n\t\t\t\theader.programtype = match[ 1 ];\n\t\t\t\theader.string += line + '\\n';\n\n\t\t\t\twhile ( true ) {\n\n\t\t\t\t\tline = fgets( buffer );\n\t\t\t\t\tif ( false === line ) break;\n\t\t\t\t\theader.string += line + '\\n';\n\n\t\t\t\t\tif ( '#' === line.charAt( 0 ) ) {\n\n\t\t\t\t\t\theader.comments += line + '\\n';\n\t\t\t\t\t\tcontinue; // comment line\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( match = line.match( gamma_re ) ) {\n\n\t\t\t\t\t\theader.gamma = parseFloat( match[ 1 ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( match = line.match( exposure_re ) ) {\n\n\t\t\t\t\t\theader.exposure = parseFloat( match[ 1 ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( match = line.match( format_re ) ) {\n\n\t\t\t\t\t\theader.valid |= RGBE_VALID_FORMAT;\n\t\t\t\t\t\theader.format = match[ 1 ];//'32-bit_rle_rgbe';\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( match = line.match( dimensions_re ) ) {\n\n\t\t\t\t\t\theader.valid |= RGBE_VALID_DIMENSIONS;\n\t\t\t\t\t\theader.height = parseInt( match[ 1 ], 10 );\n\t\t\t\t\t\theader.width = parseInt( match[ 2 ], 10 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ( header.valid & RGBE_VALID_FORMAT ) && ( header.valid & RGBE_VALID_DIMENSIONS ) ) break;\n\n\t\t\t\t}\n\n\t\t\t\tif ( ! ( header.valid & RGBE_VALID_FORMAT ) ) {\n\n\t\t\t\t\treturn rgbe_error( rgbe_format_error, 'missing format specifier' );\n\n\t\t\t\t}\n\n\t\t\t\tif ( ! ( header.valid & RGBE_VALID_DIMENSIONS ) ) {\n\n\t\t\t\t\treturn rgbe_error( rgbe_format_error, 'missing image size specifier' );\n\n\t\t\t\t}\n\n\t\t\t\treturn header;\n\n\t\t\t},\n\n\t\t\tRGBE_ReadPixels_RLE = function ( buffer, w, h ) {\n\n\t\t\t\tconst scanline_width = w;\n\n\t\t\t\tif (\n\t\t\t\t\t// run length encoding is not allowed so read flat\n\t\t\t\t\t( ( scanline_width < 8 ) || ( scanline_width > 0x7fff ) ) ||\n\t\t\t\t\t// this file is not run length encoded\n\t\t\t\t\t( ( 2 !== buffer[ 0 ] ) || ( 2 !== buffer[ 1 ] ) || ( buffer[ 2 ] & 0x80 ) )\n\t\t\t\t) {\n\n\t\t\t\t\t// return the flat buffer\n\t\t\t\t\treturn new Uint8Array( buffer );\n\n\t\t\t\t}\n\n\t\t\t\tif ( scanline_width !== ( ( buffer[ 2 ] << 8 ) | buffer[ 3 ] ) ) {\n\n\t\t\t\t\treturn rgbe_error( rgbe_format_error, 'wrong scanline width' );\n\n\t\t\t\t}\n\n\t\t\t\tconst data_rgba = new Uint8Array( 4 * w * h );\n\n\t\t\t\tif ( ! data_rgba.length ) {\n\n\t\t\t\t\treturn rgbe_error( rgbe_memory_error, 'unable to allocate buffer space' );\n\n\t\t\t\t}\n\n\t\t\t\tlet offset = 0, pos = 0;\n\n\t\t\t\tconst ptr_end = 4 * scanline_width;\n\t\t\t\tconst rgbeStart = new Uint8Array( 4 );\n\t\t\t\tconst scanline_buffer = new Uint8Array( ptr_end );\n\t\t\t\tlet num_scanlines = h;\n\n\t\t\t\t// read in each successive scanline\n\t\t\t\twhile ( ( num_scanlines > 0 ) && ( pos < buffer.byteLength ) ) {\n\n\t\t\t\t\tif ( pos + 4 > buffer.byteLength ) {\n\n\t\t\t\t\t\treturn rgbe_error( rgbe_read_error );\n\n\t\t\t\t\t}\n\n\t\t\t\t\trgbeStart[ 0 ] = buffer[ pos ++ ];\n\t\t\t\t\trgbeStart[ 1 ] = buffer[ pos ++ ];\n\t\t\t\t\trgbeStart[ 2 ] = buffer[ pos ++ ];\n\t\t\t\t\trgbeStart[ 3 ] = buffer[ pos ++ ];\n\n\t\t\t\t\tif ( ( 2 != rgbeStart[ 0 ] ) || ( 2 != rgbeStart[ 1 ] ) || ( ( ( rgbeStart[ 2 ] << 8 ) | rgbeStart[ 3 ] ) != scanline_width ) ) {\n\n\t\t\t\t\t\treturn rgbe_error( rgbe_format_error, 'bad rgbe scanline format' );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// read each of the four channels for the scanline into the buffer\n\t\t\t\t\t// first red, then green, then blue, then exponent\n\t\t\t\t\tlet ptr = 0, count;\n\n\t\t\t\t\twhile ( ( ptr < ptr_end ) && ( pos < buffer.byteLength ) ) {\n\n\t\t\t\t\t\tcount = buffer[ pos ++ ];\n\t\t\t\t\t\tconst isEncodedRun = count > 128;\n\t\t\t\t\t\tif ( isEncodedRun ) count -= 128;\n\n\t\t\t\t\t\tif ( ( 0 === count ) || ( ptr + count > ptr_end ) ) {\n\n\t\t\t\t\t\t\treturn rgbe_error( rgbe_format_error, 'bad scanline data' );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( isEncodedRun ) {\n\n\t\t\t\t\t\t\t// a (encoded) run of the same value\n\t\t\t\t\t\t\tconst byteValue = buffer[ pos ++ ];\n\t\t\t\t\t\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\t\t\t\t\t\tscanline_buffer[ ptr ++ ] = byteValue;\n\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t//ptr += count;\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// a literal-run\n\t\t\t\t\t\t\tscanline_buffer.set( buffer.subarray( pos, pos + count ), ptr );\n\t\t\t\t\t\t\tptr += count; pos += count;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\n\t\t\t\t\t// now convert data from buffer into rgba\n\t\t\t\t\t// first red, then green, then blue, then exponent (alpha)\n\t\t\t\t\tconst l = scanline_width; //scanline_buffer.byteLength;\n\t\t\t\t\tfor ( let i = 0; i < l; i ++ ) {\n\n\t\t\t\t\t\tlet off = 0;\n\t\t\t\t\t\tdata_rgba[ offset ] = scanline_buffer[ i + off ];\n\t\t\t\t\t\toff += scanline_width; //1;\n\t\t\t\t\t\tdata_rgba[ offset + 1 ] = scanline_buffer[ i + off ];\n\t\t\t\t\t\toff += scanline_width; //1;\n\t\t\t\t\t\tdata_rgba[ offset + 2 ] = scanline_buffer[ i + off ];\n\t\t\t\t\t\toff += scanline_width; //1;\n\t\t\t\t\t\tdata_rgba[ offset + 3 ] = scanline_buffer[ i + off ];\n\t\t\t\t\t\toffset += 4;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tnum_scanlines --;\n\n\t\t\t\t}\n\n\t\t\t\treturn data_rgba;\n\n\t\t\t};\n\n\t\tconst RGBEByteToRGBFloat = function ( sourceArray, sourceOffset, destArray, destOffset ) {\n\n\t\t\tconst e = sourceArray[ sourceOffset + 3 ];\n\t\t\tconst scale = Math.pow( 2.0, e - 128.0 ) / 255.0;\n\n\t\t\tdestArray[ destOffset + 0 ] = sourceArray[ sourceOffset + 0 ] * scale;\n\t\t\tdestArray[ destOffset + 1 ] = sourceArray[ sourceOffset + 1 ] * scale;\n\t\t\tdestArray[ destOffset + 2 ] = sourceArray[ sourceOffset + 2 ] * scale;\n\t\t\tdestArray[ destOffset + 3 ] = 1;\n\n\t\t};\n\n\t\tconst RGBEByteToRGBHalf = function ( sourceArray, sourceOffset, destArray, destOffset ) {\n\n\t\t\tconst e = sourceArray[ sourceOffset + 3 ];\n\t\t\tconst scale = Math.pow( 2.0, e - 128.0 ) / 255.0;\n\n\t\t\t// clamping to 65504, the maximum representable value in float16\n\t\t\tdestArray[ destOffset + 0 ] = DataUtils.toHalfFloat( Math.min( sourceArray[ sourceOffset + 0 ] * scale, 65504 ) );\n\t\t\tdestArray[ destOffset + 1 ] = DataUtils.toHalfFloat( Math.min( sourceArray[ sourceOffset + 1 ] * scale, 65504 ) );\n\t\t\tdestArray[ destOffset + 2 ] = DataUtils.toHalfFloat( Math.min( sourceArray[ sourceOffset + 2 ] * scale, 65504 ) );\n\t\t\tdestArray[ destOffset + 3 ] = DataUtils.toHalfFloat( 1 );\n\n\t\t};\n\n\t\tconst byteArray = new Uint8Array( buffer );\n\t\tbyteArray.pos = 0;\n\t\tconst rgbe_header_info = RGBE_ReadHeader( byteArray );\n\n\t\tif ( RGBE_RETURN_FAILURE !== rgbe_header_info ) {\n\n\t\t\tconst w = rgbe_header_info.width,\n\t\t\t\th = rgbe_header_info.height,\n\t\t\t\timage_rgba_data = RGBE_ReadPixels_RLE( byteArray.subarray( byteArray.pos ), w, h );\n\n\t\t\tif ( RGBE_RETURN_FAILURE !== image_rgba_data ) {\n\n\t\t\t\tlet data, type;\n\t\t\t\tlet numElements;\n\n\t\t\t\tswitch ( this.type ) {\n\n\t\t\t\t\tcase FloatType:\n\n\t\t\t\t\t\tnumElements = image_rgba_data.length / 4;\n\t\t\t\t\t\tconst floatArray = new Float32Array( numElements * 4 );\n\n\t\t\t\t\t\tfor ( let j = 0; j < numElements; j ++ ) {\n\n\t\t\t\t\t\t\tRGBEByteToRGBFloat( image_rgba_data, j * 4, floatArray, j * 4 );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdata = floatArray;\n\t\t\t\t\t\ttype = FloatType;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase HalfFloatType:\n\n\t\t\t\t\t\tnumElements = image_rgba_data.length / 4;\n\t\t\t\t\t\tconst halfArray = new Uint16Array( numElements * 4 );\n\n\t\t\t\t\t\tfor ( let j = 0; j < numElements; j ++ ) {\n\n\t\t\t\t\t\t\tRGBEByteToRGBHalf( image_rgba_data, j * 4, halfArray, j * 4 );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdata = halfArray;\n\t\t\t\t\t\ttype = HalfFloatType;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tconsole.error( 'THREE.RGBELoader: unsupported type: ', this.type );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\twidth: w, height: h,\n\t\t\t\t\tdata: data,\n\t\t\t\t\theader: rgbe_header_info.string,\n\t\t\t\t\tgamma: rgbe_header_info.gamma,\n\t\t\t\t\texposure: rgbe_header_info.exposure,\n\t\t\t\t\ttype: type\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\tsetDataType( value ) {\n\n\t\tthis.type = value;\n\t\treturn this;\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tfunction onLoadCallback( texture, texData ) {\n\n\t\t\tswitch ( texture.type ) {\n\n\t\t\t\tcase FloatType:\n\t\t\t\tcase HalfFloatType:\n\n\t\t\t\t\ttexture.encoding = LinearEncoding;\n\t\t\t\t\ttexture.minFilter = LinearFilter;\n\t\t\t\t\ttexture.magFilter = LinearFilter;\n\t\t\t\t\ttexture.generateMipmaps = false;\n\t\t\t\t\ttexture.flipY = true;\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tif ( onLoad ) onLoad( texture, texData );\n\n\t\t}\n\n\t\treturn super.load( url, onLoadCallback, onProgress, onError );\n\n\t}\n\n}\n\nexport { RGBELoader };\n","import { useCallback, useState } from 'react';\nimport * as THREE from 'three';\nimport { GLTFLoader, GLTF } from 'three/examples/jsm/loaders/GLTFLoader.js';\nimport { DRACOLoader } from 'three/examples/jsm/loaders/DRACOLoader.js';\nimport { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js';\nimport { RoomEnvironment } from 'three/examples/jsm/environments/RoomEnvironment.js';\nimport { LoadingManager } from 'three';\n\ninterface ManagerInstance {\n  stop: boolean;\n  opacity: number;\n  environment: {\n    loadBackground(url: string): void;\n    loadTextureAsLightmap(url: string): void;\n    addByDirectionalLights(\n      intensity?: number,\n      color?: number\n    ): {\n      remove(): void;\n    };\n    sun(\n      intensity?: number,\n      color?: number\n    ): {\n      remove(): void;\n    };\n    addAmbientLight(\n      intensity?: number,\n      color?: number\n    ): {\n      remove(): void;\n    };\n    loadHDR(url: string): Promise<{\n      remove(): void;\n    }>;\n  };\n  model: {\n    load3DModel(url: string): Promise<{\n      remove(): void;\n      punctualLights: boolean;\n    }>;\n    addGround(opacity?: number): {\n      remove(): void;\n    };\n    transform: {\n      setRotation(x: number | undefined, y: number | undefined, z: number | undefined): void;\n      setPosition(x: number | undefined, y: number | undefined, z: number | undefined): void;\n      setScale(x: number | undefined, y: number | undefined, z: number | undefined): void;\n    };\n  };\n  camera: {\n    enablePan: boolean;\n    enableZoom: boolean;\n    enableRotate: boolean;\n    enableAutoRotate: boolean;\n  };\n  dispose(): void;\n}\n\nconst GLOBAL_LOADING_MANAGER = new LoadingManager();\n\nconst DEFAULT_OPTIONS = {\n  SUN_LIGHT_COLOR: 0xffffff,\n  SUN_LIGHT_INTENSITY: 0.2,\n  SUN_POSITION: [0.5, 0, 0.866] as const,\n  AMBIENT_LIGHT_COLOR: 0xffffff,\n  AMBIENT_LIGHT_INTENSITY: 0.2,\n  DIRECTIONAL_LIGHT_COLOR: 0xffffff,\n  DIRECTIONAL_LIGHT_INTENSITY: 1,\n  CAMERA_FOV: 50,\n  CAMERA_NEAR: 0.1,\n  CAMERA_FAR: 12,\n  CAMERA_POSITION: [0, 0, 0.8] as const,\n  CAMERA_TARGET: [0, 0, 0] as const,\n  CAMERA_MIN_DISTANCE: 0.65,\n  CAMERA_MAX_DISTANCE: 1.6,\n  GROUND_OPACITY: 0.5,\n};\n\nexport function createSceneManager(container: HTMLElement, canvas: HTMLCanvasElement): ManagerInstance {\n  const scene = new THREE.Scene();\n  const dracoLoader = new DRACOLoader(GLOBAL_LOADING_MANAGER);\n  const gltfLoader = new GLTFLoader(GLOBAL_LOADING_MANAGER);\n  gltfLoader.setDRACOLoader(dracoLoader);\n  const width = container.clientWidth;\n  const height = container.clientHeight;\n  const camera = new THREE.PerspectiveCamera(\n    DEFAULT_OPTIONS.CAMERA_FOV,\n    width / height,\n    DEFAULT_OPTIONS.CAMERA_NEAR,\n    DEFAULT_OPTIONS.CAMERA_FAR\n  );\n  scene.add(camera);\n  const controls = new OrbitControls(camera, container);\n  controls.target.set(...DEFAULT_OPTIONS.CAMERA_TARGET);\n  camera.position.set(...DEFAULT_OPTIONS.CAMERA_POSITION);\n  controls.maxDistance = DEFAULT_OPTIONS.CAMERA_MAX_DISTANCE;\n  controls.minDistance = DEFAULT_OPTIONS.CAMERA_MIN_DISTANCE;\n  const initRenderer = () => {\n    const renderer = new THREE.WebGLRenderer({\n      antialias: true,\n      alpha: true,\n      canvas,\n    });\n    renderer.setClearColor(0x000000, 0);\n    renderer.setSize(width, height);\n    renderer.toneMapping = THREE.LinearToneMapping;\n    renderer.toneMappingExposure = 1;\n    renderer.domElement.style.position = 'absolute';\n    renderer.domElement.style.userSelect = 'none';\n    renderer.domElement.style.transition = 'opacity 0.3s ease-in-out';\n    const envTexture = new THREE.PMREMGenerator(renderer).fromScene(new RoomEnvironment()).texture;\n    scene.environment = envTexture;\n    return renderer;\n  };\n  let renderer: THREE.WebGLRenderer | undefined = initRenderer();\n  let opacity = 1;\n  const mixers: THREE.AnimationMixer[] = [];\n  let previousRAF: number | undefined;\n  function animate(stamp?: DOMHighResTimeStamp) {\n    if (!renderer) {\n      previousRAF = undefined;\n      return;\n    }\n    const delta = (previousRAF && stamp ? stamp - previousRAF : 0) / 1000;\n    previousRAF = stamp;\n    canvas.width = container.clientWidth;\n    canvas.height = container.clientHeight;\n    renderer.setSize(container.clientWidth, container.clientHeight);\n    requestAnimationFrame(animate);\n    controls.update();\n    mixers.forEach((mixer) => {\n      mixer.update(delta);\n    });\n    renderer.render(scene, camera);\n  }\n  animate();\n\n  let model: GLTF['scene'] | undefined;\n\n  // let modelBasePosition: THREE.Vector3 | undefined;\n  let manualPosition = false;\n  const api: ManagerInstance = {\n    get stop() {\n      return !renderer;\n    },\n    set stop(value) {\n      if (!value && !renderer) {\n        // controls = new OrbitControls(camera, container);\n        renderer = initRenderer();\n        animate();\n      }\n      if (value && renderer) {\n        renderer.dispose();\n        // controls.dispose();\n        renderer = undefined;\n      }\n    },\n    get opacity() {\n      return opacity;\n    },\n    set opacity(value) {\n      opacity = value;\n      canvas.style.opacity = opacity.toString();\n    },\n    environment: {\n      loadBackground(url) {\n        const backgroundTexture = new THREE.TextureLoader().load(url);\n        scene.background = backgroundTexture;\n        scene.environment = backgroundTexture;\n      },\n      loadTextureAsLightmap(url) {\n        const lightmapTexture = new THREE.TextureLoader().load(url);\n        scene.traverse((child) => {\n          if (child instanceof THREE.Mesh) {\n            child.material.lightmapIntensity = 1;\n            child.material.lightmap = lightmapTexture;\n          }\n        });\n      },\n      addByDirectionalLights(\n        intensity = DEFAULT_OPTIONS.DIRECTIONAL_LIGHT_INTENSITY,\n        color = DEFAULT_OPTIONS.DIRECTIONAL_LIGHT_COLOR\n      ) {\n        const light = new THREE.DirectionalLight(color, intensity);\n        const lightBack = new THREE.DirectionalLight(color, intensity);\n        light.position.set(0, 0, 2);\n        lightBack.position.set(0, 0, -2);\n        scene.add(light);\n        scene.add(lightBack);\n        return {\n          remove() {\n            scene.remove(light);\n            scene.remove(lightBack);\n          },\n        };\n      },\n      sun(intensity = DEFAULT_OPTIONS.DIRECTIONAL_LIGHT_INTENSITY, color = DEFAULT_OPTIONS.DIRECTIONAL_LIGHT_COLOR) {\n        const light = new THREE.DirectionalLight(color, intensity);\n        light.position.set(...DEFAULT_OPTIONS.SUN_POSITION); //from https://github.com/donmccurdy/three-gltf-viewer/blob/main/src/viewer.js#L430\n        camera.add(light);\n        return {\n          remove() {\n            camera.remove(light);\n          },\n        };\n      },\n      addAmbientLight(\n        intensity = DEFAULT_OPTIONS.AMBIENT_LIGHT_INTENSITY,\n        color = DEFAULT_OPTIONS.AMBIENT_LIGHT_COLOR\n      ) {\n        const light = new THREE.AmbientLight(color, intensity);\n        camera.add(light);\n        return {\n          remove() {\n            camera.remove(light);\n          },\n        };\n      },\n      async loadHDR(url) {\n        const { RGBELoader } = await import(\n          /* webpackChunkName: \"three-rbdl-loader\" */ 'three/examples/jsm/loaders/RGBELoader.js'\n        );\n        const hdrLoader = new RGBELoader();\n        const hdr = await new Promise<THREE.Texture>((resolve) => {\n          hdrLoader.load(url, resolve);\n        });\n        hdr.mapping = THREE.EquirectangularReflectionMapping;\n        scene.background = hdr;\n        scene.environment = hdr;\n        return {\n          remove() {\n            scene.background = null;\n            scene.environment = null;\n          },\n        };\n      },\n    },\n    model: {\n      async load3DModel(url) {\n        const gltf = await new Promise<GLTF>((resolve) => {\n          gltfLoader.load(url, resolve);\n        });\n        const gltfScene = gltf.scene || gltf.scenes[0];\n        const clips = gltf.animations || [];\n        const { punctualLights, mixer } = addModel(scene, gltfScene, clips, camera, controls, manualPosition);\n        mixers.push(mixer);\n        model = gltfScene;\n        return {\n          remove() {\n            if (model) {\n              scene.remove(model);\n            }\n          },\n          punctualLights,\n        };\n      },\n      addGround(opacity = DEFAULT_OPTIONS.GROUND_OPACITY) {\n        const ground = new THREE.Mesh(\n          new THREE.PlaneBufferGeometry(100, 100),\n          new THREE.ShadowMaterial({ opacity: opacity })\n        );\n        ground.position.y = -0.4;\n        ground.rotation.x = -Math.PI / 2;\n        ground.receiveShadow = true;\n        scene.add(ground);\n        return {\n          remove() {\n            scene.remove(ground);\n          },\n        };\n      },\n      transform: {\n        setRotation(x, y, z) {\n          if (!model) {\n            return;\n          }\n          // deg to rad\n          const radX = ((x ?? 0) * Math.PI) / 180;\n          const radY = ((y ?? 0) * Math.PI) / 180;\n          const radZ = ((z ?? 0) * Math.PI) / 180;\n          model.rotation.set(radX, radY, radZ);\n        },\n        setPosition(x, y, z) {\n          if (!x && !y && !z) {\n            return;\n          }\n          manualPosition = true;\n          camera.position.x = x ?? 0;\n          camera.position.y = y ?? 0;\n          camera.position.z = z ?? 0;\n          camera.lookAt(new THREE.Vector3());\n        },\n        setScale(x, y, z) {\n          if (!model) {\n            return;\n          }\n          model.scale.set(x ?? 1, y ?? 1, z ?? 1);\n        },\n      },\n    },\n    camera: {\n      get enableAutoRotate() {\n        return controls.autoRotate;\n      },\n      set enableAutoRotate(value) {\n        controls.autoRotate = value;\n      },\n      get enableZoom() {\n        return controls.enableZoom;\n      },\n      set enableZoom(value) {\n        controls.enableZoom = value;\n      },\n      get enablePan() {\n        return controls.enablePan;\n      },\n      set enablePan(value) {\n        controls.enablePan = value;\n      },\n      get enableRotate() {\n        return controls.enableRotate;\n      },\n      set enableRotate(value) {\n        controls.enableRotate = value;\n      },\n    },\n    dispose() {\n      renderer?.dispose();\n      controls.dispose();\n      renderer = undefined;\n    },\n  };\n  return api;\n}\n\nexport type SceneManager = ReturnType<typeof createSceneManager>;\n\nexport function useSceneManager() {\n  const [sceneManager, setSceneManager] = useState<SceneManager | null>(null);\n\n  const render = useCallback((container: HTMLElement, canvas: HTMLCanvasElement) => {\n    if (!sceneManager) {\n      const sceneManager = createSceneManager(container, canvas);\n      setSceneManager(sceneManager);\n      return sceneManager;\n    }\n    return sceneManager;\n  }, []);\n\n  return { sceneManager, render };\n}\n\n/**\n * from - https://github.com/donmccurdy/three-gltf-viewer/blob/main/src/viewer.js - MIT\n */\nfunction addModel(\n  scene: THREE.Scene,\n  object: THREE.Object3D,\n  animations: THREE.AnimationClip[],\n  camera: THREE.PerspectiveCamera,\n  controls: OrbitControls,\n  manualPosition: boolean\n) {\n  const box = new THREE.Box3().setFromObject(object);\n  const size = box.getSize(new THREE.Vector3()).length();\n  const center = box.getCenter(new THREE.Vector3());\n  object.position.x += object.position.x - center.x;\n  object.position.y += object.position.y - center.y;\n  object.position.z += object.position.z - center.z;\n  controls.reset();\n  controls.maxDistance = size * 10;\n  camera.near = size / 100;\n  camera.far = size * 100;\n  camera.updateProjectionMatrix();\n\n  if (!manualPosition) {\n    camera.position.copy(center);\n    camera.position.x += size / 2.0;\n    camera.position.y += size / 5.0;\n    camera.position.z += size / 2.0;\n    camera.lookAt(center);\n  }\n\n  controls.saveState();\n\n  scene.add(object);\n\n  let punctualLights = true;\n\n  object.traverse((node) => {\n    if (node instanceof THREE.Light) {\n      punctualLights = false;\n      return;\n    }\n    if (node instanceof THREE.Mesh) {\n      // TODO(https://github.com/mrdoob/three.js/pull/18235): Clean up.\n      node.material.depthWrite = !node.material.transparent;\n      if (node.material.emissiveMap) {\n        node.material.emissiveMap.encoding = THREE.sRGBEncoding;\n      }\n      if (node.material.map) {\n        node.material.map.encoding = THREE.sRGBEncoding;\n      }\n      node.material.needsUpdate = true;\n      return;\n    }\n  });\n\n  const mixer = new THREE.AnimationMixer(object);\n\n  playAllAnimations(mixer, animations);\n\n  return {\n    object,\n    animations,\n    mixer,\n    punctualLights,\n  };\n}\n\nfunction playAllAnimations(mixer: THREE.AnimationMixer, animations: THREE.AnimationClip[]) {\n  if (animations.length === 0) {\n    return;\n  }\n  // Play all animations after each other\n  mixer.addEventListener('finished', (e) => {\n    const action = e.action;\n    action.stop();\n    mixer.uncacheRoot(action._clip);\n    mixer.clipAction(animations[(action._clip.name || 0) + 1]).play();\n  });\n  mixer.clipAction(animations[0]).play();\n}\n","import { GALLERY_CONSTS, Options, ThreeDimensionalScene } from 'pro-gallery-lib';\nimport { ThreeDImplementation } from './types.js';\nimport { useSceneManager } from '../../helpers/3dManager.js';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nfunction mapSceneToStyleParams(scene: ThreeDimensionalScene, options: Options) {\n  return {\n    behaviourParams_item_threeDimensionalScene_transform_rotation:\n      scene.transform?.rotation || options.behaviourParams_item_threeDimensionalScene_transform_rotation,\n    behaviourParams_item_threeDimensionalScene_transform_scale:\n      scene.transform?.scale || options.behaviourParams_item_threeDimensionalScene_transform_scale,\n    behaviourParams_item_threeDimensionalScene_transform_position:\n      scene.transform?.position || options.behaviourParams_item_threeDimensionalScene_transform_position,\n    behaviourParams_item_threeDimensionalScene_controls_enablePan:\n      scene.controls?.enablePan || options.behaviourParams_item_threeDimensionalScene_controls_enablePan,\n    behaviourParams_item_threeDimensionalScene_controls_enableRotate:\n      scene.controls?.enableRotate || options.behaviourParams_item_threeDimensionalScene_controls_enableRotate,\n    behaviourParams_item_threeDimensionalScene_controls_enableZoom:\n      scene.controls?.enableZoom || options.behaviourParams_item_threeDimensionalScene_controls_enableZoom,\n    behaviourParams_item_threeDimensionalScene_controls_enableAutoRotate:\n      scene.controls?.enableAutoRotate || options.behaviourParams_item_threeDimensionalScene_controls_enableAutoRotate,\n  };\n}\n\nexport function use3DItem(props: ThreeDImplementation): ThreeDItemHooks {\n  const canvasRef = useRef<HTMLCanvasElement>(null);\n  const { sceneManager, render } = useSceneManager();\n  const [isLoaded, setIsLoaded] = useState(false);\n\n  const sceneParams = mapSceneToStyleParams(props.scene || {}, props.options);\n\n  const loadedManager = useMemo(() => {\n    if (!props.shouldPlay) {\n      return sceneManager;\n    }\n    if (sceneManager) {\n      return sceneManager;\n    }\n    if (!props.itemContainer.current || !canvasRef.current) {\n      return sceneManager;\n    }\n    const manager = render(props.itemContainer.current, canvasRef.current);\n    if (!manager) {\n      throw new Error('Could not create scene manager post play');\n    }\n    manager.opacity = 0;\n    manager.model\n      .load3DModel(props.createUrl(GALLERY_CONSTS.urlSizes.RESIZED, GALLERY_CONSTS.urlTypes.THREE_D))\n      .then(({ punctualLights }) => {\n        props.actions.setItemLoaded();\n        manager.opacity = 1;\n        manager.model.addGround();\n        if (punctualLights) {\n          manager.environment.addAmbientLight();\n          manager.environment.sun();\n        }\n        requestAnimationFrame(() => {\n          setIsLoaded(true);\n        });\n      });\n    return manager;\n  }, [render, sceneManager, props.shouldPlay, props.itemContainer.current, canvasRef.current]);\n\n  const postLoadUpdate = useCallback(\n    ({\n      behaviourParams_item_threeDimensionalScene_transform_rotation,\n      behaviourParams_item_threeDimensionalScene_transform_scale,\n      behaviourParams_item_threeDimensionalScene_transform_position,\n      behaviourParams_item_threeDimensionalScene_controls_enablePan,\n      behaviourParams_item_threeDimensionalScene_controls_enableRotate,\n      behaviourParams_item_threeDimensionalScene_controls_enableZoom,\n      behaviourParams_item_threeDimensionalScene_controls_enableAutoRotate,\n    }: typeof sceneParams) => {\n      if (!loadedManager) {\n        return;\n      }\n      const rotation = GALLERY_CONSTS.parse3DDimensions(behaviourParams_item_threeDimensionalScene_transform_rotation);\n      const scale = GALLERY_CONSTS.parse3DDimensions(behaviourParams_item_threeDimensionalScene_transform_scale);\n      const position = GALLERY_CONSTS.parse3DDimensions(behaviourParams_item_threeDimensionalScene_transform_position);\n      loadedManager.model.transform.setPosition(position.x, position.y, position.z);\n      loadedManager.model.transform.setRotation(rotation.x, rotation.y, rotation.z);\n      loadedManager.camera.enablePan = behaviourParams_item_threeDimensionalScene_controls_enablePan;\n      loadedManager.camera.enableRotate = behaviourParams_item_threeDimensionalScene_controls_enableRotate;\n      loadedManager.camera.enableZoom = behaviourParams_item_threeDimensionalScene_controls_enableZoom;\n      loadedManager.camera.enableAutoRotate = behaviourParams_item_threeDimensionalScene_controls_enableAutoRotate;\n\n      loadedManager.model.transform.setScale(scale.x, scale.y, scale.z);\n    },\n    [loadedManager]\n  );\n\n  useEffect(() => {\n    if (isLoaded && loadedManager && props.shouldPlay === loadedManager.stop) {\n      loadedManager.stop = !props.shouldPlay;\n      return;\n    }\n  }, [props.shouldPlay, loadedManager, isLoaded]);\n\n  postLoadUpdate(sceneParams);\n\n  useEffect(() => {\n    return () => {\n      if (loadedManager) {\n        loadedManager.dispose();\n      }\n    };\n  }, [loadedManager]);\n\n  return {\n    canvasRef,\n    isLoaded,\n  };\n}\n\nexport interface ThreeDItemHooks {\n  canvasRef: React.RefObject<HTMLCanvasElement>;\n  isLoaded: boolean;\n}\n","import React, { useEffect } from 'react';\nimport { ThreeDImplementation } from './types.js';\nimport { use3DItem } from './hooks.js';\nimport { GalleryUI } from '../media/GalleryUI.js';\nexport default function ThreeDItem(props: ThreeDImplementation): JSX.Element {\n  const { canvasRef, isLoaded } = use3DItem(props);\n\n  const canvas = (\n    <canvas\n      key={'canvas'}\n      width={'100%'}\n      height={'100%'}\n      ref={canvasRef}\n      style={{\n        background: 'transparent',\n        opacity: isLoaded ? 1 : 0,\n        transition: 'opacity 200ms',\n      }}\n    />\n  );\n\n  useOrbitControlsClickPropagation(props);\n\n  return (\n    <>\n      {canvas}\n      {props.thumbnailWithOverride({\n        extraClasses: [props.placeholderExtraClasses, isLoaded ? 'three-d-loaded' : 'three-d-loading'].join(' '),\n        overlay: <GalleryUI type={'rotateArrow'} size={60} />,\n      })}\n      {props.hover}\n    </>\n  );\n}\nfunction useOrbitControlsClickPropagation(props: ThreeDImplementation) {\n  useEffect(() => {\n    const container = props.itemContainer.current;\n    if (!props.shouldPlay && container) {\n      const onMouseDown = (e: MouseEvent) => {\n        e.stopImmediatePropagation();\n        const itemWrapper = container.querySelector<HTMLDivElement>('.gallery-item-wrapper');\n        if (itemWrapper) {\n          itemWrapper.click();\n        }\n      };\n      container.addEventListener('mousedown', onMouseDown);\n      return () => container.removeEventListener('mousedown', onMouseDown);\n    }\n    return;\n  }, [props.shouldPlay]);\n}\n","import React from 'react';\nimport { ThreeDProps } from './types.js';\nimport MediaItem, { MediaProps } from '../media/mediaItem.js';\nimport { optionsMap } from 'pro-gallery-lib';\n\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nconst ThreeDItem = React.lazy(() => import(/* webpackChunkName: \"ThreeDItem\" */ './3dItem.js'));\n\nexport default function ThreeDItemWrapper(\n  props: Omit<\n    MediaProps<ThreeDProps>,\n    'MediaImplementation' | 'enableImagePlaceholder' | 'showPlayButton' | 'placeholderExtraClasses'\n  >\n): JSX.Element {\n  const { options } = props;\n  const playTrigger = options[optionsMap.behaviourParams.item.threeDimensionalScene.playTrigger];\n  const showVideoPlayButton = options[optionsMap.behaviourParams.item.threeDimensionalScene.enablePlayButton];\n  return (\n    <MediaItem\n      {...props}\n      MediaImplementation={ThreeDItem}\n      playTrigger={playTrigger}\n      placeholderExtraClasses={['gallery-item-3d-placeholder']}\n      enableImagePlaceholder={true}\n      showPlayButton={showVideoPlayButton}\n    />\n  );\n}\n","import React from 'react';\nimport { GALLERY_CONSTS, optionsMap } from 'pro-gallery-lib';\n\nconst withSecondaryMedia = (WrappedComponent) => {\n  return (props) => {\n    const { itemWasHovered, isCurrentHover, hasSecondaryMedia, secondaryMediaItem } = props;\n    if (\n      props.options[optionsMap.behaviourParams.item.secondaryMedia.trigger] ===\n        GALLERY_CONSTS[optionsMap.behaviourParams.item.secondaryMedia.trigger].OFF ||\n      !hasSecondaryMedia\n    ) {\n      return <WrappedComponent {...props} />;\n    }\n    const getClasses = () => {\n      return ['secondary-media-item', isCurrentHover ? 'show' : 'hide'].join(' ');\n    };\n    const getSecondaryMediaItemProps = () => {\n      const { createUrl, createMagnifiedUrl, style, html } = secondaryMediaItem;\n      return {\n        ...props,\n        style,\n        html,\n        createUrl,\n        createMagnifiedUrl,\n      };\n    };\n    return (\n      <div className=\"item-with-secondary-media-container\">\n        <WrappedComponent {...props} />\n        <div className={getClasses()}>{itemWasHovered && <WrappedComponent {...getSecondaryMediaItemProps()} />}</div>\n      </div>\n    );\n  };\n};\n\nexport default withSecondaryMedia;\n","import { GALLERY_CONSTS, optionsMap } from 'pro-gallery-lib';\nimport React from 'react';\n\nexport default class TextItem extends React.Component {\n  constructor(props) {\n    super(props);\n    if (typeof this.props.actions.setItemLoaded === 'function') {\n      this.props.actions.setItemLoaded();\n    }\n  }\n\n  getTextDimensions() {\n    const { style, options, cropRatio, imageDimensions } = this.props;\n    const isVerticalItem = style.ratio < cropRatio - 0.01;\n    const { marginLeft, marginTop } = imageDimensions;\n    //text dimensions include scaling\n    const textHeight =\n      (isVerticalItem ? style.height / style.maxHeight : style.width / style.maxWidth) * style.maxHeight;\n    const textWidth =\n      (!isVerticalItem ? style.width / style.maxWidth : style.height / style.maxHeight) * style.maxWidth;\n    const translate =\n      options[optionsMap.layoutParams.crop.method] === GALLERY_CONSTS[optionsMap.layoutParams.crop.method].FIT\n        ? '0, 0'\n        : `${Math.round((style.width - textWidth) / 2)}px, ${Math.round((style.height - textHeight) / 2)}px`;\n    const scale = isVerticalItem ? style.height / style.maxHeight : style.width / style.maxWidth;\n    const transform = `translate(${translate}) scale(${scale})`;\n    const scaledMarginLeft = Math.round(marginLeft / scale);\n    const scaledMarginTop = Math.round(marginTop / scale);\n    return {\n      width: style.maxWidth + 'px',\n      height: style.maxHeight + 'px',\n      marginLeft: scaledMarginLeft,\n      marginTop: scaledMarginTop,\n      transformOrigin: `${-scaledMarginLeft}px ${-scaledMarginTop}px`,\n      WebkitTransform: transform,\n      MsTransform: transform,\n      OTransform: transform,\n      transform,\n    };\n  }\n\n  processInnerhtml(html) {\n    // Remove html class name from inner html elements\n    // In older version of the text editor we used font themes (set as classes). Without the iframe it clashes with Santa's css\n    try {\n      return html.replace(/class=\"font_\\d+\"/gm, '');\n    } catch (e) {\n      return html;\n    }\n  }\n\n  render() {\n    const { id, options, html, style, actions, imageDimensions } = this.props;\n    const processedHtml = this.processInnerhtml(html);\n    const dimensions = this.getTextDimensions();\n    const htmlParam = { dangerouslySetInnerHTML: { __html: processedHtml } };\n    const changeBgColor = {\n      style: Object.assign(\n        dimensions,\n        options[optionsMap.layoutParams.crop.method] === GALLERY_CONSTS[optionsMap.layoutParams.crop.method].FIT\n          ? { backgroundColor: style.bgColor }\n          : {}\n      ),\n    };\n    const attributes = {\n      ...htmlParam,\n      ...changeBgColor,\n    };\n    const itemContentStyle = {\n      height: imageDimensions && !this.props.isPrerenderMode ? imageDimensions.height : 'inherit',\n      backgroundColor:\n        options[optionsMap.layoutParams.crop.method] !== GALLERY_CONSTS[optionsMap.layoutParams.crop.method].FIT\n          ? style.bgColor\n          : 'inherit',\n    };\n\n    if (imageDimensions && imageDimensions.borderRadius) {\n      itemContentStyle.borderRadius = imageDimensions.borderRadius;\n    }\n    const containerClasses = [\n      'gallery-item-content',\n      this.props.isCurrentHover ? 'item-content-hover' : 'item-content-regular',\n    ];\n    return (\n      <div className={containerClasses.join(' ')} style={itemContentStyle}>\n        <div\n          className={'gallery-item-visible gallery-item gallery-item-loaded text-item'}\n          key={'item-text-' + id}\n          onTouchStart={actions.handleItemMouseDown}\n          onTouchEnd={actions.handleItemMouseUp}\n          data-hook=\"text-item\"\n          {...attributes}\n        />\n      </div>\n    );\n  }\n}\n/* eslint-enable prettier/prettier */\n","import React from 'react';\nimport { GALLERY_CONSTS, isEditMode, optionsMap, utils } from 'pro-gallery-lib';\n\nexport default class ItemHover extends React.Component {\n  getHoverClass() {\n    const { options, forceShowHover } = this.props;\n    const hoverClass = ['gallery-item-hover'];\n\n    hoverClass.push('fullscreen-' + (options.fullscreen ? 'enabled' : 'disabled'));\n\n    if (utils.isUndefined(options.itemOpacity)) {\n      //if gallery was just added to the page, and it's settings were never opened,\n      //the options of opacity and background were not set (are undefined),\n      //so we are using the default background & opacity (is scss under .gallery-item-hover.default)\n      hoverClass.push('default');\n    }\n\n    if (forceShowHover) {\n      //in mobile, when item is hovered (tapped, with all the right configurations), forceShowHover is true\n      hoverClass.push('force-hover');\n    } else if (utils.isMobile()) {\n      hoverClass.push('hide-hover');\n    }\n    if (this.props.isCurrentHover) {\n      hoverClass.push('item-overlay-hover');\n    } else {\n      hoverClass.push('item-overlay-regular');\n    }\n    return hoverClass.join(' ');\n  }\n\n  shouldRenderHoverInnerIfExist() {\n    const { itemWasHovered, options } = this.props;\n    const { alwaysShowHover, previewHover } = options;\n    const { APPEARS } = GALLERY_CONSTS[optionsMap.behaviourParams.item.overlay.hoveringBehaviour];\n    const { NO_EFFECT } = GALLERY_CONSTS[optionsMap.behaviourParams.item.overlay.hoverAnimation];\n\n    if (alwaysShowHover) {\n      return true;\n    }\n    if (isEditMode() && previewHover) {\n      return true;\n    }\n    if (\n      options[optionsMap.behaviourParams.item.overlay.hoveringBehaviour] === APPEARS &&\n      options[optionsMap.behaviourParams.item.overlay.hoverAnimation] !== NO_EFFECT\n    ) {\n      //when there is a specific Overlay Hover Animation, to support the animation we render the itemHover before any hover activity (see 'shouldHover()' in itemView).\n      //so in this specific case, the itemHover exists right away, but we do'nt want to render yet the hover-inner,\n      //the hover-inner will be rendered only after (at) the first hover an on, and not before.\n      return itemWasHovered;\n    }\n    return true;\n  }\n\n  getOverlayStyle() {\n    const { options, imageDimensions } = this.props;\n    const style = {};\n    const overlayPadding = options[optionsMap.behaviourParams.item.overlay.padding];\n    const overlaySizeUnits = options[optionsMap.behaviourParams.item.overlay.sizeUnits];\n    const requiredOverlaySize = options[optionsMap.behaviourParams.item.overlay.size];\n    const overlayPosition = options[optionsMap.behaviourParams.item.overlay.position];\n    const { LEFT, RIGHT, CENTERED_HORIZONTALLY } = GALLERY_CONSTS[optionsMap.behaviourParams.item.overlay.position];\n    const isHorizontal =\n      overlayPosition === LEFT || overlayPosition === RIGHT || overlayPosition === CENTERED_HORIZONTALLY;\n\n    const { width, height } = this.calcHeightAndWidth({\n      isHorizontal,\n      overlayPadding,\n      requiredOverlaySize,\n      imageDimensions,\n      overlaySizeUnits,\n    });\n    const margin = overlayPadding;\n    Object.assign(style, {\n      width,\n      height,\n      margin,\n      position: 'relative',\n    });\n    return style;\n  }\n\n  calcHeightAndWidth({ isHorizontal, overlayPadding, requiredOverlaySize, imageDimensions, overlaySizeUnits }) {\n    const calculatedField = isHorizontal ? 'width' : 'height';\n    const calculatedOppositeField = isHorizontal ? 'height' : 'width';\n    const overlaySizeCalc = this.calcOverlaySize(\n      imageDimensions[calculatedField],\n      requiredOverlaySize,\n      overlaySizeUnits,\n      overlayPadding\n    );\n    return {\n      [calculatedField]: overlaySizeCalc,\n      [calculatedOppositeField]: imageDimensions[calculatedOppositeField] - 2 * overlayPadding,\n    };\n  }\n\n  calcOverlaySize(widthOrHeight, requiredOverlaySize, overlaySizeUnits, overlayPadding) {\n    const widthOrHeightCalc = widthOrHeight + -2 * overlayPadding;\n    const overlaySize = Math.min(\n      widthOrHeightCalc,\n      overlaySizeUnits === GALLERY_CONSTS[optionsMap.behaviourParams.item.overlay.sizeUnits].PERCENT\n        ? widthOrHeightCalc * (requiredOverlaySize / 100)\n        : requiredOverlaySize\n    );\n    return Math.max(0, overlaySize);\n  }\n\n  getOverlayPositionByFlex() {\n    const { options, imageDimensions } = this.props;\n    const overlayPosition = options[optionsMap.behaviourParams.item.overlay.position];\n    const { width, height, marginTop, marginLeft } = imageDimensions;\n    const style = {\n      width,\n      height,\n      marginTop,\n      marginLeft,\n      display: 'flex',\n      position: 'absolute',\n      top: 0,\n      left: 0,\n    };\n    const { RIGHT, BOTTOM, CENTERED_HORIZONTALLY, CENTERED_VERTICALLY } =\n      GALLERY_CONSTS[optionsMap.behaviourParams.item.overlay.position];\n    switch (overlayPosition) {\n      case RIGHT:\n        Object.assign(style, {\n          justifyContent: 'flex-end',\n        });\n        break;\n      case BOTTOM:\n        Object.assign(style, {\n          alignItems: 'flex-end',\n        });\n        break;\n      case CENTERED_HORIZONTALLY:\n        Object.assign(style, {\n          justifyContent: 'center',\n        });\n        break;\n      case CENTERED_VERTICALLY:\n        Object.assign(style, {\n          alignItems: 'center',\n        });\n        break;\n    }\n    return style;\n  }\n\n  render() {\n    const { actions, idx, renderCustomInfo } = this.props;\n    const hoverClass = this.getHoverClass();\n    const overlayStyle = this.getOverlayStyle();\n    const overlayPositionCalc = this.getOverlayPositionByFlex();\n    return (\n      <div className={'item-hover-flex-container'} style={overlayPositionCalc}>\n        <div\n          key={'item-hover-' + idx}\n          data-hook={'item-hover-' + idx}\n          className={hoverClass}\n          onTouchStart={actions.handleItemMouseDown}\n          onTouchEnd={actions.handleItemMouseUp}\n          style={overlayStyle}\n        >\n          {this.shouldRenderHoverInnerIfExist() && renderCustomInfo ? (\n            <div className=\"gallery-item-hover-inner\">{renderCustomInfo()}</div>\n          ) : null}\n        </div>\n      </div>\n    );\n  }\n}\n","import { window, utils, isSiteMode, isSEOMode, GALLERY_CONSTS, optionsMap } from 'pro-gallery-lib';\n\nfunction shouldChangeActiveElement() {\n  return (isSiteMode() || isSEOMode()) && window.document;\n}\n\nexport function onAnchorFocus({ itemContainer, enableExperimentalFeatures, itemAnchor }) {\n  if (shouldChangeActiveElement() && enableExperimentalFeatures) {\n    /* Relevant only for Screen-Reader cases:\n         When we navigate on the accessibility tree, screen readers stops and focuses on the <a> tag,\n         so it will not go deeper to the item-container keyDown event */\n    const activeElement = window.document.activeElement;\n    if (activeElement === itemAnchor) {\n      itemContainer.focus();\n    }\n  }\n}\n\nfunction isThisGalleryElementInFocus(className, galleryId) {\n  const activeElement = window.document.activeElement;\n  return (\n    String(activeElement.className).includes(className) &&\n    !!window.document.querySelector(`#pro-gallery-${galleryId} #${String(activeElement.id)}`)\n  );\n}\n\nexport function changeActiveElementIfNeeded({ prevProps, currentProps, itemActionRef }) {\n  try {\n    if (shouldChangeActiveElement() && window.document.activeElement.className) {\n      const isGalleryItemAction = isThisGalleryElementInFocus('item-action', currentProps.galleryId);\n      const isShowMoreInFocus = isThisGalleryElementInFocus('show-more', currentProps.galleryId);\n      if (isGalleryItemAction || isShowMoreInFocus) {\n        if (\n          currentProps.thumbnailHighlightId !== prevProps.thumbnailHighlightId &&\n          currentProps.thumbnailHighlightId === currentProps.id\n        ) {\n          // if the highlighted thumbnail changed and it is the same as this itemview's\n          itemActionRef.focus();\n        } else if (\n          currentProps.activeIndex !== prevProps.activeIndex &&\n          currentProps.activeIndex === currentProps.idx\n        ) {\n          //check if activeIndex has changed to the current item\n          itemActionRef.focus();\n        }\n      }\n    }\n  } catch (e) {\n    console.error('Could not set focus to active element', e);\n  }\n}\n\nexport function shouldCreateVideoPlaceholder(options) {\n  return (\n    options[optionsMap.behaviourParams.item.video.enablePlaceholder] &&\n    (!utils.isSingleItemHorizontalDisplay(options) ||\n      options[optionsMap.behaviourParams.item.video.playTrigger] !==\n        GALLERY_CONSTS[optionsMap.behaviourParams.item.video.playTrigger].AUTO)\n  );\n}\n","import { GALLERY_CONSTS, window, utils, optionsMap } from 'pro-gallery-lib';\n\nclass CssScrollHelper {\n  constructor() {\n    this.pgScrollSteps = [40960, 20480, 10240, 5120, 2560, 1280, 640, 320, 160, 80, 40, 20, 10];\n    this.pgScrollClassName = 'pgscl';\n\n    this.screenSize = Math.max(window.screen.width, window.screen.height);\n\n    this.scrollCss = [];\n    this.scrollCssProps = [];\n    this.calcScrollPaddings(false);\n  }\n\n  calcScrollPaddings() {\n    //padding: [belowScreen, aboveScreen]\n    //padding: [above images, below image]\n    this.allPagePadding = () => [Infinity, Infinity];\n    this.inScreenPadding = () => [0, 0];\n    this.aboveScreenPadding = () => [0, Infinity];\n    this.justBelowScreenPadding = (itemHeight) => [Infinity, -1 * (itemHeight + this.screenSize)];\n    this.justBelowAndAboveScreenPadding = () => [2560, Infinity];\n    this.justBelowAndInScreenPadding = () => [5120, 0];\n    this.belowScreenPadding = () => [Infinity, 0];\n\n    this.highResPadding = () => [5120, Infinity];\n    this.lowResPadding = () => [10240, Infinity];\n  }\n\n  getSellectorDomId({ id, idx }) {\n    const shortId = String(id).replace(/[\\W]+/g, '');\n    return `pgi${shortId}_${idx}`;\n  }\n\n  buildScrollClassName(id, idx, val) {\n    const shortId = String(id).replace(/[\\W]+/g, '').slice(-8);\n    return `${this.pgScrollClassName}_${shortId}_${val}-${this.pgScrollSteps[idx] + Number(val)}`;\n  }\n\n  calcScrollClasses(id, scrollTop) {\n    return (\n      `${this.pgScrollClassName}-${scrollTop} ` +\n      this.pgScrollSteps\n        .map((step, idx) => this.buildScrollClassName(id, idx, Math.floor(scrollTop / step) * step))\n        .join(' ')\n    );\n  }\n\n  calcScrollCss({ id, items, options, container }) {\n    utils.isVerbose() && console.time('CSS Scroll');\n    if (!(items && items.length)) {\n      return [];\n    }\n    const scrollAnimation = options[optionsMap.behaviourParams.gallery.scrollAnimation];\n    if (scrollAnimation === GALLERY_CONSTS[optionsMap.behaviourParams.gallery.scrollAnimation].NO_EFFECT) {\n      return [];\n    }\n    this.screenSize =\n      options[optionsMap.layoutParams.structure.scrollDirection] ===\n      GALLERY_CONSTS[optionsMap.layoutParams.structure.scrollDirection].HORIZONTAL\n        ? Math.min(window.outerWidth, window.screen.width, container.galleryWidth)\n        : Math.min(window.outerHeight, window.screen.height);\n    if (\n      options[optionsMap.layoutParams.structure.scrollDirection] ===\n        GALLERY_CONSTS[optionsMap.layoutParams.structure.scrollDirection].VERTICAL &&\n      utils.isMobile()\n    ) {\n      this.screenSize += 50;\n    }\n    this.calcScrollPaddings();\n\n    const [lastItem] = items.slice(-1);\n    const { top, right } = lastItem.offset;\n    const maxStep = this.pgScrollSteps[0];\n    this.minHeight = 0 - maxStep;\n    this.maxHeight =\n      (Math.ceil(\n        ((options[optionsMap.layoutParams.structure.scrollDirection] ===\n        GALLERY_CONSTS[optionsMap.layoutParams.structure.scrollDirection].HORIZONTAL\n          ? right\n          : top) +\n          this.screenSize) /\n          maxStep\n      ) +\n        1) *\n      maxStep;\n\n    const cssScroll = items.map((item) => this.calcScrollCssForItem({ id, item, options }));\n    utils.isVerbose() && console.timeEnd('CSS Scroll');\n\n    return cssScroll;\n  }\n\n  shouldCalcScrollCss({ type }) {\n    if (type === 'video' || type === 'text' || type === '3d') {\n      return false;\n    }\n    return true;\n  }\n\n  createScrollSelectorsFunction({ id, item, options }) {\n    const imageTop =\n      options[optionsMap.layoutParams.structure.scrollDirection] ===\n      GALLERY_CONSTS[optionsMap.layoutParams.structure.scrollDirection].HORIZONTAL\n        ? item.offset.left - this.screenSize\n        : item.offset.top - this.screenSize;\n    const imageBottom =\n      options[optionsMap.layoutParams.structure.scrollDirection] ===\n      GALLERY_CONSTS[optionsMap.layoutParams.structure.scrollDirection].HORIZONTAL\n        ? item.offset.left + item.width\n        : item.offset.top + item.height;\n    const minStep = this.pgScrollSteps[this.pgScrollSteps.length - 1];\n    const ceil = (num, step) => Math.ceil(Math.min(this.maxHeight, num) / step) * step;\n    const floor = (num, step) => Math.floor(Math.max(this.minHeight, num) / step) * step;\n    const sellectorDomId = this.getSellectorDomId(item);\n    return (padding, suffix) => {\n      const [before, after] = padding;\n      if (before === Infinity && after === Infinity) {\n        return `#pro-gallery-${id} #${sellectorDomId} ${suffix}`;\n      }\n      let from = floor(imageTop - before, minStep);\n      const to = ceil(imageBottom + after, minStep);\n      // if (utils.isVerbose()) {\n      //   console.log(\n      //     `CSS SCROLL - item #${item.idx} display range is: (${from} - ${to})`,\n      //   );\n      // }\n      const scrollClasses = [];\n      while (from < to) {\n        const largestDividerIdx = this.pgScrollSteps.findIndex(step => (from % step === 0 && from + step <= to)); //eslint-disable-line\n        if (largestDividerIdx === -1) {\n          console.error(\n            \"largestDividerIdx is -1. Couldn't find index in pgScrollSteps array.\\nfrom =\",\n            from,\n            '\\nto =',\n            to,\n            '\\npadding[0] =',\n            padding[0],\n            '\\npadding[1] =',\n            padding[1]\n          );\n          break;\n        }\n        scrollClasses.push(\n          `.${this.buildScrollClassName(id, largestDividerIdx, from)} ~ div #${sellectorDomId} ${suffix}`\n        );\n        from += this.pgScrollSteps[largestDividerIdx];\n        // console.count('pgScroll class created');\n      }\n      return scrollClasses.join(', ');\n    };\n  }\n\n  calcScrollCssForItem({ id, item, options }) {\n    const { idx } = item;\n    let scrollCss = '';\n    const createScrollSelectors = this.createScrollSelectorsFunction({\n      id,\n      item,\n      options,\n    });\n\n    //scrollAnimation\n    scrollCss += this.createScrollAnimationsIfNeeded({\n      idx,\n      item,\n      options,\n      createScrollSelectors,\n    });\n\n    // if (utils.isVerbose()) {\n    //   console.log(\n    //     'CSS SCROLL - css calc for item #' + idx,\n    //     item,\n    //     this.scrollCss[idx],\n    //   );\n    // }\n\n    this.scrollCss[idx] = scrollCss || this.scrollCss[idx];\n\n    return this.scrollCss[idx];\n    // console.count('pgScroll item created');\n  }\n\n  createScrollAnimationsIfNeeded({ idx, options, createScrollSelectors }) {\n    const scrollAnimation = options[optionsMap.behaviourParams.gallery.scrollAnimation];\n    const { NO_EFFECT, FADE_IN, GRAYSCALE, SLIDE_UP, EXPAND, SHRINK, ZOOM_OUT, ONE_COLOR, MAIN_COLOR, BLUR } =\n      GALLERY_CONSTS[optionsMap.behaviourParams.gallery.scrollAnimation];\n\n    const isRTL =\n      options[optionsMap.behaviourParams.gallery.layoutDirection] ===\n      GALLERY_CONSTS[optionsMap.behaviourParams.gallery.layoutDirection].RIGHT_TO_LEFT;\n    const scrollDirection = options[optionsMap.layoutParams.structure.scrollDirection];\n    if (scrollAnimation === NO_EFFECT) {\n      return '';\n    }\n\n    const _randomDelay = ((idx % 3) + 1) * 100; //100 - 300\n    const _randomDuration = ((idx % 3) + 1) * 100; //100 - 300\n\n    const animationPreparationPadding = this.allPagePadding();\n    const animationActivePadding = this.aboveScreenPadding();\n\n    let scrollAnimationCss = '';\n    // notice: these 2 animations must have the blurry image\n    if (scrollAnimation === MAIN_COLOR || scrollAnimation === BLUR) {\n      scrollAnimationCss +=\n        createScrollSelectors(animationPreparationPadding, ` [data-hook=\"image-item-overlay\"]`) +\n        `{filter: opacity(1); transition: filter 1.${_randomDuration}s ease-in ${_randomDelay}ms !important;}`;\n      scrollAnimationCss +=\n        createScrollSelectors(animationActivePadding, ` [data-hook=\"image-item-overlay\"]`) +\n        `{filter: opacity(0) !important;}`;\n    }\n\n    if (scrollAnimation === FADE_IN) {\n      scrollAnimationCss +=\n        createScrollSelectors(animationPreparationPadding, '') +\n        `{filter: opacity(0); transition: filter 1.${_randomDuration}s ease-in !important;}`;\n      scrollAnimationCss += createScrollSelectors(animationActivePadding, '') + `{filter: opacity(1) !important;}`;\n    }\n\n    if (scrollAnimation === GRAYSCALE) {\n      scrollAnimationCss +=\n        createScrollSelectors(animationPreparationPadding, ' .gallery-item-wrapper') +\n        `{filter: grayscale(100%); transition: filter 1.${200 + _randomDuration}s ease-in !important;}`;\n      scrollAnimationCss +=\n        createScrollSelectors(animationActivePadding, ' .gallery-item-wrapper') + `{filter: grayscale(0) !important;}`;\n    }\n\n    if (scrollAnimation === SLIDE_UP) {\n      const axis =\n        scrollDirection === GALLERY_CONSTS[optionsMap.layoutParams.structure.scrollDirection].HORIZONTAL ? 'X' : 'Y';\n      const direction = isRTL ? '-' : '';\n      scrollAnimationCss +=\n        createScrollSelectors(animationPreparationPadding, '') +\n        `{transform: translate${axis}(${direction}100px); transition: transform 0.8s cubic-bezier(.13,.78,.53,.92) !important;}`;\n      scrollAnimationCss +=\n        createScrollSelectors(animationActivePadding, '') + `{transform: translate${axis}(0) !important;}`;\n    }\n\n    if (scrollAnimation === EXPAND) {\n      scrollAnimationCss +=\n        createScrollSelectors(animationPreparationPadding, '') +\n        `{transform: scale(0.95); transition: transform 1s cubic-bezier(.13,.78,.53,.92) ${_randomDelay}ms !important;}`;\n      scrollAnimationCss += createScrollSelectors(animationActivePadding, '') + `{transform: scale(1) !important;}`;\n    }\n\n    if (scrollAnimation === SHRINK) {\n      scrollAnimationCss +=\n        createScrollSelectors(animationPreparationPadding, '') +\n        `{transform: scale(1.05); transition: transform 1s cubic-bezier(.13,.78,.53,.92) ${_randomDelay}ms !important;}`;\n      scrollAnimationCss += createScrollSelectors(animationActivePadding, '') + `{transform: scale(1) !important;}`;\n    }\n\n    if (scrollAnimation === ZOOM_OUT) {\n      scrollAnimationCss +=\n        createScrollSelectors(animationPreparationPadding, ' .gallery-item-wrapper') +\n        `{transform: scale(1.1); transition: transform 1.2s cubic-bezier(.13,.78,.53,.92) ${_randomDelay}ms !important;}`;\n      scrollAnimationCss +=\n        createScrollSelectors(animationActivePadding, ' .gallery-item-wrapper') + `{transform: scale(1) !important;}`;\n    }\n\n    if (scrollAnimation === ONE_COLOR) {\n      const oneColorAnimationColor =\n        options.oneColorAnimationColor && options.oneColorAnimationColor.value\n          ? options.oneColorAnimationColor.value\n          : 'transparent';\n\n      scrollAnimationCss +=\n        createScrollSelectors(animationPreparationPadding, '') + `{background-color: ${oneColorAnimationColor};}`;\n      scrollAnimationCss +=\n        createScrollSelectors(animationPreparationPadding, ' .gallery-item-wrapper') +\n        `{filter: opacity(0); transition: filter 0.${600 + _randomDuration}s ease-in !important;}`;\n      scrollAnimationCss +=\n        createScrollSelectors(animationActivePadding, ' .gallery-item-wrapper') + `{filter: opacity(1) !important;}`;\n    }\n\n    return scrollAnimationCss;\n  }\n}\n\nexport const cssScrollHelper = new CssScrollHelper();\n\n// Testing the best combination of scroll steps (goal is to reduce the number of classe sper item to minimum)\n// ----------------------------------------------------------------------------------------------------------\n// pgScrollSteps = [1000, 100, 10]; -> 6759 / 354 = 19 classes per item\n// pgScrollSteps = [2500, 500, 100, 20]; -> 4137 / 354 = 11.6 classes per item\n// pgScrollSteps = [2560, 1280, 640, 320, 160, 80, 40, 20]; -> 2502 / 354 = 7 classes per item\n// pgScrollSteps = [5120, 2560, 1280, 640, 320, 160, 80, 40, 20]; -> 2502 / 354 = 7 classes per item\n// pgScrollSteps = [5120, 2560, 1280, 640, 320, 160, 80, 40, 20, 10]; -> 2772 / 354 = 7.8 classes per item\n/* eslint-enable prettier/prettier */\n","import { GALLERY_CONSTS, optionsMap, utils } from 'pro-gallery-lib';\n\nexport function getContainerStyle(options) {\n  return {\n    ...((options[optionsMap.layoutParams.info.layout] ===\n      GALLERY_CONSTS[optionsMap.layoutParams.info.layout].ATTACHED_BACKGROUND ||\n      GALLERY_CONSTS.hasHoverPlacement(options[optionsMap.layoutParams.info.placement])) && {\n      ...getBorderStyle(\n        options[optionsMap.stylingParams.itemBorderRadius],\n        options[optionsMap.stylingParams.itemBorderWidth],\n        options[optionsMap.stylingParams.itemBorderColor]\n      ),\n      ...boxShadow(options),\n    }),\n  };\n}\n\nfunction boxShadow(options) {\n  let _boxShadow = {};\n  if (options[optionsMap.stylingParams.itemEnableShadow]) {\n    const itemShadowBlur = options[optionsMap.stylingParams.itemShadowBlur];\n    const itemShadowDirection = options[optionsMap.stylingParams.itemShadowDirection];\n    const itemShadowSize = options[optionsMap.stylingParams.itemShadowSize];\n    const alpha = ((-1 * (Number(itemShadowDirection) - 90)) / 360) * 2 * Math.PI;\n    const shadowX = Math.round(itemShadowSize * Math.cos(alpha));\n    const shadowY = Math.round(-1 * itemShadowSize * Math.sin(alpha));\n    _boxShadow = {\n      boxShadow: `${shadowX}px ${shadowY}px ${itemShadowBlur}px ${utils.formatColor(\n        options[optionsMap.stylingParams.itemShadowOpacityAndColor]\n      )}`,\n    };\n  }\n  return _boxShadow;\n}\n\nexport function getImageStyle(options) {\n  return {\n    ...(!GALLERY_CONSTS.hasHoverPlacement(options[optionsMap.layoutParams.info.placement]) &&\n      (options[optionsMap.layoutParams.info.layout] ===\n        GALLERY_CONSTS[optionsMap.layoutParams.info.layout].NO_BACKGROUND ||\n        options[optionsMap.layoutParams.info.layout] ===\n          GALLERY_CONSTS[optionsMap.layoutParams.info.layout].SEPARATED_BACKGROUND) && {\n        ...getBorderStyle(\n          options[optionsMap.stylingParams.itemBorderRadius],\n          options[optionsMap.stylingParams.itemBorderWidth],\n          options[optionsMap.stylingParams.itemBorderColor]\n        ),\n      }),\n  };\n}\n\nfunction getBorderStyle(borderRadius, borderWidth, borderColor) {\n  return {\n    overflow: 'hidden',\n    ...(borderRadius > 0 && { borderRadius }),\n    ...(borderWidth > 0 && {\n      borderWidth: borderWidth + 'px',\n      borderColor: utils.formatColor(borderColor),\n      borderStyle: 'solid',\n    }),\n  };\n}\n\nexport function getOuterInfoStyle(placement, options, mediaHeight, infoHeight) {\n  const styles = {\n    ...(GALLERY_CONSTS.hasExternalHorizontalPlacement(placement) && {\n      height: mediaHeight,\n      float: GALLERY_CONSTS.isExternalRightPlacement(placement) ? 'right' : 'left',\n    }),\n    ...(GALLERY_CONSTS.hasExternalVerticalPlacement(placement) && {\n      height: infoHeight,\n      boxSizing: 'content-box',\n    }),\n  };\n  if (\n    options[optionsMap.layoutParams.info.layout] ===\n    GALLERY_CONSTS[optionsMap.layoutParams.info.layout].SEPARATED_BACKGROUND\n  ) {\n    return {\n      ...styles,\n      ...getBorderStyle(\n        options[optionsMap.layoutParams.info.border.radius],\n        options[optionsMap.layoutParams.info.border.width],\n        options[optionsMap.layoutParams.info.border.color]\n      ),\n      ...(GALLERY_CONSTS.hasExternalAbovePlacement(placement) && {\n        marginBottom: options[optionsMap.layoutParams.info.spacing],\n      }),\n      ...(GALLERY_CONSTS.hasExternalBelowPlacement(placement) && {\n        marginTop: options[optionsMap.layoutParams.info.spacing],\n      }),\n    };\n  }\n  return styles;\n}\n\nfunction getInnerInfoStylesAboveOrBelow(options, infoHeight) {\n  return {\n    width: '100%',\n    height: infoHeight,\n  };\n}\n\nfunction getInnerInfoStylesRightOrLeft(options, infoWidth) {\n  return {\n    height: '100%',\n    width: infoWidth,\n  };\n}\n\nexport function getInnerInfoStyle(placement, options, infoHeight, infoWidth) {\n  const commonStyles = {\n    ...((options[optionsMap.layoutParams.info.layout] ===\n      GALLERY_CONSTS[optionsMap.layoutParams.info.layout].SEPARATED_BACKGROUND ||\n      options[optionsMap.layoutParams.info.layout] ===\n        GALLERY_CONSTS[optionsMap.layoutParams.info.layout].ATTACHED_BACKGROUND) &&\n      options.textBoxFillColor &&\n      options.textBoxFillColor.value && {\n        backgroundColor: options.textBoxFillColor.value,\n      }),\n    overflow: 'hidden',\n    boxSizing: 'border-box',\n  };\n\n  const infoAboveOrBelow = GALLERY_CONSTS.hasExternalVerticalPlacement(placement);\n  const infoRightOrLeft = GALLERY_CONSTS.hasExternalHorizontalPlacement(placement);\n\n  return {\n    ...commonStyles,\n    ...(infoAboveOrBelow && getInnerInfoStylesAboveOrBelow(options, infoHeight)),\n    ...(infoRightOrLeft && getInnerInfoStylesRightOrLeft(options, infoWidth)),\n  };\n}\n","export function getStyle(isCrop, isWiderThenContainer) {\n  const CALC = 'calc(100% + 1px)';\n  return isCrop ? getCrop() : getNonCrop();\n\n  function getCrop() {\n    return {\n      height: isWiderThenContainer ? CALC : 'auto',\n      width: isWiderThenContainer ? 'auto' : CALC,\n      position: 'absolute',\n      margin: 'auto',\n      minHeight: '100%',\n      minWidth: '100%',\n      left: '-100%',\n      right: '-100%',\n      top: '-100%',\n      bottom: '-100%',\n    };\n  }\n\n  function getNonCrop() {\n    return {\n      width: isWiderThenContainer ? CALC : 'auto',\n      height: isWiderThenContainer ? '100%' : CALC,\n    };\n  }\n}\n\nexport default getStyle;\n","\nmodule.exports = function load (src, opts, cb) {\n  var head = document.head || document.getElementsByTagName('head')[0]\n  var script = document.createElement('script')\n\n  if (typeof opts === 'function') {\n    cb = opts\n    opts = {}\n  }\n\n  opts = opts || {}\n  cb = cb || function() {}\n\n  script.type = opts.type || 'text/javascript'\n  script.charset = opts.charset || 'utf8';\n  script.async = 'async' in opts ? !!opts.async : true\n  script.src = src\n\n  if (opts.attrs) {\n    setAttributes(script, opts.attrs)\n  }\n\n  if (opts.text) {\n    script.text = '' + opts.text\n  }\n\n  var onend = 'onload' in script ? stdOnEnd : ieOnEnd\n  onend(script, cb)\n\n  // some good legacy browsers (firefox) fail the 'in' detection above\n  // so as a fallback we always set onload\n  // old IE will ignore this and new IE will set onload\n  if (!script.onload) {\n    stdOnEnd(script, cb);\n  }\n\n  head.appendChild(script)\n}\n\nfunction setAttributes(script, attrs) {\n  for (var attr in attrs) {\n    script.setAttribute(attr, attrs[attr]);\n  }\n}\n\nfunction stdOnEnd (script, cb) {\n  script.onload = function () {\n    this.onerror = this.onload = null\n    cb(null, script)\n  }\n  script.onerror = function () {\n    // this.onload = null here is necessary\n    // because even IE9 works not like others\n    this.onerror = this.onload = null\n    cb(new Error('Failed to load ' + this.src), script)\n  }\n}\n\nfunction ieOnEnd (script, cb) {\n  script.onreadystatechange = function () {\n    if (this.readyState != 'complete' && this.readyState != 'loaded') return\n    this.onreadystatechange = null\n    cb(null, script) // there is no way to catch loading errors in IE8\n  }\n}\n","'use strict';\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction getMergeFunction(key, options) {\n\tif (!options.customMerge) {\n\t\treturn deepmerge\n\t}\n\tvar customMerge = options.customMerge(key);\n\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n\treturn Object.getOwnPropertySymbols\n\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\treturn Object.propertyIsEnumerable.call(target, symbol)\n\t\t})\n\t\t: []\n}\n\nfunction getKeys(target) {\n\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n}\n\nfunction propertyIsOnObject(object, property) {\n\ttry {\n\t\treturn property in object\n\t} catch(_) {\n\t\treturn false\n\t}\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n\treturn propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n\t\t&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n\t\t\t&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tgetKeys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tgetKeys(source).forEach(function(key) {\n\t\tif (propertyIsUnsafe(target, key)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\t// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n\t// implementations can use it. The caller may not replace it.\n\toptions.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.parseStartTime = parseStartTime;\nexports.parseEndTime = parseEndTime;\nexports.randomString = randomString;\nexports.queryString = queryString;\nexports.getSDK = getSDK;\nexports.getConfig = getConfig;\nexports.omit = omit;\nexports.callPlayer = callPlayer;\nexports.isMediaStream = isMediaStream;\nexports.isBlobUrl = isBlobUrl;\nexports.supportsWebKitPresentationMode = supportsWebKitPresentationMode;\n\nvar _loadScript = _interopRequireDefault(require(\"load-script\"));\n\nvar _deepmerge = _interopRequireDefault(require(\"deepmerge\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nvar MATCH_START_QUERY = /[?&#](?:start|t)=([0-9hms]+)/;\nvar MATCH_END_QUERY = /[?&#]end=([0-9hms]+)/;\nvar MATCH_START_STAMP = /(\\d+)(h|m|s)/g;\nvar MATCH_NUMERIC = /^\\d+$/; // Parse YouTube URL for a start time param, ie ?t=1h14m30s\n// and return the start time in seconds\n\nfunction parseTimeParam(url, pattern) {\n  if (url instanceof Array) {\n    return undefined;\n  }\n\n  var match = url.match(pattern);\n\n  if (match) {\n    var stamp = match[1];\n\n    if (stamp.match(MATCH_START_STAMP)) {\n      return parseTimeString(stamp);\n    }\n\n    if (MATCH_NUMERIC.test(stamp)) {\n      return parseInt(stamp);\n    }\n  }\n\n  return undefined;\n}\n\nfunction parseTimeString(stamp) {\n  var seconds = 0;\n  var array = MATCH_START_STAMP.exec(stamp);\n\n  while (array !== null) {\n    var _array = array,\n        _array2 = _slicedToArray(_array, 3),\n        count = _array2[1],\n        period = _array2[2];\n\n    if (period === 'h') seconds += parseInt(count, 10) * 60 * 60;\n    if (period === 'm') seconds += parseInt(count, 10) * 60;\n    if (period === 's') seconds += parseInt(count, 10);\n    array = MATCH_START_STAMP.exec(stamp);\n  }\n\n  return seconds;\n}\n\nfunction parseStartTime(url) {\n  return parseTimeParam(url, MATCH_START_QUERY);\n}\n\nfunction parseEndTime(url) {\n  return parseTimeParam(url, MATCH_END_QUERY);\n} // http://stackoverflow.com/a/38622545\n\n\nfunction randomString() {\n  return Math.random().toString(36).substr(2, 5);\n}\n\nfunction queryString(object) {\n  return Object.keys(object).map(function (key) {\n    return \"\".concat(key, \"=\").concat(object[key]);\n  }).join('&');\n}\n\nfunction getGlobal(key) {\n  if (window[key]) {\n    return window[key];\n  }\n\n  if (window.exports && window.exports[key]) {\n    return window.exports[key];\n  }\n\n  if (window.module && window.module.exports && window.module.exports[key]) {\n    return window.module.exports[key];\n  }\n\n  return null;\n} // Util function to load an external SDK\n// or return the SDK if it is already loaded\n\n\nvar requests = {};\n\nfunction getSDK(url, sdkGlobal) {\n  var sdkReady = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n  var isLoaded = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : function () {\n    return true;\n  };\n  var fetchScript = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : _loadScript[\"default\"];\n  var existingGlobal = getGlobal(sdkGlobal);\n\n  if (existingGlobal && isLoaded(existingGlobal)) {\n    return Promise.resolve(existingGlobal);\n  }\n\n  return new Promise(function (resolve, reject) {\n    // If we are already loading the SDK, add the resolve and reject\n    // functions to the existing array of requests\n    if (requests[url]) {\n      requests[url].push({\n        resolve: resolve,\n        reject: reject\n      });\n      return;\n    }\n\n    requests[url] = [{\n      resolve: resolve,\n      reject: reject\n    }];\n\n    var onLoaded = function onLoaded(sdk) {\n      // When loaded, resolve all pending request promises\n      requests[url].forEach(function (request) {\n        return request.resolve(sdk);\n      });\n    };\n\n    if (sdkReady) {\n      var previousOnReady = window[sdkReady];\n\n      window[sdkReady] = function () {\n        if (previousOnReady) previousOnReady();\n        onLoaded(getGlobal(sdkGlobal));\n      };\n    }\n\n    fetchScript(url, function (err) {\n      if (err) {\n        // Loading the SDK failed – reject all requests and\n        // reset the array of requests for this SDK\n        requests[url].forEach(function (request) {\n          return request.reject(err);\n        });\n        requests[url] = null;\n      } else if (!sdkReady) {\n        onLoaded(getGlobal(sdkGlobal));\n      }\n    });\n  });\n}\n\nfunction getConfig(props, defaultProps) {\n  return (0, _deepmerge[\"default\"])(defaultProps.config, props.config);\n}\n\nfunction omit(object) {\n  var _ref;\n\n  for (var _len = arguments.length, arrays = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n    arrays[_key - 1] = arguments[_key];\n  }\n\n  var omitKeys = (_ref = []).concat.apply(_ref, arrays);\n\n  var output = {};\n  var keys = Object.keys(object);\n\n  for (var _i2 = 0, _keys = keys; _i2 < _keys.length; _i2++) {\n    var key = _keys[_i2];\n\n    if (omitKeys.indexOf(key) === -1) {\n      output[key] = object[key];\n    }\n  }\n\n  return output;\n}\n\nfunction callPlayer(method) {\n  var _this$player;\n\n  // Util method for calling a method on this.player\n  // but guard against errors and console.warn instead\n  if (!this.player || !this.player[method]) {\n    var message = \"ReactPlayer: \".concat(this.constructor.displayName, \" player could not call %c\").concat(method, \"%c \\u2013 \");\n\n    if (!this.player) {\n      message += 'The player was not available';\n    } else if (!this.player[method]) {\n      message += 'The method was not available';\n    }\n\n    console.warn(message, 'font-weight: bold', '');\n    return null;\n  }\n\n  for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n    args[_key2 - 1] = arguments[_key2];\n  }\n\n  return (_this$player = this.player)[method].apply(_this$player, args);\n}\n\nfunction isMediaStream(url) {\n  return typeof window !== 'undefined' && typeof window.MediaStream !== 'undefined' && url instanceof window.MediaStream;\n}\n\nfunction isBlobUrl(url) {\n  return /^blob:/.test(url);\n}\n\nfunction supportsWebKitPresentationMode() {\n  var video = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document.createElement('video');\n  // Check if Safari supports PiP, and is not on mobile (other than iPad)\n  // iPhone safari appears to \"support\" PiP through the check, however PiP does not function\n  var notMobile = /iPhone|iPod/.test(navigator.userAgent) === false;\n  return video.webkitSupportsPresentationMode && typeof video.webkitSetPresentationMode === 'function' && notMobile;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.canPlay = exports.FLV_EXTENSIONS = exports.DASH_EXTENSIONS = exports.HLS_EXTENSIONS = exports.VIDEO_EXTENSIONS = exports.AUDIO_EXTENSIONS = exports.MATCH_URL_KALTURA = exports.MATCH_URL_VIDYARD = exports.MATCH_URL_MIXCLOUD = exports.MATCH_URL_DAILYMOTION = exports.MATCH_URL_TWITCH_CHANNEL = exports.MATCH_URL_TWITCH_VIDEO = exports.MATCH_URL_WISTIA = exports.MATCH_URL_STREAMABLE = exports.MATCH_URL_FACEBOOK_WATCH = exports.MATCH_URL_FACEBOOK = exports.MATCH_URL_VIMEO = exports.MATCH_URL_SOUNDCLOUD = exports.MATCH_URL_YOUTUBE = void 0;\n\nvar _utils = require(\"./utils\");\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nvar MATCH_URL_YOUTUBE = /(?:youtu\\.be\\/|youtube(?:-nocookie)?\\.com\\/(?:embed\\/|v\\/|watch\\/|watch\\?v=|watch\\?.+&v=|shorts\\/))((\\w|-){11})|youtube\\.com\\/playlist\\?list=|youtube\\.com\\/user\\//;\nexports.MATCH_URL_YOUTUBE = MATCH_URL_YOUTUBE;\nvar MATCH_URL_SOUNDCLOUD = /(?:soundcloud\\.com|snd\\.sc)\\/[^.]+$/;\nexports.MATCH_URL_SOUNDCLOUD = MATCH_URL_SOUNDCLOUD;\nvar MATCH_URL_VIMEO = /vimeo\\.com\\/(?!progressive_redirect).+/;\nexports.MATCH_URL_VIMEO = MATCH_URL_VIMEO;\nvar MATCH_URL_FACEBOOK = /^https?:\\/\\/(www\\.)?facebook\\.com.*\\/(video(s)?|watch|story)(\\.php?|\\/).+$/;\nexports.MATCH_URL_FACEBOOK = MATCH_URL_FACEBOOK;\nvar MATCH_URL_FACEBOOK_WATCH = /^https?:\\/\\/fb\\.watch\\/.+$/;\nexports.MATCH_URL_FACEBOOK_WATCH = MATCH_URL_FACEBOOK_WATCH;\nvar MATCH_URL_STREAMABLE = /streamable\\.com\\/([a-z0-9]+)$/;\nexports.MATCH_URL_STREAMABLE = MATCH_URL_STREAMABLE;\nvar MATCH_URL_WISTIA = /(?:wistia\\.(?:com|net)|wi\\.st)\\/(?:medias|embed)\\/(?:iframe\\/)?(.*)$/;\nexports.MATCH_URL_WISTIA = MATCH_URL_WISTIA;\nvar MATCH_URL_TWITCH_VIDEO = /(?:www\\.|go\\.)?twitch\\.tv\\/videos\\/(\\d+)($|\\?)/;\nexports.MATCH_URL_TWITCH_VIDEO = MATCH_URL_TWITCH_VIDEO;\nvar MATCH_URL_TWITCH_CHANNEL = /(?:www\\.|go\\.)?twitch\\.tv\\/([a-zA-Z0-9_]+)($|\\?)/;\nexports.MATCH_URL_TWITCH_CHANNEL = MATCH_URL_TWITCH_CHANNEL;\nvar MATCH_URL_DAILYMOTION = /^(?:(?:https?):)?(?:\\/\\/)?(?:www\\.)?(?:(?:dailymotion\\.com(?:\\/embed)?\\/video)|dai\\.ly)\\/([a-zA-Z0-9]+)(?:_[\\w_-]+)?$/;\nexports.MATCH_URL_DAILYMOTION = MATCH_URL_DAILYMOTION;\nvar MATCH_URL_MIXCLOUD = /mixcloud\\.com\\/([^/]+\\/[^/]+)/;\nexports.MATCH_URL_MIXCLOUD = MATCH_URL_MIXCLOUD;\nvar MATCH_URL_VIDYARD = /vidyard.com\\/(?:watch\\/)?([a-zA-Z0-9-_]+)/;\nexports.MATCH_URL_VIDYARD = MATCH_URL_VIDYARD;\nvar MATCH_URL_KALTURA = /^https?:\\/\\/[a-zA-Z]+\\.kaltura.(com|org)\\/p\\/([0-9]+)\\/sp\\/([0-9]+)00\\/embedIframeJs\\/uiconf_id\\/([0-9]+)\\/partner_id\\/([0-9]+)(.*)entry_id.([a-zA-Z0-9-_].*)$/;\nexports.MATCH_URL_KALTURA = MATCH_URL_KALTURA;\nvar AUDIO_EXTENSIONS = /\\.(m4a|m4b|mp4a|mpga|mp2|mp2a|mp3|m2a|m3a|wav|weba|aac|oga|spx)($|\\?)/i;\nexports.AUDIO_EXTENSIONS = AUDIO_EXTENSIONS;\nvar VIDEO_EXTENSIONS = /\\.(mp4|og[gv]|webm|mov|m4v)(#t=[,\\d+]+)?($|\\?)/i;\nexports.VIDEO_EXTENSIONS = VIDEO_EXTENSIONS;\nvar HLS_EXTENSIONS = /\\.(m3u8)($|\\?)/i;\nexports.HLS_EXTENSIONS = HLS_EXTENSIONS;\nvar DASH_EXTENSIONS = /\\.(mpd)($|\\?)/i;\nexports.DASH_EXTENSIONS = DASH_EXTENSIONS;\nvar FLV_EXTENSIONS = /\\.(flv)($|\\?)/i;\nexports.FLV_EXTENSIONS = FLV_EXTENSIONS;\n\nvar canPlayFile = function canPlayFile(url) {\n  if (url instanceof Array) {\n    var _iterator = _createForOfIteratorHelper(url),\n        _step;\n\n    try {\n      for (_iterator.s(); !(_step = _iterator.n()).done;) {\n        var item = _step.value;\n\n        if (typeof item === 'string' && canPlayFile(item)) {\n          return true;\n        }\n\n        if (canPlayFile(item.src)) {\n          return true;\n        }\n      }\n    } catch (err) {\n      _iterator.e(err);\n    } finally {\n      _iterator.f();\n    }\n\n    return false;\n  }\n\n  if ((0, _utils.isMediaStream)(url) || (0, _utils.isBlobUrl)(url)) {\n    return true;\n  }\n\n  return AUDIO_EXTENSIONS.test(url) || VIDEO_EXTENSIONS.test(url) || HLS_EXTENSIONS.test(url) || DASH_EXTENSIONS.test(url) || FLV_EXTENSIONS.test(url);\n};\n\nvar canPlay = {\n  youtube: function youtube(url) {\n    if (url instanceof Array) {\n      return url.every(function (item) {\n        return MATCH_URL_YOUTUBE.test(item);\n      });\n    }\n\n    return MATCH_URL_YOUTUBE.test(url);\n  },\n  soundcloud: function soundcloud(url) {\n    return MATCH_URL_SOUNDCLOUD.test(url) && !AUDIO_EXTENSIONS.test(url);\n  },\n  vimeo: function vimeo(url) {\n    return MATCH_URL_VIMEO.test(url) && !VIDEO_EXTENSIONS.test(url) && !HLS_EXTENSIONS.test(url);\n  },\n  facebook: function facebook(url) {\n    return MATCH_URL_FACEBOOK.test(url) || MATCH_URL_FACEBOOK_WATCH.test(url);\n  },\n  streamable: function streamable(url) {\n    return MATCH_URL_STREAMABLE.test(url);\n  },\n  wistia: function wistia(url) {\n    return MATCH_URL_WISTIA.test(url);\n  },\n  twitch: function twitch(url) {\n    return MATCH_URL_TWITCH_VIDEO.test(url) || MATCH_URL_TWITCH_CHANNEL.test(url);\n  },\n  dailymotion: function dailymotion(url) {\n    return MATCH_URL_DAILYMOTION.test(url);\n  },\n  mixcloud: function mixcloud(url) {\n    return MATCH_URL_MIXCLOUD.test(url);\n  },\n  vidyard: function vidyard(url) {\n    return MATCH_URL_VIDYARD.test(url);\n  },\n  kaltura: function kaltura(url) {\n    return MATCH_URL_KALTURA.test(url);\n  },\n  file: canPlayFile\n};\nexports.canPlay = canPlay;","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _utils = require(\"../utils\");\n\nvar _patterns = require(\"../patterns\");\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar SDK_URL = 'https://www.youtube.com/iframe_api';\nvar SDK_GLOBAL = 'YT';\nvar SDK_GLOBAL_READY = 'onYouTubeIframeAPIReady';\nvar MATCH_PLAYLIST = /[?&](?:list|channel)=([a-zA-Z0-9_-]+)/;\nvar MATCH_USER_UPLOADS = /user\\/([a-zA-Z0-9_-]+)\\/?/;\nvar MATCH_NOCOOKIE = /youtube-nocookie\\.com/;\nvar NOCOOKIE_HOST = 'https://www.youtube-nocookie.com';\n\nvar YouTube = /*#__PURE__*/function (_Component) {\n  _inherits(YouTube, _Component);\n\n  var _super = _createSuper(YouTube);\n\n  function YouTube() {\n    var _this;\n\n    _classCallCheck(this, YouTube);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _super.call.apply(_super, [this].concat(args));\n\n    _defineProperty(_assertThisInitialized(_this), \"callPlayer\", _utils.callPlayer);\n\n    _defineProperty(_assertThisInitialized(_this), \"parsePlaylist\", function (url) {\n      if (url instanceof Array) {\n        return {\n          listType: 'playlist',\n          playlist: url.map(_this.getID).join(',')\n        };\n      }\n\n      if (MATCH_PLAYLIST.test(url)) {\n        var _url$match = url.match(MATCH_PLAYLIST),\n            _url$match2 = _slicedToArray(_url$match, 2),\n            playlistId = _url$match2[1];\n\n        return {\n          listType: 'playlist',\n          list: playlistId.replace(/^UC/, 'UU')\n        };\n      }\n\n      if (MATCH_USER_UPLOADS.test(url)) {\n        var _url$match3 = url.match(MATCH_USER_UPLOADS),\n            _url$match4 = _slicedToArray(_url$match3, 2),\n            username = _url$match4[1];\n\n        return {\n          listType: 'user_uploads',\n          list: username\n        };\n      }\n\n      return {};\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onStateChange\", function (event) {\n      var data = event.data;\n      var _this$props = _this.props,\n          onPlay = _this$props.onPlay,\n          onPause = _this$props.onPause,\n          onBuffer = _this$props.onBuffer,\n          onBufferEnd = _this$props.onBufferEnd,\n          onEnded = _this$props.onEnded,\n          onReady = _this$props.onReady,\n          loop = _this$props.loop,\n          _this$props$config = _this$props.config,\n          playerVars = _this$props$config.playerVars,\n          onUnstarted = _this$props$config.onUnstarted;\n      var _window$SDK_GLOBAL$Pl = window[SDK_GLOBAL].PlayerState,\n          UNSTARTED = _window$SDK_GLOBAL$Pl.UNSTARTED,\n          PLAYING = _window$SDK_GLOBAL$Pl.PLAYING,\n          PAUSED = _window$SDK_GLOBAL$Pl.PAUSED,\n          BUFFERING = _window$SDK_GLOBAL$Pl.BUFFERING,\n          ENDED = _window$SDK_GLOBAL$Pl.ENDED,\n          CUED = _window$SDK_GLOBAL$Pl.CUED;\n      if (data === UNSTARTED) onUnstarted();\n\n      if (data === PLAYING) {\n        onPlay();\n        onBufferEnd();\n      }\n\n      if (data === PAUSED) onPause();\n      if (data === BUFFERING) onBuffer();\n\n      if (data === ENDED) {\n        var isPlaylist = !!_this.callPlayer('getPlaylist'); // Only loop manually if not playing a playlist\n\n        if (loop && !isPlaylist) {\n          if (playerVars.start) {\n            _this.seekTo(playerVars.start);\n          } else {\n            _this.play();\n          }\n        }\n\n        onEnded();\n      }\n\n      if (data === CUED) onReady();\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"mute\", function () {\n      _this.callPlayer('mute');\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"unmute\", function () {\n      _this.callPlayer('unMute');\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"ref\", function (container) {\n      _this.container = container;\n    });\n\n    return _this;\n  }\n\n  _createClass(YouTube, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this.props.onMount && this.props.onMount(this);\n    }\n  }, {\n    key: \"getID\",\n    value: function getID(url) {\n      if (!url || url instanceof Array || MATCH_PLAYLIST.test(url)) {\n        return null;\n      }\n\n      return url.match(_patterns.MATCH_URL_YOUTUBE)[1];\n    }\n  }, {\n    key: \"load\",\n    value: function load(url, isReady) {\n      var _this2 = this;\n\n      var _this$props2 = this.props,\n          playing = _this$props2.playing,\n          muted = _this$props2.muted,\n          playsinline = _this$props2.playsinline,\n          controls = _this$props2.controls,\n          loop = _this$props2.loop,\n          config = _this$props2.config,\n          _onError = _this$props2.onError;\n      var playerVars = config.playerVars,\n          embedOptions = config.embedOptions;\n      var id = this.getID(url);\n\n      if (isReady) {\n        if (MATCH_PLAYLIST.test(url) || MATCH_USER_UPLOADS.test(url) || url instanceof Array) {\n          this.player.loadPlaylist(this.parsePlaylist(url));\n          return;\n        }\n\n        this.player.cueVideoById({\n          videoId: id,\n          startSeconds: (0, _utils.parseStartTime)(url) || playerVars.start,\n          endSeconds: (0, _utils.parseEndTime)(url) || playerVars.end\n        });\n        return;\n      }\n\n      (0, _utils.getSDK)(SDK_URL, SDK_GLOBAL, SDK_GLOBAL_READY, function (YT) {\n        return YT.loaded;\n      }).then(function (YT) {\n        if (!_this2.container) return;\n        _this2.player = new YT.Player(_this2.container, _objectSpread({\n          width: '100%',\n          height: '100%',\n          videoId: id,\n          playerVars: _objectSpread(_objectSpread({\n            autoplay: playing ? 1 : 0,\n            mute: muted ? 1 : 0,\n            controls: controls ? 1 : 0,\n            start: (0, _utils.parseStartTime)(url),\n            end: (0, _utils.parseEndTime)(url),\n            origin: window.location.origin,\n            playsinline: playsinline ? 1 : 0\n          }, _this2.parsePlaylist(url)), playerVars),\n          events: {\n            onReady: function onReady() {\n              if (loop) {\n                _this2.player.setLoop(true); // Enable playlist looping\n\n              }\n\n              _this2.props.onReady();\n            },\n            onPlaybackRateChange: function onPlaybackRateChange(event) {\n              return _this2.props.onPlaybackRateChange(event.data);\n            },\n            onStateChange: _this2.onStateChange,\n            onError: function onError(event) {\n              return _onError(event.data);\n            }\n          },\n          host: MATCH_NOCOOKIE.test(url) ? NOCOOKIE_HOST : undefined\n        }, embedOptions));\n      }, _onError);\n\n      if (embedOptions.events) {\n        console.warn('Using `embedOptions.events` will likely break things. Use ReactPlayer’s callback props instead, eg onReady, onPlay, onPause');\n      }\n    }\n  }, {\n    key: \"play\",\n    value: function play() {\n      this.callPlayer('playVideo');\n    }\n  }, {\n    key: \"pause\",\n    value: function pause() {\n      this.callPlayer('pauseVideo');\n    }\n  }, {\n    key: \"stop\",\n    value: function stop() {\n      if (!document.body.contains(this.callPlayer('getIframe'))) return;\n      this.callPlayer('stopVideo');\n    }\n  }, {\n    key: \"seekTo\",\n    value: function seekTo(amount) {\n      this.callPlayer('seekTo', amount);\n\n      if (!this.props.playing) {\n        this.pause();\n      }\n    }\n  }, {\n    key: \"setVolume\",\n    value: function setVolume(fraction) {\n      this.callPlayer('setVolume', fraction * 100);\n    }\n  }, {\n    key: \"setPlaybackRate\",\n    value: function setPlaybackRate(rate) {\n      this.callPlayer('setPlaybackRate', rate);\n    }\n  }, {\n    key: \"setLoop\",\n    value: function setLoop(loop) {\n      this.callPlayer('setLoop', loop);\n    }\n  }, {\n    key: \"getDuration\",\n    value: function getDuration() {\n      return this.callPlayer('getDuration');\n    }\n  }, {\n    key: \"getCurrentTime\",\n    value: function getCurrentTime() {\n      return this.callPlayer('getCurrentTime');\n    }\n  }, {\n    key: \"getSecondsLoaded\",\n    value: function getSecondsLoaded() {\n      return this.callPlayer('getVideoLoadedFraction') * this.getDuration();\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var display = this.props.display;\n      var style = {\n        width: '100%',\n        height: '100%',\n        display: display\n      };\n      return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n        style: style\n      }, /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n        ref: this.ref\n      }));\n    }\n  }]);\n\n  return YouTube;\n}(_react.Component);\n\nexports[\"default\"] = YouTube;\n\n_defineProperty(YouTube, \"displayName\", 'YouTube');\n\n_defineProperty(YouTube, \"canPlay\", _patterns.canPlay.youtube);","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _utils = require(\"../utils\");\n\nvar _patterns = require(\"../patterns\");\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar SDK_URL = 'https://w.soundcloud.com/player/api.js';\nvar SDK_GLOBAL = 'SC';\n\nvar SoundCloud = /*#__PURE__*/function (_Component) {\n  _inherits(SoundCloud, _Component);\n\n  var _super = _createSuper(SoundCloud);\n\n  function SoundCloud() {\n    var _this;\n\n    _classCallCheck(this, SoundCloud);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _super.call.apply(_super, [this].concat(args));\n\n    _defineProperty(_assertThisInitialized(_this), \"callPlayer\", _utils.callPlayer);\n\n    _defineProperty(_assertThisInitialized(_this), \"duration\", null);\n\n    _defineProperty(_assertThisInitialized(_this), \"currentTime\", null);\n\n    _defineProperty(_assertThisInitialized(_this), \"fractionLoaded\", null);\n\n    _defineProperty(_assertThisInitialized(_this), \"mute\", function () {\n      _this.setVolume(0);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"unmute\", function () {\n      if (_this.props.volume !== null) {\n        _this.setVolume(_this.props.volume);\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"ref\", function (iframe) {\n      _this.iframe = iframe;\n    });\n\n    return _this;\n  }\n\n  _createClass(SoundCloud, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this.props.onMount && this.props.onMount(this);\n    }\n  }, {\n    key: \"load\",\n    value: function load(url, isReady) {\n      var _this2 = this;\n\n      (0, _utils.getSDK)(SDK_URL, SDK_GLOBAL).then(function (SC) {\n        if (!_this2.iframe) return;\n        var _SC$Widget$Events = SC.Widget.Events,\n            PLAY = _SC$Widget$Events.PLAY,\n            PLAY_PROGRESS = _SC$Widget$Events.PLAY_PROGRESS,\n            PAUSE = _SC$Widget$Events.PAUSE,\n            FINISH = _SC$Widget$Events.FINISH,\n            ERROR = _SC$Widget$Events.ERROR;\n\n        if (!isReady) {\n          _this2.player = SC.Widget(_this2.iframe);\n\n          _this2.player.bind(PLAY, _this2.props.onPlay);\n\n          _this2.player.bind(PAUSE, function () {\n            var remaining = _this2.duration - _this2.currentTime;\n\n            if (remaining < 0.05) {\n              // Prevent onPause firing right before onEnded\n              return;\n            }\n\n            _this2.props.onPause();\n          });\n\n          _this2.player.bind(PLAY_PROGRESS, function (e) {\n            _this2.currentTime = e.currentPosition / 1000;\n            _this2.fractionLoaded = e.loadedProgress;\n          });\n\n          _this2.player.bind(FINISH, function () {\n            return _this2.props.onEnded();\n          });\n\n          _this2.player.bind(ERROR, function (e) {\n            return _this2.props.onError(e);\n          });\n        }\n\n        _this2.player.load(url, _objectSpread(_objectSpread({}, _this2.props.config.options), {}, {\n          callback: function callback() {\n            _this2.player.getDuration(function (duration) {\n              _this2.duration = duration / 1000;\n\n              _this2.props.onReady();\n            });\n          }\n        }));\n      });\n    }\n  }, {\n    key: \"play\",\n    value: function play() {\n      this.callPlayer('play');\n    }\n  }, {\n    key: \"pause\",\n    value: function pause() {\n      this.callPlayer('pause');\n    }\n  }, {\n    key: \"stop\",\n    value: function stop() {// Nothing to do\n    }\n  }, {\n    key: \"seekTo\",\n    value: function seekTo(seconds) {\n      this.callPlayer('seekTo', seconds * 1000);\n    }\n  }, {\n    key: \"setVolume\",\n    value: function setVolume(fraction) {\n      this.callPlayer('setVolume', fraction * 100);\n    }\n  }, {\n    key: \"getDuration\",\n    value: function getDuration() {\n      return this.duration;\n    }\n  }, {\n    key: \"getCurrentTime\",\n    value: function getCurrentTime() {\n      return this.currentTime;\n    }\n  }, {\n    key: \"getSecondsLoaded\",\n    value: function getSecondsLoaded() {\n      return this.fractionLoaded * this.duration;\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var display = this.props.display;\n      var style = {\n        width: '100%',\n        height: '100%',\n        display: display\n      };\n      return /*#__PURE__*/_react[\"default\"].createElement(\"iframe\", {\n        ref: this.ref,\n        src: \"https://w.soundcloud.com/player/?url=\".concat(encodeURIComponent(this.props.url)),\n        style: style,\n        frameBorder: 0,\n        allow: \"autoplay\"\n      });\n    }\n  }]);\n\n  return SoundCloud;\n}(_react.Component);\n\nexports[\"default\"] = SoundCloud;\n\n_defineProperty(SoundCloud, \"displayName\", 'SoundCloud');\n\n_defineProperty(SoundCloud, \"canPlay\", _patterns.canPlay.soundcloud);\n\n_defineProperty(SoundCloud, \"loopOnEnded\", true);","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _utils = require(\"../utils\");\n\nvar _patterns = require(\"../patterns\");\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar SDK_URL = 'https://player.vimeo.com/api/player.js';\nvar SDK_GLOBAL = 'Vimeo';\n\nvar Vimeo = /*#__PURE__*/function (_Component) {\n  _inherits(Vimeo, _Component);\n\n  var _super = _createSuper(Vimeo);\n\n  function Vimeo() {\n    var _this;\n\n    _classCallCheck(this, Vimeo);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _super.call.apply(_super, [this].concat(args));\n\n    _defineProperty(_assertThisInitialized(_this), \"callPlayer\", _utils.callPlayer);\n\n    _defineProperty(_assertThisInitialized(_this), \"duration\", null);\n\n    _defineProperty(_assertThisInitialized(_this), \"currentTime\", null);\n\n    _defineProperty(_assertThisInitialized(_this), \"secondsLoaded\", null);\n\n    _defineProperty(_assertThisInitialized(_this), \"mute\", function () {\n      _this.setVolume(0);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"unmute\", function () {\n      if (_this.props.volume !== null) {\n        _this.setVolume(_this.props.volume);\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"ref\", function (container) {\n      _this.container = container;\n    });\n\n    return _this;\n  }\n\n  _createClass(Vimeo, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this.props.onMount && this.props.onMount(this);\n    }\n  }, {\n    key: \"load\",\n    value: function load(url) {\n      var _this2 = this;\n\n      this.duration = null;\n      (0, _utils.getSDK)(SDK_URL, SDK_GLOBAL).then(function (Vimeo) {\n        if (!_this2.container) return;\n        var _this2$props$config = _this2.props.config,\n            playerOptions = _this2$props$config.playerOptions,\n            title = _this2$props$config.title;\n        _this2.player = new Vimeo.Player(_this2.container, _objectSpread({\n          url: url,\n          autoplay: _this2.props.playing,\n          muted: _this2.props.muted,\n          loop: _this2.props.loop,\n          playsinline: _this2.props.playsinline,\n          controls: _this2.props.controls\n        }, playerOptions));\n\n        _this2.player.ready().then(function () {\n          var iframe = _this2.container.querySelector('iframe');\n\n          iframe.style.width = '100%';\n          iframe.style.height = '100%';\n\n          if (title) {\n            iframe.title = title;\n          }\n        })[\"catch\"](_this2.props.onError);\n\n        _this2.player.on('loaded', function () {\n          _this2.props.onReady();\n\n          _this2.refreshDuration();\n        });\n\n        _this2.player.on('play', function () {\n          _this2.props.onPlay();\n\n          _this2.refreshDuration();\n        });\n\n        _this2.player.on('pause', _this2.props.onPause);\n\n        _this2.player.on('seeked', function (e) {\n          return _this2.props.onSeek(e.seconds);\n        });\n\n        _this2.player.on('ended', _this2.props.onEnded);\n\n        _this2.player.on('error', _this2.props.onError);\n\n        _this2.player.on('timeupdate', function (_ref) {\n          var seconds = _ref.seconds;\n          _this2.currentTime = seconds;\n        });\n\n        _this2.player.on('progress', function (_ref2) {\n          var seconds = _ref2.seconds;\n          _this2.secondsLoaded = seconds;\n        });\n\n        _this2.player.on('bufferstart', _this2.props.onBuffer);\n\n        _this2.player.on('bufferend', _this2.props.onBufferEnd);\n\n        _this2.player.on('playbackratechange', function (e) {\n          return _this2.props.onPlaybackRateChange(e.playbackRate);\n        });\n      }, this.props.onError);\n    }\n  }, {\n    key: \"refreshDuration\",\n    value: function refreshDuration() {\n      var _this3 = this;\n\n      this.player.getDuration().then(function (duration) {\n        _this3.duration = duration;\n      });\n    }\n  }, {\n    key: \"play\",\n    value: function play() {\n      var promise = this.callPlayer('play');\n\n      if (promise) {\n        promise[\"catch\"](this.props.onError);\n      }\n    }\n  }, {\n    key: \"pause\",\n    value: function pause() {\n      this.callPlayer('pause');\n    }\n  }, {\n    key: \"stop\",\n    value: function stop() {\n      this.callPlayer('unload');\n    }\n  }, {\n    key: \"seekTo\",\n    value: function seekTo(seconds) {\n      this.callPlayer('setCurrentTime', seconds);\n    }\n  }, {\n    key: \"setVolume\",\n    value: function setVolume(fraction) {\n      this.callPlayer('setVolume', fraction);\n    }\n  }, {\n    key: \"setLoop\",\n    value: function setLoop(loop) {\n      this.callPlayer('setLoop', loop);\n    }\n  }, {\n    key: \"setPlaybackRate\",\n    value: function setPlaybackRate(rate) {\n      this.callPlayer('setPlaybackRate', rate);\n    }\n  }, {\n    key: \"getDuration\",\n    value: function getDuration() {\n      return this.duration;\n    }\n  }, {\n    key: \"getCurrentTime\",\n    value: function getCurrentTime() {\n      return this.currentTime;\n    }\n  }, {\n    key: \"getSecondsLoaded\",\n    value: function getSecondsLoaded() {\n      return this.secondsLoaded;\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var display = this.props.display;\n      var style = {\n        width: '100%',\n        height: '100%',\n        overflow: 'hidden',\n        display: display\n      };\n      return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n        key: this.props.url,\n        ref: this.ref,\n        style: style\n      });\n    }\n  }]);\n\n  return Vimeo;\n}(_react.Component);\n\nexports[\"default\"] = Vimeo;\n\n_defineProperty(Vimeo, \"displayName\", 'Vimeo');\n\n_defineProperty(Vimeo, \"canPlay\", _patterns.canPlay.vimeo);\n\n_defineProperty(Vimeo, \"forceLoad\", true);","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _utils = require(\"../utils\");\n\nvar _patterns = require(\"../patterns\");\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar SDK_URL = 'https://connect.facebook.net/en_US/sdk.js';\nvar SDK_GLOBAL = 'FB';\nvar SDK_GLOBAL_READY = 'fbAsyncInit';\nvar PLAYER_ID_PREFIX = 'facebook-player-';\n\nvar Facebook = /*#__PURE__*/function (_Component) {\n  _inherits(Facebook, _Component);\n\n  var _super = _createSuper(Facebook);\n\n  function Facebook() {\n    var _this;\n\n    _classCallCheck(this, Facebook);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _super.call.apply(_super, [this].concat(args));\n\n    _defineProperty(_assertThisInitialized(_this), \"callPlayer\", _utils.callPlayer);\n\n    _defineProperty(_assertThisInitialized(_this), \"playerID\", _this.props.config.playerId || \"\".concat(PLAYER_ID_PREFIX).concat((0, _utils.randomString)()));\n\n    _defineProperty(_assertThisInitialized(_this), \"mute\", function () {\n      _this.callPlayer('mute');\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"unmute\", function () {\n      _this.callPlayer('unmute');\n    });\n\n    return _this;\n  }\n\n  _createClass(Facebook, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this.props.onMount && this.props.onMount(this);\n    }\n  }, {\n    key: \"load\",\n    value: function load(url, isReady) {\n      var _this2 = this;\n\n      if (isReady) {\n        (0, _utils.getSDK)(SDK_URL, SDK_GLOBAL, SDK_GLOBAL_READY).then(function (FB) {\n          return FB.XFBML.parse();\n        });\n        return;\n      }\n\n      (0, _utils.getSDK)(SDK_URL, SDK_GLOBAL, SDK_GLOBAL_READY).then(function (FB) {\n        FB.init({\n          appId: _this2.props.config.appId,\n          xfbml: true,\n          version: _this2.props.config.version\n        });\n        FB.Event.subscribe('xfbml.render', function (msg) {\n          // Here we know the SDK has loaded, even if onReady/onPlay\n          // is not called due to a video that cannot be embedded\n          _this2.props.onLoaded();\n        });\n        FB.Event.subscribe('xfbml.ready', function (msg) {\n          if (msg.type === 'video' && msg.id === _this2.playerID) {\n            _this2.player = msg.instance;\n\n            _this2.player.subscribe('startedPlaying', _this2.props.onPlay);\n\n            _this2.player.subscribe('paused', _this2.props.onPause);\n\n            _this2.player.subscribe('finishedPlaying', _this2.props.onEnded);\n\n            _this2.player.subscribe('startedBuffering', _this2.props.onBuffer);\n\n            _this2.player.subscribe('finishedBuffering', _this2.props.onBufferEnd);\n\n            _this2.player.subscribe('error', _this2.props.onError);\n\n            if (_this2.props.muted) {\n              _this2.callPlayer('mute');\n            } else {\n              _this2.callPlayer('unmute');\n            }\n\n            _this2.props.onReady(); // For some reason Facebook have added `visibility: hidden`\n            // to the iframe when autoplay fails, so here we set it back\n\n\n            document.getElementById(_this2.playerID).querySelector('iframe').style.visibility = 'visible';\n          }\n        });\n      });\n    }\n  }, {\n    key: \"play\",\n    value: function play() {\n      this.callPlayer('play');\n    }\n  }, {\n    key: \"pause\",\n    value: function pause() {\n      this.callPlayer('pause');\n    }\n  }, {\n    key: \"stop\",\n    value: function stop() {// Nothing to do\n    }\n  }, {\n    key: \"seekTo\",\n    value: function seekTo(seconds) {\n      this.callPlayer('seek', seconds);\n    }\n  }, {\n    key: \"setVolume\",\n    value: function setVolume(fraction) {\n      this.callPlayer('setVolume', fraction);\n    }\n  }, {\n    key: \"getDuration\",\n    value: function getDuration() {\n      return this.callPlayer('getDuration');\n    }\n  }, {\n    key: \"getCurrentTime\",\n    value: function getCurrentTime() {\n      return this.callPlayer('getCurrentPosition');\n    }\n  }, {\n    key: \"getSecondsLoaded\",\n    value: function getSecondsLoaded() {\n      return null;\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var attributes = this.props.config.attributes;\n      var style = {\n        width: '100%',\n        height: '100%'\n      };\n      return /*#__PURE__*/_react[\"default\"].createElement(\"div\", _extends({\n        style: style,\n        id: this.playerID,\n        className: \"fb-video\",\n        \"data-href\": this.props.url,\n        \"data-autoplay\": this.props.playing ? 'true' : 'false',\n        \"data-allowfullscreen\": \"true\",\n        \"data-controls\": this.props.controls ? 'true' : 'false'\n      }, attributes));\n    }\n  }]);\n\n  return Facebook;\n}(_react.Component);\n\nexports[\"default\"] = Facebook;\n\n_defineProperty(Facebook, \"displayName\", 'Facebook');\n\n_defineProperty(Facebook, \"canPlay\", _patterns.canPlay.facebook);\n\n_defineProperty(Facebook, \"loopOnEnded\", true);","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _utils = require(\"../utils\");\n\nvar _patterns = require(\"../patterns\");\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar SDK_URL = 'https://cdn.embed.ly/player-0.1.0.min.js';\nvar SDK_GLOBAL = 'playerjs';\n\nvar Streamable = /*#__PURE__*/function (_Component) {\n  _inherits(Streamable, _Component);\n\n  var _super = _createSuper(Streamable);\n\n  function Streamable() {\n    var _this;\n\n    _classCallCheck(this, Streamable);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _super.call.apply(_super, [this].concat(args));\n\n    _defineProperty(_assertThisInitialized(_this), \"callPlayer\", _utils.callPlayer);\n\n    _defineProperty(_assertThisInitialized(_this), \"duration\", null);\n\n    _defineProperty(_assertThisInitialized(_this), \"currentTime\", null);\n\n    _defineProperty(_assertThisInitialized(_this), \"secondsLoaded\", null);\n\n    _defineProperty(_assertThisInitialized(_this), \"mute\", function () {\n      _this.callPlayer('mute');\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"unmute\", function () {\n      _this.callPlayer('unmute');\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"ref\", function (iframe) {\n      _this.iframe = iframe;\n    });\n\n    return _this;\n  }\n\n  _createClass(Streamable, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this.props.onMount && this.props.onMount(this);\n    }\n  }, {\n    key: \"load\",\n    value: function load(url) {\n      var _this2 = this;\n\n      (0, _utils.getSDK)(SDK_URL, SDK_GLOBAL).then(function (playerjs) {\n        if (!_this2.iframe) return;\n        _this2.player = new playerjs.Player(_this2.iframe);\n\n        _this2.player.setLoop(_this2.props.loop);\n\n        _this2.player.on('ready', _this2.props.onReady);\n\n        _this2.player.on('play', _this2.props.onPlay);\n\n        _this2.player.on('pause', _this2.props.onPause);\n\n        _this2.player.on('seeked', _this2.props.onSeek);\n\n        _this2.player.on('ended', _this2.props.onEnded);\n\n        _this2.player.on('error', _this2.props.onError);\n\n        _this2.player.on('timeupdate', function (_ref) {\n          var duration = _ref.duration,\n              seconds = _ref.seconds;\n          _this2.duration = duration;\n          _this2.currentTime = seconds;\n        });\n\n        _this2.player.on('buffered', function (_ref2) {\n          var percent = _ref2.percent;\n\n          if (_this2.duration) {\n            _this2.secondsLoaded = _this2.duration * percent;\n          }\n        });\n\n        if (_this2.props.muted) {\n          _this2.player.mute();\n        }\n      }, this.props.onError);\n    }\n  }, {\n    key: \"play\",\n    value: function play() {\n      this.callPlayer('play');\n    }\n  }, {\n    key: \"pause\",\n    value: function pause() {\n      this.callPlayer('pause');\n    }\n  }, {\n    key: \"stop\",\n    value: function stop() {// Nothing to do\n    }\n  }, {\n    key: \"seekTo\",\n    value: function seekTo(seconds) {\n      this.callPlayer('setCurrentTime', seconds);\n    }\n  }, {\n    key: \"setVolume\",\n    value: function setVolume(fraction) {\n      this.callPlayer('setVolume', fraction * 100);\n    }\n  }, {\n    key: \"setLoop\",\n    value: function setLoop(loop) {\n      this.callPlayer('setLoop', loop);\n    }\n  }, {\n    key: \"getDuration\",\n    value: function getDuration() {\n      return this.duration;\n    }\n  }, {\n    key: \"getCurrentTime\",\n    value: function getCurrentTime() {\n      return this.currentTime;\n    }\n  }, {\n    key: \"getSecondsLoaded\",\n    value: function getSecondsLoaded() {\n      return this.secondsLoaded;\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var id = this.props.url.match(_patterns.MATCH_URL_STREAMABLE)[1];\n      var style = {\n        width: '100%',\n        height: '100%'\n      };\n      return /*#__PURE__*/_react[\"default\"].createElement(\"iframe\", {\n        ref: this.ref,\n        src: \"https://streamable.com/o/\".concat(id),\n        frameBorder: \"0\",\n        scrolling: \"no\",\n        style: style,\n        allow: \"encrypted-media; autoplay; fullscreen;\"\n      });\n    }\n  }]);\n\n  return Streamable;\n}(_react.Component);\n\nexports[\"default\"] = Streamable;\n\n_defineProperty(Streamable, \"displayName\", 'Streamable');\n\n_defineProperty(Streamable, \"canPlay\", _patterns.canPlay.streamable);","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _utils = require(\"../utils\");\n\nvar _patterns = require(\"../patterns\");\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar SDK_URL = 'https://fast.wistia.com/assets/external/E-v1.js';\nvar SDK_GLOBAL = 'Wistia';\nvar PLAYER_ID_PREFIX = 'wistia-player-';\n\nvar Wistia = /*#__PURE__*/function (_Component) {\n  _inherits(Wistia, _Component);\n\n  var _super = _createSuper(Wistia);\n\n  function Wistia() {\n    var _this;\n\n    _classCallCheck(this, Wistia);\n\n    for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {\n      _args[_key] = arguments[_key];\n    }\n\n    _this = _super.call.apply(_super, [this].concat(_args));\n\n    _defineProperty(_assertThisInitialized(_this), \"callPlayer\", _utils.callPlayer);\n\n    _defineProperty(_assertThisInitialized(_this), \"playerID\", _this.props.config.playerId || \"\".concat(PLAYER_ID_PREFIX).concat((0, _utils.randomString)()));\n\n    _defineProperty(_assertThisInitialized(_this), \"onPlay\", function () {\n      var _this$props;\n\n      return (_this$props = _this.props).onPlay.apply(_this$props, arguments);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onPause\", function () {\n      var _this$props2;\n\n      return (_this$props2 = _this.props).onPause.apply(_this$props2, arguments);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onSeek\", function () {\n      var _this$props3;\n\n      return (_this$props3 = _this.props).onSeek.apply(_this$props3, arguments);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onEnded\", function () {\n      var _this$props4;\n\n      return (_this$props4 = _this.props).onEnded.apply(_this$props4, arguments);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onPlaybackRateChange\", function () {\n      var _this$props5;\n\n      return (_this$props5 = _this.props).onPlaybackRateChange.apply(_this$props5, arguments);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"mute\", function () {\n      _this.callPlayer('mute');\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"unmute\", function () {\n      _this.callPlayer('unmute');\n    });\n\n    return _this;\n  }\n\n  _createClass(Wistia, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this.props.onMount && this.props.onMount(this);\n    }\n  }, {\n    key: \"load\",\n    value: function load(url) {\n      var _this2 = this;\n\n      var _this$props6 = this.props,\n          playing = _this$props6.playing,\n          muted = _this$props6.muted,\n          controls = _this$props6.controls,\n          _onReady = _this$props6.onReady,\n          config = _this$props6.config,\n          onError = _this$props6.onError;\n      (0, _utils.getSDK)(SDK_URL, SDK_GLOBAL).then(function (Wistia) {\n        if (config.customControls) {\n          config.customControls.forEach(function (control) {\n            return Wistia.defineControl(control);\n          });\n        }\n\n        window._wq = window._wq || [];\n\n        window._wq.push({\n          id: _this2.playerID,\n          options: _objectSpread({\n            autoPlay: playing,\n            silentAutoPlay: 'allow',\n            muted: muted,\n            controlsVisibleOnLoad: controls,\n            fullscreenButton: controls,\n            playbar: controls,\n            playbackRateControl: controls,\n            qualityControl: controls,\n            volumeControl: controls,\n            settingsControl: controls,\n            smallPlayButton: controls\n          }, config.options),\n          onReady: function onReady(player) {\n            _this2.player = player;\n\n            _this2.unbind();\n\n            _this2.player.bind('play', _this2.onPlay);\n\n            _this2.player.bind('pause', _this2.onPause);\n\n            _this2.player.bind('seek', _this2.onSeek);\n\n            _this2.player.bind('end', _this2.onEnded);\n\n            _this2.player.bind('playbackratechange', _this2.onPlaybackRateChange);\n\n            _onReady();\n          }\n        });\n      }, onError);\n    }\n  }, {\n    key: \"unbind\",\n    value: function unbind() {\n      this.player.unbind('play', this.onPlay);\n      this.player.unbind('pause', this.onPause);\n      this.player.unbind('seek', this.onSeek);\n      this.player.unbind('end', this.onEnded);\n      this.player.unbind('playbackratechange', this.onPlaybackRateChange);\n    } // Proxy methods to prevent listener leaks\n\n  }, {\n    key: \"play\",\n    value: function play() {\n      this.callPlayer('play');\n    }\n  }, {\n    key: \"pause\",\n    value: function pause() {\n      this.callPlayer('pause');\n    }\n  }, {\n    key: \"stop\",\n    value: function stop() {\n      this.unbind();\n      this.callPlayer('remove');\n    }\n  }, {\n    key: \"seekTo\",\n    value: function seekTo(seconds) {\n      this.callPlayer('time', seconds);\n    }\n  }, {\n    key: \"setVolume\",\n    value: function setVolume(fraction) {\n      this.callPlayer('volume', fraction);\n    }\n  }, {\n    key: \"setPlaybackRate\",\n    value: function setPlaybackRate(rate) {\n      this.callPlayer('playbackRate', rate);\n    }\n  }, {\n    key: \"getDuration\",\n    value: function getDuration() {\n      return this.callPlayer('duration');\n    }\n  }, {\n    key: \"getCurrentTime\",\n    value: function getCurrentTime() {\n      return this.callPlayer('time');\n    }\n  }, {\n    key: \"getSecondsLoaded\",\n    value: function getSecondsLoaded() {\n      return null;\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var url = this.props.url;\n      var videoID = url && url.match(_patterns.MATCH_URL_WISTIA)[1];\n      var className = \"wistia_embed wistia_async_\".concat(videoID);\n      var style = {\n        width: '100%',\n        height: '100%'\n      };\n      return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n        id: this.playerID,\n        key: videoID,\n        className: className,\n        style: style\n      });\n    }\n  }]);\n\n  return Wistia;\n}(_react.Component);\n\nexports[\"default\"] = Wistia;\n\n_defineProperty(Wistia, \"displayName\", 'Wistia');\n\n_defineProperty(Wistia, \"canPlay\", _patterns.canPlay.wistia);\n\n_defineProperty(Wistia, \"loopOnEnded\", true);","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _utils = require(\"../utils\");\n\nvar _patterns = require(\"../patterns\");\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar SDK_URL = 'https://player.twitch.tv/js/embed/v1.js';\nvar SDK_GLOBAL = 'Twitch';\nvar PLAYER_ID_PREFIX = 'twitch-player-';\n\nvar Twitch = /*#__PURE__*/function (_Component) {\n  _inherits(Twitch, _Component);\n\n  var _super = _createSuper(Twitch);\n\n  function Twitch() {\n    var _this;\n\n    _classCallCheck(this, Twitch);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _super.call.apply(_super, [this].concat(args));\n\n    _defineProperty(_assertThisInitialized(_this), \"callPlayer\", _utils.callPlayer);\n\n    _defineProperty(_assertThisInitialized(_this), \"playerID\", _this.props.config.playerId || \"\".concat(PLAYER_ID_PREFIX).concat((0, _utils.randomString)()));\n\n    _defineProperty(_assertThisInitialized(_this), \"mute\", function () {\n      _this.callPlayer('setMuted', true);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"unmute\", function () {\n      _this.callPlayer('setMuted', false);\n    });\n\n    return _this;\n  }\n\n  _createClass(Twitch, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this.props.onMount && this.props.onMount(this);\n    }\n  }, {\n    key: \"load\",\n    value: function load(url, isReady) {\n      var _this2 = this;\n\n      var _this$props = this.props,\n          playsinline = _this$props.playsinline,\n          onError = _this$props.onError,\n          config = _this$props.config,\n          controls = _this$props.controls;\n\n      var isChannel = _patterns.MATCH_URL_TWITCH_CHANNEL.test(url);\n\n      var id = isChannel ? url.match(_patterns.MATCH_URL_TWITCH_CHANNEL)[1] : url.match(_patterns.MATCH_URL_TWITCH_VIDEO)[1];\n\n      if (isReady) {\n        if (isChannel) {\n          this.player.setChannel(id);\n        } else {\n          this.player.setVideo('v' + id);\n        }\n\n        return;\n      }\n\n      (0, _utils.getSDK)(SDK_URL, SDK_GLOBAL).then(function (Twitch) {\n        _this2.player = new Twitch.Player(_this2.playerID, _objectSpread({\n          video: isChannel ? '' : id,\n          channel: isChannel ? id : '',\n          height: '100%',\n          width: '100%',\n          playsinline: playsinline,\n          autoplay: _this2.props.playing,\n          muted: _this2.props.muted,\n          // https://github.com/CookPete/react-player/issues/733#issuecomment-549085859\n          controls: isChannel ? true : controls,\n          time: (0, _utils.parseStartTime)(url)\n        }, config.options));\n        var _Twitch$Player = Twitch.Player,\n            READY = _Twitch$Player.READY,\n            PLAYING = _Twitch$Player.PLAYING,\n            PAUSE = _Twitch$Player.PAUSE,\n            ENDED = _Twitch$Player.ENDED,\n            ONLINE = _Twitch$Player.ONLINE,\n            OFFLINE = _Twitch$Player.OFFLINE,\n            SEEK = _Twitch$Player.SEEK;\n\n        _this2.player.addEventListener(READY, _this2.props.onReady);\n\n        _this2.player.addEventListener(PLAYING, _this2.props.onPlay);\n\n        _this2.player.addEventListener(PAUSE, _this2.props.onPause);\n\n        _this2.player.addEventListener(ENDED, _this2.props.onEnded);\n\n        _this2.player.addEventListener(SEEK, _this2.props.onSeek); // Prevent weird isLoading behaviour when streams are offline\n\n\n        _this2.player.addEventListener(ONLINE, _this2.props.onLoaded);\n\n        _this2.player.addEventListener(OFFLINE, _this2.props.onLoaded);\n      }, onError);\n    }\n  }, {\n    key: \"play\",\n    value: function play() {\n      this.callPlayer('play');\n    }\n  }, {\n    key: \"pause\",\n    value: function pause() {\n      this.callPlayer('pause');\n    }\n  }, {\n    key: \"stop\",\n    value: function stop() {\n      this.callPlayer('pause');\n    }\n  }, {\n    key: \"seekTo\",\n    value: function seekTo(seconds) {\n      this.callPlayer('seek', seconds);\n    }\n  }, {\n    key: \"setVolume\",\n    value: function setVolume(fraction) {\n      this.callPlayer('setVolume', fraction);\n    }\n  }, {\n    key: \"getDuration\",\n    value: function getDuration() {\n      return this.callPlayer('getDuration');\n    }\n  }, {\n    key: \"getCurrentTime\",\n    value: function getCurrentTime() {\n      return this.callPlayer('getCurrentTime');\n    }\n  }, {\n    key: \"getSecondsLoaded\",\n    value: function getSecondsLoaded() {\n      return null;\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var style = {\n        width: '100%',\n        height: '100%'\n      };\n      return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n        style: style,\n        id: this.playerID\n      });\n    }\n  }]);\n\n  return Twitch;\n}(_react.Component);\n\nexports[\"default\"] = Twitch;\n\n_defineProperty(Twitch, \"displayName\", 'Twitch');\n\n_defineProperty(Twitch, \"canPlay\", _patterns.canPlay.twitch);\n\n_defineProperty(Twitch, \"loopOnEnded\", true);","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _utils = require(\"../utils\");\n\nvar _patterns = require(\"../patterns\");\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar SDK_URL = 'https://api.dmcdn.net/all.js';\nvar SDK_GLOBAL = 'DM';\nvar SDK_GLOBAL_READY = 'dmAsyncInit';\n\nvar DailyMotion = /*#__PURE__*/function (_Component) {\n  _inherits(DailyMotion, _Component);\n\n  var _super = _createSuper(DailyMotion);\n\n  function DailyMotion() {\n    var _this;\n\n    _classCallCheck(this, DailyMotion);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _super.call.apply(_super, [this].concat(args));\n\n    _defineProperty(_assertThisInitialized(_this), \"callPlayer\", _utils.callPlayer);\n\n    _defineProperty(_assertThisInitialized(_this), \"onDurationChange\", function () {\n      var duration = _this.getDuration();\n\n      _this.props.onDuration(duration);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"mute\", function () {\n      _this.callPlayer('setMuted', true);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"unmute\", function () {\n      _this.callPlayer('setMuted', false);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"ref\", function (container) {\n      _this.container = container;\n    });\n\n    return _this;\n  }\n\n  _createClass(DailyMotion, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this.props.onMount && this.props.onMount(this);\n    }\n  }, {\n    key: \"load\",\n    value: function load(url) {\n      var _this2 = this;\n\n      var _this$props = this.props,\n          controls = _this$props.controls,\n          config = _this$props.config,\n          onError = _this$props.onError,\n          playing = _this$props.playing;\n\n      var _url$match = url.match(_patterns.MATCH_URL_DAILYMOTION),\n          _url$match2 = _slicedToArray(_url$match, 2),\n          id = _url$match2[1];\n\n      if (this.player) {\n        this.player.load(id, {\n          start: (0, _utils.parseStartTime)(url),\n          autoplay: playing\n        });\n        return;\n      }\n\n      (0, _utils.getSDK)(SDK_URL, SDK_GLOBAL, SDK_GLOBAL_READY, function (DM) {\n        return DM.player;\n      }).then(function (DM) {\n        if (!_this2.container) return;\n        var Player = DM.player;\n        _this2.player = new Player(_this2.container, {\n          width: '100%',\n          height: '100%',\n          video: id,\n          params: _objectSpread({\n            controls: controls,\n            autoplay: _this2.props.playing,\n            mute: _this2.props.muted,\n            start: (0, _utils.parseStartTime)(url),\n            origin: window.location.origin\n          }, config.params),\n          events: {\n            apiready: _this2.props.onReady,\n            seeked: function seeked() {\n              return _this2.props.onSeek(_this2.player.currentTime);\n            },\n            video_end: _this2.props.onEnded,\n            durationchange: _this2.onDurationChange,\n            pause: _this2.props.onPause,\n            playing: _this2.props.onPlay,\n            waiting: _this2.props.onBuffer,\n            error: function error(event) {\n              return onError(event);\n            }\n          }\n        });\n      }, onError);\n    }\n  }, {\n    key: \"play\",\n    value: function play() {\n      this.callPlayer('play');\n    }\n  }, {\n    key: \"pause\",\n    value: function pause() {\n      this.callPlayer('pause');\n    }\n  }, {\n    key: \"stop\",\n    value: function stop() {// Nothing to do\n    }\n  }, {\n    key: \"seekTo\",\n    value: function seekTo(seconds) {\n      this.callPlayer('seek', seconds);\n    }\n  }, {\n    key: \"setVolume\",\n    value: function setVolume(fraction) {\n      this.callPlayer('setVolume', fraction);\n    }\n  }, {\n    key: \"getDuration\",\n    value: function getDuration() {\n      return this.player.duration || null;\n    }\n  }, {\n    key: \"getCurrentTime\",\n    value: function getCurrentTime() {\n      return this.player.currentTime;\n    }\n  }, {\n    key: \"getSecondsLoaded\",\n    value: function getSecondsLoaded() {\n      return this.player.bufferedTime;\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var display = this.props.display;\n      var style = {\n        width: '100%',\n        height: '100%',\n        display: display\n      };\n      return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n        style: style\n      }, /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n        ref: this.ref\n      }));\n    }\n  }]);\n\n  return DailyMotion;\n}(_react.Component);\n\nexports[\"default\"] = DailyMotion;\n\n_defineProperty(DailyMotion, \"displayName\", 'DailyMotion');\n\n_defineProperty(DailyMotion, \"canPlay\", _patterns.canPlay.dailymotion);\n\n_defineProperty(DailyMotion, \"loopOnEnded\", true);","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _utils = require(\"../utils\");\n\nvar _patterns = require(\"../patterns\");\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar SDK_URL = 'https://widget.mixcloud.com/media/js/widgetApi.js';\nvar SDK_GLOBAL = 'Mixcloud';\n\nvar Mixcloud = /*#__PURE__*/function (_Component) {\n  _inherits(Mixcloud, _Component);\n\n  var _super = _createSuper(Mixcloud);\n\n  function Mixcloud() {\n    var _this;\n\n    _classCallCheck(this, Mixcloud);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _super.call.apply(_super, [this].concat(args));\n\n    _defineProperty(_assertThisInitialized(_this), \"callPlayer\", _utils.callPlayer);\n\n    _defineProperty(_assertThisInitialized(_this), \"duration\", null);\n\n    _defineProperty(_assertThisInitialized(_this), \"currentTime\", null);\n\n    _defineProperty(_assertThisInitialized(_this), \"secondsLoaded\", null);\n\n    _defineProperty(_assertThisInitialized(_this), \"mute\", function () {// No volume support\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"unmute\", function () {// No volume support\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"ref\", function (iframe) {\n      _this.iframe = iframe;\n    });\n\n    return _this;\n  }\n\n  _createClass(Mixcloud, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this.props.onMount && this.props.onMount(this);\n    }\n  }, {\n    key: \"load\",\n    value: function load(url) {\n      var _this2 = this;\n\n      (0, _utils.getSDK)(SDK_URL, SDK_GLOBAL).then(function (Mixcloud) {\n        _this2.player = Mixcloud.PlayerWidget(_this2.iframe);\n\n        _this2.player.ready.then(function () {\n          _this2.player.events.play.on(_this2.props.onPlay);\n\n          _this2.player.events.pause.on(_this2.props.onPause);\n\n          _this2.player.events.ended.on(_this2.props.onEnded);\n\n          _this2.player.events.error.on(_this2.props.error);\n\n          _this2.player.events.progress.on(function (seconds, duration) {\n            _this2.currentTime = seconds;\n            _this2.duration = duration;\n          });\n\n          _this2.props.onReady();\n        });\n      }, this.props.onError);\n    }\n  }, {\n    key: \"play\",\n    value: function play() {\n      this.callPlayer('play');\n    }\n  }, {\n    key: \"pause\",\n    value: function pause() {\n      this.callPlayer('pause');\n    }\n  }, {\n    key: \"stop\",\n    value: function stop() {// Nothing to do\n    }\n  }, {\n    key: \"seekTo\",\n    value: function seekTo(seconds) {\n      this.callPlayer('seek', seconds);\n    }\n  }, {\n    key: \"setVolume\",\n    value: function setVolume(fraction) {// No volume support\n    }\n  }, {\n    key: \"getDuration\",\n    value: function getDuration() {\n      return this.duration;\n    }\n  }, {\n    key: \"getCurrentTime\",\n    value: function getCurrentTime() {\n      return this.currentTime;\n    }\n  }, {\n    key: \"getSecondsLoaded\",\n    value: function getSecondsLoaded() {\n      return null;\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this$props = this.props,\n          url = _this$props.url,\n          config = _this$props.config;\n      var id = url.match(_patterns.MATCH_URL_MIXCLOUD)[1];\n      var style = {\n        width: '100%',\n        height: '100%'\n      };\n      var query = (0, _utils.queryString)(_objectSpread(_objectSpread({}, config.options), {}, {\n        feed: \"/\".concat(id, \"/\")\n      })); // We have to give the iframe a key here to prevent a\n      // weird dialog appearing when loading a new track\n\n      return /*#__PURE__*/_react[\"default\"].createElement(\"iframe\", {\n        key: id,\n        ref: this.ref,\n        style: style,\n        src: \"https://www.mixcloud.com/widget/iframe/?\".concat(query),\n        frameBorder: \"0\",\n        allow: \"autoplay\"\n      });\n    }\n  }]);\n\n  return Mixcloud;\n}(_react.Component);\n\nexports[\"default\"] = Mixcloud;\n\n_defineProperty(Mixcloud, \"displayName\", 'Mixcloud');\n\n_defineProperty(Mixcloud, \"canPlay\", _patterns.canPlay.mixcloud);\n\n_defineProperty(Mixcloud, \"loopOnEnded\", true);","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _utils = require(\"../utils\");\n\nvar _patterns = require(\"../patterns\");\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar SDK_URL = 'https://play.vidyard.com/embed/v4.js';\nvar SDK_GLOBAL = 'VidyardV4';\nvar SDK_GLOBAL_READY = 'onVidyardAPI';\n\nvar Vidyard = /*#__PURE__*/function (_Component) {\n  _inherits(Vidyard, _Component);\n\n  var _super = _createSuper(Vidyard);\n\n  function Vidyard() {\n    var _this;\n\n    _classCallCheck(this, Vidyard);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _super.call.apply(_super, [this].concat(args));\n\n    _defineProperty(_assertThisInitialized(_this), \"callPlayer\", _utils.callPlayer);\n\n    _defineProperty(_assertThisInitialized(_this), \"mute\", function () {\n      _this.setVolume(0);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"unmute\", function () {\n      if (_this.props.volume !== null) {\n        _this.setVolume(_this.props.volume);\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"ref\", function (container) {\n      _this.container = container;\n    });\n\n    return _this;\n  }\n\n  _createClass(Vidyard, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this.props.onMount && this.props.onMount(this);\n    }\n  }, {\n    key: \"load\",\n    value: function load(url) {\n      var _this2 = this;\n\n      var _this$props = this.props,\n          playing = _this$props.playing,\n          config = _this$props.config,\n          onError = _this$props.onError,\n          onDuration = _this$props.onDuration;\n      var id = url && url.match(_patterns.MATCH_URL_VIDYARD)[1];\n\n      if (this.player) {\n        this.stop();\n      }\n\n      (0, _utils.getSDK)(SDK_URL, SDK_GLOBAL, SDK_GLOBAL_READY).then(function (Vidyard) {\n        if (!_this2.container) return;\n        Vidyard.api.addReadyListener(function (data, player) {\n          if (_this2.player) {\n            return;\n          }\n\n          _this2.player = player;\n\n          _this2.player.on('ready', _this2.props.onReady);\n\n          _this2.player.on('play', _this2.props.onPlay);\n\n          _this2.player.on('pause', _this2.props.onPause);\n\n          _this2.player.on('seek', _this2.props.onSeek);\n\n          _this2.player.on('playerComplete', _this2.props.onEnded);\n        }, id);\n        Vidyard.api.renderPlayer(_objectSpread({\n          uuid: id,\n          container: _this2.container,\n          autoplay: playing ? 1 : 0\n        }, config.options));\n        Vidyard.api.getPlayerMetadata(id).then(function (meta) {\n          _this2.duration = meta.length_in_seconds;\n          onDuration(meta.length_in_seconds);\n        });\n      }, onError);\n    }\n  }, {\n    key: \"play\",\n    value: function play() {\n      this.callPlayer('play');\n    }\n  }, {\n    key: \"pause\",\n    value: function pause() {\n      this.callPlayer('pause');\n    }\n  }, {\n    key: \"stop\",\n    value: function stop() {\n      window.VidyardV4.api.destroyPlayer(this.player);\n    }\n  }, {\n    key: \"seekTo\",\n    value: function seekTo(amount) {\n      this.callPlayer('seek', amount);\n    }\n  }, {\n    key: \"setVolume\",\n    value: function setVolume(fraction) {\n      this.callPlayer('setVolume', fraction);\n    }\n  }, {\n    key: \"setPlaybackRate\",\n    value: function setPlaybackRate(rate) {\n      this.callPlayer('setPlaybackSpeed', rate);\n    }\n  }, {\n    key: \"getDuration\",\n    value: function getDuration() {\n      return this.duration;\n    }\n  }, {\n    key: \"getCurrentTime\",\n    value: function getCurrentTime() {\n      return this.callPlayer('currentTime');\n    }\n  }, {\n    key: \"getSecondsLoaded\",\n    value: function getSecondsLoaded() {\n      return null;\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var display = this.props.display;\n      var style = {\n        width: '100%',\n        height: '100%',\n        display: display\n      };\n      return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n        style: style\n      }, /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n        ref: this.ref\n      }));\n    }\n  }]);\n\n  return Vidyard;\n}(_react.Component);\n\nexports[\"default\"] = Vidyard;\n\n_defineProperty(Vidyard, \"displayName\", 'Vidyard');\n\n_defineProperty(Vidyard, \"canPlay\", _patterns.canPlay.vidyard);","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _utils = require(\"../utils\");\n\nvar _patterns = require(\"../patterns\");\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar SDK_URL = 'https://cdn.embed.ly/player-0.1.0.min.js';\nvar SDK_GLOBAL = 'playerjs';\n\nvar Kaltura = /*#__PURE__*/function (_Component) {\n  _inherits(Kaltura, _Component);\n\n  var _super = _createSuper(Kaltura);\n\n  function Kaltura() {\n    var _this;\n\n    _classCallCheck(this, Kaltura);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _super.call.apply(_super, [this].concat(args));\n\n    _defineProperty(_assertThisInitialized(_this), \"callPlayer\", _utils.callPlayer);\n\n    _defineProperty(_assertThisInitialized(_this), \"duration\", null);\n\n    _defineProperty(_assertThisInitialized(_this), \"currentTime\", null);\n\n    _defineProperty(_assertThisInitialized(_this), \"secondsLoaded\", null);\n\n    _defineProperty(_assertThisInitialized(_this), \"mute\", function () {\n      _this.callPlayer('mute');\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"unmute\", function () {\n      _this.callPlayer('unmute');\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"ref\", function (iframe) {\n      _this.iframe = iframe;\n    });\n\n    return _this;\n  }\n\n  _createClass(Kaltura, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this.props.onMount && this.props.onMount(this);\n    }\n  }, {\n    key: \"load\",\n    value: function load(url) {\n      var _this2 = this;\n\n      (0, _utils.getSDK)(SDK_URL, SDK_GLOBAL).then(function (playerjs) {\n        if (!_this2.iframe) return;\n        _this2.player = new playerjs.Player(_this2.iframe);\n\n        _this2.player.on('ready', function () {\n          // An arbitrary timeout is required otherwise\n          // the event listeners won’t work\n          setTimeout(function () {\n            _this2.player.isReady = true;\n\n            _this2.player.setLoop(_this2.props.loop);\n\n            if (_this2.props.muted) {\n              _this2.player.mute();\n            }\n\n            _this2.addListeners(_this2.player, _this2.props);\n\n            _this2.props.onReady();\n          }, 500);\n        });\n      }, this.props.onError);\n    }\n  }, {\n    key: \"addListeners\",\n    value: function addListeners(player, props) {\n      var _this3 = this;\n\n      player.on('play', props.onPlay);\n      player.on('pause', props.onPause);\n      player.on('ended', props.onEnded);\n      player.on('error', props.onError);\n      player.on('timeupdate', function (_ref) {\n        var duration = _ref.duration,\n            seconds = _ref.seconds;\n        _this3.duration = duration;\n        _this3.currentTime = seconds;\n      });\n    }\n  }, {\n    key: \"play\",\n    value: function play() {\n      this.callPlayer('play');\n    }\n  }, {\n    key: \"pause\",\n    value: function pause() {\n      this.callPlayer('pause');\n    }\n  }, {\n    key: \"stop\",\n    value: function stop() {// Nothing to do\n    }\n  }, {\n    key: \"seekTo\",\n    value: function seekTo(seconds) {\n      this.callPlayer('setCurrentTime', seconds);\n    }\n  }, {\n    key: \"setVolume\",\n    value: function setVolume(fraction) {\n      this.callPlayer('setVolume', fraction);\n    }\n  }, {\n    key: \"setLoop\",\n    value: function setLoop(loop) {\n      this.callPlayer('setLoop', loop);\n    }\n  }, {\n    key: \"getDuration\",\n    value: function getDuration() {\n      return this.duration;\n    }\n  }, {\n    key: \"getCurrentTime\",\n    value: function getCurrentTime() {\n      return this.currentTime;\n    }\n  }, {\n    key: \"getSecondsLoaded\",\n    value: function getSecondsLoaded() {\n      return this.secondsLoaded;\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var style = {\n        width: '100%',\n        height: '100%'\n      };\n      return /*#__PURE__*/_react[\"default\"].createElement(\"iframe\", {\n        ref: this.ref,\n        src: this.props.url,\n        frameBorder: \"0\",\n        scrolling: \"no\",\n        style: style,\n        allow: \"encrypted-media; autoplay; fullscreen;\",\n        referrerPolicy: \"no-referrer-when-downgrade\"\n      });\n    }\n  }]);\n\n  return Kaltura;\n}(_react.Component);\n\nexports[\"default\"] = Kaltura;\n\n_defineProperty(Kaltura, \"displayName\", 'Kaltura');\n\n_defineProperty(Kaltura, \"canPlay\", _patterns.canPlay.kaltura);","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _utils = require(\"../utils\");\n\nvar _patterns = require(\"../patterns\");\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar HAS_NAVIGATOR = typeof navigator !== 'undefined';\nvar IS_IPAD_PRO = HAS_NAVIGATOR && navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1;\nvar IS_IOS = HAS_NAVIGATOR && (/iPad|iPhone|iPod/.test(navigator.userAgent) || IS_IPAD_PRO) && !window.MSStream;\nvar HLS_SDK_URL = 'https://cdn.jsdelivr.net/npm/hls.js@VERSION/dist/hls.min.js';\nvar HLS_GLOBAL = 'Hls';\nvar DASH_SDK_URL = 'https://cdnjs.cloudflare.com/ajax/libs/dashjs/VERSION/dash.all.min.js';\nvar DASH_GLOBAL = 'dashjs';\nvar FLV_SDK_URL = 'https://cdn.jsdelivr.net/npm/flv.js@VERSION/dist/flv.min.js';\nvar FLV_GLOBAL = 'flvjs';\nvar MATCH_DROPBOX_URL = /www\\.dropbox\\.com\\/.+/;\nvar MATCH_CLOUDFLARE_STREAM = /https:\\/\\/watch\\.cloudflarestream\\.com\\/([a-z0-9]+)/;\nvar REPLACE_CLOUDFLARE_STREAM = 'https://videodelivery.net/{id}/manifest/video.m3u8';\n\nvar FilePlayer = /*#__PURE__*/function (_Component) {\n  _inherits(FilePlayer, _Component);\n\n  var _super = _createSuper(FilePlayer);\n\n  function FilePlayer() {\n    var _this;\n\n    _classCallCheck(this, FilePlayer);\n\n    for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {\n      _args[_key] = arguments[_key];\n    }\n\n    _this = _super.call.apply(_super, [this].concat(_args));\n\n    _defineProperty(_assertThisInitialized(_this), \"onReady\", function () {\n      var _this$props;\n\n      return (_this$props = _this.props).onReady.apply(_this$props, arguments);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onPlay\", function () {\n      var _this$props2;\n\n      return (_this$props2 = _this.props).onPlay.apply(_this$props2, arguments);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onBuffer\", function () {\n      var _this$props3;\n\n      return (_this$props3 = _this.props).onBuffer.apply(_this$props3, arguments);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onBufferEnd\", function () {\n      var _this$props4;\n\n      return (_this$props4 = _this.props).onBufferEnd.apply(_this$props4, arguments);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onPause\", function () {\n      var _this$props5;\n\n      return (_this$props5 = _this.props).onPause.apply(_this$props5, arguments);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onEnded\", function () {\n      var _this$props6;\n\n      return (_this$props6 = _this.props).onEnded.apply(_this$props6, arguments);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onError\", function () {\n      var _this$props7;\n\n      return (_this$props7 = _this.props).onError.apply(_this$props7, arguments);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onPlayBackRateChange\", function (event) {\n      return _this.props.onPlaybackRateChange(event.target.playbackRate);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onEnablePIP\", function () {\n      var _this$props8;\n\n      return (_this$props8 = _this.props).onEnablePIP.apply(_this$props8, arguments);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onDisablePIP\", function (e) {\n      var _this$props9 = _this.props,\n          onDisablePIP = _this$props9.onDisablePIP,\n          playing = _this$props9.playing;\n      onDisablePIP(e);\n\n      if (playing) {\n        _this.play();\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onPresentationModeChange\", function (e) {\n      if (_this.player && (0, _utils.supportsWebKitPresentationMode)(_this.player)) {\n        var webkitPresentationMode = _this.player.webkitPresentationMode;\n\n        if (webkitPresentationMode === 'picture-in-picture') {\n          _this.onEnablePIP(e);\n        } else if (webkitPresentationMode === 'inline') {\n          _this.onDisablePIP(e);\n        }\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onSeek\", function (e) {\n      _this.props.onSeek(e.target.currentTime);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"mute\", function () {\n      _this.player.muted = true;\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"unmute\", function () {\n      _this.player.muted = false;\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"renderSourceElement\", function (source, index) {\n      if (typeof source === 'string') {\n        return /*#__PURE__*/_react[\"default\"].createElement(\"source\", {\n          key: index,\n          src: source\n        });\n      }\n\n      return /*#__PURE__*/_react[\"default\"].createElement(\"source\", _extends({\n        key: index\n      }, source));\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"renderTrack\", function (track, index) {\n      return /*#__PURE__*/_react[\"default\"].createElement(\"track\", _extends({\n        key: index\n      }, track));\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"ref\", function (player) {\n      if (_this.player) {\n        // Store previous player to be used by removeListeners()\n        _this.prevPlayer = _this.player;\n      }\n\n      _this.player = player;\n    });\n\n    return _this;\n  }\n\n  _createClass(FilePlayer, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this.props.onMount && this.props.onMount(this);\n      this.addListeners(this.player);\n\n      if (IS_IOS) {\n        this.player.load();\n      }\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate(prevProps) {\n      if (this.shouldUseAudio(this.props) !== this.shouldUseAudio(prevProps)) {\n        this.removeListeners(this.prevPlayer, prevProps.url);\n        this.addListeners(this.player);\n      }\n\n      if (this.props.url !== prevProps.url && !(0, _utils.isMediaStream)(this.props.url)) {\n        this.player.srcObject = null;\n      }\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      this.player.src = '';\n      this.removeListeners(this.player);\n\n      if (this.hls) {\n        this.hls.destroy();\n      }\n    }\n  }, {\n    key: \"addListeners\",\n    value: function addListeners(player) {\n      var _this$props10 = this.props,\n          url = _this$props10.url,\n          playsinline = _this$props10.playsinline;\n      player.addEventListener('play', this.onPlay);\n      player.addEventListener('waiting', this.onBuffer);\n      player.addEventListener('playing', this.onBufferEnd);\n      player.addEventListener('pause', this.onPause);\n      player.addEventListener('seeked', this.onSeek);\n      player.addEventListener('ended', this.onEnded);\n      player.addEventListener('error', this.onError);\n      player.addEventListener('ratechange', this.onPlayBackRateChange);\n      player.addEventListener('enterpictureinpicture', this.onEnablePIP);\n      player.addEventListener('leavepictureinpicture', this.onDisablePIP);\n      player.addEventListener('webkitpresentationmodechanged', this.onPresentationModeChange);\n\n      if (!this.shouldUseHLS(url)) {\n        // onReady is handled by hls.js\n        player.addEventListener('canplay', this.onReady);\n      }\n\n      if (playsinline) {\n        player.setAttribute('playsinline', '');\n        player.setAttribute('webkit-playsinline', '');\n        player.setAttribute('x5-playsinline', '');\n      }\n    }\n  }, {\n    key: \"removeListeners\",\n    value: function removeListeners(player, url) {\n      player.removeEventListener('canplay', this.onReady);\n      player.removeEventListener('play', this.onPlay);\n      player.removeEventListener('waiting', this.onBuffer);\n      player.removeEventListener('playing', this.onBufferEnd);\n      player.removeEventListener('pause', this.onPause);\n      player.removeEventListener('seeked', this.onSeek);\n      player.removeEventListener('ended', this.onEnded);\n      player.removeEventListener('error', this.onError);\n      player.removeEventListener('ratechange', this.onPlayBackRateChange);\n      player.removeEventListener('enterpictureinpicture', this.onEnablePIP);\n      player.removeEventListener('leavepictureinpicture', this.onDisablePIP);\n      player.removeEventListener('webkitpresentationmodechanged', this.onPresentationModeChange);\n\n      if (!this.shouldUseHLS(url)) {\n        // onReady is handled by hls.js\n        player.removeEventListener('canplay', this.onReady);\n      }\n    } // Proxy methods to prevent listener leaks\n\n  }, {\n    key: \"shouldUseAudio\",\n    value: function shouldUseAudio(props) {\n      if (props.config.forceVideo) {\n        return false;\n      }\n\n      if (props.config.attributes.poster) {\n        return false; // Use <video> so that poster is shown\n      }\n\n      return _patterns.AUDIO_EXTENSIONS.test(props.url) || props.config.forceAudio;\n    }\n  }, {\n    key: \"shouldUseHLS\",\n    value: function shouldUseHLS(url) {\n      if (this.props.config.forceHLS) {\n        return true;\n      }\n\n      if (IS_IOS) {\n        return false;\n      }\n\n      return _patterns.HLS_EXTENSIONS.test(url) || MATCH_CLOUDFLARE_STREAM.test(url);\n    }\n  }, {\n    key: \"shouldUseDASH\",\n    value: function shouldUseDASH(url) {\n      return _patterns.DASH_EXTENSIONS.test(url) || this.props.config.forceDASH;\n    }\n  }, {\n    key: \"shouldUseFLV\",\n    value: function shouldUseFLV(url) {\n      return _patterns.FLV_EXTENSIONS.test(url) || this.props.config.forceFLV;\n    }\n  }, {\n    key: \"load\",\n    value: function load(url) {\n      var _this2 = this;\n\n      var _this$props$config = this.props.config,\n          hlsVersion = _this$props$config.hlsVersion,\n          hlsOptions = _this$props$config.hlsOptions,\n          dashVersion = _this$props$config.dashVersion,\n          flvVersion = _this$props$config.flvVersion;\n\n      if (this.hls) {\n        this.hls.destroy();\n      }\n\n      if (this.dash) {\n        this.dash.reset();\n      }\n\n      if (this.shouldUseHLS(url)) {\n        (0, _utils.getSDK)(HLS_SDK_URL.replace('VERSION', hlsVersion), HLS_GLOBAL).then(function (Hls) {\n          _this2.hls = new Hls(hlsOptions);\n\n          _this2.hls.on(Hls.Events.MANIFEST_PARSED, function () {\n            _this2.props.onReady();\n          });\n\n          _this2.hls.on(Hls.Events.ERROR, function (e, data) {\n            _this2.props.onError(e, data, _this2.hls, Hls);\n          });\n\n          if (MATCH_CLOUDFLARE_STREAM.test(url)) {\n            var id = url.match(MATCH_CLOUDFLARE_STREAM)[1];\n\n            _this2.hls.loadSource(REPLACE_CLOUDFLARE_STREAM.replace('{id}', id));\n          } else {\n            _this2.hls.loadSource(url);\n          }\n\n          _this2.hls.attachMedia(_this2.player);\n\n          _this2.props.onLoaded();\n        });\n      }\n\n      if (this.shouldUseDASH(url)) {\n        (0, _utils.getSDK)(DASH_SDK_URL.replace('VERSION', dashVersion), DASH_GLOBAL).then(function (dashjs) {\n          _this2.dash = dashjs.MediaPlayer().create();\n\n          _this2.dash.initialize(_this2.player, url, _this2.props.playing);\n\n          _this2.dash.on('error', _this2.props.onError);\n\n          if (parseInt(dashVersion) < 3) {\n            _this2.dash.getDebug().setLogToBrowserConsole(false);\n          } else {\n            _this2.dash.updateSettings({\n              debug: {\n                logLevel: dashjs.Debug.LOG_LEVEL_NONE\n              }\n            });\n          }\n\n          _this2.props.onLoaded();\n        });\n      }\n\n      if (this.shouldUseFLV(url)) {\n        (0, _utils.getSDK)(FLV_SDK_URL.replace('VERSION', flvVersion), FLV_GLOBAL).then(function (flvjs) {\n          _this2.flv = flvjs.createPlayer({\n            type: 'flv',\n            url: url\n          });\n\n          _this2.flv.attachMediaElement(_this2.player);\n\n          _this2.flv.on(flvjs.Events.ERROR, function (e, data) {\n            _this2.props.onError(e, data, _this2.flv, flvjs);\n          });\n\n          _this2.flv.load();\n\n          _this2.props.onLoaded();\n        });\n      }\n\n      if (url instanceof Array) {\n        // When setting new urls (<source>) on an already loaded video,\n        // HTMLMediaElement.load() is needed to reset the media element\n        // and restart the media resource. Just replacing children source\n        // dom nodes is not enough\n        this.player.load();\n      } else if ((0, _utils.isMediaStream)(url)) {\n        try {\n          this.player.srcObject = url;\n        } catch (e) {\n          this.player.src = window.URL.createObjectURL(url);\n        }\n      }\n    }\n  }, {\n    key: \"play\",\n    value: function play() {\n      var promise = this.player.play();\n\n      if (promise) {\n        promise[\"catch\"](this.props.onError);\n      }\n    }\n  }, {\n    key: \"pause\",\n    value: function pause() {\n      this.player.pause();\n    }\n  }, {\n    key: \"stop\",\n    value: function stop() {\n      this.player.removeAttribute('src');\n\n      if (this.dash) {\n        this.dash.reset();\n      }\n    }\n  }, {\n    key: \"seekTo\",\n    value: function seekTo(seconds) {\n      this.player.currentTime = seconds;\n    }\n  }, {\n    key: \"setVolume\",\n    value: function setVolume(fraction) {\n      this.player.volume = fraction;\n    }\n  }, {\n    key: \"enablePIP\",\n    value: function enablePIP() {\n      if (this.player.requestPictureInPicture && document.pictureInPictureElement !== this.player) {\n        this.player.requestPictureInPicture();\n      } else if ((0, _utils.supportsWebKitPresentationMode)(this.player) && this.player.webkitPresentationMode !== 'picture-in-picture') {\n        this.player.webkitSetPresentationMode('picture-in-picture');\n      }\n    }\n  }, {\n    key: \"disablePIP\",\n    value: function disablePIP() {\n      if (document.exitPictureInPicture && document.pictureInPictureElement === this.player) {\n        document.exitPictureInPicture();\n      } else if ((0, _utils.supportsWebKitPresentationMode)(this.player) && this.player.webkitPresentationMode !== 'inline') {\n        this.player.webkitSetPresentationMode('inline');\n      }\n    }\n  }, {\n    key: \"setPlaybackRate\",\n    value: function setPlaybackRate(rate) {\n      try {\n        this.player.playbackRate = rate;\n      } catch (error) {\n        this.props.onError(error);\n      }\n    }\n  }, {\n    key: \"getDuration\",\n    value: function getDuration() {\n      if (!this.player) return null;\n      var _this$player = this.player,\n          duration = _this$player.duration,\n          seekable = _this$player.seekable; // on iOS, live streams return Infinity for the duration\n      // so instead we use the end of the seekable timerange\n\n      if (duration === Infinity && seekable.length > 0) {\n        return seekable.end(seekable.length - 1);\n      }\n\n      return duration;\n    }\n  }, {\n    key: \"getCurrentTime\",\n    value: function getCurrentTime() {\n      if (!this.player) return null;\n      return this.player.currentTime;\n    }\n  }, {\n    key: \"getSecondsLoaded\",\n    value: function getSecondsLoaded() {\n      if (!this.player) return null;\n      var buffered = this.player.buffered;\n\n      if (buffered.length === 0) {\n        return 0;\n      }\n\n      var end = buffered.end(buffered.length - 1);\n      var duration = this.getDuration();\n\n      if (end > duration) {\n        return duration;\n      }\n\n      return end;\n    }\n  }, {\n    key: \"getSource\",\n    value: function getSource(url) {\n      var useHLS = this.shouldUseHLS(url);\n      var useDASH = this.shouldUseDASH(url);\n      var useFLV = this.shouldUseFLV(url);\n\n      if (url instanceof Array || (0, _utils.isMediaStream)(url) || useHLS || useDASH || useFLV) {\n        return undefined;\n      }\n\n      if (MATCH_DROPBOX_URL.test(url)) {\n        return url.replace('www.dropbox.com', 'dl.dropboxusercontent.com');\n      }\n\n      return url;\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this$props11 = this.props,\n          url = _this$props11.url,\n          playing = _this$props11.playing,\n          loop = _this$props11.loop,\n          controls = _this$props11.controls,\n          muted = _this$props11.muted,\n          config = _this$props11.config,\n          width = _this$props11.width,\n          height = _this$props11.height;\n      var useAudio = this.shouldUseAudio(this.props);\n      var Element = useAudio ? 'audio' : 'video';\n      var style = {\n        width: width === 'auto' ? width : '100%',\n        height: height === 'auto' ? height : '100%'\n      };\n      return /*#__PURE__*/_react[\"default\"].createElement(Element, _extends({\n        ref: this.ref,\n        src: this.getSource(url),\n        style: style,\n        preload: \"auto\",\n        autoPlay: playing || undefined,\n        controls: controls,\n        muted: muted,\n        loop: loop\n      }, config.attributes), url instanceof Array && url.map(this.renderSourceElement), config.tracks.map(this.renderTrack));\n    }\n  }]);\n\n  return FilePlayer;\n}(_react.Component);\n\nexports[\"default\"] = FilePlayer;\n\n_defineProperty(FilePlayer, \"displayName\", 'FilePlayer');\n\n_defineProperty(FilePlayer, \"canPlay\", _patterns.canPlay.file);","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = require(\"react\");\n\nvar _utils = require(\"../utils\");\n\nvar _patterns = require(\"../patterns\");\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nvar _default = [{\n  key: 'youtube',\n  name: 'YouTube',\n  canPlay: _patterns.canPlay.youtube,\n  lazyPlayer: /*#__PURE__*/(0, _react.lazy)(function () {\n    return Promise.resolve().then(function () {\n      return _interopRequireWildcard(require('./YouTube'));\n    });\n  })\n}, {\n  key: 'soundcloud',\n  name: 'SoundCloud',\n  canPlay: _patterns.canPlay.soundcloud,\n  lazyPlayer: /*#__PURE__*/(0, _react.lazy)(function () {\n    return Promise.resolve().then(function () {\n      return _interopRequireWildcard(require('./SoundCloud'));\n    });\n  })\n}, {\n  key: 'vimeo',\n  name: 'Vimeo',\n  canPlay: _patterns.canPlay.vimeo,\n  lazyPlayer: /*#__PURE__*/(0, _react.lazy)(function () {\n    return Promise.resolve().then(function () {\n      return _interopRequireWildcard(require('./Vimeo'));\n    });\n  })\n}, {\n  key: 'facebook',\n  name: 'Facebook',\n  canPlay: _patterns.canPlay.facebook,\n  lazyPlayer: /*#__PURE__*/(0, _react.lazy)(function () {\n    return Promise.resolve().then(function () {\n      return _interopRequireWildcard(require('./Facebook'));\n    });\n  })\n}, {\n  key: 'streamable',\n  name: 'Streamable',\n  canPlay: _patterns.canPlay.streamable,\n  lazyPlayer: /*#__PURE__*/(0, _react.lazy)(function () {\n    return Promise.resolve().then(function () {\n      return _interopRequireWildcard(require('./Streamable'));\n    });\n  })\n}, {\n  key: 'wistia',\n  name: 'Wistia',\n  canPlay: _patterns.canPlay.wistia,\n  lazyPlayer: /*#__PURE__*/(0, _react.lazy)(function () {\n    return Promise.resolve().then(function () {\n      return _interopRequireWildcard(require('./Wistia'));\n    });\n  })\n}, {\n  key: 'twitch',\n  name: 'Twitch',\n  canPlay: _patterns.canPlay.twitch,\n  lazyPlayer: /*#__PURE__*/(0, _react.lazy)(function () {\n    return Promise.resolve().then(function () {\n      return _interopRequireWildcard(require('./Twitch'));\n    });\n  })\n}, {\n  key: 'dailymotion',\n  name: 'DailyMotion',\n  canPlay: _patterns.canPlay.dailymotion,\n  lazyPlayer: /*#__PURE__*/(0, _react.lazy)(function () {\n    return Promise.resolve().then(function () {\n      return _interopRequireWildcard(require('./DailyMotion'));\n    });\n  })\n}, {\n  key: 'mixcloud',\n  name: 'Mixcloud',\n  canPlay: _patterns.canPlay.mixcloud,\n  lazyPlayer: /*#__PURE__*/(0, _react.lazy)(function () {\n    return Promise.resolve().then(function () {\n      return _interopRequireWildcard(require('./Mixcloud'));\n    });\n  })\n}, {\n  key: 'vidyard',\n  name: 'Vidyard',\n  canPlay: _patterns.canPlay.vidyard,\n  lazyPlayer: /*#__PURE__*/(0, _react.lazy)(function () {\n    return Promise.resolve().then(function () {\n      return _interopRequireWildcard(require('./Vidyard'));\n    });\n  })\n}, {\n  key: 'kaltura',\n  name: 'Kaltura',\n  canPlay: _patterns.canPlay.kaltura,\n  lazyPlayer: /*#__PURE__*/(0, _react.lazy)(function () {\n    return Promise.resolve().then(function () {\n      return _interopRequireWildcard(require('./Kaltura'));\n    });\n  })\n}, {\n  key: 'file',\n  name: 'FilePlayer',\n  canPlay: _patterns.canPlay.file,\n  canEnablePIP: function canEnablePIP(url) {\n    return _patterns.canPlay.file(url) && (document.pictureInPictureEnabled || (0, _utils.supportsWebKitPresentationMode)()) && !_patterns.AUDIO_EXTENSIONS.test(url);\n  },\n  lazyPlayer: /*#__PURE__*/(0, _react.lazy)(function () {\n    return Promise.resolve().then(function () {\n      return _interopRequireWildcard(require('./FilePlayer'));\n    });\n  })\n}];\nexports[\"default\"] = _default;","/* global Map:readonly, Set:readonly, ArrayBuffer:readonly */\n\nvar hasElementType = typeof Element !== 'undefined';\nvar hasMap = typeof Map === 'function';\nvar hasSet = typeof Set === 'function';\nvar hasArrayBuffer = typeof ArrayBuffer === 'function' && !!ArrayBuffer.isView;\n\n// Note: We **don't** need `envHasBigInt64Array` in fde es6/index.js\n\nfunction equal(a, b) {\n  // START: fast-deep-equal es6/index.js 3.1.3\n  if (a === b) return true;\n\n  if (a && b && typeof a == 'object' && typeof b == 'object') {\n    if (a.constructor !== b.constructor) return false;\n\n    var length, i, keys;\n    if (Array.isArray(a)) {\n      length = a.length;\n      if (length != b.length) return false;\n      for (i = length; i-- !== 0;)\n        if (!equal(a[i], b[i])) return false;\n      return true;\n    }\n\n    // START: Modifications:\n    // 1. Extra `has<Type> &&` helpers in initial condition allow es6 code\n    //    to co-exist with es5.\n    // 2. Replace `for of` with es5 compliant iteration using `for`.\n    //    Basically, take:\n    //\n    //    ```js\n    //    for (i of a.entries())\n    //      if (!b.has(i[0])) return false;\n    //    ```\n    //\n    //    ... and convert to:\n    //\n    //    ```js\n    //    it = a.entries();\n    //    while (!(i = it.next()).done)\n    //      if (!b.has(i.value[0])) return false;\n    //    ```\n    //\n    //    **Note**: `i` access switches to `i.value`.\n    var it;\n    if (hasMap && (a instanceof Map) && (b instanceof Map)) {\n      if (a.size !== b.size) return false;\n      it = a.entries();\n      while (!(i = it.next()).done)\n        if (!b.has(i.value[0])) return false;\n      it = a.entries();\n      while (!(i = it.next()).done)\n        if (!equal(i.value[1], b.get(i.value[0]))) return false;\n      return true;\n    }\n\n    if (hasSet && (a instanceof Set) && (b instanceof Set)) {\n      if (a.size !== b.size) return false;\n      it = a.entries();\n      while (!(i = it.next()).done)\n        if (!b.has(i.value[0])) return false;\n      return true;\n    }\n    // END: Modifications\n\n    if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n      length = a.length;\n      if (length != b.length) return false;\n      for (i = length; i-- !== 0;)\n        if (a[i] !== b[i]) return false;\n      return true;\n    }\n\n    if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n    // START: Modifications:\n    // Apply guards for `Object.create(null)` handling. See:\n    // - https://github.com/FormidableLabs/react-fast-compare/issues/64\n    // - https://github.com/epoberezkin/fast-deep-equal/issues/49\n    if (a.valueOf !== Object.prototype.valueOf && typeof a.valueOf === 'function' && typeof b.valueOf === 'function') return a.valueOf() === b.valueOf();\n    if (a.toString !== Object.prototype.toString && typeof a.toString === 'function' && typeof b.toString === 'function') return a.toString() === b.toString();\n    // END: Modifications\n\n    keys = Object.keys(a);\n    length = keys.length;\n    if (length !== Object.keys(b).length) return false;\n\n    for (i = length; i-- !== 0;)\n      if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n    // END: fast-deep-equal\n\n    // START: react-fast-compare\n    // custom handling for DOM elements\n    if (hasElementType && a instanceof Element) return false;\n\n    // custom handling for React/Preact\n    for (i = length; i-- !== 0;) {\n      if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {\n        // React-specific: avoid traversing React elements' _owner\n        // Preact-specific: avoid traversing Preact elements' __v and __o\n        //    __v = $_original / $_vnode\n        //    __o = $_owner\n        // These properties contain circular references and are not needed when\n        // comparing the actual elements (and not their owners)\n        // .$$typeof and ._store on just reasonable markers of elements\n\n        continue;\n      }\n\n      // all other properties should be traversed as usual\n      if (!equal(a[keys[i]], b[keys[i]])) return false;\n    }\n    // END: react-fast-compare\n\n    // START: fast-deep-equal\n    return true;\n  }\n\n  return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function isEqual(a, b) {\n  try {\n    return equal(a, b);\n  } catch (error) {\n    if (((error.message || '').match(/stack|recursion/i))) {\n      // warn on circular references, don't crash\n      // browsers give this different errors name and messages:\n      // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n      // firefox: \"InternalError\", too much recursion\"\n      // edge: \"Error\", \"Out of stack space\"\n      console.warn('react-fast-compare cannot handle circular refs');\n      return false;\n    }\n    // some other error. we should definitely know about these\n    throw error;\n  }\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.defaultProps = exports.propTypes = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar string = _propTypes[\"default\"].string,\n    bool = _propTypes[\"default\"].bool,\n    number = _propTypes[\"default\"].number,\n    array = _propTypes[\"default\"].array,\n    oneOfType = _propTypes[\"default\"].oneOfType,\n    shape = _propTypes[\"default\"].shape,\n    object = _propTypes[\"default\"].object,\n    func = _propTypes[\"default\"].func,\n    node = _propTypes[\"default\"].node;\nvar propTypes = {\n  url: oneOfType([string, array, object]),\n  playing: bool,\n  loop: bool,\n  controls: bool,\n  volume: number,\n  muted: bool,\n  playbackRate: number,\n  width: oneOfType([string, number]),\n  height: oneOfType([string, number]),\n  style: object,\n  progressInterval: number,\n  playsinline: bool,\n  pip: bool,\n  stopOnUnmount: bool,\n  light: oneOfType([bool, string, object]),\n  playIcon: node,\n  previewTabIndex: number,\n  fallback: node,\n  oEmbedUrl: string,\n  wrapper: oneOfType([string, func, shape({\n    render: func.isRequired\n  })]),\n  config: shape({\n    soundcloud: shape({\n      options: object\n    }),\n    youtube: shape({\n      playerVars: object,\n      embedOptions: object,\n      onUnstarted: func\n    }),\n    facebook: shape({\n      appId: string,\n      version: string,\n      playerId: string,\n      attributes: object\n    }),\n    dailymotion: shape({\n      params: object\n    }),\n    vimeo: shape({\n      playerOptions: object,\n      title: string\n    }),\n    file: shape({\n      attributes: object,\n      tracks: array,\n      forceVideo: bool,\n      forceAudio: bool,\n      forceHLS: bool,\n      forceDASH: bool,\n      forceFLV: bool,\n      hlsOptions: object,\n      hlsVersion: string,\n      dashVersion: string,\n      flvVersion: string\n    }),\n    wistia: shape({\n      options: object,\n      playerId: string,\n      customControls: array\n    }),\n    mixcloud: shape({\n      options: object\n    }),\n    twitch: shape({\n      options: object,\n      playerId: string\n    }),\n    vidyard: shape({\n      options: object\n    })\n  }),\n  onReady: func,\n  onStart: func,\n  onPlay: func,\n  onPause: func,\n  onBuffer: func,\n  onBufferEnd: func,\n  onEnded: func,\n  onError: func,\n  onDuration: func,\n  onSeek: func,\n  onPlaybackRateChange: func,\n  onProgress: func,\n  onClickPreview: func,\n  onEnablePIP: func,\n  onDisablePIP: func\n};\nexports.propTypes = propTypes;\n\nvar noop = function noop() {};\n\nvar defaultProps = {\n  playing: false,\n  loop: false,\n  controls: false,\n  volume: null,\n  muted: false,\n  playbackRate: 1,\n  width: '640px',\n  height: '360px',\n  style: {},\n  progressInterval: 1000,\n  playsinline: false,\n  pip: false,\n  stopOnUnmount: true,\n  light: false,\n  fallback: null,\n  wrapper: 'div',\n  previewTabIndex: 0,\n  oEmbedUrl: 'https://noembed.com/embed?url={url}',\n  config: {\n    soundcloud: {\n      options: {\n        visual: true,\n        // Undocumented, but makes player fill container and look better\n        buying: false,\n        liking: false,\n        download: false,\n        sharing: false,\n        show_comments: false,\n        show_playcount: false\n      }\n    },\n    youtube: {\n      playerVars: {\n        playsinline: 1,\n        showinfo: 0,\n        rel: 0,\n        iv_load_policy: 3,\n        modestbranding: 1\n      },\n      embedOptions: {},\n      onUnstarted: noop\n    },\n    facebook: {\n      appId: '1309697205772819',\n      version: 'v3.3',\n      playerId: null,\n      attributes: {}\n    },\n    dailymotion: {\n      params: {\n        api: 1,\n        'endscreen-enable': false\n      }\n    },\n    vimeo: {\n      playerOptions: {\n        autopause: false,\n        byline: false,\n        portrait: false,\n        title: false\n      },\n      title: null\n    },\n    file: {\n      attributes: {},\n      tracks: [],\n      forceVideo: false,\n      forceAudio: false,\n      forceHLS: false,\n      forceDASH: false,\n      forceFLV: false,\n      hlsOptions: {},\n      hlsVersion: '1.1.4',\n      dashVersion: '3.1.3',\n      flvVersion: '1.5.0'\n    },\n    wistia: {\n      options: {},\n      playerId: null,\n      customControls: null\n    },\n    mixcloud: {\n      options: {\n        hide_cover: 1\n      }\n    },\n    twitch: {\n      options: {},\n      playerId: null\n    },\n    vidyard: {\n      options: {}\n    }\n  },\n  onReady: noop,\n  onStart: noop,\n  onPlay: noop,\n  onPause: noop,\n  onBuffer: noop,\n  onBufferEnd: noop,\n  onEnded: noop,\n  onError: noop,\n  onDuration: noop,\n  onSeek: noop,\n  onPlaybackRateChange: noop,\n  onProgress: noop,\n  onClickPreview: noop,\n  onEnablePIP: noop,\n  onDisablePIP: noop\n};\nexports.defaultProps = defaultProps;","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _reactFastCompare = _interopRequireDefault(require(\"react-fast-compare\"));\n\nvar _props = require(\"./props\");\n\nvar _utils = require(\"./utils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar SEEK_ON_PLAY_EXPIRY = 5000;\n\nvar Player = /*#__PURE__*/function (_Component) {\n  _inherits(Player, _Component);\n\n  var _super = _createSuper(Player);\n\n  function Player() {\n    var _this;\n\n    _classCallCheck(this, Player);\n\n    for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {\n      _args[_key] = arguments[_key];\n    }\n\n    _this = _super.call.apply(_super, [this].concat(_args));\n\n    _defineProperty(_assertThisInitialized(_this), \"mounted\", false);\n\n    _defineProperty(_assertThisInitialized(_this), \"isReady\", false);\n\n    _defineProperty(_assertThisInitialized(_this), \"isPlaying\", false);\n\n    _defineProperty(_assertThisInitialized(_this), \"isLoading\", true);\n\n    _defineProperty(_assertThisInitialized(_this), \"loadOnReady\", null);\n\n    _defineProperty(_assertThisInitialized(_this), \"startOnPlay\", true);\n\n    _defineProperty(_assertThisInitialized(_this), \"seekOnPlay\", null);\n\n    _defineProperty(_assertThisInitialized(_this), \"onDurationCalled\", false);\n\n    _defineProperty(_assertThisInitialized(_this), \"handlePlayerMount\", function (player) {\n      if (_this.player) {\n        _this.progress(); // Ensure onProgress is still called in strict mode\n\n\n        return; // Return here to prevent loading twice in strict mode\n      }\n\n      _this.player = player;\n\n      _this.player.load(_this.props.url);\n\n      _this.progress();\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"getInternalPlayer\", function (key) {\n      if (!_this.player) return null;\n      return _this.player[key];\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"progress\", function () {\n      if (_this.props.url && _this.player && _this.isReady) {\n        var playedSeconds = _this.getCurrentTime() || 0;\n\n        var loadedSeconds = _this.getSecondsLoaded();\n\n        var duration = _this.getDuration();\n\n        if (duration) {\n          var progress = {\n            playedSeconds: playedSeconds,\n            played: playedSeconds / duration\n          };\n\n          if (loadedSeconds !== null) {\n            progress.loadedSeconds = loadedSeconds;\n            progress.loaded = loadedSeconds / duration;\n          } // Only call onProgress if values have changed\n\n\n          if (progress.playedSeconds !== _this.prevPlayed || progress.loadedSeconds !== _this.prevLoaded) {\n            _this.props.onProgress(progress);\n          }\n\n          _this.prevPlayed = progress.playedSeconds;\n          _this.prevLoaded = progress.loadedSeconds;\n        }\n      }\n\n      _this.progressTimeout = setTimeout(_this.progress, _this.props.progressFrequency || _this.props.progressInterval);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"handleReady\", function () {\n      if (!_this.mounted) return;\n      _this.isReady = true;\n      _this.isLoading = false;\n      var _this$props = _this.props,\n          onReady = _this$props.onReady,\n          playing = _this$props.playing,\n          volume = _this$props.volume,\n          muted = _this$props.muted;\n      onReady();\n\n      if (!muted && volume !== null) {\n        _this.player.setVolume(volume);\n      }\n\n      if (_this.loadOnReady) {\n        _this.player.load(_this.loadOnReady, true);\n\n        _this.loadOnReady = null;\n      } else if (playing) {\n        _this.player.play();\n      }\n\n      _this.handleDurationCheck();\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"handlePlay\", function () {\n      _this.isPlaying = true;\n      _this.isLoading = false;\n      var _this$props2 = _this.props,\n          onStart = _this$props2.onStart,\n          onPlay = _this$props2.onPlay,\n          playbackRate = _this$props2.playbackRate;\n\n      if (_this.startOnPlay) {\n        if (_this.player.setPlaybackRate && playbackRate !== 1) {\n          _this.player.setPlaybackRate(playbackRate);\n        }\n\n        onStart();\n        _this.startOnPlay = false;\n      }\n\n      onPlay();\n\n      if (_this.seekOnPlay) {\n        _this.seekTo(_this.seekOnPlay);\n\n        _this.seekOnPlay = null;\n      }\n\n      _this.handleDurationCheck();\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"handlePause\", function (e) {\n      _this.isPlaying = false;\n\n      if (!_this.isLoading) {\n        _this.props.onPause(e);\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"handleEnded\", function () {\n      var _this$props3 = _this.props,\n          activePlayer = _this$props3.activePlayer,\n          loop = _this$props3.loop,\n          onEnded = _this$props3.onEnded;\n\n      if (activePlayer.loopOnEnded && loop) {\n        _this.seekTo(0);\n      }\n\n      if (!loop) {\n        _this.isPlaying = false;\n        onEnded();\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"handleError\", function () {\n      var _this$props4;\n\n      _this.isLoading = false;\n\n      (_this$props4 = _this.props).onError.apply(_this$props4, arguments);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"handleDurationCheck\", function () {\n      clearTimeout(_this.durationCheckTimeout);\n\n      var duration = _this.getDuration();\n\n      if (duration) {\n        if (!_this.onDurationCalled) {\n          _this.props.onDuration(duration);\n\n          _this.onDurationCalled = true;\n        }\n      } else {\n        _this.durationCheckTimeout = setTimeout(_this.handleDurationCheck, 100);\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"handleLoaded\", function () {\n      // Sometimes we know loading has stopped but onReady/onPlay are never called\n      // so this provides a way for players to avoid getting stuck\n      _this.isLoading = false;\n    });\n\n    return _this;\n  }\n\n  _createClass(Player, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this.mounted = true;\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      clearTimeout(this.progressTimeout);\n      clearTimeout(this.durationCheckTimeout);\n\n      if (this.isReady && this.props.stopOnUnmount) {\n        this.player.stop();\n\n        if (this.player.disablePIP) {\n          this.player.disablePIP();\n        }\n      }\n\n      this.mounted = false;\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate(prevProps) {\n      var _this2 = this;\n\n      // If there isn’t a player available, don’t do anything\n      if (!this.player) {\n        return;\n      } // Invoke player methods based on changed props\n\n\n      var _this$props5 = this.props,\n          url = _this$props5.url,\n          playing = _this$props5.playing,\n          volume = _this$props5.volume,\n          muted = _this$props5.muted,\n          playbackRate = _this$props5.playbackRate,\n          pip = _this$props5.pip,\n          loop = _this$props5.loop,\n          activePlayer = _this$props5.activePlayer,\n          disableDeferredLoading = _this$props5.disableDeferredLoading;\n\n      if (!(0, _reactFastCompare[\"default\"])(prevProps.url, url)) {\n        if (this.isLoading && !activePlayer.forceLoad && !disableDeferredLoading && !(0, _utils.isMediaStream)(url)) {\n          console.warn(\"ReactPlayer: the attempt to load \".concat(url, \" is being deferred until the player has loaded\"));\n          this.loadOnReady = url;\n          return;\n        }\n\n        this.isLoading = true;\n        this.startOnPlay = true;\n        this.onDurationCalled = false;\n        this.player.load(url, this.isReady);\n      }\n\n      if (!prevProps.playing && playing && !this.isPlaying) {\n        this.player.play();\n      }\n\n      if (prevProps.playing && !playing && this.isPlaying) {\n        this.player.pause();\n      }\n\n      if (!prevProps.pip && pip && this.player.enablePIP) {\n        this.player.enablePIP();\n      }\n\n      if (prevProps.pip && !pip && this.player.disablePIP) {\n        this.player.disablePIP();\n      }\n\n      if (prevProps.volume !== volume && volume !== null) {\n        this.player.setVolume(volume);\n      }\n\n      if (prevProps.muted !== muted) {\n        if (muted) {\n          this.player.mute();\n        } else {\n          this.player.unmute();\n\n          if (volume !== null) {\n            // Set volume next tick to fix a bug with DailyMotion\n            setTimeout(function () {\n              return _this2.player.setVolume(volume);\n            });\n          }\n        }\n      }\n\n      if (prevProps.playbackRate !== playbackRate && this.player.setPlaybackRate) {\n        this.player.setPlaybackRate(playbackRate);\n      }\n\n      if (prevProps.loop !== loop && this.player.setLoop) {\n        this.player.setLoop(loop);\n      }\n    }\n  }, {\n    key: \"getDuration\",\n    value: function getDuration() {\n      if (!this.isReady) return null;\n      return this.player.getDuration();\n    }\n  }, {\n    key: \"getCurrentTime\",\n    value: function getCurrentTime() {\n      if (!this.isReady) return null;\n      return this.player.getCurrentTime();\n    }\n  }, {\n    key: \"getSecondsLoaded\",\n    value: function getSecondsLoaded() {\n      if (!this.isReady) return null;\n      return this.player.getSecondsLoaded();\n    }\n  }, {\n    key: \"seekTo\",\n    value: function seekTo(amount, type) {\n      var _this3 = this;\n\n      // When seeking before player is ready, store value and seek later\n      if (!this.isReady) {\n        if (amount !== 0) {\n          this.seekOnPlay = amount;\n          setTimeout(function () {\n            _this3.seekOnPlay = null;\n          }, SEEK_ON_PLAY_EXPIRY);\n        }\n\n        return;\n      }\n\n      var isFraction = !type ? amount > 0 && amount < 1 : type === 'fraction';\n\n      if (isFraction) {\n        // Convert fraction to seconds based on duration\n        var duration = this.player.getDuration();\n\n        if (!duration) {\n          console.warn('ReactPlayer: could not seek using fraction – duration not yet available');\n          return;\n        }\n\n        this.player.seekTo(duration * amount);\n        return;\n      }\n\n      this.player.seekTo(amount);\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var Player = this.props.activePlayer;\n\n      if (!Player) {\n        return null;\n      }\n\n      return /*#__PURE__*/_react[\"default\"].createElement(Player, _extends({}, this.props, {\n        onMount: this.handlePlayerMount,\n        onReady: this.handleReady,\n        onPlay: this.handlePlay,\n        onPause: this.handlePause,\n        onEnded: this.handleEnded,\n        onLoaded: this.handleLoaded,\n        onError: this.handleError\n      }));\n    }\n  }]);\n\n  return Player;\n}(_react.Component);\n\nexports[\"default\"] = Player;\n\n_defineProperty(Player, \"displayName\", 'Player');\n\n_defineProperty(Player, \"propTypes\", _props.propTypes);\n\n_defineProperty(Player, \"defaultProps\", _props.defaultProps);","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar ICON_SIZE = '64px';\nvar cache = {};\n\nvar Preview = /*#__PURE__*/function (_Component) {\n  _inherits(Preview, _Component);\n\n  var _super = _createSuper(Preview);\n\n  function Preview() {\n    var _this;\n\n    _classCallCheck(this, Preview);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _super.call.apply(_super, [this].concat(args));\n\n    _defineProperty(_assertThisInitialized(_this), \"mounted\", false);\n\n    _defineProperty(_assertThisInitialized(_this), \"state\", {\n      image: null\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"handleKeyPress\", function (e) {\n      if (e.key === 'Enter' || e.key === ' ') {\n        _this.props.onClick();\n      }\n    });\n\n    return _this;\n  }\n\n  _createClass(Preview, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this.mounted = true;\n      this.fetchImage(this.props);\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate(prevProps) {\n      var _this$props = this.props,\n          url = _this$props.url,\n          light = _this$props.light;\n\n      if (prevProps.url !== url || prevProps.light !== light) {\n        this.fetchImage(this.props);\n      }\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      this.mounted = false;\n    }\n  }, {\n    key: \"fetchImage\",\n    value: function fetchImage(_ref) {\n      var _this2 = this;\n\n      var url = _ref.url,\n          light = _ref.light,\n          oEmbedUrl = _ref.oEmbedUrl;\n\n      if ( /*#__PURE__*/_react[\"default\"].isValidElement(light)) {\n        return;\n      }\n\n      if (typeof light === 'string') {\n        this.setState({\n          image: light\n        });\n        return;\n      }\n\n      if (cache[url]) {\n        this.setState({\n          image: cache[url]\n        });\n        return;\n      }\n\n      this.setState({\n        image: null\n      });\n      return window.fetch(oEmbedUrl.replace('{url}', url)).then(function (response) {\n        return response.json();\n      }).then(function (data) {\n        if (data.thumbnail_url && _this2.mounted) {\n          var image = data.thumbnail_url.replace('height=100', 'height=480');\n\n          _this2.setState({\n            image: image\n          });\n\n          cache[url] = image;\n        }\n      });\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this$props2 = this.props,\n          light = _this$props2.light,\n          onClick = _this$props2.onClick,\n          playIcon = _this$props2.playIcon,\n          previewTabIndex = _this$props2.previewTabIndex;\n      var image = this.state.image;\n\n      var isElement = /*#__PURE__*/_react[\"default\"].isValidElement(light);\n\n      var flexCenter = {\n        display: 'flex',\n        alignItems: 'center',\n        justifyContent: 'center'\n      };\n      var styles = {\n        preview: _objectSpread({\n          width: '100%',\n          height: '100%',\n          backgroundImage: image && !isElement ? \"url(\".concat(image, \")\") : undefined,\n          backgroundSize: 'cover',\n          backgroundPosition: 'center',\n          cursor: 'pointer'\n        }, flexCenter),\n        shadow: _objectSpread({\n          background: 'radial-gradient(rgb(0, 0, 0, 0.3), rgba(0, 0, 0, 0) 60%)',\n          borderRadius: ICON_SIZE,\n          width: ICON_SIZE,\n          height: ICON_SIZE,\n          position: isElement ? 'absolute' : undefined\n        }, flexCenter),\n        playIcon: {\n          borderStyle: 'solid',\n          borderWidth: '16px 0 16px 26px',\n          borderColor: 'transparent transparent transparent white',\n          marginLeft: '7px'\n        }\n      };\n\n      var defaultPlayIcon = /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n        style: styles.shadow,\n        className: \"react-player__shadow\"\n      }, /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n        style: styles.playIcon,\n        className: \"react-player__play-icon\"\n      }));\n\n      return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n        style: styles.preview,\n        className: \"react-player__preview\",\n        onClick: onClick,\n        tabIndex: previewTabIndex,\n        onKeyPress: this.handleKeyPress\n      }, isElement ? light : null, playIcon || defaultPlayIcon);\n    }\n  }]);\n\n  return Preview;\n}(_react.Component);\n\nexports[\"default\"] = Preview;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.createReactPlayer = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _deepmerge = _interopRequireDefault(require(\"deepmerge\"));\n\nvar _memoizeOne = _interopRequireDefault(require(\"memoize-one\"));\n\nvar _reactFastCompare = _interopRequireDefault(require(\"react-fast-compare\"));\n\nvar _props = require(\"./props\");\n\nvar _utils = require(\"./utils\");\n\nvar _Player3 = _interopRequireDefault(require(\"./Player\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nvar Preview = /*#__PURE__*/(0, _react.lazy)(function () {\n  return Promise.resolve().then(function () {\n    return _interopRequireWildcard(require('./Preview'));\n  });\n});\nvar IS_BROWSER = typeof window !== 'undefined' && window.document;\nvar IS_GLOBAL = typeof global !== 'undefined' && global.window && global.window.document;\nvar SUPPORTED_PROPS = Object.keys(_props.propTypes); // Return null when rendering on the server\n// as Suspense is not supported yet\n\nvar UniversalSuspense = IS_BROWSER || IS_GLOBAL ? _react.Suspense : function () {\n  return null;\n};\nvar customPlayers = [];\n\nvar createReactPlayer = function createReactPlayer(players, fallback) {\n  var _class, _temp;\n\n  return _temp = _class = /*#__PURE__*/function (_Component) {\n    _inherits(ReactPlayer, _Component);\n\n    var _super = _createSuper(ReactPlayer);\n\n    function ReactPlayer() {\n      var _this;\n\n      _classCallCheck(this, ReactPlayer);\n\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n\n      _this = _super.call.apply(_super, [this].concat(args));\n\n      _defineProperty(_assertThisInitialized(_this), \"state\", {\n        showPreview: !!_this.props.light\n      });\n\n      _defineProperty(_assertThisInitialized(_this), \"references\", {\n        wrapper: function wrapper(_wrapper) {\n          _this.wrapper = _wrapper;\n        },\n        player: function player(_player) {\n          _this.player = _player;\n        }\n      });\n\n      _defineProperty(_assertThisInitialized(_this), \"handleClickPreview\", function (e) {\n        _this.setState({\n          showPreview: false\n        });\n\n        _this.props.onClickPreview(e);\n      });\n\n      _defineProperty(_assertThisInitialized(_this), \"showPreview\", function () {\n        _this.setState({\n          showPreview: true\n        });\n      });\n\n      _defineProperty(_assertThisInitialized(_this), \"getDuration\", function () {\n        if (!_this.player) return null;\n        return _this.player.getDuration();\n      });\n\n      _defineProperty(_assertThisInitialized(_this), \"getCurrentTime\", function () {\n        if (!_this.player) return null;\n        return _this.player.getCurrentTime();\n      });\n\n      _defineProperty(_assertThisInitialized(_this), \"getSecondsLoaded\", function () {\n        if (!_this.player) return null;\n        return _this.player.getSecondsLoaded();\n      });\n\n      _defineProperty(_assertThisInitialized(_this), \"getInternalPlayer\", function () {\n        var key = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'player';\n        if (!_this.player) return null;\n        return _this.player.getInternalPlayer(key);\n      });\n\n      _defineProperty(_assertThisInitialized(_this), \"seekTo\", function (fraction, type) {\n        if (!_this.player) return null;\n\n        _this.player.seekTo(fraction, type);\n      });\n\n      _defineProperty(_assertThisInitialized(_this), \"handleReady\", function () {\n        _this.props.onReady(_assertThisInitialized(_this));\n      });\n\n      _defineProperty(_assertThisInitialized(_this), \"getActivePlayer\", (0, _memoizeOne[\"default\"])(function (url) {\n        for (var _i = 0, _arr = [].concat(customPlayers, _toConsumableArray(players)); _i < _arr.length; _i++) {\n          var player = _arr[_i];\n\n          if (player.canPlay(url)) {\n            return player;\n          }\n        }\n\n        if (fallback) {\n          return fallback;\n        }\n\n        return null;\n      }));\n\n      _defineProperty(_assertThisInitialized(_this), \"getConfig\", (0, _memoizeOne[\"default\"])(function (url, key) {\n        var config = _this.props.config;\n        return _deepmerge[\"default\"].all([_props.defaultProps.config, _props.defaultProps.config[key] || {}, config, config[key] || {}]);\n      }));\n\n      _defineProperty(_assertThisInitialized(_this), \"getAttributes\", (0, _memoizeOne[\"default\"])(function (url) {\n        return (0, _utils.omit)(_this.props, SUPPORTED_PROPS);\n      }));\n\n      _defineProperty(_assertThisInitialized(_this), \"renderActivePlayer\", function (url) {\n        if (!url) return null;\n\n        var player = _this.getActivePlayer(url);\n\n        if (!player) return null;\n\n        var config = _this.getConfig(url, player.key);\n\n        return /*#__PURE__*/_react[\"default\"].createElement(_Player3[\"default\"], _extends({}, _this.props, {\n          key: player.key,\n          ref: _this.references.player,\n          config: config,\n          activePlayer: player.lazyPlayer || player,\n          onReady: _this.handleReady\n        }));\n      });\n\n      return _this;\n    }\n\n    _createClass(ReactPlayer, [{\n      key: \"shouldComponentUpdate\",\n      value: function shouldComponentUpdate(nextProps, nextState) {\n        return !(0, _reactFastCompare[\"default\"])(this.props, nextProps) || !(0, _reactFastCompare[\"default\"])(this.state, nextState);\n      }\n    }, {\n      key: \"componentDidUpdate\",\n      value: function componentDidUpdate(prevProps) {\n        var light = this.props.light;\n\n        if (!prevProps.light && light) {\n          this.setState({\n            showPreview: true\n          });\n        }\n\n        if (prevProps.light && !light) {\n          this.setState({\n            showPreview: false\n          });\n        }\n      }\n    }, {\n      key: \"renderPreview\",\n      value: function renderPreview(url) {\n        if (!url) return null;\n        var _this$props = this.props,\n            light = _this$props.light,\n            playIcon = _this$props.playIcon,\n            previewTabIndex = _this$props.previewTabIndex,\n            oEmbedUrl = _this$props.oEmbedUrl;\n        return /*#__PURE__*/_react[\"default\"].createElement(Preview, {\n          url: url,\n          light: light,\n          playIcon: playIcon,\n          previewTabIndex: previewTabIndex,\n          oEmbedUrl: oEmbedUrl,\n          onClick: this.handleClickPreview\n        });\n      }\n    }, {\n      key: \"render\",\n      value: function render() {\n        var _this$props2 = this.props,\n            url = _this$props2.url,\n            style = _this$props2.style,\n            width = _this$props2.width,\n            height = _this$props2.height,\n            fallback = _this$props2.fallback,\n            Wrapper = _this$props2.wrapper;\n        var showPreview = this.state.showPreview;\n        var attributes = this.getAttributes(url);\n        var wrapperRef = typeof Wrapper === 'string' ? this.references.wrapper : undefined;\n        return /*#__PURE__*/_react[\"default\"].createElement(Wrapper, _extends({\n          ref: wrapperRef,\n          style: _objectSpread(_objectSpread({}, style), {}, {\n            width: width,\n            height: height\n          })\n        }, attributes), /*#__PURE__*/_react[\"default\"].createElement(UniversalSuspense, {\n          fallback: fallback\n        }, showPreview ? this.renderPreview(url) : this.renderActivePlayer(url)));\n      }\n    }]);\n\n    return ReactPlayer;\n  }(_react.Component), _defineProperty(_class, \"displayName\", 'ReactPlayer'), _defineProperty(_class, \"propTypes\", _props.propTypes), _defineProperty(_class, \"defaultProps\", _props.defaultProps), _defineProperty(_class, \"addCustomPlayer\", function (player) {\n    customPlayers.push(player);\n  }), _defineProperty(_class, \"removeCustomPlayers\", function () {\n    customPlayers.length = 0;\n  }), _defineProperty(_class, \"canPlay\", function (url) {\n    for (var _i2 = 0, _arr2 = [].concat(customPlayers, _toConsumableArray(players)); _i2 < _arr2.length; _i2++) {\n      var _Player = _arr2[_i2];\n\n      if (_Player.canPlay(url)) {\n        return true;\n      }\n    }\n\n    return false;\n  }), _defineProperty(_class, \"canEnablePIP\", function (url) {\n    for (var _i3 = 0, _arr3 = [].concat(customPlayers, _toConsumableArray(players)); _i3 < _arr3.length; _i3++) {\n      var _Player2 = _arr3[_i3];\n\n      if (_Player2.canEnablePIP && _Player2.canEnablePIP(url)) {\n        return true;\n      }\n    }\n\n    return false;\n  }), _temp;\n};\n\nexports.createReactPlayer = createReactPlayer;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n\nvar _players = _interopRequireDefault(require(\"./players\"));\n\nvar _ReactPlayer = require(\"./ReactPlayer\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n// Fall back to FilePlayer if nothing else can play the URL\nvar fallback = _players[\"default\"][_players[\"default\"].length - 1];\n\nvar _default = (0, _ReactPlayer.createReactPlayer)(_players[\"default\"], fallback);\n\nexports[\"default\"] = _default;","/*! @vimeo/player v2.8.2 | (c) 2019 Vimeo | MIT License | https://github.com/vimeo/player.js */\nfunction _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\n\nfunction _defineProperties(target, props) {\n  for (var i = 0; i < props.length; i++) {\n    var descriptor = props[i];\n    descriptor.enumerable = descriptor.enumerable || false;\n    descriptor.configurable = true;\n    if (\"value\" in descriptor) descriptor.writable = true;\n    Object.defineProperty(target, descriptor.key, descriptor);\n  }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n  if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n  if (staticProps) _defineProperties(Constructor, staticProps);\n  return Constructor;\n}\n\n/**\n * @module lib/functions\n */\n\n/**\n * Check to see this is a node environment.\n * @type {Boolean}\n */\n\n/* global global */\nvar isNode = typeof global !== 'undefined' && {}.toString.call(global) === '[object global]';\n/**\n * Get the name of the method for a given getter or setter.\n *\n * @param {string} prop The name of the property.\n * @param {string} type Either “get” or “set”.\n * @return {string}\n */\n\nfunction getMethodName(prop, type) {\n  if (prop.indexOf(type.toLowerCase()) === 0) {\n    return prop;\n  }\n\n  return \"\".concat(type.toLowerCase()).concat(prop.substr(0, 1).toUpperCase()).concat(prop.substr(1));\n}\n/**\n * Check to see if the object is a DOM Element.\n *\n * @param {*} element The object to check.\n * @return {boolean}\n */\n\nfunction isDomElement(element) {\n  return Boolean(element && element.nodeType === 1 && 'nodeName' in element && element.ownerDocument && element.ownerDocument.defaultView);\n}\n/**\n * Check to see whether the value is a number.\n *\n * @see http://dl.dropboxusercontent.com/u/35146/js/tests/isNumber.html\n * @param {*} value The value to check.\n * @param {boolean} integer Check if the value is an integer.\n * @return {boolean}\n */\n\nfunction isInteger(value) {\n  // eslint-disable-next-line eqeqeq\n  return !isNaN(parseFloat(value)) && isFinite(value) && Math.floor(value) == value;\n}\n/**\n * Check to see if the URL is a Vimeo url.\n *\n * @param {string} url The url string.\n * @return {boolean}\n */\n\nfunction isVimeoUrl(url) {\n  return /^(https?:)?\\/\\/((player|www)\\.)?vimeo\\.com(?=$|\\/)/.test(url);\n}\n/**\n * Get the Vimeo URL from an element.\n * The element must have either a data-vimeo-id or data-vimeo-url attribute.\n *\n * @param {object} oEmbedParameters The oEmbed parameters.\n * @return {string}\n */\n\nfunction getVimeoUrl() {\n  var oEmbedParameters = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  var id = oEmbedParameters.id;\n  var url = oEmbedParameters.url;\n  var idOrUrl = id || url;\n\n  if (!idOrUrl) {\n    throw new Error('An id or url must be passed, either in an options object or as a data-vimeo-id or data-vimeo-url attribute.');\n  }\n\n  if (isInteger(idOrUrl)) {\n    return \"https://vimeo.com/\".concat(idOrUrl);\n  }\n\n  if (isVimeoUrl(idOrUrl)) {\n    return idOrUrl.replace('http:', 'https:');\n  }\n\n  if (id) {\n    throw new TypeError(\"\\u201C\".concat(id, \"\\u201D is not a valid video id.\"));\n  }\n\n  throw new TypeError(\"\\u201C\".concat(idOrUrl, \"\\u201D is not a vimeo.com url.\"));\n}\n\nvar arrayIndexOfSupport = typeof Array.prototype.indexOf !== 'undefined';\nvar postMessageSupport = typeof window !== 'undefined' && typeof window.postMessage !== 'undefined';\n\nif (!isNode && (!arrayIndexOfSupport || !postMessageSupport)) {\n  throw new Error('Sorry, the Vimeo Player API is not available in this browser.');\n}\n\nvar commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\n/*!\n * weakmap-polyfill v2.0.0 - ECMAScript6 WeakMap polyfill\n * https://github.com/polygonplanet/weakmap-polyfill\n * Copyright (c) 2015-2016 polygon planet <polygon.planet.aqua@gmail.com>\n * @license MIT\n */\n(function (self) {\n\n  if (self.WeakMap) {\n    return;\n  }\n\n  var hasOwnProperty = Object.prototype.hasOwnProperty;\n\n  var defineProperty = function (object, name, value) {\n    if (Object.defineProperty) {\n      Object.defineProperty(object, name, {\n        configurable: true,\n        writable: true,\n        value: value\n      });\n    } else {\n      object[name] = value;\n    }\n  };\n\n  self.WeakMap = function () {\n    // ECMA-262 23.3 WeakMap Objects\n    function WeakMap() {\n      if (this === void 0) {\n        throw new TypeError(\"Constructor WeakMap requires 'new'\");\n      }\n\n      defineProperty(this, '_id', genId('_WeakMap')); // ECMA-262 23.3.1.1 WeakMap([iterable])\n\n      if (arguments.length > 0) {\n        // Currently, WeakMap `iterable` argument is not supported\n        throw new TypeError('WeakMap iterable is not supported');\n      }\n    } // ECMA-262 23.3.3.2 WeakMap.prototype.delete(key)\n\n\n    defineProperty(WeakMap.prototype, 'delete', function (key) {\n      checkInstance(this, 'delete');\n\n      if (!isObject(key)) {\n        return false;\n      }\n\n      var entry = key[this._id];\n\n      if (entry && entry[0] === key) {\n        delete key[this._id];\n        return true;\n      }\n\n      return false;\n    }); // ECMA-262 23.3.3.3 WeakMap.prototype.get(key)\n\n    defineProperty(WeakMap.prototype, 'get', function (key) {\n      checkInstance(this, 'get');\n\n      if (!isObject(key)) {\n        return void 0;\n      }\n\n      var entry = key[this._id];\n\n      if (entry && entry[0] === key) {\n        return entry[1];\n      }\n\n      return void 0;\n    }); // ECMA-262 23.3.3.4 WeakMap.prototype.has(key)\n\n    defineProperty(WeakMap.prototype, 'has', function (key) {\n      checkInstance(this, 'has');\n\n      if (!isObject(key)) {\n        return false;\n      }\n\n      var entry = key[this._id];\n\n      if (entry && entry[0] === key) {\n        return true;\n      }\n\n      return false;\n    }); // ECMA-262 23.3.3.5 WeakMap.prototype.set(key, value)\n\n    defineProperty(WeakMap.prototype, 'set', function (key, value) {\n      checkInstance(this, 'set');\n\n      if (!isObject(key)) {\n        throw new TypeError('Invalid value used as weak map key');\n      }\n\n      var entry = key[this._id];\n\n      if (entry && entry[0] === key) {\n        entry[1] = value;\n        return this;\n      }\n\n      defineProperty(key, this._id, [key, value]);\n      return this;\n    });\n\n    function checkInstance(x, methodName) {\n      if (!isObject(x) || !hasOwnProperty.call(x, '_id')) {\n        throw new TypeError(methodName + ' method called on incompatible receiver ' + typeof x);\n      }\n    }\n\n    function genId(prefix) {\n      return prefix + '_' + rand() + '.' + rand();\n    }\n\n    function rand() {\n      return Math.random().toString().substring(2);\n    }\n\n    defineProperty(WeakMap, '_polyfill', true);\n    return WeakMap;\n  }();\n\n  function isObject(x) {\n    return Object(x) === x;\n  }\n})(typeof self !== 'undefined' ? self : typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : commonjsGlobal);\n\nvar npo_src = createCommonjsModule(function (module) {\n/*! Native Promise Only\n    v0.8.1 (c) Kyle Simpson\n    MIT License: http://getify.mit-license.org\n*/\n(function UMD(name, context, definition) {\n  // special form of UMD for polyfilling across evironments\n  context[name] = context[name] || definition();\n\n  if (module.exports) {\n    module.exports = context[name];\n  }\n})(\"Promise\", typeof commonjsGlobal != \"undefined\" ? commonjsGlobal : commonjsGlobal, function DEF() {\n\n  var builtInProp,\n      cycle,\n      scheduling_queue,\n      ToString = Object.prototype.toString,\n      timer = typeof setImmediate != \"undefined\" ? function timer(fn) {\n    return setImmediate(fn);\n  } : setTimeout; // dammit, IE8.\n\n  try {\n    Object.defineProperty({}, \"x\", {});\n\n    builtInProp = function builtInProp(obj, name, val, config) {\n      return Object.defineProperty(obj, name, {\n        value: val,\n        writable: true,\n        configurable: config !== false\n      });\n    };\n  } catch (err) {\n    builtInProp = function builtInProp(obj, name, val) {\n      obj[name] = val;\n      return obj;\n    };\n  } // Note: using a queue instead of array for efficiency\n\n\n  scheduling_queue = function Queue() {\n    var first, last, item;\n\n    function Item(fn, self) {\n      this.fn = fn;\n      this.self = self;\n      this.next = void 0;\n    }\n\n    return {\n      add: function add(fn, self) {\n        item = new Item(fn, self);\n\n        if (last) {\n          last.next = item;\n        } else {\n          first = item;\n        }\n\n        last = item;\n        item = void 0;\n      },\n      drain: function drain() {\n        var f = first;\n        first = last = cycle = void 0;\n\n        while (f) {\n          f.fn.call(f.self);\n          f = f.next;\n        }\n      }\n    };\n  }();\n\n  function schedule(fn, self) {\n    scheduling_queue.add(fn, self);\n\n    if (!cycle) {\n      cycle = timer(scheduling_queue.drain);\n    }\n  } // promise duck typing\n\n\n  function isThenable(o) {\n    var _then,\n        o_type = typeof o;\n\n    if (o != null && (o_type == \"object\" || o_type == \"function\")) {\n      _then = o.then;\n    }\n\n    return typeof _then == \"function\" ? _then : false;\n  }\n\n  function notify() {\n    for (var i = 0; i < this.chain.length; i++) {\n      notifyIsolated(this, this.state === 1 ? this.chain[i].success : this.chain[i].failure, this.chain[i]);\n    }\n\n    this.chain.length = 0;\n  } // NOTE: This is a separate function to isolate\n  // the `try..catch` so that other code can be\n  // optimized better\n\n\n  function notifyIsolated(self, cb, chain) {\n    var ret, _then;\n\n    try {\n      if (cb === false) {\n        chain.reject(self.msg);\n      } else {\n        if (cb === true) {\n          ret = self.msg;\n        } else {\n          ret = cb.call(void 0, self.msg);\n        }\n\n        if (ret === chain.promise) {\n          chain.reject(TypeError(\"Promise-chain cycle\"));\n        } else if (_then = isThenable(ret)) {\n          _then.call(ret, chain.resolve, chain.reject);\n        } else {\n          chain.resolve(ret);\n        }\n      }\n    } catch (err) {\n      chain.reject(err);\n    }\n  }\n\n  function resolve(msg) {\n    var _then,\n        self = this; // already triggered?\n\n\n    if (self.triggered) {\n      return;\n    }\n\n    self.triggered = true; // unwrap\n\n    if (self.def) {\n      self = self.def;\n    }\n\n    try {\n      if (_then = isThenable(msg)) {\n        schedule(function () {\n          var def_wrapper = new MakeDefWrapper(self);\n\n          try {\n            _then.call(msg, function $resolve$() {\n              resolve.apply(def_wrapper, arguments);\n            }, function $reject$() {\n              reject.apply(def_wrapper, arguments);\n            });\n          } catch (err) {\n            reject.call(def_wrapper, err);\n          }\n        });\n      } else {\n        self.msg = msg;\n        self.state = 1;\n\n        if (self.chain.length > 0) {\n          schedule(notify, self);\n        }\n      }\n    } catch (err) {\n      reject.call(new MakeDefWrapper(self), err);\n    }\n  }\n\n  function reject(msg) {\n    var self = this; // already triggered?\n\n    if (self.triggered) {\n      return;\n    }\n\n    self.triggered = true; // unwrap\n\n    if (self.def) {\n      self = self.def;\n    }\n\n    self.msg = msg;\n    self.state = 2;\n\n    if (self.chain.length > 0) {\n      schedule(notify, self);\n    }\n  }\n\n  function iteratePromises(Constructor, arr, resolver, rejecter) {\n    for (var idx = 0; idx < arr.length; idx++) {\n      (function IIFE(idx) {\n        Constructor.resolve(arr[idx]).then(function $resolver$(msg) {\n          resolver(idx, msg);\n        }, rejecter);\n      })(idx);\n    }\n  }\n\n  function MakeDefWrapper(self) {\n    this.def = self;\n    this.triggered = false;\n  }\n\n  function MakeDef(self) {\n    this.promise = self;\n    this.state = 0;\n    this.triggered = false;\n    this.chain = [];\n    this.msg = void 0;\n  }\n\n  function Promise(executor) {\n    if (typeof executor != \"function\") {\n      throw TypeError(\"Not a function\");\n    }\n\n    if (this.__NPO__ !== 0) {\n      throw TypeError(\"Not a promise\");\n    } // instance shadowing the inherited \"brand\"\n    // to signal an already \"initialized\" promise\n\n\n    this.__NPO__ = 1;\n    var def = new MakeDef(this);\n\n    this[\"then\"] = function then(success, failure) {\n      var o = {\n        success: typeof success == \"function\" ? success : true,\n        failure: typeof failure == \"function\" ? failure : false\n      }; // Note: `then(..)` itself can be borrowed to be used against\n      // a different promise constructor for making the chained promise,\n      // by substituting a different `this` binding.\n\n      o.promise = new this.constructor(function extractChain(resolve, reject) {\n        if (typeof resolve != \"function\" || typeof reject != \"function\") {\n          throw TypeError(\"Not a function\");\n        }\n\n        o.resolve = resolve;\n        o.reject = reject;\n      });\n      def.chain.push(o);\n\n      if (def.state !== 0) {\n        schedule(notify, def);\n      }\n\n      return o.promise;\n    };\n\n    this[\"catch\"] = function $catch$(failure) {\n      return this.then(void 0, failure);\n    };\n\n    try {\n      executor.call(void 0, function publicResolve(msg) {\n        resolve.call(def, msg);\n      }, function publicReject(msg) {\n        reject.call(def, msg);\n      });\n    } catch (err) {\n      reject.call(def, err);\n    }\n  }\n\n  var PromisePrototype = builtInProp({}, \"constructor\", Promise,\n  /*configurable=*/\n  false); // Note: Android 4 cannot use `Object.defineProperty(..)` here\n\n  Promise.prototype = PromisePrototype; // built-in \"brand\" to signal an \"uninitialized\" promise\n\n  builtInProp(PromisePrototype, \"__NPO__\", 0,\n  /*configurable=*/\n  false);\n  builtInProp(Promise, \"resolve\", function Promise$resolve(msg) {\n    var Constructor = this; // spec mandated checks\n    // note: best \"isPromise\" check that's practical for now\n\n    if (msg && typeof msg == \"object\" && msg.__NPO__ === 1) {\n      return msg;\n    }\n\n    return new Constructor(function executor(resolve, reject) {\n      if (typeof resolve != \"function\" || typeof reject != \"function\") {\n        throw TypeError(\"Not a function\");\n      }\n\n      resolve(msg);\n    });\n  });\n  builtInProp(Promise, \"reject\", function Promise$reject(msg) {\n    return new this(function executor(resolve, reject) {\n      if (typeof resolve != \"function\" || typeof reject != \"function\") {\n        throw TypeError(\"Not a function\");\n      }\n\n      reject(msg);\n    });\n  });\n  builtInProp(Promise, \"all\", function Promise$all(arr) {\n    var Constructor = this; // spec mandated checks\n\n    if (ToString.call(arr) != \"[object Array]\") {\n      return Constructor.reject(TypeError(\"Not an array\"));\n    }\n\n    if (arr.length === 0) {\n      return Constructor.resolve([]);\n    }\n\n    return new Constructor(function executor(resolve, reject) {\n      if (typeof resolve != \"function\" || typeof reject != \"function\") {\n        throw TypeError(\"Not a function\");\n      }\n\n      var len = arr.length,\n          msgs = Array(len),\n          count = 0;\n      iteratePromises(Constructor, arr, function resolver(idx, msg) {\n        msgs[idx] = msg;\n\n        if (++count === len) {\n          resolve(msgs);\n        }\n      }, reject);\n    });\n  });\n  builtInProp(Promise, \"race\", function Promise$race(arr) {\n    var Constructor = this; // spec mandated checks\n\n    if (ToString.call(arr) != \"[object Array]\") {\n      return Constructor.reject(TypeError(\"Not an array\"));\n    }\n\n    return new Constructor(function executor(resolve, reject) {\n      if (typeof resolve != \"function\" || typeof reject != \"function\") {\n        throw TypeError(\"Not a function\");\n      }\n\n      iteratePromises(Constructor, arr, function resolver(idx, msg) {\n        resolve(msg);\n      }, reject);\n    });\n  });\n  return Promise;\n});\n});\n\n/**\n * @module lib/callbacks\n */\nvar callbackMap = new WeakMap();\n/**\n * Store a callback for a method or event for a player.\n *\n * @param {Player} player The player object.\n * @param {string} name The method or event name.\n * @param {(function(this:Player, *): void|{resolve: function, reject: function})} callback\n *        The callback to call or an object with resolve and reject functions for a promise.\n * @return {void}\n */\n\nfunction storeCallback(player, name, callback) {\n  var playerCallbacks = callbackMap.get(player.element) || {};\n\n  if (!(name in playerCallbacks)) {\n    playerCallbacks[name] = [];\n  }\n\n  playerCallbacks[name].push(callback);\n  callbackMap.set(player.element, playerCallbacks);\n}\n/**\n * Get the callbacks for a player and event or method.\n *\n * @param {Player} player The player object.\n * @param {string} name The method or event name\n * @return {function[]}\n */\n\nfunction getCallbacks(player, name) {\n  var playerCallbacks = callbackMap.get(player.element) || {};\n  return playerCallbacks[name] || [];\n}\n/**\n * Remove a stored callback for a method or event for a player.\n *\n * @param {Player} player The player object.\n * @param {string} name The method or event name\n * @param {function} [callback] The specific callback to remove.\n * @return {boolean} Was this the last callback?\n */\n\nfunction removeCallback(player, name, callback) {\n  var playerCallbacks = callbackMap.get(player.element) || {};\n\n  if (!playerCallbacks[name]) {\n    return true;\n  } // If no callback is passed, remove all callbacks for the event\n\n\n  if (!callback) {\n    playerCallbacks[name] = [];\n    callbackMap.set(player.element, playerCallbacks);\n    return true;\n  }\n\n  var index = playerCallbacks[name].indexOf(callback);\n\n  if (index !== -1) {\n    playerCallbacks[name].splice(index, 1);\n  }\n\n  callbackMap.set(player.element, playerCallbacks);\n  return playerCallbacks[name] && playerCallbacks[name].length === 0;\n}\n/**\n * Return the first stored callback for a player and event or method.\n *\n * @param {Player} player The player object.\n * @param {string} name The method or event name.\n * @return {function} The callback, or false if there were none\n */\n\nfunction shiftCallbacks(player, name) {\n  var playerCallbacks = getCallbacks(player, name);\n\n  if (playerCallbacks.length < 1) {\n    return false;\n  }\n\n  var callback = playerCallbacks.shift();\n  removeCallback(player, name, callback);\n  return callback;\n}\n/**\n * Move callbacks associated with an element to another element.\n *\n * @param {HTMLElement} oldElement The old element.\n * @param {HTMLElement} newElement The new element.\n * @return {void}\n */\n\nfunction swapCallbacks(oldElement, newElement) {\n  var playerCallbacks = callbackMap.get(oldElement);\n  callbackMap.set(newElement, playerCallbacks);\n  callbackMap.delete(oldElement);\n}\n\n/**\n * @module lib/embed\n */\nvar oEmbedParameters = ['autopause', 'autoplay', 'background', 'byline', 'color', 'dnt', 'height', 'id', 'loop', 'maxheight', 'maxwidth', 'muted', 'playsinline', 'portrait', 'responsive', 'speed', 'title', 'transparent', 'url', 'width'];\n/**\n * Get the 'data-vimeo'-prefixed attributes from an element as an object.\n *\n * @param {HTMLElement} element The element.\n * @param {Object} [defaults={}] The default values to use.\n * @return {Object<string, string>}\n */\n\nfunction getOEmbedParameters(element) {\n  var defaults = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  return oEmbedParameters.reduce(function (params, param) {\n    var value = element.getAttribute(\"data-vimeo-\".concat(param));\n\n    if (value || value === '') {\n      params[param] = value === '' ? 1 : value;\n    }\n\n    return params;\n  }, defaults);\n}\n/**\n * Create an embed from oEmbed data inside an element.\n *\n * @param {object} data The oEmbed data.\n * @param {HTMLElement} element The element to put the iframe in.\n * @return {HTMLIFrameElement} The iframe embed.\n */\n\nfunction createEmbed(_ref, element) {\n  var html = _ref.html;\n\n  if (!element) {\n    throw new TypeError('An element must be provided');\n  }\n\n  if (element.getAttribute('data-vimeo-initialized') !== null) {\n    return element.querySelector('iframe');\n  }\n\n  var div = document.createElement('div');\n  div.innerHTML = html;\n  element.appendChild(div.firstChild);\n  element.setAttribute('data-vimeo-initialized', 'true');\n  return element.querySelector('iframe');\n}\n/**\n * Make an oEmbed call for the specified URL.\n *\n * @param {string} videoUrl The vimeo.com url for the video.\n * @param {Object} [params] Parameters to pass to oEmbed.\n * @param {HTMLElement} element The element.\n * @return {Promise}\n */\n\nfunction getOEmbedData(videoUrl) {\n  var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  var element = arguments.length > 2 ? arguments[2] : undefined;\n  return new Promise(function (resolve, reject) {\n    if (!isVimeoUrl(videoUrl)) {\n      throw new TypeError(\"\\u201C\".concat(videoUrl, \"\\u201D is not a vimeo.com url.\"));\n    }\n\n    var url = \"https://vimeo.com/api/oembed.json?url=\".concat(encodeURIComponent(videoUrl), \"&domain=\").concat(window.location.hostname);\n\n    for (var param in params) {\n      if (params.hasOwnProperty(param)) {\n        url += \"&\".concat(param, \"=\").concat(encodeURIComponent(params[param]));\n      }\n    }\n\n    var xhr = 'XDomainRequest' in window ? new XDomainRequest() : new XMLHttpRequest();\n    xhr.open('GET', url, true);\n\n    xhr.onload = function () {\n      if (xhr.status === 404) {\n        reject(new Error(\"\\u201C\".concat(videoUrl, \"\\u201D was not found.\")));\n        return;\n      }\n\n      if (xhr.status === 403) {\n        reject(new Error(\"\\u201C\".concat(videoUrl, \"\\u201D is not embeddable.\")));\n        return;\n      }\n\n      try {\n        var json = JSON.parse(xhr.responseText); // Check api response for 403 on oembed\n\n        if (json.domain_status_code === 403) {\n          // We still want to create the embed to give users visual feedback\n          createEmbed(json, element);\n          reject(new Error(\"\\u201C\".concat(videoUrl, \"\\u201D is not embeddable.\")));\n          return;\n        }\n\n        resolve(json);\n      } catch (error) {\n        reject(error);\n      }\n    };\n\n    xhr.onerror = function () {\n      var status = xhr.status ? \" (\".concat(xhr.status, \")\") : '';\n      reject(new Error(\"There was an error fetching the embed code from Vimeo\".concat(status, \".\")));\n    };\n\n    xhr.send();\n  });\n}\n/**\n * Initialize all embeds within a specific element\n *\n * @param {HTMLElement} [parent=document] The parent element.\n * @return {void}\n */\n\nfunction initializeEmbeds() {\n  var parent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document;\n  var elements = [].slice.call(parent.querySelectorAll('[data-vimeo-id], [data-vimeo-url]'));\n\n  var handleError = function handleError(error) {\n    if ('console' in window && console.error) {\n      console.error(\"There was an error creating an embed: \".concat(error));\n    }\n  };\n\n  elements.forEach(function (element) {\n    try {\n      // Skip any that have data-vimeo-defer\n      if (element.getAttribute('data-vimeo-defer') !== null) {\n        return;\n      }\n\n      var params = getOEmbedParameters(element);\n      var url = getVimeoUrl(params);\n      getOEmbedData(url, params, element).then(function (data) {\n        return createEmbed(data, element);\n      }).catch(handleError);\n    } catch (error) {\n      handleError(error);\n    }\n  });\n}\n/**\n * Resize embeds when messaged by the player.\n *\n * @param {HTMLElement} [parent=document] The parent element.\n * @return {void}\n */\n\nfunction resizeEmbeds() {\n  var parent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document;\n\n  // Prevent execution if users include the player.js script multiple times.\n  if (window.VimeoPlayerResizeEmbeds_) {\n    return;\n  }\n\n  window.VimeoPlayerResizeEmbeds_ = true;\n\n  var onMessage = function onMessage(event) {\n    if (!isVimeoUrl(event.origin)) {\n      return;\n    } // 'spacechange' is fired only on embeds with cards\n\n\n    if (!event.data || event.data.event !== 'spacechange') {\n      return;\n    }\n\n    var iframes = parent.querySelectorAll('iframe');\n\n    for (var i = 0; i < iframes.length; i++) {\n      if (iframes[i].contentWindow !== event.source) {\n        continue;\n      } // Change padding-bottom of the enclosing div to accommodate\n      // card carousel without distorting aspect ratio\n\n\n      var space = iframes[i].parentElement;\n      space.style.paddingBottom = \"\".concat(event.data.data[0].bottom, \"px\");\n      break;\n    }\n  };\n\n  if (window.addEventListener) {\n    window.addEventListener('message', onMessage, false);\n  } else if (window.attachEvent) {\n    window.attachEvent('onmessage', onMessage);\n  }\n}\n\n/**\n * @module lib/postmessage\n */\n/**\n * Parse a message received from postMessage.\n *\n * @param {*} data The data received from postMessage.\n * @return {object}\n */\n\nfunction parseMessageData(data) {\n  if (typeof data === 'string') {\n    try {\n      data = JSON.parse(data);\n    } catch (error) {\n      // If the message cannot be parsed, throw the error as a warning\n      console.warn(error);\n      return {};\n    }\n  }\n\n  return data;\n}\n/**\n * Post a message to the specified target.\n *\n * @param {Player} player The player object to use.\n * @param {string} method The API method to call.\n * @param {object} params The parameters to send to the player.\n * @return {void}\n */\n\nfunction postMessage(player, method, params) {\n  if (!player.element.contentWindow || !player.element.contentWindow.postMessage) {\n    return;\n  }\n\n  var message = {\n    method: method\n  };\n\n  if (params !== undefined) {\n    message.value = params;\n  } // IE 8 and 9 do not support passing messages, so stringify them\n\n\n  var ieVersion = parseFloat(navigator.userAgent.toLowerCase().replace(/^.*msie (\\d+).*$/, '$1'));\n\n  if (ieVersion >= 8 && ieVersion < 10) {\n    message = JSON.stringify(message);\n  }\n\n  player.element.contentWindow.postMessage(message, player.origin);\n}\n/**\n * Parse the data received from a message event.\n *\n * @param {Player} player The player that received the message.\n * @param {(Object|string)} data The message data. Strings will be parsed into JSON.\n * @return {void}\n */\n\nfunction processData(player, data) {\n  data = parseMessageData(data);\n  var callbacks = [];\n  var param;\n\n  if (data.event) {\n    if (data.event === 'error') {\n      var promises = getCallbacks(player, data.data.method);\n      promises.forEach(function (promise) {\n        var error = new Error(data.data.message);\n        error.name = data.data.name;\n        promise.reject(error);\n        removeCallback(player, data.data.method, promise);\n      });\n    }\n\n    callbacks = getCallbacks(player, \"event:\".concat(data.event));\n    param = data.data;\n  } else if (data.method) {\n    var callback = shiftCallbacks(player, data.method);\n\n    if (callback) {\n      callbacks.push(callback);\n      param = data.value;\n    }\n  }\n\n  callbacks.forEach(function (callback) {\n    try {\n      if (typeof callback === 'function') {\n        callback.call(player, param);\n        return;\n      }\n\n      callback.resolve(param);\n    } catch (e) {// empty\n    }\n  });\n}\n\nvar playerMap = new WeakMap();\nvar readyMap = new WeakMap();\n\nvar Player =\n/*#__PURE__*/\nfunction () {\n  /**\n   * Create a Player.\n   *\n   * @param {(HTMLIFrameElement|HTMLElement|string|jQuery)} element A reference to the Vimeo\n   *        player iframe, and id, or a jQuery object.\n   * @param {object} [options] oEmbed parameters to use when creating an embed in the element.\n   * @return {Player}\n   */\n  function Player(element) {\n    var _this = this;\n\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    _classCallCheck(this, Player);\n\n    /* global jQuery */\n    if (window.jQuery && element instanceof jQuery) {\n      if (element.length > 1 && window.console && console.warn) {\n        console.warn('A jQuery object with multiple elements was passed, using the first element.');\n      }\n\n      element = element[0];\n    } // Find an element by ID\n\n\n    if (typeof document !== 'undefined' && typeof element === 'string') {\n      element = document.getElementById(element);\n    } // Not an element!\n\n\n    if (!isDomElement(element)) {\n      throw new TypeError('You must pass either a valid element or a valid id.');\n    }\n\n    var win = element.ownerDocument.defaultView; // Already initialized an embed in this div, so grab the iframe\n\n    if (element.nodeName !== 'IFRAME') {\n      var iframe = element.querySelector('iframe');\n\n      if (iframe) {\n        element = iframe;\n      }\n    } // iframe url is not a Vimeo url\n\n\n    if (element.nodeName === 'IFRAME' && !isVimeoUrl(element.getAttribute('src') || '')) {\n      throw new Error('The player element passed isn’t a Vimeo embed.');\n    } // If there is already a player object in the map, return that\n\n\n    if (playerMap.has(element)) {\n      return playerMap.get(element);\n    }\n\n    this.element = element;\n    this.origin = '*';\n    var readyPromise = new npo_src(function (resolve, reject) {\n      var onMessage = function onMessage(event) {\n        if (!isVimeoUrl(event.origin) || _this.element.contentWindow !== event.source) {\n          return;\n        }\n\n        if (_this.origin === '*') {\n          _this.origin = event.origin;\n        }\n\n        var data = parseMessageData(event.data);\n        var isError = data && data.event === 'error';\n        var isReadyError = isError && data.data && data.data.method === 'ready';\n\n        if (isReadyError) {\n          var error = new Error(data.data.message);\n          error.name = data.data.name;\n          reject(error);\n          return;\n        }\n\n        var isReadyEvent = data && data.event === 'ready';\n        var isPingResponse = data && data.method === 'ping';\n\n        if (isReadyEvent || isPingResponse) {\n          _this.element.setAttribute('data-ready', 'true');\n\n          resolve();\n          return;\n        }\n\n        processData(_this, data);\n      };\n\n      if (win.addEventListener) {\n        win.addEventListener('message', onMessage, false);\n      } else if (win.attachEvent) {\n        win.attachEvent('onmessage', onMessage);\n      }\n\n      if (_this.element.nodeName !== 'IFRAME') {\n        var params = getOEmbedParameters(element, options);\n        var url = getVimeoUrl(params);\n        getOEmbedData(url, params, element).then(function (data) {\n          var iframe = createEmbed(data, element); // Overwrite element with the new iframe,\n          // but store reference to the original element\n\n          _this.element = iframe;\n          _this._originalElement = element;\n          swapCallbacks(element, iframe);\n          playerMap.set(_this.element, _this);\n          return data;\n        }).catch(reject);\n      }\n    }); // Store a copy of this Player in the map\n\n    readyMap.set(this, readyPromise);\n    playerMap.set(this.element, this); // Send a ping to the iframe so the ready promise will be resolved if\n    // the player is already ready.\n\n    if (this.element.nodeName === 'IFRAME') {\n      postMessage(this, 'ping');\n    }\n\n    return this;\n  }\n  /**\n   * Get a promise for a method.\n   *\n   * @param {string} name The API method to call.\n   * @param {Object} [args={}] Arguments to send via postMessage.\n   * @return {Promise}\n   */\n\n\n  _createClass(Player, [{\n    key: \"callMethod\",\n    value: function callMethod(name) {\n      var _this2 = this;\n\n      var args = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      return new npo_src(function (resolve, reject) {\n        // We are storing the resolve/reject handlers to call later, so we\n        // can’t return here.\n        // eslint-disable-next-line promise/always-return\n        return _this2.ready().then(function () {\n          storeCallback(_this2, name, {\n            resolve: resolve,\n            reject: reject\n          });\n          postMessage(_this2, name, args);\n        }).catch(reject);\n      });\n    }\n    /**\n     * Get a promise for the value of a player property.\n     *\n     * @param {string} name The property name\n     * @return {Promise}\n     */\n\n  }, {\n    key: \"get\",\n    value: function get(name) {\n      var _this3 = this;\n\n      return new npo_src(function (resolve, reject) {\n        name = getMethodName(name, 'get'); // We are storing the resolve/reject handlers to call later, so we\n        // can’t return here.\n        // eslint-disable-next-line promise/always-return\n\n        return _this3.ready().then(function () {\n          storeCallback(_this3, name, {\n            resolve: resolve,\n            reject: reject\n          });\n          postMessage(_this3, name);\n        }).catch(reject);\n      });\n    }\n    /**\n     * Get a promise for setting the value of a player property.\n     *\n     * @param {string} name The API method to call.\n     * @param {mixed} value The value to set.\n     * @return {Promise}\n     */\n\n  }, {\n    key: \"set\",\n    value: function set(name, value) {\n      var _this4 = this;\n\n      return new npo_src(function (resolve, reject) {\n        name = getMethodName(name, 'set');\n\n        if (value === undefined || value === null) {\n          throw new TypeError('There must be a value to set.');\n        } // We are storing the resolve/reject handlers to call later, so we\n        // can’t return here.\n        // eslint-disable-next-line promise/always-return\n\n\n        return _this4.ready().then(function () {\n          storeCallback(_this4, name, {\n            resolve: resolve,\n            reject: reject\n          });\n          postMessage(_this4, name, value);\n        }).catch(reject);\n      });\n    }\n    /**\n     * Add an event listener for the specified event. Will call the\n     * callback with a single parameter, `data`, that contains the data for\n     * that event.\n     *\n     * @param {string} eventName The name of the event.\n     * @param {function(*)} callback The function to call when the event fires.\n     * @return {void}\n     */\n\n  }, {\n    key: \"on\",\n    value: function on(eventName, callback) {\n      if (!eventName) {\n        throw new TypeError('You must pass an event name.');\n      }\n\n      if (!callback) {\n        throw new TypeError('You must pass a callback function.');\n      }\n\n      if (typeof callback !== 'function') {\n        throw new TypeError('The callback must be a function.');\n      }\n\n      var callbacks = getCallbacks(this, \"event:\".concat(eventName));\n\n      if (callbacks.length === 0) {\n        this.callMethod('addEventListener', eventName).catch(function () {// Ignore the error. There will be an error event fired that\n          // will trigger the error callback if they are listening.\n        });\n      }\n\n      storeCallback(this, \"event:\".concat(eventName), callback);\n    }\n    /**\n     * Remove an event listener for the specified event. Will remove all\n     * listeners for that event if a `callback` isn’t passed, or only that\n     * specific callback if it is passed.\n     *\n     * @param {string} eventName The name of the event.\n     * @param {function} [callback] The specific callback to remove.\n     * @return {void}\n     */\n\n  }, {\n    key: \"off\",\n    value: function off(eventName, callback) {\n      if (!eventName) {\n        throw new TypeError('You must pass an event name.');\n      }\n\n      if (callback && typeof callback !== 'function') {\n        throw new TypeError('The callback must be a function.');\n      }\n\n      var lastCallback = removeCallback(this, \"event:\".concat(eventName), callback); // If there are no callbacks left, remove the listener\n\n      if (lastCallback) {\n        this.callMethod('removeEventListener', eventName).catch(function (e) {// Ignore the error. There will be an error event fired that\n          // will trigger the error callback if they are listening.\n        });\n      }\n    }\n    /**\n     * A promise to load a new video.\n     *\n     * @promise LoadVideoPromise\n     * @fulfill {number} The video with this id successfully loaded.\n     * @reject {TypeError} The id was not a number.\n     */\n\n    /**\n     * Load a new video into this embed. The promise will be resolved if\n     * the video is successfully loaded, or it will be rejected if it could\n     * not be loaded.\n     *\n     * @param {number|object} options The id of the video or an object with embed options.\n     * @return {LoadVideoPromise}\n     */\n\n  }, {\n    key: \"loadVideo\",\n    value: function loadVideo(options) {\n      return this.callMethod('loadVideo', options);\n    }\n    /**\n     * A promise to perform an action when the Player is ready.\n     *\n     * @todo document errors\n     * @promise LoadVideoPromise\n     * @fulfill {void}\n     */\n\n    /**\n     * Trigger a function when the player iframe has initialized. You do not\n     * need to wait for `ready` to trigger to begin adding event listeners\n     * or calling other methods.\n     *\n     * @return {ReadyPromise}\n     */\n\n  }, {\n    key: \"ready\",\n    value: function ready() {\n      var readyPromise = readyMap.get(this) || new npo_src(function (resolve, reject) {\n        reject(new Error('Unknown player. Probably unloaded.'));\n      });\n      return npo_src.resolve(readyPromise);\n    }\n    /**\n     * A promise to add a cue point to the player.\n     *\n     * @promise AddCuePointPromise\n     * @fulfill {string} The id of the cue point to use for removeCuePoint.\n     * @reject {RangeError} the time was less than 0 or greater than the\n     *         video’s duration.\n     * @reject {UnsupportedError} Cue points are not supported with the current\n     *         player or browser.\n     */\n\n    /**\n     * Add a cue point to the player.\n     *\n     * @param {number} time The time for the cue point.\n     * @param {object} [data] Arbitrary data to be returned with the cue point.\n     * @return {AddCuePointPromise}\n     */\n\n  }, {\n    key: \"addCuePoint\",\n    value: function addCuePoint(time) {\n      var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      return this.callMethod('addCuePoint', {\n        time: time,\n        data: data\n      });\n    }\n    /**\n     * A promise to remove a cue point from the player.\n     *\n     * @promise AddCuePointPromise\n     * @fulfill {string} The id of the cue point that was removed.\n     * @reject {InvalidCuePoint} The cue point with the specified id was not\n     *         found.\n     * @reject {UnsupportedError} Cue points are not supported with the current\n     *         player or browser.\n     */\n\n    /**\n     * Remove a cue point from the video.\n     *\n     * @param {string} id The id of the cue point to remove.\n     * @return {RemoveCuePointPromise}\n     */\n\n  }, {\n    key: \"removeCuePoint\",\n    value: function removeCuePoint(id) {\n      return this.callMethod('removeCuePoint', id);\n    }\n    /**\n     * A representation of a text track on a video.\n     *\n     * @typedef {Object} VimeoTextTrack\n     * @property {string} language The ISO language code.\n     * @property {string} kind The kind of track it is (captions or subtitles).\n     * @property {string} label The human‐readable label for the track.\n     */\n\n    /**\n     * A promise to enable a text track.\n     *\n     * @promise EnableTextTrackPromise\n     * @fulfill {VimeoTextTrack} The text track that was enabled.\n     * @reject {InvalidTrackLanguageError} No track was available with the\n     *         specified language.\n     * @reject {InvalidTrackError} No track was available with the specified\n     *         language and kind.\n     */\n\n    /**\n     * Enable the text track with the specified language, and optionally the\n     * specified kind (captions or subtitles).\n     *\n     * When set via the API, the track language will not change the viewer’s\n     * stored preference.\n     *\n     * @param {string} language The two‐letter language code.\n     * @param {string} [kind] The kind of track to enable (captions or subtitles).\n     * @return {EnableTextTrackPromise}\n     */\n\n  }, {\n    key: \"enableTextTrack\",\n    value: function enableTextTrack(language, kind) {\n      if (!language) {\n        throw new TypeError('You must pass a language.');\n      }\n\n      return this.callMethod('enableTextTrack', {\n        language: language,\n        kind: kind\n      });\n    }\n    /**\n     * A promise to disable the active text track.\n     *\n     * @promise DisableTextTrackPromise\n     * @fulfill {void} The track was disabled.\n     */\n\n    /**\n     * Disable the currently-active text track.\n     *\n     * @return {DisableTextTrackPromise}\n     */\n\n  }, {\n    key: \"disableTextTrack\",\n    value: function disableTextTrack() {\n      return this.callMethod('disableTextTrack');\n    }\n    /**\n     * A promise to pause the video.\n     *\n     * @promise PausePromise\n     * @fulfill {void} The video was paused.\n     */\n\n    /**\n     * Pause the video if it’s playing.\n     *\n     * @return {PausePromise}\n     */\n\n  }, {\n    key: \"pause\",\n    value: function pause() {\n      return this.callMethod('pause');\n    }\n    /**\n     * A promise to play the video.\n     *\n     * @promise PlayPromise\n     * @fulfill {void} The video was played.\n     */\n\n    /**\n     * Play the video if it’s paused. **Note:** on iOS and some other\n     * mobile devices, you cannot programmatically trigger play. Once the\n     * viewer has tapped on the play button in the player, however, you\n     * will be able to use this function.\n     *\n     * @return {PlayPromise}\n     */\n\n  }, {\n    key: \"play\",\n    value: function play() {\n      return this.callMethod('play');\n    }\n    /**\n     * A promise to unload the video.\n     *\n     * @promise UnloadPromise\n     * @fulfill {void} The video was unloaded.\n     */\n\n    /**\n     * Return the player to its initial state.\n     *\n     * @return {UnloadPromise}\n     */\n\n  }, {\n    key: \"unload\",\n    value: function unload() {\n      return this.callMethod('unload');\n    }\n    /**\n     * Cleanup the player and remove it from the DOM\n     *\n     * It won't be usable and a new one should be constructed\n     *  in order to do any operations.\n     *\n     * @return {Promise}\n     */\n\n  }, {\n    key: \"destroy\",\n    value: function destroy() {\n      var _this5 = this;\n\n      return new npo_src(function (resolve) {\n        readyMap.delete(_this5);\n        playerMap.delete(_this5.element);\n\n        if (_this5._originalElement) {\n          playerMap.delete(_this5._originalElement);\n\n          _this5._originalElement.removeAttribute('data-vimeo-initialized');\n        }\n\n        if (_this5.element && _this5.element.nodeName === 'IFRAME' && _this5.element.parentNode) {\n          _this5.element.parentNode.removeChild(_this5.element);\n        }\n\n        resolve();\n      });\n    }\n    /**\n     * A promise to get the autopause behavior of the video.\n     *\n     * @promise GetAutopausePromise\n     * @fulfill {boolean} Whether autopause is turned on or off.\n     * @reject {UnsupportedError} Autopause is not supported with the current\n     *         player or browser.\n     */\n\n    /**\n     * Get the autopause behavior for this player.\n     *\n     * @return {GetAutopausePromise}\n     */\n\n  }, {\n    key: \"getAutopause\",\n    value: function getAutopause() {\n      return this.get('autopause');\n    }\n    /**\n     * A promise to set the autopause behavior of the video.\n     *\n     * @promise SetAutopausePromise\n     * @fulfill {boolean} Whether autopause is turned on or off.\n     * @reject {UnsupportedError} Autopause is not supported with the current\n     *         player or browser.\n     */\n\n    /**\n     * Enable or disable the autopause behavior of this player.\n     *\n     * By default, when another video is played in the same browser, this\n     * player will automatically pause. Unless you have a specific reason\n     * for doing so, we recommend that you leave autopause set to the\n     * default (`true`).\n     *\n     * @param {boolean} autopause\n     * @return {SetAutopausePromise}\n     */\n\n  }, {\n    key: \"setAutopause\",\n    value: function setAutopause(autopause) {\n      return this.set('autopause', autopause);\n    }\n    /**\n     * A promise to get the buffered property of the video.\n     *\n     * @promise GetBufferedPromise\n     * @fulfill {Array} Buffered Timeranges converted to an Array.\n     */\n\n    /**\n     * Get the buffered property of the video.\n     *\n     * @return {GetBufferedPromise}\n     */\n\n  }, {\n    key: \"getBuffered\",\n    value: function getBuffered() {\n      return this.get('buffered');\n    }\n    /**\n     * A promise to get the color of the player.\n     *\n     * @promise GetColorPromise\n     * @fulfill {string} The hex color of the player.\n     */\n\n    /**\n     * Get the color for this player.\n     *\n     * @return {GetColorPromise}\n     */\n\n  }, {\n    key: \"getColor\",\n    value: function getColor() {\n      return this.get('color');\n    }\n    /**\n     * A promise to set the color of the player.\n     *\n     * @promise SetColorPromise\n     * @fulfill {string} The color was successfully set.\n     * @reject {TypeError} The string was not a valid hex or rgb color.\n     * @reject {ContrastError} The color was set, but the contrast is\n     *         outside of the acceptable range.\n     * @reject {EmbedSettingsError} The owner of the player has chosen to\n     *         use a specific color.\n     */\n\n    /**\n     * Set the color of this player to a hex or rgb string. Setting the\n     * color may fail if the owner of the video has set their embed\n     * preferences to force a specific color.\n     *\n     * @param {string} color The hex or rgb color string to set.\n     * @return {SetColorPromise}\n     */\n\n  }, {\n    key: \"setColor\",\n    value: function setColor(color) {\n      return this.set('color', color);\n    }\n    /**\n     * A representation of a cue point.\n     *\n     * @typedef {Object} VimeoCuePoint\n     * @property {number} time The time of the cue point.\n     * @property {object} data The data passed when adding the cue point.\n     * @property {string} id The unique id for use with removeCuePoint.\n     */\n\n    /**\n     * A promise to get the cue points of a video.\n     *\n     * @promise GetCuePointsPromise\n     * @fulfill {VimeoCuePoint[]} The cue points added to the video.\n     * @reject {UnsupportedError} Cue points are not supported with the current\n     *         player or browser.\n     */\n\n    /**\n     * Get an array of the cue points added to the video.\n     *\n     * @return {GetCuePointsPromise}\n     */\n\n  }, {\n    key: \"getCuePoints\",\n    value: function getCuePoints() {\n      return this.get('cuePoints');\n    }\n    /**\n     * A promise to get the current time of the video.\n     *\n     * @promise GetCurrentTimePromise\n     * @fulfill {number} The current time in seconds.\n     */\n\n    /**\n     * Get the current playback position in seconds.\n     *\n     * @return {GetCurrentTimePromise}\n     */\n\n  }, {\n    key: \"getCurrentTime\",\n    value: function getCurrentTime() {\n      return this.get('currentTime');\n    }\n    /**\n     * A promise to set the current time of the video.\n     *\n     * @promise SetCurrentTimePromise\n     * @fulfill {number} The actual current time that was set.\n     * @reject {RangeError} the time was less than 0 or greater than the\n     *         video’s duration.\n     */\n\n    /**\n     * Set the current playback position in seconds. If the player was\n     * paused, it will remain paused. Likewise, if the player was playing,\n     * it will resume playing once the video has buffered.\n     *\n     * You can provide an accurate time and the player will attempt to seek\n     * to as close to that time as possible. The exact time will be the\n     * fulfilled value of the promise.\n     *\n     * @param {number} currentTime\n     * @return {SetCurrentTimePromise}\n     */\n\n  }, {\n    key: \"setCurrentTime\",\n    value: function setCurrentTime(currentTime) {\n      return this.set('currentTime', currentTime);\n    }\n    /**\n     * A promise to get the duration of the video.\n     *\n     * @promise GetDurationPromise\n     * @fulfill {number} The duration in seconds.\n     */\n\n    /**\n     * Get the duration of the video in seconds. It will be rounded to the\n     * nearest second before playback begins, and to the nearest thousandth\n     * of a second after playback begins.\n     *\n     * @return {GetDurationPromise}\n     */\n\n  }, {\n    key: \"getDuration\",\n    value: function getDuration() {\n      return this.get('duration');\n    }\n    /**\n     * A promise to get the ended state of the video.\n     *\n     * @promise GetEndedPromise\n     * @fulfill {boolean} Whether or not the video has ended.\n     */\n\n    /**\n     * Get the ended state of the video. The video has ended if\n     * `currentTime === duration`.\n     *\n     * @return {GetEndedPromise}\n     */\n\n  }, {\n    key: \"getEnded\",\n    value: function getEnded() {\n      return this.get('ended');\n    }\n    /**\n     * A promise to get the loop state of the player.\n     *\n     * @promise GetLoopPromise\n     * @fulfill {boolean} Whether or not the player is set to loop.\n     */\n\n    /**\n     * Get the loop state of the player.\n     *\n     * @return {GetLoopPromise}\n     */\n\n  }, {\n    key: \"getLoop\",\n    value: function getLoop() {\n      return this.get('loop');\n    }\n    /**\n     * A promise to set the loop state of the player.\n     *\n     * @promise SetLoopPromise\n     * @fulfill {boolean} The loop state that was set.\n     */\n\n    /**\n     * Set the loop state of the player. When set to `true`, the player\n     * will start over immediately once playback ends.\n     *\n     * @param {boolean} loop\n     * @return {SetLoopPromise}\n     */\n\n  }, {\n    key: \"setLoop\",\n    value: function setLoop(loop) {\n      return this.set('loop', loop);\n    }\n    /**\n     * A promise to get the paused state of the player.\n     *\n     * @promise GetLoopPromise\n     * @fulfill {boolean} Whether or not the video is paused.\n     */\n\n    /**\n     * Get the paused state of the player.\n     *\n     * @return {GetLoopPromise}\n     */\n\n  }, {\n    key: \"getPaused\",\n    value: function getPaused() {\n      return this.get('paused');\n    }\n    /**\n     * A promise to get the playback rate of the player.\n     *\n     * @promise GetPlaybackRatePromise\n     * @fulfill {number} The playback rate of the player on a scale from 0.5 to 2.\n     */\n\n    /**\n     * Get the playback rate of the player on a scale from `0.5` to `2`.\n     *\n     * @return {GetPlaybackRatePromise}\n     */\n\n  }, {\n    key: \"getPlaybackRate\",\n    value: function getPlaybackRate() {\n      return this.get('playbackRate');\n    }\n    /**\n     * A promise to set the playbackrate of the player.\n     *\n     * @promise SetPlaybackRatePromise\n     * @fulfill {number} The playback rate was set.\n     * @reject {RangeError} The playback rate was less than 0.5 or greater than 2.\n     */\n\n    /**\n     * Set the playback rate of the player on a scale from `0.5` to `2`. When set\n     * via the API, the playback rate will not be synchronized to other\n     * players or stored as the viewer's preference.\n     *\n     * @param {number} playbackRate\n     * @return {SetPlaybackRatePromise}\n     */\n\n  }, {\n    key: \"setPlaybackRate\",\n    value: function setPlaybackRate(playbackRate) {\n      return this.set('playbackRate', playbackRate);\n    }\n    /**\n     * A promise to get the played property of the video.\n     *\n     * @promise GetPlayedPromise\n     * @fulfill {Array} Played Timeranges converted to an Array.\n     */\n\n    /**\n     * Get the played property of the video.\n     *\n     * @return {GetPlayedPromise}\n     */\n\n  }, {\n    key: \"getPlayed\",\n    value: function getPlayed() {\n      return this.get('played');\n    }\n    /**\n     * A promise to get the seekable property of the video.\n     *\n     * @promise GetSeekablePromise\n     * @fulfill {Array} Seekable Timeranges converted to an Array.\n     */\n\n    /**\n     * Get the seekable property of the video.\n     *\n     * @return {GetSeekablePromise}\n     */\n\n  }, {\n    key: \"getSeekable\",\n    value: function getSeekable() {\n      return this.get('seekable');\n    }\n    /**\n     * A promise to get the seeking property of the player.\n     *\n     * @promise GetSeekingPromise\n     * @fulfill {boolean} Whether or not the player is currently seeking.\n     */\n\n    /**\n     * Get if the player is currently seeking.\n     *\n     * @return {GetSeekingPromise}\n     */\n\n  }, {\n    key: \"getSeeking\",\n    value: function getSeeking() {\n      return this.get('seeking');\n    }\n    /**\n     * A promise to get the text tracks of a video.\n     *\n     * @promise GetTextTracksPromise\n     * @fulfill {VimeoTextTrack[]} The text tracks associated with the video.\n     */\n\n    /**\n     * Get an array of the text tracks that exist for the video.\n     *\n     * @return {GetTextTracksPromise}\n     */\n\n  }, {\n    key: \"getTextTracks\",\n    value: function getTextTracks() {\n      return this.get('textTracks');\n    }\n    /**\n     * A promise to get the embed code for the video.\n     *\n     * @promise GetVideoEmbedCodePromise\n     * @fulfill {string} The `<iframe>` embed code for the video.\n     */\n\n    /**\n     * Get the `<iframe>` embed code for the video.\n     *\n     * @return {GetVideoEmbedCodePromise}\n     */\n\n  }, {\n    key: \"getVideoEmbedCode\",\n    value: function getVideoEmbedCode() {\n      return this.get('videoEmbedCode');\n    }\n    /**\n     * A promise to get the id of the video.\n     *\n     * @promise GetVideoIdPromise\n     * @fulfill {number} The id of the video.\n     */\n\n    /**\n     * Get the id of the video.\n     *\n     * @return {GetVideoIdPromise}\n     */\n\n  }, {\n    key: \"getVideoId\",\n    value: function getVideoId() {\n      return this.get('videoId');\n    }\n    /**\n     * A promise to get the title of the video.\n     *\n     * @promise GetVideoTitlePromise\n     * @fulfill {number} The title of the video.\n     */\n\n    /**\n     * Get the title of the video.\n     *\n     * @return {GetVideoTitlePromise}\n     */\n\n  }, {\n    key: \"getVideoTitle\",\n    value: function getVideoTitle() {\n      return this.get('videoTitle');\n    }\n    /**\n     * A promise to get the native width of the video.\n     *\n     * @promise GetVideoWidthPromise\n     * @fulfill {number} The native width of the video.\n     */\n\n    /**\n     * Get the native width of the currently‐playing video. The width of\n     * the highest‐resolution available will be used before playback begins.\n     *\n     * @return {GetVideoWidthPromise}\n     */\n\n  }, {\n    key: \"getVideoWidth\",\n    value: function getVideoWidth() {\n      return this.get('videoWidth');\n    }\n    /**\n     * A promise to get the native height of the video.\n     *\n     * @promise GetVideoHeightPromise\n     * @fulfill {number} The native height of the video.\n     */\n\n    /**\n     * Get the native height of the currently‐playing video. The height of\n     * the highest‐resolution available will be used before playback begins.\n     *\n     * @return {GetVideoHeightPromise}\n     */\n\n  }, {\n    key: \"getVideoHeight\",\n    value: function getVideoHeight() {\n      return this.get('videoHeight');\n    }\n    /**\n     * A promise to get the vimeo.com url for the video.\n     *\n     * @promise GetVideoUrlPromise\n     * @fulfill {number} The vimeo.com url for the video.\n     * @reject {PrivacyError} The url isn’t available because of the video’s privacy setting.\n     */\n\n    /**\n     * Get the vimeo.com url for the video.\n     *\n     * @return {GetVideoUrlPromise}\n     */\n\n  }, {\n    key: \"getVideoUrl\",\n    value: function getVideoUrl() {\n      return this.get('videoUrl');\n    }\n    /**\n     * A promise to get the volume level of the player.\n     *\n     * @promise GetVolumePromise\n     * @fulfill {number} The volume level of the player on a scale from 0 to 1.\n     */\n\n    /**\n     * Get the current volume level of the player on a scale from `0` to `1`.\n     *\n     * Most mobile devices do not support an independent volume from the\n     * system volume. In those cases, this method will always return `1`.\n     *\n     * @return {GetVolumePromise}\n     */\n\n  }, {\n    key: \"getVolume\",\n    value: function getVolume() {\n      return this.get('volume');\n    }\n    /**\n     * A promise to set the volume level of the player.\n     *\n     * @promise SetVolumePromise\n     * @fulfill {number} The volume was set.\n     * @reject {RangeError} The volume was less than 0 or greater than 1.\n     */\n\n    /**\n     * Set the volume of the player on a scale from `0` to `1`. When set\n     * via the API, the volume level will not be synchronized to other\n     * players or stored as the viewer’s preference.\n     *\n     * Most mobile devices do not support setting the volume. An error will\n     * *not* be triggered in that situation.\n     *\n     * @param {number} volume\n     * @return {SetVolumePromise}\n     */\n\n  }, {\n    key: \"setVolume\",\n    value: function setVolume(volume) {\n      return this.set('volume', volume);\n    }\n  }]);\n\n  return Player;\n}(); // Setup embed only if this is not a node environment\n\n\nif (!isNode) {\n  initializeEmbeds();\n  resizeEmbeds();\n}\n\nexport default Player;\n","export interface ILogFunction {\n  (message?: any, ...optionalParams: any[]): void;\n}\n\nexport interface ILogger {\n  trace: ILogFunction;\n  debug: ILogFunction;\n  log: ILogFunction;\n  warn: ILogFunction;\n  info: ILogFunction;\n  error: ILogFunction;\n}\n\nconst noop: ILogFunction = function () {};\n\nconst fakeLogger: ILogger = {\n  trace: noop,\n  debug: noop,\n  log: noop,\n  warn: noop,\n  info: noop,\n  error: noop,\n};\n\nlet exportedLogger: ILogger = fakeLogger;\n\n// let lastCallTime;\n// function formatMsgWithTimeInfo(type, msg) {\n//   const now = Date.now();\n//   const diff = lastCallTime ? '+' + (now - lastCallTime) : '0';\n//   lastCallTime = now;\n//   msg = (new Date(now)).toISOString() + ' | [' +  type + '] > ' + msg + ' ( ' + diff + ' ms )';\n//   return msg;\n// }\n\nfunction consolePrintFn(type: string): ILogFunction {\n  const func: ILogFunction = self.console[type];\n  if (func) {\n    return func.bind(self.console, `[${type}] >`);\n  }\n  return noop;\n}\n\nfunction exportLoggerFunctions(\n  debugConfig: boolean | ILogger,\n  ...functions: string[]\n): void {\n  functions.forEach(function (type) {\n    exportedLogger[type] = debugConfig[type]\n      ? debugConfig[type].bind(debugConfig)\n      : consolePrintFn(type);\n  });\n}\n\nexport function enableLogs(debugConfig: boolean | ILogger, id: string): void {\n  // check that console is available\n  if (\n    (self.console && debugConfig === true) ||\n    typeof debugConfig === 'object'\n  ) {\n    exportLoggerFunctions(\n      debugConfig,\n      // Remove out from list here to hard-disable a log-level\n      // 'trace',\n      'debug',\n      'log',\n      'info',\n      'warn',\n      'error'\n    );\n    // Some browsers don't allow to use bind on console object anyway\n    // fallback to default if needed\n    try {\n      exportedLogger.log(\n        `Debug logs enabled for \"${id}\" in hls.js version ${__VERSION__}`\n      );\n    } catch (e) {\n      exportedLogger = fakeLogger;\n    }\n  } else {\n    exportedLogger = fakeLogger;\n  }\n}\n\nexport const logger: ILogger = exportedLogger;\n","import { AttrList } from '../utils/attr-list';\nimport { logger } from '../utils/logger';\n\n// Avoid exporting const enum so that these values can be inlined\nconst enum DateRangeAttribute {\n  ID = 'ID',\n  CLASS = 'CLASS',\n  START_DATE = 'START-DATE',\n  DURATION = 'DURATION',\n  END_DATE = 'END-DATE',\n  END_ON_NEXT = 'END-ON-NEXT',\n  PLANNED_DURATION = 'PLANNED-DURATION',\n  SCTE35_OUT = 'SCTE35-OUT',\n  SCTE35_IN = 'SCTE35-IN',\n}\n\nexport function isDateRangeCueAttribute(attrName: string): boolean {\n  return (\n    attrName !== DateRangeAttribute.ID &&\n    attrName !== DateRangeAttribute.CLASS &&\n    attrName !== DateRangeAttribute.START_DATE &&\n    attrName !== DateRangeAttribute.DURATION &&\n    attrName !== DateRangeAttribute.END_DATE &&\n    attrName !== DateRangeAttribute.END_ON_NEXT\n  );\n}\n\nexport function isSCTE35Attribute(attrName: string): boolean {\n  return (\n    attrName === DateRangeAttribute.SCTE35_OUT ||\n    attrName === DateRangeAttribute.SCTE35_IN\n  );\n}\n\nexport class DateRange {\n  public attr: AttrList;\n  private _startDate: Date;\n  private _endDate?: Date;\n  private _badValueForSameId?: string;\n\n  constructor(dateRangeAttr: AttrList, dateRangeWithSameId?: DateRange) {\n    if (dateRangeWithSameId) {\n      const previousAttr = dateRangeWithSameId.attr;\n      for (const key in previousAttr) {\n        if (\n          Object.prototype.hasOwnProperty.call(dateRangeAttr, key) &&\n          dateRangeAttr[key] !== previousAttr[key]\n        ) {\n          logger.warn(\n            `DATERANGE tag attribute: \"${key}\" does not match for tags with ID: \"${dateRangeAttr.ID}\"`\n          );\n          this._badValueForSameId = key;\n          break;\n        }\n      }\n      // Merge DateRange tags with the same ID\n      dateRangeAttr = Object.assign(\n        new AttrList({}),\n        previousAttr,\n        dateRangeAttr\n      );\n    }\n    this.attr = dateRangeAttr;\n    this._startDate = new Date(dateRangeAttr[DateRangeAttribute.START_DATE]);\n    if (DateRangeAttribute.END_DATE in this.attr) {\n      const endDate = new Date(this.attr[DateRangeAttribute.END_DATE]);\n      if (Number.isFinite(endDate.getTime())) {\n        this._endDate = endDate;\n      }\n    }\n  }\n\n  get id(): string {\n    return this.attr.ID;\n  }\n\n  get class(): string {\n    return this.attr.CLASS;\n  }\n\n  get startDate(): Date {\n    return this._startDate;\n  }\n\n  get endDate(): Date | null {\n    if (this._endDate) {\n      return this._endDate;\n    }\n    const duration = this.duration;\n    if (duration !== null) {\n      return new Date(this._startDate.getTime() + duration * 1000);\n    }\n    return null;\n  }\n\n  get duration(): number | null {\n    if (DateRangeAttribute.DURATION in this.attr) {\n      const duration = this.attr.decimalFloatingPoint(\n        DateRangeAttribute.DURATION\n      );\n      if (Number.isFinite(duration)) {\n        return duration;\n      }\n    } else if (this._endDate) {\n      return (this._endDate.getTime() - this._startDate.getTime()) / 1000;\n    }\n    return null;\n  }\n\n  get plannedDuration(): number | null {\n    if (DateRangeAttribute.PLANNED_DURATION in this.attr) {\n      return this.attr.decimalFloatingPoint(\n        DateRangeAttribute.PLANNED_DURATION\n      );\n    }\n    return null;\n  }\n\n  get endOnNext(): boolean {\n    return this.attr.bool(DateRangeAttribute.END_ON_NEXT);\n  }\n\n  get isValid(): boolean {\n    return (\n      !!this.id &&\n      !this._badValueForSameId &&\n      Number.isFinite(this.startDate.getTime()) &&\n      (this.duration === null || this.duration >= 0) &&\n      (!this.endOnNext || !!this.class)\n    );\n  }\n}\n","export function base64ToBase64Url(base64encodedStr: string): string {\n  return base64encodedStr\n    .replace(/\\+/g, '-')\n    .replace(/\\//g, '_')\n    .replace(/=+$/, '');\n}\n\nexport function strToBase64Encode(str: string): string {\n  return btoa(str);\n}\n\nexport function base64DecodeToStr(str: string): string {\n  return atob(str);\n}\n\nexport function base64Encode(input: Uint8Array): string {\n  return btoa(String.fromCharCode(...input));\n}\n\nexport function base64UrlEncode(input: Uint8Array): string {\n  return base64ToBase64Url(base64Encode(input));\n}\n\nexport function base64Decode(base64encodedStr: string): Uint8Array {\n  return Uint8Array.from(atob(base64encodedStr), (c) => c.charCodeAt(0));\n}\n","import { base64Decode } from './numeric-encoding-utils';\n\nfunction getKeyIdBytes(str: string): Uint8Array {\n  const keyIdbytes = strToUtf8array(str).subarray(0, 16);\n  const paddedkeyIdbytes = new Uint8Array(16);\n  paddedkeyIdbytes.set(keyIdbytes, 16 - keyIdbytes.length);\n  return paddedkeyIdbytes;\n}\n\nexport function changeEndianness(keyId: Uint8Array) {\n  const swap = function (array: Uint8Array, from: number, to: number) {\n    const cur = array[from];\n    array[from] = array[to];\n    array[to] = cur;\n  };\n\n  swap(keyId, 0, 3);\n  swap(keyId, 1, 2);\n  swap(keyId, 4, 5);\n  swap(keyId, 6, 7);\n}\n\nexport function convertDataUriToArrayBytes(uri: string): Uint8Array | null {\n  // data:[<media type][;attribute=value][;base64],<data>\n  const colonsplit = uri.split(':');\n  let keydata: Uint8Array | null = null;\n  if (colonsplit[0] === 'data' && colonsplit.length === 2) {\n    const semicolonsplit = colonsplit[1].split(';');\n    const commasplit = semicolonsplit[semicolonsplit.length - 1].split(',');\n    if (commasplit.length === 2) {\n      const isbase64 = commasplit[0] === 'base64';\n      const data = commasplit[1];\n      if (isbase64) {\n        semicolonsplit.splice(-1, 1); // remove from processing\n        keydata = base64Decode(data);\n      } else {\n        keydata = getKeyIdBytes(data);\n      }\n    }\n  }\n  return keydata;\n}\n\nexport function strToUtf8array(str: string): Uint8Array {\n  return Uint8Array.from(unescape(encodeURIComponent(str)), (c) =>\n    c.charCodeAt(0)\n  );\n}\n","import type { DRMSystemOptions, EMEControllerConfig } from '../config';\n\n/**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Navigator/requestMediaKeySystemAccess\n */\nexport const enum KeySystems {\n  CLEARKEY = 'org.w3.clearkey',\n  FAIRPLAY = 'com.apple.fps',\n  PLAYREADY = 'com.microsoft.playready',\n  WIDEVINE = 'com.widevine.alpha',\n}\n\n// Playlist #EXT-X-KEY KEYFORMAT values\nexport const enum KeySystemFormats {\n  CLEARKEY = 'org.w3.clearkey',\n  FAIRPLAY = 'com.apple.streamingkeydelivery',\n  PLAYREADY = 'com.microsoft.playready',\n  WIDEVINE = 'urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed',\n}\n\nexport function keySystemFormatToKeySystemDomain(\n  format: KeySystemFormats\n): KeySystems | undefined {\n  switch (format) {\n    case KeySystemFormats.FAIRPLAY:\n      return KeySystems.FAIRPLAY;\n    case KeySystemFormats.PLAYREADY:\n      return KeySystems.PLAYREADY;\n    case KeySystemFormats.WIDEVINE:\n      return KeySystems.WIDEVINE;\n    case KeySystemFormats.CLEARKEY:\n      return KeySystems.CLEARKEY;\n  }\n}\n\n// System IDs for which we can extract a key ID from \"encrypted\" event PSSH\nexport const enum KeySystemIds {\n  // CENC = '1077efecc0b24d02ace33c1e52e2fb4b'\n  // CLEARKEY = 'e2719d58a985b3c9781ab030af78d30e',\n  // FAIRPLAY = '94ce86fb07ff4f43adb893d2fa968ca2',\n  // PLAYREADY = '9a04f07998404286ab92e65be0885f95',\n  WIDEVINE = 'edef8ba979d64acea3c827dcd51d21ed',\n}\n\nexport function keySystemIdToKeySystemDomain(\n  systemId: KeySystemIds\n): KeySystems | undefined {\n  if (systemId === KeySystemIds.WIDEVINE) {\n    return KeySystems.WIDEVINE;\n    // } else if (systemId === KeySystemIds.PLAYREADY) {\n    //   return KeySystems.PLAYREADY;\n    // } else if (systemId === KeySystemIds.CENC || systemId === KeySystemIds.CLEARKEY) {\n    //   return KeySystems.CLEARKEY;\n  }\n}\n\nexport function keySystemDomainToKeySystemFormat(\n  keySystem: KeySystems\n): KeySystemFormats | undefined {\n  switch (keySystem) {\n    case KeySystems.FAIRPLAY:\n      return KeySystemFormats.FAIRPLAY;\n    case KeySystems.PLAYREADY:\n      return KeySystemFormats.PLAYREADY;\n    case KeySystems.WIDEVINE:\n      return KeySystemFormats.WIDEVINE;\n    case KeySystems.CLEARKEY:\n      return KeySystemFormats.CLEARKEY;\n  }\n}\n\nexport function getKeySystemsForConfig(\n  config: EMEControllerConfig\n): KeySystems[] {\n  const { drmSystems, widevineLicenseUrl } = config;\n  const keySystemsToAttempt: KeySystems[] = drmSystems\n    ? [\n        KeySystems.FAIRPLAY,\n        KeySystems.WIDEVINE,\n        KeySystems.PLAYREADY,\n        KeySystems.CLEARKEY,\n      ].filter((keySystem) => !!drmSystems[keySystem])\n    : [];\n  if (!keySystemsToAttempt[KeySystems.WIDEVINE] && widevineLicenseUrl) {\n    keySystemsToAttempt.push(KeySystems.WIDEVINE);\n  }\n  return keySystemsToAttempt;\n}\n\nexport type MediaKeyFunc = (\n  keySystem: KeySystems,\n  supportedConfigurations: MediaKeySystemConfiguration[]\n) => Promise<MediaKeySystemAccess>;\n\nexport const requestMediaKeySystemAccess = (function (): MediaKeyFunc | null {\n  if (\n    typeof self !== 'undefined' &&\n    self.navigator &&\n    self.navigator.requestMediaKeySystemAccess\n  ) {\n    return self.navigator.requestMediaKeySystemAccess.bind(self.navigator);\n  } else {\n    return null;\n  }\n})();\n\n/**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/MediaKeySystemConfiguration\n */\nexport function getSupportedMediaKeySystemConfigurations(\n  keySystem: KeySystems,\n  audioCodecs: string[],\n  videoCodecs: string[],\n  drmSystemOptions: DRMSystemOptions\n): MediaKeySystemConfiguration[] {\n  let initDataTypes: string[];\n  switch (keySystem) {\n    case KeySystems.FAIRPLAY:\n      initDataTypes = ['cenc', 'sinf'];\n      break;\n    case KeySystems.WIDEVINE:\n    case KeySystems.PLAYREADY:\n      initDataTypes = ['cenc'];\n      break;\n    case KeySystems.CLEARKEY:\n      initDataTypes = ['cenc', 'keyids'];\n      break;\n    default:\n      throw new Error(`Unknown key-system: ${keySystem}`);\n  }\n  return createMediaKeySystemConfigurations(\n    initDataTypes,\n    audioCodecs,\n    videoCodecs,\n    drmSystemOptions\n  );\n}\n\nfunction createMediaKeySystemConfigurations(\n  initDataTypes: string[],\n  audioCodecs: string[],\n  videoCodecs: string[],\n  drmSystemOptions: DRMSystemOptions\n): MediaKeySystemConfiguration[] {\n  const baseConfig: MediaKeySystemConfiguration = {\n    initDataTypes: initDataTypes,\n    persistentState: drmSystemOptions.persistentState || 'not-allowed',\n    distinctiveIdentifier:\n      drmSystemOptions.distinctiveIdentifier || 'not-allowed',\n    sessionTypes: drmSystemOptions.sessionTypes || [\n      drmSystemOptions.sessionType || 'temporary',\n    ],\n    audioCapabilities: audioCodecs.map((codec) => ({\n      contentType: `audio/mp4; codecs=\"${codec}\"`,\n      robustness: drmSystemOptions.audioRobustness || '',\n      encryptionScheme: drmSystemOptions.audioEncryptionScheme || null,\n    })),\n    videoCapabilities: videoCodecs.map((codec) => ({\n      contentType: `video/mp4; codecs=\"${codec}\"`,\n      robustness: drmSystemOptions.videoRobustness || '',\n      encryptionScheme: drmSystemOptions.videoEncryptionScheme || null,\n    })),\n  };\n\n  return [baseConfig];\n}\n","export function sliceUint8(\n  array: Uint8Array,\n  start?: number,\n  end?: number\n): Uint8Array {\n  // @ts-expect-error This polyfills IE11 usage of Uint8Array slice.\n  // It always exists in the TypeScript definition so fails, but it fails at runtime on IE11.\n  return Uint8Array.prototype.slice\n    ? array.slice(start, end)\n    : new Uint8Array(Array.prototype.slice.call(array, start, end));\n}\n","type RawFrame = { type: string; size: number; data: Uint8Array };\n\n// breaking up those two types in order to clarify what is happening in the decoding path.\ntype DecodedFrame<T> = { key: string; data: T; info?: any };\nexport type Frame = DecodedFrame<ArrayBuffer | string>;\n\n/**\n * Returns true if an ID3 header can be found at offset in data\n * @param data - The data to search\n * @param offset - The offset at which to start searching\n */\nexport const isHeader = (data: Uint8Array, offset: number): boolean => {\n  /*\n   * http://id3.org/id3v2.3.0\n   * [0]     = 'I'\n   * [1]     = 'D'\n   * [2]     = '3'\n   * [3,4]   = {Version}\n   * [5]     = {Flags}\n   * [6-9]   = {ID3 Size}\n   *\n   * An ID3v2 tag can be detected with the following pattern:\n   *  $49 44 33 yy yy xx zz zz zz zz\n   * Where yy is less than $FF, xx is the 'flags' byte and zz is less than $80\n   */\n  if (offset + 10 <= data.length) {\n    // look for 'ID3' identifier\n    if (\n      data[offset] === 0x49 &&\n      data[offset + 1] === 0x44 &&\n      data[offset + 2] === 0x33\n    ) {\n      // check version is within range\n      if (data[offset + 3] < 0xff && data[offset + 4] < 0xff) {\n        // check size is within range\n        if (\n          data[offset + 6] < 0x80 &&\n          data[offset + 7] < 0x80 &&\n          data[offset + 8] < 0x80 &&\n          data[offset + 9] < 0x80\n        ) {\n          return true;\n        }\n      }\n    }\n  }\n\n  return false;\n};\n\n/**\n * Returns true if an ID3 footer can be found at offset in data\n * @param data - The data to search\n * @param offset - The offset at which to start searching\n */\nexport const isFooter = (data: Uint8Array, offset: number): boolean => {\n  /*\n   * The footer is a copy of the header, but with a different identifier\n   */\n  if (offset + 10 <= data.length) {\n    // look for '3DI' identifier\n    if (\n      data[offset] === 0x33 &&\n      data[offset + 1] === 0x44 &&\n      data[offset + 2] === 0x49\n    ) {\n      // check version is within range\n      if (data[offset + 3] < 0xff && data[offset + 4] < 0xff) {\n        // check size is within range\n        if (\n          data[offset + 6] < 0x80 &&\n          data[offset + 7] < 0x80 &&\n          data[offset + 8] < 0x80 &&\n          data[offset + 9] < 0x80\n        ) {\n          return true;\n        }\n      }\n    }\n  }\n\n  return false;\n};\n\n/**\n * Returns any adjacent ID3 tags found in data starting at offset, as one block of data\n * @param data - The data to search in\n * @param offset - The offset at which to start searching\n * @returns the block of data containing any ID3 tags found\n * or *undefined* if no header is found at the starting offset\n */\nexport const getID3Data = (\n  data: Uint8Array,\n  offset: number\n): Uint8Array | undefined => {\n  const front = offset;\n  let length = 0;\n\n  while (isHeader(data, offset)) {\n    // ID3 header is 10 bytes\n    length += 10;\n\n    const size = readSize(data, offset + 6);\n    length += size;\n\n    if (isFooter(data, offset + 10)) {\n      // ID3 footer is 10 bytes\n      length += 10;\n    }\n\n    offset += length;\n  }\n\n  if (length > 0) {\n    return data.subarray(front, front + length);\n  }\n\n  return undefined;\n};\n\nconst readSize = (data: Uint8Array, offset: number): number => {\n  let size = 0;\n  size = (data[offset] & 0x7f) << 21;\n  size |= (data[offset + 1] & 0x7f) << 14;\n  size |= (data[offset + 2] & 0x7f) << 7;\n  size |= data[offset + 3] & 0x7f;\n  return size;\n};\n\nexport const canParse = (data: Uint8Array, offset: number): boolean => {\n  return (\n    isHeader(data, offset) &&\n    readSize(data, offset + 6) + 10 <= data.length - offset\n  );\n};\n\n/**\n * Searches for the Elementary Stream timestamp found in the ID3 data chunk\n * @param data - Block of data containing one or more ID3 tags\n */\nexport const getTimeStamp = (data: Uint8Array): number | undefined => {\n  const frames: Frame[] = getID3Frames(data);\n\n  for (let i = 0; i < frames.length; i++) {\n    const frame = frames[i];\n\n    if (isTimeStampFrame(frame)) {\n      return readTimeStamp(frame as DecodedFrame<ArrayBuffer>);\n    }\n  }\n\n  return undefined;\n};\n\n/**\n * Returns true if the ID3 frame is an Elementary Stream timestamp frame\n */\nexport const isTimeStampFrame = (frame: Frame): boolean => {\n  return (\n    frame &&\n    frame.key === 'PRIV' &&\n    frame.info === 'com.apple.streaming.transportStreamTimestamp'\n  );\n};\n\nconst getFrameData = (data: Uint8Array): RawFrame => {\n  /*\n  Frame ID       $xx xx xx xx (four characters)\n  Size           $xx xx xx xx\n  Flags          $xx xx\n  */\n  const type: string = String.fromCharCode(data[0], data[1], data[2], data[3]);\n  const size: number = readSize(data, 4);\n\n  // skip frame id, size, and flags\n  const offset = 10;\n\n  return { type, size, data: data.subarray(offset, offset + size) };\n};\n\n/**\n * Returns an array of ID3 frames found in all the ID3 tags in the id3Data\n * @param id3Data - The ID3 data containing one or more ID3 tags\n */\nexport const getID3Frames = (id3Data: Uint8Array): Frame[] => {\n  let offset = 0;\n  const frames: Frame[] = [];\n\n  while (isHeader(id3Data, offset)) {\n    const size = readSize(id3Data, offset + 6);\n    // skip past ID3 header\n    offset += 10;\n    const end = offset + size;\n    // loop through frames in the ID3 tag\n    while (offset + 8 < end) {\n      const frameData: RawFrame = getFrameData(id3Data.subarray(offset));\n      const frame: Frame | undefined = decodeFrame(frameData);\n      if (frame) {\n        frames.push(frame);\n      }\n\n      // skip frame header and frame data\n      offset += frameData.size + 10;\n    }\n\n    if (isFooter(id3Data, offset)) {\n      offset += 10;\n    }\n  }\n\n  return frames;\n};\n\nexport const decodeFrame = (frame: RawFrame): Frame | undefined => {\n  if (frame.type === 'PRIV') {\n    return decodePrivFrame(frame);\n  } else if (frame.type[0] === 'W') {\n    return decodeURLFrame(frame);\n  }\n\n  return decodeTextFrame(frame);\n};\n\nconst decodePrivFrame = (\n  frame: RawFrame\n): DecodedFrame<ArrayBuffer> | undefined => {\n  /*\n  Format: <text string>\\0<binary data>\n  */\n  if (frame.size < 2) {\n    return undefined;\n  }\n\n  const owner = utf8ArrayToStr(frame.data, true);\n  const privateData = new Uint8Array(frame.data.subarray(owner.length + 1));\n\n  return { key: frame.type, info: owner, data: privateData.buffer };\n};\n\nconst decodeTextFrame = (frame: RawFrame): DecodedFrame<string> | undefined => {\n  if (frame.size < 2) {\n    return undefined;\n  }\n\n  if (frame.type === 'TXXX') {\n    /*\n    Format:\n    [0]   = {Text Encoding}\n    [1-?] = {Description}\\0{Value}\n    */\n    let index = 1;\n    const description = utf8ArrayToStr(frame.data.subarray(index), true);\n\n    index += description.length + 1;\n    const value = utf8ArrayToStr(frame.data.subarray(index));\n\n    return { key: frame.type, info: description, data: value };\n  }\n  /*\n  Format:\n  [0]   = {Text Encoding}\n  [1-?] = {Value}\n  */\n  const text = utf8ArrayToStr(frame.data.subarray(1));\n  return { key: frame.type, data: text };\n};\n\nconst decodeURLFrame = (frame: RawFrame): DecodedFrame<string> | undefined => {\n  if (frame.type === 'WXXX') {\n    /*\n    Format:\n    [0]   = {Text Encoding}\n    [1-?] = {Description}\\0{URL}\n    */\n    if (frame.size < 2) {\n      return undefined;\n    }\n\n    let index = 1;\n    const description: string = utf8ArrayToStr(\n      frame.data.subarray(index),\n      true\n    );\n\n    index += description.length + 1;\n    const value: string = utf8ArrayToStr(frame.data.subarray(index));\n\n    return { key: frame.type, info: description, data: value };\n  }\n  /*\n  Format:\n  [0-?] = {URL}\n  */\n  const url: string = utf8ArrayToStr(frame.data);\n  return { key: frame.type, data: url };\n};\n\nconst readTimeStamp = (\n  timeStampFrame: DecodedFrame<ArrayBuffer>\n): number | undefined => {\n  if (timeStampFrame.data.byteLength === 8) {\n    const data = new Uint8Array(timeStampFrame.data);\n    // timestamp is 33 bit expressed as a big-endian eight-octet number,\n    // with the upper 31 bits set to zero.\n    const pts33Bit = data[3] & 0x1;\n    let timestamp =\n      (data[4] << 23) + (data[5] << 15) + (data[6] << 7) + data[7];\n    timestamp /= 45;\n\n    if (pts33Bit) {\n      timestamp += 47721858.84;\n    } // 2^32 / 90\n\n    return Math.round(timestamp);\n  }\n\n  return undefined;\n};\n\n// http://stackoverflow.com/questions/8936984/uint8array-to-string-in-javascript/22373197\n// http://www.onicos.com/staff/iz/amuse/javascript/expert/utf.txt\n/* utf.js - UTF-8 <=> UTF-16 convertion\n *\n * Copyright (C) 1999 Masanao Izumo <iz@onicos.co.jp>\n * Version: 1.0\n * LastModified: Dec 25 1999\n * This library is free.  You can redistribute it and/or modify it.\n */\nexport const utf8ArrayToStr = (\n  array: Uint8Array,\n  exitOnNull: boolean = false\n): string => {\n  const decoder = getTextDecoder();\n  if (decoder) {\n    const decoded = decoder.decode(array);\n\n    if (exitOnNull) {\n      // grab up to the first null\n      const idx = decoded.indexOf('\\0');\n      return idx !== -1 ? decoded.substring(0, idx) : decoded;\n    }\n\n    // remove any null characters\n    return decoded.replace(/\\0/g, '');\n  }\n\n  const len = array.length;\n  let c;\n  let char2;\n  let char3;\n  let out = '';\n  let i = 0;\n  while (i < len) {\n    c = array[i++];\n    if (c === 0x00 && exitOnNull) {\n      return out;\n    } else if (c === 0x00 || c === 0x03) {\n      // If the character is 3 (END_OF_TEXT) or 0 (NULL) then skip it\n      continue;\n    }\n    switch (c >> 4) {\n      case 0:\n      case 1:\n      case 2:\n      case 3:\n      case 4:\n      case 5:\n      case 6:\n      case 7:\n        // 0xxxxxxx\n        out += String.fromCharCode(c);\n        break;\n      case 12:\n      case 13:\n        // 110x xxxx   10xx xxxx\n        char2 = array[i++];\n        out += String.fromCharCode(((c & 0x1f) << 6) | (char2 & 0x3f));\n        break;\n      case 14:\n        // 1110 xxxx  10xx xxxx  10xx xxxx\n        char2 = array[i++];\n        char3 = array[i++];\n        out += String.fromCharCode(\n          ((c & 0x0f) << 12) | ((char2 & 0x3f) << 6) | ((char3 & 0x3f) << 0)\n        );\n        break;\n      default:\n    }\n  }\n  return out;\n};\n\nexport const testables = {\n  decodeTextFrame: decodeTextFrame,\n};\n\nlet decoder: TextDecoder;\n\nfunction getTextDecoder() {\n  if (!decoder && typeof self.TextDecoder !== 'undefined') {\n    decoder = new self.TextDecoder('utf-8');\n  }\n\n  return decoder;\n}\n","import { ElementaryStreamTypes } from '../loader/fragment';\nimport { sliceUint8 } from './typed-array';\nimport { utf8ArrayToStr } from '../demux/id3';\nimport { logger } from '../utils/logger';\nimport Hex from './hex';\nimport type { PassthroughTrack, UserdataSample } from '../types/demuxer';\nimport type { DecryptData } from '../loader/level-key';\n\nconst UINT32_MAX = Math.pow(2, 32) - 1;\nconst push = [].push;\n\n// We are using fixed track IDs for driving the MP4 remuxer\n// instead of following the TS PIDs.\n// There is no reason not to do this and some browsers/SourceBuffer-demuxers\n// may not like if there are TrackID \"switches\"\n// See https://github.com/video-dev/hls.js/issues/1331\n// Here we are mapping our internal track types to constant MP4 track IDs\n// With MSE currently one can only have one track of each, and we are muxing\n// whatever video/audio rendition in them.\nexport const RemuxerTrackIdConfig = {\n  video: 1,\n  audio: 2,\n  id3: 3,\n  text: 4,\n};\n\nexport function bin2str(data: Uint8Array): string {\n  return String.fromCharCode.apply(null, data);\n}\n\nexport function readUint16(buffer: Uint8Array, offset: number): number {\n  const val = (buffer[offset] << 8) | buffer[offset + 1];\n  return val < 0 ? 65536 + val : val;\n}\n\nexport function readUint32(buffer: Uint8Array, offset: number): number {\n  const val = readSint32(buffer, offset);\n  return val < 0 ? 4294967296 + val : val;\n}\n\nexport function readSint32(buffer: Uint8Array, offset: number): number {\n  return (\n    (buffer[offset] << 24) |\n    (buffer[offset + 1] << 16) |\n    (buffer[offset + 2] << 8) |\n    buffer[offset + 3]\n  );\n}\n\nexport function writeUint32(buffer: Uint8Array, offset: number, value: number) {\n  buffer[offset] = value >> 24;\n  buffer[offset + 1] = (value >> 16) & 0xff;\n  buffer[offset + 2] = (value >> 8) & 0xff;\n  buffer[offset + 3] = value & 0xff;\n}\n\n// Find the data for a box specified by its path\nexport function findBox(data: Uint8Array, path: string[]): Uint8Array[] {\n  const results = [] as Uint8Array[];\n  if (!path.length) {\n    // short-circuit the search for empty paths\n    return results;\n  }\n  const end = data.byteLength;\n\n  for (let i = 0; i < end; ) {\n    const size = readUint32(data, i);\n    const type = bin2str(data.subarray(i + 4, i + 8));\n    const endbox = size > 1 ? i + size : end;\n\n    if (type === path[0]) {\n      if (path.length === 1) {\n        // this is the end of the path and we've found the box we were\n        // looking for\n        results.push(data.subarray(i + 8, endbox));\n      } else {\n        // recursively search for the next box along the path\n        const subresults = findBox(data.subarray(i + 8, endbox), path.slice(1));\n        if (subresults.length) {\n          push.apply(results, subresults);\n        }\n      }\n    }\n    i = endbox;\n  }\n\n  // we've finished searching all of data\n  return results;\n}\n\ntype SidxInfo = {\n  earliestPresentationTime: number;\n  timescale: number;\n  version: number;\n  referencesCount: number;\n  references: any[];\n};\n\nexport function parseSegmentIndex(sidx: Uint8Array): SidxInfo | null {\n  const references: any[] = [];\n\n  const version = sidx[0];\n\n  // set initial offset, we skip the reference ID (not needed)\n  let index = 8;\n\n  const timescale = readUint32(sidx, index);\n  index += 4;\n\n  // TODO: parse earliestPresentationTime and firstOffset\n  // usually zero in our case\n  const earliestPresentationTime = 0;\n  const firstOffset = 0;\n\n  if (version === 0) {\n    index += 8;\n  } else {\n    index += 16;\n  }\n\n  // skip reserved\n  index += 2;\n\n  let startByte = sidx.length + firstOffset;\n\n  const referencesCount = readUint16(sidx, index);\n  index += 2;\n\n  for (let i = 0; i < referencesCount; i++) {\n    let referenceIndex = index;\n\n    const referenceInfo = readUint32(sidx, referenceIndex);\n    referenceIndex += 4;\n\n    const referenceSize = referenceInfo & 0x7fffffff;\n    const referenceType = (referenceInfo & 0x80000000) >>> 31;\n\n    if (referenceType === 1) {\n      logger.warn('SIDX has hierarchical references (not supported)');\n      return null;\n    }\n\n    const subsegmentDuration = readUint32(sidx, referenceIndex);\n    referenceIndex += 4;\n\n    references.push({\n      referenceSize,\n      subsegmentDuration, // unscaled\n      info: {\n        duration: subsegmentDuration / timescale,\n        start: startByte,\n        end: startByte + referenceSize - 1,\n      },\n    });\n\n    startByte += referenceSize;\n\n    // Skipping 1 bit for |startsWithSap|, 3 bits for |sapType|, and 28 bits\n    // for |sapDelta|.\n    referenceIndex += 4;\n\n    // skip to next ref\n    index = referenceIndex;\n  }\n\n  return {\n    earliestPresentationTime,\n    timescale,\n    version,\n    referencesCount,\n    references,\n  };\n}\n\n/**\n * Parses an MP4 initialization segment and extracts stream type and\n * timescale values for any declared tracks. Timescale values indicate the\n * number of clock ticks per second to assume for time-based values\n * elsewhere in the MP4.\n *\n * To determine the start time of an MP4, you need two pieces of\n * information: the timescale unit and the earliest base media decode\n * time. Multiple timescales can be specified within an MP4 but the\n * base media decode time is always expressed in the timescale from\n * the media header box for the track:\n * ```\n * moov > trak > mdia > mdhd.timescale\n * moov > trak > mdia > hdlr\n * ```\n * @param initSegment the bytes of the init segment\n * @returns a hash of track type to timescale values or null if\n * the init segment is malformed.\n */\n\nexport interface InitDataTrack {\n  timescale: number;\n  id: number;\n  codec: string;\n}\n\ntype HdlrType = ElementaryStreamTypes.AUDIO | ElementaryStreamTypes.VIDEO;\n\nexport interface InitData extends Array<any> {\n  [index: number]:\n    | {\n        timescale: number;\n        type: HdlrType;\n        default?: {\n          duration: number;\n          flags: number;\n        };\n      }\n    | undefined;\n  audio?: InitDataTrack;\n  video?: InitDataTrack;\n  caption?: InitDataTrack;\n}\n\nexport function parseInitSegment(initSegment: Uint8Array): InitData {\n  const result: InitData = [];\n  const traks = findBox(initSegment, ['moov', 'trak']);\n  for (let i = 0; i < traks.length; i++) {\n    const trak = traks[i];\n    const tkhd = findBox(trak, ['tkhd'])[0];\n    if (tkhd) {\n      let version = tkhd[0];\n      let index = version === 0 ? 12 : 20;\n      const trackId = readUint32(tkhd, index);\n      const mdhd = findBox(trak, ['mdia', 'mdhd'])[0];\n      if (mdhd) {\n        version = mdhd[0];\n        index = version === 0 ? 12 : 20;\n        const timescale = readUint32(mdhd, index);\n        const hdlr = findBox(trak, ['mdia', 'hdlr'])[0];\n        if (hdlr) {\n          const hdlrType = bin2str(hdlr.subarray(8, 12));\n          const type: HdlrType | undefined = {\n            soun: ElementaryStreamTypes.AUDIO as const,\n            vide: ElementaryStreamTypes.VIDEO as const,\n          }[hdlrType];\n          if (type) {\n            // Parse codec details\n            const stsd = findBox(trak, ['mdia', 'minf', 'stbl', 'stsd'])[0];\n            let codec;\n            if (stsd) {\n              codec = bin2str(stsd.subarray(12, 16));\n              // TODO: Parse codec details to be able to build MIME type.\n              // stsd.start += 8;\n              // const codecBox = findBox(stsd, [codec])[0];\n              // if (codecBox) {\n              //   TODO: Codec parsing support for avc1, mp4a, hevc, av01...\n              // }\n            }\n            result[trackId] = { timescale, type };\n            result[type] = { timescale, id: trackId, codec };\n          }\n        }\n      }\n    }\n  }\n\n  const trex = findBox(initSegment, ['moov', 'mvex', 'trex']);\n  trex.forEach((trex) => {\n    const trackId = readUint32(trex, 4);\n    const track = result[trackId];\n    if (track) {\n      track.default = {\n        duration: readUint32(trex, 12),\n        flags: readUint32(trex, 20),\n      };\n    }\n  });\n\n  return result;\n}\n\nexport function patchEncyptionData(\n  initSegment: Uint8Array | undefined,\n  decryptdata: DecryptData | null\n): Uint8Array | undefined {\n  if (!initSegment || !decryptdata) {\n    return initSegment;\n  }\n  const keyId = decryptdata.keyId;\n  if (keyId && decryptdata.isCommonEncryption) {\n    const traks = findBox(initSegment, ['moov', 'trak']);\n    traks.forEach((trak) => {\n      const stsd = findBox(trak, ['mdia', 'minf', 'stbl', 'stsd'])[0];\n\n      // skip the sample entry count\n      const sampleEntries = stsd.subarray(8);\n      let encBoxes = findBox(sampleEntries, ['enca']);\n      const isAudio = encBoxes.length > 0;\n      if (!isAudio) {\n        encBoxes = findBox(sampleEntries, ['encv']);\n      }\n      encBoxes.forEach((enc) => {\n        const encBoxChildren = isAudio ? enc.subarray(28) : enc.subarray(78);\n        const sinfBoxes = findBox(encBoxChildren, ['sinf']);\n        sinfBoxes.forEach((sinf) => {\n          const tenc = parseSinf(sinf);\n          if (tenc) {\n            // Look for default key id (keyID offset is always 8 within the tenc box):\n            const tencKeyId = tenc.subarray(8, 24);\n            if (!tencKeyId.some((b) => b !== 0)) {\n              logger.log(\n                `[eme] Patching keyId in 'enc${\n                  isAudio ? 'a' : 'v'\n                }>sinf>>tenc' box: ${Hex.hexDump(tencKeyId)} -> ${Hex.hexDump(\n                  keyId\n                )}`\n              );\n              tenc.set(keyId, 8);\n            }\n          }\n        });\n      });\n    });\n  }\n\n  return initSegment;\n}\n\nexport function parseSinf(sinf: Uint8Array): Uint8Array | null {\n  const schm = findBox(sinf, ['schm'])[0];\n  if (schm) {\n    const scheme = bin2str(schm.subarray(4, 8));\n    if (scheme === 'cbcs' || scheme === 'cenc') {\n      return findBox(sinf, ['schi', 'tenc'])[0];\n    }\n  }\n  logger.error(`[eme] missing 'schm' box`);\n  return null;\n}\n\n/**\n * Determine the base media decode start time, in seconds, for an MP4\n * fragment. If multiple fragments are specified, the earliest time is\n * returned.\n *\n * The base media decode time can be parsed from track fragment\n * metadata:\n * ```\n * moof > traf > tfdt.baseMediaDecodeTime\n * ```\n * It requires the timescale value from the mdhd to interpret.\n *\n * @param initData - a hash of track type to timescale values\n * @param fmp4 - the bytes of the mp4 fragment\n * @returns the earliest base media decode start time for the\n * fragment, in seconds\n */\nexport function getStartDTS(\n  initData: InitData,\n  fmp4: Uint8Array\n): number | null {\n  // we need info from two children of each track fragment box\n  return findBox(fmp4, ['moof', 'traf']).reduce(\n    (result: number | null, traf) => {\n      const tfdt = findBox(traf, ['tfdt'])[0];\n      const version = tfdt[0];\n      const start = findBox(traf, ['tfhd']).reduce(\n        (result: number | null, tfhd) => {\n          // get the track id from the tfhd\n          const id = readUint32(tfhd, 4);\n          const track = initData[id];\n          if (track) {\n            let baseTime = readUint32(tfdt, 4);\n            if (version === 1) {\n              // If value is too large, assume signed 64-bit. Negative track fragment decode times are invalid, but they exist in the wild.\n              // This prevents large values from being used for initPTS, which can cause playlist sync issues.\n              // https://github.com/video-dev/hls.js/issues/5303\n              if (baseTime === UINT32_MAX) {\n                logger.warn(\n                  `[mp4-demuxer]: Ignoring assumed invalid signed 64-bit track fragment decode time`\n                );\n                return result;\n              }\n              baseTime *= UINT32_MAX + 1;\n              baseTime += readUint32(tfdt, 8);\n            }\n            // assume a 90kHz clock if no timescale was specified\n            const scale = track.timescale || 90e3;\n            // convert base time to seconds\n            const startTime = baseTime / scale;\n            if (\n              isFinite(startTime) &&\n              (result === null || startTime < result)\n            ) {\n              return startTime;\n            }\n          }\n          return result;\n        },\n        null\n      );\n      if (\n        start !== null &&\n        isFinite(start) &&\n        (result === null || start < result)\n      ) {\n        return start;\n      }\n      return result;\n    },\n    null\n  );\n}\n\n/*\n  For Reference:\n  aligned(8) class TrackFragmentHeaderBox\n           extends FullBox(‘tfhd’, 0, tf_flags){\n     unsigned int(32)  track_ID;\n     // all the following are optional fields\n     unsigned int(64)  base_data_offset;\n     unsigned int(32)  sample_description_index;\n     unsigned int(32)  default_sample_duration;\n     unsigned int(32)  default_sample_size;\n     unsigned int(32)  default_sample_flags\n  }\n */\nexport function getDuration(data: Uint8Array, initData: InitData) {\n  let rawDuration = 0;\n  let videoDuration = 0;\n  let audioDuration = 0;\n  const trafs = findBox(data, ['moof', 'traf']);\n  for (let i = 0; i < trafs.length; i++) {\n    const traf = trafs[i];\n    // There is only one tfhd & trun per traf\n    // This is true for CMAF style content, and we should perhaps check the ftyp\n    // and only look for a single trun then, but for ISOBMFF we should check\n    // for multiple track runs.\n    const tfhd = findBox(traf, ['tfhd'])[0];\n    // get the track id from the tfhd\n    const id = readUint32(tfhd, 4);\n    const track = initData[id];\n    if (!track) {\n      continue;\n    }\n    const trackDefault = track.default;\n    const tfhdFlags = readUint32(tfhd, 0) | trackDefault?.flags!;\n    let sampleDuration: number | undefined = trackDefault?.duration;\n    if (tfhdFlags & 0x000008) {\n      // 0x000008 indicates the presence of the default_sample_duration field\n      if (tfhdFlags & 0x000002) {\n        // 0x000002 indicates the presence of the sample_description_index field, which precedes default_sample_duration\n        // If present, the default_sample_duration exists at byte offset 12\n        sampleDuration = readUint32(tfhd, 12);\n      } else {\n        // Otherwise, the duration is at byte offset 8\n        sampleDuration = readUint32(tfhd, 8);\n      }\n    }\n    // assume a 90kHz clock if no timescale was specified\n    const timescale = track.timescale || 90e3;\n    const truns = findBox(traf, ['trun']);\n    for (let j = 0; j < truns.length; j++) {\n      rawDuration = computeRawDurationFromSamples(truns[j]);\n      if (!rawDuration && sampleDuration) {\n        const sampleCount = readUint32(truns[j], 4);\n        rawDuration = sampleDuration * sampleCount;\n      }\n      if (track.type === ElementaryStreamTypes.VIDEO) {\n        videoDuration += rawDuration / timescale;\n      } else if (track.type === ElementaryStreamTypes.AUDIO) {\n        audioDuration += rawDuration / timescale;\n      }\n    }\n  }\n  if (videoDuration === 0 && audioDuration === 0) {\n    // If duration samples are not available in the traf use sidx subsegment_duration\n    let sidxDuration = 0;\n    const sidxs = findBox(data, ['sidx']);\n    for (let i = 0; i < sidxs.length; i++) {\n      const sidx = parseSegmentIndex(sidxs[i]);\n      if (sidx?.references) {\n        sidxDuration += sidx.references.reduce(\n          (dur, ref) => dur + ref.info.duration || 0,\n          0\n        );\n      }\n    }\n\n    return sidxDuration;\n  }\n  if (videoDuration) {\n    return videoDuration;\n  }\n  return audioDuration;\n}\n\n/*\n  For Reference:\n  aligned(8) class TrackRunBox\n           extends FullBox(‘trun’, version, tr_flags) {\n     unsigned int(32)  sample_count;\n     // the following are optional fields\n     signed int(32) data_offset;\n     unsigned int(32)  first_sample_flags;\n     // all fields in the following array are optional\n     {\n        unsigned int(32)  sample_duration;\n        unsigned int(32)  sample_size;\n        unsigned int(32)  sample_flags\n        if (version == 0)\n           { unsigned int(32)\n        else\n           { signed int(32)\n     }[ sample_count ]\n  }\n */\nexport function computeRawDurationFromSamples(trun): number {\n  const flags = readUint32(trun, 0);\n  // Flags are at offset 0, non-optional sample_count is at offset 4. Therefore we start 8 bytes in.\n  // Each field is an int32, which is 4 bytes\n  let offset = 8;\n  // data-offset-present flag\n  if (flags & 0x000001) {\n    offset += 4;\n  }\n  // first-sample-flags-present flag\n  if (flags & 0x000004) {\n    offset += 4;\n  }\n\n  let duration = 0;\n  const sampleCount = readUint32(trun, 4);\n  for (let i = 0; i < sampleCount; i++) {\n    // sample-duration-present flag\n    if (flags & 0x000100) {\n      const sampleDuration = readUint32(trun, offset);\n      duration += sampleDuration;\n      offset += 4;\n    }\n    // sample-size-present flag\n    if (flags & 0x000200) {\n      offset += 4;\n    }\n    // sample-flags-present flag\n    if (flags & 0x000400) {\n      offset += 4;\n    }\n    // sample-composition-time-offsets-present flag\n    if (flags & 0x000800) {\n      offset += 4;\n    }\n  }\n  return duration;\n}\n\nexport function offsetStartDTS(\n  initData: InitData,\n  fmp4: Uint8Array,\n  timeOffset: number\n) {\n  findBox(fmp4, ['moof', 'traf']).forEach((traf) => {\n    findBox(traf, ['tfhd']).forEach((tfhd) => {\n      // get the track id from the tfhd\n      const id = readUint32(tfhd, 4);\n      const track = initData[id];\n      if (!track) {\n        return;\n      }\n      // assume a 90kHz clock if no timescale was specified\n      const timescale = track.timescale || 90e3;\n      // get the base media decode time from the tfdt\n      findBox(traf, ['tfdt']).forEach((tfdt) => {\n        const version = tfdt[0];\n        let baseMediaDecodeTime = readUint32(tfdt, 4);\n\n        if (version === 0) {\n          baseMediaDecodeTime -= timeOffset * timescale;\n          baseMediaDecodeTime = Math.max(baseMediaDecodeTime, 0);\n          writeUint32(tfdt, 4, baseMediaDecodeTime);\n        } else {\n          baseMediaDecodeTime *= Math.pow(2, 32);\n          baseMediaDecodeTime += readUint32(tfdt, 8);\n          baseMediaDecodeTime -= timeOffset * timescale;\n          baseMediaDecodeTime = Math.max(baseMediaDecodeTime, 0);\n          const upper = Math.floor(baseMediaDecodeTime / (UINT32_MAX + 1));\n          const lower = Math.floor(baseMediaDecodeTime % (UINT32_MAX + 1));\n          writeUint32(tfdt, 4, upper);\n          writeUint32(tfdt, 8, lower);\n        }\n      });\n    });\n  });\n}\n\n// TODO: Check if the last moof+mdat pair is part of the valid range\nexport function segmentValidRange(data: Uint8Array): SegmentedRange {\n  const segmentedRange: SegmentedRange = {\n    valid: null,\n    remainder: null,\n  };\n\n  const moofs = findBox(data, ['moof']);\n  if (!moofs) {\n    return segmentedRange;\n  } else if (moofs.length < 2) {\n    segmentedRange.remainder = data;\n    return segmentedRange;\n  }\n  const last = moofs[moofs.length - 1];\n  // Offset by 8 bytes; findBox offsets the start by as much\n  segmentedRange.valid = sliceUint8(data, 0, last.byteOffset - 8);\n  segmentedRange.remainder = sliceUint8(data, last.byteOffset - 8);\n  return segmentedRange;\n}\n\nexport interface SegmentedRange {\n  valid: Uint8Array | null;\n  remainder: Uint8Array | null;\n}\n\nexport function appendUint8Array(\n  data1: Uint8Array,\n  data2: Uint8Array\n): Uint8Array {\n  const temp = new Uint8Array(data1.length + data2.length);\n  temp.set(data1);\n  temp.set(data2, data1.length);\n\n  return temp;\n}\n\nexport interface IEmsgParsingData {\n  schemeIdUri: string;\n  value: string;\n  timeScale: number;\n  presentationTimeDelta?: number;\n  presentationTime?: number;\n  eventDuration: number;\n  id: number;\n  payload: Uint8Array;\n}\n\nexport function parseSamples(\n  timeOffset: number,\n  track: PassthroughTrack\n): UserdataSample[] {\n  const seiSamples = [] as UserdataSample[];\n  const videoData = track.samples;\n  const timescale = track.timescale;\n  const trackId = track.id;\n  let isHEVCFlavor = false;\n\n  const moofs = findBox(videoData, ['moof']);\n  moofs.map((moof) => {\n    const moofOffset = moof.byteOffset - 8;\n    const trafs = findBox(moof, ['traf']);\n    trafs.map((traf) => {\n      // get the base media decode time from the tfdt\n      const baseTime = findBox(traf, ['tfdt']).map((tfdt) => {\n        const version = tfdt[0];\n        let result = readUint32(tfdt, 4);\n        if (version === 1) {\n          result *= Math.pow(2, 32);\n          result += readUint32(tfdt, 8);\n        }\n        return result / timescale;\n      })[0];\n\n      if (baseTime !== undefined) {\n        timeOffset = baseTime;\n      }\n\n      return findBox(traf, ['tfhd']).map((tfhd) => {\n        const id = readUint32(tfhd, 4);\n        const tfhdFlags = readUint32(tfhd, 0) & 0xffffff;\n        const baseDataOffsetPresent = (tfhdFlags & 0x000001) !== 0;\n        const sampleDescriptionIndexPresent = (tfhdFlags & 0x000002) !== 0;\n        const defaultSampleDurationPresent = (tfhdFlags & 0x000008) !== 0;\n        let defaultSampleDuration = 0;\n        const defaultSampleSizePresent = (tfhdFlags & 0x000010) !== 0;\n        let defaultSampleSize = 0;\n        const defaultSampleFlagsPresent = (tfhdFlags & 0x000020) !== 0;\n        let tfhdOffset = 8;\n\n        if (id === trackId) {\n          if (baseDataOffsetPresent) {\n            tfhdOffset += 8;\n          }\n          if (sampleDescriptionIndexPresent) {\n            tfhdOffset += 4;\n          }\n          if (defaultSampleDurationPresent) {\n            defaultSampleDuration = readUint32(tfhd, tfhdOffset);\n            tfhdOffset += 4;\n          }\n          if (defaultSampleSizePresent) {\n            defaultSampleSize = readUint32(tfhd, tfhdOffset);\n            tfhdOffset += 4;\n          }\n          if (defaultSampleFlagsPresent) {\n            tfhdOffset += 4;\n          }\n          if (track.type === 'video') {\n            isHEVCFlavor = isHEVC(track.codec);\n          }\n\n          findBox(traf, ['trun']).map((trun) => {\n            const version = trun[0];\n            const flags = readUint32(trun, 0) & 0xffffff;\n            const dataOffsetPresent = (flags & 0x000001) !== 0;\n            let dataOffset = 0;\n            const firstSampleFlagsPresent = (flags & 0x000004) !== 0;\n            const sampleDurationPresent = (flags & 0x000100) !== 0;\n            let sampleDuration = 0;\n            const sampleSizePresent = (flags & 0x000200) !== 0;\n            let sampleSize = 0;\n            const sampleFlagsPresent = (flags & 0x000400) !== 0;\n            const sampleCompositionOffsetsPresent = (flags & 0x000800) !== 0;\n            let compositionOffset = 0;\n            const sampleCount = readUint32(trun, 4);\n            let trunOffset = 8; // past version, flags, and sample count\n\n            if (dataOffsetPresent) {\n              dataOffset = readUint32(trun, trunOffset);\n              trunOffset += 4;\n            }\n            if (firstSampleFlagsPresent) {\n              trunOffset += 4;\n            }\n\n            let sampleOffset = dataOffset + moofOffset;\n\n            for (let ix = 0; ix < sampleCount; ix++) {\n              if (sampleDurationPresent) {\n                sampleDuration = readUint32(trun, trunOffset);\n                trunOffset += 4;\n              } else {\n                sampleDuration = defaultSampleDuration;\n              }\n              if (sampleSizePresent) {\n                sampleSize = readUint32(trun, trunOffset);\n                trunOffset += 4;\n              } else {\n                sampleSize = defaultSampleSize;\n              }\n              if (sampleFlagsPresent) {\n                trunOffset += 4;\n              }\n              if (sampleCompositionOffsetsPresent) {\n                if (version === 0) {\n                  compositionOffset = readUint32(trun, trunOffset);\n                } else {\n                  compositionOffset = readSint32(trun, trunOffset);\n                }\n                trunOffset += 4;\n              }\n              if (track.type === ElementaryStreamTypes.VIDEO) {\n                let naluTotalSize = 0;\n                while (naluTotalSize < sampleSize) {\n                  const naluSize = readUint32(videoData, sampleOffset);\n                  sampleOffset += 4;\n                  if (isSEIMessage(isHEVCFlavor, videoData[sampleOffset])) {\n                    const data = videoData.subarray(\n                      sampleOffset,\n                      sampleOffset + naluSize\n                    );\n                    parseSEIMessageFromNALu(\n                      data,\n                      isHEVCFlavor ? 2 : 1,\n                      timeOffset + compositionOffset / timescale,\n                      seiSamples\n                    );\n                  }\n                  sampleOffset += naluSize;\n                  naluTotalSize += naluSize + 4;\n                }\n              }\n\n              timeOffset += sampleDuration / timescale;\n            }\n          });\n        }\n      });\n    });\n  });\n  return seiSamples;\n}\n\nfunction isHEVC(codec: string) {\n  if (!codec) {\n    return false;\n  }\n  const delimit = codec.indexOf('.');\n  const baseCodec = delimit < 0 ? codec : codec.substring(0, delimit);\n  return (\n    baseCodec === 'hvc1' ||\n    baseCodec === 'hev1' ||\n    // Dolby Vision\n    baseCodec === 'dvh1' ||\n    baseCodec === 'dvhe'\n  );\n}\n\nfunction isSEIMessage(isHEVCFlavor: boolean, naluHeader: number) {\n  if (isHEVCFlavor) {\n    const naluType = (naluHeader >> 1) & 0x3f;\n    return naluType === 39 || naluType === 40;\n  } else {\n    const naluType = naluHeader & 0x1f;\n    return naluType === 6;\n  }\n}\n\nexport function parseSEIMessageFromNALu(\n  unescapedData: Uint8Array,\n  headerSize: number,\n  pts: number,\n  samples: UserdataSample[]\n) {\n  const data = discardEPB(unescapedData);\n  let seiPtr = 0;\n  // skip nal header\n  seiPtr += headerSize;\n  let payloadType = 0;\n  let payloadSize = 0;\n  let endOfCaptions = false;\n  let b = 0;\n\n  while (seiPtr < data.length) {\n    payloadType = 0;\n    do {\n      if (seiPtr >= data.length) {\n        break;\n      }\n      b = data[seiPtr++];\n      payloadType += b;\n    } while (b === 0xff);\n\n    // Parse payload size.\n    payloadSize = 0;\n    do {\n      if (seiPtr >= data.length) {\n        break;\n      }\n      b = data[seiPtr++];\n      payloadSize += b;\n    } while (b === 0xff);\n\n    const leftOver = data.length - seiPtr;\n\n    if (!endOfCaptions && payloadType === 4 && seiPtr < data.length) {\n      endOfCaptions = true;\n\n      const countryCode = data[seiPtr++];\n      if (countryCode === 181) {\n        const providerCode = readUint16(data, seiPtr);\n        seiPtr += 2;\n\n        if (providerCode === 49) {\n          const userStructure = readUint32(data, seiPtr);\n          seiPtr += 4;\n\n          if (userStructure === 0x47413934) {\n            const userDataType = data[seiPtr++];\n\n            // Raw CEA-608 bytes wrapped in CEA-708 packet\n            if (userDataType === 3) {\n              const firstByte = data[seiPtr++];\n              const totalCCs = 0x1f & firstByte;\n              const enabled = 0x40 & firstByte;\n              const totalBytes = enabled ? 2 + totalCCs * 3 : 0;\n              const byteArray = new Uint8Array(totalBytes);\n              if (enabled) {\n                byteArray[0] = firstByte;\n                for (let i = 1; i < totalBytes; i++) {\n                  byteArray[i] = data[seiPtr++];\n                }\n              }\n\n              samples.push({\n                type: userDataType,\n                payloadType,\n                pts,\n                bytes: byteArray,\n              });\n            }\n          }\n        }\n      }\n    } else if (payloadType === 5 && payloadSize < leftOver) {\n      endOfCaptions = true;\n\n      if (payloadSize > 16) {\n        const uuidStrArray: Array<string> = [];\n        for (let i = 0; i < 16; i++) {\n          const b = data[seiPtr++].toString(16);\n          uuidStrArray.push(b.length == 1 ? '0' + b : b);\n\n          if (i === 3 || i === 5 || i === 7 || i === 9) {\n            uuidStrArray.push('-');\n          }\n        }\n        const length = payloadSize - 16;\n        const userDataBytes = new Uint8Array(length);\n        for (let i = 0; i < length; i++) {\n          userDataBytes[i] = data[seiPtr++];\n        }\n\n        samples.push({\n          payloadType,\n          pts,\n          uuid: uuidStrArray.join(''),\n          userData: utf8ArrayToStr(userDataBytes),\n          userDataBytes,\n        });\n      }\n    } else if (payloadSize < leftOver) {\n      seiPtr += payloadSize;\n    } else if (payloadSize > leftOver) {\n      break;\n    }\n  }\n}\n\n/**\n * remove Emulation Prevention bytes from a RBSP\n */\nexport function discardEPB(data: Uint8Array): Uint8Array {\n  const length = data.byteLength;\n  const EPBPositions = [] as Array<number>;\n  let i = 1;\n\n  // Find all `Emulation Prevention Bytes`\n  while (i < length - 2) {\n    if (data[i] === 0 && data[i + 1] === 0 && data[i + 2] === 0x03) {\n      EPBPositions.push(i + 2);\n      i += 2;\n    } else {\n      i++;\n    }\n  }\n\n  // If no Emulation Prevention Bytes were found just return the original\n  // array\n  if (EPBPositions.length === 0) {\n    return data;\n  }\n\n  // Create a new array to hold the NAL unit data\n  const newLength = length - EPBPositions.length;\n  const newData = new Uint8Array(newLength);\n  let sourceIndex = 0;\n\n  for (i = 0; i < newLength; sourceIndex++, i++) {\n    if (sourceIndex === EPBPositions[0]) {\n      // Skip this byte\n      sourceIndex++;\n      // Remove this position index\n      EPBPositions.shift();\n    }\n    newData[i] = data[sourceIndex];\n  }\n  return newData;\n}\n\nexport function parseEmsg(data: Uint8Array): IEmsgParsingData {\n  const version = data[0];\n  let schemeIdUri: string = '';\n  let value: string = '';\n  let timeScale: number = 0;\n  let presentationTimeDelta: number = 0;\n  let presentationTime: number = 0;\n  let eventDuration: number = 0;\n  let id: number = 0;\n  let offset: number = 0;\n\n  if (version === 0) {\n    while (bin2str(data.subarray(offset, offset + 1)) !== '\\0') {\n      schemeIdUri += bin2str(data.subarray(offset, offset + 1));\n      offset += 1;\n    }\n\n    schemeIdUri += bin2str(data.subarray(offset, offset + 1));\n    offset += 1;\n\n    while (bin2str(data.subarray(offset, offset + 1)) !== '\\0') {\n      value += bin2str(data.subarray(offset, offset + 1));\n      offset += 1;\n    }\n\n    value += bin2str(data.subarray(offset, offset + 1));\n    offset += 1;\n\n    timeScale = readUint32(data, 12);\n    presentationTimeDelta = readUint32(data, 16);\n    eventDuration = readUint32(data, 20);\n    id = readUint32(data, 24);\n    offset = 28;\n  } else if (version === 1) {\n    offset += 4;\n    timeScale = readUint32(data, offset);\n    offset += 4;\n    const leftPresentationTime = readUint32(data, offset);\n    offset += 4;\n    const rightPresentationTime = readUint32(data, offset);\n    offset += 4;\n    presentationTime = 2 ** 32 * leftPresentationTime + rightPresentationTime;\n    if (!Number.isSafeInteger(presentationTime)) {\n      presentationTime = Number.MAX_SAFE_INTEGER;\n      logger.warn(\n        'Presentation time exceeds safe integer limit and wrapped to max safe integer in parsing emsg box'\n      );\n    }\n\n    eventDuration = readUint32(data, offset);\n    offset += 4;\n    id = readUint32(data, offset);\n    offset += 4;\n\n    while (bin2str(data.subarray(offset, offset + 1)) !== '\\0') {\n      schemeIdUri += bin2str(data.subarray(offset, offset + 1));\n      offset += 1;\n    }\n\n    schemeIdUri += bin2str(data.subarray(offset, offset + 1));\n    offset += 1;\n\n    while (bin2str(data.subarray(offset, offset + 1)) !== '\\0') {\n      value += bin2str(data.subarray(offset, offset + 1));\n      offset += 1;\n    }\n\n    value += bin2str(data.subarray(offset, offset + 1));\n    offset += 1;\n  }\n  const payload = data.subarray(offset, data.byteLength);\n\n  return {\n    schemeIdUri,\n    value,\n    timeScale,\n    presentationTime,\n    presentationTimeDelta,\n    eventDuration,\n    id,\n    payload,\n  };\n}\n\nexport function mp4Box(type: ArrayLike<number>, ...payload: Uint8Array[]) {\n  const len = payload.length;\n  let size = 8;\n  let i = len;\n  while (i--) {\n    size += payload[i].byteLength;\n  }\n  const result = new Uint8Array(size);\n  result[0] = (size >> 24) & 0xff;\n  result[1] = (size >> 16) & 0xff;\n  result[2] = (size >> 8) & 0xff;\n  result[3] = size & 0xff;\n  result.set(type, 4);\n  for (i = 0, size = 8; i < len; i++) {\n    result.set(payload[i], size);\n    size += payload[i].byteLength;\n  }\n  return result;\n}\n\nexport function mp4pssh(\n  systemId: Uint8Array,\n  keyids: Array<Uint8Array> | null,\n  data: Uint8Array\n) {\n  if (systemId.byteLength !== 16) {\n    throw new RangeError('Invalid system id');\n  }\n  let version;\n  let kids;\n  if (keyids) {\n    version = 1;\n    kids = new Uint8Array(keyids.length * 16);\n    for (let ix = 0; ix < keyids.length; ix++) {\n      const k = keyids[ix]; // uint8array\n      if (k.byteLength !== 16) {\n        throw new RangeError('Invalid key');\n      }\n      kids.set(k, ix * 16);\n    }\n  } else {\n    version = 0;\n    kids = new Uint8Array();\n  }\n  let kidCount;\n  if (version > 0) {\n    kidCount = new Uint8Array(4);\n    if (keyids!.length > 0) {\n      new DataView(kidCount.buffer).setUint32(0, keyids!.length, false);\n    }\n  } else {\n    kidCount = new Uint8Array();\n  }\n  const dataSize = new Uint8Array(4);\n  if (data && data.byteLength > 0) {\n    new DataView(dataSize.buffer).setUint32(0, data.byteLength, false);\n  }\n  return mp4Box(\n    [112, 115, 115, 104],\n    new Uint8Array([\n      version,\n      0x00,\n      0x00,\n      0x00, // Flags\n    ]),\n    systemId, // 16 bytes\n    kidCount,\n    kids,\n    dataSize,\n    data || new Uint8Array()\n  );\n}\n\nexport function parsePssh(initData: ArrayBuffer) {\n  if (!(initData instanceof ArrayBuffer) || initData.byteLength < 32) {\n    return null;\n  }\n  const result = {\n    version: 0,\n    systemId: '',\n    kids: null as null | Uint8Array[],\n    data: null as null | Uint8Array,\n  };\n  const view = new DataView(initData);\n  const boxSize = view.getUint32(0);\n  if (initData.byteLength !== boxSize && boxSize > 44) {\n    return null;\n  }\n  const type = view.getUint32(4);\n  if (type !== 0x70737368) {\n    return null;\n  }\n  result.version = view.getUint32(8) >>> 24;\n  if (result.version > 1) {\n    return null;\n  }\n  result.systemId = Hex.hexDump(new Uint8Array(initData, 12, 16));\n  const dataSizeOrKidCount = view.getUint32(28);\n  if (result.version === 0) {\n    if (boxSize - 32 < dataSizeOrKidCount) {\n      return null;\n    }\n    result.data = new Uint8Array(initData, 32, dataSizeOrKidCount);\n  } else if (result.version === 1) {\n    result.kids = [];\n    for (let i = 0; i < dataSizeOrKidCount; i++) {\n      result.kids.push(new Uint8Array(initData, 32 + i * 16, 16));\n    }\n  }\n  return result;\n}\n","import {\n  changeEndianness,\n  convertDataUriToArrayBytes,\n} from '../utils/keysystem-util';\nimport { KeySystemFormats } from '../utils/mediakeys-helper';\nimport { mp4pssh } from '../utils/mp4-tools';\nimport { logger } from '../utils/logger';\nimport { base64Decode } from '../utils/numeric-encoding-utils';\n\nlet keyUriToKeyIdMap: { [uri: string]: Uint8Array } = {};\n\nexport interface DecryptData {\n  uri: string;\n  method: string;\n  keyFormat: string;\n  keyFormatVersions: number[];\n  iv: Uint8Array | null;\n  key: Uint8Array | null;\n  keyId: Uint8Array | null;\n  pssh: Uint8Array | null;\n  encrypted: boolean;\n  isCommonEncryption: boolean;\n}\n\nexport class LevelKey implements DecryptData {\n  public readonly uri: string;\n  public readonly method: string;\n  public readonly keyFormat: string;\n  public readonly keyFormatVersions: number[];\n  public readonly encrypted: boolean;\n  public readonly isCommonEncryption: boolean;\n  public iv: Uint8Array | null = null;\n  public key: Uint8Array | null = null;\n  public keyId: Uint8Array | null = null;\n  public pssh: Uint8Array | null = null;\n\n  static clearKeyUriToKeyIdMap() {\n    keyUriToKeyIdMap = {};\n  }\n\n  constructor(\n    method: string,\n    uri: string,\n    format: string,\n    formatversions: number[] = [1],\n    iv: Uint8Array | null = null\n  ) {\n    this.method = method;\n    this.uri = uri;\n    this.keyFormat = format;\n    this.keyFormatVersions = formatversions;\n    this.iv = iv;\n    this.encrypted = method ? method !== 'NONE' : false;\n    this.isCommonEncryption = this.encrypted && method !== 'AES-128';\n  }\n\n  public isSupported(): boolean {\n    // If it's Segment encryption or No encryption, just select that key system\n    if (this.method) {\n      if (this.method === 'AES-128' || this.method === 'NONE') {\n        return true;\n      }\n      if (this.keyFormat === 'identity') {\n        // Maintain support for clear SAMPLE-AES with MPEG-3 TS\n        return this.method === 'SAMPLE-AES';\n      } else if (__USE_EME_DRM__) {\n        switch (this.keyFormat) {\n          case KeySystemFormats.FAIRPLAY:\n          case KeySystemFormats.WIDEVINE:\n          case KeySystemFormats.PLAYREADY:\n          case KeySystemFormats.CLEARKEY:\n            return (\n              [\n                'ISO-23001-7',\n                'SAMPLE-AES',\n                'SAMPLE-AES-CENC',\n                'SAMPLE-AES-CTR',\n              ].indexOf(this.method) !== -1\n            );\n        }\n      }\n    }\n    return false;\n  }\n\n  public getDecryptData(sn: number | 'initSegment'): LevelKey | null {\n    if (!this.encrypted || !this.uri) {\n      return null;\n    }\n\n    if (this.method === 'AES-128' && this.uri && !this.iv) {\n      if (typeof sn !== 'number') {\n        // We are fetching decryption data for a initialization segment\n        // If the segment was encrypted with AES-128\n        // It must have an IV defined. We cannot substitute the Segment Number in.\n        if (this.method === 'AES-128' && !this.iv) {\n          logger.warn(\n            `missing IV for initialization segment with method=\"${this.method}\" - compliance issue`\n          );\n        }\n        // Explicitly set sn to resulting value from implicit conversions 'initSegment' values for IV generation.\n        sn = 0;\n      }\n      const iv = createInitializationVector(sn);\n      const decryptdata = new LevelKey(\n        this.method,\n        this.uri,\n        'identity',\n        this.keyFormatVersions,\n        iv\n      );\n      return decryptdata;\n    }\n\n    if (!__USE_EME_DRM__) {\n      return this;\n    }\n\n    // Initialize keyId if possible\n    const keyBytes = convertDataUriToArrayBytes(this.uri);\n    if (keyBytes) {\n      switch (this.keyFormat) {\n        case KeySystemFormats.WIDEVINE:\n          this.pssh = keyBytes;\n          // In case of widevine keyID is embedded in PSSH box. Read Key ID.\n          if (keyBytes.length >= 22) {\n            this.keyId = keyBytes.subarray(\n              keyBytes.length - 22,\n              keyBytes.length - 6\n            );\n          }\n          break;\n        case KeySystemFormats.PLAYREADY: {\n          const PlayReadyKeySystemUUID = new Uint8Array([\n            0x9a, 0x04, 0xf0, 0x79, 0x98, 0x40, 0x42, 0x86, 0xab, 0x92, 0xe6,\n            0x5b, 0xe0, 0x88, 0x5f, 0x95,\n          ]);\n\n          this.pssh = mp4pssh(PlayReadyKeySystemUUID, null, keyBytes);\n\n          const keyBytesUtf16 = new Uint16Array(\n            keyBytes.buffer,\n            keyBytes.byteOffset,\n            keyBytes.byteLength / 2\n          );\n          const keyByteStr = String.fromCharCode.apply(\n            null,\n            Array.from(keyBytesUtf16)\n          );\n\n          // Parse Playready WRMHeader XML\n          const xmlKeyBytes = keyByteStr.substring(\n            keyByteStr.indexOf('<'),\n            keyByteStr.length\n          );\n          const parser = new DOMParser();\n          const xmlDoc = parser.parseFromString(xmlKeyBytes, 'text/xml');\n          const keyData = xmlDoc.getElementsByTagName('KID')[0];\n          if (keyData) {\n            const keyId = keyData.childNodes[0]\n              ? keyData.childNodes[0].nodeValue\n              : keyData.getAttribute('VALUE');\n            if (keyId) {\n              const keyIdArray = base64Decode(keyId).subarray(0, 16);\n              // KID value in PRO is a base64-encoded little endian GUID interpretation of UUID\n              // KID value in ‘tenc’ is a big endian UUID GUID interpretation of UUID\n              changeEndianness(keyIdArray);\n              this.keyId = keyIdArray;\n            }\n          }\n          break;\n        }\n        default: {\n          let keydata = keyBytes.subarray(0, 16);\n          if (keydata.length !== 16) {\n            const padded = new Uint8Array(16);\n            padded.set(keydata, 16 - keydata.length);\n            keydata = padded;\n          }\n          this.keyId = keydata;\n          break;\n        }\n      }\n    }\n\n    // Default behavior: assign a new keyId for each uri\n    if (!this.keyId || this.keyId.byteLength !== 16) {\n      let keyId = keyUriToKeyIdMap[this.uri];\n      if (!keyId) {\n        const val =\n          Object.keys(keyUriToKeyIdMap).length % Number.MAX_SAFE_INTEGER;\n        keyId = new Uint8Array(16);\n        const dv = new DataView(keyId.buffer, 12, 4); // Just set the last 4 bytes\n        dv.setUint32(0, val);\n        keyUriToKeyIdMap[this.uri] = keyId;\n      }\n      this.keyId = keyId;\n    }\n\n    return this;\n  }\n}\n\nfunction createInitializationVector(segmentNumber: number): Uint8Array {\n  const uint8View = new Uint8Array(16);\n  for (let i = 12; i < 16; i++) {\n    uint8View[i] = (segmentNumber >> (8 * (15 - i))) & 0xff;\n  }\n  return uint8View;\n}\n","import type { AttrList } from './attr-list';\nimport type { ParsedMultivariantPlaylist } from '../loader/m3u8-parser';\nimport type { LevelDetails } from '../loader/level-details';\nimport type { VariableMap } from '../types/level';\n\nconst VARIABLE_REPLACEMENT_REGEX = /\\{\\$([a-zA-Z0-9-_]+)\\}/g;\n\nexport function hasVariableReferences(str: string): boolean {\n  return VARIABLE_REPLACEMENT_REGEX.test(str);\n}\n\nexport function substituteVariablesInAttributes(\n  parsed: Pick<\n    ParsedMultivariantPlaylist | LevelDetails,\n    'variableList' | 'hasVariableRefs' | 'playlistParsingError'\n  >,\n  attr: AttrList,\n  attributeNames: string[]\n) {\n  if (parsed.variableList !== null || parsed.hasVariableRefs) {\n    for (let i = attributeNames.length; i--; ) {\n      const name = attributeNames[i];\n      const value = attr[name];\n      if (value) {\n        attr[name] = substituteVariables(parsed, value);\n      }\n    }\n  }\n}\n\nexport function substituteVariables(\n  parsed: Pick<\n    ParsedMultivariantPlaylist | LevelDetails,\n    'variableList' | 'hasVariableRefs' | 'playlistParsingError'\n  >,\n  value: string\n): string {\n  if (parsed.variableList !== null || parsed.hasVariableRefs) {\n    const variableList = parsed.variableList;\n    return value.replace(\n      VARIABLE_REPLACEMENT_REGEX,\n      (variableReference: string) => {\n        const variableName = variableReference.substring(\n          2,\n          variableReference.length - 1\n        );\n        const variableValue = variableList?.[variableName];\n        if (variableValue === undefined) {\n          parsed.playlistParsingError ||= new Error(\n            `Missing preceding EXT-X-DEFINE tag for Variable Reference: \"${variableName}\"`\n          );\n          return variableReference;\n        }\n        return variableValue;\n      }\n    );\n  }\n  return value;\n}\n\nexport function addVariableDefinition(\n  parsed: Pick<\n    ParsedMultivariantPlaylist | LevelDetails,\n    'variableList' | 'playlistParsingError'\n  >,\n  attr: AttrList,\n  parentUrl: string\n) {\n  let variableList = parsed.variableList;\n  if (!variableList) {\n    parsed.variableList = variableList = {};\n  }\n  let NAME: string;\n  let VALUE;\n  if ('QUERYPARAM' in attr) {\n    NAME = attr.QUERYPARAM;\n    try {\n      const searchParams = new self.URL(parentUrl).searchParams;\n      if (searchParams.has(NAME)) {\n        VALUE = searchParams.get(NAME);\n      } else {\n        throw new Error(\n          `\"${NAME}\" does not match any query parameter in URI: \"${parentUrl}\"`\n        );\n      }\n    } catch (error) {\n      parsed.playlistParsingError ||= new Error(\n        `EXT-X-DEFINE QUERYPARAM: ${error.message}`\n      );\n    }\n  } else {\n    NAME = attr.NAME;\n    VALUE = attr.VALUE;\n  }\n  if (NAME in variableList) {\n    parsed.playlistParsingError ||= new Error(\n      `EXT-X-DEFINE duplicate Variable Name declarations: \"${NAME}\"`\n    );\n  } else {\n    variableList[NAME] = VALUE || '';\n  }\n}\n\nexport function importVariableDefinition(\n  parsed: Pick<\n    ParsedMultivariantPlaylist | LevelDetails,\n    'variableList' | 'playlistParsingError'\n  >,\n  attr: AttrList,\n  sourceVariableList: VariableMap | null\n) {\n  const IMPORT = attr.IMPORT;\n  if (sourceVariableList && IMPORT in sourceVariableList) {\n    let variableList = parsed.variableList;\n    if (!variableList) {\n      parsed.variableList = variableList = {};\n    }\n    variableList[IMPORT] = sourceVariableList[IMPORT];\n  } else {\n    parsed.playlistParsingError ||= new Error(\n      `EXT-X-DEFINE IMPORT attribute not found in Multivariant Playlist: \"${IMPORT}\"`\n    );\n  }\n}\n","/**\n * MediaSource helper\n */\n\nexport function getMediaSource(): typeof MediaSource | undefined {\n  if (typeof self === 'undefined') return undefined;\n  return self.MediaSource || ((self as any).WebKitMediaSource as MediaSource);\n}\n","import { getMediaSource } from './mediasource-helper';\n\n// from http://mp4ra.org/codecs.html\nconst sampleEntryCodesISO = {\n  audio: {\n    a3ds: true,\n    'ac-3': true,\n    'ac-4': true,\n    alac: true,\n    alaw: true,\n    dra1: true,\n    'dts+': true,\n    'dts-': true,\n    dtsc: true,\n    dtse: true,\n    dtsh: true,\n    'ec-3': true,\n    enca: true,\n    g719: true,\n    g726: true,\n    m4ae: true,\n    mha1: true,\n    mha2: true,\n    mhm1: true,\n    mhm2: true,\n    mlpa: true,\n    mp4a: true,\n    'raw ': true,\n    Opus: true,\n    opus: true, // browsers expect this to be lowercase despite MP4RA says 'Opus'\n    samr: true,\n    sawb: true,\n    sawp: true,\n    sevc: true,\n    sqcp: true,\n    ssmv: true,\n    twos: true,\n    ulaw: true,\n  },\n  video: {\n    avc1: true,\n    avc2: true,\n    avc3: true,\n    avc4: true,\n    avcp: true,\n    av01: true,\n    drac: true,\n    dva1: true,\n    dvav: true,\n    dvh1: true,\n    dvhe: true,\n    encv: true,\n    hev1: true,\n    hvc1: true,\n    mjp2: true,\n    mp4v: true,\n    mvc1: true,\n    mvc2: true,\n    mvc3: true,\n    mvc4: true,\n    resv: true,\n    rv60: true,\n    s263: true,\n    svc1: true,\n    svc2: true,\n    'vc-1': true,\n    vp08: true,\n    vp09: true,\n  },\n  text: {\n    stpp: true,\n    wvtt: true,\n  },\n};\n\nconst MediaSource = getMediaSource();\n\nexport type CodecType = 'audio' | 'video';\n\nexport function isCodecType(codec: string, type: CodecType): boolean {\n  const typeCodes = sampleEntryCodesISO[type];\n  return !!typeCodes && typeCodes[codec.slice(0, 4)] === true;\n}\n\nexport function isCodecSupportedInMp4(codec: string, type: CodecType): boolean {\n  return (\n    MediaSource?.isTypeSupported(`${type || 'video'}/mp4;codecs=\"${codec}\"`) ??\n    false\n  );\n}\n","import { buildAbsoluteURL } from 'url-toolkit';\nimport { DateRange } from './date-range';\nimport { Fragment, Part } from './fragment';\nimport { LevelDetails } from './level-details';\nimport { LevelKey } from './level-key';\nimport { AttrList } from '../utils/attr-list';\nimport { logger } from '../utils/logger';\nimport {\n  addVariableDefinition,\n  hasVariableReferences,\n  importVariableDefinition,\n  substituteVariables,\n  substituteVariablesInAttributes,\n} from '../utils/variable-substitution';\nimport { isCodecType } from '../utils/codecs';\nimport type { CodecType } from '../utils/codecs';\nimport type {\n  MediaPlaylist,\n  AudioGroup,\n  MediaPlaylistType,\n  MediaAttributes,\n} from '../types/media-playlist';\nimport type { PlaylistLevelType } from '../types/loader';\nimport type { LevelAttributes, LevelParsed, VariableMap } from '../types/level';\nimport type { ContentSteeringOptions } from '../types/events';\n\ntype M3U8ParserFragments = Array<Fragment | null>;\n\nexport type ParsedMultivariantPlaylist = {\n  contentSteering: ContentSteeringOptions | null;\n  levels: LevelParsed[];\n  playlistParsingError: Error | null;\n  sessionData: Record<string, AttrList> | null;\n  sessionKeys: LevelKey[] | null;\n  startTimeOffset: number | null;\n  variableList: VariableMap | null;\n  hasVariableRefs: boolean;\n};\n\ntype ParsedMultivariantMediaOptions = {\n  AUDIO?: MediaPlaylist[];\n  SUBTITLES?: MediaPlaylist[];\n  'CLOSED-CAPTIONS'?: MediaPlaylist[];\n};\n\nconst MASTER_PLAYLIST_REGEX =\n  /#EXT-X-STREAM-INF:([^\\r\\n]*)(?:[\\r\\n](?:#[^\\r\\n]*)?)*([^\\r\\n]+)|#EXT-X-(SESSION-DATA|SESSION-KEY|DEFINE|CONTENT-STEERING|START):([^\\r\\n]*)[\\r\\n]+/g;\nconst MASTER_PLAYLIST_MEDIA_REGEX = /#EXT-X-MEDIA:(.*)/g;\n\nconst IS_MEDIA_PLAYLIST = /^#EXT(?:INF|-X-TARGETDURATION):/m; // Handle empty Media Playlist (first EXTINF not signaled, but TARGETDURATION present)\n\nconst LEVEL_PLAYLIST_REGEX_FAST = new RegExp(\n  [\n    /#EXTINF:\\s*(\\d*(?:\\.\\d+)?)(?:,(.*)\\s+)?/.source, // duration (#EXTINF:<duration>,<title>), group 1 => duration, group 2 => title\n    /(?!#) *(\\S[\\S ]*)/.source, // segment URI, group 3 => the URI (note newline is not eaten)\n    /#EXT-X-BYTERANGE:*(.+)/.source, // next segment's byterange, group 4 => range spec (x@y)\n    /#EXT-X-PROGRAM-DATE-TIME:(.+)/.source, // next segment's program date/time group 5 => the datetime spec\n    /#.*/.source, // All other non-segment oriented tags will match with all groups empty\n  ].join('|'),\n  'g'\n);\n\nconst LEVEL_PLAYLIST_REGEX_SLOW = new RegExp(\n  [\n    /#(EXTM3U)/.source,\n    /#EXT-X-(DATERANGE|DEFINE|KEY|MAP|PART|PART-INF|PLAYLIST-TYPE|PRELOAD-HINT|RENDITION-REPORT|SERVER-CONTROL|SKIP|START):(.+)/\n      .source,\n    /#EXT-X-(BITRATE|DISCONTINUITY-SEQUENCE|MEDIA-SEQUENCE|TARGETDURATION|VERSION): *(\\d+)/\n      .source,\n    /#EXT-X-(DISCONTINUITY|ENDLIST|GAP)/.source,\n    /(#)([^:]*):(.*)/.source,\n    /(#)(.*)(?:.*)\\r?\\n?/.source,\n  ].join('|')\n);\n\nexport default class M3U8Parser {\n  static findGroup(\n    groups: Array<AudioGroup>,\n    mediaGroupId: string\n  ): AudioGroup | undefined {\n    for (let i = 0; i < groups.length; i++) {\n      const group = groups[i];\n      if (group.id === mediaGroupId) {\n        return group;\n      }\n    }\n  }\n\n  static convertAVC1ToAVCOTI(codec) {\n    // Convert avc1 codec string from RFC-4281 to RFC-6381 for MediaSource.isTypeSupported\n    const avcdata = codec.split('.');\n    if (avcdata.length > 2) {\n      let result = avcdata.shift() + '.';\n      result += parseInt(avcdata.shift()).toString(16);\n      result += ('000' + parseInt(avcdata.shift()).toString(16)).slice(-4);\n      return result;\n    }\n    return codec;\n  }\n\n  static resolve(url, baseUrl) {\n    return buildAbsoluteURL(baseUrl, url, { alwaysNormalize: true });\n  }\n\n  static isMediaPlaylist(str: string): boolean {\n    return IS_MEDIA_PLAYLIST.test(str);\n  }\n\n  static parseMasterPlaylist(\n    string: string,\n    baseurl: string\n  ): ParsedMultivariantPlaylist {\n    const hasVariableRefs = __USE_VARIABLE_SUBSTITUTION__\n      ? hasVariableReferences(string)\n      : false;\n    const parsed: ParsedMultivariantPlaylist = {\n      contentSteering: null,\n      levels: [],\n      playlistParsingError: null,\n      sessionData: null,\n      sessionKeys: null,\n      startTimeOffset: null,\n      variableList: null,\n      hasVariableRefs,\n    };\n    const levelsWithKnownCodecs: LevelParsed[] = [];\n\n    MASTER_PLAYLIST_REGEX.lastIndex = 0;\n\n    let result: RegExpExecArray | null;\n    while ((result = MASTER_PLAYLIST_REGEX.exec(string)) != null) {\n      if (result[1]) {\n        // '#EXT-X-STREAM-INF' is found, parse level tag  in group 1\n        const attrs = new AttrList(result[1]) as LevelAttributes;\n        if (__USE_VARIABLE_SUBSTITUTION__) {\n          substituteVariablesInAttributes(parsed, attrs, [\n            'CODECS',\n            'SUPPLEMENTAL-CODECS',\n            'ALLOWED-CPC',\n            'PATHWAY-ID',\n            'STABLE-VARIANT-ID',\n            'AUDIO',\n            'VIDEO',\n            'SUBTITLES',\n            'CLOSED-CAPTIONS',\n            'NAME',\n          ]);\n        }\n        const uri = __USE_VARIABLE_SUBSTITUTION__\n          ? substituteVariables(parsed, result[2])\n          : result[2];\n        const level: LevelParsed = {\n          attrs,\n          bitrate:\n            attrs.decimalInteger('AVERAGE-BANDWIDTH') ||\n            attrs.decimalInteger('BANDWIDTH'),\n          name: attrs.NAME,\n          url: M3U8Parser.resolve(uri, baseurl),\n        };\n\n        const resolution = attrs.decimalResolution('RESOLUTION');\n        if (resolution) {\n          level.width = resolution.width;\n          level.height = resolution.height;\n        }\n\n        setCodecs(\n          ((attrs.CODECS as string) || '').split(/[ ,]+/).filter((c) => c),\n          level\n        );\n\n        if (level.videoCodec && level.videoCodec.indexOf('avc1') !== -1) {\n          level.videoCodec = M3U8Parser.convertAVC1ToAVCOTI(level.videoCodec);\n        }\n\n        if (!level.unknownCodecs?.length) {\n          levelsWithKnownCodecs.push(level);\n        }\n\n        parsed.levels.push(level);\n      } else if (result[3]) {\n        const tag = result[3];\n        const attributes = result[4];\n        switch (tag) {\n          case 'SESSION-DATA': {\n            // #EXT-X-SESSION-DATA\n            const sessionAttrs = new AttrList(attributes);\n            if (__USE_VARIABLE_SUBSTITUTION__) {\n              substituteVariablesInAttributes(parsed, sessionAttrs, [\n                'DATA-ID',\n                'LANGUAGE',\n                'VALUE',\n                'URI',\n              ]);\n            }\n            const dataId = sessionAttrs['DATA-ID'];\n            if (dataId) {\n              if (parsed.sessionData === null) {\n                parsed.sessionData = {};\n              }\n              parsed.sessionData[dataId] = sessionAttrs;\n            }\n            break;\n          }\n          case 'SESSION-KEY': {\n            // #EXT-X-SESSION-KEY\n            const sessionKey = parseKey(attributes, baseurl, parsed);\n            if (sessionKey.encrypted && sessionKey.isSupported()) {\n              if (parsed.sessionKeys === null) {\n                parsed.sessionKeys = [];\n              }\n              parsed.sessionKeys.push(sessionKey);\n            } else {\n              logger.warn(\n                `[Keys] Ignoring invalid EXT-X-SESSION-KEY tag: \"${attributes}\"`\n              );\n            }\n            break;\n          }\n          case 'DEFINE': {\n            // #EXT-X-DEFINE\n            if (__USE_VARIABLE_SUBSTITUTION__) {\n              const variableAttributes = new AttrList(attributes);\n              substituteVariablesInAttributes(parsed, variableAttributes, [\n                'NAME',\n                'VALUE',\n                'QUERYPARAM',\n              ]);\n              addVariableDefinition(parsed, variableAttributes, baseurl);\n            }\n            break;\n          }\n          case 'CONTENT-STEERING': {\n            // #EXT-X-CONTENT-STEERING\n            const contentSteeringAttributes = new AttrList(attributes);\n            if (__USE_VARIABLE_SUBSTITUTION__) {\n              substituteVariablesInAttributes(\n                parsed,\n                contentSteeringAttributes,\n                ['SERVER-URI', 'PATHWAY-ID']\n              );\n            }\n            parsed.contentSteering = {\n              uri: M3U8Parser.resolve(\n                contentSteeringAttributes['SERVER-URI'],\n                baseurl\n              ),\n              pathwayId: contentSteeringAttributes['PATHWAY-ID'] || '.',\n            };\n            break;\n          }\n          case 'START': {\n            // #EXT-X-START\n            parsed.startTimeOffset = parseStartTimeOffset(attributes);\n            break;\n          }\n          default:\n            break;\n        }\n      }\n    }\n    // Filter out levels with unknown codecs if it does not remove all levels\n    const stripUnknownCodecLevels =\n      levelsWithKnownCodecs.length > 0 &&\n      levelsWithKnownCodecs.length < parsed.levels.length;\n\n    parsed.levels = stripUnknownCodecLevels\n      ? levelsWithKnownCodecs\n      : parsed.levels;\n    if (parsed.levels.length === 0) {\n      parsed.playlistParsingError = new Error('no levels found in manifest');\n    }\n\n    return parsed;\n  }\n\n  static parseMasterPlaylistMedia(\n    string: string,\n    baseurl: string,\n    parsed: ParsedMultivariantPlaylist\n  ): ParsedMultivariantMediaOptions {\n    let result: RegExpExecArray | null;\n    const results: ParsedMultivariantMediaOptions = {};\n    const levels = parsed.levels;\n    const groupsByType = {\n      AUDIO: levels.map((level: LevelParsed) => ({\n        id: level.attrs.AUDIO,\n        audioCodec: level.audioCodec,\n      })),\n      SUBTITLES: levels.map((level: LevelParsed) => ({\n        id: level.attrs.SUBTITLES,\n        textCodec: level.textCodec,\n      })),\n      'CLOSED-CAPTIONS': [],\n    };\n    let id = 0;\n    MASTER_PLAYLIST_MEDIA_REGEX.lastIndex = 0;\n    while ((result = MASTER_PLAYLIST_MEDIA_REGEX.exec(string)) !== null) {\n      const attrs = new AttrList(result[1]) as MediaAttributes;\n      const type: MediaPlaylistType | undefined = attrs.TYPE as\n        | MediaPlaylistType\n        | undefined;\n      if (type) {\n        const groups = groupsByType[type];\n        const medias: MediaPlaylist[] = results[type] || [];\n        results[type] = medias;\n        if (__USE_VARIABLE_SUBSTITUTION__) {\n          substituteVariablesInAttributes(parsed, attrs, [\n            'URI',\n            'GROUP-ID',\n            'LANGUAGE',\n            'ASSOC-LANGUAGE',\n            'STABLE-RENDITION-ID',\n            'NAME',\n            'INSTREAM-ID',\n            'CHARACTERISTICS',\n            'CHANNELS',\n          ]);\n        }\n        const media: MediaPlaylist = {\n          attrs,\n          bitrate: 0,\n          id: id++,\n          groupId: attrs['GROUP-ID'] || '',\n          instreamId: attrs['INSTREAM-ID'],\n          name: attrs.NAME || attrs.LANGUAGE || '',\n          type,\n          default: attrs.bool('DEFAULT'),\n          autoselect: attrs.bool('AUTOSELECT'),\n          forced: attrs.bool('FORCED'),\n          lang: attrs.LANGUAGE,\n          url: attrs.URI ? M3U8Parser.resolve(attrs.URI, baseurl) : '',\n        };\n\n        if (groups?.length) {\n          // If there are audio or text groups signalled in the manifest, let's look for a matching codec string for this track\n          // If we don't find the track signalled, lets use the first audio groups codec we have\n          // Acting as a best guess\n          const groupCodec =\n            M3U8Parser.findGroup(groups, media.groupId as string) || groups[0];\n          assignCodec(media, groupCodec, 'audioCodec');\n          assignCodec(media, groupCodec, 'textCodec');\n        }\n\n        medias.push(media);\n      }\n    }\n    return results;\n  }\n\n  static parseLevelPlaylist(\n    string: string,\n    baseurl: string,\n    id: number,\n    type: PlaylistLevelType,\n    levelUrlId: number,\n    multivariantVariableList: VariableMap | null\n  ): LevelDetails {\n    const level = new LevelDetails(baseurl);\n    const fragments: M3U8ParserFragments = level.fragments;\n    // The most recent init segment seen (applies to all subsequent segments)\n    let currentInitSegment: Fragment | null = null;\n    let currentSN = 0;\n    let currentPart = 0;\n    let totalduration = 0;\n    let discontinuityCounter = 0;\n    let prevFrag: Fragment | null = null;\n    let frag: Fragment = new Fragment(type, baseurl);\n    let result: RegExpExecArray | RegExpMatchArray | null;\n    let i: number;\n    let levelkeys: { [key: string]: LevelKey } | undefined;\n    let firstPdtIndex = -1;\n    let createNextFrag = false;\n\n    LEVEL_PLAYLIST_REGEX_FAST.lastIndex = 0;\n    level.m3u8 = string;\n    level.hasVariableRefs = __USE_VARIABLE_SUBSTITUTION__\n      ? hasVariableReferences(string)\n      : false;\n\n    while ((result = LEVEL_PLAYLIST_REGEX_FAST.exec(string)) !== null) {\n      if (createNextFrag) {\n        createNextFrag = false;\n        frag = new Fragment(type, baseurl);\n        // setup the next fragment for part loading\n        frag.start = totalduration;\n        frag.sn = currentSN;\n        frag.cc = discontinuityCounter;\n        frag.level = id;\n        if (currentInitSegment) {\n          frag.initSegment = currentInitSegment;\n          frag.rawProgramDateTime = currentInitSegment.rawProgramDateTime;\n          currentInitSegment.rawProgramDateTime = null;\n        }\n      }\n\n      const duration = result[1];\n      if (duration) {\n        // INF\n        frag.duration = parseFloat(duration);\n        // avoid sliced strings    https://github.com/video-dev/hls.js/issues/939\n        const title = (' ' + result[2]).slice(1);\n        frag.title = title || null;\n        frag.tagList.push(title ? ['INF', duration, title] : ['INF', duration]);\n      } else if (result[3]) {\n        // url\n        if (Number.isFinite(frag.duration)) {\n          frag.start = totalduration;\n          if (levelkeys) {\n            setFragLevelKeys(frag, levelkeys, level);\n          }\n          frag.sn = currentSN;\n          frag.level = id;\n          frag.cc = discontinuityCounter;\n          frag.urlId = levelUrlId;\n          fragments.push(frag);\n          // avoid sliced strings    https://github.com/video-dev/hls.js/issues/939\n          const uri = (' ' + result[3]).slice(1);\n          frag.relurl = __USE_VARIABLE_SUBSTITUTION__\n            ? substituteVariables(level, uri)\n            : uri;\n          assignProgramDateTime(frag, prevFrag);\n          prevFrag = frag;\n          totalduration += frag.duration;\n          currentSN++;\n          currentPart = 0;\n          createNextFrag = true;\n        }\n      } else if (result[4]) {\n        // X-BYTERANGE\n        const data = (' ' + result[4]).slice(1);\n        if (prevFrag) {\n          frag.setByteRange(data, prevFrag);\n        } else {\n          frag.setByteRange(data);\n        }\n      } else if (result[5]) {\n        // PROGRAM-DATE-TIME\n        // avoid sliced strings    https://github.com/video-dev/hls.js/issues/939\n        frag.rawProgramDateTime = (' ' + result[5]).slice(1);\n        frag.tagList.push(['PROGRAM-DATE-TIME', frag.rawProgramDateTime]);\n        if (firstPdtIndex === -1) {\n          firstPdtIndex = fragments.length;\n        }\n      } else {\n        result = result[0].match(LEVEL_PLAYLIST_REGEX_SLOW);\n        if (!result) {\n          logger.warn('No matches on slow regex match for level playlist!');\n          continue;\n        }\n        for (i = 1; i < result.length; i++) {\n          if (typeof result[i] !== 'undefined') {\n            break;\n          }\n        }\n\n        // avoid sliced strings    https://github.com/video-dev/hls.js/issues/939\n        const tag = (' ' + result[i]).slice(1);\n        const value1 = (' ' + result[i + 1]).slice(1);\n        const value2 = result[i + 2] ? (' ' + result[i + 2]).slice(1) : '';\n\n        switch (tag) {\n          case 'PLAYLIST-TYPE':\n            level.type = value1.toUpperCase();\n            break;\n          case 'MEDIA-SEQUENCE':\n            currentSN = level.startSN = parseInt(value1);\n            break;\n          case 'SKIP': {\n            const skipAttrs = new AttrList(value1);\n            if (__USE_VARIABLE_SUBSTITUTION__) {\n              substituteVariablesInAttributes(level, skipAttrs, [\n                'RECENTLY-REMOVED-DATERANGES',\n              ]);\n            }\n            const skippedSegments =\n              skipAttrs.decimalInteger('SKIPPED-SEGMENTS');\n            if (Number.isFinite(skippedSegments)) {\n              level.skippedSegments = skippedSegments;\n              // This will result in fragments[] containing undefined values, which we will fill in with `mergeDetails`\n              for (let i = skippedSegments; i--; ) {\n                fragments.unshift(null);\n              }\n              currentSN += skippedSegments;\n            }\n            const recentlyRemovedDateranges = skipAttrs.enumeratedString(\n              'RECENTLY-REMOVED-DATERANGES'\n            );\n            if (recentlyRemovedDateranges) {\n              level.recentlyRemovedDateranges =\n                recentlyRemovedDateranges.split('\\t');\n            }\n            break;\n          }\n          case 'TARGETDURATION':\n            level.targetduration = Math.max(parseInt(value1), 1);\n            break;\n          case 'VERSION':\n            level.version = parseInt(value1);\n            break;\n          case 'EXTM3U':\n            break;\n          case 'ENDLIST':\n            level.live = false;\n            break;\n          case '#':\n            if (value1 || value2) {\n              frag.tagList.push(value2 ? [value1, value2] : [value1]);\n            }\n            break;\n          case 'DISCONTINUITY':\n            discontinuityCounter++;\n            frag.tagList.push(['DIS']);\n            break;\n          case 'GAP':\n            frag.gap = true;\n            frag.tagList.push([tag]);\n            break;\n          case 'BITRATE':\n            frag.tagList.push([tag, value1]);\n            break;\n          case 'DATERANGE': {\n            const dateRangeAttr = new AttrList(value1);\n            if (__USE_VARIABLE_SUBSTITUTION__) {\n              substituteVariablesInAttributes(level, dateRangeAttr, [\n                'ID',\n                'CLASS',\n                'START-DATE',\n                'END-DATE',\n                'SCTE35-CMD',\n                'SCTE35-OUT',\n                'SCTE35-IN',\n              ]);\n              substituteVariablesInAttributes(\n                level,\n                dateRangeAttr,\n                dateRangeAttr.clientAttrs\n              );\n            }\n            const dateRange = new DateRange(\n              dateRangeAttr,\n              level.dateRanges[dateRangeAttr.ID]\n            );\n            if (dateRange.isValid || level.skippedSegments) {\n              level.dateRanges[dateRange.id] = dateRange;\n            } else {\n              logger.warn(`Ignoring invalid DATERANGE tag: \"${value1}\"`);\n            }\n            // Add to fragment tag list for backwards compatibility (< v1.2.0)\n            frag.tagList.push(['EXT-X-DATERANGE', value1]);\n            break;\n          }\n          case 'DEFINE': {\n            if (__USE_VARIABLE_SUBSTITUTION__) {\n              const variableAttributes = new AttrList(value1);\n              substituteVariablesInAttributes(level, variableAttributes, [\n                'NAME',\n                'VALUE',\n                'IMPORT',\n                'QUERYPARAM',\n              ]);\n              if ('IMPORT' in variableAttributes) {\n                importVariableDefinition(\n                  level,\n                  variableAttributes,\n                  multivariantVariableList\n                );\n              } else {\n                addVariableDefinition(level, variableAttributes, baseurl);\n              }\n            }\n            break;\n          }\n\n          case 'DISCONTINUITY-SEQUENCE':\n            discontinuityCounter = parseInt(value1);\n            break;\n          case 'KEY': {\n            const levelKey = parseKey(value1, baseurl, level);\n            if (levelKey.isSupported()) {\n              if (levelKey.method === 'NONE') {\n                levelkeys = undefined;\n                break;\n              }\n              if (!levelkeys) {\n                levelkeys = {};\n              }\n              if (levelkeys[levelKey.keyFormat]) {\n                levelkeys = Object.assign({}, levelkeys);\n              }\n              levelkeys[levelKey.keyFormat] = levelKey;\n            } else {\n              logger.warn(`[Keys] Ignoring invalid EXT-X-KEY tag: \"${value1}\"`);\n            }\n            break;\n          }\n          case 'START':\n            level.startTimeOffset = parseStartTimeOffset(value1);\n            break;\n          case 'MAP': {\n            const mapAttrs = new AttrList(value1);\n            if (__USE_VARIABLE_SUBSTITUTION__) {\n              substituteVariablesInAttributes(level, mapAttrs, [\n                'BYTERANGE',\n                'URI',\n              ]);\n            }\n            if (frag.duration) {\n              // Initial segment tag is after segment duration tag.\n              //   #EXTINF: 6.0\n              //   #EXT-X-MAP:URI=\"init.mp4\n              const init = new Fragment(type, baseurl);\n              setInitSegment(init, mapAttrs, id, levelkeys);\n              currentInitSegment = init;\n              frag.initSegment = currentInitSegment;\n              if (\n                currentInitSegment.rawProgramDateTime &&\n                !frag.rawProgramDateTime\n              ) {\n                frag.rawProgramDateTime = currentInitSegment.rawProgramDateTime;\n              }\n            } else {\n              // Initial segment tag is before segment duration tag\n              setInitSegment(frag, mapAttrs, id, levelkeys);\n              currentInitSegment = frag;\n              createNextFrag = true;\n            }\n            break;\n          }\n          case 'SERVER-CONTROL': {\n            const serverControlAttrs = new AttrList(value1);\n            level.canBlockReload = serverControlAttrs.bool('CAN-BLOCK-RELOAD');\n            level.canSkipUntil = serverControlAttrs.optionalFloat(\n              'CAN-SKIP-UNTIL',\n              0\n            );\n            level.canSkipDateRanges =\n              level.canSkipUntil > 0 &&\n              serverControlAttrs.bool('CAN-SKIP-DATERANGES');\n            level.partHoldBack = serverControlAttrs.optionalFloat(\n              'PART-HOLD-BACK',\n              0\n            );\n            level.holdBack = serverControlAttrs.optionalFloat('HOLD-BACK', 0);\n            break;\n          }\n          case 'PART-INF': {\n            const partInfAttrs = new AttrList(value1);\n            level.partTarget = partInfAttrs.decimalFloatingPoint('PART-TARGET');\n            break;\n          }\n          case 'PART': {\n            let partList = level.partList;\n            if (!partList) {\n              partList = level.partList = [];\n            }\n            const previousFragmentPart =\n              currentPart > 0 ? partList[partList.length - 1] : undefined;\n            const index = currentPart++;\n            const partAttrs = new AttrList(value1);\n            if (__USE_VARIABLE_SUBSTITUTION__) {\n              substituteVariablesInAttributes(level, partAttrs, [\n                'BYTERANGE',\n                'URI',\n              ]);\n            }\n            const part = new Part(\n              partAttrs,\n              frag,\n              baseurl,\n              index,\n              previousFragmentPart\n            );\n            partList.push(part);\n            frag.duration += part.duration;\n            break;\n          }\n          case 'PRELOAD-HINT': {\n            const preloadHintAttrs = new AttrList(value1);\n            if (__USE_VARIABLE_SUBSTITUTION__) {\n              substituteVariablesInAttributes(level, preloadHintAttrs, ['URI']);\n            }\n            level.preloadHint = preloadHintAttrs;\n            break;\n          }\n          case 'RENDITION-REPORT': {\n            const renditionReportAttrs = new AttrList(value1);\n            if (__USE_VARIABLE_SUBSTITUTION__) {\n              substituteVariablesInAttributes(level, renditionReportAttrs, [\n                'URI',\n              ]);\n            }\n            level.renditionReports = level.renditionReports || [];\n            level.renditionReports.push(renditionReportAttrs);\n            break;\n          }\n          default:\n            logger.warn(`line parsed but not handled: ${result}`);\n            break;\n        }\n      }\n    }\n    if (prevFrag && !prevFrag.relurl) {\n      fragments.pop();\n      totalduration -= prevFrag.duration;\n      if (level.partList) {\n        level.fragmentHint = prevFrag;\n      }\n    } else if (level.partList) {\n      assignProgramDateTime(frag, prevFrag);\n      frag.cc = discontinuityCounter;\n      level.fragmentHint = frag;\n      if (levelkeys) {\n        setFragLevelKeys(frag, levelkeys, level);\n      }\n    }\n    const fragmentLength = fragments.length;\n    const firstFragment = fragments[0];\n    const lastFragment = fragments[fragmentLength - 1];\n    totalduration += level.skippedSegments * level.targetduration;\n    if (totalduration > 0 && fragmentLength && lastFragment) {\n      level.averagetargetduration = totalduration / fragmentLength;\n      const lastSn = lastFragment.sn;\n      level.endSN = lastSn !== 'initSegment' ? lastSn : 0;\n      if (!level.live) {\n        lastFragment.endList = true;\n      }\n      if (firstFragment) {\n        level.startCC = firstFragment.cc;\n      }\n    } else {\n      level.endSN = 0;\n      level.startCC = 0;\n    }\n    if (level.fragmentHint) {\n      totalduration += level.fragmentHint.duration;\n    }\n    level.totalduration = totalduration;\n    level.endCC = discontinuityCounter;\n\n    /**\n     * Backfill any missing PDT values\n     * \"If the first EXT-X-PROGRAM-DATE-TIME tag in a Playlist appears after\n     * one or more Media Segment URIs, the client SHOULD extrapolate\n     * backward from that tag (using EXTINF durations and/or media\n     * timestamps) to associate dates with those segments.\"\n     * We have already extrapolated forward, but all fragments up to the first instance of PDT do not have their PDTs\n     * computed.\n     */\n    if (firstPdtIndex > 0) {\n      backfillProgramDateTimes(fragments, firstPdtIndex);\n    }\n\n    return level;\n  }\n}\n\nfunction parseKey(\n  keyTagAttributes: string,\n  baseurl: string,\n  parsed: ParsedMultivariantPlaylist | LevelDetails\n): LevelKey {\n  // https://tools.ietf.org/html/rfc8216#section-4.3.2.4\n  const keyAttrs = new AttrList(keyTagAttributes);\n  if (__USE_VARIABLE_SUBSTITUTION__) {\n    substituteVariablesInAttributes(parsed, keyAttrs, [\n      'KEYFORMAT',\n      'KEYFORMATVERSIONS',\n      'URI',\n      'IV',\n      'URI',\n    ]);\n  }\n  const decryptmethod = keyAttrs.METHOD ?? '';\n  const decrypturi = keyAttrs.URI;\n  const decryptiv = keyAttrs.hexadecimalInteger('IV');\n  const decryptkeyformatversions = keyAttrs.KEYFORMATVERSIONS;\n  // From RFC: This attribute is OPTIONAL; its absence indicates an implicit value of \"identity\".\n  const decryptkeyformat = keyAttrs.KEYFORMAT ?? 'identity';\n\n  if (decrypturi && keyAttrs.IV && !decryptiv) {\n    logger.error(`Invalid IV: ${keyAttrs.IV}`);\n  }\n  // If decrypturi is a URI with a scheme, then baseurl will be ignored\n  // No uri is allowed when METHOD is NONE\n  const resolvedUri = decrypturi ? M3U8Parser.resolve(decrypturi, baseurl) : '';\n  const keyFormatVersions = (\n    decryptkeyformatversions ? decryptkeyformatversions : '1'\n  )\n    .split('/')\n    .map(Number)\n    .filter(Number.isFinite);\n\n  return new LevelKey(\n    decryptmethod,\n    resolvedUri,\n    decryptkeyformat,\n    keyFormatVersions,\n    decryptiv\n  );\n}\n\nfunction parseStartTimeOffset(startAttributes: string): number | null {\n  const startAttrs = new AttrList(startAttributes);\n  const startTimeOffset = startAttrs.decimalFloatingPoint('TIME-OFFSET');\n  if (Number.isFinite(startTimeOffset)) {\n    return startTimeOffset;\n  }\n  return null;\n}\n\nfunction setCodecs(codecs: Array<string>, level: LevelParsed) {\n  ['video', 'audio', 'text'].forEach((type: CodecType) => {\n    const filtered = codecs.filter((codec) => isCodecType(codec, type));\n    if (filtered.length) {\n      const preferred = filtered.filter((codec) => {\n        return (\n          codec.lastIndexOf('avc1', 0) === 0 ||\n          codec.lastIndexOf('mp4a', 0) === 0\n        );\n      });\n      level[`${type}Codec`] = preferred.length > 0 ? preferred[0] : filtered[0];\n\n      // remove from list\n      codecs = codecs.filter((codec) => filtered.indexOf(codec) === -1);\n    }\n  });\n\n  level.unknownCodecs = codecs;\n}\n\nfunction assignCodec(media, groupItem, codecProperty) {\n  const codecValue = groupItem[codecProperty];\n  if (codecValue) {\n    media[codecProperty] = codecValue;\n  }\n}\n\nfunction backfillProgramDateTimes(\n  fragments: M3U8ParserFragments,\n  firstPdtIndex: number\n) {\n  let fragPrev = fragments[firstPdtIndex] as Fragment;\n  for (let i = firstPdtIndex; i--; ) {\n    const frag = fragments[i];\n    // Exit on delta-playlist skipped segments\n    if (!frag) {\n      return;\n    }\n    frag.programDateTime =\n      (fragPrev.programDateTime as number) - frag.duration * 1000;\n    fragPrev = frag;\n  }\n}\n\nfunction assignProgramDateTime(frag, prevFrag) {\n  if (frag.rawProgramDateTime) {\n    frag.programDateTime = Date.parse(frag.rawProgramDateTime);\n  } else if (prevFrag?.programDateTime) {\n    frag.programDateTime = prevFrag.endProgramDateTime;\n  }\n\n  if (!Number.isFinite(frag.programDateTime)) {\n    frag.programDateTime = null;\n    frag.rawProgramDateTime = null;\n  }\n}\n\nfunction setInitSegment(\n  frag: Fragment,\n  mapAttrs: AttrList,\n  id: number,\n  levelkeys: { [key: string]: LevelKey } | undefined\n) {\n  frag.relurl = mapAttrs.URI;\n  if (mapAttrs.BYTERANGE) {\n    frag.setByteRange(mapAttrs.BYTERANGE);\n  }\n  frag.level = id;\n  frag.sn = 'initSegment';\n  if (levelkeys) {\n    frag.levelkeys = levelkeys;\n  }\n  frag.initSegment = null;\n}\n\nfunction setFragLevelKeys(\n  frag: Fragment,\n  levelkeys: { [key: string]: LevelKey },\n  level: LevelDetails\n) {\n  frag.levelkeys = levelkeys;\n  const { encryptedFragments } = level;\n  if (\n    (!encryptedFragments.length ||\n      encryptedFragments[encryptedFragments.length - 1].levelkeys !==\n        levelkeys) &&\n    Object.keys(levelkeys).some(\n      (format) => levelkeys![format].isCommonEncryption\n    )\n  ) {\n    encryptedFragments.push(frag);\n  }\n}\n","/**\n * PlaylistLoader - delegate for media manifest/playlist loading tasks. Takes care of parsing media to internal data-models.\n *\n * Once loaded, dispatches events with parsed data-models of manifest/levels/audio/subtitle tracks.\n *\n * Uses loader(s) set in config to do actual internal loading of resource tasks.\n */\n\nimport { Events } from '../events';\nimport { ErrorDetails, ErrorTypes } from '../errors';\nimport { logger } from '../utils/logger';\nimport M3U8Parser from './m3u8-parser';\nimport type { LevelParsed, VariableMap } from '../types/level';\nimport type {\n  Loader,\n  LoaderCallbacks,\n  LoaderConfiguration,\n  LoaderContext,\n  LoaderResponse,\n  LoaderStats,\n  PlaylistLoaderContext,\n} from '../types/loader';\nimport { PlaylistContextType, PlaylistLevelType } from '../types/loader';\nimport { LevelDetails } from './level-details';\nimport { AttrList } from '../utils/attr-list';\nimport type Hls from '../hls';\nimport type {\n  ErrorData,\n  LevelLoadingData,\n  ManifestLoadingData,\n  TrackLoadingData,\n} from '../types/events';\nimport type { NetworkComponentAPI } from '../types/component-api';\nimport type { MediaAttributes } from '../types/media-playlist';\nimport type { LoaderConfig, RetryConfig } from '../config';\n\nfunction mapContextToLevelType(\n  context: PlaylistLoaderContext\n): PlaylistLevelType {\n  const { type } = context;\n\n  switch (type) {\n    case PlaylistContextType.AUDIO_TRACK:\n      return PlaylistLevelType.AUDIO;\n    case PlaylistContextType.SUBTITLE_TRACK:\n      return PlaylistLevelType.SUBTITLE;\n    default:\n      return PlaylistLevelType.MAIN;\n  }\n}\n\nfunction getResponseUrl(\n  response: LoaderResponse,\n  context: PlaylistLoaderContext\n): string {\n  let url = response.url;\n  // responseURL not supported on some browsers (it is used to detect URL redirection)\n  // data-uri mode also not supported (but no need to detect redirection)\n  if (url === undefined || url.indexOf('data:') === 0) {\n    // fallback to initial URL\n    url = context.url;\n  }\n  return url;\n}\n\nclass PlaylistLoader implements NetworkComponentAPI {\n  private readonly hls: Hls;\n  private readonly loaders: {\n    [key: string]: Loader<LoaderContext>;\n  } = Object.create(null);\n  private variableList: VariableMap | null = null;\n\n  constructor(hls: Hls) {\n    this.hls = hls;\n    this.registerListeners();\n  }\n\n  public startLoad(startPosition: number): void {}\n\n  public stopLoad(): void {\n    this.destroyInternalLoaders();\n  }\n\n  private registerListeners() {\n    const { hls } = this;\n    hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    hls.on(Events.LEVEL_LOADING, this.onLevelLoading, this);\n    hls.on(Events.AUDIO_TRACK_LOADING, this.onAudioTrackLoading, this);\n    hls.on(Events.SUBTITLE_TRACK_LOADING, this.onSubtitleTrackLoading, this);\n  }\n\n  private unregisterListeners() {\n    const { hls } = this;\n    hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    hls.off(Events.LEVEL_LOADING, this.onLevelLoading, this);\n    hls.off(Events.AUDIO_TRACK_LOADING, this.onAudioTrackLoading, this);\n    hls.off(Events.SUBTITLE_TRACK_LOADING, this.onSubtitleTrackLoading, this);\n  }\n\n  /**\n   * Returns defaults or configured loader-type overloads (pLoader and loader config params)\n   */\n  private createInternalLoader(\n    context: PlaylistLoaderContext\n  ): Loader<LoaderContext> {\n    const config = this.hls.config;\n    const PLoader = config.pLoader;\n    const Loader = config.loader;\n    const InternalLoader = PLoader || Loader;\n    const loader = new InternalLoader(config) as Loader<PlaylistLoaderContext>;\n\n    this.loaders[context.type] = loader;\n    return loader;\n  }\n\n  private getInternalLoader(\n    context: PlaylistLoaderContext\n  ): Loader<LoaderContext> | undefined {\n    return this.loaders[context.type];\n  }\n\n  private resetInternalLoader(contextType): void {\n    if (this.loaders[contextType]) {\n      delete this.loaders[contextType];\n    }\n  }\n\n  /**\n   * Call `destroy` on all internal loader instances mapped (one per context type)\n   */\n  private destroyInternalLoaders(): void {\n    for (const contextType in this.loaders) {\n      const loader = this.loaders[contextType];\n      if (loader) {\n        loader.destroy();\n      }\n\n      this.resetInternalLoader(contextType);\n    }\n  }\n\n  public destroy(): void {\n    this.variableList = null;\n    this.unregisterListeners();\n    this.destroyInternalLoaders();\n  }\n\n  private onManifestLoading(\n    event: Events.MANIFEST_LOADING,\n    data: ManifestLoadingData\n  ) {\n    const { url } = data;\n    this.variableList = null;\n    this.load({\n      id: null,\n      level: 0,\n      responseType: 'text',\n      type: PlaylistContextType.MANIFEST,\n      url,\n      deliveryDirectives: null,\n    });\n  }\n\n  private onLevelLoading(event: Events.LEVEL_LOADING, data: LevelLoadingData) {\n    const { id, level, url, deliveryDirectives } = data;\n    this.load({\n      id,\n      level,\n      responseType: 'text',\n      type: PlaylistContextType.LEVEL,\n      url,\n      deliveryDirectives,\n    });\n  }\n\n  private onAudioTrackLoading(\n    event: Events.AUDIO_TRACK_LOADING,\n    data: TrackLoadingData\n  ) {\n    const { id, groupId, url, deliveryDirectives } = data;\n    this.load({\n      id,\n      groupId,\n      level: null,\n      responseType: 'text',\n      type: PlaylistContextType.AUDIO_TRACK,\n      url,\n      deliveryDirectives,\n    });\n  }\n\n  private onSubtitleTrackLoading(\n    event: Events.SUBTITLE_TRACK_LOADING,\n    data: TrackLoadingData\n  ) {\n    const { id, groupId, url, deliveryDirectives } = data;\n    this.load({\n      id,\n      groupId,\n      level: null,\n      responseType: 'text',\n      type: PlaylistContextType.SUBTITLE_TRACK,\n      url,\n      deliveryDirectives,\n    });\n  }\n\n  private load(context: PlaylistLoaderContext): void {\n    const config = this.hls.config;\n\n    // logger.debug(`[playlist-loader]: Loading playlist of type ${context.type}, level: ${context.level}, id: ${context.id}`);\n\n    // Check if a loader for this context already exists\n    let loader = this.getInternalLoader(context);\n    if (loader) {\n      const loaderContext = loader.context;\n      if (loaderContext && loaderContext.url === context.url) {\n        // same URL can't overlap\n        logger.trace('[playlist-loader]: playlist request ongoing');\n        return;\n      }\n      logger.log(\n        `[playlist-loader]: aborting previous loader for type: ${context.type}`\n      );\n      loader.abort();\n    }\n\n    // apply different configs for retries depending on\n    // context (manifest, level, audio/subs playlist)\n    let loadPolicy: LoaderConfig;\n    if (context.type === PlaylistContextType.MANIFEST) {\n      loadPolicy = config.manifestLoadPolicy.default;\n    } else {\n      loadPolicy = Object.assign({}, config.playlistLoadPolicy.default, {\n        timeoutRetry: null,\n        errorRetry: null,\n      });\n    }\n    loader = this.createInternalLoader(context);\n\n    // Override level/track timeout for LL-HLS requests\n    // (the default of 10000ms is counter productive to blocking playlist reload requests)\n    if (context.deliveryDirectives?.part) {\n      let levelDetails: LevelDetails | undefined;\n      if (\n        context.type === PlaylistContextType.LEVEL &&\n        context.level !== null\n      ) {\n        levelDetails = this.hls.levels[context.level].details;\n      } else if (\n        context.type === PlaylistContextType.AUDIO_TRACK &&\n        context.id !== null\n      ) {\n        levelDetails = this.hls.audioTracks[context.id].details;\n      } else if (\n        context.type === PlaylistContextType.SUBTITLE_TRACK &&\n        context.id !== null\n      ) {\n        levelDetails = this.hls.subtitleTracks[context.id].details;\n      }\n      if (levelDetails) {\n        const partTarget = levelDetails.partTarget;\n        const targetDuration = levelDetails.targetduration;\n        if (partTarget && targetDuration) {\n          const maxLowLatencyPlaylistRefresh =\n            Math.max(partTarget * 3, targetDuration * 0.8) * 1000;\n          loadPolicy = Object.assign({}, loadPolicy, {\n            maxTimeToFirstByteMs: Math.min(\n              maxLowLatencyPlaylistRefresh,\n              loadPolicy.maxTimeToFirstByteMs\n            ),\n            maxLoadTimeMs: Math.min(\n              maxLowLatencyPlaylistRefresh,\n              loadPolicy.maxTimeToFirstByteMs\n            ),\n          });\n        }\n      }\n    }\n\n    const legacyRetryCompatibility: RetryConfig | Record<string, void> =\n      loadPolicy.errorRetry || loadPolicy.timeoutRetry || {};\n    const loaderConfig: LoaderConfiguration = {\n      loadPolicy,\n      timeout: loadPolicy.maxLoadTimeMs,\n      maxRetry: legacyRetryCompatibility.maxNumRetry || 0,\n      retryDelay: legacyRetryCompatibility.retryDelayMs || 0,\n      maxRetryDelay: legacyRetryCompatibility.maxRetryDelayMs || 0,\n    };\n\n    const loaderCallbacks: LoaderCallbacks<PlaylistLoaderContext> = {\n      onSuccess: (response, stats, context, networkDetails) => {\n        const loader = this.getInternalLoader(context) as\n          | Loader<PlaylistLoaderContext>\n          | undefined;\n        this.resetInternalLoader(context.type);\n\n        const string = response.data as string;\n\n        // Validate if it is an M3U8 at all\n        if (string.indexOf('#EXTM3U') !== 0) {\n          this.handleManifestParsingError(\n            response,\n            context,\n            new Error('no EXTM3U delimiter'),\n            networkDetails || null,\n            stats\n          );\n          return;\n        }\n\n        stats.parsing.start = performance.now();\n        if (M3U8Parser.isMediaPlaylist(string)) {\n          this.handleTrackOrLevelPlaylist(\n            response,\n            stats,\n            context,\n            networkDetails || null,\n            loader\n          );\n        } else {\n          this.handleMasterPlaylist(response, stats, context, networkDetails);\n        }\n      },\n      onError: (response, context, networkDetails, stats) => {\n        this.handleNetworkError(\n          context,\n          networkDetails,\n          false,\n          response,\n          stats\n        );\n      },\n      onTimeout: (stats, context, networkDetails) => {\n        this.handleNetworkError(\n          context,\n          networkDetails,\n          true,\n          undefined,\n          stats\n        );\n      },\n    };\n\n    // logger.debug(`[playlist-loader]: Calling internal loader delegate for URL: ${context.url}`);\n\n    loader.load(context, loaderConfig, loaderCallbacks);\n  }\n\n  private handleMasterPlaylist(\n    response: LoaderResponse,\n    stats: LoaderStats,\n    context: PlaylistLoaderContext,\n    networkDetails: any\n  ): void {\n    const hls = this.hls;\n    const string = response.data as string;\n\n    const url = getResponseUrl(response, context);\n\n    const parsedResult = M3U8Parser.parseMasterPlaylist(string, url);\n\n    if (parsedResult.playlistParsingError) {\n      this.handleManifestParsingError(\n        response,\n        context,\n        parsedResult.playlistParsingError,\n        networkDetails,\n        stats\n      );\n      return;\n    }\n\n    const {\n      contentSteering,\n      levels,\n      sessionData,\n      sessionKeys,\n      startTimeOffset,\n      variableList,\n    } = parsedResult;\n\n    this.variableList = variableList;\n\n    const {\n      AUDIO: audioTracks = [],\n      SUBTITLES: subtitles,\n      'CLOSED-CAPTIONS': captions,\n    } = M3U8Parser.parseMasterPlaylistMedia(string, url, parsedResult);\n\n    if (audioTracks.length) {\n      // check if we have found an audio track embedded in main playlist (audio track without URI attribute)\n      const embeddedAudioFound: boolean = audioTracks.some(\n        (audioTrack) => !audioTrack.url\n      );\n\n      // if no embedded audio track defined, but audio codec signaled in quality level,\n      // we need to signal this main audio track this could happen with playlists with\n      // alt audio rendition in which quality levels (main)\n      // contains both audio+video. but with mixed audio track not signaled\n      if (\n        !embeddedAudioFound &&\n        levels[0].audioCodec &&\n        !levels[0].attrs.AUDIO\n      ) {\n        logger.log(\n          '[playlist-loader]: audio codec signaled in quality level, but no embedded audio track signaled, create one'\n        );\n        audioTracks.unshift({\n          type: 'main',\n          name: 'main',\n          groupId: 'main',\n          default: false,\n          autoselect: false,\n          forced: false,\n          id: -1,\n          attrs: new AttrList({}) as MediaAttributes,\n          bitrate: 0,\n          url: '',\n        });\n      }\n    }\n\n    hls.trigger(Events.MANIFEST_LOADED, {\n      levels,\n      audioTracks,\n      subtitles,\n      captions,\n      contentSteering,\n      url,\n      stats,\n      networkDetails,\n      sessionData,\n      sessionKeys,\n      startTimeOffset,\n      variableList,\n    });\n  }\n\n  private handleTrackOrLevelPlaylist(\n    response: LoaderResponse,\n    stats: LoaderStats,\n    context: PlaylistLoaderContext,\n    networkDetails: any,\n    loader: Loader<PlaylistLoaderContext> | undefined\n  ): void {\n    const hls = this.hls;\n    const { id, level, type } = context;\n\n    const url = getResponseUrl(response, context);\n    const levelUrlId = Number.isFinite(id as number) ? (id as number) : 0;\n    const levelId = Number.isFinite(level as number)\n      ? (level as number)\n      : levelUrlId;\n    const levelType = mapContextToLevelType(context);\n    const levelDetails: LevelDetails = M3U8Parser.parseLevelPlaylist(\n      response.data as string,\n      url,\n      levelId,\n      levelType,\n      levelUrlId,\n      this.variableList\n    );\n\n    // We have done our first request (Manifest-type) and receive\n    // not a master playlist but a chunk-list (track/level)\n    // We fire the manifest-loaded event anyway with the parsed level-details\n    // by creating a single-level structure for it.\n    if (type === PlaylistContextType.MANIFEST) {\n      const singleLevel: LevelParsed = {\n        attrs: new AttrList({}),\n        bitrate: 0,\n        details: levelDetails,\n        name: '',\n        url,\n      };\n\n      hls.trigger(Events.MANIFEST_LOADED, {\n        levels: [singleLevel],\n        audioTracks: [],\n        url,\n        stats,\n        networkDetails,\n        sessionData: null,\n        sessionKeys: null,\n        contentSteering: null,\n        startTimeOffset: null,\n        variableList: null,\n      });\n    }\n\n    // save parsing time\n    stats.parsing.end = performance.now();\n\n    // extend the context with the new levelDetails property\n    context.levelDetails = levelDetails;\n\n    this.handlePlaylistLoaded(\n      levelDetails,\n      response,\n      stats,\n      context,\n      networkDetails,\n      loader\n    );\n  }\n\n  private handleManifestParsingError(\n    response: LoaderResponse,\n    context: PlaylistLoaderContext,\n    error: Error,\n    networkDetails: any,\n    stats: LoaderStats\n  ): void {\n    this.hls.trigger(Events.ERROR, {\n      type: ErrorTypes.NETWORK_ERROR,\n      details: ErrorDetails.MANIFEST_PARSING_ERROR,\n      fatal: context.type === PlaylistContextType.MANIFEST,\n      url: response.url,\n      err: error,\n      error,\n      reason: error.message,\n      response,\n      context,\n      networkDetails,\n      stats,\n    });\n  }\n\n  private handleNetworkError(\n    context: PlaylistLoaderContext,\n    networkDetails: any,\n    timeout = false,\n    response: { code: number; text: string } | undefined,\n    stats: LoaderStats\n  ): void {\n    let message = `A network ${\n      timeout\n        ? 'timeout'\n        : 'error' + (response ? ' (status ' + response.code + ')' : '')\n    } occurred while loading ${context.type}`;\n    if (context.type === PlaylistContextType.LEVEL) {\n      message += `: ${context.level} id: ${context.id}`;\n    } else if (\n      context.type === PlaylistContextType.AUDIO_TRACK ||\n      context.type === PlaylistContextType.SUBTITLE_TRACK\n    ) {\n      message += ` id: ${context.id} group-id: \"${context.groupId}\"`;\n    }\n    const error = new Error(message);\n    logger.warn(`[playlist-loader]: ${message}`);\n    let details = ErrorDetails.UNKNOWN;\n    let fatal = false;\n\n    const loader = this.getInternalLoader(context);\n\n    switch (context.type) {\n      case PlaylistContextType.MANIFEST:\n        details = timeout\n          ? ErrorDetails.MANIFEST_LOAD_TIMEOUT\n          : ErrorDetails.MANIFEST_LOAD_ERROR;\n        fatal = true;\n        break;\n      case PlaylistContextType.LEVEL:\n        details = timeout\n          ? ErrorDetails.LEVEL_LOAD_TIMEOUT\n          : ErrorDetails.LEVEL_LOAD_ERROR;\n        fatal = false;\n        break;\n      case PlaylistContextType.AUDIO_TRACK:\n        details = timeout\n          ? ErrorDetails.AUDIO_TRACK_LOAD_TIMEOUT\n          : ErrorDetails.AUDIO_TRACK_LOAD_ERROR;\n        fatal = false;\n        break;\n      case PlaylistContextType.SUBTITLE_TRACK:\n        details = timeout\n          ? ErrorDetails.SUBTITLE_TRACK_LOAD_TIMEOUT\n          : ErrorDetails.SUBTITLE_LOAD_ERROR;\n        fatal = false;\n        break;\n    }\n\n    if (loader) {\n      this.resetInternalLoader(context.type);\n    }\n\n    const errorData: ErrorData = {\n      type: ErrorTypes.NETWORK_ERROR,\n      details,\n      fatal,\n      url: context.url,\n      loader,\n      context,\n      error,\n      networkDetails,\n      stats,\n    };\n\n    if (response) {\n      const url = networkDetails?.url || context.url;\n      errorData.response = { url, data: undefined as any, ...response };\n    }\n\n    this.hls.trigger(Events.ERROR, errorData);\n  }\n\n  private handlePlaylistLoaded(\n    levelDetails: LevelDetails,\n    response: LoaderResponse,\n    stats: LoaderStats,\n    context: PlaylistLoaderContext,\n    networkDetails: any,\n    loader: Loader<PlaylistLoaderContext> | undefined\n  ): void {\n    const hls = this.hls;\n    const { type, level, id, groupId, deliveryDirectives } = context;\n    const url = getResponseUrl(response, context);\n    const parent = mapContextToLevelType(context);\n    const levelIndex =\n      typeof context.level === 'number' && parent === PlaylistLevelType.MAIN\n        ? (level as number)\n        : undefined;\n    if (!levelDetails.fragments.length) {\n      const error = new Error('No Segments found in Playlist');\n      hls.trigger(Events.ERROR, {\n        type: ErrorTypes.NETWORK_ERROR,\n        details: ErrorDetails.LEVEL_EMPTY_ERROR,\n        fatal: false,\n        url,\n        error,\n        reason: error.message,\n        response,\n        context,\n        level: levelIndex,\n        parent,\n        networkDetails,\n        stats,\n      });\n      return;\n    }\n    if (!levelDetails.targetduration) {\n      levelDetails.playlistParsingError = new Error('Missing Target Duration');\n    }\n    const error = levelDetails.playlistParsingError;\n    if (error) {\n      hls.trigger(Events.ERROR, {\n        type: ErrorTypes.NETWORK_ERROR,\n        details: ErrorDetails.LEVEL_PARSING_ERROR,\n        fatal: false,\n        url,\n        error,\n        reason: error.message,\n        response,\n        context,\n        level: levelIndex,\n        parent,\n        networkDetails,\n        stats,\n      });\n      return;\n    }\n\n    if (levelDetails.live && loader) {\n      if (loader.getCacheAge) {\n        levelDetails.ageHeader = loader.getCacheAge() || 0;\n      }\n      if (!loader.getCacheAge || isNaN(levelDetails.ageHeader)) {\n        levelDetails.ageHeader = 0;\n      }\n    }\n\n    switch (type) {\n      case PlaylistContextType.MANIFEST:\n      case PlaylistContextType.LEVEL:\n        hls.trigger(Events.LEVEL_LOADED, {\n          details: levelDetails,\n          level: levelIndex || 0,\n          id: id || 0,\n          stats,\n          networkDetails,\n          deliveryDirectives,\n        });\n        break;\n      case PlaylistContextType.AUDIO_TRACK:\n        hls.trigger(Events.AUDIO_TRACK_LOADED, {\n          details: levelDetails,\n          id: id || 0,\n          groupId: groupId || '',\n          stats,\n          networkDetails,\n          deliveryDirectives,\n        });\n        break;\n      case PlaylistContextType.SUBTITLE_TRACK:\n        hls.trigger(Events.SUBTITLE_TRACK_LOADED, {\n          details: levelDetails,\n          id: id || 0,\n          groupId: groupId || '',\n          stats,\n          networkDetails,\n          deliveryDirectives,\n        });\n        break;\n    }\n  }\n}\n\nexport default PlaylistLoader;\n","import { logger } from './logger';\n\nexport function sendAddTrackEvent(track: TextTrack, videoEl: HTMLMediaElement) {\n  let event: Event;\n  try {\n    event = new Event('addtrack');\n  } catch (err) {\n    // for IE11\n    event = document.createEvent('Event');\n    event.initEvent('addtrack', false, false);\n  }\n  (event as any).track = track;\n  videoEl.dispatchEvent(event);\n}\n\nexport function addCueToTrack(track: TextTrack, cue: VTTCue) {\n  // Sometimes there are cue overlaps on segmented vtts so the same\n  // cue can appear more than once in different vtt files.\n  // This avoid showing duplicated cues with same timecode and text.\n  const mode = track.mode;\n  if (mode === 'disabled') {\n    track.mode = 'hidden';\n  }\n  if (track.cues && !track.cues.getCueById(cue.id)) {\n    try {\n      track.addCue(cue);\n      if (!track.cues.getCueById(cue.id)) {\n        throw new Error(`addCue is failed for: ${cue}`);\n      }\n    } catch (err) {\n      logger.debug(`[texttrack-utils]: ${err}`);\n      try {\n        const textTrackCue = new (self.TextTrackCue as any)(\n          cue.startTime,\n          cue.endTime,\n          cue.text\n        );\n        textTrackCue.id = cue.id;\n        track.addCue(textTrackCue);\n      } catch (err2) {\n        logger.debug(\n          `[texttrack-utils]: Legacy TextTrackCue fallback failed: ${err2}`\n        );\n      }\n    }\n  }\n  if (mode === 'disabled') {\n    track.mode = mode;\n  }\n}\n\nexport function clearCurrentCues(track: TextTrack) {\n  // When track.mode is disabled, track.cues will be null.\n  // To guarantee the removal of cues, we need to temporarily\n  // change the mode to hidden\n  const mode = track.mode;\n  if (mode === 'disabled') {\n    track.mode = 'hidden';\n  }\n  if (track.cues) {\n    for (let i = track.cues.length; i--; ) {\n      track.removeCue(track.cues[i]);\n    }\n  }\n  if (mode === 'disabled') {\n    track.mode = mode;\n  }\n}\n\nexport function removeCuesInRange(\n  track: TextTrack,\n  start: number,\n  end: number,\n  predicate?: (cue: TextTrackCue) => boolean\n) {\n  const mode = track.mode;\n  if (mode === 'disabled') {\n    track.mode = 'hidden';\n  }\n\n  if (track.cues && track.cues.length > 0) {\n    const cues = getCuesInRange(track.cues, start, end);\n    for (let i = 0; i < cues.length; i++) {\n      if (!predicate || predicate(cues[i])) {\n        track.removeCue(cues[i]);\n      }\n    }\n  }\n  if (mode === 'disabled') {\n    track.mode = mode;\n  }\n}\n\n// Find first cue starting after given time.\n// Modified version of binary search O(log(n)).\nfunction getFirstCueIndexAfterTime(\n  cues: TextTrackCueList | TextTrackCue[],\n  time: number\n): number {\n  // If first cue starts after time, start there\n  if (time < cues[0].startTime) {\n    return 0;\n  }\n  // If the last cue ends before time there is no overlap\n  const len = cues.length - 1;\n  if (time > cues[len].endTime) {\n    return -1;\n  }\n\n  let left = 0;\n  let right = len;\n\n  while (left <= right) {\n    const mid = Math.floor((right + left) / 2);\n\n    if (time < cues[mid].startTime) {\n      right = mid - 1;\n    } else if (time > cues[mid].startTime && left < len) {\n      left = mid + 1;\n    } else {\n      // If it's not lower or higher, it must be equal.\n      return mid;\n    }\n  }\n  // At this point, left and right have swapped.\n  // No direct match was found, left or right element must be the closest. Check which one has the smallest diff.\n  return cues[left].startTime - time < time - cues[right].startTime\n    ? left\n    : right;\n}\n\nexport function getCuesInRange(\n  cues: TextTrackCueList | TextTrackCue[],\n  start: number,\n  end: number\n): TextTrackCue[] {\n  const cuesFound: TextTrackCue[] = [];\n  const firstCueInRange = getFirstCueIndexAfterTime(cues, start);\n  if (firstCueInRange > -1) {\n    for (let i = firstCueInRange, len = cues.length; i < len; i++) {\n      const cue = cues[i];\n      if (cue.startTime >= start && cue.endTime <= end) {\n        cuesFound.push(cue);\n      } else if (cue.startTime > end) {\n        return cuesFound;\n      }\n    }\n  }\n  return cuesFound;\n}\n","import { Events } from '../events';\nimport {\n  sendAddTrackEvent,\n  clearCurrentCues,\n  removeCuesInRange,\n} from '../utils/texttrack-utils';\nimport * as ID3 from '../demux/id3';\nimport {\n  DateRange,\n  isDateRangeCueAttribute,\n  isSCTE35Attribute,\n} from '../loader/date-range';\nimport { MetadataSchema } from '../types/demuxer';\nimport type {\n  BufferFlushingData,\n  FragParsingMetadataData,\n  LevelUpdatedData,\n  MediaAttachedData,\n} from '../types/events';\nimport type { ComponentAPI } from '../types/component-api';\nimport type Hls from '../hls';\n\ndeclare global {\n  interface Window {\n    WebKitDataCue: VTTCue | void;\n  }\n}\n\ntype Cue = VTTCue | TextTrackCue;\n\nconst MIN_CUE_DURATION = 0.25;\n\nfunction getCueClass() {\n  if (typeof self === 'undefined') return undefined;\n\n  // Attempt to recreate Safari functionality by creating\n  // WebKitDataCue objects when available and store the decoded\n  // ID3 data in the value property of the cue\n  return (self.WebKitDataCue || self.VTTCue || self.TextTrackCue) as any;\n}\n\n// VTTCue latest draft allows an infinite duration, fallback\n// to MAX_VALUE if necessary\nconst MAX_CUE_ENDTIME = (() => {\n  const Cue = getCueClass();\n  try {\n    new Cue(0, Number.POSITIVE_INFINITY, '');\n  } catch (e) {\n    return Number.MAX_VALUE;\n  }\n  return Number.POSITIVE_INFINITY;\n})();\n\nfunction dateRangeDateToTimelineSeconds(date: Date, offset: number): number {\n  return date.getTime() / 1000 - offset;\n}\n\nfunction hexToArrayBuffer(str): ArrayBuffer {\n  return Uint8Array.from(\n    str\n      .replace(/^0x/, '')\n      .replace(/([\\da-fA-F]{2}) ?/g, '0x$1 ')\n      .replace(/ +$/, '')\n      .split(' ')\n  ).buffer;\n}\nclass ID3TrackController implements ComponentAPI {\n  private hls: Hls;\n  private id3Track: TextTrack | null = null;\n  private media: HTMLMediaElement | null = null;\n  private dateRangeCuesAppended: Record<\n    string,\n    { cues: Record<string, Cue>; dateRange: DateRange; durationKnown: boolean }\n  > = {};\n\n  constructor(hls) {\n    this.hls = hls;\n    this._registerListeners();\n  }\n\n  destroy() {\n    this._unregisterListeners();\n    this.id3Track = null;\n    this.media = null;\n    this.dateRangeCuesAppended = {};\n    // @ts-ignore\n    this.hls = null;\n  }\n\n  private _registerListeners() {\n    const { hls } = this;\n    hls.on(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n    hls.on(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n    hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    hls.on(Events.FRAG_PARSING_METADATA, this.onFragParsingMetadata, this);\n    hls.on(Events.BUFFER_FLUSHING, this.onBufferFlushing, this);\n    hls.on(Events.LEVEL_UPDATED, this.onLevelUpdated, this);\n  }\n\n  private _unregisterListeners() {\n    const { hls } = this;\n    hls.off(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n    hls.off(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n    hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    hls.off(Events.FRAG_PARSING_METADATA, this.onFragParsingMetadata, this);\n    hls.off(Events.BUFFER_FLUSHING, this.onBufferFlushing, this);\n    hls.off(Events.LEVEL_UPDATED, this.onLevelUpdated, this);\n  }\n\n  // Add ID3 metatadata text track.\n  protected onMediaAttached(\n    event: Events.MEDIA_ATTACHED,\n    data: MediaAttachedData\n  ): void {\n    this.media = data.media;\n  }\n\n  protected onMediaDetaching(): void {\n    if (!this.id3Track) {\n      return;\n    }\n    clearCurrentCues(this.id3Track);\n    this.id3Track = null;\n    this.media = null;\n    this.dateRangeCuesAppended = {};\n  }\n\n  private onManifestLoading() {\n    this.dateRangeCuesAppended = {};\n  }\n\n  createTrack(media: HTMLMediaElement): TextTrack {\n    const track = this.getID3Track(media.textTracks) as TextTrack;\n    track.mode = 'hidden';\n    return track;\n  }\n\n  getID3Track(textTracks: TextTrackList): TextTrack | void {\n    if (!this.media) {\n      return;\n    }\n    for (let i = 0; i < textTracks.length; i++) {\n      const textTrack: TextTrack = textTracks[i];\n      if (textTrack.kind === 'metadata' && textTrack.label === 'id3') {\n        // send 'addtrack' when reusing the textTrack for metadata,\n        // same as what we do for captions\n        sendAddTrackEvent(textTrack, this.media);\n\n        return textTrack;\n      }\n    }\n    return this.media.addTextTrack('metadata', 'id3');\n  }\n\n  onFragParsingMetadata(\n    event: Events.FRAG_PARSING_METADATA,\n    data: FragParsingMetadataData\n  ) {\n    if (!this.media) {\n      return;\n    }\n\n    const {\n      hls: {\n        config: { enableEmsgMetadataCues, enableID3MetadataCues },\n      },\n    } = this;\n    if (!enableEmsgMetadataCues && !enableID3MetadataCues) {\n      return;\n    }\n\n    const { samples } = data;\n\n    // create track dynamically\n    if (!this.id3Track) {\n      this.id3Track = this.createTrack(this.media);\n    }\n\n    const Cue = getCueClass();\n\n    for (let i = 0; i < samples.length; i++) {\n      const type = samples[i].type;\n      if (\n        (type === MetadataSchema.emsg && !enableEmsgMetadataCues) ||\n        !enableID3MetadataCues\n      ) {\n        continue;\n      }\n\n      const frames = ID3.getID3Frames(samples[i].data);\n      if (frames) {\n        const startTime = samples[i].pts;\n        let endTime: number = startTime + samples[i].duration;\n\n        if (endTime > MAX_CUE_ENDTIME) {\n          endTime = MAX_CUE_ENDTIME;\n        }\n\n        const timeDiff = endTime - startTime;\n        if (timeDiff <= 0) {\n          endTime = startTime + MIN_CUE_DURATION;\n        }\n\n        for (let j = 0; j < frames.length; j++) {\n          const frame = frames[j];\n          // Safari doesn't put the timestamp frame in the TextTrack\n          if (!ID3.isTimeStampFrame(frame)) {\n            // add a bounds to any unbounded cues\n            this.updateId3CueEnds(startTime, type);\n\n            const cue = new Cue(startTime, endTime, '');\n            cue.value = frame;\n            if (type) {\n              cue.type = type;\n            }\n            this.id3Track.addCue(cue);\n          }\n        }\n      }\n    }\n  }\n\n  updateId3CueEnds(startTime: number, type: MetadataSchema) {\n    const cues = this.id3Track?.cues;\n    if (cues) {\n      for (let i = cues.length; i--; ) {\n        const cue = cues[i] as any;\n        if (\n          cue.type === type &&\n          cue.startTime < startTime &&\n          cue.endTime === MAX_CUE_ENDTIME\n        ) {\n          cue.endTime = startTime;\n        }\n      }\n    }\n  }\n\n  onBufferFlushing(\n    event: Events.BUFFER_FLUSHING,\n    { startOffset, endOffset, type }: BufferFlushingData\n  ) {\n    const { id3Track, hls } = this;\n    if (!hls) {\n      return;\n    }\n\n    const {\n      config: { enableEmsgMetadataCues, enableID3MetadataCues },\n    } = hls;\n    if (id3Track && (enableEmsgMetadataCues || enableID3MetadataCues)) {\n      let predicate;\n\n      if (type === 'audio') {\n        predicate = (cue) =>\n          (cue as any).type === MetadataSchema.audioId3 &&\n          enableID3MetadataCues;\n      } else if (type === 'video') {\n        predicate = (cue) =>\n          (cue as any).type === MetadataSchema.emsg && enableEmsgMetadataCues;\n      } else {\n        predicate = (cue) =>\n          ((cue as any).type === MetadataSchema.audioId3 &&\n            enableID3MetadataCues) ||\n          ((cue as any).type === MetadataSchema.emsg && enableEmsgMetadataCues);\n      }\n      removeCuesInRange(id3Track, startOffset, endOffset, predicate);\n    }\n  }\n\n  onLevelUpdated(event: Events.LEVEL_UPDATED, { details }: LevelUpdatedData) {\n    if (\n      !this.media ||\n      !details.hasProgramDateTime ||\n      !this.hls.config.enableDateRangeMetadataCues\n    ) {\n      return;\n    }\n    const { dateRangeCuesAppended, id3Track } = this;\n    const { dateRanges } = details;\n    const ids = Object.keys(dateRanges);\n    // Remove cues from track not found in details.dateRanges\n    if (id3Track) {\n      const idsToRemove = Object.keys(dateRangeCuesAppended).filter(\n        (id) => !ids.includes(id)\n      );\n      for (let i = idsToRemove.length; i--; ) {\n        const id = idsToRemove[i];\n        Object.keys(dateRangeCuesAppended[id].cues).forEach((key) => {\n          id3Track.removeCue(dateRangeCuesAppended[id].cues[key]);\n        });\n        delete dateRangeCuesAppended[id];\n      }\n    }\n    // Exit if the playlist does not have Date Ranges or does not have Program Date Time\n    const lastFragment = details.fragments[details.fragments.length - 1];\n    if (ids.length === 0 || !Number.isFinite(lastFragment?.programDateTime)) {\n      return;\n    }\n\n    if (!this.id3Track) {\n      this.id3Track = this.createTrack(this.media);\n    }\n\n    const dateTimeOffset =\n      (lastFragment.programDateTime as number) / 1000 - lastFragment.start;\n    const Cue = getCueClass();\n\n    for (let i = 0; i < ids.length; i++) {\n      const id = ids[i];\n      const dateRange = dateRanges[id];\n      const appendedDateRangeCues = dateRangeCuesAppended[id];\n      const cues = appendedDateRangeCues?.cues || {};\n      let durationKnown = appendedDateRangeCues?.durationKnown || false;\n      const startTime = dateRangeDateToTimelineSeconds(\n        dateRange.startDate,\n        dateTimeOffset\n      );\n      let endTime = MAX_CUE_ENDTIME;\n      const endDate = dateRange.endDate;\n      if (endDate) {\n        endTime = dateRangeDateToTimelineSeconds(endDate, dateTimeOffset);\n        durationKnown = true;\n      } else if (dateRange.endOnNext && !durationKnown) {\n        const nextDateRangeWithSameClass = ids\n          .reduce((filterMapArray, id) => {\n            const candidate = dateRanges[id];\n            if (\n              candidate.class === dateRange.class &&\n              candidate.id !== id &&\n              candidate.startDate > dateRange.startDate\n            ) {\n              filterMapArray.push(candidate);\n            }\n            return filterMapArray;\n          }, [] as DateRange[])\n          .sort((a, b) => a.startDate.getTime() - b.startDate.getTime())[0];\n        if (nextDateRangeWithSameClass) {\n          endTime = dateRangeDateToTimelineSeconds(\n            nextDateRangeWithSameClass.startDate,\n            dateTimeOffset\n          );\n          durationKnown = true;\n        }\n      }\n\n      const attributes = Object.keys(dateRange.attr);\n      for (let j = 0; j < attributes.length; j++) {\n        const key = attributes[j];\n        if (!isDateRangeCueAttribute(key)) {\n          continue;\n        }\n        let cue = cues[key] as any;\n        if (cue) {\n          if (durationKnown && !appendedDateRangeCues.durationKnown) {\n            cue.endTime = endTime;\n          }\n        } else {\n          let data = dateRange.attr[key];\n          cue = new Cue(startTime, endTime, '');\n          if (isSCTE35Attribute(key)) {\n            data = hexToArrayBuffer(data);\n          }\n          cue.value = { key, data };\n          cue.type = MetadataSchema.dateRange;\n          cue.id = id;\n          this.id3Track.addCue(cue);\n          cues[key] = cue;\n        }\n      }\n      dateRangeCuesAppended[id] = {\n        cues,\n        dateRange,\n        durationKnown,\n      };\n    }\n  }\n}\n\nexport default ID3TrackController;\n","import { LevelDetails } from '../loader/level-details';\nimport { AttrList } from '../utils/attr-list';\n\nexport interface LevelParsed {\n  attrs: LevelAttributes;\n  audioCodec?: string;\n  bitrate: number;\n  details?: LevelDetails;\n  height?: number;\n  id?: number;\n  level?: number;\n  name: string;\n  textCodec?: string;\n  unknownCodecs?: string[];\n  url: string;\n  videoCodec?: string;\n  width?: number;\n}\n\nexport interface LevelAttributes extends AttrList {\n  'ALLOWED-CPC'?: string;\n  AUDIO?: string;\n  'AVERAGE-BANDWIDTH'?: string;\n  BANDWIDTH?: string;\n  'CLOSED-CAPTIONS'?: string;\n  CODECS?: string;\n  'FRAME-RATE'?: string;\n  'HDCP-LEVEL'?: 'TYPE-0' | 'TYPE-1' | 'NONE';\n  'PATHWAY-ID'?: string;\n  RESOLUTION?: string;\n  SCORE?: string;\n  'STABLE-VARIANT-ID'?: string;\n  SUBTITLES?: string;\n  'SUPPLEMENTAL-CODECS'?: string;\n  VIDEO?: string;\n  'VIDEO-RANGE'?: 'SDR' | 'HLG' | 'PQ';\n}\n\nexport const HdcpLevels = ['NONE', 'TYPE-0', 'TYPE-1', null] as const;\nexport type HdcpLevel = (typeof HdcpLevels)[number];\n\nexport type VariableMap = Record<string, string>;\n\nexport const enum HlsSkip {\n  No = '',\n  Yes = 'YES',\n  v2 = 'v2',\n}\n\nexport function getSkipValue(details: LevelDetails, msn?: number): HlsSkip {\n  const { canSkipUntil, canSkipDateRanges, endSN } = details;\n  const snChangeGoal = msn !== undefined ? msn - endSN : 0;\n  if (canSkipUntil && snChangeGoal < canSkipUntil) {\n    if (canSkipDateRanges) {\n      return HlsSkip.v2;\n    }\n    return HlsSkip.Yes;\n  }\n  return HlsSkip.No;\n}\n\nexport class HlsUrlParameters {\n  msn?: number;\n  part?: number;\n  skip?: HlsSkip;\n\n  constructor(msn?: number, part?: number, skip?: HlsSkip) {\n    this.msn = msn;\n    this.part = part;\n    this.skip = skip;\n  }\n\n  addDirectives(uri: string): string | never {\n    const url: URL = new self.URL(uri);\n    if (this.msn !== undefined) {\n      url.searchParams.set('_HLS_msn', this.msn.toString());\n    }\n    if (this.part !== undefined) {\n      url.searchParams.set('_HLS_part', this.part.toString());\n    }\n    if (this.skip) {\n      url.searchParams.set('_HLS_skip', this.skip);\n    }\n    return url.href;\n  }\n}\n\nexport class Level {\n  public readonly _attrs: LevelAttributes[];\n  public readonly audioCodec: string | undefined;\n  public readonly bitrate: number;\n  public readonly codecSet: string;\n  public readonly height: number;\n  public readonly id: number;\n  public readonly name: string | undefined;\n  public readonly videoCodec: string | undefined;\n  public readonly width: number;\n  public readonly unknownCodecs: string[] | undefined;\n  public audioGroupIds?: (string | undefined)[];\n  public details?: LevelDetails;\n  public fragmentError: number = 0;\n  public loadError: number = 0;\n  public loaded?: { bytes: number; duration: number };\n  public realBitrate: number = 0;\n  public textGroupIds?: (string | undefined)[];\n  public url: string[];\n  private _urlId: number = 0;\n\n  constructor(data: LevelParsed) {\n    this.url = [data.url];\n    this._attrs = [data.attrs];\n    this.bitrate = data.bitrate;\n    if (data.details) {\n      this.details = data.details;\n    }\n    this.id = data.id || 0;\n    this.name = data.name;\n    this.width = data.width || 0;\n    this.height = data.height || 0;\n    this.audioCodec = data.audioCodec;\n    this.videoCodec = data.videoCodec;\n    this.unknownCodecs = data.unknownCodecs;\n    this.codecSet = [data.videoCodec, data.audioCodec]\n      .filter((c) => c)\n      .join(',')\n      .replace(/\\.[^.,]+/g, '');\n  }\n\n  get maxBitrate(): number {\n    return Math.max(this.realBitrate, this.bitrate);\n  }\n\n  get attrs(): LevelAttributes {\n    return this._attrs[this._urlId];\n  }\n\n  get pathwayId(): string {\n    return this.attrs['PATHWAY-ID'] || '.';\n  }\n\n  get uri(): string {\n    return this.url[this._urlId] || '';\n  }\n\n  get urlId(): number {\n    return this._urlId;\n  }\n\n  set urlId(value: number) {\n    const newValue = value % this.url.length;\n    if (this._urlId !== newValue) {\n      this.fragmentError = 0;\n      this.loadError = 0;\n      this.details = undefined;\n      this._urlId = newValue;\n    }\n  }\n\n  get audioGroupId(): string | undefined {\n    return this.audioGroupIds?.[this.urlId];\n  }\n\n  get textGroupId(): string | undefined {\n    return this.textGroupIds?.[this.urlId];\n  }\n\n  addFallback(data: LevelParsed) {\n    this.url.push(data.url);\n    this._attrs.push(data.attrs);\n  }\n}\n","/**\n * Provides methods dealing with playlist sliding and drift\n */\n\nimport { logger } from '../utils/logger';\nimport { Fragment, Part } from '../loader/fragment';\nimport { LevelDetails } from '../loader/level-details';\nimport type { Level } from '../types/level';\nimport { DateRange } from '../loader/date-range';\n\ntype FragmentIntersection = (oldFrag: Fragment, newFrag: Fragment) => void;\ntype PartIntersection = (oldPart: Part, newPart: Part) => void;\n\nexport function updatePTS(\n  fragments: Fragment[],\n  fromIdx: number,\n  toIdx: number\n): void {\n  const fragFrom = fragments[fromIdx];\n  const fragTo = fragments[toIdx];\n  updateFromToPTS(fragFrom, fragTo);\n}\n\nfunction updateFromToPTS(fragFrom: Fragment, fragTo: Fragment) {\n  const fragToPTS = fragTo.startPTS as number;\n  // if we know startPTS[toIdx]\n  if (Number.isFinite(fragToPTS)) {\n    // update fragment duration.\n    // it helps to fix drifts between playlist reported duration and fragment real duration\n    let duration: number = 0;\n    let frag: Fragment;\n    if (fragTo.sn > fragFrom.sn) {\n      duration = fragToPTS - fragFrom.start;\n      frag = fragFrom;\n    } else {\n      duration = fragFrom.start - fragToPTS;\n      frag = fragTo;\n    }\n    if (frag.duration !== duration) {\n      frag.duration = duration;\n    }\n    // we dont know startPTS[toIdx]\n  } else if (fragTo.sn > fragFrom.sn) {\n    const contiguous = fragFrom.cc === fragTo.cc;\n    // TODO: With part-loading end/durations we need to confirm the whole fragment is loaded before using (or setting) minEndPTS\n    if (contiguous && fragFrom.minEndPTS) {\n      fragTo.start = fragFrom.start + (fragFrom.minEndPTS - fragFrom.start);\n    } else {\n      fragTo.start = fragFrom.start + fragFrom.duration;\n    }\n  } else {\n    fragTo.start = Math.max(fragFrom.start - fragTo.duration, 0);\n  }\n}\n\nexport function updateFragPTSDTS(\n  details: LevelDetails | undefined,\n  frag: Fragment,\n  startPTS: number,\n  endPTS: number,\n  startDTS: number,\n  endDTS: number\n): number {\n  const parsedMediaDuration = endPTS - startPTS;\n  if (parsedMediaDuration <= 0) {\n    logger.warn('Fragment should have a positive duration', frag);\n    endPTS = startPTS + frag.duration;\n    endDTS = startDTS + frag.duration;\n  }\n  let maxStartPTS = startPTS;\n  let minEndPTS = endPTS;\n  const fragStartPts = frag.startPTS as number;\n  const fragEndPts = frag.endPTS as number;\n  if (Number.isFinite(fragStartPts)) {\n    // delta PTS between audio and video\n    const deltaPTS = Math.abs(fragStartPts - startPTS);\n    if (!Number.isFinite(frag.deltaPTS as number)) {\n      frag.deltaPTS = deltaPTS;\n    } else {\n      frag.deltaPTS = Math.max(deltaPTS, frag.deltaPTS as number);\n    }\n\n    maxStartPTS = Math.max(startPTS, fragStartPts);\n    startPTS = Math.min(startPTS, fragStartPts);\n    startDTS = Math.min(startDTS, frag.startDTS);\n\n    minEndPTS = Math.min(endPTS, fragEndPts);\n    endPTS = Math.max(endPTS, fragEndPts);\n    endDTS = Math.max(endDTS, frag.endDTS);\n  }\n\n  const drift = startPTS - frag.start;\n  if (frag.start !== 0) {\n    frag.start = startPTS;\n  }\n  frag.duration = endPTS - frag.start;\n  frag.startPTS = startPTS;\n  frag.maxStartPTS = maxStartPTS;\n  frag.startDTS = startDTS;\n  frag.endPTS = endPTS;\n  frag.minEndPTS = minEndPTS;\n  frag.endDTS = endDTS;\n\n  const sn = frag.sn as number; // 'initSegment'\n  // exit if sn out of range\n  if (!details || sn < details.startSN || sn > details.endSN) {\n    return 0;\n  }\n  let i;\n  const fragIdx = sn - details.startSN;\n  const fragments = details.fragments;\n  // update frag reference in fragments array\n  // rationale is that fragments array might not contain this frag object.\n  // this will happen if playlist has been refreshed between frag loading and call to updateFragPTSDTS()\n  // if we don't update frag, we won't be able to propagate PTS info on the playlist\n  // resulting in invalid sliding computation\n  fragments[fragIdx] = frag;\n  // adjust fragment PTS/duration from seqnum-1 to frag 0\n  for (i = fragIdx; i > 0; i--) {\n    updateFromToPTS(fragments[i], fragments[i - 1]);\n  }\n\n  // adjust fragment PTS/duration from seqnum to last frag\n  for (i = fragIdx; i < fragments.length - 1; i++) {\n    updateFromToPTS(fragments[i], fragments[i + 1]);\n  }\n  if (details.fragmentHint) {\n    updateFromToPTS(fragments[fragments.length - 1], details.fragmentHint);\n  }\n\n  details.PTSKnown = details.alignedSliding = true;\n  return drift;\n}\n\nexport function mergeDetails(\n  oldDetails: LevelDetails,\n  newDetails: LevelDetails\n): void {\n  // Track the last initSegment processed. Initialize it to the last one on the timeline.\n  let currentInitSegment: Fragment | null = null;\n  const oldFragments = oldDetails.fragments;\n  for (let i = oldFragments.length - 1; i >= 0; i--) {\n    const oldInit = oldFragments[i].initSegment;\n    if (oldInit) {\n      currentInitSegment = oldInit;\n      break;\n    }\n  }\n\n  if (oldDetails.fragmentHint) {\n    // prevent PTS and duration from being adjusted on the next hint\n    delete oldDetails.fragmentHint.endPTS;\n  }\n  // check if old/new playlists have fragments in common\n  // loop through overlapping SN and update startPTS , cc, and duration if any found\n  let ccOffset = 0;\n  let PTSFrag;\n  mapFragmentIntersection(\n    oldDetails,\n    newDetails,\n    (oldFrag: Fragment, newFrag: Fragment) => {\n      if (oldFrag.relurl) {\n        // Do not compare CC if the old fragment has no url. This is a level.fragmentHint used by LL-HLS parts.\n        // It maybe be off by 1 if it was created before any parts or discontinuity tags were appended to the end\n        // of the playlist.\n        ccOffset = oldFrag.cc - newFrag.cc;\n      }\n      if (\n        Number.isFinite(oldFrag.startPTS) &&\n        Number.isFinite(oldFrag.endPTS)\n      ) {\n        newFrag.start = newFrag.startPTS = oldFrag.startPTS as number;\n        newFrag.startDTS = oldFrag.startDTS;\n        newFrag.maxStartPTS = oldFrag.maxStartPTS;\n\n        newFrag.endPTS = oldFrag.endPTS;\n        newFrag.endDTS = oldFrag.endDTS;\n        newFrag.minEndPTS = oldFrag.minEndPTS;\n        newFrag.duration =\n          (oldFrag.endPTS as number) - (oldFrag.startPTS as number);\n\n        if (newFrag.duration) {\n          PTSFrag = newFrag;\n        }\n\n        // PTS is known when any segment has startPTS and endPTS\n        newDetails.PTSKnown = newDetails.alignedSliding = true;\n      }\n      newFrag.elementaryStreams = oldFrag.elementaryStreams;\n      newFrag.loader = oldFrag.loader;\n      newFrag.stats = oldFrag.stats;\n      newFrag.urlId = oldFrag.urlId;\n      if (oldFrag.initSegment) {\n        newFrag.initSegment = oldFrag.initSegment;\n        currentInitSegment = oldFrag.initSegment;\n      }\n    }\n  );\n\n  if (currentInitSegment) {\n    const fragmentsToCheck = newDetails.fragmentHint\n      ? newDetails.fragments.concat(newDetails.fragmentHint)\n      : newDetails.fragments;\n    fragmentsToCheck.forEach((frag) => {\n      if (\n        !frag.initSegment ||\n        frag.initSegment.relurl === currentInitSegment?.relurl\n      ) {\n        frag.initSegment = currentInitSegment;\n      }\n    });\n  }\n\n  if (newDetails.skippedSegments) {\n    newDetails.deltaUpdateFailed = newDetails.fragments.some((frag) => !frag);\n    if (newDetails.deltaUpdateFailed) {\n      logger.warn(\n        '[level-helper] Previous playlist missing segments skipped in delta playlist'\n      );\n      for (let i = newDetails.skippedSegments; i--; ) {\n        newDetails.fragments.shift();\n      }\n      newDetails.startSN = newDetails.fragments[0].sn as number;\n      newDetails.startCC = newDetails.fragments[0].cc;\n    } else if (newDetails.canSkipDateRanges) {\n      newDetails.dateRanges = mergeDateRanges(\n        oldDetails.dateRanges,\n        newDetails.dateRanges,\n        newDetails.recentlyRemovedDateranges\n      );\n    }\n  }\n\n  const newFragments = newDetails.fragments;\n  if (ccOffset) {\n    logger.warn('discontinuity sliding from playlist, take drift into account');\n    for (let i = 0; i < newFragments.length; i++) {\n      newFragments[i].cc += ccOffset;\n    }\n  }\n  if (newDetails.skippedSegments) {\n    newDetails.startCC = newDetails.fragments[0].cc;\n  }\n\n  // Merge parts\n  mapPartIntersection(\n    oldDetails.partList,\n    newDetails.partList,\n    (oldPart: Part, newPart: Part) => {\n      newPart.elementaryStreams = oldPart.elementaryStreams;\n      newPart.stats = oldPart.stats;\n    }\n  );\n\n  // if at least one fragment contains PTS info, recompute PTS information for all fragments\n  if (PTSFrag) {\n    updateFragPTSDTS(\n      newDetails,\n      PTSFrag,\n      PTSFrag.startPTS,\n      PTSFrag.endPTS,\n      PTSFrag.startDTS,\n      PTSFrag.endDTS\n    );\n  } else {\n    // ensure that delta is within oldFragments range\n    // also adjust sliding in case delta is 0 (we could have old=[50-60] and new=old=[50-61])\n    // in that case we also need to adjust start offset of all fragments\n    adjustSliding(oldDetails, newDetails);\n  }\n\n  if (newFragments.length) {\n    newDetails.totalduration = newDetails.edge - newFragments[0].start;\n  }\n\n  newDetails.driftStartTime = oldDetails.driftStartTime;\n  newDetails.driftStart = oldDetails.driftStart;\n  const advancedDateTime = newDetails.advancedDateTime;\n  if (newDetails.advanced && advancedDateTime) {\n    const edge = newDetails.edge;\n    if (!newDetails.driftStart) {\n      newDetails.driftStartTime = advancedDateTime;\n      newDetails.driftStart = edge;\n    }\n    newDetails.driftEndTime = advancedDateTime;\n    newDetails.driftEnd = edge;\n  } else {\n    newDetails.driftEndTime = oldDetails.driftEndTime;\n    newDetails.driftEnd = oldDetails.driftEnd;\n    newDetails.advancedDateTime = oldDetails.advancedDateTime;\n  }\n}\n\nfunction mergeDateRanges(\n  oldDateRanges: Record<string, DateRange>,\n  deltaDateRanges: Record<string, DateRange>,\n  recentlyRemovedDateranges: string[] | undefined\n): Record<string, DateRange> {\n  const dateRanges = Object.assign({}, oldDateRanges);\n  if (recentlyRemovedDateranges) {\n    recentlyRemovedDateranges.forEach((id) => {\n      delete dateRanges[id];\n    });\n  }\n  Object.keys(deltaDateRanges).forEach((id) => {\n    const dateRange = new DateRange(deltaDateRanges[id].attr, dateRanges[id]);\n    if (dateRange.isValid) {\n      dateRanges[id] = dateRange;\n    } else {\n      logger.warn(\n        `Ignoring invalid Playlist Delta Update DATERANGE tag: \"${JSON.stringify(\n          deltaDateRanges[id].attr\n        )}\"`\n      );\n    }\n  });\n  return dateRanges;\n}\n\nexport function mapPartIntersection(\n  oldParts: Part[] | null,\n  newParts: Part[] | null,\n  intersectionFn: PartIntersection\n) {\n  if (oldParts && newParts) {\n    let delta = 0;\n    for (let i = 0, len = oldParts.length; i <= len; i++) {\n      const oldPart = oldParts[i];\n      const newPart = newParts[i + delta];\n      if (\n        oldPart &&\n        newPart &&\n        oldPart.index === newPart.index &&\n        oldPart.fragment.sn === newPart.fragment.sn\n      ) {\n        intersectionFn(oldPart, newPart);\n      } else {\n        delta--;\n      }\n    }\n  }\n}\n\nexport function mapFragmentIntersection(\n  oldDetails: LevelDetails,\n  newDetails: LevelDetails,\n  intersectionFn: FragmentIntersection\n): void {\n  const skippedSegments = newDetails.skippedSegments;\n  const start =\n    Math.max(oldDetails.startSN, newDetails.startSN) - newDetails.startSN;\n  const end =\n    (oldDetails.fragmentHint ? 1 : 0) +\n    (skippedSegments\n      ? newDetails.endSN\n      : Math.min(oldDetails.endSN, newDetails.endSN)) -\n    newDetails.startSN;\n  const delta = newDetails.startSN - oldDetails.startSN;\n  const newFrags = newDetails.fragmentHint\n    ? newDetails.fragments.concat(newDetails.fragmentHint)\n    : newDetails.fragments;\n  const oldFrags = oldDetails.fragmentHint\n    ? oldDetails.fragments.concat(oldDetails.fragmentHint)\n    : oldDetails.fragments;\n\n  for (let i = start; i <= end; i++) {\n    const oldFrag = oldFrags[delta + i];\n    let newFrag = newFrags[i];\n    if (skippedSegments && !newFrag && i < skippedSegments) {\n      // Fill in skipped segments in delta playlist\n      newFrag = newDetails.fragments[i] = oldFrag;\n    }\n    if (oldFrag && newFrag) {\n      intersectionFn(oldFrag, newFrag);\n    }\n  }\n}\n\nexport function adjustSliding(\n  oldDetails: LevelDetails,\n  newDetails: LevelDetails\n): void {\n  const delta =\n    newDetails.startSN + newDetails.skippedSegments - oldDetails.startSN;\n  const oldFragments = oldDetails.fragments;\n  if (delta < 0 || delta >= oldFragments.length) {\n    return;\n  }\n  addSliding(newDetails, oldFragments[delta].start);\n}\n\nexport function addSliding(details: LevelDetails, start: number) {\n  if (start) {\n    const fragments = details.fragments;\n    for (let i = details.skippedSegments; i < fragments.length; i++) {\n      fragments[i].start += start;\n    }\n    if (details.fragmentHint) {\n      details.fragmentHint.start += start;\n    }\n  }\n}\n\nexport function computeReloadInterval(\n  newDetails: LevelDetails,\n  distanceToLiveEdgeMs: number = Infinity\n): number {\n  let reloadInterval = 1000 * newDetails.targetduration;\n\n  if (newDetails.updated) {\n    // Use last segment duration when shorter than target duration and near live edge\n    const fragments = newDetails.fragments;\n    const liveEdgeMaxTargetDurations = 4;\n    if (\n      fragments.length &&\n      reloadInterval * liveEdgeMaxTargetDurations > distanceToLiveEdgeMs\n    ) {\n      const lastSegmentDuration =\n        fragments[fragments.length - 1].duration * 1000;\n      if (lastSegmentDuration < reloadInterval) {\n        reloadInterval = lastSegmentDuration;\n      }\n    }\n  } else {\n    // estimate = 'miss half average';\n    // follow HLS Spec, If the client reloads a Playlist file and finds that it has not\n    // changed then it MUST wait for a period of one-half the target\n    // duration before retrying.\n    reloadInterval /= 2;\n  }\n\n  return Math.round(reloadInterval);\n}\n\nexport function getFragmentWithSN(\n  level: Level,\n  sn: number,\n  fragCurrent: Fragment | null\n): Fragment | null {\n  if (!level?.details) {\n    return null;\n  }\n  const levelDetails = level.details;\n  let fragment: Fragment | undefined =\n    levelDetails.fragments[sn - levelDetails.startSN];\n  if (fragment) {\n    return fragment;\n  }\n  fragment = levelDetails.fragmentHint;\n  if (fragment && fragment.sn === sn) {\n    return fragment;\n  }\n  if (sn < levelDetails.startSN && fragCurrent && fragCurrent.sn === sn) {\n    return fragCurrent;\n  }\n  return null;\n}\n\nexport function getPartWith(\n  level: Level,\n  sn: number,\n  partIndex: number\n): Part | null {\n  if (!level?.details) {\n    return null;\n  }\n  return findPart(level.details?.partList, sn, partIndex);\n}\n\nexport function findPart(\n  partList: Part[] | null | undefined,\n  sn: number,\n  partIndex: number\n): Part | null {\n  if (partList) {\n    for (let i = partList.length; i--; ) {\n      const part = partList[i];\n      if (part.index === partIndex && part.fragment.sn === sn) {\n        return part;\n      }\n    }\n  }\n  return null;\n}\n","import { LoadPolicy, LoaderConfig, RetryConfig } from '../config';\nimport { ErrorDetails } from '../errors';\nimport { ErrorData } from '../types/events';\n\nexport function isTimeoutError(error: ErrorData): boolean {\n  switch (error.details) {\n    case ErrorDetails.FRAG_LOAD_TIMEOUT:\n    case ErrorDetails.KEY_LOAD_TIMEOUT:\n    case ErrorDetails.LEVEL_LOAD_TIMEOUT:\n    case ErrorDetails.MANIFEST_LOAD_TIMEOUT:\n      return true;\n  }\n  return false;\n}\n\nexport function getRetryConfig(\n  loadPolicy: LoadPolicy,\n  error: ErrorData\n): RetryConfig | null {\n  const isTimeout = isTimeoutError(error);\n  return loadPolicy.default[`${isTimeout ? 'timeout' : 'error'}Retry`];\n}\n\nexport function getRetryDelay(\n  retryConfig: RetryConfig,\n  retryCount: number\n): number {\n  // exponential backoff capped to max retry delay\n  const backoffFactor =\n    retryConfig.backoff === 'linear' ? 1 : Math.pow(2, retryCount);\n  return Math.min(\n    backoffFactor * retryConfig.retryDelayMs,\n    retryConfig.maxRetryDelayMs\n  );\n}\n\nexport function getLoaderConfigWithoutReties(\n  loderConfig: LoaderConfig\n): LoaderConfig {\n  return {\n    ...loderConfig,\n    ...{\n      errorRetry: null,\n      timeoutRetry: null,\n    },\n  };\n}\n\nexport function shouldRetry(\n  retryConfig: RetryConfig | null | undefined,\n  retryCount: number,\n  isTimeout: boolean,\n  httpStatus?: number | undefined\n): retryConfig is RetryConfig & boolean {\n  return (\n    !!retryConfig &&\n    retryCount < retryConfig.maxNumRetry &&\n    (retryForHttpStatus(httpStatus) || !!isTimeout)\n  );\n}\n\nexport function retryForHttpStatus(httpStatus: number | undefined) {\n  // Do not retry on status 4xx, status 0 (CORS error), or undefined (decrypt/gap/parse error)\n  return (\n    (httpStatus === 0 && navigator.onLine === false) ||\n    (!!httpStatus && (httpStatus < 400 || httpStatus > 499))\n  );\n}\n","import BinarySearch from '../utils/binary-search';\nimport { Fragment } from '../loader/fragment';\n\n/**\n * Returns first fragment whose endPdt value exceeds the given PDT, or null.\n * @param fragments - The array of candidate fragments\n * @param PDTValue - The PDT value which must be exceeded\n * @param maxFragLookUpTolerance - The amount of time that a fragment's start/end can be within in order to be considered contiguous\n */\nexport function findFragmentByPDT(\n  fragments: Array<Fragment>,\n  PDTValue: number | null,\n  maxFragLookUpTolerance: number\n): Fragment | null {\n  if (\n    PDTValue === null ||\n    !Array.isArray(fragments) ||\n    !fragments.length ||\n    !Number.isFinite(PDTValue)\n  ) {\n    return null;\n  }\n\n  // if less than start\n  const startPDT = fragments[0].programDateTime;\n  if (PDTValue < (startPDT || 0)) {\n    return null;\n  }\n\n  const endPDT = fragments[fragments.length - 1].endProgramDateTime;\n  if (PDTValue >= (endPDT || 0)) {\n    return null;\n  }\n\n  maxFragLookUpTolerance = maxFragLookUpTolerance || 0;\n  for (let seg = 0; seg < fragments.length; ++seg) {\n    const frag = fragments[seg];\n    if (pdtWithinToleranceTest(PDTValue, maxFragLookUpTolerance, frag)) {\n      return frag;\n    }\n  }\n\n  return null;\n}\n\n/**\n * Finds a fragment based on the SN of the previous fragment; or based on the needs of the current buffer.\n * This method compensates for small buffer gaps by applying a tolerance to the start of any candidate fragment, thus\n * breaking any traps which would cause the same fragment to be continuously selected within a small range.\n * @param fragPrevious - The last frag successfully appended\n * @param fragments - The array of candidate fragments\n * @param bufferEnd - The end of the contiguous buffered range the playhead is currently within\n * @param maxFragLookUpTolerance - The amount of time that a fragment's start/end can be within in order to be considered contiguous\n * @returns a matching fragment or null\n */\nexport function findFragmentByPTS(\n  fragPrevious: Fragment | null,\n  fragments: Array<Fragment>,\n  bufferEnd: number = 0,\n  maxFragLookUpTolerance: number = 0\n): Fragment | null {\n  let fragNext: Fragment | null = null;\n  if (fragPrevious) {\n    fragNext =\n      fragments[\n        (fragPrevious.sn as number) - (fragments[0].sn as number) + 1\n      ] || null;\n  } else if (bufferEnd === 0 && fragments[0].start === 0) {\n    fragNext = fragments[0];\n  }\n  // Prefer the next fragment if it's within tolerance\n  if (\n    fragNext &&\n    fragmentWithinToleranceTest(bufferEnd, maxFragLookUpTolerance, fragNext) ===\n      0\n  ) {\n    return fragNext;\n  }\n  // We might be seeking past the tolerance so find the best match\n  const foundFragment = BinarySearch.search(\n    fragments,\n    fragmentWithinToleranceTest.bind(null, bufferEnd, maxFragLookUpTolerance)\n  );\n  if (foundFragment && (foundFragment !== fragPrevious || !fragNext)) {\n    return foundFragment;\n  }\n  // If no match was found return the next fragment after fragPrevious, or null\n  return fragNext;\n}\n\n/**\n * The test function used by the findFragmentBySn's BinarySearch to look for the best match to the current buffer conditions.\n * @param candidate - The fragment to test\n * @param bufferEnd - The end of the current buffered range the playhead is currently within\n * @param maxFragLookUpTolerance - The amount of time that a fragment's start can be within in order to be considered contiguous\n * @returns 0 if it matches, 1 if too low, -1 if too high\n */\nexport function fragmentWithinToleranceTest(\n  bufferEnd = 0,\n  maxFragLookUpTolerance = 0,\n  candidate: Fragment\n) {\n  // eagerly accept an accurate match (no tolerance)\n  if (\n    candidate.start <= bufferEnd &&\n    candidate.start + candidate.duration > bufferEnd\n  ) {\n    return 0;\n  }\n  // offset should be within fragment boundary - config.maxFragLookUpTolerance\n  // this is to cope with situations like\n  // bufferEnd = 9.991\n  // frag[Ø] : [0,10]\n  // frag[1] : [10,20]\n  // bufferEnd is within frag[0] range ... although what we are expecting is to return frag[1] here\n  //              frag start               frag start+duration\n  //                  |-----------------------------|\n  //              <--->                         <--->\n  //  ...--------><-----------------------------><---------....\n  // previous frag         matching fragment         next frag\n  //  return -1             return 0                 return 1\n  // logger.log(`level/sn/start/end/bufEnd:${level}/${candidate.sn}/${candidate.start}/${(candidate.start+candidate.duration)}/${bufferEnd}`);\n  // Set the lookup tolerance to be small enough to detect the current segment - ensures we don't skip over very small segments\n  const candidateLookupTolerance = Math.min(\n    maxFragLookUpTolerance,\n    candidate.duration + (candidate.deltaPTS ? candidate.deltaPTS : 0)\n  );\n  if (\n    candidate.start + candidate.duration - candidateLookupTolerance <=\n    bufferEnd\n  ) {\n    return 1;\n  } else if (\n    candidate.start - candidateLookupTolerance > bufferEnd &&\n    candidate.start\n  ) {\n    // if maxFragLookUpTolerance will have negative value then don't return -1 for first element\n    return -1;\n  }\n\n  return 0;\n}\n\n/**\n * The test function used by the findFragmentByPdt's BinarySearch to look for the best match to the current buffer conditions.\n * This function tests the candidate's program date time values, as represented in Unix time\n * @param candidate - The fragment to test\n * @param pdtBufferEnd - The Unix time representing the end of the current buffered range\n * @param maxFragLookUpTolerance - The amount of time that a fragment's start can be within in order to be considered contiguous\n * @returns true if contiguous, false otherwise\n */\nexport function pdtWithinToleranceTest(\n  pdtBufferEnd: number,\n  maxFragLookUpTolerance: number,\n  candidate: Fragment\n): boolean {\n  const candidateLookupTolerance =\n    Math.min(\n      maxFragLookUpTolerance,\n      candidate.duration + (candidate.deltaPTS ? candidate.deltaPTS : 0)\n    ) * 1000;\n\n  // endProgramDateTime can be null, default to zero\n  const endProgramDateTime = candidate.endProgramDateTime || 0;\n  return endProgramDateTime - candidateLookupTolerance > pdtBufferEnd;\n}\n\nexport function findFragWithCC(\n  fragments: Fragment[],\n  cc: number\n): Fragment | null {\n  return BinarySearch.search(fragments, (candidate) => {\n    if (candidate.cc < cc) {\n      return 1;\n    } else if (candidate.cc > cc) {\n      return -1;\n    } else {\n      return 0;\n    }\n  });\n}\n","import { Events } from '../events';\nimport { ErrorDetails, ErrorTypes } from '../errors';\nimport { PlaylistContextType, PlaylistLevelType } from '../types/loader';\nimport {\n  getRetryConfig,\n  isTimeoutError,\n  shouldRetry,\n} from '../utils/error-helper';\nimport { findFragmentByPTS } from './fragment-finders';\nimport { HdcpLevel, HdcpLevels, type Level } from '../types/level';\nimport { logger } from '../utils/logger';\nimport type Hls from '../hls';\nimport type { RetryConfig } from '../config';\nimport type { NetworkComponentAPI } from '../types/component-api';\nimport type { ErrorData } from '../types/events';\nimport type { Fragment } from '../loader/fragment';\nimport type { LevelDetails } from '../hls';\n\nconst RENDITION_PENALTY_DURATION_MS = 300000;\n\nexport const enum NetworkErrorAction {\n  DoNothing = 0,\n  SendEndCallback = 1, // Reserved for future use\n  SendAlternateToPenaltyBox = 2,\n  RemoveAlternatePermanently = 3, // Reserved for future use\n  InsertDiscontinuity = 4, // Reserved for future use\n  RetryRequest = 5,\n}\n\nexport const enum ErrorActionFlags {\n  None = 0,\n  MoveAllAlternatesMatchingHost = 1,\n  MoveAllAlternatesMatchingHDCP = 1 << 1,\n  SwitchToSDR = 1 << 2, // Reserved for future use\n}\n\nexport type IErrorAction = {\n  action: NetworkErrorAction;\n  flags: ErrorActionFlags;\n  retryCount?: number;\n  retryConfig?: RetryConfig;\n  hdcpLevel?: HdcpLevel;\n  nextAutoLevel?: number;\n  resolved?: boolean;\n};\n\ntype PenalizedRendition = {\n  lastErrorPerfMs: number;\n  errors: ErrorData[];\n  details?: LevelDetails;\n};\n\ntype PenalizedRenditions = { [key: number]: PenalizedRendition };\n\nexport default class ErrorController implements NetworkComponentAPI {\n  private readonly hls: Hls;\n  private playlistError: number = 0;\n  private penalizedRenditions: PenalizedRenditions = {};\n  private log: (msg: any) => void;\n  private warn: (msg: any) => void;\n  private error: (msg: any) => void;\n\n  constructor(hls: Hls) {\n    this.hls = hls;\n    this.log = logger.log.bind(logger, `[info]:`);\n    this.warn = logger.warn.bind(logger, `[warning]:`);\n    this.error = logger.error.bind(logger, `[error]:`);\n    this.registerListeners();\n  }\n\n  private registerListeners() {\n    const hls = this.hls;\n    hls.on(Events.ERROR, this.onError, this);\n    hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    hls.on(Events.LEVEL_UPDATED, this.onLevelUpdated, this);\n  }\n\n  private unregisterListeners() {\n    const hls = this.hls;\n    if (!hls) {\n      return;\n    }\n    hls.off(Events.ERROR, this.onError, this);\n    hls.off(Events.ERROR, this.onErrorOut, this);\n    hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    hls.off(Events.LEVEL_UPDATED, this.onLevelUpdated, this);\n  }\n\n  destroy() {\n    this.unregisterListeners();\n    // @ts-ignore\n    this.hls = null;\n    this.penalizedRenditions = {};\n  }\n\n  startLoad(startPosition: number): void {\n    this.playlistError = 0;\n  }\n\n  stopLoad(): void {}\n\n  private getVariantLevelIndex(frag: Fragment | undefined): number {\n    return frag?.type === PlaylistLevelType.MAIN\n      ? frag.level\n      : this.hls.loadLevel;\n  }\n\n  private onManifestLoading() {\n    this.playlistError = 0;\n    this.penalizedRenditions = {};\n  }\n\n  private onLevelUpdated() {\n    this.playlistError = 0;\n  }\n\n  private onError(event: Events.ERROR, data: ErrorData) {\n    if (data.fatal) {\n      return;\n    }\n    const hls = this.hls;\n    const context = data.context;\n\n    switch (data.details) {\n      case ErrorDetails.FRAG_LOAD_ERROR:\n      case ErrorDetails.FRAG_LOAD_TIMEOUT:\n      case ErrorDetails.KEY_LOAD_ERROR:\n      case ErrorDetails.KEY_LOAD_TIMEOUT:\n        data.errorAction = this.getFragRetryOrSwitchAction(data);\n        return;\n      case ErrorDetails.FRAG_PARSING_ERROR:\n        // ignore empty segment errors marked as gap\n        if (data.frag?.gap) {\n          data.errorAction = {\n            action: NetworkErrorAction.DoNothing,\n            flags: ErrorActionFlags.None,\n          };\n          return;\n        }\n      // falls through\n      case ErrorDetails.FRAG_GAP:\n      case ErrorDetails.FRAG_DECRYPT_ERROR: {\n        // Switch level if possible, otherwise allow retry count to reach max error retries\n        data.errorAction = this.getFragRetryOrSwitchAction(data);\n        data.errorAction.action = NetworkErrorAction.SendAlternateToPenaltyBox;\n        return;\n      }\n      case ErrorDetails.LEVEL_EMPTY_ERROR:\n      case ErrorDetails.LEVEL_PARSING_ERROR:\n        {\n          // Only retry when empty and live\n          const levelIndex =\n            data.parent === PlaylistLevelType.MAIN\n              ? (data.level as number)\n              : hls.loadLevel;\n          if (\n            data.details === ErrorDetails.LEVEL_EMPTY_ERROR &&\n            !!data.context?.levelDetails?.live\n          ) {\n            data.errorAction = this.getPlaylistRetryOrSwitchAction(\n              data,\n              levelIndex\n            );\n          } else {\n            // Escalate to fatal if not retrying or switching\n            data.levelRetry = false;\n            data.errorAction = this.getLevelSwitchAction(data, levelIndex);\n          }\n        }\n        return;\n      case ErrorDetails.LEVEL_LOAD_ERROR:\n      case ErrorDetails.LEVEL_LOAD_TIMEOUT:\n        if (typeof context?.level === 'number') {\n          data.errorAction = this.getPlaylistRetryOrSwitchAction(\n            data,\n            context.level\n          );\n        }\n        return;\n      case ErrorDetails.AUDIO_TRACK_LOAD_ERROR:\n      case ErrorDetails.AUDIO_TRACK_LOAD_TIMEOUT:\n      case ErrorDetails.SUBTITLE_LOAD_ERROR:\n      case ErrorDetails.SUBTITLE_TRACK_LOAD_TIMEOUT:\n        if (context) {\n          const level = hls.levels[hls.loadLevel];\n          if (\n            level &&\n            ((context.type === PlaylistContextType.AUDIO_TRACK &&\n              context.groupId === level.audioGroupId) ||\n              (context.type === PlaylistContextType.SUBTITLE_TRACK &&\n                context.groupId === level.textGroupId))\n          ) {\n            // Perform Pathway switch or Redundant failover if possible for fastest recovery\n            // otherwise allow playlist retry count to reach max error retries\n            data.errorAction = this.getPlaylistRetryOrSwitchAction(\n              data,\n              hls.loadLevel\n            );\n            data.errorAction.action =\n              NetworkErrorAction.SendAlternateToPenaltyBox;\n            data.errorAction.flags =\n              ErrorActionFlags.MoveAllAlternatesMatchingHost;\n            return;\n          }\n        }\n        return;\n      case ErrorDetails.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED:\n        {\n          const level = hls.levels[hls.loadLevel];\n          const restrictedHdcpLevel = level?.attrs['HDCP-LEVEL'];\n          if (restrictedHdcpLevel) {\n            data.errorAction = {\n              action: NetworkErrorAction.SendAlternateToPenaltyBox,\n              flags: ErrorActionFlags.MoveAllAlternatesMatchingHDCP,\n              hdcpLevel: restrictedHdcpLevel,\n            };\n          }\n        }\n        return;\n      case ErrorDetails.BUFFER_ADD_CODEC_ERROR:\n      case ErrorDetails.REMUX_ALLOC_ERROR:\n        data.errorAction = this.getLevelSwitchAction(\n          data,\n          data.level ?? hls.loadLevel\n        );\n        return;\n      case ErrorDetails.INTERNAL_EXCEPTION:\n      case ErrorDetails.BUFFER_APPENDING_ERROR:\n      case ErrorDetails.BUFFER_APPEND_ERROR:\n      case ErrorDetails.BUFFER_FULL_ERROR:\n      case ErrorDetails.LEVEL_SWITCH_ERROR:\n      case ErrorDetails.BUFFER_STALLED_ERROR:\n      case ErrorDetails.BUFFER_SEEK_OVER_HOLE:\n      case ErrorDetails.BUFFER_NUDGE_ON_STALL:\n        data.errorAction = {\n          action: NetworkErrorAction.DoNothing,\n          flags: ErrorActionFlags.None,\n        };\n        return;\n    }\n\n    if (data.type === ErrorTypes.KEY_SYSTEM_ERROR) {\n      const levelIndex = this.getVariantLevelIndex(data.frag);\n      // Do not retry level. Escalate to fatal if switching levels fails.\n      data.levelRetry = false;\n      data.errorAction = this.getLevelSwitchAction(data, levelIndex);\n      return;\n    }\n  }\n\n  private getPlaylistRetryOrSwitchAction(\n    data: ErrorData,\n    levelIndex: number | null | undefined\n  ): IErrorAction {\n    const hls = this.hls;\n    const retryConfig = getRetryConfig(hls.config.playlistLoadPolicy, data);\n    const retryCount = this.playlistError++;\n    const httpStatus = data.response?.code;\n    const retry = shouldRetry(\n      retryConfig,\n      retryCount,\n      isTimeoutError(data),\n      httpStatus\n    );\n    if (retry) {\n      return {\n        action: NetworkErrorAction.RetryRequest,\n        flags: ErrorActionFlags.None,\n        retryConfig,\n        retryCount,\n      };\n    }\n    const errorAction = this.getLevelSwitchAction(data, levelIndex);\n    if (retryConfig) {\n      errorAction.retryConfig = retryConfig;\n      errorAction.retryCount = retryCount;\n    }\n    return errorAction;\n  }\n\n  private getFragRetryOrSwitchAction(data: ErrorData): IErrorAction {\n    const hls = this.hls;\n    // Share fragment error count accross media options (main, audio, subs)\n    // This allows for level based rendition switching when media option assets fail\n    const variantLevelIndex = this.getVariantLevelIndex(data.frag);\n    const level = hls.levels[variantLevelIndex];\n    const { fragLoadPolicy, keyLoadPolicy } = hls.config;\n    const retryConfig = getRetryConfig(\n      data.details.startsWith('key') ? keyLoadPolicy : fragLoadPolicy,\n      data\n    );\n    const fragmentErrors = hls.levels.reduce(\n      (acc, level) => acc + level.fragmentError,\n      0\n    );\n    // Switch levels when out of retried or level index out of bounds\n    if (level) {\n      if (data.details !== ErrorDetails.FRAG_GAP) {\n        level.fragmentError++;\n      }\n      const httpStatus = data.response?.code;\n      const retry = shouldRetry(\n        retryConfig,\n        fragmentErrors,\n        isTimeoutError(data),\n        httpStatus\n      );\n      if (retry) {\n        return {\n          action: NetworkErrorAction.RetryRequest,\n          flags: ErrorActionFlags.None,\n          retryConfig,\n          retryCount: fragmentErrors,\n        };\n      }\n    }\n    // Reach max retry count, or Missing level reference\n    // Switch to valid index\n    const errorAction = this.getLevelSwitchAction(data, variantLevelIndex);\n    // Add retry details to allow skipping of FRAG_PARSING_ERROR\n    if (retryConfig) {\n      errorAction.retryConfig = retryConfig;\n      errorAction.retryCount = fragmentErrors;\n    }\n    return errorAction;\n  }\n\n  private getLevelSwitchAction(\n    data: ErrorData,\n    levelIndex: number | null | undefined\n  ): IErrorAction {\n    const hls = this.hls;\n    if (levelIndex === null || levelIndex === undefined) {\n      levelIndex = hls.loadLevel;\n    }\n    const level = this.hls.levels[levelIndex];\n    if (level) {\n      level.loadError++;\n      if (hls.autoLevelEnabled) {\n        // Search for next level to retry\n        let nextLevel = -1;\n        const { levels, loadLevel, minAutoLevel, maxAutoLevel } = hls;\n        const fragErrorType = data.frag?.type;\n        const { type: playlistErrorType, groupId: playlistErrorGroupId } =\n          data.context ?? {};\n        for (let i = levels.length; i--; ) {\n          const candidate = (i + loadLevel) % levels.length;\n          if (\n            candidate !== loadLevel &&\n            candidate >= minAutoLevel &&\n            candidate <= maxAutoLevel &&\n            levels[candidate].loadError === 0\n          ) {\n            const levelCandidate = levels[candidate];\n            // Skip level switch if GAP tag is found in next level at same position\n            if (data.details === ErrorDetails.FRAG_GAP && data.frag) {\n              const levelDetails = levels[candidate].details;\n              if (levelDetails) {\n                const fragCandidate = findFragmentByPTS(\n                  data.frag,\n                  levelDetails.fragments,\n                  data.frag.start\n                );\n                if (fragCandidate?.gap) {\n                  continue;\n                }\n              }\n            } else if (\n              (playlistErrorType === PlaylistContextType.AUDIO_TRACK &&\n                playlistErrorGroupId === levelCandidate.audioGroupId) ||\n              (playlistErrorType === PlaylistContextType.SUBTITLE_TRACK &&\n                playlistErrorGroupId === levelCandidate.textGroupId)\n            ) {\n              // For audio/subs playlist errors find another group ID or fallthrough to redundant fail-over\n              continue;\n            } else if (\n              (fragErrorType === PlaylistLevelType.AUDIO &&\n                level.audioGroupId === levelCandidate.audioGroupId) ||\n              (fragErrorType === PlaylistLevelType.SUBTITLE &&\n                level.textGroupId === levelCandidate.textGroupId)\n            ) {\n              // For audio/subs frag errors find another group ID or fallthrough to redundant fail-over\n              continue;\n            }\n            nextLevel = candidate;\n            break;\n          }\n        }\n        if (nextLevel > -1 && hls.loadLevel !== nextLevel) {\n          data.levelRetry = true;\n          this.playlistError = 0;\n          return {\n            action: NetworkErrorAction.SendAlternateToPenaltyBox,\n            flags: ErrorActionFlags.None,\n            nextAutoLevel: nextLevel,\n          };\n        }\n      }\n    }\n    // No levels to switch / Manual level selection / Level not found\n    // Resolve with Pathway switch, Redundant fail-over, or stay on lowest Level\n    return {\n      action: NetworkErrorAction.SendAlternateToPenaltyBox,\n      flags: ErrorActionFlags.MoveAllAlternatesMatchingHost,\n    };\n  }\n\n  public onErrorOut(event: Events.ERROR, data: ErrorData) {\n    switch (data.errorAction?.action) {\n      case NetworkErrorAction.DoNothing:\n        break;\n      case NetworkErrorAction.SendAlternateToPenaltyBox:\n        this.sendAlternateToPenaltyBox(data);\n        if (\n          !data.errorAction.resolved &&\n          data.details !== ErrorDetails.FRAG_GAP\n        ) {\n          data.fatal = true;\n        }\n        break;\n      case NetworkErrorAction.RetryRequest:\n        // handled by stream and playlist/level controllers\n        break;\n    }\n\n    if (data.fatal) {\n      this.hls.stopLoad();\n      return;\n    }\n  }\n\n  private sendAlternateToPenaltyBox(data: ErrorData) {\n    const hls = this.hls;\n    const errorAction = data.errorAction;\n    if (!errorAction) {\n      return;\n    }\n    const { flags, hdcpLevel, nextAutoLevel } = errorAction;\n\n    switch (flags) {\n      case ErrorActionFlags.None:\n        this.switchLevel(data, nextAutoLevel);\n        break;\n      case ErrorActionFlags.MoveAllAlternatesMatchingHost:\n        {\n          // Handle Redundant Levels here. Pathway switching is handled by content-steering-controller\n          if (!errorAction.resolved) {\n            errorAction.resolved = this.redundantFailover(data);\n          }\n        }\n        break;\n      case ErrorActionFlags.MoveAllAlternatesMatchingHDCP:\n        if (hdcpLevel) {\n          hls.maxHdcpLevel = HdcpLevels[HdcpLevels.indexOf(hdcpLevel) - 1];\n          errorAction.resolved = true;\n        }\n        this.warn(\n          `Restricting playback to HDCP-LEVEL of \"${hls.maxHdcpLevel}\" or lower`\n        );\n        break;\n    }\n    // If not resolved by previous actions try to switch to next level\n    if (!errorAction.resolved) {\n      this.switchLevel(data, nextAutoLevel);\n    }\n  }\n\n  private switchLevel(data: ErrorData, levelIndex: number | undefined) {\n    if (levelIndex !== undefined && data.errorAction) {\n      this.warn(`switching to level ${levelIndex} after ${data.details}`);\n      this.hls.nextAutoLevel = levelIndex;\n      data.errorAction.resolved = true;\n      // Stream controller is responsible for this but won't switch on false start\n      this.hls.nextLoadLevel = this.hls.nextAutoLevel;\n    }\n  }\n\n  private redundantFailover(data: ErrorData): boolean {\n    const { hls, penalizedRenditions } = this;\n    const levelIndex: number =\n      data.parent === PlaylistLevelType.MAIN\n        ? (data.level as number)\n        : hls.loadLevel;\n    const level = hls.levels[levelIndex];\n    const redundantLevels = level.url.length;\n    const errorUrlId = data.frag ? data.frag.urlId : level.urlId;\n    if (level.urlId === errorUrlId && (!data.frag || level.details)) {\n      this.penalizeRendition(level, data);\n    }\n    for (let i = 1; i < redundantLevels; i++) {\n      const newUrlId = (errorUrlId + i) % redundantLevels;\n      const penalizedRendition = penalizedRenditions[newUrlId];\n      // Check if rendition is penalized and skip if it is a bad fit for failover\n      if (\n        !penalizedRendition ||\n        checkExpired(penalizedRendition, data, penalizedRenditions[errorUrlId])\n      ) {\n        // delete penalizedRenditions[newUrlId];\n        // Update the url id of all levels so that we stay on the same set of variants when level switching\n        this.warn(\n          `Switching to Redundant Stream ${newUrlId + 1}/${redundantLevels}: \"${\n            level.url[newUrlId]\n          }\" after ${data.details}`\n        );\n        this.playlistError = 0;\n        hls.levels.forEach((lv) => {\n          lv.urlId = newUrlId;\n        });\n        hls.nextLoadLevel = levelIndex;\n        return true;\n      }\n    }\n    return false;\n  }\n\n  private penalizeRendition(level: Level, data: ErrorData) {\n    const { penalizedRenditions } = this;\n    const penalizedRendition = penalizedRenditions[level.urlId] || {\n      lastErrorPerfMs: 0,\n      errors: [],\n      details: undefined,\n    };\n    penalizedRendition.lastErrorPerfMs = performance.now();\n    penalizedRendition.errors.push(data);\n    penalizedRendition.details = level.details;\n    penalizedRenditions[level.urlId] = penalizedRendition;\n  }\n}\n\nfunction checkExpired(\n  penalizedRendition: PenalizedRendition,\n  data: ErrorData,\n  currentPenaltyState: PenalizedRendition | undefined\n): boolean {\n  // Expire penalty for switching back to rendition after RENDITION_PENALTY_DURATION_MS\n  if (\n    performance.now() - penalizedRendition.lastErrorPerfMs >\n    RENDITION_PENALTY_DURATION_MS\n  ) {\n    return true;\n  }\n  // Expire penalty on GAP tag error if rendition has no GAP at position (does not cover media tracks)\n  const lastErrorDetails = penalizedRendition.details;\n  if (data.details === ErrorDetails.FRAG_GAP && lastErrorDetails && data.frag) {\n    const position = data.frag.start;\n    const candidateFrag = findFragmentByPTS(\n      null,\n      lastErrorDetails.fragments,\n      position\n    );\n    if (candidateFrag && !candidateFrag.gap) {\n      return true;\n    }\n  }\n  // Expire penalty if there are more errors in currentLevel than in penalizedRendition\n  if (\n    currentPenaltyState &&\n    penalizedRendition.errors.length < currentPenaltyState.errors.length\n  ) {\n    const lastCandidateError =\n      penalizedRendition.errors[penalizedRendition.errors.length - 1];\n    if (\n      lastErrorDetails &&\n      lastCandidateError.frag &&\n      data.frag &&\n      Math.abs(lastCandidateError.frag.start - data.frag.start) >\n        lastErrorDetails.targetduration * 3\n    ) {\n      return true;\n    }\n  }\n  return false;\n}\n","/*\n * Level Controller\n */\n\nimport {\n  ManifestLoadedData,\n  ManifestParsedData,\n  LevelLoadedData,\n  TrackSwitchedData,\n  FragLoadedData,\n  ErrorData,\n  LevelSwitchingData,\n  LevelsUpdatedData,\n  ManifestLoadingData,\n} from '../types/events';\nimport { Level } from '../types/level';\nimport { Events } from '../events';\nimport { ErrorTypes, ErrorDetails } from '../errors';\nimport { isCodecSupportedInMp4 } from '../utils/codecs';\nimport BasePlaylistController from './base-playlist-controller';\nimport { PlaylistContextType, PlaylistLevelType } from '../types/loader';\nimport type Hls from '../hls';\nimport type { HlsUrlParameters, LevelParsed } from '../types/level';\nimport type { MediaPlaylist } from '../types/media-playlist';\nimport ContentSteeringController from './content-steering-controller';\n\nlet chromeOrFirefox: boolean;\n\nexport default class LevelController extends BasePlaylistController {\n  private _levels: Level[] = [];\n  private _firstLevel: number = -1;\n  private _startLevel?: number;\n  private currentLevel: Level | null = null;\n  private currentLevelIndex: number = -1;\n  private manualLevelIndex: number = -1;\n  private steering: ContentSteeringController | null;\n\n  public onParsedComplete!: Function;\n\n  constructor(\n    hls: Hls,\n    contentSteeringController: ContentSteeringController | null\n  ) {\n    super(hls, '[level-controller]');\n    this.steering = contentSteeringController;\n    this._registerListeners();\n  }\n\n  private _registerListeners() {\n    const { hls } = this;\n    hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    hls.on(Events.MANIFEST_LOADED, this.onManifestLoaded, this);\n    hls.on(Events.LEVEL_LOADED, this.onLevelLoaded, this);\n    hls.on(Events.LEVELS_UPDATED, this.onLevelsUpdated, this);\n    hls.on(Events.AUDIO_TRACK_SWITCHED, this.onAudioTrackSwitched, this);\n    hls.on(Events.FRAG_LOADED, this.onFragLoaded, this);\n    hls.on(Events.ERROR, this.onError, this);\n  }\n\n  private _unregisterListeners() {\n    const { hls } = this;\n    hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    hls.off(Events.MANIFEST_LOADED, this.onManifestLoaded, this);\n    hls.off(Events.LEVEL_LOADED, this.onLevelLoaded, this);\n    hls.off(Events.LEVELS_UPDATED, this.onLevelsUpdated, this);\n    hls.off(Events.AUDIO_TRACK_SWITCHED, this.onAudioTrackSwitched, this);\n    hls.off(Events.FRAG_LOADED, this.onFragLoaded, this);\n    hls.off(Events.ERROR, this.onError, this);\n  }\n\n  public destroy() {\n    this._unregisterListeners();\n    this.steering = null;\n    this.resetLevels();\n    super.destroy();\n  }\n\n  public startLoad(): void {\n    const levels = this._levels;\n\n    // clean up live level details to force reload them, and reset load errors\n    levels.forEach((level) => {\n      level.loadError = 0;\n      level.fragmentError = 0;\n    });\n\n    super.startLoad();\n  }\n\n  private resetLevels() {\n    this._startLevel = undefined;\n    this.manualLevelIndex = -1;\n    this.currentLevelIndex = -1;\n    this.currentLevel = null;\n    this._levels = [];\n  }\n\n  private onManifestLoading(\n    event: Events.MANIFEST_LOADING,\n    data: ManifestLoadingData\n  ) {\n    this.resetLevels();\n  }\n\n  protected onManifestLoaded(\n    event: Events.MANIFEST_LOADED,\n    data: ManifestLoadedData\n  ) {\n    const levels: Level[] = [];\n    const levelSet: { [key: string]: Level } = {};\n    let levelFromSet: Level;\n\n    // regroup redundant levels together\n    data.levels.forEach((levelParsed: LevelParsed) => {\n      const attributes = levelParsed.attrs;\n\n      // erase audio codec info if browser does not support mp4a.40.34.\n      // demuxer will autodetect codec and fallback to mpeg/audio\n      if (levelParsed.audioCodec?.indexOf('mp4a.40.34') !== -1) {\n        chromeOrFirefox ||= /chrome|firefox/i.test(navigator.userAgent);\n        if (chromeOrFirefox) {\n          levelParsed.audioCodec = undefined;\n        }\n      }\n\n      const {\n        AUDIO,\n        CODECS,\n        'FRAME-RATE': FRAMERATE,\n        'PATHWAY-ID': PATHWAY,\n        RESOLUTION,\n        SUBTITLES,\n      } = attributes;\n      const contentSteeringPrefix = __USE_CONTENT_STEERING__\n        ? `${PATHWAY || '.'}-`\n        : '';\n      const levelKey = `${contentSteeringPrefix}${levelParsed.bitrate}-${RESOLUTION}-${FRAMERATE}-${CODECS}`;\n      levelFromSet = levelSet[levelKey];\n\n      if (!levelFromSet) {\n        levelFromSet = new Level(levelParsed);\n        levelSet[levelKey] = levelFromSet;\n        levels.push(levelFromSet);\n      } else {\n        levelFromSet.addFallback(levelParsed);\n      }\n\n      addGroupId(levelFromSet, 'audio', AUDIO);\n      addGroupId(levelFromSet, 'text', SUBTITLES);\n    });\n\n    this.filterAndSortMediaOptions(levels, data);\n  }\n\n  private filterAndSortMediaOptions(\n    unfilteredLevels: Level[],\n    data: ManifestLoadedData\n  ) {\n    let audioTracks: MediaPlaylist[] = [];\n    let subtitleTracks: MediaPlaylist[] = [];\n\n    let resolutionFound = false;\n    let videoCodecFound = false;\n    let audioCodecFound = false;\n\n    // only keep levels with supported audio/video codecs\n    let levels = unfilteredLevels.filter(\n      ({ audioCodec, videoCodec, width, height, unknownCodecs }) => {\n        resolutionFound ||= !!(width && height);\n        videoCodecFound ||= !!videoCodec;\n        audioCodecFound ||= !!audioCodec;\n        return (\n          !unknownCodecs?.length &&\n          (!audioCodec || isCodecSupportedInMp4(audioCodec, 'audio')) &&\n          (!videoCodec || isCodecSupportedInMp4(videoCodec, 'video'))\n        );\n      }\n    );\n\n    // remove audio-only level if we also have levels with video codecs or RESOLUTION signalled\n    if ((resolutionFound || videoCodecFound) && audioCodecFound) {\n      levels = levels.filter(\n        ({ videoCodec, width, height }) => !!videoCodec || !!(width && height)\n      );\n    }\n\n    if (levels.length === 0) {\n      // Dispatch error after MANIFEST_LOADED is done propagating\n      Promise.resolve().then(() => {\n        if (this.hls) {\n          const error = new Error(\n            'no level with compatible codecs found in manifest'\n          );\n          this.hls.trigger(Events.ERROR, {\n            type: ErrorTypes.MEDIA_ERROR,\n            details: ErrorDetails.MANIFEST_INCOMPATIBLE_CODECS_ERROR,\n            fatal: true,\n            url: data.url,\n            error,\n            reason: error.message,\n          });\n        }\n      });\n      return;\n    }\n\n    if (data.audioTracks) {\n      audioTracks = data.audioTracks.filter(\n        (track) =>\n          !track.audioCodec || isCodecSupportedInMp4(track.audioCodec, 'audio')\n      );\n      // Assign ids after filtering as array indices by group-id\n      assignTrackIdsByGroup(audioTracks);\n    }\n\n    if (data.subtitles) {\n      subtitleTracks = data.subtitles;\n      assignTrackIdsByGroup(subtitleTracks);\n    }\n    // start bitrate is the first bitrate of the manifest\n    const unsortedLevels = levels.slice(0);\n    // sort levels from lowest to highest\n    levels.sort((a, b) => {\n      if (a.attrs['HDCP-LEVEL'] !== b.attrs['HDCP-LEVEL']) {\n        return (a.attrs['HDCP-LEVEL'] || '') > (b.attrs['HDCP-LEVEL'] || '')\n          ? 1\n          : -1;\n      }\n      if (a.bitrate !== b.bitrate) {\n        return a.bitrate - b.bitrate;\n      }\n      if (a.attrs['FRAME-RATE'] !== b.attrs['FRAME-RATE']) {\n        return (\n          a.attrs.decimalFloatingPoint('FRAME-RATE') -\n          b.attrs.decimalFloatingPoint('FRAME-RATE')\n        );\n      }\n      if (a.attrs.SCORE !== b.attrs.SCORE) {\n        return (\n          a.attrs.decimalFloatingPoint('SCORE') -\n          b.attrs.decimalFloatingPoint('SCORE')\n        );\n      }\n      if (resolutionFound && a.height !== b.height) {\n        return a.height - b.height;\n      }\n      return 0;\n    });\n\n    let firstLevelInPlaylist = unsortedLevels[0];\n    if (this.steering) {\n      levels = this.steering.filterParsedLevels(levels);\n      if (levels.length !== unsortedLevels.length) {\n        for (let i = 0; i < unsortedLevels.length; i++) {\n          if (unsortedLevels[i].pathwayId === levels[0].pathwayId) {\n            firstLevelInPlaylist = unsortedLevels[i];\n            break;\n          }\n        }\n      }\n    }\n\n    this._levels = levels;\n\n    // find index of first level in sorted levels\n    for (let i = 0; i < levels.length; i++) {\n      if (levels[i] === firstLevelInPlaylist) {\n        this._firstLevel = i;\n        this.log(\n          `manifest loaded, ${levels.length} level(s) found, first bitrate: ${firstLevelInPlaylist.bitrate}`\n        );\n        break;\n      }\n    }\n\n    // Audio is only alternate if manifest include a URI along with the audio group tag,\n    // and this is not an audio-only stream where levels contain audio-only\n    const audioOnly = audioCodecFound && !videoCodecFound;\n    const edata: ManifestParsedData = {\n      levels,\n      audioTracks,\n      subtitleTracks,\n      sessionData: data.sessionData,\n      sessionKeys: data.sessionKeys,\n      firstLevel: this._firstLevel,\n      stats: data.stats,\n      audio: audioCodecFound,\n      video: videoCodecFound,\n      altAudio: !audioOnly && audioTracks.some((t) => !!t.url),\n    };\n    this.hls.trigger(Events.MANIFEST_PARSED, edata);\n\n    // Initiate loading after all controllers have received MANIFEST_PARSED\n    if (this.hls.config.autoStartLoad || this.hls.forceStartLoad) {\n      this.hls.startLoad(this.hls.config.startPosition);\n    }\n  }\n\n  get levels(): Level[] | null {\n    if (this._levels.length === 0) {\n      return null;\n    }\n    return this._levels;\n  }\n\n  get level(): number {\n    return this.currentLevelIndex;\n  }\n\n  set level(newLevel: number) {\n    const levels = this._levels;\n    if (levels.length === 0) {\n      return;\n    }\n    // check if level idx is valid\n    if (newLevel < 0 || newLevel >= levels.length) {\n      // invalid level id given, trigger error\n      const error = new Error('invalid level idx');\n      const fatal = newLevel < 0;\n      this.hls.trigger(Events.ERROR, {\n        type: ErrorTypes.OTHER_ERROR,\n        details: ErrorDetails.LEVEL_SWITCH_ERROR,\n        level: newLevel,\n        fatal,\n        error,\n        reason: error.message,\n      });\n      if (fatal) {\n        return;\n      }\n      newLevel = Math.min(newLevel, levels.length - 1);\n    }\n\n    const lastLevelIndex = this.currentLevelIndex;\n    const lastLevel = this.currentLevel;\n    const lastPathwayId = lastLevel ? lastLevel.attrs['PATHWAY-ID'] : undefined;\n    const level = levels[newLevel];\n    const pathwayId = level.attrs['PATHWAY-ID'];\n    this.currentLevelIndex = newLevel;\n    this.currentLevel = level;\n\n    if (\n      lastLevelIndex === newLevel &&\n      level.details &&\n      lastLevel &&\n      lastPathwayId === pathwayId\n    ) {\n      return;\n    }\n\n    this.log(\n      `Switching to level ${newLevel}${\n        pathwayId ? ' with Pathway ' + pathwayId : ''\n      } from level ${lastLevelIndex}${\n        lastPathwayId ? ' with Pathway ' + lastPathwayId : ''\n      }`\n    );\n\n    const levelSwitchingData: LevelSwitchingData = Object.assign({}, level, {\n      level: newLevel,\n      maxBitrate: level.maxBitrate,\n      attrs: level.attrs,\n      uri: level.uri,\n      urlId: level.urlId,\n    });\n    // @ts-ignore\n    delete levelSwitchingData._attrs;\n    // @ts-ignore\n    delete levelSwitchingData._urlId;\n    this.hls.trigger(Events.LEVEL_SWITCHING, levelSwitchingData);\n    // check if we need to load playlist for this level\n    const levelDetails = level.details;\n    if (!levelDetails || levelDetails.live) {\n      // level not retrieved yet, or live playlist we need to (re)load it\n      const hlsUrlParameters = this.switchParams(level.uri, lastLevel?.details);\n      this.loadPlaylist(hlsUrlParameters);\n    }\n  }\n\n  get manualLevel(): number {\n    return this.manualLevelIndex;\n  }\n\n  set manualLevel(newLevel) {\n    this.manualLevelIndex = newLevel;\n    if (this._startLevel === undefined) {\n      this._startLevel = newLevel;\n    }\n\n    if (newLevel !== -1) {\n      this.level = newLevel;\n    }\n  }\n\n  get firstLevel(): number {\n    return this._firstLevel;\n  }\n\n  set firstLevel(newLevel) {\n    this._firstLevel = newLevel;\n  }\n\n  get startLevel() {\n    // hls.startLevel takes precedence over config.startLevel\n    // if none of these values are defined, fallback on this._firstLevel (first quality level appearing in variant manifest)\n    if (this._startLevel === undefined) {\n      const configStartLevel = this.hls.config.startLevel;\n      if (configStartLevel !== undefined) {\n        return configStartLevel;\n      } else {\n        return this._firstLevel;\n      }\n    } else {\n      return this._startLevel;\n    }\n  }\n\n  set startLevel(newLevel) {\n    this._startLevel = newLevel;\n  }\n\n  protected onError(event: Events.ERROR, data: ErrorData) {\n    if (data.fatal || !data.context) {\n      return;\n    }\n\n    if (\n      data.context.type === PlaylistContextType.LEVEL &&\n      data.context.level === this.level\n    ) {\n      this.checkRetry(data);\n    }\n  }\n\n  // reset errors on the successful load of a fragment\n  protected onFragLoaded(event: Events.FRAG_LOADED, { frag }: FragLoadedData) {\n    if (frag !== undefined && frag.type === PlaylistLevelType.MAIN) {\n      const level = this._levels[frag.level];\n      if (level !== undefined) {\n        level.loadError = 0;\n      }\n    }\n  }\n\n  protected onLevelLoaded(event: Events.LEVEL_LOADED, data: LevelLoadedData) {\n    const { level, details } = data;\n    const curLevel = this._levels[level];\n\n    if (!curLevel) {\n      this.warn(`Invalid level index ${level}`);\n      if (data.deliveryDirectives?.skip) {\n        details.deltaUpdateFailed = true;\n      }\n      return;\n    }\n\n    // only process level loaded events matching with expected level\n    if (level === this.currentLevelIndex) {\n      // reset level load error counter on successful level loaded only if there is no issues with fragments\n      if (curLevel.fragmentError === 0) {\n        curLevel.loadError = 0;\n      }\n      this.playlistLoaded(level, data, curLevel.details);\n    } else if (data.deliveryDirectives?.skip) {\n      // received a delta playlist update that cannot be merged\n      details.deltaUpdateFailed = true;\n    }\n  }\n\n  protected onAudioTrackSwitched(\n    event: Events.AUDIO_TRACK_SWITCHED,\n    data: TrackSwitchedData\n  ) {\n    const currentLevel = this.currentLevel;\n    if (!currentLevel) {\n      return;\n    }\n\n    const audioGroupId = this.hls.audioTracks[data.id].groupId;\n    if (\n      currentLevel.audioGroupIds &&\n      currentLevel.audioGroupId !== audioGroupId\n    ) {\n      let urlId = -1;\n      for (let i = 0; i < currentLevel.audioGroupIds.length; i++) {\n        if (currentLevel.audioGroupIds[i] === audioGroupId) {\n          urlId = i;\n          break;\n        }\n      }\n\n      if (urlId !== -1 && urlId !== currentLevel.urlId) {\n        currentLevel.urlId = urlId;\n        if (this.canLoad) {\n          this.startLoad();\n        }\n      }\n    }\n  }\n\n  protected loadPlaylist(hlsUrlParameters?: HlsUrlParameters) {\n    super.loadPlaylist();\n    const currentLevelIndex = this.currentLevelIndex;\n    const currentLevel = this.currentLevel;\n\n    if (currentLevel && this.shouldLoadPlaylist(currentLevel)) {\n      const id = currentLevel.urlId;\n      let url = currentLevel.uri;\n      if (hlsUrlParameters) {\n        try {\n          url = hlsUrlParameters.addDirectives(url);\n        } catch (error) {\n          this.warn(\n            `Could not construct new URL with HLS Delivery Directives: ${error}`\n          );\n        }\n      }\n\n      const pathwayId = currentLevel.attrs['PATHWAY-ID'];\n      this.log(\n        `Loading level index ${currentLevelIndex}${\n          hlsUrlParameters?.msn !== undefined\n            ? ' at sn ' +\n              hlsUrlParameters.msn +\n              ' part ' +\n              hlsUrlParameters.part\n            : ''\n        } with${pathwayId ? ' Pathway ' + pathwayId : ''} URI ${id + 1}/${\n          currentLevel.url.length\n        } ${url}`\n      );\n\n      // console.log('Current audio track group ID:', this.hls.audioTracks[this.hls.audioTrack].groupId);\n      // console.log('New video quality level audio group id:', levelObject.attrs.AUDIO, level);\n      this.clearTimer();\n      this.hls.trigger(Events.LEVEL_LOADING, {\n        url,\n        level: currentLevelIndex,\n        id,\n        deliveryDirectives: hlsUrlParameters || null,\n      });\n    }\n  }\n\n  get nextLoadLevel() {\n    if (this.manualLevelIndex !== -1) {\n      return this.manualLevelIndex;\n    } else {\n      return this.hls.nextAutoLevel;\n    }\n  }\n\n  set nextLoadLevel(nextLevel) {\n    this.level = nextLevel;\n    if (this.manualLevelIndex === -1) {\n      this.hls.nextAutoLevel = nextLevel;\n    }\n  }\n\n  removeLevel(levelIndex, urlId) {\n    const filterLevelAndGroupByIdIndex = (url, id) => id !== urlId;\n    const levels = this._levels.filter((level, index) => {\n      if (index !== levelIndex) {\n        return true;\n      }\n\n      if (level.url.length > 1 && urlId !== undefined) {\n        level.url = level.url.filter(filterLevelAndGroupByIdIndex);\n        if (level.audioGroupIds) {\n          level.audioGroupIds = level.audioGroupIds.filter(\n            filterLevelAndGroupByIdIndex\n          );\n        }\n        if (level.textGroupIds) {\n          level.textGroupIds = level.textGroupIds.filter(\n            filterLevelAndGroupByIdIndex\n          );\n        }\n        level.urlId = 0;\n        return true;\n      }\n      if (this.steering) {\n        this.steering.removeLevel(level);\n      }\n      return false;\n    });\n\n    this.hls.trigger(Events.LEVELS_UPDATED, { levels });\n  }\n\n  private onLevelsUpdated(\n    event: Events.LEVELS_UPDATED,\n    { levels }: LevelsUpdatedData\n  ) {\n    levels.forEach((level, index) => {\n      const { details } = level;\n      if (details?.fragments) {\n        details.fragments.forEach((fragment) => {\n          fragment.level = index;\n        });\n      }\n    });\n    this._levels = levels;\n  }\n}\n\nexport function addGroupId(\n  level: Level,\n  type: string,\n  id: string | undefined\n): void {\n  if (!id) {\n    return;\n  }\n  if (type === 'audio') {\n    if (!level.audioGroupIds) {\n      level.audioGroupIds = [];\n    }\n    level.audioGroupIds[level.url.length - 1] = id;\n  } else if (type === 'text') {\n    if (!level.textGroupIds) {\n      level.textGroupIds = [];\n    }\n    level.textGroupIds[level.url.length - 1] = id;\n  }\n}\n\nfunction assignTrackIdsByGroup(tracks: MediaPlaylist[]): void {\n  const groups = {};\n  tracks.forEach((track) => {\n    const groupId = track.groupId || '';\n    track.id = groups[groupId] = groups[groupId] || 0;\n    groups[groupId]++;\n  });\n}\n","import { Events } from '../events';\nimport { Fragment, Part } from '../loader/fragment';\nimport { PlaylistLevelType } from '../types/loader';\nimport type { SourceBufferName } from '../types/buffer';\nimport type {\n  FragmentBufferedRange,\n  FragmentEntity,\n  FragmentTimeRange,\n} from '../types/fragment-tracker';\nimport type { ComponentAPI } from '../types/component-api';\nimport type {\n  BufferAppendedData,\n  FragBufferedData,\n  FragLoadedData,\n} from '../types/events';\nimport type Hls from '../hls';\n\nexport const enum FragmentState {\n  NOT_LOADED = 'NOT_LOADED',\n  APPENDING = 'APPENDING',\n  PARTIAL = 'PARTIAL',\n  OK = 'OK',\n}\n\nexport class FragmentTracker implements ComponentAPI {\n  private activePartLists: { [key in PlaylistLevelType]?: Part[] } =\n    Object.create(null);\n  private endListFragments: { [key in PlaylistLevelType]?: FragmentEntity } =\n    Object.create(null);\n  private fragments: Partial<Record<string, FragmentEntity>> =\n    Object.create(null);\n  private timeRanges:\n    | {\n        [key in SourceBufferName]?: TimeRanges;\n      }\n    | null = Object.create(null);\n\n  private bufferPadding: number = 0.2;\n  private hls: Hls;\n  private hasGaps: boolean = false;\n\n  constructor(hls: Hls) {\n    this.hls = hls;\n\n    this._registerListeners();\n  }\n\n  private _registerListeners() {\n    const { hls } = this;\n    hls.on(Events.BUFFER_APPENDED, this.onBufferAppended, this);\n    hls.on(Events.FRAG_BUFFERED, this.onFragBuffered, this);\n    hls.on(Events.FRAG_LOADED, this.onFragLoaded, this);\n  }\n\n  private _unregisterListeners() {\n    const { hls } = this;\n    hls.off(Events.BUFFER_APPENDED, this.onBufferAppended, this);\n    hls.off(Events.FRAG_BUFFERED, this.onFragBuffered, this);\n    hls.off(Events.FRAG_LOADED, this.onFragLoaded, this);\n  }\n\n  public destroy() {\n    this._unregisterListeners();\n    // @ts-ignore\n    this.fragments =\n      // @ts-ignore\n      this.activePartLists =\n      // @ts-ignore\n      this.endListFragments =\n      this.timeRanges =\n        null;\n  }\n\n  /**\n   * Return a Fragment or Part with an appended range that matches the position and levelType\n   * Otherwise, return null\n   */\n  public getAppendedFrag(\n    position: number,\n    levelType: PlaylistLevelType\n  ): Fragment | Part | null {\n    const activeParts = this.activePartLists[levelType];\n    if (activeParts) {\n      for (let i = activeParts.length; i--; ) {\n        const activePart = activeParts[i];\n        if (!activePart) {\n          break;\n        }\n        const appendedPTS = activePart.end;\n        if (\n          activePart.start <= position &&\n          appendedPTS !== null &&\n          position <= appendedPTS\n        ) {\n          return activePart;\n        }\n      }\n    }\n    return this.getBufferedFrag(position, levelType);\n  }\n\n  /**\n   * Return a buffered Fragment that matches the position and levelType.\n   * A buffered Fragment is one whose loading, parsing and appending is done (completed or \"partial\" meaning aborted).\n   * If not found any Fragment, return null\n   */\n  public getBufferedFrag(\n    position: number,\n    levelType: PlaylistLevelType\n  ): Fragment | null {\n    const { fragments } = this;\n    const keys = Object.keys(fragments);\n    for (let i = keys.length; i--; ) {\n      const fragmentEntity = fragments[keys[i]];\n      if (fragmentEntity?.body.type === levelType && fragmentEntity.buffered) {\n        const frag = fragmentEntity.body;\n        if (frag.start <= position && position <= frag.end) {\n          return frag;\n        }\n      }\n    }\n    return null;\n  }\n\n  /**\n   * Partial fragments effected by coded frame eviction will be removed\n   * The browser will unload parts of the buffer to free up memory for new buffer data\n   * Fragments will need to be reloaded when the buffer is freed up, removing partial fragments will allow them to reload(since there might be parts that are still playable)\n   */\n  public detectEvictedFragments(\n    elementaryStream: SourceBufferName,\n    timeRange: TimeRanges,\n    playlistType: PlaylistLevelType,\n    appendedPart?: Part | null\n  ) {\n    if (this.timeRanges) {\n      this.timeRanges[elementaryStream] = timeRange;\n    }\n    // Check if any flagged fragments have been unloaded\n    // excluding anything newer than appendedPartSn\n    const appendedPartSn = (appendedPart?.fragment.sn || -1) as number;\n    Object.keys(this.fragments).forEach((key) => {\n      const fragmentEntity = this.fragments[key];\n      if (!fragmentEntity) {\n        return;\n      }\n      if (appendedPartSn >= (fragmentEntity.body.sn as number)) {\n        return;\n      }\n      if (!fragmentEntity.buffered && !fragmentEntity.loaded) {\n        if (fragmentEntity.body.type === playlistType) {\n          this.removeFragment(fragmentEntity.body);\n        }\n        return;\n      }\n      const esData = fragmentEntity.range[elementaryStream];\n      if (!esData) {\n        return;\n      }\n      esData.time.some((time: FragmentTimeRange) => {\n        const isNotBuffered = !this.isTimeBuffered(\n          time.startPTS,\n          time.endPTS,\n          timeRange\n        );\n        if (isNotBuffered) {\n          // Unregister partial fragment as it needs to load again to be reused\n          this.removeFragment(fragmentEntity.body);\n        }\n        return isNotBuffered;\n      });\n    });\n  }\n\n  /**\n   * Checks if the fragment passed in is loaded in the buffer properly\n   * Partially loaded fragments will be registered as a partial fragment\n   */\n  public detectPartialFragments(data: FragBufferedData) {\n    const timeRanges = this.timeRanges;\n    const { frag, part } = data;\n    if (!timeRanges || frag.sn === 'initSegment') {\n      return;\n    }\n\n    const fragKey = getFragmentKey(frag);\n    const fragmentEntity = this.fragments[fragKey];\n    if (!fragmentEntity || (fragmentEntity.buffered && frag.gap)) {\n      return;\n    }\n    const isFragHint = !frag.relurl;\n    Object.keys(timeRanges).forEach((elementaryStream: SourceBufferName) => {\n      const streamInfo = frag.elementaryStreams[elementaryStream];\n      if (!streamInfo) {\n        return;\n      }\n      const timeRange = timeRanges[elementaryStream] as TimeRanges;\n      const partial = isFragHint || streamInfo.partial === true;\n      fragmentEntity.range[elementaryStream] = this.getBufferedTimes(\n        frag,\n        part,\n        partial,\n        timeRange\n      );\n    });\n    fragmentEntity.loaded = null;\n    if (Object.keys(fragmentEntity.range).length) {\n      fragmentEntity.buffered = true;\n      const endList = (fragmentEntity.body.endList =\n        frag.endList || fragmentEntity.body.endList);\n      if (endList) {\n        this.endListFragments[fragmentEntity.body.type] = fragmentEntity;\n      }\n      if (!isPartial(fragmentEntity)) {\n        // Remove older fragment parts from lookup after frag is tracked as buffered\n        this.removeParts((frag.sn as number) - 1, frag.type);\n      }\n    } else {\n      // remove fragment if nothing was appended\n      this.removeFragment(fragmentEntity.body);\n    }\n  }\n\n  private removeParts(snToKeep: number, levelType: PlaylistLevelType) {\n    const activeParts = this.activePartLists[levelType];\n    if (!activeParts) {\n      return;\n    }\n    this.activePartLists[levelType] = activeParts.filter(\n      (part) => (part.fragment.sn as number) >= snToKeep\n    );\n  }\n\n  public fragBuffered(frag: Fragment, force?: true) {\n    const fragKey = getFragmentKey(frag);\n    let fragmentEntity = this.fragments[fragKey];\n    if (!fragmentEntity && force) {\n      fragmentEntity = this.fragments[fragKey] = {\n        body: frag,\n        appendedPTS: null,\n        loaded: null,\n        buffered: false,\n        range: Object.create(null),\n      };\n      if (frag.gap) {\n        this.hasGaps = true;\n      }\n    }\n    if (fragmentEntity) {\n      fragmentEntity.loaded = null;\n      fragmentEntity.buffered = true;\n    }\n  }\n\n  private getBufferedTimes(\n    fragment: Fragment,\n    part: Part | null,\n    partial: boolean,\n    timeRange: TimeRanges\n  ): FragmentBufferedRange {\n    const buffered: FragmentBufferedRange = {\n      time: [],\n      partial,\n    };\n    const startPTS = fragment.start;\n    const endPTS = fragment.end;\n    const minEndPTS = fragment.minEndPTS || endPTS;\n    const maxStartPTS = fragment.maxStartPTS || startPTS;\n    for (let i = 0; i < timeRange.length; i++) {\n      const startTime = timeRange.start(i) - this.bufferPadding;\n      const endTime = timeRange.end(i) + this.bufferPadding;\n      if (maxStartPTS >= startTime && minEndPTS <= endTime) {\n        // Fragment is entirely contained in buffer\n        // No need to check the other timeRange times since it's completely playable\n        buffered.time.push({\n          startPTS: Math.max(startPTS, timeRange.start(i)),\n          endPTS: Math.min(endPTS, timeRange.end(i)),\n        });\n        break;\n      } else if (startPTS < endTime && endPTS > startTime) {\n        buffered.partial = true;\n        // Check for intersection with buffer\n        // Get playable sections of the fragment\n        buffered.time.push({\n          startPTS: Math.max(startPTS, timeRange.start(i)),\n          endPTS: Math.min(endPTS, timeRange.end(i)),\n        });\n      } else if (endPTS <= startTime) {\n        // No need to check the rest of the timeRange as it is in order\n        break;\n      }\n    }\n    return buffered;\n  }\n\n  /**\n   * Gets the partial fragment for a certain time\n   */\n  public getPartialFragment(time: number): Fragment | null {\n    let bestFragment: Fragment | null = null;\n    let timePadding: number;\n    let startTime: number;\n    let endTime: number;\n    let bestOverlap: number = 0;\n    const { bufferPadding, fragments } = this;\n    Object.keys(fragments).forEach((key) => {\n      const fragmentEntity = fragments[key];\n      if (!fragmentEntity) {\n        return;\n      }\n      if (isPartial(fragmentEntity)) {\n        startTime = fragmentEntity.body.start - bufferPadding;\n        endTime = fragmentEntity.body.end + bufferPadding;\n        if (time >= startTime && time <= endTime) {\n          // Use the fragment that has the most padding from start and end time\n          timePadding = Math.min(time - startTime, endTime - time);\n          if (bestOverlap <= timePadding) {\n            bestFragment = fragmentEntity.body;\n            bestOverlap = timePadding;\n          }\n        }\n      }\n    });\n    return bestFragment;\n  }\n\n  public isEndListAppended(type: PlaylistLevelType): boolean {\n    const lastFragmentEntity = this.endListFragments[type];\n    return (\n      lastFragmentEntity !== undefined &&\n      (lastFragmentEntity.buffered || isPartial(lastFragmentEntity))\n    );\n  }\n\n  public getState(fragment: Fragment): FragmentState {\n    const fragKey = getFragmentKey(fragment);\n    const fragmentEntity = this.fragments[fragKey];\n\n    if (fragmentEntity) {\n      if (!fragmentEntity.buffered) {\n        return FragmentState.APPENDING;\n      } else if (isPartial(fragmentEntity)) {\n        return FragmentState.PARTIAL;\n      } else {\n        return FragmentState.OK;\n      }\n    }\n\n    return FragmentState.NOT_LOADED;\n  }\n\n  private isTimeBuffered(\n    startPTS: number,\n    endPTS: number,\n    timeRange: TimeRanges\n  ): boolean {\n    let startTime;\n    let endTime;\n    for (let i = 0; i < timeRange.length; i++) {\n      startTime = timeRange.start(i) - this.bufferPadding;\n      endTime = timeRange.end(i) + this.bufferPadding;\n      if (startPTS >= startTime && endPTS <= endTime) {\n        return true;\n      }\n\n      if (endPTS <= startTime) {\n        // No need to check the rest of the timeRange as it is in order\n        return false;\n      }\n    }\n\n    return false;\n  }\n\n  private onFragLoaded(event: Events.FRAG_LOADED, data: FragLoadedData) {\n    const { frag, part } = data;\n    // don't track initsegment (for which sn is not a number)\n    // don't track frags used for bitrateTest, they're irrelevant.\n    if (frag.sn === 'initSegment' || frag.bitrateTest) {\n      return;\n    }\n\n    // Fragment entity `loaded` FragLoadedData is null when loading parts\n    const loaded = part ? null : data;\n\n    const fragKey = getFragmentKey(frag);\n    this.fragments[fragKey] = {\n      body: frag,\n      appendedPTS: null,\n      loaded,\n      buffered: false,\n      range: Object.create(null),\n    };\n  }\n\n  private onBufferAppended(\n    event: Events.BUFFER_APPENDED,\n    data: BufferAppendedData\n  ) {\n    const { frag, part, timeRanges } = data;\n    if (frag.sn === 'initSegment') {\n      return;\n    }\n    const playlistType = frag.type;\n    if (part) {\n      let activeParts = this.activePartLists[playlistType];\n      if (!activeParts) {\n        this.activePartLists[playlistType] = activeParts = [];\n      }\n      activeParts.push(part);\n    }\n    // Store the latest timeRanges loaded in the buffer\n    this.timeRanges = timeRanges;\n    Object.keys(timeRanges).forEach((elementaryStream: SourceBufferName) => {\n      const timeRange = timeRanges[elementaryStream] as TimeRanges;\n      this.detectEvictedFragments(\n        elementaryStream,\n        timeRange,\n        playlistType,\n        part\n      );\n    });\n  }\n\n  private onFragBuffered(event: Events.FRAG_BUFFERED, data: FragBufferedData) {\n    this.detectPartialFragments(data);\n  }\n\n  private hasFragment(fragment: Fragment): boolean {\n    const fragKey = getFragmentKey(fragment);\n    return !!this.fragments[fragKey];\n  }\n\n  public hasParts(type: PlaylistLevelType): boolean {\n    return !!this.activePartLists[type]?.length;\n  }\n\n  public removeFragmentsInRange(\n    start: number,\n    end: number,\n    playlistType: PlaylistLevelType,\n    withGapOnly?: boolean,\n    unbufferedOnly?: boolean\n  ) {\n    if (withGapOnly && !this.hasGaps) {\n      return;\n    }\n    Object.keys(this.fragments).forEach((key) => {\n      const fragmentEntity = this.fragments[key];\n      if (!fragmentEntity) {\n        return;\n      }\n      const frag = fragmentEntity.body;\n      if (frag.type !== playlistType || (withGapOnly && !frag.gap)) {\n        return;\n      }\n      if (\n        frag.start < end &&\n        frag.end > start &&\n        (fragmentEntity.buffered || unbufferedOnly)\n      ) {\n        this.removeFragment(frag);\n      }\n    });\n  }\n\n  public removeFragment(fragment: Fragment) {\n    const fragKey = getFragmentKey(fragment);\n    fragment.stats.loaded = 0;\n    fragment.clearElementaryStreamInfo();\n    const activeParts = this.activePartLists[fragment.type];\n    if (activeParts) {\n      const snToRemove = fragment.sn;\n      this.activePartLists[fragment.type] = activeParts.filter(\n        (part) => part.fragment.sn !== snToRemove\n      );\n    }\n    delete this.fragments[fragKey];\n    if (fragment.endList) {\n      delete this.endListFragments[fragment.type];\n    }\n  }\n\n  public removeAllFragments() {\n    this.fragments = Object.create(null);\n    this.endListFragments = Object.create(null);\n    this.activePartLists = Object.create(null);\n    this.hasGaps = false;\n  }\n}\n\nfunction isPartial(fragmentEntity: FragmentEntity): boolean {\n  return (\n    fragmentEntity.buffered &&\n    (fragmentEntity.body.gap ||\n      fragmentEntity.range.video?.partial ||\n      fragmentEntity.range.audio?.partial ||\n      fragmentEntity.range.audiovideo?.partial)\n  );\n}\n\nfunction getFragmentKey(fragment: Fragment): string {\n  return `${fragment.type}_${fragment.level}_${fragment.urlId}_${fragment.sn}`;\n}\n","import { ErrorTypes, ErrorDetails } from '../errors';\nimport { Fragment } from './fragment';\nimport {\n  Loader,\n  LoaderConfiguration,\n  FragmentLoaderContext,\n} from '../types/loader';\nimport { getLoaderConfigWithoutReties } from '../utils/error-helper';\nimport type { HlsConfig } from '../config';\nimport type { BaseSegment, Part } from './fragment';\nimport type {\n  ErrorData,\n  FragLoadedData,\n  PartsLoadedData,\n} from '../types/events';\n\nconst MIN_CHUNK_SIZE = Math.pow(2, 17); // 128kb\n\nexport default class FragmentLoader {\n  private readonly config: HlsConfig;\n  private loader: Loader<FragmentLoaderContext> | null = null;\n  private partLoadTimeout: number = -1;\n\n  constructor(config: HlsConfig) {\n    this.config = config;\n  }\n\n  destroy() {\n    if (this.loader) {\n      this.loader.destroy();\n      this.loader = null;\n    }\n  }\n\n  abort() {\n    if (this.loader) {\n      // Abort the loader for current fragment. Only one may load at any given time\n      this.loader.abort();\n    }\n  }\n\n  load(\n    frag: Fragment,\n    onProgress?: FragmentLoadProgressCallback\n  ): Promise<FragLoadedData> {\n    const url = frag.url;\n    if (!url) {\n      return Promise.reject(\n        new LoadError({\n          type: ErrorTypes.NETWORK_ERROR,\n          details: ErrorDetails.FRAG_LOAD_ERROR,\n          fatal: false,\n          frag,\n          error: new Error(\n            `Fragment does not have a ${url ? 'part list' : 'url'}`\n          ),\n          networkDetails: null,\n        })\n      );\n    }\n    this.abort();\n\n    const config = this.config;\n    const FragmentILoader = config.fLoader;\n    const DefaultILoader = config.loader;\n\n    return new Promise((resolve, reject) => {\n      if (this.loader) {\n        this.loader.destroy();\n      }\n      if (frag.gap) {\n        if (frag.tagList.some((tags) => tags[0] === 'GAP')) {\n          reject(createGapLoadError(frag));\n          return;\n        } else {\n          // Reset temporary treatment as GAP tag\n          frag.gap = false;\n        }\n      }\n      const loader =\n        (this.loader =\n        frag.loader =\n          FragmentILoader\n            ? new FragmentILoader(config)\n            : (new DefaultILoader(config) as Loader<FragmentLoaderContext>));\n      const loaderContext = createLoaderContext(frag);\n      const loadPolicy = getLoaderConfigWithoutReties(\n        config.fragLoadPolicy.default\n      );\n      const loaderConfig: LoaderConfiguration = {\n        loadPolicy,\n        timeout: loadPolicy.maxLoadTimeMs,\n        maxRetry: 0,\n        retryDelay: 0,\n        maxRetryDelay: 0,\n        highWaterMark: frag.sn === 'initSegment' ? Infinity : MIN_CHUNK_SIZE,\n      };\n      // Assign frag stats to the loader's stats reference\n      frag.stats = loader.stats;\n      loader.load(loaderContext, loaderConfig, {\n        onSuccess: (response, stats, context, networkDetails) => {\n          this.resetLoader(frag, loader);\n          let payload = response.data as ArrayBuffer;\n          if (context.resetIV && frag.decryptdata) {\n            frag.decryptdata.iv = new Uint8Array(payload.slice(0, 16));\n            payload = payload.slice(16);\n          }\n          resolve({\n            frag,\n            part: null,\n            payload,\n            networkDetails,\n          });\n        },\n        onError: (response, context, networkDetails, stats) => {\n          this.resetLoader(frag, loader);\n          reject(\n            new LoadError({\n              type: ErrorTypes.NETWORK_ERROR,\n              details: ErrorDetails.FRAG_LOAD_ERROR,\n              fatal: false,\n              frag,\n              response: { url, data: undefined, ...response },\n              error: new Error(`HTTP Error ${response.code} ${response.text}`),\n              networkDetails,\n              stats,\n            })\n          );\n        },\n        onAbort: (stats, context, networkDetails) => {\n          this.resetLoader(frag, loader);\n          reject(\n            new LoadError({\n              type: ErrorTypes.NETWORK_ERROR,\n              details: ErrorDetails.INTERNAL_ABORTED,\n              fatal: false,\n              frag,\n              error: new Error('Aborted'),\n              networkDetails,\n              stats,\n            })\n          );\n        },\n        onTimeout: (stats, context, networkDetails) => {\n          this.resetLoader(frag, loader);\n          reject(\n            new LoadError({\n              type: ErrorTypes.NETWORK_ERROR,\n              details: ErrorDetails.FRAG_LOAD_TIMEOUT,\n              fatal: false,\n              frag,\n              error: new Error(`Timeout after ${loaderConfig.timeout}ms`),\n              networkDetails,\n              stats,\n            })\n          );\n        },\n        onProgress: (stats, context, data, networkDetails) => {\n          if (onProgress) {\n            onProgress({\n              frag,\n              part: null,\n              payload: data as ArrayBuffer,\n              networkDetails,\n            });\n          }\n        },\n      });\n    });\n  }\n\n  public loadPart(\n    frag: Fragment,\n    part: Part,\n    onProgress: FragmentLoadProgressCallback\n  ): Promise<FragLoadedData> {\n    this.abort();\n\n    const config = this.config;\n    const FragmentILoader = config.fLoader;\n    const DefaultILoader = config.loader;\n\n    return new Promise((resolve, reject) => {\n      if (this.loader) {\n        this.loader.destroy();\n      }\n      if (frag.gap || part.gap) {\n        reject(createGapLoadError(frag, part));\n        return;\n      }\n      const loader =\n        (this.loader =\n        frag.loader =\n          FragmentILoader\n            ? new FragmentILoader(config)\n            : (new DefaultILoader(config) as Loader<FragmentLoaderContext>));\n      const loaderContext = createLoaderContext(frag, part);\n      // Should we define another load policy for parts?\n      const loadPolicy = getLoaderConfigWithoutReties(\n        config.fragLoadPolicy.default\n      );\n      const loaderConfig: LoaderConfiguration = {\n        loadPolicy,\n        timeout: loadPolicy.maxLoadTimeMs,\n        maxRetry: 0,\n        retryDelay: 0,\n        maxRetryDelay: 0,\n        highWaterMark: MIN_CHUNK_SIZE,\n      };\n      // Assign part stats to the loader's stats reference\n      part.stats = loader.stats;\n      loader.load(loaderContext, loaderConfig, {\n        onSuccess: (response, stats, context, networkDetails) => {\n          this.resetLoader(frag, loader);\n          this.updateStatsFromPart(frag, part);\n          const partLoadedData: FragLoadedData = {\n            frag,\n            part,\n            payload: response.data as ArrayBuffer,\n            networkDetails,\n          };\n          onProgress(partLoadedData);\n          resolve(partLoadedData);\n        },\n        onError: (response, context, networkDetails, stats) => {\n          this.resetLoader(frag, loader);\n          reject(\n            new LoadError({\n              type: ErrorTypes.NETWORK_ERROR,\n              details: ErrorDetails.FRAG_LOAD_ERROR,\n              fatal: false,\n              frag,\n              part,\n              response: {\n                url: loaderContext.url,\n                data: undefined,\n                ...response,\n              },\n              error: new Error(`HTTP Error ${response.code} ${response.text}`),\n              networkDetails,\n              stats,\n            })\n          );\n        },\n        onAbort: (stats, context, networkDetails) => {\n          frag.stats.aborted = part.stats.aborted;\n          this.resetLoader(frag, loader);\n          reject(\n            new LoadError({\n              type: ErrorTypes.NETWORK_ERROR,\n              details: ErrorDetails.INTERNAL_ABORTED,\n              fatal: false,\n              frag,\n              part,\n              error: new Error('Aborted'),\n              networkDetails,\n              stats,\n            })\n          );\n        },\n        onTimeout: (stats, context, networkDetails) => {\n          this.resetLoader(frag, loader);\n          reject(\n            new LoadError({\n              type: ErrorTypes.NETWORK_ERROR,\n              details: ErrorDetails.FRAG_LOAD_TIMEOUT,\n              fatal: false,\n              frag,\n              part,\n              error: new Error(`Timeout after ${loaderConfig.timeout}ms`),\n              networkDetails,\n              stats,\n            })\n          );\n        },\n      });\n    });\n  }\n\n  private updateStatsFromPart(frag: Fragment, part: Part) {\n    const fragStats = frag.stats;\n    const partStats = part.stats;\n    const partTotal = partStats.total;\n    fragStats.loaded += partStats.loaded;\n    if (partTotal) {\n      const estTotalParts = Math.round(frag.duration / part.duration);\n      const estLoadedParts = Math.min(\n        Math.round(fragStats.loaded / partTotal),\n        estTotalParts\n      );\n      const estRemainingParts = estTotalParts - estLoadedParts;\n      const estRemainingBytes =\n        estRemainingParts * Math.round(fragStats.loaded / estLoadedParts);\n      fragStats.total = fragStats.loaded + estRemainingBytes;\n    } else {\n      fragStats.total = Math.max(fragStats.loaded, fragStats.total);\n    }\n    const fragLoading = fragStats.loading;\n    const partLoading = partStats.loading;\n    if (fragLoading.start) {\n      // add to fragment loader latency\n      fragLoading.first += partLoading.first - partLoading.start;\n    } else {\n      fragLoading.start = partLoading.start;\n      fragLoading.first = partLoading.first;\n    }\n    fragLoading.end = partLoading.end;\n  }\n\n  private resetLoader(frag: Fragment, loader: Loader<FragmentLoaderContext>) {\n    frag.loader = null;\n    if (this.loader === loader) {\n      self.clearTimeout(this.partLoadTimeout);\n      this.loader = null;\n    }\n    loader.destroy();\n  }\n}\n\nfunction createLoaderContext(\n  frag: Fragment,\n  part: Part | null = null\n): FragmentLoaderContext {\n  const segment: BaseSegment = part || frag;\n  const loaderContext: FragmentLoaderContext = {\n    frag,\n    part,\n    responseType: 'arraybuffer',\n    url: segment.url,\n    headers: {},\n    rangeStart: 0,\n    rangeEnd: 0,\n  };\n  const start = segment.byteRangeStartOffset;\n  const end = segment.byteRangeEndOffset;\n  if (Number.isFinite(start) && Number.isFinite(end)) {\n    let byteRangeStart = start;\n    let byteRangeEnd = end;\n    if (frag.sn === 'initSegment' && frag.decryptdata?.method === 'AES-128') {\n      // MAP segment encrypted with method 'AES-128', when served with HTTP Range,\n      // has the unencrypted size specified in the range.\n      // Ref: https://tools.ietf.org/html/draft-pantos-hls-rfc8216bis-08#section-6.3.6\n      const fragmentLen = end - start;\n      if (fragmentLen % 16) {\n        byteRangeEnd = end + (16 - (fragmentLen % 16));\n      }\n      if (start !== 0) {\n        loaderContext.resetIV = true;\n        byteRangeStart = start - 16;\n      }\n    }\n    loaderContext.rangeStart = byteRangeStart;\n    loaderContext.rangeEnd = byteRangeEnd;\n  }\n  return loaderContext;\n}\n\nfunction createGapLoadError(frag: Fragment, part?: Part): LoadError {\n  const error = new Error(`GAP ${frag.gap ? 'tag' : 'attribute'} found`);\n  const errorData: FragLoadFailResult = {\n    type: ErrorTypes.MEDIA_ERROR,\n    details: ErrorDetails.FRAG_GAP,\n    fatal: false,\n    frag,\n    error,\n    networkDetails: null,\n  };\n  if (part) {\n    errorData.part = part;\n  }\n  (part ? part : frag).stats.aborted = true;\n  return new LoadError(errorData);\n}\n\nexport class LoadError extends Error {\n  public readonly data: FragLoadFailResult;\n  constructor(data: FragLoadFailResult) {\n    super(data.error.message);\n    this.data = data;\n  }\n}\n\nexport interface FragLoadFailResult extends ErrorData {\n  frag: Fragment;\n  part?: Part;\n  response?: {\n    data: any;\n    // error status code\n    code: number;\n    // error description\n    text: string;\n    url: string;\n  };\n  networkDetails: any;\n}\n\nexport type FragmentLoadProgressCallback = (\n  result: FragLoadedData | PartsLoadedData\n) => void;\n","import type { RemuxerResult } from './remuxer';\nimport type { HlsChunkPerformanceTiming } from './loader';\nimport type { SourceBufferName } from './buffer';\n\nexport interface TransmuxerResult {\n  remuxResult: RemuxerResult;\n  chunkMeta: ChunkMetadata;\n}\n\nexport class ChunkMetadata {\n  public readonly level: number;\n  public readonly sn: number;\n  public readonly part: number;\n  public readonly id: number;\n  public readonly size: number;\n  public readonly partial: boolean;\n  public readonly transmuxing: HlsChunkPerformanceTiming =\n    getNewPerformanceTiming();\n  public readonly buffering: {\n    [key in SourceBufferName]: HlsChunkPerformanceTiming;\n  } = {\n    audio: getNewPerformanceTiming(),\n    video: getNewPerformanceTiming(),\n    audiovideo: getNewPerformanceTiming(),\n  };\n\n  constructor(\n    level: number,\n    sn: number,\n    id: number,\n    size = 0,\n    part = -1,\n    partial = false\n  ) {\n    this.level = level;\n    this.sn = sn;\n    this.id = id;\n    this.size = size;\n    this.part = part;\n    this.partial = partial;\n  }\n}\n\nfunction getNewPerformanceTiming(): HlsChunkPerformanceTiming {\n  return { start: 0, executeStart: 0, executeEnd: 0, end: 0 };\n}\n","import { logger } from './logger';\nimport { adjustSliding } from '../controller/level-helper';\n\nimport type { Fragment } from '../loader/fragment';\nimport type { LevelDetails } from '../loader/level-details';\nimport type { Level } from '../types/level';\nimport type { RequiredProperties } from '../types/general';\n\nexport function findFirstFragWithCC(fragments: Fragment[], cc: number) {\n  let firstFrag: Fragment | null = null;\n\n  for (let i = 0, len = fragments.length; i < len; i++) {\n    const currentFrag = fragments[i];\n    if (currentFrag && currentFrag.cc === cc) {\n      firstFrag = currentFrag;\n      break;\n    }\n  }\n\n  return firstFrag;\n}\n\nexport function shouldAlignOnDiscontinuities(\n  lastFrag: Fragment | null,\n  lastLevel: Level,\n  details: LevelDetails\n): lastLevel is RequiredProperties<Level, 'details'> {\n  if (lastLevel.details) {\n    if (\n      details.endCC > details.startCC ||\n      (lastFrag && lastFrag.cc < details.startCC)\n    ) {\n      return true;\n    }\n  }\n  return false;\n}\n\n// Find the first frag in the previous level which matches the CC of the first frag of the new level\nexport function findDiscontinuousReferenceFrag(\n  prevDetails: LevelDetails,\n  curDetails: LevelDetails,\n  referenceIndex: number = 0\n) {\n  const prevFrags = prevDetails.fragments;\n  const curFrags = curDetails.fragments;\n\n  if (!curFrags.length || !prevFrags.length) {\n    logger.log('No fragments to align');\n    return;\n  }\n\n  const prevStartFrag = findFirstFragWithCC(prevFrags, curFrags[0].cc);\n\n  if (!prevStartFrag || (prevStartFrag && !prevStartFrag.startPTS)) {\n    logger.log('No frag in previous level to align on');\n    return;\n  }\n\n  return prevStartFrag;\n}\n\nfunction adjustFragmentStart(frag: Fragment, sliding: number) {\n  if (frag) {\n    const start = frag.start + sliding;\n    frag.start = frag.startPTS = start;\n    frag.endPTS = start + frag.duration;\n  }\n}\n\nexport function adjustSlidingStart(sliding: number, details: LevelDetails) {\n  // Update segments\n  const fragments = details.fragments;\n  for (let i = 0, len = fragments.length; i < len; i++) {\n    adjustFragmentStart(fragments[i], sliding);\n  }\n  // Update LL-HLS parts at the end of the playlist\n  if (details.fragmentHint) {\n    adjustFragmentStart(details.fragmentHint, sliding);\n  }\n  details.alignedSliding = true;\n}\n\n/**\n * Using the parameters of the last level, this function computes PTS' of the new fragments so that they form a\n * contiguous stream with the last fragments.\n * The PTS of a fragment lets Hls.js know where it fits into a stream - by knowing every PTS, we know which fragment to\n * download at any given time. PTS is normally computed when the fragment is demuxed, so taking this step saves us time\n * and an extra download.\n * @param lastFrag\n * @param lastLevel\n * @param details\n */\nexport function alignStream(\n  lastFrag: Fragment | null,\n  lastLevel: Level | null,\n  details: LevelDetails\n) {\n  if (!lastLevel) {\n    return;\n  }\n  alignDiscontinuities(lastFrag, details, lastLevel);\n  if (!details.alignedSliding && lastLevel.details) {\n    // If the PTS wasn't figured out via discontinuity sequence that means there was no CC increase within the level.\n    // Aligning via Program Date Time should therefore be reliable, since PDT should be the same within the same\n    // discontinuity sequence.\n    alignPDT(details, lastLevel.details);\n  }\n  if (\n    !details.alignedSliding &&\n    lastLevel.details &&\n    !details.skippedSegments\n  ) {\n    // Try to align on sn so that we pick a better start fragment.\n    // Do not perform this on playlists with delta updates as this is only to align levels on switch\n    // and adjustSliding only adjusts fragments after skippedSegments.\n    adjustSliding(lastLevel.details, details);\n  }\n}\n\n/**\n * Computes the PTS if a new level's fragments using the PTS of a fragment in the last level which shares the same\n * discontinuity sequence.\n * @param lastFrag - The last Fragment which shares the same discontinuity sequence\n * @param lastLevel - The details of the last loaded level\n * @param details - The details of the new level\n */\nfunction alignDiscontinuities(\n  lastFrag: Fragment | null,\n  details: LevelDetails,\n  lastLevel: Level\n) {\n  if (shouldAlignOnDiscontinuities(lastFrag, lastLevel, details)) {\n    const referenceFrag = findDiscontinuousReferenceFrag(\n      lastLevel.details,\n      details\n    );\n    if (referenceFrag && Number.isFinite(referenceFrag.start)) {\n      logger.log(\n        `Adjusting PTS using last level due to CC increase within current level ${details.url}`\n      );\n      adjustSlidingStart(referenceFrag.start, details);\n    }\n  }\n}\n\n/**\n * Computes the PTS of a new level's fragments using the difference in Program Date Time from the last level.\n * @param details - The details of the new level\n * @param lastDetails - The details of the last loaded level\n */\nexport function alignPDT(details: LevelDetails, lastDetails: LevelDetails) {\n  // This check protects the unsafe \"!\" usage below for null program date time access.\n  if (\n    !lastDetails.fragments.length ||\n    !details.hasProgramDateTime ||\n    !lastDetails.hasProgramDateTime\n  ) {\n    return;\n  }\n  // if last level sliding is 1000 and its first frag PROGRAM-DATE-TIME is 2017-08-20 1:10:00 AM\n  // and if new details first frag PROGRAM DATE-TIME is 2017-08-20 1:10:08 AM\n  // then we can deduce that playlist B sliding is 1000+8 = 1008s\n  const lastPDT = lastDetails.fragments[0].programDateTime!; // hasProgramDateTime check above makes this safe.\n  const newPDT = details.fragments[0].programDateTime!;\n  // date diff is in ms. frag.start is in seconds\n  const sliding = (newPDT - lastPDT) / 1000 + lastDetails.fragments[0].start;\n  if (sliding && Number.isFinite(sliding)) {\n    logger.log(\n      `Adjusting PTS using programDateTime delta ${\n        newPDT - lastPDT\n      }ms, sliding:${sliding.toFixed(3)} ${details.url} `\n    );\n    adjustSlidingStart(sliding, details);\n  }\n}\n\n/**\n * Ensures appropriate time-alignment between renditions based on PDT. Unlike `alignPDT`, which adjusts\n * the timeline based on the delta between PDTs of the 0th fragment of two playlists/`LevelDetails`,\n * this function assumes the timelines represented in `refDetails` are accurate, including the PDTs,\n * and uses the \"wallclock\"/PDT timeline as a cross-reference to `details`, adjusting the presentation\n * times/timelines of `details` accordingly.\n * Given the asynchronous nature of fetches and initial loads of live `main` and audio/subtitle tracks,\n * the primary purpose of this function is to ensure the \"local timelines\" of audio/subtitle tracks\n * are aligned to the main/video timeline, using PDT as the cross-reference/\"anchor\" that should\n * be consistent across playlists, per the HLS spec.\n * @param details - The details of the rendition you'd like to time-align (e.g. an audio rendition).\n * @param refDetails - The details of the reference rendition with start and PDT times for alignment.\n */\nexport function alignMediaPlaylistByPDT(\n  details: LevelDetails,\n  refDetails: LevelDetails\n) {\n  if (!details.hasProgramDateTime || !refDetails.hasProgramDateTime) {\n    return;\n  }\n\n  const fragments = details.fragments;\n  const refFragments = refDetails.fragments;\n  if (!fragments.length || !refFragments.length) {\n    return;\n  }\n\n  // Calculate a delta to apply to all fragments according to the delta in PDT times and start times\n  // of a fragment in the reference details, and a fragment in the target details of the same discontinuity.\n  // If a fragment of the same discontinuity was not found use the middle fragment of both.\n  const middleFrag = Math.round(refFragments.length / 2) - 1;\n  const refFrag = refFragments[middleFrag];\n  const frag =\n    findFirstFragWithCC(fragments, refFrag.cc) ||\n    fragments[Math.round(fragments.length / 2) - 1];\n\n  const refPDT = refFrag.programDateTime;\n  const targetPDT = frag.programDateTime;\n  if (refPDT === null || targetPDT === null) {\n    return;\n  }\n\n  const delta = (targetPDT - refPDT) / 1000 - (frag.start - refFrag.start);\n  adjustSlidingStart(delta, details);\n}\n","import { sliceUint8 } from '../utils/typed-array';\n\n// PKCS7\nexport function removePadding(array: Uint8Array): Uint8Array {\n  const outputBytes = array.byteLength;\n  const paddingBytes =\n    outputBytes && new DataView(array.buffer).getUint8(outputBytes - 1);\n  if (paddingBytes) {\n    return sliceUint8(array, 0, outputBytes - paddingBytes);\n  }\n  return array;\n}\n\nexport default class AESDecryptor {\n  private rcon: Array<number> = [\n    0x0, 0x1, 0x2, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36,\n  ];\n  private subMix: Array<Uint32Array> = [\n    new Uint32Array(256),\n    new Uint32Array(256),\n    new Uint32Array(256),\n    new Uint32Array(256),\n  ];\n  private invSubMix: Array<Uint32Array> = [\n    new Uint32Array(256),\n    new Uint32Array(256),\n    new Uint32Array(256),\n    new Uint32Array(256),\n  ];\n  private sBox: Uint32Array = new Uint32Array(256);\n  private invSBox: Uint32Array = new Uint32Array(256);\n  private key: Uint32Array = new Uint32Array(0);\n\n  private ksRows: number = 0;\n  private keySize: number = 0;\n  private keySchedule!: Uint32Array;\n  private invKeySchedule!: Uint32Array;\n\n  constructor() {\n    this.initTable();\n  }\n\n  // Using view.getUint32() also swaps the byte order.\n  uint8ArrayToUint32Array_(arrayBuffer) {\n    const view = new DataView(arrayBuffer);\n    const newArray = new Uint32Array(4);\n    for (let i = 0; i < 4; i++) {\n      newArray[i] = view.getUint32(i * 4);\n    }\n\n    return newArray;\n  }\n\n  initTable() {\n    const sBox = this.sBox;\n    const invSBox = this.invSBox;\n    const subMix = this.subMix;\n    const subMix0 = subMix[0];\n    const subMix1 = subMix[1];\n    const subMix2 = subMix[2];\n    const subMix3 = subMix[3];\n    const invSubMix = this.invSubMix;\n    const invSubMix0 = invSubMix[0];\n    const invSubMix1 = invSubMix[1];\n    const invSubMix2 = invSubMix[2];\n    const invSubMix3 = invSubMix[3];\n\n    const d = new Uint32Array(256);\n    let x = 0;\n    let xi = 0;\n    let i = 0;\n    for (i = 0; i < 256; i++) {\n      if (i < 128) {\n        d[i] = i << 1;\n      } else {\n        d[i] = (i << 1) ^ 0x11b;\n      }\n    }\n\n    for (i = 0; i < 256; i++) {\n      let sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4);\n      sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63;\n      sBox[x] = sx;\n      invSBox[sx] = x;\n\n      // Compute multiplication\n      const x2 = d[x];\n      const x4 = d[x2];\n      const x8 = d[x4];\n\n      // Compute sub/invSub bytes, mix columns tables\n      let t = (d[sx] * 0x101) ^ (sx * 0x1010100);\n      subMix0[x] = (t << 24) | (t >>> 8);\n      subMix1[x] = (t << 16) | (t >>> 16);\n      subMix2[x] = (t << 8) | (t >>> 24);\n      subMix3[x] = t;\n\n      // Compute inv sub bytes, inv mix columns tables\n      t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100);\n      invSubMix0[sx] = (t << 24) | (t >>> 8);\n      invSubMix1[sx] = (t << 16) | (t >>> 16);\n      invSubMix2[sx] = (t << 8) | (t >>> 24);\n      invSubMix3[sx] = t;\n\n      // Compute next counter\n      if (!x) {\n        x = xi = 1;\n      } else {\n        x = x2 ^ d[d[d[x8 ^ x2]]];\n        xi ^= d[d[xi]];\n      }\n    }\n  }\n\n  expandKey(keyBuffer: ArrayBuffer) {\n    // convert keyBuffer to Uint32Array\n    const key = this.uint8ArrayToUint32Array_(keyBuffer);\n    let sameKey = true;\n    let offset = 0;\n\n    while (offset < key.length && sameKey) {\n      sameKey = key[offset] === this.key[offset];\n      offset++;\n    }\n\n    if (sameKey) {\n      return;\n    }\n\n    this.key = key;\n    const keySize = (this.keySize = key.length);\n\n    if (keySize !== 4 && keySize !== 6 && keySize !== 8) {\n      throw new Error('Invalid aes key size=' + keySize);\n    }\n\n    const ksRows = (this.ksRows = (keySize + 6 + 1) * 4);\n    let ksRow;\n    let invKsRow;\n\n    const keySchedule = (this.keySchedule = new Uint32Array(ksRows));\n    const invKeySchedule = (this.invKeySchedule = new Uint32Array(ksRows));\n    const sbox = this.sBox;\n    const rcon = this.rcon;\n\n    const invSubMix = this.invSubMix;\n    const invSubMix0 = invSubMix[0];\n    const invSubMix1 = invSubMix[1];\n    const invSubMix2 = invSubMix[2];\n    const invSubMix3 = invSubMix[3];\n\n    let prev;\n    let t;\n\n    for (ksRow = 0; ksRow < ksRows; ksRow++) {\n      if (ksRow < keySize) {\n        prev = keySchedule[ksRow] = key[ksRow];\n        continue;\n      }\n      t = prev;\n\n      if (ksRow % keySize === 0) {\n        // Rot word\n        t = (t << 8) | (t >>> 24);\n\n        // Sub word\n        t =\n          (sbox[t >>> 24] << 24) |\n          (sbox[(t >>> 16) & 0xff] << 16) |\n          (sbox[(t >>> 8) & 0xff] << 8) |\n          sbox[t & 0xff];\n\n        // Mix Rcon\n        t ^= rcon[(ksRow / keySize) | 0] << 24;\n      } else if (keySize > 6 && ksRow % keySize === 4) {\n        // Sub word\n        t =\n          (sbox[t >>> 24] << 24) |\n          (sbox[(t >>> 16) & 0xff] << 16) |\n          (sbox[(t >>> 8) & 0xff] << 8) |\n          sbox[t & 0xff];\n      }\n\n      keySchedule[ksRow] = prev = (keySchedule[ksRow - keySize] ^ t) >>> 0;\n    }\n\n    for (invKsRow = 0; invKsRow < ksRows; invKsRow++) {\n      ksRow = ksRows - invKsRow;\n      if (invKsRow & 3) {\n        t = keySchedule[ksRow];\n      } else {\n        t = keySchedule[ksRow - 4];\n      }\n\n      if (invKsRow < 4 || ksRow <= 4) {\n        invKeySchedule[invKsRow] = t;\n      } else {\n        invKeySchedule[invKsRow] =\n          invSubMix0[sbox[t >>> 24]] ^\n          invSubMix1[sbox[(t >>> 16) & 0xff]] ^\n          invSubMix2[sbox[(t >>> 8) & 0xff]] ^\n          invSubMix3[sbox[t & 0xff]];\n      }\n\n      invKeySchedule[invKsRow] = invKeySchedule[invKsRow] >>> 0;\n    }\n  }\n\n  // Adding this as a method greatly improves performance.\n  networkToHostOrderSwap(word) {\n    return (\n      (word << 24) |\n      ((word & 0xff00) << 8) |\n      ((word & 0xff0000) >> 8) |\n      (word >>> 24)\n    );\n  }\n\n  decrypt(inputArrayBuffer: ArrayBuffer, offset: number, aesIV: ArrayBuffer) {\n    const nRounds = this.keySize + 6;\n    const invKeySchedule = this.invKeySchedule;\n    const invSBOX = this.invSBox;\n\n    const invSubMix = this.invSubMix;\n    const invSubMix0 = invSubMix[0];\n    const invSubMix1 = invSubMix[1];\n    const invSubMix2 = invSubMix[2];\n    const invSubMix3 = invSubMix[3];\n\n    const initVector = this.uint8ArrayToUint32Array_(aesIV);\n    let initVector0 = initVector[0];\n    let initVector1 = initVector[1];\n    let initVector2 = initVector[2];\n    let initVector3 = initVector[3];\n\n    const inputInt32 = new Int32Array(inputArrayBuffer);\n    const outputInt32 = new Int32Array(inputInt32.length);\n\n    let t0, t1, t2, t3;\n    let s0, s1, s2, s3;\n    let inputWords0, inputWords1, inputWords2, inputWords3;\n\n    let ksRow, i;\n    const swapWord = this.networkToHostOrderSwap;\n\n    while (offset < inputInt32.length) {\n      inputWords0 = swapWord(inputInt32[offset]);\n      inputWords1 = swapWord(inputInt32[offset + 1]);\n      inputWords2 = swapWord(inputInt32[offset + 2]);\n      inputWords3 = swapWord(inputInt32[offset + 3]);\n\n      s0 = inputWords0 ^ invKeySchedule[0];\n      s1 = inputWords3 ^ invKeySchedule[1];\n      s2 = inputWords2 ^ invKeySchedule[2];\n      s3 = inputWords1 ^ invKeySchedule[3];\n\n      ksRow = 4;\n\n      // Iterate through the rounds of decryption\n      for (i = 1; i < nRounds; i++) {\n        t0 =\n          invSubMix0[s0 >>> 24] ^\n          invSubMix1[(s1 >> 16) & 0xff] ^\n          invSubMix2[(s2 >> 8) & 0xff] ^\n          invSubMix3[s3 & 0xff] ^\n          invKeySchedule[ksRow];\n        t1 =\n          invSubMix0[s1 >>> 24] ^\n          invSubMix1[(s2 >> 16) & 0xff] ^\n          invSubMix2[(s3 >> 8) & 0xff] ^\n          invSubMix3[s0 & 0xff] ^\n          invKeySchedule[ksRow + 1];\n        t2 =\n          invSubMix0[s2 >>> 24] ^\n          invSubMix1[(s3 >> 16) & 0xff] ^\n          invSubMix2[(s0 >> 8) & 0xff] ^\n          invSubMix3[s1 & 0xff] ^\n          invKeySchedule[ksRow + 2];\n        t3 =\n          invSubMix0[s3 >>> 24] ^\n          invSubMix1[(s0 >> 16) & 0xff] ^\n          invSubMix2[(s1 >> 8) & 0xff] ^\n          invSubMix3[s2 & 0xff] ^\n          invKeySchedule[ksRow + 3];\n        // Update state\n        s0 = t0;\n        s1 = t1;\n        s2 = t2;\n        s3 = t3;\n\n        ksRow = ksRow + 4;\n      }\n\n      // Shift rows, sub bytes, add round key\n      t0 =\n        (invSBOX[s0 >>> 24] << 24) ^\n        (invSBOX[(s1 >> 16) & 0xff] << 16) ^\n        (invSBOX[(s2 >> 8) & 0xff] << 8) ^\n        invSBOX[s3 & 0xff] ^\n        invKeySchedule[ksRow];\n      t1 =\n        (invSBOX[s1 >>> 24] << 24) ^\n        (invSBOX[(s2 >> 16) & 0xff] << 16) ^\n        (invSBOX[(s3 >> 8) & 0xff] << 8) ^\n        invSBOX[s0 & 0xff] ^\n        invKeySchedule[ksRow + 1];\n      t2 =\n        (invSBOX[s2 >>> 24] << 24) ^\n        (invSBOX[(s3 >> 16) & 0xff] << 16) ^\n        (invSBOX[(s0 >> 8) & 0xff] << 8) ^\n        invSBOX[s1 & 0xff] ^\n        invKeySchedule[ksRow + 2];\n      t3 =\n        (invSBOX[s3 >>> 24] << 24) ^\n        (invSBOX[(s0 >> 16) & 0xff] << 16) ^\n        (invSBOX[(s1 >> 8) & 0xff] << 8) ^\n        invSBOX[s2 & 0xff] ^\n        invKeySchedule[ksRow + 3];\n\n      // Write\n      outputInt32[offset] = swapWord(t0 ^ initVector0);\n      outputInt32[offset + 1] = swapWord(t3 ^ initVector1);\n      outputInt32[offset + 2] = swapWord(t2 ^ initVector2);\n      outputInt32[offset + 3] = swapWord(t1 ^ initVector3);\n\n      // reset initVector to last 4 unsigned int\n      initVector0 = inputWords0;\n      initVector1 = inputWords1;\n      initVector2 = inputWords2;\n      initVector3 = inputWords3;\n\n      offset = offset + 4;\n    }\n\n    return outputInt32.buffer;\n  }\n}\n","import { getMediaSource } from './utils/mediasource-helper';\nimport type { ExtendedSourceBuffer } from './types/buffer';\n\nfunction getSourceBuffer(): typeof self.SourceBuffer {\n  return self.SourceBuffer || (self as any).WebKitSourceBuffer;\n}\n\n/**\n * @ignore\n */\nexport function isSupported(): boolean {\n  const mediaSource = getMediaSource();\n  if (!mediaSource) {\n    return false;\n  }\n  const sourceBuffer = getSourceBuffer();\n  const isTypeSupported =\n    mediaSource &&\n    typeof mediaSource.isTypeSupported === 'function' &&\n    mediaSource.isTypeSupported('video/mp4; codecs=\"avc1.42E01E,mp4a.40.2\"');\n\n  // if SourceBuffer is exposed ensure its API is valid\n  // Older browsers do not expose SourceBuffer globally so checking SourceBuffer.prototype is impossible\n  const sourceBufferValidAPI =\n    !sourceBuffer ||\n    (sourceBuffer.prototype &&\n      typeof sourceBuffer.prototype.appendBuffer === 'function' &&\n      typeof sourceBuffer.prototype.remove === 'function');\n  return !!isTypeSupported && !!sourceBufferValidAPI;\n}\n\n/**\n * @ignore\n */\nexport function changeTypeSupported(): boolean {\n  const sourceBuffer = getSourceBuffer();\n  return (\n    typeof (sourceBuffer?.prototype as ExtendedSourceBuffer)?.changeType ===\n    'function'\n  );\n}\n","// ensure the worker ends up in the bundle\n// If the worker should not be included this gets aliased to empty.js\nimport './transmuxer-worker';\n\nexport function hasUMDWorker(): boolean {\n  return typeof __HLS_WORKER_BUNDLE__ === 'function';\n}\n\nexport type WorkerContext = {\n  worker: Worker;\n  objectURL?: string;\n  scriptURL?: string;\n};\n\nexport function injectWorker(): WorkerContext {\n  const blob = new self.Blob(\n    [\n      `var exports={};var module={exports:exports};function define(f){f()};define.amd=true;(${__HLS_WORKER_BUNDLE__.toString()})(true);`,\n    ],\n    {\n      type: 'text/javascript',\n    }\n  );\n  const objectURL = self.URL.createObjectURL(blob);\n  const worker = new self.Worker(objectURL);\n\n  return {\n    worker,\n    objectURL,\n  };\n}\n\nexport function loadWorker(path: string): WorkerContext {\n  const scriptURL = new self.URL(path, self.location.href).href;\n  const worker = new self.Worker(scriptURL);\n\n  return {\n    worker,\n    scriptURL,\n  };\n}\n","import type { DemuxedTrack } from '../types/demuxer';\n\nexport function dummyTrack(type = '', inputTimeScale = 90000): DemuxedTrack {\n  return {\n    type,\n    id: -1,\n    pid: -1,\n    inputTimeScale,\n    sequenceNumber: -1,\n    samples: [],\n    dropped: 0,\n  };\n}\n","/**\n * ADTS parser helper\n * @link https://wiki.multimedia.cx/index.php?title=ADTS\n */\nimport { logger } from '../utils/logger';\nimport { ErrorTypes, ErrorDetails } from '../errors';\nimport type { HlsEventEmitter } from '../events';\nimport { Events } from '../events';\nimport type {\n  DemuxedAudioTrack,\n  AudioFrame,\n  AudioSample,\n} from '../types/demuxer';\n\ntype AudioConfig = {\n  config: number[];\n  samplerate: number;\n  channelCount: number;\n  codec: string;\n  manifestCodec: string;\n};\n\ntype FrameHeader = {\n  headerLength: number;\n  frameLength: number;\n};\n\nexport function getAudioConfig(\n  observer,\n  data: Uint8Array,\n  offset: number,\n  audioCodec: string\n): AudioConfig | void {\n  let adtsObjectType: number;\n  let adtsExtensionSamplingIndex: number;\n  let adtsChannelConfig: number;\n  let config: number[];\n  const userAgent = navigator.userAgent.toLowerCase();\n  const manifestCodec = audioCodec;\n  const adtsSamplingRates = [\n    96000, 88200, 64000, 48000, 44100, 32000, 24000, 22050, 16000, 12000, 11025,\n    8000, 7350,\n  ];\n  // byte 2\n  adtsObjectType = ((data[offset + 2] & 0xc0) >>> 6) + 1;\n  const adtsSamplingIndex = (data[offset + 2] & 0x3c) >>> 2;\n  if (adtsSamplingIndex > adtsSamplingRates.length - 1) {\n    observer.trigger(Events.ERROR, {\n      type: ErrorTypes.MEDIA_ERROR,\n      details: ErrorDetails.FRAG_PARSING_ERROR,\n      fatal: true,\n      reason: `invalid ADTS sampling index:${adtsSamplingIndex}`,\n    });\n    return;\n  }\n  adtsChannelConfig = (data[offset + 2] & 0x01) << 2;\n  // byte 3\n  adtsChannelConfig |= (data[offset + 3] & 0xc0) >>> 6;\n  logger.log(\n    `manifest codec:${audioCodec}, ADTS type:${adtsObjectType}, samplingIndex:${adtsSamplingIndex}`\n  );\n  // firefox: freq less than 24kHz = AAC SBR (HE-AAC)\n  if (/firefox/i.test(userAgent)) {\n    if (adtsSamplingIndex >= 6) {\n      adtsObjectType = 5;\n      config = new Array(4);\n      // HE-AAC uses SBR (Spectral Band Replication) , high frequencies are constructed from low frequencies\n      // there is a factor 2 between frame sample rate and output sample rate\n      // multiply frequency by 2 (see table below, equivalent to substract 3)\n      adtsExtensionSamplingIndex = adtsSamplingIndex - 3;\n    } else {\n      adtsObjectType = 2;\n      config = new Array(2);\n      adtsExtensionSamplingIndex = adtsSamplingIndex;\n    }\n    // Android : always use AAC\n  } else if (userAgent.indexOf('android') !== -1) {\n    adtsObjectType = 2;\n    config = new Array(2);\n    adtsExtensionSamplingIndex = adtsSamplingIndex;\n  } else {\n    /*  for other browsers (Chrome/Vivaldi/Opera ...)\n        always force audio type to be HE-AAC SBR, as some browsers do not support audio codec switch properly (like Chrome ...)\n    */\n    adtsObjectType = 5;\n    config = new Array(4);\n    // if (manifest codec is HE-AAC or HE-AACv2) OR (manifest codec not specified AND frequency less than 24kHz)\n    if (\n      (audioCodec &&\n        (audioCodec.indexOf('mp4a.40.29') !== -1 ||\n          audioCodec.indexOf('mp4a.40.5') !== -1)) ||\n      (!audioCodec && adtsSamplingIndex >= 6)\n    ) {\n      // HE-AAC uses SBR (Spectral Band Replication) , high frequencies are constructed from low frequencies\n      // there is a factor 2 between frame sample rate and output sample rate\n      // multiply frequency by 2 (see table below, equivalent to substract 3)\n      adtsExtensionSamplingIndex = adtsSamplingIndex - 3;\n    } else {\n      // if (manifest codec is AAC) AND (frequency less than 24kHz AND nb channel is 1) OR (manifest codec not specified and mono audio)\n      // Chrome fails to play back with low frequency AAC LC mono when initialized with HE-AAC.  This is not a problem with stereo.\n      if (\n        (audioCodec &&\n          audioCodec.indexOf('mp4a.40.2') !== -1 &&\n          ((adtsSamplingIndex >= 6 && adtsChannelConfig === 1) ||\n            /vivaldi/i.test(userAgent))) ||\n        (!audioCodec && adtsChannelConfig === 1)\n      ) {\n        adtsObjectType = 2;\n        config = new Array(2);\n      }\n      adtsExtensionSamplingIndex = adtsSamplingIndex;\n    }\n  }\n  /* refer to http://wiki.multimedia.cx/index.php?title=MPEG-4_Audio#Audio_Specific_Config\n      ISO 14496-3 (AAC).pdf - Table 1.13 — Syntax of AudioSpecificConfig()\n    Audio Profile / Audio Object Type\n    0: Null\n    1: AAC Main\n    2: AAC LC (Low Complexity)\n    3: AAC SSR (Scalable Sample Rate)\n    4: AAC LTP (Long Term Prediction)\n    5: SBR (Spectral Band Replication)\n    6: AAC Scalable\n   sampling freq\n    0: 96000 Hz\n    1: 88200 Hz\n    2: 64000 Hz\n    3: 48000 Hz\n    4: 44100 Hz\n    5: 32000 Hz\n    6: 24000 Hz\n    7: 22050 Hz\n    8: 16000 Hz\n    9: 12000 Hz\n    10: 11025 Hz\n    11: 8000 Hz\n    12: 7350 Hz\n    13: Reserved\n    14: Reserved\n    15: frequency is written explictly\n    Channel Configurations\n    These are the channel configurations:\n    0: Defined in AOT Specifc Config\n    1: 1 channel: front-center\n    2: 2 channels: front-left, front-right\n  */\n  // audioObjectType = profile => profile, the MPEG-4 Audio Object Type minus 1\n  config[0] = adtsObjectType << 3;\n  // samplingFrequencyIndex\n  config[0] |= (adtsSamplingIndex & 0x0e) >> 1;\n  config[1] |= (adtsSamplingIndex & 0x01) << 7;\n  // channelConfiguration\n  config[1] |= adtsChannelConfig << 3;\n  if (adtsObjectType === 5) {\n    // adtsExtensionSamplingIndex\n    config[1] |= (adtsExtensionSamplingIndex & 0x0e) >> 1;\n    config[2] = (adtsExtensionSamplingIndex & 0x01) << 7;\n    // adtsObjectType (force to 2, chrome is checking that object type is less than 5 ???\n    //    https://chromium.googlesource.com/chromium/src.git/+/master/media/formats/mp4/aac.cc\n    config[2] |= 2 << 2;\n    config[3] = 0;\n  }\n  return {\n    config,\n    samplerate: adtsSamplingRates[adtsSamplingIndex],\n    channelCount: adtsChannelConfig,\n    codec: 'mp4a.40.' + adtsObjectType,\n    manifestCodec,\n  };\n}\n\nexport function isHeaderPattern(data: Uint8Array, offset: number): boolean {\n  return data[offset] === 0xff && (data[offset + 1] & 0xf6) === 0xf0;\n}\n\nexport function getHeaderLength(data: Uint8Array, offset: number): number {\n  return data[offset + 1] & 0x01 ? 7 : 9;\n}\n\nexport function getFullFrameLength(data: Uint8Array, offset: number): number {\n  return (\n    ((data[offset + 3] & 0x03) << 11) |\n    (data[offset + 4] << 3) |\n    ((data[offset + 5] & 0xe0) >>> 5)\n  );\n}\n\nexport function canGetFrameLength(data: Uint8Array, offset: number): boolean {\n  return offset + 5 < data.length;\n}\n\nexport function isHeader(data: Uint8Array, offset: number): boolean {\n  // Look for ADTS header | 1111 1111 | 1111 X00X | where X can be either 0 or 1\n  // Layer bits (position 14 and 15) in header should be always 0 for ADTS\n  // More info https://wiki.multimedia.cx/index.php?title=ADTS\n  return offset + 1 < data.length && isHeaderPattern(data, offset);\n}\n\nexport function canParse(data: Uint8Array, offset: number): boolean {\n  return (\n    canGetFrameLength(data, offset) &&\n    isHeaderPattern(data, offset) &&\n    getFullFrameLength(data, offset) <= data.length - offset\n  );\n}\n\nexport function probe(data: Uint8Array, offset: number): boolean {\n  // same as isHeader but we also check that ADTS frame follows last ADTS frame\n  // or end of data is reached\n  if (isHeader(data, offset)) {\n    // ADTS header Length\n    const headerLength = getHeaderLength(data, offset);\n    if (offset + headerLength >= data.length) {\n      return false;\n    }\n    // ADTS frame Length\n    const frameLength = getFullFrameLength(data, offset);\n    if (frameLength <= headerLength) {\n      return false;\n    }\n\n    const newOffset = offset + frameLength;\n    return newOffset === data.length || isHeader(data, newOffset);\n  }\n  return false;\n}\n\nexport function initTrackConfig(\n  track: DemuxedAudioTrack,\n  observer: HlsEventEmitter,\n  data: Uint8Array,\n  offset: number,\n  audioCodec: string\n) {\n  if (!track.samplerate) {\n    const config = getAudioConfig(observer, data, offset, audioCodec);\n    if (!config) {\n      return;\n    }\n    track.config = config.config;\n    track.samplerate = config.samplerate;\n    track.channelCount = config.channelCount;\n    track.codec = config.codec;\n    track.manifestCodec = config.manifestCodec;\n    logger.log(\n      `parsed codec:${track.codec}, rate:${config.samplerate}, channels:${config.channelCount}`\n    );\n  }\n}\n\nexport function getFrameDuration(samplerate: number): number {\n  return (1024 * 90000) / samplerate;\n}\n\nexport function parseFrameHeader(\n  data: Uint8Array,\n  offset: number\n): FrameHeader | void {\n  // The protection skip bit tells us if we have 2 bytes of CRC data at the end of the ADTS header\n  const headerLength = getHeaderLength(data, offset);\n  if (offset + headerLength <= data.length) {\n    // retrieve frame size\n    const frameLength = getFullFrameLength(data, offset) - headerLength;\n    if (frameLength > 0) {\n      // logger.log(`AAC frame, offset/length/total/pts:${offset+headerLength}/${frameLength}/${data.byteLength}`);\n      return { headerLength, frameLength };\n    }\n  }\n}\n\nexport function appendFrame(\n  track: DemuxedAudioTrack,\n  data: Uint8Array,\n  offset: number,\n  pts: number,\n  frameIndex: number\n): AudioFrame {\n  const frameDuration = getFrameDuration(track.samplerate as number);\n  const stamp = pts + frameIndex * frameDuration;\n  const header = parseFrameHeader(data, offset);\n  let unit: Uint8Array;\n  if (header) {\n    const { frameLength, headerLength } = header;\n    const length = headerLength + frameLength;\n    const missing = Math.max(0, offset + length - data.length);\n    // logger.log(`AAC frame ${frameIndex}, pts:${stamp} length@offset/total: ${frameLength}@${offset+headerLength}/${data.byteLength} missing: ${missing}`);\n    if (missing) {\n      unit = new Uint8Array(length - headerLength);\n      unit.set(data.subarray(offset + headerLength, data.length), 0);\n    } else {\n      unit = data.subarray(offset + headerLength, offset + length);\n    }\n\n    const sample: AudioSample = {\n      unit,\n      pts: stamp,\n    };\n    if (!missing) {\n      track.samples.push(sample as AudioSample);\n    }\n\n    return { sample, length, missing };\n  }\n  // overflow incomplete header\n  const length = data.length - offset;\n  unit = new Uint8Array(length);\n  unit.set(data.subarray(offset, data.length), 0);\n  const sample: AudioSample = {\n    unit,\n    pts: stamp,\n  };\n  return { sample, length, missing: -1 };\n}\n","/**\n *  MPEG parser helper\n */\nimport { DemuxedAudioTrack } from '../types/demuxer';\n\nlet chromeVersion: number | null = null;\n\nconst BitratesMap = [\n  32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 32, 48, 56,\n  64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 384, 32, 40, 48, 56, 64, 80,\n  96, 112, 128, 160, 192, 224, 256, 320, 32, 48, 56, 64, 80, 96, 112, 128, 144,\n  160, 176, 192, 224, 256, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144,\n  160,\n];\n\nconst SamplingRateMap = [\n  44100, 48000, 32000, 22050, 24000, 16000, 11025, 12000, 8000,\n];\n\nconst SamplesCoefficients = [\n  // MPEG 2.5\n  [\n    0, // Reserved\n    72, // Layer3\n    144, // Layer2\n    12, // Layer1\n  ],\n  // Reserved\n  [\n    0, // Reserved\n    0, // Layer3\n    0, // Layer2\n    0, // Layer1\n  ],\n  // MPEG 2\n  [\n    0, // Reserved\n    72, // Layer3\n    144, // Layer2\n    12, // Layer1\n  ],\n  // MPEG 1\n  [\n    0, // Reserved\n    144, // Layer3\n    144, // Layer2\n    12, // Layer1\n  ],\n];\n\nconst BytesInSlot = [\n  0, // Reserved\n  1, // Layer3\n  1, // Layer2\n  4, // Layer1\n];\n\nexport function appendFrame(\n  track: DemuxedAudioTrack,\n  data: Uint8Array,\n  offset: number,\n  pts: number,\n  frameIndex: number\n) {\n  // Using http://www.datavoyage.com/mpgscript/mpeghdr.htm as a reference\n  if (offset + 24 > data.length) {\n    return;\n  }\n\n  const header = parseHeader(data, offset);\n  if (header && offset + header.frameLength <= data.length) {\n    const frameDuration = (header.samplesPerFrame * 90000) / header.sampleRate;\n    const stamp = pts + frameIndex * frameDuration;\n    const sample = {\n      unit: data.subarray(offset, offset + header.frameLength),\n      pts: stamp,\n      dts: stamp,\n    };\n\n    track.config = [];\n    track.channelCount = header.channelCount;\n    track.samplerate = header.sampleRate;\n    track.samples.push(sample);\n\n    return { sample, length: header.frameLength, missing: 0 };\n  }\n}\n\nexport function parseHeader(data: Uint8Array, offset: number) {\n  const mpegVersion = (data[offset + 1] >> 3) & 3;\n  const mpegLayer = (data[offset + 1] >> 1) & 3;\n  const bitRateIndex = (data[offset + 2] >> 4) & 15;\n  const sampleRateIndex = (data[offset + 2] >> 2) & 3;\n  if (\n    mpegVersion !== 1 &&\n    bitRateIndex !== 0 &&\n    bitRateIndex !== 15 &&\n    sampleRateIndex !== 3\n  ) {\n    const paddingBit = (data[offset + 2] >> 1) & 1;\n    const channelMode = data[offset + 3] >> 6;\n    const columnInBitrates =\n      mpegVersion === 3 ? 3 - mpegLayer : mpegLayer === 3 ? 3 : 4;\n    const bitRate =\n      BitratesMap[columnInBitrates * 14 + bitRateIndex - 1] * 1000;\n    const columnInSampleRates =\n      mpegVersion === 3 ? 0 : mpegVersion === 2 ? 1 : 2;\n    const sampleRate =\n      SamplingRateMap[columnInSampleRates * 3 + sampleRateIndex];\n    const channelCount = channelMode === 3 ? 1 : 2; // If bits of channel mode are `11` then it is a single channel (Mono)\n    const sampleCoefficient = SamplesCoefficients[mpegVersion][mpegLayer];\n    const bytesInSlot = BytesInSlot[mpegLayer];\n    const samplesPerFrame = sampleCoefficient * 8 * bytesInSlot;\n    const frameLength =\n      Math.floor((sampleCoefficient * bitRate) / sampleRate + paddingBit) *\n      bytesInSlot;\n\n    if (chromeVersion === null) {\n      const userAgent = navigator.userAgent || '';\n      const result = userAgent.match(/Chrome\\/(\\d+)/i);\n      chromeVersion = result ? parseInt(result[1]) : 0;\n    }\n    const needChromeFix = !!chromeVersion && chromeVersion <= 87;\n\n    if (\n      needChromeFix &&\n      mpegLayer === 2 &&\n      bitRate >= 224000 &&\n      channelMode === 0\n    ) {\n      // Work around bug in Chromium by setting channelMode to dual-channel (01) instead of stereo (00)\n      data[offset + 3] = data[offset + 3] | 0x80;\n    }\n\n    return { sampleRate, channelCount, frameLength, samplesPerFrame };\n  }\n}\n\nexport function isHeaderPattern(data: Uint8Array, offset: number): boolean {\n  return (\n    data[offset] === 0xff &&\n    (data[offset + 1] & 0xe0) === 0xe0 &&\n    (data[offset + 1] & 0x06) !== 0x00\n  );\n}\n\nexport function isHeader(data: Uint8Array, offset: number): boolean {\n  // Look for MPEG header | 1111 1111 | 111X XYZX | where X can be either 0 or 1 and Y or Z should be 1\n  // Layer bits (position 14 and 15) in header should be always different from 0 (Layer I or Layer II or Layer III)\n  // More info http://www.mp3-tech.org/programmer/frame_header.html\n  return offset + 1 < data.length && isHeaderPattern(data, offset);\n}\n\nexport function canParse(data: Uint8Array, offset: number): boolean {\n  const headerSize = 4;\n\n  return isHeaderPattern(data, offset) && headerSize <= data.length - offset;\n}\n\nexport function probe(data: Uint8Array, offset: number): boolean {\n  // same as isHeader but we also check that MPEG frame follows last MPEG frame\n  // or end of data is reached\n  if (offset + 1 < data.length && isHeaderPattern(data, offset)) {\n    // MPEG header Length\n    const headerLength = 4;\n    // MPEG frame Length\n    const header = parseHeader(data, offset);\n    let frameLength = headerLength;\n    if (header?.frameLength) {\n      frameLength = header.frameLength;\n    }\n\n    const newOffset = offset + frameLength;\n    return newOffset === data.length || isHeader(data, newOffset);\n  }\n  return false;\n}\n","/**\n * highly optimized TS demuxer:\n * parse PAT, PMT\n * extract PES packet from audio and video PIDs\n * extract AVC/H264 NAL units and AAC/ADTS samples from PES packet\n * trigger the remuxer upon parsing completion\n * it also tries to workaround as best as it can audio codec switch (HE-AAC to AAC and vice versa), without having to restart the MediaSource.\n * it also controls the remuxing process :\n * upon discontinuity or level switch detection, it will also notifies the remuxer so that it can reset its state.\n */\n\nimport * as ADTS from './adts';\nimport * as MpegAudio from './mpegaudio';\nimport ExpGolomb from './exp-golomb';\nimport SampleAesDecrypter from './sample-aes';\nimport { Events } from '../events';\nimport {\n  appendUint8Array,\n  parseSEIMessageFromNALu,\n  RemuxerTrackIdConfig,\n} from '../utils/mp4-tools';\nimport { logger } from '../utils/logger';\nimport { ErrorTypes, ErrorDetails } from '../errors';\nimport type { HlsConfig } from '../config';\nimport type { HlsEventEmitter } from '../events';\nimport {\n  DemuxedAvcTrack,\n  DemuxedAudioTrack,\n  DemuxedTrack,\n  Demuxer,\n  DemuxerResult,\n  AvcSample,\n  DemuxedMetadataTrack,\n  DemuxedUserdataTrack,\n  ElementaryStreamData,\n  KeyData,\n  MetadataSchema,\n} from '../types/demuxer';\nimport { AudioFrame } from '../types/demuxer';\n\ntype ParsedTimestamp = {\n  pts?: number;\n  dts?: number;\n};\n\ntype PES = ParsedTimestamp & {\n  data: Uint8Array;\n  len: number;\n};\n\ntype ParsedAvcSample = ParsedTimestamp & Omit<AvcSample, 'pts' | 'dts'>;\n\nexport interface TypeSupported {\n  mpeg: boolean;\n  mp3: boolean;\n  mp4: boolean;\n}\n\nconst PACKET_LENGTH = 188;\n\nclass TSDemuxer implements Demuxer {\n  private readonly observer: HlsEventEmitter;\n  private readonly config: HlsConfig;\n  private typeSupported: TypeSupported;\n\n  private sampleAes: SampleAesDecrypter | null = null;\n  private pmtParsed: boolean = false;\n  private audioCodec?: string;\n  private videoCodec?: string;\n  private _duration: number = 0;\n  private _pmtId: number = -1;\n\n  private _avcTrack?: DemuxedAvcTrack;\n  private _audioTrack?: DemuxedAudioTrack;\n  private _id3Track?: DemuxedMetadataTrack;\n  private _txtTrack?: DemuxedUserdataTrack;\n  private aacOverFlow: AudioFrame | null = null;\n  private avcSample: ParsedAvcSample | null = null;\n  private remainderData: Uint8Array | null = null;\n\n  constructor(\n    observer: HlsEventEmitter,\n    config: HlsConfig,\n    typeSupported: TypeSupported\n  ) {\n    this.observer = observer;\n    this.config = config;\n    this.typeSupported = typeSupported;\n  }\n\n  static probe(data: Uint8Array) {\n    const syncOffset = TSDemuxer.syncOffset(data);\n    if (syncOffset > 0) {\n      logger.warn(\n        `MPEG2-TS detected but first sync word found @ offset ${syncOffset}`\n      );\n    }\n    return syncOffset !== -1;\n  }\n\n  static syncOffset(data: Uint8Array): number {\n    const length = data.length;\n    let scanwindow =\n      Math.min(PACKET_LENGTH * 5, data.length - PACKET_LENGTH) + 1;\n    let i = 0;\n    while (i < scanwindow) {\n      // a TS init segment should contain at least 2 TS packets: PAT and PMT, each starting with 0x47\n      let foundPat = false;\n      let packetStart = -1;\n      let tsPackets = 0;\n      for (let j = i; j < length; j += PACKET_LENGTH) {\n        if (data[j] === 0x47) {\n          tsPackets++;\n          if (packetStart === -1) {\n            packetStart = j;\n            // First sync word found at offset, increase scan length (#5251)\n            if (packetStart !== 0) {\n              scanwindow =\n                Math.min(\n                  packetStart + PACKET_LENGTH * 99,\n                  data.length - PACKET_LENGTH\n                ) + 1;\n            }\n          }\n          if (!foundPat) {\n            foundPat = parsePID(data, j) === 0;\n          }\n          // Sync word found at 0 with 3 packets, or found at offset least 2 packets up to scanwindow (#5501)\n          if (\n            foundPat &&\n            tsPackets > 1 &&\n            ((packetStart === 0 && tsPackets > 2) ||\n              j + PACKET_LENGTH > scanwindow)\n          ) {\n            return packetStart;\n          }\n        } else if (tsPackets) {\n          // Exit if sync word found, but does not contain contiguous packets (#5501)\n          return -1;\n        } else {\n          break;\n        }\n      }\n      i++;\n    }\n    return -1;\n  }\n\n  /**\n   * Creates a track model internal to demuxer used to drive remuxing input\n   */\n  static createTrack(\n    type: 'audio' | 'video' | 'id3' | 'text',\n    duration?: number\n  ): DemuxedTrack {\n    return {\n      container:\n        type === 'video' || type === 'audio' ? 'video/mp2t' : undefined,\n      type,\n      id: RemuxerTrackIdConfig[type],\n      pid: -1,\n      inputTimeScale: 90000,\n      sequenceNumber: 0,\n      samples: [],\n      dropped: 0,\n      duration: type === 'audio' ? duration : undefined,\n    };\n  }\n\n  /**\n   * Initializes a new init segment on the demuxer/remuxer interface. Needed for discontinuities/track-switches (or at stream start)\n   * Resets all internal track instances of the demuxer.\n   */\n  public resetInitSegment(\n    initSegment: Uint8Array | undefined,\n    audioCodec: string,\n    videoCodec: string,\n    trackDuration: number\n  ) {\n    this.pmtParsed = false;\n    this._pmtId = -1;\n\n    this._avcTrack = TSDemuxer.createTrack('video') as DemuxedAvcTrack;\n    this._audioTrack = TSDemuxer.createTrack(\n      'audio',\n      trackDuration\n    ) as DemuxedAudioTrack;\n    this._id3Track = TSDemuxer.createTrack('id3') as DemuxedMetadataTrack;\n    this._txtTrack = TSDemuxer.createTrack('text') as DemuxedUserdataTrack;\n    this._audioTrack.segmentCodec = 'aac';\n\n    // flush any partial content\n    this.aacOverFlow = null;\n    this.avcSample = null;\n    this.remainderData = null;\n    this.audioCodec = audioCodec;\n    this.videoCodec = videoCodec;\n    this._duration = trackDuration;\n  }\n\n  public resetTimeStamp() {}\n\n  public resetContiguity(): void {\n    const { _audioTrack, _avcTrack, _id3Track } = this;\n    if (_audioTrack) {\n      _audioTrack.pesData = null;\n    }\n    if (_avcTrack) {\n      _avcTrack.pesData = null;\n    }\n    if (_id3Track) {\n      _id3Track.pesData = null;\n    }\n    this.aacOverFlow = null;\n    this.avcSample = null;\n    this.remainderData = null;\n  }\n\n  public demux(\n    data: Uint8Array,\n    timeOffset: number,\n    isSampleAes = false,\n    flush = false\n  ): DemuxerResult {\n    if (!isSampleAes) {\n      this.sampleAes = null;\n    }\n\n    let pes: PES | null;\n\n    const videoTrack = this._avcTrack as DemuxedAvcTrack;\n    const audioTrack = this._audioTrack as DemuxedAudioTrack;\n    const id3Track = this._id3Track as DemuxedMetadataTrack;\n    const textTrack = this._txtTrack as DemuxedUserdataTrack;\n\n    let avcId = videoTrack.pid;\n    let avcData = videoTrack.pesData;\n    let audioId = audioTrack.pid;\n    let id3Id = id3Track.pid;\n    let audioData = audioTrack.pesData;\n    let id3Data = id3Track.pesData;\n    let unknownPID: number | null = null;\n    let pmtParsed = this.pmtParsed;\n    let pmtId = this._pmtId;\n\n    let len = data.length;\n    if (this.remainderData) {\n      data = appendUint8Array(this.remainderData, data);\n      len = data.length;\n      this.remainderData = null;\n    }\n\n    if (len < PACKET_LENGTH && !flush) {\n      this.remainderData = data;\n      return {\n        audioTrack,\n        videoTrack,\n        id3Track,\n        textTrack,\n      };\n    }\n\n    const syncOffset = Math.max(0, TSDemuxer.syncOffset(data));\n    len -= (len - syncOffset) % PACKET_LENGTH;\n    if (len < data.byteLength && !flush) {\n      this.remainderData = new Uint8Array(\n        data.buffer,\n        len,\n        data.buffer.byteLength - len\n      );\n    }\n\n    // loop through TS packets\n    let tsPacketErrors = 0;\n    for (let start = syncOffset; start < len; start += PACKET_LENGTH) {\n      if (data[start] === 0x47) {\n        const stt = !!(data[start + 1] & 0x40);\n        const pid = parsePID(data, start);\n        const atf = (data[start + 3] & 0x30) >> 4;\n\n        // if an adaption field is present, its length is specified by the fifth byte of the TS packet header.\n        let offset: number;\n        if (atf > 1) {\n          offset = start + 5 + data[start + 4];\n          // continue if there is only adaptation field\n          if (offset === start + PACKET_LENGTH) {\n            continue;\n          }\n        } else {\n          offset = start + 4;\n        }\n        switch (pid) {\n          case avcId:\n            if (stt) {\n              if (avcData && (pes = parsePES(avcData))) {\n                this.parseAVCPES(videoTrack, textTrack, pes, false);\n              }\n\n              avcData = { data: [], size: 0 };\n            }\n            if (avcData) {\n              avcData.data.push(data.subarray(offset, start + PACKET_LENGTH));\n              avcData.size += start + PACKET_LENGTH - offset;\n            }\n            break;\n          case audioId:\n            if (stt) {\n              if (audioData && (pes = parsePES(audioData))) {\n                switch (audioTrack.segmentCodec) {\n                  case 'aac':\n                    this.parseAACPES(audioTrack, pes);\n                    break;\n                  case 'mp3':\n                    this.parseMPEGPES(audioTrack, pes);\n                    break;\n                }\n              }\n              audioData = { data: [], size: 0 };\n            }\n            if (audioData) {\n              audioData.data.push(data.subarray(offset, start + PACKET_LENGTH));\n              audioData.size += start + PACKET_LENGTH - offset;\n            }\n            break;\n          case id3Id:\n            if (stt) {\n              if (id3Data && (pes = parsePES(id3Data))) {\n                this.parseID3PES(id3Track, pes);\n              }\n\n              id3Data = { data: [], size: 0 };\n            }\n            if (id3Data) {\n              id3Data.data.push(data.subarray(offset, start + PACKET_LENGTH));\n              id3Data.size += start + PACKET_LENGTH - offset;\n            }\n            break;\n          case 0:\n            if (stt) {\n              offset += data[offset] + 1;\n            }\n\n            pmtId = this._pmtId = parsePAT(data, offset);\n            // logger.log('PMT PID:'  + this._pmtId);\n            break;\n          case pmtId: {\n            if (stt) {\n              offset += data[offset] + 1;\n            }\n\n            const parsedPIDs = parsePMT(\n              data,\n              offset,\n              this.typeSupported,\n              isSampleAes\n            );\n\n            // only update track id if track PID found while parsing PMT\n            // this is to avoid resetting the PID to -1 in case\n            // track PID transiently disappears from the stream\n            // this could happen in case of transient missing audio samples for example\n            // NOTE this is only the PID of the track as found in TS,\n            // but we are not using this for MP4 track IDs.\n            avcId = parsedPIDs.avc;\n            if (avcId > 0) {\n              videoTrack.pid = avcId;\n            }\n\n            audioId = parsedPIDs.audio;\n            if (audioId > 0) {\n              audioTrack.pid = audioId;\n              audioTrack.segmentCodec = parsedPIDs.segmentCodec;\n            }\n            id3Id = parsedPIDs.id3;\n            if (id3Id > 0) {\n              id3Track.pid = id3Id;\n            }\n\n            if (unknownPID !== null && !pmtParsed) {\n              logger.warn(\n                `MPEG-TS PMT found at ${start} after unknown PID '${unknownPID}'. Backtracking to sync byte @${syncOffset} to parse all TS packets.`\n              );\n              unknownPID = null;\n              // we set it to -188, the += 188 in the for loop will reset start to 0\n              start = syncOffset - 188;\n            }\n            pmtParsed = this.pmtParsed = true;\n            break;\n          }\n          case 0x11:\n          case 0x1fff:\n            break;\n          default:\n            unknownPID = pid;\n            break;\n        }\n      } else {\n        tsPacketErrors++;\n      }\n    }\n\n    if (tsPacketErrors > 0) {\n      const error = new Error(\n        `Found ${tsPacketErrors} TS packet/s that do not start with 0x47`\n      );\n      this.observer.emit(Events.ERROR, Events.ERROR, {\n        type: ErrorTypes.MEDIA_ERROR,\n        details: ErrorDetails.FRAG_PARSING_ERROR,\n        fatal: false,\n        error,\n        reason: error.message,\n      });\n    }\n\n    videoTrack.pesData = avcData;\n    audioTrack.pesData = audioData;\n    id3Track.pesData = id3Data;\n\n    const demuxResult: DemuxerResult = {\n      audioTrack,\n      videoTrack,\n      id3Track,\n      textTrack,\n    };\n\n    if (flush) {\n      this.extractRemainingSamples(demuxResult);\n    }\n\n    return demuxResult;\n  }\n\n  public flush(): DemuxerResult | Promise<DemuxerResult> {\n    const { remainderData } = this;\n    this.remainderData = null;\n    let result: DemuxerResult;\n    if (remainderData) {\n      result = this.demux(remainderData, -1, false, true);\n    } else {\n      result = {\n        videoTrack: this._avcTrack as DemuxedAvcTrack,\n        audioTrack: this._audioTrack as DemuxedAudioTrack,\n        id3Track: this._id3Track as DemuxedMetadataTrack,\n        textTrack: this._txtTrack as DemuxedUserdataTrack,\n      };\n    }\n    this.extractRemainingSamples(result);\n    if (this.sampleAes) {\n      return this.decrypt(result, this.sampleAes);\n    }\n    return result;\n  }\n\n  private extractRemainingSamples(demuxResult: DemuxerResult) {\n    const { audioTrack, videoTrack, id3Track, textTrack } = demuxResult;\n    const avcData = videoTrack.pesData;\n    const audioData = audioTrack.pesData;\n    const id3Data = id3Track.pesData;\n    // try to parse last PES packets\n    let pes: PES | null;\n    if (avcData && (pes = parsePES(avcData))) {\n      this.parseAVCPES(\n        videoTrack as DemuxedAvcTrack,\n        textTrack as DemuxedUserdataTrack,\n        pes,\n        true\n      );\n      videoTrack.pesData = null;\n    } else {\n      // either avcData null or PES truncated, keep it for next frag parsing\n      videoTrack.pesData = avcData;\n    }\n\n    if (audioData && (pes = parsePES(audioData))) {\n      switch (audioTrack.segmentCodec) {\n        case 'aac':\n          this.parseAACPES(audioTrack, pes);\n          break;\n        case 'mp3':\n          this.parseMPEGPES(audioTrack, pes);\n          break;\n      }\n      audioTrack.pesData = null;\n    } else {\n      if (audioData?.size) {\n        logger.log(\n          'last AAC PES packet truncated,might overlap between fragments'\n        );\n      }\n\n      // either audioData null or PES truncated, keep it for next frag parsing\n      audioTrack.pesData = audioData;\n    }\n\n    if (id3Data && (pes = parsePES(id3Data))) {\n      this.parseID3PES(id3Track, pes);\n      id3Track.pesData = null;\n    } else {\n      // either id3Data null or PES truncated, keep it for next frag parsing\n      id3Track.pesData = id3Data;\n    }\n  }\n\n  public demuxSampleAes(\n    data: Uint8Array,\n    keyData: KeyData,\n    timeOffset: number\n  ): Promise<DemuxerResult> {\n    const demuxResult = this.demux(\n      data,\n      timeOffset,\n      true,\n      !this.config.progressive\n    );\n    const sampleAes = (this.sampleAes = new SampleAesDecrypter(\n      this.observer,\n      this.config,\n      keyData\n    ));\n    return this.decrypt(demuxResult, sampleAes);\n  }\n\n  private decrypt(\n    demuxResult: DemuxerResult,\n    sampleAes: SampleAesDecrypter\n  ): Promise<DemuxerResult> {\n    return new Promise((resolve) => {\n      const { audioTrack, videoTrack } = demuxResult;\n      if (audioTrack.samples && audioTrack.segmentCodec === 'aac') {\n        sampleAes.decryptAacSamples(audioTrack.samples, 0, () => {\n          if (videoTrack.samples) {\n            sampleAes.decryptAvcSamples(videoTrack.samples, 0, 0, () => {\n              resolve(demuxResult);\n            });\n          } else {\n            resolve(demuxResult);\n          }\n        });\n      } else if (videoTrack.samples) {\n        sampleAes.decryptAvcSamples(videoTrack.samples, 0, 0, () => {\n          resolve(demuxResult);\n        });\n      }\n    });\n  }\n\n  public destroy() {\n    this._duration = 0;\n  }\n\n  private parseAVCPES(\n    track: DemuxedAvcTrack,\n    textTrack: DemuxedUserdataTrack,\n    pes: PES,\n    last: boolean\n  ) {\n    const units = this.parseAVCNALu(track, pes.data);\n    const debug = false;\n    let avcSample = this.avcSample;\n    let push: boolean;\n    let spsfound = false;\n    // free pes.data to save up some memory\n    (pes as any).data = null;\n\n    // if new NAL units found and last sample still there, let's push ...\n    // this helps parsing streams with missing AUD (only do this if AUD never found)\n    if (avcSample && units.length && !track.audFound) {\n      pushAccessUnit(avcSample, track);\n      avcSample = this.avcSample = createAVCSample(false, pes.pts, pes.dts, '');\n    }\n\n    units.forEach((unit) => {\n      switch (unit.type) {\n        // NDR\n        case 1: {\n          let iskey = false;\n          push = true;\n          const data = unit.data;\n          // only check slice type to detect KF in case SPS found in same packet (any keyframe is preceded by SPS ...)\n          if (spsfound && data.length > 4) {\n            // retrieve slice type by parsing beginning of NAL unit (follow H264 spec, slice_header definition) to detect keyframe embedded in NDR\n            const sliceType = new ExpGolomb(data).readSliceType();\n            // 2 : I slice, 4 : SI slice, 7 : I slice, 9: SI slice\n            // SI slice : A slice that is coded using intra prediction only and using quantisation of the prediction samples.\n            // An SI slice can be coded such that its decoded samples can be constructed identically to an SP slice.\n            // I slice: A slice that is not an SI slice that is decoded using intra prediction only.\n            // if (sliceType === 2 || sliceType === 7) {\n            if (\n              sliceType === 2 ||\n              sliceType === 4 ||\n              sliceType === 7 ||\n              sliceType === 9\n            ) {\n              iskey = true;\n            }\n          }\n          if (iskey) {\n            // if we have non-keyframe data already, that cannot belong to the same frame as a keyframe, so force a push\n            if (avcSample?.frame && !avcSample.key) {\n              pushAccessUnit(avcSample, track);\n              avcSample = this.avcSample = null;\n            }\n          }\n          if (!avcSample) {\n            avcSample = this.avcSample = createAVCSample(\n              true,\n              pes.pts,\n              pes.dts,\n              ''\n            );\n          }\n\n          if (debug) {\n            avcSample.debug += 'NDR ';\n          }\n\n          avcSample.frame = true;\n          avcSample.key = iskey;\n          break;\n          // IDR\n        }\n        case 5:\n          push = true;\n          // handle PES not starting with AUD\n          // if we have non-keyframe data already, that cannot belong to the same frame as a keyframe, so force a push\n          if (avcSample?.frame && !avcSample.key) {\n            pushAccessUnit(avcSample, track);\n            avcSample = this.avcSample = null;\n          }\n          if (!avcSample) {\n            avcSample = this.avcSample = createAVCSample(\n              true,\n              pes.pts,\n              pes.dts,\n              ''\n            );\n          }\n\n          if (debug) {\n            avcSample.debug += 'IDR ';\n          }\n\n          avcSample.key = true;\n          avcSample.frame = true;\n          break;\n        // SEI\n        case 6: {\n          push = true;\n          if (debug && avcSample) {\n            avcSample.debug += 'SEI ';\n          }\n          parseSEIMessageFromNALu(\n            unit.data,\n            1,\n            pes.pts as number,\n            textTrack.samples\n          );\n          break;\n          // SPS\n        }\n        case 7:\n          push = true;\n          spsfound = true;\n          if (debug && avcSample) {\n            avcSample.debug += 'SPS ';\n          }\n\n          if (!track.sps) {\n            const sps = unit.data;\n            const expGolombDecoder = new ExpGolomb(sps);\n            const config = expGolombDecoder.readSPS();\n            track.width = config.width;\n            track.height = config.height;\n            track.pixelRatio = config.pixelRatio;\n            track.sps = [sps];\n            track.duration = this._duration;\n            const codecarray = sps.subarray(1, 4);\n            let codecstring = 'avc1.';\n            for (let i = 0; i < 3; i++) {\n              let h = codecarray[i].toString(16);\n              if (h.length < 2) {\n                h = '0' + h;\n              }\n\n              codecstring += h;\n            }\n            track.codec = codecstring;\n          }\n          break;\n        // PPS\n        case 8:\n          push = true;\n          if (debug && avcSample) {\n            avcSample.debug += 'PPS ';\n          }\n\n          if (!track.pps) {\n            track.pps = [unit.data];\n          }\n\n          break;\n        // AUD\n        case 9:\n          push = false;\n          track.audFound = true;\n          if (avcSample) {\n            pushAccessUnit(avcSample, track);\n          }\n\n          avcSample = this.avcSample = createAVCSample(\n            false,\n            pes.pts,\n            pes.dts,\n            debug ? 'AUD ' : ''\n          );\n          break;\n        // Filler Data\n        case 12:\n          push = true;\n          break;\n        default:\n          push = false;\n          if (avcSample) {\n            avcSample.debug += 'unknown NAL ' + unit.type + ' ';\n          }\n\n          break;\n      }\n      if (avcSample && push) {\n        const units = avcSample.units;\n        units.push(unit);\n      }\n    });\n    // if last PES packet, push samples\n    if (last && avcSample) {\n      pushAccessUnit(avcSample, track);\n      this.avcSample = null;\n    }\n  }\n\n  private getLastNalUnit(samples: AvcSample[]) {\n    let avcSample = this.avcSample;\n    let lastUnit;\n    // try to fallback to previous sample if current one is empty\n    if (!avcSample || avcSample.units.length === 0) {\n      avcSample = samples[samples.length - 1];\n    }\n    if (avcSample?.units) {\n      const units = avcSample.units;\n      lastUnit = units[units.length - 1];\n    }\n    return lastUnit;\n  }\n\n  private parseAVCNALu(\n    track: DemuxedAvcTrack,\n    array: Uint8Array\n  ): Array<{\n    data: Uint8Array;\n    type: number;\n    state?: number;\n  }> {\n    const len = array.byteLength;\n    let state = track.naluState || 0;\n    const lastState = state;\n    const units = [] as Array<{\n      data: Uint8Array;\n      type: number;\n      state?: number;\n    }>;\n    let i = 0;\n    let value;\n    let overflow;\n    let unitType;\n    let lastUnitStart = -1;\n    let lastUnitType: number = 0;\n    // logger.log('PES:' + Hex.hexDump(array));\n\n    if (state === -1) {\n      // special use case where we found 3 or 4-byte start codes exactly at the end of previous PES packet\n      lastUnitStart = 0;\n      // NALu type is value read from offset 0\n      lastUnitType = array[0] & 0x1f;\n      state = 0;\n      i = 1;\n    }\n\n    while (i < len) {\n      value = array[i++];\n      // optimization. state 0 and 1 are the predominant case. let's handle them outside of the switch/case\n      if (!state) {\n        state = value ? 0 : 1;\n        continue;\n      }\n      if (state === 1) {\n        state = value ? 0 : 2;\n        continue;\n      }\n      // here we have state either equal to 2 or 3\n      if (!value) {\n        state = 3;\n      } else if (value === 1) {\n        if (lastUnitStart >= 0) {\n          const unit = {\n            data: array.subarray(lastUnitStart, i - state - 1),\n            type: lastUnitType,\n          };\n          // logger.log('pushing NALU, type/size:' + unit.type + '/' + unit.data.byteLength);\n          units.push(unit);\n        } else {\n          // lastUnitStart is undefined => this is the first start code found in this PES packet\n          // first check if start code delimiter is overlapping between 2 PES packets,\n          // ie it started in last packet (lastState not zero)\n          // and ended at the beginning of this PES packet (i <= 4 - lastState)\n          const lastUnit = this.getLastNalUnit(track.samples);\n          if (lastUnit) {\n            if (lastState && i <= 4 - lastState) {\n              // start delimiter overlapping between PES packets\n              // strip start delimiter bytes from the end of last NAL unit\n              // check if lastUnit had a state different from zero\n              if (lastUnit.state) {\n                // strip last bytes\n                lastUnit.data = lastUnit.data.subarray(\n                  0,\n                  lastUnit.data.byteLength - lastState\n                );\n              }\n            }\n            // If NAL units are not starting right at the beginning of the PES packet, push preceding data into previous NAL unit.\n            overflow = i - state - 1;\n            if (overflow > 0) {\n              // logger.log('first NALU found with overflow:' + overflow);\n              const tmp = new Uint8Array(lastUnit.data.byteLength + overflow);\n              tmp.set(lastUnit.data, 0);\n              tmp.set(array.subarray(0, overflow), lastUnit.data.byteLength);\n              lastUnit.data = tmp;\n              lastUnit.state = 0;\n            }\n          }\n        }\n        // check if we can read unit type\n        if (i < len) {\n          unitType = array[i] & 0x1f;\n          // logger.log('find NALU @ offset:' + i + ',type:' + unitType);\n          lastUnitStart = i;\n          lastUnitType = unitType;\n          state = 0;\n        } else {\n          // not enough byte to read unit type. let's read it on next PES parsing\n          state = -1;\n        }\n      } else {\n        state = 0;\n      }\n    }\n    if (lastUnitStart >= 0 && state >= 0) {\n      const unit = {\n        data: array.subarray(lastUnitStart, len),\n        type: lastUnitType,\n        state: state,\n      };\n      units.push(unit);\n      // logger.log('pushing NALU, type/size/state:' + unit.type + '/' + unit.data.byteLength + '/' + state);\n    }\n    // no NALu found\n    if (units.length === 0) {\n      // append pes.data to previous NAL unit\n      const lastUnit = this.getLastNalUnit(track.samples);\n      if (lastUnit) {\n        const tmp = new Uint8Array(lastUnit.data.byteLength + array.byteLength);\n        tmp.set(lastUnit.data, 0);\n        tmp.set(array, lastUnit.data.byteLength);\n        lastUnit.data = tmp;\n      }\n    }\n    track.naluState = state;\n    return units;\n  }\n\n  private parseAACPES(track: DemuxedAudioTrack, pes: PES) {\n    let startOffset = 0;\n    const aacOverFlow = this.aacOverFlow;\n    let data = pes.data;\n    if (aacOverFlow) {\n      this.aacOverFlow = null;\n      const frameMissingBytes = aacOverFlow.missing;\n      const sampleLength = aacOverFlow.sample.unit.byteLength;\n      // logger.log(`AAC: append overflowing ${sampleLength} bytes to beginning of new PES`);\n      if (frameMissingBytes === -1) {\n        const tmp = new Uint8Array(sampleLength + data.byteLength);\n        tmp.set(aacOverFlow.sample.unit, 0);\n        tmp.set(data, sampleLength);\n        data = tmp;\n      } else {\n        const frameOverflowBytes = sampleLength - frameMissingBytes;\n        aacOverFlow.sample.unit.set(\n          data.subarray(0, frameMissingBytes),\n          frameOverflowBytes\n        );\n        track.samples.push(aacOverFlow.sample);\n        startOffset = aacOverFlow.missing;\n      }\n    }\n    // look for ADTS header (0xFFFx)\n    let offset: number;\n    let len: number;\n    for (offset = startOffset, len = data.length; offset < len - 1; offset++) {\n      if (ADTS.isHeader(data, offset)) {\n        break;\n      }\n    }\n    // if ADTS header does not start straight from the beginning of the PES payload, raise an error\n    if (offset !== startOffset) {\n      let reason: string;\n      const recoverable = offset < len - 1;\n      if (recoverable) {\n        reason = `AAC PES did not start with ADTS header,offset:${offset}`;\n      } else {\n        reason = 'No ADTS header found in AAC PES';\n      }\n      const error = new Error(reason);\n      logger.warn(`parsing error: ${reason}`);\n      this.observer.emit(Events.ERROR, Events.ERROR, {\n        type: ErrorTypes.MEDIA_ERROR,\n        details: ErrorDetails.FRAG_PARSING_ERROR,\n        fatal: false,\n        levelRetry: recoverable,\n        error,\n        reason,\n      });\n      if (!recoverable) {\n        return;\n      }\n    }\n\n    ADTS.initTrackConfig(\n      track,\n      this.observer,\n      data,\n      offset,\n      this.audioCodec as string\n    );\n\n    let pts: number;\n    if (pes.pts !== undefined) {\n      pts = pes.pts;\n    } else if (aacOverFlow) {\n      // if last AAC frame is overflowing, we should ensure timestamps are contiguous:\n      // first sample PTS should be equal to last sample PTS + frameDuration\n      const frameDuration = ADTS.getFrameDuration(track.samplerate as number);\n      pts = aacOverFlow.sample.pts + frameDuration;\n    } else {\n      logger.warn('[tsdemuxer]: AAC PES unknown PTS');\n      return;\n    }\n\n    // scan for aac samples\n    let frameIndex = 0;\n    let frame;\n    while (offset < len) {\n      frame = ADTS.appendFrame(track, data, offset, pts, frameIndex);\n      offset += frame.length;\n      if (!frame.missing) {\n        frameIndex++;\n        for (; offset < len - 1; offset++) {\n          if (ADTS.isHeader(data, offset)) {\n            break;\n          }\n        }\n      } else {\n        this.aacOverFlow = frame;\n        break;\n      }\n    }\n  }\n\n  private parseMPEGPES(track: DemuxedAudioTrack, pes: PES) {\n    const data = pes.data;\n    const length = data.length;\n    let frameIndex = 0;\n    let offset = 0;\n    const pts = pes.pts;\n    if (pts === undefined) {\n      logger.warn('[tsdemuxer]: MPEG PES unknown PTS');\n      return;\n    }\n\n    while (offset < length) {\n      if (MpegAudio.isHeader(data, offset)) {\n        const frame = MpegAudio.appendFrame(\n          track,\n          data,\n          offset,\n          pts,\n          frameIndex\n        );\n        if (frame) {\n          offset += frame.length;\n          frameIndex++;\n        } else {\n          // logger.log('Unable to parse Mpeg audio frame');\n          break;\n        }\n      } else {\n        // nothing found, keep looking\n        offset++;\n      }\n    }\n  }\n\n  private parseID3PES(id3Track: DemuxedMetadataTrack, pes: PES) {\n    if (pes.pts === undefined) {\n      logger.warn('[tsdemuxer]: ID3 PES unknown PTS');\n      return;\n    }\n    const id3Sample = Object.assign({}, pes as Required<PES>, {\n      type: this._avcTrack ? MetadataSchema.emsg : MetadataSchema.audioId3,\n      duration: Number.POSITIVE_INFINITY,\n    });\n    id3Track.samples.push(id3Sample);\n  }\n}\n\nfunction createAVCSample(\n  key: boolean,\n  pts: number | undefined,\n  dts: number | undefined,\n  debug: string\n): ParsedAvcSample {\n  return {\n    key,\n    frame: false,\n    pts,\n    dts,\n    units: [],\n    debug,\n    length: 0,\n  };\n}\n\nfunction parsePID(data: Uint8Array, offset: number): number {\n  // pid is a 13-bit field starting at the last bit of TS[1]\n  return ((data[offset + 1] & 0x1f) << 8) + data[offset + 2];\n}\n\nfunction parsePAT(data: Uint8Array, offset: number): number {\n  // skip the PSI header and parse the first PMT entry\n  return ((data[offset + 10] & 0x1f) << 8) | data[offset + 11];\n}\n\nfunction parsePMT(\n  data: Uint8Array,\n  offset: number,\n  typeSupported: TypeSupported,\n  isSampleAes: boolean\n) {\n  const result = { audio: -1, avc: -1, id3: -1, segmentCodec: 'aac' };\n  const sectionLength = ((data[offset + 1] & 0x0f) << 8) | data[offset + 2];\n  const tableEnd = offset + 3 + sectionLength - 4;\n  // to determine where the table is, we have to figure out how\n  // long the program info descriptors are\n  const programInfoLength =\n    ((data[offset + 10] & 0x0f) << 8) | data[offset + 11];\n  // advance the offset to the first entry in the mapping table\n  offset += 12 + programInfoLength;\n  while (offset < tableEnd) {\n    const pid = parsePID(data, offset);\n    switch (data[offset]) {\n      case 0xcf: // SAMPLE-AES AAC\n        if (!isSampleAes) {\n          logger.log(\n            'ADTS AAC with AES-128-CBC frame encryption found in unencrypted stream'\n          );\n          break;\n        }\n      /* falls through */\n      case 0x0f: // ISO/IEC 13818-7 ADTS AAC (MPEG-2 lower bit-rate audio)\n        // logger.log('AAC PID:'  + pid);\n        if (result.audio === -1) {\n          result.audio = pid;\n        }\n\n        break;\n\n      // Packetized metadata (ID3)\n      case 0x15:\n        // logger.log('ID3 PID:'  + pid);\n        if (result.id3 === -1) {\n          result.id3 = pid;\n        }\n\n        break;\n\n      case 0xdb: // SAMPLE-AES AVC\n        if (!isSampleAes) {\n          logger.log(\n            'H.264 with AES-128-CBC slice encryption found in unencrypted stream'\n          );\n          break;\n        }\n      /* falls through */\n      case 0x1b: // ITU-T Rec. H.264 and ISO/IEC 14496-10 (lower bit-rate video)\n        // logger.log('AVC PID:'  + pid);\n        if (result.avc === -1) {\n          result.avc = pid;\n        }\n\n        break;\n\n      // ISO/IEC 11172-3 (MPEG-1 audio)\n      // or ISO/IEC 13818-3 (MPEG-2 halved sample rate audio)\n      case 0x03:\n      case 0x04:\n        // logger.log('MPEG PID:'  + pid);\n        if (typeSupported.mpeg !== true && typeSupported.mp3 !== true) {\n          logger.log('MPEG audio found, not supported in this browser');\n        } else if (result.audio === -1) {\n          result.audio = pid;\n          result.segmentCodec = 'mp3';\n        }\n        break;\n\n      case 0x24:\n        logger.warn('Unsupported HEVC stream type found');\n        break;\n\n      default:\n        // logger.log('unknown stream type:' + data[offset]);\n        break;\n    }\n    // move to the next table entry\n    // skip past the elementary stream descriptors, if present\n    offset += (((data[offset + 3] & 0x0f) << 8) | data[offset + 4]) + 5;\n  }\n  return result;\n}\n\nfunction parsePES(stream: ElementaryStreamData): PES | null {\n  let i = 0;\n  let frag: Uint8Array;\n  let pesLen: number;\n  let pesHdrLen: number;\n  let pesPts: number | undefined;\n  let pesDts: number | undefined;\n  const data = stream.data;\n  // safety check\n  if (!stream || stream.size === 0) {\n    return null;\n  }\n\n  // we might need up to 19 bytes to read PES header\n  // if first chunk of data is less than 19 bytes, let's merge it with following ones until we get 19 bytes\n  // usually only one merge is needed (and this is rare ...)\n  while (data[0].length < 19 && data.length > 1) {\n    const newData = new Uint8Array(data[0].length + data[1].length);\n    newData.set(data[0]);\n    newData.set(data[1], data[0].length);\n    data[0] = newData;\n    data.splice(1, 1);\n  }\n  // retrieve PTS/DTS from first fragment\n  frag = data[0];\n  const pesPrefix = (frag[0] << 16) + (frag[1] << 8) + frag[2];\n  if (pesPrefix === 1) {\n    pesLen = (frag[4] << 8) + frag[5];\n    // if PES parsed length is not zero and greater than total received length, stop parsing. PES might be truncated\n    // minus 6 : PES header size\n    if (pesLen && pesLen > stream.size - 6) {\n      return null;\n    }\n\n    const pesFlags = frag[7];\n    if (pesFlags & 0xc0) {\n      /* PES header described here : http://dvd.sourceforge.net/dvdinfo/pes-hdr.html\n          as PTS / DTS is 33 bit we cannot use bitwise operator in JS,\n          as Bitwise operators treat their operands as a sequence of 32 bits */\n      pesPts =\n        (frag[9] & 0x0e) * 536870912 + // 1 << 29\n        (frag[10] & 0xff) * 4194304 + // 1 << 22\n        (frag[11] & 0xfe) * 16384 + // 1 << 14\n        (frag[12] & 0xff) * 128 + // 1 << 7\n        (frag[13] & 0xfe) / 2;\n\n      if (pesFlags & 0x40) {\n        pesDts =\n          (frag[14] & 0x0e) * 536870912 + // 1 << 29\n          (frag[15] & 0xff) * 4194304 + // 1 << 22\n          (frag[16] & 0xfe) * 16384 + // 1 << 14\n          (frag[17] & 0xff) * 128 + // 1 << 7\n          (frag[18] & 0xfe) / 2;\n\n        if (pesPts - pesDts > 60 * 90000) {\n          logger.warn(\n            `${Math.round(\n              (pesPts - pesDts) / 90000\n            )}s delta between PTS and DTS, align them`\n          );\n          pesPts = pesDts;\n        }\n      } else {\n        pesDts = pesPts;\n      }\n    }\n    pesHdrLen = frag[8];\n    // 9 bytes : 6 bytes for PES header + 3 bytes for PES extension\n    let payloadStartOffset = pesHdrLen + 9;\n    if (stream.size <= payloadStartOffset) {\n      return null;\n    }\n    stream.size -= payloadStartOffset;\n    // reassemble PES packet\n    const pesData = new Uint8Array(stream.size);\n    for (let j = 0, dataLen = data.length; j < dataLen; j++) {\n      frag = data[j];\n      let len = frag.byteLength;\n      if (payloadStartOffset) {\n        if (payloadStartOffset > len) {\n          // trim full frag if PES header bigger than frag\n          payloadStartOffset -= len;\n          continue;\n        } else {\n          // trim partial frag if PES header smaller than frag\n          frag = frag.subarray(payloadStartOffset);\n          len -= payloadStartOffset;\n          payloadStartOffset = 0;\n        }\n      }\n      pesData.set(frag, i);\n      i += len;\n    }\n    if (pesLen) {\n      // payload size : remove PES header + PES extension\n      pesLen -= pesHdrLen + 3;\n    }\n    return { data: pesData, pts: pesPts, dts: pesDts, len: pesLen };\n  }\n  return null;\n}\n\nfunction pushAccessUnit(avcSample: ParsedAvcSample, avcTrack: DemuxedAvcTrack) {\n  if (avcSample.units.length && avcSample.frame) {\n    // if sample does not have PTS/DTS, patch with last sample PTS/DTS\n    if (avcSample.pts === undefined) {\n      const samples = avcTrack.samples;\n      const nbSamples = samples.length;\n      if (nbSamples) {\n        const lastSample = samples[nbSamples - 1];\n        avcSample.pts = lastSample.pts;\n        avcSample.dts = lastSample.dts;\n      } else {\n        // dropping samples, no timestamp found\n        avcTrack.dropped++;\n        return;\n      }\n    }\n    avcTrack.samples.push(avcSample as AvcSample);\n  }\n  if (avcSample.debug.length) {\n    logger.log(avcSample.pts + '/' + avcSample.dts + ':' + avcSample.debug);\n  }\n}\n\nexport default TSDemuxer;\n","const MPEG_TS_CLOCK_FREQ_HZ = 90000;\n\nexport type RationalTimestamp = {\n  baseTime: number; // ticks\n  timescale: number; // ticks per second\n};\n\nexport function toTimescaleFromBase(\n  baseTime: number,\n  destScale: number,\n  srcBase: number = 1,\n  round: boolean = false\n): number {\n  const result = baseTime * destScale * srcBase; // equivalent to `(value * scale) / (1 / base)`\n  return round ? Math.round(result) : result;\n}\n\nexport function toTimescaleFromScale(\n  baseTime: number,\n  destScale: number,\n  srcScale: number = 1,\n  round: boolean = false\n): number {\n  return toTimescaleFromBase(baseTime, destScale, 1 / srcScale, round);\n}\n\nexport function toMsFromMpegTsClock(\n  baseTime: number,\n  round: boolean = false\n): number {\n  return toTimescaleFromBase(baseTime, 1000, 1 / MPEG_TS_CLOCK_FREQ_HZ, round);\n}\n\nexport function toMpegTsClockFromTimescale(\n  baseTime: number,\n  srcScale: number = 1\n): number {\n  return toTimescaleFromBase(baseTime, MPEG_TS_CLOCK_FREQ_HZ, 1 / srcScale);\n}\n","import AAC from './aac-helper';\nimport MP4 from './mp4-generator';\nimport type { HlsEventEmitter } from '../events';\nimport { Events } from '../events';\nimport { ErrorTypes, ErrorDetails } from '../errors';\nimport { logger } from '../utils/logger';\nimport {\n  InitSegmentData,\n  Remuxer,\n  RemuxerResult,\n  RemuxedMetadata,\n  RemuxedTrack,\n  RemuxedUserdata,\n} from '../types/remuxer';\nimport { PlaylistLevelType } from '../types/loader';\nimport {\n  RationalTimestamp,\n  toMsFromMpegTsClock,\n} from '../utils/timescale-conversion';\nimport type {\n  AudioSample,\n  AvcSample,\n  DemuxedAudioTrack,\n  DemuxedAvcTrack,\n  DemuxedMetadataTrack,\n  DemuxedUserdataTrack,\n} from '../types/demuxer';\nimport type { TrackSet } from '../types/track';\nimport type { SourceBufferName } from '../types/buffer';\nimport type { Fragment } from '../loader/fragment';\nimport type { HlsConfig } from '../config';\n\nconst MAX_SILENT_FRAME_DURATION = 10 * 1000; // 10 seconds\nconst AAC_SAMPLES_PER_FRAME = 1024;\nconst MPEG_AUDIO_SAMPLE_PER_FRAME = 1152;\n\nlet chromeVersion: number | null = null;\nlet safariWebkitVersion: number | null = null;\n\nexport default class MP4Remuxer implements Remuxer {\n  private observer: HlsEventEmitter;\n  private config: HlsConfig;\n  private typeSupported: any;\n  private ISGenerated: boolean = false;\n  private _initPTS: RationalTimestamp | null = null;\n  private _initDTS: RationalTimestamp | null = null;\n  private nextAvcDts: number | null = null;\n  private nextAudioPts: number | null = null;\n  private videoSampleDuration: number | null = null;\n  private isAudioContiguous: boolean = false;\n  private isVideoContiguous: boolean = false;\n\n  constructor(\n    observer: HlsEventEmitter,\n    config: HlsConfig,\n    typeSupported,\n    vendor = ''\n  ) {\n    this.observer = observer;\n    this.config = config;\n    this.typeSupported = typeSupported;\n    this.ISGenerated = false;\n\n    if (chromeVersion === null) {\n      const userAgent = navigator.userAgent || '';\n      const result = userAgent.match(/Chrome\\/(\\d+)/i);\n      chromeVersion = result ? parseInt(result[1]) : 0;\n    }\n    if (safariWebkitVersion === null) {\n      const result = navigator.userAgent.match(/Safari\\/(\\d+)/i);\n      safariWebkitVersion = result ? parseInt(result[1]) : 0;\n    }\n  }\n\n  destroy() {}\n\n  resetTimeStamp(defaultTimeStamp: RationalTimestamp | null) {\n    logger.log('[mp4-remuxer]: initPTS & initDTS reset');\n    this._initPTS = this._initDTS = defaultTimeStamp;\n  }\n\n  resetNextTimestamp() {\n    logger.log('[mp4-remuxer]: reset next timestamp');\n    this.isVideoContiguous = false;\n    this.isAudioContiguous = false;\n  }\n\n  resetInitSegment() {\n    logger.log('[mp4-remuxer]: ISGenerated flag reset');\n    this.ISGenerated = false;\n  }\n\n  getVideoStartPts(videoSamples) {\n    let rolloverDetected = false;\n    const startPTS = videoSamples.reduce((minPTS, sample) => {\n      const delta = sample.pts - minPTS;\n      if (delta < -4294967296) {\n        // 2^32, see PTSNormalize for reasoning, but we're hitting a rollover here, and we don't want that to impact the timeOffset calculation\n        rolloverDetected = true;\n        return normalizePts(minPTS, sample.pts);\n      } else if (delta > 0) {\n        return minPTS;\n      } else {\n        return sample.pts;\n      }\n    }, videoSamples[0].pts);\n    if (rolloverDetected) {\n      logger.debug('PTS rollover detected');\n    }\n    return startPTS;\n  }\n\n  remux(\n    audioTrack: DemuxedAudioTrack,\n    videoTrack: DemuxedAvcTrack,\n    id3Track: DemuxedMetadataTrack,\n    textTrack: DemuxedUserdataTrack,\n    timeOffset: number,\n    accurateTimeOffset: boolean,\n    flush: boolean,\n    playlistType: PlaylistLevelType\n  ): RemuxerResult {\n    let video: RemuxedTrack | undefined;\n    let audio: RemuxedTrack | undefined;\n    let initSegment: InitSegmentData | undefined;\n    let text: RemuxedUserdata | undefined;\n    let id3: RemuxedMetadata | undefined;\n    let independent: boolean | undefined;\n    let audioTimeOffset = timeOffset;\n    let videoTimeOffset = timeOffset;\n\n    // If we're remuxing audio and video progressively, wait until we've received enough samples for each track before proceeding.\n    // This is done to synchronize the audio and video streams. We know if the current segment will have samples if the \"pid\"\n    // parameter is greater than -1. The pid is set when the PMT is parsed, which contains the tracks list.\n    // However, if the initSegment has already been generated, or we've reached the end of a segment (flush),\n    // then we can remux one track without waiting for the other.\n    const hasAudio = audioTrack.pid > -1;\n    const hasVideo = videoTrack.pid > -1;\n    const length = videoTrack.samples.length;\n    const enoughAudioSamples = audioTrack.samples.length > 0;\n    const enoughVideoSamples = (flush && length > 0) || length > 1;\n    const canRemuxAvc =\n      ((!hasAudio || enoughAudioSamples) &&\n        (!hasVideo || enoughVideoSamples)) ||\n      this.ISGenerated ||\n      flush;\n\n    if (canRemuxAvc) {\n      if (!this.ISGenerated) {\n        initSegment = this.generateIS(\n          audioTrack,\n          videoTrack,\n          timeOffset,\n          accurateTimeOffset\n        );\n      }\n\n      const isVideoContiguous = this.isVideoContiguous;\n      let firstKeyFrameIndex = -1;\n      let firstKeyFramePTS;\n\n      if (enoughVideoSamples) {\n        firstKeyFrameIndex = findKeyframeIndex(videoTrack.samples);\n        if (!isVideoContiguous && this.config.forceKeyFrameOnDiscontinuity) {\n          independent = true;\n          if (firstKeyFrameIndex > 0) {\n            logger.warn(\n              `[mp4-remuxer]: Dropped ${firstKeyFrameIndex} out of ${length} video samples due to a missing keyframe`\n            );\n            const startPTS = this.getVideoStartPts(videoTrack.samples);\n            videoTrack.samples = videoTrack.samples.slice(firstKeyFrameIndex);\n            videoTrack.dropped += firstKeyFrameIndex;\n            videoTimeOffset +=\n              (videoTrack.samples[0].pts - startPTS) /\n              videoTrack.inputTimeScale;\n            firstKeyFramePTS = videoTimeOffset;\n          } else if (firstKeyFrameIndex === -1) {\n            logger.warn(\n              `[mp4-remuxer]: No keyframe found out of ${length} video samples`\n            );\n            independent = false;\n          }\n        }\n      }\n\n      if (this.ISGenerated) {\n        if (enoughAudioSamples && enoughVideoSamples) {\n          // timeOffset is expected to be the offset of the first timestamp of this fragment (first DTS)\n          // if first audio DTS is not aligned with first video DTS then we need to take that into account\n          // when providing timeOffset to remuxAudio / remuxVideo. if we don't do that, there might be a permanent / small\n          // drift between audio and video streams\n          const startPTS = this.getVideoStartPts(videoTrack.samples);\n          const tsDelta =\n            normalizePts(audioTrack.samples[0].pts, startPTS) - startPTS;\n          const audiovideoTimestampDelta = tsDelta / videoTrack.inputTimeScale;\n          audioTimeOffset += Math.max(0, audiovideoTimestampDelta);\n          videoTimeOffset += Math.max(0, -audiovideoTimestampDelta);\n        }\n\n        // Purposefully remuxing audio before video, so that remuxVideo can use nextAudioPts, which is calculated in remuxAudio.\n        if (enoughAudioSamples) {\n          // if initSegment was generated without audio samples, regenerate it again\n          if (!audioTrack.samplerate) {\n            logger.warn(\n              '[mp4-remuxer]: regenerate InitSegment as audio detected'\n            );\n            initSegment = this.generateIS(\n              audioTrack,\n              videoTrack,\n              timeOffset,\n              accurateTimeOffset\n            );\n          }\n          audio = this.remuxAudio(\n            audioTrack,\n            audioTimeOffset,\n            this.isAudioContiguous,\n            accurateTimeOffset,\n            hasVideo ||\n              enoughVideoSamples ||\n              playlistType === PlaylistLevelType.AUDIO\n              ? videoTimeOffset\n              : undefined\n          );\n          if (enoughVideoSamples) {\n            const audioTrackLength = audio ? audio.endPTS - audio.startPTS : 0;\n            // if initSegment was generated without video samples, regenerate it again\n            if (!videoTrack.inputTimeScale) {\n              logger.warn(\n                '[mp4-remuxer]: regenerate InitSegment as video detected'\n              );\n              initSegment = this.generateIS(\n                audioTrack,\n                videoTrack,\n                timeOffset,\n                accurateTimeOffset\n              );\n            }\n            video = this.remuxVideo(\n              videoTrack,\n              videoTimeOffset,\n              isVideoContiguous,\n              audioTrackLength\n            );\n          }\n        } else if (enoughVideoSamples) {\n          video = this.remuxVideo(\n            videoTrack,\n            videoTimeOffset,\n            isVideoContiguous,\n            0\n          );\n        }\n        if (video) {\n          video.firstKeyFrame = firstKeyFrameIndex;\n          video.independent = firstKeyFrameIndex !== -1;\n          video.firstKeyFramePTS = firstKeyFramePTS;\n        }\n      }\n    }\n\n    // Allow ID3 and text to remux, even if more audio/video samples are required\n    if (this.ISGenerated && this._initPTS && this._initDTS) {\n      if (id3Track.samples.length) {\n        id3 = flushTextTrackMetadataCueSamples(\n          id3Track,\n          timeOffset,\n          this._initPTS,\n          this._initDTS\n        );\n      }\n\n      if (textTrack.samples.length) {\n        text = flushTextTrackUserdataCueSamples(\n          textTrack,\n          timeOffset,\n          this._initPTS\n        );\n      }\n    }\n\n    return {\n      audio,\n      video,\n      initSegment,\n      independent,\n      text,\n      id3,\n    };\n  }\n\n  generateIS(\n    audioTrack: DemuxedAudioTrack,\n    videoTrack: DemuxedAvcTrack,\n    timeOffset: number,\n    accurateTimeOffset: boolean\n  ): InitSegmentData | undefined {\n    const audioSamples = audioTrack.samples;\n    const videoSamples = videoTrack.samples;\n    const typeSupported = this.typeSupported;\n    const tracks: TrackSet = {};\n    const _initPTS = this._initPTS;\n    let computePTSDTS = !_initPTS || accurateTimeOffset;\n    let container = 'audio/mp4';\n    let initPTS: number | undefined;\n    let initDTS: number | undefined;\n    let timescale: number | undefined;\n\n    if (computePTSDTS) {\n      initPTS = initDTS = Infinity;\n    }\n\n    if (audioTrack.config && audioSamples.length) {\n      // let's use audio sampling rate as MP4 time scale.\n      // rationale is that there is a integer nb of audio frames per audio sample (1024 for AAC)\n      // using audio sampling rate here helps having an integer MP4 frame duration\n      // this avoids potential rounding issue and AV sync issue\n      audioTrack.timescale = audioTrack.samplerate;\n      switch (audioTrack.segmentCodec) {\n        case 'mp3':\n          if (typeSupported.mpeg) {\n            // Chrome and Safari\n            container = 'audio/mpeg';\n            audioTrack.codec = '';\n          } else if (typeSupported.mp3) {\n            // Firefox\n            audioTrack.codec = 'mp3';\n          }\n          break;\n      }\n      tracks.audio = {\n        id: 'audio',\n        container: container,\n        codec: audioTrack.codec,\n        initSegment:\n          audioTrack.segmentCodec === 'mp3' && typeSupported.mpeg\n            ? new Uint8Array(0)\n            : MP4.initSegment([audioTrack]),\n        metadata: {\n          channelCount: audioTrack.channelCount,\n        },\n      };\n      if (computePTSDTS) {\n        timescale = audioTrack.inputTimeScale;\n        if (!_initPTS || timescale !== _initPTS.timescale) {\n          // remember first PTS of this demuxing context. for audio, PTS = DTS\n          initPTS = initDTS =\n            audioSamples[0].pts - Math.round(timescale * timeOffset);\n        } else {\n          computePTSDTS = false;\n        }\n      }\n    }\n\n    if (videoTrack.sps && videoTrack.pps && videoSamples.length) {\n      // let's use input time scale as MP4 video timescale\n      // we use input time scale straight away to avoid rounding issues on frame duration / cts computation\n      videoTrack.timescale = videoTrack.inputTimeScale;\n      tracks.video = {\n        id: 'main',\n        container: 'video/mp4',\n        codec: videoTrack.codec,\n        initSegment: MP4.initSegment([videoTrack]),\n        metadata: {\n          width: videoTrack.width,\n          height: videoTrack.height,\n        },\n      };\n      if (computePTSDTS) {\n        timescale = videoTrack.inputTimeScale;\n        if (!_initPTS || timescale !== _initPTS.timescale) {\n          const startPTS = this.getVideoStartPts(videoSamples);\n          const startOffset = Math.round(timescale * timeOffset);\n          initDTS = Math.min(\n            initDTS as number,\n            normalizePts(videoSamples[0].dts, startPTS) - startOffset\n          );\n          initPTS = Math.min(initPTS as number, startPTS - startOffset);\n        } else {\n          computePTSDTS = false;\n        }\n      }\n    }\n\n    if (Object.keys(tracks).length) {\n      this.ISGenerated = true;\n      if (computePTSDTS) {\n        this._initPTS = {\n          baseTime: initPTS as number,\n          timescale: timescale as number,\n        };\n        this._initDTS = {\n          baseTime: initDTS as number,\n          timescale: timescale as number,\n        };\n      } else {\n        initPTS = timescale = undefined;\n      }\n\n      return {\n        tracks,\n        initPTS,\n        timescale,\n      };\n    }\n  }\n\n  remuxVideo(\n    track: DemuxedAvcTrack,\n    timeOffset: number,\n    contiguous: boolean,\n    audioTrackLength: number\n  ): RemuxedTrack | undefined {\n    const timeScale: number = track.inputTimeScale;\n    const inputSamples: Array<AvcSample> = track.samples;\n    const outputSamples: Array<Mp4Sample> = [];\n    const nbSamples = inputSamples.length;\n    const initPTS = this._initPTS as RationalTimestamp;\n    let nextAvcDts = this.nextAvcDts;\n    let offset = 8;\n    let mp4SampleDuration = this.videoSampleDuration;\n    let firstDTS;\n    let lastDTS;\n    let minPTS: number = Number.POSITIVE_INFINITY;\n    let maxPTS: number = Number.NEGATIVE_INFINITY;\n    let sortSamples = false;\n\n    // if parsed fragment is contiguous with last one, let's use last DTS value as reference\n    if (!contiguous || nextAvcDts === null) {\n      const pts = timeOffset * timeScale;\n      const cts =\n        inputSamples[0].pts -\n        normalizePts(inputSamples[0].dts, inputSamples[0].pts);\n      // if not contiguous, let's use target timeOffset\n      nextAvcDts = pts - cts;\n    }\n\n    // PTS is coded on 33bits, and can loop from -2^32 to 2^32\n    // PTSNormalize will make PTS/DTS value monotonic, we use last known DTS value as reference value\n    const initTime = (initPTS.baseTime * timeScale) / initPTS.timescale;\n    for (let i = 0; i < nbSamples; i++) {\n      const sample = inputSamples[i];\n      sample.pts = normalizePts(sample.pts - initTime, nextAvcDts);\n      sample.dts = normalizePts(sample.dts - initTime, nextAvcDts);\n      if (sample.dts < inputSamples[i > 0 ? i - 1 : i].dts) {\n        sortSamples = true;\n      }\n    }\n\n    // sort video samples by DTS then PTS then demux id order\n    if (sortSamples) {\n      inputSamples.sort(function (a, b) {\n        const deltadts = a.dts - b.dts;\n        const deltapts = a.pts - b.pts;\n        return deltadts || deltapts;\n      });\n    }\n\n    // Get first/last DTS\n    firstDTS = inputSamples[0].dts;\n    lastDTS = inputSamples[inputSamples.length - 1].dts;\n\n    // Sample duration (as expected by trun MP4 boxes), should be the delta between sample DTS\n    // set this constant duration as being the avg delta between consecutive DTS.\n    const inputDuration = lastDTS - firstDTS;\n    const averageSampleDuration = inputDuration\n      ? Math.round(inputDuration / (nbSamples - 1))\n      : mp4SampleDuration || track.inputTimeScale / 30;\n\n    // if fragment are contiguous, detect hole/overlapping between fragments\n    if (contiguous) {\n      // check timestamp continuity across consecutive fragments (this is to remove inter-fragment gap/hole)\n      const delta = firstDTS - nextAvcDts;\n      const foundHole = delta > averageSampleDuration;\n      const foundOverlap = delta < -1;\n      if (foundHole || foundOverlap) {\n        if (foundHole) {\n          logger.warn(\n            `AVC: ${toMsFromMpegTsClock(\n              delta,\n              true\n            )} ms (${delta}dts) hole between fragments detected, filling it`\n          );\n        } else {\n          logger.warn(\n            `AVC: ${toMsFromMpegTsClock(\n              -delta,\n              true\n            )} ms (${delta}dts) overlapping between fragments detected`\n          );\n        }\n        if (!foundOverlap || nextAvcDts >= inputSamples[0].pts) {\n          firstDTS = nextAvcDts;\n          const firstPTS = inputSamples[0].pts - delta;\n          inputSamples[0].dts = firstDTS;\n          inputSamples[0].pts = firstPTS;\n          logger.log(\n            `Video: First PTS/DTS adjusted: ${toMsFromMpegTsClock(\n              firstPTS,\n              true\n            )}/${toMsFromMpegTsClock(\n              firstDTS,\n              true\n            )}, delta: ${toMsFromMpegTsClock(delta, true)} ms`\n          );\n        }\n      }\n    }\n\n    firstDTS = Math.max(0, firstDTS);\n\n    let nbNalu = 0;\n    let naluLen = 0;\n    for (let i = 0; i < nbSamples; i++) {\n      // compute total/avc sample length and nb of NAL units\n      const sample = inputSamples[i];\n      const units = sample.units;\n      const nbUnits = units.length;\n      let sampleLen = 0;\n      for (let j = 0; j < nbUnits; j++) {\n        sampleLen += units[j].data.length;\n      }\n\n      naluLen += sampleLen;\n      nbNalu += nbUnits;\n      sample.length = sampleLen;\n\n      // ensure sample monotonic DTS\n      sample.dts = Math.max(sample.dts, firstDTS);\n\n      minPTS = Math.min(sample.pts, minPTS);\n      maxPTS = Math.max(sample.pts, maxPTS);\n    }\n    lastDTS = inputSamples[nbSamples - 1].dts;\n\n    /* concatenate the video data and construct the mdat in place\n      (need 8 more bytes to fill length and mpdat type) */\n    const mdatSize = naluLen + 4 * nbNalu + 8;\n    let mdat;\n    try {\n      mdat = new Uint8Array(mdatSize);\n    } catch (err) {\n      this.observer.emit(Events.ERROR, Events.ERROR, {\n        type: ErrorTypes.MUX_ERROR,\n        details: ErrorDetails.REMUX_ALLOC_ERROR,\n        fatal: false,\n        error: err,\n        bytes: mdatSize,\n        reason: `fail allocating video mdat ${mdatSize}`,\n      });\n      return;\n    }\n    const view = new DataView(mdat.buffer);\n    view.setUint32(0, mdatSize);\n    mdat.set(MP4.types.mdat, 4);\n\n    let stretchedLastFrame = false;\n    let minDtsDelta = Number.POSITIVE_INFINITY;\n    let minPtsDelta = Number.POSITIVE_INFINITY;\n    let maxDtsDelta = Number.NEGATIVE_INFINITY;\n    let maxPtsDelta = Number.NEGATIVE_INFINITY;\n    for (let i = 0; i < nbSamples; i++) {\n      const avcSample = inputSamples[i];\n      const avcSampleUnits = avcSample.units;\n      let mp4SampleLength = 0;\n      // convert NALU bitstream to MP4 format (prepend NALU with size field)\n      for (let j = 0, nbUnits = avcSampleUnits.length; j < nbUnits; j++) {\n        const unit = avcSampleUnits[j];\n        const unitData = unit.data;\n        const unitDataLen = unit.data.byteLength;\n        view.setUint32(offset, unitDataLen);\n        offset += 4;\n        mdat.set(unitData, offset);\n        offset += unitDataLen;\n        mp4SampleLength += 4 + unitDataLen;\n      }\n\n      // expected sample duration is the Decoding Timestamp diff of consecutive samples\n      let ptsDelta;\n      if (i < nbSamples - 1) {\n        mp4SampleDuration = inputSamples[i + 1].dts - avcSample.dts;\n        ptsDelta = inputSamples[i + 1].pts - avcSample.pts;\n      } else {\n        const config = this.config;\n        const lastFrameDuration =\n          i > 0\n            ? avcSample.dts - inputSamples[i - 1].dts\n            : averageSampleDuration;\n        ptsDelta =\n          i > 0\n            ? avcSample.pts - inputSamples[i - 1].pts\n            : averageSampleDuration;\n        if (config.stretchShortVideoTrack && this.nextAudioPts !== null) {\n          // In some cases, a segment's audio track duration may exceed the video track duration.\n          // Since we've already remuxed audio, and we know how long the audio track is, we look to\n          // see if the delta to the next segment is longer than maxBufferHole.\n          // If so, playback would potentially get stuck, so we artificially inflate\n          // the duration of the last frame to minimize any potential gap between segments.\n          const gapTolerance = Math.floor(config.maxBufferHole * timeScale);\n          const deltaToFrameEnd =\n            (audioTrackLength\n              ? minPTS + audioTrackLength * timeScale\n              : this.nextAudioPts) - avcSample.pts;\n          if (deltaToFrameEnd > gapTolerance) {\n            // We subtract lastFrameDuration from deltaToFrameEnd to try to prevent any video\n            // frame overlap. maxBufferHole should be >> lastFrameDuration anyway.\n            mp4SampleDuration = deltaToFrameEnd - lastFrameDuration;\n            if (mp4SampleDuration < 0) {\n              mp4SampleDuration = lastFrameDuration;\n            } else {\n              stretchedLastFrame = true;\n            }\n            logger.log(\n              `[mp4-remuxer]: It is approximately ${\n                deltaToFrameEnd / 90\n              } ms to the next segment; using duration ${\n                mp4SampleDuration / 90\n              } ms for the last video frame.`\n            );\n          } else {\n            mp4SampleDuration = lastFrameDuration;\n          }\n        } else {\n          mp4SampleDuration = lastFrameDuration;\n        }\n      }\n      const compositionTimeOffset = Math.round(avcSample.pts - avcSample.dts);\n      minDtsDelta = Math.min(minDtsDelta, mp4SampleDuration);\n      maxDtsDelta = Math.max(maxDtsDelta, mp4SampleDuration);\n      minPtsDelta = Math.min(minPtsDelta, ptsDelta);\n      maxPtsDelta = Math.max(maxPtsDelta, ptsDelta);\n\n      outputSamples.push(\n        new Mp4Sample(\n          avcSample.key,\n          mp4SampleDuration,\n          mp4SampleLength,\n          compositionTimeOffset\n        )\n      );\n    }\n\n    if (outputSamples.length) {\n      if (chromeVersion) {\n        if (chromeVersion < 70) {\n          // Chrome workaround, mark first sample as being a Random Access Point (keyframe) to avoid sourcebuffer append issue\n          // https://code.google.com/p/chromium/issues/detail?id=229412\n          const flags = outputSamples[0].flags;\n          flags.dependsOn = 2;\n          flags.isNonSync = 0;\n        }\n      } else if (safariWebkitVersion) {\n        // Fix for \"CNN special report, with CC\" in test-streams (Safari browser only)\n        // Ignore DTS when frame durations are irregular. Safari MSE does not handle this leading to gaps.\n        if (\n          maxPtsDelta - minPtsDelta < maxDtsDelta - minDtsDelta &&\n          averageSampleDuration / maxDtsDelta < 0.025 &&\n          outputSamples[0].cts === 0\n        ) {\n          logger.warn(\n            'Found irregular gaps in sample duration. Using PTS instead of DTS to determine MP4 sample duration.'\n          );\n          let dts = firstDTS;\n          for (let i = 0, len = outputSamples.length; i < len; i++) {\n            const nextDts = dts + outputSamples[i].duration;\n            const pts = dts + outputSamples[i].cts;\n            if (i < len - 1) {\n              const nextPts = nextDts + outputSamples[i + 1].cts;\n              outputSamples[i].duration = nextPts - pts;\n            } else {\n              outputSamples[i].duration = i\n                ? outputSamples[i - 1].duration\n                : averageSampleDuration;\n            }\n            outputSamples[i].cts = 0;\n            dts = nextDts;\n          }\n        }\n      }\n    }\n    // next AVC sample DTS should be equal to last sample DTS + last sample duration (in PES timescale)\n    mp4SampleDuration =\n      stretchedLastFrame || !mp4SampleDuration\n        ? averageSampleDuration\n        : mp4SampleDuration;\n    this.nextAvcDts = nextAvcDts = lastDTS + mp4SampleDuration;\n    this.videoSampleDuration = mp4SampleDuration;\n    this.isVideoContiguous = true;\n    const moof = MP4.moof(\n      track.sequenceNumber++,\n      firstDTS,\n      Object.assign({}, track, {\n        samples: outputSamples,\n      })\n    );\n    const type: SourceBufferName = 'video';\n    const data = {\n      data1: moof,\n      data2: mdat,\n      startPTS: minPTS / timeScale,\n      endPTS: (maxPTS + mp4SampleDuration) / timeScale,\n      startDTS: firstDTS / timeScale,\n      endDTS: (nextAvcDts as number) / timeScale,\n      type,\n      hasAudio: false,\n      hasVideo: true,\n      nb: outputSamples.length,\n      dropped: track.dropped,\n    };\n    track.samples = [];\n    track.dropped = 0;\n    return data;\n  }\n\n  remuxAudio(\n    track: DemuxedAudioTrack,\n    timeOffset: number,\n    contiguous: boolean,\n    accurateTimeOffset: boolean,\n    videoTimeOffset?: number\n  ): RemuxedTrack | undefined {\n    const inputTimeScale: number = track.inputTimeScale;\n    const mp4timeScale: number = track.samplerate\n      ? track.samplerate\n      : inputTimeScale;\n    const scaleFactor: number = inputTimeScale / mp4timeScale;\n    const mp4SampleDuration: number =\n      track.segmentCodec === 'aac'\n        ? AAC_SAMPLES_PER_FRAME\n        : MPEG_AUDIO_SAMPLE_PER_FRAME;\n    const inputSampleDuration: number = mp4SampleDuration * scaleFactor;\n    const initPTS = this._initPTS as RationalTimestamp;\n    const rawMPEG: boolean =\n      track.segmentCodec === 'mp3' && this.typeSupported.mpeg;\n    const outputSamples: Array<Mp4Sample> = [];\n    const alignedWithVideo = videoTimeOffset !== undefined;\n\n    let inputSamples: Array<AudioSample> = track.samples;\n    let offset: number = rawMPEG ? 0 : 8;\n    let nextAudioPts: number = this.nextAudioPts || -1;\n\n    // window.audioSamples ? window.audioSamples.push(inputSamples.map(s => s.pts)) : (window.audioSamples = [inputSamples.map(s => s.pts)]);\n\n    // for audio samples, also consider consecutive fragments as being contiguous (even if a level switch occurs),\n    // for sake of clarity:\n    // consecutive fragments are frags with\n    //  - less than 100ms gaps between new time offset (if accurate) and next expected PTS OR\n    //  - less than 20 audio frames distance\n    // contiguous fragments are consecutive fragments from same quality level (same level, new SN = old SN + 1)\n    // this helps ensuring audio continuity\n    // and this also avoids audio glitches/cut when switching quality, or reporting wrong duration on first audio frame\n    const timeOffsetMpegTS = timeOffset * inputTimeScale;\n    const initTime = (initPTS.baseTime * inputTimeScale) / initPTS.timescale;\n    this.isAudioContiguous = contiguous =\n      contiguous ||\n      ((inputSamples.length &&\n        nextAudioPts > 0 &&\n        ((accurateTimeOffset &&\n          Math.abs(timeOffsetMpegTS - nextAudioPts) < 9000) ||\n          Math.abs(\n            normalizePts(inputSamples[0].pts - initTime, timeOffsetMpegTS) -\n              nextAudioPts\n          ) <\n            20 * inputSampleDuration)) as boolean);\n\n    // compute normalized PTS\n    inputSamples.forEach(function (sample) {\n      sample.pts = normalizePts(sample.pts - initTime, timeOffsetMpegTS);\n    });\n\n    if (!contiguous || nextAudioPts < 0) {\n      // filter out sample with negative PTS that are not playable anyway\n      // if we don't remove these negative samples, they will shift all audio samples forward.\n      // leading to audio overlap between current / next fragment\n      inputSamples = inputSamples.filter((sample) => sample.pts >= 0);\n\n      // in case all samples have negative PTS, and have been filtered out, return now\n      if (!inputSamples.length) {\n        return;\n      }\n\n      if (videoTimeOffset === 0) {\n        // Set the start to 0 to match video so that start gaps larger than inputSampleDuration are filled with silence\n        nextAudioPts = 0;\n      } else if (accurateTimeOffset && !alignedWithVideo) {\n        // When not seeking, not live, and LevelDetails.PTSKnown, use fragment start as predicted next audio PTS\n        nextAudioPts = Math.max(0, timeOffsetMpegTS);\n      } else {\n        // if frags are not contiguous and if we cant trust time offset, let's use first sample PTS as next audio PTS\n        nextAudioPts = inputSamples[0].pts;\n      }\n    }\n\n    // If the audio track is missing samples, the frames seem to get \"left-shifted\" within the\n    // resulting mp4 segment, causing sync issues and leaving gaps at the end of the audio segment.\n    // In an effort to prevent this from happening, we inject frames here where there are gaps.\n    // When possible, we inject a silent frame; when that's not possible, we duplicate the last\n    // frame.\n\n    if (track.segmentCodec === 'aac') {\n      const maxAudioFramesDrift = this.config.maxAudioFramesDrift;\n      for (let i = 0, nextPts = nextAudioPts; i < inputSamples.length; i++) {\n        // First, let's see how far off this frame is from where we expect it to be\n        const sample = inputSamples[i];\n        const pts = sample.pts;\n        const delta = pts - nextPts;\n        const duration = Math.abs((1000 * delta) / inputTimeScale);\n\n        // When remuxing with video, if we're overlapping by more than a duration, drop this sample to stay in sync\n        if (\n          delta <= -maxAudioFramesDrift * inputSampleDuration &&\n          alignedWithVideo\n        ) {\n          if (i === 0) {\n            logger.warn(\n              `Audio frame @ ${(pts / inputTimeScale).toFixed(\n                3\n              )}s overlaps nextAudioPts by ${Math.round(\n                (1000 * delta) / inputTimeScale\n              )} ms.`\n            );\n            this.nextAudioPts = nextAudioPts = nextPts = pts;\n          }\n        } // eslint-disable-line brace-style\n\n        // Insert missing frames if:\n        // 1: We're more than maxAudioFramesDrift frame away\n        // 2: Not more than MAX_SILENT_FRAME_DURATION away\n        // 3: currentTime (aka nextPtsNorm) is not 0\n        // 4: remuxing with video (videoTimeOffset !== undefined)\n        else if (\n          delta >= maxAudioFramesDrift * inputSampleDuration &&\n          duration < MAX_SILENT_FRAME_DURATION &&\n          alignedWithVideo\n        ) {\n          let missing = Math.round(delta / inputSampleDuration);\n          // Adjust nextPts so that silent samples are aligned with media pts. This will prevent media samples from\n          // later being shifted if nextPts is based on timeOffset and delta is not a multiple of inputSampleDuration.\n          nextPts = pts - missing * inputSampleDuration;\n          if (nextPts < 0) {\n            missing--;\n            nextPts += inputSampleDuration;\n          }\n          if (i === 0) {\n            this.nextAudioPts = nextAudioPts = nextPts;\n          }\n          logger.warn(\n            `[mp4-remuxer]: Injecting ${missing} audio frame @ ${(\n              nextPts / inputTimeScale\n            ).toFixed(3)}s due to ${Math.round(\n              (1000 * delta) / inputTimeScale\n            )} ms gap.`\n          );\n          for (let j = 0; j < missing; j++) {\n            const newStamp = Math.max(nextPts as number, 0);\n            let fillFrame = AAC.getSilentFrame(\n              track.manifestCodec || track.codec,\n              track.channelCount\n            );\n            if (!fillFrame) {\n              logger.log(\n                '[mp4-remuxer]: Unable to get silent frame for given audio codec; duplicating last frame instead.'\n              );\n              fillFrame = sample.unit.subarray();\n            }\n            inputSamples.splice(i, 0, {\n              unit: fillFrame,\n              pts: newStamp,\n            });\n            nextPts += inputSampleDuration;\n            i++;\n          }\n        }\n        sample.pts = nextPts;\n        nextPts += inputSampleDuration;\n      }\n    }\n    let firstPTS: number | null = null;\n    let lastPTS: number | null = null;\n    let mdat: any;\n    let mdatSize: number = 0;\n    let sampleLength: number = inputSamples.length;\n    while (sampleLength--) {\n      mdatSize += inputSamples[sampleLength].unit.byteLength;\n    }\n    for (let j = 0, nbSamples = inputSamples.length; j < nbSamples; j++) {\n      const audioSample = inputSamples[j];\n      const unit = audioSample.unit;\n      let pts = audioSample.pts;\n      if (lastPTS !== null) {\n        // If we have more than one sample, set the duration of the sample to the \"real\" duration; the PTS diff with\n        // the previous sample\n        const prevSample = outputSamples[j - 1];\n        prevSample.duration = Math.round((pts - lastPTS) / scaleFactor);\n      } else {\n        if (contiguous && track.segmentCodec === 'aac') {\n          // set PTS/DTS to expected PTS/DTS\n          pts = nextAudioPts;\n        }\n        // remember first PTS of our audioSamples\n        firstPTS = pts;\n        if (mdatSize > 0) {\n          /* concatenate the audio data and construct the mdat in place\n            (need 8 more bytes to fill length and mdat type) */\n          mdatSize += offset;\n          try {\n            mdat = new Uint8Array(mdatSize);\n          } catch (err) {\n            this.observer.emit(Events.ERROR, Events.ERROR, {\n              type: ErrorTypes.MUX_ERROR,\n              details: ErrorDetails.REMUX_ALLOC_ERROR,\n              fatal: false,\n              error: err,\n              bytes: mdatSize,\n              reason: `fail allocating audio mdat ${mdatSize}`,\n            });\n            return;\n          }\n          if (!rawMPEG) {\n            const view = new DataView(mdat.buffer);\n            view.setUint32(0, mdatSize);\n            mdat.set(MP4.types.mdat, 4);\n          }\n        } else {\n          // no audio samples\n          return;\n        }\n      }\n      mdat.set(unit, offset);\n      const unitLen = unit.byteLength;\n      offset += unitLen;\n      // Default the sample's duration to the computed mp4SampleDuration, which will either be 1024 for AAC or 1152 for MPEG\n      // In the case that we have 1 sample, this will be the duration. If we have more than one sample, the duration\n      // becomes the PTS diff with the previous sample\n      outputSamples.push(new Mp4Sample(true, mp4SampleDuration, unitLen, 0));\n      lastPTS = pts;\n    }\n\n    // We could end up with no audio samples if all input samples were overlapping with the previously remuxed ones\n    const nbSamples = outputSamples.length;\n    if (!nbSamples) {\n      return;\n    }\n\n    // The next audio sample PTS should be equal to last sample PTS + duration\n    const lastSample = outputSamples[outputSamples.length - 1];\n    this.nextAudioPts = nextAudioPts =\n      lastPTS! + scaleFactor * lastSample.duration;\n\n    // Set the track samples from inputSamples to outputSamples before remuxing\n    const moof = rawMPEG\n      ? new Uint8Array(0)\n      : MP4.moof(\n          track.sequenceNumber++,\n          firstPTS! / scaleFactor,\n          Object.assign({}, track, { samples: outputSamples })\n        );\n\n    // Clear the track samples. This also clears the samples array in the demuxer, since the reference is shared\n    track.samples = [];\n    const start = firstPTS! / inputTimeScale;\n    const end = nextAudioPts / inputTimeScale;\n    const type: SourceBufferName = 'audio';\n    const audioData = {\n      data1: moof,\n      data2: mdat,\n      startPTS: start,\n      endPTS: end,\n      startDTS: start,\n      endDTS: end,\n      type,\n      hasAudio: true,\n      hasVideo: false,\n      nb: nbSamples,\n    };\n\n    this.isAudioContiguous = true;\n    return audioData;\n  }\n\n  remuxEmptyAudio(\n    track: DemuxedAudioTrack,\n    timeOffset: number,\n    contiguous: boolean,\n    videoData: Fragment\n  ): RemuxedTrack | undefined {\n    const inputTimeScale: number = track.inputTimeScale;\n    const mp4timeScale: number = track.samplerate\n      ? track.samplerate\n      : inputTimeScale;\n    const scaleFactor: number = inputTimeScale / mp4timeScale;\n    const nextAudioPts: number | null = this.nextAudioPts;\n    // sync with video's timestamp\n    const initDTS = this._initDTS as RationalTimestamp;\n    const init90kHz = (initDTS.baseTime * 90000) / initDTS.timescale;\n    const startDTS: number =\n      (nextAudioPts !== null\n        ? nextAudioPts\n        : videoData.startDTS * inputTimeScale) + init90kHz;\n    const endDTS: number = videoData.endDTS * inputTimeScale + init90kHz;\n    // one sample's duration value\n    const frameDuration: number = scaleFactor * AAC_SAMPLES_PER_FRAME;\n    // samples count of this segment's duration\n    const nbSamples: number = Math.ceil((endDTS - startDTS) / frameDuration);\n    // silent frame\n    const silentFrame: Uint8Array | undefined = AAC.getSilentFrame(\n      track.manifestCodec || track.codec,\n      track.channelCount\n    );\n\n    logger.warn('[mp4-remuxer]: remux empty Audio');\n    // Can't remux if we can't generate a silent frame...\n    if (!silentFrame) {\n      logger.trace(\n        '[mp4-remuxer]: Unable to remuxEmptyAudio since we were unable to get a silent frame for given audio codec'\n      );\n      return;\n    }\n\n    const samples: Array<any> = [];\n    for (let i = 0; i < nbSamples; i++) {\n      const stamp = startDTS + i * frameDuration;\n      samples.push({ unit: silentFrame, pts: stamp, dts: stamp });\n    }\n    track.samples = samples;\n\n    return this.remuxAudio(track, timeOffset, contiguous, false);\n  }\n}\n\nexport function normalizePts(value: number, reference: number | null): number {\n  let offset;\n  if (reference === null) {\n    return value;\n  }\n\n  if (reference < value) {\n    // - 2^33\n    offset = -8589934592;\n  } else {\n    // + 2^33\n    offset = 8589934592;\n  }\n  /* PTS is 33bit (from 0 to 2^33 -1)\n    if diff between value and reference is bigger than half of the amplitude (2^32) then it means that\n    PTS looping occured. fill the gap */\n  while (Math.abs(value - reference) > 4294967296) {\n    value += offset;\n  }\n\n  return value;\n}\n\nfunction findKeyframeIndex(samples: Array<AvcSample>): number {\n  for (let i = 0; i < samples.length; i++) {\n    if (samples[i].key) {\n      return i;\n    }\n  }\n  return -1;\n}\n\nexport function flushTextTrackMetadataCueSamples(\n  track: DemuxedMetadataTrack,\n  timeOffset: number,\n  initPTS: RationalTimestamp,\n  initDTS: RationalTimestamp\n): RemuxedMetadata | undefined {\n  const length = track.samples.length;\n  if (!length) {\n    return;\n  }\n  const inputTimeScale = track.inputTimeScale;\n  for (let index = 0; index < length; index++) {\n    const sample = track.samples[index];\n    // setting id3 pts, dts to relative time\n    // using this._initPTS and this._initDTS to calculate relative time\n    sample.pts =\n      normalizePts(\n        sample.pts - (initPTS.baseTime * inputTimeScale) / initPTS.timescale,\n        timeOffset * inputTimeScale\n      ) / inputTimeScale;\n    sample.dts =\n      normalizePts(\n        sample.dts - (initDTS.baseTime * inputTimeScale) / initDTS.timescale,\n        timeOffset * inputTimeScale\n      ) / inputTimeScale;\n  }\n  const samples = track.samples;\n  track.samples = [];\n  return {\n    samples,\n  };\n}\n\nexport function flushTextTrackUserdataCueSamples(\n  track: DemuxedUserdataTrack,\n  timeOffset: number,\n  initPTS: RationalTimestamp\n): RemuxedUserdata | undefined {\n  const length = track.samples.length;\n  if (!length) {\n    return;\n  }\n\n  const inputTimeScale = track.inputTimeScale;\n  for (let index = 0; index < length; index++) {\n    const sample = track.samples[index];\n    // setting text pts, dts to relative time\n    // using this._initPTS and this._initDTS to calculate relative time\n    sample.pts =\n      normalizePts(\n        sample.pts - (initPTS.baseTime * inputTimeScale) / initPTS.timescale,\n        timeOffset * inputTimeScale\n      ) / inputTimeScale;\n  }\n  track.samples.sort((a, b) => a.pts - b.pts);\n  const samples = track.samples;\n  track.samples = [];\n  return {\n    samples,\n  };\n}\n\nclass Mp4Sample {\n  public size: number;\n  public duration: number;\n  public cts: number;\n  public flags: Mp4SampleFlags;\n\n  constructor(\n    isKeyframe: boolean,\n    duration: number,\n    size: number,\n    cts: number\n  ) {\n    this.duration = duration;\n    this.size = size;\n    this.cts = cts;\n    this.flags = new Mp4SampleFlags(isKeyframe);\n  }\n}\n\nclass Mp4SampleFlags {\n  public isLeading: 0 = 0;\n  public isDependedOn: 0 = 0;\n  public hasRedundancy: 0 = 0;\n  public degradPrio: 0 = 0;\n  public dependsOn: 1 | 2 = 1;\n  public isNonSync: 0 | 1 = 1;\n\n  constructor(isKeyframe) {\n    this.dependsOn = isKeyframe ? 2 : 1;\n    this.isNonSync = isKeyframe ? 0 : 1;\n  }\n}\n","import {\n  flushTextTrackMetadataCueSamples,\n  flushTextTrackUserdataCueSamples,\n} from './mp4-remuxer';\nimport {\n  InitData,\n  InitDataTrack,\n  patchEncyptionData,\n} from '../utils/mp4-tools';\nimport {\n  getDuration,\n  getStartDTS,\n  offsetStartDTS,\n  parseInitSegment,\n} from '../utils/mp4-tools';\nimport { ElementaryStreamTypes } from '../loader/fragment';\nimport { logger } from '../utils/logger';\nimport type { TrackSet } from '../types/track';\nimport type {\n  InitSegmentData,\n  RemuxedTrack,\n  Remuxer,\n  RemuxerResult,\n} from '../types/remuxer';\nimport type {\n  DemuxedAudioTrack,\n  DemuxedMetadataTrack,\n  DemuxedUserdataTrack,\n  PassthroughTrack,\n} from '../types/demuxer';\nimport type { DecryptData } from '../loader/level-key';\nimport type { RationalTimestamp } from '../utils/timescale-conversion';\n\nclass PassThroughRemuxer implements Remuxer {\n  private emitInitSegment: boolean = false;\n  private audioCodec?: string;\n  private videoCodec?: string;\n  private initData?: InitData;\n  private initPTS: RationalTimestamp | null = null;\n  private initTracks?: TrackSet;\n  private lastEndTime: number | null = null;\n\n  public destroy() {}\n\n  public resetTimeStamp(defaultInitPTS: RationalTimestamp | null) {\n    this.initPTS = defaultInitPTS;\n    this.lastEndTime = null;\n  }\n\n  public resetNextTimestamp() {\n    this.lastEndTime = null;\n  }\n\n  public resetInitSegment(\n    initSegment: Uint8Array | undefined,\n    audioCodec: string | undefined,\n    videoCodec: string | undefined,\n    decryptdata: DecryptData | null\n  ) {\n    this.audioCodec = audioCodec;\n    this.videoCodec = videoCodec;\n    this.generateInitSegment(patchEncyptionData(initSegment, decryptdata));\n    this.emitInitSegment = true;\n  }\n\n  private generateInitSegment(initSegment: Uint8Array | undefined): void {\n    let { audioCodec, videoCodec } = this;\n    if (!initSegment?.byteLength) {\n      this.initTracks = undefined;\n      this.initData = undefined;\n      return;\n    }\n    const initData = (this.initData = parseInitSegment(initSegment));\n\n    // Get codec from initSegment or fallback to default\n    if (!audioCodec) {\n      audioCodec = getParsedTrackCodec(\n        initData.audio,\n        ElementaryStreamTypes.AUDIO\n      );\n    }\n\n    if (!videoCodec) {\n      videoCodec = getParsedTrackCodec(\n        initData.video,\n        ElementaryStreamTypes.VIDEO\n      );\n    }\n\n    const tracks: TrackSet = {};\n    if (initData.audio && initData.video) {\n      tracks.audiovideo = {\n        container: 'video/mp4',\n        codec: audioCodec + ',' + videoCodec,\n        initSegment,\n        id: 'main',\n      };\n    } else if (initData.audio) {\n      tracks.audio = {\n        container: 'audio/mp4',\n        codec: audioCodec,\n        initSegment,\n        id: 'audio',\n      };\n    } else if (initData.video) {\n      tracks.video = {\n        container: 'video/mp4',\n        codec: videoCodec,\n        initSegment,\n        id: 'main',\n      };\n    } else {\n      logger.warn(\n        '[passthrough-remuxer.ts]: initSegment does not contain moov or trak boxes.'\n      );\n    }\n    this.initTracks = tracks;\n  }\n\n  public remux(\n    audioTrack: DemuxedAudioTrack,\n    videoTrack: PassthroughTrack,\n    id3Track: DemuxedMetadataTrack,\n    textTrack: DemuxedUserdataTrack,\n    timeOffset: number,\n    accurateTimeOffset: boolean\n  ): RemuxerResult {\n    let { initPTS, lastEndTime } = this;\n    const result: RemuxerResult = {\n      audio: undefined,\n      video: undefined,\n      text: textTrack,\n      id3: id3Track,\n      initSegment: undefined,\n    };\n\n    // If we haven't yet set a lastEndDTS, or it was reset, set it to the provided timeOffset. We want to use the\n    // lastEndDTS over timeOffset whenever possible; during progressive playback, the media source will not update\n    // the media duration (which is what timeOffset is provided as) before we need to process the next chunk.\n    if (!Number.isFinite(lastEndTime!)) {\n      lastEndTime = this.lastEndTime = timeOffset || 0;\n    }\n\n    // The binary segment data is added to the videoTrack in the mp4demuxer. We don't check to see if the data is only\n    // audio or video (or both); adding it to video was an arbitrary choice.\n    const data = videoTrack.samples;\n    if (!data?.length) {\n      return result;\n    }\n\n    const initSegment: InitSegmentData = {\n      initPTS: undefined,\n      timescale: 1,\n    };\n    let initData = this.initData;\n    if (!initData?.length) {\n      this.generateInitSegment(data);\n      initData = this.initData;\n    }\n    if (!initData?.length) {\n      // We can't remux if the initSegment could not be generated\n      logger.warn('[passthrough-remuxer.ts]: Failed to generate initSegment.');\n      return result;\n    }\n    if (this.emitInitSegment) {\n      initSegment.tracks = this.initTracks as TrackSet;\n      this.emitInitSegment = false;\n    }\n\n    const duration = getDuration(data, initData);\n    const startDTS = getStartDTS(initData, data);\n    const decodeTime = startDTS === null ? timeOffset : startDTS;\n    if (\n      isInvalidInitPts(initPTS, decodeTime, timeOffset, duration) ||\n      (initSegment.timescale !== initPTS.timescale && accurateTimeOffset)\n    ) {\n      initSegment.initPTS = decodeTime - timeOffset;\n      if (initPTS && initPTS.timescale === 1) {\n        logger.warn(\n          `Adjusting initPTS by ${initSegment.initPTS - initPTS.baseTime}`\n        );\n      }\n      this.initPTS = initPTS = {\n        baseTime: initSegment.initPTS,\n        timescale: 1,\n      };\n    }\n\n    const startTime = audioTrack\n      ? decodeTime - initPTS.baseTime / initPTS.timescale\n      : (lastEndTime as number);\n    const endTime = startTime + duration;\n    offsetStartDTS(initData, data, initPTS.baseTime / initPTS.timescale);\n\n    if (duration > 0) {\n      this.lastEndTime = endTime;\n    } else {\n      logger.warn('Duration parsed from mp4 should be greater than zero');\n      this.resetNextTimestamp();\n    }\n\n    const hasAudio = !!initData.audio;\n    const hasVideo = !!initData.video;\n\n    let type: any = '';\n    if (hasAudio) {\n      type += 'audio';\n    }\n\n    if (hasVideo) {\n      type += 'video';\n    }\n\n    const track: RemuxedTrack = {\n      data1: data,\n      startPTS: startTime,\n      startDTS: startTime,\n      endPTS: endTime,\n      endDTS: endTime,\n      type,\n      hasAudio,\n      hasVideo,\n      nb: 1,\n      dropped: 0,\n    };\n\n    result.audio = track.type === 'audio' ? track : undefined;\n    result.video = track.type !== 'audio' ? track : undefined;\n    result.initSegment = initSegment;\n    result.id3 = flushTextTrackMetadataCueSamples(\n      id3Track,\n      timeOffset,\n      initPTS,\n      initPTS\n    );\n\n    if (textTrack.samples.length) {\n      result.text = flushTextTrackUserdataCueSamples(\n        textTrack,\n        timeOffset,\n        initPTS\n      );\n    }\n\n    return result;\n  }\n}\n\nfunction isInvalidInitPts(\n  initPTS: RationalTimestamp | null,\n  startDTS: number,\n  timeOffset: number,\n  duration: number\n): initPTS is null {\n  if (initPTS === null) {\n    return true;\n  }\n  // InitPTS is invalid when distance from program would be more than segment duration or a minimum of one second\n  const minDuration = Math.max(duration, 1);\n  const startTime = startDTS - initPTS.baseTime / initPTS.timescale;\n  return Math.abs(startTime - timeOffset) > minDuration;\n}\n\nfunction getParsedTrackCodec(\n  track: InitDataTrack | undefined,\n  type: ElementaryStreamTypes.AUDIO | ElementaryStreamTypes.VIDEO\n): string {\n  const parsedCodec = track?.codec;\n  if (parsedCodec && parsedCodec.length > 4) {\n    return parsedCodec;\n  }\n  // Since mp4-tools cannot parse full codec string (see 'TODO: Parse codec details'... in mp4-tools)\n  // Provide defaults based on codec type\n  // This allows for some playback of some fmp4 playlists without CODECS defined in manifest\n  if (parsedCodec === 'hvc1' || parsedCodec === 'hev1') {\n    return 'hvc1.1.6.L120.90';\n  }\n  if (parsedCodec === 'av01') {\n    return 'av01.0.04M.08';\n  }\n  if (parsedCodec === 'avc1' || type === ElementaryStreamTypes.VIDEO) {\n    return 'avc1.42e01e';\n  }\n  return 'mp4a.40.5';\n}\nexport default PassThroughRemuxer;\n","import type { HlsEventEmitter } from '../events';\nimport { Events } from '../events';\nimport { ErrorTypes, ErrorDetails } from '../errors';\nimport Decrypter from '../crypt/decrypter';\nimport AACDemuxer from '../demux/aacdemuxer';\nimport MP4Demuxer from '../demux/mp4demuxer';\nimport TSDemuxer, { TypeSupported } from '../demux/tsdemuxer';\nimport MP3Demuxer from '../demux/mp3demuxer';\nimport MP4Remuxer from '../remux/mp4-remuxer';\nimport PassThroughRemuxer from '../remux/passthrough-remuxer';\nimport { logger } from '../utils/logger';\nimport type { Demuxer, DemuxerResult, KeyData } from '../types/demuxer';\nimport type { Remuxer } from '../types/remuxer';\nimport type { TransmuxerResult, ChunkMetadata } from '../types/transmuxer';\nimport type { HlsConfig } from '../config';\nimport type { DecryptData } from '../loader/level-key';\nimport type { PlaylistLevelType } from '../types/loader';\nimport type { RationalTimestamp } from '../utils/timescale-conversion';\n\nlet now;\n// performance.now() not available on WebWorker, at least on Safari Desktop\ntry {\n  now = self.performance.now.bind(self.performance);\n} catch (err) {\n  logger.debug('Unable to use Performance API on this environment');\n  now = typeof self !== 'undefined' && self.Date.now;\n}\n\ntype MuxConfig =\n  | { demux: typeof MP4Demuxer; remux: typeof PassThroughRemuxer }\n  | { demux: typeof TSDemuxer; remux: typeof MP4Remuxer }\n  | { demux: typeof AACDemuxer; remux: typeof MP4Remuxer }\n  | { demux: typeof MP3Demuxer; remux: typeof MP4Remuxer };\n\nconst muxConfig: MuxConfig[] = [\n  { demux: MP4Demuxer, remux: PassThroughRemuxer },\n  { demux: TSDemuxer, remux: MP4Remuxer },\n  { demux: AACDemuxer, remux: MP4Remuxer },\n  { demux: MP3Demuxer, remux: MP4Remuxer },\n];\n\nexport default class Transmuxer {\n  public async: boolean = false;\n  private observer: HlsEventEmitter;\n  private typeSupported: TypeSupported;\n  private config: HlsConfig;\n  private vendor: string;\n  private id: PlaylistLevelType;\n  private demuxer?: Demuxer;\n  private remuxer?: Remuxer;\n  private decrypter?: Decrypter;\n  private probe!: Function;\n  private decryptionPromise: Promise<TransmuxerResult> | null = null;\n  private transmuxConfig!: TransmuxConfig;\n  private currentTransmuxState!: TransmuxState;\n\n  constructor(\n    observer: HlsEventEmitter,\n    typeSupported: TypeSupported,\n    config: HlsConfig,\n    vendor: string,\n    id: PlaylistLevelType\n  ) {\n    this.observer = observer;\n    this.typeSupported = typeSupported;\n    this.config = config;\n    this.vendor = vendor;\n    this.id = id;\n  }\n\n  configure(transmuxConfig: TransmuxConfig) {\n    this.transmuxConfig = transmuxConfig;\n    if (this.decrypter) {\n      this.decrypter.reset();\n    }\n  }\n\n  push(\n    data: ArrayBuffer,\n    decryptdata: DecryptData | null,\n    chunkMeta: ChunkMetadata,\n    state?: TransmuxState\n  ): TransmuxerResult | Promise<TransmuxerResult> {\n    const stats = chunkMeta.transmuxing;\n    stats.executeStart = now();\n\n    let uintData: Uint8Array = new Uint8Array(data);\n    const { currentTransmuxState, transmuxConfig } = this;\n    if (state) {\n      this.currentTransmuxState = state;\n    }\n\n    const {\n      contiguous,\n      discontinuity,\n      trackSwitch,\n      accurateTimeOffset,\n      timeOffset,\n      initSegmentChange,\n    } = state || currentTransmuxState;\n    const {\n      audioCodec,\n      videoCodec,\n      defaultInitPts,\n      duration,\n      initSegmentData,\n    } = transmuxConfig;\n\n    const keyData = getEncryptionType(uintData, decryptdata);\n    if (keyData && keyData.method === 'AES-128') {\n      const decrypter = this.getDecrypter();\n      // Software decryption is synchronous; webCrypto is not\n      if (decrypter.isSync()) {\n        // Software decryption is progressive. Progressive decryption may not return a result on each call. Any cached\n        // data is handled in the flush() call\n        let decryptedData = decrypter.softwareDecrypt(\n          uintData,\n          keyData.key.buffer,\n          keyData.iv.buffer\n        );\n        // For Low-Latency HLS Parts, decrypt in place, since part parsing is expected on push progress\n        const loadingParts = chunkMeta.part > -1;\n        if (loadingParts) {\n          decryptedData = decrypter.flush();\n        }\n        if (!decryptedData) {\n          stats.executeEnd = now();\n          return emptyResult(chunkMeta);\n        }\n        uintData = new Uint8Array(decryptedData);\n      } else {\n        this.decryptionPromise = decrypter\n          .webCryptoDecrypt(uintData, keyData.key.buffer, keyData.iv.buffer)\n          .then((decryptedData): TransmuxerResult => {\n            // Calling push here is important; if flush() is called while this is still resolving, this ensures that\n            // the decrypted data has been transmuxed\n            const result = this.push(\n              decryptedData,\n              null,\n              chunkMeta\n            ) as TransmuxerResult;\n            this.decryptionPromise = null;\n            return result;\n          });\n        return this.decryptionPromise!;\n      }\n    }\n\n    const resetMuxers = this.needsProbing(discontinuity, trackSwitch);\n    if (resetMuxers) {\n      const error = this.configureTransmuxer(uintData);\n      if (error) {\n        logger.warn(`[transmuxer] ${error.message}`);\n        this.observer.emit(Events.ERROR, Events.ERROR, {\n          type: ErrorTypes.MEDIA_ERROR,\n          details: ErrorDetails.FRAG_PARSING_ERROR,\n          fatal: false,\n          error,\n          reason: error.message,\n        });\n        stats.executeEnd = now();\n        return emptyResult(chunkMeta);\n      }\n    }\n\n    if (discontinuity || trackSwitch || initSegmentChange || resetMuxers) {\n      this.resetInitSegment(\n        initSegmentData,\n        audioCodec,\n        videoCodec,\n        duration,\n        decryptdata\n      );\n    }\n\n    if (discontinuity || initSegmentChange || resetMuxers) {\n      this.resetInitialTimestamp(defaultInitPts);\n    }\n\n    if (!contiguous) {\n      this.resetContiguity();\n    }\n\n    const result = this.transmux(\n      uintData,\n      keyData,\n      timeOffset,\n      accurateTimeOffset,\n      chunkMeta\n    );\n    const currentState = this.currentTransmuxState;\n\n    currentState.contiguous = true;\n    currentState.discontinuity = false;\n    currentState.trackSwitch = false;\n\n    stats.executeEnd = now();\n    return result;\n  }\n\n  // Due to data caching, flush calls can produce more than one TransmuxerResult (hence the Array type)\n  flush(\n    chunkMeta: ChunkMetadata\n  ): TransmuxerResult[] | Promise<TransmuxerResult[]> {\n    const stats = chunkMeta.transmuxing;\n    stats.executeStart = now();\n\n    const { decrypter, currentTransmuxState, decryptionPromise } = this;\n\n    if (decryptionPromise) {\n      // Upon resolution, the decryption promise calls push() and returns its TransmuxerResult up the stack. Therefore\n      // only flushing is required for async decryption\n      return decryptionPromise.then(() => {\n        return this.flush(chunkMeta);\n      });\n    }\n\n    const transmuxResults: TransmuxerResult[] = [];\n    const { timeOffset } = currentTransmuxState;\n    if (decrypter) {\n      // The decrypter may have data cached, which needs to be demuxed. In this case we'll have two TransmuxResults\n      // This happens in the case that we receive only 1 push call for a segment (either for non-progressive downloads,\n      // or for progressive downloads with small segments)\n      const decryptedData = decrypter.flush();\n      if (decryptedData) {\n        // Push always returns a TransmuxerResult if decryptdata is null\n        transmuxResults.push(\n          this.push(decryptedData, null, chunkMeta) as TransmuxerResult\n        );\n      }\n    }\n\n    const { demuxer, remuxer } = this;\n    if (!demuxer || !remuxer) {\n      // If probing failed, then Hls.js has been given content its not able to handle\n      stats.executeEnd = now();\n      return [emptyResult(chunkMeta)];\n    }\n\n    const demuxResultOrPromise = demuxer.flush(timeOffset);\n    if (isPromise(demuxResultOrPromise)) {\n      // Decrypt final SAMPLE-AES samples\n      return demuxResultOrPromise.then((demuxResult) => {\n        this.flushRemux(transmuxResults, demuxResult, chunkMeta);\n        return transmuxResults;\n      });\n    }\n\n    this.flushRemux(transmuxResults, demuxResultOrPromise, chunkMeta);\n    return transmuxResults;\n  }\n\n  private flushRemux(\n    transmuxResults: TransmuxerResult[],\n    demuxResult: DemuxerResult,\n    chunkMeta: ChunkMetadata\n  ) {\n    const { audioTrack, videoTrack, id3Track, textTrack } = demuxResult;\n    const { accurateTimeOffset, timeOffset } = this.currentTransmuxState;\n    logger.log(\n      `[transmuxer.ts]: Flushed fragment ${chunkMeta.sn}${\n        chunkMeta.part > -1 ? ' p: ' + chunkMeta.part : ''\n      } of level ${chunkMeta.level}`\n    );\n    const remuxResult = this.remuxer!.remux(\n      audioTrack,\n      videoTrack,\n      id3Track,\n      textTrack,\n      timeOffset,\n      accurateTimeOffset,\n      true,\n      this.id\n    );\n    transmuxResults.push({\n      remuxResult,\n      chunkMeta,\n    });\n\n    chunkMeta.transmuxing.executeEnd = now();\n  }\n\n  resetInitialTimestamp(defaultInitPts: RationalTimestamp | null) {\n    const { demuxer, remuxer } = this;\n    if (!demuxer || !remuxer) {\n      return;\n    }\n    demuxer.resetTimeStamp(defaultInitPts);\n    remuxer.resetTimeStamp(defaultInitPts);\n  }\n\n  resetContiguity() {\n    const { demuxer, remuxer } = this;\n    if (!demuxer || !remuxer) {\n      return;\n    }\n    demuxer.resetContiguity();\n    remuxer.resetNextTimestamp();\n  }\n\n  resetInitSegment(\n    initSegmentData: Uint8Array | undefined,\n    audioCodec: string | undefined,\n    videoCodec: string | undefined,\n    trackDuration: number,\n    decryptdata: DecryptData | null\n  ) {\n    const { demuxer, remuxer } = this;\n    if (!demuxer || !remuxer) {\n      return;\n    }\n    demuxer.resetInitSegment(\n      initSegmentData,\n      audioCodec,\n      videoCodec,\n      trackDuration\n    );\n    remuxer.resetInitSegment(\n      initSegmentData,\n      audioCodec,\n      videoCodec,\n      decryptdata\n    );\n  }\n\n  destroy(): void {\n    if (this.demuxer) {\n      this.demuxer.destroy();\n      this.demuxer = undefined;\n    }\n    if (this.remuxer) {\n      this.remuxer.destroy();\n      this.remuxer = undefined;\n    }\n  }\n\n  private transmux(\n    data: Uint8Array,\n    keyData: KeyData | null,\n    timeOffset: number,\n    accurateTimeOffset: boolean,\n    chunkMeta: ChunkMetadata\n  ): TransmuxerResult | Promise<TransmuxerResult> {\n    let result: TransmuxerResult | Promise<TransmuxerResult>;\n    if (keyData && keyData.method === 'SAMPLE-AES') {\n      result = this.transmuxSampleAes(\n        data,\n        keyData,\n        timeOffset,\n        accurateTimeOffset,\n        chunkMeta\n      );\n    } else {\n      result = this.transmuxUnencrypted(\n        data,\n        timeOffset,\n        accurateTimeOffset,\n        chunkMeta\n      );\n    }\n    return result;\n  }\n\n  private transmuxUnencrypted(\n    data: Uint8Array,\n    timeOffset: number,\n    accurateTimeOffset: boolean,\n    chunkMeta: ChunkMetadata\n  ): TransmuxerResult {\n    const { audioTrack, videoTrack, id3Track, textTrack } = (\n      this.demuxer as Demuxer\n    ).demux(data, timeOffset, false, !this.config.progressive);\n    const remuxResult = this.remuxer!.remux(\n      audioTrack,\n      videoTrack,\n      id3Track,\n      textTrack,\n      timeOffset,\n      accurateTimeOffset,\n      false,\n      this.id\n    );\n    return {\n      remuxResult,\n      chunkMeta,\n    };\n  }\n\n  private transmuxSampleAes(\n    data: Uint8Array,\n    decryptData: KeyData,\n    timeOffset: number,\n    accurateTimeOffset: boolean,\n    chunkMeta: ChunkMetadata\n  ): Promise<TransmuxerResult> {\n    return (this.demuxer as Demuxer)\n      .demuxSampleAes(data, decryptData, timeOffset)\n      .then((demuxResult) => {\n        const remuxResult = this.remuxer!.remux(\n          demuxResult.audioTrack,\n          demuxResult.videoTrack,\n          demuxResult.id3Track,\n          demuxResult.textTrack,\n          timeOffset,\n          accurateTimeOffset,\n          false,\n          this.id\n        );\n        return {\n          remuxResult,\n          chunkMeta,\n        };\n      });\n  }\n\n  private configureTransmuxer(data: Uint8Array): void | Error {\n    const { config, observer, typeSupported, vendor } = this;\n    // probe for content type\n    let mux;\n    for (let i = 0, len = muxConfig.length; i < len; i++) {\n      if (muxConfig[i].demux.probe(data)) {\n        mux = muxConfig[i];\n        break;\n      }\n    }\n    if (!mux) {\n      return new Error('Failed to find demuxer by probing fragment data');\n    }\n    // so let's check that current remuxer and demuxer are still valid\n    const demuxer = this.demuxer;\n    const remuxer = this.remuxer;\n    const Remuxer: MuxConfig['remux'] = mux.remux;\n    const Demuxer: MuxConfig['demux'] = mux.demux;\n    if (!remuxer || !(remuxer instanceof Remuxer)) {\n      this.remuxer = new Remuxer(observer, config, typeSupported, vendor);\n    }\n    if (!demuxer || !(demuxer instanceof Demuxer)) {\n      this.demuxer = new Demuxer(observer, config, typeSupported);\n      this.probe = Demuxer.probe;\n    }\n  }\n\n  private needsProbing(discontinuity: boolean, trackSwitch: boolean): boolean {\n    // in case of continuity change, or track switch\n    // we might switch from content type (AAC container to TS container, or TS to fmp4 for example)\n    return !this.demuxer || !this.remuxer || discontinuity || trackSwitch;\n  }\n\n  private getDecrypter(): Decrypter {\n    let decrypter = this.decrypter;\n    if (!decrypter) {\n      decrypter = this.decrypter = new Decrypter(this.config);\n    }\n    return decrypter;\n  }\n}\n\nfunction getEncryptionType(\n  data: Uint8Array,\n  decryptData: DecryptData | null\n): KeyData | null {\n  let encryptionType: KeyData | null = null;\n  if (\n    data.byteLength > 0 &&\n    decryptData != null &&\n    decryptData.key != null &&\n    decryptData.iv !== null &&\n    decryptData.method != null\n  ) {\n    encryptionType = decryptData as KeyData;\n  }\n  return encryptionType;\n}\n\nconst emptyResult = (chunkMeta): TransmuxerResult => ({\n  remuxResult: {},\n  chunkMeta,\n});\n\nexport function isPromise<T>(p: Promise<T> | any): p is Promise<T> {\n  return 'then' in p && p.then instanceof Function;\n}\n\nexport class TransmuxConfig {\n  public audioCodec?: string;\n  public videoCodec?: string;\n  public initSegmentData?: Uint8Array;\n  public duration: number;\n  public defaultInitPts: RationalTimestamp | null;\n\n  constructor(\n    audioCodec: string | undefined,\n    videoCodec: string | undefined,\n    initSegmentData: Uint8Array | undefined,\n    duration: number,\n    defaultInitPts?: RationalTimestamp\n  ) {\n    this.audioCodec = audioCodec;\n    this.videoCodec = videoCodec;\n    this.initSegmentData = initSegmentData;\n    this.duration = duration;\n    this.defaultInitPts = defaultInitPts || null;\n  }\n}\n\nexport class TransmuxState {\n  public discontinuity: boolean;\n  public contiguous: boolean;\n  public accurateTimeOffset: boolean;\n  public trackSwitch: boolean;\n  public timeOffset: number;\n  public initSegmentChange: boolean;\n\n  constructor(\n    discontinuity: boolean,\n    contiguous: boolean,\n    accurateTimeOffset: boolean,\n    trackSwitch: boolean,\n    timeOffset: number,\n    initSegmentChange: boolean\n  ) {\n    this.discontinuity = discontinuity;\n    this.contiguous = contiguous;\n    this.accurateTimeOffset = accurateTimeOffset;\n    this.trackSwitch = trackSwitch;\n    this.timeOffset = timeOffset;\n    this.initSegmentChange = initSegmentChange;\n  }\n}\n","export default class ChunkCache {\n  private chunks: Array<Uint8Array> = [];\n  public dataLength: number = 0;\n\n  push(chunk: Uint8Array) {\n    this.chunks.push(chunk);\n    this.dataLength += chunk.length;\n  }\n\n  flush(): Uint8Array {\n    const { chunks, dataLength } = this;\n    let result;\n    if (!chunks.length) {\n      return new Uint8Array(0);\n    } else if (chunks.length === 1) {\n      result = chunks[0];\n    } else {\n      result = concatUint8Arrays(chunks, dataLength);\n    }\n    this.reset();\n    return result;\n  }\n\n  reset() {\n    this.chunks.length = 0;\n    this.dataLength = 0;\n  }\n}\n\nfunction concatUint8Arrays(\n  chunks: Array<Uint8Array>,\n  dataLength: number\n): Uint8Array {\n  const result = new Uint8Array(dataLength);\n  let offset = 0;\n  for (let i = 0; i < chunks.length; i++) {\n    const chunk = chunks[i];\n    result.set(chunk, offset);\n    offset += chunk.length;\n  }\n  return result;\n}\n","import type { Level } from '../types/level';\nimport type { MediaAttributes, MediaPlaylist } from '../types/media-playlist';\n\nexport function subtitleOptionsIdentical(\n  trackList1: MediaPlaylist[] | Level[],\n  trackList2: MediaPlaylist[]\n): boolean {\n  if (trackList1.length !== trackList2.length) {\n    return false;\n  }\n  for (let i = 0; i < trackList1.length; i++) {\n    if (\n      !subtitleAttributesIdentical(\n        trackList1[i].attrs as MediaAttributes,\n        trackList2[i].attrs\n      )\n    ) {\n      return false;\n    }\n  }\n  return true;\n}\n\nexport function subtitleAttributesIdentical(\n  attrs1: MediaAttributes,\n  attrs2: MediaAttributes\n): boolean {\n  // Media options with the same rendition ID must be bit identical\n  const stableRenditionId = attrs1['STABLE-RENDITION-ID'];\n  if (stableRenditionId) {\n    return stableRenditionId === attrs2['STABLE-RENDITION-ID'];\n  }\n  // When rendition ID is not present, compare attributes\n  return ![\n    'LANGUAGE',\n    'NAME',\n    'CHARACTERISTICS',\n    'AUTOSELECT',\n    'DEFAULT',\n    'FORCED',\n  ].some(\n    (subtitleAttribute) =>\n      attrs1[subtitleAttribute] !== attrs2[subtitleAttribute]\n  );\n}\n","import { Events } from '../events';\nimport { clearCurrentCues } from '../utils/texttrack-utils';\nimport BasePlaylistController from './base-playlist-controller';\nimport type { HlsUrlParameters } from '../types/level';\nimport type Hls from '../hls';\nimport type {\n  TrackLoadedData,\n  MediaAttachedData,\n  SubtitleTracksUpdatedData,\n  ManifestParsedData,\n  LevelSwitchingData,\n} from '../types/events';\nimport type { MediaPlaylist } from '../types/media-playlist';\nimport { ErrorData, LevelLoadingData } from '../types/events';\nimport { PlaylistContextType } from '../types/loader';\n\nclass SubtitleTrackController extends BasePlaylistController {\n  private media: HTMLMediaElement | null = null;\n  private tracks: MediaPlaylist[] = [];\n  private groupId: string | null = null;\n  private tracksInGroup: MediaPlaylist[] = [];\n  private trackId: number = -1;\n  private selectDefaultTrack: boolean = true;\n  private queuedDefaultTrack: number = -1;\n  private trackChangeListener: () => void = () => this.onTextTracksChanged();\n  private asyncPollTrackChange: () => void = () => this.pollTrackChange(0);\n  private useTextTrackPolling: boolean = false;\n  private subtitlePollingInterval: number = -1;\n  private _subtitleDisplay: boolean = true;\n\n  constructor(hls: Hls) {\n    super(hls, '[subtitle-track-controller]');\n    this.registerListeners();\n  }\n\n  public destroy() {\n    this.unregisterListeners();\n    this.tracks.length = 0;\n    this.tracksInGroup.length = 0;\n    this.trackChangeListener = this.asyncPollTrackChange = null as any;\n    super.destroy();\n  }\n\n  public get subtitleDisplay(): boolean {\n    return this._subtitleDisplay;\n  }\n\n  public set subtitleDisplay(value: boolean) {\n    this._subtitleDisplay = value;\n    if (this.trackId > -1) {\n      this.toggleTrackModes(this.trackId);\n    }\n  }\n\n  private registerListeners() {\n    const { hls } = this;\n    hls.on(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n    hls.on(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n    hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    hls.on(Events.MANIFEST_PARSED, this.onManifestParsed, this);\n    hls.on(Events.LEVEL_LOADING, this.onLevelLoading, this);\n    hls.on(Events.LEVEL_SWITCHING, this.onLevelSwitching, this);\n    hls.on(Events.SUBTITLE_TRACK_LOADED, this.onSubtitleTrackLoaded, this);\n    hls.on(Events.ERROR, this.onError, this);\n  }\n\n  private unregisterListeners() {\n    const { hls } = this;\n    hls.off(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n    hls.off(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n    hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    hls.off(Events.MANIFEST_PARSED, this.onManifestParsed, this);\n    hls.off(Events.LEVEL_LOADING, this.onLevelLoading, this);\n    hls.off(Events.LEVEL_SWITCHING, this.onLevelSwitching, this);\n    hls.off(Events.SUBTITLE_TRACK_LOADED, this.onSubtitleTrackLoaded, this);\n    hls.off(Events.ERROR, this.onError, this);\n  }\n\n  // Listen for subtitle track change, then extract the current track ID.\n  protected onMediaAttached(\n    event: Events.MEDIA_ATTACHED,\n    data: MediaAttachedData\n  ): void {\n    this.media = data.media;\n    if (!this.media) {\n      return;\n    }\n\n    if (this.queuedDefaultTrack > -1) {\n      this.subtitleTrack = this.queuedDefaultTrack;\n      this.queuedDefaultTrack = -1;\n    }\n\n    this.useTextTrackPolling = !(\n      this.media.textTracks && 'onchange' in this.media.textTracks\n    );\n    if (this.useTextTrackPolling) {\n      this.pollTrackChange(500);\n    } else {\n      this.media.textTracks.addEventListener(\n        'change',\n        this.asyncPollTrackChange\n      );\n    }\n  }\n\n  private pollTrackChange(timeout: number) {\n    self.clearInterval(this.subtitlePollingInterval);\n    this.subtitlePollingInterval = self.setInterval(\n      this.trackChangeListener,\n      timeout\n    );\n  }\n\n  protected onMediaDetaching(): void {\n    if (!this.media) {\n      return;\n    }\n\n    self.clearInterval(this.subtitlePollingInterval);\n    if (!this.useTextTrackPolling) {\n      this.media.textTracks.removeEventListener(\n        'change',\n        this.asyncPollTrackChange\n      );\n    }\n\n    if (this.trackId > -1) {\n      this.queuedDefaultTrack = this.trackId;\n    }\n\n    const textTracks = filterSubtitleTracks(this.media.textTracks);\n    // Clear loaded cues on media detachment from tracks\n    textTracks.forEach((track) => {\n      clearCurrentCues(track);\n    });\n    // Disable all subtitle tracks before detachment so when reattached only tracks in that content are enabled.\n    this.subtitleTrack = -1;\n    this.media = null;\n  }\n\n  protected onManifestLoading(): void {\n    this.tracks = [];\n    this.groupId = null;\n    this.tracksInGroup = [];\n    this.trackId = -1;\n    this.selectDefaultTrack = true;\n  }\n\n  // Fired whenever a new manifest is loaded.\n  protected onManifestParsed(\n    event: Events.MANIFEST_PARSED,\n    data: ManifestParsedData\n  ): void {\n    this.tracks = data.subtitleTracks;\n  }\n\n  protected onSubtitleTrackLoaded(\n    event: Events.SUBTITLE_TRACK_LOADED,\n    data: TrackLoadedData\n  ): void {\n    const { id, details } = data;\n    const { trackId } = this;\n    const currentTrack = this.tracksInGroup[trackId];\n\n    if (!currentTrack) {\n      this.warn(`Invalid subtitle track id ${id}`);\n      return;\n    }\n\n    const curDetails = currentTrack.details;\n    currentTrack.details = data.details;\n    this.log(\n      `subtitle track ${id} loaded [${details.startSN}-${details.endSN}]`\n    );\n\n    if (id === this.trackId) {\n      this.playlistLoaded(id, data, curDetails);\n    }\n  }\n\n  protected onLevelLoading(\n    event: Events.LEVEL_LOADING,\n    data: LevelLoadingData\n  ): void {\n    this.switchLevel(data.level);\n  }\n\n  protected onLevelSwitching(\n    event: Events.LEVEL_SWITCHING,\n    data: LevelSwitchingData\n  ): void {\n    this.switchLevel(data.level);\n  }\n\n  private switchLevel(levelIndex: number) {\n    const levelInfo = this.hls.levels[levelIndex];\n    if (!levelInfo?.textGroupIds) {\n      return;\n    }\n    const textGroupId = levelInfo.textGroupIds[levelInfo.urlId];\n    const lastTrack = this.tracksInGroup\n      ? this.tracksInGroup[this.trackId]\n      : undefined;\n    if (this.groupId !== textGroupId) {\n      const subtitleTracks = this.tracks.filter(\n        (track): boolean => !textGroupId || track.groupId === textGroupId\n      );\n      this.tracksInGroup = subtitleTracks;\n      const initialTrackId =\n        this.findTrackId(lastTrack?.name) || this.findTrackId();\n      this.groupId = textGroupId || null;\n\n      const subtitleTracksUpdated: SubtitleTracksUpdatedData = {\n        subtitleTracks,\n      };\n      this.log(\n        `Updating subtitle tracks, ${subtitleTracks.length} track(s) found in \"${textGroupId}\" group-id`\n      );\n      this.hls.trigger(Events.SUBTITLE_TRACKS_UPDATED, subtitleTracksUpdated);\n\n      if (initialTrackId !== -1) {\n        this.setSubtitleTrack(initialTrackId, lastTrack);\n      }\n    } else if (this.shouldReloadPlaylist(lastTrack)) {\n      // Retry playlist loading if no playlist is or has been loaded yet\n      this.setSubtitleTrack(this.trackId, lastTrack);\n    }\n  }\n\n  private findTrackId(name?: string): number {\n    const textTracks = this.tracksInGroup;\n    for (let i = 0; i < textTracks.length; i++) {\n      const track = textTracks[i];\n      if (!this.selectDefaultTrack || track.default) {\n        if (!name || name === track.name) {\n          return track.id;\n        }\n      }\n    }\n    return -1;\n  }\n\n  protected onError(event: Events.ERROR, data: ErrorData): void {\n    if (data.fatal || !data.context) {\n      return;\n    }\n\n    if (\n      data.context.type === PlaylistContextType.SUBTITLE_TRACK &&\n      data.context.id === this.trackId &&\n      data.context.groupId === this.groupId\n    ) {\n      this.checkRetry(data);\n    }\n  }\n\n  /** get alternate subtitle tracks list from playlist **/\n  get subtitleTracks(): MediaPlaylist[] {\n    return this.tracksInGroup;\n  }\n\n  /** get/set index of the selected subtitle track (based on index in subtitle track lists) **/\n  get subtitleTrack(): number {\n    return this.trackId;\n  }\n\n  set subtitleTrack(newId: number) {\n    this.selectDefaultTrack = false;\n    const lastTrack = this.tracksInGroup\n      ? this.tracksInGroup[this.trackId]\n      : undefined;\n    this.setSubtitleTrack(newId, lastTrack);\n  }\n\n  protected loadPlaylist(hlsUrlParameters?: HlsUrlParameters): void {\n    super.loadPlaylist();\n    const currentTrack = this.tracksInGroup[this.trackId];\n    if (this.shouldLoadPlaylist(currentTrack)) {\n      const id = currentTrack.id;\n      const groupId = currentTrack.groupId as string;\n      let url = currentTrack.url;\n      if (hlsUrlParameters) {\n        try {\n          url = hlsUrlParameters.addDirectives(url);\n        } catch (error) {\n          this.warn(\n            `Could not construct new URL with HLS Delivery Directives: ${error}`\n          );\n        }\n      }\n      this.log(`Loading subtitle playlist for id ${id}`);\n      this.hls.trigger(Events.SUBTITLE_TRACK_LOADING, {\n        url,\n        id,\n        groupId,\n        deliveryDirectives: hlsUrlParameters || null,\n      });\n    }\n  }\n\n  /**\n   * Disables the old subtitleTrack and sets current mode on the next subtitleTrack.\n   * This operates on the DOM textTracks.\n   * A value of -1 will disable all subtitle tracks.\n   */\n  private toggleTrackModes(newId: number): void {\n    const { media, trackId } = this;\n    if (!media) {\n      return;\n    }\n\n    const textTracks = filterSubtitleTracks(media.textTracks);\n    const groupTracks = textTracks.filter(\n      (track) => (track as any).groupId === this.groupId\n    );\n    if (newId === -1) {\n      [].slice.call(textTracks).forEach((track) => {\n        track.mode = 'disabled';\n      });\n    } else {\n      const oldTrack = groupTracks[trackId];\n      if (oldTrack) {\n        oldTrack.mode = 'disabled';\n      }\n    }\n\n    const nextTrack = groupTracks[newId];\n    if (nextTrack) {\n      nextTrack.mode = this.subtitleDisplay ? 'showing' : 'hidden';\n    }\n  }\n\n  /**\n   * This method is responsible for validating the subtitle index and periodically reloading if live.\n   * Dispatches the SUBTITLE_TRACK_SWITCH event, which instructs the subtitle-stream-controller to load the selected track.\n   */\n  private setSubtitleTrack(\n    newId: number,\n    lastTrack: MediaPlaylist | undefined\n  ): void {\n    const tracks = this.tracksInGroup;\n\n    // setting this.subtitleTrack will trigger internal logic\n    // if media has not been attached yet, it will fail\n    // we keep a reference to the default track id\n    // and we'll set subtitleTrack when onMediaAttached is triggered\n    if (!this.media) {\n      this.queuedDefaultTrack = newId;\n      return;\n    }\n\n    if (this.trackId !== newId) {\n      this.toggleTrackModes(newId);\n    }\n\n    // exit if track id as already set or invalid\n    if (\n      (this.trackId === newId && (newId === -1 || tracks[newId]?.details)) ||\n      newId < -1 ||\n      newId >= tracks.length\n    ) {\n      return;\n    }\n\n    // stopping live reloading timer if any\n    this.clearTimer();\n\n    const track = tracks[newId];\n\n    this.log(\n      `Switching to subtitle-track ${newId}` +\n        (track\n          ? ` \"${track.name}\" lang:${track.lang} group:${track.groupId}`\n          : '')\n    );\n    this.trackId = newId;\n    if (track) {\n      const { id, groupId = '', name, type, url } = track;\n      this.hls.trigger(Events.SUBTITLE_TRACK_SWITCH, {\n        id,\n        groupId,\n        name,\n        type,\n        url,\n      });\n      const hlsUrlParameters = this.switchParams(track.url, lastTrack?.details);\n      this.loadPlaylist(hlsUrlParameters);\n    } else {\n      // switch to -1\n      this.hls.trigger(Events.SUBTITLE_TRACK_SWITCH, { id: newId });\n    }\n  }\n\n  private onTextTracksChanged(): void {\n    if (!this.useTextTrackPolling) {\n      self.clearInterval(this.subtitlePollingInterval);\n    }\n    // Media is undefined when switching streams via loadSource()\n    if (!this.media || !this.hls.config.renderTextTracksNatively) {\n      return;\n    }\n\n    let trackId: number = -1;\n    const tracks = filterSubtitleTracks(this.media.textTracks);\n    for (let id = 0; id < tracks.length; id++) {\n      if (tracks[id].mode === 'hidden') {\n        // Do not break in case there is a following track with showing.\n        trackId = id;\n      } else if (tracks[id].mode === 'showing') {\n        trackId = id;\n        break;\n      }\n    }\n\n    // Setting current subtitleTrack will invoke code.\n    if (this.subtitleTrack !== trackId) {\n      this.subtitleTrack = trackId;\n    }\n  }\n}\n\nfunction filterSubtitleTracks(textTrackList: TextTrackList): TextTrack[] {\n  const tracks: TextTrack[] = [];\n  for (let i = 0; i < textTrackList.length; i++) {\n    const track = textTrackList[i];\n    // Edge adds a track without a label; we don't want to use it\n    if (\n      (track.kind === 'subtitles' || track.kind === 'captions') &&\n      track.label\n    ) {\n      tracks.push(textTrackList[i]);\n    }\n  }\n  return tracks;\n}\n\nexport default SubtitleTrackController;\n","import OutputFilter from './output-filter';\nimport { logger } from '../utils/logger';\n\n/**\n *\n * This code was ported from the dash.js project at:\n *   https://github.com/Dash-Industry-Forum/dash.js/blob/development/externals/cea608-parser.js\n *   https://github.com/Dash-Industry-Forum/dash.js/commit/8269b26a761e0853bb21d78780ed945144ecdd4d#diff-71bc295a2d6b6b7093a1d3290d53a4b2\n *\n * The original copyright appears below:\n *\n * The copyright in this software is being made available under the BSD License,\n * included below. This software may be subject to other third party and contributor\n * rights, including patent rights, and no such rights are granted under this license.\n *\n * Copyright (c) 2015-2016, DASH Industry Forum.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification,\n * are permitted provided that the following conditions are met:\n *  1. Redistributions of source code must retain the above copyright notice, this\n *  list of conditions and the following disclaimer.\n *  * Redistributions in binary form must reproduce the above copyright notice,\n *  this list of conditions and the following disclaimer in the documentation and/or\n *  other materials provided with the distribution.\n *  2. Neither the name of Dash Industry Forum nor the names of its\n *  contributors may be used to endorse or promote products derived from this software\n *  without specific prior written permission.\n *\n *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY\n *  EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n *  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n *  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n *  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n *  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n *  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n *  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n *  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n *  POSSIBILITY OF SUCH DAMAGE.\n */\n/**\n *  Exceptions from regular ASCII. CodePoints are mapped to UTF-16 codes\n */\n\nconst specialCea608CharsCodes = {\n  0x2a: 0xe1, // lowercase a, acute accent\n  0x5c: 0xe9, // lowercase e, acute accent\n  0x5e: 0xed, // lowercase i, acute accent\n  0x5f: 0xf3, // lowercase o, acute accent\n  0x60: 0xfa, // lowercase u, acute accent\n  0x7b: 0xe7, // lowercase c with cedilla\n  0x7c: 0xf7, // division symbol\n  0x7d: 0xd1, // uppercase N tilde\n  0x7e: 0xf1, // lowercase n tilde\n  0x7f: 0x2588, // Full block\n  // THIS BLOCK INCLUDES THE 16 EXTENDED (TWO-BYTE) LINE 21 CHARACTERS\n  // THAT COME FROM HI BYTE=0x11 AND LOW BETWEEN 0x30 AND 0x3F\n  // THIS MEANS THAT \\x50 MUST BE ADDED TO THE VALUES\n  0x80: 0xae, // Registered symbol (R)\n  0x81: 0xb0, // degree sign\n  0x82: 0xbd, // 1/2 symbol\n  0x83: 0xbf, // Inverted (open) question mark\n  0x84: 0x2122, // Trademark symbol (TM)\n  0x85: 0xa2, // Cents symbol\n  0x86: 0xa3, // Pounds sterling\n  0x87: 0x266a, // Music 8'th note\n  0x88: 0xe0, // lowercase a, grave accent\n  0x89: 0x20, // transparent space (regular)\n  0x8a: 0xe8, // lowercase e, grave accent\n  0x8b: 0xe2, // lowercase a, circumflex accent\n  0x8c: 0xea, // lowercase e, circumflex accent\n  0x8d: 0xee, // lowercase i, circumflex accent\n  0x8e: 0xf4, // lowercase o, circumflex accent\n  0x8f: 0xfb, // lowercase u, circumflex accent\n  // THIS BLOCK INCLUDES THE 32 EXTENDED (TWO-BYTE) LINE 21 CHARACTERS\n  // THAT COME FROM HI BYTE=0x12 AND LOW BETWEEN 0x20 AND 0x3F\n  0x90: 0xc1, // capital letter A with acute\n  0x91: 0xc9, // capital letter E with acute\n  0x92: 0xd3, // capital letter O with acute\n  0x93: 0xda, // capital letter U with acute\n  0x94: 0xdc, // capital letter U with diaresis\n  0x95: 0xfc, // lowercase letter U with diaeresis\n  0x96: 0x2018, // opening single quote\n  0x97: 0xa1, // inverted exclamation mark\n  0x98: 0x2a, // asterisk\n  0x99: 0x2019, // closing single quote\n  0x9a: 0x2501, // box drawings heavy horizontal\n  0x9b: 0xa9, // copyright sign\n  0x9c: 0x2120, // Service mark\n  0x9d: 0x2022, // (round) bullet\n  0x9e: 0x201c, // Left double quotation mark\n  0x9f: 0x201d, // Right double quotation mark\n  0xa0: 0xc0, // uppercase A, grave accent\n  0xa1: 0xc2, // uppercase A, circumflex\n  0xa2: 0xc7, // uppercase C with cedilla\n  0xa3: 0xc8, // uppercase E, grave accent\n  0xa4: 0xca, // uppercase E, circumflex\n  0xa5: 0xcb, // capital letter E with diaresis\n  0xa6: 0xeb, // lowercase letter e with diaresis\n  0xa7: 0xce, // uppercase I, circumflex\n  0xa8: 0xcf, // uppercase I, with diaresis\n  0xa9: 0xef, // lowercase i, with diaresis\n  0xaa: 0xd4, // uppercase O, circumflex\n  0xab: 0xd9, // uppercase U, grave accent\n  0xac: 0xf9, // lowercase u, grave accent\n  0xad: 0xdb, // uppercase U, circumflex\n  0xae: 0xab, // left-pointing double angle quotation mark\n  0xaf: 0xbb, // right-pointing double angle quotation mark\n  // THIS BLOCK INCLUDES THE 32 EXTENDED (TWO-BYTE) LINE 21 CHARACTERS\n  // THAT COME FROM HI BYTE=0x13 AND LOW BETWEEN 0x20 AND 0x3F\n  0xb0: 0xc3, // Uppercase A, tilde\n  0xb1: 0xe3, // Lowercase a, tilde\n  0xb2: 0xcd, // Uppercase I, acute accent\n  0xb3: 0xcc, // Uppercase I, grave accent\n  0xb4: 0xec, // Lowercase i, grave accent\n  0xb5: 0xd2, // Uppercase O, grave accent\n  0xb6: 0xf2, // Lowercase o, grave accent\n  0xb7: 0xd5, // Uppercase O, tilde\n  0xb8: 0xf5, // Lowercase o, tilde\n  0xb9: 0x7b, // Open curly brace\n  0xba: 0x7d, // Closing curly brace\n  0xbb: 0x5c, // Backslash\n  0xbc: 0x5e, // Caret\n  0xbd: 0x5f, // Underscore\n  0xbe: 0x7c, // Pipe (vertical line)\n  0xbf: 0x223c, // Tilde operator\n  0xc0: 0xc4, // Uppercase A, umlaut\n  0xc1: 0xe4, // Lowercase A, umlaut\n  0xc2: 0xd6, // Uppercase O, umlaut\n  0xc3: 0xf6, // Lowercase o, umlaut\n  0xc4: 0xdf, // Esszett (sharp S)\n  0xc5: 0xa5, // Yen symbol\n  0xc6: 0xa4, // Generic currency sign\n  0xc7: 0x2503, // Box drawings heavy vertical\n  0xc8: 0xc5, // Uppercase A, ring\n  0xc9: 0xe5, // Lowercase A, ring\n  0xca: 0xd8, // Uppercase O, stroke\n  0xcb: 0xf8, // Lowercase o, strok\n  0xcc: 0x250f, // Box drawings heavy down and right\n  0xcd: 0x2513, // Box drawings heavy down and left\n  0xce: 0x2517, // Box drawings heavy up and right\n  0xcf: 0x251b, // Box drawings heavy up and left\n};\n\n/**\n * Utils\n */\nconst getCharForByte = function (byte: number) {\n  let charCode = byte;\n  if (specialCea608CharsCodes.hasOwnProperty(byte)) {\n    charCode = specialCea608CharsCodes[byte];\n  }\n\n  return String.fromCharCode(charCode);\n};\n\nconst NR_ROWS = 15;\nconst NR_COLS = 100;\n// Tables to look up row from PAC data\nconst rowsLowCh1 = {\n  0x11: 1,\n  0x12: 3,\n  0x15: 5,\n  0x16: 7,\n  0x17: 9,\n  0x10: 11,\n  0x13: 12,\n  0x14: 14,\n};\nconst rowsHighCh1 = {\n  0x11: 2,\n  0x12: 4,\n  0x15: 6,\n  0x16: 8,\n  0x17: 10,\n  0x13: 13,\n  0x14: 15,\n};\nconst rowsLowCh2 = {\n  0x19: 1,\n  0x1a: 3,\n  0x1d: 5,\n  0x1e: 7,\n  0x1f: 9,\n  0x18: 11,\n  0x1b: 12,\n  0x1c: 14,\n};\nconst rowsHighCh2 = {\n  0x19: 2,\n  0x1a: 4,\n  0x1d: 6,\n  0x1e: 8,\n  0x1f: 10,\n  0x1b: 13,\n  0x1c: 15,\n};\n\nconst backgroundColors = [\n  'white',\n  'green',\n  'blue',\n  'cyan',\n  'red',\n  'yellow',\n  'magenta',\n  'black',\n  'transparent',\n];\n\nconst enum VerboseLevel {\n  ERROR = 0,\n  TEXT = 1,\n  WARNING = 2,\n  INFO = 2,\n  DEBUG = 3,\n  DATA = 3,\n}\n\nclass CaptionsLogger {\n  public time: number | null = null;\n  public verboseLevel: VerboseLevel = VerboseLevel.ERROR;\n\n  log(severity: VerboseLevel, msg: string | (() => string)): void {\n    if (this.verboseLevel >= severity) {\n      const m: string = typeof msg === 'function' ? msg() : msg;\n      logger.log(`${this.time} [${severity}] ${m}`);\n    }\n  }\n}\n\nconst numArrayToHexArray = function (numArray: number[]): string[] {\n  const hexArray: string[] = [];\n  for (let j = 0; j < numArray.length; j++) {\n    hexArray.push(numArray[j].toString(16));\n  }\n\n  return hexArray;\n};\n\ntype PenStyles = {\n  foreground: string | null;\n  underline: boolean;\n  italics: boolean;\n  background: string;\n  flash: boolean;\n};\n\nclass PenState {\n  public foreground: string;\n  public underline: boolean;\n  public italics: boolean;\n  public background: string;\n  public flash: boolean;\n\n  constructor(\n    foreground?: string,\n    underline?: boolean,\n    italics?: boolean,\n    background?: string,\n    flash?: boolean\n  ) {\n    this.foreground = foreground || 'white';\n    this.underline = underline || false;\n    this.italics = italics || false;\n    this.background = background || 'black';\n    this.flash = flash || false;\n  }\n\n  reset() {\n    this.foreground = 'white';\n    this.underline = false;\n    this.italics = false;\n    this.background = 'black';\n    this.flash = false;\n  }\n\n  setStyles(styles: Partial<PenStyles>) {\n    const attribs = [\n      'foreground',\n      'underline',\n      'italics',\n      'background',\n      'flash',\n    ];\n    for (let i = 0; i < attribs.length; i++) {\n      const style = attribs[i];\n      if (styles.hasOwnProperty(style)) {\n        this[style] = styles[style];\n      }\n    }\n  }\n\n  isDefault() {\n    return (\n      this.foreground === 'white' &&\n      !this.underline &&\n      !this.italics &&\n      this.background === 'black' &&\n      !this.flash\n    );\n  }\n\n  equals(other: PenState) {\n    return (\n      this.foreground === other.foreground &&\n      this.underline === other.underline &&\n      this.italics === other.italics &&\n      this.background === other.background &&\n      this.flash === other.flash\n    );\n  }\n\n  copy(newPenState: PenState) {\n    this.foreground = newPenState.foreground;\n    this.underline = newPenState.underline;\n    this.italics = newPenState.italics;\n    this.background = newPenState.background;\n    this.flash = newPenState.flash;\n  }\n\n  toString(): string {\n    return (\n      'color=' +\n      this.foreground +\n      ', underline=' +\n      this.underline +\n      ', italics=' +\n      this.italics +\n      ', background=' +\n      this.background +\n      ', flash=' +\n      this.flash\n    );\n  }\n}\n\n/**\n * Unicode character with styling and background.\n * @constructor\n */\nclass StyledUnicodeChar {\n  uchar: string;\n  penState: PenState;\n\n  constructor(\n    uchar?: string,\n    foreground?: string,\n    underline?: boolean,\n    italics?: boolean,\n    background?: string,\n    flash?: boolean\n  ) {\n    this.uchar = uchar || ' '; // unicode character\n    this.penState = new PenState(\n      foreground,\n      underline,\n      italics,\n      background,\n      flash\n    );\n  }\n\n  reset() {\n    this.uchar = ' ';\n    this.penState.reset();\n  }\n\n  setChar(uchar: string, newPenState: PenState) {\n    this.uchar = uchar;\n    this.penState.copy(newPenState);\n  }\n\n  setPenState(newPenState: PenState) {\n    this.penState.copy(newPenState);\n  }\n\n  equals(other: StyledUnicodeChar) {\n    return this.uchar === other.uchar && this.penState.equals(other.penState);\n  }\n\n  copy(newChar: StyledUnicodeChar) {\n    this.uchar = newChar.uchar;\n    this.penState.copy(newChar.penState);\n  }\n\n  isEmpty(): boolean {\n    return this.uchar === ' ' && this.penState.isDefault();\n  }\n}\n\n/**\n * CEA-608 row consisting of NR_COLS instances of StyledUnicodeChar.\n * @constructor\n */\nexport class Row {\n  public chars: StyledUnicodeChar[];\n  public pos: number;\n  public currPenState: PenState;\n  public cueStartTime?: number;\n  logger: CaptionsLogger;\n\n  constructor(logger: CaptionsLogger) {\n    this.chars = [];\n    for (let i = 0; i < NR_COLS; i++) {\n      this.chars.push(new StyledUnicodeChar());\n    }\n\n    this.logger = logger;\n    this.pos = 0;\n    this.currPenState = new PenState();\n  }\n\n  equals(other: Row) {\n    let equal = true;\n    for (let i = 0; i < NR_COLS; i++) {\n      if (!this.chars[i].equals(other.chars[i])) {\n        equal = false;\n        break;\n      }\n    }\n    return equal;\n  }\n\n  copy(other: Row) {\n    for (let i = 0; i < NR_COLS; i++) {\n      this.chars[i].copy(other.chars[i]);\n    }\n  }\n\n  isEmpty(): boolean {\n    let empty = true;\n    for (let i = 0; i < NR_COLS; i++) {\n      if (!this.chars[i].isEmpty()) {\n        empty = false;\n        break;\n      }\n    }\n    return empty;\n  }\n\n  /**\n   *  Set the cursor to a valid column.\n   */\n  setCursor(absPos: number) {\n    if (this.pos !== absPos) {\n      this.pos = absPos;\n    }\n\n    if (this.pos < 0) {\n      this.logger.log(\n        VerboseLevel.DEBUG,\n        'Negative cursor position ' + this.pos\n      );\n      this.pos = 0;\n    } else if (this.pos > NR_COLS) {\n      this.logger.log(\n        VerboseLevel.DEBUG,\n        'Too large cursor position ' + this.pos\n      );\n      this.pos = NR_COLS;\n    }\n  }\n\n  /**\n   * Move the cursor relative to current position.\n   */\n  moveCursor(relPos: number) {\n    const newPos = this.pos + relPos;\n    if (relPos > 1) {\n      for (let i = this.pos + 1; i < newPos + 1; i++) {\n        this.chars[i].setPenState(this.currPenState);\n      }\n    }\n    this.setCursor(newPos);\n  }\n\n  /**\n   * Backspace, move one step back and clear character.\n   */\n  backSpace() {\n    this.moveCursor(-1);\n    this.chars[this.pos].setChar(' ', this.currPenState);\n  }\n\n  insertChar(byte: number) {\n    if (byte >= 0x90) {\n      // Extended char\n      this.backSpace();\n    }\n    const char = getCharForByte(byte);\n    if (this.pos >= NR_COLS) {\n      this.logger.log(\n        VerboseLevel.ERROR,\n        () =>\n          'Cannot insert ' +\n          byte.toString(16) +\n          ' (' +\n          char +\n          ') at position ' +\n          this.pos +\n          '. Skipping it!'\n      );\n      return;\n    }\n    this.chars[this.pos].setChar(char, this.currPenState);\n    this.moveCursor(1);\n  }\n\n  clearFromPos(startPos: number) {\n    let i: number;\n    for (i = startPos; i < NR_COLS; i++) {\n      this.chars[i].reset();\n    }\n  }\n\n  clear() {\n    this.clearFromPos(0);\n    this.pos = 0;\n    this.currPenState.reset();\n  }\n\n  clearToEndOfRow() {\n    this.clearFromPos(this.pos);\n  }\n\n  getTextString() {\n    const chars: string[] = [];\n    let empty = true;\n    for (let i = 0; i < NR_COLS; i++) {\n      const char = this.chars[i].uchar;\n      if (char !== ' ') {\n        empty = false;\n      }\n\n      chars.push(char);\n    }\n    if (empty) {\n      return '';\n    } else {\n      return chars.join('');\n    }\n  }\n\n  setPenStyles(styles: Partial<PenStyles>) {\n    this.currPenState.setStyles(styles);\n    const currChar = this.chars[this.pos];\n    currChar.setPenState(this.currPenState);\n  }\n}\n\n/**\n * Keep a CEA-608 screen of 32x15 styled characters\n * @constructor\n */\nexport class CaptionScreen {\n  rows: Row[];\n  currRow: number;\n  nrRollUpRows: number | null;\n  lastOutputScreen: CaptionScreen | null;\n  logger: CaptionsLogger;\n\n  constructor(logger: CaptionsLogger) {\n    this.rows = [];\n    for (let i = 0; i < NR_ROWS; i++) {\n      this.rows.push(new Row(logger));\n    } // Note that we use zero-based numbering (0-14)\n\n    this.logger = logger;\n    this.currRow = NR_ROWS - 1;\n    this.nrRollUpRows = null;\n    this.lastOutputScreen = null;\n    this.reset();\n  }\n\n  reset() {\n    for (let i = 0; i < NR_ROWS; i++) {\n      this.rows[i].clear();\n    }\n\n    this.currRow = NR_ROWS - 1;\n  }\n\n  equals(other: CaptionScreen): boolean {\n    let equal = true;\n    for (let i = 0; i < NR_ROWS; i++) {\n      if (!this.rows[i].equals(other.rows[i])) {\n        equal = false;\n        break;\n      }\n    }\n    return equal;\n  }\n\n  copy(other: CaptionScreen) {\n    for (let i = 0; i < NR_ROWS; i++) {\n      this.rows[i].copy(other.rows[i]);\n    }\n  }\n\n  isEmpty(): boolean {\n    let empty = true;\n    for (let i = 0; i < NR_ROWS; i++) {\n      if (!this.rows[i].isEmpty()) {\n        empty = false;\n        break;\n      }\n    }\n    return empty;\n  }\n\n  backSpace() {\n    const row = this.rows[this.currRow];\n    row.backSpace();\n  }\n\n  clearToEndOfRow() {\n    const row = this.rows[this.currRow];\n    row.clearToEndOfRow();\n  }\n\n  /**\n   * Insert a character (without styling) in the current row.\n   */\n  insertChar(char: number) {\n    const row = this.rows[this.currRow];\n    row.insertChar(char);\n  }\n\n  setPen(styles: Partial<PenStyles>) {\n    const row = this.rows[this.currRow];\n    row.setPenStyles(styles);\n  }\n\n  moveCursor(relPos: number) {\n    const row = this.rows[this.currRow];\n    row.moveCursor(relPos);\n  }\n\n  setCursor(absPos: number) {\n    this.logger.log(VerboseLevel.INFO, 'setCursor: ' + absPos);\n    const row = this.rows[this.currRow];\n    row.setCursor(absPos);\n  }\n\n  setPAC(pacData: PACData) {\n    this.logger.log(\n      VerboseLevel.INFO,\n      () => 'pacData = ' + JSON.stringify(pacData)\n    );\n    let newRow = pacData.row - 1;\n    if (this.nrRollUpRows && newRow < this.nrRollUpRows - 1) {\n      newRow = this.nrRollUpRows - 1;\n    }\n\n    // Make sure this only affects Roll-up Captions by checking this.nrRollUpRows\n    if (this.nrRollUpRows && this.currRow !== newRow) {\n      // clear all rows first\n      for (let i = 0; i < NR_ROWS; i++) {\n        this.rows[i].clear();\n      }\n\n      // Copy this.nrRollUpRows rows from lastOutputScreen and place it in the newRow location\n      // topRowIndex - the start of rows to copy (inclusive index)\n      const topRowIndex = this.currRow + 1 - this.nrRollUpRows;\n      // We only copy if the last position was already shown.\n      // We use the cueStartTime value to check this.\n      const lastOutputScreen = this.lastOutputScreen;\n      if (lastOutputScreen) {\n        const prevLineTime = lastOutputScreen.rows[topRowIndex].cueStartTime;\n        const time = this.logger.time;\n        if (prevLineTime && time !== null && prevLineTime < time) {\n          for (let i = 0; i < this.nrRollUpRows; i++) {\n            this.rows[newRow - this.nrRollUpRows + i + 1].copy(\n              lastOutputScreen.rows[topRowIndex + i]\n            );\n          }\n        }\n      }\n    }\n\n    this.currRow = newRow;\n    const row = this.rows[this.currRow];\n    if (pacData.indent !== null) {\n      const indent = pacData.indent;\n      const prevPos = Math.max(indent - 1, 0);\n      row.setCursor(pacData.indent);\n      pacData.color = row.chars[prevPos].penState.foreground;\n    }\n    const styles: PenStyles = {\n      foreground: pacData.color,\n      underline: pacData.underline,\n      italics: pacData.italics,\n      background: 'black',\n      flash: false,\n    };\n    this.setPen(styles);\n  }\n\n  /**\n   * Set background/extra foreground, but first do back_space, and then insert space (backwards compatibility).\n   */\n  setBkgData(bkgData: Partial<PenStyles>) {\n    this.logger.log(\n      VerboseLevel.INFO,\n      () => 'bkgData = ' + JSON.stringify(bkgData)\n    );\n    this.backSpace();\n    this.setPen(bkgData);\n    this.insertChar(0x20); // Space\n  }\n\n  setRollUpRows(nrRows: number | null) {\n    this.nrRollUpRows = nrRows;\n  }\n\n  rollUp() {\n    if (this.nrRollUpRows === null) {\n      this.logger.log(\n        VerboseLevel.DEBUG,\n        'roll_up but nrRollUpRows not set yet'\n      );\n      return; // Not properly setup\n    }\n    this.logger.log(VerboseLevel.TEXT, () => this.getDisplayText());\n    const topRowIndex = this.currRow + 1 - this.nrRollUpRows;\n    const topRow = this.rows.splice(topRowIndex, 1)[0];\n    topRow.clear();\n    this.rows.splice(this.currRow, 0, topRow);\n    this.logger.log(VerboseLevel.INFO, 'Rolling up');\n    // this.logger.log(VerboseLevel.TEXT, this.get_display_text())\n  }\n\n  /**\n   * Get all non-empty rows with as unicode text.\n   */\n  getDisplayText(asOneRow?: boolean) {\n    asOneRow = asOneRow || false;\n    const displayText: string[] = [];\n    let text = '';\n    let rowNr = -1;\n    for (let i = 0; i < NR_ROWS; i++) {\n      const rowText = this.rows[i].getTextString();\n      if (rowText) {\n        rowNr = i + 1;\n        if (asOneRow) {\n          displayText.push('Row ' + rowNr + \": '\" + rowText + \"'\");\n        } else {\n          displayText.push(rowText.trim());\n        }\n      }\n    }\n    if (displayText.length > 0) {\n      if (asOneRow) {\n        text = '[' + displayText.join(' | ') + ']';\n      } else {\n        text = displayText.join('\\n');\n      }\n    }\n    return text;\n  }\n\n  getTextAndFormat() {\n    return this.rows;\n  }\n}\n\n// var modes = ['MODE_ROLL-UP', 'MODE_POP-ON', 'MODE_PAINT-ON', 'MODE_TEXT'];\n\ntype CaptionModes =\n  | 'MODE_ROLL-UP'\n  | 'MODE_POP-ON'\n  | 'MODE_PAINT-ON'\n  | 'MODE_TEXT'\n  | null;\n\nclass Cea608Channel {\n  chNr: number;\n  outputFilter: OutputFilter;\n  mode: CaptionModes;\n  verbose: number;\n  displayedMemory: CaptionScreen;\n  nonDisplayedMemory: CaptionScreen;\n  lastOutputScreen: CaptionScreen;\n  currRollUpRow: Row;\n  writeScreen: CaptionScreen;\n  cueStartTime: number | null;\n  logger: CaptionsLogger;\n\n  constructor(\n    channelNumber: number,\n    outputFilter: OutputFilter,\n    logger: CaptionsLogger\n  ) {\n    this.chNr = channelNumber;\n    this.outputFilter = outputFilter;\n    this.mode = null;\n    this.verbose = 0;\n    this.displayedMemory = new CaptionScreen(logger);\n    this.nonDisplayedMemory = new CaptionScreen(logger);\n    this.lastOutputScreen = new CaptionScreen(logger);\n    this.currRollUpRow = this.displayedMemory.rows[NR_ROWS - 1];\n    this.writeScreen = this.displayedMemory;\n    this.mode = null;\n    this.cueStartTime = null; // Keeps track of where a cue started.\n    this.logger = logger;\n  }\n\n  reset() {\n    this.mode = null;\n    this.displayedMemory.reset();\n    this.nonDisplayedMemory.reset();\n    this.lastOutputScreen.reset();\n    this.outputFilter.reset();\n    this.currRollUpRow = this.displayedMemory.rows[NR_ROWS - 1];\n    this.writeScreen = this.displayedMemory;\n    this.mode = null;\n    this.cueStartTime = null;\n  }\n\n  getHandler(): OutputFilter {\n    return this.outputFilter;\n  }\n\n  setHandler(newHandler: OutputFilter) {\n    this.outputFilter = newHandler;\n  }\n\n  setPAC(pacData: PACData) {\n    this.writeScreen.setPAC(pacData);\n  }\n\n  setBkgData(bkgData: Partial<PenStyles>) {\n    this.writeScreen.setBkgData(bkgData);\n  }\n\n  setMode(newMode: CaptionModes) {\n    if (newMode === this.mode) {\n      return;\n    }\n\n    this.mode = newMode;\n    this.logger.log(VerboseLevel.INFO, () => 'MODE=' + newMode);\n    if (this.mode === 'MODE_POP-ON') {\n      this.writeScreen = this.nonDisplayedMemory;\n    } else {\n      this.writeScreen = this.displayedMemory;\n      this.writeScreen.reset();\n    }\n    if (this.mode !== 'MODE_ROLL-UP') {\n      this.displayedMemory.nrRollUpRows = null;\n      this.nonDisplayedMemory.nrRollUpRows = null;\n    }\n    this.mode = newMode;\n  }\n\n  insertChars(chars: number[]) {\n    for (let i = 0; i < chars.length; i++) {\n      this.writeScreen.insertChar(chars[i]);\n    }\n\n    const screen =\n      this.writeScreen === this.displayedMemory ? 'DISP' : 'NON_DISP';\n    this.logger.log(\n      VerboseLevel.INFO,\n      () => screen + ': ' + this.writeScreen.getDisplayText(true)\n    );\n    if (this.mode === 'MODE_PAINT-ON' || this.mode === 'MODE_ROLL-UP') {\n      this.logger.log(\n        VerboseLevel.TEXT,\n        () => 'DISPLAYED: ' + this.displayedMemory.getDisplayText(true)\n      );\n      this.outputDataUpdate();\n    }\n  }\n\n  ccRCL() {\n    // Resume Caption Loading (switch mode to Pop On)\n    this.logger.log(VerboseLevel.INFO, 'RCL - Resume Caption Loading');\n    this.setMode('MODE_POP-ON');\n  }\n\n  ccBS() {\n    // BackSpace\n    this.logger.log(VerboseLevel.INFO, 'BS - BackSpace');\n    if (this.mode === 'MODE_TEXT') {\n      return;\n    }\n\n    this.writeScreen.backSpace();\n    if (this.writeScreen === this.displayedMemory) {\n      this.outputDataUpdate();\n    }\n  }\n\n  ccAOF() {\n    // Reserved (formerly Alarm Off)\n  }\n\n  ccAON() {\n    // Reserved (formerly Alarm On)\n  }\n\n  ccDER() {\n    // Delete to End of Row\n    this.logger.log(VerboseLevel.INFO, 'DER- Delete to End of Row');\n    this.writeScreen.clearToEndOfRow();\n    this.outputDataUpdate();\n  }\n\n  ccRU(nrRows: number | null) {\n    // Roll-Up Captions-2,3,or 4 Rows\n    this.logger.log(VerboseLevel.INFO, 'RU(' + nrRows + ') - Roll Up');\n    this.writeScreen = this.displayedMemory;\n    this.setMode('MODE_ROLL-UP');\n    this.writeScreen.setRollUpRows(nrRows);\n  }\n\n  ccFON() {\n    // Flash On\n    this.logger.log(VerboseLevel.INFO, 'FON - Flash On');\n    this.writeScreen.setPen({ flash: true });\n  }\n\n  ccRDC() {\n    // Resume Direct Captioning (switch mode to PaintOn)\n    this.logger.log(VerboseLevel.INFO, 'RDC - Resume Direct Captioning');\n    this.setMode('MODE_PAINT-ON');\n  }\n\n  ccTR() {\n    // Text Restart in text mode (not supported, however)\n    this.logger.log(VerboseLevel.INFO, 'TR');\n    this.setMode('MODE_TEXT');\n  }\n\n  ccRTD() {\n    // Resume Text Display in Text mode (not supported, however)\n    this.logger.log(VerboseLevel.INFO, 'RTD');\n    this.setMode('MODE_TEXT');\n  }\n\n  ccEDM() {\n    // Erase Displayed Memory\n    this.logger.log(VerboseLevel.INFO, 'EDM - Erase Displayed Memory');\n    this.displayedMemory.reset();\n    this.outputDataUpdate(true);\n  }\n\n  ccCR() {\n    // Carriage Return\n    this.logger.log(VerboseLevel.INFO, 'CR - Carriage Return');\n    this.writeScreen.rollUp();\n    this.outputDataUpdate(true);\n  }\n\n  ccENM() {\n    // Erase Non-Displayed Memory\n    this.logger.log(VerboseLevel.INFO, 'ENM - Erase Non-displayed Memory');\n    this.nonDisplayedMemory.reset();\n  }\n\n  ccEOC() {\n    // End of Caption (Flip Memories)\n    this.logger.log(VerboseLevel.INFO, 'EOC - End Of Caption');\n    if (this.mode === 'MODE_POP-ON') {\n      const tmp = this.displayedMemory;\n      this.displayedMemory = this.nonDisplayedMemory;\n      this.nonDisplayedMemory = tmp;\n      this.writeScreen = this.nonDisplayedMemory;\n      this.logger.log(\n        VerboseLevel.TEXT,\n        () => 'DISP: ' + this.displayedMemory.getDisplayText()\n      );\n    }\n    this.outputDataUpdate(true);\n  }\n\n  ccTO(nrCols: number) {\n    // Tab Offset 1,2, or 3 columns\n    this.logger.log(VerboseLevel.INFO, 'TO(' + nrCols + ') - Tab Offset');\n    this.writeScreen.moveCursor(nrCols);\n  }\n\n  ccMIDROW(secondByte: number) {\n    // Parse MIDROW command\n    const styles: Partial<PenStyles> = { flash: false };\n    styles.underline = secondByte % 2 === 1;\n    styles.italics = secondByte >= 0x2e;\n    if (!styles.italics) {\n      const colorIndex = Math.floor(secondByte / 2) - 0x10;\n      const colors = [\n        'white',\n        'green',\n        'blue',\n        'cyan',\n        'red',\n        'yellow',\n        'magenta',\n      ];\n      styles.foreground = colors[colorIndex];\n    } else {\n      styles.foreground = 'white';\n    }\n    this.logger.log(VerboseLevel.INFO, 'MIDROW: ' + JSON.stringify(styles));\n    this.writeScreen.setPen(styles);\n  }\n\n  outputDataUpdate(dispatch: boolean = false) {\n    const time = this.logger.time;\n    if (time === null) {\n      return;\n    }\n\n    if (this.outputFilter) {\n      if (this.cueStartTime === null && !this.displayedMemory.isEmpty()) {\n        // Start of a new cue\n        this.cueStartTime = time;\n      } else {\n        if (!this.displayedMemory.equals(this.lastOutputScreen)) {\n          this.outputFilter.newCue(\n            this.cueStartTime!,\n            time,\n            this.lastOutputScreen\n          );\n          if (dispatch && this.outputFilter.dispatchCue) {\n            this.outputFilter.dispatchCue();\n          }\n\n          this.cueStartTime = this.displayedMemory.isEmpty() ? null : time;\n        }\n      }\n      this.lastOutputScreen.copy(this.displayedMemory);\n    }\n  }\n\n  cueSplitAtTime(t: number) {\n    if (this.outputFilter) {\n      if (!this.displayedMemory.isEmpty()) {\n        if (this.outputFilter.newCue) {\n          this.outputFilter.newCue(this.cueStartTime!, t, this.displayedMemory);\n        }\n\n        this.cueStartTime = t;\n      }\n    }\n  }\n}\n\ninterface PACData {\n  row: number;\n  indent: number | null;\n  color: string | null;\n  underline: boolean;\n  italics: boolean;\n}\n\ntype SupportedField = 1 | 3;\n\ntype Channels = 0 | 1 | 2; // Will be 1 or 2 when parsing captions\n\ntype CmdHistory = {\n  a: number | null;\n  b: number | null;\n};\n\nclass Cea608Parser {\n  channels: Array<Cea608Channel | null>;\n  currentChannel: Channels = 0;\n  cmdHistory: CmdHistory;\n  logger: CaptionsLogger;\n\n  constructor(field: SupportedField, out1: OutputFilter, out2: OutputFilter) {\n    const logger = new CaptionsLogger();\n    this.channels = [\n      null,\n      new Cea608Channel(field, out1, logger),\n      new Cea608Channel(field + 1, out2, logger),\n    ];\n    this.cmdHistory = createCmdHistory();\n    this.logger = logger;\n  }\n\n  getHandler(channel: number) {\n    return (this.channels[channel] as Cea608Channel).getHandler();\n  }\n\n  setHandler(channel: number, newHandler: OutputFilter) {\n    (this.channels[channel] as Cea608Channel).setHandler(newHandler);\n  }\n\n  /**\n   * Add data for time t in forms of list of bytes (unsigned ints). The bytes are treated as pairs.\n   */\n  addData(time: number | null, byteList: number[]) {\n    let cmdFound: boolean;\n    let a: number;\n    let b: number;\n    let charsFound: number[] | boolean | null = false;\n\n    this.logger.time = time;\n\n    for (let i = 0; i < byteList.length; i += 2) {\n      a = byteList[i] & 0x7f;\n      b = byteList[i + 1] & 0x7f;\n      if (a === 0 && b === 0) {\n        continue;\n      } else {\n        this.logger.log(\n          VerboseLevel.DATA,\n          '[' +\n            numArrayToHexArray([byteList[i], byteList[i + 1]]) +\n            '] -> (' +\n            numArrayToHexArray([a, b]) +\n            ')'\n        );\n      }\n\n      cmdFound = this.parseCmd(a, b);\n\n      if (!cmdFound) {\n        cmdFound = this.parseMidrow(a, b);\n      }\n\n      if (!cmdFound) {\n        cmdFound = this.parsePAC(a, b);\n      }\n\n      if (!cmdFound) {\n        cmdFound = this.parseBackgroundAttributes(a, b);\n      }\n\n      if (!cmdFound) {\n        charsFound = this.parseChars(a, b);\n        if (charsFound) {\n          const currChNr = this.currentChannel;\n          if (currChNr && currChNr > 0) {\n            const channel = this.channels[currChNr] as Cea608Channel;\n            channel.insertChars(charsFound);\n          } else {\n            this.logger.log(\n              VerboseLevel.WARNING,\n              'No channel found yet. TEXT-MODE?'\n            );\n          }\n        }\n      }\n      if (!cmdFound && !charsFound) {\n        this.logger.log(\n          VerboseLevel.WARNING,\n          \"Couldn't parse cleaned data \" +\n            numArrayToHexArray([a, b]) +\n            ' orig: ' +\n            numArrayToHexArray([byteList[i], byteList[i + 1]])\n        );\n      }\n    }\n  }\n\n  /**\n   * Parse Command.\n   * @returns True if a command was found\n   */\n  parseCmd(a: number, b: number): boolean {\n    const { cmdHistory } = this;\n    const cond1 =\n      (a === 0x14 || a === 0x1c || a === 0x15 || a === 0x1d) &&\n      b >= 0x20 &&\n      b <= 0x2f;\n    const cond2 = (a === 0x17 || a === 0x1f) && b >= 0x21 && b <= 0x23;\n    if (!(cond1 || cond2)) {\n      return false;\n    }\n\n    if (hasCmdRepeated(a, b, cmdHistory)) {\n      setLastCmd(null, null, cmdHistory);\n      this.logger.log(\n        VerboseLevel.DEBUG,\n        'Repeated command (' + numArrayToHexArray([a, b]) + ') is dropped'\n      );\n      return true;\n    }\n\n    const chNr = a === 0x14 || a === 0x15 || a === 0x17 ? 1 : 2;\n    const channel = this.channels[chNr] as Cea608Channel;\n\n    if (a === 0x14 || a === 0x15 || a === 0x1c || a === 0x1d) {\n      if (b === 0x20) {\n        channel.ccRCL();\n      } else if (b === 0x21) {\n        channel.ccBS();\n      } else if (b === 0x22) {\n        channel.ccAOF();\n      } else if (b === 0x23) {\n        channel.ccAON();\n      } else if (b === 0x24) {\n        channel.ccDER();\n      } else if (b === 0x25) {\n        channel.ccRU(2);\n      } else if (b === 0x26) {\n        channel.ccRU(3);\n      } else if (b === 0x27) {\n        channel.ccRU(4);\n      } else if (b === 0x28) {\n        channel.ccFON();\n      } else if (b === 0x29) {\n        channel.ccRDC();\n      } else if (b === 0x2a) {\n        channel.ccTR();\n      } else if (b === 0x2b) {\n        channel.ccRTD();\n      } else if (b === 0x2c) {\n        channel.ccEDM();\n      } else if (b === 0x2d) {\n        channel.ccCR();\n      } else if (b === 0x2e) {\n        channel.ccENM();\n      } else if (b === 0x2f) {\n        channel.ccEOC();\n      }\n    } else {\n      // a == 0x17 || a == 0x1F\n      channel.ccTO(b - 0x20);\n    }\n    setLastCmd(a, b, cmdHistory);\n    this.currentChannel = chNr;\n    return true;\n  }\n\n  /**\n   * Parse midrow styling command\n   */\n  parseMidrow(a: number, b: number): boolean {\n    let chNr: number = 0;\n\n    if ((a === 0x11 || a === 0x19) && b >= 0x20 && b <= 0x2f) {\n      if (a === 0x11) {\n        chNr = 1;\n      } else {\n        chNr = 2;\n      }\n\n      if (chNr !== this.currentChannel) {\n        this.logger.log(\n          VerboseLevel.ERROR,\n          'Mismatch channel in midrow parsing'\n        );\n        return false;\n      }\n      const channel = this.channels[chNr];\n      if (!channel) {\n        return false;\n      }\n      channel.ccMIDROW(b);\n      this.logger.log(\n        VerboseLevel.DEBUG,\n        'MIDROW (' + numArrayToHexArray([a, b]) + ')'\n      );\n      return true;\n    }\n    return false;\n  }\n\n  /**\n   * Parse Preable Access Codes (Table 53).\n   * @returns {Boolean} Tells if PAC found\n   */\n  parsePAC(a: number, b: number): boolean {\n    let row: number;\n    const cmdHistory = this.cmdHistory;\n\n    const case1 =\n      ((a >= 0x11 && a <= 0x17) || (a >= 0x19 && a <= 0x1f)) &&\n      b >= 0x40 &&\n      b <= 0x7f;\n    const case2 = (a === 0x10 || a === 0x18) && b >= 0x40 && b <= 0x5f;\n    if (!(case1 || case2)) {\n      return false;\n    }\n\n    if (hasCmdRepeated(a, b, cmdHistory)) {\n      setLastCmd(null, null, cmdHistory);\n      return true; // Repeated commands are dropped (once)\n    }\n\n    const chNr: Channels = a <= 0x17 ? 1 : 2;\n\n    if (b >= 0x40 && b <= 0x5f) {\n      row = chNr === 1 ? rowsLowCh1[a] : rowsLowCh2[a];\n    } else {\n      // 0x60 <= b <= 0x7F\n      row = chNr === 1 ? rowsHighCh1[a] : rowsHighCh2[a];\n    }\n    const channel = this.channels[chNr];\n    if (!channel) {\n      return false;\n    }\n    channel.setPAC(this.interpretPAC(row, b));\n    setLastCmd(a, b, cmdHistory);\n    this.currentChannel = chNr;\n    return true;\n  }\n\n  /**\n   * Interpret the second byte of the pac, and return the information.\n   * @returns pacData with style parameters\n   */\n  interpretPAC(row: number, byte: number): PACData {\n    let pacIndex;\n    const pacData: PACData = {\n      color: null,\n      italics: false,\n      indent: null,\n      underline: false,\n      row: row,\n    };\n\n    if (byte > 0x5f) {\n      pacIndex = byte - 0x60;\n    } else {\n      pacIndex = byte - 0x40;\n    }\n\n    pacData.underline = (pacIndex & 1) === 1;\n    if (pacIndex <= 0xd) {\n      pacData.color = [\n        'white',\n        'green',\n        'blue',\n        'cyan',\n        'red',\n        'yellow',\n        'magenta',\n        'white',\n      ][Math.floor(pacIndex / 2)];\n    } else if (pacIndex <= 0xf) {\n      pacData.italics = true;\n      pacData.color = 'white';\n    } else {\n      pacData.indent = Math.floor((pacIndex - 0x10) / 2) * 4;\n    }\n    return pacData; // Note that row has zero offset. The spec uses 1.\n  }\n\n  /**\n   * Parse characters.\n   * @returns An array with 1 to 2 codes corresponding to chars, if found. null otherwise.\n   */\n  parseChars(a: number, b: number): number[] | null {\n    let channelNr: Channels;\n    let charCodes: number[] | null = null;\n    let charCode1: number | null = null;\n\n    if (a >= 0x19) {\n      channelNr = 2;\n      charCode1 = a - 8;\n    } else {\n      channelNr = 1;\n      charCode1 = a;\n    }\n    if (charCode1 >= 0x11 && charCode1 <= 0x13) {\n      // Special character\n      let oneCode;\n      if (charCode1 === 0x11) {\n        oneCode = b + 0x50;\n      } else if (charCode1 === 0x12) {\n        oneCode = b + 0x70;\n      } else {\n        oneCode = b + 0x90;\n      }\n\n      this.logger.log(\n        VerboseLevel.INFO,\n        \"Special char '\" + getCharForByte(oneCode) + \"' in channel \" + channelNr\n      );\n      charCodes = [oneCode];\n    } else if (a >= 0x20 && a <= 0x7f) {\n      charCodes = b === 0 ? [a] : [a, b];\n    }\n    if (charCodes) {\n      const hexCodes = numArrayToHexArray(charCodes);\n      this.logger.log(\n        VerboseLevel.DEBUG,\n        'Char codes =  ' + hexCodes.join(',')\n      );\n      setLastCmd(a, b, this.cmdHistory);\n    }\n    return charCodes;\n  }\n\n  /**\n   * Parse extended background attributes as well as new foreground color black.\n   * @returns True if background attributes are found\n   */\n  parseBackgroundAttributes(a: number, b: number): boolean {\n    const case1 = (a === 0x10 || a === 0x18) && b >= 0x20 && b <= 0x2f;\n    const case2 = (a === 0x17 || a === 0x1f) && b >= 0x2d && b <= 0x2f;\n    if (!(case1 || case2)) {\n      return false;\n    }\n    let index: number;\n    const bkgData: Partial<PenStyles> = {};\n    if (a === 0x10 || a === 0x18) {\n      index = Math.floor((b - 0x20) / 2);\n      bkgData.background = backgroundColors[index];\n      if (b % 2 === 1) {\n        bkgData.background = bkgData.background + '_semi';\n      }\n    } else if (b === 0x2d) {\n      bkgData.background = 'transparent';\n    } else {\n      bkgData.foreground = 'black';\n      if (b === 0x2f) {\n        bkgData.underline = true;\n      }\n    }\n    const chNr: Channels = a <= 0x17 ? 1 : 2;\n    const channel: Cea608Channel = this.channels[chNr] as Cea608Channel;\n    channel.setBkgData(bkgData);\n    setLastCmd(a, b, this.cmdHistory);\n    return true;\n  }\n\n  /**\n   * Reset state of parser and its channels.\n   */\n  reset() {\n    for (let i = 0; i < Object.keys(this.channels).length; i++) {\n      const channel = this.channels[i];\n      if (channel) {\n        channel.reset();\n      }\n    }\n    this.cmdHistory = createCmdHistory();\n  }\n\n  /**\n   * Trigger the generation of a cue, and the start of a new one if displayScreens are not empty.\n   */\n  cueSplitAtTime(t: number) {\n    for (let i = 0; i < this.channels.length; i++) {\n      const channel = this.channels[i];\n      if (channel) {\n        channel.cueSplitAtTime(t);\n      }\n    }\n  }\n}\n\nfunction setLastCmd(\n  a: number | null,\n  b: number | null,\n  cmdHistory: CmdHistory\n) {\n  cmdHistory.a = a;\n  cmdHistory.b = b;\n}\n\nfunction hasCmdRepeated(a: number, b: number, cmdHistory: CmdHistory) {\n  return cmdHistory.a === a && cmdHistory.b === b;\n}\n\nfunction createCmdHistory(): CmdHistory {\n  return {\n    a: null,\n    b: null,\n  };\n}\n\nexport default Cea608Parser;\n","/*\n * Source: https://github.com/mozilla/vtt.js/blob/master/dist/vtt.js\n */\n\nimport VTTCue from './vttcue';\n\nclass StringDecoder {\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  decode(data: string | any, options?: Object): string | never {\n    if (!data) {\n      return '';\n    }\n\n    if (typeof data !== 'string') {\n      throw new Error('Error - expected string data.');\n    }\n\n    return decodeURIComponent(encodeURIComponent(data));\n  }\n}\n\n// Try to parse input as a time stamp.\nexport function parseTimeStamp(input: string) {\n  function computeSeconds(h, m, s, f) {\n    return (h | 0) * 3600 + (m | 0) * 60 + (s | 0) + parseFloat(f || 0);\n  }\n\n  const m = input.match(/^(?:(\\d+):)?(\\d{2}):(\\d{2})(\\.\\d+)?/);\n  if (!m) {\n    return null;\n  }\n\n  if (parseFloat(m[2]) > 59) {\n    // Timestamp takes the form of [hours]:[minutes].[milliseconds]\n    // First position is hours as it's over 59.\n    return computeSeconds(m[2], m[3], 0, m[4]);\n  }\n  // Timestamp takes the form of [hours (optional)]:[minutes]:[seconds].[milliseconds]\n  return computeSeconds(m[1], m[2], m[3], m[4]);\n}\n\n// A settings object holds key/value pairs and will ignore anything but the first\n// assignment to a specific key.\nclass Settings {\n  private readonly values: { [key: string]: any } = Object.create(null);\n\n  // Only accept the first assignment to any key.\n  set(k: string, v: any) {\n    if (!this.get(k) && v !== '') {\n      this.values[k] = v;\n    }\n  }\n  // Return the value for a key, or a default value.\n  // If 'defaultKey' is passed then 'dflt' is assumed to be an object with\n  // a number of possible default values as properties where 'defaultKey' is\n  // the key of the property that will be chosen; otherwise it's assumed to be\n  // a single value.\n  get(k: string, dflt?: any, defaultKey?: string): any {\n    if (defaultKey) {\n      return this.has(k) ? this.values[k] : dflt[defaultKey];\n    }\n\n    return this.has(k) ? this.values[k] : dflt;\n  }\n  // Check whether we have a value for a key.\n  has(k: string): boolean {\n    return k in this.values;\n  }\n  // Accept a setting if its one of the given alternatives.\n  alt(k: string, v: any, a: any[]) {\n    for (let n = 0; n < a.length; ++n) {\n      if (v === a[n]) {\n        this.set(k, v);\n        break;\n      }\n    }\n  }\n  // Accept a setting if its a valid (signed) integer.\n  integer(k: string, v: any) {\n    if (/^-?\\d+$/.test(v)) {\n      // integer\n      this.set(k, parseInt(v, 10));\n    }\n  }\n  // Accept a setting if its a valid percentage.\n  percent(k: string, v: any): boolean {\n    if (/^([\\d]{1,3})(\\.[\\d]*)?%$/.test(v)) {\n      const percent = parseFloat(v);\n      if (percent >= 0 && percent <= 100) {\n        this.set(k, percent);\n        return true;\n      }\n    }\n    return false;\n  }\n}\n\n// Helper function to parse input into groups separated by 'groupDelim', and\n// interpret each group as a key/value pair separated by 'keyValueDelim'.\nfunction parseOptions(\n  input: string,\n  callback: (k: string, v: any) => void,\n  keyValueDelim: RegExp,\n  groupDelim?: RegExp\n) {\n  const groups = groupDelim ? input.split(groupDelim) : [input];\n  for (const i in groups) {\n    if (typeof groups[i] !== 'string') {\n      continue;\n    }\n\n    const kv = groups[i].split(keyValueDelim);\n    if (kv.length !== 2) {\n      continue;\n    }\n\n    const k = kv[0];\n    const v = kv[1];\n    callback(k, v);\n  }\n}\n\nconst defaults = new VTTCue(0, 0, '');\n// 'middle' was changed to 'center' in the spec: https://github.com/w3c/webvtt/pull/244\n//  Safari doesn't yet support this change, but FF and Chrome do.\nconst center = (defaults.align as string) === 'middle' ? 'middle' : 'center';\n\nfunction parseCue(input: string, cue: VTTCue, regionList: Region[]) {\n  // Remember the original input if we need to throw an error.\n  const oInput = input;\n  // 4.1 WebVTT timestamp\n  function consumeTimeStamp(): number | never {\n    const ts = parseTimeStamp(input);\n    if (ts === null) {\n      throw new Error('Malformed timestamp: ' + oInput);\n    }\n\n    // Remove time stamp from input.\n    input = input.replace(/^[^\\sa-zA-Z-]+/, '');\n    return ts;\n  }\n\n  // 4.4.2 WebVTT cue settings\n  function consumeCueSettings(input: string, cue: VTTCue) {\n    const settings = new Settings();\n\n    parseOptions(\n      input,\n      function (k, v) {\n        let vals;\n        switch (k) {\n          case 'region':\n            // Find the last region we parsed with the same region id.\n            for (let i = regionList.length - 1; i >= 0; i--) {\n              if (regionList[i].id === v) {\n                settings.set(k, regionList[i].region);\n                break;\n              }\n            }\n            break;\n          case 'vertical':\n            settings.alt(k, v, ['rl', 'lr']);\n            break;\n          case 'line':\n            vals = v.split(',');\n            settings.integer(k, vals[0]);\n            if (settings.percent(k, vals[0])) {\n              settings.set('snapToLines', false);\n            }\n\n            settings.alt(k, vals[0], ['auto']);\n            if (vals.length === 2) {\n              settings.alt('lineAlign', vals[1], ['start', center, 'end']);\n            }\n\n            break;\n          case 'position':\n            vals = v.split(',');\n            settings.percent(k, vals[0]);\n            if (vals.length === 2) {\n              settings.alt('positionAlign', vals[1], [\n                'start',\n                center,\n                'end',\n                'line-left',\n                'line-right',\n                'auto',\n              ]);\n            }\n\n            break;\n          case 'size':\n            settings.percent(k, v);\n            break;\n          case 'align':\n            settings.alt(k, v, ['start', center, 'end', 'left', 'right']);\n            break;\n        }\n      },\n      /:/,\n      /\\s/\n    );\n\n    // Apply default values for any missing fields.\n    cue.region = settings.get('region', null);\n    cue.vertical = settings.get('vertical', '');\n    let line = settings.get('line', 'auto');\n    if (line === 'auto' && defaults.line === -1) {\n      // set numeric line number for Safari\n      line = -1;\n    }\n    cue.line = line;\n    cue.lineAlign = settings.get('lineAlign', 'start');\n    cue.snapToLines = settings.get('snapToLines', true);\n    cue.size = settings.get('size', 100);\n    cue.align = settings.get('align', center);\n    let position = settings.get('position', 'auto');\n    if (position === 'auto' && defaults.position === 50) {\n      // set numeric position for Safari\n      position =\n        cue.align === 'start' || cue.align === 'left'\n          ? 0\n          : cue.align === 'end' || cue.align === 'right'\n          ? 100\n          : 50;\n    }\n    cue.position = position;\n  }\n\n  function skipWhitespace() {\n    input = input.replace(/^\\s+/, '');\n  }\n\n  // 4.1 WebVTT cue timings.\n  skipWhitespace();\n  cue.startTime = consumeTimeStamp(); // (1) collect cue start time\n  skipWhitespace();\n  if (input.slice(0, 3) !== '-->') {\n    // (3) next characters must match '-->'\n    throw new Error(\n      \"Malformed time stamp (time stamps must be separated by '-->'): \" + oInput\n    );\n  }\n  input = input.slice(3);\n  skipWhitespace();\n  cue.endTime = consumeTimeStamp(); // (5) collect cue end time\n\n  // 4.1 WebVTT cue settings list.\n  skipWhitespace();\n  consumeCueSettings(input, cue);\n}\n\nexport function fixLineBreaks(input: string): string {\n  return input.replace(/<br(?: \\/)?>/gi, '\\n');\n}\n\ntype Region = {\n  id: string;\n  region: any;\n};\n\nexport class VTTParser {\n  private state:\n    | 'INITIAL'\n    | 'HEADER'\n    | 'ID'\n    | 'CUE'\n    | 'CUETEXT'\n    | 'NOTE'\n    | 'BADWEBVTT'\n    | 'BADCUE' = 'INITIAL';\n  private buffer: string = '';\n  private decoder: StringDecoder = new StringDecoder();\n  private regionList: Region[] = [];\n  private cue: VTTCue | null = null;\n  public oncue?: (cue: VTTCue) => void;\n  public onparsingerror?: (error: Error) => void;\n  public onflush?: () => void;\n\n  parse(data?: string): VTTParser {\n    const _this = this;\n\n    // If there is no data then we won't decode it, but will just try to parse\n    // whatever is in buffer already. This may occur in circumstances, for\n    // example when flush() is called.\n    if (data) {\n      // Try to decode the data that we received.\n      _this.buffer += _this.decoder.decode(data, { stream: true });\n    }\n\n    function collectNextLine(): string {\n      let buffer: string = _this.buffer;\n      let pos = 0;\n\n      buffer = fixLineBreaks(buffer);\n\n      while (\n        pos < buffer.length &&\n        buffer[pos] !== '\\r' &&\n        buffer[pos] !== '\\n'\n      ) {\n        ++pos;\n      }\n\n      const line: string = buffer.slice(0, pos);\n      // Advance the buffer early in case we fail below.\n      if (buffer[pos] === '\\r') {\n        ++pos;\n      }\n\n      if (buffer[pos] === '\\n') {\n        ++pos;\n      }\n\n      _this.buffer = buffer.slice(pos);\n      return line;\n    }\n\n    // 3.2 WebVTT metadata header syntax\n    function parseHeader(input) {\n      parseOptions(\n        input,\n        function (k, v) {\n          // switch (k) {\n          // case 'region':\n          // 3.3 WebVTT region metadata header syntax\n          // console.log('parse region', v);\n          // parseRegion(v);\n          // break;\n          // }\n        },\n        /:/\n      );\n    }\n\n    // 5.1 WebVTT file parsing.\n    try {\n      let line: string = '';\n      if (_this.state === 'INITIAL') {\n        // We can't start parsing until we have the first line.\n        if (!/\\r\\n|\\n/.test(_this.buffer)) {\n          return this;\n        }\n\n        line = collectNextLine();\n        // strip of UTF-8 BOM if any\n        // https://en.wikipedia.org/wiki/Byte_order_mark#UTF-8\n        const m = line.match(/^(ï»¿)?WEBVTT([ \\t].*)?$/);\n        if (!m?.[0]) {\n          throw new Error('Malformed WebVTT signature.');\n        }\n\n        _this.state = 'HEADER';\n      }\n\n      let alreadyCollectedLine = false;\n      while (_this.buffer) {\n        // We can't parse a line until we have the full line.\n        if (!/\\r\\n|\\n/.test(_this.buffer)) {\n          return this;\n        }\n\n        if (!alreadyCollectedLine) {\n          line = collectNextLine();\n        } else {\n          alreadyCollectedLine = false;\n        }\n\n        switch (_this.state) {\n          case 'HEADER':\n            // 13-18 - Allow a header (metadata) under the WEBVTT line.\n            if (/:/.test(line)) {\n              parseHeader(line);\n            } else if (!line) {\n              // An empty line terminates the header and starts the body (cues).\n              _this.state = 'ID';\n            }\n            continue;\n          case 'NOTE':\n            // Ignore NOTE blocks.\n            if (!line) {\n              _this.state = 'ID';\n            }\n\n            continue;\n          case 'ID':\n            // Check for the start of NOTE blocks.\n            if (/^NOTE($|[ \\t])/.test(line)) {\n              _this.state = 'NOTE';\n              break;\n            }\n            // 19-29 - Allow any number of line terminators, then initialize new cue values.\n            if (!line) {\n              continue;\n            }\n\n            _this.cue = new VTTCue(0, 0, '');\n            _this.state = 'CUE';\n            // 30-39 - Check if self line contains an optional identifier or timing data.\n            if (line.indexOf('-->') === -1) {\n              _this.cue.id = line;\n              continue;\n            }\n          // Process line as start of a cue.\n          /* falls through */\n          case 'CUE':\n            // 40 - Collect cue timings and settings.\n            if (!_this.cue) {\n              _this.state = 'BADCUE';\n              continue;\n            }\n            try {\n              parseCue(line, _this.cue, _this.regionList);\n            } catch (e) {\n              // In case of an error ignore rest of the cue.\n              _this.cue = null;\n              _this.state = 'BADCUE';\n              continue;\n            }\n            _this.state = 'CUETEXT';\n            continue;\n          case 'CUETEXT':\n            {\n              const hasSubstring = line.indexOf('-->') !== -1;\n              // 34 - If we have an empty line then report the cue.\n              // 35 - If we have the special substring '-->' then report the cue,\n              // but do not collect the line as we need to process the current\n              // one as a new cue.\n              if (!line || (hasSubstring && (alreadyCollectedLine = true))) {\n                // We are done parsing self cue.\n                if (_this.oncue && _this.cue) {\n                  _this.oncue(_this.cue);\n                }\n\n                _this.cue = null;\n                _this.state = 'ID';\n                continue;\n              }\n              if (_this.cue === null) {\n                continue;\n              }\n\n              if (_this.cue.text) {\n                _this.cue.text += '\\n';\n              }\n              _this.cue.text += line;\n            }\n            continue;\n          case 'BADCUE':\n            // 54-62 - Collect and discard the remaining cue.\n            if (!line) {\n              _this.state = 'ID';\n            }\n        }\n      }\n    } catch (e) {\n      // If we are currently parsing a cue, report what we have.\n      if (_this.state === 'CUETEXT' && _this.cue && _this.oncue) {\n        _this.oncue(_this.cue);\n      }\n\n      _this.cue = null;\n      // Enter BADWEBVTT state if header was not parsed correctly otherwise\n      // another exception occurred so enter BADCUE state.\n      _this.state = _this.state === 'INITIAL' ? 'BADWEBVTT' : 'BADCUE';\n    }\n    return this;\n  }\n\n  flush(): VTTParser {\n    const _this = this;\n    try {\n      // Finish decoding the stream.\n      // _this.buffer += _this.decoder.decode();\n      // Synthesize the end of the current cue or region.\n      if (_this.cue || _this.state === 'HEADER') {\n        _this.buffer += '\\n\\n';\n        _this.parse();\n      }\n      // If we've flushed, parsed, and we're still on the INITIAL state then\n      // that means we don't have enough of the stream to parse the first\n      // line.\n      if (_this.state === 'INITIAL' || _this.state === 'BADWEBVTT') {\n        throw new Error('Malformed WebVTT signature.');\n      }\n    } catch (e) {\n      if (_this.onparsingerror) {\n        _this.onparsingerror(e);\n      }\n    }\n    if (_this.onflush) {\n      _this.onflush();\n    }\n\n    return this;\n  }\n}\n","import { VTTParser } from './vttparser';\nimport { utf8ArrayToStr } from '../demux/id3';\nimport {\n  RationalTimestamp,\n  toMpegTsClockFromTimescale,\n} from './timescale-conversion';\nimport { normalizePts } from '../remux/mp4-remuxer';\nimport type { VTTCCs } from '../types/vtt';\n\nconst LINEBREAKS = /\\r\\n|\\n\\r|\\n|\\r/g;\n\n// String.prototype.startsWith is not supported in IE11\nconst startsWith = function (\n  inputString: string,\n  searchString: string,\n  position: number = 0\n) {\n  return (\n    inputString.slice(position, position + searchString.length) === searchString\n  );\n};\n\nconst cueString2millis = function (timeString: string) {\n  let ts = parseInt(timeString.slice(-3));\n  const secs = parseInt(timeString.slice(-6, -4));\n  const mins = parseInt(timeString.slice(-9, -7));\n  const hours =\n    timeString.length > 9\n      ? parseInt(timeString.substring(0, timeString.indexOf(':')))\n      : 0;\n\n  if (\n    !Number.isFinite(ts) ||\n    !Number.isFinite(secs) ||\n    !Number.isFinite(mins) ||\n    !Number.isFinite(hours)\n  ) {\n    throw Error(`Malformed X-TIMESTAMP-MAP: Local:${timeString}`);\n  }\n\n  ts += 1000 * secs;\n  ts += 60 * 1000 * mins;\n  ts += 60 * 60 * 1000 * hours;\n\n  return ts;\n};\n\n// From https://github.com/darkskyapp/string-hash\nconst hash = function (text: string) {\n  let hash = 5381;\n  let i = text.length;\n  while (i) {\n    hash = (hash * 33) ^ text.charCodeAt(--i);\n  }\n\n  return (hash >>> 0).toString();\n};\n\n// Create a unique hash id for a cue based on start/end times and text.\n// This helps timeline-controller to avoid showing repeated captions.\nexport function generateCueId(\n  startTime: number,\n  endTime: number,\n  text: string\n) {\n  return hash(startTime.toString()) + hash(endTime.toString()) + hash(text);\n}\n\nconst calculateOffset = function (vttCCs: VTTCCs, cc, presentationTime) {\n  let currCC = vttCCs[cc];\n  let prevCC = vttCCs[currCC.prevCC];\n\n  // This is the first discontinuity or cues have been processed since the last discontinuity\n  // Offset = current discontinuity time\n  if (!prevCC || (!prevCC.new && currCC.new)) {\n    vttCCs.ccOffset = vttCCs.presentationOffset = currCC.start;\n    currCC.new = false;\n    return;\n  }\n\n  // There have been discontinuities since cues were last parsed.\n  // Offset = time elapsed\n  while (prevCC?.new) {\n    vttCCs.ccOffset += currCC.start - prevCC.start;\n    currCC.new = false;\n    currCC = prevCC;\n    prevCC = vttCCs[currCC.prevCC];\n  }\n\n  vttCCs.presentationOffset = presentationTime;\n};\n\nexport function parseWebVTT(\n  vttByteArray: ArrayBuffer,\n  initPTS: RationalTimestamp | undefined,\n  vttCCs: VTTCCs,\n  cc: number,\n  timeOffset: number,\n  callBack: (cues: VTTCue[]) => void,\n  errorCallBack: (error: Error) => void\n) {\n  const parser = new VTTParser();\n  // Convert byteArray into string, replacing any somewhat exotic linefeeds with \"\\n\", then split on that character.\n  // Uint8Array.prototype.reduce is not implemented in IE11\n  const vttLines = utf8ArrayToStr(new Uint8Array(vttByteArray))\n    .trim()\n    .replace(LINEBREAKS, '\\n')\n    .split('\\n');\n  const cues: VTTCue[] = [];\n  const init90kHz = initPTS\n    ? toMpegTsClockFromTimescale(initPTS.baseTime, initPTS.timescale)\n    : 0;\n  let cueTime = '00:00.000';\n  let timestampMapMPEGTS = 0;\n  let timestampMapLOCAL = 0;\n  let parsingError: Error;\n  let inHeader = true;\n\n  parser.oncue = function (cue: VTTCue) {\n    // Adjust cue timing; clamp cues to start no earlier than - and drop cues that don't end after - 0 on timeline.\n    const currCC = vttCCs[cc];\n    let cueOffset = vttCCs.ccOffset;\n\n    // Calculate subtitle PTS offset\n    const webVttMpegTsMapOffset = (timestampMapMPEGTS - init90kHz) / 90000;\n\n    // Update offsets for new discontinuities\n    if (currCC?.new) {\n      if (timestampMapLOCAL !== undefined) {\n        // When local time is provided, offset = discontinuity start time - local time\n        cueOffset = vttCCs.ccOffset = currCC.start;\n      } else {\n        calculateOffset(vttCCs, cc, webVttMpegTsMapOffset);\n      }\n    }\n    if (webVttMpegTsMapOffset) {\n      if (!initPTS) {\n        parsingError = new Error('Missing initPTS for VTT MPEGTS');\n        return;\n      }\n      // If we have MPEGTS, offset = presentation time + discontinuity offset\n      cueOffset = webVttMpegTsMapOffset - vttCCs.presentationOffset;\n    }\n\n    const duration = cue.endTime - cue.startTime;\n    const startTime =\n      normalizePts(\n        (cue.startTime + cueOffset - timestampMapLOCAL) * 90000,\n        timeOffset * 90000\n      ) / 90000;\n    cue.startTime = Math.max(startTime, 0);\n    cue.endTime = Math.max(startTime + duration, 0);\n\n    //trim trailing webvtt block whitespaces\n    const text = cue.text.trim();\n\n    // Fix encoding of special characters\n    cue.text = decodeURIComponent(encodeURIComponent(text));\n\n    // If the cue was not assigned an id from the VTT file (line above the content), create one.\n    if (!cue.id) {\n      cue.id = generateCueId(cue.startTime, cue.endTime, text);\n    }\n\n    if (cue.endTime > 0) {\n      cues.push(cue);\n    }\n  };\n\n  parser.onparsingerror = function (error: Error) {\n    parsingError = error;\n  };\n\n  parser.onflush = function () {\n    if (parsingError) {\n      errorCallBack(parsingError);\n      return;\n    }\n    callBack(cues);\n  };\n\n  // Go through contents line by line.\n  vttLines.forEach((line) => {\n    if (inHeader) {\n      // Look for X-TIMESTAMP-MAP in header.\n      if (startsWith(line, 'X-TIMESTAMP-MAP=')) {\n        // Once found, no more are allowed anyway, so stop searching.\n        inHeader = false;\n        // Extract LOCAL and MPEGTS.\n        line\n          .slice(16)\n          .split(',')\n          .forEach((timestamp) => {\n            if (startsWith(timestamp, 'LOCAL:')) {\n              cueTime = timestamp.slice(6);\n            } else if (startsWith(timestamp, 'MPEGTS:')) {\n              timestampMapMPEGTS = parseInt(timestamp.slice(7));\n            }\n          });\n        try {\n          // Convert cue time to seconds\n          timestampMapLOCAL = cueString2millis(cueTime) / 1000;\n        } catch (error) {\n          parsingError = error;\n        }\n        // Return without parsing X-TIMESTAMP-MAP line.\n        return;\n      } else if (line === '') {\n        inHeader = false;\n      }\n    }\n    // Parse line by default.\n    parser.parse(line + '\\n');\n  });\n\n  parser.flush();\n}\n","import { findBox } from './mp4-tools';\nimport { parseTimeStamp } from './vttparser';\nimport VTTCue from './vttcue';\nimport { utf8ArrayToStr } from '../demux/id3';\nimport {\n  RationalTimestamp,\n  toTimescaleFromScale,\n} from './timescale-conversion';\nimport { generateCueId } from './webvtt-parser';\n\nexport const IMSC1_CODEC = 'stpp.ttml.im1t';\n\n// Time format: h:m:s:frames(.subframes)\nconst HMSF_REGEX = /^(\\d{2,}):(\\d{2}):(\\d{2}):(\\d{2})\\.?(\\d+)?$/;\n\n// Time format: hours, minutes, seconds, milliseconds, frames, ticks\nconst TIME_UNIT_REGEX = /^(\\d*(?:\\.\\d*)?)(h|m|s|ms|f|t)$/;\n\nconst textAlignToLineAlign: Partial<Record<string, LineAlignSetting>> = {\n  left: 'start',\n  center: 'center',\n  right: 'end',\n  start: 'start',\n  end: 'end',\n};\n\nexport function parseIMSC1(\n  payload: ArrayBuffer,\n  initPTS: RationalTimestamp,\n  callBack: (cues: Array<VTTCue>) => any,\n  errorCallBack: (error: Error) => any\n) {\n  const results = findBox(new Uint8Array(payload), ['mdat']);\n  if (results.length === 0) {\n    errorCallBack(new Error('Could not parse IMSC1 mdat'));\n    return;\n  }\n\n  const ttmlList = results.map((mdat) => utf8ArrayToStr(mdat));\n\n  const syncTime = toTimescaleFromScale(initPTS.baseTime, 1, initPTS.timescale);\n\n  try {\n    ttmlList.forEach((ttml) => callBack(parseTTML(ttml, syncTime)));\n  } catch (error) {\n    errorCallBack(error);\n  }\n}\n\nfunction parseTTML(ttml: string, syncTime: number): Array<VTTCue> {\n  const parser = new DOMParser();\n  const xmlDoc = parser.parseFromString(ttml, 'text/xml');\n  const tt = xmlDoc.getElementsByTagName('tt')[0];\n  if (!tt) {\n    throw new Error('Invalid ttml');\n  }\n  const defaultRateInfo = {\n    frameRate: 30,\n    subFrameRate: 1,\n    frameRateMultiplier: 0,\n    tickRate: 0,\n  };\n  const rateInfo: Object = Object.keys(defaultRateInfo).reduce(\n    (result, key) => {\n      result[key] = tt.getAttribute(`ttp:${key}`) || defaultRateInfo[key];\n      return result;\n    },\n    {}\n  );\n\n  const trim = tt.getAttribute('xml:space') !== 'preserve';\n\n  const styleElements = collectionToDictionary(\n    getElementCollection(tt, 'styling', 'style')\n  );\n  const regionElements = collectionToDictionary(\n    getElementCollection(tt, 'layout', 'region')\n  );\n  const cueElements = getElementCollection(tt, 'body', '[begin]');\n\n  return [].map\n    .call(cueElements, (cueElement) => {\n      const cueText = getTextContent(cueElement, trim);\n\n      if (!cueText || !cueElement.hasAttribute('begin')) {\n        return null;\n      }\n      const startTime = parseTtmlTime(\n        cueElement.getAttribute('begin'),\n        rateInfo\n      );\n      const duration = parseTtmlTime(cueElement.getAttribute('dur'), rateInfo);\n      let endTime = parseTtmlTime(cueElement.getAttribute('end'), rateInfo);\n      if (startTime === null) {\n        throw timestampParsingError(cueElement);\n      }\n      if (endTime === null) {\n        if (duration === null) {\n          throw timestampParsingError(cueElement);\n        }\n        endTime = startTime + duration;\n      }\n      const cue = new VTTCue(startTime - syncTime, endTime - syncTime, cueText);\n      cue.id = generateCueId(cue.startTime, cue.endTime, cue.text);\n\n      const region = regionElements[cueElement.getAttribute('region')];\n      const style = styleElements[cueElement.getAttribute('style')];\n\n      // Apply styles to cue\n      const styles = getTtmlStyles(region, style, styleElements);\n      const { textAlign } = styles;\n      if (textAlign) {\n        // cue.positionAlign not settable in FF~2016\n        const lineAlign = textAlignToLineAlign[textAlign];\n        if (lineAlign) {\n          cue.lineAlign = lineAlign;\n        }\n        cue.align = textAlign as AlignSetting;\n      }\n      Object.assign(cue, styles);\n\n      return cue;\n    })\n    .filter((cue) => cue !== null);\n}\n\nfunction getElementCollection(\n  fromElement,\n  parentName,\n  childName\n): Array<HTMLElement> {\n  const parent = fromElement.getElementsByTagName(parentName)[0];\n  if (parent) {\n    return [].slice.call(parent.querySelectorAll(childName));\n  }\n  return [];\n}\n\nfunction collectionToDictionary(elementsWithId: Array<HTMLElement>): {\n  [id: string]: HTMLElement;\n} {\n  return elementsWithId.reduce((dict, element: HTMLElement) => {\n    const id = element.getAttribute('xml:id');\n    if (id) {\n      dict[id] = element;\n    }\n    return dict;\n  }, {});\n}\n\nfunction getTextContent(element, trim): string {\n  return [].slice.call(element.childNodes).reduce((str, node, i) => {\n    if (node.nodeName === 'br' && i) {\n      return str + '\\n';\n    }\n    if (node.childNodes?.length) {\n      return getTextContent(node, trim);\n    } else if (trim) {\n      return str + node.textContent.trim().replace(/\\s+/g, ' ');\n    }\n    return str + node.textContent;\n  }, '');\n}\n\nfunction getTtmlStyles(\n  region,\n  style,\n  styleElements\n): { [style: string]: string } {\n  const ttsNs = 'http://www.w3.org/ns/ttml#styling';\n  let regionStyle = null;\n  const styleAttributes = [\n    'displayAlign',\n    'textAlign',\n    'color',\n    'backgroundColor',\n    'fontSize',\n    'fontFamily',\n    // 'fontWeight',\n    // 'lineHeight',\n    // 'wrapOption',\n    // 'fontStyle',\n    // 'direction',\n    // 'writingMode'\n  ];\n\n  const regionStyleName = region?.hasAttribute('style')\n    ? region.getAttribute('style')\n    : null;\n\n  if (regionStyleName && styleElements.hasOwnProperty(regionStyleName)) {\n    regionStyle = styleElements[regionStyleName];\n  }\n\n  return styleAttributes.reduce((styles, name) => {\n    const value =\n      getAttributeNS(style, ttsNs, name) ||\n      getAttributeNS(region, ttsNs, name) ||\n      getAttributeNS(regionStyle, ttsNs, name);\n    if (value) {\n      styles[name] = value;\n    }\n    return styles;\n  }, {});\n}\n\nfunction getAttributeNS(element, ns, name): string | null {\n  if (!element) {\n    return null;\n  }\n  return element.hasAttributeNS(ns, name)\n    ? element.getAttributeNS(ns, name)\n    : null;\n}\n\nfunction timestampParsingError(node) {\n  return new Error(`Could not parse ttml timestamp ${node}`);\n}\n\nfunction parseTtmlTime(timeAttributeValue, rateInfo): number | null {\n  if (!timeAttributeValue) {\n    return null;\n  }\n  let seconds: number | null = parseTimeStamp(timeAttributeValue);\n  if (seconds === null) {\n    if (HMSF_REGEX.test(timeAttributeValue)) {\n      seconds = parseHoursMinutesSecondsFrames(timeAttributeValue, rateInfo);\n    } else if (TIME_UNIT_REGEX.test(timeAttributeValue)) {\n      seconds = parseTimeUnits(timeAttributeValue, rateInfo);\n    }\n  }\n  return seconds;\n}\n\nfunction parseHoursMinutesSecondsFrames(timeAttributeValue, rateInfo): number {\n  const m = HMSF_REGEX.exec(timeAttributeValue) as Array<any>;\n  const frames = (m[4] | 0) + (m[5] | 0) / rateInfo.subFrameRate;\n  return (\n    (m[1] | 0) * 3600 +\n    (m[2] | 0) * 60 +\n    (m[3] | 0) +\n    frames / rateInfo.frameRate\n  );\n}\n\nfunction parseTimeUnits(timeAttributeValue, rateInfo): number {\n  const m = TIME_UNIT_REGEX.exec(timeAttributeValue) as Array<any>;\n  const value = Number(m[1]);\n  const unit = m[2];\n  switch (unit) {\n    case 'h':\n      return value * 3600;\n    case 'm':\n      return value * 60;\n    case 'ms':\n      return value * 1000;\n    case 'f':\n      return value / rateInfo.frameRate;\n    case 't':\n      return value / rateInfo.tickRate;\n  }\n  return value;\n}\n","import { Events } from '../events';\nimport Cea608Parser, { CaptionScreen } from '../utils/cea-608-parser';\nimport OutputFilter from '../utils/output-filter';\nimport { parseWebVTT } from '../utils/webvtt-parser';\nimport {\n  sendAddTrackEvent,\n  clearCurrentCues,\n  addCueToTrack,\n  removeCuesInRange,\n} from '../utils/texttrack-utils';\nimport { subtitleOptionsIdentical } from '../utils/media-option-attributes';\nimport { parseIMSC1, IMSC1_CODEC } from '../utils/imsc1-ttml-parser';\nimport { appendUint8Array } from '../utils/mp4-tools';\nimport { PlaylistLevelType } from '../types/loader';\nimport { Fragment } from '../loader/fragment';\nimport {\n  FragParsingUserdataData,\n  FragLoadedData,\n  FragDecryptedData,\n  MediaAttachingData,\n  ManifestLoadedData,\n  InitPTSFoundData,\n  SubtitleTracksUpdatedData,\n  BufferFlushingData,\n  FragLoadingData,\n} from '../types/events';\nimport { logger } from '../utils/logger';\nimport type Hls from '../hls';\nimport type { ComponentAPI } from '../types/component-api';\nimport type { HlsConfig } from '../config';\nimport type { CuesInterface } from '../utils/cues';\nimport type { MediaPlaylist } from '../types/media-playlist';\nimport type { VTTCCs } from '../types/vtt';\nimport type { RationalTimestamp } from '../utils/timescale-conversion';\n\ntype TrackProperties = {\n  label: string;\n  languageCode: string;\n  media?: MediaPlaylist;\n};\n\ntype NonNativeCaptionsTrack = {\n  _id?: string;\n  label: string;\n  kind: string;\n  default: boolean;\n  closedCaptions?: MediaPlaylist;\n  subtitleTrack?: MediaPlaylist;\n};\n\nexport class TimelineController implements ComponentAPI {\n  private hls: Hls;\n  private media: HTMLMediaElement | null = null;\n  private config: HlsConfig;\n  private enabled: boolean = true;\n  private Cues: CuesInterface;\n  private textTracks: Array<TextTrack> = [];\n  private tracks: Array<MediaPlaylist> = [];\n  private initPTS: RationalTimestamp[] = [];\n  private unparsedVttFrags: Array<FragLoadedData | FragDecryptedData> = [];\n  private captionsTracks: Record<string, TextTrack> = {};\n  private nonNativeCaptionsTracks: Record<string, NonNativeCaptionsTrack> = {};\n  private cea608Parser1!: Cea608Parser;\n  private cea608Parser2!: Cea608Parser;\n  private lastSn: number = -1;\n  private lastPartIndex: number = -1;\n  private prevCC: number = -1;\n  private vttCCs: VTTCCs = newVTTCCs();\n  private captionsProperties: {\n    textTrack1: TrackProperties;\n    textTrack2: TrackProperties;\n    textTrack3: TrackProperties;\n    textTrack4: TrackProperties;\n  };\n\n  constructor(hls: Hls) {\n    this.hls = hls;\n    this.config = hls.config;\n    this.Cues = hls.config.cueHandler;\n\n    this.captionsProperties = {\n      textTrack1: {\n        label: this.config.captionsTextTrack1Label,\n        languageCode: this.config.captionsTextTrack1LanguageCode,\n      },\n      textTrack2: {\n        label: this.config.captionsTextTrack2Label,\n        languageCode: this.config.captionsTextTrack2LanguageCode,\n      },\n      textTrack3: {\n        label: this.config.captionsTextTrack3Label,\n        languageCode: this.config.captionsTextTrack3LanguageCode,\n      },\n      textTrack4: {\n        label: this.config.captionsTextTrack4Label,\n        languageCode: this.config.captionsTextTrack4LanguageCode,\n      },\n    };\n\n    if (this.config.enableCEA708Captions) {\n      const channel1 = new OutputFilter(this, 'textTrack1');\n      const channel2 = new OutputFilter(this, 'textTrack2');\n      const channel3 = new OutputFilter(this, 'textTrack3');\n      const channel4 = new OutputFilter(this, 'textTrack4');\n      this.cea608Parser1 = new Cea608Parser(1, channel1, channel2);\n      this.cea608Parser2 = new Cea608Parser(3, channel3, channel4);\n    }\n\n    hls.on(Events.MEDIA_ATTACHING, this.onMediaAttaching, this);\n    hls.on(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n    hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    hls.on(Events.MANIFEST_LOADED, this.onManifestLoaded, this);\n    hls.on(Events.SUBTITLE_TRACKS_UPDATED, this.onSubtitleTracksUpdated, this);\n    hls.on(Events.FRAG_LOADING, this.onFragLoading, this);\n    hls.on(Events.FRAG_LOADED, this.onFragLoaded, this);\n    hls.on(Events.FRAG_PARSING_USERDATA, this.onFragParsingUserdata, this);\n    hls.on(Events.FRAG_DECRYPTED, this.onFragDecrypted, this);\n    hls.on(Events.INIT_PTS_FOUND, this.onInitPtsFound, this);\n    hls.on(Events.SUBTITLE_TRACKS_CLEARED, this.onSubtitleTracksCleared, this);\n    hls.on(Events.BUFFER_FLUSHING, this.onBufferFlushing, this);\n  }\n\n  public destroy(): void {\n    const { hls } = this;\n    hls.off(Events.MEDIA_ATTACHING, this.onMediaAttaching, this);\n    hls.off(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n    hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    hls.off(Events.MANIFEST_LOADED, this.onManifestLoaded, this);\n    hls.off(Events.SUBTITLE_TRACKS_UPDATED, this.onSubtitleTracksUpdated, this);\n    hls.off(Events.FRAG_LOADING, this.onFragLoading, this);\n    hls.off(Events.FRAG_LOADED, this.onFragLoaded, this);\n    hls.off(Events.FRAG_PARSING_USERDATA, this.onFragParsingUserdata, this);\n    hls.off(Events.FRAG_DECRYPTED, this.onFragDecrypted, this);\n    hls.off(Events.INIT_PTS_FOUND, this.onInitPtsFound, this);\n    hls.off(Events.SUBTITLE_TRACKS_CLEARED, this.onSubtitleTracksCleared, this);\n    hls.off(Events.BUFFER_FLUSHING, this.onBufferFlushing, this);\n    // @ts-ignore\n    this.hls = this.config = this.cea608Parser1 = this.cea608Parser2 = null;\n  }\n\n  public addCues(\n    trackName: string,\n    startTime: number,\n    endTime: number,\n    screen: CaptionScreen,\n    cueRanges: Array<[number, number]>\n  ) {\n    // skip cues which overlap more than 50% with previously parsed time ranges\n    let merged = false;\n    for (let i = cueRanges.length; i--; ) {\n      const cueRange = cueRanges[i];\n      const overlap = intersection(\n        cueRange[0],\n        cueRange[1],\n        startTime,\n        endTime\n      );\n      if (overlap >= 0) {\n        cueRange[0] = Math.min(cueRange[0], startTime);\n        cueRange[1] = Math.max(cueRange[1], endTime);\n        merged = true;\n        if (overlap / (endTime - startTime) > 0.5) {\n          return;\n        }\n      }\n    }\n    if (!merged) {\n      cueRanges.push([startTime, endTime]);\n    }\n\n    if (this.config.renderTextTracksNatively) {\n      const track = this.captionsTracks[trackName];\n      this.Cues.newCue(track, startTime, endTime, screen);\n    } else {\n      const cues = this.Cues.newCue(null, startTime, endTime, screen);\n      this.hls.trigger(Events.CUES_PARSED, {\n        type: 'captions',\n        cues,\n        track: trackName,\n      });\n    }\n  }\n\n  // Triggered when an initial PTS is found; used for synchronisation of WebVTT.\n  private onInitPtsFound(\n    event: Events.INIT_PTS_FOUND,\n    { frag, id, initPTS, timescale }: InitPTSFoundData\n  ) {\n    const { unparsedVttFrags } = this;\n    if (id === 'main') {\n      this.initPTS[frag.cc] = { baseTime: initPTS, timescale };\n    }\n\n    // Due to asynchronous processing, initial PTS may arrive later than the first VTT fragments are loaded.\n    // Parse any unparsed fragments upon receiving the initial PTS.\n    if (unparsedVttFrags.length) {\n      this.unparsedVttFrags = [];\n      unparsedVttFrags.forEach((frag) => {\n        this.onFragLoaded(Events.FRAG_LOADED, frag as FragLoadedData);\n      });\n    }\n  }\n\n  private getExistingTrack(trackName: string): TextTrack | null {\n    const { media } = this;\n    if (media) {\n      for (let i = 0; i < media.textTracks.length; i++) {\n        const textTrack = media.textTracks[i];\n        if (textTrack[trackName]) {\n          return textTrack;\n        }\n      }\n    }\n    return null;\n  }\n\n  public createCaptionsTrack(trackName: string) {\n    if (this.config.renderTextTracksNatively) {\n      this.createNativeTrack(trackName);\n    } else {\n      this.createNonNativeTrack(trackName);\n    }\n  }\n\n  private createNativeTrack(trackName: string) {\n    if (this.captionsTracks[trackName]) {\n      return;\n    }\n    const { captionsProperties, captionsTracks, media } = this;\n    const { label, languageCode } = captionsProperties[trackName];\n    // Enable reuse of existing text track.\n    const existingTrack = this.getExistingTrack(trackName);\n    if (!existingTrack) {\n      const textTrack = this.createTextTrack('captions', label, languageCode);\n      if (textTrack) {\n        // Set a special property on the track so we know it's managed by Hls.js\n        textTrack[trackName] = true;\n        captionsTracks[trackName] = textTrack;\n      }\n    } else {\n      captionsTracks[trackName] = existingTrack;\n      clearCurrentCues(captionsTracks[trackName]);\n      sendAddTrackEvent(captionsTracks[trackName], media as HTMLMediaElement);\n    }\n  }\n\n  private createNonNativeTrack(trackName: string) {\n    if (this.nonNativeCaptionsTracks[trackName]) {\n      return;\n    }\n    // Create a list of a single track for the provider to consume\n    const trackProperties: TrackProperties = this.captionsProperties[trackName];\n    if (!trackProperties) {\n      return;\n    }\n    const label = trackProperties.label as string;\n    const track = {\n      _id: trackName,\n      label,\n      kind: 'captions',\n      default: trackProperties.media ? !!trackProperties.media.default : false,\n      closedCaptions: trackProperties.media,\n    };\n    this.nonNativeCaptionsTracks[trackName] = track;\n    this.hls.trigger(Events.NON_NATIVE_TEXT_TRACKS_FOUND, { tracks: [track] });\n  }\n\n  private createTextTrack(\n    kind: TextTrackKind,\n    label: string,\n    lang?: string\n  ): TextTrack | undefined {\n    const media = this.media;\n    if (!media) {\n      return;\n    }\n    return media.addTextTrack(kind, label, lang);\n  }\n\n  private onMediaAttaching(\n    event: Events.MEDIA_ATTACHING,\n    data: MediaAttachingData\n  ) {\n    this.media = data.media;\n    this._cleanTracks();\n  }\n\n  private onMediaDetaching() {\n    const { captionsTracks } = this;\n    Object.keys(captionsTracks).forEach((trackName) => {\n      clearCurrentCues(captionsTracks[trackName]);\n      delete captionsTracks[trackName];\n    });\n    this.nonNativeCaptionsTracks = {};\n  }\n\n  private onManifestLoading() {\n    this.lastSn = -1; // Detect discontinuity in fragment parsing\n    this.lastPartIndex = -1;\n    this.prevCC = -1;\n    this.vttCCs = newVTTCCs(); // Detect discontinuity in subtitle manifests\n    this._cleanTracks();\n    this.tracks = [];\n    this.captionsTracks = {};\n    this.nonNativeCaptionsTracks = {};\n    this.textTracks = [];\n    this.unparsedVttFrags = [];\n    this.initPTS = [];\n    if (this.cea608Parser1 && this.cea608Parser2) {\n      this.cea608Parser1.reset();\n      this.cea608Parser2.reset();\n    }\n  }\n\n  private _cleanTracks() {\n    // clear outdated subtitles\n    const { media } = this;\n    if (!media) {\n      return;\n    }\n    const textTracks = media.textTracks;\n    if (textTracks) {\n      for (let i = 0; i < textTracks.length; i++) {\n        clearCurrentCues(textTracks[i]);\n      }\n    }\n  }\n\n  private onSubtitleTracksUpdated(\n    event: Events.SUBTITLE_TRACKS_UPDATED,\n    data: SubtitleTracksUpdatedData\n  ) {\n    const tracks: Array<MediaPlaylist> = data.subtitleTracks || [];\n    const hasIMSC1 = tracks.some((track) => track.textCodec === IMSC1_CODEC);\n    if (this.config.enableWebVTT || (hasIMSC1 && this.config.enableIMSC1)) {\n      const listIsIdentical = subtitleOptionsIdentical(this.tracks, tracks);\n      if (listIsIdentical) {\n        this.tracks = tracks;\n        return;\n      }\n      this.textTracks = [];\n      this.tracks = tracks;\n\n      if (this.config.renderTextTracksNatively) {\n        const inUseTracks = this.media ? this.media.textTracks : null;\n\n        this.tracks.forEach((track, index) => {\n          let textTrack: TextTrack | undefined;\n          if (inUseTracks && index < inUseTracks.length) {\n            let inUseTrack: TextTrack | null = null;\n\n            for (let i = 0; i < inUseTracks.length; i++) {\n              if (canReuseVttTextTrack(inUseTracks[i], track)) {\n                inUseTrack = inUseTracks[i];\n                break;\n              }\n            }\n\n            // Reuse tracks with the same label, but do not reuse 608/708 tracks\n            if (inUseTrack) {\n              textTrack = inUseTrack;\n            }\n          }\n          if (textTrack) {\n            clearCurrentCues(textTrack);\n          } else {\n            const textTrackKind =\n              this._captionsOrSubtitlesFromCharacteristics(track);\n            textTrack = this.createTextTrack(\n              textTrackKind,\n              track.name,\n              track.lang\n            );\n            if (textTrack) {\n              textTrack.mode = 'disabled';\n            }\n          }\n          if (textTrack) {\n            (textTrack as any).groupId = track.groupId;\n            this.textTracks.push(textTrack);\n          }\n        });\n      } else if (this.tracks.length) {\n        // Create a list of tracks for the provider to consume\n        const tracksList = this.tracks.map((track) => {\n          return {\n            label: track.name,\n            kind: track.type.toLowerCase(),\n            default: track.default,\n            subtitleTrack: track,\n          };\n        });\n        this.hls.trigger(Events.NON_NATIVE_TEXT_TRACKS_FOUND, {\n          tracks: tracksList,\n        });\n      }\n    }\n  }\n\n  private _captionsOrSubtitlesFromCharacteristics(\n    track: MediaPlaylist\n  ): TextTrackKind {\n    if (track.attrs.CHARACTERISTICS) {\n      const transcribesSpokenDialog = /transcribes-spoken-dialog/gi.test(\n        track.attrs.CHARACTERISTICS\n      );\n      const describesMusicAndSound = /describes-music-and-sound/gi.test(\n        track.attrs.CHARACTERISTICS\n      );\n\n      if (transcribesSpokenDialog && describesMusicAndSound) {\n        return 'captions';\n      }\n    }\n\n    return 'subtitles';\n  }\n\n  private onManifestLoaded(\n    event: Events.MANIFEST_LOADED,\n    data: ManifestLoadedData\n  ) {\n    if (this.config.enableCEA708Captions && data.captions) {\n      data.captions.forEach((captionsTrack) => {\n        const instreamIdMatch = /(?:CC|SERVICE)([1-4])/.exec(\n          captionsTrack.instreamId as string\n        );\n        if (!instreamIdMatch) {\n          return;\n        }\n        const trackName = `textTrack${instreamIdMatch[1]}`;\n        const trackProperties: TrackProperties =\n          this.captionsProperties[trackName];\n        if (!trackProperties) {\n          return;\n        }\n        trackProperties.label = captionsTrack.name;\n        if (captionsTrack.lang) {\n          // optional attribute\n          trackProperties.languageCode = captionsTrack.lang;\n        }\n        trackProperties.media = captionsTrack;\n      });\n    }\n  }\n\n  private closedCaptionsForLevel(frag: Fragment): string | undefined {\n    const level = this.hls.levels[frag.level];\n    return level?.attrs['CLOSED-CAPTIONS'];\n  }\n\n  private onFragLoading(event: Events.FRAG_LOADING, data: FragLoadingData) {\n    const { cea608Parser1, cea608Parser2, lastSn, lastPartIndex } = this;\n    if (!this.enabled || !(cea608Parser1 && cea608Parser2)) {\n      return;\n    }\n    // if this frag isn't contiguous, clear the parser so cues with bad start/end times aren't added to the textTrack\n    if (data.frag.type === PlaylistLevelType.MAIN) {\n      const sn = data.frag.sn;\n      const partIndex = data?.part?.index ?? -1;\n      if (\n        !(\n          sn === lastSn + 1 ||\n          (sn === lastSn && partIndex === lastPartIndex + 1)\n        )\n      ) {\n        cea608Parser1.reset();\n        cea608Parser2.reset();\n      }\n      this.lastSn = sn as number;\n      this.lastPartIndex = partIndex;\n    }\n  }\n\n  private onFragLoaded(\n    event: Events.FRAG_LOADED,\n    data: FragDecryptedData | FragLoadedData\n  ) {\n    const { frag, payload } = data;\n    if (frag.type === PlaylistLevelType.SUBTITLE) {\n      // If fragment is subtitle type, parse as WebVTT.\n      if (payload.byteLength) {\n        const decryptData = frag.decryptdata;\n        // fragment after decryption has a stats object\n        const decrypted = 'stats' in data;\n        // If the subtitles are not encrypted, parse VTTs now. Otherwise, we need to wait.\n        if (decryptData == null || !decryptData.encrypted || decrypted) {\n          const trackPlaylistMedia = this.tracks[frag.level];\n          const vttCCs = this.vttCCs;\n          if (!vttCCs[frag.cc]) {\n            vttCCs[frag.cc] = {\n              start: frag.start,\n              prevCC: this.prevCC,\n              new: true,\n            };\n            this.prevCC = frag.cc;\n          }\n          if (\n            trackPlaylistMedia &&\n            trackPlaylistMedia.textCodec === IMSC1_CODEC\n          ) {\n            this._parseIMSC1(frag, payload);\n          } else {\n            this._parseVTTs(data);\n          }\n        }\n      } else {\n        // In case there is no payload, finish unsuccessfully.\n        this.hls.trigger(Events.SUBTITLE_FRAG_PROCESSED, {\n          success: false,\n          frag,\n          error: new Error('Empty subtitle payload'),\n        });\n      }\n    }\n  }\n\n  private _parseIMSC1(frag: Fragment, payload: ArrayBuffer) {\n    const hls = this.hls;\n    parseIMSC1(\n      payload,\n      this.initPTS[frag.cc],\n      (cues) => {\n        this._appendCues(cues, frag.level);\n        hls.trigger(Events.SUBTITLE_FRAG_PROCESSED, {\n          success: true,\n          frag: frag,\n        });\n      },\n      (error) => {\n        logger.log(`Failed to parse IMSC1: ${error}`);\n        hls.trigger(Events.SUBTITLE_FRAG_PROCESSED, {\n          success: false,\n          frag: frag,\n          error,\n        });\n      }\n    );\n  }\n\n  private _parseVTTs(data: FragDecryptedData | FragLoadedData) {\n    const { frag, payload } = data;\n    // We need an initial synchronisation PTS. Store fragments as long as none has arrived\n    const { initPTS, unparsedVttFrags } = this;\n    const maxAvCC = initPTS.length - 1;\n    if (!initPTS[frag.cc] && maxAvCC === -1) {\n      unparsedVttFrags.push(data);\n      return;\n    }\n\n    const hls = this.hls;\n    // Parse the WebVTT file contents.\n    const payloadWebVTT = frag.initSegment?.data\n      ? appendUint8Array(frag.initSegment.data, new Uint8Array(payload))\n      : payload;\n    parseWebVTT(\n      payloadWebVTT,\n      this.initPTS[frag.cc],\n      this.vttCCs,\n      frag.cc,\n      frag.start,\n      (cues) => {\n        this._appendCues(cues, frag.level);\n        hls.trigger(Events.SUBTITLE_FRAG_PROCESSED, {\n          success: true,\n          frag: frag,\n        });\n      },\n      (error) => {\n        const missingInitPTS =\n          error.message === 'Missing initPTS for VTT MPEGTS';\n        if (missingInitPTS) {\n          unparsedVttFrags.push(data);\n        } else {\n          this._fallbackToIMSC1(frag, payload);\n        }\n        // Something went wrong while parsing. Trigger event with success false.\n        logger.log(`Failed to parse VTT cue: ${error}`);\n        if (missingInitPTS && maxAvCC > frag.cc) {\n          return;\n        }\n        hls.trigger(Events.SUBTITLE_FRAG_PROCESSED, {\n          success: false,\n          frag: frag,\n          error,\n        });\n      }\n    );\n  }\n\n  private _fallbackToIMSC1(frag: Fragment, payload: ArrayBuffer) {\n    // If textCodec is unknown, try parsing as IMSC1. Set textCodec based on the result\n    const trackPlaylistMedia = this.tracks[frag.level];\n    if (!trackPlaylistMedia.textCodec) {\n      parseIMSC1(\n        payload,\n        this.initPTS[frag.cc],\n        () => {\n          trackPlaylistMedia.textCodec = IMSC1_CODEC;\n          this._parseIMSC1(frag, payload);\n        },\n        () => {\n          trackPlaylistMedia.textCodec = 'wvtt';\n        }\n      );\n    }\n  }\n\n  private _appendCues(cues: VTTCue[], fragLevel: number) {\n    const hls = this.hls;\n    if (this.config.renderTextTracksNatively) {\n      const textTrack = this.textTracks[fragLevel];\n      // WebVTTParser.parse is an async method and if the currently selected text track mode is set to \"disabled\"\n      // before parsing is done then don't try to access currentTrack.cues.getCueById as cues will be null\n      // and trying to access getCueById method of cues will throw an exception\n      // Because we check if the mode is disabled, we can force check `cues` below. They can't be null.\n      if (!textTrack || textTrack.mode === 'disabled') {\n        return;\n      }\n      cues.forEach((cue) => addCueToTrack(textTrack, cue));\n    } else {\n      const currentTrack = this.tracks[fragLevel];\n      if (!currentTrack) {\n        return;\n      }\n      const track = currentTrack.default ? 'default' : 'subtitles' + fragLevel;\n      hls.trigger(Events.CUES_PARSED, { type: 'subtitles', cues, track });\n    }\n  }\n\n  private onFragDecrypted(\n    event: Events.FRAG_DECRYPTED,\n    data: FragDecryptedData\n  ) {\n    const { frag } = data;\n    if (frag.type === PlaylistLevelType.SUBTITLE) {\n      this.onFragLoaded(Events.FRAG_LOADED, data as unknown as FragLoadedData);\n    }\n  }\n\n  private onSubtitleTracksCleared() {\n    this.tracks = [];\n    this.captionsTracks = {};\n  }\n\n  private onFragParsingUserdata(\n    event: Events.FRAG_PARSING_USERDATA,\n    data: FragParsingUserdataData\n  ) {\n    const { cea608Parser1, cea608Parser2 } = this;\n    if (!this.enabled || !(cea608Parser1 && cea608Parser2)) {\n      return;\n    }\n\n    const { frag, samples } = data;\n    if (\n      frag.type === PlaylistLevelType.MAIN &&\n      this.closedCaptionsForLevel(frag) === 'NONE'\n    ) {\n      return;\n    }\n    // If the event contains captions (found in the bytes property), push all bytes into the parser immediately\n    // It will create the proper timestamps based on the PTS value\n    for (let i = 0; i < samples.length; i++) {\n      const ccBytes = samples[i].bytes;\n      if (ccBytes) {\n        const ccdatas = this.extractCea608Data(ccBytes);\n        cea608Parser1.addData(samples[i].pts, ccdatas[0]);\n        cea608Parser2.addData(samples[i].pts, ccdatas[1]);\n      }\n    }\n  }\n\n  onBufferFlushing(\n    event: Events.BUFFER_FLUSHING,\n    { startOffset, endOffset, endOffsetSubtitles, type }: BufferFlushingData\n  ) {\n    const { media } = this;\n    if (!media || media.currentTime < endOffset) {\n      return;\n    }\n    // Clear 608 caption cues from the captions TextTracks when the video back buffer is flushed\n    // Forward cues are never removed because we can loose streamed 608 content from recent fragments\n    if (!type || type === 'video') {\n      const { captionsTracks } = this;\n      Object.keys(captionsTracks).forEach((trackName) =>\n        removeCuesInRange(captionsTracks[trackName], startOffset, endOffset)\n      );\n    }\n    if (this.config.renderTextTracksNatively) {\n      // Clear VTT/IMSC1 subtitle cues from the subtitle TextTracks when the back buffer is flushed\n      if (startOffset === 0 && endOffsetSubtitles !== undefined) {\n        const { textTracks } = this;\n        Object.keys(textTracks).forEach((trackName) =>\n          removeCuesInRange(\n            textTracks[trackName],\n            startOffset,\n            endOffsetSubtitles\n          )\n        );\n      }\n    }\n  }\n\n  private extractCea608Data(byteArray: Uint8Array): number[][] {\n    const actualCCBytes: number[][] = [[], []];\n    const count = byteArray[0] & 0x1f;\n    let position = 2;\n\n    for (let j = 0; j < count; j++) {\n      const tmpByte = byteArray[position++];\n      const ccbyte1 = 0x7f & byteArray[position++];\n      const ccbyte2 = 0x7f & byteArray[position++];\n      if (ccbyte1 === 0 && ccbyte2 === 0) {\n        continue;\n      }\n      const ccValid = (0x04 & tmpByte) !== 0; // Support all four channels\n      if (ccValid) {\n        const ccType = 0x03 & tmpByte;\n        if (\n          0x00 /* CEA608 field1*/ === ccType ||\n          0x01 /* CEA608 field2*/ === ccType\n        ) {\n          // Exclude CEA708 CC data.\n          actualCCBytes[ccType].push(ccbyte1);\n          actualCCBytes[ccType].push(ccbyte2);\n        }\n      }\n    }\n    return actualCCBytes;\n  }\n}\n\nfunction canReuseVttTextTrack(\n  inUseTrack: (TextTrack & { textTrack1?; textTrack2? }) | null,\n  manifestTrack: MediaPlaylist\n): boolean {\n  return (\n    !!inUseTrack &&\n    inUseTrack.label === manifestTrack.name &&\n    !(inUseTrack.textTrack1 || inUseTrack.textTrack2)\n  );\n}\n\nfunction intersection(x1: number, x2: number, y1: number, y2: number): number {\n  return Math.min(x2, y2) - Math.max(x1, y1);\n}\n\nfunction newVTTCCs(): VTTCCs {\n  return {\n    ccOffset: 0,\n    presentationOffset: 0,\n    0: {\n      start: 0,\n      prevCC: -1,\n      new: true,\n    },\n  };\n}\n","import { Events } from '../events';\nimport { Level } from '../types/level';\nimport { AttrList } from '../utils/attr-list';\nimport { addGroupId } from './level-controller';\nimport { ErrorActionFlags, NetworkErrorAction } from './error-controller';\nimport { logger } from '../utils/logger';\nimport type Hls from '../hls';\nimport type { NetworkComponentAPI } from '../types/component-api';\nimport type {\n  ErrorData,\n  ManifestLoadedData,\n  ManifestParsedData,\n} from '../types/events';\nimport type { RetryConfig } from '../config';\nimport type {\n  Loader,\n  LoaderCallbacks,\n  LoaderConfiguration,\n  LoaderContext,\n  LoaderResponse,\n  LoaderStats,\n} from '../types/loader';\nimport type { LevelParsed } from '../types/level';\nimport type { MediaAttributes, MediaPlaylist } from '../types/media-playlist';\n\nexport type SteeringManifest = {\n  VERSION: 1;\n  TTL: number;\n  'RELOAD-URI'?: string;\n  'PATHWAY-PRIORITY': string[];\n  'PATHWAY-CLONES'?: PathwayClone[];\n};\n\ntype PathwayClone = {\n  'BASE-ID': string;\n  ID: string;\n  'URI-REPLACEMENT': UriReplacement;\n};\n\ntype UriReplacement = {\n  HOST?: string;\n  PARAMS?: { [queryParameter: string]: string };\n  'PER-VARIANT-URIS'?: { [stableVariantId: string]: string };\n  'PER-RENDITION-URIS'?: { [stableRenditionId: string]: string };\n};\n\nconst PATHWAY_PENALTY_DURATION_MS = 300000;\n\nexport default class ContentSteeringController implements NetworkComponentAPI {\n  private readonly hls: Hls;\n  private log: (msg: any) => void;\n  private loader: Loader<LoaderContext> | null = null;\n  private uri: string | null = null;\n  private pathwayId: string = '.';\n  private pathwayPriority: string[] | null = null;\n  private timeToLoad: number = 300;\n  private reloadTimer: number = -1;\n  private updated: number = 0;\n  private started: boolean = false;\n  private enabled: boolean = true;\n  private levels: Level[] | null = null;\n  private audioTracks: MediaPlaylist[] | null = null;\n  private subtitleTracks: MediaPlaylist[] | null = null;\n  private penalizedPathways: { [pathwayId: string]: number } = {};\n\n  constructor(hls: Hls) {\n    this.hls = hls;\n    this.log = logger.log.bind(logger, `[content-steering]:`);\n    this.registerListeners();\n  }\n\n  private registerListeners() {\n    const hls = this.hls;\n    hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    hls.on(Events.MANIFEST_LOADED, this.onManifestLoaded, this);\n    hls.on(Events.MANIFEST_PARSED, this.onManifestParsed, this);\n    hls.on(Events.ERROR, this.onError, this);\n  }\n\n  private unregisterListeners() {\n    const hls = this.hls;\n    if (!hls) {\n      return;\n    }\n    hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    hls.off(Events.MANIFEST_LOADED, this.onManifestLoaded, this);\n    hls.off(Events.MANIFEST_PARSED, this.onManifestParsed, this);\n    hls.off(Events.ERROR, this.onError, this);\n  }\n\n  startLoad(): void {\n    this.started = true;\n    self.clearTimeout(this.reloadTimer);\n    if (this.enabled && this.uri) {\n      if (this.updated) {\n        const ttl = Math.max(\n          this.timeToLoad * 1000 - (performance.now() - this.updated),\n          0\n        );\n        this.scheduleRefresh(this.uri, ttl);\n      } else {\n        this.loadSteeringManifest(this.uri);\n      }\n    }\n  }\n\n  stopLoad(): void {\n    this.started = false;\n    if (this.loader) {\n      this.loader.destroy();\n      this.loader = null;\n    }\n    self.clearTimeout(this.reloadTimer);\n  }\n\n  destroy() {\n    this.unregisterListeners();\n    this.stopLoad();\n    // @ts-ignore\n    this.hls = null;\n    this.levels = this.audioTracks = this.subtitleTracks = null;\n  }\n\n  removeLevel(levelToRemove: Level) {\n    const levels = this.levels;\n    if (levels) {\n      this.levels = levels.filter((level) => level !== levelToRemove);\n    }\n  }\n\n  private onManifestLoading() {\n    this.stopLoad();\n    this.enabled = true;\n    this.timeToLoad = 300;\n    this.updated = 0;\n    this.uri = null;\n    this.pathwayId = '.';\n    this.levels = this.audioTracks = this.subtitleTracks = null;\n  }\n\n  private onManifestLoaded(\n    event: Events.MANIFEST_LOADED,\n    data: ManifestLoadedData\n  ) {\n    const { contentSteering } = data;\n    if (contentSteering === null) {\n      return;\n    }\n    this.pathwayId = contentSteering.pathwayId;\n    this.uri = contentSteering.uri;\n    if (this.started) {\n      this.startLoad();\n    }\n  }\n\n  private onManifestParsed(\n    event: Events.MANIFEST_PARSED,\n    data: ManifestParsedData\n  ) {\n    this.audioTracks = data.audioTracks;\n    this.subtitleTracks = data.subtitleTracks;\n  }\n\n  private onError(event: Events.ERROR, data: ErrorData) {\n    const { errorAction } = data;\n    if (\n      errorAction?.action === NetworkErrorAction.SendAlternateToPenaltyBox &&\n      errorAction.flags === ErrorActionFlags.MoveAllAlternatesMatchingHost\n    ) {\n      let pathwayPriority = this.pathwayPriority;\n      const pathwayId = this.pathwayId;\n      if (!this.penalizedPathways[pathwayId]) {\n        this.penalizedPathways[pathwayId] = performance.now();\n      }\n      if (!pathwayPriority && this.levels) {\n        // If PATHWAY-PRIORITY was not provided, list pathways for error handling\n        pathwayPriority = this.levels.reduce((pathways, level) => {\n          if (pathways.indexOf(level.pathwayId) === -1) {\n            pathways.push(level.pathwayId);\n          }\n          return pathways;\n        }, [] as string[]);\n      }\n      if (pathwayPriority && pathwayPriority.length > 1) {\n        this.updatePathwayPriority(pathwayPriority);\n        errorAction.resolved = this.pathwayId !== pathwayId;\n      }\n    }\n  }\n\n  public filterParsedLevels(levels: Level[]): Level[] {\n    // Filter levels to only include those that are in the initial pathway\n    this.levels = levels;\n    let pathwayLevels = this.getLevelsForPathway(this.pathwayId);\n    if (pathwayLevels.length === 0) {\n      const pathwayId = levels[0].pathwayId;\n      this.log(\n        `No levels found in Pathway ${this.pathwayId}. Setting initial Pathway to \"${pathwayId}\"`\n      );\n      pathwayLevels = this.getLevelsForPathway(pathwayId);\n      this.pathwayId = pathwayId;\n    }\n    if (pathwayLevels.length !== levels.length) {\n      this.log(\n        `Found ${pathwayLevels.length}/${levels.length} levels in Pathway \"${this.pathwayId}\"`\n      );\n      return pathwayLevels;\n    }\n    return levels;\n  }\n\n  private getLevelsForPathway(pathwayId: string): Level[] {\n    if (this.levels === null) {\n      return [];\n    }\n    return this.levels.filter((level) => pathwayId === level.pathwayId);\n  }\n\n  private updatePathwayPriority(pathwayPriority: string[]) {\n    this.pathwayPriority = pathwayPriority;\n    let levels: Level[] | undefined;\n\n    // Evaluate if we should remove the pathway from the penalized list\n    const penalizedPathways = this.penalizedPathways;\n    const now = performance.now();\n    Object.keys(penalizedPathways).forEach((pathwayId) => {\n      if (now - penalizedPathways[pathwayId] > PATHWAY_PENALTY_DURATION_MS) {\n        delete penalizedPathways[pathwayId];\n      }\n    });\n    for (let i = 0; i < pathwayPriority.length; i++) {\n      const pathwayId = pathwayPriority[i];\n      if (penalizedPathways[pathwayId]) {\n        continue;\n      }\n      if (pathwayId === this.pathwayId) {\n        return;\n      }\n      const selectedIndex = this.hls.nextLoadLevel;\n      const selectedLevel: Level = this.hls.levels[selectedIndex];\n      levels = this.getLevelsForPathway(pathwayId);\n      if (levels.length > 0) {\n        this.log(`Setting Pathway to \"${pathwayId}\"`);\n        this.pathwayId = pathwayId;\n        this.hls.trigger(Events.LEVELS_UPDATED, { levels });\n        // Set LevelController's level to trigger LEVEL_SWITCHING which loads playlist if needed\n        const levelAfterChange = this.hls.levels[selectedIndex];\n        if (selectedLevel && levelAfterChange && this.levels) {\n          if (\n            levelAfterChange.attrs['STABLE-VARIANT-ID'] !==\n              selectedLevel.attrs['STABLE-VARIANT-ID'] &&\n            levelAfterChange.bitrate !== selectedLevel.bitrate\n          ) {\n            this.log(\n              `Unstable Pathways change from bitrate ${selectedLevel.bitrate} to ${levelAfterChange.bitrate}`\n            );\n          }\n          this.hls.nextLoadLevel = selectedIndex;\n        }\n        break;\n      }\n    }\n  }\n\n  private clonePathways(pathwayClones: PathwayClone[]) {\n    const levels = this.levels;\n    if (!levels) {\n      return;\n    }\n    const audioGroupCloneMap: Record<string, string> = {};\n    const subtitleGroupCloneMap: Record<string, string> = {};\n    pathwayClones.forEach((pathwayClone) => {\n      const {\n        ID: cloneId,\n        'BASE-ID': baseId,\n        'URI-REPLACEMENT': uriReplacement,\n      } = pathwayClone;\n      if (levels.some((level) => level.pathwayId === cloneId)) {\n        return;\n      }\n      const clonedVariants = this.getLevelsForPathway(baseId).map(\n        (baseLevel) => {\n          const levelParsed: LevelParsed = Object.assign({}, baseLevel as any);\n          levelParsed.details = undefined;\n          levelParsed.url = performUriReplacement(\n            baseLevel.uri,\n            baseLevel.attrs['STABLE-VARIANT-ID'],\n            'PER-VARIANT-URIS',\n            uriReplacement\n          );\n          const attributes = new AttrList(baseLevel.attrs);\n          attributes['PATHWAY-ID'] = cloneId;\n          const clonedAudioGroupId: string | undefined =\n            attributes.AUDIO && `${attributes.AUDIO}_clone_${cloneId}`;\n          const clonedSubtitleGroupId: string | undefined =\n            attributes.SUBTITLES && `${attributes.SUBTITLES}_clone_${cloneId}`;\n          if (clonedAudioGroupId) {\n            audioGroupCloneMap[attributes.AUDIO] = clonedAudioGroupId;\n            attributes.AUDIO = clonedAudioGroupId;\n          }\n          if (clonedSubtitleGroupId) {\n            subtitleGroupCloneMap[attributes.SUBTITLES] = clonedSubtitleGroupId;\n            attributes.SUBTITLES = clonedSubtitleGroupId;\n          }\n          levelParsed.attrs = attributes;\n          const clonedLevel = new Level(levelParsed);\n          addGroupId(clonedLevel, 'audio', clonedAudioGroupId);\n          addGroupId(clonedLevel, 'text', clonedSubtitleGroupId);\n          return clonedLevel;\n        }\n      );\n      levels.push(...clonedVariants);\n      cloneRenditionGroups(\n        this.audioTracks,\n        audioGroupCloneMap,\n        uriReplacement,\n        cloneId\n      );\n      cloneRenditionGroups(\n        this.subtitleTracks,\n        subtitleGroupCloneMap,\n        uriReplacement,\n        cloneId\n      );\n    });\n  }\n\n  private loadSteeringManifest(uri: string) {\n    const config = this.hls.config;\n    const Loader = config.loader;\n    if (this.loader) {\n      this.loader.destroy();\n    }\n    this.loader = new Loader(config) as Loader<LoaderContext>;\n\n    let url: URL;\n    try {\n      url = new self.URL(uri);\n    } catch (error) {\n      this.enabled = false;\n      this.log(`Failed to parse Steering Manifest URI: ${uri}`);\n      return;\n    }\n    if (url.protocol !== 'data:') {\n      const throughput =\n        (this.hls.bandwidthEstimate || config.abrEwmaDefaultEstimate) | 0;\n      url.searchParams.set('_HLS_pathway', this.pathwayId);\n      url.searchParams.set('_HLS_throughput', '' + throughput);\n    }\n    const context: LoaderContext = {\n      responseType: 'json',\n      url: url.href,\n    };\n\n    const loadPolicy = config.steeringManifestLoadPolicy.default;\n    const legacyRetryCompatibility: RetryConfig | Record<string, void> =\n      loadPolicy.errorRetry || loadPolicy.timeoutRetry || {};\n    const loaderConfig: LoaderConfiguration = {\n      loadPolicy,\n      timeout: loadPolicy.maxLoadTimeMs,\n      maxRetry: legacyRetryCompatibility.maxNumRetry || 0,\n      retryDelay: legacyRetryCompatibility.retryDelayMs || 0,\n      maxRetryDelay: legacyRetryCompatibility.maxRetryDelayMs || 0,\n    };\n\n    const callbacks: LoaderCallbacks<LoaderContext> = {\n      onSuccess: (\n        response: LoaderResponse,\n        stats: LoaderStats,\n        context: LoaderContext,\n        networkDetails: any\n      ) => {\n        this.log(`Loaded steering manifest: \"${url}\"`);\n        const steeringData = response.data as SteeringManifest;\n        if (steeringData.VERSION !== 1) {\n          this.log(`Steering VERSION ${steeringData.VERSION} not supported!`);\n          return;\n        }\n        this.updated = performance.now();\n        this.timeToLoad = steeringData.TTL;\n        const {\n          'RELOAD-URI': reloadUri,\n          'PATHWAY-CLONES': pathwayClones,\n          'PATHWAY-PRIORITY': pathwayPriority,\n        } = steeringData;\n        if (reloadUri) {\n          try {\n            this.uri = new self.URL(reloadUri, url).href;\n          } catch (error) {\n            this.enabled = false;\n            this.log(\n              `Failed to parse Steering Manifest RELOAD-URI: ${reloadUri}`\n            );\n            return;\n          }\n        }\n        this.scheduleRefresh(this.uri || context.url);\n        if (pathwayClones) {\n          this.clonePathways(pathwayClones);\n        }\n        if (pathwayPriority) {\n          this.updatePathwayPriority(pathwayPriority);\n        }\n      },\n\n      onError: (\n        error: { code: number; text: string },\n        context: LoaderContext,\n        networkDetails: any,\n        stats: LoaderStats\n      ) => {\n        this.log(\n          `Error loading steering manifest: ${error.code} ${error.text} (${context.url})`\n        );\n        this.stopLoad();\n        if (error.code === 410) {\n          this.enabled = false;\n          this.log(`Steering manifest ${context.url} no longer available`);\n          return;\n        }\n        let ttl = this.timeToLoad * 1000;\n        if (error.code === 429) {\n          const loader = this.loader;\n          if (typeof loader?.getResponseHeader === 'function') {\n            const retryAfter = loader.getResponseHeader('Retry-After');\n            if (retryAfter) {\n              ttl = parseFloat(retryAfter) * 1000;\n            }\n          }\n          this.log(`Steering manifest ${context.url} rate limited`);\n          return;\n        }\n        this.scheduleRefresh(this.uri || context.url, ttl);\n      },\n\n      onTimeout: (\n        stats: LoaderStats,\n        context: LoaderContext,\n        networkDetails: any\n      ) => {\n        this.log(`Timeout loading steering manifest (${context.url})`);\n        this.scheduleRefresh(this.uri || context.url);\n      },\n    };\n\n    this.log(`Requesting steering manifest: ${url}`);\n    this.loader.load(context, loaderConfig, callbacks);\n  }\n\n  private scheduleRefresh(uri: string, ttlMs: number = this.timeToLoad * 1000) {\n    self.clearTimeout(this.reloadTimer);\n    this.reloadTimer = self.setTimeout(() => {\n      this.loadSteeringManifest(uri);\n    }, ttlMs);\n  }\n}\n\nfunction cloneRenditionGroups(\n  tracks: MediaPlaylist[] | null,\n  groupCloneMap: Record<string, string>,\n  uriReplacement: UriReplacement,\n  cloneId: string\n) {\n  if (!tracks) {\n    return;\n  }\n  Object.keys(groupCloneMap).forEach((audioGroupId) => {\n    const clonedTracks = tracks\n      .filter((track) => track.groupId === audioGroupId)\n      .map((track) => {\n        const clonedTrack = Object.assign({}, track);\n        clonedTrack.details = undefined;\n        clonedTrack.attrs = new AttrList(clonedTrack.attrs) as MediaAttributes;\n        clonedTrack.url = clonedTrack.attrs.URI = performUriReplacement(\n          track.url,\n          track.attrs['STABLE-RENDITION-ID'],\n          'PER-RENDITION-URIS',\n          uriReplacement\n        );\n        clonedTrack.groupId = clonedTrack.attrs['GROUP-ID'] =\n          groupCloneMap[audioGroupId];\n        clonedTrack.attrs['PATHWAY-ID'] = cloneId;\n        return clonedTrack;\n      });\n    tracks.push(...clonedTracks);\n  });\n}\n\nfunction performUriReplacement(\n  uri: string,\n  stableId: string | undefined,\n  perOptionKey: 'PER-VARIANT-URIS' | 'PER-RENDITION-URIS',\n  uriReplacement: UriReplacement\n): string {\n  const {\n    HOST: host,\n    PARAMS: params,\n    [perOptionKey]: perOptionUris,\n  } = uriReplacement;\n  let perVariantUri;\n  if (stableId) {\n    perVariantUri = perOptionUris?.[stableId];\n    if (perVariantUri) {\n      uri = perVariantUri;\n    }\n  }\n  const url = new self.URL(uri);\n  if (host && !perVariantUri) {\n    url.host = host;\n  }\n  if (params) {\n    Object.keys(params)\n      .sort()\n      .forEach((key) => {\n        if (key) {\n          url.searchParams.set(key, params[key]);\n        }\n      });\n  }\n  return url.href;\n}\n","import {\n  LoaderCallbacks,\n  LoaderContext,\n  Loader,\n  LoaderStats,\n  LoaderConfiguration,\n  LoaderOnProgress,\n  LoaderResponse,\n} from '../types/loader';\nimport { LoadStats } from '../loader/load-stats';\nimport ChunkCache from '../demux/chunk-cache';\n\nexport function fetchSupported() {\n  if (\n    // @ts-ignore\n    self.fetch &&\n    self.AbortController &&\n    self.ReadableStream &&\n    self.Request\n  ) {\n    try {\n      new self.ReadableStream({}); // eslint-disable-line no-new\n      return true;\n    } catch (e) {\n      /* noop */\n    }\n  }\n  return false;\n}\n\nconst BYTERANGE = /(\\d+)-(\\d+)\\/(\\d+)/;\n\nclass FetchLoader implements Loader<LoaderContext> {\n  private fetchSetup: Function;\n  private requestTimeout?: number;\n  private request!: Request;\n  private response!: Response;\n  private controller: AbortController;\n  public context!: LoaderContext;\n  private config: LoaderConfiguration | null = null;\n  private callbacks: LoaderCallbacks<LoaderContext> | null = null;\n  public stats: LoaderStats;\n  private loader: Response | null = null;\n\n  constructor(config /* HlsConfig */) {\n    this.fetchSetup = config.fetchSetup || getRequest;\n    this.controller = new self.AbortController();\n    this.stats = new LoadStats();\n  }\n\n  destroy(): void {\n    this.loader = this.callbacks = null;\n    this.abortInternal();\n  }\n\n  abortInternal(): void {\n    const response = this.response;\n    if (!response?.ok) {\n      this.stats.aborted = true;\n      this.controller.abort();\n    }\n  }\n\n  abort(): void {\n    this.abortInternal();\n    if (this.callbacks?.onAbort) {\n      this.callbacks.onAbort(this.stats, this.context, this.response);\n    }\n  }\n\n  load(\n    context: LoaderContext,\n    config: LoaderConfiguration,\n    callbacks: LoaderCallbacks<LoaderContext>\n  ): void {\n    const stats = this.stats;\n    if (stats.loading.start) {\n      throw new Error('Loader can only be used once.');\n    }\n    stats.loading.start = self.performance.now();\n\n    const initParams = getRequestParameters(context, this.controller.signal);\n    const onProgress: LoaderOnProgress<LoaderContext> | undefined =\n      callbacks.onProgress;\n    const isArrayBuffer = context.responseType === 'arraybuffer';\n    const LENGTH = isArrayBuffer ? 'byteLength' : 'length';\n    const { maxTimeToFirstByteMs, maxLoadTimeMs } = config.loadPolicy;\n\n    this.context = context;\n    this.config = config;\n    this.callbacks = callbacks;\n    this.request = this.fetchSetup(context, initParams);\n    self.clearTimeout(this.requestTimeout);\n    config.timeout =\n      maxTimeToFirstByteMs && Number.isFinite(maxTimeToFirstByteMs)\n        ? maxTimeToFirstByteMs\n        : maxLoadTimeMs;\n    this.requestTimeout = self.setTimeout(() => {\n      this.abortInternal();\n      callbacks.onTimeout(stats, context, this.response);\n    }, config.timeout);\n\n    self\n      .fetch(this.request)\n      .then((response: Response): Promise<string | ArrayBuffer> => {\n        this.response = this.loader = response;\n\n        const first = Math.max(self.performance.now(), stats.loading.start);\n\n        self.clearTimeout(this.requestTimeout);\n        config.timeout = maxLoadTimeMs;\n        this.requestTimeout = self.setTimeout(() => {\n          this.abortInternal();\n          callbacks.onTimeout(stats, context, this.response);\n        }, maxLoadTimeMs - (first - stats.loading.start));\n\n        if (!response.ok) {\n          const { status, statusText } = response;\n          throw new FetchError(\n            statusText || 'fetch, bad network response',\n            status,\n            response\n          );\n        }\n        stats.loading.first = first;\n\n        stats.total = getContentLength(response.headers) || stats.total;\n\n        if (onProgress && Number.isFinite(config.highWaterMark)) {\n          return this.loadProgressively(\n            response,\n            stats,\n            context,\n            config.highWaterMark,\n            onProgress\n          );\n        }\n\n        if (isArrayBuffer) {\n          return response.arrayBuffer();\n        }\n        if (context.responseType === 'json') {\n          return response.json();\n        }\n        return response.text();\n      })\n      .then((responseData: string | ArrayBuffer) => {\n        const { response } = this;\n        self.clearTimeout(this.requestTimeout);\n        stats.loading.end = Math.max(\n          self.performance.now(),\n          stats.loading.first\n        );\n        const total = responseData[LENGTH];\n        if (total) {\n          stats.loaded = stats.total = total;\n        }\n\n        const loaderResponse: LoaderResponse = {\n          url: response.url,\n          data: responseData,\n          code: response.status,\n        };\n\n        if (onProgress && !Number.isFinite(config.highWaterMark)) {\n          onProgress(stats, context, responseData, response);\n        }\n\n        callbacks.onSuccess(loaderResponse, stats, context, response);\n      })\n      .catch((error) => {\n        self.clearTimeout(this.requestTimeout);\n        if (stats.aborted) {\n          return;\n        }\n        // CORS errors result in an undefined code. Set it to 0 here to align with XHR's behavior\n        // when destroying, 'error' itself can be undefined\n        const code: number = !error ? 0 : error.code || 0;\n        const text: string = !error ? null : error.message;\n        callbacks.onError(\n          { code, text },\n          context,\n          error ? error.details : null,\n          stats\n        );\n      });\n  }\n\n  getCacheAge(): number | null {\n    let result: number | null = null;\n    if (this.response) {\n      const ageHeader = this.response.headers.get('age');\n      result = ageHeader ? parseFloat(ageHeader) : null;\n    }\n    return result;\n  }\n\n  getResponseHeader(name: string): string | null {\n    return this.response ? this.response.headers.get(name) : null;\n  }\n\n  private loadProgressively(\n    response: Response,\n    stats: LoaderStats,\n    context: LoaderContext,\n    highWaterMark: number = 0,\n    onProgress: LoaderOnProgress<LoaderContext>\n  ): Promise<ArrayBuffer> {\n    const chunkCache = new ChunkCache();\n    const reader = (response.body as ReadableStream).getReader();\n\n    const pump = (): Promise<ArrayBuffer> => {\n      return reader\n        .read()\n        .then((data) => {\n          if (data.done) {\n            if (chunkCache.dataLength) {\n              onProgress(stats, context, chunkCache.flush(), response);\n            }\n\n            return Promise.resolve(new ArrayBuffer(0));\n          }\n          const chunk: Uint8Array = data.value;\n          const len = chunk.length;\n          stats.loaded += len;\n          if (len < highWaterMark || chunkCache.dataLength) {\n            // The current chunk is too small to to be emitted or the cache already has data\n            // Push it to the cache\n            chunkCache.push(chunk);\n            if (chunkCache.dataLength >= highWaterMark) {\n              // flush in order to join the typed arrays\n              onProgress(stats, context, chunkCache.flush(), response);\n            }\n          } else {\n            // If there's nothing cached already, and the chache is large enough\n            // just emit the progress event\n            onProgress(stats, context, chunk, response);\n          }\n          return pump();\n        })\n        .catch(() => {\n          /* aborted */\n          return Promise.reject();\n        });\n    };\n\n    return pump();\n  }\n}\n\nfunction getRequestParameters(context: LoaderContext, signal): any {\n  const initParams: any = {\n    method: 'GET',\n    mode: 'cors',\n    credentials: 'same-origin',\n    signal,\n    headers: new self.Headers(Object.assign({}, context.headers)),\n  };\n\n  if (context.rangeEnd) {\n    initParams.headers.set(\n      'Range',\n      'bytes=' + context.rangeStart + '-' + String(context.rangeEnd - 1)\n    );\n  }\n\n  return initParams;\n}\n\nfunction getByteRangeLength(byteRangeHeader: string): number | undefined {\n  const result = BYTERANGE.exec(byteRangeHeader);\n  if (result) {\n    return parseInt(result[2]) - parseInt(result[1]) + 1;\n  }\n}\n\nfunction getContentLength(headers: Headers): number | undefined {\n  const contentRange = headers.get('Content-Range');\n  if (contentRange) {\n    const byteRangeLength = getByteRangeLength(contentRange);\n    if (Number.isFinite(byteRangeLength)) {\n      return byteRangeLength;\n    }\n  }\n  const contentLength = headers.get('Content-Length');\n  if (contentLength) {\n    return parseInt(contentLength);\n  }\n}\n\nfunction getRequest(context: LoaderContext, initParams: any): Request {\n  return new self.Request(context.url, initParams);\n}\n\nclass FetchError extends Error {\n  public code: number;\n  public details: any;\n  constructor(message: string, code: number, details: any) {\n    super(message);\n    this.code = code;\n    this.details = details;\n  }\n}\n\nexport default FetchLoader;\n","import AbrController from './controller/abr-controller';\nimport AudioStreamController from './controller/audio-stream-controller';\nimport AudioTrackController from './controller/audio-track-controller';\nimport { SubtitleStreamController } from './controller/subtitle-stream-controller';\nimport SubtitleTrackController from './controller/subtitle-track-controller';\nimport BufferController from './controller/buffer-controller';\nimport { TimelineController } from './controller/timeline-controller';\nimport CapLevelController from './controller/cap-level-controller';\nimport FPSController from './controller/fps-controller';\nimport EMEController, {\n  MediaKeySessionContext,\n} from './controller/eme-controller';\nimport CMCDController from './controller/cmcd-controller';\nimport ContentSteeringController from './controller/content-steering-controller';\nimport ErrorController from './controller/error-controller';\nimport XhrLoader from './utils/xhr-loader';\nimport FetchLoader, { fetchSupported } from './utils/fetch-loader';\nimport Cues from './utils/cues';\nimport { requestMediaKeySystemAccess } from './utils/mediakeys-helper';\nimport { ILogger, logger } from './utils/logger';\n\nimport type Hls from './hls';\nimport type { CuesInterface } from './utils/cues';\nimport type { MediaKeyFunc, KeySystems } from './utils/mediakeys-helper';\nimport type {\n  FragmentLoaderContext,\n  Loader,\n  LoaderContext,\n  PlaylistLoaderContext,\n} from './types/loader';\n\nexport type ABRControllerConfig = {\n  abrEwmaFastLive: number;\n  abrEwmaSlowLive: number;\n  abrEwmaFastVoD: number;\n  abrEwmaSlowVoD: number;\n  /**\n   * Default bandwidth estimate in bits/s prior to collecting fragment bandwidth samples\n   */\n  abrEwmaDefaultEstimate: number;\n  abrBandWidthFactor: number;\n  abrBandWidthUpFactor: number;\n  abrMaxWithRealBitrate: boolean;\n  maxStarvationDelay: number;\n  maxLoadingDelay: number;\n};\n\nexport type BufferControllerConfig = {\n  appendErrorMaxRetry: number;\n  backBufferLength: number;\n  liveDurationInfinity: boolean;\n  /**\n   * @deprecated use backBufferLength\n   */\n  liveBackBufferLength: number | null;\n};\n\nexport type CapLevelControllerConfig = {\n  capLevelToPlayerSize: boolean;\n};\n\nexport type CMCDControllerConfig = {\n  sessionId?: string;\n  contentId?: string;\n  useHeaders?: boolean;\n};\n\nexport type DRMSystemOptions = {\n  audioRobustness?: string;\n  videoRobustness?: string;\n  audioEncryptionScheme?: string | null;\n  videoEncryptionScheme?: string | null;\n  persistentState?: MediaKeysRequirement;\n  distinctiveIdentifier?: MediaKeysRequirement;\n  sessionTypes?: string[];\n  sessionType?: string;\n};\n\nexport type DRMSystemConfiguration = {\n  licenseUrl: string;\n  serverCertificateUrl?: string;\n  generateRequest?: (\n    this: Hls,\n    initDataType: string,\n    initData: ArrayBuffer | null,\n    keyContext: MediaKeySessionContext\n  ) =>\n    | { initDataType: string; initData: ArrayBuffer | null }\n    | undefined\n    | never;\n};\n\nexport type DRMSystemsConfiguration = Partial<\n  Record<KeySystems, DRMSystemConfiguration>\n>;\n\nexport type EMEControllerConfig = {\n  licenseXhrSetup?: (\n    this: Hls,\n    xhr: XMLHttpRequest,\n    url: string,\n    keyContext: MediaKeySessionContext,\n    licenseChallenge: Uint8Array\n  ) => void | Uint8Array | Promise<Uint8Array | void>;\n  licenseResponseCallback?: (\n    this: Hls,\n    xhr: XMLHttpRequest,\n    url: string,\n    keyContext: MediaKeySessionContext\n  ) => ArrayBuffer;\n  emeEnabled: boolean;\n  widevineLicenseUrl?: string;\n  drmSystems: DRMSystemsConfiguration;\n  drmSystemOptions: DRMSystemOptions;\n  requestMediaKeySystemAccessFunc: MediaKeyFunc | null;\n};\n\nexport interface FragmentLoaderConstructor {\n  new (confg: HlsConfig): Loader<FragmentLoaderContext>;\n}\n\n/**\n * @deprecated use fragLoadPolicy.default\n */\nexport type FragmentLoaderConfig = {\n  fragLoadingTimeOut: number;\n  fragLoadingMaxRetry: number;\n  fragLoadingRetryDelay: number;\n  fragLoadingMaxRetryTimeout: number;\n};\n\nexport type FPSControllerConfig = {\n  capLevelOnFPSDrop: boolean;\n  fpsDroppedMonitoringPeriod: number;\n  fpsDroppedMonitoringThreshold: number;\n};\n\nexport type LevelControllerConfig = {\n  startLevel?: number;\n};\n\nexport type MP4RemuxerConfig = {\n  stretchShortVideoTrack: boolean;\n  maxAudioFramesDrift: number;\n};\n\nexport interface PlaylistLoaderConstructor {\n  new (confg: HlsConfig): Loader<PlaylistLoaderContext>;\n}\n\n/**\n * @deprecated use manifestLoadPolicy.default and playlistLoadPolicy.default\n */\nexport type PlaylistLoaderConfig = {\n  manifestLoadingTimeOut: number;\n  manifestLoadingMaxRetry: number;\n  manifestLoadingRetryDelay: number;\n  manifestLoadingMaxRetryTimeout: number;\n\n  levelLoadingTimeOut: number;\n  levelLoadingMaxRetry: number;\n  levelLoadingRetryDelay: number;\n  levelLoadingMaxRetryTimeout: number;\n};\n\nexport type HlsLoadPolicies = {\n  fragLoadPolicy: LoadPolicy;\n  keyLoadPolicy: LoadPolicy;\n  certLoadPolicy: LoadPolicy;\n  playlistLoadPolicy: LoadPolicy;\n  manifestLoadPolicy: LoadPolicy;\n  steeringManifestLoadPolicy: LoadPolicy;\n};\n\nexport type LoadPolicy = {\n  default: LoaderConfig;\n};\n\nexport type LoaderConfig = {\n  maxTimeToFirstByteMs: number; // Max time to first byte\n  maxLoadTimeMs: number; // Max time for load completion\n  timeoutRetry: RetryConfig | null;\n  errorRetry: RetryConfig | null;\n};\n\nexport type RetryConfig = {\n  maxNumRetry: number; // Maximum number of retries\n  retryDelayMs: number; // Retry delay = 2^retryCount * retryDelayMs (exponential) or retryCount * retryDelayMs (linear)\n  maxRetryDelayMs: number; // Maximum delay between retries\n  backoff?: 'exponential' | 'linear'; // used to determine retry backoff duration (see retryDelayMs)\n};\n\nexport type StreamControllerConfig = {\n  autoStartLoad: boolean;\n  startPosition: number;\n  defaultAudioCodec?: string;\n  initialLiveManifestSize: number;\n  maxBufferLength: number;\n  maxBufferSize: number;\n  maxBufferHole: number;\n  highBufferWatchdogPeriod: number;\n  nudgeOffset: number;\n  nudgeMaxRetry: number;\n  maxFragLookUpTolerance: number;\n  maxMaxBufferLength: number;\n  startFragPrefetch: boolean;\n  testBandwidth: boolean;\n};\n\nexport type LatencyControllerConfig = {\n  liveSyncDurationCount: number;\n  liveMaxLatencyDurationCount: number;\n  liveSyncDuration?: number;\n  liveMaxLatencyDuration?: number;\n  maxLiveSyncPlaybackRate: number;\n};\n\nexport type MetadataControllerConfig = {\n  enableDateRangeMetadataCues: boolean;\n  enableEmsgMetadataCues: boolean;\n  enableID3MetadataCues: boolean;\n};\n\nexport type TimelineControllerConfig = {\n  cueHandler: CuesInterface;\n  enableWebVTT: boolean;\n  enableIMSC1: boolean;\n  enableCEA708Captions: boolean;\n  captionsTextTrack1Label: string;\n  captionsTextTrack1LanguageCode: string;\n  captionsTextTrack2Label: string;\n  captionsTextTrack2LanguageCode: string;\n  captionsTextTrack3Label: string;\n  captionsTextTrack3LanguageCode: string;\n  captionsTextTrack4Label: string;\n  captionsTextTrack4LanguageCode: string;\n  renderTextTracksNatively: boolean;\n};\n\nexport type TSDemuxerConfig = {\n  forceKeyFrameOnDiscontinuity: boolean;\n};\n\nexport type HlsConfig = {\n  debug: boolean | ILogger;\n  enableWorker: boolean;\n  workerPath: null | string;\n  enableSoftwareAES: boolean;\n  minAutoBitrate: number;\n  ignoreDevicePixelRatio: boolean;\n  loader: { new (confg: HlsConfig): Loader<LoaderContext> };\n  fLoader?: FragmentLoaderConstructor;\n  pLoader?: PlaylistLoaderConstructor;\n  fetchSetup?: (context: LoaderContext, initParams: any) => Request;\n  xhrSetup?: (xhr: XMLHttpRequest, url: string) => Promise<void> | void;\n\n  // Alt Audio\n  audioStreamController?: typeof AudioStreamController;\n  audioTrackController?: typeof AudioTrackController;\n  // Subtitle\n  subtitleStreamController?: typeof SubtitleStreamController;\n  subtitleTrackController?: typeof SubtitleTrackController;\n  timelineController?: typeof TimelineController;\n  // EME\n  emeController?: typeof EMEController;\n  // CMCD\n  cmcd?: CMCDControllerConfig;\n  cmcdController?: typeof CMCDController;\n  // Content Steering\n  contentSteeringController?: typeof ContentSteeringController;\n\n  abrController: typeof AbrController;\n  bufferController: typeof BufferController;\n  capLevelController: typeof CapLevelController;\n  errorController: typeof ErrorController;\n  fpsController: typeof FPSController;\n  progressive: boolean;\n  lowLatencyMode: boolean;\n} & ABRControllerConfig &\n  BufferControllerConfig &\n  CapLevelControllerConfig &\n  EMEControllerConfig &\n  FPSControllerConfig &\n  LevelControllerConfig &\n  MP4RemuxerConfig &\n  StreamControllerConfig &\n  LatencyControllerConfig &\n  MetadataControllerConfig &\n  TimelineControllerConfig &\n  TSDemuxerConfig &\n  HlsLoadPolicies &\n  FragmentLoaderConfig &\n  PlaylistLoaderConfig;\n\nconst defaultLoadPolicy: LoaderConfig = {\n  maxTimeToFirstByteMs: 8000,\n  maxLoadTimeMs: 20000,\n  timeoutRetry: null,\n  errorRetry: null,\n};\n\n/**\n * @ignore\n * If possible, keep hlsDefaultConfig shallow\n * It is cloned whenever a new Hls instance is created, by keeping the config\n * shallow the properties are cloned, and we don't end up manipulating the default\n */\nexport const hlsDefaultConfig: HlsConfig = {\n  autoStartLoad: true, // used by stream-controller\n  startPosition: -1, // used by stream-controller\n  defaultAudioCodec: undefined, // used by stream-controller\n  debug: false, // used by logger\n  capLevelOnFPSDrop: false, // used by fps-controller\n  capLevelToPlayerSize: false, // used by cap-level-controller\n  ignoreDevicePixelRatio: false, // used by cap-level-controller\n  initialLiveManifestSize: 1, // used by stream-controller\n  maxBufferLength: 30, // used by stream-controller\n  backBufferLength: Infinity, // used by buffer-controller\n  maxBufferSize: 60 * 1000 * 1000, // used by stream-controller\n  maxBufferHole: 0.1, // used by stream-controller\n  highBufferWatchdogPeriod: 2, // used by stream-controller\n  nudgeOffset: 0.1, // used by stream-controller\n  nudgeMaxRetry: 3, // used by stream-controller\n  maxFragLookUpTolerance: 0.25, // used by stream-controller\n  liveSyncDurationCount: 3, // used by latency-controller\n  liveMaxLatencyDurationCount: Infinity, // used by latency-controller\n  liveSyncDuration: undefined, // used by latency-controller\n  liveMaxLatencyDuration: undefined, // used by latency-controller\n  maxLiveSyncPlaybackRate: 1, // used by latency-controller\n  liveDurationInfinity: false, // used by buffer-controller\n  /**\n   * @deprecated use backBufferLength\n   */\n  liveBackBufferLength: null, // used by buffer-controller\n  maxMaxBufferLength: 600, // used by stream-controller\n  enableWorker: true, // used by transmuxer\n  workerPath: null, // used by transmuxer\n  enableSoftwareAES: true, // used by decrypter\n  startLevel: undefined, // used by level-controller\n  startFragPrefetch: false, // used by stream-controller\n  fpsDroppedMonitoringPeriod: 5000, // used by fps-controller\n  fpsDroppedMonitoringThreshold: 0.2, // used by fps-controller\n  appendErrorMaxRetry: 3, // used by buffer-controller\n  loader: XhrLoader,\n  // loader: FetchLoader,\n  fLoader: undefined, // used by fragment-loader\n  pLoader: undefined, // used by playlist-loader\n  xhrSetup: undefined, // used by xhr-loader\n  licenseXhrSetup: undefined, // used by eme-controller\n  licenseResponseCallback: undefined, // used by eme-controller\n  abrController: AbrController,\n  bufferController: BufferController,\n  capLevelController: CapLevelController,\n  errorController: ErrorController,\n  fpsController: FPSController,\n  stretchShortVideoTrack: false, // used by mp4-remuxer\n  maxAudioFramesDrift: 1, // used by mp4-remuxer\n  forceKeyFrameOnDiscontinuity: true, // used by ts-demuxer\n  abrEwmaFastLive: 3, // used by abr-controller\n  abrEwmaSlowLive: 9, // used by abr-controller\n  abrEwmaFastVoD: 3, // used by abr-controller\n  abrEwmaSlowVoD: 9, // used by abr-controller\n  abrEwmaDefaultEstimate: 5e5, // 500 kbps  // used by abr-controller\n  abrBandWidthFactor: 0.95, // used by abr-controller\n  abrBandWidthUpFactor: 0.7, // used by abr-controller\n  abrMaxWithRealBitrate: false, // used by abr-controller\n  maxStarvationDelay: 4, // used by abr-controller\n  maxLoadingDelay: 4, // used by abr-controller\n  minAutoBitrate: 0, // used by hls\n  emeEnabled: false, // used by eme-controller\n  widevineLicenseUrl: undefined, // used by eme-controller\n  drmSystems: {}, // used by eme-controller\n  drmSystemOptions: {}, // used by eme-controller\n  requestMediaKeySystemAccessFunc: __USE_EME_DRM__\n    ? requestMediaKeySystemAccess\n    : null, // used by eme-controller\n  testBandwidth: true,\n  progressive: false,\n  lowLatencyMode: true,\n  cmcd: undefined,\n  enableDateRangeMetadataCues: true,\n  enableEmsgMetadataCues: true,\n  enableID3MetadataCues: true,\n\n  certLoadPolicy: {\n    default: defaultLoadPolicy,\n  },\n  keyLoadPolicy: {\n    default: {\n      maxTimeToFirstByteMs: 8000,\n      maxLoadTimeMs: 20000,\n      timeoutRetry: {\n        maxNumRetry: 1,\n        retryDelayMs: 1000,\n        maxRetryDelayMs: 20000,\n        backoff: 'linear',\n      },\n      errorRetry: {\n        maxNumRetry: 8,\n        retryDelayMs: 1000,\n        maxRetryDelayMs: 20000,\n        backoff: 'linear',\n      },\n    },\n  },\n  manifestLoadPolicy: {\n    default: {\n      maxTimeToFirstByteMs: Infinity,\n      maxLoadTimeMs: 20000,\n      timeoutRetry: {\n        maxNumRetry: 2,\n        retryDelayMs: 0,\n        maxRetryDelayMs: 0,\n      },\n      errorRetry: {\n        maxNumRetry: 1,\n        retryDelayMs: 1000,\n        maxRetryDelayMs: 8000,\n      },\n    },\n  },\n  playlistLoadPolicy: {\n    default: {\n      maxTimeToFirstByteMs: 10000,\n      maxLoadTimeMs: 20000,\n      timeoutRetry: {\n        maxNumRetry: 2,\n        retryDelayMs: 0,\n        maxRetryDelayMs: 0,\n      },\n      errorRetry: {\n        maxNumRetry: 2,\n        retryDelayMs: 1000,\n        maxRetryDelayMs: 8000,\n      },\n    },\n  },\n  fragLoadPolicy: {\n    default: {\n      maxTimeToFirstByteMs: 10000,\n      maxLoadTimeMs: 120000,\n      timeoutRetry: {\n        maxNumRetry: 4,\n        retryDelayMs: 0,\n        maxRetryDelayMs: 0,\n      },\n      errorRetry: {\n        maxNumRetry: 6,\n        retryDelayMs: 1000,\n        maxRetryDelayMs: 8000,\n      },\n    },\n  },\n  steeringManifestLoadPolicy: {\n    default: __USE_CONTENT_STEERING__\n      ? {\n          maxTimeToFirstByteMs: 10000,\n          maxLoadTimeMs: 20000,\n          timeoutRetry: {\n            maxNumRetry: 2,\n            retryDelayMs: 0,\n            maxRetryDelayMs: 0,\n          },\n          errorRetry: {\n            maxNumRetry: 1,\n            retryDelayMs: 1000,\n            maxRetryDelayMs: 8000,\n          },\n        }\n      : defaultLoadPolicy,\n  },\n\n  // These default settings are deprecated in favor of the above policies\n  // and are maintained for backwards compatibility\n  manifestLoadingTimeOut: 10000,\n  manifestLoadingMaxRetry: 1,\n  manifestLoadingRetryDelay: 1000,\n  manifestLoadingMaxRetryTimeout: 64000,\n  levelLoadingTimeOut: 10000,\n  levelLoadingMaxRetry: 4,\n  levelLoadingRetryDelay: 1000,\n  levelLoadingMaxRetryTimeout: 64000,\n  fragLoadingTimeOut: 20000,\n  fragLoadingMaxRetry: 6,\n  fragLoadingRetryDelay: 1000,\n  fragLoadingMaxRetryTimeout: 64000,\n\n  // Dynamic Modules\n  ...timelineConfig(),\n  subtitleStreamController: __USE_SUBTITLES__\n    ? SubtitleStreamController\n    : undefined,\n  subtitleTrackController: __USE_SUBTITLES__\n    ? SubtitleTrackController\n    : undefined,\n  timelineController: __USE_SUBTITLES__ ? TimelineController : undefined,\n  audioStreamController: __USE_ALT_AUDIO__ ? AudioStreamController : undefined,\n  audioTrackController: __USE_ALT_AUDIO__ ? AudioTrackController : undefined,\n  emeController: __USE_EME_DRM__ ? EMEController : undefined,\n  cmcdController: __USE_CMCD__ ? CMCDController : undefined,\n  contentSteeringController: __USE_CONTENT_STEERING__\n    ? ContentSteeringController\n    : undefined,\n};\n\nfunction timelineConfig(): TimelineControllerConfig {\n  return {\n    cueHandler: Cues, // used by timeline-controller\n    enableWebVTT: __USE_SUBTITLES__, // used by timeline-controller\n    enableIMSC1: __USE_SUBTITLES__, // used by timeline-controller\n    enableCEA708Captions: __USE_SUBTITLES__, // used by timeline-controller\n    captionsTextTrack1Label: 'English', // used by timeline-controller\n    captionsTextTrack1LanguageCode: 'en', // used by timeline-controller\n    captionsTextTrack2Label: 'Spanish', // used by timeline-controller\n    captionsTextTrack2LanguageCode: 'es', // used by timeline-controller\n    captionsTextTrack3Label: 'Unknown CC', // used by timeline-controller\n    captionsTextTrack3LanguageCode: '', // used by timeline-controller\n    captionsTextTrack4Label: 'Unknown CC', // used by timeline-controller\n    captionsTextTrack4LanguageCode: '', // used by timeline-controller\n    renderTextTracksNatively: true,\n  };\n}\n\n/**\n * @ignore\n */\nexport function mergeConfig(\n  defaultConfig: HlsConfig,\n  userConfig: Partial<HlsConfig>\n): HlsConfig {\n  if (\n    (userConfig.liveSyncDurationCount ||\n      userConfig.liveMaxLatencyDurationCount) &&\n    (userConfig.liveSyncDuration || userConfig.liveMaxLatencyDuration)\n  ) {\n    throw new Error(\n      \"Illegal hls.js config: don't mix up liveSyncDurationCount/liveMaxLatencyDurationCount and liveSyncDuration/liveMaxLatencyDuration\"\n    );\n  }\n\n  if (\n    userConfig.liveMaxLatencyDurationCount !== undefined &&\n    (userConfig.liveSyncDurationCount === undefined ||\n      userConfig.liveMaxLatencyDurationCount <=\n        userConfig.liveSyncDurationCount)\n  ) {\n    throw new Error(\n      'Illegal hls.js config: \"liveMaxLatencyDurationCount\" must be greater than \"liveSyncDurationCount\"'\n    );\n  }\n\n  if (\n    userConfig.liveMaxLatencyDuration !== undefined &&\n    (userConfig.liveSyncDuration === undefined ||\n      userConfig.liveMaxLatencyDuration <= userConfig.liveSyncDuration)\n  ) {\n    throw new Error(\n      'Illegal hls.js config: \"liveMaxLatencyDuration\" must be greater than \"liveSyncDuration\"'\n    );\n  }\n\n  const defaultsCopy = deepCpy(defaultConfig);\n\n  // Backwards compatibility with deprecated config values\n  const deprecatedSettingTypes = ['manifest', 'level', 'frag'];\n  const deprecatedSettings = [\n    'TimeOut',\n    'MaxRetry',\n    'RetryDelay',\n    'MaxRetryTimeout',\n  ];\n  deprecatedSettingTypes.forEach((type) => {\n    const policyName = `${type === 'level' ? 'playlist' : type}LoadPolicy`;\n    const policyNotSet = userConfig[policyName] === undefined;\n    const report: string[] = [];\n    deprecatedSettings.forEach((setting) => {\n      const deprecatedSetting = `${type}Loading${setting}`;\n      const value = userConfig[deprecatedSetting];\n      if (value !== undefined && policyNotSet) {\n        report.push(deprecatedSetting);\n        const settings: LoaderConfig = defaultsCopy[policyName].default;\n        userConfig[policyName] = { default: settings };\n        switch (setting) {\n          case 'TimeOut':\n            settings.maxLoadTimeMs = value;\n            settings.maxTimeToFirstByteMs = value;\n            break;\n          case 'MaxRetry':\n            settings.errorRetry!.maxNumRetry = value;\n            settings.timeoutRetry!.maxNumRetry = value;\n            break;\n          case 'RetryDelay':\n            settings.errorRetry!.retryDelayMs = value;\n            settings.timeoutRetry!.retryDelayMs = value;\n            break;\n          case 'MaxRetryTimeout':\n            settings.errorRetry!.maxRetryDelayMs = value;\n            settings.timeoutRetry!.maxRetryDelayMs = value;\n            break;\n        }\n      }\n    });\n    if (report.length) {\n      logger.warn(\n        `hls.js config: \"${report.join(\n          '\", \"'\n        )}\" setting(s) are deprecated, use \"${policyName}\": ${JSON.stringify(\n          userConfig[policyName]\n        )}`\n      );\n    }\n  });\n\n  return {\n    ...defaultsCopy,\n    ...userConfig,\n  };\n}\n\nfunction deepCpy(obj: any): any {\n  if (obj && typeof obj === 'object') {\n    if (Array.isArray(obj)) {\n      return obj.map(deepCpy);\n    }\n    return Object.keys(obj).reduce((result, key) => {\n      result[key] = deepCpy(obj[key]);\n      return result;\n    }, {});\n  }\n  return obj;\n}\n\n/**\n * @ignore\n */\nexport function enableStreamingMode(config) {\n  const currentLoader = config.loader;\n  if (currentLoader !== FetchLoader && currentLoader !== XhrLoader) {\n    // If a developer has configured their own loader, respect that choice\n    logger.log(\n      '[config]: Custom loader detected, cannot enable progressive streaming'\n    );\n    config.progressive = false;\n  } else {\n    const canStreamProgressively = fetchSupported();\n    if (canStreamProgressively) {\n      config.loader = FetchLoader;\n      config.progressive = true;\n      config.enableSoftwareAES = true;\n      logger.log('[config]: Progressive streaming enabled, using FetchLoader');\n    }\n  }\n}\n","export const isFiniteNumber =\n  Number.isFinite ||\n  function (value) {\n    return typeof value === 'number' && isFinite(value);\n  };\n\nexport const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;\n","import {\n  ManifestLoadedData,\n  ManifestLoadingData,\n  MediaAttachedData,\n  MediaAttachingData,\n  LevelLoadingData,\n  LevelLoadedData,\n  ManifestParsedData,\n  LevelUpdatedData,\n  LevelsUpdatedData,\n  FragParsingUserdataData,\n  FragDecryptedData,\n  FragLoadedData,\n  InitPTSFoundData,\n  CuesParsedData,\n  SubtitleFragProcessedData,\n  NonNativeTextTracksData,\n  FragLoadingData,\n  AudioTrackLoadedData,\n  SubtitleTrackLoadedData,\n  ErrorData,\n  AudioTrackSwitchingData,\n  AudioTrackSwitchedData,\n  KeyLoadedData,\n  KeyLoadingData,\n  SubtitleTrackSwitchData,\n  SubtitleTracksUpdatedData,\n  LevelSwitchedData,\n  FragChangedData,\n  BufferAppendingData,\n  BufferCodecsData,\n  FragParsingMetadataData,\n  FragParsingInitSegmentData,\n  FragBufferedData,\n  BufferFlushingData,\n  BufferEOSData,\n  LevelSwitchingData,\n  FPSDropLevelCappingData,\n  FPSDropData,\n  BufferCreatedData,\n  BufferAppendedData,\n  LevelPTSUpdatedData,\n  FragParsedData,\n  AudioTracksUpdatedData,\n  FragLoadEmergencyAbortedData,\n  BackBufferData,\n  LiveBackBufferData,\n  TrackLoadingData,\n  BufferFlushedData,\n} from './types/events';\n\nexport enum Events {\n  // Fired before MediaSource is attaching to media element\n  MEDIA_ATTACHING = 'hlsMediaAttaching',\n  // Fired when MediaSource has been successfully attached to media element\n  MEDIA_ATTACHED = 'hlsMediaAttached',\n  // Fired before detaching MediaSource from media element\n  MEDIA_DETACHING = 'hlsMediaDetaching',\n  // Fired when MediaSource has been detached from media element\n  MEDIA_DETACHED = 'hlsMediaDetached',\n  // Fired when the buffer is going to be reset\n  BUFFER_RESET = 'hlsBufferReset',\n  // Fired when we know about the codecs that we need buffers for to push into - data: {tracks : { container, codec, levelCodec, initSegment, metadata }}\n  BUFFER_CODECS = 'hlsBufferCodecs',\n  // fired when sourcebuffers have been created - data: { tracks : tracks }\n  BUFFER_CREATED = 'hlsBufferCreated',\n  // fired when we append a segment to the buffer - data: { segment: segment object }\n  BUFFER_APPENDING = 'hlsBufferAppending',\n  // fired when we are done with appending a media segment to the buffer - data : { parent : segment parent that triggered BUFFER_APPENDING, pending : nb of segments waiting for appending for this segment parent}\n  BUFFER_APPENDED = 'hlsBufferAppended',\n  // fired when the stream is finished and we want to notify the media buffer that there will be no more data - data: { }\n  BUFFER_EOS = 'hlsBufferEos',\n  // fired when the media buffer should be flushed - data { startOffset, endOffset }\n  BUFFER_FLUSHING = 'hlsBufferFlushing',\n  // fired when the media buffer has been flushed - data: { }\n  BUFFER_FLUSHED = 'hlsBufferFlushed',\n  // fired to signal that a manifest loading starts - data: { url : manifestURL}\n  MANIFEST_LOADING = 'hlsManifestLoading',\n  // fired after manifest has been loaded - data: { levels : [available quality levels], audioTracks : [ available audio tracks ], url : manifestURL, stats : LoaderStats }\n  MANIFEST_LOADED = 'hlsManifestLoaded',\n  // fired after manifest has been parsed - data: { levels : [available quality levels], firstLevel : index of first quality level appearing in Manifest}\n  MANIFEST_PARSED = 'hlsManifestParsed',\n  // fired when a level switch is requested - data: { level : id of new level }\n  LEVEL_SWITCHING = 'hlsLevelSwitching',\n  // fired when a level switch is effective - data: { level : id of new level }\n  LEVEL_SWITCHED = 'hlsLevelSwitched',\n  // fired when a level playlist loading starts - data: { url : level URL, level : id of level being loaded}\n  LEVEL_LOADING = 'hlsLevelLoading',\n  // fired when a level playlist loading finishes - data: { details : levelDetails object, level : id of loaded level, stats : LoaderStats }\n  LEVEL_LOADED = 'hlsLevelLoaded',\n  // fired when a level's details have been updated based on previous details, after it has been loaded - data: { details : levelDetails object, level : id of updated level }\n  LEVEL_UPDATED = 'hlsLevelUpdated',\n  // fired when a level's PTS information has been updated after parsing a fragment - data: { details : levelDetails object, level : id of updated level, drift: PTS drift observed when parsing last fragment }\n  LEVEL_PTS_UPDATED = 'hlsLevelPtsUpdated',\n  // fired to notify that levels have changed after removing a level - data: { levels : [available quality levels] }\n  LEVELS_UPDATED = 'hlsLevelsUpdated',\n  // fired to notify that audio track lists has been updated - data: { audioTracks : audioTracks }\n  AUDIO_TRACKS_UPDATED = 'hlsAudioTracksUpdated',\n  // fired when an audio track switching is requested - data: { id : audio track id }\n  AUDIO_TRACK_SWITCHING = 'hlsAudioTrackSwitching',\n  // fired when an audio track switch actually occurs - data: { id : audio track id }\n  AUDIO_TRACK_SWITCHED = 'hlsAudioTrackSwitched',\n  // fired when an audio track loading starts - data: { url : audio track URL, id : audio track id }\n  AUDIO_TRACK_LOADING = 'hlsAudioTrackLoading',\n  // fired when an audio track loading finishes - data: { details : levelDetails object, id : audio track id, stats : LoaderStats }\n  AUDIO_TRACK_LOADED = 'hlsAudioTrackLoaded',\n  // fired to notify that subtitle track lists has been updated - data: { subtitleTracks : subtitleTracks }\n  SUBTITLE_TRACKS_UPDATED = 'hlsSubtitleTracksUpdated',\n  // fired to notify that subtitle tracks were cleared as a result of stopping the media\n  SUBTITLE_TRACKS_CLEARED = 'hlsSubtitleTracksCleared',\n  // fired when an subtitle track switch occurs - data: { id : subtitle track id }\n  SUBTITLE_TRACK_SWITCH = 'hlsSubtitleTrackSwitch',\n  // fired when a subtitle track loading starts - data: { url : subtitle track URL, id : subtitle track id }\n  SUBTITLE_TRACK_LOADING = 'hlsSubtitleTrackLoading',\n  // fired when a subtitle track loading finishes - data: { details : levelDetails object, id : subtitle track id, stats : LoaderStats }\n  SUBTITLE_TRACK_LOADED = 'hlsSubtitleTrackLoaded',\n  // fired when a subtitle fragment has been processed - data: { success : boolean, frag : the processed frag }\n  SUBTITLE_FRAG_PROCESSED = 'hlsSubtitleFragProcessed',\n  // fired when a set of VTTCues to be managed externally has been parsed - data: { type: string, track: string, cues: [ VTTCue ] }\n  CUES_PARSED = 'hlsCuesParsed',\n  // fired when a text track to be managed externally is found - data: { tracks: [ { label: string, kind: string, default: boolean } ] }\n  NON_NATIVE_TEXT_TRACKS_FOUND = 'hlsNonNativeTextTracksFound',\n  // fired when the first timestamp is found - data: { id : demuxer id, initPTS: initPTS, timescale: timescale, frag : fragment object }\n  INIT_PTS_FOUND = 'hlsInitPtsFound',\n  // fired when a fragment loading starts - data: { frag : fragment object }\n  FRAG_LOADING = 'hlsFragLoading',\n  // fired when a fragment loading is progressing - data: { frag : fragment object, { trequest, tfirst, loaded } }\n  // FRAG_LOAD_PROGRESS = 'hlsFragLoadProgress',\n  // Identifier for fragment load aborting for emergency switch down - data: { frag : fragment object }\n  FRAG_LOAD_EMERGENCY_ABORTED = 'hlsFragLoadEmergencyAborted',\n  // fired when a fragment loading is completed - data: { frag : fragment object, payload : fragment payload, stats : LoaderStats }\n  FRAG_LOADED = 'hlsFragLoaded',\n  // fired when a fragment has finished decrypting - data: { id : demuxer id, frag: fragment object, payload : fragment payload, stats : { tstart, tdecrypt } }\n  FRAG_DECRYPTED = 'hlsFragDecrypted',\n  // fired when Init Segment has been extracted from fragment - data: { id : demuxer id, frag: fragment object, moov : moov MP4 box, codecs : codecs found while parsing fragment }\n  FRAG_PARSING_INIT_SEGMENT = 'hlsFragParsingInitSegment',\n  // fired when parsing sei text is completed - data: { id : demuxer id, frag: fragment object, samples : [ sei samples pes ] }\n  FRAG_PARSING_USERDATA = 'hlsFragParsingUserdata',\n  // fired when parsing id3 is completed - data: { id : demuxer id, frag: fragment object, samples : [ id3 samples pes ] }\n  FRAG_PARSING_METADATA = 'hlsFragParsingMetadata',\n  // fired when data have been extracted from fragment - data: { id : demuxer id, frag: fragment object, data1 : moof MP4 box or TS fragments, data2 : mdat MP4 box or null}\n  // FRAG_PARSING_DATA = 'hlsFragParsingData',\n  // fired when fragment parsing is completed - data: { id : demuxer id, frag: fragment object }\n  FRAG_PARSED = 'hlsFragParsed',\n  // fired when fragment remuxed MP4 boxes have all been appended into SourceBuffer - data: { id : demuxer id, frag : fragment object, stats : LoaderStats }\n  FRAG_BUFFERED = 'hlsFragBuffered',\n  // fired when fragment matching with current media position is changing - data : { id : demuxer id, frag : fragment object }\n  FRAG_CHANGED = 'hlsFragChanged',\n  // Identifier for a FPS drop event - data: { currentDropped, currentDecoded, totalDroppedFrames }\n  FPS_DROP = 'hlsFpsDrop',\n  // triggered when FPS drop triggers auto level capping - data: { level, droppedLevel }\n  FPS_DROP_LEVEL_CAPPING = 'hlsFpsDropLevelCapping',\n  // Identifier for an error event - data: { type : error type, details : error details, fatal : if true, hls.js cannot/will not try to recover, if false, hls.js will try to recover,other error specific data }\n  ERROR = 'hlsError',\n  // fired when hls.js instance starts destroying. Different from MEDIA_DETACHED as one could want to detach and reattach a media to the instance of hls.js to handle mid-rolls for example - data: { }\n  DESTROYING = 'hlsDestroying',\n  // fired when a decrypt key loading starts - data: { frag : fragment object }\n  KEY_LOADING = 'hlsKeyLoading',\n  // fired when a decrypt key loading is completed - data: { frag : fragment object, keyInfo : KeyLoaderInfo }\n  KEY_LOADED = 'hlsKeyLoaded',\n  // deprecated; please use BACK_BUFFER_REACHED - data : { bufferEnd: number }\n  LIVE_BACK_BUFFER_REACHED = 'hlsLiveBackBufferReached',\n  // fired when the back buffer is reached as defined by the backBufferLength config option - data : { bufferEnd: number }\n  BACK_BUFFER_REACHED = 'hlsBackBufferReached',\n}\n\n/**\n * Defines each Event type and payload by Event name. Used in {@link hls.js#HlsEventEmitter} to strongly type the event listener API.\n */\nexport interface HlsListeners {\n  [Events.MEDIA_ATTACHING]: (\n    event: Events.MEDIA_ATTACHING,\n    data: MediaAttachingData\n  ) => void;\n  [Events.MEDIA_ATTACHED]: (\n    event: Events.MEDIA_ATTACHED,\n    data: MediaAttachedData\n  ) => void;\n  [Events.MEDIA_DETACHING]: (event: Events.MEDIA_DETACHING) => void;\n  [Events.MEDIA_DETACHED]: (event: Events.MEDIA_DETACHED) => void;\n  [Events.BUFFER_RESET]: (event: Events.BUFFER_RESET) => void;\n  [Events.BUFFER_CODECS]: (\n    event: Events.BUFFER_CODECS,\n    data: BufferCodecsData\n  ) => void;\n  [Events.BUFFER_CREATED]: (\n    event: Events.BUFFER_CREATED,\n    data: BufferCreatedData\n  ) => void;\n  [Events.BUFFER_APPENDING]: (\n    event: Events.BUFFER_APPENDING,\n    data: BufferAppendingData\n  ) => void;\n  [Events.BUFFER_APPENDED]: (\n    event: Events.BUFFER_APPENDED,\n    data: BufferAppendedData\n  ) => void;\n  [Events.BUFFER_EOS]: (event: Events.BUFFER_EOS, data: BufferEOSData) => void;\n  [Events.BUFFER_FLUSHING]: (\n    event: Events.BUFFER_FLUSHING,\n    data: BufferFlushingData\n  ) => void;\n  [Events.BUFFER_FLUSHED]: (\n    event: Events.BUFFER_FLUSHED,\n    data: BufferFlushedData\n  ) => void;\n  [Events.MANIFEST_LOADING]: (\n    event: Events.MANIFEST_LOADING,\n    data: ManifestLoadingData\n  ) => void;\n  [Events.MANIFEST_LOADED]: (\n    event: Events.MANIFEST_LOADED,\n    data: ManifestLoadedData\n  ) => void;\n  [Events.MANIFEST_PARSED]: (\n    event: Events.MANIFEST_PARSED,\n    data: ManifestParsedData\n  ) => void;\n  [Events.LEVEL_SWITCHING]: (\n    event: Events.LEVEL_SWITCHING,\n    data: LevelSwitchingData\n  ) => void;\n  [Events.LEVEL_SWITCHED]: (\n    event: Events.LEVEL_SWITCHED,\n    data: LevelSwitchedData\n  ) => void;\n  [Events.LEVEL_LOADING]: (\n    event: Events.LEVEL_LOADING,\n    data: LevelLoadingData\n  ) => void;\n  [Events.LEVEL_LOADED]: (\n    event: Events.LEVEL_LOADED,\n    data: LevelLoadedData\n  ) => void;\n  [Events.LEVEL_UPDATED]: (\n    event: Events.LEVEL_UPDATED,\n    data: LevelUpdatedData\n  ) => void;\n  [Events.LEVEL_PTS_UPDATED]: (\n    event: Events.LEVEL_PTS_UPDATED,\n    data: LevelPTSUpdatedData\n  ) => void;\n  [Events.LEVELS_UPDATED]: (\n    event: Events.LEVELS_UPDATED,\n    data: LevelsUpdatedData\n  ) => void;\n  [Events.AUDIO_TRACKS_UPDATED]: (\n    event: Events.AUDIO_TRACKS_UPDATED,\n    data: AudioTracksUpdatedData\n  ) => void;\n  [Events.AUDIO_TRACK_SWITCHING]: (\n    event: Events.AUDIO_TRACK_SWITCHING,\n    data: AudioTrackSwitchingData\n  ) => void;\n  [Events.AUDIO_TRACK_SWITCHED]: (\n    event: Events.AUDIO_TRACK_SWITCHED,\n    data: AudioTrackSwitchedData\n  ) => void;\n  [Events.AUDIO_TRACK_LOADING]: (\n    event: Events.AUDIO_TRACK_LOADING,\n    data: TrackLoadingData\n  ) => void;\n  [Events.AUDIO_TRACK_LOADED]: (\n    event: Events.AUDIO_TRACK_LOADED,\n    data: AudioTrackLoadedData\n  ) => void;\n  [Events.SUBTITLE_TRACKS_UPDATED]: (\n    event: Events.SUBTITLE_TRACKS_UPDATED,\n    data: SubtitleTracksUpdatedData\n  ) => void;\n  [Events.SUBTITLE_TRACKS_CLEARED]: (\n    event: Events.SUBTITLE_TRACKS_CLEARED\n  ) => void;\n  [Events.SUBTITLE_TRACK_SWITCH]: (\n    event: Events.SUBTITLE_TRACK_SWITCH,\n    data: SubtitleTrackSwitchData\n  ) => void;\n  [Events.SUBTITLE_TRACK_LOADING]: (\n    event: Events.SUBTITLE_TRACK_LOADING,\n    data: TrackLoadingData\n  ) => void;\n  [Events.SUBTITLE_TRACK_LOADED]: (\n    event: Events.SUBTITLE_TRACK_LOADED,\n    data: SubtitleTrackLoadedData\n  ) => void;\n  [Events.SUBTITLE_FRAG_PROCESSED]: (\n    event: Events.SUBTITLE_FRAG_PROCESSED,\n    data: SubtitleFragProcessedData\n  ) => void;\n  [Events.CUES_PARSED]: (\n    event: Events.CUES_PARSED,\n    data: CuesParsedData\n  ) => void;\n  [Events.NON_NATIVE_TEXT_TRACKS_FOUND]: (\n    event: Events.NON_NATIVE_TEXT_TRACKS_FOUND,\n    data: NonNativeTextTracksData\n  ) => void;\n  [Events.INIT_PTS_FOUND]: (\n    event: Events.INIT_PTS_FOUND,\n    data: InitPTSFoundData\n  ) => void;\n  [Events.FRAG_LOADING]: (\n    event: Events.FRAG_LOADING,\n    data: FragLoadingData\n  ) => void;\n  // [Events.FRAG_LOAD_PROGRESS]: TodoEventType\n  [Events.FRAG_LOAD_EMERGENCY_ABORTED]: (\n    event: Events.FRAG_LOAD_EMERGENCY_ABORTED,\n    data: FragLoadEmergencyAbortedData\n  ) => void;\n  [Events.FRAG_LOADED]: (\n    event: Events.FRAG_LOADED,\n    data: FragLoadedData\n  ) => void;\n  [Events.FRAG_DECRYPTED]: (\n    event: Events.FRAG_DECRYPTED,\n    data: FragDecryptedData\n  ) => void;\n  [Events.FRAG_PARSING_INIT_SEGMENT]: (\n    event: Events.FRAG_PARSING_INIT_SEGMENT,\n    data: FragParsingInitSegmentData\n  ) => void;\n  [Events.FRAG_PARSING_USERDATA]: (\n    event: Events.FRAG_PARSING_USERDATA,\n    data: FragParsingUserdataData\n  ) => void;\n  [Events.FRAG_PARSING_METADATA]: (\n    event: Events.FRAG_PARSING_METADATA,\n    data: FragParsingMetadataData\n  ) => void;\n  // [Events.FRAG_PARSING_DATA]: TodoEventType\n  [Events.FRAG_PARSED]: (\n    event: Events.FRAG_PARSED,\n    data: FragParsedData\n  ) => void;\n  [Events.FRAG_BUFFERED]: (\n    event: Events.FRAG_BUFFERED,\n    data: FragBufferedData\n  ) => void;\n  [Events.FRAG_CHANGED]: (\n    event: Events.FRAG_CHANGED,\n    data: FragChangedData\n  ) => void;\n  [Events.FPS_DROP]: (event: Events.FPS_DROP, data: FPSDropData) => void;\n  [Events.FPS_DROP_LEVEL_CAPPING]: (\n    event: Events.FPS_DROP_LEVEL_CAPPING,\n    data: FPSDropLevelCappingData\n  ) => void;\n  [Events.ERROR]: (event: Events.ERROR, data: ErrorData) => void;\n  [Events.DESTROYING]: (event: Events.DESTROYING) => void;\n  [Events.KEY_LOADING]: (\n    event: Events.KEY_LOADING,\n    data: KeyLoadingData\n  ) => void;\n  [Events.KEY_LOADED]: (event: Events.KEY_LOADED, data: KeyLoadedData) => void;\n  [Events.LIVE_BACK_BUFFER_REACHED]: (\n    event: Events.LIVE_BACK_BUFFER_REACHED,\n    data: LiveBackBufferData\n  ) => void;\n  [Events.BACK_BUFFER_REACHED]: (\n    event: Events.BACK_BUFFER_REACHED,\n    data: BackBufferData\n  ) => void;\n}\nexport interface HlsEventEmitter {\n  on<E extends keyof HlsListeners, Context = undefined>(\n    event: E,\n    listener: HlsListeners[E],\n    context?: Context\n  ): void;\n  once<E extends keyof HlsListeners, Context = undefined>(\n    event: E,\n    listener: HlsListeners[E],\n    context?: Context\n  ): void;\n\n  removeAllListeners<E extends keyof HlsListeners>(event?: E): void;\n  off<E extends keyof HlsListeners, Context = undefined>(\n    event: E,\n    listener?: HlsListeners[E],\n    context?: Context,\n    once?: boolean\n  ): void;\n\n  listeners<E extends keyof HlsListeners>(event: E): HlsListeners[E][];\n  emit<E extends keyof HlsListeners>(\n    event: E,\n    name: E,\n    eventObject: Parameters<HlsListeners[E]>[1]\n  ): boolean;\n  listenerCount<E extends keyof HlsListeners>(event: E): number;\n}\n","export enum ErrorTypes {\n  // Identifier for a network error (loading error / timeout ...)\n  NETWORK_ERROR = 'networkError',\n  // Identifier for a media Error (video/parsing/mediasource error)\n  MEDIA_ERROR = 'mediaError',\n  // EME (encrypted media extensions) errors\n  KEY_SYSTEM_ERROR = 'keySystemError',\n  // Identifier for a mux Error (demuxing/remuxing)\n  MUX_ERROR = 'muxError',\n  // Identifier for all other errors\n  OTHER_ERROR = 'otherError',\n}\n\nexport enum ErrorDetails {\n  KEY_SYSTEM_NO_KEYS = 'keySystemNoKeys',\n  KEY_SYSTEM_NO_ACCESS = 'keySystemNoAccess',\n  KEY_SYSTEM_NO_SESSION = 'keySystemNoSession',\n  KEY_SYSTEM_NO_CONFIGURED_LICENSE = 'keySystemNoConfiguredLicense',\n  KEY_SYSTEM_LICENSE_REQUEST_FAILED = 'keySystemLicenseRequestFailed',\n  KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED = 'keySystemServerCertificateRequestFailed',\n  KEY_SYSTEM_SERVER_CERTIFICATE_UPDATE_FAILED = 'keySystemServerCertificateUpdateFailed',\n  KEY_SYSTEM_SESSION_UPDATE_FAILED = 'keySystemSessionUpdateFailed',\n  KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED = 'keySystemStatusOutputRestricted',\n  KEY_SYSTEM_STATUS_INTERNAL_ERROR = 'keySystemStatusInternalError',\n  // Identifier for a manifest load error - data: { url : faulty URL, response : { code: error code, text: error text }}\n  MANIFEST_LOAD_ERROR = 'manifestLoadError',\n  // Identifier for a manifest load timeout - data: { url : faulty URL, response : { code: error code, text: error text }}\n  MANIFEST_LOAD_TIMEOUT = 'manifestLoadTimeOut',\n  // Identifier for a manifest parsing error - data: { url : faulty URL, reason : error reason}\n  MANIFEST_PARSING_ERROR = 'manifestParsingError',\n  // Identifier for a manifest with only incompatible codecs error - data: { url : faulty URL, reason : error reason}\n  MANIFEST_INCOMPATIBLE_CODECS_ERROR = 'manifestIncompatibleCodecsError',\n  // Identifier for a level which contains no fragments - data: { url: faulty URL, reason: \"no fragments found in level\", level: index of the bad level }\n  LEVEL_EMPTY_ERROR = 'levelEmptyError',\n  // Identifier for a level load error - data: { url : faulty URL, response : { code: error code, text: error text }}\n  LEVEL_LOAD_ERROR = 'levelLoadError',\n  // Identifier for a level load timeout - data: { url : faulty URL, response : { code: error code, text: error text }}\n  LEVEL_LOAD_TIMEOUT = 'levelLoadTimeOut',\n  // Identifier for a level parse error - data: { url : faulty URL, error: Error, reason: error message }\n  LEVEL_PARSING_ERROR = 'levelParsingError',\n  // Identifier for a level switch error - data: { level : faulty level Id, event : error description}\n  LEVEL_SWITCH_ERROR = 'levelSwitchError',\n  // Identifier for an audio track load error - data: { url : faulty URL, response : { code: error code, text: error text }}\n  AUDIO_TRACK_LOAD_ERROR = 'audioTrackLoadError',\n  // Identifier for an audio track load timeout - data: { url : faulty URL, response : { code: error code, text: error text }}\n  AUDIO_TRACK_LOAD_TIMEOUT = 'audioTrackLoadTimeOut',\n  // Identifier for a subtitle track load error - data: { url : faulty URL, response : { code: error code, text: error text }}\n  SUBTITLE_LOAD_ERROR = 'subtitleTrackLoadError',\n  // Identifier for a subtitle track load timeout - data: { url : faulty URL, response : { code: error code, text: error text }}\n  SUBTITLE_TRACK_LOAD_TIMEOUT = 'subtitleTrackLoadTimeOut',\n  // Identifier for fragment load error - data: { frag : fragment object, response : { code: error code, text: error text }}\n  FRAG_LOAD_ERROR = 'fragLoadError',\n  // Identifier for fragment load timeout error - data: { frag : fragment object}\n  FRAG_LOAD_TIMEOUT = 'fragLoadTimeOut',\n  // Identifier for a fragment decryption error event - data: {id : demuxer Id,frag: fragment object, reason : parsing error description }\n  FRAG_DECRYPT_ERROR = 'fragDecryptError',\n  // Identifier for a fragment parsing error event - data: { id : demuxer Id, reason : parsing error description }\n  // will be renamed DEMUX_PARSING_ERROR and switched to MUX_ERROR in the next major release\n  FRAG_PARSING_ERROR = 'fragParsingError',\n  // Identifier for a fragment or part load skipped because of a GAP tag or attribute\n  FRAG_GAP = 'fragGap',\n  // Identifier for a remux alloc error event - data: { id : demuxer Id, frag : fragment object, bytes : nb of bytes on which allocation failed , reason : error text }\n  REMUX_ALLOC_ERROR = 'remuxAllocError',\n  // Identifier for decrypt key load error - data: { frag : fragment object, response : { code: error code, text: error text }}\n  KEY_LOAD_ERROR = 'keyLoadError',\n  // Identifier for decrypt key load timeout error - data: { frag : fragment object}\n  KEY_LOAD_TIMEOUT = 'keyLoadTimeOut',\n  // Triggered when an exception occurs while adding a sourceBuffer to MediaSource - data : { error : exception , mimeType : mimeType }\n  BUFFER_ADD_CODEC_ERROR = 'bufferAddCodecError',\n  // Triggered when source buffer(s) could not be created using level (manifest CODECS attribute), parsed media, or best guess codec(s) - data: { reason : error reason }\n  BUFFER_INCOMPATIBLE_CODECS_ERROR = 'bufferIncompatibleCodecsError',\n  // Identifier for a buffer append error - data: append error description\n  BUFFER_APPEND_ERROR = 'bufferAppendError',\n  // Identifier for a buffer appending error event - data: appending error description\n  BUFFER_APPENDING_ERROR = 'bufferAppendingError',\n  // Identifier for a buffer stalled error event\n  BUFFER_STALLED_ERROR = 'bufferStalledError',\n  // Identifier for a buffer full event\n  BUFFER_FULL_ERROR = 'bufferFullError',\n  // Identifier for a buffer seek over hole event\n  BUFFER_SEEK_OVER_HOLE = 'bufferSeekOverHole',\n  // Identifier for a buffer nudge on stall (playback is stuck although currentTime is in a buffered area)\n  BUFFER_NUDGE_ON_STALL = 'bufferNudgeOnStall',\n  // Identifier for an internal exception happening inside hls.js while handling an event\n  INTERNAL_EXCEPTION = 'internalException',\n  // Identifier for an internal call to abort a loader\n  INTERNAL_ABORTED = 'aborted',\n  // Uncategorized error\n  UNKNOWN = 'unknown',\n}\n","const DECIMAL_RESOLUTION_REGEX = /^(\\d+)x(\\d+)$/;\nconst ATTR_LIST_REGEX = /(.+?)=(\".*?\"|.*?)(?:,|$)/g;\n\n// adapted from https://github.com/kanongil/node-m3u8parse/blob/master/attrlist.js\nexport class AttrList {\n  [key: string]: any;\n\n  constructor(attrs: string | Record<string, any>) {\n    if (typeof attrs === 'string') {\n      attrs = AttrList.parseAttrList(attrs);\n    }\n\n    for (const attr in attrs) {\n      if (attrs.hasOwnProperty(attr)) {\n        if (attr.substring(0, 2) === 'X-') {\n          this.clientAttrs = this.clientAttrs || [];\n          this.clientAttrs.push(attr);\n        }\n        this[attr] = attrs[attr];\n      }\n    }\n  }\n\n  decimalInteger(attrName: string): number {\n    const intValue = parseInt(this[attrName], 10);\n    if (intValue > Number.MAX_SAFE_INTEGER) {\n      return Infinity;\n    }\n\n    return intValue;\n  }\n\n  hexadecimalInteger(attrName: string) {\n    if (this[attrName]) {\n      let stringValue = (this[attrName] || '0x').slice(2);\n      stringValue = (stringValue.length & 1 ? '0' : '') + stringValue;\n\n      const value = new Uint8Array(stringValue.length / 2);\n      for (let i = 0; i < stringValue.length / 2; i++) {\n        value[i] = parseInt(stringValue.slice(i * 2, i * 2 + 2), 16);\n      }\n\n      return value;\n    } else {\n      return null;\n    }\n  }\n\n  hexadecimalIntegerAsNumber(attrName: string): number {\n    const intValue = parseInt(this[attrName], 16);\n    if (intValue > Number.MAX_SAFE_INTEGER) {\n      return Infinity;\n    }\n\n    return intValue;\n  }\n\n  decimalFloatingPoint(attrName: string): number {\n    return parseFloat(this[attrName]);\n  }\n\n  optionalFloat(attrName: string, defaultValue: number): number {\n    const value = this[attrName];\n    return value ? parseFloat(value) : defaultValue;\n  }\n\n  enumeratedString(attrName: string): string | undefined {\n    return this[attrName];\n  }\n\n  bool(attrName: string): boolean {\n    return this[attrName] === 'YES';\n  }\n\n  decimalResolution(attrName: string):\n    | {\n        width: number;\n        height: number;\n      }\n    | undefined {\n    const res = DECIMAL_RESOLUTION_REGEX.exec(this[attrName]);\n    if (res === null) {\n      return undefined;\n    }\n\n    return {\n      width: parseInt(res[1], 10),\n      height: parseInt(res[2], 10),\n    };\n  }\n\n  static parseAttrList(input: string): Record<string, any> {\n    let match;\n    const attrs = {};\n    const quote = '\"';\n    ATTR_LIST_REGEX.lastIndex = 0;\n    while ((match = ATTR_LIST_REGEX.exec(input)) !== null) {\n      let value = match[2];\n\n      if (\n        value.indexOf(quote) === 0 &&\n        value.lastIndexOf(quote) === value.length - 1\n      ) {\n        value = value.slice(1, -1);\n      }\n      const name = match[1].trim();\n      attrs[name] = value;\n    }\n    return attrs;\n  }\n}\n","import type {\n  HlsPerformanceTiming,\n  HlsProgressivePerformanceTiming,\n  LoaderStats,\n} from '../types/loader';\n\nexport class LoadStats implements LoaderStats {\n  aborted: boolean = false;\n  loaded: number = 0;\n  retry: number = 0;\n  total: number = 0;\n  chunkCount: number = 0;\n  bwEstimate: number = 0;\n  loading: HlsProgressivePerformanceTiming = { start: 0, first: 0, end: 0 };\n  parsing: HlsPerformanceTiming = { start: 0, end: 0 };\n  buffering: HlsProgressivePerformanceTiming = { start: 0, first: 0, end: 0 };\n}\n","import { buildAbsoluteURL } from 'url-toolkit';\nimport { LevelKey } from './level-key';\nimport { LoadStats } from './load-stats';\nimport { AttrList } from '../utils/attr-list';\nimport type {\n  FragmentLoaderContext,\n  KeyLoaderContext,\n  Loader,\n  PlaylistLevelType,\n} from '../types/loader';\nimport type { KeySystemFormats } from '../utils/mediakeys-helper';\n\nexport const enum ElementaryStreamTypes {\n  AUDIO = 'audio',\n  VIDEO = 'video',\n  AUDIOVIDEO = 'audiovideo',\n}\n\nexport interface ElementaryStreamInfo {\n  startPTS: number;\n  endPTS: number;\n  startDTS: number;\n  endDTS: number;\n  partial?: boolean;\n}\n\nexport type ElementaryStreams = Record<\n  ElementaryStreamTypes,\n  ElementaryStreamInfo | null\n>;\n\nexport class BaseSegment {\n  private _byteRange: number[] | null = null;\n  private _url: string | null = null;\n\n  // baseurl is the URL to the playlist\n  public readonly baseurl: string;\n  // relurl is the portion of the URL that comes from inside the playlist.\n  public relurl?: string;\n  // Holds the types of data this fragment supports\n  public elementaryStreams: ElementaryStreams = {\n    [ElementaryStreamTypes.AUDIO]: null,\n    [ElementaryStreamTypes.VIDEO]: null,\n    [ElementaryStreamTypes.AUDIOVIDEO]: null,\n  };\n\n  constructor(baseurl: string) {\n    this.baseurl = baseurl;\n  }\n\n  // setByteRange converts a EXT-X-BYTERANGE attribute into a two element array\n  setByteRange(value: string, previous?: BaseSegment) {\n    const params = value.split('@', 2);\n    const byteRange: number[] = [];\n    if (params.length === 1) {\n      byteRange[0] = previous ? previous.byteRangeEndOffset : 0;\n    } else {\n      byteRange[0] = parseInt(params[1]);\n    }\n    byteRange[1] = parseInt(params[0]) + byteRange[0];\n    this._byteRange = byteRange;\n  }\n\n  get byteRange(): number[] {\n    if (!this._byteRange) {\n      return [];\n    }\n\n    return this._byteRange;\n  }\n\n  get byteRangeStartOffset(): number {\n    return this.byteRange[0];\n  }\n\n  get byteRangeEndOffset(): number {\n    return this.byteRange[1];\n  }\n\n  get url(): string {\n    if (!this._url && this.baseurl && this.relurl) {\n      this._url = buildAbsoluteURL(this.baseurl, this.relurl, {\n        alwaysNormalize: true,\n      });\n    }\n    return this._url || '';\n  }\n\n  set url(value: string) {\n    this._url = value;\n  }\n}\n\n/**\n * Object representing parsed data from an HLS Segment. Found in {@link hls.js#LevelDetails.fragments}.\n */\nexport class Fragment extends BaseSegment {\n  private _decryptdata: LevelKey | null = null;\n\n  public rawProgramDateTime: string | null = null;\n  public programDateTime: number | null = null;\n  public tagList: Array<string[]> = [];\n\n  // EXTINF has to be present for a m3u8 to be considered valid\n  public duration: number = 0;\n  // sn notates the sequence number for a segment, and if set to a string can be 'initSegment'\n  public sn: number | 'initSegment' = 0;\n  // levelkeys are the EXT-X-KEY tags that apply to this segment for decryption\n  // core difference from the private field _decryptdata is the lack of the initialized IV\n  // _decryptdata will set the IV for this segment based on the segment number in the fragment\n  public levelkeys?: { [key: string]: LevelKey };\n  // A string representing the fragment type\n  public readonly type: PlaylistLevelType;\n  // A reference to the loader. Set while the fragment is loading, and removed afterwards. Used to abort fragment loading\n  public loader: Loader<FragmentLoaderContext> | null = null;\n  // A reference to the key loader. Set while the key is loading, and removed afterwards. Used to abort key loading\n  public keyLoader: Loader<KeyLoaderContext> | null = null;\n  // The level/track index to which the fragment belongs\n  public level: number = -1;\n  // The continuity counter of the fragment\n  public cc: number = 0;\n  // The starting Presentation Time Stamp (PTS) of the fragment. Set after transmux complete.\n  public startPTS?: number;\n  // The ending Presentation Time Stamp (PTS) of the fragment. Set after transmux complete.\n  public endPTS?: number;\n  // The starting Decode Time Stamp (DTS) of the fragment. Set after transmux complete.\n  public startDTS!: number;\n  // The ending Decode Time Stamp (DTS) of the fragment. Set after transmux complete.\n  public endDTS!: number;\n  // The start time of the fragment, as listed in the manifest. Updated after transmux complete.\n  public start: number = 0;\n  // Set by `updateFragPTSDTS` in level-helper\n  public deltaPTS?: number;\n  // The maximum starting Presentation Time Stamp (audio/video PTS) of the fragment. Set after transmux complete.\n  public maxStartPTS?: number;\n  // The minimum ending Presentation Time Stamp (audio/video PTS) of the fragment. Set after transmux complete.\n  public minEndPTS?: number;\n  // Load/parse timing information\n  public stats: LoadStats = new LoadStats();\n  public urlId: number = 0;\n  public data?: Uint8Array;\n  // A flag indicating whether the segment was downloaded in order to test bitrate, and was not buffered\n  public bitrateTest: boolean = false;\n  // #EXTINF  segment title\n  public title: string | null = null;\n  // The Media Initialization Section for this segment\n  public initSegment: Fragment | null = null;\n  // Fragment is the last fragment in the media playlist\n  public endList?: boolean;\n  // Fragment is marked by an EXT-X-GAP tag indicating that it does not contain media data and should not be loaded\n  public gap?: boolean;\n\n  constructor(type: PlaylistLevelType, baseurl: string) {\n    super(baseurl);\n    this.type = type;\n  }\n\n  get decryptdata(): LevelKey | null {\n    const { levelkeys } = this;\n    if (!levelkeys && !this._decryptdata) {\n      return null;\n    }\n\n    if (!this._decryptdata && this.levelkeys && !this.levelkeys.NONE) {\n      const key = this.levelkeys.identity;\n      if (key) {\n        this._decryptdata = key.getDecryptData(this.sn);\n      } else {\n        const keyFormats = Object.keys(this.levelkeys);\n        if (keyFormats.length === 1) {\n          return (this._decryptdata = this.levelkeys[\n            keyFormats[0]\n          ].getDecryptData(this.sn));\n        } else {\n          // Multiple keys. key-loader to call Fragment.setKeyFormat based on selected key-system.\n        }\n      }\n    }\n\n    return this._decryptdata;\n  }\n\n  get end(): number {\n    return this.start + this.duration;\n  }\n\n  get endProgramDateTime() {\n    if (this.programDateTime === null) {\n      return null;\n    }\n\n    if (!Number.isFinite(this.programDateTime)) {\n      return null;\n    }\n\n    const duration = !Number.isFinite(this.duration) ? 0 : this.duration;\n\n    return this.programDateTime + duration * 1000;\n  }\n\n  get encrypted() {\n    // At the m3u8-parser level we need to add support for manifest signalled keyformats\n    // when we want the fragment to start reporting that it is encrypted.\n    // Currently, keyFormat will only be set for identity keys\n    if (this._decryptdata?.encrypted) {\n      return true;\n    } else if (this.levelkeys) {\n      const keyFormats = Object.keys(this.levelkeys);\n      const len = keyFormats.length;\n      if (len > 1 || (len === 1 && this.levelkeys[keyFormats[0]].encrypted)) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n\n  setKeyFormat(keyFormat: KeySystemFormats) {\n    if (this.levelkeys) {\n      const key = this.levelkeys[keyFormat];\n      if (key && !this._decryptdata) {\n        this._decryptdata = key.getDecryptData(this.sn);\n      }\n    }\n  }\n\n  abortRequests(): void {\n    this.loader?.abort();\n    this.keyLoader?.abort();\n  }\n\n  setElementaryStreamInfo(\n    type: ElementaryStreamTypes,\n    startPTS: number,\n    endPTS: number,\n    startDTS: number,\n    endDTS: number,\n    partial: boolean = false\n  ) {\n    const { elementaryStreams } = this;\n    const info = elementaryStreams[type];\n    if (!info) {\n      elementaryStreams[type] = {\n        startPTS,\n        endPTS,\n        startDTS,\n        endDTS,\n        partial,\n      };\n      return;\n    }\n\n    info.startPTS = Math.min(info.startPTS, startPTS);\n    info.endPTS = Math.max(info.endPTS, endPTS);\n    info.startDTS = Math.min(info.startDTS, startDTS);\n    info.endDTS = Math.max(info.endDTS, endDTS);\n  }\n\n  clearElementaryStreamInfo() {\n    const { elementaryStreams } = this;\n    elementaryStreams[ElementaryStreamTypes.AUDIO] = null;\n    elementaryStreams[ElementaryStreamTypes.VIDEO] = null;\n    elementaryStreams[ElementaryStreamTypes.AUDIOVIDEO] = null;\n  }\n}\n\n/**\n * Object representing parsed data from an HLS Partial Segment. Found in {@link hls.js#LevelDetails.partList}.\n */\nexport class Part extends BaseSegment {\n  public readonly fragOffset: number = 0;\n  public readonly duration: number = 0;\n  public readonly gap: boolean = false;\n  public readonly independent: boolean = false;\n  public readonly relurl: string;\n  public readonly fragment: Fragment;\n  public readonly index: number;\n  public stats: LoadStats = new LoadStats();\n\n  constructor(\n    partAttrs: AttrList,\n    frag: Fragment,\n    baseurl: string,\n    index: number,\n    previous?: Part\n  ) {\n    super(baseurl);\n    this.duration = partAttrs.decimalFloatingPoint('DURATION');\n    this.gap = partAttrs.bool('GAP');\n    this.independent = partAttrs.bool('INDEPENDENT');\n    this.relurl = partAttrs.enumeratedString('URI') as string;\n    this.fragment = frag;\n    this.index = index;\n    const byteRange = partAttrs.enumeratedString('BYTERANGE');\n    if (byteRange) {\n      this.setByteRange(byteRange, previous);\n    }\n    if (previous) {\n      this.fragOffset = previous.fragOffset + previous.duration;\n    }\n  }\n\n  get start(): number {\n    return this.fragment.start + this.fragOffset;\n  }\n\n  get end(): number {\n    return this.start + this.duration;\n  }\n\n  get loaded(): boolean {\n    const { elementaryStreams } = this;\n    return !!(\n      elementaryStreams.audio ||\n      elementaryStreams.video ||\n      elementaryStreams.audiovideo\n    );\n  }\n}\n","import { Part } from './fragment';\nimport type { Fragment } from './fragment';\nimport type { AttrList } from '../utils/attr-list';\nimport type { DateRange } from './date-range';\nimport type { VariableMap } from '../types/level';\n\nconst DEFAULT_TARGET_DURATION = 10;\n\n/**\n * Object representing parsed data from an HLS Media Playlist. Found in {@link hls.js#Level.details}.\n */\nexport class LevelDetails {\n  public PTSKnown: boolean = false;\n  public alignedSliding: boolean = false;\n  public averagetargetduration?: number;\n  public endCC: number = 0;\n  public endSN: number = 0;\n  public fragments: Fragment[];\n  public fragmentHint?: Fragment;\n  public partList: Part[] | null = null;\n  public dateRanges: Record<string, DateRange>;\n  public live: boolean = true;\n  public ageHeader: number = 0;\n  public advancedDateTime?: number;\n  public updated: boolean = true;\n  public advanced: boolean = true;\n  public availabilityDelay?: number; // Manifest reload synchronization\n  public misses: number = 0;\n  public startCC: number = 0;\n  public startSN: number = 0;\n  public startTimeOffset: number | null = null;\n  public targetduration: number = 0;\n  public totalduration: number = 0;\n  public type: string | null = null;\n  public url: string;\n  public m3u8: string = '';\n  public version: number | null = null;\n  public canBlockReload: boolean = false;\n  public canSkipUntil: number = 0;\n  public canSkipDateRanges: boolean = false;\n  public skippedSegments: number = 0;\n  public recentlyRemovedDateranges?: string[];\n  public partHoldBack: number = 0;\n  public holdBack: number = 0;\n  public partTarget: number = 0;\n  public preloadHint?: AttrList;\n  public renditionReports?: AttrList[];\n  public tuneInGoal: number = 0;\n  public deltaUpdateFailed?: boolean;\n  public driftStartTime: number = 0;\n  public driftEndTime: number = 0;\n  public driftStart: number = 0;\n  public driftEnd: number = 0;\n  public encryptedFragments: Fragment[];\n  public playlistParsingError: Error | null = null;\n  public variableList: VariableMap | null = null;\n  public hasVariableRefs = false;\n\n  constructor(baseUrl) {\n    this.fragments = [];\n    this.encryptedFragments = [];\n    this.dateRanges = {};\n    this.url = baseUrl;\n  }\n\n  reloaded(previous: LevelDetails | undefined) {\n    if (!previous) {\n      this.advanced = true;\n      this.updated = true;\n      return;\n    }\n    const partSnDiff = this.lastPartSn - previous.lastPartSn;\n    const partIndexDiff = this.lastPartIndex - previous.lastPartIndex;\n    this.updated =\n      this.endSN !== previous.endSN ||\n      !!partIndexDiff ||\n      !!partSnDiff ||\n      !this.live;\n    this.advanced =\n      this.endSN > previous.endSN ||\n      partSnDiff > 0 ||\n      (partSnDiff === 0 && partIndexDiff > 0);\n    if (this.updated || this.advanced) {\n      this.misses = Math.floor(previous.misses * 0.6);\n    } else {\n      this.misses = previous.misses + 1;\n    }\n    this.availabilityDelay = previous.availabilityDelay;\n  }\n\n  get hasProgramDateTime(): boolean {\n    if (this.fragments.length) {\n      return Number.isFinite(\n        this.fragments[this.fragments.length - 1].programDateTime as number\n      );\n    }\n    return false;\n  }\n\n  get levelTargetDuration(): number {\n    return (\n      this.averagetargetduration ||\n      this.targetduration ||\n      DEFAULT_TARGET_DURATION\n    );\n  }\n\n  get drift(): number {\n    const runTime = this.driftEndTime - this.driftStartTime;\n    if (runTime > 0) {\n      const runDuration = this.driftEnd - this.driftStart;\n      return (runDuration * 1000) / runTime;\n    }\n    return 1;\n  }\n\n  get edge(): number {\n    return this.partEnd || this.fragmentEnd;\n  }\n\n  get partEnd(): number {\n    if (this.partList?.length) {\n      return this.partList[this.partList.length - 1].end;\n    }\n    return this.fragmentEnd;\n  }\n\n  get fragmentEnd(): number {\n    if (this.fragments?.length) {\n      return this.fragments[this.fragments.length - 1].end;\n    }\n    return 0;\n  }\n\n  get age(): number {\n    if (this.advancedDateTime) {\n      return Math.max(Date.now() - this.advancedDateTime, 0) / 1000;\n    }\n    return 0;\n  }\n\n  get lastPartIndex(): number {\n    if (this.partList?.length) {\n      return this.partList[this.partList.length - 1].index;\n    }\n    return -1;\n  }\n\n  get lastPartSn(): number {\n    if (this.partList?.length) {\n      return this.partList[this.partList.length - 1].fragment.sn as number;\n    }\n    return this.endSN;\n  }\n}\n","/**\n *  hex dump helper class\n */\n\nconst Hex = {\n  hexDump: function (array: Uint8Array) {\n    let str = '';\n    for (let i = 0; i < array.length; i++) {\n      let h = array[i].toString(16);\n      if (h.length < 2) {\n        h = '0' + h;\n      }\n\n      str += h;\n    }\n    return str;\n  },\n};\n\nexport default Hex;\n","import type { LoaderConfig } from '../config';\nimport type { Fragment } from '../loader/fragment';\nimport type { Part } from '../loader/fragment';\nimport type { KeyLoaderInfo } from '../loader/key-loader';\nimport type { LevelDetails } from '../loader/level-details';\nimport type { HlsUrlParameters } from './level';\n\nexport interface LoaderContext {\n  // target URL\n  url: string;\n  // loader response type (arraybuffer or default response type for playlist)\n  responseType: string;\n  // headers\n  headers?: Record<string, string>;\n  // start byte range offset\n  rangeStart?: number;\n  // end byte range offset\n  rangeEnd?: number;\n  // true if onProgress should report partial chunk of loaded content\n  progressData?: boolean;\n}\n\nexport interface FragmentLoaderContext extends LoaderContext {\n  frag: Fragment;\n  part: Part | null;\n  resetIV?: boolean;\n}\n\nexport interface KeyLoaderContext extends LoaderContext {\n  keyInfo: KeyLoaderInfo;\n  frag: Fragment;\n}\n\nexport interface LoaderConfiguration {\n  // LoaderConfig policy that overrides required settings\n  loadPolicy: LoaderConfig;\n  /**\n   * @deprecated use LoaderConfig timeoutRetry and errorRetry maxNumRetry\n   */\n  // Max number of load retries\n  maxRetry: number;\n  /**\n   * @deprecated use LoaderConfig maxTimeToFirstByteMs and maxLoadTimeMs\n   */\n  // Timeout after which `onTimeOut` callback will be triggered\n  //  when loading has not finished after that delay\n  timeout: number;\n  /**\n   * @deprecated use LoaderConfig timeoutRetry and errorRetry retryDelayMs\n   */\n  // Delay between an I/O error and following connection retry (ms).\n  // This to avoid spamming the server\n  retryDelay: number;\n  /**\n   * @deprecated use LoaderConfig timeoutRetry and errorRetry maxRetryDelayMs\n   */\n  // max connection retry delay (ms)\n  maxRetryDelay: number;\n  // When streaming progressively, this is the minimum chunk size required to emit a PROGRESS event\n  highWaterMark?: number;\n}\n\nexport interface LoaderResponse {\n  url: string;\n  data?: string | ArrayBuffer | Object;\n  // Errors can include HTTP status code and error message\n  // Successful responses should include status code 200\n  code?: number;\n  text?: string;\n}\n\nexport interface LoaderStats {\n  aborted: boolean;\n  loaded: number;\n  retry: number;\n  total: number;\n  chunkCount: number;\n  bwEstimate: number;\n  loading: HlsProgressivePerformanceTiming;\n  parsing: HlsPerformanceTiming;\n  buffering: HlsProgressivePerformanceTiming;\n}\n\nexport interface HlsPerformanceTiming {\n  start: number;\n  end: number;\n}\n\nexport interface HlsChunkPerformanceTiming extends HlsPerformanceTiming {\n  executeStart: number;\n  executeEnd: number;\n}\n\nexport interface HlsProgressivePerformanceTiming extends HlsPerformanceTiming {\n  first: number;\n}\n\nexport type LoaderOnSuccess<T extends LoaderContext> = (\n  response: LoaderResponse,\n  stats: LoaderStats,\n  context: T,\n  networkDetails: any\n) => void;\n\nexport type LoaderOnProgress<T extends LoaderContext> = (\n  stats: LoaderStats,\n  context: T,\n  data: string | ArrayBuffer,\n  networkDetails: any\n) => void;\n\nexport type LoaderOnError<T extends LoaderContext> = (\n  error: {\n    // error status code\n    code: number;\n    // error description\n    text: string;\n  },\n  context: T,\n  networkDetails: any,\n  stats: LoaderStats\n) => void;\n\nexport type LoaderOnTimeout<T extends LoaderContext> = (\n  stats: LoaderStats,\n  context: T,\n  networkDetails: any\n) => void;\n\nexport type LoaderOnAbort<T extends LoaderContext> = (\n  stats: LoaderStats,\n  context: T,\n  networkDetails: any\n) => void;\n\nexport interface LoaderCallbacks<T extends LoaderContext> {\n  onSuccess: LoaderOnSuccess<T>;\n  onError: LoaderOnError<T>;\n  onTimeout: LoaderOnTimeout<T>;\n  onAbort?: LoaderOnAbort<T>;\n  onProgress?: LoaderOnProgress<T>;\n}\n\nexport interface Loader<T extends LoaderContext> {\n  destroy(): void;\n  abort(): void;\n  load(\n    context: LoaderContext,\n    config: LoaderConfiguration,\n    callbacks: LoaderCallbacks<T>\n  ): void;\n  /**\n   * `getCacheAge()` is called by hls.js to get the duration that a given object\n   * has been sitting in a cache proxy when playing live.  If implemented,\n   * this should return a value in seconds.\n   *\n   * For HTTP based loaders, this should return the contents of the \"age\" header.\n   *\n   * @returns time object being lodaded\n   */\n  getCacheAge?: () => number | null;\n  getResponseHeader?: (name: string) => string | null;\n  context: T;\n  stats: LoaderStats;\n}\n\nexport const enum PlaylistContextType {\n  MANIFEST = 'manifest',\n  LEVEL = 'level',\n  AUDIO_TRACK = 'audioTrack',\n  SUBTITLE_TRACK = 'subtitleTrack',\n}\n\nexport const enum PlaylistLevelType {\n  MAIN = 'main',\n  AUDIO = 'audio',\n  SUBTITLE = 'subtitle',\n}\n\nexport interface PlaylistLoaderContext extends LoaderContext {\n  type: PlaylistContextType;\n  // the level index to load\n  level: number | null;\n  // level or track id from LevelLoadingData / TrackLoadingData\n  id: number | null;\n  // track group id\n  groupId?: string;\n  // internal representation of a parsed m3u8 level playlist\n  levelDetails?: LevelDetails;\n  // Blocking playlist request delivery directives (or null id none were added to playlist url\n  deliveryDirectives: HlsUrlParameters | null;\n}\n","import type { RationalTimestamp } from '../utils/timescale-conversion';\n\nexport interface Demuxer {\n  demux(\n    data: Uint8Array,\n    timeOffset: number,\n    isSampleAes?: boolean,\n    flush?: boolean\n  ): DemuxerResult;\n  demuxSampleAes(\n    data: Uint8Array,\n    keyData: KeyData,\n    timeOffset: number\n  ): Promise<DemuxerResult>;\n  flush(timeOffset?: number): DemuxerResult | Promise<DemuxerResult>;\n  destroy(): void;\n  resetInitSegment(\n    initSegment: Uint8Array | undefined,\n    audioCodec: string | undefined,\n    videoCodec: string | undefined,\n    trackDuration: number\n  );\n  resetTimeStamp(defaultInitPTS?: RationalTimestamp | null): void;\n  resetContiguity(): void;\n}\n\nexport interface DemuxerResult {\n  audioTrack: DemuxedAudioTrack;\n  videoTrack: DemuxedVideoTrack;\n  id3Track: DemuxedMetadataTrack;\n  textTrack: DemuxedUserdataTrack;\n}\n\nexport interface DemuxedTrack {\n  type: string;\n  id: number;\n  pid: number;\n  inputTimeScale: number;\n  sequenceNumber: number;\n  samples:\n    | AudioSample[]\n    | AvcSample[]\n    | MetadataSample[]\n    | UserdataSample[]\n    | Uint8Array;\n  timescale?: number;\n  container?: string;\n  dropped: number;\n  duration?: number;\n  pesData?: ElementaryStreamData | null;\n  codec?: string;\n}\n\nexport interface PassthroughTrack extends DemuxedTrack {\n  sampleDuration: number;\n  samples: Uint8Array;\n  timescale: number;\n  duration: number;\n  codec: string;\n}\nexport interface DemuxedAudioTrack extends DemuxedTrack {\n  config?: number[];\n  samplerate?: number;\n  segmentCodec?: string;\n  channelCount?: number;\n  manifestCodec?: string;\n  samples: AudioSample[];\n}\n\nexport interface DemuxedVideoTrack extends DemuxedTrack {\n  width?: number;\n  height?: number;\n  pixelRatio?: [number, number];\n  audFound?: boolean;\n  pps?: Uint8Array[];\n  sps?: Uint8Array[];\n  naluState?: number;\n  samples: AvcSample[] | Uint8Array;\n}\n\nexport interface DemuxedAvcTrack extends DemuxedVideoTrack {\n  samples: AvcSample[];\n}\n\nexport interface DemuxedMetadataTrack extends DemuxedTrack {\n  samples: MetadataSample[];\n}\n\nexport interface DemuxedUserdataTrack extends DemuxedTrack {\n  samples: UserdataSample[];\n}\n\nexport const enum MetadataSchema {\n  audioId3 = 'org.id3',\n  dateRange = 'com.apple.quicktime.HLS',\n  emsg = 'https://aomedia.org/emsg/ID3',\n}\nexport interface MetadataSample {\n  pts: number;\n  dts: number;\n  duration: number;\n  len?: number;\n  data: Uint8Array;\n  type: MetadataSchema;\n}\n\nexport interface UserdataSample {\n  pts: number;\n  bytes?: Uint8Array;\n  type?: number;\n  payloadType?: number;\n  uuid?: string;\n  userData?: string;\n  userDataBytes?: Uint8Array;\n}\n\nexport interface AvcSample {\n  dts: number;\n  pts: number;\n  key: boolean;\n  frame: boolean;\n  units: AvcSampleUnit[];\n  debug: string;\n  length: number;\n}\n\nexport interface AvcSampleUnit {\n  data: Uint8Array;\n  type: number;\n}\n\nexport type AudioSample = {\n  unit: Uint8Array;\n  pts: number;\n};\n\nexport type AudioFrame = {\n  sample: AudioSample;\n  length: number;\n  missing: number;\n};\n\nexport interface ElementaryStreamData {\n  data: Uint8Array[];\n  size: number;\n}\n\nexport interface KeyData {\n  method: string;\n  key: Uint8Array;\n  iv: Uint8Array;\n}\n","import { LevelDetails } from '../loader/level-details';\nimport { ErrorDetails } from '../errors';\nimport { Events } from '../events';\nimport type {\n  ErrorData,\n  LevelUpdatedData,\n  MediaAttachingData,\n} from '../types/events';\nimport { logger } from '../utils/logger';\nimport type { ComponentAPI } from '../types/component-api';\nimport type Hls from '../hls';\nimport type { HlsConfig } from '../config';\n\nexport default class LatencyController implements ComponentAPI {\n  private hls: Hls;\n  private readonly config: HlsConfig;\n  private media: HTMLMediaElement | null = null;\n  private levelDetails: LevelDetails | null = null;\n  private currentTime: number = 0;\n  private stallCount: number = 0;\n  private _latency: number | null = null;\n  private timeupdateHandler = () => this.timeupdate();\n\n  constructor(hls: Hls) {\n    this.hls = hls;\n    this.config = hls.config;\n    this.registerListeners();\n  }\n\n  get latency(): number {\n    return this._latency || 0;\n  }\n\n  get maxLatency(): number {\n    const { config, levelDetails } = this;\n    if (config.liveMaxLatencyDuration !== undefined) {\n      return config.liveMaxLatencyDuration;\n    }\n    return levelDetails\n      ? config.liveMaxLatencyDurationCount * levelDetails.targetduration\n      : 0;\n  }\n\n  get targetLatency(): number | null {\n    const { levelDetails } = this;\n    if (levelDetails === null) {\n      return null;\n    }\n    const { holdBack, partHoldBack, targetduration } = levelDetails;\n    const { liveSyncDuration, liveSyncDurationCount, lowLatencyMode } =\n      this.config;\n    const userConfig = this.hls.userConfig;\n    let targetLatency = lowLatencyMode ? partHoldBack || holdBack : holdBack;\n    if (\n      userConfig.liveSyncDuration ||\n      userConfig.liveSyncDurationCount ||\n      targetLatency === 0\n    ) {\n      targetLatency =\n        liveSyncDuration !== undefined\n          ? liveSyncDuration\n          : liveSyncDurationCount * targetduration;\n    }\n    const maxLiveSyncOnStallIncrease = targetduration;\n    const liveSyncOnStallIncrease = 1.0;\n    return (\n      targetLatency +\n      Math.min(\n        this.stallCount * liveSyncOnStallIncrease,\n        maxLiveSyncOnStallIncrease\n      )\n    );\n  }\n\n  get liveSyncPosition(): number | null {\n    const liveEdge = this.estimateLiveEdge();\n    const targetLatency = this.targetLatency;\n    const levelDetails = this.levelDetails;\n    if (liveEdge === null || targetLatency === null || levelDetails === null) {\n      return null;\n    }\n    const edge = levelDetails.edge;\n    const syncPosition = liveEdge - targetLatency - this.edgeStalled;\n    const min = edge - levelDetails.totalduration;\n    const max =\n      edge -\n      ((this.config.lowLatencyMode && levelDetails.partTarget) ||\n        levelDetails.targetduration);\n    return Math.min(Math.max(min, syncPosition), max);\n  }\n\n  get drift(): number {\n    const { levelDetails } = this;\n    if (levelDetails === null) {\n      return 1;\n    }\n    return levelDetails.drift;\n  }\n\n  get edgeStalled(): number {\n    const { levelDetails } = this;\n    if (levelDetails === null) {\n      return 0;\n    }\n    const maxLevelUpdateAge =\n      ((this.config.lowLatencyMode && levelDetails.partTarget) ||\n        levelDetails.targetduration) * 3;\n    return Math.max(levelDetails.age - maxLevelUpdateAge, 0);\n  }\n\n  private get forwardBufferLength(): number {\n    const { media, levelDetails } = this;\n    if (!media || !levelDetails) {\n      return 0;\n    }\n    const bufferedRanges = media.buffered.length;\n    return (\n      (bufferedRanges\n        ? media.buffered.end(bufferedRanges - 1)\n        : levelDetails.edge) - this.currentTime\n    );\n  }\n\n  public destroy(): void {\n    this.unregisterListeners();\n    this.onMediaDetaching();\n    this.levelDetails = null;\n    // @ts-ignore\n    this.hls = this.timeupdateHandler = null;\n  }\n\n  private registerListeners() {\n    this.hls.on(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n    this.hls.on(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n    this.hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    this.hls.on(Events.LEVEL_UPDATED, this.onLevelUpdated, this);\n    this.hls.on(Events.ERROR, this.onError, this);\n  }\n\n  private unregisterListeners() {\n    this.hls.off(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n    this.hls.off(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n    this.hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    this.hls.off(Events.LEVEL_UPDATED, this.onLevelUpdated, this);\n    this.hls.off(Events.ERROR, this.onError, this);\n  }\n\n  private onMediaAttached(\n    event: Events.MEDIA_ATTACHED,\n    data: MediaAttachingData\n  ) {\n    this.media = data.media;\n    this.media.addEventListener('timeupdate', this.timeupdateHandler);\n  }\n\n  private onMediaDetaching() {\n    if (this.media) {\n      this.media.removeEventListener('timeupdate', this.timeupdateHandler);\n      this.media = null;\n    }\n  }\n\n  private onManifestLoading() {\n    this.levelDetails = null;\n    this._latency = null;\n    this.stallCount = 0;\n  }\n\n  private onLevelUpdated(\n    event: Events.LEVEL_UPDATED,\n    { details }: LevelUpdatedData\n  ) {\n    this.levelDetails = details;\n    if (details.advanced) {\n      this.timeupdate();\n    }\n    if (!details.live && this.media) {\n      this.media.removeEventListener('timeupdate', this.timeupdateHandler);\n    }\n  }\n\n  private onError(event: Events.ERROR, data: ErrorData) {\n    if (data.details !== ErrorDetails.BUFFER_STALLED_ERROR) {\n      return;\n    }\n    this.stallCount++;\n    if (this.levelDetails?.live) {\n      logger.warn(\n        '[playback-rate-controller]: Stall detected, adjusting target latency'\n      );\n    }\n  }\n\n  private timeupdate() {\n    const { media, levelDetails } = this;\n    if (!media || !levelDetails) {\n      return;\n    }\n    this.currentTime = media.currentTime;\n\n    const latency = this.computeLatency();\n    if (latency === null) {\n      return;\n    }\n    this._latency = latency;\n\n    // Adapt playbackRate to meet target latency in low-latency mode\n    const { lowLatencyMode, maxLiveSyncPlaybackRate } = this.config;\n    if (!lowLatencyMode || maxLiveSyncPlaybackRate === 1) {\n      return;\n    }\n    const targetLatency = this.targetLatency;\n    if (targetLatency === null) {\n      return;\n    }\n    const distanceFromTarget = latency - targetLatency;\n    // Only adjust playbackRate when within one target duration of targetLatency\n    // and more than one second from under-buffering.\n    // Playback further than one target duration from target can be considered DVR playback.\n    const liveMinLatencyDuration = Math.min(\n      this.maxLatency,\n      targetLatency + levelDetails.targetduration\n    );\n    const inLiveRange = distanceFromTarget < liveMinLatencyDuration;\n    if (\n      levelDetails.live &&\n      inLiveRange &&\n      distanceFromTarget > 0.05 &&\n      this.forwardBufferLength > 1\n    ) {\n      const max = Math.min(2, Math.max(1.0, maxLiveSyncPlaybackRate));\n      const rate =\n        Math.round(\n          (2 / (1 + Math.exp(-0.75 * distanceFromTarget - this.edgeStalled))) *\n            20\n        ) / 20;\n      media.playbackRate = Math.min(max, Math.max(1, rate));\n    } else if (media.playbackRate !== 1 && media.playbackRate !== 0) {\n      media.playbackRate = 1;\n    }\n  }\n\n  private estimateLiveEdge(): number | null {\n    const { levelDetails } = this;\n    if (levelDetails === null) {\n      return null;\n    }\n    return levelDetails.edge + levelDetails.age;\n  }\n\n  private computeLatency(): number | null {\n    const liveEdge = this.estimateLiveEdge();\n    if (liveEdge === null) {\n      return null;\n    }\n    return liveEdge - this.currentTime;\n  }\n}\n","type BinarySearchComparison<T> = (candidate: T) => -1 | 0 | 1;\n\nconst BinarySearch = {\n  /**\n   * Searches for an item in an array which matches a certain condition.\n   * This requires the condition to only match one item in the array,\n   * and for the array to be ordered.\n   *\n   * @param list The array to search.\n   * @param comparisonFn\n   *      Called and provided a candidate item as the first argument.\n   *      Should return:\n   *          > -1 if the item should be located at a lower index than the provided item.\n   *          > 1 if the item should be located at a higher index than the provided item.\n   *          > 0 if the item is the item you're looking for.\n   *\n   * @returns the object if found, otherwise returns null\n   */\n  search: function <T>(\n    list: T[],\n    comparisonFn: BinarySearchComparison<T>\n  ): T | null {\n    let minIndex: number = 0;\n    let maxIndex: number = list.length - 1;\n    let currentIndex: number | null = null;\n    let currentElement: T | null = null;\n\n    while (minIndex <= maxIndex) {\n      currentIndex = ((minIndex + maxIndex) / 2) | 0;\n      currentElement = list[currentIndex];\n\n      const comparisonResult = comparisonFn(currentElement);\n      if (comparisonResult > 0) {\n        minIndex = currentIndex + 1;\n      } else if (comparisonResult < 0) {\n        maxIndex = currentIndex - 1;\n      } else {\n        return currentElement;\n      }\n    }\n\n    return null;\n  },\n};\n\nexport default BinarySearch;\n","import type Hls from '../hls';\nimport type { NetworkComponentAPI } from '../types/component-api';\nimport { getSkipValue, HlsSkip, HlsUrlParameters, Level } from '../types/level';\nimport { computeReloadInterval, mergeDetails } from './level-helper';\nimport { ErrorData } from '../types/events';\nimport { getRetryDelay, isTimeoutError } from '../utils/error-helper';\nimport { NetworkErrorAction } from './error-controller';\nimport { logger } from '../utils/logger';\nimport type { LevelDetails } from '../loader/level-details';\nimport type { MediaPlaylist } from '../types/media-playlist';\nimport type {\n  AudioTrackLoadedData,\n  LevelLoadedData,\n  TrackLoadedData,\n} from '../types/events';\n\nexport default class BasePlaylistController implements NetworkComponentAPI {\n  protected hls: Hls;\n  protected timer: number = -1;\n  protected requestScheduled: number = -1;\n  protected canLoad: boolean = false;\n  protected log: (msg: any) => void;\n  protected warn: (msg: any) => void;\n\n  constructor(hls: Hls, logPrefix: string) {\n    this.log = logger.log.bind(logger, `${logPrefix}:`);\n    this.warn = logger.warn.bind(logger, `${logPrefix}:`);\n    this.hls = hls;\n  }\n\n  public destroy(): void {\n    this.clearTimer();\n    // @ts-ignore\n    this.hls = this.log = this.warn = null;\n  }\n\n  protected clearTimer(): void {\n    clearTimeout(this.timer);\n    this.timer = -1;\n  }\n\n  public startLoad(): void {\n    this.canLoad = true;\n    this.requestScheduled = -1;\n    this.loadPlaylist();\n  }\n\n  public stopLoad(): void {\n    this.canLoad = false;\n    this.clearTimer();\n  }\n\n  protected switchParams(\n    playlistUri: string,\n    previous: LevelDetails | undefined\n  ): HlsUrlParameters | undefined {\n    const renditionReports = previous?.renditionReports;\n    if (renditionReports) {\n      let foundIndex = -1;\n      for (let i = 0; i < renditionReports.length; i++) {\n        const attr = renditionReports[i];\n        let uri: string;\n        try {\n          uri = new self.URL(attr.URI, previous.url).href;\n        } catch (error) {\n          logger.warn(\n            `Could not construct new URL for Rendition Report: ${error}`\n          );\n          uri = attr.URI || '';\n        }\n        // Use exact match. Otherwise, the last partial match, if any, will be used\n        // (Playlist URI includes a query string that the Rendition Report does not)\n        if (uri === playlistUri) {\n          foundIndex = i;\n          break;\n        } else if (uri === playlistUri.substring(0, uri.length)) {\n          foundIndex = i;\n        }\n      }\n      if (foundIndex !== -1) {\n        const attr = renditionReports[foundIndex];\n        const msn = parseInt(attr['LAST-MSN']) || previous?.lastPartSn;\n        let part = parseInt(attr['LAST-PART']) || previous?.lastPartIndex;\n        if (this.hls.config.lowLatencyMode) {\n          const currentGoal = Math.min(\n            previous.age - previous.partTarget,\n            previous.targetduration\n          );\n          if (part >= 0 && currentGoal > previous.partTarget) {\n            part += 1;\n          }\n        }\n        return new HlsUrlParameters(\n          msn,\n          part >= 0 ? part : undefined,\n          HlsSkip.No\n        );\n      }\n    }\n  }\n\n  protected loadPlaylist(hlsUrlParameters?: HlsUrlParameters): void {\n    if (this.requestScheduled === -1) {\n      this.requestScheduled = self.performance.now();\n    }\n    // Loading is handled by the subclasses\n  }\n\n  protected shouldLoadPlaylist(\n    playlist: Level | MediaPlaylist | null | undefined\n  ): boolean {\n    return (\n      this.canLoad &&\n      !!playlist &&\n      !!playlist.url &&\n      (!playlist.details || playlist.details.live)\n    );\n  }\n\n  protected shouldReloadPlaylist(\n    playlist: Level | MediaPlaylist | null | undefined\n  ): boolean {\n    return (\n      this.timer === -1 &&\n      this.requestScheduled === -1 &&\n      this.shouldLoadPlaylist(playlist)\n    );\n  }\n\n  protected playlistLoaded(\n    index: number,\n    data: LevelLoadedData | AudioTrackLoadedData | TrackLoadedData,\n    previousDetails?: LevelDetails\n  ) {\n    const { details, stats } = data;\n\n    // Set last updated date-time\n    const now = self.performance.now();\n    const elapsed = stats.loading.first\n      ? Math.max(0, now - stats.loading.first)\n      : 0;\n    details.advancedDateTime = Date.now() - elapsed;\n\n    // if current playlist is a live playlist, arm a timer to reload it\n    if (details.live || previousDetails?.live) {\n      details.reloaded(previousDetails);\n      if (previousDetails) {\n        this.log(\n          `live playlist ${index} ${\n            details.advanced\n              ? 'REFRESHED ' + details.lastPartSn + '-' + details.lastPartIndex\n              : details.updated\n              ? 'UPDATED'\n              : 'MISSED'\n          }`\n        );\n      }\n      // Merge live playlists to adjust fragment starts and fill in delta playlist skipped segments\n      if (previousDetails && details.fragments.length > 0) {\n        mergeDetails(previousDetails, details);\n      }\n      if (!this.canLoad || !details.live) {\n        return;\n      }\n      let deliveryDirectives: HlsUrlParameters | undefined;\n      let msn: number | undefined = undefined;\n      let part: number | undefined = undefined;\n      if (details.canBlockReload && details.endSN && details.advanced) {\n        // Load level with LL-HLS delivery directives\n        const lowLatencyMode = this.hls.config.lowLatencyMode;\n        const lastPartSn = details.lastPartSn;\n        const endSn = details.endSN;\n        const lastPartIndex = details.lastPartIndex;\n        const hasParts = lastPartIndex !== -1;\n        const lastPart = lastPartSn === endSn;\n        // When low latency mode is disabled, we'll skip part requests once the last part index is found\n        const nextSnStartIndex = lowLatencyMode ? 0 : lastPartIndex;\n        if (hasParts) {\n          msn = lastPart ? endSn + 1 : lastPartSn;\n          part = lastPart ? nextSnStartIndex : lastPartIndex + 1;\n        } else {\n          msn = endSn + 1;\n        }\n        // Low-Latency CDN Tune-in: \"age\" header and time since load indicates we're behind by more than one part\n        // Update directives to obtain the Playlist that has the estimated additional duration of media\n        const lastAdvanced = details.age;\n        const cdnAge = lastAdvanced + details.ageHeader;\n        let currentGoal = Math.min(\n          cdnAge - details.partTarget,\n          details.targetduration * 1.5\n        );\n        if (currentGoal > 0) {\n          if (previousDetails && currentGoal > previousDetails.tuneInGoal) {\n            // If we attempted to get the next or latest playlist update, but currentGoal increased,\n            // then we either can't catchup, or the \"age\" header cannot be trusted.\n            this.warn(\n              `CDN Tune-in goal increased from: ${previousDetails.tuneInGoal} to: ${currentGoal} with playlist age: ${details.age}`\n            );\n            currentGoal = 0;\n          } else {\n            const segments = Math.floor(currentGoal / details.targetduration);\n            msn += segments;\n            if (part !== undefined) {\n              const parts = Math.round(\n                (currentGoal % details.targetduration) / details.partTarget\n              );\n              part += parts;\n            }\n            this.log(\n              `CDN Tune-in age: ${\n                details.ageHeader\n              }s last advanced ${lastAdvanced.toFixed(\n                2\n              )}s goal: ${currentGoal} skip sn ${segments} to part ${part}`\n            );\n          }\n          details.tuneInGoal = currentGoal;\n        }\n        deliveryDirectives = this.getDeliveryDirectives(\n          details,\n          data.deliveryDirectives,\n          msn,\n          part\n        );\n        if (lowLatencyMode || !lastPart) {\n          this.loadPlaylist(deliveryDirectives);\n          return;\n        }\n      } else if (details.canBlockReload || details.canSkipUntil) {\n        deliveryDirectives = this.getDeliveryDirectives(\n          details,\n          data.deliveryDirectives,\n          msn,\n          part\n        );\n      }\n      const bufferInfo = this.hls.mainForwardBufferInfo;\n      const position = bufferInfo ? bufferInfo.end - bufferInfo.len : 0;\n      const distanceToLiveEdgeMs = (details.edge - position) * 1000;\n      const reloadInterval = computeReloadInterval(\n        details,\n        distanceToLiveEdgeMs\n      );\n      if (details.updated && now > this.requestScheduled + reloadInterval) {\n        this.requestScheduled = stats.loading.start;\n      }\n\n      if (msn !== undefined && details.canBlockReload) {\n        this.requestScheduled =\n          stats.loading.first +\n          reloadInterval -\n          (details.partTarget * 1000 || 1000);\n      } else if (\n        this.requestScheduled === -1 ||\n        this.requestScheduled + reloadInterval < now\n      ) {\n        this.requestScheduled = now;\n      } else if (this.requestScheduled - now <= 0) {\n        this.requestScheduled += reloadInterval;\n      }\n      let estimatedTimeUntilUpdate = this.requestScheduled - now;\n      estimatedTimeUntilUpdate = Math.max(0, estimatedTimeUntilUpdate);\n      this.log(\n        `reload live playlist ${index} in ${Math.round(\n          estimatedTimeUntilUpdate\n        )} ms`\n      );\n      // this.log(\n      //   `live reload ${details.updated ? 'REFRESHED' : 'MISSED'}\n      // reload in ${estimatedTimeUntilUpdate / 1000}\n      // round trip ${(stats.loading.end - stats.loading.start) / 1000}\n      // diff ${\n      //   (reloadInterval -\n      //     (estimatedTimeUntilUpdate +\n      //       stats.loading.end -\n      //       stats.loading.start)) /\n      //   1000\n      // }\n      // reload interval ${reloadInterval / 1000}\n      // target duration ${details.targetduration}\n      // distance to edge ${distanceToLiveEdgeMs / 1000}`\n      // );\n\n      this.timer = self.setTimeout(\n        () => this.loadPlaylist(deliveryDirectives),\n        estimatedTimeUntilUpdate\n      );\n    } else {\n      this.clearTimer();\n    }\n  }\n\n  private getDeliveryDirectives(\n    details: LevelDetails,\n    previousDeliveryDirectives: HlsUrlParameters | null,\n    msn?: number,\n    part?: number\n  ): HlsUrlParameters {\n    let skip = getSkipValue(details, msn);\n    if (previousDeliveryDirectives?.skip && details.deltaUpdateFailed) {\n      msn = previousDeliveryDirectives.msn;\n      part = previousDeliveryDirectives.part;\n      skip = HlsSkip.No;\n    }\n    return new HlsUrlParameters(msn, part, skip);\n  }\n\n  protected checkRetry(errorEvent: ErrorData): boolean {\n    const errorDetails = errorEvent.details;\n    const isTimeout = isTimeoutError(errorEvent);\n    const errorAction = errorEvent.errorAction;\n    const { action, retryCount = 0, retryConfig } = errorAction || {};\n    const retry =\n      !!errorAction &&\n      !!retryConfig &&\n      (action === NetworkErrorAction.RetryRequest ||\n        (!errorAction.resolved &&\n          action === NetworkErrorAction.SendAlternateToPenaltyBox));\n    if (retry) {\n      this.requestScheduled = -1;\n      if (retryCount >= retryConfig.maxNumRetry) {\n        return false;\n      }\n      if (isTimeout && errorEvent.context?.deliveryDirectives) {\n        // The LL-HLS request already timed out so retry immediately\n        this.warn(\n          `Retrying playlist loading ${retryCount + 1}/${\n            retryConfig.maxNumRetry\n          } after \"${errorDetails}\" without delivery-directives`\n        );\n        this.loadPlaylist();\n      } else {\n        const delay = getRetryDelay(retryConfig, retryCount);\n        // Schedule level/track reload\n        this.timer = self.setTimeout(() => this.loadPlaylist(), delay);\n        this.warn(\n          `Retrying playlist loading ${retryCount + 1}/${\n            retryConfig.maxNumRetry\n          } after \"${errorDetails}\" in ${delay}ms`\n        );\n      }\n      // `levelRetry = true` used to inform other controllers that a retry is happening\n      errorEvent.levelRetry = true;\n      errorAction.resolved = true;\n    }\n    return retry;\n  }\n}\n","import { ErrorTypes, ErrorDetails } from '../errors';\nimport {\n  LoaderStats,\n  LoaderResponse,\n  LoaderConfiguration,\n  LoaderCallbacks,\n  Loader,\n  KeyLoaderContext,\n  PlaylistLevelType,\n} from '../types/loader';\nimport { LoadError } from './fragment-loader';\nimport type { HlsConfig } from '../config';\nimport type { Fragment } from '../loader/fragment';\nimport type { ComponentAPI } from '../types/component-api';\nimport type { KeyLoadedData } from '../types/events';\nimport type { LevelKey } from './level-key';\nimport type EMEController from '../controller/eme-controller';\nimport type { MediaKeySessionContext } from '../controller/eme-controller';\nimport type { KeySystemFormats } from '../utils/mediakeys-helper';\n\nexport interface KeyLoaderInfo {\n  decryptdata: LevelKey;\n  keyLoadPromise: Promise<KeyLoadedData> | null;\n  loader: Loader<KeyLoaderContext> | null;\n  mediaKeySessionContext: MediaKeySessionContext | null;\n}\nexport default class KeyLoader implements ComponentAPI {\n  private readonly config: HlsConfig;\n  public keyUriToKeyInfo: { [keyuri: string]: KeyLoaderInfo } = {};\n  public emeController: EMEController | null = null;\n\n  constructor(config: HlsConfig) {\n    this.config = config;\n  }\n\n  abort(type?: PlaylistLevelType) {\n    for (const uri in this.keyUriToKeyInfo) {\n      const loader = this.keyUriToKeyInfo[uri].loader;\n      if (loader) {\n        if (type && type !== loader.context.frag.type) {\n          return;\n        }\n        loader.abort();\n      }\n    }\n  }\n\n  detach() {\n    for (const uri in this.keyUriToKeyInfo) {\n      const keyInfo = this.keyUriToKeyInfo[uri];\n      // Remove cached EME keys on detach\n      if (\n        keyInfo.mediaKeySessionContext ||\n        keyInfo.decryptdata.isCommonEncryption\n      ) {\n        delete this.keyUriToKeyInfo[uri];\n      }\n    }\n  }\n\n  destroy() {\n    this.detach();\n    for (const uri in this.keyUriToKeyInfo) {\n      const loader = this.keyUriToKeyInfo[uri].loader;\n      if (loader) {\n        loader.destroy();\n      }\n    }\n    this.keyUriToKeyInfo = {};\n  }\n\n  createKeyLoadError(\n    frag: Fragment,\n    details: ErrorDetails = ErrorDetails.KEY_LOAD_ERROR,\n    error: Error,\n    networkDetails?: any,\n    response?: { url: string; data: undefined; code: number; text: string }\n  ): LoadError {\n    return new LoadError({\n      type: ErrorTypes.NETWORK_ERROR,\n      details,\n      fatal: false,\n      frag,\n      response,\n      error,\n      networkDetails,\n    });\n  }\n\n  loadClear(\n    loadingFrag: Fragment,\n    encryptedFragments: Fragment[]\n  ): void | Promise<void> {\n    if (this.emeController && this.config.emeEnabled) {\n      // access key-system with nearest key on start (loaidng frag is unencrypted)\n      const { sn, cc } = loadingFrag;\n      for (let i = 0; i < encryptedFragments.length; i++) {\n        const frag = encryptedFragments[i];\n        if (\n          cc <= frag.cc &&\n          (sn === 'initSegment' || frag.sn === 'initSegment' || sn < frag.sn)\n        ) {\n          this.emeController\n            .selectKeySystemFormat(frag)\n            .then((keySystemFormat) => {\n              frag.setKeyFormat(keySystemFormat);\n            });\n          break;\n        }\n      }\n    }\n  }\n\n  load(frag: Fragment): Promise<KeyLoadedData> {\n    if (!frag.decryptdata && frag.encrypted && this.emeController) {\n      // Multiple keys, but none selected, resolve in eme-controller\n      return this.emeController\n        .selectKeySystemFormat(frag)\n        .then((keySystemFormat) => {\n          return this.loadInternal(frag, keySystemFormat);\n        });\n    }\n\n    return this.loadInternal(frag);\n  }\n\n  loadInternal(\n    frag: Fragment,\n    keySystemFormat?: KeySystemFormats\n  ): Promise<KeyLoadedData> {\n    if (keySystemFormat) {\n      frag.setKeyFormat(keySystemFormat);\n    }\n    const decryptdata = frag.decryptdata;\n    if (!decryptdata) {\n      const error = new Error(\n        keySystemFormat\n          ? `Expected frag.decryptdata to be defined after setting format ${keySystemFormat}`\n          : 'Missing decryption data on fragment in onKeyLoading'\n      );\n      return Promise.reject(\n        this.createKeyLoadError(frag, ErrorDetails.KEY_LOAD_ERROR, error)\n      );\n    }\n    const uri = decryptdata.uri;\n    if (!uri) {\n      return Promise.reject(\n        this.createKeyLoadError(\n          frag,\n          ErrorDetails.KEY_LOAD_ERROR,\n          new Error(`Invalid key URI: \"${uri}\"`)\n        )\n      );\n    }\n    let keyInfo = this.keyUriToKeyInfo[uri];\n\n    if (keyInfo?.decryptdata.key) {\n      decryptdata.key = keyInfo.decryptdata.key;\n      return Promise.resolve({ frag, keyInfo });\n    }\n    // Return key load promise as long as it does not have a mediakey session with an unusable key status\n    if (keyInfo?.keyLoadPromise) {\n      switch (keyInfo.mediaKeySessionContext?.keyStatus) {\n        case undefined:\n        case 'status-pending':\n        case 'usable':\n        case 'usable-in-future':\n          return keyInfo.keyLoadPromise.then((keyLoadedData) => {\n            // Return the correct fragment with updated decryptdata key and loaded keyInfo\n            decryptdata.key = keyLoadedData.keyInfo.decryptdata.key;\n            return { frag, keyInfo };\n          });\n      }\n      // If we have a key session and status and it is not pending or usable, continue\n      // This will go back to the eme-controller for expired keys to get a new keyLoadPromise\n    }\n\n    // Load the key or return the loading promise\n    keyInfo = this.keyUriToKeyInfo[uri] = {\n      decryptdata,\n      keyLoadPromise: null,\n      loader: null,\n      mediaKeySessionContext: null,\n    };\n\n    switch (decryptdata.method) {\n      case 'ISO-23001-7':\n      case 'SAMPLE-AES':\n      case 'SAMPLE-AES-CENC':\n      case 'SAMPLE-AES-CTR':\n        if (decryptdata.keyFormat === 'identity') {\n          // loadKeyHTTP handles http(s) and data URLs\n          return this.loadKeyHTTP(keyInfo, frag);\n        }\n        return this.loadKeyEME(keyInfo, frag);\n      case 'AES-128':\n        return this.loadKeyHTTP(keyInfo, frag);\n      default:\n        return Promise.reject(\n          this.createKeyLoadError(\n            frag,\n            ErrorDetails.KEY_LOAD_ERROR,\n            new Error(\n              `Key supplied with unsupported METHOD: \"${decryptdata.method}\"`\n            )\n          )\n        );\n    }\n  }\n\n  loadKeyEME(keyInfo: KeyLoaderInfo, frag: Fragment): Promise<KeyLoadedData> {\n    const keyLoadedData: KeyLoadedData = { frag, keyInfo };\n    if (this.emeController && this.config.emeEnabled) {\n      const keySessionContextPromise =\n        this.emeController.loadKey(keyLoadedData);\n      if (keySessionContextPromise) {\n        return (keyInfo.keyLoadPromise = keySessionContextPromise.then(\n          (keySessionContext) => {\n            keyInfo.mediaKeySessionContext = keySessionContext;\n            return keyLoadedData;\n          }\n        )).catch((error) => {\n          // Remove promise for license renewal or retry\n          keyInfo.keyLoadPromise = null;\n          throw error;\n        });\n      }\n    }\n    return Promise.resolve(keyLoadedData);\n  }\n\n  loadKeyHTTP(keyInfo: KeyLoaderInfo, frag: Fragment): Promise<KeyLoadedData> {\n    const config = this.config;\n    const Loader = config.loader;\n    const keyLoader = new Loader(config) as Loader<KeyLoaderContext>;\n    frag.keyLoader = keyInfo.loader = keyLoader;\n\n    return (keyInfo.keyLoadPromise = new Promise((resolve, reject) => {\n      const loaderContext: KeyLoaderContext = {\n        keyInfo,\n        frag,\n        responseType: 'arraybuffer',\n        url: keyInfo.decryptdata.uri,\n      };\n\n      // maxRetry is 0 so that instead of retrying the same key on the same variant multiple times,\n      // key-loader will trigger an error and rely on stream-controller to handle retry logic.\n      // this will also align retry logic with fragment-loader\n      const loadPolicy = config.keyLoadPolicy.default;\n      const loaderConfig: LoaderConfiguration = {\n        loadPolicy,\n        timeout: loadPolicy.maxLoadTimeMs,\n        maxRetry: 0,\n        retryDelay: 0,\n        maxRetryDelay: 0,\n      };\n\n      const loaderCallbacks: LoaderCallbacks<KeyLoaderContext> = {\n        onSuccess: (\n          response: LoaderResponse,\n          stats: LoaderStats,\n          context: KeyLoaderContext,\n          networkDetails: any\n        ) => {\n          const { frag, keyInfo, url: uri } = context;\n          if (!frag.decryptdata || keyInfo !== this.keyUriToKeyInfo[uri]) {\n            return reject(\n              this.createKeyLoadError(\n                frag,\n                ErrorDetails.KEY_LOAD_ERROR,\n                new Error('after key load, decryptdata unset or changed'),\n                networkDetails\n              )\n            );\n          }\n\n          keyInfo.decryptdata.key = frag.decryptdata.key = new Uint8Array(\n            response.data as ArrayBuffer\n          );\n\n          // detach fragment key loader on load success\n          frag.keyLoader = null;\n          keyInfo.loader = null;\n          resolve({ frag, keyInfo });\n        },\n\n        onError: (\n          response: { code: number; text: string },\n          context: KeyLoaderContext,\n          networkDetails: any,\n          stats: LoaderStats\n        ) => {\n          this.resetLoader(context);\n          reject(\n            this.createKeyLoadError(\n              frag,\n              ErrorDetails.KEY_LOAD_ERROR,\n              new Error(\n                `HTTP Error ${response.code} loading key ${response.text}`\n              ),\n              networkDetails,\n              { url: loaderContext.url, data: undefined, ...response }\n            )\n          );\n        },\n\n        onTimeout: (\n          stats: LoaderStats,\n          context: KeyLoaderContext,\n          networkDetails: any\n        ) => {\n          this.resetLoader(context);\n          reject(\n            this.createKeyLoadError(\n              frag,\n              ErrorDetails.KEY_LOAD_TIMEOUT,\n              new Error('key loading timed out'),\n              networkDetails\n            )\n          );\n        },\n\n        onAbort: (\n          stats: LoaderStats,\n          context: KeyLoaderContext,\n          networkDetails: any\n        ) => {\n          this.resetLoader(context);\n          reject(\n            this.createKeyLoadError(\n              frag,\n              ErrorDetails.INTERNAL_ABORTED,\n              new Error('key loading aborted'),\n              networkDetails\n            )\n          );\n        },\n      };\n\n      keyLoader.load(loaderContext, loaderConfig, loaderCallbacks);\n    }));\n  }\n\n  private resetLoader(context: KeyLoaderContext) {\n    const { frag, keyInfo, url: uri } = context;\n    const loader = keyInfo.loader;\n    if (frag.keyLoader === loader) {\n      frag.keyLoader = null;\n      keyInfo.loader = null;\n    }\n    delete this.keyUriToKeyInfo[uri];\n    if (loader) {\n      loader.destroy();\n    }\n  }\n}\n","/**\n * @ignore\n * Sub-class specialization of EventHandler base class.\n *\n * TaskLoop allows to schedule a task function being called (optionnaly repeatedly) on the main loop,\n * scheduled asynchroneously, avoiding recursive calls in the same tick.\n *\n * The task itself is implemented in `doTick`. It can be requested and called for single execution\n * using the `tick` method.\n *\n * It will be assured that the task execution method (`tick`) only gets called once per main loop \"tick\",\n * no matter how often it gets requested for execution. Execution in further ticks will be scheduled accordingly.\n *\n * If further execution requests have already been scheduled on the next tick, it can be checked with `hasNextTick`,\n * and cancelled with `clearNextTick`.\n *\n * The task can be scheduled as an interval repeatedly with a period as parameter (see `setInterval`, `clearInterval`).\n *\n * Sub-classes need to implement the `doTick` method which will effectively have the task execution routine.\n *\n * Further explanations:\n *\n * The baseclass has a `tick` method that will schedule the doTick call. It may be called synchroneously\n * only for a stack-depth of one. On re-entrant calls, sub-sequent calls are scheduled for next main loop ticks.\n *\n * When the task execution (`tick` method) is called in re-entrant way this is detected and\n * we are limiting the task execution per call stack to exactly one, but scheduling/post-poning further\n * task processing on the next main loop iteration (also known as \"next tick\" in the Node/JS runtime lingo).\n */\nexport default class TaskLoop {\n  private readonly _boundTick: () => void;\n  private _tickTimer: number | null = null;\n  private _tickInterval: number | null = null;\n  private _tickCallCount = 0;\n\n  constructor() {\n    this._boundTick = this.tick.bind(this);\n  }\n\n  public destroy() {\n    this.onHandlerDestroying();\n    this.onHandlerDestroyed();\n  }\n\n  protected onHandlerDestroying() {\n    // clear all timers before unregistering from event bus\n    this.clearNextTick();\n    this.clearInterval();\n  }\n\n  protected onHandlerDestroyed() {}\n\n  public hasInterval(): boolean {\n    return !!this._tickInterval;\n  }\n\n  public hasNextTick(): boolean {\n    return !!this._tickTimer;\n  }\n\n  /**\n   * @param millis - Interval time (ms)\n   * @eturns True when interval has been scheduled, false when already scheduled (no effect)\n   */\n  public setInterval(millis: number): boolean {\n    if (!this._tickInterval) {\n      this._tickCallCount = 0;\n      this._tickInterval = self.setInterval(this._boundTick, millis);\n      return true;\n    }\n    return false;\n  }\n\n  /**\n   * @returns True when interval was cleared, false when none was set (no effect)\n   */\n  public clearInterval(): boolean {\n    if (this._tickInterval) {\n      self.clearInterval(this._tickInterval);\n      this._tickInterval = null;\n      return true;\n    }\n    return false;\n  }\n\n  /**\n   * @returns True when timeout was cleared, false when none was set (no effect)\n   */\n  public clearNextTick(): boolean {\n    if (this._tickTimer) {\n      self.clearTimeout(this._tickTimer);\n      this._tickTimer = null;\n      return true;\n    }\n    return false;\n  }\n\n  /**\n   * Will call the subclass doTick implementation in this main loop tick\n   * or in the next one (via setTimeout(,0)) in case it has already been called\n   * in this tick (in case this is a re-entrant call).\n   */\n  public tick(): void {\n    this._tickCallCount++;\n    if (this._tickCallCount === 1) {\n      this.doTick();\n      // re-entrant call to tick from previous doTick call stack\n      // -> schedule a call on the next main loop iteration to process this task processing request\n      if (this._tickCallCount > 1) {\n        // make sure only one timer exists at any time at max\n        this.tickImmediate();\n      }\n      this._tickCallCount = 0;\n    }\n  }\n\n  public tickImmediate(): void {\n    this.clearNextTick();\n    this._tickTimer = self.setTimeout(this._boundTick, 0);\n  }\n\n  /**\n   * For subclass to implement task logic\n   * @abstract\n   */\n  protected doTick(): void {}\n}\n","/**\n * Provides methods dealing with buffer length retrieval for example.\n *\n * In general, a helper around HTML5 MediaElement TimeRanges gathered from `buffered` property.\n *\n * Also @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/buffered\n */\n\nimport { logger } from './logger';\n\ntype BufferTimeRange = {\n  start: number;\n  end: number;\n};\n\nexport type Bufferable = {\n  buffered: TimeRanges;\n};\n\nexport type BufferInfo = {\n  len: number;\n  start: number;\n  end: number;\n  nextStart?: number;\n};\n\nconst noopBuffered: TimeRanges = {\n  length: 0,\n  start: () => 0,\n  end: () => 0,\n};\n\nexport class BufferHelper {\n  /**\n   * Return true if `media`'s buffered include `position`\n   */\n  static isBuffered(media: Bufferable, position: number): boolean {\n    try {\n      if (media) {\n        const buffered = BufferHelper.getBuffered(media);\n        for (let i = 0; i < buffered.length; i++) {\n          if (position >= buffered.start(i) && position <= buffered.end(i)) {\n            return true;\n          }\n        }\n      }\n    } catch (error) {\n      // this is to catch\n      // InvalidStateError: Failed to read the 'buffered' property from 'SourceBuffer':\n      // This SourceBuffer has been removed from the parent media source\n    }\n    return false;\n  }\n\n  static bufferInfo(\n    media: Bufferable | null,\n    pos: number,\n    maxHoleDuration: number\n  ): BufferInfo {\n    try {\n      if (media) {\n        const vbuffered = BufferHelper.getBuffered(media);\n        const buffered: BufferTimeRange[] = [];\n        let i: number;\n        for (i = 0; i < vbuffered.length; i++) {\n          buffered.push({ start: vbuffered.start(i), end: vbuffered.end(i) });\n        }\n\n        return this.bufferedInfo(buffered, pos, maxHoleDuration);\n      }\n    } catch (error) {\n      // this is to catch\n      // InvalidStateError: Failed to read the 'buffered' property from 'SourceBuffer':\n      // This SourceBuffer has been removed from the parent media source\n    }\n    return { len: 0, start: pos, end: pos, nextStart: undefined };\n  }\n\n  static bufferedInfo(\n    buffered: BufferTimeRange[],\n    pos: number,\n    maxHoleDuration: number\n  ): {\n    len: number;\n    start: number;\n    end: number;\n    nextStart?: number;\n  } {\n    pos = Math.max(0, pos);\n    // sort on buffer.start/smaller end (IE does not always return sorted buffered range)\n    buffered.sort(function (a, b) {\n      const diff = a.start - b.start;\n      if (diff) {\n        return diff;\n      } else {\n        return b.end - a.end;\n      }\n    });\n\n    let buffered2: BufferTimeRange[] = [];\n    if (maxHoleDuration) {\n      // there might be some small holes between buffer time range\n      // consider that holes smaller than maxHoleDuration are irrelevant and build another\n      // buffer time range representations that discards those holes\n      for (let i = 0; i < buffered.length; i++) {\n        const buf2len = buffered2.length;\n        if (buf2len) {\n          const buf2end = buffered2[buf2len - 1].end;\n          // if small hole (value between 0 or maxHoleDuration ) or overlapping (negative)\n          if (buffered[i].start - buf2end < maxHoleDuration) {\n            // merge overlapping time ranges\n            // update lastRange.end only if smaller than item.end\n            // e.g.  [ 1, 15] with  [ 2,8] => [ 1,15] (no need to modify lastRange.end)\n            // whereas [ 1, 8] with  [ 2,15] => [ 1,15] ( lastRange should switch from [1,8] to [1,15])\n            if (buffered[i].end > buf2end) {\n              buffered2[buf2len - 1].end = buffered[i].end;\n            }\n          } else {\n            // big hole\n            buffered2.push(buffered[i]);\n          }\n        } else {\n          // first value\n          buffered2.push(buffered[i]);\n        }\n      }\n    } else {\n      buffered2 = buffered;\n    }\n\n    let bufferLen = 0;\n\n    // bufferStartNext can possibly be undefined based on the conditional logic below\n    let bufferStartNext: number | undefined;\n\n    // bufferStart and bufferEnd are buffer boundaries around current video position\n    let bufferStart: number = pos;\n    let bufferEnd: number = pos;\n    for (let i = 0; i < buffered2.length; i++) {\n      const start = buffered2[i].start;\n      const end = buffered2[i].end;\n      // logger.log('buf start/end:' + buffered.start(i) + '/' + buffered.end(i));\n      if (pos + maxHoleDuration >= start && pos < end) {\n        // play position is inside this buffer TimeRange, retrieve end of buffer position and buffer length\n        bufferStart = start;\n        bufferEnd = end;\n        bufferLen = bufferEnd - pos;\n      } else if (pos + maxHoleDuration < start) {\n        bufferStartNext = start;\n        break;\n      }\n    }\n    return {\n      len: bufferLen,\n      start: bufferStart || 0,\n      end: bufferEnd || 0,\n      nextStart: bufferStartNext,\n    };\n  }\n\n  /**\n   * Safe method to get buffered property.\n   * SourceBuffer.buffered may throw if SourceBuffer is removed from it's MediaSource\n   */\n  static getBuffered(media: Bufferable): TimeRanges {\n    try {\n      return media.buffered;\n    } catch (e) {\n      logger.log('failed to get media.buffered', e);\n      return noopBuffered;\n    }\n  }\n}\n","export default class AESCrypto {\n  private subtle: SubtleCrypto;\n  private aesIV: Uint8Array;\n\n  constructor(subtle: SubtleCrypto, iv: Uint8Array) {\n    this.subtle = subtle;\n    this.aesIV = iv;\n  }\n\n  decrypt(data: ArrayBuffer, key: CryptoKey) {\n    return this.subtle.decrypt({ name: 'AES-CBC', iv: this.aesIV }, key, data);\n  }\n}\n","export default class FastAESKey {\n  private subtle: any;\n  private key: ArrayBuffer;\n\n  constructor(subtle, key) {\n    this.subtle = subtle;\n    this.key = key;\n  }\n\n  expandKey() {\n    return this.subtle.importKey('raw', this.key, { name: 'AES-CBC' }, false, [\n      'encrypt',\n      'decrypt',\n    ]);\n  }\n}\n","import AESCrypto from './aes-crypto';\nimport FastAESKey from './fast-aes-key';\nimport AESDecryptor, { removePadding } from './aes-decryptor';\nimport { logger } from '../utils/logger';\nimport { appendUint8Array } from '../utils/mp4-tools';\nimport { sliceUint8 } from '../utils/typed-array';\nimport type { HlsConfig } from '../config';\n\nconst CHUNK_SIZE = 16; // 16 bytes, 128 bits\n\nexport default class Decrypter {\n  private logEnabled: boolean = true;\n  private removePKCS7Padding: boolean;\n  private subtle: SubtleCrypto | null = null;\n  private softwareDecrypter: AESDecryptor | null = null;\n  private key: ArrayBuffer | null = null;\n  private fastAesKey: FastAESKey | null = null;\n  private remainderData: Uint8Array | null = null;\n  private currentIV: ArrayBuffer | null = null;\n  private currentResult: ArrayBuffer | null = null;\n  private useSoftware: boolean;\n\n  constructor(config: HlsConfig, { removePKCS7Padding = true } = {}) {\n    this.useSoftware = config.enableSoftwareAES;\n    this.removePKCS7Padding = removePKCS7Padding;\n    // built in decryptor expects PKCS7 padding\n    if (removePKCS7Padding) {\n      try {\n        const browserCrypto = self.crypto;\n        if (browserCrypto) {\n          this.subtle =\n            browserCrypto.subtle ||\n            ((browserCrypto as any).webkitSubtle as SubtleCrypto);\n        }\n      } catch (e) {\n        /* no-op */\n      }\n    }\n    if (this.subtle === null) {\n      this.useSoftware = true;\n    }\n  }\n\n  destroy() {\n    this.subtle = null;\n    this.softwareDecrypter = null;\n    this.key = null;\n    this.fastAesKey = null;\n    this.remainderData = null;\n    this.currentIV = null;\n    this.currentResult = null;\n  }\n\n  public isSync() {\n    return this.useSoftware;\n  }\n\n  public flush(): Uint8Array | null {\n    const { currentResult, remainderData } = this;\n    if (!currentResult || remainderData) {\n      this.reset();\n      return null;\n    }\n    const data = new Uint8Array(currentResult);\n    this.reset();\n    if (this.removePKCS7Padding) {\n      return removePadding(data);\n    }\n    return data;\n  }\n\n  public reset() {\n    this.currentResult = null;\n    this.currentIV = null;\n    this.remainderData = null;\n    if (this.softwareDecrypter) {\n      this.softwareDecrypter = null;\n    }\n  }\n\n  public decrypt(\n    data: Uint8Array | ArrayBuffer,\n    key: ArrayBuffer,\n    iv: ArrayBuffer\n  ): Promise<ArrayBuffer> {\n    if (this.useSoftware) {\n      return new Promise((resolve, reject) => {\n        this.softwareDecrypt(new Uint8Array(data), key, iv);\n        const decryptResult = this.flush();\n        if (decryptResult) {\n          resolve(decryptResult.buffer);\n        } else {\n          reject(new Error('[softwareDecrypt] Failed to decrypt data'));\n        }\n      });\n    }\n    return this.webCryptoDecrypt(new Uint8Array(data), key, iv);\n  }\n\n  // Software decryption is progressive. Progressive decryption may not return a result on each call. Any cached\n  // data is handled in the flush() call\n  public softwareDecrypt(\n    data: Uint8Array,\n    key: ArrayBuffer,\n    iv: ArrayBuffer\n  ): ArrayBuffer | null {\n    const { currentIV, currentResult, remainderData } = this;\n    this.logOnce('JS AES decrypt');\n    // The output is staggered during progressive parsing - the current result is cached, and emitted on the next call\n    // This is done in order to strip PKCS7 padding, which is found at the end of each segment. We only know we've reached\n    // the end on flush(), but by that time we have already received all bytes for the segment.\n    // Progressive decryption does not work with WebCrypto\n\n    if (remainderData) {\n      data = appendUint8Array(remainderData, data);\n      this.remainderData = null;\n    }\n\n    // Byte length must be a multiple of 16 (AES-128 = 128 bit blocks = 16 bytes)\n    const currentChunk = this.getValidChunk(data);\n    if (!currentChunk.length) {\n      return null;\n    }\n\n    if (currentIV) {\n      iv = currentIV;\n    }\n\n    let softwareDecrypter = this.softwareDecrypter;\n    if (!softwareDecrypter) {\n      softwareDecrypter = this.softwareDecrypter = new AESDecryptor();\n    }\n    softwareDecrypter.expandKey(key);\n\n    const result = currentResult;\n\n    this.currentResult = softwareDecrypter.decrypt(currentChunk.buffer, 0, iv);\n    this.currentIV = sliceUint8(currentChunk, -16).buffer;\n\n    if (!result) {\n      return null;\n    }\n    return result;\n  }\n\n  public webCryptoDecrypt(\n    data: Uint8Array,\n    key: ArrayBuffer,\n    iv: ArrayBuffer\n  ): Promise<ArrayBuffer> {\n    const subtle = this.subtle;\n    if (this.key !== key || !this.fastAesKey) {\n      this.key = key;\n      this.fastAesKey = new FastAESKey(subtle, key);\n    }\n    return this.fastAesKey\n      .expandKey()\n      .then((aesKey) => {\n        // decrypt using web crypto\n        if (!subtle) {\n          return Promise.reject(new Error('web crypto not initialized'));\n        }\n        this.logOnce('WebCrypto AES decrypt');\n        const crypto = new AESCrypto(subtle, new Uint8Array(iv));\n        return crypto.decrypt(data.buffer, aesKey);\n      })\n      .catch((err) => {\n        logger.warn(\n          `[decrypter]: WebCrypto Error, disable WebCrypto API, ${err.name}: ${err.message}`\n        );\n\n        return this.onWebCryptoError(data, key, iv);\n      });\n  }\n\n  private onWebCryptoError(data, key, iv): ArrayBuffer | never {\n    this.useSoftware = true;\n    this.logEnabled = true;\n    this.softwareDecrypt(data, key, iv);\n    const decryptResult = this.flush();\n    if (decryptResult) {\n      return decryptResult.buffer;\n    }\n    throw new Error('WebCrypto and softwareDecrypt: failed to decrypt data');\n  }\n\n  private getValidChunk(data: Uint8Array): Uint8Array {\n    let currentChunk = data;\n    const splitPoint = data.length - (data.length % CHUNK_SIZE);\n    if (splitPoint !== data.length) {\n      currentChunk = sliceUint8(data, 0, splitPoint);\n      this.remainderData = sliceUint8(data, splitPoint);\n    }\n    return currentChunk;\n  }\n\n  private logOnce(msg: string) {\n    if (!this.logEnabled) {\n      return;\n    }\n    logger.log(`[decrypter]: ${msg}`);\n    this.logEnabled = false;\n  }\n}\n","/**\n *  TimeRanges to string helper\n */\n\nconst TimeRanges = {\n  toString: function (r: TimeRanges) {\n    let log = '';\n    const len = r.length;\n    for (let i = 0; i < len; i++) {\n      log += `[${r.start(i).toFixed(3)}-${r.end(i).toFixed(3)}]`;\n    }\n\n    return log;\n  },\n};\n\nexport default TimeRanges;\n","import TaskLoop from '../task-loop';\nimport { FragmentState } from './fragment-tracker';\nimport { Bufferable, BufferHelper, BufferInfo } from '../utils/buffer-helper';\nimport { logger } from '../utils/logger';\nimport { Events } from '../events';\nimport { ErrorDetails, ErrorTypes } from '../errors';\nimport { ChunkMetadata } from '../types/transmuxer';\nimport { appendUint8Array } from '../utils/mp4-tools';\nimport { alignStream } from '../utils/discontinuities';\nimport {\n  findFragmentByPDT,\n  findFragmentByPTS,\n  findFragWithCC,\n} from './fragment-finders';\nimport {\n  findPart,\n  getFragmentWithSN,\n  getPartWith,\n  updateFragPTSDTS,\n} from './level-helper';\nimport TransmuxerInterface from '../demux/transmuxer-interface';\nimport { Fragment, Part } from '../loader/fragment';\nimport FragmentLoader, {\n  FragmentLoadProgressCallback,\n  LoadError,\n} from '../loader/fragment-loader';\nimport KeyLoader from '../loader/key-loader';\nimport { LevelDetails } from '../loader/level-details';\nimport Decrypter from '../crypt/decrypter';\nimport TimeRanges from '../utils/time-ranges';\nimport { PlaylistLevelType } from '../types/loader';\nimport { getRetryDelay } from '../utils/error-helper';\nimport { NetworkErrorAction } from './error-controller';\nimport type {\n  BufferAppendingData,\n  ErrorData,\n  FragLoadedData,\n  PartsLoadedData,\n  KeyLoadedData,\n  MediaAttachedData,\n  BufferFlushingData,\n  ManifestLoadedData,\n} from '../types/events';\nimport type { FragmentTracker } from './fragment-tracker';\nimport type { Level } from '../types/level';\nimport type { RemuxedTrack } from '../types/remuxer';\nimport type Hls from '../hls';\nimport type { HlsConfig } from '../config';\nimport type { NetworkComponentAPI } from '../types/component-api';\nimport type { SourceBufferName } from '../types/buffer';\nimport type { RationalTimestamp } from '../utils/timescale-conversion';\n\ntype ResolveFragLoaded = (FragLoadedEndData) => void;\ntype RejectFragLoaded = (LoadError) => void;\n\nexport const State = {\n  STOPPED: 'STOPPED',\n  IDLE: 'IDLE',\n  KEY_LOADING: 'KEY_LOADING',\n  FRAG_LOADING: 'FRAG_LOADING',\n  FRAG_LOADING_WAITING_RETRY: 'FRAG_LOADING_WAITING_RETRY',\n  WAITING_TRACK: 'WAITING_TRACK',\n  PARSING: 'PARSING',\n  PARSED: 'PARSED',\n  ENDED: 'ENDED',\n  ERROR: 'ERROR',\n  WAITING_INIT_PTS: 'WAITING_INIT_PTS',\n  WAITING_LEVEL: 'WAITING_LEVEL',\n};\n\nexport default class BaseStreamController\n  extends TaskLoop\n  implements NetworkComponentAPI\n{\n  protected hls: Hls;\n\n  protected fragPrevious: Fragment | null = null;\n  protected fragCurrent: Fragment | null = null;\n  protected fragmentTracker: FragmentTracker;\n  protected transmuxer: TransmuxerInterface | null = null;\n  protected _state: string = State.STOPPED;\n  protected playlistType: PlaylistLevelType;\n  protected media: HTMLMediaElement | null = null;\n  protected mediaBuffer: Bufferable | null = null;\n  protected config: HlsConfig;\n  protected bitrateTest: boolean = false;\n  protected lastCurrentTime: number = 0;\n  protected nextLoadPosition: number = 0;\n  protected startPosition: number = 0;\n  protected startTimeOffset: number | null = null;\n  protected loadedmetadata: boolean = false;\n  protected retryDate: number = 0;\n  protected levels: Array<Level> | null = null;\n  protected fragmentLoader: FragmentLoader;\n  protected keyLoader: KeyLoader;\n  protected levelLastLoaded: number | null = null;\n  protected startFragRequested: boolean = false;\n  protected decrypter: Decrypter;\n  protected initPTS: RationalTimestamp[] = [];\n  protected onvseeking: EventListener | null = null;\n  protected onvended: EventListener | null = null;\n\n  private readonly logPrefix: string = '';\n  protected log: (msg: any) => void;\n  protected warn: (msg: any) => void;\n\n  constructor(\n    hls: Hls,\n    fragmentTracker: FragmentTracker,\n    keyLoader: KeyLoader,\n    logPrefix: string,\n    playlistType: PlaylistLevelType\n  ) {\n    super();\n    this.playlistType = playlistType;\n    this.logPrefix = logPrefix;\n    this.log = logger.log.bind(logger, `${logPrefix}:`);\n    this.warn = logger.warn.bind(logger, `${logPrefix}:`);\n    this.hls = hls;\n    this.fragmentLoader = new FragmentLoader(hls.config);\n    this.keyLoader = keyLoader;\n    this.fragmentTracker = fragmentTracker;\n    this.config = hls.config;\n    this.decrypter = new Decrypter(hls.config);\n    hls.on(Events.MANIFEST_LOADED, this.onManifestLoaded, this);\n  }\n\n  protected doTick() {\n    this.onTickEnd();\n  }\n\n  protected onTickEnd() {}\n\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  public startLoad(startPosition: number): void {}\n\n  public stopLoad() {\n    this.fragmentLoader.abort();\n    this.keyLoader.abort(this.playlistType);\n    const frag = this.fragCurrent;\n    if (frag?.loader) {\n      frag.abortRequests();\n      this.fragmentTracker.removeFragment(frag);\n    }\n    this.resetTransmuxer();\n    this.fragCurrent = null;\n    this.fragPrevious = null;\n    this.clearInterval();\n    this.clearNextTick();\n    this.state = State.STOPPED;\n  }\n\n  protected _streamEnded(\n    bufferInfo: BufferInfo,\n    levelDetails: LevelDetails\n  ): boolean {\n    // If playlist is live, there is another buffered range after the current range, nothing buffered, media is detached,\n    // of nothing loading/loaded return false\n    if (\n      levelDetails.live ||\n      bufferInfo.nextStart ||\n      !bufferInfo.end ||\n      !this.media\n    ) {\n      return false;\n    }\n    const partList = levelDetails.partList;\n    // Since the last part isn't guaranteed to correspond to the last playlist segment for Low-Latency HLS,\n    // check instead if the last part is buffered.\n    if (partList?.length) {\n      const lastPart = partList[partList.length - 1];\n\n      // Checking the midpoint of the part for potential margin of error and related issues.\n      // NOTE: Technically I believe parts could yield content that is < the computed duration (including potential a duration of 0)\n      // and still be spec-compliant, so there may still be edge cases here. Likewise, there could be issues in end of stream\n      // part mismatches for independent audio and video playlists/segments.\n      const lastPartBuffered = BufferHelper.isBuffered(\n        this.media,\n        lastPart.start + lastPart.duration / 2\n      );\n      return lastPartBuffered;\n    }\n\n    const playlistType =\n      levelDetails.fragments[levelDetails.fragments.length - 1].type;\n    return this.fragmentTracker.isEndListAppended(playlistType);\n  }\n\n  protected getLevelDetails(): LevelDetails | undefined {\n    if (this.levels && this.levelLastLoaded !== null) {\n      return this.levels[this.levelLastLoaded]?.details;\n    }\n  }\n\n  protected onMediaAttached(\n    event: Events.MEDIA_ATTACHED,\n    data: MediaAttachedData\n  ) {\n    const media = (this.media = this.mediaBuffer = data.media);\n    this.onvseeking = this.onMediaSeeking.bind(this) as EventListener;\n    this.onvended = this.onMediaEnded.bind(this) as EventListener;\n    media.addEventListener('seeking', this.onvseeking);\n    media.addEventListener('ended', this.onvended);\n    const config = this.config;\n    if (this.levels && config.autoStartLoad && this.state === State.STOPPED) {\n      this.startLoad(config.startPosition);\n    }\n  }\n\n  protected onMediaDetaching() {\n    const media = this.media;\n    if (media?.ended) {\n      this.log('MSE detaching and video ended, reset startPosition');\n      this.startPosition = this.lastCurrentTime = 0;\n    }\n\n    // remove video listeners\n    if (media && this.onvseeking && this.onvended) {\n      media.removeEventListener('seeking', this.onvseeking);\n      media.removeEventListener('ended', this.onvended);\n      this.onvseeking = this.onvended = null;\n    }\n    if (this.keyLoader) {\n      this.keyLoader.detach();\n    }\n    this.media = this.mediaBuffer = null;\n    this.loadedmetadata = false;\n    this.fragmentTracker.removeAllFragments();\n    this.stopLoad();\n  }\n\n  protected onMediaSeeking() {\n    const { config, fragCurrent, media, mediaBuffer, state } = this;\n    const currentTime: number = media ? media.currentTime : 0;\n    const bufferInfo = BufferHelper.bufferInfo(\n      mediaBuffer ? mediaBuffer : media,\n      currentTime,\n      config.maxBufferHole\n    );\n\n    this.log(\n      `media seeking to ${\n        Number.isFinite(currentTime) ? currentTime.toFixed(3) : currentTime\n      }, state: ${state}`\n    );\n\n    if (this.state === State.ENDED) {\n      this.resetLoadingState();\n    } else if (fragCurrent) {\n      // Seeking while frag load is in progress\n      const tolerance = config.maxFragLookUpTolerance;\n      const fragStartOffset = fragCurrent.start - tolerance;\n      const fragEndOffset =\n        fragCurrent.start + fragCurrent.duration + tolerance;\n      // if seeking out of buffered range or into new one\n      if (\n        !bufferInfo.len ||\n        fragEndOffset < bufferInfo.start ||\n        fragStartOffset > bufferInfo.end\n      ) {\n        const pastFragment = currentTime > fragEndOffset;\n        // if the seek position is outside the current fragment range\n        if (currentTime < fragStartOffset || pastFragment) {\n          if (pastFragment && fragCurrent.loader) {\n            this.log(\n              'seeking outside of buffer while fragment load in progress, cancel fragment load'\n            );\n            fragCurrent.abortRequests();\n            this.resetLoadingState();\n          }\n          this.fragPrevious = null;\n        }\n      }\n    }\n\n    if (media) {\n      // Remove gap fragments\n      this.fragmentTracker.removeFragmentsInRange(\n        currentTime,\n        Infinity,\n        this.playlistType,\n        true\n      );\n\n      this.lastCurrentTime = currentTime;\n    }\n\n    // in case seeking occurs although no media buffered, adjust startPosition and nextLoadPosition to seek target\n    if (!this.loadedmetadata && !bufferInfo.len) {\n      this.nextLoadPosition = this.startPosition = currentTime;\n    }\n\n    // Async tick to speed up processing\n    this.tickImmediate();\n  }\n\n  protected onMediaEnded() {\n    // reset startPosition and lastCurrentTime to restart playback @ stream beginning\n    this.startPosition = this.lastCurrentTime = 0;\n  }\n\n  protected onManifestLoaded(\n    event: Events.MANIFEST_LOADED,\n    data: ManifestLoadedData\n  ): void {\n    this.startTimeOffset = data.startTimeOffset;\n    this.initPTS = [];\n  }\n\n  protected onHandlerDestroying() {\n    this.stopLoad();\n    super.onHandlerDestroying();\n  }\n\n  protected onHandlerDestroyed() {\n    this.state = State.STOPPED;\n    if (this.fragmentLoader) {\n      this.fragmentLoader.destroy();\n    }\n    if (this.keyLoader) {\n      this.keyLoader.destroy();\n    }\n    if (this.decrypter) {\n      this.decrypter.destroy();\n    }\n\n    this.hls =\n      this.log =\n      this.warn =\n      this.decrypter =\n      this.keyLoader =\n      this.fragmentLoader =\n      this.fragmentTracker =\n        null as any;\n    super.onHandlerDestroyed();\n  }\n\n  protected loadFragment(\n    frag: Fragment,\n    level: Level,\n    targetBufferTime: number\n  ) {\n    this._loadFragForPlayback(frag, level, targetBufferTime);\n  }\n\n  private _loadFragForPlayback(\n    frag: Fragment,\n    level: Level,\n    targetBufferTime: number\n  ) {\n    const progressCallback: FragmentLoadProgressCallback = (\n      data: FragLoadedData\n    ) => {\n      if (this.fragContextChanged(frag)) {\n        this.warn(\n          `Fragment ${frag.sn}${\n            data.part ? ' p: ' + data.part.index : ''\n          } of level ${frag.level} was dropped during download.`\n        );\n        this.fragmentTracker.removeFragment(frag);\n        return;\n      }\n      frag.stats.chunkCount++;\n      this._handleFragmentLoadProgress(data);\n    };\n\n    this._doFragLoad(frag, level, targetBufferTime, progressCallback)\n      .then((data) => {\n        if (!data) {\n          // if we're here we probably needed to backtrack or are waiting for more parts\n          return;\n        }\n        const state = this.state;\n        if (this.fragContextChanged(frag)) {\n          if (\n            state === State.FRAG_LOADING ||\n            (!this.fragCurrent && state === State.PARSING)\n          ) {\n            this.fragmentTracker.removeFragment(frag);\n            this.state = State.IDLE;\n          }\n          return;\n        }\n\n        if ('payload' in data) {\n          this.log(`Loaded fragment ${frag.sn} of level ${frag.level}`);\n          this.hls.trigger(Events.FRAG_LOADED, data);\n        }\n\n        // Pass through the whole payload; controllers not implementing progressive loading receive data from this callback\n        this._handleFragmentLoadComplete(data);\n      })\n      .catch((reason) => {\n        if (this.state === State.STOPPED || this.state === State.ERROR) {\n          return;\n        }\n        this.warn(reason);\n        this.resetFragmentLoading(frag);\n      });\n  }\n\n  protected clearTrackerIfNeeded(frag: Fragment) {\n    const { fragmentTracker } = this;\n    const fragState = fragmentTracker.getState(frag);\n    if (fragState === FragmentState.APPENDING) {\n      // Lower the buffer size and try again\n      const playlistType = frag.type as PlaylistLevelType;\n      const bufferedInfo = this.getFwdBufferInfo(\n        this.mediaBuffer,\n        playlistType\n      );\n      const minForwardBufferLength = Math.max(\n        frag.duration,\n        bufferedInfo ? bufferedInfo.len : this.config.maxBufferLength\n      );\n      if (this.reduceMaxBufferLength(minForwardBufferLength)) {\n        fragmentTracker.removeFragment(frag);\n      }\n    } else if (this.mediaBuffer?.buffered.length === 0) {\n      // Stop gap for bad tracker / buffer flush behavior\n      fragmentTracker.removeAllFragments();\n    } else if (fragmentTracker.hasParts(frag.type)) {\n      // In low latency mode, remove fragments for which only some parts were buffered\n      fragmentTracker.detectPartialFragments({\n        frag,\n        part: null,\n        stats: frag.stats,\n        id: frag.type,\n      });\n      if (fragmentTracker.getState(frag) === FragmentState.PARTIAL) {\n        fragmentTracker.removeFragment(frag);\n      }\n    }\n  }\n\n  protected checkLiveUpdate(details: LevelDetails) {\n    if (details.updated && !details.live) {\n      // Live stream ended, update fragment tracker\n      const lastFragment = details.fragments[details.fragments.length - 1];\n      this.fragmentTracker.detectPartialFragments({\n        frag: lastFragment,\n        part: null,\n        stats: lastFragment.stats,\n        id: lastFragment.type,\n      });\n    }\n    if (!details.fragments[0]) {\n      details.deltaUpdateFailed = true;\n    }\n  }\n\n  protected flushMainBuffer(\n    startOffset: number,\n    endOffset: number,\n    type: SourceBufferName | null = null\n  ) {\n    if (!(startOffset - endOffset)) {\n      return;\n    }\n    // When alternate audio is playing, the audio-stream-controller is responsible for the audio buffer. Otherwise,\n    // passing a null type flushes both buffers\n    const flushScope: BufferFlushingData = { startOffset, endOffset, type };\n    this.hls.trigger(Events.BUFFER_FLUSHING, flushScope);\n  }\n\n  protected _loadInitSegment(frag: Fragment, level: Level) {\n    this._doFragLoad(frag, level)\n      .then((data) => {\n        if (!data || this.fragContextChanged(frag) || !this.levels) {\n          throw new Error('init load aborted');\n        }\n\n        return data;\n      })\n      .then((data: FragLoadedData) => {\n        const { hls } = this;\n        const { payload } = data;\n        const decryptData = frag.decryptdata;\n\n        // check to see if the payload needs to be decrypted\n        if (\n          payload &&\n          payload.byteLength > 0 &&\n          decryptData &&\n          decryptData.key &&\n          decryptData.iv &&\n          decryptData.method === 'AES-128'\n        ) {\n          const startTime = self.performance.now();\n          // decrypt init segment data\n          return this.decrypter\n            .decrypt(\n              new Uint8Array(payload),\n              decryptData.key.buffer,\n              decryptData.iv.buffer\n            )\n            .catch((err) => {\n              hls.trigger(Events.ERROR, {\n                type: ErrorTypes.MEDIA_ERROR,\n                details: ErrorDetails.FRAG_DECRYPT_ERROR,\n                fatal: false,\n                error: err,\n                reason: err.message,\n                frag,\n              });\n              throw err;\n            })\n            .then((decryptedData) => {\n              const endTime = self.performance.now();\n              hls.trigger(Events.FRAG_DECRYPTED, {\n                frag,\n                payload: decryptedData,\n                stats: {\n                  tstart: startTime,\n                  tdecrypt: endTime,\n                },\n              });\n              data.payload = decryptedData;\n\n              return data;\n            });\n        }\n\n        return data;\n      })\n      .then((data: FragLoadedData) => {\n        const { fragCurrent, hls, levels } = this;\n        if (!levels) {\n          throw new Error('init load aborted, missing levels');\n        }\n\n        const stats = frag.stats;\n        this.state = State.IDLE;\n        level.fragmentError = 0;\n        frag.data = new Uint8Array(data.payload);\n        stats.parsing.start = stats.buffering.start = self.performance.now();\n        stats.parsing.end = stats.buffering.end = self.performance.now();\n\n        // Silence FRAG_BUFFERED event if fragCurrent is null\n        if (data.frag === fragCurrent) {\n          hls.trigger(Events.FRAG_BUFFERED, {\n            stats,\n            frag: fragCurrent,\n            part: null,\n            id: frag.type,\n          });\n        }\n        this.tick();\n      })\n      .catch((reason) => {\n        if (this.state === State.STOPPED || this.state === State.ERROR) {\n          return;\n        }\n        this.warn(reason);\n        this.resetFragmentLoading(frag);\n      });\n  }\n\n  protected fragContextChanged(frag: Fragment | null) {\n    const { fragCurrent } = this;\n    return (\n      !frag ||\n      !fragCurrent ||\n      frag.level !== fragCurrent.level ||\n      frag.sn !== fragCurrent.sn ||\n      frag.urlId !== fragCurrent.urlId\n    );\n  }\n\n  protected fragBufferedComplete(frag: Fragment, part: Part | null) {\n    const media = this.mediaBuffer ? this.mediaBuffer : this.media;\n    this.log(\n      `Buffered ${frag.type} sn: ${frag.sn}${\n        part ? ' part: ' + part.index : ''\n      } of ${\n        this.playlistType === PlaylistLevelType.MAIN ? 'level' : 'track'\n      } ${frag.level} (frag:[${(frag.startPTS ?? NaN).toFixed(3)}-${(\n        frag.endPTS ?? NaN\n      ).toFixed(3)}] > buffer:${\n        media\n          ? TimeRanges.toString(BufferHelper.getBuffered(media))\n          : '(detached)'\n      })`\n    );\n    this.state = State.IDLE;\n    if (!media) {\n      return;\n    }\n    if (\n      !this.loadedmetadata &&\n      frag.type == PlaylistLevelType.MAIN &&\n      media.buffered.length &&\n      this.fragCurrent?.sn === this.fragPrevious?.sn\n    ) {\n      this.loadedmetadata = true;\n      this.seekToStartPos();\n    }\n    this.tick();\n  }\n\n  protected seekToStartPos() {}\n\n  protected _handleFragmentLoadComplete(fragLoadedEndData: PartsLoadedData) {\n    const { transmuxer } = this;\n    if (!transmuxer) {\n      return;\n    }\n    const { frag, part, partsLoaded } = fragLoadedEndData;\n    // If we did not load parts, or loaded all parts, we have complete (not partial) fragment data\n    const complete =\n      !partsLoaded ||\n      partsLoaded.length === 0 ||\n      partsLoaded.some((fragLoaded) => !fragLoaded);\n    const chunkMeta = new ChunkMetadata(\n      frag.level,\n      frag.sn as number,\n      frag.stats.chunkCount + 1,\n      0,\n      part ? part.index : -1,\n      !complete\n    );\n    transmuxer.flush(chunkMeta);\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  protected _handleFragmentLoadProgress(\n    frag: PartsLoadedData | FragLoadedData\n  ) {}\n\n  protected _doFragLoad(\n    frag: Fragment,\n    level: Level,\n    targetBufferTime: number | null = null,\n    progressCallback?: FragmentLoadProgressCallback\n  ): Promise<PartsLoadedData | FragLoadedData | null> {\n    const details = level?.details;\n    if (!this.levels || !details) {\n      throw new Error(\n        `frag load aborted, missing level${details ? '' : ' detail'}s`\n      );\n    }\n\n    let keyLoadingPromise: Promise<KeyLoadedData | void> | null = null;\n    if (frag.encrypted && !frag.decryptdata?.key) {\n      this.log(\n        `Loading key for ${frag.sn} of [${details.startSN}-${details.endSN}], ${\n          this.logPrefix === '[stream-controller]' ? 'level' : 'track'\n        } ${frag.level}`\n      );\n      this.state = State.KEY_LOADING;\n      this.fragCurrent = frag;\n      keyLoadingPromise = this.keyLoader.load(frag).then((keyLoadedData) => {\n        if (!this.fragContextChanged(keyLoadedData.frag)) {\n          this.hls.trigger(Events.KEY_LOADED, keyLoadedData);\n          if (this.state === State.KEY_LOADING) {\n            this.state = State.IDLE;\n          }\n          return keyLoadedData;\n        }\n      });\n      this.hls.trigger(Events.KEY_LOADING, { frag });\n      if (this.fragCurrent === null) {\n        keyLoadingPromise = Promise.reject(\n          new Error(`frag load aborted, context changed in KEY_LOADING`)\n        );\n      }\n    } else if (!frag.encrypted && details.encryptedFragments.length) {\n      this.keyLoader.loadClear(frag, details.encryptedFragments);\n    }\n\n    targetBufferTime = Math.max(frag.start, targetBufferTime || 0);\n    if (this.config.lowLatencyMode && frag.sn !== 'initSegment') {\n      const partList = details.partList;\n      if (partList && progressCallback) {\n        if (targetBufferTime > frag.end && details.fragmentHint) {\n          frag = details.fragmentHint;\n        }\n        const partIndex = this.getNextPart(partList, frag, targetBufferTime);\n        if (partIndex > -1) {\n          const part = partList[partIndex];\n          this.log(\n            `Loading part sn: ${frag.sn} p: ${part.index} cc: ${\n              frag.cc\n            } of playlist [${details.startSN}-${\n              details.endSN\n            }] parts [0-${partIndex}-${partList.length - 1}] ${\n              this.logPrefix === '[stream-controller]' ? 'level' : 'track'\n            }: ${frag.level}, target: ${parseFloat(\n              targetBufferTime.toFixed(3)\n            )}`\n          );\n          this.nextLoadPosition = part.start + part.duration;\n          this.state = State.FRAG_LOADING;\n          let result: Promise<PartsLoadedData | FragLoadedData | null>;\n          if (keyLoadingPromise) {\n            result = keyLoadingPromise\n              .then((keyLoadedData) => {\n                if (\n                  !keyLoadedData ||\n                  this.fragContextChanged(keyLoadedData.frag)\n                ) {\n                  return null;\n                }\n                return this.doFragPartsLoad(\n                  frag,\n                  part,\n                  level,\n                  progressCallback\n                );\n              })\n              .catch((error) => this.handleFragLoadError(error));\n          } else {\n            result = this.doFragPartsLoad(\n              frag,\n              part,\n              level,\n              progressCallback\n            ).catch((error: LoadError) => this.handleFragLoadError(error));\n          }\n          this.hls.trigger(Events.FRAG_LOADING, {\n            frag,\n            part,\n            targetBufferTime,\n          });\n          if (this.fragCurrent === null) {\n            return Promise.reject(\n              new Error(\n                `frag load aborted, context changed in FRAG_LOADING parts`\n              )\n            );\n          }\n          return result;\n        } else if (\n          !frag.url ||\n          this.loadedEndOfParts(partList, targetBufferTime)\n        ) {\n          // Fragment hint has no parts\n          return Promise.resolve(null);\n        }\n      }\n    }\n\n    this.log(\n      `Loading fragment ${frag.sn} cc: ${frag.cc} ${\n        details ? 'of [' + details.startSN + '-' + details.endSN + '] ' : ''\n      }${this.logPrefix === '[stream-controller]' ? 'level' : 'track'}: ${\n        frag.level\n      }, target: ${parseFloat(targetBufferTime.toFixed(3))}`\n    );\n    // Don't update nextLoadPosition for fragments which are not buffered\n    if (Number.isFinite(frag.sn as number) && !this.bitrateTest) {\n      this.nextLoadPosition = frag.start + frag.duration;\n    }\n    this.state = State.FRAG_LOADING;\n\n    // Load key before streaming fragment data\n    const dataOnProgress = this.config.progressive;\n    let result: Promise<PartsLoadedData | FragLoadedData | null>;\n    if (dataOnProgress && keyLoadingPromise) {\n      result = keyLoadingPromise\n        .then((keyLoadedData) => {\n          if (!keyLoadedData || this.fragContextChanged(keyLoadedData?.frag)) {\n            return null;\n          }\n          return this.fragmentLoader.load(frag, progressCallback);\n        })\n        .catch((error) => this.handleFragLoadError(error));\n    } else {\n      // load unencrypted fragment data with progress event,\n      // or handle fragment result after key and fragment are finished loading\n      result = Promise.all([\n        this.fragmentLoader.load(\n          frag,\n          dataOnProgress ? progressCallback : undefined\n        ),\n        keyLoadingPromise,\n      ])\n        .then(([fragLoadedData]) => {\n          if (!dataOnProgress && fragLoadedData && progressCallback) {\n            progressCallback(fragLoadedData);\n          }\n          return fragLoadedData;\n        })\n        .catch((error) => this.handleFragLoadError(error));\n    }\n    this.hls.trigger(Events.FRAG_LOADING, { frag, targetBufferTime });\n    if (this.fragCurrent === null) {\n      return Promise.reject(\n        new Error(`frag load aborted, context changed in FRAG_LOADING`)\n      );\n    }\n    return result;\n  }\n\n  private doFragPartsLoad(\n    frag: Fragment,\n    fromPart: Part,\n    level: Level,\n    progressCallback: FragmentLoadProgressCallback\n  ): Promise<PartsLoadedData | null> {\n    return new Promise(\n      (resolve: ResolveFragLoaded, reject: RejectFragLoaded) => {\n        const partsLoaded: FragLoadedData[] = [];\n        const initialPartList = level.details?.partList;\n        const loadPart = (part: Part) => {\n          this.fragmentLoader\n            .loadPart(frag, part, progressCallback)\n            .then((partLoadedData: FragLoadedData) => {\n              partsLoaded[part.index] = partLoadedData;\n              const loadedPart = partLoadedData.part as Part;\n              this.hls.trigger(Events.FRAG_LOADED, partLoadedData);\n              const nextPart =\n                getPartWith(level, frag.sn as number, part.index + 1) ||\n                findPart(initialPartList, frag.sn as number, part.index + 1);\n              if (nextPart) {\n                loadPart(nextPart);\n              } else {\n                return resolve({\n                  frag,\n                  part: loadedPart,\n                  partsLoaded,\n                });\n              }\n            })\n            .catch(reject);\n        };\n        loadPart(fromPart);\n      }\n    );\n  }\n\n  private handleFragLoadError(error: LoadError | Error) {\n    if ('data' in error) {\n      const data = error.data;\n      if (error.data && data.details === ErrorDetails.INTERNAL_ABORTED) {\n        this.handleFragLoadAborted(data.frag, data.part);\n      } else {\n        this.hls.trigger(Events.ERROR, data as ErrorData);\n      }\n    } else {\n      this.hls.trigger(Events.ERROR, {\n        type: ErrorTypes.OTHER_ERROR,\n        details: ErrorDetails.INTERNAL_EXCEPTION,\n        err: error,\n        error,\n        fatal: true,\n      });\n    }\n    return null;\n  }\n\n  protected _handleTransmuxerFlush(chunkMeta: ChunkMetadata) {\n    const context = this.getCurrentContext(chunkMeta);\n    if (!context || this.state !== State.PARSING) {\n      if (\n        !this.fragCurrent &&\n        this.state !== State.STOPPED &&\n        this.state !== State.ERROR\n      ) {\n        this.state = State.IDLE;\n      }\n      return;\n    }\n    const { frag, part, level } = context;\n    const now = self.performance.now();\n    frag.stats.parsing.end = now;\n    if (part) {\n      part.stats.parsing.end = now;\n    }\n    this.updateLevelTiming(frag, part, level, chunkMeta.partial);\n  }\n\n  protected getCurrentContext(\n    chunkMeta: ChunkMetadata\n  ): { frag: Fragment; part: Part | null; level: Level } | null {\n    const { levels, fragCurrent } = this;\n    const { level: levelIndex, sn, part: partIndex } = chunkMeta;\n    if (!levels?.[levelIndex]) {\n      this.warn(\n        `Levels object was unset while buffering fragment ${sn} of level ${levelIndex}. The current chunk will not be buffered.`\n      );\n      return null;\n    }\n    const level = levels[levelIndex];\n    const part = partIndex > -1 ? getPartWith(level, sn, partIndex) : null;\n    const frag = part\n      ? part.fragment\n      : getFragmentWithSN(level, sn, fragCurrent);\n    if (!frag) {\n      return null;\n    }\n    if (fragCurrent && fragCurrent !== frag) {\n      frag.stats = fragCurrent.stats;\n    }\n    return { frag, part, level };\n  }\n\n  protected bufferFragmentData(\n    data: RemuxedTrack,\n    frag: Fragment,\n    part: Part | null,\n    chunkMeta: ChunkMetadata,\n    noBacktracking?: boolean\n  ) {\n    if (!data || this.state !== State.PARSING) {\n      return;\n    }\n\n    const { data1, data2 } = data;\n    let buffer = data1;\n    if (data1 && data2) {\n      // Combine the moof + mdat so that we buffer with a single append\n      buffer = appendUint8Array(data1, data2);\n    }\n\n    if (!buffer?.length) {\n      return;\n    }\n\n    const segment: BufferAppendingData = {\n      type: data.type,\n      frag,\n      part,\n      chunkMeta,\n      parent: frag.type,\n      data: buffer,\n    };\n    this.hls.trigger(Events.BUFFER_APPENDING, segment);\n\n    if (data.dropped && data.independent && !part) {\n      if (noBacktracking) {\n        return;\n      }\n      // Clear buffer so that we reload previous segments sequentially if required\n      this.flushBufferGap(frag);\n    }\n  }\n\n  protected flushBufferGap(frag: Fragment) {\n    const media = this.media;\n    if (!media) {\n      return;\n    }\n    // If currentTime is not buffered, clear the back buffer so that we can backtrack as much as needed\n    if (!BufferHelper.isBuffered(media, media.currentTime)) {\n      this.flushMainBuffer(0, frag.start);\n      return;\n    }\n    // Remove back-buffer without interrupting playback to allow back tracking\n    const currentTime = media.currentTime;\n    const bufferInfo = BufferHelper.bufferInfo(media, currentTime, 0);\n    const fragDuration = frag.duration;\n    const segmentFraction = Math.min(\n      this.config.maxFragLookUpTolerance * 2,\n      fragDuration * 0.25\n    );\n    const start = Math.max(\n      Math.min(frag.start - segmentFraction, bufferInfo.end - segmentFraction),\n      currentTime + segmentFraction\n    );\n    if (frag.start - start > segmentFraction) {\n      this.flushMainBuffer(start, frag.start);\n    }\n  }\n\n  protected getFwdBufferInfo(\n    bufferable: Bufferable | null,\n    type: PlaylistLevelType\n  ): BufferInfo | null {\n    const pos = this.getLoadPosition();\n    if (!Number.isFinite(pos)) {\n      return null;\n    }\n    return this.getFwdBufferInfoAtPos(bufferable, pos, type);\n  }\n\n  protected getFwdBufferInfoAtPos(\n    bufferable: Bufferable | null,\n    pos: number,\n    type: PlaylistLevelType\n  ): BufferInfo | null {\n    const {\n      config: { maxBufferHole },\n    } = this;\n    const bufferInfo = BufferHelper.bufferInfo(bufferable, pos, maxBufferHole);\n    // Workaround flaw in getting forward buffer when maxBufferHole is smaller than gap at current pos\n    if (bufferInfo.len === 0 && bufferInfo.nextStart !== undefined) {\n      const bufferedFragAtPos = this.fragmentTracker.getBufferedFrag(pos, type);\n      if (bufferedFragAtPos && bufferInfo.nextStart < bufferedFragAtPos.end) {\n        return BufferHelper.bufferInfo(\n          bufferable,\n          pos,\n          Math.max(bufferInfo.nextStart, maxBufferHole)\n        );\n      }\n    }\n    return bufferInfo;\n  }\n\n  protected getMaxBufferLength(levelBitrate?: number): number {\n    const { config } = this;\n    let maxBufLen;\n    if (levelBitrate) {\n      maxBufLen = Math.max(\n        (8 * config.maxBufferSize) / levelBitrate,\n        config.maxBufferLength\n      );\n    } else {\n      maxBufLen = config.maxBufferLength;\n    }\n    return Math.min(maxBufLen, config.maxMaxBufferLength);\n  }\n\n  protected reduceMaxBufferLength(threshold: number) {\n    const config = this.config;\n    const minLength = threshold || config.maxBufferLength;\n    if (config.maxMaxBufferLength >= minLength) {\n      // reduce max buffer length as it might be too high. we do this to avoid loop flushing ...\n      config.maxMaxBufferLength /= 2;\n      this.warn(`Reduce max buffer length to ${config.maxMaxBufferLength}s`);\n      return true;\n    }\n    return false;\n  }\n\n  protected getAppendedFrag(\n    position: number,\n    playlistType: PlaylistLevelType = PlaylistLevelType.MAIN\n  ): Fragment | null {\n    const fragOrPart = this.fragmentTracker.getAppendedFrag(\n      position,\n      PlaylistLevelType.MAIN\n    );\n    if (fragOrPart && 'fragment' in fragOrPart) {\n      return fragOrPart.fragment;\n    }\n    return fragOrPart;\n  }\n\n  protected getNextFragment(\n    pos: number,\n    levelDetails: LevelDetails\n  ): Fragment | null {\n    const fragments = levelDetails.fragments;\n    const fragLen = fragments.length;\n\n    if (!fragLen) {\n      return null;\n    }\n\n    // find fragment index, contiguous with end of buffer position\n    const { config } = this;\n    const start = fragments[0].start;\n    let frag;\n\n    if (levelDetails.live) {\n      const initialLiveManifestSize = config.initialLiveManifestSize;\n      if (fragLen < initialLiveManifestSize) {\n        this.warn(\n          `Not enough fragments to start playback (have: ${fragLen}, need: ${initialLiveManifestSize})`\n        );\n        return null;\n      }\n      // The real fragment start times for a live stream are only known after the PTS range for that level is known.\n      // In order to discover the range, we load the best matching fragment for that level and demux it.\n      // Do not load using live logic if the starting frag is requested - we want to use getFragmentAtPosition() so that\n      // we get the fragment matching that start time\n      if (\n        !levelDetails.PTSKnown &&\n        !this.startFragRequested &&\n        this.startPosition === -1\n      ) {\n        frag = this.getInitialLiveFragment(levelDetails, fragments);\n        this.startPosition = frag\n          ? this.hls.liveSyncPosition || frag.start\n          : pos;\n      }\n    } else if (pos <= start) {\n      // VoD playlist: if loadPosition before start of playlist, load first fragment\n      frag = fragments[0];\n    }\n\n    // If we haven't run into any special cases already, just load the fragment most closely matching the requested position\n    if (!frag) {\n      const end = config.lowLatencyMode\n        ? levelDetails.partEnd\n        : levelDetails.fragmentEnd;\n      frag = this.getFragmentAtPosition(pos, end, levelDetails);\n    }\n\n    return this.mapToInitFragWhenRequired(frag);\n  }\n\n  protected isLoopLoading(frag: Fragment, targetBufferTime: number): boolean {\n    const trackerState = this.fragmentTracker.getState(frag);\n    return (\n      (trackerState === FragmentState.OK ||\n        (trackerState === FragmentState.PARTIAL && !!frag.gap)) &&\n      this.nextLoadPosition > targetBufferTime\n    );\n  }\n\n  protected getNextFragmentLoopLoading(\n    frag: Fragment,\n    levelDetails: LevelDetails,\n    bufferInfo: BufferInfo,\n    playlistType: PlaylistLevelType,\n    maxBufLen: number\n  ): Fragment | null {\n    const gapStart = frag.gap;\n    const nextFragment = this.getNextFragment(\n      this.nextLoadPosition,\n      levelDetails\n    );\n    if (nextFragment === null) {\n      return nextFragment;\n    }\n    frag = nextFragment;\n    if (gapStart && frag && !frag.gap && bufferInfo.nextStart) {\n      // Media buffered after GAP tags should not make the next buffer timerange exceed forward buffer length\n      const nextbufferInfo = this.getFwdBufferInfoAtPos(\n        this.mediaBuffer ? this.mediaBuffer : this.media,\n        bufferInfo.nextStart,\n        playlistType\n      );\n      if (\n        nextbufferInfo !== null &&\n        bufferInfo.len + nextbufferInfo.len >= maxBufLen\n      ) {\n        // Returning here might result in not finding an audio and video candiate to skip to\n        this.log(\n          `buffer full after gaps in \"${playlistType}\" playlist starting at sn: ${frag.sn}`\n        );\n        return null;\n      }\n    }\n    return frag;\n  }\n\n  mapToInitFragWhenRequired(frag: Fragment | null): typeof frag {\n    // If an initSegment is present, it must be buffered first\n    if (frag?.initSegment && !frag?.initSegment.data && !this.bitrateTest) {\n      return frag.initSegment;\n    }\n\n    return frag;\n  }\n\n  getNextPart(\n    partList: Part[],\n    frag: Fragment,\n    targetBufferTime: number\n  ): number {\n    let nextPart = -1;\n    let contiguous = false;\n    let independentAttrOmitted = true;\n    for (let i = 0, len = partList.length; i < len; i++) {\n      const part = partList[i];\n      independentAttrOmitted = independentAttrOmitted && !part.independent;\n      if (nextPart > -1 && targetBufferTime < part.start) {\n        break;\n      }\n      const loaded = part.loaded;\n      if (loaded) {\n        nextPart = -1;\n      } else if (\n        (contiguous || part.independent || independentAttrOmitted) &&\n        part.fragment === frag\n      ) {\n        nextPart = i;\n      }\n      contiguous = loaded;\n    }\n    return nextPart;\n  }\n\n  private loadedEndOfParts(\n    partList: Part[],\n    targetBufferTime: number\n  ): boolean {\n    const lastPart = partList[partList.length - 1];\n    return lastPart && targetBufferTime > lastPart.start && lastPart.loaded;\n  }\n\n  /*\n   This method is used find the best matching first fragment for a live playlist. This fragment is used to calculate the\n   \"sliding\" of the playlist, which is its offset from the start of playback. After sliding we can compute the real\n   start and end times for each fragment in the playlist (after which this method will not need to be called).\n  */\n  protected getInitialLiveFragment(\n    levelDetails: LevelDetails,\n    fragments: Array<Fragment>\n  ): Fragment | null {\n    const fragPrevious = this.fragPrevious;\n    let frag: Fragment | null = null;\n    if (fragPrevious) {\n      if (levelDetails.hasProgramDateTime) {\n        // Prefer using PDT, because it can be accurate enough to choose the correct fragment without knowing the level sliding\n        this.log(\n          `Live playlist, switching playlist, load frag with same PDT: ${fragPrevious.programDateTime}`\n        );\n        frag = findFragmentByPDT(\n          fragments,\n          fragPrevious.endProgramDateTime,\n          this.config.maxFragLookUpTolerance\n        );\n      }\n      if (!frag) {\n        // SN does not need to be accurate between renditions, but depending on the packaging it may be so.\n        const targetSN = (fragPrevious.sn as number) + 1;\n        if (\n          targetSN >= levelDetails.startSN &&\n          targetSN <= levelDetails.endSN\n        ) {\n          const fragNext = fragments[targetSN - levelDetails.startSN];\n          // Ensure that we're staying within the continuity range, since PTS resets upon a new range\n          if (fragPrevious.cc === fragNext.cc) {\n            frag = fragNext;\n            this.log(\n              `Live playlist, switching playlist, load frag with next SN: ${\n                frag!.sn\n              }`\n            );\n          }\n        }\n        // It's important to stay within the continuity range if available; otherwise the fragments in the playlist\n        // will have the wrong start times\n        if (!frag) {\n          frag = findFragWithCC(fragments, fragPrevious.cc);\n          if (frag) {\n            this.log(\n              `Live playlist, switching playlist, load frag with same CC: ${frag.sn}`\n            );\n          }\n        }\n      }\n    } else {\n      // Find a new start fragment when fragPrevious is null\n      const liveStart = this.hls.liveSyncPosition;\n      if (liveStart !== null) {\n        frag = this.getFragmentAtPosition(\n          liveStart,\n          this.bitrateTest ? levelDetails.fragmentEnd : levelDetails.edge,\n          levelDetails\n        );\n      }\n    }\n\n    return frag;\n  }\n\n  /*\n  This method finds the best matching fragment given the provided position.\n   */\n  protected getFragmentAtPosition(\n    bufferEnd: number,\n    end: number,\n    levelDetails: LevelDetails\n  ): Fragment | null {\n    const { config } = this;\n    let { fragPrevious } = this;\n    let { fragments, endSN } = levelDetails;\n    const { fragmentHint } = levelDetails;\n    const tolerance = config.maxFragLookUpTolerance;\n    const partList = levelDetails.partList;\n\n    const loadingParts = !!(\n      config.lowLatencyMode &&\n      partList?.length &&\n      fragmentHint\n    );\n    if (loadingParts && fragmentHint && !this.bitrateTest) {\n      // Include incomplete fragment with parts at end\n      fragments = fragments.concat(fragmentHint);\n      endSN = fragmentHint.sn as number;\n    }\n\n    let frag;\n    if (bufferEnd < end) {\n      const lookupTolerance = bufferEnd > end - tolerance ? 0 : tolerance;\n      // Remove the tolerance if it would put the bufferEnd past the actual end of stream\n      // Uses buffer and sequence number to calculate switch segment (required if using EXT-X-DISCONTINUITY-SEQUENCE)\n      frag = findFragmentByPTS(\n        fragPrevious,\n        fragments,\n        bufferEnd,\n        lookupTolerance\n      );\n    } else {\n      // reach end of playlist\n      frag = fragments[fragments.length - 1];\n    }\n\n    if (frag) {\n      const curSNIdx = frag.sn - levelDetails.startSN;\n      // Move fragPrevious forward to support forcing the next fragment to load\n      // when the buffer catches up to a previously buffered range.\n      const fragState = this.fragmentTracker.getState(frag);\n      if (\n        fragState === FragmentState.OK ||\n        (fragState === FragmentState.PARTIAL && frag.gap)\n      ) {\n        fragPrevious = frag;\n      }\n      if (\n        fragPrevious &&\n        frag.sn === fragPrevious.sn &&\n        (!loadingParts || partList[0].fragment.sn > frag.sn)\n      ) {\n        // Force the next fragment to load if the previous one was already selected. This can occasionally happen with\n        // non-uniform fragment durations\n        const sameLevel = fragPrevious && frag.level === fragPrevious.level;\n        if (sameLevel) {\n          const nextFrag = fragments[curSNIdx + 1];\n          if (\n            frag.sn < endSN &&\n            this.fragmentTracker.getState(nextFrag) !== FragmentState.OK\n          ) {\n            frag = nextFrag;\n          } else {\n            frag = null;\n          }\n        }\n      }\n    }\n    return frag;\n  }\n\n  protected synchronizeToLiveEdge(levelDetails: LevelDetails) {\n    const { config, media } = this;\n    if (!media) {\n      return;\n    }\n    const liveSyncPosition = this.hls.liveSyncPosition;\n    const currentTime = media.currentTime;\n    const start = levelDetails.fragments[0].start;\n    const end = levelDetails.edge;\n    const withinSlidingWindow =\n      currentTime >= start - config.maxFragLookUpTolerance &&\n      currentTime <= end;\n    // Continue if we can seek forward to sync position or if current time is outside of sliding window\n    if (\n      liveSyncPosition !== null &&\n      media.duration > liveSyncPosition &&\n      (currentTime < liveSyncPosition || !withinSlidingWindow)\n    ) {\n      // Continue if buffer is starving or if current time is behind max latency\n      const maxLatency =\n        config.liveMaxLatencyDuration !== undefined\n          ? config.liveMaxLatencyDuration\n          : config.liveMaxLatencyDurationCount * levelDetails.targetduration;\n      if (\n        (!withinSlidingWindow && media.readyState < 4) ||\n        currentTime < end - maxLatency\n      ) {\n        if (!this.loadedmetadata) {\n          this.nextLoadPosition = liveSyncPosition;\n        }\n        // Only seek if ready and there is not a significant forward buffer available for playback\n        if (media.readyState) {\n          this.warn(\n            `Playback: ${currentTime.toFixed(\n              3\n            )} is located too far from the end of live sliding playlist: ${end}, reset currentTime to : ${liveSyncPosition.toFixed(\n              3\n            )}`\n          );\n          media.currentTime = liveSyncPosition;\n        }\n      }\n    }\n  }\n\n  protected alignPlaylists(\n    details: LevelDetails,\n    previousDetails?: LevelDetails\n  ): number {\n    const { levels, levelLastLoaded, fragPrevious } = this;\n    const lastLevel: Level | null =\n      levelLastLoaded !== null ? levels![levelLastLoaded] : null;\n\n    // FIXME: If not for `shouldAlignOnDiscontinuities` requiring fragPrevious.cc,\n    //  this could all go in level-helper mergeDetails()\n    const length = details.fragments.length;\n    if (!length) {\n      this.warn(`No fragments in live playlist`);\n      return 0;\n    }\n    const slidingStart = details.fragments[0].start;\n    const firstLevelLoad = !previousDetails;\n    const aligned = details.alignedSliding && Number.isFinite(slidingStart);\n    if (firstLevelLoad || (!aligned && !slidingStart)) {\n      alignStream(fragPrevious, lastLevel, details);\n      const alignedSlidingStart = details.fragments[0].start;\n      this.log(\n        `Live playlist sliding: ${alignedSlidingStart.toFixed(2)} start-sn: ${\n          previousDetails ? previousDetails.startSN : 'na'\n        }->${details.startSN} prev-sn: ${\n          fragPrevious ? fragPrevious.sn : 'na'\n        } fragments: ${length}`\n      );\n      return alignedSlidingStart;\n    }\n    return slidingStart;\n  }\n\n  protected waitForCdnTuneIn(details: LevelDetails) {\n    // Wait for Low-Latency CDN Tune-in to get an updated playlist\n    const advancePartLimit = 3;\n    return (\n      details.live &&\n      details.canBlockReload &&\n      details.partTarget &&\n      details.tuneInGoal >\n        Math.max(details.partHoldBack, details.partTarget * advancePartLimit)\n    );\n  }\n\n  protected setStartPosition(details: LevelDetails, sliding: number) {\n    // compute start position if set to -1. use it straight away if value is defined\n    let startPosition = this.startPosition;\n    if (startPosition < sliding) {\n      startPosition = -1;\n    }\n    if (startPosition === -1 || this.lastCurrentTime === -1) {\n      // Use Playlist EXT-X-START:TIME-OFFSET when set\n      // Prioritize Multivariant Playlist offset so that main, audio, and subtitle stream-controller start times match\n      const offsetInMultivariantPlaylist = this.startTimeOffset !== null;\n      const startTimeOffset = offsetInMultivariantPlaylist\n        ? this.startTimeOffset\n        : details.startTimeOffset;\n      if (startTimeOffset !== null && Number.isFinite(startTimeOffset)) {\n        startPosition = sliding + startTimeOffset;\n        if (startTimeOffset < 0) {\n          startPosition += details.totalduration;\n        }\n        startPosition = Math.min(\n          Math.max(sliding, startPosition),\n          sliding + details.totalduration\n        );\n        this.log(\n          `Start time offset ${startTimeOffset} found in ${\n            offsetInMultivariantPlaylist ? 'multivariant' : 'media'\n          } playlist, adjust startPosition to ${startPosition}`\n        );\n        this.startPosition = startPosition;\n      } else if (details.live) {\n        // Leave this.startPosition at -1, so that we can use `getInitialLiveFragment` logic when startPosition has\n        // not been specified via the config or an as an argument to startLoad (#3736).\n        startPosition = this.hls.liveSyncPosition || sliding;\n      } else {\n        this.startPosition = startPosition = 0;\n      }\n      this.lastCurrentTime = startPosition;\n    }\n    this.nextLoadPosition = startPosition;\n  }\n\n  protected getLoadPosition(): number {\n    const { media } = this;\n    // if we have not yet loaded any fragment, start loading from start position\n    let pos = 0;\n    if (this.loadedmetadata && media) {\n      pos = media.currentTime;\n    } else if (this.nextLoadPosition) {\n      pos = this.nextLoadPosition;\n    }\n\n    return pos;\n  }\n\n  private handleFragLoadAborted(frag: Fragment, part: Part | undefined) {\n    if (this.transmuxer && frag.sn !== 'initSegment' && frag.stats.aborted) {\n      this.warn(\n        `Fragment ${frag.sn}${part ? ' part ' + part.index : ''} of level ${\n          frag.level\n        } was aborted`\n      );\n      this.resetFragmentLoading(frag);\n    }\n  }\n\n  protected resetFragmentLoading(frag: Fragment) {\n    if (\n      !this.fragCurrent ||\n      (!this.fragContextChanged(frag) &&\n        this.state !== State.FRAG_LOADING_WAITING_RETRY)\n    ) {\n      this.state = State.IDLE;\n    }\n  }\n\n  protected onFragmentOrKeyLoadError(\n    filterType: PlaylistLevelType,\n    data: ErrorData\n  ) {\n    if (data.chunkMeta && !data.frag) {\n      const context = this.getCurrentContext(data.chunkMeta);\n      if (context) {\n        data.frag = context.frag;\n      }\n    }\n    const frag = data.frag;\n    // Handle frag error related to caller's filterType\n    if (!frag || frag.type !== filterType || !this.levels) {\n      return;\n    }\n    if (this.fragContextChanged(frag)) {\n      this.warn(\n        `Frag load error must match current frag to retry ${frag.url} > ${this.fragCurrent?.url}`\n      );\n      return;\n    }\n    const gapTagEncountered = data.details === ErrorDetails.FRAG_GAP;\n    if (gapTagEncountered) {\n      this.fragmentTracker.fragBuffered(frag, true);\n    }\n    // keep retrying until the limit will be reached\n    const errorAction = data.errorAction;\n    const { action, retryCount = 0, retryConfig } = errorAction || {};\n    if (\n      errorAction &&\n      action === NetworkErrorAction.RetryRequest &&\n      retryConfig\n    ) {\n      this.resetStartWhenNotLoaded(this.levelLastLoaded ?? frag.level);\n      const delay = getRetryDelay(retryConfig, retryCount);\n      this.warn(\n        `Fragment ${frag.sn} of ${filterType} ${frag.level} errored with ${\n          data.details\n        }, retrying loading ${retryCount + 1}/${\n          retryConfig.maxNumRetry\n        } in ${delay}ms`\n      );\n      errorAction.resolved = true;\n      this.retryDate = self.performance.now() + delay;\n      this.state = State.FRAG_LOADING_WAITING_RETRY;\n    } else if (retryConfig && errorAction) {\n      this.resetFragmentErrors(filterType);\n      if (retryCount < retryConfig.maxNumRetry) {\n        // Network retry is skipped when level switch is preferred\n        if (!gapTagEncountered) {\n          errorAction.resolved = true;\n        }\n      } else {\n        logger.warn(\n          `${data.details} reached or exceeded max retry (${retryCount})`\n        );\n      }\n    } else if (\n      errorAction?.action === NetworkErrorAction.SendAlternateToPenaltyBox\n    ) {\n      this.state = State.WAITING_LEVEL;\n    } else {\n      this.state = State.ERROR;\n    }\n    // Perform next async tick sooner to speed up error action resolution\n    this.tickImmediate();\n  }\n\n  protected reduceLengthAndFlushBuffer(data: ErrorData): boolean {\n    // if in appending state\n    if (this.state === State.PARSING || this.state === State.PARSED) {\n      const playlistType = data.parent as PlaylistLevelType;\n      const bufferedInfo = this.getFwdBufferInfo(\n        this.mediaBuffer,\n        playlistType\n      );\n      // 0.5 : tolerance needed as some browsers stalls playback before reaching buffered end\n      // reduce max buf len if current position is buffered\n      const buffered = bufferedInfo && bufferedInfo.len > 0.5;\n      if (buffered) {\n        this.reduceMaxBufferLength(bufferedInfo.len);\n      }\n      const flushBuffer = !buffered;\n      if (flushBuffer) {\n        // current position is not buffered, but browser is still complaining about buffer full error\n        // this happens on IE/Edge, refer to https://github.com/video-dev/hls.js/pull/708\n        // in that case flush the whole audio buffer to recover\n        this.warn(\n          `Buffer full error while media.currentTime is not buffered, flush ${playlistType} buffer`\n        );\n      }\n      if (data.frag) {\n        this.fragmentTracker.removeFragment(data.frag);\n        this.nextLoadPosition = data.frag.start;\n      }\n      this.resetLoadingState();\n      return flushBuffer;\n    }\n    return false;\n  }\n\n  protected resetFragmentErrors(filterType: PlaylistLevelType) {\n    if (filterType === PlaylistLevelType.AUDIO) {\n      // Reset current fragment since audio track audio is essential and may not have a fail-over track\n      this.fragCurrent = null;\n    }\n    // Fragment errors that result in a level switch or redundant fail-over\n    // should reset the stream controller state to idle\n    if (!this.loadedmetadata) {\n      this.startFragRequested = false;\n    }\n    if (this.state !== State.STOPPED) {\n      this.state = State.IDLE;\n    }\n  }\n\n  protected afterBufferFlushed(\n    media: Bufferable,\n    bufferType: SourceBufferName,\n    playlistType: PlaylistLevelType\n  ) {\n    if (!media) {\n      return;\n    }\n    // After successful buffer flushing, filter flushed fragments from bufferedFrags use mediaBuffered instead of media\n    // (so that we will check against video.buffered ranges in case of alt audio track)\n    const bufferedTimeRanges = BufferHelper.getBuffered(media);\n    this.fragmentTracker.detectEvictedFragments(\n      bufferType,\n      bufferedTimeRanges,\n      playlistType\n    );\n    if (this.state === State.ENDED) {\n      this.resetLoadingState();\n    }\n  }\n\n  protected resetLoadingState() {\n    this.log('Reset loading state');\n    this.fragCurrent = null;\n    this.fragPrevious = null;\n    this.state = State.IDLE;\n  }\n\n  protected resetStartWhenNotLoaded(level: number): void {\n    // if loadedmetadata is not set, it means that first frag request failed\n    // in that case, reset startFragRequested flag\n    if (!this.loadedmetadata) {\n      this.startFragRequested = false;\n      const details = this.levels ? this.levels[level].details : null;\n      if (details?.live) {\n        // Update the start position and return to IDLE to recover live start\n        this.startPosition = -1;\n        this.setStartPosition(details, 0);\n        this.resetLoadingState();\n      } else {\n        this.nextLoadPosition = this.startPosition;\n      }\n    }\n  }\n\n  protected resetWhenMissingContext(chunkMeta: ChunkMetadata) {\n    this.warn(\n      `The loading context changed while buffering fragment ${chunkMeta.sn} of level ${chunkMeta.level}. This chunk will not be buffered.`\n    );\n    this.removeUnbufferedFrags();\n    this.resetStartWhenNotLoaded(this.levelLastLoaded ?? chunkMeta.level);\n    this.resetLoadingState();\n  }\n\n  protected removeUnbufferedFrags(start: number = 0) {\n    this.fragmentTracker.removeFragmentsInRange(\n      start,\n      Infinity,\n      this.playlistType,\n      false,\n      true\n    );\n  }\n\n  private updateLevelTiming(\n    frag: Fragment,\n    part: Part | null,\n    level: Level,\n    partial: boolean\n  ) {\n    const details = level.details as LevelDetails;\n    if (!details) {\n      this.warn('level.details undefined');\n      return;\n    }\n    const parsed = Object.keys(frag.elementaryStreams).reduce(\n      (result, type) => {\n        const info = frag.elementaryStreams[type];\n        if (info) {\n          const parsedDuration = info.endPTS - info.startPTS;\n          if (parsedDuration <= 0) {\n            // Destroy the transmuxer after it's next time offset failed to advance because duration was <= 0.\n            // The new transmuxer will be configured with a time offset matching the next fragment start,\n            // preventing the timeline from shifting.\n            this.warn(\n              `Could not parse fragment ${frag.sn} ${type} duration reliably (${parsedDuration})`\n            );\n            return result || false;\n          }\n          const drift = partial\n            ? 0\n            : updateFragPTSDTS(\n                details,\n                frag,\n                info.startPTS,\n                info.endPTS,\n                info.startDTS,\n                info.endDTS\n              );\n          this.hls.trigger(Events.LEVEL_PTS_UPDATED, {\n            details,\n            level,\n            drift,\n            type,\n            frag,\n            start: info.startPTS,\n            end: info.endPTS,\n          });\n          return true;\n        }\n        return result;\n      },\n      false\n    );\n    if (parsed) {\n      level.fragmentError = 0;\n    } else if (this.transmuxer?.error === null) {\n      const error = new Error(\n        `Found no media in fragment ${frag.sn} of level ${frag.level} resetting transmuxer to fallback to playlist timing`\n      );\n      if (level.fragmentError === 0) {\n        // Mark and track the odd empty segment as a gap to avoid reloading\n        level.fragmentError++;\n        frag.gap = true;\n        this.fragmentTracker.removeFragment(frag);\n        this.fragmentTracker.fragBuffered(frag, true);\n      }\n      this.warn(error.message);\n      this.hls.trigger(Events.ERROR, {\n        type: ErrorTypes.MEDIA_ERROR,\n        details: ErrorDetails.FRAG_PARSING_ERROR,\n        fatal: false,\n        error,\n        frag,\n        reason: `Found no media in msn ${frag.sn} of level \"${level.url}\"`,\n      });\n      if (!this.hls) {\n        return;\n      }\n      this.resetTransmuxer();\n      // For this error fallthrough. Marking parsed will allow advancing to next fragment.\n    }\n    this.state = State.PARSED;\n    this.hls.trigger(Events.FRAG_PARSED, { frag, part });\n  }\n\n  protected resetTransmuxer() {\n    if (this.transmuxer) {\n      this.transmuxer.destroy();\n      this.transmuxer = null;\n    }\n  }\n\n  protected recoverWorkerError(data: ErrorData) {\n    if (data.event === 'demuxerWorker') {\n      this.fragmentTracker.removeAllFragments();\n      this.resetTransmuxer();\n      this.resetStartWhenNotLoaded(\n        this.levelLastLoaded ?? this.fragCurrent?.level ?? 0\n      );\n      this.resetLoadingState();\n    }\n  }\n\n  set state(nextState) {\n    const previousState = this._state;\n    if (previousState !== nextState) {\n      this._state = nextState;\n      this.log(`${previousState}->${nextState}`);\n    }\n  }\n\n  get state() {\n    return this._state;\n  }\n}\n","import * as ID3 from '../demux/id3';\nimport {\n  DemuxerResult,\n  Demuxer,\n  DemuxedAudioTrack,\n  AudioFrame,\n  DemuxedMetadataTrack,\n  DemuxedVideoTrack,\n  DemuxedUserdataTrack,\n  KeyData,\n  MetadataSchema,\n} from '../types/demuxer';\nimport { dummyTrack } from './dummy-demuxed-track';\nimport { appendUint8Array } from '../utils/mp4-tools';\nimport { sliceUint8 } from '../utils/typed-array';\nimport { RationalTimestamp } from '../utils/timescale-conversion';\n\nclass BaseAudioDemuxer implements Demuxer {\n  protected _audioTrack!: DemuxedAudioTrack;\n  protected _id3Track!: DemuxedMetadataTrack;\n  protected frameIndex: number = 0;\n  protected cachedData: Uint8Array | null = null;\n  protected basePTS: number | null = null;\n  protected initPTS: RationalTimestamp | null = null;\n  protected lastPTS: number | null = null;\n\n  resetInitSegment(\n    initSegment: Uint8Array | undefined,\n    audioCodec: string | undefined,\n    videoCodec: string | undefined,\n    trackDuration: number\n  ) {\n    this._id3Track = {\n      type: 'id3',\n      id: 3,\n      pid: -1,\n      inputTimeScale: 90000,\n      sequenceNumber: 0,\n      samples: [],\n      dropped: 0,\n    };\n  }\n\n  resetTimeStamp(deaultTimestamp: RationalTimestamp | null) {\n    this.initPTS = deaultTimestamp;\n    this.resetContiguity();\n  }\n\n  resetContiguity(): void {\n    this.basePTS = null;\n    this.lastPTS = null;\n    this.frameIndex = 0;\n  }\n\n  canParse(data: Uint8Array, offset: number): boolean {\n    return false;\n  }\n\n  appendFrame(\n    track: DemuxedAudioTrack,\n    data: Uint8Array,\n    offset: number\n  ): AudioFrame | void {}\n\n  // feed incoming data to the front of the parsing pipeline\n  demux(data: Uint8Array, timeOffset: number): DemuxerResult {\n    if (this.cachedData) {\n      data = appendUint8Array(this.cachedData, data);\n      this.cachedData = null;\n    }\n\n    let id3Data: Uint8Array | undefined = ID3.getID3Data(data, 0);\n    let offset = id3Data ? id3Data.length : 0;\n    let lastDataIndex;\n    const track = this._audioTrack;\n    const id3Track = this._id3Track;\n    const timestamp = id3Data ? ID3.getTimeStamp(id3Data) : undefined;\n    const length = data.length;\n\n    if (\n      this.basePTS === null ||\n      (this.frameIndex === 0 && Number.isFinite(timestamp))\n    ) {\n      this.basePTS = initPTSFn(timestamp, timeOffset, this.initPTS);\n      this.lastPTS = this.basePTS;\n    }\n\n    if (this.lastPTS === null) {\n      this.lastPTS = this.basePTS;\n    }\n\n    // more expressive than alternative: id3Data?.length\n    if (id3Data && id3Data.length > 0) {\n      id3Track.samples.push({\n        pts: this.lastPTS,\n        dts: this.lastPTS,\n        data: id3Data,\n        type: MetadataSchema.audioId3,\n        duration: Number.POSITIVE_INFINITY,\n      });\n    }\n\n    while (offset < length) {\n      if (this.canParse(data, offset)) {\n        const frame = this.appendFrame(track, data, offset);\n        if (frame) {\n          this.frameIndex++;\n          this.lastPTS = frame.sample.pts;\n          offset += frame.length;\n          lastDataIndex = offset;\n        } else {\n          offset = length;\n        }\n      } else if (ID3.canParse(data, offset)) {\n        // after a ID3.canParse, a call to ID3.getID3Data *should* always returns some data\n        id3Data = ID3.getID3Data(data, offset)!;\n        id3Track.samples.push({\n          pts: this.lastPTS,\n          dts: this.lastPTS,\n          data: id3Data,\n          type: MetadataSchema.audioId3,\n          duration: Number.POSITIVE_INFINITY,\n        });\n        offset += id3Data.length;\n        lastDataIndex = offset;\n      } else {\n        offset++;\n      }\n      if (offset === length && lastDataIndex !== length) {\n        const partialData = sliceUint8(data, lastDataIndex);\n        if (this.cachedData) {\n          this.cachedData = appendUint8Array(this.cachedData, partialData);\n        } else {\n          this.cachedData = partialData;\n        }\n      }\n    }\n\n    return {\n      audioTrack: track,\n      videoTrack: dummyTrack() as DemuxedVideoTrack,\n      id3Track,\n      textTrack: dummyTrack() as DemuxedUserdataTrack,\n    };\n  }\n\n  demuxSampleAes(\n    data: Uint8Array,\n    keyData: KeyData,\n    timeOffset: number\n  ): Promise<DemuxerResult> {\n    return Promise.reject(\n      new Error(`[${this}] This demuxer does not support Sample-AES decryption`)\n    );\n  }\n\n  flush(timeOffset: number): DemuxerResult {\n    // Parse cache in case of remaining frames.\n    const cachedData = this.cachedData;\n    if (cachedData) {\n      this.cachedData = null;\n      this.demux(cachedData, 0);\n    }\n\n    return {\n      audioTrack: this._audioTrack,\n      videoTrack: dummyTrack() as DemuxedVideoTrack,\n      id3Track: this._id3Track,\n      textTrack: dummyTrack() as DemuxedUserdataTrack,\n    };\n  }\n\n  destroy() {}\n}\n\n/**\n * Initialize PTS\n * <p>\n *    use timestamp unless it is undefined, NaN or Infinity\n * </p>\n */\nexport const initPTSFn = (\n  timestamp: number | undefined,\n  timeOffset: number,\n  initPTS: RationalTimestamp | null\n): number => {\n  if (Number.isFinite(timestamp as number)) {\n    return timestamp! * 90;\n  }\n  const init90kHz = initPTS\n    ? (initPTS.baseTime * 90000) / initPTS.timescale\n    : 0;\n  return timeOffset * 90000 + init90kHz;\n};\nexport default BaseAudioDemuxer;\n","/**\n * AAC demuxer\n */\nimport BaseAudioDemuxer from './base-audio-demuxer';\nimport * as ADTS from './adts';\nimport { logger } from '../utils/logger';\nimport * as ID3 from '../demux/id3';\nimport type { HlsEventEmitter } from '../events';\nimport type { HlsConfig } from '../config';\n\nclass AACDemuxer extends BaseAudioDemuxer {\n  private readonly observer: HlsEventEmitter;\n  private readonly config: HlsConfig;\n\n  constructor(observer, config) {\n    super();\n    this.observer = observer;\n    this.config = config;\n  }\n\n  resetInitSegment(\n    initSegment: Uint8Array | undefined,\n    audioCodec: string | undefined,\n    videoCodec: string | undefined,\n    trackDuration: number\n  ) {\n    super.resetInitSegment(initSegment, audioCodec, videoCodec, trackDuration);\n    this._audioTrack = {\n      container: 'audio/adts',\n      type: 'audio',\n      id: 2,\n      pid: -1,\n      sequenceNumber: 0,\n      segmentCodec: 'aac',\n      samples: [],\n      manifestCodec: audioCodec,\n      duration: trackDuration,\n      inputTimeScale: 90000,\n      dropped: 0,\n    };\n  }\n\n  // Source for probe info - https://wiki.multimedia.cx/index.php?title=ADTS\n  static probe(data): boolean {\n    if (!data) {\n      return false;\n    }\n\n    // Check for the ADTS sync word\n    // Look for ADTS header | 1111 1111 | 1111 X00X | where X can be either 0 or 1\n    // Layer bits (position 14 and 15) in header should be always 0 for ADTS\n    // More info https://wiki.multimedia.cx/index.php?title=ADTS\n    const id3Data = ID3.getID3Data(data, 0) || [];\n    let offset = id3Data.length;\n\n    for (let length = data.length; offset < length; offset++) {\n      if (ADTS.probe(data, offset)) {\n        logger.log('ADTS sync word found !');\n        return true;\n      }\n    }\n    return false;\n  }\n\n  canParse(data, offset) {\n    return ADTS.canParse(data, offset);\n  }\n\n  appendFrame(track, data, offset) {\n    ADTS.initTrackConfig(\n      track,\n      this.observer,\n      data,\n      offset,\n      track.manifestCodec\n    );\n    const frame = ADTS.appendFrame(\n      track,\n      data,\n      offset,\n      this.basePTS as number,\n      this.frameIndex\n    );\n    if (frame && frame.missing === 0) {\n      return frame;\n    }\n  }\n}\n\nexport default AACDemuxer;\n","/**\n * MP4 demuxer\n */\nimport {\n  Demuxer,\n  DemuxerResult,\n  PassthroughTrack,\n  DemuxedAudioTrack,\n  DemuxedUserdataTrack,\n  DemuxedMetadataTrack,\n  KeyData,\n  MetadataSchema,\n} from '../types/demuxer';\nimport {\n  findBox,\n  segmentValidRange,\n  appendUint8Array,\n  parseEmsg,\n  parseSamples,\n  parseInitSegment,\n  RemuxerTrackIdConfig,\n} from '../utils/mp4-tools';\nimport { dummyTrack } from './dummy-demuxed-track';\nimport type { HlsEventEmitter } from '../events';\nimport type { HlsConfig } from '../config';\n\nconst emsgSchemePattern = /\\/emsg[-/]ID3/i;\n\nclass MP4Demuxer implements Demuxer {\n  private remainderData: Uint8Array | null = null;\n  private timeOffset: number = 0;\n  private config: HlsConfig;\n  private videoTrack?: PassthroughTrack;\n  private audioTrack?: DemuxedAudioTrack;\n  private id3Track?: DemuxedMetadataTrack;\n  private txtTrack?: DemuxedUserdataTrack;\n\n  constructor(observer: HlsEventEmitter, config: HlsConfig) {\n    this.config = config;\n  }\n\n  public resetTimeStamp() {}\n\n  public resetInitSegment(\n    initSegment: Uint8Array | undefined,\n    audioCodec: string | undefined,\n    videoCodec: string | undefined,\n    trackDuration: number\n  ) {\n    const videoTrack = (this.videoTrack = dummyTrack(\n      'video',\n      1\n    ) as PassthroughTrack);\n    const audioTrack = (this.audioTrack = dummyTrack(\n      'audio',\n      1\n    ) as DemuxedAudioTrack);\n    const captionTrack = (this.txtTrack = dummyTrack(\n      'text',\n      1\n    ) as DemuxedUserdataTrack);\n\n    this.id3Track = dummyTrack('id3', 1) as DemuxedMetadataTrack;\n    this.timeOffset = 0;\n\n    if (!initSegment?.byteLength) {\n      return;\n    }\n    const initData = parseInitSegment(initSegment);\n\n    if (initData.video) {\n      const { id, timescale, codec } = initData.video;\n      videoTrack.id = id;\n      videoTrack.timescale = captionTrack.timescale = timescale;\n      videoTrack.codec = codec;\n    }\n\n    if (initData.audio) {\n      const { id, timescale, codec } = initData.audio;\n      audioTrack.id = id;\n      audioTrack.timescale = timescale;\n      audioTrack.codec = codec;\n    }\n\n    captionTrack.id = RemuxerTrackIdConfig.text;\n    videoTrack.sampleDuration = 0;\n    videoTrack.duration = audioTrack.duration = trackDuration;\n  }\n\n  public resetContiguity(): void {\n    this.remainderData = null;\n  }\n\n  static probe(data: Uint8Array) {\n    // ensure we find a moof box in the first 16 kB\n    data = data.length > 16384 ? data.subarray(0, 16384) : data;\n    return findBox(data, ['moof']).length > 0;\n  }\n\n  public demux(data: Uint8Array, timeOffset: number): DemuxerResult {\n    this.timeOffset = timeOffset;\n    // Load all data into the avc track. The CMAF remuxer will look for the data in the samples object; the rest of the fields do not matter\n    let videoSamples = data;\n    const videoTrack = this.videoTrack as PassthroughTrack;\n    const textTrack = this.txtTrack as DemuxedUserdataTrack;\n    if (this.config.progressive) {\n      // Split the bytestream into two ranges: one encompassing all data up until the start of the last moof, and everything else.\n      // This is done to guarantee that we're sending valid data to MSE - when demuxing progressively, we have no guarantee\n      // that the fetch loader gives us flush moof+mdat pairs. If we push jagged data to MSE, it will throw an exception.\n      if (this.remainderData) {\n        videoSamples = appendUint8Array(this.remainderData, data);\n      }\n      const segmentedData = segmentValidRange(videoSamples);\n      this.remainderData = segmentedData.remainder;\n      videoTrack.samples = segmentedData.valid || new Uint8Array();\n    } else {\n      videoTrack.samples = videoSamples;\n    }\n\n    const id3Track = this.extractID3Track(videoTrack, timeOffset);\n    textTrack.samples = parseSamples(timeOffset, videoTrack);\n\n    return {\n      videoTrack,\n      audioTrack: this.audioTrack as DemuxedAudioTrack,\n      id3Track,\n      textTrack: this.txtTrack as DemuxedUserdataTrack,\n    };\n  }\n\n  public flush() {\n    const timeOffset = this.timeOffset;\n    const videoTrack = this.videoTrack as PassthroughTrack;\n    const textTrack = this.txtTrack as DemuxedUserdataTrack;\n    videoTrack.samples = this.remainderData || new Uint8Array();\n    this.remainderData = null;\n\n    const id3Track = this.extractID3Track(videoTrack, this.timeOffset);\n    textTrack.samples = parseSamples(timeOffset, videoTrack);\n\n    return {\n      videoTrack,\n      audioTrack: dummyTrack() as DemuxedAudioTrack,\n      id3Track,\n      textTrack: dummyTrack() as DemuxedUserdataTrack,\n    };\n  }\n\n  private extractID3Track(\n    videoTrack: PassthroughTrack,\n    timeOffset: number\n  ): DemuxedMetadataTrack {\n    const id3Track = this.id3Track as DemuxedMetadataTrack;\n    if (videoTrack.samples.length) {\n      const emsgs = findBox(videoTrack.samples, ['emsg']);\n      if (emsgs) {\n        emsgs.forEach((data: Uint8Array) => {\n          const emsgInfo = parseEmsg(data);\n          if (emsgSchemePattern.test(emsgInfo.schemeIdUri)) {\n            const pts = Number.isFinite(emsgInfo.presentationTime)\n              ? emsgInfo.presentationTime! / emsgInfo.timeScale\n              : timeOffset +\n                emsgInfo.presentationTimeDelta! / emsgInfo.timeScale;\n            let duration =\n              emsgInfo.eventDuration === 0xffffffff\n                ? Number.POSITIVE_INFINITY\n                : emsgInfo.eventDuration / emsgInfo.timeScale;\n            // Safari takes anything <= 0.001 seconds and maps it to Infinity\n            if (duration <= 0.001) {\n              duration = Number.POSITIVE_INFINITY;\n            }\n            const payload = emsgInfo.payload;\n            id3Track.samples.push({\n              data: payload,\n              len: payload.byteLength,\n              dts: pts,\n              pts: pts,\n              type: MetadataSchema.emsg,\n              duration: duration,\n            });\n          }\n        });\n      }\n    }\n    return id3Track;\n  }\n\n  demuxSampleAes(\n    data: Uint8Array,\n    keyData: KeyData,\n    timeOffset: number\n  ): Promise<DemuxerResult> {\n    return Promise.reject(\n      new Error('The MP4 demuxer does not support SAMPLE-AES decryption')\n    );\n  }\n\n  destroy() {}\n}\n\nexport default MP4Demuxer;\n","/**\n * Parser for exponential Golomb codes, a variable-bitwidth number encoding scheme used by h264.\n */\n\nimport { logger } from '../utils/logger';\n\nclass ExpGolomb {\n  private data: Uint8Array;\n  public bytesAvailable: number;\n  private word: number;\n  private bitsAvailable: number;\n\n  constructor(data: Uint8Array) {\n    this.data = data;\n    // the number of bytes left to examine in this.data\n    this.bytesAvailable = data.byteLength;\n    // the current word being examined\n    this.word = 0; // :uint\n    // the number of bits left to examine in the current word\n    this.bitsAvailable = 0; // :uint\n  }\n\n  // ():void\n  loadWord(): void {\n    const data = this.data;\n    const bytesAvailable = this.bytesAvailable;\n    const position = data.byteLength - bytesAvailable;\n    const workingBytes = new Uint8Array(4);\n    const availableBytes = Math.min(4, bytesAvailable);\n    if (availableBytes === 0) {\n      throw new Error('no bytes available');\n    }\n\n    workingBytes.set(data.subarray(position, position + availableBytes));\n    this.word = new DataView(workingBytes.buffer).getUint32(0);\n    // track the amount of this.data that has been processed\n    this.bitsAvailable = availableBytes * 8;\n    this.bytesAvailable -= availableBytes;\n  }\n\n  // (count:int):void\n  skipBits(count: number): void {\n    let skipBytes; // :int\n    count = Math.min(count, this.bytesAvailable * 8 + this.bitsAvailable);\n    if (this.bitsAvailable > count) {\n      this.word <<= count;\n      this.bitsAvailable -= count;\n    } else {\n      count -= this.bitsAvailable;\n      skipBytes = count >> 3;\n      count -= skipBytes << 3;\n      this.bytesAvailable -= skipBytes;\n      this.loadWord();\n      this.word <<= count;\n      this.bitsAvailable -= count;\n    }\n  }\n\n  // (size:int):uint\n  readBits(size: number): number {\n    let bits = Math.min(this.bitsAvailable, size); // :uint\n    const valu = this.word >>> (32 - bits); // :uint\n    if (size > 32) {\n      logger.error('Cannot read more than 32 bits at a time');\n    }\n\n    this.bitsAvailable -= bits;\n    if (this.bitsAvailable > 0) {\n      this.word <<= bits;\n    } else if (this.bytesAvailable > 0) {\n      this.loadWord();\n    } else {\n      throw new Error('no bits available');\n    }\n\n    bits = size - bits;\n    if (bits > 0 && this.bitsAvailable) {\n      return (valu << bits) | this.readBits(bits);\n    } else {\n      return valu;\n    }\n  }\n\n  // ():uint\n  skipLZ(): number {\n    let leadingZeroCount; // :uint\n    for (\n      leadingZeroCount = 0;\n      leadingZeroCount < this.bitsAvailable;\n      ++leadingZeroCount\n    ) {\n      if ((this.word & (0x80000000 >>> leadingZeroCount)) !== 0) {\n        // the first bit of working word is 1\n        this.word <<= leadingZeroCount;\n        this.bitsAvailable -= leadingZeroCount;\n        return leadingZeroCount;\n      }\n    }\n    // we exhausted word and still have not found a 1\n    this.loadWord();\n    return leadingZeroCount + this.skipLZ();\n  }\n\n  // ():void\n  skipUEG(): void {\n    this.skipBits(1 + this.skipLZ());\n  }\n\n  // ():void\n  skipEG(): void {\n    this.skipBits(1 + this.skipLZ());\n  }\n\n  // ():uint\n  readUEG(): number {\n    const clz = this.skipLZ(); // :uint\n    return this.readBits(clz + 1) - 1;\n  }\n\n  // ():int\n  readEG(): number {\n    const valu = this.readUEG(); // :int\n    if (0x01 & valu) {\n      // the number is odd if the low order bit is set\n      return (1 + valu) >>> 1; // add 1 to make it even, and divide by 2\n    } else {\n      return -1 * (valu >>> 1); // divide by two then make it negative\n    }\n  }\n\n  // Some convenience functions\n  // :Boolean\n  readBoolean(): boolean {\n    return this.readBits(1) === 1;\n  }\n\n  // ():int\n  readUByte(): number {\n    return this.readBits(8);\n  }\n\n  // ():int\n  readUShort(): number {\n    return this.readBits(16);\n  }\n\n  // ():int\n  readUInt(): number {\n    return this.readBits(32);\n  }\n\n  /**\n   * Advance the ExpGolomb decoder past a scaling list. The scaling\n   * list is optionally transmitted as part of a sequence parameter\n   * set and is not relevant to transmuxing.\n   * @param count the number of entries in this scaling list\n   * @see Recommendation ITU-T H.264, Section 7.3.2.1.1.1\n   */\n  skipScalingList(count: number): void {\n    let lastScale = 8;\n    let nextScale = 8;\n    let deltaScale;\n    for (let j = 0; j < count; j++) {\n      if (nextScale !== 0) {\n        deltaScale = this.readEG();\n        nextScale = (lastScale + deltaScale + 256) % 256;\n      }\n      lastScale = nextScale === 0 ? lastScale : nextScale;\n    }\n  }\n\n  /**\n   * Read a sequence parameter set and return some interesting video\n   * properties. A sequence parameter set is the H264 metadata that\n   * describes the properties of upcoming video frames.\n   * @returns an object with configuration parsed from the\n   * sequence parameter set, including the dimensions of the\n   * associated video frames.\n   */\n  readSPS(): {\n    width: number;\n    height: number;\n    pixelRatio: [number, number];\n  } {\n    let frameCropLeftOffset = 0;\n    let frameCropRightOffset = 0;\n    let frameCropTopOffset = 0;\n    let frameCropBottomOffset = 0;\n    let numRefFramesInPicOrderCntCycle;\n    let scalingListCount;\n    let i;\n    const readUByte = this.readUByte.bind(this);\n    const readBits = this.readBits.bind(this);\n    const readUEG = this.readUEG.bind(this);\n    const readBoolean = this.readBoolean.bind(this);\n    const skipBits = this.skipBits.bind(this);\n    const skipEG = this.skipEG.bind(this);\n    const skipUEG = this.skipUEG.bind(this);\n    const skipScalingList = this.skipScalingList.bind(this);\n\n    readUByte();\n    const profileIdc = readUByte(); // profile_idc\n    readBits(5); // profileCompat constraint_set[0-4]_flag, u(5)\n    skipBits(3); // reserved_zero_3bits u(3),\n    readUByte(); // level_idc u(8)\n    skipUEG(); // seq_parameter_set_id\n    // some profiles have more optional data we don't need\n    if (\n      profileIdc === 100 ||\n      profileIdc === 110 ||\n      profileIdc === 122 ||\n      profileIdc === 244 ||\n      profileIdc === 44 ||\n      profileIdc === 83 ||\n      profileIdc === 86 ||\n      profileIdc === 118 ||\n      profileIdc === 128\n    ) {\n      const chromaFormatIdc = readUEG();\n      if (chromaFormatIdc === 3) {\n        skipBits(1);\n      } // separate_colour_plane_flag\n\n      skipUEG(); // bit_depth_luma_minus8\n      skipUEG(); // bit_depth_chroma_minus8\n      skipBits(1); // qpprime_y_zero_transform_bypass_flag\n      if (readBoolean()) {\n        // seq_scaling_matrix_present_flag\n        scalingListCount = chromaFormatIdc !== 3 ? 8 : 12;\n        for (i = 0; i < scalingListCount; i++) {\n          if (readBoolean()) {\n            // seq_scaling_list_present_flag[ i ]\n            if (i < 6) {\n              skipScalingList(16);\n            } else {\n              skipScalingList(64);\n            }\n          }\n        }\n      }\n    }\n    skipUEG(); // log2_max_frame_num_minus4\n    const picOrderCntType = readUEG();\n    if (picOrderCntType === 0) {\n      readUEG(); // log2_max_pic_order_cnt_lsb_minus4\n    } else if (picOrderCntType === 1) {\n      skipBits(1); // delta_pic_order_always_zero_flag\n      skipEG(); // offset_for_non_ref_pic\n      skipEG(); // offset_for_top_to_bottom_field\n      numRefFramesInPicOrderCntCycle = readUEG();\n      for (i = 0; i < numRefFramesInPicOrderCntCycle; i++) {\n        skipEG();\n      } // offset_for_ref_frame[ i ]\n    }\n    skipUEG(); // max_num_ref_frames\n    skipBits(1); // gaps_in_frame_num_value_allowed_flag\n    const picWidthInMbsMinus1 = readUEG();\n    const picHeightInMapUnitsMinus1 = readUEG();\n    const frameMbsOnlyFlag = readBits(1);\n    if (frameMbsOnlyFlag === 0) {\n      skipBits(1);\n    } // mb_adaptive_frame_field_flag\n\n    skipBits(1); // direct_8x8_inference_flag\n    if (readBoolean()) {\n      // frame_cropping_flag\n      frameCropLeftOffset = readUEG();\n      frameCropRightOffset = readUEG();\n      frameCropTopOffset = readUEG();\n      frameCropBottomOffset = readUEG();\n    }\n    let pixelRatio: [number, number] = [1, 1];\n    if (readBoolean()) {\n      // vui_parameters_present_flag\n      if (readBoolean()) {\n        // aspect_ratio_info_present_flag\n        const aspectRatioIdc = readUByte();\n        switch (aspectRatioIdc) {\n          case 1:\n            pixelRatio = [1, 1];\n            break;\n          case 2:\n            pixelRatio = [12, 11];\n            break;\n          case 3:\n            pixelRatio = [10, 11];\n            break;\n          case 4:\n            pixelRatio = [16, 11];\n            break;\n          case 5:\n            pixelRatio = [40, 33];\n            break;\n          case 6:\n            pixelRatio = [24, 11];\n            break;\n          case 7:\n            pixelRatio = [20, 11];\n            break;\n          case 8:\n            pixelRatio = [32, 11];\n            break;\n          case 9:\n            pixelRatio = [80, 33];\n            break;\n          case 10:\n            pixelRatio = [18, 11];\n            break;\n          case 11:\n            pixelRatio = [15, 11];\n            break;\n          case 12:\n            pixelRatio = [64, 33];\n            break;\n          case 13:\n            pixelRatio = [160, 99];\n            break;\n          case 14:\n            pixelRatio = [4, 3];\n            break;\n          case 15:\n            pixelRatio = [3, 2];\n            break;\n          case 16:\n            pixelRatio = [2, 1];\n            break;\n          case 255: {\n            pixelRatio = [\n              (readUByte() << 8) | readUByte(),\n              (readUByte() << 8) | readUByte(),\n            ];\n            break;\n          }\n        }\n      }\n    }\n    return {\n      width: Math.ceil(\n        (picWidthInMbsMinus1 + 1) * 16 -\n          frameCropLeftOffset * 2 -\n          frameCropRightOffset * 2\n      ),\n      height:\n        (2 - frameMbsOnlyFlag) * (picHeightInMapUnitsMinus1 + 1) * 16 -\n        (frameMbsOnlyFlag ? 2 : 4) *\n          (frameCropTopOffset + frameCropBottomOffset),\n      pixelRatio: pixelRatio,\n    };\n  }\n\n  readSliceType() {\n    // skip NALu type\n    this.readUByte();\n    // discard first_mb_in_slice\n    this.readUEG();\n    // return slice_type\n    return this.readUEG();\n  }\n}\n\nexport default ExpGolomb;\n","/**\n * SAMPLE-AES decrypter\n */\n\nimport { HlsConfig } from '../config';\nimport Decrypter from '../crypt/decrypter';\nimport { HlsEventEmitter } from '../events';\nimport type {\n  AudioSample,\n  AvcSample,\n  AvcSampleUnit,\n  DemuxedVideoTrack,\n  KeyData,\n} from '../types/demuxer';\nimport { discardEPB } from '../utils/mp4-tools';\n\nclass SampleAesDecrypter {\n  private keyData: KeyData;\n  private decrypter: Decrypter;\n\n  constructor(observer: HlsEventEmitter, config: HlsConfig, keyData: KeyData) {\n    this.keyData = keyData;\n    this.decrypter = new Decrypter(config, {\n      removePKCS7Padding: false,\n    });\n  }\n\n  decryptBuffer(encryptedData: Uint8Array | ArrayBuffer): Promise<ArrayBuffer> {\n    return this.decrypter.decrypt(\n      encryptedData,\n      this.keyData.key.buffer,\n      this.keyData.iv.buffer\n    );\n  }\n\n  // AAC - encrypt all full 16 bytes blocks starting from offset 16\n  private decryptAacSample(\n    samples: AudioSample[],\n    sampleIndex: number,\n    callback: () => void\n  ) {\n    const curUnit = samples[sampleIndex].unit;\n    if (curUnit.length <= 16) {\n      // No encrypted portion in this sample (first 16 bytes is not\n      // encrypted, see https://developer.apple.com/library/archive/documentation/AudioVideo/Conceptual/HLS_Sample_Encryption/Encryption/Encryption.html),\n      return;\n    }\n    const encryptedData = curUnit.subarray(\n      16,\n      curUnit.length - (curUnit.length % 16)\n    );\n    const encryptedBuffer = encryptedData.buffer.slice(\n      encryptedData.byteOffset,\n      encryptedData.byteOffset + encryptedData.length\n    );\n\n    this.decryptBuffer(encryptedBuffer).then((decryptedBuffer: ArrayBuffer) => {\n      const decryptedData = new Uint8Array(decryptedBuffer);\n      curUnit.set(decryptedData, 16);\n\n      if (!this.decrypter.isSync()) {\n        this.decryptAacSamples(samples, sampleIndex + 1, callback);\n      }\n    });\n  }\n\n  decryptAacSamples(\n    samples: AudioSample[],\n    sampleIndex: number,\n    callback: () => void\n  ) {\n    for (; ; sampleIndex++) {\n      if (sampleIndex >= samples.length) {\n        callback();\n        return;\n      }\n\n      if (samples[sampleIndex].unit.length < 32) {\n        continue;\n      }\n\n      this.decryptAacSample(samples, sampleIndex, callback);\n\n      if (!this.decrypter.isSync()) {\n        return;\n      }\n    }\n  }\n\n  // AVC - encrypt one 16 bytes block out of ten, starting from offset 32\n  getAvcEncryptedData(decodedData: Uint8Array) {\n    const encryptedDataLen =\n      Math.floor((decodedData.length - 48) / 160) * 16 + 16;\n    const encryptedData = new Int8Array(encryptedDataLen);\n    let outputPos = 0;\n    for (\n      let inputPos = 32;\n      inputPos < decodedData.length - 16;\n      inputPos += 160, outputPos += 16\n    ) {\n      encryptedData.set(\n        decodedData.subarray(inputPos, inputPos + 16),\n        outputPos\n      );\n    }\n\n    return encryptedData;\n  }\n\n  getAvcDecryptedUnit(\n    decodedData: Uint8Array,\n    decryptedData: ArrayLike<number> | ArrayBuffer | SharedArrayBuffer\n  ) {\n    const uint8DecryptedData = new Uint8Array(decryptedData);\n    let inputPos = 0;\n    for (\n      let outputPos = 32;\n      outputPos < decodedData.length - 16;\n      outputPos += 160, inputPos += 16\n    ) {\n      decodedData.set(\n        uint8DecryptedData.subarray(inputPos, inputPos + 16),\n        outputPos\n      );\n    }\n\n    return decodedData;\n  }\n\n  decryptAvcSample(\n    samples: AvcSample[],\n    sampleIndex: number,\n    unitIndex: number,\n    callback: () => void,\n    curUnit: AvcSampleUnit\n  ) {\n    const decodedData = discardEPB(curUnit.data);\n    const encryptedData = this.getAvcEncryptedData(decodedData);\n\n    this.decryptBuffer(encryptedData.buffer).then(\n      (decryptedBuffer: ArrayBuffer) => {\n        curUnit.data = this.getAvcDecryptedUnit(decodedData, decryptedBuffer);\n\n        if (!this.decrypter.isSync()) {\n          this.decryptAvcSamples(samples, sampleIndex, unitIndex + 1, callback);\n        }\n      }\n    );\n  }\n\n  decryptAvcSamples(\n    samples: DemuxedVideoTrack['samples'],\n    sampleIndex: number,\n    unitIndex: number,\n    callback: () => void\n  ) {\n    if (samples instanceof Uint8Array) {\n      throw new Error('Cannot decrypt samples of type Uint8Array');\n    }\n\n    for (; ; sampleIndex++, unitIndex = 0) {\n      if (sampleIndex >= samples.length) {\n        callback();\n        return;\n      }\n\n      const curUnits = samples[sampleIndex].units;\n      for (; ; unitIndex++) {\n        if (unitIndex >= curUnits.length) {\n          break;\n        }\n\n        const curUnit = curUnits[unitIndex];\n        if (\n          curUnit.data.length <= 48 ||\n          (curUnit.type !== 1 && curUnit.type !== 5)\n        ) {\n          continue;\n        }\n\n        this.decryptAvcSample(\n          samples,\n          sampleIndex,\n          unitIndex,\n          callback,\n          curUnit\n        );\n\n        if (!this.decrypter.isSync()) {\n          return;\n        }\n      }\n    }\n  }\n}\n\nexport default SampleAesDecrypter;\n","/**\n * MP3 demuxer\n */\nimport BaseAudioDemuxer from './base-audio-demuxer';\nimport * as ID3 from '../demux/id3';\nimport { logger } from '../utils/logger';\nimport * as MpegAudio from './mpegaudio';\n\nclass MP3Demuxer extends BaseAudioDemuxer {\n  resetInitSegment(\n    initSegment: Uint8Array | undefined,\n    audioCodec: string | undefined,\n    videoCodec: string | undefined,\n    trackDuration: number\n  ) {\n    super.resetInitSegment(initSegment, audioCodec, videoCodec, trackDuration);\n    this._audioTrack = {\n      container: 'audio/mpeg',\n      type: 'audio',\n      id: 2,\n      pid: -1,\n      sequenceNumber: 0,\n      segmentCodec: 'mp3',\n      samples: [],\n      manifestCodec: audioCodec,\n      duration: trackDuration,\n      inputTimeScale: 90000,\n      dropped: 0,\n    };\n  }\n\n  static probe(data): boolean {\n    if (!data) {\n      return false;\n    }\n\n    // check if data contains ID3 timestamp and MPEG sync word\n    // Look for MPEG header | 1111 1111 | 111X XYZX | where X can be either 0 or 1 and Y or Z should be 1\n    // Layer bits (position 14 and 15) in header should be always different from 0 (Layer I or Layer II or Layer III)\n    // More info http://www.mp3-tech.org/programmer/frame_header.html\n    const id3Data = ID3.getID3Data(data, 0) || [];\n    let offset = id3Data.length;\n\n    for (let length = data.length; offset < length; offset++) {\n      if (MpegAudio.probe(data, offset)) {\n        logger.log('MPEG Audio sync word found !');\n        return true;\n      }\n    }\n    return false;\n  }\n\n  canParse(data, offset) {\n    return MpegAudio.canParse(data, offset);\n  }\n\n  appendFrame(track, data, offset) {\n    if (this.basePTS === null) {\n      return;\n    }\n    return MpegAudio.appendFrame(\n      track,\n      data,\n      offset,\n      this.basePTS,\n      this.frameIndex\n    );\n  }\n}\n\nexport default MP3Demuxer;\n","/**\n *  AAC helper\n */\n\nclass AAC {\n  static getSilentFrame(\n    codec?: string,\n    channelCount?: number\n  ): Uint8Array | undefined {\n    switch (codec) {\n      case 'mp4a.40.2':\n        if (channelCount === 1) {\n          return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x23, 0x80]);\n        } else if (channelCount === 2) {\n          return new Uint8Array([\n            0x21, 0x00, 0x49, 0x90, 0x02, 0x19, 0x00, 0x23, 0x80,\n          ]);\n        } else if (channelCount === 3) {\n          return new Uint8Array([\n            0x00, 0xc8, 0x00, 0x80, 0x20, 0x84, 0x01, 0x26, 0x40, 0x08, 0x64,\n            0x00, 0x8e,\n          ]);\n        } else if (channelCount === 4) {\n          return new Uint8Array([\n            0x00, 0xc8, 0x00, 0x80, 0x20, 0x84, 0x01, 0x26, 0x40, 0x08, 0x64,\n            0x00, 0x80, 0x2c, 0x80, 0x08, 0x02, 0x38,\n          ]);\n        } else if (channelCount === 5) {\n          return new Uint8Array([\n            0x00, 0xc8, 0x00, 0x80, 0x20, 0x84, 0x01, 0x26, 0x40, 0x08, 0x64,\n            0x00, 0x82, 0x30, 0x04, 0x99, 0x00, 0x21, 0x90, 0x02, 0x38,\n          ]);\n        } else if (channelCount === 6) {\n          return new Uint8Array([\n            0x00, 0xc8, 0x00, 0x80, 0x20, 0x84, 0x01, 0x26, 0x40, 0x08, 0x64,\n            0x00, 0x82, 0x30, 0x04, 0x99, 0x00, 0x21, 0x90, 0x02, 0x00, 0xb2,\n            0x00, 0x20, 0x08, 0xe0,\n          ]);\n        }\n\n        break;\n      // handle HE-AAC below (mp4a.40.5 / mp4a.40.29)\n      default:\n        if (channelCount === 1) {\n          // ffmpeg -y -f lavfi -i \"aevalsrc=0:d=0.05\" -c:a libfdk_aac -profile:a aac_he -b:a 4k output.aac && hexdump -v -e '16/1 \"0x%x,\" \"\\n\"' -v output.aac\n          return new Uint8Array([\n            0x1, 0x40, 0x22, 0x80, 0xa3, 0x4e, 0xe6, 0x80, 0xba, 0x8, 0x0, 0x0,\n            0x0, 0x1c, 0x6, 0xf1, 0xc1, 0xa, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a,\n            0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a,\n            0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a,\n            0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a,\n            0x5a, 0x5e,\n          ]);\n        } else if (channelCount === 2) {\n          // ffmpeg -y -f lavfi -i \"aevalsrc=0|0:d=0.05\" -c:a libfdk_aac -profile:a aac_he_v2 -b:a 4k output.aac && hexdump -v -e '16/1 \"0x%x,\" \"\\n\"' -v output.aac\n          return new Uint8Array([\n            0x1, 0x40, 0x22, 0x80, 0xa3, 0x5e, 0xe6, 0x80, 0xba, 0x8, 0x0, 0x0,\n            0x0, 0x0, 0x95, 0x0, 0x6, 0xf1, 0xa1, 0xa, 0x5a, 0x5a, 0x5a, 0x5a,\n            0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a,\n            0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a,\n            0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a,\n            0x5a, 0x5e,\n          ]);\n        } else if (channelCount === 3) {\n          // ffmpeg -y -f lavfi -i \"aevalsrc=0|0|0:d=0.05\" -c:a libfdk_aac -profile:a aac_he_v2 -b:a 4k output.aac && hexdump -v -e '16/1 \"0x%x,\" \"\\n\"' -v output.aac\n          return new Uint8Array([\n            0x1, 0x40, 0x22, 0x80, 0xa3, 0x5e, 0xe6, 0x80, 0xba, 0x8, 0x0, 0x0,\n            0x0, 0x0, 0x95, 0x0, 0x6, 0xf1, 0xa1, 0xa, 0x5a, 0x5a, 0x5a, 0x5a,\n            0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a,\n            0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a,\n            0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a,\n            0x5a, 0x5e,\n          ]);\n        }\n        break;\n    }\n    return undefined;\n  }\n}\n\nexport default AAC;\n","/**\n * Generate MP4 Box\n */\n\ntype HdlrTypes = {\n  video: Uint8Array;\n  audio: Uint8Array;\n};\n\nconst UINT32_MAX = Math.pow(2, 32) - 1;\n\nclass MP4 {\n  public static types: Record<string, number[]>;\n  private static HDLR_TYPES: HdlrTypes;\n  private static STTS: Uint8Array;\n  private static STSC: Uint8Array;\n  private static STCO: Uint8Array;\n  private static STSZ: Uint8Array;\n  private static VMHD: Uint8Array;\n  private static SMHD: Uint8Array;\n  private static STSD: Uint8Array;\n  private static FTYP: Uint8Array;\n  private static DINF: Uint8Array;\n\n  static init() {\n    MP4.types = {\n      avc1: [], // codingname\n      avcC: [],\n      btrt: [],\n      dinf: [],\n      dref: [],\n      esds: [],\n      ftyp: [],\n      hdlr: [],\n      mdat: [],\n      mdhd: [],\n      mdia: [],\n      mfhd: [],\n      minf: [],\n      moof: [],\n      moov: [],\n      mp4a: [],\n      '.mp3': [],\n      mvex: [],\n      mvhd: [],\n      pasp: [],\n      sdtp: [],\n      stbl: [],\n      stco: [],\n      stsc: [],\n      stsd: [],\n      stsz: [],\n      stts: [],\n      tfdt: [],\n      tfhd: [],\n      traf: [],\n      trak: [],\n      trun: [],\n      trex: [],\n      tkhd: [],\n      vmhd: [],\n      smhd: [],\n    };\n\n    let i: string;\n    for (i in MP4.types) {\n      if (MP4.types.hasOwnProperty(i)) {\n        MP4.types[i] = [\n          i.charCodeAt(0),\n          i.charCodeAt(1),\n          i.charCodeAt(2),\n          i.charCodeAt(3),\n        ];\n      }\n    }\n\n    const videoHdlr = new Uint8Array([\n      0x00, // version 0\n      0x00,\n      0x00,\n      0x00, // flags\n      0x00,\n      0x00,\n      0x00,\n      0x00, // pre_defined\n      0x76,\n      0x69,\n      0x64,\n      0x65, // handler_type: 'vide'\n      0x00,\n      0x00,\n      0x00,\n      0x00, // reserved\n      0x00,\n      0x00,\n      0x00,\n      0x00, // reserved\n      0x00,\n      0x00,\n      0x00,\n      0x00, // reserved\n      0x56,\n      0x69,\n      0x64,\n      0x65,\n      0x6f,\n      0x48,\n      0x61,\n      0x6e,\n      0x64,\n      0x6c,\n      0x65,\n      0x72,\n      0x00, // name: 'VideoHandler'\n    ]);\n\n    const audioHdlr = new Uint8Array([\n      0x00, // version 0\n      0x00,\n      0x00,\n      0x00, // flags\n      0x00,\n      0x00,\n      0x00,\n      0x00, // pre_defined\n      0x73,\n      0x6f,\n      0x75,\n      0x6e, // handler_type: 'soun'\n      0x00,\n      0x00,\n      0x00,\n      0x00, // reserved\n      0x00,\n      0x00,\n      0x00,\n      0x00, // reserved\n      0x00,\n      0x00,\n      0x00,\n      0x00, // reserved\n      0x53,\n      0x6f,\n      0x75,\n      0x6e,\n      0x64,\n      0x48,\n      0x61,\n      0x6e,\n      0x64,\n      0x6c,\n      0x65,\n      0x72,\n      0x00, // name: 'SoundHandler'\n    ]);\n\n    MP4.HDLR_TYPES = {\n      video: videoHdlr,\n      audio: audioHdlr,\n    };\n\n    const dref = new Uint8Array([\n      0x00, // version 0\n      0x00,\n      0x00,\n      0x00, // flags\n      0x00,\n      0x00,\n      0x00,\n      0x01, // entry_count\n      0x00,\n      0x00,\n      0x00,\n      0x0c, // entry_size\n      0x75,\n      0x72,\n      0x6c,\n      0x20, // 'url' type\n      0x00, // version 0\n      0x00,\n      0x00,\n      0x01, // entry_flags\n    ]);\n\n    const stco = new Uint8Array([\n      0x00, // version\n      0x00,\n      0x00,\n      0x00, // flags\n      0x00,\n      0x00,\n      0x00,\n      0x00, // entry_count\n    ]);\n\n    MP4.STTS = MP4.STSC = MP4.STCO = stco;\n\n    MP4.STSZ = new Uint8Array([\n      0x00, // version\n      0x00,\n      0x00,\n      0x00, // flags\n      0x00,\n      0x00,\n      0x00,\n      0x00, // sample_size\n      0x00,\n      0x00,\n      0x00,\n      0x00, // sample_count\n    ]);\n    MP4.VMHD = new Uint8Array([\n      0x00, // version\n      0x00,\n      0x00,\n      0x01, // flags\n      0x00,\n      0x00, // graphicsmode\n      0x00,\n      0x00,\n      0x00,\n      0x00,\n      0x00,\n      0x00, // opcolor\n    ]);\n    MP4.SMHD = new Uint8Array([\n      0x00, // version\n      0x00,\n      0x00,\n      0x00, // flags\n      0x00,\n      0x00, // balance\n      0x00,\n      0x00, // reserved\n    ]);\n\n    MP4.STSD = new Uint8Array([\n      0x00, // version 0\n      0x00,\n      0x00,\n      0x00, // flags\n      0x00,\n      0x00,\n      0x00,\n      0x01,\n    ]); // entry_count\n\n    const majorBrand = new Uint8Array([105, 115, 111, 109]); // isom\n    const avc1Brand = new Uint8Array([97, 118, 99, 49]); // avc1\n    const minorVersion = new Uint8Array([0, 0, 0, 1]);\n\n    MP4.FTYP = MP4.box(\n      MP4.types.ftyp,\n      majorBrand,\n      minorVersion,\n      majorBrand,\n      avc1Brand\n    );\n    MP4.DINF = MP4.box(MP4.types.dinf, MP4.box(MP4.types.dref, dref));\n  }\n\n  static box(type, ...payload: Uint8Array[]) {\n    let size = 8;\n    let i = payload.length;\n    const len = i;\n    // calculate the total size we need to allocate\n    while (i--) {\n      size += payload[i].byteLength;\n    }\n\n    const result = new Uint8Array(size);\n    result[0] = (size >> 24) & 0xff;\n    result[1] = (size >> 16) & 0xff;\n    result[2] = (size >> 8) & 0xff;\n    result[3] = size & 0xff;\n    result.set(type, 4);\n    // copy the payload into the result\n    for (i = 0, size = 8; i < len; i++) {\n      // copy payload[i] array @ offset size\n      result.set(payload[i], size);\n      size += payload[i].byteLength;\n    }\n    return result;\n  }\n\n  static hdlr(type) {\n    return MP4.box(MP4.types.hdlr, MP4.HDLR_TYPES[type]);\n  }\n\n  static mdat(data) {\n    return MP4.box(MP4.types.mdat, data);\n  }\n\n  static mdhd(timescale, duration) {\n    duration *= timescale;\n    const upperWordDuration = Math.floor(duration / (UINT32_MAX + 1));\n    const lowerWordDuration = Math.floor(duration % (UINT32_MAX + 1));\n    return MP4.box(\n      MP4.types.mdhd,\n      new Uint8Array([\n        0x01, // version 1\n        0x00,\n        0x00,\n        0x00, // flags\n        0x00,\n        0x00,\n        0x00,\n        0x00,\n        0x00,\n        0x00,\n        0x00,\n        0x02, // creation_time\n        0x00,\n        0x00,\n        0x00,\n        0x00,\n        0x00,\n        0x00,\n        0x00,\n        0x03, // modification_time\n        (timescale >> 24) & 0xff,\n        (timescale >> 16) & 0xff,\n        (timescale >> 8) & 0xff,\n        timescale & 0xff, // timescale\n        upperWordDuration >> 24,\n        (upperWordDuration >> 16) & 0xff,\n        (upperWordDuration >> 8) & 0xff,\n        upperWordDuration & 0xff,\n        lowerWordDuration >> 24,\n        (lowerWordDuration >> 16) & 0xff,\n        (lowerWordDuration >> 8) & 0xff,\n        lowerWordDuration & 0xff,\n        0x55,\n        0xc4, // 'und' language (undetermined)\n        0x00,\n        0x00,\n      ])\n    );\n  }\n\n  static mdia(track) {\n    return MP4.box(\n      MP4.types.mdia,\n      MP4.mdhd(track.timescale, track.duration),\n      MP4.hdlr(track.type),\n      MP4.minf(track)\n    );\n  }\n\n  static mfhd(sequenceNumber) {\n    return MP4.box(\n      MP4.types.mfhd,\n      new Uint8Array([\n        0x00,\n        0x00,\n        0x00,\n        0x00, // flags\n        sequenceNumber >> 24,\n        (sequenceNumber >> 16) & 0xff,\n        (sequenceNumber >> 8) & 0xff,\n        sequenceNumber & 0xff, // sequence_number\n      ])\n    );\n  }\n\n  static minf(track) {\n    if (track.type === 'audio') {\n      return MP4.box(\n        MP4.types.minf,\n        MP4.box(MP4.types.smhd, MP4.SMHD),\n        MP4.DINF,\n        MP4.stbl(track)\n      );\n    } else {\n      return MP4.box(\n        MP4.types.minf,\n        MP4.box(MP4.types.vmhd, MP4.VMHD),\n        MP4.DINF,\n        MP4.stbl(track)\n      );\n    }\n  }\n\n  static moof(sn, baseMediaDecodeTime, track) {\n    return MP4.box(\n      MP4.types.moof,\n      MP4.mfhd(sn),\n      MP4.traf(track, baseMediaDecodeTime)\n    );\n  }\n\n  static moov(tracks) {\n    let i = tracks.length;\n    const boxes: Uint8Array[] = [];\n\n    while (i--) {\n      boxes[i] = MP4.trak(tracks[i]);\n    }\n\n    return MP4.box.apply(\n      null,\n      [MP4.types.moov, MP4.mvhd(tracks[0].timescale, tracks[0].duration)]\n        .concat(boxes)\n        .concat(MP4.mvex(tracks))\n    );\n  }\n\n  static mvex(tracks) {\n    let i = tracks.length;\n    const boxes: Uint8Array[] = [];\n\n    while (i--) {\n      boxes[i] = MP4.trex(tracks[i]);\n    }\n\n    return MP4.box.apply(null, [MP4.types.mvex, ...boxes]);\n  }\n\n  static mvhd(timescale, duration) {\n    duration *= timescale;\n    const upperWordDuration = Math.floor(duration / (UINT32_MAX + 1));\n    const lowerWordDuration = Math.floor(duration % (UINT32_MAX + 1));\n    const bytes = new Uint8Array([\n      0x01, // version 1\n      0x00,\n      0x00,\n      0x00, // flags\n      0x00,\n      0x00,\n      0x00,\n      0x00,\n      0x00,\n      0x00,\n      0x00,\n      0x02, // creation_time\n      0x00,\n      0x00,\n      0x00,\n      0x00,\n      0x00,\n      0x00,\n      0x00,\n      0x03, // modification_time\n      (timescale >> 24) & 0xff,\n      (timescale >> 16) & 0xff,\n      (timescale >> 8) & 0xff,\n      timescale & 0xff, // timescale\n      upperWordDuration >> 24,\n      (upperWordDuration >> 16) & 0xff,\n      (upperWordDuration >> 8) & 0xff,\n      upperWordDuration & 0xff,\n      lowerWordDuration >> 24,\n      (lowerWordDuration >> 16) & 0xff,\n      (lowerWordDuration >> 8) & 0xff,\n      lowerWordDuration & 0xff,\n      0x00,\n      0x01,\n      0x00,\n      0x00, // 1.0 rate\n      0x01,\n      0x00, // 1.0 volume\n      0x00,\n      0x00, // reserved\n      0x00,\n      0x00,\n      0x00,\n      0x00, // reserved\n      0x00,\n      0x00,\n      0x00,\n      0x00, // reserved\n      0x00,\n      0x01,\n      0x00,\n      0x00,\n      0x00,\n      0x00,\n      0x00,\n      0x00,\n      0x00,\n      0x00,\n      0x00,\n      0x00,\n      0x00,\n      0x00,\n      0x00,\n      0x00,\n      0x00,\n      0x01,\n      0x00,\n      0x00,\n      0x00,\n      0x00,\n      0x00,\n      0x00,\n      0x00,\n      0x00,\n      0x00,\n      0x00,\n      0x00,\n      0x00,\n      0x00,\n      0x00,\n      0x40,\n      0x00,\n      0x00,\n      0x00, // transformation: unity matrix\n      0x00,\n      0x00,\n      0x00,\n      0x00,\n      0x00,\n      0x00,\n      0x00,\n      0x00,\n      0x00,\n      0x00,\n      0x00,\n      0x00,\n      0x00,\n      0x00,\n      0x00,\n      0x00,\n      0x00,\n      0x00,\n      0x00,\n      0x00,\n      0x00,\n      0x00,\n      0x00,\n      0x00, // pre_defined\n      0xff,\n      0xff,\n      0xff,\n      0xff, // next_track_ID\n    ]);\n    return MP4.box(MP4.types.mvhd, bytes);\n  }\n\n  static sdtp(track) {\n    const samples = track.samples || [];\n    const bytes = new Uint8Array(4 + samples.length);\n    let i;\n    let flags;\n    // leave the full box header (4 bytes) all zero\n    // write the sample table\n    for (i = 0; i < samples.length; i++) {\n      flags = samples[i].flags;\n      bytes[i + 4] =\n        (flags.dependsOn << 4) |\n        (flags.isDependedOn << 2) |\n        flags.hasRedundancy;\n    }\n\n    return MP4.box(MP4.types.sdtp, bytes);\n  }\n\n  static stbl(track) {\n    return MP4.box(\n      MP4.types.stbl,\n      MP4.stsd(track),\n      MP4.box(MP4.types.stts, MP4.STTS),\n      MP4.box(MP4.types.stsc, MP4.STSC),\n      MP4.box(MP4.types.stsz, MP4.STSZ),\n      MP4.box(MP4.types.stco, MP4.STCO)\n    );\n  }\n\n  static avc1(track) {\n    let sps: number[] = [];\n    let pps: number[] = [];\n    let i;\n    let data;\n    let len;\n    // assemble the SPSs\n\n    for (i = 0; i < track.sps.length; i++) {\n      data = track.sps[i];\n      len = data.byteLength;\n      sps.push((len >>> 8) & 0xff);\n      sps.push(len & 0xff);\n\n      // SPS\n      sps = sps.concat(Array.prototype.slice.call(data));\n    }\n\n    // assemble the PPSs\n    for (i = 0; i < track.pps.length; i++) {\n      data = track.pps[i];\n      len = data.byteLength;\n      pps.push((len >>> 8) & 0xff);\n      pps.push(len & 0xff);\n\n      pps = pps.concat(Array.prototype.slice.call(data));\n    }\n\n    const avcc = MP4.box(\n      MP4.types.avcC,\n      new Uint8Array(\n        [\n          0x01, // version\n          sps[3], // profile\n          sps[4], // profile compat\n          sps[5], // level\n          0xfc | 3, // lengthSizeMinusOne, hard-coded to 4 bytes\n          0xe0 | track.sps.length, // 3bit reserved (111) + numOfSequenceParameterSets\n        ]\n          .concat(sps)\n          .concat([\n            track.pps.length, // numOfPictureParameterSets\n          ])\n          .concat(pps)\n      )\n    ); // \"PPS\"\n    const width = track.width;\n    const height = track.height;\n    const hSpacing = track.pixelRatio[0];\n    const vSpacing = track.pixelRatio[1];\n\n    return MP4.box(\n      MP4.types.avc1,\n      new Uint8Array([\n        0x00,\n        0x00,\n        0x00, // reserved\n        0x00,\n        0x00,\n        0x00, // reserved\n        0x00,\n        0x01, // data_reference_index\n        0x00,\n        0x00, // pre_defined\n        0x00,\n        0x00, // reserved\n        0x00,\n        0x00,\n        0x00,\n        0x00,\n        0x00,\n        0x00,\n        0x00,\n        0x00,\n        0x00,\n        0x00,\n        0x00,\n        0x00, // pre_defined\n        (width >> 8) & 0xff,\n        width & 0xff, // width\n        (height >> 8) & 0xff,\n        height & 0xff, // height\n        0x00,\n        0x48,\n        0x00,\n        0x00, // horizresolution\n        0x00,\n        0x48,\n        0x00,\n        0x00, // vertresolution\n        0x00,\n        0x00,\n        0x00,\n        0x00, // reserved\n        0x00,\n        0x01, // frame_count\n        0x12,\n        0x64,\n        0x61,\n        0x69,\n        0x6c, // dailymotion/hls.js\n        0x79,\n        0x6d,\n        0x6f,\n        0x74,\n        0x69,\n        0x6f,\n        0x6e,\n        0x2f,\n        0x68,\n        0x6c,\n        0x73,\n        0x2e,\n        0x6a,\n        0x73,\n        0x00,\n        0x00,\n        0x00,\n        0x00,\n        0x00,\n        0x00,\n        0x00,\n        0x00,\n        0x00,\n        0x00,\n        0x00,\n        0x00,\n        0x00, // compressorname\n        0x00,\n        0x18, // depth = 24\n        0x11,\n        0x11,\n      ]), // pre_defined = -1\n      avcc,\n      MP4.box(\n        MP4.types.btrt,\n        new Uint8Array([\n          0x00,\n          0x1c,\n          0x9c,\n          0x80, // bufferSizeDB\n          0x00,\n          0x2d,\n          0xc6,\n          0xc0, // maxBitrate\n          0x00,\n          0x2d,\n          0xc6,\n          0xc0,\n        ])\n      ), // avgBitrate\n      MP4.box(\n        MP4.types.pasp,\n        new Uint8Array([\n          hSpacing >> 24, // hSpacing\n          (hSpacing >> 16) & 0xff,\n          (hSpacing >> 8) & 0xff,\n          hSpacing & 0xff,\n          vSpacing >> 24, // vSpacing\n          (vSpacing >> 16) & 0xff,\n          (vSpacing >> 8) & 0xff,\n          vSpacing & 0xff,\n        ])\n      )\n    );\n  }\n\n  static esds(track) {\n    const configlen = track.config.length;\n    return new Uint8Array(\n      [\n        0x00, // version 0\n        0x00,\n        0x00,\n        0x00, // flags\n\n        0x03, // descriptor_type\n        0x17 + configlen, // length\n        0x00,\n        0x01, // es_id\n        0x00, // stream_priority\n\n        0x04, // descriptor_type\n        0x0f + configlen, // length\n        0x40, // codec : mpeg4_audio\n        0x15, // stream_type\n        0x00,\n        0x00,\n        0x00, // buffer_size\n        0x00,\n        0x00,\n        0x00,\n        0x00, // maxBitrate\n        0x00,\n        0x00,\n        0x00,\n        0x00, // avgBitrate\n\n        0x05, // descriptor_type\n      ]\n        .concat([configlen])\n        .concat(track.config)\n        .concat([0x06, 0x01, 0x02])\n    ); // GASpecificConfig)); // length + audio config descriptor\n  }\n\n  static mp4a(track) {\n    const samplerate = track.samplerate;\n    return MP4.box(\n      MP4.types.mp4a,\n      new Uint8Array([\n        0x00,\n        0x00,\n        0x00, // reserved\n        0x00,\n        0x00,\n        0x00, // reserved\n        0x00,\n        0x01, // data_reference_index\n        0x00,\n        0x00,\n        0x00,\n        0x00,\n        0x00,\n        0x00,\n        0x00,\n        0x00, // reserved\n        0x00,\n        track.channelCount, // channelcount\n        0x00,\n        0x10, // sampleSize:16bits\n        0x00,\n        0x00,\n        0x00,\n        0x00, // reserved2\n        (samplerate >> 8) & 0xff,\n        samplerate & 0xff, //\n        0x00,\n        0x00,\n      ]),\n      MP4.box(MP4.types.esds, MP4.esds(track))\n    );\n  }\n\n  static mp3(track) {\n    const samplerate = track.samplerate;\n    return MP4.box(\n      MP4.types['.mp3'],\n      new Uint8Array([\n        0x00,\n        0x00,\n        0x00, // reserved\n        0x00,\n        0x00,\n        0x00, // reserved\n        0x00,\n        0x01, // data_reference_index\n        0x00,\n        0x00,\n        0x00,\n        0x00,\n        0x00,\n        0x00,\n        0x00,\n        0x00, // reserved\n        0x00,\n        track.channelCount, // channelcount\n        0x00,\n        0x10, // sampleSize:16bits\n        0x00,\n        0x00,\n        0x00,\n        0x00, // reserved2\n        (samplerate >> 8) & 0xff,\n        samplerate & 0xff, //\n        0x00,\n        0x00,\n      ])\n    );\n  }\n\n  static stsd(track) {\n    if (track.type === 'audio') {\n      if (track.segmentCodec === 'mp3' && track.codec === 'mp3') {\n        return MP4.box(MP4.types.stsd, MP4.STSD, MP4.mp3(track));\n      }\n\n      return MP4.box(MP4.types.stsd, MP4.STSD, MP4.mp4a(track));\n    } else {\n      return MP4.box(MP4.types.stsd, MP4.STSD, MP4.avc1(track));\n    }\n  }\n\n  static tkhd(track) {\n    const id = track.id;\n    const duration = track.duration * track.timescale;\n    const width = track.width;\n    const height = track.height;\n    const upperWordDuration = Math.floor(duration / (UINT32_MAX + 1));\n    const lowerWordDuration = Math.floor(duration % (UINT32_MAX + 1));\n    return MP4.box(\n      MP4.types.tkhd,\n      new Uint8Array([\n        0x01, // version 1\n        0x00,\n        0x00,\n        0x07, // flags\n        0x00,\n        0x00,\n        0x00,\n        0x00,\n        0x00,\n        0x00,\n        0x00,\n        0x02, // creation_time\n        0x00,\n        0x00,\n        0x00,\n        0x00,\n        0x00,\n        0x00,\n        0x00,\n        0x03, // modification_time\n        (id >> 24) & 0xff,\n        (id >> 16) & 0xff,\n        (id >> 8) & 0xff,\n        id & 0xff, // track_ID\n        0x00,\n        0x00,\n        0x00,\n        0x00, // reserved\n        upperWordDuration >> 24,\n        (upperWordDuration >> 16) & 0xff,\n        (upperWordDuration >> 8) & 0xff,\n        upperWordDuration & 0xff,\n        lowerWordDuration >> 24,\n        (lowerWordDuration >> 16) & 0xff,\n        (lowerWordDuration >> 8) & 0xff,\n        lowerWordDuration & 0xff,\n        0x00,\n        0x00,\n        0x00,\n        0x00,\n        0x00,\n        0x00,\n        0x00,\n        0x00, // reserved\n        0x00,\n        0x00, // layer\n        0x00,\n        0x00, // alternate_group\n        0x00,\n        0x00, // non-audio track volume\n        0x00,\n        0x00, // reserved\n        0x00,\n        0x01,\n        0x00,\n        0x00,\n        0x00,\n        0x00,\n        0x00,\n        0x00,\n        0x00,\n        0x00,\n        0x00,\n        0x00,\n        0x00,\n        0x00,\n        0x00,\n        0x00,\n        0x00,\n        0x01,\n        0x00,\n        0x00,\n        0x00,\n        0x00,\n        0x00,\n        0x00,\n        0x00,\n        0x00,\n        0x00,\n        0x00,\n        0x00,\n        0x00,\n        0x00,\n        0x00,\n        0x40,\n        0x00,\n        0x00,\n        0x00, // transformation: unity matrix\n        (width >> 8) & 0xff,\n        width & 0xff,\n        0x00,\n        0x00, // width\n        (height >> 8) & 0xff,\n        height & 0xff,\n        0x00,\n        0x00, // height\n      ])\n    );\n  }\n\n  static traf(track, baseMediaDecodeTime) {\n    const sampleDependencyTable = MP4.sdtp(track);\n    const id = track.id;\n    const upperWordBaseMediaDecodeTime = Math.floor(\n      baseMediaDecodeTime / (UINT32_MAX + 1)\n    );\n    const lowerWordBaseMediaDecodeTime = Math.floor(\n      baseMediaDecodeTime % (UINT32_MAX + 1)\n    );\n    return MP4.box(\n      MP4.types.traf,\n      MP4.box(\n        MP4.types.tfhd,\n        new Uint8Array([\n          0x00, // version 0\n          0x00,\n          0x00,\n          0x00, // flags\n          id >> 24,\n          (id >> 16) & 0xff,\n          (id >> 8) & 0xff,\n          id & 0xff, // track_ID\n        ])\n      ),\n      MP4.box(\n        MP4.types.tfdt,\n        new Uint8Array([\n          0x01, // version 1\n          0x00,\n          0x00,\n          0x00, // flags\n          upperWordBaseMediaDecodeTime >> 24,\n          (upperWordBaseMediaDecodeTime >> 16) & 0xff,\n          (upperWordBaseMediaDecodeTime >> 8) & 0xff,\n          upperWordBaseMediaDecodeTime & 0xff,\n          lowerWordBaseMediaDecodeTime >> 24,\n          (lowerWordBaseMediaDecodeTime >> 16) & 0xff,\n          (lowerWordBaseMediaDecodeTime >> 8) & 0xff,\n          lowerWordBaseMediaDecodeTime & 0xff,\n        ])\n      ),\n      MP4.trun(\n        track,\n        sampleDependencyTable.length +\n          16 + // tfhd\n          20 + // tfdt\n          8 + // traf header\n          16 + // mfhd\n          8 + // moof header\n          8\n      ), // mdat header\n      sampleDependencyTable\n    );\n  }\n\n  /**\n   * Generate a track box.\n   * @param track a track definition\n   */\n  static trak(track) {\n    track.duration = track.duration || 0xffffffff;\n    return MP4.box(MP4.types.trak, MP4.tkhd(track), MP4.mdia(track));\n  }\n\n  static trex(track) {\n    const id = track.id;\n    return MP4.box(\n      MP4.types.trex,\n      new Uint8Array([\n        0x00, // version 0\n        0x00,\n        0x00,\n        0x00, // flags\n        id >> 24,\n        (id >> 16) & 0xff,\n        (id >> 8) & 0xff,\n        id & 0xff, // track_ID\n        0x00,\n        0x00,\n        0x00,\n        0x01, // default_sample_description_index\n        0x00,\n        0x00,\n        0x00,\n        0x00, // default_sample_duration\n        0x00,\n        0x00,\n        0x00,\n        0x00, // default_sample_size\n        0x00,\n        0x01,\n        0x00,\n        0x01, // default_sample_flags\n      ])\n    );\n  }\n\n  static trun(track, offset) {\n    const samples = track.samples || [];\n    const len = samples.length;\n    const arraylen = 12 + 16 * len;\n    const array = new Uint8Array(arraylen);\n    let i;\n    let sample;\n    let duration;\n    let size;\n    let flags;\n    let cts;\n    offset += 8 + arraylen;\n    array.set(\n      [\n        track.type === 'video' ? 0x01 : 0x00, // version 1 for video with signed-int sample_composition_time_offset\n        0x00,\n        0x0f,\n        0x01, // flags\n        (len >>> 24) & 0xff,\n        (len >>> 16) & 0xff,\n        (len >>> 8) & 0xff,\n        len & 0xff, // sample_count\n        (offset >>> 24) & 0xff,\n        (offset >>> 16) & 0xff,\n        (offset >>> 8) & 0xff,\n        offset & 0xff, // data_offset\n      ],\n      0\n    );\n    for (i = 0; i < len; i++) {\n      sample = samples[i];\n      duration = sample.duration;\n      size = sample.size;\n      flags = sample.flags;\n      cts = sample.cts;\n      array.set(\n        [\n          (duration >>> 24) & 0xff,\n          (duration >>> 16) & 0xff,\n          (duration >>> 8) & 0xff,\n          duration & 0xff, // sample_duration\n          (size >>> 24) & 0xff,\n          (size >>> 16) & 0xff,\n          (size >>> 8) & 0xff,\n          size & 0xff, // sample_size\n          (flags.isLeading << 2) | flags.dependsOn,\n          (flags.isDependedOn << 6) |\n            (flags.hasRedundancy << 4) |\n            (flags.paddingValue << 1) |\n            flags.isNonSync,\n          flags.degradPrio & (0xf0 << 8),\n          flags.degradPrio & 0x0f, // sample_flags\n          (cts >>> 24) & 0xff,\n          (cts >>> 16) & 0xff,\n          (cts >>> 8) & 0xff,\n          cts & 0xff, // sample_composition_time_offset\n        ],\n        12 + 16 * i\n      );\n    }\n    return MP4.box(MP4.types.trun, array);\n  }\n\n  static initSegment(tracks) {\n    if (!MP4.types) {\n      MP4.init();\n    }\n\n    const movie = MP4.moov(tracks);\n    const result = new Uint8Array(MP4.FTYP.byteLength + movie.byteLength);\n    result.set(MP4.FTYP);\n    result.set(movie, MP4.FTYP.byteLength);\n    return result;\n  }\n}\n\nexport default MP4;\n","import {\n  WorkerContext,\n  hasUMDWorker,\n  injectWorker,\n  loadWorker,\n} from './inject-worker';\nimport { Events } from '../events';\nimport Transmuxer, {\n  TransmuxConfig,\n  TransmuxState,\n  isPromise,\n} from '../demux/transmuxer';\nimport { logger } from '../utils/logger';\nimport { ErrorTypes, ErrorDetails } from '../errors';\nimport { getMediaSource } from '../utils/mediasource-helper';\nimport { EventEmitter } from 'eventemitter3';\nimport { Fragment, Part } from '../loader/fragment';\nimport type { ChunkMetadata, TransmuxerResult } from '../types/transmuxer';\nimport type Hls from '../hls';\nimport type { HlsEventEmitter } from '../events';\nimport type { PlaylistLevelType } from '../types/loader';\nimport type { TypeSupported } from './tsdemuxer';\nimport type { RationalTimestamp } from '../utils/timescale-conversion';\n\nconst MediaSource = getMediaSource() || { isTypeSupported: () => false };\n\nexport default class TransmuxerInterface {\n  public error: Error | null = null;\n  private hls: Hls;\n  private id: PlaylistLevelType;\n  private observer: HlsEventEmitter;\n  private frag: Fragment | null = null;\n  private part: Part | null = null;\n  private useWorker: boolean;\n  private workerContext: WorkerContext | null = null;\n  private onwmsg?: Function;\n  private transmuxer: Transmuxer | null = null;\n  private onTransmuxComplete: (transmuxResult: TransmuxerResult) => void;\n  private onFlush: (chunkMeta: ChunkMetadata) => void;\n\n  constructor(\n    hls: Hls,\n    id: PlaylistLevelType,\n    onTransmuxComplete: (transmuxResult: TransmuxerResult) => void,\n    onFlush: (chunkMeta: ChunkMetadata) => void\n  ) {\n    const config = hls.config;\n    this.hls = hls;\n    this.id = id;\n    this.useWorker = !!config.enableWorker;\n    this.onTransmuxComplete = onTransmuxComplete;\n    this.onFlush = onFlush;\n\n    const forwardMessage = (ev, data) => {\n      data = data || {};\n      data.frag = this.frag;\n      data.id = this.id;\n      if (ev === Events.ERROR) {\n        this.error = data.error;\n      }\n      this.hls.trigger(ev, data);\n    };\n\n    // forward events to main thread\n    this.observer = new EventEmitter() as HlsEventEmitter;\n    this.observer.on(Events.FRAG_DECRYPTED, forwardMessage);\n    this.observer.on(Events.ERROR, forwardMessage);\n\n    const typeSupported: TypeSupported = {\n      mp4: MediaSource.isTypeSupported('video/mp4'),\n      mpeg: MediaSource.isTypeSupported('audio/mpeg'),\n      mp3: MediaSource.isTypeSupported('audio/mp4; codecs=\"mp3\"'),\n    };\n    // navigator.vendor is not always available in Web Worker\n    // refer to https://developer.mozilla.org/en-US/docs/Web/API/WorkerGlobalScope/navigator\n    const vendor = navigator.vendor;\n    if (this.useWorker && typeof Worker !== 'undefined') {\n      const canCreateWorker = config.workerPath || hasUMDWorker();\n      if (canCreateWorker) {\n        try {\n          if (config.workerPath) {\n            logger.log(`loading Web Worker ${config.workerPath} for \"${id}\"`);\n            this.workerContext = loadWorker(config.workerPath);\n          } else {\n            logger.log(`injecting Web Worker for \"${id}\"`);\n            this.workerContext = injectWorker();\n          }\n          this.onwmsg = (ev: any) => this.onWorkerMessage(ev);\n          const { worker } = this.workerContext;\n          worker.addEventListener('message', this.onwmsg as any);\n          worker.onerror = (event) => {\n            const error = new Error(\n              `${event.message}  (${event.filename}:${event.lineno})`\n            );\n            config.enableWorker = false;\n            logger.warn(`Error in \"${id}\" Web Worker, fallback to inline`);\n            this.hls.trigger(Events.ERROR, {\n              type: ErrorTypes.OTHER_ERROR,\n              details: ErrorDetails.INTERNAL_EXCEPTION,\n              fatal: false,\n              event: 'demuxerWorker',\n              error,\n            });\n          };\n          worker.postMessage({\n            cmd: 'init',\n            typeSupported: typeSupported,\n            vendor: vendor,\n            id: id,\n            config: JSON.stringify(config),\n          });\n        } catch (err) {\n          logger.warn(\n            `Error setting up \"${id}\" Web Worker, fallback to inline`,\n            err\n          );\n          this.resetWorker();\n          this.error = null;\n          this.transmuxer = new Transmuxer(\n            this.observer,\n            typeSupported,\n            config,\n            vendor,\n            id\n          );\n        }\n        return;\n      }\n    }\n\n    this.transmuxer = new Transmuxer(\n      this.observer,\n      typeSupported,\n      config,\n      vendor,\n      id\n    );\n  }\n\n  resetWorker(): void {\n    if (this.workerContext) {\n      const { worker, objectURL } = this.workerContext;\n      if (objectURL) {\n        // revoke the Object URL that was used to create transmuxer worker, so as not to leak it\n        self.URL.revokeObjectURL(objectURL);\n      }\n      worker.removeEventListener('message', this.onwmsg as any);\n      worker.onerror = null;\n      worker.terminate();\n      this.workerContext = null;\n    }\n  }\n\n  destroy(): void {\n    if (this.workerContext) {\n      this.resetWorker();\n      this.onwmsg = undefined;\n    } else {\n      const transmuxer = this.transmuxer;\n      if (transmuxer) {\n        transmuxer.destroy();\n        this.transmuxer = null;\n      }\n    }\n    const observer = this.observer;\n    if (observer) {\n      observer.removeAllListeners();\n    }\n    this.frag = null;\n    // @ts-ignore\n    this.observer = null;\n    // @ts-ignore\n    this.hls = null;\n  }\n\n  push(\n    data: ArrayBuffer,\n    initSegmentData: Uint8Array | undefined,\n    audioCodec: string | undefined,\n    videoCodec: string | undefined,\n    frag: Fragment,\n    part: Part | null,\n    duration: number,\n    accurateTimeOffset: boolean,\n    chunkMeta: ChunkMetadata,\n    defaultInitPTS?: RationalTimestamp\n  ): void {\n    chunkMeta.transmuxing.start = self.performance.now();\n    const { transmuxer } = this;\n    const timeOffset = part ? part.start : frag.start;\n    // TODO: push \"clear-lead\" decrypt data for unencrypted fragments in streams with encrypted ones\n    const decryptdata = frag.decryptdata;\n    const lastFrag = this.frag;\n\n    const discontinuity = !(lastFrag && frag.cc === lastFrag.cc);\n    const trackSwitch = !(lastFrag && chunkMeta.level === lastFrag.level);\n    const snDiff = lastFrag ? chunkMeta.sn - (lastFrag.sn as number) : -1;\n    const partDiff = this.part ? chunkMeta.part - this.part.index : -1;\n    const progressive =\n      snDiff === 0 &&\n      chunkMeta.id > 1 &&\n      chunkMeta.id === lastFrag?.stats.chunkCount;\n    const contiguous =\n      !trackSwitch &&\n      (snDiff === 1 ||\n        (snDiff === 0 && (partDiff === 1 || (progressive && partDiff <= 0))));\n    const now = self.performance.now();\n\n    if (trackSwitch || snDiff || frag.stats.parsing.start === 0) {\n      frag.stats.parsing.start = now;\n    }\n    if (part && (partDiff || !contiguous)) {\n      part.stats.parsing.start = now;\n    }\n    const initSegmentChange = !(\n      lastFrag && frag.initSegment?.url === lastFrag.initSegment?.url\n    );\n    const state = new TransmuxState(\n      discontinuity,\n      contiguous,\n      accurateTimeOffset,\n      trackSwitch,\n      timeOffset,\n      initSegmentChange\n    );\n    if (!contiguous || discontinuity || initSegmentChange) {\n      logger.log(`[transmuxer-interface, ${frag.type}]: Starting new transmux session for sn: ${chunkMeta.sn} p: ${chunkMeta.part} level: ${chunkMeta.level} id: ${chunkMeta.id}\n        discontinuity: ${discontinuity}\n        trackSwitch: ${trackSwitch}\n        contiguous: ${contiguous}\n        accurateTimeOffset: ${accurateTimeOffset}\n        timeOffset: ${timeOffset}\n        initSegmentChange: ${initSegmentChange}`);\n      const config = new TransmuxConfig(\n        audioCodec,\n        videoCodec,\n        initSegmentData,\n        duration,\n        defaultInitPTS\n      );\n      this.configureTransmuxer(config);\n    }\n\n    this.frag = frag;\n    this.part = part;\n\n    // Frags with sn of 'initSegment' are not transmuxed\n    if (this.workerContext) {\n      // post fragment payload as transferable objects for ArrayBuffer (no copy)\n      this.workerContext.worker.postMessage(\n        {\n          cmd: 'demux',\n          data,\n          decryptdata,\n          chunkMeta,\n          state,\n        },\n        data instanceof ArrayBuffer ? [data] : []\n      );\n    } else if (transmuxer) {\n      const transmuxResult = transmuxer.push(\n        data,\n        decryptdata,\n        chunkMeta,\n        state\n      );\n      if (isPromise(transmuxResult)) {\n        transmuxer.async = true;\n        transmuxResult\n          .then((data) => {\n            this.handleTransmuxComplete(data);\n          })\n          .catch((error) => {\n            this.transmuxerError(\n              error,\n              chunkMeta,\n              'transmuxer-interface push error'\n            );\n          });\n      } else {\n        transmuxer.async = false;\n        this.handleTransmuxComplete(transmuxResult as TransmuxerResult);\n      }\n    }\n  }\n\n  flush(chunkMeta: ChunkMetadata) {\n    chunkMeta.transmuxing.start = self.performance.now();\n    const { transmuxer } = this;\n    if (this.workerContext) {\n      1;\n      this.workerContext.worker.postMessage({\n        cmd: 'flush',\n        chunkMeta,\n      });\n    } else if (transmuxer) {\n      let transmuxResult = transmuxer.flush(chunkMeta);\n      const asyncFlush = isPromise(transmuxResult);\n      if (asyncFlush || transmuxer.async) {\n        if (!isPromise(transmuxResult)) {\n          transmuxResult = Promise.resolve(transmuxResult);\n        }\n        transmuxResult\n          .then((data) => {\n            this.handleFlushResult(data, chunkMeta);\n          })\n          .catch((error) => {\n            this.transmuxerError(\n              error,\n              chunkMeta,\n              'transmuxer-interface flush error'\n            );\n          });\n      } else {\n        this.handleFlushResult(\n          transmuxResult as Array<TransmuxerResult>,\n          chunkMeta\n        );\n      }\n    }\n  }\n\n  private transmuxerError(\n    error: Error,\n    chunkMeta: ChunkMetadata,\n    reason: string\n  ) {\n    if (!this.hls) {\n      return;\n    }\n    this.error = error;\n    this.hls.trigger(Events.ERROR, {\n      type: ErrorTypes.MEDIA_ERROR,\n      details: ErrorDetails.FRAG_PARSING_ERROR,\n      chunkMeta,\n      fatal: false,\n      error,\n      err: error,\n      reason,\n    });\n  }\n\n  private handleFlushResult(\n    results: Array<TransmuxerResult>,\n    chunkMeta: ChunkMetadata\n  ) {\n    results.forEach((result) => {\n      this.handleTransmuxComplete(result);\n    });\n    this.onFlush(chunkMeta);\n  }\n\n  private onWorkerMessage(ev: any): void {\n    const data = ev.data;\n    const hls = this.hls;\n    switch (data.event) {\n      case 'init': {\n        const objectURL = this.workerContext?.objectURL;\n        if (objectURL) {\n          // revoke the Object URL that was used to create transmuxer worker, so as not to leak it\n          self.URL.revokeObjectURL(objectURL);\n        }\n        break;\n      }\n\n      case 'transmuxComplete': {\n        this.handleTransmuxComplete(data.data);\n        break;\n      }\n\n      case 'flush': {\n        this.onFlush(data.data);\n        break;\n      }\n\n      // pass logs from the worker thread to the main logger\n      case 'workerLog':\n        if (logger[data.data.logType]) {\n          logger[data.data.logType](data.data.message);\n        }\n        break;\n\n      default: {\n        data.data = data.data || {};\n        data.data.frag = this.frag;\n        data.data.id = this.id;\n        hls.trigger(data.event, data.data);\n        break;\n      }\n    }\n  }\n\n  private configureTransmuxer(config: TransmuxConfig) {\n    const { transmuxer } = this;\n    if (this.workerContext) {\n      this.workerContext.worker.postMessage({\n        cmd: 'configure',\n        config,\n      });\n    } else if (transmuxer) {\n      transmuxer.configure(config);\n    }\n  }\n\n  private handleTransmuxComplete(result: TransmuxerResult) {\n    result.chunkMeta.transmuxing.end = self.performance.now();\n    this.onTransmuxComplete(result);\n  }\n}\n","import type { BufferInfo } from '../utils/buffer-helper';\nimport { BufferHelper } from '../utils/buffer-helper';\nimport { ErrorTypes, ErrorDetails } from '../errors';\nimport { PlaylistLevelType } from '../types/loader';\nimport { Events } from '../events';\nimport { logger } from '../utils/logger';\nimport type Hls from '../hls';\nimport type { HlsConfig } from '../config';\nimport type { Fragment } from '../loader/fragment';\nimport type { FragmentTracker } from './fragment-tracker';\n\nexport const STALL_MINIMUM_DURATION_MS = 250;\nexport const MAX_START_GAP_JUMP = 2.0;\nexport const SKIP_BUFFER_HOLE_STEP_SECONDS = 0.1;\nexport const SKIP_BUFFER_RANGE_START = 0.05;\n\nexport default class GapController {\n  private config: HlsConfig;\n  private media: HTMLMediaElement | null = null;\n  private fragmentTracker: FragmentTracker;\n  private hls: Hls;\n  private nudgeRetry: number = 0;\n  private stallReported: boolean = false;\n  private stalled: number | null = null;\n  private moved: boolean = false;\n  private seeking: boolean = false;\n\n  constructor(config, media, fragmentTracker, hls) {\n    this.config = config;\n    this.media = media;\n    this.fragmentTracker = fragmentTracker;\n    this.hls = hls;\n  }\n\n  public destroy() {\n    this.media = null;\n    // @ts-ignore\n    this.hls = this.fragmentTracker = null;\n  }\n\n  /**\n   * Checks if the playhead is stuck within a gap, and if so, attempts to free it.\n   * A gap is an unbuffered range between two buffered ranges (or the start and the first buffered range).\n   *\n   * @param lastCurrentTime - Previously read playhead position\n   */\n  public poll(lastCurrentTime: number, activeFrag: Fragment | null) {\n    const { config, media, stalled } = this;\n    if (media === null) {\n      return;\n    }\n    const { currentTime, seeking } = media;\n    const seeked = this.seeking && !seeking;\n    const beginSeek = !this.seeking && seeking;\n\n    this.seeking = seeking;\n\n    // The playhead is moving, no-op\n    if (currentTime !== lastCurrentTime) {\n      this.moved = true;\n      if (stalled !== null) {\n        // The playhead is now moving, but was previously stalled\n        if (this.stallReported) {\n          const stalledDuration = self.performance.now() - stalled;\n          logger.warn(\n            `playback not stuck anymore @${currentTime}, after ${Math.round(\n              stalledDuration\n            )}ms`\n          );\n          this.stallReported = false;\n        }\n        this.stalled = null;\n        this.nudgeRetry = 0;\n      }\n      return;\n    }\n\n    // Clear stalled state when beginning or finishing seeking so that we don't report stalls coming out of a seek\n    if (beginSeek || seeked) {\n      this.stalled = null;\n      return;\n    }\n\n    // The playhead should not be moving\n    if (\n      (media.paused && !seeking) ||\n      media.ended ||\n      media.playbackRate === 0 ||\n      !BufferHelper.getBuffered(media).length\n    ) {\n      return;\n    }\n\n    const bufferInfo = BufferHelper.bufferInfo(media, currentTime, 0);\n    const isBuffered = bufferInfo.len > 0;\n    const nextStart = bufferInfo.nextStart || 0;\n\n    // There is no playable buffer (seeked, waiting for buffer)\n    if (!isBuffered && !nextStart) {\n      return;\n    }\n\n    if (seeking) {\n      // Waiting for seeking in a buffered range to complete\n      const hasEnoughBuffer = bufferInfo.len > MAX_START_GAP_JUMP;\n      // Next buffered range is too far ahead to jump to while still seeking\n      const noBufferGap =\n        !nextStart ||\n        (activeFrag && activeFrag.start <= currentTime) ||\n        (nextStart - currentTime > MAX_START_GAP_JUMP &&\n          !this.fragmentTracker.getPartialFragment(currentTime));\n      if (hasEnoughBuffer || noBufferGap) {\n        return;\n      }\n      // Reset moved state when seeking to a point in or before a gap\n      this.moved = false;\n    }\n\n    // Skip start gaps if we haven't played, but the last poll detected the start of a stall\n    // The addition poll gives the browser a chance to jump the gap for us\n    if (!this.moved && this.stalled !== null) {\n      // Jump start gaps within jump threshold\n      const startJump =\n        Math.max(nextStart, bufferInfo.start || 0) - currentTime;\n\n      // When joining a live stream with audio tracks, account for live playlist window sliding by allowing\n      // a larger jump over start gaps caused by the audio-stream-controller buffering a start fragment\n      // that begins over 1 target duration after the video start position.\n      const level = this.hls.levels\n        ? this.hls.levels[this.hls.currentLevel]\n        : null;\n      const isLive = level?.details?.live;\n      const maxStartGapJump = isLive\n        ? level!.details!.targetduration * 2\n        : MAX_START_GAP_JUMP;\n      const partialOrGap = this.fragmentTracker.getPartialFragment(currentTime);\n      if (startJump > 0 && (startJump <= maxStartGapJump || partialOrGap)) {\n        this._trySkipBufferHole(partialOrGap);\n        return;\n      }\n    }\n\n    // Start tracking stall time\n    const tnow = self.performance.now();\n    if (stalled === null) {\n      this.stalled = tnow;\n      return;\n    }\n\n    const stalledDuration = tnow - stalled;\n    if (!seeking && stalledDuration >= STALL_MINIMUM_DURATION_MS) {\n      // Report stalling after trying to fix\n      this._reportStall(bufferInfo);\n      if (!this.media) {\n        return;\n      }\n    }\n\n    const bufferedWithHoles = BufferHelper.bufferInfo(\n      media,\n      currentTime,\n      config.maxBufferHole\n    );\n    this._tryFixBufferStall(bufferedWithHoles, stalledDuration);\n  }\n\n  /**\n   * Detects and attempts to fix known buffer stalling issues.\n   * @param bufferInfo - The properties of the current buffer.\n   * @param stalledDurationMs - The amount of time Hls.js has been stalling for.\n   * @private\n   */\n  private _tryFixBufferStall(\n    bufferInfo: BufferInfo,\n    stalledDurationMs: number\n  ) {\n    const { config, fragmentTracker, media } = this;\n    if (media === null) {\n      return;\n    }\n    const currentTime = media.currentTime;\n\n    const partial = fragmentTracker.getPartialFragment(currentTime);\n    if (partial) {\n      // Try to skip over the buffer hole caused by a partial fragment\n      // This method isn't limited by the size of the gap between buffered ranges\n      const targetTime = this._trySkipBufferHole(partial);\n      // we return here in this case, meaning\n      // the branch below only executes when we haven't seeked to a new position\n      if (targetTime || !this.media) {\n        return;\n      }\n    }\n\n    // if we haven't had to skip over a buffer hole of a partial fragment\n    // we may just have to \"nudge\" the playlist as the browser decoding/rendering engine\n    // needs to cross some sort of threshold covering all source-buffers content\n    // to start playing properly.\n    if (\n      (bufferInfo.len > config.maxBufferHole ||\n        (bufferInfo.nextStart &&\n          bufferInfo.nextStart - currentTime < config.maxBufferHole)) &&\n      stalledDurationMs > config.highBufferWatchdogPeriod * 1000\n    ) {\n      logger.warn('Trying to nudge playhead over buffer-hole');\n      // Try to nudge currentTime over a buffer hole if we've been stalling for the configured amount of seconds\n      // We only try to jump the hole if it's under the configured size\n      // Reset stalled so to rearm watchdog timer\n      this.stalled = null;\n      this._tryNudgeBuffer();\n    }\n  }\n\n  /**\n   * Triggers a BUFFER_STALLED_ERROR event, but only once per stall period.\n   * @param bufferLen - The playhead distance from the end of the current buffer segment.\n   * @private\n   */\n  private _reportStall(bufferInfo: BufferInfo) {\n    const { hls, media, stallReported } = this;\n    if (!stallReported && media) {\n      // Report stalled error once\n      this.stallReported = true;\n      const error = new Error(\n        `Playback stalling at @${\n          media.currentTime\n        } due to low buffer (${JSON.stringify(bufferInfo)})`\n      );\n      logger.warn(error.message);\n      hls.trigger(Events.ERROR, {\n        type: ErrorTypes.MEDIA_ERROR,\n        details: ErrorDetails.BUFFER_STALLED_ERROR,\n        fatal: false,\n        error,\n        buffer: bufferInfo.len,\n      });\n    }\n  }\n\n  /**\n   * Attempts to fix buffer stalls by jumping over known gaps caused by partial fragments\n   * @param partial - The partial fragment found at the current time (where playback is stalling).\n   * @private\n   */\n  private _trySkipBufferHole(partial: Fragment | null): number {\n    const { config, hls, media } = this;\n    if (media === null) {\n      return 0;\n    }\n\n    // Check if currentTime is between unbuffered regions of partial fragments\n    const currentTime = media.currentTime;\n    const bufferInfo = BufferHelper.bufferInfo(media, currentTime, 0);\n    const startTime =\n      currentTime < bufferInfo.start ? bufferInfo.start : bufferInfo.nextStart;\n    if (startTime) {\n      const bufferStarved = bufferInfo.len <= config.maxBufferHole;\n      const waiting =\n        bufferInfo.len > 0 && bufferInfo.len < 1 && media.readyState < 3;\n      const gapLength = startTime - currentTime;\n      if (gapLength > 0 && (bufferStarved || waiting)) {\n        // Only allow large gaps to be skipped if it is a start gap, or all fragments in skip range are partial\n        if (gapLength > config.maxBufferHole) {\n          const { fragmentTracker } = this;\n          let startGap = false;\n          if (currentTime === 0) {\n            const startFrag = fragmentTracker.getAppendedFrag(\n              0,\n              PlaylistLevelType.MAIN\n            );\n            if (startFrag && startTime < startFrag.end) {\n              startGap = true;\n            }\n          }\n          if (!startGap) {\n            const startProvisioned =\n              partial ||\n              fragmentTracker.getAppendedFrag(\n                currentTime,\n                PlaylistLevelType.MAIN\n              );\n            if (startProvisioned) {\n              let moreToLoad = false;\n              let pos = startProvisioned.end;\n              while (pos < startTime) {\n                const provisioned = fragmentTracker.getPartialFragment(pos);\n                if (provisioned) {\n                  pos += provisioned.duration;\n                } else {\n                  moreToLoad = true;\n                  break;\n                }\n              }\n              if (moreToLoad) {\n                return 0;\n              }\n            }\n          }\n        }\n        const targetTime = Math.max(\n          startTime + SKIP_BUFFER_RANGE_START,\n          currentTime + SKIP_BUFFER_HOLE_STEP_SECONDS\n        );\n        logger.warn(\n          `skipping hole, adjusting currentTime from ${currentTime} to ${targetTime}`\n        );\n        this.moved = true;\n        this.stalled = null;\n        media.currentTime = targetTime;\n        if (partial && !partial.gap) {\n          const error = new Error(\n            `fragment loaded with buffer holes, seeking from ${currentTime} to ${targetTime}`\n          );\n          hls.trigger(Events.ERROR, {\n            type: ErrorTypes.MEDIA_ERROR,\n            details: ErrorDetails.BUFFER_SEEK_OVER_HOLE,\n            fatal: false,\n            error,\n            reason: error.message,\n            frag: partial,\n          });\n        }\n        return targetTime;\n      }\n    }\n    return 0;\n  }\n\n  /**\n   * Attempts to fix buffer stalls by advancing the mediaElement's current time by a small amount.\n   * @private\n   */\n  private _tryNudgeBuffer() {\n    const { config, hls, media, nudgeRetry } = this;\n    if (media === null) {\n      return;\n    }\n    const currentTime = media.currentTime;\n    this.nudgeRetry++;\n\n    if (nudgeRetry < config.nudgeMaxRetry) {\n      const targetTime = currentTime + (nudgeRetry + 1) * config.nudgeOffset;\n      // playback stalled in buffered area ... let's nudge currentTime to try to overcome this\n      const error = new Error(\n        `Nudging 'currentTime' from ${currentTime} to ${targetTime}`\n      );\n      logger.warn(error.message);\n      media.currentTime = targetTime;\n      hls.trigger(Events.ERROR, {\n        type: ErrorTypes.MEDIA_ERROR,\n        details: ErrorDetails.BUFFER_NUDGE_ON_STALL,\n        error,\n        fatal: false,\n      });\n    } else {\n      const error = new Error(\n        `Playhead still not moving while enough data buffered @${currentTime} after ${config.nudgeMaxRetry} nudges`\n      );\n      logger.error(error.message);\n      hls.trigger(Events.ERROR, {\n        type: ErrorTypes.MEDIA_ERROR,\n        details: ErrorDetails.BUFFER_STALLED_ERROR,\n        error,\n        fatal: true,\n      });\n    }\n  }\n}\n","import BaseStreamController, { State } from './base-stream-controller';\nimport { changeTypeSupported } from '../is-supported';\nimport { Events } from '../events';\nimport { BufferHelper, BufferInfo } from '../utils/buffer-helper';\nimport { FragmentState } from './fragment-tracker';\nimport { PlaylistContextType, PlaylistLevelType } from '../types/loader';\nimport { ElementaryStreamTypes, Fragment } from '../loader/fragment';\nimport TransmuxerInterface from '../demux/transmuxer-interface';\nimport { ChunkMetadata } from '../types/transmuxer';\nimport GapController from './gap-controller';\nimport { ErrorDetails } from '../errors';\nimport type { NetworkComponentAPI } from '../types/component-api';\nimport type Hls from '../hls';\nimport type { Level } from '../types/level';\nimport type { LevelDetails } from '../loader/level-details';\nimport type { FragmentTracker } from './fragment-tracker';\nimport type KeyLoader from '../loader/key-loader';\nimport type { TransmuxerResult } from '../types/transmuxer';\nimport type { TrackSet } from '../types/track';\nimport type { SourceBufferName } from '../types/buffer';\nimport type {\n  AudioTrackSwitchedData,\n  AudioTrackSwitchingData,\n  BufferCreatedData,\n  BufferEOSData,\n  BufferFlushedData,\n  ErrorData,\n  FragBufferedData,\n  FragLoadedData,\n  FragParsingMetadataData,\n  FragParsingUserdataData,\n  LevelLoadedData,\n  LevelLoadingData,\n  LevelsUpdatedData,\n  ManifestParsedData,\n  MediaAttachedData,\n} from '../types/events';\n\nconst TICK_INTERVAL = 100; // how often to tick in ms\n\nexport default class StreamController\n  extends BaseStreamController\n  implements NetworkComponentAPI\n{\n  private audioCodecSwap: boolean = false;\n  private gapController: GapController | null = null;\n  private level: number = -1;\n  private _forceStartLoad: boolean = false;\n  private altAudio: boolean = false;\n  private audioOnly: boolean = false;\n  private fragPlaying: Fragment | null = null;\n  private onvplaying: EventListener | null = null;\n  private onvseeked: EventListener | null = null;\n  private fragLastKbps: number = 0;\n  private couldBacktrack: boolean = false;\n  private backtrackFragment: Fragment | null = null;\n  private audioCodecSwitch: boolean = false;\n  private videoBuffer: any | null = null;\n\n  constructor(\n    hls: Hls,\n    fragmentTracker: FragmentTracker,\n    keyLoader: KeyLoader\n  ) {\n    super(\n      hls,\n      fragmentTracker,\n      keyLoader,\n      '[stream-controller]',\n      PlaylistLevelType.MAIN\n    );\n    this._registerListeners();\n  }\n\n  private _registerListeners() {\n    const { hls } = this;\n    hls.on(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n    hls.on(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n    hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    hls.on(Events.MANIFEST_PARSED, this.onManifestParsed, this);\n    hls.on(Events.LEVEL_LOADING, this.onLevelLoading, this);\n    hls.on(Events.LEVEL_LOADED, this.onLevelLoaded, this);\n    hls.on(\n      Events.FRAG_LOAD_EMERGENCY_ABORTED,\n      this.onFragLoadEmergencyAborted,\n      this\n    );\n    hls.on(Events.ERROR, this.onError, this);\n    hls.on(Events.AUDIO_TRACK_SWITCHING, this.onAudioTrackSwitching, this);\n    hls.on(Events.AUDIO_TRACK_SWITCHED, this.onAudioTrackSwitched, this);\n    hls.on(Events.BUFFER_CREATED, this.onBufferCreated, this);\n    hls.on(Events.BUFFER_FLUSHED, this.onBufferFlushed, this);\n    hls.on(Events.LEVELS_UPDATED, this.onLevelsUpdated, this);\n    hls.on(Events.FRAG_BUFFERED, this.onFragBuffered, this);\n  }\n\n  protected _unregisterListeners() {\n    const { hls } = this;\n    hls.off(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n    hls.off(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n    hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    hls.off(Events.MANIFEST_PARSED, this.onManifestParsed, this);\n    hls.off(Events.LEVEL_LOADED, this.onLevelLoaded, this);\n    hls.off(\n      Events.FRAG_LOAD_EMERGENCY_ABORTED,\n      this.onFragLoadEmergencyAborted,\n      this\n    );\n    hls.off(Events.ERROR, this.onError, this);\n    hls.off(Events.AUDIO_TRACK_SWITCHING, this.onAudioTrackSwitching, this);\n    hls.off(Events.AUDIO_TRACK_SWITCHED, this.onAudioTrackSwitched, this);\n    hls.off(Events.BUFFER_CREATED, this.onBufferCreated, this);\n    hls.off(Events.BUFFER_FLUSHED, this.onBufferFlushed, this);\n    hls.off(Events.LEVELS_UPDATED, this.onLevelsUpdated, this);\n    hls.off(Events.FRAG_BUFFERED, this.onFragBuffered, this);\n  }\n\n  protected onHandlerDestroying() {\n    this._unregisterListeners();\n    this.onMediaDetaching();\n  }\n\n  public startLoad(startPosition: number): void {\n    if (this.levels) {\n      const { lastCurrentTime, hls } = this;\n      this.stopLoad();\n      this.setInterval(TICK_INTERVAL);\n      this.level = -1;\n      if (!this.startFragRequested) {\n        // determine load level\n        let startLevel = hls.startLevel;\n        if (startLevel === -1) {\n          if (hls.config.testBandwidth && this.levels.length > 1) {\n            // -1 : guess start Level by doing a bitrate test by loading first fragment of lowest quality level\n            startLevel = 0;\n            this.bitrateTest = true;\n          } else {\n            startLevel = hls.nextAutoLevel;\n          }\n        }\n        // set new level to playlist loader : this will trigger start level load\n        // hls.nextLoadLevel remains until it is set to a new value or until a new frag is successfully loaded\n        this.level = hls.nextLoadLevel = startLevel;\n        this.loadedmetadata = false;\n      }\n      // if startPosition undefined but lastCurrentTime set, set startPosition to last currentTime\n      if (lastCurrentTime > 0 && startPosition === -1) {\n        this.log(\n          `Override startPosition with lastCurrentTime @${lastCurrentTime.toFixed(\n            3\n          )}`\n        );\n        startPosition = lastCurrentTime;\n      }\n      this.state = State.IDLE;\n      this.nextLoadPosition =\n        this.startPosition =\n        this.lastCurrentTime =\n          startPosition;\n      this.tick();\n    } else {\n      this._forceStartLoad = true;\n      this.state = State.STOPPED;\n    }\n  }\n\n  public stopLoad() {\n    this._forceStartLoad = false;\n    super.stopLoad();\n  }\n\n  protected doTick() {\n    switch (this.state) {\n      case State.WAITING_LEVEL: {\n        const { levels, level } = this;\n        const details = levels?.[level]?.details;\n        if (details && (!details.live || this.levelLastLoaded === this.level)) {\n          if (this.waitForCdnTuneIn(details)) {\n            break;\n          }\n          this.state = State.IDLE;\n          break;\n        } else if (this.hls.nextLoadLevel !== this.level) {\n          this.state = State.IDLE;\n          break;\n        }\n        break;\n      }\n      case State.FRAG_LOADING_WAITING_RETRY:\n        {\n          const now = self.performance.now();\n          const retryDate = this.retryDate;\n          // if current time is gt than retryDate, or if media seeking let's switch to IDLE state to retry loading\n          if (!retryDate || now >= retryDate || this.media?.seeking) {\n            this.resetStartWhenNotLoaded(this.level);\n            this.state = State.IDLE;\n          }\n        }\n        break;\n      default:\n        break;\n    }\n    if (this.state === State.IDLE) {\n      this.doTickIdle();\n    }\n    this.onTickEnd();\n  }\n\n  protected onTickEnd() {\n    super.onTickEnd();\n    this.checkBuffer();\n    this.checkFragmentChanged();\n  }\n\n  private doTickIdle() {\n    const { hls, levelLastLoaded, levels, media } = this;\n    const { config, nextLoadLevel: level } = hls;\n\n    // if start level not parsed yet OR\n    // if video not attached AND start fragment already requested OR start frag prefetch not enabled\n    // exit loop, as we either need more info (level not parsed) or we need media to be attached to load new fragment\n    if (\n      levelLastLoaded === null ||\n      (!media && (this.startFragRequested || !config.startFragPrefetch))\n    ) {\n      return;\n    }\n\n    // If the \"main\" level is audio-only but we are loading an alternate track in the same group, do not load anything\n    if (this.altAudio && this.audioOnly) {\n      return;\n    }\n\n    if (!levels?.[level]) {\n      return;\n    }\n\n    const levelInfo = levels[level];\n\n    // if buffer length is less than maxBufLen try to load a new fragment\n\n    const bufferInfo = this.getMainFwdBufferInfo();\n    if (bufferInfo === null) {\n      return;\n    }\n\n    const lastDetails = this.getLevelDetails();\n    if (lastDetails && this._streamEnded(bufferInfo, lastDetails)) {\n      const data: BufferEOSData = {};\n      if (this.altAudio) {\n        data.type = 'video';\n      }\n\n      this.hls.trigger(Events.BUFFER_EOS, data);\n      this.state = State.ENDED;\n      return;\n    }\n\n    // set next load level : this will trigger a playlist load if needed\n    if (hls.loadLevel !== level && hls.manualLevel === -1) {\n      this.log(`Adapting to level ${level} from level ${this.level}`);\n    }\n    this.level = hls.nextLoadLevel = level;\n\n    const levelDetails = levelInfo.details;\n    // if level info not retrieved yet, switch state and wait for level retrieval\n    // if live playlist, ensure that new playlist has been refreshed to avoid loading/try to load\n    // a useless and outdated fragment (that might even introduce load error if it is already out of the live playlist)\n    if (\n      !levelDetails ||\n      this.state === State.WAITING_LEVEL ||\n      (levelDetails.live && this.levelLastLoaded !== level)\n    ) {\n      this.level = level;\n      this.state = State.WAITING_LEVEL;\n      return;\n    }\n\n    const bufferLen = bufferInfo.len;\n\n    // compute max Buffer Length that we could get from this load level, based on level bitrate. don't buffer more than 60 MB and more than 30s\n    const maxBufLen = this.getMaxBufferLength(levelInfo.maxBitrate);\n\n    // Stay idle if we are still with buffer margins\n    if (bufferLen >= maxBufLen) {\n      return;\n    }\n\n    if (\n      this.backtrackFragment &&\n      this.backtrackFragment.start > bufferInfo.end\n    ) {\n      this.backtrackFragment = null;\n    }\n    const targetBufferTime = this.backtrackFragment\n      ? this.backtrackFragment.start\n      : bufferInfo.end;\n    let frag = this.getNextFragment(targetBufferTime, levelDetails);\n    // Avoid backtracking by loading an earlier segment in streams with segments that do not start with a key frame (flagged by `couldBacktrack`)\n    if (\n      this.couldBacktrack &&\n      !this.fragPrevious &&\n      frag &&\n      frag.sn !== 'initSegment' &&\n      this.fragmentTracker.getState(frag) !== FragmentState.OK\n    ) {\n      const backtrackSn = (this.backtrackFragment ?? frag).sn as number;\n      const fragIdx = backtrackSn - levelDetails.startSN;\n      const backtrackFrag = levelDetails.fragments[fragIdx - 1];\n      if (backtrackFrag && frag.cc === backtrackFrag.cc) {\n        frag = backtrackFrag;\n        this.fragmentTracker.removeFragment(backtrackFrag);\n      }\n    } else if (this.backtrackFragment && bufferInfo.len) {\n      this.backtrackFragment = null;\n    }\n    // Avoid loop loading by using nextLoadPosition set for backtracking and skipping consecutive GAP tags\n    if (frag && this.isLoopLoading(frag, targetBufferTime)) {\n      const gapStart = frag.gap;\n      if (!gapStart) {\n        // Cleanup the fragment tracker before trying to find the next unbuffered fragment\n        const type =\n          this.audioOnly && !this.altAudio\n            ? ElementaryStreamTypes.AUDIO\n            : ElementaryStreamTypes.VIDEO;\n        const mediaBuffer =\n          (type === ElementaryStreamTypes.VIDEO\n            ? this.videoBuffer\n            : this.mediaBuffer) || this.media;\n        if (mediaBuffer) {\n          this.afterBufferFlushed(mediaBuffer, type, PlaylistLevelType.MAIN);\n        }\n      }\n      frag = this.getNextFragmentLoopLoading(\n        frag,\n        levelDetails,\n        bufferInfo,\n        PlaylistLevelType.MAIN,\n        maxBufLen\n      );\n    }\n    if (!frag) {\n      return;\n    }\n    if (frag.initSegment && !frag.initSegment.data && !this.bitrateTest) {\n      frag = frag.initSegment;\n    }\n\n    this.loadFragment(frag, levelInfo, targetBufferTime);\n  }\n\n  protected loadFragment(\n    frag: Fragment,\n    level: Level,\n    targetBufferTime: number\n  ) {\n    // Check if fragment is not loaded\n    const fragState = this.fragmentTracker.getState(frag);\n    this.fragCurrent = frag;\n    if (\n      fragState === FragmentState.NOT_LOADED ||\n      fragState === FragmentState.PARTIAL\n    ) {\n      if (frag.sn === 'initSegment') {\n        this._loadInitSegment(frag, level);\n      } else if (this.bitrateTest) {\n        this.log(\n          `Fragment ${frag.sn} of level ${frag.level} is being downloaded to test bitrate and will not be buffered`\n        );\n        this._loadBitrateTestFrag(frag, level);\n      } else {\n        this.startFragRequested = true;\n        super.loadFragment(frag, level, targetBufferTime);\n      }\n    } else {\n      this.clearTrackerIfNeeded(frag);\n    }\n  }\n\n  private getBufferedFrag(position) {\n    return this.fragmentTracker.getBufferedFrag(\n      position,\n      PlaylistLevelType.MAIN\n    );\n  }\n\n  private followingBufferedFrag(frag: Fragment | null) {\n    if (frag) {\n      // try to get range of next fragment (500ms after this range)\n      return this.getBufferedFrag(frag.end + 0.5);\n    }\n    return null;\n  }\n\n  /*\n    on immediate level switch :\n     - pause playback if playing\n     - cancel any pending load request\n     - and trigger a buffer flush\n  */\n  public immediateLevelSwitch() {\n    this.abortCurrentFrag();\n    this.flushMainBuffer(0, Number.POSITIVE_INFINITY);\n  }\n\n  /**\n   * try to switch ASAP without breaking video playback:\n   * in order to ensure smooth but quick level switching,\n   * we need to find the next flushable buffer range\n   * we should take into account new segment fetch time\n   */\n  public nextLevelSwitch() {\n    const { levels, media } = this;\n    // ensure that media is defined and that metadata are available (to retrieve currentTime)\n    if (media?.readyState) {\n      let fetchdelay;\n      const fragPlayingCurrent = this.getAppendedFrag(media.currentTime);\n      if (fragPlayingCurrent && fragPlayingCurrent.start > 1) {\n        // flush buffer preceding current fragment (flush until current fragment start offset)\n        // minus 1s to avoid video freezing, that could happen if we flush keyframe of current video ...\n        this.flushMainBuffer(0, fragPlayingCurrent.start - 1);\n      }\n      const levelDetails = this.getLevelDetails();\n      if (levelDetails?.live) {\n        const bufferInfo = this.getMainFwdBufferInfo();\n        // Do not flush in live stream with low buffer\n        if (!bufferInfo || bufferInfo.len < levelDetails.targetduration * 2) {\n          return;\n        }\n      }\n      if (!media.paused && levels) {\n        // add a safety delay of 1s\n        const nextLevelId = this.hls.nextLoadLevel;\n        const nextLevel = levels[nextLevelId];\n        const fragLastKbps = this.fragLastKbps;\n        if (fragLastKbps && this.fragCurrent) {\n          fetchdelay =\n            (this.fragCurrent.duration * nextLevel.maxBitrate) /\n              (1000 * fragLastKbps) +\n            1;\n        } else {\n          fetchdelay = 0;\n        }\n      } else {\n        fetchdelay = 0;\n      }\n      // this.log('fetchdelay:'+fetchdelay);\n      // find buffer range that will be reached once new fragment will be fetched\n      const bufferedFrag = this.getBufferedFrag(media.currentTime + fetchdelay);\n      if (bufferedFrag) {\n        // we can flush buffer range following this one without stalling playback\n        const nextBufferedFrag = this.followingBufferedFrag(bufferedFrag);\n        if (nextBufferedFrag) {\n          // if we are here, we can also cancel any loading/demuxing in progress, as they are useless\n          this.abortCurrentFrag();\n          // start flush position is in next buffered frag. Leave some padding for non-independent segments and smoother playback.\n          const maxStart = nextBufferedFrag.maxStartPTS\n            ? nextBufferedFrag.maxStartPTS\n            : nextBufferedFrag.start;\n          const fragDuration = nextBufferedFrag.duration;\n          const startPts = Math.max(\n            bufferedFrag.end,\n            maxStart +\n              Math.min(\n                Math.max(\n                  fragDuration - this.config.maxFragLookUpTolerance,\n                  fragDuration * 0.5\n                ),\n                fragDuration * 0.75\n              )\n          );\n          this.flushMainBuffer(startPts, Number.POSITIVE_INFINITY);\n        }\n      }\n    }\n  }\n\n  private abortCurrentFrag() {\n    const fragCurrent = this.fragCurrent;\n    this.fragCurrent = null;\n    this.backtrackFragment = null;\n    if (fragCurrent) {\n      fragCurrent.abortRequests();\n      this.fragmentTracker.removeFragment(fragCurrent);\n    }\n    switch (this.state) {\n      case State.KEY_LOADING:\n      case State.FRAG_LOADING:\n      case State.FRAG_LOADING_WAITING_RETRY:\n      case State.PARSING:\n      case State.PARSED:\n        this.state = State.IDLE;\n        break;\n    }\n    this.nextLoadPosition = this.getLoadPosition();\n  }\n\n  protected flushMainBuffer(startOffset: number, endOffset: number) {\n    super.flushMainBuffer(\n      startOffset,\n      endOffset,\n      this.altAudio ? 'video' : null\n    );\n  }\n\n  protected onMediaAttached(\n    event: Events.MEDIA_ATTACHED,\n    data: MediaAttachedData\n  ) {\n    super.onMediaAttached(event, data);\n    const media = data.media;\n    this.onvplaying = this.onMediaPlaying.bind(this);\n    this.onvseeked = this.onMediaSeeked.bind(this);\n    media.addEventListener('playing', this.onvplaying as EventListener);\n    media.addEventListener('seeked', this.onvseeked as EventListener);\n    this.gapController = new GapController(\n      this.config,\n      media,\n      this.fragmentTracker,\n      this.hls\n    );\n  }\n\n  protected onMediaDetaching() {\n    const { media } = this;\n    if (media && this.onvplaying && this.onvseeked) {\n      media.removeEventListener('playing', this.onvplaying);\n      media.removeEventListener('seeked', this.onvseeked);\n      this.onvplaying = this.onvseeked = null;\n      this.videoBuffer = null;\n    }\n    this.fragPlaying = null;\n    if (this.gapController) {\n      this.gapController.destroy();\n      this.gapController = null;\n    }\n    super.onMediaDetaching();\n  }\n\n  private onMediaPlaying() {\n    // tick to speed up FRAG_CHANGED triggering\n    this.tick();\n  }\n\n  private onMediaSeeked() {\n    const media = this.media;\n    const currentTime = media ? media.currentTime : null;\n    if (Number.isFinite(currentTime)) {\n      this.log(`Media seeked to ${(currentTime as number).toFixed(3)}`);\n    }\n\n    // If seeked was issued before buffer was appended do not tick immediately\n    const bufferInfo = this.getMainFwdBufferInfo();\n    if (bufferInfo === null || bufferInfo.len === 0) {\n      this.warn(\n        `Main forward buffer length on \"seeked\" event ${\n          bufferInfo ? bufferInfo.len : 'empty'\n        })`\n      );\n      return;\n    }\n\n    // tick to speed up FRAG_CHANGED triggering\n    this.tick();\n  }\n\n  private onManifestLoading() {\n    // reset buffer on manifest loading\n    this.log('Trigger BUFFER_RESET');\n    this.hls.trigger(Events.BUFFER_RESET, undefined);\n    this.fragmentTracker.removeAllFragments();\n    this.couldBacktrack = false;\n    this.startPosition = this.lastCurrentTime = 0;\n    this.levels = this.fragPlaying = this.backtrackFragment = null;\n    this.altAudio = this.audioOnly = false;\n  }\n\n  private onManifestParsed(\n    event: Events.MANIFEST_PARSED,\n    data: ManifestParsedData\n  ) {\n    let aac = false;\n    let heaac = false;\n    let codec;\n    data.levels.forEach((level) => {\n      // detect if we have different kind of audio codecs used amongst playlists\n      codec = level.audioCodec;\n      if (codec) {\n        if (codec.indexOf('mp4a.40.2') !== -1) {\n          aac = true;\n        }\n\n        if (codec.indexOf('mp4a.40.5') !== -1) {\n          heaac = true;\n        }\n      }\n    });\n    this.audioCodecSwitch = aac && heaac && !changeTypeSupported();\n    if (this.audioCodecSwitch) {\n      this.log(\n        'Both AAC/HE-AAC audio found in levels; declaring level codec as HE-AAC'\n      );\n    }\n\n    this.levels = data.levels;\n    this.startFragRequested = false;\n  }\n\n  private onLevelLoading(event: Events.LEVEL_LOADING, data: LevelLoadingData) {\n    const { levels } = this;\n    if (!levels || this.state !== State.IDLE) {\n      return;\n    }\n    const level = levels[data.level];\n    if (\n      !level.details ||\n      (level.details.live && this.levelLastLoaded !== data.level) ||\n      this.waitForCdnTuneIn(level.details)\n    ) {\n      this.state = State.WAITING_LEVEL;\n    }\n  }\n\n  private onLevelLoaded(event: Events.LEVEL_LOADED, data: LevelLoadedData) {\n    const { levels } = this;\n    const newLevelId = data.level;\n    const newDetails = data.details;\n    const duration = newDetails.totalduration;\n\n    if (!levels) {\n      this.warn(`Levels were reset while loading level ${newLevelId}`);\n      return;\n    }\n    this.log(\n      `Level ${newLevelId} loaded [${newDetails.startSN},${newDetails.endSN}]${\n        newDetails.lastPartSn\n          ? `[part-${newDetails.lastPartSn}-${newDetails.lastPartIndex}]`\n          : ''\n      }, cc [${newDetails.startCC}, ${newDetails.endCC}] duration:${duration}`\n    );\n\n    const curLevel = levels[newLevelId];\n    const fragCurrent = this.fragCurrent;\n    if (\n      fragCurrent &&\n      (this.state === State.FRAG_LOADING ||\n        this.state === State.FRAG_LOADING_WAITING_RETRY)\n    ) {\n      if (\n        (fragCurrent.level !== data.level ||\n          fragCurrent.urlId !== curLevel.urlId) &&\n        fragCurrent.loader\n      ) {\n        this.abortCurrentFrag();\n      }\n    }\n\n    let sliding = 0;\n    if (newDetails.live || curLevel.details?.live) {\n      this.checkLiveUpdate(newDetails);\n      if (newDetails.deltaUpdateFailed) {\n        return;\n      }\n      sliding = this.alignPlaylists(newDetails, curLevel.details);\n    }\n    // override level info\n    curLevel.details = newDetails;\n    this.levelLastLoaded = newLevelId;\n\n    this.hls.trigger(Events.LEVEL_UPDATED, {\n      details: newDetails,\n      level: newLevelId,\n    });\n\n    // only switch back to IDLE state if we were waiting for level to start downloading a new fragment\n    if (this.state === State.WAITING_LEVEL) {\n      if (this.waitForCdnTuneIn(newDetails)) {\n        // Wait for Low-Latency CDN Tune-in\n        return;\n      }\n      this.state = State.IDLE;\n    }\n\n    if (!this.startFragRequested) {\n      this.setStartPosition(newDetails, sliding);\n    } else if (newDetails.live) {\n      this.synchronizeToLiveEdge(newDetails);\n    }\n\n    // trigger handler right now\n    this.tick();\n  }\n\n  protected _handleFragmentLoadProgress(data: FragLoadedData) {\n    const { frag, part, payload } = data;\n    const { levels } = this;\n    if (!levels) {\n      this.warn(\n        `Levels were reset while fragment load was in progress. Fragment ${frag.sn} of level ${frag.level} will not be buffered`\n      );\n      return;\n    }\n    const currentLevel = levels[frag.level];\n    const details = currentLevel.details as LevelDetails;\n    if (!details) {\n      this.warn(\n        `Dropping fragment ${frag.sn} of level ${frag.level} after level details were reset`\n      );\n      this.fragmentTracker.removeFragment(frag);\n      return;\n    }\n    const videoCodec = currentLevel.videoCodec;\n\n    // time Offset is accurate if level PTS is known, or if playlist is not sliding (not live)\n    const accurateTimeOffset = details.PTSKnown || !details.live;\n    const initSegmentData = frag.initSegment?.data;\n    const audioCodec = this._getAudioCodec(currentLevel);\n\n    // transmux the MPEG-TS data to ISO-BMFF segments\n    // this.log(`Transmuxing ${frag.sn} of [${details.startSN} ,${details.endSN}],level ${frag.level}, cc ${frag.cc}`);\n    const transmuxer = (this.transmuxer =\n      this.transmuxer ||\n      new TransmuxerInterface(\n        this.hls,\n        PlaylistLevelType.MAIN,\n        this._handleTransmuxComplete.bind(this),\n        this._handleTransmuxerFlush.bind(this)\n      ));\n    const partIndex = part ? part.index : -1;\n    const partial = partIndex !== -1;\n    const chunkMeta = new ChunkMetadata(\n      frag.level,\n      frag.sn as number,\n      frag.stats.chunkCount,\n      payload.byteLength,\n      partIndex,\n      partial\n    );\n    const initPTS = this.initPTS[frag.cc];\n\n    transmuxer.push(\n      payload,\n      initSegmentData,\n      audioCodec,\n      videoCodec,\n      frag,\n      part,\n      details.totalduration,\n      accurateTimeOffset,\n      chunkMeta,\n      initPTS\n    );\n  }\n\n  private onAudioTrackSwitching(\n    event: Events.AUDIO_TRACK_SWITCHING,\n    data: AudioTrackSwitchingData\n  ) {\n    // if any URL found on new audio track, it is an alternate audio track\n    const fromAltAudio = this.altAudio;\n    const altAudio = !!data.url;\n    // if we switch on main audio, ensure that main fragment scheduling is synced with media.buffered\n    // don't do anything if we switch to alt audio: audio stream controller is handling it.\n    // we will just have to change buffer scheduling on audioTrackSwitched\n    if (!altAudio) {\n      if (this.mediaBuffer !== this.media) {\n        this.log(\n          'Switching on main audio, use media.buffered to schedule main fragment loading'\n        );\n        this.mediaBuffer = this.media;\n        const fragCurrent = this.fragCurrent;\n        // we need to refill audio buffer from main: cancel any frag loading to speed up audio switch\n        if (fragCurrent) {\n          this.log('Switching to main audio track, cancel main fragment load');\n          fragCurrent.abortRequests();\n          this.fragmentTracker.removeFragment(fragCurrent);\n        }\n        // destroy transmuxer to force init segment generation (following audio switch)\n        this.resetTransmuxer();\n        // switch to IDLE state to load new fragment\n        this.resetLoadingState();\n      } else if (this.audioOnly) {\n        // Reset audio transmuxer so when switching back to main audio we're not still appending where we left off\n        this.resetTransmuxer();\n      }\n      const hls = this.hls;\n      // If switching from alt to main audio, flush all audio and trigger track switched\n      if (fromAltAudio) {\n        hls.trigger(Events.BUFFER_FLUSHING, {\n          startOffset: 0,\n          endOffset: Number.POSITIVE_INFINITY,\n          type: null,\n        });\n        this.fragmentTracker.removeAllFragments();\n      }\n      hls.trigger(Events.AUDIO_TRACK_SWITCHED, data);\n    }\n  }\n\n  private onAudioTrackSwitched(\n    event: Events.AUDIO_TRACK_SWITCHED,\n    data: AudioTrackSwitchedData\n  ) {\n    const trackId = data.id;\n    const altAudio = !!this.hls.audioTracks[trackId].url;\n    if (altAudio) {\n      const videoBuffer = this.videoBuffer;\n      // if we switched on alternate audio, ensure that main fragment scheduling is synced with video sourcebuffer buffered\n      if (videoBuffer && this.mediaBuffer !== videoBuffer) {\n        this.log(\n          'Switching on alternate audio, use video.buffered to schedule main fragment loading'\n        );\n        this.mediaBuffer = videoBuffer;\n      }\n    }\n    this.altAudio = altAudio;\n    this.tick();\n  }\n\n  private onBufferCreated(\n    event: Events.BUFFER_CREATED,\n    data: BufferCreatedData\n  ) {\n    const tracks = data.tracks;\n    let mediaTrack;\n    let name;\n    let alternate = false;\n    for (const type in tracks) {\n      const track = tracks[type];\n      if (track.id === 'main') {\n        name = type;\n        mediaTrack = track;\n        // keep video source buffer reference\n        if (type === 'video') {\n          const videoTrack = tracks[type];\n          if (videoTrack) {\n            this.videoBuffer = videoTrack.buffer;\n          }\n        }\n      } else {\n        alternate = true;\n      }\n    }\n    if (alternate && mediaTrack) {\n      this.log(\n        `Alternate track found, use ${name}.buffered to schedule main fragment loading`\n      );\n      this.mediaBuffer = mediaTrack.buffer;\n    } else {\n      this.mediaBuffer = this.media;\n    }\n  }\n\n  private onFragBuffered(event: Events.FRAG_BUFFERED, data: FragBufferedData) {\n    const { frag, part } = data;\n    if (frag && frag.type !== PlaylistLevelType.MAIN) {\n      return;\n    }\n    if (this.fragContextChanged(frag)) {\n      // If a level switch was requested while a fragment was buffering, it will emit the FRAG_BUFFERED event upon completion\n      // Avoid setting state back to IDLE, since that will interfere with a level switch\n      this.warn(\n        `Fragment ${frag.sn}${part ? ' p: ' + part.index : ''} of level ${\n          frag.level\n        } finished buffering, but was aborted. state: ${this.state}`\n      );\n      if (this.state === State.PARSED) {\n        this.state = State.IDLE;\n      }\n      return;\n    }\n    const stats = part ? part.stats : frag.stats;\n    this.fragLastKbps = Math.round(\n      (8 * stats.total) / (stats.buffering.end - stats.loading.first)\n    );\n    if (frag.sn !== 'initSegment') {\n      this.fragPrevious = frag;\n    }\n    this.fragBufferedComplete(frag, part);\n  }\n\n  private onError(event: Events.ERROR, data: ErrorData) {\n    if (data.fatal) {\n      this.state = State.ERROR;\n      return;\n    }\n    switch (data.details) {\n      case ErrorDetails.FRAG_GAP:\n      case ErrorDetails.FRAG_PARSING_ERROR:\n      case ErrorDetails.FRAG_DECRYPT_ERROR:\n      case ErrorDetails.FRAG_LOAD_ERROR:\n      case ErrorDetails.FRAG_LOAD_TIMEOUT:\n      case ErrorDetails.KEY_LOAD_ERROR:\n      case ErrorDetails.KEY_LOAD_TIMEOUT:\n        this.onFragmentOrKeyLoadError(PlaylistLevelType.MAIN, data);\n        break;\n      case ErrorDetails.LEVEL_LOAD_ERROR:\n      case ErrorDetails.LEVEL_LOAD_TIMEOUT:\n      case ErrorDetails.LEVEL_PARSING_ERROR:\n        // in case of non fatal error while loading level, if level controller is not retrying to load level, switch back to IDLE\n        if (\n          !data.levelRetry &&\n          this.state === State.WAITING_LEVEL &&\n          data.context?.type === PlaylistContextType.LEVEL\n        ) {\n          this.state = State.IDLE;\n        }\n        break;\n      case ErrorDetails.BUFFER_FULL_ERROR:\n        if (!data.parent || data.parent !== 'main') {\n          return;\n        }\n        if (this.reduceLengthAndFlushBuffer(data)) {\n          this.flushMainBuffer(0, Number.POSITIVE_INFINITY);\n        }\n        break;\n      case ErrorDetails.INTERNAL_EXCEPTION:\n        this.recoverWorkerError(data);\n        break;\n      default:\n        break;\n    }\n  }\n\n  // Checks the health of the buffer and attempts to resolve playback stalls.\n  private checkBuffer() {\n    const { media, gapController } = this;\n    if (!media || !gapController || !media.readyState) {\n      // Exit early if we don't have media or if the media hasn't buffered anything yet (readyState 0)\n      return;\n    }\n\n    if (this.loadedmetadata || !BufferHelper.getBuffered(media).length) {\n      // Resolve gaps using the main buffer, whose ranges are the intersections of the A/V sourcebuffers\n      const activeFrag = this.state !== State.IDLE ? this.fragCurrent : null;\n      gapController.poll(this.lastCurrentTime, activeFrag);\n    }\n\n    this.lastCurrentTime = media.currentTime;\n  }\n\n  private onFragLoadEmergencyAborted() {\n    this.state = State.IDLE;\n    // if loadedmetadata is not set, it means that we are emergency switch down on first frag\n    // in that case, reset startFragRequested flag\n    if (!this.loadedmetadata) {\n      this.startFragRequested = false;\n      this.nextLoadPosition = this.startPosition;\n    }\n    this.tickImmediate();\n  }\n\n  private onBufferFlushed(\n    event: Events.BUFFER_FLUSHED,\n    { type }: BufferFlushedData\n  ) {\n    if (\n      type !== ElementaryStreamTypes.AUDIO ||\n      (this.audioOnly && !this.altAudio)\n    ) {\n      const mediaBuffer =\n        (type === ElementaryStreamTypes.VIDEO\n          ? this.videoBuffer\n          : this.mediaBuffer) || this.media;\n      this.afterBufferFlushed(mediaBuffer, type, PlaylistLevelType.MAIN);\n    }\n  }\n\n  private onLevelsUpdated(\n    event: Events.LEVELS_UPDATED,\n    data: LevelsUpdatedData\n  ) {\n    this.levels = data.levels;\n  }\n\n  public swapAudioCodec() {\n    this.audioCodecSwap = !this.audioCodecSwap;\n  }\n\n  /**\n   * Seeks to the set startPosition if not equal to the mediaElement's current time.\n   */\n  protected seekToStartPos() {\n    const { media } = this;\n    if (!media) {\n      return;\n    }\n    const currentTime = media.currentTime;\n    let startPosition = this.startPosition;\n    // only adjust currentTime if different from startPosition or if startPosition not buffered\n    // at that stage, there should be only one buffered range, as we reach that code after first fragment has been buffered\n    if (startPosition >= 0 && currentTime < startPosition) {\n      if (media.seeking) {\n        this.log(\n          `could not seek to ${startPosition}, already seeking at ${currentTime}`\n        );\n        return;\n      }\n      const buffered = BufferHelper.getBuffered(media);\n      const bufferStart = buffered.length ? buffered.start(0) : 0;\n      const delta = bufferStart - startPosition;\n      if (\n        delta > 0 &&\n        (delta < this.config.maxBufferHole ||\n          delta < this.config.maxFragLookUpTolerance)\n      ) {\n        this.log(`adjusting start position by ${delta} to match buffer start`);\n        startPosition += delta;\n        this.startPosition = startPosition;\n      }\n      this.log(\n        `seek to target start position ${startPosition} from current time ${currentTime}`\n      );\n      media.currentTime = startPosition;\n    }\n  }\n\n  private _getAudioCodec(currentLevel) {\n    let audioCodec = this.config.defaultAudioCodec || currentLevel.audioCodec;\n    if (this.audioCodecSwap && audioCodec) {\n      this.log('Swapping audio codec');\n      if (audioCodec.indexOf('mp4a.40.5') !== -1) {\n        audioCodec = 'mp4a.40.2';\n      } else {\n        audioCodec = 'mp4a.40.5';\n      }\n    }\n\n    return audioCodec;\n  }\n\n  private _loadBitrateTestFrag(frag: Fragment, level: Level) {\n    frag.bitrateTest = true;\n    this._doFragLoad(frag, level).then((data) => {\n      const { hls } = this;\n      if (!data || this.fragContextChanged(frag)) {\n        return;\n      }\n      level.fragmentError = 0;\n      this.state = State.IDLE;\n      this.startFragRequested = false;\n      this.bitrateTest = false;\n      const stats = frag.stats;\n      // Bitrate tests fragments are neither parsed nor buffered\n      stats.parsing.start =\n        stats.parsing.end =\n        stats.buffering.start =\n        stats.buffering.end =\n          self.performance.now();\n      hls.trigger(Events.FRAG_LOADED, data as FragLoadedData);\n      frag.bitrateTest = false;\n    });\n  }\n\n  private _handleTransmuxComplete(transmuxResult: TransmuxerResult) {\n    const id = 'main';\n    const { hls } = this;\n    const { remuxResult, chunkMeta } = transmuxResult;\n\n    const context = this.getCurrentContext(chunkMeta);\n    if (!context) {\n      this.resetWhenMissingContext(chunkMeta);\n      return;\n    }\n    const { frag, part, level } = context;\n    const { video, text, id3, initSegment } = remuxResult;\n    const { details } = level;\n    // The audio-stream-controller handles audio buffering if Hls.js is playing an alternate audio track\n    const audio = this.altAudio ? undefined : remuxResult.audio;\n\n    // Check if the current fragment has been aborted. We check this by first seeing if we're still playing the current level.\n    // If we are, subsequently check if the currently loading fragment (fragCurrent) has changed.\n    if (this.fragContextChanged(frag)) {\n      this.fragmentTracker.removeFragment(frag);\n      return;\n    }\n\n    this.state = State.PARSING;\n\n    if (initSegment) {\n      if (initSegment?.tracks) {\n        const mapFragment = frag.initSegment || frag;\n        this._bufferInitSegment(\n          level,\n          initSegment.tracks,\n          mapFragment,\n          chunkMeta\n        );\n        hls.trigger(Events.FRAG_PARSING_INIT_SEGMENT, {\n          frag: mapFragment,\n          id,\n          tracks: initSegment.tracks,\n        });\n      }\n\n      // This would be nice if Number.isFinite acted as a typeguard, but it doesn't. See: https://github.com/Microsoft/TypeScript/issues/10038\n      const initPTS = initSegment.initPTS as number;\n      const timescale = initSegment.timescale as number;\n      if (Number.isFinite(initPTS)) {\n        this.initPTS[frag.cc] = { baseTime: initPTS, timescale };\n        hls.trigger(Events.INIT_PTS_FOUND, { frag, id, initPTS, timescale });\n      }\n    }\n\n    // Avoid buffering if backtracking this fragment\n    if (video && details && frag.sn !== 'initSegment') {\n      const prevFrag = details.fragments[frag.sn - 1 - details.startSN];\n      const isFirstFragment = frag.sn === details.startSN;\n      const isFirstInDiscontinuity = !prevFrag || frag.cc > prevFrag.cc;\n      if (remuxResult.independent !== false) {\n        const { startPTS, endPTS, startDTS, endDTS } = video;\n        if (part) {\n          part.elementaryStreams[video.type] = {\n            startPTS,\n            endPTS,\n            startDTS,\n            endDTS,\n          };\n        } else {\n          if (\n            video.firstKeyFrame &&\n            video.independent &&\n            chunkMeta.id === 1 &&\n            !isFirstInDiscontinuity\n          ) {\n            this.couldBacktrack = true;\n          }\n          if (video.dropped && video.independent) {\n            // Backtrack if dropped frames create a gap after currentTime\n\n            const bufferInfo = this.getMainFwdBufferInfo();\n            const targetBufferTime =\n              (bufferInfo ? bufferInfo.end : this.getLoadPosition()) +\n              this.config.maxBufferHole;\n            const startTime = video.firstKeyFramePTS\n              ? video.firstKeyFramePTS\n              : startPTS;\n            if (\n              !isFirstFragment &&\n              targetBufferTime < startTime - this.config.maxBufferHole &&\n              !isFirstInDiscontinuity\n            ) {\n              this.backtrack(frag);\n              return;\n            } else if (isFirstInDiscontinuity) {\n              // Mark segment with a gap to avoid loop loading\n              frag.gap = true;\n            }\n            // Set video stream start to fragment start so that truncated samples do not distort the timeline, and mark it partial\n            frag.setElementaryStreamInfo(\n              video.type as ElementaryStreamTypes,\n              frag.start,\n              endPTS,\n              frag.start,\n              endDTS,\n              true\n            );\n          }\n        }\n        frag.setElementaryStreamInfo(\n          video.type as ElementaryStreamTypes,\n          startPTS,\n          endPTS,\n          startDTS,\n          endDTS\n        );\n        if (this.backtrackFragment) {\n          this.backtrackFragment = frag;\n        }\n        this.bufferFragmentData(\n          video,\n          frag,\n          part,\n          chunkMeta,\n          isFirstFragment || isFirstInDiscontinuity\n        );\n      } else if (isFirstFragment || isFirstInDiscontinuity) {\n        // Mark segment with a gap to avoid loop loading\n        frag.gap = true;\n      } else {\n        this.backtrack(frag);\n        return;\n      }\n    }\n\n    if (audio) {\n      const { startPTS, endPTS, startDTS, endDTS } = audio;\n      if (part) {\n        part.elementaryStreams[ElementaryStreamTypes.AUDIO] = {\n          startPTS,\n          endPTS,\n          startDTS,\n          endDTS,\n        };\n      }\n      frag.setElementaryStreamInfo(\n        ElementaryStreamTypes.AUDIO,\n        startPTS,\n        endPTS,\n        startDTS,\n        endDTS\n      );\n      this.bufferFragmentData(audio, frag, part, chunkMeta);\n    }\n\n    if (details && id3?.samples?.length) {\n      const emittedID3: FragParsingMetadataData = {\n        id,\n        frag,\n        details,\n        samples: id3.samples,\n      };\n      hls.trigger(Events.FRAG_PARSING_METADATA, emittedID3);\n    }\n    if (details && text) {\n      const emittedText: FragParsingUserdataData = {\n        id,\n        frag,\n        details,\n        samples: text.samples,\n      };\n      hls.trigger(Events.FRAG_PARSING_USERDATA, emittedText);\n    }\n  }\n\n  private _bufferInitSegment(\n    currentLevel: Level,\n    tracks: TrackSet,\n    frag: Fragment,\n    chunkMeta: ChunkMetadata\n  ) {\n    if (this.state !== State.PARSING) {\n      return;\n    }\n\n    this.audioOnly = !!tracks.audio && !tracks.video;\n\n    // if audio track is expected to come from audio stream controller, discard any coming from main\n    if (this.altAudio && !this.audioOnly) {\n      delete tracks.audio;\n    }\n    // include levelCodec in audio and video tracks\n    const { audio, video, audiovideo } = tracks;\n    if (audio) {\n      let audioCodec = currentLevel.audioCodec;\n      const ua = navigator.userAgent.toLowerCase();\n      if (this.audioCodecSwitch) {\n        if (audioCodec) {\n          if (audioCodec.indexOf('mp4a.40.5') !== -1) {\n            audioCodec = 'mp4a.40.2';\n          } else {\n            audioCodec = 'mp4a.40.5';\n          }\n        }\n        // In the case that AAC and HE-AAC audio codecs are signalled in manifest,\n        // force HE-AAC, as it seems that most browsers prefers it.\n        // don't force HE-AAC if mono stream, or in Firefox\n        if (audio.metadata.channelCount !== 1 && ua.indexOf('firefox') === -1) {\n          audioCodec = 'mp4a.40.5';\n        }\n      }\n      // HE-AAC is broken on Android, always signal audio codec as AAC even if variant manifest states otherwise\n      if (ua.indexOf('android') !== -1 && audio.container !== 'audio/mpeg') {\n        // Exclude mpeg audio\n        audioCodec = 'mp4a.40.2';\n        this.log(`Android: force audio codec to ${audioCodec}`);\n      }\n      if (currentLevel.audioCodec && currentLevel.audioCodec !== audioCodec) {\n        this.log(\n          `Swapping manifest audio codec \"${currentLevel.audioCodec}\" for \"${audioCodec}\"`\n        );\n      }\n      audio.levelCodec = audioCodec;\n      audio.id = 'main';\n      this.log(\n        `Init audio buffer, container:${\n          audio.container\n        }, codecs[selected/level/parsed]=[${audioCodec || ''}/${\n          currentLevel.audioCodec || ''\n        }/${audio.codec}]`\n      );\n    }\n    if (video) {\n      video.levelCodec = currentLevel.videoCodec;\n      video.id = 'main';\n      this.log(\n        `Init video buffer, container:${\n          video.container\n        }, codecs[level/parsed]=[${currentLevel.videoCodec || ''}/${\n          video.codec\n        }]`\n      );\n    }\n    if (audiovideo) {\n      this.log(\n        `Init audiovideo buffer, container:${\n          audiovideo.container\n        }, codecs[level/parsed]=[${currentLevel.attrs.CODECS || ''}/${\n          audiovideo.codec\n        }]`\n      );\n    }\n    this.hls.trigger(Events.BUFFER_CODECS, tracks);\n    // loop through tracks that are going to be provided to bufferController\n    Object.keys(tracks).forEach((trackName) => {\n      const track = tracks[trackName];\n      const initSegment = track.initSegment;\n      if (initSegment?.byteLength) {\n        this.hls.trigger(Events.BUFFER_APPENDING, {\n          type: trackName as SourceBufferName,\n          data: initSegment,\n          frag,\n          part: null,\n          chunkMeta,\n          parent: frag.type,\n        });\n      }\n    });\n    // trigger handler right now\n    this.tick();\n  }\n\n  public getMainFwdBufferInfo(): BufferInfo | null {\n    return this.getFwdBufferInfo(\n      this.mediaBuffer ? this.mediaBuffer : this.media,\n      PlaylistLevelType.MAIN\n    );\n  }\n\n  private backtrack(frag: Fragment) {\n    this.couldBacktrack = true;\n    // Causes findFragments to backtrack through fragments to find the keyframe\n    this.backtrackFragment = frag;\n    this.resetTransmuxer();\n    this.flushBufferGap(frag);\n    this.fragmentTracker.removeFragment(frag);\n    this.fragPrevious = null;\n    this.nextLoadPosition = frag.start;\n    this.state = State.IDLE;\n  }\n\n  private checkFragmentChanged() {\n    const video = this.media;\n    let fragPlayingCurrent: Fragment | null = null;\n    if (video && video.readyState > 1 && video.seeking === false) {\n      const currentTime = video.currentTime;\n      /* if video element is in seeked state, currentTime can only increase.\n        (assuming that playback rate is positive ...)\n        As sometimes currentTime jumps back to zero after a\n        media decode error, check this, to avoid seeking back to\n        wrong position after a media decode error\n      */\n\n      if (BufferHelper.isBuffered(video, currentTime)) {\n        fragPlayingCurrent = this.getAppendedFrag(currentTime);\n      } else if (BufferHelper.isBuffered(video, currentTime + 0.1)) {\n        /* ensure that FRAG_CHANGED event is triggered at startup,\n          when first video frame is displayed and playback is paused.\n          add a tolerance of 100ms, in case current position is not buffered,\n          check if current pos+100ms is buffered and use that buffer range\n          for FRAG_CHANGED event reporting */\n        fragPlayingCurrent = this.getAppendedFrag(currentTime + 0.1);\n      }\n      if (fragPlayingCurrent) {\n        this.backtrackFragment = null;\n        const fragPlaying = this.fragPlaying;\n        const fragCurrentLevel = fragPlayingCurrent.level;\n        if (\n          !fragPlaying ||\n          fragPlayingCurrent.sn !== fragPlaying.sn ||\n          fragPlaying.level !== fragCurrentLevel ||\n          fragPlayingCurrent.urlId !== fragPlaying.urlId\n        ) {\n          this.fragPlaying = fragPlayingCurrent;\n          this.hls.trigger(Events.FRAG_CHANGED, { frag: fragPlayingCurrent });\n          if (!fragPlaying || fragPlaying.level !== fragCurrentLevel) {\n            this.hls.trigger(Events.LEVEL_SWITCHED, {\n              level: fragCurrentLevel,\n            });\n          }\n        }\n      }\n    }\n  }\n\n  get nextLevel(): number {\n    const frag = this.nextBufferedFrag;\n    if (frag) {\n      return frag.level;\n    }\n    return -1;\n  }\n\n  get currentFrag(): Fragment | null {\n    const media = this.media;\n    if (media) {\n      return this.fragPlaying || this.getAppendedFrag(media.currentTime);\n    }\n    return null;\n  }\n\n  get currentProgramDateTime(): Date | null {\n    const media = this.media;\n    if (media) {\n      const currentTime = media.currentTime;\n      const frag = this.currentFrag;\n      if (\n        frag &&\n        Number.isFinite(currentTime) &&\n        Number.isFinite(frag.programDateTime)\n      ) {\n        const epocMs =\n          (frag.programDateTime as number) + (currentTime - frag.start) * 1000;\n        return new Date(epocMs);\n      }\n    }\n    return null;\n  }\n\n  get currentLevel(): number {\n    const frag = this.currentFrag;\n    if (frag) {\n      return frag.level;\n    }\n    return -1;\n  }\n\n  get nextBufferedFrag() {\n    const frag = this.currentFrag;\n    if (frag) {\n      return this.followingBufferedFrag(frag);\n    }\n    return null;\n  }\n\n  get forceStartLoad() {\n    return this._forceStartLoad;\n  }\n}\n","/*\n * compute an Exponential Weighted moving average\n * - https://en.wikipedia.org/wiki/Moving_average#Exponential_moving_average\n *  - heavily inspired from shaka-player\n */\n\nclass EWMA {\n  public readonly halfLife: number;\n  private alpha_: number;\n  private estimate_: number;\n  private totalWeight_: number;\n\n  //  About half of the estimated value will be from the last |halfLife| samples by weight.\n  constructor(halfLife: number, estimate: number = 0, weight: number = 0) {\n    this.halfLife = halfLife;\n    // Larger values of alpha expire historical data more slowly.\n    this.alpha_ = halfLife ? Math.exp(Math.log(0.5) / halfLife) : 0;\n    this.estimate_ = estimate;\n    this.totalWeight_ = weight;\n  }\n\n  sample(weight: number, value: number) {\n    const adjAlpha = Math.pow(this.alpha_, weight);\n    this.estimate_ = value * (1 - adjAlpha) + adjAlpha * this.estimate_;\n    this.totalWeight_ += weight;\n  }\n\n  getTotalWeight(): number {\n    return this.totalWeight_;\n  }\n\n  getEstimate(): number {\n    if (this.alpha_) {\n      const zeroFactor = 1 - Math.pow(this.alpha_, this.totalWeight_);\n      if (zeroFactor) {\n        return this.estimate_ / zeroFactor;\n      }\n    }\n    return this.estimate_;\n  }\n}\n\nexport default EWMA;\n","/*\n * EWMA Bandwidth Estimator\n *  - heavily inspired from shaka-player\n * Tracks bandwidth samples and estimates available bandwidth.\n * Based on the minimum of two exponentially-weighted moving averages with\n * different half-lives.\n */\n\nimport EWMA from '../utils/ewma';\n\nclass EwmaBandWidthEstimator {\n  private defaultEstimate_: number;\n  private minWeight_: number;\n  private minDelayMs_: number;\n  private slow_: EWMA;\n  private fast_: EWMA;\n  private defaultTTFB_: number;\n  private ttfb_: EWMA;\n\n  constructor(\n    slow: number,\n    fast: number,\n    defaultEstimate: number,\n    defaultTTFB: number = 100\n  ) {\n    this.defaultEstimate_ = defaultEstimate;\n    this.minWeight_ = 0.001;\n    this.minDelayMs_ = 50;\n    this.slow_ = new EWMA(slow);\n    this.fast_ = new EWMA(fast);\n    this.defaultTTFB_ = defaultTTFB;\n    this.ttfb_ = new EWMA(slow);\n  }\n\n  update(slow: number, fast: number) {\n    const { slow_, fast_, ttfb_ } = this;\n    if (slow_.halfLife !== slow) {\n      this.slow_ = new EWMA(slow, slow_.getEstimate(), slow_.getTotalWeight());\n    }\n    if (fast_.halfLife !== fast) {\n      this.fast_ = new EWMA(fast, fast_.getEstimate(), fast_.getTotalWeight());\n    }\n    if (ttfb_.halfLife !== slow) {\n      this.ttfb_ = new EWMA(slow, ttfb_.getEstimate(), ttfb_.getTotalWeight());\n    }\n  }\n\n  sample(durationMs: number, numBytes: number) {\n    durationMs = Math.max(durationMs, this.minDelayMs_);\n    const numBits = 8 * numBytes;\n    // weight is duration in seconds\n    const durationS = durationMs / 1000;\n    // value is bandwidth in bits/s\n    const bandwidthInBps = numBits / durationS;\n    this.fast_.sample(durationS, bandwidthInBps);\n    this.slow_.sample(durationS, bandwidthInBps);\n  }\n\n  sampleTTFB(ttfb: number) {\n    // weight is frequency curve applied to TTFB in seconds\n    // (longer times have less weight with expected input under 1 second)\n    const seconds = ttfb / 1000;\n    const weight = Math.sqrt(2) * Math.exp(-Math.pow(seconds, 2) / 2);\n    this.ttfb_.sample(weight, Math.max(ttfb, 5));\n  }\n\n  canEstimate(): boolean {\n    return this.fast_.getTotalWeight() >= this.minWeight_;\n  }\n\n  getEstimate(): number {\n    if (this.canEstimate()) {\n      // console.log('slow estimate:'+ Math.round(this.slow_.getEstimate()));\n      // console.log('fast estimate:'+ Math.round(this.fast_.getEstimate()));\n      // Take the minimum of these two estimates.  This should have the effect of\n      // adapting down quickly, but up more slowly.\n      return Math.min(this.fast_.getEstimate(), this.slow_.getEstimate());\n    } else {\n      return this.defaultEstimate_;\n    }\n  }\n\n  getEstimateTTFB(): number {\n    if (this.ttfb_.getTotalWeight() >= this.minWeight_) {\n      return this.ttfb_.getEstimate();\n    } else {\n      return this.defaultTTFB_;\n    }\n  }\n\n  destroy() {}\n}\nexport default EwmaBandWidthEstimator;\n","import EwmaBandWidthEstimator from '../utils/ewma-bandwidth-estimator';\nimport { Events } from '../events';\nimport { PlaylistLevelType } from '../types/loader';\nimport { logger } from '../utils/logger';\nimport type { Fragment } from '../loader/fragment';\nimport type { Part } from '../loader/fragment';\nimport type { LoaderStats } from '../types/loader';\nimport type Hls from '../hls';\nimport type {\n  FragLoadingData,\n  FragLoadedData,\n  FragBufferedData,\n  LevelLoadedData,\n  LevelSwitchingData,\n} from '../types/events';\nimport type { AbrComponentAPI } from '../types/component-api';\n\nclass AbrController implements AbrComponentAPI {\n  protected hls: Hls;\n  private lastLevelLoadSec: number = 0;\n  private lastLoadedFragLevel: number = 0;\n  private _nextAutoLevel: number = -1;\n  private timer: number = -1;\n  private onCheck: Function = this._abandonRulesCheck.bind(this);\n  private fragCurrent: Fragment | null = null;\n  private partCurrent: Part | null = null;\n  private bitrateTestDelay: number = 0;\n\n  public readonly bwEstimator: EwmaBandWidthEstimator;\n\n  constructor(hls: Hls) {\n    this.hls = hls;\n\n    const config = hls.config;\n    this.bwEstimator = new EwmaBandWidthEstimator(\n      config.abrEwmaSlowVoD,\n      config.abrEwmaFastVoD,\n      config.abrEwmaDefaultEstimate\n    );\n\n    this.registerListeners();\n  }\n\n  protected registerListeners() {\n    const { hls } = this;\n    hls.on(Events.FRAG_LOADING, this.onFragLoading, this);\n    hls.on(Events.FRAG_LOADED, this.onFragLoaded, this);\n    hls.on(Events.FRAG_BUFFERED, this.onFragBuffered, this);\n    hls.on(Events.LEVEL_SWITCHING, this.onLevelSwitching, this);\n    hls.on(Events.LEVEL_LOADED, this.onLevelLoaded, this);\n  }\n\n  protected unregisterListeners() {\n    const { hls } = this;\n    hls.off(Events.FRAG_LOADING, this.onFragLoading, this);\n    hls.off(Events.FRAG_LOADED, this.onFragLoaded, this);\n    hls.off(Events.FRAG_BUFFERED, this.onFragBuffered, this);\n    hls.off(Events.LEVEL_SWITCHING, this.onLevelSwitching, this);\n    hls.off(Events.LEVEL_LOADED, this.onLevelLoaded, this);\n  }\n\n  public destroy() {\n    this.unregisterListeners();\n    this.clearTimer();\n    // @ts-ignore\n    this.hls = this.onCheck = null;\n    this.fragCurrent = this.partCurrent = null;\n  }\n\n  protected onFragLoading(event: Events.FRAG_LOADING, data: FragLoadingData) {\n    const frag = data.frag;\n    if (this.ignoreFragment(frag)) {\n      return;\n    }\n    this.fragCurrent = frag;\n    this.partCurrent = data.part ?? null;\n    this.clearTimer();\n    this.timer = self.setInterval(this.onCheck, 100);\n  }\n\n  protected onLevelSwitching(\n    event: Events.LEVEL_SWITCHING,\n    data: LevelSwitchingData\n  ): void {\n    this.clearTimer();\n  }\n\n  private getTimeToLoadFrag(\n    timeToFirstByteSec: number,\n    bandwidth: number,\n    fragSizeBits: number,\n    isSwitch: boolean\n  ) {\n    const fragLoadSec = timeToFirstByteSec + fragSizeBits / bandwidth;\n    const playlistLoadSec = isSwitch ? this.lastLevelLoadSec : 0;\n    return fragLoadSec + playlistLoadSec;\n  }\n\n  protected onLevelLoaded(event: Events.LEVEL_LOADED, data: LevelLoadedData) {\n    const config = this.hls.config;\n    const { total, bwEstimate } = data.stats;\n    // Total is the bytelength and bwEstimate in bits/sec\n    if (Number.isFinite(total) && Number.isFinite(bwEstimate)) {\n      this.lastLevelLoadSec = (8 * total) / bwEstimate;\n    }\n    if (data.details.live) {\n      this.bwEstimator.update(config.abrEwmaSlowLive, config.abrEwmaFastLive);\n    } else {\n      this.bwEstimator.update(config.abrEwmaSlowVoD, config.abrEwmaFastVoD);\n    }\n  }\n\n  /*\n      This method monitors the download rate of the current fragment, and will downswitch if that fragment will not load\n      quickly enough to prevent underbuffering\n    */\n  private _abandonRulesCheck() {\n    const { fragCurrent: frag, partCurrent: part, hls } = this;\n    const { autoLevelEnabled, media } = hls;\n    if (!frag || !media) {\n      return;\n    }\n\n    const now = performance.now();\n    const stats: LoaderStats = part ? part.stats : frag.stats;\n    const duration = part ? part.duration : frag.duration;\n    const timeLoading = now - stats.loading.start;\n    // If frag loading is aborted, complete, or from lowest level, stop timer and return\n    if (\n      stats.aborted ||\n      (stats.loaded && stats.loaded === stats.total) ||\n      frag.level === 0\n    ) {\n      this.clearTimer();\n      // reset forced auto level value so that next level will be selected\n      this._nextAutoLevel = -1;\n      return;\n    }\n\n    // This check only runs if we're in ABR mode and actually playing\n    if (\n      !autoLevelEnabled ||\n      media.paused ||\n      !media.playbackRate ||\n      !media.readyState\n    ) {\n      return;\n    }\n\n    const bufferInfo = hls.mainForwardBufferInfo;\n    if (bufferInfo === null) {\n      return;\n    }\n\n    const ttfbEstimate = this.bwEstimator.getEstimateTTFB();\n    const playbackRate = Math.abs(media.playbackRate);\n    // To maintain stable adaptive playback, only begin monitoring frag loading after half or more of its playback duration has passed\n    if (\n      timeLoading <=\n      Math.max(ttfbEstimate, 1000 * (duration / (playbackRate * 2)))\n    ) {\n      return;\n    }\n\n    // bufferStarvationDelay is an estimate of the amount time (in seconds) it will take to exhaust the buffer\n    const bufferStarvationDelay = bufferInfo.len / playbackRate;\n    // Only downswitch if less than 2 fragment lengths are buffered\n    if (bufferStarvationDelay >= (2 * duration) / playbackRate) {\n      return;\n    }\n\n    const ttfb = stats.loading.first\n      ? stats.loading.first - stats.loading.start\n      : -1;\n    const loadedFirstByte = stats.loaded && ttfb > -1;\n    const bwEstimate: number = this.bwEstimator.getEstimate();\n    const { levels, minAutoLevel } = hls;\n    const level = levels[frag.level];\n    const expectedLen =\n      stats.total ||\n      Math.max(stats.loaded, Math.round((duration * level.maxBitrate) / 8));\n    let timeStreaming = timeLoading - ttfb;\n    if (timeStreaming < 1 && loadedFirstByte) {\n      timeStreaming = Math.min(timeLoading, (stats.loaded * 8) / bwEstimate);\n    }\n    const loadRate = loadedFirstByte\n      ? (stats.loaded * 1000) / timeStreaming\n      : 0;\n    // fragLoadDelay is an estimate of the time (in seconds) it will take to buffer the remainder of the fragment\n    const fragLoadedDelay = loadRate\n      ? (expectedLen - stats.loaded) / loadRate\n      : (expectedLen * 8) / bwEstimate + ttfbEstimate / 1000;\n    // Only downswitch if the time to finish loading the current fragment is greater than the amount of buffer left\n    if (fragLoadedDelay <= bufferStarvationDelay) {\n      return;\n    }\n\n    const bwe = loadRate ? loadRate * 8 : bwEstimate;\n    let fragLevelNextLoadedDelay: number = Number.POSITIVE_INFINITY;\n    let nextLoadLevel: number;\n    // Iterate through lower level and try to find the largest one that avoids rebuffering\n    for (\n      nextLoadLevel = frag.level - 1;\n      nextLoadLevel > minAutoLevel;\n      nextLoadLevel--\n    ) {\n      // compute time to load next fragment at lower level\n      // 8 = bits per byte (bps/Bps)\n      const levelNextBitrate = levels[nextLoadLevel].maxBitrate;\n      fragLevelNextLoadedDelay = this.getTimeToLoadFrag(\n        ttfbEstimate / 1000,\n        bwe,\n        duration * levelNextBitrate,\n        !levels[nextLoadLevel].details\n      );\n      if (fragLevelNextLoadedDelay < bufferStarvationDelay) {\n        break;\n      }\n    }\n    // Only emergency switch down if it takes less time to load a new fragment at lowest level instead of continuing\n    // to load the current one\n    if (fragLevelNextLoadedDelay >= fragLoadedDelay) {\n      return;\n    }\n\n    // if estimated load time of new segment is completely unreasonable, ignore and do not emergency switch down\n    if (fragLevelNextLoadedDelay > duration * 10) {\n      return;\n    }\n    hls.nextLoadLevel = nextLoadLevel;\n    if (loadedFirstByte) {\n      // If there has been loading progress, sample bandwidth using loading time offset by minimum TTFB time\n      this.bwEstimator.sample(\n        timeLoading - Math.min(ttfbEstimate, ttfb),\n        stats.loaded\n      );\n    } else {\n      // If there has been no loading progress, sample TTFB\n      this.bwEstimator.sampleTTFB(timeLoading);\n    }\n\n    this.clearTimer();\n    logger.warn(`[abr] Fragment ${frag.sn}${\n      part ? ' part ' + part.index : ''\n    } of level ${frag.level} is loading too slowly;\n      Time to underbuffer: ${bufferStarvationDelay.toFixed(3)} s\n      Estimated load time for current fragment: ${fragLoadedDelay.toFixed(3)} s\n      Estimated load time for down switch fragment: ${fragLevelNextLoadedDelay.toFixed(\n        3\n      )} s\n      TTFB estimate: ${ttfb}\n      Current BW estimate: ${\n        Number.isFinite(bwEstimate) ? (bwEstimate / 1024).toFixed(3) : 'Unknown'\n      } Kb/s\n      New BW estimate: ${(this.bwEstimator.getEstimate() / 1024).toFixed(\n        3\n      )} Kb/s\n      Aborting and switching to level ${nextLoadLevel}`);\n    if (frag.loader) {\n      this.fragCurrent = this.partCurrent = null;\n      frag.abortRequests();\n    }\n    hls.trigger(Events.FRAG_LOAD_EMERGENCY_ABORTED, { frag, part, stats });\n  }\n\n  protected onFragLoaded(\n    event: Events.FRAG_LOADED,\n    { frag, part }: FragLoadedData\n  ) {\n    const stats = part ? part.stats : frag.stats;\n    if (frag.type === PlaylistLevelType.MAIN) {\n      this.bwEstimator.sampleTTFB(stats.loading.first - stats.loading.start);\n    }\n    if (this.ignoreFragment(frag)) {\n      return;\n    }\n    // stop monitoring bw once frag loaded\n    this.clearTimer();\n    // store level id after successful fragment load\n    this.lastLoadedFragLevel = frag.level;\n    // reset forced auto level value so that next level will be selected\n    this._nextAutoLevel = -1;\n\n    // compute level average bitrate\n    if (this.hls.config.abrMaxWithRealBitrate) {\n      const duration = part ? part.duration : frag.duration;\n      const level = this.hls.levels[frag.level];\n      const loadedBytes =\n        (level.loaded ? level.loaded.bytes : 0) + stats.loaded;\n      const loadedDuration =\n        (level.loaded ? level.loaded.duration : 0) + duration;\n      level.loaded = { bytes: loadedBytes, duration: loadedDuration };\n      level.realBitrate = Math.round((8 * loadedBytes) / loadedDuration);\n    }\n    if (frag.bitrateTest) {\n      const fragBufferedData: FragBufferedData = {\n        stats,\n        frag,\n        part,\n        id: frag.type,\n      };\n      this.onFragBuffered(Events.FRAG_BUFFERED, fragBufferedData);\n      frag.bitrateTest = false;\n    }\n  }\n\n  protected onFragBuffered(\n    event: Events.FRAG_BUFFERED,\n    data: FragBufferedData\n  ) {\n    const { frag, part } = data;\n    const stats = part?.stats.loaded ? part.stats : frag.stats;\n\n    if (stats.aborted) {\n      return;\n    }\n    if (this.ignoreFragment(frag)) {\n      return;\n    }\n    // Use the difference between parsing and request instead of buffering and request to compute fragLoadingProcessing;\n    // rationale is that buffer appending only happens once media is attached. This can happen when config.startFragPrefetch\n    // is used. If we used buffering in that case, our BW estimate sample will be very large.\n    const processingMs =\n      stats.parsing.end -\n      stats.loading.start -\n      Math.min(\n        stats.loading.first - stats.loading.start,\n        this.bwEstimator.getEstimateTTFB()\n      );\n    this.bwEstimator.sample(processingMs, stats.loaded);\n    stats.bwEstimate = this.bwEstimator.getEstimate();\n    if (frag.bitrateTest) {\n      this.bitrateTestDelay = processingMs / 1000;\n    } else {\n      this.bitrateTestDelay = 0;\n    }\n  }\n\n  private ignoreFragment(frag: Fragment): boolean {\n    // Only count non-alt-audio frags which were actually buffered in our BW calculations\n    return frag.type !== PlaylistLevelType.MAIN || frag.sn === 'initSegment';\n  }\n\n  public clearTimer() {\n    self.clearInterval(this.timer);\n  }\n\n  // return next auto level\n  get nextAutoLevel() {\n    const forcedAutoLevel = this._nextAutoLevel;\n    const bwEstimator = this.bwEstimator;\n    // in case next auto level has been forced, and bw not available or not reliable, return forced value\n    if (forcedAutoLevel !== -1 && !bwEstimator.canEstimate()) {\n      return forcedAutoLevel;\n    }\n\n    // compute next level using ABR logic\n    let nextABRAutoLevel = this.getNextABRAutoLevel();\n    // use forced auto level when ABR selected level has errored\n    if (forcedAutoLevel !== -1) {\n      const levels = this.hls.levels;\n      if (\n        levels.length > Math.max(forcedAutoLevel, nextABRAutoLevel) &&\n        levels[forcedAutoLevel].loadError <= levels[nextABRAutoLevel].loadError\n      ) {\n        return forcedAutoLevel;\n      }\n    }\n    // if forced auto level has been defined, use it to cap ABR computed quality level\n    if (forcedAutoLevel !== -1) {\n      nextABRAutoLevel = Math.min(forcedAutoLevel, nextABRAutoLevel);\n    }\n\n    return nextABRAutoLevel;\n  }\n\n  private getNextABRAutoLevel(): number {\n    const { fragCurrent, partCurrent, hls } = this;\n    const { maxAutoLevel, config, minAutoLevel, media } = hls;\n    const currentFragDuration = partCurrent\n      ? partCurrent.duration\n      : fragCurrent\n      ? fragCurrent.duration\n      : 0;\n\n    // playbackRate is the absolute value of the playback rate; if media.playbackRate is 0, we use 1 to load as\n    // if we're playing back at the normal rate.\n    const playbackRate =\n      media && media.playbackRate !== 0 ? Math.abs(media.playbackRate) : 1.0;\n    const avgbw = this.bwEstimator\n      ? this.bwEstimator.getEstimate()\n      : config.abrEwmaDefaultEstimate;\n    // bufferStarvationDelay is the wall-clock time left until the playback buffer is exhausted.\n    const bufferInfo = hls.mainForwardBufferInfo;\n    const bufferStarvationDelay =\n      (bufferInfo ? bufferInfo.len : 0) / playbackRate;\n\n    // First, look to see if we can find a level matching with our avg bandwidth AND that could also guarantee no rebuffering at all\n    let bestLevel = this.findBestLevel(\n      avgbw,\n      minAutoLevel,\n      maxAutoLevel,\n      bufferStarvationDelay,\n      config.abrBandWidthFactor,\n      config.abrBandWidthUpFactor\n    );\n    if (bestLevel >= 0) {\n      return bestLevel;\n    }\n    logger.trace(\n      `[abr] ${\n        bufferStarvationDelay ? 'rebuffering expected' : 'buffer is empty'\n      }, finding optimal quality level`\n    );\n    // not possible to get rid of rebuffering ... let's try to find level that will guarantee less than maxStarvationDelay of rebuffering\n    // if no matching level found, logic will return 0\n    let maxStarvationDelay = currentFragDuration\n      ? Math.min(currentFragDuration, config.maxStarvationDelay)\n      : config.maxStarvationDelay;\n    let bwFactor = config.abrBandWidthFactor;\n    let bwUpFactor = config.abrBandWidthUpFactor;\n\n    if (!bufferStarvationDelay) {\n      // in case buffer is empty, let's check if previous fragment was loaded to perform a bitrate test\n      const bitrateTestDelay = this.bitrateTestDelay;\n      if (bitrateTestDelay) {\n        // if it is the case, then we need to adjust our max starvation delay using maxLoadingDelay config value\n        // max video loading delay used in  automatic start level selection :\n        // in that mode ABR controller will ensure that video loading time (ie the time to fetch the first fragment at lowest quality level +\n        // the time to fetch the fragment at the appropriate quality level is less than ```maxLoadingDelay``` )\n        // cap maxLoadingDelay and ensure it is not bigger 'than bitrate test' frag duration\n        const maxLoadingDelay = currentFragDuration\n          ? Math.min(currentFragDuration, config.maxLoadingDelay)\n          : config.maxLoadingDelay;\n        maxStarvationDelay = maxLoadingDelay - bitrateTestDelay;\n        logger.trace(\n          `[abr] bitrate test took ${Math.round(\n            1000 * bitrateTestDelay\n          )}ms, set first fragment max fetchDuration to ${Math.round(\n            1000 * maxStarvationDelay\n          )} ms`\n        );\n        // don't use conservative factor on bitrate test\n        bwFactor = bwUpFactor = 1;\n      }\n    }\n    bestLevel = this.findBestLevel(\n      avgbw,\n      minAutoLevel,\n      maxAutoLevel,\n      bufferStarvationDelay + maxStarvationDelay,\n      bwFactor,\n      bwUpFactor\n    );\n    return Math.max(bestLevel, 0);\n  }\n\n  private findBestLevel(\n    currentBw: number,\n    minAutoLevel: number,\n    maxAutoLevel: number,\n    maxFetchDuration: number,\n    bwFactor: number,\n    bwUpFactor: number\n  ): number {\n    const {\n      fragCurrent,\n      partCurrent,\n      lastLoadedFragLevel: currentLevel,\n    } = this;\n    const { levels } = this.hls;\n    const level = levels[currentLevel];\n    const live = !!level?.details?.live;\n    const currentCodecSet = level?.codecSet;\n\n    const currentFragDuration = partCurrent\n      ? partCurrent.duration\n      : fragCurrent\n      ? fragCurrent.duration\n      : 0;\n\n    const ttfbEstimateSec = this.bwEstimator.getEstimateTTFB() / 1000;\n    let levelSkippedMin = minAutoLevel;\n    let levelSkippedMax = -1;\n    for (let i = maxAutoLevel; i >= minAutoLevel; i--) {\n      const levelInfo = levels[i];\n\n      if (\n        !levelInfo ||\n        (currentCodecSet && levelInfo.codecSet !== currentCodecSet)\n      ) {\n        if (levelInfo) {\n          levelSkippedMin = Math.min(i, levelSkippedMin);\n          levelSkippedMax = Math.max(i, levelSkippedMax);\n        }\n        continue;\n      }\n      if (levelSkippedMax !== -1) {\n        logger.trace(\n          `[abr] Skipped level(s) ${levelSkippedMin}-${levelSkippedMax} with CODECS:\"${levels[levelSkippedMax].attrs.CODECS}\"; not compatible with \"${level.attrs.CODECS}\"`\n        );\n      }\n\n      const levelDetails = levelInfo.details;\n      const avgDuration =\n        (partCurrent\n          ? levelDetails?.partTarget\n          : levelDetails?.averagetargetduration) || currentFragDuration;\n\n      let adjustedbw: number;\n      // follow algorithm captured from stagefright :\n      // https://android.googlesource.com/platform/frameworks/av/+/master/media/libstagefright/httplive/LiveSession.cpp\n      // Pick the highest bandwidth stream below or equal to estimated bandwidth.\n      // consider only 80% of the available bandwidth, but if we are switching up,\n      // be even more conservative (70%) to avoid overestimating and immediately\n      // switching back.\n      if (i <= currentLevel) {\n        adjustedbw = bwFactor * currentBw;\n      } else {\n        adjustedbw = bwUpFactor * currentBw;\n      }\n\n      const bitrate: number = levels[i].maxBitrate;\n      const fetchDuration: number = this.getTimeToLoadFrag(\n        ttfbEstimateSec,\n        adjustedbw,\n        bitrate * avgDuration,\n        levelDetails === undefined\n      );\n\n      logger.trace(\n        `[abr] level:${i} adjustedbw-bitrate:${Math.round(\n          adjustedbw - bitrate\n        )} avgDuration:${avgDuration.toFixed(\n          1\n        )} maxFetchDuration:${maxFetchDuration.toFixed(\n          1\n        )} fetchDuration:${fetchDuration.toFixed(1)}`\n      );\n      // if adjusted bw is greater than level bitrate AND\n      if (\n        adjustedbw > bitrate &&\n        // fragment fetchDuration unknown OR live stream OR fragment fetchDuration less than max allowed fetch duration, then this level matches\n        // we don't account for max Fetch Duration for live streams, this is to avoid switching down when near the edge of live sliding window ...\n        // special case to support startLevel = -1 (bitrateTest) on live streams : in that case we should not exit loop so that findBestLevel will return -1\n        (fetchDuration === 0 ||\n          !Number.isFinite(fetchDuration) ||\n          (live && !this.bitrateTestDelay) ||\n          fetchDuration < maxFetchDuration)\n      ) {\n        // as we are looping from highest to lowest, this will return the best achievable quality level\n        return i;\n      }\n    }\n    // not enough time budget even with quality level 0 ... rebuffering might happen\n    return -1;\n  }\n\n  set nextAutoLevel(nextLevel) {\n    this._nextAutoLevel = nextLevel;\n  }\n}\n\nexport default AbrController;\n","import BaseStreamController, { State } from './base-stream-controller';\nimport { Events } from '../events';\nimport { Bufferable, BufferHelper } from '../utils/buffer-helper';\nimport { FragmentState } from './fragment-tracker';\nimport { Level } from '../types/level';\nimport { PlaylistContextType, PlaylistLevelType } from '../types/loader';\nimport { Fragment, ElementaryStreamTypes, Part } from '../loader/fragment';\nimport ChunkCache from '../demux/chunk-cache';\nimport TransmuxerInterface from '../demux/transmuxer-interface';\nimport { ChunkMetadata } from '../types/transmuxer';\nimport { fragmentWithinToleranceTest } from './fragment-finders';\nimport { alignMediaPlaylistByPDT } from '../utils/discontinuities';\nimport { ErrorDetails } from '../errors';\nimport type { NetworkComponentAPI } from '../types/component-api';\nimport type Hls from '../hls';\nimport type { FragmentTracker } from './fragment-tracker';\nimport type KeyLoader from '../loader/key-loader';\nimport type { TransmuxerResult } from '../types/transmuxer';\nimport type { LevelDetails } from '../loader/level-details';\nimport type { TrackSet } from '../types/track';\nimport type {\n  BufferCreatedData,\n  AudioTracksUpdatedData,\n  AudioTrackSwitchingData,\n  LevelLoadedData,\n  TrackLoadedData,\n  BufferAppendingData,\n  BufferFlushedData,\n  InitPTSFoundData,\n  FragLoadedData,\n  FragParsingMetadataData,\n  FragParsingUserdataData,\n  FragBufferedData,\n  ErrorData,\n} from '../types/events';\nimport type { MediaPlaylist } from '../types/media-playlist';\n\nconst TICK_INTERVAL = 100; // how often to tick in ms\n\ntype WaitingForPTSData = {\n  frag: Fragment;\n  part: Part | null;\n  cache: ChunkCache;\n  complete: boolean;\n};\n\nclass AudioStreamController\n  extends BaseStreamController\n  implements NetworkComponentAPI\n{\n  private videoBuffer: Bufferable | null = null;\n  private videoTrackCC: number = -1;\n  private waitingVideoCC: number = -1;\n  private bufferedTrack: MediaPlaylist | null = null;\n  private switchingTrack: MediaPlaylist | null = null;\n  private trackId: number = -1;\n  private waitingData: WaitingForPTSData | null = null;\n  private mainDetails: LevelDetails | null = null;\n  private bufferFlushed: boolean = false;\n  private cachedTrackLoadedData: TrackLoadedData | null = null;\n\n  constructor(\n    hls: Hls,\n    fragmentTracker: FragmentTracker,\n    keyLoader: KeyLoader\n  ) {\n    super(\n      hls,\n      fragmentTracker,\n      keyLoader,\n      '[audio-stream-controller]',\n      PlaylistLevelType.AUDIO\n    );\n    this._registerListeners();\n  }\n\n  protected onHandlerDestroying() {\n    this._unregisterListeners();\n    this.mainDetails = null;\n    this.bufferedTrack = null;\n    this.switchingTrack = null;\n  }\n\n  private _registerListeners() {\n    const { hls } = this;\n    hls.on(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n    hls.on(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n    hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    hls.on(Events.LEVEL_LOADED, this.onLevelLoaded, this);\n    hls.on(Events.AUDIO_TRACKS_UPDATED, this.onAudioTracksUpdated, this);\n    hls.on(Events.AUDIO_TRACK_SWITCHING, this.onAudioTrackSwitching, this);\n    hls.on(Events.AUDIO_TRACK_LOADED, this.onAudioTrackLoaded, this);\n    hls.on(Events.ERROR, this.onError, this);\n    hls.on(Events.BUFFER_RESET, this.onBufferReset, this);\n    hls.on(Events.BUFFER_CREATED, this.onBufferCreated, this);\n    hls.on(Events.BUFFER_FLUSHED, this.onBufferFlushed, this);\n    hls.on(Events.INIT_PTS_FOUND, this.onInitPtsFound, this);\n    hls.on(Events.FRAG_BUFFERED, this.onFragBuffered, this);\n  }\n\n  private _unregisterListeners() {\n    const { hls } = this;\n    hls.off(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n    hls.off(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n    hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    hls.off(Events.LEVEL_LOADED, this.onLevelLoaded, this);\n    hls.off(Events.AUDIO_TRACKS_UPDATED, this.onAudioTracksUpdated, this);\n    hls.off(Events.AUDIO_TRACK_SWITCHING, this.onAudioTrackSwitching, this);\n    hls.off(Events.AUDIO_TRACK_LOADED, this.onAudioTrackLoaded, this);\n    hls.off(Events.ERROR, this.onError, this);\n    hls.off(Events.BUFFER_RESET, this.onBufferReset, this);\n    hls.off(Events.BUFFER_CREATED, this.onBufferCreated, this);\n    hls.off(Events.BUFFER_FLUSHED, this.onBufferFlushed, this);\n    hls.off(Events.INIT_PTS_FOUND, this.onInitPtsFound, this);\n    hls.off(Events.FRAG_BUFFERED, this.onFragBuffered, this);\n  }\n\n  // INIT_PTS_FOUND is triggered when the video track parsed in the stream-controller has a new PTS value\n  onInitPtsFound(\n    event: Events.INIT_PTS_FOUND,\n    { frag, id, initPTS, timescale }: InitPTSFoundData\n  ) {\n    // Always update the new INIT PTS\n    // Can change due level switch\n    if (id === 'main') {\n      const cc = frag.cc;\n      this.initPTS[frag.cc] = { baseTime: initPTS, timescale };\n      this.log(`InitPTS for cc: ${cc} found from main: ${initPTS}`);\n      this.videoTrackCC = cc;\n      // If we are waiting, tick immediately to unblock audio fragment transmuxing\n      if (this.state === State.WAITING_INIT_PTS) {\n        this.tick();\n      }\n    }\n  }\n\n  startLoad(startPosition: number) {\n    if (!this.levels) {\n      this.startPosition = startPosition;\n      this.state = State.STOPPED;\n      return;\n    }\n    const lastCurrentTime = this.lastCurrentTime;\n    this.stopLoad();\n    this.setInterval(TICK_INTERVAL);\n    if (lastCurrentTime > 0 && startPosition === -1) {\n      this.log(\n        `Override startPosition with lastCurrentTime @${lastCurrentTime.toFixed(\n          3\n        )}`\n      );\n      startPosition = lastCurrentTime;\n      this.state = State.IDLE;\n    } else {\n      this.loadedmetadata = false;\n      this.state = State.WAITING_TRACK;\n    }\n    this.nextLoadPosition =\n      this.startPosition =\n      this.lastCurrentTime =\n        startPosition;\n\n    this.tick();\n  }\n\n  doTick() {\n    switch (this.state) {\n      case State.IDLE:\n        this.doTickIdle();\n        break;\n      case State.WAITING_TRACK: {\n        const { levels, trackId } = this;\n        const details = levels?.[trackId]?.details;\n        if (details) {\n          if (this.waitForCdnTuneIn(details)) {\n            break;\n          }\n          this.state = State.WAITING_INIT_PTS;\n        }\n        break;\n      }\n      case State.FRAG_LOADING_WAITING_RETRY: {\n        const now = performance.now();\n        const retryDate = this.retryDate;\n        // if current time is gt than retryDate, or if media seeking let's switch to IDLE state to retry loading\n        if (!retryDate || now >= retryDate || this.media?.seeking) {\n          this.log('RetryDate reached, switch back to IDLE state');\n          this.resetStartWhenNotLoaded(this.trackId);\n          this.state = State.IDLE;\n        }\n        break;\n      }\n      case State.WAITING_INIT_PTS: {\n        // Ensure we don't get stuck in the WAITING_INIT_PTS state if the waiting frag CC doesn't match any initPTS\n        const waitingData = this.waitingData;\n        if (waitingData) {\n          const { frag, part, cache, complete } = waitingData;\n          if (this.initPTS[frag.cc] !== undefined) {\n            this.waitingData = null;\n            this.waitingVideoCC = -1;\n            this.state = State.FRAG_LOADING;\n            const payload = cache.flush();\n            const data: FragLoadedData = {\n              frag,\n              part,\n              payload,\n              networkDetails: null,\n            };\n            this._handleFragmentLoadProgress(data);\n            if (complete) {\n              super._handleFragmentLoadComplete(data);\n            }\n          } else if (this.videoTrackCC !== this.waitingVideoCC) {\n            // Drop waiting fragment if videoTrackCC has changed since waitingFragment was set and initPTS was not found\n            this.log(\n              `Waiting fragment cc (${frag.cc}) cancelled because video is at cc ${this.videoTrackCC}`\n            );\n            this.clearWaitingFragment();\n          } else {\n            // Drop waiting fragment if an earlier fragment is needed\n            const pos = this.getLoadPosition();\n            const bufferInfo = BufferHelper.bufferInfo(\n              this.mediaBuffer,\n              pos,\n              this.config.maxBufferHole\n            );\n            const waitingFragmentAtPosition = fragmentWithinToleranceTest(\n              bufferInfo.end,\n              this.config.maxFragLookUpTolerance,\n              frag\n            );\n            if (waitingFragmentAtPosition < 0) {\n              this.log(\n                `Waiting fragment cc (${frag.cc}) @ ${frag.start} cancelled because another fragment at ${bufferInfo.end} is needed`\n              );\n              this.clearWaitingFragment();\n            }\n          }\n        } else {\n          this.state = State.IDLE;\n        }\n      }\n    }\n\n    this.onTickEnd();\n  }\n\n  clearWaitingFragment() {\n    const waitingData = this.waitingData;\n    if (waitingData) {\n      this.fragmentTracker.removeFragment(waitingData.frag);\n      this.waitingData = null;\n      this.waitingVideoCC = -1;\n      this.state = State.IDLE;\n    }\n  }\n\n  protected resetLoadingState() {\n    this.clearWaitingFragment();\n    super.resetLoadingState();\n  }\n\n  protected onTickEnd() {\n    const { media } = this;\n    if (!media?.readyState) {\n      // Exit early if we don't have media or if the media hasn't buffered anything yet (readyState 0)\n      return;\n    }\n\n    this.lastCurrentTime = media.currentTime;\n  }\n\n  private doTickIdle() {\n    const { hls, levels, media, trackId } = this;\n    const config = hls.config;\n\n    if (!levels?.[trackId]) {\n      return;\n    }\n\n    // if video not attached AND\n    // start fragment already requested OR start frag prefetch not enabled\n    // exit loop\n    // => if media not attached but start frag prefetch is enabled and start frag not requested yet, we will not exit loop\n    if (!media && (this.startFragRequested || !config.startFragPrefetch)) {\n      return;\n    }\n\n    const levelInfo = levels[trackId];\n\n    const trackDetails = levelInfo.details;\n    if (\n      !trackDetails ||\n      (trackDetails.live && this.levelLastLoaded !== trackId) ||\n      this.waitForCdnTuneIn(trackDetails)\n    ) {\n      this.state = State.WAITING_TRACK;\n      return;\n    }\n\n    const bufferable = this.mediaBuffer ? this.mediaBuffer : this.media;\n    if (this.bufferFlushed && bufferable) {\n      this.bufferFlushed = false;\n      this.afterBufferFlushed(\n        bufferable,\n        ElementaryStreamTypes.AUDIO,\n        PlaylistLevelType.AUDIO\n      );\n    }\n\n    const bufferInfo = this.getFwdBufferInfo(\n      bufferable,\n      PlaylistLevelType.AUDIO\n    );\n    if (bufferInfo === null) {\n      return;\n    }\n    const { bufferedTrack, switchingTrack } = this;\n\n    if (!switchingTrack && this._streamEnded(bufferInfo, trackDetails)) {\n      hls.trigger(Events.BUFFER_EOS, { type: 'audio' });\n      this.state = State.ENDED;\n      return;\n    }\n\n    const mainBufferInfo = this.getFwdBufferInfo(\n      this.videoBuffer ? this.videoBuffer : this.media,\n      PlaylistLevelType.MAIN\n    );\n    const bufferLen = bufferInfo.len;\n    const maxBufLen = this.getMaxBufferLength(mainBufferInfo?.len);\n\n    // if buffer length is less than maxBufLen try to load a new fragment\n    if (bufferLen >= maxBufLen && !switchingTrack) {\n      return;\n    }\n    const fragments = trackDetails.fragments;\n    const start = fragments[0].start;\n    let targetBufferTime = bufferInfo.end;\n\n    if (switchingTrack && media) {\n      const pos = this.getLoadPosition();\n      if (bufferedTrack && switchingTrack.attrs !== bufferedTrack.attrs) {\n        targetBufferTime = pos;\n      }\n      // if currentTime (pos) is less than alt audio playlist start time, it means that alt audio is ahead of currentTime\n      if (trackDetails.PTSKnown && pos < start) {\n        // if everything is buffered from pos to start or if audio buffer upfront, let's seek to start\n        if (bufferInfo.end > start || bufferInfo.nextStart) {\n          this.log(\n            'Alt audio track ahead of main track, seek to start of alt audio track'\n          );\n          media.currentTime = start + 0.05;\n        }\n      }\n    }\n\n    let frag = this.getNextFragment(targetBufferTime, trackDetails);\n    let atGap = false;\n    // Avoid loop loading by using nextLoadPosition set for backtracking and skipping consecutive GAP tags\n    if (frag && this.isLoopLoading(frag, targetBufferTime)) {\n      atGap = !!frag.gap;\n      frag = this.getNextFragmentLoopLoading(\n        frag,\n        trackDetails,\n        bufferInfo,\n        PlaylistLevelType.MAIN,\n        maxBufLen\n      );\n    }\n    if (!frag) {\n      this.bufferFlushed = true;\n      return;\n    }\n\n    // Buffer audio up to one target duration ahead of main buffer\n    const atBufferSyncLimit =\n      mainBufferInfo &&\n      frag.start > mainBufferInfo.end + trackDetails.targetduration;\n    if (\n      atBufferSyncLimit ||\n      // Or wait for main buffer after buffing some audio\n      (!mainBufferInfo?.len && bufferInfo.len)\n    ) {\n      // Check fragment-tracker for main fragments since GAP segments do not show up in bufferInfo\n      const mainFrag = this.getAppendedFrag(frag.start, PlaylistLevelType.MAIN);\n      if (mainFrag === null) {\n        return;\n      }\n      // Bridge gaps in main buffer\n      atGap ||=\n        !!mainFrag.gap || (!!atBufferSyncLimit && mainBufferInfo.len === 0);\n      if (\n        (atBufferSyncLimit && !atGap) ||\n        (atGap && bufferInfo.nextStart && bufferInfo.nextStart < mainFrag.end)\n      ) {\n        return;\n      }\n    }\n\n    this.loadFragment(frag, levelInfo, targetBufferTime);\n  }\n\n  protected getMaxBufferLength(mainBufferLength?: number): number {\n    const maxConfigBuffer = super.getMaxBufferLength();\n    if (!mainBufferLength) {\n      return maxConfigBuffer;\n    }\n    return Math.min(\n      Math.max(maxConfigBuffer, mainBufferLength),\n      this.config.maxMaxBufferLength\n    );\n  }\n\n  onMediaDetaching() {\n    this.videoBuffer = null;\n    super.onMediaDetaching();\n  }\n\n  onAudioTracksUpdated(\n    event: Events.AUDIO_TRACKS_UPDATED,\n    { audioTracks }: AudioTracksUpdatedData\n  ) {\n    this.resetTransmuxer();\n    this.levels = audioTracks.map((mediaPlaylist) => new Level(mediaPlaylist));\n  }\n\n  onAudioTrackSwitching(\n    event: Events.AUDIO_TRACK_SWITCHING,\n    data: AudioTrackSwitchingData\n  ) {\n    // if any URL found on new audio track, it is an alternate audio track\n    const altAudio = !!data.url;\n    this.trackId = data.id;\n    const { fragCurrent } = this;\n\n    if (fragCurrent) {\n      fragCurrent.abortRequests();\n      this.removeUnbufferedFrags(fragCurrent.start);\n    }\n    this.resetLoadingState();\n    // destroy useless transmuxer when switching audio to main\n    if (!altAudio) {\n      this.resetTransmuxer();\n    } else {\n      // switching to audio track, start timer if not already started\n      this.setInterval(TICK_INTERVAL);\n    }\n\n    // should we switch tracks ?\n    if (altAudio) {\n      this.switchingTrack = data;\n      // main audio track are handled by stream-controller, just do something if switching to alt audio track\n      this.state = State.IDLE;\n    } else {\n      this.switchingTrack = null;\n      this.bufferedTrack = data;\n      this.state = State.STOPPED;\n    }\n    this.tick();\n  }\n\n  onManifestLoading() {\n    this.fragmentTracker.removeAllFragments();\n    this.startPosition = this.lastCurrentTime = 0;\n    this.bufferFlushed = false;\n    this.levels =\n      this.mainDetails =\n      this.waitingData =\n      this.bufferedTrack =\n      this.cachedTrackLoadedData =\n      this.switchingTrack =\n        null;\n    this.startFragRequested = false;\n    this.trackId = this.videoTrackCC = this.waitingVideoCC = -1;\n  }\n\n  onLevelLoaded(event: Events.LEVEL_LOADED, data: LevelLoadedData) {\n    this.mainDetails = data.details;\n    if (this.cachedTrackLoadedData !== null) {\n      this.hls.trigger(Events.AUDIO_TRACK_LOADED, this.cachedTrackLoadedData);\n      this.cachedTrackLoadedData = null;\n    }\n  }\n\n  onAudioTrackLoaded(event: Events.AUDIO_TRACK_LOADED, data: TrackLoadedData) {\n    if (this.mainDetails == null) {\n      this.cachedTrackLoadedData = data;\n      return;\n    }\n    const { levels } = this;\n    const { details: newDetails, id: trackId } = data;\n    if (!levels) {\n      this.warn(`Audio tracks were reset while loading level ${trackId}`);\n      return;\n    }\n    this.log(\n      `Track ${trackId} loaded [${newDetails.startSN},${newDetails.endSN}]${\n        newDetails.lastPartSn\n          ? `[part-${newDetails.lastPartSn}-${newDetails.lastPartIndex}]`\n          : ''\n      },duration:${newDetails.totalduration}`\n    );\n\n    const track = levels[trackId];\n    let sliding = 0;\n    if (newDetails.live || track.details?.live) {\n      this.checkLiveUpdate(newDetails);\n      const mainDetails = this.mainDetails;\n      if (newDetails.deltaUpdateFailed || !mainDetails) {\n        return;\n      }\n      if (\n        !track.details &&\n        newDetails.hasProgramDateTime &&\n        mainDetails.hasProgramDateTime\n      ) {\n        // Make sure our audio rendition is aligned with the \"main\" rendition, using\n        // pdt as our reference times.\n        alignMediaPlaylistByPDT(newDetails, mainDetails);\n        sliding = newDetails.fragments[0].start;\n      } else {\n        sliding = this.alignPlaylists(newDetails, track.details);\n      }\n    }\n    track.details = newDetails;\n    this.levelLastLoaded = trackId;\n\n    // compute start position if we are aligned with the main playlist\n    if (!this.startFragRequested && (this.mainDetails || !newDetails.live)) {\n      this.setStartPosition(track.details, sliding);\n    }\n    // only switch back to IDLE state if we were waiting for track to start downloading a new fragment\n    if (\n      this.state === State.WAITING_TRACK &&\n      !this.waitForCdnTuneIn(newDetails)\n    ) {\n      this.state = State.IDLE;\n    }\n\n    // trigger handler right now\n    this.tick();\n  }\n\n  _handleFragmentLoadProgress(data: FragLoadedData) {\n    const { frag, part, payload } = data;\n    const { config, trackId, levels } = this;\n    if (!levels) {\n      this.warn(\n        `Audio tracks were reset while fragment load was in progress. Fragment ${frag.sn} of level ${frag.level} will not be buffered`\n      );\n      return;\n    }\n\n    const track = levels[trackId] as Level;\n    if (!track) {\n      this.warn('Audio track is undefined on fragment load progress');\n      return;\n    }\n    const details = track.details as LevelDetails;\n    if (!details) {\n      this.warn('Audio track details undefined on fragment load progress');\n      this.removeUnbufferedFrags(frag.start);\n      return;\n    }\n    const audioCodec =\n      config.defaultAudioCodec || track.audioCodec || 'mp4a.40.2';\n\n    let transmuxer = this.transmuxer;\n    if (!transmuxer) {\n      transmuxer = this.transmuxer = new TransmuxerInterface(\n        this.hls,\n        PlaylistLevelType.AUDIO,\n        this._handleTransmuxComplete.bind(this),\n        this._handleTransmuxerFlush.bind(this)\n      );\n    }\n\n    // Check if we have video initPTS\n    // If not we need to wait for it\n    const initPTS = this.initPTS[frag.cc];\n    const initSegmentData = frag.initSegment?.data;\n    if (initPTS !== undefined) {\n      // this.log(`Transmuxing ${sn} of [${details.startSN} ,${details.endSN}],track ${trackId}`);\n      // time Offset is accurate if level PTS is known, or if playlist is not sliding (not live)\n      const accurateTimeOffset = false; // details.PTSKnown || !details.live;\n      const partIndex = part ? part.index : -1;\n      const partial = partIndex !== -1;\n      const chunkMeta = new ChunkMetadata(\n        frag.level,\n        frag.sn as number,\n        frag.stats.chunkCount,\n        payload.byteLength,\n        partIndex,\n        partial\n      );\n      transmuxer.push(\n        payload,\n        initSegmentData,\n        audioCodec,\n        '',\n        frag,\n        part,\n        details.totalduration,\n        accurateTimeOffset,\n        chunkMeta,\n        initPTS\n      );\n    } else {\n      this.log(\n        `Unknown video PTS for cc ${frag.cc}, waiting for video PTS before demuxing audio frag ${frag.sn} of [${details.startSN} ,${details.endSN}],track ${trackId}`\n      );\n      const { cache } = (this.waitingData = this.waitingData || {\n        frag,\n        part,\n        cache: new ChunkCache(),\n        complete: false,\n      });\n      cache.push(new Uint8Array(payload));\n      this.waitingVideoCC = this.videoTrackCC;\n      this.state = State.WAITING_INIT_PTS;\n    }\n  }\n\n  protected _handleFragmentLoadComplete(fragLoadedData: FragLoadedData) {\n    if (this.waitingData) {\n      this.waitingData.complete = true;\n      return;\n    }\n    super._handleFragmentLoadComplete(fragLoadedData);\n  }\n\n  onBufferReset(/* event: Events.BUFFER_RESET */) {\n    // reset reference to sourcebuffers\n    this.mediaBuffer = this.videoBuffer = null;\n    this.loadedmetadata = false;\n  }\n\n  onBufferCreated(event: Events.BUFFER_CREATED, data: BufferCreatedData) {\n    const audioTrack = data.tracks.audio;\n    if (audioTrack) {\n      this.mediaBuffer = audioTrack.buffer || null;\n    }\n    if (data.tracks.video) {\n      this.videoBuffer = data.tracks.video.buffer || null;\n    }\n  }\n\n  onFragBuffered(event: Events.FRAG_BUFFERED, data: FragBufferedData) {\n    const { frag, part } = data;\n    if (frag.type !== PlaylistLevelType.AUDIO) {\n      if (!this.loadedmetadata && frag.type === PlaylistLevelType.MAIN) {\n        const bufferable = this.videoBuffer || this.media;\n        if (bufferable) {\n          const bufferedTimeRanges = BufferHelper.getBuffered(bufferable);\n          if (bufferedTimeRanges.length) {\n            this.loadedmetadata = true;\n          }\n        }\n      }\n      return;\n    }\n    if (this.fragContextChanged(frag)) {\n      // If a level switch was requested while a fragment was buffering, it will emit the FRAG_BUFFERED event upon completion\n      // Avoid setting state back to IDLE or concluding the audio switch; otherwise, the switched-to track will not buffer\n      this.warn(\n        `Fragment ${frag.sn}${part ? ' p: ' + part.index : ''} of level ${\n          frag.level\n        } finished buffering, but was aborted. state: ${\n          this.state\n        }, audioSwitch: ${\n          this.switchingTrack ? this.switchingTrack.name : 'false'\n        }`\n      );\n      return;\n    }\n    if (frag.sn !== 'initSegment') {\n      this.fragPrevious = frag;\n      const track = this.switchingTrack;\n      if (track) {\n        this.bufferedTrack = track;\n        this.switchingTrack = null;\n        this.hls.trigger(Events.AUDIO_TRACK_SWITCHED, { ...track });\n      }\n    }\n    this.fragBufferedComplete(frag, part);\n  }\n\n  private onError(event: Events.ERROR, data: ErrorData) {\n    if (data.fatal) {\n      this.state = State.ERROR;\n      return;\n    }\n    switch (data.details) {\n      case ErrorDetails.FRAG_GAP:\n      case ErrorDetails.FRAG_PARSING_ERROR:\n      case ErrorDetails.FRAG_DECRYPT_ERROR:\n      case ErrorDetails.FRAG_LOAD_ERROR:\n      case ErrorDetails.FRAG_LOAD_TIMEOUT:\n      case ErrorDetails.KEY_LOAD_ERROR:\n      case ErrorDetails.KEY_LOAD_TIMEOUT:\n        this.onFragmentOrKeyLoadError(PlaylistLevelType.AUDIO, data);\n        break;\n      case ErrorDetails.AUDIO_TRACK_LOAD_ERROR:\n      case ErrorDetails.AUDIO_TRACK_LOAD_TIMEOUT:\n      case ErrorDetails.LEVEL_PARSING_ERROR:\n        // in case of non fatal error while loading track, if not retrying to load track, switch back to IDLE\n        if (\n          !data.levelRetry &&\n          this.state === State.WAITING_TRACK &&\n          data.context?.type === PlaylistContextType.AUDIO_TRACK\n        ) {\n          this.state = State.IDLE;\n        }\n        break;\n      case ErrorDetails.BUFFER_FULL_ERROR:\n        if (!data.parent || data.parent !== 'audio') {\n          return;\n        }\n        if (this.reduceLengthAndFlushBuffer(data)) {\n          this.bufferedTrack = null;\n          super.flushMainBuffer(0, Number.POSITIVE_INFINITY, 'audio');\n        }\n        break;\n      case ErrorDetails.INTERNAL_EXCEPTION:\n        this.recoverWorkerError(data);\n        break;\n      default:\n        break;\n    }\n  }\n\n  private onBufferFlushed(\n    event: Events.BUFFER_FLUSHED,\n    { type }: BufferFlushedData\n  ) {\n    if (type === ElementaryStreamTypes.AUDIO) {\n      this.bufferFlushed = true;\n      if (this.state === State.ENDED) {\n        this.state = State.IDLE;\n      }\n    }\n  }\n\n  private _handleTransmuxComplete(transmuxResult: TransmuxerResult) {\n    const id = 'audio';\n    const { hls } = this;\n    const { remuxResult, chunkMeta } = transmuxResult;\n\n    const context = this.getCurrentContext(chunkMeta);\n    if (!context) {\n      this.resetWhenMissingContext(chunkMeta);\n      return;\n    }\n    const { frag, part, level } = context;\n    const { details } = level;\n    const { audio, text, id3, initSegment } = remuxResult;\n\n    // Check if the current fragment has been aborted. We check this by first seeing if we're still playing the current level.\n    // If we are, subsequently check if the currently loading fragment (fragCurrent) has changed.\n    if (this.fragContextChanged(frag) || !details) {\n      this.fragmentTracker.removeFragment(frag);\n      return;\n    }\n\n    this.state = State.PARSING;\n    if (this.switchingTrack && audio) {\n      this.completeAudioSwitch(this.switchingTrack);\n    }\n\n    if (initSegment?.tracks) {\n      const mapFragment = frag.initSegment || frag;\n      this._bufferInitSegment(initSegment.tracks, mapFragment, chunkMeta);\n      hls.trigger(Events.FRAG_PARSING_INIT_SEGMENT, {\n        frag: mapFragment,\n        id,\n        tracks: initSegment.tracks,\n      });\n      // Only flush audio from old audio tracks when PTS is known on new audio track\n    }\n    if (audio) {\n      const { startPTS, endPTS, startDTS, endDTS } = audio;\n      if (part) {\n        part.elementaryStreams[ElementaryStreamTypes.AUDIO] = {\n          startPTS,\n          endPTS,\n          startDTS,\n          endDTS,\n        };\n      }\n      frag.setElementaryStreamInfo(\n        ElementaryStreamTypes.AUDIO,\n        startPTS,\n        endPTS,\n        startDTS,\n        endDTS\n      );\n      this.bufferFragmentData(audio, frag, part, chunkMeta);\n    }\n\n    if (id3?.samples?.length) {\n      const emittedID3: FragParsingMetadataData = Object.assign(\n        {\n          id,\n          frag,\n          details,\n        },\n        id3\n      );\n      hls.trigger(Events.FRAG_PARSING_METADATA, emittedID3);\n    }\n    if (text) {\n      const emittedText: FragParsingUserdataData = Object.assign(\n        {\n          id,\n          frag,\n          details,\n        },\n        text\n      );\n      hls.trigger(Events.FRAG_PARSING_USERDATA, emittedText);\n    }\n  }\n\n  private _bufferInitSegment(\n    tracks: TrackSet,\n    frag: Fragment,\n    chunkMeta: ChunkMetadata\n  ) {\n    if (this.state !== State.PARSING) {\n      return;\n    }\n    // delete any video track found on audio transmuxer\n    if (tracks.video) {\n      delete tracks.video;\n    }\n\n    // include levelCodec in audio and video tracks\n    const track = tracks.audio;\n    if (!track) {\n      return;\n    }\n\n    track.levelCodec = track.codec;\n    track.id = 'audio';\n    this.log(\n      `Init audio buffer, container:${track.container}, codecs[parsed]=[${track.codec}]`\n    );\n    this.hls.trigger(Events.BUFFER_CODECS, tracks);\n    const initSegment = track.initSegment;\n    if (initSegment?.byteLength) {\n      const segment: BufferAppendingData = {\n        type: 'audio',\n        frag,\n        part: null,\n        chunkMeta,\n        parent: frag.type,\n        data: initSegment,\n      };\n      this.hls.trigger(Events.BUFFER_APPENDING, segment);\n    }\n    // trigger handler right now\n    this.tick();\n  }\n\n  protected loadFragment(\n    frag: Fragment,\n    track: Level,\n    targetBufferTime: number\n  ) {\n    // only load if fragment is not loaded or if in audio switch\n    const fragState = this.fragmentTracker.getState(frag);\n    this.fragCurrent = frag;\n\n    // we force a frag loading in audio switch as fragment tracker might not have evicted previous frags in case of quick audio switch\n    if (\n      this.switchingTrack ||\n      fragState === FragmentState.NOT_LOADED ||\n      fragState === FragmentState.PARTIAL\n    ) {\n      if (frag.sn === 'initSegment') {\n        this._loadInitSegment(frag, track);\n      } else if (track.details?.live && !this.initPTS[frag.cc]) {\n        this.log(\n          `Waiting for video PTS in continuity counter ${frag.cc} of live stream before loading audio fragment ${frag.sn} of level ${this.trackId}`\n        );\n        this.state = State.WAITING_INIT_PTS;\n      } else {\n        this.startFragRequested = true;\n        super.loadFragment(frag, track, targetBufferTime);\n      }\n    } else {\n      this.clearTrackerIfNeeded(frag);\n    }\n  }\n\n  private completeAudioSwitch(switchingTrack: MediaPlaylist) {\n    const { hls, media, bufferedTrack } = this;\n    const bufferedAttributes = bufferedTrack?.attrs;\n    const switchAttributes = switchingTrack.attrs;\n    if (\n      media &&\n      bufferedAttributes &&\n      (bufferedAttributes.CHANNELS !== switchAttributes.CHANNELS ||\n        bufferedAttributes.NAME !== switchAttributes.NAME ||\n        bufferedAttributes.LANGUAGE !== switchAttributes.LANGUAGE)\n    ) {\n      this.log('Switching audio track : flushing all audio');\n      super.flushMainBuffer(0, Number.POSITIVE_INFINITY, 'audio');\n    }\n    this.bufferedTrack = switchingTrack;\n    this.switchingTrack = null;\n    hls.trigger(Events.AUDIO_TRACK_SWITCHED, { ...switchingTrack });\n  }\n}\nexport default AudioStreamController;\n","import { Events } from '../events';\nimport { ErrorTypes, ErrorDetails } from '../errors';\nimport {\n  ManifestParsedData,\n  AudioTracksUpdatedData,\n  ErrorData,\n  LevelLoadingData,\n  AudioTrackLoadedData,\n  LevelSwitchingData,\n} from '../types/events';\nimport BasePlaylistController from './base-playlist-controller';\nimport { PlaylistContextType } from '../types/loader';\nimport type Hls from '../hls';\nimport type { HlsUrlParameters } from '../types/level';\nimport type { MediaPlaylist } from '../types/media-playlist';\n\nclass AudioTrackController extends BasePlaylistController {\n  private tracks: MediaPlaylist[] = [];\n  private groupId: string | null = null;\n  private tracksInGroup: MediaPlaylist[] = [];\n  private trackId: number = -1;\n  private currentTrack: MediaPlaylist | null = null;\n  private selectDefaultTrack: boolean = true;\n\n  constructor(hls: Hls) {\n    super(hls, '[audio-track-controller]');\n    this.registerListeners();\n  }\n\n  private registerListeners() {\n    const { hls } = this;\n    hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    hls.on(Events.MANIFEST_PARSED, this.onManifestParsed, this);\n    hls.on(Events.LEVEL_LOADING, this.onLevelLoading, this);\n    hls.on(Events.LEVEL_SWITCHING, this.onLevelSwitching, this);\n    hls.on(Events.AUDIO_TRACK_LOADED, this.onAudioTrackLoaded, this);\n    hls.on(Events.ERROR, this.onError, this);\n  }\n\n  private unregisterListeners() {\n    const { hls } = this;\n    hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    hls.off(Events.MANIFEST_PARSED, this.onManifestParsed, this);\n    hls.off(Events.LEVEL_LOADING, this.onLevelLoading, this);\n    hls.off(Events.LEVEL_SWITCHING, this.onLevelSwitching, this);\n    hls.off(Events.AUDIO_TRACK_LOADED, this.onAudioTrackLoaded, this);\n    hls.off(Events.ERROR, this.onError, this);\n  }\n\n  public destroy() {\n    this.unregisterListeners();\n    this.tracks.length = 0;\n    this.tracksInGroup.length = 0;\n    this.currentTrack = null;\n    super.destroy();\n  }\n\n  protected onManifestLoading(): void {\n    this.tracks = [];\n    this.groupId = null;\n    this.tracksInGroup = [];\n    this.trackId = -1;\n    this.currentTrack = null;\n    this.selectDefaultTrack = true;\n  }\n\n  protected onManifestParsed(\n    event: Events.MANIFEST_PARSED,\n    data: ManifestParsedData\n  ): void {\n    this.tracks = data.audioTracks || [];\n  }\n\n  protected onAudioTrackLoaded(\n    event: Events.AUDIO_TRACK_LOADED,\n    data: AudioTrackLoadedData\n  ): void {\n    const { id, groupId, details } = data;\n    const trackInActiveGroup = this.tracksInGroup[id];\n\n    if (!trackInActiveGroup || trackInActiveGroup.groupId !== groupId) {\n      this.warn(\n        `Track with id:${id} and group:${groupId} not found in active group ${trackInActiveGroup.groupId}`\n      );\n      return;\n    }\n\n    const curDetails = trackInActiveGroup.details;\n    trackInActiveGroup.details = data.details;\n    this.log(\n      `audio-track ${id} \"${trackInActiveGroup.name}\" lang:${trackInActiveGroup.lang} group:${groupId} loaded [${details.startSN}-${details.endSN}]`\n    );\n\n    if (id === this.trackId) {\n      this.playlistLoaded(id, data, curDetails);\n    }\n  }\n\n  protected onLevelLoading(\n    event: Events.LEVEL_LOADING,\n    data: LevelLoadingData\n  ): void {\n    this.switchLevel(data.level);\n  }\n\n  protected onLevelSwitching(\n    event: Events.LEVEL_SWITCHING,\n    data: LevelSwitchingData\n  ): void {\n    this.switchLevel(data.level);\n  }\n\n  private switchLevel(levelIndex: number) {\n    const levelInfo = this.hls.levels[levelIndex];\n\n    if (!levelInfo?.audioGroupIds) {\n      return;\n    }\n\n    const audioGroupId = levelInfo.audioGroupIds[levelInfo.urlId];\n    if (this.groupId !== audioGroupId) {\n      this.groupId = audioGroupId || null;\n\n      const audioTracks = this.tracks.filter(\n        (track): boolean => !audioGroupId || track.groupId === audioGroupId\n      );\n\n      // Disable selectDefaultTrack if there are no default tracks\n      if (\n        this.selectDefaultTrack &&\n        !audioTracks.some((track) => track.default)\n      ) {\n        this.selectDefaultTrack = false;\n      }\n\n      this.tracksInGroup = audioTracks;\n      const audioTracksUpdated: AudioTracksUpdatedData = { audioTracks };\n      this.log(\n        `Updating audio tracks, ${audioTracks.length} track(s) found in group:${audioGroupId}`\n      );\n      this.hls.trigger(Events.AUDIO_TRACKS_UPDATED, audioTracksUpdated);\n\n      this.selectInitialTrack();\n    } else if (this.shouldReloadPlaylist(this.currentTrack)) {\n      // Retry playlist loading if no playlist is or has been loaded yet\n      this.setAudioTrack(this.trackId);\n    }\n  }\n\n  protected onError(event: Events.ERROR, data: ErrorData): void {\n    if (data.fatal || !data.context) {\n      return;\n    }\n\n    if (\n      data.context.type === PlaylistContextType.AUDIO_TRACK &&\n      data.context.id === this.trackId &&\n      data.context.groupId === this.groupId\n    ) {\n      this.requestScheduled = -1;\n      this.checkRetry(data);\n    }\n  }\n\n  get audioTracks(): MediaPlaylist[] {\n    return this.tracksInGroup;\n  }\n\n  get audioTrack(): number {\n    return this.trackId;\n  }\n\n  set audioTrack(newId: number) {\n    // If audio track is selected from API then don't choose from the manifest default track\n    this.selectDefaultTrack = false;\n    this.setAudioTrack(newId);\n  }\n\n  private setAudioTrack(newId: number): void {\n    const tracks = this.tracksInGroup;\n\n    // check if level idx is valid\n    if (newId < 0 || newId >= tracks.length) {\n      this.warn('Invalid id passed to audio-track controller');\n      return;\n    }\n\n    // stopping live reloading timer if any\n    this.clearTimer();\n\n    const lastTrack = this.currentTrack;\n    tracks[this.trackId];\n    const track = tracks[newId];\n    const { groupId, name } = track;\n    this.log(\n      `Switching to audio-track ${newId} \"${name}\" lang:${track.lang} group:${groupId}`\n    );\n    this.trackId = newId;\n    this.currentTrack = track;\n    this.selectDefaultTrack = false;\n    this.hls.trigger(Events.AUDIO_TRACK_SWITCHING, { ...track });\n    // Do not reload track unless live\n    if (track.details && !track.details.live) {\n      return;\n    }\n    const hlsUrlParameters = this.switchParams(track.url, lastTrack?.details);\n    this.loadPlaylist(hlsUrlParameters);\n  }\n\n  private selectInitialTrack(): void {\n    const audioTracks = this.tracksInGroup;\n    const trackId =\n      this.findTrackId(this.currentTrack) | this.findTrackId(null);\n\n    if (trackId !== -1) {\n      this.setAudioTrack(trackId);\n    } else {\n      const error = new Error(\n        `No track found for running audio group-ID: ${this.groupId} track count: ${audioTracks.length}`\n      );\n      this.warn(error.message);\n\n      this.hls.trigger(Events.ERROR, {\n        type: ErrorTypes.MEDIA_ERROR,\n        details: ErrorDetails.AUDIO_TRACK_LOAD_ERROR,\n        fatal: true,\n        error,\n      });\n    }\n  }\n\n  private findTrackId(currentTrack: MediaPlaylist | null): number {\n    const audioTracks = this.tracksInGroup;\n    for (let i = 0; i < audioTracks.length; i++) {\n      const track = audioTracks[i];\n      if (!this.selectDefaultTrack || track.default) {\n        if (\n          !currentTrack ||\n          (currentTrack.attrs['STABLE-RENDITION-ID'] !== undefined &&\n            currentTrack.attrs['STABLE-RENDITION-ID'] ===\n              track.attrs['STABLE-RENDITION-ID'])\n        ) {\n          return track.id;\n        }\n        if (\n          currentTrack.name === track.name &&\n          currentTrack.lang === track.lang\n        ) {\n          return track.id;\n        }\n      }\n    }\n    return -1;\n  }\n\n  protected loadPlaylist(hlsUrlParameters?: HlsUrlParameters): void {\n    super.loadPlaylist();\n    const audioTrack = this.tracksInGroup[this.trackId];\n    if (this.shouldLoadPlaylist(audioTrack)) {\n      const id = audioTrack.id;\n      const groupId = audioTrack.groupId as string;\n      let url = audioTrack.url;\n      if (hlsUrlParameters) {\n        try {\n          url = hlsUrlParameters.addDirectives(url);\n        } catch (error) {\n          this.warn(\n            `Could not construct new URL with HLS Delivery Directives: ${error}`\n          );\n        }\n      }\n      // track not retrieved yet, or live playlist we need to (re)load it\n      this.log(\n        `loading audio-track playlist ${id} \"${audioTrack.name}\" lang:${audioTrack.lang} group:${groupId}`\n      );\n      this.clearTimer();\n      this.hls.trigger(Events.AUDIO_TRACK_LOADING, {\n        url,\n        id,\n        groupId,\n        deliveryDirectives: hlsUrlParameters || null,\n      });\n    }\n  }\n}\n\nexport default AudioTrackController;\n","import { Events } from '../events';\nimport { Bufferable, BufferHelper } from '../utils/buffer-helper';\nimport { findFragmentByPTS } from './fragment-finders';\nimport { alignMediaPlaylistByPDT } from '../utils/discontinuities';\nimport { addSliding } from './level-helper';\nimport { FragmentState } from './fragment-tracker';\nimport BaseStreamController, { State } from './base-stream-controller';\nimport { PlaylistLevelType } from '../types/loader';\nimport { Level } from '../types/level';\nimport { subtitleOptionsIdentical } from '../utils/media-option-attributes';\nimport { ErrorDetails, ErrorTypes } from '../errors';\nimport type { NetworkComponentAPI } from '../types/component-api';\nimport type Hls from '../hls';\nimport type { FragmentTracker } from './fragment-tracker';\nimport type KeyLoader from '../loader/key-loader';\nimport type { LevelDetails } from '../loader/level-details';\nimport type { Fragment } from '../loader/fragment';\nimport type {\n  ErrorData,\n  FragLoadedData,\n  SubtitleFragProcessed,\n  SubtitleTracksUpdatedData,\n  TrackLoadedData,\n  TrackSwitchedData,\n  BufferFlushingData,\n  LevelLoadedData,\n  FragBufferedData,\n} from '../types/events';\n\nconst TICK_INTERVAL = 500; // how often to tick in ms\n\ninterface TimeRange {\n  start: number;\n  end: number;\n}\n\nexport class SubtitleStreamController\n  extends BaseStreamController\n  implements NetworkComponentAPI\n{\n  protected levels: Array<Level> = [];\n\n  private currentTrackId: number = -1;\n  private tracksBuffered: Array<TimeRange[]> = [];\n  private mainDetails: LevelDetails | null = null;\n\n  constructor(\n    hls: Hls,\n    fragmentTracker: FragmentTracker,\n    keyLoader: KeyLoader\n  ) {\n    super(\n      hls,\n      fragmentTracker,\n      keyLoader,\n      '[subtitle-stream-controller]',\n      PlaylistLevelType.SUBTITLE\n    );\n    this._registerListeners();\n  }\n\n  protected onHandlerDestroying() {\n    this._unregisterListeners();\n    this.mainDetails = null;\n  }\n\n  private _registerListeners() {\n    const { hls } = this;\n    hls.on(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n    hls.on(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n    hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    hls.on(Events.LEVEL_LOADED, this.onLevelLoaded, this);\n    hls.on(Events.ERROR, this.onError, this);\n    hls.on(Events.SUBTITLE_TRACKS_UPDATED, this.onSubtitleTracksUpdated, this);\n    hls.on(Events.SUBTITLE_TRACK_SWITCH, this.onSubtitleTrackSwitch, this);\n    hls.on(Events.SUBTITLE_TRACK_LOADED, this.onSubtitleTrackLoaded, this);\n    hls.on(Events.SUBTITLE_FRAG_PROCESSED, this.onSubtitleFragProcessed, this);\n    hls.on(Events.BUFFER_FLUSHING, this.onBufferFlushing, this);\n    hls.on(Events.FRAG_BUFFERED, this.onFragBuffered, this);\n  }\n\n  private _unregisterListeners() {\n    const { hls } = this;\n    hls.off(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n    hls.off(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n    hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    hls.off(Events.LEVEL_LOADED, this.onLevelLoaded, this);\n    hls.off(Events.ERROR, this.onError, this);\n    hls.off(Events.SUBTITLE_TRACKS_UPDATED, this.onSubtitleTracksUpdated, this);\n    hls.off(Events.SUBTITLE_TRACK_SWITCH, this.onSubtitleTrackSwitch, this);\n    hls.off(Events.SUBTITLE_TRACK_LOADED, this.onSubtitleTrackLoaded, this);\n    hls.off(Events.SUBTITLE_FRAG_PROCESSED, this.onSubtitleFragProcessed, this);\n    hls.off(Events.BUFFER_FLUSHING, this.onBufferFlushing, this);\n    hls.off(Events.FRAG_BUFFERED, this.onFragBuffered, this);\n  }\n\n  startLoad(startPosition: number) {\n    this.stopLoad();\n    this.state = State.IDLE;\n\n    this.setInterval(TICK_INTERVAL);\n\n    this.nextLoadPosition =\n      this.startPosition =\n      this.lastCurrentTime =\n        startPosition;\n\n    this.tick();\n  }\n\n  onManifestLoading() {\n    this.mainDetails = null;\n    this.fragmentTracker.removeAllFragments();\n  }\n\n  onMediaDetaching(): void {\n    this.tracksBuffered = [];\n    super.onMediaDetaching();\n  }\n\n  onLevelLoaded(event: Events.LEVEL_LOADED, data: LevelLoadedData) {\n    this.mainDetails = data.details;\n  }\n\n  onSubtitleFragProcessed(\n    event: Events.SUBTITLE_FRAG_PROCESSED,\n    data: SubtitleFragProcessed\n  ) {\n    const { frag, success } = data;\n    this.fragPrevious = frag;\n    this.state = State.IDLE;\n    if (!success) {\n      return;\n    }\n\n    const buffered = this.tracksBuffered[this.currentTrackId];\n    if (!buffered) {\n      return;\n    }\n\n    // Create/update a buffered array matching the interface used by BufferHelper.bufferedInfo\n    // so we can re-use the logic used to detect how much has been buffered\n    let timeRange: TimeRange | undefined;\n    const fragStart = frag.start;\n    for (let i = 0; i < buffered.length; i++) {\n      if (fragStart >= buffered[i].start && fragStart <= buffered[i].end) {\n        timeRange = buffered[i];\n        break;\n      }\n    }\n\n    const fragEnd = frag.start + frag.duration;\n    if (timeRange) {\n      timeRange.end = fragEnd;\n    } else {\n      timeRange = {\n        start: fragStart,\n        end: fragEnd,\n      };\n      buffered.push(timeRange);\n    }\n    this.fragmentTracker.fragBuffered(frag);\n  }\n\n  onBufferFlushing(event: Events.BUFFER_FLUSHING, data: BufferFlushingData) {\n    const { startOffset, endOffset } = data;\n    if (startOffset === 0 && endOffset !== Number.POSITIVE_INFINITY) {\n      const endOffsetSubtitles = endOffset - 1;\n      if (endOffsetSubtitles <= 0) {\n        return;\n      }\n      data.endOffsetSubtitles = Math.max(0, endOffsetSubtitles);\n      this.tracksBuffered.forEach((buffered) => {\n        for (let i = 0; i < buffered.length; ) {\n          if (buffered[i].end <= endOffsetSubtitles) {\n            buffered.shift();\n            continue;\n          } else if (buffered[i].start < endOffsetSubtitles) {\n            buffered[i].start = endOffsetSubtitles;\n          } else {\n            break;\n          }\n          i++;\n        }\n      });\n      this.fragmentTracker.removeFragmentsInRange(\n        startOffset,\n        endOffsetSubtitles,\n        PlaylistLevelType.SUBTITLE\n      );\n    }\n  }\n\n  onFragBuffered(event: Events.FRAG_BUFFERED, data: FragBufferedData) {\n    if (!this.loadedmetadata && data.frag.type === PlaylistLevelType.MAIN) {\n      if (this.media?.buffered.length) {\n        this.loadedmetadata = true;\n      }\n    }\n  }\n\n  // If something goes wrong, proceed to next frag, if we were processing one.\n  onError(event: Events.ERROR, data: ErrorData) {\n    const frag = data.frag;\n\n    if (frag?.type === PlaylistLevelType.SUBTITLE) {\n      if (this.fragCurrent) {\n        this.fragCurrent.abortRequests();\n      }\n      if (this.state !== State.STOPPED) {\n        this.state = State.IDLE;\n      }\n    }\n  }\n\n  // Got all new subtitle levels.\n  onSubtitleTracksUpdated(\n    event: Events.SUBTITLE_TRACKS_UPDATED,\n    { subtitleTracks }: SubtitleTracksUpdatedData\n  ) {\n    if (subtitleOptionsIdentical(this.levels, subtitleTracks)) {\n      this.levels = subtitleTracks.map(\n        (mediaPlaylist) => new Level(mediaPlaylist)\n      );\n      return;\n    }\n    this.tracksBuffered = [];\n    this.levels = subtitleTracks.map((mediaPlaylist) => {\n      const level = new Level(mediaPlaylist);\n      this.tracksBuffered[level.id] = [];\n      return level;\n    });\n    this.fragmentTracker.removeFragmentsInRange(\n      0,\n      Number.POSITIVE_INFINITY,\n      PlaylistLevelType.SUBTITLE\n    );\n    this.fragPrevious = null;\n    this.mediaBuffer = null;\n  }\n\n  onSubtitleTrackSwitch(\n    event: Events.SUBTITLE_TRACK_SWITCH,\n    data: TrackSwitchedData\n  ) {\n    this.currentTrackId = data.id;\n\n    if (!this.levels.length || this.currentTrackId === -1) {\n      this.clearInterval();\n      return;\n    }\n\n    // Check if track has the necessary details to load fragments\n    const currentTrack = this.levels[this.currentTrackId];\n    if (currentTrack?.details) {\n      this.mediaBuffer = this.mediaBufferTimeRanges;\n    } else {\n      this.mediaBuffer = null;\n    }\n    if (currentTrack) {\n      this.setInterval(TICK_INTERVAL);\n    }\n  }\n\n  // Got a new set of subtitle fragments.\n  onSubtitleTrackLoaded(\n    event: Events.SUBTITLE_TRACK_LOADED,\n    data: TrackLoadedData\n  ) {\n    const { details: newDetails, id: trackId } = data;\n    const { currentTrackId, levels } = this;\n    if (!levels.length) {\n      return;\n    }\n    const track: Level = levels[currentTrackId];\n    if (trackId >= levels.length || trackId !== currentTrackId || !track) {\n      return;\n    }\n    this.mediaBuffer = this.mediaBufferTimeRanges;\n    let sliding = 0;\n    if (newDetails.live || track.details?.live) {\n      const mainDetails = this.mainDetails;\n      if (newDetails.deltaUpdateFailed || !mainDetails) {\n        return;\n      }\n      const mainSlidingStartFragment = mainDetails.fragments[0];\n      if (!track.details) {\n        if (newDetails.hasProgramDateTime && mainDetails.hasProgramDateTime) {\n          alignMediaPlaylistByPDT(newDetails, mainDetails);\n          sliding = newDetails.fragments[0].start;\n        } else if (mainSlidingStartFragment) {\n          // line up live playlist with main so that fragments in range are loaded\n          sliding = mainSlidingStartFragment.start;\n          addSliding(newDetails, sliding);\n        }\n      } else {\n        sliding = this.alignPlaylists(newDetails, track.details);\n        if (sliding === 0 && mainSlidingStartFragment) {\n          // realign with main when there is no overlap with last refresh\n          sliding = mainSlidingStartFragment.start;\n          addSliding(newDetails, sliding);\n        }\n      }\n    }\n    track.details = newDetails;\n    this.levelLastLoaded = trackId;\n\n    if (!this.startFragRequested && (this.mainDetails || !newDetails.live)) {\n      this.setStartPosition(track.details, sliding);\n    }\n\n    // trigger handler right now\n    this.tick();\n\n    // If playlist is misaligned because of bad PDT or drift, delete details to resync with main on reload\n    if (\n      newDetails.live &&\n      !this.fragCurrent &&\n      this.media &&\n      this.state === State.IDLE\n    ) {\n      const foundFrag = findFragmentByPTS(\n        null,\n        newDetails.fragments,\n        this.media.currentTime,\n        0\n      );\n      if (!foundFrag) {\n        this.warn('Subtitle playlist not aligned with playback');\n        track.details = undefined;\n      }\n    }\n  }\n\n  _handleFragmentLoadComplete(fragLoadedData: FragLoadedData) {\n    const { frag, payload } = fragLoadedData;\n    const decryptData = frag.decryptdata;\n    const hls = this.hls;\n\n    if (this.fragContextChanged(frag)) {\n      return;\n    }\n    // check to see if the payload needs to be decrypted\n    if (\n      payload &&\n      payload.byteLength > 0 &&\n      decryptData &&\n      decryptData.key &&\n      decryptData.iv &&\n      decryptData.method === 'AES-128'\n    ) {\n      const startTime = performance.now();\n      // decrypt the subtitles\n      this.decrypter\n        .decrypt(\n          new Uint8Array(payload),\n          decryptData.key.buffer,\n          decryptData.iv.buffer\n        )\n        .catch((err) => {\n          hls.trigger(Events.ERROR, {\n            type: ErrorTypes.MEDIA_ERROR,\n            details: ErrorDetails.FRAG_DECRYPT_ERROR,\n            fatal: false,\n            error: err,\n            reason: err.message,\n            frag,\n          });\n          throw err;\n        })\n        .then((decryptedData) => {\n          const endTime = performance.now();\n          hls.trigger(Events.FRAG_DECRYPTED, {\n            frag,\n            payload: decryptedData,\n            stats: {\n              tstart: startTime,\n              tdecrypt: endTime,\n            },\n          });\n        })\n        .catch((err) => {\n          this.warn(`${err.name}: ${err.message}`);\n          this.state = State.IDLE;\n        });\n    }\n  }\n\n  doTick() {\n    if (!this.media) {\n      this.state = State.IDLE;\n      return;\n    }\n\n    if (this.state === State.IDLE) {\n      const { currentTrackId, levels } = this;\n      const track = levels[currentTrackId];\n      if (!levels.length || !track || !track.details) {\n        return;\n      }\n      const { config } = this;\n      const currentTime = this.getLoadPosition();\n      const bufferedInfo = BufferHelper.bufferedInfo(\n        this.tracksBuffered[this.currentTrackId] || [],\n        currentTime,\n        config.maxBufferHole\n      );\n      const { end: targetBufferTime, len: bufferLen } = bufferedInfo;\n\n      const mainBufferInfo = this.getFwdBufferInfo(\n        this.media,\n        PlaylistLevelType.MAIN\n      );\n      const trackDetails = track.details as LevelDetails;\n      const maxBufLen =\n        this.getMaxBufferLength(mainBufferInfo?.len) +\n        trackDetails.levelTargetDuration;\n\n      if (bufferLen > maxBufLen) {\n        return;\n      }\n      const fragments = trackDetails.fragments;\n      const fragLen = fragments.length;\n      const end = trackDetails.edge;\n\n      let foundFrag: Fragment | null = null;\n      const fragPrevious = this.fragPrevious;\n      if (targetBufferTime < end) {\n        const tolerance = config.maxFragLookUpTolerance;\n        const lookupTolerance =\n          targetBufferTime > end - tolerance ? 0 : tolerance;\n        foundFrag = findFragmentByPTS(\n          fragPrevious,\n          fragments,\n          Math.max(fragments[0].start, targetBufferTime),\n          lookupTolerance\n        );\n        if (\n          !foundFrag &&\n          fragPrevious &&\n          fragPrevious.start < fragments[0].start\n        ) {\n          foundFrag = fragments[0];\n        }\n      } else {\n        foundFrag = fragments[fragLen - 1];\n      }\n      if (!foundFrag) {\n        return;\n      }\n      foundFrag = this.mapToInitFragWhenRequired(foundFrag) as Fragment;\n      if (foundFrag.sn !== 'initSegment') {\n        // Load earlier fragment in same discontinuity to make up for misaligned playlists and cues that extend beyond end of segment\n        const curSNIdx = foundFrag.sn - trackDetails.startSN;\n        const prevFrag = fragments[curSNIdx - 1];\n        if (\n          prevFrag &&\n          prevFrag.cc === foundFrag.cc &&\n          this.fragmentTracker.getState(prevFrag) === FragmentState.NOT_LOADED\n        ) {\n          foundFrag = prevFrag;\n        }\n      }\n      if (\n        this.fragmentTracker.getState(foundFrag) === FragmentState.NOT_LOADED\n      ) {\n        // only load if fragment is not loaded\n        this.loadFragment(foundFrag, track, targetBufferTime);\n      }\n    }\n  }\n\n  protected getMaxBufferLength(mainBufferLength?: number): number {\n    const maxConfigBuffer = super.getMaxBufferLength();\n    if (!mainBufferLength) {\n      return maxConfigBuffer;\n    }\n    return Math.max(maxConfigBuffer, mainBufferLength);\n  }\n\n  protected loadFragment(\n    frag: Fragment,\n    level: Level,\n    targetBufferTime: number\n  ) {\n    this.fragCurrent = frag;\n    if (frag.sn === 'initSegment') {\n      this._loadInitSegment(frag, level);\n    } else {\n      this.startFragRequested = true;\n      super.loadFragment(frag, level, targetBufferTime);\n    }\n  }\n\n  get mediaBufferTimeRanges(): Bufferable {\n    return new BufferableInstance(\n      this.tracksBuffered[this.currentTrackId] || []\n    );\n  }\n}\n\nclass BufferableInstance implements Bufferable {\n  public readonly buffered: TimeRanges;\n\n  constructor(timeranges: TimeRange[]) {\n    const getRange = (\n      name: 'start' | 'end',\n      index: number,\n      length: number\n    ): number => {\n      index = index >>> 0;\n      if (index > length - 1) {\n        throw new DOMException(\n          `Failed to execute '${name}' on 'TimeRanges': The index provided (${index}) is greater than the maximum bound (${length})`\n        );\n      }\n      return timeranges[index][name];\n    };\n    this.buffered = {\n      get length() {\n        return timeranges.length;\n      },\n      end(index: number): number {\n        return getRange('end', index, timeranges.length);\n      },\n      start(index: number): number {\n        return getRange('start', index, timeranges.length);\n      },\n    };\n  }\n}\n","import { logger } from '../utils/logger';\nimport type {\n  BufferOperation,\n  BufferOperationQueues,\n  SourceBuffers,\n  SourceBufferName,\n} from '../types/buffer';\n\nexport default class BufferOperationQueue {\n  private buffers: SourceBuffers;\n  private queues: BufferOperationQueues = {\n    video: [],\n    audio: [],\n    audiovideo: [],\n  };\n\n  constructor(sourceBufferReference: SourceBuffers) {\n    this.buffers = sourceBufferReference;\n  }\n\n  public append(operation: BufferOperation, type: SourceBufferName) {\n    const queue = this.queues[type];\n    queue.push(operation);\n    if (queue.length === 1 && this.buffers[type]) {\n      this.executeNext(type);\n    }\n  }\n\n  public insertAbort(operation: BufferOperation, type: SourceBufferName) {\n    const queue = this.queues[type];\n    queue.unshift(operation);\n    this.executeNext(type);\n  }\n\n  public appendBlocker(type: SourceBufferName): Promise<{}> {\n    let execute;\n    const promise: Promise<{}> = new Promise((resolve) => {\n      execute = resolve;\n    });\n    const operation: BufferOperation = {\n      execute,\n      onStart: () => {},\n      onComplete: () => {},\n      onError: () => {},\n    };\n\n    this.append(operation, type);\n    return promise;\n  }\n\n  public executeNext(type: SourceBufferName) {\n    const { buffers, queues } = this;\n    const sb = buffers[type];\n    const queue = queues[type];\n    if (queue.length) {\n      const operation: BufferOperation = queue[0];\n      try {\n        // Operations are expected to result in an 'updateend' event being fired. If not, the queue will lock. Operations\n        // which do not end with this event must call _onSBUpdateEnd manually\n        operation.execute();\n      } catch (e) {\n        logger.warn(\n          '[buffer-operation-queue]: Unhandled exception executing the current operation'\n        );\n        operation.onError(e);\n\n        // Only shift the current operation off, otherwise the updateend handler will do this for us\n        if (!sb?.updating) {\n          queue.shift();\n          this.executeNext(type);\n        }\n      }\n    }\n  }\n\n  public shiftAndExecuteNext(type: SourceBufferName) {\n    this.queues[type].shift();\n    this.executeNext(type);\n  }\n\n  public current(type: SourceBufferName) {\n    return this.queues[type][0];\n  }\n}\n","import { Events } from '../events';\nimport { logger } from '../utils/logger';\nimport { ErrorDetails, ErrorTypes } from '../errors';\nimport { BufferHelper } from '../utils/buffer-helper';\nimport { getMediaSource } from '../utils/mediasource-helper';\nimport { ElementaryStreamTypes } from '../loader/fragment';\nimport type { TrackSet } from '../types/track';\nimport BufferOperationQueue from './buffer-operation-queue';\nimport {\n  BufferOperation,\n  SourceBuffers,\n  SourceBufferName,\n  SourceBufferListeners,\n} from '../types/buffer';\nimport type {\n  LevelUpdatedData,\n  BufferAppendingData,\n  MediaAttachingData,\n  ManifestParsedData,\n  BufferCodecsData,\n  BufferEOSData,\n  BufferFlushingData,\n  FragParsedData,\n  FragChangedData,\n} from '../types/events';\nimport type { ComponentAPI } from '../types/component-api';\nimport type { ChunkMetadata } from '../types/transmuxer';\nimport type Hls from '../hls';\nimport type { LevelDetails } from '../loader/level-details';\n\nconst MediaSource = getMediaSource();\nconst VIDEO_CODEC_PROFILE_REPACE = /([ha]vc.)(?:\\.[^.,]+)+/;\n\nexport default class BufferController implements ComponentAPI {\n  // The level details used to determine duration, target-duration and live\n  private details: LevelDetails | null = null;\n  // cache the self generated object url to detect hijack of video tag\n  private _objectUrl: string | null = null;\n  // A queue of buffer operations which require the SourceBuffer to not be updating upon execution\n  private operationQueue!: BufferOperationQueue;\n  // References to event listeners for each SourceBuffer, so that they can be referenced for event removal\n  private listeners!: SourceBufferListeners;\n\n  private hls: Hls;\n\n  // The number of BUFFER_CODEC events received before any sourceBuffers are created\n  public bufferCodecEventsExpected: number = 0;\n\n  // The total number of BUFFER_CODEC events received\n  private _bufferCodecEventsTotal: number = 0;\n\n  // A reference to the attached media element\n  public media: HTMLMediaElement | null = null;\n\n  // A reference to the active media source\n  public mediaSource: MediaSource | null = null;\n\n  // Last MP3 audio chunk appended\n  private lastMpegAudioChunk: ChunkMetadata | null = null;\n\n  // counters\n  public appendError: number = 0;\n\n  public tracks: TrackSet = {};\n  public pendingTracks: TrackSet = {};\n  public sourceBuffer!: SourceBuffers;\n\n  constructor(hls: Hls) {\n    this.hls = hls;\n    this._initSourceBuffer();\n    this.registerListeners();\n  }\n\n  public hasSourceTypes(): boolean {\n    return (\n      this.getSourceBufferTypes().length > 0 ||\n      Object.keys(this.pendingTracks).length > 0\n    );\n  }\n\n  public destroy() {\n    this.unregisterListeners();\n    this.details = null;\n    this.lastMpegAudioChunk = null;\n  }\n\n  protected registerListeners() {\n    const { hls } = this;\n    hls.on(Events.MEDIA_ATTACHING, this.onMediaAttaching, this);\n    hls.on(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n    hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    hls.on(Events.MANIFEST_PARSED, this.onManifestParsed, this);\n    hls.on(Events.BUFFER_RESET, this.onBufferReset, this);\n    hls.on(Events.BUFFER_APPENDING, this.onBufferAppending, this);\n    hls.on(Events.BUFFER_CODECS, this.onBufferCodecs, this);\n    hls.on(Events.BUFFER_EOS, this.onBufferEos, this);\n    hls.on(Events.BUFFER_FLUSHING, this.onBufferFlushing, this);\n    hls.on(Events.LEVEL_UPDATED, this.onLevelUpdated, this);\n    hls.on(Events.FRAG_PARSED, this.onFragParsed, this);\n    hls.on(Events.FRAG_CHANGED, this.onFragChanged, this);\n  }\n\n  protected unregisterListeners() {\n    const { hls } = this;\n    hls.off(Events.MEDIA_ATTACHING, this.onMediaAttaching, this);\n    hls.off(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n    hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    hls.off(Events.MANIFEST_PARSED, this.onManifestParsed, this);\n    hls.off(Events.BUFFER_RESET, this.onBufferReset, this);\n    hls.off(Events.BUFFER_APPENDING, this.onBufferAppending, this);\n    hls.off(Events.BUFFER_CODECS, this.onBufferCodecs, this);\n    hls.off(Events.BUFFER_EOS, this.onBufferEos, this);\n    hls.off(Events.BUFFER_FLUSHING, this.onBufferFlushing, this);\n    hls.off(Events.LEVEL_UPDATED, this.onLevelUpdated, this);\n    hls.off(Events.FRAG_PARSED, this.onFragParsed, this);\n    hls.off(Events.FRAG_CHANGED, this.onFragChanged, this);\n  }\n\n  private _initSourceBuffer() {\n    this.sourceBuffer = {};\n    this.operationQueue = new BufferOperationQueue(this.sourceBuffer);\n    this.listeners = {\n      audio: [],\n      video: [],\n      audiovideo: [],\n    };\n    this.lastMpegAudioChunk = null;\n  }\n\n  private onManifestLoading() {\n    this.bufferCodecEventsExpected = this._bufferCodecEventsTotal = 0;\n    this.details = null;\n  }\n\n  protected onManifestParsed(\n    event: Events.MANIFEST_PARSED,\n    data: ManifestParsedData\n  ) {\n    // in case of alt audio 2 BUFFER_CODECS events will be triggered, one per stream controller\n    // sourcebuffers will be created all at once when the expected nb of tracks will be reached\n    // in case alt audio is not used, only one BUFFER_CODEC event will be fired from main stream controller\n    // it will contain the expected nb of source buffers, no need to compute it\n    let codecEvents: number = 2;\n    if ((data.audio && !data.video) || !data.altAudio || !__USE_ALT_AUDIO__) {\n      codecEvents = 1;\n    }\n    this.bufferCodecEventsExpected = this._bufferCodecEventsTotal = codecEvents;\n    logger.log(\n      `${this.bufferCodecEventsExpected} bufferCodec event(s) expected`\n    );\n  }\n\n  protected onMediaAttaching(\n    event: Events.MEDIA_ATTACHING,\n    data: MediaAttachingData\n  ) {\n    const media = (this.media = data.media);\n    if (media && MediaSource) {\n      const ms = (this.mediaSource = new MediaSource());\n      // MediaSource listeners are arrow functions with a lexical scope, and do not need to be bound\n      ms.addEventListener('sourceopen', this._onMediaSourceOpen);\n      ms.addEventListener('sourceended', this._onMediaSourceEnded);\n      ms.addEventListener('sourceclose', this._onMediaSourceClose);\n      // link video and media Source\n      media.src = self.URL.createObjectURL(ms);\n      // cache the locally generated object url\n      this._objectUrl = media.src;\n      media.addEventListener('emptied', this._onMediaEmptied);\n    }\n  }\n\n  protected onMediaDetaching() {\n    const { media, mediaSource, _objectUrl } = this;\n    if (mediaSource) {\n      logger.log('[buffer-controller]: media source detaching');\n      if (mediaSource.readyState === 'open') {\n        try {\n          // endOfStream could trigger exception if any sourcebuffer is in updating state\n          // we don't really care about checking sourcebuffer state here,\n          // as we are anyway detaching the MediaSource\n          // let's just avoid this exception to propagate\n          mediaSource.endOfStream();\n        } catch (err) {\n          logger.warn(\n            `[buffer-controller]: onMediaDetaching: ${err.message} while calling endOfStream`\n          );\n        }\n      }\n      // Clean up the SourceBuffers by invoking onBufferReset\n      this.onBufferReset();\n      mediaSource.removeEventListener('sourceopen', this._onMediaSourceOpen);\n      mediaSource.removeEventListener('sourceended', this._onMediaSourceEnded);\n      mediaSource.removeEventListener('sourceclose', this._onMediaSourceClose);\n\n      // Detach properly the MediaSource from the HTMLMediaElement as\n      // suggested in https://github.com/w3c/media-source/issues/53.\n      if (media) {\n        media.removeEventListener('emptied', this._onMediaEmptied);\n        if (_objectUrl) {\n          self.URL.revokeObjectURL(_objectUrl);\n        }\n\n        // clean up video tag src only if it's our own url. some external libraries might\n        // hijack the video tag and change its 'src' without destroying the Hls instance first\n        if (media.src === _objectUrl) {\n          media.removeAttribute('src');\n          media.load();\n        } else {\n          logger.warn(\n            '[buffer-controller]: media.src was changed by a third party - skip cleanup'\n          );\n        }\n      }\n\n      this.mediaSource = null;\n      this.media = null;\n      this._objectUrl = null;\n      this.bufferCodecEventsExpected = this._bufferCodecEventsTotal;\n      this.pendingTracks = {};\n      this.tracks = {};\n    }\n\n    this.hls.trigger(Events.MEDIA_DETACHED, undefined);\n  }\n\n  protected onBufferReset() {\n    this.getSourceBufferTypes().forEach((type) => {\n      const sb = this.sourceBuffer[type];\n      try {\n        if (sb) {\n          this.removeBufferListeners(type);\n          if (this.mediaSource) {\n            this.mediaSource.removeSourceBuffer(sb);\n          }\n          // Synchronously remove the SB from the map before the next call in order to prevent an async function from\n          // accessing it\n          this.sourceBuffer[type] = undefined;\n        }\n      } catch (err) {\n        logger.warn(\n          `[buffer-controller]: Failed to reset the ${type} buffer`,\n          err\n        );\n      }\n    });\n    this._initSourceBuffer();\n  }\n\n  protected onBufferCodecs(\n    event: Events.BUFFER_CODECS,\n    data: BufferCodecsData\n  ) {\n    const sourceBufferCount = this.getSourceBufferTypes().length;\n\n    Object.keys(data).forEach((trackName) => {\n      if (sourceBufferCount) {\n        // check if SourceBuffer codec needs to change\n        const track = this.tracks[trackName];\n        if (track && typeof track.buffer.changeType === 'function') {\n          const { id, codec, levelCodec, container, metadata } =\n            data[trackName];\n          const currentCodec = (track.levelCodec || track.codec).replace(\n            VIDEO_CODEC_PROFILE_REPACE,\n            '$1'\n          );\n          const nextCodec = (levelCodec || codec).replace(\n            VIDEO_CODEC_PROFILE_REPACE,\n            '$1'\n          );\n          if (currentCodec !== nextCodec) {\n            const mimeType = `${container};codecs=${levelCodec || codec}`;\n            this.appendChangeType(trackName, mimeType);\n            logger.log(\n              `[buffer-controller]: switching codec ${currentCodec} to ${nextCodec}`\n            );\n            this.tracks[trackName] = {\n              buffer: track.buffer,\n              codec,\n              container,\n              levelCodec,\n              metadata,\n              id,\n            };\n          }\n        }\n      } else {\n        // if source buffer(s) not created yet, appended buffer tracks in this.pendingTracks\n        this.pendingTracks[trackName] = data[trackName];\n      }\n    });\n\n    // if sourcebuffers already created, do nothing ...\n    if (sourceBufferCount) {\n      return;\n    }\n\n    this.bufferCodecEventsExpected = Math.max(\n      this.bufferCodecEventsExpected - 1,\n      0\n    );\n    if (this.mediaSource && this.mediaSource.readyState === 'open') {\n      this.checkPendingTracks();\n    }\n  }\n\n  protected appendChangeType(type, mimeType) {\n    const { operationQueue } = this;\n    const operation: BufferOperation = {\n      execute: () => {\n        const sb = this.sourceBuffer[type];\n        if (sb) {\n          logger.log(\n            `[buffer-controller]: changing ${type} sourceBuffer type to ${mimeType}`\n          );\n          sb.changeType(mimeType);\n        }\n        operationQueue.shiftAndExecuteNext(type);\n      },\n      onStart: () => {},\n      onComplete: () => {},\n      onError: (e) => {\n        logger.warn(\n          `[buffer-controller]: Failed to change ${type} SourceBuffer type`,\n          e\n        );\n      },\n    };\n\n    operationQueue.append(operation, type);\n  }\n\n  protected onBufferAppending(\n    event: Events.BUFFER_APPENDING,\n    eventData: BufferAppendingData\n  ) {\n    const { hls, operationQueue, tracks } = this;\n    const { data, type, frag, part, chunkMeta } = eventData;\n    const chunkStats = chunkMeta.buffering[type];\n\n    const bufferAppendingStart = self.performance.now();\n    chunkStats.start = bufferAppendingStart;\n    const fragBuffering = frag.stats.buffering;\n    const partBuffering = part ? part.stats.buffering : null;\n    if (fragBuffering.start === 0) {\n      fragBuffering.start = bufferAppendingStart;\n    }\n    if (partBuffering && partBuffering.start === 0) {\n      partBuffering.start = bufferAppendingStart;\n    }\n\n    // TODO: Only update timestampOffset when audio/mpeg fragment or part is not contiguous with previously appended\n    // Adjusting `SourceBuffer.timestampOffset` (desired point in the timeline where the next frames should be appended)\n    // in Chrome browser when we detect MPEG audio container and time delta between level PTS and `SourceBuffer.timestampOffset`\n    // is greater than 100ms (this is enough to handle seek for VOD or level change for LIVE videos).\n    // More info here: https://github.com/video-dev/hls.js/issues/332#issuecomment-257986486\n    const audioTrack = tracks.audio;\n    let checkTimestampOffset = false;\n    if (type === 'audio' && audioTrack?.container === 'audio/mpeg') {\n      checkTimestampOffset =\n        !this.lastMpegAudioChunk ||\n        chunkMeta.id === 1 ||\n        this.lastMpegAudioChunk.sn !== chunkMeta.sn;\n      this.lastMpegAudioChunk = chunkMeta;\n    }\n\n    const fragStart = frag.start;\n    const operation: BufferOperation = {\n      execute: () => {\n        chunkStats.executeStart = self.performance.now();\n        if (checkTimestampOffset) {\n          const sb = this.sourceBuffer[type];\n          if (sb) {\n            const delta = fragStart - sb.timestampOffset;\n            if (Math.abs(delta) >= 0.1) {\n              logger.log(\n                `[buffer-controller]: Updating audio SourceBuffer timestampOffset to ${fragStart} (delta: ${delta}) sn: ${frag.sn})`\n              );\n              sb.timestampOffset = fragStart;\n            }\n          }\n        }\n        this.appendExecutor(data, type);\n      },\n      onStart: () => {\n        // logger.debug(`[buffer-controller]: ${type} SourceBuffer updatestart`);\n      },\n      onComplete: () => {\n        // logger.debug(`[buffer-controller]: ${type} SourceBuffer updateend`);\n        const end = self.performance.now();\n        chunkStats.executeEnd = chunkStats.end = end;\n        if (fragBuffering.first === 0) {\n          fragBuffering.first = end;\n        }\n        if (partBuffering && partBuffering.first === 0) {\n          partBuffering.first = end;\n        }\n\n        const { sourceBuffer } = this;\n        const timeRanges = {};\n        for (const type in sourceBuffer) {\n          timeRanges[type] = BufferHelper.getBuffered(sourceBuffer[type]);\n        }\n        this.appendError = 0;\n        this.hls.trigger(Events.BUFFER_APPENDED, {\n          type,\n          frag,\n          part,\n          chunkMeta,\n          parent: frag.type,\n          timeRanges,\n        });\n      },\n      onError: (err) => {\n        // in case any error occured while appending, put back segment in segments table\n        logger.error(\n          `[buffer-controller]: Error encountered while trying to append to the ${type} SourceBuffer`,\n          err\n        );\n        const event = {\n          type: ErrorTypes.MEDIA_ERROR,\n          parent: frag.type,\n          details: ErrorDetails.BUFFER_APPEND_ERROR,\n          frag,\n          part,\n          chunkMeta,\n          error: err,\n          err,\n          fatal: false,\n        };\n\n        if (err.code === DOMException.QUOTA_EXCEEDED_ERR) {\n          // QuotaExceededError: http://www.w3.org/TR/html5/infrastructure.html#quotaexceedederror\n          // let's stop appending any segments, and report BUFFER_FULL_ERROR error\n          event.details = ErrorDetails.BUFFER_FULL_ERROR;\n        } else {\n          this.appendError++;\n          event.details = ErrorDetails.BUFFER_APPEND_ERROR;\n          /* with UHD content, we could get loop of quota exceeded error until\n            browser is able to evict some data from sourcebuffer. Retrying can help recover.\n          */\n          if (this.appendError > hls.config.appendErrorMaxRetry) {\n            logger.error(\n              `[buffer-controller]: Failed ${hls.config.appendErrorMaxRetry} times to append segment in sourceBuffer`\n            );\n            event.fatal = true;\n          }\n        }\n        hls.trigger(Events.ERROR, event);\n      },\n    };\n    operationQueue.append(operation, type);\n  }\n\n  protected onBufferFlushing(\n    event: Events.BUFFER_FLUSHING,\n    data: BufferFlushingData\n  ) {\n    const { operationQueue } = this;\n    const flushOperation = (type: SourceBufferName): BufferOperation => ({\n      execute: this.removeExecutor.bind(\n        this,\n        type,\n        data.startOffset,\n        data.endOffset\n      ),\n      onStart: () => {\n        // logger.debug(`[buffer-controller]: Started flushing ${data.startOffset} -> ${data.endOffset} for ${type} Source Buffer`);\n      },\n      onComplete: () => {\n        // logger.debug(`[buffer-controller]: Finished flushing ${data.startOffset} -> ${data.endOffset} for ${type} Source Buffer`);\n        this.hls.trigger(Events.BUFFER_FLUSHED, { type });\n      },\n      onError: (e) => {\n        logger.warn(\n          `[buffer-controller]: Failed to remove from ${type} SourceBuffer`,\n          e\n        );\n      },\n    });\n\n    if (data.type) {\n      operationQueue.append(flushOperation(data.type), data.type);\n    } else {\n      this.getSourceBufferTypes().forEach((type: SourceBufferName) => {\n        operationQueue.append(flushOperation(type), type);\n      });\n    }\n  }\n\n  protected onFragParsed(event: Events.FRAG_PARSED, data: FragParsedData) {\n    const { frag, part } = data;\n    const buffersAppendedTo: Array<SourceBufferName> = [];\n    const elementaryStreams = part\n      ? part.elementaryStreams\n      : frag.elementaryStreams;\n    if (elementaryStreams[ElementaryStreamTypes.AUDIOVIDEO]) {\n      buffersAppendedTo.push('audiovideo');\n    } else {\n      if (elementaryStreams[ElementaryStreamTypes.AUDIO]) {\n        buffersAppendedTo.push('audio');\n      }\n      if (elementaryStreams[ElementaryStreamTypes.VIDEO]) {\n        buffersAppendedTo.push('video');\n      }\n    }\n\n    const onUnblocked = () => {\n      const now = self.performance.now();\n      frag.stats.buffering.end = now;\n      if (part) {\n        part.stats.buffering.end = now;\n      }\n      const stats = part ? part.stats : frag.stats;\n      this.hls.trigger(Events.FRAG_BUFFERED, {\n        frag,\n        part,\n        stats,\n        id: frag.type,\n      });\n    };\n\n    if (buffersAppendedTo.length === 0) {\n      logger.warn(\n        `Fragments must have at least one ElementaryStreamType set. type: ${frag.type} level: ${frag.level} sn: ${frag.sn}`\n      );\n    }\n\n    this.blockBuffers(onUnblocked, buffersAppendedTo);\n  }\n\n  private onFragChanged(event: Events.FRAG_CHANGED, data: FragChangedData) {\n    this.flushBackBuffer();\n  }\n\n  // on BUFFER_EOS mark matching sourcebuffer(s) as ended and trigger checkEos()\n  // an undefined data.type will mark all buffers as EOS.\n  protected onBufferEos(event: Events.BUFFER_EOS, data: BufferEOSData) {\n    const ended = this.getSourceBufferTypes().reduce((acc, type) => {\n      const sb = this.sourceBuffer[type];\n      if (sb && (!data.type || data.type === type)) {\n        sb.ending = true;\n        if (!sb.ended) {\n          sb.ended = true;\n          logger.log(`[buffer-controller]: ${type} sourceBuffer now EOS`);\n        }\n      }\n      return acc && !!(!sb || sb.ended);\n    }, true);\n\n    if (ended) {\n      logger.log(`[buffer-controller]: Queueing mediaSource.endOfStream()`);\n      this.blockBuffers(() => {\n        this.getSourceBufferTypes().forEach((type) => {\n          const sb = this.sourceBuffer[type];\n          if (sb) {\n            sb.ending = false;\n          }\n        });\n        const { mediaSource } = this;\n        if (!mediaSource || mediaSource.readyState !== 'open') {\n          if (mediaSource) {\n            logger.info(\n              `[buffer-controller]: Could not call mediaSource.endOfStream(). mediaSource.readyState: ${mediaSource.readyState}`\n            );\n          }\n          return;\n        }\n        logger.log(`[buffer-controller]: Calling mediaSource.endOfStream()`);\n        // Allow this to throw and be caught by the enqueueing function\n        mediaSource.endOfStream();\n      });\n    }\n  }\n\n  protected onLevelUpdated(\n    event: Events.LEVEL_UPDATED,\n    { details }: LevelUpdatedData\n  ) {\n    if (!details.fragments.length) {\n      return;\n    }\n    this.details = details;\n\n    if (this.getSourceBufferTypes().length) {\n      this.blockBuffers(this.updateMediaElementDuration.bind(this));\n    } else {\n      this.updateMediaElementDuration();\n    }\n  }\n\n  flushBackBuffer() {\n    const { hls, details, media, sourceBuffer } = this;\n    if (!media || details === null) {\n      return;\n    }\n\n    const sourceBufferTypes = this.getSourceBufferTypes();\n    if (!sourceBufferTypes.length) {\n      return;\n    }\n\n    // Support for deprecated liveBackBufferLength\n    const backBufferLength =\n      details.live && hls.config.liveBackBufferLength !== null\n        ? hls.config.liveBackBufferLength\n        : hls.config.backBufferLength;\n\n    if (!Number.isFinite(backBufferLength) || backBufferLength < 0) {\n      return;\n    }\n\n    const currentTime = media.currentTime;\n    const targetDuration = details.levelTargetDuration;\n    const maxBackBufferLength = Math.max(backBufferLength, targetDuration);\n    const targetBackBufferPosition =\n      Math.floor(currentTime / targetDuration) * targetDuration -\n      maxBackBufferLength;\n    sourceBufferTypes.forEach((type: SourceBufferName) => {\n      const sb = sourceBuffer[type];\n      if (sb) {\n        const buffered = BufferHelper.getBuffered(sb);\n        // when target buffer start exceeds actual buffer start\n        if (\n          buffered.length > 0 &&\n          targetBackBufferPosition > buffered.start(0)\n        ) {\n          hls.trigger(Events.BACK_BUFFER_REACHED, {\n            bufferEnd: targetBackBufferPosition,\n          });\n\n          // Support for deprecated event:\n          if (details.live) {\n            hls.trigger(Events.LIVE_BACK_BUFFER_REACHED, {\n              bufferEnd: targetBackBufferPosition,\n            });\n          } else if (\n            sb.ended &&\n            buffered.end(buffered.length - 1) - currentTime < targetDuration * 2\n          ) {\n            logger.info(\n              `[buffer-controller]: Cannot flush ${type} back buffer while SourceBuffer is in ended state`\n            );\n            return;\n          }\n\n          hls.trigger(Events.BUFFER_FLUSHING, {\n            startOffset: 0,\n            endOffset: targetBackBufferPosition,\n            type,\n          });\n        }\n      }\n    });\n  }\n\n  /**\n   * Update Media Source duration to current level duration or override to Infinity if configuration parameter\n   * 'liveDurationInfinity` is set to `true`\n   * More details: https://github.com/video-dev/hls.js/issues/355\n   */\n  private updateMediaElementDuration() {\n    if (\n      !this.details ||\n      !this.media ||\n      !this.mediaSource ||\n      this.mediaSource.readyState !== 'open'\n    ) {\n      return;\n    }\n    const { details, hls, media, mediaSource } = this;\n    const levelDuration = details.fragments[0].start + details.totalduration;\n    const mediaDuration = media.duration;\n    const msDuration = Number.isFinite(mediaSource.duration)\n      ? mediaSource.duration\n      : 0;\n\n    if (details.live && hls.config.liveDurationInfinity) {\n      // Override duration to Infinity\n      logger.log(\n        '[buffer-controller]: Media Source duration is set to Infinity'\n      );\n      mediaSource.duration = Infinity;\n      this.updateSeekableRange(details);\n    } else if (\n      (levelDuration > msDuration && levelDuration > mediaDuration) ||\n      !Number.isFinite(mediaDuration)\n    ) {\n      // levelDuration was the last value we set.\n      // not using mediaSource.duration as the browser may tweak this value\n      // only update Media Source duration if its value increase, this is to avoid\n      // flushing already buffered portion when switching between quality level\n      logger.log(\n        `[buffer-controller]: Updating Media Source duration to ${levelDuration.toFixed(\n          3\n        )}`\n      );\n      mediaSource.duration = levelDuration;\n    }\n  }\n\n  updateSeekableRange(levelDetails) {\n    const mediaSource = this.mediaSource;\n    const fragments = levelDetails.fragments;\n    const len = fragments.length;\n    if (len && levelDetails.live && mediaSource?.setLiveSeekableRange) {\n      const start = Math.max(0, fragments[0].start);\n      const end = Math.max(start, start + levelDetails.totalduration);\n      mediaSource.setLiveSeekableRange(start, end);\n    }\n  }\n\n  protected checkPendingTracks() {\n    const { bufferCodecEventsExpected, operationQueue, pendingTracks } = this;\n\n    // Check if we've received all of the expected bufferCodec events. When none remain, create all the sourceBuffers at once.\n    // This is important because the MSE spec allows implementations to throw QuotaExceededErrors if creating new sourceBuffers after\n    // data has been appended to existing ones.\n    // 2 tracks is the max (one for audio, one for video). If we've reach this max go ahead and create the buffers.\n    const pendingTracksCount = Object.keys(pendingTracks).length;\n    if (\n      (pendingTracksCount && !bufferCodecEventsExpected) ||\n      pendingTracksCount === 2\n    ) {\n      // ok, let's create them now !\n      this.createSourceBuffers(pendingTracks);\n      this.pendingTracks = {};\n      // append any pending segments now !\n      const buffers = this.getSourceBufferTypes();\n      if (buffers.length) {\n        this.hls.trigger(Events.BUFFER_CREATED, { tracks: this.tracks });\n        buffers.forEach((type: SourceBufferName) => {\n          operationQueue.executeNext(type);\n        });\n      } else {\n        const error = new Error(\n          'could not create source buffer for media codec(s)'\n        );\n        this.hls.trigger(Events.ERROR, {\n          type: ErrorTypes.MEDIA_ERROR,\n          details: ErrorDetails.BUFFER_INCOMPATIBLE_CODECS_ERROR,\n          fatal: true,\n          error,\n          reason: error.message,\n        });\n      }\n    }\n  }\n\n  protected createSourceBuffers(tracks: TrackSet) {\n    const { sourceBuffer, mediaSource } = this;\n    if (!mediaSource) {\n      throw Error('createSourceBuffers called when mediaSource was null');\n    }\n    for (const trackName in tracks) {\n      if (!sourceBuffer[trackName]) {\n        const track = tracks[trackName as keyof TrackSet];\n        if (!track) {\n          throw Error(\n            `source buffer exists for track ${trackName}, however track does not`\n          );\n        }\n        // use levelCodec as first priority\n        const codec = track.levelCodec || track.codec;\n        const mimeType = `${track.container};codecs=${codec}`;\n        logger.log(`[buffer-controller]: creating sourceBuffer(${mimeType})`);\n        try {\n          const sb = (sourceBuffer[trackName] =\n            mediaSource.addSourceBuffer(mimeType));\n          const sbName = trackName as SourceBufferName;\n          this.addBufferListener(sbName, 'updatestart', this._onSBUpdateStart);\n          this.addBufferListener(sbName, 'updateend', this._onSBUpdateEnd);\n          this.addBufferListener(sbName, 'error', this._onSBUpdateError);\n          this.tracks[trackName] = {\n            buffer: sb,\n            codec: codec,\n            container: track.container,\n            levelCodec: track.levelCodec,\n            metadata: track.metadata,\n            id: track.id,\n          };\n        } catch (err) {\n          logger.error(\n            `[buffer-controller]: error while trying to add sourceBuffer: ${err.message}`\n          );\n          this.hls.trigger(Events.ERROR, {\n            type: ErrorTypes.MEDIA_ERROR,\n            details: ErrorDetails.BUFFER_ADD_CODEC_ERROR,\n            fatal: false,\n            error: err,\n            mimeType: mimeType,\n          });\n        }\n      }\n    }\n  }\n\n  // Keep as arrow functions so that we can directly reference these functions directly as event listeners\n  private _onMediaSourceOpen = () => {\n    const { media, mediaSource } = this;\n    logger.log('[buffer-controller]: Media source opened');\n    if (media) {\n      media.removeEventListener('emptied', this._onMediaEmptied);\n      this.updateMediaElementDuration();\n      this.hls.trigger(Events.MEDIA_ATTACHED, { media });\n    }\n\n    if (mediaSource) {\n      // once received, don't listen anymore to sourceopen event\n      mediaSource.removeEventListener('sourceopen', this._onMediaSourceOpen);\n    }\n    this.checkPendingTracks();\n  };\n\n  private _onMediaSourceClose = () => {\n    logger.log('[buffer-controller]: Media source closed');\n  };\n\n  private _onMediaSourceEnded = () => {\n    logger.log('[buffer-controller]: Media source ended');\n  };\n\n  private _onMediaEmptied = () => {\n    const { media, _objectUrl } = this;\n    if (media && media.src !== _objectUrl) {\n      logger.error(\n        `Media element src was set while attaching MediaSource (${_objectUrl} > ${media.src})`\n      );\n    }\n  };\n\n  private _onSBUpdateStart(type: SourceBufferName) {\n    const { operationQueue } = this;\n    const operation = operationQueue.current(type);\n    operation.onStart();\n  }\n\n  private _onSBUpdateEnd(type: SourceBufferName) {\n    const { operationQueue } = this;\n    const operation = operationQueue.current(type);\n    operation.onComplete();\n    operationQueue.shiftAndExecuteNext(type);\n  }\n\n  private _onSBUpdateError(type: SourceBufferName, event: Event) {\n    const error = new Error(`${type} SourceBuffer error`);\n    logger.error(`[buffer-controller]: ${error}`, event);\n    // according to http://www.w3.org/TR/media-source/#sourcebuffer-append-error\n    // SourceBuffer errors are not necessarily fatal; if so, the HTMLMediaElement will fire an error event\n    this.hls.trigger(Events.ERROR, {\n      type: ErrorTypes.MEDIA_ERROR,\n      details: ErrorDetails.BUFFER_APPENDING_ERROR,\n      error,\n      fatal: false,\n    });\n    // updateend is always fired after error, so we'll allow that to shift the current operation off of the queue\n    const operation = this.operationQueue.current(type);\n    if (operation) {\n      operation.onError(event);\n    }\n  }\n\n  // This method must result in an updateend event; if remove is not called, _onSBUpdateEnd must be called manually\n  private removeExecutor(\n    type: SourceBufferName,\n    startOffset: number,\n    endOffset: number\n  ) {\n    const { media, mediaSource, operationQueue, sourceBuffer } = this;\n    const sb = sourceBuffer[type];\n    if (!media || !mediaSource || !sb) {\n      logger.warn(\n        `[buffer-controller]: Attempting to remove from the ${type} SourceBuffer, but it does not exist`\n      );\n      operationQueue.shiftAndExecuteNext(type);\n      return;\n    }\n    const mediaDuration = Number.isFinite(media.duration)\n      ? media.duration\n      : Infinity;\n    const msDuration = Number.isFinite(mediaSource.duration)\n      ? mediaSource.duration\n      : Infinity;\n    const removeStart = Math.max(0, startOffset);\n    const removeEnd = Math.min(endOffset, mediaDuration, msDuration);\n    if (removeEnd > removeStart && !sb.ending) {\n      sb.ended = false;\n      logger.log(\n        `[buffer-controller]: Removing [${removeStart},${removeEnd}] from the ${type} SourceBuffer`\n      );\n      sb.remove(removeStart, removeEnd);\n    } else {\n      // Cycle the queue\n      operationQueue.shiftAndExecuteNext(type);\n    }\n  }\n\n  // This method must result in an updateend event; if append is not called, _onSBUpdateEnd must be called manually\n  private appendExecutor(data: Uint8Array, type: SourceBufferName) {\n    const { operationQueue, sourceBuffer } = this;\n    const sb = sourceBuffer[type];\n    if (!sb) {\n      logger.warn(\n        `[buffer-controller]: Attempting to append to the ${type} SourceBuffer, but it does not exist`\n      );\n      operationQueue.shiftAndExecuteNext(type);\n      return;\n    }\n\n    sb.ended = false;\n    sb.appendBuffer(data);\n  }\n\n  // Enqueues an operation to each SourceBuffer queue which, upon execution, resolves a promise. When all promises\n  // resolve, the onUnblocked function is executed. Functions calling this method do not need to unblock the queue\n  // upon completion, since we already do it here\n  private blockBuffers(\n    onUnblocked: () => void,\n    buffers: Array<SourceBufferName> = this.getSourceBufferTypes()\n  ) {\n    if (!buffers.length) {\n      logger.log(\n        '[buffer-controller]: Blocking operation requested, but no SourceBuffers exist'\n      );\n      Promise.resolve().then(onUnblocked);\n      return;\n    }\n    const { operationQueue } = this;\n\n    // logger.debug(`[buffer-controller]: Blocking ${buffers} SourceBuffer`);\n    const blockingOperations = buffers.map((type) =>\n      operationQueue.appendBlocker(type as SourceBufferName)\n    );\n    Promise.all(blockingOperations).then(() => {\n      // logger.debug(`[buffer-controller]: Blocking operation resolved; unblocking ${buffers} SourceBuffer`);\n      onUnblocked();\n      buffers.forEach((type) => {\n        const sb = this.sourceBuffer[type];\n        // Only cycle the queue if the SB is not updating. There's a bug in Chrome which sets the SB updating flag to\n        // true when changing the MediaSource duration (https://bugs.chromium.org/p/chromium/issues/detail?id=959359&can=2&q=mediasource%20duration)\n        // While this is a workaround, it's probably useful to have around\n        if (!sb?.updating) {\n          operationQueue.shiftAndExecuteNext(type);\n        }\n      });\n    });\n  }\n\n  private getSourceBufferTypes(): Array<SourceBufferName> {\n    return Object.keys(this.sourceBuffer) as Array<SourceBufferName>;\n  }\n\n  private addBufferListener(\n    type: SourceBufferName,\n    event: string,\n    fn: Function\n  ) {\n    const buffer = this.sourceBuffer[type];\n    if (!buffer) {\n      return;\n    }\n    const listener = fn.bind(this, type);\n    this.listeners[type].push({ event, listener });\n    buffer.addEventListener(event, listener);\n  }\n\n  private removeBufferListeners(type: SourceBufferName) {\n    const buffer = this.sourceBuffer[type];\n    if (!buffer) {\n      return;\n    }\n    this.listeners[type].forEach((l) => {\n      buffer.removeEventListener(l.event, l.listener);\n    });\n  }\n}\n","import type { TimelineController } from '../controller/timeline-controller';\nimport type { CaptionScreen } from './cea-608-parser';\n\nexport default class OutputFilter {\n  private timelineController: TimelineController;\n  private cueRanges: Array<[number, number]> = [];\n  private trackName: string;\n  private startTime: number | null = null;\n  private endTime: number | null = null;\n  private screen: CaptionScreen | null = null;\n\n  constructor(timelineController: TimelineController, trackName: string) {\n    this.timelineController = timelineController;\n    this.trackName = trackName;\n  }\n\n  dispatchCue() {\n    if (this.startTime === null) {\n      return;\n    }\n\n    this.timelineController.addCues(\n      this.trackName,\n      this.startTime,\n      this.endTime as number,\n      this.screen as CaptionScreen,\n      this.cueRanges\n    );\n    this.startTime = null;\n  }\n\n  newCue(startTime: number, endTime: number, screen: CaptionScreen) {\n    if (this.startTime === null || this.startTime > startTime) {\n      this.startTime = startTime;\n    }\n\n    this.endTime = endTime;\n    this.screen = screen;\n    this.timelineController.createCaptionsTrack(this.trackName);\n  }\n\n  reset() {\n    this.cueRanges = [];\n    this.startTime = null;\n  }\n}\n","/**\n * Copyright 2013 vtt.js Contributors\n *\n * Licensed under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an 'AS IS' BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\ndeclare interface VTTCuePolyfill extends VTTCue {\n  new (...args): VTTCuePolyfill;\n  hasBeenReset: boolean;\n  displayState: void;\n}\n\nexport default (function () {\n  if (typeof self !== 'undefined' && self.VTTCue) {\n    return self.VTTCue;\n  }\n\n  const AllowedDirections = ['', 'lr', 'rl'] as const;\n  type Direction = (typeof AllowedDirections)[number];\n\n  const AllowedAlignments = [\n    'start',\n    'middle',\n    'end',\n    'left',\n    'right',\n  ] as const;\n  type Alignment = (typeof AllowedAlignments)[number];\n\n  function isAllowedValue<T, A>(allowed: T, value: string): A | false {\n    if (typeof value !== 'string') {\n      return false;\n    }\n    // necessary for assuring the generic conforms to the Array interface\n    if (!Array.isArray(allowed)) {\n      return false;\n    }\n    // reset the type so that the next narrowing works well\n    const lcValue = value.toLowerCase() as any;\n    // use the allow list to narrow the type to a specific subset of strings\n    if (~allowed.indexOf(lcValue)) {\n      return lcValue;\n    }\n\n    return false;\n  }\n\n  function findDirectionSetting(value: string) {\n    return isAllowedValue<typeof AllowedDirections, Direction>(\n      AllowedDirections,\n      value\n    );\n  }\n\n  function findAlignSetting(value: string) {\n    return isAllowedValue<typeof AllowedAlignments, Alignment>(\n      AllowedAlignments,\n      value\n    );\n  }\n\n  function extend(obj: Record<string, any>, ...rest: Record<string, any>[]) {\n    let i = 1;\n    for (; i < arguments.length; i++) {\n      const cobj = arguments[i];\n      for (const p in cobj) {\n        obj[p] = cobj[p];\n      }\n    }\n\n    return obj;\n  }\n\n  function VTTCue(startTime: number, endTime: number, text: string) {\n    const cue = this as VTTCuePolyfill;\n    const baseObj = { enumerable: true };\n    /**\n     * Shim implementation specific properties. These properties are not in\n     * the spec.\n     */\n\n    // Lets us know when the VTTCue's data has changed in such a way that we need\n    // to recompute its display state. This lets us compute its display state\n    // lazily.\n    cue.hasBeenReset = false;\n\n    /**\n     * VTTCue and TextTrackCue properties\n     * http://dev.w3.org/html5/webvtt/#vttcue-interface\n     */\n\n    let _id = '';\n    let _pauseOnExit = false;\n    let _startTime = startTime;\n    let _endTime = endTime;\n    let _text = text;\n    let _region = null;\n    let _vertical: Direction = '';\n    let _snapToLines = true;\n    let _line: number | 'auto' = 'auto';\n    let _lineAlign: Alignment = 'start';\n    let _position = 50;\n    let _positionAlign: Alignment = 'middle';\n    let _size = 50;\n    let _align: Alignment = 'middle';\n\n    Object.defineProperty(\n      cue,\n      'id',\n      extend({}, baseObj, {\n        get: function () {\n          return _id;\n        },\n        set: function (value: string) {\n          _id = '' + value;\n        },\n      })\n    );\n\n    Object.defineProperty(\n      cue,\n      'pauseOnExit',\n      extend({}, baseObj, {\n        get: function () {\n          return _pauseOnExit;\n        },\n        set: function (value: boolean) {\n          _pauseOnExit = !!value;\n        },\n      })\n    );\n\n    Object.defineProperty(\n      cue,\n      'startTime',\n      extend({}, baseObj, {\n        get: function () {\n          return _startTime;\n        },\n        set: function (value: number) {\n          if (typeof value !== 'number') {\n            throw new TypeError('Start time must be set to a number.');\n          }\n\n          _startTime = value;\n          this.hasBeenReset = true;\n        },\n      })\n    );\n\n    Object.defineProperty(\n      cue,\n      'endTime',\n      extend({}, baseObj, {\n        get: function () {\n          return _endTime;\n        },\n        set: function (value: number) {\n          if (typeof value !== 'number') {\n            throw new TypeError('End time must be set to a number.');\n          }\n\n          _endTime = value;\n          this.hasBeenReset = true;\n        },\n      })\n    );\n\n    Object.defineProperty(\n      cue,\n      'text',\n      extend({}, baseObj, {\n        get: function () {\n          return _text;\n        },\n        set: function (value: string) {\n          _text = '' + value;\n          this.hasBeenReset = true;\n        },\n      })\n    );\n\n    // todo: implement VTTRegion polyfill?\n    Object.defineProperty(\n      cue,\n      'region',\n      extend({}, baseObj, {\n        get: function () {\n          return _region;\n        },\n        set: function (value: any) {\n          _region = value;\n          this.hasBeenReset = true;\n        },\n      })\n    );\n\n    Object.defineProperty(\n      cue,\n      'vertical',\n      extend({}, baseObj, {\n        get: function () {\n          return _vertical;\n        },\n        set: function (value: string) {\n          const setting = findDirectionSetting(value);\n          // Have to check for false because the setting an be an empty string.\n          if (setting === false) {\n            throw new SyntaxError(\n              'An invalid or illegal string was specified.'\n            );\n          }\n\n          _vertical = setting;\n          this.hasBeenReset = true;\n        },\n      })\n    );\n\n    Object.defineProperty(\n      cue,\n      'snapToLines',\n      extend({}, baseObj, {\n        get: function () {\n          return _snapToLines;\n        },\n        set: function (value: boolean) {\n          _snapToLines = !!value;\n          this.hasBeenReset = true;\n        },\n      })\n    );\n\n    Object.defineProperty(\n      cue,\n      'line',\n      extend({}, baseObj, {\n        get: function () {\n          return _line;\n        },\n        set: function (value: number | 'auto') {\n          if (typeof value !== 'number' && value !== 'auto') {\n            throw new SyntaxError(\n              'An invalid number or illegal string was specified.'\n            );\n          }\n\n          _line = value;\n          this.hasBeenReset = true;\n        },\n      })\n    );\n\n    Object.defineProperty(\n      cue,\n      'lineAlign',\n      extend({}, baseObj, {\n        get: function () {\n          return _lineAlign;\n        },\n        set: function (value: string) {\n          const setting = findAlignSetting(value);\n          if (!setting) {\n            throw new SyntaxError(\n              'An invalid or illegal string was specified.'\n            );\n          }\n\n          _lineAlign = setting;\n          this.hasBeenReset = true;\n        },\n      })\n    );\n\n    Object.defineProperty(\n      cue,\n      'position',\n      extend({}, baseObj, {\n        get: function () {\n          return _position;\n        },\n        set: function (value: number) {\n          if (value < 0 || value > 100) {\n            throw new Error('Position must be between 0 and 100.');\n          }\n\n          _position = value;\n          this.hasBeenReset = true;\n        },\n      })\n    );\n\n    Object.defineProperty(\n      cue,\n      'positionAlign',\n      extend({}, baseObj, {\n        get: function () {\n          return _positionAlign;\n        },\n        set: function (value: string) {\n          const setting = findAlignSetting(value);\n          if (!setting) {\n            throw new SyntaxError(\n              'An invalid or illegal string was specified.'\n            );\n          }\n\n          _positionAlign = setting;\n          this.hasBeenReset = true;\n        },\n      })\n    );\n\n    Object.defineProperty(\n      cue,\n      'size',\n      extend({}, baseObj, {\n        get: function () {\n          return _size;\n        },\n        set: function (value: number) {\n          if (value < 0 || value > 100) {\n            throw new Error('Size must be between 0 and 100.');\n          }\n\n          _size = value;\n          this.hasBeenReset = true;\n        },\n      })\n    );\n\n    Object.defineProperty(\n      cue,\n      'align',\n      extend({}, baseObj, {\n        get: function () {\n          return _align;\n        },\n        set: function (value: string) {\n          const setting = findAlignSetting(value);\n          if (!setting) {\n            throw new SyntaxError(\n              'An invalid or illegal string was specified.'\n            );\n          }\n\n          _align = setting;\n          this.hasBeenReset = true;\n        },\n      })\n    );\n\n    /**\n     * Other <track> spec defined properties\n     */\n\n    // http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#text-track-cue-display-state\n    cue.displayState = undefined;\n  }\n\n  /**\n   * VTTCue methods\n   */\n\n  VTTCue.prototype.getCueAsHTML = function () {\n    // Assume WebVTT.convertCueToDOMTree is on the global.\n    const WebVTT = (self as any).WebVTT;\n    return WebVTT.convertCueToDOMTree(self, this.text);\n  };\n  // this is a polyfill hack\n  return VTTCue as any as VTTCuePolyfill;\n})();\n","/*\n * cap stream level to media size dimension controller\n */\n\nimport { Events } from '../events';\nimport type { Level } from '../types/level';\nimport type {\n  ManifestParsedData,\n  BufferCodecsData,\n  MediaAttachingData,\n  FPSDropLevelCappingData,\n} from '../types/events';\nimport StreamController from './stream-controller';\nimport type { ComponentAPI } from '../types/component-api';\nimport type Hls from '../hls';\n\ntype RestrictedLevel = { width: number; height: number; bitrate: number };\nclass CapLevelController implements ComponentAPI {\n  private hls: Hls;\n  private autoLevelCapping: number;\n  private firstLevel: number;\n  private media: HTMLVideoElement | null;\n  private restrictedLevels: RestrictedLevel[];\n  private timer: number | undefined;\n  private clientRect: { width: number; height: number } | null;\n  private streamController?: StreamController;\n\n  constructor(hls: Hls) {\n    this.hls = hls;\n    this.autoLevelCapping = Number.POSITIVE_INFINITY;\n    this.firstLevel = -1;\n    this.media = null;\n    this.restrictedLevels = [];\n    this.timer = undefined;\n    this.clientRect = null;\n\n    this.registerListeners();\n  }\n\n  public setStreamController(streamController: StreamController) {\n    this.streamController = streamController;\n  }\n\n  public destroy() {\n    this.unregisterListener();\n    if (this.hls.config.capLevelToPlayerSize) {\n      this.stopCapping();\n    }\n    this.media = null;\n    this.clientRect = null;\n    // @ts-ignore\n    this.hls = this.streamController = null;\n  }\n\n  protected registerListeners() {\n    const { hls } = this;\n    hls.on(Events.FPS_DROP_LEVEL_CAPPING, this.onFpsDropLevelCapping, this);\n    hls.on(Events.MEDIA_ATTACHING, this.onMediaAttaching, this);\n    hls.on(Events.MANIFEST_PARSED, this.onManifestParsed, this);\n    hls.on(Events.BUFFER_CODECS, this.onBufferCodecs, this);\n    hls.on(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n  }\n\n  protected unregisterListener() {\n    const { hls } = this;\n    hls.off(Events.FPS_DROP_LEVEL_CAPPING, this.onFpsDropLevelCapping, this);\n    hls.off(Events.MEDIA_ATTACHING, this.onMediaAttaching, this);\n    hls.off(Events.MANIFEST_PARSED, this.onManifestParsed, this);\n    hls.off(Events.BUFFER_CODECS, this.onBufferCodecs, this);\n    hls.off(Events.MEDIA_DETACHING, this.onMediaDetaching, this);\n  }\n\n  protected onFpsDropLevelCapping(\n    event: Events.FPS_DROP_LEVEL_CAPPING,\n    data: FPSDropLevelCappingData\n  ) {\n    // Don't add a restricted level more than once\n    const level = this.hls.levels[data.droppedLevel];\n    if (this.isLevelAllowed(level)) {\n      this.restrictedLevels.push({\n        bitrate: level.bitrate,\n        height: level.height,\n        width: level.width,\n      });\n    }\n  }\n\n  protected onMediaAttaching(\n    event: Events.MEDIA_ATTACHING,\n    data: MediaAttachingData\n  ) {\n    this.media = data.media instanceof HTMLVideoElement ? data.media : null;\n    this.clientRect = null;\n  }\n\n  protected onManifestParsed(\n    event: Events.MANIFEST_PARSED,\n    data: ManifestParsedData\n  ) {\n    const hls = this.hls;\n    this.restrictedLevels = [];\n    this.firstLevel = data.firstLevel;\n    if (hls.config.capLevelToPlayerSize && data.video) {\n      // Start capping immediately if the manifest has signaled video codecs\n      this.startCapping();\n    }\n  }\n\n  // Only activate capping when playing a video stream; otherwise, multi-bitrate audio-only streams will be restricted\n  // to the first level\n  protected onBufferCodecs(\n    event: Events.BUFFER_CODECS,\n    data: BufferCodecsData\n  ) {\n    const hls = this.hls;\n    if (hls.config.capLevelToPlayerSize && data.video) {\n      // If the manifest did not signal a video codec capping has been deferred until we're certain video is present\n      this.startCapping();\n    }\n  }\n\n  protected onMediaDetaching() {\n    this.stopCapping();\n  }\n\n  detectPlayerSize() {\n    if (this.media && this.mediaHeight > 0 && this.mediaWidth > 0) {\n      const levels = this.hls.levels;\n      if (levels.length) {\n        const hls = this.hls;\n        hls.autoLevelCapping = this.getMaxLevel(levels.length - 1);\n        if (\n          hls.autoLevelCapping > this.autoLevelCapping &&\n          this.streamController\n        ) {\n          // if auto level capping has a higher value for the previous one, flush the buffer using nextLevelSwitch\n          // usually happen when the user go to the fullscreen mode.\n          this.streamController.nextLevelSwitch();\n        }\n        this.autoLevelCapping = hls.autoLevelCapping;\n      }\n    }\n  }\n\n  /*\n   * returns level should be the one with the dimensions equal or greater than the media (player) dimensions (so the video will be downscaled)\n   */\n  getMaxLevel(capLevelIndex: number): number {\n    const levels = this.hls.levels;\n    if (!levels.length) {\n      return -1;\n    }\n\n    const validLevels = levels.filter(\n      (level, index) => this.isLevelAllowed(level) && index <= capLevelIndex\n    );\n\n    this.clientRect = null;\n    return CapLevelController.getMaxLevelByMediaSize(\n      validLevels,\n      this.mediaWidth,\n      this.mediaHeight\n    );\n  }\n\n  startCapping() {\n    if (this.timer) {\n      // Don't reset capping if started twice; this can happen if the manifest signals a video codec\n      return;\n    }\n    this.autoLevelCapping = Number.POSITIVE_INFINITY;\n    this.hls.firstLevel = this.getMaxLevel(this.firstLevel);\n    self.clearInterval(this.timer);\n    this.timer = self.setInterval(this.detectPlayerSize.bind(this), 1000);\n    this.detectPlayerSize();\n  }\n\n  stopCapping() {\n    this.restrictedLevels = [];\n    this.firstLevel = -1;\n    this.autoLevelCapping = Number.POSITIVE_INFINITY;\n    if (this.timer) {\n      self.clearInterval(this.timer);\n      this.timer = undefined;\n    }\n  }\n\n  getDimensions(): { width: number; height: number } {\n    if (this.clientRect) {\n      return this.clientRect;\n    }\n    const media = this.media;\n    const boundsRect = {\n      width: 0,\n      height: 0,\n    };\n\n    if (media) {\n      const clientRect = media.getBoundingClientRect();\n      boundsRect.width = clientRect.width;\n      boundsRect.height = clientRect.height;\n      if (!boundsRect.width && !boundsRect.height) {\n        // When the media element has no width or height (equivalent to not being in the DOM),\n        // then use its width and height attributes (media.width, media.height)\n        boundsRect.width =\n          clientRect.right - clientRect.left || media.width || 0;\n        boundsRect.height =\n          clientRect.bottom - clientRect.top || media.height || 0;\n      }\n    }\n    this.clientRect = boundsRect;\n    return boundsRect;\n  }\n\n  get mediaWidth(): number {\n    return this.getDimensions().width * this.contentScaleFactor;\n  }\n\n  get mediaHeight(): number {\n    return this.getDimensions().height * this.contentScaleFactor;\n  }\n\n  get contentScaleFactor(): number {\n    let pixelRatio = 1;\n    if (!this.hls.config.ignoreDevicePixelRatio) {\n      try {\n        pixelRatio = self.devicePixelRatio;\n      } catch (e) {\n        /* no-op */\n      }\n    }\n\n    return pixelRatio;\n  }\n\n  private isLevelAllowed(level: Level): boolean {\n    const restrictedLevels = this.restrictedLevels;\n    return !restrictedLevels.some((restrictedLevel) => {\n      return (\n        level.bitrate === restrictedLevel.bitrate &&\n        level.width === restrictedLevel.width &&\n        level.height === restrictedLevel.height\n      );\n    });\n  }\n\n  static getMaxLevelByMediaSize(\n    levels: Array<Level>,\n    width: number,\n    height: number\n  ): number {\n    if (!levels?.length) {\n      return -1;\n    }\n\n    // Levels can have the same dimensions but differing bandwidths - since levels are ordered, we can look to the next\n    // to determine whether we've chosen the greatest bandwidth for the media's dimensions\n    const atGreatestBandwidth = (curLevel, nextLevel) => {\n      if (!nextLevel) {\n        return true;\n      }\n\n      return (\n        curLevel.width !== nextLevel.width ||\n        curLevel.height !== nextLevel.height\n      );\n    };\n\n    // If we run through the loop without breaking, the media's dimensions are greater than every level, so default to\n    // the max level\n    let maxLevelIndex = levels.length - 1;\n\n    for (let i = 0; i < levels.length; i += 1) {\n      const level = levels[i];\n      if (\n        (level.width >= width || level.height >= height) &&\n        atGreatestBandwidth(level, levels[i + 1])\n      ) {\n        maxLevelIndex = i;\n        break;\n      }\n    }\n\n    return maxLevelIndex;\n  }\n}\n\nexport default CapLevelController;\n","import { Events } from '../events';\nimport { logger } from '../utils/logger';\nimport type { ComponentAPI } from '../types/component-api';\nimport type Hls from '../hls';\nimport type { MediaAttachingData } from '../types/events';\nimport StreamController from './stream-controller';\n\nclass FPSController implements ComponentAPI {\n  private hls: Hls;\n  private isVideoPlaybackQualityAvailable: boolean = false;\n  private timer?: number;\n  private media: HTMLVideoElement | null = null;\n  private lastTime: any;\n  private lastDroppedFrames: number = 0;\n  private lastDecodedFrames: number = 0;\n  // stream controller must be provided as a dependency!\n  private streamController!: StreamController;\n\n  constructor(hls: Hls) {\n    this.hls = hls;\n\n    this.registerListeners();\n  }\n\n  public setStreamController(streamController: StreamController) {\n    this.streamController = streamController;\n  }\n\n  protected registerListeners() {\n    this.hls.on(Events.MEDIA_ATTACHING, this.onMediaAttaching, this);\n  }\n\n  protected unregisterListeners() {\n    this.hls.off(Events.MEDIA_ATTACHING, this.onMediaAttaching, this);\n  }\n\n  destroy() {\n    if (this.timer) {\n      clearInterval(this.timer);\n    }\n\n    this.unregisterListeners();\n    this.isVideoPlaybackQualityAvailable = false;\n    this.media = null;\n  }\n\n  protected onMediaAttaching(\n    event: Events.MEDIA_ATTACHING,\n    data: MediaAttachingData\n  ) {\n    const config = this.hls.config;\n    if (config.capLevelOnFPSDrop) {\n      const media =\n        data.media instanceof self.HTMLVideoElement ? data.media : null;\n      this.media = media;\n      if (media && typeof media.getVideoPlaybackQuality === 'function') {\n        this.isVideoPlaybackQualityAvailable = true;\n      }\n\n      self.clearInterval(this.timer);\n      this.timer = self.setInterval(\n        this.checkFPSInterval.bind(this),\n        config.fpsDroppedMonitoringPeriod\n      );\n    }\n  }\n\n  checkFPS(\n    video: HTMLVideoElement,\n    decodedFrames: number,\n    droppedFrames: number\n  ) {\n    const currentTime = performance.now();\n    if (decodedFrames) {\n      if (this.lastTime) {\n        const currentPeriod = currentTime - this.lastTime;\n        const currentDropped = droppedFrames - this.lastDroppedFrames;\n        const currentDecoded = decodedFrames - this.lastDecodedFrames;\n        const droppedFPS = (1000 * currentDropped) / currentPeriod;\n        const hls = this.hls;\n        hls.trigger(Events.FPS_DROP, {\n          currentDropped: currentDropped,\n          currentDecoded: currentDecoded,\n          totalDroppedFrames: droppedFrames,\n        });\n        if (droppedFPS > 0) {\n          // logger.log('checkFPS : droppedFPS/decodedFPS:' + droppedFPS/(1000 * currentDecoded / currentPeriod));\n          if (\n            currentDropped >\n            hls.config.fpsDroppedMonitoringThreshold * currentDecoded\n          ) {\n            let currentLevel = hls.currentLevel;\n            logger.warn(\n              'drop FPS ratio greater than max allowed value for currentLevel: ' +\n                currentLevel\n            );\n            if (\n              currentLevel > 0 &&\n              (hls.autoLevelCapping === -1 ||\n                hls.autoLevelCapping >= currentLevel)\n            ) {\n              currentLevel = currentLevel - 1;\n              hls.trigger(Events.FPS_DROP_LEVEL_CAPPING, {\n                level: currentLevel,\n                droppedLevel: hls.currentLevel,\n              });\n              hls.autoLevelCapping = currentLevel;\n              this.streamController.nextLevelSwitch();\n            }\n          }\n        }\n      }\n      this.lastTime = currentTime;\n      this.lastDroppedFrames = droppedFrames;\n      this.lastDecodedFrames = decodedFrames;\n    }\n  }\n\n  checkFPSInterval() {\n    const video = this.media;\n    if (video) {\n      if (this.isVideoPlaybackQualityAvailable) {\n        const videoPlaybackQuality = video.getVideoPlaybackQuality();\n        this.checkFPS(\n          video,\n          videoPlaybackQuality.totalVideoFrames,\n          videoPlaybackQuality.droppedVideoFrames\n        );\n      } else {\n        // HTMLVideoElement doesn't include the webkit types\n        this.checkFPS(\n          video,\n          (video as any).webkitDecodedFrameCount as number,\n          (video as any).webkitDroppedFrameCount as number\n        );\n      }\n    }\n  }\n}\n\nexport default FPSController;\n","/**\n * @author Stephan Hesse <disparat@gmail.com> | <tchakabam@gmail.com>\n *\n * DRM support for Hls.js\n */\nimport { Events } from '../events';\nimport { ErrorTypes, ErrorDetails } from '../errors';\nimport { logger } from '../utils/logger';\nimport {\n  getKeySystemsForConfig,\n  getSupportedMediaKeySystemConfigurations,\n  keySystemDomainToKeySystemFormat as keySystemToKeySystemFormat,\n  KeySystemFormats,\n  keySystemFormatToKeySystemDomain,\n  KeySystemIds,\n  keySystemIdToKeySystemDomain,\n} from '../utils/mediakeys-helper';\nimport {\n  KeySystems,\n  requestMediaKeySystemAccess,\n} from '../utils/mediakeys-helper';\nimport { strToUtf8array } from '../utils/keysystem-util';\nimport { base64Decode } from '../utils/numeric-encoding-utils';\nimport { DecryptData, LevelKey } from '../loader/level-key';\nimport Hex from '../utils/hex';\nimport { bin2str, parsePssh, parseSinf } from '../utils/mp4-tools';\nimport { EventEmitter } from 'eventemitter3';\nimport type Hls from '../hls';\nimport type { ComponentAPI } from '../types/component-api';\nimport type {\n  MediaAttachedData,\n  KeyLoadedData,\n  ErrorData,\n  ManifestLoadedData,\n} from '../types/events';\nimport type { EMEControllerConfig, HlsConfig, LoadPolicy } from '../config';\nimport type { Fragment } from '../loader/fragment';\nimport type {\n  Loader,\n  LoaderCallbacks,\n  LoaderConfiguration,\n  LoaderContext,\n} from '../types/loader';\n\nconst LOGGER_PREFIX = '[eme]';\n\ninterface KeySystemAccessPromises {\n  keySystemAccess: Promise<MediaKeySystemAccess>;\n  mediaKeys?: Promise<MediaKeys>;\n  certificate?: Promise<BufferSource | void>;\n}\n\nexport interface MediaKeySessionContext {\n  keySystem: KeySystems;\n  mediaKeys: MediaKeys;\n  decryptdata: LevelKey;\n  mediaKeysSession: MediaKeySession;\n  keyStatus: MediaKeyStatus;\n  licenseXhr?: XMLHttpRequest;\n}\n\n/**\n * Controller to deal with encrypted media extensions (EME)\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Encrypted_Media_Extensions_API\n *\n * @class\n * @constructor\n */\nclass EMEController implements ComponentAPI {\n  public static CDMCleanupPromise: Promise<void> | void;\n\n  private readonly hls: Hls;\n  private readonly config: EMEControllerConfig & {\n    loader: { new (confg: HlsConfig): Loader<LoaderContext> };\n    certLoadPolicy: LoadPolicy;\n    keyLoadPolicy: LoadPolicy;\n  };\n  private media: HTMLMediaElement | null = null;\n  private keyFormatPromise: Promise<KeySystemFormats> | null = null;\n  private keySystemAccessPromises: {\n    [keysystem: string]: KeySystemAccessPromises;\n  } = {};\n  private _requestLicenseFailureCount: number = 0;\n  private mediaKeySessions: MediaKeySessionContext[] = [];\n  private keyIdToKeySessionPromise: {\n    [keyId: string]: Promise<MediaKeySessionContext>;\n  } = {};\n  private setMediaKeysQueue: Promise<void>[] = EMEController.CDMCleanupPromise\n    ? [EMEController.CDMCleanupPromise]\n    : [];\n  private onMediaEncrypted = this._onMediaEncrypted.bind(this);\n  private onWaitingForKey = this._onWaitingForKey.bind(this);\n\n  private debug: (msg: any) => void = logger.debug.bind(logger, LOGGER_PREFIX);\n  private log: (msg: any) => void = logger.log.bind(logger, LOGGER_PREFIX);\n  private warn: (msg: any) => void = logger.warn.bind(logger, LOGGER_PREFIX);\n  private error: (msg: any) => void = logger.error.bind(logger, LOGGER_PREFIX);\n\n  constructor(hls: Hls) {\n    this.hls = hls;\n    this.config = hls.config;\n    this.registerListeners();\n  }\n\n  public destroy() {\n    this.unregisterListeners();\n    this.onMediaDetached();\n    // Remove any references that could be held in config options or callbacks\n    const config = this.config;\n    config.requestMediaKeySystemAccessFunc = null;\n    config.licenseXhrSetup = config.licenseResponseCallback = undefined;\n    config.drmSystems = config.drmSystemOptions = {};\n    // @ts-ignore\n    this.hls =\n      this.onMediaEncrypted =\n      this.onWaitingForKey =\n      this.keyIdToKeySessionPromise =\n        null as any;\n    // @ts-ignore\n    this.config = null;\n  }\n\n  private registerListeners() {\n    this.hls.on(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n    this.hls.on(Events.MEDIA_DETACHED, this.onMediaDetached, this);\n    this.hls.on(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    this.hls.on(Events.MANIFEST_LOADED, this.onManifestLoaded, this);\n  }\n\n  private unregisterListeners() {\n    this.hls.off(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n    this.hls.off(Events.MEDIA_DETACHED, this.onMediaDetached, this);\n    this.hls.off(Events.MANIFEST_LOADING, this.onManifestLoading, this);\n    this.hls.off(Events.MANIFEST_LOADED, this.onManifestLoaded, this);\n  }\n\n  private getLicenseServerUrl(keySystem: KeySystems): string | never {\n    const { drmSystems, widevineLicenseUrl } = this.config;\n    const keySystemConfiguration = drmSystems[keySystem];\n\n    if (keySystemConfiguration) {\n      return keySystemConfiguration.licenseUrl;\n    }\n\n    // For backward compatibility\n    if (keySystem === KeySystems.WIDEVINE && widevineLicenseUrl) {\n      return widevineLicenseUrl;\n    }\n\n    throw new Error(\n      `no license server URL configured for key-system \"${keySystem}\"`\n    );\n  }\n\n  private getServerCertificateUrl(keySystem: KeySystems): string | void {\n    const { drmSystems } = this.config;\n    const keySystemConfiguration = drmSystems[keySystem];\n\n    if (keySystemConfiguration) {\n      return keySystemConfiguration.serverCertificateUrl;\n    } else {\n      this.log(`No Server Certificate in config.drmSystems[\"${keySystem}\"]`);\n    }\n  }\n\n  private attemptKeySystemAccess(\n    keySystemsToAttempt: KeySystems[]\n  ): Promise<{ keySystem: KeySystems; mediaKeys: MediaKeys }> {\n    const levels = this.hls.levels;\n    const uniqueCodec = (value: string | undefined, i, a): value is string =>\n      !!value && a.indexOf(value) === i;\n    const audioCodecs = levels\n      .map((level) => level.audioCodec)\n      .filter(uniqueCodec);\n    const videoCodecs = levels\n      .map((level) => level.videoCodec)\n      .filter(uniqueCodec);\n    if (audioCodecs.length + videoCodecs.length === 0) {\n      videoCodecs.push('avc1.42e01e');\n    }\n\n    return new Promise(\n      (\n        resolve: (result: {\n          keySystem: KeySystems;\n          mediaKeys: MediaKeys;\n        }) => void,\n        reject: (Error) => void\n      ) => {\n        const attempt = (keySystems) => {\n          const keySystem = keySystems.shift();\n          this.getMediaKeysPromise(keySystem, audioCodecs, videoCodecs)\n            .then((mediaKeys) => resolve({ keySystem, mediaKeys }))\n            .catch((error) => {\n              if (keySystems.length) {\n                attempt(keySystems);\n              } else if (error instanceof EMEKeyError) {\n                reject(error);\n              } else {\n                reject(\n                  new EMEKeyError(\n                    {\n                      type: ErrorTypes.KEY_SYSTEM_ERROR,\n                      details: ErrorDetails.KEY_SYSTEM_NO_ACCESS,\n                      error,\n                      fatal: true,\n                    },\n                    error.message\n                  )\n                );\n              }\n            });\n        };\n        attempt(keySystemsToAttempt);\n      }\n    );\n  }\n\n  private requestMediaKeySystemAccess(\n    keySystem: KeySystems,\n    supportedConfigurations: MediaKeySystemConfiguration[]\n  ): Promise<MediaKeySystemAccess> {\n    const { requestMediaKeySystemAccessFunc } = this.config;\n    if (!(typeof requestMediaKeySystemAccessFunc === 'function')) {\n      let errMessage = `Configured requestMediaKeySystemAccess is not a function ${requestMediaKeySystemAccessFunc}`;\n      if (\n        requestMediaKeySystemAccess === null &&\n        self.location.protocol === 'http:'\n      ) {\n        errMessage = `navigator.requestMediaKeySystemAccess is not available over insecure protocol ${location.protocol}`;\n      }\n      return Promise.reject(new Error(errMessage));\n    }\n\n    return requestMediaKeySystemAccessFunc(keySystem, supportedConfigurations);\n  }\n\n  private getMediaKeysPromise(\n    keySystem: KeySystems,\n    audioCodecs: string[],\n    videoCodecs: string[]\n  ): Promise<MediaKeys> {\n    // This can throw, but is caught in event handler callpath\n    const mediaKeySystemConfigs = getSupportedMediaKeySystemConfigurations(\n      keySystem,\n      audioCodecs,\n      videoCodecs,\n      this.config.drmSystemOptions\n    );\n    const keySystemAccessPromises: KeySystemAccessPromises =\n      this.keySystemAccessPromises[keySystem];\n    let keySystemAccess = keySystemAccessPromises?.keySystemAccess;\n    if (!keySystemAccess) {\n      this.log(\n        `Requesting encrypted media \"${keySystem}\" key-system access with config: ${JSON.stringify(\n          mediaKeySystemConfigs\n        )}`\n      );\n      keySystemAccess = this.requestMediaKeySystemAccess(\n        keySystem,\n        mediaKeySystemConfigs\n      );\n      const keySystemAccessPromises: KeySystemAccessPromises =\n        (this.keySystemAccessPromises[keySystem] = {\n          keySystemAccess,\n        });\n      keySystemAccess.catch((error) => {\n        this.log(\n          `Failed to obtain access to key-system \"${keySystem}\": ${error}`\n        );\n      });\n      return keySystemAccess.then((mediaKeySystemAccess) => {\n        this.log(\n          `Access for key-system \"${mediaKeySystemAccess.keySystem}\" obtained`\n        );\n\n        const certificateRequest = this.fetchServerCertificate(keySystem);\n\n        this.log(`Create media-keys for \"${keySystem}\"`);\n        keySystemAccessPromises.mediaKeys = mediaKeySystemAccess\n          .createMediaKeys()\n          .then((mediaKeys) => {\n            this.log(`Media-keys created for \"${keySystem}\"`);\n            return certificateRequest.then((certificate) => {\n              if (certificate) {\n                return this.setMediaKeysServerCertificate(\n                  mediaKeys,\n                  keySystem,\n                  certificate\n                );\n              }\n              return mediaKeys;\n            });\n          });\n\n        keySystemAccessPromises.mediaKeys.catch((error) => {\n          this.error(\n            `Failed to create media-keys for \"${keySystem}\"}: ${error}`\n          );\n        });\n\n        return keySystemAccessPromises.mediaKeys;\n      });\n    }\n    return keySystemAccess.then(() => keySystemAccessPromises.mediaKeys!);\n  }\n\n  private createMediaKeySessionContext({\n    decryptdata,\n    keySystem,\n    mediaKeys,\n  }: {\n    decryptdata: LevelKey;\n    keySystem: KeySystems;\n    mediaKeys: MediaKeys;\n  }): MediaKeySessionContext {\n    this.log(\n      `Creating key-system session \"${keySystem}\" keyId: ${Hex.hexDump(\n        decryptdata.keyId! || []\n      )}`\n    );\n\n    const mediaKeysSession = mediaKeys.createSession();\n\n    const mediaKeySessionContext: MediaKeySessionContext = {\n      decryptdata,\n      keySystem,\n      mediaKeys,\n      mediaKeysSession,\n      keyStatus: 'status-pending',\n    };\n\n    this.mediaKeySessions.push(mediaKeySessionContext);\n\n    return mediaKeySessionContext;\n  }\n\n  private renewKeySession(mediaKeySessionContext: MediaKeySessionContext) {\n    const decryptdata = mediaKeySessionContext.decryptdata;\n    if (decryptdata.pssh) {\n      const keySessionContext = this.createMediaKeySessionContext(\n        mediaKeySessionContext\n      );\n      const keyId = this.getKeyIdString(decryptdata);\n      const scheme = 'cenc';\n      this.keyIdToKeySessionPromise[keyId] =\n        this.generateRequestWithPreferredKeySession(\n          keySessionContext,\n          scheme,\n          decryptdata.pssh,\n          'expired'\n        );\n    } else {\n      this.warn(`Could not renew expired session. Missing pssh initData.`);\n    }\n    this.removeSession(mediaKeySessionContext);\n  }\n\n  private getKeyIdString(decryptdata: DecryptData | undefined): string | never {\n    if (!decryptdata) {\n      throw new Error('Could not read keyId of undefined decryptdata');\n    }\n    if (decryptdata.keyId === null) {\n      throw new Error('keyId is null');\n    }\n    return Hex.hexDump(decryptdata.keyId);\n  }\n\n  private updateKeySession(\n    mediaKeySessionContext: MediaKeySessionContext,\n    data: Uint8Array\n  ): Promise<void> {\n    const keySession = mediaKeySessionContext.mediaKeysSession;\n    this.log(\n      `Updating key-session \"${keySession.sessionId}\" for keyID ${Hex.hexDump(\n        mediaKeySessionContext.decryptdata?.keyId! || []\n      )}\n      } (data length: ${data ? data.byteLength : data})`\n    );\n    return keySession.update(data);\n  }\n\n  public selectKeySystemFormat(frag: Fragment): Promise<KeySystemFormats> {\n    const keyFormats = Object.keys(frag.levelkeys || {}) as KeySystemFormats[];\n    if (!this.keyFormatPromise) {\n      this.log(\n        `Selecting key-system from fragment (sn: ${frag.sn} ${frag.type}: ${\n          frag.level\n        }) key formats ${keyFormats.join(', ')}`\n      );\n      this.keyFormatPromise = this.getKeyFormatPromise(keyFormats);\n    }\n    return this.keyFormatPromise;\n  }\n\n  private getKeyFormatPromise(\n    keyFormats: KeySystemFormats[]\n  ): Promise<KeySystemFormats> {\n    return new Promise((resolve, reject) => {\n      const keySystemsInConfig = getKeySystemsForConfig(this.config);\n      const keySystemsToAttempt = keyFormats\n        .map(keySystemFormatToKeySystemDomain)\n        .filter(\n          (value) => !!value && keySystemsInConfig.indexOf(value) !== -1\n        ) as any as KeySystems[];\n      return this.getKeySystemSelectionPromise(keySystemsToAttempt)\n        .then(({ keySystem }) => {\n          const keySystemFormat = keySystemToKeySystemFormat(keySystem);\n          if (keySystemFormat) {\n            resolve(keySystemFormat);\n          } else {\n            reject(\n              new Error(`Unable to find format for key-system \"${keySystem}\"`)\n            );\n          }\n        })\n        .catch(reject);\n    });\n  }\n\n  public loadKey(data: KeyLoadedData): Promise<MediaKeySessionContext> {\n    const decryptdata = data.keyInfo.decryptdata;\n\n    const keyId = this.getKeyIdString(decryptdata);\n    const keyDetails = `(keyId: ${keyId} format: \"${decryptdata.keyFormat}\" method: ${decryptdata.method} uri: ${decryptdata.uri})`;\n\n    this.log(`Starting session for key ${keyDetails}`);\n\n    let keySessionContextPromise = this.keyIdToKeySessionPromise[keyId];\n    if (!keySessionContextPromise) {\n      keySessionContextPromise = this.keyIdToKeySessionPromise[keyId] =\n        this.getKeySystemForKeyPromise(decryptdata).then(\n          ({ keySystem, mediaKeys }) => {\n            this.throwIfDestroyed();\n            this.log(\n              `Handle encrypted media sn: ${data.frag.sn} ${data.frag.type}: ${data.frag.level} using key ${keyDetails}`\n            );\n\n            return this.attemptSetMediaKeys(keySystem, mediaKeys).then(() => {\n              this.throwIfDestroyed();\n              const keySessionContext = this.createMediaKeySessionContext({\n                keySystem,\n                mediaKeys,\n                decryptdata,\n              });\n              const scheme = 'cenc';\n              return this.generateRequestWithPreferredKeySession(\n                keySessionContext,\n                scheme,\n                decryptdata.pssh,\n                'playlist-key'\n              );\n            });\n          }\n        );\n\n      keySessionContextPromise.catch((error) => this.handleError(error));\n    }\n\n    return keySessionContextPromise;\n  }\n\n  private throwIfDestroyed(message = 'Invalid state'): void | never {\n    if (!this.hls) {\n      throw new Error('invalid state');\n    }\n  }\n\n  private handleError(error: EMEKeyError | Error) {\n    if (!this.hls) {\n      return;\n    }\n    this.error(error.message);\n    if (error instanceof EMEKeyError) {\n      this.hls.trigger(Events.ERROR, error.data);\n    } else {\n      this.hls.trigger(Events.ERROR, {\n        type: ErrorTypes.KEY_SYSTEM_ERROR,\n        details: ErrorDetails.KEY_SYSTEM_NO_KEYS,\n        error,\n        fatal: true,\n      });\n    }\n  }\n\n  private getKeySystemForKeyPromise(\n    decryptdata: LevelKey\n  ): Promise<{ keySystem: KeySystems; mediaKeys: MediaKeys }> {\n    const keyId = this.getKeyIdString(decryptdata);\n    const mediaKeySessionContext = this.keyIdToKeySessionPromise[keyId];\n    if (!mediaKeySessionContext) {\n      const keySystem = keySystemFormatToKeySystemDomain(\n        decryptdata.keyFormat as KeySystemFormats\n      );\n      const keySystemsToAttempt = keySystem\n        ? [keySystem]\n        : getKeySystemsForConfig(this.config);\n      return this.attemptKeySystemAccess(keySystemsToAttempt);\n    }\n    return mediaKeySessionContext;\n  }\n\n  private getKeySystemSelectionPromise(\n    keySystemsToAttempt: KeySystems[]\n  ): Promise<{ keySystem: KeySystems; mediaKeys: MediaKeys }> | never {\n    if (!keySystemsToAttempt.length) {\n      keySystemsToAttempt = getKeySystemsForConfig(this.config);\n    }\n    if (keySystemsToAttempt.length === 0) {\n      throw new EMEKeyError(\n        {\n          type: ErrorTypes.KEY_SYSTEM_ERROR,\n          details: ErrorDetails.KEY_SYSTEM_NO_CONFIGURED_LICENSE,\n          fatal: true,\n        },\n        `Missing key-system license configuration options ${JSON.stringify({\n          drmSystems: this.config.drmSystems,\n        })}`\n      );\n    }\n    return this.attemptKeySystemAccess(keySystemsToAttempt);\n  }\n\n  private _onMediaEncrypted(event: MediaEncryptedEvent) {\n    const { initDataType, initData } = event;\n    this.debug(`\"${event.type}\" event: init data type: \"${initDataType}\"`);\n\n    // Ignore event when initData is null\n    if (initData === null) {\n      return;\n    }\n\n    let keyId: Uint8Array | undefined;\n    let keySystemDomain: KeySystems | undefined;\n\n    if (\n      initDataType === 'sinf' &&\n      this.config.drmSystems[KeySystems.FAIRPLAY]\n    ) {\n      // Match sinf keyId to playlist skd://keyId=\n      const json = bin2str(new Uint8Array(initData));\n      try {\n        const sinf = base64Decode(JSON.parse(json).sinf);\n        const tenc = parseSinf(new Uint8Array(sinf));\n        if (!tenc) {\n          return;\n        }\n        keyId = tenc.subarray(8, 24);\n        keySystemDomain = KeySystems.FAIRPLAY;\n      } catch (error) {\n        this.warn('Failed to parse sinf \"encrypted\" event message initData');\n        return;\n      }\n    } else {\n      // Support clear-lead key-session creation (otherwise depend on playlist keys)\n      const psshInfo = parsePssh(initData);\n      if (psshInfo === null) {\n        return;\n      }\n      if (\n        psshInfo.version === 0 &&\n        psshInfo.systemId === KeySystemIds.WIDEVINE &&\n        psshInfo.data\n      ) {\n        keyId = psshInfo.data.subarray(8, 24);\n      }\n      keySystemDomain = keySystemIdToKeySystemDomain(\n        psshInfo.systemId as KeySystemIds\n      );\n    }\n\n    if (!keySystemDomain || !keyId) {\n      return;\n    }\n\n    const keyIdHex = Hex.hexDump(keyId);\n    const { keyIdToKeySessionPromise, mediaKeySessions } = this;\n\n    let keySessionContextPromise = keyIdToKeySessionPromise[keyIdHex];\n    for (let i = 0; i < mediaKeySessions.length; i++) {\n      // Match playlist key\n      const keyContext = mediaKeySessions[i];\n      const decryptdata = keyContext.decryptdata;\n      if (decryptdata.pssh || !decryptdata.keyId) {\n        continue;\n      }\n      const oldKeyIdHex = Hex.hexDump(decryptdata.keyId);\n      if (\n        keyIdHex === oldKeyIdHex ||\n        decryptdata.uri.replace(/-/g, '').indexOf(keyIdHex) !== -1\n      ) {\n        keySessionContextPromise = keyIdToKeySessionPromise[oldKeyIdHex];\n        delete keyIdToKeySessionPromise[oldKeyIdHex];\n        decryptdata.pssh = new Uint8Array(initData);\n        decryptdata.keyId = keyId;\n        keySessionContextPromise = keyIdToKeySessionPromise[keyIdHex] =\n          keySessionContextPromise.then(() => {\n            return this.generateRequestWithPreferredKeySession(\n              keyContext,\n              initDataType,\n              initData,\n              'encrypted-event-key-match'\n            );\n          });\n        break;\n      }\n    }\n\n    if (!keySessionContextPromise) {\n      // Clear-lead key (not encountered in playlist)\n      keySessionContextPromise = keyIdToKeySessionPromise[keyIdHex] =\n        this.getKeySystemSelectionPromise([keySystemDomain]).then(\n          ({ keySystem, mediaKeys }) => {\n            this.throwIfDestroyed();\n            const decryptdata = new LevelKey(\n              'ISO-23001-7',\n              keyIdHex,\n              keySystemToKeySystemFormat(keySystem) ?? ''\n            );\n            decryptdata.pssh = new Uint8Array(initData);\n            decryptdata.keyId = keyId as Uint8Array;\n            return this.attemptSetMediaKeys(keySystem, mediaKeys).then(() => {\n              this.throwIfDestroyed();\n              const keySessionContext = this.createMediaKeySessionContext({\n                decryptdata,\n                keySystem,\n                mediaKeys,\n              });\n              return this.generateRequestWithPreferredKeySession(\n                keySessionContext,\n                initDataType,\n                initData,\n                'encrypted-event-no-match'\n              );\n            });\n          }\n        );\n    }\n    keySessionContextPromise.catch((error) => this.handleError(error));\n  }\n\n  private _onWaitingForKey(event: Event) {\n    this.log(`\"${event.type}\" event`);\n  }\n\n  private attemptSetMediaKeys(\n    keySystem: KeySystems,\n    mediaKeys: MediaKeys\n  ): Promise<void> {\n    const queue = this.setMediaKeysQueue.slice();\n\n    this.log(`Setting media-keys for \"${keySystem}\"`);\n    // Only one setMediaKeys() can run at one time, and multiple setMediaKeys() operations\n    // can be queued for execution for multiple key sessions.\n    const setMediaKeysPromise = Promise.all(queue).then(() => {\n      if (!this.media) {\n        throw new Error(\n          'Attempted to set mediaKeys without media element attached'\n        );\n      }\n      return this.media.setMediaKeys(mediaKeys);\n    });\n    this.setMediaKeysQueue.push(setMediaKeysPromise);\n    return setMediaKeysPromise.then(() => {\n      this.log(`Media-keys set for \"${keySystem}\"`);\n      queue.push(setMediaKeysPromise!);\n      this.setMediaKeysQueue = this.setMediaKeysQueue.filter(\n        (p) => queue.indexOf(p) === -1\n      );\n    });\n  }\n\n  private generateRequestWithPreferredKeySession(\n    context: MediaKeySessionContext,\n    initDataType: string,\n    initData: ArrayBuffer | null,\n    reason:\n      | 'playlist-key'\n      | 'encrypted-event-key-match'\n      | 'encrypted-event-no-match'\n      | 'expired'\n  ): Promise<MediaKeySessionContext> | never {\n    const generateRequestFilter =\n      this.config.drmSystems?.[context.keySystem]?.generateRequest;\n    if (generateRequestFilter) {\n      try {\n        const mappedInitData: ReturnType<typeof generateRequestFilter> =\n          generateRequestFilter.call(this.hls, initDataType, initData, context);\n        if (!mappedInitData) {\n          throw new Error(\n            'Invalid response from configured generateRequest filter'\n          );\n        }\n        initDataType = mappedInitData.initDataType;\n        initData = context.decryptdata.pssh = mappedInitData.initData\n          ? new Uint8Array(mappedInitData.initData)\n          : null;\n      } catch (error) {\n        this.warn(error.message);\n        if (this.hls?.config.debug) {\n          throw error;\n        }\n      }\n    }\n\n    if (initData === null) {\n      this.log(`Skipping key-session request for \"${reason}\" (no initData)`);\n      return Promise.resolve(context);\n    }\n\n    const keyId = this.getKeyIdString(context.decryptdata);\n    this.log(\n      `Generating key-session request for \"${reason}\": ${keyId} (init data type: ${initDataType} length: ${\n        initData ? initData.byteLength : null\n      })`\n    );\n\n    const licenseStatus = new EventEmitter();\n\n    context.mediaKeysSession.onmessage = (event: MediaKeyMessageEvent) => {\n      const keySession = context.mediaKeysSession;\n      if (!keySession) {\n        licenseStatus.emit('error', new Error('invalid state'));\n        return;\n      }\n      const { messageType, message } = event;\n      this.log(\n        `\"${messageType}\" message event for session \"${keySession.sessionId}\" message size: ${message.byteLength}`\n      );\n      if (\n        messageType === 'license-request' ||\n        messageType === 'license-renewal'\n      ) {\n        this.renewLicense(context, message).catch((error) => {\n          this.handleError(error);\n          licenseStatus.emit('error', error);\n        });\n      } else if (messageType === 'license-release') {\n        if (context.keySystem === KeySystems.FAIRPLAY) {\n          this.updateKeySession(context, strToUtf8array('acknowledged'));\n          this.removeSession(context);\n        }\n      } else {\n        this.warn(`unhandled media key message type \"${messageType}\"`);\n      }\n    };\n\n    context.mediaKeysSession.onkeystatuseschange = (\n      event: MediaKeyMessageEvent\n    ) => {\n      const keySession = context.mediaKeysSession;\n      if (!keySession) {\n        licenseStatus.emit('error', new Error('invalid state'));\n        return;\n      }\n      this.onKeyStatusChange(context);\n      const keyStatus = context.keyStatus;\n      licenseStatus.emit('keyStatus', keyStatus);\n      if (keyStatus === 'expired') {\n        this.warn(`${context.keySystem} expired for key ${keyId}`);\n        this.renewKeySession(context);\n      }\n    };\n\n    const keyUsablePromise = new Promise(\n      (resolve: (value?: void) => void, reject) => {\n        licenseStatus.on('error', reject);\n\n        licenseStatus.on('keyStatus', (keyStatus) => {\n          if (keyStatus.startsWith('usable')) {\n            resolve();\n          } else if (keyStatus === 'output-restricted') {\n            reject(\n              new EMEKeyError(\n                {\n                  type: ErrorTypes.KEY_SYSTEM_ERROR,\n                  details: ErrorDetails.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED,\n                  fatal: false,\n                },\n                'HDCP level output restricted'\n              )\n            );\n          } else if (keyStatus === 'internal-error') {\n            reject(\n              new EMEKeyError(\n                {\n                  type: ErrorTypes.KEY_SYSTEM_ERROR,\n                  details: ErrorDetails.KEY_SYSTEM_STATUS_INTERNAL_ERROR,\n                  fatal: true,\n                },\n                `key status changed to \"${keyStatus}\"`\n              )\n            );\n          } else if (keyStatus === 'expired') {\n            reject(new Error('key expired while generating request'));\n          } else {\n            this.warn(`unhandled key status change \"${keyStatus}\"`);\n          }\n        });\n      }\n    );\n\n    return context.mediaKeysSession\n      .generateRequest(initDataType, initData)\n      .then(() => {\n        this.log(\n          `Request generated for key-session \"${context.mediaKeysSession?.sessionId}\" keyId: ${keyId}`\n        );\n      })\n      .catch((error) => {\n        throw new EMEKeyError(\n          {\n            type: ErrorTypes.KEY_SYSTEM_ERROR,\n            details: ErrorDetails.KEY_SYSTEM_NO_SESSION,\n            error,\n            fatal: false,\n          },\n          `Error generating key-session request: ${error}`\n        );\n      })\n      .then(() => keyUsablePromise)\n      .catch((error) => {\n        licenseStatus.removeAllListeners();\n        this.removeSession(context);\n        throw error;\n      })\n      .then(() => {\n        licenseStatus.removeAllListeners();\n        return context;\n      });\n  }\n\n  private onKeyStatusChange(mediaKeySessionContext: MediaKeySessionContext) {\n    mediaKeySessionContext.mediaKeysSession.keyStatuses.forEach(\n      (status: MediaKeyStatus, keyId: BufferSource) => {\n        this.log(\n          `key status change \"${status}\" for keyStatuses keyId: ${Hex.hexDump(\n            'buffer' in keyId\n              ? new Uint8Array(keyId.buffer, keyId.byteOffset, keyId.byteLength)\n              : new Uint8Array(keyId)\n          )} session keyId: ${Hex.hexDump(\n            new Uint8Array(mediaKeySessionContext.decryptdata.keyId || [])\n          )} uri: ${mediaKeySessionContext.decryptdata.uri}`\n        );\n        mediaKeySessionContext.keyStatus = status;\n      }\n    );\n  }\n\n  private fetchServerCertificate(\n    keySystem: KeySystems\n  ): Promise<BufferSource | void> {\n    const config = this.config;\n    const Loader = config.loader;\n    const certLoader = new Loader(config as HlsConfig) as Loader<LoaderContext>;\n    const url = this.getServerCertificateUrl(keySystem);\n    if (!url) {\n      return Promise.resolve();\n    }\n    this.log(`Fetching serverCertificate for \"${keySystem}\"`);\n    return new Promise((resolve, reject) => {\n      const loaderContext: LoaderContext = {\n        responseType: 'arraybuffer',\n        url,\n      };\n      const loadPolicy = config.certLoadPolicy.default;\n      const loaderConfig: LoaderConfiguration = {\n        loadPolicy,\n        timeout: loadPolicy.maxLoadTimeMs,\n        maxRetry: 0,\n        retryDelay: 0,\n        maxRetryDelay: 0,\n      };\n      const loaderCallbacks: LoaderCallbacks<LoaderContext> = {\n        onSuccess: (response, stats, context, networkDetails) => {\n          resolve(response.data as ArrayBuffer);\n        },\n        onError: (response, contex, networkDetails, stats) => {\n          reject(\n            new EMEKeyError(\n              {\n                type: ErrorTypes.KEY_SYSTEM_ERROR,\n                details:\n                  ErrorDetails.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED,\n                fatal: true,\n                networkDetails,\n                response: {\n                  url: loaderContext.url,\n                  data: undefined,\n                  ...response,\n                },\n              },\n              `\"${keySystem}\" certificate request failed (${url}). Status: ${response.code} (${response.text})`\n            )\n          );\n        },\n        onTimeout: (stats, context, networkDetails) => {\n          reject(\n            new EMEKeyError(\n              {\n                type: ErrorTypes.KEY_SYSTEM_ERROR,\n                details:\n                  ErrorDetails.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED,\n                fatal: true,\n                networkDetails,\n                response: {\n                  url: loaderContext.url,\n                  data: undefined,\n                },\n              },\n              `\"${keySystem}\" certificate request timed out (${url})`\n            )\n          );\n        },\n        onAbort: (stats, context, networkDetails) => {\n          reject(new Error('aborted'));\n        },\n      };\n      certLoader.load(loaderContext, loaderConfig, loaderCallbacks);\n    });\n  }\n\n  private setMediaKeysServerCertificate(\n    mediaKeys: MediaKeys,\n    keySystem: KeySystems,\n    cert: BufferSource\n  ): Promise<MediaKeys> {\n    return new Promise((resolve, reject) => {\n      mediaKeys\n        .setServerCertificate(cert)\n        .then((success) => {\n          this.log(\n            `setServerCertificate ${\n              success ? 'success' : 'not supported by CDM'\n            } (${cert?.byteLength}) on \"${keySystem}\"`\n          );\n          resolve(mediaKeys);\n        })\n        .catch((error) => {\n          reject(\n            new EMEKeyError(\n              {\n                type: ErrorTypes.KEY_SYSTEM_ERROR,\n                details:\n                  ErrorDetails.KEY_SYSTEM_SERVER_CERTIFICATE_UPDATE_FAILED,\n                error,\n                fatal: true,\n              },\n              error.message\n            )\n          );\n        });\n    });\n  }\n\n  private renewLicense(\n    context: MediaKeySessionContext,\n    keyMessage: ArrayBuffer\n  ): Promise<void> {\n    return this.requestLicense(context, new Uint8Array(keyMessage)).then(\n      (data: ArrayBuffer) => {\n        return this.updateKeySession(context, new Uint8Array(data)).catch(\n          (error) => {\n            throw new EMEKeyError(\n              {\n                type: ErrorTypes.KEY_SYSTEM_ERROR,\n                details: ErrorDetails.KEY_SYSTEM_SESSION_UPDATE_FAILED,\n                error,\n                fatal: true,\n              },\n              error.message\n            );\n          }\n        );\n      }\n    );\n  }\n\n  private setupLicenseXHR(\n    xhr: XMLHttpRequest,\n    url: string,\n    keysListItem: MediaKeySessionContext,\n    licenseChallenge: Uint8Array\n  ): Promise<{ xhr: XMLHttpRequest; licenseChallenge: Uint8Array }> {\n    const licenseXhrSetup = this.config.licenseXhrSetup;\n\n    if (!licenseXhrSetup) {\n      xhr.open('POST', url, true);\n\n      return Promise.resolve({ xhr, licenseChallenge });\n    }\n\n    return Promise.resolve()\n      .then(() => {\n        if (!keysListItem.decryptdata) {\n          throw new Error('Key removed');\n        }\n        return licenseXhrSetup.call(\n          this.hls,\n          xhr,\n          url,\n          keysListItem,\n          licenseChallenge\n        );\n      })\n      .catch((error: Error) => {\n        if (!keysListItem.decryptdata) {\n          // Key session removed. Cancel license request.\n          throw error;\n        }\n        // let's try to open before running setup\n        xhr.open('POST', url, true);\n\n        return licenseXhrSetup.call(\n          this.hls,\n          xhr,\n          url,\n          keysListItem,\n          licenseChallenge\n        );\n      })\n      .then((licenseXhrSetupResult) => {\n        // if licenseXhrSetup did not yet call open, let's do it now\n        if (!xhr.readyState) {\n          xhr.open('POST', url, true);\n        }\n        const finalLicenseChallenge = licenseXhrSetupResult\n          ? licenseXhrSetupResult\n          : licenseChallenge;\n        return { xhr, licenseChallenge: finalLicenseChallenge };\n      });\n  }\n\n  private requestLicense(\n    keySessionContext: MediaKeySessionContext,\n    licenseChallenge: Uint8Array\n  ): Promise<ArrayBuffer> {\n    const keyLoadPolicy = this.config.keyLoadPolicy.default;\n    return new Promise((resolve, reject) => {\n      const url = this.getLicenseServerUrl(keySessionContext.keySystem);\n      this.log(`Sending license request to URL: ${url}`);\n      const xhr = new XMLHttpRequest();\n      xhr.responseType = 'arraybuffer';\n      xhr.onreadystatechange = () => {\n        if (!this.hls || !keySessionContext.mediaKeysSession) {\n          return reject(new Error('invalid state'));\n        }\n        if (xhr.readyState === 4) {\n          if (xhr.status === 200) {\n            this._requestLicenseFailureCount = 0;\n            let data = xhr.response;\n            this.log(\n              `License received ${\n                data instanceof ArrayBuffer ? data.byteLength : data\n              }`\n            );\n            const licenseResponseCallback = this.config.licenseResponseCallback;\n            if (licenseResponseCallback) {\n              try {\n                data = licenseResponseCallback.call(\n                  this.hls,\n                  xhr,\n                  url,\n                  keySessionContext\n                );\n              } catch (error) {\n                this.error(error);\n              }\n            }\n            resolve(data);\n          } else {\n            const retryConfig = keyLoadPolicy.errorRetry;\n            const maxNumRetry = retryConfig ? retryConfig.maxNumRetry : 0;\n            this._requestLicenseFailureCount++;\n            if (\n              this._requestLicenseFailureCount > maxNumRetry ||\n              (xhr.status >= 400 && xhr.status < 500)\n            ) {\n              reject(\n                new EMEKeyError(\n                  {\n                    type: ErrorTypes.KEY_SYSTEM_ERROR,\n                    details: ErrorDetails.KEY_SYSTEM_LICENSE_REQUEST_FAILED,\n                    fatal: true,\n                    networkDetails: xhr,\n                    response: {\n                      url,\n                      data: undefined as any,\n                      code: xhr.status,\n                      text: xhr.statusText,\n                    },\n                  },\n                  `License Request XHR failed (${url}). Status: ${xhr.status} (${xhr.statusText})`\n                )\n              );\n            } else {\n              const attemptsLeft =\n                maxNumRetry - this._requestLicenseFailureCount + 1;\n              this.warn(\n                `Retrying license request, ${attemptsLeft} attempts left`\n              );\n              this.requestLicense(keySessionContext, licenseChallenge).then(\n                resolve,\n                reject\n              );\n            }\n          }\n        }\n      };\n      if (\n        keySessionContext.licenseXhr &&\n        keySessionContext.licenseXhr.readyState !== XMLHttpRequest.DONE\n      ) {\n        keySessionContext.licenseXhr.abort();\n      }\n      keySessionContext.licenseXhr = xhr;\n\n      this.setupLicenseXHR(xhr, url, keySessionContext, licenseChallenge).then(\n        ({ xhr, licenseChallenge }) => {\n          xhr.send(licenseChallenge);\n        }\n      );\n    });\n  }\n\n  private onMediaAttached(\n    event: Events.MEDIA_ATTACHED,\n    data: MediaAttachedData\n  ) {\n    if (!this.config.emeEnabled) {\n      return;\n    }\n\n    const media = data.media;\n\n    // keep reference of media\n    this.media = media;\n\n    media.addEventListener('encrypted', this.onMediaEncrypted);\n    media.addEventListener('waitingforkey', this.onWaitingForKey);\n  }\n\n  private onMediaDetached() {\n    const media = this.media;\n    const mediaKeysList = this.mediaKeySessions;\n    if (media) {\n      media.removeEventListener('encrypted', this.onMediaEncrypted);\n      media.removeEventListener('waitingforkey', this.onWaitingForKey);\n      this.media = null;\n    }\n\n    this._requestLicenseFailureCount = 0;\n    this.setMediaKeysQueue = [];\n    this.mediaKeySessions = [];\n    this.keyIdToKeySessionPromise = {};\n    LevelKey.clearKeyUriToKeyIdMap();\n\n    // Close all sessions and remove media keys from the video element.\n    const keySessionCount = mediaKeysList.length;\n    EMEController.CDMCleanupPromise = Promise.all(\n      mediaKeysList\n        .map((mediaKeySessionContext) =>\n          this.removeSession(mediaKeySessionContext)\n        )\n        .concat(\n          media?.setMediaKeys(null).catch((error) => {\n            this.log(\n              `Could not clear media keys: ${error}. media.src: ${media?.src}`\n            );\n          })\n        )\n    )\n      .then(() => {\n        if (keySessionCount) {\n          this.log('finished closing key sessions and clearing media keys');\n          mediaKeysList.length = 0;\n        }\n      })\n      .catch((error) => {\n        this.log(\n          `Could not close sessions and clear media keys: ${error}. media.src: ${media?.src}`\n        );\n      });\n  }\n\n  private onManifestLoading() {\n    this.keyFormatPromise = null;\n  }\n\n  private onManifestLoaded(\n    event: Events.MANIFEST_LOADED,\n    { sessionKeys }: ManifestLoadedData\n  ) {\n    if (!sessionKeys || !this.config.emeEnabled) {\n      return;\n    }\n    if (!this.keyFormatPromise) {\n      const keyFormats: KeySystemFormats[] = sessionKeys.reduce(\n        (formats: KeySystemFormats[], sessionKey: LevelKey) => {\n          if (\n            formats.indexOf(sessionKey.keyFormat as KeySystemFormats) === -1\n          ) {\n            formats.push(sessionKey.keyFormat as KeySystemFormats);\n          }\n          return formats;\n        },\n        []\n      );\n      this.log(\n        `Selecting key-system from session-keys ${keyFormats.join(', ')}`\n      );\n      this.keyFormatPromise = this.getKeyFormatPromise(keyFormats);\n    }\n  }\n\n  private removeSession(\n    mediaKeySessionContext: MediaKeySessionContext\n  ): Promise<void> | void {\n    const { mediaKeysSession, licenseXhr } = mediaKeySessionContext;\n    if (mediaKeysSession) {\n      this.log(\n        `Remove licenses and keys and close session ${mediaKeysSession.sessionId}`\n      );\n      mediaKeysSession.onmessage = null;\n      mediaKeysSession.onkeystatuseschange = null;\n      if (licenseXhr && licenseXhr.readyState !== XMLHttpRequest.DONE) {\n        licenseXhr.abort();\n      }\n      mediaKeySessionContext.mediaKeysSession =\n        mediaKeySessionContext.decryptdata =\n        mediaKeySessionContext.licenseXhr =\n          undefined!;\n      const index = this.mediaKeySessions.indexOf(mediaKeySessionContext);\n      if (index > -1) {\n        this.mediaKeySessions.splice(index, 1);\n      }\n      return mediaKeysSession\n        .remove()\n        .catch((error) => {\n          this.log(`Could not remove session: ${error}`);\n        })\n        .then(() => {\n          return mediaKeysSession.close();\n        })\n        .catch((error) => {\n          this.log(`Could not close session: ${error}`);\n        });\n    }\n  }\n}\n\nclass EMEKeyError extends Error {\n  public readonly data: ErrorData;\n  constructor(\n    data: Omit<ErrorData, 'error'> & { error?: Error },\n    message: string\n  ) {\n    super(message);\n    data.error ||= new Error(message);\n    this.data = data as ErrorData;\n    data.err = data.error;\n  }\n}\n\nexport default EMEController;\n","/**\n * CMCD spec version\n */\nexport const CMCDVersion = 1;\n\n/**\n * CMCD Object Type\n */\nexport const enum CMCDObjectType {\n  MANIFEST = 'm',\n  AUDIO = 'a',\n  VIDEO = 'v',\n  MUXED = 'av',\n  INIT = 'i',\n  CAPTION = 'c',\n  TIMED_TEXT = 'tt',\n  KEY = 'k',\n  OTHER = 'o',\n}\n\n/**\n * CMCD Streaming Format\n */\nexport const CMCDStreamingFormatHLS = 'h';\n\n/**\n * CMCD Streaming Type\n */\nconst enum CMCDStreamType {\n  VOD = 'v',\n  LIVE = 'l',\n}\n\n/**\n * CMCD Headers\n */\nexport interface CMCDHeaders {\n  'CMCD-Object': string;\n  'CMCD-Request': string;\n  'CMCD-Session': string;\n  'CMCD-Status': string;\n}\n\n/**\n * CMCD\n */\nexport interface CMCD {\n  /////////////////\n  // CMCD Object //\n  /////////////////\n\n  /**\n   * Encoded bitrate\n   *\n   * The encoded bitrate of the audio or video object being requested. This may not be known precisely by the player; however,\n   * it MAY be estimated based upon playlist/manifest declarations. If the playlist declares both peak and average bitrate values,\n   * the peak value should be transmitted.\n   *\n   * Integer kbps\n   */\n  br?: number;\n\n  /**\n   * Object duration\n   *\n   * The playback duration in milliseconds of the object being requested. If a partial segment is being requested, then this value\n   * MUST indicate the playback duration of that part and not that of its parent segment. This value can be an approximation of the\n   * estimated duration if the explicit value is not known.\n   *\n   * Integer milliseconds\n   */\n  d?: number;\n\n  /**\n   * Object type\n   *\n   * The media type of the current object being requested:\n   * - `m` = text file, such as a manifest or playlist\n   * - `a` = audio only\n   * - `v` = video only\n   * - `av` = muxed audio and video\n   * - `i` = init segment\n   * - `c` = caption or subtitle\n   * - `tt` = ISOBMFF timed text track\n   * - `k` = cryptographic key, license or certificate.\n   * - `o` = other\n   *\n   * If the object type being requested is unknown, then this key MUST NOT be used.\n   */\n  ot?: CMCDObjectType;\n\n  /**\n   * Top bitrate\n   *\n   * The highest bitrate rendition in the manifest or playlist that the client is allowed to play, given current codec, licensing and\n   * sizing constraints.\n   *\n   * Integer Kbps\n   */\n  tb?: number;\n\n  //////////////////\n  // CMCD Request //\n  //////////////////\n  /**\n   * Buffer length\n   *\n   * The buffer length associated with the media object being requested. This value MUST be rounded to the nearest 100 ms. This key SHOULD only be\n   * sent with an object type of ‘a’, ‘v’ or ‘av’.\n   *\n   * Integer milliseconds\n   */\n  bl?: number;\n\n  /**\n   * Deadline\n   *\n   * Deadline from the request time until the first sample of this Segment/Object needs to be available in order to not create a buffer underrun or\n   * any other playback problems. This value MUST be rounded to the nearest 100ms. For a playback rate of 1, this may be equivalent to the player’s\n   * remaining buffer length.\n   *\n   * Integer milliseconds\n   */\n  dl?: number;\n\n  /**\n   * Measured mtp CMCD throughput\n   *\n   * The throughput between client and server, as measured by the client and MUST be rounded to the nearest 100 kbps. This value, however derived,\n   * SHOULD be the value that the client is using to make its next Adaptive Bitrate switching decision. If the client is connected to multiple\n   * servers concurrently, it must take care to report only the throughput measured against the receiving server. If the client has multiple concurrent\n   * connections to the server, then the intent is that this value communicates the aggregate throughput the client sees across all those connections.\n   *\n   * Integer kbps\n   */\n  mtp?: number;\n\n  /**\n   * Next object request\n   *\n   * Relative path of the next object to be requested. This can be used to trigger pre-fetching by the CDN. This MUST be a path relative to the current\n   * request. This string MUST be URLEncoded. The client SHOULD NOT depend upon any pre-fetch action being taken - it is merely a request for such a\n   * pre-fetch to take place.\n   *\n   * String\n   */\n  nor?: string;\n\n  /**\n   * Next range request\n   *\n   * If the next request will be a partial object request, then this string denotes the byte range to be requested. If the ‘nor’ field is not set, then the\n   * object is assumed to match the object currently being requested. The client SHOULD NOT depend upon any pre-fetch action being taken – it is merely a\n   * request for such a pre-fetch to take place. Formatting is similar to the HTTP Range header, except that the unit MUST be ‘byte’, the ‘Range:’ prefix is\n   * NOT required and specifying multiple ranges is NOT allowed. Valid combinations are:\n   *\n   * - `\"\\<range-start\\>-\"`\n   * - `\"\\<range-start\\>-\\<range-end\\>\"`\n   * - `\"-\\<suffix-length\\>\"`\n   *\n   * String\n   */\n  nrr?: string;\n\n  /**\n   * Startup\n   *\n   * Key is included without a value if the object is needed urgently due to startup, seeking or recovery after a buffer-empty event. The media SHOULD not be\n   * rendering when this request is made. This key MUST not be sent if it is FALSE.\n   *\n   * Boolean\n   */\n  su?: boolean;\n\n  //////////////////\n  // CMCD Session //\n  //////////////////\n\n  /**\n   * Content ID\n   *\n   * A unique string identifying the current content. Maximum length is 64 characters. This value is consistent across multiple different\n   * sessions and devices and is defined and updated at the discretion of the service provider.\n   *\n   * String\n   */\n  cid?: string;\n\n  /**\n   * Playback rate\n   *\n   * `1` if real-time, `2` if double speed, `0` if not playing. SHOULD only be sent if not equal to `1`.\n   *\n   * Decimal\n   */\n  pr?: number;\n\n  /**\n   * Streaming format\n   *\n   * The streaming format that defines the current request.\n   *\n   * - `d` = MPEG DASH\n   * - `h` = HTTP Live Streaming (HLS)\n   * - `s` = Smooth Streaming\n   * - `o` = other\n   *\n   * If the streaming format being requested is unknown, then this key MUST NOT be used.\n   */\n  sf?: typeof CMCDStreamingFormatHLS;\n\n  /**\n   * Session ID\n   *\n   * A GUID identifying the current playback session. A playback session typically ties together segments belonging to a single media asset.\n   * Maximum length is 64 characters. It is RECOMMENDED to conform to the UUID specification.\n   *\n   * String\n   */\n  sid?: string;\n\n  /**\n   * Stream type\n   * - `v` = all segments are available – e.g., VOD\n   * - `l` = segments become available over time – e.g., LIVE\n   */\n  st?: CMCDStreamType;\n\n  /**\n   * CMCD version\n   *\n   * The version of this specification used for interpreting the defined key names and values. If this key is omitted, the client and server MUST\n   * interpret the values as being defined by version 1. Client SHOULD omit this field if the version is 1.\n   *\n   * Integer\n   */\n  v?: number;\n\n  /////////////////\n  // CMCD Status //\n  /////////////////\n\n  /**\n   * Buffer starvation\n   *\n   * Key is included without a value if the buffer was starved at some point between the prior request and this object request,\n   * resulting in the player being in a rebuffering state and the video or audio playback being stalled. This key MUST NOT be\n   * sent if the buffer was not starved since the prior request.\n   *\n   * If the object type `ot` key is sent along with this key, then the `bs` key refers to the buffer associated with the particular\n   * object type. If no object type is communicated, then the buffer state applies to the current session.\n   *\n   * Boolean\n   */\n  bs?: boolean;\n\n  /**\n   * Requested maximum throughput\n   *\n   * The requested maximum throughput that the client considers sufficient for delivery of the asset. Values MUST be rounded to the\n   * nearest 100kbps. For example, a client would indicate that the current segment, encoded at 2Mbps, is to be delivered at no more\n   * than 10Mbps, by using rtp=10000.\n   *\n   * Note: This can benefit clients by preventing buffer saturation through over-delivery and can also deliver a community benefit\n   * through fair-share delivery. The concept is that each client receives the throughput necessary for great performance, but no more.\n   * The CDN may not support the rtp feature.\n   *\n   * Integer kbps\n   */\n  rtp?: number;\n}\n","import { Events } from '../events';\nimport Hls from '../hls';\nimport {\n  CMCD,\n  CMCDHeaders,\n  CMCDObjectType,\n  CMCDStreamingFormatHLS,\n  CMCDVersion,\n} from '../types/cmcd';\nimport { BufferHelper } from '../utils/buffer-helper';\nimport { logger } from '../utils/logger';\nimport type { ComponentAPI } from '../types/component-api';\nimport type { Fragment } from '../loader/fragment';\nimport type { BufferCreatedData, MediaAttachedData } from '../types/events';\nimport type {\n  FragmentLoaderContext,\n  Loader,\n  LoaderCallbacks,\n  LoaderConfiguration,\n  LoaderContext,\n  PlaylistLoaderContext,\n} from '../types/loader';\nimport type {\n  FragmentLoaderConstructor,\n  HlsConfig,\n  PlaylistLoaderConstructor,\n} from '../config';\n\n/**\n * Controller to deal with Common Media Client Data (CMCD)\n * @see https://cdn.cta.tech/cta/media/media/resources/standards/pdfs/cta-5004-final.pdf\n */\nexport default class CMCDController implements ComponentAPI {\n  private hls: Hls;\n  private config: HlsConfig;\n  private media?: HTMLMediaElement;\n  private sid?: string;\n  private cid?: string;\n  private useHeaders: boolean = false;\n  private initialized: boolean = false;\n  private starved: boolean = false;\n  private buffering: boolean = true;\n  private audioBuffer?: SourceBuffer; // eslint-disable-line no-restricted-globals\n  private videoBuffer?: SourceBuffer; // eslint-disable-line no-restricted-globals\n\n  constructor(hls: Hls) {\n    this.hls = hls;\n    const config = (this.config = hls.config);\n    const { cmcd } = config;\n\n    if (cmcd != null) {\n      config.pLoader = this.createPlaylistLoader();\n      config.fLoader = this.createFragmentLoader();\n\n      this.sid = cmcd.sessionId || CMCDController.uuid();\n      this.cid = cmcd.contentId;\n      this.useHeaders = cmcd.useHeaders === true;\n      this.registerListeners();\n    }\n  }\n\n  private registerListeners() {\n    const hls = this.hls;\n    hls.on(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n    hls.on(Events.MEDIA_DETACHED, this.onMediaDetached, this);\n    hls.on(Events.BUFFER_CREATED, this.onBufferCreated, this);\n  }\n\n  private unregisterListeners() {\n    const hls = this.hls;\n    hls.off(Events.MEDIA_ATTACHED, this.onMediaAttached, this);\n    hls.off(Events.MEDIA_DETACHED, this.onMediaDetached, this);\n    hls.off(Events.BUFFER_CREATED, this.onBufferCreated, this);\n  }\n\n  destroy() {\n    this.unregisterListeners();\n    this.onMediaDetached();\n\n    // @ts-ignore\n    this.hls = this.config = this.audioBuffer = this.videoBuffer = null;\n  }\n\n  private onMediaAttached(\n    event: Events.MEDIA_ATTACHED,\n    data: MediaAttachedData\n  ) {\n    this.media = data.media;\n    this.media.addEventListener('waiting', this.onWaiting);\n    this.media.addEventListener('playing', this.onPlaying);\n  }\n\n  private onMediaDetached() {\n    if (!this.media) {\n      return;\n    }\n\n    this.media.removeEventListener('waiting', this.onWaiting);\n    this.media.removeEventListener('playing', this.onPlaying);\n\n    // @ts-ignore\n    this.media = null;\n  }\n\n  private onBufferCreated(\n    event: Events.BUFFER_CREATED,\n    data: BufferCreatedData\n  ) {\n    this.audioBuffer = data.tracks.audio?.buffer;\n    this.videoBuffer = data.tracks.video?.buffer;\n  }\n\n  private onWaiting = () => {\n    if (this.initialized) {\n      this.starved = true;\n    }\n\n    this.buffering = true;\n  };\n\n  private onPlaying = () => {\n    if (!this.initialized) {\n      this.initialized = true;\n    }\n\n    this.buffering = false;\n  };\n\n  /**\n   * Create baseline CMCD data\n   */\n  private createData(): CMCD {\n    return {\n      v: CMCDVersion,\n      sf: CMCDStreamingFormatHLS,\n      sid: this.sid,\n      cid: this.cid,\n      pr: this.media?.playbackRate,\n      mtp: this.hls.bandwidthEstimate / 1000,\n    };\n  }\n\n  /**\n   * Apply CMCD data to a request.\n   */\n  private apply(context: LoaderContext, data: CMCD = {}) {\n    // apply baseline data\n    Object.assign(data, this.createData());\n\n    const isVideo =\n      data.ot === CMCDObjectType.INIT ||\n      data.ot === CMCDObjectType.VIDEO ||\n      data.ot === CMCDObjectType.MUXED;\n\n    if (this.starved && isVideo) {\n      data.bs = true;\n      data.su = true;\n      this.starved = false;\n    }\n\n    if (data.su == null) {\n      data.su = this.buffering;\n    }\n\n    // TODO: Implement rtp, nrr, nor, dl\n\n    if (this.useHeaders) {\n      const headers = CMCDController.toHeaders(data);\n      if (!Object.keys(headers).length) {\n        return;\n      }\n\n      if (!context.headers) {\n        context.headers = {};\n      }\n\n      Object.assign(context.headers, headers);\n    } else {\n      const query = CMCDController.toQuery(data);\n      if (!query) {\n        return;\n      }\n\n      context.url = CMCDController.appendQueryToUri(context.url, query);\n    }\n  }\n\n  /**\n   * Apply CMCD data to a manifest request.\n   */\n  private applyPlaylistData = (context: PlaylistLoaderContext) => {\n    try {\n      this.apply(context, {\n        ot: CMCDObjectType.MANIFEST,\n        su: !this.initialized,\n      });\n    } catch (error) {\n      logger.warn('Could not generate manifest CMCD data.', error);\n    }\n  };\n\n  /**\n   * Apply CMCD data to a segment request\n   */\n  private applyFragmentData = (context: FragmentLoaderContext) => {\n    try {\n      const fragment = context.frag;\n      const level = this.hls.levels[fragment.level];\n      const ot = this.getObjectType(fragment);\n      const data: CMCD = {\n        d: fragment.duration * 1000,\n        ot,\n      };\n\n      if (\n        ot === CMCDObjectType.VIDEO ||\n        ot === CMCDObjectType.AUDIO ||\n        ot == CMCDObjectType.MUXED\n      ) {\n        data.br = level.bitrate / 1000;\n        data.tb = this.getTopBandwidth(ot) / 1000;\n        data.bl = this.getBufferLength(ot);\n      }\n\n      this.apply(context, data);\n    } catch (error) {\n      logger.warn('Could not generate segment CMCD data.', error);\n    }\n  };\n\n  /**\n   * The CMCD object type.\n   */\n  private getObjectType(fragment: Fragment): CMCDObjectType | undefined {\n    const { type } = fragment;\n\n    if (type === 'subtitle') {\n      return CMCDObjectType.TIMED_TEXT;\n    }\n\n    if (fragment.sn === 'initSegment') {\n      return CMCDObjectType.INIT;\n    }\n\n    if (type === 'audio') {\n      return CMCDObjectType.AUDIO;\n    }\n\n    if (type === 'main') {\n      if (!this.hls.audioTracks.length) {\n        return CMCDObjectType.MUXED;\n      }\n\n      return CMCDObjectType.VIDEO;\n    }\n\n    return undefined;\n  }\n\n  /**\n   * Get the highest bitrate.\n   */\n  private getTopBandwidth(type: CMCDObjectType) {\n    let bitrate: number = 0;\n    let levels;\n    const hls = this.hls;\n\n    if (type === CMCDObjectType.AUDIO) {\n      levels = hls.audioTracks;\n    } else {\n      const max = hls.maxAutoLevel;\n      const len = max > -1 ? max + 1 : hls.levels.length;\n      levels = hls.levels.slice(0, len);\n    }\n\n    for (const level of levels) {\n      if (level.bitrate > bitrate) {\n        bitrate = level.bitrate;\n      }\n    }\n\n    return bitrate > 0 ? bitrate : NaN;\n  }\n\n  /**\n   * Get the buffer length for a media type in milliseconds\n   */\n  private getBufferLength(type: CMCDObjectType) {\n    const media = this.hls.media;\n    const buffer =\n      type === CMCDObjectType.AUDIO ? this.audioBuffer : this.videoBuffer;\n\n    if (!buffer || !media) {\n      return NaN;\n    }\n\n    const info = BufferHelper.bufferInfo(\n      buffer,\n      media.currentTime,\n      this.config.maxBufferHole\n    );\n\n    return info.len * 1000;\n  }\n\n  /**\n   * Create a playlist loader\n   */\n  private createPlaylistLoader(): PlaylistLoaderConstructor | undefined {\n    const { pLoader } = this.config;\n    const apply = this.applyPlaylistData;\n    const Ctor = pLoader || (this.config.loader as PlaylistLoaderConstructor);\n\n    return class CmcdPlaylistLoader {\n      private loader: Loader<PlaylistLoaderContext>;\n\n      constructor(config: HlsConfig) {\n        this.loader = new Ctor(config);\n      }\n\n      get stats() {\n        return this.loader.stats;\n      }\n\n      get context() {\n        return this.loader.context;\n      }\n\n      destroy() {\n        this.loader.destroy();\n      }\n\n      abort() {\n        this.loader.abort();\n      }\n\n      load(\n        context: PlaylistLoaderContext,\n        config: LoaderConfiguration,\n        callbacks: LoaderCallbacks<PlaylistLoaderContext>\n      ) {\n        apply(context);\n        this.loader.load(context, config, callbacks);\n      }\n    };\n  }\n\n  /**\n   * Create a playlist loader\n   */\n  private createFragmentLoader(): FragmentLoaderConstructor | undefined {\n    const { fLoader } = this.config;\n    const apply = this.applyFragmentData;\n    const Ctor = fLoader || (this.config.loader as FragmentLoaderConstructor);\n\n    return class CmcdFragmentLoader {\n      private loader: Loader<FragmentLoaderContext>;\n\n      constructor(config: HlsConfig) {\n        this.loader = new Ctor(config);\n      }\n\n      get stats() {\n        return this.loader.stats;\n      }\n\n      get context() {\n        return this.loader.context;\n      }\n\n      destroy() {\n        this.loader.destroy();\n      }\n\n      abort() {\n        this.loader.abort();\n      }\n\n      load(\n        context: FragmentLoaderContext,\n        config: LoaderConfiguration,\n        callbacks: LoaderCallbacks<FragmentLoaderContext>\n      ) {\n        apply(context);\n        this.loader.load(context, config, callbacks);\n      }\n    };\n  }\n\n  /**\n   * Generate a random v4 UUI\n   *\n   * @returns {string}\n   */\n  static uuid(): string {\n    const url = URL.createObjectURL(new Blob());\n    const uuid = url.toString();\n    URL.revokeObjectURL(url);\n    return uuid.slice(uuid.lastIndexOf('/') + 1);\n  }\n\n  /**\n   * Serialize a CMCD data object according to the rules defined in the\n   * section 3.2 of\n   * [CTA-5004](https://cdn.cta.tech/cta/media/media/resources/standards/pdfs/cta-5004-final.pdf).\n   */\n  static serialize(data: CMCD): string {\n    const results: string[] = [];\n    const isValid = (value: any) =>\n      !Number.isNaN(value) && value != null && value !== '' && value !== false;\n    const toRounded = (value: number) => Math.round(value);\n    const toHundred = (value: number) => toRounded(value / 100) * 100;\n    const toUrlSafe = (value: string) => encodeURIComponent(value);\n    const formatters = {\n      br: toRounded,\n      d: toRounded,\n      bl: toHundred,\n      dl: toHundred,\n      mtp: toHundred,\n      nor: toUrlSafe,\n      rtp: toHundred,\n      tb: toRounded,\n    };\n\n    const keys = Object.keys(data || {}).sort();\n\n    for (const key of keys) {\n      let value = data[key];\n\n      // ignore invalid values\n      if (!isValid(value)) {\n        continue;\n      }\n\n      // Version should only be reported if not equal to 1.\n      if (key === 'v' && value === 1) {\n        continue;\n      }\n\n      // Playback rate should only be sent if not equal to 1.\n      if (key == 'pr' && value === 1) {\n        continue;\n      }\n\n      // Certain values require special formatting\n      const formatter = formatters[key];\n      if (formatter) {\n        value = formatter(value);\n      }\n\n      // Serialize the key/value pair\n      const type = typeof value;\n      let result: string;\n\n      if (key === 'ot' || key === 'sf' || key === 'st') {\n        result = `${key}=${value}`;\n      } else if (type === 'boolean') {\n        result = key;\n      } else if (type === 'number') {\n        result = `${key}=${value}`;\n      } else {\n        result = `${key}=${JSON.stringify(value)}`;\n      }\n\n      results.push(result);\n    }\n\n    return results.join(',');\n  }\n\n  /**\n   * Convert a CMCD data object to request headers according to the rules\n   * defined in the section 2.1 and 3.2 of\n   * [CTA-5004](https://cdn.cta.tech/cta/media/media/resources/standards/pdfs/cta-5004-final.pdf).\n   */\n  static toHeaders(data: CMCD): Partial<CMCDHeaders> {\n    const keys = Object.keys(data);\n    const headers = {};\n    const headerNames = ['Object', 'Request', 'Session', 'Status'];\n    const headerGroups = [{}, {}, {}, {}];\n    const headerMap = {\n      br: 0,\n      d: 0,\n      ot: 0,\n      tb: 0,\n      bl: 1,\n      dl: 1,\n      mtp: 1,\n      nor: 1,\n      nrr: 1,\n      su: 1,\n      cid: 2,\n      pr: 2,\n      sf: 2,\n      sid: 2,\n      st: 2,\n      v: 2,\n      bs: 3,\n      rtp: 3,\n    };\n\n    for (const key of keys) {\n      // Unmapped fields are mapped to the Request header\n      const index = headerMap[key] != null ? headerMap[key] : 1;\n      headerGroups[index][key] = data[key];\n    }\n\n    for (let i = 0; i < headerGroups.length; i++) {\n      const value = CMCDController.serialize(headerGroups[i]);\n      if (value) {\n        headers[`CMCD-${headerNames[i]}`] = value;\n      }\n    }\n\n    return headers;\n  }\n\n  /**\n   * Convert a CMCD data object to query args according to the rules\n   * defined in the section 2.2 and 3.2 of\n   * [CTA-5004](https://cdn.cta.tech/cta/media/media/resources/standards/pdfs/cta-5004-final.pdf).\n   */\n  static toQuery(data: CMCD): string {\n    return `CMCD=${encodeURIComponent(CMCDController.serialize(data))}`;\n  }\n\n  /**\n   * Append query args to a uri.\n   */\n  static appendQueryToUri(uri, query) {\n    if (!query) {\n      return uri;\n    }\n\n    const separator = uri.includes('?') ? '&' : '?';\n    return `${uri}${separator}${query}`;\n  }\n}\n","import { logger } from '../utils/logger';\nimport type {\n  LoaderCallbacks,\n  LoaderContext,\n  LoaderStats,\n  Loader,\n  LoaderConfiguration,\n  LoaderResponse,\n} from '../types/loader';\nimport { LoadStats } from '../loader/load-stats';\nimport { type HlsConfig, RetryConfig } from '../config';\nimport { getRetryDelay, shouldRetry } from './error-helper';\n\nconst AGE_HEADER_LINE_REGEX = /^age:\\s*[\\d.]+\\s*$/im;\n\nclass XhrLoader implements Loader<LoaderContext> {\n  private xhrSetup:\n    | ((xhr: XMLHttpRequest, url: string) => Promise<void> | void)\n    | null;\n  private requestTimeout?: number;\n  private retryTimeout?: number;\n  private retryDelay: number;\n  private config: LoaderConfiguration | null = null;\n  private callbacks: LoaderCallbacks<LoaderContext> | null = null;\n  public context!: LoaderContext;\n\n  private loader: XMLHttpRequest | null = null;\n  public stats: LoaderStats;\n\n  constructor(config: HlsConfig) {\n    this.xhrSetup = config ? config.xhrSetup || null : null;\n    this.stats = new LoadStats();\n    this.retryDelay = 0;\n  }\n\n  destroy() {\n    this.callbacks = null;\n    this.abortInternal();\n    this.loader = null;\n    this.config = null;\n  }\n\n  abortInternal() {\n    const loader = this.loader;\n    self.clearTimeout(this.requestTimeout);\n    self.clearTimeout(this.retryTimeout);\n    if (loader) {\n      loader.onreadystatechange = null;\n      loader.onprogress = null;\n      if (loader.readyState !== 4) {\n        this.stats.aborted = true;\n        loader.abort();\n      }\n    }\n  }\n\n  abort() {\n    this.abortInternal();\n    if (this.callbacks?.onAbort) {\n      this.callbacks.onAbort(this.stats, this.context, this.loader);\n    }\n  }\n\n  load(\n    context: LoaderContext,\n    config: LoaderConfiguration,\n    callbacks: LoaderCallbacks<LoaderContext>\n  ) {\n    if (this.stats.loading.start) {\n      throw new Error('Loader can only be used once.');\n    }\n    this.stats.loading.start = self.performance.now();\n    this.context = context;\n    this.config = config;\n    this.callbacks = callbacks;\n    this.loadInternal();\n  }\n\n  loadInternal() {\n    const { config, context } = this;\n    if (!config) {\n      return;\n    }\n    const xhr = (this.loader = new self.XMLHttpRequest());\n\n    const stats = this.stats;\n    stats.loading.first = 0;\n    stats.loaded = 0;\n    stats.aborted = false;\n    const xhrSetup = this.xhrSetup;\n\n    if (xhrSetup) {\n      Promise.resolve()\n        .then(() => {\n          if (this.stats.aborted) return;\n          return xhrSetup(xhr, context.url);\n        })\n        .catch((error: Error) => {\n          xhr.open('GET', context.url, true);\n          return xhrSetup(xhr, context.url);\n        })\n        .then(() => {\n          if (this.stats.aborted) return;\n          this.openAndSendXhr(xhr, context, config);\n        })\n        .catch((error: Error) => {\n          // IE11 throws an exception on xhr.open if attempting to access an HTTP resource over HTTPS\n          this.callbacks!.onError(\n            { code: xhr.status, text: error.message },\n            context,\n            xhr,\n            stats\n          );\n          return;\n        });\n    } else {\n      this.openAndSendXhr(xhr, context, config);\n    }\n  }\n\n  openAndSendXhr(\n    xhr: XMLHttpRequest,\n    context: LoaderContext,\n    config: LoaderConfiguration\n  ) {\n    if (!xhr.readyState) {\n      xhr.open('GET', context.url, true);\n    }\n\n    const headers = this.context.headers;\n    const { maxTimeToFirstByteMs, maxLoadTimeMs } = config.loadPolicy;\n    if (headers) {\n      for (const header in headers) {\n        xhr.setRequestHeader(header, headers[header]);\n      }\n    }\n\n    if (context.rangeEnd) {\n      xhr.setRequestHeader(\n        'Range',\n        'bytes=' + context.rangeStart + '-' + (context.rangeEnd - 1)\n      );\n    }\n\n    xhr.onreadystatechange = this.readystatechange.bind(this);\n    xhr.onprogress = this.loadprogress.bind(this);\n    xhr.responseType = context.responseType as XMLHttpRequestResponseType;\n    // setup timeout before we perform request\n    self.clearTimeout(this.requestTimeout);\n    config.timeout =\n      maxTimeToFirstByteMs && Number.isFinite(maxTimeToFirstByteMs)\n        ? maxTimeToFirstByteMs\n        : maxLoadTimeMs;\n    this.requestTimeout = self.setTimeout(\n      this.loadtimeout.bind(this),\n      config.timeout\n    );\n    xhr.send();\n  }\n\n  readystatechange() {\n    const { context, loader: xhr, stats } = this;\n    if (!context || !xhr) {\n      return;\n    }\n    const readyState = xhr.readyState;\n    const config = this.config as LoaderConfiguration;\n\n    // don't proceed if xhr has been aborted\n    if (stats.aborted) {\n      return;\n    }\n\n    // >= HEADERS_RECEIVED\n    if (readyState >= 2) {\n      if (stats.loading.first === 0) {\n        stats.loading.first = Math.max(\n          self.performance.now(),\n          stats.loading.start\n        );\n        // readyState >= 2 AND readyState !==4 (readyState = HEADERS_RECEIVED || LOADING) rearm timeout as xhr not finished yet\n        if (config.timeout !== config.loadPolicy.maxLoadTimeMs) {\n          self.clearTimeout(this.requestTimeout);\n          config.timeout = config.loadPolicy.maxLoadTimeMs;\n          this.requestTimeout = self.setTimeout(\n            this.loadtimeout.bind(this),\n            config.loadPolicy.maxLoadTimeMs -\n              (stats.loading.first - stats.loading.start)\n          );\n        }\n      }\n\n      if (readyState === 4) {\n        self.clearTimeout(this.requestTimeout);\n        xhr.onreadystatechange = null;\n        xhr.onprogress = null;\n        const status = xhr.status;\n        // http status between 200 to 299 are all successful\n        const useResponse = xhr.responseType !== 'text';\n        if (\n          status >= 200 &&\n          status < 300 &&\n          ((useResponse && xhr.response) || xhr.responseText !== null)\n        ) {\n          stats.loading.end = Math.max(\n            self.performance.now(),\n            stats.loading.first\n          );\n          const data = useResponse ? xhr.response : xhr.responseText;\n          const len =\n            xhr.responseType === 'arraybuffer' ? data.byteLength : data.length;\n          stats.loaded = stats.total = len;\n          stats.bwEstimate =\n            (stats.total * 8000) / (stats.loading.end - stats.loading.first);\n          if (!this.callbacks) {\n            return;\n          }\n          const onProgress = this.callbacks.onProgress;\n          if (onProgress) {\n            onProgress(stats, context, data, xhr);\n          }\n          if (!this.callbacks) {\n            return;\n          }\n          const response: LoaderResponse = {\n            url: xhr.responseURL,\n            data: data,\n            code: status,\n          };\n\n          this.callbacks.onSuccess(response, stats, context, xhr);\n        } else {\n          const retryConfig = config.loadPolicy.errorRetry;\n          const retryCount = stats.retry;\n          // if max nb of retries reached or if http status between 400 and 499 (such error cannot be recovered, retrying is useless), return error\n          if (shouldRetry(retryConfig, retryCount, false, status)) {\n            this.retry(retryConfig);\n          } else {\n            logger.error(`${status} while loading ${context.url}`);\n            this.callbacks!.onError(\n              { code: status, text: xhr.statusText },\n              context,\n              xhr,\n              stats\n            );\n          }\n        }\n      }\n    }\n  }\n\n  loadtimeout() {\n    const retryConfig = this.config?.loadPolicy.timeoutRetry;\n    const retryCount = this.stats.retry;\n    if (shouldRetry(retryConfig, retryCount, true)) {\n      this.retry(retryConfig);\n    } else {\n      logger.warn(`timeout while loading ${this.context.url}`);\n      const callbacks = this.callbacks;\n      if (callbacks) {\n        this.abortInternal();\n        callbacks.onTimeout(this.stats, this.context, this.loader);\n      }\n    }\n  }\n\n  retry(retryConfig: RetryConfig) {\n    const { context, stats } = this;\n    this.retryDelay = getRetryDelay(retryConfig, stats.retry);\n    stats.retry++;\n    logger.warn(\n      `${status ? 'HTTP Status ' + status : 'Timeout'} while loading ${\n        context.url\n      }, retrying ${stats.retry}/${retryConfig.maxNumRetry} in ${\n        this.retryDelay\n      }ms`\n    );\n    // abort and reset internal state\n    this.abortInternal();\n    this.loader = null;\n    // schedule retry\n    self.clearTimeout(this.retryTimeout);\n    this.retryTimeout = self.setTimeout(\n      this.loadInternal.bind(this),\n      this.retryDelay\n    );\n  }\n\n  loadprogress(event: ProgressEvent) {\n    const stats = this.stats;\n\n    stats.loaded = event.loaded;\n    if (event.lengthComputable) {\n      stats.total = event.total;\n    }\n  }\n\n  getCacheAge(): number | null {\n    let result: number | null = null;\n    if (\n      this.loader &&\n      AGE_HEADER_LINE_REGEX.test(this.loader.getAllResponseHeaders())\n    ) {\n      const ageHeader = this.loader.getResponseHeader('age');\n      result = ageHeader ? parseFloat(ageHeader) : null;\n    }\n    return result;\n  }\n\n  getResponseHeader(name: string): string | null {\n    if (\n      this.loader &&\n      new RegExp(`^${name}:\\\\s*[\\\\d.]+\\\\s*$`, 'im').test(\n        this.loader.getAllResponseHeaders()\n      )\n    ) {\n      return this.loader.getResponseHeader(name);\n    }\n    return null;\n  }\n}\n\nexport default XhrLoader;\n","import { fixLineBreaks } from './vttparser';\nimport type { CaptionScreen, Row } from './cea-608-parser';\nimport { generateCueId } from './webvtt-parser';\nimport { addCueToTrack } from './texttrack-utils';\n\nconst WHITESPACE_CHAR = /\\s/;\n\nexport interface CuesInterface {\n  newCue(\n    track: TextTrack | null,\n    startTime: number,\n    endTime: number,\n    captionScreen: CaptionScreen\n  ): VTTCue[];\n}\n\nconst Cues: CuesInterface = {\n  newCue(\n    track: TextTrack | null,\n    startTime: number,\n    endTime: number,\n    captionScreen: CaptionScreen\n  ): VTTCue[] {\n    const result: VTTCue[] = [];\n    let row: Row;\n    // the type data states this is VTTCue, but it can potentially be a TextTrackCue on old browsers\n    let cue: VTTCue;\n    let indenting: boolean;\n    let indent: number;\n    let text: string;\n    const Cue = (self.VTTCue || self.TextTrackCue) as any;\n\n    for (let r = 0; r < captionScreen.rows.length; r++) {\n      row = captionScreen.rows[r];\n      indenting = true;\n      indent = 0;\n      text = '';\n\n      if (!row.isEmpty()) {\n        for (let c = 0; c < row.chars.length; c++) {\n          if (WHITESPACE_CHAR.test(row.chars[c].uchar) && indenting) {\n            indent++;\n          } else {\n            text += row.chars[c].uchar;\n            indenting = false;\n          }\n        }\n        // To be used for cleaning-up orphaned roll-up captions\n        row.cueStartTime = startTime;\n\n        // Give a slight bump to the endTime if it's equal to startTime to avoid a SyntaxError in IE\n        if (startTime === endTime) {\n          endTime += 0.0001;\n        }\n\n        if (indent >= 16) {\n          indent--;\n        } else {\n          indent++;\n        }\n\n        const cueText = fixLineBreaks(text.trim());\n        const id = generateCueId(startTime, endTime, cueText);\n\n        // If this cue already exists in the track do not push it\n        if (!track?.cues?.getCueById(id)) {\n          cue = new Cue(startTime, endTime, cueText);\n          cue.id = id;\n          cue.line = r + 1;\n          cue.align = 'left';\n          // Clamp the position between 10 and 80 percent (CEA-608 PAC indent code)\n          // https://dvcs.w3.org/hg/text-tracks/raw-file/default/608toVTT/608toVTT.html#positioning-in-cea-608\n          // Firefox throws an exception and captions break with out of bounds 0-100 values\n          cue.position = 10 + Math.min(80, Math.floor((indent * 8) / 32) * 10);\n          result.push(cue);\n        }\n      }\n    }\n    if (track && result.length) {\n      // Sort bottom cues in reverse order so that they render in line order when overlapping in Chrome\n      result.sort((cueA, cueB) => {\n        if (cueA.line === 'auto' || cueB.line === 'auto') {\n          return 0;\n        }\n        if (cueA.line > 8 && cueB.line > 8) {\n          return cueB.line - cueA.line;\n        }\n        return cueA.line - cueB.line;\n      });\n      result.forEach((cue) => addCueToTrack(track, cue));\n    }\n    return result;\n  },\n};\n\nexport default Cues;\n","import { buildAbsoluteURL } from 'url-toolkit';\nimport PlaylistLoader from './loader/playlist-loader';\nimport ID3TrackController from './controller/id3-track-controller';\nimport LatencyController from './controller/latency-controller';\nimport LevelController from './controller/level-controller';\nimport { FragmentTracker } from './controller/fragment-tracker';\nimport KeyLoader from './loader/key-loader';\nimport StreamController from './controller/stream-controller';\nimport { isSupported } from './is-supported';\nimport { logger, enableLogs } from './utils/logger';\nimport { enableStreamingMode, hlsDefaultConfig, mergeConfig } from './config';\nimport { EventEmitter } from 'eventemitter3';\nimport { Events } from './events';\nimport { ErrorTypes, ErrorDetails } from './errors';\nimport { HdcpLevels } from './types/level';\nimport type { HlsEventEmitter, HlsListeners } from './events';\nimport type AudioTrackController from './controller/audio-track-controller';\nimport type AbrController from './controller/abr-controller';\nimport type BufferController from './controller/buffer-controller';\nimport type CapLevelController from './controller/cap-level-controller';\nimport type CMCDController from './controller/cmcd-controller';\nimport type EMEController from './controller/eme-controller';\nimport type SubtitleTrackController from './controller/subtitle-track-controller';\nimport type { ComponentAPI, NetworkComponentAPI } from './types/component-api';\nimport type { MediaPlaylist } from './types/media-playlist';\nimport type { HlsConfig } from './config';\nimport type { HdcpLevel, Level } from './types/level';\nimport type { BufferInfo } from './utils/buffer-helper';\nimport type AudioStreamController from './controller/audio-stream-controller';\nimport type BasePlaylistController from './controller/base-playlist-controller';\nimport type BaseStreamController from './controller/base-stream-controller';\nimport type ContentSteeringController from './controller/content-steering-controller';\nimport type ErrorController from './controller/error-controller';\nimport type FPSController from './controller/fps-controller';\n\n/**\n * The `Hls` class is the core of the HLS.js library used to instantiate player instances.\n * @public\n */\nexport default class Hls implements HlsEventEmitter {\n  private static defaultConfig: HlsConfig | undefined;\n\n  /**\n   * The runtime configuration used by the player. At instantiation this is combination of `hls.userConfig` merged over `Hls.DefaultConfig`.\n   */\n  public readonly config: HlsConfig;\n\n  /**\n   * The configuration object provided on player instantiation.\n   */\n  public readonly userConfig: Partial<HlsConfig>;\n\n  private coreComponents: ComponentAPI[];\n  private networkControllers: NetworkComponentAPI[];\n  private _emitter: HlsEventEmitter = new EventEmitter();\n  private _autoLevelCapping: number;\n  private _maxHdcpLevel: HdcpLevel = null;\n  private abrController: AbrController;\n  private bufferController: BufferController;\n  private capLevelController: CapLevelController;\n  private latencyController: LatencyController;\n  private levelController: LevelController;\n  private streamController: StreamController;\n  private audioTrackController: AudioTrackController;\n  private subtitleTrackController: SubtitleTrackController;\n  private emeController: EMEController;\n  private cmcdController: CMCDController;\n  private _media: HTMLMediaElement | null = null;\n  private url: string | null = null;\n\n  /**\n   * Get the video-dev/hls.js package version.\n   */\n  static get version(): string {\n    return __VERSION__;\n  }\n\n  /**\n   * Check if the required MediaSource Extensions are available.\n   */\n  static isSupported(): boolean {\n    return isSupported();\n  }\n\n  static get Events(): typeof Events {\n    return Events;\n  }\n\n  static get ErrorTypes(): typeof ErrorTypes {\n    return ErrorTypes;\n  }\n\n  static get ErrorDetails(): typeof ErrorDetails {\n    return ErrorDetails;\n  }\n\n  /**\n   * Get the default configuration applied to new instances.\n   */\n  static get DefaultConfig(): HlsConfig {\n    if (!Hls.defaultConfig) {\n      return hlsDefaultConfig;\n    }\n\n    return Hls.defaultConfig;\n  }\n\n  /**\n   * Replace the default configuration applied to new instances.\n   */\n  static set DefaultConfig(defaultConfig: HlsConfig) {\n    Hls.defaultConfig = defaultConfig;\n  }\n\n  /**\n   * Creates an instance of an HLS client that can attach to exactly one `HTMLMediaElement`.\n   * @param userConfig - Configuration options applied over `Hls.DefaultConfig`\n   */\n  constructor(userConfig: Partial<HlsConfig> = {}) {\n    enableLogs(userConfig.debug || false, 'Hls instance');\n    const config = (this.config = mergeConfig(Hls.DefaultConfig, userConfig));\n    this.userConfig = userConfig;\n\n    this._autoLevelCapping = -1;\n\n    if (config.progressive) {\n      enableStreamingMode(config);\n    }\n\n    // core controllers and network loaders\n    const {\n      abrController: ConfigAbrController,\n      bufferController: ConfigBufferController,\n      capLevelController: ConfigCapLevelController,\n      errorController: ConfigErrorController,\n      fpsController: ConfigFpsController,\n    } = config;\n    const errorController = new ConfigErrorController(this);\n    const abrController = (this.abrController = new ConfigAbrController(this));\n    const bufferController = (this.bufferController =\n      new ConfigBufferController(this));\n    const capLevelController = (this.capLevelController =\n      new ConfigCapLevelController(this));\n\n    const fpsController = new ConfigFpsController(this);\n    const playListLoader = new PlaylistLoader(this);\n    const id3TrackController = new ID3TrackController(this);\n\n    const ConfigContentSteeringController = config.contentSteeringController;\n    // ConentSteeringController is defined before LevelController to receive Multivariant Playlist events first\n    const contentSteering = ConfigContentSteeringController\n      ? new ConfigContentSteeringController(this)\n      : null;\n    const levelController = (this.levelController = new LevelController(\n      this,\n      contentSteering\n    ));\n    // FragmentTracker must be defined before StreamController because the order of event handling is important\n    const fragmentTracker = new FragmentTracker(this);\n    const keyLoader = new KeyLoader(this.config);\n    const streamController = (this.streamController = new StreamController(\n      this,\n      fragmentTracker,\n      keyLoader\n    ));\n\n    // Cap level controller uses streamController to flush the buffer\n    capLevelController.setStreamController(streamController);\n    // fpsController uses streamController to switch when frames are being dropped\n    fpsController.setStreamController(streamController);\n\n    const networkControllers: NetworkComponentAPI[] = [\n      playListLoader,\n      levelController,\n      streamController,\n    ];\n    if (contentSteering) {\n      networkControllers.splice(1, 0, contentSteering);\n    }\n\n    this.networkControllers = networkControllers;\n    const coreComponents: ComponentAPI[] = [\n      abrController,\n      bufferController,\n      capLevelController,\n      fpsController,\n      id3TrackController,\n      fragmentTracker,\n    ];\n\n    this.audioTrackController = this.createController(\n      config.audioTrackController,\n      networkControllers\n    );\n    const AudioStreamControllerClass = config.audioStreamController;\n    if (AudioStreamControllerClass) {\n      networkControllers.push(\n        new AudioStreamControllerClass(this, fragmentTracker, keyLoader)\n      );\n    }\n    // subtitleTrackController must be defined before subtitleStreamController because the order of event handling is important\n    this.subtitleTrackController = this.createController(\n      config.subtitleTrackController,\n      networkControllers\n    );\n    const SubtitleStreamControllerClass = config.subtitleStreamController;\n    if (SubtitleStreamControllerClass) {\n      networkControllers.push(\n        new SubtitleStreamControllerClass(this, fragmentTracker, keyLoader)\n      );\n    }\n    this.createController(config.timelineController, coreComponents);\n    keyLoader.emeController = this.emeController = this.createController(\n      config.emeController,\n      coreComponents\n    );\n    this.cmcdController = this.createController(\n      config.cmcdController,\n      coreComponents\n    );\n    this.latencyController = this.createController(\n      LatencyController,\n      coreComponents\n    );\n\n    this.coreComponents = coreComponents;\n\n    // Error controller handles errors before and after all other controllers\n    // This listener will be invoked after all other controllers error listeners\n    networkControllers.push(errorController);\n    const onErrorOut = errorController.onErrorOut;\n    if (typeof onErrorOut === 'function') {\n      this.on(Events.ERROR, onErrorOut, errorController);\n    }\n  }\n\n  createController(ControllerClass, components) {\n    if (ControllerClass) {\n      const controllerInstance = new ControllerClass(this);\n      if (components) {\n        components.push(controllerInstance);\n      }\n      return controllerInstance;\n    }\n    return null;\n  }\n\n  // Delegate the EventEmitter through the public API of Hls.js\n  on<E extends keyof HlsListeners, Context = undefined>(\n    event: E,\n    listener: HlsListeners[E],\n    context: Context = this as any\n  ) {\n    this._emitter.on(event, listener, context);\n  }\n\n  once<E extends keyof HlsListeners, Context = undefined>(\n    event: E,\n    listener: HlsListeners[E],\n    context: Context = this as any\n  ) {\n    this._emitter.once(event, listener, context);\n  }\n\n  removeAllListeners<E extends keyof HlsListeners>(event?: E | undefined) {\n    this._emitter.removeAllListeners(event);\n  }\n\n  off<E extends keyof HlsListeners, Context = undefined>(\n    event: E,\n    listener?: HlsListeners[E] | undefined,\n    context: Context = this as any,\n    once?: boolean | undefined\n  ) {\n    this._emitter.off(event, listener, context, once);\n  }\n\n  listeners<E extends keyof HlsListeners>(event: E): HlsListeners[E][] {\n    return this._emitter.listeners(event);\n  }\n\n  emit<E extends keyof HlsListeners>(\n    event: E,\n    name: E,\n    eventObject: Parameters<HlsListeners[E]>[1]\n  ): boolean {\n    return this._emitter.emit(event, name, eventObject);\n  }\n\n  trigger<E extends keyof HlsListeners>(\n    event: E,\n    eventObject: Parameters<HlsListeners[E]>[1]\n  ): boolean {\n    if (this.config.debug) {\n      return this.emit(event, event, eventObject);\n    } else {\n      try {\n        return this.emit(event, event, eventObject);\n      } catch (e) {\n        logger.error(\n          'An internal error happened while handling event ' +\n            event +\n            '. Error message: \"' +\n            e.message +\n            '\". Here is a stacktrace:',\n          e\n        );\n        this.trigger(Events.ERROR, {\n          type: ErrorTypes.OTHER_ERROR,\n          details: ErrorDetails.INTERNAL_EXCEPTION,\n          fatal: false,\n          event: event,\n          error: e,\n        });\n      }\n    }\n    return false;\n  }\n\n  listenerCount<E extends keyof HlsListeners>(event: E): number {\n    return this._emitter.listenerCount(event);\n  }\n\n  /**\n   * Dispose of the instance\n   */\n  destroy() {\n    logger.log('destroy');\n    this.trigger(Events.DESTROYING, undefined);\n    this.detachMedia();\n    this.removeAllListeners();\n    this._autoLevelCapping = -1;\n    this.url = null;\n\n    this.networkControllers.forEach((component) => component.destroy());\n    this.networkControllers.length = 0;\n\n    this.coreComponents.forEach((component) => component.destroy());\n    this.coreComponents.length = 0;\n    // Remove any references that could be held in config options or callbacks\n    const config = this.config;\n    config.xhrSetup = config.fetchSetup = undefined;\n    // @ts-ignore\n    this.userConfig = null;\n  }\n\n  /**\n   * Attaches Hls.js to a media element\n   */\n  attachMedia(media: HTMLMediaElement) {\n    logger.log('attachMedia');\n    this._media = media;\n    this.trigger(Events.MEDIA_ATTACHING, { media: media });\n  }\n\n  /**\n   * Detach Hls.js from the media\n   */\n  detachMedia() {\n    logger.log('detachMedia');\n    this.trigger(Events.MEDIA_DETACHING, undefined);\n    this._media = null;\n  }\n\n  /**\n   * Set the source URL. Can be relative or absolute.\n   */\n  loadSource(url: string) {\n    this.stopLoad();\n    const media = this.media;\n    const loadedSource = this.url;\n    const loadingSource = (this.url = buildAbsoluteURL(\n      self.location.href,\n      url,\n      {\n        alwaysNormalize: true,\n      }\n    ));\n    logger.log(`loadSource:${loadingSource}`);\n    if (\n      media &&\n      loadedSource &&\n      (loadedSource !== loadingSource || this.bufferController.hasSourceTypes())\n    ) {\n      this.detachMedia();\n      this.attachMedia(media);\n    }\n    // when attaching to a source URL, trigger a playlist load\n    this.trigger(Events.MANIFEST_LOADING, { url: url });\n  }\n\n  /**\n   * Start loading data from the stream source.\n   * Depending on default config, client starts loading automatically when a source is set.\n   *\n   * @param startPosition - Set the start position to stream from.\n   * Defaults to -1 (None: starts from earliest point)\n   */\n  startLoad(startPosition: number = -1) {\n    logger.log(`startLoad(${startPosition})`);\n    this.networkControllers.forEach((controller) => {\n      controller.startLoad(startPosition);\n    });\n  }\n\n  /**\n   * Stop loading of any stream data.\n   */\n  stopLoad() {\n    logger.log('stopLoad');\n    this.networkControllers.forEach((controller) => {\n      controller.stopLoad();\n    });\n  }\n\n  /**\n   * Swap through possible audio codecs in the stream (for example to switch from stereo to 5.1)\n   */\n  swapAudioCodec() {\n    logger.log('swapAudioCodec');\n    this.streamController.swapAudioCodec();\n  }\n\n  /**\n   * When the media-element fails, this allows to detach and then re-attach it\n   * as one call (convenience method).\n   *\n   * Automatic recovery of media-errors by this process is configurable.\n   */\n  recoverMediaError() {\n    logger.log('recoverMediaError');\n    const media = this._media;\n    this.detachMedia();\n    if (media) {\n      this.attachMedia(media);\n    }\n  }\n\n  removeLevel(levelIndex, urlId = 0) {\n    this.levelController.removeLevel(levelIndex, urlId);\n  }\n\n  /**\n   * @returns an array of levels (variants) sorted by HDCP-LEVEL, BANDWIDTH, SCORE, and RESOLUTION (height)\n   */\n  get levels(): Level[] {\n    const levels = this.levelController.levels;\n    return levels ? levels : [];\n  }\n\n  /**\n   * Index of quality level (variant) currently played\n   */\n  get currentLevel(): number {\n    return this.streamController.currentLevel;\n  }\n\n  /**\n   * Set quality level index immediately. This will flush the current buffer to replace the quality asap. That means playback will interrupt at least shortly to re-buffer and re-sync eventually. Set to -1 for automatic level selection.\n   */\n  set currentLevel(newLevel: number) {\n    logger.log(`set currentLevel:${newLevel}`);\n    this.loadLevel = newLevel;\n    this.abrController.clearTimer();\n    this.streamController.immediateLevelSwitch();\n  }\n\n  /**\n   * Index of next quality level loaded as scheduled by stream controller.\n   */\n  get nextLevel(): number {\n    return this.streamController.nextLevel;\n  }\n\n  /**\n   * Set quality level index for next loaded data.\n   * This will switch the video quality asap, without interrupting playback.\n   * May abort current loading of data, and flush parts of buffer (outside currently played fragment region).\n   * @param newLevel - Pass -1 for automatic level selection\n   */\n  set nextLevel(newLevel: number) {\n    logger.log(`set nextLevel:${newLevel}`);\n    this.levelController.manualLevel = newLevel;\n    this.streamController.nextLevelSwitch();\n  }\n\n  /**\n   * Return the quality level of the currently or last (of none is loaded currently) segment\n   */\n  get loadLevel(): number {\n    return this.levelController.level;\n  }\n\n  /**\n   * Set quality level index for next loaded data in a conservative way.\n   * This will switch the quality without flushing, but interrupt current loading.\n   * Thus the moment when the quality switch will appear in effect will only be after the already existing buffer.\n   * @param newLevel - Pass -1 for automatic level selection\n   */\n  set loadLevel(newLevel: number) {\n    logger.log(`set loadLevel:${newLevel}`);\n    this.levelController.manualLevel = newLevel;\n  }\n\n  /**\n   * get next quality level loaded\n   */\n  get nextLoadLevel(): number {\n    return this.levelController.nextLoadLevel;\n  }\n\n  /**\n   * Set quality level of next loaded segment in a fully \"non-destructive\" way.\n   * Same as `loadLevel` but will wait for next switch (until current loading is done).\n   */\n  set nextLoadLevel(level: number) {\n    this.levelController.nextLoadLevel = level;\n  }\n\n  /**\n   * Return \"first level\": like a default level, if not set,\n   * falls back to index of first level referenced in manifest\n   */\n  get firstLevel(): number {\n    return Math.max(this.levelController.firstLevel, this.minAutoLevel);\n  }\n\n  /**\n   * Sets \"first-level\", see getter.\n   */\n  set firstLevel(newLevel: number) {\n    logger.log(`set firstLevel:${newLevel}`);\n    this.levelController.firstLevel = newLevel;\n  }\n\n  /**\n   * Return start level (level of first fragment that will be played back)\n   * if not overrided by user, first level appearing in manifest will be used as start level\n   * if -1 : automatic start level selection, playback will start from level matching download bandwidth\n   * (determined from download of first segment)\n   */\n  get startLevel(): number {\n    return this.levelController.startLevel;\n  }\n\n  /**\n   * set  start level (level of first fragment that will be played back)\n   * if not overrided by user, first level appearing in manifest will be used as start level\n   * if -1 : automatic start level selection, playback will start from level matching download bandwidth\n   * (determined from download of first segment)\n   */\n  set startLevel(newLevel: number) {\n    logger.log(`set startLevel:${newLevel}`);\n    // if not in automatic start level detection, ensure startLevel is greater than minAutoLevel\n    if (newLevel !== -1) {\n      newLevel = Math.max(newLevel, this.minAutoLevel);\n    }\n\n    this.levelController.startLevel = newLevel;\n  }\n\n  /**\n   * Whether level capping is enabled.\n   * Default value is set via `config.capLevelToPlayerSize`.\n   */\n  get capLevelToPlayerSize(): boolean {\n    return this.config.capLevelToPlayerSize;\n  }\n\n  /**\n   * Enables or disables level capping. If disabled after previously enabled, `nextLevelSwitch` will be immediately called.\n   */\n  set capLevelToPlayerSize(shouldStartCapping: boolean) {\n    const newCapLevelToPlayerSize = !!shouldStartCapping;\n\n    if (newCapLevelToPlayerSize !== this.config.capLevelToPlayerSize) {\n      if (newCapLevelToPlayerSize) {\n        this.capLevelController.startCapping(); // If capping occurs, nextLevelSwitch will happen based on size.\n      } else {\n        this.capLevelController.stopCapping();\n        this.autoLevelCapping = -1;\n        this.streamController.nextLevelSwitch(); // Now we're uncapped, get the next level asap.\n      }\n\n      this.config.capLevelToPlayerSize = newCapLevelToPlayerSize;\n    }\n  }\n\n  /**\n   * Capping/max level value that should be used by automatic level selection algorithm (`ABRController`)\n   */\n  get autoLevelCapping(): number {\n    return this._autoLevelCapping;\n  }\n\n  /**\n   * Returns the current bandwidth estimate in bits per second, when available. Otherwise, `NaN` is returned.\n   */\n  get bandwidthEstimate(): number {\n    const { bwEstimator } = this.abrController;\n    if (!bwEstimator) {\n      return NaN;\n    }\n    return bwEstimator.getEstimate();\n  }\n\n  /**\n   * get time to first byte estimate\n   * @type {number}\n   */\n  get ttfbEstimate(): number {\n    const { bwEstimator } = this.abrController;\n    if (!bwEstimator) {\n      return NaN;\n    }\n    return bwEstimator.getEstimateTTFB();\n  }\n\n  /**\n   * Capping/max level value that should be used by automatic level selection algorithm (`ABRController`)\n   */\n  set autoLevelCapping(newLevel: number) {\n    if (this._autoLevelCapping !== newLevel) {\n      logger.log(`set autoLevelCapping:${newLevel}`);\n      this._autoLevelCapping = newLevel;\n    }\n  }\n\n  get maxHdcpLevel(): HdcpLevel {\n    return this._maxHdcpLevel;\n  }\n\n  set maxHdcpLevel(value: HdcpLevel) {\n    if (HdcpLevels.indexOf(value) > -1) {\n      this._maxHdcpLevel = value;\n    }\n  }\n\n  /**\n   * True when automatic level selection enabled\n   */\n  get autoLevelEnabled(): boolean {\n    return this.levelController.manualLevel === -1;\n  }\n\n  /**\n   * Level set manually (if any)\n   */\n  get manualLevel(): number {\n    return this.levelController.manualLevel;\n  }\n\n  /**\n   * min level selectable in auto mode according to config.minAutoBitrate\n   */\n  get minAutoLevel(): number {\n    const {\n      levels,\n      config: { minAutoBitrate },\n    } = this;\n    if (!levels) return 0;\n\n    const len = levels.length;\n    for (let i = 0; i < len; i++) {\n      if (levels[i].maxBitrate >= minAutoBitrate) {\n        return i;\n      }\n    }\n\n    return 0;\n  }\n\n  /**\n   * max level selectable in auto mode according to autoLevelCapping\n   */\n  get maxAutoLevel(): number {\n    const { levels, autoLevelCapping, maxHdcpLevel } = this;\n\n    let maxAutoLevel;\n    if (autoLevelCapping === -1 && levels && levels.length) {\n      maxAutoLevel = levels.length - 1;\n    } else {\n      maxAutoLevel = autoLevelCapping;\n    }\n\n    if (maxHdcpLevel) {\n      for (let i = maxAutoLevel; i--; ) {\n        const hdcpLevel = levels[i].attrs['HDCP-LEVEL'];\n        if (hdcpLevel && hdcpLevel <= maxHdcpLevel) {\n          return i;\n        }\n      }\n    }\n\n    return maxAutoLevel;\n  }\n\n  /**\n   * next automatically selected quality level\n   */\n  get nextAutoLevel(): number {\n    // ensure next auto level is between  min and max auto level\n    return Math.min(\n      Math.max(this.abrController.nextAutoLevel, this.minAutoLevel),\n      this.maxAutoLevel\n    );\n  }\n\n  /**\n   * this setter is used to force next auto level.\n   * this is useful to force a switch down in auto mode:\n   * in case of load error on level N, hls.js can set nextAutoLevel to N-1 for example)\n   * forced value is valid for one fragment. upon successful frag loading at forced level,\n   * this value will be resetted to -1 by ABR controller.\n   */\n  set nextAutoLevel(nextLevel: number) {\n    this.abrController.nextAutoLevel = Math.max(this.minAutoLevel, nextLevel);\n  }\n\n  /**\n   * get the datetime value relative to media.currentTime for the active level Program Date Time if present\n   */\n  public get playingDate(): Date | null {\n    return this.streamController.currentProgramDateTime;\n  }\n\n  public get mainForwardBufferInfo(): BufferInfo | null {\n    return this.streamController.getMainFwdBufferInfo();\n  }\n\n  /**\n   * Get the list of selectable audio tracks\n   */\n  get audioTracks(): Array<MediaPlaylist> {\n    const audioTrackController = this.audioTrackController;\n    return audioTrackController ? audioTrackController.audioTracks : [];\n  }\n\n  /**\n   * index of the selected audio track (index in audio track lists)\n   */\n  get audioTrack(): number {\n    const audioTrackController = this.audioTrackController;\n    return audioTrackController ? audioTrackController.audioTrack : -1;\n  }\n\n  /**\n   * selects an audio track, based on its index in audio track lists\n   */\n  set audioTrack(audioTrackId: number) {\n    const audioTrackController = this.audioTrackController;\n    if (audioTrackController) {\n      audioTrackController.audioTrack = audioTrackId;\n    }\n  }\n\n  /**\n   * get alternate subtitle tracks list from playlist\n   */\n  get subtitleTracks(): Array<MediaPlaylist> {\n    const subtitleTrackController = this.subtitleTrackController;\n    return subtitleTrackController\n      ? subtitleTrackController.subtitleTracks\n      : [];\n  }\n\n  /**\n   * index of the selected subtitle track (index in subtitle track lists)\n   */\n  get subtitleTrack(): number {\n    const subtitleTrackController = this.subtitleTrackController;\n    return subtitleTrackController ? subtitleTrackController.subtitleTrack : -1;\n  }\n\n  get media() {\n    return this._media;\n  }\n\n  /**\n   * select an subtitle track, based on its index in subtitle track lists\n   */\n  set subtitleTrack(subtitleTrackId: number) {\n    const subtitleTrackController = this.subtitleTrackController;\n    if (subtitleTrackController) {\n      subtitleTrackController.subtitleTrack = subtitleTrackId;\n    }\n  }\n\n  /**\n   * Whether subtitle display is enabled or not\n   */\n  get subtitleDisplay(): boolean {\n    const subtitleTrackController = this.subtitleTrackController;\n    return subtitleTrackController\n      ? subtitleTrackController.subtitleDisplay\n      : false;\n  }\n\n  /**\n   * Enable/disable subtitle display rendering\n   */\n  set subtitleDisplay(value: boolean) {\n    const subtitleTrackController = this.subtitleTrackController;\n    if (subtitleTrackController) {\n      subtitleTrackController.subtitleDisplay = value;\n    }\n  }\n\n  /**\n   * get mode for Low-Latency HLS loading\n   */\n  get lowLatencyMode(): boolean {\n    return this.config.lowLatencyMode;\n  }\n\n  /**\n   * Enable/disable Low-Latency HLS part playlist and segment loading, and start live streams at playlist PART-HOLD-BACK rather than HOLD-BACK.\n   */\n  set lowLatencyMode(mode: boolean) {\n    this.config.lowLatencyMode = mode;\n  }\n\n  /**\n   * Position (in seconds) of live sync point (ie edge of live position minus safety delay defined by ```hls.config.liveSyncDuration```)\n   * @returns null prior to loading live Playlist\n   */\n  get liveSyncPosition(): number | null {\n    return this.latencyController.liveSyncPosition;\n  }\n\n  /**\n   * Estimated position (in seconds) of live edge (ie edge of live playlist plus time sync playlist advanced)\n   * @returns 0 before first playlist is loaded\n   */\n  get latency(): number {\n    return this.latencyController.latency;\n  }\n\n  /**\n   * maximum distance from the edge before the player seeks forward to ```hls.liveSyncPosition```\n   * configured using ```liveMaxLatencyDurationCount``` (multiple of target duration) or ```liveMaxLatencyDuration```\n   * @returns 0 before first playlist is loaded\n   */\n  get maxLatency(): number {\n    return this.latencyController.maxLatency;\n  }\n\n  /**\n   * target distance from the edge as calculated by the latency controller\n   */\n  get targetLatency(): number | null {\n    return this.latencyController.targetLatency;\n  }\n\n  /**\n   * the rate at which the edge of the current live playlist is advancing or 1 if there is none\n   */\n  get drift(): number | null {\n    return this.latencyController.drift;\n  }\n\n  /**\n   * set to true when startLoad is called before MANIFEST_PARSED event\n   */\n  get forceStartLoad(): boolean {\n    return this.streamController.forceStartLoad;\n  }\n}\n\nexport type {\n  MediaPlaylist,\n  ErrorDetails,\n  ErrorTypes,\n  Events,\n  Level,\n  HlsListeners,\n  HlsEventEmitter,\n  HlsConfig,\n  BufferInfo,\n  HdcpLevels,\n  HdcpLevel,\n  AbrController,\n  AudioStreamController,\n  AudioTrackController,\n  BasePlaylistController,\n  BaseStreamController,\n  BufferController,\n  CapLevelController,\n  CMCDController,\n  ContentSteeringController,\n  EMEController,\n  ErrorController,\n  FPSController,\n  SubtitleTrackController,\n};\nexport type {\n  ComponentAPI,\n  AbrComponentAPI,\n  NetworkComponentAPI,\n} from './types/component-api';\nexport type {\n  ABRControllerConfig,\n  BufferControllerConfig,\n  CapLevelControllerConfig,\n  CMCDControllerConfig,\n  EMEControllerConfig,\n  DRMSystemsConfiguration,\n  DRMSystemOptions,\n  FPSControllerConfig,\n  FragmentLoaderConfig,\n  FragmentLoaderConstructor,\n  HlsLoadPolicies,\n  LevelControllerConfig,\n  LoaderConfig,\n  LoadPolicy,\n  MP4RemuxerConfig,\n  PlaylistLoaderConfig,\n  PlaylistLoaderConstructor,\n  RetryConfig,\n  StreamControllerConfig,\n  LatencyControllerConfig,\n  MetadataControllerConfig,\n  TimelineControllerConfig,\n  TSDemuxerConfig,\n} from './config';\nexport type { MediaKeySessionContext } from './controller/eme-controller';\nexport type { ILogger } from './utils/logger';\nexport type { SubtitleStreamController } from './controller/subtitle-stream-controller';\nexport type { TimelineController } from './controller/timeline-controller';\nexport type { CuesInterface } from './utils/cues';\nexport type {\n  MediaKeyFunc,\n  KeySystems,\n  KeySystemFormats,\n} from './utils/mediakeys-helper';\nexport type { DateRange } from './loader/date-range';\nexport type { LoadStats } from './loader/load-stats';\nexport type { LevelKey } from './loader/level-key';\nexport type { LevelDetails } from './loader/level-details';\nexport type { SourceBufferName } from './types/buffer';\nexport type {\n  MetadataSample,\n  MetadataSchema,\n  UserdataSample,\n} from './types/demuxer';\nexport type {\n  HlsSkip,\n  HlsUrlParameters,\n  LevelAttributes,\n  LevelParsed,\n  VariableMap,\n} from './types/level';\nexport type {\n  PlaylistLevelType,\n  HlsChunkPerformanceTiming,\n  HlsPerformanceTiming,\n  HlsProgressivePerformanceTiming,\n  PlaylistContextType,\n  PlaylistLoaderContext,\n  FragmentLoaderContext,\n  Loader,\n  LoaderStats,\n  LoaderContext,\n  LoaderResponse,\n  LoaderConfiguration,\n  LoaderCallbacks,\n  LoaderOnProgress,\n  LoaderOnAbort,\n  LoaderOnError,\n  LoaderOnSuccess,\n  LoaderOnTimeout,\n} from './types/loader';\nexport type {\n  MediaAttributes,\n  MediaPlaylistType,\n  MainPlaylistType,\n  AudioPlaylistType,\n  SubtitlePlaylistType,\n} from './types/media-playlist';\nexport type { Track, TrackSet } from './types/track';\nexport type { ChunkMetadata } from './types/transmuxer';\nexport type {\n  BaseSegment,\n  Fragment,\n  Part,\n  ElementaryStreams,\n  ElementaryStreamTypes,\n  ElementaryStreamInfo,\n} from './loader/fragment';\nexport type {\n  TrackLoadingData,\n  TrackLoadedData,\n  AudioTrackLoadedData,\n  AudioTracksUpdatedData,\n  AudioTrackSwitchedData,\n  AudioTrackSwitchingData,\n  BackBufferData,\n  BufferAppendedData,\n  BufferAppendingData,\n  BufferCodecsData,\n  BufferCreatedData,\n  BufferEOSData,\n  BufferFlushedData,\n  BufferFlushingData,\n  CuesParsedData,\n  ErrorData,\n  FPSDropData,\n  FPSDropLevelCappingData,\n  FragBufferedData,\n  FragChangedData,\n  FragDecryptedData,\n  FragLoadedData,\n  FragLoadEmergencyAbortedData,\n  FragLoadingData,\n  FragParsedData,\n  FragParsingInitSegmentData,\n  FragParsingMetadataData,\n  FragParsingUserdataData,\n  InitPTSFoundData,\n  KeyLoadedData,\n  KeyLoadingData,\n  LevelLoadedData,\n  LevelLoadingData,\n  LevelPTSUpdatedData,\n  LevelsUpdatedData,\n  LevelSwitchedData,\n  LevelSwitchingData,\n  LevelUpdatedData,\n  LiveBackBufferData,\n  ContentSteeringOptions,\n  ManifestLoadedData,\n  ManifestLoadingData,\n  ManifestParsedData,\n  MediaAttachedData,\n  MediaAttachingData,\n  NonNativeTextTrack,\n  NonNativeTextTracksData,\n  SubtitleFragProcessedData,\n  SubtitleTrackLoadedData,\n  SubtitleTracksUpdatedData,\n  SubtitleTrackSwitchData,\n} from './types/events';\nexport type {\n  NetworkErrorAction,\n  ErrorActionFlags,\n  IErrorAction,\n} from './controller/error-controller';\nexport type { AttrList } from './utils/attr-list';\n","// see https://tools.ietf.org/html/rfc1808\n\n(function (root) {\n  var URL_REGEX =\n    /^(?=((?:[a-zA-Z0-9+\\-.]+:)?))\\1(?=((?:\\/\\/[^\\/?#]*)?))\\2(?=((?:(?:[^?#\\/]*\\/)*[^;?#\\/]*)?))\\3((?:;[^?#]*)?)(\\?[^#]*)?(#[^]*)?$/;\n  var FIRST_SEGMENT_REGEX = /^(?=([^\\/?#]*))\\1([^]*)$/;\n  var SLASH_DOT_REGEX = /(?:\\/|^)\\.(?=\\/)/g;\n  var SLASH_DOT_DOT_REGEX = /(?:\\/|^)\\.\\.\\/(?!\\.\\.\\/)[^\\/]*(?=\\/)/g;\n\n  var URLToolkit = {\n    // If opts.alwaysNormalize is true then the path will always be normalized even when it starts with / or //\n    // E.g\n    // With opts.alwaysNormalize = false (default, spec compliant)\n    // http://a.com/b/cd + /e/f/../g => http://a.com/e/f/../g\n    // With opts.alwaysNormalize = true (not spec compliant)\n    // http://a.com/b/cd + /e/f/../g => http://a.com/e/g\n    buildAbsoluteURL: function (baseURL, relativeURL, opts) {\n      opts = opts || {};\n      // remove any remaining space and CRLF\n      baseURL = baseURL.trim();\n      relativeURL = relativeURL.trim();\n      if (!relativeURL) {\n        // 2a) If the embedded URL is entirely empty, it inherits the\n        // entire base URL (i.e., is set equal to the base URL)\n        // and we are done.\n        if (!opts.alwaysNormalize) {\n          return baseURL;\n        }\n        var basePartsForNormalise = URLToolkit.parseURL(baseURL);\n        if (!basePartsForNormalise) {\n          throw new Error('Error trying to parse base URL.');\n        }\n        basePartsForNormalise.path = URLToolkit.normalizePath(\n          basePartsForNormalise.path\n        );\n        return URLToolkit.buildURLFromParts(basePartsForNormalise);\n      }\n      var relativeParts = URLToolkit.parseURL(relativeURL);\n      if (!relativeParts) {\n        throw new Error('Error trying to parse relative URL.');\n      }\n      if (relativeParts.scheme) {\n        // 2b) If the embedded URL starts with a scheme name, it is\n        // interpreted as an absolute URL and we are done.\n        if (!opts.alwaysNormalize) {\n          return relativeURL;\n        }\n        relativeParts.path = URLToolkit.normalizePath(relativeParts.path);\n        return URLToolkit.buildURLFromParts(relativeParts);\n      }\n      var baseParts = URLToolkit.parseURL(baseURL);\n      if (!baseParts) {\n        throw new Error('Error trying to parse base URL.');\n      }\n      if (!baseParts.netLoc && baseParts.path && baseParts.path[0] !== '/') {\n        // If netLoc missing and path doesn't start with '/', assume everthing before the first '/' is the netLoc\n        // This causes 'example.com/a' to be handled as '//example.com/a' instead of '/example.com/a'\n        var pathParts = FIRST_SEGMENT_REGEX.exec(baseParts.path);\n        baseParts.netLoc = pathParts[1];\n        baseParts.path = pathParts[2];\n      }\n      if (baseParts.netLoc && !baseParts.path) {\n        baseParts.path = '/';\n      }\n      var builtParts = {\n        // 2c) Otherwise, the embedded URL inherits the scheme of\n        // the base URL.\n        scheme: baseParts.scheme,\n        netLoc: relativeParts.netLoc,\n        path: null,\n        params: relativeParts.params,\n        query: relativeParts.query,\n        fragment: relativeParts.fragment,\n      };\n      if (!relativeParts.netLoc) {\n        // 3) If the embedded URL's <net_loc> is non-empty, we skip to\n        // Step 7.  Otherwise, the embedded URL inherits the <net_loc>\n        // (if any) of the base URL.\n        builtParts.netLoc = baseParts.netLoc;\n        // 4) If the embedded URL path is preceded by a slash \"/\", the\n        // path is not relative and we skip to Step 7.\n        if (relativeParts.path[0] !== '/') {\n          if (!relativeParts.path) {\n            // 5) If the embedded URL path is empty (and not preceded by a\n            // slash), then the embedded URL inherits the base URL path\n            builtParts.path = baseParts.path;\n            // 5a) if the embedded URL's <params> is non-empty, we skip to\n            // step 7; otherwise, it inherits the <params> of the base\n            // URL (if any) and\n            if (!relativeParts.params) {\n              builtParts.params = baseParts.params;\n              // 5b) if the embedded URL's <query> is non-empty, we skip to\n              // step 7; otherwise, it inherits the <query> of the base\n              // URL (if any) and we skip to step 7.\n              if (!relativeParts.query) {\n                builtParts.query = baseParts.query;\n              }\n            }\n          } else {\n            // 6) The last segment of the base URL's path (anything\n            // following the rightmost slash \"/\", or the entire path if no\n            // slash is present) is removed and the embedded URL's path is\n            // appended in its place.\n            var baseURLPath = baseParts.path;\n            var newPath =\n              baseURLPath.substring(0, baseURLPath.lastIndexOf('/') + 1) +\n              relativeParts.path;\n            builtParts.path = URLToolkit.normalizePath(newPath);\n          }\n        }\n      }\n      if (builtParts.path === null) {\n        builtParts.path = opts.alwaysNormalize\n          ? URLToolkit.normalizePath(relativeParts.path)\n          : relativeParts.path;\n      }\n      return URLToolkit.buildURLFromParts(builtParts);\n    },\n    parseURL: function (url) {\n      var parts = URL_REGEX.exec(url);\n      if (!parts) {\n        return null;\n      }\n      return {\n        scheme: parts[1] || '',\n        netLoc: parts[2] || '',\n        path: parts[3] || '',\n        params: parts[4] || '',\n        query: parts[5] || '',\n        fragment: parts[6] || '',\n      };\n    },\n    normalizePath: function (path) {\n      // The following operations are\n      // then applied, in order, to the new path:\n      // 6a) All occurrences of \"./\", where \".\" is a complete path\n      // segment, are removed.\n      // 6b) If the path ends with \".\" as a complete path segment,\n      // that \".\" is removed.\n      path = path.split('').reverse().join('').replace(SLASH_DOT_REGEX, '');\n      // 6c) All occurrences of \"<segment>/../\", where <segment> is a\n      // complete path segment not equal to \"..\", are removed.\n      // Removal of these path segments is performed iteratively,\n      // removing the leftmost matching pattern on each iteration,\n      // until no matching pattern remains.\n      // 6d) If the path ends with \"<segment>/..\", where <segment> is a\n      // complete path segment not equal to \"..\", that\n      // \"<segment>/..\" is removed.\n      while (\n        path.length !== (path = path.replace(SLASH_DOT_DOT_REGEX, '')).length\n      ) {}\n      return path.split('').reverse().join('');\n    },\n    buildURLFromParts: function (parts) {\n      return (\n        parts.scheme +\n        parts.netLoc +\n        parts.path +\n        parts.params +\n        parts.query +\n        parts.fragment\n      );\n    },\n  };\n\n  if (typeof exports === 'object' && typeof module === 'object')\n    module.exports = URLToolkit;\n  else if (typeof define === 'function' && define.amd)\n    define([], function () {\n      return URLToolkit;\n    });\n  else if (typeof exports === 'object') exports['URLToolkit'] = URLToolkit;\n  else root['URLToolkit'] = URLToolkit;\n})(this);\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n  , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n  Events.prototype = Object.create(null);\n\n  //\n  // This hack is needed because the `__proto__` property is still inherited in\n  // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n  //\n  if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n  this.fn = fn;\n  this.context = context;\n  this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n  if (typeof fn !== 'function') {\n    throw new TypeError('The listener must be a function');\n  }\n\n  var listener = new EE(fn, context || emitter, once)\n    , evt = prefix ? prefix + event : event;\n\n  if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n  else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n  else emitter._events[evt] = [emitter._events[evt], listener];\n\n  return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n  if (--emitter._eventsCount === 0) emitter._events = new Events();\n  else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n  this._events = new Events();\n  this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n  var names = []\n    , events\n    , name;\n\n  if (this._eventsCount === 0) return names;\n\n  for (name in (events = this._events)) {\n    if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n  }\n\n  if (Object.getOwnPropertySymbols) {\n    return names.concat(Object.getOwnPropertySymbols(events));\n  }\n\n  return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n  var evt = prefix ? prefix + event : event\n    , handlers = this._events[evt];\n\n  if (!handlers) return [];\n  if (handlers.fn) return [handlers.fn];\n\n  for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n    ee[i] = handlers[i].fn;\n  }\n\n  return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n  var evt = prefix ? prefix + event : event\n    , listeners = this._events[evt];\n\n  if (!listeners) return 0;\n  if (listeners.fn) return 1;\n  return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n  var evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) return false;\n\n  var listeners = this._events[evt]\n    , len = arguments.length\n    , args\n    , i;\n\n  if (listeners.fn) {\n    if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n    switch (len) {\n      case 1: return listeners.fn.call(listeners.context), true;\n      case 2: return listeners.fn.call(listeners.context, a1), true;\n      case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n      case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n      case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n      case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n    }\n\n    for (i = 1, args = new Array(len -1); i < len; i++) {\n      args[i - 1] = arguments[i];\n    }\n\n    listeners.fn.apply(listeners.context, args);\n  } else {\n    var length = listeners.length\n      , j;\n\n    for (i = 0; i < length; i++) {\n      if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n      switch (len) {\n        case 1: listeners[i].fn.call(listeners[i].context); break;\n        case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n        case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n        case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n        default:\n          if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n            args[j - 1] = arguments[j];\n          }\n\n          listeners[i].fn.apply(listeners[i].context, args);\n      }\n    }\n  }\n\n  return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n  return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n  return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n  var evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) return this;\n  if (!fn) {\n    clearEvent(this, evt);\n    return this;\n  }\n\n  var listeners = this._events[evt];\n\n  if (listeners.fn) {\n    if (\n      listeners.fn === fn &&\n      (!once || listeners.once) &&\n      (!context || listeners.context === context)\n    ) {\n      clearEvent(this, evt);\n    }\n  } else {\n    for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n      if (\n        listeners[i].fn !== fn ||\n        (once && !listeners[i].once) ||\n        (context && listeners[i].context !== context)\n      ) {\n        events.push(listeners[i]);\n      }\n    }\n\n    //\n    // Reset the array, or remove it completely if we have no more listeners.\n    //\n    if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n    else clearEvent(this, evt);\n  }\n\n  return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n  var evt;\n\n  if (event) {\n    evt = prefix ? prefix + event : event;\n    if (this._events[evt]) clearEvent(this, evt);\n  } else {\n    this._events = new Events();\n    this._eventsCount = 0;\n  }\n\n  return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n  module.exports = EventEmitter;\n}\n","import React from 'react';\nimport { GALLERY_CONSTS, window, utils, optionsMap } from 'pro-gallery-lib';\nimport { shouldCreateVideoPlaceholder } from '../itemHelper.js';\nimport { getStyle } from './getStyle.js';\n\nclass VideoItem extends React.Component {\n  constructor(props) {\n    super(props);\n\n    this.pause = this.pause.bind(this);\n    this.play = this.play.bind(this);\n    this.playVideoIfNeeded = this.playVideoIfNeeded.bind(this);\n\n    this.state = {\n      playedOnce: false,\n      loadVideo: props.loadVideo || props.shouldPlay,\n      isPlaying: false,\n      shouldPlay: props.shouldPlay,\n      reactPlayerLoaded: false,\n      vimeoPlayerLoaded: false,\n      hlsPlayerLoaded: false,\n    };\n  }\n\n  componentDidMount() {\n    this.dynamiclyImportVideoPlayers();\n  }\n\n  dynamiclyImportVideoPlayers() {\n    if (!(window && window.ReactPlayer)) {\n      import(/* webpackChunkName: \"proGallery_reactPlayer\" */ 'react-player').then((ReactPlayer) => {\n        // cjs/esm interop hack\n        if (ReactPlayer.default.default) {\n          window.ReactPlayer = ReactPlayer.default.default;\n        } else {\n          window.ReactPlayer = ReactPlayer.default;\n        }\n        this.setState({ reactPlayerLoaded: true });\n        this.playVideoIfNeeded();\n      });\n    }\n    if (\n      //Vimeo player must be loaded by us, problem with requireJS\n      !(window && window.Vimeo) &&\n      this.props.videoUrl &&\n      this.props.videoUrl.includes('vimeo.com')\n    ) {\n      import(/* webpackChunkName: \"proGallery_vimeoPlayer\" */ '@vimeo/player').then((Player) => {\n        window.Vimeo = { Player: Player.default };\n        this.setState({ vimeoPlayerLoaded: true });\n        this.playVideoIfNeeded();\n      });\n    }\n    if (\n      //Hls player must be loaded by us, problem with requireJS\n      !(window && window.Hls) &&\n      this.isHLSVideo()\n    ) {\n      import(/* webpackChunkName: \"proGallery_HlsPlayer\" */ 'hls.js').then((Player) => {\n        window.Hls = Player.default;\n        this.setState({ hlsPlayerLoaded: true });\n        this.playVideoIfNeeded();\n      });\n    }\n  }\n\n  isHLSVideo() {\n    return this.props.videoUrl && (this.props.videoUrl.includes('/hls') || this.props.videoUrl.includes('.m3u8'));\n  }\n\n  shouldUseHlsPlayer() {\n    return this.isHLSVideo() && !utils.isiOS();\n  }\n\n  shouldForceVideoForHLS() {\n    return this.isHLSVideo() && utils.isiOS();\n  }\n\n  UNSAFE_componentWillReceiveProps(nextProps) {\n    if (nextProps.shouldPlay || nextProps.firstUserInteractionExecuted) {\n      this.setState({ loadVideo: true });\n    }\n\n    if (nextProps.shouldPlay) {\n      this.setState({ shouldPlay: true });\n    }\n\n    this.playVideoIfNeeded(nextProps);\n  }\n\n  componentDidUpdate(prevProps) {\n    if (prevProps.activeIndex !== this.props.activeIndex) {\n      this.fixIFrameTabIndexIfNeeded();\n    }\n\n    if (prevProps.type === 'image' && this.props.type === 'video') {\n      this.dynamiclyImportVideoPlayers();\n    }\n\n    this.playVideoIfNeeded();\n  }\n\n  play() {\n    this.props.playVideo(this.props.idx);\n  }\n\n  pause() {\n    this.props.pauseVideo();\n  }\n\n  isPrefersReducedMotion() {\n    return window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n  }\n\n  playVideoIfNeeded(props = this.props) {\n    try {\n      const { shouldPlay } = props;\n      if (shouldPlay && !this.isPlaying && !this.isPrefersReducedMotion()) {\n        this.videoElement =\n          this.videoElement || window.document.querySelector(`#video-${this.props.id}-${this.props.galleryId} video`);\n        if (this.videoElement) {\n          this.isPlaying = true;\n          this.videoElement.play();\n          utils.isVerbose() && console.log('[VIDEO] Playing video #' + this.props.idx, this.videoElement);\n        }\n      }\n    } catch (e) {\n      console.error('[VIDEO] Could not play video #' + this.props.idx, this.videoElement, e);\n    }\n  }\n  //-----------------------------------------| UTILS |--------------------------------------------//\n  createPlayerElement() {\n    //video dimensions are for videos in grid fill - placing the video with negative margins to crop into a square\n    if (!(window && window.ReactPlayer && (this.state.loadVideo || this.props.playing))) {\n      return null;\n    }\n    const PlayerElement = window.ReactPlayer;\n    const isWiderThenContainer = this.props.style.ratio >= this.props.cropRatio;\n\n    // adding 1 pixel to compensate for the difference we have sometimes from layouter in grid fill\n    const isCrop =\n      this.props.options[optionsMap.layoutParams.crop.enable] &&\n      this.props.options[optionsMap.layoutParams.crop.method] ===\n        GALLERY_CONSTS[optionsMap.layoutParams.crop.method].FILL;\n\n    const url = this.props.videoUrl\n      ? this.props.videoUrl\n      : this.props.createUrl(GALLERY_CONSTS.urlSizes.RESIZED, GALLERY_CONSTS.urlTypes.VIDEO);\n\n    const attributes = {\n      controlsList: 'nodownload',\n      disablePictureInPicture: true,\n      muted: !this.props.options[optionsMap.behaviourParams.item.video.volume],\n      preload: 'metadata',\n      style: getStyle(isCrop, isWiderThenContainer),\n      type: 'video/mp4',\n    };\n\n    if (shouldCreateVideoPlaceholder(this.props.options)) {\n      attributes.poster = this.props.createUrl(GALLERY_CONSTS.urlSizes.SCALED, GALLERY_CONSTS.urlTypes.HIGH_RES);\n    }\n\n    return (\n      <PlayerElement\n        playsinline\n        className={'gallery-item-visible video gallery-item'}\n        id={`video-${this.props.id}-${this.props.galleryId}`}\n        width=\"100%\"\n        height=\"100%\"\n        url={url}\n        alt={typeof this.props.alt === 'string' ? this.props.alt : 'untitled video'}\n        loop={!!this.props.options[optionsMap.behaviourParams.item.video.loop]}\n        ref={(player) => (this.video = player)}\n        volume={this.props.options[optionsMap.behaviourParams.item.video.volume] ? 0.8 : 0}\n        playing={this.state.shouldPlay && !this.isPrefersReducedMotion()}\n        onEnded={() => {\n          this.setState({ isPlaying: false });\n          this.props.actions.eventsListener(GALLERY_CONSTS.events.VIDEO_ENDED, this.props);\n        }}\n        onPause={() => {\n          this.setState({ isPlaying: false });\n        }}\n        onError={(e) => {\n          this.props.actions.eventsListener(GALLERY_CONSTS.events.VIDEO_ERROR, {\n            ...this.props,\n            videoError: e,\n          });\n        }}\n        playbackRate={Number(this.props.options[optionsMap.behaviourParams.item.video.speed]) || 1}\n        onStart={() => {\n          if (!this.state.playedOnce) {\n            this.setState({ playedOnce: true });\n          }\n        }}\n        onPlay={() => {\n          this.props.actions.eventsListener(GALLERY_CONSTS.events.VIDEO_PLAYED, this.props);\n          this.setState({ isPlaying: true });\n        }}\n        onReady={() => {\n          this.playVideoIfNeeded();\n          this.fixIFrameTabIndexIfNeeded();\n          this.props.actions.setItemLoaded();\n          this.setState({ ready: true });\n        }}\n        onProgress={() => {\n          if (!this.props.shouldPlay) {\n            this.setState({ shouldPlay: false });\n          }\n        }}\n        controls={\n          this.props.activeIndex === this.props.idx &&\n          this.props.options[optionsMap.behaviourParams.item.video.enableControls]\n        }\n        config={{\n          file: {\n            attributes,\n            forceHLS: this.shouldUseHlsPlayer(),\n            forceVideo: this.shouldForceVideoForHLS(),\n          },\n        }}\n        key={'video-' + this.props.id}\n      />\n    );\n  }\n\n  fixIFrameTabIndexIfNeeded() {\n    if (this.props.isExternalVideo) {\n      const videoGalleryItem =\n        window.document &&\n        window.document.querySelector(`#pro-gallery-${this.props.galleryId} #video-${this.props.id}`);\n      const videoIFrames = videoGalleryItem && videoGalleryItem.getElementsByTagName('iframe');\n      const videoIFrame = videoIFrames && videoIFrames[0];\n      if (videoIFrame) {\n        if (this.props.activeIndex === this.props.idx) {\n          videoIFrame.setAttribute('tabIndex', '0');\n        } else {\n          videoIFrame.setAttribute('tabIndex', '-1');\n        }\n      }\n    }\n  }\n\n  getVideoContainerStyles() {\n    const videoContainerStyle = {\n      ...this.props.imageDimensions,\n    };\n    if (utils.deviceHasMemoryIssues() || this.state.ready || !shouldCreateVideoPlaceholder(this.props.options)) {\n      // videoContainerStyle.backgroundColor = 'black';\n    } else {\n      videoContainerStyle.backgroundImage = `url(${this.props.createUrl(\n        GALLERY_CONSTS.urlSizes.RESIZED,\n        GALLERY_CONSTS.urlTypes.HIGH_RES\n      )})`;\n    }\n    return videoContainerStyle;\n  }\n\n  //-----------------------------------------| RENDER |--------------------------------------------//\n\n  render() {\n    const { thumbnail, hover } = this.props;\n    let baseClassName = [\n      'gallery-item-content',\n      'gallery-item-visible',\n      'gallery-item-preloaded',\n      'gallery-item-video',\n      'gallery-item',\n      'video-item',\n    ];\n    if (utils.isiPhone()) {\n      baseClassName.push('ios');\n    }\n    if (this.state.isPlaying) {\n      baseClassName.push('playing');\n    }\n    if (this.state.playedOnce && this.state.ready) {\n      baseClassName.push('playedOnce');\n    }\n    if (this.props.isCurrentHover) {\n      baseClassName.push('item-content-hover');\n    } else {\n      baseClassName.push('item-content-regular');\n    }\n    // eslint-disable-next-line no-unused-vars\n    const video = (\n      <div\n        className={baseClassName.join(' ')}\n        data-hook=\"video_container-video-player-element\"\n        key={'video_container-' + this.props.id}\n        style={this.getVideoContainerStyles()}\n      >\n        {this.createPlayerElement()}\n        {this.state.isPlaying ? null : this.props.videoPlayButton}\n      </div>\n    );\n\n    return (\n      <div key={'video-and-hover-container' + this.props.idx}>\n        {video}\n        {shouldCreateVideoPlaceholder(this.props.options) && thumbnail}\n        {hover}\n      </div>\n    );\n  }\n}\n\nexport default VideoItem;\n","import React from 'react';\nimport { utils, optionsMap } from 'pro-gallery-lib';\nimport { shouldCreateVideoPlaceholder } from '../itemHelper.js';\nimport { GalleryUI } from '../media/GalleryUI.js';\nimport MediaImage, { MediaImplementationProps, MediaBaseProps } from '../media/mediaItem.js';\n\nconst isIos = utils.isiOS();\nconst useTransparentPlayButtonAndForceLoadVideo = (props) =>\n  ((props.videoUrl || props.url).includes('youtube.com') || (props.videoUrl || props.url).includes('youtu.be')) &&\n  isIos;\n\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nconst VideoItem = React.lazy(() => {\n  return import(/* webpackChunkName: \"proGallery_videoItem\" */ './videoItem.js');\n});\n\nclass VideoItemImplementation extends React.Component<MediaImplementationProps> {\n  render() {\n    const shouldForceLoadVideo = useTransparentPlayButtonAndForceLoadVideo(this.props);\n    return (\n      <VideoItem\n        {...this.props}\n        loadVideo={this.props.shouldPlay || shouldForceLoadVideo}\n        videoPlaceholder={this.props.thumbnail}\n        videoPlayButton={this.props.showPlayButton && <GalleryUI type={'videoPlayButton'} size={60} />}\n      />\n    );\n  }\n}\n\nexport type VideoWreapperProps = Omit<\n  MediaBaseProps,\n  'MediaImplementation' | 'enableImagePlaceholder' | 'showPlayButton' | 'placeholderExtraClasses'\n>;\n\nclass VideoItemWrapper extends React.Component<VideoWreapperProps> {\n  render(): React.ReactNode {\n    const showVideoPlayButton = this.props.options[optionsMap.behaviourParams.item.video.enablePlayButton];\n    return (\n      <MediaImage\n        {...this.props}\n        MediaImplementation={VideoItemImplementation}\n        enableImagePlaceholder={shouldCreateVideoPlaceholder(this.props.options)}\n        showPlayButton={showVideoPlayButton}\n        placeholderExtraClasses={['video-item', 'gallery-item-video']}\n      />\n    );\n  }\n}\n\nexport default VideoItemWrapper;\n/* eslint-enable prettier/prettier */\n","export { getCustomInfoRendererProps, getLinkParams };\n\nimport { GALLERY_CONSTS, utils, isSEOMode, optionsMap } from 'pro-gallery-lib';\n\nfunction getCustomInfoRendererProps(props) {\n  return { ...props, ...{ isMobile: utils.isMobile() } };\n}\n\nfunction getLinkParams({ directLink, options, directShareLink, noFollowForSEO }) {\n  const isSEO = isSEOMode();\n  if (\n    options[optionsMap.behaviourParams.item.clickAction] ===\n    GALLERY_CONSTS[optionsMap.behaviourParams.item.clickAction].LINK\n  ) {\n    const { url, target } = directLink || {};\n    const shouldUseNofollow = isSEO && noFollowForSEO;\n    const shouldUseDirectLink = !!(url && target);\n    const seoLinkParams = shouldUseNofollow ? { rel: 'nofollow' } : {};\n    const linkParams = shouldUseDirectLink ? { href: url, target, ...seoLinkParams } : {};\n    return linkParams;\n  } else if (\n    options[optionsMap.behaviourParams.item.clickAction] ===\n    GALLERY_CONSTS[optionsMap.behaviourParams.item.clickAction].ACTION\n  ) {\n    // place share link as the navigation item\n    const url = directShareLink;\n    const shouldUseDirectShareLink = !!url;\n    const shouldUseNofollow = !options[optionsMap.behaviourParams.gallery.enableIndexingShareLinks];\n    const seoLinkParams = shouldUseNofollow ? { rel: 'nofollow' } : {};\n    const linkParams = shouldUseDirectShareLink ? { href: url, 'data-cancel-link': true, ...seoLinkParams } : {};\n    return linkParams;\n  }\n}\n","import { GALLERY_CONSTS, optionsMap } from 'pro-gallery-lib';\n\nexport const getSlideAnimationClassNames = ({ idx, activeIndex, options }, overrideDeckTransition = false) => {\n  const { [optionsMap.behaviourParams.gallery.horizontal.slideAnimation]: slideAnimation } = options;\n  const isRTL =\n    options[optionsMap.behaviourParams.gallery.layoutDirection] ===\n    GALLERY_CONSTS[optionsMap.behaviourParams.gallery.layoutDirection].RIGHT_TO_LEFT;\n  switch (slideAnimation) {\n    case GALLERY_CONSTS[optionsMap.behaviourParams.gallery.horizontal.slideAnimation].FADE:\n      return `fade fade-${activeIndex === idx ? 'visible' : 'hidden'}`;\n    case GALLERY_CONSTS[optionsMap.behaviourParams.gallery.horizontal.slideAnimation].DECK: {\n      if (activeIndex < idx) {\n        return `deck-after ${overrideDeckTransition ? 'override' : ''}`;\n      } else if (activeIndex === idx) {\n        return `deck-current ${overrideDeckTransition ? 'override' : ''}`;\n      } else if (activeIndex > idx) {\n        return `deck-before${isRTL ? '-rtl' : ''}`;\n      }\n      return {};\n    }\n    default:\n      return {};\n  }\n};\n\nexport const toggleScrollLessAnimation = (callback) => {\n  const toggleDeckTransitions = (isPaused) => {\n    console.log('toggleScrollLessAnimation: ', isPaused);\n    ['.gallery-item-wrapper', '.gallery-item-common-info-outer'].forEach((className) => {\n      if (isPaused) {\n        [...document.querySelectorAll(className)].forEach((item) => {\n          item.classList?.add('disabled-transition');\n        });\n      } else {\n        [...document.querySelectorAll(className)].forEach((item) => {\n          // item.offsetHeight; is to trigger a reflow and flush all the CSS changes.\n          item.offsetHeight;\n          item.classList?.remove('disabled-transition');\n        });\n      }\n    });\n  };\n\n  setTimeout(() => {\n    callback && callback();\n    toggleDeckTransitions(true);\n    toggleDeckTransitions(false);\n  }, 600);\n};\n","import React from 'react';\nimport { GALLERY_CONSTS, window, utils, isEditMode, isPreviewMode, optionsMap } from 'pro-gallery-lib';\nimport MagnifiedImage from './imageWithMagnified.js';\nimport ThreeDItem from './3d/3dItemWrapper.js';\nimport withSecondaryMedia from '../hoc/withSecondMedia.js';\nimport TextItem from './textItem.js';\nimport ItemHover from './itemHover.js';\nimport { changeActiveElementIfNeeded, onAnchorFocus } from './itemHelper.js';\nimport { cssScrollHelper } from '../helpers/cssScrollHelper.js';\nimport { getOuterInfoStyle, getInnerInfoStyle, getContainerStyle, getImageStyle } from './itemViewStyleProvider.js';\nimport VideoItemWrapper from './videos/videoItemWrapper.js';\nimport { getCustomInfoRendererProps, getLinkParams } from './pure.js';\nimport { getSlideAnimationClassNames } from '../gallery/proGallery/scrollLessAnimationHelper.js';\n\nconst ImageWithSecondMedia = withSecondaryMedia(MagnifiedImage);\nconst TextWithSecondMedia = withSecondaryMedia(TextItem);\nclass ItemView extends React.Component {\n  constructor(props) {\n    super(props);\n    this.props.actions.eventsListener(GALLERY_CONSTS.events.ITEM_CREATED, this.props);\n\n    this.init();\n\n    this.state = {\n      isCurrentHover: false,\n      itemWasHovered: false,\n    };\n\n    this.activeElement = '';\n  }\n\n  itemContainer = React.createRef();\n\n  //-------------------------------------------| INIT |--------------------------------------------//\n\n  init() {\n    this.onItemClick = this.onItemClick.bind(this);\n    this.onItemWrapperClick = this.onItemWrapperClick.bind(this);\n    this.onItemInfoClick = this.onItemInfoClick.bind(this);\n    this.onAnchorKeyDown = this.onAnchorKeyDown.bind(this);\n    this.onContainerKeyUp = this.onContainerKeyUp.bind(this);\n    this.handleItemMouseDown = this.handleItemMouseDown.bind(this);\n    this.handleItemMouseUp = this.handleItemMouseUp.bind(this);\n    this.setItemLoaded = this.setItemLoaded.bind(this);\n    this.isHighlight = this.isHighlight.bind(this);\n    this.getItemHover = this.getItemHover.bind(this);\n    this.getImageItem = this.getImageItem.bind(this);\n    this.getVideoItem = this.getVideoItem.bind(this);\n    this.getTextItem = this.getTextItem.bind(this);\n    this.getItemInner = this.getItemInner.bind(this);\n    this.getItemContainerStyles = this.getItemContainerStyles.bind(this);\n    this.getItemWrapperStyles = this.getItemWrapperStyles.bind(this);\n    this.getItemAriaLabel = this.getItemAriaLabel.bind(this);\n    this.getItemContainerClass = this.getItemContainerClass.bind(this);\n    this.getItemWrapperClass = this.getItemWrapperClass.bind(this);\n    this.getItemContainerTabIndex = this.getItemContainerTabIndex.bind(this);\n    this.isIconTag = this.isIconTag.bind(this);\n    this.onMouseEnter = this.onMouseEnter.bind(this);\n    this.onMouseLeave = this.onMouseLeave.bind(this);\n    this.onFocus = this.onFocus.bind(this);\n    this.onBlur = this.onBlur.bind(this);\n    this.checkIfCurrentHoverChanged = this.checkIfCurrentHoverChanged.bind(this);\n    this.shouldHoverWithoutOverlayAndClickOnMobile = this.shouldHoverWithoutOverlayAndClickOnMobile.bind(this);\n  }\n\n  //----------------------------------------| ACTIONS |-------------------------------------------//\n  setItemLoaded() {\n    this.props.actions.eventsListener(GALLERY_CONSTS.events.ITEM_LOADED, this.props);\n    this.setState({\n      loaded: true,\n    });\n  }\n\n  isIconTag(tagName) {\n    return ['button', 'i', 'a', 'svg', 'path'].indexOf(tagName.toLowerCase()) >= 0;\n  }\n\n  onMouseEnter() {\n    if (!utils.isMobile()) {\n      this.props.actions.eventsListener(GALLERY_CONSTS.events.HOVER_SET, this.props.idx);\n    }\n  }\n\n  onMouseLeave() {\n    if (!utils.isMobile()) {\n      this.props.actions.eventsListener(GALLERY_CONSTS.events.HOVER_SET, -1);\n    }\n  }\n\n  onFocus() {\n    if (this.props.settings?.isAccessible) {\n      this.props.actions.eventsListener(GALLERY_CONSTS.events.HOVER_SET, this.props.idx);\n    }\n    this.props.actions.eventsListener(GALLERY_CONSTS.events.ITEM_FOCUSED, this.props);\n  }\n\n  onBlur() {\n    if (this.props.settings?.isAccessible) {\n      this.props.actions.eventsListener(GALLERY_CONSTS.events.HOVER_SET, -1);\n    }\n    this.props.actions.eventsListener(GALLERY_CONSTS.events.ITEM_LOST_FOCUS, this.props);\n  }\n\n  onAnchorKeyDown(e) {\n    // Similar to \"onContainerKeyUp()\" expect 'shouldUseDirectLink()' part, because we are already on the <a> tag (this.itemAnchor)\n    const clickTarget = 'item-container';\n    switch (e.keyCode || e.charCode) {\n      case 32: //space\n      case 13: //enter\n        e.stopPropagation();\n        this.onItemClick(e, clickTarget, false); //pressing enter or space always behaves as click on main image, even if the click is on a thumbnail\n        return false;\n      default:\n        return true;\n    }\n  }\n\n  handleGalleryItemAction(e) {\n    this.props.actions.eventsListener(GALLERY_CONSTS.events.ITEM_ACTION_TRIGGERED, this.props, e);\n  }\n\n  onItemWrapperClick(e) {\n    const clickTarget = 'item-media';\n    this.onItemClick(e, clickTarget);\n  }\n\n  onItemInfoClick(e) {\n    const clickTarget = 'item-info';\n    this.onItemClick(e, clickTarget, false);\n    if (!this.shouldUseDirectLink()) {\n      // stop propagation only if we are not using direct link.\n      // stop propagation will prevent listening and manipulating the anchor navigations as some users do.\n      // we dont want to do this when we use a direct link via a tag.\n      e.stopPropagation();\n    }\n  }\n\n  onItemClick(e, clickTarget, shouldPreventDefault = true) {\n    this.props.actions.eventsListener(GALLERY_CONSTS.events.ITEM_CLICKED, { ...this.props, clickTarget }, e);\n\n    if (this.shouldUseDirectLink()) {\n      return;\n    }\n\n    if (shouldPreventDefault) {\n      e.preventDefault();\n    }\n\n    if (this.shouldShowHoverOnMobile() || this.shouldShowSecondMediaOnMobile()) {\n      this.handleHoverClickOnMobile(e);\n    } else if (this.shouldHoverWithoutOverlayAndClickOnMobile()) {\n      this.props.actions.eventsListener(GALLERY_CONSTS.events.HOVER_SET, this.props.idx);\n    } else {\n      this.handleGalleryItemAction(e);\n    }\n  }\n\n  shouldUseDirectLink = () => {\n    const { directLink } = this.props;\n    const { url, target } = directLink || {};\n    const useDirectLink = !!(\n      url &&\n      target &&\n      this.props.options[optionsMap.behaviourParams.item.clickAction] ===\n        GALLERY_CONSTS[optionsMap.behaviourParams.item.clickAction].LINK\n    );\n    const shouldUseDirectLinkOnMobile =\n      this.shouldShowHoverOnMobile() && this.isClickOnCurrentHoveredItem() && useDirectLink;\n\n    if (shouldUseDirectLinkOnMobile) {\n      this.props.actions.eventsListener(GALLERY_CONSTS.events.HOVER_SET, -1);\n      return true;\n    }\n    if (useDirectLink && !this.shouldShowHoverOnMobile()) {\n      return true;\n    }\n    return false;\n  };\n\n  isClickOnCurrentHoveredItem = () =>\n    this.state.isCurrentHover || // this single item was already hovered.\n    this.props.options[optionsMap.behaviourParams.item.overlay.hoveringBehaviour] ===\n      GALLERY_CONSTS[optionsMap.behaviourParams.item.overlay.hoveringBehaviour].ALWAYS_SHOW; // all the items are always 'already' hovered\n\n  handleHoverClickOnMobile(e) {\n    if (this.isClickOnCurrentHoveredItem()) {\n      this.handleGalleryItemAction(e);\n      this.props.actions.eventsListener(GALLERY_CONSTS.events.HOVER_SET, -1);\n    } else {\n      this.props.actions.eventsListener(GALLERY_CONSTS.events.HOVER_SET, this.props.idx);\n    }\n  }\n\n  handleItemMouseDown() {\n    //check for long press\n    // if (utils.isMobile()) {\n    //   clearTimeout(this.longPressTimer);\n    //   this.longPressTimer = setTimeout(() => {\n    //     e.preventDefault(); //prevent default only after a long press (so that scroll will not break)\n    //     //do something\n    //   }, 500);\n    // }\n    return true; //make sure the default event behaviour continues\n  }\n\n  handleItemMouseUp() {\n    if (utils.isMobile() && this.longPressTimer) {\n      clearTimeout(this.longPressTimer);\n    }\n    return true; //make sure the default event behaviour continues\n  }\n\n  //-----------------------------------------| UTILS |--------------------------------------------//\n\n  shouldShowHoverOnMobile() {\n    if (utils.isMobile()) {\n      const {\n        [optionsMap.behaviourParams.item.overlay.hoveringBehaviour]: hoveringBehaviour,\n        alwaysShowHover,\n        previewHover,\n      } = this.props.options;\n\n      if (hoveringBehaviour === GALLERY_CONSTS[optionsMap.behaviourParams.item.overlay.hoveringBehaviour].NEVER_SHOW) {\n        return false;\n      }\n      if (\n        this.props.options[optionsMap.behaviourParams.item.clickAction] ===\n          GALLERY_CONSTS[optionsMap.behaviourParams.item.clickAction].NOTHING &&\n        this.props.type !== 'video' &&\n        this.props.type !== '3d'\n      ) {\n        return true;\n      } else if (\n        this.props.customComponents.customHoverRenderer &&\n        GALLERY_CONSTS.hasHoverPlacement(this.props.options[optionsMap.layoutParams.info.placement]) &&\n        hoveringBehaviour !== GALLERY_CONSTS[optionsMap.behaviourParams.item.overlay.hoveringBehaviour].NEVER_SHOW\n      ) {\n        return true;\n      }\n      if (alwaysShowHover) {\n        return true;\n      }\n      if (isEditMode() && previewHover) {\n        return true;\n      }\n    }\n    return false;\n  }\n  shouldShowSecondMediaOnMobile() {\n    if (utils.isMobile()) {\n      if (\n        this.props.options[optionsMap.behaviourParams.item.clickAction] ===\n          GALLERY_CONSTS[optionsMap.behaviourParams.item.clickAction].NOTHING &&\n        this.props.type !== 'video' &&\n        this.props.type !== '3d'\n      ) {\n        return (\n          this.props.options[optionsMap.behaviourParams.item.secondaryMedia.trigger] ===\n          GALLERY_CONSTS[optionsMap.behaviourParams.item.secondaryMedia.trigger].HOVER\n        );\n      } else {\n        return false;\n      }\n    }\n    return false;\n  }\n\n  shouldHoverWithoutOverlayAndClickOnMobile() {\n    return (\n      utils.isMobile() &&\n      this.props.options[optionsMap.behaviourParams.item.video.playTrigger] ===\n        GALLERY_CONSTS[optionsMap.behaviourParams.item.video.playTrigger].HOVER &&\n      this.props.options[optionsMap.behaviourParams.item.clickAction] ===\n        GALLERY_CONSTS[optionsMap.behaviourParams.item.clickAction].NOTHING\n    );\n  }\n\n  isHighlight() {\n    return this.props.thumbnailHighlightId && this.props.thumbnailHighlightId === this.props.id;\n  }\n\n  shouldHover() {\n    //see if this could be decided in the preset\n    const { options } = this.props;\n    const { alwaysShowHover, previewHover } = options;\n    const hoveringBehaviour = options[optionsMap.behaviourParams.item.overlay.hoveringBehaviour];\n    const { NEVER_SHOW, APPEARS } = GALLERY_CONSTS[optionsMap.behaviourParams.item.overlay.hoveringBehaviour];\n    const { NO_EFFECT } = GALLERY_CONSTS[optionsMap.behaviourParams.item.overlay.hoverAnimation];\n\n    if (hoveringBehaviour === NEVER_SHOW) {\n      return false;\n    } else if (alwaysShowHover === true) {\n      return true;\n    } else if (isEditMode() && previewHover) {\n      return true;\n    } else if (\n      hoveringBehaviour === APPEARS &&\n      options[optionsMap.behaviourParams.item.overlay.hoverAnimation] === NO_EFFECT &&\n      !this.state.itemWasHovered\n    ) {\n      //when there is no overlayHoverAnimation, we want to render the itemHover only on first hover and on (and not before)\n      //when there is a specific overlayHoverAnimation, to support the animation we should render the itemHover before any hover activity.\n      return false;\n    } else if (utils.isMobile()) {\n      return this.shouldShowHoverOnMobile();\n    } else {\n      return true;\n    }\n  }\n\n  //---------------------------------------| COMPONENTS |-----------------------------------------//\n\n  getItemHover(imageDimensions) {\n    const { customComponents, ...props } = this.props;\n\n    const shouldHover = this.shouldHover();\n    return (\n      shouldHover && (\n        <ItemHover\n          {...props}\n          forceShowHover={this.simulateOverlayHover()}\n          isCurrentHover={this.simulateHover()}\n          imageDimensions={imageDimensions}\n          itemWasHovered={this.state.itemWasHovered}\n          key=\"hover\"\n          actions={{\n            handleItemMouseDown: this.handleItemMouseDown,\n            handleItemMouseUp: this.handleItemMouseUp,\n          }}\n          renderCustomInfo={\n            customComponents.customHoverRenderer\n              ? () => customComponents.customHoverRenderer(getCustomInfoRendererProps(this.props))\n              : null\n          }\n        ></ItemHover>\n      )\n    );\n  }\n\n  getImageItem(imageDimensions) {\n    const props = utils.pick(this.props, [\n      'gotFirstScrollEvent',\n      'alt',\n      'title',\n      'description',\n      'id',\n      'idx',\n      'options',\n      'createUrl',\n      'createMagnifiedUrl',\n      'settings',\n      'isPrerenderMode',\n      'isTransparent',\n      'style',\n      'hasSecondaryMedia',\n      'secondaryMediaItem',\n      'customComponents',\n    ]);\n\n    return (\n      <ImageWithSecondMedia\n        {...props}\n        key=\"imageItem\"\n        imageDimensions={imageDimensions}\n        isThumbnail={!!this.props.thumbnailHighlightId}\n        isCurrentHover={this.simulateHover()}\n        itemWasHovered={this.state.itemWasHovered}\n        actions={{\n          handleItemMouseDown: this.handleItemMouseDown,\n          handleItemMouseUp: this.handleItemMouseUp,\n          setItemLoaded: this.setItemLoaded,\n        }}\n      />\n    );\n  }\n\n  get3dItem(imageDimensions, itemHover) {\n    const {\n      calculatedAlt,\n      title,\n      description,\n      id,\n      idx,\n      options,\n      createUrl,\n      createMagnifiedUrl,\n      settings,\n      isPrerenderMode,\n      isTransparent,\n      style,\n      customComponents,\n      scene,\n      activeIndex,\n      isCurrentHover,\n    } = this.props;\n\n    return (\n      <ThreeDItem\n        key=\"3dItem\"\n        imageDimensions={imageDimensions}\n        itemContainer={this.itemContainer}\n        shouldPlay={this.props.idx === this.props.playing3DIdx}\n        actions={{\n          ...this.props.actions,\n          setItemLoaded: this.setItemLoaded,\n          handleItemMouseDown: this.handleItemMouseDown,\n          handleItemMouseUp: this.handleItemMouseUp,\n        }}\n        hasLink={this.itemHasLink()}\n        hover={itemHover}\n        activeIndex={activeIndex}\n        calculatedAlt={calculatedAlt}\n        createMagnifiedUrl={createMagnifiedUrl}\n        createUrl={createUrl}\n        customComponents={customComponents}\n        title={title}\n        description={description}\n        id={id}\n        idx={idx}\n        isPrerenderMode={isPrerenderMode}\n        isTransparent={isTransparent}\n        options={options}\n        scene={scene}\n        style={style}\n        settings={settings}\n        isCurrentHover={isCurrentHover}\n      />\n    );\n  }\n\n  getVideoItem(imageDimensions, itemHover) {\n    return (\n      <VideoItemWrapper\n        {...this.props}\n        shouldPlay={this.props.idx === this.props.playingVideoIdx}\n        key={'video' + this.props.idx}\n        hover={itemHover}\n        imageDimensions={imageDimensions}\n        hasLink={this.itemHasLink()}\n        isCurrentHover={this.simulateHover()}\n        actions={{\n          ...this.props.actions,\n          setItemLoaded: this.setItemLoaded,\n          handleItemMouseDown: this.handleItemMouseDown,\n          handleItemMouseUp: this.handleItemMouseUp,\n        }}\n      />\n    );\n  }\n\n  getTextItem(imageDimensions) {\n    const props = utils.pick(this.props, [\n      'id',\n      'options',\n      'style',\n      'html',\n      'cropRatio',\n      'isPrerenderMode',\n      'hasSecondaryMedia',\n      'secondaryMediaItem',\n    ]);\n\n    return (\n      <TextWithSecondMedia\n        {...props}\n        key=\"textItem\"\n        imageDimensions={imageDimensions}\n        isCurrentHover={this.simulateHover()}\n        itemWasHovered={this.state.itemWasHovered}\n        actions={{\n          handleItemMouseDown: this.handleItemMouseDown,\n          handleItemMouseUp: this.handleItemMouseUp,\n          setItemLoaded: this.setItemLoaded,\n        }}\n      />\n    );\n  }\n\n  getItemInner() {\n    const { type, style, offset } = this.props;\n    let itemInner;\n\n    const { innerWidth, innerHeight } = style;\n    const { innerTop, innerLeft } = offset;\n\n    const itemStyles = {\n      width: innerWidth,\n      height: innerHeight,\n      marginTop: innerTop,\n      marginLeft: innerLeft,\n    };\n    let itemHover = null;\n    if (this.shouldHover()) {\n      itemHover = this.getItemHover(itemStyles);\n    }\n\n    switch (type) {\n      case 'dummy':\n        itemInner = <div />;\n        break;\n      case 'video':\n        itemInner = this.getVideoItem(itemStyles, itemHover);\n        break;\n      case 'text':\n        itemInner = [this.getTextItem(itemStyles), itemHover];\n        break;\n      case '3d':\n        itemInner = this.get3dItem(itemStyles, itemHover);\n        break;\n      case 'image':\n      case 'picture':\n      default:\n        if (this.props.isVideoPlaceholder) {\n          itemInner = this.getVideoItem(itemStyles, itemHover);\n        } else {\n          itemInner = [this.getImageItem(itemStyles), itemHover];\n        }\n    }\n\n    return itemInner;\n  }\n\n  getRightInfoElementIfNeeded() {\n    if (\n      GALLERY_CONSTS.hasExternalRightPlacement(\n        this.props.options[optionsMap.layoutParams.info.placement],\n        this.props.idx\n      )\n    ) {\n      return this.getExternalInfoElement(\n        GALLERY_CONSTS[optionsMap.layoutParams.info.placement].RIGHT,\n        'gallery-item-right-info'\n      );\n    } else {\n      return null;\n    }\n  }\n\n  getLeftInfoElementIfNeeded() {\n    if (\n      GALLERY_CONSTS.hasExternalLeftPlacement(\n        this.props.options[optionsMap.layoutParams.info.placement],\n        this.props.idx\n      )\n    ) {\n      return this.getExternalInfoElement(\n        GALLERY_CONSTS[optionsMap.layoutParams.info.placement].LEFT,\n        'gallery-item-left-info'\n      );\n    } else {\n      return null;\n    }\n  }\n\n  getBottomInfoElementIfNeeded() {\n    if (\n      GALLERY_CONSTS.hasExternalBelowPlacement(\n        this.props.options[optionsMap.layoutParams.info.placement],\n        this.props.idx\n      )\n    ) {\n      return this.getExternalInfoElement(\n        GALLERY_CONSTS[optionsMap.layoutParams.info.placement].BELOW,\n        'gallery-item-bottom-info'\n      );\n    } else {\n      return null;\n    }\n  }\n\n  getTopInfoElementIfNeeded() {\n    if (\n      GALLERY_CONSTS.hasExternalAbovePlacement(\n        this.props.options[optionsMap.layoutParams.info.placement],\n        this.props.idx\n      )\n    ) {\n      return this.getExternalInfoElement(\n        GALLERY_CONSTS[optionsMap.layoutParams.info.placement].ABOVE,\n        'gallery-item-top-info'\n      );\n    } else {\n      return null;\n    }\n  }\n\n  getExternalInfoElement(placement, elementName) {\n    const { options, customComponents, style } = this.props;\n    if (!customComponents.customInfoRenderer) {\n      return null;\n    }\n    let info = null;\n    //if there is no url for videos and images, we will not render the itemWrapper\n    //but will render the info element if exists, with the whole size of the item\n    const infoHeight = options[optionsMap.layoutParams.info.height] + (this.hasRequiredMediaUrl ? 0 : style.height);\n    const infoWidth = style.infoWidth + (this.hasRequiredMediaUrl ? 0 : style.width);\n\n    const itemExternalInfo = customComponents.customInfoRenderer(getCustomInfoRendererProps(this.props), placement);\n\n    const overrideDeckTransition = GALLERY_CONSTS.isLayout('SLIDESHOW')(this.props.options);\n\n    info = (\n      <div\n        className={'gallery-item-common-info-outer ' + getSlideAnimationClassNames(this.props, overrideDeckTransition)}\n        style={{\n          ...getOuterInfoStyle(placement, options, style.height, options[optionsMap.layoutParams.info.height]),\n        }}\n      >\n        <div\n          style={getInnerInfoStyle(placement, options, infoHeight, infoWidth)}\n          className={'gallery-item-common-info ' + elementName}\n          onClick={this.onItemInfoClick}\n        >\n          {itemExternalInfo}\n        </div>\n      </div>\n    );\n\n    return info;\n  }\n\n  simulateHover() {\n    return (\n      this.state.isCurrentHover ||\n      this.props.options.alwaysShowHover === true ||\n      (isEditMode() && this.props.options.previewHover)\n    );\n  }\n\n  simulateOverlayHover() {\n    return (\n      this.simulateHover() ||\n      this.props.options[optionsMap.behaviourParams.item.overlay.hoveringBehaviour] ===\n        GALLERY_CONSTS[optionsMap.behaviourParams.item.overlay.hoveringBehaviour].ALWAYS_SHOW\n    );\n  }\n\n  itemHasLink() {\n    const { linkData, linkUrl } = this.props;\n    const itemDoesntHaveLink = linkData.type === undefined && (linkUrl === undefined || linkUrl === ''); //when itemClickAction is 'LINK' but no link was added to this specific item\n    return !itemDoesntHaveLink;\n  }\n\n  getItemContainerStyles() {\n    const { idx, activeIndex, offset, style, options, settings = {} } = this.props;\n    const itemSpacing = options[optionsMap.layoutParams.structure.itemSpacing];\n    const slideAnimation = options[optionsMap.behaviourParams.gallery.horizontal.slideAnimation];\n    const isRTL =\n      options[optionsMap.behaviourParams.gallery.layoutDirection] ===\n      GALLERY_CONSTS[optionsMap.behaviourParams.gallery.layoutDirection].RIGHT_TO_LEFT;\n    const scrollDirection = options[optionsMap.layoutParams.structure.scrollDirection];\n    const containerStyleByoptions = getContainerStyle(options);\n\n    const itemStyles = {\n      overflowY: 'hidden',\n      position: 'absolute',\n      bottom: 'auto',\n      margin:\n        scrollDirection === GALLERY_CONSTS[optionsMap.layoutParams.structure.scrollDirection].HORIZONTAL\n          ? itemSpacing / 2 + 'px'\n          : 0,\n    };\n\n    const { avoidInlineStyles } = settings;\n\n    const hideOnSSR = this.props.isPrerenderMode && !this.props.settings.disableSSROpacity;\n    const opacityStyles = avoidInlineStyles\n      ? {}\n      : {\n          opacity: hideOnSSR ? 0 : 1,\n          display: hideOnSSR ? 'none' : 'block',\n          transition: 'opacity .2s ease',\n        };\n\n    const layoutStyles = avoidInlineStyles\n      ? {}\n      : {\n          top: offset.top,\n          left: isRTL ? 'auto' : offset.left,\n          right: !isRTL ? 'auto' : offset.left,\n          width: style.width + style.infoWidth,\n          height: style.height + style.infoHeight,\n        };\n\n    let slideAnimationStyles;\n    switch (slideAnimation) {\n      case GALLERY_CONSTS[optionsMap.behaviourParams.gallery.horizontal.slideAnimation].FADE:\n        slideAnimationStyles = {\n          left: isRTL ? 'auto' : 0,\n          right: !isRTL ? 'auto' : 0,\n          pointerEvents: activeIndex === idx ? 'auto' : 'none',\n          zIndex: activeIndex === idx ? 0 : 1,\n        };\n        break;\n      case GALLERY_CONSTS[optionsMap.behaviourParams.gallery.horizontal.slideAnimation].DECK:\n        slideAnimationStyles = {\n          left: isRTL ? 'auto' : 0,\n          right: !isRTL ? 'auto' : 0,\n          pointerEvents: activeIndex === idx ? 'auto' : 'none',\n          zIndex: Math.sign(activeIndex - idx),\n        };\n        break;\n      default:\n        slideAnimationStyles = {};\n    }\n\n    const transitionStyles =\n      this.state.loaded && (isEditMode() || isPreviewMode())\n        ? {\n            transition: 'all .4s ease',\n            transitionProperty: 'top, left, width, height, opacity',\n          }\n        : {\n            transition: 'none',\n          };\n\n    const itemContainerStyles = {\n      ...itemStyles,\n      ...layoutStyles,\n      ...containerStyleByoptions,\n      ...transitionStyles,\n      ...opacityStyles,\n      ...slideAnimationStyles,\n    };\n\n    return itemContainerStyles;\n  }\n\n  getItemWrapperStyles() {\n    const { createUrl, options, style, type, offset } = this.props;\n    const { height, width, innerWidth, innerHeight } = style;\n    const { innerTop, innerLeft } = offset;\n    let styles = {};\n    if (type === 'text') {\n      styles.backgroundColor =\n        options[optionsMap.layoutParams.crop.method] !== GALLERY_CONSTS[optionsMap.layoutParams.crop.method].FIT\n          ? 'transparent'\n          : 'inherit';\n    } else {\n      styles.backgroundColor =\n        (options[optionsMap.layoutParams.crop.method] !== GALLERY_CONSTS[optionsMap.layoutParams.crop.method].FIT\n          ? style.bgColor\n          : 'inherit') || 'transparent';\n    }\n\n    if (\n      options[optionsMap.behaviourParams.item.content.hoverAnimation] ===\n      GALLERY_CONSTS[optionsMap.behaviourParams.item.content.hoverAnimation].MAIN_COLOR\n    ) {\n      styles = {\n        ...styles,\n        background: `url(${createUrl(GALLERY_CONSTS.urlSizes.PIXEL, GALLERY_CONSTS.urlTypes.HIGH_RES)})`,\n        backgroundSize: `${innerWidth}px ${innerHeight}px`,\n        backgroundRepeat: 'no-repeat',\n        backgroundPosition: `top ${innerTop}px left ${innerLeft}px`,\n      };\n    }\n    const { TILT } = GALLERY_CONSTS[optionsMap.behaviourParams.item.content.hoverAnimation];\n    if (options[optionsMap.behaviourParams.item.content.hoverAnimation] === TILT) {\n      styles['--tiltAngleValue'] = options[optionsMap.behaviourParams.item.content.tiltAngleValue];\n    }\n    styles.height = height + 'px';\n    styles.width = width + 'px';\n    styles.margin = -options[optionsMap.stylingParams.itemBorderWidth] + 'px';\n\n    return styles;\n  }\n\n  getItemAriaLabel() {\n    const { type, alt, htmlContent, options } = this.props;\n    const mapTypeToLabel = {\n      dummy: '',\n      text: htmlContent,\n      video: alt || type || '',\n      image: alt || type || '',\n    };\n    const label = mapTypeToLabel[type];\n    return label + (options.isStoreGallery ? ', Buy Now' : '');\n  }\n\n  isItemClickable(options) {\n    const itemDoesntHaveLink = !this.itemHasLink(); //when itemClickAction is 'LINK' but no link was added to this specific item\n\n    return options[optionsMap.behaviourParams.item.clickAction] ===\n      GALLERY_CONSTS[optionsMap.behaviourParams.item.clickAction].NOTHING ||\n      (options[optionsMap.behaviourParams.item.clickAction] ===\n        GALLERY_CONSTS[optionsMap.behaviourParams.item.clickAction].LINK &&\n        itemDoesntHaveLink)\n      ? false\n      : true;\n  }\n\n  getItemContainerClass() {\n    const { options } = this.props;\n    const contentPlacementAnimation = options[optionsMap.behaviourParams.item.content.placementAnimation];\n    const overlayHoverAnimation = options[optionsMap.behaviourParams.item.overlay.hoverAnimation];\n    const contentHoverAnimation = options[optionsMap.behaviourParams.item.content.hoverAnimation];\n    const { FADE_IN, EXPAND, SLIDE_UP, SLIDE_RIGHT, SLIDE_DOWN, SLIDE_LEFT } =\n      GALLERY_CONSTS[optionsMap.behaviourParams.item.overlay.hoverAnimation];\n    const { MAIN_COLOR, ZOOM_IN, TILT, BLUR, GRAYSCALE, SHRINK, INVERT, COLOR_IN, DARKENED } =\n      GALLERY_CONSTS[optionsMap.behaviourParams.item.content.hoverAnimation];\n\n    const isHovered = this.simulateHover();\n    const classNames = {\n      'gallery-item-container': true,\n      'item-container-regular': !isHovered,\n      'item-container-hover': isHovered,\n\n      'has-custom-focus': true,\n      visible: true,\n      'pro-gallery-highlight': this.isHighlight(),\n      clickable: this.isItemClickable(options),\n      'simulate-hover': this.simulateHover(),\n      'hide-hover': !this.simulateHover() && utils.isMobile(),\n      'invert-hover':\n        options[optionsMap.behaviourParams.item.overlay.hoveringBehaviour] ===\n        GALLERY_CONSTS[optionsMap.behaviourParams.item.overlay.hoveringBehaviour].DISAPPEARS,\n\n      //animations\n      'animation-slide':\n        contentPlacementAnimation === GALLERY_CONSTS[optionsMap.behaviourParams.item.content.placementAnimation].SLIDE,\n\n      //overlay animations\n      'hover-animation-fade-in': overlayHoverAnimation === FADE_IN,\n      'hover-animation-expand': overlayHoverAnimation === EXPAND,\n      'hover-animation-slide-up': overlayHoverAnimation === SLIDE_UP,\n      'hover-animation-slide-right': overlayHoverAnimation === SLIDE_RIGHT,\n      'hover-animation-slide-down': overlayHoverAnimation === SLIDE_DOWN,\n      'hover-animation-slide-left': overlayHoverAnimation === SLIDE_LEFT,\n\n      //image hover animations\n      'main-color-on-hover': contentHoverAnimation === MAIN_COLOR,\n      'zoom-in-on-hover': contentHoverAnimation === ZOOM_IN,\n      'tilt-on-hover': contentHoverAnimation === TILT,\n      'blur-on-hover': contentHoverAnimation === BLUR,\n      'grayscale-on-hover': contentHoverAnimation === GRAYSCALE,\n      'shrink-on-hover': contentHoverAnimation === SHRINK,\n      'invert-on-hover': contentHoverAnimation === INVERT,\n      'color-in-on-hover': contentHoverAnimation === COLOR_IN,\n      'darkened-on-hover': contentHoverAnimation === DARKENED,\n\n      'pro-gallery-mobile-indicator': utils.isMobile(),\n    };\n    const strClass = Object.entries(classNames)\n      .map(([classname, isNeeded]) => (isNeeded ? classname : false))\n      .filter(Boolean)\n      .join(' ');\n\n    return strClass;\n  }\n\n  getItemWrapperClass() {\n    const { options, type } = this.props;\n    const classes = ['gallery-item-wrapper', 'visible'];\n\n    if (options[optionsMap.layoutParams.crop.enable]) {\n      classes.push('cube-type-' + options[optionsMap.layoutParams.crop.method].toLowerCase());\n    }\n    if (type === 'text') {\n      classes.push('gallery-item-wrapper-text');\n    }\n\n    classes.push(getSlideAnimationClassNames(this.props));\n    return classes.join(' ');\n  }\n\n  getItemContainerTabIndex() {\n    const tabIndex = this.isHighlight()\n      ? utils.getTabIndex('currentThumbnail')\n      : this.props.activeIndex === this.props.idx\n      ? utils.getTabIndex('currentGalleryItem')\n      : -1;\n    return tabIndex;\n  }\n\n  //-----------------------------------------| REACT |--------------------------------------------//\n\n  componentDidMount() {\n    if (utils.isMobile() && typeof React.initializeTouchEvents === 'function') {\n      try {\n        React.initializeTouchEvents(true);\n      } catch (e) {\n        console.error(e);\n      }\n    }\n\n    window.addEventListener('current_hover_change', this.checkIfCurrentHoverChanged);\n  }\n\n  componentWillUnmount() {\n    clearTimeout(this.itemLoadedTimeout);\n    window.removeEventListener('current_hover_change', this.checkIfCurrentHoverChanged);\n  }\n\n  componentDidUpdate(prevProps) {\n    changeActiveElementIfNeeded({\n      prevProps,\n      currentProps: this.props,\n      itemActionRef: this.itemActionRef,\n    });\n  }\n\n  checkIfCurrentHoverChanged(e) {\n    if (e.galleryId === this.props.galleryId) {\n      if (!this.state.isCurrentHover && e.currentHoverIdx === this.props.idx) {\n        this.setState({\n          isCurrentHover: true,\n          itemWasHovered: true,\n        });\n      } else if (this.state.isCurrentHover && e.currentHoverIdx !== this.props.idx) {\n        this.setState({\n          isCurrentHover: false,\n        });\n      }\n    }\n  }\n\n  onContextMenu(e) {\n    if (!utils.isDev() && this.props.options[optionsMap.behaviourParams.gallery.blockContextMenu]) {\n      e.preventDefault(e);\n    }\n  }\n\n  getItemAriaRole() {\n    switch (this.props.options[optionsMap.behaviourParams.item.clickAction]) {\n      case GALLERY_CONSTS[optionsMap.behaviourParams.item.clickAction].ACTION:\n        return 'button';\n      case GALLERY_CONSTS[optionsMap.behaviourParams.item.clickAction].LINK:\n        return 'link';\n      default:\n        return '';\n    }\n  }\n\n  getItemAriaHaspopup() {\n    switch (this.props.options.itemClick) {\n      case 'expand':\n      case 'fullscreen':\n        return true;\n      default:\n        return false;\n    }\n  }\n\n  onContainerKeyUp(e) {\n    const clickTarget = 'item-container';\n    switch (e.keyCode || e.charCode) {\n      case 32: //space\n      case 13: //enter\n        e.stopPropagation();\n        this.onItemClick(e, clickTarget, false); //pressing enter or space always behaves as click on main image, even if the click is on a thumbnail\n        if (this.shouldUseDirectLink()) {\n          this.itemAnchor.click(); // when directLink, we want to simulate the 'enter' or 'space' press on an <a> element\n        }\n        return false;\n      case 27: //esc\n        // The first ESC press removes the hover effect, the second removes focus\n        if (this.state.isCurrentHover) {\n          this.props.actions.eventsListener(GALLERY_CONSTS.events.HOVER_SET, -1);\n        } else {\n          e.target.blur();\n          this.props.actions.eventsListener(GALLERY_CONSTS.events.ITEM_LOST_FOCUS, this.props);\n        }\n        return false;\n      default:\n        return true;\n    }\n  }\n\n  composeItem() {\n    const { photoId, id, hash, idx, options, type, url } = this.props;\n\n    //if (there is an url for video items and image items) OR text item (text item do not use media url)\n    this.hasRequiredMediaUrl = url || type === 'text';\n    //if info placement !== OVERLAY and !this.hasRequiredMediaUrl, we will NOT render the itemWrapper (but will render the info element with the whole size of the item)\n    const isItemWrapperEmpty =\n      options[optionsMap.layoutParams.info.placement] !==\n        GALLERY_CONSTS[optionsMap.layoutParams.info.placement].OVERLAY && !this.hasRequiredMediaUrl;\n    const itemAriaRole = this.getItemAriaRole();\n    const itemAriaLabel = this.getItemAriaLabel();\n    const itemAriaHaspopup = this.getItemAriaHaspopup();\n    const Element = this.props.elementsOverride?.item || 'div';\n    const innerDiv = (\n      <Element\n        className={this.getItemContainerClass()}\n        onContextMenu={(e) => this.onContextMenu(e)}\n        id={cssScrollHelper.getSellectorDomId(this.props)}\n        ref={this.itemContainer}\n        onMouseEnter={this.onMouseEnter}\n        onMouseLeave={this.onMouseLeave}\n        onFocus={this.onFocus}\n        onBlur={this.onBlur} // The onblur event is the opposite of the onfocus event.\n        data-hash={hash}\n        data-id={photoId}\n        data-idx={idx}\n        data-hook=\"item-container\"\n        key={'item-container-' + id}\n        style={this.getItemContainerStyles()}\n        onKeyUp={this.onContainerKeyUp}\n        onClick={this.onItemWrapperClick}\n      >\n        {this.props.disableItemFocus ? null : (\n          <div\n            data-idx={idx}\n            id={'item-action-' + id}\n            className=\"item-action\"\n            ref={(ref) => (this.itemActionRef = ref)}\n            onKeyUp={this.onContainerKeyUp}\n            tabIndex={this.getItemContainerTabIndex()}\n            onFocus={this.onFocus}\n            onBlur={this.onBlur}\n            data-hook={'item-action'}\n            {...(itemAriaLabel && { ['aria-label']: itemAriaLabel })}\n            {...(itemAriaRole && { role: itemAriaRole })}\n            {...(itemAriaHaspopup && { ['aria-haspopup']: itemAriaHaspopup ? 'dialog' : '' })}\n          ></div>\n        )}\n        {this.getTopInfoElementIfNeeded()}\n        {this.getLeftInfoElementIfNeeded()}\n        <div\n          style={{\n            ...getImageStyle(this.props.options),\n            ...(GALLERY_CONSTS.hasExternalRightPlacement(\n              this.props.options[optionsMap.layoutParams.info.placement],\n              this.props.idx\n            ) && { float: 'left' }),\n            ...(GALLERY_CONSTS.hasExternalLeftPlacement(\n              this.props.options[optionsMap.layoutParams.info.placement],\n              this.props.idx\n            ) && { float: 'right' }),\n          }}\n        >\n          {!isItemWrapperEmpty && (\n            <div\n              data-hook=\"item-wrapper\"\n              className={this.getItemWrapperClass()}\n              key={'item-wrapper-' + id}\n              id={'item-wrapper-' + id}\n              style={this.getItemWrapperStyles()}\n            >\n              {this.getItemInner()}\n            </div>\n          )}\n        </div>\n        {this.getRightInfoElementIfNeeded()}\n        {this.getBottomInfoElementIfNeeded()}\n      </Element>\n    );\n    const handleKeyDown = (e) => {\n      /* Relvenat only for Screen-Reader case:\n      Screen-Reader ignores the tabIdex={-1} and therefore stops and focuses on the <a> tag keyDown event,\n      so it will not go deeper to the item-container keyDown event.\n      */\n      this.onAnchorKeyDown(e);\n    };\n    const handleFocus = () => {\n      onAnchorFocus({\n        itemAnchor: this.itemAnchor,\n        enableExperimentalFeatures: this.props.enableExperimentalFeatures,\n        itemContainer: this.itemContainer,\n      });\n    };\n    const linkParams = getLinkParams(this.props);\n    const elementProps = {\n      ref: (e) => (this.itemAnchor = e),\n      'data-id': photoId,\n      className: 'item-link-wrapper',\n      'data-idx': idx,\n      'data-hook': 'item-link-wrapper',\n      onFocus: handleFocus,\n      tabIndex: -1,\n      onKeyDown: handleKeyDown,\n    };\n    if (linkParams?.href?.length > 0) {\n      return (\n        <a key={'item-container-link-' + id} {...elementProps} {...linkParams}>\n          {innerDiv}\n        </a>\n      );\n    } else {\n      return (\n        <div key={'item-container-div-' + id} {...elementProps}>\n          {innerDiv}\n        </div>\n      );\n    }\n  }\n\n  //-----------------------------------------| RENDER |--------------------------------------------//\n\n  render() {\n    return this.composeItem();\n  }\n}\n\nexport default ItemView;\n/* eslint-enable prettier/prettier */\n","import { GALLERY_CONSTS, VirtualizationSettings, Options, optionsMap } from 'pro-gallery-lib';\n\nexport function getItemsInViewportOrMarginByActiveGroup({\n  groups,\n  options,\n  virtualizationSettings,\n  galleryWidth,\n  galleryHeight,\n  activeIndex,\n}: {\n  groups: any[];\n  options: Options;\n  virtualizationSettings?: VirtualizationSettings;\n  galleryWidth: number;\n  galleryHeight: number;\n  activeIndex: number;\n}): { group: any; shouldRender: boolean }[] {\n  const {\n    enabled = false,\n    forwardItemMargin = 3,\n    backwardItemMargin = 3,\n    forwardItemScrollMargin = 10,\n    backwardItemScrollMargin = 10,\n  } = virtualizationSettings || {};\n\n  const isHorizontal =\n    options[optionsMap.layoutParams.structure.scrollDirection] ===\n    GALLERY_CONSTS[optionsMap.layoutParams.structure.scrollDirection].HORIZONTAL;\n  const isScrollable =\n    !isHorizontal ||\n    options[optionsMap.behaviourParams.gallery.horizontal.slideAnimation] ===\n      GALLERY_CONSTS[optionsMap.behaviourParams.gallery.horizontal.slideAnimation].SCROLL;\n  if (!enabled) {\n    return groups.map((group) => ({\n      group,\n      shouldRender: true,\n    }));\n  }\n  const size = isHorizontal ? galleryWidth : galleryHeight;\n  const unit = isHorizontal ? 'width' : 'height';\n  const rightRenderBuffer = isScrollable ? forwardItemScrollMargin : forwardItemMargin;\n  const leftRenderBuffer = isScrollable ? backwardItemScrollMargin : backwardItemMargin;\n\n  const activeGroupIndex = groups.findIndex((group) => {\n    const { items } = group;\n    const first = items[0];\n    const last = items[items.length - 1];\n    const firstIndex = first.idx ?? first.fullscreenIdx;\n    const lastIndex = last.idx ?? last.fullscreenIdx;\n    return firstIndex <= activeIndex && lastIndex >= activeIndex;\n  });\n\n  const activeGroup = groups[activeGroupIndex];\n  const activeGroupPrecOfScreen = activeGroup[unit] / size;\n  let accoumilatedRightMargin = activeGroupPrecOfScreen;\n  let accoumilatedLeftMargin = activeGroupPrecOfScreen;\n  const groupsToRender: any[] = [activeGroup];\n  for (\n    let index = 1;\n    accoumilatedRightMargin < rightRenderBuffer || accoumilatedLeftMargin < leftRenderBuffer;\n    index++\n  ) {\n    const groupToRight = groups[activeGroupIndex + index];\n    const groupToLeft = groups[activeGroupIndex - index];\n    if (groupToRight && accoumilatedRightMargin < rightRenderBuffer) {\n      const groupPrecOfScreen = groupToRight[unit] / size;\n      accoumilatedRightMargin += groupPrecOfScreen;\n      groupsToRender.push(groupToRight);\n    }\n    if (groupToLeft && accoumilatedLeftMargin < leftRenderBuffer) {\n      const groupPrecOfScreen = groupToLeft[unit] / size;\n      accoumilatedLeftMargin += groupPrecOfScreen;\n      groupsToRender.push(groupToLeft);\n    }\n    if (!groupToLeft && !groupToRight) {\n      break;\n    }\n  }\n  return groups.map((group) => {\n    return { group, shouldRender: groupsToRender.includes(group) };\n  });\n}\n\nexport function getItemsInViewportOrMarginByScrollLocation({\n  items,\n  options,\n  virtualizationSettings,\n  galleryWidth,\n  galleryHeight,\n  scrollPosition,\n}: {\n  items: any[];\n  options: Options;\n  virtualizationSettings?: VirtualizationSettings;\n  galleryWidth: number;\n  galleryHeight: number;\n  scrollPosition: number;\n}): { item: any; shouldRender: boolean }[] {\n  const { enabled = false, forwardItemScrollMargin = 10, backwardItemScrollMargin = 10 } = virtualizationSettings || {};\n\n  if (!enabled) {\n    return items.map((item) => ({\n      item,\n      shouldRender: true,\n    }));\n  }\n  const isHorizontal =\n    options[optionsMap.layoutParams.structure.scrollDirection] ===\n    GALLERY_CONSTS[optionsMap.layoutParams.structure.scrollDirection].HORIZONTAL;\n  const size = isHorizontal ? galleryWidth : galleryHeight;\n  const unit = isHorizontal ? 'width' : 'height';\n\n  function shouldRenderItem(item) {\n    const group = item.group;\n    const locationUnit = unit === 'height' ? 'top' : 'left';\n    const location = group[locationUnit];\n    const locationEnd = location + group[unit];\n    const viewportStart = scrollPosition - size * backwardItemScrollMargin;\n    const viewportEnd = scrollPosition + size * forwardItemScrollMargin;\n    return location > viewportStart && locationEnd < viewportEnd;\n  }\n  return items.map((item) => ({\n    item,\n    shouldRender: shouldRenderItem(item),\n  }));\n}\n","import React from 'react';\nimport { window, utils, GALLERY_CONSTS, optionsMap } from 'pro-gallery-lib';\nimport GalleryDebugMessage from './galleryDebugMessage.js';\nimport itemView from '../../item/itemView.js';\nimport { getItemsInViewportOrMarginByScrollLocation } from '../../helpers/virtualization.js';\n\nclass GalleryView extends React.Component {\n  constructor(props) {\n    super(props);\n    this.handleKeys = this.handleKeys.bind(this);\n    this.showMoreItems = this.showMoreItems.bind(this);\n    this.onLoadMoreButtonKeyDown = this.onLoadMoreButtonKeyDown.bind(this);\n    this.onLoadMoreButtonKeyUp = this.onLoadMoreButtonKeyUp.bind(this);\n    this.createGalleryConfig = this.createGalleryConfig.bind(this);\n    this.screenLogs = this.screenLogs.bind(this);\n    this.createGallery = this.createGallery.bind(this);\n\n    this.id = Date.now() + '|' + Math.floor(Math.random() * 10000);\n\n    this.state = {\n      activeIndex: 0,\n    };\n  }\n\n  handleKeys(e) {\n    const activeItemIdx = window.document.activeElement.getAttribute('data-idx');\n\n    if (activeItemIdx) {\n      const findNeighborItem =\n        this.props.actions.findNeighborItem || this.props.galleryStructure.findNeighborItem || (() => {}); //temp change for tests to pass\n\n      const idx = Number(activeItemIdx);\n\n      let newIdx = -1;\n\n      switch (e.keyCode || e.charCode) {\n        case 38: //up\n          newIdx = findNeighborItem(idx, 'up');\n          break;\n        case 37: //left\n          newIdx = findNeighborItem(\n            idx,\n            this.props.options[optionsMap.behaviourParams.gallery.layoutDirection] ===\n              GALLERY_CONSTS[optionsMap.behaviourParams.gallery.layoutDirection].RIGHT_TO_LEFT\n              ? 'right'\n              : 'left'\n          );\n          break;\n        case 40: //down\n          newIdx = findNeighborItem(idx, 'down');\n          if (this.props.totalItemsCount - 1 === newIdx && newIdx === this.state.activeIndex) {\n            // If we are on the last item in the gallery and we pressed the down arrow\n            // we want to move the focus to the out0fGallery element\n            e.stopPropagation();\n            utils.focusGalleryElement(this.props.outOfViewComponent);\n            return false;\n          }\n          break;\n        case 39: //right\n          newIdx = findNeighborItem(\n            idx,\n            this.props.options[optionsMap.behaviourParams.gallery.layoutDirection] ===\n              GALLERY_CONSTS[optionsMap.behaviourParams.gallery.layoutDirection].RIGHT_TO_LEFT\n              ? 'left'\n              : 'right'\n          );\n          break;\n        case 27: //esc\n          // e.stopPropagation();\n          // utils.focusGalleryElement(this.props.galleryContainerRef);\n          return false;\n      }\n\n      //if nextIdx is below the lastVisibleItemIdx (higher idx), we will ignore the findNeighborItem answer and stay on the same item\n      if (newIdx > this.lastVisibleItemIdx()) {\n        newIdx = idx;\n      }\n\n      if (newIdx >= 0) {\n        e.preventDefault();\n        e.stopPropagation();\n        utils.setStateAndLog(this, 'Set Gallery Current Item', {\n          activeIndex: newIdx,\n        });\n        return false;\n      }\n    }\n\n    return true;\n  }\n\n  lastVisibleItemIdxInHeight(height) {\n    for (let i = this.props.galleryStructure.items.length - 1; i >= 0; i--) {\n      const item = this.props.galleryStructure.items[i];\n      const isVisible = item.offset.top < height;\n      if (isVisible) {\n        return i;\n      }\n    }\n    return this.items.length - 1;\n  }\n\n  lastVisibleItemIdx() {\n    let galleryHeight = this.props.displayShowMore ? this.props.container.height : this.props.galleryStructure.height;\n    //the item must be visible and above the show more button\n    return this.lastVisibleItemIdxInHeight(galleryHeight - 100);\n  }\n  showMoreItems() {\n    if (this.props.settings?.isAccessible) {\n      // tal - I left this check since we do not want to focus the last item in non-accessibility mode\n      //find the last visible item and focus on it\n      try {\n        const lastItemIdx = this.lastVisibleItemIdx();\n        utils.setStateAndLog(\n          this,\n          'Focus on Last Gallery Item',\n          {\n            activeIndex: lastItemIdx + 1,\n          },\n          () => {\n            this.props.actions.toggleLoadMoreItems();\n          }\n        );\n      } catch (e) {\n        console.warn('showMoreItems: Cannot find item to focus', e);\n      }\n    } else {\n      this.props.actions.toggleLoadMoreItems();\n    }\n  }\n\n  onLoadMoreButtonKeyDown(e) {\n    switch (e.keyCode || e.charCode) {\n      case 32: // space\n      case 13: // enter\n        e.preventDefault();\n        e.stopPropagation();\n        return false;\n      default:\n        break;\n    }\n  }\n\n  onLoadMoreButtonKeyUp(e) {\n    switch (e.keyCode || e.charCode) {\n      case 32: // space\n      case 13: // enter\n        e.stopPropagation();\n        utils.setStateAndLog(this, 'Set Gallery Current Item', {\n          activeIndex: this.lastVisibleItemIdx(),\n        });\n        // this is to make sure that the focus is moved to the items first before the \"load more\" button disappears\n        // other wise the gallery will lose focus to the body\n        setTimeout(() => {\n          this.props.actions.toggleLoadMoreItems();\n        }, 0);\n        return false;\n      default:\n        break;\n    }\n  }\n\n  createGallery(showMore) {\n    const { options, settings, container, galleryStructure, getVisibleItems, virtualizationSettings, scrollTop } =\n      this.props;\n    const galleryConfig = this.createGalleryConfig();\n    const showMoreContainerHeight = 138; //according to the scss\n    const debugMsg = <GalleryDebugMessage {...this.props.debug} />;\n\n    let galleryHeight;\n    if (showMore) {\n      galleryHeight = container.galleryHeight - showMoreContainerHeight;\n    } else {\n      galleryHeight = galleryStructure.height + 'px';\n    }\n    const galleryWidth = this.props.isPrerenderMode\n      ? 'auto'\n      : this.props.container.galleryWidth - options[optionsMap.layoutParams.structure.itemSpacing];\n\n    const items = getVisibleItems(galleryStructure.galleryItems, container, this.props.isPrerenderMode);\n    const itemsWithVirtualizationData = getItemsInViewportOrMarginByScrollLocation({\n      items,\n      options,\n      virtualizationSettings,\n      galleryHeight: Math.min(galleryStructure.height, container.screen?.height || galleryStructure.height),\n      scrollPosition: scrollTop || 0,\n    });\n    const layout = itemsWithVirtualizationData.map(({ item, shouldRender }, index) => {\n      const itemProps = item.renderProps({\n        ...galleryConfig,\n        visible: item.isVisible,\n        key: `itemView-${item.id}-${index}`,\n      });\n      return React.createElement(itemView, {\n        ...itemProps,\n        type: shouldRender ? itemProps.type : 'dummy',\n      });\n    });\n\n    return (\n      <div\n        id={this.props.galleryContainerId}\n        className={\n          'pro-gallery inline-styles ' +\n          (options[optionsMap.layoutParams.structure.scrollDirection] ===\n          GALLERY_CONSTS[optionsMap.layoutParams.structure.scrollDirection].HORIZONTAL\n            ? ' one-row slider hide-scrollbars '\n            : '') +\n          (settings?.isAccessible ? ' accessible ' : '') +\n          (options[optionsMap.behaviourParams.gallery.layoutDirection] ===\n          GALLERY_CONSTS[optionsMap.behaviourParams.gallery.layoutDirection].RIGHT_TO_LEFT\n            ? ' rtl '\n            : ' ltr ')\n        }\n        style={{\n          height: galleryHeight,\n          overflowX: 'hidden',\n          //  width: this.props.container.galleryWidth,\n        }}\n        onKeyDown={this.handleKeys}\n      >\n        <div\n          id={`pro-gallery-margin-container-${this.props.id}`}\n          className={'pro-gallery-margin-container'}\n          style={{\n            margin:\n              (this.props.options.galleryMargin ||\n                this.props.options[optionsMap.layoutParams.structure.gallerySpacing]) + 'px',\n            height: galleryHeight,\n            width: galleryWidth,\n            overflow: 'visible',\n            position: 'relative',\n          }}\n        >\n          {debugMsg}\n          {layout}\n        </div>\n      </div>\n    );\n  }\n\n  createGalleryConfig() {\n    return {\n      scrollingElement: this.props.scrollingElement,\n      scroll: this.props.scroll,\n      container: this.props.container,\n      options: this.props.options,\n      settings: this.props.settings,\n      activeIndex: this.state.activeIndex,\n      customComponents: this.props.customComponents,\n      galleryId: this.props.id,\n      gotFirstScrollEvent: this.props.gotFirstScrollEvent,\n      playingVideoIdx: this.props.playingVideoIdx,\n      playing3DIdx: this.props.playing3DIdx,\n      noFollowForSEO: this.props.noFollowForSEO,\n      isPrerenderMode: this.props.isPrerenderMode,\n      firstUserInteractionExecuted: this.props.firstUserInteractionExecuted,\n      enableExperimentalFeatures: this.props.enableExperimentalFeatures,\n      actions: {\n        eventsListener: this.props.actions.eventsListener,\n      },\n    };\n  }\n\n  screenLogs() {\n    return utils.shouldDebug('screenLogs') ? (\n      <div className=\"screen-logs\">\n        URL width: {utils.parseGetParam('width')}, Container: {JSON.stringify(this.props.container.galleryWidth)},\n        window.document.body.clientWidth {document.body.clientWidth}, window.innerWidth {window.innerWidth},\n        window.screen.width: {window.screen.width}\n      </div>\n    ) : (\n      ''\n    );\n  }\n\n  createShowMoreButton() {\n    if (typeof this.props.customComponents.customLoadMoreRenderer === 'function') {\n      return <div onClick={this.showMoreItems}>{this.props.customComponents.customLoadMoreRenderer(this.props)}</div>;\n    }\n    const { options } = this.props;\n    let showMoreButton = false;\n    const buttonState = this.props.displayShowMore;\n    const shouldShowButton = buttonState && this.props.galleryStructure.height > this.props.container.height;\n\n    if (shouldShowButton) {\n      const buttonText = options[optionsMap.behaviourParams.gallery.vertical.loadMore.text] || 'Load More';\n      showMoreButton = (\n        <div className={'show-more-container' + (utils.isMobile() ? ' pro-gallery-mobile-indicator' : '')}>\n          <button\n            tabIndex={utils.getTabIndex('loadMoreButton')}\n            id={'show-more-' + this.props.id}\n            className=\"show-more\"\n            onClick={this.showMoreItems}\n            onMouseDown={(e) => e.preventDefault()}\n            data-hook=\"show-more\"\n            aria-label={buttonText}\n            onKeyDown={this.onLoadMoreButtonKeyDown}\n            onKeyUp={this.onLoadMoreButtonKeyUp}\n          >\n            {buttonText}\n          </button>\n        </div>\n      );\n    }\n\n    return showMoreButton;\n  }\n\n  //-----------------------------------------| RENDER |--------------------------------------------//\n\n  render() {\n    if (utils.isVerbose()) {\n      console.count('galleryView render');\n      console.time('Rendering Gallery took ');\n      console.log('[DEBUG_RENDER] GalleryView options', this.props.options);\n      console.log(\n        '[DEBUG_RENDER] GalleryView props changed',\n        utils.printableObjectsDiff(this.lastProps || {}, this.props)\n      );\n      this.lastProps = { ...this.props };\n      console.log(\n        '[DEBUG_RENDER] GalleryView state changed',\n        utils.printableObjectsDiff(this.lastState || {}, this.state)\n      );\n      this.lastState = { ...this.state };\n      this.renderCount = (this.renderCount || 0) + 1;\n    }\n\n    const showMore = this.createShowMoreButton();\n    const gallery = this.createGallery(showMore);\n\n    if (utils.isVerbose()) {\n      console.timeEnd('Rendering Gallery took ');\n    }\n    const screenLogs = this.screenLogs();\n\n    return (\n      <div\n        className={'pro-gallery-parent-container'}\n        key={`pro-gallery-${this.id}`}\n        {...utils.getAriaAttributes({\n          proGalleryRole: this.props.proGalleryRole,\n          proGalleryRegionLabel: this.props.proGalleryRegionLabel,\n        })}\n      >\n        {screenLogs}\n        {gallery}\n        {showMore}\n      </div>\n    );\n  }\n}\n\nexport default GalleryView;\n/* eslint-enable prettier/prettier */\n","import React from 'react';\nimport itemView from '../item/itemView.js';\nimport { optionsMap, GALLERY_CONSTS } from 'pro-gallery-lib';\n\nclass GroupView extends React.Component {\n  constructor(props) {\n    super(props);\n    this.displayName = 'GroupView';\n    this.dom = [];\n    this.state = {};\n  }\n\n  createDom(visible, empty) {\n    return this.props.items.map((item) => {\n      const props = item.renderProps({ ...this.props.galleryConfig, visible });\n      return React.createElement(itemView, {\n        ...props,\n        disableItemFocus: this.props.disableItemFocus,\n        type: empty ?? false ? 'dummy' : props.type,\n      });\n    });\n  }\n\n  shouldRender() {\n    const { items } = this.props;\n    if (!items || !items.length || !items[0]) {\n      return false;\n    }\n\n    return true;\n  }\n\n  isVisible() {\n    const { items, galleryConfig } = this.props;\n\n    if (this.props.allowLoop) {\n      const { idx } = items[items.length - 1];\n      const { activeIndex, totalItemsCount } = galleryConfig;\n\n      const distance = activeIndex - idx;\n      const padding = Math.floor(totalItemsCount / 2);\n\n      return Math.abs(distance) <= padding;\n    }\n\n    return true;\n  }\n\n  render() {\n    const { options } = this.props.galleryConfig; //v5 TODO - why is this not from the options in the gallery. this comes from the layouter\n    const isRTL =\n      options[optionsMap.behaviourParams.gallery.layoutDirection] ===\n      GALLERY_CONSTS[optionsMap.behaviourParams.gallery.layoutDirection].RIGHT_TO_LEFT;\n\n    return this.shouldRender() ? (\n      <div\n        key={`group_${this.props.idx}_${this.props.items[0].id}`}\n        data-hook={'group-view'}\n        className={`group-view group-view-${this.props.idx}`}\n        style={{\n          '--group-top': this.props.top + 'px',\n          '--group-left': isRTL ? 'auto' : this.props.left + 'px',\n          '--group-width': this.props.width + 'px',\n          '--group-right': !isRTL ? 'auto' : this.props.left + 'px',\n        }}\n        aria-hidden={this.props.ariaHidden}\n      >\n        {this.createDom(this.isVisible(), this.props.shouldRenderEmpty)}\n      </div>\n    ) : null;\n  }\n}\n\nexport default GroupView;\n","/* eslint-disable */\n/* tslint:disable */\nimport PropTypes from 'prop-types';\nimport React from 'react';\nconst play = ({size, ...props}) => (\n  <svg viewBox=\"0 0 11 14\" fill=\"currentColor\" width={ size || \"11\" } height={ size || \"14\" } {...props}>\n    <g id=\"final\" stroke=\"none\" fill=\"none\" strokeWidth=\"1\" fillRule=\"evenodd\">\n      <g id=\"Pause\" transform=\"translate(-490 -763)\" fill=\"currentColor\">\n        <g id=\"Group-2\" transform=\"translate(470 284)\">\n          <g id=\"Group\" transform=\"translate(20 479)\">\n            <path id=\"play\" d=\"M0.0788076641 0L0 14 10.5 6.81856071z\" />\n          </g>\n        </g>\n      </g>\n    </g>\n  </svg>\n);\nplay.displayName = 'play';\nplay.propTypes = {\n  size: PropTypes.string\n}\nexport default play;\n/* tslint:enable */\n/* eslint-enable */\n","/* eslint-disable */\n/* tslint:disable */\nimport PropTypes from 'prop-types';\nimport React from 'react';\nconst pause = ({size, ...props}) => (\n  <svg viewBox=\"0 0 10 14\" fill=\"currentColor\" width={ size || \"10\" } height={ size || \"14\" } {...props}>\n    <g id=\"final\" stroke=\"none\" fill=\"none\" strokeWidth=\"1\" fillRule=\"evenodd\">\n      <g id=\"Play\" transform=\"translate(-490 -763)\" fill=\"currentColor\">\n        <g id=\"Group-2\" transform=\"translate(470 284)\">\n          <g id=\"Group\" transform=\"translate(20 479)\">\n            <path d=\"M7,0 L10,0 L10,14 L7,14 L7,0 Z M0,0 L3,0 L3,14 L0,14 L0,0 Z\" id=\"_copy_3\" />\n          </g>\n        </g>\n      </g>\n    </g>\n  </svg>\n);\npause.displayName = 'pause';\npause.propTypes = {\n  size: PropTypes.string\n}\nexport default pause;\n/* tslint:enable */\n/* eslint-enable */\n","import React from 'react';\nimport { GALLERY_CONSTS, optionsMap, utils, thumbnailsLogic } from 'pro-gallery-lib';\nimport { GalleryUI } from '../../item/media/GalleryUI.js';\n\nimport TextItem from '../../item/textItem.js';\n\nconst ENTER_KEY = 'Enter';\n\nclass NavigationPanel extends React.Component {\n  constructor(props) {\n    super(props);\n    this.scrollToThumbnail = this.scrollToThumbnail.bind(this);\n  }\n\n  scrollToThumbnail(itemIdx) {\n    this.props.navigationToIdxCB(itemIdx);\n  }\n\n  createThumbnails({ navigationPanelPosition, thumbnailAlignment, options, galleryStructure, settings }) {\n    const clearedGalleryItems = thumbnailsLogic.clearGalleryItems(\n      this.props.items,\n      this.props.galleryStructure.galleryItems\n    );\n    const activeIndex = utils.inRange(this.props.activeIndex, clearedGalleryItems.length);\n\n    const { horizontalThumbnails, items, thumbnailsMargins, thumbnailsStyle, activeIndexOffsetMemory } =\n      thumbnailsLogic.getThumbnailsData({\n        items: this.props.items,\n        activeIndex,\n        options,\n        galleryStructure,\n        thumbnailAlignment,\n        containerHeight: this.props.container.height,\n        containerWidth: this.props.container.width,\n        activeIndexOffsetMemory: this.activeIndexOffsetMemory,\n        prevActiveIndex: this.prevActiveIndex,\n      });\n\n    this.prevActiveIndex = activeIndex;\n    this.activeIndexOffsetMemory = activeIndexOffsetMemory;\n\n    return (\n      <div\n        className={\n          'pro-gallery inline-styles thumbnails-gallery ' +\n          (this.props.domOrder ? 'thumbnails-gallery-' + this.props.domOrder : '') +\n          (horizontalThumbnails ? ' one-row hide-scrollbars ' : '') +\n          (options[optionsMap.behaviourParams.gallery.layoutDirection] ===\n          GALLERY_CONSTS[optionsMap.behaviourParams.gallery.layoutDirection].RIGHT_TO_LEFT\n            ? ' rtl '\n            : ' ltr ') +\n          (settings?.isAccessible ? ' accessible ' : '')\n        }\n        style={{\n          ...(this.props.isPrerenderMode ? { display: 'block' } : {}),\n          width: thumbnailsStyle.width,\n          height: thumbnailsStyle.height,\n          ...thumbnailsMargins,\n          ...getNavigationPanelOnGalleryPositionStyles({\n            galleryThumbnailsAlignment: thumbnailAlignment,\n            navigationPanelPosition,\n          }),\n        }}\n        data-hook=\"gallery-thumbnails\"\n      >\n        <div\n          data-hook=\"gallery-thumbnails-column\"\n          className={'galleryColumn'}\n          key={'thumbnails-column'}\n          style={{ ...thumbnailsStyle }}\n        >\n          {items.map(({ thumbnailItem, location, idx }) => {\n            const highlighted = idx === activeIndex % clearedGalleryItems.length;\n            const itemStyle = {\n              width: options[optionsMap.layoutParams.thumbnails.size],\n              height: options[optionsMap.layoutParams.thumbnails.size],\n              overflow: 'hidden',\n              backgroundImage: `url(${thumbnailItem.createUrl(\n                GALLERY_CONSTS.urlSizes.THUMBNAIL,\n                GALLERY_CONSTS.urlTypes.HIGH_RES\n              )})`,\n              ...location,\n              ...(this.props.isPrerenderMode ? { opacity: 0 } : {}),\n            };\n            return (\n              <div\n                key={'thumbnail-' + thumbnailItem.id + (Number.isInteger(idx) ? '-' + idx : '')}\n                className={\n                  'thumbnailItem ' +\n                  'thumbnail-' +\n                  thumbnailItem.idx +\n                  (highlighted\n                    ? ' pro-gallery-thumbnails-highlighted pro-gallery-highlight' +\n                      (utils.isMobile() ? ' pro-gallery-mobile-indicator' : '')\n                    : '')\n                }\n                data-key={thumbnailItem.id}\n                style={itemStyle}\n                onClick={() => this.scrollToThumbnail(idx)}\n                tabIndex={0}\n                onKeyDown={(e) => {\n                  if (e.key === ENTER_KEY) {\n                    this.scrollToThumbnail(idx);\n                  }\n                }}\n              >\n                {thumbnailItem.type === 'video' &&\n                  options[optionsMap.behaviourParams.item.video.enableThumbnailsPlayButton] && (\n                    <GalleryUI type={'videoPlayButton'} size={'28'} />\n                  )}\n                {thumbnailItem.type === '3d' &&\n                  options[optionsMap.behaviourParams.item.threeDimensionalScene.enableThumbnailsPlayButton] && (\n                    <GalleryUI type={'rotateArrow'} size={'28'} />\n                  )}\n\n                {thumbnailItem.type === 'text' ? (\n                  <TextItem\n                    {...this.props}\n                    {...thumbnailItem.renderProps()}\n                    options={{\n                      ...options,\n                      [optionsMap.layoutParams.crop.method]: GALLERY_CONSTS[optionsMap.layoutParams.crop.method].FILL,\n                      [optionsMap.layoutParams.crop.enable]: true,\n                    }}\n                    actions={{}}\n                    imageDimensions={{\n                      ...itemStyle,\n                      marginTop: 0,\n                      marginLeft: 0,\n                    }}\n                    style={{\n                      ...thumbnailItem.renderProps().style,\n                      ...itemStyle,\n                    }}\n                  />\n                ) : null}\n              </div>\n            );\n          })}\n        </div>\n      </div>\n    );\n  }\n\n  //-----------------------------------------| RENDER |--------------------------------------------//\n\n  render() {\n    const navigationRelevantProps = {\n      navigationPanelPosition: this.props.options[optionsMap.layoutParams.thumbnails.position],\n      thumbnailAlignment: this.props.options[optionsMap.layoutParams.thumbnails.alignment],\n      options: this.props.options,\n      galleryStructure: this.props.galleryStructure,\n      settings: this.props.settings,\n    };\n\n    return this.createThumbnails(navigationRelevantProps);\n  }\n}\n\nconst getHorizontalNavigationPanelDimensions = ({ width, height, galleryHeight, navigationPanelPosition }) => {\n  if (navigationPanelPosition === GALLERY_CONSTS[optionsMap.layoutParams.thumbnails.position].ON_GALLERY) {\n    return {};\n  } else {\n    return { width: width, height: height - galleryHeight };\n  }\n};\nconst getVerticalNavigationPanelDimensions = ({ width, height, galleryWidth, navigationPanelPosition }) => {\n  if (navigationPanelPosition === GALLERY_CONSTS[optionsMap.layoutParams.thumbnails.position].ON_GALLERY) {\n    return {};\n  } else {\n    return { width: width - galleryWidth, height: height };\n  }\n};\nconst getCustomNavigationPanelDimensions = ({\n  galleryHeight,\n  galleryWidth,\n  height,\n  width,\n  galleryThumbnailsAlignment,\n  navigationPanelPosition,\n}) => {\n  switch (galleryThumbnailsAlignment) {\n    case GALLERY_CONSTS[optionsMap.layoutParams.thumbnails.alignment].TOP:\n      return getHorizontalNavigationPanelDimensions(\n        { galleryHeight, galleryWidth, height, width, navigationPanelPosition },\n        false\n      );\n    case GALLERY_CONSTS[optionsMap.layoutParams.thumbnails.alignment].BOTTOM:\n      return getHorizontalNavigationPanelDimensions(\n        { galleryHeight, galleryWidth, height, width, navigationPanelPosition },\n        true\n      );\n    case GALLERY_CONSTS[optionsMap.layoutParams.thumbnails.alignment].RIGHT:\n    case GALLERY_CONSTS[optionsMap.layoutParams.thumbnails.alignment].LEFT:\n      return getVerticalNavigationPanelDimensions({\n        galleryHeight,\n        galleryWidth,\n        height,\n        width,\n        navigationPanelPosition,\n      });\n    default:\n      return false;\n  }\n};\n\nexport const getCustomNavigationPanelInlineStyles = ({\n  galleryHeight,\n  galleryWidth,\n  height,\n  width,\n  galleryThumbnailsAlignment,\n  navigationPanelPosition,\n}) => {\n  return {\n    ...getCustomNavigationPanelDimensions({\n      galleryHeight,\n      galleryWidth,\n      height,\n      width,\n      galleryThumbnailsAlignment,\n      navigationPanelPosition,\n    }),\n    ...getNavigationPanelOnGalleryPositionStyles({\n      galleryThumbnailsAlignment,\n      navigationPanelPosition,\n    }),\n    overflow: 'hidden',\n    float: 'left',\n  };\n};\n\nconst getNavigationPanelOnGalleryPositionStyles = ({ galleryThumbnailsAlignment, navigationPanelPosition }) => {\n  if (navigationPanelPosition === GALLERY_CONSTS[optionsMap.layoutParams.thumbnails.position].ON_GALLERY) {\n    let onGalleryStyles = { position: 'absolute' };\n    onGalleryStyles[galleryThumbnailsAlignment.toLowerCase()] = 0;\n    return onGalleryStyles;\n  }\n};\n\nexport default NavigationPanel;\n","/* eslint-disable */\n/* tslint:disable */\nimport React from 'react';\nexport default ({style}) => (\n<svg className=\"slideshow-arrow\" style={style} width=\"23\" height=\"39\" viewBox=\"0 0 23 39\">\n    <path d=\"M857.005,231.479L858.5,230l18.124,18-18.127,18-1.49-1.48L873.638,248Z\" transform=\"translate(-855 -230)\" />\n</svg>\n);\n/* tslint:enable */\n/* eslint-enable */\n","/* eslint-disable */\n/* tslint:disable */\nimport React from 'react';\nexport default ({style}) => (\n<svg className=\"slideshow-arrow\" style={style} width=\"40px\" height=\"33px\" viewBox=\"0 0 40 33\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlnsXlink=\"http://www.w3.org/1999/xlink\">\n    <g id=\"Page-1\" stroke=\"none\" strokeWidth=\"1\" fillRule=\"evenodd\">\n        <g id=\"Artboard-Copy-93\" transform=\"translate(-28.000000, -32.000000)\" fillRule=\"nonzero\">\n            <polygon id=\"4\" points=\"51.5515789 32 67.6 48.0484211 51.5515789 64.0968421 46.9663158 59.5115789 54.9880947 51.4881326 28 51.4897902 28 44.9245271 55.30728 44.9243284 46.9663158 36.5852632\"></polygon>\n        </g>\n    </g>\n</svg>\n);\n\n/* tslint:enable */\n/* eslint-enable */\n","/* eslint-disable */\n/* tslint:disable */\nimport React from 'react';\nexport default ({style}) => (\n<svg className=\"slideshow-arrow\" style={style} width=\"25px\" height=\"42px\" viewBox=\"0 0 25 42\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlnsXlink=\"http://www.w3.org/1999/xlink\">\n    <g id=\"Page-1\" stroke=\"none\" strokeWidth=\"1\" fillRule=\"evenodd\">\n        <g id=\"Artboard-Copy-97\" transform=\"translate(-36.000000, -27.000000)\" fillRule=\"nonzero\">\n            <path d=\"M37.2206398,28.239114 C38.8026583,26.647265 41.3436172,26.5881667 42.9967317,28.0675785 L43.1590153,28.2206482 L59.1611748,44.1233571 C61.1319602,46.0819718 61.1995454,49.2312919 59.3527322,51.2754674 L59.1795659,51.4581932 L43.1590166,67.3793505 C41.51408,69.0140701 38.8553922,69.0057967 37.2206146,67.3608606 C35.638653,65.7689547 35.5953873,63.2276769 37.0850712,61.5838107 L37.2391492,61.4224839 L50.946,47.799 L37.2391492,34.1775161 C35.7003375,32.6482622 35.5938031,30.2229032 36.9247365,28.5696317 L37.0675472,28.4014262 L37.2206398,28.239114 Z\" id=\"8\"></path>\n        </g>\n    </g>\n</svg>\n);\n\n/* tslint:enable */\n/* eslint-enable */\n","/* eslint-disable */\n/* tslint:disable */\nimport React from 'react';\nexport default ({ style }) => (\n  <svg className=\"slideshow-arrow\" style={style} width=\"39px\" height=\"11px\" viewBox=\"0 0 39 11\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlnsXlink=\"http://www.w3.org/1999/xlink\">\n    <g stroke=\"none\" strokeWidth=\"1\" fillRule=\"evenodd\">\n      <g transform=\"translate(-29.000000, -43.000000)\" fillRule=\"nonzero\">\n        <polygon points=\"59.79296 43 67.1767272 48.2074587 59.79296 53.3482492 59.792 49.24 29 49.2402303 29 47.3156703 59.792 47.315\"></polygon>\n      </g>\n    </g>\n  </svg>\n);\n\n/* tslint:enable */\n/* eslint-enable */\n","/* eslint-disable */\n/* tslint:disable */\nimport React from 'react';\nexport default ({ style }) => (\n  <svg className=\"slideshow-arrow\" style={style} width=\"39px\" height=\"25px\" viewBox=\"0 0 39 25\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlnsXlink=\"http://www.w3.org/1999/xlink\">\n    <g stroke=\"none\" strokeWidth=\"1\" fillRule=\"evenodd\">\n      <g transform=\"translate(-29.000000, -36.000000)\" fillRule=\"nonzero\">\n        <path d=\"M29,48.2400242 C29,47.3087892 29.6817196,46.6578788 30.6657131,46.6578788 L62.0721815,46.6578788 L53.6034603,38.6027842 C52.9919732,38.0244263 52.9745394,37.0965804 53.5626533,36.4993057 L53.6196503,36.4424086 C54.2232252,35.8695838 55.2162345,35.8487051 55.8566495,36.4049822 L66.7354947,46.6987178 C66.8997789,46.8532785 67.0362567,47.0299812 67.1410943,47.2233734 C67.6421069,47.9137524 67.5952684,48.7577348 67.0654839,49.3382112 L66.9183084,49.529704 C66.8745903,49.5829565 66.834409,49.6278886 66.7923536,49.6712745 L55.84922,60.0371144 C55.2232594,60.6516206 54.1974244,60.6696143 53.554893,60.0838114 C52.9168128,59.5020667 52.8980482,58.5443858 53.5126939,57.940867 L53.5761731,57.877497 L62.0800244,49.8549119 L30.6657131,49.8549119 C29.6912419,49.8549119 29,49.1805348 29,48.2400242 Z\" id=\"5\"></path>\n      </g>\n    </g>\n  </svg>\n);\n\n/* tslint:enable */\n/* eslint-enable */\n","/* eslint-disable */\n/* tslint:disable */\nimport React from 'react';\nexport default ({ style }) => (\n  <svg className=\"slideshow-arrow\" style={style} width=\"26px\" height=\"40px\" viewBox=\"0 0 26 40\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlnsXlink=\"http://www.w3.org/1999/xlink\">\n    <g stroke=\"none\" strokeWidth=\"1\" fillRule=\"evenodd\">\n      <g transform=\"translate(-35.000000, -28.000000)\" fillRule=\"nonzero\">\n        <polygon points=\"60.4571429 47.8 40.6571429 67.6 35 61.9428571 49.1433951 47.7994621 35 33.6571429 40.6571429 28\"></polygon>\n      </g>\n    </g>\n  </svg>\n);\n\n/* tslint:enable */\n/* eslint-enable */\n","/* eslint-disable */\n/* tslint:disable */\nimport React from 'react';\nexport default ({ style }) => (\n  <svg className=\"slideshow-arrow\" style={style} width=\"40px\" height=\"33px\" viewBox=\"0 0 40 33\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlnsXlink=\"http://www.w3.org/1999/xlink\">\n    <g stroke=\"none\" strokeWidth=\"1\" fillRule=\"evenodd\">\n      <g transform=\"translate(-28.000000, -32.000000)\" strokeWidth=\"nonzero\">\n        <polygon transform=\"translate(47.800000, 48.469489) rotate(-180.000000) translate(-47.800000, -48.469489) \" points=\"43.2916087 32 44.4061622 33.1660321 30.8430707 47.6817192 67.6 47.6813756 67.6 49.2576026 30.9452714 49.2580761 44.4061622 63.772946 43.2924258 64.9389782 28.8681974 49.4277178 28 48.5197421\"></polygon>\n      </g>\n    </g>\n  </svg>\n);\n\n/* tslint:enable */\n/* eslint-enable */\n","import DefaultArrow from './components/defaultArrow.js';\nimport Arrow2 from './components/arrow2.js';\nimport Arrow3 from './components/arrow3.js';\nimport Arrow4 from './components/arrow4.js';\nimport Arrow5 from './components/arrow5.js';\nimport Arrow6 from './components/arrow6.js';\nimport Arrow7 from './components/arrow7.js';\n\nconst ARROWS_DATA = {\n  DEFAULT_ARROW: {\n    SvgComp: DefaultArrow,\n    width: 23,\n    height: 39,\n  },\n  ARROW_2: {\n    SvgComp: Arrow2,\n    width: 40,\n    height: 33,\n  },\n  ARROW_3: {\n    SvgComp: Arrow3,\n    width: 25,\n    height: 42,\n  },\n  ARROW_4: {\n    SvgComp: Arrow4,\n    width: 39,\n    height: 11,\n  },\n  ARROW_5: {\n    SvgComp: Arrow5,\n    width: 39,\n    height: 25,\n  },\n  ARROW_6: {\n    SvgComp: Arrow6,\n    width: 26,\n    height: 40,\n  },\n  ARROW_7: {\n    SvgComp: Arrow7,\n    width: 40,\n    height: 33,\n  },\n};\nexport default ARROWS_DATA;\n","/* eslint-disable */\n/* tslint:disable */\nexport {default as pause} from './components/pause.js';\nexport {default as play_background} from './components/play_background.js';\nexport {default as play_triangle} from './components/play_triangle.js';\nexport {default as rotate_arrow} from './components/rotate_arrow.js';\nexport {default as play} from './components/play.js';\nexport {default as x} from './components/x.js';\nexport {default as ARROWS_DATA } from './arrowsIconsData.js';\n/* tslint:enable */\n/* eslint-enable */\n","import React from 'react';\nimport { utils, GALLERY_CONSTS, optionsMap } from 'pro-gallery-lib';\nimport { ARROWS_DATA } from '../svgs/index.js';\n\nconst getArrowsSizeData = ({ customNavArrowsRenderer, arrowsSize, svgData, containerStyleType }) => {\n  const isLandscape = svgData.width / svgData.height > 1;\n  if (containerStyleType === GALLERY_CONSTS[optionsMap.layoutParams.navigationArrows.container.type].BOX) {\n    const sizeData = {\n      navArrowsContainerWidth: arrowsSize,\n      navArrowsContainerHeight: arrowsSize,\n      scalePercentage: arrowsSize / 2.4 / (isLandscape ? svgData.width : svgData.height),\n    };\n    return sizeData;\n  }\n  if (customNavArrowsRenderer) {\n    return {\n      navArrowsContainerWidth: arrowsSize,\n      navArrowsContainerHeight: arrowsSize,\n    };\n  }\n\n  const scalePercentage = arrowsSize / svgData.width;\n  return {\n    scalePercentage,\n    navArrowsContainerWidth: arrowsSize,\n    navArrowsContainerHeight: svgData.height * scalePercentage,\n  };\n};\n\nexport const getArrowsRenderData = ({\n  customNavArrowsRenderer,\n  arrowsColor,\n  arrowsSize,\n  arrowsType,\n  containerStyleType,\n}) => {\n  const arrowData = getArrowIconData(arrowsType);\n  const { navArrowsContainerWidth, navArrowsContainerHeight, scalePercentage } = getArrowsSizeData({\n    customNavArrowsRenderer,\n    arrowsSize,\n    svgData: arrowData,\n    containerStyleType,\n  });\n  if (customNavArrowsRenderer) {\n    const size =\n      containerStyleType === GALLERY_CONSTS[optionsMap.layoutParams.navigationArrows.container.type].BOX\n        ? arrowsSize / 2.4\n        : arrowsSize;\n    const customRenderer = (position) => (\n      <div\n        style={{\n          width: size,\n          height: size,\n        }}\n      >\n        {customNavArrowsRenderer(position)}\n      </div>\n    );\n    return {\n      arrowRenderer: customRenderer,\n      navArrowsContainerWidth,\n      navArrowsContainerHeight,\n    };\n  }\n  const arrowRenderer = (position) => {\n    const scaleX = position === 'right' ? 1 : -1;\n    const style = {\n      transform: `scaleX(${scaleX}) scale(${scalePercentage})`,\n      fill: utils.isMobile() && arrowsColor?.value ? arrowsColor.value : '',\n    };\n    return <arrowData.SvgComp style={style} />;\n  };\n  return { arrowRenderer, navArrowsContainerWidth, navArrowsContainerHeight };\n};\n\n// Function that checks if the nav arrows parent-container is large enough for them\nconst arrowsWillFitPosition = ({ options, container, customNavArrowsRenderer }) => {\n  const { height } = container;\n  // Calc of Nav arrows container's height\n  const arrowData = getArrowIconData(options[optionsMap.layoutParams.navigationArrows.type]);\n  const { navArrowsContainerHeight } = getArrowsSizeData({\n    customNavArrowsRenderer,\n    arrowsSize: options[optionsMap.layoutParams.navigationArrows.size],\n    svgData: arrowData,\n    containerStyleType: options[optionsMap.layoutParams.navigationArrows.container.type],\n  });\n  const infoHeight = options[optionsMap.layoutParams.info.height];\n  const parentHeightByVerticalPosition = {\n    [GALLERY_CONSTS[optionsMap.layoutParams.navigationArrows.verticalAlignment].INFO_CENTER]: infoHeight,\n    [GALLERY_CONSTS[optionsMap.layoutParams.navigationArrows.verticalAlignment].IMAGE_CENTER]: height - infoHeight,\n    [GALLERY_CONSTS[optionsMap.layoutParams.navigationArrows.verticalAlignment].ITEM_CENTER]: height,\n  };\n  const parentHeight =\n    parentHeightByVerticalPosition[options[optionsMap.layoutParams.navigationArrows.verticalAlignment]];\n  return parentHeight >= navArrowsContainerHeight;\n};\n\n// function to Determine whether we should render the navigation arrows\nexport const shouldRenderNavArrows = (props) => {\n  const shouldRenderArrowsRelevantArgs = getShouldRenderArrowsArgs(props);\n  const navigationArrowsEnabled =\n    shouldRenderArrowsRelevantArgs.options[optionsMap.layoutParams.navigationArrows.enable];\n\n  const { galleryWidth } = shouldRenderArrowsRelevantArgs.container;\n  const { isPrerenderMode, galleryStructure, customNavArrowsRenderer } = shouldRenderArrowsRelevantArgs;\n  const arrowsWillFitPositionRelevantArgs = {\n    options: shouldRenderArrowsRelevantArgs.options,\n    container: shouldRenderArrowsRelevantArgs.container,\n    customNavArrowsRenderer,\n  };\n  const isGalleryWiderThanRenderedItems = galleryStructure.width <= galleryWidth;\n  return (\n    !!navigationArrowsEnabled &&\n    !isPrerenderMode &&\n    arrowsWillFitPosition(arrowsWillFitPositionRelevantArgs) &&\n    !isGalleryWiderThanRenderedItems\n  );\n};\n\nconst getShouldRenderArrowsArgs = (props) => {\n  const { isPrerenderMode, galleryStructure, customNavArrowsRenderer } = props;\n  return {\n    options: props.options,\n    container: props.container,\n    isPrerenderMode,\n    galleryStructure,\n    customNavArrowsRenderer,\n  };\n};\n\nconst getArrowIconData = (arrowType = GALLERY_CONSTS[optionsMap.layoutParams.navigationArrows.type].DEFAULT_ARROW) => {\n  const { DEFAULT_ARROW, ARROW_2, ARROW_3, ARROW_4, ARROW_5, ARROW_6, ARROW_7 } =\n    GALLERY_CONSTS[optionsMap.layoutParams.navigationArrows.type];\n  let arrowData;\n  switch (arrowType) {\n    case ARROW_2:\n      arrowData = ARROWS_DATA.ARROW_2;\n      break;\n    case ARROW_3:\n      arrowData = ARROWS_DATA.ARROW_3;\n      break;\n    case ARROW_4:\n      arrowData = ARROWS_DATA.ARROW_4;\n      break;\n    case ARROW_5:\n      arrowData = ARROWS_DATA.ARROW_5;\n      break;\n    case ARROW_6:\n      arrowData = ARROWS_DATA.ARROW_6;\n      break;\n    case ARROW_7:\n      arrowData = ARROWS_DATA.ARROW_7;\n      break;\n    case DEFAULT_ARROW:\n    default:\n      arrowData = ARROWS_DATA.DEFAULT_ARROW;\n      break;\n  }\n  return arrowData;\n};\n\nexport const getArrowBoxStyle = ({ type, backgroundColor, borderRadius }) => {\n  return type === GALLERY_CONSTS[optionsMap.layoutParams.navigationArrows.container.type].BOX\n    ? {\n        backgroundColor: backgroundColor,\n        borderRadius: `${borderRadius}%`,\n      }\n    : {};\n};\n","import React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { GALLERY_CONSTS, utils, optionsMap } from 'pro-gallery-lib';\nimport { ArrowFollower, MouseFollowerProvider } from '../../helpers/mouseCursorPosition.js';\nimport { getArrowBoxStyle, getArrowsRenderData } from '../../helpers/navigationArrowUtils.js';\n\nexport function NavigationArrows({\n  options,\n  hideLeftArrow,\n  hideRightArrow,\n  container,\n  customNavArrowsRenderer,\n  next,\n  id,\n}) {\n  const itemSpacing = options[optionsMap.layoutParams.structure.itemSpacing];\n  const isRTL =\n    options[optionsMap.behaviourParams.gallery.layoutDirection] ===\n    GALLERY_CONSTS[optionsMap.behaviourParams.gallery.layoutDirection].RIGHT_TO_LEFT;\n  const arrowsPosition = options[optionsMap.layoutParams.navigationArrows.position];\n  const arrowsPadding = options[optionsMap.layoutParams.navigationArrows.padding];\n  const scrollDirection = options[optionsMap.layoutParams.structure.scrollDirection];\n  const mouseCursorContainerMaxWidth = options[optionsMap.layoutParams.navigationArrows.mouseCursorContainerMaxWidth];\n\n  const {\n    arrowRenderer: renderArrowSvg,\n    navArrowsContainerWidth,\n    navArrowsContainerHeight,\n  } = getArrowsRenderData({\n    customNavArrowsRenderer,\n    arrowsColor: options[optionsMap.stylingParams.arrowsColor], //v5 TODO - get this in the nav arrows options\n    arrowsSize: options[optionsMap.layoutParams.navigationArrows.size],\n    arrowsType: options[optionsMap.layoutParams.navigationArrows.type],\n    containerStyleType: options[optionsMap.layoutParams.navigationArrows.container.type],\n  });\n  const mouseCursorEnabled =\n    arrowsPosition === GALLERY_CONSTS[optionsMap.layoutParams.navigationArrows.position].MOUSE_CURSOR;\n\n  const { galleryHeight } = container;\n  const infoHeight = options[optionsMap.layoutParams.info.height];\n  const imageHeight = galleryHeight - infoHeight;\n\n  // the nav arrows parent container top edge is itemSpacing/2 ABOVE the actual view, that calculates the middle point of gallery\n  const galleryVerticalCenter = `50% + ${itemSpacing / 4}px`;\n\n  // Determines the direction fix, the direction in which we move the nav arrows 'vertical position fix' pixels\n  let directionFix;\n  if (GALLERY_CONSTS.hasExternalAbovePlacement(options[optionsMap.layoutParams.info.placement])) {\n    directionFix = -1;\n  } else if (GALLERY_CONSTS.hasExternalBelowPlacement(options[optionsMap.layoutParams.info.placement])) {\n    directionFix = 1;\n  } else {\n    // if we got here, we should be ITEM_CENTER, taken care of in layoutHelper.ts\n  }\n  const verticalPositionFix = {\n    [GALLERY_CONSTS[optionsMap.layoutParams.navigationArrows.verticalAlignment].ITEM_CENTER]: 0,\n    [GALLERY_CONSTS[optionsMap.layoutParams.navigationArrows.verticalAlignment].IMAGE_CENTER]:\n      infoHeight * directionFix,\n    [GALLERY_CONSTS[optionsMap.layoutParams.navigationArrows.verticalAlignment].INFO_CENTER]:\n      -imageHeight * directionFix,\n  }[options[optionsMap.layoutParams.navigationArrows.verticalAlignment]];\n  const arrowBoxStyle = getArrowBoxStyle({\n    type: options[optionsMap.layoutParams.navigationArrows.container.type],\n    backgroundColor: options[optionsMap.layoutParams.navigationArrows.container.backgroundColor],\n    borderRadius: options[optionsMap.layoutParams.navigationArrows.container.borderRadius],\n  });\n  const containerStyle = mouseCursorEnabled\n    ? {\n        width: `${navArrowsContainerWidth}px`,\n        height: `${navArrowsContainerHeight}px`,\n        ...arrowBoxStyle,\n      }\n    : {\n        width: `${navArrowsContainerWidth}px`,\n        height: `${navArrowsContainerHeight}px`,\n        padding: 0,\n        top: `calc(${galleryVerticalCenter} - ${navArrowsContainerHeight / 2}px - \n        ${verticalPositionFix / 2}px)`,\n        ...arrowBoxStyle,\n      };\n\n  const arrowsPos =\n    scrollDirection === GALLERY_CONSTS[optionsMap.layoutParams.structure.scrollDirection].HORIZONTAL &&\n    arrowsPosition === GALLERY_CONSTS[optionsMap.layoutParams.navigationArrows.position].OUTSIDE_GALLERY\n      ? `-${20 + navArrowsContainerWidth}px`\n      : `${itemSpacing / 2 + (arrowsPadding ? arrowsPadding : 0)}px`;\n  // itemSpacing effect the margin of the main div ('pro-gallery-parent-container') that SlideshowView is rendering, so the arrows should be places accordingly\n  // arrowsPadding relevant only for arrowsPosition.ON_GALLERY\n\n  const prevContainerStyle = { left: mouseCursorEnabled ? 0 : arrowsPos };\n  const nextContainerStyle = { right: mouseCursorEnabled ? 0 : arrowsPos };\n\n  const containerStylesByType = {\n    BOX: 'box',\n    SHADOW: 'shadow',\n    NONE: 'only-arrows',\n  };\n\n  const containerStylingClass =\n    containerStylesByType[options[optionsMap.layoutParams.navigationArrows.container.type]] || '';\n\n  const arrowsBaseClasses = [\n    'nav-arrows-container',\n    containerStylingClass,\n    utils.isMobile() ? ' pro-gallery-mobile-indicator' : '',\n  ];\n  const navigationArrowPortalId = `arrow-portal-container-${id}`;\n\n  const ArrowRenderHandler = mouseCursorEnabled ? ArrowButtonWithCursorController : ArrowButton;\n  const renderArrow = (directionIsLeft) => {\n    return (\n      <ArrowRenderHandler\n        {...{\n          renderArrowSvg,\n          next,\n          directionIsLeft,\n          arrowsBaseClasses,\n          containerStyle,\n          prevContainerStyle,\n          nextContainerStyle,\n          isRTL,\n          hideLeftArrow,\n          hideRightArrow,\n          arrowBoxStyle,\n          navArrowsContainerWidth,\n          navArrowsContainerHeight,\n          navigationArrowPortalId,\n          mouseCursorContainerMaxWidth,\n          id,\n        }}\n      />\n    );\n  };\n\n  const provideMouseFollower = (children) => {\n    if (mouseCursorEnabled) {\n      return <MouseFollowerProvider id={id}>{children}</MouseFollowerProvider>;\n    }\n    return children;\n  };\n\n  return (\n    <ArrowsContainer\n      hideLeftArrow={hideLeftArrow}\n      hideRightArrow={hideRightArrow}\n      mouseCursorEnabled={mouseCursorEnabled}\n      isRTL={isRTL}\n      navigationArrowPortalId={navigationArrowPortalId}\n    >\n      {provideMouseFollower(\n        <>\n          {hideLeftArrow ? null : renderArrow(true)}\n          {hideRightArrow ? null : renderArrow(false)}\n        </>\n      )}\n    </ArrowsContainer>\n  );\n}\n\nexport function ArrowButton({\n  cursor,\n  arrowsBaseClasses,\n  containerStyle,\n  prevContainerStyle,\n  nextContainerStyle,\n  isRTL,\n  directionIsLeft,\n  renderArrowSvg,\n  next,\n  arrowBoxStyle,\n  navArrowsContainerWidth,\n  navArrowsContainerHeight,\n  navigationArrowPortalId,\n}) {\n  const isNext = (directionIsLeft && isRTL) || (!directionIsLeft && !isRTL);\n  const nextAction = () => next({ direction: directionIsLeft ? -1 : 1 });\n  const buttonProps = {\n    className: arrowsBaseClasses.join(' '),\n    onClick: () => setTimeout(nextAction, 0),\n    ['aria-label']: `${isNext ? 'Next' : 'Previous'} Item`,\n    tabIndex: '0',\n    key: !isNext ? 'nav-arrow-back' : 'nav-arrow-next',\n    ['data-hook']: !isNext ? 'nav-arrow-back' : 'nav-arrow-next',\n    style: {\n      ...containerStyle,\n      ...(directionIsLeft ? prevContainerStyle : nextContainerStyle),\n    },\n  };\n  if (cursor) {\n    const { containerRef, isMouseEnter, position } = cursor;\n    return (\n      <button ref={(ref) => (containerRef.current = ref)} {...buttonProps}>\n        {isMouseEnter &&\n          ReactDOM.createPortal(\n            <span\n              style={{\n                top: position.y - navArrowsContainerHeight / 2,\n                left: position.x - navArrowsContainerWidth / 2,\n                ...arrowBoxStyle,\n                width: navArrowsContainerWidth,\n                height: navArrowsContainerHeight,\n              }}\n            >\n              {renderArrowSvg(directionIsLeft ? 'left' : 'right')}\n            </span>,\n            window.document.getElementById(navigationArrowPortalId)\n          )}\n      </button>\n    );\n  }\n  return <button {...buttonProps}>{renderArrowSvg(directionIsLeft ? 'left' : 'right')}</button>;\n}\n\nexport function ArrowButtonWithCursorController(props) {\n  const {\n    directionIsLeft,\n    next,\n    mouseCursorContainerMaxWidth,\n    hideLeftArrow,\n    hideRightArrow,\n    renderArrowSvg,\n    containerStyle,\n    arrowsBaseClasses,\n    navArrowsContainerWidth,\n    navArrowsContainerHeight,\n  } = props;\n  const isTheOnlyArrow = hideLeftArrow || hideRightArrow;\n  return (\n    <ArrowFollower\n      id={props.id}\n      mouseCursorContainerMaxWidth={mouseCursorContainerMaxWidth}\n      navArrowsContainerWidth={navArrowsContainerWidth}\n      navArrowsContainerHeight={navArrowsContainerHeight}\n      onNavigate={() => next({ direction: directionIsLeft ? -1 : 1 })}\n      direction={directionIsLeft ? 'left' : 'right'}\n      isTheOnlyArrow={isTheOnlyArrow}\n    >\n      {(x, y) => (\n        <div\n          style={{\n            top: y,\n            left: x,\n          }}\n          className=\"follow-mouse-cursor\"\n        >\n          <div\n            className={arrowsBaseClasses.join(' ')}\n            style={{\n              ...containerStyle,\n              top: -navArrowsContainerHeight / 2,\n              left: -navArrowsContainerWidth / 2,\n            }}\n          >\n            {renderArrowSvg(directionIsLeft ? 'left' : 'right')}\n          </div>\n        </div>\n      )}\n    </ArrowFollower>\n  );\n}\n\nexport function ArrowsContainer({\n  hideRightArrow,\n  hideLeftArrow,\n  mouseCursorEnabled,\n  isRTL,\n  children,\n  navigationArrowPortalId,\n}) {\n  if (mouseCursorEnabled) {\n    const styleForMouseCursor = {\n      justifyContent: hideLeftArrow ? 'flex-end' : hideRightArrow ? 'flex-start' : 'space-between',\n      flexDirection: isRTL ? 'row-reverse' : 'row',\n    };\n    return (\n      <div className=\"mouse-cursor\" style={{ ...styleForMouseCursor }}>\n        <div id={navigationArrowPortalId} className=\"arrow-portal-container\" />\n        {/* navigationArrowPortalId must be the first element to make sure the mouseCursor events work properly */}\n        {children}\n      </div>\n    );\n  }\n  return React.Fragment ? <React.Fragment>{children}</React.Fragment> : <div>{children}</div>;\n}\n","import React from 'react';\nimport { GALLERY_CONSTS, window, utils, isEditMode, isPreviewMode, optionsMap } from 'pro-gallery-lib';\nimport GroupView from '../../group/groupView.js';\nimport GalleryDebugMessage from './galleryDebugMessage.js';\nimport PlayIcon from '../../svgs/components/play.js';\nimport PauseIcon from '../../svgs/components/pause.js';\nimport NavigationPanel, { getCustomNavigationPanelInlineStyles } from './navigationPanel.js';\nimport { getItemsInViewportOrMarginByActiveGroup } from '../../helpers/virtualization.js';\nimport { NavigationArrows } from './navigationArrows.js';\nimport { shouldRenderNavArrows } from '../../helpers/navigationArrowUtils.js';\nimport { toggleScrollLessAnimation } from './scrollLessAnimationHelper.js';\n\nconst SKIP_SLIDES_MULTIPLIER = 1.5;\n\nfunction getDirection(code) {\n  const reverse = [33, 37, 38];\n  const direct = [32, 34, 39, 40];\n  if (reverse.includes(code)) return -1;\n  else if (direct.includes(code)) return 1;\n  throw new Error(`no direction is defined for charCode: ${code}`);\n}\n\n/**\n * @typedef Props\n * @prop {import('pro-gallery-lib').Options} options\n */\n\n/**\n * @extends {React.Component<Props>}\n */\nclass SlideshowView extends React.Component {\n  constructor(props) {\n    super(props);\n    this.navigationPanelCallbackOnIndexChange = () => {};\n    this.scrollToThumbnail = this.scrollToThumbnail.bind(this);\n    this.clearAutoSlideshowInterval = this.clearAutoSlideshowInterval.bind(this);\n    this.onFocus = this.onFocus.bind(this);\n    this.onBlur = this.onBlur.bind(this);\n    this.onAutoSlideShowButtonClick = this.onAutoSlideShowButtonClick.bind(this);\n    this.startAutoSlideshowIfNeeded = this.startAutoSlideshowIfNeeded.bind(this);\n    this.updateAutoSlideShowState = this.updateAutoSlideShowState.bind(this);\n    this.canStartAutoSlideshow = this.canStartAutoSlideshow.bind(this);\n    this.handleSlideshowKeyPress = this.handleSlideshowKeyPress.bind(this);\n    this.onAutoSlideshowAutoPlayKeyPress = this.onAutoSlideshowAutoPlayKeyPress.bind(this);\n    this.setCurrentItemByScroll = this.setCurrentItemByScroll.bind(this);\n    this._setCurrentItemByScroll = utils.throttle(this.setCurrentItemByScroll, 600).bind(this);\n    this._next = utils.throttle(this.nextWithEffects.bind(this), props.isScrollLessGallery ? 600 : 400).bind(this);\n    this.state = {\n      activeIndex: props.activeIndex || 0,\n      isInView: true,\n      pauseAutoSlideshowClicked: false,\n      hideLeftArrow:\n        props.options.behaviourParams_gallery_layoutDirection ===\n        GALLERY_CONSTS[optionsMap.behaviourParams.gallery.layoutDirection].LEFT_TO_RIGHT,\n      hideRightArrow:\n        props.options.behaviourParams_gallery_layoutDirection ===\n        GALLERY_CONSTS[optionsMap.behaviourParams.gallery.layoutDirection].RIGHT_TO_LEFT,\n      shouldBlockAutoSlideshow: false,\n      isInFocus: false,\n    };\n    this.lastCurrentItem = undefined;\n    this.shouldCreateSlideShowPlayButton = false;\n    this.skipFromSlide = Math.round(this.props.totalItemsCount * SKIP_SLIDES_MULTIPLIER); // Used in infinite loop\n  }\n\n  isFirstItem() {\n    return this.state.activeIndex === 0;\n  }\n\n  isScrollStart(props = this.props) {\n    const slideAnimation = props.options.behaviourParams_gallery_horizontal_slideAnimation;\n    if (\n      slideAnimation !== GALLERY_CONSTS[optionsMap.behaviourParams.gallery.horizontal.slideAnimation].SCROLL ||\n      !this.scrollElement\n    ) {\n      return false;\n    }\n    return this.scrollPosition(props) <= 1;\n  }\n\n  isScrollEnd(props = this.props) {\n    const slideAnimation = props.options.behaviourParams_gallery_horizontal_slideAnimation;\n    if (\n      props.options.behaviourParams_gallery_horizontal_loop ||\n      slideAnimation === GALLERY_CONSTS[optionsMap.behaviourParams.gallery.horizontal.slideAnimation].FADE ||\n      slideAnimation === GALLERY_CONSTS[optionsMap.behaviourParams.gallery.horizontal.slideAnimation].DECK\n    ) {\n      return false;\n    }\n    return (\n      this.isAllItemsLoaded(props) &&\n      this.scrollPositionAtTheAndOfTheGallery(props) >= Math.floor(this.getScrollElementWidth(props))\n    );\n  }\n\n  isAllItemsLoaded(props = this.props) {\n    const { totalItemsCount, getVisibleItems, galleryStructure, container, isPrerenderMode } = props;\n    const visibleItemsCount = getVisibleItems(galleryStructure.galleryItems, container, isPrerenderMode).length;\n    return visibleItemsCount >= totalItemsCount;\n  }\n\n  getScrollElementWidth(props = this.props) {\n    const { galleryStructure } = props;\n    return galleryStructure.width - this.props.options.layoutParams_structure_itemSpacing / 2;\n  }\n\n  isFirstItemFullyVisible() {\n    return !this.props.options.behaviourParams_gallery_horizontal_loop && this.isScrollStart();\n  }\n  isLastItemFullyVisible() {\n    return !this.props.options.behaviourParams_gallery_horizontal_loop && this.isScrollEnd();\n  }\n\n  isLastItem() {\n    const activeIndex = this.state.activeIndex;\n    return !this.props.options.behaviourParams_gallery_horizontal_loop && activeIndex >= this.props.totalItemsCount - 1;\n  }\n\n  //__________________________________Slide show loop functions_____________________________________________\n\n  //__________________________________end of slide show loop functions__________________________\n  shouldBlockNext({ scrollingUpTheGallery }) {\n    return (scrollingUpTheGallery && this.isLastItem()) || (!scrollingUpTheGallery && this.isFirstItem());\n  }\n\n  shouldNotAllowScroll({ scrollingUpTheGallery }) {\n    return (\n      (scrollingUpTheGallery && this.isLastItemFullyVisible()) ||\n      (!scrollingUpTheGallery && this.isFirstItemFullyVisible())\n    );\n  }\n\n  async nextWithEffects(props) {\n    const nextItem = await this.next(props);\n    if (\n      this.props.options.layoutParams_groups_groupSize === 1 &&\n      this.props.isScrollLessGallery &&\n      nextItem >= this.skipFromSlide\n    ) {\n      const skipToSlide = this.skipFromSlide - this.props.totalItemsCount;\n      toggleScrollLessAnimation(() => this.onScrollToItemOrGroup(skipToSlide, false));\n    }\n  }\n\n  async next({\n    direction,\n    isAutoTrigger,\n    scrollDuration,\n    isKeyboardNavigation = false,\n    isContinuousScrolling = false,\n  }) {\n    const scrollingUpTheGallery =\n      this.props.options.behaviourParams_gallery_layoutDirection ===\n      GALLERY_CONSTS[optionsMap.behaviourParams.gallery.layoutDirection].RIGHT_TO_LEFT\n        ? direction <= -1\n        : direction >= 1;\n    if (this.shouldBlockNext({ scrollingUpTheGallery })) {\n      this.clearAutoSlideshowInterval();\n      return;\n    }\n    direction *=\n      this.props.options.behaviourParams_gallery_layoutDirection ===\n      GALLERY_CONSTS[optionsMap.behaviourParams.gallery.layoutDirection].RIGHT_TO_LEFT\n        ? -1\n        : 1;\n    const activeElement = document.activeElement;\n    const galleryItemIsFocused = activeElement.className && activeElement.className.includes('gallery-item-container');\n    const avoidIndividualNavigation =\n      !isKeyboardNavigation || !(this.props.settings?.isAccessible && galleryItemIsFocused);\n    let ignoreScrollPosition = false;\n\n    if (\n      this.props.options.behaviourParams_gallery_horizontal_slideAnimation !==\n      GALLERY_CONSTS[optionsMap.behaviourParams.gallery.horizontal.slideAnimation].SCROLL\n    ) {\n      scrollDuration = 0;\n      ignoreScrollPosition = true;\n    }\n    this.removeArrowsIfNeeded();\n\n    if (avoidIndividualNavigation && this.props.options.layoutParams_groups_groupSize > 1) {\n      return this.nextGroup({\n        direction,\n        scrollDuration,\n        isContinuousScrolling,\n        scrollingUpTheGallery,\n      }); //if its not in accessibility that requieres individual nav and we are in a horizontal(this file) collage(layout 0) - use group navigation\n    } else {\n      if (\n        avoidIndividualNavigation &&\n        GALLERY_CONSTS.isLayout('GRID')(this.props.options) &&\n        this.props.options.layoutParams_structure_numberOfGridRows\n      ) {\n        direction *= this.props.options.layoutParams_structure_numberOfGridRows;\n      }\n      return this.nextItem({\n        direction,\n        isAutoTrigger,\n        scrollDuration,\n        avoidIndividualNavigation,\n        ignoreScrollPosition,\n        isContinuousScrolling,\n        scrollingUpTheGallery,\n      });\n    }\n  }\n\n  getNextItemOrGroupToScrollTo(initiator, direction, ignoreScrollPosition, avoidIndividualNavigation, isAutoTrigger) {\n    this.isSliding = true;\n    let nextIndex;\n    if (\n      initiator === 'nextGroup' ||\n      (initiator === 'nextItem' &&\n        !ignoreScrollPosition &&\n        avoidIndividualNavigation &&\n        !(this.props.options.layoutParams_groups_groupSize > 1))\n    ) {\n      const key = initiator === 'nextGroup' ? 'groups' : 'galleryItems';\n      nextIndex = this.getCenteredItemOrGroupIdxByScroll(key) + direction;\n    } else if (initiator === 'nextItem') {\n      if (ignoreScrollPosition || !isAutoTrigger) {\n        nextIndex = this.state.activeIndex;\n      } else {\n        nextIndex = this.setCurrentItemByScroll();\n      }\n      nextIndex += direction;\n\n      if (!this.props.options.behaviourParams_gallery_horizontal_loop) {\n        nextIndex = Math.min(this.props.galleryStructure.items.length - 1, nextIndex);\n        nextIndex = Math.max(0, nextIndex);\n      }\n    }\n    this.isAutoScrolling = true;\n    return nextIndex;\n  }\n\n  async nextItem({\n    direction,\n    isAutoTrigger,\n    scrollDuration,\n    avoidIndividualNavigation,\n    ignoreScrollPosition,\n    isContinuousScrolling,\n    scrollingUpTheGallery,\n  }) {\n    if (this.isSliding) {\n      return;\n    }\n\n    let nextItem = this.getNextItemOrGroupToScrollTo(\n      'nextItem',\n      direction,\n      ignoreScrollPosition,\n      avoidIndividualNavigation,\n      isAutoTrigger\n    );\n\n    try {\n      const itemToScroll = ignoreScrollPosition ? 0 : nextItem;\n      await this.scrollToItemOrGroup(\n        this.props.actions.scrollToItem,\n        itemToScroll,\n        isContinuousScrolling,\n        scrollDuration,\n        scrollingUpTheGallery\n      );\n\n      if (this.props.options.layoutParams_groups_groupSize === 1 && !this.props.isScrollLessGallery) {\n        if (nextItem >= this.skipFromSlide) {\n          nextItem = utils.inRange(nextItem, this.props.totalItemsCount);\n          await this.props.actions.scrollToItem(nextItem);\n        }\n      }\n\n      this.onScrollToItemOrGroup(nextItem, isContinuousScrolling);\n\n      if (ignoreScrollPosition) {\n        this.props.getMoreItemsIfNeeded(this.props.galleryStructure.galleryItems[nextItem].offset.left);\n        this.props.setGotFirstScrollIfNeeded();\n      }\n      return nextItem;\n    } catch (e) {\n      this.onThrowScrollError('Cannot proceed to the next Item', e);\n    }\n  }\n\n  async nextGroup({ direction, scrollDuration, isContinuousScrolling = false, scrollingUpTheGallery }) {\n    if (this.isSliding) {\n      return;\n    }\n\n    const nextGroup = this.getNextItemOrGroupToScrollTo('nextGroup', direction);\n\n    try {\n      await this.scrollToItemOrGroup(\n        this.props.actions.scrollToGroup,\n        nextGroup,\n        isContinuousScrolling,\n        scrollDuration,\n        scrollingUpTheGallery\n      );\n      const nextItem = this.getCenteredItemOrGroupIdxByScroll('galleryItems') + direction;\n      this.onScrollToItemOrGroup(nextItem, isContinuousScrolling);\n    } catch (e) {\n      this.onThrowScrollError('Cannot proceed to the next Group', e);\n    }\n  }\n\n  async scrollToItemOrGroup(func, indexToScroll, isContinuousScrolling, scrollDuration, scrollingUpTheGallery) {\n    const shouldAllowScroll = !this.shouldNotAllowScroll({\n      scrollingUpTheGallery,\n    });\n    const { scrollMarginCorrection, _scrollDuration } = this.getScrollParameters(scrollDuration);\n    shouldAllowScroll &&\n      (await func(indexToScroll, false, true, _scrollDuration, scrollMarginCorrection, isContinuousScrolling));\n  }\n\n  onThrowScrollError(massage, e) {\n    console.error(massage, e);\n    this.clearAutoSlideshowInterval();\n  }\n\n  onScrollToItemOrGroup(nextItem, isContinuousScrolling) {\n    utils.setStateAndLog(\n      this,\n      'Next Item',\n      {\n        activeIndex: nextItem,\n      },\n      () => {\n        this.onCurrentItemChanged();\n        this.isSliding = false;\n        if (isContinuousScrolling) {\n          this.startAutoSlideshowIfNeeded(this.props.options);\n        }\n      }\n    );\n  }\n\n  getScrollParameters(scrollDuration) {\n    return {\n      scrollMarginCorrection: this.getStyles().margin || 0,\n      _scrollDuration:\n        scrollDuration ?? this.props.options.behaviourParams_gallery_horizontal_navigationDuration ?? 400,\n    };\n  }\n\n  onCurrentItemChanged(props = this.props) {\n    if (this.lastCurrentItem !== this.state.activeIndex) {\n      this.lastCurrentItem = this.state.activeIndex;\n      //this.props.actions.onCurrentItemChanged(this.state.currentIdx);\n      const currentGalleryItem = this.props.galleryStructure.galleryItems[this.state.activeIndex];\n      const item = this.props.items[this.state.activeIndex];\n      if (item) {\n        item.idx = this.state.activeIndex;\n        item.resizedImageSrc = currentGalleryItem.createUrl(\n          GALLERY_CONSTS.urlSizes.RESIZED,\n          GALLERY_CONSTS.urlTypes.HIGH_RES\n        );\n        this.props.actions.eventsListener(GALLERY_CONSTS.events.CURRENT_ITEM_CHANGED, item);\n      }\n      this.navigationPanelCallbackOnIndexChange(this.state.activeIndex);\n    }\n    this.removeArrowsIfNeeded(props);\n  }\n  clearAutoSlideshowInterval() {\n    clearInterval(this.autoSlideshowInterval);\n  }\n\n  canStartAutoSlideshow(options) {\n    return (\n      options.behaviourParams_gallery_horizontal_autoSlide_behaviour !==\n        GALLERY_CONSTS[optionsMap.behaviourParams.gallery.horizontal.autoSlide.behaviour].OFF &&\n      !this.state.shouldBlockAutoSlideshow\n    );\n  }\n\n  /**\n   *\n   * @param {import('pro-gallery-lib').Options} options\n   */\n  startAutoSlideshowIfNeeded(options) {\n    this.clearAutoSlideshowInterval();\n    if (this.canStartAutoSlideshow(options)) {\n      if (\n        options.behaviourParams_gallery_horizontal_autoSlide_behaviour ===\n          GALLERY_CONSTS[optionsMap.behaviourParams.gallery.horizontal.autoSlide.behaviour].CONTINUOUS &&\n        options.behaviourParams_gallery_horizontal_autoSlide_speed > 0\n      ) {\n        this.autoScrollToNextItem();\n      } else if (\n        options.behaviourParams_gallery_horizontal_autoSlide_behaviour ===\n          GALLERY_CONSTS[optionsMap.behaviourParams.gallery.horizontal.autoSlide.behaviour].INTERVAL &&\n        options.behaviourParams_gallery_horizontal_autoSlide_interval > 0\n      ) {\n        this.autoSlideshowInterval = setInterval(\n          this.autoScrollToNextItem,\n          options.behaviourParams_gallery_horizontal_autoSlide_interval * 1000\n        );\n      }\n    }\n  }\n\n  autoScrollToNextItem = () => {\n    if (!isEditMode() && (this.props.isInViewport || isPreviewMode())) {\n      const { options } = this.props;\n      const direction =\n        options.behaviourParams_gallery_layoutDirection ===\n        GALLERY_CONSTS[optionsMap.behaviourParams.gallery.layoutDirection].RIGHT_TO_LEFT\n          ? -1\n          : 1;\n\n      if (\n        options.behaviourParams_gallery_horizontal_autoSlide_behaviour ===\n        GALLERY_CONSTS[optionsMap.behaviourParams.gallery.horizontal.autoSlide.behaviour].CONTINUOUS\n      ) {\n        this._next({\n          direction,\n          isAutoTrigger: true,\n          isContinuousScrolling: true,\n        });\n      } else if (\n        options.behaviourParams_gallery_horizontal_autoSlide_behaviour ===\n        GALLERY_CONSTS[optionsMap.behaviourParams.gallery.horizontal.autoSlide.behaviour].INTERVAL\n      ) {\n        this._next({\n          direction,\n          isAutoTrigger: true,\n          scrollDuration: 800,\n        });\n      }\n    }\n  };\n\n  getFirstIdx(itemIdx) {\n    const { galleryItems } = this.props.galleryStructure;\n    const activeItemId = galleryItems[itemIdx].itemId;\n    return galleryItems.find((item) => item.itemId === activeItemId).idx;\n  }\n\n  scrollToThumbnail(itemIdx, scrollDuration) {\n    //not to confuse with this.props.actions.scrollToItem. this is used to replace it only for thumbnail items\n    this.props.actions.eventsListener(GALLERY_CONSTS.events.THUMBNAIL_CLICKED, this.props);\n    const activeIdx = this.state.activeIndex;\n    const targetIdx = activeIdx + (this.getFirstIdx(itemIdx) - this.getFirstIdx(activeIdx));\n    this.scrollToIndex({ itemIdx: targetIdx, scrollDuration });\n  }\n\n  scrollToIndex({ itemIdx, scrollDuration }) {\n    //not to confuse with this.props.actions.scrollToItem. this is used to replace it only for thumbnail items\n    this.props.setGotFirstScrollIfNeeded(); //load all the images in the thumbnails bar\n\n    const isRTL =\n      this.props.options.behaviourParams_gallery_layoutDirection ===\n      GALLERY_CONSTS[optionsMap.behaviourParams.gallery.layoutDirection].RIGHT_TO_LEFT;\n\n    const direction = isRTL ? this.state.activeIndex - itemIdx : itemIdx - this.state.activeIndex;\n    return this.next({\n      direction,\n      isAutoTrigger: false,\n      scrollDuration,\n      isKeyboardNavigation: false,\n    });\n  }\n\n  handleSlideshowKeyPress(e) {\n    e.stopPropagation();\n    const relevantKeys = [32, 33, 34, 37, 38, 39, 40, 27];\n    // key code -> 32=space, 37=left, 38=up, 39=right, 40=down, 27=esc\n    // charCode -> , 33=page up, 34=page down\n    const code = e.charCode || e.keyCode;\n\n    if (relevantKeys.includes(code) === false) return true;\n    e.preventDefault();\n    const activeItemIdx = window.document.activeElement.getAttribute('data-idx');\n\n    const shouldFocusOutOfViewComponent =\n      activeItemIdx &&\n      this.props.totalItemsCount - 1 === Number(activeItemIdx) &&\n      Number(activeItemIdx) === this.state.activeIndex;\n\n    if ((code === 40 && shouldFocusOutOfViewComponent) || code === 27) {\n      const elementToFocus = {\n        27: this.props.galleryContainerRef,\n        40: this.props.outOfViewComponent,\n      }[code];\n      utils.focusGalleryElement(elementToFocus);\n    } else {\n      this._next({ direction: getDirection(code), isKeyboardNavigation: true });\n    }\n    return false;\n  }\n\n  getCenteredItemOrGroupIdxByScroll(key) {\n    const itemsOrGroups = this.props.galleryStructure[key];\n    let centeredItemOrGroupIdx;\n    const scrollPositionAtTheMiddleOfTheGallery = this.scrollPositionAtTheMiddleOfTheGallery();\n\n    if (scrollPositionAtTheMiddleOfTheGallery === 0) {\n      centeredItemOrGroupIdx = 0;\n    } else {\n      for (let itemOrGroup, i = 0; (itemOrGroup = itemsOrGroups[i]); i++) {\n        const itemOrGroupLeft = key === 'galleryItems' ? itemOrGroup.offset.left : itemOrGroup.left;\n        if (itemOrGroupLeft > scrollPositionAtTheMiddleOfTheGallery) {\n          centeredItemOrGroupIdx = i - 1;\n          break;\n        }\n      }\n    }\n    if (!(centeredItemOrGroupIdx >= 0)) {\n      centeredItemOrGroupIdx = itemsOrGroups.length - 1;\n    }\n    return centeredItemOrGroupIdx;\n  }\n\n  setCurrentItemByScroll() {\n    if (utils.isVerbose()) {\n      console.log('Setting current Idx by scroll', this.isAutoScrolling);\n    }\n\n    if (this.isAutoScrolling) {\n      //avoid this function if the scroll was originated by us (arrows or navigationPanels)\n      this.isAutoScrolling = false;\n      return;\n    }\n\n    const isScrolling = (this.scrollElement && this.scrollElement.getAttribute('data-scrolling')) === 'true';\n\n    if (isScrolling) {\n      this.clearAutoSlideshowInterval();\n\n      //while the scroll is animating, prevent the reaction to this event\n      return;\n    }\n    this.startAutoSlideshowIfNeeded(this.props.options);\n\n    const activeIndex = this.getCenteredItemOrGroupIdxByScroll('galleryItems');\n\n    if (!utils.isUndefined(activeIndex)) {\n      utils.setStateAndLog(\n        this,\n        'Set Current Item',\n        {\n          activeIndex,\n        },\n        () => {\n          this.onCurrentItemChanged();\n        }\n      );\n    }\n    return activeIndex;\n  }\n\n  createDebugMsg() {\n    return <GalleryDebugMessage {...this.props.debug} />;\n  }\n\n  createNavArrows() {\n    const { container, options, customComponents, id } = this.props;\n    const { hideLeftArrow, hideRightArrow } = this.state;\n    return (\n      <NavigationArrows\n        container={container}\n        options={options}\n        customNavArrowsRenderer={customComponents.customNavArrowsRenderer}\n        hideLeftArrow={hideLeftArrow}\n        hideRightArrow={hideRightArrow}\n        next={this._next}\n        id={id}\n      />\n    );\n  }\n\n  getBufferedItems(galleryGroups, container) {\n    const { state, props } = this;\n    const { options, virtualizationSettings, getVisibleItems, isPrerenderMode } = props;\n    const { activeIndex } = state;\n    const groups = getVisibleItems(galleryGroups, container, isPrerenderMode);\n    const galleryWidth = this.props.galleryContainerRef?.clientWidth || container.galleryWidth || 0;\n\n    return getItemsInViewportOrMarginByActiveGroup({\n      groups,\n      activeIndex,\n      galleryWidth,\n      options,\n      virtualizationSettings,\n    });\n  }\n  createGalleryConfig() {\n    return {\n      scrollingElement: this.props.scrollingElement,\n      scroll: this.props.scroll,\n      container: this.props.container,\n      options: this.props.options,\n      settings: this.props.settings,\n      activeIndex: this.state.activeIndex,\n      customComponents: this.props.customComponents,\n      galleryId: this.props.id,\n      gotFirstScrollEvent: this.props.gotFirstScrollEvent,\n      playingVideoIdx: this.props.playingVideoIdx,\n      playing3DIdx: this.props.playing3DIdx,\n      noFollowForSEO: this.props.noFollowForSEO,\n      isPrerenderMode: this.props.isPrerenderMode,\n      firstUserInteractionExecuted: this.props.firstUserInteractionExecuted,\n      enableExperimentalFeatures: this.props.enableExperimentalFeatures,\n      actions: {\n        eventsListener: this.props.actions.eventsListener,\n      },\n      totalItemsCount: this.props.totalItemsCount,\n      totalWidth: this.props.galleryStructure.width,\n    };\n  }\n  createLayout() {\n    const { container, galleryStructure } = this.props;\n    const galleryConfig = this.createGalleryConfig();\n    const renderGroups = (column) => {\n      const layoutGroupView = !!column.galleryGroups.length && this.getBufferedItems(column.galleryGroups, container);\n      if (layoutGroupView) {\n        return layoutGroupView.map(({ group, shouldRender }) => {\n          return group.rendered\n            ? React.createElement(GroupView, {\n                disableItemFocus: this.props.disableItemFocus,\n                activeIndex: this.state.activeIndex,\n                slideAnimation: this.props.options.behaviourParams_gallery_horizontal_slideAnimation,\n                allowLoop:\n                  this.props.options.behaviourParams_gallery_horizontal_loop &&\n                  this.props.galleryStructure.width > this.props.container.width,\n                ...group.renderProps(galleryConfig),\n                ariaHidden: group.idx > this.skipFromSlide,\n                shouldRenderEmpty: !shouldRender,\n                container: this.props.container,\n                key: group.idx,\n              })\n            : false;\n        });\n      }\n    };\n\n    return galleryStructure.columns.map((column, c) => {\n      const columnStyle = {\n        width: this.props.isPrerenderMode ? '100%' : column.width,\n        height: this.getDimensions().height,\n        overflowY: this.props.isPrerenderMode ? 'visible' : 'hidden',\n      };\n      return (\n        <div\n          data-hook=\"gallery-column\"\n          id={`gallery-horizontal-scroll-${this.props.id}`}\n          className={`gallery-horizontal-scroll gallery-column hide-scrollbars ${\n            this.props.options.behaviourParams_gallery_layoutDirection ===\n            GALLERY_CONSTS[optionsMap.behaviourParams.gallery.layoutDirection].RIGHT_TO_LEFT\n              ? ' rtl '\n              : ' ltr '\n          } ${this.props.options.behaviourParams_gallery_horizontal_enableScrollSnap ? ' scroll-snap ' : ''} `}\n          key={'column' + c}\n          style={columnStyle}\n        >\n          <div className=\"gallery-horizontal-scroll-inner\">{renderGroups(column)}</div>\n        </div>\n      );\n    });\n  }\n\n  getDimensions() {\n    const height = this.props.container.galleryHeight;\n    return this.props.isPrerenderMode\n      ? {\n          width: '100%',\n          height,\n        }\n      : {\n          height,\n          width: this.props.container.galleryWidth,\n        };\n  }\n\n  createGallery() {\n    // When arrows are set outside of the gallery, gallery is resized (in dimensionsHelper -> getGalleryWidth) and needs to be positioned accordingly\n    const galleryStyleForExternalArrows =\n      this.props.options.layoutParams_structure_scrollDirection ===\n        GALLERY_CONSTS[optionsMap.layoutParams.structure.scrollDirection].HORIZONTAL &&\n      this.props.options.layoutParams_navigationArrows_position ===\n        GALLERY_CONSTS[optionsMap.layoutParams.navigationArrows.position].OUTSIDE_GALLERY\n        ? {\n            overflow: 'visible',\n            left:\n              this.props.options.layoutParams_navigationArrows_size +\n              40 +\n              this.props.options.layoutParams_structure_itemSpacing / 2,\n          }\n        : {};\n    const mouseCursorContainerStyle = {\n      display: 'flex',\n      justifyContent: 'space-between',\n    };\n    const galleryDimensions = this.getDimensions();\n    const galleryStyle = {\n      ...galleryDimensions,\n      ...galleryStyleForExternalArrows,\n      ...mouseCursorContainerStyle,\n    };\n\n    return (\n      <div\n        id={this.props.galleryContainerId}\n        className={\n          'pro-gallery inline-styles one-row hide-scrollbars ' +\n          (this.props.options.behaviourParams_gallery_horizontal_blockScroll ? '' : ' slider ') +\n          (this.props.settings?.isAccessible ? ' accessible ' : '') +\n          (this.props.options.behaviourParams_gallery_layoutDirection ===\n          GALLERY_CONSTS[optionsMap.behaviourParams.gallery.layoutDirection].RIGHT_TO_LEFT\n            ? ' rtl '\n            : ' ltr ')\n        }\n        style={galleryStyle}\n      >\n        {this.createDebugMsg()}\n        {this.createLayout()}\n        {this.createAutoSlideShowPlayButton()}\n        {this.createSlideShowNumbers()}\n        {shouldRenderNavArrows({\n          options: this.props.options,\n          container: this.props.container,\n          isPrerenderMode: this.props.isPrerenderMode,\n          galleryStructure: this.props.galleryStructure,\n          customNavArrowsRenderer: this.props.customComponents.customNavArrowsRenderer,\n        }) && this.createNavArrows()}\n      </div>\n    );\n  }\n\n  onAutoSlideShowButtonClick() {\n    this.setState({ pauseAutoSlideshowClicked: !this.state.pauseAutoSlideshowClicked }, () => {\n      this.updateAutoSlideShowState(this.props);\n    });\n  }\n\n  isFullWidthGallery() {\n    return this.props.container.galleryWidth >= utils.getWindowWidth() - 10;\n  }\n\n  onAutoSlideshowAutoPlayKeyPress(e) {\n    switch (e.keyCode || e.charCode) {\n      case 32: //space\n      case 13: //enter\n        e.preventDefault();\n        e.stopPropagation();\n        this.onAutoSlideShowButtonClick();\n        return false;\n      default:\n        return true;\n    }\n  }\n\n  calcSlideshowCounterWidth() {\n    const { totalItemsCount } = this.props;\n    if (totalItemsCount < 10) {\n      // x/x\n      return 26;\n    } else if (totalItemsCount < 100) {\n      // xx/xx\n      return 43;\n    } else if (totalItemsCount < 1000) {\n      // xxx/xxx\n      return 60;\n    } else {\n      // xxxx/xxxx or more\n      return 76;\n    }\n  }\n\n  createAutoSlideShowPlayButton() {\n    if (!this.shouldCreateSlideShowPlayButton) {\n      return false;\n    }\n\n    const slideshowInfoAlignment = this.props.options.behaviourParams_gallery_horizontal_slideshowInfo_buttonsAlignment;\n    const calculatedItemSpacing =\n      this.props.options.layoutParams_structure_itemSpacing / 2 + (this.isFullWidthGallery() ? 50 : 0);\n\n    const side =\n      slideshowInfoAlignment ===\n      GALLERY_CONSTS[optionsMap.behaviourParams.gallery.horizontal.slideshowInfo.buttonsAlignment].RIGHT\n        ? { left: `${calculatedItemSpacing / 2}px` }\n        : {\n            right: `${\n              calculatedItemSpacing / 2 +\n              (this.props.options.behaviourParams_gallery_horizontal_slideshowInfo_enableCounter\n                ? this.calcSlideshowCounterWidth()\n                : 0)\n            }px`,\n          };\n    return (\n      <button\n        className={'auto-slideshow-button'}\n        onClick={() => {\n          this.onAutoSlideShowButtonClick();\n        }}\n        onKeyDown={this.onAutoSlideshowAutoPlayKeyPress}\n        data-hook=\"auto-slideshow-button\"\n        title={'slideshow auto play'}\n        aria-pressed={this.state.pauseAutoSlideshowClicked}\n        tabIndex={0}\n        style={{\n          top: `calc(100% - ${this.props.options.layoutParams_info_height}px + 3px)`,\n          ...side,\n        }}\n      >\n        {this.state.pauseAutoSlideshowClicked ? (\n          <PlayIcon width=\"10px\" height=\"100%\" />\n        ) : (\n          <PauseIcon width=\"10px\" height=\"100%\" />\n        )}\n      </button>\n    );\n  }\n\n  createSlideShowNumbers() {\n    if (!this.props.options.behaviourParams_gallery_horizontal_slideshowInfo_enableCounter) {\n      return false;\n    }\n    const { totalItemsCount } = this.props;\n    const slideshowInfoAlignment = this.props.options.behaviourParams_gallery_horizontal_slideshowInfo_buttonsAlignment;\n\n    const calculatedItemSpacing =\n      this.props.options.layoutParams_structure_itemSpacing / 2 + (this.isFullWidthGallery() ? 50 : 0);\n\n    const leftMargin = this.shouldCreateSlideShowPlayButton\n      ? calculatedItemSpacing / 2 + 25\n      : calculatedItemSpacing / 2;\n\n    const side =\n      slideshowInfoAlignment ===\n      GALLERY_CONSTS[optionsMap.behaviourParams.gallery.horizontal.slideshowInfo.buttonsAlignment].RIGHT\n        ? { left: `${leftMargin}px` }\n        : { right: `${calculatedItemSpacing / 2}px` };\n\n    return (\n      <div\n        className={'auto-slideshow-counter'}\n        data-hook=\"auto-slideshow-counter\"\n        style={{\n          top: `calc(100% - ${this.props.options.layoutParams_info_height}px + 3px)`,\n          ...side,\n        }}\n      >\n        <div>{(this.state.activeIndex % totalItemsCount) + 1 + '/' + totalItemsCount}</div>\n      </div>\n    );\n  }\n\n  getCustomNavigationPanel = () => {\n    if (typeof this.props.customComponents?.EXPERIMENTAL_customNavigationPanelRenderer === 'function') {\n      return this.props.customComponents.EXPERIMENTAL_customNavigationPanelRenderer;\n    } else {\n      return false;\n    }\n  };\n  createOrGetCustomNavigationPanelAPI = () => {\n    const isRTL =\n      this.props.options.behaviourParams_gallery_layoutDirection ===\n      GALLERY_CONSTS[optionsMap.behaviourParams.gallery.layoutDirection].RIGHT_TO_LEFT;\n    if (!this.navigationPanelAPI) {\n      this.navigationPanelAPI = {\n        onGalleryNavigationStart: (handler) => {\n          this.props.actions.eventsListener(GALLERY_CONSTS.events.GALLERY_NAVIGATION_START, handler);\n        },\n        next: () => {\n          this.next({\n            scrollDuration: 400,\n            isKeyboardNavigation: false,\n            isAutoTrigger: false,\n            avoidIndividualNavigation: false,\n            isContinuousScrolling: false,\n            direction: isRTL ? -1 : 1,\n          });\n        },\n        previous: () => {\n          this.next({\n            scrollDuration: 400,\n            isKeyboardNavigation: false,\n            isAutoTrigger: false,\n            avoidIndividualNavigation: false,\n            isContinuousScrolling: false,\n            direction: isRTL ? 1 : -1,\n          });\n        },\n        navigateNextEnabled: () => {\n          return isRTL ? !this.state.hideLeftArrow : !this.state.hideRightArrow;\n        },\n        navigatePreviousEnabled: () => {\n          return isRTL ? !this.state.hideRightArrow : !this.state.hideLeftArrow;\n        },\n        currentIndex: () => {\n          return this.state.activeIndex;\n        },\n        triggerItemClick: (e, { itemIndex = this.state.activeIndex } = {}) => {\n          const galleryConfig = this.createGalleryConfig();\n          const item = this.props.galleryStructure.galleryItems[itemIndex % this.props.totalItemsCount];\n          const props = item?.renderProps({\n            ...galleryConfig,\n            visible: true,\n          });\n\n          this.props.actions.eventsListener(GALLERY_CONSTS.events.ITEM_ACTION_TRIGGERED, props, e);\n        },\n        navigateToIndex: (itemIdx, animationDuration = 400) => {\n          this.scrollToIndex({ itemIdx, scrollDuration: animationDuration });\n        },\n      };\n    }\n    this.props.actions.eventsListener(GALLERY_CONSTS.events.NAVIGATION_API_READY, this.navigationPanelAPI);\n    return this.navigationPanelAPI;\n  };\n\n  getNavigationPanelArray() {\n    if (!this.props.options.layoutParams_thumbnails_enable) {\n      return [false, false];\n    }\n\n    const customNavigationPanelRenderer = this.getCustomNavigationPanel();\n\n    let navigationPanel;\n    if (customNavigationPanelRenderer) {\n      const { galleryHeight, galleryWidth, height, width } = this.props.container;\n      const customNavigationPanelInlineStyles = getCustomNavigationPanelInlineStyles({\n        galleryHeight,\n        galleryWidth,\n        height,\n        width,\n        galleryThumbnailsAlignment: this.props.options.layoutParams_thumbnails_alignment,\n        navigationPanelPosition: this.props.options.layoutParams_thumbnails_position,\n      });\n      navigationPanel = (domOrder) => (\n        <div className=\"custom-navigation-panel\" style={customNavigationPanelInlineStyles}>\n          {customNavigationPanelRenderer({\n            ...this.props,\n            domOrder,\n            activeIndex: this.state.activeIndex,\n            navigationToIdxCB: this.scrollToThumbnail,\n            navigationPanelAPI: this.createOrGetCustomNavigationPanelAPI(),\n          })}\n        </div>\n      );\n    } else {\n      navigationPanel = (domOrder) => (\n        <NavigationPanel\n          {...this.props}\n          domOrder={domOrder}\n          activeIndex={this.state.activeIndex}\n          navigationToIdxCB={this.scrollToThumbnail}\n        />\n      );\n    }\n\n    const navigationPanels = [];\n    if (\n      this.props.options.layoutParams_thumbnails_position ===\n      GALLERY_CONSTS[optionsMap.layoutParams.thumbnails.position].ON_GALLERY\n    ) {\n      navigationPanels[0] = false;\n      navigationPanels[1] = navigationPanel('after');\n      return navigationPanels;\n    } else {\n      //OUTSIDE_GALLERY\n      if (this.props.isPrerenderMode) {\n        navigationPanels[0] = navigationPanel('before');\n        navigationPanels[1] = navigationPanel('after');\n        return navigationPanels;\n      }\n      switch (this.props.options.layoutParams_thumbnails_alignment) {\n        case GALLERY_CONSTS[optionsMap.layoutParams.thumbnails.alignment].TOP:\n        case GALLERY_CONSTS[optionsMap.layoutParams.thumbnails.alignment].LEFT:\n          navigationPanels[0] = navigationPanel('before');\n          navigationPanels[1] = false;\n          break;\n        case GALLERY_CONSTS[optionsMap.layoutParams.thumbnails.alignment].RIGHT:\n        case GALLERY_CONSTS[optionsMap.layoutParams.thumbnails.alignment].BOTTOM:\n          navigationPanels[0] = false;\n          navigationPanels[1] = navigationPanel('after');\n          break;\n      }\n      return navigationPanels;\n    }\n  }\n\n  getClassNames() {\n    let classNames = 'pro-gallery-parent-container';\n    if (GALLERY_CONSTS.isLayout('SLIDER')(this.props.options)) {\n      classNames += ' gallery-slider';\n    } else if (this.props.options.layoutParams_thumbnails_enable) {\n      classNames += ' gallery-thumbnails';\n    } else if (GALLERY_CONSTS.isLayout('COLUMN')(this.props.options)) {\n      classNames += ' gallery-columns';\n    }\n\n    return classNames;\n  }\n  getStyles() {\n    return {\n      margin:\n        -1 *\n        (this.props.options.layoutParams_structure_itemSpacing / 2 -\n          this.props.options.layoutParams_structure_gallerySpacing),\n      width: this.props.container.width,\n      height: this.props.container.height,\n    };\n  }\n\n  getScrollPosition(props = this.props) {\n    return this.scrollElement ? this.scrollPosition(props) : 0;\n  }\n\n  scrollPositionAtTheMiddleOfTheGallery() {\n    return this.getScrollPosition() + this.props.container.galleryWidth / 2;\n  }\n\n  scrollPositionAtTheAndOfTheGallery(props = this.props) {\n    return this.getScrollPosition(props) + props.container.galleryWidth;\n  }\n\n  scrollPosition(props = this.props) {\n    return (\n      (props.options.behaviourParams_gallery_layoutDirection ===\n      GALLERY_CONSTS[optionsMap.behaviourParams.gallery.layoutDirection].RIGHT_TO_LEFT\n        ? -1\n        : 1) * this.scrollElement.scrollLeft\n    );\n  }\n\n  //-----------------------------------------| REACT |--------------------------------------------//\n\n  updateAutoSlideShowState(props = this.props) {\n    const { isGalleryInHover, options, settings } = props;\n    const { pauseAutoSlideshowClicked, shouldBlockAutoSlideshow, isInView, isInFocus } = this.state;\n    const shouldPauseDueToHover = isGalleryInHover && options.behaviourParams_gallery_horizontal_autoSlide_pauseOnHover;\n    const shouldPauseDueToFocus = isInFocus && settings?.isAccessible;\n    let shouldBlock = !isInView || pauseAutoSlideshowClicked || shouldPauseDueToFocus || shouldPauseDueToHover;\n    if (shouldBlockAutoSlideshow !== shouldBlock) {\n      this.setState({ shouldBlockAutoSlideshow: shouldBlock }, () => {\n        this.startAutoSlideshowIfNeeded(options);\n      });\n    }\n  }\n\n  onFocus() {\n    this.setState({ isInFocus: true }, () => {\n      this.updateAutoSlideShowState(this.props);\n    });\n  }\n\n  onBlur() {\n    this.setState({ isInFocus: false }, () => {\n      this.updateAutoSlideShowState(this.props);\n    });\n  }\n\n  UNSAFE_componentWillReceiveProps(props) {\n    const isInView = props.isInViewport && (props.isInDisplay ?? true);\n    const oldIsInView = this.props.isInViewport && (this.props.isInDisplay ?? true);\n    if (isInView !== oldIsInView) {\n      this.setState({ isInView }, () => {\n        this.updateAutoSlideShowState(props);\n      });\n    } else if (this.props.isGalleryInHover !== props.isGalleryInHover) {\n      this.updateAutoSlideShowState(props);\n    } else if (this.props.container.scrollBase != props.container.scrollBase) {\n      this.forceUpdate(() => {\n        this.startAutoSlideshowIfNeeded(props.options);\n      });\n    }\n    if (this.props.activeIndex !== props.activeIndex) {\n      utils.setStateAndLog(\n        this,\n        'Next Item',\n        {\n          activeIndex: props.activeIndex,\n        },\n        () => {\n          this.onCurrentItemChanged(props);\n        }\n      );\n    }\n    if (\n      this.props.totalItemsCount !== props.totalItemsCount ||\n      this.props.container.galleryHeight !== props.container.galleryHeight ||\n      this.props.container.galleryWidth !== props.container.galleryWidth ||\n      this.state.activeIndex !== props.activeIndex\n    ) {\n      this.removeArrowsIfNeeded(props);\n    }\n    if (isEditMode() || isPreviewMode()) {\n      if (\n        //check that the change is related to the slideshow settings\n        ((this.props.options.behaviourParams_gallery_horizontal_autoSlide_behaviour !==\n          GALLERY_CONSTS[optionsMap.behaviourParams.gallery.horizontal.autoSlide.behaviour].OFF) !==\n          props.options.behaviourParams_gallery_horizontal_autoSlide_behaviour) !==\n          GALLERY_CONSTS[optionsMap.behaviourParams.gallery.horizontal.autoSlide.behaviour].OFF ||\n        this.props.options.behaviourParams_gallery_horizontal_autoSlide_interval !==\n          props.options.behaviourParams_gallery_horizontal_autoSlide_interval\n      ) {\n        this.startAutoSlideshowIfNeeded(props.options);\n      }\n    }\n\n    this.shouldCreateSlideShowPlayButton =\n      props.options.behaviourParams_gallery_horizontal_autoSlide_behaviour !==\n        GALLERY_CONSTS[optionsMap.behaviourParams.gallery.horizontal.autoSlide.behaviour].OFF &&\n      props.options.behaviourParams_gallery_horizontal_slideshowInfo_enablePlayButton;\n  }\n\n  removeArrowsIfNeeded(props = this.props) {\n    const isRTL =\n      props.options.behaviourParams_gallery_layoutDirection ===\n      GALLERY_CONSTS[optionsMap.behaviourParams.gallery.layoutDirection].RIGHT_TO_LEFT;\n    const { hideLeftArrow, hideRightArrow } = this.state;\n\n    const isScrollStart = this.isScrollStart(props);\n    const isFirstItem = this.isFirstItem();\n    const isScrollEnd = this.isScrollEnd(props);\n    const isLastItem = this.isLastItem();\n\n    const atStart = isScrollStart || isFirstItem;\n    const atEnd = isScrollEnd || isLastItem;\n\n    const nextHideLeft = (!isRTL && atStart) || (isRTL && atEnd);\n    const nextHideRight = (isRTL && atStart) || (!isRTL && atEnd);\n    const shouldUpdateArrowsState = !!nextHideLeft !== !!hideLeftArrow || !!nextHideRight !== !!hideRightArrow;\n\n    if (shouldUpdateArrowsState) {\n      this.setState({\n        hideLeftArrow: !!nextHideLeft,\n        hideRightArrow: !!nextHideRight,\n      });\n    }\n  }\n\n  componentDidMount() {\n    this.scrollElement = window.document.querySelector(\n      `#pro-gallery-${this.props.id} #gallery-horizontal-scroll-${this.props.id}`\n    );\n    if (this.scrollElement) {\n      this.scrollElement.addEventListener('scroll', this._setCurrentItemByScroll);\n    }\n    if (this.state.activeIndex > 0) {\n      this.props.actions.scrollToItem(this.state.activeIndex);\n      this.onCurrentItemChanged();\n    } else {\n      this.setCurrentItemByScroll();\n    }\n    this.startAutoSlideshowIfNeeded(this.props.options);\n    this.createOrGetCustomNavigationPanelAPI();\n  }\n\n  componentWillUnmount() {\n    if (this.scrollElement) {\n      this.scrollElement.removeEventListener('scroll', this._setCurrentItemByScroll);\n    }\n  }\n\n  //-----------------------------------------| RENDER |--------------------------------------------//\n\n  render() {\n    if (utils.isVerbose()) {\n      console.count('galleryView render');\n      console.count('Rendering Gallery count');\n      console.time('Rendering Gallery took ');\n    }\n\n    const gallery = this.createGallery();\n    const navigationPanel = this.getNavigationPanelArray();\n\n    if (utils.isVerbose()) {\n      console.timeEnd('Rendering Gallery took ');\n    }\n\n    return (\n      <div\n        className={this.getClassNames()}\n        style={this.getStyles()}\n        onKeyDown={this.handleSlideshowKeyPress}\n        {...utils.getAriaAttributes({\n          proGalleryRole: this.props.proGalleryRole,\n          proGalleryRegionLabel: this.props.proGalleryRegionLabel,\n        })}\n        onFocus={this.onFocus}\n        onBlur={this.onBlur}\n      >\n        {navigationPanel[0]}\n        {gallery}\n        {navigationPanel[1]}\n      </div>\n    );\n  }\n}\n\nexport default SlideshowView;\n","import { window } from 'pro-gallery-lib';\n\n// Promise-wrapping class\nexport class Deferred {\n  constructor() {\n    this.promise = new Promise((resolve, reject) => {\n      this.reject = (...args) => {\n        this.isPending = false;\n        reject(...args);\n      };\n      this.resolve = (...args) => {\n        this.isPending = false;\n        resolve(...args);\n      };\n      this.isPending = true;\n    });\n  }\n}\n\nexport function isGalleryInViewport({ container, scrollTop }) {\n  try {\n    const isTopVisible = container.scrollBase < scrollTop + window.innerHeight;\n    const isBottomVisible = container.scrollBase + container.galleryHeight > scrollTop;\n    return isTopVisible && isBottomVisible;\n  } catch (e) {\n    console.warn('Could not calculate viewport', e);\n    return true;\n  }\n}\n","import { optionsMap, utils } from 'pro-gallery-lib';\nimport { GALLERY_CONSTS } from 'pro-gallery-lib';\nimport { Deferred } from '../gallery/proGallery/galleryHelpers.js';\n\nexport function scrollToItemImp(scrollParams) {\n  let to, from;\n  const {\n    scrollMarginCorrection = 0,\n    durationInMS,\n    horizontalElement,\n    scrollingElement,\n    isRTL,\n    scrollDirection,\n    galleryWidth,\n    galleryHeight,\n    totalWidth,\n    top,\n    items,\n    itemIdx,\n    fixedScroll,\n    slideTransition,\n    isContinuousScrolling,\n    autoSlideshowContinuousSpeed,\n    itemSpacing,\n  } = scrollParams;\n\n  const rtlFix = isRTL ? -1 : 1;\n  //default = scroll by half the container size\n  if (scrollDirection === GALLERY_CONSTS[optionsMap.layoutParams.structure.scrollDirection].HORIZONTAL) {\n    from = horizontalElement.scrollLeft * rtlFix;\n    to = from + (itemIdx * galleryWidth) / 2;\n  } else {\n    from = top;\n    to = top + (itemIdx * galleryHeight) / 2;\n  }\n\n  if (fixedScroll !== true) {\n    //scroll to specific item\n    if (utils.isVerbose()) {\n      console.log('Scrolling to items #' + itemIdx);\n    }\n\n    const item = items.find((itm) => itm.idx === itemIdx);\n    to =\n      scrollDirection === GALLERY_CONSTS[optionsMap.layoutParams.structure.scrollDirection].HORIZONTAL\n        ? utils.get(item, 'offset.left')\n        : utils.get(item, 'offset.top');\n\n    if (utils.isVerbose()) {\n      console.log('Scrolling to position ' + to, item);\n    }\n\n    if (!(to >= 0)) {\n      utils.isVerbose() && console.warn('Position not found, not scrolling');\n      return new Promise((res) => res());\n    }\n\n    if (scrollDirection === GALLERY_CONSTS[optionsMap.layoutParams.structure.scrollDirection].HORIZONTAL) {\n      //set scroll to place the item in the middle of the component\n      const diff = (galleryWidth - item.width - itemSpacing) / 2;\n      to -= diff;\n      to = Math.max(0, to);\n      to = Math.min(to, totalWidth - galleryWidth + scrollMarginCorrection);\n      to *= rtlFix;\n      from *= rtlFix;\n      if (utils.isVerbose()) {\n        console.log('Scrolling to new position ' + to, this);\n      }\n    }\n  }\n  if (scrollDirection === GALLERY_CONSTS[optionsMap.layoutParams.structure.scrollDirection].HORIZONTAL) {\n    return horizontalCssScrollTo({\n      scroller: horizontalElement,\n      from: Math.round(from),\n      to: Math.round(to),\n      duration: durationInMS,\n      isRTL,\n      slideTransition: slideTransition,\n      isContinuousScrolling,\n      autoSlideshowContinuousSpeed,\n    });\n  } else {\n    return new Promise((resolve) => {\n      scrollingElement.vertical().scrollTo(0, to);\n      resolve(to);\n    });\n  }\n}\nexport function scrollToGroupImp(scrollParams) {\n  let to, from;\n  const {\n    scrollMarginCorrection = 0,\n    durationInMS,\n    horizontalElement,\n    scrollingElement,\n    isRTL,\n    scrollDirection,\n    galleryWidth,\n    galleryHeight,\n    totalWidth,\n    top,\n    groups,\n    groupIdx,\n    fixedScroll,\n    slideTransition,\n    isContinuousScrolling,\n    autoSlideshowContinuousSpeed,\n    itemSpacing,\n  } = scrollParams;\n\n  const rtlFix = isRTL ? -1 : 1;\n  //default = scroll by half the container size\n  if (scrollDirection === GALLERY_CONSTS[optionsMap.layoutParams.structure.scrollDirection].HORIZONTAL) {\n    from = horizontalElement.scrollLeft;\n    to = from + (groupIdx * galleryWidth) / 2;\n    // console.log('[RTL SCROLL] scrollTogroupImp: ', from, to);\n  } else {\n    from = top;\n    to = top + (groupIdx * galleryHeight) / 2;\n  }\n\n  if (fixedScroll !== true) {\n    //scroll to specific group\n    if (utils.isVerbose()) {\n      console.log('Scrolling to groups #' + groupIdx);\n    }\n\n    const group = groups.find((grp) => grp.idx === groupIdx);\n    to =\n      scrollDirection === GALLERY_CONSTS[optionsMap.layoutParams.structure.scrollDirection].HORIZONTAL\n        ? utils.get(group, 'left')\n        : utils.get(group, 'top');\n\n    if (utils.isVerbose()) {\n      console.log('Scrolling to position ' + to, group);\n    }\n\n    if (!(to >= 0)) {\n      utils.isVerbose() && console.warn('Position not found, not scrolling');\n      return new Promise((res) => res());\n    }\n\n    if (scrollDirection === GALLERY_CONSTS[optionsMap.layoutParams.structure.scrollDirection].HORIZONTAL) {\n      //set scroll to place the group in the middle of the component\n      const diff = (galleryWidth - group.width - itemSpacing) / 2;\n      to -= diff;\n      to = Math.max(0, to);\n      to = Math.min(to, totalWidth - galleryWidth + scrollMarginCorrection);\n      to *= rtlFix;\n      if (utils.isVerbose()) {\n        console.log('Scrolling to new position ' + to, this);\n      }\n    }\n  }\n  if (scrollDirection === GALLERY_CONSTS[optionsMap.layoutParams.structure.scrollDirection].HORIZONTAL) {\n    return horizontalCssScrollTo({\n      scroller: horizontalElement,\n      from: Math.round(from),\n      to: Math.round(to),\n      duration: durationInMS,\n      isRTL,\n      slideTransition: slideTransition,\n      isContinuousScrolling,\n      autoSlideshowContinuousSpeed,\n    });\n  } else {\n    return new Promise((resolve) => {\n      scrollingElement.vertical().scrollTo(0, to);\n      resolve(to);\n    });\n  }\n}\n\n// ----- rendererd / visible ----- //\nfunction horizontalCssScrollTo({\n  scroller,\n  from,\n  to,\n  duration,\n  isRTL,\n  slideTransition,\n  isContinuousScrolling,\n  autoSlideshowContinuousSpeed,\n}) {\n  let change = to - from;\n\n  if (change === 0) {\n    return new Promise((resolve) => resolve(to));\n  }\n\n  if (isContinuousScrolling) {\n    duration = (Math.abs(change) / autoSlideshowContinuousSpeed) * 1000;\n  }\n\n  const scrollerInner = scroller.firstChild;\n\n  scroller.setAttribute('data-scrolling', 'true');\n  Object.assign(scroller.style, {\n    'scroll-snap-type': 'none',\n  });\n  Object.assign(\n    scrollerInner.style,\n    {\n      transition: `transform ${duration}ms ${slideTransition}`,\n      '-webkit-transition': `transform ${duration}ms ${slideTransition}`,\n    },\n    {\n      transform: `translateX(${-1 * change}px)`,\n    }\n  );\n\n  const intervals = 10;\n  const scrollTransitionEvent = new CustomEvent('scrollTransition', {\n    detail: change / intervals,\n  });\n  const scrollTransitionInterval = setInterval(() => {\n    scroller.dispatchEvent(scrollTransitionEvent);\n  }, Math.round(duration / intervals));\n  let scrollDeffered = new Deferred();\n  const currentScrollEndTimeout = setTimeout(() => {\n    clearInterval(scrollTransitionInterval);\n    Object.assign(\n      scrollerInner.style,\n      {\n        transition: `none`,\n        '-webkit-transition': `none`,\n      },\n      {\n        transform: `translateX(0px)`,\n      }\n    );\n    scroller.style.removeProperty('scroll-snap-type');\n    scroller.scrollLeft = to;\n    scroller.setAttribute('data-scrolling', '');\n    scrollDeffered.resolve(to);\n  }, duration);\n\n  return {\n    scrollDeffered,\n    scroller,\n    from,\n    to,\n    duration,\n    isRTL,\n    slideTransition,\n    isContinuousScrolling,\n    autoSlideshowContinuousSpeed,\n    currentScrollEndTimeout,\n  };\n}\nfunction animateStopScroll({ scroller, at, isRTL }) {\n  Object.assign(scroller.style, {\n    'scroll-snap-type': 'none',\n  });\n  let scrollDeffered = new Deferred();\n  Object.assign(\n    scroller.firstChild.style,\n    {\n      transition: `none`,\n      '-webkit-transition': `none`,\n    },\n    {\n      transform: `translateX(0px)`,\n    }\n  );\n  scroller.scrollLeft = at;\n  scrollDeffered.resolve(at);\n\n  return {\n    scrollDeffered,\n    scroller,\n    isRTL,\n  };\n}\nexport function haltScroll({ scroller, from, isRTL, currentScrollEndTimeout, scrollDeffered }) {\n  clearTimeout(currentScrollEndTimeout);\n  const scrollerInner = scroller.firstChild;\n  const computedStyle = getComputedStyle(scrollerInner);\n  let transform = computedStyle.getPropertyValue('transform');\n  var matrix = new DOMMatrix(transform);\n\n  const margins = Math.round(parseInt(matrix.m41, 10));\n  from = from - margins;\n\n  animateStopScroll({\n    scroller,\n    at: from,\n    isRTL,\n  });\n  scrollDeffered.resolve(from);\n}\n","import React from 'react';\nimport { utils, GALLERY_CONSTS, optionsMap } from 'pro-gallery-lib';\nimport { cssScrollHelper } from '../../helpers/cssScrollHelper.js';\n\nexport default class ScrollIndicator extends React.Component {\n  constructor(props) {\n    super();\n\n    this.state = {\n      scrollTop: 0,\n      scrollLeft: 0,\n    };\n    this.debouncedOnScroll = utils.debounce(props.onScroll, 50);\n  }\n\n  removeScrollListener() {\n    if (this.scrollEventListenerSet) {\n      const scrollingElement = this.props.scrollingElement;\n      try {\n        scrollingElement.vertical().removeEventListener('scroll', this.onVerticalScroll);\n      } catch (e) {\n        //\n      }\n\n      try {\n        const { scrollDirection } = this.props;\n        if (scrollDirection === GALLERY_CONSTS[optionsMap.layoutParams.structure.scrollDirection].HORIZONTAL) {\n          scrollingElement.horizontal().removeEventListener('scroll', this.onHorizontalScroll);\n        }\n      } catch (e) {\n        //\n      }\n      this.scrollEventListenerSet = false;\n    }\n  }\n\n  initScrollListener() {\n    if (this.scrollEventListenerSet) {\n      this.removeScrollListener();\n    }\n\n    this.scrollEventListenerSet = true;\n    const scrollingElement = this.props.scrollingElement;\n    //Horizontal Scroll\n    this.onHorizontalScrollTransition = ({ detail }) => {\n      const step = Math.round(detail);\n      if (step >= 0) {\n        if (\n          this.props.galleryScrollDirection ===\n          GALLERY_CONSTS[optionsMap.layoutParams.structure.scrollDirection].HORIZONTAL\n        ) {\n          this.setState({\n            scrollLeft: this.state.scrollLeft + step,\n          });\n        }\n      }\n    };\n\n    this.onHorizontalScroll = (e) => {\n      this.props.setGotFirstScrollIfNeeded();\n      const target = e.currentTarget || e.target || e;\n      let left = target && (target.scrollX ?? target.scrollLeft ?? target.x);\n      if (this.props.isRTL) {\n        left = Math.abs(left); //this.props.totalWidth - left;\n      }\n      if (left >= 0) {\n        if (\n          this.props.galleryScrollDirection ===\n          GALLERY_CONSTS[optionsMap.layoutParams.structure.scrollDirection].HORIZONTAL\n        ) {\n          this.setState({\n            scrollTop: left,\n            scrollLeft: left,\n          });\n          this.props.getMoreItemsIfNeeded(left);\n          this.debouncedOnScroll({ left });\n        }\n      }\n    };\n\n    if (\n      this.props.galleryScrollDirection === GALLERY_CONSTS[optionsMap.layoutParams.structure.scrollDirection].HORIZONTAL\n    ) {\n      try {\n        scrollingElement?.horizontal()?.addEventListener('scroll', this.onHorizontalScroll);\n        scrollingElement?.horizontal()?.addEventListener('scrollTransition', this.onHorizontalScrollTransition);\n      } catch (e) {\n        console.error(e);\n      }\n    }\n    //Vertical Scroll\n    this.onVerticalScroll = (e) => {\n      this.props.setGotFirstScrollIfNeeded();\n      const target = e.currentTarget || e.target || e;\n      const top = target && (target.scrollY || target.scrollTop || target.y);\n      // console.log('[RTL SCROLL] onVerticalScroll: ', left);\n      if (top >= 0) {\n        if (\n          this.props.galleryScrollDirection ===\n          GALLERY_CONSTS[optionsMap.layoutParams.structure.scrollDirection].VERTICAL\n        ) {\n          this.setState({\n            scrollTop: top,\n          });\n          this.props.getMoreItemsIfNeeded(top);\n        }\n        this.debouncedOnScroll({ top });\n      }\n    };\n    try {\n      scrollingElement.vertical().addEventListener('scroll', this.onVerticalScroll);\n    } catch (e) {\n      console.error(e);\n    }\n  }\n\n  componentWillUnmount() {\n    this.removeScrollListener();\n  }\n\n  componentDidMount() {\n    this.initScrollListener();\n  }\n\n  UNSAFE_componentWillReceiveProps(nextProps) {\n    let didChange = false;\n    for (const prop of ['id', 'scrollDirection', 'isRTL', 'totalWidth', 'scrollBase', 'scrollingElement']) {\n      if (nextProps[prop] !== this.props[prop]) {\n        didChange = true;\n        break;\n      }\n    }\n\n    if (didChange) {\n      this.initScrollListener();\n    }\n  }\n\n  render() {\n    const verticalScrollBase =\n      this.props.galleryScrollDirection ===\n        GALLERY_CONSTS[optionsMap.layoutParams.structure.scrollDirection].VERTICAL && this.props.scrollBase > 0\n        ? this.props.scrollBase\n        : 0;\n    const scrollTopWithoutBase = this.state.scrollTop - verticalScrollBase;\n    const { id } = this.props;\n    return (\n      <div\n        key=\"css-scroll-indicator\"\n        data-hook=\"css-scroll-indicator\"\n        data-scroll-base={verticalScrollBase}\n        data-scroll-top={this.state.scrollTop}\n        className={cssScrollHelper.calcScrollClasses(id, scrollTopWithoutBase)}\n        style={{ display: 'none' }}\n      />\n    );\n  }\n}\n","import { GALLERY_CONSTS, optionsMap } from 'pro-gallery-lib';\nimport { cssScrollHelper } from './cssScrollHelper.js';\n\n// // const CDN_URL = 'https://static.wixstatic.com/media/';\n// const desktopWidths = [480, 768, 1024, 1280, 1440, 1680, 1920, 2560];\n// const mobileWidths = [320]; //, 375, 414, 480, 600, 768, 900]; (mobile is currently fixed to 320px)\n\nconst getImageStyle = (item) => ({\n  top: item.offset.top,\n  left: item.offset.left,\n  width: item.width + item.infoWidth,\n  height: item.height + item.infoHeight,\n  innerHeight: item.height,\n});\n\nconst createItemId = ({ galleryId, item }) => {\n  return `#pro-gallery-${galleryId} #${cssScrollHelper.getSellectorDomId(item)}`;\n};\nconst createExactCssForItems = (id = '', galleryItems, options) => {\n  const isRTL =\n    options[optionsMap.behaviourParams.gallery.layoutDirection] ===\n    GALLERY_CONSTS[optionsMap.behaviourParams.gallery.layoutDirection].RIGHT_TO_LEFT;\n\n  let cssStr = '';\n  galleryItems.forEach((item) => {\n    const itemId = createItemId({ galleryId: id, item });\n    const style = getImageStyle(item, options);\n    const T = `top:${style.top}px;`;\n    const L = isRTL ? `right:${style.left}px;left:auto;` : `left:${style.left}px;`;\n    const W = `width:${style.width}px;`;\n    const H = `height:${style.height}px;`;\n    cssStr += `${itemId} {${T}${L}${W}${H}}`;\n    // cssStr += `${id} .gallery-item-wrapper, ${id} .gallery-item-hover, ${id} .gallery-item {${Wvw}${Hvw}}`;\n  });\n  return cssStr;\n};\n\nexport const createCssLayouts = ({ galleryItems, layoutParams, id }) => {\n  const exactCss = [];\n  exactCss.push(createExactCssForItems(id, galleryItems, layoutParams.options));\n  return exactCss;\n};\n","function getDistanceFromScreen({ offset, scroll, itemStart, itemEnd, screenSize }) {\n  const before = scroll - offset - itemEnd;\n  const after = offset + itemStart - screenSize - scroll;\n  return { before, after };\n}\n\nfunction isWithinPaddingVertically({ target, scrollBase, top, bottom, screenHeight, padding }) {\n  const res = getDistanceFromScreen({\n    offset: scrollBase || 0,\n    scroll: target.scrollY,\n    itemStart: top,\n    itemEnd: bottom,\n    screenSize: screenHeight,\n  });\n  return res.before < padding && res.after < padding;\n}\n\nfunction isWithinPaddingHorizontally({ target, left, right, screenWidth, padding }) {\n  const res = getDistanceFromScreen({\n    offset: 0,\n    scroll: target.scrollLeft,\n    itemStart: left,\n    itemEnd: right,\n    screenSize: screenWidth,\n  });\n  return res.before < padding && res.after < padding;\n}\n\nexport { isWithinPaddingHorizontally, isWithinPaddingVertically };\n","import { GALLERY_CONSTS, PlayTrigger, optionsMap, window } from 'pro-gallery-lib';\nimport { isWithinPaddingVertically, isWithinPaddingHorizontally } from './utils.js';\nimport { SetItemIdx, UpdateGalleryData, SetScroll, Scroll, HandleEvents, GetPlayTrigger } from './types.js';\n\nclass VideoScrollHelper {\n  private scrollBase = 0;\n  private items: any[] = [];\n  private currentPlayingIdx = -1;\n  private currentItemCount = 0;\n  private playTrigger?: PlayTrigger;\n  private scrollDirection?: string;\n  private lastVideoPlayed = -1;\n  private readonly itemRatingMap = new Map();\n  private galleryWidth?: number;\n  private videoLoop?: boolean;\n  private top!: number;\n  private left!: number;\n  constructor(\n    public setPlayingItem: SetItemIdx,\n    public readonly isItemSupported: (item: any) => boolean,\n    public readonly getPlayTrigger: GetPlayTrigger\n  ) {}\n\n  //--------------------------updates----------------------------------//\n  public readonly updateGalleryStructure: UpdateGalleryData = ({\n    galleryStructure,\n    galleryWidth,\n    scrollBase,\n    options,\n  }) => {\n    this.galleryWidth = galleryWidth;\n    this.scrollBase = scrollBase;\n    this.playTrigger = this.getPlayTrigger(options);\n    this.videoLoop = options.behaviourParams_item_video_loop;\n    this.scrollDirection = options.layoutParams_structure_scrollDirection;\n    this.currentItemCount = galleryStructure.galleryItems.length;\n    this.items = [];\n    galleryStructure.galleryItems.forEach((item) => {\n      if (this.isItemSupported(item)) {\n        if (!this.itemRatingMap.has(item.id)) {\n          this.itemRatingMap.set(item.id, item.idx);\n        }\n        this.items.push(item);\n      }\n    });\n  };\n\n  //--------------------------triggers--------------------------------//\n\n  public readonly handleEvent: HandleEvents = ({ eventName, eventData }) => {\n    switch (eventName) {\n      case GALLERY_CONSTS.events.ITEM_ACTION_TRIGGERED:\n        //case VIDEO_EVENTS.clicked:\n        this.itemClicked(eventData.idx);\n        break;\n      case GALLERY_CONSTS.events.VIDEO_PAUSED:\n        if (this.currentPlayingIdx === eventData.idx) {\n          this.stop(eventData.idx);\n        }\n        break;\n      case GALLERY_CONSTS.events.HOVER_SET:\n        //case VIDEO_EVENTS.hovered:\n        this.itemHovered(eventData);\n        break;\n      case GALLERY_CONSTS.events.VIDEO_ENDED:\n        //case VIDEO_EVENTS.ended:\n        this.videoEnded(eventData.idx);\n        break;\n      case GALLERY_CONSTS.events.VIDEO_PLAYED:\n        //case VIDEO_EVENTS.ended:\n        this.videoPlayed(eventData.idx);\n        break;\n      case GALLERY_CONSTS.events.VIDEO_ERROR:\n        //case VIDEO_EVENTS.ended:\n        this.videoErrorReported();\n        break;\n      default:\n    }\n  };\n\n  private readonly shouldTriggerAction = (idx: number, action: PlayTrigger = 'HOVER'): boolean => {\n    return this.findItem(idx) && this.shouldTrigger(action);\n  };\n\n  private readonly itemHovered: SetItemIdx = (idx) => {\n    this.shouldTriggerAction(idx, 'HOVER') && this.play(idx);\n  };\n\n  private readonly itemClicked: SetItemIdx = (idx) => {\n    if (!this.shouldTriggerAction(idx, 'CLICK')) {\n      return;\n    }\n    if (this.currentPlayingIdx === idx) {\n      this.stop(idx);\n    } else {\n      this.play(idx);\n    }\n  };\n\n  public readonly onScroll: SetScroll = ({ top, left }) => {\n    this.top = top >= 0 ? top : this.top;\n    this.left = left >= 0 ? left : this.left;\n    if (this.currentPlayingIdx === -1) {\n      this.autoPlayNextItemByRating({ top: this.top, left: this.left });\n    } else {\n      if (!this.isCurrentItemStillVisible({ top: this.top, left: this.left })) {\n        this.stop(this.currentPlayingIdx);\n      }\n      this.autoPlayNextItemByRating({ top: this.top, left: this.left });\n    }\n  };\n\n  private readonly videoEnded: SetItemIdx = (idx) => {\n    this.stop(idx);\n    const scroll = { top: this.top, left: this.left };\n    this.autoPlayNextItemByRating(scroll);\n  };\n\n  private readonly videoPlayed: SetItemIdx = (idx) => {\n    if (this.currentPlayingIdx !== idx && !this.findItem(idx)) {\n      this.play(idx);\n    }\n    this.lastVideoPlayed = idx;\n  };\n\n  private readonly videoErrorReported = (): void => {\n    this.stop();\n  };\n\n  public readonly initializePlayState = (): void => {\n    this.autoPlayNextItemByRating({ top: this.top, left: this.left });\n  };\n\n  //-------------------------------controls------------------------------------//\n\n  private readonly autoPlayNextItemByRating: SetScroll = ({ top, left }) => {\n    if (!this.shouldTrigger('AUTO')) {\n      return;\n    }\n\n    const secondBestRating = {\n      idx: -1,\n      rating: Infinity,\n    };\n    const bestRating = {\n      idx: -1,\n      rating: Infinity,\n    };\n    this.items.some((item) => {\n      if (this.isVisible(item, { top, left })) {\n        const itemRating = this.itemRatingMap.get(item.id);\n        if (itemRating <= bestRating.rating) {\n          secondBestRating.idx = bestRating.idx;\n          secondBestRating.rating = bestRating.rating;\n          bestRating.idx = item.idx;\n          bestRating.rating = itemRating;\n        } else if (itemRating <= secondBestRating.rating) {\n          secondBestRating.idx = item.idx;\n          secondBestRating.rating = itemRating;\n        }\n        return false;\n      } else {\n        if (bestRating.idx >= 0) {\n          return true;\n        }\n        return false;\n      }\n    });\n    if (bestRating.idx >= 0) {\n      if (!this.videoLoop && bestRating.idx === this.lastVideoPlayed) {\n        if (secondBestRating.idx >= 0) {\n          this.play(secondBestRating.idx); //play 2nd in line instead. keep best rating for next by the score he got...\n        } else {\n          return; //cant play same video twice.\n        }\n      } else {\n        this.play(bestRating.idx);\n      }\n    } else {\n      this.lastVideoPlayed = -2; //if there are no videos to play. we can reset this mechanism so that one-video galleries can keep playing the same video\n    }\n  };\n\n  private readonly play: SetItemIdx = (idx) => {\n    this.setPlayingIdx(idx);\n  };\n\n  public readonly stop = (idx = this.currentPlayingIdx): void => {\n    const item = this.findItem(idx);\n    if (item) {\n      const newRating = this.itemRatingMap.get(item.id) + this.currentItemCount;\n      this.itemRatingMap.set(item.id, newRating);\n    }\n    this.setPlayingIdx(-1);\n  };\n\n  private readonly onPlayingIdxChange = (): void => {\n    this.setPlayingItem(this.currentPlayingIdx);\n  };\n  //-------------------------------get/set----------------------------------------//\n\n  private readonly setPlayingIdx: SetItemIdx = (idx) => {\n    if (this.currentPlayingIdx !== idx) {\n      this.currentPlayingIdx = idx;\n      this.onPlayingIdxChange();\n    }\n  };\n\n  //-----------------------------Utils--------------------------------------------//\n\n  private readonly isCurrentItemStillVisible = ({ top, left }: Scroll): boolean => {\n    const currentItemPlacement = this.findItem(this.currentPlayingIdx);\n    if (!currentItemPlacement) {\n      return false;\n    }\n    return this.isVisible(currentItemPlacement, { top, left });\n  };\n  private readonly isVisible = (item: any, { top, left }: Scroll): boolean => {\n    const target = {\n      offsetTop: this.scrollBase || 0,\n      scrollY: top,\n      scrollLeft: left,\n    };\n    const itemPlayVerticalTolerance = (item.offset.top - item.offset.bottom) / 2;\n    const itemPlayHorizontalTolerance = (item.offset.left - item.offset.right) / 2;\n    const visibleVertically = isWithinPaddingVertically({\n      target,\n      scrollBase: this.scrollBase,\n      top: item.offset.top,\n      bottom: item.offset.top + item.style.height,\n      screenHeight: window && window.innerHeight,\n      padding: itemPlayVerticalTolerance,\n    });\n    let visibleHorizontally;\n    if (this.scrollDirection === GALLERY_CONSTS[optionsMap.layoutParams.structure.scrollDirection].VERTICAL) {\n      visibleHorizontally = true;\n    } else {\n      visibleHorizontally = isWithinPaddingHorizontally({\n        target,\n        left: item.offset.left,\n        right: item.offset.left + item.style.width,\n        screenWidth: this.galleryWidth || (window && window.innerWidth),\n        padding: itemPlayHorizontalTolerance,\n      });\n    }\n    return visibleVertically && visibleHorizontally;\n  };\n  private readonly shouldTrigger = (action: PlayTrigger): boolean => {\n    return this.playTrigger === action;\n  };\n  public readonly findItem = (idx: number): any => {\n    return this.items.find((item) => item.idx === idx);\n  };\n}\n\nexport default VideoScrollHelper;\n","import { isEditMode } from 'pro-gallery-lib';\nimport {\n  HandleEvents,\n  MediaScrollHelperHandlerConfiguration,\n  SetItemIdx,\n  SetScroll,\n  UpdateGalleryData,\n} from './types.js';\n\nclass MediaScrollHelper {\n  left: number;\n  top: number;\n  private scrollHelpers: InstanceType<typeof import('./mediaScrollHelper')['default']>[] = [];\n  constructor(private config: MediaScrollHelperHandlerConfiguration) {\n    this.left = 0;\n    this.top = 0;\n  }\n  stop: SetItemIdx = (idx) => {\n    for (const scrollHelper of this.scrollHelpers) {\n      if (scrollHelper.findItem(idx)) {\n        scrollHelper.stop(idx);\n      }\n    }\n  };\n  initializePlayState = (): void => {\n    for (const scrollHelper of this.scrollHelpers) {\n      scrollHelper.initializePlayState();\n    }\n  };\n  onScroll: SetScroll = ({ top, left }) => {\n    if (!this.scrollHelpers.length) {\n      this.top = top || this.top;\n      this.left = left || this.left;\n    }\n    for (const scrollHelper of this.scrollHelpers) {\n      scrollHelper.onScroll({ top, left });\n    }\n  };\n  latestGalleryStructure: any;\n  scrollHelperPromise: Promise<void> | undefined;\n  handleEvent: HandleEvents = (event) => {\n    for (const scrollHelper of this.scrollHelpers) {\n      scrollHelper.handleEvent(event);\n    }\n  };\n  updateGalleryStructure: UpdateGalleryData = (data) => {\n    if (data.isSSR) {\n      //TODO - This could be broken in hydrate since we use inPrerenderMode. (diff between hydrate and ssr are breaking)\n      return;\n    }\n    for (const scrollHelper of this.scrollHelpers) {\n      scrollHelper.updateGalleryStructure(data);\n    }\n    if (this.scrollHelperPromise) {\n      this.latestGalleryStructure = data;\n      return;\n    }\n    this.latestGalleryStructure = data;\n    if (isEditMode()) {\n      return;\n    }\n    if (!data.galleryStructure.galleryItems.some((item) => this.config.some((c) => c.supportedItemsFilter(item)))) {\n      return;\n    }\n    this.scrollHelperPromise = import(/* webpackChunkName: \"proGallery_videoScrollHelper\" */ './mediaScrollHelper.js')\n      .then(({ default: VideoScrollHelper }) => {\n        for (const config of this.config) {\n          this.scrollHelpers.push(\n            // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n            // @ts-ignore\n            new VideoScrollHelper(config.onSetPlayingIdx, config.supportedItemsFilter, config.getPlayTrigger)\n          );\n        }\n        this.updateGalleryStructure(this.latestGalleryStructure);\n        this.onScroll({ top: this.top, left: this.left });\n      })\n      .catch((e) => {\n        console.error('Failed to load videoScrollHelper. error: ' + e);\n      });\n  };\n}\n\nexport default MediaScrollHelper;\n","function findNeighborItem(itemIdx, dir, layoutItems) {\n  const currentItem = layoutItems[itemIdx];\n\n  let neighborItem;\n\n  const findClosestItem = (currentItemX, currentItemY, condition) => {\n    let minDistance = null;\n    let minDistanceItem = {};\n\n    let itemY;\n    let itemX;\n    let distance;\n\n    // each(slice(layoutItems, itemIdx - 50, itemIdx + 50), (item) => {\n    layoutItems.forEach((item) => {\n      itemY = item.offset.top + item.height / 2;\n      itemX = item.offset.left + item.width / 2;\n      distance = Math.sqrt(Math.pow(itemY - currentItemY, 2) + Math.pow(itemX - currentItemX, 2));\n      if (\n        (minDistance === null || (distance > 0 && distance < minDistance)) &&\n        condition(currentItemX, currentItemY, itemX, itemY)\n      ) {\n        minDistance = distance;\n        minDistanceItem = item;\n      }\n    });\n    return minDistanceItem;\n  };\n\n  switch (dir) {\n    case 'up':\n      neighborItem = findClosestItem(\n        currentItem.offset.left + currentItem.width / 2,\n        currentItem.offset.top,\n        (curX, curY, itmX, itmY) => itmY < curY\n      );\n      break;\n\n    case 'left':\n      neighborItem = findClosestItem(\n        currentItem.offset.left,\n        currentItem.offset.top + currentItem.height / 2,\n        (curX, curY, itmX) => itmX < curX\n      );\n      break;\n\n    case 'down':\n      neighborItem = findClosestItem(\n        currentItem.offset.left + currentItem.width / 2,\n        currentItem.offset.bottom,\n        (curX, curY, itmX, itmY) => itmY > curY\n      );\n      break;\n\n    default:\n    case 'right':\n      neighborItem = findClosestItem(\n        currentItem.offset.right,\n        currentItem.offset.top + currentItem.height / 2,\n        (curX, curY, itmX) => itmX > curX\n      );\n      break;\n  }\n\n  if (neighborItem.idx >= 0) {\n    return neighborItem.idx;\n  } else {\n    console.warn('Could not find offset for itemIdx', itemIdx, dir);\n    return itemIdx; //stay on the same item\n  }\n}\n\nexport default findNeighborItem;\n","import React from 'react';\nimport {\n  GALLERY_CONSTS,\n  window,\n  utils,\n  isEditMode,\n  isSEOMode,\n  isPreviewMode,\n  isSiteMode,\n  optionsMap,\n  windowWrapper,\n} from 'pro-gallery-lib';\nimport { ItemsHelper } from 'pro-layouts';\nimport GalleryView from './galleryView.js';\nimport SlideshowView from './slideshowView.js';\nimport { scrollToItemImp, scrollToGroupImp, haltScroll } from '../../helpers/scrollHelper.js';\nimport ScrollIndicator from './galleryScrollIndicator.js';\nimport { createCssLayouts } from '../../helpers/cssLayoutsHelper.js';\nimport { cssScrollHelper } from '../../helpers/cssScrollHelper.js';\nimport MediaScrollHelperWrapper from '../../helpers/mediaScrollHelper/mediaScrollHelperWrapper.js';\nimport findNeighborItem from '../../helpers/layoutUtils.js';\nimport { isGalleryInViewport, Deferred } from './galleryHelpers.js';\n// dummy\n\nexport class GalleryContainer extends React.Component {\n  constructor(props) {\n    super(props);\n    if (utils.isVerbose()) {\n      console.count('[OOISSR] galleryContainer constructor', window.isMock);\n    }\n    this.getMoreItemsIfNeeded = this.getMoreItemsIfNeeded.bind(this);\n    this.setGotFirstScrollIfNeeded = this.setGotFirstScrollIfNeeded.bind(this);\n    this.toggleLoadMoreItems = this.toggleLoadMoreItems.bind(this);\n    this.scrollToItem = this.scrollToItem.bind(this);\n    this.scrollToGroup = this.scrollToGroup.bind(this);\n    this.eventsListener = this.eventsListener.bind(this);\n    this.onGalleryScroll = this.onGalleryScroll.bind(this);\n    this.getVisibleItems = this.getVisibleItems.bind(this);\n    this.findNeighborItem = this.findNeighborItem.bind(this);\n    this.setCurrentSlideshowViewIdx = this.setCurrentSlideshowViewIdx.bind(this);\n    this.getIsScrollLessGallery = this.getIsScrollLessGallery.bind(this);\n    this.onMouseEnter = this.onMouseEnter.bind(this);\n    this.onMouseLeave = this.onMouseLeave.bind(this);\n    this.mediaScrollHelper = new MediaScrollHelperWrapper([\n      {\n        getPlayTrigger: (options) => options.behaviourParams_item_video_playTrigger,\n        onSetPlayingIdx: (idx) => this.setState({ playingVideoIdx: idx }),\n        supportedItemsFilter: (item) =>\n          item.type === 'video' ||\n          (item.type === 'image' && (item.id.includes('_placeholder') || item.isVideoPlaceholder)),\n      },\n      {\n        getPlayTrigger: (options) => options.behaviourParams_item_threeDimensionalScene_playTrigger,\n        onSetPlayingIdx: (idx) => this.setState({ playing3DIdx: idx }),\n        supportedItemsFilter: (item) => item.type === '3d',\n      },\n    ]);\n    const initialState = {\n      scrollPosition: {\n        top: 0,\n        left: 0,\n      },\n      showMoreClickedAtLeastOnce: false,\n      initialGalleryHeight: undefined,\n      needToHandleShowMoreClick: false,\n      gotFirstScrollEvent: props.activeIndex >= 0,\n      playingVideoIdx: -1,\n      playing3DIdx: -1,\n      viewComponent: null,\n      firstUserInteractionExecuted: false,\n      isInHover: false,\n      isInViewport: true,\n      scrollingElement: this.getScrollingElement(),\n    };\n\n    this.state = initialState;\n    this.layoutCss = [];\n\n    this.initialGalleryState = {};\n    try {\n      const galleryState = this.propsToState(props);\n      if (Object.keys(galleryState).length > 0) {\n        this.initialGalleryState = galleryState;\n      }\n    } catch (_e) {\n      console.warn('Cannot create initial state from props', _e);\n    }\n\n    this.state = {\n      ...initialState,\n      ...this.initialGalleryState,\n    };\n\n    //not sure if there needs to be a handleNEwGalleryStructure here with the intial state. currently looks like not\n  }\n  initializeScrollPosition() {\n    if (this.props.activeIndex > 0) {\n      this.scrollToItem(this.props.activeIndex, false, true, 0);\n      const currentItem = this.galleryStructure.items[this.props.activeIndex];\n      this.onGalleryScroll(currentItem.offset);\n    } else {\n      this.onGalleryScroll({ top: window.scrollY });\n    }\n  }\n\n  isScrollingUnavailable(height, viewportHeight) {\n    const extraPadding = 300;\n    if (this.isVerticalGallery()) {\n      // If here then the vertical scrolling is what matters\n      return height <= viewportHeight + extraPadding;\n    } else {\n      // If here it's the horizontal scrolling that matters\n      return this.state.structure.width < this.state.container.width + extraPadding;\n    }\n  }\n\n  // This function runs if site is scroll-less => tries to fetch gallery's items, -- called from didMount only! --\n  async getMoreItemsIfScrollIsDisabled(height, viewportHeight) {\n    //there can be no scroll to trigger getMoreItems, but there could be more items\n    if (this.isScrollingUnavailable(height, viewportHeight)) {\n      const lastItemsCount = this.state.items.length;\n      // Trying to get more items\n      this.getMoreItemsIfNeeded(0).then(() => {\n        // No need to continue calling if no items are left to fetch\n        if (this.state.items.length > lastItemsCount) {\n          const { body, documentElement: html } = document;\n          const viewportHeight = window.innerHeight;\n          const height = Math.max(\n            body.scrollHeight,\n            body.offsetHeight,\n            html.clientHeight,\n            html.scrollHeight,\n            html.offsetHeight\n          );\n          this.getMoreItemsIfScrollIsDisabled(height, viewportHeight);\n        }\n      });\n    }\n  }\n\n  componentDidMount() {\n    windowWrapper.stopUsingMock();\n    const { body, documentElement: html } = document;\n    const viewportHeight = window.innerHeight;\n    const height = Math.max(\n      body.scrollHeight,\n      body.offsetHeight,\n      html.clientHeight,\n      html.scrollHeight,\n      html.offsetHeight\n    );\n    this.initializeScrollPosition();\n    this.getMoreItemsIfScrollIsDisabled(height, viewportHeight);\n    this.handleNewGalleryStructure();\n    this.eventsListener(GALLERY_CONSTS.events.APP_LOADED, {});\n    this.mediaScrollHelper.initializePlayState();\n\n    try {\n      if (typeof window.CustomEvent === 'function') {\n        this.currentHoverChangeEvent = new CustomEvent('current_hover_change');\n      } else {\n        //IE (new CustomEvent is not supported in IE)\n        this.currentHoverChangeEvent = window.document.createEvent('CustomEvent'); // MUST be 'CustomEvent'\n        this.currentHoverChangeEvent.initCustomEvent('current_hover_change', false, false, null);\n      }\n    } catch (e) {\n      console.error(\"could not create 'current_hover_change' customEvent. Error =\", e);\n    }\n\n    if (this.props.id) {\n      this.currentHoverChangeEvent.galleryId = this.props.id;\n    }\n  }\n\n  UNSAFE_componentWillReceiveProps(nextProps) {\n    if (!this.currentHoverChangeEvent.galleryId && nextProps.id) {\n      this.currentHoverChangeEvent.galleryId = nextProps.id;\n    }\n    if (this.props.activeIndex !== nextProps.activeIndex && nextProps.activeIndex !== this.currentSlideshowViewIdx) {\n      this.scrollToItem(nextProps.activeIndex, false, true, 0);\n    }\n\n    const reCreateGallery = () => {\n      const galleryState = this.propsToState(nextProps);\n      if (Object.keys(galleryState).length > 0) {\n        this.setState(galleryState, this.handleNewGalleryStructure);\n      }\n    };\n\n    const getSignificantProps = (props) => {\n      const { id, options, container, items, isInDisplay, isPrerenderMode } = props;\n      return { id, options, container, items, isInDisplay, isPrerenderMode };\n    };\n\n    if (this.reCreateGalleryTimer) {\n      clearTimeout(this.reCreateGalleryTimer);\n    }\n\n    let hasPropsChanged = true;\n    try {\n      const currentSignificantProps = getSignificantProps(this.props);\n      const nextSignificantProps = getSignificantProps(nextProps);\n      hasPropsChanged = JSON.stringify(currentSignificantProps) !== JSON.stringify(nextSignificantProps);\n      if (utils.isVerbose() && hasPropsChanged) {\n        console.log('New props arrived', utils.printableObjectsDiff(currentSignificantProps, nextSignificantProps));\n      }\n    } catch (e) {\n      console.error('Cannot compare props', e);\n    }\n\n    if (hasPropsChanged) {\n      reCreateGallery();\n      if (this.props.isInDisplay !== nextProps.isInDisplay) {\n        this.handleNavigation(nextProps.isInDisplay);\n      }\n    } else {\n      //this is a hack, because in fullwidth, new props arrive without any changes\n      // this.reCreateGalleryTimer = setTimeout(reCreateGallery, 1000);\n    }\n  }\n\n  handleNavigation(isInDisplay) {\n    if (!isInDisplay) {\n      this.mediaScrollHelper.stop();\n    }\n  }\n\n  handleNewGalleryStructure() {\n    //should be called AFTER new state is set\n    const { container, needToHandleShowMoreClick, initialGalleryHeight } = this.state;\n    const isInfinite = this.containerInfiniteGrowthDirection() === 'vertical';\n    let updatedHeight = false;\n    const needToUpdateHeightNotInfinite = !isInfinite && needToHandleShowMoreClick;\n    if (needToUpdateHeightNotInfinite) {\n      const showMoreContainerHeight = 138; //according to the scss\n      updatedHeight = container.height + (initialGalleryHeight - showMoreContainerHeight);\n    }\n    const options = this.props.options;\n    const numOfItems = this.state.items.length;\n    const layoutHeight = updatedHeight || this.props.container.height;\n    const layoutItems = this.props.structure.items;\n    const isFixedHorizontlaGalleryRatio =\n      this.containerInfiniteGrowthDirection() === 'horizontal' &&\n      this.state.options[optionsMap.layoutParams.structure.galleryRatio.value] > 0;\n\n    const onGalleryChangeData = {\n      numOfItems,\n      container,\n      options,\n      layoutHeight,\n      layoutItems,\n      isInfinite,\n      isFixedHorizontlaGalleryRatio,\n      updatedHeight,\n    };\n    if (utils.isVerbose()) {\n      console.log('handleNewGalleryStructure', onGalleryChangeData);\n    }\n    this.eventsListener(GALLERY_CONSTS.events.GALLERY_CHANGE, onGalleryChangeData);\n\n    if (needToHandleShowMoreClick) {\n      this.setState({ needToHandleShowMoreClick: false });\n    }\n  }\n\n  isVerticalGallery() {\n    return (\n      this.state.options[optionsMap.layoutParams.structure.scrollDirection] ===\n      GALLERY_CONSTS[optionsMap.layoutParams.structure.scrollDirection].VERTICAL\n    );\n  }\n  //dummy v5 TODO\n  getIsScrollLessGallery(options) {\n    const slideAnimation = options[optionsMap.behaviourParams.gallery.horizontal.slideAnimation];\n    const scrollDirection = options[optionsMap.layoutParams.structure.scrollDirection];\n    return (\n      scrollDirection === GALLERY_CONSTS[optionsMap.layoutParams.structure.scrollDirection].HORIZONTAL &&\n      slideAnimation !== GALLERY_CONSTS[optionsMap.behaviourParams.gallery.horizontal.slideAnimation].SCROLL\n    );\n  }\n\n  getVisibleItems(items, container, isPrerenderMode) {\n    const { gotFirstScrollEvent } = this.state;\n    const scrollY = this.state?.scrollPosition?.top || 0;\n    const { galleryHeight, scrollBase, galleryWidth } = container;\n    if (\n      isPrerenderMode || // (used to be isSSR, had a hydrate bug, isPrerenderMode is the way to go in terms of hydrate issues)\n      isSEOMode() ||\n      isEditMode() ||\n      gotFirstScrollEvent ||\n      scrollY > 0 ||\n      isPreviewMode() ||\n      this.props.activeIndex > 0\n    ) {\n      return items;\n    }\n\n    let visibleItems = items;\n    try {\n      const windowHeight = window.innerHeight;\n      const isInfinite = this.isVerticalGallery() && this.containerInfiniteGrowthDirection() === 'vertical';\n      const galleryBottom = isInfinite ? Infinity : scrollBase + galleryHeight;\n      const windowBottom = scrollY + windowHeight;\n      const maxItemTop = Math.min(galleryBottom, windowBottom) - scrollBase;\n      if (maxItemTop < 0) {\n        //gallery is below the fold\n        visibleItems = [];\n      } else if (this.isVerticalGallery()) {\n        visibleItems = items.filter((item) => item.offset.top < maxItemTop);\n      } else {\n        visibleItems = items.filter((item) => item.left <= galleryWidth + 20);\n      }\n      if (visibleItems.length < 2 && visibleItems.length < items.length) {\n        //dont render less then 2 items (otherwise slide show Arrow will be removed)\n        visibleItems = items.slice(0, 2);\n      }\n    } catch (e) {\n      console.error('Could not calculate visible items, returning original items', e);\n      visibleItems = items;\n    }\n    return visibleItems;\n  }\n\n  propsToState({ items, options, structure, container, id, createMediaUrl, isPrerenderMode }) {\n    items = items || this.props.items;\n    options = options || this.props.options;\n    container = container || this.props.container;\n    structure = structure || this.props.structure;\n    id = id || this.props.id;\n    createMediaUrl = createMediaUrl || this.props.createMediaUrl;\n\n    this.galleryStructure = ItemsHelper.convertToGalleryItems(structure, {\n      // TODO use same objects in the memory when the galleryItems are changed\n      thumbnailSize: options[optionsMap.layoutParams.thumbnails.size],\n      sharpParams: options.sharpParams,\n      createMediaUrl,\n    });\n\n    // // ------------ TODO. This is using GalleryItem and I am leaving it here for now ---------- //\n\n    const shouldUseScrollCss =\n      !isSEOMode() && (isEditMode() || this.state.gotFirstScrollEvent || this.state.showMoreClickedAtLeastOnce);\n    if (shouldUseScrollCss) {\n      this.getScrollCss({\n        id,\n        items: this.galleryStructure.galleryItems,\n        options,\n        container: container,\n      });\n    }\n    /**\n     * @type {import('../../helpers/mediaScrollHelper/types').ScrollHelperGalleryData}\n     */\n    const scrollHelperNewGalleryStructure = {\n      galleryStructure: this.galleryStructure,\n      galleryWidth: container.galleryWidth,\n      scrollBase: container.scrollBase,\n      options: options,\n      isSSR: utils.isSSR(),\n    };\n\n    this.mediaScrollHelper.updateGalleryStructure(scrollHelperNewGalleryStructure);\n\n    const layoutParams = {\n      items: items,\n      container,\n      options,\n      gotScrollEvent: true,\n    };\n\n    this.createCssLayoutsIfNeeded(layoutParams);\n    this.createDynamicStyles(options[optionsMap.behaviourParams.item.overlay.backgroundColor], isPrerenderMode);\n\n    const newState = {\n      items,\n      options,\n      container,\n      structure,\n      scrollingElement: this.getScrollingElement(),\n    };\n    return newState;\n  }\n\n  getScrollingElement() {\n    const horizontal = () =>\n      window.document.querySelector(`#pro-gallery-${this.props.id} #gallery-horizontal-scroll-${this.props.id}`);\n    const vertical = this.props.scrollingElement ? () => this.props.scrollingElement : () => window;\n    return { vertical, horizontal };\n  }\n\n  scrollToItem(\n    itemIdx,\n    fixedScroll,\n    isManual,\n    durationInMS = 0,\n    scrollMarginCorrection,\n    isContinuousScrolling = false\n  ) {\n    if (itemIdx >= 0) {\n      if (!this.state.gotFirstScrollEvent) {\n        this.setState({\n          gotFirstScrollEvent: true,\n        });\n      }\n      if (this.getIsScrollLessGallery(this.state.options)) {\n        return;\n      }\n      const scrollingElement = this.state.scrollingElement;\n      const horizontalElement = scrollingElement.horizontal();\n      try {\n        const scrollParams = {\n          scrollMarginCorrection,\n          isRTL:\n            this.state.options[optionsMap.behaviourParams.gallery.layoutDirection] ===\n            GALLERY_CONSTS[optionsMap.behaviourParams.gallery.layoutDirection].RIGHT_TO_LEFT,\n          scrollDirection: this.state.options[optionsMap.layoutParams.structure.scrollDirection],\n          galleryWidth: this.state.container.galleryWidth,\n          galleryHeight: this.state.container.galleryHeight,\n          top: 0,\n          items: this.galleryStructure.items,\n          totalWidth: this.galleryStructure.width,\n          itemIdx,\n          fixedScroll,\n          isManual,\n          scrollingElement,\n          horizontalElement,\n          durationInMS,\n          slideTransition: this.state.options[optionsMap.behaviourParams.gallery.horizontal.slideTransition],\n          isContinuousScrolling,\n          autoSlideshowContinuousSpeed:\n            this.state.options[optionsMap.behaviourParams.gallery.horizontal.autoSlide.speed],\n          itemSpacing: this.state.options[optionsMap.layoutParams.structure.itemSpacing],\n        };\n        this.eventsListener(GALLERY_CONSTS.events.GALLERY_NAVIGATION_START, {\n          current: 'scrollToItem',\n          scrollParams,\n        });\n        this.currentScrollData = scrollToItemImp(scrollParams);\n        return this.currentScrollData.scrollDeffered.promise.then(() => {\n          this.currentScrollData = null;\n        });\n      } catch (e) {\n        console.error(\n          'error:',\n          e,\n          ' pro-gallery, scrollToItem, cannot get scrollParams, ',\n          'isEditMode =',\n          isEditMode(),\n          ' isPreviewMode =',\n          isPreviewMode(),\n          ' isSiteMode =',\n          isSiteMode(),\n          ' this.state.options =',\n          this.state.options,\n          ' this.state.container =',\n          this.state.container,\n          ' this.galleryStructure =',\n          this.galleryStructure\n        );\n      }\n    }\n  }\n  scrollToGroup(\n    groupIdx,\n    fixedScroll,\n    isManual,\n    durationInMS = 0,\n    scrollMarginCorrection,\n    isContinuousScrolling = false\n  ) {\n    if (groupIdx >= 0) {\n      const scrollingElement = this.state.scrollingElement;\n      const horizontalElement = scrollingElement.horizontal();\n      try {\n        const scrollParams = {\n          scrollMarginCorrection,\n          isRTL:\n            this.state.options[optionsMap.behaviourParams.gallery.layoutDirection] ===\n            GALLERY_CONSTS[optionsMap.behaviourParams.gallery.layoutDirection].RIGHT_TO_LEFT,\n          scrollDirection: this.state.options[optionsMap.layoutParams.structure.scrollDirection],\n          galleryWidth: this.state.container.galleryWidth,\n          galleryHeight: this.state.container.galleryHeight,\n          top: 0,\n          groups: this.galleryStructure.groups,\n          totalWidth: this.galleryStructure.width,\n          groupIdx,\n          fixedScroll,\n          isManual,\n          scrollingElement,\n          horizontalElement,\n          durationInMS,\n          slideTransition: this.state.options[optionsMap.behaviourParams.gallery.horizontal.slideTransition],\n          isContinuousScrolling,\n          autoSlideshowContinuousSpeed:\n            this.state.options[optionsMap.behaviourParams.gallery.horizontal.autoSlide.speed],\n          itemSpacing: this.state.options[optionsMap.layoutParams.structure.itemSpacing],\n        };\n        this.eventsListener(GALLERY_CONSTS.events.GALLERY_NAVIGATION_START, {\n          current: 'scrollToGroup',\n          scrollParams,\n        });\n        this.currentScrollData = scrollToGroupImp(scrollParams);\n        return this.currentScrollData.scrollDeffered.promise.then(() => {\n          this.currentScrollData = null;\n        });\n      } catch (e) {\n        console.error(\n          'error:',\n          e,\n          ' pro-gallery, scrollToGroup, cannot get scrollParams, ',\n          'isEditMode =',\n          isEditMode(),\n          ' isPreviewMode =',\n          isPreviewMode(),\n          ' isSiteMode =',\n          isSiteMode(),\n          ' this.state.options =',\n          this.state.options,\n          ' this.state.container =',\n          this.state.container,\n          ' this.galleryStructure =',\n          this.galleryStructure\n        );\n      }\n    }\n  }\n\n  containerInfiniteGrowthDirection(options = false) {\n    const _options = options || this.props.options;\n    // return the direction in which the gallery can grow on it's own (aka infinite scroll)\n    const { showMoreClickedAtLeastOnce } = this.state;\n\n    const scrollDirection = _options[optionsMap.layoutParams.structure.scrollDirection];\n    if (scrollDirection === GALLERY_CONSTS[optionsMap.layoutParams.structure.scrollDirection].HORIZONTAL) {\n      return 'horizontal';\n    } else if (this.props.options[optionsMap.behaviourParams.gallery.vertical.loadMore.enable]) {\n      //vertical gallery with showMore button enabled\n      if (\n        showMoreClickedAtLeastOnce &&\n        _options[optionsMap.behaviourParams.gallery.vertical.loadMore.amount] ===\n          GALLERY_CONSTS[optionsMap.behaviourParams.gallery.vertical.loadMore.amount].ALL\n      ) {\n        return 'vertical';\n      } else {\n        return 'none';\n      }\n    } else {\n      return 'vertical';\n    }\n  }\n\n  onGalleryScroll(scrollPosition) {\n    if (this.props.isInDisplay) {\n      this.eventsListener(GALLERY_CONSTS.events.GALLERY_SCROLLED, scrollPosition);\n    }\n  }\n\n  updateVisibility = () => {\n    const isInViewport = isGalleryInViewport({\n      container: this.props.container,\n      scrollTop: this.state.scrollPosition.top,\n    });\n    if (this.state.isInViewport !== isInViewport) {\n      this.setState({\n        isInViewport,\n      });\n    }\n  };\n  setVisibilityIfNeeded = (prevProps, prevState) => {\n    const { container } = this.props;\n    const { scrollPosition } = this.state;\n    if (\n      container.scrollBase !== prevProps.container.scrollBase ||\n      scrollPosition.top !== prevState.scrollPosition.top\n    ) {\n      this.updateVisibility();\n    }\n  };\n  componentDidUpdate(prevProps, prevState) {\n    // in order to update when container is available\n    this.setVisibilityIfNeeded(prevProps, prevState);\n    if (this.props.isPrerenderMode !== prevProps.isPrerenderMode) {\n      const { body, documentElement: html } = document;\n      const viewportHeight = window.innerHeight;\n      const height = Math.max(\n        body.scrollHeight,\n        body.offsetHeight,\n        html.clientHeight,\n        html.scrollHeight,\n        html.offsetHeight\n      );\n      this.getMoreItemsIfScrollIsDisabled(height, viewportHeight);\n    }\n  }\n\n  createDynamicStyles(overlayBackground, isPrerenderMode) {\n    const useSSROpacity = isPrerenderMode && !this.props.settings.disableSSROpacity;\n    this.dynamicStyles = `\n      ${!useSSROpacity ? '' : `#pro-gallery-${this.props.id} .gallery-item-container { opacity: 0 }`}\n      ${\n        !overlayBackground\n          ? ''\n          : `#pro-gallery-${this.props.id} .gallery-item-hover::before { background: ${overlayBackground} !important}`\n      }\n    `.trim();\n  }\n\n  createCssLayoutsIfNeeded(layoutParams) {\n    const { settings = {} } = this.props;\n    const { avoidInlineStyles } = settings;\n    if (avoidInlineStyles) {\n      this.layoutCss = createCssLayouts({\n        layoutParams,\n        isMobile: utils.isMobile(),\n        id: this.props.id,\n        galleryItems: this.galleryStructure.galleryItems,\n      });\n    }\n  }\n\n  getScrollCss({ id, items, options, container }) {\n    this.scrollCss = cssScrollHelper.calcScrollCss({\n      items,\n      options,\n      id,\n      container,\n    });\n  }\n\n  toggleLoadMoreItems() {\n    this.eventsListener(GALLERY_CONSTS.events.LOAD_MORE_CLICKED, this.galleryStructure.galleryItems);\n    const showMoreClickedAtLeastOnce = true;\n    const needToHandleShowMoreClick = true;\n    //before clicking \"load more\" at the first time\n    if (!this.state.showMoreClickedAtLeastOnce) {\n      this.getScrollCss({\n        id: this.props.id,\n        items: this.galleryStructure.galleryItems,\n        options: this.state.options,\n        container: this.state.container,\n      });\n      const initialGalleryHeight = this.state.container.height; //container.height before clicking \"load more\" at the first time\n      this.setState(\n        {\n          showMoreClickedAtLeastOnce,\n          initialGalleryHeight,\n          needToHandleShowMoreClick,\n        },\n        () => {\n          this.handleNewGalleryStructure();\n        }\n      );\n    } else {\n      //from second click\n      this.setState(\n        {\n          needToHandleShowMoreClick,\n        },\n        () => {\n          this.handleNewGalleryStructure();\n        }\n      );\n    }\n  }\n\n  setGotFirstScrollIfNeeded() {\n    if (!this.state.gotFirstScrollEvent) {\n      this.getScrollCss({\n        id: this.props.id,\n        items: this.galleryStructure.galleryItems,\n        options: this.state.options,\n        container: this.state.container,\n      });\n      this.setState({\n        gotFirstScrollEvent: true,\n      });\n    }\n  }\n\n  setCurrentSlideshowViewIdx(idx) {\n    this.currentSlideshowViewIdx = idx;\n  }\n\n  simulateHorizontalScrollToItem(item) {\n    item?.offset && this.onGalleryScroll({ left: item.offset.left });\n  }\n\n  eventsListener(eventName, eventData, event) {\n    this.mediaScrollHelper.handleEvent({\n      eventName,\n      eventData,\n    });\n    if (eventName === GALLERY_CONSTS.events.HOVER_SET) {\n      this.currentHoverChangeEvent.currentHoverIdx = eventData;\n      window.dispatchEvent(this.currentHoverChangeEvent);\n    }\n    if (eventName === GALLERY_CONSTS.events.CURRENT_ITEM_CHANGED) {\n      this.setCurrentSlideshowViewIdx(eventData.idx);\n      if (this.getIsScrollLessGallery(this.state.options)) {\n        this.simulateHorizontalScrollToItem(this.galleryStructure.items[eventData.idx]);\n      }\n    }\n    if (!this.state.firstUserInteractionExecuted) {\n      switch (eventName) {\n        case GALLERY_CONSTS.events.HOVER_SET:\n        case GALLERY_CONSTS.events.LOAD_MORE_CLICKED:\n        case GALLERY_CONSTS.events.ITEM_ACTION_TRIGGERED:\n          this.setState({ firstUserInteractionExecuted: true });\n          break;\n      }\n    }\n    if (typeof this.props.eventsListener === 'function') {\n      switch (eventName) {\n        case GALLERY_CONSTS.events.ITEM_ACTION_TRIGGERED:\n        case GALLERY_CONSTS.events.ITEM_CLICKED:\n          setTimeout(this.props.eventsListener(eventName, eventData, event), 0);\n          break;\n        default:\n          this.props.eventsListener(eventName, eventData, event);\n      }\n    }\n\n    if (eventName === GALLERY_CONSTS.events.GALLERY_SCROLLED) {\n      this.mediaScrollHelper.onScroll(eventData);\n      const newScrollPosition = {\n        ...this.state.scrollPosition,\n        ...eventData,\n      };\n      this.setState({ scrollPosition: newScrollPosition });\n    }\n  }\n\n  getMoreItemsIfNeeded(scrollPos) {\n    if (this.deferredGettingMoreItems?.isPending) {\n      // Already getting more items so do nothing\n    } else {\n      this.deferredGettingMoreItems = new Deferred();\n\n      if (\n        !(\n          this.galleryStructure &&\n          this.galleryStructure.galleryItems &&\n          this.galleryStructure.galleryItems.length > 0 &&\n          this.state.items &&\n          this.state.options &&\n          this.state.container\n        )\n      ) {\n        // No items are fetched -> reject\n        this.deferredGettingMoreItems.reject();\n      } else {\n        //more items can be fetched from the server\n        //TODO - add support for horizontal galleries\n        const scrollDirection = this.state.options[optionsMap.layoutParams.structure.scrollDirection];\n        const galleryEnd =\n          this.galleryStructure[\n            scrollDirection === GALLERY_CONSTS[optionsMap.layoutParams.structure.scrollDirection].HORIZONTAL\n              ? 'width'\n              : 'height'\n          ] +\n          (scrollDirection === GALLERY_CONSTS[optionsMap.layoutParams.structure.scrollDirection].HORIZONTAL\n            ? 0\n            : this.state.container.scrollBase);\n        const screenSize =\n          window[\n            scrollDirection === GALLERY_CONSTS[optionsMap.layoutParams.structure.scrollDirection].HORIZONTAL\n              ? 'innerWidth'\n              : 'innerHeight'\n          ];\n        const scrollEnd = scrollPos + screenSize;\n        const getItemsDistance = scrollPos ? 3 * screenSize : 0; //first scrollPos is 0 falsy. dont load before a scroll happened.\n\n        if (galleryEnd < getItemsDistance + scrollEnd) {\n          //only when the last item turns visible we should try getting more items\n          this.eventsListener(GALLERY_CONSTS.events.NEED_MORE_ITEMS, this.state.items.length);\n          setTimeout(() => {\n            //wait a bit before allowing more items to be fetched - ugly hack before promises still not working\n            this.deferredGettingMoreItems.resolve();\n          }, 2000);\n        } else {\n          // No items are fetched -> reject\n          this.deferredGettingMoreItems.reject();\n        }\n      }\n    }\n    return this.deferredGettingMoreItems.promise.catch(() => {});\n  }\n\n  canRender() {\n    const can = this.props.container && this.props.options && this.state.items;\n    if (!can && utils.isVerbose()) {\n      console.log(\n        'PROGALLERY [CAN_RENDER] GalleryContainer',\n        can,\n        this.props.container,\n        this.props.options,\n        this.state.items\n      );\n    }\n    return can;\n  }\n\n  onMouseEnter() {\n    if (\n      this.currentScrollData?.isContinuousScrolling &&\n      this.state.options[optionsMap.behaviourParams.gallery.horizontal.autoSlide.pauseOnHover]\n    ) {\n      haltScroll(this.currentScrollData);\n    }\n    this.setState({ isInHover: true });\n  }\n\n  onMouseLeave() {\n    this.setState({ isInHover: false });\n  }\n\n  findNeighborItem = (itemIdx, dir) => findNeighborItem(itemIdx, dir, this.state.structure.items); // REFACTOR BLUEPRINTS - this makes the function in the layouter irrelevant (unless the layouter is used as a stand alone with this function, maybe the layouter needs to be split for bundle size as well...)\n\n  render() {\n    if (!this.canRender()) {\n      return null;\n    }\n\n    const ViewComponent =\n      this.props.options[optionsMap.layoutParams.structure.scrollDirection] ===\n      GALLERY_CONSTS[optionsMap.layoutParams.structure.scrollDirection].HORIZONTAL\n        ? SlideshowView\n        : GalleryView;\n\n    if (utils.isVerbose()) {\n      console.count('PROGALLERY [COUNTS] - GalleryContainer (render)');\n      console.log('PROGALLERY [RENDER] - GalleryContainer', this.props.container.scrollBase, {\n        props: this.props,\n        items: this.state.items,\n      });\n    }\n\n    const displayShowMore = this.containerInfiniteGrowthDirection() === 'none';\n    return (\n      <div\n        data-key=\"pro-gallery-inner-container\"\n        key=\"pro-gallery-inner-container\"\n        className={this.props.isPrerenderMode ? 'pro-gallery-prerender' : ''}\n        onMouseEnter={this.onMouseEnter}\n        onMouseLeave={this.onMouseLeave}\n        ref={(e) => (this.galleryContainerRef = e)}\n        tabIndex={-1}\n      >\n        <ScrollIndicator\n          id={this.props.id}\n          galleryScrollDirection={this.props.options[optionsMap.layoutParams.structure.scrollDirection]}\n          isRTL={\n            this.props.options[optionsMap.behaviourParams.gallery.layoutDirection] ===\n            GALLERY_CONSTS[optionsMap.behaviourParams.gallery.layoutDirection].RIGHT_TO_LEFT\n          }\n          totalWidth={this.galleryStructure.width}\n          scrollBase={this.props.container.scrollBase}\n          scrollingElement={this.state.scrollingElement}\n          getMoreItemsIfNeeded={this.getMoreItemsIfNeeded}\n          setGotFirstScrollIfNeeded={this.setGotFirstScrollIfNeeded}\n          onScroll={this.onGalleryScroll}\n        />\n        <ViewComponent\n          isInDisplay={this.props.isInDisplay}\n          isInViewport={this.state.isInViewport}\n          isPrerenderMode={this.props.isPrerenderMode}\n          scrollingElement={this.state.scrollingElement}\n          totalItemsCount={this.props.totalItemsCount} //the items passed in the props might not be all the items\n          renderedItemsCount={this.props.renderedItemsCount}\n          getMoreItemsIfNeeded={this.getMoreItemsIfNeeded}\n          gotFirstScrollEvent={this.state.gotFirstScrollEvent}\n          setGotFirstScrollIfNeeded={this.setGotFirstScrollIfNeeded}\n          items={this.state.items}\n          getVisibleItems={this.getVisibleItems}\n          galleryStructure={this.galleryStructure}\n          options={this.props.options}\n          container={this.props.container}\n          settings={this.props.settings}\n          displayShowMore={displayShowMore}\n          id={this.props.id}\n          activeIndex={this.props.activeIndex || 0}\n          customComponents={this.props.customComponents}\n          playingVideoIdx={this.state.playingVideoIdx}\n          playing3DIdx={this.state.playing3DIdx}\n          noFollowForSEO={this.props.noFollowForSEO}\n          proGalleryRegionLabel={this.props.proGalleryRegionLabel}\n          proGalleryRole={this.props.proGalleryRole}\n          firstUserInteractionExecuted={this.state.firstUserInteractionExecuted}\n          isGalleryInHover={this.state.isInHover}\n          enableExperimentalFeatures={this.props.enableExperimentalFeatures}\n          galleryContainerRef={this.galleryContainerRef}\n          outOfViewComponent={this.outOfViewComponent}\n          virtualizationSettings={this.props.virtualizationSettings}\n          galleryContainerId={`pro-gallery-container-${this.props.id}`}\n          scrollTop={this.state?.scrollPosition?.top}\n          isScrollLessGallery={this.getIsScrollLessGallery(this.state.options)}\n          disableItemFocus={this.props.disableItemFocus}\n          actions={{\n            ...this.props.actions,\n            findNeighborItem: this.findNeighborItem,\n            toggleLoadMoreItems: this.toggleLoadMoreItems,\n            eventsListener: this.eventsListener,\n            setWixHeight: () => {},\n            scrollToItem: this.scrollToItem,\n            scrollToGroup: this.scrollToGroup,\n          }}\n          {...this.props.gallery}\n        />\n        <div data-key=\"items-styles\" key=\"items-styles\" style={{ display: 'none' }}>\n          {(this.layoutCss || []).filter(Boolean).map((css, idx) => (\n            <style id={`layoutCss-${idx}`} key={`layoutCss-${idx}`} dangerouslySetInnerHTML={{ __html: css }} />\n          ))}\n          {(this.scrollCss || []).filter(Boolean).map((css, idx) => (\n            <style id={`scrollCss_${idx}`} key={`scrollCss_${idx}`} dangerouslySetInnerHTML={{ __html: css }} />\n          ))}\n          {!!this.dynamicStyles && <style dangerouslySetInnerHTML={{ __html: this.dynamicStyles }} />}\n        </div>\n        {this.props.proGalleryRole === 'application' && (\n          <span ref={(e) => (this.outOfViewComponent = e)} tabIndex={-1} className=\"sr-only out-of-view-component\">\n            {this.props.translations?.Accessibility_Left_Gallery}\n          </span>\n        )}\n      </div>\n    );\n  }\n}\n\nexport default GalleryContainer;\n/* eslint-enable prettier/prettier */\n","import '../../../common/utils/polyfills.js';\nimport React from 'react';\nimport { utils } from 'pro-gallery-lib';\nimport Gallery from './galleryContainer.js';\n\nimport '../../../versionLogger.js';\nimport { GalleryProvider } from '../../../context/GalleryContext.js';\n\nexport default class ProGallery extends React.Component {\n  constructor() {\n    super();\n    if (utils.isLocal() && !utils.isTest()) {\n      console.log('PRO GALLERY DEV');\n    }\n  }\n\n  renderProps() {\n    return {\n      ...this.props,\n      id: this.props.id,\n      items: this.props.items || [],\n      settings: this.props.settings || {},\n      offsetTop: this.props.offsetTop,\n      proGalleryRegionLabel: this.props.proGalleryRegionLabel,\n      isInDisplay: this.props.isInDisplay ?? true,\n    };\n  }\n\n  containerProps() {\n    return {\n      id: `pro-gallery-${this.props.id}`,\n      className: 'pro-gallery',\n    };\n  }\n\n  render() {\n    return (\n      <GalleryProvider {...this.props}>\n        <div {...this.containerProps()}>\n          <Gallery {...this.renderProps()} />\n        </div>\n      </GalleryProvider>\n    );\n  }\n}\n","export default function shouldValidate(props, isSSR) {\n  if (isSSR === true) return false;\n  return props.shouldValidateTypes === true || getQueryParams('shouldValidateTypes') === 'true';\n}\n\nfunction getQueryParams(field) {\n  return safelyGetQueryParam(field) || '';\n}\n\nfunction safelyGetQueryParam() {\n  try {\n    const urlSearchParams = new URLSearchParams(window.location.search);\n    return Object.fromEntries(urlSearchParams.entries());\n  } catch (err) {\n    console.log('cannot use the URLSearchParams', err);\n    return {};\n  }\n}\n","import React from 'react';\nimport { GalleryProps, utils, viewModeWrapper } from 'pro-gallery-lib';\n\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport const ViewModeWrapperHOC = <Props extends GalleryProps>(WrappedComponent: React.ComponentClass<Props>) => {\n  return class ViewModeWrapperHOC extends React.Component<Props> {\n    constructor(props) {\n      super(props);\n      this.initViewModeWrapper(props);\n    }\n    initViewModeWrapper(props: Props) {\n      if (typeof props.viewMode !== 'undefined') {\n        viewModeWrapper.setViewMode(props.viewMode);\n      }\n      if (typeof props.deviceType !== 'undefined' && viewModeWrapper._deviceType !== props.deviceType) {\n        utils.dumpCache();\n        viewModeWrapper.setDeviceType(props.deviceType);\n      }\n    }\n    updateViewModeWrapper(nextProps: Props) {\n      if (this.props.viewMode !== nextProps.viewMode) {\n        utils.dumpCache();\n        viewModeWrapper.setViewMode(nextProps.viewMode);\n      }\n      if (this.props.deviceType !== nextProps.deviceType) {\n        utils.dumpCache();\n        viewModeWrapper.setDeviceType(nextProps.deviceType);\n      }\n    }\n    UNSAFE_componentWillReceiveProps(nextProps) {\n      this.updateViewModeWrapper(nextProps);\n    }\n    render() {\n      return <WrappedComponent {...this.props} />;\n    }\n  };\n};\n","import React from 'react';\nexport default function (typeErrors) {\n  window.typeErrors = typeErrors;\n  return (\n    <div>\n      <ol>\n        {typeErrors.map((errObject, i) => (\n          <Error errObject={errObject} key={i} />\n        ))}\n      </ol>\n      {JSON.stringify(typeErrors, null, 4)}\n    </div>\n  );\n}\n\nfunction Error({ errObject }) {\n  return (\n    <li>\n      <ErrorDescription errObject={errObject} />\n    </li>\n  );\n}\n\nclass ErrorDescription extends React.Component {\n  constructor(props) {\n    super(props);\n    this.state = {\n      showFull: false,\n    };\n\n    this.toggle = this.toggle.bind(this); // PUKE\n  }\n\n  render() {\n    const CompToRender = this.state.showFull ? FullError : Text;\n    return (\n      <a onClick={this.toggle}>\n        <CompToRender errObject={this.props.errObject} />\n      </a>\n    );\n  }\n\n  toggle() {\n    this.setState({ showFull: !this.state.showFull });\n  }\n}\n\nfunction FullError({ errObject }) {\n  return (\n    <ul>\n      {Object.entries(errObject).map((entry, i) => (\n        <Item entry={entry} key={i} />\n      ))}\n    </ul>\n  );\n}\n\nfunction Item({ entry }) {\n  const key = entry[0];\n  const value = entry[1];\n  const valueText = typeof value === 'string' ? value : JSON.stringify(value, null, 4);\n  return <li>{`${key}: ${valueText}`}</li>;\n}\n\nfunction Text({ errObject }) {\n  return errObject.message;\n}\n","import typeErrorsUI from './typeErrorsUI.js';\nimport { validateTypes } from 'pro-gallery-lib';\n\nconst validate = validateTypes;\nexport { validate, typeErrorsUI };\n","import React from 'react';\nimport { GALLERY_CONSTS, utils } from 'pro-gallery-lib';\nimport { BlueprintsManager } from 'pro-gallery-blueprints';\nimport ProGallery from './proGallery/proGallery.js';\nimport { GalleryProps, GalleryState } from 'pro-gallery-lib';\nimport shouldValidate from './typeValidator/shouldValidate.js';\nimport { ViewModeWrapperHOC } from './proGallery/viewModeWrapper.js';\n\nclass Gallery extends React.Component<GalleryProps, GalleryState> {\n  private blueprintsManager: any;\n  private galleryProps: any;\n\n  constructor(props: GalleryProps) {\n    super(props);\n    this.isUsingCustomInfoElements = this.isUsingCustomInfoElements.bind(this);\n    this.blueprintsManager = new BlueprintsManager({ id: 'layoutingGallery' });\n    this.blueprintsManager.init({\n      deviceType: props.deviceType,\n      api: {\n        isUsingCustomInfoElements: this.isUsingCustomInfoElements,\n        fetchMoreItems: (from) => {\n          typeof props.eventsListener === 'function' &&\n            props.eventsListener(GALLERY_CONSTS.events.NEED_MORE_ITEMS, from);\n        },\n        onBlueprintReady: ({ blueprint, blueprintChanged, initialBlueprint }) => {\n          if (blueprintChanged) {\n            this.setBlueprint(blueprint, initialBlueprint);\n          } else {\n            if (utils.isVerbose()) {\n              console.count('>>> Blueprint not changed, not setting it');\n            }\n          }\n        },\n      },\n    });\n    this.onNewProps(props, true);\n    this.state = {\n      blueprint: this.blueprintsManager.createInitialBlueprint(props) || null,\n    };\n  }\n\n  setBlueprint(blueprint, initialBlueprint) {\n    if (initialBlueprint) {\n      // the blueprint from the initial blueprint flow will be set in the constructor\n    } else {\n      this.setState({ blueprint });\n    }\n  }\n\n  isUsingCustomInfoElements() {\n    return (\n      !!this.galleryProps.customComponents.customHoverRenderer ||\n      !!this.galleryProps.customComponents.customInfoRenderer\n    );\n  }\n\n  onNewProps(props, calledByConstructor) {\n    const { eventsListener, ...otherProps } = props;\n    const _eventsListener = (eventName, eventData, event) => {\n      if (eventName === GALLERY_CONSTS.events.NEED_MORE_ITEMS) {\n        this.blueprintsManager.getMoreItems(eventData);\n      } else {\n        typeof eventsListener === 'function' && eventsListener(eventName, eventData, event);\n      }\n    };\n    this.galleryProps = {\n      ...otherProps,\n      eventsListener: _eventsListener,\n      id: props.id || 'default-dom-id',\n      customComponents: props.customComponents || {},\n    };\n    if (calledByConstructor) {\n      // the blueprint will be initiated with the state\n    } else {\n      this.blueprintsManager.createBlueprint(this.galleryProps).catch((e) => {\n        //TODOVER3 check totalItemsCount\n        console.error('Could not create a blueprint from the new props', e);\n      });\n    }\n  }\n\n  UNSAFE_componentWillReceiveProps(newProps) {\n    this.onNewProps(newProps, false);\n  }\n\n  render() {\n    const { blueprint, typeErrors } = this.state;\n\n    if (typeErrors) {\n      return typeErrors;\n    }\n    if (blueprint && Object.keys(blueprint).length > 0) {\n      return <ProGallery {...this.galleryProps} {...blueprint} />;\n    } else {\n      return null;\n    }\n  }\n\n  async componentDidMount() {\n    if (shouldValidate(this.props, utils.isSSR()) === false) {\n      return;\n    }\n    const validateTypesModule = await import(\n      /* webpackChunkName: \"proGallery_validateTypes\" */ './typeValidator/validateTypes.js'\n    );\n    const { validate, typeErrorsUI } = validateTypesModule;\n    const typeErrors = validate(this.state.blueprint.options);\n    if (typeErrors.length > 0) {\n      this.setState({ typeErrors: typeErrorsUI(typeErrors) });\n    }\n  }\n}\n\nexport default ViewModeWrapperHOC<GalleryProps>(Gallery);\n","export { default as ProGallery } from './components/gallery/index.js';\nexport { default as ProGalleryRenderer } from './components/gallery/rendererIndex.js';\nexport { cssScrollHelper } from './components/helpers/cssScrollHelper.js';\nexport { default as ItemView } from './components/item/itemView.js';\nexport { PrintOnlyImageSource } from './components/item/printOnlySource.js';\n\nexport { Item, PhotoItem, VideoItem, TextItem } from 'pro-gallery-lib';\nexport { Container } from 'pro-gallery-lib';\nexport { RendererContainer } from 'pro-gallery-lib';\nexport { EventsListener } from 'pro-gallery-lib';\nexport { CreateMediaUrl } from 'pro-gallery-lib';\nexport { CustomComponents } from 'pro-gallery-lib';\nexport { ScrollingElement } from 'pro-gallery-lib';\nexport { Structure } from 'pro-gallery-lib';\n\nexport { GALLERY_CONSTS } from 'pro-gallery-lib';\nexport { addPresetOptions } from 'pro-gallery-lib';\nexport { defaultOptions } from 'pro-gallery-lib';\nexport { clickable } from './components/helpers/mouseCursorPosition.js';\n","export const isAbsoluteUrl = (url: string) =>\n  url.startsWith('http://') || url.startsWith('https://');\n","import { isAbsoluteUrl } from './is-absolute-url.js';\nimport { WIX_MEDIA_BASE_URL, WIX_VIDEO_BASE_URL } from './media-url-consts.js';\n\nexport const getAbsoluteUrl = (url: string, type: 'image' | 'video') => {\n  if (isAbsoluteUrl(url)) {\n    return url;\n  }\n\n  let baseUrl: string, baseFolder: string;\n  if (type === 'image') {\n    baseUrl = WIX_MEDIA_BASE_URL;\n    baseFolder = 'media/';\n  } else {\n    //video\n    baseUrl = WIX_VIDEO_BASE_URL;\n    baseFolder = 'video/';\n  }\n\n  const pathWithFolder = url.startsWith(baseFolder) ? url : baseFolder + url;\n  return baseUrl + pathWithFolder;\n};\n","/* oxlint-disable no-param-reassign, camelcase */\nimport imageClientAPI from 'image-client-api/dist/imageClientSDK.js';\n\nimport { GALLERY_ITEMS_TYPES } from '../../plugin-gallery/defaults.js';\nimport { getAbsoluteUrl } from './get-absolute-url.js';\nimport { isAbsoluteUrl } from './is-absolute-url.js';\nimport { WIX_MEDIA_BASE_URL } from './media-url-consts.js';\n\n// Created from image-client-api README\ntype ImageClientOptions = {\n  filters?: {\n    blur: number;\n  };\n  focalPoint?: {\n    x: number;\n    y: number;\n  };\n  name?: string;\n  quality?: number;\n  unsharpMask?: {\n    amount: number;\n    radius: number;\n    threshold: number;\n  };\n  upscaleMethod?: 'auto' | 'classic' | 'super' | 'auto';\n  watermark?: string;\n};\n\nexport type ResizeOptions = {\n  item: Record<string, any>;\n  originalUrl: string;\n  resizeMethod?: string;\n  requiredWidth: number;\n  requiredHeight: number;\n  sharpParams?: Record<string, any>;\n  focalPoint?: [number, number];\n};\n\nconst getResizedImageUrl = (\n  item: $TSFixMe,\n  originalUrl: $TSFixMe,\n  resizeMethod: $TSFixMe,\n  requiredWidth: $TSFixMe,\n  requiredHeight: $TSFixMe,\n  sharpParams: $TSFixMe,\n  focalPoint: $TSFixMe\n) => {\n  // assign default parameters\n  originalUrl = originalUrl || '';\n  sharpParams = sharpParams || {};\n\n  // calc default quality\n  if (sharpParams.quality > 0) {\n    //don't allow quality above 90 till we have proper UI indication\n    sharpParams.quality = Math.min(90, sharpParams.quality);\n  }\n\n  const focalPointObj = { x: 50, y: 50 };\n  if (focalPoint && focalPoint[0] >= 0 && focalPoint[1] >= 0) {\n    focalPointObj.x = Math.round(focalPoint[0] * 100);\n    focalPointObj.y = Math.round(focalPoint[1] * 100);\n  }\n\n  if (sharpParams.allowUsm === true && sharpParams.usm) {\n    sharpParams.usm.usm_a = Math.min(5, Math.max(0, sharpParams.usm.usm_a || 0));\n    sharpParams.usm.usm_r = Math.min(128, Math.max(0, sharpParams.usm.usm_r || 0)); //should be max 500 - but it's returning a 404\n    sharpParams.usm.usm_t = Math.min(1, Math.max(0, sharpParams.usm.usm_t || 0));\n  } else {\n    sharpParams.usm = {\n      usm_a: 0,\n      usm_r: 0,\n      usm_t: 0,\n    };\n  }\n  const resizer =\n    resizeMethod === 'fit'\n      ? imageClientAPI.getScaleToFitImageURL\n      : imageClientAPI.getScaleToFillImageURL;\n\n  /**\n   * the transform options\n   * @typedef  {object}   ImageTransformOptions\n   * @property {boolean}  [progressive]               image transform progressive\n   * @property {number}   [quality]                   image transform quality\n   * @property {string}   [watermark]                 image watermark id\n   * @property {object}   [unsharpMask]               unsharpMask filter\n   * @property {number}   [unsharpMask.radius]        unsharpMask radius\n   * @property {number}   [unsharpMask.amount]        unsharpMask amount\n   * @property {number}   [unsharpMask.threshold]     unsharpMask threshold\n   */\n\n  const options: ImageClientOptions = {};\n  if (sharpParams.quality > 0) {\n    options.quality = sharpParams.quality;\n  }\n  if (sharpParams.blur > 0) {\n    options.filters = {\n      blur: sharpParams.blur,\n    };\n  }\n  if (focalPointObj) {\n    options.focalPoint = focalPointObj;\n  }\n  if (sharpParams && sharpParams.usm) {\n    options.unsharpMask = {\n      radius: parseFloat(sharpParams.usm.usm_r),\n      amount: parseFloat(sharpParams.usm.usm_a),\n      threshold: parseFloat(sharpParams.usm.usm_t),\n    };\n  }\n\n  if (isAbsoluteUrl(originalUrl)) {\n    return originalUrl;\n  }\n  return resizer(\n    getWixFilename(originalUrl),\n    item.maxWidth,\n    item.maxHeight,\n    requiredWidth,\n    requiredHeight,\n    options\n  );\n};\n\nexport const resizeMediaUrl = ({\n  item,\n  originalUrl,\n  resizeMethod,\n  requiredWidth,\n  requiredHeight,\n  sharpParams,\n  focalPoint,\n}: ResizeOptions) => {\n  // assign default parameters\n  originalUrl = originalUrl || '';\n  sharpParams = sharpParams || {};\n  if (originalUrl.indexOf('base64') !== -1) {\n    return originalUrl;\n  }\n  /* oxlint-disable no-param-reassign */\n  requiredWidth = Math.ceil(requiredWidth);\n  requiredHeight = Math.ceil(requiredHeight);\n  /* oxlint-enable no-param-reassign */\n\n  if (resizeMethod === GALLERY_ITEMS_TYPES.VIDEO) {\n    return getAbsoluteUrl(originalUrl, GALLERY_ITEMS_TYPES.VIDEO);\n  } else if (requiredWidth >= item.maxWidth && requiredHeight >= item.maxHeight) {\n    const url = item.dto.metaData.type === GALLERY_ITEMS_TYPES.VIDEO ? originalUrl : item.url;\n    return getAbsoluteUrl(url, GALLERY_ITEMS_TYPES.IMAGE);\n  } else {\n    return getResizedImageUrl(\n      item,\n      originalUrl,\n      resizeMethod,\n      requiredWidth,\n      requiredHeight,\n      sharpParams,\n      focalPoint\n    );\n  }\n};\n\nconst getWixFilename = (url: string) => url.replace(WIX_MEDIA_BASE_URL, '');\n","import type { GalleryData_Item } from './../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport type { AnchorTarget, RelValue } from './../../ricos-types/index.js';\nimport { getLinkHrefUrl } from './../link/get-link-href-url.js';\nimport { normalizeHref } from './../link/normalize-href.js';\nimport { uuid } from './../../wix-rich-content-common/index.js';\n\nexport type GalleryItem = {\n  mediaUrl: string;\n  url: string;\n  metaData: {\n    type: 'image' | 'video';\n    title?: string;\n    alt?: string;\n    width: number;\n    height: number;\n    link?: {\n      type?: string;\n      target: string;\n      rel?: string;\n      url?: string;\n      data?: {\n        type: string;\n        rel: string;\n        url: string;\n        target: string;\n        anchorName?: string;\n      };\n    };\n    poster?: {\n      url: string;\n      width: number;\n      height: number;\n    };\n  };\n  directLink?: {\n    url: string;\n    target: string;\n    rel: string;\n  };\n  itemId: string;\n  hash: string;\n};\n\nexport const convertToGalleryItem = ({\n  item,\n  index,\n  relValue,\n  anchorTarget,\n  baseUrl,\n}: {\n  item: GalleryData_Item;\n  index: number;\n  relValue?: RelValue;\n  anchorTarget?: AnchorTarget;\n  baseUrl?: string;\n}) => {\n  const { image, video, title, altText } = item;\n  const media = image?.media || video?.media;\n  const mediaUrl = media?.src?.url || media?.src?.id || '';\n  const width = media?.width || 0;\n  const height = media?.height || 0;\n  const convertedData: GalleryItem = {\n    mediaUrl,\n    url: mediaUrl,\n    metaData: {\n      type: image ? 'image' : 'video',\n      height,\n      width,\n      title,\n      alt: altText,\n    },\n    // uuid is used to guarentee there are no 2 gallery items on the DOM with the same ID (on different galleries) due to a pro gallery issues with videos - breaks the video controls behavoiur.\n    itemId: uuid() + '_' + index.toString(),\n    hash: mediaUrl + '_' + index.toString(),\n  };\n  if (video) {\n    convertedData.metaData.link = {\n      target: '_blank',\n      rel: 'noopener',\n      url: normalizeHref(mediaUrl) ?? '',\n    };\n    const { src, width: thumbnailWidth, height: thumbnailHeight } = video.thumbnail || {};\n    if (src?.url || src?.id) {\n      convertedData.metaData.poster = {\n        url: src.url || src.id || '',\n        width: thumbnailWidth || width,\n        height: thumbnailHeight || height,\n      };\n    }\n  }\n  if (image?.link) {\n    const { url: linkUrl = '', target: linkTarget, rel: linkRel, anchor } = image.link;\n\n    const target = (linkTarget && `_${linkTarget.toLowerCase()}`) || anchorTarget || '_self';\n    let rel = relValue || 'noopener';\n\n    if (linkRel) {\n      rel = 'noopener';\n      linkRel.nofollow && (rel += ' nofollow');\n      linkRel.sponsored && (rel += ' sponsored');\n      linkRel.ugc && (rel += ' ugc');\n      (linkRel.noreferrer || linkRel.noreferrer === undefined) && (rel += ' noreferrer');\n    }\n\n    const normalizedUrl = normalizeHref(linkUrl) ?? '';\n\n    const url = normalizedUrl\n      ? normalizedUrl\n      : (getLinkHrefUrl(anchor ? { anchor } : { url: linkUrl }, baseUrl) ?? '');\n\n    convertedData.metaData.link = {\n      type: 'wix',\n      target,\n      data: {\n        type: anchor ? 'AnchorLink' : 'ExternalLink',\n        target,\n        rel,\n        url,\n        anchorName: anchor,\n      },\n    };\n\n    convertedData.directLink = {\n      url,\n      target,\n      rel,\n    };\n  }\n  return convertedData;\n};\n","import type { Node, Node_Type } from './../../ricos-schema/legacy/wix/rich_content/v1/index.js';\n\nimport { RICOS_NODE_TYPE_TO_DATA_FIELD } from '../consts.js';\n\nexport const isType = (type: Node_Type) => (node: Node) => node.type === type;\n\nexport const getDataFieldName = ({ type }: Node) => RICOS_NODE_TYPE_TO_DATA_FIELD[type];\n\nexport const getDataFieldValue = (node: Node) => {\n  const dataFieldName = getDataFieldName(node);\n  return dataFieldName && dataFieldName in node ? node[dataFieldName] : undefined;\n};\n","/* oxlint-disable camelcase*/\nimport * as E from './../../bundled-dependencies/wix-bi-logger-rich-editor.js';\nimport type { BISettings } from './../../ricos-common/RicosTypes.js';\nimport type { Node } from './../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport { Decoration_Type } from './../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport type { BICallbacks, LinkDecoration } from './../../ricos-types/index.js';\nimport { Node_Type } from './../../ricos-types/index.js';\n\nimport type { RicosBILogger } from './ricos-bi-logger.js';\n\nconst onPluginActionMap = {\n  addPluginLink: E.addPluginLink,\n  searchForPlugin: E.searchForPlugin,\n  searchInsideThePlugin: E.searchInsideThePlugin,\n  pluginTableColumnRowAction: E.pluginTableColumnRowAction,\n  tablePluginAddColumnRow: E.tablePluginAddColumnRow,\n  tablePluginDeleteColumnRow: E.tablePluginDeleteColumnRow,\n  tablePluginClickOnOptionMenu: E.tablePluginClickOnOptionMenu,\n  tablePluginClickActionFromOptionMenu: E.tablePluginClickActionFromOptionMenu,\n  settingsModalOpenedForPlugin: E.settingsModalOpenedForPlugin,\n  settingsModalClosedForPlugin: E.settingsModalClosedForPlugin,\n};\n\ntype RicosBICallbacksType = (\n  biLogger: RicosBILogger,\n  params: Pick<BISettings, 'postId'>\n) => Required<BICallbacks>;\n\nexport const ricosBICallbacks: RicosBICallbacksType = (biLogger, { postId }) => {\n  return {\n    biLogger,\n    onModalAction: ({\n      pluginId,\n      modalId,\n      modalSessionId,\n      actionName,\n      value,\n      actionNumber,\n      initialSelection,\n      style,\n    }) => {\n      biLogger.log(modalAction, {\n        action: actionName,\n        modal_session_id: modalSessionId,\n        numActions: actionNumber - 1,\n        actionNumber,\n        modal_id: modalId,\n        plugin_id: pluginId,\n        content_id: '',\n        uuid: '',\n        // @ts-expect-error not yet declared on the event\n        value,\n        initial_selection: initialSelection,\n        style,\n      });\n    },\n    onPluginAdd: (plugin_id, entry_point, version, content_id) =>\n      biLogger.log(E.addPlugin, {\n        plugin_id,\n        search_term: undefined,\n        entry_point,\n        version,\n        content_id,\n        entry_type: undefined,\n        plugins_details: undefined,\n        pluginUniqueId: undefined,\n        button_name: undefined,\n        plugin_specification: undefined,\n        editor_engine: undefined,\n      }),\n    onPluginAddStep: ({\n      entryPoint,\n      entryType,\n      pluginDetails,\n      pluginId,\n      step,\n      version,\n      contentId: content_id,\n    }) =>\n      biLogger.log(E.addPluginStep, {\n        entry_point: entryPoint,\n        entry_type: entryType,\n        params: undefined,\n        plugin_id: pluginId,\n        pluginUniqueId: pluginDetails as string,\n        plugins_details: undefined,\n        step,\n        version,\n        content_id,\n        plugin_specification: undefined,\n      }),\n    onPluginAddSuccess: (plugin_id, entry_point, params, version, content_id) =>\n      biLogger.log(E.addPluginSuccess, {\n        plugin_id,\n        entry_point,\n        entry_type: undefined,\n        params: JSON.stringify(params),\n        plugins_details: undefined,\n        pluginUniqueId: undefined,\n        version,\n        content_id,\n        plugin_specification: undefined,\n        editor_engine: undefined,\n        is_tiptap: undefined,\n        mediaOrigin: undefined,\n      }),\n    onPluginDelete: ({ pluginId, pluginDetails, version, contentId: content_id }) =>\n      biLogger.log(E.deletePlugin, {\n        plugin_id: pluginId,\n        plugins_details: JSON.stringify(pluginDetails || {}),\n        pluginUniqueId: undefined,\n        version,\n        content_id,\n        editor_engine: undefined,\n      }),\n    onPluginChange: (plugin_id, pluginDetails, version, content_id) =>\n      biLogger.log(E.changePlugin, {\n        plugin_id,\n        plugins_details: JSON.stringify(pluginDetails),\n        settingSessionId: undefined,\n        button_name: undefined,\n        category: undefined,\n        origin: undefined,\n        type: undefined,\n        value: undefined,\n        pluginUniqueId: undefined,\n        version,\n        content_id,\n        editor_engine: undefined,\n      }),\n\n    onPublish: (post_id, plugins_count, _plugins_details, version, content_id) =>\n      biLogger.log(E.publishPost, {\n        post_id: post_id || postId,\n        plugins_count: plugins_count ? JSON.stringify(plugins_count) : undefined,\n        plugins_details: '', // plugins_details && JSON.stringify(_plugins_details),\n        params: undefined,\n        version,\n        content_id,\n        editor_engine: undefined,\n        is_tiptap: undefined,\n      }),\n    onMenuLoad: ({ menu, version, contentId: content_id }) =>\n      biLogger.log(E.menuLoad, {\n        menu,\n        version,\n        content_id,\n      }),\n    onPluginModalOpened: ({\n      entryPoint,\n      entryType,\n      pluginDetails,\n      pluginId,\n      version,\n      contentId: content_id,\n      dropdownValue,\n      modalSessionId,\n    }) =>\n      biLogger.log(E.pluginModalOpened, {\n        entry_point: entryPoint,\n        entry_type: entryType,\n        plugin_id: pluginId,\n        plugins_details: JSON.stringify(pluginDetails),\n        version,\n        content_id,\n        plugin_specification: undefined,\n        editor_engine: undefined,\n        is_tiptap: undefined,\n        dropdown_value: dropdownValue,\n        modal_session_id: modalSessionId,\n      }),\n    onViewerAction: (plugin_id, action_name, value, content_id, partialNode) => {\n      biLogger.log(E.viewerAction, {\n        action_name,\n        plugin_id,\n        value,\n        plugins_details: undefined,\n        pluginUniqueId: undefined,\n        content_id,\n        params: undefined,\n        productType: undefined,\n        plugin_specification: undefined,\n      });\n\n      const analyticsData = buildAnyButtonClickActionParams(content_id, partialNode);\n      if (analyticsData) {\n        biLogger.log(analyticsAnyButtonClickAction, analyticsData);\n      }\n    },\n\n    onViewerLoaded: ({ isPreview, url: postURL, pluginsCount, version, contentId: content_id }) => {\n      // Enforcement fix for a boolean `isPreview` value\n      const preview =\n        typeof isPreview === 'boolean'\n          ? isPreview\n          : typeof isPreview === 'string' && isPreview === 'true';\n      biLogger.log(E.viewerLoaded, {\n        preview,\n        postURL,\n        version,\n        content_id,\n        pluginsCount: JSON.stringify(pluginsCount),\n      });\n    },\n    onOpenEditorSuccess: (version, toolbarType, content_id) =>\n      biLogger.log(E.openEditorSuccess, {\n        toolbarType,\n        version,\n        content_id,\n        editor_engine: undefined,\n        is_tiptap: undefined,\n      }),\n    onContentEdited: ({ version, contentId: content_id }) =>\n      biLogger.log(E.contentAdded, {\n        version,\n        content_id,\n        contact_id: undefined,\n        container_type: undefined,\n        editing_time: undefined,\n        paragraph_count: undefined,\n        word_count: undefined,\n        editor_engine: undefined,\n        is_tiptap: undefined,\n      }),\n    onInlineToolbarOpen: ({ version, toolbarType, pluginId, contentId: content_id }) =>\n      biLogger.log(E.inlineToolbarOpened, {\n        version,\n        content_id,\n        toolbarType,\n        plugin_id: pluginId,\n      }),\n    onToolbarButtonClick: ({\n      buttonName,\n      category,\n      origin,\n      pluginDetails,\n      pluginId,\n      pluginUniqueId,\n      type,\n      value,\n      version,\n      contentId: content_id,\n    }) =>\n      biLogger.log(E.changePlugin, {\n        button_name: buttonName,\n        category,\n        origin,\n        pluginUniqueId,\n        plugin_id: pluginId,\n        plugins_details: pluginDetails,\n        type,\n        value,\n        version,\n        content_id,\n        settingSessionId: undefined,\n        editor_engine: undefined,\n      }),\n    onKeyboardShortcutAction: ({ buttonName, pluginId, value, version, contentId: content_id }) =>\n      biLogger.log(E.keyboardShortcutAction, {\n        button_name: buttonName,\n        category: undefined,\n        origin: undefined,\n        pluginUniqueId: undefined,\n        plugin_id: pluginId,\n        plugins_details: undefined,\n        type: undefined,\n        value,\n        version,\n        content_id,\n        settingSessionId: undefined,\n      }),\n    onMediaUploadStart: (correlationId, plugin_id, fileSize, mediaType, version, content_id) => {\n      biLogger.log(E.uploadMediaTry, {\n        plugin_id,\n        correlationId,\n        fileSize,\n        mediaType,\n        type: undefined,\n        version,\n        content_id,\n      });\n    },\n    onMediaUploadEnd: (\n      correlationId,\n      plugin_id,\n      duration,\n      fileSize,\n      mediaType,\n      isSuccess,\n      errorReason,\n      version,\n      content_id\n    ) => {\n      biLogger.log(E.uploadMediaFinished, {\n        plugin_id,\n        correlationId,\n        duration,\n        fileSize,\n        mediaType,\n        isSuccess,\n        errorReason,\n        type: undefined,\n        version,\n        content_id,\n      });\n    },\n    onPluginAction: (eventName: keyof typeof onPluginActionMap, eventParams) => {\n      if ((eventParams as any).params) {\n        const params = JSON.stringify((eventParams as any).params);\n        (eventParams as any).params = params;\n      }\n      const { contentId: content_id, ...rest } = eventParams || {};\n      biLogger.log(onPluginActionMap[eventName], {\n        content_id,\n        version: undefined,\n        plugins_details: undefined,\n        ...rest,\n      });\n    },\n    onPluginsPopOverTabSwitch: ({ pluginId, buttonName, version, contentId: content_id }) => {\n      biLogger.log(E.pluginsPopoverTabSwitch, {\n        plugin_id: pluginId,\n        button_name: buttonName,\n        content_id,\n        version,\n        plugins_details: undefined,\n        pluginUniqueId: undefined,\n        settingSessionId: undefined,\n        category: undefined,\n        origin: undefined,\n        value: undefined,\n        type: undefined,\n      });\n    },\n    onPluginsPopOverClick: ({ pluginId, buttonName, version, contentId: content_id }) => {\n      biLogger.log(E.pluginsPopoverClick, {\n        plugin_id: pluginId,\n        button_name: buttonName,\n        content_id,\n        version,\n        plugins_details: undefined,\n        pluginUniqueId: undefined,\n        settingSessionId: undefined,\n        category: undefined,\n        origin: undefined,\n        value: undefined,\n        type: undefined,\n      });\n    },\n    onChangePluginSettings: ({ pluginId, actionName, value, version, contentId: content_id }) => {\n      biLogger.log(E.changePluginSettings, {\n        plugin_id: pluginId,\n        actionName,\n        content_id,\n        value,\n        version,\n        container: undefined,\n        container_id: undefined,\n        container_platform: undefined,\n        entry_point: undefined,\n        entry_type: undefined,\n        layout: undefined,\n        params: value,\n        pluginUniqueId: undefined,\n        plugins_details: undefined,\n      });\n    },\n    mediaPluginsDetails: ({\n      pluginId,\n      creator,\n      title,\n      track_duration,\n      url,\n      type,\n      version,\n      contentId: content_id,\n    }) => {\n      biLogger.log(E.audioPluginDetails, {\n        plugin_id: pluginId,\n        creator,\n        title,\n        track_duration: track_duration?.toString(),\n        url,\n        type,\n        version,\n        content_id,\n        pluginUniqueId: undefined,\n        container: undefined,\n        container_id: undefined,\n        container_platform: undefined,\n        params: undefined,\n      });\n    },\n  };\n};\n\n// @TODO temporary workaround until migrating to catalog v2\ntype GUID = string;\n\ntype ModalActionParams = {\n  post_id?: string;\n  action?: string;\n  container?: string;\n  wixRicosVersion?: string;\n  container_id?: string;\n  container_platform?: string;\n  version?: string;\n  modal_session_id?: GUID;\n  container_usage?: string;\n  content_id?: string;\n  uuid?: GUID;\n  msid?: GUID;\n  numActions?: number;\n  actionNumber?: number;\n  rce_session_id?: GUID;\n  modal_id?: string;\n  plugin_id?: string;\n};\nfunction modalAction(params: ModalActionParams) {\n  return { evid: 59, src: 116, endpoint: '', params };\n}\n\ntype AnyButtonClickParams = {\n  element_id?: string;\n  url?: string;\n  elementGroup?: string;\n  elementTitle?: string;\n  actionName?: string;\n  details?: string;\n  elementType?: string;\n  value?: string;\n};\n\nconst analyticsAnyButtonClickAction = (params: AnyButtonClickParams) => {\n  return { evid: 1113, src: 76, endpoint: '', params };\n};\n\nconst buildAnyButtonClickActionParams = (\n  contentId?: string,\n  partialNode?: Omit<Node, 'nodes' | 'id' | 'style'>\n): Required<AnyButtonClickParams> | undefined => {\n  if (partialNode) {\n    const commonParams = {\n      element_id: contentId || '',\n      url: typeof window !== 'undefined' ? window.location.href : '',\n      elementGroup: 'Ricos',\n      actionName: '',\n    };\n\n    switch (partialNode.type) {\n      case Node_Type.BUTTON: {\n        return {\n          ...commonParams,\n          elementTitle: partialNode.buttonData?.text || '',\n          details: partialNode.buttonData?.link?.rel\n            ? JSON.stringify(partialNode.buttonData.link.rel)\n            : '',\n          elementType: Node_Type.BUTTON,\n          value: partialNode.buttonData?.link?.url || '',\n        };\n      }\n      case Node_Type.LINK_PREVIEW: {\n        return {\n          ...commonParams,\n          elementTitle: partialNode.linkPreviewData?.title || '',\n          details: partialNode.linkPreviewData?.link?.rel\n            ? JSON.stringify(partialNode.linkPreviewData.link.rel)\n            : '',\n          elementType: Node_Type.LINK_PREVIEW,\n          value: partialNode.linkPreviewData?.link?.url || '',\n        };\n      }\n      case Node_Type.APP_EMBED: {\n        return {\n          ...commonParams,\n          elementTitle: partialNode.appEmbedData?.name || '',\n          details: partialNode.appEmbedData?.type || '',\n          elementType: Node_Type.APP_EMBED,\n          value: partialNode.appEmbedData?.url || '',\n        };\n      }\n      case Node_Type.TEXT: {\n        const linkDecoration = partialNode.textData?.decorations?.find(\n          ({ type }) => type === Decoration_Type.LINK\n        ) as LinkDecoration;\n\n        if (linkDecoration) {\n          return {\n            ...commonParams,\n            elementTitle: partialNode.textData?.text || '',\n            details: linkDecoration?.linkData?.link?.rel\n              ? JSON.stringify(linkDecoration.linkData.link.rel)\n              : '',\n            elementType: Decoration_Type.LINK,\n            value: linkDecoration?.linkData?.link?.url || '',\n          };\n        }\n        break;\n      }\n      default: {\n        return;\n      }\n    }\n  }\n\n  return;\n};\n","'use strict'; // eslint-disable-line strict\n\nclass AssertionError extends Error {\n  constructor(message) {\n    super(message);\n    this.name = this.constructor.name;\n  }\n}\n\nfunction assertDefined(target, message) {\n  if (target === undefined) {\n    throw new AssertionError(message);\n  }\n}\n\nfunction assertObject(target, message) {\n  if (\n    target !== undefined &&\n    (typeof target !== 'object' || Array.isArray(target) || target === null)\n  ) {\n    throw new AssertionError(message);\n  }\n}\n\nfunction assertOk(target, message) {\n  if (!target) {\n    throw new AssertionError(message);\n  }\n}\n\nfunction assertFunc(target, message) {\n  if (target !== undefined && typeof target !== 'function') {\n    throw new AssertionError(message);\n  }\n}\n\nfunction assertBoolean(target, message) {\n  if (target !== undefined && typeof target !== 'boolean') {\n    throw new AssertionError(message);\n  }\n}\n\nfunction assertNumber(target, message) {\n  if (target !== undefined && typeof target !== 'number') {\n    throw new AssertionError(message);\n  }\n}\n\nfunction assertArray(target, message) {\n  if (typeof Array.isArray === 'function') {\n    if (!Array.isArray(target)) {\n      throw new AssertionError(message);\n    }\n  } else if (Object.prototype.toString.call(target) !== '[object Array]') {\n    throw new AssertionError(message);\n  }\n}\n\nmodule.exports.defined = assertDefined;\nmodule.exports.object = assertObject;\nmodule.exports.ok = assertOk;\nmodule.exports.func = assertFunc;\nmodule.exports.boolean = assertBoolean;\nmodule.exports.number = assertNumber;\nmodule.exports.array = assertArray;\nmodule.exports.AssertionError = AssertionError;\n","import biLogger from '@wix/web-bi-logger';\n\nexport type { Logger } from '@wix/web-bi-logger/dist/src/types';\nexport const webBiLogger = biLogger;\n","import type { plugInToolbarActionParams } from '@wix/bi-logger-rce-data/v2/types';\nimport lodash from 'lodash';\n\nimport type * as T from './../../bundled-dependencies/wix-bi-logger-rich-editor.js';\nimport type { Logger } from './../../bundled-dependencies/wix-web-bi-logger.js';\nimport type { BISettings, DefaultBIParams, WebBiLogger } from './../../ricos-common/RicosTypes.js';\nimport { isSSR } from './../../wix-rich-content-common/index.js';\n\n/* oxlint-disable no-console*/\n\nexport interface GenericParams {\n  container: BISettings['consumer'];\n  container_id: BISettings['containerId'];\n  container_platform: BISettings['platform'];\n  container_usage: BISettings['usage'];\n  post_id: BISettings['postId'];\n  rce_session_id: string;\n  msid: string;\n  wixRicosVersion: string;\n  version: string; // ricos version\n}\n\ninterface RicosBILoggerArgs {\n  webBiLogger: WebBiLogger | undefined;\n  logger?: Logger;\n  genericParams: GenericParams;\n  essentials: DefaultBIParams;\n}\n\ntype AddUndefined<T> = {\n  [P in keyof T]: T[P] | undefined;\n};\n\ntype EventFunctions =\n  | typeof T.addPlugin\n  | typeof T.addPluginStep\n  | typeof T.addPluginSuccess\n  | typeof T.changePlugin\n  | typeof T.contentAdded\n  | typeof T.deletePlugin\n  | typeof T.inlineToolbarOpened\n  | typeof T.keyboardShortcutAction\n  | typeof T.menuLoad\n  | typeof T.openEditorSuccess\n  | typeof T.pluginModalOpened\n  | typeof T.pluginsPopoverClick\n  | typeof T.pluginsPopoverTabSwitch\n  | typeof T.publishPost\n  | typeof T.uploadMediaFinished\n  | typeof T.uploadMediaTry\n  | typeof T.viewerAction\n  | typeof T.viewerLoaded\n  | typeof T.addPluginLink\n  | typeof T.searchForPlugin\n  | typeof T.searchInsideThePlugin\n  | typeof T.pluginTableColumnRowAction\n  | typeof T.tablePluginAddColumnRow\n  | typeof T.tablePluginDeleteColumnRow\n  | typeof T.tablePluginClickOnOptionMenu\n  | typeof T.tablePluginClickActionFromOptionMenu\n  | typeof T.settingsModalOpenedForPlugin\n  | typeof T.settingsModalClosedForPlugin;\n\ntype EventFunctionParameters<T extends EventFunctions> =\n  | Omit<AddUndefined<Required<Parameters<T>[0]>>, keyof GenericParams>\n  | GenericParams;\n\nfunction paramsToBiFields(essentials: DefaultBIParams) {\n  const {\n    bsi,\n    metaSiteId: msid,\n    visitorId: _visitorId,\n    appId: _appId,\n    instanceId: _instanceId,\n    siteOwnerId: _siteOwnerId,\n  } = essentials;\n  return lodash.pickBy(\n    { bsi, msid, _visitorId, _appId, _instanceId, _siteOwnerId },\n    lodash.identity\n  );\n}\n\nexport class RicosBILogger {\n  newLoggerConfig: { logger: Logger; genericParams: Omit<GenericParams, 'msid'> } | undefined;\n\n  oldLogger: Promise<Logger> | undefined;\n\n  constructor({ logger, webBiLogger, genericParams, essentials = {} }: RicosBILoggerArgs) {\n    if (logger) {\n      this.newLoggerConfig = { logger, genericParams: lodash.omit(genericParams, 'msid') };\n      return;\n    }\n\n    if (!isSSR()) {\n      const biLoggerPromise = Promise.resolve(\n        webBiLogger ||\n          import(\n            /* webpackChunkName: \"wix-ricos-bi-logger-fallback\" */ './../../bundled-dependencies/wix-web-bi-logger.js'\n          ).then(result => result.webBiLogger)\n      );\n\n      this.oldLogger = biLoggerPromise.then(result => {\n        // for esbuild consumers building esm bundle https://github.com/evanw/esbuild/issues/566#issuecomment-846707879 commonjs lazy chunks get double wrapped\n        // @ts-expect-error - ignore\n        const biLogger: typeof result = result.default?.default ? result.default : result;\n\n        return biLogger\n          .factory()\n          .updateDefaults({ ...genericParams, ...paramsToBiFields(essentials) })\n          .logger();\n      });\n    }\n  }\n\n  log<EventFunction extends EventFunctions>(\n    func: EventFunction,\n    params: EventFunctionParameters<EventFunction>\n  ): void {\n    if (this.newLoggerConfig) {\n      const logObject = func(params);\n      const { params: eventParams, ...rest } = logObject;\n      this.newLoggerConfig.logger.report?.({\n        params: { ...this.newLoggerConfig.genericParams, ...eventParams },\n        ...rest,\n      });\n    } else if (this.oldLogger) {\n      this.oldLogger.then(logger => logger.report(func(params)));\n    } else {\n      console.error(`[RicosBILogger.ts:log] RicosBILogger was not initialized`);\n    }\n  }\n\n  logV2(params: plugInToolbarActionParams): void {\n    const args = {\n      evid: 101,\n      src: 116,\n      endpoint: 'rich-editor',\n      params,\n    };\n\n    if (this.newLoggerConfig) {\n      this.newLoggerConfig.logger.report?.(args);\n    } else if (this.oldLogger) {\n      this.oldLogger.then(logger => logger.report(args));\n    } else {\n      console.error(`[RicosBILogger.ts:log] RicosBILogger was not initialized`);\n    }\n  }\n}\n","import type { BISettings } from './../../ricos-common/RicosTypes.js';\nimport type { BICallbacks } from './../../ricos-types/index.js';\n\nimport { ricosBICallbacks } from './ricos-bi-callbacks.js';\nimport { RicosBILogger } from './ricos-bi-logger.js';\nimport uuid from './uuid.js';\n\ndeclare global {\n  interface Window {\n    commonConfig?: {\n      bsi?: string;\n    };\n  }\n}\n\nconst rce_session_id = uuid();\n\nexport function biStrategy(\n  appDefId: string,\n  metaSiteId: string,\n  wixRicosVersion: string,\n  ricosVersion: string,\n  biSettings: BISettings\n): { helpers: BICallbacks; biLogger: RicosBILogger } {\n  const { biCallbacks, postId: settingsPostId, contentId: settingsContentId, ...rest } = biSettings;\n\n  const postId = settingsPostId || settingsContentId || '';\n\n  const essentials = {\n    ...rest.defaultParams,\n    bsi: rest.defaultParams?.bsi || (typeof window !== 'undefined' && window.commonConfig?.bsi),\n  };\n\n  const biLogger = new RicosBILogger({\n    logger: rest.logger,\n    webBiLogger: rest.webBiLogger,\n    genericParams: {\n      container: rest.consumer || 'default',\n      container_id: appDefId,\n      container_platform: rest.platform,\n      container_usage: rest.usage,\n      post_id: postId,\n      rce_session_id,\n      msid: metaSiteId,\n      wixRicosVersion,\n      version: ricosVersion,\n    },\n    essentials,\n  });\n\n  const logger = ricosBICallbacks(biLogger, {\n    postId,\n  });\n\n  return {\n    biLogger,\n    helpers: {\n      onModalAction: args => {\n        logger.onModalAction(args);\n        biCallbacks?.onModalAction?.(args);\n      },\n      onPluginAdd: (pluginId, entryPoint, version, contentId) => {\n        logger.onPluginAdd(pluginId, entryPoint, version, contentId);\n        biCallbacks?.onPluginAdd?.(pluginId, entryPoint, version, contentId);\n      },\n      onPluginAddStep: args => {\n        logger.onPluginAddStep(args);\n        biCallbacks?.onPluginAddStep?.(args);\n      },\n      onPluginAddSuccess: (pluginId, entryPoint, params, version, contentId) => {\n        logger.onPluginAddSuccess(pluginId, entryPoint, params, version, contentId);\n        biCallbacks?.onPluginAddSuccess?.(pluginId, entryPoint, params, version, contentId);\n      },\n      onPluginDelete: args => {\n        logger.onPluginDelete(args);\n        biCallbacks?.onPluginDelete?.(args);\n      },\n      onPublish: (postId, pluginsCount, pluginsDetails, version, contentId) => {\n        const appliedContentId = postId || settingsPostId || settingsContentId;\n        logger.onPublish(appliedContentId, pluginsCount, pluginsDetails, version, contentId);\n        biCallbacks?.onPublish?.(\n          appliedContentId,\n          pluginsCount,\n          pluginsDetails,\n          version,\n          contentId\n        );\n      },\n      onMenuLoad: args => {\n        logger.onMenuLoad(args);\n        biCallbacks?.onMenuLoad?.(args);\n      },\n      onPluginModalOpened: args => {\n        logger.onPluginModalOpened(args);\n        biCallbacks?.onPluginModalOpened?.(args);\n      },\n      onViewerAction: (pluginId, actionName, value, contentId, partialNode) => {\n        logger.onViewerAction(pluginId, actionName, value, contentId, partialNode);\n        biCallbacks?.onViewerAction?.(pluginId, actionName, value, contentId, partialNode);\n      },\n      onViewerLoaded: args => {\n        logger.onViewerLoaded(args);\n        biCallbacks?.onViewerLoaded?.(args);\n      },\n      onOpenEditorSuccess: (version, toolbarType, contentId) => {\n        logger.onOpenEditorSuccess(version, toolbarType, contentId);\n        biCallbacks?.onOpenEditorSuccess?.(version, toolbarType, contentId);\n      },\n      onContentEdited: args => {\n        logger.onContentEdited(args);\n        biCallbacks?.onContentEdited?.(args);\n      },\n      onInlineToolbarOpen: args => {\n        logger.onInlineToolbarOpen(args);\n        biCallbacks?.onInlineToolbarOpen?.(args);\n      },\n      onToolbarButtonClick: args => {\n        logger.onToolbarButtonClick(args);\n        biCallbacks?.onToolbarButtonClick?.(args);\n      },\n      onKeyboardShortcutAction: args => {\n        logger.onKeyboardShortcutAction(args);\n        biCallbacks?.onKeyboardShortcutAction?.(args);\n      },\n      onMediaUploadStart: (correlationId, pluginId, fileSize, mediaType, version, contentId) => {\n        logger.onMediaUploadStart(correlationId, pluginId, fileSize, mediaType, version, contentId);\n        biCallbacks?.onMediaUploadStart?.(\n          correlationId,\n          pluginId,\n          fileSize,\n          mediaType,\n          version,\n          contentId\n        );\n      },\n      onMediaUploadEnd: (\n        correlationId,\n        pluginId,\n        duration,\n        fileSize,\n        mediaType,\n        isSuccess,\n        errorType,\n        version,\n        contentId\n      ) => {\n        logger.onMediaUploadEnd(\n          correlationId,\n          pluginId,\n          duration,\n          fileSize,\n          mediaType,\n          isSuccess,\n          errorType,\n          version,\n          contentId\n        );\n        biCallbacks?.onMediaUploadEnd?.(\n          correlationId,\n          pluginId,\n          duration,\n          fileSize,\n          mediaType,\n          isSuccess,\n          errorType,\n          version,\n          contentId\n        );\n      },\n      onPluginAction: (eventName, params) => {\n        logger.onPluginAction(eventName, params);\n        biCallbacks?.onPluginAction?.(eventName, params);\n      },\n      onPluginsPopOverTabSwitch: args => {\n        logger.onPluginsPopOverTabSwitch(args);\n        biCallbacks?.onPluginsPopOverTabSwitch?.(args);\n      },\n      onPluginsPopOverClick: args => {\n        logger.onPluginsPopOverClick(args);\n        biCallbacks?.onPluginsPopOverClick?.(args);\n      },\n      onChangePluginSettings: args => {\n        logger.onChangePluginSettings(args);\n        biCallbacks?.onChangePluginSettings?.(args);\n      },\n      mediaPluginsDetails: args => {\n        logger.mediaPluginsDetails(args);\n        biCallbacks?.mediaPluginsDetails?.(args);\n      },\n    },\n  };\n}\n","import type { BISettings } from './../../ricos-common/RicosTypes.js';\nimport type { BICallbacks } from './../../ricos-types/index.js';\n\nimport type { RicosBILogger } from './ricos-bi-logger.js';\n\nexport type BiStrategyResult = {\n  helpers: BICallbacks;\n  biLogger: RicosBILogger;\n};\n\nexport type CreateBiHelpersParams = {\n  appDefId: string;\n  metaSiteId: string;\n  biSettings: BISettings;\n  wixRicosVersion: string;\n  ricosVersion: string;\n};\n\n/**\n * Creates BI helpers by lazy loading the biStrategy module.\n * Only loads the BI code when both appDefId/metaSiteId and biSettings are provided.\n */\nexport const createBiHelpers = async ({\n  appDefId,\n  metaSiteId,\n  biSettings,\n  wixRicosVersion,\n  ricosVersion,\n}: CreateBiHelpersParams): Promise<BiStrategyResult> => {\n  const { biStrategy } = await import('./bi-strategy.js');\n  return biStrategy(appDefId, metaSiteId, wixRicosVersion, ricosVersion, biSettings);\n};\n\n// Re-export biStrategy for direct usage (non-lazy)\nexport { biStrategy } from './bi-strategy.js';\nexport { RicosBILogger } from './ricos-bi-logger.js';\n","import React from 'react';\n\nimport type { EditorPluginOptions } from './../../ricos-common-plugins/types.js';\nimport type FullRicosEditor from './../../ricos-editor/tiptap/FullRicosEditor.js';\nimport { isEditorPlugin } from './../../ricos-editor/utils/is-editor-plugin.js';\nimport type { EditorPlugin } from './../../ricos-types/index.js';\n\n// Same value as https://github.com/wix-private/wix-insiders/blob/master/packages/overrides-getters/src/cookie.ts\nconst STATIC_OVERRIDES_COOKIE = 'wixStaticsVersions';\nconst ARTIFACT_ID = 'wix-ricos';\nconst QUERY_PARAM_KEY = `${ARTIFACT_ID}-override`;\n\nconst getQueryParam = (key: string) => {\n  if (typeof window === 'undefined') {\n    return '';\n  }\n\n  const urlParams = new URLSearchParams(window.location.search);\n  return decodeURIComponent(urlParams.get(key) || '');\n};\n\nconst getCookie = (name: string) => {\n  if (typeof document === 'undefined') {\n    return null;\n  }\n\n  const value = `; ${document.cookie}`;\n  const parts = value.split(`; ${name}=`);\n\n  if (parts.length === 2) {\n    return parts.pop()?.split(';').shift();\n  }\n\n  return null;\n};\n\nexport const getOverrideValue = (): string | null => {\n  const overridesCookieValue = getCookie(STATIC_OVERRIDES_COOKIE);\n\n  const cookiesValueMap = overridesCookieValue?.split('|').reduce(\n    (acc, cookie) => {\n      const [key, value] = cookie.split('#');\n      return { ...acc, [key]: value };\n    },\n    {} as Record<string, string>\n  );\n\n  const value = getQueryParam(QUERY_PARAM_KEY) || cookiesValueMap?.[ARTIFACT_ID];\n\n  if (!value) {\n    return null;\n  }\n\n  return value;\n};\n\nconst isValidHash = (hash: string) => {\n  return /^[a-f0-9]+$/.test(hash);\n};\n\nconst isValidVersion = (version: string) => {\n  return /^\\d+\\.\\d+\\.\\d+$/.test(version);\n};\n\nconst getOverrideUrl = (): string | null => {\n  const value = getOverrideValue();\n\n  if (!value) {\n    return null;\n  }\n\n  if (value.startsWith('http://localhost') || value.startsWith('https://localhost')) {\n    const url = new URL(value);\n    return `${url.href}${url.href.endsWith('/') ? '' : '/'}full-ricos-editor.js`;\n  }\n\n  if (isValidVersion(value) || isValidHash(value)) {\n    return `https://static.parastorage.com/services/${ARTIFACT_ID}/${value}/full-ricos-editor.js`;\n  }\n\n  return null;\n};\n\nconst wixInsiderOverrideUrl = getOverrideUrl();\nexport const hasWixInsiderOverride = !!wixInsiderOverrideUrl;\n\nexport const OverrideFullRicosEditorLazy = React.lazy<typeof FullRicosEditor>(async () => {\n  // Here we hide the dynamic import with 'eval' from transpiler so it would not fail at build time\n  // https://esbuild.github.io/content-types/#direct-eval\n  // oxlint-disable-next-line no-eval,@typescript-oxlint/no-non-null-assertion\n  const bundled = await (0, eval)(`import('${wixInsiderOverrideUrl!}')`);\n  bundled.loadCSS();\n  return { default: bundled.FullRicosEditor };\n});\n\ntype LazyPluginsResolverProps = {\n  plugins?: (EditorPlugin | EditorPluginOptions)[];\n  children: (plugins: (EditorPlugin | EditorPluginOptions)[]) => React.ReactNode;\n  hasOverride: boolean;\n};\n\nexport const OverridePluginsResolver: React.FC<LazyPluginsResolverProps> = ({\n  children,\n  plugins,\n  hasOverride,\n}) => {\n  const [lazyPlugins, setLazyPlugins] = React.useState<null | EditorPlugin[]>(null);\n\n  React.useEffect(() => {\n    const loadPlugins = async () => {\n      // Here we hide the dynamic import with 'eval' from transpiler so it would not fail at build time\n      // https://esbuild.github.io/content-types/#direct-eval\n      // oxlint-disable-next-line no-eval,@typescript-oxlint/no-non-null-assertion\n      const bundle = await (0, eval)(`import('${wixInsiderOverrideUrl!}')`);\n\n      setLazyPlugins(\n        plugins?.map(plugin => {\n          if (isEditorPlugin(plugin)) {\n            return bundle.pluginsMap[plugin.type](plugin.config);\n          }\n          return plugin;\n        }) ?? []\n      );\n    };\n\n    if (hasOverride) {\n      loadPlugins();\n    }\n  });\n\n  if (!hasOverride) {\n    return <>{children(plugins ?? [])}</>;\n  }\n\n  if (!lazyPlugins) {\n    return null;\n  }\n\n  return <>{children(lazyPlugins)}</>;\n};\n","// forked from prosemirror-dev-tools\nexport const jsonTreeTheme = {\n  scheme: 'monokai',\n  base00: '#1E1E2E',\n  base01: '#45475A',\n  base02: '#313244',\n  base03: '#B4BEFE',\n  base04: '#F2CDCD',\n  base05: '#CDD6F4',\n  base06: '#CDD6F4',\n  base07: '#CDD6F4',\n  base08: '#F38BA8',\n  base09: '#FAB387',\n  base0A: '#F9E2AF',\n  base0B: '#A6E3A1',\n  base0C: '#94E2D5',\n  base0D: '#89DCEB',\n  base0E: '#CBA6F7',\n  base0F: '#FAB387',\n};\n\nexport const mainTheme = {\n  main: '#CBA6F7',\n  main20: 'rgba(203, 166, 247, .2)',\n  main40: 'rgba(203, 166, 247, .4)',\n  main60: 'rgba(203, 166, 247, .6)',\n  main80: 'rgba(203, 166, 247, .8)',\n  main90: 'rgba(203, 166, 247, .9)',\n  mainBg: '#1E1E2E',\n  softerMain: '#B4BEFE',\n\n  white: '#fff',\n\n  text: '#CDD6F4',\n  white05: 'rgba(205, 214, 244, .05)',\n  white10: 'rgba(205, 214, 244, .1)',\n  white20: 'rgba(205, 214, 244, .2)',\n  white60: 'rgba(205, 214, 244, .6)',\n  white80: 'rgba(205, 214, 244, .8)',\n\n  black30: '#11111B',\n\n  // For diffs and structure\n  lightYellow: 'rgba(205, 214, 244, .2)',\n  lightPink: '#F38BA8',\n  darkGreen: '#A6E3A1',\n\n  syntax: jsonTreeTheme,\n};\n","// forked from prosemirror-dev-tools\nimport type { MouseEventHandler } from 'react';\nimport React, { useContext } from 'react';\n\nimport { mainTheme as theme } from '../theme.js';\n\nconst TabsContextProvider = React.createContext({\n  selectedIndex: 'state',\n  // oxlint-disable-next-line\n  onSelect: (_index: string) => {},\n});\n\nexport const TabList: React.FC<{ children: React.ReactNode }> = ({ children }) => (\n  <div\n    data-test-id=\"__prosemirror_devtools_tabs_buttons_container__\"\n    style={{\n      display: 'flex',\n      listStyle: 'none',\n      borderBottom: `1px solid ${theme.main20}`,\n    }}\n  >\n    {children}\n  </div>\n);\n\nconst TabsStyled: React.FC<{ children: React.ReactNode }> = ({ children }) => (\n  <div\n    data-test-id=\"__prosemirror_devtools_tabs_container__\"\n    style={{\n      height: '100%',\n      width: '100%',\n    }}\n  >\n    {children}\n  </div>\n);\n\ntype TabStyledProps = {\n  isSelected: boolean;\n  onClick: MouseEventHandler<HTMLButtonElement>;\n  children: React.ReactNode;\n};\nconst TabStyled: React.FC<TabStyledProps> = ({ children, isSelected, onClick }) => (\n  <button\n    role=\"tab\"\n    type=\"button\"\n    style={{\n      color: theme.text,\n      textTransform: 'uppercase',\n      fontSize: '13px',\n      padding: '16px 24px 14px',\n      boxSizing: 'border-box',\n      userSelect: 'none',\n      border: 'none',\n      borderBottom: isSelected ? `2px solid ${theme.main}` : 'none',\n      cursor: 'pointer',\n      background: 'transparent',\n    }}\n    onClick={onClick}\n  >\n    {children}\n  </button>\n);\n\nexport function Tab({ index, children }: { index: string; children: React.ReactNode }) {\n  const tabs = useContext(TabsContextProvider);\n  return (\n    <TabStyled isSelected={index === tabs.selectedIndex} onClick={() => tabs.onSelect(index)}>\n      {children}\n    </TabStyled>\n  );\n}\n\nexport function TabPanel(props: { children: (prop: { index: string }) => React.ReactNode }) {\n  const tabs = useContext(TabsContextProvider);\n  return (\n    <div\n      style={{\n        width: '100%',\n        height: 'calc(100% - 48px)',\n        boxSizing: 'border-box',\n        overflowY: 'auto',\n        padding: '8px',\n      }}\n    >\n      {props.children({ index: tabs.selectedIndex })}\n    </div>\n  );\n}\n\nexport function Tabs(props: {\n  onSelect: (index: string) => void;\n  selectedIndex: string;\n  children: React.ReactNode;\n}) {\n  return (\n    <TabsContextProvider.Provider\n      value={{\n        onSelect: props.onSelect,\n        selectedIndex: props.selectedIndex,\n      }}\n    >\n      <TabsStyled>{props.children}</TabsStyled>\n    </TabsContextProvider.Provider>\n  );\n}\n","import React from 'react';\n\ntype RcpLogoProps = {\n  fill: string;\n};\n\nexport const RcpLogo: React.FC<RcpLogoProps> = ({ fill }) => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    id=\"Layer_1\"\n    data-name=\"Layer 1\"\n    width=\"20\"\n    height=\"14\"\n    viewBox=\"0 0 130 114.5\"\n  >\n    <title>Rich Content Platform dev-tools</title>\n    <path\n      fill={fill}\n      d=\"m28.22,83.52c0-37.24,22.37-51.78,52-52.54v20.66c-13.79.51-18.9,6.12-18.9,16.58v4.34h17.11v41.14h55.26l-26.8-30.61c3.83-7.57,5.99-16.12,5.99-25.17C112.88,26.86,87.54,1.69,56.29,1.69S-.31,26.86-.31,57.91v55.78h28.53v-30.17Z\"\n    />\n  </svg>\n);\n","import React from 'react';\n\nexport const Button: React.FC<React.ButtonHTMLAttributes<HTMLButtonElement>> = props => {\n  return (\n    <>\n      <style>\n        {`.ricos-dev-tools-button:hover {\n        background-color: rgba(203, 166, 247, .4);\n        color: #cdd6f4;\n    }`}\n      </style>\n      <button\n        type=\"button\"\n        {...props}\n        style={{\n          border: 'none',\n          textTransform: 'uppercase',\n          fontWeight: 400,\n          letterSpacing: '1px',\n          padding: '6px 10px',\n          margin: '0 0 0 8px',\n          fontSize: '11px',\n          color: 'rgba(205, 214, 244, .8)',\n          transition: 'background .3s, color .3s',\n          borderRadius: '2px',\n          background: 'transparent',\n          cursor: 'pointer',\n        }}\n        className={'ricos-dev-tools-button'}\n      />\n    </>\n  );\n};\n","/* oxlint-disable no-console */\nimport React from 'react';\nimport { JSONTree } from 'react-json-tree';\n\nimport type { ValidationError } from './../../../ricos-schema/next-schema/index.js';\nimport { validateRicosDocument } from './../../../ricos-schema/next-schema/index.js';\n\nimport { Button } from '../components/Button.js';\nimport { jsonTreeTheme } from '../theme.js';\n\ntype Props = {\n  content: any;\n};\n\nexport const RichContentTree: React.FC<Props> = ({ content }) => {\n  const errors = React.useMemo(() => {\n    const validationResult = validateRicosDocument(content);\n    return validationResult.type === 'ok' ? [] : validationResult.errors;\n  }, [content]);\n  const hasErrorUnder = isErrorUnderNode(errors);\n  const getErrorFor = getErrorForNode(errors);\n  return (\n    <div>\n      <div style={{ display: 'flex', justifyContent: 'flex-end' }}>\n        {errors.length ? (\n          <Button\n            style={{ border: '1px solid red', marginRight: '10px' }}\n            onClick={() => {\n              console.log(errors);\n            }}\n          >\n            Log Errors\n          </Button>\n        ) : null}\n        <Button\n          onClick={() => {\n            navigator.clipboard.writeText(JSON.stringify(content));\n          }}\n          style={{ marginRight: '10px' }}\n        >\n          Copy into clipboard\n        </Button>\n        <Button\n          onClick={() => {\n            // oxlint-disable-next-line no-console\n            console.log(content);\n          }}\n        >\n          Log to console\n        </Button>\n      </div>\n      <JSONTree\n        valueRenderer={(valueAsString, _value, ...nodePath) => {\n          const error = getErrorFor(nodePath);\n          if (error) {\n            return (\n              <span style={{ color: 'red' }}>\n                {valueAsString} [Error: {error.message}]\n              </span>\n            );\n          }\n\n          return valueAsString;\n        }}\n        getItemString={(type, value, defaultView, keysCount, nodePath) => {\n          const error = getErrorFor(nodePath);\n          const hasError = hasErrorUnder(nodePath);\n          if (error) {\n            return (\n              <span>\n                {defaultView} {keysCount} <span style={{ color: 'red' }}>{error.message}</span>\n              </span>\n            );\n          }\n          if (type === 'Object' && value.type) {\n            return (\n              <span style={hasError ? { color: 'red' } : {}}>\n                {'{} '}\n                {value.type}\n              </span>\n            );\n          }\n\n          return (\n            <span style={hasError ? { color: 'red' } : {}}>\n              {defaultView} {keysCount}\n            </span>\n          );\n        }}\n        data={content}\n        invertTheme={false}\n        theme={jsonTreeTheme}\n        hideRoot\n        shouldExpandNode={hasErrorUnder}\n      />\n    </div>\n  );\n};\n\nconst getErrorForNode =\n  (errors: ValidationError[]) =>\n  (nodePath: (string | number)[]): ValidationError | undefined => {\n    if (!errors.length) {\n      return;\n    }\n    const nodePathAsPointer = [...nodePath].reverse().map(p => p.toString());\n    return errors.find(({ instancePath }) => {\n      return (\n        instancePath.length === nodePathAsPointer.length &&\n        instancePath.every((p, i) => p === nodePathAsPointer[i])\n      );\n    });\n  };\n\nconst isErrorUnderNode =\n  (errors: ValidationError[]) =>\n  (nodePath: (string | number)[]): boolean => {\n    if (!errors.length) {\n      return false;\n    }\n    const nodePathAsPointer = [...nodePath].reverse().map(p => p.toString());\n    return !!errors.find(({ instancePath }) => {\n      return nodePathAsPointer.every((p, i) => instancePath[i] === p);\n    });\n  };\n","/**\nThe default maximum length of a `TreeBuffer` node.\n*/\nconst DefaultBufferLength = 1024;\nlet nextPropID = 0;\nclass Range {\n    constructor(from, to) {\n        this.from = from;\n        this.to = to;\n    }\n}\n/**\nEach [node type](#common.NodeType) or [individual tree](#common.Tree)\ncan have metadata associated with it in props. Instances of this\nclass represent prop names.\n*/\nclass NodeProp {\n    /**\n    Create a new node prop type.\n    */\n    constructor(config = {}) {\n        this.id = nextPropID++;\n        this.perNode = !!config.perNode;\n        this.deserialize = config.deserialize || (() => {\n            throw new Error(\"This node type doesn't define a deserialize function\");\n        });\n    }\n    /**\n    This is meant to be used with\n    [`NodeSet.extend`](#common.NodeSet.extend) or\n    [`LRParser.configure`](#lr.ParserConfig.props) to compute\n    prop values for each node type in the set. Takes a [match\n    object](#common.NodeType^match) or function that returns undefined\n    if the node type doesn't get this prop, and the prop's value if\n    it does.\n    */\n    add(match) {\n        if (this.perNode)\n            throw new RangeError(\"Can't add per-node props to node types\");\n        if (typeof match != \"function\")\n            match = NodeType.match(match);\n        return (type) => {\n            let result = match(type);\n            return result === undefined ? null : [this, result];\n        };\n    }\n}\n/**\nProp that is used to describe matching delimiters. For opening\ndelimiters, this holds an array of node names (written as a\nspace-separated string when declaring this prop in a grammar)\nfor the node types of closing delimiters that match it.\n*/\nNodeProp.closedBy = new NodeProp({ deserialize: str => str.split(\" \") });\n/**\nThe inverse of [`closedBy`](#common.NodeProp^closedBy). This is\nattached to closing delimiters, holding an array of node names\nof types of matching opening delimiters.\n*/\nNodeProp.openedBy = new NodeProp({ deserialize: str => str.split(\" \") });\n/**\nUsed to assign node types to groups (for example, all node\ntypes that represent an expression could be tagged with an\n`\"Expression\"` group).\n*/\nNodeProp.group = new NodeProp({ deserialize: str => str.split(\" \") });\n/**\nAttached to nodes to indicate these should be\n[displayed](https://codemirror.net/docs/ref/#language.syntaxTree)\nin a bidirectional text isolate, so that direction-neutral\ncharacters on their sides don't incorrectly get associated with\nsurrounding text. You'll generally want to set this for nodes\nthat contain arbitrary text, like strings and comments, and for\nnodes that appear _inside_ arbitrary text, like HTML tags. When\nnot given a value, in a grammar declaration, defaults to\n`\"auto\"`.\n*/\nNodeProp.isolate = new NodeProp({ deserialize: value => {\n        if (value && value != \"rtl\" && value != \"ltr\" && value != \"auto\")\n            throw new RangeError(\"Invalid value for isolate: \" + value);\n        return value || \"auto\";\n    } });\n/**\nThe hash of the [context](#lr.ContextTracker.constructor)\nthat the node was parsed in, if any. Used to limit reuse of\ncontextual nodes.\n*/\nNodeProp.contextHash = new NodeProp({ perNode: true });\n/**\nThe distance beyond the end of the node that the tokenizer\nlooked ahead for any of the tokens inside the node. (The LR\nparser only stores this when it is larger than 25, for\nefficiency reasons.)\n*/\nNodeProp.lookAhead = new NodeProp({ perNode: true });\n/**\nThis per-node prop is used to replace a given node, or part of a\nnode, with another tree. This is useful to include trees from\ndifferent languages in mixed-language parsers.\n*/\nNodeProp.mounted = new NodeProp({ perNode: true });\n/**\nA mounted tree, which can be [stored](#common.NodeProp^mounted) on\na tree node to indicate that parts of its content are\nrepresented by another tree.\n*/\nclass MountedTree {\n    constructor(\n    /**\n    The inner tree.\n    */\n    tree, \n    /**\n    If this is null, this tree replaces the entire node (it will\n    be included in the regular iteration instead of its host\n    node). If not, only the given ranges are considered to be\n    covered by this tree. This is used for trees that are mixed in\n    a way that isn't strictly hierarchical. Such mounted trees are\n    only entered by [`resolveInner`](#common.Tree.resolveInner)\n    and [`enter`](#common.SyntaxNode.enter).\n    */\n    overlay, \n    /**\n    The parser used to create this subtree.\n    */\n    parser) {\n        this.tree = tree;\n        this.overlay = overlay;\n        this.parser = parser;\n    }\n    /**\n    @internal\n    */\n    static get(tree) {\n        return tree && tree.props && tree.props[NodeProp.mounted.id];\n    }\n}\nconst noProps = Object.create(null);\n/**\nEach node in a syntax tree has a node type associated with it.\n*/\nclass NodeType {\n    /**\n    @internal\n    */\n    constructor(\n    /**\n    The name of the node type. Not necessarily unique, but if the\n    grammar was written properly, different node types with the\n    same name within a node set should play the same semantic\n    role.\n    */\n    name, \n    /**\n    @internal\n    */\n    props, \n    /**\n    The id of this node in its set. Corresponds to the term ids\n    used in the parser.\n    */\n    id, \n    /**\n    @internal\n    */\n    flags = 0) {\n        this.name = name;\n        this.props = props;\n        this.id = id;\n        this.flags = flags;\n    }\n    /**\n    Define a node type.\n    */\n    static define(spec) {\n        let props = spec.props && spec.props.length ? Object.create(null) : noProps;\n        let flags = (spec.top ? 1 /* NodeFlag.Top */ : 0) | (spec.skipped ? 2 /* NodeFlag.Skipped */ : 0) |\n            (spec.error ? 4 /* NodeFlag.Error */ : 0) | (spec.name == null ? 8 /* NodeFlag.Anonymous */ : 0);\n        let type = new NodeType(spec.name || \"\", props, spec.id, flags);\n        if (spec.props)\n            for (let src of spec.props) {\n                if (!Array.isArray(src))\n                    src = src(type);\n                if (src) {\n                    if (src[0].perNode)\n                        throw new RangeError(\"Can't store a per-node prop on a node type\");\n                    props[src[0].id] = src[1];\n                }\n            }\n        return type;\n    }\n    /**\n    Retrieves a node prop for this type. Will return `undefined` if\n    the prop isn't present on this node.\n    */\n    prop(prop) { return this.props[prop.id]; }\n    /**\n    True when this is the top node of a grammar.\n    */\n    get isTop() { return (this.flags & 1 /* NodeFlag.Top */) > 0; }\n    /**\n    True when this node is produced by a skip rule.\n    */\n    get isSkipped() { return (this.flags & 2 /* NodeFlag.Skipped */) > 0; }\n    /**\n    Indicates whether this is an error node.\n    */\n    get isError() { return (this.flags & 4 /* NodeFlag.Error */) > 0; }\n    /**\n    When true, this node type doesn't correspond to a user-declared\n    named node, for example because it is used to cache repetition.\n    */\n    get isAnonymous() { return (this.flags & 8 /* NodeFlag.Anonymous */) > 0; }\n    /**\n    Returns true when this node's name or one of its\n    [groups](#common.NodeProp^group) matches the given string.\n    */\n    is(name) {\n        if (typeof name == 'string') {\n            if (this.name == name)\n                return true;\n            let group = this.prop(NodeProp.group);\n            return group ? group.indexOf(name) > -1 : false;\n        }\n        return this.id == name;\n    }\n    /**\n    Create a function from node types to arbitrary values by\n    specifying an object whose property names are node or\n    [group](#common.NodeProp^group) names. Often useful with\n    [`NodeProp.add`](#common.NodeProp.add). You can put multiple\n    names, separated by spaces, in a single property name to map\n    multiple node names to a single value.\n    */\n    static match(map) {\n        let direct = Object.create(null);\n        for (let prop in map)\n            for (let name of prop.split(\" \"))\n                direct[name] = map[prop];\n        return (node) => {\n            for (let groups = node.prop(NodeProp.group), i = -1; i < (groups ? groups.length : 0); i++) {\n                let found = direct[i < 0 ? node.name : groups[i]];\n                if (found)\n                    return found;\n            }\n        };\n    }\n}\n/**\nAn empty dummy node type to use when no actual type is available.\n*/\nNodeType.none = new NodeType(\"\", Object.create(null), 0, 8 /* NodeFlag.Anonymous */);\n/**\nA node set holds a collection of node types. It is used to\ncompactly represent trees by storing their type ids, rather than a\nfull pointer to the type object, in a numeric array. Each parser\n[has](#lr.LRParser.nodeSet) a node set, and [tree\nbuffers](#common.TreeBuffer) can only store collections of nodes\nfrom the same set. A set can have a maximum of 2**16 (65536) node\ntypes in it, so that the ids fit into 16-bit typed array slots.\n*/\nclass NodeSet {\n    /**\n    Create a set with the given types. The `id` property of each\n    type should correspond to its position within the array.\n    */\n    constructor(\n    /**\n    The node types in this set, by id.\n    */\n    types) {\n        this.types = types;\n        for (let i = 0; i < types.length; i++)\n            if (types[i].id != i)\n                throw new RangeError(\"Node type ids should correspond to array positions when creating a node set\");\n    }\n    /**\n    Create a copy of this set with some node properties added. The\n    arguments to this method can be created with\n    [`NodeProp.add`](#common.NodeProp.add).\n    */\n    extend(...props) {\n        let newTypes = [];\n        for (let type of this.types) {\n            let newProps = null;\n            for (let source of props) {\n                let add = source(type);\n                if (add) {\n                    if (!newProps)\n                        newProps = Object.assign({}, type.props);\n                    newProps[add[0].id] = add[1];\n                }\n            }\n            newTypes.push(newProps ? new NodeType(type.name, newProps, type.id, type.flags) : type);\n        }\n        return new NodeSet(newTypes);\n    }\n}\nconst CachedNode = new WeakMap(), CachedInnerNode = new WeakMap();\n/**\nOptions that control iteration. Can be combined with the `|`\noperator to enable multiple ones.\n*/\nvar IterMode;\n(function (IterMode) {\n    /**\n    When enabled, iteration will only visit [`Tree`](#common.Tree)\n    objects, not nodes packed into\n    [`TreeBuffer`](#common.TreeBuffer)s.\n    */\n    IterMode[IterMode[\"ExcludeBuffers\"] = 1] = \"ExcludeBuffers\";\n    /**\n    Enable this to make iteration include anonymous nodes (such as\n    the nodes that wrap repeated grammar constructs into a balanced\n    tree).\n    */\n    IterMode[IterMode[\"IncludeAnonymous\"] = 2] = \"IncludeAnonymous\";\n    /**\n    By default, regular [mounted](#common.NodeProp^mounted) nodes\n    replace their base node in iteration. Enable this to ignore them\n    instead.\n    */\n    IterMode[IterMode[\"IgnoreMounts\"] = 4] = \"IgnoreMounts\";\n    /**\n    This option only applies in\n    [`enter`](#common.SyntaxNode.enter)-style methods. It tells the\n    library to not enter mounted overlays if one covers the given\n    position.\n    */\n    IterMode[IterMode[\"IgnoreOverlays\"] = 8] = \"IgnoreOverlays\";\n})(IterMode || (IterMode = {}));\n/**\nA piece of syntax tree. There are two ways to approach these\ntrees: the way they are actually stored in memory, and the\nconvenient way.\n\nSyntax trees are stored as a tree of `Tree` and `TreeBuffer`\nobjects. By packing detail information into `TreeBuffer` leaf\nnodes, the representation is made a lot more memory-efficient.\n\nHowever, when you want to actually work with tree nodes, this\nrepresentation is very awkward, so most client code will want to\nuse the [`TreeCursor`](#common.TreeCursor) or\n[`SyntaxNode`](#common.SyntaxNode) interface instead, which provides\na view on some part of this data structure, and can be used to\nmove around to adjacent nodes.\n*/\nclass Tree {\n    /**\n    Construct a new tree. See also [`Tree.build`](#common.Tree^build).\n    */\n    constructor(\n    /**\n    The type of the top node.\n    */\n    type, \n    /**\n    This node's child nodes.\n    */\n    children, \n    /**\n    The positions (offsets relative to the start of this tree) of\n    the children.\n    */\n    positions, \n    /**\n    The total length of this tree\n    */\n    length, \n    /**\n    Per-node [node props](#common.NodeProp) to associate with this node.\n    */\n    props) {\n        this.type = type;\n        this.children = children;\n        this.positions = positions;\n        this.length = length;\n        /**\n        @internal\n        */\n        this.props = null;\n        if (props && props.length) {\n            this.props = Object.create(null);\n            for (let [prop, value] of props)\n                this.props[typeof prop == \"number\" ? prop : prop.id] = value;\n        }\n    }\n    /**\n    @internal\n    */\n    toString() {\n        let mounted = MountedTree.get(this);\n        if (mounted && !mounted.overlay)\n            return mounted.tree.toString();\n        let children = \"\";\n        for (let ch of this.children) {\n            let str = ch.toString();\n            if (str) {\n                if (children)\n                    children += \",\";\n                children += str;\n            }\n        }\n        return !this.type.name ? children :\n            (/\\W/.test(this.type.name) && !this.type.isError ? JSON.stringify(this.type.name) : this.type.name) +\n                (children.length ? \"(\" + children + \")\" : \"\");\n    }\n    /**\n    Get a [tree cursor](#common.TreeCursor) positioned at the top of\n    the tree. Mode can be used to [control](#common.IterMode) which\n    nodes the cursor visits.\n    */\n    cursor(mode = 0) {\n        return new TreeCursor(this.topNode, mode);\n    }\n    /**\n    Get a [tree cursor](#common.TreeCursor) pointing into this tree\n    at the given position and side (see\n    [`moveTo`](#common.TreeCursor.moveTo).\n    */\n    cursorAt(pos, side = 0, mode = 0) {\n        let scope = CachedNode.get(this) || this.topNode;\n        let cursor = new TreeCursor(scope);\n        cursor.moveTo(pos, side);\n        CachedNode.set(this, cursor._tree);\n        return cursor;\n    }\n    /**\n    Get a [syntax node](#common.SyntaxNode) object for the top of the\n    tree.\n    */\n    get topNode() {\n        return new TreeNode(this, 0, 0, null);\n    }\n    /**\n    Get the [syntax node](#common.SyntaxNode) at the given position.\n    If `side` is -1, this will move into nodes that end at the\n    position. If 1, it'll move into nodes that start at the\n    position. With 0, it'll only enter nodes that cover the position\n    from both sides.\n    \n    Note that this will not enter\n    [overlays](#common.MountedTree.overlay), and you often want\n    [`resolveInner`](#common.Tree.resolveInner) instead.\n    */\n    resolve(pos, side = 0) {\n        let node = resolveNode(CachedNode.get(this) || this.topNode, pos, side, false);\n        CachedNode.set(this, node);\n        return node;\n    }\n    /**\n    Like [`resolve`](#common.Tree.resolve), but will enter\n    [overlaid](#common.MountedTree.overlay) nodes, producing a syntax node\n    pointing into the innermost overlaid tree at the given position\n    (with parent links going through all parent structure, including\n    the host trees).\n    */\n    resolveInner(pos, side = 0) {\n        let node = resolveNode(CachedInnerNode.get(this) || this.topNode, pos, side, true);\n        CachedInnerNode.set(this, node);\n        return node;\n    }\n    /**\n    In some situations, it can be useful to iterate through all\n    nodes around a position, including those in overlays that don't\n    directly cover the position. This method gives you an iterator\n    that will produce all nodes, from small to big, around the given\n    position.\n    */\n    resolveStack(pos, side = 0) {\n        return stackIterator(this, pos, side);\n    }\n    /**\n    Iterate over the tree and its children, calling `enter` for any\n    node that touches the `from`/`to` region (if given) before\n    running over such a node's children, and `leave` (if given) when\n    leaving the node. When `enter` returns `false`, that node will\n    not have its children iterated over (or `leave` called).\n    */\n    iterate(spec) {\n        let { enter, leave, from = 0, to = this.length } = spec;\n        let mode = spec.mode || 0, anon = (mode & IterMode.IncludeAnonymous) > 0;\n        for (let c = this.cursor(mode | IterMode.IncludeAnonymous);;) {\n            let entered = false;\n            if (c.from <= to && c.to >= from && (!anon && c.type.isAnonymous || enter(c) !== false)) {\n                if (c.firstChild())\n                    continue;\n                entered = true;\n            }\n            for (;;) {\n                if (entered && leave && (anon || !c.type.isAnonymous))\n                    leave(c);\n                if (c.nextSibling())\n                    break;\n                if (!c.parent())\n                    return;\n                entered = true;\n            }\n        }\n    }\n    /**\n    Get the value of the given [node prop](#common.NodeProp) for this\n    node. Works with both per-node and per-type props.\n    */\n    prop(prop) {\n        return !prop.perNode ? this.type.prop(prop) : this.props ? this.props[prop.id] : undefined;\n    }\n    /**\n    Returns the node's [per-node props](#common.NodeProp.perNode) in a\n    format that can be passed to the [`Tree`](#common.Tree)\n    constructor.\n    */\n    get propValues() {\n        let result = [];\n        if (this.props)\n            for (let id in this.props)\n                result.push([+id, this.props[id]]);\n        return result;\n    }\n    /**\n    Balance the direct children of this tree, producing a copy of\n    which may have children grouped into subtrees with type\n    [`NodeType.none`](#common.NodeType^none).\n    */\n    balance(config = {}) {\n        return this.children.length <= 8 /* Balance.BranchFactor */ ? this :\n            balanceRange(NodeType.none, this.children, this.positions, 0, this.children.length, 0, this.length, (children, positions, length) => new Tree(this.type, children, positions, length, this.propValues), config.makeTree || ((children, positions, length) => new Tree(NodeType.none, children, positions, length)));\n    }\n    /**\n    Build a tree from a postfix-ordered buffer of node information,\n    or a cursor over such a buffer.\n    */\n    static build(data) { return buildTree(data); }\n}\n/**\nThe empty tree\n*/\nTree.empty = new Tree(NodeType.none, [], [], 0);\nclass FlatBufferCursor {\n    constructor(buffer, index) {\n        this.buffer = buffer;\n        this.index = index;\n    }\n    get id() { return this.buffer[this.index - 4]; }\n    get start() { return this.buffer[this.index - 3]; }\n    get end() { return this.buffer[this.index - 2]; }\n    get size() { return this.buffer[this.index - 1]; }\n    get pos() { return this.index; }\n    next() { this.index -= 4; }\n    fork() { return new FlatBufferCursor(this.buffer, this.index); }\n}\n/**\nTree buffers contain (type, start, end, endIndex) quads for each\nnode. In such a buffer, nodes are stored in prefix order (parents\nbefore children, with the endIndex of the parent indicating which\nchildren belong to it).\n*/\nclass TreeBuffer {\n    /**\n    Create a tree buffer.\n    */\n    constructor(\n    /**\n    The buffer's content.\n    */\n    buffer, \n    /**\n    The total length of the group of nodes in the buffer.\n    */\n    length, \n    /**\n    The node set used in this buffer.\n    */\n    set) {\n        this.buffer = buffer;\n        this.length = length;\n        this.set = set;\n    }\n    /**\n    @internal\n    */\n    get type() { return NodeType.none; }\n    /**\n    @internal\n    */\n    toString() {\n        let result = [];\n        for (let index = 0; index < this.buffer.length;) {\n            result.push(this.childString(index));\n            index = this.buffer[index + 3];\n        }\n        return result.join(\",\");\n    }\n    /**\n    @internal\n    */\n    childString(index) {\n        let id = this.buffer[index], endIndex = this.buffer[index + 3];\n        let type = this.set.types[id], result = type.name;\n        if (/\\W/.test(result) && !type.isError)\n            result = JSON.stringify(result);\n        index += 4;\n        if (endIndex == index)\n            return result;\n        let children = [];\n        while (index < endIndex) {\n            children.push(this.childString(index));\n            index = this.buffer[index + 3];\n        }\n        return result + \"(\" + children.join(\",\") + \")\";\n    }\n    /**\n    @internal\n    */\n    findChild(startIndex, endIndex, dir, pos, side) {\n        let { buffer } = this, pick = -1;\n        for (let i = startIndex; i != endIndex; i = buffer[i + 3]) {\n            if (checkSide(side, pos, buffer[i + 1], buffer[i + 2])) {\n                pick = i;\n                if (dir > 0)\n                    break;\n            }\n        }\n        return pick;\n    }\n    /**\n    @internal\n    */\n    slice(startI, endI, from) {\n        let b = this.buffer;\n        let copy = new Uint16Array(endI - startI), len = 0;\n        for (let i = startI, j = 0; i < endI;) {\n            copy[j++] = b[i++];\n            copy[j++] = b[i++] - from;\n            let to = copy[j++] = b[i++] - from;\n            copy[j++] = b[i++] - startI;\n            len = Math.max(len, to);\n        }\n        return new TreeBuffer(copy, len, this.set);\n    }\n}\nfunction checkSide(side, pos, from, to) {\n    switch (side) {\n        case -2 /* Side.Before */: return from < pos;\n        case -1 /* Side.AtOrBefore */: return to >= pos && from < pos;\n        case 0 /* Side.Around */: return from < pos && to > pos;\n        case 1 /* Side.AtOrAfter */: return from <= pos && to > pos;\n        case 2 /* Side.After */: return to > pos;\n        case 4 /* Side.DontCare */: return true;\n    }\n}\nfunction resolveNode(node, pos, side, overlays) {\n    var _a;\n    // Move up to a node that actually holds the position, if possible\n    while (node.from == node.to ||\n        (side < 1 ? node.from >= pos : node.from > pos) ||\n        (side > -1 ? node.to <= pos : node.to < pos)) {\n        let parent = !overlays && node instanceof TreeNode && node.index < 0 ? null : node.parent;\n        if (!parent)\n            return node;\n        node = parent;\n    }\n    let mode = overlays ? 0 : IterMode.IgnoreOverlays;\n    // Must go up out of overlays when those do not overlap with pos\n    if (overlays)\n        for (let scan = node, parent = scan.parent; parent; scan = parent, parent = scan.parent) {\n            if (scan instanceof TreeNode && scan.index < 0 && ((_a = parent.enter(pos, side, mode)) === null || _a === void 0 ? void 0 : _a.from) != scan.from)\n                node = parent;\n        }\n    for (;;) {\n        let inner = node.enter(pos, side, mode);\n        if (!inner)\n            return node;\n        node = inner;\n    }\n}\nclass BaseNode {\n    cursor(mode = 0) { return new TreeCursor(this, mode); }\n    getChild(type, before = null, after = null) {\n        let r = getChildren(this, type, before, after);\n        return r.length ? r[0] : null;\n    }\n    getChildren(type, before = null, after = null) {\n        return getChildren(this, type, before, after);\n    }\n    resolve(pos, side = 0) {\n        return resolveNode(this, pos, side, false);\n    }\n    resolveInner(pos, side = 0) {\n        return resolveNode(this, pos, side, true);\n    }\n    matchContext(context) {\n        return matchNodeContext(this.parent, context);\n    }\n    enterUnfinishedNodesBefore(pos) {\n        let scan = this.childBefore(pos), node = this;\n        while (scan) {\n            let last = scan.lastChild;\n            if (!last || last.to != scan.to)\n                break;\n            if (last.type.isError && last.from == last.to) {\n                node = scan;\n                scan = last.prevSibling;\n            }\n            else {\n                scan = last;\n            }\n        }\n        return node;\n    }\n    get node() { return this; }\n    get next() { return this.parent; }\n}\nclass TreeNode extends BaseNode {\n    constructor(_tree, from, \n    // Index in parent node, set to -1 if the node is not a direct child of _parent.node (overlay)\n    index, _parent) {\n        super();\n        this._tree = _tree;\n        this.from = from;\n        this.index = index;\n        this._parent = _parent;\n    }\n    get type() { return this._tree.type; }\n    get name() { return this._tree.type.name; }\n    get to() { return this.from + this._tree.length; }\n    nextChild(i, dir, pos, side, mode = 0) {\n        for (let parent = this;;) {\n            for (let { children, positions } = parent._tree, e = dir > 0 ? children.length : -1; i != e; i += dir) {\n                let next = children[i], start = positions[i] + parent.from;\n                if (!checkSide(side, pos, start, start + next.length))\n                    continue;\n                if (next instanceof TreeBuffer) {\n                    if (mode & IterMode.ExcludeBuffers)\n                        continue;\n                    let index = next.findChild(0, next.buffer.length, dir, pos - start, side);\n                    if (index > -1)\n                        return new BufferNode(new BufferContext(parent, next, i, start), null, index);\n                }\n                else if ((mode & IterMode.IncludeAnonymous) || (!next.type.isAnonymous || hasChild(next))) {\n                    let mounted;\n                    if (!(mode & IterMode.IgnoreMounts) && (mounted = MountedTree.get(next)) && !mounted.overlay)\n                        return new TreeNode(mounted.tree, start, i, parent);\n                    let inner = new TreeNode(next, start, i, parent);\n                    return (mode & IterMode.IncludeAnonymous) || !inner.type.isAnonymous ? inner\n                        : inner.nextChild(dir < 0 ? next.children.length - 1 : 0, dir, pos, side);\n                }\n            }\n            if ((mode & IterMode.IncludeAnonymous) || !parent.type.isAnonymous)\n                return null;\n            if (parent.index >= 0)\n                i = parent.index + dir;\n            else\n                i = dir < 0 ? -1 : parent._parent._tree.children.length;\n            parent = parent._parent;\n            if (!parent)\n                return null;\n        }\n    }\n    get firstChild() { return this.nextChild(0, 1, 0, 4 /* Side.DontCare */); }\n    get lastChild() { return this.nextChild(this._tree.children.length - 1, -1, 0, 4 /* Side.DontCare */); }\n    childAfter(pos) { return this.nextChild(0, 1, pos, 2 /* Side.After */); }\n    childBefore(pos) { return this.nextChild(this._tree.children.length - 1, -1, pos, -2 /* Side.Before */); }\n    enter(pos, side, mode = 0) {\n        let mounted;\n        if (!(mode & IterMode.IgnoreOverlays) && (mounted = MountedTree.get(this._tree)) && mounted.overlay) {\n            let rPos = pos - this.from;\n            for (let { from, to } of mounted.overlay) {\n                if ((side > 0 ? from <= rPos : from < rPos) &&\n                    (side < 0 ? to >= rPos : to > rPos))\n                    return new TreeNode(mounted.tree, mounted.overlay[0].from + this.from, -1, this);\n            }\n        }\n        return this.nextChild(0, 1, pos, side, mode);\n    }\n    nextSignificantParent() {\n        let val = this;\n        while (val.type.isAnonymous && val._parent)\n            val = val._parent;\n        return val;\n    }\n    get parent() {\n        return this._parent ? this._parent.nextSignificantParent() : null;\n    }\n    get nextSibling() {\n        return this._parent && this.index >= 0 ? this._parent.nextChild(this.index + 1, 1, 0, 4 /* Side.DontCare */) : null;\n    }\n    get prevSibling() {\n        return this._parent && this.index >= 0 ? this._parent.nextChild(this.index - 1, -1, 0, 4 /* Side.DontCare */) : null;\n    }\n    get tree() { return this._tree; }\n    toTree() { return this._tree; }\n    /**\n    @internal\n    */\n    toString() { return this._tree.toString(); }\n}\nfunction getChildren(node, type, before, after) {\n    let cur = node.cursor(), result = [];\n    if (!cur.firstChild())\n        return result;\n    if (before != null)\n        for (let found = false; !found;) {\n            found = cur.type.is(before);\n            if (!cur.nextSibling())\n                return result;\n        }\n    for (;;) {\n        if (after != null && cur.type.is(after))\n            return result;\n        if (cur.type.is(type))\n            result.push(cur.node);\n        if (!cur.nextSibling())\n            return after == null ? result : [];\n    }\n}\nfunction matchNodeContext(node, context, i = context.length - 1) {\n    for (let p = node; i >= 0; p = p.parent) {\n        if (!p)\n            return false;\n        if (!p.type.isAnonymous) {\n            if (context[i] && context[i] != p.name)\n                return false;\n            i--;\n        }\n    }\n    return true;\n}\nclass BufferContext {\n    constructor(parent, buffer, index, start) {\n        this.parent = parent;\n        this.buffer = buffer;\n        this.index = index;\n        this.start = start;\n    }\n}\nclass BufferNode extends BaseNode {\n    get name() { return this.type.name; }\n    get from() { return this.context.start + this.context.buffer.buffer[this.index + 1]; }\n    get to() { return this.context.start + this.context.buffer.buffer[this.index + 2]; }\n    constructor(context, _parent, index) {\n        super();\n        this.context = context;\n        this._parent = _parent;\n        this.index = index;\n        this.type = context.buffer.set.types[context.buffer.buffer[index]];\n    }\n    child(dir, pos, side) {\n        let { buffer } = this.context;\n        let index = buffer.findChild(this.index + 4, buffer.buffer[this.index + 3], dir, pos - this.context.start, side);\n        return index < 0 ? null : new BufferNode(this.context, this, index);\n    }\n    get firstChild() { return this.child(1, 0, 4 /* Side.DontCare */); }\n    get lastChild() { return this.child(-1, 0, 4 /* Side.DontCare */); }\n    childAfter(pos) { return this.child(1, pos, 2 /* Side.After */); }\n    childBefore(pos) { return this.child(-1, pos, -2 /* Side.Before */); }\n    enter(pos, side, mode = 0) {\n        if (mode & IterMode.ExcludeBuffers)\n            return null;\n        let { buffer } = this.context;\n        let index = buffer.findChild(this.index + 4, buffer.buffer[this.index + 3], side > 0 ? 1 : -1, pos - this.context.start, side);\n        return index < 0 ? null : new BufferNode(this.context, this, index);\n    }\n    get parent() {\n        return this._parent || this.context.parent.nextSignificantParent();\n    }\n    externalSibling(dir) {\n        return this._parent ? null : this.context.parent.nextChild(this.context.index + dir, dir, 0, 4 /* Side.DontCare */);\n    }\n    get nextSibling() {\n        let { buffer } = this.context;\n        let after = buffer.buffer[this.index + 3];\n        if (after < (this._parent ? buffer.buffer[this._parent.index + 3] : buffer.buffer.length))\n            return new BufferNode(this.context, this._parent, after);\n        return this.externalSibling(1);\n    }\n    get prevSibling() {\n        let { buffer } = this.context;\n        let parentStart = this._parent ? this._parent.index + 4 : 0;\n        if (this.index == parentStart)\n            return this.externalSibling(-1);\n        return new BufferNode(this.context, this._parent, buffer.findChild(parentStart, this.index, -1, 0, 4 /* Side.DontCare */));\n    }\n    get tree() { return null; }\n    toTree() {\n        let children = [], positions = [];\n        let { buffer } = this.context;\n        let startI = this.index + 4, endI = buffer.buffer[this.index + 3];\n        if (endI > startI) {\n            let from = buffer.buffer[this.index + 1];\n            children.push(buffer.slice(startI, endI, from));\n            positions.push(0);\n        }\n        return new Tree(this.type, children, positions, this.to - this.from);\n    }\n    /**\n    @internal\n    */\n    toString() { return this.context.buffer.childString(this.index); }\n}\nfunction iterStack(heads) {\n    if (!heads.length)\n        return null;\n    let pick = 0, picked = heads[0];\n    for (let i = 1; i < heads.length; i++) {\n        let node = heads[i];\n        if (node.from > picked.from || node.to < picked.to) {\n            picked = node;\n            pick = i;\n        }\n    }\n    let next = picked instanceof TreeNode && picked.index < 0 ? null : picked.parent;\n    let newHeads = heads.slice();\n    if (next)\n        newHeads[pick] = next;\n    else\n        newHeads.splice(pick, 1);\n    return new StackIterator(newHeads, picked);\n}\nclass StackIterator {\n    constructor(heads, node) {\n        this.heads = heads;\n        this.node = node;\n    }\n    get next() { return iterStack(this.heads); }\n}\nfunction stackIterator(tree, pos, side) {\n    let inner = tree.resolveInner(pos, side), layers = null;\n    for (let scan = inner instanceof TreeNode ? inner : inner.context.parent; scan; scan = scan.parent) {\n        if (scan.index < 0) { // This is an overlay root\n            let parent = scan.parent;\n            (layers || (layers = [inner])).push(parent.resolve(pos, side));\n            scan = parent;\n        }\n        else {\n            let mount = MountedTree.get(scan.tree);\n            // Relevant overlay branching off\n            if (mount && mount.overlay && mount.overlay[0].from <= pos && mount.overlay[mount.overlay.length - 1].to >= pos) {\n                let root = new TreeNode(mount.tree, mount.overlay[0].from + scan.from, -1, scan);\n                (layers || (layers = [inner])).push(resolveNode(root, pos, side, false));\n            }\n        }\n    }\n    return layers ? iterStack(layers) : inner;\n}\n/**\nA tree cursor object focuses on a given node in a syntax tree, and\nallows you to move to adjacent nodes.\n*/\nclass TreeCursor {\n    /**\n    Shorthand for `.type.name`.\n    */\n    get name() { return this.type.name; }\n    /**\n    @internal\n    */\n    constructor(node, \n    /**\n    @internal\n    */\n    mode = 0) {\n        this.mode = mode;\n        /**\n        @internal\n        */\n        this.buffer = null;\n        this.stack = [];\n        /**\n        @internal\n        */\n        this.index = 0;\n        this.bufferNode = null;\n        if (node instanceof TreeNode) {\n            this.yieldNode(node);\n        }\n        else {\n            this._tree = node.context.parent;\n            this.buffer = node.context;\n            for (let n = node._parent; n; n = n._parent)\n                this.stack.unshift(n.index);\n            this.bufferNode = node;\n            this.yieldBuf(node.index);\n        }\n    }\n    yieldNode(node) {\n        if (!node)\n            return false;\n        this._tree = node;\n        this.type = node.type;\n        this.from = node.from;\n        this.to = node.to;\n        return true;\n    }\n    yieldBuf(index, type) {\n        this.index = index;\n        let { start, buffer } = this.buffer;\n        this.type = type || buffer.set.types[buffer.buffer[index]];\n        this.from = start + buffer.buffer[index + 1];\n        this.to = start + buffer.buffer[index + 2];\n        return true;\n    }\n    /**\n    @internal\n    */\n    yield(node) {\n        if (!node)\n            return false;\n        if (node instanceof TreeNode) {\n            this.buffer = null;\n            return this.yieldNode(node);\n        }\n        this.buffer = node.context;\n        return this.yieldBuf(node.index, node.type);\n    }\n    /**\n    @internal\n    */\n    toString() {\n        return this.buffer ? this.buffer.buffer.childString(this.index) : this._tree.toString();\n    }\n    /**\n    @internal\n    */\n    enterChild(dir, pos, side) {\n        if (!this.buffer)\n            return this.yield(this._tree.nextChild(dir < 0 ? this._tree._tree.children.length - 1 : 0, dir, pos, side, this.mode));\n        let { buffer } = this.buffer;\n        let index = buffer.findChild(this.index + 4, buffer.buffer[this.index + 3], dir, pos - this.buffer.start, side);\n        if (index < 0)\n            return false;\n        this.stack.push(this.index);\n        return this.yieldBuf(index);\n    }\n    /**\n    Move the cursor to this node's first child. When this returns\n    false, the node has no child, and the cursor has not been moved.\n    */\n    firstChild() { return this.enterChild(1, 0, 4 /* Side.DontCare */); }\n    /**\n    Move the cursor to this node's last child.\n    */\n    lastChild() { return this.enterChild(-1, 0, 4 /* Side.DontCare */); }\n    /**\n    Move the cursor to the first child that ends after `pos`.\n    */\n    childAfter(pos) { return this.enterChild(1, pos, 2 /* Side.After */); }\n    /**\n    Move to the last child that starts before `pos`.\n    */\n    childBefore(pos) { return this.enterChild(-1, pos, -2 /* Side.Before */); }\n    /**\n    Move the cursor to the child around `pos`. If side is -1 the\n    child may end at that position, when 1 it may start there. This\n    will also enter [overlaid](#common.MountedTree.overlay)\n    [mounted](#common.NodeProp^mounted) trees unless `overlays` is\n    set to false.\n    */\n    enter(pos, side, mode = this.mode) {\n        if (!this.buffer)\n            return this.yield(this._tree.enter(pos, side, mode));\n        return mode & IterMode.ExcludeBuffers ? false : this.enterChild(1, pos, side);\n    }\n    /**\n    Move to the node's parent node, if this isn't the top node.\n    */\n    parent() {\n        if (!this.buffer)\n            return this.yieldNode((this.mode & IterMode.IncludeAnonymous) ? this._tree._parent : this._tree.parent);\n        if (this.stack.length)\n            return this.yieldBuf(this.stack.pop());\n        let parent = (this.mode & IterMode.IncludeAnonymous) ? this.buffer.parent : this.buffer.parent.nextSignificantParent();\n        this.buffer = null;\n        return this.yieldNode(parent);\n    }\n    /**\n    @internal\n    */\n    sibling(dir) {\n        if (!this.buffer)\n            return !this._tree._parent ? false\n                : this.yield(this._tree.index < 0 ? null\n                    : this._tree._parent.nextChild(this._tree.index + dir, dir, 0, 4 /* Side.DontCare */, this.mode));\n        let { buffer } = this.buffer, d = this.stack.length - 1;\n        if (dir < 0) {\n            let parentStart = d < 0 ? 0 : this.stack[d] + 4;\n            if (this.index != parentStart)\n                return this.yieldBuf(buffer.findChild(parentStart, this.index, -1, 0, 4 /* Side.DontCare */));\n        }\n        else {\n            let after = buffer.buffer[this.index + 3];\n            if (after < (d < 0 ? buffer.buffer.length : buffer.buffer[this.stack[d] + 3]))\n                return this.yieldBuf(after);\n        }\n        return d < 0 ? this.yield(this.buffer.parent.nextChild(this.buffer.index + dir, dir, 0, 4 /* Side.DontCare */, this.mode)) : false;\n    }\n    /**\n    Move to this node's next sibling, if any.\n    */\n    nextSibling() { return this.sibling(1); }\n    /**\n    Move to this node's previous sibling, if any.\n    */\n    prevSibling() { return this.sibling(-1); }\n    atLastNode(dir) {\n        let index, parent, { buffer } = this;\n        if (buffer) {\n            if (dir > 0) {\n                if (this.index < buffer.buffer.buffer.length)\n                    return false;\n            }\n            else {\n                for (let i = 0; i < this.index; i++)\n                    if (buffer.buffer.buffer[i + 3] < this.index)\n                        return false;\n            }\n            ({ index, parent } = buffer);\n        }\n        else {\n            ({ index, _parent: parent } = this._tree);\n        }\n        for (; parent; { index, _parent: parent } = parent) {\n            if (index > -1)\n                for (let i = index + dir, e = dir < 0 ? -1 : parent._tree.children.length; i != e; i += dir) {\n                    let child = parent._tree.children[i];\n                    if ((this.mode & IterMode.IncludeAnonymous) ||\n                        child instanceof TreeBuffer ||\n                        !child.type.isAnonymous ||\n                        hasChild(child))\n                        return false;\n                }\n        }\n        return true;\n    }\n    move(dir, enter) {\n        if (enter && this.enterChild(dir, 0, 4 /* Side.DontCare */))\n            return true;\n        for (;;) {\n            if (this.sibling(dir))\n                return true;\n            if (this.atLastNode(dir) || !this.parent())\n                return false;\n        }\n    }\n    /**\n    Move to the next node in a\n    [pre-order](https://en.wikipedia.org/wiki/Tree_traversal#Pre-order,_NLR)\n    traversal, going from a node to its first child or, if the\n    current node is empty or `enter` is false, its next sibling or\n    the next sibling of the first parent node that has one.\n    */\n    next(enter = true) { return this.move(1, enter); }\n    /**\n    Move to the next node in a last-to-first pre-order traversal. A\n    node is followed by its last child or, if it has none, its\n    previous sibling or the previous sibling of the first parent\n    node that has one.\n    */\n    prev(enter = true) { return this.move(-1, enter); }\n    /**\n    Move the cursor to the innermost node that covers `pos`. If\n    `side` is -1, it will enter nodes that end at `pos`. If it is 1,\n    it will enter nodes that start at `pos`.\n    */\n    moveTo(pos, side = 0) {\n        // Move up to a node that actually holds the position, if possible\n        while (this.from == this.to ||\n            (side < 1 ? this.from >= pos : this.from > pos) ||\n            (side > -1 ? this.to <= pos : this.to < pos))\n            if (!this.parent())\n                break;\n        // Then scan down into child nodes as far as possible\n        while (this.enterChild(1, pos, side)) { }\n        return this;\n    }\n    /**\n    Get a [syntax node](#common.SyntaxNode) at the cursor's current\n    position.\n    */\n    get node() {\n        if (!this.buffer)\n            return this._tree;\n        let cache = this.bufferNode, result = null, depth = 0;\n        if (cache && cache.context == this.buffer) {\n            scan: for (let index = this.index, d = this.stack.length; d >= 0;) {\n                for (let c = cache; c; c = c._parent)\n                    if (c.index == index) {\n                        if (index == this.index)\n                            return c;\n                        result = c;\n                        depth = d + 1;\n                        break scan;\n                    }\n                index = this.stack[--d];\n            }\n        }\n        for (let i = depth; i < this.stack.length; i++)\n            result = new BufferNode(this.buffer, result, this.stack[i]);\n        return this.bufferNode = new BufferNode(this.buffer, result, this.index);\n    }\n    /**\n    Get the [tree](#common.Tree) that represents the current node, if\n    any. Will return null when the node is in a [tree\n    buffer](#common.TreeBuffer).\n    */\n    get tree() {\n        return this.buffer ? null : this._tree._tree;\n    }\n    /**\n    Iterate over the current node and all its descendants, calling\n    `enter` when entering a node and `leave`, if given, when leaving\n    one. When `enter` returns `false`, any children of that node are\n    skipped, and `leave` isn't called for it.\n    */\n    iterate(enter, leave) {\n        for (let depth = 0;;) {\n            let mustLeave = false;\n            if (this.type.isAnonymous || enter(this) !== false) {\n                if (this.firstChild()) {\n                    depth++;\n                    continue;\n                }\n                if (!this.type.isAnonymous)\n                    mustLeave = true;\n            }\n            for (;;) {\n                if (mustLeave && leave)\n                    leave(this);\n                mustLeave = this.type.isAnonymous;\n                if (!depth)\n                    return;\n                if (this.nextSibling())\n                    break;\n                this.parent();\n                depth--;\n                mustLeave = true;\n            }\n        }\n    }\n    /**\n    Test whether the current node matches a given context—a sequence\n    of direct parent node names. Empty strings in the context array\n    are treated as wildcards.\n    */\n    matchContext(context) {\n        if (!this.buffer)\n            return matchNodeContext(this.node.parent, context);\n        let { buffer } = this.buffer, { types } = buffer.set;\n        for (let i = context.length - 1, d = this.stack.length - 1; i >= 0; d--) {\n            if (d < 0)\n                return matchNodeContext(this._tree, context, i);\n            let type = types[buffer.buffer[this.stack[d]]];\n            if (!type.isAnonymous) {\n                if (context[i] && context[i] != type.name)\n                    return false;\n                i--;\n            }\n        }\n        return true;\n    }\n}\nfunction hasChild(tree) {\n    return tree.children.some(ch => ch instanceof TreeBuffer || !ch.type.isAnonymous || hasChild(ch));\n}\nfunction buildTree(data) {\n    var _a;\n    let { buffer, nodeSet, maxBufferLength = DefaultBufferLength, reused = [], minRepeatType = nodeSet.types.length } = data;\n    let cursor = Array.isArray(buffer) ? new FlatBufferCursor(buffer, buffer.length) : buffer;\n    let types = nodeSet.types;\n    let contextHash = 0, lookAhead = 0;\n    function takeNode(parentStart, minPos, children, positions, inRepeat, depth) {\n        let { id, start, end, size } = cursor;\n        let lookAheadAtStart = lookAhead, contextAtStart = contextHash;\n        while (size < 0) {\n            cursor.next();\n            if (size == -1 /* SpecialRecord.Reuse */) {\n                let node = reused[id];\n                children.push(node);\n                positions.push(start - parentStart);\n                return;\n            }\n            else if (size == -3 /* SpecialRecord.ContextChange */) { // Context change\n                contextHash = id;\n                return;\n            }\n            else if (size == -4 /* SpecialRecord.LookAhead */) {\n                lookAhead = id;\n                return;\n            }\n            else {\n                throw new RangeError(`Unrecognized record size: ${size}`);\n            }\n        }\n        let type = types[id], node, buffer;\n        let startPos = start - parentStart;\n        if (end - start <= maxBufferLength && (buffer = findBufferSize(cursor.pos - minPos, inRepeat))) {\n            // Small enough for a buffer, and no reused nodes inside\n            let data = new Uint16Array(buffer.size - buffer.skip);\n            let endPos = cursor.pos - buffer.size, index = data.length;\n            while (cursor.pos > endPos)\n                index = copyToBuffer(buffer.start, data, index);\n            node = new TreeBuffer(data, end - buffer.start, nodeSet);\n            startPos = buffer.start - parentStart;\n        }\n        else { // Make it a node\n            let endPos = cursor.pos - size;\n            cursor.next();\n            let localChildren = [], localPositions = [];\n            let localInRepeat = id >= minRepeatType ? id : -1;\n            let lastGroup = 0, lastEnd = end;\n            while (cursor.pos > endPos) {\n                if (localInRepeat >= 0 && cursor.id == localInRepeat && cursor.size >= 0) {\n                    if (cursor.end <= lastEnd - maxBufferLength) {\n                        makeRepeatLeaf(localChildren, localPositions, start, lastGroup, cursor.end, lastEnd, localInRepeat, lookAheadAtStart, contextAtStart);\n                        lastGroup = localChildren.length;\n                        lastEnd = cursor.end;\n                    }\n                    cursor.next();\n                }\n                else if (depth > 2500 /* CutOff.Depth */) {\n                    takeFlatNode(start, endPos, localChildren, localPositions);\n                }\n                else {\n                    takeNode(start, endPos, localChildren, localPositions, localInRepeat, depth + 1);\n                }\n            }\n            if (localInRepeat >= 0 && lastGroup > 0 && lastGroup < localChildren.length)\n                makeRepeatLeaf(localChildren, localPositions, start, lastGroup, start, lastEnd, localInRepeat, lookAheadAtStart, contextAtStart);\n            localChildren.reverse();\n            localPositions.reverse();\n            if (localInRepeat > -1 && lastGroup > 0) {\n                let make = makeBalanced(type, contextAtStart);\n                node = balanceRange(type, localChildren, localPositions, 0, localChildren.length, 0, end - start, make, make);\n            }\n            else {\n                node = makeTree(type, localChildren, localPositions, end - start, lookAheadAtStart - end, contextAtStart);\n            }\n        }\n        children.push(node);\n        positions.push(startPos);\n    }\n    function takeFlatNode(parentStart, minPos, children, positions) {\n        let nodes = []; // Temporary, inverted array of leaf nodes found, with absolute positions\n        let nodeCount = 0, stopAt = -1;\n        while (cursor.pos > minPos) {\n            let { id, start, end, size } = cursor;\n            if (size > 4) { // Not a leaf\n                cursor.next();\n            }\n            else if (stopAt > -1 && start < stopAt) {\n                break;\n            }\n            else {\n                if (stopAt < 0)\n                    stopAt = end - maxBufferLength;\n                nodes.push(id, start, end);\n                nodeCount++;\n                cursor.next();\n            }\n        }\n        if (nodeCount) {\n            let buffer = new Uint16Array(nodeCount * 4);\n            let start = nodes[nodes.length - 2];\n            for (let i = nodes.length - 3, j = 0; i >= 0; i -= 3) {\n                buffer[j++] = nodes[i];\n                buffer[j++] = nodes[i + 1] - start;\n                buffer[j++] = nodes[i + 2] - start;\n                buffer[j++] = j;\n            }\n            children.push(new TreeBuffer(buffer, nodes[2] - start, nodeSet));\n            positions.push(start - parentStart);\n        }\n    }\n    function makeBalanced(type, contextHash) {\n        return (children, positions, length) => {\n            let lookAhead = 0, lastI = children.length - 1, last, lookAheadProp;\n            if (lastI >= 0 && (last = children[lastI]) instanceof Tree) {\n                if (!lastI && last.type == type && last.length == length)\n                    return last;\n                if (lookAheadProp = last.prop(NodeProp.lookAhead))\n                    lookAhead = positions[lastI] + last.length + lookAheadProp;\n            }\n            return makeTree(type, children, positions, length, lookAhead, contextHash);\n        };\n    }\n    function makeRepeatLeaf(children, positions, base, i, from, to, type, lookAhead, contextHash) {\n        let localChildren = [], localPositions = [];\n        while (children.length > i) {\n            localChildren.push(children.pop());\n            localPositions.push(positions.pop() + base - from);\n        }\n        children.push(makeTree(nodeSet.types[type], localChildren, localPositions, to - from, lookAhead - to, contextHash));\n        positions.push(from - base);\n    }\n    function makeTree(type, children, positions, length, lookAhead, contextHash, props) {\n        if (contextHash) {\n            let pair = [NodeProp.contextHash, contextHash];\n            props = props ? [pair].concat(props) : [pair];\n        }\n        if (lookAhead > 25) {\n            let pair = [NodeProp.lookAhead, lookAhead];\n            props = props ? [pair].concat(props) : [pair];\n        }\n        return new Tree(type, children, positions, length, props);\n    }\n    function findBufferSize(maxSize, inRepeat) {\n        // Scan through the buffer to find previous siblings that fit\n        // together in a TreeBuffer, and don't contain any reused nodes\n        // (which can't be stored in a buffer).\n        // If `inRepeat` is > -1, ignore node boundaries of that type for\n        // nesting, but make sure the end falls either at the start\n        // (`maxSize`) or before such a node.\n        let fork = cursor.fork();\n        let size = 0, start = 0, skip = 0, minStart = fork.end - maxBufferLength;\n        let result = { size: 0, start: 0, skip: 0 };\n        scan: for (let minPos = fork.pos - maxSize; fork.pos > minPos;) {\n            let nodeSize = fork.size;\n            // Pretend nested repeat nodes of the same type don't exist\n            if (fork.id == inRepeat && nodeSize >= 0) {\n                // Except that we store the current state as a valid return\n                // value.\n                result.size = size;\n                result.start = start;\n                result.skip = skip;\n                skip += 4;\n                size += 4;\n                fork.next();\n                continue;\n            }\n            let startPos = fork.pos - nodeSize;\n            if (nodeSize < 0 || startPos < minPos || fork.start < minStart)\n                break;\n            let localSkipped = fork.id >= minRepeatType ? 4 : 0;\n            let nodeStart = fork.start;\n            fork.next();\n            while (fork.pos > startPos) {\n                if (fork.size < 0) {\n                    if (fork.size == -3 /* SpecialRecord.ContextChange */)\n                        localSkipped += 4;\n                    else\n                        break scan;\n                }\n                else if (fork.id >= minRepeatType) {\n                    localSkipped += 4;\n                }\n                fork.next();\n            }\n            start = nodeStart;\n            size += nodeSize;\n            skip += localSkipped;\n        }\n        if (inRepeat < 0 || size == maxSize) {\n            result.size = size;\n            result.start = start;\n            result.skip = skip;\n        }\n        return result.size > 4 ? result : undefined;\n    }\n    function copyToBuffer(bufferStart, buffer, index) {\n        let { id, start, end, size } = cursor;\n        cursor.next();\n        if (size >= 0 && id < minRepeatType) {\n            let startIndex = index;\n            if (size > 4) {\n                let endPos = cursor.pos - (size - 4);\n                while (cursor.pos > endPos)\n                    index = copyToBuffer(bufferStart, buffer, index);\n            }\n            buffer[--index] = startIndex;\n            buffer[--index] = end - bufferStart;\n            buffer[--index] = start - bufferStart;\n            buffer[--index] = id;\n        }\n        else if (size == -3 /* SpecialRecord.ContextChange */) {\n            contextHash = id;\n        }\n        else if (size == -4 /* SpecialRecord.LookAhead */) {\n            lookAhead = id;\n        }\n        return index;\n    }\n    let children = [], positions = [];\n    while (cursor.pos > 0)\n        takeNode(data.start || 0, data.bufferStart || 0, children, positions, -1, 0);\n    let length = (_a = data.length) !== null && _a !== void 0 ? _a : (children.length ? positions[0] + children[0].length : 0);\n    return new Tree(types[data.topID], children.reverse(), positions.reverse(), length);\n}\nconst nodeSizeCache = new WeakMap;\nfunction nodeSize(balanceType, node) {\n    if (!balanceType.isAnonymous || node instanceof TreeBuffer || node.type != balanceType)\n        return 1;\n    let size = nodeSizeCache.get(node);\n    if (size == null) {\n        size = 1;\n        for (let child of node.children) {\n            if (child.type != balanceType || !(child instanceof Tree)) {\n                size = 1;\n                break;\n            }\n            size += nodeSize(balanceType, child);\n        }\n        nodeSizeCache.set(node, size);\n    }\n    return size;\n}\nfunction balanceRange(\n// The type the balanced tree's inner nodes.\nbalanceType, \n// The direct children and their positions\nchildren, positions, \n// The index range in children/positions to use\nfrom, to, \n// The start position of the nodes, relative to their parent.\nstart, \n// Length of the outer node\nlength, \n// Function to build the top node of the balanced tree\nmkTop, \n// Function to build internal nodes for the balanced tree\nmkTree) {\n    let total = 0;\n    for (let i = from; i < to; i++)\n        total += nodeSize(balanceType, children[i]);\n    let maxChild = Math.ceil((total * 1.5) / 8 /* Balance.BranchFactor */);\n    let localChildren = [], localPositions = [];\n    function divide(children, positions, from, to, offset) {\n        for (let i = from; i < to;) {\n            let groupFrom = i, groupStart = positions[i], groupSize = nodeSize(balanceType, children[i]);\n            i++;\n            for (; i < to; i++) {\n                let nextSize = nodeSize(balanceType, children[i]);\n                if (groupSize + nextSize >= maxChild)\n                    break;\n                groupSize += nextSize;\n            }\n            if (i == groupFrom + 1) {\n                if (groupSize > maxChild) {\n                    let only = children[groupFrom]; // Only trees can have a size > 1\n                    divide(only.children, only.positions, 0, only.children.length, positions[groupFrom] + offset);\n                    continue;\n                }\n                localChildren.push(children[groupFrom]);\n            }\n            else {\n                let length = positions[i - 1] + children[i - 1].length - groupStart;\n                localChildren.push(balanceRange(balanceType, children, positions, groupFrom, i, groupStart, length, null, mkTree));\n            }\n            localPositions.push(groupStart + offset - start);\n        }\n    }\n    divide(children, positions, from, to, 0);\n    return (mkTop || mkTree)(localChildren, localPositions, length);\n}\n/**\nProvides a way to associate values with pieces of trees. As long\nas that part of the tree is reused, the associated values can be\nretrieved from an updated tree.\n*/\nclass NodeWeakMap {\n    constructor() {\n        this.map = new WeakMap();\n    }\n    setBuffer(buffer, index, value) {\n        let inner = this.map.get(buffer);\n        if (!inner)\n            this.map.set(buffer, inner = new Map);\n        inner.set(index, value);\n    }\n    getBuffer(buffer, index) {\n        let inner = this.map.get(buffer);\n        return inner && inner.get(index);\n    }\n    /**\n    Set the value for this syntax node.\n    */\n    set(node, value) {\n        if (node instanceof BufferNode)\n            this.setBuffer(node.context.buffer, node.index, value);\n        else if (node instanceof TreeNode)\n            this.map.set(node.tree, value);\n    }\n    /**\n    Retrieve value for this syntax node, if it exists in the map.\n    */\n    get(node) {\n        return node instanceof BufferNode ? this.getBuffer(node.context.buffer, node.index)\n            : node instanceof TreeNode ? this.map.get(node.tree) : undefined;\n    }\n    /**\n    Set the value for the node that a cursor currently points to.\n    */\n    cursorSet(cursor, value) {\n        if (cursor.buffer)\n            this.setBuffer(cursor.buffer.buffer, cursor.index, value);\n        else\n            this.map.set(cursor.tree, value);\n    }\n    /**\n    Retrieve the value for the node that a cursor currently points\n    to.\n    */\n    cursorGet(cursor) {\n        return cursor.buffer ? this.getBuffer(cursor.buffer.buffer, cursor.index) : this.map.get(cursor.tree);\n    }\n}\n\n/**\nTree fragments are used during [incremental\nparsing](#common.Parser.startParse) to track parts of old trees\nthat can be reused in a new parse. An array of fragments is used\nto track regions of an old tree whose nodes might be reused in new\nparses. Use the static\n[`applyChanges`](#common.TreeFragment^applyChanges) method to\nupdate fragments for document changes.\n*/\nclass TreeFragment {\n    /**\n    Construct a tree fragment. You'll usually want to use\n    [`addTree`](#common.TreeFragment^addTree) and\n    [`applyChanges`](#common.TreeFragment^applyChanges) instead of\n    calling this directly.\n    */\n    constructor(\n    /**\n    The start of the unchanged range pointed to by this fragment.\n    This refers to an offset in the _updated_ document (as opposed\n    to the original tree).\n    */\n    from, \n    /**\n    The end of the unchanged range.\n    */\n    to, \n    /**\n    The tree that this fragment is based on.\n    */\n    tree, \n    /**\n    The offset between the fragment's tree and the document that\n    this fragment can be used against. Add this when going from\n    document to tree positions, subtract it to go from tree to\n    document positions.\n    */\n    offset, openStart = false, openEnd = false) {\n        this.from = from;\n        this.to = to;\n        this.tree = tree;\n        this.offset = offset;\n        this.open = (openStart ? 1 /* Open.Start */ : 0) | (openEnd ? 2 /* Open.End */ : 0);\n    }\n    /**\n    Whether the start of the fragment represents the start of a\n    parse, or the end of a change. (In the second case, it may not\n    be safe to reuse some nodes at the start, depending on the\n    parsing algorithm.)\n    */\n    get openStart() { return (this.open & 1 /* Open.Start */) > 0; }\n    /**\n    Whether the end of the fragment represents the end of a\n    full-document parse, or the start of a change.\n    */\n    get openEnd() { return (this.open & 2 /* Open.End */) > 0; }\n    /**\n    Create a set of fragments from a freshly parsed tree, or update\n    an existing set of fragments by replacing the ones that overlap\n    with a tree with content from the new tree. When `partial` is\n    true, the parse is treated as incomplete, and the resulting\n    fragment has [`openEnd`](#common.TreeFragment.openEnd) set to\n    true.\n    */\n    static addTree(tree, fragments = [], partial = false) {\n        let result = [new TreeFragment(0, tree.length, tree, 0, false, partial)];\n        for (let f of fragments)\n            if (f.to > tree.length)\n                result.push(f);\n        return result;\n    }\n    /**\n    Apply a set of edits to an array of fragments, removing or\n    splitting fragments as necessary to remove edited ranges, and\n    adjusting offsets for fragments that moved.\n    */\n    static applyChanges(fragments, changes, minGap = 128) {\n        if (!changes.length)\n            return fragments;\n        let result = [];\n        let fI = 1, nextF = fragments.length ? fragments[0] : null;\n        for (let cI = 0, pos = 0, off = 0;; cI++) {\n            let nextC = cI < changes.length ? changes[cI] : null;\n            let nextPos = nextC ? nextC.fromA : 1e9;\n            if (nextPos - pos >= minGap)\n                while (nextF && nextF.from < nextPos) {\n                    let cut = nextF;\n                    if (pos >= cut.from || nextPos <= cut.to || off) {\n                        let fFrom = Math.max(cut.from, pos) - off, fTo = Math.min(cut.to, nextPos) - off;\n                        cut = fFrom >= fTo ? null : new TreeFragment(fFrom, fTo, cut.tree, cut.offset + off, cI > 0, !!nextC);\n                    }\n                    if (cut)\n                        result.push(cut);\n                    if (nextF.to > nextPos)\n                        break;\n                    nextF = fI < fragments.length ? fragments[fI++] : null;\n                }\n            if (!nextC)\n                break;\n            pos = nextC.toA;\n            off = nextC.toA - nextC.toB;\n        }\n        return result;\n    }\n}\n/**\nA superclass that parsers should extend.\n*/\nclass Parser {\n    /**\n    Start a parse, returning a [partial parse](#common.PartialParse)\n    object. [`fragments`](#common.TreeFragment) can be passed in to\n    make the parse incremental.\n    \n    By default, the entire input is parsed. You can pass `ranges`,\n    which should be a sorted array of non-empty, non-overlapping\n    ranges, to parse only those ranges. The tree returned in that\n    case will start at `ranges[0].from`.\n    */\n    startParse(input, fragments, ranges) {\n        if (typeof input == \"string\")\n            input = new StringInput(input);\n        ranges = !ranges ? [new Range(0, input.length)] : ranges.length ? ranges.map(r => new Range(r.from, r.to)) : [new Range(0, 0)];\n        return this.createParse(input, fragments || [], ranges);\n    }\n    /**\n    Run a full parse, returning the resulting tree.\n    */\n    parse(input, fragments, ranges) {\n        let parse = this.startParse(input, fragments, ranges);\n        for (;;) {\n            let done = parse.advance();\n            if (done)\n                return done;\n        }\n    }\n}\nclass StringInput {\n    constructor(string) {\n        this.string = string;\n    }\n    get length() { return this.string.length; }\n    chunk(from) { return this.string.slice(from); }\n    get lineChunks() { return false; }\n    read(from, to) { return this.string.slice(from, to); }\n}\n\n/**\nCreate a parse wrapper that, after the inner parse completes,\nscans its tree for mixed language regions with the `nest`\nfunction, runs the resulting [inner parses](#common.NestedParse),\nand then [mounts](#common.NodeProp^mounted) their results onto the\ntree.\n*/\nfunction parseMixed(nest) {\n    return (parse, input, fragments, ranges) => new MixedParse(parse, nest, input, fragments, ranges);\n}\nclass InnerParse {\n    constructor(parser, parse, overlay, target, from) {\n        this.parser = parser;\n        this.parse = parse;\n        this.overlay = overlay;\n        this.target = target;\n        this.from = from;\n    }\n}\nfunction checkRanges(ranges) {\n    if (!ranges.length || ranges.some(r => r.from >= r.to))\n        throw new RangeError(\"Invalid inner parse ranges given: \" + JSON.stringify(ranges));\n}\nclass ActiveOverlay {\n    constructor(parser, predicate, mounts, index, start, target, prev) {\n        this.parser = parser;\n        this.predicate = predicate;\n        this.mounts = mounts;\n        this.index = index;\n        this.start = start;\n        this.target = target;\n        this.prev = prev;\n        this.depth = 0;\n        this.ranges = [];\n    }\n}\nconst stoppedInner = new NodeProp({ perNode: true });\nclass MixedParse {\n    constructor(base, nest, input, fragments, ranges) {\n        this.nest = nest;\n        this.input = input;\n        this.fragments = fragments;\n        this.ranges = ranges;\n        this.inner = [];\n        this.innerDone = 0;\n        this.baseTree = null;\n        this.stoppedAt = null;\n        this.baseParse = base;\n    }\n    advance() {\n        if (this.baseParse) {\n            let done = this.baseParse.advance();\n            if (!done)\n                return null;\n            this.baseParse = null;\n            this.baseTree = done;\n            this.startInner();\n            if (this.stoppedAt != null)\n                for (let inner of this.inner)\n                    inner.parse.stopAt(this.stoppedAt);\n        }\n        if (this.innerDone == this.inner.length) {\n            let result = this.baseTree;\n            if (this.stoppedAt != null)\n                result = new Tree(result.type, result.children, result.positions, result.length, result.propValues.concat([[stoppedInner, this.stoppedAt]]));\n            return result;\n        }\n        let inner = this.inner[this.innerDone], done = inner.parse.advance();\n        if (done) {\n            this.innerDone++;\n            // This is a somewhat dodgy but super helpful hack where we\n            // patch up nodes created by the inner parse (and thus\n            // presumably not aliased anywhere else) to hold the information\n            // about the inner parse.\n            let props = Object.assign(Object.create(null), inner.target.props);\n            props[NodeProp.mounted.id] = new MountedTree(done, inner.overlay, inner.parser);\n            inner.target.props = props;\n        }\n        return null;\n    }\n    get parsedPos() {\n        if (this.baseParse)\n            return 0;\n        let pos = this.input.length;\n        for (let i = this.innerDone; i < this.inner.length; i++) {\n            if (this.inner[i].from < pos)\n                pos = Math.min(pos, this.inner[i].parse.parsedPos);\n        }\n        return pos;\n    }\n    stopAt(pos) {\n        this.stoppedAt = pos;\n        if (this.baseParse)\n            this.baseParse.stopAt(pos);\n        else\n            for (let i = this.innerDone; i < this.inner.length; i++)\n                this.inner[i].parse.stopAt(pos);\n    }\n    startInner() {\n        let fragmentCursor = new FragmentCursor(this.fragments);\n        let overlay = null;\n        let covered = null;\n        let cursor = new TreeCursor(new TreeNode(this.baseTree, this.ranges[0].from, 0, null), IterMode.IncludeAnonymous | IterMode.IgnoreMounts);\n        scan: for (let nest, isCovered;;) {\n            let enter = true, range;\n            if (this.stoppedAt != null && cursor.from >= this.stoppedAt) {\n                enter = false;\n            }\n            else if (fragmentCursor.hasNode(cursor)) {\n                if (overlay) {\n                    let match = overlay.mounts.find(m => m.frag.from <= cursor.from && m.frag.to >= cursor.to && m.mount.overlay);\n                    if (match)\n                        for (let r of match.mount.overlay) {\n                            let from = r.from + match.pos, to = r.to + match.pos;\n                            if (from >= cursor.from && to <= cursor.to && !overlay.ranges.some(r => r.from < to && r.to > from))\n                                overlay.ranges.push({ from, to });\n                        }\n                }\n                enter = false;\n            }\n            else if (covered && (isCovered = checkCover(covered.ranges, cursor.from, cursor.to))) {\n                enter = isCovered != 2 /* Cover.Full */;\n            }\n            else if (!cursor.type.isAnonymous && (nest = this.nest(cursor, this.input)) &&\n                (cursor.from < cursor.to || !nest.overlay)) {\n                if (!cursor.tree)\n                    materialize(cursor);\n                let oldMounts = fragmentCursor.findMounts(cursor.from, nest.parser);\n                if (typeof nest.overlay == \"function\") {\n                    overlay = new ActiveOverlay(nest.parser, nest.overlay, oldMounts, this.inner.length, cursor.from, cursor.tree, overlay);\n                }\n                else {\n                    let ranges = punchRanges(this.ranges, nest.overlay ||\n                        (cursor.from < cursor.to ? [new Range(cursor.from, cursor.to)] : []));\n                    if (ranges.length)\n                        checkRanges(ranges);\n                    if (ranges.length || !nest.overlay)\n                        this.inner.push(new InnerParse(nest.parser, ranges.length ? nest.parser.startParse(this.input, enterFragments(oldMounts, ranges), ranges)\n                            : nest.parser.startParse(\"\"), nest.overlay ? nest.overlay.map(r => new Range(r.from - cursor.from, r.to - cursor.from)) : null, cursor.tree, ranges.length ? ranges[0].from : cursor.from));\n                    if (!nest.overlay)\n                        enter = false;\n                    else if (ranges.length)\n                        covered = { ranges, depth: 0, prev: covered };\n                }\n            }\n            else if (overlay && (range = overlay.predicate(cursor))) {\n                if (range === true)\n                    range = new Range(cursor.from, cursor.to);\n                if (range.from < range.to) {\n                    let last = overlay.ranges.length - 1;\n                    if (last >= 0 && overlay.ranges[last].to == range.from)\n                        overlay.ranges[last] = { from: overlay.ranges[last].from, to: range.to };\n                    else\n                        overlay.ranges.push(range);\n                }\n            }\n            if (enter && cursor.firstChild()) {\n                if (overlay)\n                    overlay.depth++;\n                if (covered)\n                    covered.depth++;\n            }\n            else {\n                for (;;) {\n                    if (cursor.nextSibling())\n                        break;\n                    if (!cursor.parent())\n                        break scan;\n                    if (overlay && !--overlay.depth) {\n                        let ranges = punchRanges(this.ranges, overlay.ranges);\n                        if (ranges.length) {\n                            checkRanges(ranges);\n                            this.inner.splice(overlay.index, 0, new InnerParse(overlay.parser, overlay.parser.startParse(this.input, enterFragments(overlay.mounts, ranges), ranges), overlay.ranges.map(r => new Range(r.from - overlay.start, r.to - overlay.start)), overlay.target, ranges[0].from));\n                        }\n                        overlay = overlay.prev;\n                    }\n                    if (covered && !--covered.depth)\n                        covered = covered.prev;\n                }\n            }\n        }\n    }\n}\nfunction checkCover(covered, from, to) {\n    for (let range of covered) {\n        if (range.from >= to)\n            break;\n        if (range.to > from)\n            return range.from <= from && range.to >= to ? 2 /* Cover.Full */ : 1 /* Cover.Partial */;\n    }\n    return 0 /* Cover.None */;\n}\n// Take a piece of buffer and convert it into a stand-alone\n// TreeBuffer.\nfunction sliceBuf(buf, startI, endI, nodes, positions, off) {\n    if (startI < endI) {\n        let from = buf.buffer[startI + 1];\n        nodes.push(buf.slice(startI, endI, from));\n        positions.push(from - off);\n    }\n}\n// This function takes a node that's in a buffer, and converts it, and\n// its parent buffer nodes, into a Tree. This is again acting on the\n// assumption that the trees and buffers have been constructed by the\n// parse that was ran via the mix parser, and thus aren't shared with\n// any other code, making violations of the immutability safe.\nfunction materialize(cursor) {\n    let { node } = cursor, stack = [];\n    let buffer = node.context.buffer;\n    // Scan up to the nearest tree\n    do {\n        stack.push(cursor.index);\n        cursor.parent();\n    } while (!cursor.tree);\n    // Find the index of the buffer in that tree\n    let base = cursor.tree, i = base.children.indexOf(buffer);\n    let buf = base.children[i], b = buf.buffer, newStack = [i];\n    // Split a level in the buffer, putting the nodes before and after\n    // the child that contains `node` into new buffers.\n    function split(startI, endI, type, innerOffset, length, stackPos) {\n        let targetI = stack[stackPos];\n        let children = [], positions = [];\n        sliceBuf(buf, startI, targetI, children, positions, innerOffset);\n        let from = b[targetI + 1], to = b[targetI + 2];\n        newStack.push(children.length);\n        let child = stackPos\n            ? split(targetI + 4, b[targetI + 3], buf.set.types[b[targetI]], from, to - from, stackPos - 1)\n            : node.toTree();\n        children.push(child);\n        positions.push(from - innerOffset);\n        sliceBuf(buf, b[targetI + 3], endI, children, positions, innerOffset);\n        return new Tree(type, children, positions, length);\n    }\n    base.children[i] = split(0, b.length, NodeType.none, 0, buf.length, stack.length - 1);\n    // Move the cursor back to the target node\n    for (let index of newStack) {\n        let tree = cursor.tree.children[index], pos = cursor.tree.positions[index];\n        cursor.yield(new TreeNode(tree, pos + cursor.from, index, cursor._tree));\n    }\n}\nclass StructureCursor {\n    constructor(root, offset) {\n        this.offset = offset;\n        this.done = false;\n        this.cursor = root.cursor(IterMode.IncludeAnonymous | IterMode.IgnoreMounts);\n    }\n    // Move to the first node (in pre-order) that starts at or after `pos`.\n    moveTo(pos) {\n        let { cursor } = this, p = pos - this.offset;\n        while (!this.done && cursor.from < p) {\n            if (cursor.to >= pos && cursor.enter(p, 1, IterMode.IgnoreOverlays | IterMode.ExcludeBuffers)) ;\n            else if (!cursor.next(false))\n                this.done = true;\n        }\n    }\n    hasNode(cursor) {\n        this.moveTo(cursor.from);\n        if (!this.done && this.cursor.from + this.offset == cursor.from && this.cursor.tree) {\n            for (let tree = this.cursor.tree;;) {\n                if (tree == cursor.tree)\n                    return true;\n                if (tree.children.length && tree.positions[0] == 0 && tree.children[0] instanceof Tree)\n                    tree = tree.children[0];\n                else\n                    break;\n            }\n        }\n        return false;\n    }\n}\nclass FragmentCursor {\n    constructor(fragments) {\n        var _a;\n        this.fragments = fragments;\n        this.curTo = 0;\n        this.fragI = 0;\n        if (fragments.length) {\n            let first = this.curFrag = fragments[0];\n            this.curTo = (_a = first.tree.prop(stoppedInner)) !== null && _a !== void 0 ? _a : first.to;\n            this.inner = new StructureCursor(first.tree, -first.offset);\n        }\n        else {\n            this.curFrag = this.inner = null;\n        }\n    }\n    hasNode(node) {\n        while (this.curFrag && node.from >= this.curTo)\n            this.nextFrag();\n        return this.curFrag && this.curFrag.from <= node.from && this.curTo >= node.to && this.inner.hasNode(node);\n    }\n    nextFrag() {\n        var _a;\n        this.fragI++;\n        if (this.fragI == this.fragments.length) {\n            this.curFrag = this.inner = null;\n        }\n        else {\n            let frag = this.curFrag = this.fragments[this.fragI];\n            this.curTo = (_a = frag.tree.prop(stoppedInner)) !== null && _a !== void 0 ? _a : frag.to;\n            this.inner = new StructureCursor(frag.tree, -frag.offset);\n        }\n    }\n    findMounts(pos, parser) {\n        var _a;\n        let result = [];\n        if (this.inner) {\n            this.inner.cursor.moveTo(pos, 1);\n            for (let pos = this.inner.cursor.node; pos; pos = pos.parent) {\n                let mount = (_a = pos.tree) === null || _a === void 0 ? void 0 : _a.prop(NodeProp.mounted);\n                if (mount && mount.parser == parser) {\n                    for (let i = this.fragI; i < this.fragments.length; i++) {\n                        let frag = this.fragments[i];\n                        if (frag.from >= pos.to)\n                            break;\n                        if (frag.tree == this.curFrag.tree)\n                            result.push({\n                                frag,\n                                pos: pos.from - frag.offset,\n                                mount\n                            });\n                    }\n                }\n            }\n        }\n        return result;\n    }\n}\nfunction punchRanges(outer, ranges) {\n    let copy = null, current = ranges;\n    for (let i = 1, j = 0; i < outer.length; i++) {\n        let gapFrom = outer[i - 1].to, gapTo = outer[i].from;\n        for (; j < current.length; j++) {\n            let r = current[j];\n            if (r.from >= gapTo)\n                break;\n            if (r.to <= gapFrom)\n                continue;\n            if (!copy)\n                current = copy = ranges.slice();\n            if (r.from < gapFrom) {\n                copy[j] = new Range(r.from, gapFrom);\n                if (r.to > gapTo)\n                    copy.splice(j + 1, 0, new Range(gapTo, r.to));\n            }\n            else if (r.to > gapTo) {\n                copy[j--] = new Range(gapTo, r.to);\n            }\n            else {\n                copy.splice(j--, 1);\n            }\n        }\n    }\n    return current;\n}\nfunction findCoverChanges(a, b, from, to) {\n    let iA = 0, iB = 0, inA = false, inB = false, pos = -1e9;\n    let result = [];\n    for (;;) {\n        let nextA = iA == a.length ? 1e9 : inA ? a[iA].to : a[iA].from;\n        let nextB = iB == b.length ? 1e9 : inB ? b[iB].to : b[iB].from;\n        if (inA != inB) {\n            let start = Math.max(pos, from), end = Math.min(nextA, nextB, to);\n            if (start < end)\n                result.push(new Range(start, end));\n        }\n        pos = Math.min(nextA, nextB);\n        if (pos == 1e9)\n            break;\n        if (nextA == pos) {\n            if (!inA)\n                inA = true;\n            else {\n                inA = false;\n                iA++;\n            }\n        }\n        if (nextB == pos) {\n            if (!inB)\n                inB = true;\n            else {\n                inB = false;\n                iB++;\n            }\n        }\n    }\n    return result;\n}\n// Given a number of fragments for the outer tree, and a set of ranges\n// to parse, find fragments for inner trees mounted around those\n// ranges, if any.\nfunction enterFragments(mounts, ranges) {\n    let result = [];\n    for (let { pos, mount, frag } of mounts) {\n        let startPos = pos + (mount.overlay ? mount.overlay[0].from : 0), endPos = startPos + mount.tree.length;\n        let from = Math.max(frag.from, startPos), to = Math.min(frag.to, endPos);\n        if (mount.overlay) {\n            let overlay = mount.overlay.map(r => new Range(r.from + pos, r.to + pos));\n            let changes = findCoverChanges(ranges, overlay, from, to);\n            for (let i = 0, pos = from;; i++) {\n                let last = i == changes.length, end = last ? to : changes[i].from;\n                if (end > pos)\n                    result.push(new TreeFragment(pos, end, mount.tree, -startPos, frag.from >= pos || frag.openStart, frag.to <= end || frag.openEnd));\n                if (last)\n                    break;\n                pos = changes[i].to;\n            }\n        }\n        else {\n            result.push(new TreeFragment(from, to, mount.tree, -startPos, frag.from >= startPos || frag.openStart, frag.to <= endPos || frag.openEnd));\n        }\n    }\n    return result;\n}\n\nexport { DefaultBufferLength, IterMode, MountedTree, NodeProp, NodeSet, NodeType, NodeWeakMap, Parser, Tree, TreeBuffer, TreeCursor, TreeFragment, parseMixed };\n","import { Parser, NodeProp, NodeSet, NodeType, DefaultBufferLength, Tree, IterMode } from '@lezer/common';\n\n/**\nA parse stack. These are used internally by the parser to track\nparsing progress. They also provide some properties and methods\nthat external code such as a tokenizer can use to get information\nabout the parse state.\n*/\nclass Stack {\n    /**\n    @internal\n    */\n    constructor(\n    /**\n    The parse that this stack is part of @internal\n    */\n    p, \n    /**\n    Holds state, input pos, buffer index triplets for all but the\n    top state @internal\n    */\n    stack, \n    /**\n    The current parse state @internal\n    */\n    state, \n    // The position at which the next reduce should take place. This\n    // can be less than `this.pos` when skipped expressions have been\n    // added to the stack (which should be moved outside of the next\n    // reduction)\n    /**\n    @internal\n    */\n    reducePos, \n    /**\n    The input position up to which this stack has parsed.\n    */\n    pos, \n    /**\n    The dynamic score of the stack, including dynamic precedence\n    and error-recovery penalties\n    @internal\n    */\n    score, \n    // The output buffer. Holds (type, start, end, size) quads\n    // representing nodes created by the parser, where `size` is\n    // amount of buffer array entries covered by this node.\n    /**\n    @internal\n    */\n    buffer, \n    // The base offset of the buffer. When stacks are split, the split\n    // instance shared the buffer history with its parent up to\n    // `bufferBase`, which is the absolute offset (including the\n    // offset of previous splits) into the buffer at which this stack\n    // starts writing.\n    /**\n    @internal\n    */\n    bufferBase, \n    /**\n    @internal\n    */\n    curContext, \n    /**\n    @internal\n    */\n    lookAhead = 0, \n    // A parent stack from which this was split off, if any. This is\n    // set up so that it always points to a stack that has some\n    // additional buffer content, never to a stack with an equal\n    // `bufferBase`.\n    /**\n    @internal\n    */\n    parent) {\n        this.p = p;\n        this.stack = stack;\n        this.state = state;\n        this.reducePos = reducePos;\n        this.pos = pos;\n        this.score = score;\n        this.buffer = buffer;\n        this.bufferBase = bufferBase;\n        this.curContext = curContext;\n        this.lookAhead = lookAhead;\n        this.parent = parent;\n    }\n    /**\n    @internal\n    */\n    toString() {\n        return `[${this.stack.filter((_, i) => i % 3 == 0).concat(this.state)}]@${this.pos}${this.score ? \"!\" + this.score : \"\"}`;\n    }\n    // Start an empty stack\n    /**\n    @internal\n    */\n    static start(p, state, pos = 0) {\n        let cx = p.parser.context;\n        return new Stack(p, [], state, pos, pos, 0, [], 0, cx ? new StackContext(cx, cx.start) : null, 0, null);\n    }\n    /**\n    The stack's current [context](#lr.ContextTracker) value, if\n    any. Its type will depend on the context tracker's type\n    parameter, or it will be `null` if there is no context\n    tracker.\n    */\n    get context() { return this.curContext ? this.curContext.context : null; }\n    // Push a state onto the stack, tracking its start position as well\n    // as the buffer base at that point.\n    /**\n    @internal\n    */\n    pushState(state, start) {\n        this.stack.push(this.state, start, this.bufferBase + this.buffer.length);\n        this.state = state;\n    }\n    // Apply a reduce action\n    /**\n    @internal\n    */\n    reduce(action) {\n        var _a;\n        let depth = action >> 19 /* Action.ReduceDepthShift */, type = action & 65535 /* Action.ValueMask */;\n        let { parser } = this.p;\n        let lookaheadRecord = this.reducePos < this.pos - 25 /* Lookahead.Margin */;\n        if (lookaheadRecord)\n            this.setLookAhead(this.pos);\n        let dPrec = parser.dynamicPrecedence(type);\n        if (dPrec)\n            this.score += dPrec;\n        if (depth == 0) {\n            this.pushState(parser.getGoto(this.state, type, true), this.reducePos);\n            // Zero-depth reductions are a special case—they add stuff to\n            // the stack without popping anything off.\n            if (type < parser.minRepeatTerm)\n                this.storeNode(type, this.reducePos, this.reducePos, lookaheadRecord ? 8 : 4, true);\n            this.reduceContext(type, this.reducePos);\n            return;\n        }\n        // Find the base index into `this.stack`, content after which will\n        // be dropped. Note that with `StayFlag` reductions we need to\n        // consume two extra frames (the dummy parent node for the skipped\n        // expression and the state that we'll be staying in, which should\n        // be moved to `this.state`).\n        let base = this.stack.length - ((depth - 1) * 3) - (action & 262144 /* Action.StayFlag */ ? 6 : 0);\n        let start = base ? this.stack[base - 2] : this.p.ranges[0].from, size = this.reducePos - start;\n        // This is a kludge to try and detect overly deep left-associative\n        // trees, which will not increase the parse stack depth and thus\n        // won't be caught by the regular stack-depth limit check.\n        if (size >= 2000 /* Recover.MinBigReduction */ && !((_a = this.p.parser.nodeSet.types[type]) === null || _a === void 0 ? void 0 : _a.isAnonymous)) {\n            if (start == this.p.lastBigReductionStart) {\n                this.p.bigReductionCount++;\n                this.p.lastBigReductionSize = size;\n            }\n            else if (this.p.lastBigReductionSize < size) {\n                this.p.bigReductionCount = 1;\n                this.p.lastBigReductionStart = start;\n                this.p.lastBigReductionSize = size;\n            }\n        }\n        let bufferBase = base ? this.stack[base - 1] : 0, count = this.bufferBase + this.buffer.length - bufferBase;\n        // Store normal terms or `R -> R R` repeat reductions\n        if (type < parser.minRepeatTerm || (action & 131072 /* Action.RepeatFlag */)) {\n            let pos = parser.stateFlag(this.state, 1 /* StateFlag.Skipped */) ? this.pos : this.reducePos;\n            this.storeNode(type, start, pos, count + 4, true);\n        }\n        if (action & 262144 /* Action.StayFlag */) {\n            this.state = this.stack[base];\n        }\n        else {\n            let baseStateID = this.stack[base - 3];\n            this.state = parser.getGoto(baseStateID, type, true);\n        }\n        while (this.stack.length > base)\n            this.stack.pop();\n        this.reduceContext(type, start);\n    }\n    // Shift a value into the buffer\n    /**\n    @internal\n    */\n    storeNode(term, start, end, size = 4, mustSink = false) {\n        if (term == 0 /* Term.Err */ &&\n            (!this.stack.length || this.stack[this.stack.length - 1] < this.buffer.length + this.bufferBase)) {\n            // Try to omit/merge adjacent error nodes\n            let cur = this, top = this.buffer.length;\n            if (top == 0 && cur.parent) {\n                top = cur.bufferBase - cur.parent.bufferBase;\n                cur = cur.parent;\n            }\n            if (top > 0 && cur.buffer[top - 4] == 0 /* Term.Err */ && cur.buffer[top - 1] > -1) {\n                if (start == end)\n                    return;\n                if (cur.buffer[top - 2] >= start) {\n                    cur.buffer[top - 2] = end;\n                    return;\n                }\n            }\n        }\n        if (!mustSink || this.pos == end) { // Simple case, just append\n            this.buffer.push(term, start, end, size);\n        }\n        else { // There may be skipped nodes that have to be moved forward\n            let index = this.buffer.length;\n            if (index > 0 && this.buffer[index - 4] != 0 /* Term.Err */) {\n                let mustMove = false;\n                for (let scan = index; scan > 0 && this.buffer[scan - 2] > end; scan -= 4) {\n                    if (this.buffer[scan - 1] >= 0) {\n                        mustMove = true;\n                        break;\n                    }\n                }\n                if (mustMove)\n                    while (index > 0 && this.buffer[index - 2] > end) {\n                        // Move this record forward\n                        this.buffer[index] = this.buffer[index - 4];\n                        this.buffer[index + 1] = this.buffer[index - 3];\n                        this.buffer[index + 2] = this.buffer[index - 2];\n                        this.buffer[index + 3] = this.buffer[index - 1];\n                        index -= 4;\n                        if (size > 4)\n                            size -= 4;\n                    }\n            }\n            this.buffer[index] = term;\n            this.buffer[index + 1] = start;\n            this.buffer[index + 2] = end;\n            this.buffer[index + 3] = size;\n        }\n    }\n    // Apply a shift action\n    /**\n    @internal\n    */\n    shift(action, type, start, end) {\n        if (action & 131072 /* Action.GotoFlag */) {\n            this.pushState(action & 65535 /* Action.ValueMask */, this.pos);\n        }\n        else if ((action & 262144 /* Action.StayFlag */) == 0) { // Regular shift\n            let nextState = action, { parser } = this.p;\n            if (end > this.pos || type <= parser.maxNode) {\n                this.pos = end;\n                if (!parser.stateFlag(nextState, 1 /* StateFlag.Skipped */))\n                    this.reducePos = end;\n            }\n            this.pushState(nextState, start);\n            this.shiftContext(type, start);\n            if (type <= parser.maxNode)\n                this.buffer.push(type, start, end, 4);\n        }\n        else { // Shift-and-stay, which means this is a skipped token\n            this.pos = end;\n            this.shiftContext(type, start);\n            if (type <= this.p.parser.maxNode)\n                this.buffer.push(type, start, end, 4);\n        }\n    }\n    // Apply an action\n    /**\n    @internal\n    */\n    apply(action, next, nextStart, nextEnd) {\n        if (action & 65536 /* Action.ReduceFlag */)\n            this.reduce(action);\n        else\n            this.shift(action, next, nextStart, nextEnd);\n    }\n    // Add a prebuilt (reused) node into the buffer.\n    /**\n    @internal\n    */\n    useNode(value, next) {\n        let index = this.p.reused.length - 1;\n        if (index < 0 || this.p.reused[index] != value) {\n            this.p.reused.push(value);\n            index++;\n        }\n        let start = this.pos;\n        this.reducePos = this.pos = start + value.length;\n        this.pushState(next, start);\n        this.buffer.push(index, start, this.reducePos, -1 /* size == -1 means this is a reused value */);\n        if (this.curContext)\n            this.updateContext(this.curContext.tracker.reuse(this.curContext.context, value, this, this.p.stream.reset(this.pos - value.length)));\n    }\n    // Split the stack. Due to the buffer sharing and the fact\n    // that `this.stack` tends to stay quite shallow, this isn't very\n    // expensive.\n    /**\n    @internal\n    */\n    split() {\n        let parent = this;\n        let off = parent.buffer.length;\n        // Because the top of the buffer (after this.pos) may be mutated\n        // to reorder reductions and skipped tokens, and shared buffers\n        // should be immutable, this copies any outstanding skipped tokens\n        // to the new buffer, and puts the base pointer before them.\n        while (off > 0 && parent.buffer[off - 2] > parent.reducePos)\n            off -= 4;\n        let buffer = parent.buffer.slice(off), base = parent.bufferBase + off;\n        // Make sure parent points to an actual parent with content, if there is such a parent.\n        while (parent && base == parent.bufferBase)\n            parent = parent.parent;\n        return new Stack(this.p, this.stack.slice(), this.state, this.reducePos, this.pos, this.score, buffer, base, this.curContext, this.lookAhead, parent);\n    }\n    // Try to recover from an error by 'deleting' (ignoring) one token.\n    /**\n    @internal\n    */\n    recoverByDelete(next, nextEnd) {\n        let isNode = next <= this.p.parser.maxNode;\n        if (isNode)\n            this.storeNode(next, this.pos, nextEnd, 4);\n        this.storeNode(0 /* Term.Err */, this.pos, nextEnd, isNode ? 8 : 4);\n        this.pos = this.reducePos = nextEnd;\n        this.score -= 190 /* Recover.Delete */;\n    }\n    /**\n    Check if the given term would be able to be shifted (optionally\n    after some reductions) on this stack. This can be useful for\n    external tokenizers that want to make sure they only provide a\n    given token when it applies.\n    */\n    canShift(term) {\n        for (let sim = new SimulatedStack(this);;) {\n            let action = this.p.parser.stateSlot(sim.state, 4 /* ParseState.DefaultReduce */) || this.p.parser.hasAction(sim.state, term);\n            if (action == 0)\n                return false;\n            if ((action & 65536 /* Action.ReduceFlag */) == 0)\n                return true;\n            sim.reduce(action);\n        }\n    }\n    // Apply up to Recover.MaxNext recovery actions that conceptually\n    // inserts some missing token or rule.\n    /**\n    @internal\n    */\n    recoverByInsert(next) {\n        if (this.stack.length >= 300 /* Recover.MaxInsertStackDepth */)\n            return [];\n        let nextStates = this.p.parser.nextStates(this.state);\n        if (nextStates.length > 4 /* Recover.MaxNext */ << 1 || this.stack.length >= 120 /* Recover.DampenInsertStackDepth */) {\n            let best = [];\n            for (let i = 0, s; i < nextStates.length; i += 2) {\n                if ((s = nextStates[i + 1]) != this.state && this.p.parser.hasAction(s, next))\n                    best.push(nextStates[i], s);\n            }\n            if (this.stack.length < 120 /* Recover.DampenInsertStackDepth */)\n                for (let i = 0; best.length < 4 /* Recover.MaxNext */ << 1 && i < nextStates.length; i += 2) {\n                    let s = nextStates[i + 1];\n                    if (!best.some((v, i) => (i & 1) && v == s))\n                        best.push(nextStates[i], s);\n                }\n            nextStates = best;\n        }\n        let result = [];\n        for (let i = 0; i < nextStates.length && result.length < 4 /* Recover.MaxNext */; i += 2) {\n            let s = nextStates[i + 1];\n            if (s == this.state)\n                continue;\n            let stack = this.split();\n            stack.pushState(s, this.pos);\n            stack.storeNode(0 /* Term.Err */, stack.pos, stack.pos, 4, true);\n            stack.shiftContext(nextStates[i], this.pos);\n            stack.reducePos = this.pos;\n            stack.score -= 200 /* Recover.Insert */;\n            result.push(stack);\n        }\n        return result;\n    }\n    // Force a reduce, if possible. Return false if that can't\n    // be done.\n    /**\n    @internal\n    */\n    forceReduce() {\n        let { parser } = this.p;\n        let reduce = parser.stateSlot(this.state, 5 /* ParseState.ForcedReduce */);\n        if ((reduce & 65536 /* Action.ReduceFlag */) == 0)\n            return false;\n        if (!parser.validAction(this.state, reduce)) {\n            let depth = reduce >> 19 /* Action.ReduceDepthShift */, term = reduce & 65535 /* Action.ValueMask */;\n            let target = this.stack.length - depth * 3;\n            if (target < 0 || parser.getGoto(this.stack[target], term, false) < 0) {\n                let backup = this.findForcedReduction();\n                if (backup == null)\n                    return false;\n                reduce = backup;\n            }\n            this.storeNode(0 /* Term.Err */, this.pos, this.pos, 4, true);\n            this.score -= 100 /* Recover.Reduce */;\n        }\n        this.reducePos = this.pos;\n        this.reduce(reduce);\n        return true;\n    }\n    /**\n    Try to scan through the automaton to find some kind of reduction\n    that can be applied. Used when the regular ForcedReduce field\n    isn't a valid action. @internal\n    */\n    findForcedReduction() {\n        let { parser } = this.p, seen = [];\n        let explore = (state, depth) => {\n            if (seen.includes(state))\n                return;\n            seen.push(state);\n            return parser.allActions(state, (action) => {\n                if (action & (262144 /* Action.StayFlag */ | 131072 /* Action.GotoFlag */)) ;\n                else if (action & 65536 /* Action.ReduceFlag */) {\n                    let rDepth = (action >> 19 /* Action.ReduceDepthShift */) - depth;\n                    if (rDepth > 1) {\n                        let term = action & 65535 /* Action.ValueMask */, target = this.stack.length - rDepth * 3;\n                        if (target >= 0 && parser.getGoto(this.stack[target], term, false) >= 0)\n                            return (rDepth << 19 /* Action.ReduceDepthShift */) | 65536 /* Action.ReduceFlag */ | term;\n                    }\n                }\n                else {\n                    let found = explore(action, depth + 1);\n                    if (found != null)\n                        return found;\n                }\n            });\n        };\n        return explore(this.state, 0);\n    }\n    /**\n    @internal\n    */\n    forceAll() {\n        while (!this.p.parser.stateFlag(this.state, 2 /* StateFlag.Accepting */)) {\n            if (!this.forceReduce()) {\n                this.storeNode(0 /* Term.Err */, this.pos, this.pos, 4, true);\n                break;\n            }\n        }\n        return this;\n    }\n    /**\n    Check whether this state has no further actions (assumed to be a direct descendant of the\n    top state, since any other states must be able to continue\n    somehow). @internal\n    */\n    get deadEnd() {\n        if (this.stack.length != 3)\n            return false;\n        let { parser } = this.p;\n        return parser.data[parser.stateSlot(this.state, 1 /* ParseState.Actions */)] == 65535 /* Seq.End */ &&\n            !parser.stateSlot(this.state, 4 /* ParseState.DefaultReduce */);\n    }\n    /**\n    Restart the stack (put it back in its start state). Only safe\n    when this.stack.length == 3 (state is directly below the top\n    state). @internal\n    */\n    restart() {\n        this.storeNode(0 /* Term.Err */, this.pos, this.pos, 4, true);\n        this.state = this.stack[0];\n        this.stack.length = 0;\n    }\n    /**\n    @internal\n    */\n    sameState(other) {\n        if (this.state != other.state || this.stack.length != other.stack.length)\n            return false;\n        for (let i = 0; i < this.stack.length; i += 3)\n            if (this.stack[i] != other.stack[i])\n                return false;\n        return true;\n    }\n    /**\n    Get the parser used by this stack.\n    */\n    get parser() { return this.p.parser; }\n    /**\n    Test whether a given dialect (by numeric ID, as exported from\n    the terms file) is enabled.\n    */\n    dialectEnabled(dialectID) { return this.p.parser.dialect.flags[dialectID]; }\n    shiftContext(term, start) {\n        if (this.curContext)\n            this.updateContext(this.curContext.tracker.shift(this.curContext.context, term, this, this.p.stream.reset(start)));\n    }\n    reduceContext(term, start) {\n        if (this.curContext)\n            this.updateContext(this.curContext.tracker.reduce(this.curContext.context, term, this, this.p.stream.reset(start)));\n    }\n    /**\n    @internal\n    */\n    emitContext() {\n        let last = this.buffer.length - 1;\n        if (last < 0 || this.buffer[last] != -3)\n            this.buffer.push(this.curContext.hash, this.pos, this.pos, -3);\n    }\n    /**\n    @internal\n    */\n    emitLookAhead() {\n        let last = this.buffer.length - 1;\n        if (last < 0 || this.buffer[last] != -4)\n            this.buffer.push(this.lookAhead, this.pos, this.pos, -4);\n    }\n    updateContext(context) {\n        if (context != this.curContext.context) {\n            let newCx = new StackContext(this.curContext.tracker, context);\n            if (newCx.hash != this.curContext.hash)\n                this.emitContext();\n            this.curContext = newCx;\n        }\n    }\n    /**\n    @internal\n    */\n    setLookAhead(lookAhead) {\n        if (lookAhead > this.lookAhead) {\n            this.emitLookAhead();\n            this.lookAhead = lookAhead;\n        }\n    }\n    /**\n    @internal\n    */\n    close() {\n        if (this.curContext && this.curContext.tracker.strict)\n            this.emitContext();\n        if (this.lookAhead > 0)\n            this.emitLookAhead();\n    }\n}\nclass StackContext {\n    constructor(tracker, context) {\n        this.tracker = tracker;\n        this.context = context;\n        this.hash = tracker.strict ? tracker.hash(context) : 0;\n    }\n}\n// Used to cheaply run some reductions to scan ahead without mutating\n// an entire stack\nclass SimulatedStack {\n    constructor(start) {\n        this.start = start;\n        this.state = start.state;\n        this.stack = start.stack;\n        this.base = this.stack.length;\n    }\n    reduce(action) {\n        let term = action & 65535 /* Action.ValueMask */, depth = action >> 19 /* Action.ReduceDepthShift */;\n        if (depth == 0) {\n            if (this.stack == this.start.stack)\n                this.stack = this.stack.slice();\n            this.stack.push(this.state, 0, 0);\n            this.base += 3;\n        }\n        else {\n            this.base -= (depth - 1) * 3;\n        }\n        let goto = this.start.p.parser.getGoto(this.stack[this.base - 3], term, true);\n        this.state = goto;\n    }\n}\n// This is given to `Tree.build` to build a buffer, and encapsulates\n// the parent-stack-walking necessary to read the nodes.\nclass StackBufferCursor {\n    constructor(stack, pos, index) {\n        this.stack = stack;\n        this.pos = pos;\n        this.index = index;\n        this.buffer = stack.buffer;\n        if (this.index == 0)\n            this.maybeNext();\n    }\n    static create(stack, pos = stack.bufferBase + stack.buffer.length) {\n        return new StackBufferCursor(stack, pos, pos - stack.bufferBase);\n    }\n    maybeNext() {\n        let next = this.stack.parent;\n        if (next != null) {\n            this.index = this.stack.bufferBase - next.bufferBase;\n            this.stack = next;\n            this.buffer = next.buffer;\n        }\n    }\n    get id() { return this.buffer[this.index - 4]; }\n    get start() { return this.buffer[this.index - 3]; }\n    get end() { return this.buffer[this.index - 2]; }\n    get size() { return this.buffer[this.index - 1]; }\n    next() {\n        this.index -= 4;\n        this.pos -= 4;\n        if (this.index == 0)\n            this.maybeNext();\n    }\n    fork() {\n        return new StackBufferCursor(this.stack, this.pos, this.index);\n    }\n}\n\n// See lezer-generator/src/encode.ts for comments about the encoding\n// used here\nfunction decodeArray(input, Type = Uint16Array) {\n    if (typeof input != \"string\")\n        return input;\n    let array = null;\n    for (let pos = 0, out = 0; pos < input.length;) {\n        let value = 0;\n        for (;;) {\n            let next = input.charCodeAt(pos++), stop = false;\n            if (next == 126 /* Encode.BigValCode */) {\n                value = 65535 /* Encode.BigVal */;\n                break;\n            }\n            if (next >= 92 /* Encode.Gap2 */)\n                next--;\n            if (next >= 34 /* Encode.Gap1 */)\n                next--;\n            let digit = next - 32 /* Encode.Start */;\n            if (digit >= 46 /* Encode.Base */) {\n                digit -= 46 /* Encode.Base */;\n                stop = true;\n            }\n            value += digit;\n            if (stop)\n                break;\n            value *= 46 /* Encode.Base */;\n        }\n        if (array)\n            array[out++] = value;\n        else\n            array = new Type(value);\n    }\n    return array;\n}\n\nclass CachedToken {\n    constructor() {\n        this.start = -1;\n        this.value = -1;\n        this.end = -1;\n        this.extended = -1;\n        this.lookAhead = 0;\n        this.mask = 0;\n        this.context = 0;\n    }\n}\nconst nullToken = new CachedToken;\n/**\n[Tokenizers](#lr.ExternalTokenizer) interact with the input\nthrough this interface. It presents the input as a stream of\ncharacters, tracking lookahead and hiding the complexity of\n[ranges](#common.Parser.parse^ranges) from tokenizer code.\n*/\nclass InputStream {\n    /**\n    @internal\n    */\n    constructor(\n    /**\n    @internal\n    */\n    input, \n    /**\n    @internal\n    */\n    ranges) {\n        this.input = input;\n        this.ranges = ranges;\n        /**\n        @internal\n        */\n        this.chunk = \"\";\n        /**\n        @internal\n        */\n        this.chunkOff = 0;\n        /**\n        Backup chunk\n        */\n        this.chunk2 = \"\";\n        this.chunk2Pos = 0;\n        /**\n        The character code of the next code unit in the input, or -1\n        when the stream is at the end of the input.\n        */\n        this.next = -1;\n        /**\n        @internal\n        */\n        this.token = nullToken;\n        this.rangeIndex = 0;\n        this.pos = this.chunkPos = ranges[0].from;\n        this.range = ranges[0];\n        this.end = ranges[ranges.length - 1].to;\n        this.readNext();\n    }\n    /**\n    @internal\n    */\n    resolveOffset(offset, assoc) {\n        let range = this.range, index = this.rangeIndex;\n        let pos = this.pos + offset;\n        while (pos < range.from) {\n            if (!index)\n                return null;\n            let next = this.ranges[--index];\n            pos -= range.from - next.to;\n            range = next;\n        }\n        while (assoc < 0 ? pos > range.to : pos >= range.to) {\n            if (index == this.ranges.length - 1)\n                return null;\n            let next = this.ranges[++index];\n            pos += next.from - range.to;\n            range = next;\n        }\n        return pos;\n    }\n    /**\n    @internal\n    */\n    clipPos(pos) {\n        if (pos >= this.range.from && pos < this.range.to)\n            return pos;\n        for (let range of this.ranges)\n            if (range.to > pos)\n                return Math.max(pos, range.from);\n        return this.end;\n    }\n    /**\n    Look at a code unit near the stream position. `.peek(0)` equals\n    `.next`, `.peek(-1)` gives you the previous character, and so\n    on.\n    \n    Note that looking around during tokenizing creates dependencies\n    on potentially far-away content, which may reduce the\n    effectiveness incremental parsing—when looking forward—or even\n    cause invalid reparses when looking backward more than 25 code\n    units, since the library does not track lookbehind.\n    */\n    peek(offset) {\n        let idx = this.chunkOff + offset, pos, result;\n        if (idx >= 0 && idx < this.chunk.length) {\n            pos = this.pos + offset;\n            result = this.chunk.charCodeAt(idx);\n        }\n        else {\n            let resolved = this.resolveOffset(offset, 1);\n            if (resolved == null)\n                return -1;\n            pos = resolved;\n            if (pos >= this.chunk2Pos && pos < this.chunk2Pos + this.chunk2.length) {\n                result = this.chunk2.charCodeAt(pos - this.chunk2Pos);\n            }\n            else {\n                let i = this.rangeIndex, range = this.range;\n                while (range.to <= pos)\n                    range = this.ranges[++i];\n                this.chunk2 = this.input.chunk(this.chunk2Pos = pos);\n                if (pos + this.chunk2.length > range.to)\n                    this.chunk2 = this.chunk2.slice(0, range.to - pos);\n                result = this.chunk2.charCodeAt(0);\n            }\n        }\n        if (pos >= this.token.lookAhead)\n            this.token.lookAhead = pos + 1;\n        return result;\n    }\n    /**\n    Accept a token. By default, the end of the token is set to the\n    current stream position, but you can pass an offset (relative to\n    the stream position) to change that.\n    */\n    acceptToken(token, endOffset = 0) {\n        let end = endOffset ? this.resolveOffset(endOffset, -1) : this.pos;\n        if (end == null || end < this.token.start)\n            throw new RangeError(\"Token end out of bounds\");\n        this.token.value = token;\n        this.token.end = end;\n    }\n    /**\n    Accept a token ending at a specific given position.\n    */\n    acceptTokenTo(token, endPos) {\n        this.token.value = token;\n        this.token.end = endPos;\n    }\n    getChunk() {\n        if (this.pos >= this.chunk2Pos && this.pos < this.chunk2Pos + this.chunk2.length) {\n            let { chunk, chunkPos } = this;\n            this.chunk = this.chunk2;\n            this.chunkPos = this.chunk2Pos;\n            this.chunk2 = chunk;\n            this.chunk2Pos = chunkPos;\n            this.chunkOff = this.pos - this.chunkPos;\n        }\n        else {\n            this.chunk2 = this.chunk;\n            this.chunk2Pos = this.chunkPos;\n            let nextChunk = this.input.chunk(this.pos);\n            let end = this.pos + nextChunk.length;\n            this.chunk = end > this.range.to ? nextChunk.slice(0, this.range.to - this.pos) : nextChunk;\n            this.chunkPos = this.pos;\n            this.chunkOff = 0;\n        }\n    }\n    readNext() {\n        if (this.chunkOff >= this.chunk.length) {\n            this.getChunk();\n            if (this.chunkOff == this.chunk.length)\n                return this.next = -1;\n        }\n        return this.next = this.chunk.charCodeAt(this.chunkOff);\n    }\n    /**\n    Move the stream forward N (defaults to 1) code units. Returns\n    the new value of [`next`](#lr.InputStream.next).\n    */\n    advance(n = 1) {\n        this.chunkOff += n;\n        while (this.pos + n >= this.range.to) {\n            if (this.rangeIndex == this.ranges.length - 1)\n                return this.setDone();\n            n -= this.range.to - this.pos;\n            this.range = this.ranges[++this.rangeIndex];\n            this.pos = this.range.from;\n        }\n        this.pos += n;\n        if (this.pos >= this.token.lookAhead)\n            this.token.lookAhead = this.pos + 1;\n        return this.readNext();\n    }\n    setDone() {\n        this.pos = this.chunkPos = this.end;\n        this.range = this.ranges[this.rangeIndex = this.ranges.length - 1];\n        this.chunk = \"\";\n        return this.next = -1;\n    }\n    /**\n    @internal\n    */\n    reset(pos, token) {\n        if (token) {\n            this.token = token;\n            token.start = pos;\n            token.lookAhead = pos + 1;\n            token.value = token.extended = -1;\n        }\n        else {\n            this.token = nullToken;\n        }\n        if (this.pos != pos) {\n            this.pos = pos;\n            if (pos == this.end) {\n                this.setDone();\n                return this;\n            }\n            while (pos < this.range.from)\n                this.range = this.ranges[--this.rangeIndex];\n            while (pos >= this.range.to)\n                this.range = this.ranges[++this.rangeIndex];\n            if (pos >= this.chunkPos && pos < this.chunkPos + this.chunk.length) {\n                this.chunkOff = pos - this.chunkPos;\n            }\n            else {\n                this.chunk = \"\";\n                this.chunkOff = 0;\n            }\n            this.readNext();\n        }\n        return this;\n    }\n    /**\n    @internal\n    */\n    read(from, to) {\n        if (from >= this.chunkPos && to <= this.chunkPos + this.chunk.length)\n            return this.chunk.slice(from - this.chunkPos, to - this.chunkPos);\n        if (from >= this.chunk2Pos && to <= this.chunk2Pos + this.chunk2.length)\n            return this.chunk2.slice(from - this.chunk2Pos, to - this.chunk2Pos);\n        if (from >= this.range.from && to <= this.range.to)\n            return this.input.read(from, to);\n        let result = \"\";\n        for (let r of this.ranges) {\n            if (r.from >= to)\n                break;\n            if (r.to > from)\n                result += this.input.read(Math.max(r.from, from), Math.min(r.to, to));\n        }\n        return result;\n    }\n}\n/**\n@internal\n*/\nclass TokenGroup {\n    constructor(data, id) {\n        this.data = data;\n        this.id = id;\n    }\n    token(input, stack) {\n        let { parser } = stack.p;\n        readToken(this.data, input, stack, this.id, parser.data, parser.tokenPrecTable);\n    }\n}\nTokenGroup.prototype.contextual = TokenGroup.prototype.fallback = TokenGroup.prototype.extend = false;\n/**\n@hide\n*/\nclass LocalTokenGroup {\n    constructor(data, precTable, elseToken) {\n        this.precTable = precTable;\n        this.elseToken = elseToken;\n        this.data = typeof data == \"string\" ? decodeArray(data) : data;\n    }\n    token(input, stack) {\n        let start = input.pos, skipped = 0;\n        for (;;) {\n            let atEof = input.next < 0, nextPos = input.resolveOffset(1, 1);\n            readToken(this.data, input, stack, 0, this.data, this.precTable);\n            if (input.token.value > -1)\n                break;\n            if (this.elseToken == null)\n                return;\n            if (!atEof)\n                skipped++;\n            if (nextPos == null)\n                break;\n            input.reset(nextPos, input.token);\n        }\n        if (skipped) {\n            input.reset(start, input.token);\n            input.acceptToken(this.elseToken, skipped);\n        }\n    }\n}\nLocalTokenGroup.prototype.contextual = TokenGroup.prototype.fallback = TokenGroup.prototype.extend = false;\n/**\n`@external tokens` declarations in the grammar should resolve to\nan instance of this class.\n*/\nclass ExternalTokenizer {\n    /**\n    Create a tokenizer. The first argument is the function that,\n    given an input stream, scans for the types of tokens it\n    recognizes at the stream's position, and calls\n    [`acceptToken`](#lr.InputStream.acceptToken) when it finds\n    one.\n    */\n    constructor(\n    /**\n    @internal\n    */\n    token, options = {}) {\n        this.token = token;\n        this.contextual = !!options.contextual;\n        this.fallback = !!options.fallback;\n        this.extend = !!options.extend;\n    }\n}\n// Tokenizer data is stored a big uint16 array containing, for each\n// state:\n//\n//  - A group bitmask, indicating what token groups are reachable from\n//    this state, so that paths that can only lead to tokens not in\n//    any of the current groups can be cut off early.\n//\n//  - The position of the end of the state's sequence of accepting\n//    tokens\n//\n//  - The number of outgoing edges for the state\n//\n//  - The accepting tokens, as (token id, group mask) pairs\n//\n//  - The outgoing edges, as (start character, end character, state\n//    index) triples, with end character being exclusive\n//\n// This function interprets that data, running through a stream as\n// long as new states with the a matching group mask can be reached,\n// and updating `input.token` when it matches a token.\nfunction readToken(data, input, stack, group, precTable, precOffset) {\n    let state = 0, groupMask = 1 << group, { dialect } = stack.p.parser;\n    scan: for (;;) {\n        if ((groupMask & data[state]) == 0)\n            break;\n        let accEnd = data[state + 1];\n        // Check whether this state can lead to a token in the current group\n        // Accept tokens in this state, possibly overwriting\n        // lower-precedence / shorter tokens\n        for (let i = state + 3; i < accEnd; i += 2)\n            if ((data[i + 1] & groupMask) > 0) {\n                let term = data[i];\n                if (dialect.allows(term) &&\n                    (input.token.value == -1 || input.token.value == term ||\n                        overrides(term, input.token.value, precTable, precOffset))) {\n                    input.acceptToken(term);\n                    break;\n                }\n            }\n        let next = input.next, low = 0, high = data[state + 2];\n        // Special case for EOF\n        if (input.next < 0 && high > low && data[accEnd + high * 3 - 3] == 65535 /* Seq.End */) {\n            state = data[accEnd + high * 3 - 1];\n            continue scan;\n        }\n        // Do a binary search on the state's edges\n        for (; low < high;) {\n            let mid = (low + high) >> 1;\n            let index = accEnd + mid + (mid << 1);\n            let from = data[index], to = data[index + 1] || 0x10000;\n            if (next < from)\n                high = mid;\n            else if (next >= to)\n                low = mid + 1;\n            else {\n                state = data[index + 2];\n                input.advance();\n                continue scan;\n            }\n        }\n        break;\n    }\n}\nfunction findOffset(data, start, term) {\n    for (let i = start, next; (next = data[i]) != 65535 /* Seq.End */; i++)\n        if (next == term)\n            return i - start;\n    return -1;\n}\nfunction overrides(token, prev, tableData, tableOffset) {\n    let iPrev = findOffset(tableData, tableOffset, prev);\n    return iPrev < 0 || findOffset(tableData, tableOffset, token) < iPrev;\n}\n\n// Environment variable used to control console output\nconst verbose = typeof process != \"undefined\" && process.env && /\\bparse\\b/.test(process.env.LOG);\nlet stackIDs = null;\nfunction cutAt(tree, pos, side) {\n    let cursor = tree.cursor(IterMode.IncludeAnonymous);\n    cursor.moveTo(pos);\n    for (;;) {\n        if (!(side < 0 ? cursor.childBefore(pos) : cursor.childAfter(pos)))\n            for (;;) {\n                if ((side < 0 ? cursor.to < pos : cursor.from > pos) && !cursor.type.isError)\n                    return side < 0 ? Math.max(0, Math.min(cursor.to - 1, pos - 25 /* Lookahead.Margin */))\n                        : Math.min(tree.length, Math.max(cursor.from + 1, pos + 25 /* Lookahead.Margin */));\n                if (side < 0 ? cursor.prevSibling() : cursor.nextSibling())\n                    break;\n                if (!cursor.parent())\n                    return side < 0 ? 0 : tree.length;\n            }\n    }\n}\nclass FragmentCursor {\n    constructor(fragments, nodeSet) {\n        this.fragments = fragments;\n        this.nodeSet = nodeSet;\n        this.i = 0;\n        this.fragment = null;\n        this.safeFrom = -1;\n        this.safeTo = -1;\n        this.trees = [];\n        this.start = [];\n        this.index = [];\n        this.nextFragment();\n    }\n    nextFragment() {\n        let fr = this.fragment = this.i == this.fragments.length ? null : this.fragments[this.i++];\n        if (fr) {\n            this.safeFrom = fr.openStart ? cutAt(fr.tree, fr.from + fr.offset, 1) - fr.offset : fr.from;\n            this.safeTo = fr.openEnd ? cutAt(fr.tree, fr.to + fr.offset, -1) - fr.offset : fr.to;\n            while (this.trees.length) {\n                this.trees.pop();\n                this.start.pop();\n                this.index.pop();\n            }\n            this.trees.push(fr.tree);\n            this.start.push(-fr.offset);\n            this.index.push(0);\n            this.nextStart = this.safeFrom;\n        }\n        else {\n            this.nextStart = 1e9;\n        }\n    }\n    // `pos` must be >= any previously given `pos` for this cursor\n    nodeAt(pos) {\n        if (pos < this.nextStart)\n            return null;\n        while (this.fragment && this.safeTo <= pos)\n            this.nextFragment();\n        if (!this.fragment)\n            return null;\n        for (;;) {\n            let last = this.trees.length - 1;\n            if (last < 0) { // End of tree\n                this.nextFragment();\n                return null;\n            }\n            let top = this.trees[last], index = this.index[last];\n            if (index == top.children.length) {\n                this.trees.pop();\n                this.start.pop();\n                this.index.pop();\n                continue;\n            }\n            let next = top.children[index];\n            let start = this.start[last] + top.positions[index];\n            if (start > pos) {\n                this.nextStart = start;\n                return null;\n            }\n            if (next instanceof Tree) {\n                if (start == pos) {\n                    if (start < this.safeFrom)\n                        return null;\n                    let end = start + next.length;\n                    if (end <= this.safeTo) {\n                        let lookAhead = next.prop(NodeProp.lookAhead);\n                        if (!lookAhead || end + lookAhead < this.fragment.to)\n                            return next;\n                    }\n                }\n                this.index[last]++;\n                if (start + next.length >= Math.max(this.safeFrom, pos)) { // Enter this node\n                    this.trees.push(next);\n                    this.start.push(start);\n                    this.index.push(0);\n                }\n            }\n            else {\n                this.index[last]++;\n                this.nextStart = start + next.length;\n            }\n        }\n    }\n}\nclass TokenCache {\n    constructor(parser, stream) {\n        this.stream = stream;\n        this.tokens = [];\n        this.mainToken = null;\n        this.actions = [];\n        this.tokens = parser.tokenizers.map(_ => new CachedToken);\n    }\n    getActions(stack) {\n        let actionIndex = 0;\n        let main = null;\n        let { parser } = stack.p, { tokenizers } = parser;\n        let mask = parser.stateSlot(stack.state, 3 /* ParseState.TokenizerMask */);\n        let context = stack.curContext ? stack.curContext.hash : 0;\n        let lookAhead = 0;\n        for (let i = 0; i < tokenizers.length; i++) {\n            if (((1 << i) & mask) == 0)\n                continue;\n            let tokenizer = tokenizers[i], token = this.tokens[i];\n            if (main && !tokenizer.fallback)\n                continue;\n            if (tokenizer.contextual || token.start != stack.pos || token.mask != mask || token.context != context) {\n                this.updateCachedToken(token, tokenizer, stack);\n                token.mask = mask;\n                token.context = context;\n            }\n            if (token.lookAhead > token.end + 25 /* Lookahead.Margin */)\n                lookAhead = Math.max(token.lookAhead, lookAhead);\n            if (token.value != 0 /* Term.Err */) {\n                let startIndex = actionIndex;\n                if (token.extended > -1)\n                    actionIndex = this.addActions(stack, token.extended, token.end, actionIndex);\n                actionIndex = this.addActions(stack, token.value, token.end, actionIndex);\n                if (!tokenizer.extend) {\n                    main = token;\n                    if (actionIndex > startIndex)\n                        break;\n                }\n            }\n        }\n        while (this.actions.length > actionIndex)\n            this.actions.pop();\n        if (lookAhead)\n            stack.setLookAhead(lookAhead);\n        if (!main && stack.pos == this.stream.end) {\n            main = new CachedToken;\n            main.value = stack.p.parser.eofTerm;\n            main.start = main.end = stack.pos;\n            actionIndex = this.addActions(stack, main.value, main.end, actionIndex);\n        }\n        this.mainToken = main;\n        return this.actions;\n    }\n    getMainToken(stack) {\n        if (this.mainToken)\n            return this.mainToken;\n        let main = new CachedToken, { pos, p } = stack;\n        main.start = pos;\n        main.end = Math.min(pos + 1, p.stream.end);\n        main.value = pos == p.stream.end ? p.parser.eofTerm : 0 /* Term.Err */;\n        return main;\n    }\n    updateCachedToken(token, tokenizer, stack) {\n        let start = this.stream.clipPos(stack.pos);\n        tokenizer.token(this.stream.reset(start, token), stack);\n        if (token.value > -1) {\n            let { parser } = stack.p;\n            for (let i = 0; i < parser.specialized.length; i++)\n                if (parser.specialized[i] == token.value) {\n                    let result = parser.specializers[i](this.stream.read(token.start, token.end), stack);\n                    if (result >= 0 && stack.p.parser.dialect.allows(result >> 1)) {\n                        if ((result & 1) == 0 /* Specialize.Specialize */)\n                            token.value = result >> 1;\n                        else\n                            token.extended = result >> 1;\n                        break;\n                    }\n                }\n        }\n        else {\n            token.value = 0 /* Term.Err */;\n            token.end = this.stream.clipPos(start + 1);\n        }\n    }\n    putAction(action, token, end, index) {\n        // Don't add duplicate actions\n        for (let i = 0; i < index; i += 3)\n            if (this.actions[i] == action)\n                return index;\n        this.actions[index++] = action;\n        this.actions[index++] = token;\n        this.actions[index++] = end;\n        return index;\n    }\n    addActions(stack, token, end, index) {\n        let { state } = stack, { parser } = stack.p, { data } = parser;\n        for (let set = 0; set < 2; set++) {\n            for (let i = parser.stateSlot(state, set ? 2 /* ParseState.Skip */ : 1 /* ParseState.Actions */);; i += 3) {\n                if (data[i] == 65535 /* Seq.End */) {\n                    if (data[i + 1] == 1 /* Seq.Next */) {\n                        i = pair(data, i + 2);\n                    }\n                    else {\n                        if (index == 0 && data[i + 1] == 2 /* Seq.Other */)\n                            index = this.putAction(pair(data, i + 2), token, end, index);\n                        break;\n                    }\n                }\n                if (data[i] == token)\n                    index = this.putAction(pair(data, i + 1), token, end, index);\n            }\n        }\n        return index;\n    }\n}\nclass Parse {\n    constructor(parser, input, fragments, ranges) {\n        this.parser = parser;\n        this.input = input;\n        this.ranges = ranges;\n        this.recovering = 0;\n        this.nextStackID = 0x2654; // ♔, ♕, ♖, ♗, ♘, ♙, ♠, ♡, ♢, ♣, ♤, ♥, ♦, ♧\n        this.minStackPos = 0;\n        this.reused = [];\n        this.stoppedAt = null;\n        this.lastBigReductionStart = -1;\n        this.lastBigReductionSize = 0;\n        this.bigReductionCount = 0;\n        this.stream = new InputStream(input, ranges);\n        this.tokens = new TokenCache(parser, this.stream);\n        this.topTerm = parser.top[1];\n        let { from } = ranges[0];\n        this.stacks = [Stack.start(this, parser.top[0], from)];\n        this.fragments = fragments.length && this.stream.end - from > parser.bufferLength * 4\n            ? new FragmentCursor(fragments, parser.nodeSet) : null;\n    }\n    get parsedPos() {\n        return this.minStackPos;\n    }\n    // Move the parser forward. This will process all parse stacks at\n    // `this.pos` and try to advance them to a further position. If no\n    // stack for such a position is found, it'll start error-recovery.\n    //\n    // When the parse is finished, this will return a syntax tree. When\n    // not, it returns `null`.\n    advance() {\n        let stacks = this.stacks, pos = this.minStackPos;\n        // This will hold stacks beyond `pos`.\n        let newStacks = this.stacks = [];\n        let stopped, stoppedTokens;\n        // If a large amount of reductions happened with the same start\n        // position, force the stack out of that production in order to\n        // avoid creating a tree too deep to recurse through.\n        // (This is an ugly kludge, because unfortunately there is no\n        // straightforward, cheap way to check for this happening, due to\n        // the history of reductions only being available in an\n        // expensive-to-access format in the stack buffers.)\n        if (this.bigReductionCount > 300 /* Rec.MaxLeftAssociativeReductionCount */ && stacks.length == 1) {\n            let [s] = stacks;\n            while (s.forceReduce() && s.stack.length && s.stack[s.stack.length - 2] >= this.lastBigReductionStart) { }\n            this.bigReductionCount = this.lastBigReductionSize = 0;\n        }\n        // Keep advancing any stacks at `pos` until they either move\n        // forward or can't be advanced. Gather stacks that can't be\n        // advanced further in `stopped`.\n        for (let i = 0; i < stacks.length; i++) {\n            let stack = stacks[i];\n            for (;;) {\n                this.tokens.mainToken = null;\n                if (stack.pos > pos) {\n                    newStacks.push(stack);\n                }\n                else if (this.advanceStack(stack, newStacks, stacks)) {\n                    continue;\n                }\n                else {\n                    if (!stopped) {\n                        stopped = [];\n                        stoppedTokens = [];\n                    }\n                    stopped.push(stack);\n                    let tok = this.tokens.getMainToken(stack);\n                    stoppedTokens.push(tok.value, tok.end);\n                }\n                break;\n            }\n        }\n        if (!newStacks.length) {\n            let finished = stopped && findFinished(stopped);\n            if (finished) {\n                if (verbose)\n                    console.log(\"Finish with \" + this.stackID(finished));\n                return this.stackToTree(finished);\n            }\n            if (this.parser.strict) {\n                if (verbose && stopped)\n                    console.log(\"Stuck with token \" + (this.tokens.mainToken ? this.parser.getName(this.tokens.mainToken.value) : \"none\"));\n                throw new SyntaxError(\"No parse at \" + pos);\n            }\n            if (!this.recovering)\n                this.recovering = 5 /* Rec.Distance */;\n        }\n        if (this.recovering && stopped) {\n            let finished = this.stoppedAt != null && stopped[0].pos > this.stoppedAt ? stopped[0]\n                : this.runRecovery(stopped, stoppedTokens, newStacks);\n            if (finished) {\n                if (verbose)\n                    console.log(\"Force-finish \" + this.stackID(finished));\n                return this.stackToTree(finished.forceAll());\n            }\n        }\n        if (this.recovering) {\n            let maxRemaining = this.recovering == 1 ? 1 : this.recovering * 3 /* Rec.MaxRemainingPerStep */;\n            if (newStacks.length > maxRemaining) {\n                newStacks.sort((a, b) => b.score - a.score);\n                while (newStacks.length > maxRemaining)\n                    newStacks.pop();\n            }\n            if (newStacks.some(s => s.reducePos > pos))\n                this.recovering--;\n        }\n        else if (newStacks.length > 1) {\n            // Prune stacks that are in the same state, or that have been\n            // running without splitting for a while, to avoid getting stuck\n            // with multiple successful stacks running endlessly on.\n            outer: for (let i = 0; i < newStacks.length - 1; i++) {\n                let stack = newStacks[i];\n                for (let j = i + 1; j < newStacks.length; j++) {\n                    let other = newStacks[j];\n                    if (stack.sameState(other) ||\n                        stack.buffer.length > 500 /* Rec.MinBufferLengthPrune */ && other.buffer.length > 500 /* Rec.MinBufferLengthPrune */) {\n                        if (((stack.score - other.score) || (stack.buffer.length - other.buffer.length)) > 0) {\n                            newStacks.splice(j--, 1);\n                        }\n                        else {\n                            newStacks.splice(i--, 1);\n                            continue outer;\n                        }\n                    }\n                }\n            }\n            if (newStacks.length > 12 /* Rec.MaxStackCount */)\n                newStacks.splice(12 /* Rec.MaxStackCount */, newStacks.length - 12 /* Rec.MaxStackCount */);\n        }\n        this.minStackPos = newStacks[0].pos;\n        for (let i = 1; i < newStacks.length; i++)\n            if (newStacks[i].pos < this.minStackPos)\n                this.minStackPos = newStacks[i].pos;\n        return null;\n    }\n    stopAt(pos) {\n        if (this.stoppedAt != null && this.stoppedAt < pos)\n            throw new RangeError(\"Can't move stoppedAt forward\");\n        this.stoppedAt = pos;\n    }\n    // Returns an updated version of the given stack, or null if the\n    // stack can't advance normally. When `split` and `stacks` are\n    // given, stacks split off by ambiguous operations will be pushed to\n    // `split`, or added to `stacks` if they move `pos` forward.\n    advanceStack(stack, stacks, split) {\n        let start = stack.pos, { parser } = this;\n        let base = verbose ? this.stackID(stack) + \" -> \" : \"\";\n        if (this.stoppedAt != null && start > this.stoppedAt)\n            return stack.forceReduce() ? stack : null;\n        if (this.fragments) {\n            let strictCx = stack.curContext && stack.curContext.tracker.strict, cxHash = strictCx ? stack.curContext.hash : 0;\n            for (let cached = this.fragments.nodeAt(start); cached;) {\n                let match = this.parser.nodeSet.types[cached.type.id] == cached.type ? parser.getGoto(stack.state, cached.type.id) : -1;\n                if (match > -1 && cached.length && (!strictCx || (cached.prop(NodeProp.contextHash) || 0) == cxHash)) {\n                    stack.useNode(cached, match);\n                    if (verbose)\n                        console.log(base + this.stackID(stack) + ` (via reuse of ${parser.getName(cached.type.id)})`);\n                    return true;\n                }\n                if (!(cached instanceof Tree) || cached.children.length == 0 || cached.positions[0] > 0)\n                    break;\n                let inner = cached.children[0];\n                if (inner instanceof Tree && cached.positions[0] == 0)\n                    cached = inner;\n                else\n                    break;\n            }\n        }\n        let defaultReduce = parser.stateSlot(stack.state, 4 /* ParseState.DefaultReduce */);\n        if (defaultReduce > 0) {\n            stack.reduce(defaultReduce);\n            if (verbose)\n                console.log(base + this.stackID(stack) + ` (via always-reduce ${parser.getName(defaultReduce & 65535 /* Action.ValueMask */)})`);\n            return true;\n        }\n        if (stack.stack.length >= 8400 /* Rec.CutDepth */) {\n            while (stack.stack.length > 6000 /* Rec.CutTo */ && stack.forceReduce()) { }\n        }\n        let actions = this.tokens.getActions(stack);\n        for (let i = 0; i < actions.length;) {\n            let action = actions[i++], term = actions[i++], end = actions[i++];\n            let last = i == actions.length || !split;\n            let localStack = last ? stack : stack.split();\n            let main = this.tokens.mainToken;\n            localStack.apply(action, term, main ? main.start : localStack.pos, end);\n            if (verbose)\n                console.log(base + this.stackID(localStack) + ` (via ${(action & 65536 /* Action.ReduceFlag */) == 0 ? \"shift\"\n                    : `reduce of ${parser.getName(action & 65535 /* Action.ValueMask */)}`} for ${parser.getName(term)} @ ${start}${localStack == stack ? \"\" : \", split\"})`);\n            if (last)\n                return true;\n            else if (localStack.pos > start)\n                stacks.push(localStack);\n            else\n                split.push(localStack);\n        }\n        return false;\n    }\n    // Advance a given stack forward as far as it will go. Returns the\n    // (possibly updated) stack if it got stuck, or null if it moved\n    // forward and was given to `pushStackDedup`.\n    advanceFully(stack, newStacks) {\n        let pos = stack.pos;\n        for (;;) {\n            if (!this.advanceStack(stack, null, null))\n                return false;\n            if (stack.pos > pos) {\n                pushStackDedup(stack, newStacks);\n                return true;\n            }\n        }\n    }\n    runRecovery(stacks, tokens, newStacks) {\n        let finished = null, restarted = false;\n        for (let i = 0; i < stacks.length; i++) {\n            let stack = stacks[i], token = tokens[i << 1], tokenEnd = tokens[(i << 1) + 1];\n            let base = verbose ? this.stackID(stack) + \" -> \" : \"\";\n            if (stack.deadEnd) {\n                if (restarted)\n                    continue;\n                restarted = true;\n                stack.restart();\n                if (verbose)\n                    console.log(base + this.stackID(stack) + \" (restarted)\");\n                let done = this.advanceFully(stack, newStacks);\n                if (done)\n                    continue;\n            }\n            let force = stack.split(), forceBase = base;\n            for (let j = 0; force.forceReduce() && j < 10 /* Rec.ForceReduceLimit */; j++) {\n                if (verbose)\n                    console.log(forceBase + this.stackID(force) + \" (via force-reduce)\");\n                let done = this.advanceFully(force, newStacks);\n                if (done)\n                    break;\n                if (verbose)\n                    forceBase = this.stackID(force) + \" -> \";\n            }\n            for (let insert of stack.recoverByInsert(token)) {\n                if (verbose)\n                    console.log(base + this.stackID(insert) + \" (via recover-insert)\");\n                this.advanceFully(insert, newStacks);\n            }\n            if (this.stream.end > stack.pos) {\n                if (tokenEnd == stack.pos) {\n                    tokenEnd++;\n                    token = 0 /* Term.Err */;\n                }\n                stack.recoverByDelete(token, tokenEnd);\n                if (verbose)\n                    console.log(base + this.stackID(stack) + ` (via recover-delete ${this.parser.getName(token)})`);\n                pushStackDedup(stack, newStacks);\n            }\n            else if (!finished || finished.score < stack.score) {\n                finished = stack;\n            }\n        }\n        return finished;\n    }\n    // Convert the stack's buffer to a syntax tree.\n    stackToTree(stack) {\n        stack.close();\n        return Tree.build({ buffer: StackBufferCursor.create(stack),\n            nodeSet: this.parser.nodeSet,\n            topID: this.topTerm,\n            maxBufferLength: this.parser.bufferLength,\n            reused: this.reused,\n            start: this.ranges[0].from,\n            length: stack.pos - this.ranges[0].from,\n            minRepeatType: this.parser.minRepeatTerm });\n    }\n    stackID(stack) {\n        let id = (stackIDs || (stackIDs = new WeakMap)).get(stack);\n        if (!id)\n            stackIDs.set(stack, id = String.fromCodePoint(this.nextStackID++));\n        return id + stack;\n    }\n}\nfunction pushStackDedup(stack, newStacks) {\n    for (let i = 0; i < newStacks.length; i++) {\n        let other = newStacks[i];\n        if (other.pos == stack.pos && other.sameState(stack)) {\n            if (newStacks[i].score < stack.score)\n                newStacks[i] = stack;\n            return;\n        }\n    }\n    newStacks.push(stack);\n}\nclass Dialect {\n    constructor(source, flags, disabled) {\n        this.source = source;\n        this.flags = flags;\n        this.disabled = disabled;\n    }\n    allows(term) { return !this.disabled || this.disabled[term] == 0; }\n}\nconst id = x => x;\n/**\nContext trackers are used to track stateful context (such as\nindentation in the Python grammar, or parent elements in the XML\ngrammar) needed by external tokenizers. You declare them in a\ngrammar file as `@context exportName from \"module\"`.\n\nContext values should be immutable, and can be updated (replaced)\non shift or reduce actions.\n\nThe export used in a `@context` declaration should be of this\ntype.\n*/\nclass ContextTracker {\n    /**\n    Define a context tracker.\n    */\n    constructor(spec) {\n        this.start = spec.start;\n        this.shift = spec.shift || id;\n        this.reduce = spec.reduce || id;\n        this.reuse = spec.reuse || id;\n        this.hash = spec.hash || (() => 0);\n        this.strict = spec.strict !== false;\n    }\n}\n/**\nHolds the parse tables for a given grammar, as generated by\n`lezer-generator`, and provides [methods](#common.Parser) to parse\ncontent with.\n*/\nclass LRParser extends Parser {\n    /**\n    @internal\n    */\n    constructor(spec) {\n        super();\n        /**\n        @internal\n        */\n        this.wrappers = [];\n        if (spec.version != 14 /* File.Version */)\n            throw new RangeError(`Parser version (${spec.version}) doesn't match runtime version (${14 /* File.Version */})`);\n        let nodeNames = spec.nodeNames.split(\" \");\n        this.minRepeatTerm = nodeNames.length;\n        for (let i = 0; i < spec.repeatNodeCount; i++)\n            nodeNames.push(\"\");\n        let topTerms = Object.keys(spec.topRules).map(r => spec.topRules[r][1]);\n        let nodeProps = [];\n        for (let i = 0; i < nodeNames.length; i++)\n            nodeProps.push([]);\n        function setProp(nodeID, prop, value) {\n            nodeProps[nodeID].push([prop, prop.deserialize(String(value))]);\n        }\n        if (spec.nodeProps)\n            for (let propSpec of spec.nodeProps) {\n                let prop = propSpec[0];\n                if (typeof prop == \"string\")\n                    prop = NodeProp[prop];\n                for (let i = 1; i < propSpec.length;) {\n                    let next = propSpec[i++];\n                    if (next >= 0) {\n                        setProp(next, prop, propSpec[i++]);\n                    }\n                    else {\n                        let value = propSpec[i + -next];\n                        for (let j = -next; j > 0; j--)\n                            setProp(propSpec[i++], prop, value);\n                        i++;\n                    }\n                }\n            }\n        this.nodeSet = new NodeSet(nodeNames.map((name, i) => NodeType.define({\n            name: i >= this.minRepeatTerm ? undefined : name,\n            id: i,\n            props: nodeProps[i],\n            top: topTerms.indexOf(i) > -1,\n            error: i == 0,\n            skipped: spec.skippedNodes && spec.skippedNodes.indexOf(i) > -1\n        })));\n        if (spec.propSources)\n            this.nodeSet = this.nodeSet.extend(...spec.propSources);\n        this.strict = false;\n        this.bufferLength = DefaultBufferLength;\n        let tokenArray = decodeArray(spec.tokenData);\n        this.context = spec.context;\n        this.specializerSpecs = spec.specialized || [];\n        this.specialized = new Uint16Array(this.specializerSpecs.length);\n        for (let i = 0; i < this.specializerSpecs.length; i++)\n            this.specialized[i] = this.specializerSpecs[i].term;\n        this.specializers = this.specializerSpecs.map(getSpecializer);\n        this.states = decodeArray(spec.states, Uint32Array);\n        this.data = decodeArray(spec.stateData);\n        this.goto = decodeArray(spec.goto);\n        this.maxTerm = spec.maxTerm;\n        this.tokenizers = spec.tokenizers.map(value => typeof value == \"number\" ? new TokenGroup(tokenArray, value) : value);\n        this.topRules = spec.topRules;\n        this.dialects = spec.dialects || {};\n        this.dynamicPrecedences = spec.dynamicPrecedences || null;\n        this.tokenPrecTable = spec.tokenPrec;\n        this.termNames = spec.termNames || null;\n        this.maxNode = this.nodeSet.types.length - 1;\n        this.dialect = this.parseDialect();\n        this.top = this.topRules[Object.keys(this.topRules)[0]];\n    }\n    createParse(input, fragments, ranges) {\n        let parse = new Parse(this, input, fragments, ranges);\n        for (let w of this.wrappers)\n            parse = w(parse, input, fragments, ranges);\n        return parse;\n    }\n    /**\n    Get a goto table entry @internal\n    */\n    getGoto(state, term, loose = false) {\n        let table = this.goto;\n        if (term >= table[0])\n            return -1;\n        for (let pos = table[term + 1];;) {\n            let groupTag = table[pos++], last = groupTag & 1;\n            let target = table[pos++];\n            if (last && loose)\n                return target;\n            for (let end = pos + (groupTag >> 1); pos < end; pos++)\n                if (table[pos] == state)\n                    return target;\n            if (last)\n                return -1;\n        }\n    }\n    /**\n    Check if this state has an action for a given terminal @internal\n    */\n    hasAction(state, terminal) {\n        let data = this.data;\n        for (let set = 0; set < 2; set++) {\n            for (let i = this.stateSlot(state, set ? 2 /* ParseState.Skip */ : 1 /* ParseState.Actions */), next;; i += 3) {\n                if ((next = data[i]) == 65535 /* Seq.End */) {\n                    if (data[i + 1] == 1 /* Seq.Next */)\n                        next = data[i = pair(data, i + 2)];\n                    else if (data[i + 1] == 2 /* Seq.Other */)\n                        return pair(data, i + 2);\n                    else\n                        break;\n                }\n                if (next == terminal || next == 0 /* Term.Err */)\n                    return pair(data, i + 1);\n            }\n        }\n        return 0;\n    }\n    /**\n    @internal\n    */\n    stateSlot(state, slot) {\n        return this.states[(state * 6 /* ParseState.Size */) + slot];\n    }\n    /**\n    @internal\n    */\n    stateFlag(state, flag) {\n        return (this.stateSlot(state, 0 /* ParseState.Flags */) & flag) > 0;\n    }\n    /**\n    @internal\n    */\n    validAction(state, action) {\n        return !!this.allActions(state, a => a == action ? true : null);\n    }\n    /**\n    @internal\n    */\n    allActions(state, action) {\n        let deflt = this.stateSlot(state, 4 /* ParseState.DefaultReduce */);\n        let result = deflt ? action(deflt) : undefined;\n        for (let i = this.stateSlot(state, 1 /* ParseState.Actions */); result == null; i += 3) {\n            if (this.data[i] == 65535 /* Seq.End */) {\n                if (this.data[i + 1] == 1 /* Seq.Next */)\n                    i = pair(this.data, i + 2);\n                else\n                    break;\n            }\n            result = action(pair(this.data, i + 1));\n        }\n        return result;\n    }\n    /**\n    Get the states that can follow this one through shift actions or\n    goto jumps. @internal\n    */\n    nextStates(state) {\n        let result = [];\n        for (let i = this.stateSlot(state, 1 /* ParseState.Actions */);; i += 3) {\n            if (this.data[i] == 65535 /* Seq.End */) {\n                if (this.data[i + 1] == 1 /* Seq.Next */)\n                    i = pair(this.data, i + 2);\n                else\n                    break;\n            }\n            if ((this.data[i + 2] & (65536 /* Action.ReduceFlag */ >> 16)) == 0) {\n                let value = this.data[i + 1];\n                if (!result.some((v, i) => (i & 1) && v == value))\n                    result.push(this.data[i], value);\n            }\n        }\n        return result;\n    }\n    /**\n    Configure the parser. Returns a new parser instance that has the\n    given settings modified. Settings not provided in `config` are\n    kept from the original parser.\n    */\n    configure(config) {\n        // Hideous reflection-based kludge to make it easy to create a\n        // slightly modified copy of a parser.\n        let copy = Object.assign(Object.create(LRParser.prototype), this);\n        if (config.props)\n            copy.nodeSet = this.nodeSet.extend(...config.props);\n        if (config.top) {\n            let info = this.topRules[config.top];\n            if (!info)\n                throw new RangeError(`Invalid top rule name ${config.top}`);\n            copy.top = info;\n        }\n        if (config.tokenizers)\n            copy.tokenizers = this.tokenizers.map(t => {\n                let found = config.tokenizers.find(r => r.from == t);\n                return found ? found.to : t;\n            });\n        if (config.specializers) {\n            copy.specializers = this.specializers.slice();\n            copy.specializerSpecs = this.specializerSpecs.map((s, i) => {\n                let found = config.specializers.find(r => r.from == s.external);\n                if (!found)\n                    return s;\n                let spec = Object.assign(Object.assign({}, s), { external: found.to });\n                copy.specializers[i] = getSpecializer(spec);\n                return spec;\n            });\n        }\n        if (config.contextTracker)\n            copy.context = config.contextTracker;\n        if (config.dialect)\n            copy.dialect = this.parseDialect(config.dialect);\n        if (config.strict != null)\n            copy.strict = config.strict;\n        if (config.wrap)\n            copy.wrappers = copy.wrappers.concat(config.wrap);\n        if (config.bufferLength != null)\n            copy.bufferLength = config.bufferLength;\n        return copy;\n    }\n    /**\n    Tells you whether any [parse wrappers](#lr.ParserConfig.wrap)\n    are registered for this parser.\n    */\n    hasWrappers() {\n        return this.wrappers.length > 0;\n    }\n    /**\n    Returns the name associated with a given term. This will only\n    work for all terms when the parser was generated with the\n    `--names` option. By default, only the names of tagged terms are\n    stored.\n    */\n    getName(term) {\n        return this.termNames ? this.termNames[term] : String(term <= this.maxNode && this.nodeSet.types[term].name || term);\n    }\n    /**\n    The eof term id is always allocated directly after the node\n    types. @internal\n    */\n    get eofTerm() { return this.maxNode + 1; }\n    /**\n    The type of top node produced by the parser.\n    */\n    get topNode() { return this.nodeSet.types[this.top[1]]; }\n    /**\n    @internal\n    */\n    dynamicPrecedence(term) {\n        let prec = this.dynamicPrecedences;\n        return prec == null ? 0 : prec[term] || 0;\n    }\n    /**\n    @internal\n    */\n    parseDialect(dialect) {\n        let values = Object.keys(this.dialects), flags = values.map(() => false);\n        if (dialect)\n            for (let part of dialect.split(\" \")) {\n                let id = values.indexOf(part);\n                if (id >= 0)\n                    flags[id] = true;\n            }\n        let disabled = null;\n        for (let i = 0; i < values.length; i++)\n            if (!flags[i]) {\n                for (let j = this.dialects[values[i]], id; (id = this.data[j++]) != 65535 /* Seq.End */;)\n                    (disabled || (disabled = new Uint8Array(this.maxTerm + 1)))[id] = 1;\n            }\n        return new Dialect(dialect, flags, disabled);\n    }\n    /**\n    Used by the output of the parser generator. Not available to\n    user code. @hide\n    */\n    static deserialize(spec) {\n        return new LRParser(spec);\n    }\n}\nfunction pair(data, off) { return data[off] | (data[off + 1] << 16); }\nfunction findFinished(stacks) {\n    let best = null;\n    for (let stack of stacks) {\n        let stopped = stack.p.stoppedAt;\n        if ((stack.pos == stack.p.stream.end || stopped != null && stack.pos > stopped) &&\n            stack.p.parser.stateFlag(stack.state, 2 /* StateFlag.Accepting */) &&\n            (!best || best.score < stack.score))\n            best = stack;\n    }\n    return best;\n}\nfunction getSpecializer(spec) {\n    if (spec.external) {\n        let mask = spec.extend ? 1 /* Specialize.Extend */ : 0 /* Specialize.Specialize */;\n        return (value, stack) => (spec.external(value, stack) << 1) | mask;\n    }\n    return spec.get;\n}\n\nexport { ContextTracker, ExternalTokenizer, InputStream, LRParser, LocalTokenGroup, Stack };\n","import { NodeProp } from '@lezer/common';\n\nlet nextTagID = 0;\n/**\nHighlighting tags are markers that denote a highlighting category.\nThey are [associated](#highlight.styleTags) with parts of a syntax\ntree by a language mode, and then mapped to an actual CSS style by\na [highlighter](#highlight.Highlighter).\n\nBecause syntax tree node types and highlight styles have to be\nable to talk the same language, CodeMirror uses a mostly _closed_\n[vocabulary](#highlight.tags) of syntax tags (as opposed to\ntraditional open string-based systems, which make it hard for\nhighlighting themes to cover all the tokens produced by the\nvarious languages).\n\nIt _is_ possible to [define](#highlight.Tag^define) your own\nhighlighting tags for system-internal use (where you control both\nthe language package and the highlighter), but such tags will not\nbe picked up by regular highlighters (though you can derive them\nfrom standard tags to allow highlighters to fall back to those).\n*/\nclass Tag {\n    /**\n    @internal\n    */\n    constructor(\n    /**\n    The optional name of the base tag @internal\n    */\n    name, \n    /**\n    The set of this tag and all its parent tags, starting with\n    this one itself and sorted in order of decreasing specificity.\n    */\n    set, \n    /**\n    The base unmodified tag that this one is based on, if it's\n    modified @internal\n    */\n    base, \n    /**\n    The modifiers applied to this.base @internal\n    */\n    modified) {\n        this.name = name;\n        this.set = set;\n        this.base = base;\n        this.modified = modified;\n        /**\n        @internal\n        */\n        this.id = nextTagID++;\n    }\n    toString() {\n        let { name } = this;\n        for (let mod of this.modified)\n            if (mod.name)\n                name = `${mod.name}(${name})`;\n        return name;\n    }\n    static define(nameOrParent, parent) {\n        let name = typeof nameOrParent == \"string\" ? nameOrParent : \"?\";\n        if (nameOrParent instanceof Tag)\n            parent = nameOrParent;\n        if (parent === null || parent === void 0 ? void 0 : parent.base)\n            throw new Error(\"Can not derive from a modified tag\");\n        let tag = new Tag(name, [], null, []);\n        tag.set.push(tag);\n        if (parent)\n            for (let t of parent.set)\n                tag.set.push(t);\n        return tag;\n    }\n    /**\n    Define a tag _modifier_, which is a function that, given a tag,\n    will return a tag that is a subtag of the original. Applying the\n    same modifier to a twice tag will return the same value (`m1(t1)\n    == m1(t1)`) and applying multiple modifiers will, regardless or\n    order, produce the same tag (`m1(m2(t1)) == m2(m1(t1))`).\n    \n    When multiple modifiers are applied to a given base tag, each\n    smaller set of modifiers is registered as a parent, so that for\n    example `m1(m2(m3(t1)))` is a subtype of `m1(m2(t1))`,\n    `m1(m3(t1)`, and so on.\n    */\n    static defineModifier(name) {\n        let mod = new Modifier(name);\n        return (tag) => {\n            if (tag.modified.indexOf(mod) > -1)\n                return tag;\n            return Modifier.get(tag.base || tag, tag.modified.concat(mod).sort((a, b) => a.id - b.id));\n        };\n    }\n}\nlet nextModifierID = 0;\nclass Modifier {\n    constructor(name) {\n        this.name = name;\n        this.instances = [];\n        this.id = nextModifierID++;\n    }\n    static get(base, mods) {\n        if (!mods.length)\n            return base;\n        let exists = mods[0].instances.find(t => t.base == base && sameArray(mods, t.modified));\n        if (exists)\n            return exists;\n        let set = [], tag = new Tag(base.name, set, base, mods);\n        for (let m of mods)\n            m.instances.push(tag);\n        let configs = powerSet(mods);\n        for (let parent of base.set)\n            if (!parent.modified.length)\n                for (let config of configs)\n                    set.push(Modifier.get(parent, config));\n        return tag;\n    }\n}\nfunction sameArray(a, b) {\n    return a.length == b.length && a.every((x, i) => x == b[i]);\n}\nfunction powerSet(array) {\n    let sets = [[]];\n    for (let i = 0; i < array.length; i++) {\n        for (let j = 0, e = sets.length; j < e; j++) {\n            sets.push(sets[j].concat(array[i]));\n        }\n    }\n    return sets.sort((a, b) => b.length - a.length);\n}\n/**\nThis function is used to add a set of tags to a language syntax\nvia [`NodeSet.extend`](#common.NodeSet.extend) or\n[`LRParser.configure`](#lr.LRParser.configure).\n\nThe argument object maps node selectors to [highlighting\ntags](#highlight.Tag) or arrays of tags.\n\nNode selectors may hold one or more (space-separated) node paths.\nSuch a path can be a [node name](#common.NodeType.name), or\nmultiple node names (or `*` wildcards) separated by slash\ncharacters, as in `\"Block/Declaration/VariableName\"`. Such a path\nmatches the final node but only if its direct parent nodes are the\nother nodes mentioned. A `*` in such a path matches any parent,\nbut only a single level—wildcards that match multiple parents\naren't supported, both for efficiency reasons and because Lezer\ntrees make it rather hard to reason about what they would match.)\n\nA path can be ended with `/...` to indicate that the tag assigned\nto the node should also apply to all child nodes, even if they\nmatch their own style (by default, only the innermost style is\nused).\n\nWhen a path ends in `!`, as in `Attribute!`, no further matching\nhappens for the node's child nodes, and the entire node gets the\ngiven style.\n\nIn this notation, node names that contain `/`, `!`, `*`, or `...`\nmust be quoted as JSON strings.\n\nFor example:\n\n```javascript\nparser.withProps(\n  styleTags({\n    // Style Number and BigNumber nodes\n    \"Number BigNumber\": tags.number,\n    // Style Escape nodes whose parent is String\n    \"String/Escape\": tags.escape,\n    // Style anything inside Attributes nodes\n    \"Attributes!\": tags.meta,\n    // Add a style to all content inside Italic nodes\n    \"Italic/...\": tags.emphasis,\n    // Style InvalidString nodes as both `string` and `invalid`\n    \"InvalidString\": [tags.string, tags.invalid],\n    // Style the node named \"/\" as punctuation\n    '\"/\"': tags.punctuation\n  })\n)\n```\n*/\nfunction styleTags(spec) {\n    let byName = Object.create(null);\n    for (let prop in spec) {\n        let tags = spec[prop];\n        if (!Array.isArray(tags))\n            tags = [tags];\n        for (let part of prop.split(\" \"))\n            if (part) {\n                let pieces = [], mode = 2 /* Mode.Normal */, rest = part;\n                for (let pos = 0;;) {\n                    if (rest == \"...\" && pos > 0 && pos + 3 == part.length) {\n                        mode = 1 /* Mode.Inherit */;\n                        break;\n                    }\n                    let m = /^\"(?:[^\"\\\\]|\\\\.)*?\"|[^\\/!]+/.exec(rest);\n                    if (!m)\n                        throw new RangeError(\"Invalid path: \" + part);\n                    pieces.push(m[0] == \"*\" ? \"\" : m[0][0] == '\"' ? JSON.parse(m[0]) : m[0]);\n                    pos += m[0].length;\n                    if (pos == part.length)\n                        break;\n                    let next = part[pos++];\n                    if (pos == part.length && next == \"!\") {\n                        mode = 0 /* Mode.Opaque */;\n                        break;\n                    }\n                    if (next != \"/\")\n                        throw new RangeError(\"Invalid path: \" + part);\n                    rest = part.slice(pos);\n                }\n                let last = pieces.length - 1, inner = pieces[last];\n                if (!inner)\n                    throw new RangeError(\"Invalid path: \" + part);\n                let rule = new Rule(tags, mode, last > 0 ? pieces.slice(0, last) : null);\n                byName[inner] = rule.sort(byName[inner]);\n            }\n    }\n    return ruleNodeProp.add(byName);\n}\nconst ruleNodeProp = new NodeProp();\nclass Rule {\n    constructor(tags, mode, context, next) {\n        this.tags = tags;\n        this.mode = mode;\n        this.context = context;\n        this.next = next;\n    }\n    get opaque() { return this.mode == 0 /* Mode.Opaque */; }\n    get inherit() { return this.mode == 1 /* Mode.Inherit */; }\n    sort(other) {\n        if (!other || other.depth < this.depth) {\n            this.next = other;\n            return this;\n        }\n        other.next = this.sort(other.next);\n        return other;\n    }\n    get depth() { return this.context ? this.context.length : 0; }\n}\nRule.empty = new Rule([], 2 /* Mode.Normal */, null);\n/**\nDefine a [highlighter](#highlight.Highlighter) from an array of\ntag/class pairs. Classes associated with more specific tags will\ntake precedence.\n*/\nfunction tagHighlighter(tags, options) {\n    let map = Object.create(null);\n    for (let style of tags) {\n        if (!Array.isArray(style.tag))\n            map[style.tag.id] = style.class;\n        else\n            for (let tag of style.tag)\n                map[tag.id] = style.class;\n    }\n    let { scope, all = null } = options || {};\n    return {\n        style: (tags) => {\n            let cls = all;\n            for (let tag of tags) {\n                for (let sub of tag.set) {\n                    let tagClass = map[sub.id];\n                    if (tagClass) {\n                        cls = cls ? cls + \" \" + tagClass : tagClass;\n                        break;\n                    }\n                }\n            }\n            return cls;\n        },\n        scope\n    };\n}\nfunction highlightTags(highlighters, tags) {\n    let result = null;\n    for (let highlighter of highlighters) {\n        let value = highlighter.style(tags);\n        if (value)\n            result = result ? result + \" \" + value : value;\n    }\n    return result;\n}\n/**\nHighlight the given [tree](#common.Tree) with the given\n[highlighter](#highlight.Highlighter). Often, the higher-level\n[`highlightCode`](#highlight.highlightCode) function is easier to\nuse.\n*/\nfunction highlightTree(tree, highlighter, \n/**\nAssign styling to a region of the text. Will be called, in order\nof position, for any ranges where more than zero classes apply.\n`classes` is a space separated string of CSS classes.\n*/\nputStyle, \n/**\nThe start of the range to highlight.\n*/\nfrom = 0, \n/**\nThe end of the range.\n*/\nto = tree.length) {\n    let builder = new HighlightBuilder(from, Array.isArray(highlighter) ? highlighter : [highlighter], putStyle);\n    builder.highlightRange(tree.cursor(), from, to, \"\", builder.highlighters);\n    builder.flush(to);\n}\n/**\nHighlight the given tree with the given highlighter, calling\n`putText` for every piece of text, either with a set of classes or\nwith the empty string when unstyled, and `putBreak` for every line\nbreak.\n*/\nfunction highlightCode(code, tree, highlighter, putText, putBreak, from = 0, to = code.length) {\n    let pos = from;\n    function writeTo(p, classes) {\n        if (p <= pos)\n            return;\n        for (let text = code.slice(pos, p), i = 0;;) {\n            let nextBreak = text.indexOf(\"\\n\", i);\n            let upto = nextBreak < 0 ? text.length : nextBreak;\n            if (upto > i)\n                putText(text.slice(i, upto), classes);\n            if (nextBreak < 0)\n                break;\n            putBreak();\n            i = nextBreak + 1;\n        }\n        pos = p;\n    }\n    highlightTree(tree, highlighter, (from, to, classes) => {\n        writeTo(from, \"\");\n        writeTo(to, classes);\n    }, from, to);\n    writeTo(to, \"\");\n}\nclass HighlightBuilder {\n    constructor(at, highlighters, span) {\n        this.at = at;\n        this.highlighters = highlighters;\n        this.span = span;\n        this.class = \"\";\n    }\n    startSpan(at, cls) {\n        if (cls != this.class) {\n            this.flush(at);\n            if (at > this.at)\n                this.at = at;\n            this.class = cls;\n        }\n    }\n    flush(to) {\n        if (to > this.at && this.class)\n            this.span(this.at, to, this.class);\n    }\n    highlightRange(cursor, from, to, inheritedClass, highlighters) {\n        let { type, from: start, to: end } = cursor;\n        if (start >= to || end <= from)\n            return;\n        if (type.isTop)\n            highlighters = this.highlighters.filter(h => !h.scope || h.scope(type));\n        let cls = inheritedClass;\n        let rule = getStyleTags(cursor) || Rule.empty;\n        let tagCls = highlightTags(highlighters, rule.tags);\n        if (tagCls) {\n            if (cls)\n                cls += \" \";\n            cls += tagCls;\n            if (rule.mode == 1 /* Mode.Inherit */)\n                inheritedClass += (inheritedClass ? \" \" : \"\") + tagCls;\n        }\n        this.startSpan(Math.max(from, start), cls);\n        if (rule.opaque)\n            return;\n        let mounted = cursor.tree && cursor.tree.prop(NodeProp.mounted);\n        if (mounted && mounted.overlay) {\n            let inner = cursor.node.enter(mounted.overlay[0].from + start, 1);\n            let innerHighlighters = this.highlighters.filter(h => !h.scope || h.scope(mounted.tree.type));\n            let hasChild = cursor.firstChild();\n            for (let i = 0, pos = start;; i++) {\n                let next = i < mounted.overlay.length ? mounted.overlay[i] : null;\n                let nextPos = next ? next.from + start : end;\n                let rangeFrom = Math.max(from, pos), rangeTo = Math.min(to, nextPos);\n                if (rangeFrom < rangeTo && hasChild) {\n                    while (cursor.from < rangeTo) {\n                        this.highlightRange(cursor, rangeFrom, rangeTo, inheritedClass, highlighters);\n                        this.startSpan(Math.min(rangeTo, cursor.to), cls);\n                        if (cursor.to >= nextPos || !cursor.nextSibling())\n                            break;\n                    }\n                }\n                if (!next || nextPos > to)\n                    break;\n                pos = next.to + start;\n                if (pos > from) {\n                    this.highlightRange(inner.cursor(), Math.max(from, next.from + start), Math.min(to, pos), \"\", innerHighlighters);\n                    this.startSpan(Math.min(to, pos), cls);\n                }\n            }\n            if (hasChild)\n                cursor.parent();\n        }\n        else if (cursor.firstChild()) {\n            if (mounted)\n                inheritedClass = \"\";\n            do {\n                if (cursor.to <= from)\n                    continue;\n                if (cursor.from >= to)\n                    break;\n                this.highlightRange(cursor, from, to, inheritedClass, highlighters);\n                this.startSpan(Math.min(to, cursor.to), cls);\n            } while (cursor.nextSibling());\n            cursor.parent();\n        }\n    }\n}\n/**\nMatch a syntax node's [highlight rules](#highlight.styleTags). If\nthere's a match, return its set of tags, and whether it is\nopaque (uses a `!`) or applies to all child nodes (`/...`).\n*/\nfunction getStyleTags(node) {\n    let rule = node.type.prop(ruleNodeProp);\n    while (rule && rule.context && !node.matchContext(rule.context))\n        rule = rule.next;\n    return rule || null;\n}\nconst t = Tag.define;\nconst comment = t(), name = t(), typeName = t(name), propertyName = t(name), literal = t(), string = t(literal), number = t(literal), content = t(), heading = t(content), keyword = t(), operator = t(), punctuation = t(), bracket = t(punctuation), meta = t();\n/**\nThe default set of highlighting [tags](#highlight.Tag).\n\nThis collection is heavily biased towards programming languages,\nand necessarily incomplete. A full ontology of syntactic\nconstructs would fill a stack of books, and be impractical to\nwrite themes for. So try to make do with this set. If all else\nfails, [open an\nissue](https://github.com/codemirror/codemirror.next) to propose a\nnew tag, or [define](#highlight.Tag^define) a local custom tag for\nyour use case.\n\nNote that it is not obligatory to always attach the most specific\ntag possible to an element—if your grammar can't easily\ndistinguish a certain type of element (such as a local variable),\nit is okay to style it as its more general variant (a variable).\n\nFor tags that extend some parent tag, the documentation links to\nthe parent.\n*/\nconst tags = {\n    /**\n    A comment.\n    */\n    comment,\n    /**\n    A line [comment](#highlight.tags.comment).\n    */\n    lineComment: t(comment),\n    /**\n    A block [comment](#highlight.tags.comment).\n    */\n    blockComment: t(comment),\n    /**\n    A documentation [comment](#highlight.tags.comment).\n    */\n    docComment: t(comment),\n    /**\n    Any kind of identifier.\n    */\n    name,\n    /**\n    The [name](#highlight.tags.name) of a variable.\n    */\n    variableName: t(name),\n    /**\n    A type [name](#highlight.tags.name).\n    */\n    typeName: typeName,\n    /**\n    A tag name (subtag of [`typeName`](#highlight.tags.typeName)).\n    */\n    tagName: t(typeName),\n    /**\n    A property or field [name](#highlight.tags.name).\n    */\n    propertyName: propertyName,\n    /**\n    An attribute name (subtag of [`propertyName`](#highlight.tags.propertyName)).\n    */\n    attributeName: t(propertyName),\n    /**\n    The [name](#highlight.tags.name) of a class.\n    */\n    className: t(name),\n    /**\n    A label [name](#highlight.tags.name).\n    */\n    labelName: t(name),\n    /**\n    A namespace [name](#highlight.tags.name).\n    */\n    namespace: t(name),\n    /**\n    The [name](#highlight.tags.name) of a macro.\n    */\n    macroName: t(name),\n    /**\n    A literal value.\n    */\n    literal,\n    /**\n    A string [literal](#highlight.tags.literal).\n    */\n    string,\n    /**\n    A documentation [string](#highlight.tags.string).\n    */\n    docString: t(string),\n    /**\n    A character literal (subtag of [string](#highlight.tags.string)).\n    */\n    character: t(string),\n    /**\n    An attribute value (subtag of [string](#highlight.tags.string)).\n    */\n    attributeValue: t(string),\n    /**\n    A number [literal](#highlight.tags.literal).\n    */\n    number,\n    /**\n    An integer [number](#highlight.tags.number) literal.\n    */\n    integer: t(number),\n    /**\n    A floating-point [number](#highlight.tags.number) literal.\n    */\n    float: t(number),\n    /**\n    A boolean [literal](#highlight.tags.literal).\n    */\n    bool: t(literal),\n    /**\n    Regular expression [literal](#highlight.tags.literal).\n    */\n    regexp: t(literal),\n    /**\n    An escape [literal](#highlight.tags.literal), for example a\n    backslash escape in a string.\n    */\n    escape: t(literal),\n    /**\n    A color [literal](#highlight.tags.literal).\n    */\n    color: t(literal),\n    /**\n    A URL [literal](#highlight.tags.literal).\n    */\n    url: t(literal),\n    /**\n    A language keyword.\n    */\n    keyword,\n    /**\n    The [keyword](#highlight.tags.keyword) for the self or this\n    object.\n    */\n    self: t(keyword),\n    /**\n    The [keyword](#highlight.tags.keyword) for null.\n    */\n    null: t(keyword),\n    /**\n    A [keyword](#highlight.tags.keyword) denoting some atomic value.\n    */\n    atom: t(keyword),\n    /**\n    A [keyword](#highlight.tags.keyword) that represents a unit.\n    */\n    unit: t(keyword),\n    /**\n    A modifier [keyword](#highlight.tags.keyword).\n    */\n    modifier: t(keyword),\n    /**\n    A [keyword](#highlight.tags.keyword) that acts as an operator.\n    */\n    operatorKeyword: t(keyword),\n    /**\n    A control-flow related [keyword](#highlight.tags.keyword).\n    */\n    controlKeyword: t(keyword),\n    /**\n    A [keyword](#highlight.tags.keyword) that defines something.\n    */\n    definitionKeyword: t(keyword),\n    /**\n    A [keyword](#highlight.tags.keyword) related to defining or\n    interfacing with modules.\n    */\n    moduleKeyword: t(keyword),\n    /**\n    An operator.\n    */\n    operator,\n    /**\n    An [operator](#highlight.tags.operator) that dereferences something.\n    */\n    derefOperator: t(operator),\n    /**\n    Arithmetic-related [operator](#highlight.tags.operator).\n    */\n    arithmeticOperator: t(operator),\n    /**\n    Logical [operator](#highlight.tags.operator).\n    */\n    logicOperator: t(operator),\n    /**\n    Bit [operator](#highlight.tags.operator).\n    */\n    bitwiseOperator: t(operator),\n    /**\n    Comparison [operator](#highlight.tags.operator).\n    */\n    compareOperator: t(operator),\n    /**\n    [Operator](#highlight.tags.operator) that updates its operand.\n    */\n    updateOperator: t(operator),\n    /**\n    [Operator](#highlight.tags.operator) that defines something.\n    */\n    definitionOperator: t(operator),\n    /**\n    Type-related [operator](#highlight.tags.operator).\n    */\n    typeOperator: t(operator),\n    /**\n    Control-flow [operator](#highlight.tags.operator).\n    */\n    controlOperator: t(operator),\n    /**\n    Program or markup punctuation.\n    */\n    punctuation,\n    /**\n    [Punctuation](#highlight.tags.punctuation) that separates\n    things.\n    */\n    separator: t(punctuation),\n    /**\n    Bracket-style [punctuation](#highlight.tags.punctuation).\n    */\n    bracket,\n    /**\n    Angle [brackets](#highlight.tags.bracket) (usually `<` and `>`\n    tokens).\n    */\n    angleBracket: t(bracket),\n    /**\n    Square [brackets](#highlight.tags.bracket) (usually `[` and `]`\n    tokens).\n    */\n    squareBracket: t(bracket),\n    /**\n    Parentheses (usually `(` and `)` tokens). Subtag of\n    [bracket](#highlight.tags.bracket).\n    */\n    paren: t(bracket),\n    /**\n    Braces (usually `{` and `}` tokens). Subtag of\n    [bracket](#highlight.tags.bracket).\n    */\n    brace: t(bracket),\n    /**\n    Content, for example plain text in XML or markup documents.\n    */\n    content,\n    /**\n    [Content](#highlight.tags.content) that represents a heading.\n    */\n    heading,\n    /**\n    A level 1 [heading](#highlight.tags.heading).\n    */\n    heading1: t(heading),\n    /**\n    A level 2 [heading](#highlight.tags.heading).\n    */\n    heading2: t(heading),\n    /**\n    A level 3 [heading](#highlight.tags.heading).\n    */\n    heading3: t(heading),\n    /**\n    A level 4 [heading](#highlight.tags.heading).\n    */\n    heading4: t(heading),\n    /**\n    A level 5 [heading](#highlight.tags.heading).\n    */\n    heading5: t(heading),\n    /**\n    A level 6 [heading](#highlight.tags.heading).\n    */\n    heading6: t(heading),\n    /**\n    A prose [content](#highlight.tags.content) separator (such as a horizontal rule).\n    */\n    contentSeparator: t(content),\n    /**\n    [Content](#highlight.tags.content) that represents a list.\n    */\n    list: t(content),\n    /**\n    [Content](#highlight.tags.content) that represents a quote.\n    */\n    quote: t(content),\n    /**\n    [Content](#highlight.tags.content) that is emphasized.\n    */\n    emphasis: t(content),\n    /**\n    [Content](#highlight.tags.content) that is styled strong.\n    */\n    strong: t(content),\n    /**\n    [Content](#highlight.tags.content) that is part of a link.\n    */\n    link: t(content),\n    /**\n    [Content](#highlight.tags.content) that is styled as code or\n    monospace.\n    */\n    monospace: t(content),\n    /**\n    [Content](#highlight.tags.content) that has a strike-through\n    style.\n    */\n    strikethrough: t(content),\n    /**\n    Inserted text in a change-tracking format.\n    */\n    inserted: t(),\n    /**\n    Deleted text.\n    */\n    deleted: t(),\n    /**\n    Changed text.\n    */\n    changed: t(),\n    /**\n    An invalid or unsyntactic element.\n    */\n    invalid: t(),\n    /**\n    Metadata or meta-instruction.\n    */\n    meta,\n    /**\n    [Metadata](#highlight.tags.meta) that applies to the entire\n    document.\n    */\n    documentMeta: t(meta),\n    /**\n    [Metadata](#highlight.tags.meta) that annotates or adds\n    attributes to a given syntactic element.\n    */\n    annotation: t(meta),\n    /**\n    Processing instruction or preprocessor directive. Subtag of\n    [meta](#highlight.tags.meta).\n    */\n    processingInstruction: t(meta),\n    /**\n    [Modifier](#highlight.Tag^defineModifier) that indicates that a\n    given element is being defined. Expected to be used with the\n    various [name](#highlight.tags.name) tags.\n    */\n    definition: Tag.defineModifier(\"definition\"),\n    /**\n    [Modifier](#highlight.Tag^defineModifier) that indicates that\n    something is constant. Mostly expected to be used with\n    [variable names](#highlight.tags.variableName).\n    */\n    constant: Tag.defineModifier(\"constant\"),\n    /**\n    [Modifier](#highlight.Tag^defineModifier) used to indicate that\n    a [variable](#highlight.tags.variableName) or [property\n    name](#highlight.tags.propertyName) is being called or defined\n    as a function.\n    */\n    function: Tag.defineModifier(\"function\"),\n    /**\n    [Modifier](#highlight.Tag^defineModifier) that can be applied to\n    [names](#highlight.tags.name) to indicate that they belong to\n    the language's standard environment.\n    */\n    standard: Tag.defineModifier(\"standard\"),\n    /**\n    [Modifier](#highlight.Tag^defineModifier) that indicates a given\n    [names](#highlight.tags.name) is local to some scope.\n    */\n    local: Tag.defineModifier(\"local\"),\n    /**\n    A generic variant [modifier](#highlight.Tag^defineModifier) that\n    can be used to tag language-specific alternative variants of\n    some common tag. It is recommended for themes to define special\n    forms of at least the [string](#highlight.tags.string) and\n    [variable name](#highlight.tags.variableName) tags, since those\n    come up a lot.\n    */\n    special: Tag.defineModifier(\"special\")\n};\nfor (let name in tags) {\n    let val = tags[name];\n    if (val instanceof Tag)\n        val.name = name;\n}\n/**\nThis is a highlighter that adds stable, predictable classes to\ntokens, for styling with external CSS.\n\nThe following tags are mapped to their name prefixed with `\"tok-\"`\n(for example `\"tok-comment\"`):\n\n* [`link`](#highlight.tags.link)\n* [`heading`](#highlight.tags.heading)\n* [`emphasis`](#highlight.tags.emphasis)\n* [`strong`](#highlight.tags.strong)\n* [`keyword`](#highlight.tags.keyword)\n* [`atom`](#highlight.tags.atom)\n* [`bool`](#highlight.tags.bool)\n* [`url`](#highlight.tags.url)\n* [`labelName`](#highlight.tags.labelName)\n* [`inserted`](#highlight.tags.inserted)\n* [`deleted`](#highlight.tags.deleted)\n* [`literal`](#highlight.tags.literal)\n* [`string`](#highlight.tags.string)\n* [`number`](#highlight.tags.number)\n* [`variableName`](#highlight.tags.variableName)\n* [`typeName`](#highlight.tags.typeName)\n* [`namespace`](#highlight.tags.namespace)\n* [`className`](#highlight.tags.className)\n* [`macroName`](#highlight.tags.macroName)\n* [`propertyName`](#highlight.tags.propertyName)\n* [`operator`](#highlight.tags.operator)\n* [`comment`](#highlight.tags.comment)\n* [`meta`](#highlight.tags.meta)\n* [`punctuation`](#highlight.tags.punctuation)\n* [`invalid`](#highlight.tags.invalid)\n\nIn addition, these mappings are provided:\n\n* [`regexp`](#highlight.tags.regexp),\n  [`escape`](#highlight.tags.escape), and\n  [`special`](#highlight.tags.special)[`(string)`](#highlight.tags.string)\n  are mapped to `\"tok-string2\"`\n* [`special`](#highlight.tags.special)[`(variableName)`](#highlight.tags.variableName)\n  to `\"tok-variableName2\"`\n* [`local`](#highlight.tags.local)[`(variableName)`](#highlight.tags.variableName)\n  to `\"tok-variableName tok-local\"`\n* [`definition`](#highlight.tags.definition)[`(variableName)`](#highlight.tags.variableName)\n  to `\"tok-variableName tok-definition\"`\n* [`definition`](#highlight.tags.definition)[`(propertyName)`](#highlight.tags.propertyName)\n  to `\"tok-propertyName tok-definition\"`\n*/\nconst classHighlighter = tagHighlighter([\n    { tag: tags.link, class: \"tok-link\" },\n    { tag: tags.heading, class: \"tok-heading\" },\n    { tag: tags.emphasis, class: \"tok-emphasis\" },\n    { tag: tags.strong, class: \"tok-strong\" },\n    { tag: tags.keyword, class: \"tok-keyword\" },\n    { tag: tags.atom, class: \"tok-atom\" },\n    { tag: tags.bool, class: \"tok-bool\" },\n    { tag: tags.url, class: \"tok-url\" },\n    { tag: tags.labelName, class: \"tok-labelName\" },\n    { tag: tags.inserted, class: \"tok-inserted\" },\n    { tag: tags.deleted, class: \"tok-deleted\" },\n    { tag: tags.literal, class: \"tok-literal\" },\n    { tag: tags.string, class: \"tok-string\" },\n    { tag: tags.number, class: \"tok-number\" },\n    { tag: [tags.regexp, tags.escape, tags.special(tags.string)], class: \"tok-string2\" },\n    { tag: tags.variableName, class: \"tok-variableName\" },\n    { tag: tags.local(tags.variableName), class: \"tok-variableName tok-local\" },\n    { tag: tags.definition(tags.variableName), class: \"tok-variableName tok-definition\" },\n    { tag: tags.special(tags.variableName), class: \"tok-variableName2\" },\n    { tag: tags.definition(tags.propertyName), class: \"tok-propertyName tok-definition\" },\n    { tag: tags.typeName, class: \"tok-typeName\" },\n    { tag: tags.namespace, class: \"tok-namespace\" },\n    { tag: tags.className, class: \"tok-className\" },\n    { tag: tags.macroName, class: \"tok-macroName\" },\n    { tag: tags.propertyName, class: \"tok-propertyName\" },\n    { tag: tags.operator, class: \"tok-operator\" },\n    { tag: tags.comment, class: \"tok-comment\" },\n    { tag: tags.meta, class: \"tok-meta\" },\n    { tag: tags.invalid, class: \"tok-invalid\" },\n    { tag: tags.punctuation, class: \"tok-punctuation\" }\n]);\n\nexport { Tag, classHighlighter, getStyleTags, highlightCode, highlightTree, styleTags, tagHighlighter, tags };\n","import { LRParser } from '@lezer/lr';\nimport { styleTags, tags } from '@lezer/highlight';\n\nconst jsonHighlighting = styleTags({\n  String: tags.string,\n  Number: tags.number,\n  \"True False\": tags.bool,\n  PropertyName: tags.propertyName,\n  Null: tags.null,\n  \", :\": tags.separator,\n  \"[ ]\": tags.squareBracket,\n  \"{ }\": tags.brace\n});\n\n// This file was generated by lezer-generator. You probably shouldn't edit it.\nconst parser = LRParser.deserialize({\n  version: 14,\n  states: \"$bOVQPOOOOQO'#Cb'#CbOnQPO'#CeOvQPO'#ClOOQO'#Cr'#CrQOQPOOOOQO'#Cg'#CgO}QPO'#CfO!SQPO'#CtOOQO,59P,59PO![QPO,59PO!aQPO'#CuOOQO,59W,59WO!iQPO,59WOVQPO,59QOqQPO'#CmO!nQPO,59`OOQO1G.k1G.kOVQPO'#CnO!vQPO,59aOOQO1G.r1G.rOOQO1G.l1G.lOOQO,59X,59XOOQO-E6k-E6kOOQO,59Y,59YOOQO-E6l-E6l\",\n  stateData: \"#O~OeOS~OQSORSOSSOTSOWQO_ROgPO~OVXOgUO~O^[O~PVO[^O~O]_OVhX~OVaO~O]bO^iX~O^dO~O]_OVha~O]bO^ia~O\",\n  goto: \"!kjPPPPPPkPPkqwPPPPk{!RPPP!XP!e!hXSOR^bQWQRf_TVQ_Q`WRg`QcZRicQTOQZRQe^RhbRYQR]R\",\n  nodeNames: \"⚠ JsonText True False Null Number String } { Object Property PropertyName : , ] [ Array\",\n  maxTerm: 25,\n  nodeProps: [\n    [\"isolate\", -2,6,11,\"\"],\n    [\"openedBy\", 7,\"{\",14,\"[\"],\n    [\"closedBy\", 8,\"}\",15,\"]\"]\n  ],\n  propSources: [jsonHighlighting],\n  skippedNodes: [0],\n  repeatNodeCount: 2,\n  tokenData: \"(|~RaXY!WYZ!W]^!Wpq!Wrs!]|}$u}!O$z!Q!R%T!R![&c![!]&t!}#O&y#P#Q'O#Y#Z'T#b#c'r#h#i(Z#o#p(r#q#r(w~!]Oe~~!`Wpq!]qr!]rs!xs#O!]#O#P!}#P;'S!];'S;=`$o<%lO!]~!}Og~~#QXrs!]!P!Q!]#O#P!]#U#V!]#Y#Z!]#b#c!]#f#g!]#h#i!]#i#j#m~#pR!Q![#y!c!i#y#T#Z#y~#|R!Q![$V!c!i$V#T#Z$V~$YR!Q![$c!c!i$c#T#Z$c~$fR!Q![!]!c!i!]#T#Z!]~$rP;=`<%l!]~$zO]~~$}Q!Q!R%T!R![&c~%YRT~!O!P%c!g!h%w#X#Y%w~%fP!Q![%i~%nRT~!Q![%i!g!h%w#X#Y%w~%zR{|&T}!O&T!Q![&Z~&WP!Q![&Z~&`PT~!Q![&Z~&hST~!O!P%c!Q![&c!g!h%w#X#Y%w~&yO[~~'OO_~~'TO^~~'WP#T#U'Z~'^P#`#a'a~'dP#g#h'g~'jP#X#Y'm~'rOR~~'uP#i#j'x~'{P#`#a(O~(RP#`#a(U~(ZOS~~(^P#f#g(a~(dP#i#j(g~(jP#X#Y(m~(rOQ~~(wOW~~(|OV~\",\n  tokenizers: [0],\n  topRules: {\"JsonText\":[0,1]},\n  tokenPrec: 0\n});\n\nexport { parser };\n","// These are filled with ranges (rangeFrom[i] up to but not including\n// rangeTo[i]) of code points that count as extending characters.\nlet rangeFrom = [], rangeTo = []\n\n;(() => {\n  // Compressed representation of the Grapheme_Cluster_Break=Extend\n  // information from\n  // http://www.unicode.org/Public/16.0.0/ucd/auxiliary/GraphemeBreakProperty.txt.\n  // Each pair of elements represents a range, as an offet from the\n  // previous range and a length. Numbers are in base-36, with the empty\n  // string being a shorthand for 1.\n  let numbers = \"lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,3b,f,,w,1j,,,,4,8,4,,3,7,a,2,t,,1m,,,,2,4,8,,9,,a,2,q,,2,2,1l,,4,2,4,2,2,3,3,,u,2,3,,b,2,1l,,4,5,,2,4,,k,2,m,6,,,1m,,,2,,4,8,,7,3,a,2,u,,1n,,,,c,,9,,14,,3,,1l,3,5,3,,4,7,2,b,2,t,,1m,,2,,2,,3,,5,2,7,2,b,2,s,2,1l,2,,,2,4,8,,9,,a,2,t,,20,,4,,2,3,,,8,,29,,2,7,c,8,2q,,2,9,b,6,22,2,r,,,,,,1j,e,,5,,2,5,b,,10,9,,2u,4,,6,,2,2,2,p,2,4,3,g,4,d,,2,2,6,,f,,jj,3,qa,3,t,3,t,2,u,2,1s,2,,7,8,,2,b,9,,19,3,3b,2,y,,3a,3,4,2,9,,6,3,63,2,2,,1m,,,7,,,,,2,8,6,a,2,,1c,h,1r,4,1c,7,,,5,,14,9,c,2,w,4,2,2,,3,1k,,,2,3,,,3,1m,8,2,2,48,3,,d,,7,4,,6,,3,2,5i,1m,,5,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,p,2,5,,47,2,q,i,d,,12,8,p,b,1a,3,1c,,2,4,2,2,13,,1v,6,2,2,2,2,c,,8,,1b,,1f,,,3,2,2,5,2,,,16,2,8,,6m,,2,,4,,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,ar,2,49,b,4w,,1i,f,1k,3,1d,4,2,2,1x,3,10,5,,8,1q,,c,2,1g,9,a,4,2,,2n,3,2,,,2,6,,4g,,3,8,l,2,1l,2,,,,,m,,e,7,3,5,5f,8,2,3,,,n,,29,,2,6,,,2,,,2,,2,6j,,2,4,6,2,,2,r,2,2d,8,2,,,2,2y,,,,2,6,,,2t,3,2,4,,5,77,9,,2,6t,,a,2,,,4,,40,4,2,2,4,,w,a,14,6,2,4,8,,9,6,2,3,1a,d,,2,ba,7,,6,,,2a,m,2,7,,2,,2,3e,6,3,,,2,,7,,,20,2,3,,,,9n,2,f0b,5,1n,7,t4,,1r,4,29,,f5k,2,43q,,,3,4,5,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,79,7,c5,4,15s,7,31,7,240,5,gx7k,2o,3k,6o\".split(\",\").map(s => s ? parseInt(s, 36) : 1)\n  for (let i = 0, n = 0; i < numbers.length; i++)\n    (i % 2 ? rangeTo : rangeFrom).push(n = n + numbers[i])\n})()\n\nexport function isExtendingChar(code) {\n  if (code < 768) return false\n  for (let from = 0, to = rangeFrom.length;;) {\n    let mid = (from + to) >> 1\n    if (code < rangeFrom[mid]) to = mid\n    else if (code >= rangeTo[mid]) from = mid + 1\n    else return true\n    if (from == to) return false\n  }\n}\n\nfunction isRegionalIndicator(code) {\n  return code >= 0x1F1E6 && code <= 0x1F1FF\n}\n\nfunction check(code) {\n  for (let i = 0; i < rangeFrom.length; i++) {\n    if (rangeTo[i] > code) return rangeFrom[i] <= code\n  }\n  return false\n}\n\nconst ZWJ = 0x200d\n\nexport function findClusterBreak(str, pos, forward = true, includeExtending = true) {\n  return (forward ? nextClusterBreak : prevClusterBreak)(str, pos, includeExtending)\n}\n\nfunction nextClusterBreak(str, pos, includeExtending) {\n  if (pos == str.length) return pos\n  // If pos is in the middle of a surrogate pair, move to its start\n  if (pos && surrogateLow(str.charCodeAt(pos)) && surrogateHigh(str.charCodeAt(pos - 1))) pos--\n  let prev = codePointAt(str, pos)\n  pos += codePointSize(prev)\n  while (pos < str.length) {\n    let next = codePointAt(str, pos)\n    if (prev == ZWJ || next == ZWJ || includeExtending && isExtendingChar(next)) {\n      pos += codePointSize(next)\n      prev = next\n    } else if (isRegionalIndicator(next)) {\n      let countBefore = 0, i = pos - 2\n      while (i >= 0 && isRegionalIndicator(codePointAt(str, i))) { countBefore++; i -= 2 }\n      if (countBefore % 2 == 0) break\n      else pos += 2\n    } else {\n      break\n    }\n  }\n  return pos\n}\n\nfunction prevClusterBreak(str, pos, includeExtending) {\n  while (pos > 0) {\n    let found = nextClusterBreak(str, pos - 2, includeExtending)\n    if (found < pos) return found\n    pos--\n  }\n  return 0\n}\n\nfunction codePointAt(str, pos) {\n  let code0 = str.charCodeAt(pos)\n  if (!surrogateHigh(code0) || pos + 1 == str.length) return code0\n  let code1 = str.charCodeAt(pos + 1)\n  if (!surrogateLow(code1)) return code0\n  return ((code0 - 0xd800) << 10) + (code1 - 0xdc00) + 0x10000\n}\n\nfunction surrogateLow(ch) { return ch >= 0xDC00 && ch < 0xE000 }\nfunction surrogateHigh(ch) { return ch >= 0xD800 && ch < 0xDC00 }\nfunction codePointSize(code) { return code < 0x10000 ? 1 : 2 }\n","import { findClusterBreak as findClusterBreak$1 } from '@marijn/find-cluster-break';\n\n/**\nThe data structure for documents. @nonabstract\n*/\nclass Text {\n    /**\n    Get the line description around the given position.\n    */\n    lineAt(pos) {\n        if (pos < 0 || pos > this.length)\n            throw new RangeError(`Invalid position ${pos} in document of length ${this.length}`);\n        return this.lineInner(pos, false, 1, 0);\n    }\n    /**\n    Get the description for the given (1-based) line number.\n    */\n    line(n) {\n        if (n < 1 || n > this.lines)\n            throw new RangeError(`Invalid line number ${n} in ${this.lines}-line document`);\n        return this.lineInner(n, true, 1, 0);\n    }\n    /**\n    Replace a range of the text with the given content.\n    */\n    replace(from, to, text) {\n        [from, to] = clip(this, from, to);\n        let parts = [];\n        this.decompose(0, from, parts, 2 /* Open.To */);\n        if (text.length)\n            text.decompose(0, text.length, parts, 1 /* Open.From */ | 2 /* Open.To */);\n        this.decompose(to, this.length, parts, 1 /* Open.From */);\n        return TextNode.from(parts, this.length - (to - from) + text.length);\n    }\n    /**\n    Append another document to this one.\n    */\n    append(other) {\n        return this.replace(this.length, this.length, other);\n    }\n    /**\n    Retrieve the text between the given points.\n    */\n    slice(from, to = this.length) {\n        [from, to] = clip(this, from, to);\n        let parts = [];\n        this.decompose(from, to, parts, 0);\n        return TextNode.from(parts, to - from);\n    }\n    /**\n    Test whether this text is equal to another instance.\n    */\n    eq(other) {\n        if (other == this)\n            return true;\n        if (other.length != this.length || other.lines != this.lines)\n            return false;\n        let start = this.scanIdentical(other, 1), end = this.length - this.scanIdentical(other, -1);\n        let a = new RawTextCursor(this), b = new RawTextCursor(other);\n        for (let skip = start, pos = start;;) {\n            a.next(skip);\n            b.next(skip);\n            skip = 0;\n            if (a.lineBreak != b.lineBreak || a.done != b.done || a.value != b.value)\n                return false;\n            pos += a.value.length;\n            if (a.done || pos >= end)\n                return true;\n        }\n    }\n    /**\n    Iterate over the text. When `dir` is `-1`, iteration happens\n    from end to start. This will return lines and the breaks between\n    them as separate strings.\n    */\n    iter(dir = 1) { return new RawTextCursor(this, dir); }\n    /**\n    Iterate over a range of the text. When `from` > `to`, the\n    iterator will run in reverse.\n    */\n    iterRange(from, to = this.length) { return new PartialTextCursor(this, from, to); }\n    /**\n    Return a cursor that iterates over the given range of lines,\n    _without_ returning the line breaks between, and yielding empty\n    strings for empty lines.\n    \n    When `from` and `to` are given, they should be 1-based line numbers.\n    */\n    iterLines(from, to) {\n        let inner;\n        if (from == null) {\n            inner = this.iter();\n        }\n        else {\n            if (to == null)\n                to = this.lines + 1;\n            let start = this.line(from).from;\n            inner = this.iterRange(start, Math.max(start, to == this.lines + 1 ? this.length : to <= 1 ? 0 : this.line(to - 1).to));\n        }\n        return new LineCursor(inner);\n    }\n    /**\n    Return the document as a string, using newline characters to\n    separate lines.\n    */\n    toString() { return this.sliceString(0); }\n    /**\n    Convert the document to an array of lines (which can be\n    deserialized again via [`Text.of`](https://codemirror.net/6/docs/ref/#state.Text^of)).\n    */\n    toJSON() {\n        let lines = [];\n        this.flatten(lines);\n        return lines;\n    }\n    /**\n    @internal\n    */\n    constructor() { }\n    /**\n    Create a `Text` instance for the given array of lines.\n    */\n    static of(text) {\n        if (text.length == 0)\n            throw new RangeError(\"A document must have at least one line\");\n        if (text.length == 1 && !text[0])\n            return Text.empty;\n        return text.length <= 32 /* Tree.Branch */ ? new TextLeaf(text) : TextNode.from(TextLeaf.split(text, []));\n    }\n}\n// Leaves store an array of line strings. There are always line breaks\n// between these strings. Leaves are limited in size and have to be\n// contained in TextNode instances for bigger documents.\nclass TextLeaf extends Text {\n    constructor(text, length = textLength(text)) {\n        super();\n        this.text = text;\n        this.length = length;\n    }\n    get lines() { return this.text.length; }\n    get children() { return null; }\n    lineInner(target, isLine, line, offset) {\n        for (let i = 0;; i++) {\n            let string = this.text[i], end = offset + string.length;\n            if ((isLine ? line : end) >= target)\n                return new Line(offset, end, line, string);\n            offset = end + 1;\n            line++;\n        }\n    }\n    decompose(from, to, target, open) {\n        let text = from <= 0 && to >= this.length ? this\n            : new TextLeaf(sliceText(this.text, from, to), Math.min(to, this.length) - Math.max(0, from));\n        if (open & 1 /* Open.From */) {\n            let prev = target.pop();\n            let joined = appendText(text.text, prev.text.slice(), 0, text.length);\n            if (joined.length <= 32 /* Tree.Branch */) {\n                target.push(new TextLeaf(joined, prev.length + text.length));\n            }\n            else {\n                let mid = joined.length >> 1;\n                target.push(new TextLeaf(joined.slice(0, mid)), new TextLeaf(joined.slice(mid)));\n            }\n        }\n        else {\n            target.push(text);\n        }\n    }\n    replace(from, to, text) {\n        if (!(text instanceof TextLeaf))\n            return super.replace(from, to, text);\n        [from, to] = clip(this, from, to);\n        let lines = appendText(this.text, appendText(text.text, sliceText(this.text, 0, from)), to);\n        let newLen = this.length + text.length - (to - from);\n        if (lines.length <= 32 /* Tree.Branch */)\n            return new TextLeaf(lines, newLen);\n        return TextNode.from(TextLeaf.split(lines, []), newLen);\n    }\n    sliceString(from, to = this.length, lineSep = \"\\n\") {\n        [from, to] = clip(this, from, to);\n        let result = \"\";\n        for (let pos = 0, i = 0; pos <= to && i < this.text.length; i++) {\n            let line = this.text[i], end = pos + line.length;\n            if (pos > from && i)\n                result += lineSep;\n            if (from < end && to > pos)\n                result += line.slice(Math.max(0, from - pos), to - pos);\n            pos = end + 1;\n        }\n        return result;\n    }\n    flatten(target) {\n        for (let line of this.text)\n            target.push(line);\n    }\n    scanIdentical() { return 0; }\n    static split(text, target) {\n        let part = [], len = -1;\n        for (let line of text) {\n            part.push(line);\n            len += line.length + 1;\n            if (part.length == 32 /* Tree.Branch */) {\n                target.push(new TextLeaf(part, len));\n                part = [];\n                len = -1;\n            }\n        }\n        if (len > -1)\n            target.push(new TextLeaf(part, len));\n        return target;\n    }\n}\n// Nodes provide the tree structure of the `Text` type. They store a\n// number of other nodes or leaves, taking care to balance themselves\n// on changes. There are implied line breaks _between_ the children of\n// a node (but not before the first or after the last child).\nclass TextNode extends Text {\n    constructor(children, length) {\n        super();\n        this.children = children;\n        this.length = length;\n        this.lines = 0;\n        for (let child of children)\n            this.lines += child.lines;\n    }\n    lineInner(target, isLine, line, offset) {\n        for (let i = 0;; i++) {\n            let child = this.children[i], end = offset + child.length, endLine = line + child.lines - 1;\n            if ((isLine ? endLine : end) >= target)\n                return child.lineInner(target, isLine, line, offset);\n            offset = end + 1;\n            line = endLine + 1;\n        }\n    }\n    decompose(from, to, target, open) {\n        for (let i = 0, pos = 0; pos <= to && i < this.children.length; i++) {\n            let child = this.children[i], end = pos + child.length;\n            if (from <= end && to >= pos) {\n                let childOpen = open & ((pos <= from ? 1 /* Open.From */ : 0) | (end >= to ? 2 /* Open.To */ : 0));\n                if (pos >= from && end <= to && !childOpen)\n                    target.push(child);\n                else\n                    child.decompose(from - pos, to - pos, target, childOpen);\n            }\n            pos = end + 1;\n        }\n    }\n    replace(from, to, text) {\n        [from, to] = clip(this, from, to);\n        if (text.lines < this.lines)\n            for (let i = 0, pos = 0; i < this.children.length; i++) {\n                let child = this.children[i], end = pos + child.length;\n                // Fast path: if the change only affects one child and the\n                // child's size remains in the acceptable range, only update\n                // that child\n                if (from >= pos && to <= end) {\n                    let updated = child.replace(from - pos, to - pos, text);\n                    let totalLines = this.lines - child.lines + updated.lines;\n                    if (updated.lines < (totalLines >> (5 /* Tree.BranchShift */ - 1)) &&\n                        updated.lines > (totalLines >> (5 /* Tree.BranchShift */ + 1))) {\n                        let copy = this.children.slice();\n                        copy[i] = updated;\n                        return new TextNode(copy, this.length - (to - from) + text.length);\n                    }\n                    return super.replace(pos, end, updated);\n                }\n                pos = end + 1;\n            }\n        return super.replace(from, to, text);\n    }\n    sliceString(from, to = this.length, lineSep = \"\\n\") {\n        [from, to] = clip(this, from, to);\n        let result = \"\";\n        for (let i = 0, pos = 0; i < this.children.length && pos <= to; i++) {\n            let child = this.children[i], end = pos + child.length;\n            if (pos > from && i)\n                result += lineSep;\n            if (from < end && to > pos)\n                result += child.sliceString(from - pos, to - pos, lineSep);\n            pos = end + 1;\n        }\n        return result;\n    }\n    flatten(target) {\n        for (let child of this.children)\n            child.flatten(target);\n    }\n    scanIdentical(other, dir) {\n        if (!(other instanceof TextNode))\n            return 0;\n        let length = 0;\n        let [iA, iB, eA, eB] = dir > 0 ? [0, 0, this.children.length, other.children.length]\n            : [this.children.length - 1, other.children.length - 1, -1, -1];\n        for (;; iA += dir, iB += dir) {\n            if (iA == eA || iB == eB)\n                return length;\n            let chA = this.children[iA], chB = other.children[iB];\n            if (chA != chB)\n                return length + chA.scanIdentical(chB, dir);\n            length += chA.length + 1;\n        }\n    }\n    static from(children, length = children.reduce((l, ch) => l + ch.length + 1, -1)) {\n        let lines = 0;\n        for (let ch of children)\n            lines += ch.lines;\n        if (lines < 32 /* Tree.Branch */) {\n            let flat = [];\n            for (let ch of children)\n                ch.flatten(flat);\n            return new TextLeaf(flat, length);\n        }\n        let chunk = Math.max(32 /* Tree.Branch */, lines >> 5 /* Tree.BranchShift */), maxChunk = chunk << 1, minChunk = chunk >> 1;\n        let chunked = [], currentLines = 0, currentLen = -1, currentChunk = [];\n        function add(child) {\n            let last;\n            if (child.lines > maxChunk && child instanceof TextNode) {\n                for (let node of child.children)\n                    add(node);\n            }\n            else if (child.lines > minChunk && (currentLines > minChunk || !currentLines)) {\n                flush();\n                chunked.push(child);\n            }\n            else if (child instanceof TextLeaf && currentLines &&\n                (last = currentChunk[currentChunk.length - 1]) instanceof TextLeaf &&\n                child.lines + last.lines <= 32 /* Tree.Branch */) {\n                currentLines += child.lines;\n                currentLen += child.length + 1;\n                currentChunk[currentChunk.length - 1] = new TextLeaf(last.text.concat(child.text), last.length + 1 + child.length);\n            }\n            else {\n                if (currentLines + child.lines > chunk)\n                    flush();\n                currentLines += child.lines;\n                currentLen += child.length + 1;\n                currentChunk.push(child);\n            }\n        }\n        function flush() {\n            if (currentLines == 0)\n                return;\n            chunked.push(currentChunk.length == 1 ? currentChunk[0] : TextNode.from(currentChunk, currentLen));\n            currentLen = -1;\n            currentLines = currentChunk.length = 0;\n        }\n        for (let child of children)\n            add(child);\n        flush();\n        return chunked.length == 1 ? chunked[0] : new TextNode(chunked, length);\n    }\n}\nText.empty = /*@__PURE__*/new TextLeaf([\"\"], 0);\nfunction textLength(text) {\n    let length = -1;\n    for (let line of text)\n        length += line.length + 1;\n    return length;\n}\nfunction appendText(text, target, from = 0, to = 1e9) {\n    for (let pos = 0, i = 0, first = true; i < text.length && pos <= to; i++) {\n        let line = text[i], end = pos + line.length;\n        if (end >= from) {\n            if (end > to)\n                line = line.slice(0, to - pos);\n            if (pos < from)\n                line = line.slice(from - pos);\n            if (first) {\n                target[target.length - 1] += line;\n                first = false;\n            }\n            else\n                target.push(line);\n        }\n        pos = end + 1;\n    }\n    return target;\n}\nfunction sliceText(text, from, to) {\n    return appendText(text, [\"\"], from, to);\n}\nclass RawTextCursor {\n    constructor(text, dir = 1) {\n        this.dir = dir;\n        this.done = false;\n        this.lineBreak = false;\n        this.value = \"\";\n        this.nodes = [text];\n        this.offsets = [dir > 0 ? 1 : (text instanceof TextLeaf ? text.text.length : text.children.length) << 1];\n    }\n    nextInner(skip, dir) {\n        this.done = this.lineBreak = false;\n        for (;;) {\n            let last = this.nodes.length - 1;\n            let top = this.nodes[last], offsetValue = this.offsets[last], offset = offsetValue >> 1;\n            let size = top instanceof TextLeaf ? top.text.length : top.children.length;\n            if (offset == (dir > 0 ? size : 0)) {\n                if (last == 0) {\n                    this.done = true;\n                    this.value = \"\";\n                    return this;\n                }\n                if (dir > 0)\n                    this.offsets[last - 1]++;\n                this.nodes.pop();\n                this.offsets.pop();\n            }\n            else if ((offsetValue & 1) == (dir > 0 ? 0 : 1)) {\n                this.offsets[last] += dir;\n                if (skip == 0) {\n                    this.lineBreak = true;\n                    this.value = \"\\n\";\n                    return this;\n                }\n                skip--;\n            }\n            else if (top instanceof TextLeaf) {\n                // Move to the next string\n                let next = top.text[offset + (dir < 0 ? -1 : 0)];\n                this.offsets[last] += dir;\n                if (next.length > Math.max(0, skip)) {\n                    this.value = skip == 0 ? next : dir > 0 ? next.slice(skip) : next.slice(0, next.length - skip);\n                    return this;\n                }\n                skip -= next.length;\n            }\n            else {\n                let next = top.children[offset + (dir < 0 ? -1 : 0)];\n                if (skip > next.length) {\n                    skip -= next.length;\n                    this.offsets[last] += dir;\n                }\n                else {\n                    if (dir < 0)\n                        this.offsets[last]--;\n                    this.nodes.push(next);\n                    this.offsets.push(dir > 0 ? 1 : (next instanceof TextLeaf ? next.text.length : next.children.length) << 1);\n                }\n            }\n        }\n    }\n    next(skip = 0) {\n        if (skip < 0) {\n            this.nextInner(-skip, (-this.dir));\n            skip = this.value.length;\n        }\n        return this.nextInner(skip, this.dir);\n    }\n}\nclass PartialTextCursor {\n    constructor(text, start, end) {\n        this.value = \"\";\n        this.done = false;\n        this.cursor = new RawTextCursor(text, start > end ? -1 : 1);\n        this.pos = start > end ? text.length : 0;\n        this.from = Math.min(start, end);\n        this.to = Math.max(start, end);\n    }\n    nextInner(skip, dir) {\n        if (dir < 0 ? this.pos <= this.from : this.pos >= this.to) {\n            this.value = \"\";\n            this.done = true;\n            return this;\n        }\n        skip += Math.max(0, dir < 0 ? this.pos - this.to : this.from - this.pos);\n        let limit = dir < 0 ? this.pos - this.from : this.to - this.pos;\n        if (skip > limit)\n            skip = limit;\n        limit -= skip;\n        let { value } = this.cursor.next(skip);\n        this.pos += (value.length + skip) * dir;\n        this.value = value.length <= limit ? value : dir < 0 ? value.slice(value.length - limit) : value.slice(0, limit);\n        this.done = !this.value;\n        return this;\n    }\n    next(skip = 0) {\n        if (skip < 0)\n            skip = Math.max(skip, this.from - this.pos);\n        else if (skip > 0)\n            skip = Math.min(skip, this.to - this.pos);\n        return this.nextInner(skip, this.cursor.dir);\n    }\n    get lineBreak() { return this.cursor.lineBreak && this.value != \"\"; }\n}\nclass LineCursor {\n    constructor(inner) {\n        this.inner = inner;\n        this.afterBreak = true;\n        this.value = \"\";\n        this.done = false;\n    }\n    next(skip = 0) {\n        let { done, lineBreak, value } = this.inner.next(skip);\n        if (done && this.afterBreak) {\n            this.value = \"\";\n            this.afterBreak = false;\n        }\n        else if (done) {\n            this.done = true;\n            this.value = \"\";\n        }\n        else if (lineBreak) {\n            if (this.afterBreak) {\n                this.value = \"\";\n            }\n            else {\n                this.afterBreak = true;\n                this.next();\n            }\n        }\n        else {\n            this.value = value;\n            this.afterBreak = false;\n        }\n        return this;\n    }\n    get lineBreak() { return false; }\n}\nif (typeof Symbol != \"undefined\") {\n    Text.prototype[Symbol.iterator] = function () { return this.iter(); };\n    RawTextCursor.prototype[Symbol.iterator] = PartialTextCursor.prototype[Symbol.iterator] =\n        LineCursor.prototype[Symbol.iterator] = function () { return this; };\n}\n/**\nThis type describes a line in the document. It is created\non-demand when lines are [queried](https://codemirror.net/6/docs/ref/#state.Text.lineAt).\n*/\nclass Line {\n    /**\n    @internal\n    */\n    constructor(\n    /**\n    The position of the start of the line.\n    */\n    from, \n    /**\n    The position at the end of the line (_before_ the line break,\n    or at the end of document for the last line).\n    */\n    to, \n    /**\n    This line's line number (1-based).\n    */\n    number, \n    /**\n    The line's content.\n    */\n    text) {\n        this.from = from;\n        this.to = to;\n        this.number = number;\n        this.text = text;\n    }\n    /**\n    The length of the line (not including any line break after it).\n    */\n    get length() { return this.to - this.from; }\n}\nfunction clip(text, from, to) {\n    from = Math.max(0, Math.min(text.length, from));\n    return [from, Math.max(from, Math.min(text.length, to))];\n}\n\n/**\nReturns a next grapheme cluster break _after_ (not equal to)\n`pos`, if `forward` is true, or before otherwise. Returns `pos`\nitself if no further cluster break is available in the string.\nMoves across surrogate pairs, extending characters (when\n`includeExtending` is true), characters joined with zero-width\njoiners, and flag emoji.\n*/\nfunction findClusterBreak(str, pos, forward = true, includeExtending = true) {\n    return findClusterBreak$1(str, pos, forward, includeExtending);\n}\nfunction surrogateLow(ch) { return ch >= 0xDC00 && ch < 0xE000; }\nfunction surrogateHigh(ch) { return ch >= 0xD800 && ch < 0xDC00; }\n/**\nFind the code point at the given position in a string (like the\n[`codePointAt`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/codePointAt)\nstring method).\n*/\nfunction codePointAt(str, pos) {\n    let code0 = str.charCodeAt(pos);\n    if (!surrogateHigh(code0) || pos + 1 == str.length)\n        return code0;\n    let code1 = str.charCodeAt(pos + 1);\n    if (!surrogateLow(code1))\n        return code0;\n    return ((code0 - 0xd800) << 10) + (code1 - 0xdc00) + 0x10000;\n}\n/**\nGiven a Unicode codepoint, return the JavaScript string that\nrespresents it (like\n[`String.fromCodePoint`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fromCodePoint)).\n*/\nfunction fromCodePoint(code) {\n    if (code <= 0xffff)\n        return String.fromCharCode(code);\n    code -= 0x10000;\n    return String.fromCharCode((code >> 10) + 0xd800, (code & 1023) + 0xdc00);\n}\n/**\nThe amount of positions a character takes up in a JavaScript string.\n*/\nfunction codePointSize(code) { return code < 0x10000 ? 1 : 2; }\n\nconst DefaultSplit = /\\r\\n?|\\n/;\n/**\nDistinguishes different ways in which positions can be mapped.\n*/\nvar MapMode = /*@__PURE__*/(function (MapMode) {\n    /**\n    Map a position to a valid new position, even when its context\n    was deleted.\n    */\n    MapMode[MapMode[\"Simple\"] = 0] = \"Simple\";\n    /**\n    Return null if deletion happens across the position.\n    */\n    MapMode[MapMode[\"TrackDel\"] = 1] = \"TrackDel\";\n    /**\n    Return null if the character _before_ the position is deleted.\n    */\n    MapMode[MapMode[\"TrackBefore\"] = 2] = \"TrackBefore\";\n    /**\n    Return null if the character _after_ the position is deleted.\n    */\n    MapMode[MapMode[\"TrackAfter\"] = 3] = \"TrackAfter\";\nreturn MapMode})(MapMode || (MapMode = {}));\n/**\nA change description is a variant of [change set](https://codemirror.net/6/docs/ref/#state.ChangeSet)\nthat doesn't store the inserted text. As such, it can't be\napplied, but is cheaper to store and manipulate.\n*/\nclass ChangeDesc {\n    // Sections are encoded as pairs of integers. The first is the\n    // length in the current document, and the second is -1 for\n    // unaffected sections, and the length of the replacement content\n    // otherwise. So an insertion would be (0, n>0), a deletion (n>0,\n    // 0), and a replacement two positive numbers.\n    /**\n    @internal\n    */\n    constructor(\n    /**\n    @internal\n    */\n    sections) {\n        this.sections = sections;\n    }\n    /**\n    The length of the document before the change.\n    */\n    get length() {\n        let result = 0;\n        for (let i = 0; i < this.sections.length; i += 2)\n            result += this.sections[i];\n        return result;\n    }\n    /**\n    The length of the document after the change.\n    */\n    get newLength() {\n        let result = 0;\n        for (let i = 0; i < this.sections.length; i += 2) {\n            let ins = this.sections[i + 1];\n            result += ins < 0 ? this.sections[i] : ins;\n        }\n        return result;\n    }\n    /**\n    False when there are actual changes in this set.\n    */\n    get empty() { return this.sections.length == 0 || this.sections.length == 2 && this.sections[1] < 0; }\n    /**\n    Iterate over the unchanged parts left by these changes. `posA`\n    provides the position of the range in the old document, `posB`\n    the new position in the changed document.\n    */\n    iterGaps(f) {\n        for (let i = 0, posA = 0, posB = 0; i < this.sections.length;) {\n            let len = this.sections[i++], ins = this.sections[i++];\n            if (ins < 0) {\n                f(posA, posB, len);\n                posB += len;\n            }\n            else {\n                posB += ins;\n            }\n            posA += len;\n        }\n    }\n    /**\n    Iterate over the ranges changed by these changes. (See\n    [`ChangeSet.iterChanges`](https://codemirror.net/6/docs/ref/#state.ChangeSet.iterChanges) for a\n    variant that also provides you with the inserted text.)\n    `fromA`/`toA` provides the extent of the change in the starting\n    document, `fromB`/`toB` the extent of the replacement in the\n    changed document.\n    \n    When `individual` is true, adjacent changes (which are kept\n    separate for [position mapping](https://codemirror.net/6/docs/ref/#state.ChangeDesc.mapPos)) are\n    reported separately.\n    */\n    iterChangedRanges(f, individual = false) {\n        iterChanges(this, f, individual);\n    }\n    /**\n    Get a description of the inverted form of these changes.\n    */\n    get invertedDesc() {\n        let sections = [];\n        for (let i = 0; i < this.sections.length;) {\n            let len = this.sections[i++], ins = this.sections[i++];\n            if (ins < 0)\n                sections.push(len, ins);\n            else\n                sections.push(ins, len);\n        }\n        return new ChangeDesc(sections);\n    }\n    /**\n    Compute the combined effect of applying another set of changes\n    after this one. The length of the document after this set should\n    match the length before `other`.\n    */\n    composeDesc(other) { return this.empty ? other : other.empty ? this : composeSets(this, other); }\n    /**\n    Map this description, which should start with the same document\n    as `other`, over another set of changes, so that it can be\n    applied after it. When `before` is true, map as if the changes\n    in `this` happened before the ones in `other`.\n    */\n    mapDesc(other, before = false) { return other.empty ? this : mapSet(this, other, before); }\n    mapPos(pos, assoc = -1, mode = MapMode.Simple) {\n        let posA = 0, posB = 0;\n        for (let i = 0; i < this.sections.length;) {\n            let len = this.sections[i++], ins = this.sections[i++], endA = posA + len;\n            if (ins < 0) {\n                if (endA > pos)\n                    return posB + (pos - posA);\n                posB += len;\n            }\n            else {\n                if (mode != MapMode.Simple && endA >= pos &&\n                    (mode == MapMode.TrackDel && posA < pos && endA > pos ||\n                        mode == MapMode.TrackBefore && posA < pos ||\n                        mode == MapMode.TrackAfter && endA > pos))\n                    return null;\n                if (endA > pos || endA == pos && assoc < 0 && !len)\n                    return pos == posA || assoc < 0 ? posB : posB + ins;\n                posB += ins;\n            }\n            posA = endA;\n        }\n        if (pos > posA)\n            throw new RangeError(`Position ${pos} is out of range for changeset of length ${posA}`);\n        return posB;\n    }\n    /**\n    Check whether these changes touch a given range. When one of the\n    changes entirely covers the range, the string `\"cover\"` is\n    returned.\n    */\n    touchesRange(from, to = from) {\n        for (let i = 0, pos = 0; i < this.sections.length && pos <= to;) {\n            let len = this.sections[i++], ins = this.sections[i++], end = pos + len;\n            if (ins >= 0 && pos <= to && end >= from)\n                return pos < from && end > to ? \"cover\" : true;\n            pos = end;\n        }\n        return false;\n    }\n    /**\n    @internal\n    */\n    toString() {\n        let result = \"\";\n        for (let i = 0; i < this.sections.length;) {\n            let len = this.sections[i++], ins = this.sections[i++];\n            result += (result ? \" \" : \"\") + len + (ins >= 0 ? \":\" + ins : \"\");\n        }\n        return result;\n    }\n    /**\n    Serialize this change desc to a JSON-representable value.\n    */\n    toJSON() { return this.sections; }\n    /**\n    Create a change desc from its JSON representation (as produced\n    by [`toJSON`](https://codemirror.net/6/docs/ref/#state.ChangeDesc.toJSON).\n    */\n    static fromJSON(json) {\n        if (!Array.isArray(json) || json.length % 2 || json.some(a => typeof a != \"number\"))\n            throw new RangeError(\"Invalid JSON representation of ChangeDesc\");\n        return new ChangeDesc(json);\n    }\n    /**\n    @internal\n    */\n    static create(sections) { return new ChangeDesc(sections); }\n}\n/**\nA change set represents a group of modifications to a document. It\nstores the document length, and can only be applied to documents\nwith exactly that length.\n*/\nclass ChangeSet extends ChangeDesc {\n    constructor(sections, \n    /**\n    @internal\n    */\n    inserted) {\n        super(sections);\n        this.inserted = inserted;\n    }\n    /**\n    Apply the changes to a document, returning the modified\n    document.\n    */\n    apply(doc) {\n        if (this.length != doc.length)\n            throw new RangeError(\"Applying change set to a document with the wrong length\");\n        iterChanges(this, (fromA, toA, fromB, _toB, text) => doc = doc.replace(fromB, fromB + (toA - fromA), text), false);\n        return doc;\n    }\n    mapDesc(other, before = false) { return mapSet(this, other, before, true); }\n    /**\n    Given the document as it existed _before_ the changes, return a\n    change set that represents the inverse of this set, which could\n    be used to go from the document created by the changes back to\n    the document as it existed before the changes.\n    */\n    invert(doc) {\n        let sections = this.sections.slice(), inserted = [];\n        for (let i = 0, pos = 0; i < sections.length; i += 2) {\n            let len = sections[i], ins = sections[i + 1];\n            if (ins >= 0) {\n                sections[i] = ins;\n                sections[i + 1] = len;\n                let index = i >> 1;\n                while (inserted.length < index)\n                    inserted.push(Text.empty);\n                inserted.push(len ? doc.slice(pos, pos + len) : Text.empty);\n            }\n            pos += len;\n        }\n        return new ChangeSet(sections, inserted);\n    }\n    /**\n    Combine two subsequent change sets into a single set. `other`\n    must start in the document produced by `this`. If `this` goes\n    `docA` → `docB` and `other` represents `docB` → `docC`, the\n    returned value will represent the change `docA` → `docC`.\n    */\n    compose(other) { return this.empty ? other : other.empty ? this : composeSets(this, other, true); }\n    /**\n    Given another change set starting in the same document, maps this\n    change set over the other, producing a new change set that can be\n    applied to the document produced by applying `other`. When\n    `before` is `true`, order changes as if `this` comes before\n    `other`, otherwise (the default) treat `other` as coming first.\n    \n    Given two changes `A` and `B`, `A.compose(B.map(A))` and\n    `B.compose(A.map(B, true))` will produce the same document. This\n    provides a basic form of [operational\n    transformation](https://en.wikipedia.org/wiki/Operational_transformation),\n    and can be used for collaborative editing.\n    */\n    map(other, before = false) { return other.empty ? this : mapSet(this, other, before, true); }\n    /**\n    Iterate over the changed ranges in the document, calling `f` for\n    each, with the range in the original document (`fromA`-`toA`)\n    and the range that replaces it in the new document\n    (`fromB`-`toB`).\n    \n    When `individual` is true, adjacent changes are reported\n    separately.\n    */\n    iterChanges(f, individual = false) {\n        iterChanges(this, f, individual);\n    }\n    /**\n    Get a [change description](https://codemirror.net/6/docs/ref/#state.ChangeDesc) for this change\n    set.\n    */\n    get desc() { return ChangeDesc.create(this.sections); }\n    /**\n    @internal\n    */\n    filter(ranges) {\n        let resultSections = [], resultInserted = [], filteredSections = [];\n        let iter = new SectionIter(this);\n        done: for (let i = 0, pos = 0;;) {\n            let next = i == ranges.length ? 1e9 : ranges[i++];\n            while (pos < next || pos == next && iter.len == 0) {\n                if (iter.done)\n                    break done;\n                let len = Math.min(iter.len, next - pos);\n                addSection(filteredSections, len, -1);\n                let ins = iter.ins == -1 ? -1 : iter.off == 0 ? iter.ins : 0;\n                addSection(resultSections, len, ins);\n                if (ins > 0)\n                    addInsert(resultInserted, resultSections, iter.text);\n                iter.forward(len);\n                pos += len;\n            }\n            let end = ranges[i++];\n            while (pos < end) {\n                if (iter.done)\n                    break done;\n                let len = Math.min(iter.len, end - pos);\n                addSection(resultSections, len, -1);\n                addSection(filteredSections, len, iter.ins == -1 ? -1 : iter.off == 0 ? iter.ins : 0);\n                iter.forward(len);\n                pos += len;\n            }\n        }\n        return { changes: new ChangeSet(resultSections, resultInserted),\n            filtered: ChangeDesc.create(filteredSections) };\n    }\n    /**\n    Serialize this change set to a JSON-representable value.\n    */\n    toJSON() {\n        let parts = [];\n        for (let i = 0; i < this.sections.length; i += 2) {\n            let len = this.sections[i], ins = this.sections[i + 1];\n            if (ins < 0)\n                parts.push(len);\n            else if (ins == 0)\n                parts.push([len]);\n            else\n                parts.push([len].concat(this.inserted[i >> 1].toJSON()));\n        }\n        return parts;\n    }\n    /**\n    Create a change set for the given changes, for a document of the\n    given length, using `lineSep` as line separator.\n    */\n    static of(changes, length, lineSep) {\n        let sections = [], inserted = [], pos = 0;\n        let total = null;\n        function flush(force = false) {\n            if (!force && !sections.length)\n                return;\n            if (pos < length)\n                addSection(sections, length - pos, -1);\n            let set = new ChangeSet(sections, inserted);\n            total = total ? total.compose(set.map(total)) : set;\n            sections = [];\n            inserted = [];\n            pos = 0;\n        }\n        function process(spec) {\n            if (Array.isArray(spec)) {\n                for (let sub of spec)\n                    process(sub);\n            }\n            else if (spec instanceof ChangeSet) {\n                if (spec.length != length)\n                    throw new RangeError(`Mismatched change set length (got ${spec.length}, expected ${length})`);\n                flush();\n                total = total ? total.compose(spec.map(total)) : spec;\n            }\n            else {\n                let { from, to = from, insert } = spec;\n                if (from > to || from < 0 || to > length)\n                    throw new RangeError(`Invalid change range ${from} to ${to} (in doc of length ${length})`);\n                let insText = !insert ? Text.empty : typeof insert == \"string\" ? Text.of(insert.split(lineSep || DefaultSplit)) : insert;\n                let insLen = insText.length;\n                if (from == to && insLen == 0)\n                    return;\n                if (from < pos)\n                    flush();\n                if (from > pos)\n                    addSection(sections, from - pos, -1);\n                addSection(sections, to - from, insLen);\n                addInsert(inserted, sections, insText);\n                pos = to;\n            }\n        }\n        process(changes);\n        flush(!total);\n        return total;\n    }\n    /**\n    Create an empty changeset of the given length.\n    */\n    static empty(length) {\n        return new ChangeSet(length ? [length, -1] : [], []);\n    }\n    /**\n    Create a changeset from its JSON representation (as produced by\n    [`toJSON`](https://codemirror.net/6/docs/ref/#state.ChangeSet.toJSON).\n    */\n    static fromJSON(json) {\n        if (!Array.isArray(json))\n            throw new RangeError(\"Invalid JSON representation of ChangeSet\");\n        let sections = [], inserted = [];\n        for (let i = 0; i < json.length; i++) {\n            let part = json[i];\n            if (typeof part == \"number\") {\n                sections.push(part, -1);\n            }\n            else if (!Array.isArray(part) || typeof part[0] != \"number\" || part.some((e, i) => i && typeof e != \"string\")) {\n                throw new RangeError(\"Invalid JSON representation of ChangeSet\");\n            }\n            else if (part.length == 1) {\n                sections.push(part[0], 0);\n            }\n            else {\n                while (inserted.length < i)\n                    inserted.push(Text.empty);\n                inserted[i] = Text.of(part.slice(1));\n                sections.push(part[0], inserted[i].length);\n            }\n        }\n        return new ChangeSet(sections, inserted);\n    }\n    /**\n    @internal\n    */\n    static createSet(sections, inserted) {\n        return new ChangeSet(sections, inserted);\n    }\n}\nfunction addSection(sections, len, ins, forceJoin = false) {\n    if (len == 0 && ins <= 0)\n        return;\n    let last = sections.length - 2;\n    if (last >= 0 && ins <= 0 && ins == sections[last + 1])\n        sections[last] += len;\n    else if (last >= 0 && len == 0 && sections[last] == 0)\n        sections[last + 1] += ins;\n    else if (forceJoin) {\n        sections[last] += len;\n        sections[last + 1] += ins;\n    }\n    else\n        sections.push(len, ins);\n}\nfunction addInsert(values, sections, value) {\n    if (value.length == 0)\n        return;\n    let index = (sections.length - 2) >> 1;\n    if (index < values.length) {\n        values[values.length - 1] = values[values.length - 1].append(value);\n    }\n    else {\n        while (values.length < index)\n            values.push(Text.empty);\n        values.push(value);\n    }\n}\nfunction iterChanges(desc, f, individual) {\n    let inserted = desc.inserted;\n    for (let posA = 0, posB = 0, i = 0; i < desc.sections.length;) {\n        let len = desc.sections[i++], ins = desc.sections[i++];\n        if (ins < 0) {\n            posA += len;\n            posB += len;\n        }\n        else {\n            let endA = posA, endB = posB, text = Text.empty;\n            for (;;) {\n                endA += len;\n                endB += ins;\n                if (ins && inserted)\n                    text = text.append(inserted[(i - 2) >> 1]);\n                if (individual || i == desc.sections.length || desc.sections[i + 1] < 0)\n                    break;\n                len = desc.sections[i++];\n                ins = desc.sections[i++];\n            }\n            f(posA, endA, posB, endB, text);\n            posA = endA;\n            posB = endB;\n        }\n    }\n}\nfunction mapSet(setA, setB, before, mkSet = false) {\n    // Produce a copy of setA that applies to the document after setB\n    // has been applied (assuming both start at the same document).\n    let sections = [], insert = mkSet ? [] : null;\n    let a = new SectionIter(setA), b = new SectionIter(setB);\n    // Iterate over both sets in parallel. inserted tracks, for changes\n    // in A that have to be processed piece-by-piece, whether their\n    // content has been inserted already, and refers to the section\n    // index.\n    for (let inserted = -1;;) {\n        if (a.done && b.len || b.done && a.len) {\n            throw new Error(\"Mismatched change set lengths\");\n        }\n        else if (a.ins == -1 && b.ins == -1) {\n            // Move across ranges skipped by both sets.\n            let len = Math.min(a.len, b.len);\n            addSection(sections, len, -1);\n            a.forward(len);\n            b.forward(len);\n        }\n        else if (b.ins >= 0 && (a.ins < 0 || inserted == a.i || a.off == 0 && (b.len < a.len || b.len == a.len && !before))) {\n            // If there's a change in B that comes before the next change in\n            // A (ordered by start pos, then len, then before flag), skip\n            // that (and process any changes in A it covers).\n            let len = b.len;\n            addSection(sections, b.ins, -1);\n            while (len) {\n                let piece = Math.min(a.len, len);\n                if (a.ins >= 0 && inserted < a.i && a.len <= piece) {\n                    addSection(sections, 0, a.ins);\n                    if (insert)\n                        addInsert(insert, sections, a.text);\n                    inserted = a.i;\n                }\n                a.forward(piece);\n                len -= piece;\n            }\n            b.next();\n        }\n        else if (a.ins >= 0) {\n            // Process the part of a change in A up to the start of the next\n            // non-deletion change in B (if overlapping).\n            let len = 0, left = a.len;\n            while (left) {\n                if (b.ins == -1) {\n                    let piece = Math.min(left, b.len);\n                    len += piece;\n                    left -= piece;\n                    b.forward(piece);\n                }\n                else if (b.ins == 0 && b.len < left) {\n                    left -= b.len;\n                    b.next();\n                }\n                else {\n                    break;\n                }\n            }\n            addSection(sections, len, inserted < a.i ? a.ins : 0);\n            if (insert && inserted < a.i)\n                addInsert(insert, sections, a.text);\n            inserted = a.i;\n            a.forward(a.len - left);\n        }\n        else if (a.done && b.done) {\n            return insert ? ChangeSet.createSet(sections, insert) : ChangeDesc.create(sections);\n        }\n        else {\n            throw new Error(\"Mismatched change set lengths\");\n        }\n    }\n}\nfunction composeSets(setA, setB, mkSet = false) {\n    let sections = [];\n    let insert = mkSet ? [] : null;\n    let a = new SectionIter(setA), b = new SectionIter(setB);\n    for (let open = false;;) {\n        if (a.done && b.done) {\n            return insert ? ChangeSet.createSet(sections, insert) : ChangeDesc.create(sections);\n        }\n        else if (a.ins == 0) { // Deletion in A\n            addSection(sections, a.len, 0, open);\n            a.next();\n        }\n        else if (b.len == 0 && !b.done) { // Insertion in B\n            addSection(sections, 0, b.ins, open);\n            if (insert)\n                addInsert(insert, sections, b.text);\n            b.next();\n        }\n        else if (a.done || b.done) {\n            throw new Error(\"Mismatched change set lengths\");\n        }\n        else {\n            let len = Math.min(a.len2, b.len), sectionLen = sections.length;\n            if (a.ins == -1) {\n                let insB = b.ins == -1 ? -1 : b.off ? 0 : b.ins;\n                addSection(sections, len, insB, open);\n                if (insert && insB)\n                    addInsert(insert, sections, b.text);\n            }\n            else if (b.ins == -1) {\n                addSection(sections, a.off ? 0 : a.len, len, open);\n                if (insert)\n                    addInsert(insert, sections, a.textBit(len));\n            }\n            else {\n                addSection(sections, a.off ? 0 : a.len, b.off ? 0 : b.ins, open);\n                if (insert && !b.off)\n                    addInsert(insert, sections, b.text);\n            }\n            open = (a.ins > len || b.ins >= 0 && b.len > len) && (open || sections.length > sectionLen);\n            a.forward2(len);\n            b.forward(len);\n        }\n    }\n}\nclass SectionIter {\n    constructor(set) {\n        this.set = set;\n        this.i = 0;\n        this.next();\n    }\n    next() {\n        let { sections } = this.set;\n        if (this.i < sections.length) {\n            this.len = sections[this.i++];\n            this.ins = sections[this.i++];\n        }\n        else {\n            this.len = 0;\n            this.ins = -2;\n        }\n        this.off = 0;\n    }\n    get done() { return this.ins == -2; }\n    get len2() { return this.ins < 0 ? this.len : this.ins; }\n    get text() {\n        let { inserted } = this.set, index = (this.i - 2) >> 1;\n        return index >= inserted.length ? Text.empty : inserted[index];\n    }\n    textBit(len) {\n        let { inserted } = this.set, index = (this.i - 2) >> 1;\n        return index >= inserted.length && !len ? Text.empty\n            : inserted[index].slice(this.off, len == null ? undefined : this.off + len);\n    }\n    forward(len) {\n        if (len == this.len)\n            this.next();\n        else {\n            this.len -= len;\n            this.off += len;\n        }\n    }\n    forward2(len) {\n        if (this.ins == -1)\n            this.forward(len);\n        else if (len == this.ins)\n            this.next();\n        else {\n            this.ins -= len;\n            this.off += len;\n        }\n    }\n}\n\n/**\nA single selection range. When\n[`allowMultipleSelections`](https://codemirror.net/6/docs/ref/#state.EditorState^allowMultipleSelections)\nis enabled, a [selection](https://codemirror.net/6/docs/ref/#state.EditorSelection) may hold\nmultiple ranges. By default, selections hold exactly one range.\n*/\nclass SelectionRange {\n    constructor(\n    /**\n    The lower boundary of the range.\n    */\n    from, \n    /**\n    The upper boundary of the range.\n    */\n    to, flags) {\n        this.from = from;\n        this.to = to;\n        this.flags = flags;\n    }\n    /**\n    The anchor of the range—the side that doesn't move when you\n    extend it.\n    */\n    get anchor() { return this.flags & 32 /* RangeFlag.Inverted */ ? this.to : this.from; }\n    /**\n    The head of the range, which is moved when the range is\n    [extended](https://codemirror.net/6/docs/ref/#state.SelectionRange.extend).\n    */\n    get head() { return this.flags & 32 /* RangeFlag.Inverted */ ? this.from : this.to; }\n    /**\n    True when `anchor` and `head` are at the same position.\n    */\n    get empty() { return this.from == this.to; }\n    /**\n    If this is a cursor that is explicitly associated with the\n    character on one of its sides, this returns the side. -1 means\n    the character before its position, 1 the character after, and 0\n    means no association.\n    */\n    get assoc() { return this.flags & 8 /* RangeFlag.AssocBefore */ ? -1 : this.flags & 16 /* RangeFlag.AssocAfter */ ? 1 : 0; }\n    /**\n    The bidirectional text level associated with this cursor, if\n    any.\n    */\n    get bidiLevel() {\n        let level = this.flags & 7 /* RangeFlag.BidiLevelMask */;\n        return level == 7 ? null : level;\n    }\n    /**\n    The goal column (stored vertical offset) associated with a\n    cursor. This is used to preserve the vertical position when\n    [moving](https://codemirror.net/6/docs/ref/#view.EditorView.moveVertically) across\n    lines of different length.\n    */\n    get goalColumn() {\n        let value = this.flags >> 6 /* RangeFlag.GoalColumnOffset */;\n        return value == 16777215 /* RangeFlag.NoGoalColumn */ ? undefined : value;\n    }\n    /**\n    Map this range through a change, producing a valid range in the\n    updated document.\n    */\n    map(change, assoc = -1) {\n        let from, to;\n        if (this.empty) {\n            from = to = change.mapPos(this.from, assoc);\n        }\n        else {\n            from = change.mapPos(this.from, 1);\n            to = change.mapPos(this.to, -1);\n        }\n        return from == this.from && to == this.to ? this : new SelectionRange(from, to, this.flags);\n    }\n    /**\n    Extend this range to cover at least `from` to `to`.\n    */\n    extend(from, to = from) {\n        if (from <= this.anchor && to >= this.anchor)\n            return EditorSelection.range(from, to);\n        let head = Math.abs(from - this.anchor) > Math.abs(to - this.anchor) ? from : to;\n        return EditorSelection.range(this.anchor, head);\n    }\n    /**\n    Compare this range to another range.\n    */\n    eq(other, includeAssoc = false) {\n        return this.anchor == other.anchor && this.head == other.head &&\n            (!includeAssoc || !this.empty || this.assoc == other.assoc);\n    }\n    /**\n    Return a JSON-serializable object representing the range.\n    */\n    toJSON() { return { anchor: this.anchor, head: this.head }; }\n    /**\n    Convert a JSON representation of a range to a `SelectionRange`\n    instance.\n    */\n    static fromJSON(json) {\n        if (!json || typeof json.anchor != \"number\" || typeof json.head != \"number\")\n            throw new RangeError(\"Invalid JSON representation for SelectionRange\");\n        return EditorSelection.range(json.anchor, json.head);\n    }\n    /**\n    @internal\n    */\n    static create(from, to, flags) {\n        return new SelectionRange(from, to, flags);\n    }\n}\n/**\nAn editor selection holds one or more selection ranges.\n*/\nclass EditorSelection {\n    constructor(\n    /**\n    The ranges in the selection, sorted by position. Ranges cannot\n    overlap (but they may touch, if they aren't empty).\n    */\n    ranges, \n    /**\n    The index of the _main_ range in the selection (which is\n    usually the range that was added last).\n    */\n    mainIndex) {\n        this.ranges = ranges;\n        this.mainIndex = mainIndex;\n    }\n    /**\n    Map a selection through a change. Used to adjust the selection\n    position for changes.\n    */\n    map(change, assoc = -1) {\n        if (change.empty)\n            return this;\n        return EditorSelection.create(this.ranges.map(r => r.map(change, assoc)), this.mainIndex);\n    }\n    /**\n    Compare this selection to another selection. By default, ranges\n    are compared only by position. When `includeAssoc` is true,\n    cursor ranges must also have the same\n    [`assoc`](https://codemirror.net/6/docs/ref/#state.SelectionRange.assoc) value.\n    */\n    eq(other, includeAssoc = false) {\n        if (this.ranges.length != other.ranges.length ||\n            this.mainIndex != other.mainIndex)\n            return false;\n        for (let i = 0; i < this.ranges.length; i++)\n            if (!this.ranges[i].eq(other.ranges[i], includeAssoc))\n                return false;\n        return true;\n    }\n    /**\n    Get the primary selection range. Usually, you should make sure\n    your code applies to _all_ ranges, by using methods like\n    [`changeByRange`](https://codemirror.net/6/docs/ref/#state.EditorState.changeByRange).\n    */\n    get main() { return this.ranges[this.mainIndex]; }\n    /**\n    Make sure the selection only has one range. Returns a selection\n    holding only the main range from this selection.\n    */\n    asSingle() {\n        return this.ranges.length == 1 ? this : new EditorSelection([this.main], 0);\n    }\n    /**\n    Extend this selection with an extra range.\n    */\n    addRange(range, main = true) {\n        return EditorSelection.create([range].concat(this.ranges), main ? 0 : this.mainIndex + 1);\n    }\n    /**\n    Replace a given range with another range, and then normalize the\n    selection to merge and sort ranges if necessary.\n    */\n    replaceRange(range, which = this.mainIndex) {\n        let ranges = this.ranges.slice();\n        ranges[which] = range;\n        return EditorSelection.create(ranges, this.mainIndex);\n    }\n    /**\n    Convert this selection to an object that can be serialized to\n    JSON.\n    */\n    toJSON() {\n        return { ranges: this.ranges.map(r => r.toJSON()), main: this.mainIndex };\n    }\n    /**\n    Create a selection from a JSON representation.\n    */\n    static fromJSON(json) {\n        if (!json || !Array.isArray(json.ranges) || typeof json.main != \"number\" || json.main >= json.ranges.length)\n            throw new RangeError(\"Invalid JSON representation for EditorSelection\");\n        return new EditorSelection(json.ranges.map((r) => SelectionRange.fromJSON(r)), json.main);\n    }\n    /**\n    Create a selection holding a single range.\n    */\n    static single(anchor, head = anchor) {\n        return new EditorSelection([EditorSelection.range(anchor, head)], 0);\n    }\n    /**\n    Sort and merge the given set of ranges, creating a valid\n    selection.\n    */\n    static create(ranges, mainIndex = 0) {\n        if (ranges.length == 0)\n            throw new RangeError(\"A selection needs at least one range\");\n        for (let pos = 0, i = 0; i < ranges.length; i++) {\n            let range = ranges[i];\n            if (range.empty ? range.from <= pos : range.from < pos)\n                return EditorSelection.normalized(ranges.slice(), mainIndex);\n            pos = range.to;\n        }\n        return new EditorSelection(ranges, mainIndex);\n    }\n    /**\n    Create a cursor selection range at the given position. You can\n    safely ignore the optional arguments in most situations.\n    */\n    static cursor(pos, assoc = 0, bidiLevel, goalColumn) {\n        return SelectionRange.create(pos, pos, (assoc == 0 ? 0 : assoc < 0 ? 8 /* RangeFlag.AssocBefore */ : 16 /* RangeFlag.AssocAfter */) |\n            (bidiLevel == null ? 7 : Math.min(6, bidiLevel)) |\n            ((goalColumn !== null && goalColumn !== void 0 ? goalColumn : 16777215 /* RangeFlag.NoGoalColumn */) << 6 /* RangeFlag.GoalColumnOffset */));\n    }\n    /**\n    Create a selection range.\n    */\n    static range(anchor, head, goalColumn, bidiLevel) {\n        let flags = ((goalColumn !== null && goalColumn !== void 0 ? goalColumn : 16777215 /* RangeFlag.NoGoalColumn */) << 6 /* RangeFlag.GoalColumnOffset */) |\n            (bidiLevel == null ? 7 : Math.min(6, bidiLevel));\n        return head < anchor ? SelectionRange.create(head, anchor, 32 /* RangeFlag.Inverted */ | 16 /* RangeFlag.AssocAfter */ | flags)\n            : SelectionRange.create(anchor, head, (head > anchor ? 8 /* RangeFlag.AssocBefore */ : 0) | flags);\n    }\n    /**\n    @internal\n    */\n    static normalized(ranges, mainIndex = 0) {\n        let main = ranges[mainIndex];\n        ranges.sort((a, b) => a.from - b.from);\n        mainIndex = ranges.indexOf(main);\n        for (let i = 1; i < ranges.length; i++) {\n            let range = ranges[i], prev = ranges[i - 1];\n            if (range.empty ? range.from <= prev.to : range.from < prev.to) {\n                let from = prev.from, to = Math.max(range.to, prev.to);\n                if (i <= mainIndex)\n                    mainIndex--;\n                ranges.splice(--i, 2, range.anchor > range.head ? EditorSelection.range(to, from) : EditorSelection.range(from, to));\n            }\n        }\n        return new EditorSelection(ranges, mainIndex);\n    }\n}\nfunction checkSelection(selection, docLength) {\n    for (let range of selection.ranges)\n        if (range.to > docLength)\n            throw new RangeError(\"Selection points outside of document\");\n}\n\nlet nextID = 0;\n/**\nA facet is a labeled value that is associated with an editor\nstate. It takes inputs from any number of extensions, and combines\nthose into a single output value.\n\nExamples of uses of facets are the [tab\nsize](https://codemirror.net/6/docs/ref/#state.EditorState^tabSize), [editor\nattributes](https://codemirror.net/6/docs/ref/#view.EditorView^editorAttributes), and [update\nlisteners](https://codemirror.net/6/docs/ref/#view.EditorView^updateListener).\n\nNote that `Facet` instances can be used anywhere where\n[`FacetReader`](https://codemirror.net/6/docs/ref/#state.FacetReader) is expected.\n*/\nclass Facet {\n    constructor(\n    /**\n    @internal\n    */\n    combine, \n    /**\n    @internal\n    */\n    compareInput, \n    /**\n    @internal\n    */\n    compare, isStatic, enables) {\n        this.combine = combine;\n        this.compareInput = compareInput;\n        this.compare = compare;\n        this.isStatic = isStatic;\n        /**\n        @internal\n        */\n        this.id = nextID++;\n        this.default = combine([]);\n        this.extensions = typeof enables == \"function\" ? enables(this) : enables;\n    }\n    /**\n    Returns a facet reader for this facet, which can be used to\n    [read](https://codemirror.net/6/docs/ref/#state.EditorState.facet) it but not to define values for it.\n    */\n    get reader() { return this; }\n    /**\n    Define a new facet.\n    */\n    static define(config = {}) {\n        return new Facet(config.combine || ((a) => a), config.compareInput || ((a, b) => a === b), config.compare || (!config.combine ? sameArray : (a, b) => a === b), !!config.static, config.enables);\n    }\n    /**\n    Returns an extension that adds the given value to this facet.\n    */\n    of(value) {\n        return new FacetProvider([], this, 0 /* Provider.Static */, value);\n    }\n    /**\n    Create an extension that computes a value for the facet from a\n    state. You must take care to declare the parts of the state that\n    this value depends on, since your function is only called again\n    for a new state when one of those parts changed.\n    \n    In cases where your value depends only on a single field, you'll\n    want to use the [`from`](https://codemirror.net/6/docs/ref/#state.Facet.from) method instead.\n    */\n    compute(deps, get) {\n        if (this.isStatic)\n            throw new Error(\"Can't compute a static facet\");\n        return new FacetProvider(deps, this, 1 /* Provider.Single */, get);\n    }\n    /**\n    Create an extension that computes zero or more values for this\n    facet from a state.\n    */\n    computeN(deps, get) {\n        if (this.isStatic)\n            throw new Error(\"Can't compute a static facet\");\n        return new FacetProvider(deps, this, 2 /* Provider.Multi */, get);\n    }\n    from(field, get) {\n        if (!get)\n            get = x => x;\n        return this.compute([field], state => get(state.field(field)));\n    }\n}\nfunction sameArray(a, b) {\n    return a == b || a.length == b.length && a.every((e, i) => e === b[i]);\n}\nclass FacetProvider {\n    constructor(dependencies, facet, type, value) {\n        this.dependencies = dependencies;\n        this.facet = facet;\n        this.type = type;\n        this.value = value;\n        this.id = nextID++;\n    }\n    dynamicSlot(addresses) {\n        var _a;\n        let getter = this.value;\n        let compare = this.facet.compareInput;\n        let id = this.id, idx = addresses[id] >> 1, multi = this.type == 2 /* Provider.Multi */;\n        let depDoc = false, depSel = false, depAddrs = [];\n        for (let dep of this.dependencies) {\n            if (dep == \"doc\")\n                depDoc = true;\n            else if (dep == \"selection\")\n                depSel = true;\n            else if ((((_a = addresses[dep.id]) !== null && _a !== void 0 ? _a : 1) & 1) == 0)\n                depAddrs.push(addresses[dep.id]);\n        }\n        return {\n            create(state) {\n                state.values[idx] = getter(state);\n                return 1 /* SlotStatus.Changed */;\n            },\n            update(state, tr) {\n                if ((depDoc && tr.docChanged) || (depSel && (tr.docChanged || tr.selection)) || ensureAll(state, depAddrs)) {\n                    let newVal = getter(state);\n                    if (multi ? !compareArray(newVal, state.values[idx], compare) : !compare(newVal, state.values[idx])) {\n                        state.values[idx] = newVal;\n                        return 1 /* SlotStatus.Changed */;\n                    }\n                }\n                return 0;\n            },\n            reconfigure: (state, oldState) => {\n                let newVal, oldAddr = oldState.config.address[id];\n                if (oldAddr != null) {\n                    let oldVal = getAddr(oldState, oldAddr);\n                    if (this.dependencies.every(dep => {\n                        return dep instanceof Facet ? oldState.facet(dep) === state.facet(dep) :\n                            dep instanceof StateField ? oldState.field(dep, false) == state.field(dep, false) : true;\n                    }) || (multi ? compareArray(newVal = getter(state), oldVal, compare) : compare(newVal = getter(state), oldVal))) {\n                        state.values[idx] = oldVal;\n                        return 0;\n                    }\n                }\n                else {\n                    newVal = getter(state);\n                }\n                state.values[idx] = newVal;\n                return 1 /* SlotStatus.Changed */;\n            }\n        };\n    }\n}\nfunction compareArray(a, b, compare) {\n    if (a.length != b.length)\n        return false;\n    for (let i = 0; i < a.length; i++)\n        if (!compare(a[i], b[i]))\n            return false;\n    return true;\n}\nfunction ensureAll(state, addrs) {\n    let changed = false;\n    for (let addr of addrs)\n        if (ensureAddr(state, addr) & 1 /* SlotStatus.Changed */)\n            changed = true;\n    return changed;\n}\nfunction dynamicFacetSlot(addresses, facet, providers) {\n    let providerAddrs = providers.map(p => addresses[p.id]);\n    let providerTypes = providers.map(p => p.type);\n    let dynamic = providerAddrs.filter(p => !(p & 1));\n    let idx = addresses[facet.id] >> 1;\n    function get(state) {\n        let values = [];\n        for (let i = 0; i < providerAddrs.length; i++) {\n            let value = getAddr(state, providerAddrs[i]);\n            if (providerTypes[i] == 2 /* Provider.Multi */)\n                for (let val of value)\n                    values.push(val);\n            else\n                values.push(value);\n        }\n        return facet.combine(values);\n    }\n    return {\n        create(state) {\n            for (let addr of providerAddrs)\n                ensureAddr(state, addr);\n            state.values[idx] = get(state);\n            return 1 /* SlotStatus.Changed */;\n        },\n        update(state, tr) {\n            if (!ensureAll(state, dynamic))\n                return 0;\n            let value = get(state);\n            if (facet.compare(value, state.values[idx]))\n                return 0;\n            state.values[idx] = value;\n            return 1 /* SlotStatus.Changed */;\n        },\n        reconfigure(state, oldState) {\n            let depChanged = ensureAll(state, providerAddrs);\n            let oldProviders = oldState.config.facets[facet.id], oldValue = oldState.facet(facet);\n            if (oldProviders && !depChanged && sameArray(providers, oldProviders)) {\n                state.values[idx] = oldValue;\n                return 0;\n            }\n            let value = get(state);\n            if (facet.compare(value, oldValue)) {\n                state.values[idx] = oldValue;\n                return 0;\n            }\n            state.values[idx] = value;\n            return 1 /* SlotStatus.Changed */;\n        }\n    };\n}\nconst initField = /*@__PURE__*/Facet.define({ static: true });\n/**\nFields can store additional information in an editor state, and\nkeep it in sync with the rest of the state.\n*/\nclass StateField {\n    constructor(\n    /**\n    @internal\n    */\n    id, createF, updateF, compareF, \n    /**\n    @internal\n    */\n    spec) {\n        this.id = id;\n        this.createF = createF;\n        this.updateF = updateF;\n        this.compareF = compareF;\n        this.spec = spec;\n        /**\n        @internal\n        */\n        this.provides = undefined;\n    }\n    /**\n    Define a state field.\n    */\n    static define(config) {\n        let field = new StateField(nextID++, config.create, config.update, config.compare || ((a, b) => a === b), config);\n        if (config.provide)\n            field.provides = config.provide(field);\n        return field;\n    }\n    create(state) {\n        let init = state.facet(initField).find(i => i.field == this);\n        return ((init === null || init === void 0 ? void 0 : init.create) || this.createF)(state);\n    }\n    /**\n    @internal\n    */\n    slot(addresses) {\n        let idx = addresses[this.id] >> 1;\n        return {\n            create: (state) => {\n                state.values[idx] = this.create(state);\n                return 1 /* SlotStatus.Changed */;\n            },\n            update: (state, tr) => {\n                let oldVal = state.values[idx];\n                let value = this.updateF(oldVal, tr);\n                if (this.compareF(oldVal, value))\n                    return 0;\n                state.values[idx] = value;\n                return 1 /* SlotStatus.Changed */;\n            },\n            reconfigure: (state, oldState) => {\n                let init = state.facet(initField), oldInit = oldState.facet(initField), reInit;\n                if ((reInit = init.find(i => i.field == this)) && reInit != oldInit.find(i => i.field == this)) {\n                    state.values[idx] = reInit.create(state);\n                    return 1 /* SlotStatus.Changed */;\n                }\n                if (oldState.config.address[this.id] != null) {\n                    state.values[idx] = oldState.field(this);\n                    return 0;\n                }\n                state.values[idx] = this.create(state);\n                return 1 /* SlotStatus.Changed */;\n            }\n        };\n    }\n    /**\n    Returns an extension that enables this field and overrides the\n    way it is initialized. Can be useful when you need to provide a\n    non-default starting value for the field.\n    */\n    init(create) {\n        return [this, initField.of({ field: this, create })];\n    }\n    /**\n    State field instances can be used as\n    [`Extension`](https://codemirror.net/6/docs/ref/#state.Extension) values to enable the field in a\n    given state.\n    */\n    get extension() { return this; }\n}\nconst Prec_ = { lowest: 4, low: 3, default: 2, high: 1, highest: 0 };\nfunction prec(value) {\n    return (ext) => new PrecExtension(ext, value);\n}\n/**\nBy default extensions are registered in the order they are found\nin the flattened form of nested array that was provided.\nIndividual extension values can be assigned a precedence to\noverride this. Extensions that do not have a precedence set get\nthe precedence of the nearest parent with a precedence, or\n[`default`](https://codemirror.net/6/docs/ref/#state.Prec.default) if there is no such parent. The\nfinal ordering of extensions is determined by first sorting by\nprecedence and then by order within each precedence.\n*/\nconst Prec = {\n    /**\n    The highest precedence level, for extensions that should end up\n    near the start of the precedence ordering.\n    */\n    highest: /*@__PURE__*/prec(Prec_.highest),\n    /**\n    A higher-than-default precedence, for extensions that should\n    come before those with default precedence.\n    */\n    high: /*@__PURE__*/prec(Prec_.high),\n    /**\n    The default precedence, which is also used for extensions\n    without an explicit precedence.\n    */\n    default: /*@__PURE__*/prec(Prec_.default),\n    /**\n    A lower-than-default precedence.\n    */\n    low: /*@__PURE__*/prec(Prec_.low),\n    /**\n    The lowest precedence level. Meant for things that should end up\n    near the end of the extension order.\n    */\n    lowest: /*@__PURE__*/prec(Prec_.lowest)\n};\nclass PrecExtension {\n    constructor(inner, prec) {\n        this.inner = inner;\n        this.prec = prec;\n    }\n}\n/**\nExtension compartments can be used to make a configuration\ndynamic. By [wrapping](https://codemirror.net/6/docs/ref/#state.Compartment.of) part of your\nconfiguration in a compartment, you can later\n[replace](https://codemirror.net/6/docs/ref/#state.Compartment.reconfigure) that part through a\ntransaction.\n*/\nclass Compartment {\n    /**\n    Create an instance of this compartment to add to your [state\n    configuration](https://codemirror.net/6/docs/ref/#state.EditorStateConfig.extensions).\n    */\n    of(ext) { return new CompartmentInstance(this, ext); }\n    /**\n    Create an [effect](https://codemirror.net/6/docs/ref/#state.TransactionSpec.effects) that\n    reconfigures this compartment.\n    */\n    reconfigure(content) {\n        return Compartment.reconfigure.of({ compartment: this, extension: content });\n    }\n    /**\n    Get the current content of the compartment in the state, or\n    `undefined` if it isn't present.\n    */\n    get(state) {\n        return state.config.compartments.get(this);\n    }\n}\nclass CompartmentInstance {\n    constructor(compartment, inner) {\n        this.compartment = compartment;\n        this.inner = inner;\n    }\n}\nclass Configuration {\n    constructor(base, compartments, dynamicSlots, address, staticValues, facets) {\n        this.base = base;\n        this.compartments = compartments;\n        this.dynamicSlots = dynamicSlots;\n        this.address = address;\n        this.staticValues = staticValues;\n        this.facets = facets;\n        this.statusTemplate = [];\n        while (this.statusTemplate.length < dynamicSlots.length)\n            this.statusTemplate.push(0 /* SlotStatus.Unresolved */);\n    }\n    staticFacet(facet) {\n        let addr = this.address[facet.id];\n        return addr == null ? facet.default : this.staticValues[addr >> 1];\n    }\n    static resolve(base, compartments, oldState) {\n        let fields = [];\n        let facets = Object.create(null);\n        let newCompartments = new Map();\n        for (let ext of flatten(base, compartments, newCompartments)) {\n            if (ext instanceof StateField)\n                fields.push(ext);\n            else\n                (facets[ext.facet.id] || (facets[ext.facet.id] = [])).push(ext);\n        }\n        let address = Object.create(null);\n        let staticValues = [];\n        let dynamicSlots = [];\n        for (let field of fields) {\n            address[field.id] = dynamicSlots.length << 1;\n            dynamicSlots.push(a => field.slot(a));\n        }\n        let oldFacets = oldState === null || oldState === void 0 ? void 0 : oldState.config.facets;\n        for (let id in facets) {\n            let providers = facets[id], facet = providers[0].facet;\n            let oldProviders = oldFacets && oldFacets[id] || [];\n            if (providers.every(p => p.type == 0 /* Provider.Static */)) {\n                address[facet.id] = (staticValues.length << 1) | 1;\n                if (sameArray(oldProviders, providers)) {\n                    staticValues.push(oldState.facet(facet));\n                }\n                else {\n                    let value = facet.combine(providers.map(p => p.value));\n                    staticValues.push(oldState && facet.compare(value, oldState.facet(facet)) ? oldState.facet(facet) : value);\n                }\n            }\n            else {\n                for (let p of providers) {\n                    if (p.type == 0 /* Provider.Static */) {\n                        address[p.id] = (staticValues.length << 1) | 1;\n                        staticValues.push(p.value);\n                    }\n                    else {\n                        address[p.id] = dynamicSlots.length << 1;\n                        dynamicSlots.push(a => p.dynamicSlot(a));\n                    }\n                }\n                address[facet.id] = dynamicSlots.length << 1;\n                dynamicSlots.push(a => dynamicFacetSlot(a, facet, providers));\n            }\n        }\n        let dynamic = dynamicSlots.map(f => f(address));\n        return new Configuration(base, newCompartments, dynamic, address, staticValues, facets);\n    }\n}\nfunction flatten(extension, compartments, newCompartments) {\n    let result = [[], [], [], [], []];\n    let seen = new Map();\n    function inner(ext, prec) {\n        let known = seen.get(ext);\n        if (known != null) {\n            if (known <= prec)\n                return;\n            let found = result[known].indexOf(ext);\n            if (found > -1)\n                result[known].splice(found, 1);\n            if (ext instanceof CompartmentInstance)\n                newCompartments.delete(ext.compartment);\n        }\n        seen.set(ext, prec);\n        if (Array.isArray(ext)) {\n            for (let e of ext)\n                inner(e, prec);\n        }\n        else if (ext instanceof CompartmentInstance) {\n            if (newCompartments.has(ext.compartment))\n                throw new RangeError(`Duplicate use of compartment in extensions`);\n            let content = compartments.get(ext.compartment) || ext.inner;\n            newCompartments.set(ext.compartment, content);\n            inner(content, prec);\n        }\n        else if (ext instanceof PrecExtension) {\n            inner(ext.inner, ext.prec);\n        }\n        else if (ext instanceof StateField) {\n            result[prec].push(ext);\n            if (ext.provides)\n                inner(ext.provides, prec);\n        }\n        else if (ext instanceof FacetProvider) {\n            result[prec].push(ext);\n            if (ext.facet.extensions)\n                inner(ext.facet.extensions, Prec_.default);\n        }\n        else {\n            let content = ext.extension;\n            if (!content)\n                throw new Error(`Unrecognized extension value in extension set (${ext}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);\n            inner(content, prec);\n        }\n    }\n    inner(extension, Prec_.default);\n    return result.reduce((a, b) => a.concat(b));\n}\nfunction ensureAddr(state, addr) {\n    if (addr & 1)\n        return 2 /* SlotStatus.Computed */;\n    let idx = addr >> 1;\n    let status = state.status[idx];\n    if (status == 4 /* SlotStatus.Computing */)\n        throw new Error(\"Cyclic dependency between fields and/or facets\");\n    if (status & 2 /* SlotStatus.Computed */)\n        return status;\n    state.status[idx] = 4 /* SlotStatus.Computing */;\n    let changed = state.computeSlot(state, state.config.dynamicSlots[idx]);\n    return state.status[idx] = 2 /* SlotStatus.Computed */ | changed;\n}\nfunction getAddr(state, addr) {\n    return addr & 1 ? state.config.staticValues[addr >> 1] : state.values[addr >> 1];\n}\n\nconst languageData = /*@__PURE__*/Facet.define();\nconst allowMultipleSelections = /*@__PURE__*/Facet.define({\n    combine: values => values.some(v => v),\n    static: true\n});\nconst lineSeparator = /*@__PURE__*/Facet.define({\n    combine: values => values.length ? values[0] : undefined,\n    static: true\n});\nconst changeFilter = /*@__PURE__*/Facet.define();\nconst transactionFilter = /*@__PURE__*/Facet.define();\nconst transactionExtender = /*@__PURE__*/Facet.define();\nconst readOnly = /*@__PURE__*/Facet.define({\n    combine: values => values.length ? values[0] : false\n});\n\n/**\nAnnotations are tagged values that are used to add metadata to\ntransactions in an extensible way. They should be used to model\nthings that effect the entire transaction (such as its [time\nstamp](https://codemirror.net/6/docs/ref/#state.Transaction^time) or information about its\n[origin](https://codemirror.net/6/docs/ref/#state.Transaction^userEvent)). For effects that happen\n_alongside_ the other changes made by the transaction, [state\neffects](https://codemirror.net/6/docs/ref/#state.StateEffect) are more appropriate.\n*/\nclass Annotation {\n    /**\n    @internal\n    */\n    constructor(\n    /**\n    The annotation type.\n    */\n    type, \n    /**\n    The value of this annotation.\n    */\n    value) {\n        this.type = type;\n        this.value = value;\n    }\n    /**\n    Define a new type of annotation.\n    */\n    static define() { return new AnnotationType(); }\n}\n/**\nMarker that identifies a type of [annotation](https://codemirror.net/6/docs/ref/#state.Annotation).\n*/\nclass AnnotationType {\n    /**\n    Create an instance of this annotation.\n    */\n    of(value) { return new Annotation(this, value); }\n}\n/**\nRepresentation of a type of state effect. Defined with\n[`StateEffect.define`](https://codemirror.net/6/docs/ref/#state.StateEffect^define).\n*/\nclass StateEffectType {\n    /**\n    @internal\n    */\n    constructor(\n    // The `any` types in these function types are there to work\n    // around TypeScript issue #37631, where the type guard on\n    // `StateEffect.is` mysteriously stops working when these properly\n    // have type `Value`.\n    /**\n    @internal\n    */\n    map) {\n        this.map = map;\n    }\n    /**\n    Create a [state effect](https://codemirror.net/6/docs/ref/#state.StateEffect) instance of this\n    type.\n    */\n    of(value) { return new StateEffect(this, value); }\n}\n/**\nState effects can be used to represent additional effects\nassociated with a [transaction](https://codemirror.net/6/docs/ref/#state.Transaction.effects). They\nare often useful to model changes to custom [state\nfields](https://codemirror.net/6/docs/ref/#state.StateField), when those changes aren't implicit in\ndocument or selection changes.\n*/\nclass StateEffect {\n    /**\n    @internal\n    */\n    constructor(\n    /**\n    @internal\n    */\n    type, \n    /**\n    The value of this effect.\n    */\n    value) {\n        this.type = type;\n        this.value = value;\n    }\n    /**\n    Map this effect through a position mapping. Will return\n    `undefined` when that ends up deleting the effect.\n    */\n    map(mapping) {\n        let mapped = this.type.map(this.value, mapping);\n        return mapped === undefined ? undefined : mapped == this.value ? this : new StateEffect(this.type, mapped);\n    }\n    /**\n    Tells you whether this effect object is of a given\n    [type](https://codemirror.net/6/docs/ref/#state.StateEffectType).\n    */\n    is(type) { return this.type == type; }\n    /**\n    Define a new effect type. The type parameter indicates the type\n    of values that his effect holds. It should be a type that\n    doesn't include `undefined`, since that is used in\n    [mapping](https://codemirror.net/6/docs/ref/#state.StateEffect.map) to indicate that an effect is\n    removed.\n    */\n    static define(spec = {}) {\n        return new StateEffectType(spec.map || (v => v));\n    }\n    /**\n    Map an array of effects through a change set.\n    */\n    static mapEffects(effects, mapping) {\n        if (!effects.length)\n            return effects;\n        let result = [];\n        for (let effect of effects) {\n            let mapped = effect.map(mapping);\n            if (mapped)\n                result.push(mapped);\n        }\n        return result;\n    }\n}\n/**\nThis effect can be used to reconfigure the root extensions of\nthe editor. Doing this will discard any extensions\n[appended](https://codemirror.net/6/docs/ref/#state.StateEffect^appendConfig), but does not reset\nthe content of [reconfigured](https://codemirror.net/6/docs/ref/#state.Compartment.reconfigure)\ncompartments.\n*/\nStateEffect.reconfigure = /*@__PURE__*/StateEffect.define();\n/**\nAppend extensions to the top-level configuration of the editor.\n*/\nStateEffect.appendConfig = /*@__PURE__*/StateEffect.define();\n/**\nChanges to the editor state are grouped into transactions.\nTypically, a user action creates a single transaction, which may\ncontain any number of document changes, may change the selection,\nor have other effects. Create a transaction by calling\n[`EditorState.update`](https://codemirror.net/6/docs/ref/#state.EditorState.update), or immediately\ndispatch one by calling\n[`EditorView.dispatch`](https://codemirror.net/6/docs/ref/#view.EditorView.dispatch).\n*/\nclass Transaction {\n    constructor(\n    /**\n    The state from which the transaction starts.\n    */\n    startState, \n    /**\n    The document changes made by this transaction.\n    */\n    changes, \n    /**\n    The selection set by this transaction, or undefined if it\n    doesn't explicitly set a selection.\n    */\n    selection, \n    /**\n    The effects added to the transaction.\n    */\n    effects, \n    /**\n    @internal\n    */\n    annotations, \n    /**\n    Whether the selection should be scrolled into view after this\n    transaction is dispatched.\n    */\n    scrollIntoView) {\n        this.startState = startState;\n        this.changes = changes;\n        this.selection = selection;\n        this.effects = effects;\n        this.annotations = annotations;\n        this.scrollIntoView = scrollIntoView;\n        /**\n        @internal\n        */\n        this._doc = null;\n        /**\n        @internal\n        */\n        this._state = null;\n        if (selection)\n            checkSelection(selection, changes.newLength);\n        if (!annotations.some((a) => a.type == Transaction.time))\n            this.annotations = annotations.concat(Transaction.time.of(Date.now()));\n    }\n    /**\n    @internal\n    */\n    static create(startState, changes, selection, effects, annotations, scrollIntoView) {\n        return new Transaction(startState, changes, selection, effects, annotations, scrollIntoView);\n    }\n    /**\n    The new document produced by the transaction. Contrary to\n    [`.state`](https://codemirror.net/6/docs/ref/#state.Transaction.state)`.doc`, accessing this won't\n    force the entire new state to be computed right away, so it is\n    recommended that [transaction\n    filters](https://codemirror.net/6/docs/ref/#state.EditorState^transactionFilter) use this getter\n    when they need to look at the new document.\n    */\n    get newDoc() {\n        return this._doc || (this._doc = this.changes.apply(this.startState.doc));\n    }\n    /**\n    The new selection produced by the transaction. If\n    [`this.selection`](https://codemirror.net/6/docs/ref/#state.Transaction.selection) is undefined,\n    this will [map](https://codemirror.net/6/docs/ref/#state.EditorSelection.map) the start state's\n    current selection through the changes made by the transaction.\n    */\n    get newSelection() {\n        return this.selection || this.startState.selection.map(this.changes);\n    }\n    /**\n    The new state created by the transaction. Computed on demand\n    (but retained for subsequent access), so it is recommended not to\n    access it in [transaction\n    filters](https://codemirror.net/6/docs/ref/#state.EditorState^transactionFilter) when possible.\n    */\n    get state() {\n        if (!this._state)\n            this.startState.applyTransaction(this);\n        return this._state;\n    }\n    /**\n    Get the value of the given annotation type, if any.\n    */\n    annotation(type) {\n        for (let ann of this.annotations)\n            if (ann.type == type)\n                return ann.value;\n        return undefined;\n    }\n    /**\n    Indicates whether the transaction changed the document.\n    */\n    get docChanged() { return !this.changes.empty; }\n    /**\n    Indicates whether this transaction reconfigures the state\n    (through a [configuration compartment](https://codemirror.net/6/docs/ref/#state.Compartment) or\n    with a top-level configuration\n    [effect](https://codemirror.net/6/docs/ref/#state.StateEffect^reconfigure).\n    */\n    get reconfigured() { return this.startState.config != this.state.config; }\n    /**\n    Returns true if the transaction has a [user\n    event](https://codemirror.net/6/docs/ref/#state.Transaction^userEvent) annotation that is equal to\n    or more specific than `event`. For example, if the transaction\n    has `\"select.pointer\"` as user event, `\"select\"` and\n    `\"select.pointer\"` will match it.\n    */\n    isUserEvent(event) {\n        let e = this.annotation(Transaction.userEvent);\n        return !!(e && (e == event || e.length > event.length && e.slice(0, event.length) == event && e[event.length] == \".\"));\n    }\n}\n/**\nAnnotation used to store transaction timestamps. Automatically\nadded to every transaction, holding `Date.now()`.\n*/\nTransaction.time = /*@__PURE__*/Annotation.define();\n/**\nAnnotation used to associate a transaction with a user interface\nevent. Holds a string identifying the event, using a\ndot-separated format to support attaching more specific\ninformation. The events used by the core libraries are:\n\n - `\"input\"` when content is entered\n   - `\"input.type\"` for typed input\n     - `\"input.type.compose\"` for composition\n   - `\"input.paste\"` for pasted input\n   - `\"input.drop\"` when adding content with drag-and-drop\n   - `\"input.complete\"` when autocompleting\n - `\"delete\"` when the user deletes content\n   - `\"delete.selection\"` when deleting the selection\n   - `\"delete.forward\"` when deleting forward from the selection\n   - `\"delete.backward\"` when deleting backward from the selection\n   - `\"delete.cut\"` when cutting to the clipboard\n - `\"move\"` when content is moved\n   - `\"move.drop\"` when content is moved within the editor through drag-and-drop\n - `\"select\"` when explicitly changing the selection\n   - `\"select.pointer\"` when selecting with a mouse or other pointing device\n - `\"undo\"` and `\"redo\"` for history actions\n\nUse [`isUserEvent`](https://codemirror.net/6/docs/ref/#state.Transaction.isUserEvent) to check\nwhether the annotation matches a given event.\n*/\nTransaction.userEvent = /*@__PURE__*/Annotation.define();\n/**\nAnnotation indicating whether a transaction should be added to\nthe undo history or not.\n*/\nTransaction.addToHistory = /*@__PURE__*/Annotation.define();\n/**\nAnnotation indicating (when present and true) that a transaction\nrepresents a change made by some other actor, not the user. This\nis used, for example, to tag other people's changes in\ncollaborative editing.\n*/\nTransaction.remote = /*@__PURE__*/Annotation.define();\nfunction joinRanges(a, b) {\n    let result = [];\n    for (let iA = 0, iB = 0;;) {\n        let from, to;\n        if (iA < a.length && (iB == b.length || b[iB] >= a[iA])) {\n            from = a[iA++];\n            to = a[iA++];\n        }\n        else if (iB < b.length) {\n            from = b[iB++];\n            to = b[iB++];\n        }\n        else\n            return result;\n        if (!result.length || result[result.length - 1] < from)\n            result.push(from, to);\n        else if (result[result.length - 1] < to)\n            result[result.length - 1] = to;\n    }\n}\nfunction mergeTransaction(a, b, sequential) {\n    var _a;\n    let mapForA, mapForB, changes;\n    if (sequential) {\n        mapForA = b.changes;\n        mapForB = ChangeSet.empty(b.changes.length);\n        changes = a.changes.compose(b.changes);\n    }\n    else {\n        mapForA = b.changes.map(a.changes);\n        mapForB = a.changes.mapDesc(b.changes, true);\n        changes = a.changes.compose(mapForA);\n    }\n    return {\n        changes,\n        selection: b.selection ? b.selection.map(mapForB) : (_a = a.selection) === null || _a === void 0 ? void 0 : _a.map(mapForA),\n        effects: StateEffect.mapEffects(a.effects, mapForA).concat(StateEffect.mapEffects(b.effects, mapForB)),\n        annotations: a.annotations.length ? a.annotations.concat(b.annotations) : b.annotations,\n        scrollIntoView: a.scrollIntoView || b.scrollIntoView\n    };\n}\nfunction resolveTransactionInner(state, spec, docSize) {\n    let sel = spec.selection, annotations = asArray(spec.annotations);\n    if (spec.userEvent)\n        annotations = annotations.concat(Transaction.userEvent.of(spec.userEvent));\n    return {\n        changes: spec.changes instanceof ChangeSet ? spec.changes\n            : ChangeSet.of(spec.changes || [], docSize, state.facet(lineSeparator)),\n        selection: sel && (sel instanceof EditorSelection ? sel : EditorSelection.single(sel.anchor, sel.head)),\n        effects: asArray(spec.effects),\n        annotations,\n        scrollIntoView: !!spec.scrollIntoView\n    };\n}\nfunction resolveTransaction(state, specs, filter) {\n    let s = resolveTransactionInner(state, specs.length ? specs[0] : {}, state.doc.length);\n    if (specs.length && specs[0].filter === false)\n        filter = false;\n    for (let i = 1; i < specs.length; i++) {\n        if (specs[i].filter === false)\n            filter = false;\n        let seq = !!specs[i].sequential;\n        s = mergeTransaction(s, resolveTransactionInner(state, specs[i], seq ? s.changes.newLength : state.doc.length), seq);\n    }\n    let tr = Transaction.create(state, s.changes, s.selection, s.effects, s.annotations, s.scrollIntoView);\n    return extendTransaction(filter ? filterTransaction(tr) : tr);\n}\n// Finish a transaction by applying filters if necessary.\nfunction filterTransaction(tr) {\n    let state = tr.startState;\n    // Change filters\n    let result = true;\n    for (let filter of state.facet(changeFilter)) {\n        let value = filter(tr);\n        if (value === false) {\n            result = false;\n            break;\n        }\n        if (Array.isArray(value))\n            result = result === true ? value : joinRanges(result, value);\n    }\n    if (result !== true) {\n        let changes, back;\n        if (result === false) {\n            back = tr.changes.invertedDesc;\n            changes = ChangeSet.empty(state.doc.length);\n        }\n        else {\n            let filtered = tr.changes.filter(result);\n            changes = filtered.changes;\n            back = filtered.filtered.mapDesc(filtered.changes).invertedDesc;\n        }\n        tr = Transaction.create(state, changes, tr.selection && tr.selection.map(back), StateEffect.mapEffects(tr.effects, back), tr.annotations, tr.scrollIntoView);\n    }\n    // Transaction filters\n    let filters = state.facet(transactionFilter);\n    for (let i = filters.length - 1; i >= 0; i--) {\n        let filtered = filters[i](tr);\n        if (filtered instanceof Transaction)\n            tr = filtered;\n        else if (Array.isArray(filtered) && filtered.length == 1 && filtered[0] instanceof Transaction)\n            tr = filtered[0];\n        else\n            tr = resolveTransaction(state, asArray(filtered), false);\n    }\n    return tr;\n}\nfunction extendTransaction(tr) {\n    let state = tr.startState, extenders = state.facet(transactionExtender), spec = tr;\n    for (let i = extenders.length - 1; i >= 0; i--) {\n        let extension = extenders[i](tr);\n        if (extension && Object.keys(extension).length)\n            spec = mergeTransaction(spec, resolveTransactionInner(state, extension, tr.changes.newLength), true);\n    }\n    return spec == tr ? tr : Transaction.create(state, tr.changes, tr.selection, spec.effects, spec.annotations, spec.scrollIntoView);\n}\nconst none = [];\nfunction asArray(value) {\n    return value == null ? none : Array.isArray(value) ? value : [value];\n}\n\n/**\nThe categories produced by a [character\ncategorizer](https://codemirror.net/6/docs/ref/#state.EditorState.charCategorizer). These are used\ndo things like selecting by word.\n*/\nvar CharCategory = /*@__PURE__*/(function (CharCategory) {\n    /**\n    Word characters.\n    */\n    CharCategory[CharCategory[\"Word\"] = 0] = \"Word\";\n    /**\n    Whitespace.\n    */\n    CharCategory[CharCategory[\"Space\"] = 1] = \"Space\";\n    /**\n    Anything else.\n    */\n    CharCategory[CharCategory[\"Other\"] = 2] = \"Other\";\nreturn CharCategory})(CharCategory || (CharCategory = {}));\nconst nonASCIISingleCaseWordChar = /[\\u00df\\u0587\\u0590-\\u05f4\\u0600-\\u06ff\\u3040-\\u309f\\u30a0-\\u30ff\\u3400-\\u4db5\\u4e00-\\u9fcc\\uac00-\\ud7af]/;\nlet wordChar;\ntry {\n    wordChar = /*@__PURE__*/new RegExp(\"[\\\\p{Alphabetic}\\\\p{Number}_]\", \"u\");\n}\ncatch (_) { }\nfunction hasWordChar(str) {\n    if (wordChar)\n        return wordChar.test(str);\n    for (let i = 0; i < str.length; i++) {\n        let ch = str[i];\n        if (/\\w/.test(ch) || ch > \"\\x80\" && (ch.toUpperCase() != ch.toLowerCase() || nonASCIISingleCaseWordChar.test(ch)))\n            return true;\n    }\n    return false;\n}\nfunction makeCategorizer(wordChars) {\n    return (char) => {\n        if (!/\\S/.test(char))\n            return CharCategory.Space;\n        if (hasWordChar(char))\n            return CharCategory.Word;\n        for (let i = 0; i < wordChars.length; i++)\n            if (char.indexOf(wordChars[i]) > -1)\n                return CharCategory.Word;\n        return CharCategory.Other;\n    };\n}\n\n/**\nThe editor state class is a persistent (immutable) data structure.\nTo update a state, you [create](https://codemirror.net/6/docs/ref/#state.EditorState.update) a\n[transaction](https://codemirror.net/6/docs/ref/#state.Transaction), which produces a _new_ state\ninstance, without modifying the original object.\n\nAs such, _never_ mutate properties of a state directly. That'll\njust break things.\n*/\nclass EditorState {\n    constructor(\n    /**\n    @internal\n    */\n    config, \n    /**\n    The current document.\n    */\n    doc, \n    /**\n    The current selection.\n    */\n    selection, \n    /**\n    @internal\n    */\n    values, computeSlot, tr) {\n        this.config = config;\n        this.doc = doc;\n        this.selection = selection;\n        this.values = values;\n        this.status = config.statusTemplate.slice();\n        this.computeSlot = computeSlot;\n        // Fill in the computed state immediately, so that further queries\n        // for it made during the update return this state\n        if (tr)\n            tr._state = this;\n        for (let i = 0; i < this.config.dynamicSlots.length; i++)\n            ensureAddr(this, i << 1);\n        this.computeSlot = null;\n    }\n    field(field, require = true) {\n        let addr = this.config.address[field.id];\n        if (addr == null) {\n            if (require)\n                throw new RangeError(\"Field is not present in this state\");\n            return undefined;\n        }\n        ensureAddr(this, addr);\n        return getAddr(this, addr);\n    }\n    /**\n    Create a [transaction](https://codemirror.net/6/docs/ref/#state.Transaction) that updates this\n    state. Any number of [transaction specs](https://codemirror.net/6/docs/ref/#state.TransactionSpec)\n    can be passed. Unless\n    [`sequential`](https://codemirror.net/6/docs/ref/#state.TransactionSpec.sequential) is set, the\n    [changes](https://codemirror.net/6/docs/ref/#state.TransactionSpec.changes) (if any) of each spec\n    are assumed to start in the _current_ document (not the document\n    produced by previous specs), and its\n    [selection](https://codemirror.net/6/docs/ref/#state.TransactionSpec.selection) and\n    [effects](https://codemirror.net/6/docs/ref/#state.TransactionSpec.effects) are assumed to refer\n    to the document created by its _own_ changes. The resulting\n    transaction contains the combined effect of all the different\n    specs. For [selection](https://codemirror.net/6/docs/ref/#state.TransactionSpec.selection), later\n    specs take precedence over earlier ones.\n    */\n    update(...specs) {\n        return resolveTransaction(this, specs, true);\n    }\n    /**\n    @internal\n    */\n    applyTransaction(tr) {\n        let conf = this.config, { base, compartments } = conf;\n        for (let effect of tr.effects) {\n            if (effect.is(Compartment.reconfigure)) {\n                if (conf) {\n                    compartments = new Map;\n                    conf.compartments.forEach((val, key) => compartments.set(key, val));\n                    conf = null;\n                }\n                compartments.set(effect.value.compartment, effect.value.extension);\n            }\n            else if (effect.is(StateEffect.reconfigure)) {\n                conf = null;\n                base = effect.value;\n            }\n            else if (effect.is(StateEffect.appendConfig)) {\n                conf = null;\n                base = asArray(base).concat(effect.value);\n            }\n        }\n        let startValues;\n        if (!conf) {\n            conf = Configuration.resolve(base, compartments, this);\n            let intermediateState = new EditorState(conf, this.doc, this.selection, conf.dynamicSlots.map(() => null), (state, slot) => slot.reconfigure(state, this), null);\n            startValues = intermediateState.values;\n        }\n        else {\n            startValues = tr.startState.values.slice();\n        }\n        let selection = tr.startState.facet(allowMultipleSelections) ? tr.newSelection : tr.newSelection.asSingle();\n        new EditorState(conf, tr.newDoc, selection, startValues, (state, slot) => slot.update(state, tr), tr);\n    }\n    /**\n    Create a [transaction spec](https://codemirror.net/6/docs/ref/#state.TransactionSpec) that\n    replaces every selection range with the given content.\n    */\n    replaceSelection(text) {\n        if (typeof text == \"string\")\n            text = this.toText(text);\n        return this.changeByRange(range => ({ changes: { from: range.from, to: range.to, insert: text },\n            range: EditorSelection.cursor(range.from + text.length) }));\n    }\n    /**\n    Create a set of changes and a new selection by running the given\n    function for each range in the active selection. The function\n    can return an optional set of changes (in the coordinate space\n    of the start document), plus an updated range (in the coordinate\n    space of the document produced by the call's own changes). This\n    method will merge all the changes and ranges into a single\n    changeset and selection, and return it as a [transaction\n    spec](https://codemirror.net/6/docs/ref/#state.TransactionSpec), which can be passed to\n    [`update`](https://codemirror.net/6/docs/ref/#state.EditorState.update).\n    */\n    changeByRange(f) {\n        let sel = this.selection;\n        let result1 = f(sel.ranges[0]);\n        let changes = this.changes(result1.changes), ranges = [result1.range];\n        let effects = asArray(result1.effects);\n        for (let i = 1; i < sel.ranges.length; i++) {\n            let result = f(sel.ranges[i]);\n            let newChanges = this.changes(result.changes), newMapped = newChanges.map(changes);\n            for (let j = 0; j < i; j++)\n                ranges[j] = ranges[j].map(newMapped);\n            let mapBy = changes.mapDesc(newChanges, true);\n            ranges.push(result.range.map(mapBy));\n            changes = changes.compose(newMapped);\n            effects = StateEffect.mapEffects(effects, newMapped).concat(StateEffect.mapEffects(asArray(result.effects), mapBy));\n        }\n        return {\n            changes,\n            selection: EditorSelection.create(ranges, sel.mainIndex),\n            effects\n        };\n    }\n    /**\n    Create a [change set](https://codemirror.net/6/docs/ref/#state.ChangeSet) from the given change\n    description, taking the state's document length and line\n    separator into account.\n    */\n    changes(spec = []) {\n        if (spec instanceof ChangeSet)\n            return spec;\n        return ChangeSet.of(spec, this.doc.length, this.facet(EditorState.lineSeparator));\n    }\n    /**\n    Using the state's [line\n    separator](https://codemirror.net/6/docs/ref/#state.EditorState^lineSeparator), create a\n    [`Text`](https://codemirror.net/6/docs/ref/#state.Text) instance from the given string.\n    */\n    toText(string) {\n        return Text.of(string.split(this.facet(EditorState.lineSeparator) || DefaultSplit));\n    }\n    /**\n    Return the given range of the document as a string.\n    */\n    sliceDoc(from = 0, to = this.doc.length) {\n        return this.doc.sliceString(from, to, this.lineBreak);\n    }\n    /**\n    Get the value of a state [facet](https://codemirror.net/6/docs/ref/#state.Facet).\n    */\n    facet(facet) {\n        let addr = this.config.address[facet.id];\n        if (addr == null)\n            return facet.default;\n        ensureAddr(this, addr);\n        return getAddr(this, addr);\n    }\n    /**\n    Convert this state to a JSON-serializable object. When custom\n    fields should be serialized, you can pass them in as an object\n    mapping property names (in the resulting object, which should\n    not use `doc` or `selection`) to fields.\n    */\n    toJSON(fields) {\n        let result = {\n            doc: this.sliceDoc(),\n            selection: this.selection.toJSON()\n        };\n        if (fields)\n            for (let prop in fields) {\n                let value = fields[prop];\n                if (value instanceof StateField && this.config.address[value.id] != null)\n                    result[prop] = value.spec.toJSON(this.field(fields[prop]), this);\n            }\n        return result;\n    }\n    /**\n    Deserialize a state from its JSON representation. When custom\n    fields should be deserialized, pass the same object you passed\n    to [`toJSON`](https://codemirror.net/6/docs/ref/#state.EditorState.toJSON) when serializing as\n    third argument.\n    */\n    static fromJSON(json, config = {}, fields) {\n        if (!json || typeof json.doc != \"string\")\n            throw new RangeError(\"Invalid JSON representation for EditorState\");\n        let fieldInit = [];\n        if (fields)\n            for (let prop in fields) {\n                if (Object.prototype.hasOwnProperty.call(json, prop)) {\n                    let field = fields[prop], value = json[prop];\n                    fieldInit.push(field.init(state => field.spec.fromJSON(value, state)));\n                }\n            }\n        return EditorState.create({\n            doc: json.doc,\n            selection: EditorSelection.fromJSON(json.selection),\n            extensions: config.extensions ? fieldInit.concat([config.extensions]) : fieldInit\n        });\n    }\n    /**\n    Create a new state. You'll usually only need this when\n    initializing an editor—updated states are created by applying\n    transactions.\n    */\n    static create(config = {}) {\n        let configuration = Configuration.resolve(config.extensions || [], new Map);\n        let doc = config.doc instanceof Text ? config.doc\n            : Text.of((config.doc || \"\").split(configuration.staticFacet(EditorState.lineSeparator) || DefaultSplit));\n        let selection = !config.selection ? EditorSelection.single(0)\n            : config.selection instanceof EditorSelection ? config.selection\n                : EditorSelection.single(config.selection.anchor, config.selection.head);\n        checkSelection(selection, doc.length);\n        if (!configuration.staticFacet(allowMultipleSelections))\n            selection = selection.asSingle();\n        return new EditorState(configuration, doc, selection, configuration.dynamicSlots.map(() => null), (state, slot) => slot.create(state), null);\n    }\n    /**\n    The size (in columns) of a tab in the document, determined by\n    the [`tabSize`](https://codemirror.net/6/docs/ref/#state.EditorState^tabSize) facet.\n    */\n    get tabSize() { return this.facet(EditorState.tabSize); }\n    /**\n    Get the proper [line-break](https://codemirror.net/6/docs/ref/#state.EditorState^lineSeparator)\n    string for this state.\n    */\n    get lineBreak() { return this.facet(EditorState.lineSeparator) || \"\\n\"; }\n    /**\n    Returns true when the editor is\n    [configured](https://codemirror.net/6/docs/ref/#state.EditorState^readOnly) to be read-only.\n    */\n    get readOnly() { return this.facet(readOnly); }\n    /**\n    Look up a translation for the given phrase (via the\n    [`phrases`](https://codemirror.net/6/docs/ref/#state.EditorState^phrases) facet), or return the\n    original string if no translation is found.\n    \n    If additional arguments are passed, they will be inserted in\n    place of markers like `$1` (for the first value) and `$2`, etc.\n    A single `$` is equivalent to `$1`, and `$$` will produce a\n    literal dollar sign.\n    */\n    phrase(phrase, ...insert) {\n        for (let map of this.facet(EditorState.phrases))\n            if (Object.prototype.hasOwnProperty.call(map, phrase)) {\n                phrase = map[phrase];\n                break;\n            }\n        if (insert.length)\n            phrase = phrase.replace(/\\$(\\$|\\d*)/g, (m, i) => {\n                if (i == \"$\")\n                    return \"$\";\n                let n = +(i || 1);\n                return !n || n > insert.length ? m : insert[n - 1];\n            });\n        return phrase;\n    }\n    /**\n    Find the values for a given language data field, provided by the\n    the [`languageData`](https://codemirror.net/6/docs/ref/#state.EditorState^languageData) facet.\n    \n    Examples of language data fields are...\n    \n    - [`\"commentTokens\"`](https://codemirror.net/6/docs/ref/#commands.CommentTokens) for specifying\n      comment syntax.\n    - [`\"autocomplete\"`](https://codemirror.net/6/docs/ref/#autocomplete.autocompletion^config.override)\n      for providing language-specific completion sources.\n    - [`\"wordChars\"`](https://codemirror.net/6/docs/ref/#state.EditorState.charCategorizer) for adding\n      characters that should be considered part of words in this\n      language.\n    - [`\"closeBrackets\"`](https://codemirror.net/6/docs/ref/#autocomplete.CloseBracketConfig) controls\n      bracket closing behavior.\n    */\n    languageDataAt(name, pos, side = -1) {\n        let values = [];\n        for (let provider of this.facet(languageData)) {\n            for (let result of provider(this, pos, side)) {\n                if (Object.prototype.hasOwnProperty.call(result, name))\n                    values.push(result[name]);\n            }\n        }\n        return values;\n    }\n    /**\n    Return a function that can categorize strings (expected to\n    represent a single [grapheme cluster](https://codemirror.net/6/docs/ref/#state.findClusterBreak))\n    into one of:\n    \n     - Word (contains an alphanumeric character or a character\n       explicitly listed in the local language's `\"wordChars\"`\n       language data, which should be a string)\n     - Space (contains only whitespace)\n     - Other (anything else)\n    */\n    charCategorizer(at) {\n        return makeCategorizer(this.languageDataAt(\"wordChars\", at).join(\"\"));\n    }\n    /**\n    Find the word at the given position, meaning the range\n    containing all [word](https://codemirror.net/6/docs/ref/#state.CharCategory.Word) characters\n    around it. If no word characters are adjacent to the position,\n    this returns null.\n    */\n    wordAt(pos) {\n        let { text, from, length } = this.doc.lineAt(pos);\n        let cat = this.charCategorizer(pos);\n        let start = pos - from, end = pos - from;\n        while (start > 0) {\n            let prev = findClusterBreak(text, start, false);\n            if (cat(text.slice(prev, start)) != CharCategory.Word)\n                break;\n            start = prev;\n        }\n        while (end < length) {\n            let next = findClusterBreak(text, end);\n            if (cat(text.slice(end, next)) != CharCategory.Word)\n                break;\n            end = next;\n        }\n        return start == end ? null : EditorSelection.range(start + from, end + from);\n    }\n}\n/**\nA facet that, when enabled, causes the editor to allow multiple\nranges to be selected. Be careful though, because by default the\neditor relies on the native DOM selection, which cannot handle\nmultiple selections. An extension like\n[`drawSelection`](https://codemirror.net/6/docs/ref/#view.drawSelection) can be used to make\nsecondary selections visible to the user.\n*/\nEditorState.allowMultipleSelections = allowMultipleSelections;\n/**\nConfigures the tab size to use in this state. The first\n(highest-precedence) value of the facet is used. If no value is\ngiven, this defaults to 4.\n*/\nEditorState.tabSize = /*@__PURE__*/Facet.define({\n    combine: values => values.length ? values[0] : 4\n});\n/**\nThe line separator to use. By default, any of `\"\\n\"`, `\"\\r\\n\"`\nand `\"\\r\"` is treated as a separator when splitting lines, and\nlines are joined with `\"\\n\"`.\n\nWhen you configure a value here, only that precise separator\nwill be used, allowing you to round-trip documents through the\neditor without normalizing line separators.\n*/\nEditorState.lineSeparator = lineSeparator;\n/**\nThis facet controls the value of the\n[`readOnly`](https://codemirror.net/6/docs/ref/#state.EditorState.readOnly) getter, which is\nconsulted by commands and extensions that implement editing\nfunctionality to determine whether they should apply. It\ndefaults to false, but when its highest-precedence value is\n`true`, such functionality disables itself.\n\nNot to be confused with\n[`EditorView.editable`](https://codemirror.net/6/docs/ref/#view.EditorView^editable), which\ncontrols whether the editor's DOM is set to be editable (and\nthus focusable).\n*/\nEditorState.readOnly = readOnly;\n/**\nRegisters translation phrases. The\n[`phrase`](https://codemirror.net/6/docs/ref/#state.EditorState.phrase) method will look through\nall objects registered with this facet to find translations for\nits argument.\n*/\nEditorState.phrases = /*@__PURE__*/Facet.define({\n    compare(a, b) {\n        let kA = Object.keys(a), kB = Object.keys(b);\n        return kA.length == kB.length && kA.every(k => a[k] == b[k]);\n    }\n});\n/**\nA facet used to register [language\ndata](https://codemirror.net/6/docs/ref/#state.EditorState.languageDataAt) providers.\n*/\nEditorState.languageData = languageData;\n/**\nFacet used to register change filters, which are called for each\ntransaction (unless explicitly\n[disabled](https://codemirror.net/6/docs/ref/#state.TransactionSpec.filter)), and can suppress\npart of the transaction's changes.\n\nSuch a function can return `true` to indicate that it doesn't\nwant to do anything, `false` to completely stop the changes in\nthe transaction, or a set of ranges in which changes should be\nsuppressed. Such ranges are represented as an array of numbers,\nwith each pair of two numbers indicating the start and end of a\nrange. So for example `[10, 20, 100, 110]` suppresses changes\nbetween 10 and 20, and between 100 and 110.\n*/\nEditorState.changeFilter = changeFilter;\n/**\nFacet used to register a hook that gets a chance to update or\nreplace transaction specs before they are applied. This will\nonly be applied for transactions that don't have\n[`filter`](https://codemirror.net/6/docs/ref/#state.TransactionSpec.filter) set to `false`. You\ncan either return a single transaction spec (possibly the input\ntransaction), or an array of specs (which will be combined in\nthe same way as the arguments to\n[`EditorState.update`](https://codemirror.net/6/docs/ref/#state.EditorState.update)).\n\nWhen possible, it is recommended to avoid accessing\n[`Transaction.state`](https://codemirror.net/6/docs/ref/#state.Transaction.state) in a filter,\nsince it will force creation of a state that will then be\ndiscarded again, if the transaction is actually filtered.\n\n(This functionality should be used with care. Indiscriminately\nmodifying transaction is likely to break something or degrade\nthe user experience.)\n*/\nEditorState.transactionFilter = transactionFilter;\n/**\nThis is a more limited form of\n[`transactionFilter`](https://codemirror.net/6/docs/ref/#state.EditorState^transactionFilter),\nwhich can only add\n[annotations](https://codemirror.net/6/docs/ref/#state.TransactionSpec.annotations) and\n[effects](https://codemirror.net/6/docs/ref/#state.TransactionSpec.effects). _But_, this type\nof filter runs even if the transaction has disabled regular\n[filtering](https://codemirror.net/6/docs/ref/#state.TransactionSpec.filter), making it suitable\nfor effects that don't need to touch the changes or selection,\nbut do want to process every transaction.\n\nExtenders run _after_ filters, when both are present.\n*/\nEditorState.transactionExtender = transactionExtender;\nCompartment.reconfigure = /*@__PURE__*/StateEffect.define();\n\n/**\nUtility function for combining behaviors to fill in a config\nobject from an array of provided configs. `defaults` should hold\ndefault values for all optional fields in `Config`.\n\nThe function will, by default, error\nwhen a field gets two values that aren't `===`-equal, but you can\nprovide combine functions per field to do something else.\n*/\nfunction combineConfig(configs, defaults, // Should hold only the optional properties of Config, but I haven't managed to express that\ncombine = {}) {\n    let result = {};\n    for (let config of configs)\n        for (let key of Object.keys(config)) {\n            let value = config[key], current = result[key];\n            if (current === undefined)\n                result[key] = value;\n            else if (current === value || value === undefined) ; // No conflict\n            else if (Object.hasOwnProperty.call(combine, key))\n                result[key] = combine[key](current, value);\n            else\n                throw new Error(\"Config merge conflict for field \" + key);\n        }\n    for (let key in defaults)\n        if (result[key] === undefined)\n            result[key] = defaults[key];\n    return result;\n}\n\n/**\nEach range is associated with a value, which must inherit from\nthis class.\n*/\nclass RangeValue {\n    /**\n    Compare this value with another value. Used when comparing\n    rangesets. The default implementation compares by identity.\n    Unless you are only creating a fixed number of unique instances\n    of your value type, it is a good idea to implement this\n    properly.\n    */\n    eq(other) { return this == other; }\n    /**\n    Create a [range](https://codemirror.net/6/docs/ref/#state.Range) with this value.\n    */\n    range(from, to = from) { return Range.create(from, to, this); }\n}\nRangeValue.prototype.startSide = RangeValue.prototype.endSide = 0;\nRangeValue.prototype.point = false;\nRangeValue.prototype.mapMode = MapMode.TrackDel;\n/**\nA range associates a value with a range of positions.\n*/\nclass Range {\n    constructor(\n    /**\n    The range's start position.\n    */\n    from, \n    /**\n    Its end position.\n    */\n    to, \n    /**\n    The value associated with this range.\n    */\n    value) {\n        this.from = from;\n        this.to = to;\n        this.value = value;\n    }\n    /**\n    @internal\n    */\n    static create(from, to, value) {\n        return new Range(from, to, value);\n    }\n}\nfunction cmpRange(a, b) {\n    return a.from - b.from || a.value.startSide - b.value.startSide;\n}\nclass Chunk {\n    constructor(from, to, value, \n    // Chunks are marked with the largest point that occurs\n    // in them (or -1 for no points), so that scans that are\n    // only interested in points (such as the\n    // heightmap-related logic) can skip range-only chunks.\n    maxPoint) {\n        this.from = from;\n        this.to = to;\n        this.value = value;\n        this.maxPoint = maxPoint;\n    }\n    get length() { return this.to[this.to.length - 1]; }\n    // Find the index of the given position and side. Use the ranges'\n    // `from` pos when `end == false`, `to` when `end == true`.\n    findIndex(pos, side, end, startAt = 0) {\n        let arr = end ? this.to : this.from;\n        for (let lo = startAt, hi = arr.length;;) {\n            if (lo == hi)\n                return lo;\n            let mid = (lo + hi) >> 1;\n            let diff = arr[mid] - pos || (end ? this.value[mid].endSide : this.value[mid].startSide) - side;\n            if (mid == lo)\n                return diff >= 0 ? lo : hi;\n            if (diff >= 0)\n                hi = mid;\n            else\n                lo = mid + 1;\n        }\n    }\n    between(offset, from, to, f) {\n        for (let i = this.findIndex(from, -1000000000 /* C.Far */, true), e = this.findIndex(to, 1000000000 /* C.Far */, false, i); i < e; i++)\n            if (f(this.from[i] + offset, this.to[i] + offset, this.value[i]) === false)\n                return false;\n    }\n    map(offset, changes) {\n        let value = [], from = [], to = [], newPos = -1, maxPoint = -1;\n        for (let i = 0; i < this.value.length; i++) {\n            let val = this.value[i], curFrom = this.from[i] + offset, curTo = this.to[i] + offset, newFrom, newTo;\n            if (curFrom == curTo) {\n                let mapped = changes.mapPos(curFrom, val.startSide, val.mapMode);\n                if (mapped == null)\n                    continue;\n                newFrom = newTo = mapped;\n                if (val.startSide != val.endSide) {\n                    newTo = changes.mapPos(curFrom, val.endSide);\n                    if (newTo < newFrom)\n                        continue;\n                }\n            }\n            else {\n                newFrom = changes.mapPos(curFrom, val.startSide);\n                newTo = changes.mapPos(curTo, val.endSide);\n                if (newFrom > newTo || newFrom == newTo && val.startSide > 0 && val.endSide <= 0)\n                    continue;\n            }\n            if ((newTo - newFrom || val.endSide - val.startSide) < 0)\n                continue;\n            if (newPos < 0)\n                newPos = newFrom;\n            if (val.point)\n                maxPoint = Math.max(maxPoint, newTo - newFrom);\n            value.push(val);\n            from.push(newFrom - newPos);\n            to.push(newTo - newPos);\n        }\n        return { mapped: value.length ? new Chunk(from, to, value, maxPoint) : null, pos: newPos };\n    }\n}\n/**\nA range set stores a collection of [ranges](https://codemirror.net/6/docs/ref/#state.Range) in a\nway that makes them efficient to [map](https://codemirror.net/6/docs/ref/#state.RangeSet.map) and\n[update](https://codemirror.net/6/docs/ref/#state.RangeSet.update). This is an immutable data\nstructure.\n*/\nclass RangeSet {\n    constructor(\n    /**\n    @internal\n    */\n    chunkPos, \n    /**\n    @internal\n    */\n    chunk, \n    /**\n    @internal\n    */\n    nextLayer, \n    /**\n    @internal\n    */\n    maxPoint) {\n        this.chunkPos = chunkPos;\n        this.chunk = chunk;\n        this.nextLayer = nextLayer;\n        this.maxPoint = maxPoint;\n    }\n    /**\n    @internal\n    */\n    static create(chunkPos, chunk, nextLayer, maxPoint) {\n        return new RangeSet(chunkPos, chunk, nextLayer, maxPoint);\n    }\n    /**\n    @internal\n    */\n    get length() {\n        let last = this.chunk.length - 1;\n        return last < 0 ? 0 : Math.max(this.chunkEnd(last), this.nextLayer.length);\n    }\n    /**\n    The number of ranges in the set.\n    */\n    get size() {\n        if (this.isEmpty)\n            return 0;\n        let size = this.nextLayer.size;\n        for (let chunk of this.chunk)\n            size += chunk.value.length;\n        return size;\n    }\n    /**\n    @internal\n    */\n    chunkEnd(index) {\n        return this.chunkPos[index] + this.chunk[index].length;\n    }\n    /**\n    Update the range set, optionally adding new ranges or filtering\n    out existing ones.\n    \n    (Note: The type parameter is just there as a kludge to work\n    around TypeScript variance issues that prevented `RangeSet<X>`\n    from being a subtype of `RangeSet<Y>` when `X` is a subtype of\n    `Y`.)\n    */\n    update(updateSpec) {\n        let { add = [], sort = false, filterFrom = 0, filterTo = this.length } = updateSpec;\n        let filter = updateSpec.filter;\n        if (add.length == 0 && !filter)\n            return this;\n        if (sort)\n            add = add.slice().sort(cmpRange);\n        if (this.isEmpty)\n            return add.length ? RangeSet.of(add) : this;\n        let cur = new LayerCursor(this, null, -1).goto(0), i = 0, spill = [];\n        let builder = new RangeSetBuilder();\n        while (cur.value || i < add.length) {\n            if (i < add.length && (cur.from - add[i].from || cur.startSide - add[i].value.startSide) >= 0) {\n                let range = add[i++];\n                if (!builder.addInner(range.from, range.to, range.value))\n                    spill.push(range);\n            }\n            else if (cur.rangeIndex == 1 && cur.chunkIndex < this.chunk.length &&\n                (i == add.length || this.chunkEnd(cur.chunkIndex) < add[i].from) &&\n                (!filter || filterFrom > this.chunkEnd(cur.chunkIndex) || filterTo < this.chunkPos[cur.chunkIndex]) &&\n                builder.addChunk(this.chunkPos[cur.chunkIndex], this.chunk[cur.chunkIndex])) {\n                cur.nextChunk();\n            }\n            else {\n                if (!filter || filterFrom > cur.to || filterTo < cur.from || filter(cur.from, cur.to, cur.value)) {\n                    if (!builder.addInner(cur.from, cur.to, cur.value))\n                        spill.push(Range.create(cur.from, cur.to, cur.value));\n                }\n                cur.next();\n            }\n        }\n        return builder.finishInner(this.nextLayer.isEmpty && !spill.length ? RangeSet.empty\n            : this.nextLayer.update({ add: spill, filter, filterFrom, filterTo }));\n    }\n    /**\n    Map this range set through a set of changes, return the new set.\n    */\n    map(changes) {\n        if (changes.empty || this.isEmpty)\n            return this;\n        let chunks = [], chunkPos = [], maxPoint = -1;\n        for (let i = 0; i < this.chunk.length; i++) {\n            let start = this.chunkPos[i], chunk = this.chunk[i];\n            let touch = changes.touchesRange(start, start + chunk.length);\n            if (touch === false) {\n                maxPoint = Math.max(maxPoint, chunk.maxPoint);\n                chunks.push(chunk);\n                chunkPos.push(changes.mapPos(start));\n            }\n            else if (touch === true) {\n                let { mapped, pos } = chunk.map(start, changes);\n                if (mapped) {\n                    maxPoint = Math.max(maxPoint, mapped.maxPoint);\n                    chunks.push(mapped);\n                    chunkPos.push(pos);\n                }\n            }\n        }\n        let next = this.nextLayer.map(changes);\n        return chunks.length == 0 ? next : new RangeSet(chunkPos, chunks, next || RangeSet.empty, maxPoint);\n    }\n    /**\n    Iterate over the ranges that touch the region `from` to `to`,\n    calling `f` for each. There is no guarantee that the ranges will\n    be reported in any specific order. When the callback returns\n    `false`, iteration stops.\n    */\n    between(from, to, f) {\n        if (this.isEmpty)\n            return;\n        for (let i = 0; i < this.chunk.length; i++) {\n            let start = this.chunkPos[i], chunk = this.chunk[i];\n            if (to >= start && from <= start + chunk.length &&\n                chunk.between(start, from - start, to - start, f) === false)\n                return;\n        }\n        this.nextLayer.between(from, to, f);\n    }\n    /**\n    Iterate over the ranges in this set, in order, including all\n    ranges that end at or after `from`.\n    */\n    iter(from = 0) {\n        return HeapCursor.from([this]).goto(from);\n    }\n    /**\n    @internal\n    */\n    get isEmpty() { return this.nextLayer == this; }\n    /**\n    Iterate over the ranges in a collection of sets, in order,\n    starting from `from`.\n    */\n    static iter(sets, from = 0) {\n        return HeapCursor.from(sets).goto(from);\n    }\n    /**\n    Iterate over two groups of sets, calling methods on `comparator`\n    to notify it of possible differences.\n    */\n    static compare(oldSets, newSets, \n    /**\n    This indicates how the underlying data changed between these\n    ranges, and is needed to synchronize the iteration.\n    */\n    textDiff, comparator, \n    /**\n    Can be used to ignore all non-point ranges, and points below\n    the given size. When -1, all ranges are compared.\n    */\n    minPointSize = -1) {\n        let a = oldSets.filter(set => set.maxPoint > 0 || !set.isEmpty && set.maxPoint >= minPointSize);\n        let b = newSets.filter(set => set.maxPoint > 0 || !set.isEmpty && set.maxPoint >= minPointSize);\n        let sharedChunks = findSharedChunks(a, b, textDiff);\n        let sideA = new SpanCursor(a, sharedChunks, minPointSize);\n        let sideB = new SpanCursor(b, sharedChunks, minPointSize);\n        textDiff.iterGaps((fromA, fromB, length) => compare(sideA, fromA, sideB, fromB, length, comparator));\n        if (textDiff.empty && textDiff.length == 0)\n            compare(sideA, 0, sideB, 0, 0, comparator);\n    }\n    /**\n    Compare the contents of two groups of range sets, returning true\n    if they are equivalent in the given range.\n    */\n    static eq(oldSets, newSets, from = 0, to) {\n        if (to == null)\n            to = 1000000000 /* C.Far */ - 1;\n        let a = oldSets.filter(set => !set.isEmpty && newSets.indexOf(set) < 0);\n        let b = newSets.filter(set => !set.isEmpty && oldSets.indexOf(set) < 0);\n        if (a.length != b.length)\n            return false;\n        if (!a.length)\n            return true;\n        let sharedChunks = findSharedChunks(a, b);\n        let sideA = new SpanCursor(a, sharedChunks, 0).goto(from), sideB = new SpanCursor(b, sharedChunks, 0).goto(from);\n        for (;;) {\n            if (sideA.to != sideB.to ||\n                !sameValues(sideA.active, sideB.active) ||\n                sideA.point && (!sideB.point || !sideA.point.eq(sideB.point)))\n                return false;\n            if (sideA.to > to)\n                return true;\n            sideA.next();\n            sideB.next();\n        }\n    }\n    /**\n    Iterate over a group of range sets at the same time, notifying\n    the iterator about the ranges covering every given piece of\n    content. Returns the open count (see\n    [`SpanIterator.span`](https://codemirror.net/6/docs/ref/#state.SpanIterator.span)) at the end\n    of the iteration.\n    */\n    static spans(sets, from, to, iterator, \n    /**\n    When given and greater than -1, only points of at least this\n    size are taken into account.\n    */\n    minPointSize = -1) {\n        let cursor = new SpanCursor(sets, null, minPointSize).goto(from), pos = from;\n        let openRanges = cursor.openStart;\n        for (;;) {\n            let curTo = Math.min(cursor.to, to);\n            if (cursor.point) {\n                let active = cursor.activeForPoint(cursor.to);\n                let openCount = cursor.pointFrom < from ? active.length + 1\n                    : cursor.point.startSide < 0 ? active.length\n                        : Math.min(active.length, openRanges);\n                iterator.point(pos, curTo, cursor.point, active, openCount, cursor.pointRank);\n                openRanges = Math.min(cursor.openEnd(curTo), active.length);\n            }\n            else if (curTo > pos) {\n                iterator.span(pos, curTo, cursor.active, openRanges);\n                openRanges = cursor.openEnd(curTo);\n            }\n            if (cursor.to > to)\n                return openRanges + (cursor.point && cursor.to > to ? 1 : 0);\n            pos = cursor.to;\n            cursor.next();\n        }\n    }\n    /**\n    Create a range set for the given range or array of ranges. By\n    default, this expects the ranges to be _sorted_ (by start\n    position and, if two start at the same position,\n    `value.startSide`). You can pass `true` as second argument to\n    cause the method to sort them.\n    */\n    static of(ranges, sort = false) {\n        let build = new RangeSetBuilder();\n        for (let range of ranges instanceof Range ? [ranges] : sort ? lazySort(ranges) : ranges)\n            build.add(range.from, range.to, range.value);\n        return build.finish();\n    }\n    /**\n    Join an array of range sets into a single set.\n    */\n    static join(sets) {\n        if (!sets.length)\n            return RangeSet.empty;\n        let result = sets[sets.length - 1];\n        for (let i = sets.length - 2; i >= 0; i--) {\n            for (let layer = sets[i]; layer != RangeSet.empty; layer = layer.nextLayer)\n                result = new RangeSet(layer.chunkPos, layer.chunk, result, Math.max(layer.maxPoint, result.maxPoint));\n        }\n        return result;\n    }\n}\n/**\nThe empty set of ranges.\n*/\nRangeSet.empty = /*@__PURE__*/new RangeSet([], [], null, -1);\nfunction lazySort(ranges) {\n    if (ranges.length > 1)\n        for (let prev = ranges[0], i = 1; i < ranges.length; i++) {\n            let cur = ranges[i];\n            if (cmpRange(prev, cur) > 0)\n                return ranges.slice().sort(cmpRange);\n            prev = cur;\n        }\n    return ranges;\n}\nRangeSet.empty.nextLayer = RangeSet.empty;\n/**\nA range set builder is a data structure that helps build up a\n[range set](https://codemirror.net/6/docs/ref/#state.RangeSet) directly, without first allocating\nan array of [`Range`](https://codemirror.net/6/docs/ref/#state.Range) objects.\n*/\nclass RangeSetBuilder {\n    finishChunk(newArrays) {\n        this.chunks.push(new Chunk(this.from, this.to, this.value, this.maxPoint));\n        this.chunkPos.push(this.chunkStart);\n        this.chunkStart = -1;\n        this.setMaxPoint = Math.max(this.setMaxPoint, this.maxPoint);\n        this.maxPoint = -1;\n        if (newArrays) {\n            this.from = [];\n            this.to = [];\n            this.value = [];\n        }\n    }\n    /**\n    Create an empty builder.\n    */\n    constructor() {\n        this.chunks = [];\n        this.chunkPos = [];\n        this.chunkStart = -1;\n        this.last = null;\n        this.lastFrom = -1000000000 /* C.Far */;\n        this.lastTo = -1000000000 /* C.Far */;\n        this.from = [];\n        this.to = [];\n        this.value = [];\n        this.maxPoint = -1;\n        this.setMaxPoint = -1;\n        this.nextLayer = null;\n    }\n    /**\n    Add a range. Ranges should be added in sorted (by `from` and\n    `value.startSide`) order.\n    */\n    add(from, to, value) {\n        if (!this.addInner(from, to, value))\n            (this.nextLayer || (this.nextLayer = new RangeSetBuilder)).add(from, to, value);\n    }\n    /**\n    @internal\n    */\n    addInner(from, to, value) {\n        let diff = from - this.lastTo || value.startSide - this.last.endSide;\n        if (diff <= 0 && (from - this.lastFrom || value.startSide - this.last.startSide) < 0)\n            throw new Error(\"Ranges must be added sorted by `from` position and `startSide`\");\n        if (diff < 0)\n            return false;\n        if (this.from.length == 250 /* C.ChunkSize */)\n            this.finishChunk(true);\n        if (this.chunkStart < 0)\n            this.chunkStart = from;\n        this.from.push(from - this.chunkStart);\n        this.to.push(to - this.chunkStart);\n        this.last = value;\n        this.lastFrom = from;\n        this.lastTo = to;\n        this.value.push(value);\n        if (value.point)\n            this.maxPoint = Math.max(this.maxPoint, to - from);\n        return true;\n    }\n    /**\n    @internal\n    */\n    addChunk(from, chunk) {\n        if ((from - this.lastTo || chunk.value[0].startSide - this.last.endSide) < 0)\n            return false;\n        if (this.from.length)\n            this.finishChunk(true);\n        this.setMaxPoint = Math.max(this.setMaxPoint, chunk.maxPoint);\n        this.chunks.push(chunk);\n        this.chunkPos.push(from);\n        let last = chunk.value.length - 1;\n        this.last = chunk.value[last];\n        this.lastFrom = chunk.from[last] + from;\n        this.lastTo = chunk.to[last] + from;\n        return true;\n    }\n    /**\n    Finish the range set. Returns the new set. The builder can't be\n    used anymore after this has been called.\n    */\n    finish() { return this.finishInner(RangeSet.empty); }\n    /**\n    @internal\n    */\n    finishInner(next) {\n        if (this.from.length)\n            this.finishChunk(false);\n        if (this.chunks.length == 0)\n            return next;\n        let result = RangeSet.create(this.chunkPos, this.chunks, this.nextLayer ? this.nextLayer.finishInner(next) : next, this.setMaxPoint);\n        this.from = null; // Make sure further `add` calls produce errors\n        return result;\n    }\n}\nfunction findSharedChunks(a, b, textDiff) {\n    let inA = new Map();\n    for (let set of a)\n        for (let i = 0; i < set.chunk.length; i++)\n            if (set.chunk[i].maxPoint <= 0)\n                inA.set(set.chunk[i], set.chunkPos[i]);\n    let shared = new Set();\n    for (let set of b)\n        for (let i = 0; i < set.chunk.length; i++) {\n            let known = inA.get(set.chunk[i]);\n            if (known != null && (textDiff ? textDiff.mapPos(known) : known) == set.chunkPos[i] &&\n                !(textDiff === null || textDiff === void 0 ? void 0 : textDiff.touchesRange(known, known + set.chunk[i].length)))\n                shared.add(set.chunk[i]);\n        }\n    return shared;\n}\nclass LayerCursor {\n    constructor(layer, skip, minPoint, rank = 0) {\n        this.layer = layer;\n        this.skip = skip;\n        this.minPoint = minPoint;\n        this.rank = rank;\n    }\n    get startSide() { return this.value ? this.value.startSide : 0; }\n    get endSide() { return this.value ? this.value.endSide : 0; }\n    goto(pos, side = -1000000000 /* C.Far */) {\n        this.chunkIndex = this.rangeIndex = 0;\n        this.gotoInner(pos, side, false);\n        return this;\n    }\n    gotoInner(pos, side, forward) {\n        while (this.chunkIndex < this.layer.chunk.length) {\n            let next = this.layer.chunk[this.chunkIndex];\n            if (!(this.skip && this.skip.has(next) ||\n                this.layer.chunkEnd(this.chunkIndex) < pos ||\n                next.maxPoint < this.minPoint))\n                break;\n            this.chunkIndex++;\n            forward = false;\n        }\n        if (this.chunkIndex < this.layer.chunk.length) {\n            let rangeIndex = this.layer.chunk[this.chunkIndex].findIndex(pos - this.layer.chunkPos[this.chunkIndex], side, true);\n            if (!forward || this.rangeIndex < rangeIndex)\n                this.setRangeIndex(rangeIndex);\n        }\n        this.next();\n    }\n    forward(pos, side) {\n        if ((this.to - pos || this.endSide - side) < 0)\n            this.gotoInner(pos, side, true);\n    }\n    next() {\n        for (;;) {\n            if (this.chunkIndex == this.layer.chunk.length) {\n                this.from = this.to = 1000000000 /* C.Far */;\n                this.value = null;\n                break;\n            }\n            else {\n                let chunkPos = this.layer.chunkPos[this.chunkIndex], chunk = this.layer.chunk[this.chunkIndex];\n                let from = chunkPos + chunk.from[this.rangeIndex];\n                this.from = from;\n                this.to = chunkPos + chunk.to[this.rangeIndex];\n                this.value = chunk.value[this.rangeIndex];\n                this.setRangeIndex(this.rangeIndex + 1);\n                if (this.minPoint < 0 || this.value.point && this.to - this.from >= this.minPoint)\n                    break;\n            }\n        }\n    }\n    setRangeIndex(index) {\n        if (index == this.layer.chunk[this.chunkIndex].value.length) {\n            this.chunkIndex++;\n            if (this.skip) {\n                while (this.chunkIndex < this.layer.chunk.length && this.skip.has(this.layer.chunk[this.chunkIndex]))\n                    this.chunkIndex++;\n            }\n            this.rangeIndex = 0;\n        }\n        else {\n            this.rangeIndex = index;\n        }\n    }\n    nextChunk() {\n        this.chunkIndex++;\n        this.rangeIndex = 0;\n        this.next();\n    }\n    compare(other) {\n        return this.from - other.from || this.startSide - other.startSide || this.rank - other.rank ||\n            this.to - other.to || this.endSide - other.endSide;\n    }\n}\nclass HeapCursor {\n    constructor(heap) {\n        this.heap = heap;\n    }\n    static from(sets, skip = null, minPoint = -1) {\n        let heap = [];\n        for (let i = 0; i < sets.length; i++) {\n            for (let cur = sets[i]; !cur.isEmpty; cur = cur.nextLayer) {\n                if (cur.maxPoint >= minPoint)\n                    heap.push(new LayerCursor(cur, skip, minPoint, i));\n            }\n        }\n        return heap.length == 1 ? heap[0] : new HeapCursor(heap);\n    }\n    get startSide() { return this.value ? this.value.startSide : 0; }\n    goto(pos, side = -1000000000 /* C.Far */) {\n        for (let cur of this.heap)\n            cur.goto(pos, side);\n        for (let i = this.heap.length >> 1; i >= 0; i--)\n            heapBubble(this.heap, i);\n        this.next();\n        return this;\n    }\n    forward(pos, side) {\n        for (let cur of this.heap)\n            cur.forward(pos, side);\n        for (let i = this.heap.length >> 1; i >= 0; i--)\n            heapBubble(this.heap, i);\n        if ((this.to - pos || this.value.endSide - side) < 0)\n            this.next();\n    }\n    next() {\n        if (this.heap.length == 0) {\n            this.from = this.to = 1000000000 /* C.Far */;\n            this.value = null;\n            this.rank = -1;\n        }\n        else {\n            let top = this.heap[0];\n            this.from = top.from;\n            this.to = top.to;\n            this.value = top.value;\n            this.rank = top.rank;\n            if (top.value)\n                top.next();\n            heapBubble(this.heap, 0);\n        }\n    }\n}\nfunction heapBubble(heap, index) {\n    for (let cur = heap[index];;) {\n        let childIndex = (index << 1) + 1;\n        if (childIndex >= heap.length)\n            break;\n        let child = heap[childIndex];\n        if (childIndex + 1 < heap.length && child.compare(heap[childIndex + 1]) >= 0) {\n            child = heap[childIndex + 1];\n            childIndex++;\n        }\n        if (cur.compare(child) < 0)\n            break;\n        heap[childIndex] = cur;\n        heap[index] = child;\n        index = childIndex;\n    }\n}\nclass SpanCursor {\n    constructor(sets, skip, minPoint) {\n        this.minPoint = minPoint;\n        this.active = [];\n        this.activeTo = [];\n        this.activeRank = [];\n        this.minActive = -1;\n        // A currently active point range, if any\n        this.point = null;\n        this.pointFrom = 0;\n        this.pointRank = 0;\n        this.to = -1000000000 /* C.Far */;\n        this.endSide = 0;\n        // The amount of open active ranges at the start of the iterator.\n        // Not including points.\n        this.openStart = -1;\n        this.cursor = HeapCursor.from(sets, skip, minPoint);\n    }\n    goto(pos, side = -1000000000 /* C.Far */) {\n        this.cursor.goto(pos, side);\n        this.active.length = this.activeTo.length = this.activeRank.length = 0;\n        this.minActive = -1;\n        this.to = pos;\n        this.endSide = side;\n        this.openStart = -1;\n        this.next();\n        return this;\n    }\n    forward(pos, side) {\n        while (this.minActive > -1 && (this.activeTo[this.minActive] - pos || this.active[this.minActive].endSide - side) < 0)\n            this.removeActive(this.minActive);\n        this.cursor.forward(pos, side);\n    }\n    removeActive(index) {\n        remove(this.active, index);\n        remove(this.activeTo, index);\n        remove(this.activeRank, index);\n        this.minActive = findMinIndex(this.active, this.activeTo);\n    }\n    addActive(trackOpen) {\n        let i = 0, { value, to, rank } = this.cursor;\n        // Organize active marks by rank first, then by size\n        while (i < this.activeRank.length && (rank - this.activeRank[i] || to - this.activeTo[i]) > 0)\n            i++;\n        insert(this.active, i, value);\n        insert(this.activeTo, i, to);\n        insert(this.activeRank, i, rank);\n        if (trackOpen)\n            insert(trackOpen, i, this.cursor.from);\n        this.minActive = findMinIndex(this.active, this.activeTo);\n    }\n    // After calling this, if `this.point` != null, the next range is a\n    // point. Otherwise, it's a regular range, covered by `this.active`.\n    next() {\n        let from = this.to, wasPoint = this.point;\n        this.point = null;\n        let trackOpen = this.openStart < 0 ? [] : null;\n        for (;;) {\n            let a = this.minActive;\n            if (a > -1 && (this.activeTo[a] - this.cursor.from || this.active[a].endSide - this.cursor.startSide) < 0) {\n                if (this.activeTo[a] > from) {\n                    this.to = this.activeTo[a];\n                    this.endSide = this.active[a].endSide;\n                    break;\n                }\n                this.removeActive(a);\n                if (trackOpen)\n                    remove(trackOpen, a);\n            }\n            else if (!this.cursor.value) {\n                this.to = this.endSide = 1000000000 /* C.Far */;\n                break;\n            }\n            else if (this.cursor.from > from) {\n                this.to = this.cursor.from;\n                this.endSide = this.cursor.startSide;\n                break;\n            }\n            else {\n                let nextVal = this.cursor.value;\n                if (!nextVal.point) { // Opening a range\n                    this.addActive(trackOpen);\n                    this.cursor.next();\n                }\n                else if (wasPoint && this.cursor.to == this.to && this.cursor.from < this.cursor.to) {\n                    // Ignore any non-empty points that end precisely at the end of the prev point\n                    this.cursor.next();\n                }\n                else { // New point\n                    this.point = nextVal;\n                    this.pointFrom = this.cursor.from;\n                    this.pointRank = this.cursor.rank;\n                    this.to = this.cursor.to;\n                    this.endSide = nextVal.endSide;\n                    this.cursor.next();\n                    this.forward(this.to, this.endSide);\n                    break;\n                }\n            }\n        }\n        if (trackOpen) {\n            this.openStart = 0;\n            for (let i = trackOpen.length - 1; i >= 0 && trackOpen[i] < from; i--)\n                this.openStart++;\n        }\n    }\n    activeForPoint(to) {\n        if (!this.active.length)\n            return this.active;\n        let active = [];\n        for (let i = this.active.length - 1; i >= 0; i--) {\n            if (this.activeRank[i] < this.pointRank)\n                break;\n            if (this.activeTo[i] > to || this.activeTo[i] == to && this.active[i].endSide >= this.point.endSide)\n                active.push(this.active[i]);\n        }\n        return active.reverse();\n    }\n    openEnd(to) {\n        let open = 0;\n        for (let i = this.activeTo.length - 1; i >= 0 && this.activeTo[i] > to; i--)\n            open++;\n        return open;\n    }\n}\nfunction compare(a, startA, b, startB, length, comparator) {\n    a.goto(startA);\n    b.goto(startB);\n    let endB = startB + length;\n    let pos = startB, dPos = startB - startA;\n    for (;;) {\n        let dEnd = (a.to + dPos) - b.to, diff = dEnd || a.endSide - b.endSide;\n        let end = diff < 0 ? a.to + dPos : b.to, clipEnd = Math.min(end, endB);\n        if (a.point || b.point) {\n            if (!(a.point && b.point && (a.point == b.point || a.point.eq(b.point)) &&\n                sameValues(a.activeForPoint(a.to), b.activeForPoint(b.to))))\n                comparator.comparePoint(pos, clipEnd, a.point, b.point);\n        }\n        else {\n            if (clipEnd > pos && !sameValues(a.active, b.active))\n                comparator.compareRange(pos, clipEnd, a.active, b.active);\n        }\n        if (end > endB)\n            break;\n        if ((dEnd || a.openEnd != b.openEnd) && comparator.boundChange)\n            comparator.boundChange(end);\n        pos = end;\n        if (diff <= 0)\n            a.next();\n        if (diff >= 0)\n            b.next();\n    }\n}\nfunction sameValues(a, b) {\n    if (a.length != b.length)\n        return false;\n    for (let i = 0; i < a.length; i++)\n        if (a[i] != b[i] && !a[i].eq(b[i]))\n            return false;\n    return true;\n}\nfunction remove(array, index) {\n    for (let i = index, e = array.length - 1; i < e; i++)\n        array[i] = array[i + 1];\n    array.pop();\n}\nfunction insert(array, index, value) {\n    for (let i = array.length - 1; i >= index; i--)\n        array[i + 1] = array[i];\n    array[index] = value;\n}\nfunction findMinIndex(value, array) {\n    let found = -1, foundPos = 1000000000 /* C.Far */;\n    for (let i = 0; i < array.length; i++)\n        if ((array[i] - foundPos || value[i].endSide - value[found].endSide) < 0) {\n            found = i;\n            foundPos = array[i];\n        }\n    return found;\n}\n\n/**\nCount the column position at the given offset into the string,\ntaking extending characters and tab size into account.\n*/\nfunction countColumn(string, tabSize, to = string.length) {\n    let n = 0;\n    for (let i = 0; i < to && i < string.length;) {\n        if (string.charCodeAt(i) == 9) {\n            n += tabSize - (n % tabSize);\n            i++;\n        }\n        else {\n            n++;\n            i = findClusterBreak(string, i);\n        }\n    }\n    return n;\n}\n/**\nFind the offset that corresponds to the given column position in a\nstring, taking extending characters and tab size into account. By\ndefault, the string length is returned when it is too short to\nreach the column. Pass `strict` true to make it return -1 in that\nsituation.\n*/\nfunction findColumn(string, col, tabSize, strict) {\n    for (let i = 0, n = 0;;) {\n        if (n >= col)\n            return i;\n        if (i == string.length)\n            break;\n        n += string.charCodeAt(i) == 9 ? tabSize - (n % tabSize) : 1;\n        i = findClusterBreak(string, i);\n    }\n    return strict === true ? -1 : string.length;\n}\n\nexport { Annotation, AnnotationType, ChangeDesc, ChangeSet, CharCategory, Compartment, EditorSelection, EditorState, Facet, Line, MapMode, Prec, Range, RangeSet, RangeSetBuilder, RangeValue, SelectionRange, StateEffect, StateEffectType, StateField, Text, Transaction, codePointAt, codePointSize, combineConfig, countColumn, findClusterBreak, findColumn, fromCodePoint };\n","const C = \"\\u037c\"\nconst COUNT = typeof Symbol == \"undefined\" ? \"__\" + C : Symbol.for(C)\nconst SET = typeof Symbol == \"undefined\" ? \"__styleSet\" + Math.floor(Math.random() * 1e8) : Symbol(\"styleSet\")\nconst top = typeof globalThis != \"undefined\" ? globalThis : typeof window != \"undefined\" ? window : {}\n\n// :: - Style modules encapsulate a set of CSS rules defined from\n// JavaScript. Their definitions are only available in a given DOM\n// root after it has been _mounted_ there with `StyleModule.mount`.\n//\n// Style modules should be created once and stored somewhere, as\n// opposed to re-creating them every time you need them. The amount of\n// CSS rules generated for a given DOM root is bounded by the amount\n// of style modules that were used. So to avoid leaking rules, don't\n// create these dynamically, but treat them as one-time allocations.\nexport class StyleModule {\n  // :: (Object<Style>, ?{finish: ?(string) → string})\n  // Create a style module from the given spec.\n  //\n  // When `finish` is given, it is called on regular (non-`@`)\n  // selectors (after `&` expansion) to compute the final selector.\n  constructor(spec, options) {\n    this.rules = []\n    let {finish} = options || {}\n\n    function splitSelector(selector) {\n      return /^@/.test(selector) ? [selector] : selector.split(/,\\s*/)\n    }\n\n    function render(selectors, spec, target, isKeyframes) {\n      let local = [], isAt = /^@(\\w+)\\b/.exec(selectors[0]), keyframes = isAt && isAt[1] == \"keyframes\"\n      if (isAt && spec == null) return target.push(selectors[0] + \";\")\n      for (let prop in spec) {\n        let value = spec[prop]\n        if (/&/.test(prop)) {\n          render(prop.split(/,\\s*/).map(part => selectors.map(sel => part.replace(/&/, sel))).reduce((a, b) => a.concat(b)),\n                 value, target)\n        } else if (value && typeof value == \"object\") {\n          if (!isAt) throw new RangeError(\"The value of a property (\" + prop + \") should be a primitive value.\")\n          render(splitSelector(prop), value, local, keyframes)\n        } else if (value != null) {\n          local.push(prop.replace(/_.*/, \"\").replace(/[A-Z]/g, l => \"-\" + l.toLowerCase()) + \": \" + value + \";\")\n        }\n      }\n      if (local.length || keyframes) {\n        target.push((finish && !isAt && !isKeyframes ? selectors.map(finish) : selectors).join(\", \") +\n                    \" {\" + local.join(\" \") + \"}\")\n      }\n    }\n\n    for (let prop in spec) render(splitSelector(prop), spec[prop], this.rules)\n  }\n\n  // :: () → string\n  // Returns a string containing the module's CSS rules.\n  getRules() { return this.rules.join(\"\\n\") }\n\n  // :: () → string\n  // Generate a new unique CSS class name.\n  static newName() {\n    let id = top[COUNT] || 1\n    top[COUNT] = id + 1\n    return C + id.toString(36)\n  }\n\n  // :: (union<Document, ShadowRoot>, union<[StyleModule], StyleModule>, ?{nonce: ?string})\n  //\n  // Mount the given set of modules in the given DOM root, which ensures\n  // that the CSS rules defined by the module are available in that\n  // context.\n  //\n  // Rules are only added to the document once per root.\n  //\n  // Rule order will follow the order of the modules, so that rules from\n  // modules later in the array take precedence of those from earlier\n  // modules. If you call this function multiple times for the same root\n  // in a way that changes the order of already mounted modules, the old\n  // order will be changed.\n  //\n  // If a Content Security Policy nonce is provided, it is added to\n  // the `<style>` tag generated by the library.\n  static mount(root, modules, options) {\n    let set = root[SET], nonce = options && options.nonce\n    if (!set) set = new StyleSet(root, nonce)\n    else if (nonce) set.setNonce(nonce)\n    set.mount(Array.isArray(modules) ? modules : [modules], root)\n  }\n}\n\nlet adoptedSet = new Map //<Document, StyleSet>\n\nclass StyleSet {\n  constructor(root, nonce) {\n    let doc = root.ownerDocument || root, win = doc.defaultView\n    if (!root.head && root.adoptedStyleSheets && win.CSSStyleSheet) {\n      let adopted = adoptedSet.get(doc)\n      if (adopted) return root[SET] = adopted\n      this.sheet = new win.CSSStyleSheet\n      adoptedSet.set(doc, this)\n    } else {\n      this.styleTag = doc.createElement(\"style\")\n      if (nonce) this.styleTag.setAttribute(\"nonce\", nonce)\n    }\n    this.modules = []\n    root[SET] = this\n  }\n\n  mount(modules, root) {\n    let sheet = this.sheet\n    let pos = 0 /* Current rule offset */, j = 0 /* Index into this.modules */\n    for (let i = 0; i < modules.length; i++) {\n      let mod = modules[i], index = this.modules.indexOf(mod)\n      if (index < j && index > -1) { // Ordering conflict\n        this.modules.splice(index, 1)\n        j--\n        index = -1\n      }\n      if (index == -1) {\n        this.modules.splice(j++, 0, mod)\n        if (sheet) for (let k = 0; k < mod.rules.length; k++)\n          sheet.insertRule(mod.rules[k], pos++)\n      } else {\n        while (j < index) pos += this.modules[j++].rules.length\n        pos += mod.rules.length\n        j++\n      }\n    }\n\n    if (sheet) {\n      if (root.adoptedStyleSheets.indexOf(this.sheet) < 0)\n        root.adoptedStyleSheets = [this.sheet, ...root.adoptedStyleSheets]\n    } else {\n      let text = \"\"\n      for (let i = 0; i < this.modules.length; i++)\n        text += this.modules[i].getRules() + \"\\n\"\n      this.styleTag.textContent = text\n      let target = root.head || root\n      if (this.styleTag.parentNode != target)\n        target.insertBefore(this.styleTag, target.firstChild)\n    }\n  }\n\n  setNonce(nonce) {\n    if (this.styleTag && this.styleTag.getAttribute(\"nonce\") != nonce)\n      this.styleTag.setAttribute(\"nonce\", nonce)\n  }\n}\n\n// Style::Object<union<Style,string>>\n//\n// A style is an object that, in the simple case, maps CSS property\n// names to strings holding their values, as in `{color: \"red\",\n// fontWeight: \"bold\"}`. The property names can be given in\n// camel-case—the library will insert a dash before capital letters\n// when converting them to CSS.\n//\n// If you include an underscore in a property name, it and everything\n// after it will be removed from the output, which can be useful when\n// providing a property multiple times, for browser compatibility\n// reasons.\n//\n// A property in a style object can also be a sub-selector, which\n// extends the current context to add a pseudo-selector or a child\n// selector. Such a property should contain a `&` character, which\n// will be replaced by the current selector. For example `{\"&:before\":\n// {content: '\"hi\"'}}`. Sub-selectors and regular properties can\n// freely be mixed in a given object. Any property containing a `&` is\n// assumed to be a sub-selector.\n//\n// Finally, a property can specify an @-block to be wrapped around the\n// styles defined inside the object that's the property's value. For\n// example to create a media query you can do `{\"@media screen and\n// (min-width: 400px)\": {...}}`.\n","export default function crelt() {\n  var elt = arguments[0]\n  if (typeof elt == \"string\") elt = document.createElement(elt)\n  var i = 1, next = arguments[1]\n  if (next && typeof next == \"object\" && next.nodeType == null && !Array.isArray(next)) {\n    for (var name in next) if (Object.prototype.hasOwnProperty.call(next, name)) {\n      var value = next[name]\n      if (typeof value == \"string\") elt.setAttribute(name, value)\n      else if (value != null) elt[name] = value\n    }\n    i++\n  }\n  for (; i < arguments.length; i++) add(elt, arguments[i])\n  return elt\n}\n\nfunction add(elt, child) {\n  if (typeof child == \"string\") {\n    elt.appendChild(document.createTextNode(child))\n  } else if (child == null) {\n  } else if (child.nodeType != null) {\n    elt.appendChild(child)\n  } else if (Array.isArray(child)) {\n    for (var i = 0; i < child.length; i++) add(elt, child[i])\n  } else {\n    throw new RangeError(\"Unsupported child node: \" + child)\n  }\n}\n","import { Text, RangeSet, MapMode, RangeValue, findClusterBreak, EditorSelection, Facet, StateEffect, ChangeSet, findColumn, CharCategory, EditorState, Annotation, Transaction, Prec, codePointAt, codePointSize, combineConfig, StateField, RangeSetBuilder, countColumn } from '@codemirror/state';\nimport { StyleModule } from 'style-mod';\nimport { keyName, base, shift } from 'w3c-keyname';\nimport elt from 'crelt';\n\nfunction getSelection(root) {\n    let target;\n    // Browsers differ on whether shadow roots have a getSelection\n    // method. If it exists, use that, otherwise, call it on the\n    // document.\n    if (root.nodeType == 11) { // Shadow root\n        target = root.getSelection ? root : root.ownerDocument;\n    }\n    else {\n        target = root;\n    }\n    return target.getSelection();\n}\nfunction contains(dom, node) {\n    return node ? dom == node || dom.contains(node.nodeType != 1 ? node.parentNode : node) : false;\n}\nfunction hasSelection(dom, selection) {\n    if (!selection.anchorNode)\n        return false;\n    try {\n        // Firefox will raise 'permission denied' errors when accessing\n        // properties of `sel.anchorNode` when it's in a generated CSS\n        // element.\n        return contains(dom, selection.anchorNode);\n    }\n    catch (_) {\n        return false;\n    }\n}\nfunction clientRectsFor(dom) {\n    if (dom.nodeType == 3)\n        return textRange(dom, 0, dom.nodeValue.length).getClientRects();\n    else if (dom.nodeType == 1)\n        return dom.getClientRects();\n    else\n        return [];\n}\n// Scans forward and backward through DOM positions equivalent to the\n// given one to see if the two are in the same place (i.e. after a\n// text node vs at the end of that text node)\nfunction isEquivalentPosition(node, off, targetNode, targetOff) {\n    return targetNode ? (scanFor(node, off, targetNode, targetOff, -1) ||\n        scanFor(node, off, targetNode, targetOff, 1)) : false;\n}\nfunction domIndex(node) {\n    for (var index = 0;; index++) {\n        node = node.previousSibling;\n        if (!node)\n            return index;\n    }\n}\nfunction isBlockElement(node) {\n    return node.nodeType == 1 && /^(DIV|P|LI|UL|OL|BLOCKQUOTE|DD|DT|H\\d|SECTION|PRE)$/.test(node.nodeName);\n}\nfunction scanFor(node, off, targetNode, targetOff, dir) {\n    for (;;) {\n        if (node == targetNode && off == targetOff)\n            return true;\n        if (off == (dir < 0 ? 0 : maxOffset(node))) {\n            if (node.nodeName == \"DIV\")\n                return false;\n            let parent = node.parentNode;\n            if (!parent || parent.nodeType != 1)\n                return false;\n            off = domIndex(node) + (dir < 0 ? 0 : 1);\n            node = parent;\n        }\n        else if (node.nodeType == 1) {\n            node = node.childNodes[off + (dir < 0 ? -1 : 0)];\n            if (node.nodeType == 1 && node.contentEditable == \"false\")\n                return false;\n            off = dir < 0 ? maxOffset(node) : 0;\n        }\n        else {\n            return false;\n        }\n    }\n}\nfunction maxOffset(node) {\n    return node.nodeType == 3 ? node.nodeValue.length : node.childNodes.length;\n}\nfunction flattenRect(rect, left) {\n    let x = left ? rect.left : rect.right;\n    return { left: x, right: x, top: rect.top, bottom: rect.bottom };\n}\nfunction windowRect(win) {\n    let vp = win.visualViewport;\n    if (vp)\n        return {\n            left: 0, right: vp.width,\n            top: 0, bottom: vp.height\n        };\n    return { left: 0, right: win.innerWidth,\n        top: 0, bottom: win.innerHeight };\n}\nfunction getScale(elt, rect) {\n    let scaleX = rect.width / elt.offsetWidth;\n    let scaleY = rect.height / elt.offsetHeight;\n    if (scaleX > 0.995 && scaleX < 1.005 || !isFinite(scaleX) || Math.abs(rect.width - elt.offsetWidth) < 1)\n        scaleX = 1;\n    if (scaleY > 0.995 && scaleY < 1.005 || !isFinite(scaleY) || Math.abs(rect.height - elt.offsetHeight) < 1)\n        scaleY = 1;\n    return { scaleX, scaleY };\n}\nfunction scrollRectIntoView(dom, rect, side, x, y, xMargin, yMargin, ltr) {\n    let doc = dom.ownerDocument, win = doc.defaultView || window;\n    for (let cur = dom, stop = false; cur && !stop;) {\n        if (cur.nodeType == 1) { // Element\n            let bounding, top = cur == doc.body;\n            let scaleX = 1, scaleY = 1;\n            if (top) {\n                bounding = windowRect(win);\n            }\n            else {\n                if (/^(fixed|sticky)$/.test(getComputedStyle(cur).position))\n                    stop = true;\n                if (cur.scrollHeight <= cur.clientHeight && cur.scrollWidth <= cur.clientWidth) {\n                    cur = cur.assignedSlot || cur.parentNode;\n                    continue;\n                }\n                let rect = cur.getBoundingClientRect();\n                ({ scaleX, scaleY } = getScale(cur, rect));\n                // Make sure scrollbar width isn't included in the rectangle\n                bounding = { left: rect.left, right: rect.left + cur.clientWidth * scaleX,\n                    top: rect.top, bottom: rect.top + cur.clientHeight * scaleY };\n            }\n            let moveX = 0, moveY = 0;\n            if (y == \"nearest\") {\n                if (rect.top < bounding.top) {\n                    moveY = rect.top - (bounding.top + yMargin);\n                    if (side > 0 && rect.bottom > bounding.bottom + moveY)\n                        moveY = rect.bottom - bounding.bottom + yMargin;\n                }\n                else if (rect.bottom > bounding.bottom) {\n                    moveY = rect.bottom - bounding.bottom + yMargin;\n                    if (side < 0 && (rect.top - moveY) < bounding.top)\n                        moveY = rect.top - (bounding.top + yMargin);\n                }\n            }\n            else {\n                let rectHeight = rect.bottom - rect.top, boundingHeight = bounding.bottom - bounding.top;\n                let targetTop = y == \"center\" && rectHeight <= boundingHeight ? rect.top + rectHeight / 2 - boundingHeight / 2 :\n                    y == \"start\" || y == \"center\" && side < 0 ? rect.top - yMargin :\n                        rect.bottom - boundingHeight + yMargin;\n                moveY = targetTop - bounding.top;\n            }\n            if (x == \"nearest\") {\n                if (rect.left < bounding.left) {\n                    moveX = rect.left - (bounding.left + xMargin);\n                    if (side > 0 && rect.right > bounding.right + moveX)\n                        moveX = rect.right - bounding.right + xMargin;\n                }\n                else if (rect.right > bounding.right) {\n                    moveX = rect.right - bounding.right + xMargin;\n                    if (side < 0 && rect.left < bounding.left + moveX)\n                        moveX = rect.left - (bounding.left + xMargin);\n                }\n            }\n            else {\n                let targetLeft = x == \"center\" ? rect.left + (rect.right - rect.left) / 2 - (bounding.right - bounding.left) / 2 :\n                    (x == \"start\") == ltr ? rect.left - xMargin :\n                        rect.right - (bounding.right - bounding.left) + xMargin;\n                moveX = targetLeft - bounding.left;\n            }\n            if (moveX || moveY) {\n                if (top) {\n                    win.scrollBy(moveX, moveY);\n                }\n                else {\n                    let movedX = 0, movedY = 0;\n                    if (moveY) {\n                        let start = cur.scrollTop;\n                        cur.scrollTop += moveY / scaleY;\n                        movedY = (cur.scrollTop - start) * scaleY;\n                    }\n                    if (moveX) {\n                        let start = cur.scrollLeft;\n                        cur.scrollLeft += moveX / scaleX;\n                        movedX = (cur.scrollLeft - start) * scaleX;\n                    }\n                    rect = { left: rect.left - movedX, top: rect.top - movedY,\n                        right: rect.right - movedX, bottom: rect.bottom - movedY };\n                    if (movedX && Math.abs(movedX - moveX) < 1)\n                        x = \"nearest\";\n                    if (movedY && Math.abs(movedY - moveY) < 1)\n                        y = \"nearest\";\n                }\n            }\n            if (top)\n                break;\n            if (rect.top < bounding.top || rect.bottom > bounding.bottom ||\n                rect.left < bounding.left || rect.right > bounding.right)\n                rect = { left: Math.max(rect.left, bounding.left), right: Math.min(rect.right, bounding.right),\n                    top: Math.max(rect.top, bounding.top), bottom: Math.min(rect.bottom, bounding.bottom) };\n            cur = cur.assignedSlot || cur.parentNode;\n        }\n        else if (cur.nodeType == 11) { // A shadow root\n            cur = cur.host;\n        }\n        else {\n            break;\n        }\n    }\n}\nfunction scrollableParents(dom) {\n    let doc = dom.ownerDocument, x, y;\n    for (let cur = dom.parentNode; cur;) {\n        if (cur == doc.body || (x && y)) {\n            break;\n        }\n        else if (cur.nodeType == 1) {\n            if (!y && cur.scrollHeight > cur.clientHeight)\n                y = cur;\n            if (!x && cur.scrollWidth > cur.clientWidth)\n                x = cur;\n            cur = cur.assignedSlot || cur.parentNode;\n        }\n        else if (cur.nodeType == 11) {\n            cur = cur.host;\n        }\n        else {\n            break;\n        }\n    }\n    return { x, y };\n}\nclass DOMSelectionState {\n    constructor() {\n        this.anchorNode = null;\n        this.anchorOffset = 0;\n        this.focusNode = null;\n        this.focusOffset = 0;\n    }\n    eq(domSel) {\n        return this.anchorNode == domSel.anchorNode && this.anchorOffset == domSel.anchorOffset &&\n            this.focusNode == domSel.focusNode && this.focusOffset == domSel.focusOffset;\n    }\n    setRange(range) {\n        let { anchorNode, focusNode } = range;\n        // Clip offsets to node size to avoid crashes when Safari reports bogus offsets (#1152)\n        this.set(anchorNode, Math.min(range.anchorOffset, anchorNode ? maxOffset(anchorNode) : 0), focusNode, Math.min(range.focusOffset, focusNode ? maxOffset(focusNode) : 0));\n    }\n    set(anchorNode, anchorOffset, focusNode, focusOffset) {\n        this.anchorNode = anchorNode;\n        this.anchorOffset = anchorOffset;\n        this.focusNode = focusNode;\n        this.focusOffset = focusOffset;\n    }\n}\nlet preventScrollSupported = null;\n// Feature-detects support for .focus({preventScroll: true}), and uses\n// a fallback kludge when not supported.\nfunction focusPreventScroll(dom) {\n    if (dom.setActive)\n        return dom.setActive(); // in IE\n    if (preventScrollSupported)\n        return dom.focus(preventScrollSupported);\n    let stack = [];\n    for (let cur = dom; cur; cur = cur.parentNode) {\n        stack.push(cur, cur.scrollTop, cur.scrollLeft);\n        if (cur == cur.ownerDocument)\n            break;\n    }\n    dom.focus(preventScrollSupported == null ? {\n        get preventScroll() {\n            preventScrollSupported = { preventScroll: true };\n            return true;\n        }\n    } : undefined);\n    if (!preventScrollSupported) {\n        preventScrollSupported = false;\n        for (let i = 0; i < stack.length;) {\n            let elt = stack[i++], top = stack[i++], left = stack[i++];\n            if (elt.scrollTop != top)\n                elt.scrollTop = top;\n            if (elt.scrollLeft != left)\n                elt.scrollLeft = left;\n        }\n    }\n}\nlet scratchRange;\nfunction textRange(node, from, to = from) {\n    let range = scratchRange || (scratchRange = document.createRange());\n    range.setEnd(node, to);\n    range.setStart(node, from);\n    return range;\n}\nfunction dispatchKey(elt, name, code, mods) {\n    let options = { key: name, code: name, keyCode: code, which: code, cancelable: true };\n    if (mods)\n        ({ altKey: options.altKey, ctrlKey: options.ctrlKey, shiftKey: options.shiftKey, metaKey: options.metaKey } = mods);\n    let down = new KeyboardEvent(\"keydown\", options);\n    down.synthetic = true;\n    elt.dispatchEvent(down);\n    let up = new KeyboardEvent(\"keyup\", options);\n    up.synthetic = true;\n    elt.dispatchEvent(up);\n    return down.defaultPrevented || up.defaultPrevented;\n}\nfunction getRoot(node) {\n    while (node) {\n        if (node && (node.nodeType == 9 || node.nodeType == 11 && node.host))\n            return node;\n        node = node.assignedSlot || node.parentNode;\n    }\n    return null;\n}\nfunction clearAttributes(node) {\n    while (node.attributes.length)\n        node.removeAttributeNode(node.attributes[0]);\n}\nfunction atElementStart(doc, selection) {\n    let node = selection.focusNode, offset = selection.focusOffset;\n    if (!node || selection.anchorNode != node || selection.anchorOffset != offset)\n        return false;\n    // Safari can report bogus offsets (#1152)\n    offset = Math.min(offset, maxOffset(node));\n    for (;;) {\n        if (offset) {\n            if (node.nodeType != 1)\n                return false;\n            let prev = node.childNodes[offset - 1];\n            if (prev.contentEditable == \"false\")\n                offset--;\n            else {\n                node = prev;\n                offset = maxOffset(node);\n            }\n        }\n        else if (node == doc) {\n            return true;\n        }\n        else {\n            offset = domIndex(node);\n            node = node.parentNode;\n        }\n    }\n}\nfunction isScrolledToBottom(elt) {\n    return elt.scrollTop > Math.max(1, elt.scrollHeight - elt.clientHeight - 4);\n}\nfunction textNodeBefore(startNode, startOffset) {\n    for (let node = startNode, offset = startOffset;;) {\n        if (node.nodeType == 3 && offset > 0) {\n            return { node: node, offset: offset };\n        }\n        else if (node.nodeType == 1 && offset > 0) {\n            if (node.contentEditable == \"false\")\n                return null;\n            node = node.childNodes[offset - 1];\n            offset = maxOffset(node);\n        }\n        else if (node.parentNode && !isBlockElement(node)) {\n            offset = domIndex(node);\n            node = node.parentNode;\n        }\n        else {\n            return null;\n        }\n    }\n}\nfunction textNodeAfter(startNode, startOffset) {\n    for (let node = startNode, offset = startOffset;;) {\n        if (node.nodeType == 3 && offset < node.nodeValue.length) {\n            return { node: node, offset: offset };\n        }\n        else if (node.nodeType == 1 && offset < node.childNodes.length) {\n            if (node.contentEditable == \"false\")\n                return null;\n            node = node.childNodes[offset];\n            offset = 0;\n        }\n        else if (node.parentNode && !isBlockElement(node)) {\n            offset = domIndex(node) + 1;\n            node = node.parentNode;\n        }\n        else {\n            return null;\n        }\n    }\n}\n\nclass DOMPos {\n    constructor(node, offset, precise = true) {\n        this.node = node;\n        this.offset = offset;\n        this.precise = precise;\n    }\n    static before(dom, precise) { return new DOMPos(dom.parentNode, domIndex(dom), precise); }\n    static after(dom, precise) { return new DOMPos(dom.parentNode, domIndex(dom) + 1, precise); }\n}\nconst noChildren = [];\nclass ContentView {\n    constructor() {\n        this.parent = null;\n        this.dom = null;\n        this.flags = 2 /* ViewFlag.NodeDirty */;\n    }\n    get overrideDOMText() { return null; }\n    get posAtStart() {\n        return this.parent ? this.parent.posBefore(this) : 0;\n    }\n    get posAtEnd() {\n        return this.posAtStart + this.length;\n    }\n    posBefore(view) {\n        let pos = this.posAtStart;\n        for (let child of this.children) {\n            if (child == view)\n                return pos;\n            pos += child.length + child.breakAfter;\n        }\n        throw new RangeError(\"Invalid child in posBefore\");\n    }\n    posAfter(view) {\n        return this.posBefore(view) + view.length;\n    }\n    sync(view, track) {\n        if (this.flags & 2 /* ViewFlag.NodeDirty */) {\n            let parent = this.dom;\n            let prev = null, next;\n            for (let child of this.children) {\n                if (child.flags & 7 /* ViewFlag.Dirty */) {\n                    if (!child.dom && (next = prev ? prev.nextSibling : parent.firstChild)) {\n                        let contentView = ContentView.get(next);\n                        if (!contentView || !contentView.parent && contentView.canReuseDOM(child))\n                            child.reuseDOM(next);\n                    }\n                    child.sync(view, track);\n                    child.flags &= ~7 /* ViewFlag.Dirty */;\n                }\n                next = prev ? prev.nextSibling : parent.firstChild;\n                if (track && !track.written && track.node == parent && next != child.dom)\n                    track.written = true;\n                if (child.dom.parentNode == parent) {\n                    while (next && next != child.dom)\n                        next = rm$1(next);\n                }\n                else {\n                    parent.insertBefore(child.dom, next);\n                }\n                prev = child.dom;\n            }\n            next = prev ? prev.nextSibling : parent.firstChild;\n            if (next && track && track.node == parent)\n                track.written = true;\n            while (next)\n                next = rm$1(next);\n        }\n        else if (this.flags & 1 /* ViewFlag.ChildDirty */) {\n            for (let child of this.children)\n                if (child.flags & 7 /* ViewFlag.Dirty */) {\n                    child.sync(view, track);\n                    child.flags &= ~7 /* ViewFlag.Dirty */;\n                }\n        }\n    }\n    reuseDOM(_dom) { }\n    localPosFromDOM(node, offset) {\n        let after;\n        if (node == this.dom) {\n            after = this.dom.childNodes[offset];\n        }\n        else {\n            let bias = maxOffset(node) == 0 ? 0 : offset == 0 ? -1 : 1;\n            for (;;) {\n                let parent = node.parentNode;\n                if (parent == this.dom)\n                    break;\n                if (bias == 0 && parent.firstChild != parent.lastChild) {\n                    if (node == parent.firstChild)\n                        bias = -1;\n                    else\n                        bias = 1;\n                }\n                node = parent;\n            }\n            if (bias < 0)\n                after = node;\n            else\n                after = node.nextSibling;\n        }\n        if (after == this.dom.firstChild)\n            return 0;\n        while (after && !ContentView.get(after))\n            after = after.nextSibling;\n        if (!after)\n            return this.length;\n        for (let i = 0, pos = 0;; i++) {\n            let child = this.children[i];\n            if (child.dom == after)\n                return pos;\n            pos += child.length + child.breakAfter;\n        }\n    }\n    domBoundsAround(from, to, offset = 0) {\n        let fromI = -1, fromStart = -1, toI = -1, toEnd = -1;\n        for (let i = 0, pos = offset, prevEnd = offset; i < this.children.length; i++) {\n            let child = this.children[i], end = pos + child.length;\n            if (pos < from && end > to)\n                return child.domBoundsAround(from, to, pos);\n            if (end >= from && fromI == -1) {\n                fromI = i;\n                fromStart = pos;\n            }\n            if (pos > to && child.dom.parentNode == this.dom) {\n                toI = i;\n                toEnd = prevEnd;\n                break;\n            }\n            prevEnd = end;\n            pos = end + child.breakAfter;\n        }\n        return { from: fromStart, to: toEnd < 0 ? offset + this.length : toEnd,\n            startDOM: (fromI ? this.children[fromI - 1].dom.nextSibling : null) || this.dom.firstChild,\n            endDOM: toI < this.children.length && toI >= 0 ? this.children[toI].dom : null };\n    }\n    markDirty(andParent = false) {\n        this.flags |= 2 /* ViewFlag.NodeDirty */;\n        this.markParentsDirty(andParent);\n    }\n    markParentsDirty(childList) {\n        for (let parent = this.parent; parent; parent = parent.parent) {\n            if (childList)\n                parent.flags |= 2 /* ViewFlag.NodeDirty */;\n            if (parent.flags & 1 /* ViewFlag.ChildDirty */)\n                return;\n            parent.flags |= 1 /* ViewFlag.ChildDirty */;\n            childList = false;\n        }\n    }\n    setParent(parent) {\n        if (this.parent != parent) {\n            this.parent = parent;\n            if (this.flags & 7 /* ViewFlag.Dirty */)\n                this.markParentsDirty(true);\n        }\n    }\n    setDOM(dom) {\n        if (this.dom == dom)\n            return;\n        if (this.dom)\n            this.dom.cmView = null;\n        this.dom = dom;\n        dom.cmView = this;\n    }\n    get rootView() {\n        for (let v = this;;) {\n            let parent = v.parent;\n            if (!parent)\n                return v;\n            v = parent;\n        }\n    }\n    replaceChildren(from, to, children = noChildren) {\n        this.markDirty();\n        for (let i = from; i < to; i++) {\n            let child = this.children[i];\n            if (child.parent == this && children.indexOf(child) < 0)\n                child.destroy();\n        }\n        if (children.length < 250)\n            this.children.splice(from, to - from, ...children);\n        else\n            this.children = [].concat(this.children.slice(0, from), children, this.children.slice(to));\n        for (let i = 0; i < children.length; i++)\n            children[i].setParent(this);\n    }\n    ignoreMutation(_rec) { return false; }\n    ignoreEvent(_event) { return false; }\n    childCursor(pos = this.length) {\n        return new ChildCursor(this.children, pos, this.children.length);\n    }\n    childPos(pos, bias = 1) {\n        return this.childCursor().findPos(pos, bias);\n    }\n    toString() {\n        let name = this.constructor.name.replace(\"View\", \"\");\n        return name + (this.children.length ? \"(\" + this.children.join() + \")\" :\n            this.length ? \"[\" + (name == \"Text\" ? this.text : this.length) + \"]\" : \"\") +\n            (this.breakAfter ? \"#\" : \"\");\n    }\n    static get(node) { return node.cmView; }\n    get isEditable() { return true; }\n    get isWidget() { return false; }\n    get isHidden() { return false; }\n    merge(from, to, source, hasStart, openStart, openEnd) {\n        return false;\n    }\n    become(other) { return false; }\n    canReuseDOM(other) {\n        return other.constructor == this.constructor && !((this.flags | other.flags) & 8 /* ViewFlag.Composition */);\n    }\n    // When this is a zero-length view with a side, this should return a\n    // number <= 0 to indicate it is before its position, or a\n    // number > 0 when after its position.\n    getSide() { return 0; }\n    destroy() {\n        for (let child of this.children)\n            if (child.parent == this)\n                child.destroy();\n        this.parent = null;\n    }\n}\nContentView.prototype.breakAfter = 0;\n// Remove a DOM node and return its next sibling.\nfunction rm$1(dom) {\n    let next = dom.nextSibling;\n    dom.parentNode.removeChild(dom);\n    return next;\n}\nclass ChildCursor {\n    constructor(children, pos, i) {\n        this.children = children;\n        this.pos = pos;\n        this.i = i;\n        this.off = 0;\n    }\n    findPos(pos, bias = 1) {\n        for (;;) {\n            if (pos > this.pos || pos == this.pos &&\n                (bias > 0 || this.i == 0 || this.children[this.i - 1].breakAfter)) {\n                this.off = pos - this.pos;\n                return this;\n            }\n            let next = this.children[--this.i];\n            this.pos -= next.length + next.breakAfter;\n        }\n    }\n}\nfunction replaceRange(parent, fromI, fromOff, toI, toOff, insert, breakAtStart, openStart, openEnd) {\n    let { children } = parent;\n    let before = children.length ? children[fromI] : null;\n    let last = insert.length ? insert[insert.length - 1] : null;\n    let breakAtEnd = last ? last.breakAfter : breakAtStart;\n    // Change within a single child\n    if (fromI == toI && before && !breakAtStart && !breakAtEnd && insert.length < 2 &&\n        before.merge(fromOff, toOff, insert.length ? last : null, fromOff == 0, openStart, openEnd))\n        return;\n    if (toI < children.length) {\n        let after = children[toI];\n        // Make sure the end of the child after the update is preserved in `after`\n        if (after && (toOff < after.length || after.breakAfter && (last === null || last === void 0 ? void 0 : last.breakAfter))) {\n            // If we're splitting a child, separate part of it to avoid that\n            // being mangled when updating the child before the update.\n            if (fromI == toI) {\n                after = after.split(toOff);\n                toOff = 0;\n            }\n            // If the element after the replacement should be merged with\n            // the last replacing element, update `content`\n            if (!breakAtEnd && last && after.merge(0, toOff, last, true, 0, openEnd)) {\n                insert[insert.length - 1] = after;\n            }\n            else {\n                // Remove the start of the after element, if necessary, and\n                // add it to `content`.\n                if (toOff || after.children.length && !after.children[0].length)\n                    after.merge(0, toOff, null, false, 0, openEnd);\n                insert.push(after);\n            }\n        }\n        else if (after === null || after === void 0 ? void 0 : after.breakAfter) {\n            // The element at `toI` is entirely covered by this range.\n            // Preserve its line break, if any.\n            if (last)\n                last.breakAfter = 1;\n            else\n                breakAtStart = 1;\n        }\n        // Since we've handled the next element from the current elements\n        // now, make sure `toI` points after that.\n        toI++;\n    }\n    if (before) {\n        before.breakAfter = breakAtStart;\n        if (fromOff > 0) {\n            if (!breakAtStart && insert.length && before.merge(fromOff, before.length, insert[0], false, openStart, 0)) {\n                before.breakAfter = insert.shift().breakAfter;\n            }\n            else if (fromOff < before.length || before.children.length && before.children[before.children.length - 1].length == 0) {\n                before.merge(fromOff, before.length, null, false, openStart, 0);\n            }\n            fromI++;\n        }\n    }\n    // Try to merge widgets on the boundaries of the replacement\n    while (fromI < toI && insert.length) {\n        if (children[toI - 1].become(insert[insert.length - 1])) {\n            toI--;\n            insert.pop();\n            openEnd = insert.length ? 0 : openStart;\n        }\n        else if (children[fromI].become(insert[0])) {\n            fromI++;\n            insert.shift();\n            openStart = insert.length ? 0 : openEnd;\n        }\n        else {\n            break;\n        }\n    }\n    if (!insert.length && fromI && toI < children.length && !children[fromI - 1].breakAfter &&\n        children[toI].merge(0, 0, children[fromI - 1], false, openStart, openEnd))\n        fromI--;\n    if (fromI < toI || insert.length)\n        parent.replaceChildren(fromI, toI, insert);\n}\nfunction mergeChildrenInto(parent, from, to, insert, openStart, openEnd) {\n    let cur = parent.childCursor();\n    let { i: toI, off: toOff } = cur.findPos(to, 1);\n    let { i: fromI, off: fromOff } = cur.findPos(from, -1);\n    let dLen = from - to;\n    for (let view of insert)\n        dLen += view.length;\n    parent.length += dLen;\n    replaceRange(parent, fromI, fromOff, toI, toOff, insert, 0, openStart, openEnd);\n}\n\nlet nav = typeof navigator != \"undefined\" ? navigator : { userAgent: \"\", vendor: \"\", platform: \"\" };\nlet doc = typeof document != \"undefined\" ? document : { documentElement: { style: {} } };\nconst ie_edge = /*@__PURE__*//Edge\\/(\\d+)/.exec(nav.userAgent);\nconst ie_upto10 = /*@__PURE__*//MSIE \\d/.test(nav.userAgent);\nconst ie_11up = /*@__PURE__*//Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(nav.userAgent);\nconst ie = !!(ie_upto10 || ie_11up || ie_edge);\nconst gecko = !ie && /*@__PURE__*//gecko\\/(\\d+)/i.test(nav.userAgent);\nconst chrome = !ie && /*@__PURE__*//Chrome\\/(\\d+)/.exec(nav.userAgent);\nconst webkit = \"webkitFontSmoothing\" in doc.documentElement.style;\nconst safari = !ie && /*@__PURE__*//Apple Computer/.test(nav.vendor);\nconst ios = safari && (/*@__PURE__*//Mobile\\/\\w+/.test(nav.userAgent) || nav.maxTouchPoints > 2);\nvar browser = {\n    mac: ios || /*@__PURE__*//Mac/.test(nav.platform),\n    windows: /*@__PURE__*//Win/.test(nav.platform),\n    linux: /*@__PURE__*//Linux|X11/.test(nav.platform),\n    ie,\n    ie_version: ie_upto10 ? doc.documentMode || 6 : ie_11up ? +ie_11up[1] : ie_edge ? +ie_edge[1] : 0,\n    gecko,\n    gecko_version: gecko ? +(/*@__PURE__*//Firefox\\/(\\d+)/.exec(nav.userAgent) || [0, 0])[1] : 0,\n    chrome: !!chrome,\n    chrome_version: chrome ? +chrome[1] : 0,\n    ios,\n    android: /*@__PURE__*//Android\\b/.test(nav.userAgent),\n    webkit,\n    safari,\n    webkit_version: webkit ? +(/*@__PURE__*//\\bAppleWebKit\\/(\\d+)/.exec(nav.userAgent) || [0, 0])[1] : 0,\n    tabSize: doc.documentElement.style.tabSize != null ? \"tab-size\" : \"-moz-tab-size\"\n};\n\nconst MaxJoinLen = 256;\nclass TextView extends ContentView {\n    constructor(text) {\n        super();\n        this.text = text;\n    }\n    get length() { return this.text.length; }\n    createDOM(textDOM) {\n        this.setDOM(textDOM || document.createTextNode(this.text));\n    }\n    sync(view, track) {\n        if (!this.dom)\n            this.createDOM();\n        if (this.dom.nodeValue != this.text) {\n            if (track && track.node == this.dom)\n                track.written = true;\n            this.dom.nodeValue = this.text;\n        }\n    }\n    reuseDOM(dom) {\n        if (dom.nodeType == 3)\n            this.createDOM(dom);\n    }\n    merge(from, to, source) {\n        if ((this.flags & 8 /* ViewFlag.Composition */) ||\n            source && (!(source instanceof TextView) ||\n                this.length - (to - from) + source.length > MaxJoinLen ||\n                (source.flags & 8 /* ViewFlag.Composition */)))\n            return false;\n        this.text = this.text.slice(0, from) + (source ? source.text : \"\") + this.text.slice(to);\n        this.markDirty();\n        return true;\n    }\n    split(from) {\n        let result = new TextView(this.text.slice(from));\n        this.text = this.text.slice(0, from);\n        this.markDirty();\n        result.flags |= this.flags & 8 /* ViewFlag.Composition */;\n        return result;\n    }\n    localPosFromDOM(node, offset) {\n        return node == this.dom ? offset : offset ? this.text.length : 0;\n    }\n    domAtPos(pos) { return new DOMPos(this.dom, pos); }\n    domBoundsAround(_from, _to, offset) {\n        return { from: offset, to: offset + this.length, startDOM: this.dom, endDOM: this.dom.nextSibling };\n    }\n    coordsAt(pos, side) {\n        return textCoords(this.dom, pos, side);\n    }\n}\nclass MarkView extends ContentView {\n    constructor(mark, children = [], length = 0) {\n        super();\n        this.mark = mark;\n        this.children = children;\n        this.length = length;\n        for (let ch of children)\n            ch.setParent(this);\n    }\n    setAttrs(dom) {\n        clearAttributes(dom);\n        if (this.mark.class)\n            dom.className = this.mark.class;\n        if (this.mark.attrs)\n            for (let name in this.mark.attrs)\n                dom.setAttribute(name, this.mark.attrs[name]);\n        return dom;\n    }\n    canReuseDOM(other) {\n        return super.canReuseDOM(other) && !((this.flags | other.flags) & 8 /* ViewFlag.Composition */);\n    }\n    reuseDOM(node) {\n        if (node.nodeName == this.mark.tagName.toUpperCase()) {\n            this.setDOM(node);\n            this.flags |= 4 /* ViewFlag.AttrsDirty */ | 2 /* ViewFlag.NodeDirty */;\n        }\n    }\n    sync(view, track) {\n        if (!this.dom)\n            this.setDOM(this.setAttrs(document.createElement(this.mark.tagName)));\n        else if (this.flags & 4 /* ViewFlag.AttrsDirty */)\n            this.setAttrs(this.dom);\n        super.sync(view, track);\n    }\n    merge(from, to, source, _hasStart, openStart, openEnd) {\n        if (source && (!(source instanceof MarkView && source.mark.eq(this.mark)) ||\n            (from && openStart <= 0) || (to < this.length && openEnd <= 0)))\n            return false;\n        mergeChildrenInto(this, from, to, source ? source.children.slice() : [], openStart - 1, openEnd - 1);\n        this.markDirty();\n        return true;\n    }\n    split(from) {\n        let result = [], off = 0, detachFrom = -1, i = 0;\n        for (let elt of this.children) {\n            let end = off + elt.length;\n            if (end > from)\n                result.push(off < from ? elt.split(from - off) : elt);\n            if (detachFrom < 0 && off >= from)\n                detachFrom = i;\n            off = end;\n            i++;\n        }\n        let length = this.length - from;\n        this.length = from;\n        if (detachFrom > -1) {\n            this.children.length = detachFrom;\n            this.markDirty();\n        }\n        return new MarkView(this.mark, result, length);\n    }\n    domAtPos(pos) {\n        return inlineDOMAtPos(this, pos);\n    }\n    coordsAt(pos, side) {\n        return coordsInChildren(this, pos, side);\n    }\n}\nfunction textCoords(text, pos, side) {\n    let length = text.nodeValue.length;\n    if (pos > length)\n        pos = length;\n    let from = pos, to = pos, flatten = 0;\n    if (pos == 0 && side < 0 || pos == length && side >= 0) {\n        if (!(browser.chrome || browser.gecko)) { // These browsers reliably return valid rectangles for empty ranges\n            if (pos) {\n                from--;\n                flatten = 1;\n            } // FIXME this is wrong in RTL text\n            else if (to < length) {\n                to++;\n                flatten = -1;\n            }\n        }\n    }\n    else {\n        if (side < 0)\n            from--;\n        else if (to < length)\n            to++;\n    }\n    let rects = textRange(text, from, to).getClientRects();\n    if (!rects.length)\n        return null;\n    let rect = rects[(flatten ? flatten < 0 : side >= 0) ? 0 : rects.length - 1];\n    if (browser.safari && !flatten && rect.width == 0)\n        rect = Array.prototype.find.call(rects, r => r.width) || rect;\n    return flatten ? flattenRect(rect, flatten < 0) : rect || null;\n}\n// Also used for collapsed ranges that don't have a placeholder widget!\nclass WidgetView extends ContentView {\n    static create(widget, length, side) {\n        return new WidgetView(widget, length, side);\n    }\n    constructor(widget, length, side) {\n        super();\n        this.widget = widget;\n        this.length = length;\n        this.side = side;\n        this.prevWidget = null;\n    }\n    split(from) {\n        let result = WidgetView.create(this.widget, this.length - from, this.side);\n        this.length -= from;\n        return result;\n    }\n    sync(view) {\n        if (!this.dom || !this.widget.updateDOM(this.dom, view)) {\n            if (this.dom && this.prevWidget)\n                this.prevWidget.destroy(this.dom);\n            this.prevWidget = null;\n            this.setDOM(this.widget.toDOM(view));\n            if (!this.widget.editable)\n                this.dom.contentEditable = \"false\";\n        }\n    }\n    getSide() { return this.side; }\n    merge(from, to, source, hasStart, openStart, openEnd) {\n        if (source && (!(source instanceof WidgetView) || !this.widget.compare(source.widget) ||\n            from > 0 && openStart <= 0 || to < this.length && openEnd <= 0))\n            return false;\n        this.length = from + (source ? source.length : 0) + (this.length - to);\n        return true;\n    }\n    become(other) {\n        if (other instanceof WidgetView && other.side == this.side &&\n            this.widget.constructor == other.widget.constructor) {\n            if (!this.widget.compare(other.widget))\n                this.markDirty(true);\n            if (this.dom && !this.prevWidget)\n                this.prevWidget = this.widget;\n            this.widget = other.widget;\n            this.length = other.length;\n            return true;\n        }\n        return false;\n    }\n    ignoreMutation() { return true; }\n    ignoreEvent(event) { return this.widget.ignoreEvent(event); }\n    get overrideDOMText() {\n        if (this.length == 0)\n            return Text.empty;\n        let top = this;\n        while (top.parent)\n            top = top.parent;\n        let { view } = top, text = view && view.state.doc, start = this.posAtStart;\n        return text ? text.slice(start, start + this.length) : Text.empty;\n    }\n    domAtPos(pos) {\n        return (this.length ? pos == 0 : this.side > 0)\n            ? DOMPos.before(this.dom)\n            : DOMPos.after(this.dom, pos == this.length);\n    }\n    domBoundsAround() { return null; }\n    coordsAt(pos, side) {\n        let custom = this.widget.coordsAt(this.dom, pos, side);\n        if (custom)\n            return custom;\n        let rects = this.dom.getClientRects(), rect = null;\n        if (!rects.length)\n            return null;\n        let fromBack = this.side ? this.side < 0 : pos > 0;\n        for (let i = fromBack ? rects.length - 1 : 0;; i += (fromBack ? -1 : 1)) {\n            rect = rects[i];\n            if (pos > 0 ? i == 0 : i == rects.length - 1 || rect.top < rect.bottom)\n                break;\n        }\n        return flattenRect(rect, !fromBack);\n    }\n    get isEditable() { return false; }\n    get isWidget() { return true; }\n    get isHidden() { return this.widget.isHidden; }\n    destroy() {\n        super.destroy();\n        if (this.dom)\n            this.widget.destroy(this.dom);\n    }\n}\n// These are drawn around uneditable widgets to avoid a number of\n// browser bugs that show up when the cursor is directly next to\n// uneditable inline content.\nclass WidgetBufferView extends ContentView {\n    constructor(side) {\n        super();\n        this.side = side;\n    }\n    get length() { return 0; }\n    merge() { return false; }\n    become(other) {\n        return other instanceof WidgetBufferView && other.side == this.side;\n    }\n    split() { return new WidgetBufferView(this.side); }\n    sync() {\n        if (!this.dom) {\n            let dom = document.createElement(\"img\");\n            dom.className = \"cm-widgetBuffer\";\n            dom.setAttribute(\"aria-hidden\", \"true\");\n            this.setDOM(dom);\n        }\n    }\n    getSide() { return this.side; }\n    domAtPos(pos) { return this.side > 0 ? DOMPos.before(this.dom) : DOMPos.after(this.dom); }\n    localPosFromDOM() { return 0; }\n    domBoundsAround() { return null; }\n    coordsAt(pos) {\n        return this.dom.getBoundingClientRect();\n    }\n    get overrideDOMText() {\n        return Text.empty;\n    }\n    get isHidden() { return true; }\n}\nTextView.prototype.children = WidgetView.prototype.children = WidgetBufferView.prototype.children = noChildren;\nfunction inlineDOMAtPos(parent, pos) {\n    let dom = parent.dom, { children } = parent, i = 0;\n    for (let off = 0; i < children.length; i++) {\n        let child = children[i], end = off + child.length;\n        if (end == off && child.getSide() <= 0)\n            continue;\n        if (pos > off && pos < end && child.dom.parentNode == dom)\n            return child.domAtPos(pos - off);\n        if (pos <= off)\n            break;\n        off = end;\n    }\n    for (let j = i; j > 0; j--) {\n        let prev = children[j - 1];\n        if (prev.dom.parentNode == dom)\n            return prev.domAtPos(prev.length);\n    }\n    for (let j = i; j < children.length; j++) {\n        let next = children[j];\n        if (next.dom.parentNode == dom)\n            return next.domAtPos(0);\n    }\n    return new DOMPos(dom, 0);\n}\n// Assumes `view`, if a mark view, has precisely 1 child.\nfunction joinInlineInto(parent, view, open) {\n    let last, { children } = parent;\n    if (open > 0 && view instanceof MarkView && children.length &&\n        (last = children[children.length - 1]) instanceof MarkView && last.mark.eq(view.mark)) {\n        joinInlineInto(last, view.children[0], open - 1);\n    }\n    else {\n        children.push(view);\n        view.setParent(parent);\n    }\n    parent.length += view.length;\n}\nfunction coordsInChildren(view, pos, side) {\n    let before = null, beforePos = -1, after = null, afterPos = -1;\n    function scan(view, pos) {\n        for (let i = 0, off = 0; i < view.children.length && off <= pos; i++) {\n            let child = view.children[i], end = off + child.length;\n            if (end >= pos) {\n                if (child.children.length) {\n                    scan(child, pos - off);\n                }\n                else if ((!after || after.isHidden && (side > 0 || onSameLine(after, child))) &&\n                    (end > pos || off == end && child.getSide() > 0)) {\n                    after = child;\n                    afterPos = pos - off;\n                }\n                else if (off < pos || (off == end && child.getSide() < 0) && !child.isHidden) {\n                    before = child;\n                    beforePos = pos - off;\n                }\n            }\n            off = end;\n        }\n    }\n    scan(view, pos);\n    let target = (side < 0 ? before : after) || before || after;\n    if (target)\n        return target.coordsAt(Math.max(0, target == before ? beforePos : afterPos), side);\n    return fallbackRect(view);\n}\nfunction fallbackRect(view) {\n    let last = view.dom.lastChild;\n    if (!last)\n        return view.dom.getBoundingClientRect();\n    let rects = clientRectsFor(last);\n    return rects[rects.length - 1] || null;\n}\nfunction onSameLine(a, b) {\n    let posA = a.coordsAt(0, 1), posB = b.coordsAt(0, 1);\n    return posA && posB && posB.top < posA.bottom;\n}\n\nfunction combineAttrs(source, target) {\n    for (let name in source) {\n        if (name == \"class\" && target.class)\n            target.class += \" \" + source.class;\n        else if (name == \"style\" && target.style)\n            target.style += \";\" + source.style;\n        else\n            target[name] = source[name];\n    }\n    return target;\n}\nconst noAttrs = /*@__PURE__*/Object.create(null);\nfunction attrsEq(a, b, ignore) {\n    if (a == b)\n        return true;\n    if (!a)\n        a = noAttrs;\n    if (!b)\n        b = noAttrs;\n    let keysA = Object.keys(a), keysB = Object.keys(b);\n    if (keysA.length - (ignore && keysA.indexOf(ignore) > -1 ? 1 : 0) !=\n        keysB.length - (ignore && keysB.indexOf(ignore) > -1 ? 1 : 0))\n        return false;\n    for (let key of keysA) {\n        if (key != ignore && (keysB.indexOf(key) == -1 || a[key] !== b[key]))\n            return false;\n    }\n    return true;\n}\nfunction updateAttrs(dom, prev, attrs) {\n    let changed = false;\n    if (prev)\n        for (let name in prev)\n            if (!(attrs && name in attrs)) {\n                changed = true;\n                if (name == \"style\")\n                    dom.style.cssText = \"\";\n                else\n                    dom.removeAttribute(name);\n            }\n    if (attrs)\n        for (let name in attrs)\n            if (!(prev && prev[name] == attrs[name])) {\n                changed = true;\n                if (name == \"style\")\n                    dom.style.cssText = attrs[name];\n                else\n                    dom.setAttribute(name, attrs[name]);\n            }\n    return changed;\n}\nfunction getAttrs(dom) {\n    let attrs = Object.create(null);\n    for (let i = 0; i < dom.attributes.length; i++) {\n        let attr = dom.attributes[i];\n        attrs[attr.name] = attr.value;\n    }\n    return attrs;\n}\n\n/**\nWidgets added to the content are described by subclasses of this\nclass. Using a description object like that makes it possible to\ndelay creating of the DOM structure for a widget until it is\nneeded, and to avoid redrawing widgets even if the decorations\nthat define them are recreated.\n*/\nclass WidgetType {\n    /**\n    Compare this instance to another instance of the same type.\n    (TypeScript can't express this, but only instances of the same\n    specific class will be passed to this method.) This is used to\n    avoid redrawing widgets when they are replaced by a new\n    decoration of the same type. The default implementation just\n    returns `false`, which will cause new instances of the widget to\n    always be redrawn.\n    */\n    eq(widget) { return false; }\n    /**\n    Update a DOM element created by a widget of the same type (but\n    different, non-`eq` content) to reflect this widget. May return\n    true to indicate that it could update, false to indicate it\n    couldn't (in which case the widget will be redrawn). The default\n    implementation just returns false.\n    */\n    updateDOM(dom, view) { return false; }\n    /**\n    @internal\n    */\n    compare(other) {\n        return this == other || this.constructor == other.constructor && this.eq(other);\n    }\n    /**\n    The estimated height this widget will have, to be used when\n    estimating the height of content that hasn't been drawn. May\n    return -1 to indicate you don't know. The default implementation\n    returns -1.\n    */\n    get estimatedHeight() { return -1; }\n    /**\n    For inline widgets that are displayed inline (as opposed to\n    `inline-block`) and introduce line breaks (through `<br>` tags\n    or textual newlines), this must indicate the amount of line\n    breaks they introduce. Defaults to 0.\n    */\n    get lineBreaks() { return 0; }\n    /**\n    Can be used to configure which kinds of events inside the widget\n    should be ignored by the editor. The default is to ignore all\n    events.\n    */\n    ignoreEvent(event) { return true; }\n    /**\n    Override the way screen coordinates for positions at/in the\n    widget are found. `pos` will be the offset into the widget, and\n    `side` the side of the position that is being queried—less than\n    zero for before, greater than zero for after, and zero for\n    directly at that position.\n    */\n    coordsAt(dom, pos, side) { return null; }\n    /**\n    @internal\n    */\n    get isHidden() { return false; }\n    /**\n    @internal\n    */\n    get editable() { return false; }\n    /**\n    This is called when the an instance of the widget is removed\n    from the editor view.\n    */\n    destroy(dom) { }\n}\n/**\nThe different types of blocks that can occur in an editor view.\n*/\nvar BlockType = /*@__PURE__*/(function (BlockType) {\n    /**\n    A line of text.\n    */\n    BlockType[BlockType[\"Text\"] = 0] = \"Text\";\n    /**\n    A block widget associated with the position after it.\n    */\n    BlockType[BlockType[\"WidgetBefore\"] = 1] = \"WidgetBefore\";\n    /**\n    A block widget associated with the position before it.\n    */\n    BlockType[BlockType[\"WidgetAfter\"] = 2] = \"WidgetAfter\";\n    /**\n    A block widget [replacing](https://codemirror.net/6/docs/ref/#view.Decoration^replace) a range of content.\n    */\n    BlockType[BlockType[\"WidgetRange\"] = 3] = \"WidgetRange\";\nreturn BlockType})(BlockType || (BlockType = {}));\n/**\nA decoration provides information on how to draw or style a piece\nof content. You'll usually use it wrapped in a\n[`Range`](https://codemirror.net/6/docs/ref/#state.Range), which adds a start and end position.\n@nonabstract\n*/\nclass Decoration extends RangeValue {\n    constructor(\n    /**\n    @internal\n    */\n    startSide, \n    /**\n    @internal\n    */\n    endSide, \n    /**\n    @internal\n    */\n    widget, \n    /**\n    The config object used to create this decoration. You can\n    include additional properties in there to store metadata about\n    your decoration.\n    */\n    spec) {\n        super();\n        this.startSide = startSide;\n        this.endSide = endSide;\n        this.widget = widget;\n        this.spec = spec;\n    }\n    /**\n    @internal\n    */\n    get heightRelevant() { return false; }\n    /**\n    Create a mark decoration, which influences the styling of the\n    content in its range. Nested mark decorations will cause nested\n    DOM elements to be created. Nesting order is determined by\n    precedence of the [facet](https://codemirror.net/6/docs/ref/#view.EditorView^decorations), with\n    the higher-precedence decorations creating the inner DOM nodes.\n    Such elements are split on line boundaries and on the boundaries\n    of lower-precedence decorations.\n    */\n    static mark(spec) {\n        return new MarkDecoration(spec);\n    }\n    /**\n    Create a widget decoration, which displays a DOM element at the\n    given position.\n    */\n    static widget(spec) {\n        let side = Math.max(-10000, Math.min(10000, spec.side || 0)), block = !!spec.block;\n        side += (block && !spec.inlineOrder)\n            ? (side > 0 ? 300000000 /* Side.BlockAfter */ : -400000000 /* Side.BlockBefore */)\n            : (side > 0 ? 100000000 /* Side.InlineAfter */ : -100000000 /* Side.InlineBefore */);\n        return new PointDecoration(spec, side, side, block, spec.widget || null, false);\n    }\n    /**\n    Create a replace decoration which replaces the given range with\n    a widget, or simply hides it.\n    */\n    static replace(spec) {\n        let block = !!spec.block, startSide, endSide;\n        if (spec.isBlockGap) {\n            startSide = -500000000 /* Side.GapStart */;\n            endSide = 400000000 /* Side.GapEnd */;\n        }\n        else {\n            let { start, end } = getInclusive(spec, block);\n            startSide = (start ? (block ? -300000000 /* Side.BlockIncStart */ : -1 /* Side.InlineIncStart */) : 500000000 /* Side.NonIncStart */) - 1;\n            endSide = (end ? (block ? 200000000 /* Side.BlockIncEnd */ : 1 /* Side.InlineIncEnd */) : -600000000 /* Side.NonIncEnd */) + 1;\n        }\n        return new PointDecoration(spec, startSide, endSide, block, spec.widget || null, true);\n    }\n    /**\n    Create a line decoration, which can add DOM attributes to the\n    line starting at the given position.\n    */\n    static line(spec) {\n        return new LineDecoration(spec);\n    }\n    /**\n    Build a [`DecorationSet`](https://codemirror.net/6/docs/ref/#view.DecorationSet) from the given\n    decorated range or ranges. If the ranges aren't already sorted,\n    pass `true` for `sort` to make the library sort them for you.\n    */\n    static set(of, sort = false) {\n        return RangeSet.of(of, sort);\n    }\n    /**\n    @internal\n    */\n    hasHeight() { return this.widget ? this.widget.estimatedHeight > -1 : false; }\n}\n/**\nThe empty set of decorations.\n*/\nDecoration.none = RangeSet.empty;\nclass MarkDecoration extends Decoration {\n    constructor(spec) {\n        let { start, end } = getInclusive(spec);\n        super(start ? -1 /* Side.InlineIncStart */ : 500000000 /* Side.NonIncStart */, end ? 1 /* Side.InlineIncEnd */ : -600000000 /* Side.NonIncEnd */, null, spec);\n        this.tagName = spec.tagName || \"span\";\n        this.class = spec.class || \"\";\n        this.attrs = spec.attributes || null;\n    }\n    eq(other) {\n        var _a, _b;\n        return this == other ||\n            other instanceof MarkDecoration &&\n                this.tagName == other.tagName &&\n                (this.class || ((_a = this.attrs) === null || _a === void 0 ? void 0 : _a.class)) == (other.class || ((_b = other.attrs) === null || _b === void 0 ? void 0 : _b.class)) &&\n                attrsEq(this.attrs, other.attrs, \"class\");\n    }\n    range(from, to = from) {\n        if (from >= to)\n            throw new RangeError(\"Mark decorations may not be empty\");\n        return super.range(from, to);\n    }\n}\nMarkDecoration.prototype.point = false;\nclass LineDecoration extends Decoration {\n    constructor(spec) {\n        super(-200000000 /* Side.Line */, -200000000 /* Side.Line */, null, spec);\n    }\n    eq(other) {\n        return other instanceof LineDecoration &&\n            this.spec.class == other.spec.class &&\n            attrsEq(this.spec.attributes, other.spec.attributes);\n    }\n    range(from, to = from) {\n        if (to != from)\n            throw new RangeError(\"Line decoration ranges must be zero-length\");\n        return super.range(from, to);\n    }\n}\nLineDecoration.prototype.mapMode = MapMode.TrackBefore;\nLineDecoration.prototype.point = true;\nclass PointDecoration extends Decoration {\n    constructor(spec, startSide, endSide, block, widget, isReplace) {\n        super(startSide, endSide, widget, spec);\n        this.block = block;\n        this.isReplace = isReplace;\n        this.mapMode = !block ? MapMode.TrackDel : startSide <= 0 ? MapMode.TrackBefore : MapMode.TrackAfter;\n    }\n    // Only relevant when this.block == true\n    get type() {\n        return this.startSide != this.endSide ? BlockType.WidgetRange\n            : this.startSide <= 0 ? BlockType.WidgetBefore : BlockType.WidgetAfter;\n    }\n    get heightRelevant() {\n        return this.block || !!this.widget && (this.widget.estimatedHeight >= 5 || this.widget.lineBreaks > 0);\n    }\n    eq(other) {\n        return other instanceof PointDecoration &&\n            widgetsEq(this.widget, other.widget) &&\n            this.block == other.block &&\n            this.startSide == other.startSide && this.endSide == other.endSide;\n    }\n    range(from, to = from) {\n        if (this.isReplace && (from > to || (from == to && this.startSide > 0 && this.endSide <= 0)))\n            throw new RangeError(\"Invalid range for replacement decoration\");\n        if (!this.isReplace && to != from)\n            throw new RangeError(\"Widget decorations can only have zero-length ranges\");\n        return super.range(from, to);\n    }\n}\nPointDecoration.prototype.point = true;\nfunction getInclusive(spec, block = false) {\n    let { inclusiveStart: start, inclusiveEnd: end } = spec;\n    if (start == null)\n        start = spec.inclusive;\n    if (end == null)\n        end = spec.inclusive;\n    return { start: start !== null && start !== void 0 ? start : block, end: end !== null && end !== void 0 ? end : block };\n}\nfunction widgetsEq(a, b) {\n    return a == b || !!(a && b && a.compare(b));\n}\nfunction addRange(from, to, ranges, margin = 0) {\n    let last = ranges.length - 1;\n    if (last >= 0 && ranges[last] + margin >= from)\n        ranges[last] = Math.max(ranges[last], to);\n    else\n        ranges.push(from, to);\n}\n\nclass LineView extends ContentView {\n    constructor() {\n        super(...arguments);\n        this.children = [];\n        this.length = 0;\n        this.prevAttrs = undefined;\n        this.attrs = null;\n        this.breakAfter = 0;\n    }\n    // Consumes source\n    merge(from, to, source, hasStart, openStart, openEnd) {\n        if (source) {\n            if (!(source instanceof LineView))\n                return false;\n            if (!this.dom)\n                source.transferDOM(this); // Reuse source.dom when appropriate\n        }\n        if (hasStart)\n            this.setDeco(source ? source.attrs : null);\n        mergeChildrenInto(this, from, to, source ? source.children.slice() : [], openStart, openEnd);\n        return true;\n    }\n    split(at) {\n        let end = new LineView;\n        end.breakAfter = this.breakAfter;\n        if (this.length == 0)\n            return end;\n        let { i, off } = this.childPos(at);\n        if (off) {\n            end.append(this.children[i].split(off), 0);\n            this.children[i].merge(off, this.children[i].length, null, false, 0, 0);\n            i++;\n        }\n        for (let j = i; j < this.children.length; j++)\n            end.append(this.children[j], 0);\n        while (i > 0 && this.children[i - 1].length == 0)\n            this.children[--i].destroy();\n        this.children.length = i;\n        this.markDirty();\n        this.length = at;\n        return end;\n    }\n    transferDOM(other) {\n        if (!this.dom)\n            return;\n        this.markDirty();\n        other.setDOM(this.dom);\n        other.prevAttrs = this.prevAttrs === undefined ? this.attrs : this.prevAttrs;\n        this.prevAttrs = undefined;\n        this.dom = null;\n    }\n    setDeco(attrs) {\n        if (!attrsEq(this.attrs, attrs)) {\n            if (this.dom) {\n                this.prevAttrs = this.attrs;\n                this.markDirty();\n            }\n            this.attrs = attrs;\n        }\n    }\n    append(child, openStart) {\n        joinInlineInto(this, child, openStart);\n    }\n    // Only called when building a line view in ContentBuilder\n    addLineDeco(deco) {\n        let attrs = deco.spec.attributes, cls = deco.spec.class;\n        if (attrs)\n            this.attrs = combineAttrs(attrs, this.attrs || {});\n        if (cls)\n            this.attrs = combineAttrs({ class: cls }, this.attrs || {});\n    }\n    domAtPos(pos) {\n        return inlineDOMAtPos(this, pos);\n    }\n    reuseDOM(node) {\n        if (node.nodeName == \"DIV\") {\n            this.setDOM(node);\n            this.flags |= 4 /* ViewFlag.AttrsDirty */ | 2 /* ViewFlag.NodeDirty */;\n        }\n    }\n    sync(view, track) {\n        var _a;\n        if (!this.dom) {\n            this.setDOM(document.createElement(\"div\"));\n            this.dom.className = \"cm-line\";\n            this.prevAttrs = this.attrs ? null : undefined;\n        }\n        else if (this.flags & 4 /* ViewFlag.AttrsDirty */) {\n            clearAttributes(this.dom);\n            this.dom.className = \"cm-line\";\n            this.prevAttrs = this.attrs ? null : undefined;\n        }\n        if (this.prevAttrs !== undefined) {\n            updateAttrs(this.dom, this.prevAttrs, this.attrs);\n            this.dom.classList.add(\"cm-line\");\n            this.prevAttrs = undefined;\n        }\n        super.sync(view, track);\n        let last = this.dom.lastChild;\n        while (last && ContentView.get(last) instanceof MarkView)\n            last = last.lastChild;\n        if (!last || !this.length ||\n            last.nodeName != \"BR\" && ((_a = ContentView.get(last)) === null || _a === void 0 ? void 0 : _a.isEditable) == false &&\n                (!browser.ios || !this.children.some(ch => ch instanceof TextView))) {\n            let hack = document.createElement(\"BR\");\n            hack.cmIgnore = true;\n            this.dom.appendChild(hack);\n        }\n    }\n    measureTextSize() {\n        if (this.children.length == 0 || this.length > 20)\n            return null;\n        let totalWidth = 0, textHeight;\n        for (let child of this.children) {\n            if (!(child instanceof TextView) || /[^ -~]/.test(child.text))\n                return null;\n            let rects = clientRectsFor(child.dom);\n            if (rects.length != 1)\n                return null;\n            totalWidth += rects[0].width;\n            textHeight = rects[0].height;\n        }\n        return !totalWidth ? null : {\n            lineHeight: this.dom.getBoundingClientRect().height,\n            charWidth: totalWidth / this.length,\n            textHeight\n        };\n    }\n    coordsAt(pos, side) {\n        let rect = coordsInChildren(this, pos, side);\n        // Correct rectangle height for empty lines when the returned\n        // height is larger than the text height.\n        if (!this.children.length && rect && this.parent) {\n            let { heightOracle } = this.parent.view.viewState, height = rect.bottom - rect.top;\n            if (Math.abs(height - heightOracle.lineHeight) < 2 && heightOracle.textHeight < height) {\n                let dist = (height - heightOracle.textHeight) / 2;\n                return { top: rect.top + dist, bottom: rect.bottom - dist, left: rect.left, right: rect.left };\n            }\n        }\n        return rect;\n    }\n    become(other) {\n        return other instanceof LineView && this.children.length == 0 && other.children.length == 0 &&\n            attrsEq(this.attrs, other.attrs) && this.breakAfter == other.breakAfter;\n    }\n    covers() { return true; }\n    static find(docView, pos) {\n        for (let i = 0, off = 0; i < docView.children.length; i++) {\n            let block = docView.children[i], end = off + block.length;\n            if (end >= pos) {\n                if (block instanceof LineView)\n                    return block;\n                if (end > pos)\n                    break;\n            }\n            off = end + block.breakAfter;\n        }\n        return null;\n    }\n}\nclass BlockWidgetView extends ContentView {\n    constructor(widget, length, deco) {\n        super();\n        this.widget = widget;\n        this.length = length;\n        this.deco = deco;\n        this.breakAfter = 0;\n        this.prevWidget = null;\n    }\n    merge(from, to, source, _takeDeco, openStart, openEnd) {\n        if (source && (!(source instanceof BlockWidgetView) || !this.widget.compare(source.widget) ||\n            from > 0 && openStart <= 0 || to < this.length && openEnd <= 0))\n            return false;\n        this.length = from + (source ? source.length : 0) + (this.length - to);\n        return true;\n    }\n    domAtPos(pos) {\n        return pos == 0 ? DOMPos.before(this.dom) : DOMPos.after(this.dom, pos == this.length);\n    }\n    split(at) {\n        let len = this.length - at;\n        this.length = at;\n        let end = new BlockWidgetView(this.widget, len, this.deco);\n        end.breakAfter = this.breakAfter;\n        return end;\n    }\n    get children() { return noChildren; }\n    sync(view) {\n        if (!this.dom || !this.widget.updateDOM(this.dom, view)) {\n            if (this.dom && this.prevWidget)\n                this.prevWidget.destroy(this.dom);\n            this.prevWidget = null;\n            this.setDOM(this.widget.toDOM(view));\n            if (!this.widget.editable)\n                this.dom.contentEditable = \"false\";\n        }\n    }\n    get overrideDOMText() {\n        return this.parent ? this.parent.view.state.doc.slice(this.posAtStart, this.posAtEnd) : Text.empty;\n    }\n    domBoundsAround() { return null; }\n    become(other) {\n        if (other instanceof BlockWidgetView &&\n            other.widget.constructor == this.widget.constructor) {\n            if (!other.widget.compare(this.widget))\n                this.markDirty(true);\n            if (this.dom && !this.prevWidget)\n                this.prevWidget = this.widget;\n            this.widget = other.widget;\n            this.length = other.length;\n            this.deco = other.deco;\n            this.breakAfter = other.breakAfter;\n            return true;\n        }\n        return false;\n    }\n    ignoreMutation() { return true; }\n    ignoreEvent(event) { return this.widget.ignoreEvent(event); }\n    get isEditable() { return false; }\n    get isWidget() { return true; }\n    coordsAt(pos, side) {\n        let custom = this.widget.coordsAt(this.dom, pos, side);\n        if (custom)\n            return custom;\n        if (this.widget instanceof BlockGapWidget)\n            return null;\n        return flattenRect(this.dom.getBoundingClientRect(), this.length ? pos == 0 : side <= 0);\n    }\n    destroy() {\n        super.destroy();\n        if (this.dom)\n            this.widget.destroy(this.dom);\n    }\n    covers(side) {\n        let { startSide, endSide } = this.deco;\n        return startSide == endSide ? false : side < 0 ? startSide < 0 : endSide > 0;\n    }\n}\nclass BlockGapWidget extends WidgetType {\n    constructor(height) {\n        super();\n        this.height = height;\n    }\n    toDOM() {\n        let elt = document.createElement(\"div\");\n        elt.className = \"cm-gap\";\n        this.updateDOM(elt);\n        return elt;\n    }\n    eq(other) { return other.height == this.height; }\n    updateDOM(elt) {\n        elt.style.height = this.height + \"px\";\n        return true;\n    }\n    get editable() { return true; }\n    get estimatedHeight() { return this.height; }\n    ignoreEvent() { return false; }\n}\n\nclass ContentBuilder {\n    constructor(doc, pos, end, disallowBlockEffectsFor) {\n        this.doc = doc;\n        this.pos = pos;\n        this.end = end;\n        this.disallowBlockEffectsFor = disallowBlockEffectsFor;\n        this.content = [];\n        this.curLine = null;\n        this.breakAtStart = 0;\n        this.pendingBuffer = 0 /* Buf.No */;\n        this.bufferMarks = [];\n        // Set to false directly after a widget that covers the position after it\n        this.atCursorPos = true;\n        this.openStart = -1;\n        this.openEnd = -1;\n        this.text = \"\";\n        this.textOff = 0;\n        this.cursor = doc.iter();\n        this.skip = pos;\n    }\n    posCovered() {\n        if (this.content.length == 0)\n            return !this.breakAtStart && this.doc.lineAt(this.pos).from != this.pos;\n        let last = this.content[this.content.length - 1];\n        return !(last.breakAfter || last instanceof BlockWidgetView && last.deco.endSide < 0);\n    }\n    getLine() {\n        if (!this.curLine) {\n            this.content.push(this.curLine = new LineView);\n            this.atCursorPos = true;\n        }\n        return this.curLine;\n    }\n    flushBuffer(active = this.bufferMarks) {\n        if (this.pendingBuffer) {\n            this.curLine.append(wrapMarks(new WidgetBufferView(-1), active), active.length);\n            this.pendingBuffer = 0 /* Buf.No */;\n        }\n    }\n    addBlockWidget(view) {\n        this.flushBuffer();\n        this.curLine = null;\n        this.content.push(view);\n    }\n    finish(openEnd) {\n        if (this.pendingBuffer && openEnd <= this.bufferMarks.length)\n            this.flushBuffer();\n        else\n            this.pendingBuffer = 0 /* Buf.No */;\n        if (!this.posCovered() &&\n            !(openEnd && this.content.length && this.content[this.content.length - 1] instanceof BlockWidgetView))\n            this.getLine();\n    }\n    buildText(length, active, openStart) {\n        while (length > 0) {\n            if (this.textOff == this.text.length) {\n                let { value, lineBreak, done } = this.cursor.next(this.skip);\n                this.skip = 0;\n                if (done)\n                    throw new Error(\"Ran out of text content when drawing inline views\");\n                if (lineBreak) {\n                    if (!this.posCovered())\n                        this.getLine();\n                    if (this.content.length)\n                        this.content[this.content.length - 1].breakAfter = 1;\n                    else\n                        this.breakAtStart = 1;\n                    this.flushBuffer();\n                    this.curLine = null;\n                    this.atCursorPos = true;\n                    length--;\n                    continue;\n                }\n                else {\n                    this.text = value;\n                    this.textOff = 0;\n                }\n            }\n            let take = Math.min(this.text.length - this.textOff, length, 512 /* T.Chunk */);\n            this.flushBuffer(active.slice(active.length - openStart));\n            this.getLine().append(wrapMarks(new TextView(this.text.slice(this.textOff, this.textOff + take)), active), openStart);\n            this.atCursorPos = true;\n            this.textOff += take;\n            length -= take;\n            openStart = 0;\n        }\n    }\n    span(from, to, active, openStart) {\n        this.buildText(to - from, active, openStart);\n        this.pos = to;\n        if (this.openStart < 0)\n            this.openStart = openStart;\n    }\n    point(from, to, deco, active, openStart, index) {\n        if (this.disallowBlockEffectsFor[index] && deco instanceof PointDecoration) {\n            if (deco.block)\n                throw new RangeError(\"Block decorations may not be specified via plugins\");\n            if (to > this.doc.lineAt(this.pos).to)\n                throw new RangeError(\"Decorations that replace line breaks may not be specified via plugins\");\n        }\n        let len = to - from;\n        if (deco instanceof PointDecoration) {\n            if (deco.block) {\n                if (deco.startSide > 0 && !this.posCovered())\n                    this.getLine();\n                this.addBlockWidget(new BlockWidgetView(deco.widget || NullWidget.block, len, deco));\n            }\n            else {\n                let view = WidgetView.create(deco.widget || NullWidget.inline, len, len ? 0 : deco.startSide);\n                let cursorBefore = this.atCursorPos && !view.isEditable && openStart <= active.length &&\n                    (from < to || deco.startSide > 0);\n                let cursorAfter = !view.isEditable && (from < to || openStart > active.length || deco.startSide <= 0);\n                let line = this.getLine();\n                if (this.pendingBuffer == 2 /* Buf.IfCursor */ && !cursorBefore && !view.isEditable)\n                    this.pendingBuffer = 0 /* Buf.No */;\n                this.flushBuffer(active);\n                if (cursorBefore) {\n                    line.append(wrapMarks(new WidgetBufferView(1), active), openStart);\n                    openStart = active.length + Math.max(0, openStart - active.length);\n                }\n                line.append(wrapMarks(view, active), openStart);\n                this.atCursorPos = cursorAfter;\n                this.pendingBuffer = !cursorAfter ? 0 /* Buf.No */ : from < to || openStart > active.length ? 1 /* Buf.Yes */ : 2 /* Buf.IfCursor */;\n                if (this.pendingBuffer)\n                    this.bufferMarks = active.slice();\n            }\n        }\n        else if (this.doc.lineAt(this.pos).from == this.pos) { // Line decoration\n            this.getLine().addLineDeco(deco);\n        }\n        if (len) {\n            // Advance the iterator past the replaced content\n            if (this.textOff + len <= this.text.length) {\n                this.textOff += len;\n            }\n            else {\n                this.skip += len - (this.text.length - this.textOff);\n                this.text = \"\";\n                this.textOff = 0;\n            }\n            this.pos = to;\n        }\n        if (this.openStart < 0)\n            this.openStart = openStart;\n    }\n    static build(text, from, to, decorations, dynamicDecorationMap) {\n        let builder = new ContentBuilder(text, from, to, dynamicDecorationMap);\n        builder.openEnd = RangeSet.spans(decorations, from, to, builder);\n        if (builder.openStart < 0)\n            builder.openStart = builder.openEnd;\n        builder.finish(builder.openEnd);\n        return builder;\n    }\n}\nfunction wrapMarks(view, active) {\n    for (let mark of active)\n        view = new MarkView(mark, [view], view.length);\n    return view;\n}\nclass NullWidget extends WidgetType {\n    constructor(tag) {\n        super();\n        this.tag = tag;\n    }\n    eq(other) { return other.tag == this.tag; }\n    toDOM() { return document.createElement(this.tag); }\n    updateDOM(elt) { return elt.nodeName.toLowerCase() == this.tag; }\n    get isHidden() { return true; }\n}\nNullWidget.inline = /*@__PURE__*/new NullWidget(\"span\");\nNullWidget.block = /*@__PURE__*/new NullWidget(\"div\");\n\n/**\nUsed to indicate [text direction](https://codemirror.net/6/docs/ref/#view.EditorView.textDirection).\n*/\nvar Direction = /*@__PURE__*/(function (Direction) {\n    // (These are chosen to match the base levels, in bidi algorithm\n    // terms, of spans in that direction.)\n    /**\n    Left-to-right.\n    */\n    Direction[Direction[\"LTR\"] = 0] = \"LTR\";\n    /**\n    Right-to-left.\n    */\n    Direction[Direction[\"RTL\"] = 1] = \"RTL\";\nreturn Direction})(Direction || (Direction = {}));\nconst LTR = Direction.LTR, RTL = Direction.RTL;\n// Decode a string with each type encoded as log2(type)\nfunction dec(str) {\n    let result = [];\n    for (let i = 0; i < str.length; i++)\n        result.push(1 << +str[i]);\n    return result;\n}\n// Character types for codepoints 0 to 0xf8\nconst LowTypes = /*@__PURE__*/dec(\"88888888888888888888888888888888888666888888787833333333337888888000000000000000000000000008888880000000000000000000000000088888888888888888888888888888888888887866668888088888663380888308888800000000000000000000000800000000000000000000000000000008\");\n// Character types for codepoints 0x600 to 0x6f9\nconst ArabicTypes = /*@__PURE__*/dec(\"4444448826627288999999999992222222222222222222222222222222222222222222222229999999999999999999994444444444644222822222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222999999949999999229989999223333333333\");\nconst Brackets = /*@__PURE__*/Object.create(null), BracketStack = [];\n// There's a lot more in\n// https://www.unicode.org/Public/UCD/latest/ucd/BidiBrackets.txt,\n// which are left out to keep code size down.\nfor (let p of [\"()\", \"[]\", \"{}\"]) {\n    let l = /*@__PURE__*/p.charCodeAt(0), r = /*@__PURE__*/p.charCodeAt(1);\n    Brackets[l] = r;\n    Brackets[r] = -l;\n}\nfunction charType(ch) {\n    return ch <= 0xf7 ? LowTypes[ch] :\n        0x590 <= ch && ch <= 0x5f4 ? 2 /* T.R */ :\n            0x600 <= ch && ch <= 0x6f9 ? ArabicTypes[ch - 0x600] :\n                0x6ee <= ch && ch <= 0x8ac ? 4 /* T.AL */ :\n                    0x2000 <= ch && ch <= 0x200c ? 256 /* T.NI */ :\n                        0xfb50 <= ch && ch <= 0xfdff ? 4 /* T.AL */ : 1 /* T.L */;\n}\nconst BidiRE = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac\\ufb50-\\ufdff]/;\n/**\nRepresents a contiguous range of text that has a single direction\n(as in left-to-right or right-to-left).\n*/\nclass BidiSpan {\n    /**\n    The direction of this span.\n    */\n    get dir() { return this.level % 2 ? RTL : LTR; }\n    /**\n    @internal\n    */\n    constructor(\n    /**\n    The start of the span (relative to the start of the line).\n    */\n    from, \n    /**\n    The end of the span.\n    */\n    to, \n    /**\n    The [\"bidi\n    level\"](https://unicode.org/reports/tr9/#Basic_Display_Algorithm)\n    of the span (in this context, 0 means\n    left-to-right, 1 means right-to-left, 2 means left-to-right\n    number inside right-to-left text).\n    */\n    level) {\n        this.from = from;\n        this.to = to;\n        this.level = level;\n    }\n    /**\n    @internal\n    */\n    side(end, dir) { return (this.dir == dir) == end ? this.to : this.from; }\n    /**\n    @internal\n    */\n    forward(forward, dir) { return forward == (this.dir == dir); }\n    /**\n    @internal\n    */\n    static find(order, index, level, assoc) {\n        let maybe = -1;\n        for (let i = 0; i < order.length; i++) {\n            let span = order[i];\n            if (span.from <= index && span.to >= index) {\n                if (span.level == level)\n                    return i;\n                // When multiple spans match, if assoc != 0, take the one that\n                // covers that side, otherwise take the one with the minimum\n                // level.\n                if (maybe < 0 || (assoc != 0 ? (assoc < 0 ? span.from < index : span.to > index) : order[maybe].level > span.level))\n                    maybe = i;\n            }\n        }\n        if (maybe < 0)\n            throw new RangeError(\"Index out of range\");\n        return maybe;\n    }\n}\nfunction isolatesEq(a, b) {\n    if (a.length != b.length)\n        return false;\n    for (let i = 0; i < a.length; i++) {\n        let iA = a[i], iB = b[i];\n        if (iA.from != iB.from || iA.to != iB.to || iA.direction != iB.direction || !isolatesEq(iA.inner, iB.inner))\n            return false;\n    }\n    return true;\n}\n// Reused array of character types\nconst types = [];\n// Fill in the character types (in `types`) from `from` to `to` and\n// apply W normalization rules.\nfunction computeCharTypes(line, rFrom, rTo, isolates, outerType) {\n    for (let iI = 0; iI <= isolates.length; iI++) {\n        let from = iI ? isolates[iI - 1].to : rFrom, to = iI < isolates.length ? isolates[iI].from : rTo;\n        let prevType = iI ? 256 /* T.NI */ : outerType;\n        // W1. Examine each non-spacing mark (NSM) in the level run, and\n        // change the type of the NSM to the type of the previous\n        // character. If the NSM is at the start of the level run, it will\n        // get the type of sor.\n        // W2. Search backwards from each instance of a European number\n        // until the first strong type (R, L, AL, or sor) is found. If an\n        // AL is found, change the type of the European number to Arabic\n        // number.\n        // W3. Change all ALs to R.\n        // (Left after this: L, R, EN, AN, ET, CS, NI)\n        for (let i = from, prev = prevType, prevStrong = prevType; i < to; i++) {\n            let type = charType(line.charCodeAt(i));\n            if (type == 512 /* T.NSM */)\n                type = prev;\n            else if (type == 8 /* T.EN */ && prevStrong == 4 /* T.AL */)\n                type = 16 /* T.AN */;\n            types[i] = type == 4 /* T.AL */ ? 2 /* T.R */ : type;\n            if (type & 7 /* T.Strong */)\n                prevStrong = type;\n            prev = type;\n        }\n        // W5. A sequence of European terminators adjacent to European\n        // numbers changes to all European numbers.\n        // W6. Otherwise, separators and terminators change to Other\n        // Neutral.\n        // W7. Search backwards from each instance of a European number\n        // until the first strong type (R, L, or sor) is found. If an L is\n        // found, then change the type of the European number to L.\n        // (Left after this: L, R, EN+AN, NI)\n        for (let i = from, prev = prevType, prevStrong = prevType; i < to; i++) {\n            let type = types[i];\n            if (type == 128 /* T.CS */) {\n                if (i < to - 1 && prev == types[i + 1] && (prev & 24 /* T.Num */))\n                    type = types[i] = prev;\n                else\n                    types[i] = 256 /* T.NI */;\n            }\n            else if (type == 64 /* T.ET */) {\n                let end = i + 1;\n                while (end < to && types[end] == 64 /* T.ET */)\n                    end++;\n                let replace = (i && prev == 8 /* T.EN */) || (end < rTo && types[end] == 8 /* T.EN */) ? (prevStrong == 1 /* T.L */ ? 1 /* T.L */ : 8 /* T.EN */) : 256 /* T.NI */;\n                for (let j = i; j < end; j++)\n                    types[j] = replace;\n                i = end - 1;\n            }\n            else if (type == 8 /* T.EN */ && prevStrong == 1 /* T.L */) {\n                types[i] = 1 /* T.L */;\n            }\n            prev = type;\n            if (type & 7 /* T.Strong */)\n                prevStrong = type;\n        }\n    }\n}\n// Process brackets throughout a run sequence.\nfunction processBracketPairs(line, rFrom, rTo, isolates, outerType) {\n    let oppositeType = outerType == 1 /* T.L */ ? 2 /* T.R */ : 1 /* T.L */;\n    for (let iI = 0, sI = 0, context = 0; iI <= isolates.length; iI++) {\n        let from = iI ? isolates[iI - 1].to : rFrom, to = iI < isolates.length ? isolates[iI].from : rTo;\n        // N0. Process bracket pairs in an isolating run sequence\n        // sequentially in the logical order of the text positions of the\n        // opening paired brackets using the logic given below. Within this\n        // scope, bidirectional types EN and AN are treated as R.\n        for (let i = from, ch, br, type; i < to; i++) {\n            // Keeps [startIndex, type, strongSeen] triples for each open\n            // bracket on BracketStack.\n            if (br = Brackets[ch = line.charCodeAt(i)]) {\n                if (br < 0) { // Closing bracket\n                    for (let sJ = sI - 3; sJ >= 0; sJ -= 3) {\n                        if (BracketStack[sJ + 1] == -br) {\n                            let flags = BracketStack[sJ + 2];\n                            let type = (flags & 2 /* Bracketed.EmbedInside */) ? outerType :\n                                !(flags & 4 /* Bracketed.OppositeInside */) ? 0 :\n                                    (flags & 1 /* Bracketed.OppositeBefore */) ? oppositeType : outerType;\n                            if (type)\n                                types[i] = types[BracketStack[sJ]] = type;\n                            sI = sJ;\n                            break;\n                        }\n                    }\n                }\n                else if (BracketStack.length == 189 /* Bracketed.MaxDepth */) {\n                    break;\n                }\n                else {\n                    BracketStack[sI++] = i;\n                    BracketStack[sI++] = ch;\n                    BracketStack[sI++] = context;\n                }\n            }\n            else if ((type = types[i]) == 2 /* T.R */ || type == 1 /* T.L */) {\n                let embed = type == outerType;\n                context = embed ? 0 : 1 /* Bracketed.OppositeBefore */;\n                for (let sJ = sI - 3; sJ >= 0; sJ -= 3) {\n                    let cur = BracketStack[sJ + 2];\n                    if (cur & 2 /* Bracketed.EmbedInside */)\n                        break;\n                    if (embed) {\n                        BracketStack[sJ + 2] |= 2 /* Bracketed.EmbedInside */;\n                    }\n                    else {\n                        if (cur & 4 /* Bracketed.OppositeInside */)\n                            break;\n                        BracketStack[sJ + 2] |= 4 /* Bracketed.OppositeInside */;\n                    }\n                }\n            }\n        }\n    }\n}\nfunction processNeutrals(rFrom, rTo, isolates, outerType) {\n    for (let iI = 0, prev = outerType; iI <= isolates.length; iI++) {\n        let from = iI ? isolates[iI - 1].to : rFrom, to = iI < isolates.length ? isolates[iI].from : rTo;\n        // N1. A sequence of neutrals takes the direction of the\n        // surrounding strong text if the text on both sides has the same\n        // direction. European and Arabic numbers act as if they were R in\n        // terms of their influence on neutrals. Start-of-level-run (sor)\n        // and end-of-level-run (eor) are used at level run boundaries.\n        // N2. Any remaining neutrals take the embedding direction.\n        // (Left after this: L, R, EN+AN)\n        for (let i = from; i < to;) {\n            let type = types[i];\n            if (type == 256 /* T.NI */) {\n                let end = i + 1;\n                for (;;) {\n                    if (end == to) {\n                        if (iI == isolates.length)\n                            break;\n                        end = isolates[iI++].to;\n                        to = iI < isolates.length ? isolates[iI].from : rTo;\n                    }\n                    else if (types[end] == 256 /* T.NI */) {\n                        end++;\n                    }\n                    else {\n                        break;\n                    }\n                }\n                let beforeL = prev == 1 /* T.L */;\n                let afterL = (end < rTo ? types[end] : outerType) == 1 /* T.L */;\n                let replace = beforeL == afterL ? (beforeL ? 1 /* T.L */ : 2 /* T.R */) : outerType;\n                for (let j = end, jI = iI, fromJ = jI ? isolates[jI - 1].to : rFrom; j > i;) {\n                    if (j == fromJ) {\n                        j = isolates[--jI].from;\n                        fromJ = jI ? isolates[jI - 1].to : rFrom;\n                    }\n                    types[--j] = replace;\n                }\n                i = end;\n            }\n            else {\n                prev = type;\n                i++;\n            }\n        }\n    }\n}\n// Find the contiguous ranges of character types in a given range, and\n// emit spans for them. Flip the order of the spans as appropriate\n// based on the level, and call through to compute the spans for\n// isolates at the proper point.\nfunction emitSpans(line, from, to, level, baseLevel, isolates, order) {\n    let ourType = level % 2 ? 2 /* T.R */ : 1 /* T.L */;\n    if ((level % 2) == (baseLevel % 2)) { // Same dir as base direction, don't flip\n        for (let iCh = from, iI = 0; iCh < to;) {\n            // Scan a section of characters in direction ourType, unless\n            // there's another type of char right after iCh, in which case\n            // we scan a section of other characters (which, if ourType ==\n            // T.L, may contain both T.R and T.AN chars).\n            let sameDir = true, isNum = false;\n            if (iI == isolates.length || iCh < isolates[iI].from) {\n                let next = types[iCh];\n                if (next != ourType) {\n                    sameDir = false;\n                    isNum = next == 16 /* T.AN */;\n                }\n            }\n            // Holds an array of isolates to pass to a recursive call if we\n            // must recurse (to distinguish T.AN inside an RTL section in\n            // LTR text), null if we can emit directly\n            let recurse = !sameDir && ourType == 1 /* T.L */ ? [] : null;\n            let localLevel = sameDir ? level : level + 1;\n            let iScan = iCh;\n            run: for (;;) {\n                if (iI < isolates.length && iScan == isolates[iI].from) {\n                    if (isNum)\n                        break run;\n                    let iso = isolates[iI];\n                    // Scan ahead to verify that there is another char in this dir after the isolate(s)\n                    if (!sameDir)\n                        for (let upto = iso.to, jI = iI + 1;;) {\n                            if (upto == to)\n                                break run;\n                            if (jI < isolates.length && isolates[jI].from == upto)\n                                upto = isolates[jI++].to;\n                            else if (types[upto] == ourType)\n                                break run;\n                            else\n                                break;\n                        }\n                    iI++;\n                    if (recurse) {\n                        recurse.push(iso);\n                    }\n                    else {\n                        if (iso.from > iCh)\n                            order.push(new BidiSpan(iCh, iso.from, localLevel));\n                        let dirSwap = (iso.direction == LTR) != !(localLevel % 2);\n                        computeSectionOrder(line, dirSwap ? level + 1 : level, baseLevel, iso.inner, iso.from, iso.to, order);\n                        iCh = iso.to;\n                    }\n                    iScan = iso.to;\n                }\n                else if (iScan == to || (sameDir ? types[iScan] != ourType : types[iScan] == ourType)) {\n                    break;\n                }\n                else {\n                    iScan++;\n                }\n            }\n            if (recurse)\n                emitSpans(line, iCh, iScan, level + 1, baseLevel, recurse, order);\n            else if (iCh < iScan)\n                order.push(new BidiSpan(iCh, iScan, localLevel));\n            iCh = iScan;\n        }\n    }\n    else {\n        // Iterate in reverse to flip the span order. Same code again, but\n        // going from the back of the section to the front\n        for (let iCh = to, iI = isolates.length; iCh > from;) {\n            let sameDir = true, isNum = false;\n            if (!iI || iCh > isolates[iI - 1].to) {\n                let next = types[iCh - 1];\n                if (next != ourType) {\n                    sameDir = false;\n                    isNum = next == 16 /* T.AN */;\n                }\n            }\n            let recurse = !sameDir && ourType == 1 /* T.L */ ? [] : null;\n            let localLevel = sameDir ? level : level + 1;\n            let iScan = iCh;\n            run: for (;;) {\n                if (iI && iScan == isolates[iI - 1].to) {\n                    if (isNum)\n                        break run;\n                    let iso = isolates[--iI];\n                    // Scan ahead to verify that there is another char in this dir after the isolate(s)\n                    if (!sameDir)\n                        for (let upto = iso.from, jI = iI;;) {\n                            if (upto == from)\n                                break run;\n                            if (jI && isolates[jI - 1].to == upto)\n                                upto = isolates[--jI].from;\n                            else if (types[upto - 1] == ourType)\n                                break run;\n                            else\n                                break;\n                        }\n                    if (recurse) {\n                        recurse.push(iso);\n                    }\n                    else {\n                        if (iso.to < iCh)\n                            order.push(new BidiSpan(iso.to, iCh, localLevel));\n                        let dirSwap = (iso.direction == LTR) != !(localLevel % 2);\n                        computeSectionOrder(line, dirSwap ? level + 1 : level, baseLevel, iso.inner, iso.from, iso.to, order);\n                        iCh = iso.from;\n                    }\n                    iScan = iso.from;\n                }\n                else if (iScan == from || (sameDir ? types[iScan - 1] != ourType : types[iScan - 1] == ourType)) {\n                    break;\n                }\n                else {\n                    iScan--;\n                }\n            }\n            if (recurse)\n                emitSpans(line, iScan, iCh, level + 1, baseLevel, recurse, order);\n            else if (iScan < iCh)\n                order.push(new BidiSpan(iScan, iCh, localLevel));\n            iCh = iScan;\n        }\n    }\n}\nfunction computeSectionOrder(line, level, baseLevel, isolates, from, to, order) {\n    let outerType = (level % 2 ? 2 /* T.R */ : 1 /* T.L */);\n    computeCharTypes(line, from, to, isolates, outerType);\n    processBracketPairs(line, from, to, isolates, outerType);\n    processNeutrals(from, to, isolates, outerType);\n    emitSpans(line, from, to, level, baseLevel, isolates, order);\n}\nfunction computeOrder(line, direction, isolates) {\n    if (!line)\n        return [new BidiSpan(0, 0, direction == RTL ? 1 : 0)];\n    if (direction == LTR && !isolates.length && !BidiRE.test(line))\n        return trivialOrder(line.length);\n    if (isolates.length)\n        while (line.length > types.length)\n            types[types.length] = 256 /* T.NI */; // Make sure types array has no gaps\n    let order = [], level = direction == LTR ? 0 : 1;\n    computeSectionOrder(line, level, level, isolates, 0, line.length, order);\n    return order;\n}\nfunction trivialOrder(length) {\n    return [new BidiSpan(0, length, 0)];\n}\nlet movedOver = \"\";\n// This implementation moves strictly visually, without concern for a\n// traversal visiting every logical position in the string. It will\n// still do so for simple input, but situations like multiple isolates\n// with the same level next to each other, or text going against the\n// main dir at the end of the line, will make some positions\n// unreachable with this motion. Each visible cursor position will\n// correspond to the lower-level bidi span that touches it.\n//\n// The alternative would be to solve an order globally for a given\n// line, making sure that it includes every position, but that would\n// require associating non-canonical (higher bidi span level)\n// positions with a given visual position, which is likely to confuse\n// people. (And would generally be a lot more complicated.)\nfunction moveVisually(line, order, dir, start, forward) {\n    var _a;\n    let startIndex = start.head - line.from;\n    let spanI = BidiSpan.find(order, startIndex, (_a = start.bidiLevel) !== null && _a !== void 0 ? _a : -1, start.assoc);\n    let span = order[spanI], spanEnd = span.side(forward, dir);\n    // End of span\n    if (startIndex == spanEnd) {\n        let nextI = spanI += forward ? 1 : -1;\n        if (nextI < 0 || nextI >= order.length)\n            return null;\n        span = order[spanI = nextI];\n        startIndex = span.side(!forward, dir);\n        spanEnd = span.side(forward, dir);\n    }\n    let nextIndex = findClusterBreak(line.text, startIndex, span.forward(forward, dir));\n    if (nextIndex < span.from || nextIndex > span.to)\n        nextIndex = spanEnd;\n    movedOver = line.text.slice(Math.min(startIndex, nextIndex), Math.max(startIndex, nextIndex));\n    let nextSpan = spanI == (forward ? order.length - 1 : 0) ? null : order[spanI + (forward ? 1 : -1)];\n    if (nextSpan && nextIndex == spanEnd && nextSpan.level + (forward ? 0 : 1) < span.level)\n        return EditorSelection.cursor(nextSpan.side(!forward, dir) + line.from, nextSpan.forward(forward, dir) ? 1 : -1, nextSpan.level);\n    return EditorSelection.cursor(nextIndex + line.from, span.forward(forward, dir) ? -1 : 1, span.level);\n}\nfunction autoDirection(text, from, to) {\n    for (let i = from; i < to; i++) {\n        let type = charType(text.charCodeAt(i));\n        if (type == 1 /* T.L */)\n            return LTR;\n        if (type == 2 /* T.R */ || type == 4 /* T.AL */)\n            return RTL;\n    }\n    return LTR;\n}\n\nconst clickAddsSelectionRange = /*@__PURE__*/Facet.define();\nconst dragMovesSelection$1 = /*@__PURE__*/Facet.define();\nconst mouseSelectionStyle = /*@__PURE__*/Facet.define();\nconst exceptionSink = /*@__PURE__*/Facet.define();\nconst updateListener = /*@__PURE__*/Facet.define();\nconst inputHandler = /*@__PURE__*/Facet.define();\nconst focusChangeEffect = /*@__PURE__*/Facet.define();\nconst clipboardInputFilter = /*@__PURE__*/Facet.define();\nconst clipboardOutputFilter = /*@__PURE__*/Facet.define();\nconst perLineTextDirection = /*@__PURE__*/Facet.define({\n    combine: values => values.some(x => x)\n});\nconst nativeSelectionHidden = /*@__PURE__*/Facet.define({\n    combine: values => values.some(x => x)\n});\nconst scrollHandler = /*@__PURE__*/Facet.define();\nclass ScrollTarget {\n    constructor(range, y = \"nearest\", x = \"nearest\", yMargin = 5, xMargin = 5, \n    // This data structure is abused to also store precise scroll\n    // snapshots, instead of a `scrollIntoView` request. When this\n    // flag is `true`, `range` points at a position in the reference\n    // line, `yMargin` holds the difference between the top of that\n    // line and the top of the editor, and `xMargin` holds the\n    // editor's `scrollLeft`.\n    isSnapshot = false) {\n        this.range = range;\n        this.y = y;\n        this.x = x;\n        this.yMargin = yMargin;\n        this.xMargin = xMargin;\n        this.isSnapshot = isSnapshot;\n    }\n    map(changes) {\n        return changes.empty ? this :\n            new ScrollTarget(this.range.map(changes), this.y, this.x, this.yMargin, this.xMargin, this.isSnapshot);\n    }\n    clip(state) {\n        return this.range.to <= state.doc.length ? this :\n            new ScrollTarget(EditorSelection.cursor(state.doc.length), this.y, this.x, this.yMargin, this.xMargin, this.isSnapshot);\n    }\n}\nconst scrollIntoView = /*@__PURE__*/StateEffect.define({ map: (t, ch) => t.map(ch) });\nconst setEditContextFormatting = /*@__PURE__*/StateEffect.define();\n/**\nLog or report an unhandled exception in client code. Should\nprobably only be used by extension code that allows client code to\nprovide functions, and calls those functions in a context where an\nexception can't be propagated to calling code in a reasonable way\n(for example when in an event handler).\n\nEither calls a handler registered with\n[`EditorView.exceptionSink`](https://codemirror.net/6/docs/ref/#view.EditorView^exceptionSink),\n`window.onerror`, if defined, or `console.error` (in which case\nit'll pass `context`, when given, as first argument).\n*/\nfunction logException(state, exception, context) {\n    let handler = state.facet(exceptionSink);\n    if (handler.length)\n        handler[0](exception);\n    else if (window.onerror && window.onerror(String(exception), context, undefined, undefined, exception)) ;\n    else if (context)\n        console.error(context + \":\", exception);\n    else\n        console.error(exception);\n}\nconst editable = /*@__PURE__*/Facet.define({ combine: values => values.length ? values[0] : true });\nlet nextPluginID = 0;\nconst viewPlugin = /*@__PURE__*/Facet.define({\n    combine(plugins) {\n        return plugins.filter((p, i) => {\n            for (let j = 0; j < i; j++)\n                if (plugins[j].plugin == p.plugin)\n                    return false;\n            return true;\n        });\n    }\n});\n/**\nView plugins associate stateful values with a view. They can\ninfluence the way the content is drawn, and are notified of things\nthat happen in the view. They optionally take an argument, in\nwhich case you need to call [`of`](https://codemirror.net/6/docs/ref/#view.ViewPlugin.of) to create\nan extension for the plugin. When the argument type is undefined,\nyou can use the plugin instance as an extension directly.\n*/\nclass ViewPlugin {\n    constructor(\n    /**\n    @internal\n    */\n    id, \n    /**\n    @internal\n    */\n    create, \n    /**\n    @internal\n    */\n    domEventHandlers, \n    /**\n    @internal\n    */\n    domEventObservers, buildExtensions) {\n        this.id = id;\n        this.create = create;\n        this.domEventHandlers = domEventHandlers;\n        this.domEventObservers = domEventObservers;\n        this.baseExtensions = buildExtensions(this);\n        this.extension = this.baseExtensions.concat(viewPlugin.of({ plugin: this, arg: undefined }));\n    }\n    /**\n    Create an extension for this plugin with the given argument.\n    */\n    of(arg) {\n        return this.baseExtensions.concat(viewPlugin.of({ plugin: this, arg }));\n    }\n    /**\n    Define a plugin from a constructor function that creates the\n    plugin's value, given an editor view.\n    */\n    static define(create, spec) {\n        const { eventHandlers, eventObservers, provide, decorations: deco } = spec || {};\n        return new ViewPlugin(nextPluginID++, create, eventHandlers, eventObservers, plugin => {\n            let ext = [];\n            if (deco)\n                ext.push(decorations.of(view => {\n                    let pluginInst = view.plugin(plugin);\n                    return pluginInst ? deco(pluginInst) : Decoration.none;\n                }));\n            if (provide)\n                ext.push(provide(plugin));\n            return ext;\n        });\n    }\n    /**\n    Create a plugin for a class whose constructor takes a single\n    editor view as argument.\n    */\n    static fromClass(cls, spec) {\n        return ViewPlugin.define((view, arg) => new cls(view, arg), spec);\n    }\n}\nclass PluginInstance {\n    constructor(spec) {\n        this.spec = spec;\n        // When starting an update, all plugins have this field set to the\n        // update object, indicating they need to be updated. When finished\n        // updating, it is set to `null`. Retrieving a plugin that needs to\n        // be updated with `view.plugin` forces an eager update.\n        this.mustUpdate = null;\n        // This is null when the plugin is initially created, but\n        // initialized on the first update.\n        this.value = null;\n    }\n    get plugin() { return this.spec && this.spec.plugin; }\n    update(view) {\n        if (!this.value) {\n            if (this.spec) {\n                try {\n                    this.value = this.spec.plugin.create(view, this.spec.arg);\n                }\n                catch (e) {\n                    logException(view.state, e, \"CodeMirror plugin crashed\");\n                    this.deactivate();\n                }\n            }\n        }\n        else if (this.mustUpdate) {\n            let update = this.mustUpdate;\n            this.mustUpdate = null;\n            if (this.value.update) {\n                try {\n                    this.value.update(update);\n                }\n                catch (e) {\n                    logException(update.state, e, \"CodeMirror plugin crashed\");\n                    if (this.value.destroy)\n                        try {\n                            this.value.destroy();\n                        }\n                        catch (_) { }\n                    this.deactivate();\n                }\n            }\n        }\n        return this;\n    }\n    destroy(view) {\n        var _a;\n        if ((_a = this.value) === null || _a === void 0 ? void 0 : _a.destroy) {\n            try {\n                this.value.destroy();\n            }\n            catch (e) {\n                logException(view.state, e, \"CodeMirror plugin crashed\");\n            }\n        }\n    }\n    deactivate() {\n        this.spec = this.value = null;\n    }\n}\nconst editorAttributes = /*@__PURE__*/Facet.define();\nconst contentAttributes = /*@__PURE__*/Facet.define();\n// Provide decorations\nconst decorations = /*@__PURE__*/Facet.define();\nconst outerDecorations = /*@__PURE__*/Facet.define();\nconst atomicRanges = /*@__PURE__*/Facet.define();\nconst bidiIsolatedRanges = /*@__PURE__*/Facet.define();\nfunction getIsolatedRanges(view, line) {\n    let isolates = view.state.facet(bidiIsolatedRanges);\n    if (!isolates.length)\n        return isolates;\n    let sets = isolates.map(i => i instanceof Function ? i(view) : i);\n    let result = [];\n    RangeSet.spans(sets, line.from, line.to, {\n        point() { },\n        span(fromDoc, toDoc, active, open) {\n            let from = fromDoc - line.from, to = toDoc - line.from;\n            let level = result;\n            for (let i = active.length - 1; i >= 0; i--, open--) {\n                let direction = active[i].spec.bidiIsolate, update;\n                if (direction == null)\n                    direction = autoDirection(line.text, from, to);\n                if (open > 0 && level.length &&\n                    (update = level[level.length - 1]).to == from && update.direction == direction) {\n                    update.to = to;\n                    level = update.inner;\n                }\n                else {\n                    let add = { from, to, direction, inner: [] };\n                    level.push(add);\n                    level = add.inner;\n                }\n            }\n        }\n    });\n    return result;\n}\nconst scrollMargins = /*@__PURE__*/Facet.define();\nfunction getScrollMargins(view) {\n    let left = 0, right = 0, top = 0, bottom = 0;\n    for (let source of view.state.facet(scrollMargins)) {\n        let m = source(view);\n        if (m) {\n            if (m.left != null)\n                left = Math.max(left, m.left);\n            if (m.right != null)\n                right = Math.max(right, m.right);\n            if (m.top != null)\n                top = Math.max(top, m.top);\n            if (m.bottom != null)\n                bottom = Math.max(bottom, m.bottom);\n        }\n    }\n    return { left, right, top, bottom };\n}\nconst styleModule = /*@__PURE__*/Facet.define();\nclass ChangedRange {\n    constructor(fromA, toA, fromB, toB) {\n        this.fromA = fromA;\n        this.toA = toA;\n        this.fromB = fromB;\n        this.toB = toB;\n    }\n    join(other) {\n        return new ChangedRange(Math.min(this.fromA, other.fromA), Math.max(this.toA, other.toA), Math.min(this.fromB, other.fromB), Math.max(this.toB, other.toB));\n    }\n    addToSet(set) {\n        let i = set.length, me = this;\n        for (; i > 0; i--) {\n            let range = set[i - 1];\n            if (range.fromA > me.toA)\n                continue;\n            if (range.toA < me.fromA)\n                break;\n            me = me.join(range);\n            set.splice(i - 1, 1);\n        }\n        set.splice(i, 0, me);\n        return set;\n    }\n    static extendWithRanges(diff, ranges) {\n        if (ranges.length == 0)\n            return diff;\n        let result = [];\n        for (let dI = 0, rI = 0, posA = 0, posB = 0;; dI++) {\n            let next = dI == diff.length ? null : diff[dI], off = posA - posB;\n            let end = next ? next.fromB : 1e9;\n            while (rI < ranges.length && ranges[rI] < end) {\n                let from = ranges[rI], to = ranges[rI + 1];\n                let fromB = Math.max(posB, from), toB = Math.min(end, to);\n                if (fromB <= toB)\n                    new ChangedRange(fromB + off, toB + off, fromB, toB).addToSet(result);\n                if (to > end)\n                    break;\n                else\n                    rI += 2;\n            }\n            if (!next)\n                return result;\n            new ChangedRange(next.fromA, next.toA, next.fromB, next.toB).addToSet(result);\n            posA = next.toA;\n            posB = next.toB;\n        }\n    }\n}\n/**\nView [plugins](https://codemirror.net/6/docs/ref/#view.ViewPlugin) are given instances of this\nclass, which describe what happened, whenever the view is updated.\n*/\nclass ViewUpdate {\n    constructor(\n    /**\n    The editor view that the update is associated with.\n    */\n    view, \n    /**\n    The new editor state.\n    */\n    state, \n    /**\n    The transactions involved in the update. May be empty.\n    */\n    transactions) {\n        this.view = view;\n        this.state = state;\n        this.transactions = transactions;\n        /**\n        @internal\n        */\n        this.flags = 0;\n        this.startState = view.state;\n        this.changes = ChangeSet.empty(this.startState.doc.length);\n        for (let tr of transactions)\n            this.changes = this.changes.compose(tr.changes);\n        let changedRanges = [];\n        this.changes.iterChangedRanges((fromA, toA, fromB, toB) => changedRanges.push(new ChangedRange(fromA, toA, fromB, toB)));\n        this.changedRanges = changedRanges;\n    }\n    /**\n    @internal\n    */\n    static create(view, state, transactions) {\n        return new ViewUpdate(view, state, transactions);\n    }\n    /**\n    Tells you whether the [viewport](https://codemirror.net/6/docs/ref/#view.EditorView.viewport) or\n    [visible ranges](https://codemirror.net/6/docs/ref/#view.EditorView.visibleRanges) changed in this\n    update.\n    */\n    get viewportChanged() {\n        return (this.flags & 4 /* UpdateFlag.Viewport */) > 0;\n    }\n    /**\n    Returns true when\n    [`viewportChanged`](https://codemirror.net/6/docs/ref/#view.ViewUpdate.viewportChanged) is true\n    and the viewport change is not just the result of mapping it in\n    response to document changes.\n    */\n    get viewportMoved() {\n        return (this.flags & 8 /* UpdateFlag.ViewportMoved */) > 0;\n    }\n    /**\n    Indicates whether the height of a block element in the editor\n    changed in this update.\n    */\n    get heightChanged() {\n        return (this.flags & 2 /* UpdateFlag.Height */) > 0;\n    }\n    /**\n    Returns true when the document was modified or the size of the\n    editor, or elements within the editor, changed.\n    */\n    get geometryChanged() {\n        return this.docChanged || (this.flags & (16 /* UpdateFlag.Geometry */ | 2 /* UpdateFlag.Height */)) > 0;\n    }\n    /**\n    True when this update indicates a focus change.\n    */\n    get focusChanged() {\n        return (this.flags & 1 /* UpdateFlag.Focus */) > 0;\n    }\n    /**\n    Whether the document changed in this update.\n    */\n    get docChanged() {\n        return !this.changes.empty;\n    }\n    /**\n    Whether the selection was explicitly set in this update.\n    */\n    get selectionSet() {\n        return this.transactions.some(tr => tr.selection);\n    }\n    /**\n    @internal\n    */\n    get empty() { return this.flags == 0 && this.transactions.length == 0; }\n}\n\nclass DocView extends ContentView {\n    get length() { return this.view.state.doc.length; }\n    constructor(view) {\n        super();\n        this.view = view;\n        this.decorations = [];\n        this.dynamicDecorationMap = [false];\n        this.domChanged = null;\n        this.hasComposition = null;\n        this.markedForComposition = new Set;\n        this.editContextFormatting = Decoration.none;\n        this.lastCompositionAfterCursor = false;\n        // Track a minimum width for the editor. When measuring sizes in\n        // measureVisibleLineHeights, this is updated to point at the width\n        // of a given element and its extent in the document. When a change\n        // happens in that range, these are reset. That way, once we've seen\n        // a line/element of a given length, we keep the editor wide enough\n        // to fit at least that element, until it is changed, at which point\n        // we forget it again.\n        this.minWidth = 0;\n        this.minWidthFrom = 0;\n        this.minWidthTo = 0;\n        // Track whether the DOM selection was set in a lossy way, so that\n        // we don't mess it up when reading it back it\n        this.impreciseAnchor = null;\n        this.impreciseHead = null;\n        this.forceSelection = false;\n        // Used by the resize observer to ignore resizes that we caused\n        // ourselves\n        this.lastUpdate = Date.now();\n        this.setDOM(view.contentDOM);\n        this.children = [new LineView];\n        this.children[0].setParent(this);\n        this.updateDeco();\n        this.updateInner([new ChangedRange(0, 0, 0, view.state.doc.length)], 0, null);\n    }\n    // Update the document view to a given state.\n    update(update) {\n        var _a;\n        let changedRanges = update.changedRanges;\n        if (this.minWidth > 0 && changedRanges.length) {\n            if (!changedRanges.every(({ fromA, toA }) => toA < this.minWidthFrom || fromA > this.minWidthTo)) {\n                this.minWidth = this.minWidthFrom = this.minWidthTo = 0;\n            }\n            else {\n                this.minWidthFrom = update.changes.mapPos(this.minWidthFrom, 1);\n                this.minWidthTo = update.changes.mapPos(this.minWidthTo, 1);\n            }\n        }\n        this.updateEditContextFormatting(update);\n        let readCompositionAt = -1;\n        if (this.view.inputState.composing >= 0 && !this.view.observer.editContext) {\n            if ((_a = this.domChanged) === null || _a === void 0 ? void 0 : _a.newSel)\n                readCompositionAt = this.domChanged.newSel.head;\n            else if (!touchesComposition(update.changes, this.hasComposition) && !update.selectionSet)\n                readCompositionAt = update.state.selection.main.head;\n        }\n        let composition = readCompositionAt > -1 ? findCompositionRange(this.view, update.changes, readCompositionAt) : null;\n        this.domChanged = null;\n        if (this.hasComposition) {\n            this.markedForComposition.clear();\n            let { from, to } = this.hasComposition;\n            changedRanges = new ChangedRange(from, to, update.changes.mapPos(from, -1), update.changes.mapPos(to, 1))\n                .addToSet(changedRanges.slice());\n        }\n        this.hasComposition = composition ? { from: composition.range.fromB, to: composition.range.toB } : null;\n        // When the DOM nodes around the selection are moved to another\n        // parent, Chrome sometimes reports a different selection through\n        // getSelection than the one that it actually shows to the user.\n        // This forces a selection update when lines are joined to work\n        // around that. Issue #54\n        if ((browser.ie || browser.chrome) && !composition && update &&\n            update.state.doc.lines != update.startState.doc.lines)\n            this.forceSelection = true;\n        let prevDeco = this.decorations, deco = this.updateDeco();\n        let decoDiff = findChangedDeco(prevDeco, deco, update.changes);\n        changedRanges = ChangedRange.extendWithRanges(changedRanges, decoDiff);\n        if (!(this.flags & 7 /* ViewFlag.Dirty */) && changedRanges.length == 0) {\n            return false;\n        }\n        else {\n            this.updateInner(changedRanges, update.startState.doc.length, composition);\n            if (update.transactions.length)\n                this.lastUpdate = Date.now();\n            return true;\n        }\n    }\n    // Used by update and the constructor do perform the actual DOM\n    // update\n    updateInner(changes, oldLength, composition) {\n        this.view.viewState.mustMeasureContent = true;\n        this.updateChildren(changes, oldLength, composition);\n        let { observer } = this.view;\n        observer.ignore(() => {\n            // Lock the height during redrawing, since Chrome sometimes\n            // messes with the scroll position during DOM mutation (though\n            // no relayout is triggered and I cannot imagine how it can\n            // recompute the scroll position without a layout)\n            this.dom.style.height = this.view.viewState.contentHeight / this.view.scaleY + \"px\";\n            this.dom.style.flexBasis = this.minWidth ? this.minWidth + \"px\" : \"\";\n            // Chrome will sometimes, when DOM mutations occur directly\n            // around the selection, get confused and report a different\n            // selection from the one it displays (issue #218). This tries\n            // to detect that situation.\n            let track = browser.chrome || browser.ios ? { node: observer.selectionRange.focusNode, written: false } : undefined;\n            this.sync(this.view, track);\n            this.flags &= ~7 /* ViewFlag.Dirty */;\n            if (track && (track.written || observer.selectionRange.focusNode != track.node))\n                this.forceSelection = true;\n            this.dom.style.height = \"\";\n        });\n        this.markedForComposition.forEach(cView => cView.flags &= ~8 /* ViewFlag.Composition */);\n        let gaps = [];\n        if (this.view.viewport.from || this.view.viewport.to < this.view.state.doc.length)\n            for (let child of this.children)\n                if (child instanceof BlockWidgetView && child.widget instanceof BlockGapWidget)\n                    gaps.push(child.dom);\n        observer.updateGaps(gaps);\n    }\n    updateChildren(changes, oldLength, composition) {\n        let ranges = composition ? composition.range.addToSet(changes.slice()) : changes;\n        let cursor = this.childCursor(oldLength);\n        for (let i = ranges.length - 1;; i--) {\n            let next = i >= 0 ? ranges[i] : null;\n            if (!next)\n                break;\n            let { fromA, toA, fromB, toB } = next, content, breakAtStart, openStart, openEnd;\n            if (composition && composition.range.fromB < toB && composition.range.toB > fromB) {\n                let before = ContentBuilder.build(this.view.state.doc, fromB, composition.range.fromB, this.decorations, this.dynamicDecorationMap);\n                let after = ContentBuilder.build(this.view.state.doc, composition.range.toB, toB, this.decorations, this.dynamicDecorationMap);\n                breakAtStart = before.breakAtStart;\n                openStart = before.openStart;\n                openEnd = after.openEnd;\n                let compLine = this.compositionView(composition);\n                if (after.breakAtStart) {\n                    compLine.breakAfter = 1;\n                }\n                else if (after.content.length &&\n                    compLine.merge(compLine.length, compLine.length, after.content[0], false, after.openStart, 0)) {\n                    compLine.breakAfter = after.content[0].breakAfter;\n                    after.content.shift();\n                }\n                if (before.content.length &&\n                    compLine.merge(0, 0, before.content[before.content.length - 1], true, 0, before.openEnd)) {\n                    before.content.pop();\n                }\n                content = before.content.concat(compLine).concat(after.content);\n            }\n            else {\n                ({ content, breakAtStart, openStart, openEnd } =\n                    ContentBuilder.build(this.view.state.doc, fromB, toB, this.decorations, this.dynamicDecorationMap));\n            }\n            let { i: toI, off: toOff } = cursor.findPos(toA, 1);\n            let { i: fromI, off: fromOff } = cursor.findPos(fromA, -1);\n            replaceRange(this, fromI, fromOff, toI, toOff, content, breakAtStart, openStart, openEnd);\n        }\n        if (composition)\n            this.fixCompositionDOM(composition);\n    }\n    updateEditContextFormatting(update) {\n        this.editContextFormatting = this.editContextFormatting.map(update.changes);\n        for (let tr of update.transactions)\n            for (let effect of tr.effects)\n                if (effect.is(setEditContextFormatting)) {\n                    this.editContextFormatting = effect.value;\n                }\n    }\n    compositionView(composition) {\n        let cur = new TextView(composition.text.nodeValue);\n        cur.flags |= 8 /* ViewFlag.Composition */;\n        for (let { deco } of composition.marks)\n            cur = new MarkView(deco, [cur], cur.length);\n        let line = new LineView;\n        line.append(cur, 0);\n        return line;\n    }\n    fixCompositionDOM(composition) {\n        let fix = (dom, cView) => {\n            cView.flags |= 8 /* ViewFlag.Composition */ | (cView.children.some(c => c.flags & 7 /* ViewFlag.Dirty */) ? 1 /* ViewFlag.ChildDirty */ : 0);\n            this.markedForComposition.add(cView);\n            let prev = ContentView.get(dom);\n            if (prev && prev != cView)\n                prev.dom = null;\n            cView.setDOM(dom);\n        };\n        let pos = this.childPos(composition.range.fromB, 1);\n        let cView = this.children[pos.i];\n        fix(composition.line, cView);\n        for (let i = composition.marks.length - 1; i >= -1; i--) {\n            pos = cView.childPos(pos.off, 1);\n            cView = cView.children[pos.i];\n            fix(i >= 0 ? composition.marks[i].node : composition.text, cView);\n        }\n    }\n    // Sync the DOM selection to this.state.selection\n    updateSelection(mustRead = false, fromPointer = false) {\n        if (mustRead || !this.view.observer.selectionRange.focusNode)\n            this.view.observer.readSelectionRange();\n        let activeElt = this.view.root.activeElement, focused = activeElt == this.dom;\n        let selectionNotFocus = !focused && !(this.view.state.facet(editable) || this.dom.tabIndex > -1) &&\n            hasSelection(this.dom, this.view.observer.selectionRange) && !(activeElt && this.dom.contains(activeElt));\n        if (!(focused || fromPointer || selectionNotFocus))\n            return;\n        let force = this.forceSelection;\n        this.forceSelection = false;\n        let main = this.view.state.selection.main;\n        let anchor = this.moveToLine(this.domAtPos(main.anchor));\n        let head = main.empty ? anchor : this.moveToLine(this.domAtPos(main.head));\n        // Always reset on Firefox when next to an uneditable node to\n        // avoid invisible cursor bugs (#111)\n        if (browser.gecko && main.empty && !this.hasComposition && betweenUneditable(anchor)) {\n            let dummy = document.createTextNode(\"\");\n            this.view.observer.ignore(() => anchor.node.insertBefore(dummy, anchor.node.childNodes[anchor.offset] || null));\n            anchor = head = new DOMPos(dummy, 0);\n            force = true;\n        }\n        let domSel = this.view.observer.selectionRange;\n        // If the selection is already here, or in an equivalent position, don't touch it\n        if (force || !domSel.focusNode || (!isEquivalentPosition(anchor.node, anchor.offset, domSel.anchorNode, domSel.anchorOffset) ||\n            !isEquivalentPosition(head.node, head.offset, domSel.focusNode, domSel.focusOffset)) && !this.suppressWidgetCursorChange(domSel, main)) {\n            this.view.observer.ignore(() => {\n                // Chrome Android will hide the virtual keyboard when tapping\n                // inside an uneditable node, and not bring it back when we\n                // move the cursor to its proper position. This tries to\n                // restore the keyboard by cycling focus.\n                if (browser.android && browser.chrome && this.dom.contains(domSel.focusNode) &&\n                    inUneditable(domSel.focusNode, this.dom)) {\n                    this.dom.blur();\n                    this.dom.focus({ preventScroll: true });\n                }\n                let rawSel = getSelection(this.view.root);\n                if (!rawSel) ;\n                else if (main.empty) {\n                    // Work around https://bugzilla.mozilla.org/show_bug.cgi?id=1612076\n                    if (browser.gecko) {\n                        let nextTo = nextToUneditable(anchor.node, anchor.offset);\n                        if (nextTo && nextTo != (1 /* NextTo.Before */ | 2 /* NextTo.After */)) {\n                            let text = (nextTo == 1 /* NextTo.Before */ ? textNodeBefore : textNodeAfter)(anchor.node, anchor.offset);\n                            if (text)\n                                anchor = new DOMPos(text.node, text.offset);\n                        }\n                    }\n                    rawSel.collapse(anchor.node, anchor.offset);\n                    if (main.bidiLevel != null && rawSel.caretBidiLevel !== undefined)\n                        rawSel.caretBidiLevel = main.bidiLevel;\n                }\n                else if (rawSel.extend) {\n                    // Selection.extend can be used to create an 'inverted' selection\n                    // (one where the focus is before the anchor), but not all\n                    // browsers support it yet.\n                    rawSel.collapse(anchor.node, anchor.offset);\n                    // Safari will ignore the call above when the editor is\n                    // hidden, and then raise an error on the call to extend\n                    // (#940).\n                    try {\n                        rawSel.extend(head.node, head.offset);\n                    }\n                    catch (_) { }\n                }\n                else {\n                    // Primitive (IE) way\n                    let range = document.createRange();\n                    if (main.anchor > main.head)\n                        [anchor, head] = [head, anchor];\n                    range.setEnd(head.node, head.offset);\n                    range.setStart(anchor.node, anchor.offset);\n                    rawSel.removeAllRanges();\n                    rawSel.addRange(range);\n                }\n                if (selectionNotFocus && this.view.root.activeElement == this.dom) {\n                    this.dom.blur();\n                    if (activeElt)\n                        activeElt.focus();\n                }\n            });\n            this.view.observer.setSelectionRange(anchor, head);\n        }\n        this.impreciseAnchor = anchor.precise ? null : new DOMPos(domSel.anchorNode, domSel.anchorOffset);\n        this.impreciseHead = head.precise ? null : new DOMPos(domSel.focusNode, domSel.focusOffset);\n    }\n    // If a zero-length widget is inserted next to the cursor during\n    // composition, avoid moving it across it and disrupting the\n    // composition.\n    suppressWidgetCursorChange(sel, cursor) {\n        return this.hasComposition && cursor.empty &&\n            isEquivalentPosition(sel.focusNode, sel.focusOffset, sel.anchorNode, sel.anchorOffset) &&\n            this.posFromDOM(sel.focusNode, sel.focusOffset) == cursor.head;\n    }\n    enforceCursorAssoc() {\n        if (this.hasComposition)\n            return;\n        let { view } = this, cursor = view.state.selection.main;\n        let sel = getSelection(view.root);\n        let { anchorNode, anchorOffset } = view.observer.selectionRange;\n        if (!sel || !cursor.empty || !cursor.assoc || !sel.modify)\n            return;\n        let line = LineView.find(this, cursor.head);\n        if (!line)\n            return;\n        let lineStart = line.posAtStart;\n        if (cursor.head == lineStart || cursor.head == lineStart + line.length)\n            return;\n        let before = this.coordsAt(cursor.head, -1), after = this.coordsAt(cursor.head, 1);\n        if (!before || !after || before.bottom > after.top)\n            return;\n        let dom = this.domAtPos(cursor.head + cursor.assoc);\n        sel.collapse(dom.node, dom.offset);\n        sel.modify(\"move\", cursor.assoc < 0 ? \"forward\" : \"backward\", \"lineboundary\");\n        // This can go wrong in corner cases like single-character lines,\n        // so check and reset if necessary.\n        view.observer.readSelectionRange();\n        let newRange = view.observer.selectionRange;\n        if (view.docView.posFromDOM(newRange.anchorNode, newRange.anchorOffset) != cursor.from)\n            sel.collapse(anchorNode, anchorOffset);\n    }\n    // If a position is in/near a block widget, move it to a nearby text\n    // line, since we don't want the cursor inside a block widget.\n    moveToLine(pos) {\n        // Block widgets will return positions before/after them, which\n        // are thus directly in the document DOM element.\n        let dom = this.dom, newPos;\n        if (pos.node != dom)\n            return pos;\n        for (let i = pos.offset; !newPos && i < dom.childNodes.length; i++) {\n            let view = ContentView.get(dom.childNodes[i]);\n            if (view instanceof LineView)\n                newPos = view.domAtPos(0);\n        }\n        for (let i = pos.offset - 1; !newPos && i >= 0; i--) {\n            let view = ContentView.get(dom.childNodes[i]);\n            if (view instanceof LineView)\n                newPos = view.domAtPos(view.length);\n        }\n        return newPos ? new DOMPos(newPos.node, newPos.offset, true) : pos;\n    }\n    nearest(dom) {\n        for (let cur = dom; cur;) {\n            let domView = ContentView.get(cur);\n            if (domView && domView.rootView == this)\n                return domView;\n            cur = cur.parentNode;\n        }\n        return null;\n    }\n    posFromDOM(node, offset) {\n        let view = this.nearest(node);\n        if (!view)\n            throw new RangeError(\"Trying to find position for a DOM position outside of the document\");\n        return view.localPosFromDOM(node, offset) + view.posAtStart;\n    }\n    domAtPos(pos) {\n        let { i, off } = this.childCursor().findPos(pos, -1);\n        for (; i < this.children.length - 1;) {\n            let child = this.children[i];\n            if (off < child.length || child instanceof LineView)\n                break;\n            i++;\n            off = 0;\n        }\n        return this.children[i].domAtPos(off);\n    }\n    coordsAt(pos, side) {\n        let best = null, bestPos = 0;\n        for (let off = this.length, i = this.children.length - 1; i >= 0; i--) {\n            let child = this.children[i], end = off - child.breakAfter, start = end - child.length;\n            if (end < pos)\n                break;\n            if (start <= pos && (start < pos || child.covers(-1)) && (end > pos || child.covers(1)) &&\n                (!best || child instanceof LineView && !(best instanceof LineView && side >= 0))) {\n                best = child;\n                bestPos = start;\n            }\n            else if (best && start == pos && end == pos && child instanceof BlockWidgetView && Math.abs(side) < 2) {\n                if (child.deco.startSide < 0)\n                    break;\n                else if (i)\n                    best = null;\n            }\n            off = start;\n        }\n        return best ? best.coordsAt(pos - bestPos, side) : null;\n    }\n    coordsForChar(pos) {\n        let { i, off } = this.childPos(pos, 1), child = this.children[i];\n        if (!(child instanceof LineView))\n            return null;\n        while (child.children.length) {\n            let { i, off: childOff } = child.childPos(off, 1);\n            for (;; i++) {\n                if (i == child.children.length)\n                    return null;\n                if ((child = child.children[i]).length)\n                    break;\n            }\n            off = childOff;\n        }\n        if (!(child instanceof TextView))\n            return null;\n        let end = findClusterBreak(child.text, off);\n        if (end == off)\n            return null;\n        let rects = textRange(child.dom, off, end).getClientRects();\n        for (let i = 0; i < rects.length; i++) {\n            let rect = rects[i];\n            if (i == rects.length - 1 || rect.top < rect.bottom && rect.left < rect.right)\n                return rect;\n        }\n        return null;\n    }\n    measureVisibleLineHeights(viewport) {\n        let result = [], { from, to } = viewport;\n        let contentWidth = this.view.contentDOM.clientWidth;\n        let isWider = contentWidth > Math.max(this.view.scrollDOM.clientWidth, this.minWidth) + 1;\n        let widest = -1, ltr = this.view.textDirection == Direction.LTR;\n        for (let pos = 0, i = 0; i < this.children.length; i++) {\n            let child = this.children[i], end = pos + child.length;\n            if (end > to)\n                break;\n            if (pos >= from) {\n                let childRect = child.dom.getBoundingClientRect();\n                result.push(childRect.height);\n                if (isWider) {\n                    let last = child.dom.lastChild;\n                    let rects = last ? clientRectsFor(last) : [];\n                    if (rects.length) {\n                        let rect = rects[rects.length - 1];\n                        let width = ltr ? rect.right - childRect.left : childRect.right - rect.left;\n                        if (width > widest) {\n                            widest = width;\n                            this.minWidth = contentWidth;\n                            this.minWidthFrom = pos;\n                            this.minWidthTo = end;\n                        }\n                    }\n                }\n            }\n            pos = end + child.breakAfter;\n        }\n        return result;\n    }\n    textDirectionAt(pos) {\n        let { i } = this.childPos(pos, 1);\n        return getComputedStyle(this.children[i].dom).direction == \"rtl\" ? Direction.RTL : Direction.LTR;\n    }\n    measureTextSize() {\n        for (let child of this.children) {\n            if (child instanceof LineView) {\n                let measure = child.measureTextSize();\n                if (measure)\n                    return measure;\n            }\n        }\n        // If no workable line exists, force a layout of a measurable element\n        let dummy = document.createElement(\"div\"), lineHeight, charWidth, textHeight;\n        dummy.className = \"cm-line\";\n        dummy.style.width = \"99999px\";\n        dummy.style.position = \"absolute\";\n        dummy.textContent = \"abc def ghi jkl mno pqr stu\";\n        this.view.observer.ignore(() => {\n            this.dom.appendChild(dummy);\n            let rect = clientRectsFor(dummy.firstChild)[0];\n            lineHeight = dummy.getBoundingClientRect().height;\n            charWidth = rect ? rect.width / 27 : 7;\n            textHeight = rect ? rect.height : lineHeight;\n            dummy.remove();\n        });\n        return { lineHeight, charWidth, textHeight };\n    }\n    childCursor(pos = this.length) {\n        // Move back to start of last element when possible, so that\n        // `ChildCursor.findPos` doesn't have to deal with the edge case\n        // of being after the last element.\n        let i = this.children.length;\n        if (i)\n            pos -= this.children[--i].length;\n        return new ChildCursor(this.children, pos, i);\n    }\n    computeBlockGapDeco() {\n        let deco = [], vs = this.view.viewState;\n        for (let pos = 0, i = 0;; i++) {\n            let next = i == vs.viewports.length ? null : vs.viewports[i];\n            let end = next ? next.from - 1 : this.length;\n            if (end > pos) {\n                let height = (vs.lineBlockAt(end).bottom - vs.lineBlockAt(pos).top) / this.view.scaleY;\n                deco.push(Decoration.replace({\n                    widget: new BlockGapWidget(height),\n                    block: true,\n                    inclusive: true,\n                    isBlockGap: true,\n                }).range(pos, end));\n            }\n            if (!next)\n                break;\n            pos = next.to + 1;\n        }\n        return Decoration.set(deco);\n    }\n    updateDeco() {\n        let i = 1;\n        let allDeco = this.view.state.facet(decorations).map(d => {\n            let dynamic = this.dynamicDecorationMap[i++] = typeof d == \"function\";\n            return dynamic ? d(this.view) : d;\n        });\n        let dynamicOuter = false, outerDeco = this.view.state.facet(outerDecorations).map((d, i) => {\n            let dynamic = typeof d == \"function\";\n            if (dynamic)\n                dynamicOuter = true;\n            return dynamic ? d(this.view) : d;\n        });\n        if (outerDeco.length) {\n            this.dynamicDecorationMap[i++] = dynamicOuter;\n            allDeco.push(RangeSet.join(outerDeco));\n        }\n        this.decorations = [\n            this.editContextFormatting,\n            ...allDeco,\n            this.computeBlockGapDeco(),\n            this.view.viewState.lineGapDeco\n        ];\n        while (i < this.decorations.length)\n            this.dynamicDecorationMap[i++] = false;\n        return this.decorations;\n    }\n    scrollIntoView(target) {\n        if (target.isSnapshot) {\n            let ref = this.view.viewState.lineBlockAt(target.range.head);\n            this.view.scrollDOM.scrollTop = ref.top - target.yMargin;\n            this.view.scrollDOM.scrollLeft = target.xMargin;\n            return;\n        }\n        for (let handler of this.view.state.facet(scrollHandler)) {\n            try {\n                if (handler(this.view, target.range, target))\n                    return true;\n            }\n            catch (e) {\n                logException(this.view.state, e, \"scroll handler\");\n            }\n        }\n        let { range } = target;\n        let rect = this.coordsAt(range.head, range.empty ? range.assoc : range.head > range.anchor ? -1 : 1), other;\n        if (!rect)\n            return;\n        if (!range.empty && (other = this.coordsAt(range.anchor, range.anchor > range.head ? -1 : 1)))\n            rect = { left: Math.min(rect.left, other.left), top: Math.min(rect.top, other.top),\n                right: Math.max(rect.right, other.right), bottom: Math.max(rect.bottom, other.bottom) };\n        let margins = getScrollMargins(this.view);\n        let targetRect = {\n            left: rect.left - margins.left, top: rect.top - margins.top,\n            right: rect.right + margins.right, bottom: rect.bottom + margins.bottom\n        };\n        let { offsetWidth, offsetHeight } = this.view.scrollDOM;\n        scrollRectIntoView(this.view.scrollDOM, targetRect, range.head < range.anchor ? -1 : 1, target.x, target.y, Math.max(Math.min(target.xMargin, offsetWidth), -offsetWidth), Math.max(Math.min(target.yMargin, offsetHeight), -offsetHeight), this.view.textDirection == Direction.LTR);\n    }\n}\nfunction betweenUneditable(pos) {\n    return pos.node.nodeType == 1 && pos.node.firstChild &&\n        (pos.offset == 0 || pos.node.childNodes[pos.offset - 1].contentEditable == \"false\") &&\n        (pos.offset == pos.node.childNodes.length || pos.node.childNodes[pos.offset].contentEditable == \"false\");\n}\nfunction findCompositionNode(view, headPos) {\n    let sel = view.observer.selectionRange;\n    if (!sel.focusNode)\n        return null;\n    let textBefore = textNodeBefore(sel.focusNode, sel.focusOffset);\n    let textAfter = textNodeAfter(sel.focusNode, sel.focusOffset);\n    let textNode = textBefore || textAfter;\n    if (textAfter && textBefore && textAfter.node != textBefore.node) {\n        let descAfter = ContentView.get(textAfter.node);\n        if (!descAfter || descAfter instanceof TextView && descAfter.text != textAfter.node.nodeValue) {\n            textNode = textAfter;\n        }\n        else if (view.docView.lastCompositionAfterCursor) {\n            let descBefore = ContentView.get(textBefore.node);\n            if (!(!descBefore || descBefore instanceof TextView && descBefore.text != textBefore.node.nodeValue))\n                textNode = textAfter;\n        }\n    }\n    view.docView.lastCompositionAfterCursor = textNode != textBefore;\n    if (!textNode)\n        return null;\n    let from = headPos - textNode.offset;\n    return { from, to: from + textNode.node.nodeValue.length, node: textNode.node };\n}\nfunction findCompositionRange(view, changes, headPos) {\n    let found = findCompositionNode(view, headPos);\n    if (!found)\n        return null;\n    let { node: textNode, from, to } = found, text = textNode.nodeValue;\n    // Don't try to preserve multi-line compositions\n    if (/[\\n\\r]/.test(text))\n        return null;\n    if (view.state.doc.sliceString(found.from, found.to) != text)\n        return null;\n    let inv = changes.invertedDesc;\n    let range = new ChangedRange(inv.mapPos(from), inv.mapPos(to), from, to);\n    let marks = [];\n    for (let parent = textNode.parentNode;; parent = parent.parentNode) {\n        let parentView = ContentView.get(parent);\n        if (parentView instanceof MarkView)\n            marks.push({ node: parent, deco: parentView.mark });\n        else if (parentView instanceof LineView || parent.nodeName == \"DIV\" && parent.parentNode == view.contentDOM)\n            return { range, text: textNode, marks, line: parent };\n        else if (parent != view.contentDOM)\n            marks.push({ node: parent, deco: new MarkDecoration({\n                    inclusive: true,\n                    attributes: getAttrs(parent),\n                    tagName: parent.tagName.toLowerCase()\n                }) });\n        else\n            return null;\n    }\n}\nfunction nextToUneditable(node, offset) {\n    if (node.nodeType != 1)\n        return 0;\n    return (offset && node.childNodes[offset - 1].contentEditable == \"false\" ? 1 /* NextTo.Before */ : 0) |\n        (offset < node.childNodes.length && node.childNodes[offset].contentEditable == \"false\" ? 2 /* NextTo.After */ : 0);\n}\nlet DecorationComparator$1 = class DecorationComparator {\n    constructor() {\n        this.changes = [];\n    }\n    compareRange(from, to) { addRange(from, to, this.changes); }\n    comparePoint(from, to) { addRange(from, to, this.changes); }\n    boundChange(pos) { addRange(pos, pos, this.changes); }\n};\nfunction findChangedDeco(a, b, diff) {\n    let comp = new DecorationComparator$1;\n    RangeSet.compare(a, b, diff, comp);\n    return comp.changes;\n}\nfunction inUneditable(node, inside) {\n    for (let cur = node; cur && cur != inside; cur = cur.assignedSlot || cur.parentNode) {\n        if (cur.nodeType == 1 && cur.contentEditable == 'false') {\n            return true;\n        }\n    }\n    return false;\n}\nfunction touchesComposition(changes, composition) {\n    let touched = false;\n    if (composition)\n        changes.iterChangedRanges((from, to) => {\n            if (from < composition.to && to > composition.from)\n                touched = true;\n        });\n    return touched;\n}\n\nfunction groupAt(state, pos, bias = 1) {\n    let categorize = state.charCategorizer(pos);\n    let line = state.doc.lineAt(pos), linePos = pos - line.from;\n    if (line.length == 0)\n        return EditorSelection.cursor(pos);\n    if (linePos == 0)\n        bias = 1;\n    else if (linePos == line.length)\n        bias = -1;\n    let from = linePos, to = linePos;\n    if (bias < 0)\n        from = findClusterBreak(line.text, linePos, false);\n    else\n        to = findClusterBreak(line.text, linePos);\n    let cat = categorize(line.text.slice(from, to));\n    while (from > 0) {\n        let prev = findClusterBreak(line.text, from, false);\n        if (categorize(line.text.slice(prev, from)) != cat)\n            break;\n        from = prev;\n    }\n    while (to < line.length) {\n        let next = findClusterBreak(line.text, to);\n        if (categorize(line.text.slice(to, next)) != cat)\n            break;\n        to = next;\n    }\n    return EditorSelection.range(from + line.from, to + line.from);\n}\n// Search the DOM for the {node, offset} position closest to the given\n// coordinates. Very inefficient and crude, but can usually be avoided\n// by calling caret(Position|Range)FromPoint instead.\nfunction getdx(x, rect) {\n    return rect.left > x ? rect.left - x : Math.max(0, x - rect.right);\n}\nfunction getdy(y, rect) {\n    return rect.top > y ? rect.top - y : Math.max(0, y - rect.bottom);\n}\nfunction yOverlap(a, b) {\n    return a.top < b.bottom - 1 && a.bottom > b.top + 1;\n}\nfunction upTop(rect, top) {\n    return top < rect.top ? { top, left: rect.left, right: rect.right, bottom: rect.bottom } : rect;\n}\nfunction upBot(rect, bottom) {\n    return bottom > rect.bottom ? { top: rect.top, left: rect.left, right: rect.right, bottom } : rect;\n}\nfunction domPosAtCoords(parent, x, y) {\n    let closest, closestRect, closestX, closestY, closestOverlap = false;\n    let above, below, aboveRect, belowRect;\n    for (let child = parent.firstChild; child; child = child.nextSibling) {\n        let rects = clientRectsFor(child);\n        for (let i = 0; i < rects.length; i++) {\n            let rect = rects[i];\n            if (closestRect && yOverlap(closestRect, rect))\n                rect = upTop(upBot(rect, closestRect.bottom), closestRect.top);\n            let dx = getdx(x, rect), dy = getdy(y, rect);\n            if (dx == 0 && dy == 0)\n                return child.nodeType == 3 ? domPosInText(child, x, y) : domPosAtCoords(child, x, y);\n            if (!closest || closestY > dy || closestY == dy && closestX > dx) {\n                closest = child;\n                closestRect = rect;\n                closestX = dx;\n                closestY = dy;\n                closestOverlap = !dx ? true : x < rect.left ? i > 0 : i < rects.length - 1;\n            }\n            if (dx == 0) {\n                if (y > rect.bottom && (!aboveRect || aboveRect.bottom < rect.bottom)) {\n                    above = child;\n                    aboveRect = rect;\n                }\n                else if (y < rect.top && (!belowRect || belowRect.top > rect.top)) {\n                    below = child;\n                    belowRect = rect;\n                }\n            }\n            else if (aboveRect && yOverlap(aboveRect, rect)) {\n                aboveRect = upBot(aboveRect, rect.bottom);\n            }\n            else if (belowRect && yOverlap(belowRect, rect)) {\n                belowRect = upTop(belowRect, rect.top);\n            }\n        }\n    }\n    if (aboveRect && aboveRect.bottom >= y) {\n        closest = above;\n        closestRect = aboveRect;\n    }\n    else if (belowRect && belowRect.top <= y) {\n        closest = below;\n        closestRect = belowRect;\n    }\n    if (!closest)\n        return { node: parent, offset: 0 };\n    let clipX = Math.max(closestRect.left, Math.min(closestRect.right, x));\n    if (closest.nodeType == 3)\n        return domPosInText(closest, clipX, y);\n    if (closestOverlap && closest.contentEditable != \"false\")\n        return domPosAtCoords(closest, clipX, y);\n    let offset = Array.prototype.indexOf.call(parent.childNodes, closest) +\n        (x >= (closestRect.left + closestRect.right) / 2 ? 1 : 0);\n    return { node: parent, offset };\n}\nfunction domPosInText(node, x, y) {\n    let len = node.nodeValue.length;\n    let closestOffset = -1, closestDY = 1e9, generalSide = 0;\n    for (let i = 0; i < len; i++) {\n        let rects = textRange(node, i, i + 1).getClientRects();\n        for (let j = 0; j < rects.length; j++) {\n            let rect = rects[j];\n            if (rect.top == rect.bottom)\n                continue;\n            if (!generalSide)\n                generalSide = x - rect.left;\n            let dy = (rect.top > y ? rect.top - y : y - rect.bottom) - 1;\n            if (rect.left - 1 <= x && rect.right + 1 >= x && dy < closestDY) {\n                let right = x >= (rect.left + rect.right) / 2, after = right;\n                if (browser.chrome || browser.gecko) {\n                    // Check for RTL on browsers that support getting client\n                    // rects for empty ranges.\n                    let rectBefore = textRange(node, i).getBoundingClientRect();\n                    if (rectBefore.left == rect.right)\n                        after = !right;\n                }\n                if (dy <= 0)\n                    return { node, offset: i + (after ? 1 : 0) };\n                closestOffset = i + (after ? 1 : 0);\n                closestDY = dy;\n            }\n        }\n    }\n    return { node, offset: closestOffset > -1 ? closestOffset : generalSide > 0 ? node.nodeValue.length : 0 };\n}\nfunction posAtCoords(view, coords, precise, bias = -1) {\n    var _a, _b;\n    let content = view.contentDOM.getBoundingClientRect(), docTop = content.top + view.viewState.paddingTop;\n    let block, { docHeight } = view.viewState;\n    let { x, y } = coords, yOffset = y - docTop;\n    if (yOffset < 0)\n        return 0;\n    if (yOffset > docHeight)\n        return view.state.doc.length;\n    // Scan for a text block near the queried y position\n    for (let halfLine = view.viewState.heightOracle.textHeight / 2, bounced = false;;) {\n        block = view.elementAtHeight(yOffset);\n        if (block.type == BlockType.Text)\n            break;\n        for (;;) {\n            // Move the y position out of this block\n            yOffset = bias > 0 ? block.bottom + halfLine : block.top - halfLine;\n            if (yOffset >= 0 && yOffset <= docHeight)\n                break;\n            // If the document consists entirely of replaced widgets, we\n            // won't find a text block, so return 0\n            if (bounced)\n                return precise ? null : 0;\n            bounced = true;\n            bias = -bias;\n        }\n    }\n    y = docTop + yOffset;\n    let lineStart = block.from;\n    // If this is outside of the rendered viewport, we can't determine a position\n    if (lineStart < view.viewport.from)\n        return view.viewport.from == 0 ? 0 : precise ? null : posAtCoordsImprecise(view, content, block, x, y);\n    if (lineStart > view.viewport.to)\n        return view.viewport.to == view.state.doc.length ? view.state.doc.length :\n            precise ? null : posAtCoordsImprecise(view, content, block, x, y);\n    // Prefer ShadowRootOrDocument.elementFromPoint if present, fall back to document if not\n    let doc = view.dom.ownerDocument;\n    let root = view.root.elementFromPoint ? view.root : doc;\n    let element = root.elementFromPoint(x, y);\n    if (element && !view.contentDOM.contains(element))\n        element = null;\n    // If the element is unexpected, clip x at the sides of the content area and try again\n    if (!element) {\n        x = Math.max(content.left + 1, Math.min(content.right - 1, x));\n        element = root.elementFromPoint(x, y);\n        if (element && !view.contentDOM.contains(element))\n            element = null;\n    }\n    // There's visible editor content under the point, so we can try\n    // using caret(Position|Range)FromPoint as a shortcut\n    let node, offset = -1;\n    if (element && ((_a = view.docView.nearest(element)) === null || _a === void 0 ? void 0 : _a.isEditable) != false) {\n        if (doc.caretPositionFromPoint) {\n            let pos = doc.caretPositionFromPoint(x, y);\n            if (pos)\n                ({ offsetNode: node, offset } = pos);\n        }\n        else if (doc.caretRangeFromPoint) {\n            let range = doc.caretRangeFromPoint(x, y);\n            if (range) {\n                ({ startContainer: node, startOffset: offset } = range);\n                if (!view.contentDOM.contains(node) ||\n                    browser.safari && isSuspiciousSafariCaretResult(node, offset, x) ||\n                    browser.chrome && isSuspiciousChromeCaretResult(node, offset, x))\n                    node = undefined;\n            }\n        }\n        // Chrome will return offsets into <input> elements without child\n        // nodes, which will lead to a null deref below, so clip the\n        // offset to the node size.\n        if (node)\n            offset = Math.min(maxOffset(node), offset);\n    }\n    // No luck, do our own (potentially expensive) search\n    if (!node || !view.docView.dom.contains(node)) {\n        let line = LineView.find(view.docView, lineStart);\n        if (!line)\n            return yOffset > block.top + block.height / 2 ? block.to : block.from;\n        ({ node, offset } = domPosAtCoords(line.dom, x, y));\n    }\n    let nearest = view.docView.nearest(node);\n    if (!nearest)\n        return null;\n    if (nearest.isWidget && ((_b = nearest.dom) === null || _b === void 0 ? void 0 : _b.nodeType) == 1) {\n        let rect = nearest.dom.getBoundingClientRect();\n        return coords.y < rect.top || coords.y <= rect.bottom && coords.x <= (rect.left + rect.right) / 2\n            ? nearest.posAtStart : nearest.posAtEnd;\n    }\n    else {\n        return nearest.localPosFromDOM(node, offset) + nearest.posAtStart;\n    }\n}\nfunction posAtCoordsImprecise(view, contentRect, block, x, y) {\n    let into = Math.round((x - contentRect.left) * view.defaultCharacterWidth);\n    if (view.lineWrapping && block.height > view.defaultLineHeight * 1.5) {\n        let textHeight = view.viewState.heightOracle.textHeight;\n        let line = Math.floor((y - block.top - (view.defaultLineHeight - textHeight) * 0.5) / textHeight);\n        into += line * view.viewState.heightOracle.lineLength;\n    }\n    let content = view.state.sliceDoc(block.from, block.to);\n    return block.from + findColumn(content, into, view.state.tabSize);\n}\n// In case of a high line height, Safari's caretRangeFromPoint treats\n// the space between lines as belonging to the last character of the\n// line before. This is used to detect such a result so that it can be\n// ignored (issue #401).\nfunction isSuspiciousSafariCaretResult(node, offset, x) {\n    let len, scan = node;\n    if (node.nodeType != 3 || offset != (len = node.nodeValue.length))\n        return false;\n    for (;;) { // Check that there is no content after this node\n        let next = scan.nextSibling;\n        if (next) {\n            if (next.nodeName == \"BR\")\n                break;\n            return false;\n        }\n        else {\n            let parent = scan.parentNode;\n            if (!parent || parent.nodeName == \"DIV\")\n                break;\n            scan = parent;\n        }\n    }\n    return textRange(node, len - 1, len).getBoundingClientRect().right > x;\n}\n// Chrome will move positions between lines to the start of the next line\nfunction isSuspiciousChromeCaretResult(node, offset, x) {\n    if (offset != 0)\n        return false;\n    for (let cur = node;;) {\n        let parent = cur.parentNode;\n        if (!parent || parent.nodeType != 1 || parent.firstChild != cur)\n            return false;\n        if (parent.classList.contains(\"cm-line\"))\n            break;\n        cur = parent;\n    }\n    let rect = node.nodeType == 1 ? node.getBoundingClientRect()\n        : textRange(node, 0, Math.max(node.nodeValue.length, 1)).getBoundingClientRect();\n    return x - rect.left > 5;\n}\nfunction blockAt(view, pos, side) {\n    let line = view.lineBlockAt(pos);\n    if (Array.isArray(line.type)) {\n        let best;\n        for (let l of line.type) {\n            if (l.from > pos)\n                break;\n            if (l.to < pos)\n                continue;\n            if (l.from < pos && l.to > pos)\n                return l;\n            if (!best || (l.type == BlockType.Text && (best.type != l.type || (side < 0 ? l.from < pos : l.to > pos))))\n                best = l;\n        }\n        return best || line;\n    }\n    return line;\n}\nfunction moveToLineBoundary(view, start, forward, includeWrap) {\n    let line = blockAt(view, start.head, start.assoc || -1);\n    let coords = !includeWrap || line.type != BlockType.Text || !(view.lineWrapping || line.widgetLineBreaks) ? null\n        : view.coordsAtPos(start.assoc < 0 && start.head > line.from ? start.head - 1 : start.head);\n    if (coords) {\n        let editorRect = view.dom.getBoundingClientRect();\n        let direction = view.textDirectionAt(line.from);\n        let pos = view.posAtCoords({ x: forward == (direction == Direction.LTR) ? editorRect.right - 1 : editorRect.left + 1,\n            y: (coords.top + coords.bottom) / 2 });\n        if (pos != null)\n            return EditorSelection.cursor(pos, forward ? -1 : 1);\n    }\n    return EditorSelection.cursor(forward ? line.to : line.from, forward ? -1 : 1);\n}\nfunction moveByChar(view, start, forward, by) {\n    let line = view.state.doc.lineAt(start.head), spans = view.bidiSpans(line);\n    let direction = view.textDirectionAt(line.from);\n    for (let cur = start, check = null;;) {\n        let next = moveVisually(line, spans, direction, cur, forward), char = movedOver;\n        if (!next) {\n            if (line.number == (forward ? view.state.doc.lines : 1))\n                return cur;\n            char = \"\\n\";\n            line = view.state.doc.line(line.number + (forward ? 1 : -1));\n            spans = view.bidiSpans(line);\n            next = view.visualLineSide(line, !forward);\n        }\n        if (!check) {\n            if (!by)\n                return next;\n            check = by(char);\n        }\n        else if (!check(char)) {\n            return cur;\n        }\n        cur = next;\n    }\n}\nfunction byGroup(view, pos, start) {\n    let categorize = view.state.charCategorizer(pos);\n    let cat = categorize(start);\n    return (next) => {\n        let nextCat = categorize(next);\n        if (cat == CharCategory.Space)\n            cat = nextCat;\n        return cat == nextCat;\n    };\n}\nfunction moveVertically(view, start, forward, distance) {\n    let startPos = start.head, dir = forward ? 1 : -1;\n    if (startPos == (forward ? view.state.doc.length : 0))\n        return EditorSelection.cursor(startPos, start.assoc);\n    let goal = start.goalColumn, startY;\n    let rect = view.contentDOM.getBoundingClientRect();\n    let startCoords = view.coordsAtPos(startPos, start.assoc || -1), docTop = view.documentTop;\n    if (startCoords) {\n        if (goal == null)\n            goal = startCoords.left - rect.left;\n        startY = dir < 0 ? startCoords.top : startCoords.bottom;\n    }\n    else {\n        let line = view.viewState.lineBlockAt(startPos);\n        if (goal == null)\n            goal = Math.min(rect.right - rect.left, view.defaultCharacterWidth * (startPos - line.from));\n        startY = (dir < 0 ? line.top : line.bottom) + docTop;\n    }\n    let resolvedGoal = rect.left + goal;\n    let dist = distance !== null && distance !== void 0 ? distance : (view.viewState.heightOracle.textHeight >> 1);\n    for (let extra = 0;; extra += 10) {\n        let curY = startY + (dist + extra) * dir;\n        let pos = posAtCoords(view, { x: resolvedGoal, y: curY }, false, dir);\n        if (curY < rect.top || curY > rect.bottom || (dir < 0 ? pos < startPos : pos > startPos)) {\n            let charRect = view.docView.coordsForChar(pos);\n            let assoc = !charRect || curY < charRect.top ? -1 : 1;\n            return EditorSelection.cursor(pos, assoc, undefined, goal);\n        }\n    }\n}\nfunction skipAtomicRanges(atoms, pos, bias) {\n    for (;;) {\n        let moved = 0;\n        for (let set of atoms) {\n            set.between(pos - 1, pos + 1, (from, to, value) => {\n                if (pos > from && pos < to) {\n                    let side = moved || bias || (pos - from < to - pos ? -1 : 1);\n                    pos = side < 0 ? from : to;\n                    moved = side;\n                }\n            });\n        }\n        if (!moved)\n            return pos;\n    }\n}\nfunction skipAtoms(view, oldPos, pos) {\n    let newPos = skipAtomicRanges(view.state.facet(atomicRanges).map(f => f(view)), pos.from, oldPos.head > pos.from ? -1 : 1);\n    return newPos == pos.from ? pos : EditorSelection.cursor(newPos, newPos < pos.from ? 1 : -1);\n}\n\nconst LineBreakPlaceholder = \"\\uffff\";\nclass DOMReader {\n    constructor(points, state) {\n        this.points = points;\n        this.text = \"\";\n        this.lineSeparator = state.facet(EditorState.lineSeparator);\n    }\n    append(text) {\n        this.text += text;\n    }\n    lineBreak() {\n        this.text += LineBreakPlaceholder;\n    }\n    readRange(start, end) {\n        if (!start)\n            return this;\n        let parent = start.parentNode;\n        for (let cur = start;;) {\n            this.findPointBefore(parent, cur);\n            let oldLen = this.text.length;\n            this.readNode(cur);\n            let next = cur.nextSibling;\n            if (next == end)\n                break;\n            let view = ContentView.get(cur), nextView = ContentView.get(next);\n            if (view && nextView ? view.breakAfter :\n                (view ? view.breakAfter : isBlockElement(cur)) ||\n                    (isBlockElement(next) && (cur.nodeName != \"BR\" || cur.cmIgnore) && this.text.length > oldLen))\n                this.lineBreak();\n            cur = next;\n        }\n        this.findPointBefore(parent, end);\n        return this;\n    }\n    readTextNode(node) {\n        let text = node.nodeValue;\n        for (let point of this.points)\n            if (point.node == node)\n                point.pos = this.text.length + Math.min(point.offset, text.length);\n        for (let off = 0, re = this.lineSeparator ? null : /\\r\\n?|\\n/g;;) {\n            let nextBreak = -1, breakSize = 1, m;\n            if (this.lineSeparator) {\n                nextBreak = text.indexOf(this.lineSeparator, off);\n                breakSize = this.lineSeparator.length;\n            }\n            else if (m = re.exec(text)) {\n                nextBreak = m.index;\n                breakSize = m[0].length;\n            }\n            this.append(text.slice(off, nextBreak < 0 ? text.length : nextBreak));\n            if (nextBreak < 0)\n                break;\n            this.lineBreak();\n            if (breakSize > 1)\n                for (let point of this.points)\n                    if (point.node == node && point.pos > this.text.length)\n                        point.pos -= breakSize - 1;\n            off = nextBreak + breakSize;\n        }\n    }\n    readNode(node) {\n        if (node.cmIgnore)\n            return;\n        let view = ContentView.get(node);\n        let fromView = view && view.overrideDOMText;\n        if (fromView != null) {\n            this.findPointInside(node, fromView.length);\n            for (let i = fromView.iter(); !i.next().done;) {\n                if (i.lineBreak)\n                    this.lineBreak();\n                else\n                    this.append(i.value);\n            }\n        }\n        else if (node.nodeType == 3) {\n            this.readTextNode(node);\n        }\n        else if (node.nodeName == \"BR\") {\n            if (node.nextSibling)\n                this.lineBreak();\n        }\n        else if (node.nodeType == 1) {\n            this.readRange(node.firstChild, null);\n        }\n    }\n    findPointBefore(node, next) {\n        for (let point of this.points)\n            if (point.node == node && node.childNodes[point.offset] == next)\n                point.pos = this.text.length;\n    }\n    findPointInside(node, length) {\n        for (let point of this.points)\n            if (node.nodeType == 3 ? point.node == node : node.contains(point.node))\n                point.pos = this.text.length + (isAtEnd(node, point.node, point.offset) ? length : 0);\n    }\n}\nfunction isAtEnd(parent, node, offset) {\n    for (;;) {\n        if (!node || offset < maxOffset(node))\n            return false;\n        if (node == parent)\n            return true;\n        offset = domIndex(node) + 1;\n        node = node.parentNode;\n    }\n}\nclass DOMPoint {\n    constructor(node, offset) {\n        this.node = node;\n        this.offset = offset;\n        this.pos = -1;\n    }\n}\n\nclass DOMChange {\n    constructor(view, start, end, typeOver) {\n        this.typeOver = typeOver;\n        this.bounds = null;\n        this.text = \"\";\n        this.domChanged = start > -1;\n        let { impreciseHead: iHead, impreciseAnchor: iAnchor } = view.docView;\n        if (view.state.readOnly && start > -1) {\n            // Ignore changes when the editor is read-only\n            this.newSel = null;\n        }\n        else if (start > -1 && (this.bounds = view.docView.domBoundsAround(start, end, 0))) {\n            let selPoints = iHead || iAnchor ? [] : selectionPoints(view);\n            let reader = new DOMReader(selPoints, view.state);\n            reader.readRange(this.bounds.startDOM, this.bounds.endDOM);\n            this.text = reader.text;\n            this.newSel = selectionFromPoints(selPoints, this.bounds.from);\n        }\n        else {\n            let domSel = view.observer.selectionRange;\n            let head = iHead && iHead.node == domSel.focusNode && iHead.offset == domSel.focusOffset ||\n                !contains(view.contentDOM, domSel.focusNode)\n                ? view.state.selection.main.head\n                : view.docView.posFromDOM(domSel.focusNode, domSel.focusOffset);\n            let anchor = iAnchor && iAnchor.node == domSel.anchorNode && iAnchor.offset == domSel.anchorOffset ||\n                !contains(view.contentDOM, domSel.anchorNode)\n                ? view.state.selection.main.anchor\n                : view.docView.posFromDOM(domSel.anchorNode, domSel.anchorOffset);\n            // iOS will refuse to select the block gaps when doing\n            // select-all.\n            // Chrome will put the selection *inside* them, confusing\n            // posFromDOM\n            let vp = view.viewport;\n            if ((browser.ios || browser.chrome) && view.state.selection.main.empty && head != anchor &&\n                (vp.from > 0 || vp.to < view.state.doc.length)) {\n                let from = Math.min(head, anchor), to = Math.max(head, anchor);\n                let offFrom = vp.from - from, offTo = vp.to - to;\n                if ((offFrom == 0 || offFrom == 1 || from == 0) && (offTo == 0 || offTo == -1 || to == view.state.doc.length)) {\n                    head = 0;\n                    anchor = view.state.doc.length;\n                }\n            }\n            this.newSel = EditorSelection.single(anchor, head);\n        }\n    }\n}\nfunction applyDOMChange(view, domChange) {\n    let change;\n    let { newSel } = domChange, sel = view.state.selection.main;\n    let lastKey = view.inputState.lastKeyTime > Date.now() - 100 ? view.inputState.lastKeyCode : -1;\n    if (domChange.bounds) {\n        let { from, to } = domChange.bounds;\n        let preferredPos = sel.from, preferredSide = null;\n        // Prefer anchoring to end when Backspace is pressed (or, on\n        // Android, when something was deleted)\n        if (lastKey === 8 || browser.android && domChange.text.length < to - from) {\n            preferredPos = sel.to;\n            preferredSide = \"end\";\n        }\n        let diff = findDiff(view.state.doc.sliceString(from, to, LineBreakPlaceholder), domChange.text, preferredPos - from, preferredSide);\n        if (diff) {\n            // Chrome inserts two newlines when pressing shift-enter at the\n            // end of a line. DomChange drops one of those.\n            if (browser.chrome && lastKey == 13 &&\n                diff.toB == diff.from + 2 && domChange.text.slice(diff.from, diff.toB) == LineBreakPlaceholder + LineBreakPlaceholder)\n                diff.toB--;\n            change = { from: from + diff.from, to: from + diff.toA,\n                insert: Text.of(domChange.text.slice(diff.from, diff.toB).split(LineBreakPlaceholder)) };\n        }\n    }\n    else if (newSel && (!view.hasFocus && view.state.facet(editable) || newSel.main.eq(sel))) {\n        newSel = null;\n    }\n    if (!change && !newSel)\n        return false;\n    if (!change && domChange.typeOver && !sel.empty && newSel && newSel.main.empty) {\n        // Heuristic to notice typing over a selected character\n        change = { from: sel.from, to: sel.to, insert: view.state.doc.slice(sel.from, sel.to) };\n    }\n    else if ((browser.mac || browser.android) && change && change.from == change.to && change.from == sel.head - 1 &&\n        /^\\. ?$/.test(change.insert.toString()) && view.contentDOM.getAttribute(\"autocorrect\") == \"off\") {\n        // Detect insert-period-on-double-space Mac and Android behavior,\n        // and transform it into a regular space insert.\n        if (newSel && change.insert.length == 2)\n            newSel = EditorSelection.single(newSel.main.anchor - 1, newSel.main.head - 1);\n        change = { from: change.from, to: change.to, insert: Text.of([change.insert.toString().replace(\".\", \" \")]) };\n    }\n    else if (change && change.from >= sel.from && change.to <= sel.to &&\n        (change.from != sel.from || change.to != sel.to) &&\n        (sel.to - sel.from) - (change.to - change.from) <= 4) {\n        // If the change is inside the selection and covers most of it,\n        // assume it is a selection replace (with identical characters at\n        // the start/end not included in the diff)\n        change = {\n            from: sel.from, to: sel.to,\n            insert: view.state.doc.slice(sel.from, change.from).append(change.insert).append(view.state.doc.slice(change.to, sel.to))\n        };\n    }\n    else if (browser.chrome && change && change.from == change.to && change.from == sel.head &&\n        change.insert.toString() == \"\\n \" && view.lineWrapping) {\n        // In Chrome, if you insert a space at the start of a wrapped\n        // line, it will actually insert a newline and a space, causing a\n        // bogus new line to be created in CodeMirror (#968)\n        if (newSel)\n            newSel = EditorSelection.single(newSel.main.anchor - 1, newSel.main.head - 1);\n        change = { from: sel.from, to: sel.to, insert: Text.of([\" \"]) };\n    }\n    if (change) {\n        return applyDOMChangeInner(view, change, newSel, lastKey);\n    }\n    else if (newSel && !newSel.main.eq(sel)) {\n        let scrollIntoView = false, userEvent = \"select\";\n        if (view.inputState.lastSelectionTime > Date.now() - 50) {\n            if (view.inputState.lastSelectionOrigin == \"select\")\n                scrollIntoView = true;\n            userEvent = view.inputState.lastSelectionOrigin;\n        }\n        view.dispatch({ selection: newSel, scrollIntoView, userEvent });\n        return true;\n    }\n    else {\n        return false;\n    }\n}\nfunction applyDOMChangeInner(view, change, newSel, lastKey = -1) {\n    if (browser.ios && view.inputState.flushIOSKey(change))\n        return true;\n    let sel = view.state.selection.main;\n    // Android browsers don't fire reasonable key events for enter,\n    // backspace, or delete. So this detects changes that look like\n    // they're caused by those keys, and reinterprets them as key\n    // events. (Some of these keys are also handled by beforeinput\n    // events and the pendingAndroidKey mechanism, but that's not\n    // reliable in all situations.)\n    if (browser.android &&\n        ((change.to == sel.to &&\n            // GBoard will sometimes remove a space it just inserted\n            // after a completion when you press enter\n            (change.from == sel.from || change.from == sel.from - 1 && view.state.sliceDoc(change.from, sel.from) == \" \") &&\n            change.insert.length == 1 && change.insert.lines == 2 &&\n            dispatchKey(view.contentDOM, \"Enter\", 13)) ||\n            ((change.from == sel.from - 1 && change.to == sel.to && change.insert.length == 0 ||\n                lastKey == 8 && change.insert.length < change.to - change.from && change.to > sel.head) &&\n                dispatchKey(view.contentDOM, \"Backspace\", 8)) ||\n            (change.from == sel.from && change.to == sel.to + 1 && change.insert.length == 0 &&\n                dispatchKey(view.contentDOM, \"Delete\", 46))))\n        return true;\n    let text = change.insert.toString();\n    if (view.inputState.composing >= 0)\n        view.inputState.composing++;\n    let defaultTr;\n    let defaultInsert = () => defaultTr || (defaultTr = applyDefaultInsert(view, change, newSel));\n    if (!view.state.facet(inputHandler).some(h => h(view, change.from, change.to, text, defaultInsert)))\n        view.dispatch(defaultInsert());\n    return true;\n}\nfunction applyDefaultInsert(view, change, newSel) {\n    let tr, startState = view.state, sel = startState.selection.main;\n    if (change.from >= sel.from && change.to <= sel.to && change.to - change.from >= (sel.to - sel.from) / 3 &&\n        (!newSel || newSel.main.empty && newSel.main.from == change.from + change.insert.length) &&\n        view.inputState.composing < 0) {\n        let before = sel.from < change.from ? startState.sliceDoc(sel.from, change.from) : \"\";\n        let after = sel.to > change.to ? startState.sliceDoc(change.to, sel.to) : \"\";\n        tr = startState.replaceSelection(view.state.toText(before + change.insert.sliceString(0, undefined, view.state.lineBreak) + after));\n    }\n    else {\n        let changes = startState.changes(change);\n        let mainSel = newSel && newSel.main.to <= changes.newLength ? newSel.main : undefined;\n        // Try to apply a composition change to all cursors\n        if (startState.selection.ranges.length > 1 && view.inputState.composing >= 0 &&\n            change.to <= sel.to && change.to >= sel.to - 10) {\n            let replaced = view.state.sliceDoc(change.from, change.to);\n            let compositionRange, composition = newSel && findCompositionNode(view, newSel.main.head);\n            if (composition) {\n                let dLen = change.insert.length - (change.to - change.from);\n                compositionRange = { from: composition.from, to: composition.to - dLen };\n            }\n            else {\n                compositionRange = view.state.doc.lineAt(sel.head);\n            }\n            let offset = sel.to - change.to, size = sel.to - sel.from;\n            tr = startState.changeByRange(range => {\n                if (range.from == sel.from && range.to == sel.to)\n                    return { changes, range: mainSel || range.map(changes) };\n                let to = range.to - offset, from = to - replaced.length;\n                if (range.to - range.from != size || view.state.sliceDoc(from, to) != replaced ||\n                    // Unfortunately, there's no way to make multiple\n                    // changes in the same node work without aborting\n                    // composition, so cursors in the composition range are\n                    // ignored.\n                    range.to >= compositionRange.from && range.from <= compositionRange.to)\n                    return { range };\n                let rangeChanges = startState.changes({ from, to, insert: change.insert }), selOff = range.to - sel.to;\n                return {\n                    changes: rangeChanges,\n                    range: !mainSel ? range.map(rangeChanges) :\n                        EditorSelection.range(Math.max(0, mainSel.anchor + selOff), Math.max(0, mainSel.head + selOff))\n                };\n            });\n        }\n        else {\n            tr = {\n                changes,\n                selection: mainSel && startState.selection.replaceRange(mainSel)\n            };\n        }\n    }\n    let userEvent = \"input.type\";\n    if (view.composing ||\n        view.inputState.compositionPendingChange && view.inputState.compositionEndedAt > Date.now() - 50) {\n        view.inputState.compositionPendingChange = false;\n        userEvent += \".compose\";\n        if (view.inputState.compositionFirstChange) {\n            userEvent += \".start\";\n            view.inputState.compositionFirstChange = false;\n        }\n    }\n    return startState.update(tr, { userEvent, scrollIntoView: true });\n}\nfunction findDiff(a, b, preferredPos, preferredSide) {\n    let minLen = Math.min(a.length, b.length);\n    let from = 0;\n    while (from < minLen && a.charCodeAt(from) == b.charCodeAt(from))\n        from++;\n    if (from == minLen && a.length == b.length)\n        return null;\n    let toA = a.length, toB = b.length;\n    while (toA > 0 && toB > 0 && a.charCodeAt(toA - 1) == b.charCodeAt(toB - 1)) {\n        toA--;\n        toB--;\n    }\n    if (preferredSide == \"end\") {\n        let adjust = Math.max(0, from - Math.min(toA, toB));\n        preferredPos -= toA + adjust - from;\n    }\n    if (toA < from && a.length < b.length) {\n        let move = preferredPos <= from && preferredPos >= toA ? from - preferredPos : 0;\n        from -= move;\n        toB = from + (toB - toA);\n        toA = from;\n    }\n    else if (toB < from) {\n        let move = preferredPos <= from && preferredPos >= toB ? from - preferredPos : 0;\n        from -= move;\n        toA = from + (toA - toB);\n        toB = from;\n    }\n    return { from, toA, toB };\n}\nfunction selectionPoints(view) {\n    let result = [];\n    if (view.root.activeElement != view.contentDOM)\n        return result;\n    let { anchorNode, anchorOffset, focusNode, focusOffset } = view.observer.selectionRange;\n    if (anchorNode) {\n        result.push(new DOMPoint(anchorNode, anchorOffset));\n        if (focusNode != anchorNode || focusOffset != anchorOffset)\n            result.push(new DOMPoint(focusNode, focusOffset));\n    }\n    return result;\n}\nfunction selectionFromPoints(points, base) {\n    if (points.length == 0)\n        return null;\n    let anchor = points[0].pos, head = points.length == 2 ? points[1].pos : anchor;\n    return anchor > -1 && head > -1 ? EditorSelection.single(anchor + base, head + base) : null;\n}\n\nclass InputState {\n    setSelectionOrigin(origin) {\n        this.lastSelectionOrigin = origin;\n        this.lastSelectionTime = Date.now();\n    }\n    constructor(view) {\n        this.view = view;\n        this.lastKeyCode = 0;\n        this.lastKeyTime = 0;\n        this.lastTouchTime = 0;\n        this.lastFocusTime = 0;\n        this.lastScrollTop = 0;\n        this.lastScrollLeft = 0;\n        // On iOS, some keys need to have their default behavior happen\n        // (after which we retroactively handle them and reset the DOM) to\n        // avoid messing up the virtual keyboard state.\n        this.pendingIOSKey = undefined;\n        /**\n        When enabled (>-1), tab presses are not given to key handlers,\n        leaving the browser's default behavior. If >0, the mode expires\n        at that timestamp, and any other keypress clears it.\n        Esc enables temporary tab focus mode for two seconds when not\n        otherwise handled.\n        */\n        this.tabFocusMode = -1;\n        this.lastSelectionOrigin = null;\n        this.lastSelectionTime = 0;\n        this.lastContextMenu = 0;\n        this.scrollHandlers = [];\n        this.handlers = Object.create(null);\n        // -1 means not in a composition. Otherwise, this counts the number\n        // of changes made during the composition. The count is used to\n        // avoid treating the start state of the composition, before any\n        // changes have been made, as part of the composition.\n        this.composing = -1;\n        // Tracks whether the next change should be marked as starting the\n        // composition (null means no composition, true means next is the\n        // first, false means first has already been marked for this\n        // composition)\n        this.compositionFirstChange = null;\n        // End time of the previous composition\n        this.compositionEndedAt = 0;\n        // Used in a kludge to detect when an Enter keypress should be\n        // considered part of the composition on Safari, which fires events\n        // in the wrong order\n        this.compositionPendingKey = false;\n        // Used to categorize changes as part of a composition, even when\n        // the mutation events fire shortly after the compositionend event\n        this.compositionPendingChange = false;\n        this.mouseSelection = null;\n        // When a drag from the editor is active, this points at the range\n        // being dragged.\n        this.draggedContent = null;\n        this.handleEvent = this.handleEvent.bind(this);\n        this.notifiedFocused = view.hasFocus;\n        // On Safari adding an input event handler somehow prevents an\n        // issue where the composition vanishes when you press enter.\n        if (browser.safari)\n            view.contentDOM.addEventListener(\"input\", () => null);\n        if (browser.gecko)\n            firefoxCopyCutHack(view.contentDOM.ownerDocument);\n    }\n    handleEvent(event) {\n        if (!eventBelongsToEditor(this.view, event) || this.ignoreDuringComposition(event))\n            return;\n        if (event.type == \"keydown\" && this.keydown(event))\n            return;\n        if (this.view.updateState != 0 /* UpdateState.Idle */)\n            Promise.resolve().then(() => this.runHandlers(event.type, event));\n        else\n            this.runHandlers(event.type, event);\n    }\n    runHandlers(type, event) {\n        let handlers = this.handlers[type];\n        if (handlers) {\n            for (let observer of handlers.observers)\n                observer(this.view, event);\n            for (let handler of handlers.handlers) {\n                if (event.defaultPrevented)\n                    break;\n                if (handler(this.view, event)) {\n                    event.preventDefault();\n                    break;\n                }\n            }\n        }\n    }\n    ensureHandlers(plugins) {\n        let handlers = computeHandlers(plugins), prev = this.handlers, dom = this.view.contentDOM;\n        for (let type in handlers)\n            if (type != \"scroll\") {\n                let passive = !handlers[type].handlers.length;\n                let exists = prev[type];\n                if (exists && passive != !exists.handlers.length) {\n                    dom.removeEventListener(type, this.handleEvent);\n                    exists = null;\n                }\n                if (!exists)\n                    dom.addEventListener(type, this.handleEvent, { passive });\n            }\n        for (let type in prev)\n            if (type != \"scroll\" && !handlers[type])\n                dom.removeEventListener(type, this.handleEvent);\n        this.handlers = handlers;\n    }\n    keydown(event) {\n        // Must always run, even if a custom handler handled the event\n        this.lastKeyCode = event.keyCode;\n        this.lastKeyTime = Date.now();\n        if (event.keyCode == 9 && this.tabFocusMode > -1 && (!this.tabFocusMode || Date.now() <= this.tabFocusMode))\n            return true;\n        if (this.tabFocusMode > 0 && event.keyCode != 27 && modifierCodes.indexOf(event.keyCode) < 0)\n            this.tabFocusMode = -1;\n        // Chrome for Android usually doesn't fire proper key events, but\n        // occasionally does, usually surrounded by a bunch of complicated\n        // composition changes. When an enter or backspace key event is\n        // seen, hold off on handling DOM events for a bit, and then\n        // dispatch it.\n        if (browser.android && browser.chrome && !event.synthetic &&\n            (event.keyCode == 13 || event.keyCode == 8)) {\n            this.view.observer.delayAndroidKey(event.key, event.keyCode);\n            return true;\n        }\n        // Preventing the default behavior of Enter on iOS makes the\n        // virtual keyboard get stuck in the wrong (lowercase)\n        // state. So we let it go through, and then, in\n        // applyDOMChange, notify key handlers of it and reset to\n        // the state they produce.\n        let pending;\n        if (browser.ios && !event.synthetic && !event.altKey && !event.metaKey &&\n            ((pending = PendingKeys.find(key => key.keyCode == event.keyCode)) && !event.ctrlKey ||\n                EmacsyPendingKeys.indexOf(event.key) > -1 && event.ctrlKey && !event.shiftKey)) {\n            this.pendingIOSKey = pending || event;\n            setTimeout(() => this.flushIOSKey(), 250);\n            return true;\n        }\n        if (event.keyCode != 229)\n            this.view.observer.forceFlush();\n        return false;\n    }\n    flushIOSKey(change) {\n        let key = this.pendingIOSKey;\n        if (!key)\n            return false;\n        // This looks like an autocorrection before Enter\n        if (key.key == \"Enter\" && change && change.from < change.to && /^\\S+$/.test(change.insert.toString()))\n            return false;\n        this.pendingIOSKey = undefined;\n        return dispatchKey(this.view.contentDOM, key.key, key.keyCode, key instanceof KeyboardEvent ? key : undefined);\n    }\n    ignoreDuringComposition(event) {\n        if (!/^key/.test(event.type))\n            return false;\n        if (this.composing > 0)\n            return true;\n        // See https://www.stum.de/2016/06/24/handling-ime-events-in-javascript/.\n        // On some input method editors (IMEs), the Enter key is used to\n        // confirm character selection. On Safari, when Enter is pressed,\n        // compositionend and keydown events are sometimes emitted in the\n        // wrong order. The key event should still be ignored, even when\n        // it happens after the compositionend event.\n        if (browser.safari && !browser.ios && this.compositionPendingKey && Date.now() - this.compositionEndedAt < 100) {\n            this.compositionPendingKey = false;\n            return true;\n        }\n        return false;\n    }\n    startMouseSelection(mouseSelection) {\n        if (this.mouseSelection)\n            this.mouseSelection.destroy();\n        this.mouseSelection = mouseSelection;\n    }\n    update(update) {\n        this.view.observer.update(update);\n        if (this.mouseSelection)\n            this.mouseSelection.update(update);\n        if (this.draggedContent && update.docChanged)\n            this.draggedContent = this.draggedContent.map(update.changes);\n        if (update.transactions.length)\n            this.lastKeyCode = this.lastSelectionTime = 0;\n    }\n    destroy() {\n        if (this.mouseSelection)\n            this.mouseSelection.destroy();\n    }\n}\nfunction bindHandler(plugin, handler) {\n    return (view, event) => {\n        try {\n            return handler.call(plugin, event, view);\n        }\n        catch (e) {\n            logException(view.state, e);\n        }\n    };\n}\nfunction computeHandlers(plugins) {\n    let result = Object.create(null);\n    function record(type) {\n        return result[type] || (result[type] = { observers: [], handlers: [] });\n    }\n    for (let plugin of plugins) {\n        let spec = plugin.spec, handlers = spec && spec.plugin.domEventHandlers, observers = spec && spec.plugin.domEventObservers;\n        if (handlers)\n            for (let type in handlers) {\n                let f = handlers[type];\n                if (f)\n                    record(type).handlers.push(bindHandler(plugin.value, f));\n            }\n        if (observers)\n            for (let type in observers) {\n                let f = observers[type];\n                if (f)\n                    record(type).observers.push(bindHandler(plugin.value, f));\n            }\n    }\n    for (let type in handlers)\n        record(type).handlers.push(handlers[type]);\n    for (let type in observers)\n        record(type).observers.push(observers[type]);\n    return result;\n}\nconst PendingKeys = [\n    { key: \"Backspace\", keyCode: 8, inputType: \"deleteContentBackward\" },\n    { key: \"Enter\", keyCode: 13, inputType: \"insertParagraph\" },\n    { key: \"Enter\", keyCode: 13, inputType: \"insertLineBreak\" },\n    { key: \"Delete\", keyCode: 46, inputType: \"deleteContentForward\" }\n];\nconst EmacsyPendingKeys = \"dthko\";\n// Key codes for modifier keys\nconst modifierCodes = [16, 17, 18, 20, 91, 92, 224, 225];\nconst dragScrollMargin = 6;\nfunction dragScrollSpeed(dist) {\n    return Math.max(0, dist) * 0.7 + 8;\n}\nfunction dist(a, b) {\n    return Math.max(Math.abs(a.clientX - b.clientX), Math.abs(a.clientY - b.clientY));\n}\nclass MouseSelection {\n    constructor(view, startEvent, style, mustSelect) {\n        this.view = view;\n        this.startEvent = startEvent;\n        this.style = style;\n        this.mustSelect = mustSelect;\n        this.scrollSpeed = { x: 0, y: 0 };\n        this.scrolling = -1;\n        this.lastEvent = startEvent;\n        this.scrollParents = scrollableParents(view.contentDOM);\n        this.atoms = view.state.facet(atomicRanges).map(f => f(view));\n        let doc = view.contentDOM.ownerDocument;\n        doc.addEventListener(\"mousemove\", this.move = this.move.bind(this));\n        doc.addEventListener(\"mouseup\", this.up = this.up.bind(this));\n        this.extend = startEvent.shiftKey;\n        this.multiple = view.state.facet(EditorState.allowMultipleSelections) && addsSelectionRange(view, startEvent);\n        this.dragging = isInPrimarySelection(view, startEvent) && getClickType(startEvent) == 1 ? null : false;\n    }\n    start(event) {\n        // When clicking outside of the selection, immediately apply the\n        // effect of starting the selection\n        if (this.dragging === false)\n            this.select(event);\n    }\n    move(event) {\n        if (event.buttons == 0)\n            return this.destroy();\n        if (this.dragging || this.dragging == null && dist(this.startEvent, event) < 10)\n            return;\n        this.select(this.lastEvent = event);\n        let sx = 0, sy = 0;\n        let left = 0, top = 0, right = this.view.win.innerWidth, bottom = this.view.win.innerHeight;\n        if (this.scrollParents.x)\n            ({ left, right } = this.scrollParents.x.getBoundingClientRect());\n        if (this.scrollParents.y)\n            ({ top, bottom } = this.scrollParents.y.getBoundingClientRect());\n        let margins = getScrollMargins(this.view);\n        if (event.clientX - margins.left <= left + dragScrollMargin)\n            sx = -dragScrollSpeed(left - event.clientX);\n        else if (event.clientX + margins.right >= right - dragScrollMargin)\n            sx = dragScrollSpeed(event.clientX - right);\n        if (event.clientY - margins.top <= top + dragScrollMargin)\n            sy = -dragScrollSpeed(top - event.clientY);\n        else if (event.clientY + margins.bottom >= bottom - dragScrollMargin)\n            sy = dragScrollSpeed(event.clientY - bottom);\n        this.setScrollSpeed(sx, sy);\n    }\n    up(event) {\n        if (this.dragging == null)\n            this.select(this.lastEvent);\n        if (!this.dragging)\n            event.preventDefault();\n        this.destroy();\n    }\n    destroy() {\n        this.setScrollSpeed(0, 0);\n        let doc = this.view.contentDOM.ownerDocument;\n        doc.removeEventListener(\"mousemove\", this.move);\n        doc.removeEventListener(\"mouseup\", this.up);\n        this.view.inputState.mouseSelection = this.view.inputState.draggedContent = null;\n    }\n    setScrollSpeed(sx, sy) {\n        this.scrollSpeed = { x: sx, y: sy };\n        if (sx || sy) {\n            if (this.scrolling < 0)\n                this.scrolling = setInterval(() => this.scroll(), 50);\n        }\n        else if (this.scrolling > -1) {\n            clearInterval(this.scrolling);\n            this.scrolling = -1;\n        }\n    }\n    scroll() {\n        let { x, y } = this.scrollSpeed;\n        if (x && this.scrollParents.x) {\n            this.scrollParents.x.scrollLeft += x;\n            x = 0;\n        }\n        if (y && this.scrollParents.y) {\n            this.scrollParents.y.scrollTop += y;\n            y = 0;\n        }\n        if (x || y)\n            this.view.win.scrollBy(x, y);\n        if (this.dragging === false)\n            this.select(this.lastEvent);\n    }\n    skipAtoms(sel) {\n        let ranges = null;\n        for (let i = 0; i < sel.ranges.length; i++) {\n            let range = sel.ranges[i], updated = null;\n            if (range.empty) {\n                let pos = skipAtomicRanges(this.atoms, range.from, 0);\n                if (pos != range.from)\n                    updated = EditorSelection.cursor(pos, -1);\n            }\n            else {\n                let from = skipAtomicRanges(this.atoms, range.from, -1);\n                let to = skipAtomicRanges(this.atoms, range.to, 1);\n                if (from != range.from || to != range.to)\n                    updated = EditorSelection.range(range.from == range.anchor ? from : to, range.from == range.head ? from : to);\n            }\n            if (updated) {\n                if (!ranges)\n                    ranges = sel.ranges.slice();\n                ranges[i] = updated;\n            }\n        }\n        return ranges ? EditorSelection.create(ranges, sel.mainIndex) : sel;\n    }\n    select(event) {\n        let { view } = this, selection = this.skipAtoms(this.style.get(event, this.extend, this.multiple));\n        if (this.mustSelect || !selection.eq(view.state.selection, this.dragging === false))\n            this.view.dispatch({\n                selection,\n                userEvent: \"select.pointer\"\n            });\n        this.mustSelect = false;\n    }\n    update(update) {\n        if (update.transactions.some(tr => tr.isUserEvent(\"input.type\")))\n            this.destroy();\n        else if (this.style.update(update))\n            setTimeout(() => this.select(this.lastEvent), 20);\n    }\n}\nfunction addsSelectionRange(view, event) {\n    let facet = view.state.facet(clickAddsSelectionRange);\n    return facet.length ? facet[0](event) : browser.mac ? event.metaKey : event.ctrlKey;\n}\nfunction dragMovesSelection(view, event) {\n    let facet = view.state.facet(dragMovesSelection$1);\n    return facet.length ? facet[0](event) : browser.mac ? !event.altKey : !event.ctrlKey;\n}\nfunction isInPrimarySelection(view, event) {\n    let { main } = view.state.selection;\n    if (main.empty)\n        return false;\n    // On boundary clicks, check whether the coordinates are inside the\n    // selection's client rectangles\n    let sel = getSelection(view.root);\n    if (!sel || sel.rangeCount == 0)\n        return true;\n    let rects = sel.getRangeAt(0).getClientRects();\n    for (let i = 0; i < rects.length; i++) {\n        let rect = rects[i];\n        if (rect.left <= event.clientX && rect.right >= event.clientX &&\n            rect.top <= event.clientY && rect.bottom >= event.clientY)\n            return true;\n    }\n    return false;\n}\nfunction eventBelongsToEditor(view, event) {\n    if (!event.bubbles)\n        return true;\n    if (event.defaultPrevented)\n        return false;\n    for (let node = event.target, cView; node != view.contentDOM; node = node.parentNode)\n        if (!node || node.nodeType == 11 || ((cView = ContentView.get(node)) && cView.ignoreEvent(event)))\n            return false;\n    return true;\n}\nconst handlers = /*@__PURE__*/Object.create(null);\nconst observers = /*@__PURE__*/Object.create(null);\n// This is very crude, but unfortunately both these browsers _pretend_\n// that they have a clipboard API—all the objects and methods are\n// there, they just don't work, and they are hard to test.\nconst brokenClipboardAPI = (browser.ie && browser.ie_version < 15) ||\n    (browser.ios && browser.webkit_version < 604);\nfunction capturePaste(view) {\n    let parent = view.dom.parentNode;\n    if (!parent)\n        return;\n    let target = parent.appendChild(document.createElement(\"textarea\"));\n    target.style.cssText = \"position: fixed; left: -10000px; top: 10px\";\n    target.focus();\n    setTimeout(() => {\n        view.focus();\n        target.remove();\n        doPaste(view, target.value);\n    }, 50);\n}\nfunction textFilter(state, facet, text) {\n    for (let filter of state.facet(facet))\n        text = filter(text, state);\n    return text;\n}\nfunction doPaste(view, input) {\n    input = textFilter(view.state, clipboardInputFilter, input);\n    let { state } = view, changes, i = 1, text = state.toText(input);\n    let byLine = text.lines == state.selection.ranges.length;\n    let linewise = lastLinewiseCopy != null && state.selection.ranges.every(r => r.empty) && lastLinewiseCopy == text.toString();\n    if (linewise) {\n        let lastLine = -1;\n        changes = state.changeByRange(range => {\n            let line = state.doc.lineAt(range.from);\n            if (line.from == lastLine)\n                return { range };\n            lastLine = line.from;\n            let insert = state.toText((byLine ? text.line(i++).text : input) + state.lineBreak);\n            return { changes: { from: line.from, insert },\n                range: EditorSelection.cursor(range.from + insert.length) };\n        });\n    }\n    else if (byLine) {\n        changes = state.changeByRange(range => {\n            let line = text.line(i++);\n            return { changes: { from: range.from, to: range.to, insert: line.text },\n                range: EditorSelection.cursor(range.from + line.length) };\n        });\n    }\n    else {\n        changes = state.replaceSelection(text);\n    }\n    view.dispatch(changes, {\n        userEvent: \"input.paste\",\n        scrollIntoView: true\n    });\n}\nobservers.scroll = view => {\n    view.inputState.lastScrollTop = view.scrollDOM.scrollTop;\n    view.inputState.lastScrollLeft = view.scrollDOM.scrollLeft;\n};\nhandlers.keydown = (view, event) => {\n    view.inputState.setSelectionOrigin(\"select\");\n    if (event.keyCode == 27 && view.inputState.tabFocusMode != 0)\n        view.inputState.tabFocusMode = Date.now() + 2000;\n    return false;\n};\nobservers.touchstart = (view, e) => {\n    view.inputState.lastTouchTime = Date.now();\n    view.inputState.setSelectionOrigin(\"select.pointer\");\n};\nobservers.touchmove = view => {\n    view.inputState.setSelectionOrigin(\"select.pointer\");\n};\nhandlers.mousedown = (view, event) => {\n    view.observer.flush();\n    if (view.inputState.lastTouchTime > Date.now() - 2000)\n        return false; // Ignore touch interaction\n    let style = null;\n    for (let makeStyle of view.state.facet(mouseSelectionStyle)) {\n        style = makeStyle(view, event);\n        if (style)\n            break;\n    }\n    if (!style && event.button == 0)\n        style = basicMouseSelection(view, event);\n    if (style) {\n        let mustFocus = !view.hasFocus;\n        view.inputState.startMouseSelection(new MouseSelection(view, event, style, mustFocus));\n        if (mustFocus)\n            view.observer.ignore(() => {\n                focusPreventScroll(view.contentDOM);\n                let active = view.root.activeElement;\n                if (active && !active.contains(view.contentDOM))\n                    active.blur();\n            });\n        let mouseSel = view.inputState.mouseSelection;\n        if (mouseSel) {\n            mouseSel.start(event);\n            return mouseSel.dragging === false;\n        }\n    }\n    return false;\n};\nfunction rangeForClick(view, pos, bias, type) {\n    if (type == 1) { // Single click\n        return EditorSelection.cursor(pos, bias);\n    }\n    else if (type == 2) { // Double click\n        return groupAt(view.state, pos, bias);\n    }\n    else { // Triple click\n        let visual = LineView.find(view.docView, pos), line = view.state.doc.lineAt(visual ? visual.posAtEnd : pos);\n        let from = visual ? visual.posAtStart : line.from, to = visual ? visual.posAtEnd : line.to;\n        if (to < view.state.doc.length && to == line.to)\n            to++;\n        return EditorSelection.range(from, to);\n    }\n}\nlet inside = (x, y, rect) => y >= rect.top && y <= rect.bottom && x >= rect.left && x <= rect.right;\n// Try to determine, for the given coordinates, associated with the\n// given position, whether they are related to the element before or\n// the element after the position.\nfunction findPositionSide(view, pos, x, y) {\n    let line = LineView.find(view.docView, pos);\n    if (!line)\n        return 1;\n    let off = pos - line.posAtStart;\n    // Line boundaries point into the line\n    if (off == 0)\n        return 1;\n    if (off == line.length)\n        return -1;\n    // Positions on top of an element point at that element\n    let before = line.coordsAt(off, -1);\n    if (before && inside(x, y, before))\n        return -1;\n    let after = line.coordsAt(off, 1);\n    if (after && inside(x, y, after))\n        return 1;\n    // This is probably a line wrap point. Pick before if the point is\n    // above its bottom.\n    return before && before.bottom >= y ? -1 : 1;\n}\nfunction queryPos(view, event) {\n    let pos = view.posAtCoords({ x: event.clientX, y: event.clientY }, false);\n    return { pos, bias: findPositionSide(view, pos, event.clientX, event.clientY) };\n}\nconst BadMouseDetail = browser.ie && browser.ie_version <= 11;\nlet lastMouseDown = null, lastMouseDownCount = 0, lastMouseDownTime = 0;\nfunction getClickType(event) {\n    if (!BadMouseDetail)\n        return event.detail;\n    let last = lastMouseDown, lastTime = lastMouseDownTime;\n    lastMouseDown = event;\n    lastMouseDownTime = Date.now();\n    return lastMouseDownCount = !last || (lastTime > Date.now() - 400 && Math.abs(last.clientX - event.clientX) < 2 &&\n        Math.abs(last.clientY - event.clientY) < 2) ? (lastMouseDownCount + 1) % 3 : 1;\n}\nfunction basicMouseSelection(view, event) {\n    let start = queryPos(view, event), type = getClickType(event);\n    let startSel = view.state.selection;\n    return {\n        update(update) {\n            if (update.docChanged) {\n                start.pos = update.changes.mapPos(start.pos);\n                startSel = startSel.map(update.changes);\n            }\n        },\n        get(event, extend, multiple) {\n            let cur = queryPos(view, event), removed;\n            let range = rangeForClick(view, cur.pos, cur.bias, type);\n            if (start.pos != cur.pos && !extend) {\n                let startRange = rangeForClick(view, start.pos, start.bias, type);\n                let from = Math.min(startRange.from, range.from), to = Math.max(startRange.to, range.to);\n                range = from < range.from ? EditorSelection.range(from, to) : EditorSelection.range(to, from);\n            }\n            if (extend)\n                return startSel.replaceRange(startSel.main.extend(range.from, range.to));\n            else if (multiple && type == 1 && startSel.ranges.length > 1 && (removed = removeRangeAround(startSel, cur.pos)))\n                return removed;\n            else if (multiple)\n                return startSel.addRange(range);\n            else\n                return EditorSelection.create([range]);\n        }\n    };\n}\nfunction removeRangeAround(sel, pos) {\n    for (let i = 0; i < sel.ranges.length; i++) {\n        let { from, to } = sel.ranges[i];\n        if (from <= pos && to >= pos)\n            return EditorSelection.create(sel.ranges.slice(0, i).concat(sel.ranges.slice(i + 1)), sel.mainIndex == i ? 0 : sel.mainIndex - (sel.mainIndex > i ? 1 : 0));\n    }\n    return null;\n}\nhandlers.dragstart = (view, event) => {\n    let { selection: { main: range } } = view.state;\n    if (event.target.draggable) {\n        let cView = view.docView.nearest(event.target);\n        if (cView && cView.isWidget) {\n            let from = cView.posAtStart, to = from + cView.length;\n            if (from >= range.to || to <= range.from)\n                range = EditorSelection.range(from, to);\n        }\n    }\n    let { inputState } = view;\n    if (inputState.mouseSelection)\n        inputState.mouseSelection.dragging = true;\n    inputState.draggedContent = range;\n    if (event.dataTransfer) {\n        event.dataTransfer.setData(\"Text\", textFilter(view.state, clipboardOutputFilter, view.state.sliceDoc(range.from, range.to)));\n        event.dataTransfer.effectAllowed = \"copyMove\";\n    }\n    return false;\n};\nhandlers.dragend = view => {\n    view.inputState.draggedContent = null;\n    return false;\n};\nfunction dropText(view, event, text, direct) {\n    text = textFilter(view.state, clipboardInputFilter, text);\n    if (!text)\n        return;\n    let dropPos = view.posAtCoords({ x: event.clientX, y: event.clientY }, false);\n    let { draggedContent } = view.inputState;\n    let del = direct && draggedContent && dragMovesSelection(view, event)\n        ? { from: draggedContent.from, to: draggedContent.to } : null;\n    let ins = { from: dropPos, insert: text };\n    let changes = view.state.changes(del ? [del, ins] : ins);\n    view.focus();\n    view.dispatch({\n        changes,\n        selection: { anchor: changes.mapPos(dropPos, -1), head: changes.mapPos(dropPos, 1) },\n        userEvent: del ? \"move.drop\" : \"input.drop\"\n    });\n    view.inputState.draggedContent = null;\n}\nhandlers.drop = (view, event) => {\n    if (!event.dataTransfer)\n        return false;\n    if (view.state.readOnly)\n        return true;\n    let files = event.dataTransfer.files;\n    if (files && files.length) { // For a file drop, read the file's text.\n        let text = Array(files.length), read = 0;\n        let finishFile = () => {\n            if (++read == files.length)\n                dropText(view, event, text.filter(s => s != null).join(view.state.lineBreak), false);\n        };\n        for (let i = 0; i < files.length; i++) {\n            let reader = new FileReader;\n            reader.onerror = finishFile;\n            reader.onload = () => {\n                if (!/[\\x00-\\x08\\x0e-\\x1f]{2}/.test(reader.result))\n                    text[i] = reader.result;\n                finishFile();\n            };\n            reader.readAsText(files[i]);\n        }\n        return true;\n    }\n    else {\n        let text = event.dataTransfer.getData(\"Text\");\n        if (text) {\n            dropText(view, event, text, true);\n            return true;\n        }\n    }\n    return false;\n};\nhandlers.paste = (view, event) => {\n    if (view.state.readOnly)\n        return true;\n    view.observer.flush();\n    let data = brokenClipboardAPI ? null : event.clipboardData;\n    if (data) {\n        doPaste(view, data.getData(\"text/plain\") || data.getData(\"text/uri-list\"));\n        return true;\n    }\n    else {\n        capturePaste(view);\n        return false;\n    }\n};\nfunction captureCopy(view, text) {\n    // The extra wrapper is somehow necessary on IE/Edge to prevent the\n    // content from being mangled when it is put onto the clipboard\n    let parent = view.dom.parentNode;\n    if (!parent)\n        return;\n    let target = parent.appendChild(document.createElement(\"textarea\"));\n    target.style.cssText = \"position: fixed; left: -10000px; top: 10px\";\n    target.value = text;\n    target.focus();\n    target.selectionEnd = text.length;\n    target.selectionStart = 0;\n    setTimeout(() => {\n        target.remove();\n        view.focus();\n    }, 50);\n}\nfunction copiedRange(state) {\n    let content = [], ranges = [], linewise = false;\n    for (let range of state.selection.ranges)\n        if (!range.empty) {\n            content.push(state.sliceDoc(range.from, range.to));\n            ranges.push(range);\n        }\n    if (!content.length) {\n        // Nothing selected, do a line-wise copy\n        let upto = -1;\n        for (let { from } of state.selection.ranges) {\n            let line = state.doc.lineAt(from);\n            if (line.number > upto) {\n                content.push(line.text);\n                ranges.push({ from: line.from, to: Math.min(state.doc.length, line.to + 1) });\n            }\n            upto = line.number;\n        }\n        linewise = true;\n    }\n    return { text: textFilter(state, clipboardOutputFilter, content.join(state.lineBreak)), ranges, linewise };\n}\nlet lastLinewiseCopy = null;\nhandlers.copy = handlers.cut = (view, event) => {\n    let { text, ranges, linewise } = copiedRange(view.state);\n    if (!text && !linewise)\n        return false;\n    lastLinewiseCopy = linewise ? text : null;\n    if (event.type == \"cut\" && !view.state.readOnly)\n        view.dispatch({\n            changes: ranges,\n            scrollIntoView: true,\n            userEvent: \"delete.cut\"\n        });\n    let data = brokenClipboardAPI ? null : event.clipboardData;\n    if (data) {\n        data.clearData();\n        data.setData(\"text/plain\", text);\n        return true;\n    }\n    else {\n        captureCopy(view, text);\n        return false;\n    }\n};\nconst isFocusChange = /*@__PURE__*/Annotation.define();\nfunction focusChangeTransaction(state, focus) {\n    let effects = [];\n    for (let getEffect of state.facet(focusChangeEffect)) {\n        let effect = getEffect(state, focus);\n        if (effect)\n            effects.push(effect);\n    }\n    return effects.length ? state.update({ effects, annotations: isFocusChange.of(true) }) : null;\n}\nfunction updateForFocusChange(view) {\n    setTimeout(() => {\n        let focus = view.hasFocus;\n        if (focus != view.inputState.notifiedFocused) {\n            let tr = focusChangeTransaction(view.state, focus);\n            if (tr)\n                view.dispatch(tr);\n            else\n                view.update([]);\n        }\n    }, 10);\n}\nobservers.focus = view => {\n    view.inputState.lastFocusTime = Date.now();\n    // When focusing reset the scroll position, move it back to where it was\n    if (!view.scrollDOM.scrollTop && (view.inputState.lastScrollTop || view.inputState.lastScrollLeft)) {\n        view.scrollDOM.scrollTop = view.inputState.lastScrollTop;\n        view.scrollDOM.scrollLeft = view.inputState.lastScrollLeft;\n    }\n    updateForFocusChange(view);\n};\nobservers.blur = view => {\n    view.observer.clearSelectionRange();\n    updateForFocusChange(view);\n};\nobservers.compositionstart = observers.compositionupdate = view => {\n    if (view.observer.editContext)\n        return; // Composition handled by edit context\n    if (view.inputState.compositionFirstChange == null)\n        view.inputState.compositionFirstChange = true;\n    if (view.inputState.composing < 0) {\n        // FIXME possibly set a timeout to clear it again on Android\n        view.inputState.composing = 0;\n    }\n};\nobservers.compositionend = view => {\n    if (view.observer.editContext)\n        return; // Composition handled by edit context\n    view.inputState.composing = -1;\n    view.inputState.compositionEndedAt = Date.now();\n    view.inputState.compositionPendingKey = true;\n    view.inputState.compositionPendingChange = view.observer.pendingRecords().length > 0;\n    view.inputState.compositionFirstChange = null;\n    if (browser.chrome && browser.android) {\n        // Delay flushing for a bit on Android because it'll often fire a\n        // bunch of contradictory changes in a row at end of compositon\n        view.observer.flushSoon();\n    }\n    else if (view.inputState.compositionPendingChange) {\n        // If we found pending records, schedule a flush.\n        Promise.resolve().then(() => view.observer.flush());\n    }\n    else {\n        // Otherwise, make sure that, if no changes come in soon, the\n        // composition view is cleared.\n        setTimeout(() => {\n            if (view.inputState.composing < 0 && view.docView.hasComposition)\n                view.update([]);\n        }, 50);\n    }\n};\nobservers.contextmenu = view => {\n    view.inputState.lastContextMenu = Date.now();\n};\nhandlers.beforeinput = (view, event) => {\n    var _a, _b;\n    // In EditContext mode, we must handle insertReplacementText events\n    // directly, to make spell checking corrections work\n    if (event.inputType == \"insertReplacementText\" && view.observer.editContext) {\n        let text = (_a = event.dataTransfer) === null || _a === void 0 ? void 0 : _a.getData(\"text/plain\"), ranges = event.getTargetRanges();\n        if (text && ranges.length) {\n            let r = ranges[0];\n            let from = view.posAtDOM(r.startContainer, r.startOffset), to = view.posAtDOM(r.endContainer, r.endOffset);\n            applyDOMChangeInner(view, { from, to, insert: view.state.toText(text) }, null);\n            return true;\n        }\n    }\n    // Because Chrome Android doesn't fire useful key events, use\n    // beforeinput to detect backspace (and possibly enter and delete,\n    // but those usually don't even seem to fire beforeinput events at\n    // the moment) and fake a key event for it.\n    //\n    // (preventDefault on beforeinput, though supported in the spec,\n    // seems to do nothing at all on Chrome).\n    let pending;\n    if (browser.chrome && browser.android && (pending = PendingKeys.find(key => key.inputType == event.inputType))) {\n        view.observer.delayAndroidKey(pending.key, pending.keyCode);\n        if (pending.key == \"Backspace\" || pending.key == \"Delete\") {\n            let startViewHeight = ((_b = window.visualViewport) === null || _b === void 0 ? void 0 : _b.height) || 0;\n            setTimeout(() => {\n                var _a;\n                // Backspacing near uneditable nodes on Chrome Android sometimes\n                // closes the virtual keyboard. This tries to crudely detect\n                // that and refocus to get it back.\n                if ((((_a = window.visualViewport) === null || _a === void 0 ? void 0 : _a.height) || 0) > startViewHeight + 10 && view.hasFocus) {\n                    view.contentDOM.blur();\n                    view.focus();\n                }\n            }, 100);\n        }\n    }\n    if (browser.ios && event.inputType == \"deleteContentForward\") {\n        // For some reason, DOM changes (and beforeinput) happen _before_\n        // the key event for ctrl-d on iOS when using an external\n        // keyboard.\n        view.observer.flushSoon();\n    }\n    // Safari will occasionally forget to fire compositionend at the end of a dead-key composition\n    if (browser.safari && event.inputType == \"insertText\" && view.inputState.composing >= 0) {\n        setTimeout(() => observers.compositionend(view, event), 20);\n    }\n    return false;\n};\nconst appliedFirefoxHack = /*@__PURE__*/new Set;\n// In Firefox, when cut/copy handlers are added to the document, that\n// somehow avoids a bug where those events aren't fired when the\n// selection is empty. See https://github.com/codemirror/dev/issues/1082\n// and https://bugzilla.mozilla.org/show_bug.cgi?id=995961\nfunction firefoxCopyCutHack(doc) {\n    if (!appliedFirefoxHack.has(doc)) {\n        appliedFirefoxHack.add(doc);\n        doc.addEventListener(\"copy\", () => { });\n        doc.addEventListener(\"cut\", () => { });\n    }\n}\n\nconst wrappingWhiteSpace = [\"pre-wrap\", \"normal\", \"pre-line\", \"break-spaces\"];\n// Used to track, during updateHeight, if any actual heights changed\nlet heightChangeFlag = false;\nfunction clearHeightChangeFlag() { heightChangeFlag = false; }\nclass HeightOracle {\n    constructor(lineWrapping) {\n        this.lineWrapping = lineWrapping;\n        this.doc = Text.empty;\n        this.heightSamples = {};\n        this.lineHeight = 14; // The height of an entire line (line-height)\n        this.charWidth = 7;\n        this.textHeight = 14; // The height of the actual font (font-size)\n        this.lineLength = 30;\n    }\n    heightForGap(from, to) {\n        let lines = this.doc.lineAt(to).number - this.doc.lineAt(from).number + 1;\n        if (this.lineWrapping)\n            lines += Math.max(0, Math.ceil(((to - from) - (lines * this.lineLength * 0.5)) / this.lineLength));\n        return this.lineHeight * lines;\n    }\n    heightForLine(length) {\n        if (!this.lineWrapping)\n            return this.lineHeight;\n        let lines = 1 + Math.max(0, Math.ceil((length - this.lineLength) / Math.max(1, this.lineLength - 5)));\n        return lines * this.lineHeight;\n    }\n    setDoc(doc) { this.doc = doc; return this; }\n    mustRefreshForWrapping(whiteSpace) {\n        return (wrappingWhiteSpace.indexOf(whiteSpace) > -1) != this.lineWrapping;\n    }\n    mustRefreshForHeights(lineHeights) {\n        let newHeight = false;\n        for (let i = 0; i < lineHeights.length; i++) {\n            let h = lineHeights[i];\n            if (h < 0) {\n                i++;\n            }\n            else if (!this.heightSamples[Math.floor(h * 10)]) { // Round to .1 pixels\n                newHeight = true;\n                this.heightSamples[Math.floor(h * 10)] = true;\n            }\n        }\n        return newHeight;\n    }\n    refresh(whiteSpace, lineHeight, charWidth, textHeight, lineLength, knownHeights) {\n        let lineWrapping = wrappingWhiteSpace.indexOf(whiteSpace) > -1;\n        let changed = Math.round(lineHeight) != Math.round(this.lineHeight) || this.lineWrapping != lineWrapping;\n        this.lineWrapping = lineWrapping;\n        this.lineHeight = lineHeight;\n        this.charWidth = charWidth;\n        this.textHeight = textHeight;\n        this.lineLength = lineLength;\n        if (changed) {\n            this.heightSamples = {};\n            for (let i = 0; i < knownHeights.length; i++) {\n                let h = knownHeights[i];\n                if (h < 0)\n                    i++;\n                else\n                    this.heightSamples[Math.floor(h * 10)] = true;\n            }\n        }\n        return changed;\n    }\n}\n// This object is used by `updateHeight` to make DOM measurements\n// arrive at the right nides. The `heights` array is a sequence of\n// block heights, starting from position `from`.\nclass MeasuredHeights {\n    constructor(from, heights) {\n        this.from = from;\n        this.heights = heights;\n        this.index = 0;\n    }\n    get more() { return this.index < this.heights.length; }\n}\n/**\nRecord used to represent information about a block-level element\nin the editor view.\n*/\nclass BlockInfo {\n    /**\n    @internal\n    */\n    constructor(\n    /**\n    The start of the element in the document.\n    */\n    from, \n    /**\n    The length of the element.\n    */\n    length, \n    /**\n    The top position of the element (relative to the top of the\n    document).\n    */\n    top, \n    /**\n    Its height.\n    */\n    height, \n    /**\n    @internal Weird packed field that holds an array of children\n    for composite blocks, a decoration for block widgets, and a\n    number indicating the amount of widget-create line breaks for\n    text blocks.\n    */\n    _content) {\n        this.from = from;\n        this.length = length;\n        this.top = top;\n        this.height = height;\n        this._content = _content;\n    }\n    /**\n    The type of element this is. When querying lines, this may be\n    an array of all the blocks that make up the line.\n    */\n    get type() {\n        return typeof this._content == \"number\" ? BlockType.Text :\n            Array.isArray(this._content) ? this._content : this._content.type;\n    }\n    /**\n    The end of the element as a document position.\n    */\n    get to() { return this.from + this.length; }\n    /**\n    The bottom position of the element.\n    */\n    get bottom() { return this.top + this.height; }\n    /**\n    If this is a widget block, this will return the widget\n    associated with it.\n    */\n    get widget() {\n        return this._content instanceof PointDecoration ? this._content.widget : null;\n    }\n    /**\n    If this is a textblock, this holds the number of line breaks\n    that appear in widgets inside the block.\n    */\n    get widgetLineBreaks() {\n        return typeof this._content == \"number\" ? this._content : 0;\n    }\n    /**\n    @internal\n    */\n    join(other) {\n        let content = (Array.isArray(this._content) ? this._content : [this])\n            .concat(Array.isArray(other._content) ? other._content : [other]);\n        return new BlockInfo(this.from, this.length + other.length, this.top, this.height + other.height, content);\n    }\n}\nvar QueryType = /*@__PURE__*/(function (QueryType) {\n    QueryType[QueryType[\"ByPos\"] = 0] = \"ByPos\";\n    QueryType[QueryType[\"ByHeight\"] = 1] = \"ByHeight\";\n    QueryType[QueryType[\"ByPosNoHeight\"] = 2] = \"ByPosNoHeight\";\nreturn QueryType})(QueryType || (QueryType = {}));\nconst Epsilon = 1e-3;\nclass HeightMap {\n    constructor(length, // The number of characters covered\n    height, // Height of this part of the document\n    flags = 2 /* Flag.Outdated */) {\n        this.length = length;\n        this.height = height;\n        this.flags = flags;\n    }\n    get outdated() { return (this.flags & 2 /* Flag.Outdated */) > 0; }\n    set outdated(value) { this.flags = (value ? 2 /* Flag.Outdated */ : 0) | (this.flags & ~2 /* Flag.Outdated */); }\n    setHeight(height) {\n        if (this.height != height) {\n            if (Math.abs(this.height - height) > Epsilon)\n                heightChangeFlag = true;\n            this.height = height;\n        }\n    }\n    // Base case is to replace a leaf node, which simply builds a tree\n    // from the new nodes and returns that (HeightMapBranch and\n    // HeightMapGap override this to actually use from/to)\n    replace(_from, _to, nodes) {\n        return HeightMap.of(nodes);\n    }\n    // Again, these are base cases, and are overridden for branch and gap nodes.\n    decomposeLeft(_to, result) { result.push(this); }\n    decomposeRight(_from, result) { result.push(this); }\n    applyChanges(decorations, oldDoc, oracle, changes) {\n        let me = this, doc = oracle.doc;\n        for (let i = changes.length - 1; i >= 0; i--) {\n            let { fromA, toA, fromB, toB } = changes[i];\n            let start = me.lineAt(fromA, QueryType.ByPosNoHeight, oracle.setDoc(oldDoc), 0, 0);\n            let end = start.to >= toA ? start : me.lineAt(toA, QueryType.ByPosNoHeight, oracle, 0, 0);\n            toB += end.to - toA;\n            toA = end.to;\n            while (i > 0 && start.from <= changes[i - 1].toA) {\n                fromA = changes[i - 1].fromA;\n                fromB = changes[i - 1].fromB;\n                i--;\n                if (fromA < start.from)\n                    start = me.lineAt(fromA, QueryType.ByPosNoHeight, oracle, 0, 0);\n            }\n            fromB += start.from - fromA;\n            fromA = start.from;\n            let nodes = NodeBuilder.build(oracle.setDoc(doc), decorations, fromB, toB);\n            me = replace(me, me.replace(fromA, toA, nodes));\n        }\n        return me.updateHeight(oracle, 0);\n    }\n    static empty() { return new HeightMapText(0, 0); }\n    // nodes uses null values to indicate the position of line breaks.\n    // There are never line breaks at the start or end of the array, or\n    // two line breaks next to each other, and the array isn't allowed\n    // to be empty (same restrictions as return value from the builder).\n    static of(nodes) {\n        if (nodes.length == 1)\n            return nodes[0];\n        let i = 0, j = nodes.length, before = 0, after = 0;\n        for (;;) {\n            if (i == j) {\n                if (before > after * 2) {\n                    let split = nodes[i - 1];\n                    if (split.break)\n                        nodes.splice(--i, 1, split.left, null, split.right);\n                    else\n                        nodes.splice(--i, 1, split.left, split.right);\n                    j += 1 + split.break;\n                    before -= split.size;\n                }\n                else if (after > before * 2) {\n                    let split = nodes[j];\n                    if (split.break)\n                        nodes.splice(j, 1, split.left, null, split.right);\n                    else\n                        nodes.splice(j, 1, split.left, split.right);\n                    j += 2 + split.break;\n                    after -= split.size;\n                }\n                else {\n                    break;\n                }\n            }\n            else if (before < after) {\n                let next = nodes[i++];\n                if (next)\n                    before += next.size;\n            }\n            else {\n                let next = nodes[--j];\n                if (next)\n                    after += next.size;\n            }\n        }\n        let brk = 0;\n        if (nodes[i - 1] == null) {\n            brk = 1;\n            i--;\n        }\n        else if (nodes[i] == null) {\n            brk = 1;\n            j++;\n        }\n        return new HeightMapBranch(HeightMap.of(nodes.slice(0, i)), brk, HeightMap.of(nodes.slice(j)));\n    }\n}\nfunction replace(old, val) {\n    if (old == val)\n        return old;\n    if (old.constructor != val.constructor)\n        heightChangeFlag = true;\n    return val;\n}\nHeightMap.prototype.size = 1;\nclass HeightMapBlock extends HeightMap {\n    constructor(length, height, deco) {\n        super(length, height);\n        this.deco = deco;\n    }\n    blockAt(_height, _oracle, top, offset) {\n        return new BlockInfo(offset, this.length, top, this.height, this.deco || 0);\n    }\n    lineAt(_value, _type, oracle, top, offset) {\n        return this.blockAt(0, oracle, top, offset);\n    }\n    forEachLine(from, to, oracle, top, offset, f) {\n        if (from <= offset + this.length && to >= offset)\n            f(this.blockAt(0, oracle, top, offset));\n    }\n    updateHeight(oracle, offset = 0, _force = false, measured) {\n        if (measured && measured.from <= offset && measured.more)\n            this.setHeight(measured.heights[measured.index++]);\n        this.outdated = false;\n        return this;\n    }\n    toString() { return `block(${this.length})`; }\n}\nclass HeightMapText extends HeightMapBlock {\n    constructor(length, height) {\n        super(length, height, null);\n        this.collapsed = 0; // Amount of collapsed content in the line\n        this.widgetHeight = 0; // Maximum inline widget height\n        this.breaks = 0; // Number of widget-introduced line breaks on the line\n    }\n    blockAt(_height, _oracle, top, offset) {\n        return new BlockInfo(offset, this.length, top, this.height, this.breaks);\n    }\n    replace(_from, _to, nodes) {\n        let node = nodes[0];\n        if (nodes.length == 1 && (node instanceof HeightMapText || node instanceof HeightMapGap && (node.flags & 4 /* Flag.SingleLine */)) &&\n            Math.abs(this.length - node.length) < 10) {\n            if (node instanceof HeightMapGap)\n                node = new HeightMapText(node.length, this.height);\n            else\n                node.height = this.height;\n            if (!this.outdated)\n                node.outdated = false;\n            return node;\n        }\n        else {\n            return HeightMap.of(nodes);\n        }\n    }\n    updateHeight(oracle, offset = 0, force = false, measured) {\n        if (measured && measured.from <= offset && measured.more)\n            this.setHeight(measured.heights[measured.index++]);\n        else if (force || this.outdated)\n            this.setHeight(Math.max(this.widgetHeight, oracle.heightForLine(this.length - this.collapsed)) +\n                this.breaks * oracle.lineHeight);\n        this.outdated = false;\n        return this;\n    }\n    toString() {\n        return `line(${this.length}${this.collapsed ? -this.collapsed : \"\"}${this.widgetHeight ? \":\" + this.widgetHeight : \"\"})`;\n    }\n}\nclass HeightMapGap extends HeightMap {\n    constructor(length) { super(length, 0); }\n    heightMetrics(oracle, offset) {\n        let firstLine = oracle.doc.lineAt(offset).number, lastLine = oracle.doc.lineAt(offset + this.length).number;\n        let lines = lastLine - firstLine + 1;\n        let perLine, perChar = 0;\n        if (oracle.lineWrapping) {\n            let totalPerLine = Math.min(this.height, oracle.lineHeight * lines);\n            perLine = totalPerLine / lines;\n            if (this.length > lines + 1)\n                perChar = (this.height - totalPerLine) / (this.length - lines - 1);\n        }\n        else {\n            perLine = this.height / lines;\n        }\n        return { firstLine, lastLine, perLine, perChar };\n    }\n    blockAt(height, oracle, top, offset) {\n        let { firstLine, lastLine, perLine, perChar } = this.heightMetrics(oracle, offset);\n        if (oracle.lineWrapping) {\n            let guess = offset + (height < oracle.lineHeight ? 0\n                : Math.round(Math.max(0, Math.min(1, (height - top) / this.height)) * this.length));\n            let line = oracle.doc.lineAt(guess), lineHeight = perLine + line.length * perChar;\n            let lineTop = Math.max(top, height - lineHeight / 2);\n            return new BlockInfo(line.from, line.length, lineTop, lineHeight, 0);\n        }\n        else {\n            let line = Math.max(0, Math.min(lastLine - firstLine, Math.floor((height - top) / perLine)));\n            let { from, length } = oracle.doc.line(firstLine + line);\n            return new BlockInfo(from, length, top + perLine * line, perLine, 0);\n        }\n    }\n    lineAt(value, type, oracle, top, offset) {\n        if (type == QueryType.ByHeight)\n            return this.blockAt(value, oracle, top, offset);\n        if (type == QueryType.ByPosNoHeight) {\n            let { from, to } = oracle.doc.lineAt(value);\n            return new BlockInfo(from, to - from, 0, 0, 0);\n        }\n        let { firstLine, perLine, perChar } = this.heightMetrics(oracle, offset);\n        let line = oracle.doc.lineAt(value), lineHeight = perLine + line.length * perChar;\n        let linesAbove = line.number - firstLine;\n        let lineTop = top + perLine * linesAbove + perChar * (line.from - offset - linesAbove);\n        return new BlockInfo(line.from, line.length, Math.max(top, Math.min(lineTop, top + this.height - lineHeight)), lineHeight, 0);\n    }\n    forEachLine(from, to, oracle, top, offset, f) {\n        from = Math.max(from, offset);\n        to = Math.min(to, offset + this.length);\n        let { firstLine, perLine, perChar } = this.heightMetrics(oracle, offset);\n        for (let pos = from, lineTop = top; pos <= to;) {\n            let line = oracle.doc.lineAt(pos);\n            if (pos == from) {\n                let linesAbove = line.number - firstLine;\n                lineTop += perLine * linesAbove + perChar * (from - offset - linesAbove);\n            }\n            let lineHeight = perLine + perChar * line.length;\n            f(new BlockInfo(line.from, line.length, lineTop, lineHeight, 0));\n            lineTop += lineHeight;\n            pos = line.to + 1;\n        }\n    }\n    replace(from, to, nodes) {\n        let after = this.length - to;\n        if (after > 0) {\n            let last = nodes[nodes.length - 1];\n            if (last instanceof HeightMapGap)\n                nodes[nodes.length - 1] = new HeightMapGap(last.length + after);\n            else\n                nodes.push(null, new HeightMapGap(after - 1));\n        }\n        if (from > 0) {\n            let first = nodes[0];\n            if (first instanceof HeightMapGap)\n                nodes[0] = new HeightMapGap(from + first.length);\n            else\n                nodes.unshift(new HeightMapGap(from - 1), null);\n        }\n        return HeightMap.of(nodes);\n    }\n    decomposeLeft(to, result) {\n        result.push(new HeightMapGap(to - 1), null);\n    }\n    decomposeRight(from, result) {\n        result.push(null, new HeightMapGap(this.length - from - 1));\n    }\n    updateHeight(oracle, offset = 0, force = false, measured) {\n        let end = offset + this.length;\n        if (measured && measured.from <= offset + this.length && measured.more) {\n            // Fill in part of this gap with measured lines. We know there\n            // can't be widgets or collapsed ranges in those lines, because\n            // they would already have been added to the heightmap (gaps\n            // only contain plain text).\n            let nodes = [], pos = Math.max(offset, measured.from), singleHeight = -1;\n            if (measured.from > offset)\n                nodes.push(new HeightMapGap(measured.from - offset - 1).updateHeight(oracle, offset));\n            while (pos <= end && measured.more) {\n                let len = oracle.doc.lineAt(pos).length;\n                if (nodes.length)\n                    nodes.push(null);\n                let height = measured.heights[measured.index++];\n                if (singleHeight == -1)\n                    singleHeight = height;\n                else if (Math.abs(height - singleHeight) >= Epsilon)\n                    singleHeight = -2;\n                let line = new HeightMapText(len, height);\n                line.outdated = false;\n                nodes.push(line);\n                pos += len + 1;\n            }\n            if (pos <= end)\n                nodes.push(null, new HeightMapGap(end - pos).updateHeight(oracle, pos));\n            let result = HeightMap.of(nodes);\n            if (singleHeight < 0 || Math.abs(result.height - this.height) >= Epsilon ||\n                Math.abs(singleHeight - this.heightMetrics(oracle, offset).perLine) >= Epsilon)\n                heightChangeFlag = true;\n            return replace(this, result);\n        }\n        else if (force || this.outdated) {\n            this.setHeight(oracle.heightForGap(offset, offset + this.length));\n            this.outdated = false;\n        }\n        return this;\n    }\n    toString() { return `gap(${this.length})`; }\n}\nclass HeightMapBranch extends HeightMap {\n    constructor(left, brk, right) {\n        super(left.length + brk + right.length, left.height + right.height, brk | (left.outdated || right.outdated ? 2 /* Flag.Outdated */ : 0));\n        this.left = left;\n        this.right = right;\n        this.size = left.size + right.size;\n    }\n    get break() { return this.flags & 1 /* Flag.Break */; }\n    blockAt(height, oracle, top, offset) {\n        let mid = top + this.left.height;\n        return height < mid ? this.left.blockAt(height, oracle, top, offset)\n            : this.right.blockAt(height, oracle, mid, offset + this.left.length + this.break);\n    }\n    lineAt(value, type, oracle, top, offset) {\n        let rightTop = top + this.left.height, rightOffset = offset + this.left.length + this.break;\n        let left = type == QueryType.ByHeight ? value < rightTop : value < rightOffset;\n        let base = left ? this.left.lineAt(value, type, oracle, top, offset)\n            : this.right.lineAt(value, type, oracle, rightTop, rightOffset);\n        if (this.break || (left ? base.to < rightOffset : base.from > rightOffset))\n            return base;\n        let subQuery = type == QueryType.ByPosNoHeight ? QueryType.ByPosNoHeight : QueryType.ByPos;\n        if (left)\n            return base.join(this.right.lineAt(rightOffset, subQuery, oracle, rightTop, rightOffset));\n        else\n            return this.left.lineAt(rightOffset, subQuery, oracle, top, offset).join(base);\n    }\n    forEachLine(from, to, oracle, top, offset, f) {\n        let rightTop = top + this.left.height, rightOffset = offset + this.left.length + this.break;\n        if (this.break) {\n            if (from < rightOffset)\n                this.left.forEachLine(from, to, oracle, top, offset, f);\n            if (to >= rightOffset)\n                this.right.forEachLine(from, to, oracle, rightTop, rightOffset, f);\n        }\n        else {\n            let mid = this.lineAt(rightOffset, QueryType.ByPos, oracle, top, offset);\n            if (from < mid.from)\n                this.left.forEachLine(from, mid.from - 1, oracle, top, offset, f);\n            if (mid.to >= from && mid.from <= to)\n                f(mid);\n            if (to > mid.to)\n                this.right.forEachLine(mid.to + 1, to, oracle, rightTop, rightOffset, f);\n        }\n    }\n    replace(from, to, nodes) {\n        let rightStart = this.left.length + this.break;\n        if (to < rightStart)\n            return this.balanced(this.left.replace(from, to, nodes), this.right);\n        if (from > this.left.length)\n            return this.balanced(this.left, this.right.replace(from - rightStart, to - rightStart, nodes));\n        let result = [];\n        if (from > 0)\n            this.decomposeLeft(from, result);\n        let left = result.length;\n        for (let node of nodes)\n            result.push(node);\n        if (from > 0)\n            mergeGaps(result, left - 1);\n        if (to < this.length) {\n            let right = result.length;\n            this.decomposeRight(to, result);\n            mergeGaps(result, right);\n        }\n        return HeightMap.of(result);\n    }\n    decomposeLeft(to, result) {\n        let left = this.left.length;\n        if (to <= left)\n            return this.left.decomposeLeft(to, result);\n        result.push(this.left);\n        if (this.break) {\n            left++;\n            if (to >= left)\n                result.push(null);\n        }\n        if (to > left)\n            this.right.decomposeLeft(to - left, result);\n    }\n    decomposeRight(from, result) {\n        let left = this.left.length, right = left + this.break;\n        if (from >= right)\n            return this.right.decomposeRight(from - right, result);\n        if (from < left)\n            this.left.decomposeRight(from, result);\n        if (this.break && from < right)\n            result.push(null);\n        result.push(this.right);\n    }\n    balanced(left, right) {\n        if (left.size > 2 * right.size || right.size > 2 * left.size)\n            return HeightMap.of(this.break ? [left, null, right] : [left, right]);\n        this.left = replace(this.left, left);\n        this.right = replace(this.right, right);\n        this.setHeight(left.height + right.height);\n        this.outdated = left.outdated || right.outdated;\n        this.size = left.size + right.size;\n        this.length = left.length + this.break + right.length;\n        return this;\n    }\n    updateHeight(oracle, offset = 0, force = false, measured) {\n        let { left, right } = this, rightStart = offset + left.length + this.break, rebalance = null;\n        if (measured && measured.from <= offset + left.length && measured.more)\n            rebalance = left = left.updateHeight(oracle, offset, force, measured);\n        else\n            left.updateHeight(oracle, offset, force);\n        if (measured && measured.from <= rightStart + right.length && measured.more)\n            rebalance = right = right.updateHeight(oracle, rightStart, force, measured);\n        else\n            right.updateHeight(oracle, rightStart, force);\n        if (rebalance)\n            return this.balanced(left, right);\n        this.height = this.left.height + this.right.height;\n        this.outdated = false;\n        return this;\n    }\n    toString() { return this.left + (this.break ? \" \" : \"-\") + this.right; }\n}\nfunction mergeGaps(nodes, around) {\n    let before, after;\n    if (nodes[around] == null &&\n        (before = nodes[around - 1]) instanceof HeightMapGap &&\n        (after = nodes[around + 1]) instanceof HeightMapGap)\n        nodes.splice(around - 1, 3, new HeightMapGap(before.length + 1 + after.length));\n}\nconst relevantWidgetHeight = 5;\nclass NodeBuilder {\n    constructor(pos, oracle) {\n        this.pos = pos;\n        this.oracle = oracle;\n        this.nodes = [];\n        this.lineStart = -1;\n        this.lineEnd = -1;\n        this.covering = null;\n        this.writtenTo = pos;\n    }\n    get isCovered() {\n        return this.covering && this.nodes[this.nodes.length - 1] == this.covering;\n    }\n    span(_from, to) {\n        if (this.lineStart > -1) {\n            let end = Math.min(to, this.lineEnd), last = this.nodes[this.nodes.length - 1];\n            if (last instanceof HeightMapText)\n                last.length += end - this.pos;\n            else if (end > this.pos || !this.isCovered)\n                this.nodes.push(new HeightMapText(end - this.pos, -1));\n            this.writtenTo = end;\n            if (to > end) {\n                this.nodes.push(null);\n                this.writtenTo++;\n                this.lineStart = -1;\n            }\n        }\n        this.pos = to;\n    }\n    point(from, to, deco) {\n        if (from < to || deco.heightRelevant) {\n            let height = deco.widget ? deco.widget.estimatedHeight : 0;\n            let breaks = deco.widget ? deco.widget.lineBreaks : 0;\n            if (height < 0)\n                height = this.oracle.lineHeight;\n            let len = to - from;\n            if (deco.block) {\n                this.addBlock(new HeightMapBlock(len, height, deco));\n            }\n            else if (len || breaks || height >= relevantWidgetHeight) {\n                this.addLineDeco(height, breaks, len);\n            }\n        }\n        else if (to > from) {\n            this.span(from, to);\n        }\n        if (this.lineEnd > -1 && this.lineEnd < this.pos)\n            this.lineEnd = this.oracle.doc.lineAt(this.pos).to;\n    }\n    enterLine() {\n        if (this.lineStart > -1)\n            return;\n        let { from, to } = this.oracle.doc.lineAt(this.pos);\n        this.lineStart = from;\n        this.lineEnd = to;\n        if (this.writtenTo < from) {\n            if (this.writtenTo < from - 1 || this.nodes[this.nodes.length - 1] == null)\n                this.nodes.push(this.blankContent(this.writtenTo, from - 1));\n            this.nodes.push(null);\n        }\n        if (this.pos > from)\n            this.nodes.push(new HeightMapText(this.pos - from, -1));\n        this.writtenTo = this.pos;\n    }\n    blankContent(from, to) {\n        let gap = new HeightMapGap(to - from);\n        if (this.oracle.doc.lineAt(from).to == to)\n            gap.flags |= 4 /* Flag.SingleLine */;\n        return gap;\n    }\n    ensureLine() {\n        this.enterLine();\n        let last = this.nodes.length ? this.nodes[this.nodes.length - 1] : null;\n        if (last instanceof HeightMapText)\n            return last;\n        let line = new HeightMapText(0, -1);\n        this.nodes.push(line);\n        return line;\n    }\n    addBlock(block) {\n        this.enterLine();\n        let deco = block.deco;\n        if (deco && deco.startSide > 0 && !this.isCovered)\n            this.ensureLine();\n        this.nodes.push(block);\n        this.writtenTo = this.pos = this.pos + block.length;\n        if (deco && deco.endSide > 0)\n            this.covering = block;\n    }\n    addLineDeco(height, breaks, length) {\n        let line = this.ensureLine();\n        line.length += length;\n        line.collapsed += length;\n        line.widgetHeight = Math.max(line.widgetHeight, height);\n        line.breaks += breaks;\n        this.writtenTo = this.pos = this.pos + length;\n    }\n    finish(from) {\n        let last = this.nodes.length == 0 ? null : this.nodes[this.nodes.length - 1];\n        if (this.lineStart > -1 && !(last instanceof HeightMapText) && !this.isCovered)\n            this.nodes.push(new HeightMapText(0, -1));\n        else if (this.writtenTo < this.pos || last == null)\n            this.nodes.push(this.blankContent(this.writtenTo, this.pos));\n        let pos = from;\n        for (let node of this.nodes) {\n            if (node instanceof HeightMapText)\n                node.updateHeight(this.oracle, pos);\n            pos += node ? node.length : 1;\n        }\n        return this.nodes;\n    }\n    // Always called with a region that on both sides either stretches\n    // to a line break or the end of the document.\n    // The returned array uses null to indicate line breaks, but never\n    // starts or ends in a line break, or has multiple line breaks next\n    // to each other.\n    static build(oracle, decorations, from, to) {\n        let builder = new NodeBuilder(from, oracle);\n        RangeSet.spans(decorations, from, to, builder, 0);\n        return builder.finish(from);\n    }\n}\nfunction heightRelevantDecoChanges(a, b, diff) {\n    let comp = new DecorationComparator;\n    RangeSet.compare(a, b, diff, comp, 0);\n    return comp.changes;\n}\nclass DecorationComparator {\n    constructor() {\n        this.changes = [];\n    }\n    compareRange() { }\n    comparePoint(from, to, a, b) {\n        if (from < to || a && a.heightRelevant || b && b.heightRelevant)\n            addRange(from, to, this.changes, 5);\n    }\n}\n\nfunction visiblePixelRange(dom, paddingTop) {\n    let rect = dom.getBoundingClientRect();\n    let doc = dom.ownerDocument, win = doc.defaultView || window;\n    let left = Math.max(0, rect.left), right = Math.min(win.innerWidth, rect.right);\n    let top = Math.max(0, rect.top), bottom = Math.min(win.innerHeight, rect.bottom);\n    for (let parent = dom.parentNode; parent && parent != doc.body;) {\n        if (parent.nodeType == 1) {\n            let elt = parent;\n            let style = window.getComputedStyle(elt);\n            if ((elt.scrollHeight > elt.clientHeight || elt.scrollWidth > elt.clientWidth) &&\n                style.overflow != \"visible\") {\n                let parentRect = elt.getBoundingClientRect();\n                left = Math.max(left, parentRect.left);\n                right = Math.min(right, parentRect.right);\n                top = Math.max(top, parentRect.top);\n                bottom = Math.min(parent == dom.parentNode ? win.innerHeight : bottom, parentRect.bottom);\n            }\n            parent = style.position == \"absolute\" || style.position == \"fixed\" ? elt.offsetParent : elt.parentNode;\n        }\n        else if (parent.nodeType == 11) { // Shadow root\n            parent = parent.host;\n        }\n        else {\n            break;\n        }\n    }\n    return { left: left - rect.left, right: Math.max(left, right) - rect.left,\n        top: top - (rect.top + paddingTop), bottom: Math.max(top, bottom) - (rect.top + paddingTop) };\n}\nfunction inWindow(elt) {\n    let rect = elt.getBoundingClientRect(), win = elt.ownerDocument.defaultView || window;\n    return rect.left < win.innerWidth && rect.right > 0 &&\n        rect.top < win.innerHeight && rect.bottom > 0;\n}\nfunction fullPixelRange(dom, paddingTop) {\n    let rect = dom.getBoundingClientRect();\n    return { left: 0, right: rect.right - rect.left,\n        top: paddingTop, bottom: rect.bottom - (rect.top + paddingTop) };\n}\n// Line gaps are placeholder widgets used to hide pieces of overlong\n// lines within the viewport, as a kludge to keep the editor\n// responsive when a ridiculously long line is loaded into it.\nclass LineGap {\n    constructor(from, to, size, displaySize) {\n        this.from = from;\n        this.to = to;\n        this.size = size;\n        this.displaySize = displaySize;\n    }\n    static same(a, b) {\n        if (a.length != b.length)\n            return false;\n        for (let i = 0; i < a.length; i++) {\n            let gA = a[i], gB = b[i];\n            if (gA.from != gB.from || gA.to != gB.to || gA.size != gB.size)\n                return false;\n        }\n        return true;\n    }\n    draw(viewState, wrapping) {\n        return Decoration.replace({\n            widget: new LineGapWidget(this.displaySize * (wrapping ? viewState.scaleY : viewState.scaleX), wrapping)\n        }).range(this.from, this.to);\n    }\n}\nclass LineGapWidget extends WidgetType {\n    constructor(size, vertical) {\n        super();\n        this.size = size;\n        this.vertical = vertical;\n    }\n    eq(other) { return other.size == this.size && other.vertical == this.vertical; }\n    toDOM() {\n        let elt = document.createElement(\"div\");\n        if (this.vertical) {\n            elt.style.height = this.size + \"px\";\n        }\n        else {\n            elt.style.width = this.size + \"px\";\n            elt.style.height = \"2px\";\n            elt.style.display = \"inline-block\";\n        }\n        return elt;\n    }\n    get estimatedHeight() { return this.vertical ? this.size : -1; }\n}\nclass ViewState {\n    constructor(state) {\n        this.state = state;\n        // These are contentDOM-local coordinates\n        this.pixelViewport = { left: 0, right: window.innerWidth, top: 0, bottom: 0 };\n        this.inView = true;\n        this.paddingTop = 0; // Padding above the document, scaled\n        this.paddingBottom = 0; // Padding below the document, scaled\n        this.contentDOMWidth = 0; // contentDOM.getBoundingClientRect().width\n        this.contentDOMHeight = 0; // contentDOM.getBoundingClientRect().height\n        this.editorHeight = 0; // scrollDOM.clientHeight, unscaled\n        this.editorWidth = 0; // scrollDOM.clientWidth, unscaled\n        this.scrollTop = 0; // Last seen scrollDOM.scrollTop, scaled\n        this.scrolledToBottom = false;\n        // The CSS-transformation scale of the editor (transformed size /\n        // concrete size)\n        this.scaleX = 1;\n        this.scaleY = 1;\n        // The vertical position (document-relative) to which to anchor the\n        // scroll position. -1 means anchor to the end of the document.\n        this.scrollAnchorPos = 0;\n        // The height at the anchor position. Set by the DOM update phase.\n        // -1 means no height available.\n        this.scrollAnchorHeight = -1;\n        // See VP.MaxDOMHeight\n        this.scaler = IdScaler;\n        this.scrollTarget = null;\n        // Briefly set to true when printing, to disable viewport limiting\n        this.printing = false;\n        // Flag set when editor content was redrawn, so that the next\n        // measure stage knows it must read DOM layout\n        this.mustMeasureContent = true;\n        this.defaultTextDirection = Direction.LTR;\n        this.visibleRanges = [];\n        // Cursor 'assoc' is only significant when the cursor is on a line\n        // wrap point, where it must stick to the character that it is\n        // associated with. Since browsers don't provide a reasonable\n        // interface to set or query this, when a selection is set that\n        // might cause this to be significant, this flag is set. The next\n        // measure phase will check whether the cursor is on a line-wrapping\n        // boundary and, if so, reset it to make sure it is positioned in\n        // the right place.\n        this.mustEnforceCursorAssoc = false;\n        let guessWrapping = state.facet(contentAttributes).some(v => typeof v != \"function\" && v.class == \"cm-lineWrapping\");\n        this.heightOracle = new HeightOracle(guessWrapping);\n        this.stateDeco = state.facet(decorations).filter(d => typeof d != \"function\");\n        this.heightMap = HeightMap.empty().applyChanges(this.stateDeco, Text.empty, this.heightOracle.setDoc(state.doc), [new ChangedRange(0, 0, 0, state.doc.length)]);\n        for (let i = 0; i < 2; i++) {\n            this.viewport = this.getViewport(0, null);\n            if (!this.updateForViewport())\n                break;\n        }\n        this.updateViewportLines();\n        this.lineGaps = this.ensureLineGaps([]);\n        this.lineGapDeco = Decoration.set(this.lineGaps.map(gap => gap.draw(this, false)));\n        this.computeVisibleRanges();\n    }\n    updateForViewport() {\n        let viewports = [this.viewport], { main } = this.state.selection;\n        for (let i = 0; i <= 1; i++) {\n            let pos = i ? main.head : main.anchor;\n            if (!viewports.some(({ from, to }) => pos >= from && pos <= to)) {\n                let { from, to } = this.lineBlockAt(pos);\n                viewports.push(new Viewport(from, to));\n            }\n        }\n        this.viewports = viewports.sort((a, b) => a.from - b.from);\n        return this.updateScaler();\n    }\n    updateScaler() {\n        let scaler = this.scaler;\n        this.scaler = this.heightMap.height <= 7000000 /* VP.MaxDOMHeight */ ? IdScaler :\n            new BigScaler(this.heightOracle, this.heightMap, this.viewports);\n        return scaler.eq(this.scaler) ? 0 : 2 /* UpdateFlag.Height */;\n    }\n    updateViewportLines() {\n        this.viewportLines = [];\n        this.heightMap.forEachLine(this.viewport.from, this.viewport.to, this.heightOracle.setDoc(this.state.doc), 0, 0, block => {\n            this.viewportLines.push(scaleBlock(block, this.scaler));\n        });\n    }\n    update(update, scrollTarget = null) {\n        this.state = update.state;\n        let prevDeco = this.stateDeco;\n        this.stateDeco = this.state.facet(decorations).filter(d => typeof d != \"function\");\n        let contentChanges = update.changedRanges;\n        let heightChanges = ChangedRange.extendWithRanges(contentChanges, heightRelevantDecoChanges(prevDeco, this.stateDeco, update ? update.changes : ChangeSet.empty(this.state.doc.length)));\n        let prevHeight = this.heightMap.height;\n        let scrollAnchor = this.scrolledToBottom ? null : this.scrollAnchorAt(this.scrollTop);\n        clearHeightChangeFlag();\n        this.heightMap = this.heightMap.applyChanges(this.stateDeco, update.startState.doc, this.heightOracle.setDoc(this.state.doc), heightChanges);\n        if (this.heightMap.height != prevHeight || heightChangeFlag)\n            update.flags |= 2 /* UpdateFlag.Height */;\n        if (scrollAnchor) {\n            this.scrollAnchorPos = update.changes.mapPos(scrollAnchor.from, -1);\n            this.scrollAnchorHeight = scrollAnchor.top;\n        }\n        else {\n            this.scrollAnchorPos = -1;\n            this.scrollAnchorHeight = prevHeight;\n        }\n        let viewport = heightChanges.length ? this.mapViewport(this.viewport, update.changes) : this.viewport;\n        if (scrollTarget && (scrollTarget.range.head < viewport.from || scrollTarget.range.head > viewport.to) ||\n            !this.viewportIsAppropriate(viewport))\n            viewport = this.getViewport(0, scrollTarget);\n        let viewportChange = viewport.from != this.viewport.from || viewport.to != this.viewport.to;\n        this.viewport = viewport;\n        update.flags |= this.updateForViewport();\n        if (viewportChange || !update.changes.empty || (update.flags & 2 /* UpdateFlag.Height */))\n            this.updateViewportLines();\n        if (this.lineGaps.length || this.viewport.to - this.viewport.from > (2000 /* LG.Margin */ << 1))\n            this.updateLineGaps(this.ensureLineGaps(this.mapLineGaps(this.lineGaps, update.changes)));\n        update.flags |= this.computeVisibleRanges(update.changes);\n        if (scrollTarget)\n            this.scrollTarget = scrollTarget;\n        if (!this.mustEnforceCursorAssoc && update.selectionSet && update.view.lineWrapping &&\n            update.state.selection.main.empty && update.state.selection.main.assoc &&\n            !update.state.facet(nativeSelectionHidden))\n            this.mustEnforceCursorAssoc = true;\n    }\n    measure(view) {\n        let dom = view.contentDOM, style = window.getComputedStyle(dom);\n        let oracle = this.heightOracle;\n        let whiteSpace = style.whiteSpace;\n        this.defaultTextDirection = style.direction == \"rtl\" ? Direction.RTL : Direction.LTR;\n        let refresh = this.heightOracle.mustRefreshForWrapping(whiteSpace);\n        let domRect = dom.getBoundingClientRect();\n        let measureContent = refresh || this.mustMeasureContent || this.contentDOMHeight != domRect.height;\n        this.contentDOMHeight = domRect.height;\n        this.mustMeasureContent = false;\n        let result = 0, bias = 0;\n        if (domRect.width && domRect.height) {\n            let { scaleX, scaleY } = getScale(dom, domRect);\n            if (scaleX > .005 && Math.abs(this.scaleX - scaleX) > .005 ||\n                scaleY > .005 && Math.abs(this.scaleY - scaleY) > .005) {\n                this.scaleX = scaleX;\n                this.scaleY = scaleY;\n                result |= 16 /* UpdateFlag.Geometry */;\n                refresh = measureContent = true;\n            }\n        }\n        // Vertical padding\n        let paddingTop = (parseInt(style.paddingTop) || 0) * this.scaleY;\n        let paddingBottom = (parseInt(style.paddingBottom) || 0) * this.scaleY;\n        if (this.paddingTop != paddingTop || this.paddingBottom != paddingBottom) {\n            this.paddingTop = paddingTop;\n            this.paddingBottom = paddingBottom;\n            result |= 16 /* UpdateFlag.Geometry */ | 2 /* UpdateFlag.Height */;\n        }\n        if (this.editorWidth != view.scrollDOM.clientWidth) {\n            if (oracle.lineWrapping)\n                measureContent = true;\n            this.editorWidth = view.scrollDOM.clientWidth;\n            result |= 16 /* UpdateFlag.Geometry */;\n        }\n        let scrollTop = view.scrollDOM.scrollTop * this.scaleY;\n        if (this.scrollTop != scrollTop) {\n            this.scrollAnchorHeight = -1;\n            this.scrollTop = scrollTop;\n        }\n        this.scrolledToBottom = isScrolledToBottom(view.scrollDOM);\n        // Pixel viewport\n        let pixelViewport = (this.printing ? fullPixelRange : visiblePixelRange)(dom, this.paddingTop);\n        let dTop = pixelViewport.top - this.pixelViewport.top, dBottom = pixelViewport.bottom - this.pixelViewport.bottom;\n        this.pixelViewport = pixelViewport;\n        let inView = this.pixelViewport.bottom > this.pixelViewport.top && this.pixelViewport.right > this.pixelViewport.left;\n        if (inView != this.inView) {\n            this.inView = inView;\n            if (inView)\n                measureContent = true;\n        }\n        if (!this.inView && !this.scrollTarget && !inWindow(view.dom))\n            return 0;\n        let contentWidth = domRect.width;\n        if (this.contentDOMWidth != contentWidth || this.editorHeight != view.scrollDOM.clientHeight) {\n            this.contentDOMWidth = domRect.width;\n            this.editorHeight = view.scrollDOM.clientHeight;\n            result |= 16 /* UpdateFlag.Geometry */;\n        }\n        if (measureContent) {\n            let lineHeights = view.docView.measureVisibleLineHeights(this.viewport);\n            if (oracle.mustRefreshForHeights(lineHeights))\n                refresh = true;\n            if (refresh || oracle.lineWrapping && Math.abs(contentWidth - this.contentDOMWidth) > oracle.charWidth) {\n                let { lineHeight, charWidth, textHeight } = view.docView.measureTextSize();\n                refresh = lineHeight > 0 && oracle.refresh(whiteSpace, lineHeight, charWidth, textHeight, Math.max(5, contentWidth / charWidth), lineHeights);\n                if (refresh) {\n                    view.docView.minWidth = 0;\n                    result |= 16 /* UpdateFlag.Geometry */;\n                }\n            }\n            if (dTop > 0 && dBottom > 0)\n                bias = Math.max(dTop, dBottom);\n            else if (dTop < 0 && dBottom < 0)\n                bias = Math.min(dTop, dBottom);\n            clearHeightChangeFlag();\n            for (let vp of this.viewports) {\n                let heights = vp.from == this.viewport.from ? lineHeights : view.docView.measureVisibleLineHeights(vp);\n                this.heightMap = (refresh ? HeightMap.empty().applyChanges(this.stateDeco, Text.empty, this.heightOracle, [new ChangedRange(0, 0, 0, view.state.doc.length)]) : this.heightMap).updateHeight(oracle, 0, refresh, new MeasuredHeights(vp.from, heights));\n            }\n            if (heightChangeFlag)\n                result |= 2 /* UpdateFlag.Height */;\n        }\n        let viewportChange = !this.viewportIsAppropriate(this.viewport, bias) ||\n            this.scrollTarget && (this.scrollTarget.range.head < this.viewport.from ||\n                this.scrollTarget.range.head > this.viewport.to);\n        if (viewportChange) {\n            if (result & 2 /* UpdateFlag.Height */)\n                result |= this.updateScaler();\n            this.viewport = this.getViewport(bias, this.scrollTarget);\n            result |= this.updateForViewport();\n        }\n        if ((result & 2 /* UpdateFlag.Height */) || viewportChange)\n            this.updateViewportLines();\n        if (this.lineGaps.length || this.viewport.to - this.viewport.from > (2000 /* LG.Margin */ << 1))\n            this.updateLineGaps(this.ensureLineGaps(refresh ? [] : this.lineGaps, view));\n        result |= this.computeVisibleRanges();\n        if (this.mustEnforceCursorAssoc) {\n            this.mustEnforceCursorAssoc = false;\n            // This is done in the read stage, because moving the selection\n            // to a line end is going to trigger a layout anyway, so it\n            // can't be a pure write. It should be rare that it does any\n            // writing.\n            view.docView.enforceCursorAssoc();\n        }\n        return result;\n    }\n    get visibleTop() { return this.scaler.fromDOM(this.pixelViewport.top); }\n    get visibleBottom() { return this.scaler.fromDOM(this.pixelViewport.bottom); }\n    getViewport(bias, scrollTarget) {\n        // This will divide VP.Margin between the top and the\n        // bottom, depending on the bias (the change in viewport position\n        // since the last update). It'll hold a number between 0 and 1\n        let marginTop = 0.5 - Math.max(-0.5, Math.min(0.5, bias / 1000 /* VP.Margin */ / 2));\n        let map = this.heightMap, oracle = this.heightOracle;\n        let { visibleTop, visibleBottom } = this;\n        let viewport = new Viewport(map.lineAt(visibleTop - marginTop * 1000 /* VP.Margin */, QueryType.ByHeight, oracle, 0, 0).from, map.lineAt(visibleBottom + (1 - marginTop) * 1000 /* VP.Margin */, QueryType.ByHeight, oracle, 0, 0).to);\n        // If scrollTarget is given, make sure the viewport includes that position\n        if (scrollTarget) {\n            let { head } = scrollTarget.range;\n            if (head < viewport.from || head > viewport.to) {\n                let viewHeight = Math.min(this.editorHeight, this.pixelViewport.bottom - this.pixelViewport.top);\n                let block = map.lineAt(head, QueryType.ByPos, oracle, 0, 0), topPos;\n                if (scrollTarget.y == \"center\")\n                    topPos = (block.top + block.bottom) / 2 - viewHeight / 2;\n                else if (scrollTarget.y == \"start\" || scrollTarget.y == \"nearest\" && head < viewport.from)\n                    topPos = block.top;\n                else\n                    topPos = block.bottom - viewHeight;\n                viewport = new Viewport(map.lineAt(topPos - 1000 /* VP.Margin */ / 2, QueryType.ByHeight, oracle, 0, 0).from, map.lineAt(topPos + viewHeight + 1000 /* VP.Margin */ / 2, QueryType.ByHeight, oracle, 0, 0).to);\n            }\n        }\n        return viewport;\n    }\n    mapViewport(viewport, changes) {\n        let from = changes.mapPos(viewport.from, -1), to = changes.mapPos(viewport.to, 1);\n        return new Viewport(this.heightMap.lineAt(from, QueryType.ByPos, this.heightOracle, 0, 0).from, this.heightMap.lineAt(to, QueryType.ByPos, this.heightOracle, 0, 0).to);\n    }\n    // Checks if a given viewport covers the visible part of the\n    // document and not too much beyond that.\n    viewportIsAppropriate({ from, to }, bias = 0) {\n        if (!this.inView)\n            return true;\n        let { top } = this.heightMap.lineAt(from, QueryType.ByPos, this.heightOracle, 0, 0);\n        let { bottom } = this.heightMap.lineAt(to, QueryType.ByPos, this.heightOracle, 0, 0);\n        let { visibleTop, visibleBottom } = this;\n        return (from == 0 || top <= visibleTop - Math.max(10 /* VP.MinCoverMargin */, Math.min(-bias, 250 /* VP.MaxCoverMargin */))) &&\n            (to == this.state.doc.length ||\n                bottom >= visibleBottom + Math.max(10 /* VP.MinCoverMargin */, Math.min(bias, 250 /* VP.MaxCoverMargin */))) &&\n            (top > visibleTop - 2 * 1000 /* VP.Margin */ && bottom < visibleBottom + 2 * 1000 /* VP.Margin */);\n    }\n    mapLineGaps(gaps, changes) {\n        if (!gaps.length || changes.empty)\n            return gaps;\n        let mapped = [];\n        for (let gap of gaps)\n            if (!changes.touchesRange(gap.from, gap.to))\n                mapped.push(new LineGap(changes.mapPos(gap.from), changes.mapPos(gap.to), gap.size, gap.displaySize));\n        return mapped;\n    }\n    // Computes positions in the viewport where the start or end of a\n    // line should be hidden, trying to reuse existing line gaps when\n    // appropriate to avoid unneccesary redraws.\n    // Uses crude character-counting for the positioning and sizing,\n    // since actual DOM coordinates aren't always available and\n    // predictable. Relies on generous margins (see LG.Margin) to hide\n    // the artifacts this might produce from the user.\n    ensureLineGaps(current, mayMeasure) {\n        let wrapping = this.heightOracle.lineWrapping;\n        let margin = wrapping ? 10000 /* LG.MarginWrap */ : 2000 /* LG.Margin */, halfMargin = margin >> 1, doubleMargin = margin << 1;\n        // The non-wrapping logic won't work at all in predominantly right-to-left text.\n        if (this.defaultTextDirection != Direction.LTR && !wrapping)\n            return [];\n        let gaps = [];\n        let addGap = (from, to, line, structure) => {\n            if (to - from < halfMargin)\n                return;\n            let sel = this.state.selection.main, avoid = [sel.from];\n            if (!sel.empty)\n                avoid.push(sel.to);\n            for (let pos of avoid) {\n                if (pos > from && pos < to) {\n                    addGap(from, pos - 10 /* LG.SelectionMargin */, line, structure);\n                    addGap(pos + 10 /* LG.SelectionMargin */, to, line, structure);\n                    return;\n                }\n            }\n            let gap = find(current, gap => gap.from >= line.from && gap.to <= line.to &&\n                Math.abs(gap.from - from) < halfMargin && Math.abs(gap.to - to) < halfMargin &&\n                !avoid.some(pos => gap.from < pos && gap.to > pos));\n            if (!gap) {\n                // When scrolling down, snap gap ends to line starts to avoid shifts in wrapping\n                if (to < line.to && mayMeasure && wrapping &&\n                    mayMeasure.visibleRanges.some(r => r.from <= to && r.to >= to)) {\n                    let lineStart = mayMeasure.moveToLineBoundary(EditorSelection.cursor(to), false, true).head;\n                    if (lineStart > from)\n                        to = lineStart;\n                }\n                let size = this.gapSize(line, from, to, structure);\n                let displaySize = wrapping || size < 2000000 /* VP.MaxHorizGap */ ? size : 2000000 /* VP.MaxHorizGap */;\n                gap = new LineGap(from, to, size, displaySize);\n            }\n            gaps.push(gap);\n        };\n        let checkLine = (line) => {\n            if (line.length < doubleMargin || line.type != BlockType.Text)\n                return;\n            let structure = lineStructure(line.from, line.to, this.stateDeco);\n            if (structure.total < doubleMargin)\n                return;\n            let target = this.scrollTarget ? this.scrollTarget.range.head : null;\n            let viewFrom, viewTo;\n            if (wrapping) {\n                let marginHeight = (margin / this.heightOracle.lineLength) * this.heightOracle.lineHeight;\n                let top, bot;\n                if (target != null) {\n                    let targetFrac = findFraction(structure, target);\n                    let spaceFrac = ((this.visibleBottom - this.visibleTop) / 2 + marginHeight) / line.height;\n                    top = targetFrac - spaceFrac;\n                    bot = targetFrac + spaceFrac;\n                }\n                else {\n                    top = (this.visibleTop - line.top - marginHeight) / line.height;\n                    bot = (this.visibleBottom - line.top + marginHeight) / line.height;\n                }\n                viewFrom = findPosition(structure, top);\n                viewTo = findPosition(structure, bot);\n            }\n            else {\n                let totalWidth = structure.total * this.heightOracle.charWidth;\n                let marginWidth = margin * this.heightOracle.charWidth;\n                let horizOffset = 0;\n                if (totalWidth > 2000000 /* VP.MaxHorizGap */)\n                    for (let old of current) {\n                        if (old.from >= line.from && old.from < line.to && old.size != old.displaySize &&\n                            old.from * this.heightOracle.charWidth + horizOffset < this.pixelViewport.left)\n                            horizOffset = old.size - old.displaySize;\n                    }\n                let pxLeft = this.pixelViewport.left + horizOffset, pxRight = this.pixelViewport.right + horizOffset;\n                let left, right;\n                if (target != null) {\n                    let targetFrac = findFraction(structure, target);\n                    let spaceFrac = ((pxRight - pxLeft) / 2 + marginWidth) / totalWidth;\n                    left = targetFrac - spaceFrac;\n                    right = targetFrac + spaceFrac;\n                }\n                else {\n                    left = (pxLeft - marginWidth) / totalWidth;\n                    right = (pxRight + marginWidth) / totalWidth;\n                }\n                viewFrom = findPosition(structure, left);\n                viewTo = findPosition(structure, right);\n            }\n            if (viewFrom > line.from)\n                addGap(line.from, viewFrom, line, structure);\n            if (viewTo < line.to)\n                addGap(viewTo, line.to, line, structure);\n        };\n        for (let line of this.viewportLines) {\n            if (Array.isArray(line.type))\n                line.type.forEach(checkLine);\n            else\n                checkLine(line);\n        }\n        return gaps;\n    }\n    gapSize(line, from, to, structure) {\n        let fraction = findFraction(structure, to) - findFraction(structure, from);\n        if (this.heightOracle.lineWrapping) {\n            return line.height * fraction;\n        }\n        else {\n            return structure.total * this.heightOracle.charWidth * fraction;\n        }\n    }\n    updateLineGaps(gaps) {\n        if (!LineGap.same(gaps, this.lineGaps)) {\n            this.lineGaps = gaps;\n            this.lineGapDeco = Decoration.set(gaps.map(gap => gap.draw(this, this.heightOracle.lineWrapping)));\n        }\n    }\n    computeVisibleRanges(changes) {\n        let deco = this.stateDeco;\n        if (this.lineGaps.length)\n            deco = deco.concat(this.lineGapDeco);\n        let ranges = [];\n        RangeSet.spans(deco, this.viewport.from, this.viewport.to, {\n            span(from, to) { ranges.push({ from, to }); },\n            point() { }\n        }, 20);\n        let changed = 0;\n        if (ranges.length != this.visibleRanges.length) {\n            changed = 8 /* UpdateFlag.ViewportMoved */ | 4 /* UpdateFlag.Viewport */;\n        }\n        else {\n            for (let i = 0; i < ranges.length && !(changed & 8 /* UpdateFlag.ViewportMoved */); i++) {\n                let old = this.visibleRanges[i], nw = ranges[i];\n                if (old.from != nw.from || old.to != nw.to) {\n                    changed |= 4 /* UpdateFlag.Viewport */;\n                    if (!(changes && changes.mapPos(old.from, -1) == nw.from && changes.mapPos(old.to, 1) == nw.to))\n                        changed |= 8 /* UpdateFlag.ViewportMoved */;\n                }\n            }\n        }\n        this.visibleRanges = ranges;\n        return changed;\n    }\n    lineBlockAt(pos) {\n        return (pos >= this.viewport.from && pos <= this.viewport.to &&\n            this.viewportLines.find(b => b.from <= pos && b.to >= pos)) ||\n            scaleBlock(this.heightMap.lineAt(pos, QueryType.ByPos, this.heightOracle, 0, 0), this.scaler);\n    }\n    lineBlockAtHeight(height) {\n        return (height >= this.viewportLines[0].top && height <= this.viewportLines[this.viewportLines.length - 1].bottom &&\n            this.viewportLines.find(l => l.top <= height && l.bottom >= height)) ||\n            scaleBlock(this.heightMap.lineAt(this.scaler.fromDOM(height), QueryType.ByHeight, this.heightOracle, 0, 0), this.scaler);\n    }\n    scrollAnchorAt(scrollTop) {\n        let block = this.lineBlockAtHeight(scrollTop + 8);\n        return block.from >= this.viewport.from || this.viewportLines[0].top - scrollTop > 200 ? block : this.viewportLines[0];\n    }\n    elementAtHeight(height) {\n        return scaleBlock(this.heightMap.blockAt(this.scaler.fromDOM(height), this.heightOracle, 0, 0), this.scaler);\n    }\n    get docHeight() {\n        return this.scaler.toDOM(this.heightMap.height);\n    }\n    get contentHeight() {\n        return this.docHeight + this.paddingTop + this.paddingBottom;\n    }\n}\nclass Viewport {\n    constructor(from, to) {\n        this.from = from;\n        this.to = to;\n    }\n}\nfunction lineStructure(from, to, stateDeco) {\n    let ranges = [], pos = from, total = 0;\n    RangeSet.spans(stateDeco, from, to, {\n        span() { },\n        point(from, to) {\n            if (from > pos) {\n                ranges.push({ from: pos, to: from });\n                total += from - pos;\n            }\n            pos = to;\n        }\n    }, 20); // We're only interested in collapsed ranges of a significant size\n    if (pos < to) {\n        ranges.push({ from: pos, to });\n        total += to - pos;\n    }\n    return { total, ranges };\n}\nfunction findPosition({ total, ranges }, ratio) {\n    if (ratio <= 0)\n        return ranges[0].from;\n    if (ratio >= 1)\n        return ranges[ranges.length - 1].to;\n    let dist = Math.floor(total * ratio);\n    for (let i = 0;; i++) {\n        let { from, to } = ranges[i], size = to - from;\n        if (dist <= size)\n            return from + dist;\n        dist -= size;\n    }\n}\nfunction findFraction(structure, pos) {\n    let counted = 0;\n    for (let { from, to } of structure.ranges) {\n        if (pos <= to) {\n            counted += pos - from;\n            break;\n        }\n        counted += to - from;\n    }\n    return counted / structure.total;\n}\nfunction find(array, f) {\n    for (let val of array)\n        if (f(val))\n            return val;\n    return undefined;\n}\n// Don't scale when the document height is within the range of what\n// the DOM can handle.\nconst IdScaler = {\n    toDOM(n) { return n; },\n    fromDOM(n) { return n; },\n    scale: 1,\n    eq(other) { return other == this; }\n};\n// When the height is too big (> VP.MaxDOMHeight), scale down the\n// regions outside the viewports so that the total height is\n// VP.MaxDOMHeight.\nclass BigScaler {\n    constructor(oracle, heightMap, viewports) {\n        let vpHeight = 0, base = 0, domBase = 0;\n        this.viewports = viewports.map(({ from, to }) => {\n            let top = heightMap.lineAt(from, QueryType.ByPos, oracle, 0, 0).top;\n            let bottom = heightMap.lineAt(to, QueryType.ByPos, oracle, 0, 0).bottom;\n            vpHeight += bottom - top;\n            return { from, to, top, bottom, domTop: 0, domBottom: 0 };\n        });\n        this.scale = (7000000 /* VP.MaxDOMHeight */ - vpHeight) / (heightMap.height - vpHeight);\n        for (let obj of this.viewports) {\n            obj.domTop = domBase + (obj.top - base) * this.scale;\n            domBase = obj.domBottom = obj.domTop + (obj.bottom - obj.top);\n            base = obj.bottom;\n        }\n    }\n    toDOM(n) {\n        for (let i = 0, base = 0, domBase = 0;; i++) {\n            let vp = i < this.viewports.length ? this.viewports[i] : null;\n            if (!vp || n < vp.top)\n                return domBase + (n - base) * this.scale;\n            if (n <= vp.bottom)\n                return vp.domTop + (n - vp.top);\n            base = vp.bottom;\n            domBase = vp.domBottom;\n        }\n    }\n    fromDOM(n) {\n        for (let i = 0, base = 0, domBase = 0;; i++) {\n            let vp = i < this.viewports.length ? this.viewports[i] : null;\n            if (!vp || n < vp.domTop)\n                return base + (n - domBase) / this.scale;\n            if (n <= vp.domBottom)\n                return vp.top + (n - vp.domTop);\n            base = vp.bottom;\n            domBase = vp.domBottom;\n        }\n    }\n    eq(other) {\n        if (!(other instanceof BigScaler))\n            return false;\n        return this.scale == other.scale && this.viewports.length == other.viewports.length &&\n            this.viewports.every((vp, i) => vp.from == other.viewports[i].from && vp.to == other.viewports[i].to);\n    }\n}\nfunction scaleBlock(block, scaler) {\n    if (scaler.scale == 1)\n        return block;\n    let bTop = scaler.toDOM(block.top), bBottom = scaler.toDOM(block.bottom);\n    return new BlockInfo(block.from, block.length, bTop, bBottom - bTop, Array.isArray(block._content) ? block._content.map(b => scaleBlock(b, scaler)) : block._content);\n}\n\nconst theme = /*@__PURE__*/Facet.define({ combine: strs => strs.join(\" \") });\nconst darkTheme = /*@__PURE__*/Facet.define({ combine: values => values.indexOf(true) > -1 });\nconst baseThemeID = /*@__PURE__*/StyleModule.newName(), baseLightID = /*@__PURE__*/StyleModule.newName(), baseDarkID = /*@__PURE__*/StyleModule.newName();\nconst lightDarkIDs = { \"&light\": \".\" + baseLightID, \"&dark\": \".\" + baseDarkID };\nfunction buildTheme(main, spec, scopes) {\n    return new StyleModule(spec, {\n        finish(sel) {\n            return /&/.test(sel) ? sel.replace(/&\\w*/, m => {\n                if (m == \"&\")\n                    return main;\n                if (!scopes || !scopes[m])\n                    throw new RangeError(`Unsupported selector: ${m}`);\n                return scopes[m];\n            }) : main + \" \" + sel;\n        }\n    });\n}\nconst baseTheme$1 = /*@__PURE__*/buildTheme(\".\" + baseThemeID, {\n    \"&\": {\n        position: \"relative !important\",\n        boxSizing: \"border-box\",\n        \"&.cm-focused\": {\n            // Provide a simple default outline to make sure a focused\n            // editor is visually distinct. Can't leave the default behavior\n            // because that will apply to the content element, which is\n            // inside the scrollable container and doesn't include the\n            // gutters. We also can't use an 'auto' outline, since those\n            // are, for some reason, drawn behind the element content, which\n            // will cause things like the active line background to cover\n            // the outline (#297).\n            outline: \"1px dotted #212121\"\n        },\n        display: \"flex !important\",\n        flexDirection: \"column\"\n    },\n    \".cm-scroller\": {\n        display: \"flex !important\",\n        alignItems: \"flex-start !important\",\n        fontFamily: \"monospace\",\n        lineHeight: 1.4,\n        height: \"100%\",\n        overflowX: \"auto\",\n        position: \"relative\",\n        zIndex: 0,\n        overflowAnchor: \"none\",\n    },\n    \".cm-content\": {\n        margin: 0,\n        flexGrow: 2,\n        flexShrink: 0,\n        display: \"block\",\n        whiteSpace: \"pre\",\n        wordWrap: \"normal\", // https://github.com/codemirror/dev/issues/456\n        boxSizing: \"border-box\",\n        minHeight: \"100%\",\n        padding: \"4px 0\",\n        outline: \"none\",\n        \"&[contenteditable=true]\": {\n            WebkitUserModify: \"read-write-plaintext-only\",\n        }\n    },\n    \".cm-lineWrapping\": {\n        whiteSpace_fallback: \"pre-wrap\", // For IE\n        whiteSpace: \"break-spaces\",\n        wordBreak: \"break-word\", // For Safari, which doesn't support overflow-wrap: anywhere\n        overflowWrap: \"anywhere\",\n        flexShrink: 1\n    },\n    \"&light .cm-content\": { caretColor: \"black\" },\n    \"&dark .cm-content\": { caretColor: \"white\" },\n    \".cm-line\": {\n        display: \"block\",\n        padding: \"0 2px 0 6px\"\n    },\n    \".cm-layer\": {\n        position: \"absolute\",\n        left: 0,\n        top: 0,\n        contain: \"size style\",\n        \"& > *\": {\n            position: \"absolute\"\n        }\n    },\n    \"&light .cm-selectionBackground\": {\n        background: \"#d9d9d9\"\n    },\n    \"&dark .cm-selectionBackground\": {\n        background: \"#222\"\n    },\n    \"&light.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground\": {\n        background: \"#d7d4f0\"\n    },\n    \"&dark.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground\": {\n        background: \"#233\"\n    },\n    \".cm-cursorLayer\": {\n        pointerEvents: \"none\"\n    },\n    \"&.cm-focused > .cm-scroller > .cm-cursorLayer\": {\n        animation: \"steps(1) cm-blink 1.2s infinite\"\n    },\n    // Two animations defined so that we can switch between them to\n    // restart the animation without forcing another style\n    // recomputation.\n    \"@keyframes cm-blink\": { \"0%\": {}, \"50%\": { opacity: 0 }, \"100%\": {} },\n    \"@keyframes cm-blink2\": { \"0%\": {}, \"50%\": { opacity: 0 }, \"100%\": {} },\n    \".cm-cursor, .cm-dropCursor\": {\n        borderLeft: \"1.2px solid black\",\n        marginLeft: \"-0.6px\",\n        pointerEvents: \"none\",\n    },\n    \".cm-cursor\": {\n        display: \"none\"\n    },\n    \"&dark .cm-cursor\": {\n        borderLeftColor: \"#ddd\"\n    },\n    \".cm-dropCursor\": {\n        position: \"absolute\"\n    },\n    \"&.cm-focused > .cm-scroller > .cm-cursorLayer .cm-cursor\": {\n        display: \"block\"\n    },\n    \".cm-iso\": {\n        unicodeBidi: \"isolate\"\n    },\n    \".cm-announced\": {\n        position: \"fixed\",\n        top: \"-10000px\"\n    },\n    \"@media print\": {\n        \".cm-announced\": { display: \"none\" }\n    },\n    \"&light .cm-activeLine\": { backgroundColor: \"#cceeff44\" },\n    \"&dark .cm-activeLine\": { backgroundColor: \"#99eeff33\" },\n    \"&light .cm-specialChar\": { color: \"red\" },\n    \"&dark .cm-specialChar\": { color: \"#f78\" },\n    \".cm-gutters\": {\n        flexShrink: 0,\n        display: \"flex\",\n        height: \"100%\",\n        boxSizing: \"border-box\",\n        zIndex: 200,\n    },\n    \".cm-gutters-before\": { insetInlineStart: 0 },\n    \".cm-gutters-after\": { insetInlineEnd: 0 },\n    \"&light .cm-gutters\": {\n        backgroundColor: \"#f5f5f5\",\n        color: \"#6c6c6c\",\n        border: \"0px solid #ddd\",\n        \"&.cm-gutters-before\": { borderRightWidth: \"1px\" },\n        \"&.cm-gutters-after\": { borderLeftWidth: \"1px\" },\n    },\n    \"&dark .cm-gutters\": {\n        backgroundColor: \"#333338\",\n        color: \"#ccc\"\n    },\n    \".cm-gutter\": {\n        display: \"flex !important\", // Necessary -- prevents margin collapsing\n        flexDirection: \"column\",\n        flexShrink: 0,\n        boxSizing: \"border-box\",\n        minHeight: \"100%\",\n        overflow: \"hidden\"\n    },\n    \".cm-gutterElement\": {\n        boxSizing: \"border-box\"\n    },\n    \".cm-lineNumbers .cm-gutterElement\": {\n        padding: \"0 3px 0 5px\",\n        minWidth: \"20px\",\n        textAlign: \"right\",\n        whiteSpace: \"nowrap\"\n    },\n    \"&light .cm-activeLineGutter\": {\n        backgroundColor: \"#e2f2ff\"\n    },\n    \"&dark .cm-activeLineGutter\": {\n        backgroundColor: \"#222227\"\n    },\n    \".cm-panels\": {\n        boxSizing: \"border-box\",\n        position: \"sticky\",\n        left: 0,\n        right: 0,\n        zIndex: 300\n    },\n    \"&light .cm-panels\": {\n        backgroundColor: \"#f5f5f5\",\n        color: \"black\"\n    },\n    \"&light .cm-panels-top\": {\n        borderBottom: \"1px solid #ddd\"\n    },\n    \"&light .cm-panels-bottom\": {\n        borderTop: \"1px solid #ddd\"\n    },\n    \"&dark .cm-panels\": {\n        backgroundColor: \"#333338\",\n        color: \"white\"\n    },\n    \".cm-dialog\": {\n        padding: \"2px 19px 4px 6px\",\n        position: \"relative\",\n        \"& label\": { fontSize: \"80%\" },\n    },\n    \".cm-dialog-close\": {\n        position: \"absolute\",\n        top: \"3px\",\n        right: \"4px\",\n        backgroundColor: \"inherit\",\n        border: \"none\",\n        font: \"inherit\",\n        fontSize: \"14px\",\n        padding: \"0\"\n    },\n    \".cm-tab\": {\n        display: \"inline-block\",\n        overflow: \"hidden\",\n        verticalAlign: \"bottom\"\n    },\n    \".cm-widgetBuffer\": {\n        verticalAlign: \"text-top\",\n        height: \"1em\",\n        width: 0,\n        display: \"inline\"\n    },\n    \".cm-placeholder\": {\n        color: \"#888\",\n        display: \"inline-block\",\n        verticalAlign: \"top\",\n        userSelect: \"none\"\n    },\n    \".cm-highlightSpace\": {\n        backgroundImage: \"radial-gradient(circle at 50% 55%, #aaa 20%, transparent 5%)\",\n        backgroundPosition: \"center\",\n    },\n    \".cm-highlightTab\": {\n        backgroundImage: `url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"200\" height=\"20\"><path stroke=\"%23888\" stroke-width=\"1\" fill=\"none\" d=\"M1 10H196L190 5M190 15L196 10M197 4L197 16\"/></svg>')`,\n        backgroundSize: \"auto 100%\",\n        backgroundPosition: \"right 90%\",\n        backgroundRepeat: \"no-repeat\"\n    },\n    \".cm-trailingSpace\": {\n        backgroundColor: \"#ff332255\"\n    },\n    \".cm-button\": {\n        verticalAlign: \"middle\",\n        color: \"inherit\",\n        fontSize: \"70%\",\n        padding: \".2em 1em\",\n        borderRadius: \"1px\"\n    },\n    \"&light .cm-button\": {\n        backgroundImage: \"linear-gradient(#eff1f5, #d9d9df)\",\n        border: \"1px solid #888\",\n        \"&:active\": {\n            backgroundImage: \"linear-gradient(#b4b4b4, #d0d3d6)\"\n        }\n    },\n    \"&dark .cm-button\": {\n        backgroundImage: \"linear-gradient(#393939, #111)\",\n        border: \"1px solid #888\",\n        \"&:active\": {\n            backgroundImage: \"linear-gradient(#111, #333)\"\n        }\n    },\n    \".cm-textfield\": {\n        verticalAlign: \"middle\",\n        color: \"inherit\",\n        fontSize: \"70%\",\n        border: \"1px solid silver\",\n        padding: \".2em .5em\"\n    },\n    \"&light .cm-textfield\": {\n        backgroundColor: \"white\"\n    },\n    \"&dark .cm-textfield\": {\n        border: \"1px solid #555\",\n        backgroundColor: \"inherit\"\n    }\n}, lightDarkIDs);\n\nconst observeOptions = {\n    childList: true,\n    characterData: true,\n    subtree: true,\n    attributes: true,\n    characterDataOldValue: true\n};\n// IE11 has very broken mutation observers, so we also listen to\n// DOMCharacterDataModified there\nconst useCharData = browser.ie && browser.ie_version <= 11;\nclass DOMObserver {\n    constructor(view) {\n        this.view = view;\n        this.active = false;\n        this.editContext = null;\n        // The known selection. Kept in our own object, as opposed to just\n        // directly accessing the selection because:\n        //  - Safari doesn't report the right selection in shadow DOM\n        //  - Reading from the selection forces a DOM layout\n        //  - This way, we can ignore selectionchange events if we have\n        //    already seen the 'new' selection\n        this.selectionRange = new DOMSelectionState;\n        // Set when a selection change is detected, cleared on flush\n        this.selectionChanged = false;\n        this.delayedFlush = -1;\n        this.resizeTimeout = -1;\n        this.queue = [];\n        this.delayedAndroidKey = null;\n        this.flushingAndroidKey = -1;\n        this.lastChange = 0;\n        this.scrollTargets = [];\n        this.intersection = null;\n        this.resizeScroll = null;\n        this.intersecting = false;\n        this.gapIntersection = null;\n        this.gaps = [];\n        this.printQuery = null;\n        // Timeout for scheduling check of the parents that need scroll handlers\n        this.parentCheck = -1;\n        this.dom = view.contentDOM;\n        this.observer = new MutationObserver(mutations => {\n            for (let mut of mutations)\n                this.queue.push(mut);\n            // IE11 will sometimes (on typing over a selection or\n            // backspacing out a single character text node) call the\n            // observer callback before actually updating the DOM.\n            //\n            // Unrelatedly, iOS Safari will, when ending a composition,\n            // sometimes first clear it, deliver the mutations, and then\n            // reinsert the finished text. CodeMirror's handling of the\n            // deletion will prevent the reinsertion from happening,\n            // breaking composition.\n            if ((browser.ie && browser.ie_version <= 11 || browser.ios && view.composing) &&\n                mutations.some(m => m.type == \"childList\" && m.removedNodes.length ||\n                    m.type == \"characterData\" && m.oldValue.length > m.target.nodeValue.length))\n                this.flushSoon();\n            else\n                this.flush();\n        });\n        if (window.EditContext && browser.android && view.constructor.EDIT_CONTEXT !== false &&\n            // Chrome <126 doesn't support inverted selections in edit context (#1392)\n            !(browser.chrome && browser.chrome_version < 126)) {\n            this.editContext = new EditContextManager(view);\n            if (view.state.facet(editable))\n                view.contentDOM.editContext = this.editContext.editContext;\n        }\n        if (useCharData)\n            this.onCharData = (event) => {\n                this.queue.push({ target: event.target,\n                    type: \"characterData\",\n                    oldValue: event.prevValue });\n                this.flushSoon();\n            };\n        this.onSelectionChange = this.onSelectionChange.bind(this);\n        this.onResize = this.onResize.bind(this);\n        this.onPrint = this.onPrint.bind(this);\n        this.onScroll = this.onScroll.bind(this);\n        if (window.matchMedia)\n            this.printQuery = window.matchMedia(\"print\");\n        if (typeof ResizeObserver == \"function\") {\n            this.resizeScroll = new ResizeObserver(() => {\n                var _a;\n                if (((_a = this.view.docView) === null || _a === void 0 ? void 0 : _a.lastUpdate) < Date.now() - 75)\n                    this.onResize();\n            });\n            this.resizeScroll.observe(view.scrollDOM);\n        }\n        this.addWindowListeners(this.win = view.win);\n        this.start();\n        if (typeof IntersectionObserver == \"function\") {\n            this.intersection = new IntersectionObserver(entries => {\n                if (this.parentCheck < 0)\n                    this.parentCheck = setTimeout(this.listenForScroll.bind(this), 1000);\n                if (entries.length > 0 && (entries[entries.length - 1].intersectionRatio > 0) != this.intersecting) {\n                    this.intersecting = !this.intersecting;\n                    if (this.intersecting != this.view.inView)\n                        this.onScrollChanged(document.createEvent(\"Event\"));\n                }\n            }, { threshold: [0, .001] });\n            this.intersection.observe(this.dom);\n            this.gapIntersection = new IntersectionObserver(entries => {\n                if (entries.length > 0 && entries[entries.length - 1].intersectionRatio > 0)\n                    this.onScrollChanged(document.createEvent(\"Event\"));\n            }, {});\n        }\n        this.listenForScroll();\n        this.readSelectionRange();\n    }\n    onScrollChanged(e) {\n        this.view.inputState.runHandlers(\"scroll\", e);\n        if (this.intersecting)\n            this.view.measure();\n    }\n    onScroll(e) {\n        if (this.intersecting)\n            this.flush(false);\n        if (this.editContext)\n            this.view.requestMeasure(this.editContext.measureReq);\n        this.onScrollChanged(e);\n    }\n    onResize() {\n        if (this.resizeTimeout < 0)\n            this.resizeTimeout = setTimeout(() => {\n                this.resizeTimeout = -1;\n                this.view.requestMeasure();\n            }, 50);\n    }\n    onPrint(event) {\n        if ((event.type == \"change\" || !event.type) && !event.matches)\n            return;\n        this.view.viewState.printing = true;\n        this.view.measure();\n        setTimeout(() => {\n            this.view.viewState.printing = false;\n            this.view.requestMeasure();\n        }, 500);\n    }\n    updateGaps(gaps) {\n        if (this.gapIntersection && (gaps.length != this.gaps.length || this.gaps.some((g, i) => g != gaps[i]))) {\n            this.gapIntersection.disconnect();\n            for (let gap of gaps)\n                this.gapIntersection.observe(gap);\n            this.gaps = gaps;\n        }\n    }\n    onSelectionChange(event) {\n        let wasChanged = this.selectionChanged;\n        if (!this.readSelectionRange() || this.delayedAndroidKey)\n            return;\n        let { view } = this, sel = this.selectionRange;\n        if (view.state.facet(editable) ? view.root.activeElement != this.dom : !hasSelection(this.dom, sel))\n            return;\n        let context = sel.anchorNode && view.docView.nearest(sel.anchorNode);\n        if (context && context.ignoreEvent(event)) {\n            if (!wasChanged)\n                this.selectionChanged = false;\n            return;\n        }\n        // Deletions on IE11 fire their events in the wrong order, giving\n        // us a selection change event before the DOM changes are\n        // reported.\n        // Chrome Android has a similar issue when backspacing out a\n        // selection (#645).\n        if ((browser.ie && browser.ie_version <= 11 || browser.android && browser.chrome) && !view.state.selection.main.empty &&\n            // (Selection.isCollapsed isn't reliable on IE)\n            sel.focusNode && isEquivalentPosition(sel.focusNode, sel.focusOffset, sel.anchorNode, sel.anchorOffset))\n            this.flushSoon();\n        else\n            this.flush(false);\n    }\n    readSelectionRange() {\n        let { view } = this;\n        // The Selection object is broken in shadow roots in Safari. See\n        // https://github.com/codemirror/dev/issues/414\n        let selection = getSelection(view.root);\n        if (!selection)\n            return false;\n        let range = browser.safari && view.root.nodeType == 11 &&\n            view.root.activeElement == this.dom &&\n            safariSelectionRangeHack(this.view, selection) || selection;\n        if (!range || this.selectionRange.eq(range))\n            return false;\n        let local = hasSelection(this.dom, range);\n        // Detect the situation where the browser has, on focus, moved the\n        // selection to the start of the content element. Reset it to the\n        // position from the editor state.\n        if (local && !this.selectionChanged &&\n            view.inputState.lastFocusTime > Date.now() - 200 &&\n            view.inputState.lastTouchTime < Date.now() - 300 &&\n            atElementStart(this.dom, range)) {\n            this.view.inputState.lastFocusTime = 0;\n            view.docView.updateSelection();\n            return false;\n        }\n        this.selectionRange.setRange(range);\n        if (local)\n            this.selectionChanged = true;\n        return true;\n    }\n    setSelectionRange(anchor, head) {\n        this.selectionRange.set(anchor.node, anchor.offset, head.node, head.offset);\n        this.selectionChanged = false;\n    }\n    clearSelectionRange() {\n        this.selectionRange.set(null, 0, null, 0);\n    }\n    listenForScroll() {\n        this.parentCheck = -1;\n        let i = 0, changed = null;\n        for (let dom = this.dom; dom;) {\n            if (dom.nodeType == 1) {\n                if (!changed && i < this.scrollTargets.length && this.scrollTargets[i] == dom)\n                    i++;\n                else if (!changed)\n                    changed = this.scrollTargets.slice(0, i);\n                if (changed)\n                    changed.push(dom);\n                dom = dom.assignedSlot || dom.parentNode;\n            }\n            else if (dom.nodeType == 11) { // Shadow root\n                dom = dom.host;\n            }\n            else {\n                break;\n            }\n        }\n        if (i < this.scrollTargets.length && !changed)\n            changed = this.scrollTargets.slice(0, i);\n        if (changed) {\n            for (let dom of this.scrollTargets)\n                dom.removeEventListener(\"scroll\", this.onScroll);\n            for (let dom of this.scrollTargets = changed)\n                dom.addEventListener(\"scroll\", this.onScroll);\n        }\n    }\n    ignore(f) {\n        if (!this.active)\n            return f();\n        try {\n            this.stop();\n            return f();\n        }\n        finally {\n            this.start();\n            this.clear();\n        }\n    }\n    start() {\n        if (this.active)\n            return;\n        this.observer.observe(this.dom, observeOptions);\n        if (useCharData)\n            this.dom.addEventListener(\"DOMCharacterDataModified\", this.onCharData);\n        this.active = true;\n    }\n    stop() {\n        if (!this.active)\n            return;\n        this.active = false;\n        this.observer.disconnect();\n        if (useCharData)\n            this.dom.removeEventListener(\"DOMCharacterDataModified\", this.onCharData);\n    }\n    // Throw away any pending changes\n    clear() {\n        this.processRecords();\n        this.queue.length = 0;\n        this.selectionChanged = false;\n    }\n    // Chrome Android, especially in combination with GBoard, not only\n    // doesn't reliably fire regular key events, but also often\n    // surrounds the effect of enter or backspace with a bunch of\n    // composition events that, when interrupted, cause text duplication\n    // or other kinds of corruption. This hack makes the editor back off\n    // from handling DOM changes for a moment when such a key is\n    // detected (via beforeinput or keydown), and then tries to flush\n    // them or, if that has no effect, dispatches the given key.\n    delayAndroidKey(key, keyCode) {\n        var _a;\n        if (!this.delayedAndroidKey) {\n            let flush = () => {\n                let key = this.delayedAndroidKey;\n                if (key) {\n                    this.clearDelayedAndroidKey();\n                    this.view.inputState.lastKeyCode = key.keyCode;\n                    this.view.inputState.lastKeyTime = Date.now();\n                    let flushed = this.flush();\n                    if (!flushed && key.force)\n                        dispatchKey(this.dom, key.key, key.keyCode);\n                }\n            };\n            this.flushingAndroidKey = this.view.win.requestAnimationFrame(flush);\n        }\n        // Since backspace beforeinput is sometimes signalled spuriously,\n        // Enter always takes precedence.\n        if (!this.delayedAndroidKey || key == \"Enter\")\n            this.delayedAndroidKey = {\n                key, keyCode,\n                // Only run the key handler when no changes are detected if\n                // this isn't coming right after another change, in which case\n                // it is probably part of a weird chain of updates, and should\n                // be ignored if it returns the DOM to its previous state.\n                force: this.lastChange < Date.now() - 50 || !!((_a = this.delayedAndroidKey) === null || _a === void 0 ? void 0 : _a.force)\n            };\n    }\n    clearDelayedAndroidKey() {\n        this.win.cancelAnimationFrame(this.flushingAndroidKey);\n        this.delayedAndroidKey = null;\n        this.flushingAndroidKey = -1;\n    }\n    flushSoon() {\n        if (this.delayedFlush < 0)\n            this.delayedFlush = this.view.win.requestAnimationFrame(() => { this.delayedFlush = -1; this.flush(); });\n    }\n    forceFlush() {\n        if (this.delayedFlush >= 0) {\n            this.view.win.cancelAnimationFrame(this.delayedFlush);\n            this.delayedFlush = -1;\n        }\n        this.flush();\n    }\n    pendingRecords() {\n        for (let mut of this.observer.takeRecords())\n            this.queue.push(mut);\n        return this.queue;\n    }\n    processRecords() {\n        let records = this.pendingRecords();\n        if (records.length)\n            this.queue = [];\n        let from = -1, to = -1, typeOver = false;\n        for (let record of records) {\n            let range = this.readMutation(record);\n            if (!range)\n                continue;\n            if (range.typeOver)\n                typeOver = true;\n            if (from == -1) {\n                ({ from, to } = range);\n            }\n            else {\n                from = Math.min(range.from, from);\n                to = Math.max(range.to, to);\n            }\n        }\n        return { from, to, typeOver };\n    }\n    readChange() {\n        let { from, to, typeOver } = this.processRecords();\n        let newSel = this.selectionChanged && hasSelection(this.dom, this.selectionRange);\n        if (from < 0 && !newSel)\n            return null;\n        if (from > -1)\n            this.lastChange = Date.now();\n        this.view.inputState.lastFocusTime = 0;\n        this.selectionChanged = false;\n        let change = new DOMChange(this.view, from, to, typeOver);\n        this.view.docView.domChanged = { newSel: change.newSel ? change.newSel.main : null };\n        return change;\n    }\n    // Apply pending changes, if any\n    flush(readSelection = true) {\n        // Completely hold off flushing when pending keys are set—the code\n        // managing those will make sure processRecords is called and the\n        // view is resynchronized after\n        if (this.delayedFlush >= 0 || this.delayedAndroidKey)\n            return false;\n        if (readSelection)\n            this.readSelectionRange();\n        let domChange = this.readChange();\n        if (!domChange) {\n            this.view.requestMeasure();\n            return false;\n        }\n        let startState = this.view.state;\n        let handled = applyDOMChange(this.view, domChange);\n        // The view wasn't updated but DOM/selection changes were seen. Reset the view.\n        if (this.view.state == startState &&\n            (domChange.domChanged || domChange.newSel && !domChange.newSel.main.eq(this.view.state.selection.main)))\n            this.view.update([]);\n        return handled;\n    }\n    readMutation(rec) {\n        let cView = this.view.docView.nearest(rec.target);\n        if (!cView || cView.ignoreMutation(rec))\n            return null;\n        cView.markDirty(rec.type == \"attributes\");\n        if (rec.type == \"attributes\")\n            cView.flags |= 4 /* ViewFlag.AttrsDirty */;\n        if (rec.type == \"childList\") {\n            let childBefore = findChild(cView, rec.previousSibling || rec.target.previousSibling, -1);\n            let childAfter = findChild(cView, rec.nextSibling || rec.target.nextSibling, 1);\n            return { from: childBefore ? cView.posAfter(childBefore) : cView.posAtStart,\n                to: childAfter ? cView.posBefore(childAfter) : cView.posAtEnd, typeOver: false };\n        }\n        else if (rec.type == \"characterData\") {\n            return { from: cView.posAtStart, to: cView.posAtEnd, typeOver: rec.target.nodeValue == rec.oldValue };\n        }\n        else {\n            return null;\n        }\n    }\n    setWindow(win) {\n        if (win != this.win) {\n            this.removeWindowListeners(this.win);\n            this.win = win;\n            this.addWindowListeners(this.win);\n        }\n    }\n    addWindowListeners(win) {\n        win.addEventListener(\"resize\", this.onResize);\n        if (this.printQuery) {\n            if (this.printQuery.addEventListener)\n                this.printQuery.addEventListener(\"change\", this.onPrint);\n            else\n                this.printQuery.addListener(this.onPrint);\n        }\n        else\n            win.addEventListener(\"beforeprint\", this.onPrint);\n        win.addEventListener(\"scroll\", this.onScroll);\n        win.document.addEventListener(\"selectionchange\", this.onSelectionChange);\n    }\n    removeWindowListeners(win) {\n        win.removeEventListener(\"scroll\", this.onScroll);\n        win.removeEventListener(\"resize\", this.onResize);\n        if (this.printQuery) {\n            if (this.printQuery.removeEventListener)\n                this.printQuery.removeEventListener(\"change\", this.onPrint);\n            else\n                this.printQuery.removeListener(this.onPrint);\n        }\n        else\n            win.removeEventListener(\"beforeprint\", this.onPrint);\n        win.document.removeEventListener(\"selectionchange\", this.onSelectionChange);\n    }\n    update(update) {\n        if (this.editContext) {\n            this.editContext.update(update);\n            if (update.startState.facet(editable) != update.state.facet(editable))\n                update.view.contentDOM.editContext = update.state.facet(editable) ? this.editContext.editContext : null;\n        }\n    }\n    destroy() {\n        var _a, _b, _c;\n        this.stop();\n        (_a = this.intersection) === null || _a === void 0 ? void 0 : _a.disconnect();\n        (_b = this.gapIntersection) === null || _b === void 0 ? void 0 : _b.disconnect();\n        (_c = this.resizeScroll) === null || _c === void 0 ? void 0 : _c.disconnect();\n        for (let dom of this.scrollTargets)\n            dom.removeEventListener(\"scroll\", this.onScroll);\n        this.removeWindowListeners(this.win);\n        clearTimeout(this.parentCheck);\n        clearTimeout(this.resizeTimeout);\n        this.win.cancelAnimationFrame(this.delayedFlush);\n        this.win.cancelAnimationFrame(this.flushingAndroidKey);\n        if (this.editContext) {\n            this.view.contentDOM.editContext = null;\n            this.editContext.destroy();\n        }\n    }\n}\nfunction findChild(cView, dom, dir) {\n    while (dom) {\n        let curView = ContentView.get(dom);\n        if (curView && curView.parent == cView)\n            return curView;\n        let parent = dom.parentNode;\n        dom = parent != cView.dom ? parent : dir > 0 ? dom.nextSibling : dom.previousSibling;\n    }\n    return null;\n}\nfunction buildSelectionRangeFromRange(view, range) {\n    let anchorNode = range.startContainer, anchorOffset = range.startOffset;\n    let focusNode = range.endContainer, focusOffset = range.endOffset;\n    let curAnchor = view.docView.domAtPos(view.state.selection.main.anchor);\n    // Since such a range doesn't distinguish between anchor and head,\n    // use a heuristic that flips it around if its end matches the\n    // current anchor.\n    if (isEquivalentPosition(curAnchor.node, curAnchor.offset, focusNode, focusOffset))\n        [anchorNode, anchorOffset, focusNode, focusOffset] = [focusNode, focusOffset, anchorNode, anchorOffset];\n    return { anchorNode, anchorOffset, focusNode, focusOffset };\n}\n// Used to work around a Safari Selection/shadow DOM bug (#414)\nfunction safariSelectionRangeHack(view, selection) {\n    if (selection.getComposedRanges) {\n        let range = selection.getComposedRanges(view.root)[0];\n        if (range)\n            return buildSelectionRangeFromRange(view, range);\n    }\n    let found = null;\n    // Because Safari (at least in 2018-2021) doesn't provide regular\n    // access to the selection inside a shadowroot, we have to perform a\n    // ridiculous hack to get at it—using `execCommand` to trigger a\n    // `beforeInput` event so that we can read the target range from the\n    // event.\n    function read(event) {\n        event.preventDefault();\n        event.stopImmediatePropagation();\n        found = event.getTargetRanges()[0];\n    }\n    view.contentDOM.addEventListener(\"beforeinput\", read, true);\n    view.dom.ownerDocument.execCommand(\"indent\");\n    view.contentDOM.removeEventListener(\"beforeinput\", read, true);\n    return found ? buildSelectionRangeFromRange(view, found) : null;\n}\nclass EditContextManager {\n    constructor(view) {\n        // The document window for which the text in the context is\n        // maintained. For large documents, this may be smaller than the\n        // editor document. This window always includes the selection head.\n        this.from = 0;\n        this.to = 0;\n        // When applying a transaction, this is used to compare the change\n        // made to the context content to the change in the transaction in\n        // order to make the minimal changes to the context (since touching\n        // that sometimes breaks series of multiple edits made for a single\n        // user action on some Android keyboards)\n        this.pendingContextChange = null;\n        this.handlers = Object.create(null);\n        // Kludge to work around the fact that EditContext does not respond\n        // well to having its content updated during a composition (see #1472)\n        this.composing = null;\n        this.resetRange(view.state);\n        let context = this.editContext = new window.EditContext({\n            text: view.state.doc.sliceString(this.from, this.to),\n            selectionStart: this.toContextPos(Math.max(this.from, Math.min(this.to, view.state.selection.main.anchor))),\n            selectionEnd: this.toContextPos(view.state.selection.main.head)\n        });\n        this.handlers.textupdate = e => {\n            let main = view.state.selection.main, { anchor, head } = main;\n            let from = this.toEditorPos(e.updateRangeStart), to = this.toEditorPos(e.updateRangeEnd);\n            if (view.inputState.composing >= 0 && !this.composing)\n                this.composing = { contextBase: e.updateRangeStart, editorBase: from, drifted: false };\n            let change = { from, to, insert: Text.of(e.text.split(\"\\n\")) };\n            // If the window doesn't include the anchor, assume changes\n            // adjacent to a side go up to the anchor.\n            if (change.from == this.from && anchor < this.from)\n                change.from = anchor;\n            else if (change.to == this.to && anchor > this.to)\n                change.to = anchor;\n            // Edit contexts sometimes fire empty changes\n            if (change.from == change.to && !change.insert.length) {\n                let newSel = EditorSelection.single(this.toEditorPos(e.selectionStart), this.toEditorPos(e.selectionEnd));\n                if (!newSel.main.eq(main))\n                    view.dispatch({ selection: newSel, userEvent: \"select\" });\n                return;\n            }\n            if ((browser.mac || browser.android) && change.from == head - 1 &&\n                /^\\. ?$/.test(e.text) && view.contentDOM.getAttribute(\"autocorrect\") == \"off\")\n                change = { from, to, insert: Text.of([e.text.replace(\".\", \" \")]) };\n            this.pendingContextChange = change;\n            if (!view.state.readOnly) {\n                let newLen = this.to - this.from + (change.to - change.from + change.insert.length);\n                applyDOMChangeInner(view, change, EditorSelection.single(this.toEditorPos(e.selectionStart, newLen), this.toEditorPos(e.selectionEnd, newLen)));\n            }\n            // If the transaction didn't flush our change, revert it so\n            // that the context is in sync with the editor state again.\n            if (this.pendingContextChange) {\n                this.revertPending(view.state);\n                this.setSelection(view.state);\n            }\n        };\n        this.handlers.characterboundsupdate = e => {\n            let rects = [], prev = null;\n            for (let i = this.toEditorPos(e.rangeStart), end = this.toEditorPos(e.rangeEnd); i < end; i++) {\n                let rect = view.coordsForChar(i);\n                prev = (rect && new DOMRect(rect.left, rect.top, rect.right - rect.left, rect.bottom - rect.top))\n                    || prev || new DOMRect;\n                rects.push(prev);\n            }\n            context.updateCharacterBounds(e.rangeStart, rects);\n        };\n        this.handlers.textformatupdate = e => {\n            let deco = [];\n            for (let format of e.getTextFormats()) {\n                let lineStyle = format.underlineStyle, thickness = format.underlineThickness;\n                if (lineStyle != \"None\" && thickness != \"None\") {\n                    let from = this.toEditorPos(format.rangeStart), to = this.toEditorPos(format.rangeEnd);\n                    if (from < to) {\n                        let style = `text-decoration: underline ${lineStyle == \"Dashed\" ? \"dashed \" : lineStyle == \"Squiggle\" ? \"wavy \" : \"\"}${thickness == \"Thin\" ? 1 : 2}px`;\n                        deco.push(Decoration.mark({ attributes: { style } }).range(from, to));\n                    }\n                }\n            }\n            view.dispatch({ effects: setEditContextFormatting.of(Decoration.set(deco)) });\n        };\n        this.handlers.compositionstart = () => {\n            if (view.inputState.composing < 0) {\n                view.inputState.composing = 0;\n                view.inputState.compositionFirstChange = true;\n            }\n        };\n        this.handlers.compositionend = () => {\n            view.inputState.composing = -1;\n            view.inputState.compositionFirstChange = null;\n            if (this.composing) {\n                let { drifted } = this.composing;\n                this.composing = null;\n                if (drifted)\n                    this.reset(view.state);\n            }\n        };\n        for (let event in this.handlers)\n            context.addEventListener(event, this.handlers[event]);\n        this.measureReq = { read: view => {\n                this.editContext.updateControlBounds(view.contentDOM.getBoundingClientRect());\n                let sel = getSelection(view.root);\n                if (sel && sel.rangeCount)\n                    this.editContext.updateSelectionBounds(sel.getRangeAt(0).getBoundingClientRect());\n            } };\n    }\n    applyEdits(update) {\n        let off = 0, abort = false, pending = this.pendingContextChange;\n        update.changes.iterChanges((fromA, toA, _fromB, _toB, insert) => {\n            if (abort)\n                return;\n            let dLen = insert.length - (toA - fromA);\n            if (pending && toA >= pending.to) {\n                if (pending.from == fromA && pending.to == toA && pending.insert.eq(insert)) {\n                    pending = this.pendingContextChange = null; // Match\n                    off += dLen;\n                    this.to += dLen;\n                    return;\n                }\n                else { // Mismatch, revert\n                    pending = null;\n                    this.revertPending(update.state);\n                }\n            }\n            fromA += off;\n            toA += off;\n            if (toA <= this.from) { // Before the window\n                this.from += dLen;\n                this.to += dLen;\n            }\n            else if (fromA < this.to) { // Overlaps with window\n                if (fromA < this.from || toA > this.to || (this.to - this.from) + insert.length > 30000 /* CxVp.MaxSize */) {\n                    abort = true;\n                    return;\n                }\n                this.editContext.updateText(this.toContextPos(fromA), this.toContextPos(toA), insert.toString());\n                this.to += dLen;\n            }\n            off += dLen;\n        });\n        if (pending && !abort)\n            this.revertPending(update.state);\n        return !abort;\n    }\n    update(update) {\n        let reverted = this.pendingContextChange, startSel = update.startState.selection.main;\n        if (this.composing &&\n            (this.composing.drifted ||\n                (!update.changes.touchesRange(startSel.from, startSel.to) &&\n                    update.transactions.some(tr => !tr.isUserEvent(\"input.type\") && tr.changes.touchesRange(this.from, this.to))))) {\n            this.composing.drifted = true;\n            this.composing.editorBase = update.changes.mapPos(this.composing.editorBase);\n        }\n        else if (!this.applyEdits(update) || !this.rangeIsValid(update.state)) {\n            this.pendingContextChange = null;\n            this.reset(update.state);\n        }\n        else if (update.docChanged || update.selectionSet || reverted) {\n            this.setSelection(update.state);\n        }\n        if (update.geometryChanged || update.docChanged || update.selectionSet)\n            update.view.requestMeasure(this.measureReq);\n    }\n    resetRange(state) {\n        let { head } = state.selection.main;\n        this.from = Math.max(0, head - 10000 /* CxVp.Margin */);\n        this.to = Math.min(state.doc.length, head + 10000 /* CxVp.Margin */);\n    }\n    reset(state) {\n        this.resetRange(state);\n        this.editContext.updateText(0, this.editContext.text.length, state.doc.sliceString(this.from, this.to));\n        this.setSelection(state);\n    }\n    revertPending(state) {\n        let pending = this.pendingContextChange;\n        this.pendingContextChange = null;\n        this.editContext.updateText(this.toContextPos(pending.from), this.toContextPos(pending.from + pending.insert.length), state.doc.sliceString(pending.from, pending.to));\n    }\n    setSelection(state) {\n        let { main } = state.selection;\n        let start = this.toContextPos(Math.max(this.from, Math.min(this.to, main.anchor)));\n        let end = this.toContextPos(main.head);\n        if (this.editContext.selectionStart != start || this.editContext.selectionEnd != end)\n            this.editContext.updateSelection(start, end);\n    }\n    rangeIsValid(state) {\n        let { head } = state.selection.main;\n        return !(this.from > 0 && head - this.from < 500 /* CxVp.MinMargin */ ||\n            this.to < state.doc.length && this.to - head < 500 /* CxVp.MinMargin */ ||\n            this.to - this.from > 10000 /* CxVp.Margin */ * 3);\n    }\n    toEditorPos(contextPos, clipLen = this.to - this.from) {\n        contextPos = Math.min(contextPos, clipLen);\n        let c = this.composing;\n        return c && c.drifted ? c.editorBase + (contextPos - c.contextBase) : contextPos + this.from;\n    }\n    toContextPos(editorPos) {\n        let c = this.composing;\n        return c && c.drifted ? c.contextBase + (editorPos - c.editorBase) : editorPos - this.from;\n    }\n    destroy() {\n        for (let event in this.handlers)\n            this.editContext.removeEventListener(event, this.handlers[event]);\n    }\n}\n\n// The editor's update state machine looks something like this:\n//\n//     Idle → Updating ⇆ Idle (unchecked) → Measuring → Idle\n//                                         ↑      ↓\n//                                         Updating (measure)\n//\n// The difference between 'Idle' and 'Idle (unchecked)' lies in\n// whether a layout check has been scheduled. A regular update through\n// the `update` method updates the DOM in a write-only fashion, and\n// relies on a check (scheduled with `requestAnimationFrame`) to make\n// sure everything is where it should be and the viewport covers the\n// visible code. That check continues to measure and then optionally\n// update until it reaches a coherent state.\n/**\nAn editor view represents the editor's user interface. It holds\nthe editable DOM surface, and possibly other elements such as the\nline number gutter. It handles events and dispatches state\ntransactions for editing actions.\n*/\nclass EditorView {\n    /**\n    The current editor state.\n    */\n    get state() { return this.viewState.state; }\n    /**\n    To be able to display large documents without consuming too much\n    memory or overloading the browser, CodeMirror only draws the\n    code that is visible (plus a margin around it) to the DOM. This\n    property tells you the extent of the current drawn viewport, in\n    document positions.\n    */\n    get viewport() { return this.viewState.viewport; }\n    /**\n    When there are, for example, large collapsed ranges in the\n    viewport, its size can be a lot bigger than the actual visible\n    content. Thus, if you are doing something like styling the\n    content in the viewport, it is preferable to only do so for\n    these ranges, which are the subset of the viewport that is\n    actually drawn.\n    */\n    get visibleRanges() { return this.viewState.visibleRanges; }\n    /**\n    Returns false when the editor is entirely scrolled out of view\n    or otherwise hidden.\n    */\n    get inView() { return this.viewState.inView; }\n    /**\n    Indicates whether the user is currently composing text via\n    [IME](https://en.wikipedia.org/wiki/Input_method), and at least\n    one change has been made in the current composition.\n    */\n    get composing() { return !!this.inputState && this.inputState.composing > 0; }\n    /**\n    Indicates whether the user is currently in composing state. Note\n    that on some platforms, like Android, this will be the case a\n    lot, since just putting the cursor on a word starts a\n    composition there.\n    */\n    get compositionStarted() { return !!this.inputState && this.inputState.composing >= 0; }\n    /**\n    The document or shadow root that the view lives in.\n    */\n    get root() { return this._root; }\n    /**\n    @internal\n    */\n    get win() { return this.dom.ownerDocument.defaultView || window; }\n    /**\n    Construct a new view. You'll want to either provide a `parent`\n    option, or put `view.dom` into your document after creating a\n    view, so that the user can see the editor.\n    */\n    constructor(config = {}) {\n        var _a;\n        this.plugins = [];\n        this.pluginMap = new Map;\n        this.editorAttrs = {};\n        this.contentAttrs = {};\n        this.bidiCache = [];\n        this.destroyed = false;\n        /**\n        @internal\n        */\n        this.updateState = 2 /* UpdateState.Updating */;\n        /**\n        @internal\n        */\n        this.measureScheduled = -1;\n        /**\n        @internal\n        */\n        this.measureRequests = [];\n        this.contentDOM = document.createElement(\"div\");\n        this.scrollDOM = document.createElement(\"div\");\n        this.scrollDOM.tabIndex = -1;\n        this.scrollDOM.className = \"cm-scroller\";\n        this.scrollDOM.appendChild(this.contentDOM);\n        this.announceDOM = document.createElement(\"div\");\n        this.announceDOM.className = \"cm-announced\";\n        this.announceDOM.setAttribute(\"aria-live\", \"polite\");\n        this.dom = document.createElement(\"div\");\n        this.dom.appendChild(this.announceDOM);\n        this.dom.appendChild(this.scrollDOM);\n        if (config.parent)\n            config.parent.appendChild(this.dom);\n        let { dispatch } = config;\n        this.dispatchTransactions = config.dispatchTransactions ||\n            (dispatch && ((trs) => trs.forEach(tr => dispatch(tr, this)))) ||\n            ((trs) => this.update(trs));\n        this.dispatch = this.dispatch.bind(this);\n        this._root = (config.root || getRoot(config.parent) || document);\n        this.viewState = new ViewState(config.state || EditorState.create(config));\n        if (config.scrollTo && config.scrollTo.is(scrollIntoView))\n            this.viewState.scrollTarget = config.scrollTo.value.clip(this.viewState.state);\n        this.plugins = this.state.facet(viewPlugin).map(spec => new PluginInstance(spec));\n        for (let plugin of this.plugins)\n            plugin.update(this);\n        this.observer = new DOMObserver(this);\n        this.inputState = new InputState(this);\n        this.inputState.ensureHandlers(this.plugins);\n        this.docView = new DocView(this);\n        this.mountStyles();\n        this.updateAttrs();\n        this.updateState = 0 /* UpdateState.Idle */;\n        this.requestMeasure();\n        if ((_a = document.fonts) === null || _a === void 0 ? void 0 : _a.ready)\n            document.fonts.ready.then(() => this.requestMeasure());\n    }\n    dispatch(...input) {\n        let trs = input.length == 1 && input[0] instanceof Transaction ? input\n            : input.length == 1 && Array.isArray(input[0]) ? input[0]\n                : [this.state.update(...input)];\n        this.dispatchTransactions(trs, this);\n    }\n    /**\n    Update the view for the given array of transactions. This will\n    update the visible document and selection to match the state\n    produced by the transactions, and notify view plugins of the\n    change. You should usually call\n    [`dispatch`](https://codemirror.net/6/docs/ref/#view.EditorView.dispatch) instead, which uses this\n    as a primitive.\n    */\n    update(transactions) {\n        if (this.updateState != 0 /* UpdateState.Idle */)\n            throw new Error(\"Calls to EditorView.update are not allowed while an update is in progress\");\n        let redrawn = false, attrsChanged = false, update;\n        let state = this.state;\n        for (let tr of transactions) {\n            if (tr.startState != state)\n                throw new RangeError(\"Trying to update state with a transaction that doesn't start from the previous state.\");\n            state = tr.state;\n        }\n        if (this.destroyed) {\n            this.viewState.state = state;\n            return;\n        }\n        let focus = this.hasFocus, focusFlag = 0, dispatchFocus = null;\n        if (transactions.some(tr => tr.annotation(isFocusChange))) {\n            this.inputState.notifiedFocused = focus;\n            // If a focus-change transaction is being dispatched, set this update flag.\n            focusFlag = 1 /* UpdateFlag.Focus */;\n        }\n        else if (focus != this.inputState.notifiedFocused) {\n            this.inputState.notifiedFocused = focus;\n            // Schedule a separate focus transaction if necessary, otherwise\n            // add a flag to this update\n            dispatchFocus = focusChangeTransaction(state, focus);\n            if (!dispatchFocus)\n                focusFlag = 1 /* UpdateFlag.Focus */;\n        }\n        // If there was a pending DOM change, eagerly read it and try to\n        // apply it after the given transactions.\n        let pendingKey = this.observer.delayedAndroidKey, domChange = null;\n        if (pendingKey) {\n            this.observer.clearDelayedAndroidKey();\n            domChange = this.observer.readChange();\n            // Only try to apply DOM changes if the transactions didn't\n            // change the doc or selection.\n            if (domChange && !this.state.doc.eq(state.doc) || !this.state.selection.eq(state.selection))\n                domChange = null;\n        }\n        else {\n            this.observer.clear();\n        }\n        // When the phrases change, redraw the editor\n        if (state.facet(EditorState.phrases) != this.state.facet(EditorState.phrases))\n            return this.setState(state);\n        update = ViewUpdate.create(this, state, transactions);\n        update.flags |= focusFlag;\n        let scrollTarget = this.viewState.scrollTarget;\n        try {\n            this.updateState = 2 /* UpdateState.Updating */;\n            for (let tr of transactions) {\n                if (scrollTarget)\n                    scrollTarget = scrollTarget.map(tr.changes);\n                if (tr.scrollIntoView) {\n                    let { main } = tr.state.selection;\n                    scrollTarget = new ScrollTarget(main.empty ? main : EditorSelection.cursor(main.head, main.head > main.anchor ? -1 : 1));\n                }\n                for (let e of tr.effects)\n                    if (e.is(scrollIntoView))\n                        scrollTarget = e.value.clip(this.state);\n            }\n            this.viewState.update(update, scrollTarget);\n            this.bidiCache = CachedOrder.update(this.bidiCache, update.changes);\n            if (!update.empty) {\n                this.updatePlugins(update);\n                this.inputState.update(update);\n            }\n            redrawn = this.docView.update(update);\n            if (this.state.facet(styleModule) != this.styleModules)\n                this.mountStyles();\n            attrsChanged = this.updateAttrs();\n            this.showAnnouncements(transactions);\n            this.docView.updateSelection(redrawn, transactions.some(tr => tr.isUserEvent(\"select.pointer\")));\n        }\n        finally {\n            this.updateState = 0 /* UpdateState.Idle */;\n        }\n        if (update.startState.facet(theme) != update.state.facet(theme))\n            this.viewState.mustMeasureContent = true;\n        if (redrawn || attrsChanged || scrollTarget || this.viewState.mustEnforceCursorAssoc || this.viewState.mustMeasureContent)\n            this.requestMeasure();\n        if (redrawn)\n            this.docViewUpdate();\n        if (!update.empty)\n            for (let listener of this.state.facet(updateListener)) {\n                try {\n                    listener(update);\n                }\n                catch (e) {\n                    logException(this.state, e, \"update listener\");\n                }\n            }\n        if (dispatchFocus || domChange)\n            Promise.resolve().then(() => {\n                if (dispatchFocus && this.state == dispatchFocus.startState)\n                    this.dispatch(dispatchFocus);\n                if (domChange) {\n                    if (!applyDOMChange(this, domChange) && pendingKey.force)\n                        dispatchKey(this.contentDOM, pendingKey.key, pendingKey.keyCode);\n                }\n            });\n    }\n    /**\n    Reset the view to the given state. (This will cause the entire\n    document to be redrawn and all view plugins to be reinitialized,\n    so you should probably only use it when the new state isn't\n    derived from the old state. Otherwise, use\n    [`dispatch`](https://codemirror.net/6/docs/ref/#view.EditorView.dispatch) instead.)\n    */\n    setState(newState) {\n        if (this.updateState != 0 /* UpdateState.Idle */)\n            throw new Error(\"Calls to EditorView.setState are not allowed while an update is in progress\");\n        if (this.destroyed) {\n            this.viewState.state = newState;\n            return;\n        }\n        this.updateState = 2 /* UpdateState.Updating */;\n        let hadFocus = this.hasFocus;\n        try {\n            for (let plugin of this.plugins)\n                plugin.destroy(this);\n            this.viewState = new ViewState(newState);\n            this.plugins = newState.facet(viewPlugin).map(spec => new PluginInstance(spec));\n            this.pluginMap.clear();\n            for (let plugin of this.plugins)\n                plugin.update(this);\n            this.docView.destroy();\n            this.docView = new DocView(this);\n            this.inputState.ensureHandlers(this.plugins);\n            this.mountStyles();\n            this.updateAttrs();\n            this.bidiCache = [];\n        }\n        finally {\n            this.updateState = 0 /* UpdateState.Idle */;\n        }\n        if (hadFocus)\n            this.focus();\n        this.requestMeasure();\n    }\n    updatePlugins(update) {\n        let prevSpecs = update.startState.facet(viewPlugin), specs = update.state.facet(viewPlugin);\n        if (prevSpecs != specs) {\n            let newPlugins = [];\n            for (let spec of specs) {\n                let found = prevSpecs.indexOf(spec);\n                if (found < 0) {\n                    newPlugins.push(new PluginInstance(spec));\n                }\n                else {\n                    let plugin = this.plugins[found];\n                    plugin.mustUpdate = update;\n                    newPlugins.push(plugin);\n                }\n            }\n            for (let plugin of this.plugins)\n                if (plugin.mustUpdate != update)\n                    plugin.destroy(this);\n            this.plugins = newPlugins;\n            this.pluginMap.clear();\n        }\n        else {\n            for (let p of this.plugins)\n                p.mustUpdate = update;\n        }\n        for (let i = 0; i < this.plugins.length; i++)\n            this.plugins[i].update(this);\n        if (prevSpecs != specs)\n            this.inputState.ensureHandlers(this.plugins);\n    }\n    docViewUpdate() {\n        for (let plugin of this.plugins) {\n            let val = plugin.value;\n            if (val && val.docViewUpdate) {\n                try {\n                    val.docViewUpdate(this);\n                }\n                catch (e) {\n                    logException(this.state, e, \"doc view update listener\");\n                }\n            }\n        }\n    }\n    /**\n    @internal\n    */\n    measure(flush = true) {\n        if (this.destroyed)\n            return;\n        if (this.measureScheduled > -1)\n            this.win.cancelAnimationFrame(this.measureScheduled);\n        if (this.observer.delayedAndroidKey) {\n            this.measureScheduled = -1;\n            this.requestMeasure();\n            return;\n        }\n        this.measureScheduled = 0; // Prevent requestMeasure calls from scheduling another animation frame\n        if (flush)\n            this.observer.forceFlush();\n        let updated = null;\n        let sDOM = this.scrollDOM, scrollTop = sDOM.scrollTop * this.scaleY;\n        let { scrollAnchorPos, scrollAnchorHeight } = this.viewState;\n        if (Math.abs(scrollTop - this.viewState.scrollTop) > 1)\n            scrollAnchorHeight = -1;\n        this.viewState.scrollAnchorHeight = -1;\n        try {\n            for (let i = 0;; i++) {\n                if (scrollAnchorHeight < 0) {\n                    if (isScrolledToBottom(sDOM)) {\n                        scrollAnchorPos = -1;\n                        scrollAnchorHeight = this.viewState.heightMap.height;\n                    }\n                    else {\n                        let block = this.viewState.scrollAnchorAt(scrollTop);\n                        scrollAnchorPos = block.from;\n                        scrollAnchorHeight = block.top;\n                    }\n                }\n                this.updateState = 1 /* UpdateState.Measuring */;\n                let changed = this.viewState.measure(this);\n                if (!changed && !this.measureRequests.length && this.viewState.scrollTarget == null)\n                    break;\n                if (i > 5) {\n                    console.warn(this.measureRequests.length\n                        ? \"Measure loop restarted more than 5 times\"\n                        : \"Viewport failed to stabilize\");\n                    break;\n                }\n                let measuring = [];\n                // Only run measure requests in this cycle when the viewport didn't change\n                if (!(changed & 4 /* UpdateFlag.Viewport */))\n                    [this.measureRequests, measuring] = [measuring, this.measureRequests];\n                let measured = measuring.map(m => {\n                    try {\n                        return m.read(this);\n                    }\n                    catch (e) {\n                        logException(this.state, e);\n                        return BadMeasure;\n                    }\n                });\n                let update = ViewUpdate.create(this, this.state, []), redrawn = false;\n                update.flags |= changed;\n                if (!updated)\n                    updated = update;\n                else\n                    updated.flags |= changed;\n                this.updateState = 2 /* UpdateState.Updating */;\n                if (!update.empty) {\n                    this.updatePlugins(update);\n                    this.inputState.update(update);\n                    this.updateAttrs();\n                    redrawn = this.docView.update(update);\n                    if (redrawn)\n                        this.docViewUpdate();\n                }\n                for (let i = 0; i < measuring.length; i++)\n                    if (measured[i] != BadMeasure) {\n                        try {\n                            let m = measuring[i];\n                            if (m.write)\n                                m.write(measured[i], this);\n                        }\n                        catch (e) {\n                            logException(this.state, e);\n                        }\n                    }\n                if (redrawn)\n                    this.docView.updateSelection(true);\n                if (!update.viewportChanged && this.measureRequests.length == 0) {\n                    if (this.viewState.editorHeight) {\n                        if (this.viewState.scrollTarget) {\n                            this.docView.scrollIntoView(this.viewState.scrollTarget);\n                            this.viewState.scrollTarget = null;\n                            scrollAnchorHeight = -1;\n                            continue;\n                        }\n                        else {\n                            let newAnchorHeight = scrollAnchorPos < 0 ? this.viewState.heightMap.height :\n                                this.viewState.lineBlockAt(scrollAnchorPos).top;\n                            let diff = newAnchorHeight - scrollAnchorHeight;\n                            if (diff > 1 || diff < -1) {\n                                scrollTop = scrollTop + diff;\n                                sDOM.scrollTop = scrollTop / this.scaleY;\n                                scrollAnchorHeight = -1;\n                                continue;\n                            }\n                        }\n                    }\n                    break;\n                }\n            }\n        }\n        finally {\n            this.updateState = 0 /* UpdateState.Idle */;\n            this.measureScheduled = -1;\n        }\n        if (updated && !updated.empty)\n            for (let listener of this.state.facet(updateListener))\n                listener(updated);\n    }\n    /**\n    Get the CSS classes for the currently active editor themes.\n    */\n    get themeClasses() {\n        return baseThemeID + \" \" +\n            (this.state.facet(darkTheme) ? baseDarkID : baseLightID) + \" \" +\n            this.state.facet(theme);\n    }\n    updateAttrs() {\n        let editorAttrs = attrsFromFacet(this, editorAttributes, {\n            class: \"cm-editor\" + (this.hasFocus ? \" cm-focused \" : \" \") + this.themeClasses\n        });\n        let contentAttrs = {\n            spellcheck: \"false\",\n            autocorrect: \"off\",\n            autocapitalize: \"off\",\n            writingsuggestions: \"false\",\n            translate: \"no\",\n            contenteditable: !this.state.facet(editable) ? \"false\" : \"true\",\n            class: \"cm-content\",\n            style: `${browser.tabSize}: ${this.state.tabSize}`,\n            role: \"textbox\",\n            \"aria-multiline\": \"true\"\n        };\n        if (this.state.readOnly)\n            contentAttrs[\"aria-readonly\"] = \"true\";\n        attrsFromFacet(this, contentAttributes, contentAttrs);\n        let changed = this.observer.ignore(() => {\n            let changedContent = updateAttrs(this.contentDOM, this.contentAttrs, contentAttrs);\n            let changedEditor = updateAttrs(this.dom, this.editorAttrs, editorAttrs);\n            return changedContent || changedEditor;\n        });\n        this.editorAttrs = editorAttrs;\n        this.contentAttrs = contentAttrs;\n        return changed;\n    }\n    showAnnouncements(trs) {\n        let first = true;\n        for (let tr of trs)\n            for (let effect of tr.effects)\n                if (effect.is(EditorView.announce)) {\n                    if (first)\n                        this.announceDOM.textContent = \"\";\n                    first = false;\n                    let div = this.announceDOM.appendChild(document.createElement(\"div\"));\n                    div.textContent = effect.value;\n                }\n    }\n    mountStyles() {\n        this.styleModules = this.state.facet(styleModule);\n        let nonce = this.state.facet(EditorView.cspNonce);\n        StyleModule.mount(this.root, this.styleModules.concat(baseTheme$1).reverse(), nonce ? { nonce } : undefined);\n    }\n    readMeasured() {\n        if (this.updateState == 2 /* UpdateState.Updating */)\n            throw new Error(\"Reading the editor layout isn't allowed during an update\");\n        if (this.updateState == 0 /* UpdateState.Idle */ && this.measureScheduled > -1)\n            this.measure(false);\n    }\n    /**\n    Schedule a layout measurement, optionally providing callbacks to\n    do custom DOM measuring followed by a DOM write phase. Using\n    this is preferable reading DOM layout directly from, for\n    example, an event handler, because it'll make sure measuring and\n    drawing done by other components is synchronized, avoiding\n    unnecessary DOM layout computations.\n    */\n    requestMeasure(request) {\n        if (this.measureScheduled < 0)\n            this.measureScheduled = this.win.requestAnimationFrame(() => this.measure());\n        if (request) {\n            if (this.measureRequests.indexOf(request) > -1)\n                return;\n            if (request.key != null)\n                for (let i = 0; i < this.measureRequests.length; i++) {\n                    if (this.measureRequests[i].key === request.key) {\n                        this.measureRequests[i] = request;\n                        return;\n                    }\n                }\n            this.measureRequests.push(request);\n        }\n    }\n    /**\n    Get the value of a specific plugin, if present. Note that\n    plugins that crash can be dropped from a view, so even when you\n    know you registered a given plugin, it is recommended to check\n    the return value of this method.\n    */\n    plugin(plugin) {\n        let known = this.pluginMap.get(plugin);\n        if (known === undefined || known && known.plugin != plugin)\n            this.pluginMap.set(plugin, known = this.plugins.find(p => p.plugin == plugin) || null);\n        return known && known.update(this).value;\n    }\n    /**\n    The top position of the document, in screen coordinates. This\n    may be negative when the editor is scrolled down. Points\n    directly to the top of the first line, not above the padding.\n    */\n    get documentTop() {\n        return this.contentDOM.getBoundingClientRect().top + this.viewState.paddingTop;\n    }\n    /**\n    Reports the padding above and below the document.\n    */\n    get documentPadding() {\n        return { top: this.viewState.paddingTop, bottom: this.viewState.paddingBottom };\n    }\n    /**\n    If the editor is transformed with CSS, this provides the scale\n    along the X axis. Otherwise, it will just be 1. Note that\n    transforms other than translation and scaling are not supported.\n    */\n    get scaleX() { return this.viewState.scaleX; }\n    /**\n    Provide the CSS transformed scale along the Y axis.\n    */\n    get scaleY() { return this.viewState.scaleY; }\n    /**\n    Find the text line or block widget at the given vertical\n    position (which is interpreted as relative to the [top of the\n    document](https://codemirror.net/6/docs/ref/#view.EditorView.documentTop)).\n    */\n    elementAtHeight(height) {\n        this.readMeasured();\n        return this.viewState.elementAtHeight(height);\n    }\n    /**\n    Find the line block (see\n    [`lineBlockAt`](https://codemirror.net/6/docs/ref/#view.EditorView.lineBlockAt) at the given\n    height, again interpreted relative to the [top of the\n    document](https://codemirror.net/6/docs/ref/#view.EditorView.documentTop).\n    */\n    lineBlockAtHeight(height) {\n        this.readMeasured();\n        return this.viewState.lineBlockAtHeight(height);\n    }\n    /**\n    Get the extent and vertical position of all [line\n    blocks](https://codemirror.net/6/docs/ref/#view.EditorView.lineBlockAt) in the viewport. Positions\n    are relative to the [top of the\n    document](https://codemirror.net/6/docs/ref/#view.EditorView.documentTop);\n    */\n    get viewportLineBlocks() {\n        return this.viewState.viewportLines;\n    }\n    /**\n    Find the line block around the given document position. A line\n    block is a range delimited on both sides by either a\n    non-[hidden](https://codemirror.net/6/docs/ref/#view.Decoration^replace) line break, or the\n    start/end of the document. It will usually just hold a line of\n    text, but may be broken into multiple textblocks by block\n    widgets.\n    */\n    lineBlockAt(pos) {\n        return this.viewState.lineBlockAt(pos);\n    }\n    /**\n    The editor's total content height.\n    */\n    get contentHeight() {\n        return this.viewState.contentHeight;\n    }\n    /**\n    Move a cursor position by [grapheme\n    cluster](https://codemirror.net/6/docs/ref/#state.findClusterBreak). `forward` determines whether\n    the motion is away from the line start, or towards it. In\n    bidirectional text, the line is traversed in visual order, using\n    the editor's [text direction](https://codemirror.net/6/docs/ref/#view.EditorView.textDirection).\n    When the start position was the last one on the line, the\n    returned position will be across the line break. If there is no\n    further line, the original position is returned.\n    \n    By default, this method moves over a single cluster. The\n    optional `by` argument can be used to move across more. It will\n    be called with the first cluster as argument, and should return\n    a predicate that determines, for each subsequent cluster,\n    whether it should also be moved over.\n    */\n    moveByChar(start, forward, by) {\n        return skipAtoms(this, start, moveByChar(this, start, forward, by));\n    }\n    /**\n    Move a cursor position across the next group of either\n    [letters](https://codemirror.net/6/docs/ref/#state.EditorState.charCategorizer) or non-letter\n    non-whitespace characters.\n    */\n    moveByGroup(start, forward) {\n        return skipAtoms(this, start, moveByChar(this, start, forward, initial => byGroup(this, start.head, initial)));\n    }\n    /**\n    Get the cursor position visually at the start or end of a line.\n    Note that this may differ from the _logical_ position at its\n    start or end (which is simply at `line.from`/`line.to`) if text\n    at the start or end goes against the line's base text direction.\n    */\n    visualLineSide(line, end) {\n        let order = this.bidiSpans(line), dir = this.textDirectionAt(line.from);\n        let span = order[end ? order.length - 1 : 0];\n        return EditorSelection.cursor(span.side(end, dir) + line.from, span.forward(!end, dir) ? 1 : -1);\n    }\n    /**\n    Move to the next line boundary in the given direction. If\n    `includeWrap` is true, line wrapping is on, and there is a\n    further wrap point on the current line, the wrap point will be\n    returned. Otherwise this function will return the start or end\n    of the line.\n    */\n    moveToLineBoundary(start, forward, includeWrap = true) {\n        return moveToLineBoundary(this, start, forward, includeWrap);\n    }\n    /**\n    Move a cursor position vertically. When `distance` isn't given,\n    it defaults to moving to the next line (including wrapped\n    lines). Otherwise, `distance` should provide a positive distance\n    in pixels.\n    \n    When `start` has a\n    [`goalColumn`](https://codemirror.net/6/docs/ref/#state.SelectionRange.goalColumn), the vertical\n    motion will use that as a target horizontal position. Otherwise,\n    the cursor's own horizontal position is used. The returned\n    cursor will have its goal column set to whichever column was\n    used.\n    */\n    moveVertically(start, forward, distance) {\n        return skipAtoms(this, start, moveVertically(this, start, forward, distance));\n    }\n    /**\n    Find the DOM parent node and offset (child offset if `node` is\n    an element, character offset when it is a text node) at the\n    given document position.\n    \n    Note that for positions that aren't currently in\n    `visibleRanges`, the resulting DOM position isn't necessarily\n    meaningful (it may just point before or after a placeholder\n    element).\n    */\n    domAtPos(pos) {\n        return this.docView.domAtPos(pos);\n    }\n    /**\n    Find the document position at the given DOM node. Can be useful\n    for associating positions with DOM events. Will raise an error\n    when `node` isn't part of the editor content.\n    */\n    posAtDOM(node, offset = 0) {\n        return this.docView.posFromDOM(node, offset);\n    }\n    posAtCoords(coords, precise = true) {\n        this.readMeasured();\n        return posAtCoords(this, coords, precise);\n    }\n    /**\n    Get the screen coordinates at the given document position.\n    `side` determines whether the coordinates are based on the\n    element before (-1) or after (1) the position (if no element is\n    available on the given side, the method will transparently use\n    another strategy to get reasonable coordinates).\n    */\n    coordsAtPos(pos, side = 1) {\n        this.readMeasured();\n        let rect = this.docView.coordsAt(pos, side);\n        if (!rect || rect.left == rect.right)\n            return rect;\n        let line = this.state.doc.lineAt(pos), order = this.bidiSpans(line);\n        let span = order[BidiSpan.find(order, pos - line.from, -1, side)];\n        return flattenRect(rect, (span.dir == Direction.LTR) == (side > 0));\n    }\n    /**\n    Return the rectangle around a given character. If `pos` does not\n    point in front of a character that is in the viewport and\n    rendered (i.e. not replaced, not a line break), this will return\n    null. For space characters that are a line wrap point, this will\n    return the position before the line break.\n    */\n    coordsForChar(pos) {\n        this.readMeasured();\n        return this.docView.coordsForChar(pos);\n    }\n    /**\n    The default width of a character in the editor. May not\n    accurately reflect the width of all characters (given variable\n    width fonts or styling of invididual ranges).\n    */\n    get defaultCharacterWidth() { return this.viewState.heightOracle.charWidth; }\n    /**\n    The default height of a line in the editor. May not be accurate\n    for all lines.\n    */\n    get defaultLineHeight() { return this.viewState.heightOracle.lineHeight; }\n    /**\n    The text direction\n    ([`direction`](https://developer.mozilla.org/en-US/docs/Web/CSS/direction)\n    CSS property) of the editor's content element.\n    */\n    get textDirection() { return this.viewState.defaultTextDirection; }\n    /**\n    Find the text direction of the block at the given position, as\n    assigned by CSS. If\n    [`perLineTextDirection`](https://codemirror.net/6/docs/ref/#view.EditorView^perLineTextDirection)\n    isn't enabled, or the given position is outside of the viewport,\n    this will always return the same as\n    [`textDirection`](https://codemirror.net/6/docs/ref/#view.EditorView.textDirection). Note that\n    this may trigger a DOM layout.\n    */\n    textDirectionAt(pos) {\n        let perLine = this.state.facet(perLineTextDirection);\n        if (!perLine || pos < this.viewport.from || pos > this.viewport.to)\n            return this.textDirection;\n        this.readMeasured();\n        return this.docView.textDirectionAt(pos);\n    }\n    /**\n    Whether this editor [wraps lines](https://codemirror.net/6/docs/ref/#view.EditorView.lineWrapping)\n    (as determined by the\n    [`white-space`](https://developer.mozilla.org/en-US/docs/Web/CSS/white-space)\n    CSS property of its content element).\n    */\n    get lineWrapping() { return this.viewState.heightOracle.lineWrapping; }\n    /**\n    Returns the bidirectional text structure of the given line\n    (which should be in the current document) as an array of span\n    objects. The order of these spans matches the [text\n    direction](https://codemirror.net/6/docs/ref/#view.EditorView.textDirection)—if that is\n    left-to-right, the leftmost spans come first, otherwise the\n    rightmost spans come first.\n    */\n    bidiSpans(line) {\n        if (line.length > MaxBidiLine)\n            return trivialOrder(line.length);\n        let dir = this.textDirectionAt(line.from), isolates;\n        for (let entry of this.bidiCache) {\n            if (entry.from == line.from && entry.dir == dir &&\n                (entry.fresh || isolatesEq(entry.isolates, isolates = getIsolatedRanges(this, line))))\n                return entry.order;\n        }\n        if (!isolates)\n            isolates = getIsolatedRanges(this, line);\n        let order = computeOrder(line.text, dir, isolates);\n        this.bidiCache.push(new CachedOrder(line.from, line.to, dir, isolates, true, order));\n        return order;\n    }\n    /**\n    Check whether the editor has focus.\n    */\n    get hasFocus() {\n        var _a;\n        // Safari return false for hasFocus when the context menu is open\n        // or closing, which leads us to ignore selection changes from the\n        // context menu because it looks like the editor isn't focused.\n        // This kludges around that.\n        return (this.dom.ownerDocument.hasFocus() || browser.safari && ((_a = this.inputState) === null || _a === void 0 ? void 0 : _a.lastContextMenu) > Date.now() - 3e4) &&\n            this.root.activeElement == this.contentDOM;\n    }\n    /**\n    Put focus on the editor.\n    */\n    focus() {\n        this.observer.ignore(() => {\n            focusPreventScroll(this.contentDOM);\n            this.docView.updateSelection();\n        });\n    }\n    /**\n    Update the [root](https://codemirror.net/6/docs/ref/##view.EditorViewConfig.root) in which the editor lives. This is only\n    necessary when moving the editor's existing DOM to a new window or shadow root.\n    */\n    setRoot(root) {\n        if (this._root != root) {\n            this._root = root;\n            this.observer.setWindow((root.nodeType == 9 ? root : root.ownerDocument).defaultView || window);\n            this.mountStyles();\n        }\n    }\n    /**\n    Clean up this editor view, removing its element from the\n    document, unregistering event handlers, and notifying\n    plugins. The view instance can no longer be used after\n    calling this.\n    */\n    destroy() {\n        if (this.root.activeElement == this.contentDOM)\n            this.contentDOM.blur();\n        for (let plugin of this.plugins)\n            plugin.destroy(this);\n        this.plugins = [];\n        this.inputState.destroy();\n        this.docView.destroy();\n        this.dom.remove();\n        this.observer.destroy();\n        if (this.measureScheduled > -1)\n            this.win.cancelAnimationFrame(this.measureScheduled);\n        this.destroyed = true;\n    }\n    /**\n    Returns an effect that can be\n    [added](https://codemirror.net/6/docs/ref/#state.TransactionSpec.effects) to a transaction to\n    cause it to scroll the given position or range into view.\n    */\n    static scrollIntoView(pos, options = {}) {\n        return scrollIntoView.of(new ScrollTarget(typeof pos == \"number\" ? EditorSelection.cursor(pos) : pos, options.y, options.x, options.yMargin, options.xMargin));\n    }\n    /**\n    Return an effect that resets the editor to its current (at the\n    time this method was called) scroll position. Note that this\n    only affects the editor's own scrollable element, not parents.\n    See also\n    [`EditorViewConfig.scrollTo`](https://codemirror.net/6/docs/ref/#view.EditorViewConfig.scrollTo).\n    \n    The effect should be used with a document identical to the one\n    it was created for. Failing to do so is not an error, but may\n    not scroll to the expected position. You can\n    [map](https://codemirror.net/6/docs/ref/#state.StateEffect.map) the effect to account for changes.\n    */\n    scrollSnapshot() {\n        let { scrollTop, scrollLeft } = this.scrollDOM;\n        let ref = this.viewState.scrollAnchorAt(scrollTop);\n        return scrollIntoView.of(new ScrollTarget(EditorSelection.cursor(ref.from), \"start\", \"start\", ref.top - scrollTop, scrollLeft, true));\n    }\n    /**\n    Enable or disable tab-focus mode, which disables key bindings\n    for Tab and Shift-Tab, letting the browser's default\n    focus-changing behavior go through instead. This is useful to\n    prevent trapping keyboard users in your editor.\n    \n    Without argument, this toggles the mode. With a boolean, it\n    enables (true) or disables it (false). Given a number, it\n    temporarily enables the mode until that number of milliseconds\n    have passed or another non-Tab key is pressed.\n    */\n    setTabFocusMode(to) {\n        if (to == null)\n            this.inputState.tabFocusMode = this.inputState.tabFocusMode < 0 ? 0 : -1;\n        else if (typeof to == \"boolean\")\n            this.inputState.tabFocusMode = to ? 0 : -1;\n        else if (this.inputState.tabFocusMode != 0)\n            this.inputState.tabFocusMode = Date.now() + to;\n    }\n    /**\n    Returns an extension that can be used to add DOM event handlers.\n    The value should be an object mapping event names to handler\n    functions. For any given event, such functions are ordered by\n    extension precedence, and the first handler to return true will\n    be assumed to have handled that event, and no other handlers or\n    built-in behavior will be activated for it. These are registered\n    on the [content element](https://codemirror.net/6/docs/ref/#view.EditorView.contentDOM), except\n    for `scroll` handlers, which will be called any time the\n    editor's [scroll element](https://codemirror.net/6/docs/ref/#view.EditorView.scrollDOM) or one of\n    its parent nodes is scrolled.\n    */\n    static domEventHandlers(handlers) {\n        return ViewPlugin.define(() => ({}), { eventHandlers: handlers });\n    }\n    /**\n    Create an extension that registers DOM event observers. Contrary\n    to event [handlers](https://codemirror.net/6/docs/ref/#view.EditorView^domEventHandlers),\n    observers can't be prevented from running by a higher-precedence\n    handler returning true. They also don't prevent other handlers\n    and observers from running when they return true, and should not\n    call `preventDefault`.\n    */\n    static domEventObservers(observers) {\n        return ViewPlugin.define(() => ({}), { eventObservers: observers });\n    }\n    /**\n    Create a theme extension. The first argument can be a\n    [`style-mod`](https://github.com/marijnh/style-mod#documentation)\n    style spec providing the styles for the theme. These will be\n    prefixed with a generated class for the style.\n    \n    Because the selectors will be prefixed with a scope class, rule\n    that directly match the editor's [wrapper\n    element](https://codemirror.net/6/docs/ref/#view.EditorView.dom)—to which the scope class will be\n    added—need to be explicitly differentiated by adding an `&` to\n    the selector for that element—for example\n    `&.cm-focused`.\n    \n    When `dark` is set to true, the theme will be marked as dark,\n    which will cause the `&dark` rules from [base\n    themes](https://codemirror.net/6/docs/ref/#view.EditorView^baseTheme) to be used (as opposed to\n    `&light` when a light theme is active).\n    */\n    static theme(spec, options) {\n        let prefix = StyleModule.newName();\n        let result = [theme.of(prefix), styleModule.of(buildTheme(`.${prefix}`, spec))];\n        if (options && options.dark)\n            result.push(darkTheme.of(true));\n        return result;\n    }\n    /**\n    Create an extension that adds styles to the base theme. Like\n    with [`theme`](https://codemirror.net/6/docs/ref/#view.EditorView^theme), use `&` to indicate the\n    place of the editor wrapper element when directly targeting\n    that. You can also use `&dark` or `&light` instead to only\n    target editors with a dark or light theme.\n    */\n    static baseTheme(spec) {\n        return Prec.lowest(styleModule.of(buildTheme(\".\" + baseThemeID, spec, lightDarkIDs)));\n    }\n    /**\n    Retrieve an editor view instance from the view's DOM\n    representation.\n    */\n    static findFromDOM(dom) {\n        var _a;\n        let content = dom.querySelector(\".cm-content\");\n        let cView = content && ContentView.get(content) || ContentView.get(dom);\n        return ((_a = cView === null || cView === void 0 ? void 0 : cView.rootView) === null || _a === void 0 ? void 0 : _a.view) || null;\n    }\n}\n/**\nFacet to add a [style\nmodule](https://github.com/marijnh/style-mod#documentation) to\nan editor view. The view will ensure that the module is\nmounted in its [document\nroot](https://codemirror.net/6/docs/ref/#view.EditorView.constructor^config.root).\n*/\nEditorView.styleModule = styleModule;\n/**\nAn input handler can override the way changes to the editable\nDOM content are handled. Handlers are passed the document\npositions between which the change was found, and the new\ncontent. When one returns true, no further input handlers are\ncalled and the default behavior is prevented.\n\nThe `insert` argument can be used to get the default transaction\nthat would be applied for this input. This can be useful when\ndispatching the custom behavior as a separate transaction.\n*/\nEditorView.inputHandler = inputHandler;\n/**\nFunctions provided in this facet will be used to transform text\npasted or dropped into the editor.\n*/\nEditorView.clipboardInputFilter = clipboardInputFilter;\n/**\nTransform text copied or dragged from the editor.\n*/\nEditorView.clipboardOutputFilter = clipboardOutputFilter;\n/**\nScroll handlers can override how things are scrolled into view.\nIf they return `true`, no further handling happens for the\nscrolling. If they return false, the default scroll behavior is\napplied. Scroll handlers should never initiate editor updates.\n*/\nEditorView.scrollHandler = scrollHandler;\n/**\nThis facet can be used to provide functions that create effects\nto be dispatched when the editor's focus state changes.\n*/\nEditorView.focusChangeEffect = focusChangeEffect;\n/**\nBy default, the editor assumes all its content has the same\n[text direction](https://codemirror.net/6/docs/ref/#view.Direction). Configure this with a `true`\nvalue to make it read the text direction of every (rendered)\nline separately.\n*/\nEditorView.perLineTextDirection = perLineTextDirection;\n/**\nAllows you to provide a function that should be called when the\nlibrary catches an exception from an extension (mostly from view\nplugins, but may be used by other extensions to route exceptions\nfrom user-code-provided callbacks). This is mostly useful for\ndebugging and logging. See [`logException`](https://codemirror.net/6/docs/ref/#view.logException).\n*/\nEditorView.exceptionSink = exceptionSink;\n/**\nA facet that can be used to register a function to be called\nevery time the view updates.\n*/\nEditorView.updateListener = updateListener;\n/**\nFacet that controls whether the editor content DOM is editable.\nWhen its highest-precedence value is `false`, the element will\nnot have its `contenteditable` attribute set. (Note that this\ndoesn't affect API calls that change the editor content, even\nwhen those are bound to keys or buttons. See the\n[`readOnly`](https://codemirror.net/6/docs/ref/#state.EditorState.readOnly) facet for that.)\n*/\nEditorView.editable = editable;\n/**\nAllows you to influence the way mouse selection happens. The\nfunctions in this facet will be called for a `mousedown` event\non the editor, and can return an object that overrides the way a\nselection is computed from that mouse click or drag.\n*/\nEditorView.mouseSelectionStyle = mouseSelectionStyle;\n/**\nFacet used to configure whether a given selection drag event\nshould move or copy the selection. The given predicate will be\ncalled with the `mousedown` event, and can return `true` when\nthe drag should move the content.\n*/\nEditorView.dragMovesSelection = dragMovesSelection$1;\n/**\nFacet used to configure whether a given selecting click adds a\nnew range to the existing selection or replaces it entirely. The\ndefault behavior is to check `event.metaKey` on macOS, and\n`event.ctrlKey` elsewhere.\n*/\nEditorView.clickAddsSelectionRange = clickAddsSelectionRange;\n/**\nA facet that determines which [decorations](https://codemirror.net/6/docs/ref/#view.Decoration)\nare shown in the view. Decorations can be provided in two\nways—directly, or via a function that takes an editor view.\n\nOnly decoration sets provided directly are allowed to influence\nthe editor's vertical layout structure. The ones provided as\nfunctions are called _after_ the new viewport has been computed,\nand thus **must not** introduce block widgets or replacing\ndecorations that cover line breaks.\n\nIf you want decorated ranges to behave like atomic units for\ncursor motion and deletion purposes, also provide the range set\ncontaining the decorations to\n[`EditorView.atomicRanges`](https://codemirror.net/6/docs/ref/#view.EditorView^atomicRanges).\n*/\nEditorView.decorations = decorations;\n/**\nFacet that works much like\n[`decorations`](https://codemirror.net/6/docs/ref/#view.EditorView^decorations), but puts its\ninputs at the very bottom of the precedence stack, meaning mark\ndecorations provided here will only be split by other, partially\noverlapping \\`outerDecorations\\` ranges, and wrap around all\nregular decorations. Use this for mark elements that should, as\nmuch as possible, remain in one piece.\n*/\nEditorView.outerDecorations = outerDecorations;\n/**\nUsed to provide ranges that should be treated as atoms as far as\ncursor motion is concerned. This causes methods like\n[`moveByChar`](https://codemirror.net/6/docs/ref/#view.EditorView.moveByChar) and\n[`moveVertically`](https://codemirror.net/6/docs/ref/#view.EditorView.moveVertically) (and the\ncommands built on top of them) to skip across such regions when\na selection endpoint would enter them. This does _not_ prevent\ndirect programmatic [selection\nupdates](https://codemirror.net/6/docs/ref/#state.TransactionSpec.selection) from moving into such\nregions.\n*/\nEditorView.atomicRanges = atomicRanges;\n/**\nWhen range decorations add a `unicode-bidi: isolate` style, they\nshould also include a\n[`bidiIsolate`](https://codemirror.net/6/docs/ref/#view.MarkDecorationSpec.bidiIsolate) property\nin their decoration spec, and be exposed through this facet, so\nthat the editor can compute the proper text order. (Other values\nfor `unicode-bidi`, except of course `normal`, are not\nsupported.)\n*/\nEditorView.bidiIsolatedRanges = bidiIsolatedRanges;\n/**\nFacet that allows extensions to provide additional scroll\nmargins (space around the sides of the scrolling element that\nshould be considered invisible). This can be useful when the\nplugin introduces elements that cover part of that element (for\nexample a horizontally fixed gutter).\n*/\nEditorView.scrollMargins = scrollMargins;\n/**\nThis facet records whether a dark theme is active. The extension\nreturned by [`theme`](https://codemirror.net/6/docs/ref/#view.EditorView^theme) automatically\nincludes an instance of this when the `dark` option is set to\ntrue.\n*/\nEditorView.darkTheme = darkTheme;\n/**\nProvides a Content Security Policy nonce to use when creating\nthe style sheets for the editor. Holds the empty string when no\nnonce has been provided.\n*/\nEditorView.cspNonce = /*@__PURE__*/Facet.define({ combine: values => values.length ? values[0] : \"\" });\n/**\nFacet that provides additional DOM attributes for the editor's\neditable DOM element.\n*/\nEditorView.contentAttributes = contentAttributes;\n/**\nFacet that provides DOM attributes for the editor's outer\nelement.\n*/\nEditorView.editorAttributes = editorAttributes;\n/**\nAn extension that enables line wrapping in the editor (by\nsetting CSS `white-space` to `pre-wrap` in the content).\n*/\nEditorView.lineWrapping = /*@__PURE__*/EditorView.contentAttributes.of({ \"class\": \"cm-lineWrapping\" });\n/**\nState effect used to include screen reader announcements in a\ntransaction. These will be added to the DOM in a visually hidden\nelement with `aria-live=\"polite\"` set, and should be used to\ndescribe effects that are visually obvious but may not be\nnoticed by screen reader users (such as moving to the next\nsearch match).\n*/\nEditorView.announce = /*@__PURE__*/StateEffect.define();\n// Maximum line length for which we compute accurate bidi info\nconst MaxBidiLine = 4096;\nconst BadMeasure = {};\nclass CachedOrder {\n    constructor(from, to, dir, isolates, fresh, order) {\n        this.from = from;\n        this.to = to;\n        this.dir = dir;\n        this.isolates = isolates;\n        this.fresh = fresh;\n        this.order = order;\n    }\n    static update(cache, changes) {\n        if (changes.empty && !cache.some(c => c.fresh))\n            return cache;\n        let result = [], lastDir = cache.length ? cache[cache.length - 1].dir : Direction.LTR;\n        for (let i = Math.max(0, cache.length - 10); i < cache.length; i++) {\n            let entry = cache[i];\n            if (entry.dir == lastDir && !changes.touchesRange(entry.from, entry.to))\n                result.push(new CachedOrder(changes.mapPos(entry.from, 1), changes.mapPos(entry.to, -1), entry.dir, entry.isolates, false, entry.order));\n        }\n        return result;\n    }\n}\nfunction attrsFromFacet(view, facet, base) {\n    for (let sources = view.state.facet(facet), i = sources.length - 1; i >= 0; i--) {\n        let source = sources[i], value = typeof source == \"function\" ? source(view) : source;\n        if (value)\n            combineAttrs(value, base);\n    }\n    return base;\n}\n\nconst currentPlatform = browser.mac ? \"mac\" : browser.windows ? \"win\" : browser.linux ? \"linux\" : \"key\";\nfunction normalizeKeyName(name, platform) {\n    const parts = name.split(/-(?!$)/);\n    let result = parts[parts.length - 1];\n    if (result == \"Space\")\n        result = \" \";\n    let alt, ctrl, shift, meta;\n    for (let i = 0; i < parts.length - 1; ++i) {\n        const mod = parts[i];\n        if (/^(cmd|meta|m)$/i.test(mod))\n            meta = true;\n        else if (/^a(lt)?$/i.test(mod))\n            alt = true;\n        else if (/^(c|ctrl|control)$/i.test(mod))\n            ctrl = true;\n        else if (/^s(hift)?$/i.test(mod))\n            shift = true;\n        else if (/^mod$/i.test(mod)) {\n            if (platform == \"mac\")\n                meta = true;\n            else\n                ctrl = true;\n        }\n        else\n            throw new Error(\"Unrecognized modifier name: \" + mod);\n    }\n    if (alt)\n        result = \"Alt-\" + result;\n    if (ctrl)\n        result = \"Ctrl-\" + result;\n    if (meta)\n        result = \"Meta-\" + result;\n    if (shift)\n        result = \"Shift-\" + result;\n    return result;\n}\nfunction modifiers(name, event, shift) {\n    if (event.altKey)\n        name = \"Alt-\" + name;\n    if (event.ctrlKey)\n        name = \"Ctrl-\" + name;\n    if (event.metaKey)\n        name = \"Meta-\" + name;\n    if (shift !== false && event.shiftKey)\n        name = \"Shift-\" + name;\n    return name;\n}\nconst handleKeyEvents = /*@__PURE__*/Prec.default(/*@__PURE__*/EditorView.domEventHandlers({\n    keydown(event, view) {\n        return runHandlers(getKeymap(view.state), event, view, \"editor\");\n    }\n}));\n/**\nFacet used for registering keymaps.\n\nYou can add multiple keymaps to an editor. Their priorities\ndetermine their precedence (the ones specified early or with high\npriority get checked first). When a handler has returned `true`\nfor a given key, no further handlers are called.\n*/\nconst keymap = /*@__PURE__*/Facet.define({ enables: handleKeyEvents });\nconst Keymaps = /*@__PURE__*/new WeakMap();\n// This is hidden behind an indirection, rather than directly computed\n// by the facet, to keep internal types out of the facet's type.\nfunction getKeymap(state) {\n    let bindings = state.facet(keymap);\n    let map = Keymaps.get(bindings);\n    if (!map)\n        Keymaps.set(bindings, map = buildKeymap(bindings.reduce((a, b) => a.concat(b), [])));\n    return map;\n}\n/**\nRun the key handlers registered for a given scope. The event\nobject should be a `\"keydown\"` event. Returns true if any of the\nhandlers handled it.\n*/\nfunction runScopeHandlers(view, event, scope) {\n    return runHandlers(getKeymap(view.state), event, view, scope);\n}\nlet storedPrefix = null;\nconst PrefixTimeout = 4000;\nfunction buildKeymap(bindings, platform = currentPlatform) {\n    let bound = Object.create(null);\n    let isPrefix = Object.create(null);\n    let checkPrefix = (name, is) => {\n        let current = isPrefix[name];\n        if (current == null)\n            isPrefix[name] = is;\n        else if (current != is)\n            throw new Error(\"Key binding \" + name + \" is used both as a regular binding and as a multi-stroke prefix\");\n    };\n    let add = (scope, key, command, preventDefault, stopPropagation) => {\n        var _a, _b;\n        let scopeObj = bound[scope] || (bound[scope] = Object.create(null));\n        let parts = key.split(/ (?!$)/).map(k => normalizeKeyName(k, platform));\n        for (let i = 1; i < parts.length; i++) {\n            let prefix = parts.slice(0, i).join(\" \");\n            checkPrefix(prefix, true);\n            if (!scopeObj[prefix])\n                scopeObj[prefix] = {\n                    preventDefault: true,\n                    stopPropagation: false,\n                    run: [(view) => {\n                            let ourObj = storedPrefix = { view, prefix, scope };\n                            setTimeout(() => { if (storedPrefix == ourObj)\n                                storedPrefix = null; }, PrefixTimeout);\n                            return true;\n                        }]\n                };\n        }\n        let full = parts.join(\" \");\n        checkPrefix(full, false);\n        let binding = scopeObj[full] || (scopeObj[full] = {\n            preventDefault: false,\n            stopPropagation: false,\n            run: ((_b = (_a = scopeObj._any) === null || _a === void 0 ? void 0 : _a.run) === null || _b === void 0 ? void 0 : _b.slice()) || []\n        });\n        if (command)\n            binding.run.push(command);\n        if (preventDefault)\n            binding.preventDefault = true;\n        if (stopPropagation)\n            binding.stopPropagation = true;\n    };\n    for (let b of bindings) {\n        let scopes = b.scope ? b.scope.split(\" \") : [\"editor\"];\n        if (b.any)\n            for (let scope of scopes) {\n                let scopeObj = bound[scope] || (bound[scope] = Object.create(null));\n                if (!scopeObj._any)\n                    scopeObj._any = { preventDefault: false, stopPropagation: false, run: [] };\n                let { any } = b;\n                for (let key in scopeObj)\n                    scopeObj[key].run.push(view => any(view, currentKeyEvent));\n            }\n        let name = b[platform] || b.key;\n        if (!name)\n            continue;\n        for (let scope of scopes) {\n            add(scope, name, b.run, b.preventDefault, b.stopPropagation);\n            if (b.shift)\n                add(scope, \"Shift-\" + name, b.shift, b.preventDefault, b.stopPropagation);\n        }\n    }\n    return bound;\n}\nlet currentKeyEvent = null;\nfunction runHandlers(map, event, view, scope) {\n    currentKeyEvent = event;\n    let name = keyName(event);\n    let charCode = codePointAt(name, 0), isChar = codePointSize(charCode) == name.length && name != \" \";\n    let prefix = \"\", handled = false, prevented = false, stopPropagation = false;\n    if (storedPrefix && storedPrefix.view == view && storedPrefix.scope == scope) {\n        prefix = storedPrefix.prefix + \" \";\n        if (modifierCodes.indexOf(event.keyCode) < 0) {\n            prevented = true;\n            storedPrefix = null;\n        }\n    }\n    let ran = new Set;\n    let runFor = (binding) => {\n        if (binding) {\n            for (let cmd of binding.run)\n                if (!ran.has(cmd)) {\n                    ran.add(cmd);\n                    if (cmd(view)) {\n                        if (binding.stopPropagation)\n                            stopPropagation = true;\n                        return true;\n                    }\n                }\n            if (binding.preventDefault) {\n                if (binding.stopPropagation)\n                    stopPropagation = true;\n                prevented = true;\n            }\n        }\n        return false;\n    };\n    let scopeObj = map[scope], baseName, shiftName;\n    if (scopeObj) {\n        if (runFor(scopeObj[prefix + modifiers(name, event, !isChar)])) {\n            handled = true;\n        }\n        else if (isChar && (event.altKey || event.metaKey || event.ctrlKey) &&\n            // Ctrl-Alt may be used for AltGr on Windows\n            !(browser.windows && event.ctrlKey && event.altKey) &&\n            // Alt-combinations on macOS tend to be typed characters\n            !(browser.mac && event.altKey && !event.ctrlKey) &&\n            (baseName = base[event.keyCode]) && baseName != name) {\n            if (runFor(scopeObj[prefix + modifiers(baseName, event, true)])) {\n                handled = true;\n            }\n            else if (event.shiftKey && (shiftName = shift[event.keyCode]) != name && shiftName != baseName &&\n                runFor(scopeObj[prefix + modifiers(shiftName, event, false)])) {\n                handled = true;\n            }\n        }\n        else if (isChar && event.shiftKey &&\n            runFor(scopeObj[prefix + modifiers(name, event, true)])) {\n            handled = true;\n        }\n        if (!handled && runFor(scopeObj._any))\n            handled = true;\n    }\n    if (prevented)\n        handled = true;\n    if (handled && stopPropagation)\n        event.stopPropagation();\n    currentKeyEvent = null;\n    return handled;\n}\n\n/**\nImplementation of [`LayerMarker`](https://codemirror.net/6/docs/ref/#view.LayerMarker) that creates\na rectangle at a given set of coordinates.\n*/\nclass RectangleMarker {\n    /**\n    Create a marker with the given class and dimensions. If `width`\n    is null, the DOM element will get no width style.\n    */\n    constructor(className, \n    /**\n    The left position of the marker (in pixels, document-relative).\n    */\n    left, \n    /**\n    The top position of the marker.\n    */\n    top, \n    /**\n    The width of the marker, or null if it shouldn't get a width assigned.\n    */\n    width, \n    /**\n    The height of the marker.\n    */\n    height) {\n        this.className = className;\n        this.left = left;\n        this.top = top;\n        this.width = width;\n        this.height = height;\n    }\n    draw() {\n        let elt = document.createElement(\"div\");\n        elt.className = this.className;\n        this.adjust(elt);\n        return elt;\n    }\n    update(elt, prev) {\n        if (prev.className != this.className)\n            return false;\n        this.adjust(elt);\n        return true;\n    }\n    adjust(elt) {\n        elt.style.left = this.left + \"px\";\n        elt.style.top = this.top + \"px\";\n        if (this.width != null)\n            elt.style.width = this.width + \"px\";\n        elt.style.height = this.height + \"px\";\n    }\n    eq(p) {\n        return this.left == p.left && this.top == p.top && this.width == p.width && this.height == p.height &&\n            this.className == p.className;\n    }\n    /**\n    Create a set of rectangles for the given selection range,\n    assigning them theclass`className`. Will create a single\n    rectangle for empty ranges, and a set of selection-style\n    rectangles covering the range's content (in a bidi-aware\n    way) for non-empty ones.\n    */\n    static forRange(view, className, range) {\n        if (range.empty) {\n            let pos = view.coordsAtPos(range.head, range.assoc || 1);\n            if (!pos)\n                return [];\n            let base = getBase(view);\n            return [new RectangleMarker(className, pos.left - base.left, pos.top - base.top, null, pos.bottom - pos.top)];\n        }\n        else {\n            return rectanglesForRange(view, className, range);\n        }\n    }\n}\nfunction getBase(view) {\n    let rect = view.scrollDOM.getBoundingClientRect();\n    let left = view.textDirection == Direction.LTR ? rect.left : rect.right - view.scrollDOM.clientWidth * view.scaleX;\n    return { left: left - view.scrollDOM.scrollLeft * view.scaleX, top: rect.top - view.scrollDOM.scrollTop * view.scaleY };\n}\nfunction wrappedLine(view, pos, side, inside) {\n    let coords = view.coordsAtPos(pos, side * 2);\n    if (!coords)\n        return inside;\n    let editorRect = view.dom.getBoundingClientRect();\n    let y = (coords.top + coords.bottom) / 2;\n    let left = view.posAtCoords({ x: editorRect.left + 1, y });\n    let right = view.posAtCoords({ x: editorRect.right - 1, y });\n    if (left == null || right == null)\n        return inside;\n    return { from: Math.max(inside.from, Math.min(left, right)), to: Math.min(inside.to, Math.max(left, right)) };\n}\nfunction rectanglesForRange(view, className, range) {\n    if (range.to <= view.viewport.from || range.from >= view.viewport.to)\n        return [];\n    let from = Math.max(range.from, view.viewport.from), to = Math.min(range.to, view.viewport.to);\n    let ltr = view.textDirection == Direction.LTR;\n    let content = view.contentDOM, contentRect = content.getBoundingClientRect(), base = getBase(view);\n    let lineElt = content.querySelector(\".cm-line\"), lineStyle = lineElt && window.getComputedStyle(lineElt);\n    let leftSide = contentRect.left +\n        (lineStyle ? parseInt(lineStyle.paddingLeft) + Math.min(0, parseInt(lineStyle.textIndent)) : 0);\n    let rightSide = contentRect.right - (lineStyle ? parseInt(lineStyle.paddingRight) : 0);\n    let startBlock = blockAt(view, from, 1), endBlock = blockAt(view, to, -1);\n    let visualStart = startBlock.type == BlockType.Text ? startBlock : null;\n    let visualEnd = endBlock.type == BlockType.Text ? endBlock : null;\n    if (visualStart && (view.lineWrapping || startBlock.widgetLineBreaks))\n        visualStart = wrappedLine(view, from, 1, visualStart);\n    if (visualEnd && (view.lineWrapping || endBlock.widgetLineBreaks))\n        visualEnd = wrappedLine(view, to, -1, visualEnd);\n    if (visualStart && visualEnd && visualStart.from == visualEnd.from && visualStart.to == visualEnd.to) {\n        return pieces(drawForLine(range.from, range.to, visualStart));\n    }\n    else {\n        let top = visualStart ? drawForLine(range.from, null, visualStart) : drawForWidget(startBlock, false);\n        let bottom = visualEnd ? drawForLine(null, range.to, visualEnd) : drawForWidget(endBlock, true);\n        let between = [];\n        if ((visualStart || startBlock).to < (visualEnd || endBlock).from - (visualStart && visualEnd ? 1 : 0) ||\n            startBlock.widgetLineBreaks > 1 && top.bottom + view.defaultLineHeight / 2 < bottom.top)\n            between.push(piece(leftSide, top.bottom, rightSide, bottom.top));\n        else if (top.bottom < bottom.top && view.elementAtHeight((top.bottom + bottom.top) / 2).type == BlockType.Text)\n            top.bottom = bottom.top = (top.bottom + bottom.top) / 2;\n        return pieces(top).concat(between).concat(pieces(bottom));\n    }\n    function piece(left, top, right, bottom) {\n        return new RectangleMarker(className, left - base.left, top - base.top, right - left, bottom - top);\n    }\n    function pieces({ top, bottom, horizontal }) {\n        let pieces = [];\n        for (let i = 0; i < horizontal.length; i += 2)\n            pieces.push(piece(horizontal[i], top, horizontal[i + 1], bottom));\n        return pieces;\n    }\n    // Gets passed from/to in line-local positions\n    function drawForLine(from, to, line) {\n        let top = 1e9, bottom = -1e9, horizontal = [];\n        function addSpan(from, fromOpen, to, toOpen, dir) {\n            // Passing 2/-2 is a kludge to force the view to return\n            // coordinates on the proper side of block widgets, since\n            // normalizing the side there, though appropriate for most\n            // coordsAtPos queries, would break selection drawing.\n            let fromCoords = view.coordsAtPos(from, (from == line.to ? -2 : 2));\n            let toCoords = view.coordsAtPos(to, (to == line.from ? 2 : -2));\n            if (!fromCoords || !toCoords)\n                return;\n            top = Math.min(fromCoords.top, toCoords.top, top);\n            bottom = Math.max(fromCoords.bottom, toCoords.bottom, bottom);\n            if (dir == Direction.LTR)\n                horizontal.push(ltr && fromOpen ? leftSide : fromCoords.left, ltr && toOpen ? rightSide : toCoords.right);\n            else\n                horizontal.push(!ltr && toOpen ? leftSide : toCoords.left, !ltr && fromOpen ? rightSide : fromCoords.right);\n        }\n        let start = from !== null && from !== void 0 ? from : line.from, end = to !== null && to !== void 0 ? to : line.to;\n        // Split the range by visible range and document line\n        for (let r of view.visibleRanges)\n            if (r.to > start && r.from < end) {\n                for (let pos = Math.max(r.from, start), endPos = Math.min(r.to, end);;) {\n                    let docLine = view.state.doc.lineAt(pos);\n                    for (let span of view.bidiSpans(docLine)) {\n                        let spanFrom = span.from + docLine.from, spanTo = span.to + docLine.from;\n                        if (spanFrom >= endPos)\n                            break;\n                        if (spanTo > pos)\n                            addSpan(Math.max(spanFrom, pos), from == null && spanFrom <= start, Math.min(spanTo, endPos), to == null && spanTo >= end, span.dir);\n                    }\n                    pos = docLine.to + 1;\n                    if (pos >= endPos)\n                        break;\n                }\n            }\n        if (horizontal.length == 0)\n            addSpan(start, from == null, end, to == null, view.textDirection);\n        return { top, bottom, horizontal };\n    }\n    function drawForWidget(block, top) {\n        let y = contentRect.top + (top ? block.top : block.bottom);\n        return { top: y, bottom: y, horizontal: [] };\n    }\n}\nfunction sameMarker(a, b) {\n    return a.constructor == b.constructor && a.eq(b);\n}\nclass LayerView {\n    constructor(view, layer) {\n        this.view = view;\n        this.layer = layer;\n        this.drawn = [];\n        this.scaleX = 1;\n        this.scaleY = 1;\n        this.measureReq = { read: this.measure.bind(this), write: this.draw.bind(this) };\n        this.dom = view.scrollDOM.appendChild(document.createElement(\"div\"));\n        this.dom.classList.add(\"cm-layer\");\n        if (layer.above)\n            this.dom.classList.add(\"cm-layer-above\");\n        if (layer.class)\n            this.dom.classList.add(layer.class);\n        this.scale();\n        this.dom.setAttribute(\"aria-hidden\", \"true\");\n        this.setOrder(view.state);\n        view.requestMeasure(this.measureReq);\n        if (layer.mount)\n            layer.mount(this.dom, view);\n    }\n    update(update) {\n        if (update.startState.facet(layerOrder) != update.state.facet(layerOrder))\n            this.setOrder(update.state);\n        if (this.layer.update(update, this.dom) || update.geometryChanged) {\n            this.scale();\n            update.view.requestMeasure(this.measureReq);\n        }\n    }\n    docViewUpdate(view) {\n        if (this.layer.updateOnDocViewUpdate !== false)\n            view.requestMeasure(this.measureReq);\n    }\n    setOrder(state) {\n        let pos = 0, order = state.facet(layerOrder);\n        while (pos < order.length && order[pos] != this.layer)\n            pos++;\n        this.dom.style.zIndex = String((this.layer.above ? 150 : -1) - pos);\n    }\n    measure() {\n        return this.layer.markers(this.view);\n    }\n    scale() {\n        let { scaleX, scaleY } = this.view;\n        if (scaleX != this.scaleX || scaleY != this.scaleY) {\n            this.scaleX = scaleX;\n            this.scaleY = scaleY;\n            this.dom.style.transform = `scale(${1 / scaleX}, ${1 / scaleY})`;\n        }\n    }\n    draw(markers) {\n        if (markers.length != this.drawn.length || markers.some((p, i) => !sameMarker(p, this.drawn[i]))) {\n            let old = this.dom.firstChild, oldI = 0;\n            for (let marker of markers) {\n                if (marker.update && old && marker.constructor && this.drawn[oldI].constructor &&\n                    marker.update(old, this.drawn[oldI])) {\n                    old = old.nextSibling;\n                    oldI++;\n                }\n                else {\n                    this.dom.insertBefore(marker.draw(), old);\n                }\n            }\n            while (old) {\n                let next = old.nextSibling;\n                old.remove();\n                old = next;\n            }\n            this.drawn = markers;\n        }\n    }\n    destroy() {\n        if (this.layer.destroy)\n            this.layer.destroy(this.dom, this.view);\n        this.dom.remove();\n    }\n}\nconst layerOrder = /*@__PURE__*/Facet.define();\n/**\nDefine a layer.\n*/\nfunction layer(config) {\n    return [\n        ViewPlugin.define(v => new LayerView(v, config)),\n        layerOrder.of(config)\n    ];\n}\n\nconst selectionConfig = /*@__PURE__*/Facet.define({\n    combine(configs) {\n        return combineConfig(configs, {\n            cursorBlinkRate: 1200,\n            drawRangeCursor: true\n        }, {\n            cursorBlinkRate: (a, b) => Math.min(a, b),\n            drawRangeCursor: (a, b) => a || b\n        });\n    }\n});\n/**\nReturns an extension that hides the browser's native selection and\ncursor, replacing the selection with a background behind the text\n(with the `cm-selectionBackground` class), and the\ncursors with elements overlaid over the code (using\n`cm-cursor-primary` and `cm-cursor-secondary`).\n\nThis allows the editor to display secondary selection ranges, and\ntends to produce a type of selection more in line with that users\nexpect in a text editor (the native selection styling will often\nleave gaps between lines and won't fill the horizontal space after\na line when the selection continues past it).\n\nIt does have a performance cost, in that it requires an extra DOM\nlayout cycle for many updates (the selection is drawn based on DOM\nlayout information that's only available after laying out the\ncontent).\n*/\nfunction drawSelection(config = {}) {\n    return [\n        selectionConfig.of(config),\n        cursorLayer,\n        selectionLayer,\n        hideNativeSelection,\n        nativeSelectionHidden.of(true)\n    ];\n}\n/**\nRetrieve the [`drawSelection`](https://codemirror.net/6/docs/ref/#view.drawSelection) configuration\nfor this state. (Note that this will return a set of defaults even\nif `drawSelection` isn't enabled.)\n*/\nfunction getDrawSelectionConfig(state) {\n    return state.facet(selectionConfig);\n}\nfunction configChanged(update) {\n    return update.startState.facet(selectionConfig) != update.state.facet(selectionConfig);\n}\nconst cursorLayer = /*@__PURE__*/layer({\n    above: true,\n    markers(view) {\n        let { state } = view, conf = state.facet(selectionConfig);\n        let cursors = [];\n        for (let r of state.selection.ranges) {\n            let prim = r == state.selection.main;\n            if (r.empty || conf.drawRangeCursor) {\n                let className = prim ? \"cm-cursor cm-cursor-primary\" : \"cm-cursor cm-cursor-secondary\";\n                let cursor = r.empty ? r : EditorSelection.cursor(r.head, r.head > r.anchor ? -1 : 1);\n                for (let piece of RectangleMarker.forRange(view, className, cursor))\n                    cursors.push(piece);\n            }\n        }\n        return cursors;\n    },\n    update(update, dom) {\n        if (update.transactions.some(tr => tr.selection))\n            dom.style.animationName = dom.style.animationName == \"cm-blink\" ? \"cm-blink2\" : \"cm-blink\";\n        let confChange = configChanged(update);\n        if (confChange)\n            setBlinkRate(update.state, dom);\n        return update.docChanged || update.selectionSet || confChange;\n    },\n    mount(dom, view) {\n        setBlinkRate(view.state, dom);\n    },\n    class: \"cm-cursorLayer\"\n});\nfunction setBlinkRate(state, dom) {\n    dom.style.animationDuration = state.facet(selectionConfig).cursorBlinkRate + \"ms\";\n}\nconst selectionLayer = /*@__PURE__*/layer({\n    above: false,\n    markers(view) {\n        return view.state.selection.ranges.map(r => r.empty ? [] : RectangleMarker.forRange(view, \"cm-selectionBackground\", r))\n            .reduce((a, b) => a.concat(b));\n    },\n    update(update, dom) {\n        return update.docChanged || update.selectionSet || update.viewportChanged || configChanged(update);\n    },\n    class: \"cm-selectionLayer\"\n});\nconst hideNativeSelection = /*@__PURE__*/Prec.highest(/*@__PURE__*/EditorView.theme({\n    \".cm-line\": {\n        \"& ::selection, &::selection\": { backgroundColor: \"transparent !important\" },\n        caretColor: \"transparent !important\"\n    },\n    \".cm-content\": {\n        caretColor: \"transparent !important\",\n        \"& :focus\": {\n            caretColor: \"initial !important\",\n            \"&::selection, & ::selection\": {\n                backgroundColor: \"Highlight !important\"\n            }\n        }\n    }\n}));\n\nconst setDropCursorPos = /*@__PURE__*/StateEffect.define({\n    map(pos, mapping) { return pos == null ? null : mapping.mapPos(pos); }\n});\nconst dropCursorPos = /*@__PURE__*/StateField.define({\n    create() { return null; },\n    update(pos, tr) {\n        if (pos != null)\n            pos = tr.changes.mapPos(pos);\n        return tr.effects.reduce((pos, e) => e.is(setDropCursorPos) ? e.value : pos, pos);\n    }\n});\nconst drawDropCursor = /*@__PURE__*/ViewPlugin.fromClass(class {\n    constructor(view) {\n        this.view = view;\n        this.cursor = null;\n        this.measureReq = { read: this.readPos.bind(this), write: this.drawCursor.bind(this) };\n    }\n    update(update) {\n        var _a;\n        let cursorPos = update.state.field(dropCursorPos);\n        if (cursorPos == null) {\n            if (this.cursor != null) {\n                (_a = this.cursor) === null || _a === void 0 ? void 0 : _a.remove();\n                this.cursor = null;\n            }\n        }\n        else {\n            if (!this.cursor) {\n                this.cursor = this.view.scrollDOM.appendChild(document.createElement(\"div\"));\n                this.cursor.className = \"cm-dropCursor\";\n            }\n            if (update.startState.field(dropCursorPos) != cursorPos || update.docChanged || update.geometryChanged)\n                this.view.requestMeasure(this.measureReq);\n        }\n    }\n    readPos() {\n        let { view } = this;\n        let pos = view.state.field(dropCursorPos);\n        let rect = pos != null && view.coordsAtPos(pos);\n        if (!rect)\n            return null;\n        let outer = view.scrollDOM.getBoundingClientRect();\n        return {\n            left: rect.left - outer.left + view.scrollDOM.scrollLeft * view.scaleX,\n            top: rect.top - outer.top + view.scrollDOM.scrollTop * view.scaleY,\n            height: rect.bottom - rect.top\n        };\n    }\n    drawCursor(pos) {\n        if (this.cursor) {\n            let { scaleX, scaleY } = this.view;\n            if (pos) {\n                this.cursor.style.left = pos.left / scaleX + \"px\";\n                this.cursor.style.top = pos.top / scaleY + \"px\";\n                this.cursor.style.height = pos.height / scaleY + \"px\";\n            }\n            else {\n                this.cursor.style.left = \"-100000px\";\n            }\n        }\n    }\n    destroy() {\n        if (this.cursor)\n            this.cursor.remove();\n    }\n    setDropPos(pos) {\n        if (this.view.state.field(dropCursorPos) != pos)\n            this.view.dispatch({ effects: setDropCursorPos.of(pos) });\n    }\n}, {\n    eventObservers: {\n        dragover(event) {\n            this.setDropPos(this.view.posAtCoords({ x: event.clientX, y: event.clientY }));\n        },\n        dragleave(event) {\n            if (event.target == this.view.contentDOM || !this.view.contentDOM.contains(event.relatedTarget))\n                this.setDropPos(null);\n        },\n        dragend() {\n            this.setDropPos(null);\n        },\n        drop() {\n            this.setDropPos(null);\n        }\n    }\n});\n/**\nDraws a cursor at the current drop position when something is\ndragged over the editor.\n*/\nfunction dropCursor() {\n    return [dropCursorPos, drawDropCursor];\n}\n\nfunction iterMatches(doc, re, from, to, f) {\n    re.lastIndex = 0;\n    for (let cursor = doc.iterRange(from, to), pos = from, m; !cursor.next().done; pos += cursor.value.length) {\n        if (!cursor.lineBreak)\n            while (m = re.exec(cursor.value))\n                f(pos + m.index, m);\n    }\n}\nfunction matchRanges(view, maxLength) {\n    let visible = view.visibleRanges;\n    if (visible.length == 1 && visible[0].from == view.viewport.from &&\n        visible[0].to == view.viewport.to)\n        return visible;\n    let result = [];\n    for (let { from, to } of visible) {\n        from = Math.max(view.state.doc.lineAt(from).from, from - maxLength);\n        to = Math.min(view.state.doc.lineAt(to).to, to + maxLength);\n        if (result.length && result[result.length - 1].to >= from)\n            result[result.length - 1].to = to;\n        else\n            result.push({ from, to });\n    }\n    return result;\n}\n/**\nHelper class used to make it easier to maintain decorations on\nvisible code that matches a given regular expression. To be used\nin a [view plugin](https://codemirror.net/6/docs/ref/#view.ViewPlugin). Instances of this object\nrepresent a matching configuration.\n*/\nclass MatchDecorator {\n    /**\n    Create a decorator.\n    */\n    constructor(config) {\n        const { regexp, decoration, decorate, boundary, maxLength = 1000 } = config;\n        if (!regexp.global)\n            throw new RangeError(\"The regular expression given to MatchDecorator should have its 'g' flag set\");\n        this.regexp = regexp;\n        if (decorate) {\n            this.addMatch = (match, view, from, add) => decorate(add, from, from + match[0].length, match, view);\n        }\n        else if (typeof decoration == \"function\") {\n            this.addMatch = (match, view, from, add) => {\n                let deco = decoration(match, view, from);\n                if (deco)\n                    add(from, from + match[0].length, deco);\n            };\n        }\n        else if (decoration) {\n            this.addMatch = (match, _view, from, add) => add(from, from + match[0].length, decoration);\n        }\n        else {\n            throw new RangeError(\"Either 'decorate' or 'decoration' should be provided to MatchDecorator\");\n        }\n        this.boundary = boundary;\n        this.maxLength = maxLength;\n    }\n    /**\n    Compute the full set of decorations for matches in the given\n    view's viewport. You'll want to call this when initializing your\n    plugin.\n    */\n    createDeco(view) {\n        let build = new RangeSetBuilder(), add = build.add.bind(build);\n        for (let { from, to } of matchRanges(view, this.maxLength))\n            iterMatches(view.state.doc, this.regexp, from, to, (from, m) => this.addMatch(m, view, from, add));\n        return build.finish();\n    }\n    /**\n    Update a set of decorations for a view update. `deco` _must_ be\n    the set of decorations produced by _this_ `MatchDecorator` for\n    the view state before the update.\n    */\n    updateDeco(update, deco) {\n        let changeFrom = 1e9, changeTo = -1;\n        if (update.docChanged)\n            update.changes.iterChanges((_f, _t, from, to) => {\n                if (to >= update.view.viewport.from && from <= update.view.viewport.to) {\n                    changeFrom = Math.min(from, changeFrom);\n                    changeTo = Math.max(to, changeTo);\n                }\n            });\n        if (update.viewportMoved || changeTo - changeFrom > 1000)\n            return this.createDeco(update.view);\n        if (changeTo > -1)\n            return this.updateRange(update.view, deco.map(update.changes), changeFrom, changeTo);\n        return deco;\n    }\n    updateRange(view, deco, updateFrom, updateTo) {\n        for (let r of view.visibleRanges) {\n            let from = Math.max(r.from, updateFrom), to = Math.min(r.to, updateTo);\n            if (to >= from) {\n                let fromLine = view.state.doc.lineAt(from), toLine = fromLine.to < to ? view.state.doc.lineAt(to) : fromLine;\n                let start = Math.max(r.from, fromLine.from), end = Math.min(r.to, toLine.to);\n                if (this.boundary) {\n                    for (; from > fromLine.from; from--)\n                        if (this.boundary.test(fromLine.text[from - 1 - fromLine.from])) {\n                            start = from;\n                            break;\n                        }\n                    for (; to < toLine.to; to++)\n                        if (this.boundary.test(toLine.text[to - toLine.from])) {\n                            end = to;\n                            break;\n                        }\n                }\n                let ranges = [], m;\n                let add = (from, to, deco) => ranges.push(deco.range(from, to));\n                if (fromLine == toLine) {\n                    this.regexp.lastIndex = start - fromLine.from;\n                    while ((m = this.regexp.exec(fromLine.text)) && m.index < end - fromLine.from)\n                        this.addMatch(m, view, m.index + fromLine.from, add);\n                }\n                else {\n                    iterMatches(view.state.doc, this.regexp, start, end, (from, m) => this.addMatch(m, view, from, add));\n                }\n                deco = deco.update({ filterFrom: start, filterTo: end, filter: (from, to) => from < start || to > end, add: ranges });\n            }\n        }\n        return deco;\n    }\n}\n\nconst UnicodeRegexpSupport = /x/.unicode != null ? \"gu\" : \"g\";\nconst Specials = /*@__PURE__*/new RegExp(\"[\\u0000-\\u0008\\u000a-\\u001f\\u007f-\\u009f\\u00ad\\u061c\\u200b\\u200e\\u200f\\u2028\\u2029\\u202d\\u202e\\u2066\\u2067\\u2069\\ufeff\\ufff9-\\ufffc]\", UnicodeRegexpSupport);\nconst Names = {\n    0: \"null\",\n    7: \"bell\",\n    8: \"backspace\",\n    10: \"newline\",\n    11: \"vertical tab\",\n    13: \"carriage return\",\n    27: \"escape\",\n    8203: \"zero width space\",\n    8204: \"zero width non-joiner\",\n    8205: \"zero width joiner\",\n    8206: \"left-to-right mark\",\n    8207: \"right-to-left mark\",\n    8232: \"line separator\",\n    8237: \"left-to-right override\",\n    8238: \"right-to-left override\",\n    8294: \"left-to-right isolate\",\n    8295: \"right-to-left isolate\",\n    8297: \"pop directional isolate\",\n    8233: \"paragraph separator\",\n    65279: \"zero width no-break space\",\n    65532: \"object replacement\"\n};\nlet _supportsTabSize = null;\nfunction supportsTabSize() {\n    var _a;\n    if (_supportsTabSize == null && typeof document != \"undefined\" && document.body) {\n        let styles = document.body.style;\n        _supportsTabSize = ((_a = styles.tabSize) !== null && _a !== void 0 ? _a : styles.MozTabSize) != null;\n    }\n    return _supportsTabSize || false;\n}\nconst specialCharConfig = /*@__PURE__*/Facet.define({\n    combine(configs) {\n        let config = combineConfig(configs, {\n            render: null,\n            specialChars: Specials,\n            addSpecialChars: null\n        });\n        if (config.replaceTabs = !supportsTabSize())\n            config.specialChars = new RegExp(\"\\t|\" + config.specialChars.source, UnicodeRegexpSupport);\n        if (config.addSpecialChars)\n            config.specialChars = new RegExp(config.specialChars.source + \"|\" + config.addSpecialChars.source, UnicodeRegexpSupport);\n        return config;\n    }\n});\n/**\nReturns an extension that installs highlighting of special\ncharacters.\n*/\nfunction highlightSpecialChars(\n/**\nConfiguration options.\n*/\nconfig = {}) {\n    return [specialCharConfig.of(config), specialCharPlugin()];\n}\nlet _plugin = null;\nfunction specialCharPlugin() {\n    return _plugin || (_plugin = ViewPlugin.fromClass(class {\n        constructor(view) {\n            this.view = view;\n            this.decorations = Decoration.none;\n            this.decorationCache = Object.create(null);\n            this.decorator = this.makeDecorator(view.state.facet(specialCharConfig));\n            this.decorations = this.decorator.createDeco(view);\n        }\n        makeDecorator(conf) {\n            return new MatchDecorator({\n                regexp: conf.specialChars,\n                decoration: (m, view, pos) => {\n                    let { doc } = view.state;\n                    let code = codePointAt(m[0], 0);\n                    if (code == 9) {\n                        let line = doc.lineAt(pos);\n                        let size = view.state.tabSize, col = countColumn(line.text, size, pos - line.from);\n                        return Decoration.replace({\n                            widget: new TabWidget((size - (col % size)) * this.view.defaultCharacterWidth / this.view.scaleX)\n                        });\n                    }\n                    return this.decorationCache[code] ||\n                        (this.decorationCache[code] = Decoration.replace({ widget: new SpecialCharWidget(conf, code) }));\n                },\n                boundary: conf.replaceTabs ? undefined : /[^]/\n            });\n        }\n        update(update) {\n            let conf = update.state.facet(specialCharConfig);\n            if (update.startState.facet(specialCharConfig) != conf) {\n                this.decorator = this.makeDecorator(conf);\n                this.decorations = this.decorator.createDeco(update.view);\n            }\n            else {\n                this.decorations = this.decorator.updateDeco(update, this.decorations);\n            }\n        }\n    }, {\n        decorations: v => v.decorations\n    }));\n}\nconst DefaultPlaceholder = \"\\u2022\";\n// Assigns placeholder characters from the Control Pictures block to\n// ASCII control characters\nfunction placeholder$1(code) {\n    if (code >= 32)\n        return DefaultPlaceholder;\n    if (code == 10)\n        return \"\\u2424\";\n    return String.fromCharCode(9216 + code);\n}\nclass SpecialCharWidget extends WidgetType {\n    constructor(options, code) {\n        super();\n        this.options = options;\n        this.code = code;\n    }\n    eq(other) { return other.code == this.code; }\n    toDOM(view) {\n        let ph = placeholder$1(this.code);\n        let desc = view.state.phrase(\"Control character\") + \" \" + (Names[this.code] || \"0x\" + this.code.toString(16));\n        let custom = this.options.render && this.options.render(this.code, desc, ph);\n        if (custom)\n            return custom;\n        let span = document.createElement(\"span\");\n        span.textContent = ph;\n        span.title = desc;\n        span.setAttribute(\"aria-label\", desc);\n        span.className = \"cm-specialChar\";\n        return span;\n    }\n    ignoreEvent() { return false; }\n}\nclass TabWidget extends WidgetType {\n    constructor(width) {\n        super();\n        this.width = width;\n    }\n    eq(other) { return other.width == this.width; }\n    toDOM() {\n        let span = document.createElement(\"span\");\n        span.textContent = \"\\t\";\n        span.className = \"cm-tab\";\n        span.style.width = this.width + \"px\";\n        return span;\n    }\n    ignoreEvent() { return false; }\n}\n\nconst plugin = /*@__PURE__*/ViewPlugin.fromClass(class {\n    constructor() {\n        this.height = 1000;\n        this.attrs = { style: \"padding-bottom: 1000px\" };\n    }\n    update(update) {\n        let { view } = update;\n        let height = view.viewState.editorHeight -\n            view.defaultLineHeight - view.documentPadding.top - 0.5;\n        if (height >= 0 && height != this.height) {\n            this.height = height;\n            this.attrs = { style: `padding-bottom: ${height}px` };\n        }\n    }\n});\n/**\nReturns an extension that makes sure the content has a bottom\nmargin equivalent to the height of the editor, minus one line\nheight, so that every line in the document can be scrolled to the\ntop of the editor.\n\nThis is only meaningful when the editor is scrollable, and should\nnot be enabled in editors that take the size of their content.\n*/\nfunction scrollPastEnd() {\n    return [plugin, contentAttributes.of(view => { var _a; return ((_a = view.plugin(plugin)) === null || _a === void 0 ? void 0 : _a.attrs) || null; })];\n}\n\n/**\nMark lines that have a cursor on them with the `\"cm-activeLine\"`\nDOM class.\n*/\nfunction highlightActiveLine() {\n    return activeLineHighlighter;\n}\nconst lineDeco = /*@__PURE__*/Decoration.line({ class: \"cm-activeLine\" });\nconst activeLineHighlighter = /*@__PURE__*/ViewPlugin.fromClass(class {\n    constructor(view) {\n        this.decorations = this.getDeco(view);\n    }\n    update(update) {\n        if (update.docChanged || update.selectionSet)\n            this.decorations = this.getDeco(update.view);\n    }\n    getDeco(view) {\n        let lastLineStart = -1, deco = [];\n        for (let r of view.state.selection.ranges) {\n            let line = view.lineBlockAt(r.head);\n            if (line.from > lastLineStart) {\n                deco.push(lineDeco.range(line.from));\n                lastLineStart = line.from;\n            }\n        }\n        return Decoration.set(deco);\n    }\n}, {\n    decorations: v => v.decorations\n});\n\nclass Placeholder extends WidgetType {\n    constructor(content) {\n        super();\n        this.content = content;\n    }\n    toDOM(view) {\n        let wrap = document.createElement(\"span\");\n        wrap.className = \"cm-placeholder\";\n        wrap.style.pointerEvents = \"none\";\n        wrap.appendChild(typeof this.content == \"string\" ? document.createTextNode(this.content) :\n            typeof this.content == \"function\" ? this.content(view) :\n                this.content.cloneNode(true));\n        wrap.setAttribute(\"aria-hidden\", \"true\");\n        return wrap;\n    }\n    coordsAt(dom) {\n        let rects = dom.firstChild ? clientRectsFor(dom.firstChild) : [];\n        if (!rects.length)\n            return null;\n        let style = window.getComputedStyle(dom.parentNode);\n        let rect = flattenRect(rects[0], style.direction != \"rtl\");\n        let lineHeight = parseInt(style.lineHeight);\n        if (rect.bottom - rect.top > lineHeight * 1.5)\n            return { left: rect.left, right: rect.right, top: rect.top, bottom: rect.top + lineHeight };\n        return rect;\n    }\n    ignoreEvent() { return false; }\n}\n/**\nExtension that enables a placeholder—a piece of example content\nto show when the editor is empty.\n*/\nfunction placeholder(content) {\n    let plugin = ViewPlugin.fromClass(class {\n        constructor(view) {\n            this.view = view;\n            this.placeholder = content\n                ? Decoration.set([Decoration.widget({ widget: new Placeholder(content), side: 1 }).range(0)])\n                : Decoration.none;\n        }\n        get decorations() { return this.view.state.doc.length ? Decoration.none : this.placeholder; }\n    }, { decorations: v => v.decorations });\n    return typeof content == \"string\" ? [\n        plugin, EditorView.contentAttributes.of({ \"aria-placeholder\": content })\n    ] : plugin;\n}\n\n// Don't compute precise column positions for line offsets above this\n// (since it could get expensive). Assume offset==column for them.\nconst MaxOff = 2000;\nfunction rectangleFor(state, a, b) {\n    let startLine = Math.min(a.line, b.line), endLine = Math.max(a.line, b.line);\n    let ranges = [];\n    if (a.off > MaxOff || b.off > MaxOff || a.col < 0 || b.col < 0) {\n        let startOff = Math.min(a.off, b.off), endOff = Math.max(a.off, b.off);\n        for (let i = startLine; i <= endLine; i++) {\n            let line = state.doc.line(i);\n            if (line.length <= endOff)\n                ranges.push(EditorSelection.range(line.from + startOff, line.to + endOff));\n        }\n    }\n    else {\n        let startCol = Math.min(a.col, b.col), endCol = Math.max(a.col, b.col);\n        for (let i = startLine; i <= endLine; i++) {\n            let line = state.doc.line(i);\n            let start = findColumn(line.text, startCol, state.tabSize, true);\n            if (start < 0) {\n                ranges.push(EditorSelection.cursor(line.to));\n            }\n            else {\n                let end = findColumn(line.text, endCol, state.tabSize);\n                ranges.push(EditorSelection.range(line.from + start, line.from + end));\n            }\n        }\n    }\n    return ranges;\n}\nfunction absoluteColumn(view, x) {\n    let ref = view.coordsAtPos(view.viewport.from);\n    return ref ? Math.round(Math.abs((ref.left - x) / view.defaultCharacterWidth)) : -1;\n}\nfunction getPos(view, event) {\n    let offset = view.posAtCoords({ x: event.clientX, y: event.clientY }, false);\n    let line = view.state.doc.lineAt(offset), off = offset - line.from;\n    let col = off > MaxOff ? -1\n        : off == line.length ? absoluteColumn(view, event.clientX)\n            : countColumn(line.text, view.state.tabSize, offset - line.from);\n    return { line: line.number, col, off };\n}\nfunction rectangleSelectionStyle(view, event) {\n    let start = getPos(view, event), startSel = view.state.selection;\n    if (!start)\n        return null;\n    return {\n        update(update) {\n            if (update.docChanged) {\n                let newStart = update.changes.mapPos(update.startState.doc.line(start.line).from);\n                let newLine = update.state.doc.lineAt(newStart);\n                start = { line: newLine.number, col: start.col, off: Math.min(start.off, newLine.length) };\n                startSel = startSel.map(update.changes);\n            }\n        },\n        get(event, _extend, multiple) {\n            let cur = getPos(view, event);\n            if (!cur)\n                return startSel;\n            let ranges = rectangleFor(view.state, start, cur);\n            if (!ranges.length)\n                return startSel;\n            if (multiple)\n                return EditorSelection.create(ranges.concat(startSel.ranges));\n            else\n                return EditorSelection.create(ranges);\n        }\n    };\n}\n/**\nCreate an extension that enables rectangular selections. By\ndefault, it will react to left mouse drag with the Alt key held\ndown. When such a selection occurs, the text within the rectangle\nthat was dragged over will be selected, as one selection\n[range](https://codemirror.net/6/docs/ref/#state.SelectionRange) per line.\n*/\nfunction rectangularSelection(options) {\n    let filter = (options === null || options === void 0 ? void 0 : options.eventFilter) || (e => e.altKey && e.button == 0);\n    return EditorView.mouseSelectionStyle.of((view, event) => filter(event) ? rectangleSelectionStyle(view, event) : null);\n}\nconst keys = {\n    Alt: [18, e => !!e.altKey],\n    Control: [17, e => !!e.ctrlKey],\n    Shift: [16, e => !!e.shiftKey],\n    Meta: [91, e => !!e.metaKey]\n};\nconst showCrosshair = { style: \"cursor: crosshair\" };\n/**\nReturns an extension that turns the pointer cursor into a\ncrosshair when a given modifier key, defaulting to Alt, is held\ndown. Can serve as a visual hint that rectangular selection is\ngoing to happen when paired with\n[`rectangularSelection`](https://codemirror.net/6/docs/ref/#view.rectangularSelection).\n*/\nfunction crosshairCursor(options = {}) {\n    let [code, getter] = keys[options.key || \"Alt\"];\n    let plugin = ViewPlugin.fromClass(class {\n        constructor(view) {\n            this.view = view;\n            this.isDown = false;\n        }\n        set(isDown) {\n            if (this.isDown != isDown) {\n                this.isDown = isDown;\n                this.view.update([]);\n            }\n        }\n    }, {\n        eventObservers: {\n            keydown(e) {\n                this.set(e.keyCode == code || getter(e));\n            },\n            keyup(e) {\n                if (e.keyCode == code || !getter(e))\n                    this.set(false);\n            },\n            mousemove(e) {\n                this.set(getter(e));\n            }\n        }\n    });\n    return [\n        plugin,\n        EditorView.contentAttributes.of(view => { var _a; return ((_a = view.plugin(plugin)) === null || _a === void 0 ? void 0 : _a.isDown) ? showCrosshair : null; })\n    ];\n}\n\nconst Outside = \"-10000px\";\nclass TooltipViewManager {\n    constructor(view, facet, createTooltipView, removeTooltipView) {\n        this.facet = facet;\n        this.createTooltipView = createTooltipView;\n        this.removeTooltipView = removeTooltipView;\n        this.input = view.state.facet(facet);\n        this.tooltips = this.input.filter(t => t);\n        let prev = null;\n        this.tooltipViews = this.tooltips.map(t => prev = createTooltipView(t, prev));\n    }\n    update(update, above) {\n        var _a;\n        let input = update.state.facet(this.facet);\n        let tooltips = input.filter(x => x);\n        if (input === this.input) {\n            for (let t of this.tooltipViews)\n                if (t.update)\n                    t.update(update);\n            return false;\n        }\n        let tooltipViews = [], newAbove = above ? [] : null;\n        for (let i = 0; i < tooltips.length; i++) {\n            let tip = tooltips[i], known = -1;\n            if (!tip)\n                continue;\n            for (let i = 0; i < this.tooltips.length; i++) {\n                let other = this.tooltips[i];\n                if (other && other.create == tip.create)\n                    known = i;\n            }\n            if (known < 0) {\n                tooltipViews[i] = this.createTooltipView(tip, i ? tooltipViews[i - 1] : null);\n                if (newAbove)\n                    newAbove[i] = !!tip.above;\n            }\n            else {\n                let tooltipView = tooltipViews[i] = this.tooltipViews[known];\n                if (newAbove)\n                    newAbove[i] = above[known];\n                if (tooltipView.update)\n                    tooltipView.update(update);\n            }\n        }\n        for (let t of this.tooltipViews)\n            if (tooltipViews.indexOf(t) < 0) {\n                this.removeTooltipView(t);\n                (_a = t.destroy) === null || _a === void 0 ? void 0 : _a.call(t);\n            }\n        if (above) {\n            newAbove.forEach((val, i) => above[i] = val);\n            above.length = newAbove.length;\n        }\n        this.input = input;\n        this.tooltips = tooltips;\n        this.tooltipViews = tooltipViews;\n        return true;\n    }\n}\n/**\nCreates an extension that configures tooltip behavior.\n*/\nfunction tooltips(config = {}) {\n    return tooltipConfig.of(config);\n}\nfunction windowSpace(view) {\n    let docElt = view.dom.ownerDocument.documentElement;\n    return { top: 0, left: 0, bottom: docElt.clientHeight, right: docElt.clientWidth };\n}\nconst tooltipConfig = /*@__PURE__*/Facet.define({\n    combine: values => {\n        var _a, _b, _c;\n        return ({\n            position: browser.ios ? \"absolute\" : ((_a = values.find(conf => conf.position)) === null || _a === void 0 ? void 0 : _a.position) || \"fixed\",\n            parent: ((_b = values.find(conf => conf.parent)) === null || _b === void 0 ? void 0 : _b.parent) || null,\n            tooltipSpace: ((_c = values.find(conf => conf.tooltipSpace)) === null || _c === void 0 ? void 0 : _c.tooltipSpace) || windowSpace,\n        });\n    }\n});\nconst knownHeight = /*@__PURE__*/new WeakMap();\nconst tooltipPlugin = /*@__PURE__*/ViewPlugin.fromClass(class {\n    constructor(view) {\n        this.view = view;\n        this.above = [];\n        this.inView = true;\n        this.madeAbsolute = false;\n        this.lastTransaction = 0;\n        this.measureTimeout = -1;\n        let config = view.state.facet(tooltipConfig);\n        this.position = config.position;\n        this.parent = config.parent;\n        this.classes = view.themeClasses;\n        this.createContainer();\n        this.measureReq = { read: this.readMeasure.bind(this), write: this.writeMeasure.bind(this), key: this };\n        this.resizeObserver = typeof ResizeObserver == \"function\" ? new ResizeObserver(() => this.measureSoon()) : null;\n        this.manager = new TooltipViewManager(view, showTooltip, (t, p) => this.createTooltip(t, p), t => {\n            if (this.resizeObserver)\n                this.resizeObserver.unobserve(t.dom);\n            t.dom.remove();\n        });\n        this.above = this.manager.tooltips.map(t => !!t.above);\n        this.intersectionObserver = typeof IntersectionObserver == \"function\" ? new IntersectionObserver(entries => {\n            if (Date.now() > this.lastTransaction - 50 &&\n                entries.length > 0 && entries[entries.length - 1].intersectionRatio < 1)\n                this.measureSoon();\n        }, { threshold: [1] }) : null;\n        this.observeIntersection();\n        view.win.addEventListener(\"resize\", this.measureSoon = this.measureSoon.bind(this));\n        this.maybeMeasure();\n    }\n    createContainer() {\n        if (this.parent) {\n            this.container = document.createElement(\"div\");\n            this.container.style.position = \"relative\";\n            this.container.className = this.view.themeClasses;\n            this.parent.appendChild(this.container);\n        }\n        else {\n            this.container = this.view.dom;\n        }\n    }\n    observeIntersection() {\n        if (this.intersectionObserver) {\n            this.intersectionObserver.disconnect();\n            for (let tooltip of this.manager.tooltipViews)\n                this.intersectionObserver.observe(tooltip.dom);\n        }\n    }\n    measureSoon() {\n        if (this.measureTimeout < 0)\n            this.measureTimeout = setTimeout(() => {\n                this.measureTimeout = -1;\n                this.maybeMeasure();\n            }, 50);\n    }\n    update(update) {\n        if (update.transactions.length)\n            this.lastTransaction = Date.now();\n        let updated = this.manager.update(update, this.above);\n        if (updated)\n            this.observeIntersection();\n        let shouldMeasure = updated || update.geometryChanged;\n        let newConfig = update.state.facet(tooltipConfig);\n        if (newConfig.position != this.position && !this.madeAbsolute) {\n            this.position = newConfig.position;\n            for (let t of this.manager.tooltipViews)\n                t.dom.style.position = this.position;\n            shouldMeasure = true;\n        }\n        if (newConfig.parent != this.parent) {\n            if (this.parent)\n                this.container.remove();\n            this.parent = newConfig.parent;\n            this.createContainer();\n            for (let t of this.manager.tooltipViews)\n                this.container.appendChild(t.dom);\n            shouldMeasure = true;\n        }\n        else if (this.parent && this.view.themeClasses != this.classes) {\n            this.classes = this.container.className = this.view.themeClasses;\n        }\n        if (shouldMeasure)\n            this.maybeMeasure();\n    }\n    createTooltip(tooltip, prev) {\n        let tooltipView = tooltip.create(this.view);\n        let before = prev ? prev.dom : null;\n        tooltipView.dom.classList.add(\"cm-tooltip\");\n        if (tooltip.arrow && !tooltipView.dom.querySelector(\".cm-tooltip > .cm-tooltip-arrow\")) {\n            let arrow = document.createElement(\"div\");\n            arrow.className = \"cm-tooltip-arrow\";\n            tooltipView.dom.appendChild(arrow);\n        }\n        tooltipView.dom.style.position = this.position;\n        tooltipView.dom.style.top = Outside;\n        tooltipView.dom.style.left = \"0px\";\n        this.container.insertBefore(tooltipView.dom, before);\n        if (tooltipView.mount)\n            tooltipView.mount(this.view);\n        if (this.resizeObserver)\n            this.resizeObserver.observe(tooltipView.dom);\n        return tooltipView;\n    }\n    destroy() {\n        var _a, _b, _c;\n        this.view.win.removeEventListener(\"resize\", this.measureSoon);\n        for (let tooltipView of this.manager.tooltipViews) {\n            tooltipView.dom.remove();\n            (_a = tooltipView.destroy) === null || _a === void 0 ? void 0 : _a.call(tooltipView);\n        }\n        if (this.parent)\n            this.container.remove();\n        (_b = this.resizeObserver) === null || _b === void 0 ? void 0 : _b.disconnect();\n        (_c = this.intersectionObserver) === null || _c === void 0 ? void 0 : _c.disconnect();\n        clearTimeout(this.measureTimeout);\n    }\n    readMeasure() {\n        let scaleX = 1, scaleY = 1, makeAbsolute = false;\n        if (this.position == \"fixed\" && this.manager.tooltipViews.length) {\n            let { dom } = this.manager.tooltipViews[0];\n            if (browser.gecko) {\n                // Firefox sets the element's `offsetParent` to the\n                // transformed element when a transform interferes with fixed\n                // positioning.\n                makeAbsolute = dom.offsetParent != this.container.ownerDocument.body;\n            }\n            else if (dom.style.top == Outside && dom.style.left == \"0px\") {\n                // On other browsers, we have to awkwardly try and use other\n                // information to detect a transform.\n                let rect = dom.getBoundingClientRect();\n                makeAbsolute = Math.abs(rect.top + 10000) > 1 || Math.abs(rect.left) > 1;\n            }\n        }\n        if (makeAbsolute || this.position == \"absolute\") {\n            if (this.parent) {\n                let rect = this.parent.getBoundingClientRect();\n                if (rect.width && rect.height) {\n                    scaleX = rect.width / this.parent.offsetWidth;\n                    scaleY = rect.height / this.parent.offsetHeight;\n                }\n            }\n            else {\n                ({ scaleX, scaleY } = this.view.viewState);\n            }\n        }\n        let visible = this.view.scrollDOM.getBoundingClientRect(), margins = getScrollMargins(this.view);\n        return {\n            visible: {\n                left: visible.left + margins.left, top: visible.top + margins.top,\n                right: visible.right - margins.right, bottom: visible.bottom - margins.bottom\n            },\n            parent: this.parent ? this.container.getBoundingClientRect() : this.view.dom.getBoundingClientRect(),\n            pos: this.manager.tooltips.map((t, i) => {\n                let tv = this.manager.tooltipViews[i];\n                return tv.getCoords ? tv.getCoords(t.pos) : this.view.coordsAtPos(t.pos);\n            }),\n            size: this.manager.tooltipViews.map(({ dom }) => dom.getBoundingClientRect()),\n            space: this.view.state.facet(tooltipConfig).tooltipSpace(this.view),\n            scaleX, scaleY, makeAbsolute\n        };\n    }\n    writeMeasure(measured) {\n        var _a;\n        if (measured.makeAbsolute) {\n            this.madeAbsolute = true;\n            this.position = \"absolute\";\n            for (let t of this.manager.tooltipViews)\n                t.dom.style.position = \"absolute\";\n        }\n        let { visible, space, scaleX, scaleY } = measured;\n        let others = [];\n        for (let i = 0; i < this.manager.tooltips.length; i++) {\n            let tooltip = this.manager.tooltips[i], tView = this.manager.tooltipViews[i], { dom } = tView;\n            let pos = measured.pos[i], size = measured.size[i];\n            // Hide tooltips that are outside of the editor.\n            if (!pos || tooltip.clip !== false && (pos.bottom <= Math.max(visible.top, space.top) ||\n                pos.top >= Math.min(visible.bottom, space.bottom) ||\n                pos.right < Math.max(visible.left, space.left) - .1 ||\n                pos.left > Math.min(visible.right, space.right) + .1)) {\n                dom.style.top = Outside;\n                continue;\n            }\n            let arrow = tooltip.arrow ? tView.dom.querySelector(\".cm-tooltip-arrow\") : null;\n            let arrowHeight = arrow ? 7 /* Arrow.Size */ : 0;\n            let width = size.right - size.left, height = (_a = knownHeight.get(tView)) !== null && _a !== void 0 ? _a : size.bottom - size.top;\n            let offset = tView.offset || noOffset, ltr = this.view.textDirection == Direction.LTR;\n            let left = size.width > space.right - space.left\n                ? (ltr ? space.left : space.right - size.width)\n                : ltr ? Math.max(space.left, Math.min(pos.left - (arrow ? 14 /* Arrow.Offset */ : 0) + offset.x, space.right - width))\n                    : Math.min(Math.max(space.left, pos.left - width + (arrow ? 14 /* Arrow.Offset */ : 0) - offset.x), space.right - width);\n            let above = this.above[i];\n            if (!tooltip.strictSide && (above\n                ? pos.top - height - arrowHeight - offset.y < space.top\n                : pos.bottom + height + arrowHeight + offset.y > space.bottom) &&\n                above == (space.bottom - pos.bottom > pos.top - space.top))\n                above = this.above[i] = !above;\n            let spaceVert = (above ? pos.top - space.top : space.bottom - pos.bottom) - arrowHeight;\n            if (spaceVert < height && tView.resize !== false) {\n                if (spaceVert < this.view.defaultLineHeight) {\n                    dom.style.top = Outside;\n                    continue;\n                }\n                knownHeight.set(tView, height);\n                dom.style.height = (height = spaceVert) / scaleY + \"px\";\n            }\n            else if (dom.style.height) {\n                dom.style.height = \"\";\n            }\n            let top = above ? pos.top - height - arrowHeight - offset.y : pos.bottom + arrowHeight + offset.y;\n            let right = left + width;\n            if (tView.overlap !== true)\n                for (let r of others)\n                    if (r.left < right && r.right > left && r.top < top + height && r.bottom > top)\n                        top = above ? r.top - height - 2 - arrowHeight : r.bottom + arrowHeight + 2;\n            if (this.position == \"absolute\") {\n                dom.style.top = (top - measured.parent.top) / scaleY + \"px\";\n                setLeftStyle(dom, (left - measured.parent.left) / scaleX);\n            }\n            else {\n                dom.style.top = top / scaleY + \"px\";\n                setLeftStyle(dom, left / scaleX);\n            }\n            if (arrow) {\n                let arrowLeft = pos.left + (ltr ? offset.x : -offset.x) - (left + 14 /* Arrow.Offset */ - 7 /* Arrow.Size */);\n                arrow.style.left = arrowLeft / scaleX + \"px\";\n            }\n            if (tView.overlap !== true)\n                others.push({ left, top, right, bottom: top + height });\n            dom.classList.toggle(\"cm-tooltip-above\", above);\n            dom.classList.toggle(\"cm-tooltip-below\", !above);\n            if (tView.positioned)\n                tView.positioned(measured.space);\n        }\n    }\n    maybeMeasure() {\n        if (this.manager.tooltips.length) {\n            if (this.view.inView)\n                this.view.requestMeasure(this.measureReq);\n            if (this.inView != this.view.inView) {\n                this.inView = this.view.inView;\n                if (!this.inView)\n                    for (let tv of this.manager.tooltipViews)\n                        tv.dom.style.top = Outside;\n            }\n        }\n    }\n}, {\n    eventObservers: {\n        scroll() { this.maybeMeasure(); }\n    }\n});\nfunction setLeftStyle(elt, value) {\n    let current = parseInt(elt.style.left, 10);\n    if (isNaN(current) || Math.abs(value - current) > 1)\n        elt.style.left = value + \"px\";\n}\nconst baseTheme = /*@__PURE__*/EditorView.baseTheme({\n    \".cm-tooltip\": {\n        zIndex: 500,\n        boxSizing: \"border-box\"\n    },\n    \"&light .cm-tooltip\": {\n        border: \"1px solid #bbb\",\n        backgroundColor: \"#f5f5f5\"\n    },\n    \"&light .cm-tooltip-section:not(:first-child)\": {\n        borderTop: \"1px solid #bbb\",\n    },\n    \"&dark .cm-tooltip\": {\n        backgroundColor: \"#333338\",\n        color: \"white\"\n    },\n    \".cm-tooltip-arrow\": {\n        height: `${7 /* Arrow.Size */}px`,\n        width: `${7 /* Arrow.Size */ * 2}px`,\n        position: \"absolute\",\n        zIndex: -1,\n        overflow: \"hidden\",\n        \"&:before, &:after\": {\n            content: \"''\",\n            position: \"absolute\",\n            width: 0,\n            height: 0,\n            borderLeft: `${7 /* Arrow.Size */}px solid transparent`,\n            borderRight: `${7 /* Arrow.Size */}px solid transparent`,\n        },\n        \".cm-tooltip-above &\": {\n            bottom: `-${7 /* Arrow.Size */}px`,\n            \"&:before\": {\n                borderTop: `${7 /* Arrow.Size */}px solid #bbb`,\n            },\n            \"&:after\": {\n                borderTop: `${7 /* Arrow.Size */}px solid #f5f5f5`,\n                bottom: \"1px\"\n            }\n        },\n        \".cm-tooltip-below &\": {\n            top: `-${7 /* Arrow.Size */}px`,\n            \"&:before\": {\n                borderBottom: `${7 /* Arrow.Size */}px solid #bbb`,\n            },\n            \"&:after\": {\n                borderBottom: `${7 /* Arrow.Size */}px solid #f5f5f5`,\n                top: \"1px\"\n            }\n        },\n    },\n    \"&dark .cm-tooltip .cm-tooltip-arrow\": {\n        \"&:before\": {\n            borderTopColor: \"#333338\",\n            borderBottomColor: \"#333338\"\n        },\n        \"&:after\": {\n            borderTopColor: \"transparent\",\n            borderBottomColor: \"transparent\"\n        }\n    }\n});\nconst noOffset = { x: 0, y: 0 };\n/**\nFacet to which an extension can add a value to show a tooltip.\n*/\nconst showTooltip = /*@__PURE__*/Facet.define({\n    enables: [tooltipPlugin, baseTheme]\n});\nconst showHoverTooltip = /*@__PURE__*/Facet.define({\n    combine: inputs => inputs.reduce((a, i) => a.concat(i), [])\n});\nclass HoverTooltipHost {\n    // Needs to be static so that host tooltip instances always match\n    static create(view) {\n        return new HoverTooltipHost(view);\n    }\n    constructor(view) {\n        this.view = view;\n        this.mounted = false;\n        this.dom = document.createElement(\"div\");\n        this.dom.classList.add(\"cm-tooltip-hover\");\n        this.manager = new TooltipViewManager(view, showHoverTooltip, (t, p) => this.createHostedView(t, p), t => t.dom.remove());\n    }\n    createHostedView(tooltip, prev) {\n        let hostedView = tooltip.create(this.view);\n        hostedView.dom.classList.add(\"cm-tooltip-section\");\n        this.dom.insertBefore(hostedView.dom, prev ? prev.dom.nextSibling : this.dom.firstChild);\n        if (this.mounted && hostedView.mount)\n            hostedView.mount(this.view);\n        return hostedView;\n    }\n    mount(view) {\n        for (let hostedView of this.manager.tooltipViews) {\n            if (hostedView.mount)\n                hostedView.mount(view);\n        }\n        this.mounted = true;\n    }\n    positioned(space) {\n        for (let hostedView of this.manager.tooltipViews) {\n            if (hostedView.positioned)\n                hostedView.positioned(space);\n        }\n    }\n    update(update) {\n        this.manager.update(update);\n    }\n    destroy() {\n        var _a;\n        for (let t of this.manager.tooltipViews)\n            (_a = t.destroy) === null || _a === void 0 ? void 0 : _a.call(t);\n    }\n    passProp(name) {\n        let value = undefined;\n        for (let view of this.manager.tooltipViews) {\n            let given = view[name];\n            if (given !== undefined) {\n                if (value === undefined)\n                    value = given;\n                else if (value !== given)\n                    return undefined;\n            }\n        }\n        return value;\n    }\n    get offset() { return this.passProp(\"offset\"); }\n    get getCoords() { return this.passProp(\"getCoords\"); }\n    get overlap() { return this.passProp(\"overlap\"); }\n    get resize() { return this.passProp(\"resize\"); }\n}\nconst showHoverTooltipHost = /*@__PURE__*/showTooltip.compute([showHoverTooltip], state => {\n    let tooltips = state.facet(showHoverTooltip);\n    if (tooltips.length === 0)\n        return null;\n    return {\n        pos: Math.min(...tooltips.map(t => t.pos)),\n        end: Math.max(...tooltips.map(t => { var _a; return (_a = t.end) !== null && _a !== void 0 ? _a : t.pos; })),\n        create: HoverTooltipHost.create,\n        above: tooltips[0].above,\n        arrow: tooltips.some(t => t.arrow),\n    };\n});\nclass HoverPlugin {\n    constructor(view, source, field, setHover, hoverTime) {\n        this.view = view;\n        this.source = source;\n        this.field = field;\n        this.setHover = setHover;\n        this.hoverTime = hoverTime;\n        this.hoverTimeout = -1;\n        this.restartTimeout = -1;\n        this.pending = null;\n        this.lastMove = { x: 0, y: 0, target: view.dom, time: 0 };\n        this.checkHover = this.checkHover.bind(this);\n        view.dom.addEventListener(\"mouseleave\", this.mouseleave = this.mouseleave.bind(this));\n        view.dom.addEventListener(\"mousemove\", this.mousemove = this.mousemove.bind(this));\n    }\n    update() {\n        if (this.pending) {\n            this.pending = null;\n            clearTimeout(this.restartTimeout);\n            this.restartTimeout = setTimeout(() => this.startHover(), 20);\n        }\n    }\n    get active() {\n        return this.view.state.field(this.field);\n    }\n    checkHover() {\n        this.hoverTimeout = -1;\n        if (this.active.length)\n            return;\n        let hovered = Date.now() - this.lastMove.time;\n        if (hovered < this.hoverTime)\n            this.hoverTimeout = setTimeout(this.checkHover, this.hoverTime - hovered);\n        else\n            this.startHover();\n    }\n    startHover() {\n        clearTimeout(this.restartTimeout);\n        let { view, lastMove } = this;\n        let desc = view.docView.nearest(lastMove.target);\n        if (!desc)\n            return;\n        let pos, side = 1;\n        if (desc instanceof WidgetView) {\n            pos = desc.posAtStart;\n        }\n        else {\n            pos = view.posAtCoords(lastMove);\n            if (pos == null)\n                return;\n            let posCoords = view.coordsAtPos(pos);\n            if (!posCoords ||\n                lastMove.y < posCoords.top || lastMove.y > posCoords.bottom ||\n                lastMove.x < posCoords.left - view.defaultCharacterWidth ||\n                lastMove.x > posCoords.right + view.defaultCharacterWidth)\n                return;\n            let bidi = view.bidiSpans(view.state.doc.lineAt(pos)).find(s => s.from <= pos && s.to >= pos);\n            let rtl = bidi && bidi.dir == Direction.RTL ? -1 : 1;\n            side = (lastMove.x < posCoords.left ? -rtl : rtl);\n        }\n        let open = this.source(view, pos, side);\n        if (open === null || open === void 0 ? void 0 : open.then) {\n            let pending = this.pending = { pos };\n            open.then(result => {\n                if (this.pending == pending) {\n                    this.pending = null;\n                    if (result && !(Array.isArray(result) && !result.length))\n                        view.dispatch({ effects: this.setHover.of(Array.isArray(result) ? result : [result]) });\n                }\n            }, e => logException(view.state, e, \"hover tooltip\"));\n        }\n        else if (open && !(Array.isArray(open) && !open.length)) {\n            view.dispatch({ effects: this.setHover.of(Array.isArray(open) ? open : [open]) });\n        }\n    }\n    get tooltip() {\n        let plugin = this.view.plugin(tooltipPlugin);\n        let index = plugin ? plugin.manager.tooltips.findIndex(t => t.create == HoverTooltipHost.create) : -1;\n        return index > -1 ? plugin.manager.tooltipViews[index] : null;\n    }\n    mousemove(event) {\n        var _a, _b;\n        this.lastMove = { x: event.clientX, y: event.clientY, target: event.target, time: Date.now() };\n        if (this.hoverTimeout < 0)\n            this.hoverTimeout = setTimeout(this.checkHover, this.hoverTime);\n        let { active, tooltip } = this;\n        if (active.length && tooltip && !isInTooltip(tooltip.dom, event) || this.pending) {\n            let { pos } = active[0] || this.pending, end = (_b = (_a = active[0]) === null || _a === void 0 ? void 0 : _a.end) !== null && _b !== void 0 ? _b : pos;\n            if ((pos == end ? this.view.posAtCoords(this.lastMove) != pos\n                : !isOverRange(this.view, pos, end, event.clientX, event.clientY))) {\n                this.view.dispatch({ effects: this.setHover.of([]) });\n                this.pending = null;\n            }\n        }\n    }\n    mouseleave(event) {\n        clearTimeout(this.hoverTimeout);\n        this.hoverTimeout = -1;\n        let { active } = this;\n        if (active.length) {\n            let { tooltip } = this;\n            let inTooltip = tooltip && tooltip.dom.contains(event.relatedTarget);\n            if (!inTooltip)\n                this.view.dispatch({ effects: this.setHover.of([]) });\n            else\n                this.watchTooltipLeave(tooltip.dom);\n        }\n    }\n    watchTooltipLeave(tooltip) {\n        let watch = (event) => {\n            tooltip.removeEventListener(\"mouseleave\", watch);\n            if (this.active.length && !this.view.dom.contains(event.relatedTarget))\n                this.view.dispatch({ effects: this.setHover.of([]) });\n        };\n        tooltip.addEventListener(\"mouseleave\", watch);\n    }\n    destroy() {\n        clearTimeout(this.hoverTimeout);\n        this.view.dom.removeEventListener(\"mouseleave\", this.mouseleave);\n        this.view.dom.removeEventListener(\"mousemove\", this.mousemove);\n    }\n}\nconst tooltipMargin = 4;\nfunction isInTooltip(tooltip, event) {\n    let { left, right, top, bottom } = tooltip.getBoundingClientRect(), arrow;\n    if (arrow = tooltip.querySelector(\".cm-tooltip-arrow\")) {\n        let arrowRect = arrow.getBoundingClientRect();\n        top = Math.min(arrowRect.top, top);\n        bottom = Math.max(arrowRect.bottom, bottom);\n    }\n    return event.clientX >= left - tooltipMargin && event.clientX <= right + tooltipMargin &&\n        event.clientY >= top - tooltipMargin && event.clientY <= bottom + tooltipMargin;\n}\nfunction isOverRange(view, from, to, x, y, margin) {\n    let rect = view.scrollDOM.getBoundingClientRect();\n    let docBottom = view.documentTop + view.documentPadding.top + view.contentHeight;\n    if (rect.left > x || rect.right < x || rect.top > y || Math.min(rect.bottom, docBottom) < y)\n        return false;\n    let pos = view.posAtCoords({ x, y }, false);\n    return pos >= from && pos <= to;\n}\n/**\nSet up a hover tooltip, which shows up when the pointer hovers\nover ranges of text. The callback is called when the mouse hovers\nover the document text. It should, if there is a tooltip\nassociated with position `pos`, return the tooltip description\n(either directly or in a promise). The `side` argument indicates\non which side of the position the pointer is—it will be -1 if the\npointer is before the position, 1 if after the position.\n\nNote that all hover tooltips are hosted within a single tooltip\ncontainer element. This allows multiple tooltips over the same\nrange to be \"merged\" together without overlapping.\n\nThe return value is a valid [editor extension](https://codemirror.net/6/docs/ref/#state.Extension)\nbut also provides an `active` property holding a state field that\ncan be used to read the currently active tooltips produced by this\nextension.\n*/\nfunction hoverTooltip(source, options = {}) {\n    let setHover = StateEffect.define();\n    let hoverState = StateField.define({\n        create() { return []; },\n        update(value, tr) {\n            if (value.length) {\n                if (options.hideOnChange && (tr.docChanged || tr.selection))\n                    value = [];\n                else if (options.hideOn)\n                    value = value.filter(v => !options.hideOn(tr, v));\n                if (tr.docChanged) {\n                    let mapped = [];\n                    for (let tooltip of value) {\n                        let newPos = tr.changes.mapPos(tooltip.pos, -1, MapMode.TrackDel);\n                        if (newPos != null) {\n                            let copy = Object.assign(Object.create(null), tooltip);\n                            copy.pos = newPos;\n                            if (copy.end != null)\n                                copy.end = tr.changes.mapPos(copy.end);\n                            mapped.push(copy);\n                        }\n                    }\n                    value = mapped;\n                }\n            }\n            for (let effect of tr.effects) {\n                if (effect.is(setHover))\n                    value = effect.value;\n                if (effect.is(closeHoverTooltipEffect))\n                    value = [];\n            }\n            return value;\n        },\n        provide: f => showHoverTooltip.from(f)\n    });\n    return {\n        active: hoverState,\n        extension: [\n            hoverState,\n            ViewPlugin.define(view => new HoverPlugin(view, source, hoverState, setHover, options.hoverTime || 300 /* Hover.Time */)),\n            showHoverTooltipHost\n        ]\n    };\n}\n/**\nGet the active tooltip view for a given tooltip, if available.\n*/\nfunction getTooltip(view, tooltip) {\n    let plugin = view.plugin(tooltipPlugin);\n    if (!plugin)\n        return null;\n    let found = plugin.manager.tooltips.indexOf(tooltip);\n    return found < 0 ? null : plugin.manager.tooltipViews[found];\n}\n/**\nReturns true if any hover tooltips are currently active.\n*/\nfunction hasHoverTooltips(state) {\n    return state.facet(showHoverTooltip).some(x => x);\n}\nconst closeHoverTooltipEffect = /*@__PURE__*/StateEffect.define();\n/**\nTransaction effect that closes all hover tooltips.\n*/\nconst closeHoverTooltips = /*@__PURE__*/closeHoverTooltipEffect.of(null);\n/**\nTell the tooltip extension to recompute the position of the active\ntooltips. This can be useful when something happens (such as a\nre-positioning or CSS change affecting the editor) that could\ninvalidate the existing tooltip positions.\n*/\nfunction repositionTooltips(view) {\n    let plugin = view.plugin(tooltipPlugin);\n    if (plugin)\n        plugin.maybeMeasure();\n}\n\nconst panelConfig = /*@__PURE__*/Facet.define({\n    combine(configs) {\n        let topContainer, bottomContainer;\n        for (let c of configs) {\n            topContainer = topContainer || c.topContainer;\n            bottomContainer = bottomContainer || c.bottomContainer;\n        }\n        return { topContainer, bottomContainer };\n    }\n});\n/**\nConfigures the panel-managing extension.\n*/\nfunction panels(config) {\n    return config ? [panelConfig.of(config)] : [];\n}\n/**\nGet the active panel created by the given constructor, if any.\nThis can be useful when you need access to your panels' DOM\nstructure.\n*/\nfunction getPanel(view, panel) {\n    let plugin = view.plugin(panelPlugin);\n    let index = plugin ? plugin.specs.indexOf(panel) : -1;\n    return index > -1 ? plugin.panels[index] : null;\n}\nconst panelPlugin = /*@__PURE__*/ViewPlugin.fromClass(class {\n    constructor(view) {\n        this.input = view.state.facet(showPanel);\n        this.specs = this.input.filter(s => s);\n        this.panels = this.specs.map(spec => spec(view));\n        let conf = view.state.facet(panelConfig);\n        this.top = new PanelGroup(view, true, conf.topContainer);\n        this.bottom = new PanelGroup(view, false, conf.bottomContainer);\n        this.top.sync(this.panels.filter(p => p.top));\n        this.bottom.sync(this.panels.filter(p => !p.top));\n        for (let p of this.panels) {\n            p.dom.classList.add(\"cm-panel\");\n            if (p.mount)\n                p.mount();\n        }\n    }\n    update(update) {\n        let conf = update.state.facet(panelConfig);\n        if (this.top.container != conf.topContainer) {\n            this.top.sync([]);\n            this.top = new PanelGroup(update.view, true, conf.topContainer);\n        }\n        if (this.bottom.container != conf.bottomContainer) {\n            this.bottom.sync([]);\n            this.bottom = new PanelGroup(update.view, false, conf.bottomContainer);\n        }\n        this.top.syncClasses();\n        this.bottom.syncClasses();\n        let input = update.state.facet(showPanel);\n        if (input != this.input) {\n            let specs = input.filter(x => x);\n            let panels = [], top = [], bottom = [], mount = [];\n            for (let spec of specs) {\n                let known = this.specs.indexOf(spec), panel;\n                if (known < 0) {\n                    panel = spec(update.view);\n                    mount.push(panel);\n                }\n                else {\n                    panel = this.panels[known];\n                    if (panel.update)\n                        panel.update(update);\n                }\n                panels.push(panel);\n                (panel.top ? top : bottom).push(panel);\n            }\n            this.specs = specs;\n            this.panels = panels;\n            this.top.sync(top);\n            this.bottom.sync(bottom);\n            for (let p of mount) {\n                p.dom.classList.add(\"cm-panel\");\n                if (p.mount)\n                    p.mount();\n            }\n        }\n        else {\n            for (let p of this.panels)\n                if (p.update)\n                    p.update(update);\n        }\n    }\n    destroy() {\n        this.top.sync([]);\n        this.bottom.sync([]);\n    }\n}, {\n    provide: plugin => EditorView.scrollMargins.of(view => {\n        let value = view.plugin(plugin);\n        return value && { top: value.top.scrollMargin(), bottom: value.bottom.scrollMargin() };\n    })\n});\nclass PanelGroup {\n    constructor(view, top, container) {\n        this.view = view;\n        this.top = top;\n        this.container = container;\n        this.dom = undefined;\n        this.classes = \"\";\n        this.panels = [];\n        this.syncClasses();\n    }\n    sync(panels) {\n        for (let p of this.panels)\n            if (p.destroy && panels.indexOf(p) < 0)\n                p.destroy();\n        this.panels = panels;\n        this.syncDOM();\n    }\n    syncDOM() {\n        if (this.panels.length == 0) {\n            if (this.dom) {\n                this.dom.remove();\n                this.dom = undefined;\n            }\n            return;\n        }\n        if (!this.dom) {\n            this.dom = document.createElement(\"div\");\n            this.dom.className = this.top ? \"cm-panels cm-panels-top\" : \"cm-panels cm-panels-bottom\";\n            this.dom.style[this.top ? \"top\" : \"bottom\"] = \"0\";\n            let parent = this.container || this.view.dom;\n            parent.insertBefore(this.dom, this.top ? parent.firstChild : null);\n        }\n        let curDOM = this.dom.firstChild;\n        for (let panel of this.panels) {\n            if (panel.dom.parentNode == this.dom) {\n                while (curDOM != panel.dom)\n                    curDOM = rm(curDOM);\n                curDOM = curDOM.nextSibling;\n            }\n            else {\n                this.dom.insertBefore(panel.dom, curDOM);\n            }\n        }\n        while (curDOM)\n            curDOM = rm(curDOM);\n    }\n    scrollMargin() {\n        return !this.dom || this.container ? 0\n            : Math.max(0, this.top ?\n                this.dom.getBoundingClientRect().bottom - Math.max(0, this.view.scrollDOM.getBoundingClientRect().top) :\n                Math.min(innerHeight, this.view.scrollDOM.getBoundingClientRect().bottom) - this.dom.getBoundingClientRect().top);\n    }\n    syncClasses() {\n        if (!this.container || this.classes == this.view.themeClasses)\n            return;\n        for (let cls of this.classes.split(\" \"))\n            if (cls)\n                this.container.classList.remove(cls);\n        for (let cls of (this.classes = this.view.themeClasses).split(\" \"))\n            if (cls)\n                this.container.classList.add(cls);\n    }\n}\nfunction rm(node) {\n    let next = node.nextSibling;\n    node.remove();\n    return next;\n}\n/**\nOpening a panel is done by providing a constructor function for\nthe panel through this facet. (The panel is closed again when its\nconstructor is no longer provided.) Values of `null` are ignored.\n*/\nconst showPanel = /*@__PURE__*/Facet.define({\n    enables: panelPlugin\n});\n\n/**\nShow a panel above or below the editor to show the user a message\nor prompt them for input. Returns an effect that can be dispatched\nto close the dialog, and a promise that resolves when the dialog\nis closed or a form inside of it is submitted.\n\nYou are encouraged, if your handling of the result of the promise\ndispatches a transaction, to include the `close` effect in it. If\nyou don't, this function will automatically dispatch a separate\ntransaction right after.\n*/\nfunction showDialog(view, config) {\n    let resolve;\n    let promise = new Promise(r => resolve = r);\n    let panelCtor = (view) => createDialog(view, config, resolve);\n    if (view.state.field(dialogField, false)) {\n        view.dispatch({ effects: openDialogEffect.of(panelCtor) });\n    }\n    else {\n        view.dispatch({ effects: StateEffect.appendConfig.of(dialogField.init(() => [panelCtor])) });\n    }\n    let close = closeDialogEffect.of(panelCtor);\n    return { close, result: promise.then(form => {\n            let queue = view.win.queueMicrotask || ((f) => view.win.setTimeout(f, 10));\n            queue(() => {\n                if (view.state.field(dialogField).indexOf(panelCtor) > -1)\n                    view.dispatch({ effects: close });\n            });\n            return form;\n        }) };\n}\n/**\nFind the [`Panel`](https://codemirror.net/6/docs/ref/#view.Panel) for an open dialog, using a class\nname as identifier.\n*/\nfunction getDialog(view, className) {\n    let dialogs = view.state.field(dialogField, false) || [];\n    for (let open of dialogs) {\n        let panel = getPanel(view, open);\n        if (panel && panel.dom.classList.contains(className))\n            return panel;\n    }\n    return null;\n}\nconst dialogField = /*@__PURE__*/StateField.define({\n    create() { return []; },\n    update(dialogs, tr) {\n        for (let e of tr.effects) {\n            if (e.is(openDialogEffect))\n                dialogs = [e.value].concat(dialogs);\n            else if (e.is(closeDialogEffect))\n                dialogs = dialogs.filter(d => d != e.value);\n        }\n        return dialogs;\n    },\n    provide: f => showPanel.computeN([f], state => state.field(f))\n});\nconst openDialogEffect = /*@__PURE__*/StateEffect.define();\nconst closeDialogEffect = /*@__PURE__*/StateEffect.define();\nfunction createDialog(view, config, result) {\n    let content = config.content ? config.content(view, () => done(null)) : null;\n    if (!content) {\n        content = elt(\"form\");\n        if (config.input) {\n            let input = elt(\"input\", config.input);\n            if (/^(text|password|number|email|tel|url)$/.test(input.type))\n                input.classList.add(\"cm-textfield\");\n            if (!input.name)\n                input.name = \"input\";\n            content.appendChild(elt(\"label\", (config.label || \"\") + \": \", input));\n        }\n        else {\n            content.appendChild(document.createTextNode(config.label || \"\"));\n        }\n        content.appendChild(document.createTextNode(\" \"));\n        content.appendChild(elt(\"button\", { class: \"cm-button\", type: \"submit\" }, config.submitLabel || \"OK\"));\n    }\n    let forms = content.nodeName == \"FORM\" ? [content] : content.querySelectorAll(\"form\");\n    for (let i = 0; i < forms.length; i++) {\n        let form = forms[i];\n        form.addEventListener(\"keydown\", (event) => {\n            if (event.keyCode == 27) { // Escape\n                event.preventDefault();\n                done(null);\n            }\n            else if (event.keyCode == 13) { // Enter\n                event.preventDefault();\n                done(form);\n            }\n        });\n        form.addEventListener(\"submit\", (event) => {\n            event.preventDefault();\n            done(form);\n        });\n    }\n    let panel = elt(\"div\", content, elt(\"button\", {\n        onclick: () => done(null),\n        \"aria-label\": view.state.phrase(\"close\"),\n        class: \"cm-dialog-close\",\n        type: \"button\"\n    }, [\"×\"]));\n    if (config.class)\n        panel.className = config.class;\n    panel.classList.add(\"cm-dialog\");\n    function done(form) {\n        if (panel.contains(panel.ownerDocument.activeElement))\n            view.focus();\n        result(form);\n    }\n    return {\n        dom: panel,\n        top: config.top,\n        mount: () => {\n            if (config.focus) {\n                let focus;\n                if (typeof config.focus == \"string\")\n                    focus = content.querySelector(config.focus);\n                else\n                    focus = content.querySelector(\"input\") || content.querySelector(\"button\");\n                if (focus && \"select\" in focus)\n                    focus.select();\n                else if (focus && \"focus\" in focus)\n                    focus.focus();\n            }\n        }\n    };\n}\n\n/**\nA gutter marker represents a bit of information attached to a line\nin a specific gutter. Your own custom markers have to extend this\nclass.\n*/\nclass GutterMarker extends RangeValue {\n    /**\n    @internal\n    */\n    compare(other) {\n        return this == other || this.constructor == other.constructor && this.eq(other);\n    }\n    /**\n    Compare this marker to another marker of the same type.\n    */\n    eq(other) { return false; }\n    /**\n    Called if the marker has a `toDOM` method and its representation\n    was removed from a gutter.\n    */\n    destroy(dom) { }\n}\nGutterMarker.prototype.elementClass = \"\";\nGutterMarker.prototype.toDOM = undefined;\nGutterMarker.prototype.mapMode = MapMode.TrackBefore;\nGutterMarker.prototype.startSide = GutterMarker.prototype.endSide = -1;\nGutterMarker.prototype.point = true;\n/**\nFacet used to add a class to all gutter elements for a given line.\nMarkers given to this facet should _only_ define an\n[`elementclass`](https://codemirror.net/6/docs/ref/#view.GutterMarker.elementClass), not a\n[`toDOM`](https://codemirror.net/6/docs/ref/#view.GutterMarker.toDOM) (or the marker will appear\nin all gutters for the line).\n*/\nconst gutterLineClass = /*@__PURE__*/Facet.define();\n/**\nFacet used to add a class to all gutter elements next to a widget.\nShould not provide widgets with a `toDOM` method.\n*/\nconst gutterWidgetClass = /*@__PURE__*/Facet.define();\nconst defaults = {\n    class: \"\",\n    renderEmptyElements: false,\n    elementStyle: \"\",\n    markers: () => RangeSet.empty,\n    lineMarker: () => null,\n    widgetMarker: () => null,\n    lineMarkerChange: null,\n    initialSpacer: null,\n    updateSpacer: null,\n    domEventHandlers: {},\n    side: \"before\"\n};\nconst activeGutters = /*@__PURE__*/Facet.define();\n/**\nDefine an editor gutter. The order in which the gutters appear is\ndetermined by their extension priority.\n*/\nfunction gutter(config) {\n    return [gutters(), activeGutters.of({ ...defaults, ...config })];\n}\nconst unfixGutters = /*@__PURE__*/Facet.define({\n    combine: values => values.some(x => x)\n});\n/**\nThe gutter-drawing plugin is automatically enabled when you add a\ngutter, but you can use this function to explicitly configure it.\n\nUnless `fixed` is explicitly set to `false`, the gutters are\nfixed, meaning they don't scroll along with the content\nhorizontally (except on Internet Explorer, which doesn't support\nCSS [`position:\nsticky`](https://developer.mozilla.org/en-US/docs/Web/CSS/position#sticky)).\n*/\nfunction gutters(config) {\n    let result = [\n        gutterView,\n    ];\n    if (config && config.fixed === false)\n        result.push(unfixGutters.of(true));\n    return result;\n}\nconst gutterView = /*@__PURE__*/ViewPlugin.fromClass(class {\n    constructor(view) {\n        this.view = view;\n        this.domAfter = null;\n        this.prevViewport = view.viewport;\n        this.dom = document.createElement(\"div\");\n        this.dom.className = \"cm-gutters cm-gutters-before\";\n        this.dom.setAttribute(\"aria-hidden\", \"true\");\n        this.dom.style.minHeight = (this.view.contentHeight / this.view.scaleY) + \"px\";\n        this.gutters = view.state.facet(activeGutters).map(conf => new SingleGutterView(view, conf));\n        this.fixed = !view.state.facet(unfixGutters);\n        for (let gutter of this.gutters) {\n            if (gutter.config.side == \"after\")\n                this.getDOMAfter().appendChild(gutter.dom);\n            else\n                this.dom.appendChild(gutter.dom);\n        }\n        if (this.fixed) {\n            // FIXME IE11 fallback, which doesn't support position: sticky,\n            // by using position: relative + event handlers that realign the\n            // gutter (or just force fixed=false on IE11?)\n            this.dom.style.position = \"sticky\";\n        }\n        this.syncGutters(false);\n        view.scrollDOM.insertBefore(this.dom, view.contentDOM);\n    }\n    getDOMAfter() {\n        if (!this.domAfter) {\n            this.domAfter = document.createElement(\"div\");\n            this.domAfter.className = \"cm-gutters cm-gutters-after\";\n            this.domAfter.setAttribute(\"aria-hidden\", \"true\");\n            this.domAfter.style.minHeight = (this.view.contentHeight / this.view.scaleY) + \"px\";\n            this.domAfter.style.position = this.fixed ? \"sticky\" : \"\";\n            this.view.scrollDOM.appendChild(this.domAfter);\n        }\n        return this.domAfter;\n    }\n    update(update) {\n        if (this.updateGutters(update)) {\n            // Detach during sync when the viewport changed significantly\n            // (such as during scrolling), since for large updates that is\n            // faster.\n            let vpA = this.prevViewport, vpB = update.view.viewport;\n            let vpOverlap = Math.min(vpA.to, vpB.to) - Math.max(vpA.from, vpB.from);\n            this.syncGutters(vpOverlap < (vpB.to - vpB.from) * 0.8);\n        }\n        if (update.geometryChanged) {\n            let min = (this.view.contentHeight / this.view.scaleY) + \"px\";\n            this.dom.style.minHeight = min;\n            if (this.domAfter)\n                this.domAfter.style.minHeight = min;\n        }\n        if (this.view.state.facet(unfixGutters) != !this.fixed) {\n            this.fixed = !this.fixed;\n            this.dom.style.position = this.fixed ? \"sticky\" : \"\";\n            if (this.domAfter)\n                this.domAfter.style.position = this.fixed ? \"sticky\" : \"\";\n        }\n        this.prevViewport = update.view.viewport;\n    }\n    syncGutters(detach) {\n        let after = this.dom.nextSibling;\n        if (detach) {\n            this.dom.remove();\n            if (this.domAfter)\n                this.domAfter.remove();\n        }\n        let lineClasses = RangeSet.iter(this.view.state.facet(gutterLineClass), this.view.viewport.from);\n        let classSet = [];\n        let contexts = this.gutters.map(gutter => new UpdateContext(gutter, this.view.viewport, -this.view.documentPadding.top));\n        for (let line of this.view.viewportLineBlocks) {\n            if (classSet.length)\n                classSet = [];\n            if (Array.isArray(line.type)) {\n                let first = true;\n                for (let b of line.type) {\n                    if (b.type == BlockType.Text && first) {\n                        advanceCursor(lineClasses, classSet, b.from);\n                        for (let cx of contexts)\n                            cx.line(this.view, b, classSet);\n                        first = false;\n                    }\n                    else if (b.widget) {\n                        for (let cx of contexts)\n                            cx.widget(this.view, b);\n                    }\n                }\n            }\n            else if (line.type == BlockType.Text) {\n                advanceCursor(lineClasses, classSet, line.from);\n                for (let cx of contexts)\n                    cx.line(this.view, line, classSet);\n            }\n            else if (line.widget) {\n                for (let cx of contexts)\n                    cx.widget(this.view, line);\n            }\n        }\n        for (let cx of contexts)\n            cx.finish();\n        if (detach) {\n            this.view.scrollDOM.insertBefore(this.dom, after);\n            if (this.domAfter)\n                this.view.scrollDOM.appendChild(this.domAfter);\n        }\n    }\n    updateGutters(update) {\n        let prev = update.startState.facet(activeGutters), cur = update.state.facet(activeGutters);\n        let change = update.docChanged || update.heightChanged || update.viewportChanged ||\n            !RangeSet.eq(update.startState.facet(gutterLineClass), update.state.facet(gutterLineClass), update.view.viewport.from, update.view.viewport.to);\n        if (prev == cur) {\n            for (let gutter of this.gutters)\n                if (gutter.update(update))\n                    change = true;\n        }\n        else {\n            change = true;\n            let gutters = [];\n            for (let conf of cur) {\n                let known = prev.indexOf(conf);\n                if (known < 0) {\n                    gutters.push(new SingleGutterView(this.view, conf));\n                }\n                else {\n                    this.gutters[known].update(update);\n                    gutters.push(this.gutters[known]);\n                }\n            }\n            for (let g of this.gutters) {\n                g.dom.remove();\n                if (gutters.indexOf(g) < 0)\n                    g.destroy();\n            }\n            for (let g of gutters) {\n                if (g.config.side == \"after\")\n                    this.getDOMAfter().appendChild(g.dom);\n                else\n                    this.dom.appendChild(g.dom);\n            }\n            this.gutters = gutters;\n        }\n        return change;\n    }\n    destroy() {\n        for (let view of this.gutters)\n            view.destroy();\n        this.dom.remove();\n        if (this.domAfter)\n            this.domAfter.remove();\n    }\n}, {\n    provide: plugin => EditorView.scrollMargins.of(view => {\n        let value = view.plugin(plugin);\n        if (!value || value.gutters.length == 0 || !value.fixed)\n            return null;\n        let before = value.dom.offsetWidth * view.scaleX, after = value.domAfter ? value.domAfter.offsetWidth * view.scaleX : 0;\n        return view.textDirection == Direction.LTR\n            ? { left: before, right: after }\n            : { right: before, left: after };\n    })\n});\nfunction asArray(val) { return (Array.isArray(val) ? val : [val]); }\nfunction advanceCursor(cursor, collect, pos) {\n    while (cursor.value && cursor.from <= pos) {\n        if (cursor.from == pos)\n            collect.push(cursor.value);\n        cursor.next();\n    }\n}\nclass UpdateContext {\n    constructor(gutter, viewport, height) {\n        this.gutter = gutter;\n        this.height = height;\n        this.i = 0;\n        this.cursor = RangeSet.iter(gutter.markers, viewport.from);\n    }\n    addElement(view, block, markers) {\n        let { gutter } = this, above = (block.top - this.height) / view.scaleY, height = block.height / view.scaleY;\n        if (this.i == gutter.elements.length) {\n            let newElt = new GutterElement(view, height, above, markers);\n            gutter.elements.push(newElt);\n            gutter.dom.appendChild(newElt.dom);\n        }\n        else {\n            gutter.elements[this.i].update(view, height, above, markers);\n        }\n        this.height = block.bottom;\n        this.i++;\n    }\n    line(view, line, extraMarkers) {\n        let localMarkers = [];\n        advanceCursor(this.cursor, localMarkers, line.from);\n        if (extraMarkers.length)\n            localMarkers = localMarkers.concat(extraMarkers);\n        let forLine = this.gutter.config.lineMarker(view, line, localMarkers);\n        if (forLine)\n            localMarkers.unshift(forLine);\n        let gutter = this.gutter;\n        if (localMarkers.length == 0 && !gutter.config.renderEmptyElements)\n            return;\n        this.addElement(view, line, localMarkers);\n    }\n    widget(view, block) {\n        let marker = this.gutter.config.widgetMarker(view, block.widget, block), markers = marker ? [marker] : null;\n        for (let cls of view.state.facet(gutterWidgetClass)) {\n            let marker = cls(view, block.widget, block);\n            if (marker)\n                (markers || (markers = [])).push(marker);\n        }\n        if (markers)\n            this.addElement(view, block, markers);\n    }\n    finish() {\n        let gutter = this.gutter;\n        while (gutter.elements.length > this.i) {\n            let last = gutter.elements.pop();\n            gutter.dom.removeChild(last.dom);\n            last.destroy();\n        }\n    }\n}\nclass SingleGutterView {\n    constructor(view, config) {\n        this.view = view;\n        this.config = config;\n        this.elements = [];\n        this.spacer = null;\n        this.dom = document.createElement(\"div\");\n        this.dom.className = \"cm-gutter\" + (this.config.class ? \" \" + this.config.class : \"\");\n        for (let prop in config.domEventHandlers) {\n            this.dom.addEventListener(prop, (event) => {\n                let target = event.target, y;\n                if (target != this.dom && this.dom.contains(target)) {\n                    while (target.parentNode != this.dom)\n                        target = target.parentNode;\n                    let rect = target.getBoundingClientRect();\n                    y = (rect.top + rect.bottom) / 2;\n                }\n                else {\n                    y = event.clientY;\n                }\n                let line = view.lineBlockAtHeight(y - view.documentTop);\n                if (config.domEventHandlers[prop](view, line, event))\n                    event.preventDefault();\n            });\n        }\n        this.markers = asArray(config.markers(view));\n        if (config.initialSpacer) {\n            this.spacer = new GutterElement(view, 0, 0, [config.initialSpacer(view)]);\n            this.dom.appendChild(this.spacer.dom);\n            this.spacer.dom.style.cssText += \"visibility: hidden; pointer-events: none\";\n        }\n    }\n    update(update) {\n        let prevMarkers = this.markers;\n        this.markers = asArray(this.config.markers(update.view));\n        if (this.spacer && this.config.updateSpacer) {\n            let updated = this.config.updateSpacer(this.spacer.markers[0], update);\n            if (updated != this.spacer.markers[0])\n                this.spacer.update(update.view, 0, 0, [updated]);\n        }\n        let vp = update.view.viewport;\n        return !RangeSet.eq(this.markers, prevMarkers, vp.from, vp.to) ||\n            (this.config.lineMarkerChange ? this.config.lineMarkerChange(update) : false);\n    }\n    destroy() {\n        for (let elt of this.elements)\n            elt.destroy();\n    }\n}\nclass GutterElement {\n    constructor(view, height, above, markers) {\n        this.height = -1;\n        this.above = 0;\n        this.markers = [];\n        this.dom = document.createElement(\"div\");\n        this.dom.className = \"cm-gutterElement\";\n        this.update(view, height, above, markers);\n    }\n    update(view, height, above, markers) {\n        if (this.height != height) {\n            this.height = height;\n            this.dom.style.height = height + \"px\";\n        }\n        if (this.above != above)\n            this.dom.style.marginTop = (this.above = above) ? above + \"px\" : \"\";\n        if (!sameMarkers(this.markers, markers))\n            this.setMarkers(view, markers);\n    }\n    setMarkers(view, markers) {\n        let cls = \"cm-gutterElement\", domPos = this.dom.firstChild;\n        for (let iNew = 0, iOld = 0;;) {\n            let skipTo = iOld, marker = iNew < markers.length ? markers[iNew++] : null, matched = false;\n            if (marker) {\n                let c = marker.elementClass;\n                if (c)\n                    cls += \" \" + c;\n                for (let i = iOld; i < this.markers.length; i++)\n                    if (this.markers[i].compare(marker)) {\n                        skipTo = i;\n                        matched = true;\n                        break;\n                    }\n            }\n            else {\n                skipTo = this.markers.length;\n            }\n            while (iOld < skipTo) {\n                let next = this.markers[iOld++];\n                if (next.toDOM) {\n                    next.destroy(domPos);\n                    let after = domPos.nextSibling;\n                    domPos.remove();\n                    domPos = after;\n                }\n            }\n            if (!marker)\n                break;\n            if (marker.toDOM) {\n                if (matched)\n                    domPos = domPos.nextSibling;\n                else\n                    this.dom.insertBefore(marker.toDOM(view), domPos);\n            }\n            if (matched)\n                iOld++;\n        }\n        this.dom.className = cls;\n        this.markers = markers;\n    }\n    destroy() {\n        this.setMarkers(null, []); // First argument not used unless creating markers\n    }\n}\nfunction sameMarkers(a, b) {\n    if (a.length != b.length)\n        return false;\n    for (let i = 0; i < a.length; i++)\n        if (!a[i].compare(b[i]))\n            return false;\n    return true;\n}\n/**\nFacet used to provide markers to the line number gutter.\n*/\nconst lineNumberMarkers = /*@__PURE__*/Facet.define();\n/**\nFacet used to create markers in the line number gutter next to widgets.\n*/\nconst lineNumberWidgetMarker = /*@__PURE__*/Facet.define();\nconst lineNumberConfig = /*@__PURE__*/Facet.define({\n    combine(values) {\n        return combineConfig(values, { formatNumber: String, domEventHandlers: {} }, {\n            domEventHandlers(a, b) {\n                let result = Object.assign({}, a);\n                for (let event in b) {\n                    let exists = result[event], add = b[event];\n                    result[event] = exists ? (view, line, event) => exists(view, line, event) || add(view, line, event) : add;\n                }\n                return result;\n            }\n        });\n    }\n});\nclass NumberMarker extends GutterMarker {\n    constructor(number) {\n        super();\n        this.number = number;\n    }\n    eq(other) { return this.number == other.number; }\n    toDOM() { return document.createTextNode(this.number); }\n}\nfunction formatNumber(view, number) {\n    return view.state.facet(lineNumberConfig).formatNumber(number, view.state);\n}\nconst lineNumberGutter = /*@__PURE__*/activeGutters.compute([lineNumberConfig], state => ({\n    class: \"cm-lineNumbers\",\n    renderEmptyElements: false,\n    markers(view) { return view.state.facet(lineNumberMarkers); },\n    lineMarker(view, line, others) {\n        if (others.some(m => m.toDOM))\n            return null;\n        return new NumberMarker(formatNumber(view, view.state.doc.lineAt(line.from).number));\n    },\n    widgetMarker: (view, widget, block) => {\n        for (let m of view.state.facet(lineNumberWidgetMarker)) {\n            let result = m(view, widget, block);\n            if (result)\n                return result;\n        }\n        return null;\n    },\n    lineMarkerChange: update => update.startState.facet(lineNumberConfig) != update.state.facet(lineNumberConfig),\n    initialSpacer(view) {\n        return new NumberMarker(formatNumber(view, maxLineNumber(view.state.doc.lines)));\n    },\n    updateSpacer(spacer, update) {\n        let max = formatNumber(update.view, maxLineNumber(update.view.state.doc.lines));\n        return max == spacer.number ? spacer : new NumberMarker(max);\n    },\n    domEventHandlers: state.facet(lineNumberConfig).domEventHandlers,\n    side: \"before\"\n}));\n/**\nCreate a line number gutter extension.\n*/\nfunction lineNumbers(config = {}) {\n    return [\n        lineNumberConfig.of(config),\n        gutters(),\n        lineNumberGutter\n    ];\n}\nfunction maxLineNumber(lines) {\n    let last = 9;\n    while (last < lines)\n        last = last * 10 + 9;\n    return last;\n}\nconst activeLineGutterMarker = /*@__PURE__*/new class extends GutterMarker {\n    constructor() {\n        super(...arguments);\n        this.elementClass = \"cm-activeLineGutter\";\n    }\n};\nconst activeLineGutterHighlighter = /*@__PURE__*/gutterLineClass.compute([\"selection\"], state => {\n    let marks = [], last = -1;\n    for (let range of state.selection.ranges) {\n        let linePos = state.doc.lineAt(range.head).from;\n        if (linePos > last) {\n            last = linePos;\n            marks.push(activeLineGutterMarker.range(linePos));\n        }\n    }\n    return RangeSet.of(marks);\n});\n/**\nReturns an extension that adds a `cm-activeLineGutter` class to\nall gutter elements on the [active\nline](https://codemirror.net/6/docs/ref/#view.highlightActiveLine).\n*/\nfunction highlightActiveLineGutter() {\n    return activeLineGutterHighlighter;\n}\n\nfunction matcher(decorator) {\n    return ViewPlugin.define(view => ({\n        decorations: decorator.createDeco(view),\n        update(u) {\n            this.decorations = decorator.updateDeco(u, this.decorations);\n        },\n    }), {\n        decorations: v => v.decorations\n    });\n}\nconst tabDeco = /*@__PURE__*/Decoration.mark({ class: \"cm-highlightTab\" });\nconst spaceDeco = /*@__PURE__*/Decoration.mark({ class: \"cm-highlightSpace\" });\nconst whitespaceHighlighter = /*@__PURE__*/matcher(/*@__PURE__*/new MatchDecorator({\n    regexp: /\\t| /g,\n    decoration: match => match[0] == \"\\t\" ? tabDeco : spaceDeco,\n    boundary: /\\S/,\n}));\n/**\nReturns an extension that highlights whitespace, adding a\n`cm-highlightSpace` class to stretches of spaces, and a\n`cm-highlightTab` class to individual tab characters. By default,\nthe former are shown as faint dots, and the latter as arrows.\n*/\nfunction highlightWhitespace() {\n    return whitespaceHighlighter;\n}\nconst trailingHighlighter = /*@__PURE__*/matcher(/*@__PURE__*/new MatchDecorator({\n    regexp: /\\s+$/g,\n    decoration: /*@__PURE__*/Decoration.mark({ class: \"cm-trailingSpace\" })\n}));\n/**\nReturns an extension that adds a `cm-trailingSpace` class to all\ntrailing whitespace.\n*/\nfunction highlightTrailingWhitespace() {\n    return trailingHighlighter;\n}\n\n/**\n@internal\n*/\nconst __test = { HeightMap, HeightOracle, MeasuredHeights, QueryType, ChangedRange, computeOrder,\n    moveVisually, clearHeightChangeFlag, getHeightChangeFlag: () => heightChangeFlag };\n\nexport { BidiSpan, BlockInfo, BlockType, Decoration, Direction, EditorView, GutterMarker, MatchDecorator, RectangleMarker, ViewPlugin, ViewUpdate, WidgetType, __test, closeHoverTooltips, crosshairCursor, drawSelection, dropCursor, getDialog, getDrawSelectionConfig, getPanel, getTooltip, gutter, gutterLineClass, gutterWidgetClass, gutters, hasHoverTooltips, highlightActiveLine, highlightActiveLineGutter, highlightSpecialChars, highlightTrailingWhitespace, highlightWhitespace, hoverTooltip, keymap, layer, lineNumberMarkers, lineNumberWidgetMarker, lineNumbers, logException, panels, placeholder, rectangularSelection, repositionTooltips, runScopeHandlers, scrollPastEnd, showDialog, showPanel, showTooltip, tooltips };\n","import { NodeProp, IterMode, Tree, TreeFragment, Parser, NodeType, NodeSet } from '@lezer/common';\nimport { StateEffect, StateField, Facet, EditorState, countColumn, combineConfig, RangeSet, RangeSetBuilder, Prec } from '@codemirror/state';\nimport { ViewPlugin, logException, EditorView, Decoration, WidgetType, gutter, GutterMarker, Direction } from '@codemirror/view';\nimport { tags, tagHighlighter, highlightTree, styleTags } from '@lezer/highlight';\nimport { StyleModule } from 'style-mod';\n\nvar _a;\n/**\nNode prop stored in a parser's top syntax node to provide the\nfacet that stores language-specific data for that language.\n*/\nconst languageDataProp = /*@__PURE__*/new NodeProp();\n/**\nHelper function to define a facet (to be added to the top syntax\nnode(s) for a language via\n[`languageDataProp`](https://codemirror.net/6/docs/ref/#language.languageDataProp)), that will be\nused to associate language data with the language. You\nprobably only need this when subclassing\n[`Language`](https://codemirror.net/6/docs/ref/#language.Language).\n*/\nfunction defineLanguageFacet(baseData) {\n    return Facet.define({\n        combine: baseData ? values => values.concat(baseData) : undefined\n    });\n}\n/**\nSyntax node prop used to register sublanguages. Should be added to\nthe top level node type for the language.\n*/\nconst sublanguageProp = /*@__PURE__*/new NodeProp();\n/**\nA language object manages parsing and per-language\n[metadata](https://codemirror.net/6/docs/ref/#state.EditorState.languageDataAt). Parse data is\nmanaged as a [Lezer](https://lezer.codemirror.net) tree. The class\ncan be used directly, via the [`LRLanguage`](https://codemirror.net/6/docs/ref/#language.LRLanguage)\nsubclass for [Lezer](https://lezer.codemirror.net/) LR parsers, or\nvia the [`StreamLanguage`](https://codemirror.net/6/docs/ref/#language.StreamLanguage) subclass\nfor stream parsers.\n*/\nclass Language {\n    /**\n    Construct a language object. If you need to invoke this\n    directly, first define a data facet with\n    [`defineLanguageFacet`](https://codemirror.net/6/docs/ref/#language.defineLanguageFacet), and then\n    configure your parser to [attach](https://codemirror.net/6/docs/ref/#language.languageDataProp) it\n    to the language's outer syntax node.\n    */\n    constructor(\n    /**\n    The [language data](https://codemirror.net/6/docs/ref/#state.EditorState.languageDataAt) facet\n    used for this language.\n    */\n    data, parser, extraExtensions = [], \n    /**\n    A language name.\n    */\n    name = \"\") {\n        this.data = data;\n        this.name = name;\n        // Kludge to define EditorState.tree as a debugging helper,\n        // without the EditorState package actually knowing about\n        // languages and lezer trees.\n        if (!EditorState.prototype.hasOwnProperty(\"tree\"))\n            Object.defineProperty(EditorState.prototype, \"tree\", { get() { return syntaxTree(this); } });\n        this.parser = parser;\n        this.extension = [\n            language.of(this),\n            EditorState.languageData.of((state, pos, side) => {\n                let top = topNodeAt(state, pos, side), data = top.type.prop(languageDataProp);\n                if (!data)\n                    return [];\n                let base = state.facet(data), sub = top.type.prop(sublanguageProp);\n                if (sub) {\n                    let innerNode = top.resolve(pos - top.from, side);\n                    for (let sublang of sub)\n                        if (sublang.test(innerNode, state)) {\n                            let data = state.facet(sublang.facet);\n                            return sublang.type == \"replace\" ? data : data.concat(base);\n                        }\n                }\n                return base;\n            })\n        ].concat(extraExtensions);\n    }\n    /**\n    Query whether this language is active at the given position.\n    */\n    isActiveAt(state, pos, side = -1) {\n        return topNodeAt(state, pos, side).type.prop(languageDataProp) == this.data;\n    }\n    /**\n    Find the document regions that were parsed using this language.\n    The returned regions will _include_ any nested languages rooted\n    in this language, when those exist.\n    */\n    findRegions(state) {\n        let lang = state.facet(language);\n        if ((lang === null || lang === void 0 ? void 0 : lang.data) == this.data)\n            return [{ from: 0, to: state.doc.length }];\n        if (!lang || !lang.allowsNesting)\n            return [];\n        let result = [];\n        let explore = (tree, from) => {\n            if (tree.prop(languageDataProp) == this.data) {\n                result.push({ from, to: from + tree.length });\n                return;\n            }\n            let mount = tree.prop(NodeProp.mounted);\n            if (mount) {\n                if (mount.tree.prop(languageDataProp) == this.data) {\n                    if (mount.overlay)\n                        for (let r of mount.overlay)\n                            result.push({ from: r.from + from, to: r.to + from });\n                    else\n                        result.push({ from: from, to: from + tree.length });\n                    return;\n                }\n                else if (mount.overlay) {\n                    let size = result.length;\n                    explore(mount.tree, mount.overlay[0].from + from);\n                    if (result.length > size)\n                        return;\n                }\n            }\n            for (let i = 0; i < tree.children.length; i++) {\n                let ch = tree.children[i];\n                if (ch instanceof Tree)\n                    explore(ch, tree.positions[i] + from);\n            }\n        };\n        explore(syntaxTree(state), 0);\n        return result;\n    }\n    /**\n    Indicates whether this language allows nested languages. The\n    default implementation returns true.\n    */\n    get allowsNesting() { return true; }\n}\n/**\n@internal\n*/\nLanguage.setState = /*@__PURE__*/StateEffect.define();\nfunction topNodeAt(state, pos, side) {\n    let topLang = state.facet(language), tree = syntaxTree(state).topNode;\n    if (!topLang || topLang.allowsNesting) {\n        for (let node = tree; node; node = node.enter(pos, side, IterMode.ExcludeBuffers))\n            if (node.type.isTop)\n                tree = node;\n    }\n    return tree;\n}\n/**\nA subclass of [`Language`](https://codemirror.net/6/docs/ref/#language.Language) for use with Lezer\n[LR parsers](https://lezer.codemirror.net/docs/ref#lr.LRParser)\nparsers.\n*/\nclass LRLanguage extends Language {\n    constructor(data, parser, name) {\n        super(data, parser, [], name);\n        this.parser = parser;\n    }\n    /**\n    Define a language from a parser.\n    */\n    static define(spec) {\n        let data = defineLanguageFacet(spec.languageData);\n        return new LRLanguage(data, spec.parser.configure({\n            props: [languageDataProp.add(type => type.isTop ? data : undefined)]\n        }), spec.name);\n    }\n    /**\n    Create a new instance of this language with a reconfigured\n    version of its parser and optionally a new name.\n    */\n    configure(options, name) {\n        return new LRLanguage(this.data, this.parser.configure(options), name || this.name);\n    }\n    get allowsNesting() { return this.parser.hasWrappers(); }\n}\n/**\nGet the syntax tree for a state, which is the current (possibly\nincomplete) parse tree of the active\n[language](https://codemirror.net/6/docs/ref/#language.Language), or the empty tree if there is no\nlanguage available.\n*/\nfunction syntaxTree(state) {\n    let field = state.field(Language.state, false);\n    return field ? field.tree : Tree.empty;\n}\n/**\nTry to get a parse tree that spans at least up to `upto`. The\nmethod will do at most `timeout` milliseconds of work to parse\nup to that point if the tree isn't already available.\n*/\nfunction ensureSyntaxTree(state, upto, timeout = 50) {\n    var _a;\n    let parse = (_a = state.field(Language.state, false)) === null || _a === void 0 ? void 0 : _a.context;\n    if (!parse)\n        return null;\n    let oldVieport = parse.viewport;\n    parse.updateViewport({ from: 0, to: upto });\n    let result = parse.isDone(upto) || parse.work(timeout, upto) ? parse.tree : null;\n    parse.updateViewport(oldVieport);\n    return result;\n}\n/**\nQueries whether there is a full syntax tree available up to the\ngiven document position. If there isn't, the background parse\nprocess _might_ still be working and update the tree further, but\nthere is no guarantee of that—the parser will [stop\nworking](https://codemirror.net/6/docs/ref/#language.syntaxParserRunning) when it has spent a\ncertain amount of time or has moved beyond the visible viewport.\nAlways returns false if no language has been enabled.\n*/\nfunction syntaxTreeAvailable(state, upto = state.doc.length) {\n    var _a;\n    return ((_a = state.field(Language.state, false)) === null || _a === void 0 ? void 0 : _a.context.isDone(upto)) || false;\n}\n/**\nMove parsing forward, and update the editor state afterwards to\nreflect the new tree. Will work for at most `timeout`\nmilliseconds. Returns true if the parser managed get to the given\nposition in that time.\n*/\nfunction forceParsing(view, upto = view.viewport.to, timeout = 100) {\n    let success = ensureSyntaxTree(view.state, upto, timeout);\n    if (success != syntaxTree(view.state))\n        view.dispatch({});\n    return !!success;\n}\n/**\nTells you whether the language parser is planning to do more\nparsing work (in a `requestIdleCallback` pseudo-thread) or has\nstopped running, either because it parsed the entire document,\nbecause it spent too much time and was cut off, or because there\nis no language parser enabled.\n*/\nfunction syntaxParserRunning(view) {\n    var _a;\n    return ((_a = view.plugin(parseWorker)) === null || _a === void 0 ? void 0 : _a.isWorking()) || false;\n}\n/**\nLezer-style\n[`Input`](https://lezer.codemirror.net/docs/ref#common.Input)\nobject for a [`Text`](https://codemirror.net/6/docs/ref/#state.Text) object.\n*/\nclass DocInput {\n    /**\n    Create an input object for the given document.\n    */\n    constructor(doc) {\n        this.doc = doc;\n        this.cursorPos = 0;\n        this.string = \"\";\n        this.cursor = doc.iter();\n    }\n    get length() { return this.doc.length; }\n    syncTo(pos) {\n        this.string = this.cursor.next(pos - this.cursorPos).value;\n        this.cursorPos = pos + this.string.length;\n        return this.cursorPos - this.string.length;\n    }\n    chunk(pos) {\n        this.syncTo(pos);\n        return this.string;\n    }\n    get lineChunks() { return true; }\n    read(from, to) {\n        let stringStart = this.cursorPos - this.string.length;\n        if (from < stringStart || to >= this.cursorPos)\n            return this.doc.sliceString(from, to);\n        else\n            return this.string.slice(from - stringStart, to - stringStart);\n    }\n}\nlet currentContext = null;\n/**\nA parse context provided to parsers working on the editor content.\n*/\nclass ParseContext {\n    constructor(parser, \n    /**\n    The current editor state.\n    */\n    state, \n    /**\n    Tree fragments that can be reused by incremental re-parses.\n    */\n    fragments = [], \n    /**\n    @internal\n    */\n    tree, \n    /**\n    @internal\n    */\n    treeLen, \n    /**\n    The current editor viewport (or some overapproximation\n    thereof). Intended to be used for opportunistically avoiding\n    work (in which case\n    [`skipUntilInView`](https://codemirror.net/6/docs/ref/#language.ParseContext.skipUntilInView)\n    should be called to make sure the parser is restarted when the\n    skipped region becomes visible).\n    */\n    viewport, \n    /**\n    @internal\n    */\n    skipped, \n    /**\n    This is where skipping parsers can register a promise that,\n    when resolved, will schedule a new parse. It is cleared when\n    the parse worker picks up the promise. @internal\n    */\n    scheduleOn) {\n        this.parser = parser;\n        this.state = state;\n        this.fragments = fragments;\n        this.tree = tree;\n        this.treeLen = treeLen;\n        this.viewport = viewport;\n        this.skipped = skipped;\n        this.scheduleOn = scheduleOn;\n        this.parse = null;\n        /**\n        @internal\n        */\n        this.tempSkipped = [];\n    }\n    /**\n    @internal\n    */\n    static create(parser, state, viewport) {\n        return new ParseContext(parser, state, [], Tree.empty, 0, viewport, [], null);\n    }\n    startParse() {\n        return this.parser.startParse(new DocInput(this.state.doc), this.fragments);\n    }\n    /**\n    @internal\n    */\n    work(until, upto) {\n        if (upto != null && upto >= this.state.doc.length)\n            upto = undefined;\n        if (this.tree != Tree.empty && this.isDone(upto !== null && upto !== void 0 ? upto : this.state.doc.length)) {\n            this.takeTree();\n            return true;\n        }\n        return this.withContext(() => {\n            var _a;\n            if (typeof until == \"number\") {\n                let endTime = Date.now() + until;\n                until = () => Date.now() > endTime;\n            }\n            if (!this.parse)\n                this.parse = this.startParse();\n            if (upto != null && (this.parse.stoppedAt == null || this.parse.stoppedAt > upto) &&\n                upto < this.state.doc.length)\n                this.parse.stopAt(upto);\n            for (;;) {\n                let done = this.parse.advance();\n                if (done) {\n                    this.fragments = this.withoutTempSkipped(TreeFragment.addTree(done, this.fragments, this.parse.stoppedAt != null));\n                    this.treeLen = (_a = this.parse.stoppedAt) !== null && _a !== void 0 ? _a : this.state.doc.length;\n                    this.tree = done;\n                    this.parse = null;\n                    if (this.treeLen < (upto !== null && upto !== void 0 ? upto : this.state.doc.length))\n                        this.parse = this.startParse();\n                    else\n                        return true;\n                }\n                if (until())\n                    return false;\n            }\n        });\n    }\n    /**\n    @internal\n    */\n    takeTree() {\n        let pos, tree;\n        if (this.parse && (pos = this.parse.parsedPos) >= this.treeLen) {\n            if (this.parse.stoppedAt == null || this.parse.stoppedAt > pos)\n                this.parse.stopAt(pos);\n            this.withContext(() => { while (!(tree = this.parse.advance())) { } });\n            this.treeLen = pos;\n            this.tree = tree;\n            this.fragments = this.withoutTempSkipped(TreeFragment.addTree(this.tree, this.fragments, true));\n            this.parse = null;\n        }\n    }\n    withContext(f) {\n        let prev = currentContext;\n        currentContext = this;\n        try {\n            return f();\n        }\n        finally {\n            currentContext = prev;\n        }\n    }\n    withoutTempSkipped(fragments) {\n        for (let r; r = this.tempSkipped.pop();)\n            fragments = cutFragments(fragments, r.from, r.to);\n        return fragments;\n    }\n    /**\n    @internal\n    */\n    changes(changes, newState) {\n        let { fragments, tree, treeLen, viewport, skipped } = this;\n        this.takeTree();\n        if (!changes.empty) {\n            let ranges = [];\n            changes.iterChangedRanges((fromA, toA, fromB, toB) => ranges.push({ fromA, toA, fromB, toB }));\n            fragments = TreeFragment.applyChanges(fragments, ranges);\n            tree = Tree.empty;\n            treeLen = 0;\n            viewport = { from: changes.mapPos(viewport.from, -1), to: changes.mapPos(viewport.to, 1) };\n            if (this.skipped.length) {\n                skipped = [];\n                for (let r of this.skipped) {\n                    let from = changes.mapPos(r.from, 1), to = changes.mapPos(r.to, -1);\n                    if (from < to)\n                        skipped.push({ from, to });\n                }\n            }\n        }\n        return new ParseContext(this.parser, newState, fragments, tree, treeLen, viewport, skipped, this.scheduleOn);\n    }\n    /**\n    @internal\n    */\n    updateViewport(viewport) {\n        if (this.viewport.from == viewport.from && this.viewport.to == viewport.to)\n            return false;\n        this.viewport = viewport;\n        let startLen = this.skipped.length;\n        for (let i = 0; i < this.skipped.length; i++) {\n            let { from, to } = this.skipped[i];\n            if (from < viewport.to && to > viewport.from) {\n                this.fragments = cutFragments(this.fragments, from, to);\n                this.skipped.splice(i--, 1);\n            }\n        }\n        if (this.skipped.length >= startLen)\n            return false;\n        this.reset();\n        return true;\n    }\n    /**\n    @internal\n    */\n    reset() {\n        if (this.parse) {\n            this.takeTree();\n            this.parse = null;\n        }\n    }\n    /**\n    Notify the parse scheduler that the given region was skipped\n    because it wasn't in view, and the parse should be restarted\n    when it comes into view.\n    */\n    skipUntilInView(from, to) {\n        this.skipped.push({ from, to });\n    }\n    /**\n    Returns a parser intended to be used as placeholder when\n    asynchronously loading a nested parser. It'll skip its input and\n    mark it as not-really-parsed, so that the next update will parse\n    it again.\n    \n    When `until` is given, a reparse will be scheduled when that\n    promise resolves.\n    */\n    static getSkippingParser(until) {\n        return new class extends Parser {\n            createParse(input, fragments, ranges) {\n                let from = ranges[0].from, to = ranges[ranges.length - 1].to;\n                let parser = {\n                    parsedPos: from,\n                    advance() {\n                        let cx = currentContext;\n                        if (cx) {\n                            for (let r of ranges)\n                                cx.tempSkipped.push(r);\n                            if (until)\n                                cx.scheduleOn = cx.scheduleOn ? Promise.all([cx.scheduleOn, until]) : until;\n                        }\n                        this.parsedPos = to;\n                        return new Tree(NodeType.none, [], [], to - from);\n                    },\n                    stoppedAt: null,\n                    stopAt() { }\n                };\n                return parser;\n            }\n        };\n    }\n    /**\n    @internal\n    */\n    isDone(upto) {\n        upto = Math.min(upto, this.state.doc.length);\n        let frags = this.fragments;\n        return this.treeLen >= upto && frags.length && frags[0].from == 0 && frags[0].to >= upto;\n    }\n    /**\n    Get the context for the current parse, or `null` if no editor\n    parse is in progress.\n    */\n    static get() { return currentContext; }\n}\nfunction cutFragments(fragments, from, to) {\n    return TreeFragment.applyChanges(fragments, [{ fromA: from, toA: to, fromB: from, toB: to }]);\n}\nclass LanguageState {\n    constructor(\n    // A mutable parse state that is used to preserve work done during\n    // the lifetime of a state when moving to the next state.\n    context) {\n        this.context = context;\n        this.tree = context.tree;\n    }\n    apply(tr) {\n        if (!tr.docChanged && this.tree == this.context.tree)\n            return this;\n        let newCx = this.context.changes(tr.changes, tr.state);\n        // If the previous parse wasn't done, go forward only up to its\n        // end position or the end of the viewport, to avoid slowing down\n        // state updates with parse work beyond the viewport.\n        let upto = this.context.treeLen == tr.startState.doc.length ? undefined\n            : Math.max(tr.changes.mapPos(this.context.treeLen), newCx.viewport.to);\n        if (!newCx.work(20 /* Work.Apply */, upto))\n            newCx.takeTree();\n        return new LanguageState(newCx);\n    }\n    static init(state) {\n        let vpTo = Math.min(3000 /* Work.InitViewport */, state.doc.length);\n        let parseState = ParseContext.create(state.facet(language).parser, state, { from: 0, to: vpTo });\n        if (!parseState.work(20 /* Work.Apply */, vpTo))\n            parseState.takeTree();\n        return new LanguageState(parseState);\n    }\n}\nLanguage.state = /*@__PURE__*/StateField.define({\n    create: LanguageState.init,\n    update(value, tr) {\n        for (let e of tr.effects)\n            if (e.is(Language.setState))\n                return e.value;\n        if (tr.startState.facet(language) != tr.state.facet(language))\n            return LanguageState.init(tr.state);\n        return value.apply(tr);\n    }\n});\nlet requestIdle = (callback) => {\n    let timeout = setTimeout(() => callback(), 500 /* Work.MaxPause */);\n    return () => clearTimeout(timeout);\n};\nif (typeof requestIdleCallback != \"undefined\")\n    requestIdle = (callback) => {\n        let idle = -1, timeout = setTimeout(() => {\n            idle = requestIdleCallback(callback, { timeout: 500 /* Work.MaxPause */ - 100 /* Work.MinPause */ });\n        }, 100 /* Work.MinPause */);\n        return () => idle < 0 ? clearTimeout(timeout) : cancelIdleCallback(idle);\n    };\nconst isInputPending = typeof navigator != \"undefined\" && ((_a = navigator.scheduling) === null || _a === void 0 ? void 0 : _a.isInputPending)\n    ? () => navigator.scheduling.isInputPending() : null;\nconst parseWorker = /*@__PURE__*/ViewPlugin.fromClass(class ParseWorker {\n    constructor(view) {\n        this.view = view;\n        this.working = null;\n        this.workScheduled = 0;\n        // End of the current time chunk\n        this.chunkEnd = -1;\n        // Milliseconds of budget left for this chunk\n        this.chunkBudget = -1;\n        this.work = this.work.bind(this);\n        this.scheduleWork();\n    }\n    update(update) {\n        let cx = this.view.state.field(Language.state).context;\n        if (cx.updateViewport(update.view.viewport) || this.view.viewport.to > cx.treeLen)\n            this.scheduleWork();\n        if (update.docChanged || update.selectionSet) {\n            if (this.view.hasFocus)\n                this.chunkBudget += 50 /* Work.ChangeBonus */;\n            this.scheduleWork();\n        }\n        this.checkAsyncSchedule(cx);\n    }\n    scheduleWork() {\n        if (this.working)\n            return;\n        let { state } = this.view, field = state.field(Language.state);\n        if (field.tree != field.context.tree || !field.context.isDone(state.doc.length))\n            this.working = requestIdle(this.work);\n    }\n    work(deadline) {\n        this.working = null;\n        let now = Date.now();\n        if (this.chunkEnd < now && (this.chunkEnd < 0 || this.view.hasFocus)) { // Start a new chunk\n            this.chunkEnd = now + 30000 /* Work.ChunkTime */;\n            this.chunkBudget = 3000 /* Work.ChunkBudget */;\n        }\n        if (this.chunkBudget <= 0)\n            return; // No more budget\n        let { state, viewport: { to: vpTo } } = this.view, field = state.field(Language.state);\n        if (field.tree == field.context.tree && field.context.isDone(vpTo + 100000 /* Work.MaxParseAhead */))\n            return;\n        let endTime = Date.now() + Math.min(this.chunkBudget, 100 /* Work.Slice */, deadline && !isInputPending ? Math.max(25 /* Work.MinSlice */, deadline.timeRemaining() - 5) : 1e9);\n        let viewportFirst = field.context.treeLen < vpTo && state.doc.length > vpTo + 1000;\n        let done = field.context.work(() => {\n            return isInputPending && isInputPending() || Date.now() > endTime;\n        }, vpTo + (viewportFirst ? 0 : 100000 /* Work.MaxParseAhead */));\n        this.chunkBudget -= Date.now() - now;\n        if (done || this.chunkBudget <= 0) {\n            field.context.takeTree();\n            this.view.dispatch({ effects: Language.setState.of(new LanguageState(field.context)) });\n        }\n        if (this.chunkBudget > 0 && !(done && !viewportFirst))\n            this.scheduleWork();\n        this.checkAsyncSchedule(field.context);\n    }\n    checkAsyncSchedule(cx) {\n        if (cx.scheduleOn) {\n            this.workScheduled++;\n            cx.scheduleOn\n                .then(() => this.scheduleWork())\n                .catch(err => logException(this.view.state, err))\n                .then(() => this.workScheduled--);\n            cx.scheduleOn = null;\n        }\n    }\n    destroy() {\n        if (this.working)\n            this.working();\n    }\n    isWorking() {\n        return !!(this.working || this.workScheduled > 0);\n    }\n}, {\n    eventHandlers: { focus() { this.scheduleWork(); } }\n});\n/**\nThe facet used to associate a language with an editor state. Used\nby `Language` object's `extension` property (so you don't need to\nmanually wrap your languages in this). Can be used to access the\ncurrent language on a state.\n*/\nconst language = /*@__PURE__*/Facet.define({\n    combine(languages) { return languages.length ? languages[0] : null; },\n    enables: language => [\n        Language.state,\n        parseWorker,\n        EditorView.contentAttributes.compute([language], state => {\n            let lang = state.facet(language);\n            return lang && lang.name ? { \"data-language\": lang.name } : {};\n        })\n    ]\n});\n/**\nThis class bundles a [language](https://codemirror.net/6/docs/ref/#language.Language) with an\noptional set of supporting extensions. Language packages are\nencouraged to export a function that optionally takes a\nconfiguration object and returns a `LanguageSupport` instance, as\nthe main way for client code to use the package.\n*/\nclass LanguageSupport {\n    /**\n    Create a language support object.\n    */\n    constructor(\n    /**\n    The language object.\n    */\n    language, \n    /**\n    An optional set of supporting extensions. When nesting a\n    language in another language, the outer language is encouraged\n    to include the supporting extensions for its inner languages\n    in its own set of support extensions.\n    */\n    support = []) {\n        this.language = language;\n        this.support = support;\n        this.extension = [language, support];\n    }\n}\n/**\nLanguage descriptions are used to store metadata about languages\nand to dynamically load them. Their main role is finding the\nappropriate language for a filename or dynamically loading nested\nparsers.\n*/\nclass LanguageDescription {\n    constructor(\n    /**\n    The name of this language.\n    */\n    name, \n    /**\n    Alternative names for the mode (lowercased, includes `this.name`).\n    */\n    alias, \n    /**\n    File extensions associated with this language.\n    */\n    extensions, \n    /**\n    Optional filename pattern that should be associated with this\n    language.\n    */\n    filename, loadFunc, \n    /**\n    If the language has been loaded, this will hold its value.\n    */\n    support = undefined) {\n        this.name = name;\n        this.alias = alias;\n        this.extensions = extensions;\n        this.filename = filename;\n        this.loadFunc = loadFunc;\n        this.support = support;\n        this.loading = null;\n    }\n    /**\n    Start loading the the language. Will return a promise that\n    resolves to a [`LanguageSupport`](https://codemirror.net/6/docs/ref/#language.LanguageSupport)\n    object when the language successfully loads.\n    */\n    load() {\n        return this.loading || (this.loading = this.loadFunc().then(support => this.support = support, err => { this.loading = null; throw err; }));\n    }\n    /**\n    Create a language description.\n    */\n    static of(spec) {\n        let { load, support } = spec;\n        if (!load) {\n            if (!support)\n                throw new RangeError(\"Must pass either 'load' or 'support' to LanguageDescription.of\");\n            load = () => Promise.resolve(support);\n        }\n        return new LanguageDescription(spec.name, (spec.alias || []).concat(spec.name).map(s => s.toLowerCase()), spec.extensions || [], spec.filename, load, support);\n    }\n    /**\n    Look for a language in the given array of descriptions that\n    matches the filename. Will first match\n    [`filename`](https://codemirror.net/6/docs/ref/#language.LanguageDescription.filename) patterns,\n    and then [extensions](https://codemirror.net/6/docs/ref/#language.LanguageDescription.extensions),\n    and return the first language that matches.\n    */\n    static matchFilename(descs, filename) {\n        for (let d of descs)\n            if (d.filename && d.filename.test(filename))\n                return d;\n        let ext = /\\.([^.]+)$/.exec(filename);\n        if (ext)\n            for (let d of descs)\n                if (d.extensions.indexOf(ext[1]) > -1)\n                    return d;\n        return null;\n    }\n    /**\n    Look for a language whose name or alias matches the the given\n    name (case-insensitively). If `fuzzy` is true, and no direct\n    matchs is found, this'll also search for a language whose name\n    or alias occurs in the string (for names shorter than three\n    characters, only when surrounded by non-word characters).\n    */\n    static matchLanguageName(descs, name, fuzzy = true) {\n        name = name.toLowerCase();\n        for (let d of descs)\n            if (d.alias.some(a => a == name))\n                return d;\n        if (fuzzy)\n            for (let d of descs)\n                for (let a of d.alias) {\n                    let found = name.indexOf(a);\n                    if (found > -1 && (a.length > 2 || !/\\w/.test(name[found - 1]) && !/\\w/.test(name[found + a.length])))\n                        return d;\n                }\n        return null;\n    }\n}\n\n/**\nFacet that defines a way to provide a function that computes the\nappropriate indentation depth, as a column number (see\n[`indentString`](https://codemirror.net/6/docs/ref/#language.indentString)), at the start of a given\nline. A return value of `null` indicates no indentation can be\ndetermined, and the line should inherit the indentation of the one\nabove it. A return value of `undefined` defers to the next indent\nservice.\n*/\nconst indentService = /*@__PURE__*/Facet.define();\n/**\nFacet for overriding the unit by which indentation happens. Should\nbe a string consisting entirely of the same whitespace character.\nWhen not set, this defaults to 2 spaces.\n*/\nconst indentUnit = /*@__PURE__*/Facet.define({\n    combine: values => {\n        if (!values.length)\n            return \"  \";\n        let unit = values[0];\n        if (!unit || /\\S/.test(unit) || Array.from(unit).some(e => e != unit[0]))\n            throw new Error(\"Invalid indent unit: \" + JSON.stringify(values[0]));\n        return unit;\n    }\n});\n/**\nReturn the _column width_ of an indent unit in the state.\nDetermined by the [`indentUnit`](https://codemirror.net/6/docs/ref/#language.indentUnit)\nfacet, and [`tabSize`](https://codemirror.net/6/docs/ref/#state.EditorState^tabSize) when that\ncontains tabs.\n*/\nfunction getIndentUnit(state) {\n    let unit = state.facet(indentUnit);\n    return unit.charCodeAt(0) == 9 ? state.tabSize * unit.length : unit.length;\n}\n/**\nCreate an indentation string that covers columns 0 to `cols`.\nWill use tabs for as much of the columns as possible when the\n[`indentUnit`](https://codemirror.net/6/docs/ref/#language.indentUnit) facet contains\ntabs.\n*/\nfunction indentString(state, cols) {\n    let result = \"\", ts = state.tabSize, ch = state.facet(indentUnit)[0];\n    if (ch == \"\\t\") {\n        while (cols >= ts) {\n            result += \"\\t\";\n            cols -= ts;\n        }\n        ch = \" \";\n    }\n    for (let i = 0; i < cols; i++)\n        result += ch;\n    return result;\n}\n/**\nGet the indentation, as a column number, at the given position.\nWill first consult any [indent services](https://codemirror.net/6/docs/ref/#language.indentService)\nthat are registered, and if none of those return an indentation,\nthis will check the syntax tree for the [indent node\nprop](https://codemirror.net/6/docs/ref/#language.indentNodeProp) and use that if found. Returns a\nnumber when an indentation could be determined, and null\notherwise.\n*/\nfunction getIndentation(context, pos) {\n    if (context instanceof EditorState)\n        context = new IndentContext(context);\n    for (let service of context.state.facet(indentService)) {\n        let result = service(context, pos);\n        if (result !== undefined)\n            return result;\n    }\n    let tree = syntaxTree(context.state);\n    return tree.length >= pos ? syntaxIndentation(context, tree, pos) : null;\n}\n/**\nCreate a change set that auto-indents all lines touched by the\ngiven document range.\n*/\nfunction indentRange(state, from, to) {\n    let updated = Object.create(null);\n    let context = new IndentContext(state, { overrideIndentation: start => { var _a; return (_a = updated[start]) !== null && _a !== void 0 ? _a : -1; } });\n    let changes = [];\n    for (let pos = from; pos <= to;) {\n        let line = state.doc.lineAt(pos);\n        pos = line.to + 1;\n        let indent = getIndentation(context, line.from);\n        if (indent == null)\n            continue;\n        if (!/\\S/.test(line.text))\n            indent = 0;\n        let cur = /^\\s*/.exec(line.text)[0];\n        let norm = indentString(state, indent);\n        if (cur != norm) {\n            updated[line.from] = indent;\n            changes.push({ from: line.from, to: line.from + cur.length, insert: norm });\n        }\n    }\n    return state.changes(changes);\n}\n/**\nIndentation contexts are used when calling [indentation\nservices](https://codemirror.net/6/docs/ref/#language.indentService). They provide helper utilities\nuseful in indentation logic, and can selectively override the\nindentation reported for some lines.\n*/\nclass IndentContext {\n    /**\n    Create an indent context.\n    */\n    constructor(\n    /**\n    The editor state.\n    */\n    state, \n    /**\n    @internal\n    */\n    options = {}) {\n        this.state = state;\n        this.options = options;\n        this.unit = getIndentUnit(state);\n    }\n    /**\n    Get a description of the line at the given position, taking\n    [simulated line\n    breaks](https://codemirror.net/6/docs/ref/#language.IndentContext.constructor^options.simulateBreak)\n    into account. If there is such a break at `pos`, the `bias`\n    argument determines whether the part of the line line before or\n    after the break is used.\n    */\n    lineAt(pos, bias = 1) {\n        let line = this.state.doc.lineAt(pos);\n        let { simulateBreak, simulateDoubleBreak } = this.options;\n        if (simulateBreak != null && simulateBreak >= line.from && simulateBreak <= line.to) {\n            if (simulateDoubleBreak && simulateBreak == pos)\n                return { text: \"\", from: pos };\n            else if (bias < 0 ? simulateBreak < pos : simulateBreak <= pos)\n                return { text: line.text.slice(simulateBreak - line.from), from: simulateBreak };\n            else\n                return { text: line.text.slice(0, simulateBreak - line.from), from: line.from };\n        }\n        return line;\n    }\n    /**\n    Get the text directly after `pos`, either the entire line\n    or the next 100 characters, whichever is shorter.\n    */\n    textAfterPos(pos, bias = 1) {\n        if (this.options.simulateDoubleBreak && pos == this.options.simulateBreak)\n            return \"\";\n        let { text, from } = this.lineAt(pos, bias);\n        return text.slice(pos - from, Math.min(text.length, pos + 100 - from));\n    }\n    /**\n    Find the column for the given position.\n    */\n    column(pos, bias = 1) {\n        let { text, from } = this.lineAt(pos, bias);\n        let result = this.countColumn(text, pos - from);\n        let override = this.options.overrideIndentation ? this.options.overrideIndentation(from) : -1;\n        if (override > -1)\n            result += override - this.countColumn(text, text.search(/\\S|$/));\n        return result;\n    }\n    /**\n    Find the column position (taking tabs into account) of the given\n    position in the given string.\n    */\n    countColumn(line, pos = line.length) {\n        return countColumn(line, this.state.tabSize, pos);\n    }\n    /**\n    Find the indentation column of the line at the given point.\n    */\n    lineIndent(pos, bias = 1) {\n        let { text, from } = this.lineAt(pos, bias);\n        let override = this.options.overrideIndentation;\n        if (override) {\n            let overriden = override(from);\n            if (overriden > -1)\n                return overriden;\n        }\n        return this.countColumn(text, text.search(/\\S|$/));\n    }\n    /**\n    Returns the [simulated line\n    break](https://codemirror.net/6/docs/ref/#language.IndentContext.constructor^options.simulateBreak)\n    for this context, if any.\n    */\n    get simulatedBreak() {\n        return this.options.simulateBreak || null;\n    }\n}\n/**\nA syntax tree node prop used to associate indentation strategies\nwith node types. Such a strategy is a function from an indentation\ncontext to a column number (see also\n[`indentString`](https://codemirror.net/6/docs/ref/#language.indentString)) or null, where null\nindicates that no definitive indentation can be determined.\n*/\nconst indentNodeProp = /*@__PURE__*/new NodeProp();\n// Compute the indentation for a given position from the syntax tree.\nfunction syntaxIndentation(cx, ast, pos) {\n    let stack = ast.resolveStack(pos);\n    let inner = ast.resolveInner(pos, -1).resolve(pos, 0).enterUnfinishedNodesBefore(pos);\n    if (inner != stack.node) {\n        let add = [];\n        for (let cur = inner; cur && !(cur.from < stack.node.from || cur.to > stack.node.to ||\n            cur.from == stack.node.from && cur.type == stack.node.type); cur = cur.parent)\n            add.push(cur);\n        for (let i = add.length - 1; i >= 0; i--)\n            stack = { node: add[i], next: stack };\n    }\n    return indentFor(stack, cx, pos);\n}\nfunction indentFor(stack, cx, pos) {\n    for (let cur = stack; cur; cur = cur.next) {\n        let strategy = indentStrategy(cur.node);\n        if (strategy)\n            return strategy(TreeIndentContext.create(cx, pos, cur));\n    }\n    return 0;\n}\nfunction ignoreClosed(cx) {\n    return cx.pos == cx.options.simulateBreak && cx.options.simulateDoubleBreak;\n}\nfunction indentStrategy(tree) {\n    let strategy = tree.type.prop(indentNodeProp);\n    if (strategy)\n        return strategy;\n    let first = tree.firstChild, close;\n    if (first && (close = first.type.prop(NodeProp.closedBy))) {\n        let last = tree.lastChild, closed = last && close.indexOf(last.name) > -1;\n        return cx => delimitedStrategy(cx, true, 1, undefined, closed && !ignoreClosed(cx) ? last.from : undefined);\n    }\n    return tree.parent == null ? topIndent : null;\n}\nfunction topIndent() { return 0; }\n/**\nObjects of this type provide context information and helper\nmethods to indentation functions registered on syntax nodes.\n*/\nclass TreeIndentContext extends IndentContext {\n    constructor(base, \n    /**\n    The position at which indentation is being computed.\n    */\n    pos, \n    /**\n    @internal\n    */\n    context) {\n        super(base.state, base.options);\n        this.base = base;\n        this.pos = pos;\n        this.context = context;\n    }\n    /**\n    The syntax tree node to which the indentation strategy\n    applies.\n    */\n    get node() { return this.context.node; }\n    /**\n    @internal\n    */\n    static create(base, pos, context) {\n        return new TreeIndentContext(base, pos, context);\n    }\n    /**\n    Get the text directly after `this.pos`, either the entire line\n    or the next 100 characters, whichever is shorter.\n    */\n    get textAfter() {\n        return this.textAfterPos(this.pos);\n    }\n    /**\n    Get the indentation at the reference line for `this.node`, which\n    is the line on which it starts, unless there is a node that is\n    _not_ a parent of this node covering the start of that line. If\n    so, the line at the start of that node is tried, again skipping\n    on if it is covered by another such node.\n    */\n    get baseIndent() {\n        return this.baseIndentFor(this.node);\n    }\n    /**\n    Get the indentation for the reference line of the given node\n    (see [`baseIndent`](https://codemirror.net/6/docs/ref/#language.TreeIndentContext.baseIndent)).\n    */\n    baseIndentFor(node) {\n        let line = this.state.doc.lineAt(node.from);\n        // Skip line starts that are covered by a sibling (or cousin, etc)\n        for (;;) {\n            let atBreak = node.resolve(line.from);\n            while (atBreak.parent && atBreak.parent.from == atBreak.from)\n                atBreak = atBreak.parent;\n            if (isParent(atBreak, node))\n                break;\n            line = this.state.doc.lineAt(atBreak.from);\n        }\n        return this.lineIndent(line.from);\n    }\n    /**\n    Continue looking for indentations in the node's parent nodes,\n    and return the result of that.\n    */\n    continue() {\n        return indentFor(this.context.next, this.base, this.pos);\n    }\n}\nfunction isParent(parent, of) {\n    for (let cur = of; cur; cur = cur.parent)\n        if (parent == cur)\n            return true;\n    return false;\n}\n// Check whether a delimited node is aligned (meaning there are\n// non-skipped nodes on the same line as the opening delimiter). And\n// if so, return the opening token.\nfunction bracketedAligned(context) {\n    let tree = context.node;\n    let openToken = tree.childAfter(tree.from), last = tree.lastChild;\n    if (!openToken)\n        return null;\n    let sim = context.options.simulateBreak;\n    let openLine = context.state.doc.lineAt(openToken.from);\n    let lineEnd = sim == null || sim <= openLine.from ? openLine.to : Math.min(openLine.to, sim);\n    for (let pos = openToken.to;;) {\n        let next = tree.childAfter(pos);\n        if (!next || next == last)\n            return null;\n        if (!next.type.isSkipped) {\n            if (next.from >= lineEnd)\n                return null;\n            let space = /^ */.exec(openLine.text.slice(openToken.to - openLine.from))[0].length;\n            return { from: openToken.from, to: openToken.to + space };\n        }\n        pos = next.to;\n    }\n}\n/**\nAn indentation strategy for delimited (usually bracketed) nodes.\nWill, by default, indent one unit more than the parent's base\nindent unless the line starts with a closing token. When `align`\nis true and there are non-skipped nodes on the node's opening\nline, the content of the node will be aligned with the end of the\nopening node, like this:\n\n    foo(bar,\n        baz)\n*/\nfunction delimitedIndent({ closing, align = true, units = 1 }) {\n    return (context) => delimitedStrategy(context, align, units, closing);\n}\nfunction delimitedStrategy(context, align, units, closing, closedAt) {\n    let after = context.textAfter, space = after.match(/^\\s*/)[0].length;\n    let closed = closing && after.slice(space, space + closing.length) == closing || closedAt == context.pos + space;\n    let aligned = align ? bracketedAligned(context) : null;\n    if (aligned)\n        return closed ? context.column(aligned.from) : context.column(aligned.to);\n    return context.baseIndent + (closed ? 0 : context.unit * units);\n}\n/**\nAn indentation strategy that aligns a node's content to its base\nindentation.\n*/\nconst flatIndent = (context) => context.baseIndent;\n/**\nCreates an indentation strategy that, by default, indents\ncontinued lines one unit more than the node's base indentation.\nYou can provide `except` to prevent indentation of lines that\nmatch a pattern (for example `/^else\\b/` in `if`/`else`\nconstructs), and you can change the amount of units used with the\n`units` option.\n*/\nfunction continuedIndent({ except, units = 1 } = {}) {\n    return (context) => {\n        let matchExcept = except && except.test(context.textAfter);\n        return context.baseIndent + (matchExcept ? 0 : units * context.unit);\n    };\n}\nconst DontIndentBeyond = 200;\n/**\nEnables reindentation on input. When a language defines an\n`indentOnInput` field in its [language\ndata](https://codemirror.net/6/docs/ref/#state.EditorState.languageDataAt), which must hold a regular\nexpression, the line at the cursor will be reindented whenever new\ntext is typed and the input from the start of the line up to the\ncursor matches that regexp.\n\nTo avoid unneccesary reindents, it is recommended to start the\nregexp with `^` (usually followed by `\\s*`), and end it with `$`.\nFor example, `/^\\s*\\}$/` will reindent when a closing brace is\nadded at the start of a line.\n*/\nfunction indentOnInput() {\n    return EditorState.transactionFilter.of(tr => {\n        if (!tr.docChanged || !tr.isUserEvent(\"input.type\") && !tr.isUserEvent(\"input.complete\"))\n            return tr;\n        let rules = tr.startState.languageDataAt(\"indentOnInput\", tr.startState.selection.main.head);\n        if (!rules.length)\n            return tr;\n        let doc = tr.newDoc, { head } = tr.newSelection.main, line = doc.lineAt(head);\n        if (head > line.from + DontIndentBeyond)\n            return tr;\n        let lineStart = doc.sliceString(line.from, head);\n        if (!rules.some(r => r.test(lineStart)))\n            return tr;\n        let { state } = tr, last = -1, changes = [];\n        for (let { head } of state.selection.ranges) {\n            let line = state.doc.lineAt(head);\n            if (line.from == last)\n                continue;\n            last = line.from;\n            let indent = getIndentation(state, line.from);\n            if (indent == null)\n                continue;\n            let cur = /^\\s*/.exec(line.text)[0];\n            let norm = indentString(state, indent);\n            if (cur != norm)\n                changes.push({ from: line.from, to: line.from + cur.length, insert: norm });\n        }\n        return changes.length ? [tr, { changes, sequential: true }] : tr;\n    });\n}\n\n/**\nA facet that registers a code folding service. When called with\nthe extent of a line, such a function should return a foldable\nrange that starts on that line (but continues beyond it), if one\ncan be found.\n*/\nconst foldService = /*@__PURE__*/Facet.define();\n/**\nThis node prop is used to associate folding information with\nsyntax node types. Given a syntax node, it should check whether\nthat tree is foldable and return the range that can be collapsed\nwhen it is.\n*/\nconst foldNodeProp = /*@__PURE__*/new NodeProp();\n/**\n[Fold](https://codemirror.net/6/docs/ref/#language.foldNodeProp) function that folds everything but\nthe first and the last child of a syntax node. Useful for nodes\nthat start and end with delimiters.\n*/\nfunction foldInside(node) {\n    let first = node.firstChild, last = node.lastChild;\n    return first && first.to < last.from ? { from: first.to, to: last.type.isError ? node.to : last.from } : null;\n}\nfunction syntaxFolding(state, start, end) {\n    let tree = syntaxTree(state);\n    if (tree.length < end)\n        return null;\n    let stack = tree.resolveStack(end, 1);\n    let found = null;\n    for (let iter = stack; iter; iter = iter.next) {\n        let cur = iter.node;\n        if (cur.to <= end || cur.from > end)\n            continue;\n        if (found && cur.from < start)\n            break;\n        let prop = cur.type.prop(foldNodeProp);\n        if (prop && (cur.to < tree.length - 50 || tree.length == state.doc.length || !isUnfinished(cur))) {\n            let value = prop(cur, state);\n            if (value && value.from <= end && value.from >= start && value.to > end)\n                found = value;\n        }\n    }\n    return found;\n}\nfunction isUnfinished(node) {\n    let ch = node.lastChild;\n    return ch && ch.to == node.to && ch.type.isError;\n}\n/**\nCheck whether the given line is foldable. First asks any fold\nservices registered through\n[`foldService`](https://codemirror.net/6/docs/ref/#language.foldService), and if none of them return\na result, tries to query the [fold node\nprop](https://codemirror.net/6/docs/ref/#language.foldNodeProp) of syntax nodes that cover the end\nof the line.\n*/\nfunction foldable(state, lineStart, lineEnd) {\n    for (let service of state.facet(foldService)) {\n        let result = service(state, lineStart, lineEnd);\n        if (result)\n            return result;\n    }\n    return syntaxFolding(state, lineStart, lineEnd);\n}\nfunction mapRange(range, mapping) {\n    let from = mapping.mapPos(range.from, 1), to = mapping.mapPos(range.to, -1);\n    return from >= to ? undefined : { from, to };\n}\n/**\nState effect that can be attached to a transaction to fold the\ngiven range. (You probably only need this in exceptional\ncircumstances—usually you'll just want to let\n[`foldCode`](https://codemirror.net/6/docs/ref/#language.foldCode) and the [fold\ngutter](https://codemirror.net/6/docs/ref/#language.foldGutter) create the transactions.)\n*/\nconst foldEffect = /*@__PURE__*/StateEffect.define({ map: mapRange });\n/**\nState effect that unfolds the given range (if it was folded).\n*/\nconst unfoldEffect = /*@__PURE__*/StateEffect.define({ map: mapRange });\nfunction selectedLines(view) {\n    let lines = [];\n    for (let { head } of view.state.selection.ranges) {\n        if (lines.some(l => l.from <= head && l.to >= head))\n            continue;\n        lines.push(view.lineBlockAt(head));\n    }\n    return lines;\n}\n/**\nThe state field that stores the folded ranges (as a [decoration\nset](https://codemirror.net/6/docs/ref/#view.DecorationSet)). Can be passed to\n[`EditorState.toJSON`](https://codemirror.net/6/docs/ref/#state.EditorState.toJSON) and\n[`fromJSON`](https://codemirror.net/6/docs/ref/#state.EditorState^fromJSON) to serialize the fold\nstate.\n*/\nconst foldState = /*@__PURE__*/StateField.define({\n    create() {\n        return Decoration.none;\n    },\n    update(folded, tr) {\n        if (tr.isUserEvent(\"delete\"))\n            tr.changes.iterChangedRanges((fromA, toA) => folded = clearTouchedFolds(folded, fromA, toA));\n        folded = folded.map(tr.changes);\n        for (let e of tr.effects) {\n            if (e.is(foldEffect) && !foldExists(folded, e.value.from, e.value.to)) {\n                let { preparePlaceholder } = tr.state.facet(foldConfig);\n                let widget = !preparePlaceholder ? foldWidget :\n                    Decoration.replace({ widget: new PreparedFoldWidget(preparePlaceholder(tr.state, e.value)) });\n                folded = folded.update({ add: [widget.range(e.value.from, e.value.to)] });\n            }\n            else if (e.is(unfoldEffect)) {\n                folded = folded.update({ filter: (from, to) => e.value.from != from || e.value.to != to,\n                    filterFrom: e.value.from, filterTo: e.value.to });\n            }\n        }\n        // Clear folded ranges that cover the selection head\n        if (tr.selection)\n            folded = clearTouchedFolds(folded, tr.selection.main.head);\n        return folded;\n    },\n    provide: f => EditorView.decorations.from(f),\n    toJSON(folded, state) {\n        let ranges = [];\n        folded.between(0, state.doc.length, (from, to) => { ranges.push(from, to); });\n        return ranges;\n    },\n    fromJSON(value) {\n        if (!Array.isArray(value) || value.length % 2)\n            throw new RangeError(\"Invalid JSON for fold state\");\n        let ranges = [];\n        for (let i = 0; i < value.length;) {\n            let from = value[i++], to = value[i++];\n            if (typeof from != \"number\" || typeof to != \"number\")\n                throw new RangeError(\"Invalid JSON for fold state\");\n            ranges.push(foldWidget.range(from, to));\n        }\n        return Decoration.set(ranges, true);\n    }\n});\nfunction clearTouchedFolds(folded, from, to = from) {\n    let touched = false;\n    folded.between(from, to, (a, b) => { if (a < to && b > from)\n        touched = true; });\n    return !touched ? folded : folded.update({\n        filterFrom: from,\n        filterTo: to,\n        filter: (a, b) => a >= to || b <= from\n    });\n}\n/**\nGet a [range set](https://codemirror.net/6/docs/ref/#state.RangeSet) containing the folded ranges\nin the given state.\n*/\nfunction foldedRanges(state) {\n    return state.field(foldState, false) || RangeSet.empty;\n}\nfunction findFold(state, from, to) {\n    var _a;\n    let found = null;\n    (_a = state.field(foldState, false)) === null || _a === void 0 ? void 0 : _a.between(from, to, (from, to) => {\n        if (!found || found.from > from)\n            found = { from, to };\n    });\n    return found;\n}\nfunction foldExists(folded, from, to) {\n    let found = false;\n    folded.between(from, from, (a, b) => { if (a == from && b == to)\n        found = true; });\n    return found;\n}\nfunction maybeEnable(state, other) {\n    return state.field(foldState, false) ? other : other.concat(StateEffect.appendConfig.of(codeFolding()));\n}\n/**\nFold the lines that are selected, if possible.\n*/\nconst foldCode = view => {\n    for (let line of selectedLines(view)) {\n        let range = foldable(view.state, line.from, line.to);\n        if (range) {\n            view.dispatch({ effects: maybeEnable(view.state, [foldEffect.of(range), announceFold(view, range)]) });\n            return true;\n        }\n    }\n    return false;\n};\n/**\nUnfold folded ranges on selected lines.\n*/\nconst unfoldCode = view => {\n    if (!view.state.field(foldState, false))\n        return false;\n    let effects = [];\n    for (let line of selectedLines(view)) {\n        let folded = findFold(view.state, line.from, line.to);\n        if (folded)\n            effects.push(unfoldEffect.of(folded), announceFold(view, folded, false));\n    }\n    if (effects.length)\n        view.dispatch({ effects });\n    return effects.length > 0;\n};\nfunction announceFold(view, range, fold = true) {\n    let lineFrom = view.state.doc.lineAt(range.from).number, lineTo = view.state.doc.lineAt(range.to).number;\n    return EditorView.announce.of(`${view.state.phrase(fold ? \"Folded lines\" : \"Unfolded lines\")} ${lineFrom} ${view.state.phrase(\"to\")} ${lineTo}.`);\n}\n/**\nFold all top-level foldable ranges. Note that, in most cases,\nfolding information will depend on the [syntax\ntree](https://codemirror.net/6/docs/ref/#language.syntaxTree), and folding everything may not work\nreliably when the document hasn't been fully parsed (either\nbecause the editor state was only just initialized, or because the\ndocument is so big that the parser decided not to parse it\nentirely).\n*/\nconst foldAll = view => {\n    let { state } = view, effects = [];\n    for (let pos = 0; pos < state.doc.length;) {\n        let line = view.lineBlockAt(pos), range = foldable(state, line.from, line.to);\n        if (range)\n            effects.push(foldEffect.of(range));\n        pos = (range ? view.lineBlockAt(range.to) : line).to + 1;\n    }\n    if (effects.length)\n        view.dispatch({ effects: maybeEnable(view.state, effects) });\n    return !!effects.length;\n};\n/**\nUnfold all folded code.\n*/\nconst unfoldAll = view => {\n    let field = view.state.field(foldState, false);\n    if (!field || !field.size)\n        return false;\n    let effects = [];\n    field.between(0, view.state.doc.length, (from, to) => { effects.push(unfoldEffect.of({ from, to })); });\n    view.dispatch({ effects });\n    return true;\n};\n// Find the foldable region containing the given line, if one exists\nfunction foldableContainer(view, lineBlock) {\n    // Look backwards through line blocks until we find a foldable region that\n    // intersects with the line\n    for (let line = lineBlock;;) {\n        let foldableRegion = foldable(view.state, line.from, line.to);\n        if (foldableRegion && foldableRegion.to > lineBlock.from)\n            return foldableRegion;\n        if (!line.from)\n            return null;\n        line = view.lineBlockAt(line.from - 1);\n    }\n}\n/**\nToggle folding at cursors. Unfolds if there is an existing fold\nstarting in that line, tries to find a foldable range around it\notherwise.\n*/\nconst toggleFold = (view) => {\n    let effects = [];\n    for (let line of selectedLines(view)) {\n        let folded = findFold(view.state, line.from, line.to);\n        if (folded) {\n            effects.push(unfoldEffect.of(folded), announceFold(view, folded, false));\n        }\n        else {\n            let foldRange = foldableContainer(view, line);\n            if (foldRange)\n                effects.push(foldEffect.of(foldRange), announceFold(view, foldRange));\n        }\n    }\n    if (effects.length > 0)\n        view.dispatch({ effects: maybeEnable(view.state, effects) });\n    return !!effects.length;\n};\n/**\nDefault fold-related key bindings.\n\n - Ctrl-Shift-[ (Cmd-Alt-[ on macOS): [`foldCode`](https://codemirror.net/6/docs/ref/#language.foldCode).\n - Ctrl-Shift-] (Cmd-Alt-] on macOS): [`unfoldCode`](https://codemirror.net/6/docs/ref/#language.unfoldCode).\n - Ctrl-Alt-[: [`foldAll`](https://codemirror.net/6/docs/ref/#language.foldAll).\n - Ctrl-Alt-]: [`unfoldAll`](https://codemirror.net/6/docs/ref/#language.unfoldAll).\n*/\nconst foldKeymap = [\n    { key: \"Ctrl-Shift-[\", mac: \"Cmd-Alt-[\", run: foldCode },\n    { key: \"Ctrl-Shift-]\", mac: \"Cmd-Alt-]\", run: unfoldCode },\n    { key: \"Ctrl-Alt-[\", run: foldAll },\n    { key: \"Ctrl-Alt-]\", run: unfoldAll }\n];\nconst defaultConfig = {\n    placeholderDOM: null,\n    preparePlaceholder: null,\n    placeholderText: \"…\"\n};\nconst foldConfig = /*@__PURE__*/Facet.define({\n    combine(values) { return combineConfig(values, defaultConfig); }\n});\n/**\nCreate an extension that configures code folding.\n*/\nfunction codeFolding(config) {\n    let result = [foldState, baseTheme$1];\n    if (config)\n        result.push(foldConfig.of(config));\n    return result;\n}\nfunction widgetToDOM(view, prepared) {\n    let { state } = view, conf = state.facet(foldConfig);\n    let onclick = (event) => {\n        let line = view.lineBlockAt(view.posAtDOM(event.target));\n        let folded = findFold(view.state, line.from, line.to);\n        if (folded)\n            view.dispatch({ effects: unfoldEffect.of(folded) });\n        event.preventDefault();\n    };\n    if (conf.placeholderDOM)\n        return conf.placeholderDOM(view, onclick, prepared);\n    let element = document.createElement(\"span\");\n    element.textContent = conf.placeholderText;\n    element.setAttribute(\"aria-label\", state.phrase(\"folded code\"));\n    element.title = state.phrase(\"unfold\");\n    element.className = \"cm-foldPlaceholder\";\n    element.onclick = onclick;\n    return element;\n}\nconst foldWidget = /*@__PURE__*/Decoration.replace({ widget: /*@__PURE__*/new class extends WidgetType {\n        toDOM(view) { return widgetToDOM(view, null); }\n    } });\nclass PreparedFoldWidget extends WidgetType {\n    constructor(value) {\n        super();\n        this.value = value;\n    }\n    eq(other) { return this.value == other.value; }\n    toDOM(view) { return widgetToDOM(view, this.value); }\n}\nconst foldGutterDefaults = {\n    openText: \"⌄\",\n    closedText: \"›\",\n    markerDOM: null,\n    domEventHandlers: {},\n    foldingChanged: () => false\n};\nclass FoldMarker extends GutterMarker {\n    constructor(config, open) {\n        super();\n        this.config = config;\n        this.open = open;\n    }\n    eq(other) { return this.config == other.config && this.open == other.open; }\n    toDOM(view) {\n        if (this.config.markerDOM)\n            return this.config.markerDOM(this.open);\n        let span = document.createElement(\"span\");\n        span.textContent = this.open ? this.config.openText : this.config.closedText;\n        span.title = view.state.phrase(this.open ? \"Fold line\" : \"Unfold line\");\n        return span;\n    }\n}\n/**\nCreate an extension that registers a fold gutter, which shows a\nfold status indicator before foldable lines (which can be clicked\nto fold or unfold the line).\n*/\nfunction foldGutter(config = {}) {\n    let fullConfig = { ...foldGutterDefaults, ...config };\n    let canFold = new FoldMarker(fullConfig, true), canUnfold = new FoldMarker(fullConfig, false);\n    let markers = ViewPlugin.fromClass(class {\n        constructor(view) {\n            this.from = view.viewport.from;\n            this.markers = this.buildMarkers(view);\n        }\n        update(update) {\n            if (update.docChanged || update.viewportChanged ||\n                update.startState.facet(language) != update.state.facet(language) ||\n                update.startState.field(foldState, false) != update.state.field(foldState, false) ||\n                syntaxTree(update.startState) != syntaxTree(update.state) ||\n                fullConfig.foldingChanged(update))\n                this.markers = this.buildMarkers(update.view);\n        }\n        buildMarkers(view) {\n            let builder = new RangeSetBuilder();\n            for (let line of view.viewportLineBlocks) {\n                let mark = findFold(view.state, line.from, line.to) ? canUnfold\n                    : foldable(view.state, line.from, line.to) ? canFold : null;\n                if (mark)\n                    builder.add(line.from, line.from, mark);\n            }\n            return builder.finish();\n        }\n    });\n    let { domEventHandlers } = fullConfig;\n    return [\n        markers,\n        gutter({\n            class: \"cm-foldGutter\",\n            markers(view) { var _a; return ((_a = view.plugin(markers)) === null || _a === void 0 ? void 0 : _a.markers) || RangeSet.empty; },\n            initialSpacer() {\n                return new FoldMarker(fullConfig, false);\n            },\n            domEventHandlers: {\n                ...domEventHandlers,\n                click: (view, line, event) => {\n                    if (domEventHandlers.click && domEventHandlers.click(view, line, event))\n                        return true;\n                    let folded = findFold(view.state, line.from, line.to);\n                    if (folded) {\n                        view.dispatch({ effects: unfoldEffect.of(folded) });\n                        return true;\n                    }\n                    let range = foldable(view.state, line.from, line.to);\n                    if (range) {\n                        view.dispatch({ effects: foldEffect.of(range) });\n                        return true;\n                    }\n                    return false;\n                }\n            }\n        }),\n        codeFolding()\n    ];\n}\nconst baseTheme$1 = /*@__PURE__*/EditorView.baseTheme({\n    \".cm-foldPlaceholder\": {\n        backgroundColor: \"#eee\",\n        border: \"1px solid #ddd\",\n        color: \"#888\",\n        borderRadius: \".2em\",\n        margin: \"0 1px\",\n        padding: \"0 1px\",\n        cursor: \"pointer\"\n    },\n    \".cm-foldGutter span\": {\n        padding: \"0 1px\",\n        cursor: \"pointer\"\n    }\n});\n\n/**\nA highlight style associates CSS styles with higlighting\n[tags](https://lezer.codemirror.net/docs/ref#highlight.Tag).\n*/\nclass HighlightStyle {\n    constructor(\n    /**\n    The tag styles used to create this highlight style.\n    */\n    specs, options) {\n        this.specs = specs;\n        let modSpec;\n        function def(spec) {\n            let cls = StyleModule.newName();\n            (modSpec || (modSpec = Object.create(null)))[\".\" + cls] = spec;\n            return cls;\n        }\n        const all = typeof options.all == \"string\" ? options.all : options.all ? def(options.all) : undefined;\n        const scopeOpt = options.scope;\n        this.scope = scopeOpt instanceof Language ? (type) => type.prop(languageDataProp) == scopeOpt.data\n            : scopeOpt ? (type) => type == scopeOpt : undefined;\n        this.style = tagHighlighter(specs.map(style => ({\n            tag: style.tag,\n            class: style.class || def(Object.assign({}, style, { tag: null }))\n        })), {\n            all,\n        }).style;\n        this.module = modSpec ? new StyleModule(modSpec) : null;\n        this.themeType = options.themeType;\n    }\n    /**\n    Create a highlighter style that associates the given styles to\n    the given tags. The specs must be objects that hold a style tag\n    or array of tags in their `tag` property, and either a single\n    `class` property providing a static CSS class (for highlighter\n    that rely on external styling), or a\n    [`style-mod`](https://github.com/marijnh/style-mod#documentation)-style\n    set of CSS properties (which define the styling for those tags).\n    \n    The CSS rules created for a highlighter will be emitted in the\n    order of the spec's properties. That means that for elements that\n    have multiple tags associated with them, styles defined further\n    down in the list will have a higher CSS precedence than styles\n    defined earlier.\n    */\n    static define(specs, options) {\n        return new HighlightStyle(specs, options || {});\n    }\n}\nconst highlighterFacet = /*@__PURE__*/Facet.define();\nconst fallbackHighlighter = /*@__PURE__*/Facet.define({\n    combine(values) { return values.length ? [values[0]] : null; }\n});\nfunction getHighlighters(state) {\n    let main = state.facet(highlighterFacet);\n    return main.length ? main : state.facet(fallbackHighlighter);\n}\n/**\nWrap a highlighter in an editor extension that uses it to apply\nsyntax highlighting to the editor content.\n\nWhen multiple (non-fallback) styles are provided, the styling\napplied is the union of the classes they emit.\n*/\nfunction syntaxHighlighting(highlighter, options) {\n    let ext = [treeHighlighter], themeType;\n    if (highlighter instanceof HighlightStyle) {\n        if (highlighter.module)\n            ext.push(EditorView.styleModule.of(highlighter.module));\n        themeType = highlighter.themeType;\n    }\n    if (options === null || options === void 0 ? void 0 : options.fallback)\n        ext.push(fallbackHighlighter.of(highlighter));\n    else if (themeType)\n        ext.push(highlighterFacet.computeN([EditorView.darkTheme], state => {\n            return state.facet(EditorView.darkTheme) == (themeType == \"dark\") ? [highlighter] : [];\n        }));\n    else\n        ext.push(highlighterFacet.of(highlighter));\n    return ext;\n}\n/**\nReturns the CSS classes (if any) that the highlighters active in\nthe state would assign to the given style\n[tags](https://lezer.codemirror.net/docs/ref#highlight.Tag) and\n(optional) language\n[scope](https://codemirror.net/6/docs/ref/#language.HighlightStyle^define^options.scope).\n*/\nfunction highlightingFor(state, tags, scope) {\n    let highlighters = getHighlighters(state);\n    let result = null;\n    if (highlighters)\n        for (let highlighter of highlighters) {\n            if (!highlighter.scope || scope && highlighter.scope(scope)) {\n                let cls = highlighter.style(tags);\n                if (cls)\n                    result = result ? result + \" \" + cls : cls;\n            }\n        }\n    return result;\n}\nclass TreeHighlighter {\n    constructor(view) {\n        this.markCache = Object.create(null);\n        this.tree = syntaxTree(view.state);\n        this.decorations = this.buildDeco(view, getHighlighters(view.state));\n        this.decoratedTo = view.viewport.to;\n    }\n    update(update) {\n        let tree = syntaxTree(update.state), highlighters = getHighlighters(update.state);\n        let styleChange = highlighters != getHighlighters(update.startState);\n        let { viewport } = update.view, decoratedToMapped = update.changes.mapPos(this.decoratedTo, 1);\n        if (tree.length < viewport.to && !styleChange && tree.type == this.tree.type && decoratedToMapped >= viewport.to) {\n            this.decorations = this.decorations.map(update.changes);\n            this.decoratedTo = decoratedToMapped;\n        }\n        else if (tree != this.tree || update.viewportChanged || styleChange) {\n            this.tree = tree;\n            this.decorations = this.buildDeco(update.view, highlighters);\n            this.decoratedTo = viewport.to;\n        }\n    }\n    buildDeco(view, highlighters) {\n        if (!highlighters || !this.tree.length)\n            return Decoration.none;\n        let builder = new RangeSetBuilder();\n        for (let { from, to } of view.visibleRanges) {\n            highlightTree(this.tree, highlighters, (from, to, style) => {\n                builder.add(from, to, this.markCache[style] || (this.markCache[style] = Decoration.mark({ class: style })));\n            }, from, to);\n        }\n        return builder.finish();\n    }\n}\nconst treeHighlighter = /*@__PURE__*/Prec.high(/*@__PURE__*/ViewPlugin.fromClass(TreeHighlighter, {\n    decorations: v => v.decorations\n}));\n/**\nA default highlight style (works well with light themes).\n*/\nconst defaultHighlightStyle = /*@__PURE__*/HighlightStyle.define([\n    { tag: tags.meta,\n        color: \"#404740\" },\n    { tag: tags.link,\n        textDecoration: \"underline\" },\n    { tag: tags.heading,\n        textDecoration: \"underline\",\n        fontWeight: \"bold\" },\n    { tag: tags.emphasis,\n        fontStyle: \"italic\" },\n    { tag: tags.strong,\n        fontWeight: \"bold\" },\n    { tag: tags.strikethrough,\n        textDecoration: \"line-through\" },\n    { tag: tags.keyword,\n        color: \"#708\" },\n    { tag: [tags.atom, tags.bool, tags.url, tags.contentSeparator, tags.labelName],\n        color: \"#219\" },\n    { tag: [tags.literal, tags.inserted],\n        color: \"#164\" },\n    { tag: [tags.string, tags.deleted],\n        color: \"#a11\" },\n    { tag: [tags.regexp, tags.escape, /*@__PURE__*/tags.special(tags.string)],\n        color: \"#e40\" },\n    { tag: /*@__PURE__*/tags.definition(tags.variableName),\n        color: \"#00f\" },\n    { tag: /*@__PURE__*/tags.local(tags.variableName),\n        color: \"#30a\" },\n    { tag: [tags.typeName, tags.namespace],\n        color: \"#085\" },\n    { tag: tags.className,\n        color: \"#167\" },\n    { tag: [/*@__PURE__*/tags.special(tags.variableName), tags.macroName],\n        color: \"#256\" },\n    { tag: /*@__PURE__*/tags.definition(tags.propertyName),\n        color: \"#00c\" },\n    { tag: tags.comment,\n        color: \"#940\" },\n    { tag: tags.invalid,\n        color: \"#f00\" }\n]);\n\nconst baseTheme = /*@__PURE__*/EditorView.baseTheme({\n    \"&.cm-focused .cm-matchingBracket\": { backgroundColor: \"#328c8252\" },\n    \"&.cm-focused .cm-nonmatchingBracket\": { backgroundColor: \"#bb555544\" }\n});\nconst DefaultScanDist = 10000, DefaultBrackets = \"()[]{}\";\nconst bracketMatchingConfig = /*@__PURE__*/Facet.define({\n    combine(configs) {\n        return combineConfig(configs, {\n            afterCursor: true,\n            brackets: DefaultBrackets,\n            maxScanDistance: DefaultScanDist,\n            renderMatch: defaultRenderMatch\n        });\n    }\n});\nconst matchingMark = /*@__PURE__*/Decoration.mark({ class: \"cm-matchingBracket\" }), nonmatchingMark = /*@__PURE__*/Decoration.mark({ class: \"cm-nonmatchingBracket\" });\nfunction defaultRenderMatch(match) {\n    let decorations = [];\n    let mark = match.matched ? matchingMark : nonmatchingMark;\n    decorations.push(mark.range(match.start.from, match.start.to));\n    if (match.end)\n        decorations.push(mark.range(match.end.from, match.end.to));\n    return decorations;\n}\nconst bracketMatchingState = /*@__PURE__*/StateField.define({\n    create() { return Decoration.none; },\n    update(deco, tr) {\n        if (!tr.docChanged && !tr.selection)\n            return deco;\n        let decorations = [];\n        let config = tr.state.facet(bracketMatchingConfig);\n        for (let range of tr.state.selection.ranges) {\n            if (!range.empty)\n                continue;\n            let match = matchBrackets(tr.state, range.head, -1, config)\n                || (range.head > 0 && matchBrackets(tr.state, range.head - 1, 1, config))\n                || (config.afterCursor &&\n                    (matchBrackets(tr.state, range.head, 1, config) ||\n                        (range.head < tr.state.doc.length && matchBrackets(tr.state, range.head + 1, -1, config))));\n            if (match)\n                decorations = decorations.concat(config.renderMatch(match, tr.state));\n        }\n        return Decoration.set(decorations, true);\n    },\n    provide: f => EditorView.decorations.from(f)\n});\nconst bracketMatchingUnique = [\n    bracketMatchingState,\n    baseTheme\n];\n/**\nCreate an extension that enables bracket matching. Whenever the\ncursor is next to a bracket, that bracket and the one it matches\nare highlighted. Or, when no matching bracket is found, another\nhighlighting style is used to indicate this.\n*/\nfunction bracketMatching(config = {}) {\n    return [bracketMatchingConfig.of(config), bracketMatchingUnique];\n}\n/**\nWhen larger syntax nodes, such as HTML tags, are marked as\nopening/closing, it can be a bit messy to treat the whole node as\na matchable bracket. This node prop allows you to define, for such\na node, a ‘handle’—the part of the node that is highlighted, and\nthat the cursor must be on to activate highlighting in the first\nplace.\n*/\nconst bracketMatchingHandle = /*@__PURE__*/new NodeProp();\nfunction matchingNodes(node, dir, brackets) {\n    let byProp = node.prop(dir < 0 ? NodeProp.openedBy : NodeProp.closedBy);\n    if (byProp)\n        return byProp;\n    if (node.name.length == 1) {\n        let index = brackets.indexOf(node.name);\n        if (index > -1 && index % 2 == (dir < 0 ? 1 : 0))\n            return [brackets[index + dir]];\n    }\n    return null;\n}\nfunction findHandle(node) {\n    let hasHandle = node.type.prop(bracketMatchingHandle);\n    return hasHandle ? hasHandle(node.node) : node;\n}\n/**\nFind the matching bracket for the token at `pos`, scanning\ndirection `dir`. Only the `brackets` and `maxScanDistance`\nproperties are used from `config`, if given. Returns null if no\nbracket was found at `pos`, or a match result otherwise.\n*/\nfunction matchBrackets(state, pos, dir, config = {}) {\n    let maxScanDistance = config.maxScanDistance || DefaultScanDist, brackets = config.brackets || DefaultBrackets;\n    let tree = syntaxTree(state), node = tree.resolveInner(pos, dir);\n    for (let cur = node; cur; cur = cur.parent) {\n        let matches = matchingNodes(cur.type, dir, brackets);\n        if (matches && cur.from < cur.to) {\n            let handle = findHandle(cur);\n            if (handle && (dir > 0 ? pos >= handle.from && pos < handle.to : pos > handle.from && pos <= handle.to))\n                return matchMarkedBrackets(state, pos, dir, cur, handle, matches, brackets);\n        }\n    }\n    return matchPlainBrackets(state, pos, dir, tree, node.type, maxScanDistance, brackets);\n}\nfunction matchMarkedBrackets(_state, _pos, dir, token, handle, matching, brackets) {\n    let parent = token.parent, firstToken = { from: handle.from, to: handle.to };\n    let depth = 0, cursor = parent === null || parent === void 0 ? void 0 : parent.cursor();\n    if (cursor && (dir < 0 ? cursor.childBefore(token.from) : cursor.childAfter(token.to)))\n        do {\n            if (dir < 0 ? cursor.to <= token.from : cursor.from >= token.to) {\n                if (depth == 0 && matching.indexOf(cursor.type.name) > -1 && cursor.from < cursor.to) {\n                    let endHandle = findHandle(cursor);\n                    return { start: firstToken, end: endHandle ? { from: endHandle.from, to: endHandle.to } : undefined, matched: true };\n                }\n                else if (matchingNodes(cursor.type, dir, brackets)) {\n                    depth++;\n                }\n                else if (matchingNodes(cursor.type, -dir, brackets)) {\n                    if (depth == 0) {\n                        let endHandle = findHandle(cursor);\n                        return {\n                            start: firstToken,\n                            end: endHandle && endHandle.from < endHandle.to ? { from: endHandle.from, to: endHandle.to } : undefined,\n                            matched: false\n                        };\n                    }\n                    depth--;\n                }\n            }\n        } while (dir < 0 ? cursor.prevSibling() : cursor.nextSibling());\n    return { start: firstToken, matched: false };\n}\nfunction matchPlainBrackets(state, pos, dir, tree, tokenType, maxScanDistance, brackets) {\n    let startCh = dir < 0 ? state.sliceDoc(pos - 1, pos) : state.sliceDoc(pos, pos + 1);\n    let bracket = brackets.indexOf(startCh);\n    if (bracket < 0 || (bracket % 2 == 0) != (dir > 0))\n        return null;\n    let startToken = { from: dir < 0 ? pos - 1 : pos, to: dir > 0 ? pos + 1 : pos };\n    let iter = state.doc.iterRange(pos, dir > 0 ? state.doc.length : 0), depth = 0;\n    for (let distance = 0; !(iter.next()).done && distance <= maxScanDistance;) {\n        let text = iter.value;\n        if (dir < 0)\n            distance += text.length;\n        let basePos = pos + distance * dir;\n        for (let pos = dir > 0 ? 0 : text.length - 1, end = dir > 0 ? text.length : -1; pos != end; pos += dir) {\n            let found = brackets.indexOf(text[pos]);\n            if (found < 0 || tree.resolveInner(basePos + pos, 1).type != tokenType)\n                continue;\n            if ((found % 2 == 0) == (dir > 0)) {\n                depth++;\n            }\n            else if (depth == 1) { // Closing\n                return { start: startToken, end: { from: basePos + pos, to: basePos + pos + 1 }, matched: (found >> 1) == (bracket >> 1) };\n            }\n            else {\n                depth--;\n            }\n        }\n        if (dir > 0)\n            distance += text.length;\n    }\n    return iter.done ? { start: startToken, matched: false } : null;\n}\n\n// Counts the column offset in a string, taking tabs into account.\n// Used mostly to find indentation.\nfunction countCol(string, end, tabSize, startIndex = 0, startValue = 0) {\n    if (end == null) {\n        end = string.search(/[^\\s\\u00a0]/);\n        if (end == -1)\n            end = string.length;\n    }\n    let n = startValue;\n    for (let i = startIndex; i < end; i++) {\n        if (string.charCodeAt(i) == 9)\n            n += tabSize - (n % tabSize);\n        else\n            n++;\n    }\n    return n;\n}\n/**\nEncapsulates a single line of input. Given to stream syntax code,\nwhich uses it to tokenize the content.\n*/\nclass StringStream {\n    /**\n    Create a stream.\n    */\n    constructor(\n    /**\n    The line.\n    */\n    string, tabSize, \n    /**\n    The current indent unit size.\n    */\n    indentUnit, overrideIndent) {\n        this.string = string;\n        this.tabSize = tabSize;\n        this.indentUnit = indentUnit;\n        this.overrideIndent = overrideIndent;\n        /**\n        The current position on the line.\n        */\n        this.pos = 0;\n        /**\n        The start position of the current token.\n        */\n        this.start = 0;\n        this.lastColumnPos = 0;\n        this.lastColumnValue = 0;\n    }\n    /**\n    True if we are at the end of the line.\n    */\n    eol() { return this.pos >= this.string.length; }\n    /**\n    True if we are at the start of the line.\n    */\n    sol() { return this.pos == 0; }\n    /**\n    Get the next code unit after the current position, or undefined\n    if we're at the end of the line.\n    */\n    peek() { return this.string.charAt(this.pos) || undefined; }\n    /**\n    Read the next code unit and advance `this.pos`.\n    */\n    next() {\n        if (this.pos < this.string.length)\n            return this.string.charAt(this.pos++);\n    }\n    /**\n    Match the next character against the given string, regular\n    expression, or predicate. Consume and return it if it matches.\n    */\n    eat(match) {\n        let ch = this.string.charAt(this.pos);\n        let ok;\n        if (typeof match == \"string\")\n            ok = ch == match;\n        else\n            ok = ch && (match instanceof RegExp ? match.test(ch) : match(ch));\n        if (ok) {\n            ++this.pos;\n            return ch;\n        }\n    }\n    /**\n    Continue matching characters that match the given string,\n    regular expression, or predicate function. Return true if any\n    characters were consumed.\n    */\n    eatWhile(match) {\n        let start = this.pos;\n        while (this.eat(match)) { }\n        return this.pos > start;\n    }\n    /**\n    Consume whitespace ahead of `this.pos`. Return true if any was\n    found.\n    */\n    eatSpace() {\n        let start = this.pos;\n        while (/[\\s\\u00a0]/.test(this.string.charAt(this.pos)))\n            ++this.pos;\n        return this.pos > start;\n    }\n    /**\n    Move to the end of the line.\n    */\n    skipToEnd() { this.pos = this.string.length; }\n    /**\n    Move to directly before the given character, if found on the\n    current line.\n    */\n    skipTo(ch) {\n        let found = this.string.indexOf(ch, this.pos);\n        if (found > -1) {\n            this.pos = found;\n            return true;\n        }\n    }\n    /**\n    Move back `n` characters.\n    */\n    backUp(n) { this.pos -= n; }\n    /**\n    Get the column position at `this.pos`.\n    */\n    column() {\n        if (this.lastColumnPos < this.start) {\n            this.lastColumnValue = countCol(this.string, this.start, this.tabSize, this.lastColumnPos, this.lastColumnValue);\n            this.lastColumnPos = this.start;\n        }\n        return this.lastColumnValue;\n    }\n    /**\n    Get the indentation column of the current line.\n    */\n    indentation() {\n        var _a;\n        return (_a = this.overrideIndent) !== null && _a !== void 0 ? _a : countCol(this.string, null, this.tabSize);\n    }\n    /**\n    Match the input against the given string or regular expression\n    (which should start with a `^`). Return true or the regexp match\n    if it matches.\n    \n    Unless `consume` is set to `false`, this will move `this.pos`\n    past the matched text.\n    \n    When matching a string `caseInsensitive` can be set to true to\n    make the match case-insensitive.\n    */\n    match(pattern, consume, caseInsensitive) {\n        if (typeof pattern == \"string\") {\n            let cased = (str) => caseInsensitive ? str.toLowerCase() : str;\n            let substr = this.string.substr(this.pos, pattern.length);\n            if (cased(substr) == cased(pattern)) {\n                if (consume !== false)\n                    this.pos += pattern.length;\n                return true;\n            }\n            else\n                return null;\n        }\n        else {\n            let match = this.string.slice(this.pos).match(pattern);\n            if (match && match.index > 0)\n                return null;\n            if (match && consume !== false)\n                this.pos += match[0].length;\n            return match;\n        }\n    }\n    /**\n    Get the current token.\n    */\n    current() { return this.string.slice(this.start, this.pos); }\n}\n\nfunction fullParser(spec) {\n    return {\n        name: spec.name || \"\",\n        token: spec.token,\n        blankLine: spec.blankLine || (() => { }),\n        startState: spec.startState || (() => true),\n        copyState: spec.copyState || defaultCopyState,\n        indent: spec.indent || (() => null),\n        languageData: spec.languageData || {},\n        tokenTable: spec.tokenTable || noTokens,\n        mergeTokens: spec.mergeTokens !== false\n    };\n}\nfunction defaultCopyState(state) {\n    if (typeof state != \"object\")\n        return state;\n    let newState = {};\n    for (let prop in state) {\n        let val = state[prop];\n        newState[prop] = (val instanceof Array ? val.slice() : val);\n    }\n    return newState;\n}\nconst IndentedFrom = /*@__PURE__*/new WeakMap();\n/**\nA [language](https://codemirror.net/6/docs/ref/#language.Language) class based on a CodeMirror\n5-style [streaming parser](https://codemirror.net/6/docs/ref/#language.StreamParser).\n*/\nclass StreamLanguage extends Language {\n    constructor(parser) {\n        let data = defineLanguageFacet(parser.languageData);\n        let p = fullParser(parser), self;\n        let impl = new class extends Parser {\n            createParse(input, fragments, ranges) {\n                return new Parse(self, input, fragments, ranges);\n            }\n        };\n        super(data, impl, [], parser.name);\n        this.topNode = docID(data, this);\n        self = this;\n        this.streamParser = p;\n        this.stateAfter = new NodeProp({ perNode: true });\n        this.tokenTable = parser.tokenTable ? new TokenTable(p.tokenTable) : defaultTokenTable;\n    }\n    /**\n    Define a stream language.\n    */\n    static define(spec) { return new StreamLanguage(spec); }\n    /**\n    @internal\n    */\n    getIndent(cx) {\n        let from = undefined;\n        let { overrideIndentation } = cx.options;\n        if (overrideIndentation) {\n            from = IndentedFrom.get(cx.state);\n            if (from != null && from < cx.pos - 1e4)\n                from = undefined;\n        }\n        let start = findState(this, cx.node.tree, cx.node.from, cx.node.from, from !== null && from !== void 0 ? from : cx.pos), statePos, state;\n        if (start) {\n            state = start.state;\n            statePos = start.pos + 1;\n        }\n        else {\n            state = this.streamParser.startState(cx.unit);\n            statePos = cx.node.from;\n        }\n        if (cx.pos - statePos > 10000 /* C.MaxIndentScanDist */)\n            return null;\n        while (statePos < cx.pos) {\n            let line = cx.state.doc.lineAt(statePos), end = Math.min(cx.pos, line.to);\n            if (line.length) {\n                let indentation = overrideIndentation ? overrideIndentation(line.from) : -1;\n                let stream = new StringStream(line.text, cx.state.tabSize, cx.unit, indentation < 0 ? undefined : indentation);\n                while (stream.pos < end - line.from)\n                    readToken(this.streamParser.token, stream, state);\n            }\n            else {\n                this.streamParser.blankLine(state, cx.unit);\n            }\n            if (end == cx.pos)\n                break;\n            statePos = line.to + 1;\n        }\n        let line = cx.lineAt(cx.pos);\n        if (overrideIndentation && from == null)\n            IndentedFrom.set(cx.state, line.from);\n        return this.streamParser.indent(state, /^\\s*(.*)/.exec(line.text)[1], cx);\n    }\n    get allowsNesting() { return false; }\n}\nfunction findState(lang, tree, off, startPos, before) {\n    let state = off >= startPos && off + tree.length <= before && tree.prop(lang.stateAfter);\n    if (state)\n        return { state: lang.streamParser.copyState(state), pos: off + tree.length };\n    for (let i = tree.children.length - 1; i >= 0; i--) {\n        let child = tree.children[i], pos = off + tree.positions[i];\n        let found = child instanceof Tree && pos < before && findState(lang, child, pos, startPos, before);\n        if (found)\n            return found;\n    }\n    return null;\n}\nfunction cutTree(lang, tree, from, to, inside) {\n    if (inside && from <= 0 && to >= tree.length)\n        return tree;\n    if (!inside && from == 0 && tree.type == lang.topNode)\n        inside = true;\n    for (let i = tree.children.length - 1; i >= 0; i--) {\n        let pos = tree.positions[i], child = tree.children[i], inner;\n        if (pos < to && child instanceof Tree) {\n            if (!(inner = cutTree(lang, child, from - pos, to - pos, inside)))\n                break;\n            return !inside ? inner\n                : new Tree(tree.type, tree.children.slice(0, i).concat(inner), tree.positions.slice(0, i + 1), pos + inner.length);\n        }\n    }\n    return null;\n}\nfunction findStartInFragments(lang, fragments, startPos, endPos, editorState) {\n    for (let f of fragments) {\n        let from = f.from + (f.openStart ? 25 : 0), to = f.to - (f.openEnd ? 25 : 0);\n        let found = from <= startPos && to > startPos && findState(lang, f.tree, 0 - f.offset, startPos, to), tree;\n        if (found && found.pos <= endPos && (tree = cutTree(lang, f.tree, startPos + f.offset, found.pos + f.offset, false)))\n            return { state: found.state, tree };\n    }\n    return { state: lang.streamParser.startState(editorState ? getIndentUnit(editorState) : 4), tree: Tree.empty };\n}\nclass Parse {\n    constructor(lang, input, fragments, ranges) {\n        this.lang = lang;\n        this.input = input;\n        this.fragments = fragments;\n        this.ranges = ranges;\n        this.stoppedAt = null;\n        this.chunks = [];\n        this.chunkPos = [];\n        this.chunk = [];\n        this.chunkReused = undefined;\n        this.rangeIndex = 0;\n        this.to = ranges[ranges.length - 1].to;\n        let context = ParseContext.get(), from = ranges[0].from;\n        let { state, tree } = findStartInFragments(lang, fragments, from, this.to, context === null || context === void 0 ? void 0 : context.state);\n        this.state = state;\n        this.parsedPos = this.chunkStart = from + tree.length;\n        for (let i = 0; i < tree.children.length; i++) {\n            this.chunks.push(tree.children[i]);\n            this.chunkPos.push(tree.positions[i]);\n        }\n        if (context && this.parsedPos < context.viewport.from - 100000 /* C.MaxDistanceBeforeViewport */ &&\n            ranges.some(r => r.from <= context.viewport.from && r.to >= context.viewport.from)) {\n            this.state = this.lang.streamParser.startState(getIndentUnit(context.state));\n            context.skipUntilInView(this.parsedPos, context.viewport.from);\n            this.parsedPos = context.viewport.from;\n        }\n        this.moveRangeIndex();\n    }\n    advance() {\n        let context = ParseContext.get();\n        let parseEnd = this.stoppedAt == null ? this.to : Math.min(this.to, this.stoppedAt);\n        let end = Math.min(parseEnd, this.chunkStart + 2048 /* C.ChunkSize */);\n        if (context)\n            end = Math.min(end, context.viewport.to);\n        while (this.parsedPos < end)\n            this.parseLine(context);\n        if (this.chunkStart < this.parsedPos)\n            this.finishChunk();\n        if (this.parsedPos >= parseEnd)\n            return this.finish();\n        if (context && this.parsedPos >= context.viewport.to) {\n            context.skipUntilInView(this.parsedPos, parseEnd);\n            return this.finish();\n        }\n        return null;\n    }\n    stopAt(pos) {\n        this.stoppedAt = pos;\n    }\n    lineAfter(pos) {\n        let chunk = this.input.chunk(pos);\n        if (!this.input.lineChunks) {\n            let eol = chunk.indexOf(\"\\n\");\n            if (eol > -1)\n                chunk = chunk.slice(0, eol);\n        }\n        else if (chunk == \"\\n\") {\n            chunk = \"\";\n        }\n        return pos + chunk.length <= this.to ? chunk : chunk.slice(0, this.to - pos);\n    }\n    nextLine() {\n        let from = this.parsedPos, line = this.lineAfter(from), end = from + line.length;\n        for (let index = this.rangeIndex;;) {\n            let rangeEnd = this.ranges[index].to;\n            if (rangeEnd >= end)\n                break;\n            line = line.slice(0, rangeEnd - (end - line.length));\n            index++;\n            if (index == this.ranges.length)\n                break;\n            let rangeStart = this.ranges[index].from;\n            let after = this.lineAfter(rangeStart);\n            line += after;\n            end = rangeStart + after.length;\n        }\n        return { line, end };\n    }\n    skipGapsTo(pos, offset, side) {\n        for (;;) {\n            let end = this.ranges[this.rangeIndex].to, offPos = pos + offset;\n            if (side > 0 ? end > offPos : end >= offPos)\n                break;\n            let start = this.ranges[++this.rangeIndex].from;\n            offset += start - end;\n        }\n        return offset;\n    }\n    moveRangeIndex() {\n        while (this.ranges[this.rangeIndex].to < this.parsedPos)\n            this.rangeIndex++;\n    }\n    emitToken(id, from, to, offset) {\n        let size = 4;\n        if (this.ranges.length > 1) {\n            offset = this.skipGapsTo(from, offset, 1);\n            from += offset;\n            let len0 = this.chunk.length;\n            offset = this.skipGapsTo(to, offset, -1);\n            to += offset;\n            size += this.chunk.length - len0;\n        }\n        let last = this.chunk.length - 4;\n        if (this.lang.streamParser.mergeTokens && size == 4 && last >= 0 &&\n            this.chunk[last] == id && this.chunk[last + 2] == from)\n            this.chunk[last + 2] = to;\n        else\n            this.chunk.push(id, from, to, size);\n        return offset;\n    }\n    parseLine(context) {\n        let { line, end } = this.nextLine(), offset = 0, { streamParser } = this.lang;\n        let stream = new StringStream(line, context ? context.state.tabSize : 4, context ? getIndentUnit(context.state) : 2);\n        if (stream.eol()) {\n            streamParser.blankLine(this.state, stream.indentUnit);\n        }\n        else {\n            while (!stream.eol()) {\n                let token = readToken(streamParser.token, stream, this.state);\n                if (token)\n                    offset = this.emitToken(this.lang.tokenTable.resolve(token), this.parsedPos + stream.start, this.parsedPos + stream.pos, offset);\n                if (stream.start > 10000 /* C.MaxLineLength */)\n                    break;\n            }\n        }\n        this.parsedPos = end;\n        this.moveRangeIndex();\n        if (this.parsedPos < this.to)\n            this.parsedPos++;\n    }\n    finishChunk() {\n        let tree = Tree.build({\n            buffer: this.chunk,\n            start: this.chunkStart,\n            length: this.parsedPos - this.chunkStart,\n            nodeSet,\n            topID: 0,\n            maxBufferLength: 2048 /* C.ChunkSize */,\n            reused: this.chunkReused\n        });\n        tree = new Tree(tree.type, tree.children, tree.positions, tree.length, [[this.lang.stateAfter, this.lang.streamParser.copyState(this.state)]]);\n        this.chunks.push(tree);\n        this.chunkPos.push(this.chunkStart - this.ranges[0].from);\n        this.chunk = [];\n        this.chunkReused = undefined;\n        this.chunkStart = this.parsedPos;\n    }\n    finish() {\n        return new Tree(this.lang.topNode, this.chunks, this.chunkPos, this.parsedPos - this.ranges[0].from).balance();\n    }\n}\nfunction readToken(token, stream, state) {\n    stream.start = stream.pos;\n    for (let i = 0; i < 10; i++) {\n        let result = token(stream, state);\n        if (stream.pos > stream.start)\n            return result;\n    }\n    throw new Error(\"Stream parser failed to advance stream.\");\n}\nconst noTokens = /*@__PURE__*/Object.create(null);\nconst typeArray = [NodeType.none];\nconst nodeSet = /*@__PURE__*/new NodeSet(typeArray);\nconst warned = [];\n// Cache of node types by name and tags\nconst byTag = /*@__PURE__*/Object.create(null);\nconst defaultTable = /*@__PURE__*/Object.create(null);\nfor (let [legacyName, name] of [\n    [\"variable\", \"variableName\"],\n    [\"variable-2\", \"variableName.special\"],\n    [\"string-2\", \"string.special\"],\n    [\"def\", \"variableName.definition\"],\n    [\"tag\", \"tagName\"],\n    [\"attribute\", \"attributeName\"],\n    [\"type\", \"typeName\"],\n    [\"builtin\", \"variableName.standard\"],\n    [\"qualifier\", \"modifier\"],\n    [\"error\", \"invalid\"],\n    [\"header\", \"heading\"],\n    [\"property\", \"propertyName\"]\n])\n    defaultTable[legacyName] = /*@__PURE__*/createTokenType(noTokens, name);\nclass TokenTable {\n    constructor(extra) {\n        this.extra = extra;\n        this.table = Object.assign(Object.create(null), defaultTable);\n    }\n    resolve(tag) {\n        return !tag ? 0 : this.table[tag] || (this.table[tag] = createTokenType(this.extra, tag));\n    }\n}\nconst defaultTokenTable = /*@__PURE__*/new TokenTable(noTokens);\nfunction warnForPart(part, msg) {\n    if (warned.indexOf(part) > -1)\n        return;\n    warned.push(part);\n    console.warn(msg);\n}\nfunction createTokenType(extra, tagStr) {\n    let tags$1 = [];\n    for (let name of tagStr.split(\" \")) {\n        let found = [];\n        for (let part of name.split(\".\")) {\n            let value = (extra[part] || tags[part]);\n            if (!value) {\n                warnForPart(part, `Unknown highlighting tag ${part}`);\n            }\n            else if (typeof value == \"function\") {\n                if (!found.length)\n                    warnForPart(part, `Modifier ${part} used at start of tag`);\n                else\n                    found = found.map(value);\n            }\n            else {\n                if (found.length)\n                    warnForPart(part, `Tag ${part} used as modifier`);\n                else\n                    found = Array.isArray(value) ? value : [value];\n            }\n        }\n        for (let tag of found)\n            tags$1.push(tag);\n    }\n    if (!tags$1.length)\n        return 0;\n    let name = tagStr.replace(/ /g, \"_\"), key = name + \" \" + tags$1.map(t => t.id);\n    let known = byTag[key];\n    if (known)\n        return known.id;\n    let type = byTag[key] = NodeType.define({\n        id: typeArray.length,\n        name,\n        props: [styleTags({ [name]: tags$1 })]\n    });\n    typeArray.push(type);\n    return type.id;\n}\nfunction docID(data, lang) {\n    let type = NodeType.define({ id: typeArray.length, name: \"Document\", props: [\n            languageDataProp.add(() => data),\n            indentNodeProp.add(() => cx => lang.getIndent(cx))\n        ], top: true });\n    typeArray.push(type);\n    return type;\n}\n\nfunction buildForLine(line) {\n    return line.length <= 4096 && /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac\\ufb50-\\ufdff]/.test(line);\n}\nfunction textHasRTL(text) {\n    for (let i = text.iter(); !i.next().done;)\n        if (buildForLine(i.value))\n            return true;\n    return false;\n}\nfunction changeAddsRTL(change) {\n    let added = false;\n    change.iterChanges((fA, tA, fB, tB, ins) => {\n        if (!added && textHasRTL(ins))\n            added = true;\n    });\n    return added;\n}\nconst alwaysIsolate = /*@__PURE__*/Facet.define({ combine: values => values.some(x => x) });\n/**\nMake sure nodes\n[marked](https://lezer.codemirror.net/docs/ref/#common.NodeProp^isolate)\nas isolating for bidirectional text are rendered in a way that\nisolates them from the surrounding text.\n*/\nfunction bidiIsolates(options = {}) {\n    let extensions = [isolateMarks];\n    if (options.alwaysIsolate)\n        extensions.push(alwaysIsolate.of(true));\n    return extensions;\n}\nconst isolateMarks = /*@__PURE__*/ViewPlugin.fromClass(class {\n    constructor(view) {\n        this.always = view.state.facet(alwaysIsolate) ||\n            view.textDirection != Direction.LTR ||\n            view.state.facet(EditorView.perLineTextDirection);\n        this.hasRTL = !this.always && textHasRTL(view.state.doc);\n        this.tree = syntaxTree(view.state);\n        this.decorations = this.always || this.hasRTL ? buildDeco(view, this.tree, this.always) : Decoration.none;\n    }\n    update(update) {\n        let always = update.state.facet(alwaysIsolate) ||\n            update.view.textDirection != Direction.LTR ||\n            update.state.facet(EditorView.perLineTextDirection);\n        if (!always && !this.hasRTL && changeAddsRTL(update.changes))\n            this.hasRTL = true;\n        if (!always && !this.hasRTL)\n            return;\n        let tree = syntaxTree(update.state);\n        if (always != this.always || tree != this.tree || update.docChanged || update.viewportChanged) {\n            this.tree = tree;\n            this.always = always;\n            this.decorations = buildDeco(update.view, tree, always);\n        }\n    }\n}, {\n    provide: plugin => {\n        function access(view) {\n            var _a, _b;\n            return (_b = (_a = view.plugin(plugin)) === null || _a === void 0 ? void 0 : _a.decorations) !== null && _b !== void 0 ? _b : Decoration.none;\n        }\n        return [EditorView.outerDecorations.of(access),\n            Prec.lowest(EditorView.bidiIsolatedRanges.of(access))];\n    }\n});\nfunction buildDeco(view, tree, always) {\n    let deco = new RangeSetBuilder();\n    let ranges = view.visibleRanges;\n    if (!always)\n        ranges = clipRTLLines(ranges, view.state.doc);\n    for (let { from, to } of ranges) {\n        tree.iterate({\n            enter: node => {\n                let iso = node.type.prop(NodeProp.isolate);\n                if (iso)\n                    deco.add(node.from, node.to, marks[iso]);\n            },\n            from, to\n        });\n    }\n    return deco.finish();\n}\nfunction clipRTLLines(ranges, doc) {\n    let cur = doc.iter(), pos = 0, result = [], last = null;\n    for (let { from, to } of ranges) {\n        if (last && last.to > from) {\n            from = last.to;\n            if (from >= to)\n                continue;\n        }\n        if (pos + cur.value.length < from) {\n            cur.next(from - (pos + cur.value.length));\n            pos = from;\n        }\n        for (;;) {\n            let start = pos, end = pos + cur.value.length;\n            if (!cur.lineBreak && buildForLine(cur.value)) {\n                if (last && last.to > start - 10)\n                    last.to = Math.min(to, end);\n                else\n                    result.push(last = { from: start, to: Math.min(to, end) });\n            }\n            if (end >= to)\n                break;\n            pos = end;\n            cur.next();\n        }\n    }\n    return result;\n}\nconst marks = {\n    rtl: /*@__PURE__*/Decoration.mark({ class: \"cm-iso\", inclusive: true, attributes: { dir: \"rtl\" }, bidiIsolate: Direction.RTL }),\n    ltr: /*@__PURE__*/Decoration.mark({ class: \"cm-iso\", inclusive: true, attributes: { dir: \"ltr\" }, bidiIsolate: Direction.LTR }),\n    auto: /*@__PURE__*/Decoration.mark({ class: \"cm-iso\", inclusive: true, attributes: { dir: \"auto\" }, bidiIsolate: null })\n};\n\nexport { DocInput, HighlightStyle, IndentContext, LRLanguage, Language, LanguageDescription, LanguageSupport, ParseContext, StreamLanguage, StringStream, TreeIndentContext, bidiIsolates, bracketMatching, bracketMatchingHandle, codeFolding, continuedIndent, defaultHighlightStyle, defineLanguageFacet, delimitedIndent, ensureSyntaxTree, flatIndent, foldAll, foldCode, foldEffect, foldGutter, foldInside, foldKeymap, foldNodeProp, foldService, foldState, foldable, foldedRanges, forceParsing, getIndentUnit, getIndentation, highlightingFor, indentNodeProp, indentOnInput, indentRange, indentService, indentString, indentUnit, language, languageDataProp, matchBrackets, sublanguageProp, syntaxHighlighting, syntaxParserRunning, syntaxTree, syntaxTreeAvailable, toggleFold, unfoldAll, unfoldCode, unfoldEffect };\n","import { parser } from '@lezer/json';\nimport { LRLanguage, indentNodeProp, continuedIndent, foldNodeProp, foldInside, LanguageSupport } from '@codemirror/language';\n\n/**\nCalls\n[`JSON.parse`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse)\non the document and, if that throws an error, reports it as a\nsingle diagnostic.\n*/\nconst jsonParseLinter = () => (view) => {\n    try {\n        JSON.parse(view.state.doc.toString());\n    }\n    catch (e) {\n        if (!(e instanceof SyntaxError))\n            throw e;\n        const pos = getErrorPosition(e, view.state.doc);\n        return [{\n                from: pos,\n                message: e.message,\n                severity: 'error',\n                to: pos\n            }];\n    }\n    return [];\n};\nfunction getErrorPosition(error, doc) {\n    let m;\n    if (m = error.message.match(/at position (\\d+)/))\n        return Math.min(+m[1], doc.length);\n    if (m = error.message.match(/at line (\\d+) column (\\d+)/))\n        return Math.min(doc.line(+m[1]).from + (+m[2]) - 1, doc.length);\n    return 0;\n}\n\n/**\nA language provider that provides JSON parsing.\n*/\nconst jsonLanguage = /*@__PURE__*/LRLanguage.define({\n    name: \"json\",\n    parser: /*@__PURE__*/parser.configure({\n        props: [\n            /*@__PURE__*/indentNodeProp.add({\n                Object: /*@__PURE__*/continuedIndent({ except: /^\\s*\\}/ }),\n                Array: /*@__PURE__*/continuedIndent({ except: /^\\s*\\]/ })\n            }),\n            /*@__PURE__*/foldNodeProp.add({\n                \"Object Array\": foldInside\n            })\n        ]\n    }),\n    languageData: {\n        closeBrackets: { brackets: [\"[\", \"{\", '\"'] },\n        indentOnInput: /^\\s*[\\}\\]]$/\n    }\n});\n/**\nJSON language support.\n*/\nfunction json() {\n    return new LanguageSupport(jsonLanguage);\n}\n\nexport { json, jsonLanguage, jsonParseLinter };\n","import { Decoration, showPanel, EditorView, ViewPlugin, gutter, showTooltip, hoverTooltip, getPanel, logException, WidgetType, GutterMarker } from '@codemirror/view';\nimport { StateEffect, StateField, Facet, combineConfig, RangeSet, RangeSetBuilder } from '@codemirror/state';\nimport elt from 'crelt';\n\nclass SelectedDiagnostic {\n    constructor(from, to, diagnostic) {\n        this.from = from;\n        this.to = to;\n        this.diagnostic = diagnostic;\n    }\n}\nclass LintState {\n    constructor(diagnostics, panel, selected) {\n        this.diagnostics = diagnostics;\n        this.panel = panel;\n        this.selected = selected;\n    }\n    static init(diagnostics, panel, state) {\n        // Filter the list of diagnostics for which to create markers\n        let diagnosticFilter = state.facet(lintConfig).markerFilter;\n        if (diagnosticFilter)\n            diagnostics = diagnosticFilter(diagnostics, state);\n        let sorted = diagnostics.slice().sort((a, b) => a.from - b.from || a.to - b.to);\n        let deco = new RangeSetBuilder(), active = [], pos = 0;\n        for (let i = 0;;) {\n            let next = i == sorted.length ? null : sorted[i];\n            if (!next && !active.length)\n                break;\n            let from, to;\n            if (active.length) {\n                from = pos;\n                to = active.reduce((p, d) => Math.min(p, d.to), next && next.from > from ? next.from : 1e8);\n            }\n            else {\n                from = next.from;\n                to = next.to;\n                active.push(next);\n                i++;\n            }\n            while (i < sorted.length) {\n                let next = sorted[i];\n                if (next.from == from && (next.to > next.from || next.to == from)) {\n                    active.push(next);\n                    i++;\n                    to = Math.min(next.to, to);\n                }\n                else {\n                    to = Math.min(next.from, to);\n                    break;\n                }\n            }\n            let sev = maxSeverity(active);\n            if (active.some(d => d.from == d.to || (d.from == d.to - 1 && state.doc.lineAt(d.from).to == d.from))) {\n                deco.add(from, from, Decoration.widget({\n                    widget: new DiagnosticWidget(sev),\n                    diagnostics: active.slice()\n                }));\n            }\n            else {\n                let markClass = active.reduce((c, d) => d.markClass ? c + \" \" + d.markClass : c, \"\");\n                deco.add(from, to, Decoration.mark({\n                    class: \"cm-lintRange cm-lintRange-\" + sev + markClass,\n                    diagnostics: active.slice(),\n                    inclusiveEnd: active.some(a => a.to > to)\n                }));\n            }\n            pos = to;\n            for (let i = 0; i < active.length; i++)\n                if (active[i].to <= pos)\n                    active.splice(i--, 1);\n        }\n        let set = deco.finish();\n        return new LintState(set, panel, findDiagnostic(set));\n    }\n}\nfunction findDiagnostic(diagnostics, diagnostic = null, after = 0) {\n    let found = null;\n    diagnostics.between(after, 1e9, (from, to, { spec }) => {\n        if (diagnostic && spec.diagnostics.indexOf(diagnostic) < 0)\n            return;\n        if (!found)\n            found = new SelectedDiagnostic(from, to, diagnostic || spec.diagnostics[0]);\n        else if (spec.diagnostics.indexOf(found.diagnostic) < 0)\n            return false;\n        else\n            found = new SelectedDiagnostic(found.from, to, found.diagnostic);\n    });\n    return found;\n}\nfunction hideTooltip(tr, tooltip) {\n    let from = tooltip.pos, to = tooltip.end || from;\n    let result = tr.state.facet(lintConfig).hideOn(tr, from, to);\n    if (result != null)\n        return result;\n    let line = tr.startState.doc.lineAt(tooltip.pos);\n    return !!(tr.effects.some(e => e.is(setDiagnosticsEffect)) || tr.changes.touchesRange(line.from, Math.max(line.to, to)));\n}\nfunction maybeEnableLint(state, effects) {\n    return state.field(lintState, false) ? effects : effects.concat(StateEffect.appendConfig.of(lintExtensions));\n}\n/**\nReturns a transaction spec which updates the current set of\ndiagnostics, and enables the lint extension if if wasn't already\nactive.\n*/\nfunction setDiagnostics(state, diagnostics) {\n    return {\n        effects: maybeEnableLint(state, [setDiagnosticsEffect.of(diagnostics)])\n    };\n}\n/**\nThe state effect that updates the set of active diagnostics. Can\nbe useful when writing an extension that needs to track these.\n*/\nconst setDiagnosticsEffect = /*@__PURE__*/StateEffect.define();\nconst togglePanel = /*@__PURE__*/StateEffect.define();\nconst movePanelSelection = /*@__PURE__*/StateEffect.define();\nconst lintState = /*@__PURE__*/StateField.define({\n    create() {\n        return new LintState(Decoration.none, null, null);\n    },\n    update(value, tr) {\n        if (tr.docChanged && value.diagnostics.size) {\n            let mapped = value.diagnostics.map(tr.changes), selected = null, panel = value.panel;\n            if (value.selected) {\n                let selPos = tr.changes.mapPos(value.selected.from, 1);\n                selected = findDiagnostic(mapped, value.selected.diagnostic, selPos) || findDiagnostic(mapped, null, selPos);\n            }\n            if (!mapped.size && panel && tr.state.facet(lintConfig).autoPanel)\n                panel = null;\n            value = new LintState(mapped, panel, selected);\n        }\n        for (let effect of tr.effects) {\n            if (effect.is(setDiagnosticsEffect)) {\n                let panel = !tr.state.facet(lintConfig).autoPanel ? value.panel : effect.value.length ? LintPanel.open : null;\n                value = LintState.init(effect.value, panel, tr.state);\n            }\n            else if (effect.is(togglePanel)) {\n                value = new LintState(value.diagnostics, effect.value ? LintPanel.open : null, value.selected);\n            }\n            else if (effect.is(movePanelSelection)) {\n                value = new LintState(value.diagnostics, value.panel, effect.value);\n            }\n        }\n        return value;\n    },\n    provide: f => [showPanel.from(f, val => val.panel),\n        EditorView.decorations.from(f, s => s.diagnostics)]\n});\n/**\nReturns the number of active lint diagnostics in the given state.\n*/\nfunction diagnosticCount(state) {\n    let lint = state.field(lintState, false);\n    return lint ? lint.diagnostics.size : 0;\n}\nconst activeMark = /*@__PURE__*/Decoration.mark({ class: \"cm-lintRange cm-lintRange-active\" });\nfunction lintTooltip(view, pos, side) {\n    let { diagnostics } = view.state.field(lintState);\n    let found, start = -1, end = -1;\n    diagnostics.between(pos - (side < 0 ? 1 : 0), pos + (side > 0 ? 1 : 0), (from, to, { spec }) => {\n        if (pos >= from && pos <= to &&\n            (from == to || ((pos > from || side > 0) && (pos < to || side < 0)))) {\n            found = spec.diagnostics;\n            start = from;\n            end = to;\n            return false;\n        }\n    });\n    let diagnosticFilter = view.state.facet(lintConfig).tooltipFilter;\n    if (found && diagnosticFilter)\n        found = diagnosticFilter(found, view.state);\n    if (!found)\n        return null;\n    return {\n        pos: start,\n        end: end,\n        above: view.state.doc.lineAt(start).to < end,\n        create() {\n            return { dom: diagnosticsTooltip(view, found) };\n        }\n    };\n}\nfunction diagnosticsTooltip(view, diagnostics) {\n    return elt(\"ul\", { class: \"cm-tooltip-lint\" }, diagnostics.map(d => renderDiagnostic(view, d, false)));\n}\n/**\nCommand to open and focus the lint panel.\n*/\nconst openLintPanel = (view) => {\n    let field = view.state.field(lintState, false);\n    if (!field || !field.panel)\n        view.dispatch({ effects: maybeEnableLint(view.state, [togglePanel.of(true)]) });\n    let panel = getPanel(view, LintPanel.open);\n    if (panel)\n        panel.dom.querySelector(\".cm-panel-lint ul\").focus();\n    return true;\n};\n/**\nCommand to close the lint panel, when open.\n*/\nconst closeLintPanel = (view) => {\n    let field = view.state.field(lintState, false);\n    if (!field || !field.panel)\n        return false;\n    view.dispatch({ effects: togglePanel.of(false) });\n    return true;\n};\n/**\nMove the selection to the next diagnostic.\n*/\nconst nextDiagnostic = (view) => {\n    let field = view.state.field(lintState, false);\n    if (!field)\n        return false;\n    let sel = view.state.selection.main, next = field.diagnostics.iter(sel.to + 1);\n    if (!next.value) {\n        next = field.diagnostics.iter(0);\n        if (!next.value || next.from == sel.from && next.to == sel.to)\n            return false;\n    }\n    view.dispatch({ selection: { anchor: next.from, head: next.to }, scrollIntoView: true });\n    return true;\n};\n/**\nMove the selection to the previous diagnostic.\n*/\nconst previousDiagnostic = (view) => {\n    let { state } = view, field = state.field(lintState, false);\n    if (!field)\n        return false;\n    let sel = state.selection.main;\n    let prevFrom, prevTo, lastFrom, lastTo;\n    field.diagnostics.between(0, state.doc.length, (from, to) => {\n        if (to < sel.to && (prevFrom == null || prevFrom < from)) {\n            prevFrom = from;\n            prevTo = to;\n        }\n        if (lastFrom == null || from > lastFrom) {\n            lastFrom = from;\n            lastTo = to;\n        }\n    });\n    if (lastFrom == null || prevFrom == null && lastFrom == sel.from)\n        return false;\n    view.dispatch({ selection: { anchor: prevFrom !== null && prevFrom !== void 0 ? prevFrom : lastFrom, head: prevTo !== null && prevTo !== void 0 ? prevTo : lastTo }, scrollIntoView: true });\n    return true;\n};\n/**\nA set of default key bindings for the lint functionality.\n\n- Ctrl-Shift-m (Cmd-Shift-m on macOS): [`openLintPanel`](https://codemirror.net/6/docs/ref/#lint.openLintPanel)\n- F8: [`nextDiagnostic`](https://codemirror.net/6/docs/ref/#lint.nextDiagnostic)\n*/\nconst lintKeymap = [\n    { key: \"Mod-Shift-m\", run: openLintPanel, preventDefault: true },\n    { key: \"F8\", run: nextDiagnostic }\n];\nconst lintPlugin = /*@__PURE__*/ViewPlugin.fromClass(class {\n    constructor(view) {\n        this.view = view;\n        this.timeout = -1;\n        this.set = true;\n        let { delay } = view.state.facet(lintConfig);\n        this.lintTime = Date.now() + delay;\n        this.run = this.run.bind(this);\n        this.timeout = setTimeout(this.run, delay);\n    }\n    run() {\n        clearTimeout(this.timeout);\n        let now = Date.now();\n        if (now < this.lintTime - 10) {\n            this.timeout = setTimeout(this.run, this.lintTime - now);\n        }\n        else {\n            this.set = false;\n            let { state } = this.view, { sources } = state.facet(lintConfig);\n            if (sources.length)\n                batchResults(sources.map(s => Promise.resolve(s(this.view))), annotations => {\n                    if (this.view.state.doc == state.doc)\n                        this.view.dispatch(setDiagnostics(this.view.state, annotations.reduce((a, b) => a.concat(b))));\n                }, error => { logException(this.view.state, error); });\n        }\n    }\n    update(update) {\n        let config = update.state.facet(lintConfig);\n        if (update.docChanged || config != update.startState.facet(lintConfig) ||\n            config.needsRefresh && config.needsRefresh(update)) {\n            this.lintTime = Date.now() + config.delay;\n            if (!this.set) {\n                this.set = true;\n                this.timeout = setTimeout(this.run, config.delay);\n            }\n        }\n    }\n    force() {\n        if (this.set) {\n            this.lintTime = Date.now();\n            this.run();\n        }\n    }\n    destroy() {\n        clearTimeout(this.timeout);\n    }\n});\nfunction batchResults(promises, sink, error) {\n    let collected = [], timeout = -1;\n    for (let p of promises)\n        p.then(value => {\n            collected.push(value);\n            clearTimeout(timeout);\n            if (collected.length == promises.length)\n                sink(collected);\n            else\n                timeout = setTimeout(() => sink(collected), 200);\n        }, error);\n}\nconst lintConfig = /*@__PURE__*/Facet.define({\n    combine(input) {\n        return Object.assign({ sources: input.map(i => i.source).filter(x => x != null) }, combineConfig(input.map(i => i.config), {\n            delay: 750,\n            markerFilter: null,\n            tooltipFilter: null,\n            needsRefresh: null,\n            hideOn: () => null,\n        }, {\n            needsRefresh: (a, b) => !a ? b : !b ? a : u => a(u) || b(u)\n        }));\n    }\n});\n/**\nGiven a diagnostic source, this function returns an extension that\nenables linting with that source. It will be called whenever the\neditor is idle (after its content changed). If `null` is given as\nsource, this only configures the lint extension.\n*/\nfunction linter(source, config = {}) {\n    return [\n        lintConfig.of({ source, config }),\n        lintPlugin,\n        lintExtensions\n    ];\n}\n/**\nForces any linters [configured](https://codemirror.net/6/docs/ref/#lint.linter) to run when the\neditor is idle to run right away.\n*/\nfunction forceLinting(view) {\n    let plugin = view.plugin(lintPlugin);\n    if (plugin)\n        plugin.force();\n}\nfunction assignKeys(actions) {\n    let assigned = [];\n    if (actions)\n        actions: for (let { name } of actions) {\n            for (let i = 0; i < name.length; i++) {\n                let ch = name[i];\n                if (/[a-zA-Z]/.test(ch) && !assigned.some(c => c.toLowerCase() == ch.toLowerCase())) {\n                    assigned.push(ch);\n                    continue actions;\n                }\n            }\n            assigned.push(\"\");\n        }\n    return assigned;\n}\nfunction renderDiagnostic(view, diagnostic, inPanel) {\n    var _a;\n    let keys = inPanel ? assignKeys(diagnostic.actions) : [];\n    return elt(\"li\", { class: \"cm-diagnostic cm-diagnostic-\" + diagnostic.severity }, elt(\"span\", { class: \"cm-diagnosticText\" }, diagnostic.renderMessage ? diagnostic.renderMessage(view) : diagnostic.message), (_a = diagnostic.actions) === null || _a === void 0 ? void 0 : _a.map((action, i) => {\n        let fired = false, click = (e) => {\n            e.preventDefault();\n            if (fired)\n                return;\n            fired = true;\n            let found = findDiagnostic(view.state.field(lintState).diagnostics, diagnostic);\n            if (found)\n                action.apply(view, found.from, found.to);\n        };\n        let { name } = action, keyIndex = keys[i] ? name.indexOf(keys[i]) : -1;\n        let nameElt = keyIndex < 0 ? name : [name.slice(0, keyIndex),\n            elt(\"u\", name.slice(keyIndex, keyIndex + 1)),\n            name.slice(keyIndex + 1)];\n        return elt(\"button\", {\n            type: \"button\",\n            class: \"cm-diagnosticAction\",\n            onclick: click,\n            onmousedown: click,\n            \"aria-label\": ` Action: ${name}${keyIndex < 0 ? \"\" : ` (access key \"${keys[i]})\"`}.`\n        }, nameElt);\n    }), diagnostic.source && elt(\"div\", { class: \"cm-diagnosticSource\" }, diagnostic.source));\n}\nclass DiagnosticWidget extends WidgetType {\n    constructor(sev) {\n        super();\n        this.sev = sev;\n    }\n    eq(other) { return other.sev == this.sev; }\n    toDOM() {\n        return elt(\"span\", { class: \"cm-lintPoint cm-lintPoint-\" + this.sev });\n    }\n}\nclass PanelItem {\n    constructor(view, diagnostic) {\n        this.diagnostic = diagnostic;\n        this.id = \"item_\" + Math.floor(Math.random() * 0xffffffff).toString(16);\n        this.dom = renderDiagnostic(view, diagnostic, true);\n        this.dom.id = this.id;\n        this.dom.setAttribute(\"role\", \"option\");\n    }\n}\nclass LintPanel {\n    constructor(view) {\n        this.view = view;\n        this.items = [];\n        let onkeydown = (event) => {\n            if (event.keyCode == 27) { // Escape\n                closeLintPanel(this.view);\n                this.view.focus();\n            }\n            else if (event.keyCode == 38 || event.keyCode == 33) { // ArrowUp, PageUp\n                this.moveSelection((this.selectedIndex - 1 + this.items.length) % this.items.length);\n            }\n            else if (event.keyCode == 40 || event.keyCode == 34) { // ArrowDown, PageDown\n                this.moveSelection((this.selectedIndex + 1) % this.items.length);\n            }\n            else if (event.keyCode == 36) { // Home\n                this.moveSelection(0);\n            }\n            else if (event.keyCode == 35) { // End\n                this.moveSelection(this.items.length - 1);\n            }\n            else if (event.keyCode == 13) { // Enter\n                this.view.focus();\n            }\n            else if (event.keyCode >= 65 && event.keyCode <= 90 && this.selectedIndex >= 0) { // A-Z\n                let { diagnostic } = this.items[this.selectedIndex], keys = assignKeys(diagnostic.actions);\n                for (let i = 0; i < keys.length; i++)\n                    if (keys[i].toUpperCase().charCodeAt(0) == event.keyCode) {\n                        let found = findDiagnostic(this.view.state.field(lintState).diagnostics, diagnostic);\n                        if (found)\n                            diagnostic.actions[i].apply(view, found.from, found.to);\n                    }\n            }\n            else {\n                return;\n            }\n            event.preventDefault();\n        };\n        let onclick = (event) => {\n            for (let i = 0; i < this.items.length; i++) {\n                if (this.items[i].dom.contains(event.target))\n                    this.moveSelection(i);\n            }\n        };\n        this.list = elt(\"ul\", {\n            tabIndex: 0,\n            role: \"listbox\",\n            \"aria-label\": this.view.state.phrase(\"Diagnostics\"),\n            onkeydown,\n            onclick\n        });\n        this.dom = elt(\"div\", { class: \"cm-panel-lint\" }, this.list, elt(\"button\", {\n            type: \"button\",\n            name: \"close\",\n            \"aria-label\": this.view.state.phrase(\"close\"),\n            onclick: () => closeLintPanel(this.view)\n        }, \"×\"));\n        this.update();\n    }\n    get selectedIndex() {\n        let selected = this.view.state.field(lintState).selected;\n        if (!selected)\n            return -1;\n        for (let i = 0; i < this.items.length; i++)\n            if (this.items[i].diagnostic == selected.diagnostic)\n                return i;\n        return -1;\n    }\n    update() {\n        let { diagnostics, selected } = this.view.state.field(lintState);\n        let i = 0, needsSync = false, newSelectedItem = null;\n        let seen = new Set();\n        diagnostics.between(0, this.view.state.doc.length, (_start, _end, { spec }) => {\n            for (let diagnostic of spec.diagnostics) {\n                if (seen.has(diagnostic))\n                    continue;\n                seen.add(diagnostic);\n                let found = -1, item;\n                for (let j = i; j < this.items.length; j++)\n                    if (this.items[j].diagnostic == diagnostic) {\n                        found = j;\n                        break;\n                    }\n                if (found < 0) {\n                    item = new PanelItem(this.view, diagnostic);\n                    this.items.splice(i, 0, item);\n                    needsSync = true;\n                }\n                else {\n                    item = this.items[found];\n                    if (found > i) {\n                        this.items.splice(i, found - i);\n                        needsSync = true;\n                    }\n                }\n                if (selected && item.diagnostic == selected.diagnostic) {\n                    if (!item.dom.hasAttribute(\"aria-selected\")) {\n                        item.dom.setAttribute(\"aria-selected\", \"true\");\n                        newSelectedItem = item;\n                    }\n                }\n                else if (item.dom.hasAttribute(\"aria-selected\")) {\n                    item.dom.removeAttribute(\"aria-selected\");\n                }\n                i++;\n            }\n        });\n        while (i < this.items.length && !(this.items.length == 1 && this.items[0].diagnostic.from < 0)) {\n            needsSync = true;\n            this.items.pop();\n        }\n        if (this.items.length == 0) {\n            this.items.push(new PanelItem(this.view, {\n                from: -1, to: -1,\n                severity: \"info\",\n                message: this.view.state.phrase(\"No diagnostics\")\n            }));\n            needsSync = true;\n        }\n        if (newSelectedItem) {\n            this.list.setAttribute(\"aria-activedescendant\", newSelectedItem.id);\n            this.view.requestMeasure({\n                key: this,\n                read: () => ({ sel: newSelectedItem.dom.getBoundingClientRect(), panel: this.list.getBoundingClientRect() }),\n                write: ({ sel, panel }) => {\n                    let scaleY = panel.height / this.list.offsetHeight;\n                    if (sel.top < panel.top)\n                        this.list.scrollTop -= (panel.top - sel.top) / scaleY;\n                    else if (sel.bottom > panel.bottom)\n                        this.list.scrollTop += (sel.bottom - panel.bottom) / scaleY;\n                }\n            });\n        }\n        else if (this.selectedIndex < 0) {\n            this.list.removeAttribute(\"aria-activedescendant\");\n        }\n        if (needsSync)\n            this.sync();\n    }\n    sync() {\n        let domPos = this.list.firstChild;\n        function rm() {\n            let prev = domPos;\n            domPos = prev.nextSibling;\n            prev.remove();\n        }\n        for (let item of this.items) {\n            if (item.dom.parentNode == this.list) {\n                while (domPos != item.dom)\n                    rm();\n                domPos = item.dom.nextSibling;\n            }\n            else {\n                this.list.insertBefore(item.dom, domPos);\n            }\n        }\n        while (domPos)\n            rm();\n    }\n    moveSelection(selectedIndex) {\n        if (this.selectedIndex < 0)\n            return;\n        let field = this.view.state.field(lintState);\n        let selection = findDiagnostic(field.diagnostics, this.items[selectedIndex].diagnostic);\n        if (!selection)\n            return;\n        this.view.dispatch({\n            selection: { anchor: selection.from, head: selection.to },\n            scrollIntoView: true,\n            effects: movePanelSelection.of(selection)\n        });\n    }\n    static open(view) { return new LintPanel(view); }\n}\nfunction svg(content, attrs = `viewBox=\"0 0 40 40\"`) {\n    return `url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" ${attrs}>${encodeURIComponent(content)}</svg>')`;\n}\nfunction underline(color) {\n    return svg(`<path d=\"m0 2.5 l2 -1.5 l1 0 l2 1.5 l1 0\" stroke=\"${color}\" fill=\"none\" stroke-width=\".7\"/>`, `width=\"6\" height=\"3\"`);\n}\nconst baseTheme = /*@__PURE__*/EditorView.baseTheme({\n    \".cm-diagnostic\": {\n        padding: \"3px 6px 3px 8px\",\n        marginLeft: \"-1px\",\n        display: \"block\",\n        whiteSpace: \"pre-wrap\"\n    },\n    \".cm-diagnostic-error\": { borderLeft: \"5px solid #d11\" },\n    \".cm-diagnostic-warning\": { borderLeft: \"5px solid orange\" },\n    \".cm-diagnostic-info\": { borderLeft: \"5px solid #999\" },\n    \".cm-diagnostic-hint\": { borderLeft: \"5px solid #66d\" },\n    \".cm-diagnosticAction\": {\n        font: \"inherit\",\n        border: \"none\",\n        padding: \"2px 4px\",\n        backgroundColor: \"#444\",\n        color: \"white\",\n        borderRadius: \"3px\",\n        marginLeft: \"8px\",\n        cursor: \"pointer\"\n    },\n    \".cm-diagnosticSource\": {\n        fontSize: \"70%\",\n        opacity: .7\n    },\n    \".cm-lintRange\": {\n        backgroundPosition: \"left bottom\",\n        backgroundRepeat: \"repeat-x\",\n        paddingBottom: \"0.7px\",\n    },\n    \".cm-lintRange-error\": { backgroundImage: /*@__PURE__*/underline(\"#d11\") },\n    \".cm-lintRange-warning\": { backgroundImage: /*@__PURE__*/underline(\"orange\") },\n    \".cm-lintRange-info\": { backgroundImage: /*@__PURE__*/underline(\"#999\") },\n    \".cm-lintRange-hint\": { backgroundImage: /*@__PURE__*/underline(\"#66d\") },\n    \".cm-lintRange-active\": { backgroundColor: \"#ffdd9980\" },\n    \".cm-tooltip-lint\": {\n        padding: 0,\n        margin: 0\n    },\n    \".cm-lintPoint\": {\n        position: \"relative\",\n        \"&:after\": {\n            content: '\"\"',\n            position: \"absolute\",\n            bottom: 0,\n            left: \"-2px\",\n            borderLeft: \"3px solid transparent\",\n            borderRight: \"3px solid transparent\",\n            borderBottom: \"4px solid #d11\"\n        }\n    },\n    \".cm-lintPoint-warning\": {\n        \"&:after\": { borderBottomColor: \"orange\" }\n    },\n    \".cm-lintPoint-info\": {\n        \"&:after\": { borderBottomColor: \"#999\" }\n    },\n    \".cm-lintPoint-hint\": {\n        \"&:after\": { borderBottomColor: \"#66d\" }\n    },\n    \".cm-panel.cm-panel-lint\": {\n        position: \"relative\",\n        \"& ul\": {\n            maxHeight: \"100px\",\n            overflowY: \"auto\",\n            \"& [aria-selected]\": {\n                backgroundColor: \"#ddd\",\n                \"& u\": { textDecoration: \"underline\" }\n            },\n            \"&:focus [aria-selected]\": {\n                background_fallback: \"#bdf\",\n                backgroundColor: \"Highlight\",\n                color_fallback: \"white\",\n                color: \"HighlightText\"\n            },\n            \"& u\": { textDecoration: \"none\" },\n            padding: 0,\n            margin: 0\n        },\n        \"& [name=close]\": {\n            position: \"absolute\",\n            top: \"0\",\n            right: \"2px\",\n            background: \"inherit\",\n            border: \"none\",\n            font: \"inherit\",\n            padding: 0,\n            margin: 0\n        }\n    }\n});\nfunction severityWeight(sev) {\n    return sev == \"error\" ? 4 : sev == \"warning\" ? 3 : sev == \"info\" ? 2 : 1;\n}\nfunction maxSeverity(diagnostics) {\n    let sev = \"hint\", weight = 1;\n    for (let d of diagnostics) {\n        let w = severityWeight(d.severity);\n        if (w > weight) {\n            weight = w;\n            sev = d.severity;\n        }\n    }\n    return sev;\n}\nclass LintGutterMarker extends GutterMarker {\n    constructor(diagnostics) {\n        super();\n        this.diagnostics = diagnostics;\n        this.severity = maxSeverity(diagnostics);\n    }\n    toDOM(view) {\n        let elt = document.createElement(\"div\");\n        elt.className = \"cm-lint-marker cm-lint-marker-\" + this.severity;\n        let diagnostics = this.diagnostics;\n        let diagnosticsFilter = view.state.facet(lintGutterConfig).tooltipFilter;\n        if (diagnosticsFilter)\n            diagnostics = diagnosticsFilter(diagnostics, view.state);\n        if (diagnostics.length)\n            elt.onmouseover = () => gutterMarkerMouseOver(view, elt, diagnostics);\n        return elt;\n    }\n}\nfunction trackHoverOn(view, marker) {\n    let mousemove = (event) => {\n        let rect = marker.getBoundingClientRect();\n        if (event.clientX > rect.left - 10 /* Hover.Margin */ && event.clientX < rect.right + 10 /* Hover.Margin */ &&\n            event.clientY > rect.top - 10 /* Hover.Margin */ && event.clientY < rect.bottom + 10 /* Hover.Margin */)\n            return;\n        for (let target = event.target; target; target = target.parentNode) {\n            if (target.nodeType == 1 && target.classList.contains(\"cm-tooltip-lint\"))\n                return;\n        }\n        window.removeEventListener(\"mousemove\", mousemove);\n        if (view.state.field(lintGutterTooltip))\n            view.dispatch({ effects: setLintGutterTooltip.of(null) });\n    };\n    window.addEventListener(\"mousemove\", mousemove);\n}\nfunction gutterMarkerMouseOver(view, marker, diagnostics) {\n    function hovered() {\n        let line = view.elementAtHeight(marker.getBoundingClientRect().top + 5 - view.documentTop);\n        const linePos = view.coordsAtPos(line.from);\n        if (linePos) {\n            view.dispatch({ effects: setLintGutterTooltip.of({\n                    pos: line.from,\n                    above: false,\n                    clip: false,\n                    create() {\n                        return {\n                            dom: diagnosticsTooltip(view, diagnostics),\n                            getCoords: () => marker.getBoundingClientRect()\n                        };\n                    }\n                }) });\n        }\n        marker.onmouseout = marker.onmousemove = null;\n        trackHoverOn(view, marker);\n    }\n    let { hoverTime } = view.state.facet(lintGutterConfig);\n    let hoverTimeout = setTimeout(hovered, hoverTime);\n    marker.onmouseout = () => {\n        clearTimeout(hoverTimeout);\n        marker.onmouseout = marker.onmousemove = null;\n    };\n    marker.onmousemove = () => {\n        clearTimeout(hoverTimeout);\n        hoverTimeout = setTimeout(hovered, hoverTime);\n    };\n}\nfunction markersForDiagnostics(doc, diagnostics) {\n    let byLine = Object.create(null);\n    for (let diagnostic of diagnostics) {\n        let line = doc.lineAt(diagnostic.from);\n        (byLine[line.from] || (byLine[line.from] = [])).push(diagnostic);\n    }\n    let markers = [];\n    for (let line in byLine) {\n        markers.push(new LintGutterMarker(byLine[line]).range(+line));\n    }\n    return RangeSet.of(markers, true);\n}\nconst lintGutterExtension = /*@__PURE__*/gutter({\n    class: \"cm-gutter-lint\",\n    markers: view => view.state.field(lintGutterMarkers),\n    widgetMarker: (view, widget, block) => {\n        let diagnostics = [];\n        view.state.field(lintGutterMarkers).between(block.from, block.to, (from, to, value) => {\n            if (from > block.from && from < block.to)\n                diagnostics.push(...value.diagnostics);\n        });\n        return diagnostics.length ? new LintGutterMarker(diagnostics) : null;\n    }\n});\nconst lintGutterMarkers = /*@__PURE__*/StateField.define({\n    create() {\n        return RangeSet.empty;\n    },\n    update(markers, tr) {\n        markers = markers.map(tr.changes);\n        let diagnosticFilter = tr.state.facet(lintGutterConfig).markerFilter;\n        for (let effect of tr.effects) {\n            if (effect.is(setDiagnosticsEffect)) {\n                let diagnostics = effect.value;\n                if (diagnosticFilter)\n                    diagnostics = diagnosticFilter(diagnostics || [], tr.state);\n                markers = markersForDiagnostics(tr.state.doc, diagnostics.slice(0));\n            }\n        }\n        return markers;\n    }\n});\nconst setLintGutterTooltip = /*@__PURE__*/StateEffect.define();\nconst lintGutterTooltip = /*@__PURE__*/StateField.define({\n    create() { return null; },\n    update(tooltip, tr) {\n        if (tooltip && tr.docChanged)\n            tooltip = hideTooltip(tr, tooltip) ? null : Object.assign(Object.assign({}, tooltip), { pos: tr.changes.mapPos(tooltip.pos) });\n        return tr.effects.reduce((t, e) => e.is(setLintGutterTooltip) ? e.value : t, tooltip);\n    },\n    provide: field => showTooltip.from(field)\n});\nconst lintGutterTheme = /*@__PURE__*/EditorView.baseTheme({\n    \".cm-gutter-lint\": {\n        width: \"1.4em\",\n        \"& .cm-gutterElement\": {\n            padding: \".2em\"\n        }\n    },\n    \".cm-lint-marker\": {\n        width: \"1em\",\n        height: \"1em\"\n    },\n    \".cm-lint-marker-info\": {\n        content: /*@__PURE__*/svg(`<path fill=\"#aaf\" stroke=\"#77e\" stroke-width=\"6\" stroke-linejoin=\"round\" d=\"M5 5L35 5L35 35L5 35Z\"/>`)\n    },\n    \".cm-lint-marker-warning\": {\n        content: /*@__PURE__*/svg(`<path fill=\"#fe8\" stroke=\"#fd7\" stroke-width=\"6\" stroke-linejoin=\"round\" d=\"M20 6L37 35L3 35Z\"/>`),\n    },\n    \".cm-lint-marker-error\": {\n        content: /*@__PURE__*/svg(`<circle cx=\"20\" cy=\"20\" r=\"15\" fill=\"#f87\" stroke=\"#f43\" stroke-width=\"6\"/>`)\n    },\n});\nconst lintExtensions = [\n    lintState,\n    /*@__PURE__*/EditorView.decorations.compute([lintState], state => {\n        let { selected, panel } = state.field(lintState);\n        return !selected || !panel || selected.from == selected.to ? Decoration.none : Decoration.set([\n            activeMark.range(selected.from, selected.to)\n        ]);\n    }),\n    /*@__PURE__*/hoverTooltip(lintTooltip, { hideOn: hideTooltip }),\n    baseTheme\n];\nconst lintGutterConfig = /*@__PURE__*/Facet.define({\n    combine(configs) {\n        return combineConfig(configs, {\n            hoverTime: 300 /* Hover.Time */,\n            markerFilter: null,\n            tooltipFilter: null\n        });\n    }\n});\n/**\nReturns an extension that installs a gutter showing markers for\neach line that has diagnostics, which can be hovered over to see\nthe diagnostics.\n*/\nfunction lintGutter(config = {}) {\n    return [lintGutterConfig.of(config), lintGutterMarkers, lintGutterExtension, lintGutterTheme, lintGutterTooltip];\n}\n/**\nIterate over the marked diagnostics for the given editor state,\ncalling `f` for each of them. Note that, if the document changed\nsince the diagnostics were created, the `Diagnostic` object will\nhold the original outdated position, whereas the `to` and `from`\narguments hold the diagnostic's current position.\n*/\nfunction forEachDiagnostic(state, f) {\n    let lState = state.field(lintState, false);\n    if (lState && lState.diagnostics.size) {\n        let pending = [], pendingStart = [], lastEnd = -1;\n        for (let iter = RangeSet.iter([lState.diagnostics]);; iter.next()) {\n            for (let i = 0; i < pending.length; i++)\n                if (!iter.value || iter.value.spec.diagnostics.indexOf(pending[i]) < 0) {\n                    f(pending[i], pendingStart[i], lastEnd);\n                    pending.splice(i, 1);\n                    pendingStart.splice(i--, 1);\n                }\n            if (!iter.value)\n                break;\n            for (let d of iter.value.spec.diagnostics)\n                if (pending.indexOf(d) < 0) {\n                    pending.push(d);\n                    pendingStart.push(iter.from);\n                }\n            lastEnd = iter.to;\n        }\n    }\n}\n\nexport { closeLintPanel, diagnosticCount, forEachDiagnostic, forceLinting, lintGutter, lintKeymap, linter, nextDiagnostic, openLintPanel, previousDiagnostic, setDiagnostics, setDiagnosticsEffect };\n","import { Annotation, Facet, combineConfig, StateField, Transaction, ChangeSet, ChangeDesc, EditorSelection, StateEffect, Text, findClusterBreak, countColumn, CharCategory } from '@codemirror/state';\nimport { EditorView, Direction } from '@codemirror/view';\nimport { IndentContext, getIndentation, indentString, matchBrackets, syntaxTree, getIndentUnit, indentUnit } from '@codemirror/language';\nimport { NodeProp } from '@lezer/common';\n\n/**\nComment or uncomment the current selection. Will use line comments\nif available, otherwise falling back to block comments.\n*/\nconst toggleComment = target => {\n    let { state } = target, line = state.doc.lineAt(state.selection.main.from), config = getConfig(target.state, line.from);\n    return config.line ? toggleLineComment(target) : config.block ? toggleBlockCommentByLine(target) : false;\n};\nfunction command(f, option) {\n    return ({ state, dispatch }) => {\n        if (state.readOnly)\n            return false;\n        let tr = f(option, state);\n        if (!tr)\n            return false;\n        dispatch(state.update(tr));\n        return true;\n    };\n}\n/**\nComment or uncomment the current selection using line comments.\nThe line comment syntax is taken from the\n[`commentTokens`](https://codemirror.net/6/docs/ref/#commands.CommentTokens) [language\ndata](https://codemirror.net/6/docs/ref/#state.EditorState.languageDataAt).\n*/\nconst toggleLineComment = /*@__PURE__*/command(changeLineComment, 0 /* CommentOption.Toggle */);\n/**\nComment the current selection using line comments.\n*/\nconst lineComment = /*@__PURE__*/command(changeLineComment, 1 /* CommentOption.Comment */);\n/**\nUncomment the current selection using line comments.\n*/\nconst lineUncomment = /*@__PURE__*/command(changeLineComment, 2 /* CommentOption.Uncomment */);\n/**\nComment or uncomment the current selection using block comments.\nThe block comment syntax is taken from the\n[`commentTokens`](https://codemirror.net/6/docs/ref/#commands.CommentTokens) [language\ndata](https://codemirror.net/6/docs/ref/#state.EditorState.languageDataAt).\n*/\nconst toggleBlockComment = /*@__PURE__*/command(changeBlockComment, 0 /* CommentOption.Toggle */);\n/**\nComment the current selection using block comments.\n*/\nconst blockComment = /*@__PURE__*/command(changeBlockComment, 1 /* CommentOption.Comment */);\n/**\nUncomment the current selection using block comments.\n*/\nconst blockUncomment = /*@__PURE__*/command(changeBlockComment, 2 /* CommentOption.Uncomment */);\n/**\nComment or uncomment the lines around the current selection using\nblock comments.\n*/\nconst toggleBlockCommentByLine = /*@__PURE__*/command((o, s) => changeBlockComment(o, s, selectedLineRanges(s)), 0 /* CommentOption.Toggle */);\nfunction getConfig(state, pos) {\n    let data = state.languageDataAt(\"commentTokens\", pos, 1);\n    return data.length ? data[0] : {};\n}\nconst SearchMargin = 50;\n/**\nDetermines if the given range is block-commented in the given\nstate.\n*/\nfunction findBlockComment(state, { open, close }, from, to) {\n    let textBefore = state.sliceDoc(from - SearchMargin, from);\n    let textAfter = state.sliceDoc(to, to + SearchMargin);\n    let spaceBefore = /\\s*$/.exec(textBefore)[0].length, spaceAfter = /^\\s*/.exec(textAfter)[0].length;\n    let beforeOff = textBefore.length - spaceBefore;\n    if (textBefore.slice(beforeOff - open.length, beforeOff) == open &&\n        textAfter.slice(spaceAfter, spaceAfter + close.length) == close) {\n        return { open: { pos: from - spaceBefore, margin: spaceBefore && 1 },\n            close: { pos: to + spaceAfter, margin: spaceAfter && 1 } };\n    }\n    let startText, endText;\n    if (to - from <= 2 * SearchMargin) {\n        startText = endText = state.sliceDoc(from, to);\n    }\n    else {\n        startText = state.sliceDoc(from, from + SearchMargin);\n        endText = state.sliceDoc(to - SearchMargin, to);\n    }\n    let startSpace = /^\\s*/.exec(startText)[0].length, endSpace = /\\s*$/.exec(endText)[0].length;\n    let endOff = endText.length - endSpace - close.length;\n    if (startText.slice(startSpace, startSpace + open.length) == open &&\n        endText.slice(endOff, endOff + close.length) == close) {\n        return { open: { pos: from + startSpace + open.length,\n                margin: /\\s/.test(startText.charAt(startSpace + open.length)) ? 1 : 0 },\n            close: { pos: to - endSpace - close.length,\n                margin: /\\s/.test(endText.charAt(endOff - 1)) ? 1 : 0 } };\n    }\n    return null;\n}\nfunction selectedLineRanges(state) {\n    let ranges = [];\n    for (let r of state.selection.ranges) {\n        let fromLine = state.doc.lineAt(r.from);\n        let toLine = r.to <= fromLine.to ? fromLine : state.doc.lineAt(r.to);\n        if (toLine.from > fromLine.from && toLine.from == r.to)\n            toLine = r.to == fromLine.to + 1 ? fromLine : state.doc.lineAt(r.to - 1);\n        let last = ranges.length - 1;\n        if (last >= 0 && ranges[last].to > fromLine.from)\n            ranges[last].to = toLine.to;\n        else\n            ranges.push({ from: fromLine.from + /^\\s*/.exec(fromLine.text)[0].length, to: toLine.to });\n    }\n    return ranges;\n}\n// Performs toggle, comment and uncomment of block comments in\n// languages that support them.\nfunction changeBlockComment(option, state, ranges = state.selection.ranges) {\n    let tokens = ranges.map(r => getConfig(state, r.from).block);\n    if (!tokens.every(c => c))\n        return null;\n    let comments = ranges.map((r, i) => findBlockComment(state, tokens[i], r.from, r.to));\n    if (option != 2 /* CommentOption.Uncomment */ && !comments.every(c => c)) {\n        return { changes: state.changes(ranges.map((range, i) => {\n                if (comments[i])\n                    return [];\n                return [{ from: range.from, insert: tokens[i].open + \" \" }, { from: range.to, insert: \" \" + tokens[i].close }];\n            })) };\n    }\n    else if (option != 1 /* CommentOption.Comment */ && comments.some(c => c)) {\n        let changes = [];\n        for (let i = 0, comment; i < comments.length; i++)\n            if (comment = comments[i]) {\n                let token = tokens[i], { open, close } = comment;\n                changes.push({ from: open.pos - token.open.length, to: open.pos + open.margin }, { from: close.pos - close.margin, to: close.pos + token.close.length });\n            }\n        return { changes };\n    }\n    return null;\n}\n// Performs toggle, comment and uncomment of line comments.\nfunction changeLineComment(option, state, ranges = state.selection.ranges) {\n    let lines = [];\n    let prevLine = -1;\n    for (let { from, to } of ranges) {\n        let startI = lines.length, minIndent = 1e9;\n        let token = getConfig(state, from).line;\n        if (!token)\n            continue;\n        for (let pos = from; pos <= to;) {\n            let line = state.doc.lineAt(pos);\n            if (line.from > prevLine && (from == to || to > line.from)) {\n                prevLine = line.from;\n                let indent = /^\\s*/.exec(line.text)[0].length;\n                let empty = indent == line.length;\n                let comment = line.text.slice(indent, indent + token.length) == token ? indent : -1;\n                if (indent < line.text.length && indent < minIndent)\n                    minIndent = indent;\n                lines.push({ line, comment, token, indent, empty, single: false });\n            }\n            pos = line.to + 1;\n        }\n        if (minIndent < 1e9)\n            for (let i = startI; i < lines.length; i++)\n                if (lines[i].indent < lines[i].line.text.length)\n                    lines[i].indent = minIndent;\n        if (lines.length == startI + 1)\n            lines[startI].single = true;\n    }\n    if (option != 2 /* CommentOption.Uncomment */ && lines.some(l => l.comment < 0 && (!l.empty || l.single))) {\n        let changes = [];\n        for (let { line, token, indent, empty, single } of lines)\n            if (single || !empty)\n                changes.push({ from: line.from + indent, insert: token + \" \" });\n        let changeSet = state.changes(changes);\n        return { changes: changeSet, selection: state.selection.map(changeSet, 1) };\n    }\n    else if (option != 1 /* CommentOption.Comment */ && lines.some(l => l.comment >= 0)) {\n        let changes = [];\n        for (let { line, comment, token } of lines)\n            if (comment >= 0) {\n                let from = line.from + comment, to = from + token.length;\n                if (line.text[to - line.from] == \" \")\n                    to++;\n                changes.push({ from, to });\n            }\n        return { changes };\n    }\n    return null;\n}\n\nconst fromHistory = /*@__PURE__*/Annotation.define();\n/**\nTransaction annotation that will prevent that transaction from\nbeing combined with other transactions in the undo history. Given\n`\"before\"`, it'll prevent merging with previous transactions. With\n`\"after\"`, subsequent transactions won't be combined with this\none. With `\"full\"`, the transaction is isolated on both sides.\n*/\nconst isolateHistory = /*@__PURE__*/Annotation.define();\n/**\nThis facet provides a way to register functions that, given a\ntransaction, provide a set of effects that the history should\nstore when inverting the transaction. This can be used to\nintegrate some kinds of effects in the history, so that they can\nbe undone (and redone again).\n*/\nconst invertedEffects = /*@__PURE__*/Facet.define();\nconst historyConfig = /*@__PURE__*/Facet.define({\n    combine(configs) {\n        return combineConfig(configs, {\n            minDepth: 100,\n            newGroupDelay: 500,\n            joinToEvent: (_t, isAdjacent) => isAdjacent,\n        }, {\n            minDepth: Math.max,\n            newGroupDelay: Math.min,\n            joinToEvent: (a, b) => (tr, adj) => a(tr, adj) || b(tr, adj)\n        });\n    }\n});\nconst historyField_ = /*@__PURE__*/StateField.define({\n    create() {\n        return HistoryState.empty;\n    },\n    update(state, tr) {\n        let config = tr.state.facet(historyConfig);\n        let fromHist = tr.annotation(fromHistory);\n        if (fromHist) {\n            let item = HistEvent.fromTransaction(tr, fromHist.selection), from = fromHist.side;\n            let other = from == 0 /* BranchName.Done */ ? state.undone : state.done;\n            if (item)\n                other = updateBranch(other, other.length, config.minDepth, item);\n            else\n                other = addSelection(other, tr.startState.selection);\n            return new HistoryState(from == 0 /* BranchName.Done */ ? fromHist.rest : other, from == 0 /* BranchName.Done */ ? other : fromHist.rest);\n        }\n        let isolate = tr.annotation(isolateHistory);\n        if (isolate == \"full\" || isolate == \"before\")\n            state = state.isolate();\n        if (tr.annotation(Transaction.addToHistory) === false)\n            return !tr.changes.empty ? state.addMapping(tr.changes.desc) : state;\n        let event = HistEvent.fromTransaction(tr);\n        let time = tr.annotation(Transaction.time), userEvent = tr.annotation(Transaction.userEvent);\n        if (event)\n            state = state.addChanges(event, time, userEvent, config, tr);\n        else if (tr.selection)\n            state = state.addSelection(tr.startState.selection, time, userEvent, config.newGroupDelay);\n        if (isolate == \"full\" || isolate == \"after\")\n            state = state.isolate();\n        return state;\n    },\n    toJSON(value) {\n        return { done: value.done.map(e => e.toJSON()), undone: value.undone.map(e => e.toJSON()) };\n    },\n    fromJSON(json) {\n        return new HistoryState(json.done.map(HistEvent.fromJSON), json.undone.map(HistEvent.fromJSON));\n    }\n});\n/**\nCreate a history extension with the given configuration.\n*/\nfunction history(config = {}) {\n    return [\n        historyField_,\n        historyConfig.of(config),\n        EditorView.domEventHandlers({\n            beforeinput(e, view) {\n                let command = e.inputType == \"historyUndo\" ? undo : e.inputType == \"historyRedo\" ? redo : null;\n                if (!command)\n                    return false;\n                e.preventDefault();\n                return command(view);\n            }\n        })\n    ];\n}\n/**\nThe state field used to store the history data. Should probably\nonly be used when you want to\n[serialize](https://codemirror.net/6/docs/ref/#state.EditorState.toJSON) or\n[deserialize](https://codemirror.net/6/docs/ref/#state.EditorState^fromJSON) state objects in a way\nthat preserves history.\n*/\nconst historyField = historyField_;\nfunction cmd(side, selection) {\n    return function ({ state, dispatch }) {\n        if (!selection && state.readOnly)\n            return false;\n        let historyState = state.field(historyField_, false);\n        if (!historyState)\n            return false;\n        let tr = historyState.pop(side, state, selection);\n        if (!tr)\n            return false;\n        dispatch(tr);\n        return true;\n    };\n}\n/**\nUndo a single group of history events. Returns false if no group\nwas available.\n*/\nconst undo = /*@__PURE__*/cmd(0 /* BranchName.Done */, false);\n/**\nRedo a group of history events. Returns false if no group was\navailable.\n*/\nconst redo = /*@__PURE__*/cmd(1 /* BranchName.Undone */, false);\n/**\nUndo a change or selection change.\n*/\nconst undoSelection = /*@__PURE__*/cmd(0 /* BranchName.Done */, true);\n/**\nRedo a change or selection change.\n*/\nconst redoSelection = /*@__PURE__*/cmd(1 /* BranchName.Undone */, true);\nfunction depth(side) {\n    return function (state) {\n        let histState = state.field(historyField_, false);\n        if (!histState)\n            return 0;\n        let branch = side == 0 /* BranchName.Done */ ? histState.done : histState.undone;\n        return branch.length - (branch.length && !branch[0].changes ? 1 : 0);\n    };\n}\n/**\nThe amount of undoable change events available in a given state.\n*/\nconst undoDepth = /*@__PURE__*/depth(0 /* BranchName.Done */);\n/**\nThe amount of redoable change events available in a given state.\n*/\nconst redoDepth = /*@__PURE__*/depth(1 /* BranchName.Undone */);\n// History events store groups of changes or effects that need to be\n// undone/redone together.\nclass HistEvent {\n    constructor(\n    // The changes in this event. Normal events hold at least one\n    // change or effect. But it may be necessary to store selection\n    // events before the first change, in which case a special type of\n    // instance is created which doesn't hold any changes, with\n    // changes == startSelection == undefined\n    changes, \n    // The effects associated with this event\n    effects, \n    // Accumulated mapping (from addToHistory==false) that should be\n    // applied to events below this one.\n    mapped, \n    // The selection before this event\n    startSelection, \n    // Stores selection changes after this event, to be used for\n    // selection undo/redo.\n    selectionsAfter) {\n        this.changes = changes;\n        this.effects = effects;\n        this.mapped = mapped;\n        this.startSelection = startSelection;\n        this.selectionsAfter = selectionsAfter;\n    }\n    setSelAfter(after) {\n        return new HistEvent(this.changes, this.effects, this.mapped, this.startSelection, after);\n    }\n    toJSON() {\n        var _a, _b, _c;\n        return {\n            changes: (_a = this.changes) === null || _a === void 0 ? void 0 : _a.toJSON(),\n            mapped: (_b = this.mapped) === null || _b === void 0 ? void 0 : _b.toJSON(),\n            startSelection: (_c = this.startSelection) === null || _c === void 0 ? void 0 : _c.toJSON(),\n            selectionsAfter: this.selectionsAfter.map(s => s.toJSON())\n        };\n    }\n    static fromJSON(json) {\n        return new HistEvent(json.changes && ChangeSet.fromJSON(json.changes), [], json.mapped && ChangeDesc.fromJSON(json.mapped), json.startSelection && EditorSelection.fromJSON(json.startSelection), json.selectionsAfter.map(EditorSelection.fromJSON));\n    }\n    // This does not check `addToHistory` and such, it assumes the\n    // transaction needs to be converted to an item. Returns null when\n    // there are no changes or effects in the transaction.\n    static fromTransaction(tr, selection) {\n        let effects = none;\n        for (let invert of tr.startState.facet(invertedEffects)) {\n            let result = invert(tr);\n            if (result.length)\n                effects = effects.concat(result);\n        }\n        if (!effects.length && tr.changes.empty)\n            return null;\n        return new HistEvent(tr.changes.invert(tr.startState.doc), effects, undefined, selection || tr.startState.selection, none);\n    }\n    static selection(selections) {\n        return new HistEvent(undefined, none, undefined, undefined, selections);\n    }\n}\nfunction updateBranch(branch, to, maxLen, newEvent) {\n    let start = to + 1 > maxLen + 20 ? to - maxLen - 1 : 0;\n    let newBranch = branch.slice(start, to);\n    newBranch.push(newEvent);\n    return newBranch;\n}\nfunction isAdjacent(a, b) {\n    let ranges = [], isAdjacent = false;\n    a.iterChangedRanges((f, t) => ranges.push(f, t));\n    b.iterChangedRanges((_f, _t, f, t) => {\n        for (let i = 0; i < ranges.length;) {\n            let from = ranges[i++], to = ranges[i++];\n            if (t >= from && f <= to)\n                isAdjacent = true;\n        }\n    });\n    return isAdjacent;\n}\nfunction eqSelectionShape(a, b) {\n    return a.ranges.length == b.ranges.length &&\n        a.ranges.filter((r, i) => r.empty != b.ranges[i].empty).length === 0;\n}\nfunction conc(a, b) {\n    return !a.length ? b : !b.length ? a : a.concat(b);\n}\nconst none = [];\nconst MaxSelectionsPerEvent = 200;\nfunction addSelection(branch, selection) {\n    if (!branch.length) {\n        return [HistEvent.selection([selection])];\n    }\n    else {\n        let lastEvent = branch[branch.length - 1];\n        let sels = lastEvent.selectionsAfter.slice(Math.max(0, lastEvent.selectionsAfter.length - MaxSelectionsPerEvent));\n        if (sels.length && sels[sels.length - 1].eq(selection))\n            return branch;\n        sels.push(selection);\n        return updateBranch(branch, branch.length - 1, 1e9, lastEvent.setSelAfter(sels));\n    }\n}\n// Assumes the top item has one or more selectionAfter values\nfunction popSelection(branch) {\n    let last = branch[branch.length - 1];\n    let newBranch = branch.slice();\n    newBranch[branch.length - 1] = last.setSelAfter(last.selectionsAfter.slice(0, last.selectionsAfter.length - 1));\n    return newBranch;\n}\n// Add a mapping to the top event in the given branch. If this maps\n// away all the changes and effects in that item, drop it and\n// propagate the mapping to the next item.\nfunction addMappingToBranch(branch, mapping) {\n    if (!branch.length)\n        return branch;\n    let length = branch.length, selections = none;\n    while (length) {\n        let event = mapEvent(branch[length - 1], mapping, selections);\n        if (event.changes && !event.changes.empty || event.effects.length) { // Event survived mapping\n            let result = branch.slice(0, length);\n            result[length - 1] = event;\n            return result;\n        }\n        else { // Drop this event, since there's no changes or effects left\n            mapping = event.mapped;\n            length--;\n            selections = event.selectionsAfter;\n        }\n    }\n    return selections.length ? [HistEvent.selection(selections)] : none;\n}\nfunction mapEvent(event, mapping, extraSelections) {\n    let selections = conc(event.selectionsAfter.length ? event.selectionsAfter.map(s => s.map(mapping)) : none, extraSelections);\n    // Change-less events don't store mappings (they are always the last event in a branch)\n    if (!event.changes)\n        return HistEvent.selection(selections);\n    let mappedChanges = event.changes.map(mapping), before = mapping.mapDesc(event.changes, true);\n    let fullMapping = event.mapped ? event.mapped.composeDesc(before) : before;\n    return new HistEvent(mappedChanges, StateEffect.mapEffects(event.effects, mapping), fullMapping, event.startSelection.map(before), selections);\n}\nconst joinableUserEvent = /^(input\\.type|delete)($|\\.)/;\nclass HistoryState {\n    constructor(done, undone, prevTime = 0, prevUserEvent = undefined) {\n        this.done = done;\n        this.undone = undone;\n        this.prevTime = prevTime;\n        this.prevUserEvent = prevUserEvent;\n    }\n    isolate() {\n        return this.prevTime ? new HistoryState(this.done, this.undone) : this;\n    }\n    addChanges(event, time, userEvent, config, tr) {\n        let done = this.done, lastEvent = done[done.length - 1];\n        if (lastEvent && lastEvent.changes && !lastEvent.changes.empty && event.changes &&\n            (!userEvent || joinableUserEvent.test(userEvent)) &&\n            ((!lastEvent.selectionsAfter.length &&\n                time - this.prevTime < config.newGroupDelay &&\n                config.joinToEvent(tr, isAdjacent(lastEvent.changes, event.changes))) ||\n                // For compose (but not compose.start) events, always join with previous event\n                userEvent == \"input.type.compose\")) {\n            done = updateBranch(done, done.length - 1, config.minDepth, new HistEvent(event.changes.compose(lastEvent.changes), conc(StateEffect.mapEffects(event.effects, lastEvent.changes), lastEvent.effects), lastEvent.mapped, lastEvent.startSelection, none));\n        }\n        else {\n            done = updateBranch(done, done.length, config.minDepth, event);\n        }\n        return new HistoryState(done, none, time, userEvent);\n    }\n    addSelection(selection, time, userEvent, newGroupDelay) {\n        let last = this.done.length ? this.done[this.done.length - 1].selectionsAfter : none;\n        if (last.length > 0 &&\n            time - this.prevTime < newGroupDelay &&\n            userEvent == this.prevUserEvent && userEvent && /^select($|\\.)/.test(userEvent) &&\n            eqSelectionShape(last[last.length - 1], selection))\n            return this;\n        return new HistoryState(addSelection(this.done, selection), this.undone, time, userEvent);\n    }\n    addMapping(mapping) {\n        return new HistoryState(addMappingToBranch(this.done, mapping), addMappingToBranch(this.undone, mapping), this.prevTime, this.prevUserEvent);\n    }\n    pop(side, state, onlySelection) {\n        let branch = side == 0 /* BranchName.Done */ ? this.done : this.undone;\n        if (branch.length == 0)\n            return null;\n        let event = branch[branch.length - 1], selection = event.selectionsAfter[0] || state.selection;\n        if (onlySelection && event.selectionsAfter.length) {\n            return state.update({\n                selection: event.selectionsAfter[event.selectionsAfter.length - 1],\n                annotations: fromHistory.of({ side, rest: popSelection(branch), selection }),\n                userEvent: side == 0 /* BranchName.Done */ ? \"select.undo\" : \"select.redo\",\n                scrollIntoView: true\n            });\n        }\n        else if (!event.changes) {\n            return null;\n        }\n        else {\n            let rest = branch.length == 1 ? none : branch.slice(0, branch.length - 1);\n            if (event.mapped)\n                rest = addMappingToBranch(rest, event.mapped);\n            return state.update({\n                changes: event.changes,\n                selection: event.startSelection,\n                effects: event.effects,\n                annotations: fromHistory.of({ side, rest, selection }),\n                filter: false,\n                userEvent: side == 0 /* BranchName.Done */ ? \"undo\" : \"redo\",\n                scrollIntoView: true\n            });\n        }\n    }\n}\nHistoryState.empty = /*@__PURE__*/new HistoryState(none, none);\n/**\nDefault key bindings for the undo history.\n\n- Mod-z: [`undo`](https://codemirror.net/6/docs/ref/#commands.undo).\n- Mod-y (Mod-Shift-z on macOS) + Ctrl-Shift-z on Linux: [`redo`](https://codemirror.net/6/docs/ref/#commands.redo).\n- Mod-u: [`undoSelection`](https://codemirror.net/6/docs/ref/#commands.undoSelection).\n- Alt-u (Mod-Shift-u on macOS): [`redoSelection`](https://codemirror.net/6/docs/ref/#commands.redoSelection).\n*/\nconst historyKeymap = [\n    { key: \"Mod-z\", run: undo, preventDefault: true },\n    { key: \"Mod-y\", mac: \"Mod-Shift-z\", run: redo, preventDefault: true },\n    { linux: \"Ctrl-Shift-z\", run: redo, preventDefault: true },\n    { key: \"Mod-u\", run: undoSelection, preventDefault: true },\n    { key: \"Alt-u\", mac: \"Mod-Shift-u\", run: redoSelection, preventDefault: true }\n];\n\nfunction updateSel(sel, by) {\n    return EditorSelection.create(sel.ranges.map(by), sel.mainIndex);\n}\nfunction setSel(state, selection) {\n    return state.update({ selection, scrollIntoView: true, userEvent: \"select\" });\n}\nfunction moveSel({ state, dispatch }, how) {\n    let selection = updateSel(state.selection, how);\n    if (selection.eq(state.selection, true))\n        return false;\n    dispatch(setSel(state, selection));\n    return true;\n}\nfunction rangeEnd(range, forward) {\n    return EditorSelection.cursor(forward ? range.to : range.from);\n}\nfunction cursorByChar(view, forward) {\n    return moveSel(view, range => range.empty ? view.moveByChar(range, forward) : rangeEnd(range, forward));\n}\nfunction ltrAtCursor(view) {\n    return view.textDirectionAt(view.state.selection.main.head) == Direction.LTR;\n}\n/**\nMove the selection one character to the left (which is backward in\nleft-to-right text, forward in right-to-left text).\n*/\nconst cursorCharLeft = view => cursorByChar(view, !ltrAtCursor(view));\n/**\nMove the selection one character to the right.\n*/\nconst cursorCharRight = view => cursorByChar(view, ltrAtCursor(view));\n/**\nMove the selection one character forward.\n*/\nconst cursorCharForward = view => cursorByChar(view, true);\n/**\nMove the selection one character backward.\n*/\nconst cursorCharBackward = view => cursorByChar(view, false);\nfunction byCharLogical(state, range, forward) {\n    let pos = range.head, line = state.doc.lineAt(pos);\n    if (pos == (forward ? line.to : line.from))\n        pos = forward ? Math.min(state.doc.length, line.to + 1) : Math.max(0, line.from - 1);\n    else\n        pos = line.from + findClusterBreak(line.text, pos - line.from, forward);\n    return EditorSelection.cursor(pos, forward ? -1 : 1);\n}\nfunction moveByCharLogical(target, forward) {\n    return moveSel(target, range => range.empty ? byCharLogical(target.state, range, forward) : rangeEnd(range, forward));\n}\n/**\nMove the selection one character forward, in logical\n(non-text-direction-aware) string index order.\n*/\nconst cursorCharForwardLogical = target => moveByCharLogical(target, true);\n/**\nMove the selection one character backward, in logical string index\norder.\n*/\nconst cursorCharBackwardLogical = target => moveByCharLogical(target, false);\nfunction cursorByGroup(view, forward) {\n    return moveSel(view, range => range.empty ? view.moveByGroup(range, forward) : rangeEnd(range, forward));\n}\n/**\nMove the selection to the left across one group of word or\nnon-word (but also non-space) characters.\n*/\nconst cursorGroupLeft = view => cursorByGroup(view, !ltrAtCursor(view));\n/**\nMove the selection one group to the right.\n*/\nconst cursorGroupRight = view => cursorByGroup(view, ltrAtCursor(view));\n/**\nMove the selection one group forward.\n*/\nconst cursorGroupForward = view => cursorByGroup(view, true);\n/**\nMove the selection one group backward.\n*/\nconst cursorGroupBackward = view => cursorByGroup(view, false);\nfunction toGroupStart(view, pos, start) {\n    let categorize = view.state.charCategorizer(pos);\n    let cat = categorize(start), initial = cat != CharCategory.Space;\n    return (next) => {\n        let nextCat = categorize(next);\n        if (nextCat != CharCategory.Space)\n            return initial && nextCat == cat;\n        initial = false;\n        return true;\n    };\n}\n/**\nMove the cursor one group forward in the default Windows style,\nwhere it moves to the start of the next group.\n*/\nconst cursorGroupForwardWin = view => {\n    return moveSel(view, range => range.empty\n        ? view.moveByChar(range, true, start => toGroupStart(view, range.head, start))\n        : rangeEnd(range, true));\n};\nconst segmenter = typeof Intl != \"undefined\" && Intl.Segmenter ?\n    /*@__PURE__*/new (Intl.Segmenter)(undefined, { granularity: \"word\" }) : null;\nfunction moveBySubword(view, range, forward) {\n    let categorize = view.state.charCategorizer(range.from);\n    let cat = CharCategory.Space, pos = range.from, steps = 0;\n    let done = false, sawUpper = false, sawLower = false;\n    let step = (next) => {\n        if (done)\n            return false;\n        pos += forward ? next.length : -next.length;\n        let nextCat = categorize(next), ahead;\n        if (nextCat == CharCategory.Word && next.charCodeAt(0) < 128 && /[\\W_]/.test(next))\n            nextCat = -1; // Treat word punctuation specially\n        if (cat == CharCategory.Space)\n            cat = nextCat;\n        if (cat != nextCat)\n            return false;\n        if (cat == CharCategory.Word) {\n            if (next.toLowerCase() == next) {\n                if (!forward && sawUpper)\n                    return false;\n                sawLower = true;\n            }\n            else if (sawLower) {\n                if (forward)\n                    return false;\n                done = true;\n            }\n            else {\n                if (sawUpper && forward && categorize(ahead = view.state.sliceDoc(pos, pos + 1)) == CharCategory.Word &&\n                    ahead.toLowerCase() == ahead)\n                    return false;\n                sawUpper = true;\n            }\n        }\n        steps++;\n        return true;\n    };\n    let end = view.moveByChar(range, forward, start => {\n        step(start);\n        return step;\n    });\n    if (segmenter && cat == CharCategory.Word && end.from == range.from + steps * (forward ? 1 : -1)) {\n        let from = Math.min(range.head, end.head), to = Math.max(range.head, end.head);\n        let skipped = view.state.sliceDoc(from, to);\n        if (skipped.length > 1 && /[\\u4E00-\\uffff]/.test(skipped)) {\n            let segments = Array.from(segmenter.segment(skipped));\n            if (segments.length > 1) {\n                if (forward)\n                    return EditorSelection.cursor(range.head + segments[1].index, -1);\n                return EditorSelection.cursor(end.head + segments[segments.length - 1].index, 1);\n            }\n        }\n    }\n    return end;\n}\nfunction cursorBySubword(view, forward) {\n    return moveSel(view, range => range.empty ? moveBySubword(view, range, forward) : rangeEnd(range, forward));\n}\n/**\nMove the selection one group or camel-case subword forward.\n*/\nconst cursorSubwordForward = view => cursorBySubword(view, true);\n/**\nMove the selection one group or camel-case subword backward.\n*/\nconst cursorSubwordBackward = view => cursorBySubword(view, false);\nfunction interestingNode(state, node, bracketProp) {\n    if (node.type.prop(bracketProp))\n        return true;\n    let len = node.to - node.from;\n    return len && (len > 2 || /[^\\s,.;:]/.test(state.sliceDoc(node.from, node.to))) || node.firstChild;\n}\nfunction moveBySyntax(state, start, forward) {\n    let pos = syntaxTree(state).resolveInner(start.head);\n    let bracketProp = forward ? NodeProp.closedBy : NodeProp.openedBy;\n    // Scan forward through child nodes to see if there's an interesting\n    // node ahead.\n    for (let at = start.head;;) {\n        let next = forward ? pos.childAfter(at) : pos.childBefore(at);\n        if (!next)\n            break;\n        if (interestingNode(state, next, bracketProp))\n            pos = next;\n        else\n            at = forward ? next.to : next.from;\n    }\n    let bracket = pos.type.prop(bracketProp), match, newPos;\n    if (bracket && (match = forward ? matchBrackets(state, pos.from, 1) : matchBrackets(state, pos.to, -1)) && match.matched)\n        newPos = forward ? match.end.to : match.end.from;\n    else\n        newPos = forward ? pos.to : pos.from;\n    return EditorSelection.cursor(newPos, forward ? -1 : 1);\n}\n/**\nMove the cursor over the next syntactic element to the left.\n*/\nconst cursorSyntaxLeft = view => moveSel(view, range => moveBySyntax(view.state, range, !ltrAtCursor(view)));\n/**\nMove the cursor over the next syntactic element to the right.\n*/\nconst cursorSyntaxRight = view => moveSel(view, range => moveBySyntax(view.state, range, ltrAtCursor(view)));\nfunction cursorByLine(view, forward) {\n    return moveSel(view, range => {\n        if (!range.empty)\n            return rangeEnd(range, forward);\n        let moved = view.moveVertically(range, forward);\n        return moved.head != range.head ? moved : view.moveToLineBoundary(range, forward);\n    });\n}\n/**\nMove the selection one line up.\n*/\nconst cursorLineUp = view => cursorByLine(view, false);\n/**\nMove the selection one line down.\n*/\nconst cursorLineDown = view => cursorByLine(view, true);\nfunction pageInfo(view) {\n    let selfScroll = view.scrollDOM.clientHeight < view.scrollDOM.scrollHeight - 2;\n    let marginTop = 0, marginBottom = 0, height;\n    if (selfScroll) {\n        for (let source of view.state.facet(EditorView.scrollMargins)) {\n            let margins = source(view);\n            if (margins === null || margins === void 0 ? void 0 : margins.top)\n                marginTop = Math.max(margins === null || margins === void 0 ? void 0 : margins.top, marginTop);\n            if (margins === null || margins === void 0 ? void 0 : margins.bottom)\n                marginBottom = Math.max(margins === null || margins === void 0 ? void 0 : margins.bottom, marginBottom);\n        }\n        height = view.scrollDOM.clientHeight - marginTop - marginBottom;\n    }\n    else {\n        height = (view.dom.ownerDocument.defaultView || window).innerHeight;\n    }\n    return { marginTop, marginBottom, selfScroll,\n        height: Math.max(view.defaultLineHeight, height - 5) };\n}\nfunction cursorByPage(view, forward) {\n    let page = pageInfo(view);\n    let { state } = view, selection = updateSel(state.selection, range => {\n        return range.empty ? view.moveVertically(range, forward, page.height)\n            : rangeEnd(range, forward);\n    });\n    if (selection.eq(state.selection))\n        return false;\n    let effect;\n    if (page.selfScroll) {\n        let startPos = view.coordsAtPos(state.selection.main.head);\n        let scrollRect = view.scrollDOM.getBoundingClientRect();\n        let scrollTop = scrollRect.top + page.marginTop, scrollBottom = scrollRect.bottom - page.marginBottom;\n        if (startPos && startPos.top > scrollTop && startPos.bottom < scrollBottom)\n            effect = EditorView.scrollIntoView(selection.main.head, { y: \"start\", yMargin: startPos.top - scrollTop });\n    }\n    view.dispatch(setSel(state, selection), { effects: effect });\n    return true;\n}\n/**\nMove the selection one page up.\n*/\nconst cursorPageUp = view => cursorByPage(view, false);\n/**\nMove the selection one page down.\n*/\nconst cursorPageDown = view => cursorByPage(view, true);\nfunction moveByLineBoundary(view, start, forward) {\n    let line = view.lineBlockAt(start.head), moved = view.moveToLineBoundary(start, forward);\n    if (moved.head == start.head && moved.head != (forward ? line.to : line.from))\n        moved = view.moveToLineBoundary(start, forward, false);\n    if (!forward && moved.head == line.from && line.length) {\n        let space = /^\\s*/.exec(view.state.sliceDoc(line.from, Math.min(line.from + 100, line.to)))[0].length;\n        if (space && start.head != line.from + space)\n            moved = EditorSelection.cursor(line.from + space);\n    }\n    return moved;\n}\n/**\nMove the selection to the next line wrap point, or to the end of\nthe line if there isn't one left on this line.\n*/\nconst cursorLineBoundaryForward = view => moveSel(view, range => moveByLineBoundary(view, range, true));\n/**\nMove the selection to previous line wrap point, or failing that to\nthe start of the line. If the line is indented, and the cursor\nisn't already at the end of the indentation, this will move to the\nend of the indentation instead of the start of the line.\n*/\nconst cursorLineBoundaryBackward = view => moveSel(view, range => moveByLineBoundary(view, range, false));\n/**\nMove the selection one line wrap point to the left.\n*/\nconst cursorLineBoundaryLeft = view => moveSel(view, range => moveByLineBoundary(view, range, !ltrAtCursor(view)));\n/**\nMove the selection one line wrap point to the right.\n*/\nconst cursorLineBoundaryRight = view => moveSel(view, range => moveByLineBoundary(view, range, ltrAtCursor(view)));\n/**\nMove the selection to the start of the line.\n*/\nconst cursorLineStart = view => moveSel(view, range => EditorSelection.cursor(view.lineBlockAt(range.head).from, 1));\n/**\nMove the selection to the end of the line.\n*/\nconst cursorLineEnd = view => moveSel(view, range => EditorSelection.cursor(view.lineBlockAt(range.head).to, -1));\nfunction toMatchingBracket(state, dispatch, extend) {\n    let found = false, selection = updateSel(state.selection, range => {\n        let matching = matchBrackets(state, range.head, -1)\n            || matchBrackets(state, range.head, 1)\n            || (range.head > 0 && matchBrackets(state, range.head - 1, 1))\n            || (range.head < state.doc.length && matchBrackets(state, range.head + 1, -1));\n        if (!matching || !matching.end)\n            return range;\n        found = true;\n        let head = matching.start.from == range.head ? matching.end.to : matching.end.from;\n        return extend ? EditorSelection.range(range.anchor, head) : EditorSelection.cursor(head);\n    });\n    if (!found)\n        return false;\n    dispatch(setSel(state, selection));\n    return true;\n}\n/**\nMove the selection to the bracket matching the one it is currently\non, if any.\n*/\nconst cursorMatchingBracket = ({ state, dispatch }) => toMatchingBracket(state, dispatch, false);\n/**\nExtend the selection to the bracket matching the one the selection\nhead is currently on, if any.\n*/\nconst selectMatchingBracket = ({ state, dispatch }) => toMatchingBracket(state, dispatch, true);\nfunction extendSel(target, how) {\n    let selection = updateSel(target.state.selection, range => {\n        let head = how(range);\n        return EditorSelection.range(range.anchor, head.head, head.goalColumn, head.bidiLevel || undefined);\n    });\n    if (selection.eq(target.state.selection))\n        return false;\n    target.dispatch(setSel(target.state, selection));\n    return true;\n}\nfunction selectByChar(view, forward) {\n    return extendSel(view, range => view.moveByChar(range, forward));\n}\n/**\nMove the selection head one character to the left, while leaving\nthe anchor in place.\n*/\nconst selectCharLeft = view => selectByChar(view, !ltrAtCursor(view));\n/**\nMove the selection head one character to the right.\n*/\nconst selectCharRight = view => selectByChar(view, ltrAtCursor(view));\n/**\nMove the selection head one character forward.\n*/\nconst selectCharForward = view => selectByChar(view, true);\n/**\nMove the selection head one character backward.\n*/\nconst selectCharBackward = view => selectByChar(view, false);\n/**\nMove the selection head one character forward by logical\n(non-direction aware) string index order.\n*/\nconst selectCharForwardLogical = target => extendSel(target, range => byCharLogical(target.state, range, true));\n/**\nMove the selection head one character backward by logical string\nindex order.\n*/\nconst selectCharBackwardLogical = target => extendSel(target, range => byCharLogical(target.state, range, false));\nfunction selectByGroup(view, forward) {\n    return extendSel(view, range => view.moveByGroup(range, forward));\n}\n/**\nMove the selection head one [group](https://codemirror.net/6/docs/ref/#commands.cursorGroupLeft) to\nthe left.\n*/\nconst selectGroupLeft = view => selectByGroup(view, !ltrAtCursor(view));\n/**\nMove the selection head one group to the right.\n*/\nconst selectGroupRight = view => selectByGroup(view, ltrAtCursor(view));\n/**\nMove the selection head one group forward.\n*/\nconst selectGroupForward = view => selectByGroup(view, true);\n/**\nMove the selection head one group backward.\n*/\nconst selectGroupBackward = view => selectByGroup(view, false);\n/**\nMove the selection head one group forward in the default Windows\nstyle, skipping to the start of the next group.\n*/\nconst selectGroupForwardWin = view => {\n    return extendSel(view, range => view.moveByChar(range, true, start => toGroupStart(view, range.head, start)));\n};\nfunction selectBySubword(view, forward) {\n    return extendSel(view, range => moveBySubword(view, range, forward));\n}\n/**\nMove the selection head one group or camel-case subword forward.\n*/\nconst selectSubwordForward = view => selectBySubword(view, true);\n/**\nMove the selection head one group or subword backward.\n*/\nconst selectSubwordBackward = view => selectBySubword(view, false);\n/**\nMove the selection head over the next syntactic element to the left.\n*/\nconst selectSyntaxLeft = view => extendSel(view, range => moveBySyntax(view.state, range, !ltrAtCursor(view)));\n/**\nMove the selection head over the next syntactic element to the right.\n*/\nconst selectSyntaxRight = view => extendSel(view, range => moveBySyntax(view.state, range, ltrAtCursor(view)));\nfunction selectByLine(view, forward) {\n    return extendSel(view, range => view.moveVertically(range, forward));\n}\n/**\nMove the selection head one line up.\n*/\nconst selectLineUp = view => selectByLine(view, false);\n/**\nMove the selection head one line down.\n*/\nconst selectLineDown = view => selectByLine(view, true);\nfunction selectByPage(view, forward) {\n    return extendSel(view, range => view.moveVertically(range, forward, pageInfo(view).height));\n}\n/**\nMove the selection head one page up.\n*/\nconst selectPageUp = view => selectByPage(view, false);\n/**\nMove the selection head one page down.\n*/\nconst selectPageDown = view => selectByPage(view, true);\n/**\nMove the selection head to the next line boundary.\n*/\nconst selectLineBoundaryForward = view => extendSel(view, range => moveByLineBoundary(view, range, true));\n/**\nMove the selection head to the previous line boundary.\n*/\nconst selectLineBoundaryBackward = view => extendSel(view, range => moveByLineBoundary(view, range, false));\n/**\nMove the selection head one line boundary to the left.\n*/\nconst selectLineBoundaryLeft = view => extendSel(view, range => moveByLineBoundary(view, range, !ltrAtCursor(view)));\n/**\nMove the selection head one line boundary to the right.\n*/\nconst selectLineBoundaryRight = view => extendSel(view, range => moveByLineBoundary(view, range, ltrAtCursor(view)));\n/**\nMove the selection head to the start of the line.\n*/\nconst selectLineStart = view => extendSel(view, range => EditorSelection.cursor(view.lineBlockAt(range.head).from));\n/**\nMove the selection head to the end of the line.\n*/\nconst selectLineEnd = view => extendSel(view, range => EditorSelection.cursor(view.lineBlockAt(range.head).to));\n/**\nMove the selection to the start of the document.\n*/\nconst cursorDocStart = ({ state, dispatch }) => {\n    dispatch(setSel(state, { anchor: 0 }));\n    return true;\n};\n/**\nMove the selection to the end of the document.\n*/\nconst cursorDocEnd = ({ state, dispatch }) => {\n    dispatch(setSel(state, { anchor: state.doc.length }));\n    return true;\n};\n/**\nMove the selection head to the start of the document.\n*/\nconst selectDocStart = ({ state, dispatch }) => {\n    dispatch(setSel(state, { anchor: state.selection.main.anchor, head: 0 }));\n    return true;\n};\n/**\nMove the selection head to the end of the document.\n*/\nconst selectDocEnd = ({ state, dispatch }) => {\n    dispatch(setSel(state, { anchor: state.selection.main.anchor, head: state.doc.length }));\n    return true;\n};\n/**\nSelect the entire document.\n*/\nconst selectAll = ({ state, dispatch }) => {\n    dispatch(state.update({ selection: { anchor: 0, head: state.doc.length }, userEvent: \"select\" }));\n    return true;\n};\n/**\nExpand the selection to cover entire lines.\n*/\nconst selectLine = ({ state, dispatch }) => {\n    let ranges = selectedLineBlocks(state).map(({ from, to }) => EditorSelection.range(from, Math.min(to + 1, state.doc.length)));\n    dispatch(state.update({ selection: EditorSelection.create(ranges), userEvent: \"select\" }));\n    return true;\n};\n/**\nSelect the next syntactic construct that is larger than the\nselection. Note that this will only work insofar as the language\n[provider](https://codemirror.net/6/docs/ref/#language.language) you use builds up a full\nsyntax tree.\n*/\nconst selectParentSyntax = ({ state, dispatch }) => {\n    let selection = updateSel(state.selection, range => {\n        let tree = syntaxTree(state), stack = tree.resolveStack(range.from, 1);\n        if (range.empty) {\n            let stackBefore = tree.resolveStack(range.from, -1);\n            if (stackBefore.node.from >= stack.node.from && stackBefore.node.to <= stack.node.to)\n                stack = stackBefore;\n        }\n        for (let cur = stack; cur; cur = cur.next) {\n            let { node } = cur;\n            if (((node.from < range.from && node.to >= range.to) ||\n                (node.to > range.to && node.from <= range.from)) &&\n                cur.next)\n                return EditorSelection.range(node.to, node.from);\n        }\n        return range;\n    });\n    if (selection.eq(state.selection))\n        return false;\n    dispatch(setSel(state, selection));\n    return true;\n};\n/**\nSimplify the current selection. When multiple ranges are selected,\nreduce it to its main range. Otherwise, if the selection is\nnon-empty, convert it to a cursor selection.\n*/\nconst simplifySelection = ({ state, dispatch }) => {\n    let cur = state.selection, selection = null;\n    if (cur.ranges.length > 1)\n        selection = EditorSelection.create([cur.main]);\n    else if (!cur.main.empty)\n        selection = EditorSelection.create([EditorSelection.cursor(cur.main.head)]);\n    if (!selection)\n        return false;\n    dispatch(setSel(state, selection));\n    return true;\n};\nfunction deleteBy(target, by) {\n    if (target.state.readOnly)\n        return false;\n    let event = \"delete.selection\", { state } = target;\n    let changes = state.changeByRange(range => {\n        let { from, to } = range;\n        if (from == to) {\n            let towards = by(range);\n            if (towards < from) {\n                event = \"delete.backward\";\n                towards = skipAtomic(target, towards, false);\n            }\n            else if (towards > from) {\n                event = \"delete.forward\";\n                towards = skipAtomic(target, towards, true);\n            }\n            from = Math.min(from, towards);\n            to = Math.max(to, towards);\n        }\n        else {\n            from = skipAtomic(target, from, false);\n            to = skipAtomic(target, to, true);\n        }\n        return from == to ? { range } : { changes: { from, to }, range: EditorSelection.cursor(from, from < range.head ? -1 : 1) };\n    });\n    if (changes.changes.empty)\n        return false;\n    target.dispatch(state.update(changes, {\n        scrollIntoView: true,\n        userEvent: event,\n        effects: event == \"delete.selection\" ? EditorView.announce.of(state.phrase(\"Selection deleted\")) : undefined\n    }));\n    return true;\n}\nfunction skipAtomic(target, pos, forward) {\n    if (target instanceof EditorView)\n        for (let ranges of target.state.facet(EditorView.atomicRanges).map(f => f(target)))\n            ranges.between(pos, pos, (from, to) => {\n                if (from < pos && to > pos)\n                    pos = forward ? to : from;\n            });\n    return pos;\n}\nconst deleteByChar = (target, forward, byIndentUnit) => deleteBy(target, range => {\n    let pos = range.from, { state } = target, line = state.doc.lineAt(pos), before, targetPos;\n    if (byIndentUnit && !forward && pos > line.from && pos < line.from + 200 &&\n        !/[^ \\t]/.test(before = line.text.slice(0, pos - line.from))) {\n        if (before[before.length - 1] == \"\\t\")\n            return pos - 1;\n        let col = countColumn(before, state.tabSize), drop = col % getIndentUnit(state) || getIndentUnit(state);\n        for (let i = 0; i < drop && before[before.length - 1 - i] == \" \"; i++)\n            pos--;\n        targetPos = pos;\n    }\n    else {\n        targetPos = findClusterBreak(line.text, pos - line.from, forward, forward) + line.from;\n        if (targetPos == pos && line.number != (forward ? state.doc.lines : 1))\n            targetPos += forward ? 1 : -1;\n        else if (!forward && /[\\ufe00-\\ufe0f]/.test(line.text.slice(targetPos - line.from, pos - line.from)))\n            targetPos = findClusterBreak(line.text, targetPos - line.from, false, false) + line.from;\n    }\n    return targetPos;\n});\n/**\nDelete the selection, or, for cursor selections, the character or\nindentation unit before the cursor.\n*/\nconst deleteCharBackward = view => deleteByChar(view, false, true);\n/**\nDelete the selection or the character before the cursor. Does not\nimplement any extended behavior like deleting whole indentation\nunits in one go.\n*/\nconst deleteCharBackwardStrict = view => deleteByChar(view, false, false);\n/**\nDelete the selection or the character after the cursor.\n*/\nconst deleteCharForward = view => deleteByChar(view, true, false);\nconst deleteByGroup = (target, forward) => deleteBy(target, range => {\n    let pos = range.head, { state } = target, line = state.doc.lineAt(pos);\n    let categorize = state.charCategorizer(pos);\n    for (let cat = null;;) {\n        if (pos == (forward ? line.to : line.from)) {\n            if (pos == range.head && line.number != (forward ? state.doc.lines : 1))\n                pos += forward ? 1 : -1;\n            break;\n        }\n        let next = findClusterBreak(line.text, pos - line.from, forward) + line.from;\n        let nextChar = line.text.slice(Math.min(pos, next) - line.from, Math.max(pos, next) - line.from);\n        let nextCat = categorize(nextChar);\n        if (cat != null && nextCat != cat)\n            break;\n        if (nextChar != \" \" || pos != range.head)\n            cat = nextCat;\n        pos = next;\n    }\n    return pos;\n});\n/**\nDelete the selection or backward until the end of the next\n[group](https://codemirror.net/6/docs/ref/#view.EditorView.moveByGroup), only skipping groups of\nwhitespace when they consist of a single space.\n*/\nconst deleteGroupBackward = target => deleteByGroup(target, false);\n/**\nDelete the selection or forward until the end of the next group.\n*/\nconst deleteGroupForward = target => deleteByGroup(target, true);\n/**\nDelete the selection, or, if it is a cursor selection, delete to\nthe end of the line. If the cursor is directly at the end of the\nline, delete the line break after it.\n*/\nconst deleteToLineEnd = view => deleteBy(view, range => {\n    let lineEnd = view.lineBlockAt(range.head).to;\n    return range.head < lineEnd ? lineEnd : Math.min(view.state.doc.length, range.head + 1);\n});\n/**\nDelete the selection, or, if it is a cursor selection, delete to\nthe start of the line. If the cursor is directly at the start of the\nline, delete the line break before it.\n*/\nconst deleteToLineStart = view => deleteBy(view, range => {\n    let lineStart = view.lineBlockAt(range.head).from;\n    return range.head > lineStart ? lineStart : Math.max(0, range.head - 1);\n});\n/**\nDelete the selection, or, if it is a cursor selection, delete to\nthe start of the line or the next line wrap before the cursor.\n*/\nconst deleteLineBoundaryBackward = view => deleteBy(view, range => {\n    let lineStart = view.moveToLineBoundary(range, false).head;\n    return range.head > lineStart ? lineStart : Math.max(0, range.head - 1);\n});\n/**\nDelete the selection, or, if it is a cursor selection, delete to\nthe end of the line or the next line wrap after the cursor.\n*/\nconst deleteLineBoundaryForward = view => deleteBy(view, range => {\n    let lineStart = view.moveToLineBoundary(range, true).head;\n    return range.head < lineStart ? lineStart : Math.min(view.state.doc.length, range.head + 1);\n});\n/**\nDelete all whitespace directly before a line end from the\ndocument.\n*/\nconst deleteTrailingWhitespace = ({ state, dispatch }) => {\n    if (state.readOnly)\n        return false;\n    let changes = [];\n    for (let pos = 0, prev = \"\", iter = state.doc.iter();;) {\n        iter.next();\n        if (iter.lineBreak || iter.done) {\n            let trailing = prev.search(/\\s+$/);\n            if (trailing > -1)\n                changes.push({ from: pos - (prev.length - trailing), to: pos });\n            if (iter.done)\n                break;\n            prev = \"\";\n        }\n        else {\n            prev = iter.value;\n        }\n        pos += iter.value.length;\n    }\n    if (!changes.length)\n        return false;\n    dispatch(state.update({ changes, userEvent: \"delete\" }));\n    return true;\n};\n/**\nReplace each selection range with a line break, leaving the cursor\non the line before the break.\n*/\nconst splitLine = ({ state, dispatch }) => {\n    if (state.readOnly)\n        return false;\n    let changes = state.changeByRange(range => {\n        return { changes: { from: range.from, to: range.to, insert: Text.of([\"\", \"\"]) },\n            range: EditorSelection.cursor(range.from) };\n    });\n    dispatch(state.update(changes, { scrollIntoView: true, userEvent: \"input\" }));\n    return true;\n};\n/**\nFlip the characters before and after the cursor(s).\n*/\nconst transposeChars = ({ state, dispatch }) => {\n    if (state.readOnly)\n        return false;\n    let changes = state.changeByRange(range => {\n        if (!range.empty || range.from == 0 || range.from == state.doc.length)\n            return { range };\n        let pos = range.from, line = state.doc.lineAt(pos);\n        let from = pos == line.from ? pos - 1 : findClusterBreak(line.text, pos - line.from, false) + line.from;\n        let to = pos == line.to ? pos + 1 : findClusterBreak(line.text, pos - line.from, true) + line.from;\n        return { changes: { from, to, insert: state.doc.slice(pos, to).append(state.doc.slice(from, pos)) },\n            range: EditorSelection.cursor(to) };\n    });\n    if (changes.changes.empty)\n        return false;\n    dispatch(state.update(changes, { scrollIntoView: true, userEvent: \"move.character\" }));\n    return true;\n};\nfunction selectedLineBlocks(state) {\n    let blocks = [], upto = -1;\n    for (let range of state.selection.ranges) {\n        let startLine = state.doc.lineAt(range.from), endLine = state.doc.lineAt(range.to);\n        if (!range.empty && range.to == endLine.from)\n            endLine = state.doc.lineAt(range.to - 1);\n        if (upto >= startLine.number) {\n            let prev = blocks[blocks.length - 1];\n            prev.to = endLine.to;\n            prev.ranges.push(range);\n        }\n        else {\n            blocks.push({ from: startLine.from, to: endLine.to, ranges: [range] });\n        }\n        upto = endLine.number + 1;\n    }\n    return blocks;\n}\nfunction moveLine(state, dispatch, forward) {\n    if (state.readOnly)\n        return false;\n    let changes = [], ranges = [];\n    for (let block of selectedLineBlocks(state)) {\n        if (forward ? block.to == state.doc.length : block.from == 0)\n            continue;\n        let nextLine = state.doc.lineAt(forward ? block.to + 1 : block.from - 1);\n        let size = nextLine.length + 1;\n        if (forward) {\n            changes.push({ from: block.to, to: nextLine.to }, { from: block.from, insert: nextLine.text + state.lineBreak });\n            for (let r of block.ranges)\n                ranges.push(EditorSelection.range(Math.min(state.doc.length, r.anchor + size), Math.min(state.doc.length, r.head + size)));\n        }\n        else {\n            changes.push({ from: nextLine.from, to: block.from }, { from: block.to, insert: state.lineBreak + nextLine.text });\n            for (let r of block.ranges)\n                ranges.push(EditorSelection.range(r.anchor - size, r.head - size));\n        }\n    }\n    if (!changes.length)\n        return false;\n    dispatch(state.update({\n        changes,\n        scrollIntoView: true,\n        selection: EditorSelection.create(ranges, state.selection.mainIndex),\n        userEvent: \"move.line\"\n    }));\n    return true;\n}\n/**\nMove the selected lines up one line.\n*/\nconst moveLineUp = ({ state, dispatch }) => moveLine(state, dispatch, false);\n/**\nMove the selected lines down one line.\n*/\nconst moveLineDown = ({ state, dispatch }) => moveLine(state, dispatch, true);\nfunction copyLine(state, dispatch, forward) {\n    if (state.readOnly)\n        return false;\n    let changes = [];\n    for (let block of selectedLineBlocks(state)) {\n        if (forward)\n            changes.push({ from: block.from, insert: state.doc.slice(block.from, block.to) + state.lineBreak });\n        else\n            changes.push({ from: block.to, insert: state.lineBreak + state.doc.slice(block.from, block.to) });\n    }\n    dispatch(state.update({ changes, scrollIntoView: true, userEvent: \"input.copyline\" }));\n    return true;\n}\n/**\nCreate a copy of the selected lines. Keep the selection in the top copy.\n*/\nconst copyLineUp = ({ state, dispatch }) => copyLine(state, dispatch, false);\n/**\nCreate a copy of the selected lines. Keep the selection in the bottom copy.\n*/\nconst copyLineDown = ({ state, dispatch }) => copyLine(state, dispatch, true);\n/**\nDelete selected lines.\n*/\nconst deleteLine = view => {\n    if (view.state.readOnly)\n        return false;\n    let { state } = view, changes = state.changes(selectedLineBlocks(state).map(({ from, to }) => {\n        if (from > 0)\n            from--;\n        else if (to < state.doc.length)\n            to++;\n        return { from, to };\n    }));\n    let selection = updateSel(state.selection, range => {\n        let dist = undefined;\n        if (view.lineWrapping) {\n            let block = view.lineBlockAt(range.head), pos = view.coordsAtPos(range.head, range.assoc || 1);\n            if (pos)\n                dist = (block.bottom + view.documentTop) - pos.bottom + view.defaultLineHeight / 2;\n        }\n        return view.moveVertically(range, true, dist);\n    }).map(changes);\n    view.dispatch({ changes, selection, scrollIntoView: true, userEvent: \"delete.line\" });\n    return true;\n};\n/**\nReplace the selection with a newline.\n*/\nconst insertNewline = ({ state, dispatch }) => {\n    dispatch(state.update(state.replaceSelection(state.lineBreak), { scrollIntoView: true, userEvent: \"input\" }));\n    return true;\n};\n/**\nReplace the selection with a newline and the same amount of\nindentation as the line above.\n*/\nconst insertNewlineKeepIndent = ({ state, dispatch }) => {\n    dispatch(state.update(state.changeByRange(range => {\n        let indent = /^\\s*/.exec(state.doc.lineAt(range.from).text)[0];\n        return {\n            changes: { from: range.from, to: range.to, insert: state.lineBreak + indent },\n            range: EditorSelection.cursor(range.from + indent.length + 1)\n        };\n    }), { scrollIntoView: true, userEvent: \"input\" }));\n    return true;\n};\nfunction isBetweenBrackets(state, pos) {\n    if (/\\(\\)|\\[\\]|\\{\\}/.test(state.sliceDoc(pos - 1, pos + 1)))\n        return { from: pos, to: pos };\n    let context = syntaxTree(state).resolveInner(pos);\n    let before = context.childBefore(pos), after = context.childAfter(pos), closedBy;\n    if (before && after && before.to <= pos && after.from >= pos &&\n        (closedBy = before.type.prop(NodeProp.closedBy)) && closedBy.indexOf(after.name) > -1 &&\n        state.doc.lineAt(before.to).from == state.doc.lineAt(after.from).from &&\n        !/\\S/.test(state.sliceDoc(before.to, after.from)))\n        return { from: before.to, to: after.from };\n    return null;\n}\n/**\nReplace the selection with a newline and indent the newly created\nline(s). If the current line consists only of whitespace, this\nwill also delete that whitespace. When the cursor is between\nmatching brackets, an additional newline will be inserted after\nthe cursor.\n*/\nconst insertNewlineAndIndent = /*@__PURE__*/newlineAndIndent(false);\n/**\nCreate a blank, indented line below the current line.\n*/\nconst insertBlankLine = /*@__PURE__*/newlineAndIndent(true);\nfunction newlineAndIndent(atEof) {\n    return ({ state, dispatch }) => {\n        if (state.readOnly)\n            return false;\n        let changes = state.changeByRange(range => {\n            let { from, to } = range, line = state.doc.lineAt(from);\n            let explode = !atEof && from == to && isBetweenBrackets(state, from);\n            if (atEof)\n                from = to = (to <= line.to ? line : state.doc.lineAt(to)).to;\n            let cx = new IndentContext(state, { simulateBreak: from, simulateDoubleBreak: !!explode });\n            let indent = getIndentation(cx, from);\n            if (indent == null)\n                indent = countColumn(/^\\s*/.exec(state.doc.lineAt(from).text)[0], state.tabSize);\n            while (to < line.to && /\\s/.test(line.text[to - line.from]))\n                to++;\n            if (explode)\n                ({ from, to } = explode);\n            else if (from > line.from && from < line.from + 100 && !/\\S/.test(line.text.slice(0, from)))\n                from = line.from;\n            let insert = [\"\", indentString(state, indent)];\n            if (explode)\n                insert.push(indentString(state, cx.lineIndent(line.from, -1)));\n            return { changes: { from, to, insert: Text.of(insert) },\n                range: EditorSelection.cursor(from + 1 + insert[1].length) };\n        });\n        dispatch(state.update(changes, { scrollIntoView: true, userEvent: \"input\" }));\n        return true;\n    };\n}\nfunction changeBySelectedLine(state, f) {\n    let atLine = -1;\n    return state.changeByRange(range => {\n        let changes = [];\n        for (let pos = range.from; pos <= range.to;) {\n            let line = state.doc.lineAt(pos);\n            if (line.number > atLine && (range.empty || range.to > line.from)) {\n                f(line, changes, range);\n                atLine = line.number;\n            }\n            pos = line.to + 1;\n        }\n        let changeSet = state.changes(changes);\n        return { changes,\n            range: EditorSelection.range(changeSet.mapPos(range.anchor, 1), changeSet.mapPos(range.head, 1)) };\n    });\n}\n/**\nAuto-indent the selected lines. This uses the [indentation service\nfacet](https://codemirror.net/6/docs/ref/#language.indentService) as source for auto-indent\ninformation.\n*/\nconst indentSelection = ({ state, dispatch }) => {\n    if (state.readOnly)\n        return false;\n    let updated = Object.create(null);\n    let context = new IndentContext(state, { overrideIndentation: start => {\n            let found = updated[start];\n            return found == null ? -1 : found;\n        } });\n    let changes = changeBySelectedLine(state, (line, changes, range) => {\n        let indent = getIndentation(context, line.from);\n        if (indent == null)\n            return;\n        if (!/\\S/.test(line.text))\n            indent = 0;\n        let cur = /^\\s*/.exec(line.text)[0];\n        let norm = indentString(state, indent);\n        if (cur != norm || range.from < line.from + cur.length) {\n            updated[line.from] = indent;\n            changes.push({ from: line.from, to: line.from + cur.length, insert: norm });\n        }\n    });\n    if (!changes.changes.empty)\n        dispatch(state.update(changes, { userEvent: \"indent\" }));\n    return true;\n};\n/**\nAdd a [unit](https://codemirror.net/6/docs/ref/#language.indentUnit) of indentation to all selected\nlines.\n*/\nconst indentMore = ({ state, dispatch }) => {\n    if (state.readOnly)\n        return false;\n    dispatch(state.update(changeBySelectedLine(state, (line, changes) => {\n        changes.push({ from: line.from, insert: state.facet(indentUnit) });\n    }), { userEvent: \"input.indent\" }));\n    return true;\n};\n/**\nRemove a [unit](https://codemirror.net/6/docs/ref/#language.indentUnit) of indentation from all\nselected lines.\n*/\nconst indentLess = ({ state, dispatch }) => {\n    if (state.readOnly)\n        return false;\n    dispatch(state.update(changeBySelectedLine(state, (line, changes) => {\n        let space = /^\\s*/.exec(line.text)[0];\n        if (!space)\n            return;\n        let col = countColumn(space, state.tabSize), keep = 0;\n        let insert = indentString(state, Math.max(0, col - getIndentUnit(state)));\n        while (keep < space.length && keep < insert.length && space.charCodeAt(keep) == insert.charCodeAt(keep))\n            keep++;\n        changes.push({ from: line.from + keep, to: line.from + space.length, insert: insert.slice(keep) });\n    }), { userEvent: \"delete.dedent\" }));\n    return true;\n};\n/**\nEnables or disables\n[tab-focus mode](https://codemirror.net/6/docs/ref/#view.EditorView.setTabFocusMode). While on, this\nprevents the editor's key bindings from capturing Tab or\nShift-Tab, making it possible for the user to move focus out of\nthe editor with the keyboard.\n*/\nconst toggleTabFocusMode = view => {\n    view.setTabFocusMode();\n    return true;\n};\n/**\nTemporarily enables [tab-focus\nmode](https://codemirror.net/6/docs/ref/#view.EditorView.setTabFocusMode) for two seconds or until\nanother key is pressed.\n*/\nconst temporarilySetTabFocusMode = view => {\n    view.setTabFocusMode(2000);\n    return true;\n};\n/**\nInsert a tab character at the cursor or, if something is selected,\nuse [`indentMore`](https://codemirror.net/6/docs/ref/#commands.indentMore) to indent the entire\nselection.\n*/\nconst insertTab = ({ state, dispatch }) => {\n    if (state.selection.ranges.some(r => !r.empty))\n        return indentMore({ state, dispatch });\n    dispatch(state.update(state.replaceSelection(\"\\t\"), { scrollIntoView: true, userEvent: \"input\" }));\n    return true;\n};\n/**\nArray of key bindings containing the Emacs-style bindings that are\navailable on macOS by default.\n\n - Ctrl-b: [`cursorCharLeft`](https://codemirror.net/6/docs/ref/#commands.cursorCharLeft) ([`selectCharLeft`](https://codemirror.net/6/docs/ref/#commands.selectCharLeft) with Shift)\n - Ctrl-f: [`cursorCharRight`](https://codemirror.net/6/docs/ref/#commands.cursorCharRight) ([`selectCharRight`](https://codemirror.net/6/docs/ref/#commands.selectCharRight) with Shift)\n - Ctrl-p: [`cursorLineUp`](https://codemirror.net/6/docs/ref/#commands.cursorLineUp) ([`selectLineUp`](https://codemirror.net/6/docs/ref/#commands.selectLineUp) with Shift)\n - Ctrl-n: [`cursorLineDown`](https://codemirror.net/6/docs/ref/#commands.cursorLineDown) ([`selectLineDown`](https://codemirror.net/6/docs/ref/#commands.selectLineDown) with Shift)\n - Ctrl-a: [`cursorLineStart`](https://codemirror.net/6/docs/ref/#commands.cursorLineStart) ([`selectLineStart`](https://codemirror.net/6/docs/ref/#commands.selectLineStart) with Shift)\n - Ctrl-e: [`cursorLineEnd`](https://codemirror.net/6/docs/ref/#commands.cursorLineEnd) ([`selectLineEnd`](https://codemirror.net/6/docs/ref/#commands.selectLineEnd) with Shift)\n - Ctrl-d: [`deleteCharForward`](https://codemirror.net/6/docs/ref/#commands.deleteCharForward)\n - Ctrl-h: [`deleteCharBackward`](https://codemirror.net/6/docs/ref/#commands.deleteCharBackward)\n - Ctrl-k: [`deleteToLineEnd`](https://codemirror.net/6/docs/ref/#commands.deleteToLineEnd)\n - Ctrl-Alt-h: [`deleteGroupBackward`](https://codemirror.net/6/docs/ref/#commands.deleteGroupBackward)\n - Ctrl-o: [`splitLine`](https://codemirror.net/6/docs/ref/#commands.splitLine)\n - Ctrl-t: [`transposeChars`](https://codemirror.net/6/docs/ref/#commands.transposeChars)\n - Ctrl-v: [`cursorPageDown`](https://codemirror.net/6/docs/ref/#commands.cursorPageDown)\n - Alt-v: [`cursorPageUp`](https://codemirror.net/6/docs/ref/#commands.cursorPageUp)\n*/\nconst emacsStyleKeymap = [\n    { key: \"Ctrl-b\", run: cursorCharLeft, shift: selectCharLeft, preventDefault: true },\n    { key: \"Ctrl-f\", run: cursorCharRight, shift: selectCharRight },\n    { key: \"Ctrl-p\", run: cursorLineUp, shift: selectLineUp },\n    { key: \"Ctrl-n\", run: cursorLineDown, shift: selectLineDown },\n    { key: \"Ctrl-a\", run: cursorLineStart, shift: selectLineStart },\n    { key: \"Ctrl-e\", run: cursorLineEnd, shift: selectLineEnd },\n    { key: \"Ctrl-d\", run: deleteCharForward },\n    { key: \"Ctrl-h\", run: deleteCharBackward },\n    { key: \"Ctrl-k\", run: deleteToLineEnd },\n    { key: \"Ctrl-Alt-h\", run: deleteGroupBackward },\n    { key: \"Ctrl-o\", run: splitLine },\n    { key: \"Ctrl-t\", run: transposeChars },\n    { key: \"Ctrl-v\", run: cursorPageDown },\n];\n/**\nAn array of key bindings closely sticking to platform-standard or\nwidely used bindings. (This includes the bindings from\n[`emacsStyleKeymap`](https://codemirror.net/6/docs/ref/#commands.emacsStyleKeymap), with their `key`\nproperty changed to `mac`.)\n\n - ArrowLeft: [`cursorCharLeft`](https://codemirror.net/6/docs/ref/#commands.cursorCharLeft) ([`selectCharLeft`](https://codemirror.net/6/docs/ref/#commands.selectCharLeft) with Shift)\n - ArrowRight: [`cursorCharRight`](https://codemirror.net/6/docs/ref/#commands.cursorCharRight) ([`selectCharRight`](https://codemirror.net/6/docs/ref/#commands.selectCharRight) with Shift)\n - Ctrl-ArrowLeft (Alt-ArrowLeft on macOS): [`cursorGroupLeft`](https://codemirror.net/6/docs/ref/#commands.cursorGroupLeft) ([`selectGroupLeft`](https://codemirror.net/6/docs/ref/#commands.selectGroupLeft) with Shift)\n - Ctrl-ArrowRight (Alt-ArrowRight on macOS): [`cursorGroupRight`](https://codemirror.net/6/docs/ref/#commands.cursorGroupRight) ([`selectGroupRight`](https://codemirror.net/6/docs/ref/#commands.selectGroupRight) with Shift)\n - Cmd-ArrowLeft (on macOS): [`cursorLineStart`](https://codemirror.net/6/docs/ref/#commands.cursorLineStart) ([`selectLineStart`](https://codemirror.net/6/docs/ref/#commands.selectLineStart) with Shift)\n - Cmd-ArrowRight (on macOS): [`cursorLineEnd`](https://codemirror.net/6/docs/ref/#commands.cursorLineEnd) ([`selectLineEnd`](https://codemirror.net/6/docs/ref/#commands.selectLineEnd) with Shift)\n - ArrowUp: [`cursorLineUp`](https://codemirror.net/6/docs/ref/#commands.cursorLineUp) ([`selectLineUp`](https://codemirror.net/6/docs/ref/#commands.selectLineUp) with Shift)\n - ArrowDown: [`cursorLineDown`](https://codemirror.net/6/docs/ref/#commands.cursorLineDown) ([`selectLineDown`](https://codemirror.net/6/docs/ref/#commands.selectLineDown) with Shift)\n - Cmd-ArrowUp (on macOS): [`cursorDocStart`](https://codemirror.net/6/docs/ref/#commands.cursorDocStart) ([`selectDocStart`](https://codemirror.net/6/docs/ref/#commands.selectDocStart) with Shift)\n - Cmd-ArrowDown (on macOS): [`cursorDocEnd`](https://codemirror.net/6/docs/ref/#commands.cursorDocEnd) ([`selectDocEnd`](https://codemirror.net/6/docs/ref/#commands.selectDocEnd) with Shift)\n - Ctrl-ArrowUp (on macOS): [`cursorPageUp`](https://codemirror.net/6/docs/ref/#commands.cursorPageUp) ([`selectPageUp`](https://codemirror.net/6/docs/ref/#commands.selectPageUp) with Shift)\n - Ctrl-ArrowDown (on macOS): [`cursorPageDown`](https://codemirror.net/6/docs/ref/#commands.cursorPageDown) ([`selectPageDown`](https://codemirror.net/6/docs/ref/#commands.selectPageDown) with Shift)\n - PageUp: [`cursorPageUp`](https://codemirror.net/6/docs/ref/#commands.cursorPageUp) ([`selectPageUp`](https://codemirror.net/6/docs/ref/#commands.selectPageUp) with Shift)\n - PageDown: [`cursorPageDown`](https://codemirror.net/6/docs/ref/#commands.cursorPageDown) ([`selectPageDown`](https://codemirror.net/6/docs/ref/#commands.selectPageDown) with Shift)\n - Home: [`cursorLineBoundaryBackward`](https://codemirror.net/6/docs/ref/#commands.cursorLineBoundaryBackward) ([`selectLineBoundaryBackward`](https://codemirror.net/6/docs/ref/#commands.selectLineBoundaryBackward) with Shift)\n - End: [`cursorLineBoundaryForward`](https://codemirror.net/6/docs/ref/#commands.cursorLineBoundaryForward) ([`selectLineBoundaryForward`](https://codemirror.net/6/docs/ref/#commands.selectLineBoundaryForward) with Shift)\n - Ctrl-Home (Cmd-Home on macOS): [`cursorDocStart`](https://codemirror.net/6/docs/ref/#commands.cursorDocStart) ([`selectDocStart`](https://codemirror.net/6/docs/ref/#commands.selectDocStart) with Shift)\n - Ctrl-End (Cmd-Home on macOS): [`cursorDocEnd`](https://codemirror.net/6/docs/ref/#commands.cursorDocEnd) ([`selectDocEnd`](https://codemirror.net/6/docs/ref/#commands.selectDocEnd) with Shift)\n - Enter and Shift-Enter: [`insertNewlineAndIndent`](https://codemirror.net/6/docs/ref/#commands.insertNewlineAndIndent)\n - Ctrl-a (Cmd-a on macOS): [`selectAll`](https://codemirror.net/6/docs/ref/#commands.selectAll)\n - Backspace: [`deleteCharBackward`](https://codemirror.net/6/docs/ref/#commands.deleteCharBackward)\n - Delete: [`deleteCharForward`](https://codemirror.net/6/docs/ref/#commands.deleteCharForward)\n - Ctrl-Backspace (Alt-Backspace on macOS): [`deleteGroupBackward`](https://codemirror.net/6/docs/ref/#commands.deleteGroupBackward)\n - Ctrl-Delete (Alt-Delete on macOS): [`deleteGroupForward`](https://codemirror.net/6/docs/ref/#commands.deleteGroupForward)\n - Cmd-Backspace (macOS): [`deleteLineBoundaryBackward`](https://codemirror.net/6/docs/ref/#commands.deleteLineBoundaryBackward).\n - Cmd-Delete (macOS): [`deleteLineBoundaryForward`](https://codemirror.net/6/docs/ref/#commands.deleteLineBoundaryForward).\n*/\nconst standardKeymap = /*@__PURE__*/[\n    { key: \"ArrowLeft\", run: cursorCharLeft, shift: selectCharLeft, preventDefault: true },\n    { key: \"Mod-ArrowLeft\", mac: \"Alt-ArrowLeft\", run: cursorGroupLeft, shift: selectGroupLeft, preventDefault: true },\n    { mac: \"Cmd-ArrowLeft\", run: cursorLineBoundaryLeft, shift: selectLineBoundaryLeft, preventDefault: true },\n    { key: \"ArrowRight\", run: cursorCharRight, shift: selectCharRight, preventDefault: true },\n    { key: \"Mod-ArrowRight\", mac: \"Alt-ArrowRight\", run: cursorGroupRight, shift: selectGroupRight, preventDefault: true },\n    { mac: \"Cmd-ArrowRight\", run: cursorLineBoundaryRight, shift: selectLineBoundaryRight, preventDefault: true },\n    { key: \"ArrowUp\", run: cursorLineUp, shift: selectLineUp, preventDefault: true },\n    { mac: \"Cmd-ArrowUp\", run: cursorDocStart, shift: selectDocStart },\n    { mac: \"Ctrl-ArrowUp\", run: cursorPageUp, shift: selectPageUp },\n    { key: \"ArrowDown\", run: cursorLineDown, shift: selectLineDown, preventDefault: true },\n    { mac: \"Cmd-ArrowDown\", run: cursorDocEnd, shift: selectDocEnd },\n    { mac: \"Ctrl-ArrowDown\", run: cursorPageDown, shift: selectPageDown },\n    { key: \"PageUp\", run: cursorPageUp, shift: selectPageUp },\n    { key: \"PageDown\", run: cursorPageDown, shift: selectPageDown },\n    { key: \"Home\", run: cursorLineBoundaryBackward, shift: selectLineBoundaryBackward, preventDefault: true },\n    { key: \"Mod-Home\", run: cursorDocStart, shift: selectDocStart },\n    { key: \"End\", run: cursorLineBoundaryForward, shift: selectLineBoundaryForward, preventDefault: true },\n    { key: \"Mod-End\", run: cursorDocEnd, shift: selectDocEnd },\n    { key: \"Enter\", run: insertNewlineAndIndent, shift: insertNewlineAndIndent },\n    { key: \"Mod-a\", run: selectAll },\n    { key: \"Backspace\", run: deleteCharBackward, shift: deleteCharBackward },\n    { key: \"Delete\", run: deleteCharForward },\n    { key: \"Mod-Backspace\", mac: \"Alt-Backspace\", run: deleteGroupBackward },\n    { key: \"Mod-Delete\", mac: \"Alt-Delete\", run: deleteGroupForward },\n    { mac: \"Mod-Backspace\", run: deleteLineBoundaryBackward },\n    { mac: \"Mod-Delete\", run: deleteLineBoundaryForward }\n].concat(/*@__PURE__*/emacsStyleKeymap.map(b => ({ mac: b.key, run: b.run, shift: b.shift })));\n/**\nThe default keymap. Includes all bindings from\n[`standardKeymap`](https://codemirror.net/6/docs/ref/#commands.standardKeymap) plus the following:\n\n- Alt-ArrowLeft (Ctrl-ArrowLeft on macOS): [`cursorSyntaxLeft`](https://codemirror.net/6/docs/ref/#commands.cursorSyntaxLeft) ([`selectSyntaxLeft`](https://codemirror.net/6/docs/ref/#commands.selectSyntaxLeft) with Shift)\n- Alt-ArrowRight (Ctrl-ArrowRight on macOS): [`cursorSyntaxRight`](https://codemirror.net/6/docs/ref/#commands.cursorSyntaxRight) ([`selectSyntaxRight`](https://codemirror.net/6/docs/ref/#commands.selectSyntaxRight) with Shift)\n- Alt-ArrowUp: [`moveLineUp`](https://codemirror.net/6/docs/ref/#commands.moveLineUp)\n- Alt-ArrowDown: [`moveLineDown`](https://codemirror.net/6/docs/ref/#commands.moveLineDown)\n- Shift-Alt-ArrowUp: [`copyLineUp`](https://codemirror.net/6/docs/ref/#commands.copyLineUp)\n- Shift-Alt-ArrowDown: [`copyLineDown`](https://codemirror.net/6/docs/ref/#commands.copyLineDown)\n- Escape: [`simplifySelection`](https://codemirror.net/6/docs/ref/#commands.simplifySelection)\n- Ctrl-Enter (Cmd-Enter on macOS): [`insertBlankLine`](https://codemirror.net/6/docs/ref/#commands.insertBlankLine)\n- Alt-l (Ctrl-l on macOS): [`selectLine`](https://codemirror.net/6/docs/ref/#commands.selectLine)\n- Ctrl-i (Cmd-i on macOS): [`selectParentSyntax`](https://codemirror.net/6/docs/ref/#commands.selectParentSyntax)\n- Ctrl-[ (Cmd-[ on macOS): [`indentLess`](https://codemirror.net/6/docs/ref/#commands.indentLess)\n- Ctrl-] (Cmd-] on macOS): [`indentMore`](https://codemirror.net/6/docs/ref/#commands.indentMore)\n- Ctrl-Alt-\\\\ (Cmd-Alt-\\\\ on macOS): [`indentSelection`](https://codemirror.net/6/docs/ref/#commands.indentSelection)\n- Shift-Ctrl-k (Shift-Cmd-k on macOS): [`deleteLine`](https://codemirror.net/6/docs/ref/#commands.deleteLine)\n- Shift-Ctrl-\\\\ (Shift-Cmd-\\\\ on macOS): [`cursorMatchingBracket`](https://codemirror.net/6/docs/ref/#commands.cursorMatchingBracket)\n- Ctrl-/ (Cmd-/ on macOS): [`toggleComment`](https://codemirror.net/6/docs/ref/#commands.toggleComment).\n- Shift-Alt-a: [`toggleBlockComment`](https://codemirror.net/6/docs/ref/#commands.toggleBlockComment).\n- Ctrl-m (Alt-Shift-m on macOS): [`toggleTabFocusMode`](https://codemirror.net/6/docs/ref/#commands.toggleTabFocusMode).\n*/\nconst defaultKeymap = /*@__PURE__*/[\n    { key: \"Alt-ArrowLeft\", mac: \"Ctrl-ArrowLeft\", run: cursorSyntaxLeft, shift: selectSyntaxLeft },\n    { key: \"Alt-ArrowRight\", mac: \"Ctrl-ArrowRight\", run: cursorSyntaxRight, shift: selectSyntaxRight },\n    { key: \"Alt-ArrowUp\", run: moveLineUp },\n    { key: \"Shift-Alt-ArrowUp\", run: copyLineUp },\n    { key: \"Alt-ArrowDown\", run: moveLineDown },\n    { key: \"Shift-Alt-ArrowDown\", run: copyLineDown },\n    { key: \"Escape\", run: simplifySelection },\n    { key: \"Mod-Enter\", run: insertBlankLine },\n    { key: \"Alt-l\", mac: \"Ctrl-l\", run: selectLine },\n    { key: \"Mod-i\", run: selectParentSyntax, preventDefault: true },\n    { key: \"Mod-[\", run: indentLess },\n    { key: \"Mod-]\", run: indentMore },\n    { key: \"Mod-Alt-\\\\\", run: indentSelection },\n    { key: \"Shift-Mod-k\", run: deleteLine },\n    { key: \"Shift-Mod-\\\\\", run: cursorMatchingBracket },\n    { key: \"Mod-/\", run: toggleComment },\n    { key: \"Alt-A\", run: toggleBlockComment },\n    { key: \"Ctrl-m\", mac: \"Shift-Alt-m\", run: toggleTabFocusMode },\n].concat(standardKeymap);\n/**\nA binding that binds Tab to [`indentMore`](https://codemirror.net/6/docs/ref/#commands.indentMore) and\nShift-Tab to [`indentLess`](https://codemirror.net/6/docs/ref/#commands.indentLess).\nPlease see the [Tab example](../../examples/tab/) before using\nthis.\n*/\nconst indentWithTab = { key: \"Tab\", run: indentMore, shift: indentLess };\n\nexport { blockComment, blockUncomment, copyLineDown, copyLineUp, cursorCharBackward, cursorCharBackwardLogical, cursorCharForward, cursorCharForwardLogical, cursorCharLeft, cursorCharRight, cursorDocEnd, cursorDocStart, cursorGroupBackward, cursorGroupForward, cursorGroupForwardWin, cursorGroupLeft, cursorGroupRight, cursorLineBoundaryBackward, cursorLineBoundaryForward, cursorLineBoundaryLeft, cursorLineBoundaryRight, cursorLineDown, cursorLineEnd, cursorLineStart, cursorLineUp, cursorMatchingBracket, cursorPageDown, cursorPageUp, cursorSubwordBackward, cursorSubwordForward, cursorSyntaxLeft, cursorSyntaxRight, defaultKeymap, deleteCharBackward, deleteCharBackwardStrict, deleteCharForward, deleteGroupBackward, deleteGroupForward, deleteLine, deleteLineBoundaryBackward, deleteLineBoundaryForward, deleteToLineEnd, deleteToLineStart, deleteTrailingWhitespace, emacsStyleKeymap, history, historyField, historyKeymap, indentLess, indentMore, indentSelection, indentWithTab, insertBlankLine, insertNewline, insertNewlineAndIndent, insertNewlineKeepIndent, insertTab, invertedEffects, isolateHistory, lineComment, lineUncomment, moveLineDown, moveLineUp, redo, redoDepth, redoSelection, selectAll, selectCharBackward, selectCharBackwardLogical, selectCharForward, selectCharForwardLogical, selectCharLeft, selectCharRight, selectDocEnd, selectDocStart, selectGroupBackward, selectGroupForward, selectGroupForwardWin, selectGroupLeft, selectGroupRight, selectLine, selectLineBoundaryBackward, selectLineBoundaryForward, selectLineBoundaryLeft, selectLineBoundaryRight, selectLineDown, selectLineEnd, selectLineStart, selectLineUp, selectMatchingBracket, selectPageDown, selectPageUp, selectParentSyntax, selectSubwordBackward, selectSubwordForward, selectSyntaxLeft, selectSyntaxRight, simplifySelection, splitLine, standardKeymap, temporarilySetTabFocusMode, toggleBlockComment, toggleBlockCommentByLine, toggleComment, toggleLineComment, toggleTabFocusMode, transposeChars, undo, undoDepth, undoSelection };\n","import { showPanel, EditorView, getPanel, Decoration, ViewPlugin, runScopeHandlers } from '@codemirror/view';\nimport { codePointAt, fromCodePoint, codePointSize, StateEffect, StateField, EditorSelection, Facet, combineConfig, CharCategory, RangeSetBuilder, Prec, EditorState, findClusterBreak } from '@codemirror/state';\nimport elt from 'crelt';\n\nconst basicNormalize = typeof String.prototype.normalize == \"function\"\n    ? x => x.normalize(\"NFKD\") : x => x;\n/**\nA search cursor provides an iterator over text matches in a\ndocument.\n*/\nclass SearchCursor {\n    /**\n    Create a text cursor. The query is the search string, `from` to\n    `to` provides the region to search.\n    \n    When `normalize` is given, it will be called, on both the query\n    string and the content it is matched against, before comparing.\n    You can, for example, create a case-insensitive search by\n    passing `s => s.toLowerCase()`.\n    \n    Text is always normalized with\n    [`.normalize(\"NFKD\")`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/normalize)\n    (when supported).\n    */\n    constructor(text, query, from = 0, to = text.length, normalize, test) {\n        this.test = test;\n        /**\n        The current match (only holds a meaningful value after\n        [`next`](https://codemirror.net/6/docs/ref/#search.SearchCursor.next) has been called and when\n        `done` is false).\n        */\n        this.value = { from: 0, to: 0 };\n        /**\n        Whether the end of the iterated region has been reached.\n        */\n        this.done = false;\n        this.matches = [];\n        this.buffer = \"\";\n        this.bufferPos = 0;\n        this.iter = text.iterRange(from, to);\n        this.bufferStart = from;\n        this.normalize = normalize ? x => normalize(basicNormalize(x)) : basicNormalize;\n        this.query = this.normalize(query);\n    }\n    peek() {\n        if (this.bufferPos == this.buffer.length) {\n            this.bufferStart += this.buffer.length;\n            this.iter.next();\n            if (this.iter.done)\n                return -1;\n            this.bufferPos = 0;\n            this.buffer = this.iter.value;\n        }\n        return codePointAt(this.buffer, this.bufferPos);\n    }\n    /**\n    Look for the next match. Updates the iterator's\n    [`value`](https://codemirror.net/6/docs/ref/#search.SearchCursor.value) and\n    [`done`](https://codemirror.net/6/docs/ref/#search.SearchCursor.done) properties. Should be called\n    at least once before using the cursor.\n    */\n    next() {\n        while (this.matches.length)\n            this.matches.pop();\n        return this.nextOverlapping();\n    }\n    /**\n    The `next` method will ignore matches that partially overlap a\n    previous match. This method behaves like `next`, but includes\n    such matches.\n    */\n    nextOverlapping() {\n        for (;;) {\n            let next = this.peek();\n            if (next < 0) {\n                this.done = true;\n                return this;\n            }\n            let str = fromCodePoint(next), start = this.bufferStart + this.bufferPos;\n            this.bufferPos += codePointSize(next);\n            let norm = this.normalize(str);\n            if (norm.length)\n                for (let i = 0, pos = start;; i++) {\n                    let code = norm.charCodeAt(i);\n                    let match = this.match(code, pos, this.bufferPos + this.bufferStart);\n                    if (i == norm.length - 1) {\n                        if (match) {\n                            this.value = match;\n                            return this;\n                        }\n                        break;\n                    }\n                    if (pos == start && i < str.length && str.charCodeAt(i) == code)\n                        pos++;\n                }\n        }\n    }\n    match(code, pos, end) {\n        let match = null;\n        for (let i = 0; i < this.matches.length; i += 2) {\n            let index = this.matches[i], keep = false;\n            if (this.query.charCodeAt(index) == code) {\n                if (index == this.query.length - 1) {\n                    match = { from: this.matches[i + 1], to: end };\n                }\n                else {\n                    this.matches[i]++;\n                    keep = true;\n                }\n            }\n            if (!keep) {\n                this.matches.splice(i, 2);\n                i -= 2;\n            }\n        }\n        if (this.query.charCodeAt(0) == code) {\n            if (this.query.length == 1)\n                match = { from: pos, to: end };\n            else\n                this.matches.push(1, pos);\n        }\n        if (match && this.test && !this.test(match.from, match.to, this.buffer, this.bufferStart))\n            match = null;\n        return match;\n    }\n}\nif (typeof Symbol != \"undefined\")\n    SearchCursor.prototype[Symbol.iterator] = function () { return this; };\n\nconst empty = { from: -1, to: -1, match: /*@__PURE__*//.*/.exec(\"\") };\nconst baseFlags = \"gm\" + (/x/.unicode == null ? \"\" : \"u\");\n/**\nThis class is similar to [`SearchCursor`](https://codemirror.net/6/docs/ref/#search.SearchCursor)\nbut searches for a regular expression pattern instead of a plain\nstring.\n*/\nclass RegExpCursor {\n    /**\n    Create a cursor that will search the given range in the given\n    document. `query` should be the raw pattern (as you'd pass it to\n    `new RegExp`).\n    */\n    constructor(text, query, options, from = 0, to = text.length) {\n        this.text = text;\n        this.to = to;\n        this.curLine = \"\";\n        /**\n        Set to `true` when the cursor has reached the end of the search\n        range.\n        */\n        this.done = false;\n        /**\n        Will contain an object with the extent of the match and the\n        match object when [`next`](https://codemirror.net/6/docs/ref/#search.RegExpCursor.next)\n        sucessfully finds a match.\n        */\n        this.value = empty;\n        if (/\\\\[sWDnr]|\\n|\\r|\\[\\^/.test(query))\n            return new MultilineRegExpCursor(text, query, options, from, to);\n        this.re = new RegExp(query, baseFlags + ((options === null || options === void 0 ? void 0 : options.ignoreCase) ? \"i\" : \"\"));\n        this.test = options === null || options === void 0 ? void 0 : options.test;\n        this.iter = text.iter();\n        let startLine = text.lineAt(from);\n        this.curLineStart = startLine.from;\n        this.matchPos = toCharEnd(text, from);\n        this.getLine(this.curLineStart);\n    }\n    getLine(skip) {\n        this.iter.next(skip);\n        if (this.iter.lineBreak) {\n            this.curLine = \"\";\n        }\n        else {\n            this.curLine = this.iter.value;\n            if (this.curLineStart + this.curLine.length > this.to)\n                this.curLine = this.curLine.slice(0, this.to - this.curLineStart);\n            this.iter.next();\n        }\n    }\n    nextLine() {\n        this.curLineStart = this.curLineStart + this.curLine.length + 1;\n        if (this.curLineStart > this.to)\n            this.curLine = \"\";\n        else\n            this.getLine(0);\n    }\n    /**\n    Move to the next match, if there is one.\n    */\n    next() {\n        for (let off = this.matchPos - this.curLineStart;;) {\n            this.re.lastIndex = off;\n            let match = this.matchPos <= this.to && this.re.exec(this.curLine);\n            if (match) {\n                let from = this.curLineStart + match.index, to = from + match[0].length;\n                this.matchPos = toCharEnd(this.text, to + (from == to ? 1 : 0));\n                if (from == this.curLineStart + this.curLine.length)\n                    this.nextLine();\n                if ((from < to || from > this.value.to) && (!this.test || this.test(from, to, match))) {\n                    this.value = { from, to, match };\n                    return this;\n                }\n                off = this.matchPos - this.curLineStart;\n            }\n            else if (this.curLineStart + this.curLine.length < this.to) {\n                this.nextLine();\n                off = 0;\n            }\n            else {\n                this.done = true;\n                return this;\n            }\n        }\n    }\n}\nconst flattened = /*@__PURE__*/new WeakMap();\n// Reusable (partially) flattened document strings\nclass FlattenedDoc {\n    constructor(from, text) {\n        this.from = from;\n        this.text = text;\n    }\n    get to() { return this.from + this.text.length; }\n    static get(doc, from, to) {\n        let cached = flattened.get(doc);\n        if (!cached || cached.from >= to || cached.to <= from) {\n            let flat = new FlattenedDoc(from, doc.sliceString(from, to));\n            flattened.set(doc, flat);\n            return flat;\n        }\n        if (cached.from == from && cached.to == to)\n            return cached;\n        let { text, from: cachedFrom } = cached;\n        if (cachedFrom > from) {\n            text = doc.sliceString(from, cachedFrom) + text;\n            cachedFrom = from;\n        }\n        if (cached.to < to)\n            text += doc.sliceString(cached.to, to);\n        flattened.set(doc, new FlattenedDoc(cachedFrom, text));\n        return new FlattenedDoc(from, text.slice(from - cachedFrom, to - cachedFrom));\n    }\n}\nclass MultilineRegExpCursor {\n    constructor(text, query, options, from, to) {\n        this.text = text;\n        this.to = to;\n        this.done = false;\n        this.value = empty;\n        this.matchPos = toCharEnd(text, from);\n        this.re = new RegExp(query, baseFlags + ((options === null || options === void 0 ? void 0 : options.ignoreCase) ? \"i\" : \"\"));\n        this.test = options === null || options === void 0 ? void 0 : options.test;\n        this.flat = FlattenedDoc.get(text, from, this.chunkEnd(from + 5000 /* Chunk.Base */));\n    }\n    chunkEnd(pos) {\n        return pos >= this.to ? this.to : this.text.lineAt(pos).to;\n    }\n    next() {\n        for (;;) {\n            let off = this.re.lastIndex = this.matchPos - this.flat.from;\n            let match = this.re.exec(this.flat.text);\n            // Skip empty matches directly after the last match\n            if (match && !match[0] && match.index == off) {\n                this.re.lastIndex = off + 1;\n                match = this.re.exec(this.flat.text);\n            }\n            if (match) {\n                let from = this.flat.from + match.index, to = from + match[0].length;\n                // If a match goes almost to the end of a noncomplete chunk, try\n                // again, since it'll likely be able to match more\n                if ((this.flat.to >= this.to || match.index + match[0].length <= this.flat.text.length - 10) &&\n                    (!this.test || this.test(from, to, match))) {\n                    this.value = { from, to, match };\n                    this.matchPos = toCharEnd(this.text, to + (from == to ? 1 : 0));\n                    return this;\n                }\n            }\n            if (this.flat.to == this.to) {\n                this.done = true;\n                return this;\n            }\n            // Grow the flattened doc\n            this.flat = FlattenedDoc.get(this.text, this.flat.from, this.chunkEnd(this.flat.from + this.flat.text.length * 2));\n        }\n    }\n}\nif (typeof Symbol != \"undefined\") {\n    RegExpCursor.prototype[Symbol.iterator] = MultilineRegExpCursor.prototype[Symbol.iterator] =\n        function () { return this; };\n}\nfunction validRegExp(source) {\n    try {\n        new RegExp(source, baseFlags);\n        return true;\n    }\n    catch (_a) {\n        return false;\n    }\n}\nfunction toCharEnd(text, pos) {\n    if (pos >= text.length)\n        return pos;\n    let line = text.lineAt(pos), next;\n    while (pos < line.to && (next = line.text.charCodeAt(pos - line.from)) >= 0xDC00 && next < 0xE000)\n        pos++;\n    return pos;\n}\n\nfunction createLineDialog(view) {\n    let line = String(view.state.doc.lineAt(view.state.selection.main.head).number);\n    let input = elt(\"input\", { class: \"cm-textfield\", name: \"line\", value: line });\n    let dom = elt(\"form\", {\n        class: \"cm-gotoLine\",\n        onkeydown: (event) => {\n            if (event.keyCode == 27) { // Escape\n                event.preventDefault();\n                view.dispatch({ effects: dialogEffect.of(false) });\n                view.focus();\n            }\n            else if (event.keyCode == 13) { // Enter\n                event.preventDefault();\n                go();\n            }\n        },\n        onsubmit: (event) => {\n            event.preventDefault();\n            go();\n        }\n    }, elt(\"label\", view.state.phrase(\"Go to line\"), \": \", input), \" \", elt(\"button\", { class: \"cm-button\", type: \"submit\" }, view.state.phrase(\"go\")), elt(\"button\", {\n        name: \"close\",\n        onclick: () => {\n            view.dispatch({ effects: dialogEffect.of(false) });\n            view.focus();\n        },\n        \"aria-label\": view.state.phrase(\"close\"),\n        type: \"button\"\n    }, [\"×\"]));\n    function go() {\n        let match = /^([+-])?(\\d+)?(:\\d+)?(%)?$/.exec(input.value);\n        if (!match)\n            return;\n        let { state } = view, startLine = state.doc.lineAt(state.selection.main.head);\n        let [, sign, ln, cl, percent] = match;\n        let col = cl ? +cl.slice(1) : 0;\n        let line = ln ? +ln : startLine.number;\n        if (ln && percent) {\n            let pc = line / 100;\n            if (sign)\n                pc = pc * (sign == \"-\" ? -1 : 1) + (startLine.number / state.doc.lines);\n            line = Math.round(state.doc.lines * pc);\n        }\n        else if (ln && sign) {\n            line = line * (sign == \"-\" ? -1 : 1) + startLine.number;\n        }\n        let docLine = state.doc.line(Math.max(1, Math.min(state.doc.lines, line)));\n        let selection = EditorSelection.cursor(docLine.from + Math.max(0, Math.min(col, docLine.length)));\n        view.dispatch({\n            effects: [dialogEffect.of(false), EditorView.scrollIntoView(selection.from, { y: 'center' })],\n            selection,\n        });\n        view.focus();\n    }\n    return { dom };\n}\nconst dialogEffect = /*@__PURE__*/StateEffect.define();\nconst dialogField = /*@__PURE__*/StateField.define({\n    create() { return true; },\n    update(value, tr) {\n        for (let e of tr.effects)\n            if (e.is(dialogEffect))\n                value = e.value;\n        return value;\n    },\n    provide: f => showPanel.from(f, val => val ? createLineDialog : null)\n});\n/**\nCommand that shows a dialog asking the user for a line number, and\nwhen a valid position is provided, moves the cursor to that line.\n\nSupports line numbers, relative line offsets prefixed with `+` or\n`-`, document percentages suffixed with `%`, and an optional\ncolumn position by adding `:` and a second number after the line\nnumber.\n*/\nconst gotoLine = view => {\n    let panel = getPanel(view, createLineDialog);\n    if (!panel) {\n        let effects = [dialogEffect.of(true)];\n        if (view.state.field(dialogField, false) == null)\n            effects.push(StateEffect.appendConfig.of([dialogField, baseTheme$1]));\n        view.dispatch({ effects });\n        panel = getPanel(view, createLineDialog);\n    }\n    if (panel)\n        panel.dom.querySelector(\"input\").select();\n    return true;\n};\nconst baseTheme$1 = /*@__PURE__*/EditorView.baseTheme({\n    \".cm-panel.cm-gotoLine\": {\n        padding: \"2px 6px 4px\",\n        position: \"relative\",\n        \"& label\": { fontSize: \"80%\" },\n        \"& [name=close]\": {\n            position: \"absolute\",\n            top: \"0\", bottom: \"0\",\n            right: \"4px\",\n            backgroundColor: \"inherit\",\n            border: \"none\",\n            font: \"inherit\",\n            padding: \"0\"\n        }\n    }\n});\n\nconst defaultHighlightOptions = {\n    highlightWordAroundCursor: false,\n    minSelectionLength: 1,\n    maxMatches: 100,\n    wholeWords: false\n};\nconst highlightConfig = /*@__PURE__*/Facet.define({\n    combine(options) {\n        return combineConfig(options, defaultHighlightOptions, {\n            highlightWordAroundCursor: (a, b) => a || b,\n            minSelectionLength: Math.min,\n            maxMatches: Math.min\n        });\n    }\n});\n/**\nThis extension highlights text that matches the selection. It uses\nthe `\"cm-selectionMatch\"` class for the highlighting. When\n`highlightWordAroundCursor` is enabled, the word at the cursor\nitself will be highlighted with `\"cm-selectionMatch-main\"`.\n*/\nfunction highlightSelectionMatches(options) {\n    let ext = [defaultTheme, matchHighlighter];\n    if (options)\n        ext.push(highlightConfig.of(options));\n    return ext;\n}\nconst matchDeco = /*@__PURE__*/Decoration.mark({ class: \"cm-selectionMatch\" });\nconst mainMatchDeco = /*@__PURE__*/Decoration.mark({ class: \"cm-selectionMatch cm-selectionMatch-main\" });\n// Whether the characters directly outside the given positions are non-word characters\nfunction insideWordBoundaries(check, state, from, to) {\n    return (from == 0 || check(state.sliceDoc(from - 1, from)) != CharCategory.Word) &&\n        (to == state.doc.length || check(state.sliceDoc(to, to + 1)) != CharCategory.Word);\n}\n// Whether the characters directly at the given positions are word characters\nfunction insideWord(check, state, from, to) {\n    return check(state.sliceDoc(from, from + 1)) == CharCategory.Word\n        && check(state.sliceDoc(to - 1, to)) == CharCategory.Word;\n}\nconst matchHighlighter = /*@__PURE__*/ViewPlugin.fromClass(class {\n    constructor(view) {\n        this.decorations = this.getDeco(view);\n    }\n    update(update) {\n        if (update.selectionSet || update.docChanged || update.viewportChanged)\n            this.decorations = this.getDeco(update.view);\n    }\n    getDeco(view) {\n        let conf = view.state.facet(highlightConfig);\n        let { state } = view, sel = state.selection;\n        if (sel.ranges.length > 1)\n            return Decoration.none;\n        let range = sel.main, query, check = null;\n        if (range.empty) {\n            if (!conf.highlightWordAroundCursor)\n                return Decoration.none;\n            let word = state.wordAt(range.head);\n            if (!word)\n                return Decoration.none;\n            check = state.charCategorizer(range.head);\n            query = state.sliceDoc(word.from, word.to);\n        }\n        else {\n            let len = range.to - range.from;\n            if (len < conf.minSelectionLength || len > 200)\n                return Decoration.none;\n            if (conf.wholeWords) {\n                query = state.sliceDoc(range.from, range.to); // TODO: allow and include leading/trailing space?\n                check = state.charCategorizer(range.head);\n                if (!(insideWordBoundaries(check, state, range.from, range.to) &&\n                    insideWord(check, state, range.from, range.to)))\n                    return Decoration.none;\n            }\n            else {\n                query = state.sliceDoc(range.from, range.to);\n                if (!query)\n                    return Decoration.none;\n            }\n        }\n        let deco = [];\n        for (let part of view.visibleRanges) {\n            let cursor = new SearchCursor(state.doc, query, part.from, part.to);\n            while (!cursor.next().done) {\n                let { from, to } = cursor.value;\n                if (!check || insideWordBoundaries(check, state, from, to)) {\n                    if (range.empty && from <= range.from && to >= range.to)\n                        deco.push(mainMatchDeco.range(from, to));\n                    else if (from >= range.to || to <= range.from)\n                        deco.push(matchDeco.range(from, to));\n                    if (deco.length > conf.maxMatches)\n                        return Decoration.none;\n                }\n            }\n        }\n        return Decoration.set(deco);\n    }\n}, {\n    decorations: v => v.decorations\n});\nconst defaultTheme = /*@__PURE__*/EditorView.baseTheme({\n    \".cm-selectionMatch\": { backgroundColor: \"#99ff7780\" },\n    \".cm-searchMatch .cm-selectionMatch\": { backgroundColor: \"transparent\" }\n});\n// Select the words around the cursors.\nconst selectWord = ({ state, dispatch }) => {\n    let { selection } = state;\n    let newSel = EditorSelection.create(selection.ranges.map(range => state.wordAt(range.head) || EditorSelection.cursor(range.head)), selection.mainIndex);\n    if (newSel.eq(selection))\n        return false;\n    dispatch(state.update({ selection: newSel }));\n    return true;\n};\n// Find next occurrence of query relative to last cursor. Wrap around\n// the document if there are no more matches.\nfunction findNextOccurrence(state, query) {\n    let { main, ranges } = state.selection;\n    let word = state.wordAt(main.head), fullWord = word && word.from == main.from && word.to == main.to;\n    for (let cycled = false, cursor = new SearchCursor(state.doc, query, ranges[ranges.length - 1].to);;) {\n        cursor.next();\n        if (cursor.done) {\n            if (cycled)\n                return null;\n            cursor = new SearchCursor(state.doc, query, 0, Math.max(0, ranges[ranges.length - 1].from - 1));\n            cycled = true;\n        }\n        else {\n            if (cycled && ranges.some(r => r.from == cursor.value.from))\n                continue;\n            if (fullWord) {\n                let word = state.wordAt(cursor.value.from);\n                if (!word || word.from != cursor.value.from || word.to != cursor.value.to)\n                    continue;\n            }\n            return cursor.value;\n        }\n    }\n}\n/**\nSelect next occurrence of the current selection. Expand selection\nto the surrounding word when the selection is empty.\n*/\nconst selectNextOccurrence = ({ state, dispatch }) => {\n    let { ranges } = state.selection;\n    if (ranges.some(sel => sel.from === sel.to))\n        return selectWord({ state, dispatch });\n    let searchedText = state.sliceDoc(ranges[0].from, ranges[0].to);\n    if (state.selection.ranges.some(r => state.sliceDoc(r.from, r.to) != searchedText))\n        return false;\n    let range = findNextOccurrence(state, searchedText);\n    if (!range)\n        return false;\n    dispatch(state.update({\n        selection: state.selection.addRange(EditorSelection.range(range.from, range.to), false),\n        effects: EditorView.scrollIntoView(range.to)\n    }));\n    return true;\n};\n\nconst searchConfigFacet = /*@__PURE__*/Facet.define({\n    combine(configs) {\n        return combineConfig(configs, {\n            top: false,\n            caseSensitive: false,\n            literal: false,\n            regexp: false,\n            wholeWord: false,\n            createPanel: view => new SearchPanel(view),\n            scrollToMatch: range => EditorView.scrollIntoView(range)\n        });\n    }\n});\n/**\nAdd search state to the editor configuration, and optionally\nconfigure the search extension.\n([`openSearchPanel`](https://codemirror.net/6/docs/ref/#search.openSearchPanel) will automatically\nenable this if it isn't already on).\n*/\nfunction search(config) {\n    return config ? [searchConfigFacet.of(config), searchExtensions] : searchExtensions;\n}\n/**\nA search query. Part of the editor's search state.\n*/\nclass SearchQuery {\n    /**\n    Create a query object.\n    */\n    constructor(config) {\n        this.search = config.search;\n        this.caseSensitive = !!config.caseSensitive;\n        this.literal = !!config.literal;\n        this.regexp = !!config.regexp;\n        this.replace = config.replace || \"\";\n        this.valid = !!this.search && (!this.regexp || validRegExp(this.search));\n        this.unquoted = this.unquote(this.search);\n        this.wholeWord = !!config.wholeWord;\n    }\n    /**\n    @internal\n    */\n    unquote(text) {\n        return this.literal ? text :\n            text.replace(/\\\\([nrt\\\\])/g, (_, ch) => ch == \"n\" ? \"\\n\" : ch == \"r\" ? \"\\r\" : ch == \"t\" ? \"\\t\" : \"\\\\\");\n    }\n    /**\n    Compare this query to another query.\n    */\n    eq(other) {\n        return this.search == other.search && this.replace == other.replace &&\n            this.caseSensitive == other.caseSensitive && this.regexp == other.regexp &&\n            this.wholeWord == other.wholeWord;\n    }\n    /**\n    @internal\n    */\n    create() {\n        return this.regexp ? new RegExpQuery(this) : new StringQuery(this);\n    }\n    /**\n    Get a search cursor for this query, searching through the given\n    range in the given state.\n    */\n    getCursor(state, from = 0, to) {\n        let st = state.doc ? state : EditorState.create({ doc: state });\n        if (to == null)\n            to = st.doc.length;\n        return this.regexp ? regexpCursor(this, st, from, to) : stringCursor(this, st, from, to);\n    }\n}\nclass QueryType {\n    constructor(spec) {\n        this.spec = spec;\n    }\n}\nfunction stringCursor(spec, state, from, to) {\n    return new SearchCursor(state.doc, spec.unquoted, from, to, spec.caseSensitive ? undefined : x => x.toLowerCase(), spec.wholeWord ? stringWordTest(state.doc, state.charCategorizer(state.selection.main.head)) : undefined);\n}\nfunction stringWordTest(doc, categorizer) {\n    return (from, to, buf, bufPos) => {\n        if (bufPos > from || bufPos + buf.length < to) {\n            bufPos = Math.max(0, from - 2);\n            buf = doc.sliceString(bufPos, Math.min(doc.length, to + 2));\n        }\n        return (categorizer(charBefore(buf, from - bufPos)) != CharCategory.Word ||\n            categorizer(charAfter(buf, from - bufPos)) != CharCategory.Word) &&\n            (categorizer(charAfter(buf, to - bufPos)) != CharCategory.Word ||\n                categorizer(charBefore(buf, to - bufPos)) != CharCategory.Word);\n    };\n}\nclass StringQuery extends QueryType {\n    constructor(spec) {\n        super(spec);\n    }\n    nextMatch(state, curFrom, curTo) {\n        let cursor = stringCursor(this.spec, state, curTo, state.doc.length).nextOverlapping();\n        if (cursor.done) {\n            let end = Math.min(state.doc.length, curFrom + this.spec.unquoted.length);\n            cursor = stringCursor(this.spec, state, 0, end).nextOverlapping();\n        }\n        return cursor.done || cursor.value.from == curFrom && cursor.value.to == curTo ? null : cursor.value;\n    }\n    // Searching in reverse is, rather than implementing an inverted search\n    // cursor, done by scanning chunk after chunk forward.\n    prevMatchInRange(state, from, to) {\n        for (let pos = to;;) {\n            let start = Math.max(from, pos - 10000 /* FindPrev.ChunkSize */ - this.spec.unquoted.length);\n            let cursor = stringCursor(this.spec, state, start, pos), range = null;\n            while (!cursor.nextOverlapping().done)\n                range = cursor.value;\n            if (range)\n                return range;\n            if (start == from)\n                return null;\n            pos -= 10000 /* FindPrev.ChunkSize */;\n        }\n    }\n    prevMatch(state, curFrom, curTo) {\n        let found = this.prevMatchInRange(state, 0, curFrom);\n        if (!found)\n            found = this.prevMatchInRange(state, Math.max(0, curTo - this.spec.unquoted.length), state.doc.length);\n        return found && (found.from != curFrom || found.to != curTo) ? found : null;\n    }\n    getReplacement(_result) { return this.spec.unquote(this.spec.replace); }\n    matchAll(state, limit) {\n        let cursor = stringCursor(this.spec, state, 0, state.doc.length), ranges = [];\n        while (!cursor.next().done) {\n            if (ranges.length >= limit)\n                return null;\n            ranges.push(cursor.value);\n        }\n        return ranges;\n    }\n    highlight(state, from, to, add) {\n        let cursor = stringCursor(this.spec, state, Math.max(0, from - this.spec.unquoted.length), Math.min(to + this.spec.unquoted.length, state.doc.length));\n        while (!cursor.next().done)\n            add(cursor.value.from, cursor.value.to);\n    }\n}\nfunction regexpCursor(spec, state, from, to) {\n    return new RegExpCursor(state.doc, spec.search, {\n        ignoreCase: !spec.caseSensitive,\n        test: spec.wholeWord ? regexpWordTest(state.charCategorizer(state.selection.main.head)) : undefined\n    }, from, to);\n}\nfunction charBefore(str, index) {\n    return str.slice(findClusterBreak(str, index, false), index);\n}\nfunction charAfter(str, index) {\n    return str.slice(index, findClusterBreak(str, index));\n}\nfunction regexpWordTest(categorizer) {\n    return (_from, _to, match) => !match[0].length ||\n        (categorizer(charBefore(match.input, match.index)) != CharCategory.Word ||\n            categorizer(charAfter(match.input, match.index)) != CharCategory.Word) &&\n            (categorizer(charAfter(match.input, match.index + match[0].length)) != CharCategory.Word ||\n                categorizer(charBefore(match.input, match.index + match[0].length)) != CharCategory.Word);\n}\nclass RegExpQuery extends QueryType {\n    nextMatch(state, curFrom, curTo) {\n        let cursor = regexpCursor(this.spec, state, curTo, state.doc.length).next();\n        if (cursor.done)\n            cursor = regexpCursor(this.spec, state, 0, curFrom).next();\n        return cursor.done ? null : cursor.value;\n    }\n    prevMatchInRange(state, from, to) {\n        for (let size = 1;; size++) {\n            let start = Math.max(from, to - size * 10000 /* FindPrev.ChunkSize */);\n            let cursor = regexpCursor(this.spec, state, start, to), range = null;\n            while (!cursor.next().done)\n                range = cursor.value;\n            if (range && (start == from || range.from > start + 10))\n                return range;\n            if (start == from)\n                return null;\n        }\n    }\n    prevMatch(state, curFrom, curTo) {\n        return this.prevMatchInRange(state, 0, curFrom) ||\n            this.prevMatchInRange(state, curTo, state.doc.length);\n    }\n    getReplacement(result) {\n        return this.spec.unquote(this.spec.replace).replace(/\\$([$&]|\\d+)/g, (m, i) => {\n            if (i == \"&\")\n                return result.match[0];\n            if (i == \"$\")\n                return \"$\";\n            for (let l = i.length; l > 0; l--) {\n                let n = +i.slice(0, l);\n                if (n > 0 && n < result.match.length)\n                    return result.match[n] + i.slice(l);\n            }\n            return m;\n        });\n    }\n    matchAll(state, limit) {\n        let cursor = regexpCursor(this.spec, state, 0, state.doc.length), ranges = [];\n        while (!cursor.next().done) {\n            if (ranges.length >= limit)\n                return null;\n            ranges.push(cursor.value);\n        }\n        return ranges;\n    }\n    highlight(state, from, to, add) {\n        let cursor = regexpCursor(this.spec, state, Math.max(0, from - 250 /* RegExp.HighlightMargin */), Math.min(to + 250 /* RegExp.HighlightMargin */, state.doc.length));\n        while (!cursor.next().done)\n            add(cursor.value.from, cursor.value.to);\n    }\n}\n/**\nA state effect that updates the current search query. Note that\nthis only has an effect if the search state has been initialized\n(by including [`search`](https://codemirror.net/6/docs/ref/#search.search) in your configuration or\nby running [`openSearchPanel`](https://codemirror.net/6/docs/ref/#search.openSearchPanel) at least\nonce).\n*/\nconst setSearchQuery = /*@__PURE__*/StateEffect.define();\nconst togglePanel = /*@__PURE__*/StateEffect.define();\nconst searchState = /*@__PURE__*/StateField.define({\n    create(state) {\n        return new SearchState(defaultQuery(state).create(), null);\n    },\n    update(value, tr) {\n        for (let effect of tr.effects) {\n            if (effect.is(setSearchQuery))\n                value = new SearchState(effect.value.create(), value.panel);\n            else if (effect.is(togglePanel))\n                value = new SearchState(value.query, effect.value ? createSearchPanel : null);\n        }\n        return value;\n    },\n    provide: f => showPanel.from(f, val => val.panel)\n});\n/**\nGet the current search query from an editor state.\n*/\nfunction getSearchQuery(state) {\n    let curState = state.field(searchState, false);\n    return curState ? curState.query.spec : defaultQuery(state);\n}\n/**\nQuery whether the search panel is open in the given editor state.\n*/\nfunction searchPanelOpen(state) {\n    var _a;\n    return ((_a = state.field(searchState, false)) === null || _a === void 0 ? void 0 : _a.panel) != null;\n}\nclass SearchState {\n    constructor(query, panel) {\n        this.query = query;\n        this.panel = panel;\n    }\n}\nconst matchMark = /*@__PURE__*/Decoration.mark({ class: \"cm-searchMatch\" }), selectedMatchMark = /*@__PURE__*/Decoration.mark({ class: \"cm-searchMatch cm-searchMatch-selected\" });\nconst searchHighlighter = /*@__PURE__*/ViewPlugin.fromClass(class {\n    constructor(view) {\n        this.view = view;\n        this.decorations = this.highlight(view.state.field(searchState));\n    }\n    update(update) {\n        let state = update.state.field(searchState);\n        if (state != update.startState.field(searchState) || update.docChanged || update.selectionSet || update.viewportChanged)\n            this.decorations = this.highlight(state);\n    }\n    highlight({ query, panel }) {\n        if (!panel || !query.spec.valid)\n            return Decoration.none;\n        let { view } = this;\n        let builder = new RangeSetBuilder();\n        for (let i = 0, ranges = view.visibleRanges, l = ranges.length; i < l; i++) {\n            let { from, to } = ranges[i];\n            while (i < l - 1 && to > ranges[i + 1].from - 2 * 250 /* RegExp.HighlightMargin */)\n                to = ranges[++i].to;\n            query.highlight(view.state, from, to, (from, to) => {\n                let selected = view.state.selection.ranges.some(r => r.from == from && r.to == to);\n                builder.add(from, to, selected ? selectedMatchMark : matchMark);\n            });\n        }\n        return builder.finish();\n    }\n}, {\n    decorations: v => v.decorations\n});\nfunction searchCommand(f) {\n    return view => {\n        let state = view.state.field(searchState, false);\n        return state && state.query.spec.valid ? f(view, state) : openSearchPanel(view);\n    };\n}\n/**\nOpen the search panel if it isn't already open, and move the\nselection to the first match after the current main selection.\nWill wrap around to the start of the document when it reaches the\nend.\n*/\nconst findNext = /*@__PURE__*/searchCommand((view, { query }) => {\n    let { to } = view.state.selection.main;\n    let next = query.nextMatch(view.state, to, to);\n    if (!next)\n        return false;\n    let selection = EditorSelection.single(next.from, next.to);\n    let config = view.state.facet(searchConfigFacet);\n    view.dispatch({\n        selection,\n        effects: [announceMatch(view, next), config.scrollToMatch(selection.main, view)],\n        userEvent: \"select.search\"\n    });\n    selectSearchInput(view);\n    return true;\n});\n/**\nMove the selection to the previous instance of the search query,\nbefore the current main selection. Will wrap past the start\nof the document to start searching at the end again.\n*/\nconst findPrevious = /*@__PURE__*/searchCommand((view, { query }) => {\n    let { state } = view, { from } = state.selection.main;\n    let prev = query.prevMatch(state, from, from);\n    if (!prev)\n        return false;\n    let selection = EditorSelection.single(prev.from, prev.to);\n    let config = view.state.facet(searchConfigFacet);\n    view.dispatch({\n        selection,\n        effects: [announceMatch(view, prev), config.scrollToMatch(selection.main, view)],\n        userEvent: \"select.search\"\n    });\n    selectSearchInput(view);\n    return true;\n});\n/**\nSelect all instances of the search query.\n*/\nconst selectMatches = /*@__PURE__*/searchCommand((view, { query }) => {\n    let ranges = query.matchAll(view.state, 1000);\n    if (!ranges || !ranges.length)\n        return false;\n    view.dispatch({\n        selection: EditorSelection.create(ranges.map(r => EditorSelection.range(r.from, r.to))),\n        userEvent: \"select.search.matches\"\n    });\n    return true;\n});\n/**\nSelect all instances of the currently selected text.\n*/\nconst selectSelectionMatches = ({ state, dispatch }) => {\n    let sel = state.selection;\n    if (sel.ranges.length > 1 || sel.main.empty)\n        return false;\n    let { from, to } = sel.main;\n    let ranges = [], main = 0;\n    for (let cur = new SearchCursor(state.doc, state.sliceDoc(from, to)); !cur.next().done;) {\n        if (ranges.length > 1000)\n            return false;\n        if (cur.value.from == from)\n            main = ranges.length;\n        ranges.push(EditorSelection.range(cur.value.from, cur.value.to));\n    }\n    dispatch(state.update({\n        selection: EditorSelection.create(ranges, main),\n        userEvent: \"select.search.matches\"\n    }));\n    return true;\n};\n/**\nReplace the current match of the search query.\n*/\nconst replaceNext = /*@__PURE__*/searchCommand((view, { query }) => {\n    let { state } = view, { from, to } = state.selection.main;\n    if (state.readOnly)\n        return false;\n    let match = query.nextMatch(state, from, from);\n    if (!match)\n        return false;\n    let next = match;\n    let changes = [], selection, replacement;\n    let effects = [];\n    if (next.from == from && next.to == to) {\n        replacement = state.toText(query.getReplacement(next));\n        changes.push({ from: next.from, to: next.to, insert: replacement });\n        next = query.nextMatch(state, next.from, next.to);\n        effects.push(EditorView.announce.of(state.phrase(\"replaced match on line $\", state.doc.lineAt(from).number) + \".\"));\n    }\n    let changeSet = view.state.changes(changes);\n    if (next) {\n        selection = EditorSelection.single(next.from, next.to).map(changeSet);\n        effects.push(announceMatch(view, next));\n        effects.push(state.facet(searchConfigFacet).scrollToMatch(selection.main, view));\n    }\n    view.dispatch({\n        changes: changeSet,\n        selection,\n        effects,\n        userEvent: \"input.replace\"\n    });\n    return true;\n});\n/**\nReplace all instances of the search query with the given\nreplacement.\n*/\nconst replaceAll = /*@__PURE__*/searchCommand((view, { query }) => {\n    if (view.state.readOnly)\n        return false;\n    let changes = query.matchAll(view.state, 1e9).map(match => {\n        let { from, to } = match;\n        return { from, to, insert: query.getReplacement(match) };\n    });\n    if (!changes.length)\n        return false;\n    let announceText = view.state.phrase(\"replaced $ matches\", changes.length) + \".\";\n    view.dispatch({\n        changes,\n        effects: EditorView.announce.of(announceText),\n        userEvent: \"input.replace.all\"\n    });\n    return true;\n});\nfunction createSearchPanel(view) {\n    return view.state.facet(searchConfigFacet).createPanel(view);\n}\nfunction defaultQuery(state, fallback) {\n    var _a, _b, _c, _d, _e;\n    let sel = state.selection.main;\n    let selText = sel.empty || sel.to > sel.from + 100 ? \"\" : state.sliceDoc(sel.from, sel.to);\n    if (fallback && !selText)\n        return fallback;\n    let config = state.facet(searchConfigFacet);\n    return new SearchQuery({\n        search: ((_a = fallback === null || fallback === void 0 ? void 0 : fallback.literal) !== null && _a !== void 0 ? _a : config.literal) ? selText : selText.replace(/\\n/g, \"\\\\n\"),\n        caseSensitive: (_b = fallback === null || fallback === void 0 ? void 0 : fallback.caseSensitive) !== null && _b !== void 0 ? _b : config.caseSensitive,\n        literal: (_c = fallback === null || fallback === void 0 ? void 0 : fallback.literal) !== null && _c !== void 0 ? _c : config.literal,\n        regexp: (_d = fallback === null || fallback === void 0 ? void 0 : fallback.regexp) !== null && _d !== void 0 ? _d : config.regexp,\n        wholeWord: (_e = fallback === null || fallback === void 0 ? void 0 : fallback.wholeWord) !== null && _e !== void 0 ? _e : config.wholeWord\n    });\n}\nfunction getSearchInput(view) {\n    let panel = getPanel(view, createSearchPanel);\n    return panel && panel.dom.querySelector(\"[main-field]\");\n}\nfunction selectSearchInput(view) {\n    let input = getSearchInput(view);\n    if (input && input == view.root.activeElement)\n        input.select();\n}\n/**\nMake sure the search panel is open and focused.\n*/\nconst openSearchPanel = view => {\n    let state = view.state.field(searchState, false);\n    if (state && state.panel) {\n        let searchInput = getSearchInput(view);\n        if (searchInput && searchInput != view.root.activeElement) {\n            let query = defaultQuery(view.state, state.query.spec);\n            if (query.valid)\n                view.dispatch({ effects: setSearchQuery.of(query) });\n            searchInput.focus();\n            searchInput.select();\n        }\n    }\n    else {\n        view.dispatch({ effects: [\n                togglePanel.of(true),\n                state ? setSearchQuery.of(defaultQuery(view.state, state.query.spec)) : StateEffect.appendConfig.of(searchExtensions)\n            ] });\n    }\n    return true;\n};\n/**\nClose the search panel.\n*/\nconst closeSearchPanel = view => {\n    let state = view.state.field(searchState, false);\n    if (!state || !state.panel)\n        return false;\n    let panel = getPanel(view, createSearchPanel);\n    if (panel && panel.dom.contains(view.root.activeElement))\n        view.focus();\n    view.dispatch({ effects: togglePanel.of(false) });\n    return true;\n};\n/**\nDefault search-related key bindings.\n\n - Mod-f: [`openSearchPanel`](https://codemirror.net/6/docs/ref/#search.openSearchPanel)\n - F3, Mod-g: [`findNext`](https://codemirror.net/6/docs/ref/#search.findNext)\n - Shift-F3, Shift-Mod-g: [`findPrevious`](https://codemirror.net/6/docs/ref/#search.findPrevious)\n - Mod-Alt-g: [`gotoLine`](https://codemirror.net/6/docs/ref/#search.gotoLine)\n - Mod-d: [`selectNextOccurrence`](https://codemirror.net/6/docs/ref/#search.selectNextOccurrence)\n*/\nconst searchKeymap = [\n    { key: \"Mod-f\", run: openSearchPanel, scope: \"editor search-panel\" },\n    { key: \"F3\", run: findNext, shift: findPrevious, scope: \"editor search-panel\", preventDefault: true },\n    { key: \"Mod-g\", run: findNext, shift: findPrevious, scope: \"editor search-panel\", preventDefault: true },\n    { key: \"Escape\", run: closeSearchPanel, scope: \"editor search-panel\" },\n    { key: \"Mod-Shift-l\", run: selectSelectionMatches },\n    { key: \"Mod-Alt-g\", run: gotoLine },\n    { key: \"Mod-d\", run: selectNextOccurrence, preventDefault: true },\n];\nclass SearchPanel {\n    constructor(view) {\n        this.view = view;\n        let query = this.query = view.state.field(searchState).query.spec;\n        this.commit = this.commit.bind(this);\n        this.searchField = elt(\"input\", {\n            value: query.search,\n            placeholder: phrase(view, \"Find\"),\n            \"aria-label\": phrase(view, \"Find\"),\n            class: \"cm-textfield\",\n            name: \"search\",\n            form: \"\",\n            \"main-field\": \"true\",\n            onchange: this.commit,\n            onkeyup: this.commit\n        });\n        this.replaceField = elt(\"input\", {\n            value: query.replace,\n            placeholder: phrase(view, \"Replace\"),\n            \"aria-label\": phrase(view, \"Replace\"),\n            class: \"cm-textfield\",\n            name: \"replace\",\n            form: \"\",\n            onchange: this.commit,\n            onkeyup: this.commit\n        });\n        this.caseField = elt(\"input\", {\n            type: \"checkbox\",\n            name: \"case\",\n            form: \"\",\n            checked: query.caseSensitive,\n            onchange: this.commit\n        });\n        this.reField = elt(\"input\", {\n            type: \"checkbox\",\n            name: \"re\",\n            form: \"\",\n            checked: query.regexp,\n            onchange: this.commit\n        });\n        this.wordField = elt(\"input\", {\n            type: \"checkbox\",\n            name: \"word\",\n            form: \"\",\n            checked: query.wholeWord,\n            onchange: this.commit\n        });\n        function button(name, onclick, content) {\n            return elt(\"button\", { class: \"cm-button\", name, onclick, type: \"button\" }, content);\n        }\n        this.dom = elt(\"div\", { onkeydown: (e) => this.keydown(e), class: \"cm-search\" }, [\n            this.searchField,\n            button(\"next\", () => findNext(view), [phrase(view, \"next\")]),\n            button(\"prev\", () => findPrevious(view), [phrase(view, \"previous\")]),\n            button(\"select\", () => selectMatches(view), [phrase(view, \"all\")]),\n            elt(\"label\", null, [this.caseField, phrase(view, \"match case\")]),\n            elt(\"label\", null, [this.reField, phrase(view, \"regexp\")]),\n            elt(\"label\", null, [this.wordField, phrase(view, \"by word\")]),\n            ...view.state.readOnly ? [] : [\n                elt(\"br\"),\n                this.replaceField,\n                button(\"replace\", () => replaceNext(view), [phrase(view, \"replace\")]),\n                button(\"replaceAll\", () => replaceAll(view), [phrase(view, \"replace all\")])\n            ],\n            elt(\"button\", {\n                name: \"close\",\n                onclick: () => closeSearchPanel(view),\n                \"aria-label\": phrase(view, \"close\"),\n                type: \"button\"\n            }, [\"×\"])\n        ]);\n    }\n    commit() {\n        let query = new SearchQuery({\n            search: this.searchField.value,\n            caseSensitive: this.caseField.checked,\n            regexp: this.reField.checked,\n            wholeWord: this.wordField.checked,\n            replace: this.replaceField.value,\n        });\n        if (!query.eq(this.query)) {\n            this.query = query;\n            this.view.dispatch({ effects: setSearchQuery.of(query) });\n        }\n    }\n    keydown(e) {\n        if (runScopeHandlers(this.view, e, \"search-panel\")) {\n            e.preventDefault();\n        }\n        else if (e.keyCode == 13 && e.target == this.searchField) {\n            e.preventDefault();\n            (e.shiftKey ? findPrevious : findNext)(this.view);\n        }\n        else if (e.keyCode == 13 && e.target == this.replaceField) {\n            e.preventDefault();\n            replaceNext(this.view);\n        }\n    }\n    update(update) {\n        for (let tr of update.transactions)\n            for (let effect of tr.effects) {\n                if (effect.is(setSearchQuery) && !effect.value.eq(this.query))\n                    this.setQuery(effect.value);\n            }\n    }\n    setQuery(query) {\n        this.query = query;\n        this.searchField.value = query.search;\n        this.replaceField.value = query.replace;\n        this.caseField.checked = query.caseSensitive;\n        this.reField.checked = query.regexp;\n        this.wordField.checked = query.wholeWord;\n    }\n    mount() {\n        this.searchField.select();\n    }\n    get pos() { return 80; }\n    get top() { return this.view.state.facet(searchConfigFacet).top; }\n}\nfunction phrase(view, phrase) { return view.state.phrase(phrase); }\nconst AnnounceMargin = 30;\nconst Break = /[\\s\\.,:;?!]/;\nfunction announceMatch(view, { from, to }) {\n    let line = view.state.doc.lineAt(from), lineEnd = view.state.doc.lineAt(to).to;\n    let start = Math.max(line.from, from - AnnounceMargin), end = Math.min(lineEnd, to + AnnounceMargin);\n    let text = view.state.sliceDoc(start, end);\n    if (start != line.from) {\n        for (let i = 0; i < AnnounceMargin; i++)\n            if (!Break.test(text[i + 1]) && Break.test(text[i])) {\n                text = text.slice(i);\n                break;\n            }\n    }\n    if (end != lineEnd) {\n        for (let i = text.length - 1; i > text.length - AnnounceMargin; i--)\n            if (!Break.test(text[i - 1]) && Break.test(text[i])) {\n                text = text.slice(0, i);\n                break;\n            }\n    }\n    return EditorView.announce.of(`${view.state.phrase(\"current match\")}. ${text} ${view.state.phrase(\"on line\")} ${line.number}.`);\n}\nconst baseTheme = /*@__PURE__*/EditorView.baseTheme({\n    \".cm-panel.cm-search\": {\n        padding: \"2px 6px 4px\",\n        position: \"relative\",\n        \"& [name=close]\": {\n            position: \"absolute\",\n            top: \"0\",\n            right: \"4px\",\n            backgroundColor: \"inherit\",\n            border: \"none\",\n            font: \"inherit\",\n            padding: 0,\n            margin: 0\n        },\n        \"& input, & button, & label\": {\n            margin: \".2em .6em .2em 0\"\n        },\n        \"& input[type=checkbox]\": {\n            marginRight: \".2em\"\n        },\n        \"& label\": {\n            fontSize: \"80%\",\n            whiteSpace: \"pre\"\n        }\n    },\n    \"&light .cm-searchMatch\": { backgroundColor: \"#ffff0054\" },\n    \"&dark .cm-searchMatch\": { backgroundColor: \"#00ffff8a\" },\n    \"&light .cm-searchMatch-selected\": { backgroundColor: \"#ff6a0054\" },\n    \"&dark .cm-searchMatch-selected\": { backgroundColor: \"#ff00ff8a\" }\n});\nconst searchExtensions = [\n    searchState,\n    /*@__PURE__*/Prec.low(searchHighlighter),\n    baseTheme\n];\n\nexport { RegExpCursor, SearchCursor, SearchQuery, closeSearchPanel, findNext, findPrevious, getSearchQuery, gotoLine, highlightSelectionMatches, openSearchPanel, replaceAll, replaceNext, search, searchKeymap, searchPanelOpen, selectMatches, selectNextOccurrence, selectSelectionMatches, setSearchQuery };\n","import { Annotation, StateEffect, EditorSelection, codePointAt, codePointSize, fromCodePoint, Facet, combineConfig, StateField, Prec, Text, Transaction, MapMode, RangeValue, RangeSet, CharCategory } from '@codemirror/state';\nimport { Direction, logException, showTooltip, EditorView, ViewPlugin, getTooltip, Decoration, WidgetType, keymap } from '@codemirror/view';\nimport { syntaxTree, indentUnit } from '@codemirror/language';\n\n/**\nAn instance of this is passed to completion source functions.\n*/\nclass CompletionContext {\n    /**\n    Create a new completion context. (Mostly useful for testing\n    completion sources—in the editor, the extension will create\n    these for you.)\n    */\n    constructor(\n    /**\n    The editor state that the completion happens in.\n    */\n    state, \n    /**\n    The position at which the completion is happening.\n    */\n    pos, \n    /**\n    Indicates whether completion was activated explicitly, or\n    implicitly by typing. The usual way to respond to this is to\n    only return completions when either there is part of a\n    completable entity before the cursor, or `explicit` is true.\n    */\n    explicit, \n    /**\n    The editor view. May be undefined if the context was created\n    in a situation where there is no such view available, such as\n    in synchronous updates via\n    [`CompletionResult.update`](https://codemirror.net/6/docs/ref/#autocomplete.CompletionResult.update)\n    or when called by test code.\n    */\n    view) {\n        this.state = state;\n        this.pos = pos;\n        this.explicit = explicit;\n        this.view = view;\n        /**\n        @internal\n        */\n        this.abortListeners = [];\n        /**\n        @internal\n        */\n        this.abortOnDocChange = false;\n    }\n    /**\n    Get the extent, content, and (if there is a token) type of the\n    token before `this.pos`.\n    */\n    tokenBefore(types) {\n        let token = syntaxTree(this.state).resolveInner(this.pos, -1);\n        while (token && types.indexOf(token.name) < 0)\n            token = token.parent;\n        return token ? { from: token.from, to: this.pos,\n            text: this.state.sliceDoc(token.from, this.pos),\n            type: token.type } : null;\n    }\n    /**\n    Get the match of the given expression directly before the\n    cursor.\n    */\n    matchBefore(expr) {\n        let line = this.state.doc.lineAt(this.pos);\n        let start = Math.max(line.from, this.pos - 250);\n        let str = line.text.slice(start - line.from, this.pos - line.from);\n        let found = str.search(ensureAnchor(expr, false));\n        return found < 0 ? null : { from: start + found, to: this.pos, text: str.slice(found) };\n    }\n    /**\n    Yields true when the query has been aborted. Can be useful in\n    asynchronous queries to avoid doing work that will be ignored.\n    */\n    get aborted() { return this.abortListeners == null; }\n    /**\n    Allows you to register abort handlers, which will be called when\n    the query is\n    [aborted](https://codemirror.net/6/docs/ref/#autocomplete.CompletionContext.aborted).\n    \n    By default, running queries will not be aborted for regular\n    typing or backspacing, on the assumption that they are likely to\n    return a result with a\n    [`validFor`](https://codemirror.net/6/docs/ref/#autocomplete.CompletionResult.validFor) field that\n    allows the result to be used after all. Passing `onDocChange:\n    true` will cause this query to be aborted for any document\n    change.\n    */\n    addEventListener(type, listener, options) {\n        if (type == \"abort\" && this.abortListeners) {\n            this.abortListeners.push(listener);\n            if (options && options.onDocChange)\n                this.abortOnDocChange = true;\n        }\n    }\n}\nfunction toSet(chars) {\n    let flat = Object.keys(chars).join(\"\");\n    let words = /\\w/.test(flat);\n    if (words)\n        flat = flat.replace(/\\w/g, \"\");\n    return `[${words ? \"\\\\w\" : \"\"}${flat.replace(/[^\\w\\s]/g, \"\\\\$&\")}]`;\n}\nfunction prefixMatch(options) {\n    let first = Object.create(null), rest = Object.create(null);\n    for (let { label } of options) {\n        first[label[0]] = true;\n        for (let i = 1; i < label.length; i++)\n            rest[label[i]] = true;\n    }\n    let source = toSet(first) + toSet(rest) + \"*$\";\n    return [new RegExp(\"^\" + source), new RegExp(source)];\n}\n/**\nGiven a a fixed array of options, return an autocompleter that\ncompletes them.\n*/\nfunction completeFromList(list) {\n    let options = list.map(o => typeof o == \"string\" ? { label: o } : o);\n    let [validFor, match] = options.every(o => /^\\w+$/.test(o.label)) ? [/\\w*$/, /\\w+$/] : prefixMatch(options);\n    return (context) => {\n        let token = context.matchBefore(match);\n        return token || context.explicit ? { from: token ? token.from : context.pos, options, validFor } : null;\n    };\n}\n/**\nWrap the given completion source so that it will only fire when the\ncursor is in a syntax node with one of the given names.\n*/\nfunction ifIn(nodes, source) {\n    return (context) => {\n        for (let pos = syntaxTree(context.state).resolveInner(context.pos, -1); pos; pos = pos.parent) {\n            if (nodes.indexOf(pos.name) > -1)\n                return source(context);\n            if (pos.type.isTop)\n                break;\n        }\n        return null;\n    };\n}\n/**\nWrap the given completion source so that it will not fire when the\ncursor is in a syntax node with one of the given names.\n*/\nfunction ifNotIn(nodes, source) {\n    return (context) => {\n        for (let pos = syntaxTree(context.state).resolveInner(context.pos, -1); pos; pos = pos.parent) {\n            if (nodes.indexOf(pos.name) > -1)\n                return null;\n            if (pos.type.isTop)\n                break;\n        }\n        return source(context);\n    };\n}\nclass Option {\n    constructor(completion, source, match, score) {\n        this.completion = completion;\n        this.source = source;\n        this.match = match;\n        this.score = score;\n    }\n}\nfunction cur(state) { return state.selection.main.from; }\n// Make sure the given regexp has a $ at its end and, if `start` is\n// true, a ^ at its start.\nfunction ensureAnchor(expr, start) {\n    var _a;\n    let { source } = expr;\n    let addStart = start && source[0] != \"^\", addEnd = source[source.length - 1] != \"$\";\n    if (!addStart && !addEnd)\n        return expr;\n    return new RegExp(`${addStart ? \"^\" : \"\"}(?:${source})${addEnd ? \"$\" : \"\"}`, (_a = expr.flags) !== null && _a !== void 0 ? _a : (expr.ignoreCase ? \"i\" : \"\"));\n}\n/**\nThis annotation is added to transactions that are produced by\npicking a completion.\n*/\nconst pickedCompletion = /*@__PURE__*/Annotation.define();\n/**\nHelper function that returns a transaction spec which inserts a\ncompletion's text in the main selection range, and any other\nselection range that has the same text in front of it.\n*/\nfunction insertCompletionText(state, text, from, to) {\n    let { main } = state.selection, fromOff = from - main.from, toOff = to - main.from;\n    return Object.assign(Object.assign({}, state.changeByRange(range => {\n        if (range != main && from != to &&\n            state.sliceDoc(range.from + fromOff, range.from + toOff) != state.sliceDoc(from, to))\n            return { range };\n        let lines = state.toText(text);\n        return {\n            changes: { from: range.from + fromOff, to: to == main.from ? range.to : range.from + toOff, insert: lines },\n            range: EditorSelection.cursor(range.from + fromOff + lines.length)\n        };\n    })), { scrollIntoView: true, userEvent: \"input.complete\" });\n}\nconst SourceCache = /*@__PURE__*/new WeakMap();\nfunction asSource(source) {\n    if (!Array.isArray(source))\n        return source;\n    let known = SourceCache.get(source);\n    if (!known)\n        SourceCache.set(source, known = completeFromList(source));\n    return known;\n}\nconst startCompletionEffect = /*@__PURE__*/StateEffect.define();\nconst closeCompletionEffect = /*@__PURE__*/StateEffect.define();\n\n// A pattern matcher for fuzzy completion matching. Create an instance\n// once for a pattern, and then use that to match any number of\n// completions.\nclass FuzzyMatcher {\n    constructor(pattern) {\n        this.pattern = pattern;\n        this.chars = [];\n        this.folded = [];\n        // Buffers reused by calls to `match` to track matched character\n        // positions.\n        this.any = [];\n        this.precise = [];\n        this.byWord = [];\n        this.score = 0;\n        this.matched = [];\n        for (let p = 0; p < pattern.length;) {\n            let char = codePointAt(pattern, p), size = codePointSize(char);\n            this.chars.push(char);\n            let part = pattern.slice(p, p + size), upper = part.toUpperCase();\n            this.folded.push(codePointAt(upper == part ? part.toLowerCase() : upper, 0));\n            p += size;\n        }\n        this.astral = pattern.length != this.chars.length;\n    }\n    ret(score, matched) {\n        this.score = score;\n        this.matched = matched;\n        return this;\n    }\n    // Matches a given word (completion) against the pattern (input).\n    // Will return a boolean indicating whether there was a match and,\n    // on success, set `this.score` to the score, `this.matched` to an\n    // array of `from, to` pairs indicating the matched parts of `word`.\n    //\n    // The score is a number that is more negative the worse the match\n    // is. See `Penalty` above.\n    match(word) {\n        if (this.pattern.length == 0)\n            return this.ret(-100 /* Penalty.NotFull */, []);\n        if (word.length < this.pattern.length)\n            return null;\n        let { chars, folded, any, precise, byWord } = this;\n        // For single-character queries, only match when they occur right\n        // at the start\n        if (chars.length == 1) {\n            let first = codePointAt(word, 0), firstSize = codePointSize(first);\n            let score = firstSize == word.length ? 0 : -100 /* Penalty.NotFull */;\n            if (first == chars[0]) ;\n            else if (first == folded[0])\n                score += -200 /* Penalty.CaseFold */;\n            else\n                return null;\n            return this.ret(score, [0, firstSize]);\n        }\n        let direct = word.indexOf(this.pattern);\n        if (direct == 0)\n            return this.ret(word.length == this.pattern.length ? 0 : -100 /* Penalty.NotFull */, [0, this.pattern.length]);\n        let len = chars.length, anyTo = 0;\n        if (direct < 0) {\n            for (let i = 0, e = Math.min(word.length, 200); i < e && anyTo < len;) {\n                let next = codePointAt(word, i);\n                if (next == chars[anyTo] || next == folded[anyTo])\n                    any[anyTo++] = i;\n                i += codePointSize(next);\n            }\n            // No match, exit immediately\n            if (anyTo < len)\n                return null;\n        }\n        // This tracks the extent of the precise (non-folded, not\n        // necessarily adjacent) match\n        let preciseTo = 0;\n        // Tracks whether there is a match that hits only characters that\n        // appear to be starting words. `byWordFolded` is set to true when\n        // a case folded character is encountered in such a match\n        let byWordTo = 0, byWordFolded = false;\n        // If we've found a partial adjacent match, these track its state\n        let adjacentTo = 0, adjacentStart = -1, adjacentEnd = -1;\n        let hasLower = /[a-z]/.test(word), wordAdjacent = true;\n        // Go over the option's text, scanning for the various kinds of matches\n        for (let i = 0, e = Math.min(word.length, 200), prevType = 0 /* Tp.NonWord */; i < e && byWordTo < len;) {\n            let next = codePointAt(word, i);\n            if (direct < 0) {\n                if (preciseTo < len && next == chars[preciseTo])\n                    precise[preciseTo++] = i;\n                if (adjacentTo < len) {\n                    if (next == chars[adjacentTo] || next == folded[adjacentTo]) {\n                        if (adjacentTo == 0)\n                            adjacentStart = i;\n                        adjacentEnd = i + 1;\n                        adjacentTo++;\n                    }\n                    else {\n                        adjacentTo = 0;\n                    }\n                }\n            }\n            let ch, type = next < 0xff\n                ? (next >= 48 && next <= 57 || next >= 97 && next <= 122 ? 2 /* Tp.Lower */ : next >= 65 && next <= 90 ? 1 /* Tp.Upper */ : 0 /* Tp.NonWord */)\n                : ((ch = fromCodePoint(next)) != ch.toLowerCase() ? 1 /* Tp.Upper */ : ch != ch.toUpperCase() ? 2 /* Tp.Lower */ : 0 /* Tp.NonWord */);\n            if (!i || type == 1 /* Tp.Upper */ && hasLower || prevType == 0 /* Tp.NonWord */ && type != 0 /* Tp.NonWord */) {\n                if (chars[byWordTo] == next || (folded[byWordTo] == next && (byWordFolded = true)))\n                    byWord[byWordTo++] = i;\n                else if (byWord.length)\n                    wordAdjacent = false;\n            }\n            prevType = type;\n            i += codePointSize(next);\n        }\n        if (byWordTo == len && byWord[0] == 0 && wordAdjacent)\n            return this.result(-100 /* Penalty.ByWord */ + (byWordFolded ? -200 /* Penalty.CaseFold */ : 0), byWord, word);\n        if (adjacentTo == len && adjacentStart == 0)\n            return this.ret(-200 /* Penalty.CaseFold */ - word.length + (adjacentEnd == word.length ? 0 : -100 /* Penalty.NotFull */), [0, adjacentEnd]);\n        if (direct > -1)\n            return this.ret(-700 /* Penalty.NotStart */ - word.length, [direct, direct + this.pattern.length]);\n        if (adjacentTo == len)\n            return this.ret(-200 /* Penalty.CaseFold */ + -700 /* Penalty.NotStart */ - word.length, [adjacentStart, adjacentEnd]);\n        if (byWordTo == len)\n            return this.result(-100 /* Penalty.ByWord */ + (byWordFolded ? -200 /* Penalty.CaseFold */ : 0) + -700 /* Penalty.NotStart */ +\n                (wordAdjacent ? 0 : -1100 /* Penalty.Gap */), byWord, word);\n        return chars.length == 2 ? null\n            : this.result((any[0] ? -700 /* Penalty.NotStart */ : 0) + -200 /* Penalty.CaseFold */ + -1100 /* Penalty.Gap */, any, word);\n    }\n    result(score, positions, word) {\n        let result = [], i = 0;\n        for (let pos of positions) {\n            let to = pos + (this.astral ? codePointSize(codePointAt(word, pos)) : 1);\n            if (i && result[i - 1] == pos)\n                result[i - 1] = to;\n            else {\n                result[i++] = pos;\n                result[i++] = to;\n            }\n        }\n        return this.ret(score - word.length, result);\n    }\n}\nclass StrictMatcher {\n    constructor(pattern) {\n        this.pattern = pattern;\n        this.matched = [];\n        this.score = 0;\n        this.folded = pattern.toLowerCase();\n    }\n    match(word) {\n        if (word.length < this.pattern.length)\n            return null;\n        let start = word.slice(0, this.pattern.length);\n        let match = start == this.pattern ? 0 : start.toLowerCase() == this.folded ? -200 /* Penalty.CaseFold */ : null;\n        if (match == null)\n            return null;\n        this.matched = [0, start.length];\n        this.score = match + (word.length == this.pattern.length ? 0 : -100 /* Penalty.NotFull */);\n        return this;\n    }\n}\n\nconst completionConfig = /*@__PURE__*/Facet.define({\n    combine(configs) {\n        return combineConfig(configs, {\n            activateOnTyping: true,\n            activateOnCompletion: () => false,\n            activateOnTypingDelay: 100,\n            selectOnOpen: true,\n            override: null,\n            closeOnBlur: true,\n            maxRenderedOptions: 100,\n            defaultKeymap: true,\n            tooltipClass: () => \"\",\n            optionClass: () => \"\",\n            aboveCursor: false,\n            icons: true,\n            addToOptions: [],\n            positionInfo: defaultPositionInfo,\n            filterStrict: false,\n            compareCompletions: (a, b) => a.label.localeCompare(b.label),\n            interactionDelay: 75,\n            updateSyncTime: 100\n        }, {\n            defaultKeymap: (a, b) => a && b,\n            closeOnBlur: (a, b) => a && b,\n            icons: (a, b) => a && b,\n            tooltipClass: (a, b) => c => joinClass(a(c), b(c)),\n            optionClass: (a, b) => c => joinClass(a(c), b(c)),\n            addToOptions: (a, b) => a.concat(b),\n            filterStrict: (a, b) => a || b,\n        });\n    }\n});\nfunction joinClass(a, b) {\n    return a ? b ? a + \" \" + b : a : b;\n}\nfunction defaultPositionInfo(view, list, option, info, space, tooltip) {\n    let rtl = view.textDirection == Direction.RTL, left = rtl, narrow = false;\n    let side = \"top\", offset, maxWidth;\n    let spaceLeft = list.left - space.left, spaceRight = space.right - list.right;\n    let infoWidth = info.right - info.left, infoHeight = info.bottom - info.top;\n    if (left && spaceLeft < Math.min(infoWidth, spaceRight))\n        left = false;\n    else if (!left && spaceRight < Math.min(infoWidth, spaceLeft))\n        left = true;\n    if (infoWidth <= (left ? spaceLeft : spaceRight)) {\n        offset = Math.max(space.top, Math.min(option.top, space.bottom - infoHeight)) - list.top;\n        maxWidth = Math.min(400 /* Info.Width */, left ? spaceLeft : spaceRight);\n    }\n    else {\n        narrow = true;\n        maxWidth = Math.min(400 /* Info.Width */, (rtl ? list.right : space.right - list.left) - 30 /* Info.Margin */);\n        let spaceBelow = space.bottom - list.bottom;\n        if (spaceBelow >= infoHeight || spaceBelow > list.top) { // Below the completion\n            offset = option.bottom - list.top;\n        }\n        else { // Above it\n            side = \"bottom\";\n            offset = list.bottom - option.top;\n        }\n    }\n    let scaleY = (list.bottom - list.top) / tooltip.offsetHeight;\n    let scaleX = (list.right - list.left) / tooltip.offsetWidth;\n    return {\n        style: `${side}: ${offset / scaleY}px; max-width: ${maxWidth / scaleX}px`,\n        class: \"cm-completionInfo-\" + (narrow ? (rtl ? \"left-narrow\" : \"right-narrow\") : left ? \"left\" : \"right\")\n    };\n}\n\nfunction optionContent(config) {\n    let content = config.addToOptions.slice();\n    if (config.icons)\n        content.push({\n            render(completion) {\n                let icon = document.createElement(\"div\");\n                icon.classList.add(\"cm-completionIcon\");\n                if (completion.type)\n                    icon.classList.add(...completion.type.split(/\\s+/g).map(cls => \"cm-completionIcon-\" + cls));\n                icon.setAttribute(\"aria-hidden\", \"true\");\n                return icon;\n            },\n            position: 20\n        });\n    content.push({\n        render(completion, _s, _v, match) {\n            let labelElt = document.createElement(\"span\");\n            labelElt.className = \"cm-completionLabel\";\n            let label = completion.displayLabel || completion.label, off = 0;\n            for (let j = 0; j < match.length;) {\n                let from = match[j++], to = match[j++];\n                if (from > off)\n                    labelElt.appendChild(document.createTextNode(label.slice(off, from)));\n                let span = labelElt.appendChild(document.createElement(\"span\"));\n                span.appendChild(document.createTextNode(label.slice(from, to)));\n                span.className = \"cm-completionMatchedText\";\n                off = to;\n            }\n            if (off < label.length)\n                labelElt.appendChild(document.createTextNode(label.slice(off)));\n            return labelElt;\n        },\n        position: 50\n    }, {\n        render(completion) {\n            if (!completion.detail)\n                return null;\n            let detailElt = document.createElement(\"span\");\n            detailElt.className = \"cm-completionDetail\";\n            detailElt.textContent = completion.detail;\n            return detailElt;\n        },\n        position: 80\n    });\n    return content.sort((a, b) => a.position - b.position).map(a => a.render);\n}\nfunction rangeAroundSelected(total, selected, max) {\n    if (total <= max)\n        return { from: 0, to: total };\n    if (selected < 0)\n        selected = 0;\n    if (selected <= (total >> 1)) {\n        let off = Math.floor(selected / max);\n        return { from: off * max, to: (off + 1) * max };\n    }\n    let off = Math.floor((total - selected) / max);\n    return { from: total - (off + 1) * max, to: total - off * max };\n}\nclass CompletionTooltip {\n    constructor(view, stateField, applyCompletion) {\n        this.view = view;\n        this.stateField = stateField;\n        this.applyCompletion = applyCompletion;\n        this.info = null;\n        this.infoDestroy = null;\n        this.placeInfoReq = {\n            read: () => this.measureInfo(),\n            write: (pos) => this.placeInfo(pos),\n            key: this\n        };\n        this.space = null;\n        this.currentClass = \"\";\n        let cState = view.state.field(stateField);\n        let { options, selected } = cState.open;\n        let config = view.state.facet(completionConfig);\n        this.optionContent = optionContent(config);\n        this.optionClass = config.optionClass;\n        this.tooltipClass = config.tooltipClass;\n        this.range = rangeAroundSelected(options.length, selected, config.maxRenderedOptions);\n        this.dom = document.createElement(\"div\");\n        this.dom.className = \"cm-tooltip-autocomplete\";\n        this.updateTooltipClass(view.state);\n        this.dom.addEventListener(\"mousedown\", (e) => {\n            let { options } = view.state.field(stateField).open;\n            for (let dom = e.target, match; dom && dom != this.dom; dom = dom.parentNode) {\n                if (dom.nodeName == \"LI\" && (match = /-(\\d+)$/.exec(dom.id)) && +match[1] < options.length) {\n                    this.applyCompletion(view, options[+match[1]]);\n                    e.preventDefault();\n                    return;\n                }\n            }\n        });\n        this.dom.addEventListener(\"focusout\", (e) => {\n            let state = view.state.field(this.stateField, false);\n            if (state && state.tooltip && view.state.facet(completionConfig).closeOnBlur &&\n                e.relatedTarget != view.contentDOM)\n                view.dispatch({ effects: closeCompletionEffect.of(null) });\n        });\n        this.showOptions(options, cState.id);\n    }\n    mount() { this.updateSel(); }\n    showOptions(options, id) {\n        if (this.list)\n            this.list.remove();\n        this.list = this.dom.appendChild(this.createListBox(options, id, this.range));\n        this.list.addEventListener(\"scroll\", () => {\n            if (this.info)\n                this.view.requestMeasure(this.placeInfoReq);\n        });\n    }\n    update(update) {\n        var _a;\n        let cState = update.state.field(this.stateField);\n        let prevState = update.startState.field(this.stateField);\n        this.updateTooltipClass(update.state);\n        if (cState != prevState) {\n            let { options, selected, disabled } = cState.open;\n            if (!prevState.open || prevState.open.options != options) {\n                this.range = rangeAroundSelected(options.length, selected, update.state.facet(completionConfig).maxRenderedOptions);\n                this.showOptions(options, cState.id);\n            }\n            this.updateSel();\n            if (disabled != ((_a = prevState.open) === null || _a === void 0 ? void 0 : _a.disabled))\n                this.dom.classList.toggle(\"cm-tooltip-autocomplete-disabled\", !!disabled);\n        }\n    }\n    updateTooltipClass(state) {\n        let cls = this.tooltipClass(state);\n        if (cls != this.currentClass) {\n            for (let c of this.currentClass.split(\" \"))\n                if (c)\n                    this.dom.classList.remove(c);\n            for (let c of cls.split(\" \"))\n                if (c)\n                    this.dom.classList.add(c);\n            this.currentClass = cls;\n        }\n    }\n    positioned(space) {\n        this.space = space;\n        if (this.info)\n            this.view.requestMeasure(this.placeInfoReq);\n    }\n    updateSel() {\n        let cState = this.view.state.field(this.stateField), open = cState.open;\n        if (open.selected > -1 && open.selected < this.range.from || open.selected >= this.range.to) {\n            this.range = rangeAroundSelected(open.options.length, open.selected, this.view.state.facet(completionConfig).maxRenderedOptions);\n            this.showOptions(open.options, cState.id);\n        }\n        if (this.updateSelectedOption(open.selected)) {\n            this.destroyInfo();\n            let { completion } = open.options[open.selected];\n            let { info } = completion;\n            if (!info)\n                return;\n            let infoResult = typeof info === \"string\" ? document.createTextNode(info) : info(completion);\n            if (!infoResult)\n                return;\n            if (\"then\" in infoResult) {\n                infoResult.then(obj => {\n                    if (obj && this.view.state.field(this.stateField, false) == cState)\n                        this.addInfoPane(obj, completion);\n                }).catch(e => logException(this.view.state, e, \"completion info\"));\n            }\n            else {\n                this.addInfoPane(infoResult, completion);\n            }\n        }\n    }\n    addInfoPane(content, completion) {\n        this.destroyInfo();\n        let wrap = this.info = document.createElement(\"div\");\n        wrap.className = \"cm-tooltip cm-completionInfo\";\n        if (content.nodeType != null) {\n            wrap.appendChild(content);\n            this.infoDestroy = null;\n        }\n        else {\n            let { dom, destroy } = content;\n            wrap.appendChild(dom);\n            this.infoDestroy = destroy || null;\n        }\n        this.dom.appendChild(wrap);\n        this.view.requestMeasure(this.placeInfoReq);\n    }\n    updateSelectedOption(selected) {\n        let set = null;\n        for (let opt = this.list.firstChild, i = this.range.from; opt; opt = opt.nextSibling, i++) {\n            if (opt.nodeName != \"LI\" || !opt.id) {\n                i--; // A section header\n            }\n            else if (i == selected) {\n                if (!opt.hasAttribute(\"aria-selected\")) {\n                    opt.setAttribute(\"aria-selected\", \"true\");\n                    set = opt;\n                }\n            }\n            else {\n                if (opt.hasAttribute(\"aria-selected\"))\n                    opt.removeAttribute(\"aria-selected\");\n            }\n        }\n        if (set)\n            scrollIntoView(this.list, set);\n        return set;\n    }\n    measureInfo() {\n        let sel = this.dom.querySelector(\"[aria-selected]\");\n        if (!sel || !this.info)\n            return null;\n        let listRect = this.dom.getBoundingClientRect();\n        let infoRect = this.info.getBoundingClientRect();\n        let selRect = sel.getBoundingClientRect();\n        let space = this.space;\n        if (!space) {\n            let docElt = this.dom.ownerDocument.documentElement;\n            space = { left: 0, top: 0, right: docElt.clientWidth, bottom: docElt.clientHeight };\n        }\n        if (selRect.top > Math.min(space.bottom, listRect.bottom) - 10 ||\n            selRect.bottom < Math.max(space.top, listRect.top) + 10)\n            return null;\n        return this.view.state.facet(completionConfig).positionInfo(this.view, listRect, selRect, infoRect, space, this.dom);\n    }\n    placeInfo(pos) {\n        if (this.info) {\n            if (pos) {\n                if (pos.style)\n                    this.info.style.cssText = pos.style;\n                this.info.className = \"cm-tooltip cm-completionInfo \" + (pos.class || \"\");\n            }\n            else {\n                this.info.style.cssText = \"top: -1e6px\";\n            }\n        }\n    }\n    createListBox(options, id, range) {\n        const ul = document.createElement(\"ul\");\n        ul.id = id;\n        ul.setAttribute(\"role\", \"listbox\");\n        ul.setAttribute(\"aria-expanded\", \"true\");\n        ul.setAttribute(\"aria-label\", this.view.state.phrase(\"Completions\"));\n        ul.addEventListener(\"mousedown\", e => {\n            // Prevent focus change when clicking the scrollbar\n            if (e.target == ul)\n                e.preventDefault();\n        });\n        let curSection = null;\n        for (let i = range.from; i < range.to; i++) {\n            let { completion, match } = options[i], { section } = completion;\n            if (section) {\n                let name = typeof section == \"string\" ? section : section.name;\n                if (name != curSection && (i > range.from || range.from == 0)) {\n                    curSection = name;\n                    if (typeof section != \"string\" && section.header) {\n                        ul.appendChild(section.header(section));\n                    }\n                    else {\n                        let header = ul.appendChild(document.createElement(\"completion-section\"));\n                        header.textContent = name;\n                    }\n                }\n            }\n            const li = ul.appendChild(document.createElement(\"li\"));\n            li.id = id + \"-\" + i;\n            li.setAttribute(\"role\", \"option\");\n            let cls = this.optionClass(completion);\n            if (cls)\n                li.className = cls;\n            for (let source of this.optionContent) {\n                let node = source(completion, this.view.state, this.view, match);\n                if (node)\n                    li.appendChild(node);\n            }\n        }\n        if (range.from)\n            ul.classList.add(\"cm-completionListIncompleteTop\");\n        if (range.to < options.length)\n            ul.classList.add(\"cm-completionListIncompleteBottom\");\n        return ul;\n    }\n    destroyInfo() {\n        if (this.info) {\n            if (this.infoDestroy)\n                this.infoDestroy();\n            this.info.remove();\n            this.info = null;\n        }\n    }\n    destroy() {\n        this.destroyInfo();\n    }\n}\nfunction completionTooltip(stateField, applyCompletion) {\n    return (view) => new CompletionTooltip(view, stateField, applyCompletion);\n}\nfunction scrollIntoView(container, element) {\n    let parent = container.getBoundingClientRect();\n    let self = element.getBoundingClientRect();\n    let scaleY = parent.height / container.offsetHeight;\n    if (self.top < parent.top)\n        container.scrollTop -= (parent.top - self.top) / scaleY;\n    else if (self.bottom > parent.bottom)\n        container.scrollTop += (self.bottom - parent.bottom) / scaleY;\n}\n\n// Used to pick a preferred option when two options with the same\n// label occur in the result.\nfunction score(option) {\n    return (option.boost || 0) * 100 + (option.apply ? 10 : 0) + (option.info ? 5 : 0) +\n        (option.type ? 1 : 0);\n}\nfunction sortOptions(active, state) {\n    let options = [];\n    let sections = null;\n    let addOption = (option) => {\n        options.push(option);\n        let { section } = option.completion;\n        if (section) {\n            if (!sections)\n                sections = [];\n            let name = typeof section == \"string\" ? section : section.name;\n            if (!sections.some(s => s.name == name))\n                sections.push(typeof section == \"string\" ? { name } : section);\n        }\n    };\n    let conf = state.facet(completionConfig);\n    for (let a of active)\n        if (a.hasResult()) {\n            let getMatch = a.result.getMatch;\n            if (a.result.filter === false) {\n                for (let option of a.result.options) {\n                    addOption(new Option(option, a.source, getMatch ? getMatch(option) : [], 1e9 - options.length));\n                }\n            }\n            else {\n                let pattern = state.sliceDoc(a.from, a.to), match;\n                let matcher = conf.filterStrict ? new StrictMatcher(pattern) : new FuzzyMatcher(pattern);\n                for (let option of a.result.options)\n                    if (match = matcher.match(option.label)) {\n                        let matched = !option.displayLabel ? match.matched : getMatch ? getMatch(option, match.matched) : [];\n                        addOption(new Option(option, a.source, matched, match.score + (option.boost || 0)));\n                    }\n            }\n        }\n    if (sections) {\n        let sectionOrder = Object.create(null), pos = 0;\n        let cmp = (a, b) => { var _a, _b; return ((_a = a.rank) !== null && _a !== void 0 ? _a : 1e9) - ((_b = b.rank) !== null && _b !== void 0 ? _b : 1e9) || (a.name < b.name ? -1 : 1); };\n        for (let s of sections.sort(cmp)) {\n            pos -= 1e5;\n            sectionOrder[s.name] = pos;\n        }\n        for (let option of options) {\n            let { section } = option.completion;\n            if (section)\n                option.score += sectionOrder[typeof section == \"string\" ? section : section.name];\n        }\n    }\n    let result = [], prev = null;\n    let compare = conf.compareCompletions;\n    for (let opt of options.sort((a, b) => (b.score - a.score) || compare(a.completion, b.completion))) {\n        let cur = opt.completion;\n        if (!prev || prev.label != cur.label || prev.detail != cur.detail ||\n            (prev.type != null && cur.type != null && prev.type != cur.type) ||\n            prev.apply != cur.apply || prev.boost != cur.boost)\n            result.push(opt);\n        else if (score(opt.completion) > score(prev))\n            result[result.length - 1] = opt;\n        prev = opt.completion;\n    }\n    return result;\n}\nclass CompletionDialog {\n    constructor(options, attrs, tooltip, timestamp, selected, disabled) {\n        this.options = options;\n        this.attrs = attrs;\n        this.tooltip = tooltip;\n        this.timestamp = timestamp;\n        this.selected = selected;\n        this.disabled = disabled;\n    }\n    setSelected(selected, id) {\n        return selected == this.selected || selected >= this.options.length ? this\n            : new CompletionDialog(this.options, makeAttrs(id, selected), this.tooltip, this.timestamp, selected, this.disabled);\n    }\n    static build(active, state, id, prev, conf, didSetActive) {\n        if (prev && !didSetActive && active.some(s => s.isPending))\n            return prev.setDisabled();\n        let options = sortOptions(active, state);\n        if (!options.length)\n            return prev && active.some(a => a.isPending) ? prev.setDisabled() : null;\n        let selected = state.facet(completionConfig).selectOnOpen ? 0 : -1;\n        if (prev && prev.selected != selected && prev.selected != -1) {\n            let selectedValue = prev.options[prev.selected].completion;\n            for (let i = 0; i < options.length; i++)\n                if (options[i].completion == selectedValue) {\n                    selected = i;\n                    break;\n                }\n        }\n        return new CompletionDialog(options, makeAttrs(id, selected), {\n            pos: active.reduce((a, b) => b.hasResult() ? Math.min(a, b.from) : a, 1e8),\n            create: createTooltip,\n            above: conf.aboveCursor,\n        }, prev ? prev.timestamp : Date.now(), selected, false);\n    }\n    map(changes) {\n        return new CompletionDialog(this.options, this.attrs, Object.assign(Object.assign({}, this.tooltip), { pos: changes.mapPos(this.tooltip.pos) }), this.timestamp, this.selected, this.disabled);\n    }\n    setDisabled() {\n        return new CompletionDialog(this.options, this.attrs, this.tooltip, this.timestamp, this.selected, true);\n    }\n}\nclass CompletionState {\n    constructor(active, id, open) {\n        this.active = active;\n        this.id = id;\n        this.open = open;\n    }\n    static start() {\n        return new CompletionState(none, \"cm-ac-\" + Math.floor(Math.random() * 2e6).toString(36), null);\n    }\n    update(tr) {\n        let { state } = tr, conf = state.facet(completionConfig);\n        let sources = conf.override ||\n            state.languageDataAt(\"autocomplete\", cur(state)).map(asSource);\n        let active = sources.map(source => {\n            let value = this.active.find(s => s.source == source) ||\n                new ActiveSource(source, this.active.some(a => a.state != 0 /* State.Inactive */) ? 1 /* State.Pending */ : 0 /* State.Inactive */);\n            return value.update(tr, conf);\n        });\n        if (active.length == this.active.length && active.every((a, i) => a == this.active[i]))\n            active = this.active;\n        let open = this.open, didSet = tr.effects.some(e => e.is(setActiveEffect));\n        if (open && tr.docChanged)\n            open = open.map(tr.changes);\n        if (tr.selection || active.some(a => a.hasResult() && tr.changes.touchesRange(a.from, a.to)) ||\n            !sameResults(active, this.active) || didSet)\n            open = CompletionDialog.build(active, state, this.id, open, conf, didSet);\n        else if (open && open.disabled && !active.some(a => a.isPending))\n            open = null;\n        if (!open && active.every(a => !a.isPending) && active.some(a => a.hasResult()))\n            active = active.map(a => a.hasResult() ? new ActiveSource(a.source, 0 /* State.Inactive */) : a);\n        for (let effect of tr.effects)\n            if (effect.is(setSelectedEffect))\n                open = open && open.setSelected(effect.value, this.id);\n        return active == this.active && open == this.open ? this : new CompletionState(active, this.id, open);\n    }\n    get tooltip() { return this.open ? this.open.tooltip : null; }\n    get attrs() { return this.open ? this.open.attrs : this.active.length ? baseAttrs : noAttrs; }\n}\nfunction sameResults(a, b) {\n    if (a == b)\n        return true;\n    for (let iA = 0, iB = 0;;) {\n        while (iA < a.length && !a[iA].hasResult())\n            iA++;\n        while (iB < b.length && !b[iB].hasResult())\n            iB++;\n        let endA = iA == a.length, endB = iB == b.length;\n        if (endA || endB)\n            return endA == endB;\n        if (a[iA++].result != b[iB++].result)\n            return false;\n    }\n}\nconst baseAttrs = {\n    \"aria-autocomplete\": \"list\"\n};\nconst noAttrs = {};\nfunction makeAttrs(id, selected) {\n    let result = {\n        \"aria-autocomplete\": \"list\",\n        \"aria-haspopup\": \"listbox\",\n        \"aria-controls\": id\n    };\n    if (selected > -1)\n        result[\"aria-activedescendant\"] = id + \"-\" + selected;\n    return result;\n}\nconst none = [];\nfunction getUpdateType(tr, conf) {\n    if (tr.isUserEvent(\"input.complete\")) {\n        let completion = tr.annotation(pickedCompletion);\n        if (completion && conf.activateOnCompletion(completion))\n            return 4 /* UpdateType.Activate */ | 8 /* UpdateType.Reset */;\n    }\n    let typing = tr.isUserEvent(\"input.type\");\n    return typing && conf.activateOnTyping ? 4 /* UpdateType.Activate */ | 1 /* UpdateType.Typing */\n        : typing ? 1 /* UpdateType.Typing */\n            : tr.isUserEvent(\"delete.backward\") ? 2 /* UpdateType.Backspacing */\n                : tr.selection ? 8 /* UpdateType.Reset */\n                    : tr.docChanged ? 16 /* UpdateType.ResetIfTouching */ : 0 /* UpdateType.None */;\n}\nclass ActiveSource {\n    constructor(source, state, explicit = false) {\n        this.source = source;\n        this.state = state;\n        this.explicit = explicit;\n    }\n    hasResult() { return false; }\n    get isPending() { return this.state == 1 /* State.Pending */; }\n    update(tr, conf) {\n        let type = getUpdateType(tr, conf), value = this;\n        if ((type & 8 /* UpdateType.Reset */) || (type & 16 /* UpdateType.ResetIfTouching */) && this.touches(tr))\n            value = new ActiveSource(value.source, 0 /* State.Inactive */);\n        if ((type & 4 /* UpdateType.Activate */) && value.state == 0 /* State.Inactive */)\n            value = new ActiveSource(this.source, 1 /* State.Pending */);\n        value = value.updateFor(tr, type);\n        for (let effect of tr.effects) {\n            if (effect.is(startCompletionEffect))\n                value = new ActiveSource(value.source, 1 /* State.Pending */, effect.value);\n            else if (effect.is(closeCompletionEffect))\n                value = new ActiveSource(value.source, 0 /* State.Inactive */);\n            else if (effect.is(setActiveEffect))\n                for (let active of effect.value)\n                    if (active.source == value.source)\n                        value = active;\n        }\n        return value;\n    }\n    updateFor(tr, type) { return this.map(tr.changes); }\n    map(changes) { return this; }\n    touches(tr) {\n        return tr.changes.touchesRange(cur(tr.state));\n    }\n}\nclass ActiveResult extends ActiveSource {\n    constructor(source, explicit, limit, result, from, to) {\n        super(source, 3 /* State.Result */, explicit);\n        this.limit = limit;\n        this.result = result;\n        this.from = from;\n        this.to = to;\n    }\n    hasResult() { return true; }\n    updateFor(tr, type) {\n        var _a;\n        if (!(type & 3 /* UpdateType.SimpleInteraction */))\n            return this.map(tr.changes);\n        let result = this.result;\n        if (result.map && !tr.changes.empty)\n            result = result.map(result, tr.changes);\n        let from = tr.changes.mapPos(this.from), to = tr.changes.mapPos(this.to, 1);\n        let pos = cur(tr.state);\n        if (pos > to || !result ||\n            (type & 2 /* UpdateType.Backspacing */) && (cur(tr.startState) == this.from || pos < this.limit))\n            return new ActiveSource(this.source, type & 4 /* UpdateType.Activate */ ? 1 /* State.Pending */ : 0 /* State.Inactive */);\n        let limit = tr.changes.mapPos(this.limit);\n        if (checkValid(result.validFor, tr.state, from, to))\n            return new ActiveResult(this.source, this.explicit, limit, result, from, to);\n        if (result.update &&\n            (result = result.update(result, from, to, new CompletionContext(tr.state, pos, false))))\n            return new ActiveResult(this.source, this.explicit, limit, result, result.from, (_a = result.to) !== null && _a !== void 0 ? _a : cur(tr.state));\n        return new ActiveSource(this.source, 1 /* State.Pending */, this.explicit);\n    }\n    map(mapping) {\n        if (mapping.empty)\n            return this;\n        let result = this.result.map ? this.result.map(this.result, mapping) : this.result;\n        if (!result)\n            return new ActiveSource(this.source, 0 /* State.Inactive */);\n        return new ActiveResult(this.source, this.explicit, mapping.mapPos(this.limit), this.result, mapping.mapPos(this.from), mapping.mapPos(this.to, 1));\n    }\n    touches(tr) {\n        return tr.changes.touchesRange(this.from, this.to);\n    }\n}\nfunction checkValid(validFor, state, from, to) {\n    if (!validFor)\n        return false;\n    let text = state.sliceDoc(from, to);\n    return typeof validFor == \"function\" ? validFor(text, from, to, state) : ensureAnchor(validFor, true).test(text);\n}\nconst setActiveEffect = /*@__PURE__*/StateEffect.define({\n    map(sources, mapping) { return sources.map(s => s.map(mapping)); }\n});\nconst setSelectedEffect = /*@__PURE__*/StateEffect.define();\nconst completionState = /*@__PURE__*/StateField.define({\n    create() { return CompletionState.start(); },\n    update(value, tr) { return value.update(tr); },\n    provide: f => [\n        showTooltip.from(f, val => val.tooltip),\n        EditorView.contentAttributes.from(f, state => state.attrs)\n    ]\n});\nfunction applyCompletion(view, option) {\n    const apply = option.completion.apply || option.completion.label;\n    let result = view.state.field(completionState).active.find(a => a.source == option.source);\n    if (!(result instanceof ActiveResult))\n        return false;\n    if (typeof apply == \"string\")\n        view.dispatch(Object.assign(Object.assign({}, insertCompletionText(view.state, apply, result.from, result.to)), { annotations: pickedCompletion.of(option.completion) }));\n    else\n        apply(view, option.completion, result.from, result.to);\n    return true;\n}\nconst createTooltip = /*@__PURE__*/completionTooltip(completionState, applyCompletion);\n\n/**\nReturns a command that moves the completion selection forward or\nbackward by the given amount.\n*/\nfunction moveCompletionSelection(forward, by = \"option\") {\n    return (view) => {\n        let cState = view.state.field(completionState, false);\n        if (!cState || !cState.open || cState.open.disabled ||\n            Date.now() - cState.open.timestamp < view.state.facet(completionConfig).interactionDelay)\n            return false;\n        let step = 1, tooltip;\n        if (by == \"page\" && (tooltip = getTooltip(view, cState.open.tooltip)))\n            step = Math.max(2, Math.floor(tooltip.dom.offsetHeight /\n                tooltip.dom.querySelector(\"li\").offsetHeight) - 1);\n        let { length } = cState.open.options;\n        let selected = cState.open.selected > -1 ? cState.open.selected + step * (forward ? 1 : -1) : forward ? 0 : length - 1;\n        if (selected < 0)\n            selected = by == \"page\" ? 0 : length - 1;\n        else if (selected >= length)\n            selected = by == \"page\" ? length - 1 : 0;\n        view.dispatch({ effects: setSelectedEffect.of(selected) });\n        return true;\n    };\n}\n/**\nAccept the current completion.\n*/\nconst acceptCompletion = (view) => {\n    let cState = view.state.field(completionState, false);\n    if (view.state.readOnly || !cState || !cState.open || cState.open.selected < 0 || cState.open.disabled ||\n        Date.now() - cState.open.timestamp < view.state.facet(completionConfig).interactionDelay)\n        return false;\n    return applyCompletion(view, cState.open.options[cState.open.selected]);\n};\n/**\nExplicitly start autocompletion.\n*/\nconst startCompletion = (view) => {\n    let cState = view.state.field(completionState, false);\n    if (!cState)\n        return false;\n    view.dispatch({ effects: startCompletionEffect.of(true) });\n    return true;\n};\n/**\nClose the currently active completion.\n*/\nconst closeCompletion = (view) => {\n    let cState = view.state.field(completionState, false);\n    if (!cState || !cState.active.some(a => a.state != 0 /* State.Inactive */))\n        return false;\n    view.dispatch({ effects: closeCompletionEffect.of(null) });\n    return true;\n};\nclass RunningQuery {\n    constructor(active, context) {\n        this.active = active;\n        this.context = context;\n        this.time = Date.now();\n        this.updates = [];\n        // Note that 'undefined' means 'not done yet', whereas 'null' means\n        // 'query returned null'.\n        this.done = undefined;\n    }\n}\nconst MaxUpdateCount = 50, MinAbortTime = 1000;\nconst completionPlugin = /*@__PURE__*/ViewPlugin.fromClass(class {\n    constructor(view) {\n        this.view = view;\n        this.debounceUpdate = -1;\n        this.running = [];\n        this.debounceAccept = -1;\n        this.pendingStart = false;\n        this.composing = 0 /* CompositionState.None */;\n        for (let active of view.state.field(completionState).active)\n            if (active.isPending)\n                this.startQuery(active);\n    }\n    update(update) {\n        let cState = update.state.field(completionState);\n        let conf = update.state.facet(completionConfig);\n        if (!update.selectionSet && !update.docChanged && update.startState.field(completionState) == cState)\n            return;\n        let doesReset = update.transactions.some(tr => {\n            let type = getUpdateType(tr, conf);\n            return (type & 8 /* UpdateType.Reset */) || (tr.selection || tr.docChanged) && !(type & 3 /* UpdateType.SimpleInteraction */);\n        });\n        for (let i = 0; i < this.running.length; i++) {\n            let query = this.running[i];\n            if (doesReset ||\n                query.context.abortOnDocChange && update.docChanged ||\n                query.updates.length + update.transactions.length > MaxUpdateCount && Date.now() - query.time > MinAbortTime) {\n                for (let handler of query.context.abortListeners) {\n                    try {\n                        handler();\n                    }\n                    catch (e) {\n                        logException(this.view.state, e);\n                    }\n                }\n                query.context.abortListeners = null;\n                this.running.splice(i--, 1);\n            }\n            else {\n                query.updates.push(...update.transactions);\n            }\n        }\n        if (this.debounceUpdate > -1)\n            clearTimeout(this.debounceUpdate);\n        if (update.transactions.some(tr => tr.effects.some(e => e.is(startCompletionEffect))))\n            this.pendingStart = true;\n        let delay = this.pendingStart ? 50 : conf.activateOnTypingDelay;\n        this.debounceUpdate = cState.active.some(a => a.isPending && !this.running.some(q => q.active.source == a.source))\n            ? setTimeout(() => this.startUpdate(), delay) : -1;\n        if (this.composing != 0 /* CompositionState.None */)\n            for (let tr of update.transactions) {\n                if (tr.isUserEvent(\"input.type\"))\n                    this.composing = 2 /* CompositionState.Changed */;\n                else if (this.composing == 2 /* CompositionState.Changed */ && tr.selection)\n                    this.composing = 3 /* CompositionState.ChangedAndMoved */;\n            }\n    }\n    startUpdate() {\n        this.debounceUpdate = -1;\n        this.pendingStart = false;\n        let { state } = this.view, cState = state.field(completionState);\n        for (let active of cState.active) {\n            if (active.isPending && !this.running.some(r => r.active.source == active.source))\n                this.startQuery(active);\n        }\n        if (this.running.length && cState.open && cState.open.disabled)\n            this.debounceAccept = setTimeout(() => this.accept(), this.view.state.facet(completionConfig).updateSyncTime);\n    }\n    startQuery(active) {\n        let { state } = this.view, pos = cur(state);\n        let context = new CompletionContext(state, pos, active.explicit, this.view);\n        let pending = new RunningQuery(active, context);\n        this.running.push(pending);\n        Promise.resolve(active.source(context)).then(result => {\n            if (!pending.context.aborted) {\n                pending.done = result || null;\n                this.scheduleAccept();\n            }\n        }, err => {\n            this.view.dispatch({ effects: closeCompletionEffect.of(null) });\n            logException(this.view.state, err);\n        });\n    }\n    scheduleAccept() {\n        if (this.running.every(q => q.done !== undefined))\n            this.accept();\n        else if (this.debounceAccept < 0)\n            this.debounceAccept = setTimeout(() => this.accept(), this.view.state.facet(completionConfig).updateSyncTime);\n    }\n    // For each finished query in this.running, try to create a result\n    // or, if appropriate, restart the query.\n    accept() {\n        var _a;\n        if (this.debounceAccept > -1)\n            clearTimeout(this.debounceAccept);\n        this.debounceAccept = -1;\n        let updated = [];\n        let conf = this.view.state.facet(completionConfig), cState = this.view.state.field(completionState);\n        for (let i = 0; i < this.running.length; i++) {\n            let query = this.running[i];\n            if (query.done === undefined)\n                continue;\n            this.running.splice(i--, 1);\n            if (query.done) {\n                let pos = cur(query.updates.length ? query.updates[0].startState : this.view.state);\n                let limit = Math.min(pos, query.done.from + (query.active.explicit ? 0 : 1));\n                let active = new ActiveResult(query.active.source, query.active.explicit, limit, query.done, query.done.from, (_a = query.done.to) !== null && _a !== void 0 ? _a : pos);\n                // Replay the transactions that happened since the start of\n                // the request and see if that preserves the result\n                for (let tr of query.updates)\n                    active = active.update(tr, conf);\n                if (active.hasResult()) {\n                    updated.push(active);\n                    continue;\n                }\n            }\n            let current = cState.active.find(a => a.source == query.active.source);\n            if (current && current.isPending) {\n                if (query.done == null) {\n                    // Explicitly failed. Should clear the pending status if it\n                    // hasn't been re-set in the meantime.\n                    let active = new ActiveSource(query.active.source, 0 /* State.Inactive */);\n                    for (let tr of query.updates)\n                        active = active.update(tr, conf);\n                    if (!active.isPending)\n                        updated.push(active);\n                }\n                else {\n                    // Cleared by subsequent transactions. Restart.\n                    this.startQuery(current);\n                }\n            }\n        }\n        if (updated.length || cState.open && cState.open.disabled)\n            this.view.dispatch({ effects: setActiveEffect.of(updated) });\n    }\n}, {\n    eventHandlers: {\n        blur(event) {\n            let state = this.view.state.field(completionState, false);\n            if (state && state.tooltip && this.view.state.facet(completionConfig).closeOnBlur) {\n                let dialog = state.open && getTooltip(this.view, state.open.tooltip);\n                if (!dialog || !dialog.dom.contains(event.relatedTarget))\n                    setTimeout(() => this.view.dispatch({ effects: closeCompletionEffect.of(null) }), 10);\n            }\n        },\n        compositionstart() {\n            this.composing = 1 /* CompositionState.Started */;\n        },\n        compositionend() {\n            if (this.composing == 3 /* CompositionState.ChangedAndMoved */) {\n                // Safari fires compositionend events synchronously, possibly\n                // from inside an update, so dispatch asynchronously to avoid reentrancy\n                setTimeout(() => this.view.dispatch({ effects: startCompletionEffect.of(false) }), 20);\n            }\n            this.composing = 0 /* CompositionState.None */;\n        }\n    }\n});\nconst windows = typeof navigator == \"object\" && /*@__PURE__*//Win/.test(navigator.platform);\nconst commitCharacters = /*@__PURE__*/Prec.highest(/*@__PURE__*/EditorView.domEventHandlers({\n    keydown(event, view) {\n        let field = view.state.field(completionState, false);\n        if (!field || !field.open || field.open.disabled || field.open.selected < 0 ||\n            event.key.length > 1 || event.ctrlKey && !(windows && event.altKey) || event.metaKey)\n            return false;\n        let option = field.open.options[field.open.selected];\n        let result = field.active.find(a => a.source == option.source);\n        let commitChars = option.completion.commitCharacters || result.result.commitCharacters;\n        if (commitChars && commitChars.indexOf(event.key) > -1)\n            applyCompletion(view, option);\n        return false;\n    }\n}));\n\nconst baseTheme = /*@__PURE__*/EditorView.baseTheme({\n    \".cm-tooltip.cm-tooltip-autocomplete\": {\n        \"& > ul\": {\n            fontFamily: \"monospace\",\n            whiteSpace: \"nowrap\",\n            overflow: \"hidden auto\",\n            maxWidth_fallback: \"700px\",\n            maxWidth: \"min(700px, 95vw)\",\n            minWidth: \"250px\",\n            maxHeight: \"10em\",\n            height: \"100%\",\n            listStyle: \"none\",\n            margin: 0,\n            padding: 0,\n            \"& > li, & > completion-section\": {\n                padding: \"1px 3px\",\n                lineHeight: 1.2\n            },\n            \"& > li\": {\n                overflowX: \"hidden\",\n                textOverflow: \"ellipsis\",\n                cursor: \"pointer\"\n            },\n            \"& > completion-section\": {\n                display: \"list-item\",\n                borderBottom: \"1px solid silver\",\n                paddingLeft: \"0.5em\",\n                opacity: 0.7\n            }\n        }\n    },\n    \"&light .cm-tooltip-autocomplete ul li[aria-selected]\": {\n        background: \"#17c\",\n        color: \"white\",\n    },\n    \"&light .cm-tooltip-autocomplete-disabled ul li[aria-selected]\": {\n        background: \"#777\",\n    },\n    \"&dark .cm-tooltip-autocomplete ul li[aria-selected]\": {\n        background: \"#347\",\n        color: \"white\",\n    },\n    \"&dark .cm-tooltip-autocomplete-disabled ul li[aria-selected]\": {\n        background: \"#444\",\n    },\n    \".cm-completionListIncompleteTop:before, .cm-completionListIncompleteBottom:after\": {\n        content: '\"···\"',\n        opacity: 0.5,\n        display: \"block\",\n        textAlign: \"center\"\n    },\n    \".cm-tooltip.cm-completionInfo\": {\n        position: \"absolute\",\n        padding: \"3px 9px\",\n        width: \"max-content\",\n        maxWidth: `${400 /* Info.Width */}px`,\n        boxSizing: \"border-box\",\n        whiteSpace: \"pre-line\"\n    },\n    \".cm-completionInfo.cm-completionInfo-left\": { right: \"100%\" },\n    \".cm-completionInfo.cm-completionInfo-right\": { left: \"100%\" },\n    \".cm-completionInfo.cm-completionInfo-left-narrow\": { right: `${30 /* Info.Margin */}px` },\n    \".cm-completionInfo.cm-completionInfo-right-narrow\": { left: `${30 /* Info.Margin */}px` },\n    \"&light .cm-snippetField\": { backgroundColor: \"#00000022\" },\n    \"&dark .cm-snippetField\": { backgroundColor: \"#ffffff22\" },\n    \".cm-snippetFieldPosition\": {\n        verticalAlign: \"text-top\",\n        width: 0,\n        height: \"1.15em\",\n        display: \"inline-block\",\n        margin: \"0 -0.7px -.7em\",\n        borderLeft: \"1.4px dotted #888\"\n    },\n    \".cm-completionMatchedText\": {\n        textDecoration: \"underline\"\n    },\n    \".cm-completionDetail\": {\n        marginLeft: \"0.5em\",\n        fontStyle: \"italic\"\n    },\n    \".cm-completionIcon\": {\n        fontSize: \"90%\",\n        width: \".8em\",\n        display: \"inline-block\",\n        textAlign: \"center\",\n        paddingRight: \".6em\",\n        opacity: \"0.6\",\n        boxSizing: \"content-box\"\n    },\n    \".cm-completionIcon-function, .cm-completionIcon-method\": {\n        \"&:after\": { content: \"'ƒ'\" }\n    },\n    \".cm-completionIcon-class\": {\n        \"&:after\": { content: \"'○'\" }\n    },\n    \".cm-completionIcon-interface\": {\n        \"&:after\": { content: \"'◌'\" }\n    },\n    \".cm-completionIcon-variable\": {\n        \"&:after\": { content: \"'𝑥'\" }\n    },\n    \".cm-completionIcon-constant\": {\n        \"&:after\": { content: \"'𝐶'\" }\n    },\n    \".cm-completionIcon-type\": {\n        \"&:after\": { content: \"'𝑡'\" }\n    },\n    \".cm-completionIcon-enum\": {\n        \"&:after\": { content: \"'∪'\" }\n    },\n    \".cm-completionIcon-property\": {\n        \"&:after\": { content: \"'□'\" }\n    },\n    \".cm-completionIcon-keyword\": {\n        \"&:after\": { content: \"'🔑\\uFE0E'\" } // Disable emoji rendering\n    },\n    \".cm-completionIcon-namespace\": {\n        \"&:after\": { content: \"'▢'\" }\n    },\n    \".cm-completionIcon-text\": {\n        \"&:after\": { content: \"'abc'\", fontSize: \"50%\", verticalAlign: \"middle\" }\n    }\n});\n\nclass FieldPos {\n    constructor(field, line, from, to) {\n        this.field = field;\n        this.line = line;\n        this.from = from;\n        this.to = to;\n    }\n}\nclass FieldRange {\n    constructor(field, from, to) {\n        this.field = field;\n        this.from = from;\n        this.to = to;\n    }\n    map(changes) {\n        let from = changes.mapPos(this.from, -1, MapMode.TrackDel);\n        let to = changes.mapPos(this.to, 1, MapMode.TrackDel);\n        return from == null || to == null ? null : new FieldRange(this.field, from, to);\n    }\n}\nclass Snippet {\n    constructor(lines, fieldPositions) {\n        this.lines = lines;\n        this.fieldPositions = fieldPositions;\n    }\n    instantiate(state, pos) {\n        let text = [], lineStart = [pos];\n        let lineObj = state.doc.lineAt(pos), baseIndent = /^\\s*/.exec(lineObj.text)[0];\n        for (let line of this.lines) {\n            if (text.length) {\n                let indent = baseIndent, tabs = /^\\t*/.exec(line)[0].length;\n                for (let i = 0; i < tabs; i++)\n                    indent += state.facet(indentUnit);\n                lineStart.push(pos + indent.length - tabs);\n                line = indent + line.slice(tabs);\n            }\n            text.push(line);\n            pos += line.length + 1;\n        }\n        let ranges = this.fieldPositions.map(pos => new FieldRange(pos.field, lineStart[pos.line] + pos.from, lineStart[pos.line] + pos.to));\n        return { text, ranges };\n    }\n    static parse(template) {\n        let fields = [];\n        let lines = [], positions = [], m;\n        for (let line of template.split(/\\r\\n?|\\n/)) {\n            while (m = /[#$]\\{(?:(\\d+)(?::([^}]*))?|((?:\\\\[{}]|[^}])*))\\}/.exec(line)) {\n                let seq = m[1] ? +m[1] : null, rawName = m[2] || m[3] || \"\", found = -1;\n                let name = rawName.replace(/\\\\[{}]/g, m => m[1]);\n                for (let i = 0; i < fields.length; i++) {\n                    if (seq != null ? fields[i].seq == seq : name ? fields[i].name == name : false)\n                        found = i;\n                }\n                if (found < 0) {\n                    let i = 0;\n                    while (i < fields.length && (seq == null || (fields[i].seq != null && fields[i].seq < seq)))\n                        i++;\n                    fields.splice(i, 0, { seq, name });\n                    found = i;\n                    for (let pos of positions)\n                        if (pos.field >= found)\n                            pos.field++;\n                }\n                positions.push(new FieldPos(found, lines.length, m.index, m.index + name.length));\n                line = line.slice(0, m.index) + rawName + line.slice(m.index + m[0].length);\n            }\n            line = line.replace(/\\\\([{}])/g, (_, brace, index) => {\n                for (let pos of positions)\n                    if (pos.line == lines.length && pos.from > index) {\n                        pos.from--;\n                        pos.to--;\n                    }\n                return brace;\n            });\n            lines.push(line);\n        }\n        return new Snippet(lines, positions);\n    }\n}\nlet fieldMarker = /*@__PURE__*/Decoration.widget({ widget: /*@__PURE__*/new class extends WidgetType {\n        toDOM() {\n            let span = document.createElement(\"span\");\n            span.className = \"cm-snippetFieldPosition\";\n            return span;\n        }\n        ignoreEvent() { return false; }\n    } });\nlet fieldRange = /*@__PURE__*/Decoration.mark({ class: \"cm-snippetField\" });\nclass ActiveSnippet {\n    constructor(ranges, active) {\n        this.ranges = ranges;\n        this.active = active;\n        this.deco = Decoration.set(ranges.map(r => (r.from == r.to ? fieldMarker : fieldRange).range(r.from, r.to)));\n    }\n    map(changes) {\n        let ranges = [];\n        for (let r of this.ranges) {\n            let mapped = r.map(changes);\n            if (!mapped)\n                return null;\n            ranges.push(mapped);\n        }\n        return new ActiveSnippet(ranges, this.active);\n    }\n    selectionInsideField(sel) {\n        return sel.ranges.every(range => this.ranges.some(r => r.field == this.active && r.from <= range.from && r.to >= range.to));\n    }\n}\nconst setActive = /*@__PURE__*/StateEffect.define({\n    map(value, changes) { return value && value.map(changes); }\n});\nconst moveToField = /*@__PURE__*/StateEffect.define();\nconst snippetState = /*@__PURE__*/StateField.define({\n    create() { return null; },\n    update(value, tr) {\n        for (let effect of tr.effects) {\n            if (effect.is(setActive))\n                return effect.value;\n            if (effect.is(moveToField) && value)\n                return new ActiveSnippet(value.ranges, effect.value);\n        }\n        if (value && tr.docChanged)\n            value = value.map(tr.changes);\n        if (value && tr.selection && !value.selectionInsideField(tr.selection))\n            value = null;\n        return value;\n    },\n    provide: f => EditorView.decorations.from(f, val => val ? val.deco : Decoration.none)\n});\nfunction fieldSelection(ranges, field) {\n    return EditorSelection.create(ranges.filter(r => r.field == field).map(r => EditorSelection.range(r.from, r.to)));\n}\n/**\nConvert a snippet template to a function that can\n[apply](https://codemirror.net/6/docs/ref/#autocomplete.Completion.apply) it. Snippets are written\nusing syntax like this:\n\n    \"for (let ${index} = 0; ${index} < ${end}; ${index}++) {\\n\\t${}\\n}\"\n\nEach `${}` placeholder (you may also use `#{}`) indicates a field\nthat the user can fill in. Its name, if any, will be the default\ncontent for the field.\n\nWhen the snippet is activated by calling the returned function,\nthe code is inserted at the given position. Newlines in the\ntemplate are indented by the indentation of the start line, plus\none [indent unit](https://codemirror.net/6/docs/ref/#language.indentUnit) per tab character after\nthe newline.\n\nOn activation, (all instances of) the first field are selected.\nThe user can move between fields with Tab and Shift-Tab as long as\nthe fields are active. Moving to the last field or moving the\ncursor out of the current field deactivates the fields.\n\nThe order of fields defaults to textual order, but you can add\nnumbers to placeholders (`${1}` or `${1:defaultText}`) to provide\na custom order.\n\nTo include a literal `{` or `}` in your template, put a backslash\nin front of it. This will be removed and the brace will not be\ninterpreted as indicating a placeholder.\n*/\nfunction snippet(template) {\n    let snippet = Snippet.parse(template);\n    return (editor, completion, from, to) => {\n        let { text, ranges } = snippet.instantiate(editor.state, from);\n        let { main } = editor.state.selection;\n        let spec = {\n            changes: { from, to: to == main.from ? main.to : to, insert: Text.of(text) },\n            scrollIntoView: true,\n            annotations: completion ? [pickedCompletion.of(completion), Transaction.userEvent.of(\"input.complete\")] : undefined\n        };\n        if (ranges.length)\n            spec.selection = fieldSelection(ranges, 0);\n        if (ranges.some(r => r.field > 0)) {\n            let active = new ActiveSnippet(ranges, 0);\n            let effects = spec.effects = [setActive.of(active)];\n            if (editor.state.field(snippetState, false) === undefined)\n                effects.push(StateEffect.appendConfig.of([snippetState, addSnippetKeymap, snippetPointerHandler, baseTheme]));\n        }\n        editor.dispatch(editor.state.update(spec));\n    };\n}\nfunction moveField(dir) {\n    return ({ state, dispatch }) => {\n        let active = state.field(snippetState, false);\n        if (!active || dir < 0 && active.active == 0)\n            return false;\n        let next = active.active + dir, last = dir > 0 && !active.ranges.some(r => r.field == next + dir);\n        dispatch(state.update({\n            selection: fieldSelection(active.ranges, next),\n            effects: setActive.of(last ? null : new ActiveSnippet(active.ranges, next)),\n            scrollIntoView: true\n        }));\n        return true;\n    };\n}\n/**\nA command that clears the active snippet, if any.\n*/\nconst clearSnippet = ({ state, dispatch }) => {\n    let active = state.field(snippetState, false);\n    if (!active)\n        return false;\n    dispatch(state.update({ effects: setActive.of(null) }));\n    return true;\n};\n/**\nMove to the next snippet field, if available.\n*/\nconst nextSnippetField = /*@__PURE__*/moveField(1);\n/**\nMove to the previous snippet field, if available.\n*/\nconst prevSnippetField = /*@__PURE__*/moveField(-1);\n/**\nCheck if there is an active snippet with a next field for\n`nextSnippetField` to move to.\n*/\nfunction hasNextSnippetField(state) {\n    let active = state.field(snippetState, false);\n    return !!(active && active.ranges.some(r => r.field == active.active + 1));\n}\n/**\nReturns true if there is an active snippet and a previous field\nfor `prevSnippetField` to move to.\n*/\nfunction hasPrevSnippetField(state) {\n    let active = state.field(snippetState, false);\n    return !!(active && active.active > 0);\n}\nconst defaultSnippetKeymap = [\n    { key: \"Tab\", run: nextSnippetField, shift: prevSnippetField },\n    { key: \"Escape\", run: clearSnippet }\n];\n/**\nA facet that can be used to configure the key bindings used by\nsnippets. The default binds Tab to\n[`nextSnippetField`](https://codemirror.net/6/docs/ref/#autocomplete.nextSnippetField), Shift-Tab to\n[`prevSnippetField`](https://codemirror.net/6/docs/ref/#autocomplete.prevSnippetField), and Escape\nto [`clearSnippet`](https://codemirror.net/6/docs/ref/#autocomplete.clearSnippet).\n*/\nconst snippetKeymap = /*@__PURE__*/Facet.define({\n    combine(maps) { return maps.length ? maps[0] : defaultSnippetKeymap; }\n});\nconst addSnippetKeymap = /*@__PURE__*/Prec.highest(/*@__PURE__*/keymap.compute([snippetKeymap], state => state.facet(snippetKeymap)));\n/**\nCreate a completion from a snippet. Returns an object with the\nproperties from `completion`, plus an `apply` function that\napplies the snippet.\n*/\nfunction snippetCompletion(template, completion) {\n    return Object.assign(Object.assign({}, completion), { apply: snippet(template) });\n}\nconst snippetPointerHandler = /*@__PURE__*/EditorView.domEventHandlers({\n    mousedown(event, view) {\n        let active = view.state.field(snippetState, false), pos;\n        if (!active || (pos = view.posAtCoords({ x: event.clientX, y: event.clientY })) == null)\n            return false;\n        let match = active.ranges.find(r => r.from <= pos && r.to >= pos);\n        if (!match || match.field == active.active)\n            return false;\n        view.dispatch({\n            selection: fieldSelection(active.ranges, match.field),\n            effects: setActive.of(active.ranges.some(r => r.field > match.field)\n                ? new ActiveSnippet(active.ranges, match.field) : null),\n            scrollIntoView: true\n        });\n        return true;\n    }\n});\n\nfunction wordRE(wordChars) {\n    let escaped = wordChars.replace(/[\\]\\-\\\\]/g, \"\\\\$&\");\n    try {\n        return new RegExp(`[\\\\p{Alphabetic}\\\\p{Number}_${escaped}]+`, \"ug\");\n    }\n    catch (_a) {\n        return new RegExp(`[\\w${escaped}]`, \"g\");\n    }\n}\nfunction mapRE(re, f) {\n    return new RegExp(f(re.source), re.unicode ? \"u\" : \"\");\n}\nconst wordCaches = /*@__PURE__*/Object.create(null);\nfunction wordCache(wordChars) {\n    return wordCaches[wordChars] || (wordCaches[wordChars] = new WeakMap);\n}\nfunction storeWords(doc, wordRE, result, seen, ignoreAt) {\n    for (let lines = doc.iterLines(), pos = 0; !lines.next().done;) {\n        let { value } = lines, m;\n        wordRE.lastIndex = 0;\n        while (m = wordRE.exec(value)) {\n            if (!seen[m[0]] && pos + m.index != ignoreAt) {\n                result.push({ type: \"text\", label: m[0] });\n                seen[m[0]] = true;\n                if (result.length >= 2000 /* C.MaxList */)\n                    return;\n            }\n        }\n        pos += value.length + 1;\n    }\n}\nfunction collectWords(doc, cache, wordRE, to, ignoreAt) {\n    let big = doc.length >= 1000 /* C.MinCacheLen */;\n    let cached = big && cache.get(doc);\n    if (cached)\n        return cached;\n    let result = [], seen = Object.create(null);\n    if (doc.children) {\n        let pos = 0;\n        for (let ch of doc.children) {\n            if (ch.length >= 1000 /* C.MinCacheLen */) {\n                for (let c of collectWords(ch, cache, wordRE, to - pos, ignoreAt - pos)) {\n                    if (!seen[c.label]) {\n                        seen[c.label] = true;\n                        result.push(c);\n                    }\n                }\n            }\n            else {\n                storeWords(ch, wordRE, result, seen, ignoreAt - pos);\n            }\n            pos += ch.length + 1;\n        }\n    }\n    else {\n        storeWords(doc, wordRE, result, seen, ignoreAt);\n    }\n    if (big && result.length < 2000 /* C.MaxList */)\n        cache.set(doc, result);\n    return result;\n}\n/**\nA completion source that will scan the document for words (using a\n[character categorizer](https://codemirror.net/6/docs/ref/#state.EditorState.charCategorizer)), and\nreturn those as completions.\n*/\nconst completeAnyWord = context => {\n    let wordChars = context.state.languageDataAt(\"wordChars\", context.pos).join(\"\");\n    let re = wordRE(wordChars);\n    let token = context.matchBefore(mapRE(re, s => s + \"$\"));\n    if (!token && !context.explicit)\n        return null;\n    let from = token ? token.from : context.pos;\n    let options = collectWords(context.state.doc, wordCache(wordChars), re, 50000 /* C.Range */, from);\n    return { from, options, validFor: mapRE(re, s => \"^\" + s) };\n};\n\nconst defaults = {\n    brackets: [\"(\", \"[\", \"{\", \"'\", '\"'],\n    before: \")]}:;>\",\n    stringPrefixes: []\n};\nconst closeBracketEffect = /*@__PURE__*/StateEffect.define({\n    map(value, mapping) {\n        let mapped = mapping.mapPos(value, -1, MapMode.TrackAfter);\n        return mapped == null ? undefined : mapped;\n    }\n});\nconst closedBracket = /*@__PURE__*/new class extends RangeValue {\n};\nclosedBracket.startSide = 1;\nclosedBracket.endSide = -1;\nconst bracketState = /*@__PURE__*/StateField.define({\n    create() { return RangeSet.empty; },\n    update(value, tr) {\n        value = value.map(tr.changes);\n        if (tr.selection) {\n            let line = tr.state.doc.lineAt(tr.selection.main.head);\n            value = value.update({ filter: from => from >= line.from && from <= line.to });\n        }\n        for (let effect of tr.effects)\n            if (effect.is(closeBracketEffect))\n                value = value.update({ add: [closedBracket.range(effect.value, effect.value + 1)] });\n        return value;\n    }\n});\n/**\nExtension to enable bracket-closing behavior. When a closeable\nbracket is typed, its closing bracket is immediately inserted\nafter the cursor. When closing a bracket directly in front of a\nclosing bracket inserted by the extension, the cursor moves over\nthat bracket.\n*/\nfunction closeBrackets() {\n    return [inputHandler, bracketState];\n}\nconst definedClosing = \"()[]{}<>«»»«［］｛｝\";\nfunction closing(ch) {\n    for (let i = 0; i < definedClosing.length; i += 2)\n        if (definedClosing.charCodeAt(i) == ch)\n            return definedClosing.charAt(i + 1);\n    return fromCodePoint(ch < 128 ? ch : ch + 1);\n}\nfunction config(state, pos) {\n    return state.languageDataAt(\"closeBrackets\", pos)[0] || defaults;\n}\nconst android = typeof navigator == \"object\" && /*@__PURE__*//Android\\b/.test(navigator.userAgent);\nconst inputHandler = /*@__PURE__*/EditorView.inputHandler.of((view, from, to, insert) => {\n    if ((android ? view.composing : view.compositionStarted) || view.state.readOnly)\n        return false;\n    let sel = view.state.selection.main;\n    if (insert.length > 2 || insert.length == 2 && codePointSize(codePointAt(insert, 0)) == 1 ||\n        from != sel.from || to != sel.to)\n        return false;\n    let tr = insertBracket(view.state, insert);\n    if (!tr)\n        return false;\n    view.dispatch(tr);\n    return true;\n});\n/**\nCommand that implements deleting a pair of matching brackets when\nthe cursor is between them.\n*/\nconst deleteBracketPair = ({ state, dispatch }) => {\n    if (state.readOnly)\n        return false;\n    let conf = config(state, state.selection.main.head);\n    let tokens = conf.brackets || defaults.brackets;\n    let dont = null, changes = state.changeByRange(range => {\n        if (range.empty) {\n            let before = prevChar(state.doc, range.head);\n            for (let token of tokens) {\n                if (token == before && nextChar(state.doc, range.head) == closing(codePointAt(token, 0)))\n                    return { changes: { from: range.head - token.length, to: range.head + token.length },\n                        range: EditorSelection.cursor(range.head - token.length) };\n            }\n        }\n        return { range: dont = range };\n    });\n    if (!dont)\n        dispatch(state.update(changes, { scrollIntoView: true, userEvent: \"delete.backward\" }));\n    return !dont;\n};\n/**\nClose-brackets related key bindings. Binds Backspace to\n[`deleteBracketPair`](https://codemirror.net/6/docs/ref/#autocomplete.deleteBracketPair).\n*/\nconst closeBracketsKeymap = [\n    { key: \"Backspace\", run: deleteBracketPair }\n];\n/**\nImplements the extension's behavior on text insertion. If the\ngiven string counts as a bracket in the language around the\nselection, and replacing the selection with it requires custom\nbehavior (inserting a closing version or skipping past a\npreviously-closed bracket), this function returns a transaction\nrepresenting that custom behavior. (You only need this if you want\nto programmatically insert brackets—the\n[`closeBrackets`](https://codemirror.net/6/docs/ref/#autocomplete.closeBrackets) extension will\ntake care of running this for user input.)\n*/\nfunction insertBracket(state, bracket) {\n    let conf = config(state, state.selection.main.head);\n    let tokens = conf.brackets || defaults.brackets;\n    for (let tok of tokens) {\n        let closed = closing(codePointAt(tok, 0));\n        if (bracket == tok)\n            return closed == tok ? handleSame(state, tok, tokens.indexOf(tok + tok + tok) > -1, conf)\n                : handleOpen(state, tok, closed, conf.before || defaults.before);\n        if (bracket == closed && closedBracketAt(state, state.selection.main.from))\n            return handleClose(state, tok, closed);\n    }\n    return null;\n}\nfunction closedBracketAt(state, pos) {\n    let found = false;\n    state.field(bracketState).between(0, state.doc.length, from => {\n        if (from == pos)\n            found = true;\n    });\n    return found;\n}\nfunction nextChar(doc, pos) {\n    let next = doc.sliceString(pos, pos + 2);\n    return next.slice(0, codePointSize(codePointAt(next, 0)));\n}\nfunction prevChar(doc, pos) {\n    let prev = doc.sliceString(pos - 2, pos);\n    return codePointSize(codePointAt(prev, 0)) == prev.length ? prev : prev.slice(1);\n}\nfunction handleOpen(state, open, close, closeBefore) {\n    let dont = null, changes = state.changeByRange(range => {\n        if (!range.empty)\n            return { changes: [{ insert: open, from: range.from }, { insert: close, from: range.to }],\n                effects: closeBracketEffect.of(range.to + open.length),\n                range: EditorSelection.range(range.anchor + open.length, range.head + open.length) };\n        let next = nextChar(state.doc, range.head);\n        if (!next || /\\s/.test(next) || closeBefore.indexOf(next) > -1)\n            return { changes: { insert: open + close, from: range.head },\n                effects: closeBracketEffect.of(range.head + open.length),\n                range: EditorSelection.cursor(range.head + open.length) };\n        return { range: dont = range };\n    });\n    return dont ? null : state.update(changes, {\n        scrollIntoView: true,\n        userEvent: \"input.type\"\n    });\n}\nfunction handleClose(state, _open, close) {\n    let dont = null, changes = state.changeByRange(range => {\n        if (range.empty && nextChar(state.doc, range.head) == close)\n            return { changes: { from: range.head, to: range.head + close.length, insert: close },\n                range: EditorSelection.cursor(range.head + close.length) };\n        return dont = { range };\n    });\n    return dont ? null : state.update(changes, {\n        scrollIntoView: true,\n        userEvent: \"input.type\"\n    });\n}\n// Handles cases where the open and close token are the same, and\n// possibly triple quotes (as in `\"\"\"abc\"\"\"`-style quoting).\nfunction handleSame(state, token, allowTriple, config) {\n    let stringPrefixes = config.stringPrefixes || defaults.stringPrefixes;\n    let dont = null, changes = state.changeByRange(range => {\n        if (!range.empty)\n            return { changes: [{ insert: token, from: range.from }, { insert: token, from: range.to }],\n                effects: closeBracketEffect.of(range.to + token.length),\n                range: EditorSelection.range(range.anchor + token.length, range.head + token.length) };\n        let pos = range.head, next = nextChar(state.doc, pos), start;\n        if (next == token) {\n            if (nodeStart(state, pos)) {\n                return { changes: { insert: token + token, from: pos },\n                    effects: closeBracketEffect.of(pos + token.length),\n                    range: EditorSelection.cursor(pos + token.length) };\n            }\n            else if (closedBracketAt(state, pos)) {\n                let isTriple = allowTriple && state.sliceDoc(pos, pos + token.length * 3) == token + token + token;\n                let content = isTriple ? token + token + token : token;\n                return { changes: { from: pos, to: pos + content.length, insert: content },\n                    range: EditorSelection.cursor(pos + content.length) };\n            }\n        }\n        else if (allowTriple && state.sliceDoc(pos - 2 * token.length, pos) == token + token &&\n            (start = canStartStringAt(state, pos - 2 * token.length, stringPrefixes)) > -1 &&\n            nodeStart(state, start)) {\n            return { changes: { insert: token + token + token + token, from: pos },\n                effects: closeBracketEffect.of(pos + token.length),\n                range: EditorSelection.cursor(pos + token.length) };\n        }\n        else if (state.charCategorizer(pos)(next) != CharCategory.Word) {\n            if (canStartStringAt(state, pos, stringPrefixes) > -1 && !probablyInString(state, pos, token, stringPrefixes))\n                return { changes: { insert: token + token, from: pos },\n                    effects: closeBracketEffect.of(pos + token.length),\n                    range: EditorSelection.cursor(pos + token.length) };\n        }\n        return { range: dont = range };\n    });\n    return dont ? null : state.update(changes, {\n        scrollIntoView: true,\n        userEvent: \"input.type\"\n    });\n}\nfunction nodeStart(state, pos) {\n    let tree = syntaxTree(state).resolveInner(pos + 1);\n    return tree.parent && tree.from == pos;\n}\nfunction probablyInString(state, pos, quoteToken, prefixes) {\n    let node = syntaxTree(state).resolveInner(pos, -1);\n    let maxPrefix = prefixes.reduce((m, p) => Math.max(m, p.length), 0);\n    for (let i = 0; i < 5; i++) {\n        let start = state.sliceDoc(node.from, Math.min(node.to, node.from + quoteToken.length + maxPrefix));\n        let quotePos = start.indexOf(quoteToken);\n        if (!quotePos || quotePos > -1 && prefixes.indexOf(start.slice(0, quotePos)) > -1) {\n            let first = node.firstChild;\n            while (first && first.from == node.from && first.to - first.from > quoteToken.length + quotePos) {\n                if (state.sliceDoc(first.to - quoteToken.length, first.to) == quoteToken)\n                    return false;\n                first = first.firstChild;\n            }\n            return true;\n        }\n        let parent = node.to == pos && node.parent;\n        if (!parent)\n            break;\n        node = parent;\n    }\n    return false;\n}\nfunction canStartStringAt(state, pos, prefixes) {\n    let charCat = state.charCategorizer(pos);\n    if (charCat(state.sliceDoc(pos - 1, pos)) != CharCategory.Word)\n        return pos;\n    for (let prefix of prefixes) {\n        let start = pos - prefix.length;\n        if (state.sliceDoc(start, pos) == prefix && charCat(state.sliceDoc(start - 1, start)) != CharCategory.Word)\n            return start;\n    }\n    return -1;\n}\n\n/**\nReturns an extension that enables autocompletion.\n*/\nfunction autocompletion(config = {}) {\n    return [\n        commitCharacters,\n        completionState,\n        completionConfig.of(config),\n        completionPlugin,\n        completionKeymapExt,\n        baseTheme\n    ];\n}\n/**\nBasic keybindings for autocompletion.\n\n - Ctrl-Space (and Alt-\\` on macOS): [`startCompletion`](https://codemirror.net/6/docs/ref/#autocomplete.startCompletion)\n - Escape: [`closeCompletion`](https://codemirror.net/6/docs/ref/#autocomplete.closeCompletion)\n - ArrowDown: [`moveCompletionSelection`](https://codemirror.net/6/docs/ref/#autocomplete.moveCompletionSelection)`(true)`\n - ArrowUp: [`moveCompletionSelection`](https://codemirror.net/6/docs/ref/#autocomplete.moveCompletionSelection)`(false)`\n - PageDown: [`moveCompletionSelection`](https://codemirror.net/6/docs/ref/#autocomplete.moveCompletionSelection)`(true, \"page\")`\n - PageDown: [`moveCompletionSelection`](https://codemirror.net/6/docs/ref/#autocomplete.moveCompletionSelection)`(true, \"page\")`\n - Enter: [`acceptCompletion`](https://codemirror.net/6/docs/ref/#autocomplete.acceptCompletion)\n*/\nconst completionKeymap = [\n    { key: \"Ctrl-Space\", run: startCompletion },\n    { mac: \"Alt-`\", run: startCompletion },\n    { key: \"Escape\", run: closeCompletion },\n    { key: \"ArrowDown\", run: /*@__PURE__*/moveCompletionSelection(true) },\n    { key: \"ArrowUp\", run: /*@__PURE__*/moveCompletionSelection(false) },\n    { key: \"PageDown\", run: /*@__PURE__*/moveCompletionSelection(true, \"page\") },\n    { key: \"PageUp\", run: /*@__PURE__*/moveCompletionSelection(false, \"page\") },\n    { key: \"Enter\", run: acceptCompletion }\n];\nconst completionKeymapExt = /*@__PURE__*/Prec.highest(/*@__PURE__*/keymap.computeN([completionConfig], state => state.facet(completionConfig).defaultKeymap ? [completionKeymap] : []));\n/**\nGet the current completion status. When completions are available,\nthis will return `\"active\"`. When completions are pending (in the\nprocess of being queried), this returns `\"pending\"`. Otherwise, it\nreturns `null`.\n*/\nfunction completionStatus(state) {\n    let cState = state.field(completionState, false);\n    return cState && cState.active.some(a => a.isPending) ? \"pending\"\n        : cState && cState.active.some(a => a.state != 0 /* State.Inactive */) ? \"active\" : null;\n}\nconst completionArrayCache = /*@__PURE__*/new WeakMap;\n/**\nReturns the available completions as an array.\n*/\nfunction currentCompletions(state) {\n    var _a;\n    let open = (_a = state.field(completionState, false)) === null || _a === void 0 ? void 0 : _a.open;\n    if (!open || open.disabled)\n        return [];\n    let completions = completionArrayCache.get(open.options);\n    if (!completions)\n        completionArrayCache.set(open.options, completions = open.options.map(o => o.completion));\n    return completions;\n}\n/**\nReturn the currently selected completion, if any.\n*/\nfunction selectedCompletion(state) {\n    var _a;\n    let open = (_a = state.field(completionState, false)) === null || _a === void 0 ? void 0 : _a.open;\n    return open && !open.disabled && open.selected >= 0 ? open.options[open.selected].completion : null;\n}\n/**\nReturns the currently selected position in the active completion\nlist, or null if no completions are active.\n*/\nfunction selectedCompletionIndex(state) {\n    var _a;\n    let open = (_a = state.field(completionState, false)) === null || _a === void 0 ? void 0 : _a.open;\n    return open && !open.disabled && open.selected >= 0 ? open.selected : null;\n}\n/**\nCreate an effect that can be attached to a transaction to change\nthe currently selected completion.\n*/\nfunction setSelectedCompletion(index) {\n    return setSelectedEffect.of(index);\n}\n\nexport { CompletionContext, acceptCompletion, autocompletion, clearSnippet, closeBrackets, closeBracketsKeymap, closeCompletion, completeAnyWord, completeFromList, completionKeymap, completionStatus, currentCompletions, deleteBracketPair, hasNextSnippetField, hasPrevSnippetField, ifIn, ifNotIn, insertBracket, insertCompletionText, moveCompletionSelection, nextSnippetField, pickedCompletion, prevSnippetField, selectedCompletion, selectedCompletionIndex, setSelectedCompletion, snippet, snippetCompletion, snippetKeymap, startCompletion };\n","import { lineNumbers, highlightActiveLineGutter, highlightSpecialChars, drawSelection, dropCursor, rectangularSelection, crosshairCursor, highlightActiveLine, keymap } from '@codemirror/view';\nimport { EditorState } from '@codemirror/state';\nimport { history, defaultKeymap, historyKeymap } from '@codemirror/commands';\nimport { highlightSelectionMatches, searchKeymap } from '@codemirror/search';\nimport { closeBrackets, autocompletion, closeBracketsKeymap, completionKeymap } from '@codemirror/autocomplete';\nimport { foldGutter, indentOnInput, syntaxHighlighting, defaultHighlightStyle, bracketMatching, indentUnit, foldKeymap } from '@codemirror/language';\nimport { lintKeymap } from '@codemirror/lint';\n/**\nThis is an extension value that just pulls together a number of\nextensions that you might want in a basic editor. It is meant as a\nconvenient helper to quickly set up CodeMirror without installing\nand importing a lot of separate packages.\n\nSpecifically, it includes...\n\n - [the default command bindings](https://codemirror.net/6/docs/ref/#commands.defaultKeymap)\n - [line numbers](https://codemirror.net/6/docs/ref/#view.lineNumbers)\n - [special character highlighting](https://codemirror.net/6/docs/ref/#view.highlightSpecialChars)\n - [the undo history](https://codemirror.net/6/docs/ref/#commands.history)\n - [a fold gutter](https://codemirror.net/6/docs/ref/#language.foldGutter)\n - [custom selection drawing](https://codemirror.net/6/docs/ref/#view.drawSelection)\n - [drop cursor](https://codemirror.net/6/docs/ref/#view.dropCursor)\n - [multiple selections](https://codemirror.net/6/docs/ref/#state.EditorState^allowMultipleSelections)\n - [reindentation on input](https://codemirror.net/6/docs/ref/#language.indentOnInput)\n - [the default highlight style](https://codemirror.net/6/docs/ref/#language.defaultHighlightStyle) (as fallback)\n - [bracket matching](https://codemirror.net/6/docs/ref/#language.bracketMatching)\n - [bracket closing](https://codemirror.net/6/docs/ref/#autocomplete.closeBrackets)\n - [autocompletion](https://codemirror.net/6/docs/ref/#autocomplete.autocompletion)\n - [rectangular selection](https://codemirror.net/6/docs/ref/#view.rectangularSelection) and [crosshair cursor](https://codemirror.net/6/docs/ref/#view.crosshairCursor)\n - [active line highlighting](https://codemirror.net/6/docs/ref/#view.highlightActiveLine)\n - [active line gutter highlighting](https://codemirror.net/6/docs/ref/#view.highlightActiveLineGutter)\n - [selection match highlighting](https://codemirror.net/6/docs/ref/#search.highlightSelectionMatches)\n - [search](https://codemirror.net/6/docs/ref/#search.searchKeymap)\n - [linting](https://codemirror.net/6/docs/ref/#lint.lintKeymap)\n\n(You'll probably want to add some language package to your setup\ntoo.)\n\nThis extension does not allow customization. The idea is that,\nonce you decide you want to configure your editor more precisely,\nyou take this package's source (which is just a bunch of imports\nand an array literal), copy it into your own code, and adjust it\nas desired.\n*/\nexport var basicSetup = function basicSetup(options) {\n  if (options === void 0) {\n    options = {};\n  }\n  var {\n    crosshairCursor: initCrosshairCursor = false\n  } = options;\n  var keymaps = [];\n  if (options.closeBracketsKeymap !== false) {\n    keymaps = keymaps.concat(closeBracketsKeymap);\n  }\n  if (options.defaultKeymap !== false) {\n    keymaps = keymaps.concat(defaultKeymap);\n  }\n  if (options.searchKeymap !== false) {\n    keymaps = keymaps.concat(searchKeymap);\n  }\n  if (options.historyKeymap !== false) {\n    keymaps = keymaps.concat(historyKeymap);\n  }\n  if (options.foldKeymap !== false) {\n    keymaps = keymaps.concat(foldKeymap);\n  }\n  if (options.completionKeymap !== false) {\n    keymaps = keymaps.concat(completionKeymap);\n  }\n  if (options.lintKeymap !== false) {\n    keymaps = keymaps.concat(lintKeymap);\n  }\n  var extensions = [];\n  if (options.lineNumbers !== false) extensions.push(lineNumbers());\n  if (options.highlightActiveLineGutter !== false) extensions.push(highlightActiveLineGutter());\n  if (options.highlightSpecialChars !== false) extensions.push(highlightSpecialChars());\n  if (options.history !== false) extensions.push(history());\n  if (options.foldGutter !== false) extensions.push(foldGutter());\n  if (options.drawSelection !== false) extensions.push(drawSelection());\n  if (options.dropCursor !== false) extensions.push(dropCursor());\n  if (options.allowMultipleSelections !== false) extensions.push(EditorState.allowMultipleSelections.of(true));\n  if (options.indentOnInput !== false) extensions.push(indentOnInput());\n  if (options.syntaxHighlighting !== false) extensions.push(syntaxHighlighting(defaultHighlightStyle, {\n    fallback: true\n  }));\n  if (options.bracketMatching !== false) extensions.push(bracketMatching());\n  if (options.closeBrackets !== false) extensions.push(closeBrackets());\n  if (options.autocompletion !== false) extensions.push(autocompletion());\n  if (options.rectangularSelection !== false) extensions.push(rectangularSelection());\n  if (initCrosshairCursor !== false) extensions.push(crosshairCursor());\n  if (options.highlightActiveLine !== false) extensions.push(highlightActiveLine());\n  if (options.highlightSelectionMatches !== false) extensions.push(highlightSelectionMatches());\n  if (options.tabSize && typeof options.tabSize === 'number') extensions.push(indentUnit.of(' '.repeat(options.tabSize)));\n  return extensions.concat([keymap.of(keymaps.flat())]).filter(Boolean);\n};\n/**\nA minimal set of extensions to create a functional editor. Only\nincludes [the default keymap](https://codemirror.net/6/docs/ref/#commands.defaultKeymap), [undo\nhistory](https://codemirror.net/6/docs/ref/#commands.history), [special character\nhighlighting](https://codemirror.net/6/docs/ref/#view.highlightSpecialChars), [custom selection\ndrawing](https://codemirror.net/6/docs/ref/#view.drawSelection), and [default highlight\nstyle](https://codemirror.net/6/docs/ref/#language.defaultHighlightStyle).\n*/\nexport var minimalSetup = function minimalSetup(options) {\n  if (options === void 0) {\n    options = {};\n  }\n  var keymaps = [];\n  if (options.defaultKeymap !== false) {\n    keymaps = keymaps.concat(defaultKeymap);\n  }\n  if (options.historyKeymap !== false) {\n    keymaps = keymaps.concat(historyKeymap);\n  }\n  var extensions = [];\n  if (options.highlightSpecialChars !== false) extensions.push(highlightSpecialChars());\n  if (options.history !== false) extensions.push(history());\n  if (options.drawSelection !== false) extensions.push(drawSelection());\n  if (options.syntaxHighlighting !== false) extensions.push(syntaxHighlighting(defaultHighlightStyle, {\n    fallback: true\n  }));\n  return extensions.concat([keymap.of(keymaps.flat())]).filter(Boolean);\n};","import { EditorView } from '@codemirror/view';\nimport { HighlightStyle, syntaxHighlighting } from '@codemirror/language';\nimport { tags } from '@lezer/highlight';\n\n// Using https://github.com/one-dark/vscode-one-dark-theme/ as reference for the colors\nconst chalky = \"#e5c07b\", coral = \"#e06c75\", cyan = \"#56b6c2\", invalid = \"#ffffff\", ivory = \"#abb2bf\", stone = \"#7d8799\", // Brightened compared to original to increase contrast\nmalibu = \"#61afef\", sage = \"#98c379\", whiskey = \"#d19a66\", violet = \"#c678dd\", darkBackground = \"#21252b\", highlightBackground = \"#2c313a\", background = \"#282c34\", tooltipBackground = \"#353a42\", selection = \"#3E4451\", cursor = \"#528bff\";\n/**\nThe colors used in the theme, as CSS color strings.\n*/\nconst color = {\n    chalky,\n    coral,\n    cyan,\n    invalid,\n    ivory,\n    stone,\n    malibu,\n    sage,\n    whiskey,\n    violet,\n    darkBackground,\n    highlightBackground,\n    background,\n    tooltipBackground,\n    selection,\n    cursor\n};\n/**\nThe editor theme styles for One Dark.\n*/\nconst oneDarkTheme = /*@__PURE__*/EditorView.theme({\n    \"&\": {\n        color: ivory,\n        backgroundColor: background\n    },\n    \".cm-content\": {\n        caretColor: cursor\n    },\n    \".cm-cursor, .cm-dropCursor\": { borderLeftColor: cursor },\n    \"&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection\": { backgroundColor: selection },\n    \".cm-panels\": { backgroundColor: darkBackground, color: ivory },\n    \".cm-panels.cm-panels-top\": { borderBottom: \"2px solid black\" },\n    \".cm-panels.cm-panels-bottom\": { borderTop: \"2px solid black\" },\n    \".cm-searchMatch\": {\n        backgroundColor: \"#72a1ff59\",\n        outline: \"1px solid #457dff\"\n    },\n    \".cm-searchMatch.cm-searchMatch-selected\": {\n        backgroundColor: \"#6199ff2f\"\n    },\n    \".cm-activeLine\": { backgroundColor: \"#6699ff0b\" },\n    \".cm-selectionMatch\": { backgroundColor: \"#aafe661a\" },\n    \"&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket\": {\n        backgroundColor: \"#bad0f847\"\n    },\n    \".cm-gutters\": {\n        backgroundColor: background,\n        color: stone,\n        border: \"none\"\n    },\n    \".cm-activeLineGutter\": {\n        backgroundColor: highlightBackground\n    },\n    \".cm-foldPlaceholder\": {\n        backgroundColor: \"transparent\",\n        border: \"none\",\n        color: \"#ddd\"\n    },\n    \".cm-tooltip\": {\n        border: \"none\",\n        backgroundColor: tooltipBackground\n    },\n    \".cm-tooltip .cm-tooltip-arrow:before\": {\n        borderTopColor: \"transparent\",\n        borderBottomColor: \"transparent\"\n    },\n    \".cm-tooltip .cm-tooltip-arrow:after\": {\n        borderTopColor: tooltipBackground,\n        borderBottomColor: tooltipBackground\n    },\n    \".cm-tooltip-autocomplete\": {\n        \"& > ul > li[aria-selected]\": {\n            backgroundColor: highlightBackground,\n            color: ivory\n        }\n    }\n}, { dark: true });\n/**\nThe highlighting style for code in the One Dark theme.\n*/\nconst oneDarkHighlightStyle = /*@__PURE__*/HighlightStyle.define([\n    { tag: tags.keyword,\n        color: violet },\n    { tag: [tags.name, tags.deleted, tags.character, tags.propertyName, tags.macroName],\n        color: coral },\n    { tag: [/*@__PURE__*/tags.function(tags.variableName), tags.labelName],\n        color: malibu },\n    { tag: [tags.color, /*@__PURE__*/tags.constant(tags.name), /*@__PURE__*/tags.standard(tags.name)],\n        color: whiskey },\n    { tag: [/*@__PURE__*/tags.definition(tags.name), tags.separator],\n        color: ivory },\n    { tag: [tags.typeName, tags.className, tags.number, tags.changed, tags.annotation, tags.modifier, tags.self, tags.namespace],\n        color: chalky },\n    { tag: [tags.operator, tags.operatorKeyword, tags.url, tags.escape, tags.regexp, tags.link, /*@__PURE__*/tags.special(tags.string)],\n        color: cyan },\n    { tag: [tags.meta, tags.comment],\n        color: stone },\n    { tag: tags.strong,\n        fontWeight: \"bold\" },\n    { tag: tags.emphasis,\n        fontStyle: \"italic\" },\n    { tag: tags.strikethrough,\n        textDecoration: \"line-through\" },\n    { tag: tags.link,\n        color: stone,\n        textDecoration: \"underline\" },\n    { tag: tags.heading,\n        fontWeight: \"bold\",\n        color: coral },\n    { tag: [tags.atom, tags.bool, /*@__PURE__*/tags.special(tags.variableName)],\n        color: whiskey },\n    { tag: [tags.processingInstruction, tags.string, tags.inserted],\n        color: sage },\n    { tag: tags.invalid,\n        color: invalid },\n]);\n/**\nExtension to enable the One Dark theme (both the editor theme and\nthe highlight style).\n*/\nconst oneDark = [oneDarkTheme, /*@__PURE__*/syntaxHighlighting(oneDarkHighlightStyle)];\n\nexport { color, oneDark, oneDarkHighlightStyle, oneDarkTheme };\n","import { EditorView } from '@codemirror/view';\nexport var defaultLightThemeOption = EditorView.theme({\n  '&': {\n    backgroundColor: '#fff'\n  }\n}, {\n  dark: false\n});","import { indentWithTab } from '@codemirror/commands';\nimport { basicSetup } from '@uiw/codemirror-extensions-basic-setup';\nimport { EditorView, keymap, placeholder } from '@codemirror/view';\nimport { oneDark } from '@codemirror/theme-one-dark';\nimport { EditorState } from '@codemirror/state';\nimport { defaultLightThemeOption } from \"./theme/light.js\";\nexport * from '@codemirror/theme-one-dark';\nexport * from \"./theme/light.js\";\nexport var getDefaultExtensions = function getDefaultExtensions(optios) {\n  if (optios === void 0) {\n    optios = {};\n  }\n  var {\n    indentWithTab: defaultIndentWithTab = true,\n    editable = true,\n    readOnly = false,\n    theme = 'light',\n    placeholder: placeholderStr = '',\n    basicSetup: defaultBasicSetup = true\n  } = optios;\n  var getExtensions = [];\n  if (defaultIndentWithTab) {\n    getExtensions.unshift(keymap.of([indentWithTab]));\n  }\n  if (defaultBasicSetup) {\n    if (typeof defaultBasicSetup === 'boolean') {\n      getExtensions.unshift(basicSetup());\n    } else {\n      getExtensions.unshift(basicSetup(defaultBasicSetup));\n    }\n  }\n  if (placeholderStr) {\n    getExtensions.unshift(placeholder(placeholderStr));\n  }\n  switch (theme) {\n    case 'light':\n      getExtensions.push(defaultLightThemeOption);\n      break;\n    case 'dark':\n      getExtensions.push(oneDark);\n      break;\n    case 'none':\n      break;\n    default:\n      getExtensions.push(theme);\n      break;\n  }\n  if (editable === false) {\n    getExtensions.push(EditorView.editable.of(false));\n  }\n  if (readOnly) {\n    getExtensions.push(EditorState.readOnly.of(true));\n  }\n  return [...getExtensions];\n};","export var getStatistics = view => {\n  return {\n    line: view.state.doc.lineAt(view.state.selection.main.from),\n    lineCount: view.state.doc.lines,\n    lineBreak: view.state.lineBreak,\n    length: view.state.doc.length,\n    readOnly: view.state.readOnly,\n    tabSize: view.state.tabSize,\n    selection: view.state.selection,\n    selectionAsSingle: view.state.selection.asSingle().main,\n    ranges: view.state.selection.ranges,\n    selectionCode: view.state.sliceDoc(view.state.selection.main.from, view.state.selection.main.to),\n    selections: view.state.selection.ranges.map(r => view.state.sliceDoc(r.from, r.to)),\n    selectedText: view.state.selection.ranges.some(r => !r.empty)\n  };\n};","// Setting / Unsetting timeouts for every keystroke was a significant overhead\n// Inspired from https://github.com/iostreamer-X/timeout-latch\n\nexport class TimeoutLatch {\n  constructor(callback, timeoutMS) {\n    this.timeLeftMS = void 0;\n    this.timeoutMS = void 0;\n    this.isCancelled = false;\n    this.isTimeExhausted = false;\n    this.callbacks = [];\n    this.timeLeftMS = timeoutMS;\n    this.timeoutMS = timeoutMS;\n    this.callbacks.push(callback);\n  }\n  tick() {\n    if (!this.isCancelled && !this.isTimeExhausted) {\n      this.timeLeftMS--;\n      if (this.timeLeftMS <= 0) {\n        this.isTimeExhausted = true;\n        var callbacks = this.callbacks.slice();\n        this.callbacks.length = 0;\n        callbacks.forEach(callback => {\n          try {\n            callback();\n          } catch (error) {\n            console.error('TimeoutLatch callback error:', error);\n          }\n        });\n      }\n    }\n  }\n  cancel() {\n    this.isCancelled = true;\n    this.callbacks.length = 0;\n  }\n  reset() {\n    this.timeLeftMS = this.timeoutMS;\n    this.isCancelled = false;\n    this.isTimeExhausted = false;\n  }\n  get isDone() {\n    return this.isCancelled || this.isTimeExhausted;\n  }\n}\nclass Scheduler {\n  constructor() {\n    this.interval = null;\n    this.latches = new Set();\n  }\n  add(latch) {\n    this.latches.add(latch);\n    this.start();\n  }\n  remove(latch) {\n    this.latches.delete(latch);\n    if (this.latches.size === 0) {\n      this.stop();\n    }\n  }\n  start() {\n    if (this.interval === null) {\n      this.interval = setInterval(() => {\n        this.latches.forEach(latch => {\n          latch.tick();\n          if (latch.isDone) {\n            this.remove(latch);\n          }\n        });\n      }, 1);\n    }\n  }\n  stop() {\n    if (this.interval !== null) {\n      clearInterval(this.interval);\n      this.interval = null;\n    }\n  }\n}\nvar globalScheduler = null;\nexport var getScheduler = () => {\n  if (typeof window === 'undefined') {\n    return new Scheduler();\n  }\n  if (!globalScheduler) {\n    globalScheduler = new Scheduler();\n  }\n  return globalScheduler;\n};","import { useEffect, useLayoutEffect, useState } from 'react';\nimport { Annotation, EditorState, StateEffect } from '@codemirror/state';\nimport { EditorView } from '@codemirror/view';\nimport { getDefaultExtensions } from \"./getDefaultExtensions.js\";\nimport { getStatistics } from \"./utils.js\";\nimport { TimeoutLatch, getScheduler } from \"./timeoutLatch.js\";\nexport var ExternalChange = Annotation.define();\nvar TYPING_TIMOUT = 200; // ms\n\nvar emptyExtensions = [];\nexport function useCodeMirror(props) {\n  var {\n    value,\n    selection,\n    onChange,\n    onStatistics,\n    onCreateEditor,\n    onUpdate,\n    extensions = emptyExtensions,\n    autoFocus,\n    theme = 'light',\n    height = null,\n    minHeight = null,\n    maxHeight = null,\n    width = null,\n    minWidth = null,\n    maxWidth = null,\n    placeholder: placeholderStr = '',\n    editable = true,\n    readOnly = false,\n    indentWithTab: defaultIndentWithTab = true,\n    basicSetup: defaultBasicSetup = true,\n    root,\n    initialState\n  } = props;\n  var [container, setContainer] = useState();\n  var [view, setView] = useState();\n  var [state, setState] = useState();\n  var typingLatch = useState(() => ({\n    current: null\n  }))[0];\n  var pendingUpdate = useState(() => ({\n    current: null\n  }))[0];\n  var defaultThemeOption = EditorView.theme({\n    '&': {\n      height,\n      minHeight,\n      maxHeight,\n      width,\n      minWidth,\n      maxWidth\n    },\n    '& .cm-scroller': {\n      height: '100% !important'\n    }\n  });\n  var updateListener = EditorView.updateListener.of(vu => {\n    if (vu.docChanged && typeof onChange === 'function' &&\n    // Fix echoing of the remote changes:\n    // If transaction is market as remote we don't have to call `onChange` handler again\n    !vu.transactions.some(tr => tr.annotation(ExternalChange))) {\n      if (typingLatch.current) {\n        typingLatch.current.reset();\n      } else {\n        typingLatch.current = new TimeoutLatch(() => {\n          if (pendingUpdate.current) {\n            var forceUpdate = pendingUpdate.current;\n            pendingUpdate.current = null;\n            forceUpdate();\n          }\n          typingLatch.current = null;\n        }, TYPING_TIMOUT);\n        getScheduler().add(typingLatch.current);\n      }\n      var doc = vu.state.doc;\n      var _value = doc.toString();\n      onChange(_value, vu);\n    }\n    onStatistics && onStatistics(getStatistics(vu));\n  });\n  var defaultExtensions = getDefaultExtensions({\n    theme,\n    editable,\n    readOnly,\n    placeholder: placeholderStr,\n    indentWithTab: defaultIndentWithTab,\n    basicSetup: defaultBasicSetup\n  });\n  var getExtensions = [updateListener, defaultThemeOption, ...defaultExtensions];\n  if (onUpdate && typeof onUpdate === 'function') {\n    getExtensions.push(EditorView.updateListener.of(onUpdate));\n  }\n  getExtensions = getExtensions.concat(extensions);\n  useLayoutEffect(() => {\n    if (container && !state) {\n      var config = {\n        doc: value,\n        selection,\n        extensions: getExtensions\n      };\n      var stateCurrent = initialState ? EditorState.fromJSON(initialState.json, config, initialState.fields) : EditorState.create(config);\n      setState(stateCurrent);\n      if (!view) {\n        var viewCurrent = new EditorView({\n          state: stateCurrent,\n          parent: container,\n          root\n        });\n        setView(viewCurrent);\n        onCreateEditor && onCreateEditor(viewCurrent, stateCurrent);\n      }\n    }\n    return () => {\n      if (view) {\n        setState(undefined);\n        setView(undefined);\n      }\n    };\n  }, [container, state]);\n  useEffect(() => {\n    if (props.container) {\n      setContainer(props.container);\n    }\n  }, [props.container]);\n  useEffect(() => () => {\n    if (view) {\n      view.destroy();\n      setView(undefined);\n    }\n    if (typingLatch.current) {\n      typingLatch.current.cancel();\n      typingLatch.current = null;\n    }\n  }, [view]);\n  useEffect(() => {\n    if (autoFocus && view) {\n      view.focus();\n    }\n  }, [autoFocus, view]);\n  useEffect(() => {\n    if (view) {\n      view.dispatch({\n        effects: StateEffect.reconfigure.of(getExtensions)\n      });\n    }\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [theme, extensions, height, minHeight, maxHeight, width, minWidth, maxWidth, placeholderStr, editable, readOnly, defaultIndentWithTab, defaultBasicSetup, onChange, onUpdate]);\n  useEffect(() => {\n    if (value === undefined) {\n      return;\n    }\n    var currentValue = view ? view.state.doc.toString() : '';\n    if (view && value !== currentValue) {\n      var isTyping = typingLatch.current && !typingLatch.current.isDone;\n      var forceUpdate = () => {\n        if (view && value !== view.state.doc.toString()) {\n          view.dispatch({\n            changes: {\n              from: 0,\n              to: view.state.doc.toString().length,\n              insert: value || ''\n            },\n            annotations: [ExternalChange.of(true)]\n          });\n        }\n      };\n      if (!isTyping) {\n        forceUpdate();\n      } else {\n        pendingUpdate.current = forceUpdate;\n      }\n    }\n  }, [value, view]);\n  return {\n    state,\n    setState,\n    view,\n    setView,\n    container,\n    setContainer\n  };\n}","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"value\", \"selection\", \"extensions\", \"onChange\", \"onStatistics\", \"onCreateEditor\", \"onUpdate\", \"autoFocus\", \"theme\", \"height\", \"minHeight\", \"maxHeight\", \"width\", \"minWidth\", \"maxWidth\", \"basicSetup\", \"placeholder\", \"indentWithTab\", \"editable\", \"readOnly\", \"root\", \"initialState\"];\nimport React, { useRef, forwardRef, useImperativeHandle, useCallback } from 'react';\nimport { useCodeMirror } from \"./useCodeMirror.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport * from '@codemirror/view';\nexport * from '@codemirror/state';\nexport * from '@uiw/codemirror-extensions-basic-setup';\nexport * from \"./useCodeMirror.js\";\nexport * from \"./getDefaultExtensions.js\";\nexport * from \"./utils.js\";\nvar ReactCodeMirror = /*#__PURE__*/forwardRef((props, ref) => {\n  var {\n      className,\n      value = '',\n      selection,\n      extensions = [],\n      onChange,\n      onStatistics,\n      onCreateEditor,\n      onUpdate,\n      autoFocus,\n      theme = 'light',\n      height,\n      minHeight,\n      maxHeight,\n      width,\n      minWidth,\n      maxWidth,\n      basicSetup,\n      placeholder,\n      indentWithTab,\n      editable,\n      readOnly,\n      root,\n      initialState\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  var editor = useRef(null);\n  var {\n    state,\n    view,\n    container,\n    setContainer\n  } = useCodeMirror({\n    root,\n    value,\n    autoFocus,\n    theme,\n    height,\n    minHeight,\n    maxHeight,\n    width,\n    minWidth,\n    maxWidth,\n    basicSetup,\n    placeholder,\n    indentWithTab,\n    editable,\n    readOnly,\n    selection,\n    onChange,\n    onStatistics,\n    onCreateEditor,\n    onUpdate,\n    extensions,\n    initialState\n  });\n  useImperativeHandle(ref, () => ({\n    editor: editor.current,\n    state: state,\n    view: view\n  }), [editor, container, state, view]);\n  var setEditorRef = useCallback(el => {\n    editor.current = el;\n    setContainer(el);\n  }, [setContainer]);\n\n  // check type of value\n  if (typeof value !== 'string') {\n    throw new Error(\"value must be typeof string but got \" + typeof value);\n  }\n  var defaultClassNames = typeof theme === 'string' ? \"cm-theme-\" + theme : 'cm-theme';\n  return /*#__PURE__*/_jsx(\"div\", _extends({\n    ref: setEditorRef,\n    className: \"\" + defaultClassNames + (className ? \" \" + className : '')\n  }, other));\n});\nReactCodeMirror.displayName = 'CodeMirror';\nexport default ReactCodeMirror;","import { normalizeRicosDocument } from './../../../../ricos-content/normalize-ricos-document.js';\nimport type { EditorPluginName } from './../../../../ricos-schema/next-schema/index.js';\n\nexport const fixDocument = async (content: object, plugins: EditorPluginName[]) => {\n  const response = await fetch(\n    `https://apps.wix.com/_serverless/ricos-playground-services/fix-document`,\n    {\n      method: 'POST',\n      headers: {\n        'Content-Type': 'application/json',\n      },\n      body: JSON.stringify({ content, enabledPlugins: plugins }),\n    }\n  );\n\n  if (!response.ok) {\n    throw new Error(`HTTP error! status: ${response.status}`);\n  }\n\n  const result = (await response.json()) as {\n    content: object;\n    fixed: boolean;\n    appliedFixes: [];\n  };\n  return normalizeRicosDocument(result.content as any);\n};\n","import { EditorView } from '@codemirror/view';\nimport { HighlightStyle, syntaxHighlighting } from '@codemirror/language';\nexport var createTheme = _ref => {\n  var {\n    theme,\n    settings = {},\n    styles = []\n  } = _ref;\n  var themeOptions = {\n    '.cm-gutters': {}\n  };\n  var baseStyle = {};\n  if (settings.background) {\n    baseStyle.backgroundColor = settings.background;\n  }\n  if (settings.backgroundImage) {\n    baseStyle.backgroundImage = settings.backgroundImage;\n  }\n  if (settings.foreground) {\n    baseStyle.color = settings.foreground;\n  }\n  if (settings.fontSize) {\n    baseStyle.fontSize = settings.fontSize;\n  }\n  if (settings.background || settings.foreground) {\n    themeOptions['&'] = baseStyle;\n  }\n  if (settings.fontFamily) {\n    themeOptions['&.cm-editor .cm-scroller'] = {\n      fontFamily: settings.fontFamily\n    };\n  }\n  if (settings.gutterBackground) {\n    themeOptions['.cm-gutters'].backgroundColor = settings.gutterBackground;\n  }\n  if (settings.gutterForeground) {\n    themeOptions['.cm-gutters'].color = settings.gutterForeground;\n  }\n  if (settings.gutterBorder) {\n    themeOptions['.cm-gutters'].borderRightColor = settings.gutterBorder;\n  }\n  if (settings.caret) {\n    themeOptions['.cm-content'] = {\n      caretColor: settings.caret\n    };\n    themeOptions['.cm-cursor, .cm-dropCursor'] = {\n      borderLeftColor: settings.caret\n    };\n  }\n  var activeLineGutterStyle = {};\n  if (settings.gutterActiveForeground) {\n    activeLineGutterStyle.color = settings.gutterActiveForeground;\n  }\n  if (settings.lineHighlight) {\n    themeOptions['.cm-activeLine'] = {\n      backgroundColor: settings.lineHighlight\n    };\n    activeLineGutterStyle.backgroundColor = settings.lineHighlight;\n  }\n  themeOptions['.cm-activeLineGutter'] = activeLineGutterStyle;\n  if (settings.selection) {\n    themeOptions['&.cm-focused .cm-selectionBackground, & .cm-line::selection, & .cm-selectionLayer .cm-selectionBackground, .cm-content ::selection'] = {\n      background: settings.selection + ' !important'\n    };\n  }\n  if (settings.selectionMatch) {\n    themeOptions['& .cm-selectionMatch'] = {\n      backgroundColor: settings.selectionMatch\n    };\n  }\n  var themeExtension = EditorView.theme(themeOptions, {\n    dark: theme === 'dark'\n  });\n  var highlightStyle = HighlightStyle.define(styles);\n  var extension = [themeExtension, syntaxHighlighting(highlightStyle)];\n  return extension;\n};\nexport default createTheme;","import { tags as t } from '@lezer/highlight';\nimport type { CreateThemeOptions } from '@uiw/codemirror-themes';\nimport { createTheme } from '@uiw/codemirror-themes';\n\nexport const config = {\n  background: 'rgb(0,6,36)',\n\n  foreground: 'rgb(134,138,165)',\n  selection: '#004454AA',\n  selectionMatch: '#005A6FAA',\n  cursor: '#D30102',\n  dropdownBackground: '#00212B',\n  dropdownBorder: '#2AA19899',\n  activeLine: '#00cafe11',\n  matchingBracket: '#073642',\n  keyword: '#859900',\n  storage: '#93A1A1',\n  variable: '#268BD2',\n  parameter: '#268BD2',\n  function: '#268BD2',\n  string: 'rgb(140, 180, 255)',\n  constant: '#CB4B16',\n  type: '#859900',\n  class: '#268BD2',\n  number: '#D33682',\n  comment: '#586E75',\n  heading: '#268BD2',\n  invalid: '#DC322F',\n  regexp: '#DC322F',\n  tag: '#268BD2',\n};\n\nconst c = config;\n\nexport const defaultSettingsSolarizedDark: CreateThemeOptions['settings'] = {\n  background: c.background,\n  foreground: c.foreground,\n  caret: c.cursor,\n  selection: c.selection,\n  selectionMatch: c.selection,\n  gutterBackground: c.background,\n  gutterForeground: c.foreground,\n  gutterBorder: 'transparent',\n  lineHighlight: c.activeLine,\n};\n\nexport const solarizedDarkInit = (options?: Partial<CreateThemeOptions>) => {\n  const { theme = 'dark', settings = {}, styles = [] } = options || {};\n  return createTheme({\n    theme,\n    settings: {\n      ...defaultSettingsSolarizedDark,\n      ...settings,\n    },\n    styles: [\n      { tag: t.keyword, color: c.keyword },\n      { tag: [t.name, t.deleted, t.character, t.macroName], color: c.variable },\n      { tag: [t.propertyName], color: c.function },\n      {\n        tag: [t.processingInstruction, t.string, t.inserted, t.special(t.string)],\n        color: c.string,\n      },\n      { tag: [t.function(t.variableName), t.labelName], color: c.function },\n      { tag: [t.color, t.constant(t.name), t.standard(t.name)], color: c.constant },\n      { tag: [t.definition(t.name), t.separator], color: c.variable },\n      { tag: [t.className], color: c.class },\n      {\n        tag: [t.number, t.changed, t.annotation, t.modifier, t.self, t.namespace],\n        color: c.number,\n      },\n      { tag: [t.typeName], color: c.type, fontStyle: c.type },\n      { tag: [t.operator, t.operatorKeyword], color: c.keyword },\n      { tag: [t.url, t.escape, t.regexp, t.link], color: c.regexp },\n      { tag: [t.meta, t.comment], color: c.comment },\n      { tag: t.tagName, color: c.tag },\n      { tag: t.strong, fontWeight: 'bold' },\n      { tag: t.emphasis, fontStyle: 'italic' },\n      { tag: t.link, textDecoration: 'underline' },\n      { tag: t.heading, fontWeight: 'bold', color: c.heading },\n      { tag: [t.atom, t.bool, t.special(t.variableName)], color: c.variable },\n      { tag: t.invalid, color: c.invalid },\n      { tag: t.strikethrough, textDecoration: 'line-through' },\n      { tag: t.punctuation, color: 'rgb(237, 162, 0)' },\n      { tag: t.propertyName, color: 'rgb(54, 172, 170)' },\n      ...styles,\n    ],\n  });\n};\n\nexport const wixDocsCodeTheme = solarizedDarkInit();\n","import { json } from '@codemirror/lang-json';\nimport { closeLintPanel, diagnosticCount, linter, openLintPanel } from '@codemirror/lint';\nimport type { ReactCodeMirrorProps, ReactCodeMirrorRef } from '@uiw/react-codemirror';\nimport CodeMirror from '@uiw/react-codemirror';\nimport { Box, Button, Loader } from '@wix/design-system';\nimport { StatusAlertSmall } from '@wix/wix-ui-icons-common';\nimport lodash from 'lodash';\nimport React from 'react';\n\nimport type { RichContent } from './../../../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport type { EditorPluginName } from './../../../../ricos-schema/next-schema/index.js';\nimport { parseFromString } from './../../../../ricos-schema/next-schema/index.js';\n\nimport { fixDocument } from './autofix-api.js';\nimport { wixDocsCodeTheme } from './code-mirror-theme.js';\n\ntype RicosContentEditorTabProps = {\n  editorPlugins: EditorPluginName[];\n  content: RichContent;\n  onChange: (content: RichContent) => void;\n  mode: 'viewer' | 'editor';\n};\n\nexport const RicosContentEditorTab: React.FC<RicosContentEditorTabProps> = ({\n  editorPlugins,\n  content,\n  onChange,\n  mode,\n}) => {\n  const [hasErrors, setHasErrors] = React.useState(false);\n  const [fixPending, setFixPending] = React.useState(false);\n  const codemirrorRef = React.useRef<ReactCodeMirrorRef>(null);\n  const stringContent = JSON.stringify(content, null, 2);\n  const isValidJson = getIsValidJson(stringContent);\n\n  React.useEffect(() => {\n    if (!hasErrors && codemirrorRef.current?.view) {\n      closeLintPanel(codemirrorRef.current?.view);\n    }\n  }, [hasErrors]);\n\n  const handleOnChange = React.useCallback(\n    (value: string | RichContent) => {\n      const parsedContent = typeof value === 'string' ? parseWithFallback(value, content) : value;\n      onChange(parsedContent);\n    },\n    [content]\n  );\n\n  const onChangeDebounced = React.useCallback(lodash.debounce(handleOnChange, 1000), [\n    handleOnChange,\n  ]);\n\n  return (\n    <Box direction=\"vertical\" paddingInline=\"8px\" gap=\"5px\">\n      {codemirrorRef.current && hasErrors && (\n        <Box align=\"right\" gap=\"8px\">\n          {isValidJson && mode === 'editor' && (\n            <Button\n              size=\"small\"\n              skin=\"standard\"\n              priority=\"secondary\"\n              onClick={() => {\n                if (fixPending) {\n                  return;\n                }\n                const result = safeParse(stringContent);\n                if (result.type === 'ok') {\n                  setFixPending(true);\n                  fixDocument(result.value, editorPlugins)\n                    .then(content => {\n                      handleOnChange(content);\n                    })\n                    .catch(e => {\n                      console.error(e);\n                    })\n                    .finally(() => {\n                      setFixPending(false);\n                    });\n                }\n              }}\n            >\n              {fixPending && (\n                <>\n                  <Loader size=\"tiny\" />\n                  <span className=\"mr-2\" />\n                </>\n              )}{' '}\n              Auto-Fix\n            </Button>\n          )}\n          <Button\n            size=\"small\"\n            prefixIcon={<StatusAlertSmall />}\n            skin=\"destructive\"\n            priority=\"primary\"\n            onClick={() => {\n              codemirrorRef.current?.view && openLintPanel(codemirrorRef.current?.view);\n            }}\n          >\n            Errors\n          </Button>\n        </Box>\n      )}\n      <CodeMirror\n        ref={codemirrorRef}\n        theme={wixDocsCodeTheme}\n        value={stringContent}\n        minHeight=\"200px\"\n        extensions={\n          [json(), codemirrorValidationPlugin(editorPlugins)] as ReactCodeMirrorProps['extensions']\n        }\n        onChange={onChangeDebounced}\n        onUpdate={updates => {\n          const hasErrorsLatest = diagnosticCount(updates.state) > 0;\n          if (hasErrorsLatest !== hasErrors) {\n            setHasErrors(hasErrorsLatest);\n          }\n        }}\n      />\n    </Box>\n  );\n};\n\nconst parseWithFallback = (json: string, fallback: unknown) => {\n  try {\n    return JSON.parse(json);\n  } catch {\n    return fallback;\n  }\n};\n\nconst getIsValidJson = (json: string) => {\n  try {\n    JSON.parse(json);\n    return true;\n  } catch {\n    return false;\n  }\n};\n\nconst safeParse = (json: string) => {\n  try {\n    return { type: 'ok' as const, value: JSON.parse(json) };\n  } catch (e) {\n    return { type: 'error' as const, error: e };\n  }\n};\n\nconst codemirrorValidationPlugin = (editorPlugins: EditorPluginName[]) => {\n  // TODO: Implement validation for schema features by using editor plugin names\n  return linter(view => {\n    const result = parseFromString(view.state.doc.toString(), { plugins: editorPlugins });\n    if (result.type === 'ok') {\n      return [];\n    }\n    return result.messages.map(message => ({\n      ...message,\n      severity: 'error',\n    }));\n  });\n};\n","import React from 'react';\n\nimport type { ConnectionState, DevContextProps } from './../../../ricos-context/index.js';\nimport { DevContext } from './../../../ricos-context/index.js';\nimport { unreachable } from './../../../_shared/uncreachable.js';\n\nimport { Button } from '../components/Button.js';\nimport { jsonTreeTheme } from '../theme.js';\n\nconst errorStatus = {\n  Connection: -1,\n  Permission: 403,\n  NotFound: 404,\n  Server: 500,\n  Throttle: 429,\n} as const;\n\ntype ErrorStatus = (typeof errorStatus)[keyof typeof errorStatus];\n\nconst inputStyles = {\n  background: 'transparent',\n  color: jsonTreeTheme.base0B,\n  padding: '2px',\n  border: `1px solid ${jsonTreeTheme.base0B}`,\n};\n\nexport const RicosNetworkConditionsTab: React.FC = () => {\n  const devContext = React.useContext(DevContext) as DevContextProps;\n  const { connectionState, setConnectionState } = devContext;\n\n  if (!setConnectionState || !connectionState) {\n    return <div>Dev context not configured</div>;\n  }\n  return (\n    <div style={{ marginLeft: '0.875em', color: jsonTreeTheme.base0D }}>\n      <div style={{ display: 'flex', justifyContent: 'flex-end' }}>\n        <Button onClick={() => setConnectionState({ type: 'NO_MODIFICATION' })}>\n          Reset to default\n        </Button>\n      </div>\n      <div>\n        <label style={{ display: 'block' }}>\n          <span style={{ minWidth: '60px', display: 'inline-block' }}>CRUD</span>\n          <select\n            style={{\n              marginLeft: '4px',\n              width: '120px',\n              ...inputStyles,\n            }}\n            value={connectionState.type}\n            onChange={e => {\n              const value: ConnectionState['type'] = e.currentTarget\n                .value as ConnectionState['type'];\n              switch (value) {\n                case 'BROKEN': {\n                  setConnectionState({\n                    type: 'BROKEN',\n                    delay: 0,\n                    status:\n                      'status' in connectionState ? connectionState.status : errorStatus.Connection,\n                  });\n                  break;\n                }\n                case 'DELAYED': {\n                  setConnectionState({ type: 'DELAYED', delay: 1 });\n                  break;\n                }\n                case 'NO_MODIFICATION': {\n                  setConnectionState({ type: 'NO_MODIFICATION' });\n                  break;\n                }\n                default:\n                  throw unreachable(value);\n              }\n            }}\n          >\n            {['NO_MODIFICATION', 'BROKEN', 'DELAYED'].map(key => (\n              <option key={key} value={key}>\n                {key}\n              </option>\n            ))}\n          </select>\n        </label>\n        {connectionState.type === 'BROKEN' && (\n          <label style={{ display: 'block' }}>\n            <span style={{ display: 'inline-block', marginTop: '8px', marginLeft: '64px' }}>\n              {' '}\n              with status\n            </span>\n            <select\n              style={{ marginLeft: '4px', width: '120px', ...inputStyles }}\n              value={connectionState.status}\n              onChange={e => {\n                const value: ErrorStatus = parseInt(e.currentTarget.value, 10) as any;\n                setConnectionState({ ...connectionState, status: value });\n              }}\n            >\n              {Object.entries(errorStatus).map(([label, status]) => (\n                <option key={status} value={status}>\n                  {label} ({status})\n                </option>\n              ))}\n            </select>\n          </label>\n        )}\n        {connectionState.type !== 'NO_MODIFICATION' && (\n          <label style={{ display: 'block' }}>\n            <span style={{ display: 'inline-block', marginTop: '8px', marginLeft: '64px' }}>\n              {' '}\n              delay by\n            </span>\n            <input\n              style={{ marginLeft: '4px', width: '40px', ...inputStyles }}\n              type=\"number\"\n              value={connectionState.delay}\n              min={0}\n              onChange={e => {\n                const value: number = Number(e.currentTarget.value) || 0;\n                setConnectionState({ ...connectionState, delay: value });\n              }}\n            />{' '}\n            seconds\n          </label>\n        )}\n      </div>\n    </div>\n  );\n};\n","import React from 'react';\nimport { JSONTree } from 'react-json-tree';\n\nimport { Button } from '../components/Button.js';\nimport { jsonTreeTheme } from '../theme.js';\n\ntype Props = {\n  ricosProps: any;\n};\n\nexport const RicosPropsTab: React.FC<Props> = ({ ricosProps }) => {\n  return (\n    <div>\n      <div style={{ display: 'flex', justifyContent: 'flex-end' }}>\n        <Button\n          onClick={() => {\n            // oxlint-disable-next-line no-console\n            console.log(ricosProps);\n          }}\n        >\n          Log Props\n        </Button>\n      </div>\n      <JSONTree data={ricosProps} invertTheme={false} theme={jsonTreeTheme} hideRoot />\n    </div>\n  );\n};\n","import React from 'react';\nimport { JSONTree } from 'react-json-tree';\n\nimport type { DevContextProps } from './../../../ricos-context/index.js';\nimport { DevContext } from './../../../ricos-context/index.js';\n\nimport { Button } from '../components/Button.js';\nimport { jsonTreeTheme } from '../theme.js';\n\nexport const RicosRenderingTab: React.FC = () => {\n  const devContext = React.useContext(DevContext) as DevContextProps;\n\n  const [renderCounts, setRenderCounts] = React.useState<Map<string, number>>(\n    devContext.renderCounts ?? new Map()\n  );\n\n  React.useEffect(() => {\n    const subscription = devContext.onRenderCountChange?.(renderCounts => {\n      setRenderCounts(new Map(renderCounts));\n    });\n\n    return () => subscription?.();\n  }, [devContext]);\n\n  return (\n    <div>\n      <div style={{ display: 'flex', justifyContent: 'flex-end' }}>\n        <Button onClick={() => devContext.resetRenderCounts?.()}>Reset counters</Button>\n      </div>\n      <JSONTree data={renderCounts} invertTheme={false} theme={jsonTreeTheme} hideRoot />\n    </div>\n  );\n};\n","import React from 'react';\nimport { JSONTree } from 'react-json-tree';\n\nimport { RicosDocumentJTD } from './../../../ricos-schema/next-schema/index.js';\n\nimport { Button } from '../components/Button.js';\nimport { jsonTreeTheme } from '../theme.js';\n\nexport const RicosSchemaTab: React.FC = () => {\n  const [openedRef, setOpenedRef] = React.useState<string | null>(null);\n  React.useEffect(() => {\n    if (!openedRef) {\n      return;\n    }\n    const el = document.querySelector(`[data-definition=\"${openedRef}\"]`);\n    if (el) {\n      el.scrollIntoView({ behavior: 'smooth' });\n    }\n  }, [openedRef]);\n  return (\n    <div>\n      <div style={{ display: 'flex', justifyContent: 'flex-end' }}>\n        <p style={{ color: 'rgba(205, 214, 244, .8)' }}>\n          Ricos schema is defined in JSON Typedef, you can read more about it{' '}\n          <a\n            target=\"_blank\"\n            style={{ color: jsonTreeTheme.base0A }}\n            href=\"https://jsontypedef.com/docs/jtd-in-5-minutes/\"\n            rel=\"noreferrer\"\n          >\n            here.\n          </a>\n        </p>\n        <Button\n          onClick={() => {\n            // oxlint-disable-next-line no-console\n            console.log(RicosDocumentJTD);\n          }}\n        >\n          Log Schema\n        </Button>\n      </div>\n      <JSONTree\n        collectionLimit={0}\n        labelRenderer={path => {\n          if (path.length === 2 && path[1] === 'definitions') {\n            return <span data-definition={path[0]}>{path[0]}</span>;\n          }\n          return path[0];\n        }}\n        valueRenderer={(valueAsString, value, ...nodePath) => {\n          if (nodePath[0] === 'ref') {\n            return (\n              <span>\n                {valueAsString}\n                <Button\n                  onClick={() => {\n                    setOpenedRef(value);\n                  }}\n                >\n                  open\n                </Button>\n              </span>\n            );\n          }\n          return valueAsString;\n        }}\n        data={RicosDocumentJTD}\n        invertTheme={false}\n        theme={jsonTreeTheme}\n        hideRoot\n        shouldExpandNode={path => {\n          const rev = [...path].reverse();\n          if (rev.length === 1 && rev[0] === 'definitions') {\n            return true;\n          }\n          if (rev.length === 2 && rev[0] === 'definitions' && openedRef && openedRef === rev[1]) {\n            return true;\n          }\n          return false;\n        }}\n      />\n    </div>\n  );\n};\n","import type { MouseEventHandler } from 'react';\nimport React from 'react';\nimport { Dock } from 'react-dock';\nimport ReactDOM from 'react-dom';\n\nimport { SchemaContext } from './../../ricos-context/index.js';\nimport type { RicosSchema } from './../../ricos-orchestrator/ricos-schema.js';\nimport { encodeUnicodeBase64, legacyPluginToNextMap } from './../../ricos-schema/next-schema/index.js';\nimport { getOverrideValue, hasWixInsiderOverride } from './../lib/overrides.js';\n\nimport { Tab, TabList, TabPanel, Tabs } from './components/Tabs.js';\nimport { RcpLogo } from './logo.js';\nimport { RichContentTree } from './tabs/rich-content-tree.js';\nimport { RicosContentEditorTab } from './tabs/ricos-content-editor/ricos-content-editor.js';\nimport { RicosNetworkConditionsTab } from './tabs/ricos-network-conditions.js';\nimport { RicosPropsTab } from './tabs/ricos-props.js';\nimport { RicosRenderingTab } from './tabs/ricos-rendering.js';\nimport { RicosSchemaTab } from './tabs/ricos-schema.js';\nimport { mainTheme as theme } from './theme.js';\n\ntype Props = {\n  contentState: any;\n  ricosProps: { plugins?: { type: string }[]; content?: any };\n  mode: 'viewer' | 'editor';\n  version: string;\n  schema?: Pick<RicosSchema, 'getContent' | 'setContent'>;\n};\n\nconst RicosDevTools: React.FC<Props & { autoOpen: boolean }> = ({\n  contentState,\n  ricosProps,\n  mode,\n  version,\n  autoOpen,\n  schema,\n}) => {\n  if (typeof window === 'undefined') {\n    return null;\n  }\n  const [isOpen, toggle] = useGlobalDevToolsState(autoOpen);\n\n  return (\n    <>\n      <button\n        onClick={toggle}\n        type=\"button\"\n        style={{\n          border: 'none',\n          background: 'transparent',\n          position: 'absolute',\n          right: '0px',\n          color: 'black',\n          padding: '5px',\n          cursor: 'pointer',\n          zIndex: 1,\n        }}\n        className=\"ricos-dev-tools-button\"\n        tabIndex={-1}\n      >\n        <RcpLogo fill={hasWixInsiderOverride ? '#F63B1F' : '#231f20'} />\n      </button>\n      {isOpen && (\n        <RicosDevToolsDock\n          contentState={contentState}\n          ricosProps={ricosProps}\n          close={toggle}\n          mode={mode}\n          version={version}\n          schema={schema}\n        />\n      )}\n    </>\n  );\n};\n\nconst DEV_TOOLS_KEY = '__RICOS_DEV_TOOLS_OPENED_ELEMENT__';\n\n// We want all instances of this dashboard to be closed when opening current instance, so we use\n// global state to track opened dashboard\nconst useGlobalDevToolsState = (initiallyOpen: boolean): [boolean, () => void] => {\n  (window as any)[DEV_TOOLS_KEY] =\n    (window as any)[DEV_TOOLS_KEY] ??\n    (() => {\n      const state = {\n        activeDashboard: {} as object | undefined,\n        subscribers: [] as (() => void)[],\n        toggle: (identityObject: object) => {\n          if (state.activeDashboard === identityObject) {\n            state.activeDashboard = undefined;\n          } else {\n            state.activeDashboard = identityObject;\n          }\n          state.subscribers.forEach(x => x());\n        },\n        setActiveDashboard: (identityObject: object) => {\n          state.activeDashboard = identityObject;\n          state.subscribers.forEach(x => x());\n        },\n        subscribe: (fn: () => void) => {\n          state.subscribers.push(fn);\n        },\n        unsubscribe: (fn: () => void) => {\n          state.subscribers = state.subscribers.filter(x => x !== fn);\n        },\n      };\n      return state;\n    })();\n\n  const [identityObject] = React.useState({});\n  const [_, forceUpdate] = React.useReducer(x => x + 1, 0);\n\n  React.useEffect(() => {\n    (window as any)[DEV_TOOLS_KEY].subscribe(forceUpdate);\n    if (initiallyOpen) {\n      (window as any)[DEV_TOOLS_KEY].setActiveDashboard(identityObject);\n    }\n    return () => {\n      (window as any)[DEV_TOOLS_KEY].unsubscribe(forceUpdate);\n    };\n  }, []);\n  return [\n    (window as any)[DEV_TOOLS_KEY].activeDashboard === identityObject,\n    () => (window as any)[DEV_TOOLS_KEY].toggle(identityObject),\n  ];\n};\n\nconst RicosDevToolsDock: React.FC<Props & { close: () => void }> = ({\n  contentState,\n  close,\n  ricosProps,\n  mode,\n  version,\n  schema: schemaFallback,\n}) => {\n  const [tabIndex, setTabIndex] = React.useState('state');\n  const encodedContent = encodeUnicodeBase64(JSON.stringify(contentState));\n  const plugins = ricosProps.plugins?.map(p => legacyPluginToNextMap[p.type]) || [];\n  const schema = React.useContext(SchemaContext) ?? schemaFallback;\n  return ReactDOM.createPortal(\n    <Dock\n      position=\"bottom\"\n      dimMode=\"none\"\n      isVisible\n      defaultSize={0.3}\n      onSizeChange={() => {}}\n      zIndex={10000}\n      fluid\n      duration={0}\n    >\n      <div\n        style={{\n          width: '100%',\n          height: '100%',\n          overflow: 'hidden',\n          paddingTop: '15px',\n          background: theme.mainBg,\n          fontFamily: 'Helvetica Neue, Calibri Light, Roboto, sans-serif',\n          fontSize: '13px',\n        }}\n      >\n        <CloseButton onClick={close}>×</CloseButton>\n\n        <div\n          style={{\n            position: 'absolute',\n            right: 20,\n            top: 2,\n            color: theme.white60,\n            fontSize: '14px',\n            padding: '4px',\n          }}\n        >\n          {mode === 'editor' ? `ricos-editor@${version}` : `ricos-viewer@${version}`}\n          {hasWixInsiderOverride && (\n            <>\n              {' '}\n              <span style={{ color: 'red' }}>{getOverrideValue()}</span>\n            </>\n          )}{' '}\n          <a\n            style={{ color: theme.white60, padding: '0 10px' }}\n            href={`https://ricos.dev?v=${version}&plugins=${\n              plugins.length ? plugins.join('.') : 'NONE'\n            }#content=${encodedContent}`}\n          >\n            Open in RICOS.DEV\n          </a>\n        </div>\n        <Tabs onSelect={setTabIndex} selectedIndex={tabIndex}>\n          <TabList>\n            <Tab index=\"state\">State</Tab>\n            <Tab index=\"contentEditor\">Content Editor</Tab>\n            <Tab index=\"props\">All Props</Tab>\n            <Tab index=\"schema\">Schema</Tab>\n            <Tab index=\"rendering\">Rendering</Tab>\n            {mode === 'editor' && <Tab index=\"networkConditions\">Network conditions</Tab>}\n          </TabList>\n\n          <TabPanel>\n            {({ index }): React.ReactNode => {\n              switch (index) {\n                case 'state':\n                  return <RichContentTree content={contentState} />;\n                case 'contentEditor':\n                  return (\n                    <RicosContentEditorTab\n                      editorPlugins={plugins}\n                      content={schema.getContent()}\n                      onChange={content => schema.setContent(content)}\n                      mode={mode}\n                    />\n                  );\n                case 'props':\n                  return <RicosPropsTab ricosProps={ricosProps} />;\n                case 'schema':\n                  return <RicosSchemaTab />;\n                case 'rendering':\n                  return <RicosRenderingTab />;\n                case 'networkConditions':\n                  return mode === 'editor' ? <RicosNetworkConditionsTab /> : null;\n                default:\n                  return <div>unknown tab</div>;\n              }\n            }}\n          </TabPanel>\n        </Tabs>\n      </div>\n    </Dock>,\n    document.body\n  );\n};\n\nconst CloseButton: React.FC<{\n  onClick: MouseEventHandler<HTMLButtonElement>;\n  children: React.ReactNode;\n}> = ({ children, onClick }) => (\n  <button\n    type=\"button\"\n    onClick={onClick}\n    style={{\n      background: 'none',\n      border: 'none',\n      position: 'absolute',\n      top: 2,\n      right: 0,\n      color: theme.white60,\n      fontSize: '18px',\n      cursor: 'pointer',\n    }}\n  >\n    {children}\n  </button>\n);\nexport default RicosDevTools;\n","import React from 'react';\n\nexport const RicosDevToolsLazy = React.lazy(\n  () => import(/* webpackChunkName: \"ricos-dev-tools\" */ './RicosDevTools.js')\n);\n","import { isSSR } from '../Utils/ssrUtils.js';\n\nexport const shouldShowDebuggingInfo = (isDebugMode = false): boolean => {\n  if (isSSR()) {\n    return false;\n  }\n  return /ricos-debug/i.test(window.location.search) || isDebugMode;\n};\n","export { DevContextProvider } from '../devTools/dev-contenxt-provider.js';\nexport { RicosDevToolsLazy } from '../devTools/RicosDevToolsLazy.js';\nexport { shouldShowDebuggingInfo } from '../devTools/shouldShowDebuggingInfo.js';\n","import lodash from 'lodash';\n\nimport {\n  ANCHOR_TYPE,\n  APP_EMBED_TYPE,\n  AUDIO_TYPE,\n  BLOCKQUOTE,\n  CODE_BLOCK_TYPE,\n  COLLAPSIBLE_LIST_TYPE,\n  DIVIDER_TYPE,\n  EMOJI_TYPE,\n  FILE_UPLOAD_TYPE,\n  GALLERY_TYPE,\n  GIPHY_TYPE,\n  HTML_TYPE,\n  IMAGE_TYPE,\n  LINK_BUTTON_TYPE,\n  LINK_PREVIEW_TYPE,\n  LINK_TYPE,\n  MENTION_TYPE,\n  POLL_TYPE,\n  TABLE_TYPE,\n  VIDEO_TYPE,\n} from './../../ricos-content/index.js';\nimport { extract } from './../../ricos-content/lib/extract.js';\nimport { getDataFieldValue } from './../../ricos-content/TranslatableAPI/utils.js';\nimport type { RichContent } from './../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport { Decoration_Type, Node_Type } from './../../ricos-schema/legacy/wix/rich_content/v1/index.js';\n\nconst countByType = (obj: { type?: string }[]) => lodash.countBy(obj, x => x.type);\n\nconst TO_PLUGIN_TYPE: { [key in Node_Type]?: string } = {\n  [Node_Type.DIVIDER]: DIVIDER_TYPE,\n  [Node_Type.IMAGE]: IMAGE_TYPE,\n  [Node_Type.GALLERY]: GALLERY_TYPE,\n  [Node_Type.GIF]: GIPHY_TYPE,\n  [Node_Type.HTML]: HTML_TYPE,\n  [Node_Type.VIDEO]: VIDEO_TYPE,\n  [Node_Type.FILE]: FILE_UPLOAD_TYPE,\n  [Node_Type.POLL]: POLL_TYPE,\n  [Node_Type.COLLAPSIBLE_LIST]: COLLAPSIBLE_LIST_TYPE,\n  [Node_Type.TABLE]: TABLE_TYPE,\n  [Node_Type.EMBED]: LINK_PREVIEW_TYPE,\n  [Node_Type.LINK_PREVIEW]: LINK_PREVIEW_TYPE,\n  [Node_Type.APP_EMBED]: APP_EMBED_TYPE,\n  [Node_Type.AUDIO]: AUDIO_TYPE,\n  [Node_Type.BUTTON]: LINK_BUTTON_TYPE,\n  [Node_Type.CODE_BLOCK]: CODE_BLOCK_TYPE,\n  [Node_Type.BLOCKQUOTE]: BLOCKQUOTE,\n};\n\nconst headingLevelToTag = {\n  1: 'header-one',\n  2: 'header-two',\n  3: 'header-three',\n  4: 'header-four',\n  5: 'header-five',\n  6: 'header-six',\n};\n\nconst DECORATION_TO_NODE_TYPE: { [key in Decoration_Type]?: string } = {\n  [Decoration_Type.MENTION]: MENTION_TYPE,\n  [Decoration_Type.LINK]: LINK_TYPE,\n  [Decoration_Type.ANCHOR]: ANCHOR_TYPE,\n};\n\nconst emojiRegex =\n  /\\u00a9|\\u00ae|[\\u2000-\\u3300]|\\ud83c[\\ud000-\\udfff]|\\ud83d[\\ud000-\\udfff]|\\ud83e[\\ud000-\\udfff]/g;\n\nexport function getContentSummary(content: RichContent) {\n  const { nodes } = content;\n  const plugins = extract(nodes ?? [])\n    .filter(\n      node =>\n        ![\n          Node_Type.PARAGRAPH,\n          Node_Type.TEXT,\n          Node_Type.UNRECOGNIZED,\n          Node_Type.COLLAPSIBLE_ITEM,\n          Node_Type.COLLAPSIBLE_ITEM_BODY,\n          Node_Type.COLLAPSIBLE_ITEM_TITLE,\n          Node_Type.TABLE_CELL,\n          Node_Type.TABLE_ROW,\n        ].includes(node.type)\n    )\n    .map(node => {\n      const { type } = node;\n      const data = getDataFieldValue(node);\n      const details: { type?: string; data?: any } = {};\n      const plugin_type =\n        TO_PLUGIN_TYPE[type] ||\n        (type === Node_Type.HEADING &&\n          headingLevelToTag[(data as any)?.level as $TSFixMeKey<typeof headingLevelToTag>]);\n      if (plugin_type) {\n        details.type = plugin_type;\n        if (data) {\n          details.data = data;\n        }\n      }\n      return details;\n    })\n    .filter(node => !!node.type)\n    .get();\n  const decorations = extract(nodes ?? [])\n    .filter(node => {\n      return !!node.textData?.decorations?.some(decoration =>\n        [Decoration_Type.ANCHOR, Decoration_Type.LINK, Decoration_Type.MENTION].includes(\n          decoration.type\n        )\n      );\n    })\n    .map(node => {\n      const data = node.textData?.decorations?.find(\n        decoration => DECORATION_TO_NODE_TYPE[decoration.type]\n      );\n      const details: { type?: string; data?: any } = {};\n      const plugin_type = data?.type && DECORATION_TO_NODE_TYPE[data.type];\n      if (plugin_type) {\n        details.type = plugin_type;\n        if (data) {\n          details.data = getDataFieldValue(node);\n        }\n      }\n      return details;\n    })\n    .filter(node => !!node.type)\n    .get();\n  const emoji = extract(nodes ?? [])\n    .map(({ textData }) => textData?.text || '')\n    .get()\n    .reduce((acc, text) => {\n      return acc + (text.match(emojiRegex) || []).length;\n    }, 0);\n  return {\n    pluginsCount: {\n      ...countByType(plugins),\n      ...countByType(decorations),\n      [EMOJI_TYPE]: emoji,\n    },\n    pluginsDetails: [...plugins, ...decorations] as { type: string; data: any }[],\n  };\n}\n","export { getContentSummary } from '../Utils/ricosContentAnalytics.js';\n","import type { ResizeOptions } from './resize-media-url.js';\nimport { resizeMediaUrl } from './resize-media-url.js';\n\nexport const fullscreenResizeMediaUrl = (params: ResizeOptions) =>\n  resizeMediaUrl({\n    ...params,\n    requiredWidth: params.requiredWidth * 2,\n    requiredHeight: params.requiredHeight * 2,\n  });\n","export const FULLSCREEN_ROOT = 'fullscreen-root';\nexport const FULLSCREEN_CLOSE_BUTTON = 'fullscreen-close-button';\nexport const FULLSCREEN_TOGGLE_BUTTON = 'fullscreen-toggle-button';\nexport const FULLSCREEN_IMAGE_ITEM = 'fullscreen-image-item';\n","var styleDataHash = 'fef20031';  \nexport const injectCss = (() => {\n  var css = `.-Ss5b,.r8c4O{background:#fff;box-sizing:border-box;height:100dvh;left:0;position:fixed;top:0;width:100vw;z-index:100001}.-Ss5b .pro-gallery .ltr,.-Ss5b .pro-gallery .rtl,.r8c4O .pro-gallery .ltr,.r8c4O .pro-gallery .rtl{direction:ltr!important}.-Ss5b{padding-top:70px}@media only screen and (max-width:640px){.-Ss5b{padding-top:40px}}.dhi8t{background:transparent;border:hidden;border-radius:4px;box-sizing:border-box;color:#000;cursor:pointer;height:fit-content;padding:0;position:fixed;right:17px;top:10px;width:fit-content;z-index:1001}@media only screen and (max-width:640px){.dhi8t{right:20px;top:5px}.dhi8t>svg{height:30px;width:30px}}.dhi8t:focus-visible{outline:5px auto Highlight!important;outline:5px auto -webkit-focus-ring-color!important}.gQghu{background:transparent;border:hidden;border-radius:4px;box-sizing:border-box;color:#000;cursor:pointer;height:fit-content;left:22px;padding:0;position:fixed;top:10px;width:fit-content;z-index:1001}.gQghu:focus-visible{outline:5px auto Highlight!important;outline:5px auto -webkit-focus-ring-color!important}.uPa67{font-size:14px;line-height:20px;text-align:center;text-wrap:wrap}.AiuIK{box-sizing:border-box;display:flex;height:100%;justify-content:center;width:100%}div.pro-gallery .gallery-item-container.main-color-on-hover:not(.hide-hover) .gallery-item-content .gallery-item{transition:opacity .4s ease!important}div.pro-gallery .gallery-item-container.main-color-on-hover:not(.hide-hover).simulate-hover .gallery-item-content .gallery-item,div.pro-gallery .gallery-item-container.main-color-on-hover:not(.hide-hover):hover .gallery-item-content .gallery-item{opacity:0}div.pro-gallery .gallery-item-container.zoom-in-on-hover:not(.hide-hover) .gallery-item-content,div.pro-gallery .gallery-item-container.zoom-in-on-hover:not(.hide-hover) .gallery-item-hover:not(.hide-hover),div.pro-gallery .gallery-item-container.zoom-in-on-hover:not(.hide-hover) .hover-info-element{transition:transform 2.2s cubic-bezier(.14,.4,.09,.99)!important}div.pro-gallery .gallery-item-container.zoom-in-on-hover:not(.hide-hover).simulate-hover .gallery-item-content,div.pro-gallery .gallery-item-container.zoom-in-on-hover:not(.hide-hover):hover .gallery-item-content{transform:scale(1.1)}div.pro-gallery .gallery-item-container.zoom-in-on-hover:not(.hide-hover).simulate-hover .gallery-item-hover:not(.hide-hover),div.pro-gallery .gallery-item-container.zoom-in-on-hover:not(.hide-hover):hover .gallery-item-hover:not(.hide-hover){transform:scale(1.11)}div.pro-gallery .gallery-item-container.zoom-in-on-hover:not(.hide-hover).simulate-hover .gallery-item-hover:not(.hide-hover) .hover-info-element,div.pro-gallery .gallery-item-container.zoom-in-on-hover:not(.hide-hover):hover .gallery-item-hover:not(.hide-hover) .hover-info-element{transform:scale(.9009009009)}div.pro-gallery .gallery-item-container.tilt-on-hover:not(.hide-hover) .gallery-item-content,div.pro-gallery .gallery-item-container.tilt-on-hover:not(.hide-hover) .gallery-item-hover:not(.hide-hover),div.pro-gallery .gallery-item-container.tilt-on-hover:not(.hide-hover) .hover-info-element{transition:transform 1.2s cubic-bezier(.14,.4,.09,.99)!important}div.pro-gallery .gallery-item-container.tilt-on-hover:not(.hide-hover).simulate-hover .gallery-item-content,div.pro-gallery .gallery-item-container.tilt-on-hover:not(.hide-hover):hover .gallery-item-content{transform:scale(.845) rotate(calc(var(--tiltAngleValue)*1deg))}div.pro-gallery .gallery-item-container.blur-on-hover:not(.hide-hover) .gallery-item-content{transition:filter .4s linear!important}div.pro-gallery .gallery-item-container.blur-on-hover:not(.hide-hover).simulate-hover .gallery-item-content .gallery-item,div.pro-gallery .gallery-item-container.blur-on-hover:not(.hide-hover):hover .gallery-item-content .gallery-item{filter:blur(6px)}div.pro-gallery .gallery-item-container.grayscale-on-hover:not(.hide-hover) .gallery-item-content{transition:filter .6s ease!important}div.pro-gallery .gallery-item-container.grayscale-on-hover:not(.hide-hover).simulate-hover .gallery-item-content,div.pro-gallery .gallery-item-container.grayscale-on-hover:not(.hide-hover):hover .gallery-item-content{filter:grayscale(1)}div.pro-gallery .gallery-item-container.shrink-on-hover:not(.hide-hover){transition:background-color .4s ease!important;transition:transform .4s ease!important}div.pro-gallery .gallery-item-container.shrink-on-hover:not(.hide-hover).simulate-hover,div.pro-gallery .gallery-item-container.shrink-on-hover:not(.hide-hover):hover{transform:scale(.985)}div.pro-gallery .gallery-item-container.shrink-on-hover:not(.hide-hover).simulate-hover div,div.pro-gallery .gallery-item-container.shrink-on-hover:not(.hide-hover):hover div{transform:none!important}div.pro-gallery .gallery-item-container.invert-on-hover:not(.hide-hover) .gallery-item-content{transition:filter .6s ease!important}div.pro-gallery .gallery-item-container.invert-on-hover:not(.hide-hover).simulate-hover .gallery-item-content,div.pro-gallery .gallery-item-container.invert-on-hover:not(.hide-hover):hover .gallery-item-content{filter:invert(1)}div.pro-gallery .gallery-item-container.color-in-on-hover .gallery-item-content{filter:grayscale(1);transition:filter .6s ease!important}div.pro-gallery .gallery-item-container.color-in-on-hover.simulate-hover:not(.hide-hover) .gallery-item-content,div.pro-gallery .gallery-item-container.color-in-on-hover:hover:not(.hide-hover) .gallery-item-content{filter:grayscale(0)}div.pro-gallery .gallery-item-container.darkened-on-hover .gallery-item-content{filter:brightness(1);transition:filter .6s ease!important}div.pro-gallery .gallery-item-container.darkened-on-hover.simulate-hover:not(.hide-hover) .gallery-item-content,div.pro-gallery .gallery-item-container.darkened-on-hover:hover:not(.hide-hover) .gallery-item-content{filter:brightness(.7)}div.pro-gallery .gallery-item-container:not(.invert-hover) .gallery-item-hover{transition:none}div.pro-gallery .gallery-item-container:not(.invert-hover) .gallery-item-hover .gallery-item-hover-inner,div.pro-gallery .gallery-item-container:not(.invert-hover) .gallery-item-hover:before{opacity:0}div.pro-gallery .gallery-item-container:not(.invert-hover) .gallery-item-hover.force-hover,div.pro-gallery .gallery-item-container:not(.invert-hover):hover .gallery-item-hover:not(.hide-hover){transition:none}div.pro-gallery .gallery-item-container:not(.invert-hover) .gallery-item-hover.force-hover:before,div.pro-gallery .gallery-item-container:not(.invert-hover):hover .gallery-item-hover:not(.hide-hover):before{background:rgba(8,8,8,.75);opacity:1}div.pro-gallery .gallery-item-container:not(.invert-hover) .gallery-item-hover.force-hover .gallery-item-hover-inner,div.pro-gallery .gallery-item-container:not(.invert-hover) .gallery-item-hover.force-hover .info-member:not(.hidden),div.pro-gallery .gallery-item-container:not(.invert-hover):hover .gallery-item-hover:not(.hide-hover) .gallery-item-hover-inner,div.pro-gallery .gallery-item-container:not(.invert-hover):hover .gallery-item-hover:not(.hide-hover) .info-member:not(.hidden){opacity:1!important}div.pro-gallery .gallery-item-container:not(.invert-hover).hover-animation-fade-in .gallery-item-hover{transition:filter .4s ease,opacity .4s ease!important}div.pro-gallery .gallery-item-container:not(.invert-hover).hover-animation-fade-in .gallery-item-hover:before{filter:opacity(0);transition:filter .4s ease,opacity .4s ease!important}div.pro-gallery .gallery-item-container:not(.invert-hover).hover-animation-fade-in .gallery-item-hover .gallery-item-hover-inner,div.pro-gallery .gallery-item-container:not(.invert-hover).hover-animation-fade-in .gallery-item-hover .info-member:not(.hidden){transition:opacity .4s ease}div.pro-gallery .gallery-item-container:not(.invert-hover).hover-animation-fade-in .gallery-item-hover.force-hover:before,div.pro-gallery .gallery-item-container:not(.invert-hover).hover-animation-fade-in:hover .gallery-item-hover:not(.hide-hover):before{filter:opacity(1)}div.pro-gallery .gallery-item-container:not(.invert-hover).hover-animation-expand .gallery-item-hover{transition:transform .4s ease,filter .2s ease,opacity .2s ease!important}div.pro-gallery .gallery-item-container:not(.invert-hover).hover-animation-expand .gallery-item-hover:before{filter:opacity(0);transform:scale(.9);transition:transform .4s ease,filter .2s ease,opacity .2s ease!important}div.pro-gallery .gallery-item-container:not(.invert-hover).hover-animation-expand .gallery-item-hover .gallery-item-hover-inner,div.pro-gallery .gallery-item-container:not(.invert-hover).hover-animation-expand .gallery-item-hover .info-member:not(.hidden){transition:opacity .2s ease}div.pro-gallery .gallery-item-container:not(.invert-hover).hover-animation-expand .gallery-item-hover.force-hover:before,div.pro-gallery .gallery-item-container:not(.invert-hover).hover-animation-expand:hover .gallery-item-hover:not(.hide-hover):before{filter:opacity(1);transform:scale(1)}div.pro-gallery .gallery-item-container:not(.invert-hover).hover-animation-slide-up .gallery-item-hover{transition:transform .4s cubic-bezier(.3,.13,.12,1),filter .5s ease,opacity .5s ease!important}div.pro-gallery .gallery-item-container:not(.invert-hover).hover-animation-slide-up .gallery-item-hover:before{filter:opacity(0);transform:translateY(100%);transition:transform .4s cubic-bezier(.3,.13,.12,1),filter .5s ease,opacity .5s ease!important}div.pro-gallery .gallery-item-container:not(.invert-hover).hover-animation-slide-up .gallery-item-hover .gallery-item-hover-inner,div.pro-gallery .gallery-item-container:not(.invert-hover).hover-animation-slide-up .gallery-item-hover .info-member:not(.hidden){transition:opacity .4s ease}div.pro-gallery .gallery-item-container:not(.invert-hover).hover-animation-slide-up .gallery-item-hover.force-hover:before,div.pro-gallery .gallery-item-container:not(.invert-hover).hover-animation-slide-up:hover .gallery-item-hover:not(.hide-hover):before{filter:opacity(1);transform:translateY(0)}div.pro-gallery .gallery-item-container:not(.invert-hover).hover-animation-slide-right .gallery-item-hover{transition:transform .4s cubic-bezier(.3,.13,.12,1),filter .5s ease,opacity .5s ease!important}div.pro-gallery .gallery-item-container:not(.invert-hover).hover-animation-slide-right .gallery-item-hover:before{filter:opacity(0);transform:translateX(-100%);transition:transform .4s cubic-bezier(.3,.13,.12,1),filter .5s ease,opacity .5s ease!important}div.pro-gallery .gallery-item-container:not(.invert-hover).hover-animation-slide-right .gallery-item-hover .gallery-item-hover-inner,div.pro-gallery .gallery-item-container:not(.invert-hover).hover-animation-slide-right .gallery-item-hover .info-member:not(.hidden){transition:opacity .4s ease}div.pro-gallery .gallery-item-container:not(.invert-hover).hover-animation-slide-right .gallery-item-hover.force-hover:before,div.pro-gallery .gallery-item-container:not(.invert-hover).hover-animation-slide-right:hover .gallery-item-hover:not(.hide-hover):before{filter:opacity(1);transform:translateX(0)}div.pro-gallery .gallery-item-container:not(.invert-hover).hover-animation-slide-left .gallery-item-hover{transition:transform .4s cubic-bezier(.3,.13,.12,1),filter .5s ease,opacity .5s ease!important}div.pro-gallery .gallery-item-container:not(.invert-hover).hover-animation-slide-left .gallery-item-hover:before{filter:opacity(0);transform:translateX(100%);transition:transform .4s cubic-bezier(.3,.13,.12,1),filter .5s ease,opacity .5s ease!important}div.pro-gallery .gallery-item-container:not(.invert-hover).hover-animation-slide-left .gallery-item-hover .gallery-item-hover-inner,div.pro-gallery .gallery-item-container:not(.invert-hover).hover-animation-slide-left .gallery-item-hover .info-member:not(.hidden){transition:opacity .4s ease}div.pro-gallery .gallery-item-container:not(.invert-hover).hover-animation-slide-left .gallery-item-hover.force-hover:before,div.pro-gallery .gallery-item-container:not(.invert-hover).hover-animation-slide-left:hover .gallery-item-hover:not(.hide-hover):before{filter:opacity(1);transform:translateX(0)}div.pro-gallery .gallery-item-container:not(.invert-hover).hover-animation-slide-down .gallery-item-hover{transition:transform .4s cubic-bezier(.3,.13,.12,1),filter .5s ease,opacity .5s ease!important}div.pro-gallery .gallery-item-container:not(.invert-hover).hover-animation-slide-down .gallery-item-hover:before{filter:opacity(0);transform:translateY(-100%);transition:transform .4s cubic-bezier(.3,.13,.12,1),filter .5s ease,opacity .5s ease!important}div.pro-gallery .gallery-item-container:not(.invert-hover).hover-animation-slide-down .gallery-item-hover .gallery-item-hover-inner,div.pro-gallery .gallery-item-container:not(.invert-hover).hover-animation-slide-down .gallery-item-hover .info-member:not(.hidden){transition:opacity .4s ease}div.pro-gallery .gallery-item-container:not(.invert-hover).hover-animation-slide-down .gallery-item-hover.force-hover:before,div.pro-gallery .gallery-item-container:not(.invert-hover).hover-animation-slide-down:hover .gallery-item-hover:not(.hide-hover):before{filter:opacity(1);transform:translateY(0)}div.pro-gallery .gallery-item-container.invert-hover .gallery-item-hover{transition:none}div.pro-gallery .gallery-item-container.invert-hover .gallery-item-hover:before{background:rgba(8,8,8,.75);opacity:1}div.pro-gallery .gallery-item-container.invert-hover .gallery-item-hover .gallery-item-hover-inner{opacity:1}div.pro-gallery .gallery-item-container.invert-hover .gallery-item-hover .gallery-item-hover-inner,div.pro-gallery .gallery-item-container.invert-hover .gallery-item-hover .info-member:not(.hidden){opacity:1!important}div.pro-gallery .gallery-item-container.invert-hover .gallery-item-hover.force-hover,div.pro-gallery .gallery-item-container.invert-hover:hover .gallery-item-hover:not(.hide-hover){transition:none}div.pro-gallery .gallery-item-container.invert-hover .gallery-item-hover.force-hover:before,div.pro-gallery .gallery-item-container.invert-hover:hover .gallery-item-hover:not(.hide-hover):before{opacity:0}div.pro-gallery .gallery-item-container.invert-hover .gallery-item-hover.force-hover .gallery-item-hover-inner,div.pro-gallery .gallery-item-container.invert-hover .gallery-item-hover.force-hover .info-member:not(.hidden),div.pro-gallery .gallery-item-container.invert-hover:hover .gallery-item-hover:not(.hide-hover) .gallery-item-hover-inner,div.pro-gallery .gallery-item-container.invert-hover:hover .gallery-item-hover:not(.hide-hover) .info-member:not(.hidden){opacity:0!important}div.pro-gallery .gallery-item-container.invert-hover.hover-animation-fade-in .gallery-item-hover{transition:filter .4s ease,opacity .4s ease!important}div.pro-gallery .gallery-item-container.invert-hover.hover-animation-fade-in .gallery-item-hover:before{filter:opacity(1);transition:filter .4s ease,opacity .4s ease!important}div.pro-gallery .gallery-item-container.invert-hover.hover-animation-fade-in .gallery-item-hover .gallery-item-hover-inner,div.pro-gallery .gallery-item-container.invert-hover.hover-animation-fade-in .gallery-item-hover .info-member:not(.hidden){transition:opacity .4s ease}div.pro-gallery .gallery-item-container.invert-hover.hover-animation-fade-in .gallery-item-hover.force-hover:before,div.pro-gallery .gallery-item-container.invert-hover.hover-animation-fade-in:hover .gallery-item-hover:not(.hide-hover):before{filter:opacity(0)}div.pro-gallery .gallery-item-container.invert-hover.hover-animation-expand .gallery-item-hover{transition:transform .4s ease,filter .2s ease,opacity .2s ease!important}div.pro-gallery .gallery-item-container.invert-hover.hover-animation-expand .gallery-item-hover:before{filter:opacity(1);transform:scale(1);transition:transform .4s ease,filter .2s ease,opacity .2s ease!important}div.pro-gallery .gallery-item-container.invert-hover.hover-animation-expand .gallery-item-hover .gallery-item-hover-inner,div.pro-gallery .gallery-item-container.invert-hover.hover-animation-expand .gallery-item-hover .info-member:not(.hidden){transition:opacity .2s ease}div.pro-gallery .gallery-item-container.invert-hover.hover-animation-expand .gallery-item-hover.force-hover:before,div.pro-gallery .gallery-item-container.invert-hover.hover-animation-expand:hover .gallery-item-hover:not(.hide-hover):before{filter:opacity(0);transform:scale(.9)}div.pro-gallery .gallery-item-container.invert-hover.hover-animation-slide-up .gallery-item-hover{transition:transform .4s cubic-bezier(.3,.13,.12,1),filter .5s ease,opacity .5s ease!important}div.pro-gallery .gallery-item-container.invert-hover.hover-animation-slide-up .gallery-item-hover:before{filter:opacity(1);transform:translateY(0);transition:transform .4s cubic-bezier(.3,.13,.12,1),filter .5s ease,opacity .5s ease!important}div.pro-gallery .gallery-item-container.invert-hover.hover-animation-slide-up .gallery-item-hover .gallery-item-hover-inner,div.pro-gallery .gallery-item-container.invert-hover.hover-animation-slide-up .gallery-item-hover .info-member:not(.hidden){transition:opacity .4s ease}div.pro-gallery .gallery-item-container.invert-hover.hover-animation-slide-up .gallery-item-hover.force-hover:before,div.pro-gallery .gallery-item-container.invert-hover.hover-animation-slide-up:hover .gallery-item-hover:not(.hide-hover):before{filter:opacity(0);transform:translateY(100%)}div.pro-gallery .gallery-item-container.invert-hover.hover-animation-slide-right .gallery-item-hover{transition:transform .4s cubic-bezier(.3,.13,.12,1),filter .5s ease,opacity .5s ease!important}div.pro-gallery .gallery-item-container.invert-hover.hover-animation-slide-right .gallery-item-hover:before{filter:opacity(1);transform:translateX(0);transition:transform .4s cubic-bezier(.3,.13,.12,1),filter .5s ease,opacity .5s ease!important}div.pro-gallery .gallery-item-container.invert-hover.hover-animation-slide-right .gallery-item-hover .gallery-item-hover-inner,div.pro-gallery .gallery-item-container.invert-hover.hover-animation-slide-right .gallery-item-hover .info-member:not(.hidden){transition:opacity .4s ease}div.pro-gallery .gallery-item-container.invert-hover.hover-animation-slide-right .gallery-item-hover.force-hover:before,div.pro-gallery .gallery-item-container.invert-hover.hover-animation-slide-right:hover .gallery-item-hover:not(.hide-hover):before{filter:opacity(0);transform:translateX(-100%)}div.pro-gallery .gallery-item-container.invert-hover.hover-animation-slide-left .gallery-item-hover{transition:transform .4s cubic-bezier(.3,.13,.12,1),filter .5s ease,opacity .5s ease!important}div.pro-gallery .gallery-item-container.invert-hover.hover-animation-slide-left .gallery-item-hover:before{filter:opacity(1);transform:translateX(100%);transition:transform .4s cubic-bezier(.3,.13,.12,1),filter .5s ease,opacity .5s ease!important}div.pro-gallery .gallery-item-container.invert-hover.hover-animation-slide-left .gallery-item-hover .gallery-item-hover-inner,div.pro-gallery .gallery-item-container.invert-hover.hover-animation-slide-left .gallery-item-hover .info-member:not(.hidden){transition:opacity .4s ease}div.pro-gallery .gallery-item-container.invert-hover.hover-animation-slide-left .gallery-item-hover.force-hover:before,div.pro-gallery .gallery-item-container.invert-hover.hover-animation-slide-left:hover .gallery-item-hover:not(.hide-hover):before{filter:opacity(0);transform:translateX(0)}div.pro-gallery .gallery-item-container.invert-hover.hover-animation-slide-down .gallery-item-hover{transition:transform .4s cubic-bezier(.3,.13,.12,1),filter .5s ease,opacity .5s ease!important}div.pro-gallery .gallery-item-container.invert-hover.hover-animation-slide-down .gallery-item-hover:before{filter:opacity(1);transform:translateY(-100%);transition:transform .4s cubic-bezier(.3,.13,.12,1),filter .5s ease,opacity .5s ease!important}div.pro-gallery .gallery-item-container.invert-hover.hover-animation-slide-down .gallery-item-hover .gallery-item-hover-inner,div.pro-gallery .gallery-item-container.invert-hover.hover-animation-slide-down .gallery-item-hover .info-member:not(.hidden){transition:opacity .4s ease}div.pro-gallery .gallery-item-container.invert-hover.hover-animation-slide-down .gallery-item-hover.force-hover:before,div.pro-gallery .gallery-item-container.invert-hover.hover-animation-slide-down:hover .gallery-item-hover:not(.hide-hover):before{filter:opacity(0);transform:translateY(0)}.animation-slide{transition:width .4s ease,height .4s ease,top .4s ease,left .4s ease}.item-with-secondary-media-container .secondary-media-item.hide{opacity:0}.item-with-secondary-media-container .secondary-media-item.show{opacity:1}[data-collapsed=true] .pro-gallery-parent-container .gallery-item,[data-hidden=true] .pro-gallery-parent-container .gallery-item{background-image:none!important}html.pro-gallery{height:auto;width:100%}body.pro-gallery{transition:opacity 2s ease}#gallery-loader{position:fixed;top:50%}.show-more-container{line-height:138px;text-align:center}.show-more-container i.show-more{color:#5d5d61;cursor:pointer;font-size:40px;margin-top:-3px}.show-more-container button.show-more{background:transparent;border:2px solid #5d5d61;border-radius:0;color:#5d5d61;cursor:pointer;display:inline-block;font-family:HelveticaNeueW01-45Ligh,HelveticaNeueW02-45Ligh,HelveticaNeueW10-45Ligh,sans-serif;font-size:12px;padding:11px 29px}.show-more-container button.show-more:hover{background:rgba(0,0,0,.1)}.more-items-loader{color:#116dff;display:block;font-size:30px;line-height:50px;text-align:center;width:100%}.version-header{background:hsla(0,0%,100%,.8);color:#e03939;font-family:Consolas,monospace;font-size:13px;height:100px;left:0;line-height:30px;position:absolute;text-align:left;top:0;width:320px;z-index:100}.auto-slideshow-button{cursor:pointer;height:28px;margin-top:19px;padding:5px;width:20px}.auto-slideshow-button,.auto-slideshow-counter{display:flex;left:auto;opacity:.9;position:absolute;text-align:center;z-index:1}.auto-slideshow-counter{font-size:15px;line-height:normal;margin-top:24px}@keyframes mGQIi{0%{opacity:0}to{opacity:1}}.mouse-cursor{display:flex;position:absolute;width:100%}.follow-mouse-cursor{position:absolute;transition:all .2s ease}.follow-mouse-cursor>div{pointer-events:none}.follow-mouse-cursor>div,.nav-arrows-container{align-items:center;display:flex;justify-content:center}.nav-arrows-container{background:transparent;border:none;cursor:pointer;left:auto;opacity:.9;outline:none;position:absolute;text-align:center}.nav-arrows-container:hover{opacity:1}.nav-arrows-container.shadow svg{filter:drop-shadow(0 1px .15px #B2B2B2)}.nav-arrows-container .slideshow-arrow{flex-shrink:0}.arrow-portal-container span{align-items:center;animation:fadeIn .1s ease-in-out;display:flex;justify-content:center;position:fixed;transition:top 50ms,left 50ms}div.gallery-slideshow .gallery-column,div.gallery-slideshow div.pro-gallery{box-sizing:content-box!important}div.gallery-slideshow .gallery-group,div.gallery-slideshow .gallery-item-container,div.gallery-slideshow .gallery-item-wrapper{overflow:visible!important}div.gallery-slideshow.streched .gallery-slideshow-info{padding-left:50px!important;padding-right:50px!important}@media (max-width:500px){div.gallery-slideshow div.pro-gallery .gallery-slideshow-info{padding-left:20px;padding-right:20px}}div.gallery-slideshow div.pro-gallery .gallery-item-container .gallery-slideshow-info{bottom:-220px;box-sizing:border-box;display:flex;height:220px;padding-top:0;position:absolute;width:100%;z-index:15}.gallery-thumbnails div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item-hover{padding:30px 60px}.gallery-slider div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item-hover{padding:30px 10px 50px}.gallery-columns div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item-hover{padding:30px}div.pro-gallery{height:100%;width:100%}div.pro-gallery,div.pro-gallery .gallery-column{backface-visibility:hidden;overflow:hidden;position:relative}div.pro-gallery .gallery-column{float:left;transform-style:preserve-3d}div.pro-gallery .gallery-column .gallery-left-padding{display:inline-block;height:100%}div.pro-gallery .gallery-column .gallery-top-padding{display:block;width:100%}div.pro-gallery .gallery-group{backface-visibility:hidden;box-sizing:border-box;float:left;font-family:HelveticaNeueW01-45Ligh,HelveticaNeueW02-45Ligh,HelveticaNeueW10-45Ligh,sans-serif;font-size:11px;overflow:hidden;padding:0;position:relative;transform-style:preserve-3d}div.pro-gallery .gallery-group.debug.gallery-group-gone{background:#cdcdd0}div.pro-gallery .gallery-group.debug.gallery-group-visible{background:#c1f0c1}div.pro-gallery .gallery-group.debug.gallery-group-hidden{background:#f99}div.pro-gallery .gallery-item-container{backface-visibility:hidden;border:none;border-radius:0;box-sizing:border-box;color:inherit;cursor:default;display:inline-block;font-family:HelveticaNeueW01-45Ligh,HelveticaNeueW02-45Ligh,HelveticaNeueW10-45Ligh,sans-serif;font-size:11px;outline:none;overflow:hidden;padding:0;position:absolute;scroll-snap-align:center;text-decoration:none;transform-style:preserve-3d;vertical-align:top;will-change:top,left,width,height}div.pro-gallery .gallery-item-container .item-action{height:1px;overflow:hidden;pointer-events:none;position:absolute;width:1px;z-index:-1}div.pro-gallery .gallery-item-container .item-action:focus{--focus-ring-box-shadow:none!important;box-shadow:none!important;outline:none!important}div.pro-gallery .gallery-item-container:hover .gallery-item-common-info{cursor:pointer}div.pro-gallery .gallery-item-container:hover .gallery-item-common-info button{cursor:pointer;text-decoration:underline}div.pro-gallery .gallery-item-container.visible{transform:translateZ(0)}div.pro-gallery .gallery-item-container.clickable{cursor:pointer}div.pro-gallery .gallery-item-container .gallery-item-wrapper{height:100%;overflow:hidden;position:relative;width:100%}div.pro-gallery .gallery-item-container .gallery-item-wrapper .item-with-secondary-media-container .secondary-media-item{height:100%;left:0;position:absolute;top:0;width:100%;z-index:1}div.pro-gallery .gallery-item-container .gallery-item-wrapper .item-with-secondary-media-container .secondary-media-item .gallery-item{object-fit:cover}div.pro-gallery .gallery-item-container .gallery-item-wrapper .item-with-secondary-media-container .secondary-media-item .text-item>div{height:100%!important;width:100%!important}div.pro-gallery .gallery-item-container .gallery-item-wrapper.cube-type-fit,div.pro-gallery .gallery-item-container .gallery-item-wrapper.transparent{background:transparent}div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item-preload{display:none}div.pro-gallery .gallery-item-container .gallery-item-wrapper.cube-type-fit .gallery-item{background:transparent;object-fit:contain}div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item{border-radius:0;height:100%;left:0;margin:0;object-fit:cover;overflow:hidden;position:absolute;top:0;width:100%}div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item.text-item{box-sizing:border-box;\n  /*! autoprefixer: ignore next */-webkit-font-smoothing:antialiased;white-space:normal}div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item.text-item .te-pro-gallery-text-item{letter-spacing:normal!important;line-height:normal!important}div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item.text-item>div{background:initial!important;box-sizing:border-box}div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item.text-item div,div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item.text-item h1,div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item.text-item h2,div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item.text-item h3,div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item.text-item h4,div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item.text-item h5,div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item.text-item h6,div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item.text-item i,div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item.text-item p,div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item.text-item span{margin:0;padding:0}div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item .pro-circle-preloader{height:30px;left:50%;opacity:.4;top:50%;width:15px;z-index:-1}div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item img.gallery--placeholder-item{height:100%!important;object-fit:cover;object-position:center;width:100%!important}div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item.gallery-item-loaded{animation:none!important;background-color:transparent;opacity:1!important}div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item.gallery-item-loaded.image-item:after{display:none!important}div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item.gallery-item-loaded~.pro-circle-preloader{display:none}div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item.error{opacity:0!important}div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item.gallery-item-preloaded{background-position:50%;background-repeat:no-repeat;background-size:cover}div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item.gallery-item-preloaded.grid-fit{background-size:contain}div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item.gallery-item-3d-placeholder.three-d-loaded img{opacity:0;pointer-events:none}div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item.gallery-item-3d-placeholder.three-d-loading img{opacity:1}div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item.gallery-item-3d-placeholder img{transition:opacity .2s ease}div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item.gallery-item-video{overflow:hidden;text-align:center}div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item.gallery-item-video iframe{left:0;top:0}div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item.gallery-item-video.playedOnce~.image-item{opacity:0;pointer-events:none;transition:opacity .2s ease}div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item.gallery-item-3d-placeholder.playing button,div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item.gallery-item-3d-placeholder.playing i,div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item.gallery-item-video.playing button,div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item.gallery-item-video.playing i,div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item.thumbnailItem.playing button,div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item.thumbnailItem.playing i{display:none}div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item.gallery-item-3d-placeholder button,div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item.gallery-item-3d-placeholder i,div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item.gallery-item-video button,div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item.gallery-item-video i,div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item.thumbnailItem button,div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item.thumbnailItem i{display:inline-block;text-rendering:auto;\n  /*! autoprefixer: ignore next */-webkit-font-smoothing:antialiased;background:#080808;border-radius:50px;color:#fff;height:60px;left:50%;margin:-30px 0 0 -30px;opacity:.7;position:absolute;text-align:center;top:50%;z-index:11}div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item.gallery-item-3d-placeholder button.play-triangle,div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item.gallery-item-3d-placeholder i.play-triangle,div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item.gallery-item-video button.play-triangle,div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item.gallery-item-video i.play-triangle,div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item.thumbnailItem button.play-triangle,div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item.thumbnailItem i.play-triangle{opacity:1}div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item.gallery-item-3d-placeholder button.play-background,div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item.gallery-item-3d-placeholder button.play-triangle,div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item.gallery-item-3d-placeholder i.play-background,div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item.gallery-item-3d-placeholder i.play-triangle,div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item.gallery-item-video button.play-background,div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item.gallery-item-video button.play-triangle,div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item.gallery-item-video i.play-background,div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item.gallery-item-video i.play-triangle,div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item.thumbnailItem button.play-background,div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item.thumbnailItem button.play-triangle,div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item.thumbnailItem i.play-background,div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item.thumbnailItem i.play-triangle{font-size:26px}div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item.gallery-item-3d-placeholder button:hover,div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item.gallery-item-3d-placeholder i:hover,div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item.gallery-item-video button:hover,div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item.gallery-item-video i:hover,div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item.thumbnailItem button:hover,div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item.thumbnailItem i:hover{opacity:.9}div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item.gallery-item-3d-placeholder button:before,div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item.gallery-item-3d-placeholder i:before,div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item.gallery-item-video button:before,div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item.gallery-item-video i:before,div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item.thumbnailItem button:before,div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item.thumbnailItem i:before{font-size:2.3em;opacity:1}div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item-info{bottom:-220px;box-sizing:border-box;display:flex;height:220px;position:absolute;width:100%;z-index:15}div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item-info>div{height:100%;width:100%}div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item-hover{border-radius:0;box-sizing:border-box;height:100%;left:0;margin:0;overflow:hidden;position:absolute;top:0;white-space:normal;width:100%;z-index:15}div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item-hover .gallery-item-hover-inner{height:100%}div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item-hover.no-hover-bg:before{opacity:0!important}div.pro-gallery .gallery-item-container .gallery-item-wrapper .gallery-item-hover:before{box-sizing:border-box;content:\" \";height:100%;left:0;margin:0;position:absolute;top:0;width:100%;z-index:-1}div.pro-gallery .gallery-item-container .gallery-item-common-info{box-sizing:border-box;cursor:pointer}div.pro-gallery .thumbnailItem.playing button,div.pro-gallery .thumbnailItem.playing i{display:none}div.pro-gallery .thumbnailItem button,div.pro-gallery .thumbnailItem i{display:inline-block;text-rendering:auto;\n  /*! autoprefixer: ignore next */-webkit-font-smoothing:antialiased;background:#080808;border-radius:100%;color:#fff;height:28px;left:50%;margin:-16px -1px 0 -16px;opacity:.7;position:absolute;text-align:center;top:50%;width:28px;z-index:11}div.pro-gallery .thumbnailItem button.play-triangle,div.pro-gallery .thumbnailItem i.play-triangle{opacity:1}div.pro-gallery .thumbnailItem button:before,div.pro-gallery .thumbnailItem i:before{font-size:2.3em;opacity:1}div.pro-gallery.one-row{float:left;white-space:nowrap}div.pro-gallery.one-row .gallery-column{float:none;white-space:nowrap;width:100%}div.pro-gallery.one-row .gallery-column .gallery-group{display:inline-block;float:none}div.pro-gallery.one-row.slider .gallery-column{overflow-x:scroll}div.pro-gallery.one-row.slider .gallery-column.scroll-snap{scroll-snap-type:x mandatory}div.pro-gallery.one-row .gallery-horizontal-scroll-inner{position:relative;will-change:transform}div.pro-gallery.thumbnails-gallery{float:left;overflow:hidden}div.pro-gallery.thumbnails-gallery .galleryColumn{overflow:visible;position:relative}div.pro-gallery.thumbnails-gallery .thumbnailItem{background-color:#fff;background-position:50%;background-size:cover;border-radius:0;cursor:pointer;overflow-y:inherit;position:absolute}div.pro-gallery.thumbnails-gallery .thumbnailItem.pro-gallery-highlight:after{background-color:hsla(0,0%,100%,.6);content:\"\";display:block;height:100%;left:0;position:absolute;top:0;width:100%}@media (max-width:500px){div.pro-gallery.thumbnails-gallery{overflow:visible}}div.pro-gallery :focus{box-shadow:none}div.pro-gallery.accessible button:not(.nav-arrows-container,.has-custom-focus):focus,div.pro-gallery.accessible i:focus{box-shadow:0 0 0 1px #fff,0 0 1px 2px #116dff}div.pro-gallery.accessible .has-custom-focus:focus{box-shadow:inset 0 0 0 1px #fff,inset 0 0 1px 4px #116dff}div.pro-gallery.accessible .gallery-item-hover button:focus,div.pro-gallery.accessible .gallery-item-hover i:focus{box-shadow:none}div.pro-gallery.accessible .thumbnailItem.pro-gallery-highlight:after{box-shadow:inset 0 0 1px 2px #116dff,inset 0 0 7px 0 #fff,0 0 10px -5px #116dff}div.pro-gallery.accessible .gallery-item-container:has(.item-action:focus):after{border-radius:inherit;box-shadow:inset 0 0 1px 2px #116dff,inset 0 0 7px 0 #fff,inset 0 0 10px -5px #116dff;content:\" \";height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%;z-index:15}div.pro-gallery.accessible .pro-gallery-thumbnails-highlighted:before{box-shadow:inset 0 0 1px 2px #116dff,inset 0 0 7px 0 #fff,inset 0 0 10px -5px #116dff}div.pro-gallery.accessible .pro-gallery-thumbnails-highlighted:after{border-radius:inherit;box-shadow:inset 0 0 1px 2px #116dff,inset 0 0 7px 0 #fff,0 0 10px -5px #116dff;content:\" \";height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%}div.pro-gallery .hide-scrollbars{-ms-overflow-style:none;overflow:-moz-scrollbars-none;scrollbar-width:none}div.pro-gallery .hide-scrollbars ::-webkit-scrollbar,div.pro-gallery .hide-scrollbars::-webkit-scrollbar{height:0!important;width:0!important}div.pro-gallery .rtl{direction:rtl}div.pro-gallery .ltr{direction:ltr}.sr-only.out-of-view-component{border:0;clip-path:circle(0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.screen-logs{word-wrap:break-word;background:#fff;font-size:10px;width:280px}.fade{display:block;transition:opacity .6s ease}.fade-visible{opacity:1}.fade-hidden{opacity:0}.deck-before{transform:translateX(-100%)}.deck-before,.deck-before-rtl{display:block;transition:transform .6s ease;z-index:1}.deck-before-rtl{transform:translateX(100%)}.deck-current{display:block;transform:translateX(0);transition:transform .6s ease;z-index:0}.deck-current .override{transition:transform .6s ease,opacity .1s ease .2s!important}.deck-after{display:block;opacity:0;transition:opacity .2s ease .6s;z-index:-1}.deck-after .override{transition:opacity .1s ease 0s!important}.disabled-transition{transition:none!important}@keyframes _7KkKx{0%{background-color:hsla(0,0%,95%,.2)}50%{background-color:hsla(0,0%,95%,.8)}to{background-color:hsla(0,0%,95%,.2)}}.pro-gallery-parent-container.gallery-slideshow [data-hook=group-view]:before,.pro-gallery-parent-container:not(.gallery-slideshow) [data-hook=group-view] .item-link-wrapper:before{content:\"\";height:1px;left:var(--group-left);pointer-events:none;position:absolute;right:var(--group-right);scroll-snap-align:center;top:var(--group-top);width:var(--group-width)}.gallery-item-container{scroll-snap-align:none!important}.gallery-slideshow .gallery-item-container:not(.clickable) a{cursor:default}`;\n  var isTest = typeof process !== 'undefined' && process.env && process.env['NODE_ENV'] === 'test';\n\n  if (isTest || !css || typeof document === 'undefined') { return; }\n  if (document.querySelector('style[data-ricos-style-hash=\"' + styleDataHash + '\"]')) { return; }\n\n  var head = document.head || document.getElementsByTagName('head')[0];\n  var style = document.createElement('style');\n  style.setAttribute('data-ricos-style-hash', styleDataHash);\n  style.type = 'text/css';\n\n  head.appendChild(style);\n\n  if (style.styleSheet) {\n    style.styleSheet.cssText = css;\n  } else {\n    style.appendChild(document.createTextNode(css));\n  }\n});\n\ninjectCss();\n\n\n\nexport default {\n  \"fullscreen_mode\": \"r8c4O\",\n  \"expand_mode\": \"-Ss5b\",\n  \"close\": \"dhi8t\",\n  \"expand_button\": \"gQghu\",\n  \"title\": \"uPa67\",\n  \"info_container\": \"AiuIK\",\n  \"fadeIn\": \"mGQIi\",\n  \"changing_background\": \"_7KkKx\"\n};","import lodash from 'lodash';\nimport { ProGallery } from 'pro-gallery';\nimport { migrateOptions } from 'pro-gallery-lib';\nimport React, { useEffect } from 'react';\nimport ReactDOM from 'react-dom';\n\nimport type { GalleryData_Item } from './../../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport type { TFunction } from './../../../ricos-types/index.js';\nimport { FocusManager } from './../../../_shared/focus-manager/focus-manager.js';\nimport { convertToGalleryItem } from './../../../_shared/media/convert-to-gallery-item.js';\nimport { fullscreenResizeMediaUrl } from './../../../_shared/media/fullscreen-resize-media-url.js';\n\nimport {\n  FULLSCREEN_CLOSE_BUTTON,\n  FULLSCREEN_IMAGE_ITEM,\n  FULLSCREEN_ROOT,\n  FULLSCREEN_TOGGLE_BUTTON,\n} from './data-hooks.js';\nimport styles from './fullscreen-scss.js';\n\nexport type FullscreenModalProps = {\n  container?: HTMLElement | (() => HTMLElement | null);\n} & InnerFullscreenProps;\n\nconst FullscreenModal: React.FC<FullscreenModalProps> = ({\n  container = document.body,\n  ...props\n}) => {\n  const target = lodash.isFunction(container) ? container() : container;\n\n  const fullscreen = <InnerFullscreen {...props} />;\n\n  return target ? ReactDOM.createPortal(fullscreen, target) : fullscreen;\n};\n\nexport type FullscreenModalItem = GalleryData_Item & { disableDownload?: boolean };\n\ntype InnerFullscreenProps = {\n  images: FullscreenModalItem[];\n  isMobile: boolean;\n  index: number;\n  backgroundColor?: string;\n  foregroundColor?: string;\n  onClose: () => void;\n  jsdomMode?: boolean;\n  t: TFunction;\n};\n\nconst InnerFullscreen: React.FC<InnerFullscreenProps> = props => {\n  const { backgroundColor = 'white', foregroundColor = '#2F2E2E', isMobile, t } = props;\n\n  const [isInFullscreen, setIsInFullscreen] = React.useState(false);\n  const [closeButtonRef, setCloseButtonRef] = React.useState<HTMLButtonElement | null>(null);\n  const [size, setSize] = React.useState({ width: window.innerWidth, height: window.innerHeight });\n  const items = props.images.map((item, index) => ({\n    ...convertToGalleryItem({ item, index }),\n    disableDownload: item.disableDownload,\n  }));\n  const containerRef = React.useRef<HTMLDivElement>(null);\n  const currentIdx = React.useRef<number>(props.index || 0);\n\n  useEffect(() => {\n    if (closeButtonRef && !isMobile) {\n      setTimeout(() => {\n        closeButtonRef.focus();\n      }, 0);\n    }\n  }, [closeButtonRef]);\n\n  const toggleFullscreenMode = () => {\n    const element = document.body;\n\n    if (document.fullscreenEnabled) {\n      if (isInFullscreen) {\n        if (document.exitFullscreen) {\n          document.exitFullscreen();\n        }\n      } else if (element.requestFullscreen) {\n        element.requestFullscreen();\n      }\n    }\n  };\n\n  const onClose = () => {\n    if (isInFullscreen) {\n      toggleFullscreenMode();\n    }\n    props.onClose();\n  };\n\n  React.useEffect(() => {\n    pauseChildNodesVideos(document);\n\n    const onEsc = (event: KeyboardEvent) => {\n      if (event.key === 'Escape') {\n        onClose();\n      }\n    };\n\n    const onWindowResize = () => setSize(getDimensions(containerRef.current));\n\n    const onFullscreenChange = () => setIsInFullscreen(!!document.fullscreenElement);\n\n    document.addEventListener('keydown', onEsc);\n    window.addEventListener('resize', onWindowResize);\n\n    if (document.fullscreenEnabled) {\n      document.addEventListener('fullscreenchange', onFullscreenChange);\n    }\n\n    setSize(getDimensions(containerRef.current));\n\n    return () => {\n      document.removeEventListener('keydown', onEsc);\n      window.removeEventListener('resize', onWindowResize);\n\n      if (document.fullscreenEnabled) {\n        document.removeEventListener('fullscreenchange', onFullscreenChange);\n      }\n    };\n  }, []);\n\n  const { width, height } = size;\n  const isHorizontalView = width > height;\n  const { arrowsPosition, slideshowInfoSize } = getStyleParams({\n    isHorizontalView,\n    isMobile,\n    isInFullscreen,\n  });\n\n  const infoElement = (itemProps: { title?: string }) => {\n    return itemProps.title ? (\n      <div className={styles.info_container}>\n        <div title={itemProps.title} style={{ color: foregroundColor }} className={styles.title}>\n          {itemProps.title}\n        </div>\n      </div>\n    ) : null;\n  };\n\n  const handleGalleryEvents = (name: string, data: Record<string, any>) => {\n    if (name === 'CURRENT_ITEM_CHANGED') {\n      const previousItem = items[currentIdx.current];\n      if (previousItem?.metaData?.type === 'video') {\n        pauseChildNodesVideos(\n          document.querySelector(`[data-id='${previousItem.itemId}']`) as Element\n        );\n      }\n      currentIdx.current = (data as { idx: number }).idx;\n    }\n  };\n\n  const closeButton = (\n    <button\n      ref={setCloseButtonRef}\n      type=\"button\"\n      className={styles.close}\n      onClick={onClose}\n      onKeyDown={applyOnEnterKeyPress(onClose)}\n      aria-label={t('Fullscreen_Close_Button_AriaLabel')}\n      data-hook={FULLSCREEN_CLOSE_BUTTON}\n    >\n      <CloseIcon backgroundColor={backgroundColor} foregroundColor={foregroundColor} />\n    </button>\n  );\n\n  return (\n    <FocusManager jsdomMode={props.jsdomMode}>\n      <div\n        style={{ background: backgroundColor }}\n        dir=\"ltr\"\n        data-hook={FULLSCREEN_ROOT}\n        className={\n          isInFullscreen || (isMobile && isHorizontalView)\n            ? styles.fullscreen_mode\n            : styles.expand_mode\n        }\n        ref={containerRef}\n        onContextMenu={(e: React.MouseEvent) =>\n          items[currentIdx.current].disableDownload && e.preventDefault()\n        }\n        role=\"none\"\n      >\n        <div aria-label={`Gallery with ${items.length} items`} style={{ height: '100%' }}>\n          {!isMobile && (\n            <FullscreenToggleButton\n              isInFullscreen={isInFullscreen}\n              backgroundColor={backgroundColor}\n              foregroundColor={foregroundColor}\n              onToggleFullscreen={toggleFullscreenMode}\n              t={t}\n            />\n          )}\n          {closeButton}\n          <ProGallery\n            id=\"ricos-fullscreen\"\n            scrollingElement={window}\n            items={items}\n            activeIndex={currentIdx.current}\n            eventsListener={handleGalleryEvents}\n            createMediaUrl={fullscreenResizeMediaUrl}\n            container={{ width, height: isMobile ? height : height - 80 }}\n            options={{\n              ...migrateOptions({\n                ...fixedOptions,\n                showArrows: !isMobile,\n                arrowsPosition,\n                slideshowInfoSize,\n                behaviourParams_item_overlay_hoveringBehaviour: 'NEVER_SHOW',\n              }),\n              layoutParams_info_height: 60,\n            }}\n            customComponents={{\n              customImageRenderer,\n              customInfoRenderer: !isInFullscreen ? infoElement : undefined,\n            }}\n            totalItemsCount={items.length}\n            settings={{ isAccessible: true }}\n            disableItemFocus={items.length === 1}\n          />\n        </div>\n      </div>\n    </FocusManager>\n  );\n};\n\nconst getDimensions = (element: HTMLElement | null) => {\n  const container = element?.getBoundingClientRect?.();\n  const width = container?.width || 0;\n  const height = container?.height || 0;\n  return { width, height };\n};\n\nconst customImageRenderer = (itemProps: { [key: string]: any }) => {\n  const {\n    style,\n    className,\n    alt,\n    tabIndex: _tabIndex,\n    ...rest\n  } = itemProps as {\n    style: React.CSSProperties;\n    className: string;\n    alt: string;\n    tabIndex?: number;\n  };\n\n  return (\n    <div className={className} style={style} data-hook={FULLSCREEN_IMAGE_ITEM}>\n      <img className={className} alt={alt} style={style} {...rest} />\n    </div>\n  );\n};\n\nconst applyOnEnterKeyPress = (callback: () => void) => (e: React.KeyboardEvent) => {\n  if (e.key === 'Enter') {\n    callback();\n  }\n};\n\nconst FullscreenToggleButton = ({\n  isInFullscreen,\n  backgroundColor,\n  foregroundColor,\n  onToggleFullscreen,\n  t,\n}: {\n  isInFullscreen: boolean;\n  backgroundColor?: string;\n  foregroundColor?: string;\n  onToggleFullscreen: () => void;\n  t: TFunction;\n}) => {\n  const Icon = isInFullscreen ? ShrinkIcon : ExpandIcon;\n  return (\n    <button\n      type=\"button\"\n      className={styles.expand_button}\n      onClick={onToggleFullscreen}\n      onKeyDown={applyOnEnterKeyPress(onToggleFullscreen)}\n      aria-label={\n        isInFullscreen\n          ? t('Fullscreen_Shrink_Button_AriaLabel')\n          : t('Fullscreen_Expand_Button_AriaLabel')\n      }\n      data-hook={FULLSCREEN_TOGGLE_BUTTON}\n    >\n      <Icon backgroundColor={backgroundColor} foregroundColor={foregroundColor} />\n    </button>\n  );\n};\n\nconst pauseChildNodesVideos = (element: Document | Element) =>\n  Array.from(element.getElementsByTagName('video'))?.forEach(video => video.pause());\n\nconst getStyleParams = ({\n  isHorizontalView,\n  isMobile,\n  isInFullscreen,\n}: {\n  isHorizontalView: boolean;\n  isMobile: boolean;\n  isInFullscreen: boolean;\n}) => {\n  let arrowsPosition = 0;\n  let slideshowInfoSize = 0;\n  if (isMobile) {\n    slideshowInfoSize = isHorizontalView ? 0 : 80;\n  } else if (!isInFullscreen) {\n    arrowsPosition = 1;\n    slideshowInfoSize = 142;\n  }\n  return { arrowsPosition, slideshowInfoSize };\n};\n\nconst fixedOptions = {\n  galleryLayout: 5,\n  cubeType: 'fit',\n  scrollSnap: true,\n  videoPlay: 'CLICK',\n  videoLoop: false,\n  videoSound: true,\n  hidePlay: false,\n  showVideoControls: true,\n  showVideoPlayButton: true,\n  allowSocial: false,\n  loveButton: false,\n  allowTitle: true,\n  defaultShowInfoExpand: 1,\n  floatingImages: 0,\n  allowContextMenu: true,\n};\n\nconst CloseIcon: React.FC<{ backgroundColor?: string; foregroundColor?: string }> = props => (\n  <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"60\" height=\"60\" viewBox=\"0 0 60 60\">\n    <g fill=\"none\" fillRule=\"evenodd\">\n      <path fill={props.backgroundColor} d=\"M0 0H60V60H0z\" />\n      <path\n        fill={props.foregroundColor}\n        d=\"M42.188 17l.812.813L30.812 30 43 42.188l-.813.812L30 30.812 17.812 43 17 42.187 29.187 30 17 17.812l.813-.812L30 29.187 42.188 17z\"\n      />\n    </g>\n  </svg>\n);\n\nconst ExpandIcon: React.FC<{ backgroundColor?: string; foregroundColor?: string }> = props => (\n  <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"60\" height=\"60\" viewBox=\"0 0 60 60\">\n    <g fill=\"none\" fillRule=\"evenodd\">\n      <path fill={props.backgroundColor} d=\"M0 0H60V60H0z\" />\n      <g fill={props.foregroundColor}>\n        <path\n          d=\"M4.333 15.167H5.413V27.084H4.333z\"\n          transform=\"translate(17 17) rotate(45 4.873 21.125)\"\n        />\n        <path d=\"M26 8h-1V1h-7V0h8v8z\" transform=\"translate(17 17)\" />\n        <path\n          d=\"M20.583 -1.083H21.665999999999997V10.834H20.583z\"\n          transform=\"translate(17 17) rotate(45 21.125 4.875)\"\n        />\n        <path d=\"M0 26v-8h1v7h7v1H0z\" transform=\"translate(17 17)\" />\n      </g>\n    </g>\n  </svg>\n);\n\nconst ShrinkIcon: React.FC<{ backgroundColor?: string; foregroundColor?: string }> = props => (\n  <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"60\" height=\"60\" viewBox=\"0 0 60 60\">\n    <g fill=\"none\" fillRule=\"evenodd\">\n      <path fill={props.backgroundColor} d=\"M0 0H60V60H0z\" />\n      <g fill={props.foregroundColor}>\n        <path\n          d=\"M4.055 16.447H5.135V28.363999999999997H4.055z\"\n          transform=\"translate(17 16) rotate(-135 4.595 22.405)\"\n        />\n        <g>\n          <path d=\"M10 8.083H9v-7H2v-1h8v8z\" transform=\"translate(17 16) rotate(-180 13 5.458)\" />\n          <path\n            d=\"M4.583 -1H5.666V10.917H4.583z\"\n            transform=\"translate(17 16) rotate(-180 13 5.458) rotate(45 5.125 4.958)\"\n          />\n        </g>\n        <path d=\"M9.468 17.53v8h-1v-7h-7v-1h8z\" transform=\"translate(17 16)\" />\n      </g>\n    </g>\n  </svg>\n);\n\n// Lazy entry point\nexport default FullscreenModal;\n","import React from 'react';\n\nimport type { BICallbacks } from './../../ricos-types/index.js';\n\nconst BiHelpersContext = React.createContext<Partial<BICallbacks>>({});\n\nexport const BiHelpersProvider: React.FC<\n  React.PropsWithChildren<{ helpers: Partial<BICallbacks> }>\n> = ({ children, helpers }) => {\n  return <BiHelpersContext.Provider value={helpers}>{children}</BiHelpersContext.Provider>;\n};\n\nexport const useBiCallbacks = (): Partial<BICallbacks> => {\n  return React.useContext(BiHelpersContext);\n};\n","{\n  \"Poll_Viewer_VoteCount_Modal_Voters_Private_Voter\": \"Private User\",\n  \"Poll_Viewer_ShowAllOptions_CTA\": \"اطلع على كل الخيارات\",\n  \"Spoiler_Reveal_Tooltip\": \"انقر للعرض\",\n  \"VerticalEmbed_Event_Error_Subtitle\": \"This event has been deleted, replace it with another event.\",\n  \"Viewer_Toolbar_Twitter_Tooltip\": \"تغريد هذا\",\n  \"CollapsibleListPlugin_CollapseButton_AriaLabel\": \"تم طي العنصر\",\n  \"Spoiler_Reveal_Video_CTA\": \"كشف الفيديو\",\n  \"VerticalEmbed_Pricing_Plan\": \"Plan only\",\n  \"Image_Expand_Button_AriaLabel\": \"توسيع الصورة\",\n  \"VerticalEmbed_From_Price\": \"From\",\n  \"Poll_Viewer_ShowAllResults_CTA\": \"مشاهدة النتائج كلها\",\n  \"Spoiler_Reveal_Image_Placeholder\": \"تحتوي هذه الصورة على سبويلر\",\n  \"VerticalEmbed_Ribbon\": \"Sale\",\n  \"Audio_Plugin_Elapsed_Time_Slider_AriaLabel\": \"البحث عن شريط التمرير\",\n  \"VerticalEmbed_Error_Subtitle\": \"This item has been deleted, replace it with another item.\",\n  \"Poll_Viewer_Multiselect_Footer\": \"يمكنك التصويت لأكثر من إجابة.\",\n  \"Audio_Plugin_More_Actions_Button_AriaLabel\": \"إظهار المزيد من عناصر التحكم في الصوت\",\n  \"VerticalEmbed_Booking_Fetch_Error_Title\": \"Failed to load service\",\n  \"Fullscreen_Close_Button_AriaLabel\": \"إغلاق\",\n  \"VerticalEmbed_Event_Fetch_Error_Title\": \"Failed to load event\",\n  \"UploadFile_Viewer_Loader\": \"جارٍ تحميل {{fileType}}\",\n  \"Polls_Plugin_User_Avatar_Alt\": \"User avatar\",\n  \"Preview_ReadMore_Label\": \"اقرأ المزيد\",\n  \"Spoiler_Insert_Tooltip\": \"إفصاح معلومات\",\n  \"VerticalEmbed_Product_Fetch_Error_Title\": \"Failed to load product\",\n  \"Fullscreen_Shrink_Button_AriaLabel\": \"Shrink\",\n  \"Audio_Plugin_Volume_Control_Slider_AriaLabel\": \"مستوى الصوت\",\n  \"Spoiler_Reveal_Gallery_Placeholder\": \"يحتوي هذا المعرض على سبويلر\",\n  \"Fullscreen_Expand_Button_AriaLabel\": \"Expand\",\n  \"VerticalEmbed_Bookings_Button\": \"حجز الآن\",\n  \"Audio_Plugin_Volume_Control_Unmute_AriaLabel\": \"إلغاء الكتم\",\n  \"Spoiler_Reveal_Gallery_CTA\": \"كشف المعرض\",\n  \"Poll_Viewer_ShowLess_CTA\": \"إظهار أقل\",\n  \"VerticalEmbed_Disabled_Button_Tooltip\": \"Product page will be available once you publish your site.\",\n  \"Audio_Plugin_Volume_Control_Mute_AriaLabel\": \"كتم الصوت\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Anonymous\": \"+{{anonNumber}} غير معروفين\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_CTA_Follow\": \"تابع\",\n  \"VerticalEmbed_Products_Button\": \"شراء الآن\",\n  \"Poll_Viewer_Toast_Error_ServerDown\": \"لا يمكن الاتصال بالخادم. أعد المحاولة لاحقًا.\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Header\": \"{{count}} أشخاص صوتوا لهذه الإجابة\",\n  \"Poll_Viewer_VoteCount\": \"{{number}} أصوات\",\n  \"VerticalEmbed_Events_Button\": \"تسجيل الآن\",\n  \"Spoiler_Reveal_Image_CTA\": \"كشف الصورة\",\n  \"Poll_Viewer_Toast_Error_Connection\": \"لا يوجد اتصال بالإنترنت. تحقق من الاتصال.\",\n  \"Poll_Viewer_Visibility_Owner_Footer\": \"يمكنك رؤية النتائج فقط.\",\n  \"VerticalEmbed_Booking_Error_Title\": \"Service deleted\",\n  \"VerticalEmbed_Product_Error_Title\": \"Product deleted\",\n  \"VerticalEmbed_Fetch_Error_Subtitle\": \"Unable to load item information.\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Header_plural\": \"{{count}} أشخاص صوتوا لهذه الإجابة\",\n  \"VerticalEmbed_Event_Error_Title\": \"Event deleted\",\n  \"CollapsibleListPlugin_ExpandButton_AriaLabel\": \"تم توسيع العنصر.\",\n  \"Audio_Plugin_Cover_Alt\": \"Audio cover\",\n  \"Spoiler_Reveal_Video_Placeholder\": \"يحتوي هذا الفيديو على سبويلر\",\n  \"VerticalEmbed_Product_Fetch_Error_Subtitle\": \"Unable to load product information.\",\n  \"VerticalEmbed_Fetch_Error_Title\": \"Failed to load item\",\n  \"Poll_Viewer_Option_AriaLabel_Unchecked\": \"unchecked\",\n  \"VerticalEmbed_Product_Error_Subtitle\": \"This product has been deleted, replace it with another product.\",\n  \"VerticalEmbed_Booking_Error_Subtitle\": \"This service has been deleted, replace it with another service.\",\n  \"Preview_SeeFullPost_Label\": \"عرض المنشور كاملاً\",\n  \"UploadFile_Viewer_Download\": \"تنزيل {{fileType}}\",\n  \"VerticalEmbed_Units_Hour\": \"{{hours}} س\",\n  \"VerticalEmbed_Units_Minute\": \"{{minutes}} د\",\n  \"VerticalEmbed_Event_Fetch_Error_Subtitle\": \"Unable to load event information.\",\n  \"VerticalEmbed_Error_Button\": \"Replace\",\n  \"VerticalEmbed_Error_Title\": \"Item deleted\",\n  \"VerticalEmbed_Booking_Fetch_Error_Subtitle\": \"Unable to load service information.\",\n  \"Poll_Viewer_Option_AriaLabel_Checked\": \"checked\"\n}\n","{\n  \"Poll_Viewer_VoteCount_Modal_Voters_Private_Voter\": \"Private User\",\n  \"Poll_Viewer_ShowAllOptions_CTA\": \"Вижте всички опции\",\n  \"Spoiler_Reveal_Tooltip\": \"Кликнете, за да разкриете\",\n  \"VerticalEmbed_Event_Error_Subtitle\": \"This event has been deleted, replace it with another event.\",\n  \"Viewer_Toolbar_Twitter_Tooltip\": \"Туитнете това\",\n  \"CollapsibleListPlugin_CollapseButton_AriaLabel\": \"Елементът е свит\",\n  \"Spoiler_Reveal_Video_CTA\": \"Разкриване на видеото\",\n  \"VerticalEmbed_Pricing_Plan\": \"Plan only\",\n  \"Image_Expand_Button_AriaLabel\": \"Разширете изображението\",\n  \"VerticalEmbed_From_Price\": \"From\",\n  \"Poll_Viewer_ShowAllResults_CTA\": \"Вижте всички резултати\",\n  \"Spoiler_Reveal_Image_Placeholder\": \"Това изображение съдържа спойлер\",\n  \"VerticalEmbed_Ribbon\": \"Sale\",\n  \"Audio_Plugin_Elapsed_Time_Slider_AriaLabel\": \"Търсете плъзгач\",\n  \"VerticalEmbed_Error_Subtitle\": \"This item has been deleted, replace it with another item.\",\n  \"Poll_Viewer_Multiselect_Footer\": \"Можете да гласувате за повече от един отговор.\",\n  \"Audio_Plugin_More_Actions_Button_AriaLabel\": \"Показване на повече аудиоконтроли\",\n  \"VerticalEmbed_Booking_Fetch_Error_Title\": \"Failed to load service\",\n  \"Fullscreen_Close_Button_AriaLabel\": \"Затвори\",\n  \"VerticalEmbed_Event_Fetch_Error_Title\": \"Failed to load event\",\n  \"UploadFile_Viewer_Loader\": \"Зареждане на {{fileType}}\",\n  \"Polls_Plugin_User_Avatar_Alt\": \"User avatar\",\n  \"Preview_ReadMore_Label\": \"Прочетете повече\",\n  \"Spoiler_Insert_Tooltip\": \"Спойлер\",\n  \"VerticalEmbed_Product_Fetch_Error_Title\": \"Failed to load product\",\n  \"Fullscreen_Shrink_Button_AriaLabel\": \"Shrink\",\n  \"Audio_Plugin_Volume_Control_Slider_AriaLabel\": \"Звук\",\n  \"Spoiler_Reveal_Gallery_Placeholder\": \"Тази галерия съдържа спойлер\",\n  \"Fullscreen_Expand_Button_AriaLabel\": \"Expand\",\n  \"VerticalEmbed_Bookings_Button\": \"Резервирайте сега\",\n  \"Audio_Plugin_Volume_Control_Unmute_AriaLabel\": \"Отмяна на заглушаване\",\n  \"Spoiler_Reveal_Gallery_CTA\": \"Разкриване на галерията\",\n  \"Poll_Viewer_ShowLess_CTA\": \"Покажи по-малко\",\n  \"VerticalEmbed_Disabled_Button_Tooltip\": \"Product page will be available once you publish your site.\",\n  \"Audio_Plugin_Volume_Control_Mute_AriaLabel\": \"Заглушаване\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Anonymous\": \"+ {{anonNumber}} анонимен\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_CTA_Follow\": \"Последвайте\",\n  \"VerticalEmbed_Products_Button\": \"Купете сега\",\n  \"Poll_Viewer_Toast_Error_ServerDown\": \"Не можа да се свърже със сървъра. Опитайте отново по-късно.\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Header\": \"{{count}} човек гласува за този отговор\",\n  \"Poll_Viewer_VoteCount\": \"{{number}} гласа\",\n  \"VerticalEmbed_Events_Button\": \"Регистрирайте се сега\",\n  \"Spoiler_Reveal_Image_CTA\": \"Разкриване на изображението\",\n  \"Poll_Viewer_Toast_Error_Connection\": \"Няма интернет. Проверете връзката си.\",\n  \"Poll_Viewer_Visibility_Owner_Footer\": \"Само вие можете да видите резултатите.\",\n  \"VerticalEmbed_Booking_Error_Title\": \"Service deleted\",\n  \"VerticalEmbed_Product_Error_Title\": \"Product deleted\",\n  \"VerticalEmbed_Fetch_Error_Subtitle\": \"Unable to load item information.\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Header_plural\": \"{{count}} души гласуваха за този отговор\",\n  \"VerticalEmbed_Event_Error_Title\": \"Event deleted\",\n  \"CollapsibleListPlugin_ExpandButton_AriaLabel\": \"Елементът е разширен\",\n  \"Audio_Plugin_Cover_Alt\": \"Audio cover\",\n  \"Spoiler_Reveal_Video_Placeholder\": \"Това видео съдържа спойлер\",\n  \"VerticalEmbed_Product_Fetch_Error_Subtitle\": \"Unable to load product information.\",\n  \"VerticalEmbed_Fetch_Error_Title\": \"Failed to load item\",\n  \"Poll_Viewer_Option_AriaLabel_Unchecked\": \"unchecked\",\n  \"VerticalEmbed_Product_Error_Subtitle\": \"This product has been deleted, replace it with another product.\",\n  \"VerticalEmbed_Booking_Error_Subtitle\": \"This service has been deleted, replace it with another service.\",\n  \"Preview_SeeFullPost_Label\": \"Вижте пълната публикация\",\n  \"UploadFile_Viewer_Download\": \"Изтегляне на {{fileType}}\",\n  \"VerticalEmbed_Units_Hour\": \"{{hours}}ч.\",\n  \"VerticalEmbed_Units_Minute\": \"{{minutes}}мин.\",\n  \"VerticalEmbed_Event_Fetch_Error_Subtitle\": \"Unable to load event information.\",\n  \"VerticalEmbed_Error_Button\": \"Replace\",\n  \"VerticalEmbed_Error_Title\": \"Item deleted\",\n  \"VerticalEmbed_Booking_Fetch_Error_Subtitle\": \"Unable to load service information.\",\n  \"Poll_Viewer_Option_AriaLabel_Checked\": \"checked\"\n}\n","{\n  \"Poll_Viewer_VoteCount_Modal_Voters_Private_Voter\": \"Private User\",\n  \"Poll_Viewer_ShowAllOptions_CTA\": \"Mostra totes les opcions\",\n  \"Spoiler_Reveal_Tooltip\": \"Fes clic per revelar-ho\",\n  \"VerticalEmbed_Event_Error_Subtitle\": \"This event has been deleted, replace it with another event.\",\n  \"Viewer_Toolbar_Twitter_Tooltip\": \"Piula això\",\n  \"CollapsibleListPlugin_CollapseButton_AriaLabel\": \"L'element està reduït\",\n  \"Spoiler_Reveal_Video_CTA\": \"Revela el vídeo\",\n  \"VerticalEmbed_Pricing_Plan\": \"Plan only\",\n  \"Image_Expand_Button_AriaLabel\": \"Amplia la imatge\",\n  \"VerticalEmbed_From_Price\": \"From\",\n  \"Poll_Viewer_ShowAllResults_CTA\": \"Mostra tots els resultats\",\n  \"Spoiler_Reveal_Image_Placeholder\": \"Aquesta imatge conté un espòiler\",\n  \"VerticalEmbed_Ribbon\": \"Sale\",\n  \"Audio_Plugin_Elapsed_Time_Slider_AriaLabel\": \"Cerca el control lliscant\",\n  \"VerticalEmbed_Error_Subtitle\": \"This item has been deleted, replace it with another item.\",\n  \"Poll_Viewer_Multiselect_Footer\": \"Pots votar més d’una resposta.\",\n  \"Audio_Plugin_More_Actions_Button_AriaLabel\": \"Mostra més controls de so\",\n  \"VerticalEmbed_Booking_Fetch_Error_Title\": \"Failed to load service\",\n  \"Fullscreen_Close_Button_AriaLabel\": \"Tanca\",\n  \"VerticalEmbed_Event_Fetch_Error_Title\": \"Failed to load event\",\n  \"UploadFile_Viewer_Loader\": \"S'està carregant {{fileType}}\",\n  \"Polls_Plugin_User_Avatar_Alt\": \"User avatar\",\n  \"Preview_ReadMore_Label\": \"Més informació\",\n  \"Spoiler_Insert_Tooltip\": \"Espòiler\",\n  \"VerticalEmbed_Product_Fetch_Error_Title\": \"Failed to load product\",\n  \"Fullscreen_Shrink_Button_AriaLabel\": \"Shrink\",\n  \"Audio_Plugin_Volume_Control_Slider_AriaLabel\": \"Volum\",\n  \"Spoiler_Reveal_Gallery_Placeholder\": \"Aquesta galeria conté un espòiler\",\n  \"Fullscreen_Expand_Button_AriaLabel\": \"Expand\",\n  \"VerticalEmbed_Bookings_Button\": \"Reserva ara\",\n  \"Audio_Plugin_Volume_Control_Unmute_AriaLabel\": \"Deixa de silenciar\",\n  \"Spoiler_Reveal_Gallery_CTA\": \"Revela la galeria\",\n  \"Poll_Viewer_ShowLess_CTA\": \"Mostra'n menys\",\n  \"VerticalEmbed_Disabled_Button_Tooltip\": \"Product page will be available once you publish your site.\",\n  \"Audio_Plugin_Volume_Control_Mute_AriaLabel\": \"Silencia\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Anonymous\": \"+{{anonNumber}} anònim(s)\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_CTA_Follow\": \"Segueix\",\n  \"VerticalEmbed_Products_Button\": \"Compra ara\",\n  \"Poll_Viewer_Toast_Error_ServerDown\": \"No s'ha pogut connectar amb el servidor. Torna-ho a provar més tard.\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Header\": \"{{count}} persona ha votat per aquesta resposta\",\n  \"Poll_Viewer_VoteCount\": \"{{number}} vots\",\n  \"VerticalEmbed_Events_Button\": \"Registra't ara\",\n  \"Spoiler_Reveal_Image_CTA\": \"Revela la imatge\",\n  \"Poll_Viewer_Toast_Error_Connection\": \"No hi ha Internet. Comprova la teva connexió.\",\n  \"Poll_Viewer_Visibility_Owner_Footer\": \"Només pots veure els resultats.\",\n  \"VerticalEmbed_Booking_Error_Title\": \"Service deleted\",\n  \"VerticalEmbed_Product_Error_Title\": \"Product deleted\",\n  \"VerticalEmbed_Fetch_Error_Subtitle\": \"Unable to load item information.\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Header_plural\": \"{{count}} persones han votat per aquesta resposta\",\n  \"VerticalEmbed_Event_Error_Title\": \"Event deleted\",\n  \"CollapsibleListPlugin_ExpandButton_AriaLabel\": \"L'element està ampliat\",\n  \"Audio_Plugin_Cover_Alt\": \"Audio cover\",\n  \"Spoiler_Reveal_Video_Placeholder\": \"Aquest vídeo conté un espòiler\",\n  \"VerticalEmbed_Product_Fetch_Error_Subtitle\": \"Unable to load product information.\",\n  \"VerticalEmbed_Fetch_Error_Title\": \"Failed to load item\",\n  \"Poll_Viewer_Option_AriaLabel_Unchecked\": \"unchecked\",\n  \"VerticalEmbed_Product_Error_Subtitle\": \"This product has been deleted, replace it with another product.\",\n  \"VerticalEmbed_Booking_Error_Subtitle\": \"This service has been deleted, replace it with another service.\",\n  \"Preview_SeeFullPost_Label\": \"Mostra l'entrada completa\",\n  \"UploadFile_Viewer_Download\": \"Baixa {{fileType}}\",\n  \"VerticalEmbed_Units_Hour\": \"{{hours}} h\",\n  \"VerticalEmbed_Units_Minute\": \"{{minutes}} min\",\n  \"VerticalEmbed_Event_Fetch_Error_Subtitle\": \"Unable to load event information.\",\n  \"VerticalEmbed_Error_Button\": \"Replace\",\n  \"VerticalEmbed_Error_Title\": \"Item deleted\",\n  \"VerticalEmbed_Booking_Fetch_Error_Subtitle\": \"Unable to load service information.\",\n  \"Poll_Viewer_Option_AriaLabel_Checked\": \"checked\"\n}\n","{\n  \"Poll_Viewer_VoteCount_Modal_Voters_Private_Voter\": \"Private User\",\n  \"Poll_Viewer_ShowAllOptions_CTA\": \"Zobrazit všechny možnosti\",\n  \"Spoiler_Reveal_Tooltip\": \"Pro zobrazení klikněte\",\n  \"VerticalEmbed_Event_Error_Subtitle\": \"Tato událost byla odstraněna, nahraďte ji jinou událostí.\",\n  \"Viewer_Toolbar_Twitter_Tooltip\": \"Tweetovat\",\n  \"CollapsibleListPlugin_CollapseButton_AriaLabel\": \"Položka je zabalena\",\n  \"Spoiler_Reveal_Video_CTA\": \"Odkrýt video\",\n  \"VerticalEmbed_Pricing_Plan\": \"Pouze plán\",\n  \"Image_Expand_Button_AriaLabel\": \"Roztáhnout obrázek\",\n  \"VerticalEmbed_From_Price\": \"Od\",\n  \"Poll_Viewer_ShowAllResults_CTA\": \"Zobrazit všechny výsledky\",\n  \"Spoiler_Reveal_Image_Placeholder\": \"Tento obrázek obsahuje spoiler\",\n  \"VerticalEmbed_Ribbon\": \"Akce\",\n  \"Audio_Plugin_Elapsed_Time_Slider_AriaLabel\": \"Posuvník hledání\",\n  \"VerticalEmbed_Error_Subtitle\": \"Tato položka byla odstraněna, nahraďte ji jinou položkou.\",\n  \"Poll_Viewer_Multiselect_Footer\": \"Můžete hlasovat pro více jak jednu odpověď.\",\n  \"Audio_Plugin_More_Actions_Button_AriaLabel\": \"Zobrazit další ovládací prvky zvuku\",\n  \"VerticalEmbed_Booking_Fetch_Error_Title\": \"Službu se nepodařilo načíst\",\n  \"Fullscreen_Close_Button_AriaLabel\": \"Zavřít\",\n  \"VerticalEmbed_Event_Fetch_Error_Title\": \"Událost se nepodařilo načíst\",\n  \"UploadFile_Viewer_Loader\": \"Načítání {{fileType}}\",\n  \"Polls_Plugin_User_Avatar_Alt\": \"Použít avatara\",\n  \"Preview_ReadMore_Label\": \"Zjistit více\",\n  \"Spoiler_Insert_Tooltip\": \"Spoiler\",\n  \"VerticalEmbed_Product_Fetch_Error_Title\": \"Produkt se nepodařilo načíst\",\n  \"Fullscreen_Shrink_Button_AriaLabel\": \"Zmenšit\",\n  \"Audio_Plugin_Volume_Control_Slider_AriaLabel\": \"Objem\",\n  \"Spoiler_Reveal_Gallery_Placeholder\": \"Tato galerie obsahuje spoiler\",\n  \"Fullscreen_Expand_Button_AriaLabel\": \"Roztáhnout\",\n  \"VerticalEmbed_Bookings_Button\": \"Rezervovat\",\n  \"Audio_Plugin_Volume_Control_Unmute_AriaLabel\": \"Zrušit ztlumení\",\n  \"Spoiler_Reveal_Gallery_CTA\": \"Odkrýt galerii\",\n  \"Poll_Viewer_ShowLess_CTA\": \"Zobrazit méně\",\n  \"VerticalEmbed_Disabled_Button_Tooltip\": \"Product page will be available once you publish your site.\",\n  \"Audio_Plugin_Volume_Control_Mute_AriaLabel\": \"Ztlumit\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Anonymous\": \"+{{anonNumber}} anonymně\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_CTA_Follow\": \"Sledovat\",\n  \"VerticalEmbed_Products_Button\": \"Koupit\",\n  \"Poll_Viewer_Toast_Error_ServerDown\": \"Nepodařilo se připojit k serveru. Zkuste to později.\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Header\": \"Pro tuto odpověď hlasoval {{count}} uživatel\",\n  \"Poll_Viewer_VoteCount\": \"Hlasů {{number}}\",\n  \"VerticalEmbed_Events_Button\": \"Registrovat\",\n  \"Spoiler_Reveal_Image_CTA\": \"Odkrýt obrázek\",\n  \"Poll_Viewer_Toast_Error_Connection\": \"Internet není k dispozici. Zkontrolujte připojení.\",\n  \"Poll_Viewer_Visibility_Owner_Footer\": \"Výsledky uvidíte pouze vy.\",\n  \"VerticalEmbed_Booking_Error_Title\": \"Služba byla odstraněna\",\n  \"VerticalEmbed_Product_Error_Title\": \"Produkt byl odstraněn\",\n  \"VerticalEmbed_Fetch_Error_Subtitle\": \"Informace o položce nelze načíst.\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Header_plural\": \"Pro tuto odpověď hlasovalo uživatelů: {{count}}\",\n  \"VerticalEmbed_Event_Error_Title\": \"Událost byla odstraněna\",\n  \"CollapsibleListPlugin_ExpandButton_AriaLabel\": \"Položka je rozbalena\",\n  \"Audio_Plugin_Cover_Alt\": \"Audio cover\",\n  \"Spoiler_Reveal_Video_Placeholder\": \"Toto video obsahuje spoiler\",\n  \"VerticalEmbed_Product_Fetch_Error_Subtitle\": \"Objevily se technické potíže. Zkontrolujte připojení a zkuste to znovu.\",\n  \"VerticalEmbed_Fetch_Error_Title\": \"Položku se nepodařilo načíst\",\n  \"Poll_Viewer_Option_AriaLabel_Unchecked\": \"unchecked\",\n  \"VerticalEmbed_Product_Error_Subtitle\": \"Tento produkt byl odstraněn, nahraďte ho jiným produktem.\",\n  \"VerticalEmbed_Booking_Error_Subtitle\": \"Tato služba byla odstraněna, nahraďte ji jinou službou.\",\n  \"Preview_SeeFullPost_Label\": \"Zobrazit celý příspěvek\",\n  \"UploadFile_Viewer_Download\": \"Stáhnout {{fileType}}\",\n  \"VerticalEmbed_Units_Hour\": \"{{hours}} h\",\n  \"VerticalEmbed_Units_Minute\": \"{{minutes}} min\",\n  \"VerticalEmbed_Event_Fetch_Error_Subtitle\": \"Objevily se technické potíže. Zkontrolujte připojení a zkuste to znovu.\",\n  \"VerticalEmbed_Error_Button\": \"Nahradit\",\n  \"VerticalEmbed_Error_Title\": \"Položka byla odstraněna\",\n  \"VerticalEmbed_Booking_Fetch_Error_Subtitle\": \"Objevily se technické potíže. Zkontrolujte připojení a zkuste to znovu.\",\n  \"Poll_Viewer_Option_AriaLabel_Checked\": \"checked\"\n}\n","{\n  \"Poll_Viewer_VoteCount_Modal_Voters_Private_Voter\": \"Private User\",\n  \"Poll_Viewer_ShowAllOptions_CTA\": \"Se alle indstillinger\",\n  \"Spoiler_Reveal_Tooltip\": \"Klik for at vise\",\n  \"VerticalEmbed_Event_Error_Subtitle\": \"Dette event er blevet slettet, erstat det med et andet event.\",\n  \"Viewer_Toolbar_Twitter_Tooltip\": \"Tweet dette\",\n  \"CollapsibleListPlugin_CollapseButton_AriaLabel\": \"Element udvides\",\n  \"Spoiler_Reveal_Video_CTA\": \"Afslør video\",\n  \"VerticalEmbed_Pricing_Plan\": \"Kun abonnement\",\n  \"Image_Expand_Button_AriaLabel\": \"Udvid billedet\",\n  \"VerticalEmbed_From_Price\": \"Fra\",\n  \"Poll_Viewer_ShowAllResults_CTA\": \"Se alle resultater\",\n  \"Spoiler_Reveal_Image_Placeholder\": \"Dette billede indeholder en spoiler\",\n  \"VerticalEmbed_Ribbon\": \"Tilbud\",\n  \"Audio_Plugin_Elapsed_Time_Slider_AriaLabel\": \"Skydeknap til søgning\",\n  \"VerticalEmbed_Error_Subtitle\": \"Denne vare er blevet slettet. Erstat den med en anden.\",\n  \"Poll_Viewer_Multiselect_Footer\": \"Du kan stemme på mere end et svar.\",\n  \"Audio_Plugin_More_Actions_Button_AriaLabel\": \"Vis flere lydknapper\",\n  \"VerticalEmbed_Booking_Fetch_Error_Title\": \"Servicen kunne ikke indlæses\",\n  \"Fullscreen_Close_Button_AriaLabel\": \"Luk\",\n  \"VerticalEmbed_Event_Fetch_Error_Title\": \"Eventet kunne ikke indlæses\",\n  \"UploadFile_Viewer_Loader\": \"Indlæser {{fileType}}\",\n  \"Polls_Plugin_User_Avatar_Alt\": \"Brug avatar\",\n  \"Preview_ReadMore_Label\": \"Læs mere\",\n  \"Spoiler_Insert_Tooltip\": \"Spoiler\",\n  \"VerticalEmbed_Product_Fetch_Error_Title\": \"Produktet kunne ikke indlæses\",\n  \"Fullscreen_Shrink_Button_AriaLabel\": \"Krympe\",\n  \"Audio_Plugin_Volume_Control_Slider_AriaLabel\": \"Volumen\",\n  \"Spoiler_Reveal_Gallery_Placeholder\": \"Dette galleri indeholder en spoiler\",\n  \"Fullscreen_Expand_Button_AriaLabel\": \"Udvid\",\n  \"VerticalEmbed_Bookings_Button\": \"Book nu\",\n  \"Audio_Plugin_Volume_Control_Unmute_AriaLabel\": \"Lydløs fra\",\n  \"Spoiler_Reveal_Gallery_CTA\": \"Afslør galleri\",\n  \"Poll_Viewer_ShowLess_CTA\": \"Vis mindre\",\n  \"VerticalEmbed_Disabled_Button_Tooltip\": \"Product page will be available once you publish your site.\",\n  \"Audio_Plugin_Volume_Control_Mute_AriaLabel\": \"Lydløs til\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Anonymous\": \"+{{anonNumber}} anonym(e)\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_CTA_Follow\": \"Følg\",\n  \"VerticalEmbed_Products_Button\": \"Køb nu\",\n  \"Poll_Viewer_Toast_Error_ServerDown\": \"Kunne ikke forbinde til server. Prøv igen senere.\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Header\": \"{{count}} person(er) stemte på dette svar\",\n  \"Poll_Viewer_VoteCount\": \"{{number}} stemmer\",\n  \"VerticalEmbed_Events_Button\": \"Tilmeld dig\",\n  \"Spoiler_Reveal_Image_CTA\": \"Afslør billede\",\n  \"Poll_Viewer_Toast_Error_Connection\": \"Ingen internetforbindelse. Kontroller din forbindelse.\",\n  \"Poll_Viewer_Visibility_Owner_Footer\": \"Det er kun dig, der kan se resultaterne.\",\n  \"VerticalEmbed_Booking_Error_Title\": \"Service er slettet\",\n  \"VerticalEmbed_Product_Error_Title\": \"Produkt er slettet\",\n  \"VerticalEmbed_Fetch_Error_Subtitle\": \"Oplysninger om vare kunne ikke indlæses.\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Header_plural\": \"{{count}} stemte på dette svar\",\n  \"VerticalEmbed_Event_Error_Title\": \"Eventet er slettet.\",\n  \"CollapsibleListPlugin_ExpandButton_AriaLabel\": \"Element udvides\",\n  \"Audio_Plugin_Cover_Alt\": \"Lydcover\",\n  \"Spoiler_Reveal_Video_Placeholder\": \"Denne video indeholder en spoiler\",\n  \"VerticalEmbed_Product_Fetch_Error_Subtitle\": \"Der opstod et teknisk problem. Tjek forbindelsen, og prøv igen.\",\n  \"VerticalEmbed_Fetch_Error_Title\": \"Elementet kunne ikke indlæses\",\n  \"Poll_Viewer_Option_AriaLabel_Unchecked\": \"unchecked\",\n  \"VerticalEmbed_Product_Error_Subtitle\": \"Dette produkt er blevet slettet, erstat det med et andet.\",\n  \"VerticalEmbed_Booking_Error_Subtitle\": \"Denne service er blevet slettet, erstat den med en anden.\",\n  \"Preview_SeeFullPost_Label\": \"Se hele indlægget\",\n  \"UploadFile_Viewer_Download\": \"Download {{fileType}}\",\n  \"VerticalEmbed_Units_Hour\": \"{{hours}} t\",\n  \"VerticalEmbed_Units_Minute\": \"{{minutes}} min\",\n  \"VerticalEmbed_Event_Fetch_Error_Subtitle\": \"Der opstod et teknisk problem. Tjek forbindelsen, og prøv igen.\",\n  \"VerticalEmbed_Error_Button\": \"Udskift\",\n  \"VerticalEmbed_Error_Title\": \"Element er slettet\",\n  \"VerticalEmbed_Booking_Fetch_Error_Subtitle\": \"Der opstod et teknisk problem. Tjek forbindelsen, og prøv igen.\",\n  \"Poll_Viewer_Option_AriaLabel_Checked\": \"checked\"\n}\n","{\n  \"Poll_Viewer_VoteCount_Modal_Voters_Private_Voter\": \"Private User\",\n  \"Poll_Viewer_ShowAllOptions_CTA\": \"Alle Optionen sehen\",\n  \"Spoiler_Reveal_Tooltip\": \"Zum Enthüllen hier klicken\",\n  \"VerticalEmbed_Event_Error_Subtitle\": \"Diese Veranstaltung wurde gelöscht, ersetze sie durch eine andere.\",\n  \"Viewer_Toolbar_Twitter_Tooltip\": \"Twittern\",\n  \"CollapsibleListPlugin_CollapseButton_AriaLabel\": \"Element wurde verborgen\",\n  \"Spoiler_Reveal_Video_CTA\": \"Video enthüllen\",\n  \"VerticalEmbed_Pricing_Plan\": \"Nur Preisplan\",\n  \"Image_Expand_Button_AriaLabel\": \"Bild ausdehnen\",\n  \"VerticalEmbed_From_Price\": \"Ab\",\n  \"Poll_Viewer_ShowAllResults_CTA\": \"Alle Ergebnisse ansehen\",\n  \"Spoiler_Reveal_Image_Placeholder\": \"Dieses Bild enthält einen Spoiler\",\n  \"VerticalEmbed_Ribbon\": \"Sale\",\n  \"Audio_Plugin_Elapsed_Time_Slider_AriaLabel\": \"Slider suchen\",\n  \"VerticalEmbed_Error_Subtitle\": \"Dieses Element wurde gelöscht, ersetze es durch ein anderes Element.\",\n  \"Poll_Viewer_Multiselect_Footer\": \"Du kannst für mehr als eine Antwort stimmen.\",\n  \"Audio_Plugin_More_Actions_Button_AriaLabel\": \"Mehr Audio-Steuerelemente anzeigen\",\n  \"VerticalEmbed_Booking_Fetch_Error_Title\": \"Service konnte nicht geladen werden\",\n  \"Fullscreen_Close_Button_AriaLabel\": \"Schließen\",\n  \"VerticalEmbed_Event_Fetch_Error_Title\": \"Veranstaltung konnte nicht geladen werden\",\n  \"UploadFile_Viewer_Loader\": \"{{fileType}} wird geladen\",\n  \"Polls_Plugin_User_Avatar_Alt\": \"Nutzer-Avatar\",\n  \"Preview_ReadMore_Label\": \"Weiterlesen\",\n  \"Spoiler_Insert_Tooltip\": \"Vorschau\",\n  \"VerticalEmbed_Product_Fetch_Error_Title\": \"Produkt konnte nicht geladen werden\",\n  \"Fullscreen_Shrink_Button_AriaLabel\": \"Verkleinern\",\n  \"Audio_Plugin_Volume_Control_Slider_AriaLabel\": \"Volumen\",\n  \"Spoiler_Reveal_Gallery_Placeholder\": \"Diese Galerie enthält einen Spoiler\",\n  \"Fullscreen_Expand_Button_AriaLabel\": \"Erweitern\",\n  \"VerticalEmbed_Bookings_Button\": \"Jetzt buchen\",\n  \"Audio_Plugin_Volume_Control_Unmute_AriaLabel\": \"Stummschaltung aufheben\",\n  \"Spoiler_Reveal_Gallery_CTA\": \"Galerie enthüllen\",\n  \"Poll_Viewer_ShowLess_CTA\": \"Weniger anzeigen\",\n  \"VerticalEmbed_Disabled_Button_Tooltip\": \"Product page will be available once you publish your site.\",\n  \"Audio_Plugin_Volume_Control_Mute_AriaLabel\": \"Stummschalten\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Anonymous\": \"+{{anonNumber}} unbekannte\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_CTA_Follow\": \"Folgen\",\n  \"VerticalEmbed_Products_Button\": \"Jetzt kaufen\",\n  \"Poll_Viewer_Toast_Error_ServerDown\": \"Die Verbindung zum Server ist nicht möglich. Versuche es später nochmal.\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Header\": \"{{count}} Person hat für diese Antwort gestimmt\",\n  \"Poll_Viewer_VoteCount\": \"{{number}} Stimmen\",\n  \"VerticalEmbed_Events_Button\": \"Jetzt anmelden\",\n  \"Spoiler_Reveal_Image_CTA\": \"Bild enthüllen\",\n  \"Poll_Viewer_Toast_Error_Connection\": \"Keine Internetverbindung. Überprüfe deine Verbindung.\",\n  \"Poll_Viewer_Visibility_Owner_Footer\": \"Nur du kannst die Ergebnisse sehen.\",\n  \"VerticalEmbed_Booking_Error_Title\": \"Service wurde gelöscht\",\n  \"VerticalEmbed_Product_Error_Title\": \"Produkt wurde gelöscht\",\n  \"VerticalEmbed_Fetch_Error_Subtitle\": \"Elementinformationen können nicht geladen werden.\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Header_plural\": \"{{count}} Personen haben für diese Antwort gestimmt\",\n  \"VerticalEmbed_Event_Error_Title\": \"Veranstaltung wurde gelöscht\",\n  \"CollapsibleListPlugin_ExpandButton_AriaLabel\": \"Element wurde erweitert\",\n  \"Audio_Plugin_Cover_Alt\": \"Audio-Cover\",\n  \"Spoiler_Reveal_Video_Placeholder\": \"Dieses Video enthält einen Spoiler\",\n  \"VerticalEmbed_Product_Fetch_Error_Subtitle\": \"Es gab ein technisches Problem. Überprüfe deine Verbindung und versuche es erneut.\",\n  \"VerticalEmbed_Fetch_Error_Title\": \"Element konnte nicht geladen werden\",\n  \"Poll_Viewer_Option_AriaLabel_Unchecked\": \"unchecked\",\n  \"VerticalEmbed_Product_Error_Subtitle\": \"Dieses Produkt wurde gelöscht. Ersetze es durch ein anderes Produkt.\",\n  \"VerticalEmbed_Booking_Error_Subtitle\": \"Dieser Service wurde gelöscht. Ersetze ihn durch einen anderen.\",\n  \"Preview_SeeFullPost_Label\": \"Gesamten Beitrag ansehen\",\n  \"UploadFile_Viewer_Download\": \"{{fileType}} herunterladen\",\n  \"VerticalEmbed_Units_Hour\": \"{{hours}} Std.\",\n  \"VerticalEmbed_Units_Minute\": \"{{minutes}} Min.\",\n  \"VerticalEmbed_Event_Fetch_Error_Subtitle\": \"Es gab ein technisches Problem. Überprüfe deine Verbindung und versuche es erneut.\",\n  \"VerticalEmbed_Error_Button\": \"Ersetzen\",\n  \"VerticalEmbed_Error_Title\": \"Element wurde gelöscht\",\n  \"VerticalEmbed_Booking_Fetch_Error_Subtitle\": \"Es gab ein technisches Problem. Überprüfe deine Verbindung und versuche es erneut.\",\n  \"Poll_Viewer_Option_AriaLabel_Checked\": \"checked\"\n}\n","{\n  \"Poll_Viewer_VoteCount_Modal_Voters_Private_Voter\": \"Private User\",\n  \"Poll_Viewer_ShowAllOptions_CTA\": \"Δείτε όλες τις επιλογές\",\n  \"Spoiler_Reveal_Tooltip\": \"Κάντε κλικ για εμφάνιση\",\n  \"VerticalEmbed_Event_Error_Subtitle\": \"This event has been deleted, replace it with another event.\",\n  \"Viewer_Toolbar_Twitter_Tooltip\": \"Στείλτε Tweet με αυτό\",\n  \"CollapsibleListPlugin_CollapseButton_AriaLabel\": \"Το στοιχείο έχει συμπτυχθεί\",\n  \"Spoiler_Reveal_Video_CTA\": \"Εμφάνιση του βίντεο\",\n  \"VerticalEmbed_Pricing_Plan\": \"Plan only\",\n  \"Image_Expand_Button_AriaLabel\": \"Ανάπτυξη εικόνας\",\n  \"VerticalEmbed_From_Price\": \"From\",\n  \"Poll_Viewer_ShowAllResults_CTA\": \"Δείτε όλα τα αποτελέσματα\",\n  \"Spoiler_Reveal_Image_Placeholder\": \"Αυτή η εικόνα περιέχει σπόιλερ\",\n  \"VerticalEmbed_Ribbon\": \"Sale\",\n  \"Audio_Plugin_Elapsed_Time_Slider_AriaLabel\": \"Ρυθμιστικό αναζήτησης\",\n  \"VerticalEmbed_Error_Subtitle\": \"This item has been deleted, replace it with another item.\",\n  \"Poll_Viewer_Multiselect_Footer\": \"Μπορείτε να ψηφίσετε περισσότερες από μία απαντήσεις.\",\n  \"Audio_Plugin_More_Actions_Button_AriaLabel\": \"Εμφάνιση περισσότερων στοιχείων ελέγχου ήχου\",\n  \"VerticalEmbed_Booking_Fetch_Error_Title\": \"Failed to load service\",\n  \"Fullscreen_Close_Button_AriaLabel\": \"Κλείσιμο\",\n  \"VerticalEmbed_Event_Fetch_Error_Title\": \"Failed to load event\",\n  \"UploadFile_Viewer_Loader\": \"Φόρτωση {{fileType}}\",\n  \"Polls_Plugin_User_Avatar_Alt\": \"User avatar\",\n  \"Preview_ReadMore_Label\": \"Διαβάστε περισσότερα\",\n  \"Spoiler_Insert_Tooltip\": \"Σπόιλερ\",\n  \"VerticalEmbed_Product_Fetch_Error_Title\": \"Failed to load product\",\n  \"Fullscreen_Shrink_Button_AriaLabel\": \"Shrink\",\n  \"Audio_Plugin_Volume_Control_Slider_AriaLabel\": \"Ένταση\",\n  \"Spoiler_Reveal_Gallery_Placeholder\": \"Αυτή η συλλογή περιέχει σπόιλερ\",\n  \"Fullscreen_Expand_Button_AriaLabel\": \"Expand\",\n  \"VerticalEmbed_Bookings_Button\": \"Κάντε κράτηση τώρα\",\n  \"Audio_Plugin_Volume_Control_Unmute_AriaLabel\": \"Κατάργηση σίγασης\",\n  \"Spoiler_Reveal_Gallery_CTA\": \"Εμφάνιση της συλλογής\",\n  \"Poll_Viewer_ShowLess_CTA\": \"Εμφάνιση λιγοτέρων\",\n  \"VerticalEmbed_Disabled_Button_Tooltip\": \"Product page will be available once you publish your site.\",\n  \"Audio_Plugin_Volume_Control_Mute_AriaLabel\": \"Σίγαση\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Anonymous\": \"+{{anonNumber}} ανώνυμος\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_CTA_Follow\": \"Ακολουθήστε\",\n  \"VerticalEmbed_Products_Button\": \"Αγορά τώρα\",\n  \"Poll_Viewer_Toast_Error_ServerDown\": \"Δεν ήταν δυνατή η σύνδεση με τον διακομιστή. Προσπαθήστε πάλι αργότερα.\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Header\": \"{{count}} άτομο ψήφισε υπέρ αυτής της απάντησης\",\n  \"Poll_Viewer_VoteCount\": \"{{number}} ψήφοι\",\n  \"VerticalEmbed_Events_Button\": \"Εγγραφείτε τώρα\",\n  \"Spoiler_Reveal_Image_CTA\": \"Εμφάνιση της εικόνας\",\n  \"Poll_Viewer_Toast_Error_Connection\": \"Δεν υπάρχει σύνδεση στο Διαδίκτυο. Ελέγξτε τη σύνδεσή σας.\",\n  \"Poll_Viewer_Visibility_Owner_Footer\": \"Μόνο εσείς μπορείτε να δείτε τα αποτελέσματα.\",\n  \"VerticalEmbed_Booking_Error_Title\": \"Service deleted\",\n  \"VerticalEmbed_Product_Error_Title\": \"Product deleted\",\n  \"VerticalEmbed_Fetch_Error_Subtitle\": \"Unable to load item information.\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Header_plural\": \"{{count}} άτομα ψήφισαν υπέρ αυτής της απάντησης\",\n  \"VerticalEmbed_Event_Error_Title\": \"Event deleted\",\n  \"CollapsibleListPlugin_ExpandButton_AriaLabel\": \"Το στοιχείο επεκτάθηκε\",\n  \"Audio_Plugin_Cover_Alt\": \"Audio cover\",\n  \"Spoiler_Reveal_Video_Placeholder\": \"Αυτό το βίντεο περιέχει σπόιλερ\",\n  \"VerticalEmbed_Product_Fetch_Error_Subtitle\": \"Unable to load product information.\",\n  \"VerticalEmbed_Fetch_Error_Title\": \"Failed to load item\",\n  \"Poll_Viewer_Option_AriaLabel_Unchecked\": \"unchecked\",\n  \"VerticalEmbed_Product_Error_Subtitle\": \"This product has been deleted, replace it with another product.\",\n  \"VerticalEmbed_Booking_Error_Subtitle\": \"This service has been deleted, replace it with another service.\",\n  \"Preview_SeeFullPost_Label\": \"Δείτε την πλήρη ανάρτηση\",\n  \"UploadFile_Viewer_Download\": \"Λήψη {{fileType}}\",\n  \"VerticalEmbed_Units_Hour\": \"{{hours}}ω\",\n  \"VerticalEmbed_Units_Minute\": \"{{minutes}} λεπτά\",\n  \"VerticalEmbed_Event_Fetch_Error_Subtitle\": \"Unable to load event information.\",\n  \"VerticalEmbed_Error_Button\": \"Replace\",\n  \"VerticalEmbed_Error_Title\": \"Item deleted\",\n  \"VerticalEmbed_Booking_Fetch_Error_Subtitle\": \"Unable to load service information.\",\n  \"Poll_Viewer_Option_AriaLabel_Checked\": \"checked\"\n}\n","{\n  \"Poll_Viewer_VoteCount_Modal_Voters_Private_Voter\": \"Private User\",\n  \"Poll_Viewer_ShowAllOptions_CTA\": \"See All Options\",\n  \"Spoiler_Reveal_Tooltip\": \"Click to reveal\",\n  \"VerticalEmbed_Event_Error_Subtitle\": \"This event has been deleted, replace it with another event.\",\n  \"Viewer_Toolbar_Twitter_Tooltip\": \"Tweet this\",\n  \"CollapsibleListPlugin_CollapseButton_AriaLabel\": \"Item is collapsed\",\n  \"Spoiler_Reveal_Video_CTA\": \"Reveal Video\",\n  \"VerticalEmbed_Pricing_Plan\": \"Plan only\",\n  \"Image_Expand_Button_AriaLabel\": \"Expand image\",\n  \"VerticalEmbed_From_Price\": \"From\",\n  \"Poll_Viewer_ShowAllResults_CTA\": \"See All Results\",\n  \"Spoiler_Reveal_Image_Placeholder\": \"This image contains a spoiler\",\n  \"VerticalEmbed_Ribbon\": \"Sale\",\n  \"Audio_Plugin_Elapsed_Time_Slider_AriaLabel\": \"Seek slider\",\n  \"VerticalEmbed_Error_Subtitle\": \"This item has been deleted, replace it with another item.\",\n  \"Poll_Viewer_Multiselect_Footer\": \"You can vote for more than one answer.\",\n  \"Audio_Plugin_More_Actions_Button_AriaLabel\": \"Show more audio controls\",\n  \"VerticalEmbed_Booking_Fetch_Error_Title\": \"Service couldn’t be loaded\",\n  \"Fullscreen_Close_Button_AriaLabel\": \"Close\",\n  \"VerticalEmbed_Event_Fetch_Error_Title\": \"Event couldn't be loaded\",\n  \"UploadFile_Viewer_Loader\": \"Loading {{fileType}}\",\n  \"Polls_Plugin_User_Avatar_Alt\": \"User avatar\",\n  \"Preview_ReadMore_Label\": \"Read more\",\n  \"Spoiler_Insert_Tooltip\": \"Spoiler\",\n  \"VerticalEmbed_Product_Fetch_Error_Title\": \"Product couldn’t be loaded\",\n  \"Fullscreen_Shrink_Button_AriaLabel\": \"Shrink\",\n  \"Audio_Plugin_Volume_Control_Slider_AriaLabel\": \"Volume\",\n  \"Spoiler_Reveal_Gallery_Placeholder\": \"This gallery contains a spoiler\",\n  \"Fullscreen_Expand_Button_AriaLabel\": \"Expand\",\n  \"VerticalEmbed_Bookings_Button\": \"Book Now\",\n  \"Audio_Plugin_Volume_Control_Unmute_AriaLabel\": \"Unmute\",\n  \"Spoiler_Reveal_Gallery_CTA\": \"Reveal Gallery\",\n  \"Poll_Viewer_ShowLess_CTA\": \"Show Less\",\n  \"VerticalEmbed_Disabled_Button_Tooltip\": \"Product page will be available once you publish your site.\",\n  \"Audio_Plugin_Volume_Control_Mute_AriaLabel\": \"Mute\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Anonymous\": \"+{{anonNumber}} anonymous\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_CTA_Follow\": \"Follow\",\n  \"VerticalEmbed_Products_Button\": \"Buy Now\",\n  \"Poll_Viewer_Toast_Error_ServerDown\": \"Couldn't connect to server. Try again later.\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Header\": \"{{count}} person voted for this answer\",\n  \"Poll_Viewer_VoteCount\": \"{{number}} votes\",\n  \"VerticalEmbed_Events_Button\": \"Register Now\",\n  \"Spoiler_Reveal_Image_CTA\": \"Reveal Image\",\n  \"Poll_Viewer_Toast_Error_Connection\": \"No internet. Check your connection.\",\n  \"Poll_Viewer_Visibility_Owner_Footer\": \"Only you can see the results.\",\n  \"VerticalEmbed_Booking_Error_Title\": \"Service deleted\",\n  \"VerticalEmbed_Product_Error_Title\": \"Product deleted\",\n  \"VerticalEmbed_Fetch_Error_Subtitle\": \"Unable to load item information.\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Header_plural\": \"{{count}} people voted for this answer\",\n  \"VerticalEmbed_Event_Error_Title\": \"Event deleted\",\n  \"CollapsibleListPlugin_ExpandButton_AriaLabel\": \"Item is expanded\",\n  \"Audio_Plugin_Cover_Alt\": \"Audio cover\",\n  \"Spoiler_Reveal_Video_Placeholder\": \"This video contains a spoiler\",\n  \"VerticalEmbed_Product_Fetch_Error_Subtitle\": \"There was a technical issue. Check your connection or try again.\",\n  \"VerticalEmbed_Fetch_Error_Title\": \"Failed to load item\",\n  \"Poll_Viewer_Option_AriaLabel_Unchecked\": \"unchecked\",\n  \"VerticalEmbed_Product_Error_Subtitle\": \"This product has been deleted, replace it with another product.\",\n  \"VerticalEmbed_Booking_Error_Subtitle\": \"This service has been deleted, replace it with another service.\",\n  \"Preview_SeeFullPost_Label\": \"See Full Post\",\n  \"UploadFile_Viewer_Download\": \"Download {{fileType}}\",\n  \"VerticalEmbed_Units_Hour\": \"{{hours}}h\",\n  \"VerticalEmbed_Units_Minute\": \"{{minutes}}min\",\n  \"VerticalEmbed_Event_Fetch_Error_Subtitle\": \"There was a technical issue. Check your connection or try again.\",\n  \"VerticalEmbed_Error_Button\": \"Replace\",\n  \"VerticalEmbed_Error_Title\": \"Item deleted\",\n  \"VerticalEmbed_Booking_Fetch_Error_Subtitle\": \"There was a technical issue. Check your connection or try again.\",\n  \"Poll_Viewer_Option_AriaLabel_Checked\": \"checked\"\n}\n","{\n  \"Poll_Viewer_VoteCount_Modal_Voters_Private_Voter\": \"Private User\",\n  \"Poll_Viewer_ShowAllOptions_CTA\": \"Ver todas las opciones\",\n  \"Spoiler_Reveal_Tooltip\": \"Haz clic para revelar\",\n  \"VerticalEmbed_Event_Error_Subtitle\": \"Este evento se ha eliminado, reemplázalo por otro.\",\n  \"Viewer_Toolbar_Twitter_Tooltip\": \"Tuitea esto\",\n  \"CollapsibleListPlugin_CollapseButton_AriaLabel\": \"El elemento está contraído\",\n  \"Spoiler_Reveal_Video_CTA\": \"Mostrar video\",\n  \"VerticalEmbed_Pricing_Plan\": \"Solo el plan\",\n  \"Image_Expand_Button_AriaLabel\": \"Expandir imagen\",\n  \"VerticalEmbed_From_Price\": \"Desde\",\n  \"Poll_Viewer_ShowAllResults_CTA\": \"Ver todos los resultados\",\n  \"Spoiler_Reveal_Image_Placeholder\": \"La imagen contiene un spoiler\",\n  \"VerticalEmbed_Ribbon\": \"Oferta\",\n  \"Audio_Plugin_Elapsed_Time_Slider_AriaLabel\": \"Control deslizante de búsqueda\",\n  \"VerticalEmbed_Error_Subtitle\": \"Este ítem se ha eliminado, reemplázalo por otro ítem.\",\n  \"Poll_Viewer_Multiselect_Footer\": \"Puedes votar por más de una respuesta.\",\n  \"Audio_Plugin_More_Actions_Button_AriaLabel\": \"Mostrar más controles de audio\",\n  \"VerticalEmbed_Booking_Fetch_Error_Title\": \"No se pudo cargar el servicio\",\n  \"Fullscreen_Close_Button_AriaLabel\": \"Cerrar\",\n  \"VerticalEmbed_Event_Fetch_Error_Title\": \"No se pudo cargar el evento\",\n  \"UploadFile_Viewer_Loader\": \"Cargando {{fileType}}\",\n  \"Polls_Plugin_User_Avatar_Alt\": \"Avatar del usuario\",\n  \"Preview_ReadMore_Label\": \"Leer más\",\n  \"Spoiler_Insert_Tooltip\": \"Spoiler\",\n  \"VerticalEmbed_Product_Fetch_Error_Title\": \"No se pudo cargar el producto\",\n  \"Fullscreen_Shrink_Button_AriaLabel\": \"Reducir\",\n  \"Audio_Plugin_Volume_Control_Slider_AriaLabel\": \"Volumen\",\n  \"Spoiler_Reveal_Gallery_Placeholder\": \"Esta galería contiene un spoiler\",\n  \"Fullscreen_Expand_Button_AriaLabel\": \"Expandir\",\n  \"VerticalEmbed_Bookings_Button\": \"Reservar ahora\",\n  \"Audio_Plugin_Volume_Control_Unmute_AriaLabel\": \"Dejar de silenciar\",\n  \"Spoiler_Reveal_Gallery_CTA\": \"Mostrar galería\",\n  \"Poll_Viewer_ShowLess_CTA\": \"Mostrar menos\",\n  \"VerticalEmbed_Disabled_Button_Tooltip\": \"Product page will be available once you publish your site.\",\n  \"Audio_Plugin_Volume_Control_Mute_AriaLabel\": \"Silenciar\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Anonymous\": \"+{{anonNumber}} anónimos\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_CTA_Follow\": \"Seguir\",\n  \"VerticalEmbed_Products_Button\": \"Comprar ahora\",\n  \"Poll_Viewer_Toast_Error_ServerDown\": \"No se pudo conectar al servidor. Inténtalo de nuevo más tarde.\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Header\": \"{{count}} personas votaron por esta respuesta\",\n  \"Poll_Viewer_VoteCount\": \"{{number}} votos\",\n  \"VerticalEmbed_Events_Button\": \"Registrarse\",\n  \"Spoiler_Reveal_Image_CTA\": \"Mostrar imagen\",\n  \"Poll_Viewer_Toast_Error_Connection\": \"No hay internet. Verifica tu conexión.\",\n  \"Poll_Viewer_Visibility_Owner_Footer\": \"Solo tú puedes ver los resultados.\",\n  \"VerticalEmbed_Booking_Error_Title\": \"Servicio eliminado\",\n  \"VerticalEmbed_Product_Error_Title\": \"Producto eliminado\",\n  \"VerticalEmbed_Fetch_Error_Subtitle\": \"No se puede cargar la información del ítem.\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Header_plural\": \"{{count}} personas votaron por esta respuesta\",\n  \"VerticalEmbed_Event_Error_Title\": \"Evento eliminado\",\n  \"CollapsibleListPlugin_ExpandButton_AriaLabel\": \"El elemento está expandido\",\n  \"Audio_Plugin_Cover_Alt\": \"Portada de audio\",\n  \"Spoiler_Reveal_Video_Placeholder\": \"Este video contiene un spoiler\",\n  \"VerticalEmbed_Product_Fetch_Error_Subtitle\": \"Hubo un problema técnico. Comprueba tu conexión a Internet y vuelve a intentarlo.\",\n  \"VerticalEmbed_Fetch_Error_Title\": \"No se pudo cargar el ítem\",\n  \"Poll_Viewer_Option_AriaLabel_Unchecked\": \"unchecked\",\n  \"VerticalEmbed_Product_Error_Subtitle\": \"Este producto se ha eliminado, reemplázalo por otro producto.\",\n  \"VerticalEmbed_Booking_Error_Subtitle\": \"Este servicio se ha eliminado. Reemplázalo por otro.\",\n  \"Preview_SeeFullPost_Label\": \"Ver la entrada completa\",\n  \"UploadFile_Viewer_Download\": \"Descargar {{fileType}}\",\n  \"VerticalEmbed_Units_Hour\": \"{{hours}}h\",\n  \"VerticalEmbed_Units_Minute\": \"{{minutes}}min\",\n  \"VerticalEmbed_Event_Fetch_Error_Subtitle\": \"Hubo un problema técnico. Comprueba tu conexión a Internet y vuelve a intentarlo.\",\n  \"VerticalEmbed_Error_Button\": \"Reemplazar\",\n  \"VerticalEmbed_Error_Title\": \"Ítem eliminado\",\n  \"VerticalEmbed_Booking_Fetch_Error_Subtitle\": \"Hubo un problema técnico. Comprueba tu conexión a Internet y vuelve a intentarlo.\",\n  \"Poll_Viewer_Option_AriaLabel_Checked\": \"checked\"\n}\n","{\n  \"Poll_Viewer_VoteCount_Modal_Voters_Private_Voter\": \"Private User\",\n  \"Poll_Viewer_ShowAllOptions_CTA\": \"Näytä kaikki vaihtoehdot\",\n  \"Spoiler_Reveal_Tooltip\": \"Klikkaa näyttääksesi\",\n  \"VerticalEmbed_Event_Error_Subtitle\": \"This event has been deleted, replace it with another event.\",\n  \"Viewer_Toolbar_Twitter_Tooltip\": \"Twiittaa tämä\",\n  \"CollapsibleListPlugin_CollapseButton_AriaLabel\": \"Kohde on kutistettu\",\n  \"Spoiler_Reveal_Video_CTA\": \"Näytä video\",\n  \"VerticalEmbed_Pricing_Plan\": \"Plan only\",\n  \"Image_Expand_Button_AriaLabel\": \"Laajenna kuva\",\n  \"VerticalEmbed_From_Price\": \"From\",\n  \"Poll_Viewer_ShowAllResults_CTA\": \"Näytä kaikki tulokset\",\n  \"Spoiler_Reveal_Image_Placeholder\": \"Tämä kuva sisältää spoilerin\",\n  \"VerticalEmbed_Ribbon\": \"Sale\",\n  \"Audio_Plugin_Elapsed_Time_Slider_AriaLabel\": \"Hakusäädin\",\n  \"VerticalEmbed_Error_Subtitle\": \"This item has been deleted, replace it with another item.\",\n  \"Poll_Viewer_Multiselect_Footer\": \"Voit äänestää useamman kuin yhden vastauksen puolesta.\",\n  \"Audio_Plugin_More_Actions_Button_AriaLabel\": \"Näytä lisää ääniohjauksia\",\n  \"VerticalEmbed_Booking_Fetch_Error_Title\": \"Failed to load service\",\n  \"Fullscreen_Close_Button_AriaLabel\": \"Sulje\",\n  \"VerticalEmbed_Event_Fetch_Error_Title\": \"Failed to load event\",\n  \"UploadFile_Viewer_Loader\": \"Ladataan {{fileType}}\",\n  \"Polls_Plugin_User_Avatar_Alt\": \"User avatar\",\n  \"Preview_ReadMore_Label\": \"Lue lisää\",\n  \"Spoiler_Insert_Tooltip\": \"Spoileri\",\n  \"VerticalEmbed_Product_Fetch_Error_Title\": \"Failed to load product\",\n  \"Fullscreen_Shrink_Button_AriaLabel\": \"Shrink\",\n  \"Audio_Plugin_Volume_Control_Slider_AriaLabel\": \"Äänenvoimakkuus\",\n  \"Spoiler_Reveal_Gallery_Placeholder\": \"Tämä galleria sisältää spoilerin\",\n  \"Fullscreen_Expand_Button_AriaLabel\": \"Expand\",\n  \"VerticalEmbed_Bookings_Button\": \"Varaa nyt\",\n  \"Audio_Plugin_Volume_Control_Unmute_AriaLabel\": \"Poista mykistys\",\n  \"Spoiler_Reveal_Gallery_CTA\": \"Näytä galleria\",\n  \"Poll_Viewer_ShowLess_CTA\": \"Näytä vähemmän\",\n  \"VerticalEmbed_Disabled_Button_Tooltip\": \"Product page will be available once you publish your site.\",\n  \"Audio_Plugin_Volume_Control_Mute_AriaLabel\": \"Mykistä\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Anonymous\": \"+{{anonNumber}} tuntematonta\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_CTA_Follow\": \"Seuraa\",\n  \"VerticalEmbed_Products_Button\": \"Osta nyt\",\n  \"Poll_Viewer_Toast_Error_ServerDown\": \"Palvelimeen ei saatu yhteyttä. Yritä myöhemmin uudelleen.\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Header\": \"{{count}} henkilöä äänesti tämän vastauksen puolesta\",\n  \"Poll_Viewer_VoteCount\": \"{{number}} ääntä\",\n  \"VerticalEmbed_Events_Button\": \"Rekisteröidy nyt\",\n  \"Spoiler_Reveal_Image_CTA\": \"Näytä kuva\",\n  \"Poll_Viewer_Toast_Error_Connection\": \"Ei internet-yhteyttä. Tarkista yhteytesi.\",\n  \"Poll_Viewer_Visibility_Owner_Footer\": \"Vain sinä voit nähdä tulokset.\",\n  \"VerticalEmbed_Booking_Error_Title\": \"Service deleted\",\n  \"VerticalEmbed_Product_Error_Title\": \"Product deleted\",\n  \"VerticalEmbed_Fetch_Error_Subtitle\": \"Unable to load item information.\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Header_plural\": \"{{count}} ihmistä äänesti tämän vastauksen puolesta\",\n  \"VerticalEmbed_Event_Error_Title\": \"Event deleted\",\n  \"CollapsibleListPlugin_ExpandButton_AriaLabel\": \"Kohde on laajennettu\",\n  \"Audio_Plugin_Cover_Alt\": \"Audio cover\",\n  \"Spoiler_Reveal_Video_Placeholder\": \"Tämä video sisältää spoilerin\",\n  \"VerticalEmbed_Product_Fetch_Error_Subtitle\": \"Unable to load product information.\",\n  \"VerticalEmbed_Fetch_Error_Title\": \"Failed to load item\",\n  \"Poll_Viewer_Option_AriaLabel_Unchecked\": \"unchecked\",\n  \"VerticalEmbed_Product_Error_Subtitle\": \"This product has been deleted, replace it with another product.\",\n  \"VerticalEmbed_Booking_Error_Subtitle\": \"This service has been deleted, replace it with another service.\",\n  \"Preview_SeeFullPost_Label\": \"Näytä koko päivitys\",\n  \"UploadFile_Viewer_Download\": \"Lataa {{fileType}}\",\n  \"VerticalEmbed_Units_Hour\": \"{{hours}} t\",\n  \"VerticalEmbed_Units_Minute\": \"{{minutes}} min\",\n  \"VerticalEmbed_Event_Fetch_Error_Subtitle\": \"Unable to load event information.\",\n  \"VerticalEmbed_Error_Button\": \"Replace\",\n  \"VerticalEmbed_Error_Title\": \"Item deleted\",\n  \"VerticalEmbed_Booking_Fetch_Error_Subtitle\": \"Unable to load service information.\",\n  \"Poll_Viewer_Option_AriaLabel_Checked\": \"checked\"\n}\n","{\n  \"Poll_Viewer_VoteCount_Modal_Voters_Private_Voter\": \"Private User\",\n  \"Poll_Viewer_ShowAllOptions_CTA\": \"Voir toutes les options\",\n  \"Spoiler_Reveal_Tooltip\": \"Cliquez pour afficher\",\n  \"VerticalEmbed_Event_Error_Subtitle\": \"Cet événement a été supprimé, remplacez‑le par un autre événement.\",\n  \"Viewer_Toolbar_Twitter_Tooltip\": \"Tweetez ceci\",\n  \"CollapsibleListPlugin_CollapseButton_AriaLabel\": \"L'élément est réduit\",\n  \"Spoiler_Reveal_Video_CTA\": \"Révéler la vidéo\",\n  \"VerticalEmbed_Pricing_Plan\": \"Formule uniquement\",\n  \"Image_Expand_Button_AriaLabel\": \"Agrandir l'image\",\n  \"VerticalEmbed_From_Price\": \"À partir de\",\n  \"Poll_Viewer_ShowAllResults_CTA\": \"Voir tous les résultats\",\n  \"Spoiler_Reveal_Image_Placeholder\": \"Cette image contient un spoiler\",\n  \"VerticalEmbed_Ribbon\": \"Promotion\",\n  \"Audio_Plugin_Elapsed_Time_Slider_AriaLabel\": \"Curseur\",\n  \"VerticalEmbed_Error_Subtitle\": \"Cet élément a été supprimé, remplacez‑le par un autre élément.\",\n  \"Poll_Viewer_Multiselect_Footer\": \"Vous pouvez voter pour plus d'une réponse.\",\n  \"Audio_Plugin_More_Actions_Button_AriaLabel\": \"Afficher plus de commandes audio\",\n  \"VerticalEmbed_Booking_Fetch_Error_Title\": \"Le service n'a pas pu être chargé\",\n  \"Fullscreen_Close_Button_AriaLabel\": \"Fermer\",\n  \"VerticalEmbed_Event_Fetch_Error_Title\": \"L'événement n'a pas pu être chargé\",\n  \"UploadFile_Viewer_Loader\": \"Chargement {{fileType}}\",\n  \"Polls_Plugin_User_Avatar_Alt\": \"Avatar de l'utilisateur\",\n  \"Preview_ReadMore_Label\": \"Lire plus\",\n  \"Spoiler_Insert_Tooltip\": \"Spoiler\",\n  \"VerticalEmbed_Product_Fetch_Error_Title\": \"L'article n'a pas pu être chargé\",\n  \"Fullscreen_Shrink_Button_AriaLabel\": \"Réduire\",\n  \"Audio_Plugin_Volume_Control_Slider_AriaLabel\": \"Volume\",\n  \"Spoiler_Reveal_Gallery_Placeholder\": \"Cette galerie contient un spoiler\",\n  \"Fullscreen_Expand_Button_AriaLabel\": \"Agrandir\",\n  \"VerticalEmbed_Bookings_Button\": \"Réserver\",\n  \"Audio_Plugin_Volume_Control_Unmute_AriaLabel\": \"Désactiver la mise en sourdine\",\n  \"Spoiler_Reveal_Gallery_CTA\": \"Révéler la galerie\",\n  \"Poll_Viewer_ShowLess_CTA\": \"Afficher moins\",\n  \"VerticalEmbed_Disabled_Button_Tooltip\": \"Product page will be available once you publish your site.\",\n  \"Audio_Plugin_Volume_Control_Mute_AriaLabel\": \"Mettre en sourdine\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Anonymous\": \"+ {{anonNumber}} anonymes\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_CTA_Follow\": \"Suivre\",\n  \"VerticalEmbed_Products_Button\": \"Acheter\",\n  \"Poll_Viewer_Toast_Error_ServerDown\": \"Impossible de se connecter au serveur Veuillez réessayer plus tard.\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Header\": \"{{count}} personnes ont voté pour cette réponse\",\n  \"Poll_Viewer_VoteCount\": \"{{number}} votes\",\n  \"VerticalEmbed_Events_Button\": \"S'inscrire\",\n  \"Spoiler_Reveal_Image_CTA\": \"Révéler l'image\",\n  \"Poll_Viewer_Toast_Error_Connection\": \"Pas de connexion internet. Vérifiez votre connexion.\",\n  \"Poll_Viewer_Visibility_Owner_Footer\": \"Vous seul pouvez voir les résultats.\",\n  \"VerticalEmbed_Booking_Error_Title\": \"Service supprimé\",\n  \"VerticalEmbed_Product_Error_Title\": \"Article supprimé\",\n  \"VerticalEmbed_Fetch_Error_Subtitle\": \"Impossible de charger les informations de l'élément.\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Header_plural\": \"{{count}} personnes ont voté pour cette réponse\",\n  \"VerticalEmbed_Event_Error_Title\": \"Événement supprimé\",\n  \"CollapsibleListPlugin_ExpandButton_AriaLabel\": \"L'élément est agrandi\",\n  \"Audio_Plugin_Cover_Alt\": \"Couverture de l'audio\",\n  \"Spoiler_Reveal_Video_Placeholder\": \"Cette vidéo contient un spoiler\",\n  \"VerticalEmbed_Product_Fetch_Error_Subtitle\": \"Une erreur technique est survenue. Vérifiez votre connexion puis réessayez.\",\n  \"VerticalEmbed_Fetch_Error_Title\": \"L'élément n'a pas pu être chargé\",\n  \"Poll_Viewer_Option_AriaLabel_Unchecked\": \"unchecked\",\n  \"VerticalEmbed_Product_Error_Subtitle\": \"Cet article a été supprimé, remplacez‑le par un autre article.\",\n  \"VerticalEmbed_Booking_Error_Subtitle\": \"Ce service a été supprimé, remplacez‑le par un autre service.\",\n  \"Preview_SeeFullPost_Label\": \"Voir le post entier\",\n  \"UploadFile_Viewer_Download\": \"Télécharger {{fileType}}\",\n  \"VerticalEmbed_Units_Hour\": \"{{hours}} h\",\n  \"VerticalEmbed_Units_Minute\": \"{{minutes}} min\",\n  \"VerticalEmbed_Event_Fetch_Error_Subtitle\": \"Une erreur technique est survenue. Vérifiez votre connexion puis réessayez.\",\n  \"VerticalEmbed_Error_Button\": \"Remplacer\",\n  \"VerticalEmbed_Error_Title\": \"Élément supprimé\",\n  \"VerticalEmbed_Booking_Fetch_Error_Subtitle\": \"Une erreur technique est survenue. Vérifiez votre connexion puis réessayez.\",\n  \"Poll_Viewer_Option_AriaLabel_Checked\": \"checked\"\n}\n","{\n  \"Poll_Viewer_VoteCount_Modal_Voters_Private_Voter\": \"Private User\",\n  \"Poll_Viewer_ShowAllOptions_CTA\": \"ראה את כל האפשרויות\",\n  \"Spoiler_Reveal_Tooltip\": \"לחץ כדי לחשוף\",\n  \"VerticalEmbed_Event_Error_Subtitle\": \"This event has been deleted, replace it with another event.\",\n  \"Viewer_Toolbar_Twitter_Tooltip\": \"צייצו את זה\",\n  \"CollapsibleListPlugin_CollapseButton_AriaLabel\": \"הפריט הזה מכווץ\",\n  \"Spoiler_Reveal_Video_CTA\": \"הראו את הסרטון\",\n  \"VerticalEmbed_Pricing_Plan\": \"Plan only\",\n  \"Image_Expand_Button_AriaLabel\": \"הרחבת התמונה\",\n  \"VerticalEmbed_From_Price\": \"From\",\n  \"Poll_Viewer_ShowAllResults_CTA\": \"ראה את כל התוצאות\",\n  \"Spoiler_Reveal_Image_Placeholder\": \"יש ספוילרים בתמונה הזו\",\n  \"VerticalEmbed_Ribbon\": \"Sale\",\n  \"Audio_Plugin_Elapsed_Time_Slider_AriaLabel\": \"סליידר חיפוש\",\n  \"VerticalEmbed_Error_Subtitle\": \"This item has been deleted, replace it with another item.\",\n  \"Poll_Viewer_Multiselect_Footer\": \"אתה יכול להצביע ליותר מתשובה אחת.\",\n  \"Audio_Plugin_More_Actions_Button_AriaLabel\": \"הצגת פקדי אודיו נוספים\",\n  \"VerticalEmbed_Booking_Fetch_Error_Title\": \"Failed to load service\",\n  \"Fullscreen_Close_Button_AriaLabel\": \"סגירה\",\n  \"VerticalEmbed_Event_Fetch_Error_Title\": \"Failed to load event\",\n  \"UploadFile_Viewer_Loader\": \"טוענים את {{fileType}}\",\n  \"Polls_Plugin_User_Avatar_Alt\": \"User avatar\",\n  \"Preview_ReadMore_Label\": \"למידע נוסף\",\n  \"Spoiler_Insert_Tooltip\": \"ספוילר\",\n  \"VerticalEmbed_Product_Fetch_Error_Title\": \"Failed to load product\",\n  \"Fullscreen_Shrink_Button_AriaLabel\": \"Shrink\",\n  \"Audio_Plugin_Volume_Control_Slider_AriaLabel\": \"עוצמת קול\",\n  \"Spoiler_Reveal_Gallery_Placeholder\": \"יש ספוילרים בגלריה הזו\",\n  \"Fullscreen_Expand_Button_AriaLabel\": \"Expand\",\n  \"VerticalEmbed_Bookings_Button\": \"הזמינו עכשיו\",\n  \"Audio_Plugin_Volume_Control_Unmute_AriaLabel\": \"ביטול השתקה\",\n  \"Spoiler_Reveal_Gallery_CTA\": \"הראו את הגלריה\",\n  \"Poll_Viewer_ShowLess_CTA\": \"הצג פחות\",\n  \"VerticalEmbed_Disabled_Button_Tooltip\": \"Product page will be available once you publish your site.\",\n  \"Audio_Plugin_Volume_Control_Mute_AriaLabel\": \"השתקה\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Anonymous\": \"+{{anonNumber}} אנונימי\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_CTA_Follow\": \"עקוב\",\n  \"VerticalEmbed_Products_Button\": \"לקנייה\",\n  \"Poll_Viewer_Toast_Error_ServerDown\": \"לא ניתן היה להתחבר לשרת. נסה שוב מאוחר יותר.\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Header\": \"{{count}} אדם הצביע בעד תשובה זו\",\n  \"Poll_Viewer_VoteCount\": \"{{number}} הצבעות\",\n  \"VerticalEmbed_Events_Button\": \"להרשמה\",\n  \"Spoiler_Reveal_Image_CTA\": \"הראו את התמונה\",\n  \"Poll_Viewer_Toast_Error_Connection\": \"אין אינטרנט. בדוק את החיבור שלך.\",\n  \"Poll_Viewer_Visibility_Owner_Footer\": \"רק אתה יכול לראות את התוצאות.\",\n  \"VerticalEmbed_Booking_Error_Title\": \"Service deleted\",\n  \"VerticalEmbed_Product_Error_Title\": \"Product deleted\",\n  \"VerticalEmbed_Fetch_Error_Subtitle\": \"Unable to load item information.\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Header_plural\": \"{{count}} אנשים הצביעו בעד תשובה זו\",\n  \"VerticalEmbed_Event_Error_Title\": \"Event deleted\",\n  \"CollapsibleListPlugin_ExpandButton_AriaLabel\": \"הפריט הזה מוגדל\",\n  \"Audio_Plugin_Cover_Alt\": \"Audio cover\",\n  \"Spoiler_Reveal_Video_Placeholder\": \"יש ספוילרים בסרטון הזה\",\n  \"VerticalEmbed_Product_Fetch_Error_Subtitle\": \"Unable to load product information.\",\n  \"VerticalEmbed_Fetch_Error_Title\": \"Failed to load item\",\n  \"Poll_Viewer_Option_AriaLabel_Unchecked\": \"unchecked\",\n  \"VerticalEmbed_Product_Error_Subtitle\": \"This product has been deleted, replace it with another product.\",\n  \"VerticalEmbed_Booking_Error_Subtitle\": \"This service has been deleted, replace it with another service.\",\n  \"Preview_SeeFullPost_Label\": \"עבור לפוסט המלא\",\n  \"UploadFile_Viewer_Download\": \"הורידו את {{fileType}}\",\n  \"VerticalEmbed_Units_Hour\": \"{{hours}} שעות\",\n  \"VerticalEmbed_Units_Minute\": \"{{minutes}} דקות\",\n  \"VerticalEmbed_Event_Fetch_Error_Subtitle\": \"Unable to load event information.\",\n  \"VerticalEmbed_Error_Button\": \"Replace\",\n  \"VerticalEmbed_Error_Title\": \"Item deleted\",\n  \"VerticalEmbed_Booking_Fetch_Error_Subtitle\": \"Unable to load service information.\",\n  \"Poll_Viewer_Option_AriaLabel_Checked\": \"checked\"\n}\n","{\n  \"Poll_Viewer_VoteCount_Modal_Voters_Private_Voter\": \"Private User\",\n  \"Poll_Viewer_ShowAllOptions_CTA\": \"सभी विकल्प देखें\",\n  \"Spoiler_Reveal_Tooltip\": \"देखने की लिए क्लिक करें\",\n  \"VerticalEmbed_Event_Error_Subtitle\": \"यह इवेंट डिलीट कर दिया गया है, कृपया इसके स्थान पर दूसरा इवेंट चुनें।\",\n  \"Viewer_Toolbar_Twitter_Tooltip\": \"इसे ट्वीट करें\",\n  \"CollapsibleListPlugin_CollapseButton_AriaLabel\": \"आइटम को छोटा किया गया है\",\n  \"Spoiler_Reveal_Video_CTA\": \"वीडियो उजागर करें\",\n  \"VerticalEmbed_Pricing_Plan\": \"योजना केवल\",\n  \"Image_Expand_Button_AriaLabel\": \"छवि का विस्तार करें\",\n  \"VerticalEmbed_From_Price\": \"प्रेषक\",\n  \"Poll_Viewer_ShowAllResults_CTA\": \"सभी परिणाम देखें\",\n  \"Spoiler_Reveal_Image_Placeholder\": \"इस छवि में एक स्पॉइलर है\",\n  \"VerticalEmbed_Ribbon\": \"बिक्री\",\n  \"Audio_Plugin_Elapsed_Time_Slider_AriaLabel\": \"स्लाइडर की तलाश करें\",\n  \"VerticalEmbed_Error_Subtitle\": \"इस आइटम को हटा दिया गया है, इसे किसी दूसरे आइटम से बदलें।\",\n  \"Poll_Viewer_Multiselect_Footer\": \"आप एक से अधिक उत्तर के लिए मतदान कर सकते हैं।\",\n  \"Audio_Plugin_More_Actions_Button_AriaLabel\": \"और ऑडियो नियंत्रण दिखाएं\",\n  \"VerticalEmbed_Booking_Fetch_Error_Title\": \"सेवा लोड नहीं हो सकी।\",\n  \"Fullscreen_Close_Button_AriaLabel\": \"बंद करें\",\n  \"VerticalEmbed_Event_Fetch_Error_Title\": \"इवेंट लोड नहीं हो सका।\",\n  \"UploadFile_Viewer_Loader\": \"{{fileType}} लोड हो रही है\",\n  \"Polls_Plugin_User_Avatar_Alt\": \"उपयोगकर्ता अवतार\",\n  \"Preview_ReadMore_Label\": \"अधिक पढ़ें\",\n  \"Spoiler_Insert_Tooltip\": \"स्पॉइलर\",\n  \"VerticalEmbed_Product_Fetch_Error_Title\": \"उत्पाद लोड नहीं हो सका।\",\n  \"Fullscreen_Shrink_Button_AriaLabel\": \"छोटा करें\",\n  \"Audio_Plugin_Volume_Control_Slider_AriaLabel\": \"वॉल्यूम\",\n  \"Spoiler_Reveal_Gallery_Placeholder\": \"इस गैलरी में एक स्पॉइलर है\",\n  \"Fullscreen_Expand_Button_AriaLabel\": \"एक्सपैंड़ करें\",\n  \"VerticalEmbed_Bookings_Button\": \"अभी बुक करें\",\n  \"Audio_Plugin_Volume_Control_Unmute_AriaLabel\": \"अनम्यूट करें\",\n  \"Spoiler_Reveal_Gallery_CTA\": \"गैलरी उजागर करें\",\n  \"Poll_Viewer_ShowLess_CTA\": \"कम दिखाएं\",\n  \"VerticalEmbed_Disabled_Button_Tooltip\": \"Product page will be available once you publish your site.\",\n  \"Audio_Plugin_Volume_Control_Mute_AriaLabel\": \"म्यूट करें\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Anonymous\": \"+{{anonNumber}} बेनाम\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_CTA_Follow\": \"फोलो करें\",\n  \"VerticalEmbed_Products_Button\": \"अभी खरीदें\",\n  \"Poll_Viewer_Toast_Error_ServerDown\": \"सर्वर से कनेक्ट नहीं किया जा सका। बाद में फिर से प्रयास करें।\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Header\": \"{{count}} लोगों ने इस उत्तर के लिए वोट किया\",\n  \"Poll_Viewer_VoteCount\": \"{{number}} वोट\",\n  \"VerticalEmbed_Events_Button\": \"अभी पंजीकरण करें\",\n  \"Spoiler_Reveal_Image_CTA\": \"छवि उजागर करें\",\n  \"Poll_Viewer_Toast_Error_Connection\": \"इंटरनेट नहीं है। अपना कनेक्शन जांचें।\",\n  \"Poll_Viewer_Visibility_Owner_Footer\": \"केवल आप परिणाम देख सकते हैं।\",\n  \"VerticalEmbed_Booking_Error_Title\": \"सेवा हटाई गई।\",\n  \"VerticalEmbed_Product_Error_Title\": \"उत्पाद हटा दिया गया\",\n  \"VerticalEmbed_Fetch_Error_Subtitle\": \"आइटम की जानकारी लोड नहीं हो पा रही है।\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Header_plural\": \"{{count}} लोगों ने इस उत्तर के लिए वोट किया\",\n  \"VerticalEmbed_Event_Error_Title\": \"इवेंट हटा दिया गया\",\n  \"CollapsibleListPlugin_ExpandButton_AriaLabel\": \"आइटम का विस्तार किया गया है\",\n  \"Audio_Plugin_Cover_Alt\": \"ऑडियो कवर\",\n  \"Spoiler_Reveal_Video_Placeholder\": \"इस वीडियो में एक स्पॉइलर है\",\n  \"VerticalEmbed_Product_Fetch_Error_Subtitle\": \"अस्थायी तकनीकी समस्या थी। अपना कनेक्शन जांचें या दोबारा प्रयास करें।\",\n  \"VerticalEmbed_Fetch_Error_Title\": \"आइटम लोड करने में विफल।\",\n  \"Poll_Viewer_Option_AriaLabel_Unchecked\": \"unchecked\",\n  \"VerticalEmbed_Product_Error_Subtitle\": \"इस उत्पाद को हटा दिया गया है, इसे किसी अन्य उत्पाद से बदलें।\",\n  \"VerticalEmbed_Booking_Error_Subtitle\": \"यह सेवा हटा दी गई है, इसे किसी अन्य सेवा से बदलें।\",\n  \"Preview_SeeFullPost_Label\": \"पूरी पोस्ट देखें\",\n  \"UploadFile_Viewer_Download\": \"{{fileType}} डाउनलोड करें\",\n  \"VerticalEmbed_Units_Hour\": \"{{hours}}h\",\n  \"VerticalEmbed_Units_Minute\": \"{{minutes}}मिनट\",\n  \"VerticalEmbed_Event_Fetch_Error_Subtitle\": \"अस्थायी तकनीकी समस्या थी। अपना कनेक्शन जांचें या दोबारा प्रयास करें।\",\n  \"VerticalEmbed_Error_Button\": \"प्रतिस्थापित करे\",\n  \"VerticalEmbed_Error_Title\": \"आइटम डिलीट किया गया\",\n  \"VerticalEmbed_Booking_Fetch_Error_Subtitle\": \"अस्थायी तकनीकी समस्या थी। अपना कनेक्शन जांचें या दोबारा प्रयास करें।\",\n  \"Poll_Viewer_Option_AriaLabel_Checked\": \"checked\"\n}\n","{\n  \"Poll_Viewer_VoteCount_Modal_Voters_Private_Voter\": \"Private User\",\n  \"Poll_Viewer_ShowAllOptions_CTA\": \"Prikaži sve opcije\",\n  \"Spoiler_Reveal_Tooltip\": \"Kliknite za prikaz\",\n  \"VerticalEmbed_Event_Error_Subtitle\": \"This event has been deleted, replace it with another event.\",\n  \"Viewer_Toolbar_Twitter_Tooltip\": \"Tweetaj ovo\",\n  \"CollapsibleListPlugin_CollapseButton_AriaLabel\": \"Stavka je sažeta\",\n  \"Spoiler_Reveal_Video_CTA\": \"Otkrij videozapis\",\n  \"VerticalEmbed_Pricing_Plan\": \"Plan only\",\n  \"Image_Expand_Button_AriaLabel\": \"Proširi sliku\",\n  \"VerticalEmbed_From_Price\": \"From\",\n  \"Poll_Viewer_ShowAllResults_CTA\": \"Prikaži sve rezultate\",\n  \"Spoiler_Reveal_Image_Placeholder\": \"Ova slika sadrži spojler\",\n  \"VerticalEmbed_Ribbon\": \"Sale\",\n  \"Audio_Plugin_Elapsed_Time_Slider_AriaLabel\": \"Klizač reprodukcije\",\n  \"VerticalEmbed_Error_Subtitle\": \"This item has been deleted, replace it with another item.\",\n  \"Poll_Viewer_Multiselect_Footer\": \"Možete glasati za više od jednog odgovora.\",\n  \"Audio_Plugin_More_Actions_Button_AriaLabel\": \"Prikaži više kontrola zvuka\",\n  \"VerticalEmbed_Booking_Fetch_Error_Title\": \"Failed to load service\",\n  \"Fullscreen_Close_Button_AriaLabel\": \"Zatvori\",\n  \"VerticalEmbed_Event_Fetch_Error_Title\": \"Failed to load event\",\n  \"UploadFile_Viewer_Loader\": \"Učitavanje {{fileType}}\",\n  \"Polls_Plugin_User_Avatar_Alt\": \"User avatar\",\n  \"Preview_ReadMore_Label\": \"Pročitajte više\",\n  \"Spoiler_Insert_Tooltip\": \"Spojler\",\n  \"VerticalEmbed_Product_Fetch_Error_Title\": \"Failed to load product\",\n  \"Fullscreen_Shrink_Button_AriaLabel\": \"Shrink\",\n  \"Audio_Plugin_Volume_Control_Slider_AriaLabel\": \"Glasnoća\",\n  \"Spoiler_Reveal_Gallery_Placeholder\": \"Ova galerija sadrži spojler\",\n  \"Fullscreen_Expand_Button_AriaLabel\": \"Expand\",\n  \"VerticalEmbed_Bookings_Button\": \"Rezerviraj odmah\",\n  \"Audio_Plugin_Volume_Control_Unmute_AriaLabel\": \"Uključi\",\n  \"Spoiler_Reveal_Gallery_CTA\": \"Otkrij galeriju\",\n  \"Poll_Viewer_ShowLess_CTA\": \"Prikaži manje\",\n  \"VerticalEmbed_Disabled_Button_Tooltip\": \"Product page will be available once you publish your site.\",\n  \"Audio_Plugin_Volume_Control_Mute_AriaLabel\": \"Utišaj\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Anonymous\": \"+{{anonNumber}} anonimnih\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_CTA_Follow\": \"Prati\",\n  \"VerticalEmbed_Products_Button\": \"Kupi odmah\",\n  \"Poll_Viewer_Toast_Error_ServerDown\": \"Nije moguće spojiti se na poslužitelj. Pokušajte ponovno kasnije.\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Header\": \"{{count}} osoba je glasala za ovaj odgovor\",\n  \"Poll_Viewer_VoteCount\": \"{{number}} glasa/ova\",\n  \"VerticalEmbed_Events_Button\": \"Prijavi se odmah\",\n  \"Spoiler_Reveal_Image_CTA\": \"Otkrij sliku\",\n  \"Poll_Viewer_Toast_Error_Connection\": \"Nema interneta. Provjerite vezu.\",\n  \"Poll_Viewer_Visibility_Owner_Footer\": \"Samo vi možete vidjeti rezultate.\",\n  \"VerticalEmbed_Booking_Error_Title\": \"Service deleted\",\n  \"VerticalEmbed_Product_Error_Title\": \"Product deleted\",\n  \"VerticalEmbed_Fetch_Error_Subtitle\": \"Unable to load item information.\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Header_plural\": \"{{count}} osobe/a je glasalo za ovaj odgovor\",\n  \"VerticalEmbed_Event_Error_Title\": \"Event deleted\",\n  \"CollapsibleListPlugin_ExpandButton_AriaLabel\": \"Stavka je proširena\",\n  \"Audio_Plugin_Cover_Alt\": \"Audio cover\",\n  \"Spoiler_Reveal_Video_Placeholder\": \"Ovaj videozapis sadrži spojler\",\n  \"VerticalEmbed_Product_Fetch_Error_Subtitle\": \"Unable to load product information.\",\n  \"VerticalEmbed_Fetch_Error_Title\": \"Failed to load item\",\n  \"Poll_Viewer_Option_AriaLabel_Unchecked\": \"unchecked\",\n  \"VerticalEmbed_Product_Error_Subtitle\": \"This product has been deleted, replace it with another product.\",\n  \"VerticalEmbed_Booking_Error_Subtitle\": \"This service has been deleted, replace it with another service.\",\n  \"Preview_SeeFullPost_Label\": \"Pogledaj cijelu objavu\",\n  \"UploadFile_Viewer_Download\": \"Preuzmi {{fileType}}\",\n  \"VerticalEmbed_Units_Hour\": \"{{hours}}h\",\n  \"VerticalEmbed_Units_Minute\": \"{{minutes}}min\",\n  \"VerticalEmbed_Event_Fetch_Error_Subtitle\": \"Unable to load event information.\",\n  \"VerticalEmbed_Error_Button\": \"Replace\",\n  \"VerticalEmbed_Error_Title\": \"Item deleted\",\n  \"VerticalEmbed_Booking_Fetch_Error_Subtitle\": \"Unable to load service information.\",\n  \"Poll_Viewer_Option_AriaLabel_Checked\": \"checked\"\n}\n","{\n  \"Poll_Viewer_VoteCount_Modal_Voters_Private_Voter\": \"Private User\",\n  \"Poll_Viewer_ShowAllOptions_CTA\": \"Összes opció mutatása\",\n  \"Spoiler_Reveal_Tooltip\": \"Kattints a megjelenítéshez!\",\n  \"VerticalEmbed_Event_Error_Subtitle\": \"This event has been deleted, replace it with another event.\",\n  \"Viewer_Toolbar_Twitter_Tooltip\": \"Tweetelem\",\n  \"CollapsibleListPlugin_CollapseButton_AriaLabel\": \"Összecsukott elem\",\n  \"Spoiler_Reveal_Video_CTA\": \"Videó mutatása\",\n  \"VerticalEmbed_Pricing_Plan\": \"Plan only\",\n  \"Image_Expand_Button_AriaLabel\": \"Kép kibontása\",\n  \"VerticalEmbed_From_Price\": \"From\",\n  \"Poll_Viewer_ShowAllResults_CTA\": \"Az összes eredmény mutatása\",\n  \"Spoiler_Reveal_Image_Placeholder\": \"Ez a kép spoilert tartalmaz\",\n  \"VerticalEmbed_Ribbon\": \"Sale\",\n  \"Audio_Plugin_Elapsed_Time_Slider_AriaLabel\": \"Keresőcsúszka\",\n  \"VerticalEmbed_Error_Subtitle\": \"This item has been deleted, replace it with another item.\",\n  \"Poll_Viewer_Multiselect_Footer\": \"Egynél több válaszra is szavazhatsz.\",\n  \"Audio_Plugin_More_Actions_Button_AriaLabel\": \"További hangvezérlők megjelenítése\",\n  \"VerticalEmbed_Booking_Fetch_Error_Title\": \"Failed to load service\",\n  \"Fullscreen_Close_Button_AriaLabel\": \"Bezárás\",\n  \"VerticalEmbed_Event_Fetch_Error_Title\": \"Failed to load event\",\n  \"UploadFile_Viewer_Loader\": \"{{fileType}} betöltése\",\n  \"Polls_Plugin_User_Avatar_Alt\": \"User avatar\",\n  \"Preview_ReadMore_Label\": \"Bővebb információk\",\n  \"Spoiler_Insert_Tooltip\": \"Spoiler\",\n  \"VerticalEmbed_Product_Fetch_Error_Title\": \"Failed to load product\",\n  \"Fullscreen_Shrink_Button_AriaLabel\": \"Shrink\",\n  \"Audio_Plugin_Volume_Control_Slider_AriaLabel\": \"Hangerő\",\n  \"Spoiler_Reveal_Gallery_Placeholder\": \"Ez a galéria spoilert tartalmaz (lelövi a poént)\",\n  \"Fullscreen_Expand_Button_AriaLabel\": \"Expand\",\n  \"VerticalEmbed_Bookings_Button\": \"Foglalás most\",\n  \"Audio_Plugin_Volume_Control_Unmute_AriaLabel\": \"Némítás feloldása\",\n  \"Spoiler_Reveal_Gallery_CTA\": \"Galéria mutatása\",\n  \"Poll_Viewer_ShowLess_CTA\": \"Kevesebb mutatása\",\n  \"VerticalEmbed_Disabled_Button_Tooltip\": \"Product page will be available once you publish your site.\",\n  \"Audio_Plugin_Volume_Control_Mute_AriaLabel\": \"Némítás\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Anonymous\": \"+{{anonNumber}} névtelen\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_CTA_Follow\": \"Követem\",\n  \"VerticalEmbed_Products_Button\": \"Vásárlás most\",\n  \"Poll_Viewer_Toast_Error_ServerDown\": \"Nem sikerült csatlakozni a szerverhez. Próbálkozz ismét később!\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Header\": \"{{count}} felhasználó szavazott erre a válaszra\",\n  \"Poll_Viewer_VoteCount\": \"{{number}} szavazat\",\n  \"VerticalEmbed_Events_Button\": \"Regisztráció most\",\n  \"Spoiler_Reveal_Image_CTA\": \"Kép mutatása\",\n  \"Poll_Viewer_Toast_Error_Connection\": \"Nincs internet. Ellenőrizd a kapcsolatot!\",\n  \"Poll_Viewer_Visibility_Owner_Footer\": \"Csak te láthatod az eredményeket.\",\n  \"VerticalEmbed_Booking_Error_Title\": \"Service deleted\",\n  \"VerticalEmbed_Product_Error_Title\": \"Product deleted\",\n  \"VerticalEmbed_Fetch_Error_Subtitle\": \"Unable to load item information.\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Header_plural\": \"{{count}} felhasználó szavazott erre a válaszra\",\n  \"VerticalEmbed_Event_Error_Title\": \"Event deleted\",\n  \"CollapsibleListPlugin_ExpandButton_AriaLabel\": \"Kibontott elem\",\n  \"Audio_Plugin_Cover_Alt\": \"Audio cover\",\n  \"Spoiler_Reveal_Video_Placeholder\": \"Ez a videó spoilert tartalmaz\",\n  \"VerticalEmbed_Product_Fetch_Error_Subtitle\": \"Unable to load product information.\",\n  \"VerticalEmbed_Fetch_Error_Title\": \"Failed to load item\",\n  \"Poll_Viewer_Option_AriaLabel_Unchecked\": \"unchecked\",\n  \"VerticalEmbed_Product_Error_Subtitle\": \"This product has been deleted, replace it with another product.\",\n  \"VerticalEmbed_Booking_Error_Subtitle\": \"This service has been deleted, replace it with another service.\",\n  \"Preview_SeeFullPost_Label\": \"Teljes bejegyzés megjelenítése\",\n  \"UploadFile_Viewer_Download\": \"{{fileType}} letöltése\",\n  \"VerticalEmbed_Units_Hour\": \"{{hours}} óra\",\n  \"VerticalEmbed_Units_Minute\": \"{{minutes}} perc\",\n  \"VerticalEmbed_Event_Fetch_Error_Subtitle\": \"Unable to load event information.\",\n  \"VerticalEmbed_Error_Button\": \"Replace\",\n  \"VerticalEmbed_Error_Title\": \"Item deleted\",\n  \"VerticalEmbed_Booking_Fetch_Error_Subtitle\": \"Unable to load service information.\",\n  \"Poll_Viewer_Option_AriaLabel_Checked\": \"checked\"\n}\n","{\n  \"Poll_Viewer_VoteCount_Modal_Voters_Private_Voter\": \"Private User\",\n  \"Poll_Viewer_ShowAllOptions_CTA\": \"Lihat Semua Opsi\",\n  \"Spoiler_Reveal_Tooltip\": \"Klik untuk mengungkap\",\n  \"VerticalEmbed_Event_Error_Subtitle\": \"Event ini telah dihapus, ganti dengan event lain.\",\n  \"Viewer_Toolbar_Twitter_Tooltip\": \"Twitkan ini\",\n  \"CollapsibleListPlugin_CollapseButton_AriaLabel\": \"Item ditutup\",\n  \"Spoiler_Reveal_Video_CTA\": \"Singkap Video\",\n  \"VerticalEmbed_Pricing_Plan\": \"Hanya paket\",\n  \"Image_Expand_Button_AriaLabel\": \"Perluas gambar\",\n  \"VerticalEmbed_From_Price\": \"Mulai\",\n  \"Poll_Viewer_ShowAllResults_CTA\": \"Lihat Semua Hasil\",\n  \"Spoiler_Reveal_Image_Placeholder\": \"Gambar ini berisi bocoran\",\n  \"VerticalEmbed_Ribbon\": \"Promosi\",\n  \"Audio_Plugin_Elapsed_Time_Slider_AriaLabel\": \"Cari penggeser\",\n  \"VerticalEmbed_Error_Subtitle\": \"Item ini telah dihapus, ganti dengan item lain.\",\n  \"Poll_Viewer_Multiselect_Footer\": \"Anda boleh memberikan suara ke lebih dari satu jawaban.\",\n  \"Audio_Plugin_More_Actions_Button_AriaLabel\": \"Tampilkan kontrol audio lainnya\",\n  \"VerticalEmbed_Booking_Fetch_Error_Title\": \"Layanan tidak dapat dimuat\",\n  \"Fullscreen_Close_Button_AriaLabel\": \"Tutup\",\n  \"VerticalEmbed_Event_Fetch_Error_Title\": \"Event tidak dapat dimuat\",\n  \"UploadFile_Viewer_Loader\": \"Memuatkan {{fileType}}\",\n  \"Polls_Plugin_User_Avatar_Alt\": \"Avatar pengguna\",\n  \"Preview_ReadMore_Label\": \"Teks lengkap\",\n  \"Spoiler_Insert_Tooltip\": \"Bocoran\",\n  \"VerticalEmbed_Product_Fetch_Error_Title\": \"Produk tidak dapat dimuat\",\n  \"Fullscreen_Shrink_Button_AriaLabel\": \"Menyusut\",\n  \"Audio_Plugin_Volume_Control_Slider_AriaLabel\": \"Volume\",\n  \"Spoiler_Reveal_Gallery_Placeholder\": \"Galeri ini berisi bocoran\",\n  \"Fullscreen_Expand_Button_AriaLabel\": \"Bentangkan\",\n  \"VerticalEmbed_Bookings_Button\": \"Pesan Sekarang\",\n  \"Audio_Plugin_Volume_Control_Unmute_AriaLabel\": \"Aktifkan suara\",\n  \"Spoiler_Reveal_Gallery_CTA\": \"Singkap Galeri\",\n  \"Poll_Viewer_ShowLess_CTA\": \"Tampilkan lebih sedikit\",\n  \"VerticalEmbed_Disabled_Button_Tooltip\": \"Product page will be available once you publish your site.\",\n  \"Audio_Plugin_Volume_Control_Mute_AriaLabel\": \"Bisukan\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Anonymous\": \"+{{anonNumber}} anonim\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_CTA_Follow\": \"Ikuti\",\n  \"VerticalEmbed_Products_Button\": \"Beli Sekarang\",\n  \"Poll_Viewer_Toast_Error_ServerDown\": \"Tidak dapat menyambung dengan server. Coba lagi nanti.\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Header\": \"{{count}} orang memberikan suara untuk jawaban ini\",\n  \"Poll_Viewer_VoteCount\": \"{{number}} suara\",\n  \"VerticalEmbed_Events_Button\": \"Daftar Sekarang\",\n  \"Spoiler_Reveal_Image_CTA\": \"Singkap Gambar\",\n  \"Poll_Viewer_Toast_Error_Connection\": \"Tidak ada internet. Periksa sambungan Anda.\",\n  \"Poll_Viewer_Visibility_Owner_Footer\": \"Hanya Anda yang bisa melihat hasilnya.\",\n  \"VerticalEmbed_Booking_Error_Title\": \"Layanan dihapus\",\n  \"VerticalEmbed_Product_Error_Title\": \"Produk dihapus\",\n  \"VerticalEmbed_Fetch_Error_Subtitle\": \"Tidak dapat memuat informasi item.\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Header_plural\": \"{{count}} orang memberikan suara untuk jawaban ini\",\n  \"VerticalEmbed_Event_Error_Title\": \"Event dihapus\",\n  \"CollapsibleListPlugin_ExpandButton_AriaLabel\": \"Item dibentangkan\",\n  \"Audio_Plugin_Cover_Alt\": \"Penutup audio\",\n  \"Spoiler_Reveal_Video_Placeholder\": \"Video ini berisi bocoran\",\n  \"VerticalEmbed_Product_Fetch_Error_Subtitle\": \"Terjadi masalah teknis. Periksa koneksi Anda atau coba lagi.\",\n  \"VerticalEmbed_Fetch_Error_Title\": \"Gagal memuat item\",\n  \"Poll_Viewer_Option_AriaLabel_Unchecked\": \"unchecked\",\n  \"VerticalEmbed_Product_Error_Subtitle\": \"Produk ini telah dihapus, ganti dengan produk lain.\",\n  \"VerticalEmbed_Booking_Error_Subtitle\": \"Layanan ini telah dihapus, ganti dengan layanan lain.\",\n  \"Preview_SeeFullPost_Label\": \"Lihat postingan lengkap\",\n  \"UploadFile_Viewer_Download\": \"Unduh {{fileType}}\",\n  \"VerticalEmbed_Units_Hour\": \"{{hours}}j\",\n  \"VerticalEmbed_Units_Minute\": \"{{minutes}}mnt\",\n  \"VerticalEmbed_Event_Fetch_Error_Subtitle\": \"Terjadi masalah teknis. Periksa koneksi Anda atau coba lagi.\",\n  \"VerticalEmbed_Error_Button\": \"Ganti\",\n  \"VerticalEmbed_Error_Title\": \"Item dihapus\",\n  \"VerticalEmbed_Booking_Fetch_Error_Subtitle\": \"Terjadi masalah teknis. Periksa koneksi Anda atau coba lagi.\",\n  \"Poll_Viewer_Option_AriaLabel_Checked\": \"checked\"\n}\n","{\n  \"Poll_Viewer_VoteCount_Modal_Voters_Private_Voter\": \"Private User\",\n  \"Poll_Viewer_ShowAllOptions_CTA\": \"Tutte le opzioni\",\n  \"Spoiler_Reveal_Tooltip\": \"Clicca per scoprire\",\n  \"VerticalEmbed_Event_Error_Subtitle\": \"Questo evento è stato eliminato. Sostituiscilo con un altro.\",\n  \"Viewer_Toolbar_Twitter_Tooltip\": \"Twittalo\",\n  \"CollapsibleListPlugin_CollapseButton_AriaLabel\": \"L'elemento è ridotto\",\n  \"Spoiler_Reveal_Video_CTA\": \"Mostra video\",\n  \"VerticalEmbed_Pricing_Plan\": \"Solo pacchetto\",\n  \"Image_Expand_Button_AriaLabel\": \"Espandi immagine\",\n  \"VerticalEmbed_From_Price\": \"Da\",\n  \"Poll_Viewer_ShowAllResults_CTA\": \"Vedi tutti i risultati\",\n  \"Spoiler_Reveal_Image_Placeholder\": \"Questa immagine contiene uno spoiler\",\n  \"VerticalEmbed_Ribbon\": \"Offerta\",\n  \"Audio_Plugin_Elapsed_Time_Slider_AriaLabel\": \"Slider di ricerca\",\n  \"VerticalEmbed_Error_Subtitle\": \"L'elemento è stato eliminato. Sostituiscilo con un altro.\",\n  \"Poll_Viewer_Multiselect_Footer\": \"Puoi votare per più di una risposta.\",\n  \"Audio_Plugin_More_Actions_Button_AriaLabel\": \"Mostra altri controlli audio\",\n  \"VerticalEmbed_Booking_Fetch_Error_Title\": \"Impossibile caricare il servizio\",\n  \"Fullscreen_Close_Button_AriaLabel\": \"Chiudi\",\n  \"VerticalEmbed_Event_Fetch_Error_Title\": \"Impossibile caricare l'evento\",\n  \"UploadFile_Viewer_Loader\": \"Caricamento di {{fileType}}\",\n  \"Polls_Plugin_User_Avatar_Alt\": \"Avatar utente\",\n  \"Preview_ReadMore_Label\": \"Continua a Leggere\",\n  \"Spoiler_Insert_Tooltip\": \"Spoiler\",\n  \"VerticalEmbed_Product_Fetch_Error_Title\": \"Impossibile caricare il prodotto\",\n  \"Fullscreen_Shrink_Button_AriaLabel\": \"Riduci\",\n  \"Audio_Plugin_Volume_Control_Slider_AriaLabel\": \"Volume\",\n  \"Spoiler_Reveal_Gallery_Placeholder\": \"Questa galleria contiene uno spoiler\",\n  \"Fullscreen_Expand_Button_AriaLabel\": \"Espandi\",\n  \"VerticalEmbed_Bookings_Button\": \"Prenota\",\n  \"Audio_Plugin_Volume_Control_Unmute_AriaLabel\": \"Riattiva audio\",\n  \"Spoiler_Reveal_Gallery_CTA\": \"Mostra galleria\",\n  \"Poll_Viewer_ShowLess_CTA\": \"Mostra Meno\",\n  \"VerticalEmbed_Disabled_Button_Tooltip\": \"Product page will be available once you publish your site.\",\n  \"Audio_Plugin_Volume_Control_Mute_AriaLabel\": \"Silenzia\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Anonymous\": \"+ {{anonNumber}} anonimo\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_CTA_Follow\": \"Segui\",\n  \"VerticalEmbed_Products_Button\": \"Acquista\",\n  \"Poll_Viewer_Toast_Error_ServerDown\": \"Impossibile connettersi al server. Riprova più tardi.\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Header\": \"{{count}} persona ha votato per questa risposta\",\n  \"Poll_Viewer_VoteCount\": \"{{number}} voti\",\n  \"VerticalEmbed_Events_Button\": \"Registrati\",\n  \"Spoiler_Reveal_Image_CTA\": \"Mostra immagine\",\n  \"Poll_Viewer_Toast_Error_Connection\": \"C'è un problema con internet. Verifica la tua connessione.\",\n  \"Poll_Viewer_Visibility_Owner_Footer\": \"Solo tu puoi vedere i risultati.\",\n  \"VerticalEmbed_Booking_Error_Title\": \"Servizio eliminato.\",\n  \"VerticalEmbed_Product_Error_Title\": \"Prodotto eliminato\",\n  \"VerticalEmbed_Fetch_Error_Subtitle\": \"Impossibile caricare le informazioni sull'articolo.\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Header_plural\": \"{{count}} persone hanno votato per questa risposta\",\n  \"VerticalEmbed_Event_Error_Title\": \"Evento eliminato.\",\n  \"CollapsibleListPlugin_ExpandButton_AriaLabel\": \"L'elemento è espanso\",\n  \"Audio_Plugin_Cover_Alt\": \"Copertina audio\",\n  \"Spoiler_Reveal_Video_Placeholder\": \"Questo video contiene uno spoiler\",\n  \"VerticalEmbed_Product_Fetch_Error_Subtitle\": \"C'è stato un problema tecnico. Verifica la connessione e riprova.\",\n  \"VerticalEmbed_Fetch_Error_Title\": \"Impossibile caricare l'articolo\",\n  \"Poll_Viewer_Option_AriaLabel_Unchecked\": \"unchecked\",\n  \"VerticalEmbed_Product_Error_Subtitle\": \"Questo prodotto è stato eliminato. Sostituiscilo con un altro.\",\n  \"VerticalEmbed_Booking_Error_Subtitle\": \"Questo servizio è stato eliminato. Sostituiscilo con un altro.\",\n  \"Preview_SeeFullPost_Label\": \"Vedi post intero\",\n  \"UploadFile_Viewer_Download\": \"Scarica {{fileType}}\",\n  \"VerticalEmbed_Units_Hour\": \"{{hours}} h\",\n  \"VerticalEmbed_Units_Minute\": \"{{minutes}} min\",\n  \"VerticalEmbed_Event_Fetch_Error_Subtitle\": \"C'è stato un problema tecnico. Verifica la connessione e riprova.\",\n  \"VerticalEmbed_Error_Button\": \"Sostituisci\",\n  \"VerticalEmbed_Error_Title\": \"Articolo eliminato\",\n  \"VerticalEmbed_Booking_Fetch_Error_Subtitle\": \"C'è stato un problema tecnico. Verifica la connessione e riprova.\",\n  \"Poll_Viewer_Option_AriaLabel_Checked\": \"checked\"\n}\n","{\n  \"Poll_Viewer_VoteCount_Modal_Voters_Private_Voter\": \"Private User\",\n  \"Poll_Viewer_ShowAllOptions_CTA\": \"すべてのオプションを見る\",\n  \"Spoiler_Reveal_Tooltip\": \"クリックして表示\",\n  \"VerticalEmbed_Event_Error_Subtitle\": \"このイベントは削除されました。別のイベントと置き換えてください。\",\n  \"Viewer_Toolbar_Twitter_Tooltip\": \"ツイートする\",\n  \"CollapsibleListPlugin_CollapseButton_AriaLabel\": \"アイテムが折りたたまれました\",\n  \"Spoiler_Reveal_Video_CTA\": \"ぼかしを外す\",\n  \"VerticalEmbed_Pricing_Plan\": \"プランのみ\",\n  \"Image_Expand_Button_AriaLabel\": \"画像を拡大\",\n  \"VerticalEmbed_From_Price\": \"最小価格\",\n  \"Poll_Viewer_ShowAllResults_CTA\": \"すべての結果を表示\",\n  \"Spoiler_Reveal_Image_Placeholder\": \"この画像にはぼかしが入っています\",\n  \"VerticalEmbed_Ribbon\": \"セール\",\n  \"Audio_Plugin_Elapsed_Time_Slider_AriaLabel\": \"シークバー\",\n  \"VerticalEmbed_Error_Subtitle\": \"このアイテムは削除されました。別のアイテムと置き換えてください。\",\n  \"Poll_Viewer_Multiselect_Footer\": \"複数の回答に投票することができます。\",\n  \"Audio_Plugin_More_Actions_Button_AriaLabel\": \"その他のオーディオコントロールを表示\",\n  \"VerticalEmbed_Booking_Fetch_Error_Title\": \"サービスが読み込まれませんでした\",\n  \"Fullscreen_Close_Button_AriaLabel\": \"閉じる\",\n  \"VerticalEmbed_Event_Fetch_Error_Title\": \"イベントが読み込まれませんでした\",\n  \"UploadFile_Viewer_Loader\": \"読み込み中：{{fileType}}\",\n  \"Polls_Plugin_User_Avatar_Alt\": \"ユーザーアバター\",\n  \"Preview_ReadMore_Label\": \"続きを読む\",\n  \"Spoiler_Insert_Tooltip\": \"ぼかし\",\n  \"VerticalEmbed_Product_Fetch_Error_Title\": \"商品が読み込まれませんでした\",\n  \"Fullscreen_Shrink_Button_AriaLabel\": \"縮小\",\n  \"Audio_Plugin_Volume_Control_Slider_AriaLabel\": \"検索数\",\n  \"Spoiler_Reveal_Gallery_Placeholder\": \"このギャラリーにはぼかしが入っています\",\n  \"Fullscreen_Expand_Button_AriaLabel\": \"展開\",\n  \"VerticalEmbed_Bookings_Button\": \"今すぐ予約\",\n  \"Audio_Plugin_Volume_Control_Unmute_AriaLabel\": \"ミュートを解除\",\n  \"Spoiler_Reveal_Gallery_CTA\": \"ぼかしを外す\",\n  \"Poll_Viewer_ShowLess_CTA\": \"折りたたむ\",\n  \"VerticalEmbed_Disabled_Button_Tooltip\": \"Product page will be available once you publish your site.\",\n  \"Audio_Plugin_Volume_Control_Mute_AriaLabel\": \"ミュート\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Anonymous\": \"+{{anonNumber}}名 匿名ゲスト\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_CTA_Follow\": \"フォロー\",\n  \"VerticalEmbed_Products_Button\": \"購入する\",\n  \"Poll_Viewer_Toast_Error_ServerDown\": \"サーバーに接続できませんでした。後ほどお試しください。\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Header\": \"{{count}}人がこの回答に投票しました\",\n  \"Poll_Viewer_VoteCount\": \"{{number}}件の投票\",\n  \"VerticalEmbed_Events_Button\": \"今すぐ登録\",\n  \"Spoiler_Reveal_Image_CTA\": \"ぼかしを外す\",\n  \"Poll_Viewer_Toast_Error_Connection\": \"問題が発生しました。接続状況をご確認ください\",\n  \"Poll_Viewer_Visibility_Owner_Footer\": \"自分だけが結果を見ることができます。\",\n  \"VerticalEmbed_Booking_Error_Title\": \"サービスが削除されました\",\n  \"VerticalEmbed_Product_Error_Title\": \"商品を削除しました\",\n  \"VerticalEmbed_Fetch_Error_Subtitle\": \"アイテム情報が読み込まれませんでした。\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Header_plural\": \"{{count}}人がこの回答に投票しました\",\n  \"VerticalEmbed_Event_Error_Title\": \"イベントが削除されました。\",\n  \"CollapsibleListPlugin_ExpandButton_AriaLabel\": \"アイテムが展開されました\",\n  \"Audio_Plugin_Cover_Alt\": \"音声カバー\",\n  \"Spoiler_Reveal_Video_Placeholder\": \"この動画にはぼかしが入っています\",\n  \"VerticalEmbed_Product_Fetch_Error_Subtitle\": \"技術的な問題が発生しました。お手数ですが、接続状況を確認して再度お試しください。\",\n  \"VerticalEmbed_Fetch_Error_Title\": \"アイテムが読み込まれませんでした\",\n  \"Poll_Viewer_Option_AriaLabel_Unchecked\": \"unchecked\",\n  \"VerticalEmbed_Product_Error_Subtitle\": \"この商品は削除されました。別の商品と置き換えてください。\",\n  \"VerticalEmbed_Booking_Error_Subtitle\": \"このサービスは削除されました。別のサービスで置き換えてください。\",\n  \"Preview_SeeFullPost_Label\": \"記事全文を表示\",\n  \"UploadFile_Viewer_Download\": \"ダウンロード：{{fileType}}\",\n  \"VerticalEmbed_Units_Hour\": \"{{hours}}時間\",\n  \"VerticalEmbed_Units_Minute\": \"{{minutes}}分\",\n  \"VerticalEmbed_Event_Fetch_Error_Subtitle\": \"技術的な問題が発生しました。お手数ですが、接続状況を確認して再度お試しください。\",\n  \"VerticalEmbed_Error_Button\": \"置き換え\",\n  \"VerticalEmbed_Error_Title\": \"アイテムが削除されました\",\n  \"VerticalEmbed_Booking_Fetch_Error_Subtitle\": \"技術的な問題が発生しました。お手数ですが、接続状況を確認して再度お試しください。\",\n  \"Poll_Viewer_Option_AriaLabel_Checked\": \"checked\"\n}\n","{\n  \"Poll_Viewer_VoteCount_Modal_Voters_Private_Voter\": \"Private User\",\n  \"Poll_Viewer_ShowAllOptions_CTA\": \"전체 옵션 보기\",\n  \"Spoiler_Reveal_Tooltip\": \"클릭 및 표시하기\",\n  \"VerticalEmbed_Event_Error_Subtitle\": \"This event has been deleted, replace it with another event.\",\n  \"Viewer_Toolbar_Twitter_Tooltip\": \"트윗하기\",\n  \"CollapsibleListPlugin_CollapseButton_AriaLabel\": \"아이템 목록 축소됨\",\n  \"Spoiler_Reveal_Video_CTA\": \"동영상 표시\",\n  \"VerticalEmbed_Pricing_Plan\": \"Plan only\",\n  \"Image_Expand_Button_AriaLabel\": \"이미지 확대\",\n  \"VerticalEmbed_From_Price\": \"From\",\n  \"Poll_Viewer_ShowAllResults_CTA\": \"전체 결과 보기\",\n  \"Spoiler_Reveal_Image_Placeholder\": \"이미지에 스포일러가 포함되어 있습니다.\",\n  \"VerticalEmbed_Ribbon\": \"Sale\",\n  \"Audio_Plugin_Elapsed_Time_Slider_AriaLabel\": \"탐색 슬라이더\",\n  \"VerticalEmbed_Error_Subtitle\": \"This item has been deleted, replace it with another item.\",\n  \"Poll_Viewer_Multiselect_Footer\": \"1개 이상의 답변에 투표할 수 있습니다.\",\n  \"Audio_Plugin_More_Actions_Button_AriaLabel\": \"오디오 제어 도구 더보기\",\n  \"VerticalEmbed_Booking_Fetch_Error_Title\": \"Failed to load service\",\n  \"Fullscreen_Close_Button_AriaLabel\": \"닫기\",\n  \"VerticalEmbed_Event_Fetch_Error_Title\": \"Failed to load event\",\n  \"UploadFile_Viewer_Loader\": \"{{fileType}} 불러오는 중\",\n  \"Polls_Plugin_User_Avatar_Alt\": \"사용자 아바타\",\n  \"Preview_ReadMore_Label\": \"더보기\",\n  \"Spoiler_Insert_Tooltip\": \"스포일러\",\n  \"VerticalEmbed_Product_Fetch_Error_Title\": \"Failed to load product\",\n  \"Fullscreen_Shrink_Button_AriaLabel\": \"Shrink\",\n  \"Audio_Plugin_Volume_Control_Slider_AriaLabel\": \"사용 횟수\",\n  \"Spoiler_Reveal_Gallery_Placeholder\": \"갤러리에 스포일러가 포함되어 있습니다.\",\n  \"Fullscreen_Expand_Button_AriaLabel\": \"Expand\",\n  \"VerticalEmbed_Bookings_Button\": \"예약하기\",\n  \"Audio_Plugin_Volume_Control_Unmute_AriaLabel\": \"활동 제한 해제\",\n  \"Spoiler_Reveal_Gallery_CTA\": \"갤러리 표시\",\n  \"Poll_Viewer_ShowLess_CTA\": \"닫기\",\n  \"VerticalEmbed_Disabled_Button_Tooltip\": \"Product page will be available once you publish your site.\",\n  \"Audio_Plugin_Volume_Control_Mute_AriaLabel\": \"활동 제한\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Anonymous\": \"+{{anonNumber}}명의 익명\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_CTA_Follow\": \"팔로우\",\n  \"VerticalEmbed_Products_Button\": \"구매하기\",\n  \"Poll_Viewer_Toast_Error_ServerDown\": \"서버에 연결할 수 없습니다. 잠시 후에 다시 시도해보세요.\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Header\": \"응답자 {{count}}명\",\n  \"Poll_Viewer_VoteCount\": \"{{number}}표\",\n  \"VerticalEmbed_Events_Button\": \"등록하기\",\n  \"Spoiler_Reveal_Image_CTA\": \"이미지 표시\",\n  \"Poll_Viewer_Toast_Error_Connection\": \"인터넷 연결 상태를 확인하세요.  \",\n  \"Poll_Viewer_Visibility_Owner_Footer\": \"결과는 본인에게만 확인할 수 있습니다.\",\n  \"VerticalEmbed_Booking_Error_Title\": \"Service deleted\",\n  \"VerticalEmbed_Product_Error_Title\": \"Product deleted\",\n  \"VerticalEmbed_Fetch_Error_Subtitle\": \"Unable to load item information.\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Header_plural\": \"해당 답변에 응답한 이용자는 {{count}}명입니다.\",\n  \"VerticalEmbed_Event_Error_Title\": \"Event deleted\",\n  \"CollapsibleListPlugin_ExpandButton_AriaLabel\": \"아이템 목록 확장됨\",\n  \"Audio_Plugin_Cover_Alt\": \"오디오 커버\",\n  \"Spoiler_Reveal_Video_Placeholder\": \"동영상에 스포일러가 포함되어 있습니다.\",\n  \"VerticalEmbed_Product_Fetch_Error_Subtitle\": \"Unable to load product information.\",\n  \"VerticalEmbed_Fetch_Error_Title\": \"Failed to load item\",\n  \"Poll_Viewer_Option_AriaLabel_Unchecked\": \"unchecked\",\n  \"VerticalEmbed_Product_Error_Subtitle\": \"This product has been deleted, replace it with another product.\",\n  \"VerticalEmbed_Booking_Error_Subtitle\": \"This service has been deleted, replace it with another service.\",\n  \"Preview_SeeFullPost_Label\": \"전체 게시물 보기\",\n  \"UploadFile_Viewer_Download\": \"{{fileType}} 다운로드\",\n  \"VerticalEmbed_Units_Hour\": \"{{hours}}시간\",\n  \"VerticalEmbed_Units_Minute\": \"{{minutes}}분\",\n  \"VerticalEmbed_Event_Fetch_Error_Subtitle\": \"Unable to load event information.\",\n  \"VerticalEmbed_Error_Button\": \"Replace\",\n  \"VerticalEmbed_Error_Title\": \"Item deleted\",\n  \"VerticalEmbed_Booking_Fetch_Error_Subtitle\": \"Unable to load service information.\",\n  \"Poll_Viewer_Option_AriaLabel_Checked\": \"checked\"\n}\n","{\n  \"Poll_Viewer_VoteCount_Modal_Voters_Private_Voter\": \"Private User\",\n  \"Poll_Viewer_ShowAllOptions_CTA\": \"Žiūrėti visus variantus\",\n  \"Spoiler_Reveal_Tooltip\": \"Spustelėkite, jei norite sužinoti\",\n  \"VerticalEmbed_Event_Error_Subtitle\": \"This event has been deleted, replace it with another event.\",\n  \"Viewer_Toolbar_Twitter_Tooltip\": \"Skelbti „Twitter“\",\n  \"CollapsibleListPlugin_CollapseButton_AriaLabel\": \"Elementas suskleistas\",\n  \"Spoiler_Reveal_Video_CTA\": \"Atskleisti vaizdo įrašą\",\n  \"VerticalEmbed_Pricing_Plan\": \"Plan only\",\n  \"Image_Expand_Button_AriaLabel\": \"Išplėsti vaizdą\",\n  \"VerticalEmbed_From_Price\": \"From\",\n  \"Poll_Viewer_ShowAllResults_CTA\": \"Žiūrėti visus rezultatus\",\n  \"Spoiler_Reveal_Image_Placeholder\": \"Šiame vaizde yra turinio užuomina\",\n  \"VerticalEmbed_Ribbon\": \"Sale\",\n  \"Audio_Plugin_Elapsed_Time_Slider_AriaLabel\": \"Slankiklis\",\n  \"VerticalEmbed_Error_Subtitle\": \"This item has been deleted, replace it with another item.\",\n  \"Poll_Viewer_Multiselect_Footer\": \"Galite balsuoti už daugiau nei vieną atsakymą.\",\n  \"Audio_Plugin_More_Actions_Button_AriaLabel\": \"Rodyti daugiau garso valdiklių\",\n  \"VerticalEmbed_Booking_Fetch_Error_Title\": \"Failed to load service\",\n  \"Fullscreen_Close_Button_AriaLabel\": \"Uždaryti\",\n  \"VerticalEmbed_Event_Fetch_Error_Title\": \"Failed to load event\",\n  \"UploadFile_Viewer_Loader\": \"Įkeliamas {{fileType}}\",\n  \"Polls_Plugin_User_Avatar_Alt\": \"User avatar\",\n  \"Preview_ReadMore_Label\": \"Skaityti daugiau\",\n  \"Spoiler_Insert_Tooltip\": \"Turinio užuomina\",\n  \"VerticalEmbed_Product_Fetch_Error_Title\": \"Failed to load product\",\n  \"Fullscreen_Shrink_Button_AriaLabel\": \"Shrink\",\n  \"Audio_Plugin_Volume_Control_Slider_AriaLabel\": \"Garsumas\",\n  \"Spoiler_Reveal_Gallery_Placeholder\": \"Šioje galerijoje yra turinio užuomina\",\n  \"Fullscreen_Expand_Button_AriaLabel\": \"Expand\",\n  \"VerticalEmbed_Bookings_Button\": \"Užsakyti\",\n  \"Audio_Plugin_Volume_Control_Unmute_AriaLabel\": \"Nebetildyti\",\n  \"Spoiler_Reveal_Gallery_CTA\": \"Atskleisti galeriją\",\n  \"Poll_Viewer_ShowLess_CTA\": \"Rodyti mažiau\",\n  \"VerticalEmbed_Disabled_Button_Tooltip\": \"Product page will be available once you publish your site.\",\n  \"Audio_Plugin_Volume_Control_Mute_AriaLabel\": \"Nutildyti\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Anonymous\": \"+{{anonNumber}} nežinomi (-ų)\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_CTA_Follow\": \"Stebėti\",\n  \"VerticalEmbed_Products_Button\": \"Pirkti\",\n  \"Poll_Viewer_Toast_Error_ServerDown\": \"Nepavyko prisijungti prie serverio. Pabandykite vėliau.\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Header\": \"Už šį atsakymą balsavo {{count}}\",\n  \"Poll_Viewer_VoteCount\": \"Balsai: {{number}}\",\n  \"VerticalEmbed_Events_Button\": \"Registruotis\",\n  \"Spoiler_Reveal_Image_CTA\": \"Atskleisti vaizdą\",\n  \"Poll_Viewer_Toast_Error_Connection\": \"Nėra interneto. Patikrinkite ryšį.\",\n  \"Poll_Viewer_Visibility_Owner_Footer\": \"Rezultatus matote tik jūs.\",\n  \"VerticalEmbed_Booking_Error_Title\": \"Service deleted\",\n  \"VerticalEmbed_Product_Error_Title\": \"Product deleted\",\n  \"VerticalEmbed_Fetch_Error_Subtitle\": \"Unable to load item information.\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Header_plural\": \"Už šį atsakymą balsavo {{count}}\",\n  \"VerticalEmbed_Event_Error_Title\": \"Event deleted\",\n  \"CollapsibleListPlugin_ExpandButton_AriaLabel\": \"Elementas išskleistas\",\n  \"Audio_Plugin_Cover_Alt\": \"Audio cover\",\n  \"Spoiler_Reveal_Video_Placeholder\": \"Šiame vaizdo įraše yra turinio užuomina\",\n  \"VerticalEmbed_Product_Fetch_Error_Subtitle\": \"Unable to load product information.\",\n  \"VerticalEmbed_Fetch_Error_Title\": \"Failed to load item\",\n  \"Poll_Viewer_Option_AriaLabel_Unchecked\": \"unchecked\",\n  \"VerticalEmbed_Product_Error_Subtitle\": \"This product has been deleted, replace it with another product.\",\n  \"VerticalEmbed_Booking_Error_Subtitle\": \"This service has been deleted, replace it with another service.\",\n  \"Preview_SeeFullPost_Label\": \"Rodyti visą įrašą\",\n  \"UploadFile_Viewer_Download\": \"Atsisiųsti {{fileType}}\",\n  \"VerticalEmbed_Units_Hour\": \"{{hours}} val.\",\n  \"VerticalEmbed_Units_Minute\": \"{{minutes}} min.\",\n  \"VerticalEmbed_Event_Fetch_Error_Subtitle\": \"Unable to load event information.\",\n  \"VerticalEmbed_Error_Button\": \"Replace\",\n  \"VerticalEmbed_Error_Title\": \"Item deleted\",\n  \"VerticalEmbed_Booking_Fetch_Error_Subtitle\": \"Unable to load service information.\",\n  \"Poll_Viewer_Option_AriaLabel_Checked\": \"checked\"\n}\n","{\n  \"Poll_Viewer_VoteCount_Modal_Voters_Private_Voter\": \"Private User\",\n  \"Poll_Viewer_ShowAllOptions_CTA\": \"Skatiet visas opcijas\",\n  \"Spoiler_Reveal_Tooltip\": \"Noklikšķiniet, lai atklātu\",\n  \"VerticalEmbed_Event_Error_Subtitle\": \"This event has been deleted, replace it with another event.\",\n  \"Viewer_Toolbar_Twitter_Tooltip\": \"Ietvītot šo\",\n  \"CollapsibleListPlugin_CollapseButton_AriaLabel\": \"Vienums ir sakļauts\",\n  \"Spoiler_Reveal_Video_CTA\": \"Atklāt video\",\n  \"VerticalEmbed_Pricing_Plan\": \"Plan only\",\n  \"Image_Expand_Button_AriaLabel\": \"Izvērst attēlu\",\n  \"VerticalEmbed_From_Price\": \"From\",\n  \"Poll_Viewer_ShowAllResults_CTA\": \"Skatīt visus rezultātus\",\n  \"Spoiler_Reveal_Image_Placeholder\": \"Šajā attēlā ir spoileris\",\n  \"VerticalEmbed_Ribbon\": \"Sale\",\n  \"Audio_Plugin_Elapsed_Time_Slider_AriaLabel\": \"Meklēšanas slīdnis\",\n  \"VerticalEmbed_Error_Subtitle\": \"This item has been deleted, replace it with another item.\",\n  \"Poll_Viewer_Multiselect_Footer\": \"Balsot var par vairākām atbildēm.\",\n  \"Audio_Plugin_More_Actions_Button_AriaLabel\": \"Rādīt vairāk audio vadības elementu\",\n  \"VerticalEmbed_Booking_Fetch_Error_Title\": \"Failed to load service\",\n  \"Fullscreen_Close_Button_AriaLabel\": \"Aizvērt\",\n  \"VerticalEmbed_Event_Fetch_Error_Title\": \"Failed to load event\",\n  \"UploadFile_Viewer_Loader\": \"Notiek {{fileType}} ielāde\",\n  \"Polls_Plugin_User_Avatar_Alt\": \"User avatar\",\n  \"Preview_ReadMore_Label\": \"Lasīt vairāk\",\n  \"Spoiler_Insert_Tooltip\": \"Spoileris\",\n  \"VerticalEmbed_Product_Fetch_Error_Title\": \"Failed to load product\",\n  \"Fullscreen_Shrink_Button_AriaLabel\": \"Shrink\",\n  \"Audio_Plugin_Volume_Control_Slider_AriaLabel\": \"Skaļums\",\n  \"Spoiler_Reveal_Gallery_Placeholder\": \"Šajā galerijā ir spoileris\",\n  \"Fullscreen_Expand_Button_AriaLabel\": \"Expand\",\n  \"VerticalEmbed_Bookings_Button\": \"Rezervējiet tūlīt\",\n  \"Audio_Plugin_Volume_Control_Unmute_AriaLabel\": \"Atcelt apklusināšanu\",\n  \"Spoiler_Reveal_Gallery_CTA\": \"Atklāt galeriju\",\n  \"Poll_Viewer_ShowLess_CTA\": \"Rādīt mazāk\",\n  \"VerticalEmbed_Disabled_Button_Tooltip\": \"Product page will be available once you publish your site.\",\n  \"Audio_Plugin_Volume_Control_Mute_AriaLabel\": \"Apklusināt\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Anonymous\": \"+{{anonNumber}} anonīmi\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_CTA_Follow\": \"Sekot\",\n  \"VerticalEmbed_Products_Button\": \"Pērciet tūlīt\",\n  \"Poll_Viewer_Toast_Error_ServerDown\": \"Nevarēja izveidot savienojumu ar serveri. Vēlāk mēģiniet vēlreiz.\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Header\": \"{{count}} persona(-s) balsoja par šo atbildi\",\n  \"Poll_Viewer_VoteCount\": \"{{number}} balss(-is)\",\n  \"VerticalEmbed_Events_Button\": \"Reģistrējieties tūlīt\",\n  \"Spoiler_Reveal_Image_CTA\": \"Atklāt attēlu\",\n  \"Poll_Viewer_Toast_Error_Connection\": \"Nav interneta. Pārbaudiet savienojumu.\",\n  \"Poll_Viewer_Visibility_Owner_Footer\": \"Tikai Jūs varat redzēt rezultātus.\",\n  \"VerticalEmbed_Booking_Error_Title\": \"Service deleted\",\n  \"VerticalEmbed_Product_Error_Title\": \"Product deleted\",\n  \"VerticalEmbed_Fetch_Error_Subtitle\": \"Unable to load item information.\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Header_plural\": \"{{count}} persona(-s) balsoja par šo atbildi\",\n  \"VerticalEmbed_Event_Error_Title\": \"Event deleted\",\n  \"CollapsibleListPlugin_ExpandButton_AriaLabel\": \"Vienums ir izvērsts\",\n  \"Audio_Plugin_Cover_Alt\": \"Audio cover\",\n  \"Spoiler_Reveal_Video_Placeholder\": \"Šajā video ir spoileris\",\n  \"VerticalEmbed_Product_Fetch_Error_Subtitle\": \"Unable to load product information.\",\n  \"VerticalEmbed_Fetch_Error_Title\": \"Failed to load item\",\n  \"Poll_Viewer_Option_AriaLabel_Unchecked\": \"unchecked\",\n  \"VerticalEmbed_Product_Error_Subtitle\": \"This product has been deleted, replace it with another product.\",\n  \"VerticalEmbed_Booking_Error_Subtitle\": \"This service has been deleted, replace it with another service.\",\n  \"Preview_SeeFullPost_Label\": \"Skatīt pilnu ziņu\",\n  \"UploadFile_Viewer_Download\": \"Lejupielādēt {{fileType}}\",\n  \"VerticalEmbed_Units_Hour\": \"{{hours}} h\",\n  \"VerticalEmbed_Units_Minute\": \"{{minutes}} min\",\n  \"VerticalEmbed_Event_Fetch_Error_Subtitle\": \"Unable to load event information.\",\n  \"VerticalEmbed_Error_Button\": \"Replace\",\n  \"VerticalEmbed_Error_Title\": \"Item deleted\",\n  \"VerticalEmbed_Booking_Fetch_Error_Subtitle\": \"Unable to load service information.\",\n  \"Poll_Viewer_Option_AriaLabel_Checked\": \"checked\"\n}\n","{\n  \"Poll_Viewer_VoteCount_Modal_Voters_Private_Voter\": \"Private User\",\n  \"Poll_Viewer_ShowAllOptions_CTA\": \"Lihat Semua Pilihan\",\n  \"Spoiler_Reveal_Tooltip\": \"Klik untuk mendedahkan\",\n  \"VerticalEmbed_Event_Error_Subtitle\": \"This event has been deleted, replace it with another event.\",\n  \"Viewer_Toolbar_Twitter_Tooltip\": \"'Tweet' ini\",\n  \"CollapsibleListPlugin_CollapseButton_AriaLabel\": \"Item dilipat\",\n  \"Spoiler_Reveal_Video_CTA\": \"Dedahkan Video\",\n  \"VerticalEmbed_Pricing_Plan\": \"Plan only\",\n  \"Image_Expand_Button_AriaLabel\": \"Kembangkan imej\",\n  \"VerticalEmbed_From_Price\": \"From\",\n  \"Poll_Viewer_ShowAllResults_CTA\": \"Lihat Semua Keputusan\",\n  \"Spoiler_Reveal_Image_Placeholder\": \"Imej ini mengandungi spoiler\",\n  \"VerticalEmbed_Ribbon\": \"Sale\",\n  \"Audio_Plugin_Elapsed_Time_Slider_AriaLabel\": \"Cari peluncur\",\n  \"VerticalEmbed_Error_Subtitle\": \"This item has been deleted, replace it with another item.\",\n  \"Poll_Viewer_Multiselect_Footer\": \"Anda boleh mengundi lebih daripada satu jawapan.\",\n  \"Audio_Plugin_More_Actions_Button_AriaLabel\": \"Tunjukkan lebih banyak kawalan audio\",\n  \"VerticalEmbed_Booking_Fetch_Error_Title\": \"Failed to load service\",\n  \"Fullscreen_Close_Button_AriaLabel\": \"Tutup\",\n  \"VerticalEmbed_Event_Fetch_Error_Title\": \"Failed to load event\",\n  \"UploadFile_Viewer_Loader\": \"Memuatkan {{fileType}}\",\n  \"Polls_Plugin_User_Avatar_Alt\": \"User avatar\",\n  \"Preview_ReadMore_Label\": \"Baca lebih lanjut\",\n  \"Spoiler_Insert_Tooltip\": \"Spoiler\",\n  \"VerticalEmbed_Product_Fetch_Error_Title\": \"Failed to load product\",\n  \"Fullscreen_Shrink_Button_AriaLabel\": \"Shrink\",\n  \"Audio_Plugin_Volume_Control_Slider_AriaLabel\": \"Kelantangan\",\n  \"Spoiler_Reveal_Gallery_Placeholder\": \"Galeri ini mengandungi spoiler\",\n  \"Fullscreen_Expand_Button_AriaLabel\": \"Expand\",\n  \"VerticalEmbed_Bookings_Button\": \"Tempah Sekarang\",\n  \"Audio_Plugin_Volume_Control_Unmute_AriaLabel\": \"Nyahbisukan\",\n  \"Spoiler_Reveal_Gallery_CTA\": \"Dedahkan Galeri\",\n  \"Poll_Viewer_ShowLess_CTA\": \"Tunjukkan kurang\",\n  \"VerticalEmbed_Disabled_Button_Tooltip\": \"Product page will be available once you publish your site.\",\n  \"Audio_Plugin_Volume_Control_Mute_AriaLabel\": \"Bisukan\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Anonymous\": \"+{{anonNumber}} tanpa nama\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_CTA_Follow\": \"Ikut\",\n  \"VerticalEmbed_Products_Button\": \"Beli Sekarang\",\n  \"Poll_Viewer_Toast_Error_ServerDown\": \"Tidak dapat menyambung ke pelayan. Cuba lagi kemudian.\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Header\": \"{{count}} individu telah mengundi jawapan ini\",\n  \"Poll_Viewer_VoteCount\": \"{{number}} undian\",\n  \"VerticalEmbed_Events_Button\": \"Daftar Sekarang\",\n  \"Spoiler_Reveal_Image_CTA\": \"Dedahkan Imej\",\n  \"Poll_Viewer_Toast_Error_Connection\": \"Tanpa internet. Semak sambungan anda.\",\n  \"Poll_Viewer_Visibility_Owner_Footer\": \"Hanya anda yang dapat melihat keputusannya.\",\n  \"VerticalEmbed_Booking_Error_Title\": \"Service deleted\",\n  \"VerticalEmbed_Product_Error_Title\": \"Product deleted\",\n  \"VerticalEmbed_Fetch_Error_Subtitle\": \"Unable to load item information.\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Header_plural\": \"{{count}} orang telah mengundi jawapan ini\",\n  \"VerticalEmbed_Event_Error_Title\": \"Event deleted\",\n  \"CollapsibleListPlugin_ExpandButton_AriaLabel\": \"Item dikembangkan\",\n  \"Audio_Plugin_Cover_Alt\": \"Audio cover\",\n  \"Spoiler_Reveal_Video_Placeholder\": \"Video ini mengadungi spoiler\",\n  \"VerticalEmbed_Product_Fetch_Error_Subtitle\": \"Unable to load product information.\",\n  \"VerticalEmbed_Fetch_Error_Title\": \"Failed to load item\",\n  \"Poll_Viewer_Option_AriaLabel_Unchecked\": \"unchecked\",\n  \"VerticalEmbed_Product_Error_Subtitle\": \"This product has been deleted, replace it with another product.\",\n  \"VerticalEmbed_Booking_Error_Subtitle\": \"This service has been deleted, replace it with another service.\",\n  \"Preview_SeeFullPost_Label\": \"Lihat siaran penuh\",\n  \"UploadFile_Viewer_Download\": \"Muat turun {{fileType}}\",\n  \"VerticalEmbed_Units_Hour\": \"{{jam}}j\",\n  \"VerticalEmbed_Units_Minute\": \"{{minit}}min\",\n  \"VerticalEmbed_Event_Fetch_Error_Subtitle\": \"Unable to load event information.\",\n  \"VerticalEmbed_Error_Button\": \"Replace\",\n  \"VerticalEmbed_Error_Title\": \"Item deleted\",\n  \"VerticalEmbed_Booking_Fetch_Error_Subtitle\": \"Unable to load service information.\",\n  \"Poll_Viewer_Option_AriaLabel_Checked\": \"checked\"\n}\n","{\n  \"Poll_Viewer_VoteCount_Modal_Voters_Private_Voter\": \"Private User\",\n  \"Poll_Viewer_ShowAllOptions_CTA\": \"Alle opties bekijken\",\n  \"Spoiler_Reveal_Tooltip\": \"Klik om te onthullen\",\n  \"VerticalEmbed_Event_Error_Subtitle\": \"Dit evenement is verwijderd, vervang het door een ander evenement.\",\n  \"Viewer_Toolbar_Twitter_Tooltip\": \"Tweet dit\",\n  \"CollapsibleListPlugin_CollapseButton_AriaLabel\": \"Item is samengevouwen\",\n  \"Spoiler_Reveal_Video_CTA\": \"Video laten zien\",\n  \"VerticalEmbed_Pricing_Plan\": \"Alleen abonnement\",\n  \"Image_Expand_Button_AriaLabel\": \"Afbeelding uitvouwen\",\n  \"VerticalEmbed_From_Price\": \"Van\",\n  \"Poll_Viewer_ShowAllResults_CTA\": \"Bekijk alle resultaten\",\n  \"Spoiler_Reveal_Image_Placeholder\": \"Deze afbeelding bevat een spoiler\",\n  \"VerticalEmbed_Ribbon\": \"Uitverkoop\",\n  \"Audio_Plugin_Elapsed_Time_Slider_AriaLabel\": \"Schuifregelaar zoeken\",\n  \"VerticalEmbed_Error_Subtitle\": \"Dit item is verwijderd, vervang het door een ander item.\",\n  \"Poll_Viewer_Multiselect_Footer\": \"Je kunt stemmen op meer dan één antwoord.\",\n  \"Audio_Plugin_More_Actions_Button_AriaLabel\": \"Meer audiobediening weergeven\",\n  \"VerticalEmbed_Booking_Fetch_Error_Title\": \"Dienst kon niet geladen worden\",\n  \"Fullscreen_Close_Button_AriaLabel\": \"Sluiten\",\n  \"VerticalEmbed_Event_Fetch_Error_Title\": \"Evenement kon niet geladen worden\",\n  \"UploadFile_Viewer_Loader\": \"Bezig met laden {{fileType}}\",\n  \"Polls_Plugin_User_Avatar_Alt\": \"Avatar van gebruiker\",\n  \"Preview_ReadMore_Label\": \"Meer lezen\",\n  \"Spoiler_Insert_Tooltip\": \"Spoiler\",\n  \"VerticalEmbed_Product_Fetch_Error_Title\": \"Product kon niet geladen worden\",\n  \"Fullscreen_Shrink_Button_AriaLabel\": \"Shrink\",\n  \"Audio_Plugin_Volume_Control_Slider_AriaLabel\": \"Volume\",\n  \"Spoiler_Reveal_Gallery_Placeholder\": \"Deze galerij bevat een spoiler\",\n  \"Fullscreen_Expand_Button_AriaLabel\": \"Uitvouwen\",\n  \"VerticalEmbed_Bookings_Button\": \"Nu boeken\",\n  \"Audio_Plugin_Volume_Control_Unmute_AriaLabel\": \"Dempen opheffen\",\n  \"Spoiler_Reveal_Gallery_CTA\": \"Galerij laten zien\",\n  \"Poll_Viewer_ShowLess_CTA\": \"Minder weergeven\",\n  \"VerticalEmbed_Disabled_Button_Tooltip\": \"Product page will be available once you publish your site.\",\n  \"Audio_Plugin_Volume_Control_Mute_AriaLabel\": \"Dempen\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Anonymous\": \"+{{anonNumber}} anonieme\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_CTA_Follow\": \"Volgen\",\n  \"VerticalEmbed_Products_Button\": \"Nu kopen\",\n  \"Poll_Viewer_Toast_Error_ServerDown\": \"Er kan geen verbinding worden gemaakt met de server. Probeer het later opnieuw.\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Header\": \"{{count}} persoon heeft op dit antwoord gestemd\",\n  \"Poll_Viewer_VoteCount\": \"{{number}} stemmen\",\n  \"VerticalEmbed_Events_Button\": \"Nu registreren\",\n  \"Spoiler_Reveal_Image_CTA\": \"Afbeelding laten zien\",\n  \"Poll_Viewer_Toast_Error_Connection\": \"Geen internet. Controleer je verbinding.\",\n  \"Poll_Viewer_Visibility_Owner_Footer\": \"Alleen jij kunt de resultaten zien.\",\n  \"VerticalEmbed_Booking_Error_Title\": \"Dienst verwijderd\",\n  \"VerticalEmbed_Product_Error_Title\": \"Product verwijderd\",\n  \"VerticalEmbed_Fetch_Error_Subtitle\": \"Kan itemgegevens niet laden.\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Header_plural\": \"{{count}} mensen hebben op dit antwoord gestemd\",\n  \"VerticalEmbed_Event_Error_Title\": \"Evenement verwijderd\",\n  \"CollapsibleListPlugin_ExpandButton_AriaLabel\": \"Item is uitgevouwen\",\n  \"Audio_Plugin_Cover_Alt\": \"Audio cover\",\n  \"Spoiler_Reveal_Video_Placeholder\": \"Deze video bevat een spoiler\",\n  \"VerticalEmbed_Product_Fetch_Error_Subtitle\": \"Er is een technisch probleem opgetreden. Controleer je internetverbinding of probeer het opnieuw.\",\n  \"VerticalEmbed_Fetch_Error_Title\": \"Item laden mislukt\",\n  \"Poll_Viewer_Option_AriaLabel_Unchecked\": \"unchecked\",\n  \"VerticalEmbed_Product_Error_Subtitle\": \"Dit product is verwijderd, vervang het door een ander product.\",\n  \"VerticalEmbed_Booking_Error_Subtitle\": \"Deze dienst is verwijderd, vervang hem door een andere dienst.\",\n  \"Preview_SeeFullPost_Label\": \"Bekijk volledige post\",\n  \"UploadFile_Viewer_Download\": \"Download {{fileType}}\",\n  \"VerticalEmbed_Units_Hour\": \"{{uur}}u\",\n  \"VerticalEmbed_Units_Minute\": \"{{minuten}}min\",\n  \"VerticalEmbed_Event_Fetch_Error_Subtitle\": \"Er is een technisch probleem opgetreden. Controleer je internetverbinding of probeer het opnieuw.\",\n  \"VerticalEmbed_Error_Button\": \"Vervangen\",\n  \"VerticalEmbed_Error_Title\": \"Item verwijderd\",\n  \"VerticalEmbed_Booking_Fetch_Error_Subtitle\": \"Er is een technisch probleem opgetreden. Controleer je internetverbinding of probeer het opnieuw.\",\n  \"Poll_Viewer_Option_AriaLabel_Checked\": \"checked\"\n}\n","{\n  \"Poll_Viewer_VoteCount_Modal_Voters_Private_Voter\": \"Private User\",\n  \"Poll_Viewer_ShowAllOptions_CTA\": \"Se alle alternativer\",\n  \"Spoiler_Reveal_Tooltip\": \"Klikk for å avsløre\",\n  \"VerticalEmbed_Event_Error_Subtitle\": \"Dette arrangementet er slettet, og erstatt det med et annet.\",\n  \"Viewer_Toolbar_Twitter_Tooltip\": \"Tweet dette\",\n  \"CollapsibleListPlugin_CollapseButton_AriaLabel\": \"Element er skjult\",\n  \"Spoiler_Reveal_Video_CTA\": \"Avslør video\",\n  \"VerticalEmbed_Pricing_Plan\": \"Kun pakke\",\n  \"Image_Expand_Button_AriaLabel\": \"Utvid bildet\",\n  \"VerticalEmbed_From_Price\": \"Fra\",\n  \"Poll_Viewer_ShowAllResults_CTA\": \"Se alle resultater\",\n  \"Spoiler_Reveal_Image_Placeholder\": \"Dette bildet inneholder en spoiler\",\n  \"VerticalEmbed_Ribbon\": \"Salg\",\n  \"Audio_Plugin_Elapsed_Time_Slider_AriaLabel\": \"Glidebryter for søk\",\n  \"VerticalEmbed_Error_Subtitle\": \"Dette elementet er slettet, erstatt det med et annet.\",\n  \"Poll_Viewer_Multiselect_Footer\": \"Du kan stemme på mer enn ett svar.\",\n  \"Audio_Plugin_More_Actions_Button_AriaLabel\": \"Vis flere lydkontroller\",\n  \"VerticalEmbed_Booking_Fetch_Error_Title\": \"Tjenesten kunne ikke lastes inn\",\n  \"Fullscreen_Close_Button_AriaLabel\": \"Lukk\",\n  \"VerticalEmbed_Event_Fetch_Error_Title\": \"Arrangementet kunne ikke lastes inn\",\n  \"UploadFile_Viewer_Loader\": \"Laster inn {{fileType}}\",\n  \"Polls_Plugin_User_Avatar_Alt\": \"Brukeravatar\",\n  \"Preview_ReadMore_Label\": \"Les mer\",\n  \"Spoiler_Insert_Tooltip\": \"Sensurfilter\",\n  \"VerticalEmbed_Product_Fetch_Error_Title\": \"Produktet kunne ikke lastes inn\",\n  \"Fullscreen_Shrink_Button_AriaLabel\": \"Krymp\",\n  \"Audio_Plugin_Volume_Control_Slider_AriaLabel\": \"Volum\",\n  \"Spoiler_Reveal_Gallery_Placeholder\": \"Dette galleriet inneholder en spoiler\",\n  \"Fullscreen_Expand_Button_AriaLabel\": \"Utvid\",\n  \"VerticalEmbed_Bookings_Button\": \"Book nå\",\n  \"Audio_Plugin_Volume_Control_Unmute_AriaLabel\": \"Opphev demping\",\n  \"Spoiler_Reveal_Gallery_CTA\": \"Avslør galleri\",\n  \"Poll_Viewer_ShowLess_CTA\": \"Vis mindre\",\n  \"VerticalEmbed_Disabled_Button_Tooltip\": \"Product page will be available once you publish your site.\",\n  \"Audio_Plugin_Volume_Control_Mute_AriaLabel\": \"Demp\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Anonymous\": \"+{{anonNumber}} anonyme\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_CTA_Follow\": \"Følg\",\n  \"VerticalEmbed_Products_Button\": \"Kjøp nå\",\n  \"Poll_Viewer_Toast_Error_ServerDown\": \"Kunne ikke koble til server. Prøv igjen senere.\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Header\": \"{{count}} person stemte på dette svaret\",\n  \"Poll_Viewer_VoteCount\": \"{{number}} stemmer\",\n  \"VerticalEmbed_Events_Button\": \"Registrer deg nå\",\n  \"Spoiler_Reveal_Image_CTA\": \"Avslør bilde\",\n  \"Poll_Viewer_Toast_Error_Connection\": \"Ikke noe internett. Sjekk tilkoblingen din.\",\n  \"Poll_Viewer_Visibility_Owner_Footer\": \"Kun du kan se resultatene.\",\n  \"VerticalEmbed_Booking_Error_Title\": \"Tjeneste slettet\",\n  \"VerticalEmbed_Product_Error_Title\": \"Produkt slettet\",\n  \"VerticalEmbed_Fetch_Error_Subtitle\": \"Kan ikke laste inn vareinformasjon.\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Header_plural\": \"{{count}} personer stemte på dette svaret\",\n  \"VerticalEmbed_Event_Error_Title\": \"Arrangementet er slettet.\",\n  \"CollapsibleListPlugin_ExpandButton_AriaLabel\": \"Element er utvidet\",\n  \"Audio_Plugin_Cover_Alt\": \"Lyddeksel\",\n  \"Spoiler_Reveal_Video_Placeholder\": \"Denne videoen inneholder en spoiler\",\n  \"VerticalEmbed_Product_Fetch_Error_Subtitle\": \"Det oppstod et teknisk problem. Sjekk tilkoblingen og prøv igjen.\",\n  \"VerticalEmbed_Fetch_Error_Title\": \"Kunne ikke laste inn elementet\",\n  \"Poll_Viewer_Option_AriaLabel_Unchecked\": \"unchecked\",\n  \"VerticalEmbed_Product_Error_Subtitle\": \"Dette produktet er slettet, erstatt det med et annet produkt.\",\n  \"VerticalEmbed_Booking_Error_Subtitle\": \"Denne tjenesten er slettet, og erstatt den med en annen tjeneste.\",\n  \"Preview_SeeFullPost_Label\": \"Se hele innlegget\",\n  \"UploadFile_Viewer_Download\": \"Last ned {{fileType}}\",\n  \"VerticalEmbed_Units_Hour\": \"{{hours}}t\",\n  \"VerticalEmbed_Units_Minute\": \"{{minutes}}min\",\n  \"VerticalEmbed_Event_Fetch_Error_Subtitle\": \"Det oppstod et teknisk problem. Sjekk tilkoblingen og prøv igjen.\",\n  \"VerticalEmbed_Error_Button\": \"Erstatt\",\n  \"VerticalEmbed_Error_Title\": \"Elementet er slettet\",\n  \"VerticalEmbed_Booking_Fetch_Error_Subtitle\": \"Det oppstod et teknisk problem. Sjekk tilkoblingen og prøv igjen.\",\n  \"Poll_Viewer_Option_AriaLabel_Checked\": \"checked\"\n}\n","{\n  \"Poll_Viewer_VoteCount_Modal_Voters_Private_Voter\": \"Private User\",\n  \"Poll_Viewer_ShowAllOptions_CTA\": \"Zobacz wszystkie opcje\",\n  \"Spoiler_Reveal_Tooltip\": \"Kliknij, aby pokazać\",\n  \"VerticalEmbed_Event_Error_Subtitle\": \"To wydarzenie zostało usunięte, zastąp je innym wydarzeniem.\",\n  \"Viewer_Toolbar_Twitter_Tooltip\": \"Tweetnij to\",\n  \"CollapsibleListPlugin_CollapseButton_AriaLabel\": \"Element jest zwinięty\",\n  \"Spoiler_Reveal_Video_CTA\": \"Pokaż film\",\n  \"VerticalEmbed_Pricing_Plan\": \"Tylko plan\",\n  \"Image_Expand_Button_AriaLabel\": \"Rozwiń obraz\",\n  \"VerticalEmbed_From_Price\": \"Od\",\n  \"Poll_Viewer_ShowAllResults_CTA\": \"Zobacz wszystkie wyniki\",\n  \"Spoiler_Reveal_Image_Placeholder\": \"Ten obraz zawiera spoiler\",\n  \"VerticalEmbed_Ribbon\": \"Rabat\",\n  \"Audio_Plugin_Elapsed_Time_Slider_AriaLabel\": \"Suwak wyszukiwania\",\n  \"VerticalEmbed_Error_Subtitle\": \"Ten element został usunięty, zastąp go innym elementem.\",\n  \"Poll_Viewer_Multiselect_Footer\": \"Możesz głosować na więcej niż jedną odpowiedź.\",\n  \"Audio_Plugin_More_Actions_Button_AriaLabel\": \"Pokaż więcej elementów sterujących dźwiękiem\",\n  \"VerticalEmbed_Booking_Fetch_Error_Title\": \"Nie można załadować usługi\",\n  \"Fullscreen_Close_Button_AriaLabel\": \"Zamknij\",\n  \"VerticalEmbed_Event_Fetch_Error_Title\": \"Nie można załadować wydarzenia\",\n  \"UploadFile_Viewer_Loader\": \"Ładowanie {{fileType}}\",\n  \"Polls_Plugin_User_Avatar_Alt\": \"Awatar użytkownika\",\n  \"Preview_ReadMore_Label\": \"Przeczytaj więcej\",\n  \"Spoiler_Insert_Tooltip\": \"Spojler\",\n  \"VerticalEmbed_Product_Fetch_Error_Title\": \"Nie można załadować produktu\",\n  \"Fullscreen_Shrink_Button_AriaLabel\": \"Zmniejsz\",\n  \"Audio_Plugin_Volume_Control_Slider_AriaLabel\": \"Ilość\",\n  \"Spoiler_Reveal_Gallery_Placeholder\": \"Ta galeria zawiera spoiler\",\n  \"Fullscreen_Expand_Button_AriaLabel\": \"Rozszerz\",\n  \"VerticalEmbed_Bookings_Button\": \"Zarezerwuj teraz\",\n  \"Audio_Plugin_Volume_Control_Unmute_AriaLabel\": \"Wyłącz wyciszenie\",\n  \"Spoiler_Reveal_Gallery_CTA\": \"Pokaż galerię\",\n  \"Poll_Viewer_ShowLess_CTA\": \"Pokaż mniej\",\n  \"VerticalEmbed_Disabled_Button_Tooltip\": \"Product page will be available once you publish your site.\",\n  \"Audio_Plugin_Volume_Control_Mute_AriaLabel\": \"Wycisz\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Anonymous\": \"+{{anonNumber}} anonimowych\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_CTA_Follow\": \"Obserwuj\",\n  \"VerticalEmbed_Products_Button\": \"Kup teraz\",\n  \"Poll_Viewer_Toast_Error_ServerDown\": \"Nie można połączyć się z serwerem. Spróbuj ponownie później.\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Header\": \"{{count}} osoba głosowała na tę odpowiedź\",\n  \"Poll_Viewer_VoteCount\": \"{{number}} głosy(ów)\",\n  \"VerticalEmbed_Events_Button\": \"Zarejestruj się teraz\",\n  \"Spoiler_Reveal_Image_CTA\": \"Pokaż obraz\",\n  \"Poll_Viewer_Toast_Error_Connection\": \"Brak internetu. Sprawdź połączenie.\",\n  \"Poll_Viewer_Visibility_Owner_Footer\": \"Tylko ty możesz zobaczyć wyniki.\",\n  \"VerticalEmbed_Booking_Error_Title\": \"Usługa została usunięta\",\n  \"VerticalEmbed_Product_Error_Title\": \"Produkt został usunięty\",\n  \"VerticalEmbed_Fetch_Error_Subtitle\": \"Nie można załadować informacji o elemencie.\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Header_plural\": \"{{count}} osób głosowało na tę odpowiedź\",\n  \"VerticalEmbed_Event_Error_Title\": \"Wydarzenie zostało usunięte\",\n  \"CollapsibleListPlugin_ExpandButton_AriaLabel\": \"Element jest rozwinięty\",\n  \"Audio_Plugin_Cover_Alt\": \"Okładka audio\",\n  \"Spoiler_Reveal_Video_Placeholder\": \"Ten film zawiera spoiler\",\n  \"VerticalEmbed_Product_Fetch_Error_Subtitle\": \"Wystąpił problem techniczny. Sprawdź połączenie i spróbuj ponownie.\",\n  \"VerticalEmbed_Fetch_Error_Title\": \"Nie udało się załadować elementu\",\n  \"Poll_Viewer_Option_AriaLabel_Unchecked\": \"unchecked\",\n  \"VerticalEmbed_Product_Error_Subtitle\": \"Ten produkt został usunięty, zastąp go innym produktem.\",\n  \"VerticalEmbed_Booking_Error_Subtitle\": \"Ta usługa została usunięta, zastąp ją inną usługą.\",\n  \"Preview_SeeFullPost_Label\": \"Zobacz cały post\",\n  \"UploadFile_Viewer_Download\": \"Pobierz {{fileType}}\",\n  \"VerticalEmbed_Units_Hour\": \"{{hours}}h\",\n  \"VerticalEmbed_Units_Minute\": \"{{minutes}}min\",\n  \"VerticalEmbed_Event_Fetch_Error_Subtitle\": \"Wystąpił problem techniczny. Sprawdź połączenie i spróbuj ponownie.\",\n  \"VerticalEmbed_Error_Button\": \"Zastąp\",\n  \"VerticalEmbed_Error_Title\": \"Element został usunięty\",\n  \"VerticalEmbed_Booking_Fetch_Error_Subtitle\": \"Wystąpił problem techniczny. Sprawdź połączenie i spróbuj ponownie.\",\n  \"Poll_Viewer_Option_AriaLabel_Checked\": \"checked\"\n}\n","{\n  \"Poll_Viewer_VoteCount_Modal_Voters_Private_Voter\": \"Private User\",\n  \"Poll_Viewer_ShowAllOptions_CTA\": \"Ver todas as opções\",\n  \"Spoiler_Reveal_Tooltip\": \"Clique para mostrar\",\n  \"VerticalEmbed_Event_Error_Subtitle\": \"Este evento foi excluído. Substitua-o por outro evento.\",\n  \"Viewer_Toolbar_Twitter_Tooltip\": \"Tweetar isso\",\n  \"CollapsibleListPlugin_CollapseButton_AriaLabel\": \"Item oculto\",\n  \"Spoiler_Reveal_Video_CTA\": \"Revelar vídeo\",\n  \"VerticalEmbed_Pricing_Plan\": \"Apenas plano\",\n  \"Image_Expand_Button_AriaLabel\": \"Expandir imagem\",\n  \"VerticalEmbed_From_Price\": \"De\",\n  \"Poll_Viewer_ShowAllResults_CTA\": \"Ver todos os resultados\",\n  \"Spoiler_Reveal_Image_Placeholder\": \"Essa imagem contém um spoiler\",\n  \"VerticalEmbed_Ribbon\": \"Promoção\",\n  \"Audio_Plugin_Elapsed_Time_Slider_AriaLabel\": \"Slider de busca\",\n  \"VerticalEmbed_Error_Subtitle\": \"Este item foi excluído. Substitua-o por outro item.\",\n  \"Poll_Viewer_Multiselect_Footer\": \"Você pode votar em mais de uma resposta.\",\n  \"Audio_Plugin_More_Actions_Button_AriaLabel\": \"Mostrar mais controles de áudio\",\n  \"VerticalEmbed_Booking_Fetch_Error_Title\": \"Não foi possível carregar o serviço\",\n  \"Fullscreen_Close_Button_AriaLabel\": \"Fechar\",\n  \"VerticalEmbed_Event_Fetch_Error_Title\": \"Não foi possível carregar o evento\",\n  \"UploadFile_Viewer_Loader\": \"Carregando {{fileType}}\",\n  \"Polls_Plugin_User_Avatar_Alt\": \"Avatar do usuário\",\n  \"Preview_ReadMore_Label\": \"Leia mais\",\n  \"Spoiler_Insert_Tooltip\": \"Spoiler\",\n  \"VerticalEmbed_Product_Fetch_Error_Title\": \"Não foi possível carregar o produto\",\n  \"Fullscreen_Shrink_Button_AriaLabel\": \"Encolher\",\n  \"Audio_Plugin_Volume_Control_Slider_AriaLabel\": \"Volume\",\n  \"Spoiler_Reveal_Gallery_Placeholder\": \"Essa galeria contém um spoiler\",\n  \"Fullscreen_Expand_Button_AriaLabel\": \"Expandir\",\n  \"VerticalEmbed_Bookings_Button\": \"Agendar\",\n  \"Audio_Plugin_Volume_Control_Unmute_AriaLabel\": \"Ativar áudio\",\n  \"Spoiler_Reveal_Gallery_CTA\": \"Revelar galeria\",\n  \"Poll_Viewer_ShowLess_CTA\": \"Mostrar menos\",\n  \"VerticalEmbed_Disabled_Button_Tooltip\": \"Product page will be available once you publish your site.\",\n  \"Audio_Plugin_Volume_Control_Mute_AriaLabel\": \"Silenciar\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Anonymous\": \"Mais {{anonNumber}} anônimos\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_CTA_Follow\": \"Seguir\",\n  \"VerticalEmbed_Products_Button\": \"Comprar\",\n  \"Poll_Viewer_Toast_Error_ServerDown\": \"Não foi possível conectar ao servidor. Tente novamente mais tarde.\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Header\": \"{{count}} pessoa votou nessa resposta\",\n  \"Poll_Viewer_VoteCount\": \"{{number}} votos\",\n  \"VerticalEmbed_Events_Button\": \"Registrar-se\",\n  \"Spoiler_Reveal_Image_CTA\": \"Revelar imagem\",\n  \"Poll_Viewer_Toast_Error_Connection\": \"Sem internet. Verifique sua conexão.\",\n  \"Poll_Viewer_Visibility_Owner_Footer\": \"Só você pode ver os resultados.\",\n  \"VerticalEmbed_Booking_Error_Title\": \"Serviço excluído\",\n  \"VerticalEmbed_Product_Error_Title\": \"Produto excluído\",\n  \"VerticalEmbed_Fetch_Error_Subtitle\": \"Não foi possível carregar as informações do item.\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Header_plural\": \"{{count}} pessoas votaram nessa resposta\",\n  \"VerticalEmbed_Event_Error_Title\": \"Evento excluído\",\n  \"CollapsibleListPlugin_ExpandButton_AriaLabel\": \"Item expandido\",\n  \"Audio_Plugin_Cover_Alt\": \"Capa de áudio\",\n  \"Spoiler_Reveal_Video_Placeholder\": \"Esse vídeo contém um spoiler\",\n  \"VerticalEmbed_Product_Fetch_Error_Subtitle\": \"Houve um problema técnico. Verifique sua conexão e tente novamente.\",\n  \"VerticalEmbed_Fetch_Error_Title\": \"Falha ao carregar o item\",\n  \"Poll_Viewer_Option_AriaLabel_Unchecked\": \"unchecked\",\n  \"VerticalEmbed_Product_Error_Subtitle\": \"Este produto foi excluído. Substitua-o por outro produto.\",\n  \"VerticalEmbed_Booking_Error_Subtitle\": \"Este serviço foi excluído. substitua-o por outro serviço.\",\n  \"Preview_SeeFullPost_Label\": \"Ver post completo\",\n  \"UploadFile_Viewer_Download\": \"Fazer download de {{fileType}}\",\n  \"VerticalEmbed_Units_Hour\": \"{{hours}}h\",\n  \"VerticalEmbed_Units_Minute\": \"{{minutes}}min\",\n  \"VerticalEmbed_Event_Fetch_Error_Subtitle\": \"Houve um problema técnico. Verifique sua conexão e tente novamente.\",\n  \"VerticalEmbed_Error_Button\": \"Substituir\",\n  \"VerticalEmbed_Error_Title\": \"Item excluído\",\n  \"VerticalEmbed_Booking_Fetch_Error_Subtitle\": \"Houve um problema técnico. Verifique sua conexão e tente novamente.\",\n  \"Poll_Viewer_Option_AriaLabel_Checked\": \"checked\"\n}\n","{\n  \"Poll_Viewer_VoteCount_Modal_Voters_Private_Voter\": \"Private User\",\n  \"Poll_Viewer_ShowAllOptions_CTA\": \"Vezi toate opțiunile\",\n  \"Spoiler_Reveal_Tooltip\": \"Dă clic pentru a afișa\",\n  \"VerticalEmbed_Event_Error_Subtitle\": \"This event has been deleted, replace it with another event.\",\n  \"Viewer_Toolbar_Twitter_Tooltip\": \"Publică pe Twitter\",\n  \"CollapsibleListPlugin_CollapseButton_AriaLabel\": \"Elementul este restrâns\",\n  \"Spoiler_Reveal_Video_CTA\": \"Afișează videoclipul\",\n  \"VerticalEmbed_Pricing_Plan\": \"Plan only\",\n  \"Image_Expand_Button_AriaLabel\": \"Extinde imaginea\",\n  \"VerticalEmbed_From_Price\": \"From\",\n  \"Poll_Viewer_ShowAllResults_CTA\": \"Vezi toate rezultatele\",\n  \"Spoiler_Reveal_Image_Placeholder\": \"Această imagine conține un spoiler\",\n  \"VerticalEmbed_Ribbon\": \"Sale\",\n  \"Audio_Plugin_Elapsed_Time_Slider_AriaLabel\": \"Glisor de navigare\",\n  \"VerticalEmbed_Error_Subtitle\": \"This item has been deleted, replace it with another item.\",\n  \"Poll_Viewer_Multiselect_Footer\": \"Poți vota pentru mai multe răspunsuri.\",\n  \"Audio_Plugin_More_Actions_Button_AriaLabel\": \"Afișează mai multe comenzi de sunet\",\n  \"VerticalEmbed_Booking_Fetch_Error_Title\": \"Failed to load service\",\n  \"Fullscreen_Close_Button_AriaLabel\": \"Închide\",\n  \"VerticalEmbed_Event_Fetch_Error_Title\": \"Failed to load event\",\n  \"UploadFile_Viewer_Loader\": \"Se încarcă {{fileType}}\",\n  \"Polls_Plugin_User_Avatar_Alt\": \"User avatar\",\n  \"Preview_ReadMore_Label\": \"Citește mai mult\",\n  \"Spoiler_Insert_Tooltip\": \"Spoiler\",\n  \"VerticalEmbed_Product_Fetch_Error_Title\": \"Failed to load product\",\n  \"Fullscreen_Shrink_Button_AriaLabel\": \"Shrink\",\n  \"Audio_Plugin_Volume_Control_Slider_AriaLabel\": \"Volum\",\n  \"Spoiler_Reveal_Gallery_Placeholder\": \"Această galerie conține un spoiler\",\n  \"Fullscreen_Expand_Button_AriaLabel\": \"Expand\",\n  \"VerticalEmbed_Bookings_Button\": \"Rezervă acum\",\n  \"Audio_Plugin_Volume_Control_Unmute_AriaLabel\": \"Dezactivează modul silențios\",\n  \"Spoiler_Reveal_Gallery_CTA\": \"Afișează Galeria\",\n  \"Poll_Viewer_ShowLess_CTA\": \"Afișează mai puțin\",\n  \"VerticalEmbed_Disabled_Button_Tooltip\": \"Product page will be available once you publish your site.\",\n  \"Audio_Plugin_Volume_Control_Mute_AriaLabel\": \"Activează modul silențios\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Anonymous\": \"+ {{anonNumber}} anonimi\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_CTA_Follow\": \"Urmărește\",\n  \"VerticalEmbed_Products_Button\": \"Cumpără acum\",\n  \"Poll_Viewer_Toast_Error_ServerDown\": \"Nu s-a putut conecta la server. Încearcă mai târziu.\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Header\": \"{{count}} persoană a votat pentru acest răspuns\",\n  \"Poll_Viewer_VoteCount\": \"{{number}} voturi\",\n  \"VerticalEmbed_Events_Button\": \"Înregistrează-te acum\",\n  \"Spoiler_Reveal_Image_CTA\": \"Afișează imaginea\",\n  \"Poll_Viewer_Toast_Error_Connection\": \"Fără conexiune la internet. Verifică-ți conexiunea.\",\n  \"Poll_Viewer_Visibility_Owner_Footer\": \"Doar tu poți vedea rezultatele.\",\n  \"VerticalEmbed_Booking_Error_Title\": \"Service deleted\",\n  \"VerticalEmbed_Product_Error_Title\": \"Product deleted\",\n  \"VerticalEmbed_Fetch_Error_Subtitle\": \"Unable to load item information.\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Header_plural\": \"{{count}} persoane au votat pentru acest răspuns\",\n  \"VerticalEmbed_Event_Error_Title\": \"Event deleted\",\n  \"CollapsibleListPlugin_ExpandButton_AriaLabel\": \"Elementul este expandat\",\n  \"Audio_Plugin_Cover_Alt\": \"Audio cover\",\n  \"Spoiler_Reveal_Video_Placeholder\": \"Acest videoclip conține un spoiler\",\n  \"VerticalEmbed_Product_Fetch_Error_Subtitle\": \"Unable to load product information.\",\n  \"VerticalEmbed_Fetch_Error_Title\": \"Failed to load item\",\n  \"Poll_Viewer_Option_AriaLabel_Unchecked\": \"unchecked\",\n  \"VerticalEmbed_Product_Error_Subtitle\": \"This product has been deleted, replace it with another product.\",\n  \"VerticalEmbed_Booking_Error_Subtitle\": \"This service has been deleted, replace it with another service.\",\n  \"Preview_SeeFullPost_Label\": \"Vezi toată postarea\",\n  \"UploadFile_Viewer_Download\": \"Descarcă {{fileType}}\",\n  \"VerticalEmbed_Units_Hour\": \"{{hours}} h\",\n  \"VerticalEmbed_Units_Minute\": \"{{minutes}} min\",\n  \"VerticalEmbed_Event_Fetch_Error_Subtitle\": \"Unable to load event information.\",\n  \"VerticalEmbed_Error_Button\": \"Replace\",\n  \"VerticalEmbed_Error_Title\": \"Item deleted\",\n  \"VerticalEmbed_Booking_Fetch_Error_Subtitle\": \"Unable to load service information.\",\n  \"Poll_Viewer_Option_AriaLabel_Checked\": \"checked\"\n}\n","{\n  \"Poll_Viewer_VoteCount_Modal_Voters_Private_Voter\": \"Private User\",\n  \"Poll_Viewer_ShowAllOptions_CTA\": \"Смотреть все варианты\",\n  \"Spoiler_Reveal_Tooltip\": \"Кликните, чтобы раскрыть\",\n  \"VerticalEmbed_Event_Error_Subtitle\": \"Это событие удалено, замените его другим событием.\",\n  \"Viewer_Toolbar_Twitter_Tooltip\": \"Твитнуть\",\n  \"CollapsibleListPlugin_CollapseButton_AriaLabel\": \"Товар в свернутом списке\",\n  \"Spoiler_Reveal_Video_CTA\": \"Показать\",\n  \"VerticalEmbed_Pricing_Plan\": \"Только по абонементу\",\n  \"Image_Expand_Button_AriaLabel\": \"Раскрыть фото\",\n  \"VerticalEmbed_From_Price\": \"От\",\n  \"Poll_Viewer_ShowAllResults_CTA\": \"Смотреть все результаты\",\n  \"Spoiler_Reveal_Image_Placeholder\": \"Изображение содержит спойлер\",\n  \"VerticalEmbed_Ribbon\": \"Скидки\",\n  \"Audio_Plugin_Elapsed_Time_Slider_AriaLabel\": \"Найти слайдер\",\n  \"VerticalEmbed_Error_Subtitle\": \"Этот элемент удален. Замените его другим элементом.\",\n  \"Poll_Viewer_Multiselect_Footer\": \"Вы можете проголосовать за несколько вариантов.\",\n  \"Audio_Plugin_More_Actions_Button_AriaLabel\": \"Показать больше элементов управления аудио\",\n  \"VerticalEmbed_Booking_Fetch_Error_Title\": \"Не удалось загрузить услугу\",\n  \"Fullscreen_Close_Button_AriaLabel\": \"Закрыть\",\n  \"VerticalEmbed_Event_Fetch_Error_Title\": \"Не удалось загрузить событие\",\n  \"UploadFile_Viewer_Loader\": \"Загрузка {{fileType}}\",\n  \"Polls_Plugin_User_Avatar_Alt\": \"Аватар пользователя\",\n  \"Preview_ReadMore_Label\": \"Подробнее\",\n  \"Spoiler_Insert_Tooltip\": \"Спойлер\",\n  \"VerticalEmbed_Product_Fetch_Error_Title\": \"Не удалось загрузить товар\",\n  \"Fullscreen_Shrink_Button_AriaLabel\": \"Уменьшение\",\n  \"Audio_Plugin_Volume_Control_Slider_AriaLabel\": \"Громкость\",\n  \"Spoiler_Reveal_Gallery_Placeholder\": \"В галерее есть спойлер\",\n  \"Fullscreen_Expand_Button_AriaLabel\": \"Раскрыть\",\n  \"VerticalEmbed_Bookings_Button\": \"Забронировать\",\n  \"Audio_Plugin_Volume_Control_Unmute_AriaLabel\": \"Включить\",\n  \"Spoiler_Reveal_Gallery_CTA\": \"Показать\",\n  \"Poll_Viewer_ShowLess_CTA\": \"Свернуть\",\n  \"VerticalEmbed_Disabled_Button_Tooltip\": \"Product page will be available once you publish your site.\",\n  \"Audio_Plugin_Volume_Control_Mute_AriaLabel\": \"Отключить\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Anonymous\": \"+{{anonNumber}} анонимно\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_CTA_Follow\": \"Следить\",\n  \"VerticalEmbed_Products_Button\": \"Купить\",\n  \"Poll_Viewer_Toast_Error_ServerDown\": \"Не удалось подключиться к серверу. Попробуйте позже.\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Header\": \"За этот ответ проголосовали {{count}} чел.\",\n  \"Poll_Viewer_VoteCount\": \"Голосов: {{number}}\",\n  \"VerticalEmbed_Events_Button\": \"Зарегистрироваться\",\n  \"Spoiler_Reveal_Image_CTA\": \"Показать\",\n  \"Poll_Viewer_Toast_Error_Connection\": \"Нет сети. Проверьте соединение.\",\n  \"Poll_Viewer_Visibility_Owner_Footer\": \"Только вы видите результаты.\",\n  \"VerticalEmbed_Booking_Error_Title\": \"Услуга удалена\",\n  \"VerticalEmbed_Product_Error_Title\": \"Товар удален\",\n  \"VerticalEmbed_Fetch_Error_Subtitle\": \"Не удалось загрузить информацию о элементе.\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Header_plural\": \"За этот ответ проголосовали {{count}} чел.\",\n  \"VerticalEmbed_Event_Error_Title\": \"Событие удалено\",\n  \"CollapsibleListPlugin_ExpandButton_AriaLabel\": \"Товар в развернутом списке\",\n  \"Audio_Plugin_Cover_Alt\": \"Обложка аудио\",\n  \"Spoiler_Reveal_Video_Placeholder\": \"Видео содержит спойлер\",\n  \"VerticalEmbed_Product_Fetch_Error_Subtitle\": \"Возникла техническая проблема. Проверьте соединение и попробуйте снова.\",\n  \"VerticalEmbed_Fetch_Error_Title\": \"Не удалось загрузить элемент\",\n  \"Poll_Viewer_Option_AriaLabel_Unchecked\": \"unchecked\",\n  \"VerticalEmbed_Product_Error_Subtitle\": \"Товар удален. Замените его на другой товар.\",\n  \"VerticalEmbed_Booking_Error_Subtitle\": \"Услуга удалена. Замените ее на другую услугу.\",\n  \"Preview_SeeFullPost_Label\": \"Показать весь пост\",\n  \"UploadFile_Viewer_Download\": \"Скачать {{fileType}}\",\n  \"VerticalEmbed_Units_Hour\": \"{{hours}} ч.\",\n  \"VerticalEmbed_Units_Minute\": \"{{minutes}} мин.\",\n  \"VerticalEmbed_Event_Fetch_Error_Subtitle\": \"Возникла техническая проблема. Проверьте соединение и попробуйте снова.\",\n  \"VerticalEmbed_Error_Button\": \"Заменить\",\n  \"VerticalEmbed_Error_Title\": \"Элемент удален\",\n  \"VerticalEmbed_Booking_Fetch_Error_Subtitle\": \"Возникла техническая проблема. Проверьте соединение и попробуйте снова.\",\n  \"Poll_Viewer_Option_AriaLabel_Checked\": \"checked\"\n}\n","{\n  \"Poll_Viewer_VoteCount_Modal_Voters_Private_Voter\": \"Private User\",\n  \"Poll_Viewer_ShowAllOptions_CTA\": \"Zobraziť všetky možnosti\",\n  \"Spoiler_Reveal_Tooltip\": \"Kliknutím odhalíte\",\n  \"VerticalEmbed_Event_Error_Subtitle\": \"This event has been deleted, replace it with another event.\",\n  \"Viewer_Toolbar_Twitter_Tooltip\": \"Tweetujte to\",\n  \"CollapsibleListPlugin_CollapseButton_AriaLabel\": \"Položka je zbalená\",\n  \"Spoiler_Reveal_Video_CTA\": \"Odhaliť video\",\n  \"VerticalEmbed_Pricing_Plan\": \"Plan only\",\n  \"Image_Expand_Button_AriaLabel\": \"Rozbaliť obrázok\",\n  \"VerticalEmbed_From_Price\": \"From\",\n  \"Poll_Viewer_ShowAllResults_CTA\": \"Zobraziť všetky výsledky\",\n  \"Spoiler_Reveal_Image_Placeholder\": \"Tento obrázok obsahuje spojler\",\n  \"VerticalEmbed_Ribbon\": \"Sale\",\n  \"Audio_Plugin_Elapsed_Time_Slider_AriaLabel\": \"Posuvník vyhľadávania\",\n  \"VerticalEmbed_Error_Subtitle\": \"This item has been deleted, replace it with another item.\",\n  \"Poll_Viewer_Multiselect_Footer\": \"Môžete hlasovať za viac ako jednu odpoveď.\",\n  \"Audio_Plugin_More_Actions_Button_AriaLabel\": \"Zobraziť ďalšie ovládacie prvky zvuku\",\n  \"VerticalEmbed_Booking_Fetch_Error_Title\": \"Failed to load service\",\n  \"Fullscreen_Close_Button_AriaLabel\": \"Zatvoriť\",\n  \"VerticalEmbed_Event_Fetch_Error_Title\": \"Failed to load event\",\n  \"UploadFile_Viewer_Loader\": \"Načítanie {{fileType}}\",\n  \"Polls_Plugin_User_Avatar_Alt\": \"User avatar\",\n  \"Preview_ReadMore_Label\": \"Prečítať si viac\",\n  \"Spoiler_Insert_Tooltip\": \"Spojler\",\n  \"VerticalEmbed_Product_Fetch_Error_Title\": \"Failed to load product\",\n  \"Fullscreen_Shrink_Button_AriaLabel\": \"Shrink\",\n  \"Audio_Plugin_Volume_Control_Slider_AriaLabel\": \"Hlasitosť\",\n  \"Spoiler_Reveal_Gallery_Placeholder\": \"Táto galéria obsahuje spojler\",\n  \"Fullscreen_Expand_Button_AriaLabel\": \"Expand\",\n  \"VerticalEmbed_Bookings_Button\": \"Rezervovať teraz\",\n  \"Audio_Plugin_Volume_Control_Unmute_AriaLabel\": \"Zrušiť stlmenie\",\n  \"Spoiler_Reveal_Gallery_CTA\": \"Odhaliť galériu\",\n  \"Poll_Viewer_ShowLess_CTA\": \"Ukázať menej\",\n  \"VerticalEmbed_Disabled_Button_Tooltip\": \"Product page will be available once you publish your site.\",\n  \"Audio_Plugin_Volume_Control_Mute_AriaLabel\": \"Stlmiť\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Anonymous\": \"+ {{anonNumber}} anonymných\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_CTA_Follow\": \"Sledovať\",\n  \"VerticalEmbed_Products_Button\": \"Kúpiť teraz\",\n  \"Poll_Viewer_Toast_Error_ServerDown\": \"Nepodarilo sa pripojiť k serveru. Skúste to znova neskôr.\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Header\": \"Za túto odpoveď hlasoval {{count}}\",\n  \"Poll_Viewer_VoteCount\": \"Počet hlasov: {{number}}\",\n  \"VerticalEmbed_Events_Button\": \"Zaregistrujte sa teraz\",\n  \"Spoiler_Reveal_Image_CTA\": \"Odhaliť obrázok\",\n  \"Poll_Viewer_Toast_Error_Connection\": \"Žiadny internet. Skontrolujte pripojenie.\",\n  \"Poll_Viewer_Visibility_Owner_Footer\": \"Výsledky vidíte iba vy.\",\n  \"VerticalEmbed_Booking_Error_Title\": \"Service deleted\",\n  \"VerticalEmbed_Product_Error_Title\": \"Product deleted\",\n  \"VerticalEmbed_Fetch_Error_Subtitle\": \"Unable to load item information.\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Header_plural\": \"Za túto odpoveď hlasovalo {{count}}\",\n  \"VerticalEmbed_Event_Error_Title\": \"Event deleted\",\n  \"CollapsibleListPlugin_ExpandButton_AriaLabel\": \"Položka je rozbalená\",\n  \"Audio_Plugin_Cover_Alt\": \"Audio cover\",\n  \"Spoiler_Reveal_Video_Placeholder\": \"Toto video obsahuje spojler\",\n  \"VerticalEmbed_Product_Fetch_Error_Subtitle\": \"Unable to load product information.\",\n  \"VerticalEmbed_Fetch_Error_Title\": \"Failed to load item\",\n  \"Poll_Viewer_Option_AriaLabel_Unchecked\": \"unchecked\",\n  \"VerticalEmbed_Product_Error_Subtitle\": \"This product has been deleted, replace it with another product.\",\n  \"VerticalEmbed_Booking_Error_Subtitle\": \"This service has been deleted, replace it with another service.\",\n  \"Preview_SeeFullPost_Label\": \"Zobraziť celý príspevok\",\n  \"UploadFile_Viewer_Download\": \"Stiahnuť {{fileType}}\",\n  \"VerticalEmbed_Units_Hour\": \"{{hours}}h\",\n  \"VerticalEmbed_Units_Minute\": \"{{minutes}}min\",\n  \"VerticalEmbed_Event_Fetch_Error_Subtitle\": \"Unable to load event information.\",\n  \"VerticalEmbed_Error_Button\": \"Replace\",\n  \"VerticalEmbed_Error_Title\": \"Item deleted\",\n  \"VerticalEmbed_Booking_Fetch_Error_Subtitle\": \"Unable to load service information.\",\n  \"Poll_Viewer_Option_AriaLabel_Checked\": \"checked\"\n}\n","{\n  \"Poll_Viewer_VoteCount_Modal_Voters_Private_Voter\": \"Private User\",\n  \"Poll_Viewer_ShowAllOptions_CTA\": \"Ogled vseh možnosti\",\n  \"Spoiler_Reveal_Tooltip\": \"Kliknite za razkritje\",\n  \"VerticalEmbed_Event_Error_Subtitle\": \"This event has been deleted, replace it with another event.\",\n  \"Viewer_Toolbar_Twitter_Tooltip\": \"Objavi na Tweeterju\",\n  \"CollapsibleListPlugin_CollapseButton_AriaLabel\": \"Element je strnjen\",\n  \"Spoiler_Reveal_Video_CTA\": \"Razkrij videoposnetek\",\n  \"VerticalEmbed_Pricing_Plan\": \"Plan only\",\n  \"Image_Expand_Button_AriaLabel\": \"Razširi sliko\",\n  \"VerticalEmbed_From_Price\": \"From\",\n  \"Poll_Viewer_ShowAllResults_CTA\": \"Ogled vseh rezultatov\",\n  \"Spoiler_Reveal_Image_Placeholder\": \"Ta slika vsebuje razkritje\",\n  \"VerticalEmbed_Ribbon\": \"Sale\",\n  \"Audio_Plugin_Elapsed_Time_Slider_AriaLabel\": \"Drsnik iskanja\",\n  \"VerticalEmbed_Error_Subtitle\": \"This item has been deleted, replace it with another item.\",\n  \"Poll_Viewer_Multiselect_Footer\": \"Glasujete lahko za več kot en odgovor.\",\n  \"Audio_Plugin_More_Actions_Button_AriaLabel\": \"Prikaži več kontrolnikov za zvok\",\n  \"VerticalEmbed_Booking_Fetch_Error_Title\": \"Failed to load service\",\n  \"Fullscreen_Close_Button_AriaLabel\": \"Zapri\",\n  \"VerticalEmbed_Event_Fetch_Error_Title\": \"Failed to load event\",\n  \"UploadFile_Viewer_Loader\": \"Nalaganje {{fileType}}\",\n  \"Polls_Plugin_User_Avatar_Alt\": \"User avatar\",\n  \"Preview_ReadMore_Label\": \"Preberi več\",\n  \"Spoiler_Insert_Tooltip\": \"Razkritje\",\n  \"VerticalEmbed_Product_Fetch_Error_Title\": \"Failed to load product\",\n  \"Fullscreen_Shrink_Button_AriaLabel\": \"Shrink\",\n  \"Audio_Plugin_Volume_Control_Slider_AriaLabel\": \"Glasnost\",\n  \"Spoiler_Reveal_Gallery_Placeholder\": \"Ta galerija vsebuje razkritje\",\n  \"Fullscreen_Expand_Button_AriaLabel\": \"Expand\",\n  \"VerticalEmbed_Bookings_Button\": \"Rezerviraj zdaj\",\n  \"Audio_Plugin_Volume_Control_Unmute_AriaLabel\": \"Prekliči utišanje\",\n  \"Spoiler_Reveal_Gallery_CTA\": \"Razkrij galerijo\",\n  \"Poll_Viewer_ShowLess_CTA\": \"Prikaži man\",\n  \"VerticalEmbed_Disabled_Button_Tooltip\": \"Product page will be available once you publish your site.\",\n  \"Audio_Plugin_Volume_Control_Mute_AriaLabel\": \"Utišaj\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Anonymous\": \"+{{anonNumber}} anonimnih\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_CTA_Follow\": \"Sledi\",\n  \"VerticalEmbed_Products_Button\": \"Kupi zdaj\",\n  \"Poll_Viewer_Toast_Error_ServerDown\": \"Ni mogoče vzpostaviti povezave s strežnikom. Poskusite znova pozneje.\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Header\": \"Za ta odgovor je glasovala {{count}} oseba\",\n  \"Poll_Viewer_VoteCount\": \"Število glasov: {{number}}\",\n  \"VerticalEmbed_Events_Button\": \"Registrirajte se zdaj\",\n  \"Spoiler_Reveal_Image_CTA\": \"Razkrij sliko\",\n  \"Poll_Viewer_Toast_Error_Connection\": \"Ni interneta. Preverite povezavo.\",\n  \"Poll_Viewer_Visibility_Owner_Footer\": \"Rezultate si lahko ogledate samo vi.\",\n  \"VerticalEmbed_Booking_Error_Title\": \"Service deleted\",\n  \"VerticalEmbed_Product_Error_Title\": \"Product deleted\",\n  \"VerticalEmbed_Fetch_Error_Subtitle\": \"Unable to load item information.\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Header_plural\": \"Število oseb, ki so glasovale za ta odgovor: {{count}}\",\n  \"VerticalEmbed_Event_Error_Title\": \"Event deleted\",\n  \"CollapsibleListPlugin_ExpandButton_AriaLabel\": \"Element je razširjen\",\n  \"Audio_Plugin_Cover_Alt\": \"Audio cover\",\n  \"Spoiler_Reveal_Video_Placeholder\": \"Ta videoposnetek vsebuje razkritje\",\n  \"VerticalEmbed_Product_Fetch_Error_Subtitle\": \"Unable to load product information.\",\n  \"VerticalEmbed_Fetch_Error_Title\": \"Failed to load item\",\n  \"Poll_Viewer_Option_AriaLabel_Unchecked\": \"unchecked\",\n  \"VerticalEmbed_Product_Error_Subtitle\": \"This product has been deleted, replace it with another product.\",\n  \"VerticalEmbed_Booking_Error_Subtitle\": \"This service has been deleted, replace it with another service.\",\n  \"Preview_SeeFullPost_Label\": \"Ogled celotne objave\",\n  \"UploadFile_Viewer_Download\": \"Prenos {{fileType}}\",\n  \"VerticalEmbed_Units_Hour\": \"{{hours}}h\",\n  \"VerticalEmbed_Units_Minute\": \"{{minutes}} min\",\n  \"VerticalEmbed_Event_Fetch_Error_Subtitle\": \"Unable to load event information.\",\n  \"VerticalEmbed_Error_Button\": \"Replace\",\n  \"VerticalEmbed_Error_Title\": \"Item deleted\",\n  \"VerticalEmbed_Booking_Fetch_Error_Subtitle\": \"Unable to load service information.\",\n  \"Poll_Viewer_Option_AriaLabel_Checked\": \"checked\"\n}\n","{\n  \"Poll_Viewer_VoteCount_Modal_Voters_Private_Voter\": \"Private User\",\n  \"Poll_Viewer_ShowAllOptions_CTA\": \"Se alla alternativ\",\n  \"Spoiler_Reveal_Tooltip\": \"Klicka för att avslöja\",\n  \"VerticalEmbed_Event_Error_Subtitle\": \"Det här evenemanget har tagits bort. Ersätt det med ett annat evenemang.\",\n  \"Viewer_Toolbar_Twitter_Tooltip\": \"Tweeta det här\",\n  \"CollapsibleListPlugin_CollapseButton_AriaLabel\": \"Objektet är minimerat\",\n  \"Spoiler_Reveal_Video_CTA\": \"Visa video\",\n  \"VerticalEmbed_Pricing_Plan\": \"Endast paket\",\n  \"Image_Expand_Button_AriaLabel\": \"Förstora bild\",\n  \"VerticalEmbed_From_Price\": \"Från\",\n  \"Poll_Viewer_ShowAllResults_CTA\": \"Se alla resultat\",\n  \"Spoiler_Reveal_Image_Placeholder\": \"Bilden innehåller en spoiler\",\n  \"VerticalEmbed_Ribbon\": \"Rea\",\n  \"Audio_Plugin_Elapsed_Time_Slider_AriaLabel\": \"Sökreglage\",\n  \"VerticalEmbed_Error_Subtitle\": \"Det här objektet har tagits bort. Ersätt det med ett annat objekt.\",\n  \"Poll_Viewer_Multiselect_Footer\": \"Du kan rösta på mer än ett alternativ.\",\n  \"Audio_Plugin_More_Actions_Button_AriaLabel\": \"Visa fler ljudkontroller\",\n  \"VerticalEmbed_Booking_Fetch_Error_Title\": \"Det gick inte att läsa in tjänsten\",\n  \"Fullscreen_Close_Button_AriaLabel\": \"Stäng\",\n  \"VerticalEmbed_Event_Fetch_Error_Title\": \"Det gick inte att läsa in evenemanget\",\n  \"UploadFile_Viewer_Loader\": \"Läser in {{fileType}}\",\n  \"Polls_Plugin_User_Avatar_Alt\": \"Användaravatar\",\n  \"Preview_ReadMore_Label\": \"Läs mer\",\n  \"Spoiler_Insert_Tooltip\": \"Spoiler\",\n  \"VerticalEmbed_Product_Fetch_Error_Title\": \"Det gick inte att läsa in produkten\",\n  \"Fullscreen_Shrink_Button_AriaLabel\": \"Minimera\",\n  \"Audio_Plugin_Volume_Control_Slider_AriaLabel\": \"Volym\",\n  \"Spoiler_Reveal_Gallery_Placeholder\": \"Galleriet innehåller en spoiler\",\n  \"Fullscreen_Expand_Button_AriaLabel\": \"Förstora\",\n  \"VerticalEmbed_Bookings_Button\": \"Boka nu\",\n  \"Audio_Plugin_Volume_Control_Unmute_AriaLabel\": \"Slå på ljud\",\n  \"Spoiler_Reveal_Gallery_CTA\": \"Visa galleri\",\n  \"Poll_Viewer_ShowLess_CTA\": \"Visa mindre\",\n  \"VerticalEmbed_Disabled_Button_Tooltip\": \"Product page will be available once you publish your site.\",\n  \"Audio_Plugin_Volume_Control_Mute_AriaLabel\": \"Stäng av ljud\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Anonymous\": \"+{{anonNumber}} anonyma\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_CTA_Follow\": \"Följ\",\n  \"VerticalEmbed_Products_Button\": \"Köp nu\",\n  \"Poll_Viewer_Toast_Error_ServerDown\": \"Kunde inte ansluta till servern. Försök igen senare.\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Header\": \"{{count}} person har röstat på det här svaret\",\n  \"Poll_Viewer_VoteCount\": \"{{number}} röster\",\n  \"VerticalEmbed_Events_Button\": \"Registrera dig nu\",\n  \"Spoiler_Reveal_Image_CTA\": \"Visa bild\",\n  \"Poll_Viewer_Toast_Error_Connection\": \"Inget internet. Kontrollera din uppkoppling.\",\n  \"Poll_Viewer_Visibility_Owner_Footer\": \"Det är bara du som kan se resultaten.\",\n  \"VerticalEmbed_Booking_Error_Title\": \"Tjänsten har tagits bort\",\n  \"VerticalEmbed_Product_Error_Title\": \"Produkten har tagits bort\",\n  \"VerticalEmbed_Fetch_Error_Subtitle\": \"Det gick inte att läsa in objektinformationen.\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Header_plural\": \"{{count}} personer har röstat på det här svaret\",\n  \"VerticalEmbed_Event_Error_Title\": \"Evenemanget har tagits bort\",\n  \"CollapsibleListPlugin_ExpandButton_AriaLabel\": \"Objektet är expanderat\",\n  \"Audio_Plugin_Cover_Alt\": \"Ljudomslag\",\n  \"Spoiler_Reveal_Video_Placeholder\": \"Videon innehåller en spoiler\",\n  \"VerticalEmbed_Product_Fetch_Error_Subtitle\": \"Det uppstod ett tekniskt problem. Kontrollera din anslutning och försök igen.\",\n  \"VerticalEmbed_Fetch_Error_Title\": \"Det gick inte att läsa in objektet\",\n  \"Poll_Viewer_Option_AriaLabel_Unchecked\": \"unchecked\",\n  \"VerticalEmbed_Product_Error_Subtitle\": \"Den här produkten har tagits bort. Ersätt den med en annan produkt.\",\n  \"VerticalEmbed_Booking_Error_Subtitle\": \"Den här tjänsten har tagits bort. Ersätt den med en annan tjänst.\",\n  \"Preview_SeeFullPost_Label\": \"Se hela inlägget\",\n  \"UploadFile_Viewer_Download\": \"Ladda ner {{fileType}}\",\n  \"VerticalEmbed_Units_Hour\": \"{{hours}} t\",\n  \"VerticalEmbed_Units_Minute\": \"{{minutes}} min\",\n  \"VerticalEmbed_Event_Fetch_Error_Subtitle\": \"Det uppstod ett tekniskt problem. Kontrollera din anslutning och försök igen.\",\n  \"VerticalEmbed_Error_Button\": \"Ersätt\",\n  \"VerticalEmbed_Error_Title\": \"Objektet har raderats\",\n  \"VerticalEmbed_Booking_Fetch_Error_Subtitle\": \"Det uppstod ett tekniskt problem. Kontrollera din anslutning och försök igen.\",\n  \"Poll_Viewer_Option_AriaLabel_Checked\": \"checked\"\n}\n","{\n  \"Poll_Viewer_VoteCount_Modal_Voters_Private_Voter\": \"Private User\",\n  \"Poll_Viewer_ShowAllOptions_CTA\": \"ดูตัวเลือกทั้งหมด\",\n  \"Spoiler_Reveal_Tooltip\": \"คลิกเพื่อเปิด\",\n  \"VerticalEmbed_Event_Error_Subtitle\": \"อีเวนท์นี้ถูกลบไปแล้ว กรุณาเปลี่ยนเป็นอีเวนท์อื่น\",\n  \"Viewer_Toolbar_Twitter_Tooltip\": \"Tweet สิ่งนี้\",\n  \"CollapsibleListPlugin_CollapseButton_AriaLabel\": \"รายการยุบแล้ว\",\n  \"Spoiler_Reveal_Video_CTA\": \"แสดงวิดีโอ\",\n  \"VerticalEmbed_Pricing_Plan\": \"แพ็กเกจเท่านั้น\",\n  \"Image_Expand_Button_AriaLabel\": \"ขยายรูปภาพ\",\n  \"VerticalEmbed_From_Price\": \"เริ่มต้นที่\",\n  \"Poll_Viewer_ShowAllResults_CTA\": \"ดูผลทั้งหมด\",\n  \"Spoiler_Reveal_Image_Placeholder\": \"รูปภาพนี้มีการสปอยล์\",\n  \"VerticalEmbed_Ribbon\": \"ยอดขาย\",\n  \"Audio_Plugin_Elapsed_Time_Slider_AriaLabel\": \"แถบเลื่อนเพื่อค้นหา\",\n  \"VerticalEmbed_Error_Subtitle\": \"รายการนี้ถูกลบไปแล้ว กรุณาเปลี่ยนเป็นรายการอื่น\",\n  \"Poll_Viewer_Multiselect_Footer\": \"คุณสามารถโหวตได้มากกว่า 1 คำตอบ\",\n  \"Audio_Plugin_More_Actions_Button_AriaLabel\": \"แสดงตัวควบคุมเสียงเพิ่มเติม\",\n  \"VerticalEmbed_Booking_Fetch_Error_Title\": \"ไม่สามารถโหลดบริการ\",\n  \"Fullscreen_Close_Button_AriaLabel\": \"ปิด\",\n  \"VerticalEmbed_Event_Fetch_Error_Title\": \"ไม่สามารถโหลดอีเวนท์\",\n  \"UploadFile_Viewer_Loader\": \"กำลังโหลด {{fileType}}\",\n  \"Polls_Plugin_User_Avatar_Alt\": \"ใช้รูปประจำตัว\",\n  \"Preview_ReadMore_Label\": \"อ่านเพิ่มเติม\",\n  \"Spoiler_Insert_Tooltip\": \"Spoiler\",\n  \"VerticalEmbed_Product_Fetch_Error_Title\": \"ไม่สามารถโหลดสินค้า\",\n  \"Fullscreen_Shrink_Button_AriaLabel\": \"หด\",\n  \"Audio_Plugin_Volume_Control_Slider_AriaLabel\": \"ความดัง\",\n  \"Spoiler_Reveal_Gallery_Placeholder\": \"แกลเลอรีนี้มีการสปอยล์\",\n  \"Fullscreen_Expand_Button_AriaLabel\": \"ขยาย\",\n  \"VerticalEmbed_Bookings_Button\": \"จองเลย\",\n  \"Audio_Plugin_Volume_Control_Unmute_AriaLabel\": \"เปิดเสียง\",\n  \"Spoiler_Reveal_Gallery_CTA\": \"แสดงแกลเลอรี\",\n  \"Poll_Viewer_ShowLess_CTA\": \"แสดงลดลง\",\n  \"VerticalEmbed_Disabled_Button_Tooltip\": \"Product page will be available once you publish your site.\",\n  \"Audio_Plugin_Volume_Control_Mute_AriaLabel\": \"ปิดเสียง\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Anonymous\": \"+{{anonNumber}} ไม่ระบุชื่อ\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_CTA_Follow\": \"ติดตาม\",\n  \"VerticalEmbed_Products_Button\": \"ซื้อเลย\",\n  \"Poll_Viewer_Toast_Error_ServerDown\": \"ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ กรุณาลองอีกครั้งภายหลัง\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Header\": \"คนโหวตให้คำตอบนี้ {{count}} คน\",\n  \"Poll_Viewer_VoteCount\": \"โหวด {{number}} คน\",\n  \"VerticalEmbed_Events_Button\": \"ลงทะเบียนตอนนี้\",\n  \"Spoiler_Reveal_Image_CTA\": \"แสดงรูปภาพ\",\n  \"Poll_Viewer_Toast_Error_Connection\": \"ไม่มีอินเตอร์เน็ตกรุณาตรวจสอบการเชื่อมต่อ\",\n  \"Poll_Viewer_Visibility_Owner_Footer\": \"คุณเท่านั้นที่สามารถมองเห็นผลการโหวต\",\n  \"VerticalEmbed_Booking_Error_Title\": \"ลบบริการแล้ว\",\n  \"VerticalEmbed_Product_Error_Title\": \"ลบสินค้าแล้ว\",\n  \"VerticalEmbed_Fetch_Error_Subtitle\": \"ไม่สามารถโหลดข้อมูลรายการ\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Header_plural\": \"คนโหวตให้คำตอบนี้ {{count}} คน\",\n  \"VerticalEmbed_Event_Error_Title\": \"ลบอีเวนท์แล้ว\",\n  \"CollapsibleListPlugin_ExpandButton_AriaLabel\": \"รายการเผยแล้ว\",\n  \"Audio_Plugin_Cover_Alt\": \"ภาพปกไฟล์เสียง\",\n  \"Spoiler_Reveal_Video_Placeholder\": \"วิดีโอนี้มีการสปอยล์\",\n  \"VerticalEmbed_Product_Fetch_Error_Subtitle\": \"พบปัญหาทางเทคนิค โปรดตรวจสอบการเชื่อมต่ออินเทอร์เน็ตจากนั้นลองอีกครั้ง\",\n  \"VerticalEmbed_Fetch_Error_Title\": \"โหลดรายการไม่สำเร็จ\",\n  \"Poll_Viewer_Option_AriaLabel_Unchecked\": \"unchecked\",\n  \"VerticalEmbed_Product_Error_Subtitle\": \"สินค้านี้ถูกลบไปแล้ว กรุณาเปลี่ยนเป็นสินค้าอื่น\",\n  \"VerticalEmbed_Booking_Error_Subtitle\": \"บริการนี้ถูกลบไปแล้ว กรุณาเปลี่ยนเป็นบริการอื่น\",\n  \"Preview_SeeFullPost_Label\": \"ดูโพสต์ฉบับเต็ม\",\n  \"UploadFile_Viewer_Download\": \"ดาวน์โหลด {{fileType}}\",\n  \"VerticalEmbed_Units_Hour\": \"{{hours}} ชม.\",\n  \"VerticalEmbed_Units_Minute\": \"{{minutes}} นาที\",\n  \"VerticalEmbed_Event_Fetch_Error_Subtitle\": \"พบปัญหาทางเทคนิค โปรดตรวจสอบการเชื่อมต่ออินเทอร์เน็ตจากนั้นลองอีกครั้ง\",\n  \"VerticalEmbed_Error_Button\": \"แทนที่\",\n  \"VerticalEmbed_Error_Title\": \"ลบรายการแล้ว\",\n  \"VerticalEmbed_Booking_Fetch_Error_Subtitle\": \"พบปัญหาทางเทคนิค โปรดตรวจสอบการเชื่อมต่ออินเทอร์เน็ตจากนั้นลองอีกครั้ง\",\n  \"Poll_Viewer_Option_AriaLabel_Checked\": \"checked\"\n}\n","{\n  \"Poll_Viewer_VoteCount_Modal_Voters_Private_Voter\": \"Private User\",\n  \"Poll_Viewer_ShowAllOptions_CTA\": \"Tingnan ang Lahat ng Opsyon\",\n  \"Spoiler_Reveal_Tooltip\": \"I-click para ipakita\",\n  \"VerticalEmbed_Event_Error_Subtitle\": \"This event has been deleted, replace it with another event.\",\n  \"Viewer_Toolbar_Twitter_Tooltip\": \"I-tweet ito\",\n  \"CollapsibleListPlugin_CollapseButton_AriaLabel\": \"Na-collapse ang item\",\n  \"Spoiler_Reveal_Video_CTA\": \"Ipakita ang Video\",\n  \"VerticalEmbed_Pricing_Plan\": \"Plan only\",\n  \"Image_Expand_Button_AriaLabel\": \"I-expand ang larawan\",\n  \"VerticalEmbed_From_Price\": \"From\",\n  \"Poll_Viewer_ShowAllResults_CTA\": \"Tingnan ang Laht ng Resulta\",\n  \"Spoiler_Reveal_Image_Placeholder\": \"May spoiler ang larawang ito\",\n  \"VerticalEmbed_Ribbon\": \"Sale\",\n  \"Audio_Plugin_Elapsed_Time_Slider_AriaLabel\": \"Maghanap sa slider\",\n  \"VerticalEmbed_Error_Subtitle\": \"This item has been deleted, replace it with another item.\",\n  \"Poll_Viewer_Multiselect_Footer\": \"Maaari kang bumot sa higit sa isang sagot.\",\n  \"Audio_Plugin_More_Actions_Button_AriaLabel\": \"Magpakita ng higit pang mga kontrol sa audio\",\n  \"VerticalEmbed_Booking_Fetch_Error_Title\": \"Failed to load service\",\n  \"Fullscreen_Close_Button_AriaLabel\": \"Isara\",\n  \"VerticalEmbed_Event_Fetch_Error_Title\": \"Failed to load event\",\n  \"UploadFile_Viewer_Loader\": \"Nilo-load ang {{fileType}}\",\n  \"Polls_Plugin_User_Avatar_Alt\": \"User avatar\",\n  \"Preview_ReadMore_Label\": \"Magbasa pa\",\n  \"Spoiler_Insert_Tooltip\": \"Spoiler\",\n  \"VerticalEmbed_Product_Fetch_Error_Title\": \"Failed to load product\",\n  \"Fullscreen_Shrink_Button_AriaLabel\": \"Shrink\",\n  \"Audio_Plugin_Volume_Control_Slider_AriaLabel\": \"Volume\",\n  \"Spoiler_Reveal_Gallery_Placeholder\": \"May spoiler ang gallery na ito\",\n  \"Fullscreen_Expand_Button_AriaLabel\": \"Expand\",\n  \"VerticalEmbed_Bookings_Button\": \"Mag-book Na\",\n  \"Audio_Plugin_Volume_Control_Unmute_AriaLabel\": \"I-unmute\",\n  \"Spoiler_Reveal_Gallery_CTA\": \"Ipakita ang Gallery\",\n  \"Poll_Viewer_ShowLess_CTA\": \"Magpakita ng kaunti\",\n  \"VerticalEmbed_Disabled_Button_Tooltip\": \"Product page will be available once you publish your site.\",\n  \"Audio_Plugin_Volume_Control_Mute_AriaLabel\": \"I-mute\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Anonymous\": \"+{{anonNumber}} anonymous\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_CTA_Follow\": \"Sundan\",\n  \"VerticalEmbed_Products_Button\": \"Bumili Na\",\n  \"Poll_Viewer_Toast_Error_ServerDown\": \"Hindi makakonekta sa server. Subukan ulit sa ibang pagkakataon.\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Header\": \"{{count}} tao ang bumot para sa sagot na ito\",\n  \"Poll_Viewer_VoteCount\": \"{{number}} boto\",\n  \"VerticalEmbed_Events_Button\": \"Magparehistro Na\",\n  \"Spoiler_Reveal_Image_CTA\": \"Ipakita ang Larawan\",\n  \"Poll_Viewer_Toast_Error_Connection\": \"Walang internet. Suriin ang iyong koneksyon.\",\n  \"Poll_Viewer_Visibility_Owner_Footer\": \"Ikaw lang ang maaaring makakita sa mga resulta.\",\n  \"VerticalEmbed_Booking_Error_Title\": \"Service deleted\",\n  \"VerticalEmbed_Product_Error_Title\": \"Product deleted\",\n  \"VerticalEmbed_Fetch_Error_Subtitle\": \"Unable to load item information.\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Header_plural\": \"{{count}} (na) tao ang bumoto para sa sagot na ito\",\n  \"VerticalEmbed_Event_Error_Title\": \"Event deleted\",\n  \"CollapsibleListPlugin_ExpandButton_AriaLabel\": \"Na-expand ang item\",\n  \"Audio_Plugin_Cover_Alt\": \"Audio cover\",\n  \"Spoiler_Reveal_Video_Placeholder\": \"May spoiler ang video na ito\",\n  \"VerticalEmbed_Product_Fetch_Error_Subtitle\": \"Unable to load product information.\",\n  \"VerticalEmbed_Fetch_Error_Title\": \"Failed to load item\",\n  \"Poll_Viewer_Option_AriaLabel_Unchecked\": \"unchecked\",\n  \"VerticalEmbed_Product_Error_Subtitle\": \"This product has been deleted, replace it with another product.\",\n  \"VerticalEmbed_Booking_Error_Subtitle\": \"This service has been deleted, replace it with another service.\",\n  \"Preview_SeeFullPost_Label\": \"Tingnan ang buong post\",\n  \"UploadFile_Viewer_Download\": \"I-download ang {{fileType}}\",\n  \"VerticalEmbed_Units_Hour\": \"{{hours}}h\",\n  \"VerticalEmbed_Units_Minute\": \"{{minutes}}min\",\n  \"VerticalEmbed_Event_Fetch_Error_Subtitle\": \"Unable to load event information.\",\n  \"VerticalEmbed_Error_Button\": \"Replace\",\n  \"VerticalEmbed_Error_Title\": \"Item deleted\",\n  \"VerticalEmbed_Booking_Fetch_Error_Subtitle\": \"Unable to load service information.\",\n  \"Poll_Viewer_Option_AriaLabel_Checked\": \"checked\"\n}\n","{\n  \"Poll_Viewer_VoteCount_Modal_Voters_Private_Voter\": \"Private User\",\n  \"Poll_Viewer_ShowAllOptions_CTA\": \"Tüm Seçenekleri Gör\",\n  \"Spoiler_Reveal_Tooltip\": \"Açmak için tıklayın\",\n  \"VerticalEmbed_Event_Error_Subtitle\": \"Bu etkinlik silindi. Başka bir etkinlikle değiştirin.\",\n  \"Viewer_Toolbar_Twitter_Tooltip\": \"Bunu tweetle\",\n  \"CollapsibleListPlugin_CollapseButton_AriaLabel\": \"Öge daraltıldı\",\n  \"Spoiler_Reveal_Video_CTA\": \"Videoyu Göster\",\n  \"VerticalEmbed_Pricing_Plan\": \"Sadece plan\",\n  \"Image_Expand_Button_AriaLabel\": \"Görüntüyü Genişlet\",\n  \"VerticalEmbed_From_Price\": \"Başlangıç ücreti\",\n  \"Poll_Viewer_ShowAllResults_CTA\": \"Tüm Sonuçları Göster\",\n  \"Spoiler_Reveal_Image_Placeholder\": \"Bu görüntü, spoiler içerir\",\n  \"VerticalEmbed_Ribbon\": \"İndirim\",\n  \"Audio_Plugin_Elapsed_Time_Slider_AriaLabel\": \"Arama kaydırıcısı\",\n  \"VerticalEmbed_Error_Subtitle\": \"Bu öge silindi, başka bir öge ile değiştirin.\",\n  \"Poll_Viewer_Multiselect_Footer\": \"Birden fazla cevap için oy verebilirsiniz.\",\n  \"Audio_Plugin_More_Actions_Button_AriaLabel\": \"Daha fazla ses kontrolü göster\",\n  \"VerticalEmbed_Booking_Fetch_Error_Title\": \"Hizmet yüklenemedi\",\n  \"Fullscreen_Close_Button_AriaLabel\": \"Kapat\",\n  \"VerticalEmbed_Event_Fetch_Error_Title\": \"Etkinlik yüklenemedi\",\n  \"UploadFile_Viewer_Loader\": \"{{fileType}} yükleniyor\",\n  \"Polls_Plugin_User_Avatar_Alt\": \"Kullanıcı avatarı\",\n  \"Preview_ReadMore_Label\": \"Daha Fazla Bilgi\",\n  \"Spoiler_Insert_Tooltip\": \"Spoiler\",\n  \"VerticalEmbed_Product_Fetch_Error_Title\": \"Ürün yüklenemedi\",\n  \"Fullscreen_Shrink_Button_AriaLabel\": \"Küçül\",\n  \"Audio_Plugin_Volume_Control_Slider_AriaLabel\": \"Ses\",\n  \"Spoiler_Reveal_Gallery_Placeholder\": \"Bu galeri, spoiler içerir\",\n  \"Fullscreen_Expand_Button_AriaLabel\": \"Genişlet\",\n  \"VerticalEmbed_Bookings_Button\": \"Yer Ayırt\",\n  \"Audio_Plugin_Volume_Control_Unmute_AriaLabel\": \"Sesi Aç\",\n  \"Spoiler_Reveal_Gallery_CTA\": \"Galeriyi Göster\",\n  \"Poll_Viewer_ShowLess_CTA\": \"Daha Az Göster\",\n  \"VerticalEmbed_Disabled_Button_Tooltip\": \"Product page will be available once you publish your site.\",\n  \"Audio_Plugin_Volume_Control_Mute_AriaLabel\": \"Sessize Al\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Anonymous\": \"+{{anonNumber}} anonim\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_CTA_Follow\": \"Takip Et\",\n  \"VerticalEmbed_Products_Button\": \"Satın Al\",\n  \"Poll_Viewer_Toast_Error_ServerDown\": \"Sunucuya bağlanılamadı. Daha sonra tekrar deneyin.\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Header\": \"{{count}} kişi bu cevap için oy verdi\",\n  \"Poll_Viewer_VoteCount\": \"{{number}} oy\",\n  \"VerticalEmbed_Events_Button\": \"Hemen Kaydol\",\n  \"Spoiler_Reveal_Image_CTA\": \"Görüntüyü Göster\",\n  \"Poll_Viewer_Toast_Error_Connection\": \"İnternet yok. Bağlantınızı kontrol edin.\",\n  \"Poll_Viewer_Visibility_Owner_Footer\": \"Sonuçları sadece siz görebilirsiniz.\",\n  \"VerticalEmbed_Booking_Error_Title\": \"Hizmet silindi.\",\n  \"VerticalEmbed_Product_Error_Title\": \"Ürün silindi\",\n  \"VerticalEmbed_Fetch_Error_Subtitle\": \"Öge bilgileri yüklenemedi.\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Header_plural\": \"{{count}} kişi bu yanıt için oy verdi\",\n  \"VerticalEmbed_Event_Error_Title\": \"Etkinlik silindi.\",\n  \"CollapsibleListPlugin_ExpandButton_AriaLabel\": \"Öge genişletildi\",\n  \"Audio_Plugin_Cover_Alt\": \"Ses dosyası kapağı\",\n  \"Spoiler_Reveal_Video_Placeholder\": \"Bu video, spoiler içerir\",\n  \"VerticalEmbed_Product_Fetch_Error_Subtitle\": \"Teknik bir sorun oluştu. Bağlantınızı kontrol edin veya tekrar deneyin.\",\n  \"VerticalEmbed_Fetch_Error_Title\": \"Öge yüklenemedi\",\n  \"Poll_Viewer_Option_AriaLabel_Unchecked\": \"unchecked\",\n  \"VerticalEmbed_Product_Error_Subtitle\": \"Bu ürün silindi. Başka bir ürünle değiştirin.\",\n  \"VerticalEmbed_Booking_Error_Subtitle\": \"Bu hizmet silindi, başka bir hizmetle değiştirin.\",\n  \"Preview_SeeFullPost_Label\": \"Tamamını görüntüle\",\n  \"UploadFile_Viewer_Download\": \"{{fileType}} dosyasını indir\",\n  \"VerticalEmbed_Units_Hour\": \"{{hours}} sa.\",\n  \"VerticalEmbed_Units_Minute\": \"{{minutes}} dk.\",\n  \"VerticalEmbed_Event_Fetch_Error_Subtitle\": \"Teknik bir sorun oluştu. Bağlantınızı kontrol edin veya tekrar deneyin.\",\n  \"VerticalEmbed_Error_Button\": \"Değiştir\",\n  \"VerticalEmbed_Error_Title\": \"Öge silindi\",\n  \"VerticalEmbed_Booking_Fetch_Error_Subtitle\": \"Teknik bir sorun oluştu. Bağlantınızı kontrol edin veya tekrar deneyin.\",\n  \"Poll_Viewer_Option_AriaLabel_Checked\": \"checked\"\n}\n","{\n  \"Poll_Viewer_VoteCount_Modal_Voters_Private_Voter\": \"Private User\",\n  \"Poll_Viewer_ShowAllOptions_CTA\": \"Дивитись усі варіанти\",\n  \"Spoiler_Reveal_Tooltip\": \"Натисніть, щоб розкрити\",\n  \"VerticalEmbed_Event_Error_Subtitle\": \"Цей захід видалено. Замініть його іншим.\",\n  \"Viewer_Toolbar_Twitter_Tooltip\": \"Твітнути\",\n  \"CollapsibleListPlugin_CollapseButton_AriaLabel\": \"Елемент згорнуто\",\n  \"Spoiler_Reveal_Video_CTA\": \"Розкрити відео\",\n  \"VerticalEmbed_Pricing_Plan\": \"Тільки з планом\",\n  \"Image_Expand_Button_AriaLabel\": \"Розгорнути зображення\",\n  \"VerticalEmbed_From_Price\": \"Від\",\n  \"Poll_Viewer_ShowAllResults_CTA\": \"Дивитись усі результати\",\n  \"Spoiler_Reveal_Image_Placeholder\": \"На цьому зображенні є спойлер\",\n  \"VerticalEmbed_Ribbon\": \"Знижка\",\n  \"Audio_Plugin_Elapsed_Time_Slider_AriaLabel\": \"Слайдер гучності\",\n  \"VerticalEmbed_Error_Subtitle\": \"Цю позицію видалено. Замініть її іншою.\",\n  \"Poll_Viewer_Multiselect_Footer\": \"Ви можете проголосувати більше ніж за одну відповідь.\",\n  \"Audio_Plugin_More_Actions_Button_AriaLabel\": \"Показати більше елементів керування аудіо\",\n  \"VerticalEmbed_Booking_Fetch_Error_Title\": \"Не вдалося завантажити послугу\",\n  \"Fullscreen_Close_Button_AriaLabel\": \"Закрити\",\n  \"VerticalEmbed_Event_Fetch_Error_Title\": \"Не вдалося завантажити захід\",\n  \"UploadFile_Viewer_Loader\": \"Завантаження {{fileType}}\",\n  \"Polls_Plugin_User_Avatar_Alt\": \"Аватар користувача\",\n  \"Preview_ReadMore_Label\": \"Читати далі\",\n  \"Spoiler_Insert_Tooltip\": \"Спойлер\",\n  \"VerticalEmbed_Product_Fetch_Error_Title\": \"Не вдалося завантажити товар\",\n  \"Fullscreen_Shrink_Button_AriaLabel\": \"Стиснути\",\n  \"Audio_Plugin_Volume_Control_Slider_AriaLabel\": \"Гучність\",\n  \"Spoiler_Reveal_Gallery_Placeholder\": \"У цій галереї є спойлер\",\n  \"Fullscreen_Expand_Button_AriaLabel\": \"Розгорнути\",\n  \"VerticalEmbed_Bookings_Button\": \"Записатися\",\n  \"Audio_Plugin_Volume_Control_Unmute_AriaLabel\": \"Скасувати приглушення\",\n  \"Spoiler_Reveal_Gallery_CTA\": \"Розкрити галерею\",\n  \"Poll_Viewer_ShowLess_CTA\": \"Показати менше\",\n  \"VerticalEmbed_Disabled_Button_Tooltip\": \"Product page will be available once you publish your site.\",\n  \"Audio_Plugin_Volume_Control_Mute_AriaLabel\": \"Приглушити\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Anonymous\": \"Анонімних гостей: +{{anonNumber}}\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_CTA_Follow\": \"Стежити\",\n  \"VerticalEmbed_Products_Button\": \"Купити зараз\",\n  \"Poll_Viewer_Toast_Error_ServerDown\": \"Немає зв'язку з сервером Повторіть спробу пізніше.\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Header\": \"{{count}} людина проголосувала за цю відповідь\",\n  \"Poll_Viewer_VoteCount\": \"Голосів: {{number}}\",\n  \"VerticalEmbed_Events_Button\": \"Зареєструватися\",\n  \"Spoiler_Reveal_Image_CTA\": \"Розкрити зображення\",\n  \"Poll_Viewer_Toast_Error_Connection\": \"Відсутній інтернет. Перевірте з'єднання.\",\n  \"Poll_Viewer_Visibility_Owner_Footer\": \"Результати бачите лише ви.\",\n  \"VerticalEmbed_Booking_Error_Title\": \"Послугу видалено\",\n  \"VerticalEmbed_Product_Error_Title\": \"Товар видалено\",\n  \"VerticalEmbed_Fetch_Error_Subtitle\": \"Не вдається завантажити інформацію про позицію.\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Header_plural\": \"Людей, які проголосували за цю відповідь: {{count}}\",\n  \"VerticalEmbed_Event_Error_Title\": \"Захід видалено.\",\n  \"CollapsibleListPlugin_ExpandButton_AriaLabel\": \"Елемент розгорнуто\",\n  \"Audio_Plugin_Cover_Alt\": \"Обкладинка аудіо\",\n  \"Spoiler_Reveal_Video_Placeholder\": \"У цьому відео є спойлер\",\n  \"VerticalEmbed_Product_Fetch_Error_Subtitle\": \"Виникла технічна проблема. Перевірте з'єднання і спробуйте знову.\",\n  \"VerticalEmbed_Fetch_Error_Title\": \"Не вдалося завантажити позицію\",\n  \"Poll_Viewer_Option_AriaLabel_Unchecked\": \"unchecked\",\n  \"VerticalEmbed_Product_Error_Subtitle\": \"Цей товар видалено. Замініть його іншим.\",\n  \"VerticalEmbed_Booking_Error_Subtitle\": \"Цю послугу видалено. Замініть її іншою.\",\n  \"Preview_SeeFullPost_Label\": \"Переглянути весь пост\",\n  \"UploadFile_Viewer_Download\": \"Завантажити {{fileType}}\",\n  \"VerticalEmbed_Units_Hour\": \"{{hours}} год.\",\n  \"VerticalEmbed_Units_Minute\": \"{{minutes}} хв.\",\n  \"VerticalEmbed_Event_Fetch_Error_Subtitle\": \"Виникла технічна проблема. Перевірте з'єднання і спробуйте знову.\",\n  \"VerticalEmbed_Error_Button\": \"Замінити\",\n  \"VerticalEmbed_Error_Title\": \"Позицію видалено\",\n  \"VerticalEmbed_Booking_Fetch_Error_Subtitle\": \"Виникла технічна проблема. Перевірте з'єднання і спробуйте знову.\",\n  \"Poll_Viewer_Option_AriaLabel_Checked\": \"checked\"\n}\n","{\n  \"Poll_Viewer_VoteCount_Modal_Voters_Private_Voter\": \"Private User\",\n  \"Poll_Viewer_ShowAllOptions_CTA\": \"Xem tất cả các tùy chọn\",\n  \"Spoiler_Reveal_Tooltip\": \"Nhấp để hé lộ\",\n  \"VerticalEmbed_Event_Error_Subtitle\": \"Sự kiện này đã bị xóa, hãy thay thế bằng sự kiện khác.\",\n  \"Viewer_Toolbar_Twitter_Tooltip\": \"Tweet mục này\",\n  \"CollapsibleListPlugin_CollapseButton_AriaLabel\": \"Mục được thu bớt\",\n  \"Spoiler_Reveal_Video_CTA\": \"Hé lộ video\",\n  \"VerticalEmbed_Pricing_Plan\": \"Chỉ gói\",\n  \"Image_Expand_Button_AriaLabel\": \"Mở rộng hình ảnh\",\n  \"VerticalEmbed_From_Price\": \"Từ\",\n  \"Poll_Viewer_ShowAllResults_CTA\": \"Xem tất cả kết quả\",\n  \"Spoiler_Reveal_Image_Placeholder\": \"Hình ảnh này có chứa chi tiết tiết lộ trước nội dung\",\n  \"VerticalEmbed_Ribbon\": \"Chương trình giảm giá\",\n  \"Audio_Plugin_Elapsed_Time_Slider_AriaLabel\": \"Tìm kiếm thanh trượt\",\n  \"VerticalEmbed_Error_Subtitle\": \"Mục này đã bị xóa, hãy thay thế bằng mục khác.\",\n  \"Poll_Viewer_Multiselect_Footer\": \"Bạn có thể bình chọn cho nhiều câu trả lời.\",\n  \"Audio_Plugin_More_Actions_Button_AriaLabel\": \"Hiển thị thêm bộ điều chỉnh âm thanh\",\n  \"VerticalEmbed_Booking_Fetch_Error_Title\": \"Không thể tải dịch vụ\",\n  \"Fullscreen_Close_Button_AriaLabel\": \"Đóng\",\n  \"VerticalEmbed_Event_Fetch_Error_Title\": \"Không thể tải sự kiện\",\n  \"UploadFile_Viewer_Loader\": \"Đang tải {{fileType}}\",\n  \"Polls_Plugin_User_Avatar_Alt\": \"Hình đại diện người dùng\",\n  \"Preview_ReadMore_Label\": \"Đọc thêm\",\n  \"Spoiler_Insert_Tooltip\": \"Chi tiết tiết lộ trước nội dung\",\n  \"VerticalEmbed_Product_Fetch_Error_Title\": \"Không thể tải sản phẩm\",\n  \"Fullscreen_Shrink_Button_AriaLabel\": \"Co lại\",\n  \"Audio_Plugin_Volume_Control_Slider_AriaLabel\": \"Khối lượng\",\n  \"Spoiler_Reveal_Gallery_Placeholder\": \"Bộ sưu tập này có chứa chi tiết tiết lộ trước nội dung\",\n  \"Fullscreen_Expand_Button_AriaLabel\": \"Mở rộng\",\n  \"VerticalEmbed_Bookings_Button\": \"Đặt ngay\",\n  \"Audio_Plugin_Volume_Control_Unmute_AriaLabel\": \"Bật tiếng\",\n  \"Spoiler_Reveal_Gallery_CTA\": \"Hé lộ bộ sưu tập\",\n  \"Poll_Viewer_ShowLess_CTA\": \"Ẩn bớt\",\n  \"VerticalEmbed_Disabled_Button_Tooltip\": \"Product page will be available once you publish your site.\",\n  \"Audio_Plugin_Volume_Control_Mute_AriaLabel\": \"Tắt tiếng\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Anonymous\": \"+{{anonNumber}} ẩn danh\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_CTA_Follow\": \"Theo dõi\",\n  \"VerticalEmbed_Products_Button\": \"Mua ngay\",\n  \"Poll_Viewer_Toast_Error_ServerDown\": \"Không thể kết nối với máy chủ. Thử lại sau.\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Header\": \"{{count}} người đã bình chọn cho câu trả lời này\",\n  \"Poll_Viewer_VoteCount\": \"{{number}} phiếu bình chọn\",\n  \"VerticalEmbed_Events_Button\": \"Đăng ký ngay\",\n  \"Spoiler_Reveal_Image_CTA\": \"Hé lộ hình ảnh\",\n  \"Poll_Viewer_Toast_Error_Connection\": \"Không có mạng. Kiểm tra kết nối của bạn.\",\n  \"Poll_Viewer_Visibility_Owner_Footer\": \"Chỉ bạn mới có thể nhìn thấy kết quả.\",\n  \"VerticalEmbed_Booking_Error_Title\": \"Đã xóa dịch vụ\",\n  \"VerticalEmbed_Product_Error_Title\": \"Đã xóa sản phẩm\",\n  \"VerticalEmbed_Fetch_Error_Subtitle\": \"Không thể tải thông tin mặt hàng.\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Header_plural\": \"{{count}} người đã bình chọn cho câu trả lời này\",\n  \"VerticalEmbed_Event_Error_Title\": \"Đã xóa sự kiện\",\n  \"CollapsibleListPlugin_ExpandButton_AriaLabel\": \"Mục được mở rộng\",\n  \"Audio_Plugin_Cover_Alt\": \"Ảnh bìa âm thanh\",\n  \"Spoiler_Reveal_Video_Placeholder\": \"Video này có chứa chi tiết tiết lộ trước nội dung\",\n  \"VerticalEmbed_Product_Fetch_Error_Subtitle\": \"Đã xảy ra vấn đề kỹ thuật. Hãy kiểm tra kết nối của bạn rồi thử lại.\",\n  \"VerticalEmbed_Fetch_Error_Title\": \"Không tải được mục\",\n  \"Poll_Viewer_Option_AriaLabel_Unchecked\": \"unchecked\",\n  \"VerticalEmbed_Product_Error_Subtitle\": \"Sản phẩm này đã bị xóa, hãy thay thế bằng sản phẩm khác.\",\n  \"VerticalEmbed_Booking_Error_Subtitle\": \"Dịch vụ này đã bị xóa, hãy thay thế bằng dịch vụ khác.\",\n  \"Preview_SeeFullPost_Label\": \"Xem toàn bộ bài đăng\",\n  \"UploadFile_Viewer_Download\": \"Tải về {{fileType}}\",\n  \"VerticalEmbed_Units_Hour\": \"{{hours}} giờ\",\n  \"VerticalEmbed_Units_Minute\": \"{{minutes}} phút\",\n  \"VerticalEmbed_Event_Fetch_Error_Subtitle\": \"Đã xảy ra vấn đề kỹ thuật. Hãy kiểm tra kết nối của bạn rồi thử lại.\",\n  \"VerticalEmbed_Error_Button\": \"Thay thế\",\n  \"VerticalEmbed_Error_Title\": \"Đã xóa mặt hàng\",\n  \"VerticalEmbed_Booking_Fetch_Error_Subtitle\": \"Đã xảy ra vấn đề kỹ thuật. Hãy kiểm tra kết nối của bạn rồi thử lại.\",\n  \"Poll_Viewer_Option_AriaLabel_Checked\": \"checked\"\n}\n","{\n  \"Poll_Viewer_VoteCount_Modal_Voters_Private_Voter\": \"Private User\",\n  \"Poll_Viewer_ShowAllOptions_CTA\": \"查看所有選項\",\n  \"Spoiler_Reveal_Tooltip\": \"點擊顯示\",\n  \"VerticalEmbed_Event_Error_Subtitle\": \"此活動已被刪除，請以另一個活動取代。\",\n  \"Viewer_Toolbar_Twitter_Tooltip\": \"發表此推文\",\n  \"CollapsibleListPlugin_CollapseButton_AriaLabel\": \"項目已收起\",\n  \"Spoiler_Reveal_Video_CTA\": \"揭示影片\",\n  \"VerticalEmbed_Pricing_Plan\": \"僅限方案\",\n  \"Image_Expand_Button_AriaLabel\": \"展開圖片\",\n  \"VerticalEmbed_From_Price\": \"起始價格：\",\n  \"Poll_Viewer_ShowAllResults_CTA\": \"查看所有結果\",\n  \"Spoiler_Reveal_Image_Placeholder\": \"此圖片有雷\",\n  \"VerticalEmbed_Ribbon\": \"特賣\",\n  \"Audio_Plugin_Elapsed_Time_Slider_AriaLabel\": \"滑桿\",\n  \"VerticalEmbed_Error_Subtitle\": \"此項目已被刪除，以另一個項目取代。\",\n  \"Poll_Viewer_Multiselect_Footer\": \"您可以投票給超過一個答案。\",\n  \"Audio_Plugin_More_Actions_Button_AriaLabel\": \"顯示更多音訊控制\",\n  \"VerticalEmbed_Booking_Fetch_Error_Title\": \"無法載入服務\",\n  \"Fullscreen_Close_Button_AriaLabel\": \"關閉\",\n  \"VerticalEmbed_Event_Fetch_Error_Title\": \"無法載入活動\",\n  \"UploadFile_Viewer_Loader\": \"正在載入 {{fileType}}\",\n  \"Polls_Plugin_User_Avatar_Alt\": \"使用者頭像\",\n  \"Preview_ReadMore_Label\": \"閱讀更多\",\n  \"Spoiler_Insert_Tooltip\": \"Spoiler\",\n  \"VerticalEmbed_Product_Fetch_Error_Title\": \"無法載入產品\",\n  \"Fullscreen_Shrink_Button_AriaLabel\": \"收縮\",\n  \"Audio_Plugin_Volume_Control_Slider_AriaLabel\": \"數量\",\n  \"Spoiler_Reveal_Gallery_Placeholder\": \"此圖庫有雷\",\n  \"Fullscreen_Expand_Button_AriaLabel\": \"展開\",\n  \"VerticalEmbed_Bookings_Button\": \"立即預訂\",\n  \"Audio_Plugin_Volume_Control_Unmute_AriaLabel\": \"取消靜音\",\n  \"Spoiler_Reveal_Gallery_CTA\": \"揭示圖庫\",\n  \"Poll_Viewer_ShowLess_CTA\": \"顯示較少\",\n  \"VerticalEmbed_Disabled_Button_Tooltip\": \"Product page will be available once you publish your site.\",\n  \"Audio_Plugin_Volume_Control_Mute_AriaLabel\": \"靜音\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Anonymous\": \"+ {{anonNumber}} 位無名氏\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_CTA_Follow\": \"追蹤\",\n  \"VerticalEmbed_Products_Button\": \"立即購買\",\n  \"Poll_Viewer_Toast_Error_ServerDown\": \"無法連線伺服器。請稍後再試一次。\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Header\": \"{{count}} 個人投票給這個答覆\",\n  \"Poll_Viewer_VoteCount\": \"{{number}} 票\",\n  \"VerticalEmbed_Events_Button\": \"立即報名\",\n  \"Spoiler_Reveal_Image_CTA\": \"揭示圖片\",\n  \"Poll_Viewer_Toast_Error_Connection\": \"沒有網路，請檢查您的連線。\",\n  \"Poll_Viewer_Visibility_Owner_Footer\": \"只有您能查看結果。\",\n  \"VerticalEmbed_Booking_Error_Title\": \"服務已刪除\",\n  \"VerticalEmbed_Product_Error_Title\": \"產品已刪除\",\n  \"VerticalEmbed_Fetch_Error_Subtitle\": \"無法載入項目資訊。\",\n  \"Poll_Viewer_VoteCount_Modal_Voters_Header_plural\": \"{{count}} 個人投票給這個答覆\",\n  \"VerticalEmbed_Event_Error_Title\": \"活動已刪除\",\n  \"CollapsibleListPlugin_ExpandButton_AriaLabel\": \"項目已展開\",\n  \"Audio_Plugin_Cover_Alt\": \"音訊封面\",\n  \"Spoiler_Reveal_Video_Placeholder\": \"此影片有雷\",\n  \"VerticalEmbed_Product_Fetch_Error_Subtitle\": \"發生技術問題。請檢查連線或再試一次。\",\n  \"VerticalEmbed_Fetch_Error_Title\": \"無法載入項目\",\n  \"Poll_Viewer_Option_AriaLabel_Unchecked\": \"unchecked\",\n  \"VerticalEmbed_Product_Error_Subtitle\": \"此產品已被刪除，請以另一產品取代。\",\n  \"VerticalEmbed_Booking_Error_Subtitle\": \"此服務已被刪除，請以其他服務取代。\",\n  \"Preview_SeeFullPost_Label\": \"查看完整文章\",\n  \"UploadFile_Viewer_Download\": \"下載 {{fileType}}\",\n  \"VerticalEmbed_Units_Hour\": \"{{hours}} 小時\",\n  \"VerticalEmbed_Units_Minute\": \"{{minutes}} 分鐘\",\n  \"VerticalEmbed_Event_Fetch_Error_Subtitle\": \"發生技術問題。請檢查連線或再試一次。\",\n  \"VerticalEmbed_Error_Button\": \"取代\",\n  \"VerticalEmbed_Error_Title\": \"已刪除項目。\",\n  \"VerticalEmbed_Booking_Fetch_Error_Subtitle\": \"發生技術問題。請檢查連線或再試一次。\",\n  \"Poll_Viewer_Option_AriaLabel_Checked\": \"checked\"\n}\n","var styleDataHash = '72be6464';  \nexport const injectCss = (() => {\n  var css = `.RYI3v{background-color:#fff;border:1px solid #ededed;border-radius:6px;box-shadow:0 4px 8px 0 rgba(0,0,0,.07);display:flex;height:43px;overflow:hidden;position:absolute;transform:translate(-50%,-100%);transition:all .5s ease-out}.lemm2{align-items:center;background:#fff;border:none;cursor:pointer;display:flex;justify-content:center;width:43px}`;\n  var isTest = typeof process !== 'undefined' && process.env && process.env['NODE_ENV'] === 'test';\n\n  if (isTest || !css || typeof document === 'undefined') { return; }\n  if (document.querySelector('style[data-ricos-style-hash=\"' + styleDataHash + '\"]')) { return; }\n\n  var head = document.head || document.getElementsByTagName('head')[0];\n  var style = document.createElement('style');\n  style.setAttribute('data-ricos-style-hash', styleDataHash);\n  style.type = 'text/css';\n\n  head.appendChild(style);\n\n  if (style.styleSheet) {\n    style.styleSheet.cssText = css;\n  } else {\n    style.appendChild(document.createTextNode(css));\n  }\n});\n\ninjectCss();\n\n\n\nexport default {\n  \"toolbar\": \"RYI3v\",\n  \"button\": \"lemm2\"\n};","const getSelectedText = (selection: $TSFixMe) =>\n  selection.toString().replace(/(\\r\\n|\\r|\\n){2,}/g, ' ');\n\nconst getInnerSelectionNodes = (range: $TSFixMe) => {\n  const _iterator = document.createNodeIterator(range.commonAncestorContainer, NodeFilter.SHOW_ALL);\n  const innerSelectionNodes: Node[] = [];\n  // oxlint-disable-next-line no-lone-blocks\n  while (_iterator.nextNode() && _iterator.referenceNode !== range.startContainer) {}\n  // oxlint-disable-next-line no-lone-blocks\n  while (_iterator.nextNode() && _iterator.referenceNode !== range.endContainer) {\n    if (_iterator.referenceNode.nodeType === Node.TEXT_NODE) {\n      innerSelectionNodes.push(_iterator.referenceNode);\n    }\n  }\n  return innerSelectionNodes;\n};\n\nconst getSelectionRects = (selection: $TSFixMe) => {\n  const range = selection.getRangeAt(0);\n\n  const innerSelectionNodes = getInnerSelectionNodes(range);\n  const innerRects = innerSelectionNodes.map(n => {\n    const r = document.createRange();\n    r.selectNodeContents(n);\n    return r.getBoundingClientRect();\n  });\n  const clientRects = range.getClientRects();\n\n  return [clientRects[0], ...innerRects, clientRects[clientRects.length - 1]];\n};\n\nconst getSelectionPosition = (selection: $TSFixMe) => {\n  const rects = getSelectionRects(selection);\n\n  let left = 999999;\n  let right = 0;\n  rects.forEach(rect => {\n    left = Math.min(left, rect.left);\n    right = Math.max(right, rect.right);\n  });\n  const y = rects[0].top + window.scrollY;\n  const x = (left + right) / 2 + window.scrollX;\n  return { x, y };\n};\n\nexport default function addTextSelectionListener(container: $TSFixMe, callback: $TSFixMe) {\n  const handleSelection = () => {\n    const selection = document.getSelection();\n    const selectionAnchor = selection?.anchorNode;\n    const selectionFocus = selection?.focusNode;\n    let selectedText, position;\n    if (\n      selection &&\n      selection.rangeCount > 0 &&\n      !selection.isCollapsed &&\n      container.contains(selectionAnchor) &&\n      container.contains(selectionFocus)\n    ) {\n      selectedText = getSelectedText(selection);\n      position = getSelectionPosition(selection);\n    }\n    callback(selectedText, position);\n  };\n  document.addEventListener('selectionchange', handleSelection);\n  return () => document.removeEventListener('selectionchange', handleSelection);\n}\n","import lodash from 'lodash';\nimport React from 'react';\n\nimport styles from './statics/styles/viewer-inline-toolbar-scss.js';\nimport addTextSelectionListener from './TextSelectionListener.js';\n\ntype Props = {\n  children: (text: string) => JSX.Element;\n  container: HTMLElement;\n};\n\nexport default class TextSelectionToolbar extends React.Component<\n  Props,\n  { selectedText: string; selectedTextPosition?: { x: number; y: number } }\n> {\n  constructor(props: Props) {\n    super(props);\n    this.state = { selectedText: '' };\n  }\n\n  removeTextSelectionListener?: () => void | null;\n\n  componentDidMount() {\n    this.addTextSelectionListener(this.props.container);\n  }\n\n  componentWillUnmount() {\n    if (this.removeTextSelectionListener) {\n      this.removeTextSelectionListener();\n    }\n  }\n\n  componentWillReceiveProps(nextPros: Props) {\n    this.addTextSelectionListener(nextPros.container);\n  }\n\n  addTextSelectionListener = (container: HTMLElement) => {\n    if (container && !this.removeTextSelectionListener) {\n      this.removeTextSelectionListener = addTextSelectionListener(container, this.setSelectedText);\n    }\n  };\n\n  setSelectedText = lodash.debounce(\n    (selectedText, selectedTextPosition) => this.setState({ selectedText, selectedTextPosition }),\n    50\n  );\n\n  render() {\n    const { selectedText, selectedTextPosition } = this.state;\n    const { container, children } = this.props;\n    if (!selectedText || !selectedTextPosition) {\n      return null;\n    }\n    const { left } = container.getBoundingClientRect();\n    const topOffset = 5;\n    const containerOffset = this.props.container.getBoundingClientRect().top;\n    const style = {\n      top: selectedTextPosition.y - containerOffset - topOffset - window.scrollY,\n      left: selectedTextPosition.x - left,\n    };\n\n    return (\n      <div className={styles.toolbar} style={style}>\n        {children(selectedText)}\n      </div>\n    );\n  }\n}\n","/* oxlint-disable max-len */\nimport React from 'react';\n\nconst twitter = (props: $TSFixMe) => (\n  <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n    <path\n      d=\"M4.09856 4.06761L8.70069 10.6118L4.06915 15.9324H5.1118L9.16634 11.2744L12.4429 15.9324H15.9905L11.1293 9.02057L15.4405 4.06846H14.3979L10.6635 8.35888L7.64608 4.06846H4.09856V4.06761ZM5.63154 4.88395H7.26145L14.4575 15.1152H12.8275L5.63154 4.88395Z\"\n      fillRule=\"evenodd\"\n    />\n    <defs>\n      <clipPath id=\"clip0_1_2\">\n        <rect width=\"12\" height=\"12\" fill=\"white\" transform=\"translate(4 4)\" />\n      </clipPath>\n    </defs>\n  </svg>\n);\n\nexport default twitter;\n","import type { FunctionComponent } from 'react';\nimport React from 'react';\n\nimport Twitter from './icons/twitter.js';\nimport styles from './statics/styles/viewer-inline-toolbar-scss.js';\n\nfunction openTwitter(selectedText: string) {\n  let text = '“' + selectedText + '“—';\n  const url = window.location.href;\n\n  const maxTweetLength = 279;\n  if (text.length + url.length > maxTweetLength) {\n    const maxTextLength = maxTweetLength - url.length;\n    text = handleText(text, maxTextLength);\n  }\n\n  const TWEET_ON_TWITTER_URL = `https://twitter.com/intent/tweet?text=${encodeURI(\n    text\n  )}&url=${encodeURI(url)}`;\n\n  window.open(TWEET_ON_TWITTER_URL);\n}\n\nfunction handleText(text: string, maxTextLength: number) {\n  let content = text.substring(0, maxTextLength - 2);\n  content = content.slice(0, content.lastIndexOf(' '));\n  content += '…“—';\n  return content;\n}\n\nconst TwitterButton: FunctionComponent<{\n  selectedText: string;\n  onClick?: (selectedText: string) => void;\n}> = ({ selectedText, onClick }) => {\n  const handleOnClick = (selectedText: $TSFixMe) => {\n    onClick?.(selectedText);\n    openTwitter(selectedText);\n  };\n  return (\n    <button\n      data-hook=\"twitter-button\"\n      className={styles.button}\n      onClick={() => handleOnClick(selectedText)}\n      type=\"button\"\n    >\n      <Twitter />\n    </button>\n  );\n};\n\nexport default TwitterButton;\n","import TextSelectionToolbar from './TextSelectionToolbar.js';\nimport TwitterButton from './TwitterButton.js';\n\nexport { TextSelectionToolbar, TwitterButton };\n","import React from 'react';\n\nimport {\n  TextSelectionToolbar,\n  TwitterButton,\n} from './../text-selection-toolbar/index.js';\ninterface Props {\n  onButtonClick?: (pluginId: string, action: string, value: string) => void;\n  container: HTMLElement;\n}\n\nconst SelectionToolbar: React.FC<Props> = ({ onButtonClick, container }) => {\n  return (\n    <TextSelectionToolbar container={container}>\n      {selectedText => (\n        <TwitterButton\n          selectedText={selectedText}\n          onClick={selectedText => onButtonClick?.('TWITTER', 'Click', selectedText)}\n        />\n      )}\n    </TextSelectionToolbar>\n  );\n};\n\nexport default SelectionToolbar;\n","import { LINK_VIEWER_DATA_HOOK } from './../wix-rich-content-common/index.js';\n\nexport default function addLinkPreviewPopoverListener(container: $TSFixMe, callback: $TSFixMe) {\n  const onLinkHover = (linkNode: any) => {\n    const url = linkNode.href;\n    const linkNodeRect = linkNode.getBoundingClientRect();\n    const position = { top: linkNodeRect.top + linkNodeRect.height + 4, left: linkNodeRect.left };\n    callback(url, position);\n  };\n\n  const onStopLinkHover = () => callback(undefined);\n\n  const handleMouseOver = (event: $TSFixMe) => {\n    const isLink = event.target?.parentNode?.dataset?.hook === LINK_VIEWER_DATA_HOOK;\n    return isLink ? onLinkHover(event.target.closest('a')) : onStopLinkHover();\n  };\n\n  container.addEventListener('mouseover', handleMouseOver);\n\n  return () => {\n    container.removeEventListener('mouseover', handleMouseOver);\n  };\n}\n","var styleDataHash = '484031f5';  \nexport const injectCss = (() => {\n  var css = `._6Q2em,.glob_fontElementMap{font-family:var(--ricos-font-family,unset)}.OriZ8{border-color:rgba(var(--ricos-text-color-tuple,33,33,33),.4);border-style:solid;border-width:1px;box-shadow:0 0 10px 0 rgba(0,0,0,.06);position:fixed;z-index:11}@supports (color:rgb(from #000 r g b/0.1)){.OriZ8{border-color:rgb(from var(--ricos-text-color,#212121) r g b/.4)}}.X2G7i{background-color:#fff;max-height:339px;max-width:360px}.X2G7i,.ab7PX{display:flex;flex-direction:column}.ab7PX{gap:4px;padding:16px}.A3PQk{color:var(--ricos-text-color-low,#646464);font-size:14px;line-height:20px}.uRDSc{font-size:16px;line-height:24px}.WoAgD,.uRDSc{color:var(--ricos-text-color,#212121);display:-webkit-box;overflow:hidden;text-overflow:ellipsis;-webkit-line-clamp:2;-webkit-box-orient:vertical}.WoAgD{font-size:14px;line-height:20px}.UFapL{height:100%;width:100%}.f6Iqq{height:190px;width:100%}`;\n  var isTest = typeof process !== 'undefined' && process.env && process.env['NODE_ENV'] === 'test';\n\n  if (isTest || !css || typeof document === 'undefined') { return; }\n  if (document.querySelector('style[data-ricos-style-hash=\"' + styleDataHash + '\"]')) { return; }\n\n  var head = document.head || document.getElementsByTagName('head')[0];\n  var style = document.createElement('style');\n  style.setAttribute('data-ricos-style-hash', styleDataHash);\n  style.type = 'text/css';\n\n  head.appendChild(style);\n\n  if (style.styleSheet) {\n    style.styleSheet.cssText = css;\n  } else {\n    style.appendChild(document.createTextNode(css));\n  }\n});\n\ninjectCss();\n\n\n\nexport default {\n  \"fontElementMap\": \"_6Q2em\",\n  \"container\": \"OriZ8\",\n  \"viewerContainer\": \"X2G7i\",\n  \"texts\": \"ab7PX\",\n  \"url\": \"A3PQk\",\n  \"title\": \"uRDSc\",\n  \"description\": \"WoAgD\",\n  \"Image\": \"UFapL\",\n  \"ImageWrapper\": \"f6Iqq\"\n};","import React from 'react';\n\nimport type { LinkPreviewData } from './../ricos-types/index.js';\n\nimport styles from './statics/styles/link-preview-popover-scss.js';\n\ntype LinkPreviewPopoverViewerProps = LinkPreviewData;\n\nexport default class LinkPreviewPopoverViewer extends React.Component<LinkPreviewPopoverViewerProps> {\n  constructor(props: $TSFixMe) {\n    super(props);\n    this.state = {};\n  }\n\n  render() {\n    const { title, description, provider_url, thumbnail_url } = this.props;\n\n    return (\n      <div className={styles.viewerContainer}>\n        {thumbnail_url ? (\n          <div className={styles.ImageWrapper}>\n            <img className={styles.Image} src={thumbnail_url} alt=\"\" />\n          </div>\n        ) : null}\n        <div className={styles.texts}>\n          <div className={styles.url}>{provider_url}</div>\n          <div className={styles.title}>{title}</div>\n          <div className={styles.description}>{description}</div>\n        </div>\n      </div>\n    );\n  }\n}\n","import React from 'react';\n\nimport type { LinkPreviewData } from './../ricos-types/index.js';\n\nimport addLinkPreviewPopoverListener from './LinkPreviewPopoverListener.js';\nimport LinkPreviewPopoverViewer from './LinkPreviewPopoverViewer.js';\nimport styles from './statics/styles/link-preview-popover-scss.js';\n\nexport type LinkNodePreviewData = {\n  position: { top: number; left: number };\n  data: LinkPreviewData;\n};\n\nexport class LinkPreviewPopover extends React.Component<\n  {\n    container: HTMLElement;\n    fetchUrlPreviewData: (url: string) => Promise<LinkPreviewData>;\n  },\n  { linkPreviewData?: LinkNodePreviewData }\n> {\n  constructor(props: $TSFixMe) {\n    super(props);\n    this.state = {};\n  }\n\n  removeLinkPreviewPopoverListener!: () => void | null;\n\n  componentDidMount() {\n    this.addLinkPreviewPopoverListener(this.props.container);\n  }\n\n  componentWillUnmount() {\n    this.removeLinkPreviewPopoverListener();\n  }\n\n  onPreview = (url: string, position?: { top: number; left: number }) => {\n    if (!position) {\n      return this.setState({ linkPreviewData: undefined });\n    }\n    this.props\n      .fetchUrlPreviewData(url)\n      .then(data => this.setState({ linkPreviewData: { position, data } }));\n  };\n\n  addLinkPreviewPopoverListener = (container: $TSFixMe) => {\n    if (container && !this.removeLinkPreviewPopoverListener) {\n      this.removeLinkPreviewPopoverListener = addLinkPreviewPopoverListener(\n        container,\n        this.onPreview\n      );\n    }\n  };\n\n  render() {\n    const { linkPreviewData } = this.state;\n\n    return linkPreviewData ? (\n      <div className={styles.container} style={linkPreviewData.position}>\n        <LinkPreviewPopoverViewer {...linkPreviewData.data} />\n      </div>\n    ) : null;\n  }\n}\n","import React from 'react';\n\nimport type { LinkPreviewData } from './../ricos-types/index.js';\nimport { LinkPreviewPopover } from './../link-preview-popover/LinkPreviewPopover.js';\n\ninterface Props {\n  container: HTMLElement;\n  fetchUrlPreviewData: (url: string) => Promise<LinkPreviewData>;\n}\n\nconst PreviewPopover: React.FC<Props> = ({ container, fetchUrlPreviewData }) => {\n  return <LinkPreviewPopover container={container} fetchUrlPreviewData={fetchUrlPreviewData} />;\n};\n\nexport default PreviewPopover;\n","export const ADDRESS_FORM_ID_BY_COUNTRY = {\n  COMMON: '0d5dcb6d-1403-4b80-b73e-6d90a2245561',\n  US: 'ebe1c447-8fd5-4c7a-8cf1-75b94db68698',\n  UY: 'b7b59987-e5c6-4ec7-a4af-f48318a68a5d',\n  TH: 'b7b59987-e5c6-4ec7-a4af-f48318a68a5d',\n  TR: 'b7b59987-e5c6-4ec7-a4af-f48318a68a5d',\n  SZ: 'b7b59987-e5c6-4ec7-a4af-f48318a68a5d',\n  ZA: 'b7b59987-e5c6-4ec7-a4af-f48318a68a5d',\n  SE: 'b7b59987-e5c6-4ec7-a4af-f48318a68a5d',\n  SI: 'b7b59987-e5c6-4ec7-a4af-f48318a68a5d',\n  SK: 'b7b59987-e5c6-4ec7-a4af-f48318a68a5d',\n  RS: 'b7b59987-e5c6-4ec7-a4af-f48318a68a5d',\n  SB: 'b7b59987-e5c6-4ec7-a4af-f48318a68a5d',\n  SG: 'b7b59987-e5c6-4ec7-a4af-f48318a68a5d',\n  SN: 'b7b59987-e5c6-4ec7-a4af-f48318a68a5d',\n  SD: 'b7b59987-e5c6-4ec7-a4af-f48318a68a5d',\n  RU: 'b7b59987-e5c6-4ec7-a4af-f48318a68a5d',\n  RO: 'b7b59987-e5c6-4ec7-a4af-f48318a68a5d',\n  PY: 'b7b59987-e5c6-4ec7-a4af-f48318a68a5d',\n  PT: 'b7b59987-e5c6-4ec7-a4af-f48318a68a5d',\n  PL: 'b7b59987-e5c6-4ec7-a4af-f48318a68a5d',\n  PH: 'b7b59987-e5c6-4ec7-a4af-f48318a68a5d',\n  PE: 'b7b59987-e5c6-4ec7-a4af-f48318a68a5d',\n  PA: 'b7b59987-e5c6-4ec7-a4af-f48318a68a5d',\n  PK: 'b7b59987-e5c6-4ec7-a4af-f48318a68a5d',\n  NZ: 'b7b59987-e5c6-4ec7-a4af-f48318a68a5d',\n  NO: 'b7b59987-e5c6-4ec7-a4af-f48318a68a5d',\n  NG: 'b7b59987-e5c6-4ec7-a4af-f48318a68a5d',\n  NL: 'b7b59987-e5c6-4ec7-a4af-f48318a68a5d',\n  MY: 'b7b59987-e5c6-4ec7-a4af-f48318a68a5d',\n  MH: 'b7b59987-e5c6-4ec7-a4af-f48318a68a5d',\n  MX: 'b7b59987-e5c6-4ec7-a4af-f48318a68a5d',\n  KR: 'b7b59987-e5c6-4ec7-a4af-f48318a68a5d',\n  JP: 'e51fc7b5-0c29-40c6-b2e8-58d9fa5e3c29',\n  IT: 'b7b59987-e5c6-4ec7-a4af-f48318a68a5d',\n  IS: 'b7b59987-e5c6-4ec7-a4af-f48318a68a5d',\n  IE: 'b7b59987-e5c6-4ec7-a4af-f48318a68a5d',\n  IN: 'b7b59987-e5c6-4ec7-a4af-f48318a68a5d',\n  IL: 'bc7a8d54-8df3-47cb-bb9b-3338fd6246e5',\n  ID: 'b7b59987-e5c6-4ec7-a4af-f48318a68a5d',\n  HU: 'b7b59987-e5c6-4ec7-a4af-f48318a68a5d',\n  HR: 'b7b59987-e5c6-4ec7-a4af-f48318a68a5d',\n  GR: 'b7b59987-e5c6-4ec7-a4af-f48318a68a5d',\n  GB: '3d059d26-8ce8-48ce-9779-b23e42014454',\n  FR: 'fbc1fb24-37bc-4c0f-afa4-35e88a43127d',\n  ES: 'f0e74759-d378-4ae7-9db7-42b4c7d02094',\n  EG: 'b7b59987-e5c6-4ec7-a4af-f48318a68a5d',\n  DO: 'b7b59987-e5c6-4ec7-a4af-f48318a68a5d',\n  DK: 'b7b59987-e5c6-4ec7-a4af-f48318a68a5d',\n  DE: 'c7bde0e2-187e-44e7-8f51-14162259eb2b',\n  CZ: 'b7b59987-e5c6-4ec7-a4af-f48318a68a5d',\n  CY: 'b7b59987-e5c6-4ec7-a4af-f48318a68a5d',\n  CR: 'b7b59987-e5c6-4ec7-a4af-f48318a68a5d',\n  CO: 'b7b59987-e5c6-4ec7-a4af-f48318a68a5d',\n  CI: 'b7b59987-e5c6-4ec7-a4af-f48318a68a5d',\n  CN: 'b7b59987-e5c6-4ec7-a4af-f48318a68a5d',\n  CL: 'b7b59987-e5c6-4ec7-a4af-f48318a68a5d',\n  CH: 'b7b59987-e5c6-4ec7-a4af-f48318a68a5d',\n  CA: '2b942888-7d93-41ee-b85c-5705263f9eea',\n  CF: 'b7b59987-e5c6-4ec7-a4af-f48318a68a5d',\n  BR: '3160f799-1ade-455b-87f9-128875ec874e',\n  BS: 'b7b59987-e5c6-4ec7-a4af-f48318a68a5d',\n  BE: 'b7b59987-e5c6-4ec7-a4af-f48318a68a5d',\n  BG: 'b7b59987-e5c6-4ec7-a4af-f48318a68a5d',\n  AT: 'b7b59987-e5c6-4ec7-a4af-f48318a68a5d',\n  AU: '76f1a42e-b609-4c8b-b41a-7ebf2fbb5a56',\n  AR: 'b7b59987-e5c6-4ec7-a4af-f48318a68a5d',\n  AE: 'b7b59987-e5c6-4ec7-a4af-f48318a68a5d',\n};\n\nexport const DEFAULT_COUNTRY = 'COMMON';\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"LocaleDataset\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"LocaleDataset\"] = factory();\n\telse\n\t\troot[\"LocaleDataset\"] = factory();\n})((typeof self !== 'undefined' ? self : this), () => {\nreturn ","// 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\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\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__.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};","import { AddressParts, Country } from '@wix/locale-dataset-data/typings';\nimport { getCountryByKey } from '.';\n\nconst ADDRESS_PARTS: AddressParts = {\n  country: 'country',\n  subdivision: 'subdivision',\n  addressLine1: 'addressLine1',\n  addressLine2: 'addressLine2',\n  city: 'city',\n  zipCode: 'zipCode',\n  firstName: 'firstName',\n  lastName: 'lastName',\n  company: 'company',\n  phone: 'phone',\n};\n\nconst FORMAT_BY_COUNTRY_DEFAULT = 'USA';\n\nexport const getFormattedAddress = (\n  addressParts: AddressParts,\n  formatCountryKey?: string,\n): string => {\n  const formatByCounty: Country = formatCountryKey\n    ? getCountryByKey(formatCountryKey)\n    : getCountryByKey(FORMAT_BY_COUNTRY_DEFAULT);\n\n  const address =\n    formatByCounty && formatByCounty.addressPattern\n      ? formatByCounty.addressPattern\n      : getCountryByKey(FORMAT_BY_COUNTRY_DEFAULT).addressPattern;\n\n  const emptyParts = address\n    .split('\\n')\n    .map((line) =>\n      line\n        .split(',')\n        .map((commaSection) => commaSection.replace(/{{[^}]+}}/g, '')),\n    );\n\n  return address\n    .split('\\n')\n    .map((line, lineIndex) => {\n      return line\n        .split(',')\n        .map((lineSection, commaIndex) => {\n          if (lineSection === '') {\n            return lineSection;\n          }\n          let replacedLineSection = lineSection;\n          Object.keys(ADDRESS_PARTS).forEach((key) => {\n            replacedLineSection = replacedLineSection.replace(\n              `{{${key}}}`,\n              addressParts[key] || '',\n            );\n          });\n          if (emptyParts[lineIndex][commaIndex] === replacedLineSection) {\n            return null;\n          }\n          return replacedLineSection;\n        })\n        .filter((lineSectionAfterReplace) => lineSectionAfterReplace !== null)\n        .join(',');\n    })\n    .join('\\n')\n    .replace(/\\n+\\s*/g, '\\n');\n};\n","export const FORBIDDEN_COUNTRY_CODES = ['IRN', 'CUB', 'SYR', 'PRK'];\nexport const DEFAULT_DEPRECATION_TIMESTAMPS = [1649263144395];\n","import {\n  AddressParts,\n  Country,\n  Currency,\n  DemoAddress,\n  Language,\n  Locale,\n  LocaleDataset,\n  Subdivision,\n  Timezone,\n} from '@wix/locale-dataset-data/typings';\nimport { getFormattedAddress } from './address-format';\nimport * as datasetData from '@wix/locale-dataset-data';\nimport {\n  DEFAULT_DEPRECATION_TIMESTAMPS,\n  FORBIDDEN_COUNTRY_CODES,\n} from './constants';\n\nexport interface GetAllCountriesOpts extends GetCountryOpts {\n  filterForbiddenCountries?: boolean;\n}\n\nexport interface GetCountryOpts {\n  deprecationTimestamps?: number[];\n}\n\nexport interface LocaleDatasetApi {\n  getAllCountries(opts?: GetAllCountriesOpts): Country[];\n  getCountryByKey(countryKey: string, opts?: GetCountryOpts): Country;\n  getCountryByShortKey(countryShortKey: string, opts?: GetCountryOpts): Country;\n  getStateByKey(countryKey: string, stateKey: string): Subdivision;\n  getAllCurrencies(): Currency[];\n  getCurrencyByKey(currencyKey: string): Currency;\n  getAllLocales(): Locale[];\n  getLocaleByKey(localeKey: string): Locale;\n  getAllTimezones(): Timezone[];\n  getTimezoneByKey(timezoneKey: string): Timezone;\n  getFormattedAddress(\n    addressParts: AddressParts,\n    formatCountryKey?: string,\n  ): string;\n  getDemoAddresses(): DemoAddress[];\n  getDemoAddressByKey(currencyKey: string): DemoAddress;\n  getAllSupportedLanguages(): Language[];\n  getAllLanguages(): Language[];\n  getDefaultAddressDisplayNames(): AddressParts;\n  mapReplacedSubdivision(subdivisionKey: string, countryKey: string): string;\n  getRegionsReplacedByRegion(\n    subdivisionKey: string,\n    countryKey: string,\n  ): string[];\n}\nconst dataset: LocaleDataset = datasetData as LocaleDataset;\n\n// Helpers\nconst clone = (item: any) => JSON.parse(JSON.stringify(item));\nconst all = (arr: any[]) => clone(arr);\nconst byKey = (arr: any[], key: string) => {\n  const item = arr.filter((arrItem: any) => arrItem.key === key)[0];\n  return item ? clone(item) : null;\n};\nconst byShortKey = (arr: any[], shortKey: string) => {\n  const item = arr.filter((arrItem: any) => arrItem.shortKey === shortKey)[0];\n  return item ? clone(item) : null;\n};\nconst withAddressPartDisplayNameDefaults = (country: Country): Country => {\n  return (\n    country && {\n      ...country,\n      addressPartDisplayNames: {\n        ...dataset.addressPartDisplayNames,\n        ...country.addressPartDisplayNames,\n      },\n    }\n  );\n};\nconst filteringDeprecatedSubdivisions = (deprecationTimestamps: number[]) => (\n  country: Country,\n): Country => {\n  const { list: subdivs } = country?.subdivisions || {\n    list: Array<Subdivision>(),\n  };\n\n  if (subdivs.length === 0) {\n    return country;\n  }\n\n  const deprecatedSubDivsToShow = subdivs.filter(({ deprecatedOn }) =>\n    deprecationTimestamps.includes(deprecatedOn),\n  );\n  const nonDeprecatedSubDivs = subdivs.filter(\n    ({ deprecatedOn }) => !deprecatedOn,\n  );\n  const notReplacingOrReplaced = subdivs.filter(\n    ({ replaces, replacedBy }) => !replaces?.length && !replacedBy?.length,\n  );\n\n  const list =\n    deprecatedSubDivsToShow.length > 0\n      ? deprecatedSubDivsToShow.concat(notReplacingOrReplaced)\n      : nonDeprecatedSubDivs;\n\n  return {\n    ...country,\n    subdivisions: {\n      ...country.subdivisions,\n      list,\n    },\n  };\n};\n\nconst withCountryAdjustments = ({ deprecationTimestamps }: GetCountryOpts) => (\n  country: Country,\n): Country =>\n  filteringDeprecatedSubdivisions(deprecationTimestamps)(\n    withAddressPartDisplayNameDefaults(country),\n  );\n\n// Public API\nexport const getAllCountries = (opts: GetAllCountriesOpts = {}): Country[] => {\n  const deprecationTimestamps =\n    opts?.deprecationTimestamps || DEFAULT_DEPRECATION_TIMESTAMPS;\n\n  return all(dataset.countries)\n    .filter(\n      (country) =>\n        !opts.filterForbiddenCountries ||\n        !FORBIDDEN_COUNTRY_CODES.includes(country.key),\n    )\n    .map(withCountryAdjustments({ deprecationTimestamps }));\n};\n\nexport const getCountryByKey = (\n  countryKey: string,\n  { deprecationTimestamps }: GetCountryOpts = {\n    deprecationTimestamps: DEFAULT_DEPRECATION_TIMESTAMPS,\n  },\n): Country =>\n  withCountryAdjustments({ deprecationTimestamps })(\n    byKey(dataset.countries, countryKey),\n  );\n\nexport const getCountryByShortKey = (\n  countryShortKey: string,\n  { deprecationTimestamps }: GetCountryOpts = {\n    deprecationTimestamps: DEFAULT_DEPRECATION_TIMESTAMPS,\n  },\n): Country =>\n  withCountryAdjustments({ deprecationTimestamps })(\n    byShortKey(dataset.countries, countryShortKey),\n  );\n\nexport const getStateByKey = (\n  countryKey: string,\n  stateKey: string,\n): Subdivision => {\n  const country =\n    byKey(dataset.countries, countryKey) ||\n    byShortKey(dataset.countries, countryKey);\n  return country && country.subdivisions\n    ? byKey(country.subdivisions.list, stateKey)\n    : null;\n};\n\nexport const getAllCurrencies = (): Currency[] => all(dataset.currencies);\nexport const getCurrencyByKey = (currencyKey: string): Currency =>\n  byKey(dataset.currencies, currencyKey);\n\nexport const getAllLocales = (): Locale[] => all(dataset.locales);\nexport const getLocaleByKey = (localeKey: string): Locale =>\n  byKey(dataset.locales, localeKey.toLowerCase());\n\nexport const getAllTimezones = (): Timezone[] => all(dataset.timezones);\nexport const getTimezoneByKey = (timezoneKey: string): Timezone =>\n  byKey(dataset.timezones, timezoneKey);\n\nexport const getDemoAddresses = (): DemoAddress[] => all(dataset.demoAddresses);\nexport const getDemoAddressByKey = (demoAddressKey: string): DemoAddress =>\n  byKey(dataset.demoAddresses, demoAddressKey);\n\nexport const getAllSupportedLanguages = (): Language[] =>\n  all(dataset.supportedLanguages);\n\nexport const getAllLanguages = (): Language[] => all(dataset.languages);\n\nexport const getDefaultAddressDisplayNames = (): AddressParts =>\n  dataset.addressPartDisplayNames;\n\nexport const mapReplacedSubdivision = (\n  subdivisionKey: string,\n  countryKey: string,\n) => getStateByKey(countryKey, subdivisionKey)?.replacedBy || subdivisionKey;\n\nexport const getRegionsReplacedByRegion = (\n  subdivisionKey: string,\n  countryKey: string,\n) => getStateByKey(countryKey, subdivisionKey)?.replaces || [];\n\nexport default {\n  getAllCountries,\n  getCountryByKey,\n  getCountryByShortKey,\n  getStateByKey,\n  getAllCurrencies,\n  getCurrencyByKey,\n  getAllLocales,\n  getLocaleByKey,\n  getAllTimezones,\n  getTimezoneByKey,\n  getFormattedAddress,\n  getDemoAddresses,\n  getDemoAddressByKey,\n  getAllSupportedLanguages,\n  getAllLanguages,\n  getDefaultAddressDisplayNames,\n  mapReplacedSubdivision,\n  getRegionsReplacedByRegion,\n} as LocaleDatasetApi;\n","import {\n  type FieldOverrides,\n  type Form,\n  type FormField,\n  type MultilineAddressValidation,\n} from '@wix/ambassador-forms-v4-form/types';\n\nexport function applyValidationProperties(\n  multilineAddressOptions?: MultilineAddressValidation,\n) {\n  return (addressForms: Form): Form => {\n    if (multilineAddressOptions?.fields) {\n      const propertiesByTarget = multilineAddressOptions.fields;\n      const modifiedFields = addressForms.fields?.map((field) =>\n        field.target\n          ? overrideFieldValidation(\n              field,\n              propertiesByTarget[\n                field.target! as keyof typeof propertiesByTarget\n              ],\n            )\n          : field,\n      );\n      return { ...addressForms, fields: modifiedFields };\n    } else {\n      return addressForms;\n    }\n  };\n}\n\nfunction overrideFieldValidation(\n  field: FormField,\n  fieldOverrides?: FieldOverrides,\n): FormField {\n  if (fieldOverrides && field.validation) {\n    return {\n      ...field,\n      validation: {\n        ...field.validation,\n        required: fieldOverrides.required ?? field.validation.required,\n      },\n    };\n  } else {\n    return field;\n  }\n}\n","import {\n  type Form,\n  type FormField,\n  type FieldsSettings,\n  type MultilineAddress,\n} from '@wix/ambassador-forms-v4-form/types';\n\nimport { type ValueOf } from './utils';\n\nexport function applyViewProperties(rootView: MultilineAddress = {}) {\n  return (addressForms: Form) => {\n    const fieldSettings = rootView.fieldSettings;\n    if (fieldSettings) {\n      const modifiedFields = addressForms.fields?.map((field) =>\n        field.target\n          ? overrideFieldProperties(\n              field,\n              fieldSettings[field.target as keyof FieldsSettings],\n            )\n          : field,\n      );\n      return { ...addressForms, fields: modifiedFields };\n    } else {\n      return addressForms;\n    }\n  };\n}\n\nfunction overrideFieldProperties(\n  field: FormField,\n  settings?: ValueOf<FieldsSettings>,\n): FormField {\n  if (settings) {\n    return {\n      ...field,\n      hidden: settings.show === undefined ? field.hidden : !settings.show,\n    };\n  } else {\n    return field;\n  }\n}\n","export const COUNTRY_CODES = {\n  AW: 'ABW',\n  AF: 'AFG',\n  AO: 'AGO',\n  AI: 'AIA',\n  AX: 'ALA',\n  AL: 'ALB',\n  AD: 'AND',\n  AN: 'ANT',\n  AE: 'ARE',\n  AR: 'ARG',\n  AM: 'ARM',\n  AS: 'ASM',\n  AQ: 'ATA',\n  TF: 'ATF',\n  AG: 'ATG',\n  AU: 'AUS',\n  AT: 'AUT',\n  AZ: 'AZE',\n  BI: 'BDI',\n  BE: 'BEL',\n  BJ: 'BEN',\n  BQ: 'BES',\n  BF: 'BFA',\n  BD: 'BGD',\n  BG: 'BGR',\n  BH: 'BHR',\n  BS: 'BHS',\n  BA: 'BIH',\n  BL: 'BLM',\n  BY: 'BLR',\n  BZ: 'BLZ',\n  BM: 'BMU',\n  BO: 'BOL',\n  BR: 'BRA',\n  BB: 'BRB',\n  BN: 'BRN',\n  BT: 'BTN',\n  BV: 'BVT',\n  BW: 'BWA',\n  CF: 'CAF',\n  CA: 'CAN',\n  CC: 'CCK',\n  CH: 'CHE',\n  CL: 'CHL',\n  CN: 'CHN',\n  CI: 'CIV',\n  CM: 'CMR',\n  CD: 'COD',\n  CG: 'COG',\n  CK: 'COK',\n  CO: 'COL',\n  KM: 'COM',\n  CV: 'CPV',\n  CR: 'CRI',\n  // Banned country\n  // CU: 'CUB',\n  CW: 'CUW',\n  CX: 'CXR',\n  KY: 'CYM',\n  CY: 'CYP',\n  CZ: 'CZE',\n  DE: 'DEU',\n  DJ: 'DJI',\n  DM: 'DMA',\n  DK: 'DNK',\n  DO: 'DOM',\n  DZ: 'DZA',\n  EC: 'ECU',\n  EG: 'EGY',\n  ER: 'ERI',\n  EH: 'ESH',\n  ES: 'ESP',\n  EE: 'EST',\n  ET: 'ETH',\n  FI: 'FIN',\n  FJ: 'FJI',\n  FK: 'FLK',\n  FR: 'FRA',\n  FO: 'FRO',\n  FM: 'FSM',\n  GA: 'GAB',\n  GB: 'GBR',\n  GE: 'GEO',\n  GG: 'GGY',\n  GH: 'GHA',\n  GI: 'GIB',\n  GN: 'GIN',\n  GP: 'GLP',\n  GM: 'GMB',\n  GW: 'GNB',\n  GQ: 'GNQ',\n  GR: 'GRC',\n  GD: 'GRD',\n  GL: 'GRL',\n  GT: 'GTM',\n  GF: 'GUF',\n  GU: 'GUM',\n  GY: 'GUY',\n  HK: 'HKG',\n  HM: 'HMD',\n  HN: 'HND',\n  HR: 'HRV',\n  HT: 'HTI',\n  HU: 'HUN',\n  ID: 'IDN',\n  IM: 'IMN',\n  IN: 'IND',\n  IO: 'IOT',\n  IE: 'IRL',\n  // Banned country\n  // IR: 'IRN',\n  IQ: 'IRQ',\n  IS: 'ISL',\n  IL: 'ISR',\n  IT: 'ITA',\n  JM: 'JAM',\n  JE: 'JEY',\n  JO: 'JOR',\n  JP: 'JPN',\n  KZ: 'KAZ',\n  KE: 'KEN',\n  KG: 'KGZ',\n  KH: 'KHM',\n  KI: 'KIR',\n  KN: 'KNA',\n  KR: 'KOR',\n  KW: 'KWT',\n  LA: 'LAO',\n  LB: 'LBN',\n  LR: 'LBR',\n  LY: 'LBY',\n  LC: 'LCA',\n  LI: 'LIE',\n  LK: 'LKA',\n  LS: 'LSO',\n  LT: 'LTU',\n  LU: 'LUX',\n  LV: 'LVA',\n  MO: 'MAC',\n  MF: 'MAF',\n  MA: 'MAR',\n  MC: 'MCO',\n  MD: 'MDA',\n  MG: 'MDG',\n  MV: 'MDV',\n  MX: 'MEX',\n  MH: 'MHL',\n  MK: 'MKD',\n  ML: 'MLI',\n  MT: 'MLT',\n  MM: 'MMR',\n  ME: 'MNE',\n  MN: 'MNG',\n  MP: 'MNP',\n  MZ: 'MOZ',\n  MR: 'MRT',\n  MS: 'MSR',\n  MQ: 'MTQ',\n  MU: 'MUS',\n  MW: 'MWI',\n  MY: 'MYS',\n  YT: 'MYT',\n  NA: 'NAM',\n  NC: 'NCL',\n  NE: 'NER',\n  NF: 'NFK',\n  NG: 'NGA',\n  NI: 'NIC',\n  NU: 'NIU',\n  NL: 'NLD',\n  NO: 'NOR',\n  NP: 'NPL',\n  NR: 'NRU',\n  NZ: 'NZL',\n  OM: 'OMN',\n  PK: 'PAK',\n  PA: 'PAN',\n  PN: 'PCN',\n  PE: 'PER',\n  PH: 'PHL',\n  PW: 'PLW',\n  PG: 'PNG',\n  PL: 'POL',\n  PR: 'PRI',\n  // Banned country\n  // KP: 'PRK',\n  PT: 'PRT',\n  PY: 'PRY',\n  PS: 'PSE',\n  PF: 'PYF',\n  QA: 'QAT',\n  RE: 'REU',\n  RO: 'ROU',\n  RU: 'RUS',\n  RW: 'RWA',\n  SA: 'SAU',\n  SD: 'SDN',\n  SN: 'SEN',\n  SG: 'SGP',\n  GS: 'SGS',\n  SH: 'SHN',\n  SJ: 'SJM',\n  SB: 'SLB',\n  SL: 'SLE',\n  SV: 'SLV',\n  SM: 'SMR',\n  SO: 'SOM',\n  PM: 'SPM',\n  RS: 'SRB',\n  SS: 'SSD',\n  ST: 'STP',\n  SR: 'SUR',\n  SK: 'SVK',\n  SI: 'SVN',\n  SE: 'SWE',\n  SZ: 'SWZ',\n  SX: 'SXM',\n  SC: 'SYC',\n  // Banned country\n  // SY: 'SYR',\n  TC: 'TCA',\n  TD: 'TCD',\n  TG: 'TGO',\n  TH: 'THA',\n  TJ: 'TJK',\n  TK: 'TKL',\n  TM: 'TKM',\n  TL: 'TLS',\n  TO: 'TON',\n  TT: 'TTO',\n  TN: 'TUN',\n  TR: 'TUR',\n  TV: 'TUV',\n  TW: 'TWN',\n  TZ: 'TZA',\n  UG: 'UGA',\n  UA: 'UKR',\n  UM: 'UMI',\n  UY: 'URY',\n  US: 'USA',\n  UZ: 'UZB',\n  VA: 'VAT',\n  VC: 'VCT',\n  VE: 'VEN',\n  VG: 'VGB',\n  VI: 'VIR',\n  VN: 'VNM',\n  VU: 'VUT',\n  WF: 'WLF',\n  WS: 'WSM',\n  XK: 'XKX',\n  YE: 'YEM',\n  ZA: 'ZAF',\n  ZM: 'ZMB',\n  ZW: 'ZWE',\n} as const;\n\nexport type CountryCode = keyof typeof COUNTRY_CODES;\nexport type CountryCodeAlpha3 = (typeof COUNTRY_CODES)[CountryCode];\n","import {\n  type FormField,\n  type MultilineAddressValidation,\n} from '@wix/ambassador-forms-v4-form/types';\n\nimport { COUNTRY_CODES } from './country-codes';\n\nexport function getCountryField(\n  // required will be replaced with FieldSettings country once we have it in the proto\n  required?: boolean,\n  multilineAddressOptions?: MultilineAddressValidation,\n): FormField {\n  return {\n    id: '1e445376-d280-4cda-9ffa-18b61c2881c7',\n    target: 'country',\n    pii: true,\n    hidden: false,\n    view: {\n      fieldType: 'MLA_COUNTRY',\n      options: multilineAddressOptions?.allowedCountries?.length\n        ? multilineAddressOptions?.allowedCountries.map((country) => ({\n            value: country,\n          }))\n        : Object.keys(COUNTRY_CODES).map((country) => ({ value: country })),\n    },\n    validation: {\n      required: Boolean(required),\n      string: {\n        enum: multilineAddressOptions?.allowedCountries?.length\n          ? multilineAddressOptions?.allowedCountries\n          : Object.keys(COUNTRY_CODES),\n      },\n    },\n  };\n}\n\nexport function getCountryFieldLayout() {\n  return {\n    fieldId: '1e445376-d280-4cda-9ffa-18b61c2881c7',\n    row: 0,\n    column: 0,\n    width: 12,\n    height: 1,\n  };\n}\n","import { type Subdivision } from '@wix/locale-dataset-data';\n\nexport const mapSubdivisionReplacedBy = (\n  subdivisions: Subdivision[],\n  countryCode: string,\n) => {\n  return subdivisions.reduce<Subdivision[]>((acc, item) => {\n    const alreadyExists = acc.some(\n      (subdivision) =>\n        subdivision.key === item.replacedBy || subdivision.key === item.key,\n    );\n    if (alreadyExists) {\n      return acc;\n    }\n\n    if (item.replacedBy === undefined) {\n      acc.push({\n        displayName: `locale-dataset.states.${countryCode}.${item.key}`,\n        key: item.key,\n      });\n      return acc;\n    }\n\n    acc.push({\n      displayName: `locale-dataset.states.${countryCode}.${\n        item.replacedBy || item.key\n      }`,\n      key: item.replacedBy || item.key,\n    });\n    return acc;\n  }, []);\n};\n","import {\n  type Form,\n  type FormField,\n  ValidationFormat,\n  type MultilineAddress,\n} from '@wix/ambassador-forms-v4-form/types';\nimport { getCountryByShortKey } from '@wix/locale-dataset-javascript';\n\nimport { applyValidationProperties } from './apply-validation-properties';\nimport { applyViewProperties } from './apply-view-properties';\nimport { ADDRESS_FORM_ID_BY_COUNTRY, DEFAULT_COUNTRY } from './constants';\nimport { COUNTRY_CODES, type CountryCode } from './country-codes';\nimport { getCountryField } from './get-country-field';\nimport { mapSubdivisionReplacedBy } from './map-subdivision-replaced-by';\n\ntype AddressFormIdByCountryMap = typeof ADDRESS_FORM_ID_BY_COUNTRY;\ntype AddressFormByCountryMap = { [country: string]: Form };\n\nexport class MultilineAddressToolkit {\n  private readonly addressFormByCountry: AddressFormByCountryMap;\n\n  constructor(\n    addressForms: Form[],\n    addressFormIdByCountry: typeof ADDRESS_FORM_ID_BY_COUNTRY = ADDRESS_FORM_ID_BY_COUNTRY,\n  ) {\n    this.addressFormByCountry = this.mapFormsByCountry(\n      addressFormIdByCountry,\n      addressForms,\n    );\n  }\n\n  getFormByCountry(country?: string, rootFormField?: FormField): Form {\n    this.assertMultiLineAddressField(rootFormField);\n\n    const addressForm =\n      country && this.addressFormByCountry[country]\n        ? this.addressFormByCountry[country]\n        : this.addressFormByCountry[DEFAULT_COUNTRY];\n\n    if (!addressForm) {\n      throw new Error(`No form suitable fo country: ${country}`);\n    }\n\n    return rootFormField\n      ? this.addCountryField(\n          this.addSubdivisions(\n            this.applyRootFormSettingsOverrides(addressForm, rootFormField),\n            country,\n          ),\n          rootFormField,\n        )\n      : addressForm;\n  }\n\n  /**\n   * Normalizes empty values in submission to empty objects\n   * This is needed to pass validation when address is required\n   * @param submission - submission to normalize\n   * @param form - form to get fields from\n   */\n  normalizeEmptyValues = (\n    submission: Record<string, unknown>,\n    form: Form,\n  ): Record<string, unknown> => {\n    return Object.keys(submission).reduce<Record<string, unknown>>(\n      (acc, key) => {\n        const field = form.fields?.find((_field) => _field.target === key);\n        if (\n          field?.validation?.required &&\n          !field?.hidden &&\n          field?.validation?.predefined?.format ===\n            ValidationFormat.MULTILINE_ADDRESS\n        ) {\n          acc[key] = submission[key] || {};\n        } else {\n          acc[key] = submission[key];\n        }\n\n        return acc;\n      },\n      {},\n    );\n  };\n\n  addCountryField = (form: Form, rootFormField: FormField) => {\n    return {\n      ...form,\n      fields: [\n        getCountryField(\n          rootFormField.validation?.required && !rootFormField?.hidden,\n          rootFormField.validation?.predefined?.multilineAddressOptions,\n        ),\n        ...(form.fields ?? []),\n      ],\n    };\n  };\n\n  addSubdivisions = (form: Form, countryCode?: string) => {\n    if (!countryCode) {\n      return form;\n    }\n\n    const country = getCountryByShortKey(countryCode);\n    const countryCodeAlpha3 =\n      countryCode && countryCode in COUNTRY_CODES\n        ? COUNTRY_CODES[countryCode as CountryCode]\n        : undefined;\n    const subdivisions = mapSubdivisionReplacedBy(\n      country?.subdivisions?.list || [],\n      countryCodeAlpha3!,\n    );\n\n    if (!subdivisions?.length) {\n      return form;\n    }\n\n    return {\n      ...form,\n      fields: form.fields?.map((field) => {\n        if (field?.target === 'subdivision') {\n          return {\n            ...field,\n            view: {\n              ...field.view,\n              options: subdivisions.map((subdivision) => ({\n                value: subdivision.key,\n                label: subdivision.displayName,\n              })),\n            },\n            validation: {\n              ...field.validation,\n              string: {\n                ...field.validation?.string,\n                enum: subdivisions.map((subdivision) => subdivision.key),\n              },\n            },\n          };\n        }\n        return field;\n      }),\n    };\n  };\n\n  /**\n   * Adds hardcoded country field, which is needed to build validation.\n   * Address forms themselves not contain country field\n   * @param rootFormField - root form field\n   * @param submissionValue - value of submission, to get country info\n   */\n  getFormForValidation = (\n    rootFormField: FormField,\n    submissionValue?: unknown,\n  ): Form => {\n    const country = this.getCountry(submissionValue);\n    return this.getFormByCountry(country, rootFormField);\n  };\n\n  private applyRootFormSettingsOverrides(\n    addressForm: Form,\n    rootFormField: FormField,\n  ) {\n    const modifications: ((form: Form) => Form)[] = rootFormField\n      ? [\n          applyViewProperties(rootFormField.view as MultilineAddress),\n          applyValidationProperties(\n            rootFormField.validation?.predefined?.multilineAddressOptions,\n          ),\n        ]\n      : [];\n    return modifications.reduce((acc, func) => func(acc), addressForm);\n  }\n\n  private assertMultiLineAddressField(rootFormField?: FormField) {\n    if (\n      rootFormField &&\n      rootFormField.validation?.predefined?.format !==\n        ValidationFormat.MULTILINE_ADDRESS\n    ) {\n      throw new Error(\n        `Only field ${ValidationFormat.MULTILINE_ADDRESS} is supported`,\n      );\n    }\n  }\n\n  private mapFormsByCountry(\n    formIdByCountryMap: AddressFormIdByCountryMap,\n    addressForms: Form[],\n  ): AddressFormByCountryMap {\n    const formsById = addressForms.reduce<{ [id: string]: Form }>(\n      (acc, form) => {\n        acc[form.id!] = form;\n        return acc;\n      },\n      {},\n    );\n\n    return Object.fromEntries(\n      Object.entries(formIdByCountryMap).map(([country, formId]) => {\n        const form = formsById[formId];\n        if (form) {\n          return [country, form];\n        } else {\n          throw new Error(`Missing form template for country ${country}`);\n        }\n      }),\n    );\n  }\n\n  private getCountry(value: unknown): string {\n    if (value && typeof value === 'object' && 'country' in value) {\n      return (value as { country: string }).country;\n    }\n    return DEFAULT_COUNTRY;\n  }\n}\n","export const getMultilineAddressValidation = (value: boolean = false) => {\n  return {\n    country: {\n      required: value,\n    },\n    addressLine: {\n      required: value,\n    },\n    addressLine2: {\n      required: value,\n    },\n    city: {\n      required: value,\n    },\n    postalCode: {\n      required: value,\n    },\n    subdivision: {\n      required: value,\n    },\n    streetName: {\n      required: value,\n    },\n    streetNumber: {\n      required: value,\n    },\n  };\n};\n","import localeDataset from '@wix/locale-dataset-javascript';\n\nimport { type MultilineAddressSubmission } from './types';\n\n// Formatting copied from\n// https://github.com/wix-private/address-formatting-evaluator/blob/master/packages/address-formatting-evaluator-client/src/utils.ts\ntype StreetAddress = {\n  name?: string;\n  number?: string;\n  apt?: string;\n};\n\nexport type TranslateCountry = (\n  displayNameKey: string,\n  language?: string,\n) => string;\n\nexport interface FormatMultilineAddressOptions {\n  translateCountry?: TranslateCountry;\n  language?: string;\n}\n\nfunction formatStreetNumber(streetAddress: StreetAddress): string {\n  const number = streetAddress?.number || '';\n  const apt = streetAddress?.apt ? `-${streetAddress.apt}` : '';\n  return number ? `${number}${apt}` : '';\n}\n\nfunction formatAddressLine(\n  isStreetFormat: boolean,\n  streetAddress: StreetAddress,\n  addressLine?: string,\n): string | undefined {\n  if (!isStreetFormat) {\n    return addressLine;\n  }\n\n  const streetNumber = formatStreetNumber(streetAddress);\n  return `${streetAddress?.name || ''} ${streetNumber}`;\n}\n\nexport function formatMultilineAddress(\n  submission: MultilineAddressSubmission,\n  options?: FormatMultilineAddressOptions,\n): string {\n  const country = submission.country\n    ? localeDataset.getCountryByShortKey(submission.country)\n    : undefined;\n  const streetAddress: StreetAddress = {\n    name: submission.streetName,\n    number: submission.streetNumber,\n    apt: (submission as any).apartment,\n  };\n  const isStreetFormat = Object.values(streetAddress).some(Boolean);\n\n  const resolvedCountry =\n    country && options?.translateCountry\n      ? options.translateCountry(country.displayName, options.language)\n      : submission.country;\n\n  const formattedAddress = localeDataset.getFormattedAddress(\n    {\n      country: resolvedCountry,\n      subdivision: submission.subdivision,\n      city: submission.city,\n      zipCode: submission.postalCode,\n      addressLine1: formatAddressLine(\n        isStreetFormat,\n        streetAddress,\n        submission.addressLine,\n      ),\n      addressLine2: submission.addressLine2,\n    },\n    country?.key,\n  );\n  return formattedAddress.replace(/^[\\s,]+|[\\s,]+$/g, '');\n}\n","export { ADDRESS_FORM_ID_BY_COUNTRY } from './lib/constants';\nexport { MultilineAddressToolkit } from './lib/multiline-address-toolkit';\nexport {\n  getCountryField,\n  getCountryFieldLayout,\n} from './lib/get-country-field';\nexport * from './lib/country-codes';\nexport * from './lib/map-subdivision-replaced-by';\nexport { getMultilineAddressValidation } from './lib/get-validation';\nexport {\n  formatMultilineAddress,\n  type TranslateCountry,\n} from './lib/format-multiline-address';\nexport type { MultilineAddressSubmission } from './lib/types';\n","// Copy-pasted from:\r\n// https://github.com/substack/semver-compare/blob/master/index.js\r\n//\r\n// Inlining this function because some users reported issues with\r\n// importing from `semver-compare` in a browser with ES6 \"native\" modules.\r\n//\r\n// Fixes `semver-compare` not being able to compare versions with alpha/beta/etc \"tags\".\r\n// https://github.com/catamphetamine/libphonenumber-js/issues/381\r\nexport default function(a, b) {\r\n    a = a.split('-')\r\n    b = b.split('-')\r\n    var pa = a[0].split('.')\r\n    var pb = b[0].split('.')\r\n    for (var i = 0; i < 3; i++) {\r\n        var na = Number(pa[i])\r\n        var nb = Number(pb[i])\r\n        if (na > nb) return 1\r\n        if (nb > na) return -1\r\n        if (!isNaN(na) && isNaN(nb)) return 1\r\n        if (isNaN(na) && !isNaN(nb)) return -1\r\n    }\r\n    if (a[1] && b[1]) {\r\n        return a[1] > b[1] ? 1 : (a[1] < b[1] ? -1 : 0)\r\n    }\r\n    return !a[1] && b[1] ? 1 : (a[1] && !b[1] ? -1 : 0)\r\n}","const objectConstructor = {}.constructor;\r\n\r\nexport default function isObject(object) {\r\n  return object !== undefined && object !== null && object.constructor === objectConstructor;\r\n}\r\n","import compare from './tools/semver-compare.js'\r\nimport isObject from './helpers/isObject.js'\r\n\r\n// Added \"possibleLengths\" and renamed\r\n// \"country_phone_code_to_countries\" to \"country_calling_codes\".\r\nconst V2 = '1.0.18'\r\n\r\n// Added \"idd_prefix\" and \"default_idd_prefix\".\r\nconst V3 = '1.2.0'\r\n\r\n// Moved `001` country code to \"nonGeographic\" section of metadata.\r\nconst V4 = '1.7.35'\r\n\r\nconst DEFAULT_EXT_PREFIX = ' ext. '\r\n\r\nconst CALLING_CODE_REG_EXP = /^\\d+$/\r\n\r\n/**\r\n * See: https://gitlab.com/catamphetamine/libphonenumber-js/blob/master/METADATA.md\r\n */\r\nexport default class Metadata {\r\n\tconstructor(metadata) {\r\n\t\tvalidateMetadata(metadata)\r\n\t\tthis.metadata = metadata\r\n\t\tsetVersion.call(this, metadata)\r\n\t}\r\n\r\n\tgetCountries() {\r\n\t\treturn Object.keys(this.metadata.countries).filter(_ => _ !== '001')\r\n\t}\r\n\r\n\tgetCountryMetadata(countryCode) {\r\n\t\treturn this.metadata.countries[countryCode]\r\n\t}\r\n\r\n\tnonGeographic() {\r\n\t\tif (this.v1 || this.v2 || this.v3) return\r\n\t\t// `nonGeographical` was a typo.\r\n\t\t// It's present in metadata generated from `1.7.35` to `1.7.37`.\r\n\t\t// The test case could be found by searching for \"nonGeographical\".\r\n\t\treturn this.metadata.nonGeographic || this.metadata.nonGeographical\r\n\t}\r\n\r\n\thasCountry(country) {\r\n\t\treturn this.getCountryMetadata(country) !== undefined\r\n\t}\r\n\r\n\thasCallingCode(callingCode) {\r\n\t\tif (this.getCountryCodesForCallingCode(callingCode)) {\r\n\t\t\treturn true\r\n\t\t}\r\n\t\tif (this.nonGeographic()) {\r\n\t\t\tif (this.nonGeographic()[callingCode]) {\r\n\t\t\t\treturn true\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\t// A hacky workaround for old custom metadata (generated before V4).\r\n\t\t\tconst countryCodes = this.countryCallingCodes()[callingCode]\r\n\t\t\tif (countryCodes && countryCodes.length === 1 && countryCodes[0] === '001') {\r\n\t\t\t\treturn true\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tisNonGeographicCallingCode(callingCode) {\r\n\t\tif (this.nonGeographic()) {\r\n\t\t\treturn this.nonGeographic()[callingCode] ? true : false\r\n\t\t} else {\r\n\t\t\treturn this.getCountryCodesForCallingCode(callingCode) ? false : true\r\n\t\t}\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tcountry(countryCode) {\r\n\t\treturn this.selectNumberingPlan(countryCode)\r\n\t}\r\n\r\n\tselectNumberingPlan(countryCode, callingCode) {\r\n\t\t// Supports just passing `callingCode` as the first argument.\r\n\t\tif (countryCode && CALLING_CODE_REG_EXP.test(countryCode)) {\r\n\t\t\tcallingCode = countryCode\r\n\t\t\tcountryCode = null\r\n\t\t}\r\n\t\tif (countryCode && countryCode !== '001') {\r\n\t\t\tif (!this.hasCountry(countryCode)) {\r\n\t\t\t\tthrow new Error(`Unknown country: ${countryCode}`)\r\n\t\t\t}\r\n\t\t\tthis.numberingPlan = new NumberingPlan(this.getCountryMetadata(countryCode), this)\r\n\t\t} else if (callingCode) {\r\n\t\t\tif (!this.hasCallingCode(callingCode)) {\r\n\t\t\t\tthrow new Error(`Unknown calling code: ${callingCode}`)\r\n\t\t\t}\r\n\t\t\tthis.numberingPlan = new NumberingPlan(this.getNumberingPlanMetadata(callingCode), this)\r\n\t\t} else {\r\n\t\t\tthis.numberingPlan = undefined\r\n\t\t}\r\n\t\treturn this\r\n\t}\r\n\r\n\tgetCountryCodesForCallingCode(callingCode) {\r\n\t\tconst countryCodes = this.countryCallingCodes()[callingCode]\r\n\t\tif (countryCodes) {\r\n\t\t\t// Metadata before V4 included \"non-geographic entity\" calling codes\r\n\t\t\t// inside `country_calling_codes` (for example, `\"881\":[\"001\"]`).\r\n\t\t\t// Now the semantics of `country_calling_codes` has changed:\r\n\t\t\t// it's specifically for \"countries\" now.\r\n\t\t\t// Older versions of custom metadata will simply skip parsing\r\n\t\t\t// \"non-geographic entity\" phone numbers with new versions\r\n\t\t\t// of this library: it's not considered a bug,\r\n\t\t\t// because such numbers are extremely rare,\r\n\t\t\t// and developers extremely rarely use custom metadata.\r\n\t\t\tif (countryCodes.length === 1 && countryCodes[0].length === 3) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t\treturn countryCodes\r\n\t\t}\r\n\t}\r\n\r\n\tgetCountryCodeForCallingCode(callingCode) {\r\n\t\tconst countryCodes = this.getCountryCodesForCallingCode(callingCode)\r\n\t\tif (countryCodes) {\r\n\t\t\treturn countryCodes[0]\r\n\t\t}\r\n\t}\r\n\r\n\tgetNumberingPlanMetadata(callingCode) {\r\n\t\tconst countryCode = this.getCountryCodeForCallingCode(callingCode)\r\n\t\tif (countryCode) {\r\n\t\t\treturn this.getCountryMetadata(countryCode)\r\n\t\t}\r\n\t\tif (this.nonGeographic()) {\r\n\t\t\tconst metadata = this.nonGeographic()[callingCode]\r\n\t\t\tif (metadata) {\r\n\t\t\t\treturn metadata\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\t// A hacky workaround for old custom metadata (generated before V4).\r\n\t\t\t// In that metadata, there was no concept of \"non-geographic\" metadata\r\n\t\t\t// so metadata for `001` country code was stored along with other countries.\r\n\t\t\t// The test case can be found by searching for:\r\n\t\t\t// \"should work around `nonGeographic` metadata not existing\".\r\n\t\t\tconst countryCodes = this.countryCallingCodes()[callingCode]\r\n\t\t\tif (countryCodes && countryCodes.length === 1 && countryCodes[0] === '001') {\r\n\t\t\t\treturn this.metadata.countries['001']\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tcountryCallingCode() {\r\n\t\treturn this.numberingPlan.callingCode()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tIDDPrefix() {\r\n\t\treturn this.numberingPlan.IDDPrefix()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tdefaultIDDPrefix() {\r\n\t\treturn this.numberingPlan.defaultIDDPrefix()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tnationalNumberPattern() {\r\n\t\treturn this.numberingPlan.nationalNumberPattern()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tpossibleLengths() {\r\n\t\treturn this.numberingPlan.possibleLengths()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tformats() {\r\n\t\treturn this.numberingPlan.formats()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tnationalPrefixForParsing() {\r\n\t\treturn this.numberingPlan.nationalPrefixForParsing()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tnationalPrefixTransformRule() {\r\n\t\treturn this.numberingPlan.nationalPrefixTransformRule()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tleadingDigits() {\r\n\t\treturn this.numberingPlan.leadingDigits()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\thasTypes() {\r\n\t\treturn this.numberingPlan.hasTypes()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\ttype(type) {\r\n\t\treturn this.numberingPlan.type(type)\r\n\t}\r\n\r\n\t// Deprecated.\r\n\text() {\r\n\t\treturn this.numberingPlan.ext()\r\n\t}\r\n\r\n\tcountryCallingCodes() {\r\n\t\tif (this.v1) return this.metadata.country_phone_code_to_countries\r\n\t\treturn this.metadata.country_calling_codes\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tchooseCountryByCountryCallingCode(callingCode) {\r\n\t\treturn this.selectNumberingPlan(callingCode)\r\n\t}\r\n\r\n\thasSelectedNumberingPlan() {\r\n\t\treturn this.numberingPlan !== undefined\r\n\t}\r\n}\r\n\r\nclass NumberingPlan {\r\n\tconstructor(metadata, globalMetadataObject) {\r\n\t\tthis.globalMetadataObject = globalMetadataObject\r\n\t\tthis.metadata = metadata\r\n\t\tsetVersion.call(this, globalMetadataObject.metadata)\r\n\t}\r\n\r\n\tcallingCode() {\r\n\t\treturn this.metadata[0]\r\n\t}\r\n\r\n\t// Formatting information for regions which share\r\n\t// a country calling code is contained by only one region\r\n\t// for performance reasons. For example, for NANPA region\r\n\t// (\"North American Numbering Plan Administration\",\r\n\t//  which includes USA, Canada, Cayman Islands, Bahamas, etc)\r\n\t// it will be contained in the metadata for `US`.\r\n\tgetDefaultCountryMetadataForRegion() {\r\n\t\treturn this.globalMetadataObject.getNumberingPlanMetadata(this.callingCode())\r\n\t}\r\n\r\n\t// Is always present.\r\n\tIDDPrefix() {\r\n\t\tif (this.v1 || this.v2) return\r\n\t\treturn this.metadata[1]\r\n\t}\r\n\r\n\t// Is only present when a country supports multiple IDD prefixes.\r\n\tdefaultIDDPrefix() {\r\n\t\tif (this.v1 || this.v2) return\r\n\t\treturn this.metadata[12]\r\n\t}\r\n\r\n\tnationalNumberPattern() {\r\n\t\tif (this.v1 || this.v2) return this.metadata[1]\r\n\t\treturn this.metadata[2]\r\n\t}\r\n\r\n\t// \"possible length\" data is always present in Google's metadata.\r\n\tpossibleLengths() {\r\n\t\tif (this.v1) return\r\n\t\treturn this.metadata[this.v2 ? 2 : 3]\r\n\t}\r\n\r\n\t_getFormats(metadata) {\r\n\t\treturn metadata[this.v1 ? 2 : this.v2 ? 3 : 4]\r\n\t}\r\n\r\n\t// For countries of the same region (e.g. NANPA)\r\n\t// formats are all stored in the \"main\" country for that region.\r\n\t// E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\r\n\tformats() {\r\n\t\tconst formats = this._getFormats(this.metadata) || this._getFormats(this.getDefaultCountryMetadataForRegion()) || []\r\n\t\treturn formats.map(_ => new Format(_, this))\r\n\t}\r\n\r\n\tnationalPrefix() {\r\n\t\treturn this.metadata[this.v1 ? 3 : this.v2 ? 4 : 5]\r\n\t}\r\n\r\n\t_getNationalPrefixFormattingRule(metadata) {\r\n\t\treturn metadata[this.v1 ? 4 : this.v2 ? 5 : 6]\r\n\t}\r\n\r\n\t// For countries of the same region (e.g. NANPA)\r\n\t// national prefix formatting rule is stored in the \"main\" country for that region.\r\n\t// E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\r\n\tnationalPrefixFormattingRule() {\r\n\t\treturn this._getNationalPrefixFormattingRule(this.metadata) || this._getNationalPrefixFormattingRule(this.getDefaultCountryMetadataForRegion())\r\n\t}\r\n\r\n\t_nationalPrefixForParsing() {\r\n\t\treturn this.metadata[this.v1 ? 5 : this.v2 ? 6 : 7]\r\n\t}\r\n\r\n\tnationalPrefixForParsing() {\r\n\t\t// If `national_prefix_for_parsing` is not set explicitly,\r\n\t\t// then infer it from `national_prefix` (if any)\r\n\t\treturn this._nationalPrefixForParsing() || this.nationalPrefix()\r\n\t}\r\n\r\n\tnationalPrefixTransformRule() {\r\n\t\treturn this.metadata[this.v1 ? 6 : this.v2 ? 7 : 8]\r\n\t}\r\n\r\n\t_getNationalPrefixIsOptionalWhenFormatting() {\r\n\t\treturn !!this.metadata[this.v1 ? 7 : this.v2 ? 8 : 9]\r\n\t}\r\n\r\n\t// For countries of the same region (e.g. NANPA)\r\n\t// \"national prefix is optional when formatting\" flag is\r\n\t// stored in the \"main\" country for that region.\r\n\t// E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\r\n\tnationalPrefixIsOptionalWhenFormattingInNationalFormat() {\r\n\t\treturn this._getNationalPrefixIsOptionalWhenFormatting(this.metadata) ||\r\n\t\t\tthis._getNationalPrefixIsOptionalWhenFormatting(this.getDefaultCountryMetadataForRegion())\r\n\t}\r\n\r\n\tleadingDigits() {\r\n\t\treturn this.metadata[this.v1 ? 8 : this.v2 ? 9 : 10]\r\n\t}\r\n\r\n\ttypes() {\r\n\t\treturn this.metadata[this.v1 ? 9 : this.v2 ? 10 : 11]\r\n\t}\r\n\r\n\thasTypes() {\r\n\t\t// Versions 1.2.0 - 1.2.4: can be `[]`.\r\n\t\t/* istanbul ignore next */\r\n\t\tif (this.types() && this.types().length === 0) {\r\n\t\t\treturn false\r\n\t\t}\r\n\t\t// Versions <= 1.2.4: can be `undefined`.\r\n\t\t// Version >= 1.2.5: can be `0`.\r\n\t\treturn !!this.types()\r\n\t}\r\n\r\n\ttype(type) {\r\n\t\tif (this.hasTypes() && getType(this.types(), type)) {\r\n\t\t\treturn new Type(getType(this.types(), type), this)\r\n\t\t}\r\n\t}\r\n\r\n\text() {\r\n\t\tif (this.v1 || this.v2) return DEFAULT_EXT_PREFIX\r\n\t\treturn this.metadata[13] || DEFAULT_EXT_PREFIX\r\n\t}\r\n}\r\n\r\nclass Format {\r\n\tconstructor(format, metadata) {\r\n\t\tthis._format = format\r\n\t\tthis.metadata = metadata\r\n\t}\r\n\r\n\tpattern() {\r\n\t\treturn this._format[0]\r\n\t}\r\n\r\n\tformat() {\r\n\t\treturn this._format[1]\r\n\t}\r\n\r\n\tleadingDigitsPatterns() {\r\n\t\treturn this._format[2] || []\r\n\t}\r\n\r\n\tnationalPrefixFormattingRule() {\r\n\t\treturn this._format[3] || this.metadata.nationalPrefixFormattingRule()\r\n\t}\r\n\r\n\tnationalPrefixIsOptionalWhenFormattingInNationalFormat() {\r\n\t\treturn !!this._format[4] || this.metadata.nationalPrefixIsOptionalWhenFormattingInNationalFormat()\r\n\t}\r\n\r\n\tnationalPrefixIsMandatoryWhenFormattingInNationalFormat() {\r\n\t\t// National prefix is omitted if there's no national prefix formatting rule\r\n\t\t// set for this country, or when the national prefix formatting rule\r\n\t\t// contains no national prefix itself, or when this rule is set but\r\n\t\t// national prefix is optional for this phone number format\r\n\t\t// (and it is not enforced explicitly)\r\n\t\treturn this.usesNationalPrefix() && !this.nationalPrefixIsOptionalWhenFormattingInNationalFormat()\r\n\t}\r\n\r\n\t// Checks whether national prefix formatting rule contains national prefix.\r\n\tusesNationalPrefix() {\r\n\t\treturn this.nationalPrefixFormattingRule() &&\r\n\t\t\t// Check that national prefix formatting rule is not a \"dummy\" one.\r\n\t\t\t!FIRST_GROUP_ONLY_PREFIX_PATTERN.test(this.nationalPrefixFormattingRule())\r\n\t\t\t// In compressed metadata, `this.nationalPrefixFormattingRule()` is `0`\r\n\t\t\t// when `national_prefix_formatting_rule` is not present.\r\n\t\t\t// So, `true` or `false` are returned explicitly here, so that\r\n\t\t\t// `0` number isn't returned.\r\n\t\t\t? true\r\n\t\t\t: false\r\n\t}\r\n\r\n\tinternationalFormat() {\r\n\t\treturn this._format[5] || this.format()\r\n\t}\r\n}\r\n\r\n/**\r\n * A pattern that is used to determine if the national prefix formatting rule\r\n * has the first group only, i.e., does not start with the national prefix.\r\n * Note that the pattern explicitly allows for unbalanced parentheses.\r\n */\r\nconst FIRST_GROUP_ONLY_PREFIX_PATTERN = /^\\(?\\$1\\)?$/\r\n\r\nclass Type {\r\n\tconstructor(type, metadata) {\r\n\t\tthis.type = type\r\n\t\tthis.metadata = metadata\r\n\t}\r\n\r\n\tpattern() {\r\n\t\tif (this.metadata.v1) return this.type\r\n\t\treturn this.type[0]\r\n\t}\r\n\r\n\tpossibleLengths() {\r\n\t\tif (this.metadata.v1) return\r\n\t\treturn this.type[1] || this.metadata.possibleLengths()\r\n\t}\r\n}\r\n\r\nfunction getType(types, type) {\r\n\tswitch (type) {\r\n\t\tcase 'FIXED_LINE':\r\n\t\t\treturn types[0]\r\n\t\tcase 'MOBILE':\r\n\t\t\treturn types[1]\r\n\t\tcase 'TOLL_FREE':\r\n\t\t\treturn types[2]\r\n\t\tcase 'PREMIUM_RATE':\r\n\t\t\treturn types[3]\r\n\t\tcase 'PERSONAL_NUMBER':\r\n\t\t\treturn types[4]\r\n\t\tcase 'VOICEMAIL':\r\n\t\t\treturn types[5]\r\n\t\tcase 'UAN':\r\n\t\t\treturn types[6]\r\n\t\tcase 'PAGER':\r\n\t\t\treturn types[7]\r\n\t\tcase 'VOIP':\r\n\t\t\treturn types[8]\r\n\t\tcase 'SHARED_COST':\r\n\t\t\treturn types[9]\r\n\t}\r\n}\r\n\r\nexport function validateMetadata(metadata) {\r\n\tif (!metadata) {\r\n\t\tthrow new Error('[libphonenumber-js] `metadata` argument not passed. Check your arguments.')\r\n\t}\r\n\r\n\t// `country_phone_code_to_countries` was renamed to `country_calling_codes` in `1.0.18`.\r\n\t// For that reason, it's not used in this detection algorithm.\r\n\t// Instead, it detects by `countries: {}` property existence.\r\n\tif (!isObject(metadata) || !isObject(metadata.countries)) {\r\n\t\tthrow new Error(`[libphonenumber-js] \\`metadata\\` argument was passed but it's not a valid metadata. Must be an object having \\`.countries\\` child object property. Got ${isObject(metadata) ? 'an object of shape: { ' + Object.keys(metadata).join(', ') + ' }' : 'a ' + typeOf(metadata) + ': ' + metadata}.`)\r\n\t}\r\n}\r\n\r\n// Babel transforms `typeof` into some \"branches\"\r\n// so istanbul will show this as \"branch not covered\".\r\n/* istanbul ignore next */\r\nconst typeOf = _ => typeof _\r\n\r\n/**\r\n * Returns extension prefix for a country.\r\n * @param  {string} country\r\n * @param  {object} metadata\r\n * @return {string?}\r\n * @example\r\n * // Returns \" ext. \"\r\n * getExtPrefix(\"US\")\r\n */\r\nexport function getExtPrefix(country, metadata) {\r\n\tmetadata = new Metadata(metadata)\r\n\tif (metadata.hasCountry(country)) {\r\n\t\treturn metadata.selectNumberingPlan(country).ext()\r\n\t}\r\n\treturn DEFAULT_EXT_PREFIX\r\n}\r\n\r\n/**\r\n * Returns \"country calling code\" for a country.\r\n * Throws an error if the country doesn't exist or isn't supported by this library.\r\n * @param  {string} country\r\n * @param  {object} metadata\r\n * @return {string}\r\n * @example\r\n * // Returns \"44\"\r\n * getCountryCallingCode(\"GB\")\r\n */\r\nexport function getCountryCallingCode(country, metadata) {\r\n\tmetadata = new Metadata(metadata)\r\n\tif (metadata.hasCountry(country)) {\r\n\t\treturn metadata.selectNumberingPlan(country).countryCallingCode()\r\n\t}\r\n\tthrow new Error(`Unknown country: ${country}`)\r\n}\r\n\r\nexport function isSupportedCountry(country, metadata) {\r\n\t// metadata = new Metadata(metadata)\r\n\t// return metadata.hasCountry(country)\r\n\treturn metadata.countries.hasOwnProperty(country)\r\n}\r\n\r\nfunction setVersion(metadata) {\r\n\tconst { version } = metadata\r\n\tif (typeof version === 'number') {\r\n\t\tthis.v1 = version === 1\r\n\t\tthis.v2 = version === 2\r\n\t\tthis.v3 = version === 3\r\n\t\tthis.v4 = version === 4\r\n\t} else {\r\n\t\tif (!version) {\r\n\t\t\tthis.v1 = true\r\n\t\t} else if (compare(version, V3) === -1) {\r\n\t\t\tthis.v2 = true\r\n\t\t} else if (compare(version, V4) === -1) {\r\n\t\t\tthis.v3 = true\r\n\t\t} else {\r\n\t\t\tthis.v4 = true\r\n\t\t}\r\n\t}\r\n}\r\n\r\n// const ISO_COUNTRY_CODE = /^[A-Z]{2}$/\r\n// function isCountryCode(countryCode) {\r\n// \treturn ISO_COUNTRY_CODE.test(countryCodeOrCountryCallingCode)\r\n// }","import Metadata from '../metadata.js'\r\nimport mergeArrays from './mergeArrays.js'\r\n\r\nexport default function checkNumberLength(nationalNumber, country, metadata) {\r\n\treturn checkNumberLengthForType(nationalNumber, country, undefined, metadata)\r\n}\r\n\r\n// Checks whether a number is possible for a certain `country` based on the number length.\r\n//\r\n// This function is not supported by metadata generated with ancient versions of\r\n// `libphonenumber-js` (before version `1.0.18`) which didn't include \"possible lengths\".\r\n//\r\n// There was also a known issue with `checkNumberLength()` function:\r\n// if a number is possible only in a certain `country` among several `countries`\r\n// that share the same \"country calling code\", that function would check\r\n// the possibility of the phone number only in the \"main\" `country` for the \"country calling code\"\r\n// and would not check if it's actually be possible in the speciifc `country`.\r\n//\r\n// For example, \"+1310xxxx\" numbers are valid in Canada.\r\n// However, they are not possible in the US due to being too short.\r\n// Since Canada and the US share the same country calling code — \"+1\" —\r\n// `checkNumberLength()` function used to return not \"IS_POSSIBLE\" for \"+1310xxxx\" numbers.\r\n//\r\n// In such cases, when using \"/max\" metadata, `isValid()` could output `true`\r\n// but at the same time `isPossible()` could output `false`, which was contradictory.\r\n//\r\n// See https://issuetracker.google.com/issues/335892662 for the discusson in Google's issues.\r\n//\r\n// The solution suggested by Google was implemented: an optional `country` argument\r\n// was added to `checkNumberLength()` function. If present, that `country` will be used\r\n// to check phone number length for that specific `country` rather than the \"main\" country\r\n// for the shared \"country calling code\".\r\n//\r\nexport function checkNumberLengthForType(nationalNumber, country, type, metadata) {\r\n\t// If the exact `country` is specified, it's no necessarily already selected in `metadata`.\r\n\t// Most likely, in cases when there're multiple countries corresponding to the same\r\n\t// \"country calling code\", the \"main\" country for that \"country calling code\" will be selected.\r\n\tif (country) {\r\n\t\tmetadata = new Metadata(metadata.metadata)\r\n\t\tmetadata.selectNumberingPlan(country)\r\n\t}\r\n\r\n\tconst type_info = metadata.type(type)\r\n\r\n\t// There should always be \"<possiblePengths/>\" set for every type element.\r\n\t// This is declared in the XML schema.\r\n\t// For size efficiency, where a sub-description (e.g. fixed-line)\r\n\t// has the same \"<possiblePengths/>\" as the \"general description\", this is missing,\r\n\t// so we fall back to the \"general description\". Where no numbers of the type\r\n\t// exist at all, there is one possible length (-1) which is guaranteed\r\n\t// not to match the length of any real phone number.\r\n\tlet possible_lengths = type_info && type_info.possibleLengths() || metadata.possibleLengths()\r\n\t// let local_lengths = type_info && type.possibleLengthsLocal() || metadata.possibleLengthsLocal()\r\n\r\n\t// Metadata before version `1.0.18` didn't contain `possible_lengths`.\r\n\tif (!possible_lengths) {\r\n\t\treturn 'IS_POSSIBLE'\r\n\t}\r\n\r\n\tif (type === 'FIXED_LINE_OR_MOBILE') {\r\n\t\t// No such country in metadata.\r\n\t\t/* istanbul ignore next */\r\n\t\tif (!metadata.type('FIXED_LINE')) {\r\n\t\t\t// The rare case has been encountered where no fixedLine data is available\r\n\t\t\t// (true for some non-geographic entities), so we just check mobile.\r\n\t\t\treturn checkNumberLengthForType(nationalNumber, country, 'MOBILE', metadata)\r\n\t\t}\r\n\r\n\t\tconst mobile_type = metadata.type('MOBILE')\r\n\t\tif (mobile_type) {\r\n\t\t\t// Merge the mobile data in if there was any. \"Concat\" creates a new\r\n\t\t\t// array, it doesn't edit possible_lengths in place, so we don't need a copy.\r\n\t\t\t// Note that when adding the possible lengths from mobile, we have\r\n\t\t\t// to again check they aren't empty since if they are this indicates\r\n\t\t\t// they are the same as the general desc and should be obtained from there.\r\n\t\t\tpossible_lengths = mergeArrays(possible_lengths, mobile_type.possibleLengths())\r\n\t\t\t// The current list is sorted; we need to merge in the new list and\r\n\t\t\t// re-sort (duplicates are okay). Sorting isn't so expensive because\r\n\t\t\t// the lists are very small.\r\n\r\n\t\t\t// if (local_lengths) {\r\n\t\t\t// \tlocal_lengths = mergeArrays(local_lengths, mobile_type.possibleLengthsLocal())\r\n\t\t\t// } else {\r\n\t\t\t// \tlocal_lengths = mobile_type.possibleLengthsLocal()\r\n\t\t\t// }\r\n\t\t}\r\n\t}\r\n\t// If the type doesn't exist then return 'INVALID_LENGTH'.\r\n\telse if (type && !type_info) {\r\n\t\treturn 'INVALID_LENGTH'\r\n\t}\r\n\r\n\tconst actual_length = nationalNumber.length\r\n\r\n\t// In `libphonenumber-js` all \"local-only\" formats are dropped for simplicity.\r\n\t// // This is safe because there is never an overlap beween the possible lengths\r\n\t// // and the local-only lengths; this is checked at build time.\r\n\t// if (local_lengths && local_lengths.indexOf(nationalNumber.length) >= 0)\r\n\t// {\r\n\t// \treturn 'IS_POSSIBLE_LOCAL_ONLY'\r\n\t// }\r\n\r\n\tconst minimum_length = possible_lengths[0]\r\n\r\n\tif (minimum_length === actual_length) {\r\n\t\treturn 'IS_POSSIBLE'\r\n\t}\r\n\r\n\tif (minimum_length > actual_length) {\r\n\t\treturn 'TOO_SHORT'\r\n\t}\r\n\r\n\tif (possible_lengths[possible_lengths.length - 1] < actual_length) {\r\n\t\treturn 'TOO_LONG'\r\n\t}\r\n\r\n\t// We skip the first element since we've already checked it.\r\n\treturn possible_lengths.indexOf(actual_length, 1) >= 0 ? 'IS_POSSIBLE' : 'INVALID_LENGTH'\r\n}","import Metadata from './metadata.js'\r\nimport checkNumberLength from './helpers/checkNumberLength.js'\r\n\r\n/**\r\n * Checks if a phone number is \"possible\" (basically just checks its length).\r\n *\r\n * isPossible(phoneNumberInstance, { ..., v2: true }, metadata)\r\n *\r\n * isPossible({ phone: '8005553535', country: 'RU' }, { ... }, metadata)\r\n * isPossible({ phone: '8005553535', country: 'RU' }, undefined, metadata)\r\n *\r\n * @param  {object|PhoneNumber} input — If `options.v2: true` flag is passed, the `input` should be a `PhoneNumber` instance. Otherwise, it should be an object of shape `{ phone: '...', country: '...' }`.\r\n * @param  {object} [options]\r\n * @param  {object} metadata\r\n * @return {string}\r\n */\r\nexport default function isPossiblePhoneNumber(input, options, metadata) {\r\n\t/* istanbul ignore if */\r\n\tif (options === undefined) {\r\n\t\toptions = {}\r\n\t}\r\n\r\n\tmetadata = new Metadata(metadata)\r\n\r\n\tif (options.v2) {\r\n\t\tif (!input.countryCallingCode) {\r\n\t\t\tthrow new Error('Invalid phone number object passed')\r\n\t\t}\r\n\t\tmetadata.selectNumberingPlan(input.countryCallingCode)\r\n\t} else {\r\n\t\tif (!input.phone) {\r\n\t\t\treturn false\r\n\t\t}\r\n\t\tif (input.country) {\r\n\t\t\tif (!metadata.hasCountry(input.country)) {\r\n\t\t\t\tthrow new Error(`Unknown country: ${input.country}`)\r\n\t\t\t}\r\n\t\t\tmetadata.selectNumberingPlan(input.country)\r\n\t\t} else {\r\n\t\t\tif (!input.countryCallingCode) {\r\n\t\t\t\tthrow new Error('Invalid phone number object passed')\r\n\t\t\t}\r\n\t\t\tmetadata.selectNumberingPlan(input.countryCallingCode)\r\n\t\t}\r\n\t}\r\n\r\n\t// Old metadata (< 1.0.18) had no \"possible length\" data.\r\n\tif (metadata.possibleLengths()) {\r\n\t\treturn isPossibleNumber(input.phone || input.nationalNumber, input.country, metadata)\r\n\t} else {\r\n\t\t// There was a bug between `1.7.35` and `1.7.37` where \"possible_lengths\"\r\n\t\t// were missing for \"non-geographical\" numbering plans.\r\n\t\t// Just assume the number is possible in such cases:\r\n\t\t// it's unlikely that anyone generated their custom metadata\r\n\t\t// in that short period of time (one day).\r\n\t\t// This code can be removed in some future major version update.\r\n\t\tif (input.countryCallingCode && metadata.isNonGeographicCallingCode(input.countryCallingCode)) {\r\n\t\t\t// \"Non-geographic entities\" did't have `possibleLengths`\r\n\t\t\t// due to a bug in metadata generation process.\r\n\t\t\treturn true\r\n\t\t} else {\r\n\t\t\tthrow new Error('Missing \"possibleLengths\" in metadata. Perhaps the metadata has been generated before v1.0.18.');\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport function isPossibleNumber(nationalNumber, country, metadata) { //, isInternational) {\r\n\tswitch (checkNumberLength(nationalNumber, country, metadata)) {\r\n\t\tcase 'IS_POSSIBLE':\r\n\t\t\treturn true\r\n\t\t// This library ignores \"local-only\" phone numbers (for simplicity).\r\n\t\t// See the readme for more info on what are \"local-only\" phone numbers.\r\n\t\t// case 'IS_POSSIBLE_LOCAL_ONLY':\r\n\t\t// \treturn !isInternational\r\n\t\tdefault:\r\n\t\t\treturn false\r\n\t}\r\n}","/**\r\n * Checks whether the entire input sequence can be matched\r\n * against the regular expression.\r\n * @return {boolean}\r\n */\r\nexport default function matchesEntirely(text, regularExpressionText) {\r\n\t// If the assigning of the `''` default value is moved to the arguments above,\r\n\t// the code coverage would decrease for some weird reason.\r\n\ttext = text || ''\r\n\treturn new RegExp('^(?:' + regularExpressionText + ')$').test(text)\r\n}","import Metadata from '../metadata.js'\r\nimport matchesEntirely from './matchesEntirely.js'\r\n\r\nconst NON_FIXED_LINE_PHONE_TYPES = [\r\n\t'MOBILE',\r\n\t'PREMIUM_RATE',\r\n\t'TOLL_FREE',\r\n\t'SHARED_COST',\r\n\t'VOIP',\r\n\t'PERSONAL_NUMBER',\r\n\t'PAGER',\r\n\t'UAN',\r\n\t'VOICEMAIL'\r\n]\r\n\r\n// Finds out national phone number type (fixed line, mobile, etc)\r\nexport default function getNumberType(input, options, metadata)\r\n{\r\n\t// If assigning the `{}` default value is moved to the arguments above,\r\n\t// code coverage would decrease for some weird reason.\r\n\toptions = options || {}\r\n\r\n\t// When `parse()` returns an empty object — `{}` —\r\n\t// that means that the phone number is malformed,\r\n\t// so it can't possibly be valid.\r\n\tif (!input.country && !input.countryCallingCode) {\r\n\t\treturn\r\n\t}\r\n\r\n\tmetadata = new Metadata(metadata)\r\n\r\n\tmetadata.selectNumberingPlan(input.country, input.countryCallingCode)\r\n\r\n\tconst nationalNumber = options.v2 ? input.nationalNumber : input.phone\r\n\r\n\t// The following is copy-pasted from the original function:\r\n\t// https://github.com/googlei18n/libphonenumber/blob/3ea547d4fbaa2d0b67588904dfa5d3f2557c27ff/javascript/i18n/phonenumbers/phonenumberutil.js#L2835\r\n\r\n\t// Is this national number even valid for this country\r\n\tif (!matchesEntirely(nationalNumber, metadata.nationalNumberPattern())) {\r\n\t\treturn\r\n\t}\r\n\r\n\t// Is it fixed line number\r\n\tif (isNumberTypeEqualTo(nationalNumber, 'FIXED_LINE', metadata)) {\r\n\t\t// Because duplicate regular expressions are removed\r\n\t\t// to reduce metadata size, if \"mobile\" pattern is \"\"\r\n\t\t// then it means it was removed due to being a duplicate of the fixed-line pattern.\r\n\t\t//\r\n\t\tif (metadata.type('MOBILE') && metadata.type('MOBILE').pattern() === '') {\r\n\t\t\treturn 'FIXED_LINE_OR_MOBILE'\r\n\t\t}\r\n\r\n\t\t// `MOBILE` type pattern isn't included if it matched `FIXED_LINE` one.\r\n\t\t// For example, for \"US\" country.\r\n\t\t// Old metadata (< `1.0.18`) had a specific \"types\" data structure\r\n\t\t// that happened to be `undefined` for `MOBILE` in that case.\r\n\t\t// Newer metadata (>= `1.0.18`) has another data structure that is\r\n\t\t// not `undefined` for `MOBILE` in that case (it's just an empty array).\r\n\t\t// So this `if` is just for backwards compatibility with old metadata.\r\n\t\tif (!metadata.type('MOBILE')) {\r\n\t\t\treturn 'FIXED_LINE_OR_MOBILE'\r\n\t\t}\r\n\r\n\t\t// Check if the number happens to qualify as both fixed line and mobile.\r\n\t\t// (no such country in the minimal metadata set)\r\n\t\t/* istanbul ignore if */\r\n\t\tif (isNumberTypeEqualTo(nationalNumber, 'MOBILE', metadata)) {\r\n\t\t\treturn 'FIXED_LINE_OR_MOBILE'\r\n\t\t}\r\n\r\n\t\treturn 'FIXED_LINE'\r\n\t}\r\n\r\n\tfor (const type of NON_FIXED_LINE_PHONE_TYPES) {\r\n\t\tif (isNumberTypeEqualTo(nationalNumber, type, metadata)) {\r\n\t\t\treturn type\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport function isNumberTypeEqualTo(nationalNumber, type, metadata) {\r\n\tconst typeDefinition = metadata.type(type)\r\n\tif (!typeDefinition || !typeDefinition.pattern()) {\r\n\t\treturn false\r\n\t}\r\n\r\n\t// Check if any possible number lengths are present;\r\n\t// if so, we use them to avoid checking\r\n\t// the validation pattern if they don't match.\r\n\t// If they are absent, this means they match\r\n\t// the general description, which we have\r\n\t// already checked before a specific number type.\r\n\tif (\r\n\t\ttypeDefinition.possibleLengths() &&\r\n\t\ttypeDefinition.possibleLengths().indexOf(nationalNumber.length) < 0\r\n\t) {\r\n\t\treturn false\r\n\t}\r\n\r\n\treturn matchesEntirely(nationalNumber, typeDefinition.pattern())\r\n}","import Metadata from './metadata.js'\r\nimport matchesEntirely from './helpers/matchesEntirely.js'\r\nimport getNumberType from './helpers/getNumberType.js'\r\n\r\n/**\r\n * Checks if a given phone number is valid.\r\n *\r\n * isValid(phoneNumberInstance, { ..., v2: true }, metadata)\r\n *\r\n * isPossible({ phone: '8005553535', country: 'RU' }, { ... }, metadata)\r\n * isPossible({ phone: '8005553535', country: 'RU' }, undefined, metadata)\r\n *\r\n * If the `number` is a string, it will be parsed to an object,\r\n * but only if it contains only valid phone number characters (including punctuation).\r\n * If the `number` is an object, it is used as is.\r\n *\r\n * The optional `defaultCountry` argument is the default country.\r\n * I.e. it does not restrict to just that country,\r\n * e.g. in those cases where several countries share\r\n * the same phone numbering rules (NANPA, Britain, etc).\r\n * For example, even though the number `07624 369230`\r\n * belongs to the Isle of Man (\"IM\" country code)\r\n * calling `isValidNumber('07624369230', 'GB', metadata)`\r\n * still returns `true` because the country is not restricted to `GB`,\r\n * it's just that `GB` is the default one for the phone numbering rules.\r\n * For restricting the country see `isValidNumberForRegion()`\r\n * though restricting a country might not be a good idea.\r\n * https://github.com/googlei18n/libphonenumber/blob/master/FAQ.md#when-should-i-use-isvalidnumberforregion\r\n *\r\n * Examples:\r\n *\r\n * ```js\r\n * isValidNumber('+78005553535', metadata)\r\n * isValidNumber('8005553535', 'RU', metadata)\r\n * isValidNumber('88005553535', 'RU', metadata)\r\n * isValidNumber({ phone: '8005553535', country: 'RU' }, metadata)\r\n * ```\r\n */\r\nexport default function isValidNumber(input, options, metadata)\r\n{\r\n\t// If assigning the `{}` default value is moved to the arguments above,\r\n\t// code coverage would decrease for some weird reason.\r\n\toptions = options || {}\r\n\r\n\tmetadata = new Metadata(metadata)\r\n\r\n\tmetadata.selectNumberingPlan(input.country, input.countryCallingCode)\r\n\r\n\t// By default, countries only have type regexps when it's required for\r\n\t// distinguishing different countries having the same `countryCallingCode`.\r\n\tif (metadata.hasTypes()) {\r\n\t\treturn getNumberType(input, options, metadata.metadata) !== undefined\r\n\t}\r\n\r\n\t// If there are no type regexps for this country in metadata then use\r\n\t// `nationalNumberPattern` as a \"better than nothing\" replacement.\r\n\tconst nationalNumber = options.v2 ? input.nationalNumber : input.phone\r\n\treturn matchesEntirely(nationalNumber, metadata.nationalNumberPattern())\r\n}","import Metadata from '../metadata.js'\r\n\r\n/**\r\n * Returns a list of countries that the phone number could potentially belong to.\r\n * @param  {string} callingCode — Calling code.\r\n * @param  {string} nationalNumber — National (significant) number.\r\n * @param  {object} metadata — Metadata.\r\n * @return {string[]} A list of possible countries.\r\n */\r\nexport default function getPossibleCountriesForNumber(callingCode, nationalNumber, metadata) {\r\n\tconst _metadata = new Metadata(metadata)\r\n\tlet possibleCountries = _metadata.getCountryCodesForCallingCode(callingCode)\r\n\tif (!possibleCountries) {\r\n\t\treturn []\r\n\t}\r\n\treturn possibleCountries.filter((country) => {\r\n\t\treturn couldNationalNumberBelongToCountry(nationalNumber, country, metadata)\r\n\t})\r\n}\r\n\r\nfunction couldNationalNumberBelongToCountry(nationalNumber, country, metadata) {\r\n\tconst _metadata = new Metadata(metadata)\r\n\t_metadata.selectNumberingPlan(country)\r\n\tif (_metadata.numberingPlan.possibleLengths().indexOf(nationalNumber.length) >= 0) {\r\n\t\treturn true\r\n\t}\r\n\treturn false\r\n}","// The minimum length of the national significant number.\r\nexport const MIN_LENGTH_FOR_NSN = 2\r\n\r\n// The ITU says the maximum length should be 15,\r\n// but one can find longer numbers in Germany.\r\nexport const MAX_LENGTH_FOR_NSN = 17\r\n\r\n// The maximum length of the country calling code.\r\nexport const MAX_LENGTH_COUNTRY_CODE = 3\r\n\r\n// Digits accepted in phone numbers\r\n// (ascii, fullwidth, arabic-indic, and eastern arabic digits).\r\nexport const VALID_DIGITS = '0-9\\uFF10-\\uFF19\\u0660-\\u0669\\u06F0-\\u06F9'\r\n\r\n// `DASHES` will be right after the opening square bracket of the \"character class\"\r\nconst DASHES = '-\\u2010-\\u2015\\u2212\\u30FC\\uFF0D'\r\nconst SLASHES = '\\uFF0F/'\r\nconst DOTS = '\\uFF0E.'\r\nexport const WHITESPACE = ' \\u00A0\\u00AD\\u200B\\u2060\\u3000'\r\nconst BRACKETS = '()\\uFF08\\uFF09\\uFF3B\\uFF3D\\\\[\\\\]'\r\n// export const OPENING_BRACKETS = '(\\uFF08\\uFF3B\\\\\\['\r\nconst TILDES = '~\\u2053\\u223C\\uFF5E'\r\n\r\n// Regular expression of acceptable punctuation found in phone numbers. This\r\n// excludes punctuation found as a leading character only. This consists of dash\r\n// characters, white space characters, full stops, slashes, square brackets,\r\n// parentheses and tildes. Full-width variants are also present.\r\nexport const VALID_PUNCTUATION = `${DASHES}${SLASHES}${DOTS}${WHITESPACE}${BRACKETS}${TILDES}`\r\n\r\nexport const PLUS_CHARS = '+\\uFF0B'\r\n// const LEADING_PLUS_CHARS_PATTERN = new RegExp('^[' + PLUS_CHARS + ']+')","import Metadata from '../metadata.js'\r\nimport { VALID_DIGITS } from '../constants.js'\r\n\r\nconst CAPTURING_DIGIT_PATTERN = new RegExp('([' + VALID_DIGITS + '])')\r\n\r\nexport default function stripIddPrefix(number, country, callingCode, metadata) {\r\n\tif (!country) {\r\n\t\treturn\r\n\t}\r\n\t// Check if the number is IDD-prefixed.\r\n\tconst countryMetadata = new Metadata(metadata)\r\n\tcountryMetadata.selectNumberingPlan(country, callingCode)\r\n\tconst IDDPrefixPattern = new RegExp(countryMetadata.IDDPrefix())\r\n\tif (number.search(IDDPrefixPattern) !== 0) {\r\n\t\treturn\r\n\t}\r\n\t// Strip IDD prefix.\r\n\tnumber = number.slice(number.match(IDDPrefixPattern)[0].length)\r\n\t// If there're any digits after an IDD prefix,\r\n\t// then those digits are a country calling code.\r\n\t// Since no country code starts with a `0`,\r\n\t// the code below validates that the next digit (if present) is not `0`.\r\n\tconst matchedGroups = number.match(CAPTURING_DIGIT_PATTERN)\r\n\tif (matchedGroups && matchedGroups[1] != null && matchedGroups[1].length > 0) {\r\n\t\tif (matchedGroups[1] === '0') {\r\n\t\t\treturn\r\n\t\t}\r\n\t}\r\n\treturn number\r\n}","/**\r\n * Strips any national prefix (such as 0, 1) present in a\r\n * (possibly incomplete) number provided.\r\n * \"Carrier codes\" are only used  in Colombia and Brazil,\r\n * and only when dialing within those countries from a mobile phone to a fixed line number.\r\n * Sometimes it won't actually strip national prefix\r\n * and will instead prepend some digits to the `number`:\r\n * for example, when number `2345678` is passed with `VI` country selected,\r\n * it will return `{ number: \"3402345678\" }`, because `340` area code is prepended.\r\n * @param {string} number — National number digits.\r\n * @param {object} metadata — Metadata with country selected.\r\n * @return {object} `{ nationalNumber: string, nationalPrefix: string? carrierCode: string? }`. Even if a national prefix was extracted, it's not necessarily present in the returned object, so don't rely on its presence in the returned object in order to find out whether a national prefix has been extracted or not.\r\n */\r\nexport default function extractNationalNumberFromPossiblyIncompleteNumber(number, metadata) {\r\n\tif (number && metadata.numberingPlan.nationalPrefixForParsing()) {\r\n\t\t// See METADATA.md for the description of\r\n\t\t// `national_prefix_for_parsing` and `national_prefix_transform_rule`.\r\n\t\t// Attempt to parse the first digits as a national prefix.\r\n\t\tconst prefixPattern = new RegExp('^(?:' + metadata.numberingPlan.nationalPrefixForParsing() + ')')\r\n\t\tconst prefixMatch = prefixPattern.exec(number)\r\n\t\tif (prefixMatch) {\r\n\t\t\tlet nationalNumber\r\n\t\t\tlet carrierCode\r\n\t\t\t// https://gitlab.com/catamphetamine/libphonenumber-js/-/blob/master/METADATA.md#national_prefix_for_parsing--national_prefix_transform_rule\r\n\t\t\t// If a `national_prefix_for_parsing` has any \"capturing groups\"\r\n\t\t\t// then it means that the national (significant) number is equal to\r\n\t\t\t// those \"capturing groups\" transformed via `national_prefix_transform_rule`,\r\n\t\t\t// and nothing could be said about the actual national prefix:\r\n\t\t\t// what is it and was it even there.\r\n\t\t\t// If a `national_prefix_for_parsing` doesn't have any \"capturing groups\",\r\n\t\t\t// then everything it matches is a national prefix.\r\n\t\t\t// To determine whether `national_prefix_for_parsing` matched any\r\n\t\t\t// \"capturing groups\", the value of the result of calling `.exec()`\r\n\t\t\t// is looked at, and if it has non-undefined values where there're\r\n\t\t\t// \"capturing groups\" in the regular expression, then it means\r\n\t\t\t// that \"capturing groups\" have been matched.\r\n\t\t\t// It's not possible to tell whether there'll be any \"capturing gropus\"\r\n\t\t\t// before the matching process, because a `national_prefix_for_parsing`\r\n\t\t\t// could exhibit both behaviors.\r\n\t\t\tconst capturedGroupsCount = prefixMatch.length - 1\r\n\t\t\tconst hasCapturedGroups = capturedGroupsCount > 0 && prefixMatch[capturedGroupsCount]\r\n\t\t\tif (metadata.nationalPrefixTransformRule() && hasCapturedGroups) {\r\n\t\t\t\tnationalNumber = number.replace(\r\n\t\t\t\t\tprefixPattern,\r\n\t\t\t\t\tmetadata.nationalPrefixTransformRule()\r\n\t\t\t\t)\r\n\t\t\t\t// If there's more than one captured group,\r\n\t\t\t\t// then carrier code is the second one.\r\n\t\t\t\tif (capturedGroupsCount > 1) {\r\n\t\t\t\t\tcarrierCode = prefixMatch[1]\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// If there're no \"capturing groups\",\r\n\t\t\t// or if there're \"capturing groups\" but no\r\n\t\t\t// `national_prefix_transform_rule`,\r\n\t\t\t// then just strip the national prefix from the number,\r\n\t\t\t// and possibly a carrier code.\r\n\t\t\t// Seems like there could be more.\r\n\t\t\telse {\r\n\t\t\t\t// `prefixBeforeNationalNumber` is the whole substring matched by\r\n\t\t\t\t// the `national_prefix_for_parsing` regular expression.\r\n\t\t\t\t// There seem to be no guarantees that it's just a national prefix.\r\n\t\t\t\t// For example, if there's a carrier code, it's gonna be a\r\n\t\t\t\t// part of `prefixBeforeNationalNumber` too.\r\n\t\t\t\tconst prefixBeforeNationalNumber = prefixMatch[0]\r\n\t\t\t\tnationalNumber = number.slice(prefixBeforeNationalNumber.length)\r\n\t\t\t\t// If there's at least one captured group,\r\n\t\t\t\t// then carrier code is the first one.\r\n\t\t\t\tif (hasCapturedGroups) {\r\n\t\t\t\t\tcarrierCode = prefixMatch[1]\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// Tries to guess whether a national prefix was present in the input.\r\n\t\t\t// This is not something copy-pasted from Google's library:\r\n\t\t\t// they don't seem to have an equivalent for that.\r\n\t\t\t// So this isn't an \"officially approved\" way of doing something like that.\r\n\t\t\t// But since there seems no other existing method, this library uses it.\r\n\t\t\tlet nationalPrefix\r\n\t\t\tif (hasCapturedGroups) {\r\n\t\t\t\tconst possiblePositionOfTheFirstCapturedGroup = number.indexOf(prefixMatch[1])\r\n\t\t\t\tconst possibleNationalPrefix = number.slice(0, possiblePositionOfTheFirstCapturedGroup)\r\n\t\t\t\t// Example: an Argentinian (AR) phone number `0111523456789`.\r\n\t\t\t\t// `prefixMatch[0]` is `01115`, and `$1` is `11`,\r\n\t\t\t\t// and the rest of the phone number is `23456789`.\r\n\t\t\t\t// The national number is transformed via `9$1` to `91123456789`.\r\n\t\t\t\t// National prefix `0` is detected being present at the start.\r\n\t\t\t\t// if (possibleNationalPrefix.indexOf(metadata.numberingPlan.nationalPrefix()) === 0) {\r\n\t\t\t\tif (possibleNationalPrefix === metadata.numberingPlan.nationalPrefix()) {\r\n\t\t\t\t\tnationalPrefix = metadata.numberingPlan.nationalPrefix()\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tnationalPrefix = prefixMatch[0]\r\n\t\t\t}\r\n\t\t\treturn {\r\n\t\t\t\tnationalNumber,\r\n\t\t\t\tnationalPrefix,\r\n\t\t\t\tcarrierCode\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n   return {\r\n   \tnationalNumber: number\r\n   }\r\n}","import Metadata from '../metadata.js'\r\nimport getNumberType from './getNumberType.js'\r\n\r\n// Returns the exact country that the `nationalPhoneNumber` belongs to\r\n// in cases of ambiguity, i.e. when multiple countries share the same \"country calling code\".\r\nexport default function getCountryByNationalNumber(nationalPhoneNumber, {\r\n\tcountries,\r\n\tmetadata\r\n}) {\r\n\t// Re-create `metadata` because it will be selecting a `country`.\r\n\tmetadata = new Metadata(metadata)\r\n\r\n\t// const matchingCountries = []\r\n\r\n\tfor (const country of countries) {\r\n\t\tmetadata.selectNumberingPlan(country)\r\n\t\t// \"Leading digits\" patterns are only defined for about 20% of all countries.\r\n\t\t// By definition, matching \"leading digits\" is a sufficient but not a necessary\r\n\t\t// condition for a phone number to belong to a country.\r\n\t\t// The point of \"leading digits\" check is that it's the fastest one to get a match.\r\n\t\t// https://gitlab.com/catamphetamine/libphonenumber-js/blob/master/METADATA.md#leading_digits\r\n\t\t// I'd suppose that \"leading digits\" patterns are mutually exclusive for different countries\r\n\t\t// because of the intended use of that feature.\r\n\t\tif (metadata.leadingDigits()) {\r\n\t\t\tif (nationalPhoneNumber &&\r\n\t\t\t\tnationalPhoneNumber.search(metadata.leadingDigits()) === 0) {\r\n\t\t\t\treturn country\r\n\t\t\t}\r\n\t\t}\r\n\t\t// Else perform full validation with all of those\r\n\t\t// fixed-line/mobile/etc regular expressions.\r\n\t\telse if (getNumberType({ phone: nationalPhoneNumber, country }, undefined, metadata.metadata)) {\r\n\t\t\t// When multiple countries share the same \"country calling code\",\r\n\t\t\t// type patterns aren't guaranteed to be unique among them.\r\n\t\t\t// For example, both `US` and `CA` have the same pattern for `toll_free` numbers.\r\n\t\t\t// https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/103#note_1417147572\r\n\t\t\t//\r\n\t\t\t// That means that this `if` condition could be `true` for multiple countries from the list.\r\n\t\t\t// Currently, it just returns the first one, which is also the \"main\" country for the \"country calling code\".\r\n\t\t\t// In an example with `toll_free` numbers above, `\"US\"` would be returned even though\r\n\t\t\t// it could as well be `\"CA\"`.\r\n\t\t\t//\r\n\t\t\t// There was also a time when this attempted to be overly smart\r\n\t\t\t// and kept track of all such multiple matching countries\r\n\t\t\t// and then picked the one that matched the `defaultCountry`, if provided.\r\n\t\t\t// For example, with `toll_free` numbers above, and with `defaultCountry: \"CA\"`,\r\n\t\t\t// it would've returned `\"CA\"` instead of `\"US\"`.\r\n\t\t\t// Later it turned out that such \"overly smart\" behavior turned out to be just confusing,\r\n\t\t\t// so this \"overly smart\" country detection was reverted to returning the \"main\" country\r\n\t\t\t// for the \"country calling code\".\r\n\t\t\t// https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/154\r\n\t\t\t//\r\n\t\t\treturn country\r\n\t\t\t//\r\n\t\t\t// The \"overly smart\" behavior code:\r\n\t\t\t//\r\n\t\t\t// if (defaultCountry) {\r\n\t\t\t// \tif (country === defaultCountry) {\r\n\t\t\t// \t\treturn country\r\n\t\t\t// \t} else {\r\n\t\t\t// \t\tmatchingCountries.push(country)\r\n\t\t\t// \t}\r\n\t\t\t// } else {\r\n\t\t\t// \treturn country\r\n\t\t\t// }\r\n\t\t}\r\n\t}\r\n\r\n\t// // Return the first (\"main\") one of the `matchingCountries`.\r\n\t// if (matchingCountries.length > 0) {\r\n\t// \treturn matchingCountries[0]\r\n\t// }\r\n}","import getCountryByNationalNumber from './getCountryByNationalNumber.js'\r\n\r\nconst USE_NON_GEOGRAPHIC_COUNTRY_CODE = false\r\n\r\n// Returns the exact country for the `nationalNumber`\r\n// that belongs to the specified \"country calling code\".\r\nexport default function getCountryByCallingCode(callingCode, {\r\n\tnationalNumber: nationalPhoneNumber,\r\n\tmetadata\r\n}) {\r\n\t/* istanbul ignore if */\r\n\tif (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\r\n\t\tif (metadata.isNonGeographicCallingCode(callingCode)) {\r\n\t\t\treturn '001'\r\n\t\t}\r\n\t}\r\n\tconst possibleCountries = metadata.getCountryCodesForCallingCode(callingCode)\r\n\tif (!possibleCountries) {\r\n\t\treturn\r\n\t}\r\n\t// If there's just one country corresponding to the country code,\r\n\t// then just return it, without further phone number digits validation.\r\n\tif (possibleCountries.length === 1) {\r\n\t\treturn possibleCountries[0]\r\n\t}\r\n\treturn getCountryByNationalNumber(nationalPhoneNumber, {\r\n\t\tcountries: possibleCountries,\r\n\t\tmetadata: metadata.metadata\r\n\t})\r\n}","import extractNationalNumberFromPossiblyIncompleteNumber from './extractNationalNumberFromPossiblyIncompleteNumber.js'\r\nimport matchesEntirely from './matchesEntirely.js'\r\nimport checkNumberLength from './checkNumberLength.js'\r\nimport getCountryByCallingCode from './getCountryByCallingCode.js'\r\n\r\n/**\r\n * Strips national prefix and carrier code from a complete phone number.\r\n * The difference from the non-\"FromCompleteNumber\" function is that\r\n * it won't extract national prefix if the resultant number is too short\r\n * to be a complete number for the selected phone numbering plan.\r\n * @param  {string} number — Complete phone number digits.\r\n * @param  {string?} country — Country, if known.\r\n * @param  {Metadata} metadata — Metadata with a phone numbering plan selected.\r\n * @return {object} `{ nationalNumber: string, carrierCode: string? }`.\r\n */\r\nexport default function extractNationalNumber(number, country, metadata) {\r\n\t// Parsing national prefixes and carrier codes\r\n\t// is only required for local phone numbers\r\n\t// but some people don't understand that\r\n\t// and sometimes write international phone numbers\r\n\t// with national prefixes (or maybe even carrier codes).\r\n\t// http://ucken.blogspot.ru/2016/03/trunk-prefixes-in-skype4b.html\r\n\t// Google's original library forgives such mistakes\r\n\t// and so does this library, because it has been requested:\r\n\t// https://github.com/catamphetamine/libphonenumber-js/issues/127\r\n\tconst {\r\n\t\tcarrierCode,\r\n\t\tnationalNumber\r\n\t} = extractNationalNumberFromPossiblyIncompleteNumber(\r\n\t\tnumber,\r\n\t\tmetadata\r\n\t)\r\n\r\n\tif (nationalNumber !== number) {\r\n\t\tif (!shouldHaveExtractedNationalPrefix(number, nationalNumber, metadata)) {\r\n\t\t\t// Don't strip the national prefix.\r\n\t\t\treturn { nationalNumber: number }\r\n\t\t}\r\n\t\t// Check the national (significant) number length after extracting national prefix and carrier code.\r\n\t\t// Legacy generated metadata (before `1.0.18`) didn't support the \"possible lengths\" feature.\r\n\t\tif (metadata.numberingPlan.possibleLengths()) {\r\n\t\t\t// If an exact `country` is not specified, attempt to detect it from the assumed national number.\r\n\t\t\tif (!country) {\r\n\t\t\t\tcountry = getCountryByCallingCode(metadata.numberingPlan.callingCode(), {\r\n\t\t\t\t\tnationalNumber,\r\n\t\t\t\t\tmetadata\r\n\t\t\t\t})\r\n\t\t\t}\r\n\r\n\t\t\t// The number remaining after stripping the national prefix and carrier code\r\n\t\t\t// should be long enough to have a possible length for the country.\r\n\t\t\t// Otherwise, don't strip the national prefix and carrier code,\r\n\t\t\t// since the original number could be a valid number.\r\n\t\t\t// This check has been copy-pasted \"as is\" from Google's original library:\r\n\t\t\t// https://github.com/google/libphonenumber/blob/876268eb1ad6cdc1b7b5bef17fc5e43052702d57/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L3236-L3250\r\n\t\t\t// It doesn't check for the \"possibility\" of the original `number`.\r\n\t\t\t// I guess it's fine not checking that one. It works as is anyway.\r\n\t\t\tif (!isPossibleIncompleteNationalNumber(nationalNumber, country, metadata)) {\r\n\t\t\t\t// Don't strip the national prefix.\r\n\t\t\t\treturn { nationalNumber: number }\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn { nationalNumber, carrierCode }\r\n}\r\n\r\n// In some countries, the same digit could be a national prefix\r\n// or a leading digit of a valid phone number.\r\n// For example, in Russia, national prefix is `8`,\r\n// and also `800 555 35 35` is a valid number\r\n// in which `8` is not a national prefix, but the first digit\r\n// of a national (significant) number.\r\n// Same's with Belarus:\r\n// `82004910060` is a valid national (significant) number,\r\n// but `2004910060` is not.\r\n// To support such cases (to prevent the code from always stripping\r\n// national prefix), a condition is imposed: a national prefix\r\n// is not extracted when the original number is \"viable\" and the\r\n// resultant number is not, a \"viable\" national number being the one\r\n// that matches `national_number_pattern`.\r\nfunction shouldHaveExtractedNationalPrefix(nationalNumberBefore, nationalNumberAfter, metadata) {\r\n\t// The equivalent in Google's code is:\r\n\t// https://github.com/google/libphonenumber/blob/e326fa1fc4283bb05eb35cb3c15c18f98a31af33/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L2969-L3004\r\n\tif (matchesEntirely(nationalNumberBefore, metadata.nationalNumberPattern()) &&\r\n\t\t!matchesEntirely(nationalNumberAfter, metadata.nationalNumberPattern())) {\r\n\t\treturn false\r\n\t}\r\n\t// This \"is possible\" national number (length) check has been commented out\r\n\t// because it's superceded by the (effectively) same check done in the\r\n\t// `extractNationalNumber()` function after it calls `shouldHaveExtractedNationalPrefix()`.\r\n\t// In other words, why run the same check twice if it could only be run once.\r\n\t// // Check the national (significant) number length after extracting national prefix and carrier code.\r\n\t// // Fixes a minor \"weird behavior\" bug: https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/57\r\n\t// // (Legacy generated metadata (before `1.0.18`) didn't support the \"possible lengths\" feature).\r\n\t// if (metadata.possibleLengths()) {\r\n\t// \tif (isPossibleIncompleteNationalNumber(nationalNumberBefore, metadata) &&\r\n\t// \t\t!isPossibleIncompleteNationalNumber(nationalNumberAfter, metadata)) {\r\n\t// \t\treturn false\r\n\t// \t}\r\n\t// }\r\n\treturn true\r\n}\r\n\r\nfunction isPossibleIncompleteNationalNumber(nationalNumber, country, metadata) {\r\n\tswitch (checkNumberLength(nationalNumber, country, metadata)) {\r\n\t\tcase 'TOO_SHORT':\r\n\t\tcase 'INVALID_LENGTH':\r\n\t\t// This library ignores \"local-only\" phone numbers (for simplicity).\r\n\t\t// See the readme for more info on what are \"local-only\" phone numbers.\r\n\t\t// case 'IS_POSSIBLE_LOCAL_ONLY':\r\n\t\t\treturn false\r\n\t\tdefault:\r\n\t\t\treturn true\r\n\t}\r\n}","// Deprecated. Import from 'metadata.js' directly instead.\r\nexport { getCountryCallingCode as default } from './metadata.js'","import Metadata from '../metadata.js'\r\nimport matchesEntirely from './matchesEntirely.js'\r\nimport extractNationalNumber from './extractNationalNumber.js'\r\nimport checkNumberLength from './checkNumberLength.js'\r\nimport getCountryCallingCode from '../getCountryCallingCode.js'\r\n\r\n/**\r\n * Sometimes some people incorrectly input international phone numbers\r\n * without the leading `+`. This function corrects such input.\r\n * @param  {string} number — Phone number digits.\r\n * @param  {string} [country] — Exact country of the phone number.\r\n * @param  {string} [defaultCountry]\r\n * @param  {string} [defaultCallingCode]\r\n * @param  {object} metadata\r\n * @return {object} `{ countryCallingCode: string?, number: string }`.\r\n */\r\nexport default function extractCountryCallingCodeFromInternationalNumberWithoutPlusSign(\r\n\tnumber,\r\n\tcountry,\r\n\tdefaultCountry,\r\n\tdefaultCallingCode,\r\n\tmetadata\r\n) {\r\n\tconst countryCallingCode = country || defaultCountry\r\n\t\t? getCountryCallingCode(country || defaultCountry, metadata)\r\n\t\t: defaultCallingCode\r\n\r\n\tif (number.indexOf(countryCallingCode) === 0) {\r\n\t\tmetadata = new Metadata(metadata)\r\n\t\tmetadata.selectNumberingPlan(country || defaultCountry, countryCallingCode)\r\n\r\n\t\tconst possibleShorterNumber = number.slice(countryCallingCode.length)\r\n\r\n\t\tconst {\r\n\t\t\tnationalNumber: possibleShorterNationalNumber,\r\n\t\t} = extractNationalNumber(\r\n\t\t\tpossibleShorterNumber,\r\n\t\t\tcountry,\r\n\t\t\tmetadata\r\n\t\t)\r\n\r\n\t\tconst {\r\n\t\t\tnationalNumber\r\n\t\t} = extractNationalNumber(\r\n\t\t\tnumber,\r\n\t\t\tcountry,\r\n\t\t\tmetadata\r\n\t\t)\r\n\r\n\t\t// If the number was not valid before but is valid now,\r\n\t\t// or if it was too long before, we consider the number\r\n\t\t// with the country calling code stripped to be a better result\r\n\t\t// and keep that instead.\r\n\t\t// For example, in Germany (+49), `49` is a valid area code,\r\n\t\t// so if a number starts with `49`, it could be both a valid\r\n\t\t// national German number or an international number without\r\n\t\t// a leading `+`.\r\n\t\tif (\r\n\t\t\t(\r\n\t\t\t\t!matchesEntirely(nationalNumber, metadata.nationalNumberPattern()) &&\r\n\t\t\t\tmatchesEntirely(possibleShorterNationalNumber, metadata.nationalNumberPattern())\r\n\t\t\t)\r\n\t\t\t||\r\n\t\t\tcheckNumberLength(nationalNumber, country, metadata) === 'TOO_LONG'\r\n\t\t) {\r\n\t\t\treturn {\r\n\t\t\t\tcountryCallingCode,\r\n\t\t\t\tnumber: possibleShorterNumber\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn { number }\r\n}","import stripIddPrefix from './stripIddPrefix.js'\r\nimport extractCountryCallingCodeFromInternationalNumberWithoutPlusSign from './extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js'\r\nimport Metadata from '../metadata.js'\r\nimport { MAX_LENGTH_COUNTRY_CODE } from '../constants.js'\r\n\r\n/**\r\n * Converts a phone number digits (possibly with a `+`)\r\n * into a calling code and the rest phone number digits.\r\n * The \"rest phone number digits\" could include\r\n * a national prefix, carrier code, and national\r\n * (significant) number.\r\n * @param  {string} number — Phone number digits (possibly with a `+`).\r\n * @param  {string} [country] — Country.\r\n * @param  {string} [defaultCountry] — Default country.\r\n * @param  {string} [defaultCallingCode] — Default calling code (some phone numbering plans are non-geographic).\r\n * @param  {object} metadata\r\n * @return {object} `{ countryCallingCodeSource: string?, countryCallingCode: string?, number: string }`\r\n * @example\r\n * // Returns `{ countryCallingCode: \"1\", number: \"2133734253\" }`.\r\n * extractCountryCallingCode('2133734253', null, 'US', null, metadata)\r\n * extractCountryCallingCode('2133734253', null, null, '1', metadata)\r\n * extractCountryCallingCode('+12133734253', null, null, null, metadata)\r\n * extractCountryCallingCode('+12133734253', null, 'RU', null, metadata)\r\n */\r\nexport default function extractCountryCallingCode(\r\n\tnumber,\r\n\tcountry,\r\n\tdefaultCountry,\r\n\tdefaultCallingCode,\r\n\tmetadata\r\n) {\r\n\tif (!number) {\r\n\t\treturn {}\r\n\t}\r\n\r\n\tlet isNumberWithIddPrefix\r\n\r\n\t// If this is not an international phone number,\r\n\t// then either extract an \"IDD\" prefix, or extract a\r\n\t// country calling code from a number by autocorrecting it\r\n\t// by prepending a leading `+` in cases when it starts\r\n\t// with the country calling code.\r\n\t// https://wikitravel.org/en/International_dialling_prefix\r\n\t// https://github.com/catamphetamine/libphonenumber-js/issues/376\r\n\tif (number[0] !== '+') {\r\n\t\t// Convert an \"out-of-country\" dialing phone number\r\n\t\t// to a proper international phone number.\r\n\t\tconst numberWithoutIDD = stripIddPrefix(number, country || defaultCountry, defaultCallingCode, metadata)\r\n\t\t// If an IDD prefix was stripped then\r\n\t\t// convert the number to international one\r\n\t\t// for subsequent parsing.\r\n\t\tif (numberWithoutIDD && numberWithoutIDD !== number) {\r\n\t\t\tisNumberWithIddPrefix = true\r\n\t\t\tnumber = '+' + numberWithoutIDD\r\n\t\t} else {\r\n\t\t\t// Check to see if the number starts with the country calling code\r\n\t\t\t// for the default country. If so, we remove the country calling code,\r\n\t\t\t// and do some checks on the validity of the number before and after.\r\n\t\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/376\r\n\t\t\tif (country || defaultCountry || defaultCallingCode) {\r\n\t\t\t\tconst {\r\n\t\t\t\t\tcountryCallingCode,\r\n\t\t\t\t\tnumber: shorterNumber\r\n\t\t\t\t} = extractCountryCallingCodeFromInternationalNumberWithoutPlusSign(\r\n\t\t\t\t\tnumber,\r\n\t\t\t\t\tcountry,\r\n\t\t\t\t\tdefaultCountry,\r\n\t\t\t\t\tdefaultCallingCode,\r\n\t\t\t\t\tmetadata\r\n\t\t\t\t)\r\n\t\t\t\tif (countryCallingCode) {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tcountryCallingCodeSource: 'FROM_NUMBER_WITHOUT_PLUS_SIGN',\r\n\t\t\t\t\t\tcountryCallingCode,\r\n\t\t\t\t\t\tnumber: shorterNumber\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn {\r\n\t\t\t\t// No need to set it to `UNSPECIFIED`. It can be just `undefined`.\r\n\t\t\t\t// countryCallingCodeSource: 'UNSPECIFIED',\r\n\t\t\t\tnumber\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// `number` can only be international at this point.\r\n\r\n\t// Fast abortion: country codes do not begin with a '0'\r\n\tif (number[1] === '0') {\r\n\t\treturn {}\r\n\t}\r\n\r\n\tmetadata = new Metadata(metadata)\r\n\r\n\t// The thing with country phone codes\r\n\t// is that they are orthogonal to each other\r\n\t// i.e. there's no such country phone code A\r\n\t// for which country phone code B exists\r\n\t// where B starts with A.\r\n\t// Therefore, while scanning digits,\r\n\t// if a valid country code is found,\r\n\t// that means that it is the country code.\r\n\t//\r\n\tlet i = 2\r\n\twhile (i - 1 <= MAX_LENGTH_COUNTRY_CODE && i <= number.length) {\r\n\t\tconst countryCallingCode = number.slice(1, i)\r\n\t\tif (metadata.hasCallingCode(countryCallingCode)) {\r\n\t\t\tmetadata.selectNumberingPlan(countryCallingCode)\r\n\t\t\treturn {\r\n\t\t\t\tcountryCallingCodeSource: isNumberWithIddPrefix ? 'FROM_NUMBER_WITH_IDD' : 'FROM_NUMBER_WITH_PLUS_SIGN',\r\n\t\t\t\tcountryCallingCode,\r\n\t\t\t\tnumber: number.slice(i)\r\n\t\t\t}\r\n\t\t}\r\n\t\ti++\r\n\t}\r\n\r\n\treturn {}\r\n}\r\n\r\n// The possible values for the returned `countryCallingCodeSource` are:\r\n//\r\n// Copy-pasted from:\r\n// https://github.com/google/libphonenumber/blob/master/resources/phonenumber.proto\r\n//\r\n// // The source from which the country_code is derived. This is not set in the\r\n// // general parsing method, but in the method that parses and keeps raw_input.\r\n// // New fields could be added upon request.\r\n// enum CountryCodeSource {\r\n//  // Default value returned if this is not set, because the phone number was\r\n//  // created using parse, not parseAndKeepRawInput. hasCountryCodeSource will\r\n//  // return false if this is the case.\r\n//  UNSPECIFIED = 0;\r\n//\r\n//  // The country_code is derived based on a phone number with a leading \"+\",\r\n//  // e.g. the French number \"+33 1 42 68 53 00\".\r\n//  FROM_NUMBER_WITH_PLUS_SIGN = 1;\r\n//\r\n//  // The country_code is derived based on a phone number with a leading IDD,\r\n//  // e.g. the French number \"011 33 1 42 68 53 00\", as it is dialled from US.\r\n//  FROM_NUMBER_WITH_IDD = 5;\r\n//\r\n//  // The country_code is derived based on a phone number without a leading\r\n//  // \"+\", e.g. the French number \"33 1 42 68 53 00\" when defaultCountry is\r\n//  // supplied as France.\r\n//  FROM_NUMBER_WITHOUT_PLUS_SIGN = 10;\r\n//\r\n//  // The country_code is derived NOT based on the phone number itself, but\r\n//  // from the defaultCountry parameter provided in the parsing function by the\r\n//  // clients. This happens mostly for numbers written in the national format\r\n//  // (without country code). For example, this would be set when parsing the\r\n//  // French number \"01 42 68 53 00\", when defaultCountry is supplied as\r\n//  // France.\r\n//  FROM_DEFAULT_COUNTRY = 20;\r\n// }","import { VALID_PUNCTUATION } from '../constants.js'\r\n\r\n// Removes brackets and replaces dashes with spaces.\r\n//\r\n// E.g. \"(999) 111-22-33\" -> \"999 111 22 33\"\r\n//\r\n// For some reason Google's metadata contains `<intlFormat/>`s with brackets and dashes.\r\n// Meanwhile, there's no single opinion about using punctuation in international phone numbers.\r\n//\r\n// For example, Google's `<intlFormat/>` for USA is `+1 213-373-4253`.\r\n// And here's a quote from WikiPedia's \"North American Numbering Plan\" page:\r\n// https://en.wikipedia.org/wiki/North_American_Numbering_Plan\r\n//\r\n// \"The country calling code for all countries participating in the NANP is 1.\r\n// In international format, an NANP number should be listed as +1 301 555 01 00,\r\n// where 301 is an area code (Maryland).\"\r\n//\r\n// I personally prefer the international format without any punctuation.\r\n// For example, brackets are remnants of the old age, meaning that the\r\n// phone number part in brackets (so called \"area code\") can be omitted\r\n// if dialing within the same \"area\".\r\n// And hyphens were clearly introduced for splitting local numbers into memorizable groups.\r\n// For example, remembering \"5553535\" is difficult but \"555-35-35\" is much simpler.\r\n// Imagine a man taking a bus from home to work and seeing an ad with a phone number.\r\n// He has a couple of seconds to memorize that number until it passes by.\r\n// If it were spaces instead of hyphens the man wouldn't necessarily get it,\r\n// but with hyphens instead of spaces the grouping is more explicit.\r\n// I personally think that hyphens introduce visual clutter,\r\n// so I prefer replacing them with spaces in international numbers.\r\n// In the modern age all output is done on displays where spaces are clearly distinguishable\r\n// so hyphens can be safely replaced with spaces without losing any legibility.\r\n//\r\nexport default function applyInternationalSeparatorStyle(formattedNumber) {\r\n\treturn formattedNumber.replace(new RegExp(`[${VALID_PUNCTUATION}]+`, 'g'), ' ').trim()\r\n}","import applyInternationalSeparatorStyle from './applyInternationalSeparatorStyle.js'\r\n\r\n// This was originally set to $1 but there are some countries for which the\r\n// first group is not used in the national pattern (e.g. Argentina) so the $1\r\n// group does not match correctly. Therefore, we use `\\d`, so that the first\r\n// group actually used in the pattern will be matched.\r\nexport const FIRST_GROUP_PATTERN = /(\\$\\d)/\r\n\r\nexport default function formatNationalNumberUsingFormat(\r\n\tnumber,\r\n\tformat,\r\n\t{\r\n\t\tuseInternationalFormat,\r\n\t\twithNationalPrefix,\r\n\t\tcarrierCode,\r\n\t\tmetadata\r\n\t}\r\n) {\r\n\tconst formattedNumber = number.replace(\r\n\t\tnew RegExp(format.pattern()),\r\n\t\tuseInternationalFormat\r\n\t\t\t? format.internationalFormat()\r\n\t\t\t: (\r\n\t\t\t\t// This library doesn't use `domestic_carrier_code_formatting_rule`,\r\n\t\t\t\t// because that one is only used when formatting phone numbers\r\n\t\t\t\t// for dialing from a mobile phone, and this is not a dialing library.\r\n\t\t\t\t// carrierCode && format.domesticCarrierCodeFormattingRule()\r\n\t\t\t\t// \t// First, replace the $CC in the formatting rule with the desired carrier code.\r\n\t\t\t\t// \t// Then, replace the $FG in the formatting rule with the first group\r\n\t\t\t\t// \t// and the carrier code combined in the appropriate way.\r\n\t\t\t\t// \t? format.format().replace(FIRST_GROUP_PATTERN, format.domesticCarrierCodeFormattingRule().replace('$CC', carrierCode))\r\n\t\t\t\t// \t: (\r\n\t\t\t\t// \t\twithNationalPrefix && format.nationalPrefixFormattingRule()\r\n\t\t\t\t// \t\t\t? format.format().replace(FIRST_GROUP_PATTERN, format.nationalPrefixFormattingRule())\r\n\t\t\t\t// \t\t\t: format.format()\r\n\t\t\t\t// \t)\r\n\t\t\t\twithNationalPrefix && format.nationalPrefixFormattingRule()\r\n\t\t\t\t\t? format.format().replace(FIRST_GROUP_PATTERN, format.nationalPrefixFormattingRule())\r\n\t\t\t\t\t: format.format()\r\n\t\t\t)\r\n\t)\r\n\tif (useInternationalFormat) {\r\n\t\treturn applyInternationalSeparatorStyle(formattedNumber)\r\n\t}\r\n\treturn formattedNumber\r\n}","import Metadata from '../metadata.js'\r\n\r\n/**\r\n * Pattern that makes it easy to distinguish whether a region has a single\r\n * international dialing prefix or not. If a region has a single international\r\n * prefix (e.g. 011 in USA), it will be represented as a string that contains\r\n * a sequence of ASCII digits, and possibly a tilde, which signals waiting for\r\n * the tone. If there are multiple available international prefixes in a\r\n * region, they will be represented as a regex string that always contains one\r\n * or more characters that are not ASCII digits or a tilde.\r\n */\r\nconst SINGLE_IDD_PREFIX_REG_EXP = /^[\\d]+(?:[~\\u2053\\u223C\\uFF5E][\\d]+)?$/\r\n\r\n// If the `country` supports IDD calling, it returns a preferred IDD prefix.\r\n// If the `country` doesn't support IDD calling, it returns `undefined`.\r\nexport default function getIddPrefix(country, callingCode, metadata) {\r\n\tconst countryMetadata = new Metadata(metadata)\r\n\tcountryMetadata.selectNumberingPlan(country, callingCode)\r\n\tif (countryMetadata.defaultIDDPrefix()) {\r\n\t\treturn countryMetadata.defaultIDDPrefix()\r\n\t}\r\n\tif (SINGLE_IDD_PREFIX_REG_EXP.test(countryMetadata.IDDPrefix())) {\r\n\t\treturn countryMetadata.IDDPrefix()\r\n\t}\r\n}\r\n","import { VALID_DIGITS } from '../../constants.js'\r\n\r\n// The RFC 3966 format for extensions.\r\nconst RFC3966_EXTN_PREFIX = ';ext='\r\n\r\n/**\r\n * Helper method for constructing regular expressions for parsing. Creates\r\n * an expression that captures up to max_length digits.\r\n * @return {string} RegEx pattern to capture extension digits.\r\n */\r\nconst getExtensionDigitsPattern = (maxLength) => `([${VALID_DIGITS}]{1,${maxLength}})`\r\n\r\n/**\r\n * Helper initialiser method to create the regular-expression pattern to match\r\n * extensions.\r\n * Copy-pasted from Google's `libphonenumber`:\r\n * https://github.com/google/libphonenumber/blob/55b2646ec9393f4d3d6661b9c82ef9e258e8b829/javascript/i18n/phonenumbers/phonenumberutil.js#L759-L766\r\n * @return {string} RegEx pattern to capture extensions.\r\n */\r\nexport default function createExtensionPattern(purpose) {\r\n\t// We cap the maximum length of an extension based on the ambiguity of the way\r\n\t// the extension is prefixed. As per ITU, the officially allowed length for\r\n\t// extensions is actually 40, but we don't support this since we haven't seen real\r\n\t// examples and this introduces many false interpretations as the extension labels\r\n\t// are not standardized.\r\n\t/** @type {string} */\r\n\tvar extLimitAfterExplicitLabel = '20';\r\n\t/** @type {string} */\r\n\tvar extLimitAfterLikelyLabel = '15';\r\n\t/** @type {string} */\r\n\tvar extLimitAfterAmbiguousChar = '9';\r\n\t/** @type {string} */\r\n\tvar extLimitWhenNotSure = '6';\r\n\r\n\t/** @type {string} */\r\n\tvar possibleSeparatorsBetweenNumberAndExtLabel = \"[ \\u00A0\\\\t,]*\";\r\n\t// Optional full stop (.) or colon, followed by zero or more spaces/tabs/commas.\r\n\t/** @type {string} */\r\n\tvar possibleCharsAfterExtLabel = \"[:\\\\.\\uFF0E]?[ \\u00A0\\\\t,-]*\";\r\n\t/** @type {string} */\r\n\tvar optionalExtnSuffix = \"#?\";\r\n\r\n\t// Here the extension is called out in more explicit way, i.e mentioning it obvious\r\n\t// patterns like \"ext.\".\r\n\t/** @type {string} */\r\n\tvar explicitExtLabels =\r\n\t  \"(?:e?xt(?:ensi(?:o\\u0301?|\\u00F3))?n?|\\uFF45?\\uFF58\\uFF54\\uFF4E?|\\u0434\\u043E\\u0431|anexo)\";\r\n\t// One-character symbols that can be used to indicate an extension, and less\r\n\t// commonly used or more ambiguous extension labels.\r\n\t/** @type {string} */\r\n\tvar ambiguousExtLabels = \"(?:[x\\uFF58#\\uFF03~\\uFF5E]|int|\\uFF49\\uFF4E\\uFF54)\";\r\n\t// When extension is not separated clearly.\r\n\t/** @type {string} */\r\n\tvar ambiguousSeparator = \"[- ]+\";\r\n\t// This is the same as possibleSeparatorsBetweenNumberAndExtLabel, but not matching\r\n\t// comma as extension label may have it.\r\n\t/** @type {string} */\r\n\tvar possibleSeparatorsNumberExtLabelNoComma = \"[ \\u00A0\\\\t]*\";\r\n\t// \",,\" is commonly used for auto dialling the extension when connected. First\r\n\t// comma is matched through possibleSeparatorsBetweenNumberAndExtLabel, so we do\r\n\t// not repeat it here. Semi-colon works in Iphone and Android also to pop up a\r\n\t// button with the extension number following.\r\n\t/** @type {string} */\r\n\tvar autoDiallingAndExtLabelsFound = \"(?:,{2}|;)\";\r\n\r\n\t/** @type {string} */\r\n\tvar rfcExtn = RFC3966_EXTN_PREFIX\r\n\t     + getExtensionDigitsPattern(extLimitAfterExplicitLabel);\r\n\t/** @type {string} */\r\n\tvar explicitExtn = possibleSeparatorsBetweenNumberAndExtLabel + explicitExtLabels\r\n\t     + possibleCharsAfterExtLabel\r\n\t     + getExtensionDigitsPattern(extLimitAfterExplicitLabel)\r\n\t     + optionalExtnSuffix;\r\n\t/** @type {string} */\r\n\tvar ambiguousExtn = possibleSeparatorsBetweenNumberAndExtLabel + ambiguousExtLabels\r\n\t     + possibleCharsAfterExtLabel\r\n\t+ getExtensionDigitsPattern(extLimitAfterAmbiguousChar)\r\n\t+ optionalExtnSuffix;\r\n\t/** @type {string} */\r\n\tvar americanStyleExtnWithSuffix = ambiguousSeparator\r\n\t+ getExtensionDigitsPattern(extLimitWhenNotSure) + \"#\";\r\n\r\n\t/** @type {string} */\r\n\tvar autoDiallingExtn = possibleSeparatorsNumberExtLabelNoComma\r\n\t     + autoDiallingAndExtLabelsFound + possibleCharsAfterExtLabel\r\n\t     + getExtensionDigitsPattern(extLimitAfterLikelyLabel)\r\n\t+ optionalExtnSuffix;\r\n\t/** @type {string} */\r\n\tvar onlyCommasExtn = possibleSeparatorsNumberExtLabelNoComma\r\n\t    + \"(?:,)+\" + possibleCharsAfterExtLabel\r\n\t    + getExtensionDigitsPattern(extLimitAfterAmbiguousChar)\r\n\t    + optionalExtnSuffix;\r\n\r\n\t// The first regular expression covers RFC 3966 format, where the extension is added\r\n\t// using \";ext=\". The second more generic where extension is mentioned with explicit\r\n\t// labels like \"ext:\". In both the above cases we allow more numbers in extension than\r\n\t// any other extension labels. The third one captures when single character extension\r\n\t// labels or less commonly used labels are used. In such cases we capture fewer\r\n\t// extension digits in order to reduce the chance of falsely interpreting two\r\n\t// numbers beside each other as a number + extension. The fourth one covers the\r\n\t// special case of American numbers where the extension is written with a hash\r\n\t// at the end, such as \"- 503#\". The fifth one is exclusively for extension\r\n\t// autodialling formats which are used when dialling and in this case we accept longer\r\n\t// extensions. The last one is more liberal on the number of commas that acts as\r\n\t// extension labels, so we have a strict cap on the number of digits in such extensions.\r\n\treturn rfcExtn + \"|\"\r\n\t       + explicitExtn + \"|\"\r\n\t       + ambiguousExtn + \"|\"\r\n\t       + americanStyleExtnWithSuffix + \"|\"\r\n\t       + autoDiallingExtn + \"|\"\r\n\t       + onlyCommasExtn;\r\n}","import {\r\n\tMIN_LENGTH_FOR_NSN,\r\n\tVALID_DIGITS,\r\n\tVALID_PUNCTUATION,\r\n\tPLUS_CHARS\r\n} from '../constants.js'\r\n\r\nimport createExtensionPattern from './extension/createExtensionPattern.js'\r\n\r\n//  Regular expression of viable phone numbers. This is location independent.\r\n//  Checks we have at least three leading digits, and only valid punctuation,\r\n//  alpha characters and digits in the phone number. Does not include extension\r\n//  data. The symbol 'x' is allowed here as valid punctuation since it is often\r\n//  used as a placeholder for carrier codes, for example in Brazilian phone\r\n//  numbers. We also allow multiple '+' characters at the start.\r\n//\r\n//  Corresponds to the following:\r\n//  [digits]{minLengthNsn}|\r\n//  plus_sign*\r\n//  (([punctuation]|[star])*[digits]){3,}([punctuation]|[star]|[digits]|[alpha])*\r\n//\r\n//  The first reg-ex is to allow short numbers (two digits long) to be parsed if\r\n//  they are entered as \"15\" etc, but only if there is no punctuation in them.\r\n//  The second expression restricts the number of digits to three or more, but\r\n//  then allows them to be in international form, and to have alpha-characters\r\n//  and punctuation. We split up the two reg-exes here and combine them when\r\n//  creating the reg-ex VALID_PHONE_NUMBER_PATTERN itself so we can prefix it\r\n//  with ^ and append $ to each branch.\r\n//\r\n//  \"Note VALID_PUNCTUATION starts with a -,\r\n//   so must be the first in the range\" (c) Google devs.\r\n//  (wtf did they mean by saying that; probably nothing)\r\n//\r\nconst MIN_LENGTH_PHONE_NUMBER_PATTERN = '[' + VALID_DIGITS + ']{' + MIN_LENGTH_FOR_NSN + '}'\r\n//\r\n// And this is the second reg-exp:\r\n// (see MIN_LENGTH_PHONE_NUMBER_PATTERN for a full description of this reg-exp)\r\n//\r\nexport const VALID_PHONE_NUMBER =\r\n\t'[' + PLUS_CHARS + ']{0,1}' +\r\n\t'(?:' +\r\n\t\t'[' + VALID_PUNCTUATION + ']*' +\r\n\t\t'[' + VALID_DIGITS + ']' +\r\n\t'){3,}' +\r\n\t'[' +\r\n\t\tVALID_PUNCTUATION +\r\n\t\tVALID_DIGITS +\r\n\t']*'\r\n\r\n// This regular expression isn't present in Google's `libphonenumber`\r\n// and is only used to determine whether the phone number being input\r\n// is too short for it to even consider it a \"valid\" number.\r\n// This is just a way to differentiate between a really invalid phone\r\n// number like \"abcde\" and a valid phone number that a user has just\r\n// started inputting, like \"+1\" or \"1\": both these cases would be\r\n// considered `NOT_A_NUMBER` by Google's `libphonenumber`, but this\r\n// library can provide a more detailed error message — whether it's\r\n// really \"not a number\", or is it just a start of a valid phone number.\r\nconst VALID_PHONE_NUMBER_START_REG_EXP = new RegExp(\r\n\t'^' +\r\n\t'[' + PLUS_CHARS + ']{0,1}' +\r\n\t'(?:' +\r\n\t\t'[' + VALID_PUNCTUATION + ']*' +\r\n\t\t'[' + VALID_DIGITS + ']' +\r\n\t'){1,2}' +\r\n\t'$'\r\n, 'i')\r\n\r\nexport const VALID_PHONE_NUMBER_WITH_EXTENSION =\r\n\tVALID_PHONE_NUMBER +\r\n\t// Phone number extensions\r\n\t'(?:' + createExtensionPattern() + ')?'\r\n\r\n// The combined regular expression for valid phone numbers:\r\n//\r\nconst VALID_PHONE_NUMBER_PATTERN = new RegExp(\r\n\t// Either a short two-digit-only phone number\r\n\t'^' +\r\n\t\tMIN_LENGTH_PHONE_NUMBER_PATTERN +\r\n\t'$' +\r\n\t'|' +\r\n\t// Or a longer fully parsed phone number (min 3 characters)\r\n\t'^' +\r\n\t\tVALID_PHONE_NUMBER_WITH_EXTENSION +\r\n\t'$'\r\n, 'i')\r\n\r\n// Checks to see if the string of characters could possibly be a phone number at\r\n// all. At the moment, checks to see that the string begins with at least 2\r\n// digits, ignoring any punctuation commonly found in phone numbers. This method\r\n// does not require the number to be normalized in advance - but does assume\r\n// that leading non-number symbols have been removed, such as by the method\r\n// `extract_possible_number`.\r\n//\r\nexport default function isViablePhoneNumber(number) {\r\n\treturn number.length >= MIN_LENGTH_FOR_NSN &&\r\n\t\tVALID_PHONE_NUMBER_PATTERN.test(number)\r\n}\r\n\r\n// This is just a way to differentiate between a really invalid phone\r\n// number like \"abcde\" and a valid phone number that a user has just\r\n// started inputting, like \"+1\" or \"1\": both these cases would be\r\n// considered `NOT_A_NUMBER` by Google's `libphonenumber`, but this\r\n// library can provide a more detailed error message — whether it's\r\n// really \"not a number\", or is it just a start of a valid phone number.\r\nexport function isViablePhoneNumberStart(number) {\r\n\treturn VALID_PHONE_NUMBER_START_REG_EXP.test(number)\r\n}","import isViablePhoneNumber from './isViablePhoneNumber.js'\r\n\r\n// https://www.ietf.org/rfc/rfc3966.txt\r\n\r\n/**\r\n * @param  {string} text - Phone URI (RFC 3966).\r\n * @return {object} `{ ?number, ?ext }`.\r\n */\r\nexport function parseRFC3966(text) {\r\n\tlet number\r\n\tlet ext\r\n\r\n\t// Replace \"tel:\" with \"tel=\" for parsing convenience.\r\n\ttext = text.replace(/^tel:/, 'tel=')\r\n\r\n\tfor (const part of text.split(';')) {\r\n\t\tconst [name, value] = part.split('=')\r\n\t\tswitch (name) {\r\n\t\t\tcase 'tel':\r\n\t\t\t\tnumber = value\r\n\t\t\t\tbreak\r\n\t\t\tcase 'ext':\r\n\t\t\t\text = value\r\n\t\t\t\tbreak\r\n\t\t\tcase 'phone-context':\r\n\t\t\t\t// Only \"country contexts\" are supported.\r\n\t\t\t\t// \"Domain contexts\" are ignored.\r\n\t\t\t\tif (value[0] === '+') {\r\n\t\t\t\t\tnumber = value + number\r\n\t\t\t\t}\r\n\t\t\t\tbreak\r\n\t\t}\r\n\t}\r\n\r\n\t// If the phone number is not viable, then abort.\r\n\tif (!isViablePhoneNumber(number)) {\r\n\t\treturn {}\r\n\t}\r\n\r\n\tconst result = { number }\r\n\tif (ext) {\r\n\t\tresult.ext = ext\r\n\t}\r\n\treturn result\r\n}\r\n\r\n/**\r\n * @param  {object} - `{ ?number, ?extension }`.\r\n * @return {string} Phone URI (RFC 3966).\r\n */\r\nexport function formatRFC3966({ number, ext }) {\r\n\tif (!number) {\r\n\t\treturn ''\r\n\t}\r\n\tif (number[0] !== '+') {\r\n\t\tthrow new Error(`\"formatRFC3966()\" expects \"number\" to be in E.164 format.`)\r\n\t}\r\n\treturn `tel:${number}${ext ? ';ext=' + ext : ''}`\r\n}","// This is a port of Google Android `libphonenumber`'s\r\n// `phonenumberutil.js` of December 31th, 2018.\r\n//\r\n// https://github.com/googlei18n/libphonenumber/commits/master/javascript/i18n/phonenumbers/phonenumberutil.js\r\n\r\nimport matchesEntirely from './helpers/matchesEntirely.js'\r\nimport formatNationalNumberUsingFormat from './helpers/formatNationalNumberUsingFormat.js'\r\nimport Metadata, { getCountryCallingCode } from './metadata.js'\r\nimport getIddPrefix from './helpers/getIddPrefix.js'\r\nimport { formatRFC3966 } from './helpers/RFC3966.js'\r\n\r\nconst DEFAULT_OPTIONS = {\r\n\tformatExtension: (formattedNumber, extension, metadata) => `${formattedNumber}${metadata.ext()}${extension}`\r\n}\r\n\r\n/**\r\n * Formats a phone number.\r\n *\r\n * format(phoneNumberInstance, 'INTERNATIONAL', { ..., v2: true }, metadata)\r\n * format(phoneNumberInstance, 'NATIONAL', { ..., v2: true }, metadata)\r\n *\r\n * format({ phone: '8005553535', country: 'RU' }, 'INTERNATIONAL', { ... }, metadata)\r\n * format({ phone: '8005553535', country: 'RU' }, 'NATIONAL', undefined, metadata)\r\n *\r\n * @param  {object|PhoneNumber} input — If `options.v2: true` flag is passed, the `input` should be a `PhoneNumber` instance. Otherwise, it should be an object of shape `{ phone: '...', country: '...' }`.\r\n * @param  {string} format\r\n * @param  {object} [options]\r\n * @param  {object} metadata\r\n * @return {string}\r\n */\r\nexport default function formatNumber(input, format, options, metadata) {\r\n\t// Apply default options.\r\n\tif (options) {\r\n\t\t// Using ES6 \"rest spread\" syntax here didn't work with `babel`/`istanbul`\r\n\t\t// for some weird reason: this line of code would cause the code coverage\r\n\t\t// to show as not 100%. That's because `babel`/`istanbul`, for some weird reason,\r\n\t\t// apparently doesn't know how to properly exclude Babel polyfills from code coverage.\r\n\t\t//\r\n\t\t// options = { ...DEFAULT_OPTIONS, ...options }\r\n\t\t//\r\n\t\toptions = merge({}, DEFAULT_OPTIONS, options)\r\n\t} else {\r\n\t\toptions = DEFAULT_OPTIONS\r\n\t}\r\n\r\n\tmetadata = new Metadata(metadata)\r\n\r\n\t// Normally, the `input` object is supposed to be a `PhoneNumber` class instance.\r\n\t// Also, according to the `PhoneNumber` class source code, `country` can't be \"001\".\r\n\t// It means that normally `input.country` or `input.countryCallingCode` is supposed\r\n\t// to be present because either of the two is always required to exist in a `PhoneNumber` instance.\r\n\t// This means that realistically, it's gonna step into either the first `if`\r\n\t// or the following `else if`, and normally it won't even reach the legacy-compatibility\r\n\t// `else return input.phone || ''` part.\r\n\t// So normally, it won't ever return an empty string here.\r\n\tif (input.country && input.country !== '001') {\r\n\t\t// Validate `input.country`.\r\n\t\tif (!metadata.hasCountry(input.country)) {\r\n\t\t\tthrow new Error(`Unknown country: ${input.country}`)\r\n\t\t}\r\n\t\tmetadata.selectNumberingPlan(input.country)\r\n\t}\r\n\telse if (input.countryCallingCode) {\r\n\t\tmetadata.selectNumberingPlan(input.countryCallingCode)\r\n\t}\r\n\telse return input.phone || ''\r\n\r\n\tconst countryCallingCode = metadata.countryCallingCode()\r\n\r\n\tconst nationalNumber = options.v2 ? input.nationalNumber : input.phone\r\n\r\n\t// This variable should have been declared inside `case`s\r\n\t// but Babel has a bug and it says \"duplicate variable declaration\".\r\n\tlet number\r\n\r\n\tswitch (format) {\r\n\t\tcase 'NATIONAL':\r\n\t\t\t// Normally, the `input` object is supposed to be a `PhoneNumber` class instance,\r\n\t\t\t// and a `PhoneNumber` class instance is always required to have a `nationalNumber`.\r\n\t\t\t// This means that the `if (!nationalNumber)` below is just for legacy-compatibility\r\n\t\t\t// and it normally can't really happen, so normally it won't ever return an empty string here.\r\n\t\t\tif (!nationalNumber) {\r\n\t\t\t\treturn ''\r\n\t\t\t}\r\n\t\t\tnumber = formatNationalNumber(nationalNumber, input.carrierCode, 'NATIONAL', metadata, options)\r\n\t\t\treturn addExtension(number, input.ext, metadata, options.formatExtension)\r\n\r\n\t\tcase 'INTERNATIONAL':\r\n\t\t\t// Legacy argument support.\r\n\t\t\t// (`{ country: ..., phone: '' }`)\r\n\t\t\tif (!nationalNumber) {\r\n\t\t\t\treturn `+${countryCallingCode}`\r\n\t\t\t}\r\n\t\t\tnumber = formatNationalNumber(nationalNumber, null, 'INTERNATIONAL', metadata, options)\r\n\t\t\tnumber = `+${countryCallingCode} ${number}`\r\n\t\t\treturn addExtension(number, input.ext, metadata, options.formatExtension)\r\n\r\n\t\tcase 'E.164':\r\n\t\t\t// `E.164` doesn't define \"phone number extensions\".\r\n\t\t\treturn `+${countryCallingCode}${nationalNumber}`\r\n\r\n\t\tcase 'RFC3966':\r\n\t\t\treturn formatRFC3966({\r\n\t\t\t\tnumber: `+${countryCallingCode}${nationalNumber}`,\r\n\t\t\t\text: input.ext\r\n\t\t\t})\r\n\r\n\t\t// For reference, here's Google's IDD formatter:\r\n\t\t// https://github.com/google/libphonenumber/blob/32719cf74e68796788d1ca45abc85dcdc63ba5b9/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L1546\r\n\t\t// Not saying that this IDD formatter replicates it 1:1, but it seems to work.\r\n\t\t// Who would even need to format phone numbers in IDD format anyway?\r\n\t\tcase 'IDD':\r\n\t\t\t// If the required `fromCountry` parameter is not passed, it will return `undefined`.\r\n\t\t\tif (!options.fromCountry) {\r\n\t\t\t\treturn\r\n\t\t\t\t// throw new Error('`fromCountry` option not passed for IDD-prefixed formatting.')\r\n\t\t\t}\r\n\t\t\tconst formattedNumber = formatIDD(\r\n\t\t\t\tnationalNumber,\r\n\t\t\t\tinput.carrierCode,\r\n\t\t\t\tcountryCallingCode,\r\n\t\t\t\toptions.fromCountry,\r\n\t\t\t\tmetadata\r\n\t\t\t)\r\n\t\t\t// If the country of the phone number doesn't support IDD calling, it will return `undefined`.\r\n\t\t\tif (!formattedNumber) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t\treturn addExtension(formattedNumber, input.ext, metadata, options.formatExtension)\r\n\r\n\t\tdefault:\r\n\t\t\tthrow new Error(`Unknown \"format\" argument passed to \"formatNumber()\": \"${format}\"`)\r\n\t}\r\n}\r\n\r\nfunction formatNationalNumber(number, carrierCode, formatAs, metadata, options) {\r\n\tconst format = chooseFormatForNumber(metadata.formats(), number)\r\n\tif (!format) {\r\n\t\treturn number\r\n\t}\r\n\treturn formatNationalNumberUsingFormat(\r\n\t\tnumber,\r\n\t\tformat,\r\n\t\t{\r\n\t\t\tuseInternationalFormat: formatAs === 'INTERNATIONAL',\r\n\t\t\twithNationalPrefix: format.nationalPrefixIsOptionalWhenFormattingInNationalFormat() && (options && options.nationalPrefix === false) ? false : true,\r\n\t\t\tcarrierCode,\r\n\t\t\tmetadata\r\n\t\t}\r\n\t)\r\n}\r\n\r\nexport function chooseFormatForNumber(availableFormats, nationalNumber) {\r\n\t// Using a `for ... of` loop here didn't work with `babel`/`istanbul`:\r\n\t// for some weird reason, it showed code coverage less than 100%.\r\n\t// That's because `babel`/`istanbul`, for some weird reason,\r\n\t// apparently doesn't know how to properly exclude Babel polyfills from code coverage.\r\n\t//\r\n\t// for (const format of availableFormats) { ... }\r\n\t//\r\n\treturn pickFirstMatchingElement(availableFormats, (format) => {\r\n\t\t// Validate leading digits.\r\n\t\t// The test case for \"else path\" could be found by searching for\r\n\t\t// \"format.leadingDigitsPatterns().length === 0\".\r\n\t\tif (format.leadingDigitsPatterns().length > 0) {\r\n\t\t\t// The last leading_digits_pattern is used here, as it is the most detailed\r\n\t\t\tconst lastLeadingDigitsPattern = format.leadingDigitsPatterns()[format.leadingDigitsPatterns().length - 1]\r\n\t\t\t// If leading digits don't match then move on to the next phone number format\r\n\t\t\tif (nationalNumber.search(lastLeadingDigitsPattern) !== 0) {\r\n\t\t\t\treturn false\r\n\t\t\t}\r\n\t\t}\r\n\t\t// Check that the national number matches the phone number format regular expression\r\n\t\treturn matchesEntirely(nationalNumber, format.pattern())\r\n\t})\r\n}\r\n\r\nfunction addExtension(formattedNumber, ext, metadata, formatExtension) {\r\n\treturn ext ? formatExtension(formattedNumber, ext, metadata) : formattedNumber\r\n}\r\n\r\nfunction formatIDD(\r\n\tnationalNumber,\r\n\tcarrierCode,\r\n\tcountryCallingCode,\r\n\tfromCountry,\r\n\tmetadata\r\n) {\r\n\tconst fromCountryCallingCode = getCountryCallingCode(fromCountry, metadata.metadata)\r\n\t// When calling within the same country calling code.\r\n\tif (fromCountryCallingCode === countryCallingCode) {\r\n\t\tconst formattedNumber = formatNationalNumber(nationalNumber, carrierCode, 'NATIONAL', metadata)\r\n\t\t// For NANPA regions, return the national format for these regions\r\n\t\t// but prefix it with the country calling code.\r\n\t\tif (countryCallingCode === '1') {\r\n\t\t\treturn countryCallingCode + ' ' + formattedNumber\r\n\t\t}\r\n\t\t// If regions share a country calling code, the country calling code need\r\n\t\t// not be dialled. This also applies when dialling within a region, so this\r\n\t\t// if clause covers both these cases. Technically this is the case for\r\n\t\t// dialling from La Reunion to other overseas departments of France (French\r\n\t\t// Guiana, Martinique, Guadeloupe), but not vice versa - so we don't cover\r\n\t\t// this edge case for now and for those cases return the version including\r\n\t\t// country calling code. Details here:\r\n\t\t// http://www.petitfute.com/voyage/225-info-pratiques-reunion\r\n\t\t//\r\n\t\treturn formattedNumber\r\n\t}\r\n\tconst iddPrefix = getIddPrefix(fromCountry, undefined, metadata.metadata)\r\n\tif (iddPrefix) {\r\n\t\treturn `${iddPrefix} ${countryCallingCode} ${formatNationalNumber(nationalNumber, null, 'INTERNATIONAL', metadata)}`\r\n\t}\r\n}\r\n\r\nfunction merge(...objects) {\r\n\tlet i = 1\r\n\twhile (i < objects.length) {\r\n\t\tif (objects[i]) {\r\n\t\t\tfor (const key in objects[i]) {\r\n\t\t\t\tobjects[0][key] = objects[i][key]\r\n\t\t\t}\r\n\t\t}\r\n\t\ti++\r\n\t}\r\n\treturn objects[0]\r\n}\r\n\r\nfunction pickFirstMatchingElement(elements, testFunction) {\r\n\tlet i = 0\r\n\twhile (i < elements.length) {\r\n\t\tif (testFunction(elements[i])) {\r\n\t\t\treturn elements[i]\r\n\t\t}\r\n\t\ti++\r\n\t}\r\n}","import Metadata, { validateMetadata } from './metadata.js'\r\nimport isPossibleNumber from './isPossible.js'\r\nimport isValidNumber from './isValid.js'\r\nimport getNumberType from './helpers/getNumberType.js'\r\nimport getPossibleCountriesForNumber from './helpers/getPossibleCountriesForNumber.js'\r\nimport extractCountryCallingCode from './helpers/extractCountryCallingCode.js'\r\nimport isObject from './helpers/isObject.js'\r\nimport formatNumber from './format.js'\r\n\r\nconst USE_NON_GEOGRAPHIC_COUNTRY_CODE = false\r\n\r\nexport default class PhoneNumber {\r\n\t/**\r\n\t * @param  {string} countryOrCountryCallingCode\r\n\t * @param  {string} nationalNumber\r\n\t * @param  {object} metadata — Metadata JSON\r\n\t * @return {PhoneNumber}\r\n\t */\r\n\tconstructor(countryOrCountryCallingCode, nationalNumber, metadata) {\r\n\t\t// Validate `countryOrCountryCallingCode` argument.\r\n\t\tif (!countryOrCountryCallingCode) {\r\n\t\t\tthrow new TypeError('First argument is required')\r\n\t\t}\r\n\t\tif (typeof countryOrCountryCallingCode !== 'string') {\r\n\t\t\tthrow new TypeError('First argument must be a string')\r\n\t\t}\r\n\r\n\t\t// In case of public API use: `constructor(number, metadata)`.\r\n\t\t// Transform the arguments from `constructor(number, metadata)` to\r\n\t\t// `constructor(countryOrCountryCallingCode, nationalNumber, metadata)`.\r\n\t\tif (countryOrCountryCallingCode[0] === '+' && !nationalNumber) {\r\n\t\t\tthrow new TypeError('`metadata` argument not passed')\r\n\t\t}\r\n\t\tif (isObject(nationalNumber) && isObject(nationalNumber.countries)) {\r\n\t\t\tmetadata = nationalNumber\r\n\t\t\tconst e164Number = countryOrCountryCallingCode\r\n\t\t\tif (!E164_NUMBER_REGEXP.test(e164Number)) {\r\n\t\t\t\tthrow new Error('Invalid `number` argument passed: must consist of a \"+\" followed by digits')\r\n\t\t\t}\r\n\t\t\tconst { countryCallingCode, number } = extractCountryCallingCode(e164Number, undefined, undefined, undefined, metadata)\r\n\t\t\tnationalNumber = number\r\n\t\t\tcountryOrCountryCallingCode = countryCallingCode\r\n\t\t\tif (!nationalNumber) {\r\n\t\t\t\tthrow new Error('Invalid `number` argument passed: too short')\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Validate `nationalNumber` argument.\r\n\t\tif (!nationalNumber) {\r\n\t\t\tthrow new TypeError('`nationalNumber` argument is required')\r\n\t\t}\r\n\t\tif (typeof nationalNumber !== 'string') {\r\n\t\t\tthrow new TypeError('`nationalNumber` argument must be a string')\r\n\t\t}\r\n\r\n\t\t// Validate `metadata` argument.\r\n\t\tvalidateMetadata(metadata)\r\n\r\n\t\t// Initialize properties.\r\n\t\tconst { country, countryCallingCode } = getCountryAndCountryCallingCode(\r\n\t\t\tcountryOrCountryCallingCode,\r\n\t\t\tmetadata\r\n\t\t)\r\n\t\tthis.country = country\r\n\t\tthis.countryCallingCode = countryCallingCode\r\n\t\tthis.nationalNumber = nationalNumber\r\n\t\tthis.number = '+' + this.countryCallingCode + this.nationalNumber\r\n\t\t// Exclude `metadata` property output from `PhoneNumber.toString()`\r\n\t\t// so that it doesn't clutter the console output of Node.js.\r\n\t\t// Previously, when Node.js did `console.log(new PhoneNumber(...))`,\r\n\t\t// it would output the whole internal structure of the `metadata` object.\r\n\t\tthis.getMetadata = () => metadata\r\n\t}\r\n\r\n\tsetExt(ext) {\r\n\t\tthis.ext = ext\r\n\t}\r\n\r\n\tgetPossibleCountries() {\r\n\t\tif (this.country) {\r\n\t\t\treturn [this.country]\r\n\t\t}\r\n\t\treturn getPossibleCountriesForNumber(\r\n\t\t\tthis.countryCallingCode,\r\n\t\t\tthis.nationalNumber,\r\n\t\t\tthis.getMetadata()\r\n\t\t)\r\n\t}\r\n\r\n\tisPossible() {\r\n\t\treturn isPossibleNumber(this, { v2: true }, this.getMetadata())\r\n\t}\r\n\r\n\tisValid() {\r\n\t\treturn isValidNumber(this, { v2: true }, this.getMetadata())\r\n\t}\r\n\r\n\tisNonGeographic() {\r\n\t\tconst metadata = new Metadata(this.getMetadata())\r\n\t\treturn metadata.isNonGeographicCallingCode(this.countryCallingCode)\r\n\t}\r\n\r\n\tisEqual(phoneNumber) {\r\n\t\treturn this.number === phoneNumber.number && this.ext === phoneNumber.ext\r\n\t}\r\n\r\n\t// This function was originally meant to be an equivalent for `validatePhoneNumberLength()`,\r\n\t// but later it was found out that it doesn't include the possible `TOO_SHORT` result\r\n\t// returned from `parsePhoneNumberWithError()` in the original `validatePhoneNumberLength()`,\r\n\t// so eventually I simply commented out this method from the `PhoneNumber` class\r\n\t// and just left the `validatePhoneNumberLength()` function, even though that one would require\r\n\t// and additional step to also validate the actual country / calling code of the phone number.\r\n\t// validateLength() {\r\n\t// \tconst metadata = new Metadata(this.getMetadata())\r\n\t// \tmetadata.selectNumberingPlan(this.countryCallingCode)\r\n\t// \tconst result = checkNumberLength(this.nationalNumber, metadata)\r\n\t// \tif (result !== 'IS_POSSIBLE') {\r\n\t// \t\treturn result\r\n\t// \t}\r\n\t// }\r\n\r\n\tgetType() {\r\n\t\treturn getNumberType(this, { v2: true }, this.getMetadata())\r\n\t}\r\n\r\n\tformat(format, options) {\r\n\t\treturn formatNumber(\r\n\t\t\tthis,\r\n\t\t\tformat,\r\n\t\t\toptions ? { ...options, v2: true } : { v2: true },\r\n\t\t\tthis.getMetadata()\r\n\t\t)\r\n\t}\r\n\r\n\tformatNational(options) {\r\n\t\treturn this.format('NATIONAL', options)\r\n\t}\r\n\r\n\tformatInternational(options) {\r\n\t\treturn this.format('INTERNATIONAL', options)\r\n\t}\r\n\r\n\tgetURI(options) {\r\n\t\treturn this.format('RFC3966', options)\r\n\t}\r\n}\r\n\r\nconst isCountryCode = (value) => /^[A-Z]{2}$/.test(value)\r\n\r\nfunction getCountryAndCountryCallingCode(countryOrCountryCallingCode, metadataJson) {\r\n\tlet country\r\n\tlet countryCallingCode\r\n\r\n\tconst metadata = new Metadata(metadataJson)\r\n\t// If country code is passed then derive `countryCallingCode` from it.\r\n\t// Also store the country code as `.country`.\r\n\tif (isCountryCode(countryOrCountryCallingCode)) {\r\n\t\tcountry = countryOrCountryCallingCode\r\n\t\tmetadata.selectNumberingPlan(country)\r\n\t\tcountryCallingCode = metadata.countryCallingCode()\r\n\t} else {\r\n\t\tcountryCallingCode = countryOrCountryCallingCode\r\n\t\t/* istanbul ignore if */\r\n\t\tif (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\r\n\t\t\tif (metadata.isNonGeographicCallingCode(countryCallingCode)) {\r\n\t\t\t\tcountry = '001'\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn {\r\n\t\tcountry,\r\n\t\tcountryCallingCode\r\n\t}\r\n}\r\n\r\nconst E164_NUMBER_REGEXP = /^\\+\\d+$/","// https://stackoverflow.com/a/46971044/970769\r\n// \"Breaking changes in Typescript 2.1\"\r\n// \"Extending built-ins like Error, Array, and Map may no longer work.\"\r\n// \"As a recommendation, you can manually adjust the prototype immediately after any super(...) calls.\"\r\n// https://github.com/Microsoft/TypeScript-wiki/blob/main/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work\r\nexport default class ParseError extends Error {\r\n  constructor(code) {\r\n    super(code)\r\n    // Set the prototype explicitly.\r\n    // Any subclass of FooError will have to manually set the prototype as well.\r\n    Object.setPrototypeOf(this, ParseError.prototype)\r\n    this.name = this.constructor.name\r\n  }\r\n}","import createExtensionPattern from './createExtensionPattern.js'\r\n\r\n// Regexp of all known extension prefixes used by different regions followed by\r\n// 1 or more valid digits, for use when parsing.\r\nconst EXTN_PATTERN = new RegExp('(?:' + createExtensionPattern() + ')$', 'i')\r\n\r\n// Strips any extension (as in, the part of the number dialled after the call is\r\n// connected, usually indicated with extn, ext, x or similar) from the end of\r\n// the number, and returns it.\r\nexport default function extractExtension(number) {\r\n\tconst start = number.search(EXTN_PATTERN)\r\n\tif (start < 0) {\r\n\t\treturn {}\r\n\t}\r\n\t// If we find a potential extension, and the number preceding this is a viable\r\n\t// number, we assume it is an extension.\r\n\tconst numberWithoutExtension = number.slice(0, start)\r\n\tconst matches = number.match(EXTN_PATTERN)\r\n\tlet i = 1\r\n\twhile (i < matches.length) {\r\n\t\tif (matches[i]) {\r\n\t\t\treturn {\r\n\t\t\t\tnumber: numberWithoutExtension,\r\n\t\t\t\text: matches[i]\r\n\t\t\t}\r\n\t\t}\r\n\t\ti++\r\n\t}\r\n}","// These mappings map a character (key) to a specific digit that should\r\n// replace it for normalization purposes. Non-European digits that\r\n// may be used in phone numbers are mapped to a European equivalent.\r\n//\r\n// E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`.\r\n//\r\nexport const DIGITS = {\r\n\t'0': '0',\r\n\t'1': '1',\r\n\t'2': '2',\r\n\t'3': '3',\r\n\t'4': '4',\r\n\t'5': '5',\r\n\t'6': '6',\r\n\t'7': '7',\r\n\t'8': '8',\r\n\t'9': '9',\r\n\t'\\uFF10': '0', // Fullwidth digit 0\r\n\t'\\uFF11': '1', // Fullwidth digit 1\r\n\t'\\uFF12': '2', // Fullwidth digit 2\r\n\t'\\uFF13': '3', // Fullwidth digit 3\r\n\t'\\uFF14': '4', // Fullwidth digit 4\r\n\t'\\uFF15': '5', // Fullwidth digit 5\r\n\t'\\uFF16': '6', // Fullwidth digit 6\r\n\t'\\uFF17': '7', // Fullwidth digit 7\r\n\t'\\uFF18': '8', // Fullwidth digit 8\r\n\t'\\uFF19': '9', // Fullwidth digit 9\r\n\t'\\u0660': '0', // Arabic-indic digit 0\r\n\t'\\u0661': '1', // Arabic-indic digit 1\r\n\t'\\u0662': '2', // Arabic-indic digit 2\r\n\t'\\u0663': '3', // Arabic-indic digit 3\r\n\t'\\u0664': '4', // Arabic-indic digit 4\r\n\t'\\u0665': '5', // Arabic-indic digit 5\r\n\t'\\u0666': '6', // Arabic-indic digit 6\r\n\t'\\u0667': '7', // Arabic-indic digit 7\r\n\t'\\u0668': '8', // Arabic-indic digit 8\r\n\t'\\u0669': '9', // Arabic-indic digit 9\r\n\t'\\u06F0': '0', // Eastern-Arabic digit 0\r\n\t'\\u06F1': '1', // Eastern-Arabic digit 1\r\n\t'\\u06F2': '2', // Eastern-Arabic digit 2\r\n\t'\\u06F3': '3', // Eastern-Arabic digit 3\r\n\t'\\u06F4': '4', // Eastern-Arabic digit 4\r\n\t'\\u06F5': '5', // Eastern-Arabic digit 5\r\n\t'\\u06F6': '6', // Eastern-Arabic digit 6\r\n\t'\\u06F7': '7', // Eastern-Arabic digit 7\r\n\t'\\u06F8': '8', // Eastern-Arabic digit 8\r\n\t'\\u06F9': '9'  // Eastern-Arabic digit 9\r\n}\r\n\r\nexport function parseDigit(character) {\r\n\treturn DIGITS[character]\r\n}\r\n\r\n/**\r\n * Parses phone number digits from a string.\r\n * Drops all punctuation leaving only digits.\r\n * Also converts wide-ascii and arabic-indic numerals to conventional numerals.\r\n * E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`.\r\n * @param  {string} string\r\n * @return {string}\r\n * @example\r\n * ```js\r\n * parseDigits('8 (800) 555')\r\n * // Outputs '8800555'.\r\n * ```\r\n */\r\nexport default function parseDigits(string) {\r\n\tlet result = ''\r\n\t// Using `.split('')` here instead of normal `for ... of`\r\n\t// because the importing application doesn't neccessarily include an ES6 polyfill.\r\n\t// The `.split('')` approach discards \"exotic\" UTF-8 characters\r\n\t// (the ones consisting of four bytes) but digits\r\n\t// (including non-European ones) don't fall into that range\r\n\t// so such \"exotic\" characters would be discarded anyway.\r\n\tfor (const character of string.split('')) {\r\n\t\tconst digit = parseDigit(character)\r\n\t\tif (digit) {\r\n\t\t\tresult += digit\r\n\t\t}\r\n\t}\r\n\treturn result\r\n}","import { parseDigit } from './helpers/parseDigits.js'\r\n\r\n/**\r\n * Parses phone number characters from a string.\r\n * Drops all punctuation leaving only digits and the leading `+` sign (if any).\r\n * Also converts wide-ascii and arabic-indic numerals to conventional numerals.\r\n * E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`.\r\n * @param  {string} string\r\n * @return {string}\r\n * @example\r\n * ```js\r\n * // Outputs '8800555'.\r\n * parseIncompletePhoneNumber('8 (800) 555')\r\n * // Outputs '+7800555'.\r\n * parseIncompletePhoneNumber('+7 800 555')\r\n * ```\r\n */\r\nexport default function parseIncompletePhoneNumber(string) {\r\n\tlet result = ''\r\n\t// Using `.split('')` here instead of normal `for ... of`\r\n\t// because the importing application doesn't neccessarily include an ES6 polyfill.\r\n\t// The `.split('')` approach discards \"exotic\" UTF-8 characters\r\n\t// (the ones consisting of four bytes) but digits\r\n\t// (including non-European ones) don't fall into that range\r\n\t// so such \"exotic\" characters would be discarded anyway.\r\n\tfor (const character of string.split('')) {\r\n\t\tresult += parsePhoneNumberCharacter(character, result) || ''\r\n\t}\r\n\treturn result\r\n}\r\n\r\n/**\r\n * Parses next character while parsing phone number digits (including a `+`)\r\n * from text: discards everything except `+` and digits, and `+` is only allowed\r\n * at the start of a phone number.\r\n * For example, is used in `react-phone-number-input` where it uses\r\n * [`input-format`](https://gitlab.com/catamphetamine/input-format).\r\n * @param  {string} character - Yet another character from raw input string.\r\n * @param  {string?} prevParsedCharacters - Previous parsed characters.\r\n * @param  {function?} eventListener - An optional \"on event\" function.\r\n * @return {string?} The parsed character.\r\n */\r\nexport function parsePhoneNumberCharacter(character, prevParsedCharacters, eventListener) {\r\n\t// Only allow a leading `+`.\r\n\tif (character === '+') {\r\n\t\t// If this `+` is not the first parsed character\r\n\t\t// then discard it.\r\n\t\tif (prevParsedCharacters) {\r\n\t\t\t// `eventListener` argument was added to this `export`ed function on Dec 26th, 2023.\r\n\t\t\t// Any 3rd-party code that used to `import` and call this function before that\r\n\t\t\t// won't be passing any `eventListener` argument.\r\n\t\t\t//\r\n\t\t\t// The addition of the `eventListener` argument was to fix the slightly-weird behavior\r\n\t\t\t// of parsing an input string when the user inputs something like `\"2+7\"\r\n\t\t\t// https://github.com/catamphetamine/react-phone-number-input/issues/437\r\n\t\t\t//\r\n\t\t\t// If the parser encounters an unexpected `+` in a string being parsed\r\n\t\t\t// then it simply discards that out-of-place `+` and any following characters.\r\n\t\t\t//\r\n\t\t\tif (typeof eventListener === 'function') {\r\n\t\t\t\teventListener('end')\r\n\t\t\t}\r\n\t\t\treturn\r\n\t\t}\r\n\t\treturn '+'\r\n\t}\r\n\t// Allow digits.\r\n\treturn parseDigit(character)\r\n}","// When phone numbers are written in `RFC3966` format — `\"tel:+12133734253\"` —\r\n// they can have their \"calling code\" part written separately in a `phone-context` parameter.\r\n// Example: `\"tel:12133734253;phone-context=+1\"`.\r\n// This function parses the full phone number from the local number and the `phone-context`\r\n// when the `phone-context` contains a `+` sign.\r\n\r\nimport {\r\n  VALID_DIGITS,\r\n  // PLUS_CHARS\r\n} from '../constants.js'\r\n\r\nexport const PLUS_SIGN = '+'\r\n\r\nconst RFC3966_VISUAL_SEPARATOR_ = '[\\\\-\\\\.\\\\(\\\\)]?'\r\n\r\nconst RFC3966_PHONE_DIGIT_ = '(' + '[' + VALID_DIGITS + ']' + '|' + RFC3966_VISUAL_SEPARATOR_ + ')'\r\n\r\nconst RFC3966_GLOBAL_NUMBER_DIGITS_ =\r\n\t'^' +\r\n\t'\\\\' +\r\n\tPLUS_SIGN +\r\n\tRFC3966_PHONE_DIGIT_ +\r\n\t'*' +\r\n\t'[' + VALID_DIGITS +  ']' +\r\n\tRFC3966_PHONE_DIGIT_ +\r\n\t'*' +\r\n\t'$'\r\n\r\n/**\r\n * Regular expression of valid global-number-digits for the phone-context\r\n * parameter, following the syntax defined in RFC3966.\r\n */\r\nconst RFC3966_GLOBAL_NUMBER_DIGITS_PATTERN_ = new RegExp(RFC3966_GLOBAL_NUMBER_DIGITS_, 'g')\r\n\r\n// In this port of Google's library, we don't accept alpha characters in phone numbers.\r\n// const ALPHANUM_ = VALID_ALPHA_ + VALID_DIGITS\r\nconst ALPHANUM_ = VALID_DIGITS\r\n\r\nconst RFC3966_DOMAINLABEL_ = '[' + ALPHANUM_ + ']+((\\\\-)*[' + ALPHANUM_ + '])*'\r\n\r\nconst VALID_ALPHA_ = 'a-zA-Z'\r\nconst RFC3966_TOPLABEL_ = '[' + VALID_ALPHA_ + ']+((\\\\-)*[' + ALPHANUM_ + '])*'\r\n\r\nconst RFC3966_DOMAINNAME_ = '^(' + RFC3966_DOMAINLABEL_ + '\\\\.)*' + RFC3966_TOPLABEL_ + '\\\\.?$'\r\n\r\n/**\r\n * Regular expression of valid domainname for the phone-context parameter,\r\n * following the syntax defined in RFC3966.\r\n */\r\nconst RFC3966_DOMAINNAME_PATTERN_ = new RegExp(RFC3966_DOMAINNAME_, 'g')\r\n\r\nexport const RFC3966_PREFIX_ = 'tel:'\r\nexport const RFC3966_PHONE_CONTEXT_ = ';phone-context='\r\nexport const RFC3966_ISDN_SUBADDRESS_ = ';isub='\r\n\r\n/**\r\n * Extracts the value of the phone-context parameter of `numberToExtractFrom`,\r\n * following the syntax defined in RFC3966.\r\n *\r\n * @param {string} numberToExtractFrom\r\n * @return {string|null} the extracted string (possibly empty), or `null` if no phone-context parameter is found.\r\n */\r\nexport default function extractPhoneContext(numberToExtractFrom) {\r\n\tconst indexOfPhoneContext = numberToExtractFrom.indexOf(RFC3966_PHONE_CONTEXT_)\r\n\t// If no phone-context parameter is present\r\n\tif (indexOfPhoneContext < 0) {\r\n\t\treturn null\r\n\t}\r\n\r\n\tconst phoneContextStart = indexOfPhoneContext + RFC3966_PHONE_CONTEXT_.length\r\n\t// If phone-context parameter is empty\r\n\tif (phoneContextStart >= numberToExtractFrom.length) {\r\n\t\treturn ''\r\n\t}\r\n\r\n\tconst phoneContextEnd = numberToExtractFrom.indexOf(';', phoneContextStart)\r\n\t// If phone-context is not the last parameter\r\n\tif (phoneContextEnd >= 0) {\r\n\t\treturn numberToExtractFrom.substring(phoneContextStart, phoneContextEnd)\r\n\t} else {\r\n\t\treturn numberToExtractFrom.substring(phoneContextStart)\r\n\t}\r\n}\r\n\r\n/**\r\n * Returns whether the value of phoneContext follows the syntax defined in RFC3966.\r\n *\r\n * @param {string|null} phoneContext\r\n * @return {boolean}\r\n */\r\nexport function isPhoneContextValid(phoneContext) {\r\n\tif (phoneContext === null) {\r\n\t\treturn true\r\n\t}\r\n\r\n\tif (phoneContext.length === 0) {\r\n\t\treturn false\r\n\t}\r\n\r\n\t// Does phone-context value match pattern of global-number-digits or domainname.\r\n\treturn RFC3966_GLOBAL_NUMBER_DIGITS_PATTERN_.test(phoneContext) ||\r\n\t\tRFC3966_DOMAINNAME_PATTERN_.test(phoneContext)\r\n}","import extractPhoneContext, {\r\n\tisPhoneContextValid,\r\n\tPLUS_SIGN,\r\n\tRFC3966_PREFIX_,\r\n\tRFC3966_PHONE_CONTEXT_,\r\n\tRFC3966_ISDN_SUBADDRESS_\r\n} from './extractPhoneContext.js'\r\n\r\nimport ParseError from '../ParseError.js'\r\n\r\n/**\r\n * @param  {string} numberToParse\r\n * @param  {string} nationalNumber\r\n * @return {}\r\n */\r\nexport default function extractFormattedPhoneNumberFromPossibleRfc3966NumberUri(numberToParse, {\r\n\textractFormattedPhoneNumber\r\n}) {\r\n\tconst phoneContext = extractPhoneContext(numberToParse)\r\n\tif (!isPhoneContextValid(phoneContext)) {\r\n\t\tthrow new ParseError('NOT_A_NUMBER')\r\n\t}\r\n\r\n\tlet phoneNumberString\r\n\r\n\tif (phoneContext === null) {\r\n\t\t// Extract a possible number from the string passed in.\r\n\t\t// (this strips leading characters that could not be the start of a phone number)\r\n\t\tphoneNumberString = extractFormattedPhoneNumber(numberToParse) || ''\r\n\t} else {\r\n\t\tphoneNumberString = ''\r\n\r\n\t\t// If the phone context contains a phone number prefix, we need to capture\r\n\t\t// it, whereas domains will be ignored.\r\n\t\tif (phoneContext.charAt(0) === PLUS_SIGN) {\r\n\t\t\tphoneNumberString += phoneContext\r\n\t\t}\r\n\r\n\t\t// Now append everything between the \"tel:\" prefix and the phone-context.\r\n\t\t// This should include the national number, an optional extension or\r\n\t\t// isdn-subaddress component. Note we also handle the case when \"tel:\" is\r\n\t\t// missing, as we have seen in some of the phone number inputs.\r\n\t\t// In that case, we append everything from the beginning.\r\n\t\tconst indexOfRfc3966Prefix = numberToParse.indexOf(RFC3966_PREFIX_)\r\n\t\tlet indexOfNationalNumber\r\n\t\t// RFC 3966 \"tel:\" prefix is preset at this stage because\r\n\t\t// `isPhoneContextValid()` requires it to be present.\r\n\t\t/* istanbul ignore else */\r\n\t\tif (indexOfRfc3966Prefix >= 0) {\r\n\t\t\tindexOfNationalNumber = indexOfRfc3966Prefix + RFC3966_PREFIX_.length\r\n\t\t} else {\r\n\t\t\tindexOfNationalNumber = 0\r\n\t\t}\r\n\t\tconst indexOfPhoneContext = numberToParse.indexOf(RFC3966_PHONE_CONTEXT_)\r\n\t\tphoneNumberString += numberToParse.substring(indexOfNationalNumber, indexOfPhoneContext)\r\n\t}\r\n\r\n\t// Delete the isdn-subaddress and everything after it if it is present.\r\n\t// Note extension won't appear at the same time with isdn-subaddress\r\n\t// according to paragraph 5.3 of the RFC3966 spec.\r\n\tconst indexOfIsdn = phoneNumberString.indexOf(RFC3966_ISDN_SUBADDRESS_)\r\n\tif (indexOfIsdn > 0) {\r\n\t\tphoneNumberString = phoneNumberString.substring(0, indexOfIsdn)\r\n\t}\r\n\t// If both phone context and isdn-subaddress are absent but other\r\n\t// parameters are present, the parameters are left in nationalNumber.\r\n\t// This is because we are concerned about deleting content from a potential\r\n\t// number string when there is no strong evidence that the number is\r\n\t// actually written in RFC3966.\r\n\r\n\tif (phoneNumberString !== '') {\r\n\t\treturn phoneNumberString\r\n\t}\r\n}","// This is a port of Google Android `libphonenumber`'s\r\n// `phonenumberutil.js` of December 31th, 2018.\r\n//\r\n// https://github.com/googlei18n/libphonenumber/commits/master/javascript/i18n/phonenumbers/phonenumberutil.js\r\n\r\nimport {\r\n\tVALID_DIGITS,\r\n\tPLUS_CHARS,\r\n\tMIN_LENGTH_FOR_NSN,\r\n\tMAX_LENGTH_FOR_NSN\r\n} from './constants.js'\r\n\r\nimport ParseError from './ParseError.js'\r\nimport Metadata from './metadata.js'\r\nimport isViablePhoneNumber, { isViablePhoneNumberStart } from './helpers/isViablePhoneNumber.js'\r\nimport extractExtension from './helpers/extension/extractExtension.js'\r\nimport parseIncompletePhoneNumber from './parseIncompletePhoneNumber.js'\r\nimport getCountryCallingCode from './getCountryCallingCode.js'\r\nimport { isPossibleNumber } from './isPossible.js'\r\n// import { parseRFC3966 } from './helpers/RFC3966.js'\r\nimport PhoneNumber from './PhoneNumber.js'\r\nimport matchesEntirely from './helpers/matchesEntirely.js'\r\nimport extractCountryCallingCode from './helpers/extractCountryCallingCode.js'\r\nimport extractNationalNumber from './helpers/extractNationalNumber.js'\r\n// import stripIddPrefix from './helpers/stripIddPrefix.js'\r\nimport getCountryByCallingCode from './helpers/getCountryByCallingCode.js'\r\nimport extractFormattedPhoneNumberFromPossibleRfc3966NumberUri from './helpers/extractFormattedPhoneNumberFromPossibleRfc3966NumberUri.js'\r\n\r\n// We don't allow input strings for parsing to be longer than 250 chars.\r\n// This prevents malicious input from consuming CPU.\r\nconst MAX_INPUT_STRING_LENGTH = 250\r\n\r\n// This consists of the plus symbol, digits, and arabic-indic digits.\r\nconst PHONE_NUMBER_START_PATTERN = new RegExp('[' + PLUS_CHARS + VALID_DIGITS + ']')\r\n\r\n// Regular expression of trailing characters that we want to remove.\r\n// A trailing `#` is sometimes used when writing phone numbers with extensions in US.\r\n// Example: \"+1 (645) 123 1234-910#\" number has extension \"910\".\r\nconst AFTER_PHONE_NUMBER_END_PATTERN = new RegExp('[^' + VALID_DIGITS + '#' + ']+$')\r\n\r\nconst USE_NON_GEOGRAPHIC_COUNTRY_CODE = false\r\n\r\n// Examples:\r\n//\r\n// ```js\r\n// parse('8 (800) 555-35-35', 'RU')\r\n// parse('8 (800) 555-35-35', 'RU', metadata)\r\n// parse('8 (800) 555-35-35', { country: { default: 'RU' } })\r\n// parse('8 (800) 555-35-35', { country: { default: 'RU' } }, metadata)\r\n// parse('+7 800 555 35 35')\r\n// parse('+7 800 555 35 35', metadata)\r\n// ```\r\n//\r\n\r\n/**\r\n * Parses a phone number.\r\n *\r\n * parse('123456789', { defaultCountry: 'RU', v2: true }, metadata)\r\n * parse('123456789', { defaultCountry: 'RU' }, metadata)\r\n * parse('123456789', undefined, metadata)\r\n *\r\n * @param  {string} input\r\n * @param  {object} [options]\r\n * @param  {object} metadata\r\n * @return {object|PhoneNumber?} If `options.v2: true` flag is passed, it returns a `PhoneNumber?` instance. Otherwise, returns an object of shape `{ phone: '...', country: '...' }` (or just `{}` if no phone number was parsed).\r\n */\r\nexport default function parse(text, options, metadata) {\r\n\t// If assigning the `{}` default value is moved to the arguments above,\r\n\t// code coverage would decrease for some weird reason.\r\n\toptions = options || {}\r\n\r\n\tmetadata = new Metadata(metadata)\r\n\r\n\t// Validate `defaultCountry`.\r\n\tif (options.defaultCountry && !metadata.hasCountry(options.defaultCountry)) {\r\n\t\tif (options.v2) {\r\n\t\t\tthrow new ParseError('INVALID_COUNTRY')\r\n\t\t}\r\n\t\tthrow new Error(`Unknown country: ${options.defaultCountry}`)\r\n\t}\r\n\r\n\t// Parse the phone number.\r\n\tconst { number: formattedPhoneNumber, ext, error } = parseInput(text, options.v2, options.extract)\r\n\r\n\t// If the phone number is not viable then return nothing.\r\n\tif (!formattedPhoneNumber) {\r\n\t\tif (options.v2) {\r\n\t\t\tif (error === 'TOO_SHORT') {\r\n\t\t\t\tthrow new ParseError('TOO_SHORT')\r\n\t\t\t}\r\n\t\t\tthrow new ParseError('NOT_A_NUMBER')\r\n\t\t}\r\n\t\treturn {}\r\n\t}\r\n\r\n\tconst {\r\n\t\tcountry,\r\n\t\tnationalNumber,\r\n\t\tcountryCallingCode,\r\n\t\tcountryCallingCodeSource,\r\n\t\tcarrierCode\r\n\t} = parsePhoneNumber(\r\n\t\tformattedPhoneNumber,\r\n\t\toptions.defaultCountry,\r\n\t\toptions.defaultCallingCode,\r\n\t\tmetadata\r\n\t)\r\n\r\n\tif (!metadata.hasSelectedNumberingPlan()) {\r\n\t\tif (options.v2) {\r\n\t\t\tthrow new ParseError('INVALID_COUNTRY')\r\n\t\t}\r\n\t\treturn {}\r\n\t}\r\n\r\n\t// Validate national (significant) number length.\r\n\tif (!nationalNumber || nationalNumber.length < MIN_LENGTH_FOR_NSN) {\r\n\t\t// Won't throw here because the regexp already demands length > 1.\r\n\t\t/* istanbul ignore if */\r\n\t\tif (options.v2) {\r\n\t\t\tthrow new ParseError('TOO_SHORT')\r\n\t\t}\r\n\t\t// Google's demo just throws an error in this case.\r\n\t\treturn {}\r\n\t}\r\n\r\n\t// Validate national (significant) number length.\r\n\t//\r\n\t// A sidenote:\r\n\t//\r\n\t// They say that sometimes national (significant) numbers\r\n\t// can be longer than `MAX_LENGTH_FOR_NSN` (e.g. in Germany).\r\n\t// https://github.com/googlei18n/libphonenumber/blob/7e1748645552da39c4e1ba731e47969d97bdb539/resources/phonenumber.proto#L36\r\n\t// Such numbers will just be discarded.\r\n\t//\r\n\tif (nationalNumber.length > MAX_LENGTH_FOR_NSN) {\r\n\t\tif (options.v2) {\r\n\t\t\tthrow new ParseError('TOO_LONG')\r\n\t\t}\r\n\t\t// Google's demo just throws an error in this case.\r\n\t\treturn {}\r\n\t}\r\n\r\n\tif (options.v2) {\r\n\t\tconst phoneNumber = new PhoneNumber(\r\n\t\t\tcountryCallingCode,\r\n\t\t\tnationalNumber,\r\n\t\t\tmetadata.metadata\r\n\t\t)\r\n\t\tif (country) {\r\n\t\t\tphoneNumber.country = country\r\n\t\t}\r\n\t\tif (carrierCode) {\r\n\t\t\tphoneNumber.carrierCode = carrierCode\r\n\t\t}\r\n\t\tif (ext) {\r\n\t\t\tphoneNumber.ext = ext\r\n\t\t}\r\n\t\tphoneNumber.__countryCallingCodeSource = countryCallingCodeSource\r\n\t\treturn phoneNumber\r\n\t}\r\n\r\n\t// Check if national phone number pattern matches the number.\r\n\t// National number pattern is different for each country,\r\n\t// even for those ones which are part of the \"NANPA\" group.\r\n\tconst valid = (options.extended ? metadata.hasSelectedNumberingPlan() : country) ?\r\n\t\tmatchesEntirely(nationalNumber, metadata.nationalNumberPattern()) :\r\n\t\tfalse\r\n\r\n\tif (!options.extended) {\r\n\t\treturn valid ? result(country, nationalNumber, ext) : {}\r\n\t}\r\n\r\n\t// isInternational: countryCallingCode !== undefined\r\n\r\n\treturn {\r\n\t\tcountry,\r\n\t\tcountryCallingCode,\r\n\t\tcarrierCode,\r\n\t\tvalid,\r\n\t\tpossible: valid ? true : (\r\n\t\t\toptions.extended === true &&\r\n\t\t\tmetadata.possibleLengths() &&\r\n\t\t\tisPossibleNumber(nationalNumber, country, metadata) ? true : false\r\n\t\t),\r\n\t\tphone: nationalNumber,\r\n\t\text\r\n\t}\r\n}\r\n\r\n/**\r\n * Extracts a formatted phone number from text.\r\n * Doesn't guarantee that the extracted phone number\r\n * is a valid phone number (for example, doesn't validate its length).\r\n * @param  {string} text\r\n * @param  {boolean} [extract] — If `false`, then will parse the entire `text` as a phone number.\r\n * @param  {boolean} [throwOnError] — By default, it won't throw if the text is too long.\r\n * @return {string}\r\n * @example\r\n * // Returns \"(213) 373-4253\".\r\n * extractFormattedPhoneNumber(\"Call (213) 373-4253 for assistance.\")\r\n */\r\nfunction extractFormattedPhoneNumber(text, extract, throwOnError) {\r\n\tif (!text) {\r\n\t\treturn\r\n\t}\r\n\tif (text.length > MAX_INPUT_STRING_LENGTH) {\r\n\t\tif (throwOnError) {\r\n\t\t\tthrow new ParseError('TOO_LONG')\r\n\t\t}\r\n\t\treturn\r\n\t}\r\n\tif (extract === false) {\r\n\t\treturn text\r\n\t}\r\n\t// Attempt to extract a possible number from the string passed in\r\n\tconst startsAt = text.search(PHONE_NUMBER_START_PATTERN)\r\n\tif (startsAt < 0) {\r\n\t\treturn\r\n\t}\r\n\treturn text\r\n\t\t// Trim everything to the left of the phone number\r\n\t\t.slice(startsAt)\r\n\t\t// Remove trailing non-numerical characters\r\n\t\t.replace(AFTER_PHONE_NUMBER_END_PATTERN, '')\r\n}\r\n\r\n/**\r\n * @param  {string} text - Input.\r\n * @param  {boolean} v2 - Legacy API functions don't pass `v2: true` flag.\r\n * @param  {boolean} [extract] - Whether to extract a phone number from `text`, or attempt to parse the entire text as a phone number.\r\n * @return {object} `{ ?number, ?ext }`.\r\n */\r\nfunction parseInput(text, v2, extract) {\r\n\t// // Parse RFC 3966 phone number URI.\r\n\t// if (text && text.indexOf('tel:') === 0) {\r\n\t// \treturn parseRFC3966(text)\r\n\t// }\r\n\t// let number = extractFormattedPhoneNumber(text, extract, v2)\r\n\tlet number = extractFormattedPhoneNumberFromPossibleRfc3966NumberUri(text, {\r\n\t\textractFormattedPhoneNumber: (text) => extractFormattedPhoneNumber(text, extract, v2)\r\n\t})\r\n\t// If the phone number is not viable, then abort.\r\n\tif (!number) {\r\n\t\treturn {}\r\n\t}\r\n\tif (!isViablePhoneNumber(number)) {\r\n\t\tif (isViablePhoneNumberStart(number)) {\r\n\t\t\treturn { error: 'TOO_SHORT' }\r\n\t\t}\r\n\t\treturn {}\r\n\t}\r\n\t// Attempt to parse extension first, since it doesn't require region-specific\r\n\t// data and we want to have the non-normalised number here.\r\n\tconst withExtensionStripped = extractExtension(number)\r\n\tif (withExtensionStripped.ext) {\r\n\t\treturn withExtensionStripped\r\n\t}\r\n\treturn { number }\r\n}\r\n\r\n/**\r\n * Creates `parse()` result object.\r\n */\r\nfunction result(country, nationalNumber, ext) {\r\n\tconst result = {\r\n\t\tcountry,\r\n\t\tphone: nationalNumber\r\n\t}\r\n\tif (ext) {\r\n\t\tresult.ext = ext\r\n\t}\r\n\treturn result\r\n}\r\n\r\n/**\r\n * Parses a viable phone number.\r\n * @param {string} formattedPhoneNumber — Example: \"(213) 373-4253\".\r\n * @param {string} [defaultCountry]\r\n * @param {string} [defaultCallingCode]\r\n * @param {Metadata} metadata\r\n * @return {object} Returns `{ country: string?, countryCallingCode: string?, nationalNumber: string? }`.\r\n */\r\nfunction parsePhoneNumber(\r\n\tformattedPhoneNumber,\r\n\tdefaultCountry,\r\n\tdefaultCallingCode,\r\n\tmetadata\r\n) {\r\n\t// Extract calling code from phone number.\r\n\tlet { countryCallingCodeSource, countryCallingCode, number } = extractCountryCallingCode(\r\n\t\tparseIncompletePhoneNumber(formattedPhoneNumber),\r\n\t\tundefined,\r\n\t\tdefaultCountry,\r\n\t\tdefaultCallingCode,\r\n\t\tmetadata.metadata\r\n\t)\r\n\r\n\t// The exact country of the phone number\r\n\tlet country\r\n\r\n\t// If `formattedPhoneNumber` is passed in \"international\" format,\r\n\t// choose a country by `countryCallingCode`.\r\n\tif (countryCallingCode) {\r\n\t\tmetadata.selectNumberingPlan(countryCallingCode)\r\n\t}\r\n\t// Else, if `formattedPhoneNumber` is passed in \"national\" format,\r\n\t// then `number` is defined and `countryCallingCode` is `undefined`.\r\n\telse if (number && (defaultCountry || defaultCallingCode)) {\r\n\t\tmetadata.selectNumberingPlan(defaultCountry, defaultCallingCode)\r\n\t\tif (defaultCountry) {\r\n\t\t\tcountry = defaultCountry\r\n\t\t} else {\r\n\t\t\t/* istanbul ignore if */\r\n\t\t\tif (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\r\n\t\t\t\tif (metadata.isNonGeographicCallingCode(defaultCallingCode)) {\r\n\t\t\t\t\tcountry = '001'\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tcountryCallingCode = defaultCallingCode || getCountryCallingCode(defaultCountry, metadata.metadata)\r\n\t}\r\n\telse return {}\r\n\r\n\tif (!number) {\r\n\t\treturn {\r\n\t\t\tcountryCallingCodeSource,\r\n\t\t\tcountryCallingCode\r\n\t\t}\r\n\t}\r\n\r\n\tconst {\r\n\t\tnationalNumber,\r\n\t\tcarrierCode\r\n\t} = extractNationalNumber(\r\n\t\tparseIncompletePhoneNumber(number),\r\n\t\tcountry,\r\n\t\tmetadata\r\n\t)\r\n\r\n\t// Sometimes there are several countries\r\n\t// corresponding to the same country phone code\r\n\t// (e.g. NANPA countries all having `1` country phone code).\r\n\t// Therefore, to reliably determine the exact country,\r\n\t// national (significant) number should have been parsed first.\r\n\t//\r\n\t// When `metadata.json` is generated, all \"ambiguous\" country phone codes\r\n\t// get their countries populated with the full set of\r\n\t// \"phone number type\" regular expressions.\r\n\t//\r\n\tconst exactCountry = getCountryByCallingCode(countryCallingCode, {\r\n\t\tnationalNumber,\r\n\t\tmetadata\r\n\t})\r\n\tif (exactCountry) {\r\n\t\tcountry = exactCountry\r\n\t\t/* istanbul ignore if */\r\n\t\tif (exactCountry === '001') {\r\n\t\t\t// Can't happen with `USE_NON_GEOGRAPHIC_COUNTRY_CODE` being `false`.\r\n\t\t\t// If `USE_NON_GEOGRAPHIC_COUNTRY_CODE` is set to `true` for some reason,\r\n\t\t\t// then remove the \"istanbul ignore if\".\r\n\t\t} else {\r\n\t\t\tmetadata.selectNumberingPlan(country)\r\n\t\t}\r\n\t}\r\n\r\n\treturn {\r\n\t\tcountry,\r\n\t\tcountryCallingCode,\r\n\t\tcountryCallingCodeSource,\r\n\t\tnationalNumber,\r\n\t\tcarrierCode\r\n\t}\r\n}","import parse from './parse.js'\r\n\r\nexport default function parsePhoneNumberWithError(text, options, metadata) {\r\n\treturn parse(text, { ...options, v2: true }, metadata)\r\n}","import isObject from './helpers/isObject.js'\r\n\r\n// Extracts the following properties from function arguments:\r\n// * input `text`\r\n// * `options` object\r\n// * `metadata` JSON\r\nexport default function normalizeArguments(args) {\r\n\tconst [arg_1, arg_2, arg_3, arg_4] = Array.prototype.slice.call(args)\r\n\r\n\tlet text\r\n\tlet options\r\n\tlet metadata\r\n\r\n\t// If the phone number is passed as a string.\r\n\t// `parsePhoneNumber('88005553535', ...)`.\r\n\tif (typeof arg_1 === 'string') {\r\n\t\ttext = arg_1\r\n\t}\r\n\telse throw new TypeError('A text for parsing must be a string.')\r\n\r\n\t// If \"default country\" argument is being passed then move it to `options`.\r\n\t// `parsePhoneNumber('88005553535', 'RU', [options], metadata)`.\r\n\tif (!arg_2 || typeof arg_2 === 'string')\r\n\t{\r\n\t\tif (arg_4) {\r\n\t\t\toptions = arg_3\r\n\t\t\tmetadata = arg_4\r\n\t\t} else {\r\n\t\t\toptions = undefined\r\n\t\t\tmetadata = arg_3\r\n\t\t}\r\n\r\n\t\tif (arg_2) {\r\n\t\t\toptions = { defaultCountry: arg_2, ...options }\r\n\t\t}\r\n\t}\r\n\t// `defaultCountry` is not passed.\r\n\t// Example: `parsePhoneNumber('+78005553535', [options], metadata)`.\r\n\telse if (isObject(arg_2))\r\n\t{\r\n\t\tif (arg_3) {\r\n\t\t\toptions  = arg_2\r\n\t\t\tmetadata = arg_3\r\n\t\t} else {\r\n\t\t\tmetadata = arg_2\r\n\t\t}\r\n\t}\r\n\telse throw new Error(`Invalid second argument: ${arg_2}`)\r\n\r\n\treturn {\r\n\t\ttext,\r\n\t\toptions,\r\n\t\tmetadata\r\n\t}\r\n}","import parsePhoneNumberWithError_ from './parsePhoneNumberWithError_.js'\r\nimport normalizeArguments from './normalizeArguments.js'\r\n\r\nexport default function parsePhoneNumberWithError() {\r\n\tconst { text, options, metadata } = normalizeArguments(arguments)\r\n\treturn parsePhoneNumberWithError_(text, options, metadata)\r\n}","import parsePhoneNumberWithError from './parsePhoneNumberWithError_.js'\r\nimport ParseError from './ParseError.js'\r\nimport { isSupportedCountry } from './metadata.js'\r\n\r\nexport default function parsePhoneNumber(text, options, metadata) {\r\n\t// Validate `defaultCountry`.\r\n\tif (options && options.defaultCountry && !isSupportedCountry(options.defaultCountry, metadata)) {\r\n\t\toptions = {\r\n\t\t\t...options,\r\n\t\t\tdefaultCountry: undefined\r\n\t\t}\r\n\t}\r\n\t// Parse phone number.\r\n\ttry {\r\n\t\treturn parsePhoneNumberWithError(text, options, metadata)\r\n\t} catch (error) {\r\n\t\t/* istanbul ignore else */\r\n\t\tif (error instanceof ParseError) {\r\n\t\t\t//\r\n\t\t} else {\r\n\t\t\tthrow error\r\n\t\t}\r\n\t}\r\n}\r\n","import normalizeArguments from './normalizeArguments.js'\r\nimport parsePhoneNumber_ from './parsePhoneNumber_.js'\r\n\r\nexport default function parsePhoneNumber() {\r\n\tconst { text, options, metadata } = normalizeArguments(arguments)\r\n\treturn parsePhoneNumber_(text, options, metadata)\r\n}\r\n","import normalizeArguments from './normalizeArguments.js'\r\nimport parsePhoneNumber from './parsePhoneNumber_.js'\r\n\r\nexport default function isValidPhoneNumber() {\r\n\tlet { text, options, metadata } = normalizeArguments(arguments)\r\n\toptions = {\r\n\t\t...options,\r\n\t\textract: false\r\n\t}\r\n\tconst phoneNumber = parsePhoneNumber(text, options, metadata)\r\n\treturn phoneNumber && phoneNumber.isValid() || false\r\n}","// This \"state\" object simply holds the state of the \"AsYouType\" parser:\r\n//\r\n// * `country?: string` — The exact country of the phone number, if it could be determined.\r\n//                        When inputting a phone number in \"international\" format, it will derive the `country` from \"country calling code\" and the phone number digits.\r\n//                        When inputting a phone number in \"national\" format, it will derive the `country` from `defaultCountry` that was specified when creating the `AsYouType` formatter.\r\n//                        Sidenote: If `USE_NON_GEOGRAPHIC_COUNTRY_CODE` flag was `true`, then for \"non-geographic phone numbers\" `state.country` would've been \"001\".\r\n// * `callingCode?: string` — \"Country calling code\" that has been extracted from the input phone number.\r\n//                        When inputting a phone number in \"international\" format, it will extract the \"country calling code\" from the digits that follow the \"+\" character.\r\n//                        When inputting a phone number in \"national\" format, `callingCode` will be `undefined`.\r\n//                        Sidenote: `state.callingCode` is therefore independent from `state.country` and there could be situations when `state.country` is defined by `state.callingCode` is not — that would be when inputting a phone number not in \"international\" format.\r\n// * `digits: string` — Phone number digits that have been input so far, including the \"+\" character, if present. In case of inputting non-arabic digits, those will be converted to arabic ones.\r\n// * `international: boolean` — Whether the phone number is being input in \"international\" format, i.e. with a \"+\" character.\r\n// * `missingPlus: boolean` — Whether it's a phone number in \"international\" format that is missing the leading \"+\" character for some reason — apparently, Google thinks that it's a common mistake when inputting a phone number.\r\n// * `IDDPrefix?: string` — An \"IDD prefix\", when the phone number is being input in an \"out-of-country dialing\" format. https://wikitravel.org/en/International_dialling_prefix\r\n// * `carrierCode?: string` — A \"carrier code\", if the phone number contains it. Normally, those can only be present in Colombia or Brazil, and only when calling from mobile phones to fixed-line numbers.\r\n// * `nationalPrefix?: string` — \"National prefix\", if present in the phone number input.\r\n// * `nationalSignificantNumber?: string` — National (significant) number digits that have been input so far.\r\n// * `nationalSignificantNumberIsModified: boolean` — Tells if the parsed national (significant) number is present as-is in the input string. For example, when inputting \"0343515551212999\" Argentinian mobile number, the parsed national (significant) number is \"93435551212999\". There, one can see how it stripped \"0\" national prefix and prepended a \"9\", because that's how it is instructed to do in Argentina's metadata. So in the described example, the parsed national (significant) number is not present as-is in the input string. Instead, it's \"modified\" in the input string. https://gitlab.com/caamphetamine/libphonenumber-js/-/blob/master/METADATA.md#national_prefix_for_parsing--national_prefix_transform_rule\r\n// * `prefixBeforeNationalSignificantNumberThatIsNotNationalPrefix?: string` — In some countries, a phone number could have a prefix that is not a \"national prefix\" but rather some other type of \"utility\" prefix.\r\n//                                                                             For example, when calling within Australia, one could prepend `1831` prefix to hide caller's phone number.\r\n//                                                                             https://gitlab.com/catamphetamine/libphonenumber-js/-/blob/master/METADATA.md#national_prefix_for_parsing--national_prefix_transform_rule\r\n//\r\nexport default class AsYouTypeState {\r\n\tconstructor({ onCountryChange, onCallingCodeChange }) {\r\n\t\tthis.onCountryChange = onCountryChange\r\n\t\tthis.onCallingCodeChange = onCallingCodeChange\r\n\t}\r\n\r\n\treset({ country, callingCode }) {\r\n\t\tthis.international = false\r\n\t\tthis.missingPlus = false\r\n\t\tthis.IDDPrefix = undefined\r\n\t\tthis.callingCode = undefined\r\n\t\tthis.digits = ''\r\n\t\tthis.resetNationalSignificantNumber()\r\n\t\tthis.initCountryAndCallingCode(country, callingCode)\r\n\t}\r\n\r\n\tresetNationalSignificantNumber() {\r\n\t\tthis.nationalSignificantNumber = this.getNationalDigits()\r\n\t\tthis.nationalSignificantNumberIsModified = false\r\n\t\tthis.nationalPrefix = undefined\r\n\t\tthis.carrierCode = undefined\r\n\t\tthis.prefixBeforeNationalSignificantNumberThatIsNotNationalPrefix = undefined\r\n\t}\r\n\r\n\tupdate(properties) {\r\n\t\tfor (const key of Object.keys(properties)) {\r\n\t\t\tthis[key] = properties[key]\r\n\t\t}\r\n\t}\r\n\r\n\tinitCountryAndCallingCode(country, callingCode) {\r\n\t\tthis.setCountry(country)\r\n\t\tthis.setCallingCode(callingCode)\r\n\t}\r\n\r\n\tsetCountry(country) {\r\n\t\tthis.country = country\r\n\t\tthis.onCountryChange(country)\r\n\t}\r\n\r\n\tsetCallingCode(callingCode) {\r\n\t\tthis.callingCode = callingCode\r\n\t\tthis.onCallingCodeChange(callingCode, this.country)\r\n\t}\r\n\r\n\tstartInternationalNumber(country, callingCode) {\r\n\t\t// Prepend the `+` to parsed input.\r\n\t\tthis.international = true\r\n\t\t// If a default country was set then reset it\r\n\t\t// because an explicitly international phone\r\n\t\t// number is being entered.\r\n\t\tthis.initCountryAndCallingCode(country, callingCode)\r\n\t}\r\n\r\n\tappendDigits(nextDigits) {\r\n\t\tthis.digits += nextDigits\r\n\t}\r\n\r\n\tappendNationalSignificantNumberDigits(nextDigits) {\r\n\t\tthis.nationalSignificantNumber += nextDigits\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the part of `this.digits` that corresponds to the national number.\r\n\t * Basically, all digits that have been input by the user, except for the\r\n\t * international prefix and the country calling code part\r\n\t * (if the number is an international one).\r\n\t * @return {string}\r\n\t */\r\n\tgetNationalDigits() {\r\n\t\tif (this.international) {\r\n\t\t\treturn this.digits.slice(\r\n\t\t\t\t(this.IDDPrefix ? this.IDDPrefix.length : 0) +\r\n\t\t\t\t(this.callingCode ? this.callingCode.length : 0)\r\n\t\t\t)\r\n\t\t}\r\n\t\treturn this.digits\r\n\t}\r\n\r\n\tgetDigitsWithoutInternationalPrefix() {\r\n\t\tif (this.international) {\r\n\t\t\tif (this.IDDPrefix) {\r\n\t\t\t\treturn this.digits.slice(this.IDDPrefix.length)\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn this.digits\r\n\t}\r\n}","// Should be the same as `DIGIT_PLACEHOLDER` in `libphonenumber-metadata-generator`.\r\nexport const DIGIT_PLACEHOLDER = 'x' // '\\u2008' (punctuation space)\r\nconst DIGIT_PLACEHOLDER_MATCHER = new RegExp(DIGIT_PLACEHOLDER)\r\n\r\n// Counts all occurences of a symbol in a string.\r\n// Unicode-unsafe (because using `.split()`).\r\nexport function countOccurences(symbol, string) {\r\n\tlet count = 0\r\n\t// Using `.split('')` to iterate through a string here\r\n\t// to avoid requiring `Symbol.iterator` polyfill.\r\n\t// `.split('')` is generally not safe for Unicode,\r\n\t// but in this particular case for counting brackets it is safe.\r\n\t// for (const character of string)\r\n\tfor (const character of string.split('')) {\r\n\t\tif (character === symbol) {\r\n\t\t\tcount++\r\n\t\t}\r\n\t}\r\n\treturn count\r\n}\r\n\r\n// Repeats a string (or a symbol) N times.\r\n// http://stackoverflow.com/questions/202605/repeat-string-javascript\r\nexport function repeat(string, times) {\r\n\tif (times < 1) {\r\n\t\treturn ''\r\n\t}\r\n\tlet result = ''\r\n\twhile (times > 1) {\r\n\t\tif (times & 1) {\r\n\t\t\tresult += string\r\n\t\t}\r\n\t\ttimes >>= 1\r\n\t\tstring += string\r\n\t}\r\n\treturn result + string\r\n}\r\n\r\nexport function cutAndStripNonPairedParens(string, cutBeforeIndex) {\r\n\tif (string[cutBeforeIndex] === ')') {\r\n\t\tcutBeforeIndex++\r\n\t}\r\n\treturn stripNonPairedParens(string.slice(0, cutBeforeIndex))\r\n}\r\n\r\nexport function closeNonPairedParens(template, cut_before) {\r\n\tconst retained_template = template.slice(0, cut_before)\r\n\tconst opening_braces = countOccurences('(', retained_template)\r\n\tconst closing_braces = countOccurences(')', retained_template)\r\n\tlet dangling_braces = opening_braces - closing_braces\r\n\twhile (dangling_braces > 0 && cut_before < template.length) {\r\n\t\tif (template[cut_before] === ')') {\r\n\t\t\tdangling_braces--\r\n\t\t}\r\n\t\tcut_before++\r\n\t}\r\n\treturn template.slice(0, cut_before)\r\n}\r\n\r\nexport function stripNonPairedParens(string) {\r\n\tconst dangling_braces =[]\r\n\tlet i = 0\r\n\twhile (i < string.length) {\r\n\t\tif (string[i] === '(') {\r\n\t\t\tdangling_braces.push(i)\r\n\t\t}\r\n\t\telse if (string[i] === ')') {\r\n\t\t\tdangling_braces.pop()\r\n\t\t}\r\n\t\ti++\r\n\t}\r\n\tlet start = 0\r\n\tlet cleared_string = ''\r\n\tdangling_braces.push(string.length)\r\n\tfor (const index of dangling_braces) {\r\n\t\tcleared_string += string.slice(start, index)\r\n\t\tstart = index + 1\r\n\t}\r\n\treturn cleared_string\r\n}\r\n\r\nexport function populateTemplateWithDigits(template, position, digits) {\r\n\t// Using `.split('')` to iterate through a string here\r\n\t// to avoid requiring `Symbol.iterator` polyfill.\r\n\t// `.split('')` is generally not safe for Unicode,\r\n\t// but in this particular case for `digits` it is safe.\r\n\t// for (const digit of digits)\r\n\tfor (const digit of digits.split('')) {\r\n\t\t// If there is room for more digits in current `template`,\r\n\t\t// then set the next digit in the `template`,\r\n\t\t// and return the formatted digits so far.\r\n\t\t// If more digits are entered than the current format could handle.\r\n\t\tif (template.slice(position + 1).search(DIGIT_PLACEHOLDER_MATCHER) < 0) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\tposition = template.search(DIGIT_PLACEHOLDER_MATCHER)\r\n\t\ttemplate = template.replace(DIGIT_PLACEHOLDER_MATCHER, digit)\r\n\t}\r\n\treturn [template, position]\r\n}","import checkNumberLength from './helpers/checkNumberLength.js'\r\nimport parseDigits from './helpers/parseDigits.js'\r\nimport formatNationalNumberUsingFormat from './helpers/formatNationalNumberUsingFormat.js'\r\n\r\nexport default function formatCompleteNumber(state, format, {\r\n\tmetadata,\r\n\tshouldTryNationalPrefixFormattingRule,\r\n\tgetSeparatorAfterNationalPrefix\r\n}) {\r\n\tconst matcher = new RegExp(`^(?:${format.pattern()})$`)\r\n\tif (matcher.test(state.nationalSignificantNumber)) {\r\n\t\treturn formatNationalNumberWithAndWithoutNationalPrefixFormattingRule(\r\n\t\t\tstate,\r\n\t\t\tformat,\r\n\t\t\t{\r\n\t\t\t\tmetadata,\r\n\t\t\t\tshouldTryNationalPrefixFormattingRule,\r\n\t\t\t\tgetSeparatorAfterNationalPrefix\r\n\t\t\t}\r\n\t\t)\r\n\t}\r\n}\r\n\r\nexport function canFormatCompleteNumber(nationalSignificantNumber, country, metadata) {\r\n\treturn checkNumberLength(nationalSignificantNumber, country, metadata) === 'IS_POSSIBLE'\r\n}\r\n\r\nfunction formatNationalNumberWithAndWithoutNationalPrefixFormattingRule(state, format, {\r\n\tmetadata,\r\n\tshouldTryNationalPrefixFormattingRule,\r\n\tgetSeparatorAfterNationalPrefix\r\n}) {\r\n\t// `format` has already been checked for `nationalPrefix` requirement.\r\n\r\n\tconst {\r\n\t\tnationalSignificantNumber,\r\n\t\tinternational,\r\n\t\tnationalPrefix,\r\n\t\tcarrierCode\r\n\t} = state\r\n\r\n\t// Format the number with using `national_prefix_formatting_rule`.\r\n\t// If the resulting formatted number is a valid formatted number, then return it.\r\n\t//\r\n\t// Google's AsYouType formatter is different in a way that it doesn't try\r\n\t// to format using the \"national prefix formatting rule\", and instead it\r\n\t// simply prepends a national prefix followed by a \" \" character.\r\n\t// This code does that too, but as a fallback.\r\n\t// The reason is that \"national prefix formatting rule\" may use parentheses,\r\n\t// which wouldn't be included has it used the simpler Google's way.\r\n\t//\r\n\tif (shouldTryNationalPrefixFormattingRule(format)) {\r\n\t\tconst formattedNumber = formatNationalNumber(state, format, {\r\n\t\t\tuseNationalPrefixFormattingRule: true,\r\n\t\t\tgetSeparatorAfterNationalPrefix,\r\n\t\t\tmetadata\r\n\t\t})\r\n\t\tif (formattedNumber) {\r\n\t\t\treturn formattedNumber\r\n\t\t}\r\n\t}\r\n\r\n\t// Format the number without using `national_prefix_formatting_rule`.\r\n\treturn formatNationalNumber(state, format, {\r\n\t\tuseNationalPrefixFormattingRule: false,\r\n\t\tgetSeparatorAfterNationalPrefix,\r\n\t\tmetadata\r\n\t})\r\n}\r\n\r\nfunction formatNationalNumber(state, format, {\r\n\tmetadata,\r\n\tuseNationalPrefixFormattingRule,\r\n\tgetSeparatorAfterNationalPrefix\r\n}) {\r\n\tlet formattedNationalNumber = formatNationalNumberUsingFormat(\r\n\t\tstate.nationalSignificantNumber,\r\n\t\tformat,\r\n\t\t{\r\n\t\t\tcarrierCode: state.carrierCode,\r\n\t\t\tuseInternationalFormat: state.international,\r\n\t\t\twithNationalPrefix: useNationalPrefixFormattingRule,\r\n\t\t\tmetadata\r\n\t\t}\r\n\t)\r\n\tif (!useNationalPrefixFormattingRule) {\r\n\t\tif (state.nationalPrefix) {\r\n\t\t\t// If a national prefix was extracted, then just prepend it,\r\n\t\t\t// followed by a \" \" character.\r\n\t\t\tformattedNationalNumber = state.nationalPrefix +\r\n\t\t\t\tgetSeparatorAfterNationalPrefix(format) +\r\n\t\t\t\tformattedNationalNumber\r\n\t\t} else if (state.prefixBeforeNationalSignificantNumberThatIsNotNationalPrefix) {\r\n\t\t\tformattedNationalNumber = state.prefixBeforeNationalSignificantNumberThatIsNotNationalPrefix +\r\n\t\t\t\t' ' +\r\n\t\t\t\tformattedNationalNumber\r\n\t\t}\r\n\t}\r\n\tif (isValidFormattedNationalNumber(formattedNationalNumber, state)) {\r\n\t\treturn formattedNationalNumber\r\n\t}\r\n}\r\n\r\n// Check that the formatted phone number contains exactly\r\n// the same digits that have been input by the user.\r\n// For example, when \"0111523456789\" is input for `AR` country,\r\n// the extracted `this.nationalSignificantNumber` is \"91123456789\",\r\n// which means that the national part of `this.digits` isn't simply equal to\r\n// `this.nationalPrefix` + `this.nationalSignificantNumber`.\r\n//\r\n// Also, a `format` can add extra digits to the `this.nationalSignificantNumber`\r\n// being formatted via `metadata[country].national_prefix_transform_rule`.\r\n// For example, for `VI` country, it prepends `340` to the national number,\r\n// and if this check hasn't been implemented, then there would be a bug\r\n// when `340` \"area coude\" is \"duplicated\" during input for `VI` country:\r\n// https://github.com/catamphetamine/libphonenumber-js/issues/318\r\n//\r\n// So, all these \"gotchas\" are filtered out.\r\n//\r\n// In the original Google's code, the comments say:\r\n// \"Check that we didn't remove nor add any extra digits when we matched\r\n// this formatting pattern. This usually happens after we entered the last\r\n// digit during AYTF. Eg: In case of MX, we swallow mobile token (1) when\r\n// formatted but AYTF should retain all the number entered and not change\r\n// in order to match a format (of same leading digits and length) display\r\n// in that way.\"\r\n// \"If it's the same (i.e entered number and format is same), then it's\r\n// safe to return this in formatted number as nothing is lost / added.\"\r\n// Otherwise, don't use this format.\r\n// https://github.com/google/libphonenumber/commit/3e7c1f04f5e7200f87fb131e6f85c6e99d60f510#diff-9149457fa9f5d608a11bb975c6ef4bc5\r\n// https://github.com/google/libphonenumber/commit/3ac88c7106e7dcb553bcc794b15f19185928a1c6#diff-2dcb77e833422ee304da348b905cde0b\r\n//\r\nfunction isValidFormattedNationalNumber(formattedNationalNumber, state) {\r\n\treturn parseDigits(formattedNationalNumber) === state.getNationalDigits()\r\n}","export default class PatternParser {\r\n\tparse(pattern) {\r\n\t\tthis.context = [{\r\n\t\t\tor: true,\r\n\t\t\tinstructions: []\r\n\t\t}]\r\n\r\n\t\tthis.parsePattern(pattern)\r\n\r\n\t\tif (this.context.length !== 1) {\r\n\t\t\tthrow new Error('Non-finalized contexts left when pattern parse ended')\r\n\t\t}\r\n\r\n\t\tconst { branches, instructions } = this.context[0]\r\n\r\n\t\tif (branches) {\r\n\t\t\treturn {\r\n\t\t\t\top: '|',\r\n\t\t\t\targs: branches.concat([\r\n\t\t\t\t\texpandSingleElementArray(instructions)\r\n\t\t\t\t])\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t/* istanbul ignore if */\r\n\t\tif (instructions.length === 0) {\r\n\t\t\tthrow new Error('Pattern is required')\r\n\t\t}\r\n\r\n\t\tif (instructions.length === 1) {\r\n\t\t\treturn instructions[0]\r\n\t\t}\r\n\r\n\t\treturn instructions\r\n\t}\r\n\r\n\tstartContext(context) {\r\n\t\tthis.context.push(context)\r\n\t}\r\n\r\n\tendContext() {\r\n\t\tthis.context.pop()\r\n\t}\r\n\r\n\tgetContext() {\r\n\t\treturn this.context[this.context.length - 1]\r\n\t}\r\n\r\n\tparsePattern(pattern) {\r\n\t\tif (!pattern) {\r\n\t\t\tthrow new Error('Pattern is required')\r\n\t\t}\r\n\r\n\t\tconst match = pattern.match(OPERATOR)\r\n\t\tif (!match) {\r\n\t\t\tif (ILLEGAL_CHARACTER_REGEXP.test(pattern)) {\r\n\t\t\t\tthrow new Error(`Illegal characters found in a pattern: ${pattern}`)\r\n\t\t\t}\r\n\t\t\tthis.getContext().instructions = this.getContext().instructions.concat(\r\n\t\t\t\tpattern.split('')\r\n\t\t\t)\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tconst operator = match[1]\r\n\t\tconst before = pattern.slice(0, match.index)\r\n\t\tconst rightPart = pattern.slice(match.index + operator.length)\r\n\r\n\t\tswitch (operator) {\r\n\t\t\tcase '(?:':\r\n\t\t\t\tif (before) {\r\n\t\t\t\t\tthis.parsePattern(before)\r\n\t\t\t\t}\r\n\t\t\t\tthis.startContext({\r\n\t\t\t\t\tor: true,\r\n\t\t\t\t\tinstructions: [],\r\n\t\t\t\t\tbranches: []\r\n\t\t\t\t})\r\n\t\t\t\tbreak\r\n\r\n\t\t\tcase ')':\r\n\t\t\t\tif (!this.getContext().or) {\r\n\t\t\t\t\tthrow new Error('\")\" operator must be preceded by \"(?:\" operator')\r\n\t\t\t\t}\r\n\t\t\t\tif (before) {\r\n\t\t\t\t\tthis.parsePattern(before)\r\n\t\t\t\t}\r\n\t\t\t\tif (this.getContext().instructions.length === 0) {\r\n\t\t\t\t\tthrow new Error('No instructions found after \"|\" operator in an \"or\" group')\r\n\t\t\t\t}\r\n\t\t\t\tconst { branches } = this.getContext()\r\n\t\t\t\tbranches.push(\r\n\t\t\t\t\texpandSingleElementArray(\r\n\t\t\t\t\t\tthis.getContext().instructions\r\n\t\t\t\t\t)\r\n\t\t\t\t)\r\n\t\t\t\tthis.endContext()\r\n\t\t\t\tthis.getContext().instructions.push({\r\n\t\t\t\t\top: '|',\r\n\t\t\t\t\targs: branches\r\n\t\t\t\t})\r\n\t\t\t\tbreak\r\n\r\n\t\t\tcase '|':\r\n\t\t\t\tif (!this.getContext().or) {\r\n\t\t\t\t\tthrow new Error('\"|\" operator can only be used inside \"or\" groups')\r\n\t\t\t\t}\r\n\t\t\t\tif (before) {\r\n\t\t\t\t\tthis.parsePattern(before)\r\n\t\t\t\t}\r\n\t\t\t\t// The top-level is an implicit \"or\" group, if required.\r\n\t\t\t\tif (!this.getContext().branches) {\r\n\t\t\t\t\t// `branches` are not defined only for the root implicit \"or\" operator.\r\n\t\t\t\t\t/* istanbul ignore else */\r\n\t\t\t\t\tif (this.context.length === 1) {\r\n\t\t\t\t\t\tthis.getContext().branches = []\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthrow new Error('\"branches\" not found in an \"or\" group context')\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tthis.getContext().branches.push(\r\n\t\t\t\t\texpandSingleElementArray(\r\n\t\t\t\t\t\tthis.getContext().instructions\r\n\t\t\t\t\t)\r\n\t\t\t\t)\r\n\t\t\t\tthis.getContext().instructions = []\r\n\t\t\t\tbreak\r\n\r\n\t\t\tcase '[':\r\n\t\t\t\tif (before) {\r\n\t\t\t\t\tthis.parsePattern(before)\r\n\t\t\t\t}\r\n\t\t\t\tthis.startContext({\r\n\t\t\t\t\toneOfSet: true\r\n\t\t\t\t})\r\n\t\t\t\tbreak\r\n\r\n\t\t\tcase ']':\r\n\t\t\t\tif (!this.getContext().oneOfSet) {\r\n\t\t\t\t\tthrow new Error('\"]\" operator must be preceded by \"[\" operator')\r\n\t\t\t\t}\r\n\t\t\t\tthis.endContext()\r\n\t\t\t\tthis.getContext().instructions.push({\r\n\t\t\t\t\top: '[]',\r\n\t\t\t\t\targs: parseOneOfSet(before)\r\n\t\t\t\t})\r\n\t\t\t\tbreak\r\n\r\n\t\t\t/* istanbul ignore next */\r\n\t\t\tdefault:\r\n\t\t\t\tthrow new Error(`Unknown operator: ${operator}`)\r\n\t\t}\r\n\r\n\t\tif (rightPart) {\r\n\t\t\tthis.parsePattern(rightPart)\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction parseOneOfSet(pattern) {\r\n\tconst values = []\r\n\tlet i = 0\r\n\twhile (i < pattern.length) {\r\n\t\tif (pattern[i] === '-') {\r\n\t\t\tif (i === 0 || i === pattern.length - 1) {\r\n\t\t\t\tthrow new Error(`Couldn't parse a one-of set pattern: ${pattern}`)\r\n\t\t\t}\r\n\t\t\tconst prevValue = pattern[i - 1].charCodeAt(0) + 1\r\n\t\t\tconst nextValue = pattern[i + 1].charCodeAt(0) - 1\r\n\t\t\tlet value = prevValue\r\n\t\t\twhile (value <= nextValue) {\r\n\t\t\t\tvalues.push(String.fromCharCode(value))\r\n\t\t\t\tvalue++\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tvalues.push(pattern[i])\r\n\t\t}\r\n\t\ti++\r\n\t}\r\n\treturn values\r\n}\r\n\r\nconst ILLEGAL_CHARACTER_REGEXP = /[\\(\\)\\[\\]\\?\\:\\|]/\r\n\r\nconst OPERATOR = new RegExp(\r\n\t// any of:\r\n\t'(' +\r\n\t\t// or operator\r\n\t\t'\\\\|' +\r\n\t\t// or\r\n\t\t'|' +\r\n\t\t// or group start\r\n\t\t'\\\\(\\\\?\\\\:' +\r\n\t\t// or\r\n\t\t'|' +\r\n\t\t// or group end\r\n\t\t'\\\\)' +\r\n\t\t// or\r\n\t\t'|' +\r\n\t\t// one-of set start\r\n\t\t'\\\\[' +\r\n\t\t// or\r\n\t\t'|' +\r\n\t\t// one-of set end\r\n\t\t'\\\\]' +\r\n\t')'\r\n)\r\n\r\nfunction expandSingleElementArray(array) {\r\n\tif (array.length === 1) {\r\n\t\treturn array[0]\r\n\t}\r\n\treturn array\r\n}","import PatternParser from './AsYouTypeFormatter.PatternParser.js'\r\n\r\nexport default class PatternMatcher {\r\n\tconstructor(pattern) {\r\n\t\tthis.matchTree = new PatternParser().parse(pattern)\r\n\t}\r\n\r\n\tmatch(string, { allowOverflow } = {}) {\r\n\t\tif (!string) {\r\n\t\t\tthrow new Error('String is required')\r\n\t\t}\r\n\t\tconst result = match(string.split(''), this.matchTree, true)\r\n\t\tif (result && result.match) {\r\n\t\t\tdelete result.matchedChars\r\n\t\t}\r\n\t\tif (result && result.overflow) {\r\n\t\t\tif (!allowOverflow) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn result\r\n\t}\r\n}\r\n\r\n/**\r\n * Matches `characters` against a pattern compiled into a `tree`.\r\n * @param  {string[]} characters\r\n * @param  {Tree} tree — A pattern compiled into a `tree`. See the `*.d.ts` file for the description of the `tree` structure.\r\n * @param  {boolean} last — Whether it's the last (rightmost) subtree on its level of the match tree.\r\n * @return {object} See the `*.d.ts` file for the description of the result object.\r\n */\r\nfunction match(characters, tree, last) {\r\n\t// If `tree` is a string, then `tree` is a single character.\r\n\t// That's because when a pattern is parsed, multi-character-string parts\r\n\t// of a pattern are compiled into arrays of single characters.\r\n\t// I still wrote this piece of code for a \"general\" hypothetical case\r\n\t// when `tree` could be a string of several characters, even though\r\n\t// such case is not possible with the current implementation.\r\n\tif (typeof tree === 'string') {\r\n\t\tconst characterString = characters.join('')\r\n\t\tif (tree.indexOf(characterString) === 0) {\r\n\t\t\t// `tree` is always a single character.\r\n\t\t\t// If `tree.indexOf(characterString) === 0`\r\n\t\t\t// then `characters.length === tree.length`.\r\n\t\t\t/* istanbul ignore else */\r\n\t\t\tif (characters.length === tree.length) {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tmatch: true,\r\n\t\t\t\t\tmatchedChars: characters\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// `tree` is always a single character.\r\n\t\t\t// If `tree.indexOf(characterString) === 0`\r\n\t\t\t// then `characters.length === tree.length`.\r\n\t\t\t/* istanbul ignore next */\r\n\t\t\treturn {\r\n\t\t\t\tpartialMatch: true,\r\n\t\t\t\t// matchedChars: characters\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (characterString.indexOf(tree) === 0) {\r\n\t\t\tif (last) {\r\n\t\t\t\t// The `else` path is not possible because `tree` is always a single character.\r\n\t\t\t\t// The `else` case for `characters.length > tree.length` would be\r\n\t\t\t\t// `characters.length <= tree.length` which means `characters.length <= 1`.\r\n\t\t\t\t// `characters` array can't be empty, so that means `characters === [tree]`,\r\n\t\t\t\t// which would also mean `tree.indexOf(characterString) === 0` and that'd mean\r\n\t\t\t\t// that the `if (tree.indexOf(characterString) === 0)` condition before this\r\n\t\t\t\t// `if` condition would be entered, and returned from there, not reaching this code.\r\n\t\t\t\t/* istanbul ignore else */\r\n\t\t\t\tif (characters.length > tree.length) {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\toverflow: true\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn {\r\n\t\t\t\tmatch: true,\r\n\t\t\t\tmatchedChars: characters.slice(0, tree.length)\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn\r\n\t}\r\n\r\n\tif (Array.isArray(tree)) {\r\n\t\tlet restCharacters = characters.slice()\r\n\t\tlet i = 0\r\n\t\twhile (i < tree.length) {\r\n\t\t\tconst subtree = tree[i]\r\n\t\t\tconst result = match(restCharacters, subtree, last && (i === tree.length - 1))\r\n\t\t\tif (!result) {\r\n\t\t\t\treturn\r\n\t\t\t} else if (result.overflow) {\r\n\t\t\t\treturn result\r\n\t\t\t} else if (result.match) {\r\n\t\t\t\t// Continue with the next subtree with the rest of the characters.\r\n\t\t\t\trestCharacters = restCharacters.slice(result.matchedChars.length)\r\n\t\t\t\tif (restCharacters.length === 0) {\r\n\t\t\t\t\tif (i === tree.length - 1) {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tmatch: true,\r\n\t\t\t\t\t\t\tmatchedChars: characters\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tpartialMatch: true,\r\n\t\t\t\t\t\t\t// matchedChars: characters\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\t/* istanbul ignore else */\r\n\t\t\t\tif (result.partialMatch) {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tpartialMatch: true,\r\n\t\t\t\t\t\t// matchedChars: characters\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthrow new Error(`Unsupported match result:\\n${JSON.stringify(result, null, 2)}`)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\ti++\r\n\t\t}\r\n\t\t// If `last` then overflow has already been checked\r\n\t\t// by the last element of the `tree` array.\r\n\t\t/* istanbul ignore if */\r\n\t\tif (last) {\r\n\t\t\treturn {\r\n\t\t\t\toverflow: true\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn {\r\n\t\t\tmatch: true,\r\n\t\t\tmatchedChars: characters.slice(0, characters.length - restCharacters.length)\r\n\t\t}\r\n\t}\r\n\r\n\tswitch (tree.op) {\r\n\t\tcase '|':\r\n\t\t\tlet partialMatch\r\n\t\t\tfor (const branch of tree.args) {\r\n\t\t\t\tconst result = match(characters, branch, last)\r\n\t\t\t\tif (result) {\r\n\t\t\t\t\tif (result.overflow) {\r\n\t\t\t\t\t\treturn result\r\n\t\t\t\t\t} else if (result.match) {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tmatch: true,\r\n\t\t\t\t\t\t\tmatchedChars: result.matchedChars\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t/* istanbul ignore else */\r\n\t\t\t\t\t\tif (result.partialMatch) {\r\n\t\t\t\t\t\t\tpartialMatch = true\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tthrow new Error(`Unsupported match result:\\n${JSON.stringify(result, null, 2)}`)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (partialMatch) {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tpartialMatch: true,\r\n\t\t\t\t\t// matchedChars: ...\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// Not even a partial match.\r\n\t\t\treturn\r\n\r\n\t\tcase '[]':\r\n\t\t\tfor (const char of tree.args) {\r\n\t\t\t\tif (characters[0] === char) {\r\n\t\t\t\t\tif (characters.length === 1) {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tmatch: true,\r\n\t\t\t\t\t\t\tmatchedChars: characters\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (last) {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\toverflow: true\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tmatch: true,\r\n\t\t\t\t\t\tmatchedChars: [char]\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// No character matches.\r\n\t\t\treturn\r\n\r\n\t\t/* istanbul ignore next */\r\n\t\tdefault:\r\n\t\t\tthrow new Error(`Unsupported instruction tree: ${tree}`)\r\n\t}\r\n}","import {\r\n\tDIGIT_PLACEHOLDER,\r\n\tcountOccurences,\r\n\trepeat,\r\n\tcutAndStripNonPairedParens,\r\n\tcloseNonPairedParens,\r\n\tstripNonPairedParens,\r\n\tpopulateTemplateWithDigits\r\n} from './AsYouTypeFormatter.util.js'\r\n\r\nimport formatCompleteNumber, {\r\n\tcanFormatCompleteNumber\r\n} from './AsYouTypeFormatter.complete.js'\r\n\r\nimport PatternMatcher from './AsYouTypeFormatter.PatternMatcher.js'\r\n\r\nimport parseDigits from './helpers/parseDigits.js'\r\nexport { DIGIT_PLACEHOLDER } from './AsYouTypeFormatter.util.js'\r\nimport { FIRST_GROUP_PATTERN } from './helpers/formatNationalNumberUsingFormat.js'\r\nimport { VALID_PUNCTUATION } from './constants.js'\r\nimport applyInternationalSeparatorStyle from './helpers/applyInternationalSeparatorStyle.js'\r\n\r\n// Used in phone number format template creation.\r\n// Could be any digit, I guess.\r\nconst DUMMY_DIGIT = '9'\r\n// I don't know why is it exactly `15`\r\nconst LONGEST_NATIONAL_PHONE_NUMBER_LENGTH = 15\r\n// Create a phone number consisting only of the digit 9 that matches the\r\n// `number_pattern` by applying the pattern to the \"longest phone number\" string.\r\nconst LONGEST_DUMMY_PHONE_NUMBER = repeat(DUMMY_DIGIT, LONGEST_NATIONAL_PHONE_NUMBER_LENGTH)\r\n\r\n// A set of characters that, if found in a national prefix formatting rules, are an indicator to\r\n// us that we should separate the national prefix from the number when formatting.\r\nconst NATIONAL_PREFIX_SEPARATORS_PATTERN = /[- ]/\r\n\r\n// Deprecated: Google has removed some formatting pattern related code from their repo.\r\n// https://github.com/googlei18n/libphonenumber/commit/a395b4fef3caf57c4bc5f082e1152a4d2bd0ba4c\r\n// \"We no longer have numbers in formatting matching patterns, only \\d.\"\r\n// Because this library supports generating custom metadata\r\n// some users may still be using old metadata so the relevant\r\n// code seems to stay until some next major version update.\r\nconst SUPPORT_LEGACY_FORMATTING_PATTERNS = true\r\n\r\n// A pattern that is used to match character classes in regular expressions.\r\n// An example of a character class is \"[1-4]\".\r\nconst CREATE_CHARACTER_CLASS_PATTERN = SUPPORT_LEGACY_FORMATTING_PATTERNS && (() => /\\[([^\\[\\]])*\\]/g)\r\n\r\n// Any digit in a regular expression that actually denotes a digit. For\r\n// example, in the regular expression \"80[0-2]\\d{6,10}\", the first 2 digits\r\n// (8 and 0) are standalone digits, but the rest are not.\r\n// Two look-aheads are needed because the number following \\\\d could be a\r\n// two-digit number, since the phone number can be as long as 15 digits.\r\nconst CREATE_STANDALONE_DIGIT_PATTERN = SUPPORT_LEGACY_FORMATTING_PATTERNS && (() => /\\d(?=[^,}][^,}])/g)\r\n\r\n// A regular expression that is used to determine if a `format` is\r\n// suitable to be used in the \"as you type formatter\".\r\n// A `format` is suitable when the resulting formatted number has\r\n// the same digits as the user has entered.\r\n//\r\n// In the simplest case, that would mean that the format\r\n// doesn't add any additional digits when formatting a number.\r\n// Google says that it also shouldn't add \"star\" (`*`) characters,\r\n// like it does in some Israeli formats.\r\n// Such basic format would only contain \"valid punctuation\"\r\n// and \"captured group\" identifiers ($1, $2, etc).\r\n//\r\n// An example of a format that adds additional digits:\r\n//\r\n// Country: `AR` (Argentina).\r\n// Format:\r\n// {\r\n//    \"pattern\": \"(\\\\d)(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\r\n//    \"leading_digits_patterns\": [\"91\"],\r\n//    \"national_prefix_formatting_rule\": \"0$1\",\r\n//    \"format\": \"$2 15-$3-$4\",\r\n//    \"international_format\": \"$1 $2 $3-$4\"\r\n// }\r\n//\r\n// In the format above, the `format` adds `15` to the digits when formatting a number.\r\n// A sidenote: this format actually is suitable because `national_prefix_for_parsing`\r\n// has previously removed `15` from a national number, so re-adding `15` in `format`\r\n// doesn't actually result in any extra digits added to user's input.\r\n// But verifying that would be a complex procedure, so the code chooses a simpler path:\r\n// it simply filters out all `format`s that contain anything but \"captured group\" ids.\r\n//\r\n// This regular expression is called `ELIGIBLE_FORMAT_PATTERN` in Google's\r\n// `libphonenumber` code.\r\n//\r\nconst NON_ALTERING_FORMAT_REG_EXP = new RegExp(\r\n\t'[' + VALID_PUNCTUATION + ']*' +\r\n\t// Google developers say:\r\n\t// \"We require that the first matching group is present in the\r\n\t//  output pattern to ensure no data is lost while formatting.\"\r\n\t'\\\\$1' +\r\n\t'[' + VALID_PUNCTUATION + ']*' +\r\n\t'(\\\\$\\\\d[' + VALID_PUNCTUATION + ']*)*' +\r\n\t'$'\r\n)\r\n\r\n// This is the minimum length of the leading digits of a phone number\r\n// to guarantee the first \"leading digits pattern\" for a phone number format\r\n// to be preemptive.\r\nconst MIN_LEADING_DIGITS_LENGTH = 3\r\n\r\nexport default class AsYouTypeFormatter {\r\n\tconstructor({\r\n\t\tstate,\r\n\t\tmetadata\r\n\t}) {\r\n\t\tthis.metadata = metadata\r\n\t\tthis.resetFormat()\r\n\t}\r\n\r\n\tresetFormat() {\r\n\t\tthis.chosenFormat = undefined\r\n\t\tthis.template = undefined\r\n\t\tthis.nationalNumberTemplate = undefined\r\n\t\tthis.populatedNationalNumberTemplate = undefined\r\n\t\tthis.populatedNationalNumberTemplatePosition = -1\r\n\t}\r\n\r\n\treset(numberingPlan, state) {\r\n\t\tthis.resetFormat()\r\n\t\tif (numberingPlan) {\r\n\t\t\tthis.isNANP = numberingPlan.callingCode() === '1'\r\n\t\t\tthis.matchingFormats = numberingPlan.formats()\r\n\t\t\tif (state.nationalSignificantNumber) {\r\n\t\t\t\tthis.narrowDownMatchingFormats(state)\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tthis.isNANP = undefined\r\n\t\t\tthis.matchingFormats = []\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Formats an updated phone number.\r\n\t * @param  {string} nextDigits — Additional phone number digits.\r\n\t * @param  {object} state — `AsYouType` state.\r\n\t * @return {[string]} Returns undefined if the updated phone number can't be formatted using any of the available formats.\r\n\t */\r\n\tformat(nextDigits, state) {\r\n\t\t// See if the phone number digits can be formatted as a complete phone number.\r\n\t\t// If not, use the results from `formatNationalNumberWithNextDigits()`,\r\n\t\t// which formats based on the chosen formatting pattern.\r\n\t\t//\r\n\t\t// Attempting to format complete phone number first is how it's done\r\n\t\t// in Google's `libphonenumber`, so this library just follows it.\r\n\t\t// Google's `libphonenumber` code doesn't explain in detail why does it\r\n\t\t// attempt to format digits as a complete phone number\r\n\t\t// instead of just going with a previoulsy (or newly) chosen `format`:\r\n\t\t//\r\n\t\t// \"Checks to see if there is an exact pattern match for these digits.\r\n\t\t//  If so, we should use this instead of any other formatting template\r\n\t\t//  whose leadingDigitsPattern also matches the input.\"\r\n\t\t//\r\n\t\tif (canFormatCompleteNumber(state.nationalSignificantNumber, state.country, this.metadata)) {\r\n\t\t\tfor (const format of this.matchingFormats) {\r\n\t\t\t\tconst formattedCompleteNumber = formatCompleteNumber(\r\n\t\t\t\t\tstate,\r\n\t\t\t\t\tformat,\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tmetadata: this.metadata,\r\n\t\t\t\t\t\tshouldTryNationalPrefixFormattingRule: (format) => this.shouldTryNationalPrefixFormattingRule(format, {\r\n\t\t\t\t\t\t\tinternational: state.international,\r\n\t\t\t\t\t\t\tnationalPrefix: state.nationalPrefix\r\n\t\t\t\t\t\t}),\r\n\t\t\t\t\t\tgetSeparatorAfterNationalPrefix: (format) => this.getSeparatorAfterNationalPrefix(format)\r\n\t\t\t\t\t}\r\n\t\t\t\t)\r\n\t\t\t\tif (formattedCompleteNumber) {\r\n\t\t\t\t\tthis.resetFormat()\r\n\t\t\t\t\tthis.chosenFormat = format\r\n\t\t\t\t\tthis.setNationalNumberTemplate(formattedCompleteNumber.replace(/\\d/g, DIGIT_PLACEHOLDER), state)\r\n\t\t\t\t\tthis.populatedNationalNumberTemplate = formattedCompleteNumber\r\n\t\t\t\t\t// With a new formatting template, the matched position\r\n\t\t\t\t\t// using the old template needs to be reset.\r\n\t\t\t\t\tthis.populatedNationalNumberTemplatePosition = this.template.lastIndexOf(DIGIT_PLACEHOLDER)\r\n\t\t\t\t\treturn formattedCompleteNumber\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\t\t}\r\n\t\t// Format the digits as a partial (incomplete) phone number\r\n\t\t// using the previously chosen formatting pattern (or a newly chosen one).\r\n\t\treturn this.formatNationalNumberWithNextDigits(nextDigits, state)\r\n\t}\r\n\r\n\t// Formats the next phone number digits.\r\n\tformatNationalNumberWithNextDigits(nextDigits, state) {\r\n\t\tconst previouslyChosenFormat = this.chosenFormat\r\n\r\n\t\t// Choose a format from the list of matching ones.\r\n\t\tconst newlyChosenFormat = this.chooseFormat(state)\r\n\r\n\t\tif (newlyChosenFormat) {\r\n\t\t\tif (newlyChosenFormat === previouslyChosenFormat) {\r\n\t\t\t\t// If it can format the next (current) digits\r\n\t\t\t\t// using the previously chosen phone number format\r\n\t\t\t\t// then return the updated formatted number.\r\n\t\t\t\treturn this.formatNextNationalNumberDigits(nextDigits)\r\n\t\t\t} else {\r\n\t\t\t\t// If a more appropriate phone number format\r\n\t\t\t\t// has been chosen for these \"leading digits\",\r\n\t\t\t\t// then re-format the national phone number part\r\n\t\t\t\t// using the newly selected format.\r\n\t\t\t\treturn this.formatNextNationalNumberDigits(state.getNationalDigits())\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tnarrowDownMatchingFormats({\r\n\t\tnationalSignificantNumber,\r\n\t\tnationalPrefix,\r\n\t\tinternational\r\n\t}) {\r\n\t\tconst leadingDigits = nationalSignificantNumber\r\n\r\n\t\t// \"leading digits\" pattern list starts with a\r\n\t\t// \"leading digits\" pattern fitting a maximum of 3 leading digits.\r\n\t\t// So, after a user inputs 3 digits of a national (significant) phone number\r\n\t\t// this national (significant) number can already be formatted.\r\n\t\t// The next \"leading digits\" pattern is for 4 leading digits max,\r\n\t\t// and the \"leading digits\" pattern after it is for 5 leading digits max, etc.\r\n\r\n\t\t// This implementation is different from Google's\r\n\t\t// in that it searches for a fitting format\r\n\t\t// even if the user has entered less than\r\n\t\t// `MIN_LEADING_DIGITS_LENGTH` digits of a national number.\r\n\t\t// Because some leading digit patterns already match for a single first digit.\r\n\t\tlet leadingDigitsPatternIndex = leadingDigits.length - MIN_LEADING_DIGITS_LENGTH\r\n\t\tif (leadingDigitsPatternIndex < 0) {\r\n\t\t\tleadingDigitsPatternIndex = 0\r\n\t\t}\r\n\r\n\t\tthis.matchingFormats = this.matchingFormats.filter(\r\n\t\t\tformat => this.formatSuits(format, international, nationalPrefix)\r\n\t\t\t\t&& this.formatMatches(format, leadingDigits, leadingDigitsPatternIndex)\r\n\t\t)\r\n\r\n\t\t// If there was a phone number format chosen\r\n\t\t// and it no longer holds given the new leading digits then reset it.\r\n\t\t// The test for this `if` condition is marked as:\r\n\t\t// \"Reset a chosen format when it no longer holds given the new leading digits\".\r\n\t\t// To construct a valid test case for this one can find a country\r\n\t\t// in `PhoneNumberMetadata.xml` yielding one format for 3 `<leadingDigits>`\r\n\t\t// and yielding another format for 4 `<leadingDigits>` (Australia in this case).\r\n\t\tif (this.chosenFormat && this.matchingFormats.indexOf(this.chosenFormat) === -1) {\r\n\t\t\tthis.resetFormat()\r\n\t\t}\r\n\t}\r\n\r\n\tformatSuits(format, international, nationalPrefix) {\r\n\t\t// When a prefix before a national (significant) number is\r\n\t\t// simply a national prefix, then it's parsed as `this.nationalPrefix`.\r\n\t\t// In more complex cases, a prefix before national (significant) number\r\n\t\t// could include a national prefix as well as some \"capturing groups\",\r\n\t\t// and in that case there's no info whether a national prefix has been parsed.\r\n\t\t// If national prefix is not used when formatting a phone number\r\n\t\t// using this format, but a national prefix has been entered by the user,\r\n\t\t// and was extracted, then discard such phone number format.\r\n\t\t// In Google's \"AsYouType\" formatter code, the equivalent would be this part:\r\n\t\t// https://github.com/google/libphonenumber/blob/0a45cfd96e71cad8edb0e162a70fcc8bd9728933/java/libphonenumber/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java#L175-L184\r\n\t\tif (nationalPrefix &&\r\n\t\t\t!format.usesNationalPrefix() &&\r\n\t\t\t// !format.domesticCarrierCodeFormattingRule() &&\r\n\t\t\t!format.nationalPrefixIsOptionalWhenFormattingInNationalFormat()) {\r\n\t\t\treturn false\r\n\t\t}\r\n\t\t// If national prefix is mandatory for this phone number format\r\n\t\t// and there're no guarantees that a national prefix is present in user input\r\n\t\t// then discard this phone number format as not suitable.\r\n\t\t// In Google's \"AsYouType\" formatter code, the equivalent would be this part:\r\n\t\t// https://github.com/google/libphonenumber/blob/0a45cfd96e71cad8edb0e162a70fcc8bd9728933/java/libphonenumber/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java#L185-L193\r\n\t\tif (!international &&\r\n\t\t\t!nationalPrefix &&\r\n\t\t\tformat.nationalPrefixIsMandatoryWhenFormattingInNationalFormat()) {\r\n\t\t\treturn false\r\n\t\t}\r\n\t\treturn true\r\n\t}\r\n\r\n\tformatMatches(format, leadingDigits, leadingDigitsPatternIndex) {\r\n\t\tconst leadingDigitsPatternsCount = format.leadingDigitsPatterns().length\r\n\r\n\t\t// If this format is not restricted to a certain\r\n\t\t// leading digits pattern then it fits.\r\n\t\t// The test case could be found by searching for \"leadingDigitsPatternsCount === 0\".\r\n\t\tif (leadingDigitsPatternsCount === 0) {\r\n\t\t\treturn true\r\n\t\t}\r\n\r\n\t\t// Start narrowing down the list of possible formats based on the leading digits.\r\n\t\t// (only previously matched formats take part in the narrowing down process)\r\n\r\n\t\t// `leading_digits_patterns` start with 3 digits min\r\n\t\t// and then go up from there one digit at a time.\r\n\t\tleadingDigitsPatternIndex = Math.min(leadingDigitsPatternIndex, leadingDigitsPatternsCount - 1)\r\n\t\tconst leadingDigitsPattern = format.leadingDigitsPatterns()[leadingDigitsPatternIndex]\r\n\r\n\t\t// Google imposes a requirement on the leading digits\r\n\t\t// to be minimum 3 digits long in order to be eligible\r\n\t\t// for checking those with a leading digits pattern.\r\n\t\t//\r\n\t\t// Since `leading_digits_patterns` start with 3 digits min,\r\n\t\t// Google's original `libphonenumber` library only starts\r\n\t\t// excluding any non-matching formats only when the\r\n\t\t// national number entered so far is at least 3 digits long,\r\n\t\t// otherwise format matching would give false negatives.\r\n\t\t//\r\n\t\t// For example, when the digits entered so far are `2`\r\n\t\t// and the leading digits pattern is `21` –\r\n\t\t// it's quite obvious in this case that the format could be the one\r\n\t\t// but due to the absence of further digits it would give false negative.\r\n\t\t//\r\n\t\t// Also, `leading_digits_patterns` doesn't always correspond to a single\r\n\t\t// digits count. For example, `60|8` pattern would already match `8`\r\n\t\t// but the `60` part would require having at least two leading digits,\r\n\t\t// so the whole pattern would require inputting two digits first in order to\r\n\t\t// decide on whether it matches the input, even when the input is \"80\".\r\n\t\t//\r\n\t\t// This library — `libphonenumber-js` — allows filtering by `leading_digits_patterns`\r\n\t\t// even when there's only 1 or 2 digits of the national (significant) number.\r\n\t\t// To do that, it uses a non-strict pattern matcher written specifically for that.\r\n\t\t//\r\n\t\tif (leadingDigits.length < MIN_LEADING_DIGITS_LENGTH) {\r\n\t\t\t// Before leading digits < 3 matching was implemented:\r\n\t\t\t// return true\r\n\t\t\t//\r\n\t\t\t// After leading digits < 3 matching was implemented:\r\n\t\t\ttry {\r\n\t\t\t\treturn new PatternMatcher(leadingDigitsPattern).match(leadingDigits, { allowOverflow: true }) !== undefined\r\n\t\t\t} catch (error) /* istanbul ignore next */ {\r\n\t\t\t\t// There's a slight possibility that there could be some undiscovered bug\r\n\t\t\t\t// in the pattern matcher code. Since the \"leading digits < 3 matching\"\r\n\t\t\t\t// feature is not \"essential\" for operation, it can fall back to the old way\r\n\t\t\t\t// in case of any issues rather than halting the application's execution.\r\n\t\t\t\tconsole.error(error)\r\n\t\t\t\treturn true\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// If at least `MIN_LEADING_DIGITS_LENGTH` digits of a national number are\r\n\t\t// available then use the usual regular expression matching.\r\n\t\t//\r\n\t\t// The whole pattern is wrapped in round brackets (`()`) because\r\n\t\t// the pattern can use \"or\" operator (`|`) at the top level of the pattern.\r\n\t\t//\r\n\t\treturn new RegExp(`^(${leadingDigitsPattern})`).test(leadingDigits)\r\n\t}\r\n\r\n\tgetFormatFormat(format, international) {\r\n\t\treturn international ? format.internationalFormat() : format.format()\r\n\t}\r\n\r\n\tchooseFormat(state) {\r\n\t\t// When there are multiple available formats, the formatter uses the first\r\n\t\t// format where a formatting template could be created.\r\n\t\t//\r\n\t\t// For some weird reason, `istanbul` says \"else path not taken\"\r\n\t\t// for the `for of` line below. Supposedly that means that\r\n\t\t// the loop doesn't ever go over the last element in the list.\r\n\t\t// That's true because there always is `this.chosenFormat`\r\n\t\t// when `this.matchingFormats` is non-empty.\r\n\t\t// And, for some weird reason, it doesn't think that the case\r\n\t\t// with empty `this.matchingFormats` qualifies for a valid \"else\" path.\r\n\t\t// So simply muting this `istanbul` warning.\r\n\t\t// It doesn't skip the contents of the `for of` loop,\r\n\t\t// it just skips the `for of` line.\r\n\t\t//\r\n\t\t/* istanbul ignore next */\r\n\t\tfor (const format of this.matchingFormats.slice()) {\r\n\t\t\t// If this format is currently being used\r\n\t\t\t// and is still suitable, then stick to it.\r\n\t\t\tif (this.chosenFormat === format) {\r\n\t\t\t\tbreak\r\n\t\t\t}\r\n\t\t\t// Sometimes, a formatting rule inserts additional digits in a phone number,\r\n\t\t\t// and \"as you type\" formatter can't do that: it should only use the digits\r\n\t\t\t// that the user has input.\r\n\t\t\t//\r\n\t\t\t// For example, in Argentina, there's a format for mobile phone numbers:\r\n\t\t\t//\r\n\t\t\t// {\r\n\t\t\t//    \"pattern\": \"(\\\\d)(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\r\n\t\t\t//    \"leading_digits_patterns\": [\"91\"],\r\n\t\t\t//    \"national_prefix_formatting_rule\": \"0$1\",\r\n\t\t\t//    \"format\": \"$2 15-$3-$4\",\r\n\t\t\t//    \"international_format\": \"$1 $2 $3-$4\"\r\n\t\t\t// }\r\n\t\t\t//\r\n\t\t\t// In that format, `international_format` is used instead of `format`\r\n\t\t\t// because `format` inserts `15` in the formatted number,\r\n\t\t\t// and `AsYouType` formatter should only use the digits\r\n\t\t\t// the user has actually input, without adding any extra digits.\r\n\t\t\t// In this case, it wouldn't make a difference, because the `15`\r\n\t\t\t// is first stripped when applying `national_prefix_for_parsing`\r\n\t\t\t// and then re-added when using `format`, so in reality it doesn't\r\n\t\t\t// add any new digits to the number, but to detect that, the code\r\n\t\t\t// would have to be more complex: it would have to try formatting\r\n\t\t\t// the digits using the format and then see if any digits have\r\n\t\t\t// actually been added or removed, and then, every time a new digit\r\n\t\t\t// is input, it should re-check whether the chosen format doesn't\r\n\t\t\t// alter the digits.\r\n\t\t\t//\r\n\t\t\t// Google's code doesn't go that far, and so does this library:\r\n\t\t\t// it simply requires that a `format` doesn't add any additonal\r\n\t\t\t// digits to user's input.\r\n\t\t\t//\r\n\t\t\t// Also, people in general should move from inputting phone numbers\r\n\t\t\t// in national format (possibly with national prefixes)\r\n\t\t\t// and use international phone number format instead:\r\n\t\t\t// it's a logical thing in the modern age of mobile phones,\r\n\t\t\t// globalization and the internet.\r\n\t\t\t//\r\n\t\t\t/* istanbul ignore if */\r\n\t\t\tif (!NON_ALTERING_FORMAT_REG_EXP.test(this.getFormatFormat(format, state.international))) {\r\n\t\t\t\tcontinue\r\n\t\t\t}\r\n\t\t\tif (!this.createTemplateForFormat(format, state)) {\r\n\t\t\t\t// Remove the format if it can't generate a template.\r\n\t\t\t\tthis.matchingFormats = this.matchingFormats.filter(_ => _ !== format)\r\n\t\t\t\tcontinue\r\n\t\t\t}\r\n\t\t\tthis.chosenFormat = format\r\n\t\t\tbreak\r\n\t\t}\r\n\t\tif (!this.chosenFormat) {\r\n\t\t\t// No format matches the national (significant) phone number.\r\n\t\t\tthis.resetFormat()\r\n\t\t}\r\n\t\treturn this.chosenFormat\r\n\t}\r\n\r\n\tcreateTemplateForFormat(format, state) {\r\n\t\t// The formatter doesn't format numbers when numberPattern contains '|', e.g.\r\n\t\t// (20|3)\\d{4}. In those cases we quickly return.\r\n\t\t// (Though there's no such format in current metadata)\r\n\t\t/* istanbul ignore if */\r\n\t\tif (SUPPORT_LEGACY_FORMATTING_PATTERNS && format.pattern().indexOf('|') >= 0) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\t// Get formatting template for this phone number format\r\n\t\tconst template = this.getTemplateForFormat(format, state)\r\n\t\t// If the national number entered is too long\r\n\t\t// for any phone number format, then abort.\r\n\t\tif (template) {\r\n\t\t\tthis.setNationalNumberTemplate(template, state)\r\n\t\t\treturn true\r\n\t\t}\r\n\t}\r\n\r\n\tgetSeparatorAfterNationalPrefix(format) {\r\n\t\t// `US` metadata doesn't have a `national_prefix_formatting_rule`,\r\n\t\t// so the `if` condition below doesn't apply to `US`,\r\n\t\t// but in reality there shoudl be a separator\r\n\t\t// between a national prefix and a national (significant) number.\r\n\t\t// So `US` national prefix separator is a \"special\" \"hardcoded\" case.\r\n\t\tif (this.isNANP) {\r\n\t\t\treturn ' '\r\n\t\t}\r\n\t\t// If a `format` has a `national_prefix_formatting_rule`\r\n\t\t// and that rule has a separator after a national prefix,\r\n\t\t// then it means that there should be a separator\r\n\t\t// between a national prefix and a national (significant) number.\r\n\t\tif (format &&\r\n\t\t\tformat.nationalPrefixFormattingRule() &&\r\n\t\t\tNATIONAL_PREFIX_SEPARATORS_PATTERN.test(format.nationalPrefixFormattingRule())) {\r\n\t\t\treturn ' '\r\n\t\t}\r\n\t\t// At this point, there seems to be no clear evidence that\r\n\t\t// there should be a separator between a national prefix\r\n\t\t// and a national (significant) number. So don't insert one.\r\n\t\treturn ''\r\n\t}\r\n\r\n\tgetInternationalPrefixBeforeCountryCallingCode({ IDDPrefix, missingPlus }, options) {\r\n\t\tif (IDDPrefix) {\r\n\t\t\treturn options && options.spacing === false ? IDDPrefix : IDDPrefix + ' '\r\n\t\t}\r\n\t\tif (missingPlus) {\r\n\t\t\treturn ''\r\n\t\t}\r\n\t\treturn '+'\r\n\t}\r\n\r\n\tgetTemplate(state) {\r\n\t\tif (!this.template) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\t// `this.template` holds the template for a \"complete\" phone number.\r\n\t\t// The currently entered phone number is most likely not \"complete\",\r\n\t\t// so trim all non-populated digits.\r\n\t\tlet index = -1\r\n\t\tlet i = 0\r\n\t\tconst internationalPrefix = state.international ? this.getInternationalPrefixBeforeCountryCallingCode(state, { spacing: false }) : ''\r\n\t\twhile (i < internationalPrefix.length + state.getDigitsWithoutInternationalPrefix().length) {\r\n\t\t\tindex = this.template.indexOf(DIGIT_PLACEHOLDER, index + 1)\r\n\t\t\ti++\r\n\t\t}\r\n\t\treturn cutAndStripNonPairedParens(this.template, index + 1)\r\n\t}\r\n\r\n\tsetNationalNumberTemplate(template, state) {\r\n\t\tthis.nationalNumberTemplate = template\r\n\t\tthis.populatedNationalNumberTemplate = template\r\n\t\t// With a new formatting template, the matched position\r\n\t\t// using the old template needs to be reset.\r\n\t\tthis.populatedNationalNumberTemplatePosition = -1\r\n\t\t// For convenience, the public `.template` property\r\n\t\t// contains the whole international number\r\n\t\t// if the phone number being input is international:\r\n\t\t// 'x' for the '+' sign, 'x'es for the country phone code,\r\n\t\t// a spacebar and then the template for the formatted national number.\r\n\t\tif (state.international) {\r\n\t\t\tthis.template =\r\n\t\t\t\tthis.getInternationalPrefixBeforeCountryCallingCode(state).replace(/[\\d\\+]/g, DIGIT_PLACEHOLDER) +\r\n\t\t\t\trepeat(DIGIT_PLACEHOLDER, state.callingCode.length) +\r\n\t\t\t\t' ' +\r\n\t\t\t\ttemplate\r\n\t\t} else {\r\n\t\t\tthis.template = template\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Generates formatting template for a national phone number,\r\n\t * optionally containing a national prefix, for a format.\r\n\t * @param  {Format} format\r\n\t * @param  {string} nationalPrefix\r\n\t * @return {string}\r\n\t */\r\n\tgetTemplateForFormat(format, {\r\n\t\tnationalSignificantNumber,\r\n\t\tinternational,\r\n\t\tnationalPrefix,\r\n\t\tprefixBeforeNationalSignificantNumberThatIsNotNationalPrefix\r\n\t}) {\r\n\t\tlet pattern = format.pattern()\r\n\r\n\t\t/* istanbul ignore else */\r\n\t\tif (SUPPORT_LEGACY_FORMATTING_PATTERNS) {\r\n\t\t\tpattern = pattern\r\n\t\t\t\t// Replace anything in the form of [..] with \\d\r\n\t\t\t\t.replace(CREATE_CHARACTER_CLASS_PATTERN(), '\\\\d')\r\n\t\t\t\t// Replace any standalone digit (not the one in `{}`) with \\d\r\n\t\t\t\t.replace(CREATE_STANDALONE_DIGIT_PATTERN(), '\\\\d')\r\n\t\t}\r\n\r\n\t\t// Generate a dummy national number (consisting of `9`s)\r\n\t\t// that fits this format's `pattern`.\r\n\t\t//\r\n\t\t// This match will always succeed,\r\n\t\t// because the \"longest dummy phone number\"\r\n\t\t// has enough length to accomodate any possible\r\n\t\t// national phone number format pattern.\r\n\t\t//\r\n\t\tlet digits = LONGEST_DUMMY_PHONE_NUMBER.match(pattern)[0]\r\n\r\n\t\t// If the national number entered is too long\r\n\t\t// for any phone number format, then abort.\r\n\t\tif (nationalSignificantNumber.length > digits.length) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\t// Get a formatting template which can be used to efficiently format\r\n\t\t// a partial number where digits are added one by one.\r\n\r\n\t\t// Below `strictPattern` is used for the\r\n\t\t// regular expression (with `^` and `$`).\r\n\t\t// This wasn't originally in Google's `libphonenumber`\r\n\t\t// and I guess they don't really need it\r\n\t\t// because they're not using \"templates\" to format phone numbers\r\n\t\t// but I added `strictPattern` after encountering\r\n\t\t// South Korean phone number formatting bug.\r\n\t\t//\r\n\t\t// Non-strict regular expression bug demonstration:\r\n\t\t//\r\n\t\t// this.nationalSignificantNumber : `111111111` (9 digits)\r\n\t\t//\r\n\t\t// pattern : (\\d{2})(\\d{3,4})(\\d{4})\r\n\t\t// format : `$1 $2 $3`\r\n\t\t// digits : `9999999999` (10 digits)\r\n\t\t//\r\n\t\t// '9999999999'.replace(new RegExp(/(\\d{2})(\\d{3,4})(\\d{4})/g), '$1 $2 $3') = \"99 9999 9999\"\r\n\t\t//\r\n\t\t// template : xx xxxx xxxx\r\n\t\t//\r\n\t\t// But the correct template in this case is `xx xxx xxxx`.\r\n\t\t// The template was generated incorrectly because of the\r\n\t\t// `{3,4}` variability in the `pattern`.\r\n\t\t//\r\n\t\t// The fix is, if `this.nationalSignificantNumber` has already sufficient length\r\n\t\t// to satisfy the `pattern` completely then `this.nationalSignificantNumber`\r\n\t\t// is used instead of `digits`.\r\n\r\n\t\tconst strictPattern = new RegExp('^' + pattern + '$')\r\n\t\tconst nationalNumberDummyDigits = nationalSignificantNumber.replace(/\\d/g, DUMMY_DIGIT)\r\n\r\n\t\t// If `this.nationalSignificantNumber` has already sufficient length\r\n\t\t// to satisfy the `pattern` completely then use it\r\n\t\t// instead of `digits`.\r\n\t\tif (strictPattern.test(nationalNumberDummyDigits)) {\r\n\t\t\tdigits = nationalNumberDummyDigits\r\n\t\t}\r\n\r\n\t\tlet numberFormat = this.getFormatFormat(format, international)\r\n\t\tlet nationalPrefixIncludedInTemplate\r\n\r\n\t\t// If a user did input a national prefix (and that's guaranteed),\r\n\t\t// and if a `format` does have a national prefix formatting rule,\r\n\t\t// then see if that national prefix formatting rule\r\n\t\t// prepends exactly the same national prefix the user has input.\r\n\t\t// If that's the case, then use the `format` with the national prefix formatting rule.\r\n\t\t// Otherwise, use  the `format` without the national prefix formatting rule,\r\n\t\t// and prepend a national prefix manually to it.\r\n\t\tif (this.shouldTryNationalPrefixFormattingRule(format, { international, nationalPrefix })) {\r\n\t\t\tconst numberFormatWithNationalPrefix = numberFormat.replace(\r\n\t\t\t\tFIRST_GROUP_PATTERN,\r\n\t\t\t\tformat.nationalPrefixFormattingRule()\r\n\t\t\t)\r\n\t\t\t// If `national_prefix_formatting_rule` of a `format` simply prepends\r\n\t\t\t// national prefix at the start of a national (significant) number,\r\n\t\t\t// then such formatting can be used with `AsYouType` formatter.\r\n\t\t\t// There seems to be no `else` case: everywhere in metadata,\r\n\t\t\t// national prefix formatting rule is national prefix + $1,\r\n\t\t\t// or `($1)`, in which case such format isn't even considered\r\n\t\t\t// when the user has input a national prefix.\r\n\t\t\t/* istanbul ignore else */\r\n\t\t\tif (parseDigits(format.nationalPrefixFormattingRule()) === (nationalPrefix || '') + parseDigits('$1')) {\r\n\t\t\t\tnumberFormat = numberFormatWithNationalPrefix\r\n\t\t\t\tnationalPrefixIncludedInTemplate = true\r\n\t\t\t\t// Replace all digits of the national prefix in the formatting template\r\n\t\t\t\t// with `DIGIT_PLACEHOLDER`s.\r\n\t\t\t\tif (nationalPrefix) {\r\n\t\t\t\t\tlet i = nationalPrefix.length\r\n\t\t\t\t\twhile (i > 0) {\r\n\t\t\t\t\t\tnumberFormat = numberFormat.replace(/\\d/, DIGIT_PLACEHOLDER)\r\n\t\t\t\t\t\ti--\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Generate formatting template for this phone number format.\r\n\t\tlet template = digits\r\n\t\t\t// Format the dummy phone number according to the format.\r\n\t\t\t.replace(new RegExp(pattern), numberFormat)\r\n\t\t\t// Replace each dummy digit with a DIGIT_PLACEHOLDER.\r\n\t\t\t.replace(new RegExp(DUMMY_DIGIT, 'g'), DIGIT_PLACEHOLDER)\r\n\r\n\t\t// If a prefix of a national (significant) number is not as simple\r\n\t\t// as just a basic national prefix, then just prepend such prefix\r\n\t\t// before the national (significant) number, optionally spacing\r\n\t\t// the two with a whitespace.\r\n\t\tif (!nationalPrefixIncludedInTemplate) {\r\n\t\t\tif (prefixBeforeNationalSignificantNumberThatIsNotNationalPrefix) {\r\n\t\t\t\t// Prepend the prefix to the template manually.\r\n\t\t\t\ttemplate = repeat(DIGIT_PLACEHOLDER, prefixBeforeNationalSignificantNumberThatIsNotNationalPrefix.length) +\r\n\t\t\t\t\t' ' +\r\n\t\t\t\t\ttemplate\r\n\t\t\t} else if (nationalPrefix) {\r\n\t\t\t\t// Prepend national prefix to the template manually.\r\n\t\t\t\ttemplate = repeat(DIGIT_PLACEHOLDER, nationalPrefix.length) +\r\n\t\t\t\t\tthis.getSeparatorAfterNationalPrefix(format) +\r\n\t\t\t\t\ttemplate\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (international) {\r\n\t\t\ttemplate = applyInternationalSeparatorStyle(template)\r\n\t\t}\r\n\r\n\t\treturn template\r\n\t}\r\n\r\n\tformatNextNationalNumberDigits(digits) {\r\n\t\tconst result = populateTemplateWithDigits(\r\n\t\t\tthis.populatedNationalNumberTemplate,\r\n\t\t\tthis.populatedNationalNumberTemplatePosition,\r\n\t\t\tdigits\r\n\t\t)\r\n\r\n\t\tif (!result) {\r\n\t\t\t// Reset the format.\r\n\t\t\tthis.resetFormat()\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tthis.populatedNationalNumberTemplate = result[0]\r\n\t\tthis.populatedNationalNumberTemplatePosition = result[1]\r\n\r\n\t\t// Return the formatted phone number so far.\r\n\t\treturn cutAndStripNonPairedParens(this.populatedNationalNumberTemplate, this.populatedNationalNumberTemplatePosition + 1)\r\n\r\n\t\t// The old way which was good for `input-format` but is not so good\r\n\t\t// for `react-phone-number-input`'s default input (`InputBasic`).\r\n\t\t// return closeNonPairedParens(this.populatedNationalNumberTemplate, this.populatedNationalNumberTemplatePosition + 1)\r\n\t\t// \t.replace(new RegExp(DIGIT_PLACEHOLDER, 'g'), ' ')\r\n\t}\r\n\r\n\tshouldTryNationalPrefixFormattingRule(format, { international, nationalPrefix }) {\r\n\t\tif (format.nationalPrefixFormattingRule()) {\r\n\t\t\t// In some countries, `national_prefix_formatting_rule` is `($1)`,\r\n\t\t\t// so it applies even if the user hasn't input a national prefix.\r\n\t\t\t// `format.usesNationalPrefix()` detects such cases.\r\n\t\t\tconst usesNationalPrefix = format.usesNationalPrefix()\r\n\t\t\tif ((usesNationalPrefix && nationalPrefix) ||\r\n\t\t\t\t(!usesNationalPrefix && !international)) {\r\n\t\t\t\treturn true\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}","import extractCountryCallingCode from './helpers/extractCountryCallingCode.js'\r\nimport extractCountryCallingCodeFromInternationalNumberWithoutPlusSign from './helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js'\r\nimport extractNationalNumberFromPossiblyIncompleteNumber from './helpers/extractNationalNumberFromPossiblyIncompleteNumber.js'\r\nimport stripIddPrefix from './helpers/stripIddPrefix.js'\r\nimport parseDigits from './helpers/parseDigits.js'\r\n\r\nimport {\r\n\tVALID_DIGITS,\r\n\tVALID_PUNCTUATION,\r\n\tPLUS_CHARS\r\n} from './constants.js'\r\n\r\nconst VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART =\r\n\t'[' +\r\n\t\tVALID_PUNCTUATION +\r\n\t\tVALID_DIGITS +\r\n\t']+'\r\n\r\nconst VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART_PATTERN = new RegExp('^' + VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART + '$', 'i')\r\n\r\nconst VALID_FORMATTED_PHONE_NUMBER_PART =\r\n\t'(?:' +\r\n\t\t'[' + PLUS_CHARS + ']' +\r\n\t\t'[' +\r\n\t\t\tVALID_PUNCTUATION +\r\n\t\t\tVALID_DIGITS +\r\n\t\t']*' +\r\n\t\t'|' +\r\n\t\t'[' +\r\n\t\t\tVALID_PUNCTUATION +\r\n\t\t\tVALID_DIGITS +\r\n\t\t']+' +\r\n\t')'\r\n\r\nconst AFTER_PHONE_NUMBER_DIGITS_END_PATTERN = new RegExp(\r\n\t'[^' +\r\n\t\tVALID_PUNCTUATION +\r\n\t\tVALID_DIGITS +\r\n\t']+' +\r\n\t'.*' +\r\n\t'$'\r\n)\r\n\r\n// Tests whether `national_prefix_for_parsing` could match\r\n// different national prefixes.\r\n// Matches anything that's not a digit or a square bracket.\r\nconst COMPLEX_NATIONAL_PREFIX = /[^\\d\\[\\]]/\r\n\r\nexport default class AsYouTypeParser {\r\n\tconstructor({\r\n\t\tdefaultCountry,\r\n\t\tdefaultCallingCode,\r\n\t\tmetadata,\r\n\t\tonNationalSignificantNumberChange\r\n\t}) {\r\n\t\tthis.defaultCountry = defaultCountry\r\n\t\tthis.defaultCallingCode = defaultCallingCode\r\n\t\tthis.metadata = metadata\r\n\t\tthis.onNationalSignificantNumberChange = onNationalSignificantNumberChange\r\n\t}\r\n\r\n\tinput(text, state) {\r\n\t\tconst [formattedDigits, hasPlus] = extractFormattedDigitsAndPlus(text)\r\n\t\tconst digits = parseDigits(formattedDigits)\r\n\t\t// Checks for a special case: just a leading `+` has been entered.\r\n\t\tlet justLeadingPlus\r\n\t\tif (hasPlus) {\r\n\t\t\tif (!state.digits) {\r\n\t\t\t\tstate.startInternationalNumber(undefined, undefined)\r\n\t\t\t\tif (!digits) {\r\n\t\t\t\t\tjustLeadingPlus = true\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (digits) {\r\n\t\t\tthis.inputDigits(digits, state)\r\n\t\t}\r\n\t\treturn {\r\n\t\t\tdigits,\r\n\t\t\tjustLeadingPlus\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Inputs \"next\" phone number digits.\r\n\t * @param  {string} digits\r\n\t * @return {string} [formattedNumber] Formatted national phone number (if it can be formatted at this stage). Returning `undefined` means \"don't format the national phone number at this stage\".\r\n\t */\r\n\tinputDigits(nextDigits, state) {\r\n\t\tconst { digits } = state\r\n\t\tconst hasReceivedThreeLeadingDigits = digits.length < 3 && digits.length + nextDigits.length >= 3\r\n\r\n\t\t// Append phone number digits.\r\n\t\tstate.appendDigits(nextDigits)\r\n\r\n\t\t// Attempt to extract IDD prefix:\r\n\t\t// Some users input their phone number in international format,\r\n\t\t// but in an \"out-of-country\" dialing format instead of using the leading `+`.\r\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/185\r\n\t\t// Detect such numbers as soon as there're at least 3 digits.\r\n\t\t// Google's library attempts to extract IDD prefix at 3 digits,\r\n\t\t// so this library just copies that behavior.\r\n\t\t// I guess that's because the most commot IDD prefixes are\r\n\t\t// `00` (Europe) and `011` (US).\r\n\t\t// There exist really long IDD prefixes too:\r\n\t\t// for example, in Australia the default IDD prefix is `0011`,\r\n\t\t// and it could even be as long as `14880011`.\r\n\t\t// An IDD prefix is extracted here, and then every time when\r\n\t\t// there's a new digit and the number couldn't be formatted.\r\n\t\tif (hasReceivedThreeLeadingDigits) {\r\n\t\t\tthis.extractIddPrefix(state)\r\n\t\t}\r\n\r\n\t\tif (this.isWaitingForCountryCallingCode(state)) {\r\n\t\t\tif (!this.extractCountryCallingCode(state)) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tstate.appendNationalSignificantNumberDigits(nextDigits)\r\n\t\t}\r\n\r\n\t\t// If a phone number is being input in international format,\r\n\t\t// then it's not valid for it to have a national prefix.\r\n\t\t// Still, some people incorrectly input such numbers with a national prefix.\r\n\t\t// In such cases, only attempt to strip a national prefix if the number becomes too long.\r\n\t\t// (but that is done later, not here)\r\n\t\tif (!state.international) {\r\n\t\t\tif (!this.hasExtractedNationalSignificantNumber) {\r\n\t\t\t\tthis.extractNationalSignificantNumber(\r\n\t\t\t\t\tstate.getNationalDigits(),\r\n\t\t\t\t\t(stateUpdate) => state.update(stateUpdate)\r\n\t\t\t\t)\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tisWaitingForCountryCallingCode({ international, callingCode }) {\r\n\t\treturn international && !callingCode\r\n\t}\r\n\r\n\t// Extracts a country calling code from a number\r\n\t// being entered in internatonal format.\r\n\textractCountryCallingCode(state) {\r\n\t\tconst { countryCallingCode, number } = extractCountryCallingCode(\r\n\t\t\t'+' + state.getDigitsWithoutInternationalPrefix(),\r\n\t\t\tstate.country,\r\n\t\t\tthis.defaultCountry,\r\n\t\t\tthis.defaultCallingCode,\r\n\t\t\tthis.metadata.metadata\r\n\t\t)\r\n\t\tif (countryCallingCode) {\r\n\t\t\tstate.setCallingCode(countryCallingCode)\r\n\t\t\tstate.update({\r\n\t\t\t\tnationalSignificantNumber: number\r\n\t\t\t})\r\n\t\t\treturn true\r\n\t\t}\r\n\t}\r\n\r\n\treset(numberingPlan) {\r\n\t\tif (numberingPlan) {\r\n\t\t\tthis.hasSelectedNumberingPlan = true\r\n\t\t\tconst nationalPrefixForParsing = numberingPlan._nationalPrefixForParsing()\r\n\t\t\tthis.couldPossiblyExtractAnotherNationalSignificantNumber = nationalPrefixForParsing && COMPLEX_NATIONAL_PREFIX.test(nationalPrefixForParsing)\r\n\t\t} else {\r\n\t\t\tthis.hasSelectedNumberingPlan = undefined\r\n\t\t\tthis.couldPossiblyExtractAnotherNationalSignificantNumber = undefined\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Extracts a national (significant) number from user input.\r\n\t * Google's library is different in that it only applies `national_prefix_for_parsing`\r\n\t * and doesn't apply `national_prefix_transform_rule` after that.\r\n\t * https://github.com/google/libphonenumber/blob/a3d70b0487875475e6ad659af404943211d26456/java/libphonenumber/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java#L539\r\n\t * @return {boolean} [extracted]\r\n\t */\r\n\textractNationalSignificantNumber(nationalDigits, setState) {\r\n\t\tif (!this.hasSelectedNumberingPlan) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\tconst {\r\n\t\t\tnationalPrefix,\r\n\t\t\tnationalNumber,\r\n\t\t\tcarrierCode\r\n\t\t} = extractNationalNumberFromPossiblyIncompleteNumber(\r\n\t\t\tnationalDigits,\r\n\t\t\tthis.metadata\r\n\t\t)\r\n\t\tif (nationalNumber === nationalDigits) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\tthis.onExtractedNationalNumber(\r\n\t\t\tnationalPrefix,\r\n\t\t\tcarrierCode,\r\n\t\t\tnationalNumber,\r\n\t\t\tnationalDigits,\r\n\t\t\tsetState\r\n\t\t)\r\n\t\treturn true\r\n\t}\r\n\r\n\t/**\r\n\t * In Google's code this function is called \"attempt to extract longer NDD\".\r\n\t * \"Some national prefixes are a substring of others\", they say.\r\n\t * @return {boolean} [result] — Returns `true` if extracting a national prefix produced different results from what they were.\r\n\t */\r\n\textractAnotherNationalSignificantNumber(nationalDigits, prevNationalSignificantNumber, setState) {\r\n\t\tif (!this.hasExtractedNationalSignificantNumber) {\r\n\t\t\treturn this.extractNationalSignificantNumber(nationalDigits, setState)\r\n\t\t}\r\n\t\tif (!this.couldPossiblyExtractAnotherNationalSignificantNumber) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\tconst {\r\n\t\t\tnationalPrefix,\r\n\t\t\tnationalNumber,\r\n\t\t\tcarrierCode\r\n\t\t} = extractNationalNumberFromPossiblyIncompleteNumber(\r\n\t\t\tnationalDigits,\r\n\t\t\tthis.metadata\r\n\t\t)\r\n\t\t// If a national prefix has been extracted previously,\r\n\t\t// then it's always extracted as additional digits are added.\r\n\t\t// That's assuming `extractNationalNumberFromPossiblyIncompleteNumber()`\r\n\t\t// doesn't do anything different from what it currently does.\r\n\t\t// So, just in case, here's this check, though it doesn't occur.\r\n\t\t/* istanbul ignore if */\r\n\t\tif (nationalNumber === prevNationalSignificantNumber) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\tthis.onExtractedNationalNumber(\r\n\t\t\tnationalPrefix,\r\n\t\t\tcarrierCode,\r\n\t\t\tnationalNumber,\r\n\t\t\tnationalDigits,\r\n\t\t\tsetState\r\n\t\t)\r\n\t\treturn true\r\n\t}\r\n\r\n\tonExtractedNationalNumber(\r\n\t\tnationalPrefix,\r\n\t\tcarrierCode,\r\n\t\tnationalSignificantNumber,\r\n\t\tnationalDigits,\r\n\t\tsetState\r\n\t) {\r\n\t\t// Tells if the parsed national (significant) number is present as-is in the input string.\r\n\t\t// For example, when inputting \"0343515551212999\" Argentinian mobile number,\r\n\t\t// the parsed national (significant) number is \"93435551212999\".\r\n\t\t// There, one can see how it stripped \"0\" national prefix and prepended a \"9\",\r\n\t\t// because that's how it is instructed to do in Argentina's metadata.\r\n\t\t// So in the described example, the parsed national (significant) number is not present\r\n\t\t// as-is in the input string. Instead, it's \"modified\" in the input string.\r\n\t\t// https://gitlab.com/catamphetamine/libphonenumber-js/-/blob/master/METADATA.md#national_prefix_for_parsing--national_prefix_transform_rule\r\n\t\tlet nationalSignificantNumberIsModified = false\r\n\r\n\t\t// In some countries, a phone number could have a prefix that is not a \"national prefix\"\r\n\t\t// but rather some other type of \"utility\" prefix.\r\n\t\t// For example, when calling within Australia, one could prepend `1831` prefix to hide\r\n\t\t// caller's phone number.\r\n\t\t// https://gitlab.com/catamphetamine/libphonenumber-js/-/blob/master/METADATA.md#national_prefix_for_parsing--national_prefix_transform_rule\r\n\t\tlet prefixBeforeNationalSignificantNumberThatIsNotNationalPrefix\r\n\r\n\t\t// `nationalSignificantNumber` could be empty. In that case, `.lastIndexOf()` still works correctly.\r\n\t\tconst nationalSignificantNumberIndex = nationalDigits.lastIndexOf(nationalSignificantNumber)\r\n\r\n\t\t// If the parsed national (significant) number is the last substring of the `nationalDigits`,\r\n\t\t// then it means that it's present as-is in the input string.\r\n\t\t// In any other case, the parsed national (significant) number is \"modified\" in the input string.\r\n\t\tif (\r\n\t\t\tnationalSignificantNumberIndex < 0 ||\r\n\t\t\tnationalSignificantNumberIndex !== nationalDigits.length - nationalSignificantNumber.length\r\n\t\t) {\r\n\t\t\tnationalSignificantNumberIsModified = true\r\n\t\t} else {\r\n\t\t\tconst prefixBeforeNationalNumber = nationalDigits.slice(0, nationalSignificantNumberIndex)\r\n\t\t\t// When national (significant) number is equal to the `nationalDigits`,\r\n\t\t\t// this `onExtractedNationalNumber()` function simply doesn't get called.\r\n\t\t\t// This means that at this point, `prefixBeforeNationalNumber` is always non-empty.\r\n\t\t\t// Still, added this `if` check just to prevent potential silly bugs.\r\n\t\t\t// The `!prefixBeforeNationalNumber` case is not really testable\r\n\t\t\t// so this line is exluded from the code coverage.\r\n\t\t\t/* istanbul ignore if */\r\n\t\t\tif (prefixBeforeNationalNumber) {\r\n\t\t\t\tif (prefixBeforeNationalNumber !== nationalPrefix) {\r\n\t\t\t\t\tprefixBeforeNationalSignificantNumberThatIsNotNationalPrefix = prefixBeforeNationalNumber\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tsetState({\r\n\t\t\tnationalPrefix,\r\n\t\t\tcarrierCode,\r\n\t\t\tnationalSignificantNumber,\r\n\t\t\tnationalSignificantNumberIsModified,\r\n\t\t\tprefixBeforeNationalSignificantNumberThatIsNotNationalPrefix\r\n\t\t})\r\n\t\t// `onExtractedNationalNumber()` is only called when\r\n\t\t// the national (significant) number actually did change.\r\n\t\tthis.hasExtractedNationalSignificantNumber = true\r\n\t\tthis.onNationalSignificantNumberChange()\r\n\t}\r\n\r\n\treExtractNationalSignificantNumber(state) {\r\n\t\t// Attempt to extract a national prefix.\r\n\t\t//\r\n\t\t// Some people incorrectly input national prefix\r\n\t\t// in an international phone number.\r\n\t\t// For example, some people write British phone numbers as `+44(0)...`.\r\n\t\t//\r\n\t\t// Also, in some rare cases, it is valid for a national prefix\r\n\t\t// to be a part of an international phone number.\r\n\t\t// For example, mobile phone numbers in Mexico are supposed to be\r\n\t\t// dialled internationally using a `1` national prefix,\r\n\t\t// so the national prefix will be part of an international number.\r\n\t\t//\r\n\t\t// Quote from:\r\n\t\t// https://www.mexperience.com/dialing-cell-phones-in-mexico/\r\n\t\t//\r\n\t\t// \"Dialing a Mexican cell phone from abroad\r\n\t\t// When you are calling a cell phone number in Mexico from outside Mexico,\r\n\t\t// it’s necessary to dial an additional “1” after Mexico’s country code\r\n\t\t// (which is “52”) and before the area code.\r\n\t\t// You also ignore the 045, and simply dial the area code and the\r\n\t\t// cell phone’s number.\r\n\t\t//\r\n\t\t// If you don’t add the “1”, you’ll receive a recorded announcement\r\n\t\t// asking you to redial using it.\r\n\t\t//\r\n\t\t// For example, if you are calling from the USA to a cell phone\r\n\t\t// in Mexico City, you would dial +52 – 1 – 55 – 1234 5678.\r\n\t\t// (Note that this is different to calling a land line in Mexico City\r\n\t\t// from abroad, where the number dialed would be +52 – 55 – 1234 5678)\".\r\n\t\t//\r\n\t\t// Google's demo output:\r\n\t\t// https://libphonenumber.appspot.com/phonenumberparser?number=%2b5215512345678&country=MX\r\n\t\t//\r\n\t\tif (this.extractAnotherNationalSignificantNumber(\r\n\t\t\tstate.getNationalDigits(),\r\n\t\t\tstate.nationalSignificantNumber,\r\n\t\t\t(stateUpdate) => state.update(stateUpdate)\r\n\t\t)) {\r\n\t\t\treturn true\r\n\t\t}\r\n\t\t// If no format matches the phone number, then it could be\r\n\t\t// \"a really long IDD\" (quote from a comment in Google's library).\r\n\t\t// An IDD prefix is first extracted when the user has entered at least 3 digits,\r\n\t\t// and then here — every time when there's a new digit and the number\r\n\t\t// couldn't be formatted.\r\n\t\t// For example, in Australia the default IDD prefix is `0011`,\r\n\t\t// and it could even be as long as `14880011`.\r\n\t\t//\r\n\t\t// Could also check `!hasReceivedThreeLeadingDigits` here\r\n\t\t// to filter out the case when this check duplicates the one\r\n\t\t// already performed when there're 3 leading digits,\r\n\t\t// but it's not a big deal, and in most cases there\r\n\t\t// will be a suitable `format` when there're 3 leading digits.\r\n\t\t//\r\n\t\tif (this.extractIddPrefix(state)) {\r\n\t\t\tthis.extractCallingCodeAndNationalSignificantNumber(state)\r\n\t\t\treturn true\r\n\t\t}\r\n\t\t// Google's AsYouType formatter supports sort of an \"autocorrection\" feature\r\n\t\t// when it \"autocorrects\" numbers that have been input for a country\r\n\t\t// with that country's calling code.\r\n\t\t// Such \"autocorrection\" feature looks weird, but different people have been requesting it:\r\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/376\r\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/375\r\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/316\r\n\t\tif (this.fixMissingPlus(state)) {\r\n\t\t\tthis.extractCallingCodeAndNationalSignificantNumber(state)\r\n\t\t\treturn true\r\n\t\t}\r\n\t}\r\n\r\n\textractIddPrefix(state) {\r\n\t\t// An IDD prefix can't be present in a number written with a `+`.\r\n\t\t// Also, don't re-extract an IDD prefix if has already been extracted.\r\n\t\tconst {\r\n\t\t\tinternational,\r\n\t\t\tIDDPrefix,\r\n\t\t\tdigits,\r\n\t\t\tnationalSignificantNumber\r\n\t\t} = state\r\n\t\tif (international || IDDPrefix) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\t// Some users input their phone number in \"out-of-country\"\r\n\t\t// dialing format instead of using the leading `+`.\r\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/185\r\n\t\t// Detect such numbers.\r\n\t\tconst numberWithoutIDD = stripIddPrefix(\r\n\t\t\tdigits,\r\n\t\t\tthis.defaultCountry,\r\n\t\t\tthis.defaultCallingCode,\r\n\t\t\tthis.metadata.metadata\r\n\t\t)\r\n\t\tif (numberWithoutIDD !== undefined && numberWithoutIDD !== digits) {\r\n\t\t\t// If an IDD prefix was stripped then convert the IDD-prefixed number\r\n\t\t\t// to international number for subsequent parsing.\r\n\t\t\tstate.update({\r\n\t\t\t\tIDDPrefix: digits.slice(0, digits.length - numberWithoutIDD.length)\r\n\t\t\t})\r\n\t\t\tthis.startInternationalNumber(state, {\r\n\t\t\t\tcountry: undefined,\r\n\t\t\t\tcallingCode: undefined\r\n\t\t\t})\r\n\t\t\treturn true\r\n\t\t}\r\n\t}\r\n\r\n\tfixMissingPlus(state) {\r\n\t\tif (!state.international) {\r\n\t\t\tconst {\r\n\t\t\t\tcountryCallingCode: newCallingCode\r\n\t\t\t} = extractCountryCallingCodeFromInternationalNumberWithoutPlusSign(\r\n\t\t\t\tstate.digits,\r\n\t\t\t\tstate.country,\r\n\t\t\t\tthis.defaultCountry,\r\n\t\t\t\tthis.defaultCallingCode,\r\n\t\t\t\tthis.metadata.metadata\r\n\t\t\t)\r\n\t\t\tif (newCallingCode) {\r\n\t\t\t\tstate.update({\r\n\t\t\t\t\tmissingPlus: true\r\n\t\t\t\t})\r\n\t\t\t\tthis.startInternationalNumber(state, {\r\n\t\t\t\t\tcountry: state.country,\r\n\t\t\t\t\tcallingCode: newCallingCode\r\n\t\t\t\t})\r\n\t\t\t\treturn true\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tstartInternationalNumber(state, { country, callingCode }) {\r\n\t\tstate.startInternationalNumber(country, callingCode)\r\n\t\t// If a national (significant) number has been extracted before, reset it.\r\n\t\tif (state.nationalSignificantNumber) {\r\n\t\t\tstate.resetNationalSignificantNumber()\r\n\t\t\tthis.onNationalSignificantNumberChange()\r\n\t\t\tthis.hasExtractedNationalSignificantNumber = undefined\r\n\t\t}\r\n\t}\r\n\r\n\textractCallingCodeAndNationalSignificantNumber(state) {\r\n\t\tif (this.extractCountryCallingCode(state)) {\r\n\t\t\t// `this.extractCallingCode()` is currently called when the number\r\n\t\t\t// couldn't be formatted during the standard procedure.\r\n\t\t\t// Normally, the national prefix would be re-extracted\r\n\t\t\t// for an international number if such number couldn't be formatted,\r\n\t\t\t// but since it's already not able to be formatted,\r\n\t\t\t// there won't be yet another retry, so also extract national prefix here.\r\n\t\t\tthis.extractNationalSignificantNumber(\r\n\t\t\t\tstate.getNationalDigits(),\r\n\t\t\t\t(stateUpdate) => state.update(stateUpdate)\r\n\t\t\t)\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/**\r\n * Extracts formatted phone number from text (if there's any).\r\n * @param  {string} text\r\n * @return {string} [formattedPhoneNumber]\r\n */\r\nfunction extractFormattedPhoneNumber(text) {\r\n\t// Attempt to extract a possible number from the string passed in.\r\n\tconst startsAt = text.search(VALID_FORMATTED_PHONE_NUMBER_PART)\r\n\tif (startsAt < 0) {\r\n\t\treturn\r\n\t}\r\n\t// Trim everything to the left of the phone number.\r\n\ttext = text.slice(startsAt)\r\n\t// Trim the `+`.\r\n\tlet hasPlus\r\n\tif (text[0] === '+') {\r\n\t\thasPlus = true\r\n\t\ttext = text.slice('+'.length)\r\n\t}\r\n\t// Trim everything to the right of the phone number.\r\n\ttext = text.replace(AFTER_PHONE_NUMBER_DIGITS_END_PATTERN, '')\r\n\t// Re-add the previously trimmed `+`.\r\n\tif (hasPlus) {\r\n\t\ttext = '+' + text\r\n\t}\r\n\treturn text\r\n}\r\n\r\n/**\r\n * Extracts formatted phone number digits (and a `+`) from text (if there're any).\r\n * @param  {string} text\r\n * @return {any[]}\r\n */\r\nfunction _extractFormattedDigitsAndPlus(text) {\r\n\t// Extract a formatted phone number part from text.\r\n\tconst extractedNumber = extractFormattedPhoneNumber(text) || ''\r\n\t// Trim a `+`.\r\n\tif (extractedNumber[0] === '+') {\r\n\t\treturn [extractedNumber.slice('+'.length), true]\r\n\t}\r\n\treturn [extractedNumber]\r\n}\r\n\r\n/**\r\n * Extracts formatted phone number digits (and a `+`) from text (if there're any).\r\n * @param  {string} text\r\n * @return {any[]}\r\n */\r\nexport function extractFormattedDigitsAndPlus(text) {\r\n\tlet [formattedDigits, hasPlus] = _extractFormattedDigitsAndPlus(text)\r\n\t// If the extracted phone number part\r\n\t// can possibly be a part of some valid phone number\r\n\t// then parse phone number characters from a formatted phone number.\r\n\tif (!VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART_PATTERN.test(formattedDigits)) {\r\n\t\tformattedDigits = ''\r\n\t}\r\n\treturn [formattedDigits, hasPlus]\r\n}","import Metadata from './metadata.js'\r\nimport PhoneNumber from './PhoneNumber.js'\r\nimport AsYouTypeState from './AsYouTypeState.js'\r\nimport AsYouTypeFormatter, { DIGIT_PLACEHOLDER } from './AsYouTypeFormatter.js'\r\nimport AsYouTypeParser, { extractFormattedDigitsAndPlus } from './AsYouTypeParser.js'\r\nimport getCountryByCallingCode from './helpers/getCountryByCallingCode.js'\r\nimport getCountryByNationalNumber from './helpers/getCountryByNationalNumber.js'\r\nimport isObject from './helpers/isObject.js'\r\n\r\nconst USE_NON_GEOGRAPHIC_COUNTRY_CODE = false\r\n\r\nexport default class AsYouType {\r\n\t/**\r\n\t * @param {(string|object)?} [optionsOrDefaultCountry] - The default country used for parsing non-international phone numbers. Can also be an `options` object.\r\n\t * @param {Object} metadata\r\n\t */\r\n\tconstructor(optionsOrDefaultCountry, metadata) {\r\n\t\tthis.metadata = new Metadata(metadata)\r\n\t\tconst [defaultCountry, defaultCallingCode] = this.getCountryAndCallingCode(optionsOrDefaultCountry)\r\n\t\t// `this.defaultCountry` and `this.defaultCallingCode` aren't required to be in sync.\r\n\t\t// For example, `this.defaultCountry` could be `\"AR\"` and `this.defaultCallingCode` could be `undefined`.\r\n\t\t// So `this.defaultCountry` and `this.defaultCallingCode` are totally independent.\r\n\t\tthis.defaultCountry = defaultCountry\r\n\t\tthis.defaultCallingCode = defaultCallingCode\r\n\t\tthis.reset()\r\n\t}\r\n\r\n\tgetCountryAndCallingCode(optionsOrDefaultCountry) {\r\n\t\t// Set `defaultCountry` and `defaultCallingCode` options.\r\n\t\tlet defaultCountry\r\n\t\tlet defaultCallingCode\r\n\t\t// Turns out `null` also has type \"object\". Weird.\r\n\t\tif (optionsOrDefaultCountry) {\r\n\t\t\tif (isObject(optionsOrDefaultCountry)) {\r\n\t\t\t\tdefaultCountry = optionsOrDefaultCountry.defaultCountry\r\n\t\t\t\tdefaultCallingCode = optionsOrDefaultCountry.defaultCallingCode\r\n\t\t\t} else {\r\n\t\t\t\tdefaultCountry = optionsOrDefaultCountry\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (defaultCountry && !this.metadata.hasCountry(defaultCountry)) {\r\n\t\t\tdefaultCountry = undefined\r\n\t\t}\r\n\t\tif (defaultCallingCode) {\r\n\t\t\t/* istanbul ignore if */\r\n\t\t\tif (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\r\n\t\t\t\tif (this.metadata.isNonGeographicCallingCode(defaultCallingCode)) {\r\n\t\t\t\t\tdefaultCountry = '001'\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn [defaultCountry, defaultCallingCode]\r\n\t}\r\n\r\n\t/**\r\n\t * Inputs \"next\" phone number characters.\r\n\t * @param  {string} text\r\n\t * @return {string} Formatted phone number characters that have been input so far.\r\n\t */\r\n\tinput(text) {\r\n\t\tconst {\r\n\t\t\tdigits,\r\n\t\t\tjustLeadingPlus\r\n\t\t} = this.parser.input(text, this.state)\r\n\t\tif (justLeadingPlus) {\r\n\t\t\tthis.formattedOutput = '+'\r\n\t\t} else if (digits) {\r\n\t\t\tthis.determineTheCountryIfNeeded()\r\n\t\t\t// Match the available formats by the currently available leading digits.\r\n\t\t\tif (this.state.nationalSignificantNumber) {\r\n\t\t\t\tthis.formatter.narrowDownMatchingFormats(this.state)\r\n\t\t\t}\r\n\t\t\tlet formattedNationalNumber\r\n\t\t\tif (this.metadata.hasSelectedNumberingPlan()) {\r\n\t\t\t\tformattedNationalNumber = this.formatter.format(digits, this.state)\r\n\t\t\t}\r\n\t\t\tif (formattedNationalNumber === undefined) {\r\n\t\t\t\t// See if another national (significant) number could be re-extracted.\r\n\t\t\t\tif (this.parser.reExtractNationalSignificantNumber(this.state)) {\r\n\t\t\t\t\tthis.determineTheCountryIfNeeded()\r\n\t\t\t\t\t// If it could, then re-try formatting the new national (significant) number.\r\n\t\t\t\t\tconst nationalDigits = this.state.getNationalDigits()\r\n\t\t\t\t\tif (nationalDigits) {\r\n\t\t\t\t\t\tformattedNationalNumber = this.formatter.format(nationalDigits, this.state)\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis.formattedOutput = formattedNationalNumber\r\n\t\t\t\t? this.getFullNumber(formattedNationalNumber)\r\n\t\t\t\t: this.getNonFormattedNumber()\r\n\t\t}\r\n\t\treturn this.formattedOutput\r\n\t}\r\n\r\n\treset() {\r\n\t\tthis.state = new AsYouTypeState({\r\n\t\t\tonCountryChange: (country) => {\r\n\t\t\t\t// Before version `1.6.0`, the official `AsYouType` formatter API\r\n\t\t\t\t// included a `.country` property on an `AsYouType` instance.\r\n\t\t\t\t// Since that property (along with the others) have been moved to\r\n\t\t\t\t// `this.state`, `this.country` property is emulated for compatibility\r\n\t\t\t\t// with the old versions.\r\n\t\t\t\tthis.country = country\r\n\t\t\t},\r\n\t\t\tonCallingCodeChange: (callingCode, country) => {\r\n\t\t\t\tthis.metadata.selectNumberingPlan(country, callingCode)\r\n\t\t\t\tthis.formatter.reset(this.metadata.numberingPlan, this.state)\r\n\t\t\t\tthis.parser.reset(this.metadata.numberingPlan)\r\n\t\t\t}\r\n\t\t})\r\n\t\tthis.formatter = new AsYouTypeFormatter({\r\n\t\t\tstate: this.state,\r\n\t\t\tmetadata: this.metadata\r\n\t\t})\r\n\t\tthis.parser = new AsYouTypeParser({\r\n\t\t\tdefaultCountry: this.defaultCountry,\r\n\t\t\tdefaultCallingCode: this.defaultCallingCode,\r\n\t\t\tmetadata: this.metadata,\r\n\t\t\tstate: this.state,\r\n\t\t\tonNationalSignificantNumberChange: () => {\r\n\t\t\t\tthis.determineTheCountryIfNeeded()\r\n\t\t\t\tthis.formatter.reset(this.metadata.numberingPlan, this.state)\r\n\t\t\t}\r\n\t\t})\r\n\t\tthis.state.reset({\r\n\t\t\tcountry: this.defaultCountry,\r\n\t\t\tcallingCode: this.defaultCallingCode\r\n\t\t})\r\n\t\tthis.formattedOutput = ''\r\n\t\treturn this\r\n\t}\r\n\r\n\t/**\r\n\t * Returns `true` if the phone number is being input in international format.\r\n\t * In other words, returns `true` if and only if the parsed phone number starts with a `\"+\"`.\r\n\t * @return {boolean}\r\n\t */\r\n\tisInternational() {\r\n\t\treturn this.state.international\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the \"calling code\" part of the phone number when it's being input\r\n\t * in an international format.\r\n\t * If no valid calling code has been entered so far, returns `undefined`.\r\n\t * @return {string} [callingCode]\r\n\t */\r\n\tgetCallingCode() {\r\n\t\t // If the number is being input in national format and some \"default calling code\"\r\n\t\t // has been passed to `AsYouType` constructor, then `this.state.callingCode`\r\n\t\t // is equal to that \"default calling code\".\r\n\t\t //\r\n\t\t // If the number is being input in national format and no \"default calling code\"\r\n\t\t // has been passed to `AsYouType` constructor, then returns `undefined`,\r\n\t\t // even if a \"default country\" has been passed to `AsYouType` constructor.\r\n\t\t //\r\n\t\tif (this.isInternational()) {\r\n\t\t\treturn this.state.callingCode\r\n\t\t}\r\n\t}\r\n\r\n\t// A legacy alias.\r\n\tgetCountryCallingCode() {\r\n\t\treturn this.getCallingCode()\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a two-letter country code of the phone number.\r\n\t * Returns `undefined` for \"non-geographic\" phone numbering plans.\r\n\t * Returns `undefined` if no phone number has been input yet.\r\n\t * @return {string} [country]\r\n\t */\r\n\tgetCountry() {\r\n\t\tconst { digits } = this.state\r\n\t\t// Return `undefined` if no digits have been input yet.\r\n\t\tif (digits) {\r\n\t\t\treturn this._getCountry()\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a two-letter country code of the phone number.\r\n\t * Returns `undefined` for \"non-geographic\" phone numbering plans.\r\n\t * @return {string} [country]\r\n\t */\r\n\t_getCountry() {\r\n\t\tconst { country } = this.state\r\n\t\t/* istanbul ignore if */\r\n\t\tif (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\r\n\t\t\t// `AsYouType.getCountry()` returns `undefined`\r\n\t\t\t// for \"non-geographic\" phone numbering plans.\r\n\t\t\tif (country === '001') {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn country\r\n\t}\r\n\r\n\tdetermineTheCountryIfNeeded() {\r\n\t\t// Suppose a user enters a phone number in international format,\r\n\t\t// and there're several countries corresponding to that country calling code,\r\n\t\t// and a country has been derived from the number, and then\r\n\t\t// a user enters one more digit and the number is no longer\r\n\t\t// valid for the derived country, so the country should be re-derived\r\n\t\t// on every new digit in those cases.\r\n\t\t//\r\n\t\t// If the phone number is being input in national format,\r\n\t\t// then it could be a case when `defaultCountry` wasn't specified\r\n\t\t// when creating `AsYouType` instance, and just `defaultCallingCode` was specified,\r\n\t\t// and that \"calling code\" could correspond to a \"non-geographic entity\",\r\n\t\t// or there could be several countries corresponding to that country calling code.\r\n\t\t// In those cases, `this.country` is `undefined` and should be derived\r\n\t\t// from the number. Again, if country calling code is ambiguous, then\r\n\t\t// `this.country` should be re-derived with each new digit.\r\n\t\t//\r\n\t\tif (!this.state.country || this.isCountryCallingCodeAmbiguous()) {\r\n\t\t\tthis.determineTheCountry()\r\n\t\t}\r\n\t}\r\n\r\n\t// Prepends `+CountryCode ` in case of an international phone number\r\n\tgetFullNumber(formattedNationalNumber) {\r\n\t\tif (this.isInternational()) {\r\n\t\t\tconst prefix = (text) => this.formatter.getInternationalPrefixBeforeCountryCallingCode(this.state, {\r\n\t\t\t\tspacing: text ? true : false\r\n\t\t\t}) + text\r\n\t\t\tconst { callingCode } = this.state\r\n\t\t\tif (!callingCode) {\r\n\t\t\t\treturn prefix(`${this.state.getDigitsWithoutInternationalPrefix()}`)\r\n\t\t\t}\r\n\t\t\tif (!formattedNationalNumber) {\r\n\t\t\t\treturn prefix(callingCode)\r\n\t\t\t}\r\n\t\t\treturn prefix(`${callingCode} ${formattedNationalNumber}`)\r\n\t\t}\r\n\t\treturn formattedNationalNumber\r\n\t}\r\n\r\n\tgetNonFormattedNationalNumberWithPrefix() {\r\n\t\tconst {\r\n\t\t\tnationalSignificantNumber,\r\n\t\t\tprefixBeforeNationalSignificantNumberThatIsNotNationalPrefix,\r\n\t\t\tnationalPrefix\r\n\t\t} = this.state\r\n\t\tlet number = nationalSignificantNumber\r\n\t\tconst prefix = prefixBeforeNationalSignificantNumberThatIsNotNationalPrefix || nationalPrefix\r\n\t\tif (prefix) {\r\n\t\t\tnumber = prefix + number\r\n\t\t}\r\n\t\treturn number\r\n\t}\r\n\r\n\tgetNonFormattedNumber() {\r\n\t\tconst { nationalSignificantNumberIsModified } = this.state\r\n\t\treturn this.getFullNumber(\r\n\t\t\tnationalSignificantNumberIsModified\r\n\t\t\t\t? this.state.getNationalDigits()\r\n\t\t\t\t: this.getNonFormattedNationalNumberWithPrefix()\r\n\t\t)\r\n\t}\r\n\r\n\tgetNonFormattedTemplate() {\r\n\t\tconst number = this.getNonFormattedNumber()\r\n\t\tif (number) {\r\n\t\t\treturn number.replace(/[\\+\\d]/g, DIGIT_PLACEHOLDER)\r\n\t\t}\r\n\t}\r\n\r\n\tisCountryCallingCodeAmbiguous() {\r\n\t\tconst { callingCode } = this.state\r\n\t\tconst countryCodes = this.metadata.getCountryCodesForCallingCode(callingCode)\r\n\t\treturn countryCodes && countryCodes.length > 1\r\n\t}\r\n\r\n\t// Determines the exact country of the phone number\r\n\t// entered so far based on the country phone code\r\n\t// and the national phone number.\r\n\tdetermineTheCountry() {\r\n\t\tthis.state.setCountry(getCountryByCallingCode(\r\n\t\t\tthis.isInternational() ? this.state.callingCode : this.defaultCallingCode,\r\n\t\t\t{\r\n\t\t\t\tnationalNumber: this.state.nationalSignificantNumber,\r\n\t\t\t\tmetadata: this.metadata\r\n\t\t\t}\r\n\t\t))\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a E.164 phone number value for the user's input.\r\n\t *\r\n\t * For example, for country `\"US\"` and input `\"(222) 333-4444\"`\r\n\t * it will return `\"+12223334444\"`.\r\n\t *\r\n\t * For international phone number input, it will also auto-correct\r\n\t * some minor errors such as using a national prefix when writing\r\n\t * an international phone number. For example, if the user inputs\r\n\t * `\"+44 0 7400 000000\"` then it will return an auto-corrected\r\n\t * `\"+447400000000\"` phone number value.\r\n\t *\r\n\t * Will return `undefined` if no digits have been input,\r\n\t * or when inputting a phone number in national format and no\r\n\t * default country or default \"country calling code\" have been set.\r\n\t *\r\n\t * @return {string} [value]\r\n\t */\r\n\tgetNumberValue() {\r\n\t\tconst {\r\n\t\t\tdigits,\r\n\t\t\tcallingCode,\r\n\t\t\tcountry,\r\n\t\t\tnationalSignificantNumber\r\n\t\t} = this.state\r\n\r\n\t \t// Will return `undefined` if no digits have been input.\r\n\t\tif (!digits) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tif (this.isInternational()) {\r\n\t\t\tif (callingCode) {\r\n\t\t\t\treturn '+' + callingCode + nationalSignificantNumber\r\n\t\t\t} else {\r\n\t\t\t\treturn '+' + digits\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (country || callingCode) {\r\n\t\t\t\tconst callingCode_ = country ? this.metadata.countryCallingCode() : callingCode\r\n\t\t\t\treturn '+' + callingCode_ + nationalSignificantNumber\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns an instance of `PhoneNumber` class.\r\n\t * Will return `undefined` if no national (significant) number\r\n\t * digits have been entered so far, or if no `defaultCountry` has been\r\n\t * set and the user enters a phone number not in international format.\r\n\t */\r\n\tgetNumber() {\r\n\t\tconst {\r\n\t\t\tnationalSignificantNumber,\r\n\t\t\tcarrierCode,\r\n\t\t\tcallingCode\r\n\t\t} = this.state\r\n\r\n\t\t// `this._getCountry()` is basically same as `this.state.country`\r\n\t\t// with the only change that it return `undefined` in case of a\r\n\t\t// \"non-geographic\" numbering plan instead of `\"001\"` \"internal use\" value.\r\n\t\tlet country = this._getCountry()\r\n\r\n\t\tif (!nationalSignificantNumber) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\t// `state.country` and `state.callingCode` aren't required to be in sync.\r\n\t\t// For example, `country` could be `\"AR\"` and `callingCode` could be `undefined`.\r\n\t\t// So `country` and `callingCode` are totally independent.\r\n\r\n\t\tif (!country && !callingCode) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\t// By default, if `defaultCountry` parameter was passed when\r\n\t\t// creating `AsYouType` instance, `state.country` is gonna be\r\n\t\t// that `defaultCountry`, which doesn't entirely conform with\r\n\t\t// `parsePhoneNumber()`'s behavior where it attempts to determine\r\n\t\t// the country more precisely in cases when multiple countries\r\n\t\t// could correspond to the same `countryCallingCode`.\r\n\t\t// https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/103#note_1417192969\r\n\t\t//\r\n\t\t// Because `AsYouType.getNumber()` method is supposed to be a 1:1\r\n\t\t// equivalent for `parsePhoneNumber(AsYouType.getNumberValue())`,\r\n\t\t// then it should also behave accordingly in cases of `country` ambiguity.\r\n\t\t// That's how users of this library would expect it to behave anyway.\r\n\t\t//\r\n\t\tif (country) {\r\n\t\t\tif (country === this.defaultCountry) {\r\n\t\t\t\t// `state.country` and `state.callingCode` aren't required to be in sync.\r\n\t\t\t\t// For example, `state.country` could be `\"AR\"` and `state.callingCode` could be `undefined`.\r\n\t\t\t\t// So `state.country` and `state.callingCode` are totally independent.\r\n\t\t\t\tconst metadata = new Metadata(this.metadata.metadata)\r\n\t\t\t\tmetadata.selectNumberingPlan(country)\r\n\t\t\t\tconst callingCode = metadata.numberingPlan.callingCode()\r\n\t\t\t\tconst ambiguousCountries = this.metadata.getCountryCodesForCallingCode(callingCode)\r\n\t\t\t\tif (ambiguousCountries.length > 1) {\r\n\t\t\t\t\tconst exactCountry = getCountryByNationalNumber(nationalSignificantNumber, {\r\n\t\t\t\t\t\tcountries: ambiguousCountries,\r\n\t\t\t\t\t\tmetadata: this.metadata.metadata\r\n\t\t\t\t\t})\r\n\t\t\t\t\tif (exactCountry) {\r\n\t\t\t\t\t\tcountry = exactCountry\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst phoneNumber = new PhoneNumber(\r\n\t\t\tcountry || callingCode,\r\n\t\t\tnationalSignificantNumber,\r\n\t\t\tthis.metadata.metadata\r\n\t\t)\r\n\t\tif (carrierCode) {\r\n\t\t\tphoneNumber.carrierCode = carrierCode\r\n\t\t}\r\n\t\t// Phone number extensions are not supported by \"As You Type\" formatter.\r\n\t\treturn phoneNumber\r\n\t}\r\n\r\n\t/**\r\n\t * Returns `true` if the phone number is \"possible\".\r\n\t * Is just a shortcut for `PhoneNumber.isPossible()`.\r\n\t * @return {boolean}\r\n\t */\r\n\tisPossible() {\r\n\t\tconst phoneNumber = this.getNumber()\r\n\t\tif (!phoneNumber) {\r\n\t\t\treturn false\r\n\t\t}\r\n\t\treturn phoneNumber.isPossible()\r\n\t}\r\n\r\n\t/**\r\n\t * Returns `true` if the phone number is \"valid\".\r\n\t * Is just a shortcut for `PhoneNumber.isValid()`.\r\n\t * @return {boolean}\r\n\t */\r\n\tisValid() {\r\n\t\tconst phoneNumber = this.getNumber()\r\n\t\tif (!phoneNumber) {\r\n\t\t\treturn false\r\n\t\t}\r\n\t\treturn phoneNumber.isValid()\r\n\t}\r\n\r\n\t/**\r\n\t * @deprecated\r\n\t * This method is used in `react-phone-number-input/source/input-control.js`\r\n\t * in versions before `3.0.16`.\r\n\t */\r\n\tgetNationalNumber() {\r\n\t\treturn this.state.nationalSignificantNumber\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the phone number characters entered by the user.\r\n\t * @return {string}\r\n\t */\r\n\tgetChars() {\r\n\t\treturn (this.state.international ? '+' : '') + this.state.digits\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the template for the formatted phone number.\r\n\t * @return {string}\r\n\t */\r\n\tgetTemplate() {\r\n\t\treturn this.formatter.getTemplate(this.state) || this.getNonFormattedTemplate() || ''\r\n\t}\r\n}","export { default as PhoneNumber } from '../es6/PhoneNumber.js'\r\nexport { default as ParseError } from '../es6/ParseError.js'\r\n// `parsePhoneNumber()` named export has been renamed to `parsePhoneNumberWithError()`.\r\nexport { default as parsePhoneNumberWithError, default as parsePhoneNumber } from '../es6/parsePhoneNumberWithError.js'\r\n\r\n// `parsePhoneNumberFromString()` named export is now considered legacy:\r\n// it has been promoted to a default export due to being too verbose.\r\nexport { default as default, default as parsePhoneNumberFromString } from '../es6/parsePhoneNumber.js'\r\n\r\nexport { default as isValidPhoneNumber } from '../es6/isValidPhoneNumber.js'\r\nexport { default as isPossiblePhoneNumber } from '../es6/isPossiblePhoneNumber.js'\r\nexport { default as validatePhoneNumberLength } from '../es6/validatePhoneNumberLength.js'\r\n\r\n// Deprecated.\r\nexport { default as findNumbers } from '../es6/legacy/findNumbers.js'\r\nexport { default as searchNumbers } from '../es6/legacy/searchNumbers.js'\r\n\r\nexport { default as findPhoneNumbersInText } from '../es6/findPhoneNumbersInText.js'\r\nexport { default as searchPhoneNumbersInText } from '../es6/searchPhoneNumbersInText.js'\r\nexport { default as PhoneNumberMatcher } from '../es6/PhoneNumberMatcher.js'\r\n\r\nexport { default as AsYouType } from '../es6/AsYouType.js'\r\nexport { DIGIT_PLACEHOLDER } from '../es6/AsYouTypeFormatter.js'\r\n\r\nexport { default as getCountries } from '../es6/getCountries.js'\r\nexport { default as Metadata, isSupportedCountry, getCountryCallingCode, getExtPrefix } from '../es6/metadata.js'\r\n\r\nexport { default as getExampleNumber } from '../es6/getExampleNumber.js'\r\n\r\nexport { default as formatIncompletePhoneNumber } from '../es6/formatIncompletePhoneNumber.js'\r\nexport { default as parseIncompletePhoneNumber, parsePhoneNumberCharacter } from '../es6/parseIncompletePhoneNumber.js'\r\nexport { default as parseDigits } from '../es6/helpers/parseDigits.js'\r\n\r\nexport { parseRFC3966, formatRFC3966 } from '../es6/helpers/RFC3966.js'\r\n",null,"export const STRING_VALIDATION_PROPERTIES = [\n  'maxLength',\n  'minLength',\n  'pattern',\n  'format',\n  'enum',\n];\n\nexport const NUMBER_VALIDATION_PROPERTIES = [\n  'maximum',\n  'minimum',\n  'multipleOf',\n  'enum',\n];\n\nexport const INTEGER_VALIDATION_PROPERTIES = [\n  'maximum',\n  'minimum',\n  'multipleOf',\n  'enum',\n];\n\nexport const BOOLEAN_VALIDATION_PROPERTIES = ['enum'];\n\nconst validationPropertiesSet = new Set([\n  ...STRING_VALIDATION_PROPERTIES,\n  ...NUMBER_VALIDATION_PROPERTIES,\n  ...INTEGER_VALIDATION_PROPERTIES,\n  ...BOOLEAN_VALIDATION_PROPERTIES,\n]);\n\nexport const isSchemaValidationProperty = (keyword: string) => {\n  return validationPropertiesSet.has(keyword);\n};\n","import { ErrorType as ErrorTypes } from '@wix/ambassador-forms-v1-validation-result/types';\nimport { type ErrorObject } from 'ajv';\n\nimport { isSchemaValidationProperty } from './schema-validation-properties';\n\nexport { ErrorType as ErrorTypes } from '@wix/ambassador-forms-v1-validation-result/types';\nexport { ValidationMode } from '@wix/ambassador-forms-v1-validation-result/types';\n\nexport interface ErrorsByTarget {\n  [target: string]: ValidationError[];\n}\nexport interface ValidationResult {\n  errors: ValidationError[];\n}\n\nexport interface ValidationError {\n  errorPath: string;\n  errorType: ErrorTypes;\n  errorMessage: string;\n  params?: object;\n  useCustomErrorMessage?: boolean;\n}\n\nconst ajvErrorKeywordMap: { [key: string]: ErrorTypes } = {\n  type: ErrorTypes.TYPE_ERROR,\n  required: ErrorTypes.REQUIRED_VALUE_ERROR,\n  maxLength: ErrorTypes.MAX_LENGTH_ERROR,\n  minLength: ErrorTypes.MIN_LENGTH_ERROR,\n  pattern: ErrorTypes.PATTERN_ERROR,\n  format: ErrorTypes.FORMAT_ERROR,\n  allowedCountryCodes: ErrorTypes.NOT_ALLOWED_VALUE_ERROR,\n  countryCode: ErrorTypes.INVALID_PHONE_COUNTRY_CODE_ERROR,\n  maximum: ErrorTypes.MAX_VALUE_ERROR,\n  minimum: ErrorTypes.MIN_VALUE_ERROR,\n  multipleOf: ErrorTypes.MULTIPLE_OF_VALUE_ERROR,\n  additionalProperties: ErrorTypes.UNKNOWN_VALUE_ERROR,\n  minItems: ErrorTypes.MIN_ITEMS_ERROR,\n  maxItems: ErrorTypes.MAX_ITEMS_ERROR,\n  enum: ErrorTypes.NOT_ALLOWED_VALUE_ERROR,\n  formatMinimum: ErrorTypes.MIN_VALUE_ERROR,\n  formatMaximum: ErrorTypes.MAX_VALUE_ERROR,\n};\n\nfunction getErrorFieldId(\n  errorType: ErrorTypes,\n  ajvError: ErrorObject,\n  fieldIdMask?: string,\n): string {\n  switch (errorType) {\n    case ErrorTypes.REQUIRED_VALUE_ERROR:\n      return combineErrorPaths(\n        ajvError.instancePath,\n        ajvError.params.missingProperty,\n      );\n    case ErrorTypes.UNKNOWN_VALUE_ERROR:\n      return combineErrorPaths(\n        ajvError.instancePath,\n        ajvError.params.additionalProperty,\n      );\n    default:\n      return fieldIdMask || ajvError.instancePath.substring(1);\n  }\n}\n\nfunction combineErrorPaths(rootPath: string, property: string): string {\n  return [rootPath, property].join('/').substring(1);\n}\n\nfunction makeValidationError(\n  ajvError: ErrorObject,\n  fieldIdMask?: string,\n): ValidationError {\n  const [errorDetails] = ajvError.params?.errors || [ajvError];\n  const isCustomError =\n    ajvError.keyword === 'errorMessage' &&\n    isSchemaValidationProperty(errorDetails.keyword);\n  const errorType =\n    ajvErrorKeywordMap[errorDetails.keyword] || ErrorTypes.UNKNOWN_ERROR;\n  const fieldId = getErrorFieldId(errorType, errorDetails, fieldIdMask);\n\n  return {\n    errorPath: fieldId,\n    errorType,\n    errorMessage: ajvError.message || '',\n    params: errorDetails.params,\n    ...(isCustomError && { useCustomErrorMessage: true }),\n  };\n}\n\nexport function makeValidationErrors(\n  ajvErrors?: ErrorObject[] | null,\n  fieldIdMask?: string,\n): ValidationError[] {\n  if (!ajvErrors) {\n    return [];\n  }\n\n  return ajvErrors.map((ajvError) =>\n    makeValidationError(ajvError, fieldIdMask),\n  );\n}\n\nexport function groupErrorsByTarget(errors: ValidationError[]): ErrorsByTarget {\n  return errors.reduce<ErrorsByTarget>((byTarget, error) => {\n    const [target, ...rest] = error.errorPath.split('/');\n    if (!byTarget[target]) {\n      byTarget[target] = [];\n    }\n    byTarget[target].push({ ...error, errorPath: rest.join('/') });\n    return byTarget;\n  }, {});\n}\n","export function getDecimalPlacesCount(multipleOf: number): number {\n  return String(multipleOf).split('.')?.[1]?.length || 0;\n}\n\nexport function deserializeDate(value?: string): {\n  YEAR?: string;\n  MONTH?: string;\n  DAY?: string;\n} {\n  if (!value) {\n    return {};\n  }\n\n  const parts = value.split('-');\n\n  if (parts.length === 3) {\n    const [year, month, day] = parts;\n\n    return {\n      YEAR: year || undefined,\n      MONTH: month || undefined,\n      DAY: day || undefined,\n    };\n  }\n\n  return {};\n}\n\nexport function parseDateTimeValue(value?: string): [string, string] {\n  if (!value) {\n    return ['', ''];\n  }\n\n  const separator = value.indexOf('T') > -1 ? 'T' : ' ';\n  const [date, time] = value.split(separator);\n\n  return [date || '', time || ''];\n}\n\nexport function isTimeComplete(time?: string): boolean {\n  if (!time) {\n    return false;\n  }\n\n  const [hours, minutes] = time.split(':');\n\n  return !!hours && !!minutes;\n}\n","import type { Validation } from '@wix/ambassador-forms-v4-form/types';\n\nimport { type ValidationError } from '../submission-validation/errors';\n\nexport interface DeriveErrorOptions {\n  value?: string;\n}\n\nexport enum DateFieldErrorSuffix {\n  YEAR_MONTH = 'year-month',\n  YEAR_DAY = 'year-day',\n  MONTH_DAY = 'month-day',\n  YEAR = 'year',\n  MONTH = 'month',\n  DAY = 'day',\n}\n\nexport enum DateTimeFieldErrorSuffix {\n  YEAR_MONTH_TIME = 'year-month-time',\n  YEAR_DAY_TIME = 'year-day-time',\n  MONTH_DAY_TIME = 'month-day-time',\n  YEAR_TIME = 'year-time',\n  MONTH_TIME = 'month-time',\n  DAY_TIME = 'day-time',\n  TIME = 'time',\n}\n\nexport interface DateFieldValidationError\n  extends Omit<ValidationError, 'params'> {\n  params: {\n    suffix: DateFieldErrorSuffix;\n  };\n}\n\nexport interface DateTimeFieldValidationError\n  extends Omit<ValidationError, 'params'> {\n  params: {\n    suffix: DateTimeFieldErrorSuffix | DateFieldErrorSuffix;\n  };\n}\n\nexport function isDateFieldValidationError(\n  error?: ValidationError | DateFieldValidationError,\n): error is DateFieldValidationError {\n  return (\n    error?.params !== undefined &&\n    'suffix' in error.params &&\n    Object.values(DateFieldErrorSuffix).includes(\n      error.params.suffix as DateFieldErrorSuffix,\n    )\n  );\n}\n\nexport function isDateTimeFieldValidationError(\n  error?: ValidationError | DateTimeFieldValidationError,\n): error is DateTimeFieldValidationError {\n  return (\n    error?.params !== undefined &&\n    'suffix' in error.params &&\n    (Object.values(DateTimeFieldErrorSuffix).includes(\n      error.params.suffix as DateTimeFieldErrorSuffix,\n    ) ||\n      Object.values(DateFieldErrorSuffix).includes(\n        error.params.suffix as DateFieldErrorSuffix,\n      ))\n  );\n}\n\nexport type { Validation, ValidationError };\n","import {\n  ErrorTypes,\n  type ValidationError,\n} from '../submission-validation/errors';\n\nimport {\n  getDecimalPlacesCount,\n  deserializeDate,\n  parseDateTimeValue,\n  isTimeComplete,\n} from './helpers';\nimport type {\n  Validation,\n  DeriveErrorOptions,\n  DateFieldValidationError,\n  DateTimeFieldValidationError,\n} from './types';\nimport { DateFieldErrorSuffix, DateTimeFieldErrorSuffix } from './types';\n\ntype DeriveErrorReturn =\n  | ValidationError\n  | DateFieldValidationError\n  | DateTimeFieldValidationError\n  | undefined;\n\nexport function deriveError(\n  validation?: Validation,\n  error?: ValidationError,\n  options?: DeriveErrorOptions,\n): DeriveErrorReturn {\n  if (!error) {\n    return error;\n  }\n\n  return (\n    derivePatternError(error) ??\n    deriveCharacterLengthError(validation, error) ??\n    deriveItemsCountError(validation, error) ??\n    deriveNumericValueError(validation, error) ??\n    deriveDateFieldError(validation, error, options?.value) ??\n    deriveDateTimeFieldError(validation, error, options?.value) ??\n    error\n  );\n}\n\nexport function derivePatternError(\n  error?: ValidationError,\n): ValidationError | undefined {\n  if (!error || error.errorType !== ErrorTypes.PATTERN_ERROR) {\n    return undefined;\n  }\n\n  return {\n    ...error,\n    errorType: ErrorTypes.INVALID_VALUE_FOR_PATTERN_ERROR,\n  };\n}\n\nexport function deriveCharacterLengthError(\n  validation?: Validation,\n  error?: ValidationError,\n): ValidationError | undefined {\n  if (!error) {\n    return undefined;\n  }\n\n  const isMinMaxLengthError =\n    error.errorType === ErrorTypes.MIN_LENGTH_ERROR ||\n    error.errorType === ErrorTypes.MAX_LENGTH_ERROR;\n\n  if (!isMinMaxLengthError) {\n    return undefined;\n  }\n\n  const minLength = validation?.string?.minLength;\n  const maxLength = validation?.string?.maxLength;\n  const hasMinMax = minLength && maxLength;\n\n  if (hasMinMax && minLength === maxLength) {\n    return {\n      ...error,\n      errorType: ErrorTypes.EXACT_CHARACTER_LENGTH_ERROR,\n      errorMessage: `must have exactly ${minLength} characters`,\n    };\n  }\n\n  if (hasMinMax && minLength !== maxLength) {\n    return {\n      ...error,\n      errorType: ErrorTypes.CHARACTER_LENGTH_RANGE_ERROR,\n      errorMessage: `must have between ${minLength} and ${maxLength} characters`,\n      params: {\n        minLimit: minLength,\n        maxLimit: maxLength,\n      },\n    };\n  }\n\n  return undefined;\n}\n\nexport function deriveItemsCountError(\n  validation?: Validation,\n  error?: ValidationError,\n): ValidationError | undefined {\n  if (!error) {\n    return undefined;\n  }\n\n  const isMinMaxItemsError =\n    error.errorType === ErrorTypes.MIN_ITEMS_ERROR ||\n    error.errorType === ErrorTypes.MAX_ITEMS_ERROR;\n\n  if (!isMinMaxItemsError) {\n    return undefined;\n  }\n\n  const minItems = validation?.array?.minItems;\n  const maxItems = validation?.array?.maxItems;\n  const hasMinMax = minItems && maxItems;\n\n  if (hasMinMax && minItems === maxItems) {\n    return {\n      ...error,\n      errorType: ErrorTypes.EXACT_ITEMS_NUMBER_ERROR,\n      errorMessage: `must choose ${minItems} options`,\n    };\n  }\n\n  return undefined;\n}\n\nexport function deriveNumericValueError(\n  validation?: Validation,\n  error?: ValidationError,\n): ValidationError | undefined {\n  if (!error) {\n    return undefined;\n  }\n\n  const isMinMaxValueError =\n    error.errorType === ErrorTypes.MIN_VALUE_ERROR ||\n    error.errorType === ErrorTypes.MAX_VALUE_ERROR;\n\n  const isMultipleOfValueError =\n    error.errorType === ErrorTypes.MULTIPLE_OF_VALUE_ERROR;\n\n  if (isMinMaxValueError) {\n    const { minPrice, maxPrice } =\n      validation?.predefined?.paymentOptions?.products?.[0]\n        ?.dynamicPriceOptions ?? {};\n\n    const minimum = validation?.number?.minimum ?? minPrice;\n    const maximum = validation?.number?.maximum ?? maxPrice;\n    const hasMinMax = minimum !== undefined && maximum !== undefined;\n\n    if (hasMinMax && minimum !== maximum) {\n      return {\n        ...error,\n        errorType: ErrorTypes.VALUE_RANGE_ERROR,\n        errorMessage: `must be from ${minimum} to ${maximum}`,\n        params: {\n          minLimit: minimum,\n          maxLimit: maximum,\n        },\n      };\n    }\n  }\n\n  if (isMultipleOfValueError) {\n    const multipleOf = validation?.number?.multipleOf;\n\n    if (multipleOf) {\n      const decimalPlaces = getDecimalPlacesCount(multipleOf);\n\n      return {\n        ...error,\n        errorType: ErrorTypes.DECIMAL_POINT_ERROR,\n        errorMessage: `must have ${decimalPlaces} number(s) after the decimal point`,\n        params: {\n          number: decimalPlaces,\n        },\n      };\n    }\n  }\n\n  return undefined;\n}\n\nexport function deriveDateFieldError(\n  _validation?: Validation,\n  error?: ValidationError,\n  value?: string,\n): ValidationError | DateFieldValidationError | undefined {\n  const isFormatError = error?.errorType === ErrorTypes.FORMAT_ERROR;\n\n  if (!error || !isFormatError) {\n    return undefined;\n  }\n\n  const format = (error.params as any)?.format;\n  if (format !== 'date' && format !== 'date-time') {\n    return undefined;\n  }\n\n  const { YEAR: _YEAR, MONTH, DAY } = deserializeDate(value);\n  const YEAR = _YEAR?.length === 4;\n\n  if (!YEAR && !MONTH && !DAY) {\n    return undefined;\n  }\n\n  const withErrorSuffix = (\n    suffix: DateFieldErrorSuffix,\n  ): DateFieldValidationError => ({\n    ...error,\n    errorType: ErrorTypes.INCOMPLETE_DATE_ERROR,\n    params: {\n      suffix,\n    },\n  });\n\n  if (!YEAR && !MONTH) {\n    return withErrorSuffix(DateFieldErrorSuffix.YEAR_MONTH);\n  } else if (!YEAR && !DAY) {\n    return withErrorSuffix(DateFieldErrorSuffix.YEAR_DAY);\n  } else if (!MONTH && !DAY) {\n    return withErrorSuffix(DateFieldErrorSuffix.MONTH_DAY);\n  } else if (!YEAR) {\n    return withErrorSuffix(DateFieldErrorSuffix.YEAR);\n  } else if (!MONTH) {\n    return withErrorSuffix(DateFieldErrorSuffix.MONTH);\n  } else if (!DAY) {\n    return withErrorSuffix(DateFieldErrorSuffix.DAY);\n  } else {\n    return undefined;\n  }\n}\n\nexport function deriveDateTimeFieldError(\n  validation?: Validation,\n  error?: ValidationError,\n  value?: string,\n): ValidationError | DateTimeFieldValidationError | undefined {\n  const isFormatError = error?.errorType === ErrorTypes.FORMAT_ERROR;\n\n  if (!error || !isFormatError) {\n    return undefined;\n  }\n\n  const format = (error.params as any)?.format;\n  if (format !== 'date-time') {\n    return undefined;\n  }\n\n  const [date, time] = parseDateTimeValue(value);\n  const dateValidationError = deriveDateFieldError(validation, error, date);\n  const { YEAR, MONTH, DAY } = deserializeDate(date);\n  const timeComplete = isTimeComplete(time);\n\n  if (!timeComplete) {\n    const withErrorSuffix = (\n      suffix: DateTimeFieldErrorSuffix,\n    ): DateTimeFieldValidationError => ({\n      ...error,\n      errorType: ErrorTypes.INCOMPLETE_DATE_ERROR,\n      params: {\n        suffix,\n      },\n    });\n\n    const isDateFieldError = (\n      validationError?: ValidationError,\n    ): validationError is DateFieldValidationError => {\n      return validationError?.errorType === ErrorTypes.INCOMPLETE_DATE_ERROR;\n    };\n\n    if (isDateFieldError(dateValidationError)) {\n      switch (dateValidationError.params.suffix) {\n        case DateFieldErrorSuffix.YEAR_MONTH:\n          return withErrorSuffix(DateTimeFieldErrorSuffix.YEAR_MONTH_TIME);\n        case DateFieldErrorSuffix.YEAR_DAY:\n          return withErrorSuffix(DateTimeFieldErrorSuffix.YEAR_DAY_TIME);\n        case DateFieldErrorSuffix.MONTH_DAY:\n          return withErrorSuffix(DateTimeFieldErrorSuffix.MONTH_DAY_TIME);\n        case DateFieldErrorSuffix.YEAR:\n          return withErrorSuffix(DateTimeFieldErrorSuffix.YEAR_TIME);\n        case DateFieldErrorSuffix.MONTH:\n          return withErrorSuffix(DateTimeFieldErrorSuffix.MONTH_TIME);\n        case DateFieldErrorSuffix.DAY:\n          return withErrorSuffix(DateTimeFieldErrorSuffix.DAY_TIME);\n      }\n    }\n\n    if (YEAR || MONTH || DAY) {\n      return withErrorSuffix(DateTimeFieldErrorSuffix.TIME);\n    }\n  }\n\n  return dateValidationError;\n}\n","export {\n  deriveError,\n  derivePatternError,\n  deriveCharacterLengthError,\n  deriveItemsCountError,\n  deriveNumericValueError,\n  deriveDateFieldError,\n  deriveDateTimeFieldError,\n} from './error-derivers';\n\nexport type {\n  DeriveErrorOptions,\n  DateFieldValidationError,\n  DateTimeFieldValidationError,\n} from './types';\n\nexport {\n  DateFieldErrorSuffix,\n  DateTimeFieldErrorSuffix,\n  isDateFieldValidationError,\n  isDateTimeFieldValidationError,\n} from './types';\n","export function deepOmitEmptyData<T>(value: T): T {\n  if (Array.isArray(value)) {\n    return value.map((item) => deepOmitEmptyData(item)) as T;\n  }\n\n  if (isObject(value)) {\n    return Object.keys(value)\n      .filter((key) => {\n        const fieldValue = (value as Record<string, unknown>)[key];\n        // Filter out null/undefined values\n        if (fieldValue == null) {\n          return false;\n        }\n        // Filter out empty strings\n        if (fieldValue === '') {\n          return false;\n        }\n        // Filter out empty arrays\n        if (Array.isArray(fieldValue) && fieldValue.length === 0) {\n          return false;\n        }\n        return true;\n      })\n      .reduce(\n        (acc, key) => ({\n          ...acc,\n          [key]: deepOmitEmptyData((value as Record<string, unknown>)[key]),\n        }),\n        {} as T,\n      );\n  }\n\n  return value;\n}\n\nfunction isObject(givenValue: any): givenValue is object {\n  return (\n    typeof givenValue === 'object' &&\n    !Array.isArray(givenValue) &&\n    givenValue !== null\n  );\n}\n","// eslint-disable-next-line @typescript-eslint/no-extraneous-class\nexport abstract class _CodeOrName {\n  abstract readonly str: string\n  abstract readonly names: UsedNames\n  abstract toString(): string\n  abstract emptyStr(): boolean\n}\n\nexport const IDENTIFIER = /^[a-z$_][a-z$_0-9]*$/i\n\nexport class Name extends _CodeOrName {\n  readonly str: string\n  constructor(s: string) {\n    super()\n    if (!IDENTIFIER.test(s)) throw new Error(\"CodeGen: name must be a valid identifier\")\n    this.str = s\n  }\n\n  toString(): string {\n    return this.str\n  }\n\n  emptyStr(): boolean {\n    return false\n  }\n\n  get names(): UsedNames {\n    return {[this.str]: 1}\n  }\n}\n\nexport class _Code extends _CodeOrName {\n  readonly _items: readonly CodeItem[]\n  private _str?: string\n  private _names?: UsedNames\n\n  constructor(code: string | readonly CodeItem[]) {\n    super()\n    this._items = typeof code === \"string\" ? [code] : code\n  }\n\n  toString(): string {\n    return this.str\n  }\n\n  emptyStr(): boolean {\n    if (this._items.length > 1) return false\n    const item = this._items[0]\n    return item === \"\" || item === '\"\"'\n  }\n\n  get str(): string {\n    return (this._str ??= this._items.reduce((s: string, c: CodeItem) => `${s}${c}`, \"\"))\n  }\n\n  get names(): UsedNames {\n    return (this._names ??= this._items.reduce((names: UsedNames, c) => {\n      if (c instanceof Name) names[c.str] = (names[c.str] || 0) + 1\n      return names\n    }, {}))\n  }\n}\n\nexport type CodeItem = Name | string | number | boolean | null\n\nexport type UsedNames = Record<string, number | undefined>\n\nexport type Code = _Code | Name\n\nexport type SafeExpr = Code | number | boolean | null\n\nexport const nil = new _Code(\"\")\n\ntype CodeArg = SafeExpr | string | undefined\n\nexport function _(strs: TemplateStringsArray, ...args: CodeArg[]): _Code {\n  const code: CodeItem[] = [strs[0]]\n  let i = 0\n  while (i < args.length) {\n    addCodeArg(code, args[i])\n    code.push(strs[++i])\n  }\n  return new _Code(code)\n}\n\nconst plus = new _Code(\"+\")\n\nexport function str(strs: TemplateStringsArray, ...args: (CodeArg | string[])[]): _Code {\n  const expr: CodeItem[] = [safeStringify(strs[0])]\n  let i = 0\n  while (i < args.length) {\n    expr.push(plus)\n    addCodeArg(expr, args[i])\n    expr.push(plus, safeStringify(strs[++i]))\n  }\n  optimize(expr)\n  return new _Code(expr)\n}\n\nexport function addCodeArg(code: CodeItem[], arg: CodeArg | string[]): void {\n  if (arg instanceof _Code) code.push(...arg._items)\n  else if (arg instanceof Name) code.push(arg)\n  else code.push(interpolate(arg))\n}\n\nfunction optimize(expr: CodeItem[]): void {\n  let i = 1\n  while (i < expr.length - 1) {\n    if (expr[i] === plus) {\n      const res = mergeExprItems(expr[i - 1], expr[i + 1])\n      if (res !== undefined) {\n        expr.splice(i - 1, 3, res)\n        continue\n      }\n      expr[i++] = \"+\"\n    }\n    i++\n  }\n}\n\nfunction mergeExprItems(a: CodeItem, b: CodeItem): CodeItem | undefined {\n  if (b === '\"\"') return a\n  if (a === '\"\"') return b\n  if (typeof a == \"string\") {\n    if (b instanceof Name || a[a.length - 1] !== '\"') return\n    if (typeof b != \"string\") return `${a.slice(0, -1)}${b}\"`\n    if (b[0] === '\"') return a.slice(0, -1) + b.slice(1)\n    return\n  }\n  if (typeof b == \"string\" && b[0] === '\"' && !(a instanceof Name)) return `\"${a}${b.slice(1)}`\n  return\n}\n\nexport function strConcat(c1: Code, c2: Code): Code {\n  return c2.emptyStr() ? c1 : c1.emptyStr() ? c2 : str`${c1}${c2}`\n}\n\n// TODO do not allow arrays here\nfunction interpolate(x?: string | string[] | number | boolean | null): SafeExpr | string {\n  return typeof x == \"number\" || typeof x == \"boolean\" || x === null\n    ? x\n    : safeStringify(Array.isArray(x) ? x.join(\",\") : x)\n}\n\nexport function stringify(x: unknown): Code {\n  return new _Code(safeStringify(x))\n}\n\nexport function safeStringify(x: unknown): string {\n  return JSON.stringify(x)\n    .replace(/\\u2028/g, \"\\\\u2028\")\n    .replace(/\\u2029/g, \"\\\\u2029\")\n}\n\nexport function getProperty(key: Code | string | number): Code {\n  return typeof key == \"string\" && IDENTIFIER.test(key) ? new _Code(`.${key}`) : _`[${key}]`\n}\n\n//Does best effort to format the name properly\nexport function getEsmExportName(key: Code | string | number): Code {\n  if (typeof key == \"string\" && IDENTIFIER.test(key)) {\n    return new _Code(`${key}`)\n  }\n  throw new Error(`CodeGen: invalid export name: ${key}, use explicit $id name mapping`)\n}\n\nexport function regexpCode(rx: RegExp): Code {\n  return new _Code(rx.toString())\n}\n","import {_, nil, Code, Name} from \"./code\"\n\ninterface NameGroup {\n  prefix: string\n  index: number\n}\n\nexport interface NameValue {\n  ref: ValueReference // this is the reference to any value that can be referred to from generated code via `globals` var in the closure\n  key?: unknown // any key to identify a global to avoid duplicates, if not passed ref is used\n  code?: Code // this is the code creating the value needed for standalone code wit_out closure - can be a primitive value, function or import (`require`)\n}\n\nexport type ValueReference = unknown // possibly make CodeGen parameterized type on this type\n\nclass ValueError extends Error {\n  readonly value?: NameValue\n  constructor(name: ValueScopeName) {\n    super(`CodeGen: \"code\" for ${name} not defined`)\n    this.value = name.value\n  }\n}\n\ninterface ScopeOptions {\n  prefixes?: Set<string>\n  parent?: Scope\n}\n\ninterface ValueScopeOptions extends ScopeOptions {\n  scope: ScopeStore\n  es5?: boolean\n  lines?: boolean\n}\n\nexport type ScopeStore = Record<string, ValueReference[] | undefined>\n\ntype ScopeValues = {\n  [Prefix in string]?: Map<unknown, ValueScopeName>\n}\n\nexport type ScopeValueSets = {\n  [Prefix in string]?: Set<ValueScopeName>\n}\n\nexport enum UsedValueState {\n  Started,\n  Completed,\n}\n\nexport type UsedScopeValues = {\n  [Prefix in string]?: Map<ValueScopeName, UsedValueState | undefined>\n}\n\nexport const varKinds = {\n  const: new Name(\"const\"),\n  let: new Name(\"let\"),\n  var: new Name(\"var\"),\n}\n\nexport class Scope {\n  protected readonly _names: {[Prefix in string]?: NameGroup} = {}\n  protected readonly _prefixes?: Set<string>\n  protected readonly _parent?: Scope\n\n  constructor({prefixes, parent}: ScopeOptions = {}) {\n    this._prefixes = prefixes\n    this._parent = parent\n  }\n\n  toName(nameOrPrefix: Name | string): Name {\n    return nameOrPrefix instanceof Name ? nameOrPrefix : this.name(nameOrPrefix)\n  }\n\n  name(prefix: string): Name {\n    return new Name(this._newName(prefix))\n  }\n\n  protected _newName(prefix: string): string {\n    const ng = this._names[prefix] || this._nameGroup(prefix)\n    return `${prefix}${ng.index++}`\n  }\n\n  private _nameGroup(prefix: string): NameGroup {\n    if (this._parent?._prefixes?.has(prefix) || (this._prefixes && !this._prefixes.has(prefix))) {\n      throw new Error(`CodeGen: prefix \"${prefix}\" is not allowed in this scope`)\n    }\n    return (this._names[prefix] = {prefix, index: 0})\n  }\n}\n\ninterface ScopePath {\n  property: string\n  itemIndex: number\n}\n\nexport class ValueScopeName extends Name {\n  readonly prefix: string\n  value?: NameValue\n  scopePath?: Code\n\n  constructor(prefix: string, nameStr: string) {\n    super(nameStr)\n    this.prefix = prefix\n  }\n\n  setValue(value: NameValue, {property, itemIndex}: ScopePath): void {\n    this.value = value\n    this.scopePath = _`.${new Name(property)}[${itemIndex}]`\n  }\n}\n\ninterface VSOptions extends ValueScopeOptions {\n  _n: Code\n}\n\nconst line = _`\\n`\n\nexport class ValueScope extends Scope {\n  protected readonly _values: ScopeValues = {}\n  protected readonly _scope: ScopeStore\n  readonly opts: VSOptions\n\n  constructor(opts: ValueScopeOptions) {\n    super(opts)\n    this._scope = opts.scope\n    this.opts = {...opts, _n: opts.lines ? line : nil}\n  }\n\n  get(): ScopeStore {\n    return this._scope\n  }\n\n  name(prefix: string): ValueScopeName {\n    return new ValueScopeName(prefix, this._newName(prefix))\n  }\n\n  value(nameOrPrefix: ValueScopeName | string, value: NameValue): ValueScopeName {\n    if (value.ref === undefined) throw new Error(\"CodeGen: ref must be passed in value\")\n    const name = this.toName(nameOrPrefix) as ValueScopeName\n    const {prefix} = name\n    const valueKey = value.key ?? value.ref\n    let vs = this._values[prefix]\n    if (vs) {\n      const _name = vs.get(valueKey)\n      if (_name) return _name\n    } else {\n      vs = this._values[prefix] = new Map()\n    }\n    vs.set(valueKey, name)\n\n    const s = this._scope[prefix] || (this._scope[prefix] = [])\n    const itemIndex = s.length\n    s[itemIndex] = value.ref\n    name.setValue(value, {property: prefix, itemIndex})\n    return name\n  }\n\n  getValue(prefix: string, keyOrRef: unknown): ValueScopeName | undefined {\n    const vs = this._values[prefix]\n    if (!vs) return\n    return vs.get(keyOrRef)\n  }\n\n  scopeRefs(scopeName: Name, values: ScopeValues | ScopeValueSets = this._values): Code {\n    return this._reduceValues(values, (name: ValueScopeName) => {\n      if (name.scopePath === undefined) throw new Error(`CodeGen: name \"${name}\" has no value`)\n      return _`${scopeName}${name.scopePath}`\n    })\n  }\n\n  scopeCode(\n    values: ScopeValues | ScopeValueSets = this._values,\n    usedValues?: UsedScopeValues,\n    getCode?: (n: ValueScopeName) => Code | undefined\n  ): Code {\n    return this._reduceValues(\n      values,\n      (name: ValueScopeName) => {\n        if (name.value === undefined) throw new Error(`CodeGen: name \"${name}\" has no value`)\n        return name.value.code\n      },\n      usedValues,\n      getCode\n    )\n  }\n\n  private _reduceValues(\n    values: ScopeValues | ScopeValueSets,\n    valueCode: (n: ValueScopeName) => Code | undefined,\n    usedValues: UsedScopeValues = {},\n    getCode?: (n: ValueScopeName) => Code | undefined\n  ): Code {\n    let code: Code = nil\n    for (const prefix in values) {\n      const vs = values[prefix]\n      if (!vs) continue\n      const nameSet = (usedValues[prefix] = usedValues[prefix] || new Map())\n      vs.forEach((name: ValueScopeName) => {\n        if (nameSet.has(name)) return\n        nameSet.set(name, UsedValueState.Started)\n        let c = valueCode(name)\n        if (c) {\n          const def = this.opts.es5 ? varKinds.var : varKinds.const\n          code = _`${code}${def} ${name} = ${c};${this.opts._n}`\n        } else if ((c = getCode?.(name))) {\n          code = _`${code}${c}${this.opts._n}`\n        } else {\n          throw new ValueError(name)\n        }\n        nameSet.set(name, UsedValueState.Completed)\n      })\n    }\n    return code\n  }\n}\n","import type {ScopeValueSets, NameValue, ValueScope, ValueScopeName} from \"./scope\"\nimport {_, nil, _Code, Code, Name, UsedNames, CodeItem, addCodeArg, _CodeOrName} from \"./code\"\nimport {Scope, varKinds} from \"./scope\"\n\nexport {_, str, strConcat, nil, getProperty, stringify, regexpCode, Name, Code} from \"./code\"\nexport {Scope, ScopeStore, ValueScope, ValueScopeName, ScopeValueSets, varKinds} from \"./scope\"\n\n// type for expressions that can be safely inserted in code without quotes\nexport type SafeExpr = Code | number | boolean | null\n\n// type that is either Code of function that adds code to CodeGen instance using its methods\nexport type Block = Code | (() => void)\n\nexport const operators = {\n  GT: new _Code(\">\"),\n  GTE: new _Code(\">=\"),\n  LT: new _Code(\"<\"),\n  LTE: new _Code(\"<=\"),\n  EQ: new _Code(\"===\"),\n  NEQ: new _Code(\"!==\"),\n  NOT: new _Code(\"!\"),\n  OR: new _Code(\"||\"),\n  AND: new _Code(\"&&\"),\n  ADD: new _Code(\"+\"),\n}\n\nabstract class Node {\n  abstract readonly names: UsedNames\n\n  optimizeNodes(): this | ChildNode | ChildNode[] | undefined {\n    return this\n  }\n\n  optimizeNames(_names: UsedNames, _constants: Constants): this | undefined {\n    return this\n  }\n\n  // get count(): number {\n  //   return 1\n  // }\n}\n\nclass Def extends Node {\n  constructor(\n    private readonly varKind: Name,\n    private readonly name: Name,\n    private rhs?: SafeExpr\n  ) {\n    super()\n  }\n\n  render({es5, _n}: CGOptions): string {\n    const varKind = es5 ? varKinds.var : this.varKind\n    const rhs = this.rhs === undefined ? \"\" : ` = ${this.rhs}`\n    return `${varKind} ${this.name}${rhs};` + _n\n  }\n\n  optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n    if (!names[this.name.str]) return\n    if (this.rhs) this.rhs = optimizeExpr(this.rhs, names, constants)\n    return this\n  }\n\n  get names(): UsedNames {\n    return this.rhs instanceof _CodeOrName ? this.rhs.names : {}\n  }\n}\n\nclass Assign extends Node {\n  constructor(\n    readonly lhs: Code,\n    public rhs: SafeExpr,\n    private readonly sideEffects?: boolean\n  ) {\n    super()\n  }\n\n  render({_n}: CGOptions): string {\n    return `${this.lhs} = ${this.rhs};` + _n\n  }\n\n  optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n    if (this.lhs instanceof Name && !names[this.lhs.str] && !this.sideEffects) return\n    this.rhs = optimizeExpr(this.rhs, names, constants)\n    return this\n  }\n\n  get names(): UsedNames {\n    const names = this.lhs instanceof Name ? {} : {...this.lhs.names}\n    return addExprNames(names, this.rhs)\n  }\n}\n\nclass AssignOp extends Assign {\n  constructor(\n    lhs: Code,\n    private readonly op: Code,\n    rhs: SafeExpr,\n    sideEffects?: boolean\n  ) {\n    super(lhs, rhs, sideEffects)\n  }\n\n  render({_n}: CGOptions): string {\n    return `${this.lhs} ${this.op}= ${this.rhs};` + _n\n  }\n}\n\nclass Label extends Node {\n  readonly names: UsedNames = {}\n  constructor(readonly label: Name) {\n    super()\n  }\n\n  render({_n}: CGOptions): string {\n    return `${this.label}:` + _n\n  }\n}\n\nclass Break extends Node {\n  readonly names: UsedNames = {}\n  constructor(readonly label?: Code) {\n    super()\n  }\n\n  render({_n}: CGOptions): string {\n    const label = this.label ? ` ${this.label}` : \"\"\n    return `break${label};` + _n\n  }\n}\n\nclass Throw extends Node {\n  constructor(readonly error: Code) {\n    super()\n  }\n\n  render({_n}: CGOptions): string {\n    return `throw ${this.error};` + _n\n  }\n\n  get names(): UsedNames {\n    return this.error.names\n  }\n}\n\nclass AnyCode extends Node {\n  constructor(private code: SafeExpr) {\n    super()\n  }\n\n  render({_n}: CGOptions): string {\n    return `${this.code};` + _n\n  }\n\n  optimizeNodes(): this | undefined {\n    return `${this.code}` ? this : undefined\n  }\n\n  optimizeNames(names: UsedNames, constants: Constants): this {\n    this.code = optimizeExpr(this.code, names, constants)\n    return this\n  }\n\n  get names(): UsedNames {\n    return this.code instanceof _CodeOrName ? this.code.names : {}\n  }\n}\n\nabstract class ParentNode extends Node {\n  constructor(readonly nodes: ChildNode[] = []) {\n    super()\n  }\n\n  render(opts: CGOptions): string {\n    return this.nodes.reduce((code, n) => code + n.render(opts), \"\")\n  }\n\n  optimizeNodes(): this | ChildNode | ChildNode[] | undefined {\n    const {nodes} = this\n    let i = nodes.length\n    while (i--) {\n      const n = nodes[i].optimizeNodes()\n      if (Array.isArray(n)) nodes.splice(i, 1, ...n)\n      else if (n) nodes[i] = n\n      else nodes.splice(i, 1)\n    }\n    return nodes.length > 0 ? this : undefined\n  }\n\n  optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n    const {nodes} = this\n    let i = nodes.length\n    while (i--) {\n      // iterating backwards improves 1-pass optimization\n      const n = nodes[i]\n      if (n.optimizeNames(names, constants)) continue\n      subtractNames(names, n.names)\n      nodes.splice(i, 1)\n    }\n    return nodes.length > 0 ? this : undefined\n  }\n\n  get names(): UsedNames {\n    return this.nodes.reduce((names: UsedNames, n) => addNames(names, n.names), {})\n  }\n\n  // get count(): number {\n  //   return this.nodes.reduce((c, n) => c + n.count, 1)\n  // }\n}\n\nabstract class BlockNode extends ParentNode {\n  render(opts: CGOptions): string {\n    return \"{\" + opts._n + super.render(opts) + \"}\" + opts._n\n  }\n}\n\nclass Root extends ParentNode {}\n\nclass Else extends BlockNode {\n  static readonly kind = \"else\"\n}\n\nclass If extends BlockNode {\n  static readonly kind = \"if\"\n  else?: If | Else\n  constructor(\n    private condition: Code | boolean,\n    nodes?: ChildNode[]\n  ) {\n    super(nodes)\n  }\n\n  render(opts: CGOptions): string {\n    let code = `if(${this.condition})` + super.render(opts)\n    if (this.else) code += \"else \" + this.else.render(opts)\n    return code\n  }\n\n  optimizeNodes(): If | ChildNode[] | undefined {\n    super.optimizeNodes()\n    const cond = this.condition\n    if (cond === true) return this.nodes // else is ignored here\n    let e = this.else\n    if (e) {\n      const ns = e.optimizeNodes()\n      e = this.else = Array.isArray(ns) ? new Else(ns) : (ns as Else | undefined)\n    }\n    if (e) {\n      if (cond === false) return e instanceof If ? e : e.nodes\n      if (this.nodes.length) return this\n      return new If(not(cond), e instanceof If ? [e] : e.nodes)\n    }\n    if (cond === false || !this.nodes.length) return undefined\n    return this\n  }\n\n  optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n    this.else = this.else?.optimizeNames(names, constants)\n    if (!(super.optimizeNames(names, constants) || this.else)) return\n    this.condition = optimizeExpr(this.condition, names, constants)\n    return this\n  }\n\n  get names(): UsedNames {\n    const names = super.names\n    addExprNames(names, this.condition)\n    if (this.else) addNames(names, this.else.names)\n    return names\n  }\n\n  // get count(): number {\n  //   return super.count + (this.else?.count || 0)\n  // }\n}\n\nabstract class For extends BlockNode {\n  static readonly kind = \"for\"\n}\n\nclass ForLoop extends For {\n  constructor(private iteration: Code) {\n    super()\n  }\n\n  render(opts: CGOptions): string {\n    return `for(${this.iteration})` + super.render(opts)\n  }\n\n  optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n    if (!super.optimizeNames(names, constants)) return\n    this.iteration = optimizeExpr(this.iteration, names, constants)\n    return this\n  }\n\n  get names(): UsedNames {\n    return addNames(super.names, this.iteration.names)\n  }\n}\n\nclass ForRange extends For {\n  constructor(\n    private readonly varKind: Name,\n    private readonly name: Name,\n    private readonly from: SafeExpr,\n    private readonly to: SafeExpr\n  ) {\n    super()\n  }\n\n  render(opts: CGOptions): string {\n    const varKind = opts.es5 ? varKinds.var : this.varKind\n    const {name, from, to} = this\n    return `for(${varKind} ${name}=${from}; ${name}<${to}; ${name}++)` + super.render(opts)\n  }\n\n  get names(): UsedNames {\n    const names = addExprNames(super.names, this.from)\n    return addExprNames(names, this.to)\n  }\n}\n\nclass ForIter extends For {\n  constructor(\n    private readonly loop: \"of\" | \"in\",\n    private readonly varKind: Name,\n    private readonly name: Name,\n    private iterable: Code\n  ) {\n    super()\n  }\n\n  render(opts: CGOptions): string {\n    return `for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})` + super.render(opts)\n  }\n\n  optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n    if (!super.optimizeNames(names, constants)) return\n    this.iterable = optimizeExpr(this.iterable, names, constants)\n    return this\n  }\n\n  get names(): UsedNames {\n    return addNames(super.names, this.iterable.names)\n  }\n}\n\nclass Func extends BlockNode {\n  static readonly kind = \"func\"\n  constructor(\n    public name: Name,\n    public args: Code,\n    public async?: boolean\n  ) {\n    super()\n  }\n\n  render(opts: CGOptions): string {\n    const _async = this.async ? \"async \" : \"\"\n    return `${_async}function ${this.name}(${this.args})` + super.render(opts)\n  }\n}\n\nclass Return extends ParentNode {\n  static readonly kind = \"return\"\n\n  render(opts: CGOptions): string {\n    return \"return \" + super.render(opts)\n  }\n}\n\nclass Try extends BlockNode {\n  catch?: Catch\n  finally?: Finally\n\n  render(opts: CGOptions): string {\n    let code = \"try\" + super.render(opts)\n    if (this.catch) code += this.catch.render(opts)\n    if (this.finally) code += this.finally.render(opts)\n    return code\n  }\n\n  optimizeNodes(): this {\n    super.optimizeNodes()\n    this.catch?.optimizeNodes() as Catch | undefined\n    this.finally?.optimizeNodes() as Finally | undefined\n    return this\n  }\n\n  optimizeNames(names: UsedNames, constants: Constants): this {\n    super.optimizeNames(names, constants)\n    this.catch?.optimizeNames(names, constants)\n    this.finally?.optimizeNames(names, constants)\n    return this\n  }\n\n  get names(): UsedNames {\n    const names = super.names\n    if (this.catch) addNames(names, this.catch.names)\n    if (this.finally) addNames(names, this.finally.names)\n    return names\n  }\n\n  // get count(): number {\n  //   return super.count + (this.catch?.count || 0) + (this.finally?.count || 0)\n  // }\n}\n\nclass Catch extends BlockNode {\n  static readonly kind = \"catch\"\n  constructor(readonly error: Name) {\n    super()\n  }\n\n  render(opts: CGOptions): string {\n    return `catch(${this.error})` + super.render(opts)\n  }\n}\n\nclass Finally extends BlockNode {\n  static readonly kind = \"finally\"\n  render(opts: CGOptions): string {\n    return \"finally\" + super.render(opts)\n  }\n}\n\ntype StartBlockNode = If | For | Func | Return | Try\n\ntype LeafNode = Def | Assign | Label | Break | Throw | AnyCode\n\ntype ChildNode = StartBlockNode | LeafNode\n\ntype EndBlockNodeType =\n  | typeof If\n  | typeof Else\n  | typeof For\n  | typeof Func\n  | typeof Return\n  | typeof Catch\n  | typeof Finally\n\ntype Constants = Record<string, SafeExpr | undefined>\n\nexport interface CodeGenOptions {\n  es5?: boolean\n  lines?: boolean\n  ownProperties?: boolean\n}\n\ninterface CGOptions extends CodeGenOptions {\n  _n: \"\\n\" | \"\"\n}\n\nexport class CodeGen {\n  readonly _scope: Scope\n  readonly _extScope: ValueScope\n  readonly _values: ScopeValueSets = {}\n  private readonly _nodes: ParentNode[]\n  private readonly _blockStarts: number[] = []\n  private readonly _constants: Constants = {}\n  private readonly opts: CGOptions\n\n  constructor(extScope: ValueScope, opts: CodeGenOptions = {}) {\n    this.opts = {...opts, _n: opts.lines ? \"\\n\" : \"\"}\n    this._extScope = extScope\n    this._scope = new Scope({parent: extScope})\n    this._nodes = [new Root()]\n  }\n\n  toString(): string {\n    return this._root.render(this.opts)\n  }\n\n  // returns unique name in the internal scope\n  name(prefix: string): Name {\n    return this._scope.name(prefix)\n  }\n\n  // reserves unique name in the external scope\n  scopeName(prefix: string): ValueScopeName {\n    return this._extScope.name(prefix)\n  }\n\n  // reserves unique name in the external scope and assigns value to it\n  scopeValue(prefixOrName: ValueScopeName | string, value: NameValue): Name {\n    const name = this._extScope.value(prefixOrName, value)\n    const vs = this._values[name.prefix] || (this._values[name.prefix] = new Set())\n    vs.add(name)\n    return name\n  }\n\n  getScopeValue(prefix: string, keyOrRef: unknown): ValueScopeName | undefined {\n    return this._extScope.getValue(prefix, keyOrRef)\n  }\n\n  // return code that assigns values in the external scope to the names that are used internally\n  // (same names that were returned by gen.scopeName or gen.scopeValue)\n  scopeRefs(scopeName: Name): Code {\n    return this._extScope.scopeRefs(scopeName, this._values)\n  }\n\n  scopeCode(): Code {\n    return this._extScope.scopeCode(this._values)\n  }\n\n  private _def(\n    varKind: Name,\n    nameOrPrefix: Name | string,\n    rhs?: SafeExpr,\n    constant?: boolean\n  ): Name {\n    const name = this._scope.toName(nameOrPrefix)\n    if (rhs !== undefined && constant) this._constants[name.str] = rhs\n    this._leafNode(new Def(varKind, name, rhs))\n    return name\n  }\n\n  // `const` declaration (`var` in es5 mode)\n  const(nameOrPrefix: Name | string, rhs: SafeExpr, _constant?: boolean): Name {\n    return this._def(varKinds.const, nameOrPrefix, rhs, _constant)\n  }\n\n  // `let` declaration with optional assignment (`var` in es5 mode)\n  let(nameOrPrefix: Name | string, rhs?: SafeExpr, _constant?: boolean): Name {\n    return this._def(varKinds.let, nameOrPrefix, rhs, _constant)\n  }\n\n  // `var` declaration with optional assignment\n  var(nameOrPrefix: Name | string, rhs?: SafeExpr, _constant?: boolean): Name {\n    return this._def(varKinds.var, nameOrPrefix, rhs, _constant)\n  }\n\n  // assignment code\n  assign(lhs: Code, rhs: SafeExpr, sideEffects?: boolean): CodeGen {\n    return this._leafNode(new Assign(lhs, rhs, sideEffects))\n  }\n\n  // `+=` code\n  add(lhs: Code, rhs: SafeExpr): CodeGen {\n    return this._leafNode(new AssignOp(lhs, operators.ADD, rhs))\n  }\n\n  // appends passed SafeExpr to code or executes Block\n  code(c: Block | SafeExpr): CodeGen {\n    if (typeof c == \"function\") c()\n    else if (c !== nil) this._leafNode(new AnyCode(c))\n    return this\n  }\n\n  // returns code for object literal for the passed argument list of key-value pairs\n  object(...keyValues: [Name | string, SafeExpr | string][]): _Code {\n    const code: CodeItem[] = [\"{\"]\n    for (const [key, value] of keyValues) {\n      if (code.length > 1) code.push(\",\")\n      code.push(key)\n      if (key !== value || this.opts.es5) {\n        code.push(\":\")\n        addCodeArg(code, value)\n      }\n    }\n    code.push(\"}\")\n    return new _Code(code)\n  }\n\n  // `if` clause (or statement if `thenBody` and, optionally, `elseBody` are passed)\n  if(condition: Code | boolean, thenBody?: Block, elseBody?: Block): CodeGen {\n    this._blockNode(new If(condition))\n\n    if (thenBody && elseBody) {\n      this.code(thenBody).else().code(elseBody).endIf()\n    } else if (thenBody) {\n      this.code(thenBody).endIf()\n    } else if (elseBody) {\n      throw new Error('CodeGen: \"else\" body without \"then\" body')\n    }\n    return this\n  }\n\n  // `else if` clause - invalid without `if` or after `else` clauses\n  elseIf(condition: Code | boolean): CodeGen {\n    return this._elseNode(new If(condition))\n  }\n\n  // `else` clause - only valid after `if` or `else if` clauses\n  else(): CodeGen {\n    return this._elseNode(new Else())\n  }\n\n  // end `if` statement (needed if gen.if was used only with condition)\n  endIf(): CodeGen {\n    return this._endBlockNode(If, Else)\n  }\n\n  private _for(node: For, forBody?: Block): CodeGen {\n    this._blockNode(node)\n    if (forBody) this.code(forBody).endFor()\n    return this\n  }\n\n  // a generic `for` clause (or statement if `forBody` is passed)\n  for(iteration: Code, forBody?: Block): CodeGen {\n    return this._for(new ForLoop(iteration), forBody)\n  }\n\n  // `for` statement for a range of values\n  forRange(\n    nameOrPrefix: Name | string,\n    from: SafeExpr,\n    to: SafeExpr,\n    forBody: (index: Name) => void,\n    varKind: Code = this.opts.es5 ? varKinds.var : varKinds.let\n  ): CodeGen {\n    const name = this._scope.toName(nameOrPrefix)\n    return this._for(new ForRange(varKind, name, from, to), () => forBody(name))\n  }\n\n  // `for-of` statement (in es5 mode replace with a normal for loop)\n  forOf(\n    nameOrPrefix: Name | string,\n    iterable: Code,\n    forBody: (item: Name) => void,\n    varKind: Code = varKinds.const\n  ): CodeGen {\n    const name = this._scope.toName(nameOrPrefix)\n    if (this.opts.es5) {\n      const arr = iterable instanceof Name ? iterable : this.var(\"_arr\", iterable)\n      return this.forRange(\"_i\", 0, _`${arr}.length`, (i) => {\n        this.var(name, _`${arr}[${i}]`)\n        forBody(name)\n      })\n    }\n    return this._for(new ForIter(\"of\", varKind, name, iterable), () => forBody(name))\n  }\n\n  // `for-in` statement.\n  // With option `ownProperties` replaced with a `for-of` loop for object keys\n  forIn(\n    nameOrPrefix: Name | string,\n    obj: Code,\n    forBody: (item: Name) => void,\n    varKind: Code = this.opts.es5 ? varKinds.var : varKinds.const\n  ): CodeGen {\n    if (this.opts.ownProperties) {\n      return this.forOf(nameOrPrefix, _`Object.keys(${obj})`, forBody)\n    }\n    const name = this._scope.toName(nameOrPrefix)\n    return this._for(new ForIter(\"in\", varKind, name, obj), () => forBody(name))\n  }\n\n  // end `for` loop\n  endFor(): CodeGen {\n    return this._endBlockNode(For)\n  }\n\n  // `label` statement\n  label(label: Name): CodeGen {\n    return this._leafNode(new Label(label))\n  }\n\n  // `break` statement\n  break(label?: Code): CodeGen {\n    return this._leafNode(new Break(label))\n  }\n\n  // `return` statement\n  return(value: Block | SafeExpr): CodeGen {\n    const node = new Return()\n    this._blockNode(node)\n    this.code(value)\n    if (node.nodes.length !== 1) throw new Error('CodeGen: \"return\" should have one node')\n    return this._endBlockNode(Return)\n  }\n\n  // `try` statement\n  try(tryBody: Block, catchCode?: (e: Name) => void, finallyCode?: Block): CodeGen {\n    if (!catchCode && !finallyCode) throw new Error('CodeGen: \"try\" without \"catch\" and \"finally\"')\n    const node = new Try()\n    this._blockNode(node)\n    this.code(tryBody)\n    if (catchCode) {\n      const error = this.name(\"e\")\n      this._currNode = node.catch = new Catch(error)\n      catchCode(error)\n    }\n    if (finallyCode) {\n      this._currNode = node.finally = new Finally()\n      this.code(finallyCode)\n    }\n    return this._endBlockNode(Catch, Finally)\n  }\n\n  // `throw` statement\n  throw(error: Code): CodeGen {\n    return this._leafNode(new Throw(error))\n  }\n\n  // start self-balancing block\n  block(body?: Block, nodeCount?: number): CodeGen {\n    this._blockStarts.push(this._nodes.length)\n    if (body) this.code(body).endBlock(nodeCount)\n    return this\n  }\n\n  // end the current self-balancing block\n  endBlock(nodeCount?: number): CodeGen {\n    const len = this._blockStarts.pop()\n    if (len === undefined) throw new Error(\"CodeGen: not in self-balancing block\")\n    const toClose = this._nodes.length - len\n    if (toClose < 0 || (nodeCount !== undefined && toClose !== nodeCount)) {\n      throw new Error(`CodeGen: wrong number of nodes: ${toClose} vs ${nodeCount} expected`)\n    }\n    this._nodes.length = len\n    return this\n  }\n\n  // `function` heading (or definition if funcBody is passed)\n  func(name: Name, args: Code = nil, async?: boolean, funcBody?: Block): CodeGen {\n    this._blockNode(new Func(name, args, async))\n    if (funcBody) this.code(funcBody).endFunc()\n    return this\n  }\n\n  // end function definition\n  endFunc(): CodeGen {\n    return this._endBlockNode(Func)\n  }\n\n  optimize(n = 1): void {\n    while (n-- > 0) {\n      this._root.optimizeNodes()\n      this._root.optimizeNames(this._root.names, this._constants)\n    }\n  }\n\n  private _leafNode(node: LeafNode): CodeGen {\n    this._currNode.nodes.push(node)\n    return this\n  }\n\n  private _blockNode(node: StartBlockNode): void {\n    this._currNode.nodes.push(node)\n    this._nodes.push(node)\n  }\n\n  private _endBlockNode(N1: EndBlockNodeType, N2?: EndBlockNodeType): CodeGen {\n    const n = this._currNode\n    if (n instanceof N1 || (N2 && n instanceof N2)) {\n      this._nodes.pop()\n      return this\n    }\n    throw new Error(`CodeGen: not in block \"${N2 ? `${N1.kind}/${N2.kind}` : N1.kind}\"`)\n  }\n\n  private _elseNode(node: If | Else): CodeGen {\n    const n = this._currNode\n    if (!(n instanceof If)) {\n      throw new Error('CodeGen: \"else\" without \"if\"')\n    }\n    this._currNode = n.else = node\n    return this\n  }\n\n  private get _root(): Root {\n    return this._nodes[0] as Root\n  }\n\n  private get _currNode(): ParentNode {\n    const ns = this._nodes\n    return ns[ns.length - 1]\n  }\n\n  private set _currNode(node: ParentNode) {\n    const ns = this._nodes\n    ns[ns.length - 1] = node\n  }\n\n  // get nodeCount(): number {\n  //   return this._root.count\n  // }\n}\n\nfunction addNames(names: UsedNames, from: UsedNames): UsedNames {\n  for (const n in from) names[n] = (names[n] || 0) + (from[n] || 0)\n  return names\n}\n\nfunction addExprNames(names: UsedNames, from: SafeExpr): UsedNames {\n  return from instanceof _CodeOrName ? addNames(names, from.names) : names\n}\n\nfunction optimizeExpr<T extends SafeExpr | Code>(expr: T, names: UsedNames, constants: Constants): T\nfunction optimizeExpr(expr: SafeExpr, names: UsedNames, constants: Constants): SafeExpr {\n  if (expr instanceof Name) return replaceName(expr)\n  if (!canOptimize(expr)) return expr\n  return new _Code(\n    expr._items.reduce((items: CodeItem[], c: SafeExpr | string) => {\n      if (c instanceof Name) c = replaceName(c)\n      if (c instanceof _Code) items.push(...c._items)\n      else items.push(c)\n      return items\n    }, [])\n  )\n\n  function replaceName(n: Name): SafeExpr {\n    const c = constants[n.str]\n    if (c === undefined || names[n.str] !== 1) return n\n    delete names[n.str]\n    return c\n  }\n\n  function canOptimize(e: SafeExpr): e is _Code {\n    return (\n      e instanceof _Code &&\n      e._items.some(\n        (c) => c instanceof Name && names[c.str] === 1 && constants[c.str] !== undefined\n      )\n    )\n  }\n}\n\nfunction subtractNames(names: UsedNames, from: UsedNames): void {\n  for (const n in from) names[n] = (names[n] || 0) - (from[n] || 0)\n}\n\nexport function not<T extends Code | SafeExpr>(x: T): T\nexport function not(x: Code | SafeExpr): Code | SafeExpr {\n  return typeof x == \"boolean\" || typeof x == \"number\" || x === null ? !x : _`!${par(x)}`\n}\n\nconst andCode = mappend(operators.AND)\n\n// boolean AND (&&) expression with the passed arguments\nexport function and(...args: Code[]): Code {\n  return args.reduce(andCode)\n}\n\nconst orCode = mappend(operators.OR)\n\n// boolean OR (||) expression with the passed arguments\nexport function or(...args: Code[]): Code {\n  return args.reduce(orCode)\n}\n\ntype MAppend = (x: Code, y: Code) => Code\n\nfunction mappend(op: Code): MAppend {\n  return (x, y) => (x === nil ? y : y === nil ? x : _`${par(x)} ${op} ${par(y)}`)\n}\n\nfunction par(x: Code): Code {\n  return x instanceof Name ? x : _`(${x})`\n}\n","import type {AnySchema, EvaluatedProperties, EvaluatedItems} from \"../types\"\nimport type {SchemaCxt, SchemaObjCxt} from \".\"\nimport {_, getProperty, Code, Name, CodeGen} from \"./codegen\"\nimport {_Code} from \"./codegen/code\"\nimport type {Rule, ValidationRules} from \"./rules\"\n\n// TODO refactor to use Set\nexport function toHash<T extends string = string>(arr: T[]): {[K in T]?: true} {\n  const hash: {[K in T]?: true} = {}\n  for (const item of arr) hash[item] = true\n  return hash\n}\n\nexport function alwaysValidSchema(it: SchemaCxt, schema: AnySchema): boolean | void {\n  if (typeof schema == \"boolean\") return schema\n  if (Object.keys(schema).length === 0) return true\n  checkUnknownRules(it, schema)\n  return !schemaHasRules(schema, it.self.RULES.all)\n}\n\nexport function checkUnknownRules(it: SchemaCxt, schema: AnySchema = it.schema): void {\n  const {opts, self} = it\n  if (!opts.strictSchema) return\n  if (typeof schema === \"boolean\") return\n  const rules = self.RULES.keywords\n  for (const key in schema) {\n    if (!rules[key]) checkStrictMode(it, `unknown keyword: \"${key}\"`)\n  }\n}\n\nexport function schemaHasRules(\n  schema: AnySchema,\n  rules: {[Key in string]?: boolean | Rule}\n): boolean {\n  if (typeof schema == \"boolean\") return !schema\n  for (const key in schema) if (rules[key]) return true\n  return false\n}\n\nexport function schemaHasRulesButRef(schema: AnySchema, RULES: ValidationRules): boolean {\n  if (typeof schema == \"boolean\") return !schema\n  for (const key in schema) if (key !== \"$ref\" && RULES.all[key]) return true\n  return false\n}\n\nexport function schemaRefOrVal(\n  {topSchemaRef, schemaPath}: SchemaObjCxt,\n  schema: unknown,\n  keyword: string,\n  $data?: string | false\n): Code | number | boolean {\n  if (!$data) {\n    if (typeof schema == \"number\" || typeof schema == \"boolean\") return schema\n    if (typeof schema == \"string\") return _`${schema}`\n  }\n  return _`${topSchemaRef}${schemaPath}${getProperty(keyword)}`\n}\n\nexport function unescapeFragment(str: string): string {\n  return unescapeJsonPointer(decodeURIComponent(str))\n}\n\nexport function escapeFragment(str: string | number): string {\n  return encodeURIComponent(escapeJsonPointer(str))\n}\n\nexport function escapeJsonPointer(str: string | number): string {\n  if (typeof str == \"number\") return `${str}`\n  return str.replace(/~/g, \"~0\").replace(/\\//g, \"~1\")\n}\n\nexport function unescapeJsonPointer(str: string): string {\n  return str.replace(/~1/g, \"/\").replace(/~0/g, \"~\")\n}\n\nexport function eachItem<T>(xs: T | T[], f: (x: T) => void): void {\n  if (Array.isArray(xs)) {\n    for (const x of xs) f(x)\n  } else {\n    f(xs)\n  }\n}\n\ntype SomeEvaluated = EvaluatedProperties | EvaluatedItems\n\ntype MergeEvaluatedFunc<T extends SomeEvaluated> = (\n  gen: CodeGen,\n  from: Name | T,\n  to: Name | Exclude<T, true> | undefined,\n  toName?: typeof Name\n) => Name | T\n\ninterface MakeMergeFuncArgs<T extends SomeEvaluated> {\n  mergeNames: (gen: CodeGen, from: Name, to: Name) => void\n  mergeToName: (gen: CodeGen, from: T, to: Name) => void\n  mergeValues: (from: T, to: Exclude<T, true>) => T\n  resultToName: (gen: CodeGen, res?: T) => Name\n}\n\nfunction makeMergeEvaluated<T extends SomeEvaluated>({\n  mergeNames,\n  mergeToName,\n  mergeValues,\n  resultToName,\n}: MakeMergeFuncArgs<T>): MergeEvaluatedFunc<T> {\n  return (gen, from, to, toName) => {\n    const res =\n      to === undefined\n        ? from\n        : to instanceof Name\n        ? (from instanceof Name ? mergeNames(gen, from, to) : mergeToName(gen, from, to), to)\n        : from instanceof Name\n        ? (mergeToName(gen, to, from), from)\n        : mergeValues(from, to)\n    return toName === Name && !(res instanceof Name) ? resultToName(gen, res) : res\n  }\n}\n\ninterface MergeEvaluated {\n  props: MergeEvaluatedFunc<EvaluatedProperties>\n  items: MergeEvaluatedFunc<EvaluatedItems>\n}\n\nexport const mergeEvaluated: MergeEvaluated = {\n  props: makeMergeEvaluated({\n    mergeNames: (gen, from, to) =>\n      gen.if(_`${to} !== true && ${from} !== undefined`, () => {\n        gen.if(\n          _`${from} === true`,\n          () => gen.assign(to, true),\n          () => gen.assign(to, _`${to} || {}`).code(_`Object.assign(${to}, ${from})`)\n        )\n      }),\n    mergeToName: (gen, from, to) =>\n      gen.if(_`${to} !== true`, () => {\n        if (from === true) {\n          gen.assign(to, true)\n        } else {\n          gen.assign(to, _`${to} || {}`)\n          setEvaluated(gen, to, from)\n        }\n      }),\n    mergeValues: (from, to) => (from === true ? true : {...from, ...to}),\n    resultToName: evaluatedPropsToName,\n  }),\n  items: makeMergeEvaluated({\n    mergeNames: (gen, from, to) =>\n      gen.if(_`${to} !== true && ${from} !== undefined`, () =>\n        gen.assign(to, _`${from} === true ? true : ${to} > ${from} ? ${to} : ${from}`)\n      ),\n    mergeToName: (gen, from, to) =>\n      gen.if(_`${to} !== true`, () =>\n        gen.assign(to, from === true ? true : _`${to} > ${from} ? ${to} : ${from}`)\n      ),\n    mergeValues: (from, to) => (from === true ? true : Math.max(from, to)),\n    resultToName: (gen, items) => gen.var(\"items\", items),\n  }),\n}\n\nexport function evaluatedPropsToName(gen: CodeGen, ps?: EvaluatedProperties): Name {\n  if (ps === true) return gen.var(\"props\", true)\n  const props = gen.var(\"props\", _`{}`)\n  if (ps !== undefined) setEvaluated(gen, props, ps)\n  return props\n}\n\nexport function setEvaluated(gen: CodeGen, props: Name, ps: {[K in string]?: true}): void {\n  Object.keys(ps).forEach((p) => gen.assign(_`${props}${getProperty(p)}`, true))\n}\n\nconst snippets: {[S in string]?: _Code} = {}\n\nexport function useFunc(gen: CodeGen, f: {code: string}): Name {\n  return gen.scopeValue(\"func\", {\n    ref: f,\n    code: snippets[f.code] || (snippets[f.code] = new _Code(f.code)),\n  })\n}\n\nexport enum Type {\n  Num,\n  Str,\n}\n\nexport function getErrorPath(\n  dataProp: Name | string | number,\n  dataPropType?: Type,\n  jsPropertySyntax?: boolean\n): Code | string {\n  // let path\n  if (dataProp instanceof Name) {\n    const isNumber = dataPropType === Type.Num\n    return jsPropertySyntax\n      ? isNumber\n        ? _`\"[\" + ${dataProp} + \"]\"`\n        : _`\"['\" + ${dataProp} + \"']\"`\n      : isNumber\n      ? _`\"/\" + ${dataProp}`\n      : _`\"/\" + ${dataProp}.replace(/~/g, \"~0\").replace(/\\\\//g, \"~1\")` // TODO maybe use global escapePointer\n  }\n  return jsPropertySyntax ? getProperty(dataProp).toString() : \"/\" + escapeJsonPointer(dataProp)\n}\n\nexport function checkStrictMode(\n  it: SchemaCxt,\n  msg: string,\n  mode: boolean | \"log\" = it.opts.strictSchema\n): void {\n  if (!mode) return\n  msg = `strict mode: ${msg}`\n  if (mode === true) throw new Error(msg)\n  it.self.logger.warn(msg)\n}\n","import {Name} from \"./codegen\"\n\nconst names = {\n  // validation function arguments\n  data: new Name(\"data\"), // data passed to validation function\n  // args passed from referencing schema\n  valCxt: new Name(\"valCxt\"), // validation/data context - should not be used directly, it is destructured to the names below\n  instancePath: new Name(\"instancePath\"),\n  parentData: new Name(\"parentData\"),\n  parentDataProperty: new Name(\"parentDataProperty\"),\n  rootData: new Name(\"rootData\"), // root data - same as the data passed to the first/top validation function\n  dynamicAnchors: new Name(\"dynamicAnchors\"), // used to support recursiveRef and dynamicRef\n  // function scoped variables\n  vErrors: new Name(\"vErrors\"), // null or array of validation errors\n  errors: new Name(\"errors\"), // counter of validation errors\n  this: new Name(\"this\"),\n  // \"globals\"\n  self: new Name(\"self\"),\n  scope: new Name(\"scope\"),\n  // JTD serialize/parse name for JSON string and position\n  json: new Name(\"json\"),\n  jsonPos: new Name(\"jsonPos\"),\n  jsonLen: new Name(\"jsonLen\"),\n  jsonPart: new Name(\"jsonPart\"),\n}\n\nexport default names\n","import type {KeywordErrorCxt, KeywordErrorDefinition} from \"../types\"\nimport type {SchemaCxt} from \"./index\"\nimport {CodeGen, _, str, strConcat, Code, Name} from \"./codegen\"\nimport {SafeExpr} from \"./codegen/code\"\nimport {getErrorPath, Type} from \"./util\"\nimport N from \"./names\"\n\nexport const keywordError: KeywordErrorDefinition = {\n  message: ({keyword}) => str`must pass \"${keyword}\" keyword validation`,\n}\n\nexport const keyword$DataError: KeywordErrorDefinition = {\n  message: ({keyword, schemaType}) =>\n    schemaType\n      ? str`\"${keyword}\" keyword must be ${schemaType} ($data)`\n      : str`\"${keyword}\" keyword is invalid ($data)`,\n}\n\nexport interface ErrorPaths {\n  instancePath?: Code\n  schemaPath?: string\n  parentSchema?: boolean\n}\n\nexport function reportError(\n  cxt: KeywordErrorCxt,\n  error: KeywordErrorDefinition = keywordError,\n  errorPaths?: ErrorPaths,\n  overrideAllErrors?: boolean\n): void {\n  const {it} = cxt\n  const {gen, compositeRule, allErrors} = it\n  const errObj = errorObjectCode(cxt, error, errorPaths)\n  if (overrideAllErrors ?? (compositeRule || allErrors)) {\n    addError(gen, errObj)\n  } else {\n    returnErrors(it, _`[${errObj}]`)\n  }\n}\n\nexport function reportExtraError(\n  cxt: KeywordErrorCxt,\n  error: KeywordErrorDefinition = keywordError,\n  errorPaths?: ErrorPaths\n): void {\n  const {it} = cxt\n  const {gen, compositeRule, allErrors} = it\n  const errObj = errorObjectCode(cxt, error, errorPaths)\n  addError(gen, errObj)\n  if (!(compositeRule || allErrors)) {\n    returnErrors(it, N.vErrors)\n  }\n}\n\nexport function resetErrorsCount(gen: CodeGen, errsCount: Name): void {\n  gen.assign(N.errors, errsCount)\n  gen.if(_`${N.vErrors} !== null`, () =>\n    gen.if(\n      errsCount,\n      () => gen.assign(_`${N.vErrors}.length`, errsCount),\n      () => gen.assign(N.vErrors, null)\n    )\n  )\n}\n\nexport function extendErrors({\n  gen,\n  keyword,\n  schemaValue,\n  data,\n  errsCount,\n  it,\n}: KeywordErrorCxt): void {\n  /* istanbul ignore if */\n  if (errsCount === undefined) throw new Error(\"ajv implementation error\")\n  const err = gen.name(\"err\")\n  gen.forRange(\"i\", errsCount, N.errors, (i) => {\n    gen.const(err, _`${N.vErrors}[${i}]`)\n    gen.if(_`${err}.instancePath === undefined`, () =>\n      gen.assign(_`${err}.instancePath`, strConcat(N.instancePath, it.errorPath))\n    )\n    gen.assign(_`${err}.schemaPath`, str`${it.errSchemaPath}/${keyword}`)\n    if (it.opts.verbose) {\n      gen.assign(_`${err}.schema`, schemaValue)\n      gen.assign(_`${err}.data`, data)\n    }\n  })\n}\n\nfunction addError(gen: CodeGen, errObj: Code): void {\n  const err = gen.const(\"err\", errObj)\n  gen.if(\n    _`${N.vErrors} === null`,\n    () => gen.assign(N.vErrors, _`[${err}]`),\n    _`${N.vErrors}.push(${err})`\n  )\n  gen.code(_`${N.errors}++`)\n}\n\nfunction returnErrors(it: SchemaCxt, errs: Code): void {\n  const {gen, validateName, schemaEnv} = it\n  if (schemaEnv.$async) {\n    gen.throw(_`new ${it.ValidationError as Name}(${errs})`)\n  } else {\n    gen.assign(_`${validateName}.errors`, errs)\n    gen.return(false)\n  }\n}\n\nconst E = {\n  keyword: new Name(\"keyword\"),\n  schemaPath: new Name(\"schemaPath\"), // also used in JTD errors\n  params: new Name(\"params\"),\n  propertyName: new Name(\"propertyName\"),\n  message: new Name(\"message\"),\n  schema: new Name(\"schema\"),\n  parentSchema: new Name(\"parentSchema\"),\n}\n\nfunction errorObjectCode(\n  cxt: KeywordErrorCxt,\n  error: KeywordErrorDefinition,\n  errorPaths?: ErrorPaths\n): Code {\n  const {createErrors} = cxt.it\n  if (createErrors === false) return _`{}`\n  return errorObject(cxt, error, errorPaths)\n}\n\nfunction errorObject(\n  cxt: KeywordErrorCxt,\n  error: KeywordErrorDefinition,\n  errorPaths: ErrorPaths = {}\n): Code {\n  const {gen, it} = cxt\n  const keyValues: [Name, SafeExpr | string][] = [\n    errorInstancePath(it, errorPaths),\n    errorSchemaPath(cxt, errorPaths),\n  ]\n  extraErrorProps(cxt, error, keyValues)\n  return gen.object(...keyValues)\n}\n\nfunction errorInstancePath({errorPath}: SchemaCxt, {instancePath}: ErrorPaths): [Name, Code] {\n  const instPath = instancePath\n    ? str`${errorPath}${getErrorPath(instancePath, Type.Str)}`\n    : errorPath\n  return [N.instancePath, strConcat(N.instancePath, instPath)]\n}\n\nfunction errorSchemaPath(\n  {keyword, it: {errSchemaPath}}: KeywordErrorCxt,\n  {schemaPath, parentSchema}: ErrorPaths\n): [Name, string | Code] {\n  let schPath = parentSchema ? errSchemaPath : str`${errSchemaPath}/${keyword}`\n  if (schemaPath) {\n    schPath = str`${schPath}${getErrorPath(schemaPath, Type.Str)}`\n  }\n  return [E.schemaPath, schPath]\n}\n\nfunction extraErrorProps(\n  cxt: KeywordErrorCxt,\n  {params, message}: KeywordErrorDefinition,\n  keyValues: [Name, SafeExpr | string][]\n): void {\n  const {keyword, data, schemaValue, it} = cxt\n  const {opts, propertyName, topSchemaRef, schemaPath} = it\n  keyValues.push(\n    [E.keyword, keyword],\n    [E.params, typeof params == \"function\" ? params(cxt) : params || _`{}`]\n  )\n  if (opts.messages) {\n    keyValues.push([E.message, typeof message == \"function\" ? message(cxt) : message])\n  }\n  if (opts.verbose) {\n    keyValues.push(\n      [E.schema, schemaValue],\n      [E.parentSchema, _`${topSchemaRef}${schemaPath}`],\n      [N.data, data]\n    )\n  }\n  if (propertyName) keyValues.push([E.propertyName, propertyName])\n}\n","import type {KeywordErrorDefinition, KeywordErrorCxt} from \"../../types\"\nimport type {SchemaCxt} from \"..\"\nimport {reportError} from \"../errors\"\nimport {_, Name} from \"../codegen\"\nimport N from \"../names\"\n\nconst boolError: KeywordErrorDefinition = {\n  message: \"boolean schema is false\",\n}\n\nexport function topBoolOrEmptySchema(it: SchemaCxt): void {\n  const {gen, schema, validateName} = it\n  if (schema === false) {\n    falseSchemaError(it, false)\n  } else if (typeof schema == \"object\" && schema.$async === true) {\n    gen.return(N.data)\n  } else {\n    gen.assign(_`${validateName}.errors`, null)\n    gen.return(true)\n  }\n}\n\nexport function boolOrEmptySchema(it: SchemaCxt, valid: Name): void {\n  const {gen, schema} = it\n  if (schema === false) {\n    gen.var(valid, false) // TODO var\n    falseSchemaError(it)\n  } else {\n    gen.var(valid, true) // TODO var\n  }\n}\n\nfunction falseSchemaError(it: SchemaCxt, overrideAllErrors?: boolean): void {\n  const {gen, data} = it\n  // TODO maybe some other interface should be used for non-keyword validation errors...\n  const cxt: KeywordErrorCxt = {\n    gen,\n    keyword: \"false schema\",\n    data,\n    schema: false,\n    schemaCode: false,\n    schemaValue: false,\n    params: {},\n    it,\n  }\n  reportError(cxt, boolError, undefined, overrideAllErrors)\n}\n","import type {AddedKeywordDefinition} from \"../types\"\n\nconst _jsonTypes = [\"string\", \"number\", \"integer\", \"boolean\", \"null\", \"object\", \"array\"] as const\n\nexport type JSONType = (typeof _jsonTypes)[number]\n\nconst jsonTypes: Set<string> = new Set(_jsonTypes)\n\nexport function isJSONType(x: unknown): x is JSONType {\n  return typeof x == \"string\" && jsonTypes.has(x)\n}\n\ntype ValidationTypes = {\n  [K in JSONType]: boolean | RuleGroup | undefined\n}\n\nexport interface ValidationRules {\n  rules: RuleGroup[]\n  post: RuleGroup\n  all: {[Key in string]?: boolean | Rule} // rules that have to be validated\n  keywords: {[Key in string]?: boolean} // all known keywords (superset of \"all\")\n  types: ValidationTypes\n}\n\nexport interface RuleGroup {\n  type?: JSONType\n  rules: Rule[]\n}\n\n// This interface wraps KeywordDefinition because definition can have multiple keywords\nexport interface Rule {\n  keyword: string\n  definition: AddedKeywordDefinition\n}\n\nexport function getRules(): ValidationRules {\n  const groups: Record<\"number\" | \"string\" | \"array\" | \"object\", RuleGroup> = {\n    number: {type: \"number\", rules: []},\n    string: {type: \"string\", rules: []},\n    array: {type: \"array\", rules: []},\n    object: {type: \"object\", rules: []},\n  }\n  return {\n    types: {...groups, integer: true, boolean: true, null: true},\n    rules: [{rules: []}, groups.number, groups.string, groups.array, groups.object],\n    post: {rules: []},\n    all: {},\n    keywords: {},\n  }\n}\n","import type {AnySchemaObject} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport type {JSONType, RuleGroup, Rule} from \"../rules\"\n\nexport function schemaHasRulesForType(\n  {schema, self}: SchemaObjCxt,\n  type: JSONType\n): boolean | undefined {\n  const group = self.RULES.types[type]\n  return group && group !== true && shouldUseGroup(schema, group)\n}\n\nexport function shouldUseGroup(schema: AnySchemaObject, group: RuleGroup): boolean {\n  return group.rules.some((rule) => shouldUseRule(schema, rule))\n}\n\nexport function shouldUseRule(schema: AnySchemaObject, rule: Rule): boolean | undefined {\n  return (\n    schema[rule.keyword] !== undefined ||\n    rule.definition.implements?.some((kwd) => schema[kwd] !== undefined)\n  )\n}\n","import type {\n  KeywordErrorDefinition,\n  KeywordErrorCxt,\n  ErrorObject,\n  AnySchemaObject,\n} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport {isJSONType, JSONType} from \"../rules\"\nimport {schemaHasRulesForType} from \"./applicability\"\nimport {reportError} from \"../errors\"\nimport {_, nil, and, not, operators, Code, Name} from \"../codegen\"\nimport {toHash, schemaRefOrVal} from \"../util\"\n\nexport enum DataType {\n  Correct,\n  Wrong,\n}\n\nexport function getSchemaTypes(schema: AnySchemaObject): JSONType[] {\n  const types = getJSONTypes(schema.type)\n  const hasNull = types.includes(\"null\")\n  if (hasNull) {\n    if (schema.nullable === false) throw new Error(\"type: null contradicts nullable: false\")\n  } else {\n    if (!types.length && schema.nullable !== undefined) {\n      throw new Error('\"nullable\" cannot be used without \"type\"')\n    }\n    if (schema.nullable === true) types.push(\"null\")\n  }\n  return types\n}\n\n// eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\nexport function getJSONTypes(ts: unknown | unknown[]): JSONType[] {\n  const types: unknown[] = Array.isArray(ts) ? ts : ts ? [ts] : []\n  if (types.every(isJSONType)) return types\n  throw new Error(\"type must be JSONType or JSONType[]: \" + types.join(\",\"))\n}\n\nexport function coerceAndCheckDataType(it: SchemaObjCxt, types: JSONType[]): boolean {\n  const {gen, data, opts} = it\n  const coerceTo = coerceToTypes(types, opts.coerceTypes)\n  const checkTypes =\n    types.length > 0 &&\n    !(coerceTo.length === 0 && types.length === 1 && schemaHasRulesForType(it, types[0]))\n  if (checkTypes) {\n    const wrongType = checkDataTypes(types, data, opts.strictNumbers, DataType.Wrong)\n    gen.if(wrongType, () => {\n      if (coerceTo.length) coerceData(it, types, coerceTo)\n      else reportTypeError(it)\n    })\n  }\n  return checkTypes\n}\n\nconst COERCIBLE: Set<JSONType> = new Set([\"string\", \"number\", \"integer\", \"boolean\", \"null\"])\nfunction coerceToTypes(types: JSONType[], coerceTypes?: boolean | \"array\"): JSONType[] {\n  return coerceTypes\n    ? types.filter((t) => COERCIBLE.has(t) || (coerceTypes === \"array\" && t === \"array\"))\n    : []\n}\n\nfunction coerceData(it: SchemaObjCxt, types: JSONType[], coerceTo: JSONType[]): void {\n  const {gen, data, opts} = it\n  const dataType = gen.let(\"dataType\", _`typeof ${data}`)\n  const coerced = gen.let(\"coerced\", _`undefined`)\n  if (opts.coerceTypes === \"array\") {\n    gen.if(_`${dataType} == 'object' && Array.isArray(${data}) && ${data}.length == 1`, () =>\n      gen\n        .assign(data, _`${data}[0]`)\n        .assign(dataType, _`typeof ${data}`)\n        .if(checkDataTypes(types, data, opts.strictNumbers), () => gen.assign(coerced, data))\n    )\n  }\n  gen.if(_`${coerced} !== undefined`)\n  for (const t of coerceTo) {\n    if (COERCIBLE.has(t) || (t === \"array\" && opts.coerceTypes === \"array\")) {\n      coerceSpecificType(t)\n    }\n  }\n  gen.else()\n  reportTypeError(it)\n  gen.endIf()\n\n  gen.if(_`${coerced} !== undefined`, () => {\n    gen.assign(data, coerced)\n    assignParentData(it, coerced)\n  })\n\n  function coerceSpecificType(t: string): void {\n    switch (t) {\n      case \"string\":\n        gen\n          .elseIf(_`${dataType} == \"number\" || ${dataType} == \"boolean\"`)\n          .assign(coerced, _`\"\" + ${data}`)\n          .elseIf(_`${data} === null`)\n          .assign(coerced, _`\"\"`)\n        return\n      case \"number\":\n        gen\n          .elseIf(\n            _`${dataType} == \"boolean\" || ${data} === null\n              || (${dataType} == \"string\" && ${data} && ${data} == +${data})`\n          )\n          .assign(coerced, _`+${data}`)\n        return\n      case \"integer\":\n        gen\n          .elseIf(\n            _`${dataType} === \"boolean\" || ${data} === null\n              || (${dataType} === \"string\" && ${data} && ${data} == +${data} && !(${data} % 1))`\n          )\n          .assign(coerced, _`+${data}`)\n        return\n      case \"boolean\":\n        gen\n          .elseIf(_`${data} === \"false\" || ${data} === 0 || ${data} === null`)\n          .assign(coerced, false)\n          .elseIf(_`${data} === \"true\" || ${data} === 1`)\n          .assign(coerced, true)\n        return\n      case \"null\":\n        gen.elseIf(_`${data} === \"\" || ${data} === 0 || ${data} === false`)\n        gen.assign(coerced, null)\n        return\n\n      case \"array\":\n        gen\n          .elseIf(\n            _`${dataType} === \"string\" || ${dataType} === \"number\"\n              || ${dataType} === \"boolean\" || ${data} === null`\n          )\n          .assign(coerced, _`[${data}]`)\n    }\n  }\n}\n\nfunction assignParentData({gen, parentData, parentDataProperty}: SchemaObjCxt, expr: Name): void {\n  // TODO use gen.property\n  gen.if(_`${parentData} !== undefined`, () =>\n    gen.assign(_`${parentData}[${parentDataProperty}]`, expr)\n  )\n}\n\nexport function checkDataType(\n  dataType: JSONType,\n  data: Name,\n  strictNums?: boolean | \"log\",\n  correct = DataType.Correct\n): Code {\n  const EQ = correct === DataType.Correct ? operators.EQ : operators.NEQ\n  let cond: Code\n  switch (dataType) {\n    case \"null\":\n      return _`${data} ${EQ} null`\n    case \"array\":\n      cond = _`Array.isArray(${data})`\n      break\n    case \"object\":\n      cond = _`${data} && typeof ${data} == \"object\" && !Array.isArray(${data})`\n      break\n    case \"integer\":\n      cond = numCond(_`!(${data} % 1) && !isNaN(${data})`)\n      break\n    case \"number\":\n      cond = numCond()\n      break\n    default:\n      return _`typeof ${data} ${EQ} ${dataType}`\n  }\n  return correct === DataType.Correct ? cond : not(cond)\n\n  function numCond(_cond: Code = nil): Code {\n    return and(_`typeof ${data} == \"number\"`, _cond, strictNums ? _`isFinite(${data})` : nil)\n  }\n}\n\nexport function checkDataTypes(\n  dataTypes: JSONType[],\n  data: Name,\n  strictNums?: boolean | \"log\",\n  correct?: DataType\n): Code {\n  if (dataTypes.length === 1) {\n    return checkDataType(dataTypes[0], data, strictNums, correct)\n  }\n  let cond: Code\n  const types = toHash(dataTypes)\n  if (types.array && types.object) {\n    const notObj = _`typeof ${data} != \"object\"`\n    cond = types.null ? notObj : _`!${data} || ${notObj}`\n    delete types.null\n    delete types.array\n    delete types.object\n  } else {\n    cond = nil\n  }\n  if (types.number) delete types.integer\n  for (const t in types) cond = and(cond, checkDataType(t as JSONType, data, strictNums, correct))\n  return cond\n}\n\nexport type TypeError = ErrorObject<\"type\", {type: string}>\n\nconst typeError: KeywordErrorDefinition = {\n  message: ({schema}) => `must be ${schema}`,\n  params: ({schema, schemaValue}) =>\n    typeof schema == \"string\" ? _`{type: ${schema}}` : _`{type: ${schemaValue}}`,\n}\n\nexport function reportTypeError(it: SchemaObjCxt): void {\n  const cxt = getTypeErrorContext(it)\n  reportError(cxt, typeError)\n}\n\nfunction getTypeErrorContext(it: SchemaObjCxt): KeywordErrorCxt {\n  const {gen, data, schema} = it\n  const schemaCode = schemaRefOrVal(it, schema, \"type\")\n  return {\n    gen,\n    keyword: \"type\",\n    data,\n    schema: schema.type,\n    schemaCode,\n    schemaValue: schemaCode,\n    parentSchema: schema,\n    params: {},\n    it,\n  }\n}\n","import type {SchemaObjCxt} from \"..\"\nimport {_, getProperty, stringify} from \"../codegen\"\nimport {checkStrictMode} from \"../util\"\n\nexport function assignDefaults(it: SchemaObjCxt, ty?: string): void {\n  const {properties, items} = it.schema\n  if (ty === \"object\" && properties) {\n    for (const key in properties) {\n      assignDefault(it, key, properties[key].default)\n    }\n  } else if (ty === \"array\" && Array.isArray(items)) {\n    items.forEach((sch, i: number) => assignDefault(it, i, sch.default))\n  }\n}\n\nfunction assignDefault(it: SchemaObjCxt, prop: string | number, defaultValue: unknown): void {\n  const {gen, compositeRule, data, opts} = it\n  if (defaultValue === undefined) return\n  const childData = _`${data}${getProperty(prop)}`\n  if (compositeRule) {\n    checkStrictMode(it, `default is ignored for: ${childData}`)\n    return\n  }\n\n  let condition = _`${childData} === undefined`\n  if (opts.useDefaults === \"empty\") {\n    condition = _`${condition} || ${childData} === null || ${childData} === \"\"`\n  }\n  // `${childData} === undefined` +\n  // (opts.useDefaults === \"empty\" ? ` || ${childData} === null || ${childData} === \"\"` : \"\")\n  gen.if(condition, _`${childData} = ${stringify(defaultValue)}`)\n}\n","import type {AnySchema, SchemaMap} from \"../types\"\nimport type {SchemaCxt} from \"../compile\"\nimport type {KeywordCxt} from \"../compile/validate\"\nimport {CodeGen, _, and, or, not, nil, strConcat, getProperty, Code, Name} from \"../compile/codegen\"\nimport {alwaysValidSchema, Type} from \"../compile/util\"\nimport N from \"../compile/names\"\nimport {useFunc} from \"../compile/util\"\nexport function checkReportMissingProp(cxt: KeywordCxt, prop: string): void {\n  const {gen, data, it} = cxt\n  gen.if(noPropertyInData(gen, data, prop, it.opts.ownProperties), () => {\n    cxt.setParams({missingProperty: _`${prop}`}, true)\n    cxt.error()\n  })\n}\n\nexport function checkMissingProp(\n  {gen, data, it: {opts}}: KeywordCxt,\n  properties: string[],\n  missing: Name\n): Code {\n  return or(\n    ...properties.map((prop) =>\n      and(noPropertyInData(gen, data, prop, opts.ownProperties), _`${missing} = ${prop}`)\n    )\n  )\n}\n\nexport function reportMissingProp(cxt: KeywordCxt, missing: Name): void {\n  cxt.setParams({missingProperty: missing}, true)\n  cxt.error()\n}\n\nexport function hasPropFunc(gen: CodeGen): Name {\n  return gen.scopeValue(\"func\", {\n    // eslint-disable-next-line @typescript-eslint/unbound-method\n    ref: Object.prototype.hasOwnProperty,\n    code: _`Object.prototype.hasOwnProperty`,\n  })\n}\n\nexport function isOwnProperty(gen: CodeGen, data: Name, property: Name | string): Code {\n  return _`${hasPropFunc(gen)}.call(${data}, ${property})`\n}\n\nexport function propertyInData(\n  gen: CodeGen,\n  data: Name,\n  property: Name | string,\n  ownProperties?: boolean\n): Code {\n  const cond = _`${data}${getProperty(property)} !== undefined`\n  return ownProperties ? _`${cond} && ${isOwnProperty(gen, data, property)}` : cond\n}\n\nexport function noPropertyInData(\n  gen: CodeGen,\n  data: Name,\n  property: Name | string,\n  ownProperties?: boolean\n): Code {\n  const cond = _`${data}${getProperty(property)} === undefined`\n  return ownProperties ? or(cond, not(isOwnProperty(gen, data, property))) : cond\n}\n\nexport function allSchemaProperties(schemaMap?: SchemaMap): string[] {\n  return schemaMap ? Object.keys(schemaMap).filter((p) => p !== \"__proto__\") : []\n}\n\nexport function schemaProperties(it: SchemaCxt, schemaMap: SchemaMap): string[] {\n  return allSchemaProperties(schemaMap).filter(\n    (p) => !alwaysValidSchema(it, schemaMap[p] as AnySchema)\n  )\n}\n\nexport function callValidateCode(\n  {schemaCode, data, it: {gen, topSchemaRef, schemaPath, errorPath}, it}: KeywordCxt,\n  func: Code,\n  context: Code,\n  passSchema?: boolean\n): Code {\n  const dataAndSchema = passSchema ? _`${schemaCode}, ${data}, ${topSchemaRef}${schemaPath}` : data\n  const valCxt: [Name, Code | number][] = [\n    [N.instancePath, strConcat(N.instancePath, errorPath)],\n    [N.parentData, it.parentData],\n    [N.parentDataProperty, it.parentDataProperty],\n    [N.rootData, N.rootData],\n  ]\n  if (it.opts.dynamicRef) valCxt.push([N.dynamicAnchors, N.dynamicAnchors])\n  const args = _`${dataAndSchema}, ${gen.object(...valCxt)}`\n  return context !== nil ? _`${func}.call(${context}, ${args})` : _`${func}(${args})`\n}\n\nconst newRegExp = _`new RegExp`\n\nexport function usePattern({gen, it: {opts}}: KeywordCxt, pattern: string): Name {\n  const u = opts.unicodeRegExp ? \"u\" : \"\"\n  const {regExp} = opts.code\n  const rx = regExp(pattern, u)\n\n  return gen.scopeValue(\"pattern\", {\n    key: rx.toString(),\n    ref: rx,\n    code: _`${regExp.code === \"new RegExp\" ? newRegExp : useFunc(gen, regExp)}(${pattern}, ${u})`,\n  })\n}\n\nexport function validateArray(cxt: KeywordCxt): Name {\n  const {gen, data, keyword, it} = cxt\n  const valid = gen.name(\"valid\")\n  if (it.allErrors) {\n    const validArr = gen.let(\"valid\", true)\n    validateItems(() => gen.assign(validArr, false))\n    return validArr\n  }\n  gen.var(valid, true)\n  validateItems(() => gen.break())\n  return valid\n\n  function validateItems(notValid: () => void): void {\n    const len = gen.const(\"len\", _`${data}.length`)\n    gen.forRange(\"i\", 0, len, (i) => {\n      cxt.subschema(\n        {\n          keyword,\n          dataProp: i,\n          dataPropType: Type.Num,\n        },\n        valid\n      )\n      gen.if(not(valid), notValid)\n    })\n  }\n}\n\nexport function validateUnion(cxt: KeywordCxt): void {\n  const {gen, schema, keyword, it} = cxt\n  /* istanbul ignore if */\n  if (!Array.isArray(schema)) throw new Error(\"ajv implementation error\")\n  const alwaysValid = schema.some((sch: AnySchema) => alwaysValidSchema(it, sch))\n  if (alwaysValid && !it.opts.unevaluated) return\n\n  const valid = gen.let(\"valid\", false)\n  const schValid = gen.name(\"_valid\")\n\n  gen.block(() =>\n    schema.forEach((_sch: AnySchema, i: number) => {\n      const schCxt = cxt.subschema(\n        {\n          keyword,\n          schemaProp: i,\n          compositeRule: true,\n        },\n        schValid\n      )\n      gen.assign(valid, _`${valid} || ${schValid}`)\n      const merged = cxt.mergeValidEvaluated(schCxt, schValid)\n      // can short-circuit if `unevaluatedProperties/Items` not supported (opts.unevaluated !== true)\n      // or if all properties and items were evaluated (it.props === true && it.items === true)\n      if (!merged) gen.if(not(valid))\n    })\n  )\n\n  cxt.result(\n    valid,\n    () => cxt.reset(),\n    () => cxt.error(true)\n  )\n}\n","import type {KeywordCxt} from \".\"\nimport type {\n  AnySchema,\n  SchemaValidateFunction,\n  AnyValidateFunction,\n  AddedKeywordDefinition,\n  MacroKeywordDefinition,\n  FuncKeywordDefinition,\n} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport {_, nil, not, stringify, Code, Name, CodeGen} from \"../codegen\"\nimport N from \"../names\"\nimport type {JSONType} from \"../rules\"\nimport {callValidateCode} from \"../../vocabularies/code\"\nimport {extendErrors} from \"../errors\"\n\ntype KeywordCompilationResult = AnySchema | SchemaValidateFunction | AnyValidateFunction\n\nexport function macroKeywordCode(cxt: KeywordCxt, def: MacroKeywordDefinition): void {\n  const {gen, keyword, schema, parentSchema, it} = cxt\n  const macroSchema = def.macro.call(it.self, schema, parentSchema, it)\n  const schemaRef = useKeyword(gen, keyword, macroSchema)\n  if (it.opts.validateSchema !== false) it.self.validateSchema(macroSchema, true)\n\n  const valid = gen.name(\"valid\")\n  cxt.subschema(\n    {\n      schema: macroSchema,\n      schemaPath: nil,\n      errSchemaPath: `${it.errSchemaPath}/${keyword}`,\n      topSchemaRef: schemaRef,\n      compositeRule: true,\n    },\n    valid\n  )\n  cxt.pass(valid, () => cxt.error(true))\n}\n\nexport function funcKeywordCode(cxt: KeywordCxt, def: FuncKeywordDefinition): void {\n  const {gen, keyword, schema, parentSchema, $data, it} = cxt\n  checkAsyncKeyword(it, def)\n  const validate =\n    !$data && def.compile ? def.compile.call(it.self, schema, parentSchema, it) : def.validate\n  const validateRef = useKeyword(gen, keyword, validate)\n  const valid = gen.let(\"valid\")\n  cxt.block$data(valid, validateKeyword)\n  cxt.ok(def.valid ?? valid)\n\n  function validateKeyword(): void {\n    if (def.errors === false) {\n      assignValid()\n      if (def.modifying) modifyData(cxt)\n      reportErrs(() => cxt.error())\n    } else {\n      const ruleErrs = def.async ? validateAsync() : validateSync()\n      if (def.modifying) modifyData(cxt)\n      reportErrs(() => addErrs(cxt, ruleErrs))\n    }\n  }\n\n  function validateAsync(): Name {\n    const ruleErrs = gen.let(\"ruleErrs\", null)\n    gen.try(\n      () => assignValid(_`await `),\n      (e) =>\n        gen.assign(valid, false).if(\n          _`${e} instanceof ${it.ValidationError as Name}`,\n          () => gen.assign(ruleErrs, _`${e}.errors`),\n          () => gen.throw(e)\n        )\n    )\n    return ruleErrs\n  }\n\n  function validateSync(): Code {\n    const validateErrs = _`${validateRef}.errors`\n    gen.assign(validateErrs, null)\n    assignValid(nil)\n    return validateErrs\n  }\n\n  function assignValid(_await: Code = def.async ? _`await ` : nil): void {\n    const passCxt = it.opts.passContext ? N.this : N.self\n    const passSchema = !((\"compile\" in def && !$data) || def.schema === false)\n    gen.assign(\n      valid,\n      _`${_await}${callValidateCode(cxt, validateRef, passCxt, passSchema)}`,\n      def.modifying\n    )\n  }\n\n  function reportErrs(errors: () => void): void {\n    gen.if(not(def.valid ?? valid), errors)\n  }\n}\n\nfunction modifyData(cxt: KeywordCxt): void {\n  const {gen, data, it} = cxt\n  gen.if(it.parentData, () => gen.assign(data, _`${it.parentData}[${it.parentDataProperty}]`))\n}\n\nfunction addErrs(cxt: KeywordCxt, errs: Code): void {\n  const {gen} = cxt\n  gen.if(\n    _`Array.isArray(${errs})`,\n    () => {\n      gen\n        .assign(N.vErrors, _`${N.vErrors} === null ? ${errs} : ${N.vErrors}.concat(${errs})`)\n        .assign(N.errors, _`${N.vErrors}.length`)\n      extendErrors(cxt)\n    },\n    () => cxt.error()\n  )\n}\n\nfunction checkAsyncKeyword({schemaEnv}: SchemaObjCxt, def: FuncKeywordDefinition): void {\n  if (def.async && !schemaEnv.$async) throw new Error(\"async keyword in sync schema\")\n}\n\nfunction useKeyword(gen: CodeGen, keyword: string, result?: KeywordCompilationResult): Name {\n  if (result === undefined) throw new Error(`keyword \"${keyword}\" failed to compile`)\n  return gen.scopeValue(\n    \"keyword\",\n    typeof result == \"function\" ? {ref: result} : {ref: result, code: stringify(result)}\n  )\n}\n\nexport function validSchemaType(\n  schema: unknown,\n  schemaType: JSONType[],\n  allowUndefined = false\n): boolean {\n  // TODO add tests\n  return (\n    !schemaType.length ||\n    schemaType.some((st) =>\n      st === \"array\"\n        ? Array.isArray(schema)\n        : st === \"object\"\n        ? schema && typeof schema == \"object\" && !Array.isArray(schema)\n        : typeof schema == st || (allowUndefined && typeof schema == \"undefined\")\n    )\n  )\n}\n\nexport function validateKeywordUsage(\n  {schema, opts, self, errSchemaPath}: SchemaObjCxt,\n  def: AddedKeywordDefinition,\n  keyword: string\n): void {\n  /* istanbul ignore if */\n  if (Array.isArray(def.keyword) ? !def.keyword.includes(keyword) : def.keyword !== keyword) {\n    throw new Error(\"ajv implementation error\")\n  }\n\n  const deps = def.dependencies\n  if (deps?.some((kwd) => !Object.prototype.hasOwnProperty.call(schema, kwd))) {\n    throw new Error(`parent schema must have dependencies of ${keyword}: ${deps.join(\",\")}`)\n  }\n\n  if (def.validateSchema) {\n    const valid = def.validateSchema(schema[keyword])\n    if (!valid) {\n      const msg =\n        `keyword \"${keyword}\" value is invalid at path \"${errSchemaPath}\": ` +\n        self.errorsText(def.validateSchema.errors)\n      if (opts.validateSchema === \"log\") self.logger.error(msg)\n      else throw new Error(msg)\n    }\n  }\n}\n","import type {AnySchema} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport {_, str, getProperty, Code, Name} from \"../codegen\"\nimport {escapeFragment, getErrorPath, Type} from \"../util\"\nimport type {JSONType} from \"../rules\"\n\nexport interface SubschemaContext {\n  // TODO use Optional? align with SchemCxt property types\n  schema: AnySchema\n  schemaPath: Code\n  errSchemaPath: string\n  topSchemaRef?: Code\n  errorPath?: Code\n  dataLevel?: number\n  dataTypes?: JSONType[]\n  data?: Name\n  parentData?: Name\n  parentDataProperty?: Code | number\n  dataNames?: Name[]\n  dataPathArr?: (Code | number)[]\n  propertyName?: Name\n  jtdDiscriminator?: string\n  jtdMetadata?: boolean\n  compositeRule?: true\n  createErrors?: boolean\n  allErrors?: boolean\n}\n\nexport type SubschemaArgs = Partial<{\n  keyword: string\n  schemaProp: string | number\n  schema: AnySchema\n  schemaPath: Code\n  errSchemaPath: string\n  topSchemaRef: Code\n  data: Name | Code\n  dataProp: Code | string | number\n  dataTypes: JSONType[]\n  definedProperties: Set<string>\n  propertyName: Name\n  dataPropType: Type\n  jtdDiscriminator: string\n  jtdMetadata: boolean\n  compositeRule: true\n  createErrors: boolean\n  allErrors: boolean\n}>\n\nexport function getSubschema(\n  it: SchemaObjCxt,\n  {keyword, schemaProp, schema, schemaPath, errSchemaPath, topSchemaRef}: SubschemaArgs\n): SubschemaContext {\n  if (keyword !== undefined && schema !== undefined) {\n    throw new Error('both \"keyword\" and \"schema\" passed, only one allowed')\n  }\n\n  if (keyword !== undefined) {\n    const sch = it.schema[keyword]\n    return schemaProp === undefined\n      ? {\n          schema: sch,\n          schemaPath: _`${it.schemaPath}${getProperty(keyword)}`,\n          errSchemaPath: `${it.errSchemaPath}/${keyword}`,\n        }\n      : {\n          schema: sch[schemaProp],\n          schemaPath: _`${it.schemaPath}${getProperty(keyword)}${getProperty(schemaProp)}`,\n          errSchemaPath: `${it.errSchemaPath}/${keyword}/${escapeFragment(schemaProp)}`,\n        }\n  }\n\n  if (schema !== undefined) {\n    if (schemaPath === undefined || errSchemaPath === undefined || topSchemaRef === undefined) {\n      throw new Error('\"schemaPath\", \"errSchemaPath\" and \"topSchemaRef\" are required with \"schema\"')\n    }\n    return {\n      schema,\n      schemaPath,\n      topSchemaRef,\n      errSchemaPath,\n    }\n  }\n\n  throw new Error('either \"keyword\" or \"schema\" must be passed')\n}\n\nexport function extendSubschemaData(\n  subschema: SubschemaContext,\n  it: SchemaObjCxt,\n  {dataProp, dataPropType: dpType, data, dataTypes, propertyName}: SubschemaArgs\n): void {\n  if (data !== undefined && dataProp !== undefined) {\n    throw new Error('both \"data\" and \"dataProp\" passed, only one allowed')\n  }\n\n  const {gen} = it\n\n  if (dataProp !== undefined) {\n    const {errorPath, dataPathArr, opts} = it\n    const nextData = gen.let(\"data\", _`${it.data}${getProperty(dataProp)}`, true)\n    dataContextProps(nextData)\n    subschema.errorPath = str`${errorPath}${getErrorPath(dataProp, dpType, opts.jsPropertySyntax)}`\n    subschema.parentDataProperty = _`${dataProp}`\n    subschema.dataPathArr = [...dataPathArr, subschema.parentDataProperty]\n  }\n\n  if (data !== undefined) {\n    const nextData = data instanceof Name ? data : gen.let(\"data\", data, true) // replaceable if used once?\n    dataContextProps(nextData)\n    if (propertyName !== undefined) subschema.propertyName = propertyName\n    // TODO something is possibly wrong here with not changing parentDataProperty and not appending dataPathArr\n  }\n\n  if (dataTypes) subschema.dataTypes = dataTypes\n\n  function dataContextProps(_nextData: Name): void {\n    subschema.data = _nextData\n    subschema.dataLevel = it.dataLevel + 1\n    subschema.dataTypes = []\n    it.definedProperties = new Set<string>()\n    subschema.parentData = it.data\n    subschema.dataNames = [...it.dataNames, _nextData]\n  }\n}\n\nexport function extendSubschemaMode(\n  subschema: SubschemaContext,\n  {jtdDiscriminator, jtdMetadata, compositeRule, createErrors, allErrors}: SubschemaArgs\n): void {\n  if (compositeRule !== undefined) subschema.compositeRule = compositeRule\n  if (createErrors !== undefined) subschema.createErrors = createErrors\n  if (allErrors !== undefined) subschema.allErrors = allErrors\n  subschema.jtdDiscriminator = jtdDiscriminator // not inherited\n  subschema.jtdMetadata = jtdMetadata // not inherited\n}\n","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n  if (a === b) return true;\n\n  if (a && b && typeof a == 'object' && typeof b == 'object') {\n    if (a.constructor !== b.constructor) return false;\n\n    var length, i, keys;\n    if (Array.isArray(a)) {\n      length = a.length;\n      if (length != b.length) return false;\n      for (i = length; i-- !== 0;)\n        if (!equal(a[i], b[i])) return false;\n      return true;\n    }\n\n\n\n    if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n    if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n    if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n    keys = Object.keys(a);\n    length = keys.length;\n    if (length !== Object.keys(b).length) return false;\n\n    for (i = length; i-- !== 0;)\n      if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n    for (i = length; i-- !== 0;) {\n      var key = keys[i];\n\n      if (!equal(a[key], b[key])) return false;\n    }\n\n    return true;\n  }\n\n  // true if both NaN, false otherwise\n  return a!==a && b!==b;\n};\n","'use strict';\n\nvar traverse = module.exports = function (schema, opts, cb) {\n  // Legacy support for v0.3.1 and earlier.\n  if (typeof opts == 'function') {\n    cb = opts;\n    opts = {};\n  }\n\n  cb = opts.cb || cb;\n  var pre = (typeof cb == 'function') ? cb : cb.pre || function() {};\n  var post = cb.post || function() {};\n\n  _traverse(opts, pre, post, schema, '', schema);\n};\n\n\ntraverse.keywords = {\n  additionalItems: true,\n  items: true,\n  contains: true,\n  additionalProperties: true,\n  propertyNames: true,\n  not: true,\n  if: true,\n  then: true,\n  else: true\n};\n\ntraverse.arrayKeywords = {\n  items: true,\n  allOf: true,\n  anyOf: true,\n  oneOf: true\n};\n\ntraverse.propsKeywords = {\n  $defs: true,\n  definitions: true,\n  properties: true,\n  patternProperties: true,\n  dependencies: true\n};\n\ntraverse.skipKeywords = {\n  default: true,\n  enum: true,\n  const: true,\n  required: true,\n  maximum: true,\n  minimum: true,\n  exclusiveMaximum: true,\n  exclusiveMinimum: true,\n  multipleOf: true,\n  maxLength: true,\n  minLength: true,\n  pattern: true,\n  format: true,\n  maxItems: true,\n  minItems: true,\n  uniqueItems: true,\n  maxProperties: true,\n  minProperties: true\n};\n\n\nfunction _traverse(opts, pre, post, schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex) {\n  if (schema && typeof schema == 'object' && !Array.isArray(schema)) {\n    pre(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);\n    for (var key in schema) {\n      var sch = schema[key];\n      if (Array.isArray(sch)) {\n        if (key in traverse.arrayKeywords) {\n          for (var i=0; i<sch.length; i++)\n            _traverse(opts, pre, post, sch[i], jsonPtr + '/' + key + '/' + i, rootSchema, jsonPtr, key, schema, i);\n        }\n      } else if (key in traverse.propsKeywords) {\n        if (sch && typeof sch == 'object') {\n          for (var prop in sch)\n            _traverse(opts, pre, post, sch[prop], jsonPtr + '/' + key + '/' + escapeJsonPtr(prop), rootSchema, jsonPtr, key, schema, prop);\n        }\n      } else if (key in traverse.keywords || (opts.allKeys && !(key in traverse.skipKeywords))) {\n        _traverse(opts, pre, post, sch, jsonPtr + '/' + key, rootSchema, jsonPtr, key, schema);\n      }\n    }\n    post(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);\n  }\n}\n\n\nfunction escapeJsonPtr(str) {\n  return str.replace(/~/g, '~0').replace(/\\//g, '~1');\n}\n","import type {AnySchema, AnySchemaObject, UriResolver} from \"../types\"\nimport type Ajv from \"../ajv\"\nimport type {URIComponent} from \"fast-uri\"\nimport {eachItem} from \"./util\"\nimport * as equal from \"fast-deep-equal\"\nimport * as traverse from \"json-schema-traverse\"\n\n// the hash of local references inside the schema (created by getSchemaRefs), used for inline resolution\nexport type LocalRefs = {[Ref in string]?: AnySchemaObject}\n\n// TODO refactor to use keyword definitions\nconst SIMPLE_INLINED = new Set([\n  \"type\",\n  \"format\",\n  \"pattern\",\n  \"maxLength\",\n  \"minLength\",\n  \"maxProperties\",\n  \"minProperties\",\n  \"maxItems\",\n  \"minItems\",\n  \"maximum\",\n  \"minimum\",\n  \"uniqueItems\",\n  \"multipleOf\",\n  \"required\",\n  \"enum\",\n  \"const\",\n])\n\nexport function inlineRef(schema: AnySchema, limit: boolean | number = true): boolean {\n  if (typeof schema == \"boolean\") return true\n  if (limit === true) return !hasRef(schema)\n  if (!limit) return false\n  return countKeys(schema) <= limit\n}\n\nconst REF_KEYWORDS = new Set([\n  \"$ref\",\n  \"$recursiveRef\",\n  \"$recursiveAnchor\",\n  \"$dynamicRef\",\n  \"$dynamicAnchor\",\n])\n\nfunction hasRef(schema: AnySchemaObject): boolean {\n  for (const key in schema) {\n    if (REF_KEYWORDS.has(key)) return true\n    const sch = schema[key]\n    if (Array.isArray(sch) && sch.some(hasRef)) return true\n    if (typeof sch == \"object\" && hasRef(sch)) return true\n  }\n  return false\n}\n\nfunction countKeys(schema: AnySchemaObject): number {\n  let count = 0\n  for (const key in schema) {\n    if (key === \"$ref\") return Infinity\n    count++\n    if (SIMPLE_INLINED.has(key)) continue\n    if (typeof schema[key] == \"object\") {\n      eachItem(schema[key], (sch) => (count += countKeys(sch)))\n    }\n    if (count === Infinity) return Infinity\n  }\n  return count\n}\n\nexport function getFullPath(resolver: UriResolver, id = \"\", normalize?: boolean): string {\n  if (normalize !== false) id = normalizeId(id)\n  const p = resolver.parse(id)\n  return _getFullPath(resolver, p)\n}\n\nexport function _getFullPath(resolver: UriResolver, p: URIComponent): string {\n  const serialized = resolver.serialize(p)\n  return serialized.split(\"#\")[0] + \"#\"\n}\n\nconst TRAILING_SLASH_HASH = /#\\/?$/\nexport function normalizeId(id: string | undefined): string {\n  return id ? id.replace(TRAILING_SLASH_HASH, \"\") : \"\"\n}\n\nexport function resolveUrl(resolver: UriResolver, baseId: string, id: string): string {\n  id = normalizeId(id)\n  return resolver.resolve(baseId, id)\n}\n\nconst ANCHOR = /^[a-z_][-a-z0-9._]*$/i\n\nexport function getSchemaRefs(this: Ajv, schema: AnySchema, baseId: string): LocalRefs {\n  if (typeof schema == \"boolean\") return {}\n  const {schemaId, uriResolver} = this.opts\n  const schId = normalizeId(schema[schemaId] || baseId)\n  const baseIds: {[JsonPtr in string]?: string} = {\"\": schId}\n  const pathPrefix = getFullPath(uriResolver, schId, false)\n  const localRefs: LocalRefs = {}\n  const schemaRefs: Set<string> = new Set()\n\n  traverse(schema, {allKeys: true}, (sch, jsonPtr, _, parentJsonPtr) => {\n    if (parentJsonPtr === undefined) return\n    const fullPath = pathPrefix + jsonPtr\n    let innerBaseId = baseIds[parentJsonPtr]\n    if (typeof sch[schemaId] == \"string\") innerBaseId = addRef.call(this, sch[schemaId])\n    addAnchor.call(this, sch.$anchor)\n    addAnchor.call(this, sch.$dynamicAnchor)\n    baseIds[jsonPtr] = innerBaseId\n\n    function addRef(this: Ajv, ref: string): string {\n      // eslint-disable-next-line @typescript-eslint/unbound-method\n      const _resolve = this.opts.uriResolver.resolve\n      ref = normalizeId(innerBaseId ? _resolve(innerBaseId, ref) : ref)\n      if (schemaRefs.has(ref)) throw ambiguos(ref)\n      schemaRefs.add(ref)\n      let schOrRef = this.refs[ref]\n      if (typeof schOrRef == \"string\") schOrRef = this.refs[schOrRef]\n      if (typeof schOrRef == \"object\") {\n        checkAmbiguosRef(sch, schOrRef.schema, ref)\n      } else if (ref !== normalizeId(fullPath)) {\n        if (ref[0] === \"#\") {\n          checkAmbiguosRef(sch, localRefs[ref], ref)\n          localRefs[ref] = sch\n        } else {\n          this.refs[ref] = fullPath\n        }\n      }\n      return ref\n    }\n\n    function addAnchor(this: Ajv, anchor: unknown): void {\n      if (typeof anchor == \"string\") {\n        if (!ANCHOR.test(anchor)) throw new Error(`invalid anchor \"${anchor}\"`)\n        addRef.call(this, `#${anchor}`)\n      }\n    }\n  })\n\n  return localRefs\n\n  function checkAmbiguosRef(sch1: AnySchema, sch2: AnySchema | undefined, ref: string): void {\n    if (sch2 !== undefined && !equal(sch1, sch2)) throw ambiguos(ref)\n  }\n\n  function ambiguos(ref: string): Error {\n    return new Error(`reference \"${ref}\" resolves to more than one schema`)\n  }\n}\n","import type {\n  AddedKeywordDefinition,\n  AnySchema,\n  AnySchemaObject,\n  KeywordErrorCxt,\n  KeywordCxtParams,\n} from \"../../types\"\nimport type {SchemaCxt, SchemaObjCxt} from \"..\"\nimport type {InstanceOptions} from \"../../core\"\nimport {boolOrEmptySchema, topBoolOrEmptySchema} from \"./boolSchema\"\nimport {coerceAndCheckDataType, getSchemaTypes} from \"./dataType\"\nimport {shouldUseGroup, shouldUseRule} from \"./applicability\"\nimport {checkDataType, checkDataTypes, reportTypeError, DataType} from \"./dataType\"\nimport {assignDefaults} from \"./defaults\"\nimport {funcKeywordCode, macroKeywordCode, validateKeywordUsage, validSchemaType} from \"./keyword\"\nimport {getSubschema, extendSubschemaData, SubschemaArgs, extendSubschemaMode} from \"./subschema\"\nimport {_, nil, str, or, not, getProperty, Block, Code, Name, CodeGen} from \"../codegen\"\nimport N from \"../names\"\nimport {resolveUrl} from \"../resolve\"\nimport {\n  schemaRefOrVal,\n  schemaHasRulesButRef,\n  checkUnknownRules,\n  checkStrictMode,\n  unescapeJsonPointer,\n  mergeEvaluated,\n} from \"../util\"\nimport type {JSONType, Rule, RuleGroup} from \"../rules\"\nimport {\n  ErrorPaths,\n  reportError,\n  reportExtraError,\n  resetErrorsCount,\n  keyword$DataError,\n} from \"../errors\"\n\n// schema compilation - generates validation function, subschemaCode (below) is used for subschemas\nexport function validateFunctionCode(it: SchemaCxt): void {\n  if (isSchemaObj(it)) {\n    checkKeywords(it)\n    if (schemaCxtHasRules(it)) {\n      topSchemaObjCode(it)\n      return\n    }\n  }\n  validateFunction(it, () => topBoolOrEmptySchema(it))\n}\n\nfunction validateFunction(\n  {gen, validateName, schema, schemaEnv, opts}: SchemaCxt,\n  body: Block\n): void {\n  if (opts.code.es5) {\n    gen.func(validateName, _`${N.data}, ${N.valCxt}`, schemaEnv.$async, () => {\n      gen.code(_`\"use strict\"; ${funcSourceUrl(schema, opts)}`)\n      destructureValCxtES5(gen, opts)\n      gen.code(body)\n    })\n  } else {\n    gen.func(validateName, _`${N.data}, ${destructureValCxt(opts)}`, schemaEnv.$async, () =>\n      gen.code(funcSourceUrl(schema, opts)).code(body)\n    )\n  }\n}\n\nfunction destructureValCxt(opts: InstanceOptions): Code {\n  return _`{${N.instancePath}=\"\", ${N.parentData}, ${N.parentDataProperty}, ${N.rootData}=${\n    N.data\n  }${opts.dynamicRef ? _`, ${N.dynamicAnchors}={}` : nil}}={}`\n}\n\nfunction destructureValCxtES5(gen: CodeGen, opts: InstanceOptions): void {\n  gen.if(\n    N.valCxt,\n    () => {\n      gen.var(N.instancePath, _`${N.valCxt}.${N.instancePath}`)\n      gen.var(N.parentData, _`${N.valCxt}.${N.parentData}`)\n      gen.var(N.parentDataProperty, _`${N.valCxt}.${N.parentDataProperty}`)\n      gen.var(N.rootData, _`${N.valCxt}.${N.rootData}`)\n      if (opts.dynamicRef) gen.var(N.dynamicAnchors, _`${N.valCxt}.${N.dynamicAnchors}`)\n    },\n    () => {\n      gen.var(N.instancePath, _`\"\"`)\n      gen.var(N.parentData, _`undefined`)\n      gen.var(N.parentDataProperty, _`undefined`)\n      gen.var(N.rootData, N.data)\n      if (opts.dynamicRef) gen.var(N.dynamicAnchors, _`{}`)\n    }\n  )\n}\n\nfunction topSchemaObjCode(it: SchemaObjCxt): void {\n  const {schema, opts, gen} = it\n  validateFunction(it, () => {\n    if (opts.$comment && schema.$comment) commentKeyword(it)\n    checkNoDefault(it)\n    gen.let(N.vErrors, null)\n    gen.let(N.errors, 0)\n    if (opts.unevaluated) resetEvaluated(it)\n    typeAndKeywords(it)\n    returnResults(it)\n  })\n  return\n}\n\nfunction resetEvaluated(it: SchemaObjCxt): void {\n  // TODO maybe some hook to execute it in the end to check whether props/items are Name, as in assignEvaluated\n  const {gen, validateName} = it\n  it.evaluated = gen.const(\"evaluated\", _`${validateName}.evaluated`)\n  gen.if(_`${it.evaluated}.dynamicProps`, () => gen.assign(_`${it.evaluated}.props`, _`undefined`))\n  gen.if(_`${it.evaluated}.dynamicItems`, () => gen.assign(_`${it.evaluated}.items`, _`undefined`))\n}\n\nfunction funcSourceUrl(schema: AnySchema, opts: InstanceOptions): Code {\n  const schId = typeof schema == \"object\" && schema[opts.schemaId]\n  return schId && (opts.code.source || opts.code.process) ? _`/*# sourceURL=${schId} */` : nil\n}\n\n// schema compilation - this function is used recursively to generate code for sub-schemas\nfunction subschemaCode(it: SchemaCxt, valid: Name): void {\n  if (isSchemaObj(it)) {\n    checkKeywords(it)\n    if (schemaCxtHasRules(it)) {\n      subSchemaObjCode(it, valid)\n      return\n    }\n  }\n  boolOrEmptySchema(it, valid)\n}\n\nfunction schemaCxtHasRules({schema, self}: SchemaCxt): boolean {\n  if (typeof schema == \"boolean\") return !schema\n  for (const key in schema) if (self.RULES.all[key]) return true\n  return false\n}\n\nfunction isSchemaObj(it: SchemaCxt): it is SchemaObjCxt {\n  return typeof it.schema != \"boolean\"\n}\n\nfunction subSchemaObjCode(it: SchemaObjCxt, valid: Name): void {\n  const {schema, gen, opts} = it\n  if (opts.$comment && schema.$comment) commentKeyword(it)\n  updateContext(it)\n  checkAsyncSchema(it)\n  const errsCount = gen.const(\"_errs\", N.errors)\n  typeAndKeywords(it, errsCount)\n  // TODO var\n  gen.var(valid, _`${errsCount} === ${N.errors}`)\n}\n\nfunction checkKeywords(it: SchemaObjCxt): void {\n  checkUnknownRules(it)\n  checkRefsAndKeywords(it)\n}\n\nfunction typeAndKeywords(it: SchemaObjCxt, errsCount?: Name): void {\n  if (it.opts.jtd) return schemaKeywords(it, [], false, errsCount)\n  const types = getSchemaTypes(it.schema)\n  const checkedTypes = coerceAndCheckDataType(it, types)\n  schemaKeywords(it, types, !checkedTypes, errsCount)\n}\n\nfunction checkRefsAndKeywords(it: SchemaObjCxt): void {\n  const {schema, errSchemaPath, opts, self} = it\n  if (schema.$ref && opts.ignoreKeywordsWithRef && schemaHasRulesButRef(schema, self.RULES)) {\n    self.logger.warn(`$ref: keywords ignored in schema at path \"${errSchemaPath}\"`)\n  }\n}\n\nfunction checkNoDefault(it: SchemaObjCxt): void {\n  const {schema, opts} = it\n  if (schema.default !== undefined && opts.useDefaults && opts.strictSchema) {\n    checkStrictMode(it, \"default is ignored in the schema root\")\n  }\n}\n\nfunction updateContext(it: SchemaObjCxt): void {\n  const schId = it.schema[it.opts.schemaId]\n  if (schId) it.baseId = resolveUrl(it.opts.uriResolver, it.baseId, schId)\n}\n\nfunction checkAsyncSchema(it: SchemaObjCxt): void {\n  if (it.schema.$async && !it.schemaEnv.$async) throw new Error(\"async schema in sync schema\")\n}\n\nfunction commentKeyword({gen, schemaEnv, schema, errSchemaPath, opts}: SchemaObjCxt): void {\n  const msg = schema.$comment\n  if (opts.$comment === true) {\n    gen.code(_`${N.self}.logger.log(${msg})`)\n  } else if (typeof opts.$comment == \"function\") {\n    const schemaPath = str`${errSchemaPath}/$comment`\n    const rootName = gen.scopeValue(\"root\", {ref: schemaEnv.root})\n    gen.code(_`${N.self}.opts.$comment(${msg}, ${schemaPath}, ${rootName}.schema)`)\n  }\n}\n\nfunction returnResults(it: SchemaCxt): void {\n  const {gen, schemaEnv, validateName, ValidationError, opts} = it\n  if (schemaEnv.$async) {\n    // TODO assign unevaluated\n    gen.if(\n      _`${N.errors} === 0`,\n      () => gen.return(N.data),\n      () => gen.throw(_`new ${ValidationError as Name}(${N.vErrors})`)\n    )\n  } else {\n    gen.assign(_`${validateName}.errors`, N.vErrors)\n    if (opts.unevaluated) assignEvaluated(it)\n    gen.return(_`${N.errors} === 0`)\n  }\n}\n\nfunction assignEvaluated({gen, evaluated, props, items}: SchemaCxt): void {\n  if (props instanceof Name) gen.assign(_`${evaluated}.props`, props)\n  if (items instanceof Name) gen.assign(_`${evaluated}.items`, items)\n}\n\nfunction schemaKeywords(\n  it: SchemaObjCxt,\n  types: JSONType[],\n  typeErrors: boolean,\n  errsCount?: Name\n): void {\n  const {gen, schema, data, allErrors, opts, self} = it\n  const {RULES} = self\n  if (schema.$ref && (opts.ignoreKeywordsWithRef || !schemaHasRulesButRef(schema, RULES))) {\n    gen.block(() => keywordCode(it, \"$ref\", (RULES.all.$ref as Rule).definition)) // TODO typecast\n    return\n  }\n  if (!opts.jtd) checkStrictTypes(it, types)\n  gen.block(() => {\n    for (const group of RULES.rules) groupKeywords(group)\n    groupKeywords(RULES.post)\n  })\n\n  function groupKeywords(group: RuleGroup): void {\n    if (!shouldUseGroup(schema, group)) return\n    if (group.type) {\n      gen.if(checkDataType(group.type, data, opts.strictNumbers))\n      iterateKeywords(it, group)\n      if (types.length === 1 && types[0] === group.type && typeErrors) {\n        gen.else()\n        reportTypeError(it)\n      }\n      gen.endIf()\n    } else {\n      iterateKeywords(it, group)\n    }\n    // TODO make it \"ok\" call?\n    if (!allErrors) gen.if(_`${N.errors} === ${errsCount || 0}`)\n  }\n}\n\nfunction iterateKeywords(it: SchemaObjCxt, group: RuleGroup): void {\n  const {\n    gen,\n    schema,\n    opts: {useDefaults},\n  } = it\n  if (useDefaults) assignDefaults(it, group.type)\n  gen.block(() => {\n    for (const rule of group.rules) {\n      if (shouldUseRule(schema, rule)) {\n        keywordCode(it, rule.keyword, rule.definition, group.type)\n      }\n    }\n  })\n}\n\nfunction checkStrictTypes(it: SchemaObjCxt, types: JSONType[]): void {\n  if (it.schemaEnv.meta || !it.opts.strictTypes) return\n  checkContextTypes(it, types)\n  if (!it.opts.allowUnionTypes) checkMultipleTypes(it, types)\n  checkKeywordTypes(it, it.dataTypes)\n}\n\nfunction checkContextTypes(it: SchemaObjCxt, types: JSONType[]): void {\n  if (!types.length) return\n  if (!it.dataTypes.length) {\n    it.dataTypes = types\n    return\n  }\n  types.forEach((t) => {\n    if (!includesType(it.dataTypes, t)) {\n      strictTypesError(it, `type \"${t}\" not allowed by context \"${it.dataTypes.join(\",\")}\"`)\n    }\n  })\n  narrowSchemaTypes(it, types)\n}\n\nfunction checkMultipleTypes(it: SchemaObjCxt, ts: JSONType[]): void {\n  if (ts.length > 1 && !(ts.length === 2 && ts.includes(\"null\"))) {\n    strictTypesError(it, \"use allowUnionTypes to allow union type keyword\")\n  }\n}\n\nfunction checkKeywordTypes(it: SchemaObjCxt, ts: JSONType[]): void {\n  const rules = it.self.RULES.all\n  for (const keyword in rules) {\n    const rule = rules[keyword]\n    if (typeof rule == \"object\" && shouldUseRule(it.schema, rule)) {\n      const {type} = rule.definition\n      if (type.length && !type.some((t) => hasApplicableType(ts, t))) {\n        strictTypesError(it, `missing type \"${type.join(\",\")}\" for keyword \"${keyword}\"`)\n      }\n    }\n  }\n}\n\nfunction hasApplicableType(schTs: JSONType[], kwdT: JSONType): boolean {\n  return schTs.includes(kwdT) || (kwdT === \"number\" && schTs.includes(\"integer\"))\n}\n\nfunction includesType(ts: JSONType[], t: JSONType): boolean {\n  return ts.includes(t) || (t === \"integer\" && ts.includes(\"number\"))\n}\n\nfunction narrowSchemaTypes(it: SchemaObjCxt, withTypes: JSONType[]): void {\n  const ts: JSONType[] = []\n  for (const t of it.dataTypes) {\n    if (includesType(withTypes, t)) ts.push(t)\n    else if (withTypes.includes(\"integer\") && t === \"number\") ts.push(\"integer\")\n  }\n  it.dataTypes = ts\n}\n\nfunction strictTypesError(it: SchemaObjCxt, msg: string): void {\n  const schemaPath = it.schemaEnv.baseId + it.errSchemaPath\n  msg += ` at \"${schemaPath}\" (strictTypes)`\n  checkStrictMode(it, msg, it.opts.strictTypes)\n}\n\nexport class KeywordCxt implements KeywordErrorCxt {\n  readonly gen: CodeGen\n  readonly allErrors?: boolean\n  readonly keyword: string\n  readonly data: Name // Name referencing the current level of the data instance\n  readonly $data?: string | false\n  schema: any // keyword value in the schema\n  readonly schemaValue: Code | number | boolean // Code reference to keyword schema value or primitive value\n  readonly schemaCode: Code | number | boolean // Code reference to resolved schema value (different if schema is $data)\n  readonly schemaType: JSONType[] // allowed type(s) of keyword value in the schema\n  readonly parentSchema: AnySchemaObject\n  readonly errsCount?: Name // Name reference to the number of validation errors collected before this keyword,\n  // requires option trackErrors in keyword definition\n  params: KeywordCxtParams // object to pass parameters to error messages from keyword code\n  readonly it: SchemaObjCxt // schema compilation context (schema is guaranteed to be an object, not boolean)\n  readonly def: AddedKeywordDefinition\n\n  constructor(it: SchemaObjCxt, def: AddedKeywordDefinition, keyword: string) {\n    validateKeywordUsage(it, def, keyword)\n    this.gen = it.gen\n    this.allErrors = it.allErrors\n    this.keyword = keyword\n    this.data = it.data\n    this.schema = it.schema[keyword]\n    this.$data = def.$data && it.opts.$data && this.schema && this.schema.$data\n    this.schemaValue = schemaRefOrVal(it, this.schema, keyword, this.$data)\n    this.schemaType = def.schemaType\n    this.parentSchema = it.schema\n    this.params = {}\n    this.it = it\n    this.def = def\n\n    if (this.$data) {\n      this.schemaCode = it.gen.const(\"vSchema\", getData(this.$data, it))\n    } else {\n      this.schemaCode = this.schemaValue\n      if (!validSchemaType(this.schema, def.schemaType, def.allowUndefined)) {\n        throw new Error(`${keyword} value must be ${JSON.stringify(def.schemaType)}`)\n      }\n    }\n\n    if (\"code\" in def ? def.trackErrors : def.errors !== false) {\n      this.errsCount = it.gen.const(\"_errs\", N.errors)\n    }\n  }\n\n  result(condition: Code, successAction?: () => void, failAction?: () => void): void {\n    this.failResult(not(condition), successAction, failAction)\n  }\n\n  failResult(condition: Code, successAction?: () => void, failAction?: () => void): void {\n    this.gen.if(condition)\n    if (failAction) failAction()\n    else this.error()\n    if (successAction) {\n      this.gen.else()\n      successAction()\n      if (this.allErrors) this.gen.endIf()\n    } else {\n      if (this.allErrors) this.gen.endIf()\n      else this.gen.else()\n    }\n  }\n\n  pass(condition: Code, failAction?: () => void): void {\n    this.failResult(not(condition), undefined, failAction)\n  }\n\n  fail(condition?: Code): void {\n    if (condition === undefined) {\n      this.error()\n      if (!this.allErrors) this.gen.if(false) // this branch will be removed by gen.optimize\n      return\n    }\n    this.gen.if(condition)\n    this.error()\n    if (this.allErrors) this.gen.endIf()\n    else this.gen.else()\n  }\n\n  fail$data(condition: Code): void {\n    if (!this.$data) return this.fail(condition)\n    const {schemaCode} = this\n    this.fail(_`${schemaCode} !== undefined && (${or(this.invalid$data(), condition)})`)\n  }\n\n  error(append?: boolean, errorParams?: KeywordCxtParams, errorPaths?: ErrorPaths): void {\n    if (errorParams) {\n      this.setParams(errorParams)\n      this._error(append, errorPaths)\n      this.setParams({})\n      return\n    }\n    this._error(append, errorPaths)\n  }\n\n  private _error(append?: boolean, errorPaths?: ErrorPaths): void {\n    ;(append ? reportExtraError : reportError)(this, this.def.error, errorPaths)\n  }\n\n  $dataError(): void {\n    reportError(this, this.def.$dataError || keyword$DataError)\n  }\n\n  reset(): void {\n    if (this.errsCount === undefined) throw new Error('add \"trackErrors\" to keyword definition')\n    resetErrorsCount(this.gen, this.errsCount)\n  }\n\n  ok(cond: Code | boolean): void {\n    if (!this.allErrors) this.gen.if(cond)\n  }\n\n  setParams(obj: KeywordCxtParams, assign?: true): void {\n    if (assign) Object.assign(this.params, obj)\n    else this.params = obj\n  }\n\n  block$data(valid: Name, codeBlock: () => void, $dataValid: Code = nil): void {\n    this.gen.block(() => {\n      this.check$data(valid, $dataValid)\n      codeBlock()\n    })\n  }\n\n  check$data(valid: Name = nil, $dataValid: Code = nil): void {\n    if (!this.$data) return\n    const {gen, schemaCode, schemaType, def} = this\n    gen.if(or(_`${schemaCode} === undefined`, $dataValid))\n    if (valid !== nil) gen.assign(valid, true)\n    if (schemaType.length || def.validateSchema) {\n      gen.elseIf(this.invalid$data())\n      this.$dataError()\n      if (valid !== nil) gen.assign(valid, false)\n    }\n    gen.else()\n  }\n\n  invalid$data(): Code {\n    const {gen, schemaCode, schemaType, def, it} = this\n    return or(wrong$DataType(), invalid$DataSchema())\n\n    function wrong$DataType(): Code {\n      if (schemaType.length) {\n        /* istanbul ignore if */\n        if (!(schemaCode instanceof Name)) throw new Error(\"ajv implementation error\")\n        const st = Array.isArray(schemaType) ? schemaType : [schemaType]\n        return _`${checkDataTypes(st, schemaCode, it.opts.strictNumbers, DataType.Wrong)}`\n      }\n      return nil\n    }\n\n    function invalid$DataSchema(): Code {\n      if (def.validateSchema) {\n        const validateSchemaRef = gen.scopeValue(\"validate$data\", {ref: def.validateSchema}) // TODO value.code for standalone\n        return _`!${validateSchemaRef}(${schemaCode})`\n      }\n      return nil\n    }\n  }\n\n  subschema(appl: SubschemaArgs, valid: Name): SchemaCxt {\n    const subschema = getSubschema(this.it, appl)\n    extendSubschemaData(subschema, this.it, appl)\n    extendSubschemaMode(subschema, appl)\n    const nextContext = {...this.it, ...subschema, items: undefined, props: undefined}\n    subschemaCode(nextContext, valid)\n    return nextContext\n  }\n\n  mergeEvaluated(schemaCxt: SchemaCxt, toName?: typeof Name): void {\n    const {it, gen} = this\n    if (!it.opts.unevaluated) return\n    if (it.props !== true && schemaCxt.props !== undefined) {\n      it.props = mergeEvaluated.props(gen, schemaCxt.props, it.props, toName)\n    }\n    if (it.items !== true && schemaCxt.items !== undefined) {\n      it.items = mergeEvaluated.items(gen, schemaCxt.items, it.items, toName)\n    }\n  }\n\n  mergeValidEvaluated(schemaCxt: SchemaCxt, valid: Name): boolean | void {\n    const {it, gen} = this\n    if (it.opts.unevaluated && (it.props !== true || it.items !== true)) {\n      gen.if(valid, () => this.mergeEvaluated(schemaCxt, Name))\n      return true\n    }\n  }\n}\n\nfunction keywordCode(\n  it: SchemaObjCxt,\n  keyword: string,\n  def: AddedKeywordDefinition,\n  ruleType?: JSONType\n): void {\n  const cxt = new KeywordCxt(it, def, keyword)\n  if (\"code\" in def) {\n    def.code(cxt, ruleType)\n  } else if (cxt.$data && def.validate) {\n    funcKeywordCode(cxt, def)\n  } else if (\"macro\" in def) {\n    macroKeywordCode(cxt, def)\n  } else if (def.compile || def.validate) {\n    funcKeywordCode(cxt, def)\n  }\n}\n\nconst JSON_POINTER = /^\\/(?:[^~]|~0|~1)*$/\nconst RELATIVE_JSON_POINTER = /^([0-9]+)(#|\\/(?:[^~]|~0|~1)*)?$/\nexport function getData(\n  $data: string,\n  {dataLevel, dataNames, dataPathArr}: SchemaCxt\n): Code | number {\n  let jsonPointer\n  let data: Code\n  if ($data === \"\") return N.rootData\n  if ($data[0] === \"/\") {\n    if (!JSON_POINTER.test($data)) throw new Error(`Invalid JSON-pointer: ${$data}`)\n    jsonPointer = $data\n    data = N.rootData\n  } else {\n    const matches = RELATIVE_JSON_POINTER.exec($data)\n    if (!matches) throw new Error(`Invalid JSON-pointer: ${$data}`)\n    const up: number = +matches[1]\n    jsonPointer = matches[2]\n    if (jsonPointer === \"#\") {\n      if (up >= dataLevel) throw new Error(errorMsg(\"property/index\", up))\n      return dataPathArr[dataLevel - up]\n    }\n    if (up > dataLevel) throw new Error(errorMsg(\"data\", up))\n    data = dataNames[dataLevel - up]\n    if (!jsonPointer) return data\n  }\n\n  let expr = data\n  const segments = jsonPointer.split(\"/\")\n  for (const segment of segments) {\n    if (segment) {\n      data = _`${data}${getProperty(unescapeJsonPointer(segment))}`\n      expr = _`${expr} && ${data}`\n    }\n  }\n  return expr\n\n  function errorMsg(pointerType: string, up: number): string {\n    return `Cannot access ${pointerType} ${up} levels up, current level is ${dataLevel}`\n  }\n}\n","import type {ErrorObject} from \"../types\"\n\nexport default class ValidationError extends Error {\n  readonly errors: Partial<ErrorObject>[]\n  readonly ajv: true\n  readonly validation: true\n\n  constructor(errors: Partial<ErrorObject>[]) {\n    super(\"validation failed\")\n    this.errors = errors\n    this.ajv = this.validation = true\n  }\n}\n","import {resolveUrl, normalizeId, getFullPath} from \"./resolve\"\nimport type {UriResolver} from \"../types\"\n\nexport default class MissingRefError extends Error {\n  readonly missingRef: string\n  readonly missingSchema: string\n\n  constructor(resolver: UriResolver, baseId: string, ref: string, msg?: string) {\n    super(msg || `can't resolve reference ${ref} from id ${baseId}`)\n    this.missingRef = resolveUrl(resolver, baseId, ref)\n    this.missingSchema = normalizeId(getFullPath(resolver, this.missingRef))\n  }\n}\n","import type {\n  AnySchema,\n  AnySchemaObject,\n  AnyValidateFunction,\n  AsyncValidateFunction,\n  EvaluatedProperties,\n  EvaluatedItems,\n} from \"../types\"\nimport type Ajv from \"../core\"\nimport type {InstanceOptions} from \"../core\"\nimport {CodeGen, _, nil, stringify, Name, Code, ValueScopeName} from \"./codegen\"\nimport ValidationError from \"../runtime/validation_error\"\nimport N from \"./names\"\nimport {LocalRefs, getFullPath, _getFullPath, inlineRef, normalizeId, resolveUrl} from \"./resolve\"\nimport {schemaHasRulesButRef, unescapeFragment} from \"./util\"\nimport {validateFunctionCode} from \"./validate\"\nimport {URIComponent} from \"fast-uri\"\nimport {JSONType} from \"./rules\"\n\nexport type SchemaRefs = {\n  [Ref in string]?: SchemaEnv | AnySchema\n}\n\nexport interface SchemaCxt {\n  readonly gen: CodeGen\n  readonly allErrors?: boolean // validation mode - whether to collect all errors or break on error\n  readonly data: Name // Name with reference to the current part of data instance\n  readonly parentData: Name // should be used in keywords modifying data\n  readonly parentDataProperty: Code | number // should be used in keywords modifying data\n  readonly dataNames: Name[]\n  readonly dataPathArr: (Code | number)[]\n  readonly dataLevel: number // the level of the currently validated data,\n  // it can be used to access both the property names and the data on all levels from the top.\n  dataTypes: JSONType[] // data types applied to the current part of data instance\n  definedProperties: Set<string> // set of properties to keep track of for required checks\n  readonly topSchemaRef: Code\n  readonly validateName: Name\n  evaluated?: Name\n  readonly ValidationError?: Name\n  readonly schema: AnySchema // current schema object - equal to parentSchema passed via KeywordCxt\n  readonly schemaEnv: SchemaEnv\n  readonly rootId: string\n  baseId: string // the current schema base URI that should be used as the base for resolving URIs in references (\\$ref)\n  readonly schemaPath: Code // the run-time expression that evaluates to the property name of the current schema\n  readonly errSchemaPath: string // this is actual string, should not be changed to Code\n  readonly errorPath: Code\n  readonly propertyName?: Name\n  readonly compositeRule?: boolean // true indicates that the current schema is inside the compound keyword,\n  // where failing some rule doesn't mean validation failure (`anyOf`, `oneOf`, `not`, `if`).\n  // This flag is used to determine whether you can return validation result immediately after any error in case the option `allErrors` is not `true.\n  // You only need to use it if you have many steps in your keywords and potentially can define multiple errors.\n  props?: EvaluatedProperties | Name // properties evaluated by this schema - used by parent schema or assigned to validation function\n  items?: EvaluatedItems | Name // last item evaluated by this schema - used by parent schema or assigned to validation function\n  jtdDiscriminator?: string\n  jtdMetadata?: boolean\n  readonly createErrors?: boolean\n  readonly opts: InstanceOptions // Ajv instance option.\n  readonly self: Ajv // current Ajv instance\n}\n\nexport interface SchemaObjCxt extends SchemaCxt {\n  readonly schema: AnySchemaObject\n}\ninterface SchemaEnvArgs {\n  readonly schema: AnySchema\n  readonly schemaId?: \"$id\" | \"id\"\n  readonly root?: SchemaEnv\n  readonly baseId?: string\n  readonly schemaPath?: string\n  readonly localRefs?: LocalRefs\n  readonly meta?: boolean\n}\n\nexport class SchemaEnv implements SchemaEnvArgs {\n  readonly schema: AnySchema\n  readonly schemaId?: \"$id\" | \"id\"\n  readonly root: SchemaEnv\n  baseId: string // TODO possibly, it should be readonly\n  schemaPath?: string\n  localRefs?: LocalRefs\n  readonly meta?: boolean\n  readonly $async?: boolean // true if the current schema is asynchronous.\n  readonly refs: SchemaRefs = {}\n  readonly dynamicAnchors: {[Ref in string]?: true} = {}\n  validate?: AnyValidateFunction\n  validateName?: ValueScopeName\n  serialize?: (data: unknown) => string\n  serializeName?: ValueScopeName\n  parse?: (data: string) => unknown\n  parseName?: ValueScopeName\n\n  constructor(env: SchemaEnvArgs) {\n    let schema: AnySchemaObject | undefined\n    if (typeof env.schema == \"object\") schema = env.schema\n    this.schema = env.schema\n    this.schemaId = env.schemaId\n    this.root = env.root || this\n    this.baseId = env.baseId ?? normalizeId(schema?.[env.schemaId || \"$id\"])\n    this.schemaPath = env.schemaPath\n    this.localRefs = env.localRefs\n    this.meta = env.meta\n    this.$async = schema?.$async\n    this.refs = {}\n  }\n}\n\n// let codeSize = 0\n// let nodeCount = 0\n\n// Compiles schema in SchemaEnv\nexport function compileSchema(this: Ajv, sch: SchemaEnv): SchemaEnv {\n  // TODO refactor - remove compilations\n  const _sch = getCompilingSchema.call(this, sch)\n  if (_sch) return _sch\n  const rootId = getFullPath(this.opts.uriResolver, sch.root.baseId) // TODO if getFullPath removed 1 tests fails\n  const {es5, lines} = this.opts.code\n  const {ownProperties} = this.opts\n  const gen = new CodeGen(this.scope, {es5, lines, ownProperties})\n  let _ValidationError\n  if (sch.$async) {\n    _ValidationError = gen.scopeValue(\"Error\", {\n      ref: ValidationError,\n      code: _`require(\"ajv/dist/runtime/validation_error\").default`,\n    })\n  }\n\n  const validateName = gen.scopeName(\"validate\")\n  sch.validateName = validateName\n\n  const schemaCxt: SchemaCxt = {\n    gen,\n    allErrors: this.opts.allErrors,\n    data: N.data,\n    parentData: N.parentData,\n    parentDataProperty: N.parentDataProperty,\n    dataNames: [N.data],\n    dataPathArr: [nil], // TODO can its length be used as dataLevel if nil is removed?\n    dataLevel: 0,\n    dataTypes: [],\n    definedProperties: new Set<string>(),\n    topSchemaRef: gen.scopeValue(\n      \"schema\",\n      this.opts.code.source === true\n        ? {ref: sch.schema, code: stringify(sch.schema)}\n        : {ref: sch.schema}\n    ),\n    validateName,\n    ValidationError: _ValidationError,\n    schema: sch.schema,\n    schemaEnv: sch,\n    rootId,\n    baseId: sch.baseId || rootId,\n    schemaPath: nil,\n    errSchemaPath: sch.schemaPath || (this.opts.jtd ? \"\" : \"#\"),\n    errorPath: _`\"\"`,\n    opts: this.opts,\n    self: this,\n  }\n\n  let sourceCode: string | undefined\n  try {\n    this._compilations.add(sch)\n    validateFunctionCode(schemaCxt)\n    gen.optimize(this.opts.code.optimize)\n    // gen.optimize(1)\n    const validateCode = gen.toString()\n    sourceCode = `${gen.scopeRefs(N.scope)}return ${validateCode}`\n    // console.log((codeSize += sourceCode.length), (nodeCount += gen.nodeCount))\n    if (this.opts.code.process) sourceCode = this.opts.code.process(sourceCode, sch)\n    // console.log(\"\\n\\n\\n *** \\n\", sourceCode)\n    const makeValidate = new Function(`${N.self}`, `${N.scope}`, sourceCode)\n    const validate: AnyValidateFunction = makeValidate(this, this.scope.get())\n    this.scope.value(validateName, {ref: validate})\n\n    validate.errors = null\n    validate.schema = sch.schema\n    validate.schemaEnv = sch\n    if (sch.$async) (validate as AsyncValidateFunction).$async = true\n    if (this.opts.code.source === true) {\n      validate.source = {validateName, validateCode, scopeValues: gen._values}\n    }\n    if (this.opts.unevaluated) {\n      const {props, items} = schemaCxt\n      validate.evaluated = {\n        props: props instanceof Name ? undefined : props,\n        items: items instanceof Name ? undefined : items,\n        dynamicProps: props instanceof Name,\n        dynamicItems: items instanceof Name,\n      }\n      if (validate.source) validate.source.evaluated = stringify(validate.evaluated)\n    }\n    sch.validate = validate\n    return sch\n  } catch (e) {\n    delete sch.validate\n    delete sch.validateName\n    if (sourceCode) this.logger.error(\"Error compiling schema, function code:\", sourceCode)\n    // console.log(\"\\n\\n\\n *** \\n\", sourceCode, this.opts)\n    throw e\n  } finally {\n    this._compilations.delete(sch)\n  }\n}\n\nexport function resolveRef(\n  this: Ajv,\n  root: SchemaEnv,\n  baseId: string,\n  ref: string\n): AnySchema | SchemaEnv | undefined {\n  ref = resolveUrl(this.opts.uriResolver, baseId, ref)\n  const schOrFunc = root.refs[ref]\n  if (schOrFunc) return schOrFunc\n\n  let _sch = resolve.call(this, root, ref)\n  if (_sch === undefined) {\n    const schema = root.localRefs?.[ref] // TODO maybe localRefs should hold SchemaEnv\n    const {schemaId} = this.opts\n    if (schema) _sch = new SchemaEnv({schema, schemaId, root, baseId})\n  }\n\n  if (_sch === undefined) return\n  return (root.refs[ref] = inlineOrCompile.call(this, _sch))\n}\n\nfunction inlineOrCompile(this: Ajv, sch: SchemaEnv): AnySchema | SchemaEnv {\n  if (inlineRef(sch.schema, this.opts.inlineRefs)) return sch.schema\n  return sch.validate ? sch : compileSchema.call(this, sch)\n}\n\n// Index of schema compilation in the currently compiled list\nexport function getCompilingSchema(this: Ajv, schEnv: SchemaEnv): SchemaEnv | void {\n  for (const sch of this._compilations) {\n    if (sameSchemaEnv(sch, schEnv)) return sch\n  }\n}\n\nfunction sameSchemaEnv(s1: SchemaEnv, s2: SchemaEnv): boolean {\n  return s1.schema === s2.schema && s1.root === s2.root && s1.baseId === s2.baseId\n}\n\n// resolve and compile the references ($ref)\n// TODO returns AnySchemaObject (if the schema can be inlined) or validation function\nfunction resolve(\n  this: Ajv,\n  root: SchemaEnv, // information about the root schema for the current schema\n  ref: string // reference to resolve\n): SchemaEnv | undefined {\n  let sch\n  while (typeof (sch = this.refs[ref]) == \"string\") ref = sch\n  return sch || this.schemas[ref] || resolveSchema.call(this, root, ref)\n}\n\n// Resolve schema, its root and baseId\nexport function resolveSchema(\n  this: Ajv,\n  root: SchemaEnv, // root object with properties schema, refs TODO below SchemaEnv is assigned to it\n  ref: string // reference to resolve\n): SchemaEnv | undefined {\n  const p = this.opts.uriResolver.parse(ref)\n  const refPath = _getFullPath(this.opts.uriResolver, p)\n  let baseId = getFullPath(this.opts.uriResolver, root.baseId, undefined)\n  // TODO `Object.keys(root.schema).length > 0` should not be needed - but removing breaks 2 tests\n  if (Object.keys(root.schema).length > 0 && refPath === baseId) {\n    return getJsonPointer.call(this, p, root)\n  }\n\n  const id = normalizeId(refPath)\n  const schOrRef = this.refs[id] || this.schemas[id]\n  if (typeof schOrRef == \"string\") {\n    const sch = resolveSchema.call(this, root, schOrRef)\n    if (typeof sch?.schema !== \"object\") return\n    return getJsonPointer.call(this, p, sch)\n  }\n\n  if (typeof schOrRef?.schema !== \"object\") return\n  if (!schOrRef.validate) compileSchema.call(this, schOrRef)\n  if (id === normalizeId(ref)) {\n    const {schema} = schOrRef\n    const {schemaId} = this.opts\n    const schId = schema[schemaId]\n    if (schId) baseId = resolveUrl(this.opts.uriResolver, baseId, schId)\n    return new SchemaEnv({schema, schemaId, root, baseId})\n  }\n  return getJsonPointer.call(this, p, schOrRef)\n}\n\nconst PREVENT_SCOPE_CHANGE = new Set([\n  \"properties\",\n  \"patternProperties\",\n  \"enum\",\n  \"dependencies\",\n  \"definitions\",\n])\n\nfunction getJsonPointer(\n  this: Ajv,\n  parsedRef: URIComponent,\n  {baseId, schema, root}: SchemaEnv\n): SchemaEnv | undefined {\n  if (parsedRef.fragment?.[0] !== \"/\") return\n  for (const part of parsedRef.fragment.slice(1).split(\"/\")) {\n    if (typeof schema === \"boolean\") return\n    const partSchema = schema[unescapeFragment(part)]\n    if (partSchema === undefined) return\n    schema = partSchema\n    // TODO PREVENT_SCOPE_CHANGE could be defined in keyword def?\n    const schId = typeof schema === \"object\" && schema[this.opts.schemaId]\n    if (!PREVENT_SCOPE_CHANGE.has(part) && schId) {\n      baseId = resolveUrl(this.opts.uriResolver, baseId, schId)\n    }\n  }\n  let env: SchemaEnv | undefined\n  if (typeof schema != \"boolean\" && schema.$ref && !schemaHasRulesButRef(schema, this.RULES)) {\n    const $ref = resolveUrl(this.opts.uriResolver, baseId, schema.$ref)\n    env = resolveSchema.call(this, root, $ref)\n  }\n  // even though resolution failed we need to return SchemaEnv to throw exception\n  // so that compileAsync loads missing schema.\n  const {schemaId} = this.opts\n  env = env || new SchemaEnv({schema, schemaId, root, baseId})\n  if (env.schema !== env.root.schema) return env\n  return undefined\n}\n","{\n  \"$id\": \"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#\",\n  \"description\": \"Meta-schema for $data reference (JSON AnySchema extension proposal)\",\n  \"type\": \"object\",\n  \"required\": [\"$data\"],\n  \"properties\": {\n    \"$data\": {\n      \"type\": \"string\",\n      \"anyOf\": [{\"format\": \"relative-json-pointer\"}, {\"format\": \"json-pointer\"}]\n    }\n  },\n  \"additionalProperties\": false\n}\n","'use strict'\n\n/** @type {(value: string) => boolean} */\nconst isUUID = RegExp.prototype.test.bind(/^[\\da-f]{8}-[\\da-f]{4}-[\\da-f]{4}-[\\da-f]{4}-[\\da-f]{12}$/iu)\n\n/** @type {(value: string) => boolean} */\nconst isIPv4 = RegExp.prototype.test.bind(/^(?:(?:25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]\\d|\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]\\d|\\d)$/u)\n\n/**\n * @param {Array<string>} input\n * @returns {string}\n */\nfunction stringArrayToHexStripped (input) {\n  let acc = ''\n  let code = 0\n  let i = 0\n\n  for (i = 0; i < input.length; i++) {\n    code = input[i].charCodeAt(0)\n    if (code === 48) {\n      continue\n    }\n    if (!((code >= 48 && code <= 57) || (code >= 65 && code <= 70) || (code >= 97 && code <= 102))) {\n      return ''\n    }\n    acc += input[i]\n    break\n  }\n\n  for (i += 1; i < input.length; i++) {\n    code = input[i].charCodeAt(0)\n    if (!((code >= 48 && code <= 57) || (code >= 65 && code <= 70) || (code >= 97 && code <= 102))) {\n      return ''\n    }\n    acc += input[i]\n  }\n  return acc\n}\n\n/**\n * @typedef {Object} GetIPV6Result\n * @property {boolean} error - Indicates if there was an error parsing the IPv6 address.\n * @property {string} address - The parsed IPv6 address.\n * @property {string} [zone] - The zone identifier, if present.\n */\n\n/**\n * @param {string} value\n * @returns {boolean}\n */\nconst nonSimpleDomain = RegExp.prototype.test.bind(/[^!\"$&'()*+,\\-.;=_`a-z{}~]/u)\n\n/**\n * @param {Array<string>} buffer\n * @returns {boolean}\n */\nfunction consumeIsZone (buffer) {\n  buffer.length = 0\n  return true\n}\n\n/**\n * @param {Array<string>} buffer\n * @param {Array<string>} address\n * @param {GetIPV6Result} output\n * @returns {boolean}\n */\nfunction consumeHextets (buffer, address, output) {\n  if (buffer.length) {\n    const hex = stringArrayToHexStripped(buffer)\n    if (hex !== '') {\n      address.push(hex)\n    } else {\n      output.error = true\n      return false\n    }\n    buffer.length = 0\n  }\n  return true\n}\n\n/**\n * @param {string} input\n * @returns {GetIPV6Result}\n */\nfunction getIPV6 (input) {\n  let tokenCount = 0\n  const output = { error: false, address: '', zone: '' }\n  /** @type {Array<string>} */\n  const address = []\n  /** @type {Array<string>} */\n  const buffer = []\n  let endipv6Encountered = false\n  let endIpv6 = false\n\n  let consume = consumeHextets\n\n  for (let i = 0; i < input.length; i++) {\n    const cursor = input[i]\n    if (cursor === '[' || cursor === ']') { continue }\n    if (cursor === ':') {\n      if (endipv6Encountered === true) {\n        endIpv6 = true\n      }\n      if (!consume(buffer, address, output)) { break }\n      if (++tokenCount > 7) {\n        // not valid\n        output.error = true\n        break\n      }\n      if (i > 0 && input[i - 1] === ':') {\n        endipv6Encountered = true\n      }\n      address.push(':')\n      continue\n    } else if (cursor === '%') {\n      if (!consume(buffer, address, output)) { break }\n      // switch to zone detection\n      consume = consumeIsZone\n    } else {\n      buffer.push(cursor)\n      continue\n    }\n  }\n  if (buffer.length) {\n    if (consume === consumeIsZone) {\n      output.zone = buffer.join('')\n    } else if (endIpv6) {\n      address.push(buffer.join(''))\n    } else {\n      address.push(stringArrayToHexStripped(buffer))\n    }\n  }\n  output.address = address.join('')\n  return output\n}\n\n/**\n * @typedef {Object} NormalizeIPv6Result\n * @property {string} host - The normalized host.\n * @property {string} [escapedHost] - The escaped host.\n * @property {boolean} isIPV6 - Indicates if the host is an IPv6 address.\n */\n\n/**\n * @param {string} host\n * @returns {NormalizeIPv6Result}\n */\nfunction normalizeIPv6 (host) {\n  if (findToken(host, ':') < 2) { return { host, isIPV6: false } }\n  const ipv6 = getIPV6(host)\n\n  if (!ipv6.error) {\n    let newHost = ipv6.address\n    let escapedHost = ipv6.address\n    if (ipv6.zone) {\n      newHost += '%' + ipv6.zone\n      escapedHost += '%25' + ipv6.zone\n    }\n    return { host: newHost, isIPV6: true, escapedHost }\n  } else {\n    return { host, isIPV6: false }\n  }\n}\n\n/**\n * @param {string} str\n * @param {string} token\n * @returns {number}\n */\nfunction findToken (str, token) {\n  let ind = 0\n  for (let i = 0; i < str.length; i++) {\n    if (str[i] === token) ind++\n  }\n  return ind\n}\n\n/**\n * @param {string} path\n * @returns {string}\n *\n * @see https://datatracker.ietf.org/doc/html/rfc3986#section-5.2.4\n */\nfunction removeDotSegments (path) {\n  let input = path\n  const output = []\n  let nextSlash = -1\n  let len = 0\n\n  // eslint-disable-next-line no-cond-assign\n  while (len = input.length) {\n    if (len === 1) {\n      if (input === '.') {\n        break\n      } else if (input === '/') {\n        output.push('/')\n        break\n      } else {\n        output.push(input)\n        break\n      }\n    } else if (len === 2) {\n      if (input[0] === '.') {\n        if (input[1] === '.') {\n          break\n        } else if (input[1] === '/') {\n          input = input.slice(2)\n          continue\n        }\n      } else if (input[0] === '/') {\n        if (input[1] === '.' || input[1] === '/') {\n          output.push('/')\n          break\n        }\n      }\n    } else if (len === 3) {\n      if (input === '/..') {\n        if (output.length !== 0) {\n          output.pop()\n        }\n        output.push('/')\n        break\n      }\n    }\n    if (input[0] === '.') {\n      if (input[1] === '.') {\n        if (input[2] === '/') {\n          input = input.slice(3)\n          continue\n        }\n      } else if (input[1] === '/') {\n        input = input.slice(2)\n        continue\n      }\n    } else if (input[0] === '/') {\n      if (input[1] === '.') {\n        if (input[2] === '/') {\n          input = input.slice(2)\n          continue\n        } else if (input[2] === '.') {\n          if (input[3] === '/') {\n            input = input.slice(3)\n            if (output.length !== 0) {\n              output.pop()\n            }\n            continue\n          }\n        }\n      }\n    }\n\n    // Rule 2E: Move normal path segment to output\n    if ((nextSlash = input.indexOf('/', 1)) === -1) {\n      output.push(input)\n      break\n    } else {\n      output.push(input.slice(0, nextSlash))\n      input = input.slice(nextSlash)\n    }\n  }\n\n  return output.join('')\n}\n\n/**\n * @param {import('../types/index').URIComponent} component\n * @param {boolean} esc\n * @returns {import('../types/index').URIComponent}\n */\nfunction normalizeComponentEncoding (component, esc) {\n  const func = esc !== true ? escape : unescape\n  if (component.scheme !== undefined) {\n    component.scheme = func(component.scheme)\n  }\n  if (component.userinfo !== undefined) {\n    component.userinfo = func(component.userinfo)\n  }\n  if (component.host !== undefined) {\n    component.host = func(component.host)\n  }\n  if (component.path !== undefined) {\n    component.path = func(component.path)\n  }\n  if (component.query !== undefined) {\n    component.query = func(component.query)\n  }\n  if (component.fragment !== undefined) {\n    component.fragment = func(component.fragment)\n  }\n  return component\n}\n\n/**\n * @param {import('../types/index').URIComponent} component\n * @returns {string|undefined}\n */\nfunction recomposeAuthority (component) {\n  const uriTokens = []\n\n  if (component.userinfo !== undefined) {\n    uriTokens.push(component.userinfo)\n    uriTokens.push('@')\n  }\n\n  if (component.host !== undefined) {\n    let host = unescape(component.host)\n    if (!isIPv4(host)) {\n      const ipV6res = normalizeIPv6(host)\n      if (ipV6res.isIPV6 === true) {\n        host = `[${ipV6res.escapedHost}]`\n      } else {\n        host = component.host\n      }\n    }\n    uriTokens.push(host)\n  }\n\n  if (typeof component.port === 'number' || typeof component.port === 'string') {\n    uriTokens.push(':')\n    uriTokens.push(String(component.port))\n  }\n\n  return uriTokens.length ? uriTokens.join('') : undefined\n};\n\nmodule.exports = {\n  nonSimpleDomain,\n  recomposeAuthority,\n  normalizeComponentEncoding,\n  removeDotSegments,\n  isIPv4,\n  isUUID,\n  normalizeIPv6,\n  stringArrayToHexStripped\n}\n","'use strict'\n\nconst { isUUID } = require('./utils')\nconst URN_REG = /([\\da-z][\\d\\-a-z]{0,31}):((?:[\\w!$'()*+,\\-.:;=@]|%[\\da-f]{2})+)/iu\n\nconst supportedSchemeNames = /** @type {const} */ (['http', 'https', 'ws',\n  'wss', 'urn', 'urn:uuid'])\n\n/** @typedef {supportedSchemeNames[number]} SchemeName */\n\n/**\n * @param {string} name\n * @returns {name is SchemeName}\n */\nfunction isValidSchemeName (name) {\n  return supportedSchemeNames.indexOf(/** @type {*} */ (name)) !== -1\n}\n\n/**\n * @callback SchemeFn\n * @param {import('../types/index').URIComponent} component\n * @param {import('../types/index').Options} options\n * @returns {import('../types/index').URIComponent}\n */\n\n/**\n * @typedef {Object} SchemeHandler\n * @property {SchemeName} scheme - The scheme name.\n * @property {boolean} [domainHost] - Indicates if the scheme supports domain hosts.\n * @property {SchemeFn} parse - Function to parse the URI component for this scheme.\n * @property {SchemeFn} serialize - Function to serialize the URI component for this scheme.\n * @property {boolean} [skipNormalize] - Indicates if normalization should be skipped for this scheme.\n * @property {boolean} [absolutePath] - Indicates if the scheme uses absolute paths.\n * @property {boolean} [unicodeSupport] - Indicates if the scheme supports Unicode.\n */\n\n/**\n * @param {import('../types/index').URIComponent} wsComponent\n * @returns {boolean}\n */\nfunction wsIsSecure (wsComponent) {\n  if (wsComponent.secure === true) {\n    return true\n  } else if (wsComponent.secure === false) {\n    return false\n  } else if (wsComponent.scheme) {\n    return (\n      wsComponent.scheme.length === 3 &&\n      (wsComponent.scheme[0] === 'w' || wsComponent.scheme[0] === 'W') &&\n      (wsComponent.scheme[1] === 's' || wsComponent.scheme[1] === 'S') &&\n      (wsComponent.scheme[2] === 's' || wsComponent.scheme[2] === 'S')\n    )\n  } else {\n    return false\n  }\n}\n\n/** @type {SchemeFn} */\nfunction httpParse (component) {\n  if (!component.host) {\n    component.error = component.error || 'HTTP URIs must have a host.'\n  }\n\n  return component\n}\n\n/** @type {SchemeFn} */\nfunction httpSerialize (component) {\n  const secure = String(component.scheme).toLowerCase() === 'https'\n\n  // normalize the default port\n  if (component.port === (secure ? 443 : 80) || component.port === '') {\n    component.port = undefined\n  }\n\n  // normalize the empty path\n  if (!component.path) {\n    component.path = '/'\n  }\n\n  // NOTE: We do not parse query strings for HTTP URIs\n  // as WWW Form Url Encoded query strings are part of the HTML4+ spec,\n  // and not the HTTP spec.\n\n  return component\n}\n\n/** @type {SchemeFn} */\nfunction wsParse (wsComponent) {\n// indicate if the secure flag is set\n  wsComponent.secure = wsIsSecure(wsComponent)\n\n  // construct resouce name\n  wsComponent.resourceName = (wsComponent.path || '/') + (wsComponent.query ? '?' + wsComponent.query : '')\n  wsComponent.path = undefined\n  wsComponent.query = undefined\n\n  return wsComponent\n}\n\n/** @type {SchemeFn} */\nfunction wsSerialize (wsComponent) {\n// normalize the default port\n  if (wsComponent.port === (wsIsSecure(wsComponent) ? 443 : 80) || wsComponent.port === '') {\n    wsComponent.port = undefined\n  }\n\n  // ensure scheme matches secure flag\n  if (typeof wsComponent.secure === 'boolean') {\n    wsComponent.scheme = (wsComponent.secure ? 'wss' : 'ws')\n    wsComponent.secure = undefined\n  }\n\n  // reconstruct path from resource name\n  if (wsComponent.resourceName) {\n    const [path, query] = wsComponent.resourceName.split('?')\n    wsComponent.path = (path && path !== '/' ? path : undefined)\n    wsComponent.query = query\n    wsComponent.resourceName = undefined\n  }\n\n  // forbid fragment component\n  wsComponent.fragment = undefined\n\n  return wsComponent\n}\n\n/** @type {SchemeFn} */\nfunction urnParse (urnComponent, options) {\n  if (!urnComponent.path) {\n    urnComponent.error = 'URN can not be parsed'\n    return urnComponent\n  }\n  const matches = urnComponent.path.match(URN_REG)\n  if (matches) {\n    const scheme = options.scheme || urnComponent.scheme || 'urn'\n    urnComponent.nid = matches[1].toLowerCase()\n    urnComponent.nss = matches[2]\n    const urnScheme = `${scheme}:${options.nid || urnComponent.nid}`\n    const schemeHandler = getSchemeHandler(urnScheme)\n    urnComponent.path = undefined\n\n    if (schemeHandler) {\n      urnComponent = schemeHandler.parse(urnComponent, options)\n    }\n  } else {\n    urnComponent.error = urnComponent.error || 'URN can not be parsed.'\n  }\n\n  return urnComponent\n}\n\n/** @type {SchemeFn} */\nfunction urnSerialize (urnComponent, options) {\n  if (urnComponent.nid === undefined) {\n    throw new Error('URN without nid cannot be serialized')\n  }\n  const scheme = options.scheme || urnComponent.scheme || 'urn'\n  const nid = urnComponent.nid.toLowerCase()\n  const urnScheme = `${scheme}:${options.nid || nid}`\n  const schemeHandler = getSchemeHandler(urnScheme)\n\n  if (schemeHandler) {\n    urnComponent = schemeHandler.serialize(urnComponent, options)\n  }\n\n  const uriComponent = urnComponent\n  const nss = urnComponent.nss\n  uriComponent.path = `${nid || options.nid}:${nss}`\n\n  options.skipEscape = true\n  return uriComponent\n}\n\n/** @type {SchemeFn} */\nfunction urnuuidParse (urnComponent, options) {\n  const uuidComponent = urnComponent\n  uuidComponent.uuid = uuidComponent.nss\n  uuidComponent.nss = undefined\n\n  if (!options.tolerant && (!uuidComponent.uuid || !isUUID(uuidComponent.uuid))) {\n    uuidComponent.error = uuidComponent.error || 'UUID is not valid.'\n  }\n\n  return uuidComponent\n}\n\n/** @type {SchemeFn} */\nfunction urnuuidSerialize (uuidComponent) {\n  const urnComponent = uuidComponent\n  // normalize UUID\n  urnComponent.nss = (uuidComponent.uuid || '').toLowerCase()\n  return urnComponent\n}\n\nconst http = /** @type {SchemeHandler} */ ({\n  scheme: 'http',\n  domainHost: true,\n  parse: httpParse,\n  serialize: httpSerialize\n})\n\nconst https = /** @type {SchemeHandler} */ ({\n  scheme: 'https',\n  domainHost: http.domainHost,\n  parse: httpParse,\n  serialize: httpSerialize\n})\n\nconst ws = /** @type {SchemeHandler} */ ({\n  scheme: 'ws',\n  domainHost: true,\n  parse: wsParse,\n  serialize: wsSerialize\n})\n\nconst wss = /** @type {SchemeHandler} */ ({\n  scheme: 'wss',\n  domainHost: ws.domainHost,\n  parse: ws.parse,\n  serialize: ws.serialize\n})\n\nconst urn = /** @type {SchemeHandler} */ ({\n  scheme: 'urn',\n  parse: urnParse,\n  serialize: urnSerialize,\n  skipNormalize: true\n})\n\nconst urnuuid = /** @type {SchemeHandler} */ ({\n  scheme: 'urn:uuid',\n  parse: urnuuidParse,\n  serialize: urnuuidSerialize,\n  skipNormalize: true\n})\n\nconst SCHEMES = /** @type {Record<SchemeName, SchemeHandler>} */ ({\n  http,\n  https,\n  ws,\n  wss,\n  urn,\n  'urn:uuid': urnuuid\n})\n\nObject.setPrototypeOf(SCHEMES, null)\n\n/**\n * @param {string|undefined} scheme\n * @returns {SchemeHandler|undefined}\n */\nfunction getSchemeHandler (scheme) {\n  return (\n    scheme && (\n      SCHEMES[/** @type {SchemeName} */ (scheme)] ||\n      SCHEMES[/** @type {SchemeName} */(scheme.toLowerCase())])\n  ) ||\n    undefined\n}\n\nmodule.exports = {\n  wsIsSecure,\n  SCHEMES,\n  isValidSchemeName,\n  getSchemeHandler,\n}\n","'use strict'\n\nconst { normalizeIPv6, removeDotSegments, recomposeAuthority, normalizeComponentEncoding, isIPv4, nonSimpleDomain } = require('./lib/utils')\nconst { SCHEMES, getSchemeHandler } = require('./lib/schemes')\n\n/**\n * @template {import('./types/index').URIComponent|string} T\n * @param {T} uri\n * @param {import('./types/index').Options} [options]\n * @returns {T}\n */\nfunction normalize (uri, options) {\n  if (typeof uri === 'string') {\n    uri = /** @type {T} */ (serialize(parse(uri, options), options))\n  } else if (typeof uri === 'object') {\n    uri = /** @type {T} */ (parse(serialize(uri, options), options))\n  }\n  return uri\n}\n\n/**\n * @param {string} baseURI\n * @param {string} relativeURI\n * @param {import('./types/index').Options} [options]\n * @returns {string}\n */\nfunction resolve (baseURI, relativeURI, options) {\n  const schemelessOptions = options ? Object.assign({ scheme: 'null' }, options) : { scheme: 'null' }\n  const resolved = resolveComponent(parse(baseURI, schemelessOptions), parse(relativeURI, schemelessOptions), schemelessOptions, true)\n  schemelessOptions.skipEscape = true\n  return serialize(resolved, schemelessOptions)\n}\n\n/**\n * @param {import ('./types/index').URIComponent} base\n * @param {import ('./types/index').URIComponent} relative\n * @param {import('./types/index').Options} [options]\n * @param {boolean} [skipNormalization=false]\n * @returns {import ('./types/index').URIComponent}\n */\nfunction resolveComponent (base, relative, options, skipNormalization) {\n  /** @type {import('./types/index').URIComponent} */\n  const target = {}\n  if (!skipNormalization) {\n    base = parse(serialize(base, options), options) // normalize base component\n    relative = parse(serialize(relative, options), options) // normalize relative component\n  }\n  options = options || {}\n\n  if (!options.tolerant && relative.scheme) {\n    target.scheme = relative.scheme\n    // target.authority = relative.authority;\n    target.userinfo = relative.userinfo\n    target.host = relative.host\n    target.port = relative.port\n    target.path = removeDotSegments(relative.path || '')\n    target.query = relative.query\n  } else {\n    if (relative.userinfo !== undefined || relative.host !== undefined || relative.port !== undefined) {\n      // target.authority = relative.authority;\n      target.userinfo = relative.userinfo\n      target.host = relative.host\n      target.port = relative.port\n      target.path = removeDotSegments(relative.path || '')\n      target.query = relative.query\n    } else {\n      if (!relative.path) {\n        target.path = base.path\n        if (relative.query !== undefined) {\n          target.query = relative.query\n        } else {\n          target.query = base.query\n        }\n      } else {\n        if (relative.path[0] === '/') {\n          target.path = removeDotSegments(relative.path)\n        } else {\n          if ((base.userinfo !== undefined || base.host !== undefined || base.port !== undefined) && !base.path) {\n            target.path = '/' + relative.path\n          } else if (!base.path) {\n            target.path = relative.path\n          } else {\n            target.path = base.path.slice(0, base.path.lastIndexOf('/') + 1) + relative.path\n          }\n          target.path = removeDotSegments(target.path)\n        }\n        target.query = relative.query\n      }\n      // target.authority = base.authority;\n      target.userinfo = base.userinfo\n      target.host = base.host\n      target.port = base.port\n    }\n    target.scheme = base.scheme\n  }\n\n  target.fragment = relative.fragment\n\n  return target\n}\n\n/**\n * @param {import ('./types/index').URIComponent|string} uriA\n * @param {import ('./types/index').URIComponent|string} uriB\n * @param {import ('./types/index').Options} options\n * @returns {boolean}\n */\nfunction equal (uriA, uriB, options) {\n  if (typeof uriA === 'string') {\n    uriA = unescape(uriA)\n    uriA = serialize(normalizeComponentEncoding(parse(uriA, options), true), { ...options, skipEscape: true })\n  } else if (typeof uriA === 'object') {\n    uriA = serialize(normalizeComponentEncoding(uriA, true), { ...options, skipEscape: true })\n  }\n\n  if (typeof uriB === 'string') {\n    uriB = unescape(uriB)\n    uriB = serialize(normalizeComponentEncoding(parse(uriB, options), true), { ...options, skipEscape: true })\n  } else if (typeof uriB === 'object') {\n    uriB = serialize(normalizeComponentEncoding(uriB, true), { ...options, skipEscape: true })\n  }\n\n  return uriA.toLowerCase() === uriB.toLowerCase()\n}\n\n/**\n * @param {Readonly<import('./types/index').URIComponent>} cmpts\n * @param {import('./types/index').Options} [opts]\n * @returns {string}\n */\nfunction serialize (cmpts, opts) {\n  const component = {\n    host: cmpts.host,\n    scheme: cmpts.scheme,\n    userinfo: cmpts.userinfo,\n    port: cmpts.port,\n    path: cmpts.path,\n    query: cmpts.query,\n    nid: cmpts.nid,\n    nss: cmpts.nss,\n    uuid: cmpts.uuid,\n    fragment: cmpts.fragment,\n    reference: cmpts.reference,\n    resourceName: cmpts.resourceName,\n    secure: cmpts.secure,\n    error: ''\n  }\n  const options = Object.assign({}, opts)\n  const uriTokens = []\n\n  // find scheme handler\n  const schemeHandler = getSchemeHandler(options.scheme || component.scheme)\n\n  // perform scheme specific serialization\n  if (schemeHandler && schemeHandler.serialize) schemeHandler.serialize(component, options)\n\n  if (component.path !== undefined) {\n    if (!options.skipEscape) {\n      component.path = escape(component.path)\n\n      if (component.scheme !== undefined) {\n        component.path = component.path.split('%3A').join(':')\n      }\n    } else {\n      component.path = unescape(component.path)\n    }\n  }\n\n  if (options.reference !== 'suffix' && component.scheme) {\n    uriTokens.push(component.scheme, ':')\n  }\n\n  const authority = recomposeAuthority(component)\n  if (authority !== undefined) {\n    if (options.reference !== 'suffix') {\n      uriTokens.push('//')\n    }\n\n    uriTokens.push(authority)\n\n    if (component.path && component.path[0] !== '/') {\n      uriTokens.push('/')\n    }\n  }\n  if (component.path !== undefined) {\n    let s = component.path\n\n    if (!options.absolutePath && (!schemeHandler || !schemeHandler.absolutePath)) {\n      s = removeDotSegments(s)\n    }\n\n    if (\n      authority === undefined &&\n      s[0] === '/' &&\n      s[1] === '/'\n    ) {\n      // don't allow the path to start with \"//\"\n      s = '/%2F' + s.slice(2)\n    }\n\n    uriTokens.push(s)\n  }\n\n  if (component.query !== undefined) {\n    uriTokens.push('?', component.query)\n  }\n\n  if (component.fragment !== undefined) {\n    uriTokens.push('#', component.fragment)\n  }\n  return uriTokens.join('')\n}\n\nconst URI_PARSE = /^(?:([^#/:?]+):)?(?:\\/\\/((?:([^#/?@]*)@)?(\\[[^#/?\\]]+\\]|[^#/:?]*)(?::(\\d*))?))?([^#?]*)(?:\\?([^#]*))?(?:#((?:.|[\\n\\r])*))?/u\n\n/**\n * @param {string} uri\n * @param {import('./types/index').Options} [opts]\n * @returns\n */\nfunction parse (uri, opts) {\n  const options = Object.assign({}, opts)\n  /** @type {import('./types/index').URIComponent} */\n  const parsed = {\n    scheme: undefined,\n    userinfo: undefined,\n    host: '',\n    port: undefined,\n    path: '',\n    query: undefined,\n    fragment: undefined\n  }\n\n  let isIP = false\n  if (options.reference === 'suffix') {\n    if (options.scheme) {\n      uri = options.scheme + ':' + uri\n    } else {\n      uri = '//' + uri\n    }\n  }\n\n  const matches = uri.match(URI_PARSE)\n\n  if (matches) {\n    // store each component\n    parsed.scheme = matches[1]\n    parsed.userinfo = matches[3]\n    parsed.host = matches[4]\n    parsed.port = parseInt(matches[5], 10)\n    parsed.path = matches[6] || ''\n    parsed.query = matches[7]\n    parsed.fragment = matches[8]\n\n    // fix port number\n    if (isNaN(parsed.port)) {\n      parsed.port = matches[5]\n    }\n    if (parsed.host) {\n      const ipv4result = isIPv4(parsed.host)\n      if (ipv4result === false) {\n        const ipv6result = normalizeIPv6(parsed.host)\n        parsed.host = ipv6result.host.toLowerCase()\n        isIP = ipv6result.isIPV6\n      } else {\n        isIP = true\n      }\n    }\n    if (parsed.scheme === undefined && parsed.userinfo === undefined && parsed.host === undefined && parsed.port === undefined && parsed.query === undefined && !parsed.path) {\n      parsed.reference = 'same-document'\n    } else if (parsed.scheme === undefined) {\n      parsed.reference = 'relative'\n    } else if (parsed.fragment === undefined) {\n      parsed.reference = 'absolute'\n    } else {\n      parsed.reference = 'uri'\n    }\n\n    // check for reference errors\n    if (options.reference && options.reference !== 'suffix' && options.reference !== parsed.reference) {\n      parsed.error = parsed.error || 'URI is not a ' + options.reference + ' reference.'\n    }\n\n    // find scheme handler\n    const schemeHandler = getSchemeHandler(options.scheme || parsed.scheme)\n\n    // check if scheme can't handle IRIs\n    if (!options.unicodeSupport && (!schemeHandler || !schemeHandler.unicodeSupport)) {\n      // if host component is a domain name\n      if (parsed.host && (options.domainHost || (schemeHandler && schemeHandler.domainHost)) && isIP === false && nonSimpleDomain(parsed.host)) {\n        // convert Unicode IDN -> ASCII IDN\n        try {\n          parsed.host = URL.domainToASCII(parsed.host.toLowerCase())\n        } catch (e) {\n          parsed.error = parsed.error || \"Host's domain name can not be converted to ASCII: \" + e\n        }\n      }\n      // convert IRI -> URI\n    }\n\n    if (!schemeHandler || (schemeHandler && !schemeHandler.skipNormalize)) {\n      if (uri.indexOf('%') !== -1) {\n        if (parsed.scheme !== undefined) {\n          parsed.scheme = unescape(parsed.scheme)\n        }\n        if (parsed.host !== undefined) {\n          parsed.host = unescape(parsed.host)\n        }\n      }\n      if (parsed.path) {\n        parsed.path = escape(unescape(parsed.path))\n      }\n      if (parsed.fragment) {\n        parsed.fragment = encodeURI(decodeURIComponent(parsed.fragment))\n      }\n    }\n\n    // perform scheme specific parsing\n    if (schemeHandler && schemeHandler.parse) {\n      schemeHandler.parse(parsed, options)\n    }\n  } else {\n    parsed.error = parsed.error || 'URI can not be parsed.'\n  }\n  return parsed\n}\n\nconst fastUri = {\n  SCHEMES,\n  normalize,\n  resolve,\n  resolveComponent,\n  equal,\n  serialize,\n  parse\n}\n\nmodule.exports = fastUri\nmodule.exports.default = fastUri\nmodule.exports.fastUri = fastUri\n","import * as uri from \"fast-uri\"\n\ntype URI = typeof uri & {code: string}\n;(uri as URI).code = 'require(\"ajv/dist/runtime/uri\").default'\n\nexport default uri as URI\n","export {\n  Format,\n  FormatDefinition,\n  AsyncFormatDefinition,\n  KeywordDefinition,\n  KeywordErrorDefinition,\n  CodeKeywordDefinition,\n  MacroKeywordDefinition,\n  FuncKeywordDefinition,\n  Vocabulary,\n  Schema,\n  SchemaObject,\n  AnySchemaObject,\n  AsyncSchema,\n  AnySchema,\n  ValidateFunction,\n  AsyncValidateFunction,\n  AnyValidateFunction,\n  ErrorObject,\n  ErrorNoParams,\n} from \"./types\"\n\nexport {SchemaCxt, SchemaObjCxt} from \"./compile\"\nexport interface Plugin<Opts> {\n  (ajv: Ajv, options?: Opts): Ajv\n  [prop: string]: any\n}\n\nexport {KeywordCxt} from \"./compile/validate\"\nexport {DefinedError} from \"./vocabularies/errors\"\nexport {JSONType} from \"./compile/rules\"\nexport {JSONSchemaType} from \"./types/json-schema\"\nexport {JTDSchemaType, SomeJTDSchemaType, JTDDataType} from \"./types/jtd-schema\"\nexport {_, str, stringify, nil, Name, Code, CodeGen, CodeGenOptions} from \"./compile/codegen\"\n\nimport type {\n  Schema,\n  AnySchema,\n  AnySchemaObject,\n  SchemaObject,\n  AsyncSchema,\n  Vocabulary,\n  KeywordDefinition,\n  AddedKeywordDefinition,\n  AnyValidateFunction,\n  ValidateFunction,\n  AsyncValidateFunction,\n  ErrorObject,\n  Format,\n  AddedFormat,\n  RegExpEngine,\n  UriResolver,\n} from \"./types\"\nimport type {JSONSchemaType} from \"./types/json-schema\"\nimport type {JTDSchemaType, SomeJTDSchemaType, JTDDataType} from \"./types/jtd-schema\"\nimport ValidationError from \"./runtime/validation_error\"\nimport MissingRefError from \"./compile/ref_error\"\nimport {getRules, ValidationRules, Rule, RuleGroup, JSONType} from \"./compile/rules\"\nimport {SchemaEnv, compileSchema, resolveSchema} from \"./compile\"\nimport {Code, ValueScope} from \"./compile/codegen\"\nimport {normalizeId, getSchemaRefs} from \"./compile/resolve\"\nimport {getJSONTypes} from \"./compile/validate/dataType\"\nimport {eachItem} from \"./compile/util\"\nimport * as $dataRefSchema from \"./refs/data.json\"\n\nimport DefaultUriResolver from \"./runtime/uri\"\n\nconst defaultRegExp: RegExpEngine = (str, flags) => new RegExp(str, flags)\ndefaultRegExp.code = \"new RegExp\"\n\nconst META_IGNORE_OPTIONS: (keyof Options)[] = [\"removeAdditional\", \"useDefaults\", \"coerceTypes\"]\nconst EXT_SCOPE_NAMES = new Set([\n  \"validate\",\n  \"serialize\",\n  \"parse\",\n  \"wrapper\",\n  \"root\",\n  \"schema\",\n  \"keyword\",\n  \"pattern\",\n  \"formats\",\n  \"validate$data\",\n  \"func\",\n  \"obj\",\n  \"Error\",\n])\n\nexport type Options = CurrentOptions & DeprecatedOptions\n\nexport interface CurrentOptions {\n  // strict mode options (NEW)\n  strict?: boolean | \"log\"\n  strictSchema?: boolean | \"log\"\n  strictNumbers?: boolean | \"log\"\n  strictTypes?: boolean | \"log\"\n  strictTuples?: boolean | \"log\"\n  strictRequired?: boolean | \"log\"\n  allowMatchingProperties?: boolean // disables a strict mode restriction\n  allowUnionTypes?: boolean\n  validateFormats?: boolean\n  // validation and reporting options:\n  $data?: boolean\n  allErrors?: boolean\n  verbose?: boolean\n  discriminator?: boolean\n  unicodeRegExp?: boolean\n  timestamp?: \"string\" | \"date\" // JTD only\n  parseDate?: boolean // JTD only\n  allowDate?: boolean // JTD only\n  specialNumbers?: \"fast\" | \"null\" // JTD only\n  $comment?:\n    | true\n    | ((comment: string, schemaPath?: string, rootSchema?: AnySchemaObject) => unknown)\n  formats?: {[Name in string]?: Format}\n  keywords?: Vocabulary\n  schemas?: AnySchema[] | {[Key in string]?: AnySchema}\n  logger?: Logger | false\n  loadSchema?: (uri: string) => Promise<AnySchemaObject>\n  // options to modify validated data:\n  removeAdditional?: boolean | \"all\" | \"failing\"\n  useDefaults?: boolean | \"empty\"\n  coerceTypes?: boolean | \"array\"\n  // advanced options:\n  next?: boolean // NEW\n  unevaluated?: boolean // NEW\n  dynamicRef?: boolean // NEW\n  schemaId?: \"id\" | \"$id\"\n  jtd?: boolean // NEW\n  meta?: SchemaObject | boolean\n  defaultMeta?: string | AnySchemaObject\n  validateSchema?: boolean | \"log\"\n  addUsedSchema?: boolean\n  inlineRefs?: boolean | number\n  passContext?: boolean\n  loopRequired?: number\n  loopEnum?: number // NEW\n  ownProperties?: boolean\n  multipleOfPrecision?: number\n  int32range?: boolean // JTD only\n  messages?: boolean\n  code?: CodeOptions // NEW\n  uriResolver?: UriResolver\n}\n\nexport interface CodeOptions {\n  es5?: boolean\n  esm?: boolean\n  lines?: boolean\n  optimize?: boolean | number\n  formats?: Code // code to require (or construct) map of available formats - for standalone code\n  source?: boolean\n  process?: (code: string, schema?: SchemaEnv) => string\n  regExp?: RegExpEngine\n}\n\ninterface InstanceCodeOptions extends CodeOptions {\n  regExp: RegExpEngine\n  optimize: number\n}\n\ninterface DeprecatedOptions {\n  /** @deprecated */\n  ignoreKeywordsWithRef?: boolean\n  /** @deprecated */\n  jsPropertySyntax?: boolean // added instead of jsonPointers\n  /** @deprecated */\n  unicode?: boolean\n}\n\ninterface RemovedOptions {\n  format?: boolean\n  errorDataPath?: \"object\" | \"property\"\n  nullable?: boolean // \"nullable\" keyword is supported by default\n  jsonPointers?: boolean\n  extendRefs?: true | \"ignore\" | \"fail\"\n  missingRefs?: true | \"ignore\" | \"fail\"\n  processCode?: (code: string, schema?: SchemaEnv) => string\n  sourceCode?: boolean\n  strictDefaults?: boolean\n  strictKeywords?: boolean\n  uniqueItems?: boolean\n  unknownFormats?: true | string[] | \"ignore\"\n  cache?: any\n  serialize?: (schema: AnySchema) => unknown\n  ajvErrors?: boolean\n}\n\ntype OptionsInfo<T extends RemovedOptions | DeprecatedOptions> = {\n  [K in keyof T]-?: string | undefined\n}\n\nconst removedOptions: OptionsInfo<RemovedOptions> = {\n  errorDataPath: \"\",\n  format: \"`validateFormats: false` can be used instead.\",\n  nullable: '\"nullable\" keyword is supported by default.',\n  jsonPointers: \"Deprecated jsPropertySyntax can be used instead.\",\n  extendRefs: \"Deprecated ignoreKeywordsWithRef can be used instead.\",\n  missingRefs: \"Pass empty schema with $id that should be ignored to ajv.addSchema.\",\n  processCode: \"Use option `code: {process: (code, schemaEnv: object) => string}`\",\n  sourceCode: \"Use option `code: {source: true}`\",\n  strictDefaults: \"It is default now, see option `strict`.\",\n  strictKeywords: \"It is default now, see option `strict`.\",\n  uniqueItems: '\"uniqueItems\" keyword is always validated.',\n  unknownFormats: \"Disable strict mode or pass `true` to `ajv.addFormat` (or `formats` option).\",\n  cache: \"Map is used as cache, schema object as key.\",\n  serialize: \"Map is used as cache, schema object as key.\",\n  ajvErrors: \"It is default now.\",\n}\n\nconst deprecatedOptions: OptionsInfo<DeprecatedOptions> = {\n  ignoreKeywordsWithRef: \"\",\n  jsPropertySyntax: \"\",\n  unicode: '\"minLength\"/\"maxLength\" account for unicode characters by default.',\n}\n\ntype RequiredInstanceOptions = {\n  [K in\n    | \"strictSchema\"\n    | \"strictNumbers\"\n    | \"strictTypes\"\n    | \"strictTuples\"\n    | \"strictRequired\"\n    | \"inlineRefs\"\n    | \"loopRequired\"\n    | \"loopEnum\"\n    | \"meta\"\n    | \"messages\"\n    | \"schemaId\"\n    | \"addUsedSchema\"\n    | \"validateSchema\"\n    | \"validateFormats\"\n    | \"int32range\"\n    | \"unicodeRegExp\"\n    | \"uriResolver\"]: NonNullable<Options[K]>\n} & {code: InstanceCodeOptions}\n\nexport type InstanceOptions = Options & RequiredInstanceOptions\n\nconst MAX_EXPRESSION = 200\n\n// eslint-disable-next-line complexity\nfunction requiredOptions(o: Options): RequiredInstanceOptions {\n  const s = o.strict\n  const _optz = o.code?.optimize\n  const optimize = _optz === true || _optz === undefined ? 1 : _optz || 0\n  const regExp = o.code?.regExp ?? defaultRegExp\n  const uriResolver = o.uriResolver ?? DefaultUriResolver\n  return {\n    strictSchema: o.strictSchema ?? s ?? true,\n    strictNumbers: o.strictNumbers ?? s ?? true,\n    strictTypes: o.strictTypes ?? s ?? \"log\",\n    strictTuples: o.strictTuples ?? s ?? \"log\",\n    strictRequired: o.strictRequired ?? s ?? false,\n    code: o.code ? {...o.code, optimize, regExp} : {optimize, regExp},\n    loopRequired: o.loopRequired ?? MAX_EXPRESSION,\n    loopEnum: o.loopEnum ?? MAX_EXPRESSION,\n    meta: o.meta ?? true,\n    messages: o.messages ?? true,\n    inlineRefs: o.inlineRefs ?? true,\n    schemaId: o.schemaId ?? \"$id\",\n    addUsedSchema: o.addUsedSchema ?? true,\n    validateSchema: o.validateSchema ?? true,\n    validateFormats: o.validateFormats ?? true,\n    unicodeRegExp: o.unicodeRegExp ?? true,\n    int32range: o.int32range ?? true,\n    uriResolver: uriResolver,\n  }\n}\n\nexport interface Logger {\n  log(...args: unknown[]): unknown\n  warn(...args: unknown[]): unknown\n  error(...args: unknown[]): unknown\n}\n\nexport default class Ajv {\n  opts: InstanceOptions\n  errors?: ErrorObject[] | null // errors from the last validation\n  logger: Logger\n  // shared external scope values for compiled functions\n  readonly scope: ValueScope\n  readonly schemas: {[Key in string]?: SchemaEnv} = {}\n  readonly refs: {[Ref in string]?: SchemaEnv | string} = {}\n  readonly formats: {[Name in string]?: AddedFormat} = {}\n  readonly RULES: ValidationRules\n  readonly _compilations: Set<SchemaEnv> = new Set()\n  private readonly _loading: {[Ref in string]?: Promise<AnySchemaObject>} = {}\n  private readonly _cache: Map<AnySchema, SchemaEnv> = new Map()\n  private readonly _metaOpts: InstanceOptions\n\n  static ValidationError = ValidationError\n  static MissingRefError = MissingRefError\n\n  constructor(opts: Options = {}) {\n    opts = this.opts = {...opts, ...requiredOptions(opts)}\n    const {es5, lines} = this.opts.code\n\n    this.scope = new ValueScope({scope: {}, prefixes: EXT_SCOPE_NAMES, es5, lines})\n    this.logger = getLogger(opts.logger)\n    const formatOpt = opts.validateFormats\n    opts.validateFormats = false\n\n    this.RULES = getRules()\n    checkOptions.call(this, removedOptions, opts, \"NOT SUPPORTED\")\n    checkOptions.call(this, deprecatedOptions, opts, \"DEPRECATED\", \"warn\")\n    this._metaOpts = getMetaSchemaOptions.call(this)\n\n    if (opts.formats) addInitialFormats.call(this)\n    this._addVocabularies()\n    this._addDefaultMetaSchema()\n    if (opts.keywords) addInitialKeywords.call(this, opts.keywords)\n    if (typeof opts.meta == \"object\") this.addMetaSchema(opts.meta)\n    addInitialSchemas.call(this)\n    opts.validateFormats = formatOpt\n  }\n\n  _addVocabularies(): void {\n    this.addKeyword(\"$async\")\n  }\n\n  _addDefaultMetaSchema(): void {\n    const {$data, meta, schemaId} = this.opts\n    let _dataRefSchema: SchemaObject = $dataRefSchema\n    if (schemaId === \"id\") {\n      _dataRefSchema = {...$dataRefSchema}\n      _dataRefSchema.id = _dataRefSchema.$id\n      delete _dataRefSchema.$id\n    }\n    if (meta && $data) this.addMetaSchema(_dataRefSchema, _dataRefSchema[schemaId], false)\n  }\n\n  defaultMeta(): string | AnySchemaObject | undefined {\n    const {meta, schemaId} = this.opts\n    return (this.opts.defaultMeta = typeof meta == \"object\" ? meta[schemaId] || meta : undefined)\n  }\n\n  // Validate data using schema\n  // AnySchema will be compiled and cached using schema itself as a key for Map\n  validate(schema: Schema | string, data: unknown): boolean\n  validate(schemaKeyRef: AnySchema | string, data: unknown): boolean | Promise<unknown>\n  validate<T>(schema: Schema | JSONSchemaType<T> | string, data: unknown): data is T\n  // Separated for type inference to work\n  // eslint-disable-next-line @typescript-eslint/unified-signatures\n  validate<T>(schema: JTDSchemaType<T>, data: unknown): data is T\n  // This overload is only intended for typescript inference, the first\n  // argument prevents manual type annotation from matching this overload\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  validate<N extends never, T extends SomeJTDSchemaType>(\n    schema: T,\n    data: unknown\n  ): data is JTDDataType<T>\n  // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n  validate<T>(schema: AsyncSchema, data: unknown | T): Promise<T>\n  validate<T>(schemaKeyRef: AnySchema | string, data: unknown): data is T | Promise<T>\n  validate<T>(\n    schemaKeyRef: AnySchema | string, // key, ref or schema object\n    // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n    data: unknown | T // to be validated\n  ): boolean | Promise<T> {\n    let v: AnyValidateFunction | undefined\n    if (typeof schemaKeyRef == \"string\") {\n      v = this.getSchema<T>(schemaKeyRef)\n      if (!v) throw new Error(`no schema with key or ref \"${schemaKeyRef}\"`)\n    } else {\n      v = this.compile<T>(schemaKeyRef)\n    }\n\n    const valid = v(data)\n    if (!(\"$async\" in v)) this.errors = v.errors\n    return valid\n  }\n\n  // Create validation function for passed schema\n  // _meta: true if schema is a meta-schema. Used internally to compile meta schemas of user-defined keywords.\n  compile<T = unknown>(schema: Schema | JSONSchemaType<T>, _meta?: boolean): ValidateFunction<T>\n  // Separated for type inference to work\n  // eslint-disable-next-line @typescript-eslint/unified-signatures\n  compile<T = unknown>(schema: JTDSchemaType<T>, _meta?: boolean): ValidateFunction<T>\n  // This overload is only intended for typescript inference, the first\n  // argument prevents manual type annotation from matching this overload\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  compile<N extends never, T extends SomeJTDSchemaType>(\n    schema: T,\n    _meta?: boolean\n  ): ValidateFunction<JTDDataType<T>>\n  compile<T = unknown>(schema: AsyncSchema, _meta?: boolean): AsyncValidateFunction<T>\n  compile<T = unknown>(schema: AnySchema, _meta?: boolean): AnyValidateFunction<T>\n  compile<T = unknown>(schema: AnySchema, _meta?: boolean): AnyValidateFunction<T> {\n    const sch = this._addSchema(schema, _meta)\n    return (sch.validate || this._compileSchemaEnv(sch)) as AnyValidateFunction<T>\n  }\n\n  // Creates validating function for passed schema with asynchronous loading of missing schemas.\n  // `loadSchema` option should be a function that accepts schema uri and returns promise that resolves with the schema.\n  // TODO allow passing schema URI\n  // meta - optional true to compile meta-schema\n  compileAsync<T = unknown>(\n    schema: SchemaObject | JSONSchemaType<T>,\n    _meta?: boolean\n  ): Promise<ValidateFunction<T>>\n  // Separated for type inference to work\n  // eslint-disable-next-line @typescript-eslint/unified-signatures\n  compileAsync<T = unknown>(schema: JTDSchemaType<T>, _meta?: boolean): Promise<ValidateFunction<T>>\n  compileAsync<T = unknown>(schema: AsyncSchema, meta?: boolean): Promise<AsyncValidateFunction<T>>\n  // eslint-disable-next-line @typescript-eslint/unified-signatures\n  compileAsync<T = unknown>(\n    schema: AnySchemaObject,\n    meta?: boolean\n  ): Promise<AnyValidateFunction<T>>\n  compileAsync<T = unknown>(\n    schema: AnySchemaObject,\n    meta?: boolean\n  ): Promise<AnyValidateFunction<T>> {\n    if (typeof this.opts.loadSchema != \"function\") {\n      throw new Error(\"options.loadSchema should be a function\")\n    }\n    const {loadSchema} = this.opts\n    return runCompileAsync.call(this, schema, meta)\n\n    async function runCompileAsync(\n      this: Ajv,\n      _schema: AnySchemaObject,\n      _meta?: boolean\n    ): Promise<AnyValidateFunction> {\n      await loadMetaSchema.call(this, _schema.$schema)\n      const sch = this._addSchema(_schema, _meta)\n      return sch.validate || _compileAsync.call(this, sch)\n    }\n\n    async function loadMetaSchema(this: Ajv, $ref?: string): Promise<void> {\n      if ($ref && !this.getSchema($ref)) {\n        await runCompileAsync.call(this, {$ref}, true)\n      }\n    }\n\n    async function _compileAsync(this: Ajv, sch: SchemaEnv): Promise<AnyValidateFunction> {\n      try {\n        return this._compileSchemaEnv(sch)\n      } catch (e) {\n        if (!(e instanceof MissingRefError)) throw e\n        checkLoaded.call(this, e)\n        await loadMissingSchema.call(this, e.missingSchema)\n        return _compileAsync.call(this, sch)\n      }\n    }\n\n    function checkLoaded(this: Ajv, {missingSchema: ref, missingRef}: MissingRefError): void {\n      if (this.refs[ref]) {\n        throw new Error(`AnySchema ${ref} is loaded but ${missingRef} cannot be resolved`)\n      }\n    }\n\n    async function loadMissingSchema(this: Ajv, ref: string): Promise<void> {\n      const _schema = await _loadSchema.call(this, ref)\n      if (!this.refs[ref]) await loadMetaSchema.call(this, _schema.$schema)\n      if (!this.refs[ref]) this.addSchema(_schema, ref, meta)\n    }\n\n    async function _loadSchema(this: Ajv, ref: string): Promise<AnySchemaObject> {\n      const p = this._loading[ref]\n      if (p) return p\n      try {\n        return await (this._loading[ref] = loadSchema(ref))\n      } finally {\n        delete this._loading[ref]\n      }\n    }\n  }\n\n  // Adds schema to the instance\n  addSchema(\n    schema: AnySchema | AnySchema[], // If array is passed, `key` will be ignored\n    key?: string, // Optional schema key. Can be passed to `validate` method instead of schema object or id/ref. One schema per instance can have empty `id` and `key`.\n    _meta?: boolean, // true if schema is a meta-schema. Used internally, addMetaSchema should be used instead.\n    _validateSchema = this.opts.validateSchema // false to skip schema validation. Used internally, option validateSchema should be used instead.\n  ): Ajv {\n    if (Array.isArray(schema)) {\n      for (const sch of schema) this.addSchema(sch, undefined, _meta, _validateSchema)\n      return this\n    }\n    let id: string | undefined\n    if (typeof schema === \"object\") {\n      const {schemaId} = this.opts\n      id = schema[schemaId]\n      if (id !== undefined && typeof id != \"string\") {\n        throw new Error(`schema ${schemaId} must be string`)\n      }\n    }\n    key = normalizeId(key || id)\n    this._checkUnique(key)\n    this.schemas[key] = this._addSchema(schema, _meta, key, _validateSchema, true)\n    return this\n  }\n\n  // Add schema that will be used to validate other schemas\n  // options in META_IGNORE_OPTIONS are alway set to false\n  addMetaSchema(\n    schema: AnySchemaObject,\n    key?: string, // schema key\n    _validateSchema = this.opts.validateSchema // false to skip schema validation, can be used to override validateSchema option for meta-schema\n  ): Ajv {\n    this.addSchema(schema, key, true, _validateSchema)\n    return this\n  }\n\n  //  Validate schema against its meta-schema\n  validateSchema(schema: AnySchema, throwOrLogError?: boolean): boolean | Promise<unknown> {\n    if (typeof schema == \"boolean\") return true\n    let $schema: string | AnySchemaObject | undefined\n    $schema = schema.$schema\n    if ($schema !== undefined && typeof $schema != \"string\") {\n      throw new Error(\"$schema must be a string\")\n    }\n    $schema = $schema || this.opts.defaultMeta || this.defaultMeta()\n    if (!$schema) {\n      this.logger.warn(\"meta-schema not available\")\n      this.errors = null\n      return true\n    }\n    const valid = this.validate($schema, schema)\n    if (!valid && throwOrLogError) {\n      const message = \"schema is invalid: \" + this.errorsText()\n      if (this.opts.validateSchema === \"log\") this.logger.error(message)\n      else throw new Error(message)\n    }\n    return valid\n  }\n\n  // Get compiled schema by `key` or `ref`.\n  // (`key` that was passed to `addSchema` or full schema reference - `schema.$id` or resolved id)\n  getSchema<T = unknown>(keyRef: string): AnyValidateFunction<T> | undefined {\n    let sch\n    while (typeof (sch = getSchEnv.call(this, keyRef)) == \"string\") keyRef = sch\n    if (sch === undefined) {\n      const {schemaId} = this.opts\n      const root = new SchemaEnv({schema: {}, schemaId})\n      sch = resolveSchema.call(this, root, keyRef)\n      if (!sch) return\n      this.refs[keyRef] = sch\n    }\n    return (sch.validate || this._compileSchemaEnv(sch)) as AnyValidateFunction<T> | undefined\n  }\n\n  // Remove cached schema(s).\n  // If no parameter is passed all schemas but meta-schemas are removed.\n  // If RegExp is passed all schemas with key/id matching pattern but meta-schemas are removed.\n  // Even if schema is referenced by other schemas it still can be removed as other schemas have local references.\n  removeSchema(schemaKeyRef?: AnySchema | string | RegExp): Ajv {\n    if (schemaKeyRef instanceof RegExp) {\n      this._removeAllSchemas(this.schemas, schemaKeyRef)\n      this._removeAllSchemas(this.refs, schemaKeyRef)\n      return this\n    }\n    switch (typeof schemaKeyRef) {\n      case \"undefined\":\n        this._removeAllSchemas(this.schemas)\n        this._removeAllSchemas(this.refs)\n        this._cache.clear()\n        return this\n      case \"string\": {\n        const sch = getSchEnv.call(this, schemaKeyRef)\n        if (typeof sch == \"object\") this._cache.delete(sch.schema)\n        delete this.schemas[schemaKeyRef]\n        delete this.refs[schemaKeyRef]\n        return this\n      }\n      case \"object\": {\n        const cacheKey = schemaKeyRef\n        this._cache.delete(cacheKey)\n        let id = schemaKeyRef[this.opts.schemaId]\n        if (id) {\n          id = normalizeId(id)\n          delete this.schemas[id]\n          delete this.refs[id]\n        }\n        return this\n      }\n      default:\n        throw new Error(\"ajv.removeSchema: invalid parameter\")\n    }\n  }\n\n  // add \"vocabulary\" - a collection of keywords\n  addVocabulary(definitions: Vocabulary): Ajv {\n    for (const def of definitions) this.addKeyword(def)\n    return this\n  }\n\n  addKeyword(\n    kwdOrDef: string | KeywordDefinition,\n    def?: KeywordDefinition // deprecated\n  ): Ajv {\n    let keyword: string | string[]\n    if (typeof kwdOrDef == \"string\") {\n      keyword = kwdOrDef\n      if (typeof def == \"object\") {\n        this.logger.warn(\"these parameters are deprecated, see docs for addKeyword\")\n        def.keyword = keyword\n      }\n    } else if (typeof kwdOrDef == \"object\" && def === undefined) {\n      def = kwdOrDef\n      keyword = def.keyword\n      if (Array.isArray(keyword) && !keyword.length) {\n        throw new Error(\"addKeywords: keyword must be string or non-empty array\")\n      }\n    } else {\n      throw new Error(\"invalid addKeywords parameters\")\n    }\n\n    checkKeyword.call(this, keyword, def)\n    if (!def) {\n      eachItem(keyword, (kwd) => addRule.call(this, kwd))\n      return this\n    }\n    keywordMetaschema.call(this, def)\n    const definition: AddedKeywordDefinition = {\n      ...def,\n      type: getJSONTypes(def.type),\n      schemaType: getJSONTypes(def.schemaType),\n    }\n    eachItem(\n      keyword,\n      definition.type.length === 0\n        ? (k) => addRule.call(this, k, definition)\n        : (k) => definition.type.forEach((t) => addRule.call(this, k, definition, t))\n    )\n    return this\n  }\n\n  getKeyword(keyword: string): AddedKeywordDefinition | boolean {\n    const rule = this.RULES.all[keyword]\n    return typeof rule == \"object\" ? rule.definition : !!rule\n  }\n\n  // Remove keyword\n  removeKeyword(keyword: string): Ajv {\n    // TODO return type should be Ajv\n    const {RULES} = this\n    delete RULES.keywords[keyword]\n    delete RULES.all[keyword]\n    for (const group of RULES.rules) {\n      const i = group.rules.findIndex((rule) => rule.keyword === keyword)\n      if (i >= 0) group.rules.splice(i, 1)\n    }\n    return this\n  }\n\n  // Add format\n  addFormat(name: string, format: Format): Ajv {\n    if (typeof format == \"string\") format = new RegExp(format)\n    this.formats[name] = format\n    return this\n  }\n\n  errorsText(\n    errors: ErrorObject[] | null | undefined = this.errors, // optional array of validation errors\n    {separator = \", \", dataVar = \"data\"}: ErrorsTextOptions = {} // optional options with properties `separator` and `dataVar`\n  ): string {\n    if (!errors || errors.length === 0) return \"No errors\"\n    return errors\n      .map((e) => `${dataVar}${e.instancePath} ${e.message}`)\n      .reduce((text, msg) => text + separator + msg)\n  }\n\n  $dataMetaSchema(metaSchema: AnySchemaObject, keywordsJsonPointers: string[]): AnySchemaObject {\n    const rules = this.RULES.all\n    metaSchema = JSON.parse(JSON.stringify(metaSchema))\n    for (const jsonPointer of keywordsJsonPointers) {\n      const segments = jsonPointer.split(\"/\").slice(1) // first segment is an empty string\n      let keywords = metaSchema\n      for (const seg of segments) keywords = keywords[seg] as AnySchemaObject\n\n      for (const key in rules) {\n        const rule = rules[key]\n        if (typeof rule != \"object\") continue\n        const {$data} = rule.definition\n        const schema = keywords[key] as AnySchemaObject | undefined\n        if ($data && schema) keywords[key] = schemaOrData(schema)\n      }\n    }\n\n    return metaSchema\n  }\n\n  private _removeAllSchemas(schemas: {[Ref in string]?: SchemaEnv | string}, regex?: RegExp): void {\n    for (const keyRef in schemas) {\n      const sch = schemas[keyRef]\n      if (!regex || regex.test(keyRef)) {\n        if (typeof sch == \"string\") {\n          delete schemas[keyRef]\n        } else if (sch && !sch.meta) {\n          this._cache.delete(sch.schema)\n          delete schemas[keyRef]\n        }\n      }\n    }\n  }\n\n  _addSchema(\n    schema: AnySchema,\n    meta?: boolean,\n    baseId?: string,\n    validateSchema = this.opts.validateSchema,\n    addSchema = this.opts.addUsedSchema\n  ): SchemaEnv {\n    let id: string | undefined\n    const {schemaId} = this.opts\n    if (typeof schema == \"object\") {\n      id = schema[schemaId]\n    } else {\n      if (this.opts.jtd) throw new Error(\"schema must be object\")\n      else if (typeof schema != \"boolean\") throw new Error(\"schema must be object or boolean\")\n    }\n    let sch = this._cache.get(schema)\n    if (sch !== undefined) return sch\n\n    baseId = normalizeId(id || baseId)\n    const localRefs = getSchemaRefs.call(this, schema, baseId)\n    sch = new SchemaEnv({schema, schemaId, meta, baseId, localRefs})\n    this._cache.set(sch.schema, sch)\n    if (addSchema && !baseId.startsWith(\"#\")) {\n      // TODO atm it is allowed to overwrite schemas without id (instead of not adding them)\n      if (baseId) this._checkUnique(baseId)\n      this.refs[baseId] = sch\n    }\n    if (validateSchema) this.validateSchema(schema, true)\n    return sch\n  }\n\n  private _checkUnique(id: string): void {\n    if (this.schemas[id] || this.refs[id]) {\n      throw new Error(`schema with key or id \"${id}\" already exists`)\n    }\n  }\n\n  private _compileSchemaEnv(sch: SchemaEnv): AnyValidateFunction {\n    if (sch.meta) this._compileMetaSchema(sch)\n    else compileSchema.call(this, sch)\n\n    /* istanbul ignore if */\n    if (!sch.validate) throw new Error(\"ajv implementation error\")\n    return sch.validate\n  }\n\n  private _compileMetaSchema(sch: SchemaEnv): void {\n    const currentOpts = this.opts\n    this.opts = this._metaOpts\n    try {\n      compileSchema.call(this, sch)\n    } finally {\n      this.opts = currentOpts\n    }\n  }\n}\n\nexport interface ErrorsTextOptions {\n  separator?: string\n  dataVar?: string\n}\n\nfunction checkOptions(\n  this: Ajv,\n  checkOpts: OptionsInfo<RemovedOptions | DeprecatedOptions>,\n  options: Options & RemovedOptions,\n  msg: string,\n  log: \"warn\" | \"error\" = \"error\"\n): void {\n  for (const key in checkOpts) {\n    const opt = key as keyof typeof checkOpts\n    if (opt in options) this.logger[log](`${msg}: option ${key}. ${checkOpts[opt]}`)\n  }\n}\n\nfunction getSchEnv(this: Ajv, keyRef: string): SchemaEnv | string | undefined {\n  keyRef = normalizeId(keyRef) // TODO tests fail without this line\n  return this.schemas[keyRef] || this.refs[keyRef]\n}\n\nfunction addInitialSchemas(this: Ajv): void {\n  const optsSchemas = this.opts.schemas\n  if (!optsSchemas) return\n  if (Array.isArray(optsSchemas)) this.addSchema(optsSchemas)\n  else for (const key in optsSchemas) this.addSchema(optsSchemas[key] as AnySchema, key)\n}\n\nfunction addInitialFormats(this: Ajv): void {\n  for (const name in this.opts.formats) {\n    const format = this.opts.formats[name]\n    if (format) this.addFormat(name, format)\n  }\n}\n\nfunction addInitialKeywords(\n  this: Ajv,\n  defs: Vocabulary | {[K in string]?: KeywordDefinition}\n): void {\n  if (Array.isArray(defs)) {\n    this.addVocabulary(defs)\n    return\n  }\n  this.logger.warn(\"keywords option as map is deprecated, pass array\")\n  for (const keyword in defs) {\n    const def = defs[keyword] as KeywordDefinition\n    if (!def.keyword) def.keyword = keyword\n    this.addKeyword(def)\n  }\n}\n\nfunction getMetaSchemaOptions(this: Ajv): InstanceOptions {\n  const metaOpts = {...this.opts}\n  for (const opt of META_IGNORE_OPTIONS) delete metaOpts[opt]\n  return metaOpts\n}\n\nconst noLogs = {log() {}, warn() {}, error() {}}\n\nfunction getLogger(logger?: Partial<Logger> | false): Logger {\n  if (logger === false) return noLogs\n  if (logger === undefined) return console\n  if (logger.log && logger.warn && logger.error) return logger as Logger\n  throw new Error(\"logger must implement log, warn and error methods\")\n}\n\nconst KEYWORD_NAME = /^[a-z_$][a-z0-9_$:-]*$/i\n\nfunction checkKeyword(this: Ajv, keyword: string | string[], def?: KeywordDefinition): void {\n  const {RULES} = this\n  eachItem(keyword, (kwd) => {\n    if (RULES.keywords[kwd]) throw new Error(`Keyword ${kwd} is already defined`)\n    if (!KEYWORD_NAME.test(kwd)) throw new Error(`Keyword ${kwd} has invalid name`)\n  })\n  if (!def) return\n  if (def.$data && !(\"code\" in def || \"validate\" in def)) {\n    throw new Error('$data keyword must have \"code\" or \"validate\" function')\n  }\n}\n\nfunction addRule(\n  this: Ajv,\n  keyword: string,\n  definition?: AddedKeywordDefinition,\n  dataType?: JSONType\n): void {\n  const post = definition?.post\n  if (dataType && post) throw new Error('keyword with \"post\" flag cannot have \"type\"')\n  const {RULES} = this\n  let ruleGroup = post ? RULES.post : RULES.rules.find(({type: t}) => t === dataType)\n  if (!ruleGroup) {\n    ruleGroup = {type: dataType, rules: []}\n    RULES.rules.push(ruleGroup)\n  }\n  RULES.keywords[keyword] = true\n  if (!definition) return\n\n  const rule: Rule = {\n    keyword,\n    definition: {\n      ...definition,\n      type: getJSONTypes(definition.type),\n      schemaType: getJSONTypes(definition.schemaType),\n    },\n  }\n  if (definition.before) addBeforeRule.call(this, ruleGroup, rule, definition.before)\n  else ruleGroup.rules.push(rule)\n  RULES.all[keyword] = rule\n  definition.implements?.forEach((kwd) => this.addKeyword(kwd))\n}\n\nfunction addBeforeRule(this: Ajv, ruleGroup: RuleGroup, rule: Rule, before: string): void {\n  const i = ruleGroup.rules.findIndex((_rule) => _rule.keyword === before)\n  if (i >= 0) {\n    ruleGroup.rules.splice(i, 0, rule)\n  } else {\n    ruleGroup.rules.push(rule)\n    this.logger.warn(`rule ${before} is not defined`)\n  }\n}\n\nfunction keywordMetaschema(this: Ajv, def: KeywordDefinition): void {\n  let {metaSchema} = def\n  if (metaSchema === undefined) return\n  if (def.$data && this.opts.$data) metaSchema = schemaOrData(metaSchema)\n  def.validateSchema = this.compile(metaSchema, true)\n}\n\nconst $dataRef = {\n  $ref: \"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#\",\n}\n\nfunction schemaOrData(schema: AnySchema): AnySchemaObject {\n  return {anyOf: [schema, $dataRef]}\n}\n","import type {CodeKeywordDefinition} from \"../../types\"\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"id\",\n  code() {\n    throw new Error('NOT SUPPORTED: keyword \"id\", use \"$id\" for schema ID')\n  },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, AnySchema} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport MissingRefError from \"../../compile/ref_error\"\nimport {callValidateCode} from \"../code\"\nimport {_, nil, stringify, Code, Name} from \"../../compile/codegen\"\nimport N from \"../../compile/names\"\nimport {SchemaEnv, resolveRef} from \"../../compile\"\nimport {mergeEvaluated} from \"../../compile/util\"\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"$ref\",\n  schemaType: \"string\",\n  code(cxt: KeywordCxt): void {\n    const {gen, schema: $ref, it} = cxt\n    const {baseId, schemaEnv: env, validateName, opts, self} = it\n    const {root} = env\n    if (($ref === \"#\" || $ref === \"#/\") && baseId === root.baseId) return callRootRef()\n    const schOrEnv = resolveRef.call(self, root, baseId, $ref)\n    if (schOrEnv === undefined) throw new MissingRefError(it.opts.uriResolver, baseId, $ref)\n    if (schOrEnv instanceof SchemaEnv) return callValidate(schOrEnv)\n    return inlineRefSchema(schOrEnv)\n\n    function callRootRef(): void {\n      if (env === root) return callRef(cxt, validateName, env, env.$async)\n      const rootName = gen.scopeValue(\"root\", {ref: root})\n      return callRef(cxt, _`${rootName}.validate`, root, root.$async)\n    }\n\n    function callValidate(sch: SchemaEnv): void {\n      const v = getValidate(cxt, sch)\n      callRef(cxt, v, sch, sch.$async)\n    }\n\n    function inlineRefSchema(sch: AnySchema): void {\n      const schName = gen.scopeValue(\n        \"schema\",\n        opts.code.source === true ? {ref: sch, code: stringify(sch)} : {ref: sch}\n      )\n      const valid = gen.name(\"valid\")\n      const schCxt = cxt.subschema(\n        {\n          schema: sch,\n          dataTypes: [],\n          schemaPath: nil,\n          topSchemaRef: schName,\n          errSchemaPath: $ref,\n        },\n        valid\n      )\n      cxt.mergeEvaluated(schCxt)\n      cxt.ok(valid)\n    }\n  },\n}\n\nexport function getValidate(cxt: KeywordCxt, sch: SchemaEnv): Code {\n  const {gen} = cxt\n  return sch.validate\n    ? gen.scopeValue(\"validate\", {ref: sch.validate})\n    : _`${gen.scopeValue(\"wrapper\", {ref: sch})}.validate`\n}\n\nexport function callRef(cxt: KeywordCxt, v: Code, sch?: SchemaEnv, $async?: boolean): void {\n  const {gen, it} = cxt\n  const {allErrors, schemaEnv: env, opts} = it\n  const passCxt = opts.passContext ? N.this : nil\n  if ($async) callAsyncRef()\n  else callSyncRef()\n\n  function callAsyncRef(): void {\n    if (!env.$async) throw new Error(\"async schema referenced by sync schema\")\n    const valid = gen.let(\"valid\")\n    gen.try(\n      () => {\n        gen.code(_`await ${callValidateCode(cxt, v, passCxt)}`)\n        addEvaluatedFrom(v) // TODO will not work with async, it has to be returned with the result\n        if (!allErrors) gen.assign(valid, true)\n      },\n      (e) => {\n        gen.if(_`!(${e} instanceof ${it.ValidationError as Name})`, () => gen.throw(e))\n        addErrorsFrom(e)\n        if (!allErrors) gen.assign(valid, false)\n      }\n    )\n    cxt.ok(valid)\n  }\n\n  function callSyncRef(): void {\n    cxt.result(\n      callValidateCode(cxt, v, passCxt),\n      () => addEvaluatedFrom(v),\n      () => addErrorsFrom(v)\n    )\n  }\n\n  function addErrorsFrom(source: Code): void {\n    const errs = _`${source}.errors`\n    gen.assign(N.vErrors, _`${N.vErrors} === null ? ${errs} : ${N.vErrors}.concat(${errs})`) // TODO tagged\n    gen.assign(N.errors, _`${N.vErrors}.length`)\n  }\n\n  function addEvaluatedFrom(source: Code): void {\n    if (!it.opts.unevaluated) return\n    const schEvaluated = sch?.validate?.evaluated\n    // TODO refactor\n    if (it.props !== true) {\n      if (schEvaluated && !schEvaluated.dynamicProps) {\n        if (schEvaluated.props !== undefined) {\n          it.props = mergeEvaluated.props(gen, schEvaluated.props, it.props)\n        }\n      } else {\n        const props = gen.var(\"props\", _`${source}.evaluated.props`)\n        it.props = mergeEvaluated.props(gen, props, it.props, Name)\n      }\n    }\n    if (it.items !== true) {\n      if (schEvaluated && !schEvaluated.dynamicItems) {\n        if (schEvaluated.items !== undefined) {\n          it.items = mergeEvaluated.items(gen, schEvaluated.items, it.items)\n        }\n      } else {\n        const items = gen.var(\"items\", _`${source}.evaluated.items`)\n        it.items = mergeEvaluated.items(gen, items, it.items, Name)\n      }\n    }\n  }\n}\n\nexport default def\n","import type {Vocabulary} from \"../../types\"\nimport idKeyword from \"./id\"\nimport refKeyword from \"./ref\"\n\nconst core: Vocabulary = [\n  \"$schema\",\n  \"$id\",\n  \"$defs\",\n  \"$vocabulary\",\n  {keyword: \"$comment\"},\n  \"definitions\",\n  idKeyword,\n  refKeyword,\n]\n\nexport default core\n","import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, operators, Code} from \"../../compile/codegen\"\n\nconst ops = operators\n\ntype Kwd = \"maximum\" | \"minimum\" | \"exclusiveMaximum\" | \"exclusiveMinimum\"\n\ntype Comparison = \"<=\" | \">=\" | \"<\" | \">\"\n\nconst KWDs: {[K in Kwd]: {okStr: Comparison; ok: Code; fail: Code}} = {\n  maximum: {okStr: \"<=\", ok: ops.LTE, fail: ops.GT},\n  minimum: {okStr: \">=\", ok: ops.GTE, fail: ops.LT},\n  exclusiveMaximum: {okStr: \"<\", ok: ops.LT, fail: ops.GTE},\n  exclusiveMinimum: {okStr: \">\", ok: ops.GT, fail: ops.LTE},\n}\n\nexport type LimitNumberError = ErrorObject<\n  Kwd,\n  {limit: number; comparison: Comparison},\n  number | {$data: string}\n>\n\nconst error: KeywordErrorDefinition = {\n  message: ({keyword, schemaCode}) => str`must be ${KWDs[keyword as Kwd].okStr} ${schemaCode}`,\n  params: ({keyword, schemaCode}) =>\n    _`{comparison: ${KWDs[keyword as Kwd].okStr}, limit: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: Object.keys(KWDs),\n  type: \"number\",\n  schemaType: \"number\",\n  $data: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {keyword, data, schemaCode} = cxt\n    cxt.fail$data(_`${data} ${KWDs[keyword as Kwd].fail} ${schemaCode} || isNaN(${data})`)\n  },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str} from \"../../compile/codegen\"\n\nexport type MultipleOfError = ErrorObject<\n  \"multipleOf\",\n  {multipleOf: number},\n  number | {$data: string}\n>\n\nconst error: KeywordErrorDefinition = {\n  message: ({schemaCode}) => str`must be multiple of ${schemaCode}`,\n  params: ({schemaCode}) => _`{multipleOf: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"multipleOf\",\n  type: \"number\",\n  schemaType: \"number\",\n  $data: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {gen, data, schemaCode, it} = cxt\n    // const bdt = bad$DataType(schemaCode, <string>def.schemaType, $data)\n    const prec = it.opts.multipleOfPrecision\n    const res = gen.let(\"res\")\n    const invalid = prec\n      ? _`Math.abs(Math.round(${res}) - ${res}) > 1e-${prec}`\n      : _`${res} !== parseInt(${res})`\n    cxt.fail$data(_`(${schemaCode} === 0 || (${res} = ${data}/${schemaCode}, ${invalid}))`)\n  },\n}\n\nexport default def\n","// https://mathiasbynens.be/notes/javascript-encoding\n// https://github.com/bestiejs/punycode.js - punycode.ucs2.decode\nexport default function ucs2length(str: string): number {\n  const len = str.length\n  let length = 0\n  let pos = 0\n  let value: number\n  while (pos < len) {\n    length++\n    value = str.charCodeAt(pos++)\n    if (value >= 0xd800 && value <= 0xdbff && pos < len) {\n      // high surrogate, and there is a next character\n      value = str.charCodeAt(pos)\n      if ((value & 0xfc00) === 0xdc00) pos++ // low surrogate\n    }\n  }\n  return length\n}\n\nucs2length.code = 'require(\"ajv/dist/runtime/ucs2length\").default'\n","import type {CodeKeywordDefinition, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, operators} from \"../../compile/codegen\"\nimport {useFunc} from \"../../compile/util\"\nimport ucs2length from \"../../runtime/ucs2length\"\n\nconst error: KeywordErrorDefinition = {\n  message({keyword, schemaCode}) {\n    const comp = keyword === \"maxLength\" ? \"more\" : \"fewer\"\n    return str`must NOT have ${comp} than ${schemaCode} characters`\n  },\n  params: ({schemaCode}) => _`{limit: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: [\"maxLength\", \"minLength\"],\n  type: \"string\",\n  schemaType: \"number\",\n  $data: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {keyword, data, schemaCode, it} = cxt\n    const op = keyword === \"maxLength\" ? operators.GT : operators.LT\n    const len =\n      it.opts.unicode === false ? _`${data}.length` : _`${useFunc(cxt.gen, ucs2length)}(${data})`\n    cxt.fail$data(_`${len} ${op} ${schemaCode}`)\n  },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {usePattern} from \"../code\"\nimport {useFunc} from \"../../compile/util\"\nimport {_, str} from \"../../compile/codegen\"\n\nexport type PatternError = ErrorObject<\"pattern\", {pattern: string}, string | {$data: string}>\n\nconst error: KeywordErrorDefinition = {\n  message: ({schemaCode}) => str`must match pattern \"${schemaCode}\"`,\n  params: ({schemaCode}) => _`{pattern: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"pattern\",\n  type: \"string\",\n  schemaType: \"string\",\n  $data: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {gen, data, $data, schema, schemaCode, it} = cxt\n    const u = it.opts.unicodeRegExp ? \"u\" : \"\"\n    if ($data) {\n      const {regExp} = it.opts.code\n      const regExpCode = regExp.code === \"new RegExp\" ? _`new RegExp` : useFunc(gen, regExp)\n      const valid = gen.let(\"valid\")\n      gen.try(\n        () => gen.assign(valid, _`${regExpCode}(${schemaCode}, ${u}).test(${data})`),\n        () => gen.assign(valid, false)\n      )\n      cxt.fail$data(_`!${valid}`)\n    } else {\n      const regExp = usePattern(cxt, schema)\n      cxt.fail$data(_`!${regExp}.test(${data})`)\n    }\n  },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, operators} from \"../../compile/codegen\"\n\nconst error: KeywordErrorDefinition = {\n  message({keyword, schemaCode}) {\n    const comp = keyword === \"maxProperties\" ? \"more\" : \"fewer\"\n    return str`must NOT have ${comp} than ${schemaCode} properties`\n  },\n  params: ({schemaCode}) => _`{limit: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: [\"maxProperties\", \"minProperties\"],\n  type: \"object\",\n  schemaType: \"number\",\n  $data: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {keyword, data, schemaCode} = cxt\n    const op = keyword === \"maxProperties\" ? operators.GT : operators.LT\n    cxt.fail$data(_`Object.keys(${data}).length ${op} ${schemaCode}`)\n  },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {\n  checkReportMissingProp,\n  checkMissingProp,\n  reportMissingProp,\n  propertyInData,\n  noPropertyInData,\n} from \"../code\"\nimport {_, str, nil, not, Name, Code} from \"../../compile/codegen\"\nimport {checkStrictMode} from \"../../compile/util\"\n\nexport type RequiredError = ErrorObject<\n  \"required\",\n  {missingProperty: string},\n  string[] | {$data: string}\n>\n\nconst error: KeywordErrorDefinition = {\n  message: ({params: {missingProperty}}) => str`must have required property '${missingProperty}'`,\n  params: ({params: {missingProperty}}) => _`{missingProperty: ${missingProperty}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"required\",\n  type: \"object\",\n  schemaType: \"array\",\n  $data: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {gen, schema, schemaCode, data, $data, it} = cxt\n    const {opts} = it\n    if (!$data && schema.length === 0) return\n    const useLoop = schema.length >= opts.loopRequired\n    if (it.allErrors) allErrorsMode()\n    else exitOnErrorMode()\n\n    if (opts.strictRequired) {\n      const props = cxt.parentSchema.properties\n      const {definedProperties} = cxt.it\n      for (const requiredKey of schema) {\n        if (props?.[requiredKey] === undefined && !definedProperties.has(requiredKey)) {\n          const schemaPath = it.schemaEnv.baseId + it.errSchemaPath\n          const msg = `required property \"${requiredKey}\" is not defined at \"${schemaPath}\" (strictRequired)`\n          checkStrictMode(it, msg, it.opts.strictRequired)\n        }\n      }\n    }\n\n    function allErrorsMode(): void {\n      if (useLoop || $data) {\n        cxt.block$data(nil, loopAllRequired)\n      } else {\n        for (const prop of schema) {\n          checkReportMissingProp(cxt, prop)\n        }\n      }\n    }\n\n    function exitOnErrorMode(): void {\n      const missing = gen.let(\"missing\")\n      if (useLoop || $data) {\n        const valid = gen.let(\"valid\", true)\n        cxt.block$data(valid, () => loopUntilMissing(missing, valid))\n        cxt.ok(valid)\n      } else {\n        gen.if(checkMissingProp(cxt, schema, missing))\n        reportMissingProp(cxt, missing)\n        gen.else()\n      }\n    }\n\n    function loopAllRequired(): void {\n      gen.forOf(\"prop\", schemaCode as Code, (prop) => {\n        cxt.setParams({missingProperty: prop})\n        gen.if(noPropertyInData(gen, data, prop, opts.ownProperties), () => cxt.error())\n      })\n    }\n\n    function loopUntilMissing(missing: Name, valid: Name): void {\n      cxt.setParams({missingProperty: missing})\n      gen.forOf(\n        missing,\n        schemaCode as Code,\n        () => {\n          gen.assign(valid, propertyInData(gen, data, missing, opts.ownProperties))\n          gen.if(not(valid), () => {\n            cxt.error()\n            gen.break()\n          })\n        },\n        nil\n      )\n    }\n  },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, operators} from \"../../compile/codegen\"\n\nconst error: KeywordErrorDefinition = {\n  message({keyword, schemaCode}) {\n    const comp = keyword === \"maxItems\" ? \"more\" : \"fewer\"\n    return str`must NOT have ${comp} than ${schemaCode} items`\n  },\n  params: ({schemaCode}) => _`{limit: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: [\"maxItems\", \"minItems\"],\n  type: \"array\",\n  schemaType: \"number\",\n  $data: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {keyword, data, schemaCode} = cxt\n    const op = keyword === \"maxItems\" ? operators.GT : operators.LT\n    cxt.fail$data(_`${data}.length ${op} ${schemaCode}`)\n  },\n}\n\nexport default def\n","// https://github.com/ajv-validator/ajv/issues/889\nimport * as equal from \"fast-deep-equal\"\n\ntype Equal = typeof equal & {code: string}\n;(equal as Equal).code = 'require(\"ajv/dist/runtime/equal\").default'\n\nexport default equal as Equal\n","import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {checkDataTypes, getSchemaTypes, DataType} from \"../../compile/validate/dataType\"\nimport {_, str, Name} from \"../../compile/codegen\"\nimport {useFunc} from \"../../compile/util\"\nimport equal from \"../../runtime/equal\"\n\nexport type UniqueItemsError = ErrorObject<\n  \"uniqueItems\",\n  {i: number; j: number},\n  boolean | {$data: string}\n>\n\nconst error: KeywordErrorDefinition = {\n  message: ({params: {i, j}}) =>\n    str`must NOT have duplicate items (items ## ${j} and ${i} are identical)`,\n  params: ({params: {i, j}}) => _`{i: ${i}, j: ${j}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"uniqueItems\",\n  type: \"array\",\n  schemaType: \"boolean\",\n  $data: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {gen, data, $data, schema, parentSchema, schemaCode, it} = cxt\n    if (!$data && !schema) return\n    const valid = gen.let(\"valid\")\n    const itemTypes = parentSchema.items ? getSchemaTypes(parentSchema.items) : []\n    cxt.block$data(valid, validateUniqueItems, _`${schemaCode} === false`)\n    cxt.ok(valid)\n\n    function validateUniqueItems(): void {\n      const i = gen.let(\"i\", _`${data}.length`)\n      const j = gen.let(\"j\")\n      cxt.setParams({i, j})\n      gen.assign(valid, true)\n      gen.if(_`${i} > 1`, () => (canOptimize() ? loopN : loopN2)(i, j))\n    }\n\n    function canOptimize(): boolean {\n      return itemTypes.length > 0 && !itemTypes.some((t) => t === \"object\" || t === \"array\")\n    }\n\n    function loopN(i: Name, j: Name): void {\n      const item = gen.name(\"item\")\n      const wrongType = checkDataTypes(itemTypes, item, it.opts.strictNumbers, DataType.Wrong)\n      const indices = gen.const(\"indices\", _`{}`)\n      gen.for(_`;${i}--;`, () => {\n        gen.let(item, _`${data}[${i}]`)\n        gen.if(wrongType, _`continue`)\n        if (itemTypes.length > 1) gen.if(_`typeof ${item} == \"string\"`, _`${item} += \"_\"`)\n        gen\n          .if(_`typeof ${indices}[${item}] == \"number\"`, () => {\n            gen.assign(j, _`${indices}[${item}]`)\n            cxt.error()\n            gen.assign(valid, false).break()\n          })\n          .code(_`${indices}[${item}] = ${i}`)\n      })\n    }\n\n    function loopN2(i: Name, j: Name): void {\n      const eql = useFunc(gen, equal)\n      const outer = gen.name(\"outer\")\n      gen.label(outer).for(_`;${i}--;`, () =>\n        gen.for(_`${j} = ${i}; ${j}--;`, () =>\n          gen.if(_`${eql}(${data}[${i}], ${data}[${j}])`, () => {\n            cxt.error()\n            gen.assign(valid, false).break(outer)\n          })\n        )\n      )\n    }\n  },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_} from \"../../compile/codegen\"\nimport {useFunc} from \"../../compile/util\"\nimport equal from \"../../runtime/equal\"\n\nexport type ConstError = ErrorObject<\"const\", {allowedValue: any}>\n\nconst error: KeywordErrorDefinition = {\n  message: \"must be equal to constant\",\n  params: ({schemaCode}) => _`{allowedValue: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"const\",\n  $data: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {gen, data, $data, schemaCode, schema} = cxt\n    if ($data || (schema && typeof schema == \"object\")) {\n      cxt.fail$data(_`!${useFunc(gen, equal)}(${data}, ${schemaCode})`)\n    } else {\n      cxt.fail(_`${schema} !== ${data}`)\n    }\n  },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, or, Name, Code} from \"../../compile/codegen\"\nimport {useFunc} from \"../../compile/util\"\nimport equal from \"../../runtime/equal\"\n\nexport type EnumError = ErrorObject<\"enum\", {allowedValues: any[]}, any[] | {$data: string}>\n\nconst error: KeywordErrorDefinition = {\n  message: \"must be equal to one of the allowed values\",\n  params: ({schemaCode}) => _`{allowedValues: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"enum\",\n  schemaType: \"array\",\n  $data: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {gen, data, $data, schema, schemaCode, it} = cxt\n    if (!$data && schema.length === 0) throw new Error(\"enum must have non-empty array\")\n    const useLoop = schema.length >= it.opts.loopEnum\n    let eql: Name | undefined\n    const getEql = (): Name => (eql ??= useFunc(gen, equal))\n\n    let valid: Code\n    if (useLoop || $data) {\n      valid = gen.let(\"valid\")\n      cxt.block$data(valid, loopEnum)\n    } else {\n      /* istanbul ignore if */\n      if (!Array.isArray(schema)) throw new Error(\"ajv implementation error\")\n      const vSchema = gen.const(\"vSchema\", schemaCode)\n      valid = or(...schema.map((_x: unknown, i: number) => equalCode(vSchema, i)))\n    }\n    cxt.pass(valid)\n\n    function loopEnum(): void {\n      gen.assign(valid, false)\n      gen.forOf(\"v\", schemaCode as Code, (v) =>\n        gen.if(_`${getEql()}(${data}, ${v})`, () => gen.assign(valid, true).break())\n      )\n    }\n\n    function equalCode(vSchema: Name, i: number): Code {\n      const sch = schema[i]\n      return typeof sch === \"object\" && sch !== null\n        ? _`${getEql()}(${data}, ${vSchema}[${i}])`\n        : _`${data} === ${sch}`\n    }\n  },\n}\n\nexport default def\n","import type {ErrorObject, Vocabulary} from \"../../types\"\nimport limitNumber, {LimitNumberError} from \"./limitNumber\"\nimport multipleOf, {MultipleOfError} from \"./multipleOf\"\nimport limitLength from \"./limitLength\"\nimport pattern, {PatternError} from \"./pattern\"\nimport limitProperties from \"./limitProperties\"\nimport required, {RequiredError} from \"./required\"\nimport limitItems from \"./limitItems\"\nimport uniqueItems, {UniqueItemsError} from \"./uniqueItems\"\nimport constKeyword, {ConstError} from \"./const\"\nimport enumKeyword, {EnumError} from \"./enum\"\n\nconst validation: Vocabulary = [\n  // number\n  limitNumber,\n  multipleOf,\n  // string\n  limitLength,\n  pattern,\n  // object\n  limitProperties,\n  required,\n  // array\n  limitItems,\n  uniqueItems,\n  // any\n  {keyword: \"type\", schemaType: [\"string\", \"array\"]},\n  {keyword: \"nullable\", schemaType: \"boolean\"},\n  constKeyword,\n  enumKeyword,\n]\n\nexport default validation\n\ntype LimitError = ErrorObject<\n  \"maxItems\" | \"minItems\" | \"minProperties\" | \"maxProperties\" | \"minLength\" | \"maxLength\",\n  {limit: number},\n  number | {$data: string}\n>\n\nexport type ValidationKeywordError =\n  | LimitError\n  | LimitNumberError\n  | MultipleOfError\n  | PatternError\n  | RequiredError\n  | UniqueItemsError\n  | ConstError\n  | EnumError\n","import type {\n  CodeKeywordDefinition,\n  ErrorObject,\n  KeywordErrorDefinition,\n  AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, not, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema, checkStrictMode, Type} from \"../../compile/util\"\n\nexport type AdditionalItemsError = ErrorObject<\"additionalItems\", {limit: number}, AnySchema>\n\nconst error: KeywordErrorDefinition = {\n  message: ({params: {len}}) => str`must NOT have more than ${len} items`,\n  params: ({params: {len}}) => _`{limit: ${len}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"additionalItems\" as const,\n  type: \"array\",\n  schemaType: [\"boolean\", \"object\"],\n  before: \"uniqueItems\",\n  error,\n  code(cxt: KeywordCxt) {\n    const {parentSchema, it} = cxt\n    const {items} = parentSchema\n    if (!Array.isArray(items)) {\n      checkStrictMode(it, '\"additionalItems\" is ignored when \"items\" is not an array of schemas')\n      return\n    }\n    validateAdditionalItems(cxt, items)\n  },\n}\n\nexport function validateAdditionalItems(cxt: KeywordCxt, items: AnySchema[]): void {\n  const {gen, schema, data, keyword, it} = cxt\n  it.items = true\n  const len = gen.const(\"len\", _`${data}.length`)\n  if (schema === false) {\n    cxt.setParams({len: items.length})\n    cxt.pass(_`${len} <= ${items.length}`)\n  } else if (typeof schema == \"object\" && !alwaysValidSchema(it, schema)) {\n    const valid = gen.var(\"valid\", _`${len} <= ${items.length}`) // TODO var\n    gen.if(not(valid), () => validateItems(valid))\n    cxt.ok(valid)\n  }\n\n  function validateItems(valid: Name): void {\n    gen.forRange(\"i\", items.length, len, (i) => {\n      cxt.subschema({keyword, dataProp: i, dataPropType: Type.Num}, valid)\n      if (!it.allErrors) gen.if(not(valid), () => gen.break())\n    })\n  }\n}\n\nexport default def\n","import type {CodeKeywordDefinition, AnySchema, AnySchemaObject} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_} from \"../../compile/codegen\"\nimport {alwaysValidSchema, mergeEvaluated, checkStrictMode} from \"../../compile/util\"\nimport {validateArray} from \"../code\"\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"items\",\n  type: \"array\",\n  schemaType: [\"object\", \"array\", \"boolean\"],\n  before: \"uniqueItems\",\n  code(cxt: KeywordCxt) {\n    const {schema, it} = cxt\n    if (Array.isArray(schema)) return validateTuple(cxt, \"additionalItems\", schema)\n    it.items = true\n    if (alwaysValidSchema(it, schema)) return\n    cxt.ok(validateArray(cxt))\n  },\n}\n\nexport function validateTuple(\n  cxt: KeywordCxt,\n  extraItems: string,\n  schArr: AnySchema[] = cxt.schema\n): void {\n  const {gen, parentSchema, data, keyword, it} = cxt\n  checkStrictTuple(parentSchema)\n  if (it.opts.unevaluated && schArr.length && it.items !== true) {\n    it.items = mergeEvaluated.items(gen, schArr.length, it.items)\n  }\n  const valid = gen.name(\"valid\")\n  const len = gen.const(\"len\", _`${data}.length`)\n  schArr.forEach((sch: AnySchema, i: number) => {\n    if (alwaysValidSchema(it, sch)) return\n    gen.if(_`${len} > ${i}`, () =>\n      cxt.subschema(\n        {\n          keyword,\n          schemaProp: i,\n          dataProp: i,\n        },\n        valid\n      )\n    )\n    cxt.ok(valid)\n  })\n\n  function checkStrictTuple(sch: AnySchemaObject): void {\n    const {opts, errSchemaPath} = it\n    const l = schArr.length\n    const fullTuple = l === sch.minItems && (l === sch.maxItems || sch[extraItems] === false)\n    if (opts.strictTuples && !fullTuple) {\n      const msg = `\"${keyword}\" is ${l}-tuple, but minItems or maxItems/${extraItems} are not specified or different at path \"${errSchemaPath}\"`\n      checkStrictMode(it, msg, opts.strictTuples)\n    }\n  }\n}\n\nexport default def\n","import type {CodeKeywordDefinition} from \"../../types\"\nimport {validateTuple} from \"./items\"\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"prefixItems\",\n  type: \"array\",\n  schemaType: [\"array\"],\n  before: \"uniqueItems\",\n  code: (cxt) => validateTuple(cxt, \"items\"),\n}\n\nexport default def\n","import type {\n  CodeKeywordDefinition,\n  KeywordErrorDefinition,\n  ErrorObject,\n  AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str} from \"../../compile/codegen\"\nimport {alwaysValidSchema} from \"../../compile/util\"\nimport {validateArray} from \"../code\"\nimport {validateAdditionalItems} from \"./additionalItems\"\n\nexport type ItemsError = ErrorObject<\"items\", {limit: number}, AnySchema>\n\nconst error: KeywordErrorDefinition = {\n  message: ({params: {len}}) => str`must NOT have more than ${len} items`,\n  params: ({params: {len}}) => _`{limit: ${len}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"items\",\n  type: \"array\",\n  schemaType: [\"object\", \"boolean\"],\n  before: \"uniqueItems\",\n  error,\n  code(cxt: KeywordCxt) {\n    const {schema, parentSchema, it} = cxt\n    const {prefixItems} = parentSchema\n    it.items = true\n    if (alwaysValidSchema(it, schema)) return\n    if (prefixItems) validateAdditionalItems(cxt, prefixItems)\n    else cxt.ok(validateArray(cxt))\n  },\n}\n\nexport default def\n","import type {\n  CodeKeywordDefinition,\n  KeywordErrorDefinition,\n  ErrorObject,\n  AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema, checkStrictMode, Type} from \"../../compile/util\"\n\nexport type ContainsError = ErrorObject<\n  \"contains\",\n  {minContains: number; maxContains?: number},\n  AnySchema\n>\n\nconst error: KeywordErrorDefinition = {\n  message: ({params: {min, max}}) =>\n    max === undefined\n      ? str`must contain at least ${min} valid item(s)`\n      : str`must contain at least ${min} and no more than ${max} valid item(s)`,\n  params: ({params: {min, max}}) =>\n    max === undefined ? _`{minContains: ${min}}` : _`{minContains: ${min}, maxContains: ${max}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"contains\",\n  type: \"array\",\n  schemaType: [\"object\", \"boolean\"],\n  before: \"uniqueItems\",\n  trackErrors: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {gen, schema, parentSchema, data, it} = cxt\n    let min: number\n    let max: number | undefined\n    const {minContains, maxContains} = parentSchema\n    if (it.opts.next) {\n      min = minContains === undefined ? 1 : minContains\n      max = maxContains\n    } else {\n      min = 1\n    }\n    const len = gen.const(\"len\", _`${data}.length`)\n    cxt.setParams({min, max})\n    if (max === undefined && min === 0) {\n      checkStrictMode(it, `\"minContains\" == 0 without \"maxContains\": \"contains\" keyword ignored`)\n      return\n    }\n    if (max !== undefined && min > max) {\n      checkStrictMode(it, `\"minContains\" > \"maxContains\" is always invalid`)\n      cxt.fail()\n      return\n    }\n    if (alwaysValidSchema(it, schema)) {\n      let cond = _`${len} >= ${min}`\n      if (max !== undefined) cond = _`${cond} && ${len} <= ${max}`\n      cxt.pass(cond)\n      return\n    }\n\n    it.items = true\n    const valid = gen.name(\"valid\")\n    if (max === undefined && min === 1) {\n      validateItems(valid, () => gen.if(valid, () => gen.break()))\n    } else if (min === 0) {\n      gen.let(valid, true)\n      if (max !== undefined) gen.if(_`${data}.length > 0`, validateItemsWithCount)\n    } else {\n      gen.let(valid, false)\n      validateItemsWithCount()\n    }\n    cxt.result(valid, () => cxt.reset())\n\n    function validateItemsWithCount(): void {\n      const schValid = gen.name(\"_valid\")\n      const count = gen.let(\"count\", 0)\n      validateItems(schValid, () => gen.if(schValid, () => checkLimits(count)))\n    }\n\n    function validateItems(_valid: Name, block: () => void): void {\n      gen.forRange(\"i\", 0, len, (i) => {\n        cxt.subschema(\n          {\n            keyword: \"contains\",\n            dataProp: i,\n            dataPropType: Type.Num,\n            compositeRule: true,\n          },\n          _valid\n        )\n        block()\n      })\n    }\n\n    function checkLimits(count: Name): void {\n      gen.code(_`${count}++`)\n      if (max === undefined) {\n        gen.if(_`${count} >= ${min}`, () => gen.assign(valid, true).break())\n      } else {\n        gen.if(_`${count} > ${max}`, () => gen.assign(valid, false).break())\n        if (min === 1) gen.assign(valid, true)\n        else gen.if(_`${count} >= ${min}`, () => gen.assign(valid, true))\n      }\n    }\n  },\n}\n\nexport default def\n","import type {\n  CodeKeywordDefinition,\n  ErrorObject,\n  KeywordErrorDefinition,\n  SchemaMap,\n  AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str} from \"../../compile/codegen\"\nimport {alwaysValidSchema} from \"../../compile/util\"\nimport {checkReportMissingProp, checkMissingProp, reportMissingProp, propertyInData} from \"../code\"\n\nexport type PropertyDependencies = {[K in string]?: string[]}\n\nexport interface DependenciesErrorParams {\n  property: string\n  missingProperty: string\n  depsCount: number\n  deps: string // TODO change to string[]\n}\n\ntype SchemaDependencies = SchemaMap\n\nexport type DependenciesError = ErrorObject<\n  \"dependencies\",\n  DependenciesErrorParams,\n  {[K in string]?: string[] | AnySchema}\n>\n\nexport const error: KeywordErrorDefinition = {\n  message: ({params: {property, depsCount, deps}}) => {\n    const property_ies = depsCount === 1 ? \"property\" : \"properties\"\n    return str`must have ${property_ies} ${deps} when property ${property} is present`\n  },\n  params: ({params: {property, depsCount, deps, missingProperty}}) =>\n    _`{property: ${property},\n    missingProperty: ${missingProperty},\n    depsCount: ${depsCount},\n    deps: ${deps}}`, // TODO change to reference\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"dependencies\",\n  type: \"object\",\n  schemaType: \"object\",\n  error,\n  code(cxt: KeywordCxt) {\n    const [propDeps, schDeps] = splitDependencies(cxt)\n    validatePropertyDeps(cxt, propDeps)\n    validateSchemaDeps(cxt, schDeps)\n  },\n}\n\nfunction splitDependencies({schema}: KeywordCxt): [PropertyDependencies, SchemaDependencies] {\n  const propertyDeps: PropertyDependencies = {}\n  const schemaDeps: SchemaDependencies = {}\n  for (const key in schema) {\n    if (key === \"__proto__\") continue\n    const deps = Array.isArray(schema[key]) ? propertyDeps : schemaDeps\n    deps[key] = schema[key]\n  }\n  return [propertyDeps, schemaDeps]\n}\n\nexport function validatePropertyDeps(\n  cxt: KeywordCxt,\n  propertyDeps: {[K in string]?: string[]} = cxt.schema\n): void {\n  const {gen, data, it} = cxt\n  if (Object.keys(propertyDeps).length === 0) return\n  const missing = gen.let(\"missing\")\n  for (const prop in propertyDeps) {\n    const deps = propertyDeps[prop] as string[]\n    if (deps.length === 0) continue\n    const hasProperty = propertyInData(gen, data, prop, it.opts.ownProperties)\n    cxt.setParams({\n      property: prop,\n      depsCount: deps.length,\n      deps: deps.join(\", \"),\n    })\n    if (it.allErrors) {\n      gen.if(hasProperty, () => {\n        for (const depProp of deps) {\n          checkReportMissingProp(cxt, depProp)\n        }\n      })\n    } else {\n      gen.if(_`${hasProperty} && (${checkMissingProp(cxt, deps, missing)})`)\n      reportMissingProp(cxt, missing)\n      gen.else()\n    }\n  }\n}\n\nexport function validateSchemaDeps(cxt: KeywordCxt, schemaDeps: SchemaMap = cxt.schema): void {\n  const {gen, data, keyword, it} = cxt\n  const valid = gen.name(\"valid\")\n  for (const prop in schemaDeps) {\n    if (alwaysValidSchema(it, schemaDeps[prop] as AnySchema)) continue\n    gen.if(\n      propertyInData(gen, data, prop, it.opts.ownProperties),\n      () => {\n        const schCxt = cxt.subschema({keyword, schemaProp: prop}, valid)\n        cxt.mergeValidEvaluated(schCxt, valid)\n      },\n      () => gen.var(valid, true) // TODO var\n    )\n    cxt.ok(valid)\n  }\n}\n\nexport default def\n","import type {\n  CodeKeywordDefinition,\n  ErrorObject,\n  KeywordErrorDefinition,\n  AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, not} from \"../../compile/codegen\"\nimport {alwaysValidSchema} from \"../../compile/util\"\n\nexport type PropertyNamesError = ErrorObject<\"propertyNames\", {propertyName: string}, AnySchema>\n\nconst error: KeywordErrorDefinition = {\n  message: \"property name must be valid\",\n  params: ({params}) => _`{propertyName: ${params.propertyName}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"propertyNames\",\n  type: \"object\",\n  schemaType: [\"object\", \"boolean\"],\n  error,\n  code(cxt: KeywordCxt) {\n    const {gen, schema, data, it} = cxt\n    if (alwaysValidSchema(it, schema)) return\n    const valid = gen.name(\"valid\")\n\n    gen.forIn(\"key\", data, (key) => {\n      cxt.setParams({propertyName: key})\n      cxt.subschema(\n        {\n          keyword: \"propertyNames\",\n          data: key,\n          dataTypes: [\"string\"],\n          propertyName: key,\n          compositeRule: true,\n        },\n        valid\n      )\n      gen.if(not(valid), () => {\n        cxt.error(true)\n        if (!it.allErrors) gen.break()\n      })\n    })\n\n    cxt.ok(valid)\n  },\n}\n\nexport default def\n","import type {\n  CodeKeywordDefinition,\n  AddedKeywordDefinition,\n  ErrorObject,\n  KeywordErrorDefinition,\n  AnySchema,\n} from \"../../types\"\nimport {allSchemaProperties, usePattern, isOwnProperty} from \"../code\"\nimport {_, nil, or, not, Code, Name} from \"../../compile/codegen\"\nimport N from \"../../compile/names\"\nimport type {SubschemaArgs} from \"../../compile/validate/subschema\"\nimport {alwaysValidSchema, schemaRefOrVal, Type} from \"../../compile/util\"\n\nexport type AdditionalPropertiesError = ErrorObject<\n  \"additionalProperties\",\n  {additionalProperty: string},\n  AnySchema\n>\n\nconst error: KeywordErrorDefinition = {\n  message: \"must NOT have additional properties\",\n  params: ({params}) => _`{additionalProperty: ${params.additionalProperty}}`,\n}\n\nconst def: CodeKeywordDefinition & AddedKeywordDefinition = {\n  keyword: \"additionalProperties\",\n  type: [\"object\"],\n  schemaType: [\"boolean\", \"object\"],\n  allowUndefined: true,\n  trackErrors: true,\n  error,\n  code(cxt) {\n    const {gen, schema, parentSchema, data, errsCount, it} = cxt\n    /* istanbul ignore if */\n    if (!errsCount) throw new Error(\"ajv implementation error\")\n    const {allErrors, opts} = it\n    it.props = true\n    if (opts.removeAdditional !== \"all\" && alwaysValidSchema(it, schema)) return\n    const props = allSchemaProperties(parentSchema.properties)\n    const patProps = allSchemaProperties(parentSchema.patternProperties)\n    checkAdditionalProperties()\n    cxt.ok(_`${errsCount} === ${N.errors}`)\n\n    function checkAdditionalProperties(): void {\n      gen.forIn(\"key\", data, (key: Name) => {\n        if (!props.length && !patProps.length) additionalPropertyCode(key)\n        else gen.if(isAdditional(key), () => additionalPropertyCode(key))\n      })\n    }\n\n    function isAdditional(key: Name): Code {\n      let definedProp: Code\n      if (props.length > 8) {\n        // TODO maybe an option instead of hard-coded 8?\n        const propsSchema = schemaRefOrVal(it, parentSchema.properties, \"properties\")\n        definedProp = isOwnProperty(gen, propsSchema as Code, key)\n      } else if (props.length) {\n        definedProp = or(...props.map((p) => _`${key} === ${p}`))\n      } else {\n        definedProp = nil\n      }\n      if (patProps.length) {\n        definedProp = or(definedProp, ...patProps.map((p) => _`${usePattern(cxt, p)}.test(${key})`))\n      }\n      return not(definedProp)\n    }\n\n    function deleteAdditional(key: Name): void {\n      gen.code(_`delete ${data}[${key}]`)\n    }\n\n    function additionalPropertyCode(key: Name): void {\n      if (opts.removeAdditional === \"all\" || (opts.removeAdditional && schema === false)) {\n        deleteAdditional(key)\n        return\n      }\n\n      if (schema === false) {\n        cxt.setParams({additionalProperty: key})\n        cxt.error()\n        if (!allErrors) gen.break()\n        return\n      }\n\n      if (typeof schema == \"object\" && !alwaysValidSchema(it, schema)) {\n        const valid = gen.name(\"valid\")\n        if (opts.removeAdditional === \"failing\") {\n          applyAdditionalSchema(key, valid, false)\n          gen.if(not(valid), () => {\n            cxt.reset()\n            deleteAdditional(key)\n          })\n        } else {\n          applyAdditionalSchema(key, valid)\n          if (!allErrors) gen.if(not(valid), () => gen.break())\n        }\n      }\n    }\n\n    function applyAdditionalSchema(key: Name, valid: Name, errors?: false): void {\n      const subschema: SubschemaArgs = {\n        keyword: \"additionalProperties\",\n        dataProp: key,\n        dataPropType: Type.Str,\n      }\n      if (errors === false) {\n        Object.assign(subschema, {\n          compositeRule: true,\n          createErrors: false,\n          allErrors: false,\n        })\n      }\n      cxt.subschema(subschema, valid)\n    }\n  },\n}\n\nexport default def\n","import type {CodeKeywordDefinition} from \"../../types\"\nimport {KeywordCxt} from \"../../compile/validate\"\nimport {propertyInData, allSchemaProperties} from \"../code\"\nimport {alwaysValidSchema, toHash, mergeEvaluated} from \"../../compile/util\"\nimport apDef from \"./additionalProperties\"\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"properties\",\n  type: \"object\",\n  schemaType: \"object\",\n  code(cxt: KeywordCxt) {\n    const {gen, schema, parentSchema, data, it} = cxt\n    if (it.opts.removeAdditional === \"all\" && parentSchema.additionalProperties === undefined) {\n      apDef.code(new KeywordCxt(it, apDef, \"additionalProperties\"))\n    }\n    const allProps = allSchemaProperties(schema)\n    for (const prop of allProps) {\n      it.definedProperties.add(prop)\n    }\n    if (it.opts.unevaluated && allProps.length && it.props !== true) {\n      it.props = mergeEvaluated.props(gen, toHash(allProps), it.props)\n    }\n    const properties = allProps.filter((p) => !alwaysValidSchema(it, schema[p]))\n    if (properties.length === 0) return\n    const valid = gen.name(\"valid\")\n\n    for (const prop of properties) {\n      if (hasDefault(prop)) {\n        applyPropertySchema(prop)\n      } else {\n        gen.if(propertyInData(gen, data, prop, it.opts.ownProperties))\n        applyPropertySchema(prop)\n        if (!it.allErrors) gen.else().var(valid, true)\n        gen.endIf()\n      }\n      cxt.it.definedProperties.add(prop)\n      cxt.ok(valid)\n    }\n\n    function hasDefault(prop: string): boolean | undefined {\n      return it.opts.useDefaults && !it.compositeRule && schema[prop].default !== undefined\n    }\n\n    function applyPropertySchema(prop: string): void {\n      cxt.subschema(\n        {\n          keyword: \"properties\",\n          schemaProp: prop,\n          dataProp: prop,\n        },\n        valid\n      )\n    }\n  },\n}\n\nexport default def\n","import type {CodeKeywordDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {allSchemaProperties, usePattern} from \"../code\"\nimport {_, not, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema, checkStrictMode} from \"../../compile/util\"\nimport {evaluatedPropsToName, Type} from \"../../compile/util\"\nimport {AnySchema} from \"../../types\"\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"patternProperties\",\n  type: \"object\",\n  schemaType: \"object\",\n  code(cxt: KeywordCxt) {\n    const {gen, schema, data, parentSchema, it} = cxt\n    const {opts} = it\n    const patterns = allSchemaProperties(schema)\n    const alwaysValidPatterns = patterns.filter((p) =>\n      alwaysValidSchema(it, schema[p] as AnySchema)\n    )\n\n    if (\n      patterns.length === 0 ||\n      (alwaysValidPatterns.length === patterns.length &&\n        (!it.opts.unevaluated || it.props === true))\n    ) {\n      return\n    }\n\n    const checkProperties =\n      opts.strictSchema && !opts.allowMatchingProperties && parentSchema.properties\n    const valid = gen.name(\"valid\")\n    if (it.props !== true && !(it.props instanceof Name)) {\n      it.props = evaluatedPropsToName(gen, it.props)\n    }\n    const {props} = it\n    validatePatternProperties()\n\n    function validatePatternProperties(): void {\n      for (const pat of patterns) {\n        if (checkProperties) checkMatchingProperties(pat)\n        if (it.allErrors) {\n          validateProperties(pat)\n        } else {\n          gen.var(valid, true) // TODO var\n          validateProperties(pat)\n          gen.if(valid)\n        }\n      }\n    }\n\n    function checkMatchingProperties(pat: string): void {\n      for (const prop in checkProperties) {\n        if (new RegExp(pat).test(prop)) {\n          checkStrictMode(\n            it,\n            `property ${prop} matches pattern ${pat} (use allowMatchingProperties)`\n          )\n        }\n      }\n    }\n\n    function validateProperties(pat: string): void {\n      gen.forIn(\"key\", data, (key) => {\n        gen.if(_`${usePattern(cxt, pat)}.test(${key})`, () => {\n          const alwaysValid = alwaysValidPatterns.includes(pat)\n          if (!alwaysValid) {\n            cxt.subschema(\n              {\n                keyword: \"patternProperties\",\n                schemaProp: pat,\n                dataProp: key,\n                dataPropType: Type.Str,\n              },\n              valid\n            )\n          }\n\n          if (it.opts.unevaluated && props !== true) {\n            gen.assign(_`${props}[${key}]`, true)\n          } else if (!alwaysValid && !it.allErrors) {\n            // can short-circuit if `unevaluatedProperties` is not supported (opts.next === false)\n            // or if all properties were evaluated (props === true)\n            gen.if(not(valid), () => gen.break())\n          }\n        })\n      })\n    }\n  },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, ErrorNoParams, AnySchema} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {alwaysValidSchema} from \"../../compile/util\"\n\nexport type NotKeywordError = ErrorNoParams<\"not\", AnySchema>\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"not\",\n  schemaType: [\"object\", \"boolean\"],\n  trackErrors: true,\n  code(cxt: KeywordCxt) {\n    const {gen, schema, it} = cxt\n    if (alwaysValidSchema(it, schema)) {\n      cxt.fail()\n      return\n    }\n\n    const valid = gen.name(\"valid\")\n    cxt.subschema(\n      {\n        keyword: \"not\",\n        compositeRule: true,\n        createErrors: false,\n        allErrors: false,\n      },\n      valid\n    )\n\n    cxt.failResult(\n      valid,\n      () => cxt.reset(),\n      () => cxt.error()\n    )\n  },\n  error: {message: \"must NOT be valid\"},\n}\n\nexport default def\n","import type {CodeKeywordDefinition, ErrorNoParams, AnySchema} from \"../../types\"\nimport {validateUnion} from \"../code\"\n\nexport type AnyOfError = ErrorNoParams<\"anyOf\", AnySchema[]>\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"anyOf\",\n  schemaType: \"array\",\n  trackErrors: true,\n  code: validateUnion,\n  error: {message: \"must match a schema in anyOf\"},\n}\n\nexport default def\n","import type {\n  CodeKeywordDefinition,\n  ErrorObject,\n  KeywordErrorDefinition,\n  AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema} from \"../../compile/util\"\nimport {SchemaCxt} from \"../../compile\"\n\nexport type OneOfError = ErrorObject<\n  \"oneOf\",\n  {passingSchemas: [number, number] | null},\n  AnySchema[]\n>\n\nconst error: KeywordErrorDefinition = {\n  message: \"must match exactly one schema in oneOf\",\n  params: ({params}) => _`{passingSchemas: ${params.passing}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"oneOf\",\n  schemaType: \"array\",\n  trackErrors: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {gen, schema, parentSchema, it} = cxt\n    /* istanbul ignore if */\n    if (!Array.isArray(schema)) throw new Error(\"ajv implementation error\")\n    if (it.opts.discriminator && parentSchema.discriminator) return\n    const schArr: AnySchema[] = schema\n    const valid = gen.let(\"valid\", false)\n    const passing = gen.let(\"passing\", null)\n    const schValid = gen.name(\"_valid\")\n    cxt.setParams({passing})\n    // TODO possibly fail straight away (with warning or exception) if there are two empty always valid schemas\n\n    gen.block(validateOneOf)\n\n    cxt.result(\n      valid,\n      () => cxt.reset(),\n      () => cxt.error(true)\n    )\n\n    function validateOneOf(): void {\n      schArr.forEach((sch: AnySchema, i: number) => {\n        let schCxt: SchemaCxt | undefined\n        if (alwaysValidSchema(it, sch)) {\n          gen.var(schValid, true)\n        } else {\n          schCxt = cxt.subschema(\n            {\n              keyword: \"oneOf\",\n              schemaProp: i,\n              compositeRule: true,\n            },\n            schValid\n          )\n        }\n\n        if (i > 0) {\n          gen\n            .if(_`${schValid} && ${valid}`)\n            .assign(valid, false)\n            .assign(passing, _`[${passing}, ${i}]`)\n            .else()\n        }\n\n        gen.if(schValid, () => {\n          gen.assign(valid, true)\n          gen.assign(passing, i)\n          if (schCxt) cxt.mergeEvaluated(schCxt, Name)\n        })\n      })\n    }\n  },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, AnySchema} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {alwaysValidSchema} from \"../../compile/util\"\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"allOf\",\n  schemaType: \"array\",\n  code(cxt: KeywordCxt) {\n    const {gen, schema, it} = cxt\n    /* istanbul ignore if */\n    if (!Array.isArray(schema)) throw new Error(\"ajv implementation error\")\n    const valid = gen.name(\"valid\")\n    schema.forEach((sch: AnySchema, i: number) => {\n      if (alwaysValidSchema(it, sch)) return\n      const schCxt = cxt.subschema({keyword: \"allOf\", schemaProp: i}, valid)\n      cxt.ok(valid)\n      cxt.mergeEvaluated(schCxt)\n    })\n  },\n}\n\nexport default def\n","import type {\n  CodeKeywordDefinition,\n  ErrorObject,\n  KeywordErrorDefinition,\n  AnySchema,\n} from \"../../types\"\nimport type {SchemaObjCxt} from \"../../compile\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, not, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema, checkStrictMode} from \"../../compile/util\"\n\nexport type IfKeywordError = ErrorObject<\"if\", {failingKeyword: string}, AnySchema>\n\nconst error: KeywordErrorDefinition = {\n  message: ({params}) => str`must match \"${params.ifClause}\" schema`,\n  params: ({params}) => _`{failingKeyword: ${params.ifClause}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"if\",\n  schemaType: [\"object\", \"boolean\"],\n  trackErrors: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {gen, parentSchema, it} = cxt\n    if (parentSchema.then === undefined && parentSchema.else === undefined) {\n      checkStrictMode(it, '\"if\" without \"then\" and \"else\" is ignored')\n    }\n    const hasThen = hasSchema(it, \"then\")\n    const hasElse = hasSchema(it, \"else\")\n    if (!hasThen && !hasElse) return\n\n    const valid = gen.let(\"valid\", true)\n    const schValid = gen.name(\"_valid\")\n    validateIf()\n    cxt.reset()\n\n    if (hasThen && hasElse) {\n      const ifClause = gen.let(\"ifClause\")\n      cxt.setParams({ifClause})\n      gen.if(schValid, validateClause(\"then\", ifClause), validateClause(\"else\", ifClause))\n    } else if (hasThen) {\n      gen.if(schValid, validateClause(\"then\"))\n    } else {\n      gen.if(not(schValid), validateClause(\"else\"))\n    }\n\n    cxt.pass(valid, () => cxt.error(true))\n\n    function validateIf(): void {\n      const schCxt = cxt.subschema(\n        {\n          keyword: \"if\",\n          compositeRule: true,\n          createErrors: false,\n          allErrors: false,\n        },\n        schValid\n      )\n      cxt.mergeEvaluated(schCxt)\n    }\n\n    function validateClause(keyword: string, ifClause?: Name): () => void {\n      return () => {\n        const schCxt = cxt.subschema({keyword}, schValid)\n        gen.assign(valid, schValid)\n        cxt.mergeValidEvaluated(schCxt, valid)\n        if (ifClause) gen.assign(ifClause, _`${keyword}`)\n        else cxt.setParams({ifClause: keyword})\n      }\n    }\n  },\n}\n\nfunction hasSchema(it: SchemaObjCxt, keyword: string): boolean {\n  const schema = it.schema[keyword]\n  return schema !== undefined && !alwaysValidSchema(it, schema)\n}\n\nexport default def\n","import type {CodeKeywordDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {checkStrictMode} from \"../../compile/util\"\n\nconst def: CodeKeywordDefinition = {\n  keyword: [\"then\", \"else\"],\n  schemaType: [\"object\", \"boolean\"],\n  code({keyword, parentSchema, it}: KeywordCxt) {\n    if (parentSchema.if === undefined) checkStrictMode(it, `\"${keyword}\" without \"if\" is ignored`)\n  },\n}\n\nexport default def\n","import type {ErrorNoParams, Vocabulary} from \"../../types\"\nimport additionalItems, {AdditionalItemsError} from \"./additionalItems\"\nimport prefixItems from \"./prefixItems\"\nimport items from \"./items\"\nimport items2020, {ItemsError} from \"./items2020\"\nimport contains, {ContainsError} from \"./contains\"\nimport dependencies, {DependenciesError} from \"./dependencies\"\nimport propertyNames, {PropertyNamesError} from \"./propertyNames\"\nimport additionalProperties, {AdditionalPropertiesError} from \"./additionalProperties\"\nimport properties from \"./properties\"\nimport patternProperties from \"./patternProperties\"\nimport notKeyword, {NotKeywordError} from \"./not\"\nimport anyOf, {AnyOfError} from \"./anyOf\"\nimport oneOf, {OneOfError} from \"./oneOf\"\nimport allOf from \"./allOf\"\nimport ifKeyword, {IfKeywordError} from \"./if\"\nimport thenElse from \"./thenElse\"\n\nexport default function getApplicator(draft2020 = false): Vocabulary {\n  const applicator = [\n    // any\n    notKeyword,\n    anyOf,\n    oneOf,\n    allOf,\n    ifKeyword,\n    thenElse,\n    // object\n    propertyNames,\n    additionalProperties,\n    dependencies,\n    properties,\n    patternProperties,\n  ]\n  // array\n  if (draft2020) applicator.push(prefixItems, items2020)\n  else applicator.push(additionalItems, items)\n  applicator.push(contains)\n  return applicator\n}\n\nexport type ApplicatorKeywordError =\n  | ErrorNoParams<\"false schema\">\n  | AdditionalItemsError\n  | ItemsError\n  | ContainsError\n  | AdditionalPropertiesError\n  | DependenciesError\n  | IfKeywordError\n  | AnyOfError\n  | OneOfError\n  | NotKeywordError\n  | PropertyNamesError\n","import type {\n  AddedFormat,\n  FormatValidator,\n  AsyncFormatValidator,\n  CodeKeywordDefinition,\n  KeywordErrorDefinition,\n  ErrorObject,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, nil, or, Code, getProperty, regexpCode} from \"../../compile/codegen\"\n\ntype FormatValidate =\n  | FormatValidator<string>\n  | FormatValidator<number>\n  | AsyncFormatValidator<string>\n  | AsyncFormatValidator<number>\n  | RegExp\n  | string\n  | true\n\nexport type FormatError = ErrorObject<\"format\", {format: string}, string | {$data: string}>\n\nconst error: KeywordErrorDefinition = {\n  message: ({schemaCode}) => str`must match format \"${schemaCode}\"`,\n  params: ({schemaCode}) => _`{format: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"format\",\n  type: [\"number\", \"string\"],\n  schemaType: \"string\",\n  $data: true,\n  error,\n  code(cxt: KeywordCxt, ruleType?: string) {\n    const {gen, data, $data, schema, schemaCode, it} = cxt\n    const {opts, errSchemaPath, schemaEnv, self} = it\n    if (!opts.validateFormats) return\n\n    if ($data) validate$DataFormat()\n    else validateFormat()\n\n    function validate$DataFormat(): void {\n      const fmts = gen.scopeValue(\"formats\", {\n        ref: self.formats,\n        code: opts.code.formats,\n      })\n      const fDef = gen.const(\"fDef\", _`${fmts}[${schemaCode}]`)\n      const fType = gen.let(\"fType\")\n      const format = gen.let(\"format\")\n      // TODO simplify\n      gen.if(\n        _`typeof ${fDef} == \"object\" && !(${fDef} instanceof RegExp)`,\n        () => gen.assign(fType, _`${fDef}.type || \"string\"`).assign(format, _`${fDef}.validate`),\n        () => gen.assign(fType, _`\"string\"`).assign(format, fDef)\n      )\n      cxt.fail$data(or(unknownFmt(), invalidFmt()))\n\n      function unknownFmt(): Code {\n        if (opts.strictSchema === false) return nil\n        return _`${schemaCode} && !${format}`\n      }\n\n      function invalidFmt(): Code {\n        const callFormat = schemaEnv.$async\n          ? _`(${fDef}.async ? await ${format}(${data}) : ${format}(${data}))`\n          : _`${format}(${data})`\n        const validData = _`(typeof ${format} == \"function\" ? ${callFormat} : ${format}.test(${data}))`\n        return _`${format} && ${format} !== true && ${fType} === ${ruleType} && !${validData}`\n      }\n    }\n\n    function validateFormat(): void {\n      const formatDef: AddedFormat | undefined = self.formats[schema]\n      if (!formatDef) {\n        unknownFormat()\n        return\n      }\n      if (formatDef === true) return\n      const [fmtType, format, fmtRef] = getFormat(formatDef)\n      if (fmtType === ruleType) cxt.pass(validCondition())\n\n      function unknownFormat(): void {\n        if (opts.strictSchema === false) {\n          self.logger.warn(unknownMsg())\n          return\n        }\n        throw new Error(unknownMsg())\n\n        function unknownMsg(): string {\n          return `unknown format \"${schema as string}\" ignored in schema at path \"${errSchemaPath}\"`\n        }\n      }\n\n      function getFormat(fmtDef: AddedFormat): [string, FormatValidate, Code] {\n        const code =\n          fmtDef instanceof RegExp\n            ? regexpCode(fmtDef)\n            : opts.code.formats\n            ? _`${opts.code.formats}${getProperty(schema)}`\n            : undefined\n        const fmt = gen.scopeValue(\"formats\", {key: schema, ref: fmtDef, code})\n        if (typeof fmtDef == \"object\" && !(fmtDef instanceof RegExp)) {\n          return [fmtDef.type || \"string\", fmtDef.validate, _`${fmt}.validate`]\n        }\n\n        return [\"string\", fmtDef, fmt]\n      }\n\n      function validCondition(): Code {\n        if (typeof formatDef == \"object\" && !(formatDef instanceof RegExp) && formatDef.async) {\n          if (!schemaEnv.$async) throw new Error(\"async format in sync schema\")\n          return _`await ${fmtRef}(${data})`\n        }\n        return typeof format == \"function\" ? _`${fmtRef}(${data})` : _`${fmtRef}.test(${data})`\n      }\n    }\n  },\n}\n\nexport default def\n","import type {Vocabulary} from \"../../types\"\nimport formatKeyword from \"./format\"\n\nconst format: Vocabulary = [formatKeyword]\n\nexport default format\n","import type {Vocabulary} from \"../types\"\n\nexport const metadataVocabulary: Vocabulary = [\n  \"title\",\n  \"description\",\n  \"default\",\n  \"deprecated\",\n  \"readOnly\",\n  \"writeOnly\",\n  \"examples\",\n]\n\nexport const contentVocabulary: Vocabulary = [\n  \"contentMediaType\",\n  \"contentEncoding\",\n  \"contentSchema\",\n]\n","import type {Vocabulary} from \"../types\"\nimport coreVocabulary from \"./core\"\nimport validationVocabulary from \"./validation\"\nimport getApplicatorVocabulary from \"./applicator\"\nimport formatVocabulary from \"./format\"\nimport {metadataVocabulary, contentVocabulary} from \"./metadata\"\n\nconst draft7Vocabularies: Vocabulary[] = [\n  coreVocabulary,\n  validationVocabulary,\n  getApplicatorVocabulary(),\n  formatVocabulary,\n  metadataVocabulary,\n  contentVocabulary,\n]\n\nexport default draft7Vocabularies\n","import type {ErrorObject} from \"../../types\"\n\nexport enum DiscrError {\n  Tag = \"tag\",\n  Mapping = \"mapping\",\n}\n\nexport type DiscrErrorObj<E extends DiscrError> = ErrorObject<\n  \"discriminator\",\n  {error: E; tag: string; tagValue: unknown},\n  string\n>\n","import type {CodeKeywordDefinition, AnySchemaObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, getProperty, Name} from \"../../compile/codegen\"\nimport {DiscrError, DiscrErrorObj} from \"../discriminator/types\"\nimport {resolveRef, SchemaEnv} from \"../../compile\"\nimport MissingRefError from \"../../compile/ref_error\"\nimport {schemaHasRulesButRef} from \"../../compile/util\"\n\nexport type DiscriminatorError = DiscrErrorObj<DiscrError.Tag> | DiscrErrorObj<DiscrError.Mapping>\n\nconst error: KeywordErrorDefinition = {\n  message: ({params: {discrError, tagName}}) =>\n    discrError === DiscrError.Tag\n      ? `tag \"${tagName}\" must be string`\n      : `value of tag \"${tagName}\" must be in oneOf`,\n  params: ({params: {discrError, tag, tagName}}) =>\n    _`{error: ${discrError}, tag: ${tagName}, tagValue: ${tag}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"discriminator\",\n  type: \"object\",\n  schemaType: \"object\",\n  error,\n  code(cxt: KeywordCxt) {\n    const {gen, data, schema, parentSchema, it} = cxt\n    const {oneOf} = parentSchema\n    if (!it.opts.discriminator) {\n      throw new Error(\"discriminator: requires discriminator option\")\n    }\n    const tagName = schema.propertyName\n    if (typeof tagName != \"string\") throw new Error(\"discriminator: requires propertyName\")\n    if (schema.mapping) throw new Error(\"discriminator: mapping is not supported\")\n    if (!oneOf) throw new Error(\"discriminator: requires oneOf keyword\")\n    const valid = gen.let(\"valid\", false)\n    const tag = gen.const(\"tag\", _`${data}${getProperty(tagName)}`)\n    gen.if(\n      _`typeof ${tag} == \"string\"`,\n      () => validateMapping(),\n      () => cxt.error(false, {discrError: DiscrError.Tag, tag, tagName})\n    )\n    cxt.ok(valid)\n\n    function validateMapping(): void {\n      const mapping = getMapping()\n      gen.if(false)\n      for (const tagValue in mapping) {\n        gen.elseIf(_`${tag} === ${tagValue}`)\n        gen.assign(valid, applyTagSchema(mapping[tagValue]))\n      }\n      gen.else()\n      cxt.error(false, {discrError: DiscrError.Mapping, tag, tagName})\n      gen.endIf()\n    }\n\n    function applyTagSchema(schemaProp?: number): Name {\n      const _valid = gen.name(\"valid\")\n      const schCxt = cxt.subschema({keyword: \"oneOf\", schemaProp}, _valid)\n      cxt.mergeEvaluated(schCxt, Name)\n      return _valid\n    }\n\n    function getMapping(): {[T in string]?: number} {\n      const oneOfMapping: {[T in string]?: number} = {}\n      const topRequired = hasRequired(parentSchema)\n      let tagRequired = true\n      for (let i = 0; i < oneOf.length; i++) {\n        let sch = oneOf[i]\n        if (sch?.$ref && !schemaHasRulesButRef(sch, it.self.RULES)) {\n          const ref = sch.$ref\n          sch = resolveRef.call(it.self, it.schemaEnv.root, it.baseId, ref)\n          if (sch instanceof SchemaEnv) sch = sch.schema\n          if (sch === undefined) throw new MissingRefError(it.opts.uriResolver, it.baseId, ref)\n        }\n        const propSch = sch?.properties?.[tagName]\n        if (typeof propSch != \"object\") {\n          throw new Error(\n            `discriminator: oneOf subschemas (or referenced schemas) must have \"properties/${tagName}\"`\n          )\n        }\n        tagRequired = tagRequired && (topRequired || hasRequired(sch))\n        addMappings(propSch, i)\n      }\n      if (!tagRequired) throw new Error(`discriminator: \"${tagName}\" must be required`)\n      return oneOfMapping\n\n      function hasRequired({required}: AnySchemaObject): boolean {\n        return Array.isArray(required) && required.includes(tagName)\n      }\n\n      function addMappings(sch: AnySchemaObject, i: number): void {\n        if (sch.const) {\n          addMapping(sch.const, i)\n        } else if (sch.enum) {\n          for (const tagValue of sch.enum) {\n            addMapping(tagValue, i)\n          }\n        } else {\n          throw new Error(`discriminator: \"properties/${tagName}\" must have \"const\" or \"enum\"`)\n        }\n      }\n\n      function addMapping(tagValue: unknown, i: number): void {\n        if (typeof tagValue != \"string\" || tagValue in oneOfMapping) {\n          throw new Error(`discriminator: \"${tagName}\" values must be unique strings`)\n        }\n        oneOfMapping[tagValue] = i\n      }\n    }\n  },\n}\n\nexport default def\n","{\n  \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n  \"$id\": \"http://json-schema.org/draft-07/schema#\",\n  \"title\": \"Core schema meta-schema\",\n  \"definitions\": {\n    \"schemaArray\": {\n      \"type\": \"array\",\n      \"minItems\": 1,\n      \"items\": {\"$ref\": \"#\"}\n    },\n    \"nonNegativeInteger\": {\n      \"type\": \"integer\",\n      \"minimum\": 0\n    },\n    \"nonNegativeIntegerDefault0\": {\n      \"allOf\": [{\"$ref\": \"#/definitions/nonNegativeInteger\"}, {\"default\": 0}]\n    },\n    \"simpleTypes\": {\n      \"enum\": [\"array\", \"boolean\", \"integer\", \"null\", \"number\", \"object\", \"string\"]\n    },\n    \"stringArray\": {\n      \"type\": \"array\",\n      \"items\": {\"type\": \"string\"},\n      \"uniqueItems\": true,\n      \"default\": []\n    }\n  },\n  \"type\": [\"object\", \"boolean\"],\n  \"properties\": {\n    \"$id\": {\n      \"type\": \"string\",\n      \"format\": \"uri-reference\"\n    },\n    \"$schema\": {\n      \"type\": \"string\",\n      \"format\": \"uri\"\n    },\n    \"$ref\": {\n      \"type\": \"string\",\n      \"format\": \"uri-reference\"\n    },\n    \"$comment\": {\n      \"type\": \"string\"\n    },\n    \"title\": {\n      \"type\": \"string\"\n    },\n    \"description\": {\n      \"type\": \"string\"\n    },\n    \"default\": true,\n    \"readOnly\": {\n      \"type\": \"boolean\",\n      \"default\": false\n    },\n    \"examples\": {\n      \"type\": \"array\",\n      \"items\": true\n    },\n    \"multipleOf\": {\n      \"type\": \"number\",\n      \"exclusiveMinimum\": 0\n    },\n    \"maximum\": {\n      \"type\": \"number\"\n    },\n    \"exclusiveMaximum\": {\n      \"type\": \"number\"\n    },\n    \"minimum\": {\n      \"type\": \"number\"\n    },\n    \"exclusiveMinimum\": {\n      \"type\": \"number\"\n    },\n    \"maxLength\": {\"$ref\": \"#/definitions/nonNegativeInteger\"},\n    \"minLength\": {\"$ref\": \"#/definitions/nonNegativeIntegerDefault0\"},\n    \"pattern\": {\n      \"type\": \"string\",\n      \"format\": \"regex\"\n    },\n    \"additionalItems\": {\"$ref\": \"#\"},\n    \"items\": {\n      \"anyOf\": [{\"$ref\": \"#\"}, {\"$ref\": \"#/definitions/schemaArray\"}],\n      \"default\": true\n    },\n    \"maxItems\": {\"$ref\": \"#/definitions/nonNegativeInteger\"},\n    \"minItems\": {\"$ref\": \"#/definitions/nonNegativeIntegerDefault0\"},\n    \"uniqueItems\": {\n      \"type\": \"boolean\",\n      \"default\": false\n    },\n    \"contains\": {\"$ref\": \"#\"},\n    \"maxProperties\": {\"$ref\": \"#/definitions/nonNegativeInteger\"},\n    \"minProperties\": {\"$ref\": \"#/definitions/nonNegativeIntegerDefault0\"},\n    \"required\": {\"$ref\": \"#/definitions/stringArray\"},\n    \"additionalProperties\": {\"$ref\": \"#\"},\n    \"definitions\": {\n      \"type\": \"object\",\n      \"additionalProperties\": {\"$ref\": \"#\"},\n      \"default\": {}\n    },\n    \"properties\": {\n      \"type\": \"object\",\n      \"additionalProperties\": {\"$ref\": \"#\"},\n      \"default\": {}\n    },\n    \"patternProperties\": {\n      \"type\": \"object\",\n      \"additionalProperties\": {\"$ref\": \"#\"},\n      \"propertyNames\": {\"format\": \"regex\"},\n      \"default\": {}\n    },\n    \"dependencies\": {\n      \"type\": \"object\",\n      \"additionalProperties\": {\n        \"anyOf\": [{\"$ref\": \"#\"}, {\"$ref\": \"#/definitions/stringArray\"}]\n      }\n    },\n    \"propertyNames\": {\"$ref\": \"#\"},\n    \"const\": true,\n    \"enum\": {\n      \"type\": \"array\",\n      \"items\": true,\n      \"minItems\": 1,\n      \"uniqueItems\": true\n    },\n    \"type\": {\n      \"anyOf\": [\n        {\"$ref\": \"#/definitions/simpleTypes\"},\n        {\n          \"type\": \"array\",\n          \"items\": {\"$ref\": \"#/definitions/simpleTypes\"},\n          \"minItems\": 1,\n          \"uniqueItems\": true\n        }\n      ]\n    },\n    \"format\": {\"type\": \"string\"},\n    \"contentMediaType\": {\"type\": \"string\"},\n    \"contentEncoding\": {\"type\": \"string\"},\n    \"if\": {\"$ref\": \"#\"},\n    \"then\": {\"$ref\": \"#\"},\n    \"else\": {\"$ref\": \"#\"},\n    \"allOf\": {\"$ref\": \"#/definitions/schemaArray\"},\n    \"anyOf\": {\"$ref\": \"#/definitions/schemaArray\"},\n    \"oneOf\": {\"$ref\": \"#/definitions/schemaArray\"},\n    \"not\": {\"$ref\": \"#\"}\n  },\n  \"default\": true\n}\n","import type {AnySchemaObject} from \"./types\"\nimport AjvCore from \"./core\"\nimport draft7Vocabularies from \"./vocabularies/draft7\"\nimport discriminator from \"./vocabularies/discriminator\"\nimport * as draft7MetaSchema from \"./refs/json-schema-draft-07.json\"\n\nconst META_SUPPORT_DATA = [\"/properties\"]\n\nconst META_SCHEMA_ID = \"http://json-schema.org/draft-07/schema\"\n\nexport class Ajv extends AjvCore {\n  _addVocabularies(): void {\n    super._addVocabularies()\n    draft7Vocabularies.forEach((v) => this.addVocabulary(v))\n    if (this.opts.discriminator) this.addKeyword(discriminator)\n  }\n\n  _addDefaultMetaSchema(): void {\n    super._addDefaultMetaSchema()\n    if (!this.opts.meta) return\n    const metaSchema = this.opts.$data\n      ? this.$dataMetaSchema(draft7MetaSchema, META_SUPPORT_DATA)\n      : draft7MetaSchema\n    this.addMetaSchema(metaSchema, META_SCHEMA_ID, false)\n    this.refs[\"http://json-schema.org/schema\"] = META_SCHEMA_ID\n  }\n\n  defaultMeta(): string | AnySchemaObject | undefined {\n    return (this.opts.defaultMeta =\n      super.defaultMeta() || (this.getSchema(META_SCHEMA_ID) ? META_SCHEMA_ID : undefined))\n  }\n}\n\nmodule.exports = exports = Ajv\nmodule.exports.Ajv = Ajv\nObject.defineProperty(exports, \"__esModule\", {value: true})\n\nexport default Ajv\n\nexport {\n  Format,\n  FormatDefinition,\n  AsyncFormatDefinition,\n  KeywordDefinition,\n  KeywordErrorDefinition,\n  CodeKeywordDefinition,\n  MacroKeywordDefinition,\n  FuncKeywordDefinition,\n  Vocabulary,\n  Schema,\n  SchemaObject,\n  AnySchemaObject,\n  AsyncSchema,\n  AnySchema,\n  ValidateFunction,\n  AsyncValidateFunction,\n  SchemaValidateFunction,\n  ErrorObject,\n  ErrorNoParams,\n} from \"./types\"\n\nexport {Plugin, Options, CodeOptions, InstanceOptions, Logger, ErrorsTextOptions} from \"./core\"\nexport {SchemaCxt, SchemaObjCxt} from \"./compile\"\nexport {KeywordCxt} from \"./compile/validate\"\nexport {DefinedError} from \"./vocabularies/errors\"\nexport {JSONType} from \"./compile/rules\"\nexport {JSONSchemaType} from \"./types/json-schema\"\nexport {_, str, stringify, nil, Name, Code, CodeGen, CodeGenOptions} from \"./compile/codegen\"\nexport {default as ValidationError} from \"./runtime/validation_error\"\nexport {default as MissingRefError} from \"./compile/ref_error\"\n","import type {Plugin, CodeKeywordDefinition, KeywordCxt, ErrorObject, Code} from \"ajv\"\nimport Ajv, {_, str, stringify, Name} from \"ajv\"\nimport {and, or, not, strConcat} from \"ajv/dist/compile/codegen\"\nimport {safeStringify, _Code} from \"ajv/dist/compile/codegen/code\"\nimport {getData} from \"ajv/dist/compile/validate\"\nimport {reportError} from \"ajv/dist/compile/errors\"\nimport N from \"ajv/dist/compile/names\"\n\ntype ErrorsMap<T extends string | number> = {[P in T]?: ErrorObject[]}\n\ntype StringMap = {[P in string]?: string}\n\ntype ErrorMessageSchema = {\n  properties?: StringMap\n  items?: string[]\n  required?: string | StringMap\n  dependencies?: string | StringMap\n  _?: string\n} & {[K in string]?: string | StringMap}\n\ninterface ChildErrors {\n  props?: ErrorsMap<string>\n  items?: ErrorsMap<number>\n}\n\nconst keyword = \"errorMessage\"\n\nconst used: Name = new Name(\"emUsed\")\n\nconst KEYWORD_PROPERTY_PARAMS = {\n  required: \"missingProperty\",\n  dependencies: \"property\",\n  dependentRequired: \"property\",\n}\n\nexport interface ErrorMessageOptions {\n  keepErrors?: boolean\n  singleError?: boolean | string\n}\n\nconst INTERPOLATION = /\\$\\{[^}]+\\}/\nconst INTERPOLATION_REPLACE = /\\$\\{([^}]+)\\}/g\nconst EMPTY_STR = /^\"\"\\s*\\+\\s*|\\s*\\+\\s*\"\"$/g\n\nfunction errorMessage(options: ErrorMessageOptions): CodeKeywordDefinition {\n  return {\n    keyword,\n    schemaType: [\"string\", \"object\"],\n    post: true,\n    code(cxt: KeywordCxt) {\n      const {gen, data, schema, schemaValue, it} = cxt\n      if (it.createErrors === false) return\n      const sch: ErrorMessageSchema | string = schema\n      const instancePath = strConcat(N.instancePath, it.errorPath)\n      gen.if(_`${N.errors} > 0`, () => {\n        if (typeof sch == \"object\") {\n          const [kwdPropErrors, kwdErrors] = keywordErrorsConfig(sch)\n          if (kwdErrors) processKeywordErrors(kwdErrors)\n          if (kwdPropErrors) processKeywordPropErrors(kwdPropErrors)\n          processChildErrors(childErrorsConfig(sch))\n        }\n        const schMessage = typeof sch == \"string\" ? sch : sch._\n        if (schMessage) processAllErrors(schMessage)\n        if (!options.keepErrors) removeUsedErrors()\n      })\n\n      function childErrorsConfig({properties, items}: ErrorMessageSchema): ChildErrors {\n        const errors: ChildErrors = {}\n        if (properties) {\n          errors.props = {}\n          for (const p in properties) errors.props[p] = []\n        }\n        if (items) {\n          errors.items = {}\n          for (let i = 0; i < items.length; i++) errors.items[i] = []\n        }\n        return errors\n      }\n\n      function keywordErrorsConfig(\n        emSchema: ErrorMessageSchema\n      ): [{[K in string]?: ErrorsMap<string>} | undefined, ErrorsMap<string> | undefined] {\n        let propErrors: {[K in string]?: ErrorsMap<string>} | undefined\n        let errors: ErrorsMap<string> | undefined\n\n        for (const k in emSchema) {\n          if (k === \"properties\" || k === \"items\") continue\n          const kwdSch = emSchema[k]\n          if (typeof kwdSch == \"object\") {\n            propErrors ||= {}\n            const errMap: ErrorsMap<string> = (propErrors[k] = {})\n            for (const p in kwdSch) errMap[p] = []\n          } else {\n            errors ||= {}\n            errors[k] = []\n          }\n        }\n        return [propErrors, errors]\n      }\n\n      function processKeywordErrors(kwdErrors: ErrorsMap<string>): void {\n        const kwdErrs = gen.const(\"emErrors\", stringify(kwdErrors))\n        const templates = gen.const(\"templates\", getTemplatesCode(kwdErrors, schema))\n        gen.forOf(\"err\", N.vErrors, (err) =>\n          gen.if(matchKeywordError(err, kwdErrs), () =>\n            gen.code(_`${kwdErrs}[${err}.keyword].push(${err})`).assign(_`${err}.${used}`, true)\n          )\n        )\n        const {singleError} = options\n        if (singleError) {\n          const message = gen.let(\"message\", _`\"\"`)\n          const paramsErrors = gen.let(\"paramsErrors\", _`[]`)\n          loopErrors((key) => {\n            gen.if(message, () =>\n              gen.code(_`${message} += ${typeof singleError == \"string\" ? singleError : \";\"}`)\n            )\n            gen.code(_`${message} += ${errMessage(key)}`)\n            gen.assign(paramsErrors, _`${paramsErrors}.concat(${kwdErrs}[${key}])`)\n          })\n          reportError(cxt, {message, params: _`{errors: ${paramsErrors}}`})\n        } else {\n          loopErrors((key) =>\n            reportError(cxt, {\n              message: errMessage(key),\n              params: _`{errors: ${kwdErrs}[${key}]}`,\n            })\n          )\n        }\n\n        function loopErrors(body: (key: Name) => void): void {\n          gen.forIn(\"key\", kwdErrs, (key) => gen.if(_`${kwdErrs}[${key}].length`, () => body(key)))\n        }\n\n        function errMessage(key: Name): Code {\n          return _`${key} in ${templates} ? ${templates}[${key}]() : ${schemaValue}[${key}]`\n        }\n      }\n\n      function processKeywordPropErrors(kwdPropErrors: {[K in string]?: ErrorsMap<string>}): void {\n        const kwdErrs = gen.const(\"emErrors\", stringify(kwdPropErrors))\n        const templatesCode: [string, Code][] = []\n        for (const k in kwdPropErrors) {\n          templatesCode.push([\n            k,\n            getTemplatesCode(kwdPropErrors[k] as ErrorsMap<string>, schema[k]),\n          ])\n        }\n        const templates = gen.const(\"templates\", gen.object(...templatesCode))\n\n        const kwdPropParams = gen.scopeValue(\"obj\", {\n          ref: KEYWORD_PROPERTY_PARAMS,\n          code: stringify(KEYWORD_PROPERTY_PARAMS),\n        })\n        const propParam = gen.let(\"emPropParams\")\n        const paramsErrors = gen.let(\"emParamsErrors\")\n\n        gen.forOf(\"err\", N.vErrors, (err) =>\n          gen.if(matchKeywordError(err, kwdErrs), () => {\n            gen.assign(propParam, _`${kwdPropParams}[${err}.keyword]`)\n            gen.assign(paramsErrors, _`${kwdErrs}[${err}.keyword][${err}.params[${propParam}]]`)\n            gen.if(paramsErrors, () =>\n              gen.code(_`${paramsErrors}.push(${err})`).assign(_`${err}.${used}`, true)\n            )\n          })\n        )\n\n        gen.forIn(\"key\", kwdErrs, (key) =>\n          gen.forIn(\"keyProp\", _`${kwdErrs}[${key}]`, (keyProp) => {\n            gen.assign(paramsErrors, _`${kwdErrs}[${key}][${keyProp}]`)\n            gen.if(_`${paramsErrors}.length`, () => {\n              const tmpl = gen.const(\n                \"tmpl\",\n                _`${templates}[${key}] && ${templates}[${key}][${keyProp}]`\n              )\n              reportError(cxt, {\n                message: _`${tmpl} ? ${tmpl}() : ${schemaValue}[${key}][${keyProp}]`,\n                params: _`{errors: ${paramsErrors}}`,\n              })\n            })\n          })\n        )\n      }\n\n      function processChildErrors(childErrors: ChildErrors): void {\n        const {props, items} = childErrors\n        if (!props && !items) return\n        const isObj = _`typeof ${data} == \"object\"`\n        const isArr = _`Array.isArray(${data})`\n        const childErrs = gen.let(\"emErrors\")\n        let childKwd: Name\n        let childProp: Code\n        const templates = gen.let(\"templates\")\n        if (props && items) {\n          childKwd = gen.let(\"emChildKwd\")\n          gen.if(isObj)\n          gen.if(\n            isArr,\n            () => {\n              init(items, schema.items)\n              gen.assign(childKwd, str`items`)\n            },\n            () => {\n              init(props, schema.properties)\n              gen.assign(childKwd, str`properties`)\n            }\n          )\n          childProp = _`[${childKwd}]`\n        } else if (items) {\n          gen.if(isArr)\n          init(items, schema.items)\n          childProp = _`.items`\n        } else if (props) {\n          gen.if(and(isObj, not(isArr)))\n          init(props, schema.properties)\n          childProp = _`.properties`\n        }\n\n        gen.forOf(\"err\", N.vErrors, (err) =>\n          ifMatchesChildError(err, childErrs, (child) =>\n            gen.code(_`${childErrs}[${child}].push(${err})`).assign(_`${err}.${used}`, true)\n          )\n        )\n\n        gen.forIn(\"key\", childErrs, (key) =>\n          gen.if(_`${childErrs}[${key}].length`, () => {\n            reportError(cxt, {\n              message: _`${key} in ${templates} ? ${templates}[${key}]() : ${schemaValue}${childProp}[${key}]`,\n              params: _`{errors: ${childErrs}[${key}]}`,\n            })\n            gen.assign(\n              _`${N.vErrors}[${N.errors}-1].instancePath`,\n              _`${instancePath} + \"/\" + ${key}.replace(/~/g, \"~0\").replace(/\\\\//g, \"~1\")`\n            )\n          })\n        )\n\n        gen.endIf()\n\n        function init<T extends string | number>(\n          children: ErrorsMap<T>,\n          msgs: {[K in string]?: string}\n        ): void {\n          gen.assign(childErrs, stringify(children))\n          gen.assign(templates, getTemplatesCode(children, msgs))\n        }\n      }\n\n      function processAllErrors(schMessage: string): void {\n        const errs = gen.const(\"emErrs\", _`[]`)\n        gen.forOf(\"err\", N.vErrors, (err) =>\n          gen.if(matchAnyError(err), () =>\n            gen.code(_`${errs}.push(${err})`).assign(_`${err}.${used}`, true)\n          )\n        )\n        gen.if(_`${errs}.length`, () =>\n          reportError(cxt, {\n            message: templateExpr(schMessage),\n            params: _`{errors: ${errs}}`,\n          })\n        )\n      }\n\n      function removeUsedErrors(): void {\n        const errs = gen.const(\"emErrs\", _`[]`)\n        gen.forOf(\"err\", N.vErrors, (err) =>\n          gen.if(_`!${err}.${used}`, () => gen.code(_`${errs}.push(${err})`))\n        )\n        gen.assign(N.vErrors, errs).assign(N.errors, _`${errs}.length`)\n      }\n\n      function matchKeywordError(err: Name, kwdErrs: Name): Code {\n        return and(\n          _`${err}.keyword !== ${keyword}`,\n          _`!${err}.${used}`,\n          _`${err}.instancePath === ${instancePath}`,\n          _`${err}.keyword in ${kwdErrs}`,\n          // TODO match the end of the string?\n          _`${err}.schemaPath.indexOf(${it.errSchemaPath}) === 0`,\n          _`/^\\\\/[^\\\\/]*$/.test(${err}.schemaPath.slice(${it.errSchemaPath.length}))`\n        )\n      }\n\n      function ifMatchesChildError(\n        err: Name,\n        childErrs: Name,\n        thenBody: (child: Name) => void\n      ): void {\n        gen.if(\n          and(\n            _`${err}.keyword !== ${keyword}`,\n            _`!${err}.${used}`,\n            _`${err}.instancePath.indexOf(${instancePath}) === 0`\n          ),\n          () => {\n            const childRegex = gen.scopeValue(\"pattern\", {\n              ref: /^\\/([^/]*)(?:\\/|$)/,\n              code: _`new RegExp(\"^\\\\\\/([^/]*)(?:\\\\\\/|$)\")`,\n            })\n            const matches = gen.const(\n              \"emMatches\",\n              _`${childRegex}.exec(${err}.instancePath.slice(${instancePath}.length))`\n            )\n            const child = gen.const(\n              \"emChild\",\n              _`${matches} && ${matches}[1].replace(/~1/g, \"/\").replace(/~0/g, \"~\")`\n            )\n            gen.if(_`${child} !== undefined && ${child} in ${childErrs}`, () => thenBody(child))\n          }\n        )\n      }\n\n      function matchAnyError(err: Name): Code {\n        return and(\n          _`${err}.keyword !== ${keyword}`,\n          _`!${err}.${used}`,\n          or(\n            _`${err}.instancePath === ${instancePath}`,\n            and(\n              _`${err}.instancePath.indexOf(${instancePath}) === 0`,\n              _`${err}.instancePath[${instancePath}.length] === \"/\"`\n            )\n          ),\n          _`${err}.schemaPath.indexOf(${it.errSchemaPath}) === 0`,\n          _`${err}.schemaPath[${it.errSchemaPath}.length] === \"/\"`\n        )\n      }\n\n      function getTemplatesCode(keys: Record<string, any>, msgs: {[K in string]?: string}): Code {\n        const templatesCode: [string, Code][] = []\n        for (const k in keys) {\n          const msg = msgs[k] as string\n          if (INTERPOLATION.test(msg)) templatesCode.push([k, templateFunc(msg)])\n        }\n        return gen.object(...templatesCode)\n      }\n\n      function templateExpr(msg: string): Code {\n        if (!INTERPOLATION.test(msg)) return stringify(msg)\n        return new _Code(\n          safeStringify(msg)\n            .replace(\n              INTERPOLATION_REPLACE,\n              (_s, ptr) => `\" + JSON.stringify(${getData(ptr, it)}) + \"`\n            )\n            .replace(EMPTY_STR, \"\")\n        )\n      }\n\n      function templateFunc(msg: string): Code {\n        return _`function(){return ${templateExpr(msg)}}`\n      }\n    },\n    metaSchema: {\n      anyOf: [\n        {type: \"string\"},\n        {\n          type: \"object\",\n          properties: {\n            properties: {$ref: \"#/$defs/stringMap\"},\n            items: {$ref: \"#/$defs/stringList\"},\n            required: {$ref: \"#/$defs/stringOrMap\"},\n            dependencies: {$ref: \"#/$defs/stringOrMap\"},\n          },\n          additionalProperties: {type: \"string\"},\n        },\n      ],\n      $defs: {\n        stringMap: {\n          type: \"object\",\n          additionalProperties: {type: \"string\"},\n        },\n        stringOrMap: {\n          anyOf: [{type: \"string\"}, {$ref: \"#/$defs/stringMap\"}],\n        },\n        stringList: {type: \"array\", items: {type: \"string\"}},\n      },\n    },\n  }\n}\n\nconst ajvErrors: Plugin<ErrorMessageOptions> = (\n  ajv: Ajv,\n  options: ErrorMessageOptions = {}\n): Ajv => {\n  if (!ajv.opts.allErrors) throw new Error(\"ajv-errors: Ajv option allErrors must be true\")\n  if (ajv.opts.jsPropertySyntax) {\n    throw new Error(\"ajv-errors: ajv option jsPropertySyntax is not supported\")\n  }\n  return ajv.addKeyword(errorMessage(options))\n}\n\nexport default ajvErrors\nmodule.exports = ajvErrors\nmodule.exports.default = ajvErrors\n","import type {Format, FormatDefinition} from \"ajv\"\nimport type {FormatValidator, FormatCompare} from \"ajv/dist/types\"\n\nexport type FormatMode = \"fast\" | \"full\"\n\nexport type FormatName =\n  | \"date\"\n  | \"time\"\n  | \"date-time\"\n  | \"duration\"\n  | \"uri\"\n  | \"uri-reference\"\n  | \"uri-template\"\n  | \"url\"\n  | \"email\"\n  | \"hostname\"\n  | \"ipv4\"\n  | \"ipv6\"\n  | \"regex\"\n  | \"uuid\"\n  | \"json-pointer\"\n  | \"json-pointer-uri-fragment\"\n  | \"relative-json-pointer\"\n  | \"byte\"\n  | \"int32\"\n  | \"int64\"\n  | \"float\"\n  | \"double\"\n  | \"password\"\n  | \"binary\"\n\nexport type DefinedFormats = {\n  [key in FormatName]: Format\n}\n\nfunction fmtDef(\n  validate: RegExp | FormatValidator<string>,\n  compare: FormatCompare<string>\n): FormatDefinition<string> {\n  return {validate, compare}\n}\n\nexport const fullFormats: DefinedFormats = {\n  // date: http://tools.ietf.org/html/rfc3339#section-5.6\n  date: fmtDef(date, compareDate),\n  // date-time: http://tools.ietf.org/html/rfc3339#section-5.6\n  time: fmtDef(time, compareTime),\n  \"date-time\": fmtDef(date_time, compareDateTime),\n  // duration: https://tools.ietf.org/html/rfc3339#appendix-A\n  duration: /^P(?!$)((\\d+Y)?(\\d+M)?(\\d+D)?(T(?=\\d)(\\d+H)?(\\d+M)?(\\d+S)?)?|(\\d+W)?)$/,\n  uri,\n  \"uri-reference\":\n    /^(?:[a-z][a-z0-9+\\-.]*:)?(?:\\/?\\/(?:(?:[a-z0-9\\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\\.[a-z0-9\\-._~!$&'()*+,;=:]+)\\]|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)|(?:[a-z0-9\\-._~!$&'\"()*+,;=]|%[0-9a-f]{2})*)(?::\\d*)?(?:\\/(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})*)*|\\/(?:(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\\?(?:[a-z0-9\\-._~!$&'\"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\\-._~!$&'\"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,\n  // uri-template: https://tools.ietf.org/html/rfc6570\n  \"uri-template\":\n    /^(?:(?:[^\\x00-\\x20\"'<>%\\\\^`{|}]|%[0-9a-f]{2})|\\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\\*)?)*\\})*$/i,\n  // For the source: https://gist.github.com/dperini/729294\n  // For test cases: https://mathiasbynens.be/demo/url-regex\n  url: /^(?:https?|ftp):\\/\\/(?:\\S+(?::\\S*)?@)?(?:(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z0-9\\u{00a1}-\\u{ffff}]+-)*[a-z0-9\\u{00a1}-\\u{ffff}]+)(?:\\.(?:[a-z0-9\\u{00a1}-\\u{ffff}]+-)*[a-z0-9\\u{00a1}-\\u{ffff}]+)*(?:\\.(?:[a-z\\u{00a1}-\\u{ffff}]{2,})))(?::\\d{2,5})?(?:\\/[^\\s]*)?$/iu,\n  email:\n    /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,\n  hostname:\n    /^(?=.{1,253}\\.?$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*\\.?$/i,\n  // optimized https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html\n  ipv4: /^(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)$/,\n  ipv6: /^((([0-9a-f]{1,4}:){7}([0-9a-f]{1,4}|:))|(([0-9a-f]{1,4}:){6}(:[0-9a-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9a-f]{1,4}:){5}(((:[0-9a-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9a-f]{1,4}:){4}(((:[0-9a-f]{1,4}){1,3})|((:[0-9a-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9a-f]{1,4}:){3}(((:[0-9a-f]{1,4}){1,4})|((:[0-9a-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9a-f]{1,4}:){2}(((:[0-9a-f]{1,4}){1,5})|((:[0-9a-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9a-f]{1,4}:){1}(((:[0-9a-f]{1,4}){1,6})|((:[0-9a-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9a-f]{1,4}){1,7})|((:[0-9a-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))$/i,\n  regex,\n  // uuid: http://tools.ietf.org/html/rfc4122\n  uuid: /^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,\n  // JSON-pointer: https://tools.ietf.org/html/rfc6901\n  // uri fragment: https://tools.ietf.org/html/rfc3986#appendix-A\n  \"json-pointer\": /^(?:\\/(?:[^~/]|~0|~1)*)*$/,\n  \"json-pointer-uri-fragment\": /^#(?:\\/(?:[a-z0-9_\\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i,\n  // relative JSON-pointer: http://tools.ietf.org/html/draft-luff-relative-json-pointer-00\n  \"relative-json-pointer\": /^(?:0|[1-9][0-9]*)(?:#|(?:\\/(?:[^~/]|~0|~1)*)*)$/,\n  // the following formats are used by the openapi specification: https://spec.openapis.org/oas/v3.0.0#data-types\n  // byte: https://github.com/miguelmota/is-base64\n  byte,\n  // signed 32 bit integer\n  int32: {type: \"number\", validate: validateInt32},\n  // signed 64 bit integer\n  int64: {type: \"number\", validate: validateInt64},\n  // C-type float\n  float: {type: \"number\", validate: validateNumber},\n  // C-type double\n  double: {type: \"number\", validate: validateNumber},\n  // hint to the UI to hide input strings\n  password: true,\n  // unchecked string payload\n  binary: true,\n}\n\nexport const fastFormats: DefinedFormats = {\n  ...fullFormats,\n  date: fmtDef(/^\\d\\d\\d\\d-[0-1]\\d-[0-3]\\d$/, compareDate),\n  time: fmtDef(\n    /^(?:[0-2]\\d:[0-5]\\d:[0-5]\\d|23:59:60)(?:\\.\\d+)?(?:z|[+-]\\d\\d(?::?\\d\\d)?)?$/i,\n    compareTime\n  ),\n  \"date-time\": fmtDef(\n    /^\\d\\d\\d\\d-[0-1]\\d-[0-3]\\d[t\\s](?:[0-2]\\d:[0-5]\\d:[0-5]\\d|23:59:60)(?:\\.\\d+)?(?:z|[+-]\\d\\d(?::?\\d\\d)?)$/i,\n    compareDateTime\n  ),\n  // uri: https://github.com/mafintosh/is-my-json-valid/blob/master/formats.js\n  uri: /^(?:[a-z][a-z0-9+\\-.]*:)(?:\\/?\\/)?[^\\s]*$/i,\n  \"uri-reference\": /^(?:(?:[a-z][a-z0-9+\\-.]*:)?\\/?\\/)?(?:[^\\\\\\s#][^\\s#]*)?(?:#[^\\\\\\s]*)?$/i,\n  // email (sources from jsen validator):\n  // http://stackoverflow.com/questions/201323/using-a-regular-expression-to-validate-an-email-address#answer-8829363\n  // http://www.w3.org/TR/html5/forms.html#valid-e-mail-address (search for 'wilful violation')\n  email:\n    /^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i,\n}\n\nexport const formatNames = Object.keys(fullFormats) as FormatName[]\n\nfunction isLeapYear(year: number): boolean {\n  // https://tools.ietf.org/html/rfc3339#appendix-C\n  return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0)\n}\n\nconst DATE = /^(\\d\\d\\d\\d)-(\\d\\d)-(\\d\\d)$/\nconst DAYS = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\n\nfunction date(str: string): boolean {\n  // full-date from http://tools.ietf.org/html/rfc3339#section-5.6\n  const matches: string[] | null = DATE.exec(str)\n  if (!matches) return false\n  const year: number = +matches[1]\n  const month: number = +matches[2]\n  const day: number = +matches[3]\n  return (\n    month >= 1 &&\n    month <= 12 &&\n    day >= 1 &&\n    day <= (month === 2 && isLeapYear(year) ? 29 : DAYS[month])\n  )\n}\n\nfunction compareDate(d1: string, d2: string): number | undefined {\n  if (!(d1 && d2)) return undefined\n  if (d1 > d2) return 1\n  if (d1 < d2) return -1\n  return 0\n}\n\nconst TIME = /^(\\d\\d):(\\d\\d):(\\d\\d)(\\.\\d+)?(z|[+-]\\d\\d(?::?\\d\\d)?)?$/i\n\nfunction time(str: string, withTimeZone?: boolean): boolean {\n  const matches: string[] | null = TIME.exec(str)\n  if (!matches) return false\n\n  const hour: number = +matches[1]\n  const minute: number = +matches[2]\n  const second: number = +matches[3]\n  const timeZone: string = matches[5]\n  return (\n    ((hour <= 23 && minute <= 59 && second <= 59) ||\n      (hour === 23 && minute === 59 && second === 60)) &&\n    (!withTimeZone || timeZone !== \"\")\n  )\n}\n\nfunction compareTime(t1: string, t2: string): number | undefined {\n  if (!(t1 && t2)) return undefined\n  const a1 = TIME.exec(t1)\n  const a2 = TIME.exec(t2)\n  if (!(a1 && a2)) return undefined\n  t1 = a1[1] + a1[2] + a1[3] + (a1[4] || \"\")\n  t2 = a2[1] + a2[2] + a2[3] + (a2[4] || \"\")\n  if (t1 > t2) return 1\n  if (t1 < t2) return -1\n  return 0\n}\n\nconst DATE_TIME_SEPARATOR = /t|\\s/i\nfunction date_time(str: string): boolean {\n  // http://tools.ietf.org/html/rfc3339#section-5.6\n  const dateTime: string[] = str.split(DATE_TIME_SEPARATOR)\n  return dateTime.length === 2 && date(dateTime[0]) && time(dateTime[1], true)\n}\n\nfunction compareDateTime(dt1: string, dt2: string): number | undefined {\n  if (!(dt1 && dt2)) return undefined\n  const [d1, t1] = dt1.split(DATE_TIME_SEPARATOR)\n  const [d2, t2] = dt2.split(DATE_TIME_SEPARATOR)\n  const res = compareDate(d1, d2)\n  if (res === undefined) return undefined\n  return res || compareTime(t1, t2)\n}\n\nconst NOT_URI_FRAGMENT = /\\/|:/\nconst URI =\n  /^(?:[a-z][a-z0-9+\\-.]*:)(?:\\/?\\/(?:(?:[a-z0-9\\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\\.[a-z0-9\\-._~!$&'()*+,;=:]+)\\]|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)|(?:[a-z0-9\\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\\d*)?(?:\\/(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\\/(?:(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\\?(?:[a-z0-9\\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i\n\nfunction uri(str: string): boolean {\n  // http://jmrware.com/articles/2009/uri_regexp/URI_regex.html + optional protocol + required \".\"\n  return NOT_URI_FRAGMENT.test(str) && URI.test(str)\n}\n\nconst BYTE = /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/gm\n\nfunction byte(str: string): boolean {\n  BYTE.lastIndex = 0\n  return BYTE.test(str)\n}\n\nconst MIN_INT32 = -(2 ** 31)\nconst MAX_INT32 = 2 ** 31 - 1\n\nfunction validateInt32(value: number): boolean {\n  return Number.isInteger(value) && value <= MAX_INT32 && value >= MIN_INT32\n}\n\nfunction validateInt64(value: number): boolean {\n  // JSON and javascript max Int is 2**53, so any int that passes isInteger is valid for Int64\n  return Number.isInteger(value)\n}\n\nfunction validateNumber(): boolean {\n  return true\n}\n\nconst Z_ANCHOR = /[^\\\\]\\\\Z/\nfunction regex(str: string): boolean {\n  if (Z_ANCHOR.test(str)) return false\n  try {\n    new RegExp(str)\n    return true\n  } catch (e) {\n    return false\n  }\n}\n","import type Ajv from \"ajv\"\nimport type {\n  Plugin,\n  CodeKeywordDefinition,\n  KeywordErrorDefinition,\n  Code,\n  Name,\n  ErrorObject,\n} from \"ajv\"\nimport type {AddedFormat} from \"ajv/dist/types\"\nimport type {Rule} from \"ajv/dist/compile/rules\"\nimport {KeywordCxt} from \"ajv\"\nimport {_, str, or, getProperty, operators} from \"ajv/dist/compile/codegen\"\n\ntype Kwd = \"formatMaximum\" | \"formatMinimum\" | \"formatExclusiveMaximum\" | \"formatExclusiveMinimum\"\n\ntype Comparison = \"<=\" | \">=\" | \"<\" | \">\"\n\nconst ops = operators\n\nconst KWDs: {[K in Kwd]: {okStr: Comparison; ok: Code; fail: Code}} = {\n  formatMaximum: {okStr: \"<=\", ok: ops.LTE, fail: ops.GT},\n  formatMinimum: {okStr: \">=\", ok: ops.GTE, fail: ops.LT},\n  formatExclusiveMaximum: {okStr: \"<\", ok: ops.LT, fail: ops.GTE},\n  formatExclusiveMinimum: {okStr: \">\", ok: ops.GT, fail: ops.LTE},\n}\n\nexport type LimitFormatError = ErrorObject<Kwd, {limit: string; comparison: Comparison}>\n\nconst error: KeywordErrorDefinition = {\n  message: ({keyword, schemaCode}) => str`should be ${KWDs[keyword as Kwd].okStr} ${schemaCode}`,\n  params: ({keyword, schemaCode}) =>\n    _`{comparison: ${KWDs[keyword as Kwd].okStr}, limit: ${schemaCode}}`,\n}\n\nexport const formatLimitDefinition: CodeKeywordDefinition = {\n  keyword: Object.keys(KWDs),\n  type: \"string\",\n  schemaType: \"string\",\n  $data: true,\n  error,\n  code(cxt) {\n    const {gen, data, schemaCode, keyword, it} = cxt\n    const {opts, self} = it\n    if (!opts.validateFormats) return\n\n    const fCxt = new KeywordCxt(it, (self.RULES.all.format as Rule).definition, \"format\")\n    if (fCxt.$data) validate$DataFormat()\n    else validateFormat()\n\n    function validate$DataFormat(): void {\n      const fmts = gen.scopeValue(\"formats\", {\n        ref: self.formats,\n        code: opts.code.formats,\n      })\n      const fmt = gen.const(\"fmt\", _`${fmts}[${fCxt.schemaCode}]`)\n      cxt.fail$data(\n        or(\n          _`typeof ${fmt} != \"object\"`,\n          _`${fmt} instanceof RegExp`,\n          _`typeof ${fmt}.compare != \"function\"`,\n          compareCode(fmt)\n        )\n      )\n    }\n\n    function validateFormat(): void {\n      const format = fCxt.schema as string\n      const fmtDef: AddedFormat | undefined = self.formats[format]\n      if (!fmtDef || fmtDef === true) return\n      if (\n        typeof fmtDef != \"object\" ||\n        fmtDef instanceof RegExp ||\n        typeof fmtDef.compare != \"function\"\n      ) {\n        throw new Error(`\"${keyword}\": format \"${format}\" does not define \"compare\" function`)\n      }\n      const fmt = gen.scopeValue(\"formats\", {\n        key: format,\n        ref: fmtDef,\n        code: opts.code.formats ? _`${opts.code.formats}${getProperty(format)}` : undefined,\n      })\n\n      cxt.fail$data(compareCode(fmt))\n    }\n\n    function compareCode(fmt: Name): Code {\n      return _`${fmt}.compare(${data}, ${schemaCode}) ${KWDs[keyword as Kwd].fail} 0`\n    }\n  },\n  dependencies: [\"format\"],\n}\n\nconst formatLimitPlugin: Plugin<undefined> = (ajv: Ajv): Ajv => {\n  ajv.addKeyword(formatLimitDefinition)\n  return ajv\n}\n\nexport default formatLimitPlugin\n","import {\n  DefinedFormats,\n  FormatMode,\n  FormatName,\n  formatNames,\n  fastFormats,\n  fullFormats,\n} from \"./formats\"\nimport formatLimit from \"./limit\"\nimport type Ajv from \"ajv\"\nimport type {Plugin, Format} from \"ajv\"\nimport {_, Name} from \"ajv/dist/compile/codegen\"\n\nexport {FormatMode, FormatName} from \"./formats\"\nexport {LimitFormatError} from \"./limit\"\nexport interface FormatOptions {\n  mode?: FormatMode\n  formats?: FormatName[]\n  keywords?: boolean\n}\n\nexport type FormatsPluginOptions = FormatName[] | FormatOptions\n\nexport interface FormatsPlugin extends Plugin<FormatsPluginOptions> {\n  get: (format: FormatName, mode?: FormatMode) => Format\n}\n\nconst fullName = new Name(\"fullFormats\")\nconst fastName = new Name(\"fastFormats\")\n\nconst formatsPlugin: FormatsPlugin = (\n  ajv: Ajv,\n  opts: FormatsPluginOptions = {keywords: true}\n): Ajv => {\n  if (Array.isArray(opts)) {\n    addFormats(ajv, opts, fullFormats, fullName)\n    return ajv\n  }\n  const [formats, exportName] =\n    opts.mode === \"fast\" ? [fastFormats, fastName] : [fullFormats, fullName]\n  const list = opts.formats || formatNames\n  addFormats(ajv, list, formats, exportName)\n  if (opts.keywords) formatLimit(ajv)\n  return ajv\n}\n\nformatsPlugin.get = (name: FormatName, mode: FormatMode = \"full\"): Format => {\n  const formats = mode === \"fast\" ? fastFormats : fullFormats\n  const f = formats[name]\n  if (!f) throw new Error(`Unknown format \"${name}\"`)\n  return f\n}\n\nfunction addFormats(ajv: Ajv, list: FormatName[], fs: DefinedFormats, exportName: Name): void {\n  ajv.opts.code.formats ??= _`require(\"ajv-formats/dist/formats\").${exportName}`\n  for (const f of list) ajv.addFormat(f, fs[f])\n}\n\nmodule.exports = exports = formatsPlugin\nObject.defineProperty(exports, \"__esModule\", {value: true})\n\nexport default formatsPlugin\n","import type {FuncKeywordDefinition, AnySchemaObject} from \"ajv\"\nimport equal = require(\"fast-deep-equal\")\n\nconst SCALAR_TYPES = [\"number\", \"integer\", \"string\", \"boolean\", \"null\"]\n\nexport default function getDef(): FuncKeywordDefinition {\n  return {\n    keyword: \"uniqueItemProperties\",\n    type: \"array\",\n    schemaType: \"array\",\n    compile(keys: string[], parentSchema: AnySchemaObject) {\n      const scalar = getScalarKeys(keys, parentSchema)\n\n      return (data) => {\n        if (data.length <= 1) return true\n        for (let k = 0; k < keys.length; k++) {\n          const key = keys[k]\n          if (scalar[k]) {\n            const hash: Record<string, any> = {}\n            for (const x of data) {\n              if (!x || typeof x != \"object\") continue\n              let p = x[key]\n              if (p && typeof p == \"object\") continue\n              if (typeof p == \"string\") p = '\"' + p\n              if (hash[p]) return false\n              hash[p] = true\n            }\n          } else {\n            for (let i = data.length; i--; ) {\n              const x = data[i]\n              if (!x || typeof x != \"object\") continue\n              for (let j = i; j--; ) {\n                const y = data[j]\n                if (y && typeof y == \"object\" && equal(x[key], y[key])) return false\n              }\n            }\n          }\n        }\n        return true\n      }\n    },\n    metaSchema: {\n      type: \"array\",\n      items: {type: \"string\"},\n    },\n  }\n}\n\nfunction getScalarKeys(keys: string[], schema: AnySchemaObject): boolean[] {\n  return keys.map((key) => {\n    const t = schema.items?.properties?.[key]?.type\n    return Array.isArray(t)\n      ? !t.includes(\"object\") && !t.includes(\"array\")\n      : SCALAR_TYPES.includes(t)\n  })\n}\n\nmodule.exports = getDef\n","import type {Plugin} from \"ajv\"\nimport getDef from \"../definitions/uniqueItemProperties\"\n\nconst uniqueItemProperties: Plugin<undefined> = (ajv) => ajv.addKeyword(getDef())\n\nexport default uniqueItemProperties\nmodule.exports = uniqueItemProperties\n","export function asRequired<T, U>(\n  value: T | null | undefined,\n  parent: U,\n  property: string,\n): T {\n  if (typeof asOptional(value) !== 'undefined') {\n    return value as T;\n  }\n  throw new Error(\n    `Property is required in ${JSON.stringify(parent)}, property: ${property}`,\n  );\n}\n\nexport function asOptional<T>(value: T | null | undefined): T | undefined {\n  return value == null ? undefined : value;\n}\n\nexport function isDefined<T>(value?: T | null): value is T {\n  return asOptional(value) !== undefined;\n}\n\nexport function isNullOrUndefined<T>(value: T | null | undefined): Boolean {\n  return value === null || value === undefined;\n}\n\nexport function notEmpty<TValue>(value: TValue | null): value is TValue {\n  return value !== null;\n}\n\nexport function isObject(givenValue: any): givenValue is object {\n  return (\n    typeof givenValue === 'object' &&\n    !Array.isArray(givenValue) &&\n    givenValue !== null\n  );\n}\n","const currencies = [\n  'ADP',\n  'AED',\n  'AFA',\n  'AFN',\n  'ALL',\n  'AMD',\n  'ANG',\n  'AOA',\n  'ARS',\n  'ATS',\n  'AUD',\n  'AWG',\n  'AYM',\n  'AZM',\n  'AZN',\n  'BAM',\n  'BBD',\n  'BDT',\n  'BEF',\n  'BGL',\n  'BGN',\n  'BHD',\n  'BIF',\n  'BMD',\n  'BND',\n  'BOB',\n  'BOV',\n  'BRL',\n  'BSD',\n  'BTN',\n  'BWP',\n  'BYB',\n  'BYN',\n  'BYR',\n  'BZD',\n  'CAD',\n  'CDF',\n  'CHE',\n  'CHF',\n  'CHW',\n  'CLF',\n  'CLP',\n  'CNY',\n  'COP',\n  'COU',\n  'CRC',\n  'CSD',\n  'CUC',\n  'CUP',\n  'CVE',\n  'CYP',\n  'CZK',\n  'DEM',\n  'DJF',\n  'DKK',\n  'DOP',\n  'DZD',\n  'EEK',\n  'EGP',\n  'ERN',\n  'ESP',\n  'ETB',\n  'EUR',\n  'FIM',\n  'FJD',\n  'FKP',\n  'FRF',\n  'GBP',\n  'GEL',\n  'GHC',\n  'GHS',\n  'GIP',\n  'GMD',\n  'GNF',\n  'GRD',\n  'GTQ',\n  'GWP',\n  'GYD',\n  'HKD',\n  'HNL',\n  'HRK',\n  'HTG',\n  'HUF',\n  'IDR',\n  'IEP',\n  'ILS',\n  'INR',\n  'IQD',\n  'IRR',\n  'ISK',\n  'ITL',\n  'JMD',\n  'JOD',\n  'JPY',\n  'KES',\n  'KGS',\n  'KHR',\n  'KMF',\n  'KPW',\n  'KRW',\n  'KWD',\n  'KYD',\n  'KZT',\n  'LAK',\n  'LBP',\n  'LKR',\n  'LRD',\n  'LSL',\n  'LTL',\n  'LUF',\n  'LVL',\n  'LYD',\n  'MAD',\n  'MDL',\n  'MGA',\n  'MGF',\n  'MKD',\n  'MMK',\n  'MNT',\n  'MOP',\n  'MRO',\n  'MRU',\n  'MTL',\n  'MUR',\n  'MVR',\n  'MWK',\n  'MXN',\n  'MXV',\n  'MYR',\n  'MZM',\n  'MZN',\n  'NAD',\n  'NGN',\n  'NIO',\n  'NLG',\n  'NOK',\n  'NPR',\n  'NZD',\n  'OMR',\n  'PAB',\n  'PEN',\n  'PGK',\n  'PHP',\n  'PKR',\n  'PLN',\n  'PTE',\n  'PYG',\n  'QAR',\n  'ROL',\n  'RON',\n  'RSD',\n  'RUB',\n  'RUR',\n  'RWF',\n  'SAR',\n  'SBD',\n  'SCR',\n  'SDD',\n  'SDG',\n  'SEK',\n  'SGD',\n  'SHP',\n  'SIT',\n  'SKK',\n  'SLL',\n  'SOS',\n  'SRD',\n  'SRG',\n  'SSP',\n  'STD',\n  'STN',\n  'SVC',\n  'SYP',\n  'SZL',\n  'THB',\n  'TJS',\n  'TMM',\n  'TMT',\n  'TND',\n  'TOP',\n  'TPE',\n  'TRL',\n  'TRY',\n  'TTD',\n  'TWD',\n  'TZS',\n  'UAH',\n  'UGX',\n  'USD',\n  'USN',\n  'USS',\n  'UYI',\n  'UYU',\n  'UZS',\n  'VEB',\n  'VEF',\n  'VES',\n  'VND',\n  'VUV',\n  'WST',\n  'XAF',\n  'XAG',\n  'XAU',\n  'XBA',\n  'XBB',\n  'XBC',\n  'XBD',\n  'XCD',\n  'XDR',\n  'XFO',\n  'XFU',\n  'XOF',\n  'XPD',\n  'XPF',\n  'XPT',\n  'XSU',\n  'XTS',\n  'XUA',\n  'XXX',\n  'YER',\n  'YUM',\n  'ZAR',\n  'ZMK',\n  'ZMW',\n  'ZWD',\n  'ZWL',\n  'ZWN',\n  'ZWR',\n];\nconst CURRENCY_CODES = new Set(currencies.map((key) => key.toLowerCase()));\n\nexport function validCurrency(value: string): boolean {\n  return CURRENCY_CODES.has(value.toLowerCase());\n}\n","/**\n * Expected to match Scala validation:\n * import com.wixpress.accord.FormatValidators\n * FormatValidators.validEmail(email).isSuccess\n */\n\nconst anyLetter = '\\u00A1-\\uD7FF\\uE000-\\uFFFF-a-zA-Z';\nconst anyDigit = '0-9';\nconst anyLetterOrDigit = `${anyLetter}${anyDigit}`;\nconst anyAllowedSymbol = \"!#$%&'*+/=?^_`{|}~-\";\nconst allowedWithoutQuotes = `[${anyLetterOrDigit}${anyAllowedSymbol}]+(?:\\\\.[${anyLetterOrDigit}${anyAllowedSymbol}]+)*`;\nconst allowedBetweenQuotes = `(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*`;\n\nconst localPart = `(?:${allowedWithoutQuotes}|${allowedBetweenQuotes})`;\nconst domainPart =\n  `(?:[${anyLetterOrDigit}](?:[${anyLetterOrDigit}-]*[${anyLetterOrDigit}])?\\\\.)+` +\n  `(?:(?:[${anyDigit}]+[${anyLetter}][${anyLetterOrDigit}]*)|(?:[${anyLetter}][${anyLetterOrDigit}]{1,}))`;\nexport const emailValidationPattern = '^' + localPart + '@' + domainPart + '$';\n","const isoAlpha2Codes = [\n  'aa',\n  'ab',\n  'ae',\n  'af',\n  'ak',\n  'am',\n  'an',\n  'ar',\n  'as',\n  'av',\n  'ay',\n  'az',\n  'ba',\n  'be',\n  'bg',\n  'bh',\n  'bi',\n  'bm',\n  'bn',\n  'bo',\n  'br',\n  'bs',\n  'ca',\n  'ce',\n  'ch',\n  'co',\n  'cr',\n  'cs',\n  'cu',\n  'cv',\n  'cy',\n  'da',\n  'de',\n  'dv',\n  'dz',\n  'ee',\n  'el',\n  'en',\n  'eo',\n  'es',\n  'et',\n  'eu',\n  'fa',\n  'ff',\n  'fi',\n  'fj',\n  'fo',\n  'fr',\n  'fy',\n  'ga',\n  'gd',\n  'gl',\n  'gn',\n  'gu',\n  'gv',\n  'ha',\n  'he',\n  'hi',\n  'ho',\n  'hr',\n  'ht',\n  'hu',\n  'hy',\n  'hz',\n  'ia',\n  'id',\n  'ie',\n  'ig',\n  'ii',\n  'ik',\n  'in',\n  'io',\n  'is',\n  'it',\n  'iu',\n  'iw',\n  'ja',\n  'ji',\n  'jv',\n  'ka',\n  'kg',\n  'ki',\n  'kj',\n  'kk',\n  'kl',\n  'km',\n  'kn',\n  'ko',\n  'kr',\n  'ks',\n  'ku',\n  'kv',\n  'kw',\n  'ky',\n  'la',\n  'lb',\n  'lg',\n  'li',\n  'ln',\n  'lo',\n  'lt',\n  'lu',\n  'lv',\n  'mg',\n  'mh',\n  'mi',\n  'mk',\n  'ml',\n  'mn',\n  'mo',\n  'mr',\n  'ms',\n  'mt',\n  'my',\n  'na',\n  'nb',\n  'nd',\n  'ne',\n  'ng',\n  'nl',\n  'nn',\n  'no',\n  'nr',\n  'nv',\n  'ny',\n  'oc',\n  'oj',\n  'om',\n  'or',\n  'os',\n  'pa',\n  'pi',\n  'pl',\n  'ps',\n  'pt',\n  'qu',\n  'rm',\n  'rn',\n  'ro',\n  'ru',\n  'rw',\n  'sa',\n  'sc',\n  'sd',\n  'se',\n  'sg',\n  'si',\n  'sk',\n  'sl',\n  'sm',\n  'sn',\n  'so',\n  'sq',\n  'sr',\n  'ss',\n  'st',\n  'su',\n  'sv',\n  'sw',\n  'ta',\n  'te',\n  'tg',\n  'th',\n  'ti',\n  'tk',\n  'tl',\n  'tn',\n  'to',\n  'tr',\n  'ts',\n  'tt',\n  'tw',\n  'ty',\n  'ug',\n  'uk',\n  'ur',\n  'uz',\n  've',\n  'vi',\n  'vo',\n  'wa',\n  'wo',\n  'xh',\n  'yi',\n  'yo',\n  'za',\n  'zh',\n  'zu',\n];\nconst LANG_CODES = new Set(isoAlpha2Codes);\n\nexport function validLanguageCode(value: string): boolean {\n  return LANG_CODES.has(value);\n}\n","export function validTimeZone(timeZone: string): boolean {\n  try {\n    if (!Intl || !Intl.DateTimeFormat().resolvedOptions().timeZone) {\n      return false;\n    }\n    // throws an error if timezone is not valid\n    Intl.DateTimeFormat(undefined, { timeZone });\n    return true;\n  } catch (error) {\n    return false;\n  }\n}\n","import type Ajv from 'ajv';\nimport { type Format } from 'ajv';\n\nimport { validCurrency } from './currency-validation';\nimport { emailValidationPattern } from './email-validation';\nimport { validLanguageCode } from './language-validation';\nimport { validTimeZone } from './timezone-validation';\n\nexport type CustomFormat =\n  | 'phone'\n  | 'color-hex'\n  | 'currency'\n  | 'language'\n  | 'time-zone';\n\nconst newPhoneFormat = '^\\\\+[1-9]\\\\d{1,14}$';\n\nexport function addCustomFormats(\n  ajv: Ajv,\n  libraryBasedPhoneFieldValidationEnabled: Boolean,\n) {\n  const validationFormats = {\n    ...customFormats,\n    phone: libraryBasedPhoneFieldValidationEnabled\n      ? newPhoneFormat\n      : customFormats.phone,\n  };\n  for (const [name, format] of Object.entries(validationFormats)) {\n    ajv.addFormat(name, format);\n  }\n}\n\n// https://github.com/wix-private/wix-node-platform/tree/master/rpc/wnp-proto-validation-fv\nconst customFormats: { [name: string]: Format } = {\n  phone: '^[\\\\d \\\\u00A0()+\\\\-.]+$',\n  email: emailValidationPattern,\n  'color-hex': /^#(?:[0-9A-F]{3,4}|[0-9A-F]{6}|[0-9A-F]{8})$/i,\n  currency: validCurrency,\n  language: validLanguageCode,\n  'time-zone': validTimeZone,\n};\n","// This file is a workaround for a bug in web browsers' \"native\"\n// ES6 importing system which is uncapable of importing \"*.json\" files.\n// https://github.com/catamphetamine/libphonenumber-js/issues/239\nexport default {\"version\":4,\"country_calling_codes\":{\"1\":[\"US\",\"AG\",\"AI\",\"AS\",\"BB\",\"BM\",\"BS\",\"CA\",\"DM\",\"DO\",\"GD\",\"GU\",\"JM\",\"KN\",\"KY\",\"LC\",\"MP\",\"MS\",\"PR\",\"SX\",\"TC\",\"TT\",\"VC\",\"VG\",\"VI\"],\"7\":[\"RU\",\"KZ\"],\"20\":[\"EG\"],\"27\":[\"ZA\"],\"30\":[\"GR\"],\"31\":[\"NL\"],\"32\":[\"BE\"],\"33\":[\"FR\"],\"34\":[\"ES\"],\"36\":[\"HU\"],\"39\":[\"IT\",\"VA\"],\"40\":[\"RO\"],\"41\":[\"CH\"],\"43\":[\"AT\"],\"44\":[\"GB\",\"GG\",\"IM\",\"JE\"],\"45\":[\"DK\"],\"46\":[\"SE\"],\"47\":[\"NO\",\"SJ\"],\"48\":[\"PL\"],\"49\":[\"DE\"],\"51\":[\"PE\"],\"52\":[\"MX\"],\"53\":[\"CU\"],\"54\":[\"AR\"],\"55\":[\"BR\"],\"56\":[\"CL\"],\"57\":[\"CO\"],\"58\":[\"VE\"],\"60\":[\"MY\"],\"61\":[\"AU\",\"CC\",\"CX\"],\"62\":[\"ID\"],\"63\":[\"PH\"],\"64\":[\"NZ\"],\"65\":[\"SG\"],\"66\":[\"TH\"],\"81\":[\"JP\"],\"82\":[\"KR\"],\"84\":[\"VN\"],\"86\":[\"CN\"],\"90\":[\"TR\"],\"91\":[\"IN\"],\"92\":[\"PK\"],\"93\":[\"AF\"],\"94\":[\"LK\"],\"95\":[\"MM\"],\"98\":[\"IR\"],\"211\":[\"SS\"],\"212\":[\"MA\",\"EH\"],\"213\":[\"DZ\"],\"216\":[\"TN\"],\"218\":[\"LY\"],\"220\":[\"GM\"],\"221\":[\"SN\"],\"222\":[\"MR\"],\"223\":[\"ML\"],\"224\":[\"GN\"],\"225\":[\"CI\"],\"226\":[\"BF\"],\"227\":[\"NE\"],\"228\":[\"TG\"],\"229\":[\"BJ\"],\"230\":[\"MU\"],\"231\":[\"LR\"],\"232\":[\"SL\"],\"233\":[\"GH\"],\"234\":[\"NG\"],\"235\":[\"TD\"],\"236\":[\"CF\"],\"237\":[\"CM\"],\"238\":[\"CV\"],\"239\":[\"ST\"],\"240\":[\"GQ\"],\"241\":[\"GA\"],\"242\":[\"CG\"],\"243\":[\"CD\"],\"244\":[\"AO\"],\"245\":[\"GW\"],\"246\":[\"IO\"],\"247\":[\"AC\"],\"248\":[\"SC\"],\"249\":[\"SD\"],\"250\":[\"RW\"],\"251\":[\"ET\"],\"252\":[\"SO\"],\"253\":[\"DJ\"],\"254\":[\"KE\"],\"255\":[\"TZ\"],\"256\":[\"UG\"],\"257\":[\"BI\"],\"258\":[\"MZ\"],\"260\":[\"ZM\"],\"261\":[\"MG\"],\"262\":[\"RE\",\"YT\"],\"263\":[\"ZW\"],\"264\":[\"NA\"],\"265\":[\"MW\"],\"266\":[\"LS\"],\"267\":[\"BW\"],\"268\":[\"SZ\"],\"269\":[\"KM\"],\"290\":[\"SH\",\"TA\"],\"291\":[\"ER\"],\"297\":[\"AW\"],\"298\":[\"FO\"],\"299\":[\"GL\"],\"350\":[\"GI\"],\"351\":[\"PT\"],\"352\":[\"LU\"],\"353\":[\"IE\"],\"354\":[\"IS\"],\"355\":[\"AL\"],\"356\":[\"MT\"],\"357\":[\"CY\"],\"358\":[\"FI\",\"AX\"],\"359\":[\"BG\"],\"370\":[\"LT\"],\"371\":[\"LV\"],\"372\":[\"EE\"],\"373\":[\"MD\"],\"374\":[\"AM\"],\"375\":[\"BY\"],\"376\":[\"AD\"],\"377\":[\"MC\"],\"378\":[\"SM\"],\"380\":[\"UA\"],\"381\":[\"RS\"],\"382\":[\"ME\"],\"383\":[\"XK\"],\"385\":[\"HR\"],\"386\":[\"SI\"],\"387\":[\"BA\"],\"389\":[\"MK\"],\"420\":[\"CZ\"],\"421\":[\"SK\"],\"423\":[\"LI\"],\"500\":[\"FK\"],\"501\":[\"BZ\"],\"502\":[\"GT\"],\"503\":[\"SV\"],\"504\":[\"HN\"],\"505\":[\"NI\"],\"506\":[\"CR\"],\"507\":[\"PA\"],\"508\":[\"PM\"],\"509\":[\"HT\"],\"590\":[\"GP\",\"BL\",\"MF\"],\"591\":[\"BO\"],\"592\":[\"GY\"],\"593\":[\"EC\"],\"594\":[\"GF\"],\"595\":[\"PY\"],\"596\":[\"MQ\"],\"597\":[\"SR\"],\"598\":[\"UY\"],\"599\":[\"CW\",\"BQ\"],\"670\":[\"TL\"],\"672\":[\"NF\"],\"673\":[\"BN\"],\"674\":[\"NR\"],\"675\":[\"PG\"],\"676\":[\"TO\"],\"677\":[\"SB\"],\"678\":[\"VU\"],\"679\":[\"FJ\"],\"680\":[\"PW\"],\"681\":[\"WF\"],\"682\":[\"CK\"],\"683\":[\"NU\"],\"685\":[\"WS\"],\"686\":[\"KI\"],\"687\":[\"NC\"],\"688\":[\"TV\"],\"689\":[\"PF\"],\"690\":[\"TK\"],\"691\":[\"FM\"],\"692\":[\"MH\"],\"850\":[\"KP\"],\"852\":[\"HK\"],\"853\":[\"MO\"],\"855\":[\"KH\"],\"856\":[\"LA\"],\"880\":[\"BD\"],\"886\":[\"TW\"],\"960\":[\"MV\"],\"961\":[\"LB\"],\"962\":[\"JO\"],\"963\":[\"SY\"],\"964\":[\"IQ\"],\"965\":[\"KW\"],\"966\":[\"SA\"],\"967\":[\"YE\"],\"968\":[\"OM\"],\"970\":[\"PS\"],\"971\":[\"AE\"],\"972\":[\"IL\"],\"973\":[\"BH\"],\"974\":[\"QA\"],\"975\":[\"BT\"],\"976\":[\"MN\"],\"977\":[\"NP\"],\"992\":[\"TJ\"],\"993\":[\"TM\"],\"994\":[\"AZ\"],\"995\":[\"GE\"],\"996\":[\"KG\"],\"998\":[\"UZ\"]},\"countries\":{\"AC\":[\"247\",\"00\",\"(?:[01589]\\\\d|[46])\\\\d{4}\",[5,6],0,0,0,0,0,0,0,[[\"6[2-467]\\\\d{3}\",[5]],[\"4\\\\d{4}\",[5]],0,0,0,0,[\"(?:0[1-9]|[1589]\\\\d)\\\\d{4}\",[6]]]],\"AD\":[\"376\",\"00\",\"(?:1|6\\\\d)\\\\d{7}|[135-9]\\\\d{5}\",[6,8,9],[[\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"[135-9]\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"1\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6\"]]],0,0,0,0,0,0,[[\"[78]\\\\d{5}\",[6]],[\"690\\\\d{6}|[356]\\\\d{5}\",[6,9]],[\"180[02]\\\\d{4}\",[8]],[\"[19]\\\\d{5}\",[6]]]],\"AE\":[\"971\",\"00\",\"(?:[4-7]\\\\d|9[0-689])\\\\d{7}|800\\\\d{2,9}|[2-4679]\\\\d{7}\",[5,6,7,8,9,10,11,12],[[\"(\\\\d{3})(\\\\d{2,9})\",\"$1 $2\",[\"60|8\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[236]|[479][2-8]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d)(\\\\d{5})\",\"$1 $2 $3\",[\"[479]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"5\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"[2-4679][2-8]\\\\d{6}\",[8]],[\"5[02-68]\\\\d{7}\",[9]],[\"400\\\\d{6}|800\\\\d{2,9}\"],[\"900[02]\\\\d{5}\",[9]],0,0,[\"600[25]\\\\d{5}\",[9]],0,0,[\"700[05]\\\\d{5}\",[9]]]],\"AF\":[\"93\",\"00\",\"[2-7]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-7]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:[25][0-8]|[34][0-4]|6[0-5])[2-9]\\\\d{6}\"],[\"7\\\\d{8}\"]]],\"AG\":[\"1\",\"011\",\"(?:268|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([457]\\\\d{6})$|1\",\"268$1\",0,\"268\",[[\"268(?:4(?:6[0-38]|84)|56[0-2])\\\\d{4}\"],[\"268(?:464|7(?:1[3-9]|[28]\\\\d|3[0246]|64|7[0-689]))\\\\d{4}\"],[\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\"],[\"900[2-9]\\\\d{6}\"],[\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-9]|3[23]|44|66|77|88)[2-9]\\\\d{6}\"],0,0,[\"26840[69]\\\\d{4}\"],[\"26848[01]\\\\d{4}\"]]],\"AI\":[\"1\",\"011\",\"(?:264|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([2457]\\\\d{6})$|1\",\"264$1\",0,\"264\",[[\"264(?:292|4(?:6[12]|9[78]))\\\\d{4}\"],[\"264(?:235|4(?:69|76)|5(?:3[6-9]|8[1-4])|7(?:29|72))\\\\d{4}\"],[\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\"],[\"900[2-9]\\\\d{6}\"],[\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-9]|3[23]|44|66|77|88)[2-9]\\\\d{6}\"],0,0,[\"264724\\\\d{4}\"]]],\"AL\":[\"355\",\"00\",\"(?:700\\\\d\\\\d|900)\\\\d{3}|8\\\\d{5,7}|(?:[2-5]|6\\\\d)\\\\d{7}\",[6,7,8,9],[[\"(\\\\d{3})(\\\\d{3,4})\",\"$1 $2\",[\"80|9\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"4[2-6]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2358][2-5]|4\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[23578]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"6\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"4505[0-2]\\\\d{3}|(?:[2358][16-9]\\\\d[2-9]|4410)\\\\d{4}|(?:[2358][2-5][2-9]|4(?:[2-57-9][2-9]|6\\\\d))\\\\d{5}\",[8]],[\"6(?:[78][2-9]|9\\\\d)\\\\d{6}\",[9]],[\"800\\\\d{4}\",[7]],[\"900[1-9]\\\\d\\\\d\",[6]],[\"700[2-9]\\\\d{4}\",[8]],0,0,0,0,[\"808[1-9]\\\\d\\\\d\",[6]]]],\"AM\":[\"374\",\"00\",\"(?:[1-489]\\\\d|55|60|77)\\\\d{6}\",[8],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[89]0\"],\"0 $1\"],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"2|3[12]\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"1|47\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[3-9]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:(?:1[0-25]|47)\\\\d|2(?:2[2-46]|3[1-8]|4[2-69]|5[2-7]|6[1-9]|8[1-7])|3[12]2)\\\\d{5}\"],[\"(?:33|4[1349]|55|77|88|9[13-9])\\\\d{6}\"],[\"800\\\\d{5}\"],[\"90[016]\\\\d{5}\"],0,0,0,0,[\"60(?:2[78]|3[5-9]|4[02-9]|5[0-46-9]|[6-8]\\\\d|9[0-2])\\\\d{4}\"],[\"80[1-4]\\\\d{5}\"]]],\"AO\":[\"244\",\"00\",\"[29]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[29]\"]]],0,0,0,0,0,0,[[\"2\\\\d(?:[0134][25-9]|[25-9]\\\\d)\\\\d{5}\"],[\"9[1-79]\\\\d{7}\"]]],\"AR\":[\"54\",\"00\",\"(?:11|[89]\\\\d\\\\d)\\\\d{8}|[2368]\\\\d{9}\",[10,11],[[\"(\\\\d{4})(\\\\d{2})(\\\\d{4})\",\"$1 $2-$3\",[\"2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9])\",\"2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8]))|2(?:2[24-9]|3[1-59]|47)\",\"2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5[56][46]|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]\",\"2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|58|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|54(?:4|5[13-7]|6[89])|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:454|85[56])[46]|3(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]\"],\"0$1\",1],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2-$3\",[\"1\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[68]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2-$3\",[\"[23]\"],\"0$1\",1],[\"(\\\\d)(\\\\d{4})(\\\\d{2})(\\\\d{4})\",\"$2 15-$3-$4\",[\"9(?:2[2-469]|3[3-578])\",\"9(?:2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9]))\",\"9(?:2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8])))|92(?:2[24-9]|3[1-59]|47)\",\"9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5(?:[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]\",\"9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|5(?:4(?:4|5[13-7]|6[89])|[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]\"],\"0$1\",0,\"$1 $2 $3-$4\"],[\"(\\\\d)(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$2 15-$3-$4\",[\"91\"],\"0$1\",0,\"$1 $2 $3-$4\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{5})\",\"$1-$2-$3\",[\"8\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$2 15-$3-$4\",[\"9\"],\"0$1\",0,\"$1 $2 $3-$4\"]],\"0\",0,\"0?(?:(11|2(?:2(?:02?|[13]|2[13-79]|4[1-6]|5[2457]|6[124-8]|7[1-4]|8[13-6]|9[1267])|3(?:02?|1[467]|2[03-6]|3[13-8]|[49][2-6]|5[2-8]|[67])|4(?:7[3-578]|9)|6(?:[0136]|2[24-6]|4[6-8]?|5[15-8])|80|9(?:0[1-3]|[19]|2\\\\d|3[1-6]|4[02568]?|5[2-4]|6[2-46]|72?|8[23]?))|3(?:3(?:2[79]|6|8[2578])|4(?:0[0-24-9]|[12]|3[5-8]?|4[24-7]|5[4-68]?|6[02-9]|7[126]|8[2379]?|9[1-36-8])|5(?:1|2[1245]|3[237]?|4[1-46-9]|6[2-4]|7[1-6]|8[2-5]?)|6[24]|7(?:[069]|1[1568]|2[15]|3[145]|4[13]|5[14-8]|7[2-57]|8[126])|8(?:[01]|2[15-7]|3[2578]?|4[13-6]|5[4-8]?|6[1-357-9]|7[36-8]?|8[5-8]?|9[124])))15)?\",\"9$1\",0,0,[[\"3(?:7(?:1[15]|81)|8(?:21|4[16]|69|9[12]))[46]\\\\d{5}|(?:2(?:2(?:2[59]|44|52)|3(?:26|44)|47[35]|9(?:[07]2|2[26]|34|46))|3327)[45]\\\\d{5}|(?:2(?:657|9(?:54|66))|3(?:48[27]|7(?:55|77)|8(?:65|78)))[2-8]\\\\d{5}|(?:2(?:284|3(?:02|23)|477|622|920)|3(?:4(?:46|89|92)|541))[2-7]\\\\d{5}|(?:(?:11[1-8]|670)\\\\d|2(?:2(?:0[45]|1[2-6]|3[3-6])|3(?:[06]4|7[45])|494|6(?:04|1[2-8]|[36][45]|4[3-6])|80[45]|9(?:[17][4-6]|[48][45]|9[3-6]))|3(?:364|4(?:1[2-8]|[25][4-6]|3[3-6]|84)|5(?:1[2-9]|[38][4-6])|6(?:2[45]|44)|7[069][45]|8(?:0[45]|1[2-7]|3[4-6]|5[3-6]|7[2-6]|8[3-68])))\\\\d{6}|(?:2(?:2(?:62|81)|320|9(?:42|83))|3(?:329|4(?:62|7[16])|5(?:43|64)|7(?:18|5[17])))[2-6]\\\\d{5}|2(?:2(?:21|4[23]|6[145]|7[1-4]|8[356]|9[267])|3(?:16|3[13-8]|43|5[346-8]|9[3-5])|6(?:2[46]|4[78]|5[1568])|9(?:03|2[1457-9]|3[1356]|4[08]|[56][23]|82))4\\\\d{5}|(?:2(?:257|3(?:24|46|92)|9(?:01|23|64))|3(?:4(?:42|64)|5(?:25|37|4[47]|71)|7(?:35|72)|825))[3-6]\\\\d{5}|(?:2(?:2(?:02|2[3467]|4[156]|5[45]|6[6-8]|91)|3(?:1[47]|25|[45][25]|96)|47[48]|625|932)|3(?:38[2578]|4(?:0[0-24-9]|3[78]|4[457]|58|6[035-9]|72|83|9[136-8])|5(?:2[124]|[368][23]|4[2689]|7[2-6])|7(?:16|2[15]|3[14]|4[13]|5[468]|7[3-5]|8[26])|8(?:2[67]|3[278]|4[3-5]|5[78]|6[1-378]|[78]7|94)))[4-6]\\\\d{5}\",[10]],[\"93(?:7(?:1[15]|81)|8(?:21|4[16]|69|9[12]))[46]\\\\d{5}|9(?:2(?:2(?:2[59]|44|52)|3(?:26|44)|47[35]|9(?:[07]2|2[26]|34|46))|3327)[45]\\\\d{5}|9(?:2(?:657|9(?:54|66))|3(?:48[27]|7(?:55|77)|8(?:65|78)))[2-8]\\\\d{5}|9(?:2(?:284|3(?:02|23)|477|622|920)|3(?:4(?:46|89|92)|541))[2-7]\\\\d{5}|(?:675\\\\d|9(?:11[1-8]\\\\d|2(?:2(?:0[45]|1[2-6]|3[3-6])|3(?:[06]4|7[45])|494|6(?:04|1[2-8]|[36][45]|4[3-6])|80[45]|9(?:[17][4-6]|[48][45]|9[3-6]))|3(?:364|4(?:1[2-8]|[25][4-6]|3[3-6]|84)|5(?:1[2-9]|[38][4-6])|6(?:2[45]|44)|7[069][45]|8(?:0[45]|1[2-7]|3[4-6]|5[3-6]|7[2-6]|8[3-68]))))\\\\d{6}|9(?:2(?:2(?:62|81)|320|9(?:42|83))|3(?:329|4(?:62|7[16])|5(?:43|64)|7(?:18|5[17])))[2-6]\\\\d{5}|92(?:2(?:21|4[23]|6[145]|7[1-4]|8[356]|9[267])|3(?:16|3[13-8]|43|5[346-8]|9[3-5])|6(?:2[46]|4[78]|5[1568])|9(?:03|2[1457-9]|3[1356]|4[08]|[56][23]|82))4\\\\d{5}|9(?:2(?:257|3(?:24|46|92)|9(?:01|23|64))|3(?:4(?:42|64)|5(?:25|37|4[47]|71)|7(?:35|72)|825))[3-6]\\\\d{5}|9(?:2(?:2(?:02|2[3467]|4[156]|5[45]|6[6-8]|91)|3(?:1[47]|25|[45][25]|96)|47[48]|625|932)|3(?:38[2578]|4(?:0[0-24-9]|3[78]|4[457]|58|6[035-9]|72|83|9[136-8])|5(?:2[124]|[368][23]|4[2689]|7[2-6])|7(?:16|2[15]|3[14]|4[13]|5[468]|7[3-5]|8[26])|8(?:2[67]|3[278]|4[3-5]|5[78]|6[1-378]|[78]7|94)))[4-6]\\\\d{5}\"],[\"800\\\\d{7,8}\"],[\"60[04579]\\\\d{7}\",[10]],0,0,[\"810\\\\d{7}\",[10]]]],\"AS\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|684|900)\\\\d{7}\",[10],0,\"1\",0,\"([267]\\\\d{6})$|1\",\"684$1\",0,\"684\",[[\"684(?:274|6(?:22|33|44|55|77|88|9[19]))\\\\d{4}\"],[\"684(?:2(?:48|5[2468]|7[246])|7(?:3[13]|70|82))\\\\d{4}\"],[\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\"],[\"900[2-9]\\\\d{6}\"],[\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-9]|3[23]|44|66|77|88)[2-9]\\\\d{6}\"]]],\"AT\":[\"43\",\"00\",\"1\\\\d{3,12}|2\\\\d{6,12}|43(?:(?:0\\\\d|5[02-9])\\\\d{3,9}|2\\\\d{4,5}|[3467]\\\\d{4}|8\\\\d{4,6}|9\\\\d{4,7})|5\\\\d{4,12}|8\\\\d{7,12}|9\\\\d{8,12}|(?:[367]\\\\d|4[0-24-9])\\\\d{4,11}\",[4,5,6,7,8,9,10,11,12,13],[[\"(\\\\d)(\\\\d{3,12})\",\"$1 $2\",[\"1(?:11|[2-9])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})\",\"$1 $2\",[\"517\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3,5})\",\"$1 $2\",[\"5[079]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3,10})\",\"$1 $2\",[\"(?:31|4)6|51|6(?:48|5[0-3579]|[6-9])|7(?:20|32|8)|[89]\",\"(?:31|4)6|51|6(?:485|5[0-3579]|[6-9])|7(?:20|32|8)|[89]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3,9})\",\"$1 $2\",[\"[2-467]|5[2-6]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"5\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4,7})\",\"$1 $2 $3\",[\"5\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"1(?:11\\\\d|[2-9]\\\\d{3,11})|(?:316|463)\\\\d{3,10}|648[34]\\\\d{3,9}|(?:51|66|73)2\\\\d{3,10}|(?:2(?:1[467]|2[13-8]|5[2357]|6[1-46-8]|7[1-8]|8[124-7]|9[1458])|3(?:1[1-578]|3[23568]|4[5-7]|5[1378]|6[1-38]|8[3-68])|4(?:2[1-8]|35|7[1368]|8[2457])|5(?:2[1-8]|3[357]|4[147]|5[12578]|6[37])|6(?:13|2[1-47]|4[135-7]|5[468])|7(?:2[1-8]|35|4[13478]|5[68]|6[16-8]|7[1-6]|9[45]))\\\\d{4,10}\"],[\"6(?:485|(?:5[0-3579]|6[013-9]|[7-9]\\\\d)\\\\d)\\\\d{3,9}\",[7,8,9,10,11,12,13]],[\"800\\\\d{6,10}\",[9,10,11,12,13]],[\"(?:8[69][2-68]|9(?:0[01]|3[019]))\\\\d{6,10}\",[9,10,11,12,13]],0,0,0,0,[\"5(?:0[1-9]|17|[79]\\\\d)\\\\d{2,10}|7[28]0\\\\d{6,10}\",[5,6,7,8,9,10,11,12,13]],[\"8(?:10|2[018])\\\\d{6,10}|828\\\\d{5}\",[8,9,10,11,12,13]]]],\"AU\":[\"61\",\"001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011\",\"1(?:[0-79]\\\\d{7}(?:\\\\d(?:\\\\d{2})?)?|8[0-24-9]\\\\d{7})|[2-478]\\\\d{8}|1\\\\d{4,7}\",[5,6,7,8,9,10,12],[[\"(\\\\d{2})(\\\\d{3,4})\",\"$1 $2\",[\"16\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2,4})\",\"$1 $2 $3\",[\"16\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"14|4\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[2378]\"],\"(0$1)\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1(?:30|[89])\"]]],\"0\",0,\"(183[12])|0\",0,0,0,[[\"(?:(?:241|349)0\\\\d\\\\d|8(?:51(?:0(?:0[03-9]|[12479]\\\\d|3[2-9]|5[0-8]|6[1-9]|8[0-7])|1(?:[0235689]\\\\d|1[0-69]|4[0-589]|7[0-47-9])|2(?:0[0-79]|[18][13579]|2[14-9]|3[0-46-9]|[4-6]\\\\d|7[89]|9[0-4])|[34]\\\\d\\\\d)|91(?:(?:[0-58]\\\\d|6[0135-9])\\\\d|7(?:0[0-24-9]|[1-9]\\\\d)|9(?:[0-46-9]\\\\d|5[0-79]))))\\\\d{3}|(?:2(?:[0-26-9]\\\\d|3[0-8]|4[02-9]|5[0135-9])|3(?:[0-3589]\\\\d|4[0-578]|6[1-9]|7[0-35-9])|7(?:[013-57-9]\\\\d|2[0-8])|8(?:55|6[0-8]|[78]\\\\d|9[02-9]))\\\\d{6}\",[9]],[\"4(?:79[01]|83[0-36-9]|95[0-3])\\\\d{5}|4(?:[0-36]\\\\d|4[047-9]|[58][0-24-9]|7[02-8]|9[0-47-9])\\\\d{6}\",[9]],[\"180(?:0\\\\d{3}|2)\\\\d{3}\",[7,10]],[\"190[0-26]\\\\d{6}\",[10]],0,0,0,[\"163\\\\d{2,6}\",[5,6,7,8,9]],[\"14(?:5(?:1[0458]|[23][458])|71\\\\d)\\\\d{4}\",[9]],[\"13(?:00\\\\d{6}(?:\\\\d{2})?|45[0-4]\\\\d{3})|13\\\\d{4}\",[6,8,10,12]]],\"0011\"],\"AW\":[\"297\",\"00\",\"(?:[25-79]\\\\d\\\\d|800)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[25-9]\"]]],0,0,0,0,0,0,[[\"5(?:2\\\\d|8[1-9])\\\\d{4}\"],[\"(?:290|5[69]\\\\d|6(?:[03]0|22|4[0-2]|[69]\\\\d)|7(?:[34]\\\\d|7[07])|9(?:6[45]|9[4-8]))\\\\d{4}\"],[\"800\\\\d{4}\"],[\"900\\\\d{4}\"],0,0,0,0,[\"(?:28\\\\d|501)\\\\d{4}\"]]],\"AX\":[\"358\",\"00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))\",\"2\\\\d{4,9}|35\\\\d{4,5}|(?:60\\\\d\\\\d|800)\\\\d{4,6}|7\\\\d{5,11}|(?:[14]\\\\d|3[0-46-9]|50)\\\\d{4,8}\",[5,6,7,8,9,10,11,12],0,\"0\",0,0,0,0,\"18\",[[\"18[1-8]\\\\d{3,6}\",[6,7,8,9]],[\"4946\\\\d{2,6}|(?:4[0-8]|50)\\\\d{4,8}\",[6,7,8,9,10]],[\"800\\\\d{4,6}\",[7,8,9]],[\"[67]00\\\\d{5,6}\",[8,9]],0,0,[\"20\\\\d{4,8}|60[12]\\\\d{5,6}|7(?:099\\\\d{4,5}|5[03-9]\\\\d{3,7})|20[2-59]\\\\d\\\\d|(?:606|7(?:0[78]|1|3\\\\d))\\\\d{7}|(?:10|29|3[09]|70[1-5]\\\\d)\\\\d{4,8}\"]],\"00\"],\"AZ\":[\"994\",\"00\",\"365\\\\d{6}|(?:[124579]\\\\d|60|88)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"90\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"1[28]|2|365|46\",\"1[28]|2|365[45]|46\",\"1[28]|2|365(?:4|5[02])|46\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[13-9]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:2[12]428|3655[02])\\\\d{4}|(?:2(?:22[0-79]|63[0-28])|3654)\\\\d{5}|(?:(?:1[28]|46)\\\\d|2(?:[014-6]2|[23]3))\\\\d{6}\"],[\"36554\\\\d{4}|(?:[16]0|4[04]|5[015]|7[07]|99)\\\\d{7}\"],[\"88\\\\d{7}\"],[\"900200\\\\d{3}\"]]],\"BA\":[\"387\",\"00\",\"6\\\\d{8}|(?:[35689]\\\\d|49|70)\\\\d{6}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6[1-3]|[7-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2-$3\",[\"[3-5]|6[56]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"6\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:3(?:[05-79][2-9]|1[4579]|[23][24-9]|4[2-4689]|8[2457-9])|49[2-579]|5(?:0[2-49]|[13][2-9]|[268][2-4679]|4[4689]|5[2-79]|7[2-69]|9[2-4689]))\\\\d{5}\",[8]],[\"6040\\\\d{5}|6(?:03|[1-356]|44|7\\\\d)\\\\d{6}\"],[\"8[08]\\\\d{6}\",[8]],[\"9[0246]\\\\d{6}\",[8]],0,0,[\"703[235]0\\\\d{3}|70(?:2[0-5]|3[0146]|[56]0)\\\\d{4}\",[8]],0,0,[\"8[12]\\\\d{6}\",[8]]]],\"BB\":[\"1\",\"011\",\"(?:246|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-9]\\\\d{6})$|1\",\"246$1\",0,\"246\",[[\"246521[0369]\\\\d{3}|246(?:2(?:2[78]|7[0-4])|4(?:1[024-6]|2\\\\d|3[2-9])|5(?:20|[34]\\\\d|54|7[1-3])|6(?:2\\\\d|38)|7[35]7|9(?:1[89]|63))\\\\d{4}\"],[\"246(?:(?:2(?:[3568]\\\\d|4[0-57-9])|3(?:5[2-9]|6[0-6])|4(?:46|5\\\\d)|69[5-7]|8(?:[2-5]\\\\d|83))\\\\d|52(?:1[147]|20))\\\\d{3}\"],[\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\"],[\"(?:246976|900[2-9]\\\\d\\\\d)\\\\d{4}\"],[\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-9]|3[23]|44|66|77|88)[2-9]\\\\d{6}\"],0,[\"246(?:292|367|4(?:1[7-9]|3[01]|4[47-9]|67)|7(?:1[2-9]|2\\\\d|3[016]|53))\\\\d{4}\"],0,[\"24631\\\\d{5}\"]]],\"BD\":[\"880\",\"00\",\"[1-469]\\\\d{9}|8[0-79]\\\\d{7,8}|[2-79]\\\\d{8}|[2-9]\\\\d{7}|[3-9]\\\\d{6}|[57-9]\\\\d{5}\",[6,7,8,9,10],[[\"(\\\\d{2})(\\\\d{4,6})\",\"$1-$2\",[\"31[5-8]|[459]1\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3,7})\",\"$1-$2\",[\"3(?:[67]|8[013-9])|4(?:6[168]|7|[89][18])|5(?:6[128]|9)|6(?:[15]|28|4[14])|7[2-589]|8(?:0[014-9]|[12])|9[358]|(?:3[2-5]|4[235]|5[2-578]|6[0389]|76|8[3-7]|9[24])1|(?:44|66)[01346-9]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3,6})\",\"$1-$2\",[\"[13-9]|2[23]\"],\"0$1\"],[\"(\\\\d)(\\\\d{7,8})\",\"$1-$2\",[\"2\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:4(?:31\\\\d\\\\d|423)|5222)\\\\d{3}(?:\\\\d{2})?|8332[6-9]\\\\d\\\\d|(?:3(?:03[56]|224)|4(?:22[25]|653))\\\\d{3,4}|(?:3(?:42[47]|529|823)|4(?:027|525|65(?:28|8))|562|6257|7(?:1(?:5[3-5]|6[12]|7[156]|89)|22[589]56|32|42675|52(?:[25689](?:56|8)|[347]8)|71(?:6[1267]|75|89)|92374)|82(?:2[59]|32)56|9(?:03[23]56|23(?:256|373)|31|5(?:1|2[4589]56)))\\\\d{3}|(?:3(?:02[348]|22[35]|324|422)|4(?:22[67]|32[236-9]|6(?:2[46]|5[57])|953)|5526|6(?:024|6655)|81)\\\\d{4,5}|(?:2(?:7(?:1[0-267]|2[0-289]|3[0-29]|4[01]|5[1-3]|6[013]|7[0178]|91)|8(?:0[125]|1[1-6]|2[0157-9]|3[1-69]|41|6[1-35]|7[1-5]|8[1-8]|9[0-6])|9(?:0[0-2]|1[0-4]|2[568]|3[3-6]|5[5-7]|6[0136-9]|7[0-7]|8[014-9]))|3(?:0(?:2[025-79]|3[2-4])|181|22[12]|32[2356]|824)|4(?:02[09]|22[348]|32[045]|523|6(?:27|54))|666(?:22|53)|7(?:22[57-9]|42[56]|82[35])8|8(?:0[124-9]|2(?:181|2[02-4679]8)|4[12]|[5-7]2)|9(?:[04]2|2(?:2|328)|81))\\\\d{4}|(?:2(?:[23]\\\\d|[45])\\\\d\\\\d|3(?:1(?:2[5-7]|[5-7])|425|822)|4(?:033|1\\\\d|[257]1|332|4(?:2[246]|5[25])|6(?:2[35]|56|62)|8(?:23|54)|92[2-5])|5(?:02[03489]|22[457]|32[35-79]|42[46]|6(?:[18]|53)|724|826)|6(?:023|2(?:2[2-5]|5[3-5]|8)|32[3478]|42[34]|52[47]|6(?:[18]|6(?:2[34]|5[24]))|[78]2[2-5]|92[2-6])|7(?:02|21\\\\d|[3-589]1|6[12]|72[24])|8(?:217|3[12]|[5-7]1)|9[24]1)\\\\d{5}|(?:(?:3[2-8]|5[2-57-9]|6[03-589])1|4[4689][18])\\\\d{5}|[59]1\\\\d{5}\"],[\"(?:1[13-9]\\\\d|644)\\\\d{7}|(?:3[78]|44|66)[02-9]\\\\d{7}\",[10]],[\"80[03]\\\\d{7}\",[10]],0,0,0,0,0,[\"96(?:0[469]|1[0-47]|3[389]|43|6[69]|7[78])\\\\d{6}\",[10]]]],\"BE\":[\"32\",\"00\",\"4\\\\d{8}|[1-9]\\\\d{7}\",[8,9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"(?:80|9)0\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[239]|4[23]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[15-8]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"4\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"80[2-8]\\\\d{5}|(?:1[0-69]|[23][2-8]|4[23]|5\\\\d|6[013-57-9]|71|8[1-79]|9[2-4])\\\\d{6}\",[8]],[\"4[5-9]\\\\d{7}\",[9]],[\"800[1-9]\\\\d{4}\",[8]],[\"(?:70(?:2[0-57]|3[04-7]|44|6[04-69]|7[0579])|90\\\\d\\\\d)\\\\d{4}\",[8]],0,0,[\"78(?:0[578]|1[014-8]|2[25]|3[15-8]|48|5[05]|60|7[06-8]|9\\\\d)\\\\d{4}\",[8]],0,0,[\"7879\\\\d{4}\",[8]]]],\"BF\":[\"226\",\"00\",\"(?:[025-7]\\\\d|44)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[024-7]\"]]],0,0,0,0,0,0,[[\"2(?:0(?:49|5[23]|6[5-7]|9[016-9])|4(?:4[569]|5[4-6]|6[5-7]|7[0179])|5(?:[34]\\\\d|50|6[5-7]))\\\\d{4}\"],[\"(?:0[1-7]|44|5[0-8]|[67]\\\\d)\\\\d{6}\"]]],\"BG\":[\"359\",\"00\",\"00800\\\\d{7}|[2-7]\\\\d{6,7}|[89]\\\\d{6,8}|2\\\\d{5}\",[6,7,8,9,12],[[\"(\\\\d)(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"2\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"43[1-6]|70[1-9]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2,3})\",\"$1 $2 $3\",[\"[356]|4[124-7]|7[1-9]|8[1-6]|9[1-7]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"(?:70|8)0\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3\",[\"43[1-7]|7\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[48]|9[08]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"2\\\\d{5,7}|(?:43[1-6]|70[1-9])\\\\d{4,5}|(?:[36]\\\\d|4[124-7]|[57][1-9]|8[1-6]|9[1-7])\\\\d{5,6}\",[6,7,8]],[\"(?:43[07-9]|99[69]\\\\d)\\\\d{5}|(?:8[7-9]|98)\\\\d{7}\",[8,9]],[\"(?:00800\\\\d\\\\d|800)\\\\d{5}\",[8,12]],[\"90\\\\d{6}\",[8]],0,0,0,0,0,[\"700\\\\d{5}\",[8]]]],\"BH\":[\"973\",\"00\",\"[136-9]\\\\d{7}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[13679]|8[02-4679]\"]]],0,0,0,0,0,0,[[\"(?:1(?:3[1356]|6[0156]|7\\\\d)\\\\d|6(?:1[16]\\\\d|500|6(?:0\\\\d|3[12]|44|55|7[7-9]|88)|9[69][69])|7(?:[07]\\\\d\\\\d|1(?:11|78)))\\\\d{4}\"],[\"(?:3(?:[0-79]\\\\d|8[0-57-9])\\\\d|6(?:3(?:00|33|6[16])|441|6(?:3[03-9]|[69]\\\\d|7[0-689])))\\\\d{4}\"],[\"8[02369]\\\\d{6}\"],[\"(?:87|9[0-8])\\\\d{6}\"],0,0,0,0,0,[\"84\\\\d{6}\"]]],\"BI\":[\"257\",\"00\",\"(?:[267]\\\\d|31)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2367]\"]]],0,0,0,0,0,0,[[\"(?:22|31)\\\\d{6}\"],[\"(?:29|6[124-9]|7[125-9])\\\\d{6}\"]]],\"BJ\":[\"229\",\"00\",\"(?:01\\\\d|8)\\\\d{7}\",[8,10],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"0\"]]],0,0,0,0,0,0,[[\"012\\\\d{7}\",[10]],[\"01(?:2[5-9]|[4-69]\\\\d)\\\\d{6}\",[10]],0,0,0,0,[\"81\\\\d{6}\",[8]],0,[\"857[58]\\\\d{4}\",[8]]]],\"BL\":[\"590\",\"00\",\"(?:590\\\\d|7090)\\\\d{5}|(?:69|80|9\\\\d)\\\\d{7}\",[9],0,\"0\",0,0,0,0,0,[[\"590(?:2[7-9]|3[3-7]|5[12]|87)\\\\d{4}\"],[\"(?:69(?:0\\\\d\\\\d|1(?:2[2-9]|3[0-5])|4(?:0[89]|1[2-6]|9\\\\d)|6(?:1[016-9]|5[0-4]|[67]\\\\d))|7090[0-4])\\\\d{4}\"],[\"80[0-5]\\\\d{6}\"],0,0,0,0,0,[\"9(?:(?:39[5-7]|76[018])\\\\d|475[0-6])\\\\d{4}\"]]],\"BM\":[\"1\",\"011\",\"(?:441|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-9]\\\\d{6})$|1\",\"441$1\",0,\"441\",[[\"441(?:[46]\\\\d\\\\d|5(?:4\\\\d|60|89))\\\\d{4}\"],[\"441(?:[2378]\\\\d|5[0-39]|9[02])\\\\d{5}\"],[\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\"],[\"900[2-9]\\\\d{6}\"],[\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-9]|3[23]|44|66|77|88)[2-9]\\\\d{6}\"]]],\"BN\":[\"673\",\"00\",\"[2-578]\\\\d{6}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-578]\"]]],0,0,0,0,0,0,[[\"22[0-7]\\\\d{4}|(?:2[013-9]|[34]\\\\d|5[0-25-9])\\\\d{5}\"],[\"(?:22[89]|[78]\\\\d\\\\d)\\\\d{4}\"],0,0,0,0,0,0,[\"5[34]\\\\d{5}\"]]],\"BO\":[\"591\",\"00(?:1\\\\d)?\",\"8001\\\\d{5}|(?:[2-467]\\\\d|50)\\\\d{6}\",[8,9],[[\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"[235]|4[46]\"]],[\"(\\\\d{8})\",\"$1\",[\"[67]\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]]],\"0\",0,\"0(1\\\\d)?\",0,0,0,[[\"(?:2(?:2\\\\d\\\\d|5(?:11|[258]\\\\d|9[67])|6(?:12|2\\\\d|9[34])|8(?:2[34]|39|62))|3(?:3\\\\d\\\\d|4(?:6\\\\d|8[24])|8(?:25|42|5[257]|86|9[25])|9(?:[27]\\\\d|3[2-4]|4[248]|5[24]|6[2-6]))|4(?:4\\\\d\\\\d|6(?:11|[24689]\\\\d|72)))\\\\d{4}\",[8]],[\"[67]\\\\d{7}\",[8]],[\"8001[07]\\\\d{4}\",[9]],0,0,0,0,0,[\"50\\\\d{6}\",[8]]]],\"BQ\":[\"599\",\"00\",\"(?:[34]1|7\\\\d)\\\\d{5}\",[7],0,0,0,0,0,0,\"[347]\",[[\"(?:318[023]|41(?:6[023]|70)|7(?:1[578]|2[05]|50)\\\\d)\\\\d{3}\"],[\"(?:31(?:8[14-8]|9[14578])|416[14-9]|7(?:0[01]|7[07]|8\\\\d|9[056])\\\\d)\\\\d{3}\"]]],\"BR\":[\"55\",\"00(?:1[245]|2[1-35]|31|4[13]|[56]5|99)\",\"[1-467]\\\\d{9,10}|55[0-46-9]\\\\d{8}|[34]\\\\d{7}|55\\\\d{7,8}|(?:5[0-46-9]|[89]\\\\d)\\\\d{7,9}\",[8,9,10,11],[[\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"300|4(?:0[02]|37|86)\",\"300|4(?:0(?:0|20)|370|864)\"]],[\"(\\\\d{3})(\\\\d{2,3})(\\\\d{4})\",\"$1 $2 $3\",[\"(?:[358]|90)0\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2-$3\",[\"(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])[2-57]\"],\"($1)\"],[\"(\\\\d{2})(\\\\d{5})(\\\\d{4})\",\"$1 $2-$3\",[\"[16][1-9]|[2-57-9]\"],\"($1)\"]],\"0\",0,\"(?:0|90)(?:(1[245]|2[1-35]|31|4[13]|[56]5|99)(\\\\d{10,11}))?\",\"$2\",0,0,[[\"(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])[2-5]\\\\d{7}\",[10]],[\"(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])(?:7|9\\\\d)\\\\d{7}\",[10,11]],[\"800\\\\d{6,7}\",[9,10]],[\"[59]00\\\\d{6,7}\",[9,10]],0,0,0,0,0,[\"(?:30[03]\\\\d{3}|4(?:0(?:0\\\\d|20)|370|864))\\\\d{4}|300\\\\d{5}\",[8,10]]]],\"BS\":[\"1\",\"011\",\"(?:242|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([3-8]\\\\d{6})$|1\",\"242$1\",0,\"242\",[[\"242(?:3(?:02|[236][1-9]|4[0-24-9]|5[0-68]|7[347]|8[0-4]|9[2-467])|461|502|6(?:0[1-5]|12|2[013]|[45]0|7[67]|8[78]|9[89])|7(?:02|88))\\\\d{4}\"],[\"242(?:3(?:5[79]|7[56]|95)|4(?:[23][1-9]|4[1-35-9]|5[1-8]|6[2-8]|7\\\\d|81)|5(?:2[45]|3[35]|44|5[1-46-9]|65|77)|6[34]6|7(?:27|38)|8(?:0[1-9]|1[02-9]|2\\\\d|3[0-4]|[89]9))\\\\d{4}\"],[\"242300\\\\d{4}|8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\"],[\"900[2-9]\\\\d{6}\"],[\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-9]|3[23]|44|66|77|88)[2-9]\\\\d{6}\"],0,[\"242225\\\\d{4}\"]]],\"BT\":[\"975\",\"00\",\"[178]\\\\d{7}|[2-8]\\\\d{6}\",[7,8],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-6]|7[246]|8[2-4]\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"1[67]|[78]\"]]],0,0,0,0,0,0,[[\"(?:2[3-6]|[34][5-7]|5[236]|6[2-46]|7[246]|8[2-4])\\\\d{5}\",[7]],[\"(?:1[67]|[78]7)\\\\d{6}\",[8]]]],\"BW\":[\"267\",\"00\",\"(?:0800|(?:[37]|800)\\\\d)\\\\d{6}|(?:[2-6]\\\\d|90)\\\\d{5}\",[7,8,10],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"90\"]],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[24-6]|3[15-9]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[37]\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"0\"]],[\"(\\\\d{3})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]]],0,0,0,0,0,0,[[\"(?:2(?:4[0-48]|6[0-24]|9[0578])|3(?:1[0-35-9]|55|[69]\\\\d|7[013]|81)|4(?:6[03]|7[1267]|9[0-5])|5(?:3[03489]|4[0489]|7[1-47]|88|9[0-49])|6(?:2[1-35]|5[149]|8[013467]))\\\\d{4}\",[7]],[\"(?:321|7[1-8]\\\\d)\\\\d{5}\",[8]],[\"(?:0800|800\\\\d)\\\\d{6}\",[10]],[\"90\\\\d{5}\",[7]],0,0,0,0,[\"79(?:1(?:[0-2]\\\\d|3[0-8])|2[0-7]\\\\d)\\\\d{3}\",[8]]]],\"BY\":[\"375\",\"810\",\"(?:[12]\\\\d|33|44|902)\\\\d{7}|8(?:0[0-79]\\\\d{5,7}|[1-7]\\\\d{9})|8(?:1[0-489]|[5-79]\\\\d)\\\\d{7}|8[1-79]\\\\d{6,7}|8[0-79]\\\\d{5}|8\\\\d{5}\",[6,7,8,9,10,11],[[\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"800\"],\"8 $1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2,4})\",\"$1 $2 $3\",[\"800\"],\"8 $1\"],[\"(\\\\d{4})(\\\\d{2})(\\\\d{3})\",\"$1 $2-$3\",[\"1(?:5[169]|6[3-5]|7[179])|2(?:1[35]|2[34]|3[3-5])\",\"1(?:5[169]|6(?:3[1-3]|4|5[125])|7(?:1[3-9]|7[0-24-6]|9[2-7]))|2(?:1[35]|2[34]|3[3-5])\"],\"8 0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"1(?:[56]|7[467])|2[1-3]\"],\"8 0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"[1-4]\"],\"8 0$1\"],[\"(\\\\d{3})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"],\"8 $1\"]],\"8\",0,\"0|80?\",0,0,0,[[\"(?:1(?:5(?:1[1-5]|[24]\\\\d|6[2-4]|9[1-7])|6(?:[235]\\\\d|4[1-7])|7\\\\d\\\\d)|2(?:1(?:[246]\\\\d|3[0-35-9]|5[1-9])|2(?:[235]\\\\d|4[0-8])|3(?:[26]\\\\d|3[02-79]|4[024-7]|5[03-7])))\\\\d{5}\",[9]],[\"(?:2(?:5[5-79]|9[1-9])|(?:33|44)\\\\d)\\\\d{6}\",[9]],[\"800\\\\d{3,7}|8(?:0[13]|20\\\\d)\\\\d{7}\"],[\"(?:810|902)\\\\d{7}\",[10]],0,0,0,0,[\"249\\\\d{6}\",[9]]],\"8~10\"],\"BZ\":[\"501\",\"00\",\"(?:0800\\\\d|[2-8])\\\\d{6}\",[7,11],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[2-8]\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{4})(\\\\d{3})\",\"$1-$2-$3-$4\",[\"0\"]]],0,0,0,0,0,0,[[\"(?:2(?:[02]\\\\d|36|[68]0)|[3-58](?:[02]\\\\d|[68]0)|7(?:[02]\\\\d|32|[68]0))\\\\d{4}\",[7]],[\"6[0-35-7]\\\\d{5}\",[7]],[\"0800\\\\d{7}\",[11]]]],\"CA\":[\"1\",\"011\",\"[2-9]\\\\d{9}|3\\\\d{6}\",[7,10],0,\"1\",0,0,0,0,0,[[\"(?:2(?:04|[23]6|[48]9|5[07]|63)|3(?:06|43|54|6[578]|82)|4(?:03|1[68]|[26]8|3[178]|50|74)|5(?:06|1[49]|48|79|8[147])|6(?:04|[18]3|39|47|72)|7(?:0[59]|42|53|78|8[02])|8(?:[06]7|19|25|7[39])|9(?:0[25]|42))[2-9]\\\\d{6}\",[10]],[\"\",[10]],[\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",[10]],[\"900[2-9]\\\\d{6}\",[10]],[\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|(?:5(?:2[125-9]|3[23]|44|66|77|88)|6(?:22|33))[2-9]\\\\d{6}\",[10]],0,[\"310\\\\d{4}\",[7]],0,[\"600[2-9]\\\\d{6}\",[10]]]],\"CC\":[\"61\",\"001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011\",\"1(?:[0-79]\\\\d{8}(?:\\\\d{2})?|8[0-24-9]\\\\d{7})|[148]\\\\d{8}|1\\\\d{5,7}\",[6,7,8,9,10,12],0,\"0\",0,\"([59]\\\\d{7})$|0\",\"8$1\",0,0,[[\"8(?:51(?:0(?:02|31|60|89)|1(?:18|76)|223)|91(?:0(?:1[0-2]|29)|1(?:[28]2|50|79)|2(?:10|64)|3(?:[06]8|22)|4[29]8|62\\\\d|70[23]|959))\\\\d{3}\",[9]],[\"4(?:79[01]|83[0-36-9]|95[0-3])\\\\d{5}|4(?:[0-36]\\\\d|4[047-9]|[58][0-24-9]|7[02-8]|9[0-47-9])\\\\d{6}\",[9]],[\"180(?:0\\\\d{3}|2)\\\\d{3}\",[7,10]],[\"190[0-26]\\\\d{6}\",[10]],0,0,0,0,[\"14(?:5(?:1[0458]|[23][458])|71\\\\d)\\\\d{4}\",[9]],[\"13(?:00\\\\d{6}(?:\\\\d{2})?|45[0-4]\\\\d{3})|13\\\\d{4}\",[6,8,10,12]]],\"0011\"],\"CD\":[\"243\",\"00\",\"(?:(?:[189]|5\\\\d)\\\\d|2)\\\\d{7}|[1-68]\\\\d{6}\",[7,8,9,10],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"88\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"[1-6]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"5\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:(?:12|573)\\\\d\\\\d|276)\\\\d{5}|[1-6]\\\\d{6}\"],[\"88\\\\d{5}|(?:8[0-69]|9[016-9])\\\\d{7}\",[7,9]]]],\"CF\":[\"236\",\"00\",\"8776\\\\d{4}|(?:[27]\\\\d|61)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[26-8]\"]]],0,0,0,0,0,0,[[\"(?:2[12]|61)\\\\d{6}\"],[\"7[02-7]\\\\d{6}\"],0,[\"8776\\\\d{4}\"]]],\"CG\":[\"242\",\"00\",\"222\\\\d{6}|(?:0\\\\d|80)\\\\d{7}\",[9],[[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[02]\"]]],0,0,0,0,0,0,[[\"222[1-589]\\\\d{5}\"],[\"026(?:1[0-5]|6[6-9])\\\\d{4}|0(?:[14-6]\\\\d\\\\d|2(?:40|5[5-8]|6[07-9]))\\\\d{5}\"],0,[\"80[0-2]\\\\d{6}\"]]],\"CH\":[\"41\",\"00\",\"8\\\\d{11}|[2-9]\\\\d{8}\",[9,12],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8[047]|90\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-79]|81\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"8\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:2[12467]|3[1-4]|4[134]|5[256]|6[12]|[7-9]1)\\\\d{7}\",[9]],[\"(?:6[89]|7[235-9])\\\\d{7}\",[9]],[\"800\\\\d{6}\",[9]],[\"90[016]\\\\d{6}\",[9]],[\"878\\\\d{6}\",[9]],[\"860\\\\d{9}\",[12]],[\"5[18]\\\\d{7}\",[9]],[\"74[0248]\\\\d{6}\",[9]],0,[\"84[0248]\\\\d{6}\",[9]]]],\"CI\":[\"225\",\"00\",\"[02]\\\\d{9}\",[10],[[\"(\\\\d{2})(\\\\d{2})(\\\\d)(\\\\d{5})\",\"$1 $2 $3 $4\",[\"2\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"0\"]]],0,0,0,0,0,0,[[\"2(?:[15]\\\\d{3}|7(?:2(?:0[23]|1[2357]|2[245]|3[45]|4[3-5])|3(?:06|1[69]|[2-6]7)))\\\\d{5}\"],[\"0[157]\\\\d{8}\"]]],\"CK\":[\"682\",\"00\",\"[2-578]\\\\d{4}\",[5],[[\"(\\\\d{2})(\\\\d{3})\",\"$1 $2\",[\"[2-578]\"]]],0,0,0,0,0,0,[[\"(?:2\\\\d|3[13-7]|4[1-5])\\\\d{3}\"],[\"[578]\\\\d{4}\"]]],\"CL\":[\"56\",\"(?:0|1(?:1[0-69]|2[02-5]|5[13-58]|69|7[0167]|8[018]))0\",\"12300\\\\d{6}|6\\\\d{9,10}|[2-9]\\\\d{8}\",[9,10,11],[[\"(\\\\d{5})(\\\\d{4})\",\"$1 $2\",[\"219\",\"2196\"],\"($1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"60|809\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"44\"]],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2[1-36]\"],\"($1)\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"9(?:10|[2-9])\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"3[2-5]|[47]|5[1-3578]|6[13-57]|8(?:0[1-8]|[1-9])\"],\"($1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"60|8\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"60\"]]],0,0,0,0,0,0,[[\"2(?:1982[0-6]|3314[05-9])\\\\d{3}|(?:2(?:1(?:160|962)|3(?:(?:2\\\\d|50)\\\\d|3(?:[034679]\\\\d|1[0-35-9]|2[1-9]|5[0-24-9]|8[0-389])|600)|646[59])|(?:600|80[1-9])\\\\d\\\\d|9(?:(?:10[0-2]|7[1-9]\\\\d)\\\\d|3(?:[0-57-9]\\\\d\\\\d|6(?:0[02-9]|[1-9]\\\\d))|6(?:[0-8]\\\\d\\\\d|9(?:[02-79]\\\\d|1[05-9]))|9(?:[03-9]\\\\d\\\\d|1(?:[0235-9]\\\\d|4[0-24-9])|2(?:[0-79]\\\\d|8[0-46-9]))))\\\\d{4}|(?:22|3[2-5]|[47][1-35]|5[1-3578]|6[13-57]|8[1-9]|9[2458])\\\\d{7}\",[9]],[\"2(?:1982[0-6]|3314[05-9])\\\\d{3}|(?:2(?:1(?:160|962)|3(?:(?:2\\\\d|50)\\\\d|3(?:[034679]\\\\d|1[0-35-9]|2[1-9]|5[0-24-9]|8[0-389])|600)|646[59])|80[1-8]\\\\d\\\\d|9(?:(?:10[0-2]|7[1-9]\\\\d)\\\\d|3(?:[0-57-9]\\\\d\\\\d|6(?:0[02-9]|[1-9]\\\\d))|6(?:[0-8]\\\\d\\\\d|9(?:[02-79]\\\\d|1[05-9]))|9(?:[03-9]\\\\d\\\\d|1(?:[0235-9]\\\\d|4[0-24-9])|2(?:[0-79]\\\\d|8[0-46-9]))))\\\\d{4}|(?:22|3[2-5]|[47][1-35]|5[1-3578]|6[13-57]|8[1-9]|9[2458])\\\\d{7}\",[9]],[\"(?:123|8)00\\\\d{6}\",[9,11]],0,0,0,0,0,[\"44\\\\d{7}\",[9]],[\"600\\\\d{7,8}\",[10,11]]]],\"CM\":[\"237\",\"00\",\"[26]\\\\d{8}|88\\\\d{6,7}\",[8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"88\"]],[\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"[26]|88\"]]],0,0,0,0,0,0,[[\"2(?:22|33)\\\\d{6}\",[9]],[\"(?:24[23]|6(?:[25-9]\\\\d|40))\\\\d{6}\",[9]],[\"88\\\\d{6,7}\"]]],\"CN\":[\"86\",\"00|1(?:[12]\\\\d|79)\\\\d\\\\d00\",\"(?:(?:1[03-689]|2\\\\d)\\\\d\\\\d|6)\\\\d{8}|1\\\\d{10}|[126]\\\\d{6}(?:\\\\d(?:\\\\d{2})?)?|86\\\\d{5,6}|(?:[3-579]\\\\d|8[0-57-9])\\\\d{5,9}\",[7,8,9,10,11,12],[[\"(\\\\d{2})(\\\\d{5,6})\",\"$1 $2\",[\"(?:10|2[0-57-9])[19]|3(?:[157]|35|49|9[1-68])|4(?:1[124-9]|2[179]|6[47-9]|7|8[23])|5(?:[1357]|2[37]|4[36]|6[1-46]|80)|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:07|1[236-8]|2[5-7]|[37]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3|4[13]|5[1-5]|7[0-79]|9[0-35-9])|(?:4[35]|59|85)[1-9]\",\"(?:10|2[0-57-9])(?:1[02]|9[56])|8078|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:1[124-9]|2[179]|[35][1-9]|6[47-9]|7\\\\d|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3\\\\d|4[13]|5[1-5]|7[0-79]|9[0-35-9]))1\",\"10(?:1(?:0|23)|9[56])|2[0-57-9](?:1(?:00|23)|9[56])|80781|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:1[124-9]|2[179]|[35][1-9]|6[47-9]|7\\\\d|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3\\\\d|4[13]|5[1-5]|7[0-79]|9[0-35-9]))12\",\"10(?:1(?:0|23)|9[56])|2[0-57-9](?:1(?:00|23)|9[56])|807812|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:1[124-9]|2[179]|[35][1-9]|6[47-9]|7\\\\d|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3\\\\d|4[13]|5[1-5]|7[0-79]|9[0-35-9]))123\",\"10(?:1(?:0|23)|9[56])|2[0-57-9](?:1(?:00|23)|9[56])|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:1[124-9]|2[179]|[35][1-9]|6[47-9]|7\\\\d|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:078|1[236-8]|2[5-7]|[37]\\\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3\\\\d|4[13]|5[1-5]|7[0-79]|9[0-35-9]))123\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5,6})\",\"$1 $2\",[\"3(?:[157]|35|49|9[1-68])|4(?:[17]|2[179]|6[47-9]|8[23])|5(?:[1357]|2[37]|4[36]|6[1-46]|80)|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]|4[13]|5[1-5])|(?:4[35]|59|85)[1-9]\",\"(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))[19]\",\"85[23](?:10|95)|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))(?:10|9[56])\",\"85[23](?:100|95)|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))(?:100|9[56])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"(?:4|80)0\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"10|2(?:[02-57-9]|1[1-9])\",\"10|2(?:[02-57-9]|1[1-9])\",\"10[0-79]|2(?:[02-57-9]|1[1-79])|(?:10|21)8(?:0[1-9]|[1-9])\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"3(?:[3-59]|7[02-68])|4(?:[26-8]|3[3-9]|5[2-9])|5(?:3[03-9]|[468]|7[028]|9[2-46-9])|6|7(?:[0-247]|3[04-9]|5[0-4689]|6[2368])|8(?:[1-358]|9[1-7])|9(?:[013479]|5[1-5])|(?:[34]1|55|79|87)[02-9]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{7,8})\",\"$1 $2\",[\"9\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"80\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[3-578]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"1[3-9]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"[12]\"],\"0$1\",1]],\"0\",0,\"(1(?:[12]\\\\d|79)\\\\d\\\\d)|0\",0,0,0,[[\"(?:10(?:[02-79]\\\\d\\\\d|[18](?:0[1-9]|[1-9]\\\\d))|2(?:[02-57-9]\\\\d{3}|1(?:[18](?:0[1-9]|[1-9]\\\\d)|[2-79]\\\\d\\\\d))|(?:41[03]|8078|9(?:78|94))\\\\d\\\\d)\\\\d{5}|(?:10|2[0-57-9])(?:1(?:00|23)\\\\d\\\\d|95\\\\d{3,4})|(?:41[03]|9(?:78|94))(?:100\\\\d\\\\d|95\\\\d{3,4})|8078123|(?:43[35]|754|851)\\\\d{7,8}|(?:43[35]|754|851)(?:1(?:00\\\\d|23)\\\\d|95\\\\d{3,4})|(?:3(?:11|7[179])|4(?:[15]1|3[12])|5(?:1\\\\d|2[37]|3[12]|51|7[13-79]|9[15])|7(?:[39]1|5[57]|6[09])|8(?:71|98))(?:[02-8]\\\\d{7}|1(?:0(?:0\\\\d\\\\d(?:\\\\d{3})?|[1-9]\\\\d{5})|[13-9]\\\\d{6}|2(?:[0-24-9]\\\\d{5}|3\\\\d(?:\\\\d{4})?))|9(?:[0-46-9]\\\\d{6}|5\\\\d{3}(?:\\\\d(?:\\\\d{2})?)?))|(?:3(?:1[02-9]|35|49|5\\\\d|7[02-68]|9[1-68])|4(?:1[24-9]|2[179]|3[46-9]|5[2-9]|6[47-9]|7\\\\d|8[23])|5(?:3[03-9]|4[36]|5[02-9]|6[1-46]|7[028]|80|9[2-46-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[17]\\\\d|2[248]|3[04-9]|4[3-6]|5[0-3689]|6[2368]|9[02-9])|8(?:1[236-8]|2[5-7]|3\\\\d|5[2-9]|7[02-9]|8[36-8]|9[1-7])|9(?:0[1-3689]|1[1-79]|3\\\\d|4[13]|5[1-5]|7[0-79]|9[0-35-9]))(?:[02-8]\\\\d{6}|1(?:0(?:0\\\\d\\\\d(?:\\\\d{2})?|[1-9]\\\\d{4})|[13-9]\\\\d{5}|2(?:[0-24-9]\\\\d{4}|3\\\\d(?:\\\\d{3})?))|9(?:[0-46-9]\\\\d{5}|5\\\\d{3,5}))\",[7,8,9,10,11]],[\"1740[0-5]\\\\d{6}|1(?:[38]\\\\d|4[57]|[59][0-35-9]|6[25-7]|7[0-35-8])\\\\d{8}\",[11]],[\"(?:(?:10|21)8|8)00\\\\d{7}\",[10,12]],[\"16[08]\\\\d{5}\",[8]],0,0,0,0,0,[\"10(?:10\\\\d{4}|96\\\\d{3,4})|400\\\\d{7}|950\\\\d{7,8}|(?:2[0-57-9]|3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))96\\\\d{3,4}\",[7,8,9,10,11]]],\"00\"],\"CO\":[\"57\",\"00(?:4(?:[14]4|56)|[579])\",\"(?:46|60\\\\d\\\\d)\\\\d{6}|(?:1\\\\d|[39])\\\\d{9}\",[8,10,11],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"46\"]],[\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"6|90\"],\"($1)\"],[\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"3[0-357]|9[14]\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{7})\",\"$1-$2-$3\",[\"1\"],\"0$1\",0,\"$1 $2 $3\"]],\"0\",0,\"0([3579]|4(?:[14]4|56))?\",0,0,0,[[\"601055(?:[0-4]\\\\d|50)\\\\d\\\\d|6010(?:[0-4]\\\\d|5[0-4])\\\\d{4}|(?:46|60(?:[18][1-9]|[24-7][2-9]))\\\\d{6}\",[8,10]],[\"333301[0-5]\\\\d{3}|3333(?:00|2[5-9]|[3-9]\\\\d)\\\\d{4}|(?:3(?:(?:0[0-5]|1\\\\d|5[01]|70)\\\\d|2(?:[0-3]\\\\d|4[1-9])|3(?:00|3[0-24-9]))|9(?:101|408))\\\\d{6}\",[10]],[\"1800\\\\d{7}\",[11]],[\"(?:19(?:0[01]|4[78])|901)\\\\d{7}\",[10,11]]]],\"CR\":[\"506\",\"00\",\"(?:8\\\\d|90)\\\\d{8}|(?:[24-8]\\\\d{3}|3005)\\\\d{4}\",[8,10],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2-7]|8[3-9]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[89]\"]]],0,0,\"(19(?:0[0-2468]|1[09]|20|66|77|99))\",0,0,0,[[\"210[7-9]\\\\d{4}|2(?:[024-7]\\\\d|1[1-9])\\\\d{5}\",[8]],[\"(?:3005\\\\d|6500[01])\\\\d{3}|(?:5[07]|6[0-4]|7[0-3]|8[3-9])\\\\d{6}\",[8]],[\"800\\\\d{7}\",[10]],[\"90[059]\\\\d{7}\",[10]],0,0,0,0,[\"(?:210[0-6]|4\\\\d{3}|5100)\\\\d{4}\",[8]]]],\"CU\":[\"53\",\"119\",\"(?:[2-7]|8\\\\d\\\\d)\\\\d{7}|[2-47]\\\\d{6}|[34]\\\\d{5}\",[6,7,8,10],[[\"(\\\\d{2})(\\\\d{4,6})\",\"$1 $2\",[\"2[1-4]|[34]\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{6,7})\",\"$1 $2\",[\"7\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"[56]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"8\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:3[23]|4[89])\\\\d{4,6}|(?:31|4[36]|8(?:0[25]|78)\\\\d)\\\\d{6}|(?:2[1-4]|4[1257]|7\\\\d)\\\\d{5,6}\"],[\"(?:5\\\\d|6[2-4])\\\\d{6}\",[8]],[\"800\\\\d{7}\",[10]],0,0,0,0,0,0,[\"807\\\\d{7}\",[10]]]],\"CV\":[\"238\",\"0\",\"(?:[2-59]\\\\d\\\\d|800)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[2-589]\"]]],0,0,0,0,0,0,[[\"2(?:2[1-7]|3[0-8]|4[12]|5[1256]|6\\\\d|7[1-3]|8[1-5])\\\\d{4}\"],[\"(?:36|5[1-389]|9\\\\d)\\\\d{5}\"],[\"800\\\\d{4}\"],0,0,0,0,0,[\"(?:3[3-5]|4[356])\\\\d{5}\"]]],\"CW\":[\"599\",\"00\",\"(?:[34]1|60|(?:7|9\\\\d)\\\\d)\\\\d{5}\",[7,8],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[3467]\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"9[4-8]\"]]],0,0,0,0,0,\"[69]\",[[\"9(?:4(?:3[0-5]|4[14]|6\\\\d)|50\\\\d|7(?:2[014]|3[02-9]|4[4-9]|6[357]|77|8[7-9])|8(?:3[39]|[46]\\\\d|7[01]|8[57-9]))\\\\d{4}\"],[\"953[01]\\\\d{4}|9(?:5[12467]|6[5-9])\\\\d{5}\"],0,0,0,0,0,[\"955\\\\d{5}\",[8]],0,[\"60[0-2]\\\\d{4}\",[7]]]],\"CX\":[\"61\",\"001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011\",\"1(?:[0-79]\\\\d{8}(?:\\\\d{2})?|8[0-24-9]\\\\d{7})|[148]\\\\d{8}|1\\\\d{5,7}\",[6,7,8,9,10,12],0,\"0\",0,\"([59]\\\\d{7})$|0\",\"8$1\",0,0,[[\"8(?:51(?:0(?:01|30|59|88)|1(?:17|46|75)|2(?:22|35))|91(?:00[6-9]|1(?:[28]1|49|78)|2(?:09|63)|3(?:12|26|75)|4(?:56|97)|64\\\\d|7(?:0[01]|1[0-2])|958))\\\\d{3}\",[9]],[\"4(?:79[01]|83[0-36-9]|95[0-3])\\\\d{5}|4(?:[0-36]\\\\d|4[047-9]|[58][0-24-9]|7[02-8]|9[0-47-9])\\\\d{6}\",[9]],[\"180(?:0\\\\d{3}|2)\\\\d{3}\",[7,10]],[\"190[0-26]\\\\d{6}\",[10]],0,0,0,0,[\"14(?:5(?:1[0458]|[23][458])|71\\\\d)\\\\d{4}\",[9]],[\"13(?:00\\\\d{6}(?:\\\\d{2})?|45[0-4]\\\\d{3})|13\\\\d{4}\",[6,8,10,12]]],\"0011\"],\"CY\":[\"357\",\"00\",\"(?:[279]\\\\d|[58]0)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[257-9]\"]]],0,0,0,0,0,0,[[\"2[2-6]\\\\d{6}\"],[\"9(?:10|[4-79]\\\\d)\\\\d{5}\"],[\"800\\\\d{5}\"],[\"90[09]\\\\d{5}\"],[\"700\\\\d{5}\"],0,[\"(?:50|77)\\\\d{6}\"],0,0,[\"80[1-9]\\\\d{5}\"]]],\"CZ\":[\"420\",\"00\",\"(?:[2-578]\\\\d|60)\\\\d{7}|9\\\\d{8,11}\",[9,10,11,12],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-8]|9[015-7]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"96\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"9\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"9\"]]],0,0,0,0,0,0,[[\"(?:2\\\\d|3[1257-9]|4[16-9]|5[13-9])\\\\d{7}\",[9]],[\"7(?:060\\\\d|19(?:[0-5]\\\\d|6[0-6]))\\\\d{4}|(?:60[1-8]|7(?:0[2-5]|[2379]\\\\d))\\\\d{6}\",[9]],[\"800\\\\d{6}\",[9]],[\"9(?:0[05689]|76)\\\\d{6}\",[9]],[\"70[01]\\\\d{6}\",[9]],[\"9(?:3\\\\d{9}|6\\\\d{7,10})\"],[\"9(?:5\\\\d|7[2-4])\\\\d{6}\",[9]],0,[\"9[17]0\\\\d{6}\",[9]],[\"8[134]\\\\d{7}\",[9]]]],\"DE\":[\"49\",\"00\",\"[2579]\\\\d{5,14}|49(?:[34]0|69|8\\\\d)\\\\d\\\\d?|49(?:37|49|60|7[089]|9\\\\d)\\\\d{1,3}|49(?:2[024-9]|3[2-689]|7[1-7])\\\\d{1,8}|(?:1|[368]\\\\d|4[0-8])\\\\d{3,13}|49(?:[015]\\\\d|2[13]|31|[46][1-8])\\\\d{1,9}\",[4,5,6,7,8,9,10,11,12,13,14,15],[[\"(\\\\d{2})(\\\\d{3,13})\",\"$1 $2\",[\"3[02]|40|[68]9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3,12})\",\"$1 $2\",[\"2(?:0[1-389]|1[124]|2[18]|3[14])|3(?:[35-9][15]|4[015])|906|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1\",\"2(?:0[1-389]|12[0-8])|3(?:[35-9][15]|4[015])|906|2(?:[13][14]|2[18])|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{2,11})\",\"$1 $2\",[\"[24-6]|3(?:[3569][02-46-9]|4[2-4679]|7[2-467]|8[2-46-8])|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]\",\"[24-6]|3(?:3(?:0[1-467]|2[127-9]|3[124578]|7[1257-9]|8[1256]|9[145])|4(?:2[135]|4[13578]|9[1346])|5(?:0[14]|2[1-3589]|6[1-4]|7[13468]|8[13568])|6(?:2[1-489]|3[124-6]|6[13]|7[12579]|8[1-356]|9[135])|7(?:2[1-7]|4[145]|6[1-5]|7[1-4])|8(?:21|3[1468]|6|7[1467]|8[136])|9(?:0[12479]|2[1358]|4[134679]|6[1-9]|7[136]|8[147]|9[1468]))|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]|3[68]4[1347]|3(?:47|60)[1356]|3(?:3[46]|46|5[49])[1246]|3[4579]3[1357]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"138\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{2,10})\",\"$1 $2\",[\"3\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5,11})\",\"$1 $2\",[\"181\"],\"0$1\"],[\"(\\\\d{3})(\\\\d)(\\\\d{4,10})\",\"$1 $2 $3\",[\"1(?:3|80)|9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{7,8})\",\"$1 $2\",[\"1[67]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{7,12})\",\"$1 $2\",[\"8\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{6})\",\"$1 $2\",[\"185\",\"1850\",\"18500\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{7})\",\"$1 $2\",[\"18[68]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{7})\",\"$1 $2\",[\"15[1279]\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{6})\",\"$1 $2\",[\"15[03568]\",\"15(?:[0568]|3[13])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{8})\",\"$1 $2\",[\"18\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{7,8})\",\"$1 $2 $3\",[\"1(?:6[023]|7)\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{2})(\\\\d{7})\",\"$1 $2 $3\",[\"15[279]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{8})\",\"$1 $2 $3\",[\"15\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"32\\\\d{9,11}|49[1-6]\\\\d{10}|322\\\\d{6}|49[0-7]\\\\d{3,9}|(?:[34]0|[68]9)\\\\d{3,13}|(?:2(?:0[1-689]|[1-3569]\\\\d|4[0-8]|7[1-7]|8[0-7])|3(?:[3569]\\\\d|4[0-79]|7[1-7]|8[1-8])|4(?:1[02-9]|[2-48]\\\\d|5[0-6]|6[0-8]|7[0-79])|5(?:0[2-8]|[124-6]\\\\d|[38][0-8]|[79][0-7])|6(?:0[02-9]|[1-358]\\\\d|[47][0-8]|6[1-9])|7(?:0[2-8]|1[1-9]|[27][0-7]|3\\\\d|[4-6][0-8]|8[0-5]|9[013-7])|8(?:0[2-9]|1[0-79]|2\\\\d|3[0-46-9]|4[0-6]|5[013-9]|6[1-8]|7[0-8]|8[0-24-6])|9(?:0[6-9]|[1-4]\\\\d|[589][0-7]|6[0-8]|7[0-467]))\\\\d{3,12}\",[5,6,7,8,9,10,11,12,13,14,15]],[\"1(?:(?:5(?:[0-25-9]\\\\d\\\\d|3(?:10|33))|7[26-9]\\\\d\\\\d)\\\\d{6}|6[023]\\\\d{7,8})|17\\\\d{8}\",[10,11]],[\"800\\\\d{7,12}\",[10,11,12,13,14,15]],[\"(?:137[7-9]|900(?:[135]|9\\\\d))\\\\d{6}\",[10,11]],[\"700\\\\d{8}\",[11]],[\"1(?:6(?:013|255|399)|7(?:(?:[015]1|[69]3)3|[2-4]55|[78]99))\\\\d{7,8}|15(?:(?:[03-68]00|113)\\\\d|2\\\\d55|7\\\\d99|9\\\\d33)\\\\d{7}\",[12,13]],[\"18(?:1\\\\d{5,11}|[2-9]\\\\d{8})\",[8,9,10,11,12,13,14]],[\"16(?:4\\\\d{1,10}|[89]\\\\d{1,11})\",[4,5,6,7,8,9,10,11,12,13,14]],0,[\"180\\\\d{5,11}|13(?:7[1-6]\\\\d\\\\d|8)\\\\d{4}\",[7,8,9,10,11,12,13,14]]]],\"DJ\":[\"253\",\"00\",\"(?:2\\\\d|77)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[27]\"]]],0,0,0,0,0,0,[[\"2(?:1[2-5]|7[45])\\\\d{5}\"],[\"77\\\\d{6}\"]]],\"DK\":[\"45\",\"00\",\"[2-9]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-9]\"]]],0,0,0,0,0,0,[[\"(?:2(?:[0-59][1-9]|[6-8]\\\\d)|3(?:[0-3][1-9]|4[13]|5[1-58]|6[1347-9]|7\\\\d|8[1-8]|9[1-79])|4(?:[0-25][1-9]|[34][2-9]|6[13-579]|7[13579]|8[1-47]|9[127])|5(?:[0-36][1-9]|4[146-9]|5[3-57-9]|7[568]|8[1-358]|9[1-69])|6(?:[0135][1-9]|2[1-68]|4[2-8]|6[1689]|[78]\\\\d|9[15689])|7(?:[0-69][1-9]|7[3-9]|8[147])|8(?:[16-9][1-9]|2[1-58])|9(?:[1-47-9][1-9]|6\\\\d))\\\\d{5}\"],[\"(?:2[6-8]|37|6[78]|96)\\\\d{6}|(?:2[0-59]|3[0-689]|[457]\\\\d|6[0-69]|8[126-9]|9[1-47-9])[1-9]\\\\d{5}\"],[\"80\\\\d{6}\"],[\"90\\\\d{6}\"]]],\"DM\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|767|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-7]\\\\d{6})$|1\",\"767$1\",0,\"767\",[[\"767(?:2(?:55|66)|4(?:2[01]|4[0-25-9])|50[0-4])\\\\d{4}\"],[\"767(?:2(?:[2-4689]5|7[5-7])|31[5-7]|61[1-8]|70[1-6])\\\\d{4}\"],[\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\"],[\"900[2-9]\\\\d{6}\"],[\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-9]|3[23]|44|66|77|88)[2-9]\\\\d{6}\"]]],\"DO\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,0,0,0,\"8001|8[024]9\",[[\"8(?:[04]9[2-9]\\\\d\\\\d|29(?:2(?:[0-59]\\\\d|6[04-9]|7[0-27]|8[0237-9])|3(?:[0-35-9]\\\\d|4[7-9])|[45]\\\\d\\\\d|6(?:[0-27-9]\\\\d|[3-5][1-9]|6[0135-8])|7(?:0[013-9]|[1-37]\\\\d|4[1-35689]|5[1-4689]|6[1-57-9]|8[1-79]|9[1-8])|8(?:0[146-9]|1[0-48]|[248]\\\\d|3[1-79]|5[01589]|6[013-68]|7[124-8]|9[0-8])|9(?:[0-24]\\\\d|3[02-46-9]|5[0-79]|60|7[0169]|8[57-9]|9[02-9])))\\\\d{4}\"],[\"8[024]9[2-9]\\\\d{6}\"],[\"800(?:14|[2-9]\\\\d)\\\\d{5}|8[024]9[01]\\\\d{6}|8(?:33|44|55|66|77|88)[2-9]\\\\d{6}\"],[\"900[2-9]\\\\d{6}\"],[\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-9]|3[23]|44|66|77|88)[2-9]\\\\d{6}\"]]],\"DZ\":[\"213\",\"00\",\"(?:[1-4]|[5-79]\\\\d|80)\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[1-4]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-8]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"9619\\\\d{5}|(?:1\\\\d|2[013-79]|3[0-8]|4[013-689])\\\\d{6}\"],[\"(?:5(?:4[0-29]|5\\\\d|6[0-3])|6(?:[569]\\\\d|7[0-6])|7[7-9]\\\\d)\\\\d{6}\",[9]],[\"800\\\\d{6}\",[9]],[\"80[3-689]1\\\\d{5}\",[9]],0,0,0,0,[\"98[23]\\\\d{6}\",[9]],[\"80[12]1\\\\d{5}\",[9]]]],\"EC\":[\"593\",\"00\",\"1\\\\d{9,10}|(?:[2-7]|9\\\\d)\\\\d{7}\",[8,9,10,11],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2-$3\",[\"[2-7]\"],\"(0$1)\",0,\"$1-$2-$3\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"1\"]]],\"0\",0,0,0,0,0,[[\"[2-7][2-7]\\\\d{6}\",[8]],[\"964[0-2]\\\\d{5}|9(?:39|[57][89]|6[0-36-9]|[89]\\\\d)\\\\d{6}\",[9]],[\"1800\\\\d{7}|1[78]00\\\\d{6}\",[10,11]],0,0,0,0,0,[\"[2-7]890\\\\d{4}\",[8]]]],\"EE\":[\"372\",\"00\",\"8\\\\d{9}|[4578]\\\\d{7}|(?:[3-8]\\\\d|90)\\\\d{5}\",[7,8,10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[369]|4[3-8]|5(?:[0-2]|5[0-478]|6[45])|7[1-9]|88\",\"[369]|4[3-8]|5(?:[02]|1(?:[0-8]|95)|5[0-478]|6(?:4[0-4]|5[1-589]))|7[1-9]|88\"]],[\"(\\\\d{4})(\\\\d{3,4})\",\"$1 $2\",[\"[45]|8(?:00|[1-49])\",\"[45]|8(?:00[1-9]|[1-49])\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]]],0,0,0,0,0,0,[[\"(?:3[23589]|4[3-8]|6\\\\d|7[1-9]|88)\\\\d{5}\",[7]],[\"(?:5\\\\d{5}|8(?:1(?:0(?:0(?:00|[178]\\\\d)|[3-9]\\\\d\\\\d)|(?:1(?:0[2-6]|1\\\\d)|[2-79]\\\\d\\\\d)\\\\d)|2(?:0(?:0(?:00|4\\\\d)|(?:19|[2-7]\\\\d)\\\\d)|(?:(?:[124-69]\\\\d|3[5-9])\\\\d|7(?:[0-79]\\\\d|8[013-9])|8(?:[2-6]\\\\d|7[01]))\\\\d)|[349]\\\\d{4}))\\\\d\\\\d|5(?:(?:[02]\\\\d|5[0-478])\\\\d|1(?:[0-8]\\\\d|95)|6(?:4[0-4]|5[1-589]))\\\\d{3}\",[7,8]],[\"800(?:(?:0\\\\d\\\\d|1)\\\\d|[2-9])\\\\d{3}\"],[\"(?:40\\\\d\\\\d|900)\\\\d{4}\",[7,8]],[\"70[0-2]\\\\d{5}\",[8]]]],\"EG\":[\"20\",\"00\",\"[189]\\\\d{8,9}|[24-6]\\\\d{8}|[135]\\\\d{7}\",[8,9,10],[[\"(\\\\d)(\\\\d{7,8})\",\"$1 $2\",[\"[23]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{6,7})\",\"$1 $2\",[\"1[35]|[4-6]|8[2468]|9[235-7]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{8})\",\"$1 $2\",[\"1\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"13[23]\\\\d{6}|(?:15|57)\\\\d{6,7}|(?:2\\\\d|3|4[05-8]|5[05]|6[24-689]|8[2468]|9[235-7])\\\\d{7}\",[8,9]],[\"1[0-25]\\\\d{8}\",[10]],[\"800\\\\d{7}\",[10]],[\"900\\\\d{7}\",[10]]]],\"EH\":[\"212\",\"00\",\"[5-8]\\\\d{8}\",[9],0,\"0\",0,0,0,0,0,[[\"528[89]\\\\d{5}\"],[\"(?:6(?:[0-79]\\\\d|8[0-247-9])|7(?:[016-8]\\\\d|2[0-8]|5[0-5]))\\\\d{6}\"],[\"80[0-7]\\\\d{6}\"],[\"89\\\\d{7}\"],0,0,0,0,[\"(?:592(?:4[0-2]|93)|80[89]\\\\d\\\\d)\\\\d{4}\"]]],\"ER\":[\"291\",\"00\",\"[178]\\\\d{6}\",[7],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[178]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:1(?:1[12568]|[24]0|55|6[146])|8\\\\d\\\\d)\\\\d{4}\"],[\"(?:17[1-3]|7\\\\d\\\\d)\\\\d{4}\"]]],\"ES\":[\"34\",\"00\",\"[5-9]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[89]00\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-9]\"]]],0,0,0,0,0,0,[[\"96906(?:0[0-8]|1[1-9]|[2-9]\\\\d)\\\\d\\\\d|9(?:69(?:0[0-57-9]|[1-9]\\\\d)|73(?:[0-8]\\\\d|9[1-9]))\\\\d{4}|(?:8(?:[1356]\\\\d|[28][0-8]|[47][1-9])|9(?:[135]\\\\d|[268][0-8]|4[1-9]|7[124-9]))\\\\d{6}\"],[\"96906(?:09|10)\\\\d\\\\d|(?:590(?:10[0-2]|600)|97390\\\\d)\\\\d{3}|(?:6\\\\d|7[1-48])\\\\d{7}\"],[\"[89]00\\\\d{6}\"],[\"80[367]\\\\d{6}\"],[\"70\\\\d{7}\"],0,[\"51\\\\d{7}\"],0,0,[\"90[12]\\\\d{6}\"]]],\"ET\":[\"251\",\"00\",\"(?:11|[2-579]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-579]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:11(?:[124]\\\\d\\\\d|3(?:[0-79]\\\\d|8[0-7])|5(?:[02-9]\\\\d|1[0-57-9])|6(?:[02-79]\\\\d|1[0-57-9]|8[0-8]))|2(?:2(?:11[1-9]|22[0-7]|33\\\\d|44[1467]|66[1-68])|5(?:11[124-6]|33[2-8]|44[1467]|55[14]|66[1-3679]|77[124-79]|880))|3(?:3(?:11[0-46-8]|(?:22|55)[0-6]|33[0134689]|44[04]|66[01467])|4(?:44[0-8]|55[0-69]|66[0-3]|77[1-5]))|4(?:6(?:119|22[0-24-7]|33[1-5]|44[13-69]|55[14-689]|660|88[1-4])|7(?:(?:11|22)[1-9]|33[13-7]|44[13-6]|55[1-689]))|5(?:7(?:227|55[05]|(?:66|77)[14-8])|8(?:11[149]|22[013-79]|33[0-68]|44[013-8]|550|66[1-5]|77\\\\d)))\\\\d{4}\"],[\"700[1-9]\\\\d{5}|(?:7(?:0[1-9]|1[0-8]|2[1-35-79]|3\\\\d|77|86|99)|9\\\\d\\\\d)\\\\d{6}\"]]],\"FI\":[\"358\",\"00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))\",\"[1-35689]\\\\d{4}|7\\\\d{10,11}|(?:[124-7]\\\\d|3[0-46-9])\\\\d{8}|[1-9]\\\\d{5,8}\",[5,6,7,8,9,10,11,12],[[\"(\\\\d{5})\",\"$1\",[\"20[2-59]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3,7})\",\"$1 $2\",[\"(?:[1-3]0|[68])0|70[07-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4,8})\",\"$1 $2\",[\"[14]|2[09]|50|7[135]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{6,10})\",\"$1 $2\",[\"7\"],\"0$1\"],[\"(\\\\d)(\\\\d{4,9})\",\"$1 $2\",[\"(?:19|[2568])[1-8]|3(?:0[1-9]|[1-9])|9\"],\"0$1\"]],\"0\",0,0,0,0,\"1[03-79]|[2-9]\",[[\"1[3-7][1-8]\\\\d{3,6}|(?:19[1-8]|[23568][1-8]\\\\d|9(?:00|[1-8]\\\\d))\\\\d{2,6}\",[5,6,7,8,9]],[\"4946\\\\d{2,6}|(?:4[0-8]|50)\\\\d{4,8}\",[6,7,8,9,10]],[\"800\\\\d{4,6}\",[7,8,9]],[\"[67]00\\\\d{5,6}\",[8,9]],0,0,[\"20\\\\d{4,8}|60[12]\\\\d{5,6}|7(?:099\\\\d{4,5}|5[03-9]\\\\d{3,7})|20[2-59]\\\\d\\\\d|(?:606|7(?:0[78]|1|3\\\\d))\\\\d{7}|(?:10|29|3[09]|70[1-5]\\\\d)\\\\d{4,8}\"]],\"00\"],\"FJ\":[\"679\",\"0(?:0|52)\",\"45\\\\d{5}|(?:0800\\\\d|[235-9])\\\\d{6}\",[7,11],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[235-9]|45\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"0\"]]],0,0,0,0,0,0,[[\"603\\\\d{4}|(?:3[0-5]|6[25-7]|8[58])\\\\d{5}\",[7]],[\"(?:[279]\\\\d|45|5[01568]|8[034679])\\\\d{5}\",[7]],[\"0800\\\\d{7}\",[11]]],\"00\"],\"FK\":[\"500\",\"00\",\"[2-7]\\\\d{4}\",[5],0,0,0,0,0,0,0,[[\"[2-47]\\\\d{4}\"],[\"[56]\\\\d{4}\"]]],\"FM\":[\"691\",\"00\",\"(?:[39]\\\\d\\\\d|820)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[389]\"]]],0,0,0,0,0,0,[[\"31(?:00[67]|208|309)\\\\d\\\\d|(?:3(?:[2357]0[1-9]|602|804|905)|(?:820|9[2-6]\\\\d)\\\\d)\\\\d{3}\"],[\"31(?:00[67]|208|309)\\\\d\\\\d|(?:3(?:[2357]0[1-9]|602|804|905)|(?:820|9[2-7]\\\\d)\\\\d)\\\\d{3}\"]]],\"FO\":[\"298\",\"00\",\"[2-9]\\\\d{5}\",[6],[[\"(\\\\d{6})\",\"$1\",[\"[2-9]\"]]],0,0,\"(10(?:01|[12]0|88))\",0,0,0,[[\"(?:20|[34]\\\\d|8[19])\\\\d{4}\"],[\"(?:[27][1-9]|5\\\\d|9[16])\\\\d{4}\"],[\"80[257-9]\\\\d{3}\"],[\"90(?:[13-5][15-7]|2[125-7]|9\\\\d)\\\\d\\\\d\"],0,0,0,0,[\"(?:6[0-36]|88)\\\\d{4}\"]]],\"FR\":[\"33\",\"00\",\"[1-9]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0 $1\"],[\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"[1-79]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:26[013-9]|59[1-35-9])\\\\d{6}|(?:[13]\\\\d|2[0-57-9]|4[1-9]|5[0-8])\\\\d{7}\"],[\"(?:6(?:[0-24-8]\\\\d|3[0-8]|9[589])|7[3-9]\\\\d)\\\\d{6}\"],[\"80[0-5]\\\\d{6}\"],[\"836(?:0[0-36-9]|[1-9]\\\\d)\\\\d{4}|8(?:1[2-9]|2[2-47-9]|3[0-57-9]|[569]\\\\d|8[0-35-9])\\\\d{6}\"],0,0,[\"80[6-9]\\\\d{6}\"],0,[\"9\\\\d{8}\"],[\"8(?:1[01]|2[0156]|4[024]|84)\\\\d{6}\"]]],\"GA\":[\"241\",\"00\",\"(?:[067]\\\\d|11)\\\\d{6}|[2-7]\\\\d{6}\",[7,8],[[\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-7]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"0\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"11|[67]\"],\"0$1\"]],0,0,\"0(11\\\\d{6}|60\\\\d{6}|61\\\\d{6}|6[256]\\\\d{6}|7[467]\\\\d{6})\",\"$1\",0,0,[[\"[01]1\\\\d{6}\",[8]],[\"(?:(?:0[2-7]|7[467])\\\\d|6(?:0[0-4]|10|[256]\\\\d))\\\\d{5}|[2-7]\\\\d{6}\"]]],\"GB\":[\"44\",\"00\",\"[1-357-9]\\\\d{9}|[18]\\\\d{8}|8\\\\d{6}\",[7,9,10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"800\",\"8001\",\"80011\",\"800111\",\"8001111\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"845\",\"8454\",\"84546\",\"845464\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"800\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{4,5})\",\"$1 $2\",[\"1(?:38|5[23]|69|76|94)\",\"1(?:(?:38|69)7|5(?:24|39)|768|946)\",\"1(?:3873|5(?:242|39[4-6])|(?:697|768)[347]|9467)\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5,6})\",\"$1 $2\",[\"1(?:[2-69][02-9]|[78])\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[25]|7(?:0|6[02-9])\",\"[25]|7(?:0|6(?:[03-9]|2[356]))\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"7\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1389]\"],\"0$1\"]],\"0\",0,\"0|180020\",0,0,0,[[\"(?:1(?:1(?:3(?:[0-58]\\\\d\\\\d|73[0-5])|4(?:(?:[0-5]\\\\d|70)\\\\d|69[7-9])|(?:(?:5[0-26-9]|[78][0-49])\\\\d|6(?:[0-4]\\\\d|5[01]))\\\\d)|(?:2(?:(?:0[024-9]|2[3-9]|3[3-79]|4[1-689]|[58][02-9]|6[0-47-9]|7[013-9]|9\\\\d)\\\\d|1(?:[0-7]\\\\d|8[0-3]))|(?:3(?:0\\\\d|1[0-8]|[25][02-9]|3[02-579]|[468][0-46-9]|7[1-35-79]|9[2-578])|4(?:0[03-9]|[137]\\\\d|[28][02-57-9]|4[02-69]|5[0-8]|[69][0-79])|5(?:0[1-35-9]|[16]\\\\d|2[024-9]|3[015689]|4[02-9]|5[03-9]|7[0-35-9]|8[0-468]|9[0-57-9])|6(?:0[034689]|1\\\\d|2[0-35689]|[38][013-9]|4[1-467]|5[0-69]|6[13-9]|7[0-8]|9[0-24578])|7(?:0[0246-9]|2\\\\d|3[0236-8]|4[03-9]|5[0-46-9]|6[013-9]|7[0-35-9]|8[024-9]|9[02-9])|8(?:0[35-9]|2[1-57-9]|3[02-578]|4[0-578]|5[124-9]|6[2-69]|7\\\\d|8[02-9]|9[02569])|9(?:0[02-589]|[18]\\\\d|2[02-689]|3[1-57-9]|4[2-9]|5[0-579]|6[2-47-9]|7[0-24578]|9[2-57]))\\\\d)\\\\d)|2(?:0[013478]|3[0189]|4[017]|8[0-46-9]|9[0-2])\\\\d{3})\\\\d{4}|1(?:2(?:0(?:46[1-4]|87[2-9])|545[1-79]|76(?:2\\\\d|3[1-8]|6[1-6])|9(?:7(?:2[0-4]|3[2-5])|8(?:2[2-8]|7[0-47-9]|8[3-5])))|3(?:6(?:38[2-5]|47[23])|8(?:47[04-9]|64[0157-9]))|4(?:044[1-7]|20(?:2[23]|8\\\\d)|6(?:0(?:30|5[2-57]|6[1-8]|7[2-8])|140)|8(?:052|87[1-3]))|5(?:2(?:4(?:3[2-79]|6\\\\d)|76\\\\d)|6(?:26[06-9]|686))|6(?:06(?:4\\\\d|7[4-79])|295[5-7]|35[34]\\\\d|47(?:24|61)|59(?:5[08]|6[67]|74)|9(?:55[0-4]|77[23]))|7(?:26(?:6[13-9]|7[0-7])|(?:442|688)\\\\d|50(?:2[0-3]|[3-68]2|76))|8(?:27[56]\\\\d|37(?:5[2-5]|8[239])|843[2-58])|9(?:0(?:0(?:6[1-8]|85)|52\\\\d)|3583|4(?:66[1-8]|9(?:2[01]|81))|63(?:23|3[1-4])|9561))\\\\d{3}\",[9,10]],[\"7(?:457[0-57-9]|700[01]|911[028])\\\\d{5}|7(?:[1-3]\\\\d\\\\d|4(?:[0-46-9]\\\\d|5[0-689])|5(?:0[0-8]|[13-9]\\\\d|2[0-35-9])|7(?:0[1-9]|[1-7]\\\\d|8[02-9]|9[0-689])|8(?:[014-9]\\\\d|[23][0-8])|9(?:[024-9]\\\\d|1[02-9]|3[0-689]))\\\\d{6}\",[10]],[\"80[08]\\\\d{7}|800\\\\d{6}|8001111\"],[\"(?:8(?:4[2-5]|7[0-3])|9(?:[01]\\\\d|8[2-49]))\\\\d{7}|845464\\\\d\",[7,10]],[\"70\\\\d{8}\",[10]],0,[\"(?:3[0347]|55)\\\\d{8}\",[10]],[\"76(?:464|652)\\\\d{5}|76(?:0[0-28]|2[356]|34|4[01347]|5[49]|6[0-369]|77|8[14]|9[139])\\\\d{6}\",[10]],[\"56\\\\d{8}\",[10]]],0,\" x\"],\"GD\":[\"1\",\"011\",\"(?:473|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-9]\\\\d{6})$|1\",\"473$1\",0,\"473\",[[\"473(?:2(?:3[0-2]|69)|3(?:2[89]|86)|4(?:[06]8|3[5-9]|4[0-4]|5[59]|73|90)|63[68]|7(?:58|84)|800|938)\\\\d{4}\"],[\"473(?:4(?:0[2-79]|1[04-9]|2[0-5]|49|5[6-8])|5(?:2[01]|3[3-8])|901)\\\\d{4}\"],[\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\"],[\"900[2-9]\\\\d{6}\"],[\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-9]|3[23]|44|66|77|88)[2-9]\\\\d{6}\"]]],\"GE\":[\"995\",\"00\",\"(?:[3-57]\\\\d\\\\d|800)\\\\d{6}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"70\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"32\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[57]\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[348]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:3(?:[256]\\\\d|4[124-9]|7[0-4])|4(?:1\\\\d|2[2-7]|3[1-79]|4[2-8]|7[239]|9[1-7]))\\\\d{6}\"],[\"5(?:(?:(?:0555|1(?:[17]77|555))[5-9]|757(?:7[7-9]|8[01]))\\\\d|22252[0-4])\\\\d\\\\d|5(?:0(?:0(?:1[09]|70)|505)|1(?:0[01]0|1(?:07|33|51))|2(?:0[02]0|2[25]2)|3(?:0[03]0|3[35]3)|(?:40[04]|900)0|5222)[0-4]\\\\d{3}|(?:5(?:0(?:0(?:0\\\\d|1[12]|22|3[0-6]|44|5[05]|77|88|9[09])|(?:[14]\\\\d|77)\\\\d|22[02])|1(?:1(?:[03][01]|[124]\\\\d|5[2-6]|7[0-6])|4\\\\d\\\\d)|[23]555|4(?:4\\\\d\\\\d|555)|5(?:[0157-9]\\\\d\\\\d|200|333|444)|6[89]\\\\d\\\\d|7(?:(?:[0147-9]\\\\d|22)\\\\d|5(?:00|[57]5))|8(?:0(?:[018]\\\\d|2[0-4])|5(?:55|8[89])|8(?:55|88))|9(?:090|[1-35-9]\\\\d\\\\d))|790\\\\d\\\\d)\\\\d{4}\"],[\"800\\\\d{6}\"],0,0,0,0,0,[\"70[67]\\\\d{6}\"]]],\"GF\":[\"594\",\"00\",\"(?:[56]94\\\\d|7093)\\\\d{5}|(?:80|9\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-7]|9[47]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[89]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"594(?:[02-49]\\\\d|1[0-5]|5[6-9]|6[0-3]|80)\\\\d{4}\"],[\"(?:694(?:[0-249]\\\\d|3[0-8])|7093[0-3])\\\\d{4}\"],[\"80[0-5]\\\\d{6}\"],0,0,0,0,0,[\"9(?:(?:396|76\\\\d)\\\\d|476[0-6])\\\\d{4}\"]]],\"GG\":[\"44\",\"00\",\"(?:1481|[357-9]\\\\d{3})\\\\d{6}|8\\\\d{6}(?:\\\\d{2})?\",[7,9,10],0,\"0\",0,\"([25-9]\\\\d{5})$|0|180020\",\"1481$1\",0,0,[[\"1481[25-9]\\\\d{5}\",[10]],[\"7(?:(?:781|839)\\\\d|911[17])\\\\d{5}\",[10]],[\"80[08]\\\\d{7}|800\\\\d{6}|8001111\"],[\"(?:8(?:4[2-5]|7[0-3])|9(?:[01]\\\\d|8[0-3]))\\\\d{7}|845464\\\\d\",[7,10]],[\"70\\\\d{8}\",[10]],0,[\"(?:3[0347]|55)\\\\d{8}\",[10]],[\"76(?:464|652)\\\\d{5}|76(?:0[0-28]|2[356]|34|4[01347]|5[49]|6[0-369]|77|8[14]|9[139])\\\\d{6}\",[10]],[\"56\\\\d{8}\",[10]]]],\"GH\":[\"233\",\"00\",\"(?:[235]\\\\d{3}|800)\\\\d{5}\",[8,9],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"8\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[235]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"3082[0-5]\\\\d{4}|3(?:0(?:[237]\\\\d|8[01])|[167](?:2[0-6]|7\\\\d|80)|2(?:2[0-5]|7\\\\d|80)|3(?:2[0-3]|7\\\\d|80)|4(?:2[013-9]|3[01]|7\\\\d|80)|5(?:2[0-7]|7\\\\d|80)|8(?:2[0-2]|7\\\\d|80)|9(?:[28]0|7\\\\d))\\\\d{5}\",[9]],[\"(?:2(?:[0346-9]\\\\d|5[67])|5(?:[03-7]\\\\d|9[1-9]))\\\\d{6}\",[9]],[\"800\\\\d{5}\",[8]]]],\"GI\":[\"350\",\"00\",\"(?:[25]\\\\d|60)\\\\d{6}\",[8],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"2\"]]],0,0,0,0,0,0,[[\"2190[0-2]\\\\d{3}|2(?:0(?:[02]\\\\d|3[01])|16[24-9]|2[2-5]\\\\d)\\\\d{4}\"],[\"5251[0-4]\\\\d{3}|(?:5(?:[146-8]\\\\d\\\\d|250)|60(?:1[01]|6\\\\d))\\\\d{4}\"]]],\"GL\":[\"299\",\"00\",\"(?:19|[2-689]\\\\d|70)\\\\d{4}\",[6],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"19|[2-9]\"]]],0,0,0,0,0,0,[[\"(?:19|3[1-7]|[68][1-9]|70|9\\\\d)\\\\d{4}\"],[\"[245]\\\\d{5}\"],[\"80\\\\d{4}\"],0,0,0,0,0,[\"3[89]\\\\d{4}\"]]],\"GM\":[\"220\",\"00\",\"[2-9]\\\\d{6}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-9]\"]]],0,0,0,0,0,0,[[\"(?:4(?:[23]\\\\d\\\\d|4(?:1[024679]|[6-9]\\\\d))|5(?:5(?:3\\\\d|4[0-7])|6[67]\\\\d|7(?:1[04]|2[035]|3[58]|48))|8[0-589]\\\\d\\\\d)\\\\d{3}\"],[\"556\\\\d{4}|(?:[23679]\\\\d|4[015]|5[0-489]|8[67])\\\\d{5}\"]]],\"GN\":[\"224\",\"00\",\"722\\\\d{6}|(?:3|6\\\\d)\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"3\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[67]\"]]],0,0,0,0,0,0,[[\"3(?:0(?:24|3[12]|4[1-35-7]|5[13]|6[189]|[78]1|9[1478])|1\\\\d\\\\d)\\\\d{4}\",[8]],[\"6[0-356]\\\\d{7}\",[9]],0,0,0,0,0,0,[\"722\\\\d{6}\",[9]]]],\"GP\":[\"590\",\"00\",\"(?:590\\\\d|7090)\\\\d{5}|(?:69|80|9\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-79]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"590(?:0[1-68]|[14][0-24-9]|2[0-68]|3[1-9]|5[3-579]|[68][0-689]|7[08]|9\\\\d)\\\\d{4}\"],[\"(?:69(?:0\\\\d\\\\d|1(?:2[2-9]|3[0-5])|4(?:0[89]|1[2-6]|9\\\\d)|6(?:1[016-9]|5[0-4]|[67]\\\\d))|7090[0-4])\\\\d{4}\"],[\"80[0-5]\\\\d{6}\"],0,0,0,0,0,[\"9(?:(?:39[5-7]|76[018])\\\\d|475[0-6])\\\\d{4}\"]]],\"GQ\":[\"240\",\"00\",\"222\\\\d{6}|(?:3\\\\d|55|[89]0)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[235]\"]],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"[89]\"]]],0,0,0,0,0,0,[[\"33[0-24-9]\\\\d[46]\\\\d{4}|3(?:33|5\\\\d)\\\\d[7-9]\\\\d{4}\"],[\"(?:222|55\\\\d)\\\\d{6}\"],[\"80\\\\d[1-9]\\\\d{5}\"],[\"90\\\\d[1-9]\\\\d{5}\"]]],\"GR\":[\"30\",\"00\",\"5005000\\\\d{3}|8\\\\d{9,11}|(?:[269]\\\\d|70)\\\\d{8}\",[10,11,12],[[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"21|7\"]],[\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"2(?:2|3[2-57-9]|4[2-469]|5[2-59]|6[2-9]|7[2-69]|8[2-49])|5\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2689]\"]],[\"(\\\\d{3})(\\\\d{3,4})(\\\\d{5})\",\"$1 $2 $3\",[\"8\"]]],0,0,0,0,0,0,[[\"2(?:1\\\\d\\\\d|2(?:2[1-46-9]|[36][1-8]|4[1-7]|5[1-4]|7[1-5]|[89][1-9])|3(?:1\\\\d|2[1-57]|[35][1-3]|4[13]|7[1-7]|8[124-6]|9[1-79])|4(?:1\\\\d|2[1-8]|3[1-4]|4[13-5]|6[1-578]|9[1-5])|5(?:1\\\\d|[29][1-4]|3[1-5]|4[124]|5[1-6])|6(?:1\\\\d|[269][1-6]|3[1245]|4[1-7]|5[13-9]|7[14]|8[1-5])|7(?:1\\\\d|2[1-5]|3[1-6]|4[1-7]|5[1-57]|6[135]|9[125-7])|8(?:1\\\\d|2[1-5]|[34][1-4]|9[1-57]))\\\\d{6}\",[10]],[\"68[57-9]\\\\d{7}|(?:69|94)\\\\d{8}\",[10]],[\"800\\\\d{7,9}\"],[\"90[19]\\\\d{7}\",[10]],[\"70\\\\d{8}\",[10]],0,[\"5005000\\\\d{3}\",[10]],0,0,[\"8(?:0[16]|12|[27]5|50)\\\\d{7}\",[10]]]],\"GT\":[\"502\",\"00\",\"80\\\\d{6}|(?:1\\\\d{3}|[2-7])\\\\d{7}\",[8,11],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2-8]\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]]],0,0,0,0,0,0,[[\"[267][2-9]\\\\d{6}\",[8]],[\"(?:[3-5]\\\\d\\\\d|80[0-4])\\\\d{5}\",[8]],[\"18[01]\\\\d{8}\",[11]],[\"19\\\\d{9}\",[11]]]],\"GU\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|671|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-9]\\\\d{6})$|1\",\"671$1\",0,\"671\",[[\"671(?:2\\\\d\\\\d|3(?:00|3[39]|4[349]|55|6[26])|4(?:00|56|7[1-9]|8[02-9])|5(?:55|6[2-5]|88)|6(?:3[2-578]|4[24-9]|5[34]|78|8[235-9])|7(?:[0479]7|2[0167]|3[45]|8[7-9])|8(?:[2-57-9]8|6[478])|9(?:2[29]|6[79]|7[1279]|8[7-9]|9[78]))\\\\d{4}\"],[\"\"],[\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\"],[\"900[2-9]\\\\d{6}\"],[\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-9]|3[23]|44|66|77|88)[2-9]\\\\d{6}\"]]],\"GW\":[\"245\",\"00\",\"[49]\\\\d{8}|4\\\\d{6}\",[7,9],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"40\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[49]\"]]],0,0,0,0,0,0,[[\"443\\\\d{6}\",[9]],[\"9(?:5\\\\d|6[569]|77)\\\\d{6}\",[9]],0,0,0,0,0,0,[\"40\\\\d{5}\",[7]]]],\"GY\":[\"592\",\"001\",\"(?:[2-8]\\\\d{3}|9008)\\\\d{3}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-9]\"]]],0,0,0,0,0,0,[[\"(?:2(?:1[6-9]|2[0-35-9]|3[1-4]|5[3-9]|6\\\\d|7[0-79])|3(?:2[25-9]|3\\\\d)|4(?:4[0-24]|5[56])|50[0-6]|77[1-57])\\\\d{4}\"],[\"(?:51[01]|6\\\\d\\\\d|7(?:[0-5]\\\\d|6[0-69]|70))\\\\d{4}\"],[\"(?:289|8(?:00|6[28]|88|99))\\\\d{4}\"],[\"9008\\\\d{3}\"],0,0,0,0,[\"515\\\\d{4}\"]]],\"HK\":[\"852\",\"00(?:30|5[09]|[126-9]?)\",\"8[0-46-9]\\\\d{6,7}|9\\\\d{4,7}|(?:[2-7]|9\\\\d{3})\\\\d{7}\",[5,6,7,8,9,11],[[\"(\\\\d{3})(\\\\d{2,5})\",\"$1 $2\",[\"900\",\"9003\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2-7]|8[1-4]|9(?:0[1-9]|[1-8])\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"9\"]]],0,0,0,0,0,0,[[\"(?:2(?:[13-9]\\\\d|2[013-9])\\\\d|3(?:(?:[1569][0-24-9]|4[0-246-9]|7[0-24-69])\\\\d|8(?:4[0-8]|[579]\\\\d|6[0-5]))|58(?:0[1-9]|1[2-9]))\\\\d{4}\",[8]],[\"(?:4(?:(?:09|24)[3-6]|44[0-35-9]|6(?:4[0-57-9]|6[0-6])|7(?:4[0-48]|6[0-5]))|5(?:25[3-7]|35[4-8]|73[0-6]|95[0-8])|6(?:26[013-8]|(?:66|78)[0-5])|70(?:7[1-8]|8[0-8])|84(?:4[0-2]|8[0-35-9])|9(?:29[013-9]|39[014-9]|59[0-467]|899))\\\\d{4}|(?:4(?:4[0-35-9]|6[0-357-9]|7[0-35])|5(?:[1-59][0-46-9]|6[0-4689]|7[0-246-9])|6(?:0[1-9]|[13-59]\\\\d|[268][0-57-9]|7[0-79])|70[1-59]|84[0-39]|9(?:0[1-9]|1[02-9]|[2358][0-8]|[467]\\\\d))\\\\d{5}\",[8]],[\"800\\\\d{6}\",[9]],[\"900(?:[0-24-9]\\\\d{7}|3\\\\d{1,4})\",[5,6,7,8,11]],[\"8(?:1[0-4679]\\\\d|2(?:[0-36]\\\\d|7[0-4])|3(?:[034]\\\\d|2[09]|70))\\\\d{4}\",[8]],0,[\"30(?:0[1-9]|[15-7]\\\\d|2[047]|89)\\\\d{4}\",[8]],[\"7(?:1(?:0[0-38]|1[0-3679]|3[013]|69|9[0136])|2(?:[02389]\\\\d|1[18]|7[27-9])|3(?:[0-38]\\\\d|7[0-369]|9[2357-9])|47\\\\d|5(?:[178]\\\\d|5[0-5])|6(?:0[0-7]|2[236-9]|[35]\\\\d)|7(?:[27]\\\\d|8[7-9])|8(?:[23689]\\\\d|7[1-9])|9(?:[025]\\\\d|6[0-246-8]|7[0-36-9]|8[238]))\\\\d{4}\",[8]]],\"00\"],\"HN\":[\"504\",\"00\",\"8\\\\d{10}|[237-9]\\\\d{7}\",[8,11],[[\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"[237-9]\"]]],0,0,0,0,0,0,[[\"2(?:2(?:0[0-59]|1[1-9]|[23]\\\\d|4[02-7]|5[57]|6[245]|7[0135689]|8[01346-9]|9[0-2])|4(?:0[578]|2[3-59]|3[13-9]|4[0-68]|5[1-3589])|5(?:0[2357-9]|1[1-356]|4[03-5]|5\\\\d|6[014-69]|7[04]|80)|6(?:[056]\\\\d|17|2[067]|3[047]|4[0-378]|[78][0-8]|9[01])|7(?:0[5-79]|6[46-9]|7[02-9]|8[034]|91)|8(?:79|8[0-357-9]|9[1-57-9]))\\\\d{4}\",[8]],[\"[37-9]\\\\d{7}\",[8]],[\"8002\\\\d{7}\",[11]]]],\"HR\":[\"385\",\"00\",\"[2-69]\\\\d{8}|80\\\\d{5,7}|[1-79]\\\\d{7}|6\\\\d{6}\",[7,8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"6[01]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"8\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"6|7[245]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-57]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"1\\\\d{7}|(?:2[0-3]|3[1-5]|4[02-47-9]|5[1-3])\\\\d{6,7}\",[8,9]],[\"9(?:(?:0[1-9]|[12589]\\\\d)\\\\d\\\\d|7(?:[0679]\\\\d\\\\d|5(?:[01]\\\\d|44|55|77|9[5-79])))\\\\d{4}|98\\\\d{6}\",[8,9]],[\"80\\\\d{5,7}\"],[\"6[01459]\\\\d{6}|6[01]\\\\d{5}\",[7,8]],[\"7[45]\\\\d{6}\",[8]],0,[\"62\\\\d{6,7}|72\\\\d{6}\",[8,9]]]],\"HT\":[\"509\",\"00\",\"[2-589]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-589]\"]]],0,0,0,0,0,0,[[\"2(?:2\\\\d|5[1-5]|81|9[149])\\\\d{5}\"],[\"(?:[34]\\\\d|5[568])\\\\d{6}\"],[\"8\\\\d{7}\"],0,0,0,0,0,[\"9(?:[67][0-4]|8[0-3589]|9\\\\d)\\\\d{5}\"]]],\"HU\":[\"36\",\"00\",\"[235-7]\\\\d{8}|[1-9]\\\\d{7}\",[8,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"(06 $1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[27][2-9]|3[2-7]|4[24-9]|5[2-79]|6|8[2-57-9]|9[2-69]\"],\"(06 $1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-9]\"],\"06 $1\"]],\"06\",0,0,0,0,0,[[\"(?:1\\\\d|[27][2-9]|3[2-7]|4[24-9]|5[2-79]|6[23689]|8[2-57-9]|9[2-69])\\\\d{6}\",[8]],[\"(?:[257]0|3[01])\\\\d{7}\",[9]],[\"(?:[48]0\\\\d|680[29])\\\\d{5}\"],[\"9[01]\\\\d{6}\",[8]],0,0,[\"38\\\\d{7}\",[9]],0,[\"21\\\\d{7}\",[9]]]],\"ID\":[\"62\",\"00[89]\",\"00[1-9]\\\\d{9,14}|(?:[1-36]|8\\\\d{5})\\\\d{6}|00\\\\d{9}|[1-9]\\\\d{8,10}|[2-9]\\\\d{7}\",[7,8,9,10,11,12,13,14,15,16,17],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"15\"]],[\"(\\\\d{2})(\\\\d{5,9})\",\"$1 $2\",[\"2[124]|[36]1\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{5,7})\",\"$1 $2\",[\"800\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5,8})\",\"$1 $2\",[\"[2-79]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3,4})(\\\\d{3})\",\"$1-$2-$3\",[\"8[1-35-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6,8})\",\"$1 $2\",[\"1\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"804\"],\"0$1\"],[\"(\\\\d{3})(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"80\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4,5})\",\"$1-$2-$3\",[\"8\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"2[124]\\\\d{7,8}|619\\\\d{8}|2(?:1(?:14|500)|2\\\\d{3})\\\\d{3}|61\\\\d{5,8}|(?:2(?:[35][1-4]|6[0-8]|7[1-6]|8\\\\d|9[1-8])|3(?:1|[25][1-8]|3[1-68]|4[1-3]|6[1-3568]|7[0-469]|8\\\\d)|4(?:0[1-589]|1[01347-9]|2[0-36-8]|3[0-24-68]|43|5[1-378]|6[1-5]|7[134]|8[1245])|5(?:1[1-35-9]|2[25-8]|3[124-9]|4[1-3589]|5[1-46]|6[1-8])|6(?:[25]\\\\d|3[1-69]|4[1-6])|7(?:02|[125][1-9]|[36]\\\\d|4[1-8]|7[0-36-9])|9(?:0[12]|1[013-8]|2[0-479]|5[125-8]|6[23679]|7[159]|8[01346]))\\\\d{5,8}\",[7,8,9,10,11]],[\"8[1-35-9]\\\\d{7,10}\",[9,10,11,12]],[\"00(?:1803\\\\d{5,11}|7803\\\\d{7})|(?:177\\\\d|800)\\\\d{5,7}\",[8,9,10,11,12,13,14,15,16,17]],[\"809\\\\d{7}\",[10]],0,0,[\"(?:1500|8071\\\\d{3})\\\\d{3}\",[7,10]],0,0,[\"804\\\\d{7}\",[10]]]],\"IE\":[\"353\",\"00\",\"(?:1\\\\d|[2569])\\\\d{6,8}|4\\\\d{6,9}|7\\\\d{8}|8\\\\d{8,9}\",[7,8,9,10],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"2[24-9]|47|58|6[237-9]|9[35-9]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[45]0\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2569]|4[1-69]|7[14]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"70\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"81\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[78]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"4\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:1\\\\d|21)\\\\d{6,7}|(?:2[24-9]|4(?:0[24]|5\\\\d|7)|5(?:0[45]|1\\\\d|8)|6(?:1\\\\d|[237-9])|9(?:1\\\\d|[35-9]))\\\\d{5}|(?:23|4(?:[1-469]|8\\\\d)|5[23679]|6[4-6]|7[14]|9[04])\\\\d{7}\"],[\"8(?:22|[35-9]\\\\d)\\\\d{6}\",[9]],[\"1800\\\\d{6}\",[10]],[\"15(?:1[2-8]|[2-8]0|9[089])\\\\d{6}\",[10]],[\"700\\\\d{6}\",[9]],[\"88210[1-9]\\\\d{4}|8(?:[35-79]5\\\\d\\\\d|8(?:[013-9]\\\\d\\\\d|2(?:[01][1-9]|[2-9]\\\\d)))\\\\d{5}\",[10]],[\"818\\\\d{6}\",[9]],0,[\"76\\\\d{7}\",[9]],[\"18[59]0\\\\d{6}\",[10]]]],\"IL\":[\"972\",\"0(?:0|1[2-9])\",\"1\\\\d{6}(?:\\\\d{3,5})?|[57]\\\\d{8}|[1-489]\\\\d{7}\",[7,8,9,10,11,12],[[\"(\\\\d{4})(\\\\d{3})\",\"$1-$2\",[\"125\"]],[\"(\\\\d{4})(\\\\d{2})(\\\\d{2})\",\"$1-$2-$3\",[\"121\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[2-489]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[57]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1-$2-$3\",[\"12\"]],[\"(\\\\d{4})(\\\\d{6})\",\"$1-$2\",[\"159\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1-$2-$3-$4\",[\"1[7-9]\"]],[\"(\\\\d{3})(\\\\d{1,2})(\\\\d{3})(\\\\d{4})\",\"$1-$2 $3-$4\",[\"15\"]]],\"0\",0,0,0,0,0,[[\"153\\\\d{8,9}|29[1-9]\\\\d{5}|(?:2[0-8]|[3489]\\\\d)\\\\d{6}\",[8,11,12]],[\"55(?:4(?:0[0-2]|[16]0)|57[0-289])\\\\d{4}|5(?:(?:[0-2][02-9]|[36]\\\\d|[49][2-9]|8[3-7])\\\\d|5(?:01|2\\\\d|3[0-3]|4[3-5]|5[0-25689]|6[6-8]|7[0-267]|8[7-9]|9[1-9]))\\\\d{5}\",[9]],[\"1(?:255|80[019]\\\\d{3})\\\\d{3}\",[7,10]],[\"1212\\\\d{4}|1(?:200|9(?:0[0-2]|19))\\\\d{6}\",[8,10]],0,[\"151\\\\d{8,9}\",[11,12]],[\"1599\\\\d{6}\",[10]],0,[\"7(?:38(?:[05]\\\\d|8[0138])|8(?:33|55|77|81)\\\\d)\\\\d{4}|7(?:18|2[23]|3[237]|47|6[258]|7\\\\d|82|9[2-9])\\\\d{6}\",[9]],[\"1700\\\\d{6}\",[10]]]],\"IM\":[\"44\",\"00\",\"1624\\\\d{6}|(?:[3578]\\\\d|90)\\\\d{8}\",[10],0,\"0\",0,\"([25-8]\\\\d{5})$|0|180020\",\"1624$1\",0,\"74576|(?:16|7[56])24\",[[\"1624(?:230|[5-8]\\\\d\\\\d)\\\\d{3}\"],[\"76245[06]\\\\d{4}|7(?:4576|[59]24\\\\d|624[0-4689])\\\\d{5}\"],[\"808162\\\\d{4}\"],[\"8(?:440[49]06|72299\\\\d)\\\\d{3}|(?:8(?:45|70)|90[0167])624\\\\d{4}\"],[\"70\\\\d{8}\"],0,[\"3440[49]06\\\\d{3}|(?:3(?:08162|3\\\\d{4}|45624|7(?:0624|2299))|55\\\\d{4})\\\\d{4}\"],0,[\"56\\\\d{8}\"]]],\"IN\":[\"91\",\"00\",\"(?:000800|[2-9]\\\\d\\\\d)\\\\d{7}|1\\\\d{7,12}\",[8,9,10,11,12,13],[[\"(\\\\d{8})\",\"$1\",[\"5(?:0|2[23]|3[03]|[67]1|88)\",\"5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|888)\",\"5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|8888)\"],0,1],[\"(\\\\d{4})(\\\\d{4,5})\",\"$1 $2\",[\"180\",\"1800\"],0,1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"140\"],0,1],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"11|2[02]|33|4[04]|79[1-7]|80[2-46]\",\"11|2[02]|33|4[04]|79(?:[1-6]|7[19])|80(?:[2-4]|6[0-589])\",\"11|2[02]|33|4[04]|79(?:[124-6]|3(?:[02-9]|1[0-24-9])|7(?:1|9[1-6]))|80(?:[2-4]|6[0-589])\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1(?:2[0-249]|3[0-25]|4[145]|[68]|7[1257])|2(?:1[257]|3[013]|4[01]|5[0137]|6[0158]|78|8[1568])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|5[12]|[78]1)|6(?:12|[2-4]1|5[17]|6[13]|80)|7(?:12|3[134]|4[47]|61|88)|8(?:16|2[014]|3[126]|6[136]|7[078]|8[34]|91)|(?:43|59|75)[15]|(?:1[59]|29|67|72)[14]\",\"1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|674|7(?:(?:2[14]|3[34]|5[15])[2-6]|61[346]|88[0-8])|8(?:70[2-6]|84[235-7]|91[3-7])|(?:1(?:29|60|8[06])|261|552|6(?:12|[2-47]1|5[17]|6[13]|80)|7(?:12|31|4[47])|8(?:16|2[014]|3[126]|6[136]|7[78]|83))[2-7]\",\"1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|6(?:12(?:[2-6]|7[0-8])|74[2-7])|7(?:(?:2[14]|5[15])[2-6]|3171|61[346]|88(?:[2-7]|82))|8(?:70[2-6]|84(?:[2356]|7[19])|91(?:[3-6]|7[19]))|73[134][2-6]|(?:74[47]|8(?:16|2[014]|3[126]|6[136]|7[78]|83))(?:[2-6]|7[19])|(?:1(?:29|60|8[06])|261|552|6(?:[2-4]1|5[17]|6[13]|7(?:1|4[0189])|80)|7(?:12|88[01]))[2-7]\"],\"0$1\",1],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2[2457-9]|3[2-5]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1[013-9]|28|3[129]|4[1-35689]|5[29]|6[02-5]|70)|807\",\"1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2(?:[2457]|84|95)|3(?:[2-4]|55)|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1(?:[013-8]|9[6-9])|28[6-8]|3(?:17|2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4|5[0-367])|70[13-7])|807[19]\",\"1(?:[2-479]|5(?:[0236-9]|5[013-9]))|[2-5]|6(?:2(?:84|95)|355|8(?:28[235-7]|3))|73179|807(?:1|9[1-3])|(?:1552|6(?:(?:1[1358]|2[2457]|3[2-4]|4[235-7]|5[2-689]|6[24578]|7[235689])\\\\d|8(?:[14-6]\\\\d|2[0-79]))|7(?:1(?:[013-8]\\\\d|9[6-9])|28[6-8]|3(?:2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]\\\\d|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4\\\\d|5[0-367])|70[13-7]))[2-7]\"],\"0$1\",1],[\"(\\\\d{5})(\\\\d{5})\",\"$1 $2\",[\"16|[6-9]\"],\"0$1\",1],[\"(\\\\d{4})(\\\\d{2,4})(\\\\d{4})\",\"$1 $2 $3\",[\"18[06]\",\"18[06]0\"],0,1],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"18\"],0,1]],\"0\",0,0,0,0,0,[[\"(?:2717(?:[2-7]\\\\d|95)|6828[235-7]\\\\d)\\\\d{4}|(?:170[24]|280[13468]|4(?:20[24]|72[2-8])|552[1-7])\\\\d{6}|(?:271[0-689]|682[0-79]|782[0-6])[2-7]\\\\d{5}|(?:2(?:[02][2-79]|90)|3(?:23|80)|683|79[1-7])\\\\d{7}|(?:11|33|4[04]|80)[2-7]\\\\d{7}|(?:342|674|788)(?:[0189][2-7]|[2-7]\\\\d)\\\\d{5}|(?:1(?:2[0-249]|3[0-25]|4[145]|[59][14]|6[014]|7[1257]|8[01346])|2(?:1[257]|3[013]|4[01]|5[0137]|6[0158]|78|8[1568]|9[14])|3(?:26|4[13]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[014-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|6(?:12|[2-47]1|5[17]|6[13]|80)|7(?:12|2[14]|3[134]|4[47]|5[15]|[67]1)|8(?:16|2[014]|3[126]|6[136]|7[078]|8[34]|91))[2-7]\\\\d{6}|(?:1(?:2[35-8]|3[346-9]|4[236-9]|[59][0235-9]|6[235-9]|7[34689]|8[257-9])|2(?:1[134689]|3[24-8]|4[2-8]|5[25689]|6[2-4679]|7[3-79]|8[2-479]|9[235-9])|3(?:01|1[79]|2[1245]|4[5-8]|5[125689]|6[235-7]|7[157-9]|8[2-46-8])|4(?:1[14578]|2[5689]|3[2-467]|5[4-7]|6[35]|73|8[2689]|9[2389])|5(?:[16][146-9]|2[14-8]|3[1346]|4[14-69]|5[46]|7[2-4]|8[2-8]|9[246])|6(?:1[1358]|2[2457]|3[2-4]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[14-6])|7(?:1[013-9]|2[0235-9]|3[2679]|4[1-35689]|5[2-46-9]|[67][02-9]|8[013-7]|9[089])|8(?:1[1357-9]|2[235-8]|3[03-57-9]|4[0-24-9]|5\\\\d|6[2457-9]|7[1-6]|8[1256]|9[2-4]))\\\\d[2-7]\\\\d{5}\",[10]],[\"(?:6(?:1279|828[01489])|7(?:887[02-9]|9(?:313|79[07-9]))|8(?:079[04-9]|(?:84|91)7[02-8]))\\\\d{5}|(?:160[01]|6(?:12|[2-47]1|5[17]|6[13]|80)[0189]|7(?:1(?:2[0189]|9[0-5])|2(?:[14][017-9]|8[0-59])|3(?:2[5-8]|[34][017-9]|9[016-9])|4(?:1[015-9]|[29][89]|39|8[389])|5(?:[15][017-9]|2[04-9]|9[7-9])|6(?:0[0-47]|1[0-257-9]|2[0-4]|3[19]|5[4589])|70[0289]|88[089]|97[02-8])|8(?:0(?:6[67]|7[02-8])|70[017-9]|84[01489]|91[0-289]))\\\\d{6}|(?:7(?:31|4[47])|8(?:16|2[014]|3[126]|6[136]|7[78]|83))(?:[0189]\\\\d|7[02-8])\\\\d{5}|(?:6(?:[09]\\\\d|1[04679]|2[03689]|3[05-9]|4[0489]|50|6[069]|7[07]|8[7-9])|7(?:0\\\\d|2[0235-79]|3[05-8]|40|5[0346-8]|6[6-9]|7[1-9]|8[0-79]|9[089])|8(?:0[01589]|1[0-57-9]|2[235-9]|3[03-57-9]|[45]\\\\d|6[02457-9]|7[1-69]|8[0-25-9]|9[02-9])|9\\\\d\\\\d)\\\\d{7}|(?:6(?:(?:1[1358]|2[2457]|3[2-4]|4[235-7]|5[2-689]|6[24578])\\\\d|7(?:[235689]\\\\d|4[0189])|8(?:[14-6]\\\\d|2[0-79]))|7(?:1(?:[013-8]\\\\d|9[6-9])|28[6-8]|3(?:2[0-49]|9[2-5])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]\\\\d|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4\\\\d|5[0-367])|70[13-7]|881))[0189]\\\\d{5}\",[10]],[\"000800\\\\d{7}|180(?:0\\\\d{4,9}|3\\\\d{9})\"],[\"186[12]\\\\d{9}\",[13]],0,0,[\"140\\\\d{7}\",[10]],0,0,[\"1860\\\\d{7}\",[11]]]],\"IO\":[\"246\",\"00\",\"3\\\\d{6}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"3\"]]],0,0,0,0,0,0,[[\"37\\\\d{5}\"],[\"38\\\\d{5}\"]]],\"IQ\":[\"964\",\"00\",\"(?:1|7\\\\d\\\\d)\\\\d{7}|[2-6]\\\\d{7,8}\",[8,9,10],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-6]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"1\\\\d{7}|(?:2[13-5]|3[02367]|4[023]|5[03]|6[026])\\\\d{6,7}\",[8,9]],[\"7[3-9]\\\\d{8}\",[10]]]],\"IR\":[\"98\",\"00\",\"[1-9]\\\\d{9}|(?:[1-8]\\\\d\\\\d|9)\\\\d{3,4}\",[4,5,6,7,10],[[\"(\\\\d{4,5})\",\"$1\",[\"96\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4,5})\",\"$1 $2\",[\"(?:1[137]|2[13-68]|3[1458]|4[145]|5[1468]|6[16]|7[1467]|8[13467])[12689]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-8]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:1[137]|2[13-68]|3[1458]|4[145]|5[1468]|6[16]|7[1467]|8[13467])(?:[03-57]\\\\d{7}|[16]\\\\d{3}(?:\\\\d{4})?|[289]\\\\d{3}(?:\\\\d(?:\\\\d{3})?)?)|94(?:000[09]|(?:12\\\\d|30[0-2])\\\\d|2(?:[02689]0\\\\d|121)|4(?:111|40\\\\d))\\\\d{4}\",[6,7,10]],[\"9(?:(?:0[0-5]|[13]\\\\d|2[0-3])\\\\d\\\\d|9(?:[0-46]\\\\d\\\\d|5(?:10|5\\\\d)|8(?:[12]\\\\d|88)|9(?:[01359]\\\\d|21|69|77|8[7-9])))\\\\d{5}\",[10]],0,0,0,0,[\"96(?:0[12]|2[16-8]|3(?:08|[14]5|[23]|66)|4(?:0|80)|5[01]|6[89]|86|9[19])\",[4,5]]]],\"IS\":[\"354\",\"00|1(?:0(?:01|[12]0)|100)\",\"(?:38\\\\d|[4-9])\\\\d{6}\",[7,9],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[4-9]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"3\"]]],0,0,0,0,0,0,[[\"(?:4(?:1[0-24-69]|2[0-7]|[37][0-8]|4[0-24589]|5[0-68]|6\\\\d|8[0-36-8])|5(?:05|[156]\\\\d|2[02578]|3[0-579]|4[03-7]|7[0-2578]|8[0-35-9]|9[013-689])|872)\\\\d{4}\",[7]],[\"(?:38[589]\\\\d\\\\d|6(?:1[1-8]|2[0-6]|3[026-9]|4[014679]|5[0159]|6[0-69]|70|8[06-8]|9\\\\d)|7(?:5[057]|[6-9]\\\\d)|8(?:2[0-59]|[3-69]\\\\d|8[238]))\\\\d{4}\"],[\"80[0-8]\\\\d{4}\",[7]],[\"90(?:0\\\\d|1[5-79]|2[015-79]|3[135-79]|4[125-7]|5[25-79]|7[1-37]|8[0-35-7])\\\\d{3}\",[7]],0,[\"(?:689|8(?:7[18]|80)|95[48])\\\\d{4}\",[7]],[\"809\\\\d{4}\",[7]],0,[\"49[0-24-79]\\\\d{4}\",[7]]],\"00\"],\"IT\":[\"39\",\"00\",\"0\\\\d{5,11}|1\\\\d{8,10}|3(?:[0-8]\\\\d{7,10}|9\\\\d{7,8})|(?:43|55|70)\\\\d{8}|8\\\\d{5}(?:\\\\d{2,4})?\",[6,7,8,9,10,11,12],[[\"(\\\\d{2})(\\\\d{4,6})\",\"$1 $2\",[\"0[26]\"]],[\"(\\\\d{3})(\\\\d{3,6})\",\"$1 $2\",[\"0[13-57-9][0159]|8(?:03|4[17]|9[2-5])\",\"0[13-57-9][0159]|8(?:03|4[17]|9(?:2|3[04]|[45][0-4]))\"]],[\"(\\\\d{4})(\\\\d{2,6})\",\"$1 $2\",[\"0(?:[13-579][2-46-8]|8[236-8])\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"894\"]],[\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"0[26]|5\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"1(?:44|[679])|[378]|43\"]],[\"(\\\\d{3})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"0[13-57-9][0159]|14\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{5})\",\"$1 $2 $3\",[\"0[26]\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"0\"]],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4,5})\",\"$1 $2 $3\",[\"[03]\"]]],0,0,0,0,0,0,[[\"0(?:669[0-79]\\\\d{1,6}|831\\\\d{2,8})|0(?:1(?:[0159]\\\\d|[27][1-5]|31|4[1-4]|6[1356]|8[2-57])|2\\\\d\\\\d|3(?:[0159]\\\\d|2[1-4]|3[12]|[48][1-6]|6[2-59]|7[1-7])|4(?:[0159]\\\\d|[23][1-9]|4[245]|6[1-5]|7[1-4]|81)|5(?:[0159]\\\\d|2[1-5]|3[2-6]|4[1-79]|6[4-6]|7[1-578]|8[3-8])|6(?:[0-57-9]\\\\d|6[0-8])|7(?:[0159]\\\\d|2[12]|3[1-7]|4[2-46]|6[13569]|7[13-6]|8[1-59])|8(?:[0159]\\\\d|2[3-578]|3[2356]|[6-8][1-5])|9(?:[0159]\\\\d|[238][1-5]|4[12]|6[1-8]|7[1-6]))\\\\d{2,7}\"],[\"3[2-9]\\\\d{7,8}|(?:31|43)\\\\d{8}\",[9,10]],[\"80(?:0\\\\d{3}|3)\\\\d{3}\",[6,9]],[\"(?:0878\\\\d{3}|89(?:2\\\\d|3[04]|4(?:[0-4]|[5-9]\\\\d\\\\d)|5[0-4]))\\\\d\\\\d|(?:1(?:44|6[346])|89(?:38|5[5-9]|9))\\\\d{6}\",[6,8,9,10]],[\"1(?:78\\\\d|99)\\\\d{6}\",[9,10]],[\"3[2-8]\\\\d{9,10}\",[11,12]],0,0,[\"55\\\\d{8}\",[10]],[\"84(?:[08]\\\\d{3}|[17])\\\\d{3}\",[6,9]]]],\"JE\":[\"44\",\"00\",\"1534\\\\d{6}|(?:[3578]\\\\d|90)\\\\d{8}\",[10],0,\"0\",0,\"([0-24-8]\\\\d{5})$|0|180020\",\"1534$1\",0,0,[[\"1534[0-24-8]\\\\d{5}\"],[\"7(?:(?:(?:50|82)9|937)\\\\d|7(?:00[378]|97\\\\d))\\\\d{5}\"],[\"80(?:07(?:35|81)|8901)\\\\d{4}\"],[\"(?:8(?:4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))|90(?:066[59]|1810|71(?:07|55)))\\\\d{4}\"],[\"701511\\\\d{4}\"],0,[\"(?:3(?:0(?:07(?:35|81)|8901)|3\\\\d{4}|4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))|55\\\\d{4})\\\\d{4}\"],[\"76(?:464|652)\\\\d{5}|76(?:0[0-28]|2[356]|34|4[01347]|5[49]|6[0-369]|77|8[14]|9[139])\\\\d{6}\"],[\"56\\\\d{8}\"]]],\"JM\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|658|900)\\\\d{7}\",[10],0,\"1\",0,0,0,0,\"658|876\",[[\"8766060\\\\d{3}|(?:658(?:2(?:[5-8]\\\\d|9[0-46-9])|[3-9]\\\\d\\\\d)|876(?:52[35]|6(?:0[1-3579]|1[0235-9]|[23]\\\\d|40|5[06]|6[2-589]|7[0-25-9]|8[04]|9[4-9])|7(?:0[2-689]|[1-6]\\\\d|8[056]|9[45])|9(?:0[1-8]|1[02378]|[2-8]\\\\d|9[2-468])))\\\\d{4}\"],[\"(?:6582(?:[0-4]\\\\d|95)|876(?:2(?:0[1-9]|[13-9]\\\\d|2[013-9])|[348]\\\\d\\\\d|5(?:0[1-9]|[1-9]\\\\d)|6(?:4[89]|6[67])|7(?:0[07]|7\\\\d|8[1-47-9]|9[0-36-9])|9(?:[01]9|9[0579])))\\\\d{4}\"],[\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\"],[\"900[2-9]\\\\d{6}\"],[\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-9]|3[23]|44|66|77|88)[2-9]\\\\d{6}\"]]],\"JO\":[\"962\",\"00\",\"(?:(?:[2689]|7\\\\d)\\\\d|32|427|53)\\\\d{6}\",[8,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2356]|87\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{5,6})\",\"$1 $2\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"70\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[47]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"87(?:000|90[01])\\\\d{3}|(?:2(?:6(?:2[0-35-9]|3[0-578]|4[24-7]|5[0-24-8]|[6-8][023]|9[0-3])|7(?:0[1-79]|10|2[014-7]|3[0-689]|4[019]|5[0-3578]))|32(?:0[1-69]|1[1-35-7]|2[024-7]|3\\\\d|4[0-3]|[5-7][023])|53(?:0[0-3]|[13][023]|2[0-59]|49|5[0-35-9]|6[15]|7[45]|8[1-6]|9[0-36-9])|6(?:2(?:[05]0|22)|3(?:00|33)|4(?:0[0-25]|1[2-7]|2[0569]|[38][07-9]|4[025689]|6[0-589]|7\\\\d|9[0-2])|5(?:[01][056]|2[034]|3[0-57-9]|4[178]|5[0-69]|6[0-35-9]|7[1-379]|8[0-68]|9[0239]))|87(?:20|7[078]|99))\\\\d{4}\",[8]],[\"(?:427|7(?:[78][0-25-9]|9\\\\d))\\\\d{6}\",[9]],[\"80\\\\d{6}\",[8]],[\"9\\\\d{7}\",[8]],[\"70\\\\d{7}\",[9]],0,[\"8(?:10|8\\\\d)\\\\d{5}\",[8]],[\"74(?:66|77)\\\\d{5}\",[9]],0,[\"85\\\\d{6}\",[8]]]],\"JP\":[\"81\",\"010\",\"00[1-9]\\\\d{6,14}|[25-9]\\\\d{9}|(?:00|[1-9]\\\\d\\\\d)\\\\d{6}\",[8,9,10,11,12,13,14,15,16,17],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1-$2-$3\",[\"(?:12|57|99)0\"],\"0$1\"],[\"(\\\\d{4})(\\\\d)(\\\\d{4})\",\"$1-$2-$3\",[\"1(?:26|3[79]|4[56]|5[4-68]|6[3-5])|499|5(?:76|97)|746|8(?:3[89]|47|51)|9(?:80|9[16])\",\"1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:76|97)9|7468|8(?:3(?:8[7-9]|96)|477|51[2-9])|9(?:802|9(?:1[23]|69))|1(?:45|58)[67]\",\"1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:769|979[2-69])|7468|8(?:3(?:8[7-9]|96[2457-9])|477|51[2-9])|9(?:802|9(?:1[23]|69))|1(?:45|58)[67]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"60\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"3|4(?:2[09]|7[01])|6[1-9]\",\"3|4(?:2(?:0|9[02-69])|7(?:0[019]|1))|6[1-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"1(?:1|5[45]|77|88|9[69])|2(?:2[1-37]|3[0-269]|4[59]|5|6[24]|7[1-358]|8[1369]|9[0-38])|4(?:[28][1-9]|3[0-57]|[45]|6[248]|7[2-579]|9[29])|5(?:2|3[0459]|4[0-369]|5[29]|8[02389]|9[0-389])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9[2-6])|8(?:2[124589]|3[26-9]|49|51|6|7[0-468]|8[68]|9[019])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9[1-489])\",\"1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2(?:[127]|3[014-9])|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9[19])|62|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|8[1-9]|9[29])|5(?:2|3(?:[045]|9[0-8])|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0-2469])|3(?:[29]|60)|49|51|6(?:[0-24]|36|5[0-3589]|7[23]|9[01459])|7[0-468]|8[68])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9(?:[1289]|3[34]|4[0178]))|(?:264|837)[016-9]|2(?:57|93)[015-9]|(?:25[0468]|422|838)[01]|(?:47[59]|59[89]|8(?:6[68]|9))[019]\",\"1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2[127]|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9(?:17|99))|6(?:2|4[016-9])|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|9[29])|5(?:2|3(?:[045]|9(?:[0-58]|6[4-9]|7[0-35689]))|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0169])|3(?:[29]|60|7(?:[017-9]|6[6-8]))|49|51|6(?:[0-24]|36[2-57-9]|5(?:[0-389]|5[23])|6(?:[01]|9[178])|7(?:2[2-468]|3[78])|9[0145])|7[0-468]|8[68])|9(?:4[15]|5[138]|7[156]|8[189]|9(?:[1289]|3(?:31|4[357])|4[0178]))|(?:8294|96)[1-3]|2(?:57|93)[015-9]|(?:223|8699)[014-9]|(?:25[0468]|422|838)[01]|(?:48|8292|9[23])[1-9]|(?:47[59]|59[89]|8(?:68|9))[019]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1-$2-$3\",[\"[14]|[289][2-9]|5[3-9]|7[2-4679]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"800\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"[25-9]\"],\"0$1\"]],\"0\",0,\"(000[2569]\\\\d{4,6})$|(?:(?:003768)0?)|0\",\"$1\",0,0,[[\"(?:1(?:1[235-8]|2[3-6]|3[3-9]|4[2-6]|[58][2-8]|6[2-7]|7[2-9]|9[1-9])|(?:2[2-9]|[36][1-9])\\\\d|4(?:[2-578]\\\\d|6[02-8]|9[2-59])|5(?:[2-589]\\\\d|6[1-9]|7[2-8])|7(?:[25-9]\\\\d|3[4-9]|4[02-9])|8(?:[2679]\\\\d|3[2-9]|4[5-9]|5[1-9]|8[03-9])|9(?:[2-58]\\\\d|[679][1-9]))\\\\d{6}\",[9]],[\"(?:601[0-4]0|[7-9]0[1-9]\\\\d\\\\d)\\\\d{5}\",[10]],[\"00777(?:[01]|5\\\\d)\\\\d\\\\d|(?:00(?:7778|882[1245])|(?:120|800\\\\d)\\\\d\\\\d)\\\\d{4}|00(?:37|66|78)\\\\d{6,13}\"],[\"990\\\\d{6}\",[9]],[\"60\\\\d{7}\",[9]],0,[\"570\\\\d{6}\",[9]],[\"20\\\\d{8}\",[10]],[\"50[1-9]\\\\d{7}\",[10]]]],\"KE\":[\"254\",\"000\",\"(?:[17]\\\\d\\\\d|900)\\\\d{6}|(?:2|80)0\\\\d{6,7}|[4-6]\\\\d{6,8}\",[7,8,9,10],[[\"(\\\\d{2})(\\\\d{5,7})\",\"$1 $2\",[\"[24-6]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"[17]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:4[245]|5[1-79]|6[01457-9])\\\\d{5,7}|(?:4[136]|5[08]|62)\\\\d{7}|(?:[24]0|66)\\\\d{6,7}\",[7,8,9]],[\"(?:1(?:0[0-8]|1\\\\d|2[014]|[34]0)|7\\\\d\\\\d)\\\\d{6}\",[9]],[\"800[02-8]\\\\d{5,6}\",[9,10]],[\"900[02-9]\\\\d{5}\",[9]]]],\"KG\":[\"996\",\"00\",\"8\\\\d{9}|[235-9]\\\\d{8}\",[9,10],[[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"3(?:1[346]|[24-79])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[235-79]|88\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d)(\\\\d{2,3})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"312(?:5[0-79]\\\\d|9(?:[0-689]\\\\d|7[0-24-9]))\\\\d{3}|(?:3(?:1(?:2[0-46-8]|3[1-9]|47|[56]\\\\d)|2(?:22|3[0-479]|6[0-7])|4(?:22|5[6-9]|6\\\\d)|5(?:22|3[4-7]|59|6\\\\d)|6(?:22|5[35-7]|6\\\\d)|7(?:22|3[468]|4[1-9]|59|[67]\\\\d)|9(?:22|4[1-8]|6\\\\d))|6(?:09|12|2[2-4])\\\\d)\\\\d{5}\",[9]],[\"312(?:58\\\\d|973)\\\\d{3}|(?:2(?:0[0-35]|2\\\\d)|5[0-24-7]\\\\d|600|7(?:[07]\\\\d|55)|88[08]|9(?:12|9[05-9]))\\\\d{6}\",[9]],[\"800\\\\d{6,7}\"]]],\"KH\":[\"855\",\"00[14-9]\",\"1\\\\d{9}|[1-9]\\\\d{7,8}\",[8,9,10],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[1-9]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]]],\"0\",0,0,0,0,0,[[\"23(?:4(?:[2-4]|[56]\\\\d)|[568]\\\\d\\\\d)\\\\d{4}|23[236-9]\\\\d{5}|(?:2[4-6]|3[2-6]|4[2-4]|[5-7][2-5])(?:(?:[237-9]|4[56]|5\\\\d)\\\\d{5}|6\\\\d{5,6})\",[8,9]],[\"(?:(?:1[28]|3[18]|9[67])\\\\d|6[016-9]|7(?:[07-9]|[16]\\\\d)|8(?:[013-79]|8\\\\d))\\\\d{6}|(?:1\\\\d|9[0-57-9])\\\\d{6}|(?:2[3-6]|3[2-6]|4[2-4]|[5-7][2-5])48\\\\d{5}\",[8,9]],[\"1800(?:1\\\\d|2[019])\\\\d{4}\",[10]],[\"1900(?:1\\\\d|2[09])\\\\d{4}\",[10]]]],\"KI\":[\"686\",\"00\",\"(?:[37]\\\\d|6[0-79])\\\\d{6}|(?:[2-48]\\\\d|50)\\\\d{3}\",[5,8],0,\"0\",0,0,0,0,0,[[\"(?:[24]\\\\d|3[1-9]|50|65(?:02[12]|12[56]|22[89]|[3-5]00)|7(?:27\\\\d\\\\d|3100|5(?:02[12]|12[56]|22[89]|[34](?:00|81)|500))|8[0-5])\\\\d{3}\"],[\"(?:6200[01]|7(?:310[1-9]|5(?:02[03-9]|12[0-47-9]|22[0-7]|[34](?:0[1-9]|8[02-9])|50[1-9])))\\\\d{3}|(?:63\\\\d\\\\d|7(?:(?:[0146-9]\\\\d|2[0-689])\\\\d|3(?:[02-9]\\\\d|1[1-9])|5(?:[0-2][013-9]|[34][1-79]|5[1-9]|[6-9]\\\\d)))\\\\d{4}\",[8]],0,0,0,0,0,0,[\"30(?:0[01]\\\\d\\\\d|12(?:11|20))\\\\d\\\\d\",[8]]]],\"KM\":[\"269\",\"00\",\"[3478]\\\\d{6}\",[7],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[3478]\"]]],0,0,0,0,0,0,[[\"7[4-7]\\\\d{5}\"],[\"[34]\\\\d{6}\"],0,[\"8\\\\d{6}\"]]],\"KN\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-7]\\\\d{6})$|1\",\"869$1\",0,\"869\",[[\"869(?:2(?:29|36)|302|4(?:6[015-9]|70)|56[5-7])\\\\d{4}\"],[\"869(?:48[89]|55[6-8]|66\\\\d|76[02-7])\\\\d{4}\"],[\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\"],[\"900[2-9]\\\\d{6}\"],[\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-9]|3[23]|44|66|77|88)[2-9]\\\\d{6}\"]]],\"KP\":[\"850\",\"00|99\",\"85\\\\d{6}|(?:19\\\\d|[2-7])\\\\d{7}\",[8,10],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-7]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:(?:195|2)\\\\d|3[19]|4[159]|5[37]|6[17]|7[39]|85)\\\\d{6}\"],[\"19[1-3]\\\\d{7}\",[10]]]],\"KR\":[\"82\",\"00(?:[125689]|3(?:[46]5|91)|7(?:00|27|3|55|6[126]))\",\"00[1-9]\\\\d{8,11}|(?:[12]|5\\\\d{3})\\\\d{7}|[13-6]\\\\d{9}|(?:[1-6]\\\\d|80)\\\\d{7}|[3-6]\\\\d{4,5}|(?:00|7)0\\\\d{8}\",[5,6,8,9,10,11,12,13,14],[[\"(\\\\d{2})(\\\\d{3,4})\",\"$1-$2\",[\"(?:3[1-3]|[46][1-4]|5[1-5])1\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"1\"]],[\"(\\\\d)(\\\\d{3,4})(\\\\d{4})\",\"$1-$2-$3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[36]0|8\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1-$2-$3\",[\"[1346]|5[1-5]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"[57]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{5})(\\\\d{4})\",\"$1-$2-$3\",[\"5\"],\"0$1\"]],\"0\",0,\"0(8(?:[1-46-8]|5\\\\d\\\\d))?\",0,0,0,[[\"(?:2|3[1-3]|[46][1-4]|5[1-5])[1-9]\\\\d{6,7}|(?:3[1-3]|[46][1-4]|5[1-5])1\\\\d{2,3}\",[5,6,8,9,10]],[\"1(?:05(?:[0-8]\\\\d|9[0-6])|22[13]\\\\d)\\\\d{4,5}|1(?:0[0-46-9]|[16-9]\\\\d|2[013-9])\\\\d{6,7}\",[9,10]],[\"00(?:308\\\\d{6,7}|798\\\\d{7,9})|(?:00368|[38]0)\\\\d{7}\",[9,11,12,13,14]],[\"60[2-9]\\\\d{6}\",[9]],[\"50\\\\d{8,9}\",[10,11]],0,[\"1(?:5(?:22|33|44|66|77|88|99)|6(?:[07]0|44|6[0168]|88)|8(?:00|33|55|77|99))\\\\d{4}\",[8]],[\"15\\\\d{7,8}\",[9,10]],[\"70\\\\d{8}\",[10]]]],\"KW\":[\"965\",\"00\",\"18\\\\d{5}|(?:[2569]\\\\d|41)\\\\d{6}\",[7,8],[[\"(\\\\d{4})(\\\\d{3,4})\",\"$1 $2\",[\"[169]|2(?:[235]|4[1-35-9])|52\"]],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[245]\"]]],0,0,0,0,0,0,[[\"2(?:[23]\\\\d\\\\d|4(?:[1-35-9]\\\\d|44)|5(?:0[034]|[2-46]\\\\d|5[1-3]|7[1-7]))\\\\d{4}\",[8]],[\"(?:41\\\\d\\\\d|5(?:(?:[05]\\\\d|1[0-7]|6[56])\\\\d|2(?:22|5[25])|7(?:55|77)|88[58])|6(?:(?:0[034679]|5[015-9]|6\\\\d)\\\\d|1(?:00|11|6[16])|2[26]2|3[36]3|4[46]4|7(?:0[013-9]|[67]\\\\d)|8[68]8|9(?:[069]\\\\d|3[039]))|9(?:(?:[04679]\\\\d|8[057-9])\\\\d|1(?:00|1[01]|99)|2(?:00|2\\\\d)|3(?:00|3[03])|5(?:00|5\\\\d)))\\\\d{4}\",[8]],[\"18\\\\d{5}\",[7]]]],\"KY\":[\"1\",\"011\",\"(?:345|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-9]\\\\d{6})$|1\",\"345$1\",0,\"345\",[[\"345(?:2(?:22|3[23]|44|66)|333|444|6(?:23|38|40)|7(?:30|4[35-79]|6[6-9]|77)|8(?:00|1[45]|4[89]|88)|9(?:14|4[035-9]))\\\\d{4}\"],[\"345(?:32[1-9]|42[0-4]|5(?:1[67]|2[5-79]|4[6-9]|50|76)|649|82[56]|9(?:1[679]|2[2-9]|3[06-9]|90))\\\\d{4}\"],[\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\"],[\"(?:345976|900[2-9]\\\\d\\\\d)\\\\d{4}\"],[\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-9]|3[23]|44|66|77|88)[2-9]\\\\d{6}\"]]],\"KZ\":[\"7\",\"810\",\"8\\\\d{13}|[78]\\\\d{9}\",[10,14],0,\"8\",0,0,0,0,\"7\",[[\"7(?:1(?:0(?:[23]\\\\d|4[0-3]|59|63)|1(?:[23]\\\\d|4[0-79]|59)|2(?:[23]\\\\d|59)|3(?:2\\\\d|3[0-79]|4[0-35-9]|59)|4(?:[24]\\\\d|3[013-9]|5[1-9]|97)|5(?:2\\\\d|3[1-9]|4[0-7]|59)|6(?:[2-4]\\\\d|5[19]|61)|72\\\\d|8(?:[27]\\\\d|3[1-46-9]|4[0-5]|59))|2(?:1(?:[23]\\\\d|4[46-9]|5[3469])|2(?:2\\\\d|3[0679]|46|5[12679])|3(?:[2-4]\\\\d|5[139])|4(?:2\\\\d|3[1-35-9]|59)|5(?:[23]\\\\d|4[0-8]|59|61)|6(?:2\\\\d|3[1-9]|4[0-4]|59)|7(?:[2379]\\\\d|40|5[279])|8(?:[23]\\\\d|4[0-3]|59)|9(?:2\\\\d|3[124578]|59)))\\\\d{5}\",[10]],[\"7(?:0[0-25-8]|47|6[0-4]|7[15-8]|85)\\\\d{7}\",[10]],[\"8(?:00|108\\\\d{3})\\\\d{7}\"],[\"809\\\\d{7}\",[10]],[\"808\\\\d{7}\",[10]],0,0,0,[\"751\\\\d{7}\",[10]]],\"8~10\"],\"LA\":[\"856\",\"00\",\"[23]\\\\d{9}|3\\\\d{8}|(?:[235-8]\\\\d|41)\\\\d{6}\",[8,9,10],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2[13]|3[14]|[4-8]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"3\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"[23]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:2[13]|[35-7][14]|41|8[1468])\\\\d{6}\",[8]],[\"(?:20(?:[23579]\\\\d|8[78])|30[24]\\\\d)\\\\d{6}|30\\\\d{7}\",[9,10]]]],\"LB\":[\"961\",\"00\",\"[27-9]\\\\d{7}|[13-9]\\\\d{6}\",[7,8],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[13-69]|7(?:[2-57]|62|8[0-6]|9[04-9])|8[02-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[27-9]\"]]],\"0\",0,0,0,0,0,[[\"7(?:62|8[0-6]|9[04-9])\\\\d{4}|(?:[14-69]\\\\d|2(?:[14-69]\\\\d|[78][1-9])|7[2-57]|8[02-9])\\\\d{5}\"],[\"(?:(?:3|81)\\\\d|7(?:[01]\\\\d|6[013-9]|8[7-9]|9[0-4]))\\\\d{5}\"],0,[\"9[01]\\\\d{6}\",[8]],0,0,0,0,0,[\"80\\\\d{6}\",[8]]]],\"LC\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|758|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-8]\\\\d{6})$|1\",\"758$1\",0,\"758\",[[\"758(?:234|4(?:30|5\\\\d|6[2-9]|8[0-2])|57[0-2]|(?:63|75)8)\\\\d{4}\"],[\"758(?:28[4-7]|384|4(?:6[01]|8[4-9])|5(?:1[89]|20|84)|7(?:1[2-9]|2\\\\d|3[0-3])|812)\\\\d{4}\"],[\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\"],[\"900[2-9]\\\\d{6}\"],[\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-9]|3[23]|44|66|77|88)[2-9]\\\\d{6}\"]]],\"LI\":[\"423\",\"00\",\"[68]\\\\d{8}|(?:[2378]\\\\d|90)\\\\d{5}\",[7,9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[2379]|8(?:0[09]|7)\",\"[2379]|8(?:0(?:02|9)|7)\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"69\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6\"]]],\"0\",0,\"(1001)|0\",0,0,0,[[\"(?:2(?:01|1[27]|2[024]|3\\\\d|6[02-578]|96)|3(?:[24]0|33|7[0135-7]|8[048]|9[0269]))\\\\d{4}\",[7]],[\"(?:6(?:(?:4[5-9]|5\\\\d)\\\\d|6(?:[024-68]\\\\d|1[01]|3[7-9]|70))\\\\d|7(?:[37-9]\\\\d|42|56))\\\\d{4}\"],[\"8002[28]\\\\d\\\\d|80(?:05\\\\d|9)\\\\d{4}\"],[\"90(?:02[258]|1(?:23|3[14])|66[136])\\\\d\\\\d\",[7]],0,[\"697(?:42|56|[78]\\\\d)\\\\d{4}\",[9]],[\"870(?:28|87)\\\\d\\\\d\",[7]]]],\"LK\":[\"94\",\"00\",\"[1-9]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[1-689]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:12[2-9]|602|8[12]\\\\d|9(?:1\\\\d|22|9[245]))\\\\d{6}|(?:11|2[13-7]|3[1-8]|4[157]|5[12457]|6[35-7])[2-57]\\\\d{6}\"],[\"7(?:[0-25-8]\\\\d|4[0-4])\\\\d{6}\"],0,0,0,0,[\"1973\\\\d{5}\"]]],\"LR\":[\"231\",\"00\",\"(?:[2457]\\\\d|33|88)\\\\d{7}|(?:2\\\\d|[4-6])\\\\d{6}\",[7,8,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"4[67]|[56]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-578]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"2\\\\d{7}\",[8]],[\"(?:(?:(?:22|33)0|555|7(?:6[01]|7\\\\d)|88\\\\d)\\\\d|4(?:240|[67]))\\\\d{5}|[56]\\\\d{6}\",[7,9]],0,[\"332(?:02|[34]\\\\d)\\\\d{4}\",[9]]]],\"LS\":[\"266\",\"00\",\"(?:[256]\\\\d\\\\d|800)\\\\d{5}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2568]\"]]],0,0,0,0,0,0,[[\"2\\\\d{7}\"],[\"[56]\\\\d{7}\"],[\"800[1256]\\\\d{4}\"]]],\"LT\":[\"370\",\"00\",\"(?:[3469]\\\\d|52|[78]0)\\\\d{6}\",[8],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"52[0-7]\"],\"(0-$1)\",1],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[7-9]\"],\"0 $1\",1],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"37|4(?:[15]|6[1-8])\"],\"(0-$1)\",1],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[3-6]\"],\"(0-$1)\",1]],\"0\",0,\"[08]\",0,0,0,[[\"(?:3[1478]|4[124-6]|52)\\\\d{6}\"],[\"6\\\\d{7}\"],[\"80[02]\\\\d{5}\"],[\"9(?:0[0239]|10)\\\\d{5}\"],[\"70[05]\\\\d{5}\"],0,[\"70[67]\\\\d{5}\"],0,[\"[89]01\\\\d{5}\"],[\"808\\\\d{5}\"]]],\"LU\":[\"352\",\"00\",\"35[013-9]\\\\d{4,8}|6\\\\d{8}|35\\\\d{2,4}|(?:[2457-9]\\\\d|3[0-46-9])\\\\d{2,9}\",[4,5,6,7,8,9,10,11],[[\"(\\\\d{2})(\\\\d{3})\",\"$1 $2\",[\"2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"20[2-689]\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,2})\",\"$1 $2 $3 $4\",[\"20\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,5})\",\"$1 $2 $3 $4\",[\"[3-57]|8[13-9]|9(?:0[89]|[2-579])|(?:2|80)[2-9]\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"80[01]|90[015]\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"20\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,2})\",\"$1 $2 $3 $4 $5\",[\"20\"]]],0,0,\"(15(?:0[06]|1[12]|[35]5|4[04]|6[26]|77|88|99)\\\\d)\",0,0,0,[[\"(?:35[013-9]|80[2-9]|90[89])\\\\d{1,8}|(?:2[2-9]|3[0-46-9]|[457]\\\\d|8[13-9]|9[2-579])\\\\d{2,9}\"],[\"6(?:[26][18]|5[1568]|7[189]|81|9[128])\\\\d{6}\",[9]],[\"800\\\\d{5}\",[8]],[\"90[015]\\\\d{5}\",[8]],0,0,0,0,[\"20(?:1\\\\d{5}|[2-689]\\\\d{1,7})\",[4,5,6,7,8,9,10]],[\"801\\\\d{5}\",[8]]]],\"LV\":[\"371\",\"00\",\"(?:[268]\\\\d|78|90)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2679]|8[01]\"]]],0,0,0,0,0,0,[[\"6\\\\d{7}\"],[\"2333[0-8]\\\\d{3}|2(?:[0-24-9]\\\\d\\\\d|3(?:0[07]|[14-9]\\\\d|2[02-9]|3[0-24-9]))\\\\d{4}\"],[\"80\\\\d{6}\"],[\"90\\\\d{6}\"],0,0,0,0,0,[\"81\\\\d{6}\"]]],\"LY\":[\"218\",\"00\",\"[2-9]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{7})\",\"$1-$2\",[\"[2-9]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:2(?:0[56]|[1-6]\\\\d|7[124579]|8[124])|3(?:1\\\\d|2[2356])|4(?:[17]\\\\d|2[1-357]|5[2-4]|8[124])|5(?:[1347]\\\\d|2[1-469]|5[13-5]|8[1-4])|6(?:[1-479]\\\\d|5[2-57]|8[1-5])|7(?:[13]\\\\d|2[13-79])|8(?:[124]\\\\d|5[124]|84))\\\\d{6}\"],[\"9[1-6]\\\\d{7}\"]]],\"MA\":[\"212\",\"00\",\"[5-8]\\\\d{8}\",[9],[[\"(\\\\d{4})(\\\\d{5})\",\"$1-$2\",[\"892\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1-$2\",[\"8(?:0[0-7]|9)\"],\"0$1\"],[\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"[5-8]\"],\"0$1\"]],\"0\",0,0,0,0,\"[5-8]\",[[\"5(?:(?:18|4[0679]|5[03])\\\\d|2(?:[0-25-79]\\\\d|3[1-578]|4[02-46-8]|8[0235-9])|3(?:[0-47]\\\\d|5[02-9]|6[02-8]|8[014-9]|9[3-9]))\\\\d{5}\"],[\"(?:6(?:[0-79]\\\\d|8[0-247-9])|7(?:[016-8]\\\\d|2[0-8]|5[0-5]))\\\\d{6}\"],[\"80[0-7]\\\\d{6}\"],[\"89\\\\d{7}\"],0,0,0,0,[\"(?:592(?:4[0-2]|93)|80[89]\\\\d\\\\d)\\\\d{4}\"]]],\"MC\":[\"377\",\"00\",\"(?:[3489]|[67]\\\\d)\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"4\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[389]\"]],[\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"[67]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:870|9[2-47-9]\\\\d)\\\\d{5}\",[8]],[\"4(?:[469]\\\\d|5[1-9])\\\\d{5}|(?:3|[67]\\\\d)\\\\d{7}\"],[\"(?:800|90\\\\d)\\\\d{5}\",[8]]]],\"MD\":[\"373\",\"00\",\"(?:[235-7]\\\\d|[89]0)\\\\d{6}\",[8],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"22|3\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[25-7]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:(?:2[1-9]|3[1-79])\\\\d|5(?:33|5[257]))\\\\d{5}\"],[\"562\\\\d{5}|(?:6\\\\d|7[16-9])\\\\d{6}\"],[\"800\\\\d{5}\"],[\"90[056]\\\\d{5}\"],0,0,[\"803\\\\d{5}\"],0,[\"3[08]\\\\d{6}\"],[\"808\\\\d{5}\"]]],\"ME\":[\"382\",\"00\",\"(?:20|[3-79]\\\\d)\\\\d{6}|80\\\\d{6,7}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-9]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:20[2-8]|3(?:[0-2][2-7]|3[24-7])|4(?:0[2-467]|1[2467])|5(?:0[2467]|1[24-7]|2[2-467]))\\\\d{5}\",[8]],[\"6(?:[07-9]\\\\d|3[024]|6[0-25])\\\\d{5}\",[8]],[\"80(?:[0-2578]|9\\\\d)\\\\d{5}\"],[\"9(?:4[1568]|5[178])\\\\d{5}\",[8]],0,0,[\"77[1-9]\\\\d{5}\",[8]],0,[\"78[1-49]\\\\d{5}\",[8]]]],\"MF\":[\"590\",\"00\",\"(?:590\\\\d|7090)\\\\d{5}|(?:69|80|9\\\\d)\\\\d{7}\",[9],0,\"0\",0,0,0,0,0,[[\"590(?:0[079]|[14]3|[27][79]|3[03-7]|5[0-268]|87)\\\\d{4}\"],[\"(?:69(?:0\\\\d\\\\d|1(?:2[2-9]|3[0-5])|4(?:0[89]|1[2-6]|9\\\\d)|6(?:1[016-9]|5[0-4]|[67]\\\\d))|7090[0-4])\\\\d{4}\"],[\"80[0-5]\\\\d{6}\"],0,0,0,0,0,[\"9(?:(?:39[5-7]|76[018])\\\\d|475[0-6])\\\\d{4}\"]]],\"MG\":[\"261\",\"00\",\"[23]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[23]\"],\"0$1\"]],\"0\",0,\"([24-9]\\\\d{6})$|0\",\"20$1\",0,0,[[\"2072[29]\\\\d{4}|20(?:2\\\\d|4[47]|5[3467]|6[279]|7[356]|8[268]|9[2457])\\\\d{5}\"],[\"3[2-9]\\\\d{7}\"],0,0,0,0,0,0,[\"22\\\\d{7}\"]]],\"MH\":[\"692\",\"011\",\"329\\\\d{4}|(?:[256]\\\\d|45)\\\\d{5}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[2-6]\"]]],\"1\",0,0,0,0,0,[[\"(?:247|528|625)\\\\d{4}\"],[\"(?:(?:23|54)5|329|45[35-8])\\\\d{4}\"],0,0,0,0,0,0,[\"635\\\\d{4}\"]]],\"MK\":[\"389\",\"00\",\"[2-578]\\\\d{7}\",[8],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2|34[47]|4(?:[37]7|5[47]|64)\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[347]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[58]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:(?:2(?:62|77)0|3444)\\\\d|4[56]440)\\\\d{3}|(?:34|4[357])700\\\\d{3}|(?:2(?:[0-3]\\\\d|5[0-578]|6[01]|82)|3(?:1[3-68]|[23][2-68]|4[23568])|4(?:[23][2-68]|4[3-68]|5[2568]|6[25-8]|7[24-68]|8[4-68]))\\\\d{5}\"],[\"7(?:3555|(?:474|9[019]7)7)\\\\d{3}|7(?:[0-25-8]\\\\d\\\\d|3(?:[1-478]\\\\d|6[01])|4(?:2\\\\d|60|7[01578])|9(?:[2-4]\\\\d|5[01]|7[015]))\\\\d{4}\"],[\"800\\\\d{5}\"],[\"5\\\\d{7}\"],0,0,0,0,0,[\"8(?:0[1-9]|[1-9]\\\\d)\\\\d{5}\"]]],\"ML\":[\"223\",\"00\",\"[24-9]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[24-9]\"]]],0,0,0,0,0,0,[[\"2(?:07[0-8]|12[67])\\\\d{4}|(?:2(?:02|1[4-689])|4(?:0[0-4]|4[1-59]))\\\\d{5}\"],[\"2(?:0(?:01|79)|17\\\\d)\\\\d{4}|(?:5[0-3]|[679]\\\\d|8[2-59])\\\\d{6}\"],[\"80\\\\d{6}\"]]],\"MM\":[\"95\",\"00\",\"1\\\\d{5,7}|95\\\\d{6}|(?:[4-7]|9[0-46-9])\\\\d{6,8}|(?:2|8\\\\d)\\\\d{5,8}\",[6,7,8,9,10],[[\"(\\\\d)(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"16|2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"4(?:[2-46]|5[3-5])|5|6(?:[1-689]|7[235-7])|7(?:[0-4]|5[2-7])|8[1-5]|(?:60|86)[23]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[12]|452|678|86\",\"[12]|452|6788|86\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[4-7]|8[1-35]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{4,6})\",\"$1 $2 $3\",[\"9(?:2[0-4]|[35-9]|4[137-9])\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"92\"],\"0$1\"],[\"(\\\\d)(\\\\d{5})(\\\\d{4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:1(?:(?:12|[28]\\\\d|3[56]|7[3-6]|9[0-6])\\\\d|4(?:2[29]|7[0-2]|83)|6)|2(?:2(?:00|8[34])|4(?:0\\\\d|22|7[0-2]|83)|51\\\\d\\\\d)|4(?:2(?:2\\\\d\\\\d|48[013])|3(?:20\\\\d|4(?:70|83)|56)|420\\\\d|5(?:2\\\\d|470))|6(?:0(?:[23]|88\\\\d)|(?:124|[56]2\\\\d)\\\\d|2472|3(?:20\\\\d|470)|4(?:2[04]\\\\d|472)|7(?:3\\\\d\\\\d|4[67]0|8(?:[01459]\\\\d|8))))\\\\d{4}|5(?:2(?:2\\\\d{5,6}|47[02]\\\\d{4})|(?:3472|4(?:2(?:1|86)|470)|522\\\\d|6(?:20\\\\d|483)|7(?:20\\\\d|48[01])|8(?:20\\\\d|47[02])|9(?:20\\\\d|470))\\\\d{4})|7(?:(?:0470|4(?:25\\\\d|470)|5(?:202|470|96\\\\d))\\\\d{4}|1(?:20\\\\d{4,5}|4(?:70|83)\\\\d{4}))|8(?:1(?:2\\\\d{5,6}|4(?:10|7[01]\\\\d)\\\\d{3})|2(?:2\\\\d{5,6}|(?:320|490\\\\d)\\\\d{3})|(?:3(?:2\\\\d\\\\d|470)|4[24-7]|5(?:(?:2\\\\d|51)\\\\d|4(?:[1-35-9]\\\\d|4[0-57-9]))|6[23])\\\\d{4})|(?:1[2-6]\\\\d|4(?:2[24-8]|3[2-7]|[46][2-6]|5[3-5])|5(?:[27][2-8]|3[2-68]|4[24-8]|5[23]|6[2-4]|8[24-7]|9[2-7])|6(?:[19]20|42[03-6]|(?:52|7[45])\\\\d)|7(?:[04][24-8]|[15][2-7]|22|3[2-4])|8(?:1[2-689]|2[2-8]|(?:[35]2|64)\\\\d))\\\\d{4}|25\\\\d{5,6}|(?:2[2-9]|6(?:1[2356]|[24][2-6]|3[24-6]|5[2-4]|6[2-8]|7[235-7]|8[245]|9[24])|8(?:3[24]|5[245]))\\\\d{4}\",[6,7,8,9]],[\"(?:17[01]|9(?:2(?:[0-4]|[56]\\\\d\\\\d)|(?:3(?:[0-36]|4\\\\d)|(?:6\\\\d|8[89]|9[4-8])\\\\d|7(?:3|40|[5-9]\\\\d))\\\\d|4(?:(?:[0245]\\\\d|[1379])\\\\d|88)|5[0-6])\\\\d)\\\\d{4}|9[69]1\\\\d{6}|9(?:[68]\\\\d|9[089])\\\\d{5}\",[7,8,9,10]],[\"80080(?:0[1-9]|2\\\\d)\\\\d{3}\",[10]],0,0,0,0,0,[\"1333\\\\d{4}\",[8]]]],\"MN\":[\"976\",\"001\",\"[12]\\\\d{7,9}|[5-9]\\\\d{7}\",[8,9,10],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[12]1\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[5-9]\"]],[\"(\\\\d{3})(\\\\d{5,6})\",\"$1 $2\",[\"[12]2[1-3]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5,6})\",\"$1 $2\",[\"[12](?:27|3[2-8]|4[2-68]|5[1-4689])\",\"[12](?:27|3[2-8]|4[2-68]|5[1-4689])[0-3]\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{4,5})\",\"$1 $2\",[\"[12]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"[12]2[1-3]\\\\d{5,6}|(?:(?:[12](?:1|27)|5[368])\\\\d\\\\d|7(?:0(?:[0-5]\\\\d|7[078]|80)|128))\\\\d{4}|[12](?:3[2-8]|4[2-68]|5[1-4689])\\\\d{6,7}\"],[\"92[0139]\\\\d{5}|(?:5[05]|6[069]|7[28]|8[0135689]|9[013-9])\\\\d{6}\",[8]],0,0,0,0,0,0,[\"712[0-79]\\\\d{4}|7(?:1[013-9]|[5-79]\\\\d)\\\\d{5}\",[8]]]],\"MO\":[\"853\",\"00\",\"0800\\\\d{3}|(?:28|[68]\\\\d)\\\\d{6}\",[7,8],[[\"(\\\\d{4})(\\\\d{3})\",\"$1 $2\",[\"0\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[268]\"]]],0,0,0,0,0,0,[[\"(?:28[2-9]|8(?:11|[2-57-9]\\\\d))\\\\d{5}\",[8]],[\"6800[0-79]\\\\d{3}|6(?:[235]\\\\d\\\\d|6(?:0[0-5]|[1-9]\\\\d)|8(?:0[1-9]|[14-8]\\\\d|2[5-9]|[39][0-4]))\\\\d{4}\",[8]],[\"0800\\\\d{3}\",[7]]]],\"MP\":[\"1\",\"011\",\"[58]\\\\d{9}|(?:67|90)0\\\\d{7}\",[10],0,\"1\",0,\"([2-9]\\\\d{6})$|1\",\"670$1\",0,\"670\",[[\"670(?:2(?:3[3-7]|56|8[4-8])|32[1-38]|4(?:33|8[348])|5(?:32|55|88)|6(?:64|70|82)|78[3589]|8[3-9]8|989)\\\\d{4}\"],[\"\"],[\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\"],[\"900[2-9]\\\\d{6}\"],[\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-9]|3[23]|44|66|77|88)[2-9]\\\\d{6}\"]]],\"MQ\":[\"596\",\"00\",\"(?:596\\\\d|7091)\\\\d{5}|(?:69|[89]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-79]|8(?:0[6-9]|[36])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:596(?:[03-7]\\\\d|1[05]|2[7-9]|8[0-39]|9[04-9])|80[6-9]\\\\d\\\\d|9(?:477[6-9]|767[4589]))\\\\d{4}\"],[\"(?:69[67]\\\\d\\\\d|7091[0-3])\\\\d{4}\"],[\"80[0-5]\\\\d{6}\"],[\"8[129]\\\\d{7}\"],0,0,0,0,[\"9(?:397[0-3]|477[0-5]|76(?:6\\\\d|7[0-367]))\\\\d{4}\"]]],\"MR\":[\"222\",\"00\",\"(?:[2-4]\\\\d\\\\d|800)\\\\d{5}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-48]\"]]],0,0,0,0,0,0,[[\"(?:25[08]|35\\\\d|45[1-7])\\\\d{5}\"],[\"[2-4][0-46-9]\\\\d{6}\"],[\"800\\\\d{5}\"]]],\"MS\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|664|900)\\\\d{7}\",[10],0,\"1\",0,\"([34]\\\\d{6})$|1\",\"664$1\",0,\"664\",[[\"6644(?:1[0-3]|91)\\\\d{4}\"],[\"664(?:3(?:49|9[1-6])|49[2-6])\\\\d{4}\"],[\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\"],[\"900[2-9]\\\\d{6}\"],[\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-9]|3[23]|44|66|77|88)[2-9]\\\\d{6}\"]]],\"MT\":[\"356\",\"00\",\"3550\\\\d{4}|(?:[2579]\\\\d\\\\d|800)\\\\d{5}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2357-9]\"]]],0,0,0,0,0,0,[[\"20(?:3[1-4]|6[059])\\\\d{4}|2(?:0[19]|[1-357]\\\\d|60)\\\\d{5}\"],[\"(?:7(?:210|[79]\\\\d\\\\d)|9(?:[29]\\\\d\\\\d|69[67]|8(?:1[1-3]|89|97)))\\\\d{4}\"],[\"800(?:02|[3467]\\\\d)\\\\d{3}\"],[\"5(?:0(?:0(?:37|43)|(?:6\\\\d|70|9[0168])\\\\d)|[12]\\\\d0[1-5])\\\\d{3}\"],0,0,[\"501\\\\d{5}\"],[\"7117\\\\d{4}\"],[\"3550\\\\d{4}\"]]],\"MU\":[\"230\",\"0(?:0|[24-7]0|3[03])\",\"(?:[57]|8\\\\d\\\\d)\\\\d{7}|[2-468]\\\\d{6}\",[7,8,10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-46]|8[013]\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[57]\"]],[\"(\\\\d{5})(\\\\d{5})\",\"$1 $2\",[\"8\"]]],0,0,0,0,0,0,[[\"(?:2(?:[0346-8]\\\\d|1[0-8])|4(?:[013568]\\\\d|2[0-24-8]|71|90)|54(?:[3-5]\\\\d|71)|6\\\\d\\\\d|8(?:14|3[129]))\\\\d{4}\",[7,8]],[\"5(?:4(?:2[1-389]|7[1-9])|87[15-8])\\\\d{4}|(?:5(?:2[5-9]|4[3-689]|[57]\\\\d|8[0-689]|9[0-8])|7(?:0[0-7]|3[013]))\\\\d{5}\",[8]],[\"802\\\\d{7}|80[0-2]\\\\d{4}\",[7,10]],[\"30\\\\d{5}\",[7]],0,0,0,[\"219\\\\d{4}\",[7]],[\"3(?:20|9\\\\d)\\\\d{4}\",[7]]],\"020\"],\"MV\":[\"960\",\"0(?:0|19)\",\"(?:800|9[0-57-9]\\\\d)\\\\d{7}|[34679]\\\\d{6}\",[7,10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[34679]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"]]],0,0,0,0,0,0,[[\"(?:3(?:0[0-4]|3[0-59])|6(?:[58][024689]|6[024-68]|7[02468]))\\\\d{4}\",[7]],[\"(?:46[46]|[79]\\\\d\\\\d)\\\\d{4}\",[7]],[\"800\\\\d{7}\",[10]],[\"900\\\\d{7}\",[10]],0,0,[\"4(?:0[01]|50)\\\\d{4}\",[7]]],\"00\"],\"MW\":[\"265\",\"00\",\"(?:[1289]\\\\d|31|77)\\\\d{7}|1\\\\d{6}\",[7,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1[2-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[137-9]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:1[2-9]|2[12]\\\\d\\\\d)\\\\d{5}\"],[\"111\\\\d{6}|(?:31|77|[89][89])\\\\d{7}\",[9]]]],\"MX\":[\"52\",\"0[09]\",\"[2-9]\\\\d{9}\",[10],[[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"33|5[56]|81\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-9]\"]]],0,0,0,0,0,0,[[\"(?:2(?:0[01]|2\\\\d|3[1-35-8]|4[13-9]|7[1-689]|8[1-578]|9[467])|3(?:1[1-79]|[2458][1-9]|3\\\\d|7[1-8]|9[1-5])|4(?:1[1-57-9]|[267][1-9]|3[1-8]|[45]\\\\d|8[1-35-9]|9[2-689])|5(?:[56]\\\\d|88|9[1-79])|6(?:1[2-68]|[2-4][1-9]|5[1-36-9]|6[0-57-9]|7[1-7]|8[67]|9[4-8])|7(?:[1346][1-9]|[27]\\\\d|5[13-9]|8[1-69]|9[17])|8(?:1\\\\d|2[13-689]|3[1-6]|4[124-6]|6[1246-9]|7[0-378]|9[12479])|9(?:1[346-9]|2[1-4]|3[2-46-8]|5[1348]|[69]\\\\d|7[12]|8[1-8]))\\\\d{7}\"],[\"(?:2(?:2\\\\d|3[1-35-8]|4[13-9]|7[1-689]|8[1-578]|9[467])|3(?:1[1-79]|[2458][1-9]|3\\\\d|7[1-8]|9[1-5])|4(?:1[1-57-9]|[267][1-9]|3[1-8]|[45]\\\\d|8[1-35-9]|9[2-689])|5(?:[56]\\\\d|88|9[1-79])|6(?:1[2-68]|[2-4][1-9]|5[1-36-9]|6[0-57-9]|7[1-7]|8[67]|9[4-8])|7(?:[1346][1-9]|[27]\\\\d|5[13-9]|8[1-69]|9[17])|8(?:1\\\\d|2[13-689]|3[1-6]|4[124-6]|6[1246-9]|7[0-378]|9[12479])|9(?:1[346-9]|2[1-4]|3[2-46-8]|5[1348]|[69]\\\\d|7[12]|8[1-8]))\\\\d{7}\"],[\"8(?:00|88)\\\\d{7}\"],[\"900\\\\d{7}\"],[\"500\\\\d{7}\"],0,0,0,0,[\"300\\\\d{7}\"]],\"00\"],\"MY\":[\"60\",\"00\",\"1\\\\d{8,9}|(?:3\\\\d|[4-9])\\\\d{7}\",[8,9,10],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1-$2 $3\",[\"[4-79]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1-$2 $3\",[\"1(?:[02469]|[378][1-9]|53)|8\",\"1(?:[02469]|[37][1-9]|53|8(?:[1-46-9]|5[7-9]))|8\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1-$2 $3\",[\"3\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1-$2-$3-$4\",[\"1(?:[367]|80)\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2 $3\",[\"15\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1-$2 $3\",[\"1\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"427[01]\\\\d{4}|(?:3(?:2[0-36-9]|3[0-368]|4[0-278]|5[0-24-8]|6[0-467]|7[1246-9]|8\\\\d|9[0-57])\\\\d|4(?:2[0-689]|[3-79]\\\\d|8[1-35689])|5(?:2[0-589]|[3468]\\\\d|5[0-489]|7[1-9]|9[23])|6(?:2[2-9]|3[1357-9]|[46]\\\\d|5[0-6]|7[0-35-9]|85|9[015-8])|7(?:[2579]\\\\d|3[03-68]|4[0-8]|6[5-9]|8[0-35-9])|8(?:[24][2-8]|3[2-5]|5[2-7]|6[2-589]|7[2-578]|[89][2-9])|9(?:0[57]|13|[25-7]\\\\d|[3489][0-8]))\\\\d{5}\",[8,9]],[\"1(?:1888[689]|4400|8(?:47|8[27])[0-4])\\\\d{4}|1(?:0(?:[23568]\\\\d|4[0-6]|7[016-9]|9[0-8])|1(?:[1-5]\\\\d\\\\d|6(?:0[5-9]|[1-9]\\\\d)|7(?:[0-4]\\\\d|5[0-79]|6[02-4]))|(?:[269]\\\\d|[37][1-9]|4[235-9])\\\\d|5(?:31|9\\\\d\\\\d)|8(?:1[23]|[236]\\\\d|4[06]|5(?:46|[7-9])|7[016-9]|8[01]|9[0-8]))\\\\d{5}\",[9,10]],[\"1[378]00\\\\d{6}\",[10]],[\"1600\\\\d{6}\",[10]],0,0,0,0,[\"15(?:4(?:6[0-4]\\\\d|8(?:0[125]|[17]\\\\d|21|3[01]|4[01589]|5[014]|6[02]))|6(?:32[0-6]|78\\\\d))\\\\d{4}\",[10]]]],\"MZ\":[\"258\",\"00\",\"(?:2|8\\\\d)\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2|8[2-79]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]]],0,0,0,0,0,0,[[\"2(?:[1346]\\\\d|5[0-2]|[78][12]|93)\\\\d{5}\",[8]],[\"8[2-79]\\\\d{7}\",[9]],[\"800\\\\d{6}\",[9]]]],\"NA\":[\"264\",\"00\",\"[68]\\\\d{7,8}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"88\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"6\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"87\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"64426\\\\d{3}|6(?:1(?:2[2-7]|3[01378]|4[0-4])|254|32[0237]|4(?:27|41|5[25])|52[236-8]|626|7(?:2[2-4]|30))\\\\d{4,5}|6(?:1(?:(?:0\\\\d|2[0189]|3[24-69]|4[5-9])\\\\d|17|69|7[014])|2(?:17|5[0-36-8]|69|70)|3(?:17|2[14-689]|34|6[289]|7[01]|81)|4(?:17|2[0-2]|4[06]|5[0137]|69|7[01])|5(?:17|2[0459]|69|7[01])|6(?:17|25|38|42|69|7[01])|7(?:17|2[569]|3[13]|6[89]|7[01]))\\\\d{4}\"],[\"(?:60|8[1245])\\\\d{7}\",[9]],[\"80\\\\d{7}\",[9]],[\"8701\\\\d{5}\",[9]],0,0,0,0,[\"8(?:3\\\\d\\\\d|86)\\\\d{5}\"]]],\"NC\":[\"687\",\"00\",\"(?:050|[2-57-9]\\\\d\\\\d)\\\\d{3}\",[6],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1.$2.$3\",[\"[02-57-9]\"]]],0,0,0,0,0,0,[[\"(?:2[03-9]|3[0-5]|4[1-7]|88)\\\\d{4}\"],[\"(?:[579]\\\\d|8[0-79])\\\\d{4}\"],[\"050\\\\d{3}\"],[\"36\\\\d{4}\"]]],\"NE\":[\"227\",\"00\",\"[027-9]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"08\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[089]|2[013]|7[0467]\"]]],0,0,0,0,0,0,[[\"2(?:0(?:20|3[1-8]|4[13-5]|5[14]|6[14578]|7[1-578])|1(?:4[145]|5[14]|6[14-68]|7[169]|88))\\\\d{4}\"],[\"(?:23|7[0467]|[89]\\\\d)\\\\d{6}\"],[\"08\\\\d{6}\"],[\"09\\\\d{6}\"]]],\"NF\":[\"672\",\"00\",\"[13]\\\\d{5}\",[6],[[\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"1[0-3]\"]],[\"(\\\\d)(\\\\d{5})\",\"$1 $2\",[\"[13]\"]]],0,0,\"([0-258]\\\\d{4})$\",\"3$1\",0,0,[[\"(?:1(?:06|17|28|39)|3[0-2]\\\\d)\\\\d{3}\"],[\"(?:14|3[58])\\\\d{4}\"]]],\"NG\":[\"234\",\"009\",\"(?:20|9\\\\d)\\\\d{8}|[78]\\\\d{9,13}\",[10,11,12,13,14],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[7-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"20[129]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4,5})\",\"$1 $2 $3\",[\"[78]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5})(\\\\d{5,6})\",\"$1 $2 $3\",[\"[78]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"20(?:[1259]\\\\d|3[013-9]|4[1-8]|6[024-689]|7[1-79]|8[2-9])\\\\d{6}\",[10]],[\"(?:702[0-24-9]|819[01])\\\\d{6}|(?:7(?:0[13-9]|[12]\\\\d)|8(?:0[1-9]|1[0-8])|9(?:0[1-9]|1[1-6]))\\\\d{7}\",[10]],[\"800\\\\d{7,11}\"],0,0,0,[\"700\\\\d{7,11}\"]]],\"NI\":[\"505\",\"00\",\"(?:1800|[25-8]\\\\d{3})\\\\d{4}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[125-8]\"]]],0,0,0,0,0,0,[[\"2\\\\d{7}\"],[\"(?:5(?:5[0-7]|[78]\\\\d)|6(?:20|3[035]|4[045]|5[05]|77|8[1-9]|9[059])|(?:7[5-8]|8\\\\d)\\\\d)\\\\d{5}\"],[\"1800\\\\d{4}\"]]],\"NL\":[\"31\",\"00\",\"(?:[124-7]\\\\d\\\\d|3(?:[02-9]\\\\d|1[0-8]))\\\\d{6}|8\\\\d{6,9}|9\\\\d{6,10}|1\\\\d{4,5}\",[5,6,7,8,9,10,11],[[\"(\\\\d{3})(\\\\d{4,7})\",\"$1 $2\",[\"[89]0\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"66\"],\"0$1\"],[\"(\\\\d)(\\\\d{8})\",\"$1 $2\",[\"6\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1[16-8]|2[259]|3[124]|4[17-9]|5[124679]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-578]|91\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{5})\",\"$1 $2 $3\",[\"9\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:1(?:[035]\\\\d|1[13-578]|6[124-8]|7[24]|8[0-467])|2(?:[0346]\\\\d|2[2-46-9]|5[125]|9[479])|3(?:[03568]\\\\d|1[3-8]|2[01]|4[1-8])|4(?:[0356]\\\\d|1[1-368]|7[58]|8[15-8]|9[23579])|5(?:[0358]\\\\d|[19][1-9]|2[1-57-9]|4[13-8]|6[126]|7[0-3578])|7\\\\d\\\\d)\\\\d{6}\",[9]],[\"(?:6[1-58]|970\\\\d)\\\\d{7}\",[9,11]],[\"800\\\\d{4,7}\",[7,8,9,10]],[\"90[069]\\\\d{4,7}\",[7,8,9,10]],0,0,[\"140(?:1[035]|2[0346]|3[03568]|4[0356]|5[0358]|8[458])|(?:140(?:1[16-8]|2[259]|3[124]|4[17-9]|5[124679]|7)|8[478]\\\\d{6})\\\\d\",[5,6,9]],[\"66\\\\d{7}\",[9]],[\"(?:85|91)\\\\d{7}\",[9]]]],\"NO\":[\"47\",\"00\",\"(?:0|[2-9]\\\\d{3})\\\\d{4}\",[5,8],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-79]\"]]],0,0,0,0,0,\"[02-689]|7[0-8]\",[[\"(?:2[1-4]|3[1-3578]|5[1-35-7]|6[1-4679]|7[0-8])\\\\d{6}\",[8]],[\"(?:4[015-8]|9\\\\d)\\\\d{6}\",[8]],[\"80[01]\\\\d{5}\",[8]],[\"82[09]\\\\d{5}\",[8]],[\"880\\\\d{5}\",[8]],[\"81[23]\\\\d{5}\",[8]],[\"(?:0[235-9]|81(?:0(?:0[7-9]|1\\\\d)|5\\\\d\\\\d))\\\\d{3}\"],0,[\"85[0-5]\\\\d{5}\",[8]],[\"810(?:0[0-6]|[2-8]\\\\d)\\\\d{3}\",[8]]]],\"NP\":[\"977\",\"00\",\"(?:1\\\\d|9)\\\\d{9}|[1-9]\\\\d{7}\",[8,10,11],[[\"(\\\\d)(\\\\d{7})\",\"$1-$2\",[\"1[2-6]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1-$2\",[\"1[01]|[2-8]|9(?:[1-59]|[67][2-6])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{7})\",\"$1-$2\",[\"9\"]]],\"0\",0,0,0,0,0,[[\"(?:1[0-6]\\\\d|99[02-6])\\\\d{5}|(?:2[13-79]|3[135-8]|4[146-9]|5[135-7]|6[13-9]|7[15-9]|8[1-46-9]|9[1-7])[2-6]\\\\d{5}\",[8]],[\"9(?:00|6[0-3]|7[0-24-6]|8[0-24-68])\\\\d{7}\",[10]],[\"1(?:66001|800\\\\d\\\\d)\\\\d{5}\",[11]]]],\"NR\":[\"674\",\"00\",\"(?:222|444|(?:55|8\\\\d)\\\\d|666|777|999)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[24-9]\"]]],0,0,0,0,0,0,[[\"444\\\\d{4}\"],[\"(?:222|55[3-9]|666|777|8\\\\d\\\\d|999)\\\\d{4}\"]]],\"NU\":[\"683\",\"00\",\"(?:[4-7]|888\\\\d)\\\\d{3}\",[4,7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"8\"]]],0,0,0,0,0,0,[[\"[47]\\\\d{3}\",[4]],[\"(?:[56]|888[1-9])\\\\d{3}\"]]],\"NZ\":[\"64\",\"0(?:0|161)\",\"[1289]\\\\d{9}|50\\\\d{5}(?:\\\\d{2,3})?|[27-9]\\\\d{7,8}|(?:[34]\\\\d|6[0-35-9])\\\\d{6}|8\\\\d{4,6}\",[5,6,7,8,9,10],[[\"(\\\\d{2})(\\\\d{3,8})\",\"$1 $2\",[\"8[1-79]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"50[036-8]|8|90\",\"50(?:[0367]|88)|8|90\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"24|[346]|7[2-57-9]|9[2-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2(?:10|74)|[589]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"1|2[028]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,5})\",\"$1 $2 $3\",[\"2(?:[169]|7[0-35-9])|7\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"240\\\\d{5}|(?:3[2-79]|[49][2-9]|6[235-9]|7[2-57-9])\\\\d{6}\",[8]],[\"2(?:[0-27-9]\\\\d|6)\\\\d{6,7}|2(?:1\\\\d|75)\\\\d{5}\",[8,9,10]],[\"508\\\\d{6,7}|80\\\\d{6,8}\",[8,9,10]],[\"(?:1[13-57-9]\\\\d{5}|50(?:0[08]|30|66|77|88))\\\\d{3}|90\\\\d{6,8}\",[7,8,9,10]],[\"70\\\\d{7}\",[9]],0,[\"8(?:1[16-9]|22|3\\\\d|4[045]|5[459]|6[235-9]|7[0-3579]|90)\\\\d{2,7}\"]],\"00\"],\"OM\":[\"968\",\"00\",\"(?:1505|[279]\\\\d{3}|500)\\\\d{4}|800\\\\d{5,6}\",[7,8,9],[[\"(\\\\d{3})(\\\\d{4,6})\",\"$1 $2\",[\"[58]\"]],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"2\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[179]\"]]],0,0,0,0,0,0,[[\"2[1-6]\\\\d{6}\",[8]],[\"(?:1505|90[1-9]\\\\d)\\\\d{4}|(?:7[124-9]|9[1-9])\\\\d{6}\",[8]],[\"8007\\\\d{4,5}|(?:500|800[05])\\\\d{4}\"],[\"900\\\\d{5}\",[8]]]],\"PA\":[\"507\",\"00\",\"(?:00800|8\\\\d{3})\\\\d{6}|[68]\\\\d{7}|[1-57-9]\\\\d{6}\",[7,8,10,11],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[1-57-9]\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"[68]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]]],0,0,0,0,0,0,[[\"(?:1(?:0\\\\d|1[0479]|2[37]|3[0137]|4[147]|5[05]|6[058]|7[0167]|8[2358]|9[1389])|2(?:[0235-79]\\\\d|1[0-7]|4[013-9]|8[02-9])|3(?:[0147-9]\\\\d|[25][0-5]|33|6[068])|4(?:00|3[0-579]|4\\\\d|7[0-57-9])|5(?:[01]\\\\d|2[0-7]|[56]0|79)|7(?:0[09]|2[0-26-8]|3[03]|4[04]|5[05-9]|6[0156]|7[0-24-9]|8[4-9]|90)|8(?:09|2[89]|3\\\\d|4[0-24-689]|5[014]|8[02])|9(?:0[5-9]|1[0135-8]|2[036-9]|3[35-79]|40|5[0457-9]|6[05-9]|7[04-9]|8[35-8]|9\\\\d))\\\\d{4}\",[7]],[\"(?:1[16]1|21[89]|6\\\\d{3}|8(?:1[01]|7[23]))\\\\d{4}\",[7,8]],[\"800\\\\d{4,5}|(?:00800|800\\\\d)\\\\d{6}\"],[\"(?:8(?:22|55|60|7[78]|86)|9(?:00|81))\\\\d{4}\",[7]]]],\"PE\":[\"51\",\"00|19(?:1[124]|77|90)00\",\"(?:[14-8]|9\\\\d)\\\\d{7}\",[8,9],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"80\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"1\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[4-8]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"]]],\"0\",0,0,0,0,0,[[\"(?:(?:(?:4[34]|5[14])[0-8]|687)\\\\d|7(?:173|(?:3[0-8]|55)\\\\d)|8(?:10[05689]|6(?:0[06-9]|1[6-9]|29)|7(?:0[0569]|[56]0)))\\\\d{4}|(?:1[0-8]|4[12]|5[236]|6[1-7]|7[246]|8[2-4])\\\\d{6}\",[8]],[\"9\\\\d{8}\",[9]],[\"800\\\\d{5}\",[8]],[\"805\\\\d{5}\",[8]],[\"80[24]\\\\d{5}\",[8]],0,0,0,0,[\"801\\\\d{5}\",[8]]],\"00\",\" Anexo \"],\"PF\":[\"689\",\"00\",\"4\\\\d{5}(?:\\\\d{2})?|8\\\\d{7,8}\",[6,8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"44\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"4|8[7-9]\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"]]],0,0,0,0,0,0,[[\"4(?:0[4-689]|9[4-68])\\\\d{5}\",[8]],[\"8[7-9]\\\\d{6}\",[8]],[\"80[0-5]\\\\d{6}\",[9]],0,0,0,[\"44\\\\d{4}\",[6]],0,[\"499\\\\d{5}\",[8]]]],\"PG\":[\"675\",\"00|140[1-3]\",\"(?:180|[78]\\\\d{3})\\\\d{4}|(?:[2-589]\\\\d|64)\\\\d{5}\",[7,8],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"18|[2-69]|85\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[78]\"]]],0,0,0,0,0,0,[[\"(?:(?:3[0-2]|4[257]|5[34]|9[78])\\\\d|64[1-9]|85[02-46-9])\\\\d{4}\",[7]],[\"(?:7\\\\d|8[1-48])\\\\d{6}\",[8]],[\"180\\\\d{4}\",[7]],0,0,0,0,[\"27[01]\\\\d{4}\",[7]],[\"2(?:0[0-57]|7[568])\\\\d{4}\",[7]]],\"00\"],\"PH\":[\"63\",\"00\",\"(?:[2-7]|9\\\\d)\\\\d{8}|2\\\\d{5}|(?:1800|8)\\\\d{7,9}\",[6,8,9,10,11,12,13],[[\"(\\\\d)(\\\\d{5})\",\"$1 $2\",[\"2\"],\"(0$1)\"],[\"(\\\\d{4})(\\\\d{4,6})\",\"$1 $2\",[\"3(?:23|39|46)|4(?:2[3-6]|[35]9|4[26]|76)|544|88[245]|(?:52|64|86)2\",\"3(?:230|397|461)|4(?:2(?:35|[46]4|51)|396|4(?:22|63)|59[347]|76[15])|5(?:221|446)|642[23]|8(?:622|8(?:[24]2|5[13]))\"],\"(0$1)\"],[\"(\\\\d{5})(\\\\d{4})\",\"$1 $2\",[\"346|4(?:27|9[35])|883\",\"3469|4(?:279|9(?:30|56))|8834\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[3-7]|8[2-8]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]],[\"(\\\\d{4})(\\\\d{1,2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"1\"]]],\"0\",0,0,0,0,0,[[\"(?:(?:2[3-8]|3[2-68]|4[2-9]|5[2-6]|6[2-58]|7[24578])\\\\d{3}|88(?:22\\\\d\\\\d|42))\\\\d{4}|(?:2|8[2-8]\\\\d\\\\d)\\\\d{5}\",[6,8,9,10]],[\"(?:8(?:1[37]|9[5-8])|9(?:0[5-9]|1[0-24-9]|[235-7]\\\\d|4[2-9]|8[135-9]|9[1-9]))\\\\d{7}\",[10]],[\"1800\\\\d{7,9}\",[11,12,13]]]],\"PK\":[\"92\",\"00\",\"122\\\\d{6}|[24-8]\\\\d{10,11}|9(?:[013-9]\\\\d{8,10}|2(?:[01]\\\\d\\\\d|2(?:[06-8]\\\\d|1[01]))\\\\d{7})|(?:[2-8]\\\\d{3}|92(?:[0-7]\\\\d|8[1-9]))\\\\d{6}|[24-9]\\\\d{8}|[89]\\\\d{7}\",[8,9,10,11,12],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{2,7})\",\"$1 $2 $3\",[\"[89]0\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"1\"]],[\"(\\\\d{3})(\\\\d{6,7})\",\"$1 $2\",[\"2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:2[2-8]|3[27-9]|4[2-6]|6[3569]|9[25-8])\",\"9(?:2[3-8]|98)|(?:2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:22|3[27-9]|4[2-6]|6[3569]|9[25-7]))[2-9]\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{7,8})\",\"$1 $2\",[\"(?:2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)[2-9]\"],\"(0$1)\"],[\"(\\\\d{5})(\\\\d{5})\",\"$1 $2\",[\"58\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"3\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"[24-9]\"],\"(0$1)\"]],\"0\",0,0,0,0,0,[[\"(?:(?:21|42)[2-9]|58[126])\\\\d{7}|(?:2[25]|4[0146-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)[2-9]\\\\d{6,7}|(?:2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:2[2-8]|3[27-9]|4[2-6]|6[3569]|9[25-8]))[2-9]\\\\d{5,6}\",[9,10]],[\"3(?:[0-247]\\\\d|3[0-79]|55|64)\\\\d{7}\",[10]],[\"800\\\\d{5}(?:\\\\d{3})?\",[8,11]],[\"900\\\\d{5}\",[8]],[\"122\\\\d{6}\",[9]],0,[\"(?:2(?:[125]|3[2358]|4[2-4]|9[2-8])|4(?:[0-246-9]|5[3479])|5(?:[1-35-7]|4[2-467])|6(?:0[468]|[1-8])|7(?:[14]|2[236])|8(?:[16]|2[2-689]|3[23578]|4[3478]|5[2356])|9(?:1|22|3[27-9]|4[2-6]|6[3569]|9[2-7]))111\\\\d{6}\",[11,12]]]],\"PL\":[\"48\",\"00\",\"(?:6|8\\\\d\\\\d)\\\\d{7}|[1-9]\\\\d{6}(?:\\\\d{2})?|[26]\\\\d{5}\",[6,7,8,9,10],[[\"(\\\\d{5})\",\"$1\",[\"19\"]],[\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"11|20|64\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])1\",\"(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])19\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"64\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"21|39|45|5[0137]|6[0469]|7[02389]|8(?:0[14]|8)\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"1[2-8]|[2-7]|8[1-79]|9[145]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"8\"]]],0,0,0,0,0,0,[[\"47\\\\d{7}|(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])(?:[02-9]\\\\d{6}|1(?:[0-8]\\\\d{5}|9\\\\d{3}(?:\\\\d{2})?))\",[7,9]],[\"21(?:1[013-5]|2\\\\d|3[1-9])\\\\d{5}|(?:45|5[0137]|6[069]|7[2389]|88)\\\\d{7}\",[9]],[\"800\\\\d{6,7}\",[9,10]],[\"70[01346-8]\\\\d{6}\",[9]],0,0,[\"804\\\\d{6}\",[9]],[\"64\\\\d{4,7}\",[6,7,8,9]],[\"39\\\\d{7}\",[9]],[\"801\\\\d{6}\",[9]]]],\"PM\":[\"508\",\"00\",\"[45]\\\\d{5}|(?:708|8\\\\d\\\\d)\\\\d{6}\",[6,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[45]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"7\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:4[1-35-9]|5[0-47-9]|80[6-9]\\\\d\\\\d)\\\\d{4}\"],[\"(?:4[02-489]|5[02-9]|708(?:4[0-5]|5[0-6]))\\\\d{4}\"],[\"80[0-5]\\\\d{6}\",[9]],[\"8[129]\\\\d{7}\",[9]]]],\"PR\":[\"1\",\"011\",\"(?:[589]\\\\d\\\\d|787)\\\\d{7}\",[10],0,\"1\",0,0,0,0,\"787|939\",[[\"(?:787|939)[2-9]\\\\d{6}\"],[\"\"],[\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\"],[\"900[2-9]\\\\d{6}\"],[\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-9]|3[23]|44|66|77|88)[2-9]\\\\d{6}\"]]],\"PS\":[\"970\",\"00\",\"[2489]2\\\\d{6}|(?:1\\\\d|5)\\\\d{8}\",[8,9,10],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2489]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"5\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]]],\"0\",0,0,0,0,0,[[\"(?:22[2-47-9]|42[45]|82[014-68]|92[3569])\\\\d{5}\",[8]],[\"5[69]\\\\d{7}\",[9]],[\"1800\\\\d{6}\",[10]],0,0,0,0,0,0,[\"1700\\\\d{6}\",[10]]]],\"PT\":[\"351\",\"00\",\"1693\\\\d{5}|(?:[26-9]\\\\d|30)\\\\d{7}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2[12]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"16|[236-9]\"]]],0,0,0,0,0,0,[[\"2(?:[12]\\\\d|3[1-689]|4[1-59]|[57][1-9]|6[1-35689]|8[1-69]|9[1256])\\\\d{6}\"],[\"6(?:[06]92(?:30|9\\\\d)|[35]92(?:[049]\\\\d|3[034]))\\\\d{3}|(?:(?:16|6[0356])93|9(?:[1-36]\\\\d\\\\d|480))\\\\d{5}\"],[\"80[02]\\\\d{6}\"],[\"(?:6(?:0[178]|4[68])\\\\d|76(?:0[1-57]|1[2-47]|2[237]))\\\\d{5}\"],[\"884[0-4689]\\\\d{5}\"],[\"600\\\\d{6}|6[06]92(?:0\\\\d|3[349]|49)\\\\d{3}\"],[\"70(?:38[01]|596|(?:7\\\\d|8[17])\\\\d)\\\\d{4}\"],[\"6(?:222\\\\d|89(?:00|88|99))\\\\d{4}\"],[\"30\\\\d{7}\"],[\"80(?:8\\\\d|9[1579])\\\\d{5}\"]]],\"PW\":[\"680\",\"01[12]\",\"(?:[24-8]\\\\d\\\\d|345|900)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-9]\"]]],0,0,0,0,0,0,[[\"(?:2(?:55|77)|345|488|5(?:35|44|87)|6(?:22|54|79)|7(?:33|47)|8(?:24|55|76)|900)\\\\d{4}\"],[\"(?:(?:46|83)[0-5]|(?:6[2-4689]|78)0)\\\\d{4}|(?:45|77|88)\\\\d{5}\"]]],\"PY\":[\"595\",\"00\",\"[36-8]\\\\d{5,8}|4\\\\d{6,8}|59\\\\d{6}|9\\\\d{5,10}|(?:2\\\\d|5[0-8])\\\\d{6,7}\",[6,7,8,9,10,11],[[\"(\\\\d{3})(\\\\d{3,6})\",\"$1 $2\",[\"[2-9]0\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"3[289]|4[246-8]|61|7[1-3]|8[1-36]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{4,5})\",\"$1 $2\",[\"2[279]|3[13-5]|4[359]|5|6(?:[34]|7[1-46-8])|7[46-8]|85\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2[14-68]|3[26-9]|4[1246-8]|6(?:1|75)|7[1-35]|8[1-36]\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"87\"]],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"9(?:[5-79]|8[1-7])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-8]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"9\"]]],\"0\",0,0,0,0,0,[[\"(?:3[289]|4[246-8]|61|7[1-3]|8[1-36])\\\\d{5,7}|(?:2(?:[14-68]\\\\d|2[4-68]|7[15]|9[1-5])|3(?:18|3[167]|4[2357]|51|[67]\\\\d)|4(?:1\\\\d|3[12]|5[13]|9[1-47])|5(?:[1-4]\\\\d|5[02-4])|6(?:3[1-3]|44|7[1-8])|7(?:4[0-4]|5\\\\d|6[1-578]|75|8[0-8])|858)\\\\d{5,6}\",[7,8,9]],[\"9(?:51|6[129]|7[1-6]|8[1-7]|9[1-5])\\\\d{6}\",[9]],[\"9800\\\\d{5,7}\",[9,10,11]],0,0,0,[\"[245]0\\\\d{6,7}|[36-9]0\\\\d{4,7}\",[6,7,8,9]],0,[\"8700[0-4]\\\\d{4}\",[9]]]],\"QA\":[\"974\",\"00\",\"800\\\\d{4}|(?:2|800)\\\\d{6}|(?:0080|[3-7])\\\\d{7}\",[7,8,9,11],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"2[136]|8\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[3-7]\"]]],0,0,0,0,0,0,[[\"4(?:(?:[014]\\\\d\\\\d|999)\\\\d|2022)\\\\d{3}\",[8]],[\"[35-7]\\\\d{7}\",[8]],[\"800\\\\d{4}|(?:0080[01]|800)\\\\d{6}\",[7,9,11]],0,0,0,0,[\"2[136]\\\\d{5}\",[7]]]],\"RE\":[\"262\",\"00\",\"709\\\\d{6}|(?:26|[689]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[26-9]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"26(?:2\\\\d\\\\d|3(?:0\\\\d|1[0-6]))\\\\d{4}\"],[\"(?:69(?:2\\\\d\\\\d|3(?:[06][0-6]|1[0-3]|2[0-2]|3[0-39]|4\\\\d|5[0-5]|7[0-37]|8[0-8]|9[0-479]))|7092[0-3])\\\\d{4}\"],[\"80\\\\d{7}\"],[\"89[1-37-9]\\\\d{6}\"],0,0,0,0,[\"9(?:399[0-3]|479[0-6]|76(?:2[278]|3[0-37]))\\\\d{4}\"],[\"8(?:1[019]|2[0156]|84|90)\\\\d{6}\"]]],\"RO\":[\"40\",\"00\",\"(?:[236-8]\\\\d|90)\\\\d{7}|[23]\\\\d{5}\",[6,9],[[\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"2[3-6]\",\"2[3-6]\\\\d9\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"219|31\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[23]1\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[236-9]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"[23][13-6]\\\\d{7}|(?:2(?:19\\\\d|[3-6]\\\\d9)|31\\\\d\\\\d)\\\\d\\\\d\"],[\"(?:630|702)0\\\\d{5}|(?:6(?:00|2\\\\d)|7(?:0[013-9]|1[0-3]|[2-7]\\\\d|8[03-8]|9[0-39]))\\\\d{6}\",[9]],[\"800\\\\d{6}\",[9]],[\"90[0136]\\\\d{6}\",[9]],0,0,[\"(?:37\\\\d|80[578])\\\\d{6}\",[9]],0,0,[\"801\\\\d{6}\",[9]]],0,\" int \"],\"RS\":[\"381\",\"00\",\"38[02-9]\\\\d{6,9}|6\\\\d{7,9}|90\\\\d{4,8}|38\\\\d{5,6}|(?:7\\\\d\\\\d|800)\\\\d{3,9}|(?:[12]\\\\d|3[0-79])\\\\d{5,10}\",[6,7,8,9,10,11,12],[[\"(\\\\d{3})(\\\\d{3,9})\",\"$1 $2\",[\"(?:2[389]|39)0|[7-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{5,10})\",\"$1 $2\",[\"[1-36]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:11[1-9]\\\\d|(?:2[389]|39)(?:0[2-9]|[2-9]\\\\d))\\\\d{3,8}|(?:1[02-9]|2[0-24-7]|3[0-8])[2-9]\\\\d{4,9}\",[7,8,9,10,11,12]],[\"6(?:[0-689]|7\\\\d)\\\\d{6,7}\",[8,9,10]],[\"800\\\\d{3,9}\"],[\"(?:78\\\\d|90[0169])\\\\d{3,7}\",[6,7,8,9,10]],0,0,[\"7[06]\\\\d{4,10}\"]]],\"RU\":[\"7\",\"810\",\"8\\\\d{13}|[347-9]\\\\d{9}\",[10,14],[[\"(\\\\d{4})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"7(?:1[0-8]|2[1-9])\",\"7(?:1(?:[0-356]2|4[29]|7|8[27])|2(?:1[23]|[2-9]2))\",\"7(?:1(?:[0-356]2|4[29]|7|8[27])|2(?:13[03-69]|62[013-9]))|72[1-57-9]2\"],\"8 ($1)\",1],[\"(\\\\d{5})(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"7(?:1[0-68]|2[1-9])\",\"7(?:1(?:[06][3-6]|[18]|2[35]|[3-5][3-5])|2(?:[13][3-5]|[24-689]|7[457]))\",\"7(?:1(?:0(?:[356]|4[023])|[18]|2(?:3[013-9]|5)|3[45]|43[013-79]|5(?:3[1-8]|4[1-7]|5)|6(?:3[0-35-9]|[4-6]))|2(?:1(?:3[178]|[45])|[24-689]|3[35]|7[457]))|7(?:14|23)4[0-8]|71(?:33|45)[1-79]\"],\"8 ($1)\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"8 ($1)\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"[349]|8(?:[02-7]|1[1-8])\"],\"8 ($1)\",1],[\"(\\\\d{4})(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"8\"],\"8 ($1)\"]],\"8\",0,0,0,0,\"[3489]\",[[\"(?:3(?:0[12]|36|4[1-35-79]|5[1-3]|65|8[1-58]|9[0145])|4(?:01|1[1356]|2[13467]|7[1-5]|8[1-7]|9[1-689])|8(?:1[1-8]|2[01]|3[13-6]|4[0-8]|5[15-7]|6[0-35-79]|7[1-37-9]))\\\\d{7}\",[10]],[\"9\\\\d{9}\",[10]],[\"8(?:0[04]|108\\\\d{3})\\\\d{7}\"],[\"80[39]\\\\d{7}\",[10]],[\"808\\\\d{7}\",[10]]],\"8~10\"],\"RW\":[\"250\",\"00\",\"(?:06|[27]\\\\d\\\\d|[89]00)\\\\d{6}\",[8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"0\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[7-9]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:06|2[23568]\\\\d)\\\\d{6}\"],[\"7[237-9]\\\\d{7}\",[9]],[\"800\\\\d{6}\",[9]],[\"900\\\\d{6}\",[9]]]],\"SA\":[\"966\",\"00\",\"(?:[15]\\\\d|800|92)\\\\d{7}\",[9,10],[[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"9\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"5\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]]],\"0\",0,0,0,0,0,[[\"1(?:1\\\\d|2[24-8]|3[35-8]|4[3-68]|6[2-5]|7[235-7])\\\\d{6}\",[9]],[\"579[0-8]\\\\d{5}|5(?:[013-689]\\\\d|7[0-8])\\\\d{6}\",[9]],[\"800\\\\d{7}\",[10]],[\"925\\\\d{6}\",[9]],0,0,0,0,0,[\"920\\\\d{6}\",[9]]]],\"SB\":[\"677\",\"0[01]\",\"[6-9]\\\\d{6}|[1-6]\\\\d{4}\",[5,7],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"6[89]|7|8[4-9]|9(?:[1-8]|9[0-8])\"]]],0,0,0,0,0,0,[[\"(?:1[4-79]|[23]\\\\d|4[0-2]|5[03]|6[0-37])\\\\d{3}\",[5]],[\"48\\\\d{3}|(?:(?:6[89]|7[1-9]|8[4-9])\\\\d|9(?:1[2-9]|2[013-9]|3[0-2]|[46]\\\\d|5[0-46-9]|7[0-689]|8[0-79]|9[0-8]))\\\\d{4}\"],[\"1[38]\\\\d{3}\",[5]],0,0,0,0,0,[\"5[12]\\\\d{3}\",[5]]]],\"SC\":[\"248\",\"010|0[0-2]\",\"(?:[2489]\\\\d|64)\\\\d{5}\",[7],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[246]|9[57]\"]]],0,0,0,0,0,0,[[\"4[2-46]\\\\d{5}\"],[\"2[125-8]\\\\d{5}\"],[\"800[08]\\\\d{3}\"],[\"85\\\\d{5}\"],0,0,0,0,[\"971\\\\d{4}|(?:64|95)\\\\d{5}\"]],\"00\"],\"SD\":[\"249\",\"00\",\"[19]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[19]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"1(?:5\\\\d|8[35-7])\\\\d{6}\"],[\"(?:1[0-2]|9[0-3569])\\\\d{7}\"]]],\"SE\":[\"46\",\"00\",\"(?:[26]\\\\d\\\\d|9)\\\\d{9}|[1-9]\\\\d{8}|[1-689]\\\\d{7}|[1-4689]\\\\d{6}|2\\\\d{5}\",[6,7,8,9,10,12],[[\"(\\\\d{2})(\\\\d{2,3})(\\\\d{2})\",\"$1-$2 $3\",[\"20\"],\"0$1\",0,\"$1 $2 $3\"],[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"9(?:00|39|44|9)\"],\"0$1\",0,\"$1 $2\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})\",\"$1-$2 $3\",[\"[12][136]|3[356]|4[0246]|6[03]|90[1-9]\"],\"0$1\",0,\"$1 $2 $3\"],[\"(\\\\d)(\\\\d{2,3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"8\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{3})(\\\\d{2,3})(\\\\d{2})\",\"$1-$2 $3\",[\"1[2457]|2(?:[247-9]|5[0138])|3[0247-9]|4[1357-9]|5[0-35-9]|6(?:[125689]|4[02-57]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])\"],\"0$1\",0,\"$1 $2 $3\"],[\"(\\\\d{3})(\\\\d{2,3})(\\\\d{3})\",\"$1-$2 $3\",[\"9(?:00|39|44)\"],\"0$1\",0,\"$1 $2 $3\"],[\"(\\\\d{2})(\\\\d{2,3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"1[13689]|2[0136]|3[1356]|4[0246]|54|6[03]|90[1-9]\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"10|7\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"8\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"[13-5]|2(?:[247-9]|5[0138])|6(?:[124-689]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1-$2 $3 $4\",[\"9\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4 $5\",[\"[26]\"],\"0$1\",0,\"$1 $2 $3 $4 $5\"]],\"0\",0,0,0,0,0,[[\"(?:(?:[12][136]|3[356]|4[0246]|6[03]|8\\\\d)\\\\d|90[1-9])\\\\d{4,6}|(?:1(?:2[0-35]|4[0-4]|5[0-25-9]|7[13-6]|[89]\\\\d)|2(?:2[0-7]|4[0136-8]|5[0138]|7[018]|8[01]|9[0-57])|3(?:0[0-4]|1\\\\d|2[0-25]|4[056]|7[0-2]|8[0-3]|9[023])|4(?:1[013-8]|3[0135]|5[14-79]|7[0-246-9]|8[0156]|9[0-689])|5(?:0[0-6]|[15][0-5]|2[0-68]|3[0-4]|4\\\\d|6[03-5]|7[013]|8[0-79]|9[01])|6(?:1[1-3]|2[0-4]|4[02-57]|5[0-37]|6[0-3]|7[0-2]|8[0247]|9[0-356])|9(?:1[0-68]|2\\\\d|3[02-5]|4[0-3]|5[0-4]|[68][01]|7[0135-8]))\\\\d{5,6}\",[7,8,9]],[\"7[02369]\\\\d{7}\",[9]],[\"20\\\\d{4,7}\",[6,7,8,9]],[\"649\\\\d{6}|99[1-59]\\\\d{4}(?:\\\\d{3})?|9(?:00|39|44)[1-8]\\\\d{3,6}\",[7,8,9,10]],[\"75[1-8]\\\\d{6}\",[9]],[\"(?:25[245]|67[3-68])\\\\d{9}\",[12]],[\"10[1-8]\\\\d{6}\",[9]],[\"74[02-9]\\\\d{6}\",[9]],0,[\"77[0-7]\\\\d{6}\",[9]]]],\"SG\":[\"65\",\"0[0-3]\\\\d\",\"(?:(?:1\\\\d|8)\\\\d\\\\d|7000)\\\\d{7}|[3689]\\\\d{7}\",[8,10,11],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[369]|8(?:0[1-9]|[1-9])\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]],[\"(\\\\d{4})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"7\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]]],0,0,0,0,0,0,[[\"662[0-24-9]\\\\d{4}|6(?:[0-578]\\\\d|6[013-57-9]|9[0-35-9])\\\\d{5}\",[8]],[\"89(?:8[02-9]|9[0-6])\\\\d{4}|(?:8(?:0[1-9]|[1-8]\\\\d|9[0-7])|9[0-8]\\\\d)\\\\d{5}\",[8]],[\"(?:18|8)00\\\\d{7}\",[10,11]],[\"1900\\\\d{7}\",[11]],0,0,[\"7000\\\\d{7}\",[11]],0,[\"(?:3[12]\\\\d|666)\\\\d{5}\",[8]]]],\"SH\":[\"290\",\"00\",\"(?:[256]\\\\d|8)\\\\d{3}\",[4,5],0,0,0,0,0,0,\"[256]\",[[\"2(?:[0-57-9]\\\\d|6[4-9])\\\\d\\\\d\"],[\"[56]\\\\d{4}\",[5]],0,0,0,0,0,0,[\"262\\\\d\\\\d\",[5]]]],\"SI\":[\"386\",\"00|10(?:22|66|88|99)\",\"[1-7]\\\\d{7}|8\\\\d{4,7}|90\\\\d{4,6}\",[5,6,7,8],[[\"(\\\\d{2})(\\\\d{3,6})\",\"$1 $2\",[\"8[09]|9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"59|8\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[37][01]|4[0139]|51|6\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[1-57]\"],\"(0$1)\"]],\"0\",0,0,0,0,0,[[\"(?:[1-357][2-8]|4[24-8])\\\\d{6}\",[8]],[\"65(?:[178]\\\\d|5[56]|6[01])\\\\d{4}|(?:[37][01]|4[0139]|51|6[489])\\\\d{6}\",[8]],[\"80\\\\d{4,6}\",[6,7,8]],[\"89[1-3]\\\\d{2,5}|90\\\\d{4,6}\"],0,0,0,0,[\"(?:59\\\\d\\\\d|8(?:1(?:[67]\\\\d|8[0-589])|2(?:0\\\\d|2[0-37-9]|8[0-2489])|3[389]\\\\d))\\\\d{4}\",[8]]],\"00\"],\"SJ\":[\"47\",\"00\",\"0\\\\d{4}|(?:[489]\\\\d|79)\\\\d{6}\",[5,8],0,0,0,0,0,0,\"79\",[[\"79\\\\d{6}\",[8]],[\"(?:4[015-8]|9\\\\d)\\\\d{6}\",[8]],[\"80[01]\\\\d{5}\",[8]],[\"82[09]\\\\d{5}\",[8]],[\"880\\\\d{5}\",[8]],[\"81[23]\\\\d{5}\",[8]],[\"(?:0[235-9]|81(?:0(?:0[7-9]|1\\\\d)|5\\\\d\\\\d))\\\\d{3}\"],0,[\"85[0-5]\\\\d{5}\",[8]],[\"810(?:0[0-6]|[2-8]\\\\d)\\\\d{3}\",[8]]]],\"SK\":[\"421\",\"00\",\"[2-689]\\\\d{8}|[2-59]\\\\d{6}|[2-5]\\\\d{5}\",[6,7,9],[[\"(\\\\d)(\\\\d{2})(\\\\d{3,4})\",\"$1 $2 $3\",[\"21\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"[3-5][1-8]1\",\"[3-5][1-8]1[67]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1/$2 $3 $4\",[\"2\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[689]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1/$2 $3 $4\",[\"[3-5]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:2(?:16|[2-9]\\\\d{3})|(?:(?:[3-5][1-8]\\\\d|819)\\\\d|601[1-5])\\\\d)\\\\d{4}|(?:2|[3-5][1-8])1[67]\\\\d{3}|[3-5][1-8]16\\\\d\\\\d\"],[\"909[1-9]\\\\d{5}|9(?:0[1-8]|1[0-24-9]|4[03-57-9]|5\\\\d)\\\\d{6}\",[9]],[\"800\\\\d{6}\",[9]],[\"9(?:00|[78]\\\\d)\\\\d{6}\",[9]],0,0,[\"96\\\\d{7}\",[9]],[\"9090\\\\d{3}\",[7]],[\"6(?:02|5[0-4]|9[0-6])\\\\d{6}\",[9]],[\"8[5-9]\\\\d{7}\",[9]]]],\"SL\":[\"232\",\"00\",\"(?:[237-9]\\\\d|66)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[236-9]\"],\"(0$1)\"]],\"0\",0,0,0,0,0,[[\"22[2-4][2-9]\\\\d{4}\"],[\"(?:25|3[0-5]|66|7\\\\d|8[08]|9[09])\\\\d{6}\"]]],\"SM\":[\"378\",\"00\",\"(?:0549|[5-7]\\\\d)\\\\d{6}\",[8,10],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-7]\"]],[\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"0\"]]],0,0,\"([89]\\\\d{5})$\",\"0549$1\",0,0,[[\"0549(?:8[0157-9]|9\\\\d)\\\\d{4}\",[10]],[\"6[16]\\\\d{6}\",[8]],0,[\"7[178]\\\\d{6}\",[8]],0,0,0,0,[\"5[158]\\\\d{6}\",[8]]]],\"SN\":[\"221\",\"00\",\"(?:[378]\\\\d|93)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[379]\"]]],0,0,0,0,0,0,[[\"3(?:0(?:1[0-2]|80)|282|3(?:8[1-9]|9[3-9])|611)\\\\d{5}\"],[\"7(?:[015-8]\\\\d|21|90)\\\\d{6}\"],[\"800\\\\d{6}\"],[\"88[4689]\\\\d{6}\"],0,0,0,0,[\"(?:3(?:392|9[01]\\\\d)\\\\d|93(?:3[13]0|929))\\\\d{4}\"],[\"81[02468]\\\\d{6}\"]]],\"SO\":[\"252\",\"00\",\"[346-9]\\\\d{8}|[12679]\\\\d{7}|[1-5]\\\\d{6}|[1348]\\\\d{5}\",[6,7,8,9],[[\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"8[125]\"]],[\"(\\\\d{6})\",\"$1\",[\"[134]\"]],[\"(\\\\d)(\\\\d{6})\",\"$1 $2\",[\"[15]|2[0-79]|3[0-46-8]|4[0-7]\"]],[\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"(?:2|90)4|[67]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[348]|64|79|90\"]],[\"(\\\\d{2})(\\\\d{5,7})\",\"$1 $2\",[\"1|28|6[0-35-9]|7[67]|9[2-9]\"]]],\"0\",0,0,0,0,0,[[\"(?:1\\\\d|2[0-79]|3[0-46-8]|4[0-7]|5[57-9])\\\\d{5}|(?:[134]\\\\d|8[125])\\\\d{4}\",[6,7]],[\"(?:(?:15|(?:3[59]|4[89]|6\\\\d|7[679]|8[08])\\\\d|9(?:0\\\\d|[2-9]))\\\\d|2(?:4\\\\d|8))\\\\d{5}|(?:[67]\\\\d\\\\d|904)\\\\d{5}\",[7,8,9]]]],\"SR\":[\"597\",\"00\",\"(?:[2-5]|[6-8]\\\\d|90)\\\\d{5}\",[6,7],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1-$2-$3\",[\"56\"]],[\"(\\\\d{3})(\\\\d{3})\",\"$1-$2\",[\"[2-5]\"]],[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[6-9]\"]]],0,0,0,0,0,0,[[\"(?:2[1-3]|3[0-7]|4\\\\d|5[2-58])\\\\d{4}\",[6]],[\"(?:6[08]|7[124-7]|8[1-9])\\\\d{5}\",[7]],[\"80\\\\d{5}\",[7]],[\"90\\\\d{5}\",[7]],0,0,0,0,[\"56\\\\d{4}\",[6]]]],\"SS\":[\"211\",\"00\",\"[19]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[19]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"1[89]\\\\d{7}\"],[\"(?:12|9[1257-9])\\\\d{7}\"]]],\"ST\":[\"239\",\"00\",\"(?:22|9\\\\d)\\\\d{5}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[29]\"]]],0,0,0,0,0,0,[[\"22\\\\d{5}\"],[\"900[5-9]\\\\d{3}|9(?:0[1-9]|[89]\\\\d)\\\\d{4}\"]]],\"SV\":[\"503\",\"00\",\"[25-7]\\\\d{7}|(?:80\\\\d|900)\\\\d{4}(?:\\\\d{4})?\",[7,8,11],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[89]\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[25-7]\"]],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"]]],0,0,0,0,0,0,[[\"2(?:79(?:0[0347-9]|[1-9]\\\\d)|89(?:0[024589]|[1-9]\\\\d))\\\\d{3}|2(?:[1-69]\\\\d|[78][0-8])\\\\d{5}\",[8]],[\"[5-7]\\\\d{7}\",[8]],[\"800\\\\d{8}|80[01]\\\\d{4}\",[7,11]],[\"900\\\\d{4}(?:\\\\d{4})?\",[7,11]]]],\"SX\":[\"1\",\"011\",\"7215\\\\d{6}|(?:[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"(5\\\\d{6})$|1\",\"721$1\",0,\"721\",[[\"7215(?:4[2-8]|8[239]|9[056])\\\\d{4}\"],[\"7215(?:1[02]|2\\\\d|5[034679]|8[014-8])\\\\d{4}\"],[\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\"],[\"900[2-9]\\\\d{6}\"],[\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-9]|3[23]|44|66|77|88)[2-9]\\\\d{6}\"]]],\"SY\":[\"963\",\"00\",\"[1-359]\\\\d{8}|[1-5]\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[1-4]|5[1-3]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[59]\"],\"0$1\",1]],\"0\",0,0,0,0,0,[[\"21\\\\d{6,7}|(?:1(?:[14]\\\\d|[2356])|2[235]|3(?:[13]\\\\d|4)|4[134]|5[1-3])\\\\d{6}\"],[\"(?:50|9[1-9])\\\\d{7}\",[9]]]],\"SZ\":[\"268\",\"00\",\"0800\\\\d{4}|(?:[237]\\\\d|900)\\\\d{6}\",[8,9],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[0237]\"]],[\"(\\\\d{5})(\\\\d{4})\",\"$1 $2\",[\"9\"]]],0,0,0,0,0,0,[[\"[23][2-5]\\\\d{6}\",[8]],[\"7[5-9]\\\\d{6}\",[8]],[\"0800\\\\d{4}\",[8]],[\"900\\\\d{6}\",[9]],0,0,0,0,[\"70\\\\d{6}\",[8]]]],\"TA\":[\"290\",\"00\",\"8\\\\d{3}\",[4],0,0,0,0,0,0,\"8\",[[\"8\\\\d{3}\"]]],\"TC\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|649|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-479]\\\\d{6})$|1\",\"649$1\",0,\"649\",[[\"649(?:266|712|9(?:4\\\\d|50))\\\\d{4}\"],[\"649(?:2(?:3[129]|4[1-79])|3\\\\d\\\\d|4[34][1-3])\\\\d{4}\"],[\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\"],[\"900[2-9]\\\\d{6}\"],[\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-9]|3[23]|44|66|77|88)[2-9]\\\\d{6}\"],0,0,0,[\"649(?:71[01]|966)\\\\d{4}\"]]],\"TD\":[\"235\",\"00|16\",\"(?:22|30|[689]\\\\d|77)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[236-9]\"]]],0,0,0,0,0,0,[[\"22(?:[37-9]0|5[0-5]|6[89])\\\\d{4}\"],[\"(?:30|[69]\\\\d|77|8[5-7])\\\\d{6}\"]],\"00\"],\"TG\":[\"228\",\"00\",\"[279]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[279]\"]]],0,0,0,0,0,0,[[\"2(?:2[2-7]|3[23]|4[45]|55|6[67]|77)\\\\d{5}\"],[\"(?:7[0-289]|9[0-36-9])\\\\d{6}\"]]],\"TH\":[\"66\",\"00[1-9]\",\"(?:001800|[2-57]|[689]\\\\d)\\\\d{7}|1\\\\d{7,9}\",[8,9,10,13],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[13-9]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]]],\"0\",0,0,0,0,0,[[\"(?:1[0689]|2\\\\d|3[2-9]|4[2-5]|5[2-6]|7[3-7])\\\\d{6}\",[8]],[\"67(?:1[0-8]|2[4-7])\\\\d{5}|(?:14|6[1-6]|[89]\\\\d)\\\\d{7}\",[9]],[\"(?:001800\\\\d|1800)\\\\d{6}\",[10,13]],[\"1900\\\\d{6}\",[10]],0,0,0,0,[\"6[08]\\\\d{7}\",[9]]]],\"TJ\":[\"992\",\"810\",\"(?:[0-57-9]\\\\d|66)\\\\d{7}\",[9],[[\"(\\\\d{6})(\\\\d)(\\\\d{2})\",\"$1 $2 $3\",[\"331\",\"3317\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"44[02-479]|[34]7\"]],[\"(\\\\d{4})(\\\\d)(\\\\d{4})\",\"$1 $2 $3\",[\"3(?:[1245]|3[12])\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"\\\\d\"]]],0,0,0,0,0,0,[[\"(?:3(?:1[3-5]|2[245]|3[12]|4[24-7]|5[25]|72)|4(?:46|74|87))\\\\d{6}\"],[\"(?:33[03-9]|4(?:1[18]|4[02-479])|81[1-9])\\\\d{6}|(?:[09]\\\\d|1[0-27-9]|2[0-27]|3[08]|40|5[05]|66|7[01578]|8[078])\\\\d{7}\"]],\"8~10\"],\"TK\":[\"690\",\"00\",\"[2-47]\\\\d{3,6}\",[4,5,6,7],0,0,0,0,0,0,0,[[\"(?:2[2-4]|[34]\\\\d)\\\\d{2,5}\"],[\"7[2-4]\\\\d{2,5}\"]]],\"TL\":[\"670\",\"00\",\"7\\\\d{7}|(?:[2-47]\\\\d|[89]0)\\\\d{5}\",[7,8],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-489]|70\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"7\"]]],0,0,0,0,0,0,[[\"(?:2[1-5]|3[1-9]|4[1-4])\\\\d{5}\",[7]],[\"7[2-8]\\\\d{6}\",[8]],[\"80\\\\d{5}\",[7]],[\"90\\\\d{5}\",[7]],[\"70\\\\d{5}\",[7]]]],\"TM\":[\"993\",\"810\",\"(?:[1-6]\\\\d|71)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"12\"],\"(8 $1)\"],[\"(\\\\d{3})(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"[1-5]\"],\"(8 $1)\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[67]\"],\"8 $1\"]],\"8\",0,0,0,0,0,[[\"(?:1(?:2\\\\d|3[1-9])|2(?:22|4[0-35-8])|3(?:22|4[03-9])|4(?:22|3[128]|4\\\\d|6[15])|5(?:22|5[7-9]|6[014-689]))\\\\d{5}\"],[\"(?:6\\\\d|71)\\\\d{6}\"]],\"8~10\"],\"TN\":[\"216\",\"00\",\"[2-57-9]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-57-9]\"]]],0,0,0,0,0,0,[[\"81200\\\\d{3}|(?:3[0-2]|7\\\\d)\\\\d{6}\"],[\"3(?:001|[12]40)\\\\d{4}|(?:(?:[259]\\\\d|4[0-8])\\\\d|3(?:1[1-35]|6[0-4]|91))\\\\d{5}\"],[\"8010\\\\d{4}\"],[\"88\\\\d{6}\"],0,0,0,0,0,[\"8[12]10\\\\d{4}\"]]],\"TO\":[\"676\",\"00\",\"(?:0800|(?:[5-8]\\\\d\\\\d|999)\\\\d)\\\\d{3}|[2-8]\\\\d{4}\",[5,7],[[\"(\\\\d{2})(\\\\d{3})\",\"$1-$2\",[\"[2-4]|50|6[09]|7[0-24-69]|8[05]\"]],[\"(\\\\d{4})(\\\\d{3})\",\"$1 $2\",[\"0\"]],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[5-9]\"]]],0,0,0,0,0,0,[[\"(?:2\\\\d|3[0-8]|4[0-4]|50|6[09]|7[0-24-69]|8[05])\\\\d{3}\",[5]],[\"(?:5(?:4[0-5]|5[4-6])|6(?:[09]\\\\d|3[02]|8[15-9])|(?:7\\\\d|8[46-9])\\\\d|999)\\\\d{4}\",[7]],[\"0800\\\\d{3}\",[7]],0,0,0,0,0,[\"55[0-37-9]\\\\d{4}\",[7]]]],\"TR\":[\"90\",\"00\",\"4\\\\d{6}|8\\\\d{11,12}|(?:[2-58]\\\\d\\\\d|900)\\\\d{7}\",[7,10,12,13],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"512|8[01589]|90\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"5(?:[0-579]|61)\",\"5(?:[0-579]|61[06])\",\"5(?:[0-579]|61[06]1)\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[24][1-8]|3[1-9]\"],\"(0$1)\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{6,7})\",\"$1 $2 $3\",[\"80\"],\"0$1\",1]],\"0\",0,0,0,0,0,[[\"(?:2(?:[13][26]|[28][2468]|[45][268]|[67][246])|3(?:[13][28]|[24-6][2468]|[78][02468]|92)|4(?:[16][246]|[23578][2468]|4[26]))\\\\d{7}\",[10]],[\"561(?:011|61\\\\d)\\\\d{4}|5(?:0[15-7]|1[06]|[27]4|[34]\\\\d|5[1-59]|9[46])\\\\d{7}\",[10]],[\"8(?:00\\\\d{7}(?:\\\\d{2,3})?|11\\\\d{7})\",[10,12,13]],[\"(?:8[89]8|900)\\\\d{7}\",[10]],[\"592(?:21[12]|461)\\\\d{4}\",[10]],0,[\"444\\\\d{4}\",[7]],[\"512\\\\d{7}\",[10]],[\"850\\\\d{7}\",[10]]]],\"TT\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-46-8]\\\\d{6})$|1\",\"868$1\",0,\"868\",[[\"868(?:2(?:01|1[5-9]|[23]\\\\d|4[0-2])|6(?:0[7-9]|1[02-8]|2[1-9]|[3-69]\\\\d|7[0-79])|82[124])\\\\d{4}\"],[\"868(?:(?:2[5-9]|3\\\\d)\\\\d|4(?:3[0-6]|[6-9]\\\\d)|6(?:20|78|8\\\\d)|7(?:0[1-9]|1[02-9]|[2-9]\\\\d))\\\\d{4}\"],[\"868800\\\\d{4}|8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\"],[\"900[2-9]\\\\d{6}\"],[\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-9]|3[23]|44|66|77|88)[2-9]\\\\d{6}\"],[\"868619\\\\d{4}\"]]],\"TV\":[\"688\",\"00\",\"(?:2|7\\\\d\\\\d|90)\\\\d{4}\",[5,6,7],[[\"(\\\\d{2})(\\\\d{3})\",\"$1 $2\",[\"2\"]],[\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"90\"]],[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"7\"]]],0,0,0,0,0,0,[[\"2[02-9]\\\\d{3}\",[5]],[\"(?:7[01]\\\\d|90)\\\\d{4}\",[6,7]]]],\"TW\":[\"886\",\"0(?:0[25-79]|19)\",\"[2-689]\\\\d{8}|7\\\\d{9,10}|[2-8]\\\\d{7}|2\\\\d{6}\",[7,8,9,10,11],[[\"(\\\\d{2})(\\\\d)(\\\\d{4})\",\"$1 $2 $3\",[\"202\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[258]0\"],\"0$1\"],[\"(\\\\d)(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"[23568]|4(?:0[02-48]|[1-47-9])|7[1-9]\",\"[23568]|4(?:0[2-48]|[1-47-9])|(?:400|7)[1-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[49]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4,5})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:2[2-8]\\\\d|370|55[01]|7[1-9])\\\\d{6}|4(?:(?:0(?:0[1-9]|[2-48]\\\\d)|1[023]\\\\d)\\\\d{4,5}|(?:[239]\\\\d\\\\d|4(?:0[56]|12|49))\\\\d{5})|6(?:[01]\\\\d{7}|4(?:0[56]|12|24|4[09])\\\\d{4,5})|8(?:(?:2(?:3\\\\d|4[0-269]|[578]0|66)|36[24-9]|90\\\\d\\\\d)\\\\d{4}|4(?:0[56]|12|24|4[09])\\\\d{4,5})|(?:2(?:2(?:0\\\\d\\\\d|4(?:0[68]|[249]0|3[0-467]|5[0-25-9]|6[0235689]))|(?:3(?:[09]\\\\d|1[0-4])|(?:4\\\\d|5[0-49]|6[0-29]|7[0-5])\\\\d)\\\\d)|(?:(?:3[2-9]|5[2-8]|6[0-35-79]|8[7-9])\\\\d\\\\d|4(?:2(?:[089]\\\\d|7[1-9])|(?:3[0-4]|[78]\\\\d|9[01])\\\\d))\\\\d)\\\\d{3}\",[8,9]],[\"(?:40001[0-2]|9[0-8]\\\\d{4})\\\\d{3}\",[9]],[\"80[0-79]\\\\d{6}|800\\\\d{5}\",[8,9]],[\"20(?:[013-9]\\\\d\\\\d|2)\\\\d{4}\",[7,9]],[\"99\\\\d{7}\",[9]],0,[\"50[0-46-9]\\\\d{6}\",[9]],0,[\"7010(?:[0-2679]\\\\d|3[0-7]|8[0-5])\\\\d{5}|70\\\\d{8}\",[10,11]]],0,\"#\"],\"TZ\":[\"255\",\"00[056]\",\"(?:[25-8]\\\\d|41|90)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[24]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"5\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[67]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"2[2-8]\\\\d{7}\"],[\"(?:6[1-35-9]|7[013-9])\\\\d{7}\"],[\"80[08]\\\\d{6}\"],[\"90\\\\d{7}\"],0,0,0,0,[\"41\\\\d{7}\"],[\"8(?:40|6[01])\\\\d{6}\"]]],\"UA\":[\"380\",\"00\",\"[89]\\\\d{9}|[3-9]\\\\d{8}\",[9,10],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6[12][29]|(?:3[1-8]|4[136-8]|5[12457]|6[49])2|(?:56|65)[24]\",\"6[12][29]|(?:35|4[1378]|5[12457]|6[49])2|(?:56|65)[24]|(?:3[1-46-8]|46)2[013-9]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"3[1-8]|4(?:[1367]|[45][6-9]|8[4-6])|5(?:[1-5]|6[0135689]|7[4-6])|6(?:[12][3-7]|[459])\",\"3[1-8]|4(?:[1367]|[45][6-9]|8[4-6])|5(?:[1-5]|6(?:[015689]|3[02389])|7[4-6])|6(?:[12][3-7]|[459])\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[3-7]|89|9[1-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:3[1-8]|4[13-8]|5[1-7]|6[12459])\\\\d{7}\",[9]],[\"790\\\\d{6}|(?:39|50|6[36-8]|7[1-357]|9[1-9])\\\\d{7}\",[9]],[\"800[1-8]\\\\d{5,6}\"],[\"900[239]\\\\d{5,6}\"],0,0,0,0,[\"89[1-579]\\\\d{6}\",[9]]],\"0~0\"],\"UG\":[\"256\",\"00[057]\",\"800\\\\d{6}|(?:[29]0|[347]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"202\",\"2024\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"[27-9]|4(?:6[45]|[7-9])\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"[34]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"20(?:(?:240|30[67])\\\\d|6(?:00[0-2]|30[0-4]))\\\\d{3}|(?:20(?:[017]\\\\d|2[5-9]|3[1-4]|5[0-4]|6[15-9])|[34]\\\\d{3})\\\\d{5}\"],[\"72[48]0\\\\d{5}|7(?:[014-8]\\\\d|2[0167]|3[06]|9[0-3589])\\\\d{6}\"],[\"800[1-3]\\\\d{5}\"],[\"90[1-3]\\\\d{6}\"]]],\"US\":[\"1\",\"011\",\"[2-9]\\\\d{9}|3\\\\d{6}\",[10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"310\"],0,1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"($1) $2-$3\",[\"[2-9]\"],0,1,\"$1-$2-$3\"]],\"1\",0,0,0,0,0,[[\"(?:274[27]|(?:472|983)[2-47-9])\\\\d{6}|(?:2(?:0[1-35-9]|1[02-9]|2[03-57-9]|3[1459]|4[08]|5[1-46]|6[0279]|7[0269]|8[13])|3(?:0[1-57-9]|1[02-9]|2[013-79]|3[0-24679]|4[167]|5[0-3]|6[01349]|8[056])|4(?:0[124-9]|1[02-579]|2[3-5]|3[0245]|4[023578]|58|6[349]|7[0589]|8[04])|5(?:0[1-57-9]|1[0235-8]|20|3[0149]|4[01]|5[179]|6[1-47]|7[0-5]|8[0256])|6(?:0[1-35-9]|1[024-9]|2[03689]|3[016]|4[0156]|5[01679]|6[0-279]|78|8[0-269])|7(?:0[1-46-8]|1[2-9]|2[04-8]|3[0-247]|4[0378]|5[47]|6[02359]|7[0-59]|8[156])|8(?:0[1-68]|1[02-8]|2[0168]|3[0-2589]|4[03578]|5[046-9]|6[02-5]|7[028])|9(?:0[1346-9]|1[02-9]|2[0589]|3[0146-8]|4[01357-9]|5[12469]|7[0-3589]|8[04-69]))[2-9]\\\\d{6}\"],[\"\"],[\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\"],[\"900[2-9]\\\\d{6}\"],[\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-9]|3[23]|44|66|77|88)[2-9]\\\\d{6}\"]]],\"UY\":[\"598\",\"0(?:0|1[3-9]\\\\d)\",\"0004\\\\d{2,9}|[1249]\\\\d{7}|2\\\\d{3,4}|(?:[49]\\\\d|80)\\\\d{5}\",[4,5,6,7,8,9,10,11,12,13],[[\"(\\\\d{4,5})\",\"$1\",[\"21\"]],[\"(\\\\d{3})(\\\\d{3,4})\",\"$1 $2\",[\"0\"]],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[49]0|8\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[124]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2,4})\",\"$1 $2 $3\",[\"0\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{2,4})\",\"$1 $2 $3 $4\",[\"0\"]]],\"0\",0,0,0,0,0,[[\"(?:1(?:770|9(?:20|[89]7))|(?:2\\\\d|4[2-7])\\\\d\\\\d)\\\\d{4}\",[8]],[\"9[1-9]\\\\d{6}\",[8]],[\"0004\\\\d{2,9}|(?:405|80[05])\\\\d{4}\",[6,7,8,9,10,11,12,13]],[\"90[0-8]\\\\d{4}\",[7]],0,0,[\"21\\\\d{2,3}\",[4,5]]],\"00\",\" int. \"],\"UZ\":[\"998\",\"00\",\"(?:20|33|[5-9]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[235-9]\"]]],0,0,0,0,0,0,[[\"(?:55\\\\d\\\\d|6(?:1(?:22|3[124]|4[1-4]|5[1-3578]|64)|2(?:22|3[0-57-9]|41)|5(?:22|3[3-7]|5[024-8])|[69]\\\\d\\\\d|7(?:[23]\\\\d|7[69]))|7(?:0(?:5[4-9]|6[0146]|7[124-6]|9[135-8])|[168]\\\\d\\\\d|2(?:22|3[13-57-9]|4[1-3579]|5[14])|3(?:2\\\\d|3[1578]|4[1-35-7]|5[1-57]|61)|4(?:2\\\\d|3[1-579]|7[1-79])|5(?:22|5[1-9]|6[1457])|9(?:22|5[1-9])))\\\\d{5}\"],[\"(?:(?:[25]0|33|8[078]|9[0-57-9])\\\\d{3}|6(?:1(?:2(?:2[01]|98)|35[0-4]|50\\\\d|61[23]|7(?:[01][017]|4\\\\d|55|9[5-9]))|2(?:(?:11|7\\\\d)\\\\d|2(?:[12]1|9[01379])|5(?:[126]\\\\d|3[0-4]))|5(?:19[01]|2(?:27|9[26])|(?:30|59|7\\\\d)\\\\d)|6(?:2(?:1[5-9]|2[0367]|38|41|52|60)|(?:3[79]|9[0-3])\\\\d|4(?:56|83)|7(?:[07]\\\\d|1[017]|3[07]|4[047]|5[057]|67|8[0178]|9[79]))|7(?:2(?:24|3[237]|4[5-9]|7[15-8])|5(?:7[12]|8[0589])|7(?:0\\\\d|[39][07])|9(?:0\\\\d|7[079])))|7(?:[07]\\\\d{3}|2(?:2(?:2[79]|95)|3(?:2[5-9]|6[0-6])|57\\\\d|7(?:0\\\\d|1[17]|2[27]|3[37]|44|5[057]|66|88))|3(?:2(?:1[0-6]|21|3[469]|7[159])|(?:33|9[4-6])\\\\d|5(?:0[0-4]|5[579]|9\\\\d)|7(?:[0-3579]\\\\d|4[0467]|6[67]|8[078]))|4(?:2(?:29|5[0257]|6[0-7]|7[1-57])|5(?:1[0-4]|8\\\\d|9[5-9])|7(?:0\\\\d|1[024589]|2[0-27]|3[0137]|[46][07]|5[01]|7[5-9]|9[079])|9(?:7[015-9]|[89]\\\\d))|5(?:112|2(?:0\\\\d|2[29]|[49]4)|3[1568]\\\\d|52[6-9]|7(?:0[01578]|1[017]|[23]7|4[047]|[5-7]\\\\d|8[78]|9[079]))|9(?:22[128]|3(?:2[0-4]|7\\\\d)|57[02569]|7(?:2[05-9]|3[37]|4\\\\d|60|7[2579]|87|9[07]))))\\\\d{4}\"]]],\"VA\":[\"39\",\"00\",\"0\\\\d{5,10}|3[0-8]\\\\d{7,10}|55\\\\d{8}|8\\\\d{5}(?:\\\\d{2,4})?|(?:1\\\\d|39)\\\\d{7,8}\",[6,7,8,9,10,11,12],0,0,0,0,0,0,\"06698\",[[\"06698\\\\d{1,6}\",[6,7,8,9,10,11]],[\"3[1-9]\\\\d{8}|3[2-9]\\\\d{7}\",[9,10]],[\"80(?:0\\\\d{3}|3)\\\\d{3}\",[6,9]],[\"(?:0878\\\\d{3}|89(?:2\\\\d|3[04]|4(?:[0-4]|[5-9]\\\\d\\\\d)|5[0-4]))\\\\d\\\\d|(?:1(?:44|6[346])|89(?:38|5[5-9]|9))\\\\d{6}\",[6,8,9,10]],[\"1(?:78\\\\d|99)\\\\d{6}\",[9,10]],[\"3[2-8]\\\\d{9,10}\",[11,12]],0,0,[\"55\\\\d{8}\",[10]],[\"84(?:[08]\\\\d{3}|[17])\\\\d{3}\",[6,9]]]],\"VC\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|784|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-7]\\\\d{6})$|1\",\"784$1\",0,\"784\",[[\"784(?:266|3(?:6[6-9]|7\\\\d|8[0-6])|4(?:38|5[0-36-8]|8[0-8])|5(?:55|7[0-2]|93)|638|784)\\\\d{4}\"],[\"784(?:4(?:3[0-5]|5[45]|89|9[0-8])|5(?:2[6-9]|3[0-4])|720)\\\\d{4}\"],[\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\"],[\"900[2-9]\\\\d{6}\"],[\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-9]|3[23]|44|66|77|88)[2-9]\\\\d{6}\"],0,0,0,[\"78451[0-2]\\\\d{4}\"]]],\"VE\":[\"58\",\"00\",\"[68]00\\\\d{7}|(?:[24]\\\\d|[59]0)\\\\d{8}\",[10],[[\"(\\\\d{3})(\\\\d{7})\",\"$1-$2\",[\"[24-689]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:2(?:12|3[457-9]|[467]\\\\d|[58][1-9]|9[1-6])|[4-6]00)\\\\d{7}\"],[\"4(?:1[24-8]|2[246])\\\\d{7}\"],[\"800\\\\d{7}\"],[\"90[01]\\\\d{7}\"],0,0,[\"501\\\\d{7}\"]]],\"VG\":[\"1\",\"011\",\"(?:284|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-578]\\\\d{6})$|1\",\"284$1\",0,\"284\",[[\"284(?:229|4(?:22|9[45])|774|8(?:52|6[459]))\\\\d{4}\"],[\"284(?:245|3(?:0[0-3]|4[0-7]|68|9[34])|4(?:4[0-6]|68|9[69])|5(?:4[0-7]|68|9[69]))\\\\d{4}\"],[\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\"],[\"900[2-9]\\\\d{6}\"],[\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-9]|3[23]|44|66|77|88)[2-9]\\\\d{6}\"]]],\"VI\":[\"1\",\"011\",\"[58]\\\\d{9}|(?:34|90)0\\\\d{7}\",[10],0,\"1\",0,\"([2-9]\\\\d{6})$|1\",\"340$1\",0,\"340\",[[\"340(?:2(?:0\\\\d|10|2[06-8]|4[49]|77)|3(?:32|44)|4(?:2[23]|44|7[34]|89)|5(?:1[34]|55)|6(?:2[56]|4[23]|77|9[023])|7(?:1[2-57-9]|2[57]|7\\\\d)|884|998)\\\\d{4}\"],[\"\"],[\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\"],[\"900[2-9]\\\\d{6}\"],[\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-9]|3[23]|44|66|77|88)[2-9]\\\\d{6}\"]]],\"VN\":[\"84\",\"00\",\"[12]\\\\d{9}|[135-9]\\\\d{8}|[16]\\\\d{7}|[16-8]\\\\d{6}\",[7,8,9,10],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"80\"],\"0$1\",1],[\"(\\\\d{4})(\\\\d{4,6})\",\"$1 $2\",[\"1\"],0,1],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"6\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[357-9]\"],\"0$1\",1],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2[48]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"],\"0$1\",1]],\"0\",0,0,0,0,0,[[\"2(?:0[3-9]|1[0-689]|2[0-25-9]|[38][2-9]|4[2-8]|5[124-9]|6[0-39]|7[0-7]|9[0-4679])\\\\d{7}\",[10]],[\"(?:5(?:2[238]|59)|89[6-9]|99[013-9])\\\\d{6}|(?:3\\\\d|5[1689]|7[06-9]|8[1-8]|9[0-8])\\\\d{7}\",[9]],[\"1800\\\\d{4,6}|12(?:0[13]|28)\\\\d{4}\",[8,9,10]],[\"1900\\\\d{4,6}\",[8,9,10]],0,0,[\"(?:[17]99|80\\\\d)\\\\d{4}|69\\\\d{5,6}\",[7,8]],0,[\"672\\\\d{6}\",[9]]]],\"VU\":[\"678\",\"00\",\"[57-9]\\\\d{6}|(?:[238]\\\\d|48)\\\\d{3}\",[5,7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[57-9]\"]]],0,0,0,0,0,0,[[\"(?:38[0-8]|48[4-9])\\\\d\\\\d|(?:2[02-9]|3[4-7]|88)\\\\d{3}\",[5]],[\"(?:[58]\\\\d|7[013-7])\\\\d{5}\",[7]],[\"81[18]\\\\d\\\\d\",[5]],0,0,0,[\"(?:3[03]|900\\\\d)\\\\d{3}\"],0,[\"9(?:0[1-9]|1[01])\\\\d{4}\",[7]]]],\"WF\":[\"681\",\"00\",\"(?:40|72|8\\\\d{4})\\\\d{4}|[89]\\\\d{5}\",[6,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[47-9]\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"]]],0,0,0,0,0,0,[[\"72\\\\d{4}\",[6]],[\"(?:72|8[23])\\\\d{4}\",[6]],[\"80[0-5]\\\\d{6}\",[9]],0,0,[\"[48]0\\\\d{4}\",[6]],0,0,[\"9[23]\\\\d{4}\",[6]]]],\"WS\":[\"685\",\"0\",\"(?:[2-6]|8\\\\d{5})\\\\d{4}|[78]\\\\d{6}|[68]\\\\d{5}\",[5,6,7,10],[[\"(\\\\d{5})\",\"$1\",[\"[2-5]|6[1-9]\"]],[\"(\\\\d{3})(\\\\d{3,7})\",\"$1 $2\",[\"[68]\"]],[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"7\"]]],0,0,0,0,0,0,[[\"6[1-9]\\\\d{3}|(?:[2-5]|60)\\\\d{4}\",[5,6]],[\"(?:7[1-35-8]|8(?:[3-7]|9\\\\d{3}))\\\\d{5}\",[7,10]],[\"800\\\\d{3}\",[6]]]],\"XK\":[\"383\",\"00\",\"2\\\\d{7,8}|3\\\\d{7,11}|(?:4\\\\d\\\\d|[89]00)\\\\d{5}\",[8,9,10,11,12],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-4]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2|39\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7,10})\",\"$1 $2\",[\"3\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"38\\\\d{6,10}|(?:2[89]|39)(?:0\\\\d{5,6}|[1-9]\\\\d{5})\"],[\"4[3-9]\\\\d{6}\",[8]],[\"800\\\\d{5}\",[8]],[\"900\\\\d{5}\",[8]]]],\"YE\":[\"967\",\"00\",\"(?:1|7\\\\d)\\\\d{7}|[1-7]\\\\d{6}\",[7,8,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[1-6]|7(?:[24-6]|8[0-7])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"78[0-7]\\\\d{4}|17\\\\d{6}|(?:[12][2-68]|3[2358]|4[2-58]|5[2-6]|6[3-58]|7[24-6])\\\\d{5}\",[7,8]],[\"7[01378]\\\\d{7}\",[9]]]],\"YT\":[\"262\",\"00\",\"7093\\\\d{5}|(?:80|9\\\\d)\\\\d{7}|(?:26|63)9\\\\d{6}\",[9],0,\"0\",0,0,0,0,0,[[\"269(?:0[0-467]|15|5[0-4]|6\\\\d|[78]0)\\\\d{4}\"],[\"(?:639(?:0[0-79]|1[019]|[267]\\\\d|3[09]|40|5[05-9]|9[04-79])|7093[5-7])\\\\d{4}\"],[\"80\\\\d{7}\"],0,0,0,0,0,[\"9(?:(?:39|47)8[01]|769\\\\d)\\\\d{4}\"]]],\"ZA\":[\"27\",\"00\",\"[1-79]\\\\d{8}|8\\\\d{4,9}\",[5,6,7,8,9,10],[[\"(\\\\d{2})(\\\\d{3,4})\",\"$1 $2\",[\"8[1-4]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2,3})\",\"$1 $2 $3\",[\"8[1-4]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"860\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:2(?:0330|4302)|52087)0\\\\d{3}|(?:1[0-8]|2[1-378]|3[1-69]|4\\\\d|5[1346-8])\\\\d{7}\",[9]],[\"(?:1(?:3492[0-25]|4495[0235]|549(?:20|5[01]))|4[34]492[01])\\\\d{3}|8[1-4]\\\\d{3,7}|(?:2[27]|47|54)4950\\\\d{3}|(?:1(?:049[2-4]|9[12]\\\\d\\\\d)|(?:50[0-2]|[67]\\\\d\\\\d)\\\\d\\\\d|8(?:5\\\\d{3}|7(?:08[67]|158|28[5-9]|310)))\\\\d{4}|(?:1[6-8]|28|3[2-69]|4[025689]|5[36-8])4920\\\\d{3}|(?:12|[2-5]1)492\\\\d{4}\",[5,6,7,8,9]],[\"80\\\\d{7}\",[9]],[\"(?:86[2-9]|9[0-2]\\\\d)\\\\d{6}\",[9]],0,0,[\"861\\\\d{6,7}\",[9,10]],0,[\"87(?:08[0-589]|15[0-79]|28[0-4]|31[1-9])\\\\d{4}|87(?:[02][0-79]|1[0-46-9]|3[02-9]|[4-9]\\\\d)\\\\d{5}\",[9]],[\"860\\\\d{6}\",[9]]]],\"ZM\":[\"260\",\"00\",\"800\\\\d{6}|(?:21|[579]\\\\d|63)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[28]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"[579]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"21[1-8]\\\\d{6}\"],[\"(?:[59][5-8]|7[5-9])\\\\d{7}\"],[\"800\\\\d{6}\"],0,0,0,0,0,[\"63\\\\d{7}\"]]],\"ZW\":[\"263\",\"00\",\"2(?:[0-57-9]\\\\d{6,8}|6[0-24-9]\\\\d{6,7})|[38]\\\\d{9}|[35-8]\\\\d{8}|[3-6]\\\\d{7}|[1-689]\\\\d{6}|[1-3569]\\\\d{5}|[1356]\\\\d{4}\",[5,6,7,8,9,10],[[\"(\\\\d{3})(\\\\d{3,5})\",\"$1 $2\",[\"2(?:0[45]|2[278]|[49]8)|3(?:[09]8|17)|6(?:[29]8|37|75)|[23][78]|(?:33|5[15]|6[68])[78]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{2,4})\",\"$1 $2 $3\",[\"[49]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"80\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"24|8[13-59]|(?:2[05-79]|39|5[45]|6[15-8])2\",\"2(?:02[014]|4|[56]20|[79]2)|392|5(?:42|525)|6(?:[16-8]21|52[013])|8[13-59]\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2(?:1[39]|2[0157]|[378]|[56][14])|3(?:12|29)\",\"2(?:1[39]|2[0157]|[378]|[56][14])|3(?:123|29)\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"8\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3,5})\",\"$1 $2\",[\"1|2(?:0[0-36-9]|12|29|[56])|3(?:1[0-689]|[24-6])|5(?:[0236-9]|1[2-4])|6(?:[013-59]|7[0-46-9])|(?:33|55|6[68])[0-69]|(?:29|3[09]|62)[0-79]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"29[013-9]|39|54\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3,5})\",\"$1 $2\",[\"(?:25|54)8\",\"258|5483\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:1(?:(?:3\\\\d|9)\\\\d|[4-8])|2(?:(?:(?:0(?:2[014]|5)|(?:2[0157]|31|84|9)\\\\d\\\\d|[56](?:[14]\\\\d\\\\d|20)|7(?:[089]|2[03]|[35]\\\\d\\\\d))\\\\d|4(?:2\\\\d\\\\d|8))\\\\d|1(?:2|[39]\\\\d{4}))|3(?:(?:123|(?:29\\\\d|92)\\\\d)\\\\d\\\\d|7(?:[19]|[56]\\\\d))|5(?:0|1[2-478]|26|[37]2|4(?:2\\\\d{3}|83)|5(?:25\\\\d\\\\d|[78])|[689]\\\\d)|6(?:(?:[16-8]21|28|52[013])\\\\d\\\\d|[39])|8(?:[1349]28|523)\\\\d\\\\d)\\\\d{3}|(?:4\\\\d\\\\d|9[2-9])\\\\d{4,5}|(?:(?:2(?:(?:(?:0|8[146])\\\\d|7[1-7])\\\\d|2(?:[278]\\\\d|92)|58(?:2\\\\d|3))|3(?:[26]|9\\\\d{3})|5(?:4\\\\d|5)\\\\d\\\\d)\\\\d|6(?:(?:(?:[0-246]|[78]\\\\d)\\\\d|37)\\\\d|5[2-8]))\\\\d\\\\d|(?:2(?:[569]\\\\d|8[2-57-9])|3(?:[013-59]\\\\d|8[37])|6[89]8)\\\\d{3}\"],[\"7(?:[1278]\\\\d|3[1-9])\\\\d{6}\",[9]],[\"80(?:[01]\\\\d|20|8[0-8])\\\\d{3}\",[7]],0,0,0,0,0,[\"86(?:1[12]|22|30|44|55|77|8[368])\\\\d{6}\",[10]]]]},\"nonGeographic\":{\"800\":[\"800\",0,\"(?:00|[1-9]\\\\d)\\\\d{6}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"\\\\d\"]]],0,0,0,0,0,0,[0,0,[\"(?:00|[1-9]\\\\d)\\\\d{6}\"]]],\"808\":[\"808\",0,\"[1-9]\\\\d{7}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[1-9]\"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,0,[\"[1-9]\\\\d{7}\"]]],\"870\":[\"870\",0,\"7\\\\d{11}|[235-7]\\\\d{8}\",[9,12],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[235-7]\"]]],0,0,0,0,0,0,[0,[\"(?:[356]|774[45])\\\\d{8}|7[6-8]\\\\d{7}\"],0,0,0,0,0,0,[\"2\\\\d{8}\",[9]]]],\"878\":[\"878\",0,\"10\\\\d{10}\",[12],[[\"(\\\\d{2})(\\\\d{5})(\\\\d{5})\",\"$1 $2 $3\",[\"1\"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,[\"10\\\\d{10}\"]]],\"881\":[\"881\",0,\"6\\\\d{9}|[0-36-9]\\\\d{8}\",[9,10],[[\"(\\\\d)(\\\\d{3})(\\\\d{5})\",\"$1 $2 $3\",[\"[0-37-9]\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{5,6})\",\"$1 $2 $3\",[\"6\"]]],0,0,0,0,0,0,[0,[\"6\\\\d{9}|[0-36-9]\\\\d{8}\"]]],\"882\":[\"882\",0,\"[13]\\\\d{6}(?:\\\\d{2,5})?|[19]\\\\d{7}|(?:[25]\\\\d\\\\d|4)\\\\d{7}(?:\\\\d{2})?\",[7,8,9,10,11,12],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"16|342\"]],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"49\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"1[36]|9\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"3[23]\"]],[\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"16\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"10|23|3(?:[15]|4[57])|4|5[12]\"]],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"34\"]],[\"(\\\\d{2})(\\\\d{4,5})(\\\\d{5})\",\"$1 $2 $3\",[\"[1-35]\"]]],0,0,0,0,0,0,[0,[\"342\\\\d{4}|(?:337|49)\\\\d{6}|(?:3(?:2|47|7\\\\d{3})|5(?:0\\\\d{3}|2[0-2]))\\\\d{7}\",[7,8,9,10,12]],0,0,0,[\"348[57]\\\\d{7}\",[11]],0,0,[\"1(?:3(?:0[0347]|[13][0139]|2[035]|4[013568]|6[0459]|7[06]|8[15-8]|9[0689])\\\\d{4}|6\\\\d{5,10})|(?:345\\\\d|9[89])\\\\d{6}|(?:10|2(?:3|85\\\\d)|3(?:[15]|[69]\\\\d\\\\d)|4[15-8]|51)\\\\d{8}\"]]],\"883\":[\"883\",0,\"(?:[1-4]\\\\d|51)\\\\d{6,10}\",[8,9,10,11,12],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{2,8})\",\"$1 $2 $3\",[\"[14]|2[24-689]|3[02-689]|51[24-9]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"510\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"21\"]],[\"(\\\\d{4})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"51[13]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"[235]\"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,[\"(?:2(?:00\\\\d\\\\d|10)|(?:370[1-9]|51\\\\d0)\\\\d)\\\\d{7}|51(?:00\\\\d{5}|[24-9]0\\\\d{4,7})|(?:1[0-79]|2[24-689]|3[02-689]|4[0-4])0\\\\d{5,9}\"]]],\"888\":[\"888\",0,\"\\\\d{11}\",[11],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{5})\",\"$1 $2 $3\"]],0,0,0,0,0,0,[0,0,0,0,0,0,[\"\\\\d{11}\"]]],\"979\":[\"979\",0,\"[1359]\\\\d{8}\",[9],[[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[1359]\"]]],0,0,0,0,0,0,[0,0,0,[\"[1359]\\\\d{8}\"]]]}}","// Importing from a \".js\" file is a workaround for Node.js \"ES Modules\"\r\n// importing system which is even uncapable of importing \"*.json\" files.\r\nimport metadata from '../../metadata.max.json.js'\r\n\r\nexport default function withMetadataArgument(func, _arguments) {\r\n\tvar args = Array.prototype.slice.call(_arguments)\r\n\targs.push(metadata)\r\n\treturn func.apply(this, args)\r\n}","import withMetadataArgument from './withMetadataArgument.js'\r\nimport { parsePhoneNumberWithError as _parsePhoneNumberWithError } from '../../core/index.js'\r\n\r\nexport function parsePhoneNumberWithError() {\r\n\treturn withMetadataArgument(_parsePhoneNumberWithError, arguments)\r\n}\r\n","// `parsePhoneNumber()` named export has been renamed to `parsePhoneNumberWithError()`.\r\nexport { parsePhoneNumberWithError, parsePhoneNumberWithError as parsePhoneNumber } from './exports/parsePhoneNumberWithError.js'\r\n// `parsePhoneNumberFromString()` named export is now considered legacy:\r\n// it has been promoted to a default export due to being too verbose.\r\nexport { parsePhoneNumber as parsePhoneNumberFromString, parsePhoneNumber as default } from './exports/parsePhoneNumber.js'\r\n\r\nexport { isValidPhoneNumber } from './exports/isValidPhoneNumber.js'\r\nexport { isPossiblePhoneNumber } from './exports/isPossiblePhoneNumber.js'\r\nexport { validatePhoneNumberLength } from './exports/validatePhoneNumberLength.js'\r\n\r\n// Deprecated.\r\nexport { findNumbers } from './exports/findNumbers.js'\r\nexport { searchNumbers } from './exports/searchNumbers.js'\r\n\r\nexport { findPhoneNumbersInText } from './exports/findPhoneNumbersInText.js'\r\nexport { searchPhoneNumbersInText } from './exports/searchPhoneNumbersInText.js'\r\nexport { PhoneNumberMatcher } from './exports/PhoneNumberMatcher.js'\r\n\r\nexport { AsYouType } from './exports/AsYouType.js'\r\n\r\nexport { isSupportedCountry } from './exports/isSupportedCountry.js'\r\nexport { getCountries } from './exports/getCountries.js'\r\nexport { getCountryCallingCode } from './exports/getCountryCallingCode.js'\r\nexport { getExtPrefix } from './exports/getExtPrefix.js'\r\n\r\nexport { Metadata } from './exports/Metadata.js'\r\nexport { getExampleNumber } from './exports/getExampleNumber.js'\r\n\r\nexport { formatIncompletePhoneNumber } from './exports/formatIncompletePhoneNumber.js'\r\nexport { PhoneNumber } from './exports/PhoneNumber.js'\r\n\r\nexport {\r\n\tParseError,\r\n\tparseIncompletePhoneNumber,\r\n\tparsePhoneNumberCharacter,\r\n\tparseDigits,\r\n\tparseRFC3966,\r\n\tformatRFC3966,\r\n\tDIGIT_PLACEHOLDER\r\n} from '../core/index.js'\r\n","import { type ErrorObject } from 'ajv';\nimport type Ajv from 'ajv';\nimport { type DataValidateFunction } from 'ajv/dist/types';\nimport {\n  ParseError,\n  parsePhoneNumber,\n  parsePhoneNumberWithError,\n} from 'libphonenumber-js/max';\nimport Metadata from 'libphonenumber-js/metadata.max.json';\n\nexport function addCustomKeywords(\n  ajv: Ajv,\n  libraryBasedPhoneFieldValidationEnabled: boolean,\n  lenientPhoneValidation: boolean,\n) {\n  if (libraryBasedPhoneFieldValidationEnabled) {\n    ajv.addKeyword({\n      keyword: 'phone',\n      type: 'string',\n      errors: true,\n      compile: () => compilePhoneValidation(lenientPhoneValidation),\n    });\n\n    ajv.addKeyword({\n      keyword: 'allowedCountryCodes',\n      type: 'string',\n      errors: true,\n      compile(schema): DataValidateFunction {\n        return compileAllowedCountryCodesValidation(schema);\n      },\n    });\n  }\n}\n\nfunction compilePhoneValidation(\n  lenientPhoneValidation: boolean,\n): DataValidateFunction {\n  const validate: DataValidateFunction = (data: any): boolean => {\n    const errors: Partial<ErrorObject>[] = [];\n    const violation = validatePhoneNumber(data, lenientPhoneValidation);\n    if (violation) {\n      errors.push({\n        keyword: violation.keyword,\n        params: { format: 'phone' },\n        message: violation.message,\n      });\n      validate.errors = errors as ErrorObject[];\n      return false;\n    }\n    return true;\n  };\n  return validate;\n}\n\nfunction validatePhoneNumber(\n  data: string,\n  lenientPhoneValidation: Boolean,\n):\n  | {\n      keyword: string;\n      message: string;\n    }\n  | undefined {\n  try {\n    const parsedNumber = parsePhoneNumberWithError(data);\n    if (\n      !(lenientPhoneValidation\n        ? parsedNumber.isPossible()\n        : parsedNumber.isValid())\n    ) {\n      return {\n        keyword: 'format',\n        message: 'Phone number for the country code provided is invalid',\n      };\n    } else {\n      return undefined;\n    }\n  } catch (e) {\n    if (e instanceof ParseError) {\n      return phoneValidationErrorMessages(e, data);\n    } else {\n      return {\n        keyword: 'format',\n        message: 'Phone number could not be parsed',\n      };\n    }\n  }\n}\n\nfunction compileAllowedCountryCodesValidation(\n  schema: any[],\n): DataValidateFunction {\n  const validate: DataValidateFunction = (data: any): boolean => {\n    const errors: Partial<ErrorObject>[] = [];\n    try {\n      const phoneNumber = parsePhoneNumber(data);\n      // TODO when allowedCountryCodes list is empty, replace it with a predefined default (currently it does not exist)\n      if (!schema.includes(phoneNumber?.country) && schema.length > 0) {\n        errors.push({\n          keyword: 'allowedCountryCodes',\n          params: { allowedCountryCodes: schema, format: 'phone' },\n          message:\n            \"Phone number's country code must correspond to one from allowed countries\",\n        });\n        validate.errors = errors as ErrorObject[];\n        return false;\n      }\n    } catch {\n      return true;\n    }\n    return true;\n  };\n  return validate;\n}\n\nfunction phoneValidationErrorMessages(\n  e: ParseError,\n  data: string,\n): {\n  keyword: string;\n  message: string;\n} {\n  switch (e.message) {\n    case 'INVALID_COUNTRY':\n      return {\n        keyword: 'countryCode',\n        message: 'Phone number has incorrect country code',\n      };\n    case 'NOT_A_NUMBER':\n      return {\n        keyword: 'format',\n        message: 'Text provided is not a phone number',\n      };\n    case 'TOO_SHORT':\n      return handleTooShortCase(data);\n    case 'TOO_LONG':\n      return { keyword: 'format', message: 'Phone number is too long' };\n    case 'INVALID_LENGTH':\n    default:\n      return { keyword: 'format', message: 'Phone number could not be parsed' };\n  }\n}\n\nfunction handleTooShortCase(data: string): {\n  keyword: string;\n  message: string;\n} {\n  const callingCode = getCallingCode(data);\n  if (callingCode) {\n    if (onlyCallingCode(callingCode, data)) {\n      return {\n        keyword: 'format',\n        message: 'Phone number is missing',\n      };\n    } else {\n      return {\n        keyword: 'format',\n        message: 'Phone number is too short',\n      };\n    }\n  } else {\n    return {\n      keyword: 'countryCode',\n      message: 'Phone number has incorrect country code',\n    };\n  }\n}\n\nfunction getCallingCode(phoneNumber: string): string | undefined {\n  const withoutPrefix = phoneNumber.trim().replace(/^\\+/, '');\n\n  for (let length = 4; length > 0; length--) {\n    const callingCode = withoutPrefix.substring(0, length);\n    const code = Metadata.country_calling_codes[callingCode]?.[0];\n    if (code) {\n      return callingCode;\n    }\n  }\n  return undefined;\n}\n\nfunction onlyCallingCode(callingCode: string, data: string): boolean {\n  return data.replace(/^\\+/, '') === callingCode;\n}\n","import { type Form } from '@wix/ambassador-forms-v4-form/types';\nimport Ajv from 'ajv';\nimport addErrors from 'ajv-errors';\nimport addFormats from 'ajv-formats';\nimport uniqueItemPropertiesKeyword from 'ajv-keywords/dist/keywords/uniqueItemProperties';\n\nimport { asRequired } from '../utils/lang';\n\nimport { addCustomFormats } from './ajv/ajv-custom-formats';\nimport { addCustomKeywords } from './ajv/ajv-custom-keywords';\nimport { type FormSchemaMapper } from './mappers/form-schema-mapper';\n\nexport function createAjvSchemaValidatorFactory(\n  formSchemaMapper: FormSchemaMapper,\n  libraryBasedPhoneFieldValidationEnabled: boolean,\n  lenientPhoneValidation: boolean,\n) {\n  return function createAjvSchemaValidator(formsSchemas: Form[]) {\n    const ajv: Ajv = new Ajv({ allErrors: true, multipleOfPrecision: 8 });\n    addFormats(ajv);\n    addCustomFormats(ajv, libraryBasedPhoneFieldValidationEnabled);\n    addCustomKeywords(\n      ajv,\n      libraryBasedPhoneFieldValidationEnabled,\n      lenientPhoneValidation,\n    );\n    addErrors(ajv);\n    uniqueItemPropertiesKeyword(ajv);\n    formsSchemas.forEach((formSchema) => {\n      const validate = ajv.getSchema(\n        asRequired(formSchema.id, formSchema, 'id'),\n      );\n      if (!validate) {\n        const formAjvSchema = formSchemaMapper(formSchema);\n        formAjvSchema && ajv.addSchema(formAjvSchema);\n      }\n    });\n    return ajv;\n  };\n}\n","export enum PropertyTypes {\n  OBJECT = 'object',\n  STRING = 'string',\n  NUMBER = 'number',\n  INTEGER = 'integer',\n  BOOLEAN = 'boolean',\n  ARRAY = 'array',\n}\n","import { ValidationMode } from '@wix/ambassador-forms-v1-validation-result/types';\nimport {\n  type Form,\n  type FormField,\n  ValidationFormat,\n} from '@wix/ambassador-forms-v4-form/types';\nimport { type SomeJSONSchema } from 'ajv/dist/types/json-schema';\n\nimport { asOptional, asRequired } from '../../utils/lang';\n\nimport { type PropertySchemaMapper } from './property-schema-mapper';\nimport { PropertyTypes } from './property-types';\n\nexport type FormSchemaMapper = ReturnType<typeof formSchemaMapperFactory>;\n\nexport function formSchemaMapperFactory(\n  propertySchemaMapper: PropertySchemaMapper,\n  validationMode: ValidationMode,\n  libraryBasedPhoneFieldValidationEnabled: boolean = false,\n) {\n  return function mapToFormSchema(formSchema: Form): SomeJSONSchema {\n    const formFields: FormField[] = formSchema.fields || [];\n    const formDeletedFields: FormField[] = formSchema.deletedFields || [];\n    const fieldsWithValidation = formFields.filter(haveValidation);\n    const deletedFieldsWithValidation =\n      formDeletedFields.filter(haveValidation);\n    const properties = makeValidationProperties(\n      fieldsWithValidation,\n      deletedFieldsWithValidation,\n    );\n\n    const requiredFieldIds =\n      validationMode === ValidationMode.UNRESTRICTED_UPDATE\n        ? []\n        : fieldsWithValidation\n            .filter((field) => !isHidden(field))\n            .filter((field) => !isReadOnly(field))\n            .filter(isRequiredField)\n            .map((field) => asRequired(field.target, field, 'target'));\n\n    return {\n      $id: asRequired(formSchema.id, formSchema, 'id'),\n      type: PropertyTypes.OBJECT,\n      properties,\n      additionalProperties: false,\n      required: requiredFieldIds,\n    };\n  };\n\n  function makeValidationProperties(\n    formFields: FormField[],\n    formDeletedFields: FormField[],\n  ): Partial<SomeJSONSchema> {\n    return [...formFields, ...formDeletedFields].reduce<\n      Partial<SomeJSONSchema>\n    >((acc, field) => {\n      const property = convertFormFieldsToAjvProperties(field);\n      if (property) {\n        acc[asRequired(field.target, field, 'target')] = property;\n      }\n      return acc;\n    }, {});\n  }\n\n  function isHidden(formField: FormField) {\n    return formField.hidden;\n  }\n\n  function isReadOnly(formField: FormField) {\n    return formField.readOnly;\n  }\n\n  function isRequiredField(formField: FormField) {\n    return (formField?.validation || { required: false }).required;\n  }\n\n  function haveValidation(formField: FormField) {\n    return (\n      Boolean(Object.keys(formField.validation ?? {}).length) ||\n      isRequiredField(formField)\n    );\n  }\n\n  function convertFormFieldsToAjvProperties(\n    formField: FormField,\n  ): (Omit<SomeJSONSchema, '$id'> & Pick<SomeJSONSchema, '$id'>) | undefined {\n    return {\n      $id: asRequired(formField.id, formField, 'id'),\n      ...(isTargetReferencedField(formField)\n        ? { $ref: formField.target }\n        : propertySchemaMapper(\n            formField.validation,\n            asOptional(formField.target),\n            validationMode,\n            libraryBasedPhoneFieldValidationEnabled,\n          )),\n    };\n  }\n\n  function isTargetReferencedField(formField: FormField) {\n    return (\n      Boolean(formField.nestedFormId) ||\n      formField.validation?.predefined?.format ===\n        ValidationFormat.MULTILINE_ADDRESS\n    );\n  }\n}\n","import { ValidationMode } from '@wix/ambassador-forms-v1-validation-result/types';\nimport {\n  FieldFieldType,\n  type Form,\n  type FieldsField,\n  type FieldsInputField,\n} from '@wix/ambassador-forms-v4-form/types';\nimport { type SomeJSONSchema } from 'ajv/dist/types/json-schema';\n\nimport { asRequired } from '../../../utils/lang';\nimport { PropertyTypes } from '../property-types';\n\nimport { type PlatformisedFieldToValidationTransformer } from './transform-platformised-field-to-validation';\n\nexport type FormSchemaMapperPlatformised = ReturnType<\n  typeof formSchemaMapperFactoryPlatformised\n>;\n\nexport function formSchemaMapperFactoryPlatformised(\n  transformPlatformisedFieldToValidation: PlatformisedFieldToValidationTransformer,\n  validationMode: ValidationMode,\n  libraryBasedPhoneFieldValidationEnabled: boolean = false,\n) {\n  return function mapToFormSchema(formSchema: Form): SomeJSONSchema {\n    const formFields: FieldsField[] = formSchema.formFields || [];\n    const formDeletedFields: FieldsField[] = formSchema.deletedFormFields || [];\n    const inputFields = formFields.filter(isInputFields);\n    const deletedInputFields = formDeletedFields.filter(isInputFields);\n\n    const properties = makeValidationProperties(\n      inputFields,\n      deletedInputFields,\n    );\n\n    return {\n      $id: asRequired(formSchema.id, formSchema, 'id'),\n      type: PropertyTypes.OBJECT,\n      properties,\n      additionalProperties: false,\n      required: getRequiredFieldTargets(inputFields),\n    };\n  };\n\n  function getRequiredFieldTargets(inputFields: FieldsField[]) {\n    if (validationMode === ValidationMode.UNRESTRICTED_UPDATE) {\n      return [];\n    }\n    return inputFields\n      .filter((field) => !isHidden(field))\n      .filter((field) => !isReadOnly(field))\n      .map((field) => field.inputOptions!)\n      .filter(isRequiredField)\n      .map((inputOptions) =>\n        asRequired(inputOptions.target, inputOptions, 'target'),\n      );\n  }\n\n  function makeValidationProperties(\n    formFields: FieldsField[],\n    formDeletedFields: FieldsField[],\n  ): Partial<SomeJSONSchema> {\n    return [...formFields, ...formDeletedFields].reduce<\n      Partial<SomeJSONSchema>\n    >((acc, field) => {\n      const inputField = asRequired(field.inputOptions, field, 'inputOptions');\n      const property = convertFormFieldsToAjvProperties(\n        asRequired(field.id, field, 'id'),\n        inputField,\n      );\n      if (property) {\n        acc[asRequired(inputField.target, field, 'target')] = property;\n      }\n      return acc;\n    }, {});\n  }\n\n  function isHidden(formField: FieldsField) {\n    return formField.hidden;\n  }\n\n  function isReadOnly(formField: FieldsField) {\n    return formField.inputOptions?.readOnly;\n  }\n\n  function isRequiredField(inputField: FieldsInputField) {\n    return inputField.required ?? false;\n  }\n\n  function isInputFields(formField: FieldsField) {\n    return formField.fieldType === FieldFieldType.INPUT;\n  }\n\n  function convertFormFieldsToAjvProperties(\n    id: string,\n    inputField: FieldsInputField,\n  ): (Omit<SomeJSONSchema, '$id'> & Pick<SomeJSONSchema, '$id'>) | undefined {\n    return {\n      $id: id,\n      ...transformPlatformisedFieldToValidation(\n        inputField,\n        validationMode,\n        libraryBasedPhoneFieldValidationEnabled,\n      ),\n    };\n  }\n}\n","import { asOptional } from './lang';\n\nexport function setValidationProperties<T = unknown>(\n  properties: string[],\n  field: object,\n  propertyManipulations: { [field: string]: (value: T) => T } = {},\n) {\n  return properties.reduce<{ [key: string]: unknown }>((acc, key) => {\n    const userValue = (field as { [key: string]: T })[key];\n    const value = propertyManipulations[key]\n      ? propertyManipulations[key](userValue)\n      : userValue;\n    if (\n      typeof asOptional(value) !== 'undefined' &&\n      !isEnumValidationPropertyArrayEmpty(key, value)\n    ) {\n      acc[key] = value;\n    }\n    return acc;\n  }, {});\n}\n\nexport function setValidationMessages(\n  properties: string[],\n  field: { validationMessages?: object },\n): { errorMessage?: { [key: string]: string } } {\n  if (field.validationMessages) {\n    const customMessages = field.validationMessages as {\n      [key: string]: string;\n    };\n    const errorMessage = properties.reduce<{ [key: string]: string }>(\n      (acc, property) => {\n        const propertyErrorMsg = customMessages[property];\n        if (propertyErrorMsg) {\n          acc[property] = propertyErrorMsg;\n        }\n        return acc;\n      },\n      {},\n    );\n    return {\n      errorMessage,\n    };\n  }\n  return {};\n}\n\nfunction isEnumValidationPropertyArrayEmpty(\n  key: string,\n  value: unknown,\n): boolean {\n  return key === 'enum' && Array.isArray(value) && !value.length;\n}\n","import { ValidationMode } from '@wix/ambassador-forms-v1-validation-result/types';\nimport { type ValidationBooleanType } from '@wix/ambassador-forms-v4-form/types';\nimport { type SomeJSONSchema } from 'ajv/dist/types/json-schema';\n\nimport { setValidationProperties } from '../../utils/validation';\nimport { BOOLEAN_VALIDATION_PROPERTIES } from '../schema-validation-properties';\n\nimport { PropertyTypes } from './property-types';\n\nexport function mapToBooleanSchemaProperty(\n  boolField: ValidationBooleanType,\n  validationMode: ValidationMode,\n): SomeJSONSchema {\n  return {\n    type: PropertyTypes.BOOLEAN,\n    ...resolveRestrictedValidationProperties(boolField, validationMode),\n  };\n}\n\nfunction resolveRestrictedValidationProperties(\n  boolField: ValidationBooleanType,\n  validationMode: ValidationMode,\n) {\n  if (validationMode !== ValidationMode.UNRESTRICTED_UPDATE) {\n    return {\n      ...setValidationProperties<boolean>(\n        BOOLEAN_VALIDATION_PROPERTIES,\n        boolField,\n      ),\n    };\n  }\n  return {};\n}\n","import { ValidationMode } from '@wix/ambassador-forms-v1-validation-result/types';\nimport { type ValidationNumberType } from '@wix/ambassador-forms-v4-form/types';\nimport { type SomeJSONSchema } from 'ajv/dist/types/json-schema';\n\nimport { setValidationProperties } from '../../utils/validation';\nimport { NUMBER_VALIDATION_PROPERTIES } from '../schema-validation-properties';\n\nimport { PropertyTypes } from './property-types';\n\nexport function mapToNumberSchemaProperty(\n  numberField: ValidationNumberType,\n  validationMode: ValidationMode,\n): SomeJSONSchema & { type: 'number' } {\n  return {\n    type: PropertyTypes.NUMBER,\n    maximum: Number.MAX_SAFE_INTEGER,\n    minimum: Number.MIN_SAFE_INTEGER,\n    ...resolveRestrictedValidationProperties(numberField, validationMode),\n  };\n}\n\nfunction resolveRestrictedValidationProperties(\n  numberField: ValidationNumberType,\n  validationMode: ValidationMode,\n) {\n  if (validationMode !== ValidationMode.UNRESTRICTED_UPDATE) {\n    return {\n      ...setValidationProperties<number>(\n        NUMBER_VALIDATION_PROPERTIES,\n        numberField,\n        {\n          maximum: (value) =>\n            Math.min(value ?? Number.MAX_SAFE_INTEGER, Number.MAX_SAFE_INTEGER),\n          minimum: (value) =>\n            Math.max(value ?? Number.MIN_SAFE_INTEGER, Number.MIN_SAFE_INTEGER),\n          multipleOf: (value) => (value <= 0 ? 1 : value),\n        },\n      ),\n    };\n  }\n  return {};\n}\n","import { ValidationMode } from '@wix/ambassador-forms-v1-validation-result/types';\nimport {\n  type ArrayItems,\n  type ArrayType,\n  type ValidationArrayTypeArrayItems,\n  type ValidationArrayType,\n} from '@wix/ambassador-forms-v4-form/types';\nimport {\n  type PartialSchema,\n  type SomeJSONSchema,\n} from 'ajv/dist/types/json-schema';\n\nimport { setValidationProperties } from '../../utils/validation';\n\nimport { propertySchemaMapper } from './property-schema-mapper';\nimport { PropertyTypes } from './property-types';\n\nconst ARRAY_VALIDATION_PROPERTIES = ['minItems', 'maxItems'];\nconst ALLOWED_MAX_ITEMS = 100;\n\nexport function mapToArraySchemaProperty(\n  arrayField: ArrayType | ValidationArrayType,\n  validationMode: ValidationMode,\n  libraryBasedPhoneFieldValidationEnabled: boolean = false,\n): PartialSchema<[]> {\n  const validation = arrayField || {};\n  const itemsValidation = resolveArrayItemsValidation(\n    validationMode,\n    validation.items,\n    libraryBasedPhoneFieldValidationEnabled,\n  );\n  return {\n    type: PropertyTypes.ARRAY,\n    maxItems: ALLOWED_MAX_ITEMS,\n    ...resolveRestrictedValidationProperties(arrayField, validationMode),\n    ...(itemsValidation && { items: itemsValidation }),\n  };\n}\n\nfunction resolveRestrictedValidationProperties(\n  arrayField: ArrayType | ValidationArrayType,\n  validationMode: ValidationMode,\n) {\n  if (validationMode !== ValidationMode.UNRESTRICTED_UPDATE) {\n    return {\n      ...getArrayValidationProperties(arrayField),\n    };\n  }\n  return {};\n}\n\nexport function getArrayValidationProperties(\n  arrayField: ArrayType | ValidationArrayType,\n) {\n  return setValidationProperties<number>(\n    ARRAY_VALIDATION_PROPERTIES,\n    arrayField,\n    {\n      maxItems: (value) =>\n        Math.min(value ?? ALLOWED_MAX_ITEMS, ALLOWED_MAX_ITEMS),\n    },\n  );\n}\n\nfunction resolveArrayItemsValidation(\n  validationMode: ValidationMode,\n  arrayItems?: ArrayItems | ValidationArrayTypeArrayItems,\n  libraryBasedPhoneFieldValidationEnabled: boolean = false,\n): Omit<SomeJSONSchema, '$id'> | undefined {\n  if (arrayItems) {\n    return propertySchemaMapper(\n      arrayItems,\n      undefined,\n      validationMode,\n      libraryBasedPhoneFieldValidationEnabled,\n    );\n  }\n  throw Error('Required to specify items type for array');\n}\n","import { ValidationMode } from '@wix/ambassador-forms-v1-validation-result/types';\nimport { type IntegerType } from '@wix/ambassador-forms-v4-form/types';\nimport { type SomeJSONSchema } from 'ajv/dist/types/json-schema';\n\nimport { setValidationProperties } from '../../utils/validation';\nimport { INTEGER_VALIDATION_PROPERTIES } from '../schema-validation-properties';\n\nimport { PropertyTypes } from './property-types';\n\nexport function mapToIntegerSchemaProperty(\n  integerField: IntegerType,\n  validationMode: ValidationMode,\n): SomeJSONSchema & { type: 'integer' } {\n  return {\n    type: PropertyTypes.INTEGER,\n    maximum: Number.MAX_SAFE_INTEGER,\n    minimum: Number.MIN_SAFE_INTEGER,\n    ...resolveRestrictedValidationProperties(integerField, validationMode),\n  };\n}\n\nfunction resolveRestrictedValidationProperties(\n  integerField: IntegerType,\n  validationMode: ValidationMode,\n) {\n  if (validationMode !== ValidationMode.UNRESTRICTED_UPDATE) {\n    return {\n      ...setValidationProperties<number>(\n        INTEGER_VALIDATION_PROPERTIES,\n        integerField,\n        {\n          maximum: (value) =>\n            Math.min(value ?? Number.MAX_SAFE_INTEGER, Number.MAX_SAFE_INTEGER),\n          minimum: (value) =>\n            Math.max(value ?? Number.MIN_SAFE_INTEGER, Number.MIN_SAFE_INTEGER),\n        },\n      ),\n    };\n  }\n  return {};\n}\n","import { ValidationMode } from '@wix/ambassador-forms-v1-validation-result/types';\nimport {\n  Format,\n  type PaymentType,\n  type PredefinedValidation,\n  PriceType,\n  type Product,\n  type Validation,\n  ValidationFormat,\n  type ValidationObjectArrayType,\n} from '@wix/ambassador-forms-v4-form/types';\nimport { type SomeJSONSchema } from 'ajv/dist/types/json-schema';\n\nimport { asRequired } from '../../utils/lang';\n\nimport { getArrayValidationProperties } from './array-schema-property-mapper';\nimport { propertySchemaMapper } from './property-schema-mapper';\nimport { PropertyTypes } from './property-types';\n\nexport function mapToPredefinedSchemaProperty(\n  target: String | undefined,\n  predefinedType: PredefinedValidation,\n  validationMode: ValidationMode = ValidationMode.UNKNOWN,\n): Omit<SomeJSONSchema, '$id'> | undefined {\n  const { format: predefinedTypeFormat } = predefinedType;\n  switch (predefinedTypeFormat) {\n    case ValidationFormat.WIX_FILE:\n      return propertySchemaMapper(\n        PREDEFINED_VALIDATIONS[ValidationFormat.WIX_FILE],\n        validationMode,\n      );\n    case ValidationFormat.SCHEDULING:\n      return propertySchemaMapper(\n        PREDEFINED_VALIDATIONS[ValidationFormat.SCHEDULING],\n        validationMode,\n      );\n    case ValidationFormat.PAYMENT:\n      return buildPaymentValidation(\n        predefinedType.paymentOptions as PaymentType,\n        validationMode,\n      );\n    case ValidationFormat.OBJECT_ARRAY:\n      return buildObjectArrayValidation(\n        asRequired(target, {}, 'target'),\n        predefinedType.objectArrayOptions ?? {},\n        validationMode,\n      );\n    case ValidationFormat.MULTILINE_ADDRESS:\n      throw new Error(`Multiline address field is handled as referenced field`);\n    default:\n      throw new Error(\n        `Unknown predefined validation type ${predefinedTypeFormat}`,\n      );\n  }\n}\n\nfunction buildObjectArrayValidation(\n  target: String,\n  objectArrayOptions: ValidationObjectArrayType,\n  validationMode: ValidationMode,\n): Omit<SomeJSONSchema, '$id'> {\n  return {\n    type: PropertyTypes.ARRAY,\n    ...(objectArrayOptions.maxItems &&\n      validationMode !== ValidationMode.UNRESTRICTED_UPDATE && {\n        maxItems: objectArrayOptions.maxItems,\n      }),\n    ...(objectArrayOptions.minItems &&\n      validationMode !== ValidationMode.UNRESTRICTED_UPDATE && {\n        minItems: objectArrayOptions.minItems,\n      }),\n    items: {\n      $ref: target,\n    },\n  };\n}\n\nfunction buildPaymentValidation(\n  paymentOptions: PaymentType,\n  validationMode: ValidationMode,\n): Omit<SomeJSONSchema, '$id'> {\n  if (validationMode === ValidationMode.UNRESTRICTED_UPDATE) {\n    return {\n      type: PropertyTypes.ARRAY,\n      items: {\n        type: PropertyTypes.OBJECT,\n        properties: {\n          productId: { type: PropertyTypes.STRING },\n          price: { type: PropertyTypes.STRING },\n          quantity: { type: PropertyTypes.INTEGER },\n          name: { type: PropertyTypes.STRING },\n        },\n        uniqueItemProperties: ['productId'],\n        required: ['productId', 'price', 'quantity'],\n      },\n    };\n  }\n\n  const products = paymentOptions.products || [];\n  const { minItems, maxItems } = paymentOptions;\n  const anyOfProduct = products.map((product) => {\n    const { minimum, maximum } = product.quantityLimit || {};\n    return propertySchemaMapper(\n      {\n        object: {\n          properties: {\n            productId: {\n              string: { enum: [asRequired(product.id, product, 'id')] },\n              required: true,\n            },\n            price: { ...buildPriceValidation(product), required: true },\n            quantity: {\n              integer: {\n                minimum: minimum ?? 1,\n                maximum: maximum ?? 100000,\n              },\n              required: true,\n            },\n            name: {\n              string: {\n                maxLength: 400,\n              },\n            },\n          },\n        },\n      },\n      validationMode,\n    );\n  });\n  return {\n    type: PropertyTypes.ARRAY,\n    items: {\n      type: PropertyTypes.OBJECT,\n      anyOf: anyOfProduct,\n    },\n    ...getArrayValidationProperties({ minItems, maxItems }),\n    uniqueItemProperties: ['productId'],\n    errorMessage: {\n      uniqueItemProperties: 'productId should appear in array at most once',\n    },\n  };\n}\n\nfunction buildPriceValidation(product: Product): Validation {\n  const { priceType } = product;\n  switch (priceType) {\n    case PriceType.FIXED_PRICE: {\n      const fixedPriceOptions = asRequired(\n        product.fixedPriceOptions,\n        product,\n        'fixedPriceOptions',\n      );\n      const price = asRequired(\n        fixedPriceOptions.price,\n        fixedPriceOptions,\n        'price',\n      );\n      return {\n        string: {\n          enum: [price],\n        },\n      };\n    }\n    case PriceType.DYNAMIC_PRICE: {\n      const dynamicPriceOptions = asRequired(\n        product.dynamicPriceOptions,\n        product,\n        'dynamicPriceOptions',\n      );\n      const minPrice = asRequired(\n        dynamicPriceOptions.minPrice,\n        dynamicPriceOptions,\n        'minPrice',\n      );\n      const { maxPrice } = dynamicPriceOptions;\n      return {\n        number: {\n          minimum: parseFloat(minPrice),\n          ...(maxPrice && { maximum: parseFloat(maxPrice) }),\n          multipleOf: 0.01,\n        },\n      };\n    }\n    default:\n      throw new Error(`Unknown price type ${priceType}`);\n  }\n}\n\nconst PREDEFINED_VALIDATIONS: { [key: string]: Validation } = {\n  [ValidationFormat.WIX_FILE]: {\n    array: {\n      maxItems: 30,\n      minItems: 1,\n      items: {\n        object: {\n          properties: {\n            fileId: {\n              string: {\n                maxLength: 100,\n              },\n              required: true,\n            },\n            displayName: {\n              string: {\n                maxLength: 300,\n              },\n              required: true,\n            },\n            url: {\n              string: {\n                minLength: 1,\n                maxLength: 300,\n              },\n              required: false,\n            },\n            fileType: {\n              string: {\n                maxLength: 100,\n              },\n              required: true,\n            },\n            imported: {\n              boolean: {},\n              required: false,\n            },\n          },\n        },\n      },\n    },\n  },\n  [ValidationFormat.SCHEDULING]: {\n    object: {\n      properties: {\n        startDate: {\n          string: {\n            format: Format.DATE_TIME,\n          },\n          required: true,\n        },\n        endDate: {\n          string: {\n            format: Format.DATE_TIME,\n          },\n          required: true,\n        },\n        timeZone: {\n          string: {\n            format: 'TIME_ZONE' as Format, // TODO edgbuc: add type to proto\n            maxLength: 50,\n          },\n          required: true,\n        },\n      },\n    },\n  },\n};\n","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",c=\"month\",f=\"quarter\",h=\"year\",d=\"date\",l=\"Invalid Date\",$=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),ordinal:function(t){var e=[\"th\",\"st\",\"nd\",\"rd\"],n=t%100;return\"[\"+t+(e[(n-20)%10]||e[n]||e[0])+\"]\"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()<n.date())return-t(n,e);var r=12*(n.year()-e.year())+(n.month()-e.month()),i=e.clone().add(r,c),s=n-i<0,u=e.clone().add(r+(s?-1:1),c);return+(-(r+(n-i)/(s?i-u:u-i))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return{M:c,y:h,w:o,d:a,D:d,h:u,m:s,s:i,ms:r,Q:f}[t]||String(t||\"\").toLowerCase().replace(/s$/,\"\")},u:function(t){return void 0===t}},g=\"en\",D={};D[g]=M;var p=\"$isDayjsObject\",S=function(t){return t instanceof _||!(!t||!t[p])},w=function t(e,n,r){var i;if(!e)return g;if(\"string\"==typeof e){var s=e.toLowerCase();D[s]&&(i=s),n&&(D[s]=n,i=s);var u=e.split(\"-\");if(!i&&u.length>1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},O=function(t,e){if(S(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},b=v;b.l=w,b.i=S,b.w=function(t,e){return O(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=w(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[p]=!0}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(b.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return b},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=O(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return O(t)<this.startOf(e)},m.isBefore=function(t,e){return this.endOf(e)<O(t)},m.$g=function(t,e,n){return b.u(t)?this[e]:this.set(n,t)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(t,e){var n=this,r=!!b.u(e)||e,f=b.p(t),l=function(t,e){var i=b.w(n.$u?Date.UTC(n.$y,e,t):new Date(n.$y,e,t),n);return r?i:i.endOf(a)},$=function(t,e){return b.w(n.toDate()[t].apply(n.toDate(\"s\"),(r?[0,0,0,0]:[23,59,59,999]).slice(e)),n)},y=this.$W,M=this.$M,m=this.$D,v=\"set\"+(this.$u?\"UTC\":\"\");switch(f){case h:return r?l(1,0):l(31,11);case c:return r?l(1,M):l(0,M+1);case o:var g=this.$locale().weekStart||0,D=(y<g?y+7:y)-g;return l(r?m-D:m+(6-D),M);case a:case d:return $(v+\"Hours\",0);case u:return $(v+\"Minutes\",1);case s:return $(v+\"Seconds\",2);case i:return $(v+\"Milliseconds\",3);default:return this.clone()}},m.endOf=function(t){return this.startOf(t,!1)},m.$set=function(t,e){var n,o=b.p(t),f=\"set\"+(this.$u?\"UTC\":\"\"),l=(n={},n[a]=f+\"Date\",n[d]=f+\"Date\",n[c]=f+\"Month\",n[h]=f+\"FullYear\",n[u]=f+\"Hours\",n[s]=f+\"Minutes\",n[i]=f+\"Seconds\",n[r]=f+\"Milliseconds\",n)[o],$=o===a?this.$D+(e-this.$W):e;if(o===c||o===h){var y=this.clone().set(d,1);y.$d[l]($),y.init(),this.$d=y.set(d,Math.min(this.$D,y.daysInMonth())).$d}else l&&this.$d[l]($);return this.init(),this},m.set=function(t,e){return this.clone().$set(t,e)},m.get=function(t){return this[b.p(t)]()},m.add=function(r,f){var d,l=this;r=Number(r);var $=b.p(f),y=function(t){var e=O(l);return b.w(e.date(e.date()+Math.round(t*r)),l)};if($===c)return this.set(c,this.$M+r);if($===h)return this.set(h,this.$y+r);if($===a)return y(1);if($===o)return y(7);var M=(d={},d[s]=e,d[u]=n,d[i]=t,d)[$]||1,m=this.$d.getTime()+r*M;return b.w(m,this)},m.subtract=function(t,e){return this.add(-1*t,e)},m.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return n.invalidDate||l;var r=t||\"YYYY-MM-DDTHH:mm:ssZ\",i=b.z(this),s=this.$H,u=this.$m,a=this.$M,o=n.weekdays,c=n.months,f=n.meridiem,h=function(t,n,i,s){return t&&(t[n]||t(e,r))||i[n].slice(0,s)},d=function(t){return b.s(s%12||12,t,\"0\")},$=f||function(t,e,n){var r=t<12?\"AM\":\"PM\";return n?r.toLowerCase():r};return r.replace(y,(function(t,r){return r||function(t){switch(t){case\"YY\":return String(e.$y).slice(-2);case\"YYYY\":return b.s(e.$y,4,\"0\");case\"M\":return a+1;case\"MM\":return b.s(a+1,2,\"0\");case\"MMM\":return h(n.monthsShort,a,c,3);case\"MMMM\":return h(c,a);case\"D\":return e.$D;case\"DD\":return b.s(e.$D,2,\"0\");case\"d\":return String(e.$W);case\"dd\":return h(n.weekdaysMin,e.$W,o,2);case\"ddd\":return h(n.weekdaysShort,e.$W,o,3);case\"dddd\":return o[e.$W];case\"H\":return String(s);case\"HH\":return b.s(s,2,\"0\");case\"h\":return d(1);case\"hh\":return d(2);case\"a\":return $(s,u,!0);case\"A\":return $(s,u,!1);case\"m\":return String(u);case\"mm\":return b.s(u,2,\"0\");case\"s\":return String(e.$s);case\"ss\":return b.s(e.$s,2,\"0\");case\"SSS\":return b.s(e.$ms,3,\"0\");case\"Z\":return i}return null}(t)||i.replace(\":\",\"\")}))},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(r,d,l){var $,y=this,M=b.p(d),m=O(r),v=(m.utcOffset()-this.utcOffset())*e,g=this-m,D=function(){return b.m(y,m)};switch(M){case h:$=D()/12;break;case c:$=D();break;case f:$=D()/3;break;case o:$=(g-v)/6048e5;break;case a:$=(g-v)/864e5;break;case u:$=g/n;break;case s:$=g/e;break;case i:$=g/t;break;default:$=g}return l?$:b.a($)},m.daysInMonth=function(){return this.endOf(c).$D},m.$locale=function(){return D[this.$L]},m.locale=function(t,e){if(!t)return this.$L;var n=this.clone(),r=w(t,e,!0);return r&&(n.$L=r),n},m.clone=function(){return b.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},M}(),k=_.prototype;return O.prototype=k,[[\"$ms\",r],[\"$s\",i],[\"$m\",s],[\"$H\",u],[\"$W\",a],[\"$M\",c],[\"$y\",h],[\"$D\",d]].forEach((function(t){k[t[1]]=function(e){return this.$g(e,t[0],t[1])}})),O.extend=function(t,e){return t.$i||(t(e,_,O),t.$i=!0),O},O.locale=w,O.isDayjs=S,O.unix=function(t){return O(1e3*t)},O.en=D[g],O.Ls=D,O.p={},O}));","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs_plugin_timezone=e()}(this,(function(){\"use strict\";var t={year:0,month:1,day:2,hour:3,minute:4,second:5},e={};return function(n,i,o){var r,a=function(t,n,i){void 0===i&&(i={});var o=new Date(t),r=function(t,n){void 0===n&&(n={});var i=n.timeZoneName||\"short\",o=t+\"|\"+i,r=e[o];return r||(r=new Intl.DateTimeFormat(\"en-US\",{hour12:!1,timeZone:t,year:\"numeric\",month:\"2-digit\",day:\"2-digit\",hour:\"2-digit\",minute:\"2-digit\",second:\"2-digit\",timeZoneName:i}),e[o]=r),r}(n,i);return r.formatToParts(o)},u=function(e,n){for(var i=a(e,n),r=[],u=0;u<i.length;u+=1){var f=i[u],s=f.type,m=f.value,c=t[s];c>=0&&(r[c]=parseInt(m,10))}var d=r[3],l=24===d?0:d,h=r[0]+\"-\"+r[1]+\"-\"+r[2]+\" \"+l+\":\"+r[4]+\":\"+r[5]+\":000\",v=+e;return(o.utc(h).valueOf()-(v-=v%1e3))/6e4},f=i.prototype;f.tz=function(t,e){void 0===t&&(t=r);var n,i=this.utcOffset(),a=this.toDate(),u=a.toLocaleString(\"en-US\",{timeZone:t}),f=Math.round((a-new Date(u))/1e3/60),s=15*-Math.round(a.getTimezoneOffset()/15)-f;if(!Number(s))n=this.utcOffset(0,e);else if(n=o(u,{locale:this.$L}).$set(\"millisecond\",this.$ms).utcOffset(s,!0),e){var m=n.utcOffset();n=n.add(i-m,\"minute\")}return n.$x.$timezone=t,n},f.offsetName=function(t){var e=this.$x.$timezone||o.tz.guess(),n=a(this.valueOf(),e,{timeZoneName:t}).find((function(t){return\"timezonename\"===t.type.toLowerCase()}));return n&&n.value};var s=f.startOf;f.startOf=function(t,e){if(!this.$x||!this.$x.$timezone)return s.call(this,t,e);var n=o(this.format(\"YYYY-MM-DD HH:mm:ss:SSS\"),{locale:this.$L});return s.call(n,t,e).tz(this.$x.$timezone,!0)},o.tz=function(t,e,n){var i=n&&e,a=n||e||r,f=u(+o(),a);if(\"string\"!=typeof t)return o(t).tz(a);var s=function(t,e,n){var i=t-60*e*1e3,o=u(i,n);if(e===o)return[i,e];var r=u(i-=60*(o-e)*1e3,n);return o===r?[i,o]:[t-60*Math.min(o,r)*1e3,Math.max(o,r)]}(o.utc(t,i).valueOf(),f,a),m=s[0],c=s[1],d=o(m).utcOffset(c);return d.$x.$timezone=a,d},o.tz.guess=function(){return Intl.DateTimeFormat().resolvedOptions().timeZone},o.tz.setDefault=function(t){r=t}}}));","!function(t,i){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=i():\"function\"==typeof define&&define.amd?define(i):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs_plugin_utc=i()}(this,(function(){\"use strict\";var t=\"minute\",i=/[+-]\\d\\d(?::?\\d\\d)?/g,e=/([+-]|\\d\\d)/g;return function(s,f,n){var u=f.prototype;n.utc=function(t){var i={date:t,utc:!0,args:arguments};return new f(i)},u.utc=function(i){var e=n(this.toDate(),{locale:this.$L,utc:!0});return i?e.add(this.utcOffset(),t):e},u.local=function(){return n(this.toDate(),{locale:this.$L,utc:!1})};var r=u.parse;u.parse=function(t){t.utc&&(this.$u=!0),this.$utils().u(t.$offset)||(this.$offset=t.$offset),r.call(this,t)};var o=u.init;u.init=function(){if(this.$u){var t=this.$d;this.$y=t.getUTCFullYear(),this.$M=t.getUTCMonth(),this.$D=t.getUTCDate(),this.$W=t.getUTCDay(),this.$H=t.getUTCHours(),this.$m=t.getUTCMinutes(),this.$s=t.getUTCSeconds(),this.$ms=t.getUTCMilliseconds()}else o.call(this)};var a=u.utcOffset;u.utcOffset=function(s,f){var n=this.$utils().u;if(n(s))return this.$u?0:n(this.$offset)?a.call(this):this.$offset;if(\"string\"==typeof s&&(s=function(t){void 0===t&&(t=\"\");var s=t.match(i);if(!s)return null;var f=(\"\"+s[0]).match(e)||[\"-\",0,0],n=f[0],u=60*+f[1]+ +f[2];return 0===u?0:\"+\"===n?u:-u}(s),null===s))return this;var u=Math.abs(s)<=16?60*s:s;if(0===u)return this.utc(f);var r=this.clone();if(f)return r.$offset=u,r.$u=!1,r;var o=this.$u?this.toDate().getTimezoneOffset():-1*this.utcOffset();return(r=this.local().add(u+o,t)).$offset=u,r.$x.$localOffset=o,r};var h=u.format;u.format=function(t){var i=t||(this.$u?\"YYYY-MM-DDTHH:mm:ss[Z]\":\"\");return h.call(this,i)},u.valueOf=function(){var t=this.$utils().u(this.$offset)?0:this.$offset+(this.$x.$localOffset||this.$d.getTimezoneOffset());return this.$d.valueOf()-6e4*t},u.isUTC=function(){return!!this.$u},u.toISOString=function(){return this.toDate().toISOString()},u.toString=function(){return this.toDate().toUTCString()};var l=u.toDate;u.toDate=function(t){return\"s\"===t&&this.$offset?n(this.format(\"YYYY-MM-DD HH:mm:ss:SSS\")).toDate():l.call(this)};var c=u.diff;u.diff=function(t,i,e){if(t&&this.$u===t.$u)return c.call(this,t,i,e);var s=this.local(),f=n(t).local();return c.call(s,f,i,e)}}}));","export const CALLING_COUNTRY_CODES = {\n  AW: 'ABW',\n  AO: 'AGO',\n  AF: 'AFG',\n  AI: 'AIA',\n  AX: 'ALA',\n  AL: 'ALB',\n  AD: 'AND',\n  AE: 'ARE',\n  AR: 'ARG',\n  AM: 'ARM',\n  AS: 'ASM',\n  AG: 'ATG',\n  AU: 'AUS',\n  AT: 'AUT',\n  AZ: 'AZE',\n  BI: 'BDI',\n  BE: 'BEL',\n  BJ: 'BEN',\n  BQ: 'BES',\n  BF: 'BFA',\n  BD: 'BGD',\n  BG: 'BGR',\n  BH: 'BHR',\n  BS: 'BHS',\n  BA: 'BIH',\n  BL: 'BLM',\n  BY: 'BLR',\n  BZ: 'BLZ',\n  BM: 'BMU',\n  BO: 'BOL',\n  BR: 'BRA',\n  BB: 'BRB',\n  BN: 'BRN',\n  BT: 'BTN',\n  BW: 'BWA',\n  CF: 'CAF',\n  CA: 'CAN',\n  CC: 'CCK',\n  CH: 'CHE',\n  CL: 'CHL',\n  CN: 'CHN',\n  CI: 'CIV',\n  CM: 'CMR',\n  CD: 'COD',\n  CG: 'COG',\n  CK: 'COK',\n  CO: 'COL',\n  KM: 'COM',\n  CV: 'CPV',\n  CR: 'CRI',\n  CW: 'CUW',\n  CX: 'CXR',\n  KY: 'CYM',\n  CY: 'CYP',\n  CZ: 'CZE',\n  DE: 'DEU',\n  DJ: 'DJI',\n  DM: 'DMA',\n  DK: 'DNK',\n  DO: 'DOM',\n  DZ: 'DZA',\n  EC: 'ECU',\n  EG: 'EGY',\n  ER: 'ERI',\n  ES: 'ESP',\n  EE: 'EST',\n  ET: 'ETH',\n  FI: 'FIN',\n  FJ: 'FJI',\n  FK: 'FLK',\n  FR: 'FRA',\n  FO: 'FRO',\n  FM: 'FSM',\n  GA: 'GAB',\n  GB: 'GBR',\n  GE: 'GEO',\n  GG: 'GGY',\n  GH: 'GHA',\n  GI: 'GIB',\n  GN: 'GIN',\n  GP: 'GLP',\n  GM: 'GMB',\n  GW: 'GNB',\n  GQ: 'GNQ',\n  GR: 'GRC',\n  GD: 'GRD',\n  GL: 'GRL',\n  GT: 'GTM',\n  GF: 'GUF',\n  GU: 'GUM',\n  GY: 'GUY',\n  HK: 'HKG',\n  HN: 'HND',\n  HR: 'HRV',\n  HT: 'HTI',\n  HU: 'HUN',\n  ID: 'IDN',\n  IM: 'IMN',\n  IN: 'IND',\n  IO: 'IOT',\n  IE: 'IRL',\n  IS: 'ISL',\n  IL: 'ISR',\n  IT: 'ITA',\n  IQ: 'IRQ',\n  JM: 'JAM',\n  JE: 'JEY',\n  JO: 'JOR',\n  JP: 'JPN',\n  KZ: 'KAZ',\n  KE: 'KEN',\n  KG: 'KGZ',\n  KH: 'KHM',\n  KI: 'KIR',\n  KN: 'KNA',\n  KR: 'KOR',\n  KW: 'KWT',\n  LA: 'LAO',\n  LB: 'LBN',\n  LR: 'LBR',\n  LY: 'LBY',\n  LC: 'LCA',\n  LI: 'LIE',\n  LK: 'LKA',\n  LS: 'LSO',\n  LT: 'LTU',\n  LU: 'LUX',\n  LV: 'LVA',\n  MO: 'MAC',\n  MF: 'MAF',\n  MA: 'MAR',\n  MC: 'MCO',\n  MD: 'MDA',\n  MG: 'MDG',\n  MV: 'MDV',\n  MX: 'MEX',\n  MH: 'MHL',\n  MK: 'MKD',\n  ML: 'MLI',\n  MT: 'MLT',\n  MM: 'MMR',\n  ME: 'MNE',\n  MN: 'MNG',\n  MP: 'MNP',\n  MZ: 'MOZ',\n  MR: 'MRT',\n  MS: 'MSR',\n  MQ: 'MTQ',\n  MU: 'MUS',\n  MW: 'MWI',\n  MY: 'MYS',\n  YT: 'MYT',\n  NA: 'NAM',\n  NC: 'NCL',\n  NE: 'NER',\n  NF: 'NFK',\n  NG: 'NGA',\n  NI: 'NIC',\n  NU: 'NIU',\n  NL: 'NLD',\n  NO: 'NOR',\n  NP: 'NPL',\n  NR: 'NRU',\n  NZ: 'NZL',\n  OM: 'OMN',\n  PK: 'PAK',\n  PA: 'PAN',\n  PE: 'PER',\n  PH: 'PHL',\n  PW: 'PLW',\n  PG: 'PNG',\n  PL: 'POL',\n  PR: 'PRI',\n  PT: 'PRT',\n  PY: 'PRY',\n  PS: 'PSE',\n  PF: 'PYF',\n  QA: 'QAT',\n  RE: 'REU',\n  RO: 'ROU',\n  RU: 'RUS',\n  RW: 'RWA',\n  SA: 'SAU',\n  SD: 'SDN',\n  SN: 'SEN',\n  SG: 'SGP',\n  SH: 'SHN',\n  SJ: 'SJM',\n  SB: 'SLB',\n  SL: 'SLE',\n  SV: 'SLV',\n  SM: 'SMR',\n  SO: 'SOM',\n  PM: 'SPM',\n  RS: 'SRB',\n  SS: 'SSD',\n  ST: 'STP',\n  SR: 'SUR',\n  SK: 'SVK',\n  SI: 'SVN',\n  SE: 'SWE',\n  SZ: 'SWZ',\n  SX: 'SXM',\n  SC: 'SYC',\n  TC: 'TCA',\n  TD: 'TCD',\n  TG: 'TGO',\n  TH: 'THA',\n  TJ: 'TJK',\n  TK: 'TKL',\n  TM: 'TKM',\n  TL: 'TLS',\n  TO: 'TON',\n  TT: 'TTO',\n  TN: 'TUN',\n  TR: 'TUR',\n  TV: 'TUV',\n  TW: 'TWN',\n  TZ: 'TZA',\n  UG: 'UGA',\n  UA: 'UKR',\n  UY: 'URY',\n  US: 'USA',\n  UZ: 'UZB',\n  VA: 'VAT',\n  VC: 'VCT',\n  VE: 'VEN',\n  VG: 'VGB',\n  VI: 'VIR',\n  VN: 'VNM',\n  VU: 'VUT',\n  WF: 'WLF',\n  WS: 'WSM',\n  XK: 'KOS',\n  YE: 'YEM',\n  ZA: 'ZAF',\n  ZM: 'ZMB',\n  ZW: 'ZWE',\n} as const;\n\nexport type CallingCountryCode = keyof typeof CALLING_COUNTRY_CODES;\n\nexport type CallingCountryCodeAlpha3 =\n  (typeof CALLING_COUNTRY_CODES)[CallingCountryCode];\n","import {\n  type DateTimeConstraints,\n  type PhoneConstraints,\n  Format,\n} from '@wix/ambassador-forms-v4-form/types';\nimport dayJs, { type UnitTypeShort, type Dayjs } from 'dayjs';\nimport timezonePlugin from 'dayjs/plugin/timezone';\nimport utc from 'dayjs/plugin/utc';\n\nimport { CALLING_COUNTRY_CODES } from '../../calling-country-codes';\nimport { asOptional } from '../../utils/lang';\n\ndayJs.extend(utc);\ndayJs.extend(timezonePlugin);\n\nconst newDate = dayJs.utc;\n\nconst RELATIVE_FORMAT_REGEX = /^\\$now(?:([+-])(\\d{1,2})([yMdmh]))?$/;\nconst ISO_DATE_REGEX = /^\\d{4}-\\d{2}-\\d{2}$/;\nconst ISO_TIME_REGEX = /^\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?$/;\nconst ISO_DATE_TIME_REGEX =\n  /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})?$/;\n\nexport function stringFormatOptionsMapper(\n  format: Format,\n  dateFormatOptions?: DateTimeConstraints,\n  dateFactory: () => Date = () => new Date(),\n  phoneFormatOptions?: PhoneConstraints,\n  libraryBasedPhoneFieldValidationEnabled: boolean = false,\n): {\n  formatMinimum?: string;\n  formatMaximum?: string;\n  phone?: boolean;\n  allowedCountryCodes?: string[];\n} {\n  const stringDateFormatOptions = {\n    formatMinimum: parseIfNeeded(\n      format,\n      dateFactory,\n      asOptional(dateFormatOptions?.minimum),\n    ),\n    formatMaximum: parseIfNeeded(\n      format,\n      dateFactory,\n      asOptional(dateFormatOptions?.maximum),\n    ),\n  };\n\n  if (libraryBasedPhoneFieldValidationEnabled) {\n    return {\n      ...stringDateFormatOptions,\n      phone: format === 'PHONE' ? true : undefined,\n      allowedCountryCodes:\n        format === 'PHONE'\n          ? phoneFormatOptions?.allowedCountryCodes?.length\n            ? phoneFormatOptions.allowedCountryCodes\n            : Object.keys(CALLING_COUNTRY_CODES)\n          : undefined,\n    };\n  } else {\n    return stringDateFormatOptions;\n  }\n}\n\nexport function parseIfNeeded(\n  format: Format,\n  dateProvider: () => Date,\n  value?: string,\n  timezone?: string,\n): string | undefined {\n  if (!value) {\n    return value;\n  }\n  if (isStaticDateOrTime(value)) {\n    return value;\n  }\n  if (isRelativeDate(value)) {\n    const currentDate: Dayjs = timezone\n      ? dayJs(dateProvider().toISOString()).tz(timezone)\n      : newDate(dateProvider().toISOString());\n    const resolved = mapToStaticDate(value, currentDate);\n    if (!resolved) {\n      return undefined;\n    }\n    return format === Format.DATE_TIME ||\n      format === Format.DATE_OPTIONAL_TIME ||\n      !timezone\n      ? resolved.utc().format(asIsoFormat(format))\n      : resolved.format(asIsoFormat(format));\n  }\n  return undefined;\n}\n\nfunction isRelativeDate(value: string): boolean {\n  return RELATIVE_FORMAT_REGEX.test(value);\n}\n\nfunction isStaticDateOrTime(value: string): boolean {\n  return (\n    ISO_DATE_REGEX.test(value) ||\n    ISO_TIME_REGEX.test(value) ||\n    ISO_DATE_TIME_REGEX.test(value)\n  );\n}\n\nfunction mapToStaticDate(value: string, currentDate: Dayjs): Dayjs | undefined {\n  if (value === '$now') {\n    return currentDate;\n  }\n\n  try {\n    const [, operator, amountStr, unitStr] =\n      value.match(RELATIVE_FORMAT_REGEX) ?? [];\n    const amount = parseAmount(amountStr);\n    const unit = parseUnitType(unitStr);\n    if (amount && unit) {\n      const setDate = parseAction(currentDate, operator);\n      return setDate(amount, unit);\n    }\n    return undefined;\n  } catch (e) {\n    console.error(`Failed to parse format ${value}`, e);\n    return undefined;\n  }\n}\n\nfunction parseAmount(amount: string): number | undefined {\n  const number = parseInt(amount, 10);\n  return isNaN(number) ? undefined : number;\n}\n\nfunction parseAction(\n  currentDate: Dayjs,\n  operator: string,\n): (amount: number, unit: UnitTypeShort) => Dayjs {\n  switch (operator) {\n    case '+':\n      return currentDate.add.bind(currentDate);\n    case '-':\n      return currentDate.subtract.bind(currentDate);\n    default:\n      return () => currentDate;\n  }\n}\n\nfunction parseUnitType(unit: string): UnitTypeShort | undefined {\n  const supportedUnits: UnitTypeShort[] = ['d', 'M', 'y', 'h', 'm'];\n  if (supportedUnits.includes(unit as UnitTypeShort)) {\n    return unit as UnitTypeShort;\n  }\n  return undefined;\n}\n\nfunction asIsoFormat(format: Format): string | undefined {\n  switch (format) {\n    case Format.DATE:\n      return 'YYYY-MM-DD';\n    case Format.TIME:\n      return 'HH:mm:ss';\n    case Format.DATE_TIME:\n    case Format.DATE_OPTIONAL_TIME:\n      return 'YYYY-MM-DDTHH:mm:ss[Z]';\n    default:\n      return undefined;\n  }\n}\n","import { ValidationMode } from '@wix/ambassador-forms-v1-validation-result/types';\nimport {\n  type DateTimeConstraints,\n  Format,\n  type ValidationStringType,\n  type StringType,\n} from '@wix/ambassador-forms-v4-form/types';\nimport { type SomeJSONSchema } from 'ajv/dist/types/json-schema';\nimport { type FormatName } from 'ajv-formats/dist/formats';\n\nimport { asRequired } from '../../utils/lang';\nimport {\n  setValidationMessages,\n  setValidationProperties,\n} from '../../utils/validation';\nimport { type CustomFormat } from '../ajv/ajv-custom-formats';\nimport { STRING_VALIDATION_PROPERTIES } from '../schema-validation-properties';\n\nimport { PropertyTypes } from './property-types';\nimport { stringFormatOptionsMapper } from './string-format-options-mapper';\n\nconst ALLOWED_MAX_LENGTH = 20000;\n\nexport function mapToStringSchemaProperty(\n  stringField: StringType | ValidationStringType,\n  validationMode: ValidationMode,\n  libraryBasedPhoneFieldValidationEnabled: boolean = false,\n): SomeJSONSchema & { type: 'string' } {\n  const validationMessages = isStringType(stringField)\n    ? setValidationMessages(STRING_VALIDATION_PROPERTIES, stringField)\n    : {};\n  return {\n    type: PropertyTypes.STRING,\n    maxLength: ALLOWED_MAX_LENGTH,\n    ...validationMessages,\n    ...resolveAjvFormat(stringField),\n    ...resolveRestrictedValidationProperties(\n      stringField,\n      validationMode,\n      libraryBasedPhoneFieldValidationEnabled,\n    ),\n  };\n}\n\nfunction isStringType(\n  field: StringType | ValidationStringType,\n): field is StringType {\n  return 'validationMessages' in field;\n}\n\nfunction resolveRestrictedValidationProperties(\n  stringField: StringType | ValidationStringType,\n  validationMode: ValidationMode,\n  libraryBasedPhoneFieldValidationEnabled: boolean,\n) {\n  if (validationMode !== ValidationMode.UNRESTRICTED_UPDATE) {\n    return {\n      ...setValidationProperties<number>(\n        STRING_VALIDATION_PROPERTIES.filter(\n          (property) => property !== 'format',\n        ),\n        stringField,\n        {\n          maxLength: (value) =>\n            Math.min(value ?? ALLOWED_MAX_LENGTH, ALLOWED_MAX_LENGTH),\n        },\n      ),\n      ...stringFormatOptionsMapper(\n        stringField.format as Format,\n        getDateTimeConstrains(stringField),\n        undefined,\n        stringField.phoneOptions,\n        libraryBasedPhoneFieldValidationEnabled,\n      ),\n    };\n  }\n  return {};\n}\n\nfunction resolveAjvFormat(stringField: StringType | ValidationStringType) {\n  const stringFormat =\n    stringField.format &&\n    formMap[asRequired(stringField.format, stringField, 'format')];\n  if (!stringFormat) {\n    return {};\n  } else if (stringFormat.length === 1) {\n    return { format: stringFormat[0] };\n  } else {\n    return {\n      oneOf: stringFormat.map((format) => ({ format })),\n    };\n  }\n}\n\nconst formMap: { [key: string]: (FormatName | CustomFormat)[] } = {\n  [Format.DATE]: ['date'],\n  [Format.TIME]: ['time'],\n  [Format.DATE_TIME]: ['date-time'],\n  [Format.EMAIL]: ['email'],\n  [Format.URL]: ['url'],\n  [Format.UUID]: ['uuid'],\n  [Format.PHONE]: ['phone'],\n  [Format.URI]: ['uri'],\n  [Format.HOSTNAME]: ['hostname'],\n  [Format.COLOR_HEX]: ['color-hex'],\n  [Format.CURRENCY]: ['currency'],\n  [Format.LANGUAGE]: ['language'],\n  [Format.DATE_OPTIONAL_TIME]: ['date-time', 'date'],\n  TIME_ZONE: ['time-zone'],\n};\n\nfunction getDateTimeConstrains(\n  field: StringType | ValidationStringType,\n): DateTimeConstraints | undefined {\n  if ('dateOptions' in field) {\n    return field.dateOptions;\n  }\n  if ('dateTimeOptions' in field) {\n    return field.dateTimeOptions;\n  }\n  if ('timeOptions' in field) {\n    return field.timeOptions;\n  }\n  if ('dateOptionalTimeOptions' in field) {\n    return field.dateOptionalTimeOptions;\n  }\n  return undefined;\n}\n","import { ValidationMode } from '@wix/ambassador-forms-v1-validation-result/types';\nimport {\n  type ValidationArrayTypeArrayItems,\n  type ValidationObjectTypePropertiesType,\n  type Validation,\n} from '@wix/ambassador-forms-v4-form/types';\nimport { type SomeJSONSchema } from 'ajv/dist/types/json-schema';\n\nimport { mapToArraySchemaProperty } from './array-schema-property-mapper';\nimport { mapToBooleanSchemaProperty } from './boolean-schema-property-mapper';\nimport { mapToIntegerSchemaProperty } from './integer-schema-property-mapper';\nimport { mapToNumberSchemaProperty } from './number-schema-property-mapper';\nimport { mapToObjectSchemaProperty } from './object-schema-property-mapper';\nimport { mapToPredefinedSchemaProperty } from './predefined-schema-property-mapper';\nimport { mapToStringSchemaProperty } from './string-schema-property-mapper';\n\nexport type PropertySchemaMapper = typeof propertySchemaMapper;\n\nexport function propertySchemaMapper(\n  fieldValidation?: Validation &\n    ValidationObjectTypePropertiesType &\n    ValidationArrayTypeArrayItems,\n  target: String | undefined = undefined,\n  validationMode: ValidationMode = ValidationMode.UNKNOWN,\n  libraryBasedPhoneFieldValidationEnabled: boolean = false,\n): Omit<SomeJSONSchema, '$id'> | undefined {\n  if (fieldValidation?.string) {\n    return mapToStringSchemaProperty(\n      fieldValidation.string,\n      validationMode,\n      libraryBasedPhoneFieldValidationEnabled,\n    );\n  }\n\n  if (fieldValidation?.stringOptions) {\n    return mapToStringSchemaProperty(\n      fieldValidation?.stringOptions,\n      validationMode,\n      libraryBasedPhoneFieldValidationEnabled,\n    );\n  }\n\n  if (fieldValidation?.number) {\n    return mapToNumberSchemaProperty(fieldValidation.number, validationMode);\n  }\n\n  if (fieldValidation?.numberOptions) {\n    return mapToNumberSchemaProperty(\n      fieldValidation.numberOptions,\n      validationMode,\n    );\n  }\n\n  if (fieldValidation?.integer) {\n    return mapToIntegerSchemaProperty(fieldValidation.integer, validationMode);\n  }\n\n  if (fieldValidation?.boolean) {\n    return mapToBooleanSchemaProperty(fieldValidation?.boolean, validationMode);\n  }\n\n  if (fieldValidation?.booleanOptions) {\n    return mapToBooleanSchemaProperty(\n      fieldValidation?.booleanOptions,\n      validationMode,\n    );\n  }\n\n  if (fieldValidation?.array) {\n    return mapToArraySchemaProperty(\n      fieldValidation.array,\n      validationMode,\n      libraryBasedPhoneFieldValidationEnabled,\n    );\n  }\n\n  if (fieldValidation?.arrayOptions) {\n    return mapToArraySchemaProperty(\n      fieldValidation.arrayOptions,\n      validationMode,\n      libraryBasedPhoneFieldValidationEnabled,\n    );\n  }\n\n  if (fieldValidation?.object) {\n    return mapToObjectSchemaProperty(fieldValidation.object, validationMode);\n  }\n\n  if (fieldValidation?.objectOptions) {\n    return mapToObjectSchemaProperty(\n      fieldValidation.objectOptions,\n      validationMode,\n    );\n  }\n\n  if (fieldValidation?.predefined) {\n    return mapToPredefinedSchemaProperty(\n      target,\n      fieldValidation.predefined,\n      validationMode,\n    );\n  }\n\n  return undefined;\n}\n","import { ValidationMode } from '@wix/ambassador-forms-v1-validation-result/types';\nimport {\n  type ObjectType,\n  type PropertiesType,\n} from '@wix/ambassador-forms-v4-form/types';\nimport { type JSONSchemaType } from 'ajv/dist/types/json-schema';\n\nimport { propertySchemaMapper } from './property-schema-mapper';\nimport { PropertyTypes } from './property-types';\n\nexport function mapToObjectSchemaProperty(\n  objectField: ObjectType,\n  validationMode: ValidationMode,\n): Omit<JSONSchemaType<object>, 'required'> & { required: string[] } {\n  const properties = buildPropertiesSchema(\n    validationMode,\n    objectField.properties,\n  );\n\n  return {\n    type: PropertyTypes.OBJECT,\n    additionalProperties: false,\n    properties,\n    ...resolveRestrictedValidationProperties(objectField, validationMode),\n  };\n}\n\nfunction resolveRestrictedValidationProperties(\n  objectField: ObjectType,\n  validationMode: ValidationMode,\n) {\n  if (validationMode !== ValidationMode.UNRESTRICTED_UPDATE) {\n    return {\n      required: fetchRequiredProperties(objectField.properties),\n    };\n  }\n  return {\n    required: [],\n  };\n}\n\nfunction fetchRequiredProperties(\n  properties: Record<string, PropertiesType> = {},\n): string[] {\n  const propertiesNames = Object.keys(properties);\n  return propertiesNames.reduce<string[]>((acc, propertyName) => {\n    const property = properties[propertyName];\n    const isRequired = isRequiredProperty(property);\n    if (isRequired) {\n      acc.push(propertyName);\n    }\n    return acc;\n  }, []);\n}\n\nfunction isRequiredProperty(property?: PropertiesType) {\n  return (property || { required: false }).required;\n}\n\nfunction buildPropertiesSchema(\n  validationMode: ValidationMode,\n  properties?: Record<string, PropertiesType>,\n) {\n  if (properties) {\n    const propertiesNames = Object.keys(properties);\n    return propertiesNames.reduce<{ [key: string]: object }>(\n      (acc, propertyName) => {\n        const property = properties[propertyName];\n        const propertyValidationSchema = propertySchemaMapper(\n          property,\n          undefined,\n          validationMode,\n        );\n        if (propertyValidationSchema) {\n          acc[propertyName] = propertyValidationSchema;\n        }\n        return acc;\n      },\n      {},\n    );\n  }\n  return {};\n}\n","import { type ValidationMode } from '@wix/ambassador-forms-v1-validation-result/types';\nimport {\n  type ValidationArrayTypeArrayItems,\n  type FieldsInputField,\n  type ValidationArrayType,\n  ArrayItemsItemType,\n} from '@wix/ambassador-forms-v4-form/types';\nimport {\n  type PartialSchema,\n  type SomeJSONSchema,\n} from 'ajv/dist/types/json-schema';\n\nimport { asRequired, isDefined } from '../../../utils/lang';\nimport { setValidationProperties } from '../../../utils/validation';\nimport { mapToBooleanSchemaProperty } from '../boolean-schema-property-mapper';\nimport { mapToNumberSchemaProperty } from '../number-schema-property-mapper';\nimport { mapToObjectSchemaProperty } from '../object-schema-property-mapper';\nimport { PropertyTypes } from '../property-types';\nimport { mapToStringSchemaProperty } from '../string-schema-property-mapper';\n\nconst ARRAY_VALIDATION_PROPERTIES = ['minItems', 'maxItems'];\nconst ALLOWED_MAX_ITEMS = 100;\n\nexport function arraySchemaPropertyMapperPlatformised(\n  inputField: FieldsInputField,\n  validationMode: ValidationMode,\n  libraryBasedPhoneFieldValidationEnabled: boolean = false,\n): PartialSchema<[]> {\n  const arrayInput = asRequired(\n    inputField.arrayOptions,\n    inputField,\n    'arrayOptions',\n  );\n  const optionsValues = getValuesFromOptions(\n    isDefined(arrayInput.checkboxGroupOptions?.customOption),\n    arrayInput.checkboxGroupOptions?.options,\n  );\n  const arrayValidation: ValidationArrayType = asRequired(\n    arrayInput.validation,\n    arrayInput,\n    'validation',\n  );\n  const itemsValidation = resolveArrayItemsValidation(\n    validationMode,\n    arrayValidation.items,\n    optionsValues,\n    libraryBasedPhoneFieldValidationEnabled,\n  );\n\n  return {\n    type: PropertyTypes.ARRAY,\n    ...setValidationProperties<number>(\n      ARRAY_VALIDATION_PROPERTIES,\n      arrayValidation,\n      {\n        maxItems: (value) =>\n          Math.min(value ?? ALLOWED_MAX_ITEMS, ALLOWED_MAX_ITEMS),\n      },\n    ),\n    ...(itemsValidation && { items: itemsValidation }),\n  };\n}\n\nfunction resolveArrayItemsValidation(\n  validationMode: ValidationMode,\n  arrayItems?: ValidationArrayTypeArrayItems,\n  optionsValues: unknown[] = [],\n  libraryBasedPhoneFieldValidationEnabled: boolean = false,\n): Omit<SomeJSONSchema, '$id'> | undefined {\n  switch (arrayItems?.itemType ?? ArrayItemsItemType.UNKNOWN_ITEM_TYPE) {\n    case ArrayItemsItemType.STRING:\n      return mapToStringSchemaProperty(\n        makeEnumValidation(arrayItems?.stringOptions!, optionsValues),\n        validationMode,\n        libraryBasedPhoneFieldValidationEnabled,\n      );\n    case ArrayItemsItemType.NUMBER:\n      return mapToNumberSchemaProperty(\n        makeEnumValidation(arrayItems?.numberOptions!, optionsValues),\n        validationMode,\n      );\n    case ArrayItemsItemType.BOOLEAN:\n      return mapToBooleanSchemaProperty(\n        makeEnumValidation(arrayItems?.booleanOptions!, optionsValues),\n        validationMode,\n      );\n    case ArrayItemsItemType.OBJECT:\n      return mapToObjectSchemaProperty(\n        arrayItems?.objectOptions!,\n        validationMode,\n      );\n    default:\n      throw Error('Required to specify items type for array');\n  }\n}\n\nexport function getValuesFromOptions<T>(\n  customOptionDefined: boolean,\n  options?: {\n    value?: T | null;\n  }[],\n): T[] | undefined {\n  if (customOptionDefined || !isDefined(options)) {\n    return undefined;\n  }\n  return options.map((_) => _.value).filter(isDefined);\n}\n\nexport function makeEnumValidation<E, T extends { enum?: E[] | null }>(\n  enumeratableValidation: T,\n  optionsValues?: E[],\n) {\n  if (enumeratableValidation.enum?.length) {\n    return enumeratableValidation;\n  } else {\n    return {\n      ...enumeratableValidation,\n      enum: optionsValues,\n    };\n  }\n}\n","import { type ValidationMode } from '@wix/ambassador-forms-v1-validation-result/types';\nimport { type FieldsInputField } from '@wix/ambassador-forms-v4-form/types';\nimport { type SomeJSONSchema } from 'ajv/dist/types/json-schema';\n\nimport { asRequired, isDefined } from '../../../utils/lang';\nimport { mapToStringSchemaProperty } from '../string-schema-property-mapper';\n\nimport {\n  getValuesFromOptions,\n  makeEnumValidation,\n} from './array-schema-property-mapper-platformised';\n\nexport function mapStringInputFieldToSchema(\n  inputField: FieldsInputField,\n  validationMode: ValidationMode,\n  libraryBasedPhoneFieldValidationEnabled: boolean = false,\n): SomeJSONSchema & { type: 'string' } {\n  const stringInput = asRequired(\n    inputField.stringOptions,\n    inputField,\n    'stringOptions',\n  );\n  const stringValidation = asRequired(\n    stringInput.validation,\n    stringInput,\n    'validation',\n  );\n  const optionsValues =\n    getValuesFromOptions(\n      isDefined(stringInput.radioGroupOptions?.customOption),\n      stringInput.radioGroupOptions?.options,\n    ) ||\n    getValuesFromOptions(\n      isDefined(stringInput.dropdownOptions?.customOption),\n      stringInput.dropdownOptions?.options,\n    );\n  return mapToStringSchemaProperty(\n    makeEnumValidation(stringValidation, optionsValues),\n    validationMode,\n    libraryBasedPhoneFieldValidationEnabled,\n  );\n}\n","import { type ValidationMode } from '@wix/ambassador-forms-v1-validation-result/types';\nimport {\n  type FieldsInputField,\n  InputFieldInputType,\n  ValidationFormat,\n} from '@wix/ambassador-forms-v4-form/types';\nimport { type SomeJSONSchema } from 'ajv/dist/types/json-schema';\n\nimport { asRequired } from '../../../utils/lang';\nimport { mapToBooleanSchemaProperty } from '../boolean-schema-property-mapper';\nimport { mapToNumberSchemaProperty } from '../number-schema-property-mapper';\nimport { mapToObjectSchemaProperty } from '../object-schema-property-mapper';\nimport { mapToPredefinedSchemaProperty } from '../predefined-schema-property-mapper';\n\nimport { arraySchemaPropertyMapperPlatformised } from './array-schema-property-mapper-platformised';\nimport { mapStringInputFieldToSchema } from './string-input-field-schema-mapper';\n\nexport type PlatformisedFieldToValidationTransformer =\n  typeof transformPlatformisedFieldToValidation;\n\nexport function transformPlatformisedFieldToValidation(\n  inputField: FieldsInputField,\n  validationMode: ValidationMode,\n  libraryBasedPhoneFieldValidationEnabled: boolean = false,\n): Omit<SomeJSONSchema, '$id'> | undefined {\n  switch (inputField.inputType) {\n    case InputFieldInputType.STRING:\n      return mapStringInputFieldToSchema(\n        inputField,\n        validationMode,\n        libraryBasedPhoneFieldValidationEnabled,\n      );\n    case InputFieldInputType.ARRAY:\n      return arraySchemaPropertyMapperPlatformised(\n        inputField,\n        validationMode,\n        libraryBasedPhoneFieldValidationEnabled,\n      );\n    case InputFieldInputType.NUMBER:\n      const numberValidation = asRequired(\n        inputField.numberOptions?.validation,\n        inputField,\n        'numberOptions.validation',\n      );\n      return mapToNumberSchemaProperty(numberValidation, validationMode);\n    case InputFieldInputType.BOOLEAN:\n      const booleanValidation = asRequired(\n        inputField.booleanOptions?.validation,\n        inputField,\n        'booleanOptions.validation',\n      );\n      return mapToBooleanSchemaProperty(booleanValidation, validationMode);\n    case InputFieldInputType.OBJECT:\n      const objectValidation = asRequired(\n        inputField.objectOptions?.validation,\n        inputField,\n        'objectOptions.validation',\n      );\n      return mapToObjectSchemaProperty(objectValidation, validationMode);\n    case InputFieldInputType.WIX_FILE:\n      return mapToPredefinedSchemaProperty(\n        inputField.target!,\n        {\n          format: ValidationFormat.WIX_FILE,\n        },\n        validationMode,\n      );\n    case InputFieldInputType.SCHEDULING:\n      return mapToPredefinedSchemaProperty(\n        inputField.target!,\n        {\n          format: ValidationFormat.SCHEDULING,\n        },\n        validationMode,\n      );\n    case InputFieldInputType.PAYMENT:\n      return mapToPredefinedSchemaProperty(\n        inputField.target!,\n        {\n          paymentOptions: inputField.paymentOptions?.validation,\n          format: ValidationFormat.PAYMENT,\n        },\n        validationMode,\n      );\n    default:\n      return undefined;\n  }\n}\n","import {\n  type FormField,\n  ValidationMode,\n} from '@wix/ambassador-forms-v1-validation-result/types';\nimport {\n  type FieldsField,\n  type Form,\n  type Validation,\n  ValidationFormat,\n} from '@wix/ambassador-forms-v4-form/types';\nimport type Ajv from 'ajv';\n\nimport { type Submission } from '../../submission';\nimport { deriveError } from '../error-derivation';\nimport { deepOmitEmptyData } from '../utils/deep-omit-empty-data';\n\nimport { createAjvSchemaValidatorFactory } from './create-ajv-schema-validator';\nimport {\n  ErrorTypes,\n  makeValidationErrors,\n  type ValidationError,\n  type ValidationResult,\n} from './errors';\nimport { formSchemaMapperFactory } from './mappers/form-schema-mapper';\nimport { formSchemaMapperFactoryPlatformised } from './mappers/platformised-fields/form-schema-mapper-platformised';\nimport { transformPlatformisedFieldToValidation } from './mappers/platformised-fields/transform-platformised-field-to-validation';\nimport { propertySchemaMapper } from './mappers/property-schema-mapper';\n\ntype AddressFormProvider = (\n  field: FormField,\n  submissionValue: unknown,\n) => Form | undefined;\n\nexport class FormValidator {\n  constructor(\n    private readonly formSchemas: Form[],\n    private readonly validationMode?: ValidationMode,\n    private readonly platformisedFieldBasedValidation: Boolean = false,\n    private readonly addressFormProvider: AddressFormProvider = () => undefined,\n    private readonly submissionValueProvider?: (\n      submission: Submission,\n      form: Form,\n    ) => Submission,\n    private readonly libraryBasedPhoneFieldValidationEnabled: boolean = false,\n    private readonly lenientPhoneValidation: boolean = false,\n  ) {\n    if (!this.formSchemas.length) {\n      throw new Error('At least one form schema is required for validation');\n    }\n  }\n\n  validateFields(\n    formId: string,\n    _submission: Submission,\n    fieldIdMask?: string | string[],\n  ) {\n    const fieldMasks = [fieldIdMask ?? []].flat();\n    const { ajv, submission, currentlyValidatableForm } =\n      this.prepareValidation(formId, _submission);\n    const normalizedSubmission = deepOmitEmptyData(submission);\n\n    if (fieldMasks.length) {\n      const errors = this.validateSubmissionWithFieldMask(\n        ajv,\n        formId,\n        normalizedSubmission,\n        fieldMasks,\n      );\n\n      return { errors, currentlyValidatableForm };\n    }\n\n    return {\n      errors: this.validateWholeSubmission(\n        ajv,\n        currentlyValidatableForm.id!,\n        normalizedSubmission,\n      ),\n      currentlyValidatableForm,\n    };\n  }\n\n  validate(\n    formId: string,\n    _submission: Submission,\n    fieldIdMask?: string | string[],\n  ): ValidationResult {\n    const fieldMasks = [fieldIdMask ?? []].flat();\n\n    const { errors, currentlyValidatableForm } = this.validateFields(\n      formId,\n      _submission,\n      fieldMasks,\n    );\n\n    if (errors.length > 0) {\n      return { errors };\n    }\n\n    if (!fieldMasks.length) {\n      const canUpdateForm = this.validateCanUpdateFormNotDisabled(\n        currentlyValidatableForm,\n      );\n\n      if (canUpdateForm.errors) {\n        return canUpdateForm;\n      }\n    }\n\n    return { errors: [] };\n  }\n\n  private prepareValidation(formId: string, _submission: Submission) {\n    const currentlyValidatableForm = this.formSchemas.find(\n      (form) => form.id === formId,\n    );\n\n    if (!currentlyValidatableForm) {\n      throw new Error(`Missing form ${formId} for validation`);\n    }\n\n    const submission = this.submissionValueProvider\n      ? this.submissionValueProvider(_submission, currentlyValidatableForm)\n      : _submission;\n\n    const ajv = this.initAJvWithSchemas(currentlyValidatableForm, submission);\n\n    return { ajv, submission, currentlyValidatableForm };\n  }\n\n  private getAddressForms(formSchemas: Form, submission: Submission): Form[] {\n    const addressFields = [\n      ...(formSchemas.fields ?? []),\n      ...(formSchemas.deletedFields ?? []),\n    ].filter(\n      (field) =>\n        field.validation?.predefined?.format ===\n        ValidationFormat.MULTILINE_ADDRESS,\n    );\n\n    return addressFields.reduce((acc, field) => {\n      const value = submission[field.target!];\n      const addressForm = this.addressFormProvider(field, value);\n\n      if (addressForm) {\n        acc.push({ ...addressForm, id: field.target! } as Form);\n      }\n\n      return acc;\n    }, [] as Form[]);\n  }\n\n  private getObjectArrayForms(formSchemas: Form): Form[] {\n    const objectArrayFields = [\n      ...(formSchemas.fields ?? []),\n      ...(formSchemas.deletedFields ?? []),\n    ].filter(\n      (field) =>\n        field.validation?.predefined?.format === ValidationFormat.OBJECT_ARRAY,\n    );\n\n    return objectArrayFields.map((field) => {\n      return { id: field.target, fields: field.view?.fields ?? [] };\n    });\n  }\n\n  private validateCanUpdateFormNotDisabled(form: Form) {\n    if (\n      this.validationMode !== ValidationMode.UNRESTRICTED_UPDATE &&\n      this.isFormDisabled(form)\n    ) {\n      return {\n        errors: [\n          {\n            errorPath: 'form.properties.disabled',\n            errorType: ErrorTypes.DISABLED_FORM_ERROR,\n            errorMessage: 'Form is disabled and not accepting submissions',\n          },\n        ],\n      };\n    } else {\n      return {};\n    }\n  }\n\n  private validateWholeSubmission(\n    ajv: Ajv,\n    formId: string,\n    fieldSubmission: Submission,\n  ): ValidationError[] {\n    const validate = ajv.getSchema(`${formId}`);\n    if (!validate) {\n      throw new Error(`Missing precompiled schema for form ${formId}`);\n    }\n    validate(fieldSubmission);\n    const baseErrors = makeValidationErrors(validate.errors);\n\n    return this.deriveErrors(formId, baseErrors, fieldSubmission);\n  }\n\n  private validateSubmissionWithFieldMask(\n    ajv: Ajv,\n    formId: string,\n    fieldSubmission: Submission,\n    fieldIdMasks: string[],\n  ) {\n    const baseErrors = fieldIdMasks.reduce<ValidationError[]>((acc, mask) => {\n      const validate = ajv.getSchema(`${formId}#/properties/${mask}`);\n      if (!validate) {\n        acc.push({\n          errorPath: `${mask}`,\n          errorType: ErrorTypes.UNKNOWN_VALUE_ERROR,\n          errorMessage: `${mask} property not expected in schema`,\n        });\n        return acc;\n      }\n\n      const valid = validate(fieldSubmission[mask]);\n\n      if (!valid) {\n        acc.push(...makeValidationErrors(validate.errors, mask));\n      }\n      return acc;\n    }, []);\n\n    return this.deriveErrors(formId, baseErrors, fieldSubmission);\n  }\n\n  private deriveErrors(\n    formId: string,\n    errors: ValidationError[],\n    submission: Submission,\n  ): ValidationError[] {\n    return errors\n      .map((error) => {\n        const validation = this.getFieldValidation(formId, error.errorPath);\n        const value = this.getFieldValue(submission, error.errorPath);\n\n        return deriveError(validation, error, { value });\n      })\n      .filter((error): error is ValidationError => error !== undefined);\n  }\n\n  private getFieldValidation(\n    formId: string,\n    fieldPath: string,\n  ): Validation | undefined {\n    const form = this.formSchemas.find((f) => f.id === formId);\n    if (!form) {\n      return undefined;\n    }\n\n    const pathParts = fieldPath.split('/');\n    const rootFieldId = pathParts[0];\n\n    const platformisedField = [\n      ...(form.formFields ?? []),\n      ...(form.deletedFormFields ?? []),\n    ].find((f) => {\n      if (f.id === rootFieldId) {\n        return true;\n      }\n\n      const inputTarget = f.inputOptions?.target;\n\n      if (inputTarget === rootFieldId) {\n        return true;\n      }\n\n      return false;\n    });\n\n    const legacyField = [\n      ...(form.fields ?? []),\n      ...(form.deletedFields ?? []),\n    ].find((f) => {\n      if (f.id === rootFieldId || f.target === rootFieldId) {\n        return true;\n      }\n\n      return false;\n    });\n\n    if (platformisedField) {\n      return this.getPlatformisedFieldValidation(platformisedField);\n    } else if (legacyField) {\n      return this.getLegacyFieldValidation(legacyField);\n    } else {\n      return undefined;\n    }\n  }\n\n  private getLegacyFieldValidation(field: FormField): Validation | undefined {\n    return field.validation;\n  }\n\n  private getPlatformisedFieldValidation(\n    field: FieldsField,\n  ): Validation | undefined {\n    const inputOptions = field.inputOptions;\n    if (!inputOptions) {\n      return undefined;\n    }\n\n    const validation: Partial<Validation> = {};\n\n    if (inputOptions.numberOptions?.validation) {\n      validation.number = inputOptions.numberOptions.validation;\n    }\n\n    // platformised fields are not type-compatible with the Validation interface.\n    // however, deriveError only accesses common properties like minLength, maxLength, etc.\n    if (inputOptions.stringOptions?.validation) {\n      validation.string = inputOptions.stringOptions\n        .validation as unknown as Validation['string'];\n    }\n\n    if (inputOptions.arrayOptions?.validation) {\n      validation.array = inputOptions.arrayOptions\n        .validation as unknown as Validation['array'];\n    }\n\n    if (Object.keys(validation).length > 0) {\n      return validation as Validation;\n    }\n\n    return undefined;\n  }\n\n  private getFieldValue(\n    submission: Submission,\n    fieldPath: string,\n  ): string | undefined {\n    const pathParts = fieldPath.split('/');\n    let value: any = submission;\n\n    for (const part of pathParts) {\n      value = value?.[part];\n    }\n\n    return typeof value === 'string' ? value : undefined;\n  }\n\n  private isFormDisabled(formSchema: Form): boolean {\n    const isDeadlinePast =\n      formSchema?.limitationRule?.dateTimeDeadline &&\n      new Date(formSchema.limitationRule.dateTimeDeadline).getTime() <=\n        new Date().getTime();\n    return Boolean(formSchema?.properties?.disabled || isDeadlinePast);\n  }\n\n  private getFormSchemaMapper() {\n    return this.platformisedFieldBasedValidation\n      ? formSchemaMapperFactoryPlatformised(\n          transformPlatformisedFieldToValidation,\n          this.validationMode ?? ValidationMode.UNKNOWN,\n          this.libraryBasedPhoneFieldValidationEnabled,\n        )\n      : formSchemaMapperFactory(\n          propertySchemaMapper,\n          this.validationMode ?? ValidationMode.UNKNOWN,\n          this.libraryBasedPhoneFieldValidationEnabled,\n        );\n  }\n\n  private initAJvWithSchemas(\n    currentlyValidatableForm: Form,\n    submission: Submission,\n  ) {\n    const formSchemaMapper = this.getFormSchemaMapper();\n    const createAjvSchemaValidator = createAjvSchemaValidatorFactory(\n      formSchemaMapper,\n      this.libraryBasedPhoneFieldValidationEnabled &&\n        this.validationMode !== ValidationMode.UNRESTRICTED_UPDATE,\n      this.lenientPhoneValidation,\n    );\n\n    const nestedForms = this.formSchemas.flatMap((schema) =>\n      (schema.nestedForms || []).flatMap(({ targets, form }) =>\n        (targets || []).map((target) => ({ ...form, id: target })),\n      ),\n    );\n\n    const addressForms = this.getAddressForms(\n      currentlyValidatableForm,\n      submission,\n    );\n\n    const objectArrayForms = this.getObjectArrayForms(currentlyValidatableForm);\n\n    return createAjvSchemaValidator([\n      ...this.formSchemas,\n      ...nestedForms,\n      ...addressForms,\n      ...objectArrayForms,\n    ]);\n  }\n}\n","import { type FormField } from '@wix/ambassador-forms-v4-form/types';\n\nimport { asRequired } from '../utils/lang';\n\nexport function isInputField(field: FormField): boolean {\n  if (field.validation) {\n    asRequired(field.target, field, 'target');\n  }\n  return Boolean(field.validation);\n}\n\nexport function fieldHasTarget(field: FormField): boolean {\n  return Boolean(field.target);\n}\n","import {\n  type ArrayType,\n  type Form,\n  Format,\n  type FormField,\n  type ObjectType,\n  type StringType,\n  type Validation,\n} from '@wix/ambassador-forms-v4-form/types';\n\nimport {\n  ErrorTypes,\n  type ValidationError,\n  type ValidationResult,\n} from '../submission-validation/errors';\nimport { asRequired, notEmpty } from '../utils/lang';\n\nimport { fieldHasTarget, isInputField } from './field-utils';\n\ntype CompatibilityProblem = Pick<ValidationError, 'errorMessage' | 'params'>;\n\nexport function compareSchemaBackwardCompatibility(\n  newSchema: Form,\n  knownSchema: Form,\n): ValidationResult {\n  return {\n    errors: getNonCompatibleFields(newSchema, knownSchema),\n  };\n}\n\nfunction getNonCompatibleFields(\n  newSchema: Form,\n  knownSchema: Form,\n): ValidationError[] {\n  newSchema.fields?.forEach(isInputField); // validate target exists for all the input fields\n  const newFieldsWithTarget: FormField[] = (newSchema.fields ?? []).filter(\n    fieldHasTarget,\n  );\n  const knownInputFields: { [key: string]: FormField } = [\n    ...(knownSchema.fields ?? []),\n    ...(knownSchema.deletedFields ?? []),\n  ]\n    .filter(fieldHasTarget)\n    .reduce<{ [key: string]: FormField }>((acc, field) => {\n      acc[asRequired(field.target, field, 'target')] = field;\n      return acc;\n    }, {});\n\n  return newFieldsWithTarget\n    .map((field) =>\n      fieldHasCompatibleType(\n        field,\n        knownInputFields[asRequired(field.target, field, 'target')],\n      ),\n    )\n    .filter(notEmpty);\n}\n\nfunction fieldHasCompatibleType(\n  field: FormField,\n  knownField?: FormField,\n): ValidationError | null {\n  if (!knownField) {\n    return null;\n  }\n\n  const [newValidation] = Object.entries(field.validation ?? {});\n  const [knownValidation] = Object.entries(knownField.validation ?? {});\n\n  const compatibilityProblem = confirmValidationCompatibility(\n    newValidation,\n    knownValidation,\n  );\n\n  if (compatibilityProblem) {\n    return {\n      errorPath: asRequired(field.target, field, 'target'),\n      errorType: ErrorTypes.FIELDS_COMPATIBILITY_ERROR,\n      errorMessage: compatibilityProblem.errorMessage,\n      params: compatibilityProblem.params,\n    };\n  }\n  return null;\n}\n\nfunction confirmValidationCompatibility(\n  newValidation?: [string, Validation[keyof Validation]],\n  currentValidation?: [string, Validation[keyof Validation]],\n): CompatibilityProblem | null {\n  if (!currentValidation) {\n    return null;\n  }\n\n  if (!newValidation) {\n    return {\n      errorMessage: 'Field requires validation property',\n    };\n  }\n\n  const [fieldType, fieldValidation] = newValidation;\n  const [knownType, knownValidation] = currentValidation;\n\n  if (fieldType !== knownType) {\n    return {\n      errorMessage: 'Incompatible field type',\n      params: { current: fieldType, previous: knownType },\n    };\n  }\n\n  switch (fieldType) {\n    case 'string':\n      return confirmStringValidationCompatible(\n        fieldValidation as StringType,\n        knownValidation as StringType,\n      );\n    case 'array':\n      return confirmArrayValidationCompatible(\n        fieldValidation as ArrayType,\n        knownValidation as ArrayType,\n      );\n    case 'object':\n      return confirmObjectValidationCompatible(\n        fieldValidation as ObjectType,\n        knownValidation as ObjectType,\n      );\n    default:\n      return null;\n  }\n}\n\nfunction confirmStringValidationCompatible(\n  newValidation: StringType,\n  knownValidation: StringType,\n): CompatibilityProblem | null {\n  if (\n    knownValidation.format !== Format.UNDEFINED &&\n    newValidation.format !== knownValidation.format\n  ) {\n    return {\n      errorMessage: 'Incompatible string format',\n      params: {\n        current: newValidation.format,\n        previous: knownValidation.format,\n      },\n    };\n  }\n  return null;\n}\n\nfunction confirmArrayValidationCompatible(\n  newValidation: ArrayType,\n  knownValidation: ArrayType,\n): CompatibilityProblem | null {\n  const [itemValidation] = Object.entries(newValidation.items ?? {});\n  const [knownItemValidation] = Object.entries(knownValidation.items ?? {});\n  return confirmValidationCompatibility(itemValidation, knownItemValidation);\n}\n\nfunction confirmObjectValidationCompatible(\n  newValidation: ObjectType,\n  knownValidation: ObjectType,\n): CompatibilityProblem | null {\n  const propertyNames = Object.keys(newValidation.properties ?? {})\n    .slice()\n    .sort();\n  const knownPropertyNames = Object.keys(knownValidation.properties ?? {})\n    .slice()\n    .sort();\n\n  if (\n    knownPropertyNames.every((value, index) => value === propertyNames[index])\n  ) {\n    const propertyProblems: { [property: string]: CompatibilityProblem } =\n      knownPropertyNames.reduce<{ [property: string]: CompatibilityProblem }>(\n        (acc, name) => {\n          const [propertyValidation] = Object.entries(\n            (newValidation.properties ?? {})[name],\n          );\n          const [knownPropertyValidation] = Object.entries(\n            (knownValidation.properties ?? {})[name],\n          );\n          const problem = confirmValidationCompatibility(\n            propertyValidation,\n            knownPropertyValidation,\n          );\n          if (problem) {\n            acc[name] = problem;\n          }\n          return acc;\n        },\n        {},\n      );\n\n    if (Object.keys(propertyProblems).length) {\n      return {\n        errorMessage: 'Object has incompatible properties',\n        params: propertyProblems,\n      };\n    } else {\n      return null;\n    }\n  }\n  return {\n    errorMessage: 'Object has mismatching properties',\n    params: { current: propertyNames, previous: knownPropertyNames },\n  };\n}\n",null,"import {\n  type CreateOptions,\n  ErrorType,\n  type UpdateOptions,\n} from '@wix/ambassador-forms-v1-validation-result/types';\nimport { type Form } from '@wix/ambassador-forms-v4-form/types';\nimport {\n  Feature,\n  type PremiumRestrictions,\n} from '@wix/ambassador-forms-v4-restrictions/types';\n\nimport {\n  type ValidationError,\n  type ValidationResult,\n} from '../submission-validation/errors';\nimport { asRequired } from '../utils/lang';\n\nexport const FILE_UPLOAD_FIELD_TYPE = 'FILE_UPLOAD';\n\ntype RestrictionValidation = (\n  newForm: ValidationForm,\n  knownForm: ValidationForm,\n) => ValidationError | null;\n\nexport function validatePremiumRestrictions(\n  restrictions: PremiumRestrictions,\n  newSchema: Form,\n  action: UpdateOptions | CreateOptions,\n): ValidationResult {\n  const validations: RestrictionValidation[] = [\n    validateFormFieldCount({\n      limit: getLimit(restrictions.fieldsLimit?.limit),\n    }),\n    validateFormStepCount({ limit: getLimit(restrictions.stepsLimit?.limit) }),\n    validateFormRulesCount({\n      limit: getLimit(restrictions.conditionsLimit?.limit),\n    }),\n    validateFileUploadFieldAllowed({\n      featureRestricted: isFeatureRestricted(getOrEmpty(restrictions.features)),\n    }),\n  ];\n\n  if (isUpdateAction(action)) {\n    const knownForm = asValidationForm(action.currentForm);\n    const newForm = asValidationForm(newSchema);\n    return {\n      errors: getValidationErrors(validations, newForm, knownForm),\n    };\n  }\n\n  if (isCreateAction(action)) {\n    const knownForm = asValidationForm();\n    const newForm = asValidationForm(newSchema);\n    return {\n      errors: getValidationErrors(\n        [\n          ...validations,\n          validateTotalFormCount(\n            getLimit(restrictions.formsLimit?.limit),\n            asRequired(action.existingFormsCount, action, 'existingFormsCount'),\n          ),\n        ],\n        newForm,\n        knownForm,\n      ),\n    };\n  }\n\n  throw new Error('Unknown validation action');\n}\n\nfunction getValidationErrors(\n  validations: RestrictionValidation[],\n  newForm: ValidationForm,\n  knownForm: ValidationForm,\n) {\n  return validations\n    .map((validation) => validation(newForm, knownForm))\n    .filter(Boolean)\n    .map((err) => err as ValidationError);\n}\n\nconst validateTotalFormCount =\n  (limit: number, formCount: number) => (): ValidationError | null =>\n    limitRestricted(limit, formCount, formCount + 1)\n      ? formCountError(limit)\n      : null;\n\nconst validateFormFieldCount =\n  ({ limit }: LimitRestriction) =>\n  (\n    newForm: ValidationForm,\n    knownForm: ValidationForm,\n  ): ValidationError | null =>\n    limitRestricted(\n      limit,\n      knownForm.inputFieldsCount,\n      newForm.inputFieldsCount,\n    ) ||\n    substitutionRestricted(\n      limit,\n      knownForm.inputFieldsCount,\n      newForm.inputFieldIds,\n      knownForm.inputFieldIds,\n    )\n      ? formFieldCountError(limit)\n      : null;\n\nconst validateFormStepCount =\n  ({ limit }: LimitRestriction) =>\n  (\n    newForm: ValidationForm,\n    knownForm: ValidationForm,\n  ): ValidationError | null =>\n    limitRestricted(limit, knownForm.stepsCount, newForm.stepsCount) ||\n    substitutionRestricted(\n      limit,\n      knownForm.stepsCount,\n      newForm.stepsIds,\n      knownForm.stepsIds,\n    )\n      ? formStepsCountError(limit)\n      : null;\n\nconst validateFormRulesCount =\n  ({ limit }: LimitRestriction) =>\n  (\n    newForm: ValidationForm,\n    knownForm: ValidationForm,\n  ): ValidationError | null =>\n    limitRestricted(limit, knownForm.rulesCount, newForm.rulesCount) ||\n    substitutionRestricted(\n      limit,\n      knownForm.rulesCount,\n      newForm.rulesIds,\n      knownForm.rulesIds,\n    )\n      ? formRulesCountError(limit)\n      : null;\n\nconst validateFileUploadFieldAllowed =\n  ({ featureRestricted }: FeatureRestriction) =>\n  (\n    newForm: ValidationForm,\n    knownForm: ValidationForm,\n  ): ValidationError | null => {\n    const newFileUploadFields = difference(\n      newForm.fileUploadFieldIds,\n      knownForm.fileUploadFieldIds,\n    );\n    return newFileUploadFields.length &&\n      featureRestricted(Feature.FILE_UPLOAD_FIELD)\n      ? formFileUploadProhibitedError()\n      : null;\n  };\n\nfunction difference<T>(current: T[], other: T[]) {\n  const otherSet = new Set(other);\n  return current.filter((x) => !otherSet.has(x));\n}\n\nfunction limitRestricted(\n  limit: number,\n  knownAmount: number,\n  newAmount: number,\n) {\n  return newAmount > Math.max(limit, knownAmount);\n}\n\nfunction substitutionRestricted(\n  limit: number,\n  knownAmount: number,\n  newIds: string[],\n  knownIds: string[],\n) {\n  return (\n    knownAmount > limit &&\n    difference(newIds, knownIds).length &&\n    newIds.length > limit\n  );\n}\n\nconst isFeatureRestricted =\n  (allowedFeatures: Feature[]) => (expectedFeature: Feature) => {\n    return !allowedFeatures.some((feature) => feature === expectedFeature);\n  };\n\nfunction formCountError(limit: number): ValidationError {\n  return {\n    errorPath: 'form',\n    errorType: ErrorType.FORMS_COUNT_RESTRICTIONS_ERROR,\n    errorMessage: `Form count reached its limit of ${limit}`,\n    params: {\n      limit,\n    },\n  };\n}\n\nfunction formFieldCountError(limit: number): ValidationError {\n  return {\n    errorPath: 'form',\n    errorType: ErrorType.FIELDS_COUNT_RESTRICTIONS_ERROR,\n    errorMessage: `Field count reached its limit of ${limit}`,\n    params: {\n      limit,\n    },\n  };\n}\n\nfunction formStepsCountError(limit: number): ValidationError {\n  return {\n    errorPath: 'form',\n    errorType: ErrorType.STEPS_COUNT_RESTRICTIONS_ERROR,\n    errorMessage: `Steps count reached its limit of ${limit}`,\n    params: {\n      limit,\n    },\n  };\n}\n\nfunction formRulesCountError(limit: number): ValidationError {\n  return {\n    errorPath: 'form',\n    errorType: ErrorType.RULES_COUNT_RESTRICTIONS_ERROR,\n    errorMessage: `Rules count reached its limit of ${limit}`,\n    params: {\n      limit,\n    },\n  };\n}\n\nfunction formFileUploadProhibitedError(): ValidationError {\n  return {\n    errorPath: 'form',\n    errorType: ErrorType.FILE_UPLOAD_RESTRICTIONS_ERROR,\n    errorMessage: `File upload field is not enabled for the given site`,\n  };\n}\n\ninterface ValidationForm {\n  inputFieldsCount: number;\n  stepsCount: number;\n  rulesCount: number;\n  inputFieldIds: string[];\n  stepsIds: string[];\n  rulesIds: string[];\n  fileUploadFieldIds: string[];\n}\n\nfunction asValidationForm(given?: Form): ValidationForm {\n  const form = given ?? {};\n  const inputFields = (form.fields ?? []).filter((field) =>\n    Boolean(field.target),\n  );\n  return {\n    inputFieldsCount: inputFields.length,\n    stepsCount: (form.steps ?? []).length,\n    rulesCount: (form.rules ?? []).length,\n    inputFieldIds: inputFields.map((_) => _.id!),\n    stepsIds: (form.steps ?? []).map((_) => _.id!),\n    rulesIds: (form.rules ?? []).map((_) => _.id!),\n    fileUploadFieldIds: (form.fields ?? [])\n      .filter(\n        (field) => (field.view ?? {}).fieldType === FILE_UPLOAD_FIELD_TYPE,\n      )\n      .map((_) => _.id!),\n  };\n}\n\nfunction isUpdateAction(action: any): action is UpdateOptions {\n  return 'currentForm' in action;\n}\n\nfunction isCreateAction(action: any): action is CreateOptions {\n  return 'existingFormsCount' in action;\n}\n\nfunction getLimit(maybeValue?: number | null | undefined): number {\n  return maybeValue ?? Number.MAX_SAFE_INTEGER;\n}\n\nfunction getOrEmpty<T>(maybeValue: T[] | null | undefined): T[] {\n  return maybeValue ?? [];\n}\n\ninterface LimitRestriction {\n  limit: number;\n}\n\ninterface FeatureRestriction {\n  featureRestricted: (expectedFeature: Feature) => boolean;\n}\n","import {\n  type FieldsInputField,\n  InputFieldInputType,\n  type _Number,\n  InputFieldNumberComponentType,\n  type InputFieldPayment,\n  InputFieldPaymentComponentType,\n  type _String,\n  InputFieldStringComponentType,\n} from '@wix/ambassador-forms-v4-form/types';\n\nexport function getDefaultValue(\n  field?: FieldsInputField,\n): string | number | undefined {\n  switch (field?.inputType) {\n    case InputFieldInputType.STRING:\n      return getDefaultStringComponentValue(field.stringOptions) ?? undefined;\n    case InputFieldInputType.NUMBER:\n      return getDefaultNumberComponentValue(field.numberOptions) ?? undefined;\n    case InputFieldInputType.PAYMENT:\n      return getDefaultPaymentComponentValue(field.paymentOptions) ?? undefined;\n    default:\n      return undefined;\n  }\n}\n\nfunction getDefaultStringComponentValue(\n  stringOptions?: _String,\n): string | null | undefined {\n  switch (stringOptions?.componentType) {\n    case InputFieldStringComponentType.DATE_TIME:\n      return stringOptions?.dateTimeOptions?.default;\n    case InputFieldStringComponentType.DATE_INPUT:\n      return stringOptions?.dateInputOptions?.default;\n    case InputFieldStringComponentType.DATE_PICKER:\n      return stringOptions?.datePickerOptions?.default;\n    case InputFieldStringComponentType.TEXT_INPUT:\n      return stringOptions?.textInputOptions?.default;\n    case InputFieldStringComponentType.TIME_INPUT:\n      return stringOptions?.timeInputOptions?.default;\n    default:\n      return undefined;\n  }\n}\n\nfunction getDefaultNumberComponentValue(\n  numberOptions?: _Number,\n): number | null | undefined {\n  switch (numberOptions?.componentType) {\n    case InputFieldNumberComponentType.NUMBER_INPUT:\n      return numberOptions?.numberInputOptions?.default;\n    case InputFieldNumberComponentType.RATING_INPUT:\n      return numberOptions?.ratingInputOptions?.defaultValue;\n    default:\n      return undefined;\n  }\n}\n\nfunction getDefaultPaymentComponentValue(\n  paymentOptions?: InputFieldPayment,\n): number | null | undefined {\n  switch (paymentOptions?.componentType) {\n    case InputFieldPaymentComponentType.PAYMENT_INPUT:\n      return paymentOptions?.paymentInputOptions?.default;\n    default:\n      return undefined;\n  }\n}\n","import {\n  type Form,\n  type FieldsInputField,\n  InputFieldInputType,\n  type Format,\n} from '@wix/ambassador-forms-v4-form/types';\n\nimport { type Submission } from '../../submission';\nimport { type ValidationResult } from '../submission-validation/errors';\nimport { type FormValidator } from '../submission-validation/form-validator';\nimport { parseIfNeeded } from '../submission-validation/mappers/string-format-options-mapper';\n\nimport { getDefaultValue } from './default-value-utils';\n\nexport class FormSchemaValidator {\n  constructor(private readonly submissionValidator: FormValidator) {}\n\n  validate(form: Form, timezone?: string): ValidationResult {\n    const submission =\n      form.formFields?.reduce((acc, { inputOptions }) => {\n        const defaultValue = getDefaultValue(inputOptions);\n        const target = inputOptions?.target;\n        if (defaultValue && target) {\n          acc[target] = this.buildSubmissionValue(\n            defaultValue,\n            inputOptions,\n            timezone,\n          );\n        }\n        return acc;\n      }, {} as Submission) || {};\n\n    if (Object.keys(submission).length) {\n      return this.submissionValidator.validate(form.id!, submission);\n    }\n    return { errors: [] };\n  }\n\n  private buildSubmissionValue(\n    defaultValue: string | number,\n    inputField: FieldsInputField,\n    timezone?: string,\n  ) {\n    switch (inputField.inputType) {\n      case InputFieldInputType.PAYMENT:\n        return inputField.paymentOptions?.validation?.products?.map(\n          (product) => ({\n            productId: product.id,\n            price: defaultValue,\n            quantity: 1,\n          }),\n        );\n      case InputFieldInputType.STRING: {\n        const format = inputField.stringOptions?.validation?.format as\n          | Format\n          | undefined;\n        if (!format || typeof defaultValue !== 'string') {\n          return defaultValue;\n        }\n        return (\n          parseIfNeeded(format, () => new Date(), defaultValue, timezone) ??\n          defaultValue\n        );\n      }\n      default:\n        return defaultValue;\n    }\n  }\n}\n","export * from './lib/submission-validation/form-validator';\nexport * from './lib/backward-compatibility/compare-shema-backward-compatibility';\nexport * from './lib/paid-restrictions/validate-premium-restrictions';\nexport * from './lib/schema-validation/form-schema-validator';\nexport { getDefaultValue } from './lib/schema-validation/default-value-utils';\nexport {\n  type ValidationError,\n  ValidationMode,\n  ErrorTypes,\n  groupErrorsByTarget,\n} from './lib/submission-validation/errors';\nexport {\n  CALLING_COUNTRY_CODES,\n  type CallingCountryCode,\n  type CallingCountryCodeAlpha3,\n} from './lib/calling-country-codes';\nexport {\n  DateFieldErrorSuffix,\n  DateTimeFieldErrorSuffix,\n} from './lib/error-derivation';\n",null,null,null,null,null,null,null,null,null,"\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n//# sourceMappingURL=interfaces.js.map",null,null,"!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_isSameOrAfter=t()}(this,(function(){\"use strict\";return function(e,t){t.prototype.isSameOrAfter=function(e,t){return this.isSame(e,t)||this.isAfter(e,t)}}}));","!function(e,i){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=i():\"function\"==typeof define&&define.amd?define(i):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_isSameOrBefore=i()}(this,(function(){\"use strict\";return function(e,i){i.prototype.isSameOrBefore=function(e,i){return this.isSame(e,i)||this.isBefore(e,i)}}}));","{\n  \"contacts-url-input.input.error.message.format-error\": \"Enter a web URL like https://www.example.com.\",\n  \"field-context-menu.cut\": \"Cut\",\n  \"input.error.message.incomplete-date-error.day-time\": \"Enter a day and time.\",\n  \"field.signature.a11y.action-description.type\": \"Use the keyboard to type.\",\n  \"input.error.message.required-error-forced\": \"This field is required.\",\n  \"field-context-menu.show-field\": \"Show field\",\n  \"date-picker.input.error.message.format-error\": \"Choose a date.\",\n  \"form.login-bar.actions.login\": \"Log in\",\n  \"date-picker.a11y.clear-button\": \"Clear\",\n  \"form.file-upload.uploading\": \"Uploading {count, plural, =0 {...} other {#%...}}\",\n  \"rating-input.a11y.reaction-label\": \"{count} {count, plural, =1 {star} other {stars}}\",\n  \"contacts-company.input.error.message.required-error\": \"Enter a company name.\",\n  \"dext-phone.input.error.message.required-error\": \"Enter a phone number.\",\n  \"field.signature.clear-button.label\": \"Clear\",\n  \"input.error.message.type-error\": \"Choose a {type}.\",\n  \"payment-input.input.error.message.required-error\": \"Enter a payment amount.\",\n  \"form.login-bar.action.logout\": \"Log out\",\n  \"date-picker.a11y.arrow-left\": \"Go to previous month\",\n  \"mla-subdivision.input.error.message.required-error.tr\": \"Choose a city.\",\n  \"settings.scheduling.sync-external-calendars.modal.tooltip.kb-link\": \"https://support.wix.com/en/article/wix-meetings-syncing-personal-calendars-with-wix-meetings\",\n  \"input.error.message.value-range-error\": \"Enter a number from {minLimit} to {maxLimit}.\",\n  \"input.error.message.incomplete-date-error.year-month\": \"Enter a month and year.\",\n  \"mla-address-line.input.error.message.required-error\": \"Enter an address.\",\n  \"contacts-position.input.error.message.required-error\": \"Enter a position or job title.\",\n  \"bookings-phone.input.error.message.format-error\": \"Enter a valid phone number.\",\n  \"input.error.message.incomplete-date-error.year-month-time\": \"Enter a month, time and year.\",\n  \"field.number.aria-role-description\": \"Number\",\n  \"signature.input.error.message.required-error\": \"Sign in the box above.\",\n  \"field.date.label.month\": \"Month\",\n  \"field.rich-text.read-more-button.label\": \"Read more\",\n  \"field.time.label.period\": \"AM/PM setting\",\n  \"submit.failed.message\": \"We could not submit your form. Try again later.\",\n  \"image-choice.input.error.message.required-error\": \"Choose an option.\",\n  \"dext-email.input.error.message.required-error\": \"Enter an email address like example@mysite.com.\",\n  \"mla-city.input.error.message.required-error.tr\": \"Enter a district.\",\n  \"date-picker.a11y.calendar-button.role-description\": \"Calendar dialog pop up collapsed\",\n  \"field.signature.a11y.action-description.draw-or-type\": \"Sign in the box or use the keyboard to type.\",\n  \"settings.scheduling.meeting-type.round-robin\": \"Round Robin\",\n  \"field.time.perdiod.AM\": \"AM\",\n  \"form.login-bar.title.logged-out-state\": \"Have an account? \",\n  \"form.appointment.slots-not-found.text\": \"There’s no availability for this date. Try selecting another date.\",\n  \"input.error.message.format-error\": \"Use the format \\\"{format}.\\\"\",\n  \"contacts-address.input.error.message.required-error\": \"Enter an address.\",\n  \"field-context-menu.copy\": \"Copy to clipboard\",\n  \"field.signature.a11y.state.empty\": \"Signature field is empty.\",\n  \"dext-date-picker.input.error.message.min-value-error\": \"Enter a valid date after today’s date.\",\n  \"payment-input.input.error.message.min-value-error\": \"Enter a payment amount greater than {currency}{limit}.\",\n  \"input.error.message.incomplete-date-error.year-time\": \"Enter a 4 digit year and time.\",\n  \"field.signature.a11y.state.signed\": \"Signed.\",\n  \"field.quiz-answer-feedback.wrong\": \"Incorrect\",\n  \"mla-city.input.error.message.required-error\": \"Enter a city.\",\n  \"full-name.input.error.message.required-error\": \"Enter a first and last name.\",\n  \"field.rich-text.read-less-button.label\": \"Read less\",\n  \"form.appointment.accessibility.calendar.previous-week.aria-label\": \"Show previous week\",\n  \"field.signature.mode.upload.description\": \"Upload mode selected. Upload an image of your signature.\",\n  \"field.quiz-file-upload.skipped\": \"This question was skipped. \",\n  \"ecom.email.label\": \"Email\",\n  \"input.error.message.incomplete-date-error.year-month-day\": \"Enter a month, day and year.\",\n  \"field-context-menu.make-optional\": \"Make optional\",\n  \"settings.scheduling.meeting-type.info-icon.round-robin.description\": \" - Meetings rotate between hosts.\",\n  \"contacts-subscribe.input.error.message.not-allowed-value\": \"Check the box to continue.\",\n  \"field.signature.mode.draw.description\": \"Drawing mode selected. Drawing requires a mouse or touchpad. For keyboard accessibility, select Type or Upload.\",\n  \"checkbox.input.error.message.required-error\": \"Check the box to continue.\",\n  \"date-picker.input.error.message.required-error\": \"Choose a date.\",\n  \"dext-tags.input.error.message.required-error\": \"Choose an option.\",\n  \"field-context-menu.delete\": \"Delete\",\n  \"field.date.label.year\": \"Year\",\n  \"mla-address-line-2.input.error.message.required-error\": \"Enter a second address line (e.g., apartment, suite, floor).\",\n  \"form.login-bar.title.logged-in-state\": \"Logged in as {user}\",\n  \"payment-input.input.error.message.max-value-error\": \"Enter a payment amount less than {currency}{limit}.\",\n  \"ecom-phone.input.error.message.required-error\": \"Enter a phone number.\",\n  \"payment-input.input.error.message.value-range-error\": \"Enter a payment amount between {currency}{minLimit} and {currency}{maxLimit}.\",\n  \"settings.appointment.sync-external-calendars.hosts-title\": \"Sync calendar for hosts\",\n  \"input.error.message.incomplete-date-error.year-day\": \"Enter a day and year.\",\n  \"submission-table.signature.not-signed\": \"Not signed\",\n  \"dext-url-input.input.error.message.format-error\": \"Enter a web URL like https://www.example.com.\",\n  \"ecom-phone.input.error.message.pattern-error\": \"Enter a valid phone number.\",\n  \"contacts-phone.input.error.message.not-allowed-value\": \"Phone numbers with this country code aren’t accepted.\",\n  \"vat-id.input.error.message.required-error.il\": \"Enter a valid 9 digit ID (“teudat zehut”) or Company number (“het pey”).\",\n  \"input.error.message.incomplete-date-error.day\": \"Enter a day.\",\n  \"date-input.input.error.message.min-value-error\": \"Enter a valid date after today’s date.\",\n  \"input.error.message.invalid-location-id-error\": \"Location is invalid\",\n  \"input.error.message.max-length-error\": \"Enter less than {limit, plural, one {# character} other {# characters}}.\",\n  \"field.date.placeholder.day\": \"Day\",\n  \"services-dropdown.input.error.message.required-error\": \"Select a Service\",\n  \"ecom-email.input.error.message.required-error\": \"Enter an email address like example@mysite.com.\",\n  \"dext-phone.input.error.message.not-allowed-value\": \"Phone numbers with this country code aren’t accepted.\",\n  \"dext-url-input.input.error.message.required-error\": \"Enter a web URL like https://www.example.com.\",\n  \"contacts-date-input.input.error.message.format-error\": \"Enter a month, day and year.\",\n  \"signature.input.error.message.required-error.with-upload\": \"Sign in the box above or upload your signature.\",\n  \"forms.widget.modals.show-password-tooltip\": \"Show password\",\n  \"contacts-phone.input.error.message.required-error\": \"Enter a phone number.\",\n  \"field.phone.country-selector-button.aria-label\": \"Select a country code\",\n  \"field-context-menu.move-up\": \"Move up\",\n  \"dext-text-input.input.error.message.required-error\": \"Enter an answer.\",\n  \"settings.required-indicator-text\": \"(Required)\",\n  \"file-upload.dropzone.overlay.button\": \" Drop your files here\",\n  \"platform-quiz-radio-group.input.error.message.required-error\": \"Choose an option.\",\n  \"field.time.perdiod.PM\": \"PM\",\n  \"contacts-birthdate.input.error.message.format-error\": \"Enter a month, day and year.\",\n  \"field.quiz-answer-feedback.correct\": \"Correct\",\n  \"vat-id.input.error.message.required-error\": \"Enter a CPF/CNPJ number.\",\n  \"bookings-email.input.error.message.format-error\": \"Enter an email address like example@mysite.com.\",\n  \"input.error.message.character-length-range-error\": \"Enter between {minLimit} and {maxLimit} characters.\",\n  \"bookings-phone.input.error.message.not-allowed-value\": \"Phone numbers with this country code aren’t accepted.\",\n  \"contacts-email.input.error.message.format-error\": \"Enter an email address like example@mysite.com.\",\n  \"dropdown.input.error.message.required-error\": \"Choose an option.\",\n  \"dext-text-area.input.error.message.required-error\": \"Enter an answer.\",\n  \"field.signature.settings.upload-button.label\": \"Upload Image\",\n  \"field.date.placeholder.month\": \"Month\",\n  \"form.error.prefix.a11y\": \"Error:\",\n  \"contacts-tax-id.input.error.message.required-error\": \"Enter a VAT ID number.\",\n  \"contacts-number-input.input.error.message.required-error\": \"Enter a number.\",\n  \"date-picker.a11y.aria-label\": \"Show date picker\",\n  \"field.phone.country-search-input.aria-label\": \"Search\",\n  \"field.signature.a11y.state.drawing\": \"Writing signature...\",\n  \"input.error.message.unknown-value-error\": \"Must have additional properties.\",\n  \"phone.input.error.message.pattern-error\": \"Enter a valid phone number.\",\n  \"dext-date-picker.input.error.message.max-value-error\": \"Enter a valid date from January 1, 1000 to today.\",\n  \"form.appointment.empty-state.notification.text\": \"Currently, there’s no available time slots to schedule. Contact us to complete your request.\",\n  \"mla-country.input.error.message.required-error\": \"Choose a country/region.\",\n  \"field.time.label.hours\": \"Hours\",\n  \"file-upload.delete-file.aria-label\": \"Delete file\",\n  \"field.vat-id.label-br\": \"CPF/CNPJ\",\n  \"ecom-header.contact-details\": \"Customer details\",\n  \"input.error.message.invalid-staff-id-error\": \"This field is invalid.\",\n  \"date-input.input.error.message.format-error\": \"Enter a month, day and year.\",\n  \"contacts-first-name.input.error.message.required-error\": \"Enter a first name.\",\n  \"file-upload.dropzone.title\": \"Upload your file\",\n  \"form.a11y.step.index.title\": \"Step {index} out of {total}\",\n  \"field-context-menu.move-down\": \"Move down\",\n  \"contacts-url-input.input.error.message.required-error\": \"Enter a web URL like https://www.example.com.\",\n  \"field.time.label.minutes\": \"Minutes\",\n  \"dext-phone.input.error.message.format-error\": \"Enter a valid phone number.\",\n  \"bookings-phone.input.error.message.required-error\": \"Enter a phone number.\",\n  \"form.file-upload.explanation-text\": \"{count, plural, =1 {# file} other {# files}} uploaded\",\n  \"settings.scheduling.meeting-type.info-icon.intro\": \"How hosts are assigned:\",\n  \"pikachu.input.error.message.required-error\": \"Choose an option.\",\n  \"contacts-last-name.input.error.message.required-error\": \"Enter a last name.\",\n  \"forms.widget.modals.hide-password-tooltip\": \"Hide password\",\n  \"field.signature.mode.selector.aria-label\": \"Signature input mode\",\n  \"phone.input.error.message.not-allowed-value\": \"Phone numbers with this country code aren't accepted.\",\n  \"field.signature.mode.draw.label\": \"Draw\",\n  \"mla-postal-code.input.error.message.pattern-error\": \"Enter a valid zip/postal code.\",\n  \"date-picker.a11y.dropdown-year\": \"Select year\",\n  \"time-input.input.error.message.format-error\": \"Enter hours and minutes.\",\n  \"field-context-menu.hide-field\": \"Hide field\",\n  \"input.error.message.not-allowed-value\": \"The chosen value is not allowed.\",\n  \"input.error.message.min-value-error\": \"Enter a number that is {limit} or more.\",\n  \"input.error.message.incomplete-date-error.month-day\": \"Enter a month and day.\",\n  \"field.date.placeholder.time\": \"HH:MM\",\n  \"submit.checkout.message\": \"Redirecting to checkout...\",\n  \"form.file-upload.error.unsupported-file-format\": \"This file type is unsupported.\",\n  \"settings.scheduling.meeting-type.info-icon.single-host.description\": \" - One host runs every meeting.\",\n  \"input.error.message.invalid-phone-country-code-error\": \"Enter a valid country code.\",\n  \"mla-street-name.input.error.message.required-error\": \"Enter a street name.\",\n  \"settings.scheduling.sync-external-calendars.not-current-user.kb-link\": \"https://support.wix.com/en/article/wix-meetings-syncing-personal-calendars-with-wix-meetings\",\n  \"bookings-first-name.input.error.message.required-error\": \"Enter a first name.\",\n  \"vat-id.input.error.message.format-error\": \"Enter a valid CPF/CNPJ number.\",\n  \"form.appointment.accessibility.calendar.next-week.aria-label\": \"Show next week\",\n  \"donation.input.error.message.required-error\": \"Choose a donation amount.\",\n  \"input.error.message.incomplete-date-error.month\": \"Enter a month.\",\n  \"input.error.message.incomplete-date-error.year\": \"Enter a 4 digit year.\",\n  \"vat-id.input.error.message.format-error.il\": \"Enter a valid 9 digit ID (“teudat zehut”) or Company number (“het pey”).\",\n  \"field.phone.aria-label\": \"Phone\",\n  \"field.signature.canvas.aria-label.empty\": \"Signature drawing area (empty)\",\n  \"file-upload.dropzone.limit-reached.title\": \"You’ve reached the file upload limit.\",\n  \"form.appointment.accessibility.calendar.has-availability.aria-label\": \"This day has available time slots.\",\n  \"bookings-phone.input.error.message.pattern-error\": \"Enter a valid phone number.\",\n  \"input.error.message.incomplete-date-error.month-time\": \"Enter a month and time.\",\n  \"product-list.input.error.message.required-error\": \"Choose an option.\",\n  \"field-context-menu.move-to-next-page\": \"Move to next page\",\n  \"mla-postal-code.input.error.message.required-error\": \"Enter a zip/postal code.\",\n  \"file-upload.input.error.message.required-error\": \"Upload a file.\",\n  \"vat-id.input.error.message.format-error.br\": \"Enter a valid CPF/CNPJ number.\",\n  \"input.error.message.exact-character-length-error\": \"Enter exactly {limit, plural, one {# character} other {# characters}}.\",\n  \"submission-table.signature.signed\": \"Signed\",\n  \"input.error.message.incomplete-date-error\": \"Enter a month, day and year.\",\n  \"ecom-email.input.error.message.format-error\": \"Enter an email address like example@mysite.com.\",\n  \"field.vat-id.label-il\": \"ID/Company number\",\n  \"text-input.input.error.message.required-error\": \"Enter an answer.\",\n  \"url-input.input.error.message.required-error\": \"Enter a web URL like https://www.example.com.\",\n  \"ecom-header.shipping-details\": \"Delivery details\",\n  \"service-dropdown.input.error.message.required-error\": \"Select a Service\",\n  \"field.signature.mode.type.description\": \"Type mode selected. Type your signature using the keyboard.\",\n  \"input.error.message.incomplete-date-error.year-day-time\": \"Enter a day, time and year.\",\n  \"number-input.input.error.message.required-error\": \"Enter a number.\",\n  \"field.signature.mode.upload.label\": \"Upload\",\n  \"input.error.message.unknown-error\": \"Unknown error, please contact Support.\",\n  \"input.error.message.max-items-error\": \"Choose up to {limit, plural, one {# option} other {# options}}.\",\n  \"file-upload.popover.aria-label\": \"List of uploaded files\",\n  \"input.error.message.multiple-of-value-error\": \"Choose a multiple of {multipleOf}.\",\n  \"full-name-last-name.input.error.message.required-error\": \"Enter a last name.\",\n  \"field-context-menu.paste\": \"Paste\",\n  \"input.error.message.pattern-error\": \"Match the pattern \\\"{pattern}\\\".\",\n  \"dext-number-input.input.error.message.required-error\": \"Enter a number.\",\n  \"field-context-menu.ai-assistant\": \"Ask AI\",\n  \"field-context-menu.move-to-previous-page\": \"Move to previous page\",\n  \"dext-date-picker.input.error.message.required-error\": \"Choose a date.\",\n  \"date-input.input.error.message.max-value-error\": \"Enter a valid date from January 1, 1000 to today.\",\n  \"dext-checkbox-group.input.error.message.required-error\": \"Choose an option.\",\n  \"file-upload.dropzone.subtitle\": \"Choose a file or drag and drop one here.\",\n  \"dext-radio-group.input.error.message.required-error\": \"Choose an option.\",\n  \"checkbox.input.error.message.not-allowed-value\": \"Check the box to continue.\",\n  \"contacts-birthdate.input.error.message.max-value-error\": \"Enter a date from January 1, 1900 to today.\",\n  \"input.error.message.incomplete-date-error.month-day-time\": \"Enter a month, day and time.\",\n  \"file-upload.aria-roledescription\": \"File upload\",\n  \"contacts-phone.input.error.message.pattern-error\": \"Enter a valid phone number.\",\n  \"mla-street-number.input.error.message.required-error\": \"Enter a house number.\",\n  \"date-picker.a11y.dropdown-month\": \"Select month\",\n  \"field.signature.mode.type.label\": \"Type\",\n  \"settings.default-value-conflict.min-value-error\": \"Min characters must be at least the default text length. Update the character limit or shorten the text.\",\n  \"date-picker.input.error.message.min-value-error\": \"Enter a valid date after today’s date.\",\n  \"settings.scheduling.meeting-type.personal\": \"Single Host\",\n  \"date-time-input.input.error.message.min-value-error\": \"Enter a valid date after today’s date.\",\n  \"dext-checkbox.input.error.message.required-error\": \"Check the box to continue.\",\n  \"url-input.input.error.message.format-error\": \"Enter a web URL like https://www.example.com.\",\n  \"file-upload.file.uploading-spinner.aria-label\": \"Loading file\",\n  \"field.phone.country-code.aria-label\": \"Country code\",\n  \"add-other.default-other-option-label\": \"Other\",\n  \"dext-checkbox.input.error.message.not-allowed-value\": \"Check the box to continue.\",\n  \"field.date.placeholder.year\": \"Year\",\n  \"date-picker.input.error.message.max-value-error\": \"Enter a valid date from January 1, 1000 to today.\",\n  \"field.signature.text.placeholder\": \"Type your signature\",\n  \"dext-date-picker.input.error.message.format-error\": \"Choose a date.\",\n  \"form.file-upload.error.upload-limit\": \"There is an upload limit of {limit, plural, one {# file} other {# files}}.\",\n  \"checkbox-group.input.error.message.required-error\": \"Choose an option.\",\n  \"rating-input.input.error.message.required-error\": \"Choose a star rating.\",\n  \"field.mla-apartment.label\": \"Apartment\",\n  \"text-area.input.error.message.required-error\": \"Enter an answer.\",\n  \"field.phone.country-search-input.placeholder\": \"Search\",\n  \"submission-table.appointment.meeting-tool-tip\": \"Go to Scheduled Meetings\",\n  \"donation.other-option.placeholder\": \"Enter an amount\",\n  \"dext-rating-input.input.error.message.required-error\": \"Choose a star rating.\",\n  \"field.signature.a11y.action-description.draw\": \"Sign in the box.\",\n  \"contacts-birthdate.input.error.message.min-value-error\": \"Enter a date from January 1, 1900 to today.\",\n  \"mla-subdivision.input.error.message.required-error\": \"Choose an option.\",\n  \"dext-dropdown.input.error.message.required-error\": \"Choose an option.\",\n  \"contacts-text-input.input.error.message.required-error\": \"Enter an answer.\",\n  \"field.date.label.day\": \"Day\",\n  \"vat-id.input.error.message.required-error.br\": \"Enter a CPF/CNPJ number.\",\n  \"platform-quiz-single-answer.input.error.message.required-error\": \"Choose an option.\",\n  \"date-picker.calendar.close-button\": \"Close\",\n  \"phone.input.error.message.required-error\": \"Enter a phone number.\",\n  \"phone.input.error.message.format-error\": \"Enter a valid phone number.\",\n  \"input.error.message.invalid-value-for-pattern\": \"Enter a valid answer.\",\n  \"radio-group.input.error.message.required-error\": \"Choose an option.\",\n  \"input.error.message.min-items-error\": \"Choose at least {limit, plural, one {# option} other {# options}}.\",\n  \"ecom.form.field-type.ecom-subscriptions.label\": \"I agree to receive news to the email address and/or phone numbers added\",\n  \"input.error.message.decimal_point_error\": \"Add {number} number(s) after the decimal point.\",\n  \"bookings-email.input.error.message.required-error\": \"Enter an email address like example@mysite.com.\",\n  \"contacts-subscribe.input.error.message.required-error\": \"Check the box to continue.\",\n  \"form.appointment.show-more-slots.text\": \"Show more slots\",\n  \"form.file-upload.error.upload-failed\": \"File upload failed.\",\n  \"dext-email.input.error.message.format-error\": \"Enter an email address like example@mysite.com.\",\n  \"full-name-first-name.input.error.message.required-error\": \"Enter a first name.\",\n  \"field-context-menu.settings\": \"Settings\",\n  \"settings.default-value-conflict.max-value-error\": \"Max characters must be at least the default text length. Update the character limit or shorten the text.\",\n  \"bookings-last-name.input.error.message.required-error\": \"Enter a last name.\",\n  \"appointment.input.error.message.required-error\": \"This field is required.\",\n  \"field-context-menu.make-required\": \"Make required\",\n  \"date-time-input.input.error.message.format-error\": \"Enter a month, day and year.\",\n  \"field.date.label.time\": \"Time\",\n  \"input.error.message.required-error\": \"This field is required.\",\n  \"field.phone.country-selector-dropdown.no-result\": \"No results found...\",\n  \"input.error.message.exact-items-number-error\": \"Choose {limit, plural, one {# option} other {# options}}.\",\n  \"form.appointment.timezone.label\": \"Time zone\",\n  \"dext-date-time-input.input.error.message.required-error\": \"Enter a month, day and year.\",\n  \"date-time-input.input.error.message.max-value-error\": \"Enter a valid date from January 1, 1000 to today.\",\n  \"date-picker.a11y.arrow-right\": \"Go to next month\",\n  \"input.error.message.incomplete-date-error.time\": \"Enter a time.\",\n  \"field.signature.canvas.aria-label.signed\": \"Signature drawing area (signed)\",\n  \"settings.default-value-conflict.regex-error\": \"The regex must be viable for the entered default value. Update the regex or change the text.\",\n  \"contacts-phone.input.error.message.format-error\": \"Enter a valid phone number.\",\n  \"tags.input.error.message.required-error\": \"Choose an option.\",\n  \"file-upload.dropzone.limit-reached.subtitle\": \"Delete a file to add a different one.\",\n  \"input.error.message.max-value-error\": \"Enter a number that is {limit} or less.\",\n  \"input.error.message.min-length-error\": \"Enter at least {limit, plural, one {# character} other {# characters}}.\",\n  \"form.appointment.meeting-format.in-person-location-method-os-location\": \"Business location\",\n  \"form.file-upload.error.limit\": \"You've reached your upload limit of {limit, number} files.\",\n  \"contacts-email.input.error.message.required-error\": \"Enter an email address like example@mysite.com.\",\n  \"field-context-menu.duplicate\": \"Duplicate\"\n}\n","module.exports = Long;\r\n\r\n/**\r\n * wasm optimizations, to do native i64 multiplication and divide\r\n */\r\nvar wasm = null;\r\n\r\ntry {\r\n  wasm = new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([\r\n    0, 97, 115, 109, 1, 0, 0, 0, 1, 13, 2, 96, 0, 1, 127, 96, 4, 127, 127, 127, 127, 1, 127, 3, 7, 6, 0, 1, 1, 1, 1, 1, 6, 6, 1, 127, 1, 65, 0, 11, 7, 50, 6, 3, 109, 117, 108, 0, 1, 5, 100, 105, 118, 95, 115, 0, 2, 5, 100, 105, 118, 95, 117, 0, 3, 5, 114, 101, 109, 95, 115, 0, 4, 5, 114, 101, 109, 95, 117, 0, 5, 8, 103, 101, 116, 95, 104, 105, 103, 104, 0, 0, 10, 191, 1, 6, 4, 0, 35, 0, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 126, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 127, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 128, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 129, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 130, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11\r\n  ])), {}).exports;\r\n} catch (e) {\r\n  // no wasm support :(\r\n}\r\n\r\n/**\r\n * Constructs a 64 bit two's-complement integer, given its low and high 32 bit values as *signed* integers.\r\n *  See the from* functions below for more convenient ways of constructing Longs.\r\n * @exports Long\r\n * @class A Long class for representing a 64 bit two's-complement integer value.\r\n * @param {number} low The low (signed) 32 bits of the long\r\n * @param {number} high The high (signed) 32 bits of the long\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @constructor\r\n */\r\nfunction Long(low, high, unsigned) {\r\n\r\n    /**\r\n     * The low 32 bits as a signed value.\r\n     * @type {number}\r\n     */\r\n    this.low = low | 0;\r\n\r\n    /**\r\n     * The high 32 bits as a signed value.\r\n     * @type {number}\r\n     */\r\n    this.high = high | 0;\r\n\r\n    /**\r\n     * Whether unsigned or not.\r\n     * @type {boolean}\r\n     */\r\n    this.unsigned = !!unsigned;\r\n}\r\n\r\n// The internal representation of a long is the two given signed, 32-bit values.\r\n// We use 32-bit pieces because these are the size of integers on which\r\n// Javascript performs bit-operations.  For operations like addition and\r\n// multiplication, we split each number into 16 bit pieces, which can easily be\r\n// multiplied within Javascript's floating-point representation without overflow\r\n// or change in sign.\r\n//\r\n// In the algorithms below, we frequently reduce the negative case to the\r\n// positive case by negating the input(s) and then post-processing the result.\r\n// Note that we must ALWAYS check specially whether those values are MIN_VALUE\r\n// (-2^63) because -MIN_VALUE == MIN_VALUE (since 2^63 cannot be represented as\r\n// a positive number, it overflows back into a negative).  Not handling this\r\n// case would often result in infinite recursion.\r\n//\r\n// Common constant values ZERO, ONE, NEG_ONE, etc. are defined below the from*\r\n// methods on which they depend.\r\n\r\n/**\r\n * An indicator used to reliably determine if an object is a Long or not.\r\n * @type {boolean}\r\n * @const\r\n * @private\r\n */\r\nLong.prototype.__isLong__;\r\n\r\nObject.defineProperty(Long.prototype, \"__isLong__\", { value: true });\r\n\r\n/**\r\n * @function\r\n * @param {*} obj Object\r\n * @returns {boolean}\r\n * @inner\r\n */\r\nfunction isLong(obj) {\r\n    return (obj && obj[\"__isLong__\"]) === true;\r\n}\r\n\r\n/**\r\n * Tests if the specified object is a Long.\r\n * @function\r\n * @param {*} obj Object\r\n * @returns {boolean}\r\n */\r\nLong.isLong = isLong;\r\n\r\n/**\r\n * A cache of the Long representations of small integer values.\r\n * @type {!Object}\r\n * @inner\r\n */\r\nvar INT_CACHE = {};\r\n\r\n/**\r\n * A cache of the Long representations of small unsigned integer values.\r\n * @type {!Object}\r\n * @inner\r\n */\r\nvar UINT_CACHE = {};\r\n\r\n/**\r\n * @param {number} value\r\n * @param {boolean=} unsigned\r\n * @returns {!Long}\r\n * @inner\r\n */\r\nfunction fromInt(value, unsigned) {\r\n    var obj, cachedObj, cache;\r\n    if (unsigned) {\r\n        value >>>= 0;\r\n        if (cache = (0 <= value && value < 256)) {\r\n            cachedObj = UINT_CACHE[value];\r\n            if (cachedObj)\r\n                return cachedObj;\r\n        }\r\n        obj = fromBits(value, (value | 0) < 0 ? -1 : 0, true);\r\n        if (cache)\r\n            UINT_CACHE[value] = obj;\r\n        return obj;\r\n    } else {\r\n        value |= 0;\r\n        if (cache = (-128 <= value && value < 128)) {\r\n            cachedObj = INT_CACHE[value];\r\n            if (cachedObj)\r\n                return cachedObj;\r\n        }\r\n        obj = fromBits(value, value < 0 ? -1 : 0, false);\r\n        if (cache)\r\n            INT_CACHE[value] = obj;\r\n        return obj;\r\n    }\r\n}\r\n\r\n/**\r\n * Returns a Long representing the given 32 bit integer value.\r\n * @function\r\n * @param {number} value The 32 bit integer in question\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @returns {!Long} The corresponding Long value\r\n */\r\nLong.fromInt = fromInt;\r\n\r\n/**\r\n * @param {number} value\r\n * @param {boolean=} unsigned\r\n * @returns {!Long}\r\n * @inner\r\n */\r\nfunction fromNumber(value, unsigned) {\r\n    if (isNaN(value))\r\n        return unsigned ? UZERO : ZERO;\r\n    if (unsigned) {\r\n        if (value < 0)\r\n            return UZERO;\r\n        if (value >= TWO_PWR_64_DBL)\r\n            return MAX_UNSIGNED_VALUE;\r\n    } else {\r\n        if (value <= -TWO_PWR_63_DBL)\r\n            return MIN_VALUE;\r\n        if (value + 1 >= TWO_PWR_63_DBL)\r\n            return MAX_VALUE;\r\n    }\r\n    if (value < 0)\r\n        return fromNumber(-value, unsigned).neg();\r\n    return fromBits((value % TWO_PWR_32_DBL) | 0, (value / TWO_PWR_32_DBL) | 0, unsigned);\r\n}\r\n\r\n/**\r\n * Returns a Long representing the given value, provided that it is a finite number. Otherwise, zero is returned.\r\n * @function\r\n * @param {number} value The number in question\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @returns {!Long} The corresponding Long value\r\n */\r\nLong.fromNumber = fromNumber;\r\n\r\n/**\r\n * @param {number} lowBits\r\n * @param {number} highBits\r\n * @param {boolean=} unsigned\r\n * @returns {!Long}\r\n * @inner\r\n */\r\nfunction fromBits(lowBits, highBits, unsigned) {\r\n    return new Long(lowBits, highBits, unsigned);\r\n}\r\n\r\n/**\r\n * Returns a Long representing the 64 bit integer that comes by concatenating the given low and high bits. Each is\r\n *  assumed to use 32 bits.\r\n * @function\r\n * @param {number} lowBits The low 32 bits\r\n * @param {number} highBits The high 32 bits\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @returns {!Long} The corresponding Long value\r\n */\r\nLong.fromBits = fromBits;\r\n\r\n/**\r\n * @function\r\n * @param {number} base\r\n * @param {number} exponent\r\n * @returns {number}\r\n * @inner\r\n */\r\nvar pow_dbl = Math.pow; // Used 4 times (4*8 to 15+4)\r\n\r\n/**\r\n * @param {string} str\r\n * @param {(boolean|number)=} unsigned\r\n * @param {number=} radix\r\n * @returns {!Long}\r\n * @inner\r\n */\r\nfunction fromString(str, unsigned, radix) {\r\n    if (str.length === 0)\r\n        throw Error('empty string');\r\n    if (str === \"NaN\" || str === \"Infinity\" || str === \"+Infinity\" || str === \"-Infinity\")\r\n        return ZERO;\r\n    if (typeof unsigned === 'number') {\r\n        // For goog.math.long compatibility\r\n        radix = unsigned,\r\n        unsigned = false;\r\n    } else {\r\n        unsigned = !! unsigned;\r\n    }\r\n    radix = radix || 10;\r\n    if (radix < 2 || 36 < radix)\r\n        throw RangeError('radix');\r\n\r\n    var p;\r\n    if ((p = str.indexOf('-')) > 0)\r\n        throw Error('interior hyphen');\r\n    else if (p === 0) {\r\n        return fromString(str.substring(1), unsigned, radix).neg();\r\n    }\r\n\r\n    // Do several (8) digits each time through the loop, so as to\r\n    // minimize the calls to the very expensive emulated div.\r\n    var radixToPower = fromNumber(pow_dbl(radix, 8));\r\n\r\n    var result = ZERO;\r\n    for (var i = 0; i < str.length; i += 8) {\r\n        var size = Math.min(8, str.length - i),\r\n            value = parseInt(str.substring(i, i + size), radix);\r\n        if (size < 8) {\r\n            var power = fromNumber(pow_dbl(radix, size));\r\n            result = result.mul(power).add(fromNumber(value));\r\n        } else {\r\n            result = result.mul(radixToPower);\r\n            result = result.add(fromNumber(value));\r\n        }\r\n    }\r\n    result.unsigned = unsigned;\r\n    return result;\r\n}\r\n\r\n/**\r\n * Returns a Long representation of the given string, written using the specified radix.\r\n * @function\r\n * @param {string} str The textual representation of the Long\r\n * @param {(boolean|number)=} unsigned Whether unsigned or not, defaults to signed\r\n * @param {number=} radix The radix in which the text is written (2-36), defaults to 10\r\n * @returns {!Long} The corresponding Long value\r\n */\r\nLong.fromString = fromString;\r\n\r\n/**\r\n * @function\r\n * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val\r\n * @param {boolean=} unsigned\r\n * @returns {!Long}\r\n * @inner\r\n */\r\nfunction fromValue(val, unsigned) {\r\n    if (typeof val === 'number')\r\n        return fromNumber(val, unsigned);\r\n    if (typeof val === 'string')\r\n        return fromString(val, unsigned);\r\n    // Throws for non-objects, converts non-instanceof Long:\r\n    return fromBits(val.low, val.high, typeof unsigned === 'boolean' ? unsigned : val.unsigned);\r\n}\r\n\r\n/**\r\n * Converts the specified value to a Long using the appropriate from* function for its type.\r\n * @function\r\n * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val Value\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @returns {!Long}\r\n */\r\nLong.fromValue = fromValue;\r\n\r\n// NOTE: the compiler should inline these constant values below and then remove these variables, so there should be\r\n// no runtime penalty for these.\r\n\r\n/**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\nvar TWO_PWR_16_DBL = 1 << 16;\r\n\r\n/**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\nvar TWO_PWR_24_DBL = 1 << 24;\r\n\r\n/**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\nvar TWO_PWR_32_DBL = TWO_PWR_16_DBL * TWO_PWR_16_DBL;\r\n\r\n/**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\nvar TWO_PWR_64_DBL = TWO_PWR_32_DBL * TWO_PWR_32_DBL;\r\n\r\n/**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\nvar TWO_PWR_63_DBL = TWO_PWR_64_DBL / 2;\r\n\r\n/**\r\n * @type {!Long}\r\n * @const\r\n * @inner\r\n */\r\nvar TWO_PWR_24 = fromInt(TWO_PWR_24_DBL);\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar ZERO = fromInt(0);\r\n\r\n/**\r\n * Signed zero.\r\n * @type {!Long}\r\n */\r\nLong.ZERO = ZERO;\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar UZERO = fromInt(0, true);\r\n\r\n/**\r\n * Unsigned zero.\r\n * @type {!Long}\r\n */\r\nLong.UZERO = UZERO;\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar ONE = fromInt(1);\r\n\r\n/**\r\n * Signed one.\r\n * @type {!Long}\r\n */\r\nLong.ONE = ONE;\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar UONE = fromInt(1, true);\r\n\r\n/**\r\n * Unsigned one.\r\n * @type {!Long}\r\n */\r\nLong.UONE = UONE;\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar NEG_ONE = fromInt(-1);\r\n\r\n/**\r\n * Signed negative one.\r\n * @type {!Long}\r\n */\r\nLong.NEG_ONE = NEG_ONE;\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar MAX_VALUE = fromBits(0xFFFFFFFF|0, 0x7FFFFFFF|0, false);\r\n\r\n/**\r\n * Maximum signed value.\r\n * @type {!Long}\r\n */\r\nLong.MAX_VALUE = MAX_VALUE;\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar MAX_UNSIGNED_VALUE = fromBits(0xFFFFFFFF|0, 0xFFFFFFFF|0, true);\r\n\r\n/**\r\n * Maximum unsigned value.\r\n * @type {!Long}\r\n */\r\nLong.MAX_UNSIGNED_VALUE = MAX_UNSIGNED_VALUE;\r\n\r\n/**\r\n * @type {!Long}\r\n * @inner\r\n */\r\nvar MIN_VALUE = fromBits(0, 0x80000000|0, false);\r\n\r\n/**\r\n * Minimum signed value.\r\n * @type {!Long}\r\n */\r\nLong.MIN_VALUE = MIN_VALUE;\r\n\r\n/**\r\n * @alias Long.prototype\r\n * @inner\r\n */\r\nvar LongPrototype = Long.prototype;\r\n\r\n/**\r\n * Converts the Long to a 32 bit integer, assuming it is a 32 bit integer.\r\n * @returns {number}\r\n */\r\nLongPrototype.toInt = function toInt() {\r\n    return this.unsigned ? this.low >>> 0 : this.low;\r\n};\r\n\r\n/**\r\n * Converts the Long to a the nearest floating-point representation of this value (double, 53 bit mantissa).\r\n * @returns {number}\r\n */\r\nLongPrototype.toNumber = function toNumber() {\r\n    if (this.unsigned)\r\n        return ((this.high >>> 0) * TWO_PWR_32_DBL) + (this.low >>> 0);\r\n    return this.high * TWO_PWR_32_DBL + (this.low >>> 0);\r\n};\r\n\r\n/**\r\n * Converts the Long to a string written in the specified radix.\r\n * @param {number=} radix Radix (2-36), defaults to 10\r\n * @returns {string}\r\n * @override\r\n * @throws {RangeError} If `radix` is out of range\r\n */\r\nLongPrototype.toString = function toString(radix) {\r\n    radix = radix || 10;\r\n    if (radix < 2 || 36 < radix)\r\n        throw RangeError('radix');\r\n    if (this.isZero())\r\n        return '0';\r\n    if (this.isNegative()) { // Unsigned Longs are never negative\r\n        if (this.eq(MIN_VALUE)) {\r\n            // We need to change the Long value before it can be negated, so we remove\r\n            // the bottom-most digit in this base and then recurse to do the rest.\r\n            var radixLong = fromNumber(radix),\r\n                div = this.div(radixLong),\r\n                rem1 = div.mul(radixLong).sub(this);\r\n            return div.toString(radix) + rem1.toInt().toString(radix);\r\n        } else\r\n            return '-' + this.neg().toString(radix);\r\n    }\r\n\r\n    // Do several (6) digits each time through the loop, so as to\r\n    // minimize the calls to the very expensive emulated div.\r\n    var radixToPower = fromNumber(pow_dbl(radix, 6), this.unsigned),\r\n        rem = this;\r\n    var result = '';\r\n    while (true) {\r\n        var remDiv = rem.div(radixToPower),\r\n            intval = rem.sub(remDiv.mul(radixToPower)).toInt() >>> 0,\r\n            digits = intval.toString(radix);\r\n        rem = remDiv;\r\n        if (rem.isZero())\r\n            return digits + result;\r\n        else {\r\n            while (digits.length < 6)\r\n                digits = '0' + digits;\r\n            result = '' + digits + result;\r\n        }\r\n    }\r\n};\r\n\r\n/**\r\n * Gets the high 32 bits as a signed integer.\r\n * @returns {number} Signed high bits\r\n */\r\nLongPrototype.getHighBits = function getHighBits() {\r\n    return this.high;\r\n};\r\n\r\n/**\r\n * Gets the high 32 bits as an unsigned integer.\r\n * @returns {number} Unsigned high bits\r\n */\r\nLongPrototype.getHighBitsUnsigned = function getHighBitsUnsigned() {\r\n    return this.high >>> 0;\r\n};\r\n\r\n/**\r\n * Gets the low 32 bits as a signed integer.\r\n * @returns {number} Signed low bits\r\n */\r\nLongPrototype.getLowBits = function getLowBits() {\r\n    return this.low;\r\n};\r\n\r\n/**\r\n * Gets the low 32 bits as an unsigned integer.\r\n * @returns {number} Unsigned low bits\r\n */\r\nLongPrototype.getLowBitsUnsigned = function getLowBitsUnsigned() {\r\n    return this.low >>> 0;\r\n};\r\n\r\n/**\r\n * Gets the number of bits needed to represent the absolute value of this Long.\r\n * @returns {number}\r\n */\r\nLongPrototype.getNumBitsAbs = function getNumBitsAbs() {\r\n    if (this.isNegative()) // Unsigned Longs are never negative\r\n        return this.eq(MIN_VALUE) ? 64 : this.neg().getNumBitsAbs();\r\n    var val = this.high != 0 ? this.high : this.low;\r\n    for (var bit = 31; bit > 0; bit--)\r\n        if ((val & (1 << bit)) != 0)\r\n            break;\r\n    return this.high != 0 ? bit + 33 : bit + 1;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value equals zero.\r\n * @returns {boolean}\r\n */\r\nLongPrototype.isZero = function isZero() {\r\n    return this.high === 0 && this.low === 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value equals zero. This is an alias of {@link Long#isZero}.\r\n * @returns {boolean}\r\n */\r\nLongPrototype.eqz = LongPrototype.isZero;\r\n\r\n/**\r\n * Tests if this Long's value is negative.\r\n * @returns {boolean}\r\n */\r\nLongPrototype.isNegative = function isNegative() {\r\n    return !this.unsigned && this.high < 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value is positive.\r\n * @returns {boolean}\r\n */\r\nLongPrototype.isPositive = function isPositive() {\r\n    return this.unsigned || this.high >= 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value is odd.\r\n * @returns {boolean}\r\n */\r\nLongPrototype.isOdd = function isOdd() {\r\n    return (this.low & 1) === 1;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value is even.\r\n * @returns {boolean}\r\n */\r\nLongPrototype.isEven = function isEven() {\r\n    return (this.low & 1) === 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value equals the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.equals = function equals(other) {\r\n    if (!isLong(other))\r\n        other = fromValue(other);\r\n    if (this.unsigned !== other.unsigned && (this.high >>> 31) === 1 && (other.high >>> 31) === 1)\r\n        return false;\r\n    return this.high === other.high && this.low === other.low;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value equals the specified's. This is an alias of {@link Long#equals}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.eq = LongPrototype.equals;\r\n\r\n/**\r\n * Tests if this Long's value differs from the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.notEquals = function notEquals(other) {\r\n    return !this.eq(/* validates */ other);\r\n};\r\n\r\n/**\r\n * Tests if this Long's value differs from the specified's. This is an alias of {@link Long#notEquals}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.neq = LongPrototype.notEquals;\r\n\r\n/**\r\n * Tests if this Long's value differs from the specified's. This is an alias of {@link Long#notEquals}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.ne = LongPrototype.notEquals;\r\n\r\n/**\r\n * Tests if this Long's value is less than the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.lessThan = function lessThan(other) {\r\n    return this.comp(/* validates */ other) < 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value is less than the specified's. This is an alias of {@link Long#lessThan}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.lt = LongPrototype.lessThan;\r\n\r\n/**\r\n * Tests if this Long's value is less than or equal the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.lessThanOrEqual = function lessThanOrEqual(other) {\r\n    return this.comp(/* validates */ other) <= 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value is less than or equal the specified's. This is an alias of {@link Long#lessThanOrEqual}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.lte = LongPrototype.lessThanOrEqual;\r\n\r\n/**\r\n * Tests if this Long's value is less than or equal the specified's. This is an alias of {@link Long#lessThanOrEqual}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.le = LongPrototype.lessThanOrEqual;\r\n\r\n/**\r\n * Tests if this Long's value is greater than the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.greaterThan = function greaterThan(other) {\r\n    return this.comp(/* validates */ other) > 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value is greater than the specified's. This is an alias of {@link Long#greaterThan}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.gt = LongPrototype.greaterThan;\r\n\r\n/**\r\n * Tests if this Long's value is greater than or equal the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.greaterThanOrEqual = function greaterThanOrEqual(other) {\r\n    return this.comp(/* validates */ other) >= 0;\r\n};\r\n\r\n/**\r\n * Tests if this Long's value is greater than or equal the specified's. This is an alias of {@link Long#greaterThanOrEqual}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.gte = LongPrototype.greaterThanOrEqual;\r\n\r\n/**\r\n * Tests if this Long's value is greater than or equal the specified's. This is an alias of {@link Long#greaterThanOrEqual}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\nLongPrototype.ge = LongPrototype.greaterThanOrEqual;\r\n\r\n/**\r\n * Compares this Long's value with the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {number} 0 if they are the same, 1 if the this is greater and -1\r\n *  if the given one is greater\r\n */\r\nLongPrototype.compare = function compare(other) {\r\n    if (!isLong(other))\r\n        other = fromValue(other);\r\n    if (this.eq(other))\r\n        return 0;\r\n    var thisNeg = this.isNegative(),\r\n        otherNeg = other.isNegative();\r\n    if (thisNeg && !otherNeg)\r\n        return -1;\r\n    if (!thisNeg && otherNeg)\r\n        return 1;\r\n    // At this point the sign bits are the same\r\n    if (!this.unsigned)\r\n        return this.sub(other).isNegative() ? -1 : 1;\r\n    // Both are positive if at least one is unsigned\r\n    return (other.high >>> 0) > (this.high >>> 0) || (other.high === this.high && (other.low >>> 0) > (this.low >>> 0)) ? -1 : 1;\r\n};\r\n\r\n/**\r\n * Compares this Long's value with the specified's. This is an alias of {@link Long#compare}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {number} 0 if they are the same, 1 if the this is greater and -1\r\n *  if the given one is greater\r\n */\r\nLongPrototype.comp = LongPrototype.compare;\r\n\r\n/**\r\n * Negates this Long's value.\r\n * @returns {!Long} Negated Long\r\n */\r\nLongPrototype.negate = function negate() {\r\n    if (!this.unsigned && this.eq(MIN_VALUE))\r\n        return MIN_VALUE;\r\n    return this.not().add(ONE);\r\n};\r\n\r\n/**\r\n * Negates this Long's value. This is an alias of {@link Long#negate}.\r\n * @function\r\n * @returns {!Long} Negated Long\r\n */\r\nLongPrototype.neg = LongPrototype.negate;\r\n\r\n/**\r\n * Returns the sum of this and the specified Long.\r\n * @param {!Long|number|string} addend Addend\r\n * @returns {!Long} Sum\r\n */\r\nLongPrototype.add = function add(addend) {\r\n    if (!isLong(addend))\r\n        addend = fromValue(addend);\r\n\r\n    // Divide each number into 4 chunks of 16 bits, and then sum the chunks.\r\n\r\n    var a48 = this.high >>> 16;\r\n    var a32 = this.high & 0xFFFF;\r\n    var a16 = this.low >>> 16;\r\n    var a00 = this.low & 0xFFFF;\r\n\r\n    var b48 = addend.high >>> 16;\r\n    var b32 = addend.high & 0xFFFF;\r\n    var b16 = addend.low >>> 16;\r\n    var b00 = addend.low & 0xFFFF;\r\n\r\n    var c48 = 0, c32 = 0, c16 = 0, c00 = 0;\r\n    c00 += a00 + b00;\r\n    c16 += c00 >>> 16;\r\n    c00 &= 0xFFFF;\r\n    c16 += a16 + b16;\r\n    c32 += c16 >>> 16;\r\n    c16 &= 0xFFFF;\r\n    c32 += a32 + b32;\r\n    c48 += c32 >>> 16;\r\n    c32 &= 0xFFFF;\r\n    c48 += a48 + b48;\r\n    c48 &= 0xFFFF;\r\n    return fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns the difference of this and the specified Long.\r\n * @param {!Long|number|string} subtrahend Subtrahend\r\n * @returns {!Long} Difference\r\n */\r\nLongPrototype.subtract = function subtract(subtrahend) {\r\n    if (!isLong(subtrahend))\r\n        subtrahend = fromValue(subtrahend);\r\n    return this.add(subtrahend.neg());\r\n};\r\n\r\n/**\r\n * Returns the difference of this and the specified Long. This is an alias of {@link Long#subtract}.\r\n * @function\r\n * @param {!Long|number|string} subtrahend Subtrahend\r\n * @returns {!Long} Difference\r\n */\r\nLongPrototype.sub = LongPrototype.subtract;\r\n\r\n/**\r\n * Returns the product of this and the specified Long.\r\n * @param {!Long|number|string} multiplier Multiplier\r\n * @returns {!Long} Product\r\n */\r\nLongPrototype.multiply = function multiply(multiplier) {\r\n    if (this.isZero())\r\n        return ZERO;\r\n    if (!isLong(multiplier))\r\n        multiplier = fromValue(multiplier);\r\n\r\n    // use wasm support if present\r\n    if (wasm) {\r\n        var low = wasm.mul(this.low,\r\n                           this.high,\r\n                           multiplier.low,\r\n                           multiplier.high);\r\n        return fromBits(low, wasm.get_high(), this.unsigned);\r\n    }\r\n\r\n    if (multiplier.isZero())\r\n        return ZERO;\r\n    if (this.eq(MIN_VALUE))\r\n        return multiplier.isOdd() ? MIN_VALUE : ZERO;\r\n    if (multiplier.eq(MIN_VALUE))\r\n        return this.isOdd() ? MIN_VALUE : ZERO;\r\n\r\n    if (this.isNegative()) {\r\n        if (multiplier.isNegative())\r\n            return this.neg().mul(multiplier.neg());\r\n        else\r\n            return this.neg().mul(multiplier).neg();\r\n    } else if (multiplier.isNegative())\r\n        return this.mul(multiplier.neg()).neg();\r\n\r\n    // If both longs are small, use float multiplication\r\n    if (this.lt(TWO_PWR_24) && multiplier.lt(TWO_PWR_24))\r\n        return fromNumber(this.toNumber() * multiplier.toNumber(), this.unsigned);\r\n\r\n    // Divide each long into 4 chunks of 16 bits, and then add up 4x4 products.\r\n    // We can skip products that would overflow.\r\n\r\n    var a48 = this.high >>> 16;\r\n    var a32 = this.high & 0xFFFF;\r\n    var a16 = this.low >>> 16;\r\n    var a00 = this.low & 0xFFFF;\r\n\r\n    var b48 = multiplier.high >>> 16;\r\n    var b32 = multiplier.high & 0xFFFF;\r\n    var b16 = multiplier.low >>> 16;\r\n    var b00 = multiplier.low & 0xFFFF;\r\n\r\n    var c48 = 0, c32 = 0, c16 = 0, c00 = 0;\r\n    c00 += a00 * b00;\r\n    c16 += c00 >>> 16;\r\n    c00 &= 0xFFFF;\r\n    c16 += a16 * b00;\r\n    c32 += c16 >>> 16;\r\n    c16 &= 0xFFFF;\r\n    c16 += a00 * b16;\r\n    c32 += c16 >>> 16;\r\n    c16 &= 0xFFFF;\r\n    c32 += a32 * b00;\r\n    c48 += c32 >>> 16;\r\n    c32 &= 0xFFFF;\r\n    c32 += a16 * b16;\r\n    c48 += c32 >>> 16;\r\n    c32 &= 0xFFFF;\r\n    c32 += a00 * b32;\r\n    c48 += c32 >>> 16;\r\n    c32 &= 0xFFFF;\r\n    c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48;\r\n    c48 &= 0xFFFF;\r\n    return fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns the product of this and the specified Long. This is an alias of {@link Long#multiply}.\r\n * @function\r\n * @param {!Long|number|string} multiplier Multiplier\r\n * @returns {!Long} Product\r\n */\r\nLongPrototype.mul = LongPrototype.multiply;\r\n\r\n/**\r\n * Returns this Long divided by the specified. The result is signed if this Long is signed or\r\n *  unsigned if this Long is unsigned.\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Quotient\r\n */\r\nLongPrototype.divide = function divide(divisor) {\r\n    if (!isLong(divisor))\r\n        divisor = fromValue(divisor);\r\n    if (divisor.isZero())\r\n        throw Error('division by zero');\r\n\r\n    // use wasm support if present\r\n    if (wasm) {\r\n        // guard against signed division overflow: the largest\r\n        // negative number / -1 would be 1 larger than the largest\r\n        // positive number, due to two's complement.\r\n        if (!this.unsigned &&\r\n            this.high === -0x80000000 &&\r\n            divisor.low === -1 && divisor.high === -1) {\r\n            // be consistent with non-wasm code path\r\n            return this;\r\n        }\r\n        var low = (this.unsigned ? wasm.div_u : wasm.div_s)(\r\n            this.low,\r\n            this.high,\r\n            divisor.low,\r\n            divisor.high\r\n        );\r\n        return fromBits(low, wasm.get_high(), this.unsigned);\r\n    }\r\n\r\n    if (this.isZero())\r\n        return this.unsigned ? UZERO : ZERO;\r\n    var approx, rem, res;\r\n    if (!this.unsigned) {\r\n        // This section is only relevant for signed longs and is derived from the\r\n        // closure library as a whole.\r\n        if (this.eq(MIN_VALUE)) {\r\n            if (divisor.eq(ONE) || divisor.eq(NEG_ONE))\r\n                return MIN_VALUE;  // recall that -MIN_VALUE == MIN_VALUE\r\n            else if (divisor.eq(MIN_VALUE))\r\n                return ONE;\r\n            else {\r\n                // At this point, we have |other| >= 2, so |this/other| < |MIN_VALUE|.\r\n                var halfThis = this.shr(1);\r\n                approx = halfThis.div(divisor).shl(1);\r\n                if (approx.eq(ZERO)) {\r\n                    return divisor.isNegative() ? ONE : NEG_ONE;\r\n                } else {\r\n                    rem = this.sub(divisor.mul(approx));\r\n                    res = approx.add(rem.div(divisor));\r\n                    return res;\r\n                }\r\n            }\r\n        } else if (divisor.eq(MIN_VALUE))\r\n            return this.unsigned ? UZERO : ZERO;\r\n        if (this.isNegative()) {\r\n            if (divisor.isNegative())\r\n                return this.neg().div(divisor.neg());\r\n            return this.neg().div(divisor).neg();\r\n        } else if (divisor.isNegative())\r\n            return this.div(divisor.neg()).neg();\r\n        res = ZERO;\r\n    } else {\r\n        // The algorithm below has not been made for unsigned longs. It's therefore\r\n        // required to take special care of the MSB prior to running it.\r\n        if (!divisor.unsigned)\r\n            divisor = divisor.toUnsigned();\r\n        if (divisor.gt(this))\r\n            return UZERO;\r\n        if (divisor.gt(this.shru(1))) // 15 >>> 1 = 7 ; with divisor = 8 ; true\r\n            return UONE;\r\n        res = UZERO;\r\n    }\r\n\r\n    // Repeat the following until the remainder is less than other:  find a\r\n    // floating-point that approximates remainder / other *from below*, add this\r\n    // into the result, and subtract it from the remainder.  It is critical that\r\n    // the approximate value is less than or equal to the real value so that the\r\n    // remainder never becomes negative.\r\n    rem = this;\r\n    while (rem.gte(divisor)) {\r\n        // Approximate the result of division. This may be a little greater or\r\n        // smaller than the actual value.\r\n        approx = Math.max(1, Math.floor(rem.toNumber() / divisor.toNumber()));\r\n\r\n        // We will tweak the approximate result by changing it in the 48-th digit or\r\n        // the smallest non-fractional digit, whichever is larger.\r\n        var log2 = Math.ceil(Math.log(approx) / Math.LN2),\r\n            delta = (log2 <= 48) ? 1 : pow_dbl(2, log2 - 48),\r\n\r\n        // Decrease the approximation until it is smaller than the remainder.  Note\r\n        // that if it is too large, the product overflows and is negative.\r\n            approxRes = fromNumber(approx),\r\n            approxRem = approxRes.mul(divisor);\r\n        while (approxRem.isNegative() || approxRem.gt(rem)) {\r\n            approx -= delta;\r\n            approxRes = fromNumber(approx, this.unsigned);\r\n            approxRem = approxRes.mul(divisor);\r\n        }\r\n\r\n        // We know the answer can't be zero... and actually, zero would cause\r\n        // infinite recursion since we would make no progress.\r\n        if (approxRes.isZero())\r\n            approxRes = ONE;\r\n\r\n        res = res.add(approxRes);\r\n        rem = rem.sub(approxRem);\r\n    }\r\n    return res;\r\n};\r\n\r\n/**\r\n * Returns this Long divided by the specified. This is an alias of {@link Long#divide}.\r\n * @function\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Quotient\r\n */\r\nLongPrototype.div = LongPrototype.divide;\r\n\r\n/**\r\n * Returns this Long modulo the specified.\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Remainder\r\n */\r\nLongPrototype.modulo = function modulo(divisor) {\r\n    if (!isLong(divisor))\r\n        divisor = fromValue(divisor);\r\n\r\n    // use wasm support if present\r\n    if (wasm) {\r\n        var low = (this.unsigned ? wasm.rem_u : wasm.rem_s)(\r\n            this.low,\r\n            this.high,\r\n            divisor.low,\r\n            divisor.high\r\n        );\r\n        return fromBits(low, wasm.get_high(), this.unsigned);\r\n    }\r\n\r\n    return this.sub(this.div(divisor).mul(divisor));\r\n};\r\n\r\n/**\r\n * Returns this Long modulo the specified. This is an alias of {@link Long#modulo}.\r\n * @function\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Remainder\r\n */\r\nLongPrototype.mod = LongPrototype.modulo;\r\n\r\n/**\r\n * Returns this Long modulo the specified. This is an alias of {@link Long#modulo}.\r\n * @function\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Remainder\r\n */\r\nLongPrototype.rem = LongPrototype.modulo;\r\n\r\n/**\r\n * Returns the bitwise NOT of this Long.\r\n * @returns {!Long}\r\n */\r\nLongPrototype.not = function not() {\r\n    return fromBits(~this.low, ~this.high, this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns the bitwise AND of this Long and the specified.\r\n * @param {!Long|number|string} other Other Long\r\n * @returns {!Long}\r\n */\r\nLongPrototype.and = function and(other) {\r\n    if (!isLong(other))\r\n        other = fromValue(other);\r\n    return fromBits(this.low & other.low, this.high & other.high, this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns the bitwise OR of this Long and the specified.\r\n * @param {!Long|number|string} other Other Long\r\n * @returns {!Long}\r\n */\r\nLongPrototype.or = function or(other) {\r\n    if (!isLong(other))\r\n        other = fromValue(other);\r\n    return fromBits(this.low | other.low, this.high | other.high, this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns the bitwise XOR of this Long and the given one.\r\n * @param {!Long|number|string} other Other Long\r\n * @returns {!Long}\r\n */\r\nLongPrototype.xor = function xor(other) {\r\n    if (!isLong(other))\r\n        other = fromValue(other);\r\n    return fromBits(this.low ^ other.low, this.high ^ other.high, this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns this Long with bits shifted to the left by the given amount.\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\nLongPrototype.shiftLeft = function shiftLeft(numBits) {\r\n    if (isLong(numBits))\r\n        numBits = numBits.toInt();\r\n    if ((numBits &= 63) === 0)\r\n        return this;\r\n    else if (numBits < 32)\r\n        return fromBits(this.low << numBits, (this.high << numBits) | (this.low >>> (32 - numBits)), this.unsigned);\r\n    else\r\n        return fromBits(0, this.low << (numBits - 32), this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns this Long with bits shifted to the left by the given amount. This is an alias of {@link Long#shiftLeft}.\r\n * @function\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\nLongPrototype.shl = LongPrototype.shiftLeft;\r\n\r\n/**\r\n * Returns this Long with bits arithmetically shifted to the right by the given amount.\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\nLongPrototype.shiftRight = function shiftRight(numBits) {\r\n    if (isLong(numBits))\r\n        numBits = numBits.toInt();\r\n    if ((numBits &= 63) === 0)\r\n        return this;\r\n    else if (numBits < 32)\r\n        return fromBits((this.low >>> numBits) | (this.high << (32 - numBits)), this.high >> numBits, this.unsigned);\r\n    else\r\n        return fromBits(this.high >> (numBits - 32), this.high >= 0 ? 0 : -1, this.unsigned);\r\n};\r\n\r\n/**\r\n * Returns this Long with bits arithmetically shifted to the right by the given amount. This is an alias of {@link Long#shiftRight}.\r\n * @function\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\nLongPrototype.shr = LongPrototype.shiftRight;\r\n\r\n/**\r\n * Returns this Long with bits logically shifted to the right by the given amount.\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\nLongPrototype.shiftRightUnsigned = function shiftRightUnsigned(numBits) {\r\n    if (isLong(numBits))\r\n        numBits = numBits.toInt();\r\n    numBits &= 63;\r\n    if (numBits === 0)\r\n        return this;\r\n    else {\r\n        var high = this.high;\r\n        if (numBits < 32) {\r\n            var low = this.low;\r\n            return fromBits((low >>> numBits) | (high << (32 - numBits)), high >>> numBits, this.unsigned);\r\n        } else if (numBits === 32)\r\n            return fromBits(high, 0, this.unsigned);\r\n        else\r\n            return fromBits(high >>> (numBits - 32), 0, this.unsigned);\r\n    }\r\n};\r\n\r\n/**\r\n * Returns this Long with bits logically shifted to the right by the given amount. This is an alias of {@link Long#shiftRightUnsigned}.\r\n * @function\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\nLongPrototype.shru = LongPrototype.shiftRightUnsigned;\r\n\r\n/**\r\n * Returns this Long with bits logically shifted to the right by the given amount. This is an alias of {@link Long#shiftRightUnsigned}.\r\n * @function\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\nLongPrototype.shr_u = LongPrototype.shiftRightUnsigned;\r\n\r\n/**\r\n * Converts this Long to signed.\r\n * @returns {!Long} Signed long\r\n */\r\nLongPrototype.toSigned = function toSigned() {\r\n    if (!this.unsigned)\r\n        return this;\r\n    return fromBits(this.low, this.high, false);\r\n};\r\n\r\n/**\r\n * Converts this Long to unsigned.\r\n * @returns {!Long} Unsigned long\r\n */\r\nLongPrototype.toUnsigned = function toUnsigned() {\r\n    if (this.unsigned)\r\n        return this;\r\n    return fromBits(this.low, this.high, true);\r\n};\r\n\r\n/**\r\n * Converts this Long to its byte representation.\r\n * @param {boolean=} le Whether little or big endian, defaults to big endian\r\n * @returns {!Array.<number>} Byte representation\r\n */\r\nLongPrototype.toBytes = function toBytes(le) {\r\n    return le ? this.toBytesLE() : this.toBytesBE();\r\n};\r\n\r\n/**\r\n * Converts this Long to its little endian byte representation.\r\n * @returns {!Array.<number>} Little endian byte representation\r\n */\r\nLongPrototype.toBytesLE = function toBytesLE() {\r\n    var hi = this.high,\r\n        lo = this.low;\r\n    return [\r\n        lo        & 0xff,\r\n        lo >>>  8 & 0xff,\r\n        lo >>> 16 & 0xff,\r\n        lo >>> 24       ,\r\n        hi        & 0xff,\r\n        hi >>>  8 & 0xff,\r\n        hi >>> 16 & 0xff,\r\n        hi >>> 24\r\n    ];\r\n};\r\n\r\n/**\r\n * Converts this Long to its big endian byte representation.\r\n * @returns {!Array.<number>} Big endian byte representation\r\n */\r\nLongPrototype.toBytesBE = function toBytesBE() {\r\n    var hi = this.high,\r\n        lo = this.low;\r\n    return [\r\n        hi >>> 24       ,\r\n        hi >>> 16 & 0xff,\r\n        hi >>>  8 & 0xff,\r\n        hi        & 0xff,\r\n        lo >>> 24       ,\r\n        lo >>> 16 & 0xff,\r\n        lo >>>  8 & 0xff,\r\n        lo        & 0xff\r\n    ];\r\n};\r\n\r\n/**\r\n * Creates a Long from its byte representation.\r\n * @param {!Array.<number>} bytes Byte representation\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @param {boolean=} le Whether little or big endian, defaults to big endian\r\n * @returns {Long} The corresponding Long value\r\n */\r\nLong.fromBytes = function fromBytes(bytes, unsigned, le) {\r\n    return le ? Long.fromBytesLE(bytes, unsigned) : Long.fromBytesBE(bytes, unsigned);\r\n};\r\n\r\n/**\r\n * Creates a Long from its little endian byte representation.\r\n * @param {!Array.<number>} bytes Little endian byte representation\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @returns {Long} The corresponding Long value\r\n */\r\nLong.fromBytesLE = function fromBytesLE(bytes, unsigned) {\r\n    return new Long(\r\n        bytes[0]       |\r\n        bytes[1] <<  8 |\r\n        bytes[2] << 16 |\r\n        bytes[3] << 24,\r\n        bytes[4]       |\r\n        bytes[5] <<  8 |\r\n        bytes[6] << 16 |\r\n        bytes[7] << 24,\r\n        unsigned\r\n    );\r\n};\r\n\r\n/**\r\n * Creates a Long from its big endian byte representation.\r\n * @param {!Array.<number>} bytes Big endian byte representation\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\r\n * @returns {Long} The corresponding Long value\r\n */\r\nLong.fromBytesBE = function fromBytesBE(bytes, unsigned) {\r\n    return new Long(\r\n        bytes[4] << 24 |\r\n        bytes[5] << 16 |\r\n        bytes[6] <<  8 |\r\n        bytes[7],\r\n        bytes[0] << 24 |\r\n        bytes[1] << 16 |\r\n        bytes[2] <<  8 |\r\n        bytes[3],\r\n        unsigned\r\n    );\r\n};\r\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    objectTag = '[object Object]',\n    promiseTag = '[object Promise]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]',\n    weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/**\n * Adds the key-value `pair` to `map`.\n *\n * @private\n * @param {Object} map The map to modify.\n * @param {Array} pair The key-value pair to add.\n * @returns {Object} Returns `map`.\n */\nfunction addMapEntry(map, pair) {\n  // Don't return `map.set` because it's not chainable in IE 11.\n  map.set(pair[0], pair[1]);\n  return map;\n}\n\n/**\n * Adds `value` to `set`.\n *\n * @private\n * @param {Object} set The set to modify.\n * @param {*} value The value to add.\n * @returns {Object} Returns `set`.\n */\nfunction addSetEntry(set, value) {\n  // Don't return `set.add` because it's not chainable in IE 11.\n  set.add(value);\n  return set;\n}\n\n/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n  var index = -1,\n      length = array ? array.length : 0;\n\n  while (++index < length) {\n    if (iteratee(array[index], index, array) === false) {\n      break;\n    }\n  }\n  return array;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n  var index = -1,\n      length = values.length,\n      offset = array.length;\n\n  while (++index < length) {\n    array[offset + index] = values[index];\n  }\n  return array;\n}\n\n/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n *  the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n  var index = -1,\n      length = array ? array.length : 0;\n\n  if (initAccum && length) {\n    accumulator = array[++index];\n  }\n  while (++index < length) {\n    accumulator = iteratee(accumulator, array[index], index, array);\n  }\n  return accumulator;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n  var index = -1,\n      result = Array(n);\n\n  while (++index < n) {\n    result[index] = iteratee(index);\n  }\n  return result;\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n  return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n  // Many host objects are `Object` objects that can coerce to strings\n  // despite having improperly defined `toString` methods.\n  var result = false;\n  if (value != null && typeof value.toString != 'function') {\n    try {\n      result = !!(value + '');\n    } catch (e) {}\n  }\n  return result;\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n  var index = -1,\n      result = Array(map.size);\n\n  map.forEach(function(value, key) {\n    result[++index] = [key, value];\n  });\n  return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n  return function(arg) {\n    return func(transform(arg));\n  };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n  var index = -1,\n      result = Array(set.size);\n\n  set.forEach(function(value) {\n    result[++index] = value;\n  });\n  return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n    funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n  return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n  .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n    Symbol = root.Symbol,\n    Uint8Array = root.Uint8Array,\n    getPrototype = overArg(Object.getPrototypeOf, Object),\n    objectCreate = Object.create,\n    propertyIsEnumerable = objectProto.propertyIsEnumerable,\n    splice = arrayProto.splice;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n    nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n    nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n    Map = getNative(root, 'Map'),\n    Promise = getNative(root, 'Promise'),\n    Set = getNative(root, 'Set'),\n    WeakMap = getNative(root, 'WeakMap'),\n    nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n    mapCtorString = toSource(Map),\n    promiseCtorString = toSource(Promise),\n    setCtorString = toSource(Set),\n    weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n  var index = -1,\n      length = entries ? entries.length : 0;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n  this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n  return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n  var data = this.__data__;\n  if (nativeCreate) {\n    var result = data[key];\n    return result === HASH_UNDEFINED ? undefined : result;\n  }\n  return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n  var data = this.__data__;\n  return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n  var data = this.__data__;\n  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n  return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n  var index = -1,\n      length = entries ? entries.length : 0;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n  this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    return false;\n  }\n  var lastIndex = data.length - 1;\n  if (index == lastIndex) {\n    data.pop();\n  } else {\n    splice.call(data, index, 1);\n  }\n  return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n  return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    data.push([key, value]);\n  } else {\n    data[index][1] = value;\n  }\n  return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n  var index = -1,\n      length = entries ? entries.length : 0;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n  this.__data__ = {\n    'hash': new Hash,\n    'map': new (Map || ListCache),\n    'string': new Hash\n  };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n  return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n  return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n  return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n  getMapData(this, key).set(key, value);\n  return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n  this.__data__ = new ListCache(entries);\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n  this.__data__ = new ListCache;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n  return this.__data__['delete'](key);\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n  return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n  return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n  var cache = this.__data__;\n  if (cache instanceof ListCache) {\n    var pairs = cache.__data__;\n    if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n      pairs.push([key, value]);\n      return this;\n    }\n    cache = this.__data__ = new MapCache(pairs);\n  }\n  cache.set(key, value);\n  return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n  // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n  // Safari 9 makes `arguments.length` enumerable in strict mode.\n  var result = (isArray(value) || isArguments(value))\n    ? baseTimes(value.length, String)\n    : [];\n\n  var length = result.length,\n      skipIndexes = !!length;\n\n  for (var key in value) {\n    if ((inherited || hasOwnProperty.call(value, key)) &&\n        !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n  var objValue = object[key];\n  if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n      (value === undefined && !(key in object))) {\n    object[key] = value;\n  }\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n  var length = array.length;\n  while (length--) {\n    if (eq(array[length][0], key)) {\n      return length;\n    }\n  }\n  return -1;\n}\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n  return object && copyObject(source, keys(source), object);\n}\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @param {boolean} [isFull] Specify a clone including symbols.\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, isDeep, isFull, customizer, key, object, stack) {\n  var result;\n  if (customizer) {\n    result = object ? customizer(value, key, object, stack) : customizer(value);\n  }\n  if (result !== undefined) {\n    return result;\n  }\n  if (!isObject(value)) {\n    return value;\n  }\n  var isArr = isArray(value);\n  if (isArr) {\n    result = initCloneArray(value);\n    if (!isDeep) {\n      return copyArray(value, result);\n    }\n  } else {\n    var tag = getTag(value),\n        isFunc = tag == funcTag || tag == genTag;\n\n    if (isBuffer(value)) {\n      return cloneBuffer(value, isDeep);\n    }\n    if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n      if (isHostObject(value)) {\n        return object ? value : {};\n      }\n      result = initCloneObject(isFunc ? {} : value);\n      if (!isDeep) {\n        return copySymbols(value, baseAssign(result, value));\n      }\n    } else {\n      if (!cloneableTags[tag]) {\n        return object ? value : {};\n      }\n      result = initCloneByTag(value, tag, baseClone, isDeep);\n    }\n  }\n  // Check for circular references and return its corresponding clone.\n  stack || (stack = new Stack);\n  var stacked = stack.get(value);\n  if (stacked) {\n    return stacked;\n  }\n  stack.set(value, result);\n\n  if (!isArr) {\n    var props = isFull ? getAllKeys(value) : keys(value);\n  }\n  arrayEach(props || value, function(subValue, key) {\n    if (props) {\n      key = subValue;\n      subValue = value[key];\n    }\n    // Recursively populate clone (susceptible to call stack limits).\n    assignValue(result, key, baseClone(subValue, isDeep, isFull, customizer, key, value, stack));\n  });\n  return result;\n}\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} prototype The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nfunction baseCreate(proto) {\n  return isObject(proto) ? objectCreate(proto) : {};\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n  var result = keysFunc(object);\n  return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  return objectToString.call(value);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n *  else `false`.\n */\nfunction baseIsNative(value) {\n  if (!isObject(value) || isMasked(value)) {\n    return false;\n  }\n  var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n  return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n  if (!isPrototype(object)) {\n    return nativeKeys(object);\n  }\n  var result = [];\n  for (var key in Object(object)) {\n    if (hasOwnProperty.call(object, key) && key != 'constructor') {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/**\n * Creates a clone of  `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n  if (isDeep) {\n    return buffer.slice();\n  }\n  var result = new buffer.constructor(buffer.length);\n  buffer.copy(result);\n  return result;\n}\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n  var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n  new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n  return result;\n}\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n  var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n  return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\n/**\n * Creates a clone of `map`.\n *\n * @private\n * @param {Object} map The map to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned map.\n */\nfunction cloneMap(map, isDeep, cloneFunc) {\n  var array = isDeep ? cloneFunc(mapToArray(map), true) : mapToArray(map);\n  return arrayReduce(array, addMapEntry, new map.constructor);\n}\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n  var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n  result.lastIndex = regexp.lastIndex;\n  return result;\n}\n\n/**\n * Creates a clone of `set`.\n *\n * @private\n * @param {Object} set The set to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned set.\n */\nfunction cloneSet(set, isDeep, cloneFunc) {\n  var array = isDeep ? cloneFunc(setToArray(set), true) : setToArray(set);\n  return arrayReduce(array, addSetEntry, new set.constructor);\n}\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n  return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n  var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n  return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n  var index = -1,\n      length = source.length;\n\n  array || (array = Array(length));\n  while (++index < length) {\n    array[index] = source[index];\n  }\n  return array;\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n  object || (object = {});\n\n  var index = -1,\n      length = props.length;\n\n  while (++index < length) {\n    var key = props[index];\n\n    var newValue = customizer\n      ? customizer(object[key], source[key], key, object, source)\n      : undefined;\n\n    assignValue(object, key, newValue === undefined ? source[key] : newValue);\n  }\n  return object;\n}\n\n/**\n * Copies own symbol properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n  return copyObject(source, getSymbols(source), object);\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n  return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n  var data = map.__data__;\n  return isKeyable(key)\n    ? data[typeof key == 'string' ? 'string' : 'hash']\n    : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n  var value = getValue(object, key);\n  return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Creates an array of the own enumerable symbol properties of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = nativeGetSymbols ? overArg(nativeGetSymbols, Object) : stubArray;\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11,\n// for data views in Edge < 14, and promises in Node.js.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n    (Map && getTag(new Map) != mapTag) ||\n    (Promise && getTag(Promise.resolve()) != promiseTag) ||\n    (Set && getTag(new Set) != setTag) ||\n    (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n  getTag = function(value) {\n    var result = objectToString.call(value),\n        Ctor = result == objectTag ? value.constructor : undefined,\n        ctorString = Ctor ? toSource(Ctor) : undefined;\n\n    if (ctorString) {\n      switch (ctorString) {\n        case dataViewCtorString: return dataViewTag;\n        case mapCtorString: return mapTag;\n        case promiseCtorString: return promiseTag;\n        case setCtorString: return setTag;\n        case weakMapCtorString: return weakMapTag;\n      }\n    }\n    return result;\n  };\n}\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n  var length = array.length,\n      result = array.constructor(length);\n\n  // Add properties assigned by `RegExp#exec`.\n  if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n    result.index = array.index;\n    result.input = array.input;\n  }\n  return result;\n}\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n  return (typeof object.constructor == 'function' && !isPrototype(object))\n    ? baseCreate(getPrototype(object))\n    : {};\n}\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, cloneFunc, isDeep) {\n  var Ctor = object.constructor;\n  switch (tag) {\n    case arrayBufferTag:\n      return cloneArrayBuffer(object);\n\n    case boolTag:\n    case dateTag:\n      return new Ctor(+object);\n\n    case dataViewTag:\n      return cloneDataView(object, isDeep);\n\n    case float32Tag: case float64Tag:\n    case int8Tag: case int16Tag: case int32Tag:\n    case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n      return cloneTypedArray(object, isDeep);\n\n    case mapTag:\n      return cloneMap(object, isDeep, cloneFunc);\n\n    case numberTag:\n    case stringTag:\n      return new Ctor(object);\n\n    case regexpTag:\n      return cloneRegExp(object);\n\n    case setTag:\n      return cloneSet(object, isDeep, cloneFunc);\n\n    case symbolTag:\n      return cloneSymbol(object);\n  }\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n  length = length == null ? MAX_SAFE_INTEGER : length;\n  return !!length &&\n    (typeof value == 'number' || reIsUint.test(value)) &&\n    (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n  var type = typeof value;\n  return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n    ? (value !== '__proto__')\n    : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n  return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n  var Ctor = value && value.constructor,\n      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n  return value === proto;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n  if (func != null) {\n    try {\n      return funcToString.call(func);\n    } catch (e) {}\n    try {\n      return (func + '');\n    } catch (e) {}\n  }\n  return '';\n}\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n  return baseClone(value, true, true);\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n  // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n  return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n    (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n *  else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n  return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 8-9 which returns 'object' for typed array and other constructors.\n  var tag = isObject(value) ? objectToString.call(value) : '';\n  return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n  return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n  return false;\n}\n\nmodule.exports = cloneDeep;\n",null,null,null,null,null,null,null,null,null,null,"/*! https://mths.be/base64 v1.0.0 by @mathias | MIT license */\n;(function(root) {\n\n\t// Detect free variables `exports`.\n\tvar freeExports = typeof exports == 'object' && exports;\n\n\t// Detect free variable `module`.\n\tvar freeModule = typeof module == 'object' && module &&\n\t\tmodule.exports == freeExports && module;\n\n\t// Detect free variable `global`, from Node.js or Browserified code, and use\n\t// it as `root`.\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) {\n\t\troot = freeGlobal;\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar InvalidCharacterError = function(message) {\n\t\tthis.message = message;\n\t};\n\tInvalidCharacterError.prototype = new Error;\n\tInvalidCharacterError.prototype.name = 'InvalidCharacterError';\n\n\tvar error = function(message) {\n\t\t// Note: the error messages used throughout this file match those used by\n\t\t// the native `atob`/`btoa` implementation in Chromium.\n\t\tthrow new InvalidCharacterError(message);\n\t};\n\n\tvar TABLE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\t// http://whatwg.org/html/common-microsyntaxes.html#space-character\n\tvar REGEX_SPACE_CHARACTERS = /[\\t\\n\\f\\r ]/g;\n\n\t// `decode` is designed to be fully compatible with `atob` as described in the\n\t// HTML Standard. http://whatwg.org/html/webappapis.html#dom-windowbase64-atob\n\t// The optimized base64-decoding algorithm used is based on @atk’s excellent\n\t// implementation. https://gist.github.com/atk/1020396\n\tvar decode = function(input) {\n\t\tinput = String(input)\n\t\t\t.replace(REGEX_SPACE_CHARACTERS, '');\n\t\tvar length = input.length;\n\t\tif (length % 4 == 0) {\n\t\t\tinput = input.replace(/==?$/, '');\n\t\t\tlength = input.length;\n\t\t}\n\t\tif (\n\t\t\tlength % 4 == 1 ||\n\t\t\t// http://whatwg.org/C#alphanumeric-ascii-characters\n\t\t\t/[^+a-zA-Z0-9/]/.test(input)\n\t\t) {\n\t\t\terror(\n\t\t\t\t'Invalid character: the string to be decoded is not correctly encoded.'\n\t\t\t);\n\t\t}\n\t\tvar bitCounter = 0;\n\t\tvar bitStorage;\n\t\tvar buffer;\n\t\tvar output = '';\n\t\tvar position = -1;\n\t\twhile (++position < length) {\n\t\t\tbuffer = TABLE.indexOf(input.charAt(position));\n\t\t\tbitStorage = bitCounter % 4 ? bitStorage * 64 + buffer : buffer;\n\t\t\t// Unless this is the first of a group of 4 characters…\n\t\t\tif (bitCounter++ % 4) {\n\t\t\t\t// …convert the first 8 bits to a single ASCII character.\n\t\t\t\toutput += String.fromCharCode(\n\t\t\t\t\t0xFF & bitStorage >> (-2 * bitCounter & 6)\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t};\n\n\t// `encode` is designed to be fully compatible with `btoa` as described in the\n\t// HTML Standard: http://whatwg.org/html/webappapis.html#dom-windowbase64-btoa\n\tvar encode = function(input) {\n\t\tinput = String(input);\n\t\tif (/[^\\0-\\xFF]/.test(input)) {\n\t\t\t// Note: no need to special-case astral symbols here, as surrogates are\n\t\t\t// matched, and the input is supposed to only contain ASCII anyway.\n\t\t\terror(\n\t\t\t\t'The string to be encoded contains characters outside of the ' +\n\t\t\t\t'Latin1 range.'\n\t\t\t);\n\t\t}\n\t\tvar padding = input.length % 3;\n\t\tvar output = '';\n\t\tvar position = -1;\n\t\tvar a;\n\t\tvar b;\n\t\tvar c;\n\t\tvar buffer;\n\t\t// Make sure any padding is handled outside of the loop.\n\t\tvar length = input.length - padding;\n\n\t\twhile (++position < length) {\n\t\t\t// Read three bytes, i.e. 24 bits.\n\t\t\ta = input.charCodeAt(position) << 16;\n\t\t\tb = input.charCodeAt(++position) << 8;\n\t\t\tc = input.charCodeAt(++position);\n\t\t\tbuffer = a + b + c;\n\t\t\t// Turn the 24 bits into four chunks of 6 bits each, and append the\n\t\t\t// matching character for each of them to the output.\n\t\t\toutput += (\n\t\t\t\tTABLE.charAt(buffer >> 18 & 0x3F) +\n\t\t\t\tTABLE.charAt(buffer >> 12 & 0x3F) +\n\t\t\t\tTABLE.charAt(buffer >> 6 & 0x3F) +\n\t\t\t\tTABLE.charAt(buffer & 0x3F)\n\t\t\t);\n\t\t}\n\n\t\tif (padding == 2) {\n\t\t\ta = input.charCodeAt(position) << 8;\n\t\t\tb = input.charCodeAt(++position);\n\t\t\tbuffer = a + b;\n\t\t\toutput += (\n\t\t\t\tTABLE.charAt(buffer >> 10) +\n\t\t\t\tTABLE.charAt((buffer >> 4) & 0x3F) +\n\t\t\t\tTABLE.charAt((buffer << 2) & 0x3F) +\n\t\t\t\t'='\n\t\t\t);\n\t\t} else if (padding == 1) {\n\t\t\tbuffer = input.charCodeAt(position);\n\t\t\toutput += (\n\t\t\t\tTABLE.charAt(buffer >> 2) +\n\t\t\t\tTABLE.charAt((buffer << 4) & 0x3F) +\n\t\t\t\t'=='\n\t\t\t);\n\t\t}\n\n\t\treturn output;\n\t};\n\n\tvar base64 = {\n\t\t'encode': encode,\n\t\t'decode': decode,\n\t\t'version': '1.0.0'\n\t};\n\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine(function() {\n\t\t\treturn base64;\n\t\t});\n\t}\telse if (freeExports && !freeExports.nodeType) {\n\t\tif (freeModule) { // in Node.js or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = base64;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (var key in base64) {\n\t\t\t\tbase64.hasOwnProperty(key) && (freeExports[key] = base64[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.base64 = base64;\n\t}\n\n}(this));\n",null,null,null,null,"type AmbassadorRPCBaseConstructor = (...any) => {\n  [serviceName: string]: (...any) =>\n    (...any) =>\n      any\n};\n\ntype ServiceNames<TRPCConstructor extends AmbassadorRPCBaseConstructor> = keyof ReturnType<TRPCConstructor>;\n\nexport type AmbassadorServiceType<TAmbassadorConstructor extends AmbassadorRPCBaseConstructor, TServiceName extends ServiceNames<TAmbassadorConstructor>> =\n  ReturnType<\n    ReturnType<\n      ReturnType<TAmbassadorConstructor>[TServiceName]\n    >\n  >;\n\nexport const snakeToCamelCase = str => str.replace(\n    /([-_][a-z])/g,\n    (group) => group.toUpperCase()\n        .replace('-', '')\n        .replace('_', '')\n);\n\nexport const getMajorVersion = (version: string) => {\n  if (version !== undefined && version !== null && version.indexOf('.') !== -1) {\n    const versionNumber = Number.parseInt(version.split('.')[0]);\n    if (!Number.isNaN(versionNumber)) {\n      return versionNumber;\n    }\n  }\n  return (-1);\n};\n","/**\n * Copyright 2018 Google Inc. All Rights Reserved.\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 *     http://www.apache.org/licenses/LICENSE-2.0\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 * @public\n * @typedef Options\n * @property {string} [url] the URL to request\n * @property {string} [method=\"get\"] HTTP method, case-insensitive\n * @property {Headers} [headers] Request headers\n * @property {FormData|string|object} [body] a body, optionally encoded, to send\n * @property {'text'|'json'|'stream'|'blob'|'arrayBuffer'|'formData'|'stream'} [responseType=\"text\"] An encoding to use for the response\n * @property {string} [auth] Authorization header value to send with the request\n * @property {string} [xsrfCookieName] Pass an Cross-site Request Forgery prevention cookie value as a header defined by `xsrfHeaderName`\n * @property {string} [xsrfHeaderName] The name of a header to use for passing XSRF cookies\n * @property {(status: number) => boolean} [validateStatus] Override status code handling (default: 200-399 is a success)\n * @property {Array<(body: any, headers: Headers) => any?>} [transformRequest] An array of transformations to apply to the outgoing request\n */\n\n/**\n * @public\n * @typedef Headers\n * @type {{[name: string]: string}}\n */\n\n/**\n * @public\n * @typedef Response\n * @property {Options} config the request configuration\n * @property {any} data the decoded response body\n */\n\n/** */\nexport default (function create(defaults) {\n\tdefaults = defaults || {};\n\n\t/**\n\t * Creates a request factory bound to the given HTTP method.\n\t * @private\n\t * @param {string} method\n\t * @returns {(url: string, config?: Options) => Promise<Response>}\n\t */\n\tfunction createBodylessMethod(method) {\n\t\treturn (url, config) => redaxios(url, Object.assign({ method }, config));\n\t}\n\n\t/**\n\t * Creates a request factory bound to the given HTTP method.\n\t * @private\n\t * @param {string} method\n\t * @returns {(url: string, body?: any, config?: Options) => Promise<Response>}\n\t */\n\tfunction createBodyMethod(method) {\n\t\treturn (url, data, config) => redaxios(url, Object.assign({ method, data }, config));\n\t}\n\n\t/**\n\t * @public\n\t * @type {((config?: Options) => Promise<Response>) | ((url: string, config?: Options) => Promise<Response>)}\n\t */\n\tredaxios.request = redaxios;\n\n\t/** @public */\n\tredaxios.get = createBodylessMethod('get');\n\n\t/** @public */\n\tredaxios.delete = createBodylessMethod('delete');\n\n\t/** @public */\n\tredaxios.options = createBodylessMethod('options');\n\n\t/** @public */\n\tredaxios.post = createBodyMethod('post');\n\n\t/** @public */\n\tredaxios.put = createBodyMethod('put');\n\n\t/** @public */\n\tredaxios.patch = createBodyMethod('patch');\n\n\t/** @public */\n\tredaxios.all = Promise.all;\n\n\t/** @public */\n\tredaxios.spread = function(fn) {\n\t\treturn function (results) {\n\t\t\treturn fn.apply(this, results);\n\t\t};\n\t};\n\n\tfunction deepMerge(opts, overrides, lowerCase) {\n\t\tif (Array.isArray(opts)) {\n\t\t\treturn opts.concat(overrides);\n\t\t}\n\t\tif (overrides && typeof overrides == 'object') {\n\t\t\tlet out = {}, i;\n\t\t\tif (opts) {\n\t\t\t\tfor (i in opts) {\n\t\t\t\t\tlet key = lowerCase ? i.toLowerCase() : i;\n\t\t\t\t\tout[key] = opts[i];\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (i in overrides) {\n\t\t\t\tlet key = lowerCase ? i.toLowerCase() : i;\n\t\t\t\tif (key === 'headers') lowerCase = true;\n\t\t\t\tout[key] = i in out ? deepMerge(out[key], overrides[i], lowerCase) : overrides[i];\n\t\t\t}\n\t\t\treturn out;\n\t\t}\n\t\treturn overrides;\n\t}\n\n\t/**\n\t * Issues a request.\n\t * @public\n\t * @param {string} [url]\n\t * @param {Options} [config]\n\t * @returns {Promise<Response>}\n\t */\n\tfunction redaxios(url, config) {\n\t\tif (typeof url !== 'string') {\n\t\t\tconfig = url;\n\t\t\turl = config.url;\n\t\t}\n\t\tconst options = deepMerge(defaults, config || {});\n\t\tlet data = options.data;\n\n\t\tif (options.transformRequest) {\n\t\t\tfor (let i = 0; i < options.transformRequest.length; i++) {\n\t\t\t\tlet r = options.transformRequest[i](data, options.headers);\n\t\t\t\tif (r !== undefined) {\n\t\t\t\t\tdata = r;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst customHeaders = {};\n\n\t\tif (data && typeof data === 'object') {\n\t\t\tdata = JSON.stringify(data);\n\t\t\tcustomHeaders['Content-Type'] = 'application/json';\n\t\t}\n\n\t\tif (options.xsrfCookieName) {\n\t\t\tlet parts = document.cookie.split(/ *[;=] */);\n\t\t\tfor (let i = 0; i < parts.length; i += 2) {\n\t\t\t\tif (parts[i] == options.xsrfCookieName) {\n\t\t\t\t\tcustomHeaders[options.xsrfHeaderName] = decodeURIComponent(parts[i+1]);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (options.auth) {\n\t\t\tcustomHeaders.Authorization = options.auth;\n\t\t}\n\n\t\t/** @type {Response} */\n\t\tconst response = {};\n\t\tresponse.config = config;\n\n\t\treturn fetch(url, {\n\t\t\tmethod: options.method,\n\t\t\tbody: data,\n\t\t\theaders: deepMerge(options.headers, customHeaders, true)\n\t\t}).then((res) => {\n\t\t\tlet i;\n\t\t\tfor (i in res) {\n\t\t\t\tif (typeof res[i] != 'function') response[i] = res[i];\n\t\t\t}\n\t\t\tif (!(options.validateStatus ? options.validateStatus(res.status) : res.ok)) {\n\t\t\t\treturn Promise.reject(res);\n\t\t\t}\n\t\t\tconst withData = options.responseType === 'stream'\n\t\t\t\t? Promise.resolve(res.body)\n\t\t\t\t: res[options.responseType || 'text']();\n\t\t\treturn withData.then((data) => {\n\t\t\t\tresponse.data = data;\n\t\t\t\treturn response;\n\t\t\t});\n\t\t});\n\t}\n\n\tredaxios.CancelToken = self.AbortController || Object;\n\n\tredaxios.create = create;\n\n\treturn redaxios;\n})();\n","import { createHeaders, WixHeadersOpts } from '@wix/headers';\nimport { AxiosInstance, AxiosError, AxiosRequestConfig } from 'axios';\nimport { HTTPMethod } from '../ast';\nimport { snakeToCamelCase } from './utils';\nconst REQUEST_ID_HEADER = 'x-wix-request-id';\n\nconst formatResponseString = obj => obj ? JSON.stringify(obj).replace(/\\n/g, '\\\\n') : '\"\"';\n\ntype FetchError = { message: string };\n\nexport class AmbassadorHTTPError<T = any> extends Error {\n  readonly httpStatus: number;\n  readonly response: T;\n  readonly requestId?: string;\n\n  constructor(httpStatus: number, response: T, requestId?: string) {\n    super(\n      `Ambassador client request failed:\\n` +\n      `HTTP STATUS: ${httpStatus}\\n` +\n      `RESPONSE: ${formatResponseString(response)}\\n` +\n      `See the httpStatus and response fields for more information.`\n    );\n    Object.setPrototypeOf(this, AmbassadorHTTPError.prototype);\n    this.httpStatus = httpStatus;\n    this.response = response;\n    this.requestId = requestId;\n  }\n}\n\nexport interface AmbassadorHTTPClientConfig {\n  // Due to typescript version difference, Unable to import HttpClient type from the module.\n  wixHttpClientInstance?: any;\n  axiosInstance?: AxiosInstance;\n  fetchInstance?: Function;\n  ignoredProtoHttpUrlPart?: string;\n  useRedaxios?: boolean; // deprecated\n}\n\nexport class AmbassadorHTTPClient {\n  private testkitBaseUrl: string = '';\n  private _axiosClient: AxiosInstance;\n  private fetchClient: Function = undefined;\n  private ignoredProtoUrlPart?: string;\n  private useRedaxios: boolean = false;\n\n  constructor(private baseUrl: string, private config: AmbassadorHTTPClientConfig = {}) {\n    this.baseUrl = this.addTrailingSlash(baseUrl);\n\n    this.assignAxiosClient();\n\n    if (config.fetchInstance) {\n      this.fetchClient = config.fetchInstance;\n    }\n\n    this.ignoredProtoUrlPart = config.ignoredProtoHttpUrlPart;\n  }\n\n  private assignAxiosClient() {\n    const { config } = this;\n\n    if (config.wixHttpClientInstance) {\n      this._axiosClient = config.wixHttpClientInstance;\n    } else if (config.axiosInstance) {\n      this._axiosClient = config.axiosInstance;\n    } else {\n      const redaxios = require('redaxios').default /* webpack */ || require('redaxios'); /* nodejs */\n      this.useRedaxios = true;\n      this._axiosClient = redaxios.create({ responseType: 'json' });\n    }\n  }\n\n  private fixProtoIgnoredUrlPart(originalPath: string): string {\n    const originalPathParts = originalPath.split(this.ignoredProtoUrlPart);\n    if (originalPathParts[0] === '' && (originalPathParts[1].startsWith('/') || originalPathParts[1] === '')) {\n      return originalPath.substr(this.ignoredProtoUrlPart.length, originalPath.length);\n    } else {\n      return originalPath;\n    }\n  }\n\n  invoke<TRequestPayload extends {} = any, TResponse extends {} = any>(method: HTTPMethod, path: string, payload: TRequestPayload, headers?: { [headerName: string]: any }): Promise<TResponse> {\n    this.configForTestingIfRequired();\n    const normalizedPath = this.removeLeadingSlash(this.fixProtoIgnoredUrlPart(path));\n    const paramsInPath = this.getParamsFromPath(normalizedPath);\n    const encodedParamsPath = paramsInPath.reduce(\n      (path, nextParam) => path.replace(`{${nextParam}}`, encodeURIComponent(this.getValueFromPayload(payload, nextParam))), normalizedPath);\n\n    if (this.fetchClient) {\n      headers = { ...this.createWixHeaders(), ...headers };\n      return this.fetchHttpRequest(method, encodedParamsPath, payload, headers);\n    } else {\n      headers = { ...this.createWixHeaders({ csrf: this.useRedaxios }), ...headers };\n      const requestConfig: AxiosRequestConfig =\n        Object.keys(headers).length > 0 ? { headers } : undefined;\n      return this.runHttpRequest(method, encodedParamsPath, payload, requestConfig);\n    }\n  }\n\n  private runHttpRequest<TRequestPayload extends {} = any, TResponse extends {} = any>(\n    method: HTTPMethod,\n    fixedPath,\n    payload: TRequestPayload,\n    requestConfig: AxiosRequestConfig = {}\n  ) {\n    if (this.testkitBaseUrl) {\n      // force change base url in case we're running in testing env\n      fixedPath = combineURLs(this.testkitBaseUrl, fixedPath);\n    } else if (this.useRedaxios) {\n      // redaxios doesn't support base url config\n      // we don't always apply it because some of our users\n      // may use axiosInstance with pre-defined base url\n      fixedPath = combineURLs(this.baseUrl, fixedPath);\n    } else if (this.config.wixHttpClientInstance) {\n      // wixHttpClient is provided to users intialized by the platform, users shouldn't change it's baseUrl.\n      // so unlinke axiosInstance, we'll have to handle the url here.\n      fixedPath = combineURLs(this.baseUrl, fixedPath);\n    }\n\n    // force capitalized, redaxios uses lower case and\n    // ngnix doesn't like that\n    requestConfig.method = method;\n\n    switch (method) {\n      case 'GET':\n        return this._axiosClient.get(`${fixedPath}?${this.payloadToQueryString(payload)}`, requestConfig).then(res => res.data).catch(this.handleErrors);\n      case 'POST':\n        return this._axiosClient.post(fixedPath, payload, requestConfig).then(res => res.data).catch(this.handleErrors);\n      case 'PUT':\n        return this._axiosClient.put(fixedPath, payload, requestConfig).then(res => res.data).catch(this.handleErrors);\n      case 'PATCH':\n        return this._axiosClient.patch(fixedPath, payload, requestConfig).then(res => res.data).catch(this.handleErrors);\n      case 'DELETE':\n        return this._axiosClient.delete(`${fixedPath}?${this.payloadToQueryString(payload)}`, requestConfig).then(res => res.data).catch(this.handleErrors);\n      default:\n        return null;\n    }\n  }\n\n  private createWixHeaders(opts?: WixHeadersOpts) {\n    // wix/http-client takes care of wixHeaders, duplication causes problems.\n    if (this.config.wixHttpClientInstance) {\n      return {};\n    }\n\n    return createHeaders(opts);\n  }\n\n  private fetchHttpRequest<TRequestPayload extends {} = any, TResponse extends {} = any>(method: HTTPMethod, fixedPath, payload: TRequestPayload, headers: { [headerName: string]: any }) {\n    const fullPathUrl = combineURLs(\n      this.testkitBaseUrl || this.baseUrl,\n      fixedPath\n    );\n\n    switch (method) {\n      case 'GET':\n        return this.fetchClient(\n          `${fullPathUrl}?${this.payloadToQueryString(payload)}`,\n          { method: 'GET', headers }\n        ).then(this.handleFetchResponse, this.handleFetchErrors);\n      case 'POST': {\n        return this.fetchClient(fullPathUrl, {\n          method: 'POST',\n          headers: this.mergeHeadersWithContentType(headers || {}),\n          body: JSON.stringify(payload)\n        }).then(this.handleFetchResponse, this.handleFetchErrors);\n      }\n      case 'PUT': {\n        return this.fetchClient(fullPathUrl, {\n          method: 'PUT',\n          headers: this.mergeHeadersWithContentType(headers || {}),\n          body: JSON.stringify(payload)\n        }).then(this.handleFetchResponse, this.handleFetchErrors);\n      }\n      case 'PATCH':\n        return this.fetchClient(fullPathUrl, {\n          method: 'PATCH',\n          headers: this.mergeHeadersWithContentType(headers || {}),\n          body: JSON.stringify(payload)\n        }).then(this.handleFetchResponse, this.handleFetchErrors);\n      case 'DELETE':\n        return this.fetchClient(`${fullPathUrl}?${this.payloadToQueryString(payload)}`, {\n          method: 'DELETE',\n          headers\n        }).then(this.handleFetchResponse, this.handleFetchErrors);\n      default:\n        return null;\n    }\n  }\n\n  private mergeHeadersWithContentType(headers: { [headerName: string]: any }) {\n    const appJsonHeaders = {\n      'Content-Type': 'application/json'\n    };\n    const newHeaders = { ...appJsonHeaders, ...headers };\n    return newHeaders;\n  }\n\n  private configForTestingIfRequired() {\n    let testkitUrl: string;\n    if (process.env.AMBASSADOR_TESTKIT_HTTP_URL) {\n      testkitUrl = process.env.AMBASSADOR_TESTKIT_HTTP_URL;\n    }\n\n    if (typeof window !== 'undefined' && window['__AMBASSADOR_TESTKIT_HTTP_URL']) {\n      testkitUrl = window['__AMBASSADOR_TESTKIT_HTTP_URL'];\n    }\n\n    if (testkitUrl) {\n      this.testkitBaseUrl = combineURLs(\n        testkitUrl,\n        encodeURIComponent(this.baseUrl)\n      );\n    }\n  }\n\n  private payloadToQueryString(payload): string {\n    return Object.keys(payload)\n      .filter(key => payload[key] !== null && payload[key] !== undefined)\n      .map(key => {\n        if (payload[key] instanceof Array) {\n          return this.arrayToQueryString(key, payload[key]);\n        } else if (typeof payload[key] === 'object') {\n          const flattenedObject = Object.keys(payload[key])\n            .reduce((obj, innerKey) => ({ ...obj, [`${key}.${innerKey}`]: payload[key][innerKey] }), {});\n          return this.payloadToQueryString(flattenedObject);\n        } else {\n          return `${encodeURIComponent(key)}=${encodeURIComponent(payload[key])}`;\n        }\n      })\n      .join('&');\n  }\n\n  private arrayToQueryString(key: string, array: any[]): string {\n    return array\n      .map(val => `${encodeURIComponent(key)}=${encodeURIComponent(val)}`)\n      .join('&');\n  }\n\n  private getParamsFromPath(path: string): string[] {\n    const paramsInPath = [];\n    let nextPath = path;\n    while (nextPath.match(/\\{[^}]+\\}/)) {\n      const [_, paramName] = nextPath.match(/\\{([^}]+)\\}/);\n      paramsInPath.push(paramName);\n      nextPath = nextPath.replace(/\\{[^}]+\\}/, '');\n    }\n    return paramsInPath;\n  }\n\n  private getValueFromPayload(payload, pathToField: string) {\n    const pathParts = pathToField.split('.');\n    return pathParts.reduce((payload, nextPathPart) => payload[nextPathPart] || payload[snakeToCamelCase(nextPathPart)], payload);\n  }\n\n  private handleFetchResponse = (res: Response) => {\n    if (!res.ok) {\n      return this.handleFetchErrors(res);\n    } else {\n      return res.json();\n    }\n  }\n\n  private handleErrors = (err: AxiosError | Response | FetchError) => {\n    if (this.useRedaxios) {\n      return this.handleFetchErrors(err);\n    }\n\n    const axiosError = err as AxiosError;\n\n    if (axiosError.response) {\n      const requestId = axiosError.response.headers[REQUEST_ID_HEADER];\n\n      throw new AmbassadorHTTPError(axiosError.response.status, axiosError.response.data, requestId);\n    } else {\n      throw new AmbassadorHTTPError(-1, `Connection Failed. \\n${ axiosError.message}`);\n    }\n  }\n\n  private handleFetchErrors = (err: FetchError | Response) => {\n    const fetchResponse = err as Response;\n    const fetchError = err as FetchError;\n\n    if (fetchError.message) {\n      throw new AmbassadorHTTPError(-1, fetchError.message);\n    } else if (fetchResponse.status) {\n      return tryParseFetchResponse(fetchResponse).then(message => {\n        const requestId = fetchResponse.headers?.get(REQUEST_ID_HEADER);\n        throw new AmbassadorHTTPError(fetchResponse.status, message, requestId);\n      });\n    } else {\n      throw new AmbassadorHTTPError(-1, 'Connection Failed');\n    }\n  }\n\n  private addTrailingSlash(url: string): string {\n    if (!url.endsWith('/')) {\n      return `${url}/`;\n    } else {\n      return url;\n    }\n  }\n\n  private removeLeadingSlash(path: string): string {\n    if (path.startsWith('/')) {\n      return path.substr(1);\n    } else {\n      return path;\n    }\n  }\n}\n\nfunction tryParseFetchResponse(err: Response) {\n  return err.text()\n    .then(tryParseJson)\n    .catch(() => '');\n}\n\nfunction tryParseJson(text: string) {\n  try {\n    return JSON.parse(text);\n  } catch {\n    return text;\n  }\n}\n\nfunction combineURLs(baseURL, relativeURL) {\n  return relativeURL\n    ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n    : baseURL;\n}\n","module.exports = require('../dist/src/runtime/http');\n","import * as Long from 'long';\ntype BigDecimal = number;\ntype Boolean = boolean;\ntype DateTime = string;\ntype Double = number;\ntype Float = number;\ntype GUID = string;\ntype Guid = string;\ntype Int = number;\ntype Integer = number;\ntype Object = object;\ntype String = string;\ntype Struct = any;\ntype Timestamp = string;\ntype URL = string;\ntype UUID = string;\ntype Url = string;\ntype UserGUID = string;\ntype UserGuid = string;\ntype Value = any;\ntype bigdecimal = number;\ntype datetime = string;\ntype double = number;\ntype float = number;\ntype guid = string;\ntype int = number;\ntype integer = number;\ntype url = string;\ntype userguid = string;\ntype uuid = string;\ntype JsonMap<T> = { [key: string]: T };\n\nexport interface AddStaticResponseFromPeliasRequest {\n  staticRequest?: StaticResponseRequest;\n}\n\nexport interface AddStaticResponseFromPeliasResponse {\n  staticResponse?: StaticResponseSearchResponse;\n}\n\nexport interface AddStaticResponseRequest {\n  staticRequest?: StaticResponseRequest;\n  staticResponse?: StaticResponseSearchResponse;\n}\n\nexport interface AddStaticResponseResponse {}\n\nexport interface AddressLocation {\n  latitude?: Double;\n  longitude?: Double;\n}\n\nexport interface AtlasAddressComponent {\n  code?: String;\n  name?: String;\n}\n\nexport interface CommonAddress {\n  addressLine?: String;\n  addressLine2?: String;\n  city?: String;\n  country?: String;\n  countryFullname?: String;\n  formattedAddress?: String;\n  geocode?: AddressLocation;\n  hint?: String;\n  postalCode?: String;\n  streetAddress?: StreetAddress;\n  subdivision?: String;\n  subdivisionFullname?: String;\n  subdivisions?: Subdivision[];\n}\n\nexport interface Country {\n  longName?: String;\n  shortName?: String;\n}\n\nexport interface GetAppleEmbedMapRequest {}\n\nexport interface GetAppleEmbedMapResponse {\n  token?: String;\n}\n\nexport interface GetAtlasStaticMapRequest {\n  center?: String;\n  imageSize?: ImageSize;\n  language?: String;\n  providerName?: ProvidersNames;\n  zoom?: Int;\n}\n\nexport interface GetAtlasStaticMapResponse {\n  image?: Uint8Array;\n}\n\nexport interface GetEmbedMapRequest {\n  query?: String;\n}\n\nexport interface GetEmbedMapResponse {\n  url?: String;\n}\n\nexport interface GetPlaceRequest {\n  searchId?: String;\n  sessionToken?: String;\n}\n\nexport interface GetPlaceResponse {\n  place?: Place;\n}\n\nexport interface GetSnapshotMapRequest {\n  center?: String;\n}\n\nexport interface GetSnapshotMapResponse {\n  image?: Uint8Array;\n}\n\nexport interface GetStaticMapRequest {\n  center?: String;\n  imageSize?: ImageSize;\n  language?: String;\n  zoom?: Int;\n}\n\nexport interface GetStaticMapResponse {\n  image?: Uint8Array;\n}\n\nexport interface ImageSize {\n  height?: Int;\n  width?: Int;\n}\n\nexport interface IntenalGeolocation {\n  lat?: Double;\n  lng?: Double;\n}\n\nexport interface IntenalSublocality {\n  level1?: String;\n  level2?: String;\n  level3?: String;\n  level4?: String;\n  subLocality?: String;\n}\n\nexport interface ListPredictionsRequest {\n  filterBy?: V2FilterBy[];\n  input?: String;\n  location?: AddressLocation;\n  origin?: AddressLocation;\n  radius?: Long;\n}\n\nexport interface ListPredictionsResponse {\n  predictions?: Prediction[];\n}\n\nexport interface LocationDTO {\n  country?: AtlasAddressComponent;\n  county?: AtlasAddressComponent;\n  formattedAddress?: String;\n  geolocation?: IntenalGeolocation;\n  locality?: AtlasAddressComponent;\n  neighborhood?: AtlasAddressComponent;\n  premise?: AtlasAddressComponent;\n  proximity?: Proximity;\n  routes?: String[];\n  state?: AtlasAddressComponent;\n  streetAddress?: AtlasAddressComponent;\n  streetNumber?: AtlasAddressComponent;\n  subPremise?: AtlasAddressComponent;\n  sublocality?: IntenalSublocality;\n  zipCode?: String;\n  zipCodeSuffix?: String;\n}\n\nexport interface MatchedSubstrings {\n  length?: Int;\n  offset?: Int;\n}\n\nexport interface Place {\n  address?: CommonAddress;\n  placeId?: String;\n  types?: String[];\n}\n\nexport interface PredictRequest {\n  countryCodes?: String[];\n  input?: String;\n  location?: AddressLocation;\n  origin?: AddressLocation;\n  radius?: Long;\n  sessionToken?: String;\n}\n\nexport interface PredictResponse {\n  predictions?: Prediction[];\n}\n\nexport interface Prediction {\n  description?: String;\n  distanceInMeters?: Int;\n  matchedSubstrings?: MatchedSubstrings[];\n  searchId?: String;\n  textStructure?: TextStructure;\n}\n\nexport enum ProvidersNames {\n  Google = 'Google',\n  Apple = 'Apple',\n}\n\nexport enum Proximity {\n  UNKNOWN_PROXIMITY = 'UNKNOWN_PROXIMITY',\n  PINPOINT = 'PINPOINT',\n  APPROXIMATE = 'APPROXIMATE',\n  GENERAL_AREA = 'GENERAL_AREA',\n}\n\nexport interface RemoveStaticResponseRequest {\n  staticRequest?: StaticResponseRequest;\n}\n\nexport interface RemoveStaticResponseResponse {}\n\nexport interface ReverseGeocodingRequest {\n  addressLocation?: AddressLocation;\n}\n\nexport interface ReverseGeocodingResponse {\n  searchResults?: SearchResult[];\n}\n\nexport interface SearchByZipCodeRequest {\n  countryCode?: String;\n  zipCode?: String;\n}\n\nexport interface SearchByZipCodeResponse {\n  address?: ServiceAddress;\n}\n\nexport interface SearchRequest {\n  countryCodes?: String[];\n  filterBy?: V2FilterBy[];\n  query?: String;\n  zipCode?: String;\n}\n\nexport interface SearchRequestV1 {\n  filterBy?: ServiceFilterBy[];\n  languageCode?: String;\n  query?: String;\n}\n\nexport interface SearchResponse {\n  searchResults?: SearchResult[];\n}\n\nexport interface SearchResponseV1 {\n  addresses?: ServiceAddress[];\n}\n\nexport interface SearchResult {\n  address?: CommonAddress;\n  proximity?: Proximity;\n}\n\nexport interface ServiceAddress {\n  city?: String;\n  country?: Country;\n  countryCode?: String;\n  formattedAddress?: String;\n  geolocation?: ServiceGeolocation;\n  neighborhood?: String;\n  premise?: String;\n  route?: String;\n  routes?: String[];\n  state?: State;\n  streetNumber?: String;\n  subAreaOfCity?: String;\n  subAreaOfState?: String;\n  sublocality?: ServiceSublocality;\n  zipCode?: String;\n}\n\nexport interface ServiceFilterBy {\n  filterType?: ServiceFilterByFilterType;\n  filterValue?: String;\n}\n\nexport enum ServiceFilterByFilterType {\n  zip_code = 'zip_code',\n  country_code = 'country_code',\n}\n\nexport interface ServiceGeolocation {\n  lat?: Double;\n  lng?: Double;\n}\n\nexport interface ServiceSublocality {\n  level2?: String;\n  level3?: String;\n  level4?: String;\n}\n\nexport interface State {\n  longName?: String;\n  shortName?: String;\n}\n\nexport interface StaticResponseRequest {\n  countryCodes?: String[];\n  languageCode?: String;\n  query?: String;\n  zipCode?: String;\n}\n\nexport interface StaticResponseSearchResponse {\n  location?: LocationDTO[];\n}\n\nexport interface StreetAddress {\n  apt?: String;\n  formattedAddressLine?: String;\n  name?: String;\n  number?: String;\n}\n\nexport interface Subdivision {\n  code?: String;\n  name?: String;\n  type?: SubdivisionType;\n  typeInfo?: String;\n}\n\nexport enum SubdivisionType {\n  UNKNOWN_SUBDIVISION_TYPE = 'UNKNOWN_SUBDIVISION_TYPE',\n  ADMINISTRATIVE_AREA_LEVEL_1 = 'ADMINISTRATIVE_AREA_LEVEL_1',\n  ADMINISTRATIVE_AREA_LEVEL_2 = 'ADMINISTRATIVE_AREA_LEVEL_2',\n  ADMINISTRATIVE_AREA_LEVEL_3 = 'ADMINISTRATIVE_AREA_LEVEL_3',\n  ADMINISTRATIVE_AREA_LEVEL_4 = 'ADMINISTRATIVE_AREA_LEVEL_4',\n  ADMINISTRATIVE_AREA_LEVEL_5 = 'ADMINISTRATIVE_AREA_LEVEL_5',\n  COUNTRY = 'COUNTRY',\n}\n\nexport interface TextStructure {\n  mainText?: String;\n  mainTextMatchedSubstrings?: MatchedSubstrings[];\n  secondaryText?: String;\n}\n\nexport interface V2FilterBy {\n  filterType?: V2FilterByFilterType;\n  filterValue?: String;\n}\n\nexport enum V2FilterByFilterType {\n  zip_code = 'zip_code',\n  country_code = 'country_code',\n}\n","/* tslint:disable */\nimport {\n  AddStaticResponseFromPeliasRequest,\n  AddStaticResponseFromPeliasResponse,\n  AddStaticResponseRequest,\n  AddStaticResponseResponse,\n  AddressLocation,\n  AtlasAddressComponent,\n  CommonAddress,\n  Country,\n  GetAppleEmbedMapRequest,\n  GetAppleEmbedMapResponse,\n  GetAtlasStaticMapRequest,\n  GetAtlasStaticMapResponse,\n  GetEmbedMapRequest,\n  GetEmbedMapResponse,\n  GetPlaceRequest,\n  GetPlaceResponse,\n  GetSnapshotMapRequest,\n  GetSnapshotMapResponse,\n  GetStaticMapRequest,\n  GetStaticMapResponse,\n  ImageSize,\n  IntenalGeolocation,\n  IntenalSublocality,\n  ListPredictionsRequest,\n  ListPredictionsResponse,\n  LocationDTO,\n  MatchedSubstrings,\n  Place,\n  PredictRequest,\n  PredictResponse,\n  Prediction,\n  ProvidersNames,\n  Proximity,\n  RemoveStaticResponseRequest,\n  RemoveStaticResponseResponse,\n  ReverseGeocodingRequest,\n  ReverseGeocodingResponse,\n  SearchByZipCodeRequest,\n  SearchByZipCodeResponse,\n  SearchRequest,\n  SearchRequestV1,\n  SearchResponse,\n  SearchResponseV1,\n  SearchResult,\n  ServiceAddress,\n  ServiceFilterBy,\n  ServiceFilterByFilterType,\n  ServiceGeolocation,\n  ServiceSublocality,\n  State,\n  StaticResponseRequest,\n  StaticResponseSearchResponse,\n  StreetAddress,\n  Subdivision,\n  SubdivisionType,\n  TextStructure,\n  V2FilterBy,\n  V2FilterByFilterType,\n} from './types';\n\nimport { fromJson, toJson, batchFromJson, batchToJson } from '@wix/json-proto-serializer';\nimport { AmbassadorHTTPClient, AmbassadorHTTPClientConfig } from '@wix/ambassador/runtime/http';\n\nimport { AxiosInstance } from 'axios';\nexport const WixAtlasServiceWeb = (baseUrl: string, httpClientConfig?: AmbassadorHTTPClientConfig) => {\n  const httpClient = new AmbassadorHTTPClient(baseUrl, httpClientConfig);\n\n  return {\n    AutocompleteServiceV2: () => {\n      return (headers?: { [headerName: string]: any }) => {\n        const service = {\n          listPredictions: async (listPredictionsRequest: ListPredictionsRequest): Promise<ListPredictionsResponse> => {\n            const requestTransformations = [{ typeName: 'google.protobuf.Int64Value', pathInPayload: ['radius'] }];\n            const serializedPayload = batchToJson(listPredictionsRequest, requestTransformations);\n            const response = await httpClient.invoke('GET', '/v2/predictions', serializedPayload, headers);\n            return response;\n          },\n          predict: async (predictRequest: PredictRequest): Promise<PredictResponse> => {\n            const requestTransformations = [{ typeName: 'google.protobuf.Int64Value', pathInPayload: ['radius'] }];\n            const serializedPayload = batchToJson(predictRequest, requestTransformations);\n            const response = await httpClient.invoke('POST', '/v2/predict', serializedPayload, headers);\n            return response;\n          },\n        };\n        (service as any).listPredictions.__http_method = 'GET';\n        (service as any).listPredictions.__http_url = '/v2/predictions';\n        (service as any).predict.__http_method = 'POST';\n        (service as any).predict.__http_url = '/v2/predict';\n        return service;\n      };\n    },\n    LocationServiceV1: () => {\n      return (headers?: { [headerName: string]: any }) => {\n        const service = {\n          search: (searchRequestV1: SearchRequestV1): Promise<SearchResponseV1> => httpClient.invoke('GET', '/api/v1/search', searchRequestV1, headers),\n          searchByZipCode: (searchByZipCodeRequest: SearchByZipCodeRequest): Promise<SearchByZipCodeResponse> =>\n            httpClient.invoke('GET', '/api/v1/search-by-zip-code', searchByZipCodeRequest, headers),\n        };\n        (service as any).search.__http_method = 'GET';\n        (service as any).search.__http_url = '/api/v1/search';\n        (service as any).searchByZipCode.__http_method = 'GET';\n        (service as any).searchByZipCode.__http_url = '/api/v1/search-by-zip-code';\n        return service;\n      };\n    },\n    LocationServiceV2: () => {\n      return (headers?: { [headerName: string]: any }) => {\n        const service = {\n          reverseGeocoding: (reverseGeocodingRequest: ReverseGeocodingRequest): Promise<ReverseGeocodingResponse> =>\n            httpClient.invoke('GET', '/v2/location/reverse', reverseGeocodingRequest, headers),\n          search: (searchRequest: SearchRequest): Promise<SearchResponse> => httpClient.invoke('GET', '/v2/search', searchRequest, headers),\n        };\n        (service as any).reverseGeocoding.__http_method = 'GET';\n        (service as any).reverseGeocoding.__http_url = '/v2/location/reverse';\n        (service as any).search.__http_method = 'GET';\n        (service as any).search.__http_url = '/v2/search';\n        return service;\n      };\n    },\n    MapsWidgetServiceV0: () => {\n      return (headers?: { [headerName: string]: any }) => {\n        const service = {\n          getAppleEmbedMap: (getAppleEmbedMapRequest: GetAppleEmbedMapRequest): Promise<GetAppleEmbedMapResponse> =>\n            httpClient.invoke('GET', '/api/v1/dynamic-map-token', getAppleEmbedMapRequest, headers),\n          getAtlasStaticMap: async (getAtlasStaticMapRequest: GetAtlasStaticMapRequest): Promise<GetAtlasStaticMapResponse> => {\n            const response = await httpClient.invoke('GET', '/api/v1/atlas-static-map', getAtlasStaticMapRequest, headers);\n            const responseTransformations = [{ typeName: 'bytes', pathInPayload: ['image'] }];\n            const deSerializedResponse = batchFromJson(response, responseTransformations);\n            return deSerializedResponse;\n          },\n          getEmbedMap: (getEmbedMapRequest: GetEmbedMapRequest): Promise<GetEmbedMapResponse> => httpClient.invoke('GET', '/api/v1/embed-map', getEmbedMapRequest, headers),\n          getSnapshotMap: async (getSnapshotMapRequest: GetSnapshotMapRequest): Promise<GetSnapshotMapResponse> => {\n            const response = await httpClient.invoke('GET', '/api/v1/snapshot-map', getSnapshotMapRequest, headers);\n            const responseTransformations = [{ typeName: 'bytes', pathInPayload: ['image'] }];\n            const deSerializedResponse = batchFromJson(response, responseTransformations);\n            return deSerializedResponse;\n          },\n          getStaticMap: async (getStaticMapRequest: GetStaticMapRequest): Promise<GetStaticMapResponse> => {\n            const response = await httpClient.invoke('GET', '/api/v1/static-map', getStaticMapRequest, headers);\n            const responseTransformations = [{ typeName: 'bytes', pathInPayload: ['image'] }];\n            const deSerializedResponse = batchFromJson(response, responseTransformations);\n            return deSerializedResponse;\n          },\n        };\n        (service as any).getAppleEmbedMap.__http_method = 'GET';\n        (service as any).getAppleEmbedMap.__http_url = '/api/v1/dynamic-map-token';\n        (service as any).getAtlasStaticMap.__http_method = 'GET';\n        (service as any).getAtlasStaticMap.__http_url = '/api/v1/atlas-static-map';\n        (service as any).getEmbedMap.__http_method = 'GET';\n        (service as any).getEmbedMap.__http_url = '/api/v1/embed-map';\n        (service as any).getSnapshotMap.__http_method = 'GET';\n        (service as any).getSnapshotMap.__http_url = '/api/v1/snapshot-map';\n        (service as any).getStaticMap.__http_method = 'GET';\n        (service as any).getStaticMap.__http_url = '/api/v1/static-map';\n        return service;\n      };\n    },\n    PlacesServiceV2: () => {\n      return (headers?: { [headerName: string]: any }) => {\n        const service = {\n          getPlace: (getPlaceRequest: GetPlaceRequest): Promise<GetPlaceResponse> => httpClient.invoke('GET', '/v2/place', getPlaceRequest, headers),\n        };\n        (service as any).getPlace.__http_method = 'GET';\n        (service as any).getPlace.__http_url = '/v2/place';\n        return service;\n      };\n    },\n  };\n};\n\n(WixAtlasServiceWeb as any).__transport = 'http';\n\nexport * from './types';\n","import {\n  WixAtlasServiceWeb,\n  Proximity,\n} from '@wix/ambassador-wix-atlas-service-web/http';\nimport type {\n  CommonAddress,\n  Prediction,\n  SearchResult,\n} from '@wix/ambassador-wix-atlas-service-web/types';\n\nexport { Prediction, CommonAddress };\n\nexport type GetPlaceParams = {\n  searchId: string;\n};\nexport type GetPlace = (\n  params: GetPlaceParams,\n) => Promise<CommonAddress | undefined>;\n\nexport type PredictParams = {\n  input: string;\n  countryCodes?: string[];\n};\nexport type Predict = (\n  params: PredictParams,\n) => Promise<Prediction[] | undefined>;\n\nexport type SearchByPostalCodeParams = {\n  postalCode: string;\n  countryCode?: string;\n};\nexport type SearchByPostalCode = (\n  params: SearchByPostalCodeParams,\n) => Promise<CommonAddress | undefined>;\n\nexport type AtlasService = {\n  predict: Predict;\n  getPlace: GetPlace;\n  searchByPostalCode: SearchByPostalCode;\n};\n\nexport type CreateAtlasServiceParams = {\n  getInstance: () => string;\n  sessionToken: string;\n  refreshSessionToken: () => void;\n  language?: string;\n  locale?: string;\n  atlasBaseUrl?: string;\n};\n\nexport const ATLAS_BASE_URL = '/_api/wix-atlas-service-web';\n\nexport function createAtlasService({\n  getInstance,\n  sessionToken,\n  refreshSessionToken,\n  language,\n  locale,\n  atlasBaseUrl = ATLAS_BASE_URL,\n}: CreateAtlasServiceParams): AtlasService {\n  const atlas = WixAtlasServiceWeb(atlasBaseUrl);\n\n  const predict: Predict = async ({ input, countryCodes }) => {\n    const headers = getHeaders({ getInstance, language, locale });\n    const autocompleteService = atlas.AutocompleteServiceV2()(headers);\n    const { predictions } = await autocompleteService.predict({\n      sessionToken,\n      input,\n      countryCodes,\n    });\n\n    return predictions ?? [];\n  };\n\n  const getPlace: GetPlace = async ({ searchId }) => {\n    const headers = getHeaders({ getInstance, language, locale });\n    const placesService = atlas.PlacesServiceV2()(headers);\n    const { place } = await placesService.getPlace({\n      searchId,\n      sessionToken,\n    });\n    refreshSessionToken();\n    return place?.address;\n  };\n\n  const searchByPostalCode: SearchByPostalCode = async ({\n    postalCode,\n    countryCode,\n  }) => {\n    const headers = getHeaders({ getInstance, language, locale });\n    const locationService = atlas.LocationServiceV2()(headers);\n    const { searchResults } = await locationService.search({\n      zipCode: postalCode,\n      ...(countryCode ? { countryCodes: [countryCode] } : {}),\n    });\n    if (!searchResults?.[0]) {\n      return;\n    }\n    const pinpointAddress = getByProximity(searchResults, Proximity.PINPOINT);\n    const approximateAddress = getByProximity(\n      searchResults,\n      Proximity.APPROXIMATE,\n    );\n    const generalAreaAddress = getByProximity(\n      searchResults,\n      Proximity.GENERAL_AREA,\n    );\n    return (\n      pinpointAddress ??\n      approximateAddress ??\n      generalAreaAddress ??\n      searchResults[0].address\n    );\n  };\n\n  return { predict, getPlace, searchByPostalCode };\n}\n\ntype GetHeadersParams = {\n  getInstance: () => string;\n  language?: string;\n  locale?: string;\n};\ntype Headers = { [header: string]: string };\n\nfunction getHeaders({\n  getInstance,\n  language = 'en',\n  locale = 'en-us',\n}: GetHeadersParams): Headers {\n  const instance = getInstance();\n  return {\n    Authorization: instance,\n    // 'x-wix-linguist': language|locale|isPrimaryLanguage|token\n    'x-wix-linguist': `${language}|${locale}|false|${instance}`,\n  };\n}\n\nfunction getByProximity(searchResults: SearchResult[], proximity: Proximity) {\n  const address = searchResults.find(\n    (result) => result.proximity === proximity,\n  )?.address;\n  return address;\n}\n","export type FileFormat =\n  | 'Video'\n  | 'Image'\n  | 'Audio'\n  | 'Document'\n  | 'Archive'\n  | 'Model3D';\n\nexport const FileFormatMap: Record<FileFormat, string> = {\n  Video: 'video/*',\n  Image: 'image/*',\n  Audio: 'audio/*',\n  Document:\n    '.ai, .cdr, .csv, .doc, .docb, .docx, .dot, .dotx, .dwg, .eps, .epub, .fla, .gpx, .ical, .icalendar, .ics, .ifb, .indd, .ipynb, .key, .kml, .kmz, .mobi, .mtf, .mtx, .numbers, .odg, .odp, .ods, .odt, .otp, .ots, .ott, .oxps, .pages, .pdf, .pdn, .pkg, .pot, .potx, .pps, .ppsx, .ppt, .pptx, .psd, .pub, .rtf, .sldx, .txt, .json, .vcf, .xcf, .xls, .xlsx, .xlt, .xltx, .xlw, .xps,.xml,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/pdf,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.ms-excel',\n  Archive:\n    '.zip, .rar, .tar, .tar.gz, .gz, .gzip, .jar, .7z, .fgz, .webarchive',\n  Model3D: '.gltf, .glb',\n};\n","export function getDateFormatParts(\n  locale?: string,\n): Intl.DateTimeFormatPartTypes[] {\n  if (!locale) {\n    return [];\n  }\n\n  try {\n    const format = Intl.DateTimeFormat(locale, {\n      dateStyle: 'short',\n      timeStyle: 'medium',\n    });\n\n    return format\n      .formatToParts(Date.now())\n      .filter((part) => part.type !== 'literal')\n      .map((part) => part.type);\n  } catch {\n    return [];\n  }\n}\n\nexport enum SupportedDateParts {\n  DAY = 'DAY',\n  MONTH = 'MONTH',\n  YEAR = 'YEAR',\n}\n\nconst supportedPartsValues = Object.values(SupportedDateParts);\n\nexport const isSupportedDatePart = (\n  part: Uppercase<Intl.DateTimeFormatPartTypes> | Intl.DateTimeFormatPartTypes,\n): part is SupportedDateParts =>\n  (supportedPartsValues as string[]).includes(part.toUpperCase());\n","export const CONTACTS_FIELD_TYPES = {\n  CONTACTS_COMPANY: 'CONTACTS_COMPANY',\n  CONTACTS_POSITION: 'CONTACTS_POSITION',\n  CONTACTS_TAX_ID: 'CONTACTS_TAX_ID',\n  CONTACTS_FIRST_NAME: 'CONTACTS_FIRST_NAME',\n  CONTACTS_LAST_NAME: 'CONTACTS_LAST_NAME',\n  CONTACTS_EMAIL: 'CONTACTS_EMAIL',\n  CONTACTS_BIRTHDATE: 'CONTACTS_BIRTHDATE',\n  CONTACTS_PHONE: 'CONTACTS_PHONE',\n  CONTACTS_ADDRESS: 'CONTACTS_ADDRESS',\n  CONTACTS_SUBSCRIBE: 'CONTACTS_SUBSCRIBE',\n} as const;\n\n// Challenges field keys (CHALLENGES_*) differ from their values (QUIZ_*) because\n// these fields were originally built for the Challenges product under the QUIZ_ prefix.\n// We renamed the keys to CHALLENGES_ to free up the QUIZ_ namespace for our own quiz fields,\n// but the values stay as QUIZ_* since they're persisted in form schemas.\nexport const CHALLENGES_FIELD_TYPES = {\n  CHALLENGES_MULTI_CHOICE: 'QUIZ_MULTI_CHOICE',\n  CHALLENGES_SINGLE_CHOICE: 'QUIZ_SINGLE_CHOICE',\n  CHALLENGES_SHORT_TEXT: 'QUIZ_SHORT_TEXT',\n  CHALLENGES_LONG_TEXT: 'QUIZ_LONG_TEXT',\n  CHALLENGES_NUMBER: 'QUIZ_NUMBER',\n  CHALLENGES_FILE_UPLOAD: 'QUIZ_FILE_UPLOAD',\n  CHALLENGES_IMAGE_CHOICE: 'QUIZ_IMAGE_CHOICE',\n} as const;\n\nexport const QUIZ_FIELD_TYPES = {\n  QUIZ_TEXT_INPUT: 'PLATFORM_QUIZ_TEXT_INPUT',\n  QUIZ_NUMBER_INPUT: 'PLATFORM_QUIZ_NUMBER_INPUT',\n  QUIZ_RADIO_GROUP: 'PLATFORM_QUIZ_RADIO_GROUP',\n  QUIZ_CHECKBOX_GROUP: 'PLATFORM_QUIZ_CHECKBOX_GROUP',\n} as const;\n\nexport const DEXT_FIELD_TYPES = {\n  DEXT_TEXT_INPUT: 'DEXT_TEXT_INPUT',\n  DEXT_TEXT_AREA: 'DEXT_TEXT_AREA',\n  DEXT_DROPDOWN: 'DEXT_DROPDOWN',\n  DEXT_URL_INPUT: 'DEXT_URL_INPUT',\n  DEXT_RADIO_GROUP: 'DEXT_RADIO_GROUP',\n  DEXT_NUMBER_INPUT: 'DEXT_NUMBER_INPUT',\n  DEXT_CHECKBOX: 'DEXT_CHECKBOX',\n  DEXT_CHECKBOX_GROUP: 'DEXT_CHECKBOX_GROUP',\n  DEXT_EMAIL: 'DEXT_EMAIL',\n  DEXT_PHONE: 'DEXT_PHONE',\n  DEXT_RATING_INPUT: 'DEXT_RATING_INPUT',\n  DEXT_DATE_PICKER: 'DEXT_DATE_PICKER',\n  DEXT_DATE_TIME_INPUT: 'DEXT_DATE_TIME_INPUT',\n  DEXT_TAGS: 'DEXT_TAGS',\n} as const;\n\nexport const ECOM_FIELD_TYPES = {\n  ECOM_ADDITIONAL_INFO: 'ECOM_ADDITIONAL_INFO',\n  ECOM_ADDRESS: 'ECOM_ADDRESS',\n  ECOM_FULL_NAME: 'ECOM_FULL_NAME',\n  ECOM_PHONE: 'ECOM_PHONE',\n  ECOM_COMPANY_NAME: 'ECOM_COMPANY_NAME',\n  ECOM_EMAIL: 'ECOM_EMAIL',\n  ECOM_SUBSCRIPTION: 'ECOM_SUBSCRIPTION',\n} as const;\n\nexport const BOOKINGS_FIELD_TYPES = {\n  BOOKINGS_FIRST_NAME: 'BOOKINGS_FIRST_NAME',\n  BOOKINGS_LAST_NAME: 'BOOKINGS_LAST_NAME',\n  BOOKINGS_EMAIL: 'BOOKINGS_EMAIL',\n  BOOKINGS_PHONE: 'BOOKINGS_PHONE',\n  BOOKINGS_ADDRESS: 'BOOKINGS_ADDRESS',\n} as const;\n\nexport const COMMON_FIELD_TYPES = {\n  TEXT_INPUT: 'TEXT_INPUT',\n  NUMBER_INPUT: 'NUMBER_INPUT',\n  URL_INPUT: 'URL_INPUT',\n  TEXT_AREA: 'TEXT_AREA',\n  DATE_INPUT: 'DATE_INPUT',\n  DATE_TIME_INPUT: 'DATE_TIME_INPUT',\n  TIME_INPUT: 'TIME_INPUT',\n  RADIO_GROUP: 'RADIO_GROUP',\n  CHECKBOX_GROUP: 'CHECKBOX_GROUP',\n  FILE_UPLOAD: 'FILE_UPLOAD',\n  CHECKBOX: 'CHECKBOX',\n  DROPDOWN: 'DROPDOWN',\n  NESTED_FORM: 'NESTED_FORM',\n  MULTILINE_ADDRESS: 'MULTILINE_ADDRESS',\n  MLA_COUNTRY: 'MLA_COUNTRY',\n  MLA_CITY: 'MLA_CITY',\n  MLA_ADDRESS_LINE: 'MLA_ADDRESS_LINE',\n  MLA_ADDRESS_LINE_2: 'MLA_ADDRESS_LINE_2',\n  MLA_POSTAL_CODE: 'MLA_POSTAL_CODE',\n  MLA_SUBDIVISION: 'MLA_SUBDIVISION',\n  MLA_STREET_NAME: 'MLA_STREET_NAME',\n  MLA_STREET_NUMBER: 'MLA_STREET_NUMBER',\n  MLA_APARTMENT: 'MLA_APARTMENT',\n  FULL_NAME_FIRST_NAME: 'FULL_NAME_FIRST_NAME',\n  FULL_NAME_LAST_NAME: 'FULL_NAME_LAST_NAME',\n  FULL_NAME: 'FULL_NAME',\n  VAT_ID: 'VAT_ID',\n  SIGNATURE: 'SIGNATURE',\n  DATE_PICKER: 'DATE_PICKER',\n  RATING_INPUT: 'RATING_INPUT',\n  TAGS: 'TAGS',\n  PASSWORD: 'PASSWORD',\n  IMAGE_CHOICE: 'IMAGE_CHOICE',\n  PHONE: 'PHONE',\n} as const;\n\nexport const SHEDULING_FIELD_TYPES = {\n  APPOINTMENT: 'APPOINTMENT',\n  SERVICES_DROPDOWN: 'SERVICES_DROPDOWN',\n  SERVICES_MULTI_CHOICE: 'SERVICES_MULTI_CHOICE',\n} as const;\n\nexport const PAYMENTS_FIELD_TYPES = {\n  PRODUCT_LIST: 'PRODUCT_LIST',\n  DONATION: 'DONATION',\n  PAYMENT_INPUT: 'PAYMENT_INPUT',\n  FIXED_PAYMENT: 'FIXED_PAYMENT',\n} as const;\n\nexport const EVENTS_FIELD_TYPES = {\n  EVENTS_RSVP: 'EVENTS_RSVP',\n  EVENTS_REPEATER: 'EVENTS_REPEATER',\n} as const;\n\nexport const INPUT_FIELD_TYPES = {\n  ...CONTACTS_FIELD_TYPES,\n  ...CHALLENGES_FIELD_TYPES,\n  ...QUIZ_FIELD_TYPES,\n  ...DEXT_FIELD_TYPES,\n  ...SHEDULING_FIELD_TYPES,\n  ...ECOM_FIELD_TYPES,\n  ...BOOKINGS_FIELD_TYPES,\n  ...PAYMENTS_FIELD_TYPES,\n  ...COMMON_FIELD_TYPES,\n  ...EVENTS_FIELD_TYPES,\n} as const;\n\n// Some INPUT_FIELD_TYPES entries have keys that differ from their persisted\n// `view.fieldType` values (e.g. CHALLENGES_NUMBER → 'QUIZ_NUMBER'), so both the\n// runtime check and the InputFieldType union must be derived from values, not keys.\nconst INPUT_FIELD_TYPE_VALUES: string[] = Object.values(INPUT_FIELD_TYPES);\nexport const isInputFieldType = (fieldType: string | undefined) =>\n  fieldType && INPUT_FIELD_TYPE_VALUES.includes(fieldType);\n\nexport type InputFieldTypes = typeof INPUT_FIELD_TYPES;\nexport type InputFieldType =\n  (typeof INPUT_FIELD_TYPES)[keyof typeof INPUT_FIELD_TYPES];\nexport type ContactsInputFieldType = keyof typeof CONTACTS_FIELD_TYPES;\nexport type CommonInputFieldType = keyof typeof COMMON_FIELD_TYPES;\nexport type PaymentsInputFieldType = keyof typeof PAYMENTS_FIELD_TYPES;\nexport type EventsInputFieldType = keyof typeof EVENTS_FIELD_TYPES;\n","export const READONLY_FIELD_TYPES = {\n  HEADER: 'HEADER',\n  RICH_TEXT: 'RICH_TEXT',\n  ECOM_CONTACT_DETAILS: 'ECOM_CONTACT_DETAILS',\n  ECOM_SHIPPING_DETAILS: 'ECOM_SHIPPING_DETAILS',\n  BOOKINGS_HEADER: 'BOOKINGS_HEADER',\n  BOOKINGS_RICH_TEXT: 'BOOKINGS_RICH_TEXT',\n  BOOKINGS_LOGIN_BAR: 'BOOKINGS_LOGIN_BAR',\n} as const;\n\nexport type ReadonlyFieldTypes = typeof READONLY_FIELD_TYPES;\nexport type ReadonlyFieldType = keyof typeof READONLY_FIELD_TYPES;\n","import { DEXT_FIELD_TYPES } from './dext-field-types';\nimport {\n  INPUT_FIELD_TYPES,\n  isInputFieldType,\n  CONTACTS_FIELD_TYPES,\n  COMMON_FIELD_TYPES,\n  PAYMENTS_FIELD_TYPES,\n  EVENTS_FIELD_TYPES,\n  type InputFieldType,\n  type InputFieldTypes,\n  type ContactsInputFieldType,\n  type CommonInputFieldType,\n  type PaymentsInputFieldType,\n  type EventsInputFieldType,\n} from './input-field-types';\nimport {\n  READONLY_FIELD_TYPES,\n  type ReadonlyFieldTypes,\n  type ReadonlyFieldType,\n} from './readonly-field-types';\n\nexport const FIELD_TYPES = {\n  ...INPUT_FIELD_TYPES,\n  ...READONLY_FIELD_TYPES,\n  SUBMIT_BUTTON: 'SUBMIT_BUTTON',\n} as const;\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type FIELD_TYPES = typeof FIELD_TYPES;\n\n// FieldType is the union of all FIELD_TYPES values (not keys).\n// This is needed because Challenges field keys differ from their values.\nexport type FieldType = (typeof FIELD_TYPES)[keyof typeof FIELD_TYPES];\n\nexport type {\n  InputFieldType,\n  InputFieldTypes,\n  ReadonlyFieldTypes,\n  ReadonlyFieldType,\n  ContactsInputFieldType,\n  CommonInputFieldType,\n  PaymentsInputFieldType,\n  EventsInputFieldType,\n};\nexport {\n  INPUT_FIELD_TYPES,\n  isInputFieldType,\n  CONTACTS_FIELD_TYPES,\n  COMMON_FIELD_TYPES,\n  PAYMENTS_FIELD_TYPES,\n  READONLY_FIELD_TYPES,\n  DEXT_FIELD_TYPES,\n  EVENTS_FIELD_TYPES,\n};\n","export const EMPTY_VALUE = null;\n","export const NOW_VALUE = '$now';\n\nexport enum DateTimeValueType {\n  Relative = 'Relative',\n  Specific = 'Specific',\n}\n","export const EXPERIMENTS = {\n  USE_FIELDS_V2: 'specs.forms.UseFieldsV2',\n  ENABLE_SUBMIT_LIMITS_SETTINGS: 'specs.forms.EnableSubmitLimitsSettings',\n  ENABLE_READ_ONLY_SETTING: 'specs.forms.EnableReadOnlySetting',\n  ENABLE_DEFAULT_VALUE_SETTING: 'specs.forms.EnableDefaultValueSetting',\n  ENABLE_FLOATING_ACTION_TOOLBAR: 'specs.forms.EnableFieldActionToolbar',\n  ENABLE_FIELD_ACTION_TOOLBAR_WIXEL:\n    'specs.forms.EnableFieldActionToolbarWixel',\n  REMOVE_FALSY_VALUES: 'specs.forms.RemoveFalsyValues',\n  BIF_ON_MEETINGS: 'specs.bookings.BIFonMeetings',\n  INFORM_MEETINGS_USERS: 'specs.bookings.InformMeetingsUsers',\n  BIF_ON_MEETINGS_CHANGE: 'specs.bookings.BifOnMeetingsInstallOnlyMeetings',\n  DATE_PICKER_ADVANCED_SETTINGS: 'specs.forms.DatePickerAdvancedSettings',\n  ENABLE_HEADING_LEVELS: 'specs.forms.EnableHeadingLevels',\n  ENABLE_SUBSCRIBE_CHANNELS_SETTINGS:\n    'specs.forms.EnableSubscribeChannelsSettings',\n  USE_CONFERENCING_SPI_HOST: 'specs.bookings.UseConferencingSpiHost',\n  SUBMIT_SUCCESS_NO_FOCUS: 'specs.forms.SubmitSuccessNoFocus',\n  ENABLE_ROUND_ROBIN_IN_BIF: 'specs.forms.EnableRoundRobinInBIF',\n  ENABLE_3D_FILE_UPLOAD: 'specs.forms.Enable3DFileUpload',\n  OPTIONS_BULK_EDIT_UNDER_ADD_BUTTON:\n    'specs.forms.OptionsBulkEditUnderAddOptionButton',\n} as const;\n","export enum Breakpoint {\n  LARGE = 'large',\n  SMALL = 'small',\n}\n\nexport const DEFAULT_BREAKPOINT: Breakpoint = Breakpoint.LARGE;\n","import React, {\n  createContext,\n  type FC,\n  useCallback,\n  useContext,\n  useEffect,\n  useMemo,\n  useRef,\n  useState,\n} from 'react';\n\ntype FormStatus = keyof typeof FORM_STATUS;\n\nexport const FORM_STATUS = {\n  BUSY: 'BUSY',\n  READY: 'READY',\n} as const;\n\ninterface FormStatusProviderProps {\n  children: React.ReactNode;\n  onStatusChange?: (status: FormStatus) => void;\n}\n\ninterface FormStatusContextProps {\n  formStatus: FormStatus | null;\n  setFormStatus: (target: string, status: FormStatus) => void | undefined;\n}\n\nconst FormStatusContext = createContext<FormStatusContextProps | undefined>(\n  undefined,\n);\n\nexport const FormStatusProvider: FC<FormStatusProviderProps> = ({\n  children,\n  onStatusChange,\n}) => {\n  const previousFormStatus = useRef<FormStatus>(FORM_STATUS.READY);\n  const [fieldStatusByTarget, setFieldStatusByTarget] = useState<\n    Record<string, FormStatus>\n  >({});\n\n  const setFormStatus = useCallback((target: string, status: FormStatus) => {\n    setFieldStatusByTarget((previous) => ({ ...previous, [target]: status }));\n  }, []);\n\n  const currentFormStatus = useMemo(() => {\n    const isFormBusy = Object.values(fieldStatusByTarget).some(\n      (status) => status === FORM_STATUS.BUSY,\n    );\n    return isFormBusy ? FORM_STATUS.BUSY : FORM_STATUS.READY;\n  }, [fieldStatusByTarget]);\n\n  useEffect(() => {\n    if (previousFormStatus.current !== currentFormStatus) {\n      previousFormStatus.current = currentFormStatus;\n      onStatusChange?.(currentFormStatus);\n    }\n  }, [currentFormStatus, onStatusChange]);\n\n  const contextValue = useMemo(() => {\n    return {\n      formStatus: currentFormStatus,\n      setFormStatus,\n    };\n  }, [currentFormStatus, setFormStatus]);\n\n  return (\n    <FormStatusContext.Provider value={contextValue}>\n      {children}\n    </FormStatusContext.Provider>\n  );\n};\n\nexport function useFormStatus() {\n  const context = useContext(FormStatusContext);\n  if (context === undefined) {\n    throw new Error('useFormStatus must be used within a Form Status provider');\n  }\n  return context;\n}\n","import type { WixRicosViewerProps } from '@wix/ricos';\nimport { type ComponentType, createContext, useContext } from 'react';\n\nexport const WixRicosViewerContext = createContext<\n  ComponentType<WixRicosViewerProps> | undefined\n>(undefined);\n\nexport function useWixRicosViewer() {\n  const context = useContext(WixRicosViewerContext);\n  if (context === undefined) {\n    throw new Error(\n      'useWixRicosViewer must be used within a WixRicosViewerContext.Provider',\n    );\n  }\n\n  return context;\n}\n","import * as A from 'fp-ts-esm/Array';\nimport { identity, pipe } from 'fp-ts-esm/function';\nimport type * as J from 'fp-ts-esm/Json';\nimport { concatAll } from 'fp-ts-esm/Monoid';\nimport * as R from 'fp-ts-esm/Record';\nimport { first } from 'fp-ts-esm/Semigroup';\nimport * as T from 'fp-ts-esm/Tuple';\n\nimport type { ListValue, Struct, Value } from './../../../../ricos-schema/legacy/wix/rich_content/v1/index.js';\n\nimport { firstRight } from '../../../fp-utils.js';\nimport * as SRT from '../struct-refined-types.js';\n\nconst mergeJsonMap = R.getMonoid(first<J.Json>());\nconst toRecord = ([k, v]: [string, J.Json]): J.JsonRecord => ({ [k]: v });\n\nexport const convertStructToJson = (message: Struct): J.JsonRecord =>\n  pipe(\n    message.fields,\n    Object.entries,\n    A.map(T.bimap(convertValueToJson, identity)),\n    A.map(toRecord),\n    concatAll(mergeJsonMap)\n  );\n\nconst convertValueToJson = (message: Value): J.Json =>\n  firstRight(message, null as J.Json, [\n    [SRT.isBoolValue, ({ boolValue }) => boolValue as boolean],\n    [SRT.isNumberValue, ({ numberValue }) => numberValue as number],\n    [SRT.isStringValue, ({ stringValue }) => stringValue as string],\n    [SRT.isNullValue, () => null],\n    [SRT.isArrayValue, m => convertListToJson(m.listValue || { values: [] })],\n    [SRT.isStructValue, m => convertStructToJson(m.structValue || { fields: {} })],\n  ]);\n\nconst convertListToJson = (message: ListValue): J.JsonArray =>\n  pipe(message.values, A.map(convertValueToJson));\n","import lodash from 'lodash';\n\nimport type { ListValue, Struct, Value } from './../../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport { NullValue } from './../../../ricos-schema/legacy/wix/rich_content/v1/index.js';\n\nexport type BoolValue = {\n  boolValue: boolean;\n  numberValue: undefined;\n  stringValue: undefined;\n  nullValue: undefined;\n};\n\nexport const isBoolValue = (val: Value): val is BoolValue => typeof val.boolValue === 'boolean';\n\nexport type StringValue = {\n  stringValue: string;\n  boolValue: undefined;\n  numberValue: undefined;\n  nullValue: undefined;\n};\n\nexport const isStringValue = (val: Value): val is StringValue =>\n  typeof val.stringValue === 'string';\n\nexport type NumberValue = {\n  numberValue: number;\n  boolValue: undefined;\n  stringValue: undefined;\n  nullValue: undefined;\n};\n\nexport const isNumberValue = (val: Value): val is NumberValue =>\n  typeof val.numberValue === 'number';\n\nexport type ArrayValue = {\n  listValue: ListValue;\n  boolValue: undefined;\n  numberValue: undefined;\n  stringValue: undefined;\n  nullValue: undefined;\n};\n\nexport const isArrayValue = (val: Value): val is ArrayValue =>\n  lodash.isObject(val.listValue) && Array.isArray(val.listValue?.values);\n\nexport type StructValue = {\n  structValue: Struct;\n  boolValue: undefined;\n  numberValue: undefined;\n  stringValue: undefined;\n  nullValue: undefined;\n};\n\nexport const isStructValue = (val: Value): val is StructValue =>\n  lodash.isObject(val.structValue) && lodash.isObject(val.structValue?.fields);\n\nexport type EmptyValue = {\n  boolValue: undefined;\n  numberValue: undefined;\n  stringValue: undefined;\n  nullValue: NullValue.NULL_VALUE;\n};\n\nexport const isNullValue = (val: Value): val is EmptyValue =>\n  val.nullValue === NullValue.NULL_VALUE;\n","import { useEffect, useMemo, useState } from 'react';\n\nimport type { BISettings } from './../../ricos-common/RicosTypes.js';\nimport { RICOS_VERSION } from './../../ricos-schema/next-schema/index.js';\nimport type { BICallbacks } from './../../ricos-types/index.js';\nimport { parseInstance } from './../request-service-provider/parse-instance.js';\n\nimport type { BiStrategyResult } from './index.js';\n\ntype BiHelpersState = {\n  helpers: Partial<BICallbacks>;\n  biLogger?: BiStrategyResult['biLogger'];\n  loading: boolean;\n};\n\ntype UseBiHelpersParams = {\n  instance: string | undefined;\n  biSettings: BISettings | undefined;\n  msid?: string;\n};\n\ntype UseBiHelpersResult = BiHelpersState & {\n  biLoadPromise: Promise<Partial<BICallbacks>>;\n};\n\n/**\n * React hook that lazy loads BI helpers when instance and biSettings are provided.\n * Returns empty helpers immediately, then updates once the BI module is loaded.\n * The returned `biLoadPromise` resolves with all BI callbacks once loaded.\n */\nexport const useBiHelpers = ({\n  instance,\n  biSettings,\n  msid = '',\n}: UseBiHelpersParams): UseBiHelpersResult => {\n  const shouldLoadBi = !!instance && !!biSettings;\n\n  const [state, setState] = useState<BiHelpersState>({\n    helpers: {},\n    loading: shouldLoadBi,\n  });\n\n  // Parse instance once\n  const { appDefId, metaSiteId: instanceMsid } = useMemo(\n    () => (instance ? parseInstance(instance) : { appDefId: '', metaSiteId: '' }),\n    [instance]\n  );\n  const metaSiteId = instanceMsid || msid;\n\n  // Create the deferred promise during render so it's available before effects run.\n  // Keyed on the same deps as the loading effect so a new promise is created when deps change.\n  const [biLoadDeferred] = useState(() => {\n    if (!shouldLoadBi) {\n      return { promise: Promise.resolve({} as BICallbacks), resolve: (_h: BICallbacks) => {} };\n    }\n    let resolve!: (helpers: BICallbacks) => void;\n    const promise = new Promise<BICallbacks>(r => {\n      resolve = r;\n    });\n    return { promise, resolve };\n  });\n\n  useEffect(() => {\n    if (!shouldLoadBi || !biSettings) {\n      setState({ helpers: {}, loading: false });\n      return;\n    }\n\n    let cancelled = false;\n\n    import('./index.js')\n      .then(({ createBiHelpers }) =>\n        createBiHelpers({\n          appDefId,\n          metaSiteId,\n          biSettings,\n          wixRicosVersion: RICOS_VERSION,\n          ricosVersion: RICOS_VERSION,\n        })\n      )\n      .then(result => {\n        if (!cancelled) {\n          setState({\n            helpers: result.helpers,\n            biLogger: result.biLogger,\n            loading: false,\n          });\n          biLoadDeferred.resolve(result.helpers);\n        }\n      })\n      .catch(error => {\n        console.error('[useBiHelpers] Failed to load BI helpers:', error);\n        if (!cancelled) {\n          setState({ helpers: {}, loading: false });\n          biLoadDeferred.resolve({} as BICallbacks);\n        }\n      });\n\n    return () => {\n      cancelled = true;\n    };\n  }, [shouldLoadBi, appDefId, metaSiteId, biSettings, biLoadDeferred]);\n\n  return { ...state, biLoadPromise: biLoadDeferred.promise };\n};\n","import { useMemo } from 'react';\n\nimport { parseInstance } from './/request-service-provider/parse-instance.js';\n\n/**\n * Computes iframeSandboxDomain from instance if not explicitly provided.\n * Used by both Editor and Viewer to ensure consistent behavior.\n */\nexport const useIframeSandboxDomain = (\n  explicitDomain: string | undefined,\n  instance: string | undefined\n): string | undefined => {\n  return useMemo(() => {\n    if (explicitDomain) return explicitDomain;\n    if (!instance) return undefined;\n    const { metaSiteId } = parseInstance(instance);\n    return metaSiteId ? `https://${metaSiteId}.filesusr.com` : undefined;\n  }, [explicitDomain, instance]);\n};\n","import lodash from 'lodash';\nimport type { RefObject } from 'react';\nimport React, { Component, Suspense, createRef, useEffect, useMemo } from 'react';\n\nimport { extractPluginsConfig } from './../wix-ricos-common/index.js';\nimport { resolveFileUrl } from './../ricos-media/index.js';\nimport { Version } from './../ricos-content/index.js';\nimport type { RichContent } from './../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport { resolveTheme } from './../ricos-styles/resolve-theme.js';\nimport type { BICallbacks, SEOSettings } from './../ricos-types/index.js';\nimport { useBiHelpers } from './../_shared/bi-strategy/use-bi-helpers.js';\nimport { useGetWixClientPromise } from './../_shared/request-service-provider/use-get-wix-client-promise.js';\nimport { WixInstanceContextProvider } from './../_shared/request-service-provider/wix-instance-context.js';\nimport { getImageUrl } from './../_shared/url-resolvers.js';\nimport { useIframeSandboxDomain } from './../_shared/use-iframe-sandbox-domain.js';\nimport { addDevToolsClickListener } from './../wix-rich-content-common/index.js';\nimport {\n  RicosDevToolsLazy,\n  shouldShowDebuggingInfo,\n} from './../wix-rich-content-common/lib/devTools.js';\nimport { getContentSummary } from './../wix-rich-content-common/lib/ricosContentAnalytics.js';\n\nimport { ContentViewer } from './ContentViewer/index.js';\nimport { isViewerPlugin } from './is-viewer-plugin.js';\nimport type { RicosViewerProps } from './types.js';\nimport { mergeViewerProps } from './utils.js';\n\ninterface State {\n  error?: string;\n  TextSelectionToolbar?: $TSFixMe;\n  LinkPreviewPopover?: $TSFixMe;\n  debugInvokedWithMouse?: boolean;\n  content?: RichContent;\n}\n\nclass RicosViewerNext extends Component<RicosViewerProps, State> {\n  viewerRef!: RefObject<any>;\n\n  getBiCallback: <T extends keyof BICallbacks>(key: T) => BICallbacks[T] | undefined;\n\n  static displayName = 'RicosViewerNext';\n\n  static getDerivedStateFromError(error: string) {\n    return { error };\n  }\n\n  componentDidCatch(error: $TSFixMe, errorInfo: $TSFixMe) {\n    console.error({ error, errorInfo });\n  }\n\n  constructor(props: RicosViewerProps) {\n    super(props);\n    this.getBiCallback = key => {\n      const { children, _rcProps } = this.props;\n      return children?.props.helpers?.[key] || _rcProps?.helpers?.[key];\n    };\n    this.viewerRef = createRef();\n    this.state = {};\n  }\n\n  static defaultProps = {\n    onError: (err: $TSFixMe) => {\n      throw err;\n    },\n  };\n\n  componentDidMount() {\n    addDevToolsClickListener(this.viewerRef.current, () =>\n      this.setState({ debugInvokedWithMouse: true })\n    );\n  }\n\n  loadTextSelection = () => {\n    const { textSelectionToolbar, isMobile } = this.props;\n    const needTextSelectionToolbar = textSelectionToolbar && !isMobile;\n    if (needTextSelectionToolbar && !this.state.TextSelectionToolbar) {\n      const TextSelectionToolbar = React.lazy(() => import('./TextSelectionToolbar.js'));\n      this.setState({ TextSelectionToolbar });\n    }\n  };\n\n  loadLinkPreviewPopover = () => {\n    const { linkPreviewPopoverFetchData, isMobile } = this.props;\n    const needLoadLinkPreviewPopover = linkPreviewPopoverFetchData && !isMobile;\n    if (needLoadLinkPreviewPopover && !this.state.LinkPreviewPopover) {\n      const LinkPreviewPopover = React.lazy(() => import('./LinkPreviewPopover.js'));\n      this.setState({ LinkPreviewPopover });\n    }\n  };\n\n  onMouseOver = () => {\n    this.loadTextSelection();\n    this.loadLinkPreviewPopover();\n  };\n\n  render() {\n    const { seoSettings, linkPreviewPopoverFetchData, mediaSettings, content, debugMode, isPrint } =\n      this.props;\n    const { TextSelectionToolbar, LinkPreviewPopover } = this.state;\n    const mergedProps = mergeViewerProps({\n      ...this.props,\n      viewerProps: {\n        seoMode: seoSettings as SEOSettings | undefined,\n        onMouseOver: this.onMouseOver,\n        locale: this.props.locale,\n        isPrint,\n      },\n    });\n\n    try {\n      if (this.state.error) {\n        this.props.onError?.(this.state.error);\n        return null;\n      }\n      return [\n        <ContentViewer\n          {...mergedProps}\n          content={this.state.content ?? mergedProps.content}\n          config={mergedProps.config}\n          onHover={() => {}}\n          key=\"viewer\"\n          setRef={this.viewerRef}\n          fullscreenProps={mediaSettings?.fullscreenProps}\n          devTools={\n            this.state.debugInvokedWithMouse ||\n            shouldShowDebuggingInfo(debugMode?.includes('all')) ? (\n              <React.Suspense>\n                <RicosDevToolsLazy\n                  schema={{\n                    getContent: () => (this.state.content ?? mergedProps.content) as RichContent,\n                    setContent: content => this.setState({ content }),\n                  }}\n                  version={Version.currentVersion}\n                  mode=\"viewer\"\n                  contentState={content}\n                  ricosProps={this.props}\n                  autoOpen={this.state.debugInvokedWithMouse ?? false}\n                />\n              </React.Suspense>\n            ) : null\n          }\n        />,\n        TextSelectionToolbar ? (\n          <Suspense key=\"TextSelectionToolbar\" fallback={<div />}>\n            <TextSelectionToolbar\n              onButtonClick={this.getBiCallback('onViewerAction')}\n              container={this.viewerRef.current}\n            />\n          </Suspense>\n        ) : null,\n        LinkPreviewPopover ? (\n          <Suspense key=\"LinkPreviewPopover\" fallback={<div />}>\n            <LinkPreviewPopover\n              fetchUrlPreviewData={linkPreviewPopoverFetchData}\n              container={this.viewerRef.current}\n            />\n          </Suspense>\n        ) : null,\n      ];\n    } catch (e) {\n      // @ts-ignore $TSFixMe\n      this.props.onError?.(e);\n      return null;\n    }\n  }\n}\n\n/**\n * Wrapper component that lazy loads BI helpers and passes them to the class component.\n * Waits for BI helpers to load before rendering the viewer to ensure onViewerLoaded\n * has access to the loaded helpers.\n */\nconst RicosViewerWithHelpers = (props: RicosViewerProps) => {\n  const {\n    biSettings,\n    instance,\n    _rcProps,\n    iframeSandboxDomain: explicitDomain,\n    theme,\n    ...restProps\n  } = props;\n\n  // Lazy load BI helpers only when biSettings AND instance are provided\n  const { helpers: biHelpers, biLoadPromise } = useBiHelpers({ instance, biSettings });\n\n  // Fire onViewerLoaded once BI helpers finish loading\n  useEffect(() => {\n    biLoadPromise.then(callbacks => {\n      const content = props.content || _rcProps?.content;\n      const { pluginsCount } = (content && getContentSummary(content)) || {};\n      if (pluginsCount) {\n        callbacks.onViewerLoaded?.({\n          isPreview: false,\n          version: Version.currentVersion,\n          pluginsCount,\n          url: document.URL,\n          contentId: content?.metadata?.id,\n        });\n      }\n    });\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n\n  // Compute iframeSandboxDomain from instance if not explicitly provided\n  const iframeSandboxDomain = useIframeSandboxDomain(explicitDomain, instance);\n\n  // Resolve Wix theme strategy (liveSite/wixStyle/nativeStyle)\n  const resolvedTheme = useMemo(\n    () => resolveTheme({ theme, isMobile: restProps.isMobile }),\n    [theme, restProps.isMobile]\n  );\n\n  const pluginConfig = useMemo(\n    () => extractPluginsConfig(props.plugins?.filter(isViewerPlugin)),\n    [props.plugins]\n  );\n\n  const { getWixClientPromise } = useGetWixClientPromise(instance ?? '');\n\n  const mergedRcProps = useMemo(\n    () => ({\n      ..._rcProps,\n      config: lodash.merge({}, _rcProps?.config, pluginConfig.config),\n      helpers: {\n        ..._rcProps?.helpers,\n        ...biHelpers,\n        getImageUrl,\n        resolveFileUrl:\n          // Some urls might be resolved even without msid or instance, so we call it regardless\n          resolveFileUrl(props.msid ?? '', props.instance ?? ''),\n      },\n    }),\n    [_rcProps, biHelpers, props.msid, props.instance, pluginConfig]\n  );\n\n  return (\n    <WixInstanceContextProvider\n      getWixClientPromise={getWixClientPromise}\n      instance={instance}\n      jsdomMode={undefined}\n    >\n      <RicosViewerNext\n        {...restProps}\n        _rcProps={mergedRcProps}\n        iframeSandboxDomain={iframeSandboxDomain}\n        theme={resolvedTheme}\n      />\n    </WixInstanceContextProvider>\n  );\n};\nRicosViewerWithHelpers.displayName = 'RicosViewer';\n\nexport default RicosViewerWithHelpers;\n","import { pipe } from 'fp-ts-esm/function';\nimport lodash from 'lodash';\n\nimport { GALLERY_TYPE, IMAGE_TYPE } from './../ricos-content/index.js';\nimport type { DebugMode, PluginMapping, PluginTypeMapper } from './../ricos-types/index.js';\nimport {\n  convertRelObjectToString,\n  convertRelStringToObject,\n} from './../wix-rich-content-common/lib/linkConverters.js';\n\nimport { applyBIGenerics } from './biUtils/index.js';\nimport { isViewerPlugin } from './is-viewer-plugin.js';\nimport pluginsStrategy from './pluginsStrategy.js';\nimport type { ContentViewerProps, RicosViewerProps } from './types.js';\n\nconst combineMappers = (mappers: PluginTypeMapper[], ...args: $TSFixMe[]): PluginMapping => {\n  if (!mappers || mappers.some(resolver => typeof resolver !== 'function')) {\n    console.warn(`${mappers} is expected to be a function array`); // oxlint-disable-line no-console\n    return {};\n  }\n  return mappers.reduce<PluginMapping>((map, mapper) => Object.assign(map, mapper(...args)), {});\n};\n\nexport function mergeViewerProps({\n  _rcProps,\n  isMobile,\n  addAnchors,\n  onError,\n  mediaSettings = {},\n  linkSettings = {},\n  generalLinkSettings,\n  textAlignment,\n  experiments,\n  iframeSandboxDomain,\n  theme,\n  plugins = [],\n  content,\n  viewerProps,\n  onNodeClick,\n  debugMode,\n  jsdomMode,\n  baseUrl,\n}: RicosViewerProps & { viewerProps: Partial<ContentViewerProps>; debugMode?: DebugMode[] }) {\n  const rcvPluginProps = pluginsStrategy({\n    plugins: plugins?.filter(isViewerPlugin),\n    viewerProps,\n  });\n\n  const { pauseMedia, disableRightClick } = mediaSettings;\n  const { customAnchorScroll } = linkSettings;\n  let { anchorTarget = '_blank', relValue, rel } = linkSettings;\n\n  if (relValue) {\n    // oxlint-disable-next-line no-console\n    console.warn(\n      // oxlint-disable-next-line max-len\n      `relValue is deprecated, Please use rel prop instead.`\n    );\n    rel = convertRelStringToObject(relValue) || rel;\n  }\n  const { target, ...relAttributes } = generalLinkSettings?.initialLinkOptions || {};\n  anchorTarget = target || anchorTarget;\n  rel = { ...rel, ...relAttributes };\n  relValue = convertRelObjectToString(rel);\n  const disableDownload = mediaSettings?.disableDownload || disableRightClick;\n  // any of ricos props that should be merged into child\n  const ricosPropsToMerge: Partial<ContentViewerProps> = {\n    addAnchors,\n    isMobile,\n    config: {\n      uiSettings: { disableDownload },\n    },\n    content,\n    onError,\n    helpers: {},\n    disabled: pauseMedia,\n    anchorTarget,\n    relValue,\n    customAnchorScroll,\n    textAlignment,\n    experiments,\n    iframeSandboxDomain,\n    theme,\n    onNodeClick,\n    jsdomMode,\n    baseUrl,\n  };\n\n  const mergedRCProps = pipe(\n    lodash.merge(\n      { locale: 'en', config: {} },\n      rcvPluginProps,\n      _rcProps,\n      ricosPropsToMerge,\n      viewerProps\n    ),\n    applyBIGenerics(() => content?.metadata?.id)\n  ) as ContentViewerProps & { typeMappers: PluginTypeMapper[] | PluginMapping };\n\n  return {\n    ...mergedRCProps,\n    debugMode,\n    plugins,\n    typeMappers: combineMappers((mergedRCProps.typeMappers || []) as PluginTypeMapper[]),\n  };\n}\n\nexport function hasFullscreen(config: $TSFixMe) {\n  const { [IMAGE_TYPE]: imageConfig, [GALLERY_TYPE]: galleryConfig } = config || {};\n  const needsFullscreenProvider = !imageConfig?.onExpand || !galleryConfig?.onExpand;\n  const isExpandDisabled =\n    (!imageConfig || imageConfig.disableExpand) && (!galleryConfig || galleryConfig?.disableExpand);\n\n  return !isExpandDisabled && needsFullscreenProvider;\n}\n","export {\n  convertRelObjectToString,\n  convertRelStringToObject,\n  convertTargetBooleanToString,\n  convertTargetStringToBoolean,\n  getRelValue,\n} from '../Utils/linkConverters.js';\n","import { RICOS_VERSION } from './../../ricos-schema/next-schema/index.js';\nimport type { Helpers } from './../../ricos-types/index.js';\n\nimport type { ContentViewerProps } from '../types.js';\n\nexport const applyBIGenerics =\n  (getContentId: () => string | undefined) =>\n  ({ helpers = {}, ...rest }: Partial<ContentViewerProps>): Partial<ContentViewerProps> => ({\n    ...rest,\n    helpers: {\n      ...helpers,\n      onViewerLoaded: args =>\n        helpers.onViewerLoaded?.({ ...args, version: RICOS_VERSION, contentId: getContentId() }),\n      onViewerAction: (pluginId, actionName, value, contentId, partialNode) =>\n        helpers.onViewerAction?.(\n          pluginId,\n          actionName,\n          value,\n          contentId || getContentId(),\n          partialNode\n        ),\n    } as Helpers,\n  });\n","import type { ViewerPlugin } from './../ricos-types/index.js';\n\nimport type { ViewerPluginOptions } from './types.js';\n\nexport const isViewerPlugin = (\n  pluginOrConfig: ViewerPlugin | ViewerPluginOptions\n): pluginOrConfig is ViewerPlugin => {\n  return 'config' in pluginOrConfig;\n};\n\nexport const isViewerPluginOptions = (\n  pluginOrConfig: ViewerPlugin | ViewerPluginOptions\n): pluginOrConfig is ViewerPluginOptions => {\n  return !('config' in pluginOrConfig);\n};\n","import { getMonoid as getMonoidArray, map } from 'fp-ts-esm/Array';\nimport { pipe } from 'fp-ts-esm/function';\nimport { fold, struct } from 'fp-ts-esm/Monoid';\nimport { getMonoid as getMonoidRecord } from 'fp-ts-esm/Record';\nimport { last } from 'fp-ts-esm/Semigroup';\nimport lodash from 'lodash';\n\nimport type { Node_Type } from './../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport type {\n  NodeViewDecorator,\n  NodeViewRenderer,\n  PluginTypeMapper,\n  ViewerPlugin,\n} from './../ricos-types/index.js';\n\nimport type { ContentViewerProps, RCVPluginProps } from './types.js';\n\nconst recordMergeM = <T>() => getMonoidRecord<string, T>(last<T>());\nconst nodeViewRenderersMergeM = () => getMonoidRecord<Node_Type, NodeViewRenderer>(last());\nconst rcvPropM = struct<RCVPluginProps>({\n  config: recordMergeM<any>(),\n  typeMappers: getMonoidArray<PluginTypeMapper>(),\n  nodeViewDecorators: getMonoidArray<NodeViewDecorator<JSX.Element>>(),\n  // @ts-ignore $TSFixMe\n  nodeViewRenderers: nodeViewRenderersMergeM(),\n});\nconst extractChildRCVPluginProps = ({\n  config = {},\n  typeMappers = [],\n  nodeViewRenderers,\n  nodeViewDecorators,\n}: any): RCVPluginProps => ({\n  config,\n  typeMappers,\n  nodeViewRenderers,\n  nodeViewDecorators,\n});\n\nconst toRCVPluginProps =\n  () =>\n  (plugin: ViewerPlugin): RCVPluginProps => {\n    const pluginProps: RCVPluginProps = {\n      config: { [plugin.type]: plugin.config },\n      typeMappers: [],\n      nodeViewRenderers: {},\n      nodeViewDecorators: [],\n    };\n\n    if (plugin.nodeViewRenderers) {\n      pluginProps.nodeViewRenderers = plugin.nodeViewRenderers;\n    } else if (plugin.typeMapper) {\n      pluginProps.typeMappers = [plugin.typeMapper];\n    }\n\n    pluginProps.nodeViewDecorators = plugin.nodeViewDecorators ? plugin.nodeViewDecorators : [];\n\n    return pluginProps;\n  };\n\nconst mergeWithChildProps = (childPluginProps: $TSFixMe) => (pluginProps: $TSFixMe) =>\n  lodash.merge({}, pluginProps, childPluginProps);\n\nexport default function pluginsStrategy({\n  plugins = [],\n  viewerProps,\n}: {\n  plugins: ViewerPlugin[];\n  viewerProps: Partial<ContentViewerProps>;\n}): RCVPluginProps {\n  return pipe(\n    plugins as ViewerPlugin[],\n    map(toRCVPluginProps()),\n    fold(rcvPropM),\n    mergeWithChildProps(extractChildRCVPluginProps(viewerProps))\n  );\n}\n","import type { Resource } from 'i18next';\nimport React from 'react';\n\nimport type { FullscreenProps, LocaleResource } from './../../ricos-types/index.js';\nimport { hasFullscreen } from './../utils.js';\nimport { i18next } from './../../wix-rich-content-common/index.js';\n\nimport { FullscreenProvider } from '../modals/fullscreen/fullscreen-provider.js';\nimport viewerVitalTranslations from '../translations/vitalTranslations.json.js';\nimport type { ContentViewerProps } from '../types.js';\nimport ContentViewer from './ContentViewer.js';\n\n/**\n * The ricos-viewer is facing a few issues with translations in SSR. Currently, there\n * is no cross-platform method to load chunks in SSR. Some TPAs support\n * Loadable, but the editor-elements do not support any lazy loading in SSR.\n * Consequently, there is no general solution until React 18 is universally\n * adopted and Suspense is supported in SSR. To address the SSR translation\n * issue, we use the following approach:\n * 1. Only five translation keys are directly visible to the users. Therefore,\n * we prepare a JSON file with all the translations for these keys (see\n * vitalTranslations).\n * 2. It's 3KB gzipped— not great, not terrible.\n * 3. In CSR, we load the full translations for the requested locale.\n *\n */\nconst vitalTranslationsWithDefaults = addDefaultsFromEnglish(viewerVitalTranslations);\n\nexport const TranslatedContentViewer: React.FC<\n  Omit<ContentViewerProps, 't'> & { fullscreenProps?: FullscreenProps }\n> = props => {\n  const locale = props.locale;\n\n  const [resourcesState, setResourcesState] = React.useState(() => {\n    return {\n      status: 'READY' as 'READY' | 'LOADING' | 'ERROR',\n      loadedLocales: ['en'],\n      i18nextInstance: createI18nextInstance({\n        activeLocale: locale,\n        resources: vitalTranslationsWithDefaults,\n      }),\n    };\n  });\n\n  const { i18nextInstance, loadedLocales } = resourcesState;\n\n  if (locale !== i18nextInstance.language) {\n    // This is done outside of the effect because locale changes might not\n    // trigger state changes thus the rendering with updated i18nextInstance\n    // will not happen. We can add 'locale's copy to state, but then we will be jugling 3 sources of truth for locale\n    i18nextInstance.changeLanguage(locale);\n  }\n\n  React.useEffect(() => {\n    if (loadedLocales.includes(locale) || resourcesState.status !== 'READY') {\n      // If load only unloaded locales and only in 'IDLE' status\n      // If the status is 'LOADING', but at the end the loaded locale is not in loadedLocales, it will be loaded then\n      // If the status is 'ERROR', we won't try again to prevent infinite loop.\n      return;\n    }\n\n    // The rest is resource loading\n    const loadLocaleResource = async () => {\n      try {\n        setResourcesState(prevState => ({ ...prevState, status: 'LOADING' }));\n\n        const response = await import(\n          /* webpackChunkName: \"ricos_viewer_messages_[request]\" */\n          `../translations/locale/messages_${locale}.json`\n        );\n\n        const localeResource = response.default;\n        i18nextInstance.addResourceBundle(locale, 'translation', localeResource, true, true);\n        setResourcesState(prevState => {\n          return {\n            ...prevState,\n            status: 'READY',\n            loadedLocales: [...prevState.loadedLocales, locale],\n          };\n        });\n      } catch (err) {\n        console.error(`Failed to load locale resource for ${locale}:`, err);\n\n        if (locale !== 'en' && !loadedLocales.includes('en')) {\n          try {\n            console.warn(`Falling back to English locale for ${locale}`);\n            const fallbackResponse = await import(\n              /* webpackChunkName: \"ricos_viewer_messages_en\" */\n              `../translations/locale/messages_en.json`\n            );\n\n            const fallbackResource = fallbackResponse.default;\n            i18nextInstance.addResourceBundle('en', 'translation', fallbackResource, true, true);\n\n            setResourcesState(prevState => {\n              return {\n                ...prevState,\n                status: 'READY',\n                loadedLocales: [...prevState.loadedLocales, 'en'],\n              };\n            });\n          } catch (fallbackErr) {\n            console.error('Failed to load fallback English locale:', fallbackErr);\n            setResourcesState(prevState => {\n              return { ...prevState, status: 'ERROR' };\n            });\n          }\n        } else {\n          setResourcesState(prevState => {\n            return { ...prevState, status: 'ERROR' };\n          });\n        }\n      }\n    };\n\n    loadLocaleResource();\n  }, [locale, loadedLocales]);\n\n  const t = React.useMemo(() => i18nextInstance.t.bind(i18nextInstance), [i18nextInstance]);\n\n  return hasFullscreen(props.config) ? (\n    <FullscreenProvider\n      key=\"RicosFullscreenProvider\"\n      fullscreenProps={props?.fullscreenProps}\n      isMobile={!!props.isMobile}\n      content={props.content}\n      experiments={props.experiments}\n      config={props.config}\n      jsdomMode={props.jsdomMode}\n      t={t}\n    >\n      {({ config, onHover }) => (\n        <ContentViewer {...props} config={config} t={t} onHover={onHover} />\n      )}\n    </FullscreenProvider>\n  ) : (\n    <ContentViewer {...props} t={t} />\n  );\n};\n\nfunction createI18nextInstance({\n  activeLocale,\n  resources,\n}: {\n  activeLocale: string;\n  resources: { [key: string]: LocaleResource };\n}) {\n  const resourcesWithNs = Object.keys(resources).reduce<Resource>((acc, key) => {\n    acc[key] = { translation: resources[key] };\n    return acc;\n  }, {});\n\n  const instance = i18next.createInstance({\n    lng: activeLocale,\n    keySeparator: '$',\n    interpolation: { escapeValue: false },\n    resources: resourcesWithNs,\n  });\n  instance.init();\n  return instance;\n}\n\ntype StringResources = {\n  [locale: string]: { [key: string]: string };\n};\n\nfunction addDefaultsFromEnglish(resources: StringResources) {\n  const english = resources.en;\n\n  return Object.keys(resources).reduce<StringResources>((acc, locale) => {\n    acc[locale] = { ...english, ...resources[locale] };\n    return acc;\n  }, {});\n}\n","import { flow } from 'fp-ts-esm/function';\n\nimport type { Node } from './../../ricos-schema/next-schema/index.js';\n\nimport type { Extractor } from '../extractor-infra.js';\nimport { getExtractor } from '../extractor-infra.js';\n\nconst nodesAccessor = (node: Node): Node[] =>\n  Array.isArray(node.nodes) ? (node.nodes as Node[]) : [];\n\nconst getRootNode = (nodes: Node | Node[]): Node =>\n  Array.isArray(nodes)\n    ? ({\n        id: 'root',\n        type: 'UNRECOGNIZED',\n        nodes,\n      } as unknown as Node)\n    : nodes;\n\nexport const extract: (nodes: Node | Node[]) => Extractor<Node> = flow(\n  getRootNode,\n  getExtractor<Node>(nodesAccessor)\n);\n","import type { ReactElement } from 'react';\nimport React, { Fragment, Suspense } from 'react';\n\nimport { extract } from './../../../ricos-content/RicosContentAPI/extract-next.js';\nimport type { GalleryData_Item, RichContent } from './../../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport type { RicosDocument, RicosDocumentNode } from './../../../ricos-schema/next-schema/index.js';\nimport { Node_Type } from './../../../ricos-schema/next-schema/index.js';\nimport type {\n  AvailableExperiments,\n  FullscreenProps,\n  Helpers,\n  LegacyViewerPluginConfig,\n  TFunction,\n} from './../../../ricos-types/index.js';\n\nimport type { FullscreenModalItem } from './fullscreen-modal.js';\n\ninterface Props {\n  children: (args: { config: LegacyViewerPluginConfig; onHover: () => void }) => ReactElement;\n  config: LegacyViewerPluginConfig;\n  helpers?: Helpers;\n  content?: RichContent;\n  isMobile: boolean;\n  fullscreenProps?: FullscreenProps;\n\n  experiments?: AvailableExperiments;\n  jsdomMode?: boolean;\n  t: TFunction;\n}\n\ntype ExpandModeData = {\n  images: GalleryData_Item[];\n  imageMap: Record<string, number>;\n};\n\nconst loadFullscreenModal = () =>\n  import(/* webpackChunkName: \"ricos_FullscreenModalViewer\"  */ './fullscreen-modal.js');\n\nconst FullscreenModal = React.lazy(loadFullscreenModal);\n\nexport const FullscreenProvider: React.FC<Props> = props => {\n  const { children, isMobile, fullscreenProps, content } = props;\n  const [state, setState] = React.useState<\n    | {\n        type: 'open';\n        activeIndex: number;\n      }\n    | { type: 'closed' }\n  >({ type: 'closed' });\n\n  const expandModeData: ExpandModeData = React.useMemo(() => {\n    if (content) {\n      return getImagesData(content as RicosDocument);\n    } else {\n      return { images: [], imageMap: {} };\n    }\n  }, [props.content]);\n\n  const addExpand = (config: LegacyViewerPluginConfig) => {\n    const onExpand = (nodeId: string, innerIndex = 0) => {\n      setState({\n        type: 'open',\n        activeIndex: expandModeData ? expandModeData.imageMap[nodeId] + innerIndex : 0,\n      });\n    };\n    const newConfig = { ...config };\n    const imageConfig = config['wix-draft-plugin-image'];\n    const galleryConfig = config['wix-draft-plugin-gallery'];\n    if (imageConfig && !imageConfig.onExpand) {\n      newConfig['wix-draft-plugin-image'] = { ...imageConfig, onExpand };\n    }\n    if (galleryConfig && !galleryConfig.onExpand) {\n      newConfig['wix-draft-plugin-gallery'] = { ...galleryConfig, onExpand };\n    }\n    return newConfig;\n  };\n\n  return (\n    <Fragment>\n      {children({ config: addExpand(props.config), onHover: () => loadFullscreenModal() })}\n      {state.type === 'open' && (\n        <Suspense fallback={<div />}>\n          <FullscreenModal\n            images={expandModeData.images}\n            onClose={() => setState({ type: 'closed' })}\n            index={state.activeIndex}\n            isMobile={isMobile}\n            {...fullscreenProps}\n            jsdomMode={props.jsdomMode}\n            t={props.t}\n          />\n        </Suspense>\n      )}\n    </Fragment>\n  );\n};\n\nconst getImagesData = (\n  content: RicosDocument\n): {\n  images: FullscreenModalItem[];\n  imageMap: Record<string, number>;\n} => {\n  const imagesData: { images: FullscreenModalItem[]; imageMap: Record<string, number> } = {\n    images: [],\n    imageMap: {},\n  };\n  let index = 0;\n\n  return extract(content.nodes)\n    .filter(node => [Node_Type.IMAGE, Node_Type.GALLERY].includes(node.type as any))\n    .get()\n    .reduce((items, node) => {\n      const { images, imageMap } = items;\n      const galleryItems = convertDataToGalleryItems(node);\n      const currentIndex = index;\n\n      index += galleryItems.length;\n\n      return {\n        images: [...images, ...galleryItems],\n        imageMap: {\n          ...imageMap,\n          // @TODO: currently indexing doesn't work when nodes don't have ids\n          [node.id ?? '']: currentIndex,\n        },\n      };\n    }, imagesData);\n};\n\nconst convertDataToGalleryItems = (node: RicosDocumentNode): FullscreenModalItem[] => {\n  switch (node.type) {\n    case Node_Type.IMAGE:\n      return node.imageData.image?.src && !node.imageData?.disableExpand\n        ? [\n            {\n              image: { media: { ...node.imageData.image } },\n              disableDownload: node.imageData.disableDownload,\n              altText: node.imageData.altText,\n            },\n          ]\n        : [];\n    case Node_Type.GALLERY: {\n      return node.galleryData?.disableExpand\n        ? []\n        : node.galleryData.items.map((item): FullscreenModalItem => {\n            // @ts-expect-error will be fixed in full migration to next-schema\n            return { ...item, disableDownload: node.galleryData.disableDownload };\n          });\n    }\n    default:\n      return [];\n  }\n};\n","export default {\n\t\"ar\": {\n\t\t\"VerticalEmbed_Products_Button\": \"شراء الآن\",\n\t\t\"VerticalEmbed_Events_Button\": \"تسجيل الآن\",\n\t\t\"VerticalEmbed_Bookings_Button\": \"حجز الآن\",\n\t\t\"UploadFile_Viewer_Download\": \"تنزيل {{fileType}}\",\n\t\t\"VerticalEmbed_Units_Hour\": \"{{hours}} س\",\n\t\t\"VerticalEmbed_Units_Minute\": \"{{minutes}} د\"\n\t},\n\t\"bg\": {\n\t\t\"VerticalEmbed_Products_Button\": \"Купете сега\",\n\t\t\"VerticalEmbed_Events_Button\": \"Регистрирайте се сега\",\n\t\t\"VerticalEmbed_Bookings_Button\": \"Резервирайте сега\",\n\t\t\"UploadFile_Viewer_Download\": \"Изтегляне на {{fileType}}\",\n\t\t\"VerticalEmbed_Units_Hour\": \"{{hours}}ч.\",\n\t\t\"VerticalEmbed_Units_Minute\": \"{{minutes}}мин.\"\n\t},\n\t\"ca\": {\n\t\t\"VerticalEmbed_Products_Button\": \"Compra ara\",\n\t\t\"VerticalEmbed_Events_Button\": \"Registra't ara\",\n\t\t\"VerticalEmbed_Bookings_Button\": \"Reserva ara\",\n\t\t\"UploadFile_Viewer_Download\": \"Baixa {{fileType}}\",\n\t\t\"VerticalEmbed_Units_Hour\": \"{{hours}} h\",\n\t\t\"VerticalEmbed_Units_Minute\": \"{{minutes}} min\"\n\t},\n\t\"cs\": {\n\t\t\"VerticalEmbed_Products_Button\": \"Koupit\",\n\t\t\"VerticalEmbed_Events_Button\": \"Registrovat\",\n\t\t\"VerticalEmbed_Bookings_Button\": \"Rezervovat\",\n\t\t\"UploadFile_Viewer_Download\": \"Stáhnout {{fileType}}\",\n\t\t\"VerticalEmbed_Units_Hour\": \"{{hours}} h\",\n\t\t\"VerticalEmbed_Units_Minute\": \"{{minutes}} min\"\n\t},\n\t\"da\": {\n\t\t\"VerticalEmbed_Products_Button\": \"Køb nu\",\n\t\t\"VerticalEmbed_Events_Button\": \"Tilmeld dig\",\n\t\t\"VerticalEmbed_Bookings_Button\": \"Book nu\",\n\t\t\"UploadFile_Viewer_Download\": \"Download {{fileType}}\",\n\t\t\"VerticalEmbed_Units_Hour\": \"{{hours}} t\",\n\t\t\"VerticalEmbed_Units_Minute\": \"{{minutes}} min\"\n\t},\n\t\"de\": {\n\t\t\"VerticalEmbed_Products_Button\": \"Jetzt kaufen\",\n\t\t\"VerticalEmbed_Events_Button\": \"Jetzt anmelden\",\n\t\t\"VerticalEmbed_Bookings_Button\": \"Jetzt buchen\",\n\t\t\"UploadFile_Viewer_Download\": \"{{fileType}} herunterladen\",\n\t\t\"VerticalEmbed_Units_Hour\": \"{{hours}} Std.\",\n\t\t\"VerticalEmbed_Units_Minute\": \"{{minutes}} Min.\"\n\t},\n\t\"el\": {\n\t\t\"VerticalEmbed_Products_Button\": \"Αγορά τώρα\",\n\t\t\"VerticalEmbed_Events_Button\": \"Εγγραφείτε τώρα\",\n\t\t\"VerticalEmbed_Bookings_Button\": \"Κάντε κράτηση τώρα\",\n\t\t\"UploadFile_Viewer_Download\": \"Λήψη {{fileType}}\",\n\t\t\"VerticalEmbed_Units_Hour\": \"{{hours}}ω\",\n\t\t\"VerticalEmbed_Units_Minute\": \"{{minutes}} λεπτά\"\n\t},\n\t\"en\": {\n\t\t\"Poll_Viewer_VoteCount_Modal_Voters_Private_Voter\": \"Private User\",\n\t\t\"Poll_Viewer_ShowAllOptions_CTA\": \"See All Options\",\n\t\t\"Spoiler_Reveal_Tooltip\": \"Click to reveal\",\n\t\t\"VerticalEmbed_Event_Error_Subtitle\": \"This event has been deleted, replace it with another event.\",\n\t\t\"Viewer_Toolbar_Twitter_Tooltip\": \"Tweet this\",\n\t\t\"CollapsibleListPlugin_CollapseButton_AriaLabel\": \"Item is collapsed\",\n\t\t\"Spoiler_Reveal_Video_CTA\": \"Reveal Video\",\n\t\t\"VerticalEmbed_Pricing_Plan\": \"Plan only\",\n\t\t\"Image_Expand_Button_AriaLabel\": \"Expand image\",\n\t\t\"VerticalEmbed_From_Price\": \"From\",\n\t\t\"Poll_Viewer_ShowAllResults_CTA\": \"See All Results\",\n\t\t\"Spoiler_Reveal_Image_Placeholder\": \"This image contains a spoiler\",\n\t\t\"VerticalEmbed_Ribbon\": \"Sale\",\n\t\t\"Audio_Plugin_Elapsed_Time_Slider_AriaLabel\": \"Seek slider\",\n\t\t\"VerticalEmbed_Error_Subtitle\": \"This item has been deleted, replace it with another item.\",\n\t\t\"Poll_Viewer_Multiselect_Footer\": \"You can vote for more than one answer.\",\n\t\t\"Audio_Plugin_More_Actions_Button_AriaLabel\": \"Show more audio controls\",\n\t\t\"VerticalEmbed_Booking_Fetch_Error_Title\": \"Service couldn’t be loaded\",\n\t\t\"Fullscreen_Close_Button_AriaLabel\": \"Close\",\n\t\t\"VerticalEmbed_Event_Fetch_Error_Title\": \"Event couldn't be loaded\",\n\t\t\"UploadFile_Viewer_Loader\": \"Loading {{fileType}}\",\n\t\t\"Polls_Plugin_User_Avatar_Alt\": \"User avatar\",\n\t\t\"Preview_ReadMore_Label\": \"Read more\",\n\t\t\"Spoiler_Insert_Tooltip\": \"Spoiler\",\n\t\t\"VerticalEmbed_Product_Fetch_Error_Title\": \"Product couldn’t be loaded\",\n\t\t\"Fullscreen_Shrink_Button_AriaLabel\": \"Shrink\",\n\t\t\"Audio_Plugin_Volume_Control_Slider_AriaLabel\": \"Volume\",\n\t\t\"Spoiler_Reveal_Gallery_Placeholder\": \"This gallery contains a spoiler\",\n\t\t\"Fullscreen_Expand_Button_AriaLabel\": \"Expand\",\n\t\t\"VerticalEmbed_Bookings_Button\": \"Book Now\",\n\t\t\"Audio_Plugin_Volume_Control_Unmute_AriaLabel\": \"Unmute\",\n\t\t\"Spoiler_Reveal_Gallery_CTA\": \"Reveal Gallery\",\n\t\t\"Poll_Viewer_ShowLess_CTA\": \"Show Less\",\n\t\t\"VerticalEmbed_Disabled_Button_Tooltip\": \"Product page will be available once you publish your site.\",\n\t\t\"Audio_Plugin_Volume_Control_Mute_AriaLabel\": \"Mute\",\n\t\t\"Poll_Viewer_VoteCount_Modal_Voters_Anonymous\": \"+{{anonNumber}} anonymous\",\n\t\t\"Poll_Viewer_VoteCount_Modal_Voters_CTA_Follow\": \"Follow\",\n\t\t\"VerticalEmbed_Products_Button\": \"Buy Now\",\n\t\t\"Poll_Viewer_Toast_Error_ServerDown\": \"Couldn't connect to server. Try again later.\",\n\t\t\"Poll_Viewer_VoteCount_Modal_Voters_Header\": \"{{count}} person voted for this answer\",\n\t\t\"Poll_Viewer_VoteCount\": \"{{number}} votes\",\n\t\t\"VerticalEmbed_Events_Button\": \"Register Now\",\n\t\t\"Spoiler_Reveal_Image_CTA\": \"Reveal Image\",\n\t\t\"Poll_Viewer_Toast_Error_Connection\": \"No internet. Check your connection.\",\n\t\t\"Poll_Viewer_Visibility_Owner_Footer\": \"Only you can see the results.\",\n\t\t\"VerticalEmbed_Booking_Error_Title\": \"Service deleted\",\n\t\t\"VerticalEmbed_Product_Error_Title\": \"Product deleted\",\n\t\t\"VerticalEmbed_Fetch_Error_Subtitle\": \"Unable to load item information.\",\n\t\t\"Poll_Viewer_VoteCount_Modal_Voters_Header_plural\": \"{{count}} people voted for this answer\",\n\t\t\"VerticalEmbed_Event_Error_Title\": \"Event deleted\",\n\t\t\"CollapsibleListPlugin_ExpandButton_AriaLabel\": \"Item is expanded\",\n\t\t\"Audio_Plugin_Cover_Alt\": \"Audio cover\",\n\t\t\"Spoiler_Reveal_Video_Placeholder\": \"This video contains a spoiler\",\n\t\t\"VerticalEmbed_Product_Fetch_Error_Subtitle\": \"There was a technical issue. Check your connection or try again.\",\n\t\t\"VerticalEmbed_Fetch_Error_Title\": \"Failed to load item\",\n\t\t\"Poll_Viewer_Option_AriaLabel_Unchecked\": \"unchecked\",\n\t\t\"VerticalEmbed_Product_Error_Subtitle\": \"This product has been deleted, replace it with another product.\",\n\t\t\"VerticalEmbed_Booking_Error_Subtitle\": \"This service has been deleted, replace it with another service.\",\n\t\t\"Preview_SeeFullPost_Label\": \"See Full Post\",\n\t\t\"UploadFile_Viewer_Download\": \"Download {{fileType}}\",\n\t\t\"VerticalEmbed_Units_Hour\": \"{{hours}}h\",\n\t\t\"VerticalEmbed_Units_Minute\": \"{{minutes}}min\",\n\t\t\"VerticalEmbed_Event_Fetch_Error_Subtitle\": \"There was a technical issue. Check your connection or try again.\",\n\t\t\"VerticalEmbed_Error_Button\": \"Replace\",\n\t\t\"VerticalEmbed_Error_Title\": \"Item deleted\",\n\t\t\"VerticalEmbed_Booking_Fetch_Error_Subtitle\": \"There was a technical issue. Check your connection or try again.\",\n\t\t\"Poll_Viewer_Option_AriaLabel_Checked\": \"checked\"\n\t},\n\t\"es\": {\n\t\t\"VerticalEmbed_Products_Button\": \"Comprar ahora\",\n\t\t\"VerticalEmbed_Events_Button\": \"Registrarse\",\n\t\t\"VerticalEmbed_Bookings_Button\": \"Reservar ahora\",\n\t\t\"UploadFile_Viewer_Download\": \"Descargar {{fileType}}\",\n\t\t\"VerticalEmbed_Units_Hour\": \"{{hours}}h\",\n\t\t\"VerticalEmbed_Units_Minute\": \"{{minutes}}min\"\n\t},\n\t\"fi\": {\n\t\t\"VerticalEmbed_Products_Button\": \"Osta nyt\",\n\t\t\"VerticalEmbed_Events_Button\": \"Rekisteröidy nyt\",\n\t\t\"VerticalEmbed_Bookings_Button\": \"Varaa nyt\",\n\t\t\"UploadFile_Viewer_Download\": \"Lataa {{fileType}}\",\n\t\t\"VerticalEmbed_Units_Hour\": \"{{hours}} t\",\n\t\t\"VerticalEmbed_Units_Minute\": \"{{minutes}} min\"\n\t},\n\t\"fr\": {\n\t\t\"VerticalEmbed_Products_Button\": \"Acheter\",\n\t\t\"VerticalEmbed_Events_Button\": \"S'inscrire\",\n\t\t\"VerticalEmbed_Bookings_Button\": \"Réserver\",\n\t\t\"UploadFile_Viewer_Download\": \"Télécharger {{fileType}}\",\n\t\t\"VerticalEmbed_Units_Hour\": \"{{hours}} h\",\n\t\t\"VerticalEmbed_Units_Minute\": \"{{minutes}} min\"\n\t},\n\t\"he\": {\n\t\t\"VerticalEmbed_Products_Button\": \"לקנייה\",\n\t\t\"VerticalEmbed_Events_Button\": \"להרשמה\",\n\t\t\"VerticalEmbed_Bookings_Button\": \"הזמינו עכשיו\",\n\t\t\"UploadFile_Viewer_Download\": \"הורידו את {{fileType}}\",\n\t\t\"VerticalEmbed_Units_Hour\": \"{{hours}} שעות\",\n\t\t\"VerticalEmbed_Units_Minute\": \"{{minutes}} דקות\"\n\t},\n\t\"hi\": {\n\t\t\"VerticalEmbed_Products_Button\": \"अभी खरीदें\",\n\t\t\"VerticalEmbed_Events_Button\": \"अभी पंजीकरण करें\",\n\t\t\"VerticalEmbed_Bookings_Button\": \"अभी बुक करें\",\n\t\t\"UploadFile_Viewer_Download\": \"{{fileType}} डाउनलोड करें\",\n\t\t\"VerticalEmbed_Units_Hour\": \"{{hours}}h\",\n\t\t\"VerticalEmbed_Units_Minute\": \"{{minutes}}मिनट\"\n\t},\n\t\"hr\": {\n\t\t\"VerticalEmbed_Products_Button\": \"Kupi odmah\",\n\t\t\"VerticalEmbed_Events_Button\": \"Prijavi se odmah\",\n\t\t\"VerticalEmbed_Bookings_Button\": \"Rezerviraj odmah\",\n\t\t\"UploadFile_Viewer_Download\": \"Preuzmi {{fileType}}\",\n\t\t\"VerticalEmbed_Units_Hour\": \"{{hours}}h\",\n\t\t\"VerticalEmbed_Units_Minute\": \"{{minutes}}min\"\n\t},\n\t\"hu\": {\n\t\t\"VerticalEmbed_Products_Button\": \"Vásárlás most\",\n\t\t\"VerticalEmbed_Events_Button\": \"Regisztráció most\",\n\t\t\"VerticalEmbed_Bookings_Button\": \"Foglalás most\",\n\t\t\"UploadFile_Viewer_Download\": \"{{fileType}} letöltése\",\n\t\t\"VerticalEmbed_Units_Hour\": \"{{hours}} óra\",\n\t\t\"VerticalEmbed_Units_Minute\": \"{{minutes}} perc\"\n\t},\n\t\"id\": {\n\t\t\"VerticalEmbed_Products_Button\": \"Beli Sekarang\",\n\t\t\"VerticalEmbed_Events_Button\": \"Daftar Sekarang\",\n\t\t\"VerticalEmbed_Bookings_Button\": \"Pesan Sekarang\",\n\t\t\"UploadFile_Viewer_Download\": \"Unduh {{fileType}}\",\n\t\t\"VerticalEmbed_Units_Hour\": \"{{hours}}j\",\n\t\t\"VerticalEmbed_Units_Minute\": \"{{minutes}}mnt\"\n\t},\n\t\"it\": {\n\t\t\"VerticalEmbed_Products_Button\": \"Acquista\",\n\t\t\"VerticalEmbed_Events_Button\": \"Registrati\",\n\t\t\"VerticalEmbed_Bookings_Button\": \"Prenota\",\n\t\t\"UploadFile_Viewer_Download\": \"Scarica {{fileType}}\",\n\t\t\"VerticalEmbed_Units_Hour\": \"{{hours}} h\",\n\t\t\"VerticalEmbed_Units_Minute\": \"{{minutes}} min\"\n\t},\n\t\"ja\": {\n\t\t\"VerticalEmbed_Products_Button\": \"購入する\",\n\t\t\"VerticalEmbed_Events_Button\": \"今すぐ登録\",\n\t\t\"VerticalEmbed_Bookings_Button\": \"今すぐ予約\",\n\t\t\"UploadFile_Viewer_Download\": \"ダウンロード：{{fileType}}\",\n\t\t\"VerticalEmbed_Units_Hour\": \"{{hours}}時間\",\n\t\t\"VerticalEmbed_Units_Minute\": \"{{minutes}}分\"\n\t},\n\t\"ko\": {\n\t\t\"VerticalEmbed_Products_Button\": \"구매하기\",\n\t\t\"VerticalEmbed_Events_Button\": \"등록하기\",\n\t\t\"VerticalEmbed_Bookings_Button\": \"예약하기\",\n\t\t\"UploadFile_Viewer_Download\": \"{{fileType}} 다운로드\",\n\t\t\"VerticalEmbed_Units_Hour\": \"{{hours}}시간\",\n\t\t\"VerticalEmbed_Units_Minute\": \"{{minutes}}분\"\n\t},\n\t\"lt\": {\n\t\t\"VerticalEmbed_Products_Button\": \"Pirkti\",\n\t\t\"VerticalEmbed_Events_Button\": \"Registruotis\",\n\t\t\"VerticalEmbed_Bookings_Button\": \"Užsakyti\",\n\t\t\"UploadFile_Viewer_Download\": \"Atsisiųsti {{fileType}}\",\n\t\t\"VerticalEmbed_Units_Hour\": \"{{hours}} val.\",\n\t\t\"VerticalEmbed_Units_Minute\": \"{{minutes}} min.\"\n\t},\n\t\"lv\": {\n\t\t\"VerticalEmbed_Products_Button\": \"Pērciet tūlīt\",\n\t\t\"VerticalEmbed_Events_Button\": \"Reģistrējieties tūlīt\",\n\t\t\"VerticalEmbed_Bookings_Button\": \"Rezervējiet tūlīt\",\n\t\t\"UploadFile_Viewer_Download\": \"Lejupielādēt {{fileType}}\",\n\t\t\"VerticalEmbed_Units_Hour\": \"{{hours}} h\",\n\t\t\"VerticalEmbed_Units_Minute\": \"{{minutes}} min\"\n\t},\n\t\"ms\": {\n\t\t\"VerticalEmbed_Products_Button\": \"Beli Sekarang\",\n\t\t\"VerticalEmbed_Events_Button\": \"Daftar Sekarang\",\n\t\t\"VerticalEmbed_Bookings_Button\": \"Tempah Sekarang\",\n\t\t\"UploadFile_Viewer_Download\": \"Muat turun {{fileType}}\",\n\t\t\"VerticalEmbed_Units_Hour\": \"{{jam}}j\",\n\t\t\"VerticalEmbed_Units_Minute\": \"{{minit}}min\"\n\t},\n\t\"nl\": {\n\t\t\"VerticalEmbed_Products_Button\": \"Nu kopen\",\n\t\t\"VerticalEmbed_Events_Button\": \"Nu registreren\",\n\t\t\"VerticalEmbed_Bookings_Button\": \"Nu boeken\",\n\t\t\"UploadFile_Viewer_Download\": \"Download {{fileType}}\",\n\t\t\"VerticalEmbed_Units_Hour\": \"{{uur}}u\",\n\t\t\"VerticalEmbed_Units_Minute\": \"{{minuten}}min\"\n\t},\n\t\"no\": {\n\t\t\"VerticalEmbed_Products_Button\": \"Kjøp nå\",\n\t\t\"VerticalEmbed_Events_Button\": \"Registrer deg nå\",\n\t\t\"VerticalEmbed_Bookings_Button\": \"Book nå\",\n\t\t\"UploadFile_Viewer_Download\": \"Last ned {{fileType}}\",\n\t\t\"VerticalEmbed_Units_Hour\": \"{{hours}}t\",\n\t\t\"VerticalEmbed_Units_Minute\": \"{{minutes}}min\"\n\t},\n\t\"pl\": {\n\t\t\"VerticalEmbed_Products_Button\": \"Kup teraz\",\n\t\t\"VerticalEmbed_Events_Button\": \"Zarejestruj się teraz\",\n\t\t\"VerticalEmbed_Bookings_Button\": \"Zarezerwuj teraz\",\n\t\t\"UploadFile_Viewer_Download\": \"Pobierz {{fileType}}\",\n\t\t\"VerticalEmbed_Units_Hour\": \"{{hours}}h\",\n\t\t\"VerticalEmbed_Units_Minute\": \"{{minutes}}min\"\n\t},\n\t\"pt\": {\n\t\t\"VerticalEmbed_Products_Button\": \"Comprar\",\n\t\t\"VerticalEmbed_Events_Button\": \"Registrar-se\",\n\t\t\"VerticalEmbed_Bookings_Button\": \"Agendar\",\n\t\t\"UploadFile_Viewer_Download\": \"Fazer download de {{fileType}}\",\n\t\t\"VerticalEmbed_Units_Hour\": \"{{hours}}h\",\n\t\t\"VerticalEmbed_Units_Minute\": \"{{minutes}}min\"\n\t},\n\t\"ro\": {\n\t\t\"VerticalEmbed_Products_Button\": \"Cumpără acum\",\n\t\t\"VerticalEmbed_Events_Button\": \"Înregistrează-te acum\",\n\t\t\"VerticalEmbed_Bookings_Button\": \"Rezervă acum\",\n\t\t\"UploadFile_Viewer_Download\": \"Descarcă {{fileType}}\",\n\t\t\"VerticalEmbed_Units_Hour\": \"{{hours}} h\",\n\t\t\"VerticalEmbed_Units_Minute\": \"{{minutes}} min\"\n\t},\n\t\"ru\": {\n\t\t\"VerticalEmbed_Products_Button\": \"Купить\",\n\t\t\"VerticalEmbed_Events_Button\": \"Зарегистрироваться\",\n\t\t\"VerticalEmbed_Bookings_Button\": \"Забронировать\",\n\t\t\"UploadFile_Viewer_Download\": \"Скачать {{fileType}}\",\n\t\t\"VerticalEmbed_Units_Hour\": \"{{hours}} ч.\",\n\t\t\"VerticalEmbed_Units_Minute\": \"{{minutes}} мин.\"\n\t},\n\t\"sk\": {\n\t\t\"VerticalEmbed_Products_Button\": \"Kúpiť teraz\",\n\t\t\"VerticalEmbed_Events_Button\": \"Zaregistrujte sa teraz\",\n\t\t\"VerticalEmbed_Bookings_Button\": \"Rezervovať teraz\",\n\t\t\"UploadFile_Viewer_Download\": \"Stiahnuť {{fileType}}\",\n\t\t\"VerticalEmbed_Units_Hour\": \"{{hours}}h\",\n\t\t\"VerticalEmbed_Units_Minute\": \"{{minutes}}min\"\n\t},\n\t\"sl\": {\n\t\t\"VerticalEmbed_Products_Button\": \"Kupi zdaj\",\n\t\t\"VerticalEmbed_Events_Button\": \"Registrirajte se zdaj\",\n\t\t\"VerticalEmbed_Bookings_Button\": \"Rezerviraj zdaj\",\n\t\t\"UploadFile_Viewer_Download\": \"Prenos {{fileType}}\",\n\t\t\"VerticalEmbed_Units_Hour\": \"{{hours}}h\",\n\t\t\"VerticalEmbed_Units_Minute\": \"{{minutes}} min\"\n\t},\n\t\"sv\": {\n\t\t\"VerticalEmbed_Products_Button\": \"Köp nu\",\n\t\t\"VerticalEmbed_Events_Button\": \"Registrera dig nu\",\n\t\t\"VerticalEmbed_Bookings_Button\": \"Boka nu\",\n\t\t\"UploadFile_Viewer_Download\": \"Ladda ner {{fileType}}\",\n\t\t\"VerticalEmbed_Units_Hour\": \"{{hours}} t\",\n\t\t\"VerticalEmbed_Units_Minute\": \"{{minutes}} min\"\n\t},\n\t\"th\": {\n\t\t\"VerticalEmbed_Products_Button\": \"ซื้อเลย\",\n\t\t\"VerticalEmbed_Events_Button\": \"ลงทะเบียนตอนนี้\",\n\t\t\"VerticalEmbed_Bookings_Button\": \"จองเลย\",\n\t\t\"UploadFile_Viewer_Download\": \"ดาวน์โหลด {{fileType}}\",\n\t\t\"VerticalEmbed_Units_Hour\": \"{{hours}} ชม.\",\n\t\t\"VerticalEmbed_Units_Minute\": \"{{minutes}} นาที\"\n\t},\n\t\"tl\": {\n\t\t\"VerticalEmbed_Products_Button\": \"Bumili Na\",\n\t\t\"VerticalEmbed_Events_Button\": \"Magparehistro Na\",\n\t\t\"VerticalEmbed_Bookings_Button\": \"Mag-book Na\",\n\t\t\"UploadFile_Viewer_Download\": \"I-download ang {{fileType}}\",\n\t\t\"VerticalEmbed_Units_Hour\": \"{{hours}}h\",\n\t\t\"VerticalEmbed_Units_Minute\": \"{{minutes}}min\"\n\t},\n\t\"tr\": {\n\t\t\"VerticalEmbed_Products_Button\": \"Satın Al\",\n\t\t\"VerticalEmbed_Events_Button\": \"Hemen Kaydol\",\n\t\t\"VerticalEmbed_Bookings_Button\": \"Yer Ayırt\",\n\t\t\"UploadFile_Viewer_Download\": \"{{fileType}} dosyasını indir\",\n\t\t\"VerticalEmbed_Units_Hour\": \"{{hours}} sa.\",\n\t\t\"VerticalEmbed_Units_Minute\": \"{{minutes}} dk.\"\n\t},\n\t\"uk\": {\n\t\t\"VerticalEmbed_Products_Button\": \"Купити зараз\",\n\t\t\"VerticalEmbed_Events_Button\": \"Зареєструватися\",\n\t\t\"VerticalEmbed_Bookings_Button\": \"Записатися\",\n\t\t\"UploadFile_Viewer_Download\": \"Завантажити {{fileType}}\",\n\t\t\"VerticalEmbed_Units_Hour\": \"{{hours}} год.\",\n\t\t\"VerticalEmbed_Units_Minute\": \"{{minutes}} хв.\"\n\t},\n\t\"vi\": {\n\t\t\"VerticalEmbed_Products_Button\": \"Mua ngay\",\n\t\t\"VerticalEmbed_Events_Button\": \"Đăng ký ngay\",\n\t\t\"VerticalEmbed_Bookings_Button\": \"Đặt ngay\",\n\t\t\"UploadFile_Viewer_Download\": \"Tải về {{fileType}}\",\n\t\t\"VerticalEmbed_Units_Hour\": \"{{hours}} giờ\",\n\t\t\"VerticalEmbed_Units_Minute\": \"{{minutes}} phút\"\n\t},\n\t\"zh\": {\n\t\t\"VerticalEmbed_Products_Button\": \"立即購買\",\n\t\t\"VerticalEmbed_Events_Button\": \"立即報名\",\n\t\t\"VerticalEmbed_Bookings_Button\": \"立即預訂\",\n\t\t\"UploadFile_Viewer_Download\": \"下載 {{fileType}}\",\n\t\t\"VerticalEmbed_Units_Hour\": \"{{hours}} 小時\",\n\t\t\"VerticalEmbed_Units_Minute\": \"{{minutes}} 分鐘\"\n\t}\n}","/* oxlint-disable jsx-a11y/no-static-element-interactions */\n/* oxlint-disable jsx-a11y/mouse-events-have-key-events */\n/* oxlint-disable jsx-a11y/aria-props */\n/* oxlint-disable jsx-a11y/no-noninteractive-element-interactions */\nimport classNames from 'classnames';\nimport React, { useCallback, useLayoutEffect, useRef, useState } from 'react';\n\nimport { SPOILER_TYPE } from './../../ricos-content/index.js';\nimport type { RichContent } from './../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport { buildThemeCssVars } from './../../ricos-styles/index.js';\nimport type {\n  NodeViewDecorator,\n  NodeViewRenderers,\n  ViewerContextualData,\n} from './../../ricos-types/index.js';\nimport {\n  AccessibilityListener,\n  GlobalContext,\n  getLangDir,\n} from './../../wix-rich-content-common/index.js';\n\nimport viewerStyles from '../statics/rich-content-viewer-scss.js';\nimport rtlStyles from '../statics/rtl-scss.js';\nimport type { ContentViewerProps } from '../types.js';\nimport AddAnchors from './components/AddAnchors.js';\nimport ContentTraverser from './ContentTraverser.js';\n\nconst styles = { ...viewerStyles, ...rtlStyles };\n\nconst ContentViewer: React.FC<ContentViewerProps> = props => {\n  const {\n    config = {},\n    onHover,\n    isMobile = false,\n    addAnchors,\n    onMouseOver = () => {},\n    content,\n    setRef,\n    typeMappers,\n    nodeViewRenderers,\n    nodeViewDecorators,\n    experiments = {},\n    t,\n  } = props;\n\n  const [minHeight, setMinHeight] = useState<number | undefined>(undefined);\n  const viewerRef = useRef<HTMLDivElement | null>(null);\n  const contentRef = useRef<HTMLDivElement | null>(null);\n\n  // SAFARI BUG FIX: Safari jumps to wrong scroll position during rerenders\n  // ResizeObserver watches inner content and applies min-height to outer viewer container to prevent jumping\n  useLayoutEffect(() => {\n    const isSafari = /Safari/.test(navigator.userAgent) && !/Chrome/.test(navigator.userAgent);\n    if (!isSafari || !contentRef.current) {\n      return;\n    }\n\n    const resizeObserver = new ResizeObserver(entries => {\n      const newHeight = entries[0].contentRect.height;\n      if (newHeight > 0) {\n        setMinHeight(newHeight);\n      }\n    });\n\n    resizeObserver.observe(contentRef.current);\n\n    return () => {\n      resizeObserver.disconnect();\n    };\n  }, [content]);\n\n  const handleRef = useCallback(\n    (node: HTMLDivElement | null) => {\n      viewerRef.current = node;\n      if (setRef) {\n        (setRef as React.MutableRefObject<HTMLDivElement | null>).current = node;\n      }\n    },\n    [setRef]\n  );\n\n  const SpoilerViewerWrapper = config[SPOILER_TYPE]?.SpoilerViewerWrapper;\n  const contextualData = getContextualData(props);\n\n  const viewerClassName = classNames(styles.viewer, {\n    [rtlStyles.rtl]: contextualData.textDirection === 'rtl',\n  });\n\n  const style = buildThemeCssVars(contextualData.theme, content?.documentStyle ?? {});\n\n  const dataId = { 'data-id': 'content-viewer' };\n\n  return (\n    <GlobalContext.Provider key={'RicosViewer'} value={{ experiments, isMobile, t }}>\n      <div\n        className={classNames(styles.wrapper)}\n        dir={contextualData.languageDir}\n        style={{\n          ...style,\n          minHeight: minHeight ? `${minHeight}px` : undefined,\n        }}\n        onMouseEnter={e => onHover && onHover(e)}\n        onMouseOver={onMouseOver}\n        ref={handleRef}\n        {...dataId}\n      >\n        {props.devTools}\n        <div className={viewerClassName} ref={contentRef}>\n          <AddAnchors addAnchors={addAnchors}>\n            <ContentTraverser\n              content={content as RichContent}\n              typeMappers={typeMappers}\n              context={contextualData}\n              nodeViewRenderers={nodeViewRenderers as NodeViewRenderers}\n              nodeViewDecorators={nodeViewDecorators as NodeViewDecorator<JSX.Element>[]}\n              SpoilerViewerWrapper={SpoilerViewerWrapper}\n            />\n          </AddAnchors>\n        </div>\n        <AccessibilityListener isMobile={isMobile} />\n      </div>\n    </GlobalContext.Provider>\n  );\n};\n\nconst getContextualData = ({\n  t,\n  theme,\n  plugins,\n  isMobile = false,\n  anchorTarget,\n  relValue,\n  customAnchorScroll,\n  config,\n  locale,\n  disabled,\n  seoMode,\n  iframeSandboxDomain,\n  textAlignment,\n  experiments,\n  textDirection,\n  direction,\n  helpers,\n  onNodeClick,\n  jsdomMode,\n  baseUrl,\n  isPrint,\n}: ContentViewerProps): ViewerContextualData => {\n  return {\n    t,\n    theme: theme || {},\n    isMobile,\n    anchorTarget,\n    relValue,\n    customAnchorScroll,\n    config,\n    helpers: helpers || {},\n    locale: locale || 'en',\n    disabled,\n    seoMode: seoMode ?? (isPrint ? {} : undefined),\n    iframeSandboxDomain,\n    disableRightClick: config?.uiSettings?.disableRightClick,\n    textAlignment,\n    experiments,\n    textDirection,\n    languageDir: direction || getLangDir(locale),\n    onNodeClick,\n    jsdomMode,\n    baseUrl,\n    isPrint,\n    plugins,\n  };\n};\n\nexport default ContentViewer;\n","export default {\n  \"fontElementMap\": \"WrFa3\",\n  \"wrapper\": \"M4zTR\",\n  \"pluginContainerMobile\": \"_8Ea50\",\n  \"viewer\": \"IdchG\",\n  \"android\": \"BUQTH\",\n  \"rootedTraversedContent\": \"OWEgq\",\n  \"atomic\": \"ZL8rf\",\n  \"toolbar\": \"MZGeE\",\n  \"block\": \"Jza3-\"\n};","export default {\n  \"rtl\": \"_5EGMs\",\n  \"ltr\": \"nTL-N\"\n};","import React from 'react';\n\nimport type { Node } from './../../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport { Node_Type } from './../../../ricos-schema/legacy/wix/rich_content/v1/index.js';\n\nexport const Anchor = React.memo<{\n  anchorKey: string;\n  type?: string;\n}>(({ anchorKey, type }) => (\n  // oxlint-disable-next-line @typescript-oxlint/ban-ts-comment\n  // @ts-ignore\n  <div key={anchorKey} type={type} data-hook={anchorKey} /> //'type' attribute is for wix corvid\n));\n\nconst isEmptyRichTextNode = (node: Node) =>\n  [Node_Type.PARAGRAPH, Node_Type.HEADING, Node_Type.BLOCKQUOTE, Node_Type.CODE_BLOCK].includes(\n    node.type\n  ) && !node.nodes?.length;\n\nexport const getAnchor = (node: Node, nodeIndex: number, addAnchorsPrefix: string) => {\n  const anchorType = isEmptyRichTextNode(node) ? 'empty-line' : node.type.toLowerCase();\n  const anchorKey = `${addAnchorsPrefix}${nodeIndex + 1}`;\n  return <Anchor key={anchorKey} type={anchorType} anchorKey={anchorKey} />;\n};\n","import type { FC, ReactElement } from 'react';\nimport React, { Children, cloneElement } from 'react';\n\nimport { Anchor } from './Anchor.js';\n\ntype Props = {\n  addAnchors?: boolean | string;\n  children: ReactElement;\n};\n\nconst AddAnchors: FC<Props> = ({ addAnchors, children }) => {\n  if (addAnchors) {\n    const addAnchorsPrefix = addAnchors && (addAnchors === true ? 'rcv-block' : addAnchors);\n    const firstAnchorKey = `${addAnchorsPrefix}-first`;\n    const lastAnchorKey = `${addAnchorsPrefix}-last`;\n    return (\n      <>\n        <Anchor type={'first'} anchorKey={firstAnchorKey} />\n        {cloneElement(Children.only(children), { addAnchorsPrefix })}\n        <Anchor type={'last'} anchorKey={lastAnchorKey} />\n      </>\n    );\n  }\n  return children;\n};\n\nexport default AddAnchors;\n","import React, { useMemo } from 'react';\n\nimport {\n  ContentTraverserContextProvider,\n  RicosAlignmentContextProvider,\n  RicosContextProvider,\n  RicosNodeContextProvider,\n  RicosViewerContextProvider,\n  SpoilerContextProvider,\n  VisibleIndentationContextProvider,\n  ZIndexContextProvider,\n} from './../../ricos-context/index.js';\nimport { NodeTreeMapContextProvider } from './../../ricos-context/viewer/NodeTreeMapContext.js';\nimport { ZIndexService } from './../../ricos-styles/index.js';\nimport { BiHelpersProvider } from './../../_shared/bi-helpers-context/bi-helpers-context.js';\nimport { isDefined } from './../../wix-rich-content-common/index.js';\n\nimport styles from '../statics/rich-content-viewer-scss.js';\nimport NodeViewDecorators, { getDecorators } from './rericos/decorators/index.js';\nimport renderers from './rericos/renderers/index.js';\nimport { getPluginRenderers } from './rericos/renderers/plugins/index.js';\nimport { SpoilerManager } from './rericos/utils/SpoilerManager.js';\nimport RicosNodesRenderer from './RicosNodesRenderer.js';\nimport type { ContentTraverserProps } from './types.js';\n\nconst ContentTraverser = ({\n  content,\n  context,\n  typeMappers,\n  nodeViewRenderers,\n  nodeViewDecorators,\n  SpoilerViewerWrapper,\n  addAnchorsPrefix,\n}: ContentTraverserProps) => {\n  // When AI streams sometimes we get empty nodes, so we filter them out here\n  const nodes = (content.nodes ?? []).filter(isDefined);\n\n  const spoilerManager = new SpoilerManager();\n\n  const allRenderers = useMemo(\n    () => ({\n      ...renderers,\n      ...getPluginRenderers(context, typeMappers, nodeViewRenderers, SpoilerViewerWrapper),\n    }),\n    []\n  );\n  const allDecorators = useMemo(() => {\n    const decorators = getDecorators(context.plugins);\n    return NodeViewDecorators.of([...decorators, ...nodeViewDecorators], context);\n  }, [context]);\n\n  const ricosContext = useMemo(() => {\n    const { t, locale, isMobile, theme, experiments, languageDir, jsdomMode } = context;\n    return {\n      t,\n      locale,\n      localeContent: locale,\n      isMobile,\n      theme,\n      experiments,\n      languageDir,\n      jsdomMode,\n      tabIndex: 0,\n    };\n  }, [\n    context.t,\n    context.locale,\n    context.isMobile,\n    context.theme,\n    context.experiments,\n    context.languageDir,\n    context.jsdomMode,\n  ]);\n\n  const zIndexService = useMemo(() => {\n    return new ZIndexService(context.isMobile, context.theme.settingsStyles);\n  }, []);\n\n  return (\n    <>\n      <RicosContextProvider {...ricosContext}>\n        <ZIndexContextProvider zIndexService={zIndexService}>\n          <ContentTraverserContextProvider\n            nodeViewDecorators={allDecorators}\n            renderers={allRenderers}\n            SpoilerViewerWrapper={SpoilerViewerWrapper}\n          >\n            <RicosViewerContextProvider contextualData={context}>\n              <BiHelpersProvider helpers={context.helpers || {}}>\n                <RicosAlignmentContextProvider textAlignment={context.textAlignment}>\n                  <SpoilerContextProvider spoilerManager={spoilerManager}>\n                    <VisibleIndentationContextProvider visibleIndentation={null}>\n                      <RicosNodeContextProvider parentNode={null} parentIndex={0}>\n                        <NodeTreeMapContextProvider nodes={nodes}>\n                          <div className={styles.rootedTraversedContent}>\n                            <RicosNodesRenderer\n                              nodes={nodes}\n                              isRoot\n                              addAnchorsPrefix={addAnchorsPrefix}\n                              shouldParagraphApplyTextStyle\n                            />\n                          </div>\n                        </NodeTreeMapContextProvider>\n                      </RicosNodeContextProvider>\n                    </VisibleIndentationContextProvider>\n                  </SpoilerContextProvider>\n                </RicosAlignmentContextProvider>\n              </BiHelpersProvider>\n            </RicosViewerContextProvider>\n          </ContentTraverserContextProvider>\n        </ZIndexContextProvider>\n      </RicosContextProvider>\n    </>\n  );\n};\n\nexport default ContentTraverser;\n","import React from 'react';\n\nimport type { Node } from './../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport { Decoration_Type } from './../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport type { BoldDecoration, NodeViewDecorator } from './../../ricos-types/index.js';\n\nconst decorator = (boldDecoration: BoldDecoration, element?: JSX.Element) => {\n  const { fontWeightValue } = boldDecoration;\n  return (\n    <strong key={`bold-${element?.key}`} style={{ fontWeight: fontWeightValue || 700 }}>\n      {element}\n    </strong>\n  );\n};\n\nconst BoldDecorator: NodeViewDecorator<JSX.Element> = {\n  rule: (node: Node) =>\n    !!node.textData?.decorations?.some(({ type }) => type === Decoration_Type.BOLD),\n  decorate: ({ element, node }) => {\n    const boldDecoration = node.textData?.decorations?.find(\n      ({ type }) => type === Decoration_Type.BOLD\n    ) as BoldDecoration;\n    return decorator(boldDecoration, element);\n  },\n};\n\nexport default BoldDecorator;\n","import React from 'react';\n\nimport type { Node } from './../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport { Decoration_Type } from './../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport type { FontSizeDecoration, NodeViewDecorator } from './../../ricos-types/index.js';\n\nimport type { FontSizeCommonConfig } from './types.js';\n\nconst decorator = (\n  element: JSX.Element,\n  fontSizeDecoration: FontSizeDecoration,\n  config?: FontSizeCommonConfig\n) => {\n  const { unit, value } = fontSizeDecoration.fontSizeData || {};\n  const fontSize =\n    config?.overrideInlineFontSize && value\n      ? config.overrideInlineFontSize(value?.toString() ?? '', unit)\n      : `${value}${unit ? unit.toLowerCase() : 'px'}`;\n\n  return (\n    <span\n      key={`fontsize-${element.key}`}\n      style={{\n        fontSize,\n      }}\n    >\n      {element}\n    </span>\n  );\n};\n\nconst createFontSizeDecorator = (\n  config?: FontSizeCommonConfig\n): NodeViewDecorator<JSX.Element> => ({\n  rule: (node: Node) =>\n    !!node.textData?.decorations?.some(({ type }) => type === Decoration_Type.FONT_SIZE),\n  decorate: ({ element, node }) => {\n    const fontSizeDecoration = node.textData?.decorations?.find(\n      ({ type }) => type === Decoration_Type.FONT_SIZE\n    ) as FontSizeDecoration;\n    return decorator(element as JSX.Element, fontSizeDecoration, config);\n  },\n});\n\nexport { createFontSizeDecorator };\n","import React from 'react';\n\nimport type { Node } from './../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport { Decoration_Type } from './../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport type { ItalicDecoration, NodeViewDecorator } from './../../ricos-types/index.js';\n\nconst decorator = (element: JSX.Element, italicDecoration: ItalicDecoration) => {\n  const { italicData } = italicDecoration;\n  const isItalic = typeof italicData === 'undefined' || italicData;\n  return (\n    <em key={`italic-${element.key}`} style={{ fontStyle: isItalic ? 'italic' : 'normal' }}>\n      {element}\n    </em>\n  );\n};\n\nconst ItalicDecorator: NodeViewDecorator<JSX.Element> = {\n  rule: (node: Node) =>\n    !!node.textData?.decorations?.some(({ type }) => type === Decoration_Type.ITALIC),\n  decorate: ({ element, node }) => {\n    const italicDecoration = node.textData?.decorations?.find(\n      ({ type }) => type === Decoration_Type.ITALIC\n    ) as ItalicDecoration;\n    return decorator(element as JSX.Element, italicDecoration);\n  },\n};\n\nexport default ItalicDecorator;\n","import React from 'react';\n\nimport type { Node } from './../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport { Decoration_Type } from './../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport type { NodeViewDecorator, StrikethroughDecoration } from './../../ricos-types/index.js';\n\nconst decorator = (element: JSX.Element, strikethroughDecoration: StrikethroughDecoration) => {\n  const { strikethroughData } = strikethroughDecoration;\n  const isStrikethrough = typeof strikethroughData === 'undefined' || strikethroughData;\n  return (\n    <s\n      key={`strikethrough-${element?.key}`}\n      style={{ textDecoration: isStrikethrough ? 'line-through' : 'none' }}\n    >\n      {element}\n    </s>\n  );\n};\n\nconst StrikethroughDecorator: NodeViewDecorator<JSX.Element> = {\n  rule: (node: Node) =>\n    !!node.textData?.decorations?.some(({ type }) => type === Decoration_Type.STRIKETHROUGH),\n  decorate: ({ element, node }) => {\n    const strikethroughDecoration = node.textData?.decorations?.find(\n      ({ type }) => type === Decoration_Type.STRIKETHROUGH\n    ) as StrikethroughDecoration;\n    return decorator(element as JSX.Element, strikethroughDecoration);\n  },\n};\n\nexport default StrikethroughDecorator;\n","import React from 'react';\n\nimport type { Node } from './../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport { Decoration_Type } from './../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport type { SubscriptDecoration } from './../../ricos-schema/next-schema/generated/ricos_document.js';\nimport type { NodeViewDecorator } from './../../ricos-types/index.js';\n\nconst decorator = (element: JSX.Element, subscriptDecoration: SubscriptDecoration) => {\n  const { subscriptData } = subscriptDecoration;\n  const isSubscript = typeof subscriptData === 'undefined' || subscriptData;\n  return isSubscript ? <sub key={`subscript-${element?.key}`}>{element}</sub> : element;\n};\n\nconst SubscriptDecorator: NodeViewDecorator<JSX.Element> = {\n  rule: (node: Node) =>\n    !!node.textData?.decorations?.some(({ type }) => type === Decoration_Type.SUBSCRIPT),\n  decorate: ({ element, node }) => {\n    const subscriptDecoration = node.textData?.decorations?.find(\n      ({ type }) => type === Decoration_Type.SUBSCRIPT\n    ) as SubscriptDecoration;\n    return decorator(element as JSX.Element, subscriptDecoration);\n  },\n};\n\nexport default SubscriptDecorator;\n","import React from 'react';\n\nimport type { Node } from './../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport { Decoration_Type } from './../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport type { SuperscriptDecoration } from './../../ricos-schema/next-schema/generated/ricos_document.js';\nimport type { NodeViewDecorator } from './../../ricos-types/index.js';\n\nconst decorator = (element: JSX.Element, superscriptDecoration: SuperscriptDecoration) => {\n  const { superscriptData } = superscriptDecoration;\n  const isSuperscript = typeof superscriptData === 'undefined' || superscriptData;\n  return isSuperscript ? <sup key={`superscript-${element?.key}`}>{element}</sup> : element;\n};\n\nconst SuperscriptDecorator: NodeViewDecorator<JSX.Element> = {\n  rule: (node: Node) =>\n    !!node.textData?.decorations?.some(({ type }) => type === Decoration_Type.SUPERSCRIPT),\n  decorate: ({ element, node }) => {\n    const superscriptDecoration = node.textData?.decorations?.find(\n      ({ type }) => type === Decoration_Type.SUPERSCRIPT\n    ) as SuperscriptDecoration;\n    return decorator(element as JSX.Element, superscriptDecoration);\n  },\n};\n\nexport default SuperscriptDecorator;\n","import React from 'react';\n\nimport type { Node } from './../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport { Decoration_Type } from './../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport type { NodeViewDecorator, UnderlineDecoration } from './../../ricos-types/index.js';\n\nconst decorator = (element: JSX.Element, underlineDecoration: UnderlineDecoration) => {\n  const { underlineData } = underlineDecoration;\n  const isUnderline = typeof underlineData === 'undefined' || underlineData;\n  return (\n    <u key={element.key} style={{ textDecoration: isUnderline ? 'underline' : 'none' }}>\n      {element}\n    </u>\n  );\n};\n\nconst UnderlineDecorator: NodeViewDecorator<JSX.Element> = {\n  rule: (node: Node) =>\n    !!node.textData?.decorations?.some(({ type }) => type === Decoration_Type.UNDERLINE),\n  decorate: ({ element, node }) => {\n    const underlineDecoration = node.textData?.decorations?.find(\n      ({ type }) => type === Decoration_Type.UNDERLINE\n    ) as UnderlineDecoration;\n    return decorator(element as JSX.Element, underlineDecoration);\n  },\n  priority: 2,\n};\n\nexport default UnderlineDecorator;\n","import type { NodeViewDecorator, ViewerPlugin } from './../ricos-types/index.js';\nimport type { ViewerPluginOptions, FontSizePluginConfig } from './../ricos-viewer-next/types.js';\n\nimport BoldDecorator from './bold/viewer.js';\nimport type { FontSizeCommonConfig } from './font-size/types.js';\nimport { createFontSizeDecorator } from './font-size/viewer.js';\nimport ItalicDecorator from './italic/viewer.js';\nimport StrikethroughDecorator from './strikethrough/viewer.js';\nimport SubscriptDecorator from './subscript/viewer.js';\nimport SuperscriptDecorator from './superscript/viewer.js';\nimport UnderlineDecorator from './underline/viewer.js';\n\nexport const getNodeViewDecorators = (\n  plugins?: (ViewerPlugin | ViewerPluginOptions)[]\n): NodeViewDecorator<JSX.Element>[] => {\n  const fontSizePluginConfig = plugins?.find(\n    (plugin): plugin is FontSizePluginConfig => plugin.type === 'fontSize'\n  );\n  return [\n    BoldDecorator,\n    ItalicDecorator,\n    UnderlineDecorator,\n    createFontSizeDecorator(fontSizePluginConfig),\n    StrikethroughDecorator,\n    SubscriptDecorator,\n    SuperscriptDecorator,\n  ];\n};\n","import React from 'react';\n\nimport type { NodeViewDecorator } from './../../../../ricos-types/index.js';\n\nexport const BreakoutDecorator: NodeViewDecorator<JSX.Element> = {\n  rule: () => true,\n  decorate: ({ node, element, isRoot, context }) => {\n    if (!isRoot) {\n      return <>{element}</>;\n    }\n    const breakoutSettings = context.theme.breakout;\n    if (!breakoutSettings) {\n      return <>{element}</>;\n    }\n    const breakout = breakoutSettings.rule({ node });\n    return <div {...{ 'data-breakout': breakout }}>{element}</div>;\n  },\n};\n","import type { Node } from './../../../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport type { NodeViewDecorator, ViewerContextualData } from './../../../../ricos-types/index.js';\n\nexport class Decorators<T> {\n  private decorators: NodeViewDecorator<T>[] = [];\n\n  private textualDecorators: NodeViewDecorator<T>[] = [];\n\n  private context: ViewerContextualData;\n\n  private static readonly defaultPriority = 100;\n\n  private constructor(decorators: NodeViewDecorator<T>[], context: ViewerContextualData) {\n    // With ProseMirror, first plugins within an array are executed first.\n    // In Tiptap, there is an ability to override plugins,\n    // so it feels more natural to run plugins at the end of an array first.\n    // That’s why we have to reverse the `extensions` array and sort again\n    // based on the `priority` option.\n    this.decorators = decorators\n      .filter(decorator => !decorator.isText)\n      .sort(Decorators.sort)\n      .reverse();\n    this.textualDecorators = decorators.filter(decorator => decorator.isText);\n    this.context = context;\n  }\n\n  // sort function must be aligned with Tiptap sort to ensure correct Editor and Viewer decorations order\n  // https://github.com/ueberdosis/tiptap/blob/develop/packages/core/src/ExtensionManager.ts#L160\n  static sort<T>(a: NodeViewDecorator<T>, b: NodeViewDecorator<T>) {\n    const priorityA = a.priority ?? Decorators.defaultPriority;\n    const priorityB = b.priority ?? Decorators.defaultPriority;\n\n    if (priorityA > priorityB) {\n      return -1;\n    }\n\n    if (priorityA < priorityB) {\n      return 1;\n    }\n\n    return 0;\n  }\n\n  static of<T>(decorators: NodeViewDecorator<T>[], context: ViewerContextualData): Decorators<T> {\n    return new Decorators(decorators, context);\n  }\n\n  getDecorators(): NodeViewDecorator<T>[] {\n    return this.decorators;\n  }\n\n  merge(decorators: Decorators<T>): Decorators<T> {\n    return Decorators.of([...this.decorators, ...decorators.getDecorators()], this.context);\n  }\n\n  apply(element: T, node: Node, isRoot: boolean): T {\n    return this.decorators.reduce((decorated, decorator) => {\n      if (decorator.rule(node)) {\n        return decorator.decorate({ node, context: this.context, element: decorated, isRoot });\n      }\n      return decorated;\n    }, element);\n  }\n\n  applyTextual(node: Node): T | undefined {\n    const decorator = this.textualDecorators.find(decorator => decorator.rule(node));\n    return decorator?.decorate({ node, context: this.context, isRoot: false });\n  }\n}\n","import { getNodeViewDecorators } from './../../../../ricos-common-plugins/viewer.js';\nimport type { NodeViewDecorator, ViewerPlugin } from './../../../../ricos-types/index.js';\nimport type { ViewerPluginOptions } from './../../../types.js';\n\nimport { BreakoutDecorator } from './breakoutDecorator.js';\nimport { Decorators as NodeViewDecorators } from './nodeViewDecorators.js';\n\nexport const getDecorators = (\n  plugins?: (ViewerPlugin | ViewerPluginOptions)[]\n): NodeViewDecorator<JSX.Element>[] => [...getNodeViewDecorators(plugins), BreakoutDecorator];\n\nexport default NodeViewDecorators;\n","import { Node_Type } from './../../../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport type { NodeViewRenderers } from './../../../../ricos-types/index.js';\n\nimport BlockquoteRenderer from './blockquote/blockquote.js';\nimport CodeBlockRenderer from './codeblock/codeblock.js';\nimport HeadingRenderer from './heading/heading.js';\nimport { LayoutCellRenderer } from './layout/cell.js';\nimport { LayoutRenderer } from './layout/layout.js';\nimport BulletedListRenderer from './lists/bulletedList.js';\nimport ListItemRenderer from './lists/listItem.js';\nimport OrderedListRenderer from './lists/orderedList.js';\nimport ParagraphRenderer from './paragraph/paragraph.js';\nimport TextRenderer from './text/text.js';\n\nconst renderers: NodeViewRenderers = {\n  [Node_Type.PARAGRAPH]: ParagraphRenderer,\n  [Node_Type.TEXT]: TextRenderer,\n  [Node_Type.BLOCKQUOTE]: BlockquoteRenderer,\n  [Node_Type.CODE_BLOCK]: CodeBlockRenderer,\n  [Node_Type.HEADING]: HeadingRenderer,\n  [Node_Type.BULLETED_LIST]: BulletedListRenderer,\n  [Node_Type.ORDERED_LIST]: OrderedListRenderer,\n  [Node_Type.LIST_ITEM]: ListItemRenderer,\n  [Node_Type.LAYOUT]: LayoutRenderer,\n  [Node_Type.LAYOUT_CELL]: LayoutCellRenderer,\n} as unknown as NodeViewRenderers;\n\nexport default renderers;\n","import classnames from 'classnames';\nimport type { FC } from 'react';\nimport React, { useContext } from 'react';\n\nimport { getTextDirection } from './../../../../../ricos-content/index.js';\nimport {\n  RicosNodeContext,\n  RicosNodeContextProvider,\n  RicosViewerContext,\n} from './../../../../../ricos-context/index.js';\nimport type { Node } from './../../../../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport type { NodeViewRenderer, NodeViewRendererProps } from './../../../../../ricos-types/index.js';\n\nimport indentStyle from '../../../../statics/indentation-scss.js';\nimport Anchorable from '../../utils/Anchorable.js';\nimport { getPaywallSeoClass, isPaywallSeo } from '../../utils/paywallSeo.js';\nimport { alignmentToFlex, indentLevelToClassName } from '../consts.js';\nimport styles from './blockquote-scss.js';\n\nconst Blockquote: FC<NodeViewRendererProps> = ({ node, nodeIndex, RicosNodesRenderer }) => {\n  const { seoMode } = useContext(RicosViewerContext);\n  const { parentNode } = useContext(RicosNodeContext);\n  const { indentation = 0 } = node.blockquoteData || {};\n  const firstChild = node.nodes?.[0];\n  const dataProperty = `${firstChild?.type?.toLowerCase()}Data`;\n  const { textAlignment } =\n    (firstChild?.[dataProperty as $TSFixMeKey<Node>] as $TSFixMe)?.textStyle || {};\n\n  const indentClassName: string | undefined =\n    indentLevelToClassName[indentation as keyof typeof indentLevelToClassName];\n\n  const BlockquoteClassName = classnames(\n    styles.quote,\n    indentation > 0 && indentStyle[indentClassName],\n    !parentNode && isPaywallSeo(seoMode) && getPaywallSeoClass(seoMode?.paywall || {}, nodeIndex)\n  );\n  const childClassName = styles.child;\n\n  return (\n    <Anchorable nodeId={node.id}>\n      <div\n        className={styles.quoteContainer}\n        style={{\n          justifyContent: alignmentToFlex[textAlignment as $TSFixMeKey<typeof alignmentToFlex>],\n        }}\n        dir={getTextDirection(node.nodes?.[0]?.nodes?.[0]?.textData?.text) || 'ltr'}\n      >\n        <blockquote className={BlockquoteClassName} style={node.style}>\n          <span className={childClassName}>\n            <RicosNodeContextProvider parentNode={node} parentIndex={nodeIndex}>\n              <RicosNodesRenderer nodes={node.nodes ?? []} />\n            </RicosNodeContextProvider>\n          </span>\n        </blockquote>\n      </div>\n    </Anchorable>\n  );\n};\n\nconst BlockquoteRenderer: NodeViewRenderer = ({ node, ...props }) => {\n  return <Blockquote key={node.id} node={node} {...props} />;\n};\n\nexport default BlockquoteRenderer;\n","export default {\n  \"indentZero\": \"bOLt2\",\n  \"indentOne\": \"SDDve\",\n  \"indentTwo\": \"boKgI\",\n  \"indentThree\": \"samIr\",\n  \"indentFour\": \"l3jBN\",\n  \"indentFive\": \"abxX0\",\n  \"indentSix\": \"_0kKPd\"\n};","import type { FC, ReactElement } from 'react';\nimport React from 'react';\n\ntype AnchorableProps = {\n  nodeId: string;\n  children: ReactElement;\n};\n\nconst Anchorable: FC<AnchorableProps> = ({ nodeId, children }) => {\n  return React.cloneElement(React.Children.only(children), { id: `viewer-${nodeId}` });\n};\n\nexport default Anchorable;\n","import type { SEOSettings } from './../../../../ricos-types/index.js';\n\nexport const getPaywallSeoClass = ({ className = 'paywall', index = 3 }, nodeIndex: number) =>\n  nodeIndex < index && className;\n\nexport const isPaywallSeo = (seoMode?: SEOSettings) =>\n  typeof seoMode === 'object' && typeof seoMode?.paywall === 'object';\n","import { TextStyle_TextAlignment } from './../../../../ricos-schema/legacy/wix/rich_content/v1/index.js';\n\nexport const indentLevelToClassName = {\n  0: 'indentZero',\n  1: 'indentOne',\n  2: 'indentTwo',\n  3: 'indentThree',\n  4: 'indentFour',\n  5: 'indentFive',\n  6: 'indentSix',\n};\n\nexport const alignmentToFlex = {\n  [TextStyle_TextAlignment.LEFT]: 'left',\n  [TextStyle_TextAlignment.CENTER]: 'center',\n  [TextStyle_TextAlignment.RIGHT]: 'right',\n  [TextStyle_TextAlignment.JUSTIFY]: 'flex-start',\n};\n","export default {\n  \"fontElementMap\": \"ohQfq\",\n  \"quoteContainer\": \"g5urf\",\n  \"quote\": \"MDhob\"\n};","import classnames from 'classnames';\nimport type { FC } from 'react';\nimport React, { useContext } from 'react';\n\nimport {\n  RicosAlignmentContext,\n  RicosNodeContext,\n  RicosNodeContextProvider,\n  RicosViewerContext,\n} from './../../../../../ricos-context/index.js';\nimport type { NodeStyle } from './../../../../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport { TextStyle_TextAlignment } from './../../../../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport type { NodeViewRenderer, NodeViewRendererProps } from './../../../../../ricos-types/index.js';\nimport { normalizeLineHeight } from './../../../../../_shared/line-spacing-utils.js';\n\nimport alignmentStyle from '../../../../statics/alignment-scss.js';\nimport Anchorable from '../../utils/Anchorable.js';\nimport { getPaywallSeoClass, isPaywallSeo } from '../../utils/paywallSeo.js';\nimport styles from './codeblock-scss.js';\n\nconst CodeBlock: FC<NodeViewRendererProps> = ({ node, nodeIndex, RicosNodesRenderer }) => {\n  const { seoMode } = useContext(RicosViewerContext);\n  const { textAlignment: parentAlignment } = useContext(RicosAlignmentContext);\n  const { parentNode } = useContext(RicosNodeContext);\n  const { textAlignment, lineHeight } = node.codeBlockData?.textStyle || {};\n  const codeBlockClassName = classnames(\n    styles.codeBlock,\n    alignmentStyle[textAlignment || parentAlignment || TextStyle_TextAlignment.AUTO],\n    !parentNode && isPaywallSeo(seoMode) && getPaywallSeoClass(seoMode?.paywall || {}, nodeIndex)\n  );\n\n  const nodeStyle: NodeStyle & { lineHeight?: string } = {\n    ...node.style,\n    ...(lineHeight && { lineHeight: normalizeLineHeight(lineHeight) }),\n  };\n  return (\n    <Anchorable nodeId={node.id}>\n      <pre className={codeBlockClassName} style={nodeStyle} dir=\"auto\">\n        <span\n          className={classnames(\n            textAlignment === TextStyle_TextAlignment.JUSTIFY && alignmentStyle[textAlignment]\n          )}\n        >\n          <RicosNodeContextProvider parentNode={node} parentIndex={nodeIndex}>\n            <RicosNodesRenderer nodes={node.nodes ?? []} />\n          </RicosNodeContextProvider>\n        </span>\n      </pre>\n    </Anchorable>\n  );\n};\n\nconst CodeBlockRenderer: NodeViewRenderer = ({ node, ...props }) => {\n  return <CodeBlock key={node.id} node={node} {...props} />;\n};\n\nexport default CodeBlockRenderer;\n","export default {\n  \"alignLeft\": \"RjvN5\",\n  \"textWrapNowrap\": \"f6Dgm\",\n  \"alignRight\": \"_4e696\",\n  \"alignCenter\": \"xfPnQ\",\n  \"sizeFullWidth\": \"GXEs5\",\n  \"renderedInTable\": \"N6lsh\",\n  \"sizeOriginal\": \"WCuSu\",\n  \"sizeContent\": \"Le05-\",\n  \"sizeSmall\": \"vn-02\",\n  \"sizeSmallCenter\": \"zruZZ\",\n  \"flex\": \"vJc2R\",\n  \"LEFT\": \"qvGEn\",\n  \"CENTER\": \"_5Ugti\",\n  \"RIGHT\": \"knYaR\",\n  \"AUTO\": \"hRuKg\",\n  \"JUSTIFY\": \"xO7IS\"\n};","export default {\n  \"blockStyleSpacing\": \"-y0Ax\",\n  \"codeBlock\": \"MX5cE -y0Ax\",\n  \"renderedInTable\": \"bUrLq\"\n};","import classnames from 'classnames';\nimport type { FC } from 'react';\nimport React, { useContext } from 'react';\n\nimport {\n  RicosAlignmentContext,\n  RicosDirectionHandledContext,\n  RicosNodeContext,\n  RicosNodeContextProvider,\n  RicosViewerContext,\n} from './../../../../../ricos-context/index.js';\nimport type { NodeStyle } from './../../../../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport { TextStyle_TextAlignment } from './../../../../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport type { NodeViewRenderer, NodeViewRendererProps } from './../../../../../ricos-types/index.js';\nimport { normalizeLineHeight } from './../../../../../_shared/line-spacing-utils.js';\n\nimport alignmentStyle from '../../../../statics/alignment-scss.js';\nimport indentStyle from '../../../../statics/indentation-scss.js';\nimport Anchorable from '../../utils/Anchorable.js';\nimport { getPaywallSeoClass, isPaywallSeo } from '../../utils/paywallSeo.js';\nimport { indentLevelToClassName } from '../consts.js';\nimport styles from './heading-scss.js';\n\nexport const levelToClassName = {\n  1: 'headerOne',\n  2: 'headerTwo',\n  3: 'headerThree',\n  4: 'headerFour',\n  5: 'headerFive',\n  6: 'headerSix',\n};\n\nconst levelToTag = {\n  1: 'h1',\n  2: 'h2',\n  3: 'h3',\n  4: 'h4',\n  5: 'h5',\n  6: 'h6',\n} as const;\n\nconst FALLBACK_LEVEL = 1;\n\nconst Heading: FC<NodeViewRendererProps> = ({ node, nodeIndex, RicosNodesRenderer }) => {\n  const { seoMode } = useContext(RicosViewerContext);\n  const { textAlignment: parentAlignment } = useContext(RicosAlignmentContext);\n  const { parentNode } = useContext(RicosNodeContext);\n  const directionHandled = useContext(RicosDirectionHandledContext);\n  const { level = 0, textStyle, indentation = 0 } = node.headingData || {};\n  const { textAlignment, lineHeight } = textStyle || {};\n  const headingClassName = classnames(\n    styles[\n      levelToClassName[level as $TSFixMeKey<typeof levelToClassName>] ??\n        levelToClassName[FALLBACK_LEVEL]\n    ],\n    alignmentStyle[textAlignment || parentAlignment || TextStyle_TextAlignment.AUTO],\n    indentStyle[indentLevelToClassName[indentation as $TSFixMeKey<typeof indentLevelToClassName>]],\n    !parentNode && isPaywallSeo(seoMode) && getPaywallSeoClass(seoMode?.paywall || {}, nodeIndex)\n  );\n  const childClassName = classnames(\n    styles.child,\n    textAlignment === TextStyle_TextAlignment.JUSTIFY && alignmentStyle[textAlignment]\n  );\n\n  const Tag = levelToTag[level as $TSFixMeKey<typeof levelToTag>] ?? levelToTag[FALLBACK_LEVEL];\n  const nodeStyle: NodeStyle & { lineHeight?: string } = node.style ? { ...node.style } : {};\n  lineHeight && (nodeStyle.lineHeight = normalizeLineHeight(lineHeight));\n\n  const isEmpty = !node.nodes?.length;\n  const doesEndWithSoftLine =\n    !isEmpty && node.nodes?.[node.nodes.length - 1]?.textData?.text?.slice(-1) === '\\n';\n  const Content = isEmpty ? (\n    <br role=\"presentation\" />\n  ) : (\n    <RicosNodeContextProvider parentNode={node} parentIndex={nodeIndex}>\n      <RicosNodesRenderer key={`children-${node.id}`} nodes={node.nodes ?? []} />\n    </RicosNodeContextProvider>\n  );\n\n  return (\n    <Anchorable nodeId={node.id}>\n      <Tag className={headingClassName} style={nodeStyle} dir={directionHandled ? '' : 'auto'}>\n        <span className={childClassName}>{Content}</span>\n        {doesEndWithSoftLine && <br role=\"presentation\" />}\n      </Tag>\n    </Anchorable>\n  );\n};\n\nconst HeadingRenderer: NodeViewRenderer = ({ node, ...props }) => {\n  return <Heading key={node.id} node={node} {...props} />;\n};\n\nexport default HeadingRenderer;\n","export default {\n  \"fontElementMap\": \"_7rcNg\",\n  \"elementSpacing\": \"FSXm-\",\n  \"headerOne\": \"atuMU FSXm-\",\n  \"headerTwo\": \"p1u-O FSXm-\",\n  \"headerThree\": \"kdG50 FSXm-\",\n  \"headerFour\": \"dfIek FSXm-\",\n  \"headerFive\": \"KMWHx FSXm-\",\n  \"headerSix\": \"E1QJ- FSXm-\",\n  \"child\": \"_6WgLL\"\n};","import type { FC } from 'react';\nimport React from 'react';\n\nimport { RicosNodeContextProvider } from './../../../../../ricos-context/index.js';\nimport type { NodeViewRenderer, NodeViewRendererProps } from './../../../../../ricos-types/index.js';\n\nimport classes from './layout-scss.js';\n\nexport const LayoutCell: FC<NodeViewRendererProps> = ({ node, nodeIndex, RicosNodesRenderer }) => {\n  return (\n    <div className={classes.cell}>\n      <RicosNodeContextProvider parentNode={node} parentIndex={nodeIndex}>\n        <RicosNodesRenderer\n          key={`children-${node.id}`}\n          nodes={node.nodes ?? []}\n          shouldParagraphApplyTextStyle\n        />\n      </RicosNodeContextProvider>\n    </div>\n  );\n};\n\nexport const LayoutCellRenderer: NodeViewRenderer = ({ node, ...props }) => {\n  return <LayoutCell key={node.id} node={node} {...props} />;\n};\n","export default {\n  \"layoutWrapper\": \"L9cf6\",\n  \"layout\": \"vE9Ul\",\n  \"designOnLayout\": \"J9jpX\",\n  \"designOnCell\": \"lYWhc\",\n  \"cell\": \"NtaNa\",\n  \"mobile\": \"_2E8N3\"\n};","import classNames from 'classnames';\nimport type { CSSProperties, FC } from 'react';\nimport React, { useContext } from 'react';\n\nimport { getNormalizedColSpans } from './../../../../../ricos-common-plugins/layout/get-normalized-col-spans.js';\nimport {\n  LAYOUT_DEFAULTS,\n  normalizePadding,\n} from './../../../../../ricos-common-plugins/layout/shared-with-viewer.js';\nimport { RicosContext, RicosNodeContextProvider } from './../../../../../ricos-context/index.js';\nimport type { Node } from './../../../../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport type { LayoutNode } from './../../../../../ricos-schema/next-schema';\nimport type { NodeViewRenderer, NodeViewRendererProps } from './../../../../../ricos-types/index.js';\nimport { getImageSrc } from './../../../../../wix-rich-content-common/lib/imageUtils.js';\nimport { LayoutBackgroundLoader } from './../../../../../ui-components/layout-background-loader/layout-background-loader.js';\n\nimport styles from './layout-scss.js';\n\nconst PROMPT_URL_PREFIX = 'prompt://';\n\nconst isGeneratingImage = (media?: { src?: { id?: string; url?: string } }) => {\n  const src = media?.src?.id ?? media?.src?.url ?? '';\n  return typeof src === 'string' && src.startsWith(PROMPT_URL_PREFIX);\n};\n\nconst getGridTemplateColumnsTemplate = (node: Node) => {\n  const cols: number[] = [];\n\n  node.nodes.forEach(cell => {\n    if (cell.type === 'LAYOUT_CELL') {\n      cols.push(cell.layoutCellData?.colSpan ?? 0);\n    }\n  });\n\n  return getNormalizedColSpans(cols)\n    .map(col => `minmax(0, ${col}fr)`)\n    .join(' ');\n};\n\nconst getStyleContent = (node: LayoutNode) => {\n  // IMPORTANT: do not use \" or < in content as it will be encoded in SSR\n  const responsivenessBehaviour = {\n    STACK: 'stack',\n    WRAP: 'wrap',\n  }[node.layoutData?.responsivenessBehaviour ?? LAYOUT_DEFAULTS.responsivenessBehaviour];\n\n  const responsivenessBreakpoint =\n    node.layoutData?.responsivenessBreakpoint && !isNaN(node.layoutData?.responsivenessBreakpoint)\n      ? node.layoutData?.responsivenessBreakpoint\n      : LAYOUT_DEFAULTS.responsivenessBreakpoint;\n\n  const scopeValue = encodeURIComponent(\n    `layout-${node.id}-${responsivenessBreakpoint}-${responsivenessBehaviour}`\n  );\n  const isWrapping = responsivenessBehaviour === 'wrap';\n  const styleContent = `\n    [data-layout-scope=${scopeValue}].${styles.layout} {\n      --ricos-internal-layout-display: ${isWrapping ? 'flex' : 'grid'};\n      --ricos-internal-layout-justify-content: ${isWrapping ? 'center' : 'auto'};\n      --ricos-internal-layout-grid-template: grid-template-columns: minmax(0, 1fr);\n      --ricos-internal-layout-cell-min-width: ${\n        isWrapping ? `${Math.floor(responsivenessBreakpoint / node.nodes.length)}px` : '100%'\n      };\n      --ricos-internal-layout-cell-height: ${isWrapping ? 'auto' : '100%'};\n    }\n  `;\n\n  return {\n    scopeValue,\n    content: `\n@supports not (contain: inline-size) {\n  @media only screen and (max-width: ${responsivenessBreakpoint}px) {\n    ${styleContent}\n  }\n}\n\n@container (max-width: ${responsivenessBreakpoint}px) {\n  ${styleContent}\n}\n`,\n  };\n};\n\nexport const Layout: FC<NodeViewRendererProps> = ({ node, nodeIndex, RicosNodesRenderer }) => {\n  const { isMobile } = useContext(RicosContext);\n\n  const layoutData = node.type === 'LAYOUT' ? node.layoutData : undefined;\n  const backgroundMedia = layoutData?.backgroundImage?.media;\n  const backdropMedia = layoutData?.backdropImage?.media;\n  const isGeneratingBackground = isGeneratingImage(backgroundMedia);\n  const isGeneratingBackdrop = isGeneratingImage(backdropMedia);\n  const backgroundImageUrl =\n    !isGeneratingBackground &&\n    (backgroundMedia?.src?.url ??\n      (backgroundMedia?.src?.id &&\n        getImageSrc({ file_name: backgroundMedia.src.id }, undefined, {\n          requiredQuality: 100,\n          requiredWidth: Math.min(backgroundMedia?.width ?? 4000, 4000),\n          requiredHeight: Math.min(backgroundMedia?.height ?? 4000, 4000),\n        })));\n  const backdropImageUrl =\n    !isGeneratingBackdrop &&\n    (backdropMedia?.src?.url ??\n      (backdropMedia?.src?.id &&\n        getImageSrc({ file_name: backdropMedia.src.id }, undefined, {\n          requiredQuality: 100,\n          requiredWidth: Math.min(backdropMedia?.width ?? 4000, 4000),\n          requiredHeight: Math.min(backdropMedia?.height ?? 4000, 4000),\n        })));\n\n  const shouldShowLoader = isGeneratingBackground || isGeneratingBackdrop;\n\n  const style: CSSProperties = React.useMemo(() => {\n    if (node.type !== 'LAYOUT') {\n      return {};\n    }\n\n    const layoutData = node.layoutData;\n\n    const cellPadding = normalizePadding(layoutData?.cellPadding, [...LAYOUT_DEFAULTS.cellPadding]);\n    const cellVerticalAlignment =\n      layoutData?.cellVerticalAlignment ?? LAYOUT_DEFAULTS.cellVerticalAlignment;\n    const borderColor = layoutData?.borderColor ?? LAYOUT_DEFAULTS.borderColor;\n    const borderWidth = layoutData?.borderWidth ?? LAYOUT_DEFAULTS.borderWidth;\n\n    return {\n      ...(layoutData?.containerData?.width?.custom\n        ? { '--ricos-internal-layout-width': `${layoutData.containerData.width.custom}px` }\n        : {}),\n      ...(layoutData?.backgroundColor\n        ? {\n            '--ricos-internal-layout-background-color': layoutData.backgroundColor,\n          }\n        : {}),\n      ...(layoutData?.backgroundImage && backgroundImageUrl\n        ? {\n            '--ricos-internal-layout-background-image-src': `url(${backgroundImageUrl})`,\n            ...(layoutData.backgroundImage.opacity\n              ? {\n                  '--ricos-internal-layout-background-image-opacity': `${layoutData.backgroundImage.opacity}%`,\n                }\n              : {}),\n            ...(layoutData.backgroundImage.scaling\n              ? {\n                  '--ricos-internal-layout-background-image-scaling':\n                    layoutData.backgroundImage.scaling.toLowerCase(),\n                }\n              : {}),\n            ...(layoutData.backgroundImage.position\n              ? {\n                  '--ricos-internal-layout-background-image-position':\n                    layoutData.backgroundImage.position.toLowerCase().split('_').join(' '),\n                }\n              : {}),\n          }\n        : {}),\n      ...(borderColor\n        ? {\n            '--ricos-internal-layout-border-color': borderColor,\n            '--ricos-internal-layout-border-width': `${borderWidth}px`,\n          }\n        : {}),\n      ...(layoutData?.borderRadius\n        ? {\n            '--ricos-internal-layout-border-radius': `${layoutData.borderRadius}px`,\n          }\n        : {}),\n      ...(layoutData?.backdropColor\n        ? {\n            '--ricos-internal-layout-backdrop-color': layoutData.backdropColor,\n          }\n        : {}),\n      ...(layoutData?.backdropImage && backdropImageUrl\n        ? {\n            '--ricos-internal-layout-backdrop-image-src': `url(${backdropImageUrl})`,\n            ...(layoutData.backdropImage.opacity\n              ? {\n                  '--ricos-internal-layout-backdrop-image-opacity': `${layoutData.backdropImage.opacity}%`,\n                }\n              : {}),\n            ...(layoutData.backdropImage.scaling\n              ? {\n                  '--ricos-internal-layout-backdrop-image-scaling':\n                    layoutData.backdropImage.scaling.toLowerCase(),\n                }\n              : {}),\n            ...(layoutData.backdropImage.position\n              ? {\n                  '--ricos-internal-layout-backdrop-image-position':\n                    layoutData.backdropImage.position.toLowerCase().split('_').join(' '),\n                }\n              : {}),\n          }\n        : {}),\n      ...(typeof layoutData?.gap === 'number'\n        ? {\n            '--ricos-internal-layout-gap': `${layoutData.gap}px`,\n          }\n        : {}),\n      ...(layoutData?.backdropPaddingTop && layoutData.backdropPaddingTop > 0\n        ? {\n            '--ricos-internal-layout-backdrop-padding-top': `${layoutData.backdropPaddingTop}px`,\n          }\n        : {}),\n      ...(layoutData?.backdropPaddingBottom && layoutData.backdropPaddingBottom > 0\n        ? {\n            '--ricos-internal-layout-backdrop-padding-bottom': `${layoutData.backdropPaddingBottom}px`,\n          }\n        : {}),\n      ...(cellPadding && cellPadding.length > 0\n        ? {\n            '--ricos-internal-layout-cell-padding-top': `${cellPadding[0]}px`,\n            '--ricos-internal-layout-cell-padding-right': `${cellPadding[1] ?? cellPadding[0]}px`,\n            '--ricos-internal-layout-cell-padding-bottom': `${cellPadding[2] ?? cellPadding[0]}px`,\n            '--ricos-internal-layout-cell-padding-left': `${\n              cellPadding[3] ?? cellPadding[1] ?? cellPadding[0]\n            }px`,\n          }\n        : {}),\n      ...(cellVerticalAlignment\n        ? {\n            '--ricos-internal-layout-cell-vertical-alignment':\n              cellVerticalAlignment === 'TOP'\n                ? 'flex-start'\n                : cellVerticalAlignment === 'BOTTOM'\n                  ? 'flex-end'\n                  : 'center',\n          }\n        : {}),\n    } as CSSProperties;\n  }, [node, backgroundImageUrl, backdropImageUrl]);\n\n  const styleContent = React.useMemo(() => getStyleContent(node as LayoutNode), [node]);\n\n  return (\n    <div\n      className={styles.layoutWrapper}\n      style={style}\n      {...(node.layoutData?.banner ? { 'data-layout-banner': 'true' } : {})}\n    >\n      {shouldShowLoader && (\n        <LayoutBackgroundLoader\n          backgroundColor={layoutData?.backdropColor ?? layoutData?.backgroundColor ?? undefined}\n        />\n      )}\n      <style data-layout-style={node.id}>{styleContent.content}</style>\n      <div data-breakout=\"normal\">\n        <div\n          data-layout-scope={styleContent.scopeValue}\n          className={classNames(styles.layout, {\n            [styles.mobile]: isMobile,\n            [styles.designOnLayout]:\n              !node.layoutData?.designTarget || node.layoutData?.designTarget === 'LAYOUT',\n            [styles.designOnCell]: node.layoutData?.designTarget === 'CELL',\n          })}\n          style={\n            {\n              '--ricos-internal-layout-column-template': getGridTemplateColumnsTemplate(node),\n            } as CSSProperties\n          }\n        >\n          <RicosNodeContextProvider parentNode={node} parentIndex={nodeIndex}>\n            <RicosNodesRenderer key={`children-${node.id}`} nodes={node.nodes ?? []} />\n          </RicosNodeContextProvider>\n        </div>\n      </div>\n    </div>\n  );\n};\n\nexport const LayoutRenderer: NodeViewRenderer = ({ node, ...props }) => {\n  return <Layout key={node.id} node={node} {...props} />;\n};\n","var styleDataHash = '5c5253a0';  \nexport const injectCss = (() => {\n  var css = `.s59JF{--shimmer-base-color:#f5f5f5;background-color:var(--shimmer-base-color);pointer-events:none;z-index:1}.M2DHE,.s59JF{inset:0;position:absolute}.M2DHE{overflow:hidden}.M2DHE:after{animation:pjW0m 1s linear infinite;background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.3),transparent 50%);bottom:0;content:\"\";left:0;position:absolute;right:0;top:0;transform:translateX(-100%)}@keyframes pjW0m{to{transform:translateX(100%)}}.BTOf2{bottom:12px;left:50%;position:absolute;transform:translateX(-50%);z-index:2}`;\n  var isTest = typeof process !== 'undefined' && process.env && process.env['NODE_ENV'] === 'test';\n\n  if (isTest || !css || typeof document === 'undefined') { return; }\n  if (document.querySelector('style[data-ricos-style-hash=\"' + styleDataHash + '\"]')) { return; }\n\n  var head = document.head || document.getElementsByTagName('head')[0];\n  var style = document.createElement('style');\n  style.setAttribute('data-ricos-style-hash', styleDataHash);\n  style.type = 'text/css';\n\n  head.appendChild(style);\n\n  if (style.styleSheet) {\n    style.styleSheet.cssText = css;\n  } else {\n    style.appendChild(document.createTextNode(css));\n  }\n});\n\ninjectCss();\n\n\n\nexport default {\n  \"overlay\": \"s59JF\",\n  \"shimmer\": \"M2DHE\",\n  \"layout-shimmer\": \"pjW0m\",\n  \"label\": \"BTOf2\"\n};","import React from 'react';\n\nimport styles from './layout-background-loader-scss.js';\n\ntype LayoutBackgroundLoaderProps = {\n  backgroundColor?: string;\n};\n\nconst DEFAULT_BACKGROUND_COLOR = '#f5f5f5';\n\nexport const LayoutBackgroundLoader: React.FC<LayoutBackgroundLoaderProps> = ({\n  backgroundColor = DEFAULT_BACKGROUND_COLOR,\n}) => {\n  return (\n    <div\n      className={styles.overlay}\n      style={{ '--shimmer-base-color': backgroundColor } as React.CSSProperties}\n    >\n      <div className={styles.shimmer} />\n    </div>\n  );\n};\n","import classnames from 'classnames';\nimport type { FC } from 'react';\nimport React, { useContext } from 'react';\n\nimport {\n  RicosAlignmentContext,\n  RicosNodeContextProvider,\n  VisibleIndentationContext,\n  VisibleIndentationContextProvider,\n} from './../../../../../ricos-context/index.js';\nimport { TextStyle_TextAlignment } from './../../../../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport type { NodeViewRenderer, NodeViewRendererProps } from './../../../../../ricos-types/index.js';\n\nimport alignmentStyle from '../../../../statics/alignment-scss.js';\nimport styles from './lists-scss.js';\n\nconst BulletedList: FC<NodeViewRendererProps> = ({ node, nodeIndex, RicosNodesRenderer }) => {\n  const { textAlignment } = useContext(RicosAlignmentContext);\n  const { visibleIndentation } = useContext(VisibleIndentationContext);\n\n  const currIndentation = visibleIndentation?.indentation || 0;\n  const currOffset = node.bulletedListData?.offset || 0;\n\n  const indentation =\n    (visibleIndentation && visibleIndentation?.nodeId !== node.id ? 1 : 0) +\n    currIndentation +\n    currOffset;\n\n  const bulletedListClassName = classnames(\n    styles.bulletedlist,\n    alignmentStyle[textAlignment || TextStyle_TextAlignment.AUTO]\n  );\n\n  return (\n    <ul className={bulletedListClassName}>\n      <VisibleIndentationContextProvider visibleIndentation={{ indentation, nodeId: node.id }}>\n        <RicosNodeContextProvider parentNode={node} parentIndex={nodeIndex}>\n          <RicosNodesRenderer nodes={node.nodes ?? []} />\n        </RicosNodeContextProvider>\n      </VisibleIndentationContextProvider>\n    </ul>\n  );\n};\n\nconst BulletedListRenderer: NodeViewRenderer = ({ node, ...props }) => {\n  return <BulletedList key={node.id} node={node} {...props} />;\n};\n\nexport default BulletedListRenderer;\n","export default {\n  \"fontElementMap\": \"_2mh2Y\",\n  \"orderedlist\": \"FMUQy\",\n  \"bulletedlist\": \"nJTk1\",\n  \"listItem\": \"PqxAp\"\n};","import classnames from 'classnames';\nimport type { FC } from 'react';\nimport React, { useContext } from 'react';\n\nimport {\n  RicosDirectionHandledContextProvider,\n  RicosNodeContext,\n  RicosNodeContextProvider,\n  RicosViewerContext,\n  VisibleIndentationContext,\n} from './../../../../../ricos-context/index.js';\nimport type { Node } from './../../../../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport { TextStyle_TextAlignment } from './../../../../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport {\n  Decoration_Type,\n  type NodeViewRenderer,\n  type NodeViewRendererProps,\n  Node_Type,\n} from './../../../../../ricos-types/index.js';\nimport { getListSymbol, normalizeOffset } from './../../../../../wix-rich-content-common/index.js';\n\nimport { getPaywallSeoClass, isPaywallSeo } from '../../utils/paywallSeo.js';\nimport { levelToClassName } from '../heading/heading.js';\nimport { getStartMargin } from './getStartMargin.js';\nimport styles from './lists-scss.js';\n\nconst ListItem: FC<NodeViewRendererProps> = ({ node, nodeIndex, RicosNodesRenderer }) => {\n  const { seoMode } = useContext(RicosViewerContext);\n  const { parentIndex } = useContext(RicosNodeContext);\n  const { visibleIndentation } = useContext(VisibleIndentationContext);\n\n  const firstChild = node.nodes[0];\n  const dataProperty = `${firstChild?.type?.toLowerCase()}Data`;\n  const { textAlignment } =\n    (firstChild?.[dataProperty as $TSFixMeKey<Node>] as $TSFixMe)?.textStyle || {};\n  const listStylePosition = textAlignment && textAlignment === TextStyle_TextAlignment.CENTER;\n  const { parentNode } = useContext(RicosNodeContext);\n\n  const indentation =\n    visibleIndentation && visibleIndentation?.nodeId === parentNode?.id\n      ? normalizeOffset(visibleIndentation?.indentation)\n      : 0;\n\n  const marginInlineStart = getStartMargin(parentNode, visibleIndentation?.indentation || 0);\n\n  const marker = parentNode ? getListSymbol(indentation, parentNode.type) : '';\n\n  const isParentOfHeading = firstChild?.type === Node_Type.HEADING;\n  const headingLevel = isParentOfHeading && firstChild.headingData?.level;\n\n  const listItemClassName = classnames(\n    styles.listItem,\n    isPaywallSeo(seoMode) && getPaywallSeoClass(seoMode?.paywall || {}, nodeIndex + parentIndex)\n  );\n\n  const childFontSize = firstChild?.nodes?.[0]?.textData?.decorations?.find(\n    decoration => decoration.type === Decoration_Type.FONT_SIZE\n  )?.fontSizeData?.value;\n\n  return (\n    <li\n      dir=\"auto\"\n      aria-level={indentation + 1}\n      className={listItemClassName}\n      style={{\n        textAlign: textAlignment,\n        fontSize: childFontSize,\n        marginInlineStart,\n        listStyleType: marker,\n      }}\n      {...(headingLevel\n        ? {\n            'data-heading-level':\n              levelToClassName[headingLevel as $TSFixMeKey<typeof levelToClassName>],\n          }\n        : {})}\n      {...(listStylePosition ? { 'data-list-style-position': 'inside' } : {})}\n    >\n      <RicosDirectionHandledContextProvider directionHandled>\n        <RicosNodeContextProvider parentNode={node} parentIndex={nodeIndex}>\n          <RicosNodesRenderer nodes={node.nodes ?? []} shouldParagraphApplyTextStyle />\n        </RicosNodeContextProvider>\n      </RicosDirectionHandledContextProvider>\n    </li>\n  );\n};\n\nconst ListItemRenderer: NodeViewRenderer = ({ node, ...props }) => {\n  return <ListItem key={node.id} node={node} {...props} />;\n};\n\nexport default ListItemRenderer;\n","import type { Node } from './../../../../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport { MAX_LIST_VISIBLE_INDENTATION, normalizeOffset } from './../../../../../wix-rich-content-common/index.js';\n\nexport function getStartMargin(parentNode: Node | null, visibleIndentation: number) {\n  if (!parentNode) {\n    return '1.5em';\n  }\n\n  const parenNodeDataName = `${parentNode?.type?.slice(0, -5).toLowerCase()}ListData`;\n  const nodeOffset: number =\n    (parentNode[parenNodeDataName as $TSFixMeKey<typeof parentNode>] as $TSFixMe)?.offset || 0;\n  const offset =\n    visibleIndentation > MAX_LIST_VISIBLE_INDENTATION\n      ? nodeOffset - (visibleIndentation - MAX_LIST_VISIBLE_INDENTATION)\n      : normalizeOffset(nodeOffset);\n\n  return parentNode ? `${normalizeOffset(offset) * 2 + 1.5}em` : '';\n}\n","import classnames from 'classnames';\nimport type { FC } from 'react';\nimport React, { useContext } from 'react';\n\nimport {\n  RicosAlignmentContext,\n  RicosNodeContextProvider,\n  VisibleIndentationContext,\n  VisibleIndentationContextProvider,\n} from './../../../../../ricos-context/index.js';\nimport { TextStyle_TextAlignment } from './../../../../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport type { NodeViewRenderer, NodeViewRendererProps } from './../../../../../ricos-types/index.js';\n\nimport alignmentStyle from '../../../../statics/alignment-scss.js';\nimport styles from './lists-scss.js';\n\nconst OrderedList: FC<NodeViewRendererProps> = ({ node, nodeIndex, RicosNodesRenderer }) => {\n  const { textAlignment } = useContext(RicosAlignmentContext);\n  const { visibleIndentation } = useContext(VisibleIndentationContext);\n\n  const currIndentation = visibleIndentation?.indentation || 0;\n  const currOffset = node.orderedListData?.offset || 0;\n\n  const indentation =\n    (visibleIndentation && visibleIndentation?.nodeId !== node.id ? 1 : 0) +\n    currIndentation +\n    currOffset;\n\n  const orderedListClassName = classnames(\n    styles.orderedlist,\n    alignmentStyle[textAlignment || TextStyle_TextAlignment.AUTO]\n  );\n\n  return (\n    <ol className={orderedListClassName} start={node.orderedListData?.start}>\n      <VisibleIndentationContextProvider visibleIndentation={{ indentation, nodeId: node.id }}>\n        <RicosNodeContextProvider parentNode={node} parentIndex={nodeIndex}>\n          <RicosNodesRenderer nodes={node.nodes ?? []} />\n        </RicosNodeContextProvider>\n      </VisibleIndentationContextProvider>\n    </ol>\n  );\n};\n\nconst OrderedListRenderer: NodeViewRenderer = ({ node, ...props }) => {\n  return <OrderedList key={node.id} node={node} {...props} />;\n};\n\nexport default OrderedListRenderer;\n","import classnames from 'classnames';\nimport type { FC } from 'react';\nimport React, { useContext } from 'react';\n\nimport {\n  RicosAlignmentContext,\n  RicosDirectionHandledContext,\n  RicosNodeContext,\n  RicosNodeContextProvider,\n  RicosViewerContext,\n} from './../../../../../ricos-context/index.js';\nimport type { NodeStyle } from './../../../../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport { TextStyle_TextAlignment } from './../../../../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport type { NodeViewRenderer, NodeViewRendererProps } from './../../../../../ricos-types/index.js';\nimport { normalizeLineHeight } from './../../../../../_shared/line-spacing-utils.js';\n\nimport alignmentStyle from '../../../../statics/alignment-scss.js';\nimport indentStyle from '../../../../statics/indentation-scss.js';\nimport Anchorable from '../../utils/Anchorable.js';\nimport { getPaywallSeoClass, isPaywallSeo } from '../../utils/paywallSeo.js';\nimport { indentLevelToClassName } from '../consts.js';\nimport styles from './paragraph-scss.js';\n\nconst Paragraph: FC<NodeViewRendererProps> = ({\n  node,\n  nodeIndex,\n  RicosNodesRenderer,\n  shouldParagraphApplyTextStyle,\n}) => {\n  const { seoMode } = useContext(RicosViewerContext);\n  const { textAlignment: parentAlignment } = useContext(RicosAlignmentContext);\n  const { parentNode } = useContext(RicosNodeContext);\n  const directionHandled = useContext(RicosDirectionHandledContext);\n  const { indentation = 0 } = node.paragraphData || {};\n  const { textAlignment, lineHeight } = node.paragraphData?.textStyle || {};\n\n  const finalParagraphAlignment =\n    textAlignment === TextStyle_TextAlignment.AUTO || !textAlignment\n      ? parentAlignment\n      : textAlignment;\n\n  const paragraphClassName = classnames(\n    shouldParagraphApplyTextStyle && styles.text,\n    alignmentStyle[finalParagraphAlignment || TextStyle_TextAlignment.AUTO],\n    indentStyle[indentLevelToClassName[indentation as $TSFixMeKey<typeof indentLevelToClassName>]],\n    !parentNode && isPaywallSeo(seoMode) && getPaywallSeoClass(seoMode?.paywall || {}, nodeIndex)\n  );\n  const childClassName = classnames(\n    styles.child,\n    textAlignment === TextStyle_TextAlignment.JUSTIFY && alignmentStyle[textAlignment]\n  );\n  const isEmpty = !node.nodes?.length;\n  const doesEndWithSoftLine =\n    !isEmpty && node.nodes?.[node.nodes?.length - 1]?.textData?.text?.slice(-1) === '\\n';\n  const Tag = isEmpty || !shouldParagraphApplyTextStyle ? 'div' : 'p';\n  const nodeStyle: NodeStyle & { lineHeight?: string } = {\n    ...node.style,\n    ...(lineHeight && { lineHeight: normalizeLineHeight(lineHeight) }),\n  };\n  const Content = isEmpty ? (\n    <br role=\"presentation\" />\n  ) : (\n    <RicosNodeContextProvider parentNode={node} parentIndex={nodeIndex}>\n      <RicosNodesRenderer key={`children-${node.id}`} nodes={node.nodes ?? []} />\n    </RicosNodeContextProvider>\n  );\n\n  return (\n    <Anchorable nodeId={node.id}>\n      <Tag className={paragraphClassName} style={nodeStyle} dir={!directionHandled ? 'auto' : ''}>\n        <span className={childClassName}>{Content}</span>\n        {doesEndWithSoftLine && <br role=\"presentation\" />}\n      </Tag>\n    </Anchorable>\n  );\n};\n\nconst ParagraphRenderer: NodeViewRenderer = ({ node, ...props }) => {\n  return <Paragraph key={node.id} node={node} {...props} />;\n};\n\nexport default ParagraphRenderer;\n","export default {\n  \"fontElementMap\": \"li5CU\",\n  \"elementSpacing\": \"Vmlgg\",\n  \"text\": \"S1KXg Vmlgg\",\n  \"child\": \"KS6-G\"\n};","import type { FC } from 'react';\nimport React, { useContext } from 'react';\n\nimport { ContentTraverserContext, withRicosNodeContext } from './../../../../../ricos-context/index.js';\nimport type { NodeViewRendererProps } from './../../../../../ricos-types/index.js';\n\nconst Text: FC<NodeViewRendererProps> = ({ node }) => {\n  const { text } = node.textData || {};\n  const { nodeViewDecorators } = useContext(ContentTraverserContext);\n  if (text && text !== '') {\n    return <span>{nodeViewDecorators.applyTextual(node) || text}</span>;\n  }\n  return <br role=\"presentation\" />;\n};\n\nconst TextRenderer = (props: NodeViewRendererProps & { parentId: string }) => {\n  const { parentId, nodeIndex } = props;\n  const key = `${parentId}-text-node-${nodeIndex}`;\n  return <Text key={key} {...props} />;\n};\n\nexport default withRicosNodeContext(TextRenderer);\n","import type { ComponentType } from 'react';\n\nimport { Node_Type } from './../../../../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport type { NodeViewRenderers, PluginMapping, ViewerContextualData } from './../../../../../ricos-types/index.js';\n\nimport type { PluginComponent } from '../../../types.js';\nimport { fromExternalNode } from './fromExternalNode.js';\n\ntype GetPluginRenderers = (\n  context: ViewerContextualData,\n  typeMappers: PluginMapping,\n  nodeViewRenderers: NodeViewRenderers,\n  SpoilerViewerWrapper?: ComponentType<{ className: unknown; width?: number }>\n) => NodeViewRenderers;\n\nexport const getPluginRenderers: GetPluginRenderers = (\n  context,\n  typeMappers,\n  nodeViewRenderers,\n  SpoilerViewerWrapper\n) => {\n  const convertedTypeMappers = Object.entries(typeMappers).reduce(\n    (renderers, [type, pluginComponent]: [string, PluginComponent]) => {\n      if (type === Node_Type.EXTERNAL) {\n        return {\n          ...renderers,\n          ...fromExternalNode({ pluginComponent, type, context, SpoilerViewerWrapper }),\n        };\n      }\n\n      return { ...renderers };\n    },\n    {}\n  );\n  return { ...convertedTypeMappers, ...nodeViewRenderers };\n};\n","import type { FC } from 'react';\nimport React from 'react';\n\nimport { convertStructToJson } from './../../../../../ricos-content/lib/struct-converters.js';\nimport { Node_Type } from './../../../../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport type { CustomClassNames } from './../../../../../ricos-types/index.js';\n\nimport type { FromExternalNode, FromExternalNodeProps } from '../../../types.js';\nimport { getAlignmentClassName, getSizeClassName, getTextWrapClassName } from './getClassNames.js';\nimport { nodeViewContainer as NodeViewContainer } from './nodeViewContainer.js';\n\nconst isDraftEntityConfig = (data: Record<string, any>): boolean =>\n  (data.width || data.alignment || data.textWrap) &&\n  (['content', 'original', 'fullWidth', 'small'].includes(data.size) ||\n    ['center', 'left', 'right'].includes(data.alignment));\n\nconst toContainerData = (data: Record<string, any>): Record<string, any> => ({\n  ...(typeof data.size === 'string' ? { width: { size: data.size.toUpperCase() } } : {}),\n  ...(typeof data.alignment === 'string' ? { alignment: data.alignment.toUpperCase() } : {}),\n  ...(typeof data.textWrap !== 'undefined' ? { textWrap: data.textWrap !== 'nowrap' } : {}),\n});\n\nconst getContainerData = (externalData: Record<string, any>) => {\n  if (isDraftEntityConfig(externalData.config || {})) {\n    return toContainerData(externalData.config);\n  }\n  return externalData.containerData;\n};\n\nconst Plugin: FC<FromExternalNodeProps> = ({\n  type,\n  context,\n  node,\n  nodeIndex,\n  children,\n  pluginComponent: { component: Component },\n}) => {\n  const settings = context.config?.[type] || {};\n  const componentData = (node.externalData && convertStructToJson(node.externalData)) || {};\n  const containerData = getContainerData(componentData) || {};\n  const componentProps = {\n    type,\n    componentData,\n    settings,\n    children,\n    ...context,\n    blockKey: node.id,\n  };\n\n  const customClassNames: CustomClassNames = {\n    alignment: getAlignmentClassName(containerData),\n    size: getSizeClassName(containerData),\n    textWrap: getTextWrapClassName(containerData),\n  };\n\n  return (\n    <NodeViewContainer node={node} nodeIndex={nodeIndex} customClassNames={customClassNames}>\n      <Component {...componentProps} />\n    </NodeViewContainer>\n  );\n};\n\nexport const fromExternalNode: FromExternalNode = args => {\n  return {\n    [Node_Type.EXTERNAL]: ({ node, nodeIndex }) => {\n      return <Plugin key={node.id} node={node} nodeIndex={nodeIndex} {...args} />;\n    },\n  };\n};\n","import lodash from 'lodash';\n\nimport type { Node, PluginContainerData } from './../../../../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport { getContainerData } from './../../../../../_shared/node-styles.js';\n\nimport styles from './plugin-scss.js';\n\nexport const getAlignmentClassName = (containerData?: PluginContainerData | null) => {\n  const alignment = containerData?.alignment;\n\n  if (!alignment) {\n    return '';\n  }\n\n  const key = `align${lodash.upperFirst(alignment.toLowerCase())}`;\n  return styles[key];\n};\n\nexport const getSizeClassName = (containerData?: PluginContainerData | null) => {\n  const size = containerData?.width?.size;\n\n  if (!size || size === 'FULL_WIDTH') {\n    return '';\n  }\n\n  const key = `size${lodash.upperFirst(size.toLowerCase())}`;\n  return styles[key];\n};\n\nexport const getTextWrapClassName = (containerData?: PluginContainerData | null): string => {\n  if (containerData?.textWrap) {\n    return '';\n  }\n\n  return styles.textWrapNowrap;\n};\n\nexport const alignmentClassName = (node: Node): string => {\n  return getAlignmentClassName(getContainerData(node));\n};\n\nexport const sizeClassName = (node: Node): string => {\n  return getSizeClassName(getContainerData(node));\n};\n\nexport const textWrapClassName = (node: Node): string => {\n  return getTextWrapClassName(getContainerData(node));\n};\n","export default {\n  \"alignLeft\": \"rjuXJ\",\n  \"textWrapNowrap\": \"_0aiuM\",\n  \"alignRight\": \"DLOUz\",\n  \"alignCenter\": \"G5lBZ\",\n  \"sizeFullWidth\": \"_6W60U\",\n  \"renderedInTable\": \"PWoL4\",\n  \"sizeOriginal\": \"I2OKC\",\n  \"sizeContent\": \"_2ncZP\",\n  \"sizeSmall\": \"X-Lq7\",\n  \"sizeSmallCenter\": \"_1Xr3U\",\n  \"flex\": \"bB3EJ\",\n  \"atomic\": \"R7vEN\",\n  \"embed\": \"Kb35a\",\n  \"horizontalScrollbar\": \"d-ZId\",\n  \"pluginContainerMobile\": \"KrAdJ\"\n};","import classNames from 'classnames';\nimport lodash from 'lodash';\nimport type { PropsWithChildren, ReactElement, ReactNode } from 'react';\nimport React, { useCallback, useContext, useMemo } from 'react';\n\nimport { ContentTraverserContext, RicosContext } from './../../../../../ricos-context/index.js';\nimport type { Node } from './../../../../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport type { ImageData, LinkData, PluginContainerData } from './../../../../../ricos-schema/next-schema/index.js';\nimport type { NodeViewContainer } from './../../../../../ricos-types/index.js';\n\nimport { ErrorBoundary } from '../../../components/ErrorBoundary.js';\nimport Anchorable from '../../utils/Anchorable.js';\nimport { ContainerElement } from './ContainerElement.js';\nimport { alignmentClassName, sizeClassName, textWrapClassName } from './getClassNames.js';\nimport { LinkViewerWrapper } from './LinkViewerWrapper.js';\nimport classes from './plugin-scss.js';\n\nconst isDefined = (value?: string): value is string => value !== undefined;\n\nconst convertSpoilerData = (data: Partial<PluginContainerData> = {}) => {\n  return {\n    config: {\n      spoiler: {\n        enabled: !!data.spoiler?.enabled,\n        description: data.spoiler?.description,\n        buttonContent: data.spoiler?.buttonText,\n      },\n    },\n  };\n};\n\ntype ComponentData = ImageData & LinkData;\n\nexport const nodeViewContainer: NodeViewContainer = ({\n  node,\n  nodeIndex,\n  customClassNames,\n  withHorizontalScroll,\n  children,\n}) => {\n  const { isMobile } = useContext(RicosContext);\n  const { SpoilerViewerWrapper } = useContext(ContentTraverserContext);\n  const dataProperty = `${lodash.camelCase(node.type)}Data`;\n  const componentData = (node[dataProperty as $TSFixMeKey<Node>] || {}) as ComponentData;\n  const { containerData, link } = componentData;\n  const { alignment, size, textWrap } = customClassNames || {};\n\n  const containerClassName = classNames(\n    {\n      [classes.pluginContainerMobile]: isMobile,\n      [classes.horizontalScrollbar]: withHorizontalScroll,\n    },\n    isDefined(alignment) ? alignment : alignmentClassName(node),\n    isDefined(size) ? size : sizeClassName(node),\n    isDefined(textWrap) ? textWrap : textWrapClassName(node)\n  );\n\n  const renderContainerComponent = useCallback(\n    (contentComponent: ReactNode) => (\n      <ContainerElement\n        className={containerClassName}\n        nodeType={node.type}\n        componentData={componentData}\n        nodeIndex={nodeIndex}\n      >\n        {contentComponent}\n      </ContainerElement>\n    ),\n    [\n      containerClassName,\n      node.type,\n      containerData?.width?.custom,\n      containerData?.width?.size,\n      containerData?.alignment,\n      nodeIndex,\n    ]\n  );\n\n  const renderSpoilerWrapper = useCallback(\n    (contentComponent: ReactNode): ReactElement => {\n      if (SpoilerViewerWrapper) {\n        return (\n          <SpoilerViewerWrapper\n            className={containerClassName}\n            width={containerData?.width?.custom ? parseInt(containerData.width.custom) : undefined}\n            type={node.type}\n            componentData={convertSpoilerData(containerData)}\n          >\n            {contentComponent}\n          </SpoilerViewerWrapper>\n        );\n      }\n\n      return contentComponent as ReactElement;\n    },\n    [\n      containerClassName,\n      node.type,\n      containerData?.width?.custom,\n      containerData?.width?.size,\n      containerData?.alignment,\n      containerData?.spoiler?.enabled,\n      containerData?.spoiler?.buttonText,\n      containerData?.spoiler?.description,\n    ]\n  );\n\n  const renderLinkWrapper = useCallback(\n    (contentComponent: ReactNode): ReactElement => (\n      <LinkViewerWrapper link={link} nodeType={node.type}>\n        {contentComponent}\n      </LinkViewerWrapper>\n    ),\n    [\n      node.type,\n      link?.url,\n      link?.target,\n      link?.anchor,\n      link?.rel?.nofollow,\n      link?.rel?.noreferrer,\n      link?.rel?.sponsored,\n    ]\n  );\n\n  if (typeof children === 'function') {\n    return (\n      <BaseContainer node={node}>\n        {children(\n          useMemo(\n            () => ({\n              ContainerElement: props => renderContainerComponent(props.children),\n              SpoilerWrapper: props => renderSpoilerWrapper(props.children),\n              LinkWrapper: props => renderLinkWrapper(props.children),\n            }),\n            [renderContainerComponent, renderSpoilerWrapper, renderLinkWrapper]\n          )\n        )}\n      </BaseContainer>\n    );\n  }\n\n  return (\n    <BaseContainer node={node}>\n      {renderLinkWrapper(renderSpoilerWrapper(renderContainerComponent(children)))}\n    </BaseContainer>\n  );\n};\n\nconst BaseContainer: React.FC<PropsWithChildren & { node: Node }> = ({ children, node }) => {\n  return (\n    <ErrorBoundary>\n      <Anchorable nodeId={node.id}>\n        <div className={classes.atomic}>{children}</div>\n      </Anchorable>\n    </ErrorBoundary>\n  );\n};\n","import React from 'react';\n\nexport class ErrorBoundary extends React.Component<\n  { children: React.ReactNode },\n  { hasError: boolean }\n> {\n  constructor(props: $TSFixMe) {\n    super(props);\n    this.state = { hasError: false };\n  }\n\n  static getDerivedStateFromError(_error: $TSFixMe) {\n    return { hasError: true };\n  }\n\n  render() {\n    if (this.state.hasError) {\n      return null;\n    }\n\n    return this.props.children;\n  }\n}\n","import classNames from 'classnames';\nimport type { FC, PropsWithChildren } from 'react';\nimport React, { useContext } from 'react';\n\nimport { RicosContext, RicosNodeContext, RicosViewerContext } from './../../../../../ricos-context/index.js';\nimport { Node_Type } from './../../../../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport type { GIFData, ImageData, PluginContainerData } from './../../../../../ricos-schema/next-schema/index.js';\nimport { ORIGINAL_SHAPE_WIDTH } from './../../../../../plugin-shape/utils/consts.js';\n\nimport { getPaywallSeoClass, isPaywallSeo } from '../../utils/paywallSeo.js';\n\ntype Props = {\n  nodeType: Node_Type;\n  componentData: ImageData;\n  nodeIndex: number;\n  className: string;\n};\n\nconst disableCustomWidthMapper = {\n  [Node_Type.IMAGE]: (componentData: ImageData, isMobile: boolean) =>\n    componentData?.image?.width &&\n    isMobile &&\n    (typeof componentData?.containerData?.width?.custom === 'number'\n      ? componentData.containerData.width.custom\n      : parseFloat(componentData?.containerData?.width?.custom || '0')) > 150,\n};\n\nconst isMediumOrFullWidth = (containerData?: PluginContainerData) => {\n  return (\n    containerData?.width?.size &&\n    (containerData.width.size === 'CONTENT' || containerData.width?.size === 'FULL_WIDTH')\n  );\n};\n\nconst originalSizeMapper = {\n  [Node_Type.IMAGE]: (componentData: ImageData) =>\n    isMediumOrFullWidth(componentData.containerData) ? '100%' : `${componentData?.image?.width}px`,\n  [Node_Type.GIF]: (componentData: GIFData) =>\n    isMediumOrFullWidth(componentData.containerData) ? '100%' : `${componentData.width}px`,\n  [Node_Type.SHAPE]: () => `${ORIGINAL_SHAPE_WIDTH}px`,\n};\n\nexport const ContainerElement: FC<PropsWithChildren<Props>> = ({\n  nodeType,\n  componentData,\n  nodeIndex,\n  className,\n  children,\n}) => {\n  const { containerData } = componentData;\n  const { seoMode } = useContext(RicosViewerContext);\n  const { isMobile } = useContext(RicosContext);\n  const { parentNode } = useContext(RicosNodeContext);\n\n  const disableCustomWidth = disableCustomWidthMapper[\n    nodeType as $TSFixMeKey<typeof disableCustomWidthMapper>\n  ]?.(componentData, isMobile);\n\n  const customWidth =\n    containerData?.width?.custom && !disableCustomWidth\n      ? `${\n          isNaN(Number(containerData.width.custom))\n            ? containerData.width.custom\n            : parseInt(containerData.width.custom)\n        }px`\n      : undefined;\n\n  const originalWidth =\n    (containerData?.width?.size === 'ORIGINAL' || disableCustomWidth) &&\n    originalSizeMapper[nodeType as $TSFixMeKey<typeof originalSizeMapper>]?.(componentData);\n\n  const width = customWidth || originalWidth;\n\n  const style =\n    componentData && width\n      ? {\n          width: `min(100%, ${width})`,\n        }\n      : undefined;\n\n  return (\n    <div\n      className={classNames(\n        className,\n        !parentNode &&\n          isPaywallSeo(seoMode) &&\n          getPaywallSeoClass(seoMode?.paywall || {}, nodeIndex)\n      )}\n      style={style}\n    >\n      {children}\n    </div>\n  );\n};\n","import classNames from 'classnames';\nimport type { PropsWithChildren } from 'react';\nimport React, { useContext } from 'react';\n\nimport { RicosContext, RicosViewerContext } from './../../../../../ricos-context/index.js';\nimport { Node_Type } from './../../../../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport type { Link } from './../../../../../ricos-schema/next-schema/index.js';\nimport { getLinkHrefUrl } from './../../../../../_shared/link/get-link-href-url.js';\nimport {\n  addAnchorTagToUrl,\n  anchorScroll,\n  convertRelObjectToString,\n} from './../../../../../wix-rich-content-common/index.js';\n\nimport classes from './link-viewer-wrapper-scss.js';\n\ntype LinkViewerWrapperProps = PropsWithChildren & {\n  link?: Link;\n  nodeType: Node_Type;\n};\n\nexport const LinkViewerWrapper: React.FC<LinkViewerWrapperProps> = ({\n  children,\n  nodeType,\n  link,\n}) => {\n  const { anchorTarget, baseUrl, customAnchorScroll } = useContext(RicosViewerContext);\n  const { tabIndex } = useContext(RicosContext);\n\n  if (!(link && nodeType !== Node_Type.BUTTON)) {\n    return <>{children}</>;\n  }\n\n  return (\n    <a\n      className={classNames(classes.link, 'has-custom-focus', {\n        [classes.anchor]: link,\n      })}\n      tabIndex={tabIndex}\n      href={link ? getLinkHrefUrl(link, baseUrl) : undefined}\n      target={link.target ? `_${link.target.toLowerCase()}` : anchorTarget}\n      rel={link.rel && convertRelObjectToString(link.rel)}\n      onClick={\n        link?.anchor\n          ? (e: React.MouseEvent) => {\n              if (customAnchorScroll) {\n                return customAnchorScroll(e, link?.anchor as string);\n              }\n\n              const anchorRefId = `viewer-${link?.anchor}`;\n              const element = document.getElementById(anchorRefId);\n              if (!element) {\n                return;\n              }\n              addAnchorTagToUrl(anchorRefId);\n              anchorScroll(element);\n            }\n          : undefined\n      }\n    >\n      {children}\n    </a>\n  );\n};\n","export default {\n  \"anchor\": \"RuGnf\",\n  \"link\": \"ootB-\"\n};","import type { NotifySpoiler } from './../../../../ricos-types/index.js';\n\ntype Spoiler = {\n  notifiers: NotifySpoiler[];\n  isActive: boolean;\n};\n\nexport class SpoilerManager {\n  private spoilers: Record<string, Spoiler> = {};\n\n  registerSpoiler = (id: string, notifySpoiler: NotifySpoiler): void => {\n    if (!this.spoilers[id]) {\n      this.spoilers[id] = { isActive: true, notifiers: [] };\n    }\n    this.spoilers[id].notifiers.push(notifySpoiler);\n  };\n\n  toggleSpoiler = (id: string): void => {\n    this.spoilers[id].isActive = !this.spoilers[id].isActive;\n    this.spoilers[id].notifiers.forEach(notifySpoiler => notifySpoiler());\n  };\n\n  isActive = (id: string): boolean => this.spoilers[id]?.isActive;\n}\n\nexport default SpoilerManager;\n","import React from 'react';\n\nimport {\n  isBetweenFloatedNodes,\n  isBetweenFullWidthNodes,\n  isCollapsedBetween,\n  isNodeSpaced,\n  needsTopMargin,\n} from './../../ricos-common-plugins/gap-spacer/gap-spacer-nodes.js';\nimport { type Node, Node_Type } from './../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport { GapSpacer } from './../../ricos-viewer-next/ContentViewer/components/gap-spacer.js';\nimport type {\n  NodeTreeMap,\n  NodeWithMetadata,\n} from './../../ricos-viewer-next/ContentViewer/utils/node-tree-traversal.js';\n\nimport type { LayoutNode } from '../../ricos-schema/next-schema';\n\nconst getPrevSiblingNode = (\n  node: NodeWithMetadata,\n  map: NodeTreeMap\n): NodeWithMetadata | undefined => {\n  if (node.index === 0) {\n    return undefined;\n  }\n\n  if (node.parent) {\n    return node.parent.children[node.index - 1];\n  }\n\n  const rootNodes = Object.values(map).filter(n => n.depth === 0);\n  return rootNodes.find(n => n.index === node.index - 1);\n};\n\nexport const renderGapSpacerBeforeNodeIfNeeded = (\n  node: Node,\n  index: number,\n  nodeTreeMap: NodeTreeMap\n): React.ReactElement[] => {\n  // Skip gap spacer for banner layouts - they should have no spacing at the top\n  if (node.type === Node_Type.LAYOUT && (node as LayoutNode).layoutData?.banner) {\n    return [];\n  }\n\n  const nodeId = node.id || `0-${index}`;\n  const currentNode = nodeTreeMap[nodeId];\n\n  if (!currentNode || !shouldPlaceGapSpacerBefore(nodeId, nodeTreeMap)) {\n    return [];\n  }\n\n  const prevNode = getPrevSiblingNode(currentNode, nodeTreeMap);\n  const isCollapsed = shouldCollapseGapSpacer(prevNode?.node.id, currentNode.node.id, nodeTreeMap);\n  const betweenFloated = isBetweenFloatedNodes(prevNode?.node, currentNode.node);\n\n  // First gap spacer (no previous sibling, at root level) needs top margin if current node has top overflow\n  const isFirstPosition = !prevNode && currentNode.depth === 0;\n  const hasTopOverflow = needsTopMargin(currentNode.node.type);\n\n  return [\n    <GapSpacer\n      key={`gap-spacer-${currentNode.node?.id || currentNode.index}`}\n      collapsed={isCollapsed}\n      betweenFloated={betweenFloated}\n      needsTopMargin={isFirstPosition && hasTopOverflow}\n    />,\n  ];\n};\n\nexport const renderGapSpacerAfterLastNodeIfNeeded = (\n  nodes: Node[],\n  nodeTreeMap: NodeTreeMap\n): React.ReactElement | null => {\n  if (nodes.length === 0) {\n    return null;\n  }\n\n  const lastNode = nodes[nodes.length - 1];\n  const lastNodeId = lastNode.id || `0-${nodes.length - 1}`;\n  const lastNodeData = nodeTreeMap[lastNodeId];\n\n  if (!lastNodeData || !shouldPlaceGapSpacerAfter(lastNodeId, nodeTreeMap)) {\n    return null;\n  }\n\n  const isCollapsed = shouldCollapseGapSpacer(lastNode.id, undefined, nodeTreeMap);\n\n  return (\n    <GapSpacer\n      key={`gap-spacer-${lastNodeData.node?.id || lastNodeData.index + 1}`}\n      collapsed={isCollapsed}\n    />\n  );\n};\n\nconst shouldPlaceGapSpacerBefore = (nodeId: string, map: NodeTreeMap): boolean => {\n  const currentNode = map[nodeId];\n  const node = currentNode?.node;\n\n  if (!currentNode || !node || isInlineContent(node)) {\n    return false;\n  }\n\n  if (currentNode.parent && shouldAvoidSpacingBetweenSiblings(currentNode)) {\n    return false;\n  }\n\n  if (!currentNode.parent) {\n    if (currentNode.index === 0) {\n      return isNodeSpaced(node.type);\n    }\n\n    const rootNodes = Object.values(map).filter(n => n.depth === 0);\n    const prevSibling = rootNodes.find(n => n.index === currentNode.index - 1);\n\n    return prevSibling ? isNodeSpaced(prevSibling.node.type) && isNodeSpaced(node.type) : false;\n  }\n\n  if (!closedBefore(nodeId, map) || !closedAfter(nodeId, map)) return false;\n\n  return true;\n};\n\nconst shouldPlaceGapSpacerAfter = (nodeId: string, map: NodeTreeMap): boolean => {\n  const currentNode = map[nodeId];\n  const node = currentNode?.node;\n\n  if (!currentNode || !node || isInlineContent(node)) {\n    return false;\n  }\n\n  if (isTextBlock(node)) {\n    return false;\n  }\n\n  if (currentNode.parent && shouldAvoidSpacingBetweenSiblings(currentNode)) {\n    return false;\n  }\n\n  return closedAfter(nodeId, map);\n};\n\nconst isInlineContent = (node: Node): boolean => {\n  return node.type === Node_Type.TEXT;\n};\n\nconst isTextBlock = (node: Node): boolean => {\n  return [\n    Node_Type.PARAGRAPH,\n    Node_Type.HEADING,\n    Node_Type.BLOCKQUOTE,\n    Node_Type.CODE_BLOCK,\n  ].includes(node.type as Node_Type);\n};\n\nconst shouldAvoidSpacingBetweenSiblings = (currentNode: NodeWithMetadata): boolean => {\n  const parent = currentNode.parent;\n  if (!parent) return false;\n\n  if (parent.node.type === Node_Type.TABLE_ROW && currentNode.node.type === Node_Type.TABLE_CELL) {\n    return true;\n  }\n\n  if (parent.node.type === Node_Type.TABLE && currentNode.node.type === Node_Type.TABLE_ROW) {\n    return true;\n  }\n\n  if (parent.node.type === Node_Type.LAYOUT && currentNode.node.type === Node_Type.LAYOUT_CELL) {\n    return true;\n  }\n\n  if (\n    parent.node.type === Node_Type.COLLAPSIBLE_LIST &&\n    currentNode.node.type === Node_Type.COLLAPSIBLE_ITEM\n  ) {\n    return true;\n  }\n\n  if (\n    parent.node.type === Node_Type.COLLAPSIBLE_ITEM &&\n    (currentNode.node.type === Node_Type.COLLAPSIBLE_ITEM_TITLE ||\n      currentNode.node.type === Node_Type.COLLAPSIBLE_ITEM_BODY)\n  ) {\n    return true;\n  }\n\n  if (\n    (parent.node.type === Node_Type.BULLETED_LIST || parent.node.type === Node_Type.ORDERED_LIST) &&\n    currentNode.node.type === Node_Type.LIST_ITEM\n  ) {\n    return true;\n  }\n\n  if (\n    parent.node.type === Node_Type.LIST_ITEM &&\n    (currentNode.node.type === Node_Type.BULLETED_LIST ||\n      currentNode.node.type === Node_Type.ORDERED_LIST)\n  ) {\n    return true;\n  }\n\n  return false;\n};\n\nconst closedBefore = (nodeId: string, map: NodeTreeMap): boolean => {\n  const startNode = map[nodeId];\n  if (!startNode) return false;\n\n  if (startNode.depth === 0) {\n    if (startNode.index === 0) {\n      return isNodeSpaced(startNode.node.type);\n    }\n    const rootNodes = Object.values(map).filter(n => n.depth === 0);\n    const prevSibling = rootNodes.find(n => n.index === startNode.index - 1);\n    return prevSibling ? isNodeSpaced(prevSibling.node.type) : false;\n  }\n\n  if (isTextBlock(startNode.node)) {\n    return false;\n  }\n\n  for (let d = startNode.depth; d >= 0; d--) {\n    let nodeAtDepth = startNode;\n    while (nodeAtDepth && nodeAtDepth.depth > d) {\n      nodeAtDepth = nodeAtDepth.parent!;\n    }\n\n    if (!nodeAtDepth || nodeAtDepth.depth !== d) continue;\n\n    const index = nodeAtDepth.index;\n    const parent = nodeAtDepth.parent;\n\n    if (index === 0) {\n      if (parent && isNodeSpaced(parent.node.type)) {\n        return true;\n      }\n      continue;\n    }\n\n    if (parent && parent.children[index - 1]) {\n      let before = parent.children[index - 1];\n\n      while (before.children.length > 0) {\n        before = before.children[before.children.length - 1];\n      }\n\n      if (before.children.length === 0 && !isInlineContent(before.node)) {\n        return isNodeSpaced(before.node.type);\n      }\n      if (isNodeSpaced(before.node.type)) {\n        return true;\n      }\n      if (isInlineContent(before.node)) {\n        return false;\n      }\n    }\n  }\n\n  return false;\n};\n\nconst closedAfter = (nodeId: string, map: NodeTreeMap): boolean => {\n  const startNode = map[nodeId];\n  if (!startNode) return false;\n\n  let currentNode = startNode;\n\n  for (let d = startNode.depth; d >= 0; d--) {\n    const parent = currentNode.parent;\n    const indexAfter = currentNode.index + 1;\n\n    if (!parent || indexAfter >= parent.children.length) {\n      if (d === 0) {\n        return isNodeSpaced(currentNode.node.type);\n      }\n      if (parent && isNodeSpaced(parent.node.type)) {\n        return true;\n      }\n      if (!parent) break;\n      currentNode = parent;\n      continue;\n    }\n\n    let after = parent.children[indexAfter];\n\n    while (after.children.length > 0) {\n      after = after.children[0];\n    }\n\n    if (after.children.length === 0 && !isInlineContent(after.node)) {\n      return isNodeSpaced(after.node.type);\n    }\n    if (isNodeSpaced(after.node.type)) {\n      return true;\n    }\n    if (isInlineContent(after.node)) {\n      return false;\n    }\n\n    if (!parent) break;\n    currentNode = parent;\n  }\n\n  return false;\n};\n\nconst shouldCollapseGapSpacer = (\n  prevNodeId: string | undefined,\n  nextNodeId: string | undefined,\n  map: NodeTreeMap\n): boolean => {\n  const prevNode = prevNodeId ? map[prevNodeId] : undefined;\n  const nextNode = nextNodeId ? map[nextNodeId] : undefined;\n  const parentNode = prevNode?.parent || nextNode?.parent;\n\n  const bothFullWidth = isBetweenFullWidthNodes(prevNode?.node, nextNode?.node);\n\n  return isCollapsedBetween(prevNode?.node.type, nextNode?.node.type, parentNode?.node.type, {\n    bothFullWidth,\n  });\n};\n","import classNames from 'classnames';\nimport React from 'react';\n\nimport styles from './../../../ricos-common-plugins/gap-spacer/gap-spacer-component/gap-spacer-styles-scss.js';\n\ntype GapSpacerProps = {\n  collapsed?: boolean;\n  betweenFloated?: boolean;\n  needsTopMargin?: boolean;\n};\n\nexport const GapSpacer: React.FC<GapSpacerProps> = ({\n  collapsed,\n  betweenFloated,\n  needsTopMargin,\n}) => {\n  return (\n    <div\n      data-hook=\"gap-spacer\"\n      className={classNames(styles.gapSpacerViewer, {\n        [styles.collapsed]: collapsed,\n        [styles.betweenFloated]: betweenFloated,\n        [styles.withTopMargin]: needsTopMargin,\n      })}\n    />\n  );\n};\n","import React, { useContext } from 'react';\n\nimport {\n  renderGapSpacerAfterLastNodeIfNeeded,\n  renderGapSpacerBeforeNodeIfNeeded,\n} from './../../ricos-common-plugins/gap-spacer/gap-spacer-viewer.js';\nimport { ContentTraverserContext } from './../../ricos-context/index.js';\nimport { NodeTreeMapContext } from './../../ricos-context/viewer/NodeTreeMapContext.js';\nimport type { Node } from './../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport type { RicosNodesViewRenderer, RicosNodesViewRendererProps } from './../../ricos-types/index.js';\n\nimport { getAnchor } from './components/Anchor.js';\nimport { nodeViewContainer as NodeViewContainer } from './rericos/renderers/plugins/nodeViewContainer.js';\n\nconst Fallback = ({ node }: { node: Node }) => {\n  return process.env.NODE_ENV === 'development' ? (\n    <div>{`Type ${node.type} is not supported yet (:`}</div>\n  ) : null;\n};\n\nconst RicosNodeDecorated = ({\n  node,\n  index,\n  isRoot,\n  shouldParagraphApplyTextStyle,\n}: {\n  node: Node;\n  index: number;\n  isRoot?: boolean;\n  shouldParagraphApplyTextStyle?: boolean;\n}) => {\n  const { renderers, nodeViewDecorators } = useContext(ContentTraverserContext);\n  const Renderer = renderers[node.type];\n  if (!Renderer) {\n    console.error(`RicosNodeDedcorated Error: no renderer passed for node type - ${node.type}`);\n    return <Fallback node={node} />;\n  }\n  return nodeViewDecorators.apply(\n    <Renderer\n      node={node}\n      key={node.id || index.toString()}\n      RicosNodesRenderer={RicosNodesRenderer}\n      isRoot={isRoot}\n      nodeIndex={index}\n      NodeViewContainer={NodeViewContainer}\n      shouldParagraphApplyTextStyle={shouldParagraphApplyTextStyle}\n    />,\n    node,\n    !!isRoot\n  );\n};\n\nconst RicosNodesRenderer: RicosNodesViewRenderer = ({\n  nodes,\n  isRoot,\n  shouldParagraphApplyTextStyle,\n  addAnchorsPrefix,\n}: RicosNodesViewRendererProps) => {\n  const { nodeTreeMap } = useContext(NodeTreeMapContext);\n\n  return (\n    <>\n      {nodes.flatMap((node: Node, index: number) => {\n        if (!node) {\n          console.error(`RicosNodesRenderer Error: node is undefined at index ${index}`);\n          return [];\n        }\n        return [\n          ...renderGapSpacerBeforeNodeIfNeeded(node, index, nodeTreeMap),\n          <RicosNodeDecorated\n            isRoot={isRoot}\n            node={node}\n            index={index}\n            key={node.id || index.toString()}\n            shouldParagraphApplyTextStyle={shouldParagraphApplyTextStyle}\n          />,\n          ...(addAnchorsPrefix ? [getAnchor(node, index, addAnchorsPrefix)] : []),\n        ];\n      })}\n      {renderGapSpacerAfterLastNodeIfNeeded(nodes, nodeTreeMap)}\n    </>\n  );\n};\n\nexport default RicosNodesRenderer;\n","export { pluginAiSuggestions } from './plugin-ai-suggestions/editor.js';\nexport { pluginCollab } from './plugin-collab/editor.js';\nexport { readYXmlFragment, writeYXmlFragment } from './plugin-collab/y-adapter.js';\nexport {\n  type BISettings,\n  extractUoUParams,\n  parseInstance,\n  type WixRicosEditorProps,\n  type WixRicosTheme,\n  type WixRicosViewerProps,\n} from './wix-ricos-common/index.js';\nexport { WixRicosEditor } from './wix-ricos-editor/index.js';\nexport { resolveFileUrl } from './ricos-media/index.js';\nexport { WixRicosViewer } from './wix-ricos-viewer/index.js';\nexport { type RicosEditorProps } from './ricos-common/index.js';\nexport { type EditorPluginOptions } from './ricos-common-plugins/types.js';\nexport {\n  ACTION_BUTTON_TYPE,\n  AUDIO_TYPE,\n  CODE_BLOCK_TYPE,\n  COLLAPSIBLE_LIST_TYPE,\n  compare,\n  createContent,\n  DIVIDER_TYPE,\n  type DraftContent,\n  EMBED_TYPE,\n  EMOJI_TYPE,\n  EXTERNAL_MENTIONS_TYPE,\n  FILE_UPLOAD_TYPE,\n  GALLERY_TYPE,\n  getMediaData,\n  getTextDirection,\n  GIPHY_TYPE,\n  HASHTAG_TYPE,\n  HEADINGS_DROPDOWN_TYPE,\n  HTML_TYPE,\n  IMAGE_TYPE,\n  type ImageMedia,\n  INDENT_TYPE,\n  isContentStateEmpty,\n  isDraftContent,\n  isRichContent,\n  isRichContentEmpty,\n  LINE_SPACING_TYPE,\n  LINK_BUTTON_TYPE,\n  LINK_PREVIEW_TYPE,\n  LINK_TYPE,\n  type ListItemData,\n  MENTION_TYPE,\n  normalizeInitialState,\n  POLL_TYPE,\n  RICOS_ANCHOR_TYPE,\n  RICOS_CAPTION_TYPE,\n  RICOS_DIVIDER_TYPE,\n  RICOS_FILE_TYPE,\n  RICOS_GALLERY_TYPE,\n  RICOS_GIPHY_TYPE,\n  RICOS_IMAGE_TYPE,\n  RICOS_LINK_BUTTON_TYPE,\n  RICOS_LINK_PREVIEW_TYPE,\n  RICOS_LINK_TYPE,\n  RICOS_MENTION_TYPE,\n  RICOS_POLL_TYPE,\n  RICOS_SHAPE_TYPE,\n  RICOS_VERTICAL_EMBED_TYPE,\n  RICOS_VIDEO_TYPE,\n  type RicosContent,\n  type RicosContentBlock,\n  type RicosEntity,\n  type RicosInlineStyleRange,\n  SHAPE_TYPE,\n  SPOILER_TYPE,\n  TABLE_TYPE,\n  TEXT_COLOR_TYPE,\n  TEXT_HIGHLIGHT_TYPE,\n  TIPTAP_SHAPE_TYPE,\n  Version,\n  VERTICAL_EMBED_TYPE,\n  VIDEO_TYPE,\n  type VideoMedia,\n} from './ricos-content/index.js';\nexport { isContentEqual } from './ricos-content/lib/comapareDraftContent.js';\nexport { setupContentBuilder } from './ricos-content/lib/Content.js';\nexport { getPluginData, getText } from './ricos-content/lib/content-application.js';\nexport { fromDraft, fromPlainText, toDraft, toPlainText } from './ricos-content/lib/converters.js';\nexport { createEmptyContent } from './ricos-content/lib/createEmptyContent.js';\nexport { ensureDraftContent } from './ricos-content/lib/ensureDraftContent.js';\nexport { ensureRicosContent } from './ricos-content/lib/ensureRicosContent.js';\nexport { extract } from './ricos-content/lib/extract.js';\nexport { extractMedia } from './ricos-content/lib/extract-media.js';\nexport { getContentLength } from './ricos-content/lib/getContentLength.js';\nexport { isRichContentEqual } from './ricos-content/lib/is-rich-content-equal.js';\nexport { ensureContentId } from './ricos-content/lib/metadata-utils.js';\nexport { modify } from './ricos-content/lib/modify.js';\nexport {\n  createParagraphNode,\n  createTextNode,\n  initializeMetadata,\n} from './ricos-content/lib/nodeUtils.js';\nexport {\n  fromCKEditorHtml,\n  fromRichTextHtml,\n  type InterceptorToHtml,\n  toHtml,\n} from './ricos-content/lib/server-side-converters.js';\nexport { toPlainTextSync } from './ricos-content/lib/toPlainTextSync.js';\nexport { toTranslatables, translateContent } from './ricos-content/lib/translate.js';\nexport { truncateRichContent } from './ricos-content/lib/truncate-rich-content.js';\nexport { getCountableNodes, truncateContent } from './ricos-content/lib/truncateContent.js';\nexport { getAnchorableNodesQuery } from './ricos-content-query/index.js';\nexport { RicosEditor, type RicosEditorType } from './ricos-editor/index.js';\nexport {\n  type AppEmbedData,\n  AppEmbedData_AppType,\n  type AudioData,\n  type BulletedListData,\n  type ButtonData,\n  ButtonData_Type,\n  type CollapsibleListData,\n  CollapsibleListData_Direction,\n  CollapsibleListData_InitialExpandedItems,\n  type Decoration,\n  Decoration_Type,\n  DividerData_Alignment,\n  DividerData_LineStyle,\n  DividerData_Width,\n  type FileData,\n  FontSizeData_fontType,\n  type GalleryData,\n  type GalleryData_Item,\n  GalleryOptions_ItemStyle_Crop,\n  GalleryOptions_Layout_Orientation,\n  GalleryOptions_Layout_Type,\n  GalleryOptions_Thumbnails_Alignment,\n  type GIF,\n  type GIFData,\n  GIFData_GIFType,\n  type HeadingData,\n  type HTMLData,\n  HTMLData_Source,\n  ImageData,\n  type LayoutCellData,\n  type LayoutData,\n  LayoutData_ResponsivenessBehaviour,\n  LayoutData_VerticalAlignment_Alignment,\n  LayoutData_Banner_Origin,\n  LayoutData_DesignTarget,\n  type Link,\n  type Link_Rel,\n  Link_Target,\n  type LinkPreviewData,\n  type Media,\n  type MentionData,\n  type Node,\n  Node_Type,\n  type OrderedListData,\n  type ParagraphData,\n  PluginContainerData_Alignment,\n  type PluginContainerData_Spoiler,\n  PluginContainerData_Width_Type,\n  type PollData,\n  PollData_Design_PollDesign_Background_Type,\n  PollData_Layout_PollLayout_Direction,\n  PollData_Layout_PollLayout_Type,\n  PollData_Poll_Settings_Permissions_ViewRole,\n  PollData_Poll_Settings_Permissions_VoteRole,\n  RichContent,\n  type TextData,\n  TextStyle_TextAlignment,\n  type VideoData,\n} from './ricos-schema/legacy/wix/rich_content/v1/index.js';\nexport type { ValidationError } from './ricos-schema/next-schema/index.js';\nexport { validateRicosDocument } from './ricos-schema/next-schema/index.js';\nexport {\n  type AnchorDecoration,\n  type AppEmbedNode,\n  type AudioNode,\n  type BlockquoteNode,\n  type BulletedListNode,\n  type ButtonNode,\n  type CaptionNode,\n  type CodeBlockNode,\n  type CollapsibleItemBodyNode,\n  type CollapsibleItemNode,\n  type CollapsibleItemTitleNode,\n  type CollapsibleListNode,\n  type ColorPaletteManager,\n  type SetColors,\n  type CustomTextualStyle,\n  type DebugMode,\n  type DividerNode,\n  type EditorPlugin,\n  type EditorPluginCreator,\n  type EmbedNode,\n  type FileNode,\n  type FocusPosition,\n  type GalleryNode,\n  type GetToolbarSettings,\n  type GifNode,\n  type HeadingNode,\n  type HtmlNode,\n  type ImageNode,\n  type LinkDecoration,\n  type LinkPreviewNode,\n  type LinkSettings,\n  type ListItemNode,\n  type onAtomicBlockFocus,\n  type OnContentChangeFunction,\n  type onKeyboardShortcutActionArgs,\n  type onToolbarButtonClickArgs,\n  type OrderedListNode,\n  type PaletteRgbColors,\n  type ParagraphNode,\n  type PollNode,\n  type RefinedNode,\n  type RicosCustomStyles,\n  type RicosEditorAPI,\n  type RicosTheme,\n  type TableCellNode,\n  type TableNode,\n  type TableRowNode,\n  type TextAlignment,\n  type TextDirection,\n  type TextGroupButtons,\n  type TextNode,\n  type ToolbarButtonProps,\n  type ToolbarSettings,\n  type ToolbarSettingsFunctions,\n  ToolbarType,\n  type VideoNode,\n  type ViewerPlugin,\n  type ContentChangeMeta,\n  type ContentChangeSource,\n} from './ricos-types/index.js';\nexport { type HistorySettings } from './ricos-types/pluginTypes.js';\nexport { RicosViewer, type RicosViewerProps } from './ricos-viewer-next/index.js';\nexport { convertToGalleryItemList as convertItemData } from './_shared/media/convert-to-gallery-item-list.js';\nexport { getAbsoluteUrl } from './_shared/media/get-absolute-url.js';\nexport { PLUGIN_TOOLBAR_BUTTON_ID } from './_shared/plugin-toolbar/plugin-toolbar-buttons-ids.js';\nexport { quickStartViewerPlugins } from './_shared/quick-start-viewer-plugins/quick-start-viewer-plugins.js';\nexport { generateKey, isHexColor } from './wix-rich-content-common/index.js';\nexport { truncateContentState } from './wix-rich-content-common/lib/contentStateServices.js';\nexport { default as Tooltip } from './wix-rich-content-common/lib/Tooltip.js';\nexport {\n  EditorEvents,\n  EditorEventsContext,\n  type EditorEventsProps,\n  EditorEventsProvider,\n  withEditorContext,\n} from './editor-common/EditorEventsContext.js';\nexport {\n  BUTTON_TYPES,\n  FORMATTING_BUTTONS,\n  INSERT_PLUGIN_BUTTONS,\n  // TOOLBARS, // !DEPRECATED use ToolbarType from ricos-types\n} from './editor-common/index.js';\nexport { pluginAi } from './plugin-ai/index.js';\nexport {\n  audioButtonsTypes,\n  type AudioPluginEditorConfig,\n  pluginAudio,\n} from './plugin-audio/index.js';\nexport { pluginAudio as pluginAudioViewer } from './plugin-audio/viewer.js';\nexport {\n  type LinkButtonPluginEditorConfig,\n  pluginActionButton,\n  pluginLinkButton,\n} from './plugin-button/index.js';\nexport {\n  pluginActionButton as pluginActionButtonViewer,\n  pluginLinkButton as pluginLinkButtonViewer,\n} from './plugin-button/viewer.js';\nexport { pluginCodeBlock } from './plugin-code-block/index.js';\nexport { pluginCodeBlock as pluginCodeBlockViewer } from './plugin-code-block/viewer.js';\nexport {\n  type CollapsibleListComponentData,\n  pluginCollapsibleList,\n} from './plugin-collapsible-list/index.js';\nexport { pluginCollapsibleList as pluginCollapsibleListViewer } from './plugin-collapsible-list/viewer.js';\nexport { DIVIDER_BUTTONS, pluginDivider } from './plugin-divider/index.js';\nexport { pluginDivider as pluginDividerViewer } from './plugin-divider/viewer.js';\nexport { pluginEmoji } from './plugin-emoji/index.js';\nexport { pluginEmoji as pluginEmojiViewer } from './plugin-emoji/viewer.js';\nexport {\n  type FilePluginEditorConfig,\n  pluginFileUpload,\n} from './plugin-file-upload/index.js';\nexport {\n  fileExtensionToType,\n  FileTypes,\n} from './plugin-file-upload/lib/fileExtensionToType.js';\nexport { pluginFileUpload as pluginFileUploadViewer } from './plugin-file-upload/viewer.js';\nexport { pluginFontFamily } from './plugin-font-family/index.js';\nexport { pluginFontFamily as pluginFontFamilyViewer } from './plugin-font-family/viewer.js';\nexport {\n  type GalleryPluginEditorConfig,\n  pluginGallery,\n} from './plugin-gallery/index.js';\nexport { pluginGallery as pluginGalleryViewer } from './plugin-gallery/viewer.js';\nexport { pluginGiphy } from './plugin-giphy/index.js';\nexport { pluginGiphy as pluginGiphyViewer } from './plugin-giphy/viewer.js';\nexport { pluginHashtag } from './plugin-hashtag/index.js';\nexport { pluginHashtag as pluginHashtagViewer } from './plugin-hashtag/viewer.js';\nexport { pluginHeadings } from './plugin-headings/index.js';\nexport { htmlButtonsTypes, pluginHtml } from './plugin-html/index.js';\nexport { pluginHtml as pluginHtmlViewer } from './plugin-html/viewer.js';\nexport { pluginImage } from './plugin-image/index.js';\nexport { pluginImage as pluginImageViewer } from './plugin-image/viewer.js';\nexport { pluginIndent } from './plugin-indent/index.js';\nexport { pluginIndent as pluginIndentViewer } from './plugin-indent/viewer.js';\nexport { pluginInlineAi } from './plugin-inline-ai/index.js';\nexport { pluginLineSpacing } from './plugin-line-spacing/index.js';\nexport { pluginLineSpacing as pluginLineSpacingViewer } from './plugin-line-spacing/viewer.js';\nexport { pluginLink } from './plugin-link/index.js';\nexport { pluginLink as pluginLinkViewer } from './plugin-link/viewer.js';\nexport {\n  type LinkPreviewPluginEditorConfig,\n  LinkPreviewProviders,\n  pluginLinkPreview,\n} from './plugin-link-preview/index.js';\nexport { pluginLinkPreview as pluginLinkPreviewViewer } from './plugin-link-preview/viewer.js';\nexport {\n  type MentionsPluginEditorConfig,\n  pluginMentions,\n} from './plugin-mentions/index.js';\nexport { pluginMentions as pluginMentionsViewer } from './plugin-mentions/viewer.js';\nexport { pluginShape, SHAPE_RICOS_DEFAULTS } from './plugin-shape/index.js';\nexport { pluginShape as pluginShapeViewer } from './plugin-shape/viewer.js';\nexport {\n  pluginPoll,\n  type PollPluginEditorConfig,\n} from './plugin-social-polls/index.js';\nexport { pluginPoll as pluginPollViewer } from './plugin-social-polls/viewer.js';\nexport { pluginSpoiler, SpoilerEditorWrapper } from './plugin-spoiler/index.js';\nexport {\n  initSpoilersContentState,\n  pluginSpoiler as pluginSpoilerViewer,\n  SpoilerViewerWrapper,\n} from './plugin-spoiler/viewer.js';\nexport { pluginTable, TABLE_BUTTONS } from './plugin-table/index.js';\nexport { pluginTable as pluginTableViewer } from './plugin-table/viewer.js';\nexport { pluginTextColor, pluginTextHighlight } from './plugin-text-color/index.js';\nexport {\n  pluginTextColor as pluginTextColorViewer,\n  pluginTextHighlight as pluginTextHighlightViewer,\n} from './plugin-text-color/viewer.js';\nexport {\n  pluginVerticalEmbed,\n  verticalEmbedProviders,\n} from './plugin-vertical-embed/index.js';\nexport { pluginVerticalEmbed as pluginVerticalEmbedViewer } from './plugin-vertical-embed/viewer.js';\nexport {\n  pluginVideo,\n  videoButtonsTypes,\n  type VideoPluginEditorConfig,\n} from './plugin-video/index.js';\nexport { pluginVideo as pluginVideoViewer } from './plugin-video/viewer.js';\nexport {\n  TextSelectionToolbar,\n  TwitterButton,\n} from './text-selection-toolbar/index.js';\nexport type { TiptapAdapter } from './tiptap-editor/components/RichContentAdapter.js';\n\n// Converter factory for RichContent <-> ProseMirror conversion\nexport type { PmConverters, PmJson, PmMarkJson, PmNodeJson } from './converters/index.js';\nexport { createConverters, getAllPmConverters } from './converters/index.js';\n\n// Wixel Components\nexport {\n  RicosWidget,\n  type RicosWidgetProps,\n} from './ui-components/wixel-assistant/ricos-assistant-widget.js';\n\n/** deprecated */\nexport const MAP_TYPE = 'wix-draft-plugin-map';\n","import classNames from 'classnames';\nimport React from 'react';\n\nimport type { Node } from './../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport { Decoration_Type } from './../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport type { AnchorDecoration, NodeViewDecorator } from './../../ricos-types/index.js';\nimport { addAnchorTagToUrl, anchorScroll } from './../../wix-rich-content-common/index.js';\n\nimport { ANCHOR_LINK } from '../data-hooks.js';\nimport styles from '../statics/link-viewer-scss.js';\n\nconst decorator = (anchorDecoration: AnchorDecoration, element?: JSX.Element) => {\n  const { anchor } = anchorDecoration.anchorData;\n  return (\n    <a\n      key={`anchor-${element?.key}`}\n      target=\"_self\"\n      href={`#viewer-${anchor}`}\n      className={classNames(styles.link, styles.linkInViewer)}\n      onClick={e => {\n        e.stopPropagation(); // fix problem with wix platform, where it wouldn't scroll and sometimes jump to different page\n        e.preventDefault();\n\n        const anchorString = `viewer-${anchor}`;\n        const element = document.getElementById(anchorString);\n        addAnchorTagToUrl(anchorString);\n        element && anchorScroll(element);\n      }}\n      data-hook={ANCHOR_LINK}\n    >\n      {element}\n    </a>\n  );\n};\n\nconst AnchorDecorator: NodeViewDecorator<JSX.Element> = {\n  rule: (node: Node) =>\n    !!node.textData?.decorations?.some(({ type }) => type === Decoration_Type.ANCHOR),\n  decorate: ({ element, node }) => {\n    const anchorDecoration = node.textData?.decorations?.find(\n      ({ type }) => type === Decoration_Type.ANCHOR\n    ) as AnchorDecoration;\n    return decorator(anchorDecoration, element);\n  },\n  priority: 1000,\n};\n\nexport default AnchorDecorator;\n","import classNames from 'classnames';\nimport React, { useContext } from 'react';\n\nimport { RicosViewerContext } from './../../ricos-context/viewer/index.js';\nimport type { Node } from './../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport { Decoration_Type, Node_Type } from './../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport type { LinkDecoration } from './../../ricos-schema/next-schema/index.js';\nimport type { NodeViewDecorator, ViewerContextualData } from './../../ricos-types/index.js';\nimport { getLinkHrefUrl } from './../../_shared/link/get-link-href-url.js';\n\nimport { WEB_LINK } from '../data-hooks.js';\nimport styles from '../statics/link-viewer-scss.js';\nimport { LINK_TYPE } from '../types.js';\n\nconst decorator = (\n  element: JSX.Element,\n  linkDecoration: LinkDecoration,\n  contextualData: ViewerContextualData,\n  node: Node\n) => {\n  const { baseUrl } = useContext(RicosViewerContext);\n  const link = linkDecoration.linkData?.link;\n  const target = link?.target || contextualData.anchorTarget;\n  const rel = link?.rel || {};\n  const relValue = [\n    'noopener',\n    rel.nofollow ? 'nofollow' : null,\n    rel.sponsored ? 'sponsored' : null,\n    rel.ugc ? 'ugc' : null,\n    rel.noreferrer ? 'noreferrer' : null,\n  ]\n    .filter(Boolean)\n    .join(' ');\n\n  const onClick = () =>\n    contextualData.helpers.onViewerAction?.(LINK_TYPE, 'Click', '', node.id, {\n      type: Node_Type.TEXT,\n      textData: node.textData,\n    });\n\n  return (\n    <a\n      key={`link=${element.key}`}\n      target={`_${target?.toLowerCase?.()}`}\n      href={link ? getLinkHrefUrl(link, baseUrl) : undefined}\n      rel={relValue}\n      className={classNames(styles.link, styles.linkInViewer)}\n      data-hook={WEB_LINK}\n      onClick={onClick}\n    >\n      {element}\n    </a>\n  );\n};\n\nconst LinkDecorator: NodeViewDecorator<JSX.Element> = {\n  rule: (node: Node) =>\n    !!node.textData?.decorations?.some(({ type }) => type === Decoration_Type.LINK),\n  decorate: ({ element, node, context }) => {\n    const linkDecoration = node.textData?.decorations?.find(\n      ({ type }) => type === Decoration_Type.LINK\n    ) as LinkDecoration;\n    return decorator(element as JSX.Element, linkDecoration, context, node);\n  },\n  priority: 1000,\n};\n\nexport default LinkDecorator;\n","import { type IStyles } from '@wix/tpa-style-webpack-plugin/dist/runtime/types';\nimport React, { useContext, createContext, type ReactNode } from 'react';\n\nimport { type Breakpoint } from '../constants';\nimport {\n  type UserData,\n  type Currency,\n  type PaymentSettingsNavigationConfig,\n} from '../types';\n\nexport interface Config {\n  language: string;\n  regionalFormat: string;\n  accountLanguage: string;\n  timezone?: string;\n  instance?: string;\n  isMobile?: boolean;\n  currency?: Currency;\n  paymentSettingsNavigationConfig?: PaymentSettingsNavigationConfig;\n  atlasBaseUrl?: string;\n  breakpoint?: Breakpoint;\n  userData?: UserData;\n  compId?: string;\n  isPreview?: boolean;\n  isEditor?: boolean;\n  isComposer?: boolean;\n  isRTL?: boolean;\n  enableAnimations?: boolean;\n  baseUrl?: string;\n  style?: IStyles;\n}\n\nexport const DEFAULT_CONFIG: Config = {\n  language: 'en',\n  accountLanguage: 'en',\n  regionalFormat: 'en',\n};\n\ntype RequiredConfigKeys = 'language' | 'regionalFormat' | 'accountLanguage';\n\nexport type ConfigInput = Omit<Config, RequiredConfigKeys> &\n  Partial<Pick<Config, RequiredConfigKeys>>;\n\nexport const ConfigContext = createContext<Config | null>(null);\n\nexport interface ConfigContextProviderProps {\n  value: ConfigInput;\n  children: ReactNode;\n}\n\nexport function ConfigContextProvider({\n  value: configInput,\n  children,\n}: ConfigContextProviderProps) {\n  const config: Config = {\n    ...configInput,\n    language: configInput.language ?? DEFAULT_CONFIG.language,\n    accountLanguage:\n      configInput.accountLanguage ?? DEFAULT_CONFIG.accountLanguage,\n    regionalFormat: configInput.regionalFormat ?? DEFAULT_CONFIG.regionalFormat,\n  };\n  return React.createElement(\n    ConfigContext.Provider,\n    { value: config },\n    children,\n  );\n}\n\nexport function useConfig() {\n  const context = useContext(ConfigContext);\n  if (context === undefined) {\n    throw new Error('useConfig must be used within a ConfigContext.Provider');\n  }\n\n  return context || DEFAULT_CONFIG;\n}\n","import { Node_Type, type Node } from '@wix/ricos';\nimport {\n  type NodeViewDecorator,\n  type ViewerPluginCreator,\n} from '@wix/ricos/dist/src/ricos-types';\nimport React from 'react';\n\nexport const htmlAttributesPlugin: ViewerPluginCreator<{}> = (_) => ({\n  config: {},\n  type: '',\n  nodeViewDecorators: [htmlAttributesDecorator],\n  nodeViewRenderers: {\n    [Node_Type.EXTERNAL]: (__) => <></>,\n  },\n});\n\nconst htmlAttributesDecorator: NodeViewDecorator<React.JSX.Element> = {\n  rule: (node: Node) => node.type === Node_Type.EXTERNAL,\n  decorate: ({ node }) => {\n    if (node.textData?.text == null) {\n      return <></>;\n    }\n    const props = Object.fromEntries(\n      Object.entries(node.externalData?.fields ?? []).map(([k, v]) => [\n        k,\n        v.stringValue,\n      ]),\n    );\n    return <span {...props}>{node.textData?.text}</span>;\n  },\n};\n","import React, { createContext, type ReactNode, useContext } from 'react';\n\nimport { useConfig } from './config-context';\n\nexport const UniqueFieldSuffixContext = createContext<string | undefined>(\n  undefined,\n);\n\nexport const UniqueFieldSuffixContextProvider = ({\n  parentId = 'id',\n  children,\n}: {\n  children: ReactNode;\n  parentId?: string;\n}) => {\n  const { compId = 'comp' } = useConfig();\n  const uniqueId = `${compId}-${parentId.split('-').at(0)}`;\n\n  return (\n    <UniqueFieldSuffixContext.Provider value={uniqueId}>\n      {children}\n    </UniqueFieldSuffixContext.Provider>\n  );\n};\n\nexport function useUniqueFieldSuffix() {\n  const context = useContext(UniqueFieldSuffixContext);\n  if (context === undefined) {\n    throw new Error(\n      'useUniqueFieldSuffix must be used within a UniqueFieldSuffixContextProvider',\n    );\n  }\n\n  return context;\n}\n","import React, { createContext, type FC, useContext, useMemo } from 'react';\n\ninterface FocusedFieldProviderProps {\n  children: React.ReactNode;\n}\n\ninterface FocusedFieldProps {\n  focusedFieldId: string | undefined;\n  setFocusedFieldId: (id: string | undefined) => void;\n}\n\nconst FocusedFieldContext = createContext<FocusedFieldProps | undefined>(\n  undefined,\n);\n\nexport const FocusedFieldProvider: FC<FocusedFieldProviderProps> = ({\n  children,\n}) => {\n  const [focusedFieldId, setFocusedFieldId] = React.useState<\n    string | undefined\n  >(undefined);\n\n  const contextValue = useMemo(() => {\n    return {\n      focusedFieldId,\n      setFocusedFieldId,\n    };\n  }, [focusedFieldId, setFocusedFieldId]);\n\n  return (\n    <FocusedFieldContext.Provider value={contextValue}>\n      {children}\n    </FocusedFieldContext.Provider>\n  );\n};\n\nexport function useFocusedField() {\n  const context = useContext(FocusedFieldContext);\n  if (context === undefined) {\n    throw new Error(\n      'useFocusedField must be used within a FocusedFieldProvider',\n    );\n  }\n  return context;\n}\n","import React, {\n  type ReactNode,\n  createContext,\n  useContext,\n  useEffect,\n  useMemo,\n  useRef,\n  useState,\n} from 'react';\n\nimport { type FormValues } from '../ui/form/types';\n\nimport { useFocusedField } from './focused-field-provider';\n\ntype Events = {\n  submitSuccessCounter: number;\n  submittedValues: FormValues;\n  fireSubmitSuccess: (values?: FormValues) => void;\n};\n\nconst EventsContext = createContext<Events | undefined>(undefined);\n\nexport type EventsProviderProps = {\n  children: ReactNode;\n};\n\nexport const EventsProvider = ({ children }: EventsProviderProps) => {\n  const [submitSuccessCounter, setSubmitSuccessCounter] = useState(0);\n  const [submittedValues, setSubmittedValues] = useState<FormValues>({});\n\n  const value: Events = useMemo(\n    () => ({\n      submitSuccessCounter,\n      submittedValues,\n      fireSubmitSuccess: (values) => {\n        setSubmitSuccessCounter((previous) => previous + 1);\n        setSubmittedValues(values || {});\n      },\n    }),\n    [submitSuccessCounter, submittedValues],\n  );\n\n  return (\n    <EventsContext.Provider value={value}>{children}</EventsContext.Provider>\n  );\n};\n\nconst useEvents = () => {\n  const context = useContext(EventsContext);\n\n  if (context === undefined) {\n    throw new Error('useEvents must be used within a EventsProvider');\n  }\n\n  return context;\n};\n\nexport const useSubmitSuccessTrigger = () => {\n  const { fireSubmitSuccess } = useEvents();\n  return fireSubmitSuccess;\n};\n\nexport const useSubmitSuccessEvent = (\n  onSubmitSuccess: (values: FormValues) => void,\n) => {\n  const { submitSuccessCounter, submittedValues = {} } = useEvents();\n  const previousCounter = useRef(submitSuccessCounter);\n\n  useEffect(() => {\n    if (previousCounter.current !== submitSuccessCounter) {\n      previousCounter.current = submitSuccessCounter;\n      onSubmitSuccess(submittedValues);\n    }\n  }, [submitSuccessCounter, onSubmitSuccess, submittedValues]);\n};\n\nexport const useFocusGroupFieldEvent = (\n  groupFieldId: string | undefined,\n  getFocusedChildFieldId: () => string | undefined,\n) => {\n  const { focusedFieldId, setFocusedFieldId } = useFocusedField();\n\n  useEffect(() => {\n    if (groupFieldId && focusedFieldId === groupFieldId) {\n      const fieldId = getFocusedChildFieldId();\n      if (fieldId) {\n        setFocusedFieldId(fieldId);\n      }\n    }\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [groupFieldId, focusedFieldId, setFocusedFieldId]);\n};\n\nexport const useFocusFieldEvent = (\n  onFocusField: () => void,\n  fieldId?: string,\n) => {\n  const { focusedFieldId, setFocusedFieldId } = useFocusedField();\n\n  useEffect(() => {\n    if (fieldId && focusedFieldId && focusedFieldId === fieldId) {\n      onFocusField();\n      setFocusedFieldId(undefined);\n    }\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [fieldId, focusedFieldId, setFocusedFieldId]);\n};\n","import React, {\n  createContext,\n  type ReactNode,\n  useContext,\n  useMemo,\n  useRef,\n} from 'react';\n\ntype ScrollContextProps = {\n  scrollTo: (element: HTMLDivElement) => void;\n};\n\nconst ScrollContext = createContext<ScrollContextProps | undefined>(undefined);\n\nexport interface ScrollProviderProps {\n  children: ReactNode;\n}\n\nexport const ScrollProvider = ({ children }: ScrollProviderProps) => {\n  const scrollViewRef = useRef<HTMLDivElement>(null);\n\n  const value: ScrollContextProps = useMemo(\n    () => ({\n      scrollTo: (element) => {\n        if (element && scrollViewRef.current) {\n          const { top } = element.getBoundingClientRect();\n          if (top < 0 || top > window.innerHeight) {\n            const headerHeight = getSiteHeaderHeight(scrollViewRef.current);\n            const wixAdHeight = getWixAdHeight();\n            const newTop =\n              top + window.scrollY - 20 - headerHeight - wixAdHeight;\n            window.scrollTo({\n              top: newTop,\n              behavior: 'smooth',\n            });\n          }\n        }\n      },\n    }),\n    [],\n  );\n\n  return (\n    <div ref={scrollViewRef}>\n      <ScrollContext.Provider value={value}>{children}</ScrollContext.Provider>\n    </div>\n  );\n};\n\nexport function useScroll() {\n  const context = useContext(ScrollContext);\n  if (context === undefined) {\n    throw new Error('useScroll must be used within a ScrollProvider');\n  }\n  return context;\n}\n\nexport function getSiteHeaderHeight(formElement: HTMLDivElement): number {\n  const classicHeader = document.querySelector('#SITE_HEADER');\n\n  const potentialHeader = formElement.closest('main')?.previousElementSibling;\n  const studioHeader =\n    potentialHeader?.tagName === 'HEADER' ? potentialHeader : undefined;\n\n  const header = classicHeader || studioHeader;\n  const headerPosition = header && window.getComputedStyle(header).position;\n\n  return header && (headerPosition === 'sticky' || headerPosition === 'fixed')\n    ? header.getBoundingClientRect().height\n    : 0;\n}\n\nexport function getWixAdHeight(): number {\n  const ad = document.querySelector('#WIX_ADS');\n\n  return ad && window.getComputedStyle(ad).position === 'fixed'\n    ? ad.getBoundingClientRect().height\n    : 0;\n}\n","import type { i18n } from '@wix/fe-essentials/i18n';\nimport { type TOptions } from 'i18next';\nimport { createContext, useContext } from 'react';\n\nexport { Trans } from '@wix/wix-i18n-config';\nexport type { i18n } from '@wix/fe-essentials/i18n';\n\n// Workaround for https://github.com/isaachinman/next-i18next/issues/1781\nexport type TFunction = (key: string, options?: TOptions | string) => string;\n\nexport interface TranslationProps {\n  i18n: i18n;\n  t: TFunction;\n}\n\nexport const TranslationContext = createContext<TranslationProps | undefined>(\n  undefined,\n);\n\nexport function useTranslation() {\n  const context = useContext(TranslationContext);\n  if (context === undefined) {\n    throw new Error('useTranslation must be used within a TranslationProvider');\n  }\n  return context;\n}\n","import { createContext, useContext } from 'react';\n\nimport { type Experiments } from '../types';\n\nexport const ExperimentsContext = createContext<Experiments | undefined>(\n  undefined,\n);\n\nexport const useExperiments = () => {\n  const experiments = useContext(ExperimentsContext) || {};\n\n  return {\n    experiments,\n    isExperimentEnabled: (spec: string) =>\n      experiments[spec] === true || experiments[spec] === 'true' || false,\n  };\n};\n","export function generateUUID() {\n  let uuid = '';\n  const hexValues = '0123456789abcdef';\n\n  for (let i = 0; i < 36; i++) {\n    if (i === 8 || i === 13 || i === 18 || i === 23) {\n      uuid += '-';\n    } else if (i === 14) {\n      uuid += '4';\n    } else {\n      uuid += hexValues.charAt(Math.floor(Math.random() * hexValues.length));\n    }\n  }\n\n  return uuid;\n}\n\nexport function isUUID(uuid: string): boolean {\n  return /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/.test(\n    uuid,\n  );\n}\n","import { type FormTemplate } from '@wix/ambassador-forms-v1-form-template/types';\nimport {\n  type Form,\n  type FormField,\n  type ItemLayout,\n  type Step,\n} from '@wix/ambassador-forms-v4-form/types';\n\nexport const addFieldToSchema = (\n  form: Form | FormTemplate,\n  field: FormField,\n  layout: ItemLayout,\n) => {\n  const newSteps: Step[] | undefined = form.steps?.map((step) => {\n    return {\n      ...step,\n      layout: {\n        ...step.layout,\n        large: {\n          ...(step.layout?.large || {}),\n          items:\n            step.layout?.large?.items?.map((item) => {\n              return {\n                ...item,\n                row: layout.row! <= item.row! ? (item.row || 0) + 1 : item.row,\n              };\n            }) || step.layout?.large?.items,\n        },\n      },\n    };\n  });\n  newSteps?.[0].layout?.large?.items?.unshift(layout);\n\n  return {\n    ...form,\n    fields: [field, ...(form.fields || [])],\n    steps: newSteps || form.steps,\n  };\n};\n","import type { Logger } from '@wix/fe-essentials/bi';\nimport { createContext, useContext } from 'react';\n\nexport const BiContext = createContext<Logger | undefined>(undefined);\n\nexport type { Logger };\n\nexport function useBi() {\n  const context = useContext(BiContext);\n  if (context === undefined) {\n    throw new Error('useBi must be used within a BiProvider');\n  }\n  return context;\n}\n","export const getPattern = (multipleOf: number) => {\n  const decimals = getNumberOfDecimals(multipleOf);\n  const regex =\n    multipleOf === 1 || typeof multipleOf === 'undefined' || multipleOf === null\n      ? `^-?\\\\d*?$`\n      : `^-?\\\\d*(\\\\.\\\\d{0,${decimals}})?$`;\n  return regex;\n};\n\nexport const getNumberOfDecimals = (multipleOf: number) => {\n  return String(multipleOf).split('.')?.[1]?.length || 0;\n};\n\nexport const getValidNumberInput = (\n  input: string,\n  multipleOf: number,\n  previousValidValue: string | undefined,\n  locale?: string,\n): { validInput: string; validNumber: number | undefined } => {\n  if (input.trim() === '') {\n    return { validInput: '', validNumber: undefined }; // allow clear input\n  }\n\n  const inputNumber = inputToNumber(input);\n  if (\n    isNumberInputValid(inputNumber, multipleOf) &&\n    inputNumber < Number.MAX_SAFE_INTEGER\n  ) {\n    return {\n      validInput: localizeNumberInput(input, locale),\n      validNumber: inputNumber,\n    };\n  }\n\n  return previousValidValue\n    ? {\n        validInput: previousValidValue,\n        validNumber: inputToNumber(previousValidValue),\n      }\n    : { validInput: '', validNumber: undefined };\n};\n\nconst inputToNumber = (input: string): number =>\n  Number(normalizeDecimalSeparator(input));\n\nexport const localizeNumberInput = (input: string, locale?: string): string => {\n  const decimalSeparator = locale\n    ? Intl.NumberFormat(locale)\n        .formatToParts(1.1)\n        .find((part) => part.type === 'decimal')?.value\n    : undefined;\n  return decimalSeparator ? input.replace(/[.,]/, decimalSeparator) : input;\n};\n\nexport const isNumberInputValid = (\n  value: number,\n  multipleOf: number,\n): boolean => {\n  const multipleOfRegex = getPattern(multipleOf);\n  const validator = new RegExp(multipleOfRegex);\n\n  return validator.test(`${value}`);\n};\n\nexport const normalizeDecimalSeparator = (value = '') =>\n  value.replace(',', '.');\n\nexport const isNumberInputPossible = (value = '', multipleOf: number) => {\n  if (multipleOf === 1 && value.indexOf('.') !== -1) {\n    return false;\n  } else if (value === '.' || value === '-') {\n    return true;\n  }\n\n  return isNumberInputValid(Number(value), multipleOf);\n};\n","import { DayOfWeek } from '@wix/ambassador-forms-v4-form/types';\nimport type {\n  Availability,\n  DateRange,\n} from '@wix/ambassador-forms-v4-form/types';\n\nimport { startOfDay } from '../../../date-localization/local-date';\n\nexport const ALL_DAYS: DayOfWeek[] = [\n  DayOfWeek.SUNDAY,\n  DayOfWeek.MONDAY,\n  DayOfWeek.TUESDAY,\n  DayOfWeek.WEDNESDAY,\n  DayOfWeek.THURSDAY,\n  DayOfWeek.FRIDAY,\n  DayOfWeek.SATURDAY,\n];\n\nexport const DEFAULT_AVAILABILITY: Availability & {\n  availableDays: DayOfWeek[];\n} = {\n  availableDays: ALL_DAYS,\n};\n\nconst NUMERIC_DAY_TO_STRING: Record<number, DayOfWeek> = {\n  0: DayOfWeek.SUNDAY,\n  1: DayOfWeek.MONDAY,\n  2: DayOfWeek.TUESDAY,\n  3: DayOfWeek.WEDNESDAY,\n  4: DayOfWeek.THURSDAY,\n  5: DayOfWeek.FRIDAY,\n  6: DayOfWeek.SATURDAY,\n};\n\nexport function isDateAvailable(\n  date: Date | string,\n  availability: Availability,\n): boolean {\n  const d = date instanceof Date ? date : new Date(date);\n\n  if (availability.availableDays) {\n    const dayOfWeek = NUMERIC_DAY_TO_STRING[d.getDay()];\n\n    if (!availability.availableDays.includes(dayOfWeek)) {\n      return false;\n    }\n  }\n\n  if (availability.availableDates && availability.availableDates.length > 0) {\n    const isInAvailableRange = availability.availableDates.some((range) =>\n      isDateInRange(d, range),\n    );\n    if (!isInAvailableRange) {\n      return false;\n    }\n  }\n\n  if (\n    availability.unavailableDates &&\n    availability.unavailableDates.length > 0\n  ) {\n    const isInUnavailableRange = availability.unavailableDates.some((range) =>\n      isDateInRange(d, range),\n    );\n    if (isInUnavailableRange) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\nfunction isDateInRange(date: Date, range: DateRange): boolean {\n  if (!range.start || !range.end) {\n    return true;\n  }\n\n  const checkDate = startOfDay(date);\n  const startDate = startOfDay(new Date(range.start));\n  const endDate = startOfDay(new Date(range.end));\n\n  return checkDate >= startDate && checkDate <= endDate;\n}\n","const LOCAL_DATE_FORMAT_REGEX = /^\\d{4}-\\d{2}-\\d{2}$/;\n\nexport function isLocalDate(dateString: string): boolean {\n  if (!dateString || typeof dateString !== 'string') {\n    return false;\n  }\n\n  if (!LOCAL_DATE_FORMAT_REGEX.test(dateString)) {\n    return false;\n  }\n\n  const date = new Date(dateString);\n  return !isNaN(date.getTime());\n}\n\nexport function formatLocalDate(date: Date): string {\n  const year = date.getFullYear();\n  const month = String(date.getMonth() + 1).padStart(2, '0');\n  const day = String(date.getDate()).padStart(2, '0');\n  return `${year}-${month}-${day}`;\n}\n\nexport const createUTCDateFromFields = (date: Date) => {\n  return new Date(\n    Date.UTC(\n      date.getFullYear(),\n      date.getMonth(),\n      date.getDate(),\n      date.getHours(),\n      date.getMinutes(),\n      date.getSeconds(),\n      date.getMilliseconds(),\n    ),\n  ).toISOString();\n};\n\nexport function parseLocalDate(dateString: string): Date | null {\n  if (!isLocalDate(dateString)) {\n    return null;\n  }\n\n  const [year, month, day] = dateString.split('-').map(Number);\n  return new Date(year, month - 1, day);\n}\n\nexport function startOfDay(date: Date): Date {\n  const result = new Date(date);\n  result.setHours(0, 0, 0, 0);\n  return result;\n}\n","// Sun to Sat\nexport type FirstDayOfWeek = 0 | 1 | 2 | 3 | 4 | 5 | 6;\n\n// ISO 8601 week starts on Monday\nconst DEFAULT_FIRST_DAY: FirstDayOfWeek = 1;\n\nexport function getFirstDayOfTheWeek(locale: string): FirstDayOfWeek {\n  try {\n    const intlLocale = new Intl.Locale(locale) as LocaleWithWeekInfo;\n\n    if (intlLocale.getWeekInfo) {\n      const weekInfo = intlLocale.getWeekInfo();\n      const firstDay = weekInfo.firstDay;\n\n      if (firstDay !== undefined) {\n        return (firstDay === 7 ? 0 : firstDay) as FirstDayOfWeek;\n      }\n    }\n\n    return getFirstDayManual(locale);\n  } catch {\n    return getFirstDayManual(locale);\n  }\n}\n\ninterface LocaleWithWeekInfo extends Intl.Locale {\n  getWeekInfo?: () => {\n    firstDay: number;\n    weekend?: number[];\n    minimalDays?: number;\n  };\n}\n\n// CLDR v48 region data (2024-01-08)\n// Source: https://github.com/unicode-org/cldr-json/blob/main/cldr-json/cldr-core/supplemental/weekData.json\n// prettier-ignore\nconst REGIONS_STARTING_SATURDAY = ['AF', 'BH', 'DJ', 'DZ', 'EG', 'IQ', 'IR', 'JO', 'KW', 'LY', 'OM', 'QA', 'SD', 'SY'];\n// prettier-ignore\nconst REGIONS_STARTING_SUNDAY = ['AG', 'AS', 'BD', 'BR', 'BS', 'BT', 'BW', 'BZ', 'CA', 'CO', 'DM', 'DO', 'ET', 'GT', 'GU', 'HK', 'HN', 'ID', 'IL', 'IN', 'IS', 'JM', 'JP', 'KE', 'KH', 'KR', 'LA', 'MH', 'MM', 'MO', 'MT', 'MX', 'MZ', 'NI', 'NP', 'PA', 'PE', 'PH', 'PK', 'PR', 'PT', 'PY', 'SA', 'SG', 'SV', 'TH', 'TT', 'TW', 'UM', 'US', 'VE', 'VI', 'WS', 'YE', 'ZA', 'ZW'];\nconst LANGUAGES_STARTING_SATURDAY = ['ar'];\n// prettier-ignore\nconst LANGUAGES_STARTING_SUNDAY = ['en', 'he', 'hi', 'id', 'ja', 'ko', 'pt', 'tl', 'th'];\n\n// Fallback for browsers without Intl.Locale.getWeekInfo() support (e.g., Firefox)\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale/getWeekInfo\n// Uses CLDR region data. For Wix-supported language-only locales, uses inferred defaults.\nfunction getFirstDayManual(locale: string): FirstDayOfWeek {\n  try {\n    const intlLocale = new Intl.Locale(locale);\n    const language = intlLocale.language?.toLowerCase();\n    const region = intlLocale.region?.toUpperCase();\n\n    if (region) {\n      if (REGIONS_STARTING_SUNDAY.includes(region)) {\n        return 0;\n      }\n      if (REGIONS_STARTING_SATURDAY.includes(region)) {\n        return 6;\n      }\n      return DEFAULT_FIRST_DAY;\n    }\n\n    if (language) {\n      if (LANGUAGES_STARTING_SUNDAY.includes(language)) {\n        return 0;\n      }\n      if (LANGUAGES_STARTING_SATURDAY.includes(language)) {\n        return 6;\n      }\n    }\n\n    return DEFAULT_FIRST_DAY;\n  } catch {\n    return DEFAULT_FIRST_DAY;\n  }\n}\n","import { sdk as imageClientSDK } from '@wix/image-kit';\n\nimport { type Image } from '../types';\n\nexport function getImageURL(\n  { id, width, height }: Image,\n  targetWidth: string | number,\n  targetHeight: string | number,\n  fit: 'fill' | 'fit' = 'fill',\n) {\n  const urlFunction =\n    fit === 'fit'\n      ? imageClientSDK.getScaleToFitImageURL\n      : imageClientSDK.getScaleToFillImageURL;\n\n  return urlFunction(\n    id!,\n    width!,\n    height!,\n    typeof targetWidth === 'number' ? targetWidth : parseInt(targetWidth, 10),\n    typeof targetHeight === 'number'\n      ? targetHeight\n      : parseInt(targetHeight, 10),\n  );\n}\n","export const WIX_PROTOCOL = 'wix:';\nexport const SDKRequestToRESTRequestRenameMap = {\n    _id: 'id',\n    _createdDate: 'createdDate',\n    _updatedDate: 'updatedDate',\n};\nexport const RESTResponseToSDKResponseRenameMap = {\n    id: '_id',\n    createdDate: '_createdDate',\n    updatedDate: '_updatedDate',\n};\nexport const ITEMS_RESULT_PROPERTY_NAME = 'items';\nexport const PAGING_METADATA_RESULT_PROPERTY_NAME = 'pagingMetadata';\nexport const DEFAULT_LIMIT = 50;\n","import { RESTResponseToSDKResponseRenameMap, SDKRequestToRESTRequestRenameMap, } from './constants.js';\n/**\n * Recursively rename nested keys provided in `renameMap` in the given object.\n * Providing a list of paths to ignore will prevent renaming of keys in nested objects.\n *\n * Paths are provided in the format of 'path.to.nested.field'\n * @param payload The object to rename keys for\n * @param renameMap A map of keys to rename, where the key is the original key and the value is the new key\n * @param ignorePaths Paths of nested fields to ignore while traversing the object\n * @returns The object with renamed keys\n */\nexport function renameAllNestedKeys(payload, renameMap, ignorePaths) {\n    const isIgnored = (path) => ignorePaths.includes(path);\n    const traverse = (obj, path) => {\n        if (Array.isArray(obj)) {\n            obj.forEach((item) => {\n                traverse(item, path);\n            });\n        }\n        else if (typeof obj === 'object' && obj !== null) {\n            const objAsRecord = obj;\n            Object.keys(objAsRecord).forEach((key) => {\n                const newPath = path === '' ? key : `${path}.${key}`;\n                if (isIgnored(newPath)) {\n                    return;\n                }\n                const transformedKey = renameKey(key, renameMap);\n                if (transformedKey !== key && !(transformedKey in objAsRecord)) {\n                    objAsRecord[transformedKey] = objAsRecord[key];\n                    // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n                    delete objAsRecord[key];\n                }\n                traverse(objAsRecord[transformedKey], newPath);\n            });\n        }\n    };\n    traverse(payload, '');\n    return payload;\n}\nfunction renameKey(key, renameMap) {\n    let transformedKey;\n    if (key.includes('.')) {\n        const parts = key.split('.');\n        const transformedParts = parts.map((part) => renameMap[part] ?? part);\n        transformedKey = transformedParts.join('.');\n    }\n    else {\n        transformedKey = renameMap[key] ?? key;\n    }\n    return transformedKey;\n}\nexport function renameKeysFromSDKRequestToRESTRequest(payload, ignorePaths = []) {\n    return renameAllNestedKeys(payload, SDKRequestToRESTRequestRenameMap, ignorePaths);\n}\nexport function renameKeysFromRESTResponseToSDKResponse(payload, ignorePaths = []) {\n    return renameAllNestedKeys(payload, RESTResponseToSDKResponseRenameMap, ignorePaths);\n}\n","function transformPath(obj, { path, isRepeated, isMap, }, transformFn) {\n    const pathParts = path.split('.');\n    if (pathParts.length === 1 && path in obj) {\n        obj[path] = isRepeated\n            ? obj[path].map(transformFn)\n            : isMap\n                ? Object.fromEntries(Object.entries(obj[path]).map(([key, value]) => [key, transformFn(value)]))\n                : transformFn(obj[path]);\n        return obj;\n    }\n    const [first, ...rest] = pathParts;\n    if (first.endsWith('{}')) {\n        const cleanPath = first.slice(0, -2);\n        obj[cleanPath] = Object.fromEntries(Object.entries(obj[cleanPath]).map(([key, value]) => [\n            key,\n            transformPath(value, { path: rest.join('.'), isRepeated, isMap }, transformFn),\n        ]));\n    }\n    else if (Array.isArray(obj[first])) {\n        obj[first] = obj[first].map((item) => transformPath(item, { path: rest.join('.'), isRepeated, isMap }, transformFn));\n    }\n    else if (first in obj &&\n        typeof obj[first] === 'object' &&\n        obj[first] !== null) {\n        obj[first] = transformPath(obj[first], { path: rest.join('.'), isRepeated, isMap }, transformFn);\n    }\n    else if (first === '*') {\n        Object.keys(obj).reduce((acc, curr) => {\n            acc[curr] = transformPath(obj[curr], { path: rest.join('.'), isRepeated, isMap }, transformFn);\n            return acc;\n        }, obj);\n    }\n    return obj;\n}\nexport function transformPaths(obj, transformations) {\n    return transformations.reduce((acc, { paths, transformFn }) => paths.reduce((transformerAcc, path) => transformPath(transformerAcc, path, transformFn), acc), obj);\n}\n","import { WIX_PROTOCOL } from './constants.js';\nexport function alignIfLegacy(url, type) {\n    const { protocol } = new URL(url);\n    return protocol === `${type}:` ? `${WIX_PROTOCOL}${url}` : url;\n}\nexport function removeUndefinedKeys(obj) {\n    return Object.fromEntries(Object.entries(obj).filter(([, value]) => value !== undefined));\n}\nexport function constantCase(input) {\n    return split(input)\n        .map((part) => part.toLocaleUpperCase())\n        .join('_');\n}\nconst SPLIT_LOWER_UPPER_RE = /([\\p{Ll}\\d])(\\p{Lu})/gu;\nconst SPLIT_UPPER_UPPER_RE = /(\\p{Lu})([\\p{Lu}][\\p{Ll}])/gu;\nconst SPLIT_REPLACE_VALUE = '$1\\0$2';\nconst DEFAULT_STRIP_REGEXP = /[^\\p{L}\\d]+/giu;\nexport function split(value) {\n    let result = value.trim();\n    result = result\n        .replace(SPLIT_LOWER_UPPER_RE, SPLIT_REPLACE_VALUE)\n        .replace(SPLIT_UPPER_UPPER_RE, SPLIT_REPLACE_VALUE);\n    result = result.replace(DEFAULT_STRIP_REGEXP, '\\0');\n    let start = 0;\n    let end = result.length;\n    // Trim the delimiter from around the output string.\n    while (result.charAt(start) === '\\0') {\n        start++;\n    }\n    if (start === end) {\n        return [];\n    }\n    while (result.charAt(end - 1) === '\\0') {\n        end--;\n    }\n    return result.slice(start, end).split(/\\0/g);\n}\n","import { constantCase } from './utils.js';\nconst isValidationError = (httpClientError) => 'validationError' in (httpClientError.response?.data?.details ?? {});\nconst isApplicationError = (httpClientError) => 'applicationError' in\n    (httpClientError.response?.data?.details ?? {});\nconst isClientError = (httpClientError) => (httpClientError.response?.status ?? -1) >= 400 &&\n    (httpClientError.response?.status ?? -1) < 500;\nexport function transformError(httpClientError, pathsToArguments = {\n    explicitPathsToArguments: {},\n    spreadPathsToArguments: {},\n    singleArgumentUnchanged: false,\n}, argumentNames = []) {\n    if (typeof httpClientError !== 'object' || httpClientError === null) {\n        throw httpClientError;\n    }\n    if (isValidationError(httpClientError)) {\n        return buildValidationError(httpClientError, pathsToArguments, argumentNames);\n    }\n    if (isApplicationError(httpClientError)) {\n        return buildApplicationError(httpClientError);\n    }\n    if (isClientError(httpClientError)) {\n        const status = httpClientError.response?.status;\n        const statusText = httpClientError.response?.statusText ?? 'UNKNOWN';\n        const message = httpClientError.response?.data?.message ?? statusText;\n        const details = {\n            applicationError: {\n                description: statusText,\n                code: constantCase(statusText),\n                data: {},\n            },\n            requestId: httpClientError.requestId,\n        };\n        return wrapError(httpClientError, {\n            message: JSON.stringify({\n                message,\n                details,\n            }, null, 2),\n            extraProperties: {\n                details,\n                status,\n            },\n        });\n    }\n    return buildSystemError(httpClientError);\n}\nconst buildValidationError = (httpClientError, pathsToArguments, argumentNames) => {\n    const validationErrorResponse = httpClientError.response\n        ?.data;\n    const requestId = httpClientError.requestId;\n    const { fieldViolations } = validationErrorResponse.details.validationError;\n    const transformedFieldViolations = violationsWithRenamedFields(pathsToArguments, fieldViolations, argumentNames)?.sort((a, b) => (a.field < b.field ? -1 : 1));\n    const message = `INVALID_ARGUMENT: ${transformedFieldViolations\n        ?.map(({ field, description }) => `\"${field}\" ${description}`)\n        ?.join(', ')}`;\n    const details = {\n        validationError: { fieldViolations: transformedFieldViolations },\n        requestId,\n    };\n    return wrapError(httpClientError, {\n        message: JSON.stringify({ message, details }, null, 2),\n        extraProperties: {\n            details,\n            status: httpClientError.response?.status,\n            requestId,\n        },\n    });\n};\nconst wrapError = (baseError, { message, extraProperties, }) => {\n    return Object.assign(baseError, {\n        ...extraProperties,\n        message,\n    });\n};\nconst buildApplicationError = (httpClientError) => {\n    const status = httpClientError.response?.status;\n    const statusText = httpClientError.response?.statusText ?? 'UNKNOWN';\n    const message = httpClientError.response?.data?.message ?? statusText;\n    const description = httpClientError.response?.data?.details?.applicationError?.description ??\n        statusText;\n    const code = httpClientError.response?.data?.details?.applicationError?.code ??\n        constantCase(statusText);\n    const data = httpClientError.response?.data?.details?.applicationError?.data ?? {};\n    const combinedMessage = message === description ? message : `${message}: ${description}`;\n    const details = {\n        applicationError: {\n            description,\n            code,\n            data,\n        },\n        requestId: httpClientError.requestId,\n    };\n    return wrapError(httpClientError, {\n        message: JSON.stringify({ message: combinedMessage, details }, null, 2),\n        extraProperties: {\n            details,\n            status,\n            requestId: httpClientError.requestId,\n        },\n    });\n};\nconst buildSystemError = (httpClientError) => {\n    const message = httpClientError.requestId\n        ? `System error occurred, request-id: ${httpClientError.requestId}`\n        : `System error occurred: ${JSON.stringify(httpClientError)}`;\n    return wrapError(httpClientError, {\n        message,\n        extraProperties: {\n            requestId: httpClientError.requestId,\n            status: httpClientError.response?.status,\n            code: constantCase(httpClientError.response?.statusText ?? 'UNKNOWN'),\n            ...(!httpClientError.response && {\n                runtimeError: httpClientError,\n            }),\n        },\n    });\n};\nconst violationsWithRenamedFields = ({ spreadPathsToArguments, explicitPathsToArguments, singleArgumentUnchanged, }, fieldViolations, argumentNames) => {\n    const allPathsToArguments = {\n        ...spreadPathsToArguments,\n        ...explicitPathsToArguments,\n    };\n    const allPathsToArgumentsKeys = Object.keys(allPathsToArguments);\n    return fieldViolations\n        ?.filter((fieldViolation) => {\n        // In some cases, the violations error will include both some.nested and some.nested.path,\n        // so we'll pick the more specific one if it's covered by the paths in the transformation.\n        const containedInAMoreSpecificViolationField = fieldViolations.some((anotherViolation) => anotherViolation.field.length > fieldViolation.field.length &&\n            anotherViolation.field.startsWith(fieldViolation.field) &&\n            allPathsToArgumentsKeys.includes(anotherViolation.field));\n        return !containedInAMoreSpecificViolationField;\n    })\n        .map((fieldViolation) => {\n        // This means we've got some.nested.field in the violation,\n        // matched against { some: { nested: { field: $[0].a.b.c } } } in the transformation.\n        // some.nested.field is replaced entirely with $[0].a.b.c, with $[0] replaced with the name of argument 0\n        const exactMatchArgumentExpression = explicitPathsToArguments[fieldViolation.field];\n        if (exactMatchArgumentExpression) {\n            return {\n                ...fieldViolation,\n                field: withRenamedArgument(exactMatchArgumentExpression, argumentNames),\n            };\n        }\n        const longestPartialPathMatch = allPathsToArgumentsKeys\n            ?.sort((a, b) => b.length - a.length)\n            ?.find((path) => fieldViolation.field.startsWith(path));\n        if (longestPartialPathMatch) {\n            // This means we've got some.nested.field in the violation,\n            // matched against { some: { nested: { *: $[0].a.b.c } } } in the transformation.\n            // Only the prefix some.nested is replaced with $[0].a.b.c, with $[0] replaced with the name of argument 0\n            // This can also happen in the case where the #wrap function is used.\n            const partialMatchArgumentExpression = allPathsToArguments[longestPartialPathMatch];\n            if (partialMatchArgumentExpression) {\n                return {\n                    ...fieldViolation,\n                    field: fieldViolation.field.replace(longestPartialPathMatch, withRenamedArgument(partialMatchArgumentExpression, argumentNames)),\n                };\n            }\n        }\n        if (singleArgumentUnchanged) {\n            return {\n                ...fieldViolation,\n                field: `${argumentNames[0]}.${fieldViolation.field}`,\n            };\n        }\n        return fieldViolation;\n    });\n};\nconst withRenamedArgument = (fieldValue, argumentNames) => {\n    const argIndex = getArgumentIndex(fieldValue);\n    if (argIndex !== null && typeof argIndex !== 'undefined') {\n        return fieldValue.replace(`$[${argIndex}]`, argumentNames[argIndex]);\n    }\n    return fieldValue;\n};\nconst getArgumentIndex = (s) => {\n    const match = s.match(/\\$\\[(?<argIndex>\\d+)\\]/);\n    return match && match.groups && Number(match.groups.argIndex);\n};\n","import { wixContext } from '@wix/sdk-context';\nexport function resolveContext() {\n    const oldContext = typeof $wixContext !== 'undefined' && $wixContext.initWixModules\n        ? $wixContext.initWixModules\n        : typeof globalThis.__wix_context__ !== 'undefined' &&\n            globalThis.__wix_context__.initWixModules\n            ? globalThis.__wix_context__.initWixModules\n            : undefined;\n    if (oldContext) {\n        return {\n            // @ts-expect-error\n            initWixModules(modules, elevated) {\n                return runWithoutContext(() => oldContext(modules, elevated));\n            },\n            fetchWithAuth() {\n                throw new Error('fetchWithAuth is not available in this context');\n            },\n            graphql() {\n                throw new Error('graphql is not available in this context');\n            },\n        };\n    }\n    const contextualClient = typeof $wixContext !== 'undefined'\n        ? $wixContext.client\n        : typeof wixContext.client !== 'undefined'\n            ? wixContext.client\n            : typeof globalThis.__wix_context__ !== 'undefined'\n                ? globalThis.__wix_context__.client\n                : undefined;\n    const elevatedClient = typeof $wixContext !== 'undefined'\n        ? $wixContext.elevatedClient\n        : typeof wixContext.elevatedClient !== 'undefined'\n            ? wixContext.elevatedClient\n            : typeof globalThis.__wix_context__ !== 'undefined'\n                ? globalThis.__wix_context__.elevatedClient\n                : undefined;\n    if (!contextualClient && !elevatedClient) {\n        return;\n    }\n    return {\n        initWixModules(wixModules, elevated) {\n            if (elevated) {\n                if (!elevatedClient) {\n                    throw new Error('An elevated client is required to use elevated modules. Make sure to initialize the Wix context with an elevated client before using elevated SDK modules');\n                }\n                return runWithoutContext(() => elevatedClient.use(wixModules));\n            }\n            if (!contextualClient) {\n                throw new Error('Wix context is not available. Make sure to initialize the Wix context before using SDK modules');\n            }\n            return runWithoutContext(() => contextualClient.use(wixModules));\n        },\n        fetchWithAuth: (urlOrRequest, requestInit) => {\n            if (!contextualClient) {\n                throw new Error('Wix context is not available. Make sure to initialize the Wix context before using SDK modules');\n            }\n            return contextualClient.fetchWithAuth(urlOrRequest, requestInit);\n        },\n        getAuth() {\n            if (!contextualClient) {\n                throw new Error('Wix context is not available. Make sure to initialize the Wix context before using SDK modules');\n            }\n            return contextualClient.auth;\n        },\n        async graphql(query, variables, opts) {\n            if (!contextualClient) {\n                throw new Error('Wix context is not available. Make sure to initialize the Wix context before using SDK modules');\n            }\n            return contextualClient.graphql(query, variables, opts);\n        },\n    };\n}\nexport function contextualizeHostModule(hostModule, prop) {\n    return (...args) => {\n        const context = resolveContext();\n        if (!context) {\n            throw new Error('Wix context is not available. Make sure to initialize the Wix context before using SDK modules');\n        }\n        return context.initWixModules(hostModule)[prop].apply(undefined, args);\n    };\n}\nexport function getContextualAuth() {\n    const context = resolveContext();\n    if (!context) {\n        throw new Error('Wix context is not available. Make sure to initialize the Wix context before using SDK modules');\n    }\n    return context.getAuth();\n}\nexport function contextualizeRESTModule(restModule, expectedArgsLength) {\n    return ((...args) => {\n        const context = resolveContext();\n        if (!context) {\n            throw new Error('Wix context is not available. Make sure to initialize the Wix context before using SDK modules');\n        }\n        return context\n            .initWixModules(restModule, args[expectedArgsLength]?.suppressAuth ? true : false)\n            .apply(undefined, args);\n    });\n}\nexport function contextualizeEventDefinitionModule(eventDefinition) {\n    return ((...args) => {\n        const context = resolveContext();\n        if (!context) {\n            throw new Error('Wix context is not available. Make sure to initialize the Wix context before using SDK modules');\n        }\n        return context.initWixModules(eventDefinition).apply(undefined, args);\n    });\n}\nexport function contextualizeSerivcePluginModule(servicePlugin) {\n    return ((...args) => {\n        const context = resolveContext();\n        if (!context) {\n            throw new Error('Wix context is not available. Make sure to initialize the Wix context before using SDK modules');\n        }\n        return context.initWixModules(servicePlugin).apply(undefined, args);\n    });\n}\nexport * from './context-v2.js';\nexport function runWithoutContext(fn) {\n    const globalContext = globalThis.__wix_context__;\n    const moduleContext = {\n        client: wixContext.client,\n        elevatedClient: wixContext.elevatedClient,\n    };\n    let closureContext;\n    globalThis.__wix_context__ = undefined;\n    wixContext.client = undefined;\n    wixContext.elevatedClient = undefined;\n    if (typeof $wixContext !== 'undefined') {\n        closureContext = {\n            client: $wixContext?.client,\n            elevatedClient: $wixContext?.elevatedClient,\n        };\n        delete $wixContext.client;\n        delete $wixContext.elevatedClient;\n    }\n    try {\n        return fn();\n    }\n    finally {\n        globalThis.__wix_context__ = globalContext;\n        wixContext.client = moduleContext.client;\n        wixContext.elevatedClient = moduleContext.elevatedClient;\n        if (typeof $wixContext !== 'undefined') {\n            $wixContext.client = closureContext.client;\n            $wixContext.elevatedClient = closureContext.elevatedClient;\n        }\n    }\n}\n","import { EventDefinition, ServicePluginDefinition, } from '@wix/sdk-types';\nimport { resolveContext } from './context.js';\nexport { EventDefinition, ServicePluginDefinition, };\nexport function contextualizeHostModuleV2(hostModule, props) {\n    return {\n        ...hostModule,\n        ...Object.fromEntries(props.map((prop) => [\n            prop,\n            (...args) => {\n                const context = resolveContext();\n                if (!context) {\n                    throw new Error('Wix context is not available. Make sure to initialize the Wix context before using SDK modules');\n                }\n                return context\n                    .initWixModules(hostModule)[prop].apply(undefined, args);\n            },\n        ])),\n    };\n}\nexport function contextualizeRESTModuleV2(restModule, elevated) {\n    return ((...args) => {\n        const context = resolveContext();\n        if (!context) {\n            // @ts-expect-error - if there is no context, we want to behave like the original module\n            return restModule.apply(undefined, args);\n        }\n        return (context\n            .initWixModules(restModule, elevated)\n            // @ts-expect-error - we know the args here are meant to be passed to the initalized module\n            .apply(undefined, args));\n    });\n}\nexport function contextualizeEventDefinitionModuleV2(eventDefinition) {\n    const contextualMethod = ((...args) => {\n        const context = resolveContext();\n        if (!context) {\n            // this line should throw, but this would be a breaking change for older SDK versions\n            // this is because in wixClient there's code that calls any function it detects and checks\n            // if it's an ambassador module (see isAmbassadorModule)\n            return () => {\n                // used by the CLI for webhook registration on build time\n                return {\n                    slug: eventDefinition.type,\n                };\n            };\n        }\n        return context.initWixModules(eventDefinition).apply(undefined, args);\n    });\n    contextualMethod.__type = eventDefinition.__type;\n    contextualMethod.type = eventDefinition.type;\n    contextualMethod.isDomainEvent = eventDefinition.isDomainEvent;\n    contextualMethod.transformations = eventDefinition.transformations;\n    return contextualMethod;\n}\nexport function contextualizeSerivcePluginModuleV2(servicePlugin) {\n    const contextualMethod = ((...args) => {\n        const context = resolveContext();\n        if (!context) {\n            // this line should throw, but this would be a breaking change for older SDK versions\n            // this is because in wixClient there's code that calls any function it detects and checks\n            // if it's an ambassador module (see isAmbassadorModule)\n            return () => { };\n        }\n        return context.initWixModules(servicePlugin).apply(undefined, args);\n    });\n    contextualMethod.__type = servicePlugin.__type;\n    contextualMethod.componentType = servicePlugin.componentType;\n    contextualMethod.methods = servicePlugin.methods;\n    return contextualMethod;\n}\n","import { contextualizeRESTModuleV2 } from './context-v2.js';\nexport { RESTResponseToSDKResponseRenameMap } from './constants.js';\nexport function createRESTModule(descriptor, elevated = false) {\n    return contextualizeRESTModuleV2(descriptor, elevated);\n}\nexport function toURLSearchParams(params, isComplexRequest) {\n    const flatten = flattenParams(params);\n    // payloads with deep arrays or complex arrays are not serializable as URLSearchParams\n    const isPayloadNonSerializableAsUrlSearchParams = Object.entries(flatten).some(([key, value]) => key.includes('.') ||\n        (Array.isArray(value) && value.some((v) => typeof v === 'object')));\n    const shouldSerializeToRParam = isComplexRequest && isPayloadNonSerializableAsUrlSearchParams;\n    if (shouldSerializeToRParam) {\n        return new URLSearchParams({ '.r': base64Encode(JSON.stringify(params)) });\n    }\n    else {\n        return Object.entries(flatten).reduce((urlSearchParams, [key, value]) => {\n            // inorder to make `foo: [1,2]` turn into `foo=1&foo=2` and not `foo[]=1&foo[]=2`\n            const keyParams = Array.isArray(value) ? value : [value];\n            keyParams.forEach((param) => {\n                if (param === undefined ||\n                    param === null ||\n                    (Array.isArray(value) && typeof param === 'object')) {\n                    return;\n                }\n                urlSearchParams.append(key, param);\n            });\n            return urlSearchParams;\n        }, new URLSearchParams());\n    }\n}\nexport function resolveUrl(opts) {\n    const domain = resolveDomain(opts.host);\n    const mappings = resolveMappingsByDomain(domain, opts.domainToMappings);\n    const path = injectDataIntoProtoPath(opts.protoPath, opts.data || {});\n    return resolvePathFromMappings(path, mappings);\n}\nfunction flattenParams(data, path = '') {\n    const params = {};\n    Object.entries(data).forEach(([key, value]) => {\n        const isObject = value !== null && typeof value === 'object' && !Array.isArray(value);\n        const fieldPath = resolvePath(path, key);\n        if (isObject) {\n            const serializedObject = flattenParams(value, fieldPath);\n            Object.assign(params, serializedObject);\n        }\n        else {\n            params[fieldPath] = value;\n        }\n    });\n    return params;\n}\nfunction resolvePath(path, key) {\n    return `${path}${path ? '.' : ''}${key}`;\n}\nconst base64Encode = (value) => {\n    const bytes = new TextEncoder().encode(value);\n    const base64 = typeof btoa !== 'undefined'\n        ? btoa(String.fromCodePoint(...bytes))\n        : Buffer.from(value, 'utf-8').toString('base64');\n    return base64.replace(/=/g, '').replace(/\\+/g, '-').replace(/\\//g, '_');\n};\nconst DOMAINS = ['wix.com', 'editorx.com'];\nconst USER_DOMAIN = '_';\nconst REGEX_CAPTURE_DOMAINS = new RegExp(`\\\\.(${DOMAINS.join('|')})$`);\nconst WIX_API_DOMAINS = ['42.wixprod.net', 'uw2-edt-1.wixprod.net'];\nconst DEV_WIX_CODE_DOMAIN = 'dev.wix-code.com';\nconst REGEX_CAPTURE_PROTO_FIELD = /{(.*)}/;\nconst REGEX_CAPTURE_API_DOMAINS = new RegExp(`\\\\.(${WIX_API_DOMAINS.join('|')})$`);\nconst REGEX_CAPTURE_DEV_WIX_CODE_DOMAIN = new RegExp(`.*\\\\.${DEV_WIX_CODE_DOMAIN}$`);\nfunction resolveDomain(host) {\n    const resolvedHost = fixHostExceptions(host);\n    return resolvedHost\n        .replace(REGEX_CAPTURE_DOMAINS, '._base_domain_')\n        .replace(REGEX_CAPTURE_API_DOMAINS, '._api_base_domain_')\n        .replace(REGEX_CAPTURE_DEV_WIX_CODE_DOMAIN, '*.dev.wix-code.com');\n}\n// hosts which standard string replacing doesn't apply to them, will be fixed here.\nfunction fixHostExceptions(host) {\n    // https://system-kb.wixanswers.com/kb/en/article/editorx-domains-matching-to-wixcom\n    return host.replace('create.editorx.com', 'editor.editorx.com');\n}\nfunction resolveMappingsByDomain(domain, domainToMappings) {\n    const mappings = domainToMappings[domain] || domainToMappings[USER_DOMAIN];\n    if (mappings) {\n        return mappings;\n    }\n    const rootDomainMappings = resolveRootDomain(domain, domainToMappings);\n    if (!rootDomainMappings) {\n        if (isBaseDomain(domain)) {\n            // fallback <lang>.wix.com sub domains to www.wix.com\n            // since all of the languages subdomain are not mapped automatically in FP and we want to support those kind of calls\n            // for example: fr.wix.com\n            return domainToMappings[wwwBaseDomain];\n        }\n    }\n    return rootDomainMappings ?? [];\n}\nfunction resolveRootDomain(domain, domainToMappings) {\n    return Object.entries(domainToMappings).find(([entryDomain]) => {\n        const [, ...rooDomainSegments] = domain.split('.');\n        return rooDomainSegments.join('.') === entryDomain;\n    })?.[1];\n}\nfunction isBaseDomain(domain) {\n    return !!domain.match(/\\._base_domain_$/);\n}\nconst wwwBaseDomain = 'www._base_domain_';\nfunction injectDataIntoProtoPath(protoPath, data) {\n    return protoPath\n        .split('/')\n        .map((path) => maybeProtoPathToData(path, data))\n        .join('/');\n}\nfunction maybeProtoPathToData(protoPath, data) {\n    const protoRegExpMatch = protoPath.match(REGEX_CAPTURE_PROTO_FIELD) || [];\n    const field = protoRegExpMatch[1];\n    if (field) {\n        const suffix = protoPath.replace(protoRegExpMatch[0], '');\n        return findByPath(data, field, protoPath, suffix);\n    }\n    return protoPath;\n}\nfunction findByPath(obj, path, defaultValue, suffix) {\n    let result = obj;\n    for (const field of path.split('.')) {\n        if (!result) {\n            return defaultValue;\n        }\n        result = result[field];\n    }\n    return `${result}${suffix}`;\n}\nfunction resolvePathFromMappings(protoPath, mappings) {\n    const mapping = mappings?.find((m) => protoPath.startsWith(m.destPath));\n    if (!mapping) {\n        // todo: should we return the path? if no - what should we do in case of testings?\n        return protoPath;\n    }\n    return mapping.srcPath + protoPath.slice(mapping.destPath.length);\n}\n","export function formatCurrency({\n  amount = 0,\n  currency,\n  locale,\n  decimalCount,\n}: {\n  amount?: number | string;\n  currency?: string;\n  locale?: string;\n  decimalCount?: number;\n} = {}): string {\n  const amountNumber = Number(amount);\n\n  if (currency) {\n    const fractionDigits = decimalCount ?? getDisplayPrecision(amountNumber);\n    return Intl.NumberFormat(locale, {\n      style: 'currency',\n      unitDisplay: 'narrow',\n      currency,\n      minimumFractionDigits: fractionDigits,\n      maximumFractionDigits: fractionDigits,\n    }).format(amountNumber);\n  }\n\n  if (decimalCount) {\n    return amountNumber.toFixed(decimalCount);\n  }\n\n  return String(amount);\n}\n\nfunction getDisplayPrecision(amount: number): number {\n  return Number.isInteger(amount) ? 0 : 2;\n}\n","import type { IHttpClient } from '@wix/fe-essentials/http-client';\nimport { createContext, useContext } from 'react';\n\nexport interface HttpClientProps {\n  httpClient?: IHttpClient;\n}\n\nexport const HttpClientContext = createContext<HttpClientProps | undefined>(\n  undefined,\n);\n\nexport function useHttpClient() {\n  const context = useContext(HttpClientContext);\n  if (context === undefined) {\n    throw new Error('useHttpClient must be used within a HttpClientProvider');\n  }\n  return context;\n}\n","// This file is a workaround for a bug in web browsers' \"native\"\n// ES6 importing system which is uncapable of importing \"*.json\" files.\n// https://github.com/catamphetamine/libphonenumber-js/issues/239\nexport default {\"version\":4,\"country_calling_codes\":{\"1\":[\"US\",\"AG\",\"AI\",\"AS\",\"BB\",\"BM\",\"BS\",\"CA\",\"DM\",\"DO\",\"GD\",\"GU\",\"JM\",\"KN\",\"KY\",\"LC\",\"MP\",\"MS\",\"PR\",\"SX\",\"TC\",\"TT\",\"VC\",\"VG\",\"VI\"],\"7\":[\"RU\",\"KZ\"],\"20\":[\"EG\"],\"27\":[\"ZA\"],\"30\":[\"GR\"],\"31\":[\"NL\"],\"32\":[\"BE\"],\"33\":[\"FR\"],\"34\":[\"ES\"],\"36\":[\"HU\"],\"39\":[\"IT\",\"VA\"],\"40\":[\"RO\"],\"41\":[\"CH\"],\"43\":[\"AT\"],\"44\":[\"GB\",\"GG\",\"IM\",\"JE\"],\"45\":[\"DK\"],\"46\":[\"SE\"],\"47\":[\"NO\",\"SJ\"],\"48\":[\"PL\"],\"49\":[\"DE\"],\"51\":[\"PE\"],\"52\":[\"MX\"],\"53\":[\"CU\"],\"54\":[\"AR\"],\"55\":[\"BR\"],\"56\":[\"CL\"],\"57\":[\"CO\"],\"58\":[\"VE\"],\"60\":[\"MY\"],\"61\":[\"AU\",\"CC\",\"CX\"],\"62\":[\"ID\"],\"63\":[\"PH\"],\"64\":[\"NZ\"],\"65\":[\"SG\"],\"66\":[\"TH\"],\"81\":[\"JP\"],\"82\":[\"KR\"],\"84\":[\"VN\"],\"86\":[\"CN\"],\"90\":[\"TR\"],\"91\":[\"IN\"],\"92\":[\"PK\"],\"93\":[\"AF\"],\"94\":[\"LK\"],\"95\":[\"MM\"],\"98\":[\"IR\"],\"211\":[\"SS\"],\"212\":[\"MA\",\"EH\"],\"213\":[\"DZ\"],\"216\":[\"TN\"],\"218\":[\"LY\"],\"220\":[\"GM\"],\"221\":[\"SN\"],\"222\":[\"MR\"],\"223\":[\"ML\"],\"224\":[\"GN\"],\"225\":[\"CI\"],\"226\":[\"BF\"],\"227\":[\"NE\"],\"228\":[\"TG\"],\"229\":[\"BJ\"],\"230\":[\"MU\"],\"231\":[\"LR\"],\"232\":[\"SL\"],\"233\":[\"GH\"],\"234\":[\"NG\"],\"235\":[\"TD\"],\"236\":[\"CF\"],\"237\":[\"CM\"],\"238\":[\"CV\"],\"239\":[\"ST\"],\"240\":[\"GQ\"],\"241\":[\"GA\"],\"242\":[\"CG\"],\"243\":[\"CD\"],\"244\":[\"AO\"],\"245\":[\"GW\"],\"246\":[\"IO\"],\"247\":[\"AC\"],\"248\":[\"SC\"],\"249\":[\"SD\"],\"250\":[\"RW\"],\"251\":[\"ET\"],\"252\":[\"SO\"],\"253\":[\"DJ\"],\"254\":[\"KE\"],\"255\":[\"TZ\"],\"256\":[\"UG\"],\"257\":[\"BI\"],\"258\":[\"MZ\"],\"260\":[\"ZM\"],\"261\":[\"MG\"],\"262\":[\"RE\",\"YT\"],\"263\":[\"ZW\"],\"264\":[\"NA\"],\"265\":[\"MW\"],\"266\":[\"LS\"],\"267\":[\"BW\"],\"268\":[\"SZ\"],\"269\":[\"KM\"],\"290\":[\"SH\",\"TA\"],\"291\":[\"ER\"],\"297\":[\"AW\"],\"298\":[\"FO\"],\"299\":[\"GL\"],\"350\":[\"GI\"],\"351\":[\"PT\"],\"352\":[\"LU\"],\"353\":[\"IE\"],\"354\":[\"IS\"],\"355\":[\"AL\"],\"356\":[\"MT\"],\"357\":[\"CY\"],\"358\":[\"FI\",\"AX\"],\"359\":[\"BG\"],\"370\":[\"LT\"],\"371\":[\"LV\"],\"372\":[\"EE\"],\"373\":[\"MD\"],\"374\":[\"AM\"],\"375\":[\"BY\"],\"376\":[\"AD\"],\"377\":[\"MC\"],\"378\":[\"SM\"],\"380\":[\"UA\"],\"381\":[\"RS\"],\"382\":[\"ME\"],\"383\":[\"XK\"],\"385\":[\"HR\"],\"386\":[\"SI\"],\"387\":[\"BA\"],\"389\":[\"MK\"],\"420\":[\"CZ\"],\"421\":[\"SK\"],\"423\":[\"LI\"],\"500\":[\"FK\"],\"501\":[\"BZ\"],\"502\":[\"GT\"],\"503\":[\"SV\"],\"504\":[\"HN\"],\"505\":[\"NI\"],\"506\":[\"CR\"],\"507\":[\"PA\"],\"508\":[\"PM\"],\"509\":[\"HT\"],\"590\":[\"GP\",\"BL\",\"MF\"],\"591\":[\"BO\"],\"592\":[\"GY\"],\"593\":[\"EC\"],\"594\":[\"GF\"],\"595\":[\"PY\"],\"596\":[\"MQ\"],\"597\":[\"SR\"],\"598\":[\"UY\"],\"599\":[\"CW\",\"BQ\"],\"670\":[\"TL\"],\"672\":[\"NF\"],\"673\":[\"BN\"],\"674\":[\"NR\"],\"675\":[\"PG\"],\"676\":[\"TO\"],\"677\":[\"SB\"],\"678\":[\"VU\"],\"679\":[\"FJ\"],\"680\":[\"PW\"],\"681\":[\"WF\"],\"682\":[\"CK\"],\"683\":[\"NU\"],\"685\":[\"WS\"],\"686\":[\"KI\"],\"687\":[\"NC\"],\"688\":[\"TV\"],\"689\":[\"PF\"],\"690\":[\"TK\"],\"691\":[\"FM\"],\"692\":[\"MH\"],\"850\":[\"KP\"],\"852\":[\"HK\"],\"853\":[\"MO\"],\"855\":[\"KH\"],\"856\":[\"LA\"],\"880\":[\"BD\"],\"886\":[\"TW\"],\"960\":[\"MV\"],\"961\":[\"LB\"],\"962\":[\"JO\"],\"963\":[\"SY\"],\"964\":[\"IQ\"],\"965\":[\"KW\"],\"966\":[\"SA\"],\"967\":[\"YE\"],\"968\":[\"OM\"],\"970\":[\"PS\"],\"971\":[\"AE\"],\"972\":[\"IL\"],\"973\":[\"BH\"],\"974\":[\"QA\"],\"975\":[\"BT\"],\"976\":[\"MN\"],\"977\":[\"NP\"],\"992\":[\"TJ\"],\"993\":[\"TM\"],\"994\":[\"AZ\"],\"995\":[\"GE\"],\"996\":[\"KG\"],\"998\":[\"UZ\"]},\"countries\":{\"AC\":[\"247\",\"00\",\"(?:[01589]\\\\d|[46])\\\\d{4}\",[5,6]],\"AD\":[\"376\",\"00\",\"(?:1|6\\\\d)\\\\d{7}|[135-9]\\\\d{5}\",[6,8,9],[[\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"[135-9]\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"1\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6\"]]]],\"AE\":[\"971\",\"00\",\"(?:[4-7]\\\\d|9[0-689])\\\\d{7}|800\\\\d{2,9}|[2-4679]\\\\d{7}\",[5,6,7,8,9,10,11,12],[[\"(\\\\d{3})(\\\\d{2,9})\",\"$1 $2\",[\"60|8\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[236]|[479][2-8]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d)(\\\\d{5})\",\"$1 $2 $3\",[\"[479]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"5\"],\"0$1\"]],\"0\"],\"AF\":[\"93\",\"00\",\"[2-7]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-7]\"],\"0$1\"]],\"0\"],\"AG\":[\"1\",\"011\",\"(?:268|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([457]\\\\d{6})$|1\",\"268$1\",0,\"268\"],\"AI\":[\"1\",\"011\",\"(?:264|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([2457]\\\\d{6})$|1\",\"264$1\",0,\"264\"],\"AL\":[\"355\",\"00\",\"(?:700\\\\d\\\\d|900)\\\\d{3}|8\\\\d{5,7}|(?:[2-5]|6\\\\d)\\\\d{7}\",[6,7,8,9],[[\"(\\\\d{3})(\\\\d{3,4})\",\"$1 $2\",[\"80|9\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"4[2-6]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2358][2-5]|4\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[23578]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"6\"],\"0$1\"]],\"0\"],\"AM\":[\"374\",\"00\",\"(?:[1-489]\\\\d|55|60|77)\\\\d{6}\",[8],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[89]0\"],\"0 $1\"],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"2|3[12]\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"1|47\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[3-9]\"],\"0$1\"]],\"0\"],\"AO\":[\"244\",\"00\",\"[29]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[29]\"]]]],\"AR\":[\"54\",\"00\",\"(?:11|[89]\\\\d\\\\d)\\\\d{8}|[2368]\\\\d{9}\",[10,11],[[\"(\\\\d{4})(\\\\d{2})(\\\\d{4})\",\"$1 $2-$3\",[\"2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9])\",\"2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8]))|2(?:2[24-9]|3[1-59]|47)\",\"2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5[56][46]|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]\",\"2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|58|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|54(?:4|5[13-7]|6[89])|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:454|85[56])[46]|3(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]\"],\"0$1\",1],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2-$3\",[\"1\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[68]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2-$3\",[\"[23]\"],\"0$1\",1],[\"(\\\\d)(\\\\d{4})(\\\\d{2})(\\\\d{4})\",\"$2 15-$3-$4\",[\"9(?:2[2-469]|3[3-578])\",\"9(?:2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9]))\",\"9(?:2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8])))|92(?:2[24-9]|3[1-59]|47)\",\"9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5(?:[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]\",\"9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|5(?:4(?:4|5[13-7]|6[89])|[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]\"],\"0$1\",0,\"$1 $2 $3-$4\"],[\"(\\\\d)(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$2 15-$3-$4\",[\"91\"],\"0$1\",0,\"$1 $2 $3-$4\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{5})\",\"$1-$2-$3\",[\"8\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$2 15-$3-$4\",[\"9\"],\"0$1\",0,\"$1 $2 $3-$4\"]],\"0\",0,\"0?(?:(11|2(?:2(?:02?|[13]|2[13-79]|4[1-6]|5[2457]|6[124-8]|7[1-4]|8[13-6]|9[1267])|3(?:02?|1[467]|2[03-6]|3[13-8]|[49][2-6]|5[2-8]|[67])|4(?:7[3-578]|9)|6(?:[0136]|2[24-6]|4[6-8]?|5[15-8])|80|9(?:0[1-3]|[19]|2\\\\d|3[1-6]|4[02568]?|5[2-4]|6[2-46]|72?|8[23]?))|3(?:3(?:2[79]|6|8[2578])|4(?:0[0-24-9]|[12]|3[5-8]?|4[24-7]|5[4-68]?|6[02-9]|7[126]|8[2379]?|9[1-36-8])|5(?:1|2[1245]|3[237]?|4[1-46-9]|6[2-4]|7[1-6]|8[2-5]?)|6[24]|7(?:[069]|1[1568]|2[15]|3[145]|4[13]|5[14-8]|7[2-57]|8[126])|8(?:[01]|2[15-7]|3[2578]?|4[13-6]|5[4-8]?|6[1-357-9]|7[36-8]?|8[5-8]?|9[124])))15)?\",\"9$1\"],\"AS\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|684|900)\\\\d{7}\",[10],0,\"1\",0,\"([267]\\\\d{6})$|1\",\"684$1\",0,\"684\"],\"AT\":[\"43\",\"00\",\"1\\\\d{3,12}|2\\\\d{6,12}|43(?:(?:0\\\\d|5[02-9])\\\\d{3,9}|2\\\\d{4,5}|[3467]\\\\d{4}|8\\\\d{4,6}|9\\\\d{4,7})|5\\\\d{4,12}|8\\\\d{7,12}|9\\\\d{8,12}|(?:[367]\\\\d|4[0-24-9])\\\\d{4,11}\",[4,5,6,7,8,9,10,11,12,13],[[\"(\\\\d)(\\\\d{3,12})\",\"$1 $2\",[\"1(?:11|[2-9])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})\",\"$1 $2\",[\"517\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3,5})\",\"$1 $2\",[\"5[079]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3,10})\",\"$1 $2\",[\"(?:31|4)6|51|6(?:48|5[0-3579]|[6-9])|7(?:20|32|8)|[89]\",\"(?:31|4)6|51|6(?:485|5[0-3579]|[6-9])|7(?:20|32|8)|[89]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3,9})\",\"$1 $2\",[\"[2-467]|5[2-6]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"5\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4,7})\",\"$1 $2 $3\",[\"5\"],\"0$1\"]],\"0\"],\"AU\":[\"61\",\"001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011\",\"1(?:[0-79]\\\\d{7}(?:\\\\d(?:\\\\d{2})?)?|8[0-24-9]\\\\d{7})|[2-478]\\\\d{8}|1\\\\d{4,7}\",[5,6,7,8,9,10,12],[[\"(\\\\d{2})(\\\\d{3,4})\",\"$1 $2\",[\"16\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2,4})\",\"$1 $2 $3\",[\"16\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"14|4\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[2378]\"],\"(0$1)\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1(?:30|[89])\"]]],\"0\",0,\"(183[12])|0\",0,0,0,[[\"(?:(?:241|349)0\\\\d\\\\d|8(?:51(?:0(?:0[03-9]|[12479]\\\\d|3[2-9]|5[0-8]|6[1-9]|8[0-7])|1(?:[0235689]\\\\d|1[0-69]|4[0-589]|7[0-47-9])|2(?:0[0-79]|[18][13579]|2[14-9]|3[0-46-9]|[4-6]\\\\d|7[89]|9[0-4])|[34]\\\\d\\\\d)|91(?:(?:[0-58]\\\\d|6[0135-9])\\\\d|7(?:0[0-24-9]|[1-9]\\\\d)|9(?:[0-46-9]\\\\d|5[0-79]))))\\\\d{3}|(?:2(?:[0-26-9]\\\\d|3[0-8]|4[02-9]|5[0135-9])|3(?:[0-3589]\\\\d|4[0-578]|6[1-9]|7[0-35-9])|7(?:[013-57-9]\\\\d|2[0-8])|8(?:55|6[0-8]|[78]\\\\d|9[02-9]))\\\\d{6}\",[9]],[\"4(?:79[01]|83[0-36-9]|95[0-3])\\\\d{5}|4(?:[0-36]\\\\d|4[047-9]|[58][0-24-9]|7[02-8]|9[0-47-9])\\\\d{6}\",[9]],[\"180(?:0\\\\d{3}|2)\\\\d{3}\",[7,10]],[\"190[0-26]\\\\d{6}\",[10]],0,0,0,[\"163\\\\d{2,6}\",[5,6,7,8,9]],[\"14(?:5(?:1[0458]|[23][458])|71\\\\d)\\\\d{4}\",[9]],[\"13(?:00\\\\d{6}(?:\\\\d{2})?|45[0-4]\\\\d{3})|13\\\\d{4}\",[6,8,10,12]]],\"0011\"],\"AW\":[\"297\",\"00\",\"(?:[25-79]\\\\d\\\\d|800)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[25-9]\"]]]],\"AX\":[\"358\",\"00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))\",\"2\\\\d{4,9}|35\\\\d{4,5}|(?:60\\\\d\\\\d|800)\\\\d{4,6}|7\\\\d{5,11}|(?:[14]\\\\d|3[0-46-9]|50)\\\\d{4,8}\",[5,6,7,8,9,10,11,12],0,\"0\",0,0,0,0,\"18\",0,\"00\"],\"AZ\":[\"994\",\"00\",\"365\\\\d{6}|(?:[124579]\\\\d|60|88)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"90\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"1[28]|2|365|46\",\"1[28]|2|365[45]|46\",\"1[28]|2|365(?:4|5[02])|46\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[13-9]\"],\"0$1\"]],\"0\"],\"BA\":[\"387\",\"00\",\"6\\\\d{8}|(?:[35689]\\\\d|49|70)\\\\d{6}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6[1-3]|[7-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2-$3\",[\"[3-5]|6[56]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"6\"],\"0$1\"]],\"0\"],\"BB\":[\"1\",\"011\",\"(?:246|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-9]\\\\d{6})$|1\",\"246$1\",0,\"246\"],\"BD\":[\"880\",\"00\",\"[1-469]\\\\d{9}|8[0-79]\\\\d{7,8}|[2-79]\\\\d{8}|[2-9]\\\\d{7}|[3-9]\\\\d{6}|[57-9]\\\\d{5}\",[6,7,8,9,10],[[\"(\\\\d{2})(\\\\d{4,6})\",\"$1-$2\",[\"31[5-8]|[459]1\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3,7})\",\"$1-$2\",[\"3(?:[67]|8[013-9])|4(?:6[168]|7|[89][18])|5(?:6[128]|9)|6(?:[15]|28|4[14])|7[2-589]|8(?:0[014-9]|[12])|9[358]|(?:3[2-5]|4[235]|5[2-578]|6[0389]|76|8[3-7]|9[24])1|(?:44|66)[01346-9]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3,6})\",\"$1-$2\",[\"[13-9]|2[23]\"],\"0$1\"],[\"(\\\\d)(\\\\d{7,8})\",\"$1-$2\",[\"2\"],\"0$1\"]],\"0\"],\"BE\":[\"32\",\"00\",\"4\\\\d{8}|[1-9]\\\\d{7}\",[8,9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"(?:80|9)0\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[239]|4[23]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[15-8]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"4\"],\"0$1\"]],\"0\"],\"BF\":[\"226\",\"00\",\"(?:[025-7]\\\\d|44)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[024-7]\"]]]],\"BG\":[\"359\",\"00\",\"00800\\\\d{7}|[2-7]\\\\d{6,7}|[89]\\\\d{6,8}|2\\\\d{5}\",[6,7,8,9,12],[[\"(\\\\d)(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"2\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"43[1-6]|70[1-9]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2,3})\",\"$1 $2 $3\",[\"[356]|4[124-7]|7[1-9]|8[1-6]|9[1-7]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"(?:70|8)0\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3\",[\"43[1-7]|7\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[48]|9[08]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"],\"0$1\"]],\"0\"],\"BH\":[\"973\",\"00\",\"[136-9]\\\\d{7}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[13679]|8[02-4679]\"]]]],\"BI\":[\"257\",\"00\",\"(?:[267]\\\\d|31)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2367]\"]]]],\"BJ\":[\"229\",\"00\",\"(?:01\\\\d|8)\\\\d{7}\",[8,10],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"0\"]]]],\"BL\":[\"590\",\"00\",\"(?:590\\\\d|7090)\\\\d{5}|(?:69|80|9\\\\d)\\\\d{7}\",[9],0,\"0\",0,0,0,0,0,[[\"590(?:2[7-9]|3[3-7]|5[12]|87)\\\\d{4}\"],[\"(?:69(?:0\\\\d\\\\d|1(?:2[2-9]|3[0-5])|4(?:0[89]|1[2-6]|9\\\\d)|6(?:1[016-9]|5[0-4]|[67]\\\\d))|7090[0-4])\\\\d{4}\"],[\"80[0-5]\\\\d{6}\"],0,0,0,0,0,[\"9(?:(?:39[5-7]|76[018])\\\\d|475[0-6])\\\\d{4}\"]]],\"BM\":[\"1\",\"011\",\"(?:441|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-9]\\\\d{6})$|1\",\"441$1\",0,\"441\"],\"BN\":[\"673\",\"00\",\"[2-578]\\\\d{6}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-578]\"]]]],\"BO\":[\"591\",\"00(?:1\\\\d)?\",\"8001\\\\d{5}|(?:[2-467]\\\\d|50)\\\\d{6}\",[8,9],[[\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"[235]|4[46]\"]],[\"(\\\\d{8})\",\"$1\",[\"[67]\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]]],\"0\",0,\"0(1\\\\d)?\"],\"BQ\":[\"599\",\"00\",\"(?:[34]1|7\\\\d)\\\\d{5}\",[7],0,0,0,0,0,0,\"[347]\"],\"BR\":[\"55\",\"00(?:1[245]|2[1-35]|31|4[13]|[56]5|99)\",\"[1-467]\\\\d{9,10}|55[0-46-9]\\\\d{8}|[34]\\\\d{7}|55\\\\d{7,8}|(?:5[0-46-9]|[89]\\\\d)\\\\d{7,9}\",[8,9,10,11],[[\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"300|4(?:0[02]|37|86)\",\"300|4(?:0(?:0|20)|370|864)\"]],[\"(\\\\d{3})(\\\\d{2,3})(\\\\d{4})\",\"$1 $2 $3\",[\"(?:[358]|90)0\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2-$3\",[\"(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])[2-57]\"],\"($1)\"],[\"(\\\\d{2})(\\\\d{5})(\\\\d{4})\",\"$1 $2-$3\",[\"[16][1-9]|[2-57-9]\"],\"($1)\"]],\"0\",0,\"(?:0|90)(?:(1[245]|2[1-35]|31|4[13]|[56]5|99)(\\\\d{10,11}))?\",\"$2\"],\"BS\":[\"1\",\"011\",\"(?:242|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([3-8]\\\\d{6})$|1\",\"242$1\",0,\"242\"],\"BT\":[\"975\",\"00\",\"[178]\\\\d{7}|[2-8]\\\\d{6}\",[7,8],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-6]|7[246]|8[2-4]\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"1[67]|[78]\"]]]],\"BW\":[\"267\",\"00\",\"(?:0800|(?:[37]|800)\\\\d)\\\\d{6}|(?:[2-6]\\\\d|90)\\\\d{5}\",[7,8,10],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"90\"]],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[24-6]|3[15-9]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[37]\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"0\"]],[\"(\\\\d{3})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]]]],\"BY\":[\"375\",\"810\",\"(?:[12]\\\\d|33|44|902)\\\\d{7}|8(?:0[0-79]\\\\d{5,7}|[1-7]\\\\d{9})|8(?:1[0-489]|[5-79]\\\\d)\\\\d{7}|8[1-79]\\\\d{6,7}|8[0-79]\\\\d{5}|8\\\\d{5}\",[6,7,8,9,10,11],[[\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"800\"],\"8 $1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2,4})\",\"$1 $2 $3\",[\"800\"],\"8 $1\"],[\"(\\\\d{4})(\\\\d{2})(\\\\d{3})\",\"$1 $2-$3\",[\"1(?:5[169]|6[3-5]|7[179])|2(?:1[35]|2[34]|3[3-5])\",\"1(?:5[169]|6(?:3[1-3]|4|5[125])|7(?:1[3-9]|7[0-24-6]|9[2-7]))|2(?:1[35]|2[34]|3[3-5])\"],\"8 0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"1(?:[56]|7[467])|2[1-3]\"],\"8 0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"[1-4]\"],\"8 0$1\"],[\"(\\\\d{3})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"],\"8 $1\"]],\"8\",0,\"0|80?\",0,0,0,0,\"8~10\"],\"BZ\":[\"501\",\"00\",\"(?:0800\\\\d|[2-8])\\\\d{6}\",[7,11],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[2-8]\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{4})(\\\\d{3})\",\"$1-$2-$3-$4\",[\"0\"]]]],\"CA\":[\"1\",\"011\",\"[2-9]\\\\d{9}|3\\\\d{6}\",[7,10],0,\"1\",0,0,0,0,0,[[\"(?:2(?:04|[23]6|[48]9|5[07]|63)|3(?:06|43|54|6[578]|82)|4(?:03|1[68]|[26]8|3[178]|50|74)|5(?:06|1[49]|48|79|8[147])|6(?:04|[18]3|39|47|72)|7(?:0[59]|42|53|78|8[02])|8(?:[06]7|19|25|7[39])|9(?:0[25]|42))[2-9]\\\\d{6}\",[10]],[\"\",[10]],[\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",[10]],[\"900[2-9]\\\\d{6}\",[10]],[\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|(?:5(?:2[125-9]|3[23]|44|66|77|88)|6(?:22|33))[2-9]\\\\d{6}\",[10]],0,[\"310\\\\d{4}\",[7]],0,[\"600[2-9]\\\\d{6}\",[10]]]],\"CC\":[\"61\",\"001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011\",\"1(?:[0-79]\\\\d{8}(?:\\\\d{2})?|8[0-24-9]\\\\d{7})|[148]\\\\d{8}|1\\\\d{5,7}\",[6,7,8,9,10,12],0,\"0\",0,\"([59]\\\\d{7})$|0\",\"8$1\",0,0,[[\"8(?:51(?:0(?:02|31|60|89)|1(?:18|76)|223)|91(?:0(?:1[0-2]|29)|1(?:[28]2|50|79)|2(?:10|64)|3(?:[06]8|22)|4[29]8|62\\\\d|70[23]|959))\\\\d{3}\",[9]],[\"4(?:79[01]|83[0-36-9]|95[0-3])\\\\d{5}|4(?:[0-36]\\\\d|4[047-9]|[58][0-24-9]|7[02-8]|9[0-47-9])\\\\d{6}\",[9]],[\"180(?:0\\\\d{3}|2)\\\\d{3}\",[7,10]],[\"190[0-26]\\\\d{6}\",[10]],0,0,0,0,[\"14(?:5(?:1[0458]|[23][458])|71\\\\d)\\\\d{4}\",[9]],[\"13(?:00\\\\d{6}(?:\\\\d{2})?|45[0-4]\\\\d{3})|13\\\\d{4}\",[6,8,10,12]]],\"0011\"],\"CD\":[\"243\",\"00\",\"(?:(?:[189]|5\\\\d)\\\\d|2)\\\\d{7}|[1-68]\\\\d{6}\",[7,8,9,10],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"88\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"[1-6]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"5\"],\"0$1\"]],\"0\"],\"CF\":[\"236\",\"00\",\"8776\\\\d{4}|(?:[27]\\\\d|61)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[26-8]\"]]]],\"CG\":[\"242\",\"00\",\"222\\\\d{6}|(?:0\\\\d|80)\\\\d{7}\",[9],[[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[02]\"]]]],\"CH\":[\"41\",\"00\",\"8\\\\d{11}|[2-9]\\\\d{8}\",[9,12],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8[047]|90\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-79]|81\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"8\"],\"0$1\"]],\"0\"],\"CI\":[\"225\",\"00\",\"[02]\\\\d{9}\",[10],[[\"(\\\\d{2})(\\\\d{2})(\\\\d)(\\\\d{5})\",\"$1 $2 $3 $4\",[\"2\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"0\"]]]],\"CK\":[\"682\",\"00\",\"[2-578]\\\\d{4}\",[5],[[\"(\\\\d{2})(\\\\d{3})\",\"$1 $2\",[\"[2-578]\"]]]],\"CL\":[\"56\",\"(?:0|1(?:1[0-69]|2[02-5]|5[13-58]|69|7[0167]|8[018]))0\",\"12300\\\\d{6}|6\\\\d{9,10}|[2-9]\\\\d{8}\",[9,10,11],[[\"(\\\\d{5})(\\\\d{4})\",\"$1 $2\",[\"219\",\"2196\"],\"($1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"60|809\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"44\"]],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2[1-36]\"],\"($1)\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"9(?:10|[2-9])\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"3[2-5]|[47]|5[1-3578]|6[13-57]|8(?:0[1-8]|[1-9])\"],\"($1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"60|8\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"60\"]]]],\"CM\":[\"237\",\"00\",\"[26]\\\\d{8}|88\\\\d{6,7}\",[8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"88\"]],[\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"[26]|88\"]]]],\"CN\":[\"86\",\"00|1(?:[12]\\\\d|79)\\\\d\\\\d00\",\"(?:(?:1[03-689]|2\\\\d)\\\\d\\\\d|6)\\\\d{8}|1\\\\d{10}|[126]\\\\d{6}(?:\\\\d(?:\\\\d{2})?)?|86\\\\d{5,6}|(?:[3-579]\\\\d|8[0-57-9])\\\\d{5,9}\",[7,8,9,10,11,12],[[\"(\\\\d{2})(\\\\d{5,6})\",\"$1 $2\",[\"(?:10|2[0-57-9])[19]|3(?:[157]|35|49|9[1-68])|4(?:1[124-9]|2[179]|6[47-9]|7|8[23])|5(?:[1357]|2[37]|4[36]|6[1-46]|80)|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:07|1[236-8]|2[5-7]|[37]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3|4[13]|5[1-5]|7[0-79]|9[0-35-9])|(?:4[35]|59|85)[1-9]\",\"(?:10|2[0-57-9])(?:1[02]|9[56])|8078|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:1[124-9]|2[179]|[35][1-9]|6[47-9]|7\\\\d|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3\\\\d|4[13]|5[1-5]|7[0-79]|9[0-35-9]))1\",\"10(?:1(?:0|23)|9[56])|2[0-57-9](?:1(?:00|23)|9[56])|80781|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:1[124-9]|2[179]|[35][1-9]|6[47-9]|7\\\\d|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3\\\\d|4[13]|5[1-5]|7[0-79]|9[0-35-9]))12\",\"10(?:1(?:0|23)|9[56])|2[0-57-9](?:1(?:00|23)|9[56])|807812|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:1[124-9]|2[179]|[35][1-9]|6[47-9]|7\\\\d|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3\\\\d|4[13]|5[1-5]|7[0-79]|9[0-35-9]))123\",\"10(?:1(?:0|23)|9[56])|2[0-57-9](?:1(?:00|23)|9[56])|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:1[124-9]|2[179]|[35][1-9]|6[47-9]|7\\\\d|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:078|1[236-8]|2[5-7]|[37]\\\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3\\\\d|4[13]|5[1-5]|7[0-79]|9[0-35-9]))123\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5,6})\",\"$1 $2\",[\"3(?:[157]|35|49|9[1-68])|4(?:[17]|2[179]|6[47-9]|8[23])|5(?:[1357]|2[37]|4[36]|6[1-46]|80)|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]|4[13]|5[1-5])|(?:4[35]|59|85)[1-9]\",\"(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))[19]\",\"85[23](?:10|95)|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))(?:10|9[56])\",\"85[23](?:100|95)|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))(?:100|9[56])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"(?:4|80)0\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"10|2(?:[02-57-9]|1[1-9])\",\"10|2(?:[02-57-9]|1[1-9])\",\"10[0-79]|2(?:[02-57-9]|1[1-79])|(?:10|21)8(?:0[1-9]|[1-9])\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"3(?:[3-59]|7[02-68])|4(?:[26-8]|3[3-9]|5[2-9])|5(?:3[03-9]|[468]|7[028]|9[2-46-9])|6|7(?:[0-247]|3[04-9]|5[0-4689]|6[2368])|8(?:[1-358]|9[1-7])|9(?:[013479]|5[1-5])|(?:[34]1|55|79|87)[02-9]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{7,8})\",\"$1 $2\",[\"9\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"80\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[3-578]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"1[3-9]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"[12]\"],\"0$1\",1]],\"0\",0,\"(1(?:[12]\\\\d|79)\\\\d\\\\d)|0\",0,0,0,0,\"00\"],\"CO\":[\"57\",\"00(?:4(?:[14]4|56)|[579])\",\"(?:46|60\\\\d\\\\d)\\\\d{6}|(?:1\\\\d|[39])\\\\d{9}\",[8,10,11],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"46\"]],[\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"6|90\"],\"($1)\"],[\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"3[0-357]|9[14]\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{7})\",\"$1-$2-$3\",[\"1\"],\"0$1\",0,\"$1 $2 $3\"]],\"0\",0,\"0([3579]|4(?:[14]4|56))?\"],\"CR\":[\"506\",\"00\",\"(?:8\\\\d|90)\\\\d{8}|(?:[24-8]\\\\d{3}|3005)\\\\d{4}\",[8,10],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2-7]|8[3-9]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[89]\"]]],0,0,\"(19(?:0[0-2468]|1[09]|20|66|77|99))\"],\"CU\":[\"53\",\"119\",\"(?:[2-7]|8\\\\d\\\\d)\\\\d{7}|[2-47]\\\\d{6}|[34]\\\\d{5}\",[6,7,8,10],[[\"(\\\\d{2})(\\\\d{4,6})\",\"$1 $2\",[\"2[1-4]|[34]\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{6,7})\",\"$1 $2\",[\"7\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"[56]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"8\"],\"0$1\"]],\"0\"],\"CV\":[\"238\",\"0\",\"(?:[2-59]\\\\d\\\\d|800)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[2-589]\"]]]],\"CW\":[\"599\",\"00\",\"(?:[34]1|60|(?:7|9\\\\d)\\\\d)\\\\d{5}\",[7,8],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[3467]\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"9[4-8]\"]]],0,0,0,0,0,\"[69]\"],\"CX\":[\"61\",\"001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011\",\"1(?:[0-79]\\\\d{8}(?:\\\\d{2})?|8[0-24-9]\\\\d{7})|[148]\\\\d{8}|1\\\\d{5,7}\",[6,7,8,9,10,12],0,\"0\",0,\"([59]\\\\d{7})$|0\",\"8$1\",0,0,[[\"8(?:51(?:0(?:01|30|59|88)|1(?:17|46|75)|2(?:22|35))|91(?:00[6-9]|1(?:[28]1|49|78)|2(?:09|63)|3(?:12|26|75)|4(?:56|97)|64\\\\d|7(?:0[01]|1[0-2])|958))\\\\d{3}\",[9]],[\"4(?:79[01]|83[0-36-9]|95[0-3])\\\\d{5}|4(?:[0-36]\\\\d|4[047-9]|[58][0-24-9]|7[02-8]|9[0-47-9])\\\\d{6}\",[9]],[\"180(?:0\\\\d{3}|2)\\\\d{3}\",[7,10]],[\"190[0-26]\\\\d{6}\",[10]],0,0,0,0,[\"14(?:5(?:1[0458]|[23][458])|71\\\\d)\\\\d{4}\",[9]],[\"13(?:00\\\\d{6}(?:\\\\d{2})?|45[0-4]\\\\d{3})|13\\\\d{4}\",[6,8,10,12]]],\"0011\"],\"CY\":[\"357\",\"00\",\"(?:[279]\\\\d|[58]0)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[257-9]\"]]]],\"CZ\":[\"420\",\"00\",\"(?:[2-578]\\\\d|60)\\\\d{7}|9\\\\d{8,11}\",[9,10,11,12],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-8]|9[015-7]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"96\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"9\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"9\"]]]],\"DE\":[\"49\",\"00\",\"[2579]\\\\d{5,14}|49(?:[34]0|69|8\\\\d)\\\\d\\\\d?|49(?:37|49|60|7[089]|9\\\\d)\\\\d{1,3}|49(?:2[024-9]|3[2-689]|7[1-7])\\\\d{1,8}|(?:1|[368]\\\\d|4[0-8])\\\\d{3,13}|49(?:[015]\\\\d|2[13]|31|[46][1-8])\\\\d{1,9}\",[4,5,6,7,8,9,10,11,12,13,14,15],[[\"(\\\\d{2})(\\\\d{3,13})\",\"$1 $2\",[\"3[02]|40|[68]9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3,12})\",\"$1 $2\",[\"2(?:0[1-389]|1[124]|2[18]|3[14])|3(?:[35-9][15]|4[015])|906|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1\",\"2(?:0[1-389]|12[0-8])|3(?:[35-9][15]|4[015])|906|2(?:[13][14]|2[18])|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{2,11})\",\"$1 $2\",[\"[24-6]|3(?:[3569][02-46-9]|4[2-4679]|7[2-467]|8[2-46-8])|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]\",\"[24-6]|3(?:3(?:0[1-467]|2[127-9]|3[124578]|7[1257-9]|8[1256]|9[145])|4(?:2[135]|4[13578]|9[1346])|5(?:0[14]|2[1-3589]|6[1-4]|7[13468]|8[13568])|6(?:2[1-489]|3[124-6]|6[13]|7[12579]|8[1-356]|9[135])|7(?:2[1-7]|4[145]|6[1-5]|7[1-4])|8(?:21|3[1468]|6|7[1467]|8[136])|9(?:0[12479]|2[1358]|4[134679]|6[1-9]|7[136]|8[147]|9[1468]))|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]|3[68]4[1347]|3(?:47|60)[1356]|3(?:3[46]|46|5[49])[1246]|3[4579]3[1357]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"138\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{2,10})\",\"$1 $2\",[\"3\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5,11})\",\"$1 $2\",[\"181\"],\"0$1\"],[\"(\\\\d{3})(\\\\d)(\\\\d{4,10})\",\"$1 $2 $3\",[\"1(?:3|80)|9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{7,8})\",\"$1 $2\",[\"1[67]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{7,12})\",\"$1 $2\",[\"8\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{6})\",\"$1 $2\",[\"185\",\"1850\",\"18500\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{7})\",\"$1 $2\",[\"18[68]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{7})\",\"$1 $2\",[\"15[1279]\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{6})\",\"$1 $2\",[\"15[03568]\",\"15(?:[0568]|3[13])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{8})\",\"$1 $2\",[\"18\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{7,8})\",\"$1 $2 $3\",[\"1(?:6[023]|7)\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{2})(\\\\d{7})\",\"$1 $2 $3\",[\"15[279]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{8})\",\"$1 $2 $3\",[\"15\"],\"0$1\"]],\"0\"],\"DJ\":[\"253\",\"00\",\"(?:2\\\\d|77)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[27]\"]]]],\"DK\":[\"45\",\"00\",\"[2-9]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-9]\"]]]],\"DM\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|767|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-7]\\\\d{6})$|1\",\"767$1\",0,\"767\"],\"DO\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,0,0,0,\"8001|8[024]9\"],\"DZ\":[\"213\",\"00\",\"(?:[1-4]|[5-79]\\\\d|80)\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[1-4]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-8]\"],\"0$1\"]],\"0\"],\"EC\":[\"593\",\"00\",\"1\\\\d{9,10}|(?:[2-7]|9\\\\d)\\\\d{7}\",[8,9,10,11],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2-$3\",[\"[2-7]\"],\"(0$1)\",0,\"$1-$2-$3\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"1\"]]],\"0\"],\"EE\":[\"372\",\"00\",\"8\\\\d{9}|[4578]\\\\d{7}|(?:[3-8]\\\\d|90)\\\\d{5}\",[7,8,10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[369]|4[3-8]|5(?:[0-2]|5[0-478]|6[45])|7[1-9]|88\",\"[369]|4[3-8]|5(?:[02]|1(?:[0-8]|95)|5[0-478]|6(?:4[0-4]|5[1-589]))|7[1-9]|88\"]],[\"(\\\\d{4})(\\\\d{3,4})\",\"$1 $2\",[\"[45]|8(?:00|[1-49])\",\"[45]|8(?:00[1-9]|[1-49])\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]]]],\"EG\":[\"20\",\"00\",\"[189]\\\\d{8,9}|[24-6]\\\\d{8}|[135]\\\\d{7}\",[8,9,10],[[\"(\\\\d)(\\\\d{7,8})\",\"$1 $2\",[\"[23]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{6,7})\",\"$1 $2\",[\"1[35]|[4-6]|8[2468]|9[235-7]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{8})\",\"$1 $2\",[\"1\"],\"0$1\"]],\"0\"],\"EH\":[\"212\",\"00\",\"[5-8]\\\\d{8}\",[9],0,\"0\",0,0,0,0,0,[[\"528[89]\\\\d{5}\"],[\"(?:6(?:[0-79]\\\\d|8[0-247-9])|7(?:[016-8]\\\\d|2[0-8]|5[0-5]))\\\\d{6}\"],[\"80[0-7]\\\\d{6}\"],[\"89\\\\d{7}\"],0,0,0,0,[\"(?:592(?:4[0-2]|93)|80[89]\\\\d\\\\d)\\\\d{4}\"]]],\"ER\":[\"291\",\"00\",\"[178]\\\\d{6}\",[7],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[178]\"],\"0$1\"]],\"0\"],\"ES\":[\"34\",\"00\",\"[5-9]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[89]00\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-9]\"]]]],\"ET\":[\"251\",\"00\",\"(?:11|[2-579]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-579]\"],\"0$1\"]],\"0\"],\"FI\":[\"358\",\"00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))\",\"[1-35689]\\\\d{4}|7\\\\d{10,11}|(?:[124-7]\\\\d|3[0-46-9])\\\\d{8}|[1-9]\\\\d{5,8}\",[5,6,7,8,9,10,11,12],[[\"(\\\\d{5})\",\"$1\",[\"20[2-59]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3,7})\",\"$1 $2\",[\"(?:[1-3]0|[68])0|70[07-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4,8})\",\"$1 $2\",[\"[14]|2[09]|50|7[135]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{6,10})\",\"$1 $2\",[\"7\"],\"0$1\"],[\"(\\\\d)(\\\\d{4,9})\",\"$1 $2\",[\"(?:19|[2568])[1-8]|3(?:0[1-9]|[1-9])|9\"],\"0$1\"]],\"0\",0,0,0,0,\"1[03-79]|[2-9]\",0,\"00\"],\"FJ\":[\"679\",\"0(?:0|52)\",\"45\\\\d{5}|(?:0800\\\\d|[235-9])\\\\d{6}\",[7,11],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[235-9]|45\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"0\"]]],0,0,0,0,0,0,0,\"00\"],\"FK\":[\"500\",\"00\",\"[2-7]\\\\d{4}\",[5]],\"FM\":[\"691\",\"00\",\"(?:[39]\\\\d\\\\d|820)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[389]\"]]]],\"FO\":[\"298\",\"00\",\"[2-9]\\\\d{5}\",[6],[[\"(\\\\d{6})\",\"$1\",[\"[2-9]\"]]],0,0,\"(10(?:01|[12]0|88))\"],\"FR\":[\"33\",\"00\",\"[1-9]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0 $1\"],[\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"[1-79]\"],\"0$1\"]],\"0\"],\"GA\":[\"241\",\"00\",\"(?:[067]\\\\d|11)\\\\d{6}|[2-7]\\\\d{6}\",[7,8],[[\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-7]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"0\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"11|[67]\"],\"0$1\"]],0,0,\"0(11\\\\d{6}|60\\\\d{6}|61\\\\d{6}|6[256]\\\\d{6}|7[467]\\\\d{6})\",\"$1\"],\"GB\":[\"44\",\"00\",\"[1-357-9]\\\\d{9}|[18]\\\\d{8}|8\\\\d{6}\",[7,9,10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"800\",\"8001\",\"80011\",\"800111\",\"8001111\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"845\",\"8454\",\"84546\",\"845464\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"800\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{4,5})\",\"$1 $2\",[\"1(?:38|5[23]|69|76|94)\",\"1(?:(?:38|69)7|5(?:24|39)|768|946)\",\"1(?:3873|5(?:242|39[4-6])|(?:697|768)[347]|9467)\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5,6})\",\"$1 $2\",[\"1(?:[2-69][02-9]|[78])\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[25]|7(?:0|6[02-9])\",\"[25]|7(?:0|6(?:[03-9]|2[356]))\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"7\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1389]\"],\"0$1\"]],\"0\",0,\"0|180020\",0,0,0,[[\"(?:1(?:1(?:3(?:[0-58]\\\\d\\\\d|73[0-5])|4(?:(?:[0-5]\\\\d|70)\\\\d|69[7-9])|(?:(?:5[0-26-9]|[78][0-49])\\\\d|6(?:[0-4]\\\\d|5[01]))\\\\d)|(?:2(?:(?:0[024-9]|2[3-9]|3[3-79]|4[1-689]|[58][02-9]|6[0-47-9]|7[013-9]|9\\\\d)\\\\d|1(?:[0-7]\\\\d|8[0-3]))|(?:3(?:0\\\\d|1[0-8]|[25][02-9]|3[02-579]|[468][0-46-9]|7[1-35-79]|9[2-578])|4(?:0[03-9]|[137]\\\\d|[28][02-57-9]|4[02-69]|5[0-8]|[69][0-79])|5(?:0[1-35-9]|[16]\\\\d|2[024-9]|3[015689]|4[02-9]|5[03-9]|7[0-35-9]|8[0-468]|9[0-57-9])|6(?:0[034689]|1\\\\d|2[0-35689]|[38][013-9]|4[1-467]|5[0-69]|6[13-9]|7[0-8]|9[0-24578])|7(?:0[0246-9]|2\\\\d|3[0236-8]|4[03-9]|5[0-46-9]|6[013-9]|7[0-35-9]|8[024-9]|9[02-9])|8(?:0[35-9]|2[1-57-9]|3[02-578]|4[0-578]|5[124-9]|6[2-69]|7\\\\d|8[02-9]|9[02569])|9(?:0[02-589]|[18]\\\\d|2[02-689]|3[1-57-9]|4[2-9]|5[0-579]|6[2-47-9]|7[0-24578]|9[2-57]))\\\\d)\\\\d)|2(?:0[013478]|3[0189]|4[017]|8[0-46-9]|9[0-2])\\\\d{3})\\\\d{4}|1(?:2(?:0(?:46[1-4]|87[2-9])|545[1-79]|76(?:2\\\\d|3[1-8]|6[1-6])|9(?:7(?:2[0-4]|3[2-5])|8(?:2[2-8]|7[0-47-9]|8[3-5])))|3(?:6(?:38[2-5]|47[23])|8(?:47[04-9]|64[0157-9]))|4(?:044[1-7]|20(?:2[23]|8\\\\d)|6(?:0(?:30|5[2-57]|6[1-8]|7[2-8])|140)|8(?:052|87[1-3]))|5(?:2(?:4(?:3[2-79]|6\\\\d)|76\\\\d)|6(?:26[06-9]|686))|6(?:06(?:4\\\\d|7[4-79])|295[5-7]|35[34]\\\\d|47(?:24|61)|59(?:5[08]|6[67]|74)|9(?:55[0-4]|77[23]))|7(?:26(?:6[13-9]|7[0-7])|(?:442|688)\\\\d|50(?:2[0-3]|[3-68]2|76))|8(?:27[56]\\\\d|37(?:5[2-5]|8[239])|843[2-58])|9(?:0(?:0(?:6[1-8]|85)|52\\\\d)|3583|4(?:66[1-8]|9(?:2[01]|81))|63(?:23|3[1-4])|9561))\\\\d{3}\",[9,10]],[\"7(?:457[0-57-9]|700[01]|911[028])\\\\d{5}|7(?:[1-3]\\\\d\\\\d|4(?:[0-46-9]\\\\d|5[0-689])|5(?:0[0-8]|[13-9]\\\\d|2[0-35-9])|7(?:0[1-9]|[1-7]\\\\d|8[02-9]|9[0-689])|8(?:[014-9]\\\\d|[23][0-8])|9(?:[024-9]\\\\d|1[02-9]|3[0-689]))\\\\d{6}\",[10]],[\"80[08]\\\\d{7}|800\\\\d{6}|8001111\"],[\"(?:8(?:4[2-5]|7[0-3])|9(?:[01]\\\\d|8[2-49]))\\\\d{7}|845464\\\\d\",[7,10]],[\"70\\\\d{8}\",[10]],0,[\"(?:3[0347]|55)\\\\d{8}\",[10]],[\"76(?:464|652)\\\\d{5}|76(?:0[0-28]|2[356]|34|4[01347]|5[49]|6[0-369]|77|8[14]|9[139])\\\\d{6}\",[10]],[\"56\\\\d{8}\",[10]]],0,\" x\"],\"GD\":[\"1\",\"011\",\"(?:473|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-9]\\\\d{6})$|1\",\"473$1\",0,\"473\"],\"GE\":[\"995\",\"00\",\"(?:[3-57]\\\\d\\\\d|800)\\\\d{6}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"70\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"32\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[57]\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[348]\"],\"0$1\"]],\"0\"],\"GF\":[\"594\",\"00\",\"(?:[56]94\\\\d|7093)\\\\d{5}|(?:80|9\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-7]|9[47]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[89]\"],\"0$1\"]],\"0\"],\"GG\":[\"44\",\"00\",\"(?:1481|[357-9]\\\\d{3})\\\\d{6}|8\\\\d{6}(?:\\\\d{2})?\",[7,9,10],0,\"0\",0,\"([25-9]\\\\d{5})$|0|180020\",\"1481$1\",0,0,[[\"1481[25-9]\\\\d{5}\",[10]],[\"7(?:(?:781|839)\\\\d|911[17])\\\\d{5}\",[10]],[\"80[08]\\\\d{7}|800\\\\d{6}|8001111\"],[\"(?:8(?:4[2-5]|7[0-3])|9(?:[01]\\\\d|8[0-3]))\\\\d{7}|845464\\\\d\",[7,10]],[\"70\\\\d{8}\",[10]],0,[\"(?:3[0347]|55)\\\\d{8}\",[10]],[\"76(?:464|652)\\\\d{5}|76(?:0[0-28]|2[356]|34|4[01347]|5[49]|6[0-369]|77|8[14]|9[139])\\\\d{6}\",[10]],[\"56\\\\d{8}\",[10]]]],\"GH\":[\"233\",\"00\",\"(?:[235]\\\\d{3}|800)\\\\d{5}\",[8,9],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"8\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[235]\"],\"0$1\"]],\"0\"],\"GI\":[\"350\",\"00\",\"(?:[25]\\\\d|60)\\\\d{6}\",[8],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"2\"]]]],\"GL\":[\"299\",\"00\",\"(?:19|[2-689]\\\\d|70)\\\\d{4}\",[6],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"19|[2-9]\"]]]],\"GM\":[\"220\",\"00\",\"[2-9]\\\\d{6}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-9]\"]]]],\"GN\":[\"224\",\"00\",\"722\\\\d{6}|(?:3|6\\\\d)\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"3\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[67]\"]]]],\"GP\":[\"590\",\"00\",\"(?:590\\\\d|7090)\\\\d{5}|(?:69|80|9\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-79]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"590(?:0[1-68]|[14][0-24-9]|2[0-68]|3[1-9]|5[3-579]|[68][0-689]|7[08]|9\\\\d)\\\\d{4}\"],[\"(?:69(?:0\\\\d\\\\d|1(?:2[2-9]|3[0-5])|4(?:0[89]|1[2-6]|9\\\\d)|6(?:1[016-9]|5[0-4]|[67]\\\\d))|7090[0-4])\\\\d{4}\"],[\"80[0-5]\\\\d{6}\"],0,0,0,0,0,[\"9(?:(?:39[5-7]|76[018])\\\\d|475[0-6])\\\\d{4}\"]]],\"GQ\":[\"240\",\"00\",\"222\\\\d{6}|(?:3\\\\d|55|[89]0)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[235]\"]],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"[89]\"]]]],\"GR\":[\"30\",\"00\",\"5005000\\\\d{3}|8\\\\d{9,11}|(?:[269]\\\\d|70)\\\\d{8}\",[10,11,12],[[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"21|7\"]],[\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"2(?:2|3[2-57-9]|4[2-469]|5[2-59]|6[2-9]|7[2-69]|8[2-49])|5\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2689]\"]],[\"(\\\\d{3})(\\\\d{3,4})(\\\\d{5})\",\"$1 $2 $3\",[\"8\"]]]],\"GT\":[\"502\",\"00\",\"80\\\\d{6}|(?:1\\\\d{3}|[2-7])\\\\d{7}\",[8,11],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2-8]\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]]]],\"GU\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|671|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-9]\\\\d{6})$|1\",\"671$1\",0,\"671\"],\"GW\":[\"245\",\"00\",\"[49]\\\\d{8}|4\\\\d{6}\",[7,9],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"40\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[49]\"]]]],\"GY\":[\"592\",\"001\",\"(?:[2-8]\\\\d{3}|9008)\\\\d{3}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-9]\"]]]],\"HK\":[\"852\",\"00(?:30|5[09]|[126-9]?)\",\"8[0-46-9]\\\\d{6,7}|9\\\\d{4,7}|(?:[2-7]|9\\\\d{3})\\\\d{7}\",[5,6,7,8,9,11],[[\"(\\\\d{3})(\\\\d{2,5})\",\"$1 $2\",[\"900\",\"9003\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2-7]|8[1-4]|9(?:0[1-9]|[1-8])\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"9\"]]],0,0,0,0,0,0,0,\"00\"],\"HN\":[\"504\",\"00\",\"8\\\\d{10}|[237-9]\\\\d{7}\",[8,11],[[\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"[237-9]\"]]]],\"HR\":[\"385\",\"00\",\"[2-69]\\\\d{8}|80\\\\d{5,7}|[1-79]\\\\d{7}|6\\\\d{6}\",[7,8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"6[01]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"8\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"6|7[245]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-57]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"],\"0$1\"]],\"0\"],\"HT\":[\"509\",\"00\",\"[2-589]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-589]\"]]]],\"HU\":[\"36\",\"00\",\"[235-7]\\\\d{8}|[1-9]\\\\d{7}\",[8,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"(06 $1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[27][2-9]|3[2-7]|4[24-9]|5[2-79]|6|8[2-57-9]|9[2-69]\"],\"(06 $1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-9]\"],\"06 $1\"]],\"06\"],\"ID\":[\"62\",\"00[89]\",\"00[1-9]\\\\d{9,14}|(?:[1-36]|8\\\\d{5})\\\\d{6}|00\\\\d{9}|[1-9]\\\\d{8,10}|[2-9]\\\\d{7}\",[7,8,9,10,11,12,13,14,15,16,17],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"15\"]],[\"(\\\\d{2})(\\\\d{5,9})\",\"$1 $2\",[\"2[124]|[36]1\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{5,7})\",\"$1 $2\",[\"800\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5,8})\",\"$1 $2\",[\"[2-79]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3,4})(\\\\d{3})\",\"$1-$2-$3\",[\"8[1-35-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6,8})\",\"$1 $2\",[\"1\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"804\"],\"0$1\"],[\"(\\\\d{3})(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"80\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4,5})\",\"$1-$2-$3\",[\"8\"],\"0$1\"]],\"0\"],\"IE\":[\"353\",\"00\",\"(?:1\\\\d|[2569])\\\\d{6,8}|4\\\\d{6,9}|7\\\\d{8}|8\\\\d{8,9}\",[7,8,9,10],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"2[24-9]|47|58|6[237-9]|9[35-9]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[45]0\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2569]|4[1-69]|7[14]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"70\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"81\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[78]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"4\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\"],\"IL\":[\"972\",\"0(?:0|1[2-9])\",\"1\\\\d{6}(?:\\\\d{3,5})?|[57]\\\\d{8}|[1-489]\\\\d{7}\",[7,8,9,10,11,12],[[\"(\\\\d{4})(\\\\d{3})\",\"$1-$2\",[\"125\"]],[\"(\\\\d{4})(\\\\d{2})(\\\\d{2})\",\"$1-$2-$3\",[\"121\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[2-489]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[57]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1-$2-$3\",[\"12\"]],[\"(\\\\d{4})(\\\\d{6})\",\"$1-$2\",[\"159\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1-$2-$3-$4\",[\"1[7-9]\"]],[\"(\\\\d{3})(\\\\d{1,2})(\\\\d{3})(\\\\d{4})\",\"$1-$2 $3-$4\",[\"15\"]]],\"0\"],\"IM\":[\"44\",\"00\",\"1624\\\\d{6}|(?:[3578]\\\\d|90)\\\\d{8}\",[10],0,\"0\",0,\"([25-8]\\\\d{5})$|0|180020\",\"1624$1\",0,\"74576|(?:16|7[56])24\"],\"IN\":[\"91\",\"00\",\"(?:000800|[2-9]\\\\d\\\\d)\\\\d{7}|1\\\\d{7,12}\",[8,9,10,11,12,13],[[\"(\\\\d{8})\",\"$1\",[\"5(?:0|2[23]|3[03]|[67]1|88)\",\"5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|888)\",\"5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|8888)\"],0,1],[\"(\\\\d{4})(\\\\d{4,5})\",\"$1 $2\",[\"180\",\"1800\"],0,1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"140\"],0,1],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"11|2[02]|33|4[04]|79[1-7]|80[2-46]\",\"11|2[02]|33|4[04]|79(?:[1-6]|7[19])|80(?:[2-4]|6[0-589])\",\"11|2[02]|33|4[04]|79(?:[124-6]|3(?:[02-9]|1[0-24-9])|7(?:1|9[1-6]))|80(?:[2-4]|6[0-589])\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1(?:2[0-249]|3[0-25]|4[145]|[68]|7[1257])|2(?:1[257]|3[013]|4[01]|5[0137]|6[0158]|78|8[1568])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|5[12]|[78]1)|6(?:12|[2-4]1|5[17]|6[13]|80)|7(?:12|3[134]|4[47]|61|88)|8(?:16|2[014]|3[126]|6[136]|7[078]|8[34]|91)|(?:43|59|75)[15]|(?:1[59]|29|67|72)[14]\",\"1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|674|7(?:(?:2[14]|3[34]|5[15])[2-6]|61[346]|88[0-8])|8(?:70[2-6]|84[235-7]|91[3-7])|(?:1(?:29|60|8[06])|261|552|6(?:12|[2-47]1|5[17]|6[13]|80)|7(?:12|31|4[47])|8(?:16|2[014]|3[126]|6[136]|7[78]|83))[2-7]\",\"1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|6(?:12(?:[2-6]|7[0-8])|74[2-7])|7(?:(?:2[14]|5[15])[2-6]|3171|61[346]|88(?:[2-7]|82))|8(?:70[2-6]|84(?:[2356]|7[19])|91(?:[3-6]|7[19]))|73[134][2-6]|(?:74[47]|8(?:16|2[014]|3[126]|6[136]|7[78]|83))(?:[2-6]|7[19])|(?:1(?:29|60|8[06])|261|552|6(?:[2-4]1|5[17]|6[13]|7(?:1|4[0189])|80)|7(?:12|88[01]))[2-7]\"],\"0$1\",1],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2[2457-9]|3[2-5]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1[013-9]|28|3[129]|4[1-35689]|5[29]|6[02-5]|70)|807\",\"1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2(?:[2457]|84|95)|3(?:[2-4]|55)|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1(?:[013-8]|9[6-9])|28[6-8]|3(?:17|2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4|5[0-367])|70[13-7])|807[19]\",\"1(?:[2-479]|5(?:[0236-9]|5[013-9]))|[2-5]|6(?:2(?:84|95)|355|8(?:28[235-7]|3))|73179|807(?:1|9[1-3])|(?:1552|6(?:(?:1[1358]|2[2457]|3[2-4]|4[235-7]|5[2-689]|6[24578]|7[235689])\\\\d|8(?:[14-6]\\\\d|2[0-79]))|7(?:1(?:[013-8]\\\\d|9[6-9])|28[6-8]|3(?:2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]\\\\d|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4\\\\d|5[0-367])|70[13-7]))[2-7]\"],\"0$1\",1],[\"(\\\\d{5})(\\\\d{5})\",\"$1 $2\",[\"16|[6-9]\"],\"0$1\",1],[\"(\\\\d{4})(\\\\d{2,4})(\\\\d{4})\",\"$1 $2 $3\",[\"18[06]\",\"18[06]0\"],0,1],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"18\"],0,1]],\"0\"],\"IO\":[\"246\",\"00\",\"3\\\\d{6}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"3\"]]]],\"IQ\":[\"964\",\"00\",\"(?:1|7\\\\d\\\\d)\\\\d{7}|[2-6]\\\\d{7,8}\",[8,9,10],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-6]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],\"0\"],\"IR\":[\"98\",\"00\",\"[1-9]\\\\d{9}|(?:[1-8]\\\\d\\\\d|9)\\\\d{3,4}\",[4,5,6,7,10],[[\"(\\\\d{4,5})\",\"$1\",[\"96\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4,5})\",\"$1 $2\",[\"(?:1[137]|2[13-68]|3[1458]|4[145]|5[1468]|6[16]|7[1467]|8[13467])[12689]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-8]\"],\"0$1\"]],\"0\"],\"IS\":[\"354\",\"00|1(?:0(?:01|[12]0)|100)\",\"(?:38\\\\d|[4-9])\\\\d{6}\",[7,9],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[4-9]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"3\"]]],0,0,0,0,0,0,0,\"00\"],\"IT\":[\"39\",\"00\",\"0\\\\d{5,11}|1\\\\d{8,10}|3(?:[0-8]\\\\d{7,10}|9\\\\d{7,8})|(?:43|55|70)\\\\d{8}|8\\\\d{5}(?:\\\\d{2,4})?\",[6,7,8,9,10,11,12],[[\"(\\\\d{2})(\\\\d{4,6})\",\"$1 $2\",[\"0[26]\"]],[\"(\\\\d{3})(\\\\d{3,6})\",\"$1 $2\",[\"0[13-57-9][0159]|8(?:03|4[17]|9[2-5])\",\"0[13-57-9][0159]|8(?:03|4[17]|9(?:2|3[04]|[45][0-4]))\"]],[\"(\\\\d{4})(\\\\d{2,6})\",\"$1 $2\",[\"0(?:[13-579][2-46-8]|8[236-8])\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"894\"]],[\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"0[26]|5\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"1(?:44|[679])|[378]|43\"]],[\"(\\\\d{3})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"0[13-57-9][0159]|14\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{5})\",\"$1 $2 $3\",[\"0[26]\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"0\"]],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4,5})\",\"$1 $2 $3\",[\"[03]\"]]],0,0,0,0,0,0,[[\"0(?:669[0-79]\\\\d{1,6}|831\\\\d{2,8})|0(?:1(?:[0159]\\\\d|[27][1-5]|31|4[1-4]|6[1356]|8[2-57])|2\\\\d\\\\d|3(?:[0159]\\\\d|2[1-4]|3[12]|[48][1-6]|6[2-59]|7[1-7])|4(?:[0159]\\\\d|[23][1-9]|4[245]|6[1-5]|7[1-4]|81)|5(?:[0159]\\\\d|2[1-5]|3[2-6]|4[1-79]|6[4-6]|7[1-578]|8[3-8])|6(?:[0-57-9]\\\\d|6[0-8])|7(?:[0159]\\\\d|2[12]|3[1-7]|4[2-46]|6[13569]|7[13-6]|8[1-59])|8(?:[0159]\\\\d|2[3-578]|3[2356]|[6-8][1-5])|9(?:[0159]\\\\d|[238][1-5]|4[12]|6[1-8]|7[1-6]))\\\\d{2,7}\"],[\"3[2-9]\\\\d{7,8}|(?:31|43)\\\\d{8}\",[9,10]],[\"80(?:0\\\\d{3}|3)\\\\d{3}\",[6,9]],[\"(?:0878\\\\d{3}|89(?:2\\\\d|3[04]|4(?:[0-4]|[5-9]\\\\d\\\\d)|5[0-4]))\\\\d\\\\d|(?:1(?:44|6[346])|89(?:38|5[5-9]|9))\\\\d{6}\",[6,8,9,10]],[\"1(?:78\\\\d|99)\\\\d{6}\",[9,10]],[\"3[2-8]\\\\d{9,10}\",[11,12]],0,0,[\"55\\\\d{8}\",[10]],[\"84(?:[08]\\\\d{3}|[17])\\\\d{3}\",[6,9]]]],\"JE\":[\"44\",\"00\",\"1534\\\\d{6}|(?:[3578]\\\\d|90)\\\\d{8}\",[10],0,\"0\",0,\"([0-24-8]\\\\d{5})$|0|180020\",\"1534$1\",0,0,[[\"1534[0-24-8]\\\\d{5}\"],[\"7(?:(?:(?:50|82)9|937)\\\\d|7(?:00[378]|97\\\\d))\\\\d{5}\"],[\"80(?:07(?:35|81)|8901)\\\\d{4}\"],[\"(?:8(?:4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))|90(?:066[59]|1810|71(?:07|55)))\\\\d{4}\"],[\"701511\\\\d{4}\"],0,[\"(?:3(?:0(?:07(?:35|81)|8901)|3\\\\d{4}|4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))|55\\\\d{4})\\\\d{4}\"],[\"76(?:464|652)\\\\d{5}|76(?:0[0-28]|2[356]|34|4[01347]|5[49]|6[0-369]|77|8[14]|9[139])\\\\d{6}\"],[\"56\\\\d{8}\"]]],\"JM\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|658|900)\\\\d{7}\",[10],0,\"1\",0,0,0,0,\"658|876\"],\"JO\":[\"962\",\"00\",\"(?:(?:[2689]|7\\\\d)\\\\d|32|427|53)\\\\d{6}\",[8,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2356]|87\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{5,6})\",\"$1 $2\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"70\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[47]\"],\"0$1\"]],\"0\"],\"JP\":[\"81\",\"010\",\"00[1-9]\\\\d{6,14}|[25-9]\\\\d{9}|(?:00|[1-9]\\\\d\\\\d)\\\\d{6}\",[8,9,10,11,12,13,14,15,16,17],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1-$2-$3\",[\"(?:12|57|99)0\"],\"0$1\"],[\"(\\\\d{4})(\\\\d)(\\\\d{4})\",\"$1-$2-$3\",[\"1(?:26|3[79]|4[56]|5[4-68]|6[3-5])|499|5(?:76|97)|746|8(?:3[89]|47|51)|9(?:80|9[16])\",\"1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:76|97)9|7468|8(?:3(?:8[7-9]|96)|477|51[2-9])|9(?:802|9(?:1[23]|69))|1(?:45|58)[67]\",\"1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:769|979[2-69])|7468|8(?:3(?:8[7-9]|96[2457-9])|477|51[2-9])|9(?:802|9(?:1[23]|69))|1(?:45|58)[67]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"60\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"3|4(?:2[09]|7[01])|6[1-9]\",\"3|4(?:2(?:0|9[02-69])|7(?:0[019]|1))|6[1-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"1(?:1|5[45]|77|88|9[69])|2(?:2[1-37]|3[0-269]|4[59]|5|6[24]|7[1-358]|8[1369]|9[0-38])|4(?:[28][1-9]|3[0-57]|[45]|6[248]|7[2-579]|9[29])|5(?:2|3[0459]|4[0-369]|5[29]|8[02389]|9[0-389])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9[2-6])|8(?:2[124589]|3[26-9]|49|51|6|7[0-468]|8[68]|9[019])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9[1-489])\",\"1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2(?:[127]|3[014-9])|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9[19])|62|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|8[1-9]|9[29])|5(?:2|3(?:[045]|9[0-8])|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0-2469])|3(?:[29]|60)|49|51|6(?:[0-24]|36|5[0-3589]|7[23]|9[01459])|7[0-468]|8[68])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9(?:[1289]|3[34]|4[0178]))|(?:264|837)[016-9]|2(?:57|93)[015-9]|(?:25[0468]|422|838)[01]|(?:47[59]|59[89]|8(?:6[68]|9))[019]\",\"1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2[127]|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9(?:17|99))|6(?:2|4[016-9])|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|9[29])|5(?:2|3(?:[045]|9(?:[0-58]|6[4-9]|7[0-35689]))|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0169])|3(?:[29]|60|7(?:[017-9]|6[6-8]))|49|51|6(?:[0-24]|36[2-57-9]|5(?:[0-389]|5[23])|6(?:[01]|9[178])|7(?:2[2-468]|3[78])|9[0145])|7[0-468]|8[68])|9(?:4[15]|5[138]|7[156]|8[189]|9(?:[1289]|3(?:31|4[357])|4[0178]))|(?:8294|96)[1-3]|2(?:57|93)[015-9]|(?:223|8699)[014-9]|(?:25[0468]|422|838)[01]|(?:48|8292|9[23])[1-9]|(?:47[59]|59[89]|8(?:68|9))[019]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1-$2-$3\",[\"[14]|[289][2-9]|5[3-9]|7[2-4679]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"800\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"[25-9]\"],\"0$1\"]],\"0\",0,\"(000[2569]\\\\d{4,6})$|(?:(?:003768)0?)|0\",\"$1\"],\"KE\":[\"254\",\"000\",\"(?:[17]\\\\d\\\\d|900)\\\\d{6}|(?:2|80)0\\\\d{6,7}|[4-6]\\\\d{6,8}\",[7,8,9,10],[[\"(\\\\d{2})(\\\\d{5,7})\",\"$1 $2\",[\"[24-6]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"[17]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"]],\"0\"],\"KG\":[\"996\",\"00\",\"8\\\\d{9}|[235-9]\\\\d{8}\",[9,10],[[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"3(?:1[346]|[24-79])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[235-79]|88\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d)(\\\\d{2,3})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\"],\"KH\":[\"855\",\"00[14-9]\",\"1\\\\d{9}|[1-9]\\\\d{7,8}\",[8,9,10],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[1-9]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]]],\"0\"],\"KI\":[\"686\",\"00\",\"(?:[37]\\\\d|6[0-79])\\\\d{6}|(?:[2-48]\\\\d|50)\\\\d{3}\",[5,8],0,\"0\"],\"KM\":[\"269\",\"00\",\"[3478]\\\\d{6}\",[7],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[3478]\"]]]],\"KN\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-7]\\\\d{6})$|1\",\"869$1\",0,\"869\"],\"KP\":[\"850\",\"00|99\",\"85\\\\d{6}|(?:19\\\\d|[2-7])\\\\d{7}\",[8,10],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-7]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"]],\"0\"],\"KR\":[\"82\",\"00(?:[125689]|3(?:[46]5|91)|7(?:00|27|3|55|6[126]))\",\"00[1-9]\\\\d{8,11}|(?:[12]|5\\\\d{3})\\\\d{7}|[13-6]\\\\d{9}|(?:[1-6]\\\\d|80)\\\\d{7}|[3-6]\\\\d{4,5}|(?:00|7)0\\\\d{8}\",[5,6,8,9,10,11,12,13,14],[[\"(\\\\d{2})(\\\\d{3,4})\",\"$1-$2\",[\"(?:3[1-3]|[46][1-4]|5[1-5])1\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"1\"]],[\"(\\\\d)(\\\\d{3,4})(\\\\d{4})\",\"$1-$2-$3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[36]0|8\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1-$2-$3\",[\"[1346]|5[1-5]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"[57]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{5})(\\\\d{4})\",\"$1-$2-$3\",[\"5\"],\"0$1\"]],\"0\",0,\"0(8(?:[1-46-8]|5\\\\d\\\\d))?\"],\"KW\":[\"965\",\"00\",\"18\\\\d{5}|(?:[2569]\\\\d|41)\\\\d{6}\",[7,8],[[\"(\\\\d{4})(\\\\d{3,4})\",\"$1 $2\",[\"[169]|2(?:[235]|4[1-35-9])|52\"]],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[245]\"]]]],\"KY\":[\"1\",\"011\",\"(?:345|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-9]\\\\d{6})$|1\",\"345$1\",0,\"345\"],\"KZ\":[\"7\",\"810\",\"8\\\\d{13}|[78]\\\\d{9}\",[10,14],0,\"8\",0,0,0,0,\"7\",0,\"8~10\"],\"LA\":[\"856\",\"00\",\"[23]\\\\d{9}|3\\\\d{8}|(?:[235-8]\\\\d|41)\\\\d{6}\",[8,9,10],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2[13]|3[14]|[4-8]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"3\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"[23]\"],\"0$1\"]],\"0\"],\"LB\":[\"961\",\"00\",\"[27-9]\\\\d{7}|[13-9]\\\\d{6}\",[7,8],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[13-69]|7(?:[2-57]|62|8[0-6]|9[04-9])|8[02-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[27-9]\"]]],\"0\"],\"LC\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|758|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-8]\\\\d{6})$|1\",\"758$1\",0,\"758\"],\"LI\":[\"423\",\"00\",\"[68]\\\\d{8}|(?:[2378]\\\\d|90)\\\\d{5}\",[7,9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[2379]|8(?:0[09]|7)\",\"[2379]|8(?:0(?:02|9)|7)\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"69\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6\"]]],\"0\",0,\"(1001)|0\"],\"LK\":[\"94\",\"00\",\"[1-9]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[1-689]\"],\"0$1\"]],\"0\"],\"LR\":[\"231\",\"00\",\"(?:[2457]\\\\d|33|88)\\\\d{7}|(?:2\\\\d|[4-6])\\\\d{6}\",[7,8,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"4[67]|[56]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-578]\"],\"0$1\"]],\"0\"],\"LS\":[\"266\",\"00\",\"(?:[256]\\\\d\\\\d|800)\\\\d{5}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2568]\"]]]],\"LT\":[\"370\",\"00\",\"(?:[3469]\\\\d|52|[78]0)\\\\d{6}\",[8],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"52[0-7]\"],\"(0-$1)\",1],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[7-9]\"],\"0 $1\",1],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"37|4(?:[15]|6[1-8])\"],\"(0-$1)\",1],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[3-6]\"],\"(0-$1)\",1]],\"0\",0,\"[08]\"],\"LU\":[\"352\",\"00\",\"35[013-9]\\\\d{4,8}|6\\\\d{8}|35\\\\d{2,4}|(?:[2457-9]\\\\d|3[0-46-9])\\\\d{2,9}\",[4,5,6,7,8,9,10,11],[[\"(\\\\d{2})(\\\\d{3})\",\"$1 $2\",[\"2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"20[2-689]\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,2})\",\"$1 $2 $3 $4\",[\"20\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,5})\",\"$1 $2 $3 $4\",[\"[3-57]|8[13-9]|9(?:0[89]|[2-579])|(?:2|80)[2-9]\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"80[01]|90[015]\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"20\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,2})\",\"$1 $2 $3 $4 $5\",[\"20\"]]],0,0,\"(15(?:0[06]|1[12]|[35]5|4[04]|6[26]|77|88|99)\\\\d)\"],\"LV\":[\"371\",\"00\",\"(?:[268]\\\\d|78|90)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2679]|8[01]\"]]]],\"LY\":[\"218\",\"00\",\"[2-9]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{7})\",\"$1-$2\",[\"[2-9]\"],\"0$1\"]],\"0\"],\"MA\":[\"212\",\"00\",\"[5-8]\\\\d{8}\",[9],[[\"(\\\\d{4})(\\\\d{5})\",\"$1-$2\",[\"892\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1-$2\",[\"8(?:0[0-7]|9)\"],\"0$1\"],[\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"[5-8]\"],\"0$1\"]],\"0\",0,0,0,0,\"[5-8]\"],\"MC\":[\"377\",\"00\",\"(?:[3489]|[67]\\\\d)\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"4\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[389]\"]],[\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"[67]\"],\"0$1\"]],\"0\"],\"MD\":[\"373\",\"00\",\"(?:[235-7]\\\\d|[89]0)\\\\d{6}\",[8],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"22|3\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[25-7]\"],\"0$1\"]],\"0\"],\"ME\":[\"382\",\"00\",\"(?:20|[3-79]\\\\d)\\\\d{6}|80\\\\d{6,7}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-9]\"],\"0$1\"]],\"0\"],\"MF\":[\"590\",\"00\",\"(?:590\\\\d|7090)\\\\d{5}|(?:69|80|9\\\\d)\\\\d{7}\",[9],0,\"0\",0,0,0,0,0,[[\"590(?:0[079]|[14]3|[27][79]|3[03-7]|5[0-268]|87)\\\\d{4}\"],[\"(?:69(?:0\\\\d\\\\d|1(?:2[2-9]|3[0-5])|4(?:0[89]|1[2-6]|9\\\\d)|6(?:1[016-9]|5[0-4]|[67]\\\\d))|7090[0-4])\\\\d{4}\"],[\"80[0-5]\\\\d{6}\"],0,0,0,0,0,[\"9(?:(?:39[5-7]|76[018])\\\\d|475[0-6])\\\\d{4}\"]]],\"MG\":[\"261\",\"00\",\"[23]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[23]\"],\"0$1\"]],\"0\",0,\"([24-9]\\\\d{6})$|0\",\"20$1\"],\"MH\":[\"692\",\"011\",\"329\\\\d{4}|(?:[256]\\\\d|45)\\\\d{5}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[2-6]\"]]],\"1\"],\"MK\":[\"389\",\"00\",\"[2-578]\\\\d{7}\",[8],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2|34[47]|4(?:[37]7|5[47]|64)\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[347]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[58]\"],\"0$1\"]],\"0\"],\"ML\":[\"223\",\"00\",\"[24-9]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[24-9]\"]]]],\"MM\":[\"95\",\"00\",\"1\\\\d{5,7}|95\\\\d{6}|(?:[4-7]|9[0-46-9])\\\\d{6,8}|(?:2|8\\\\d)\\\\d{5,8}\",[6,7,8,9,10],[[\"(\\\\d)(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"16|2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"4(?:[2-46]|5[3-5])|5|6(?:[1-689]|7[235-7])|7(?:[0-4]|5[2-7])|8[1-5]|(?:60|86)[23]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[12]|452|678|86\",\"[12]|452|6788|86\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[4-7]|8[1-35]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{4,6})\",\"$1 $2 $3\",[\"9(?:2[0-4]|[35-9]|4[137-9])\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"92\"],\"0$1\"],[\"(\\\\d)(\\\\d{5})(\\\\d{4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"]],\"0\"],\"MN\":[\"976\",\"001\",\"[12]\\\\d{7,9}|[5-9]\\\\d{7}\",[8,9,10],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[12]1\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[5-9]\"]],[\"(\\\\d{3})(\\\\d{5,6})\",\"$1 $2\",[\"[12]2[1-3]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5,6})\",\"$1 $2\",[\"[12](?:27|3[2-8]|4[2-68]|5[1-4689])\",\"[12](?:27|3[2-8]|4[2-68]|5[1-4689])[0-3]\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{4,5})\",\"$1 $2\",[\"[12]\"],\"0$1\"]],\"0\"],\"MO\":[\"853\",\"00\",\"0800\\\\d{3}|(?:28|[68]\\\\d)\\\\d{6}\",[7,8],[[\"(\\\\d{4})(\\\\d{3})\",\"$1 $2\",[\"0\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[268]\"]]]],\"MP\":[\"1\",\"011\",\"[58]\\\\d{9}|(?:67|90)0\\\\d{7}\",[10],0,\"1\",0,\"([2-9]\\\\d{6})$|1\",\"670$1\",0,\"670\"],\"MQ\":[\"596\",\"00\",\"(?:596\\\\d|7091)\\\\d{5}|(?:69|[89]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-79]|8(?:0[6-9]|[36])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\"],\"MR\":[\"222\",\"00\",\"(?:[2-4]\\\\d\\\\d|800)\\\\d{5}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-48]\"]]]],\"MS\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|664|900)\\\\d{7}\",[10],0,\"1\",0,\"([34]\\\\d{6})$|1\",\"664$1\",0,\"664\"],\"MT\":[\"356\",\"00\",\"3550\\\\d{4}|(?:[2579]\\\\d\\\\d|800)\\\\d{5}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2357-9]\"]]]],\"MU\":[\"230\",\"0(?:0|[24-7]0|3[03])\",\"(?:[57]|8\\\\d\\\\d)\\\\d{7}|[2-468]\\\\d{6}\",[7,8,10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-46]|8[013]\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[57]\"]],[\"(\\\\d{5})(\\\\d{5})\",\"$1 $2\",[\"8\"]]],0,0,0,0,0,0,0,\"020\"],\"MV\":[\"960\",\"0(?:0|19)\",\"(?:800|9[0-57-9]\\\\d)\\\\d{7}|[34679]\\\\d{6}\",[7,10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[34679]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"]]],0,0,0,0,0,0,0,\"00\"],\"MW\":[\"265\",\"00\",\"(?:[1289]\\\\d|31|77)\\\\d{7}|1\\\\d{6}\",[7,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1[2-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[137-9]\"],\"0$1\"]],\"0\"],\"MX\":[\"52\",\"0[09]\",\"[2-9]\\\\d{9}\",[10],[[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"33|5[56]|81\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-9]\"]]],0,0,0,0,0,0,0,\"00\"],\"MY\":[\"60\",\"00\",\"1\\\\d{8,9}|(?:3\\\\d|[4-9])\\\\d{7}\",[8,9,10],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1-$2 $3\",[\"[4-79]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1-$2 $3\",[\"1(?:[02469]|[378][1-9]|53)|8\",\"1(?:[02469]|[37][1-9]|53|8(?:[1-46-9]|5[7-9]))|8\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1-$2 $3\",[\"3\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1-$2-$3-$4\",[\"1(?:[367]|80)\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2 $3\",[\"15\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1-$2 $3\",[\"1\"],\"0$1\"]],\"0\"],\"MZ\":[\"258\",\"00\",\"(?:2|8\\\\d)\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2|8[2-79]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]]]],\"NA\":[\"264\",\"00\",\"[68]\\\\d{7,8}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"88\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"6\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"87\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"],\"0$1\"]],\"0\"],\"NC\":[\"687\",\"00\",\"(?:050|[2-57-9]\\\\d\\\\d)\\\\d{3}\",[6],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1.$2.$3\",[\"[02-57-9]\"]]]],\"NE\":[\"227\",\"00\",\"[027-9]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"08\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[089]|2[013]|7[0467]\"]]]],\"NF\":[\"672\",\"00\",\"[13]\\\\d{5}\",[6],[[\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"1[0-3]\"]],[\"(\\\\d)(\\\\d{5})\",\"$1 $2\",[\"[13]\"]]],0,0,\"([0-258]\\\\d{4})$\",\"3$1\"],\"NG\":[\"234\",\"009\",\"(?:20|9\\\\d)\\\\d{8}|[78]\\\\d{9,13}\",[10,11,12,13,14],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[7-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"20[129]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4,5})\",\"$1 $2 $3\",[\"[78]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5})(\\\\d{5,6})\",\"$1 $2 $3\",[\"[78]\"],\"0$1\"]],\"0\"],\"NI\":[\"505\",\"00\",\"(?:1800|[25-8]\\\\d{3})\\\\d{4}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[125-8]\"]]]],\"NL\":[\"31\",\"00\",\"(?:[124-7]\\\\d\\\\d|3(?:[02-9]\\\\d|1[0-8]))\\\\d{6}|8\\\\d{6,9}|9\\\\d{6,10}|1\\\\d{4,5}\",[5,6,7,8,9,10,11],[[\"(\\\\d{3})(\\\\d{4,7})\",\"$1 $2\",[\"[89]0\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"66\"],\"0$1\"],[\"(\\\\d)(\\\\d{8})\",\"$1 $2\",[\"6\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1[16-8]|2[259]|3[124]|4[17-9]|5[124679]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-578]|91\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{5})\",\"$1 $2 $3\",[\"9\"],\"0$1\"]],\"0\"],\"NO\":[\"47\",\"00\",\"(?:0|[2-9]\\\\d{3})\\\\d{4}\",[5,8],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-79]\"]]],0,0,0,0,0,\"[02-689]|7[0-8]\"],\"NP\":[\"977\",\"00\",\"(?:1\\\\d|9)\\\\d{9}|[1-9]\\\\d{7}\",[8,10,11],[[\"(\\\\d)(\\\\d{7})\",\"$1-$2\",[\"1[2-6]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1-$2\",[\"1[01]|[2-8]|9(?:[1-59]|[67][2-6])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{7})\",\"$1-$2\",[\"9\"]]],\"0\"],\"NR\":[\"674\",\"00\",\"(?:222|444|(?:55|8\\\\d)\\\\d|666|777|999)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[24-9]\"]]]],\"NU\":[\"683\",\"00\",\"(?:[4-7]|888\\\\d)\\\\d{3}\",[4,7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"8\"]]]],\"NZ\":[\"64\",\"0(?:0|161)\",\"[1289]\\\\d{9}|50\\\\d{5}(?:\\\\d{2,3})?|[27-9]\\\\d{7,8}|(?:[34]\\\\d|6[0-35-9])\\\\d{6}|8\\\\d{4,6}\",[5,6,7,8,9,10],[[\"(\\\\d{2})(\\\\d{3,8})\",\"$1 $2\",[\"8[1-79]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"50[036-8]|8|90\",\"50(?:[0367]|88)|8|90\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"24|[346]|7[2-57-9]|9[2-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2(?:10|74)|[589]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"1|2[028]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,5})\",\"$1 $2 $3\",[\"2(?:[169]|7[0-35-9])|7\"],\"0$1\"]],\"0\",0,0,0,0,0,0,\"00\"],\"OM\":[\"968\",\"00\",\"(?:1505|[279]\\\\d{3}|500)\\\\d{4}|800\\\\d{5,6}\",[7,8,9],[[\"(\\\\d{3})(\\\\d{4,6})\",\"$1 $2\",[\"[58]\"]],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"2\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[179]\"]]]],\"PA\":[\"507\",\"00\",\"(?:00800|8\\\\d{3})\\\\d{6}|[68]\\\\d{7}|[1-57-9]\\\\d{6}\",[7,8,10,11],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[1-57-9]\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"[68]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]]]],\"PE\":[\"51\",\"00|19(?:1[124]|77|90)00\",\"(?:[14-8]|9\\\\d)\\\\d{7}\",[8,9],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"80\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"1\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[4-8]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"]]],\"0\",0,0,0,0,0,0,\"00\",\" Anexo \"],\"PF\":[\"689\",\"00\",\"4\\\\d{5}(?:\\\\d{2})?|8\\\\d{7,8}\",[6,8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"44\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"4|8[7-9]\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"]]]],\"PG\":[\"675\",\"00|140[1-3]\",\"(?:180|[78]\\\\d{3})\\\\d{4}|(?:[2-589]\\\\d|64)\\\\d{5}\",[7,8],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"18|[2-69]|85\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[78]\"]]],0,0,0,0,0,0,0,\"00\"],\"PH\":[\"63\",\"00\",\"(?:[2-7]|9\\\\d)\\\\d{8}|2\\\\d{5}|(?:1800|8)\\\\d{7,9}\",[6,8,9,10,11,12,13],[[\"(\\\\d)(\\\\d{5})\",\"$1 $2\",[\"2\"],\"(0$1)\"],[\"(\\\\d{4})(\\\\d{4,6})\",\"$1 $2\",[\"3(?:23|39|46)|4(?:2[3-6]|[35]9|4[26]|76)|544|88[245]|(?:52|64|86)2\",\"3(?:230|397|461)|4(?:2(?:35|[46]4|51)|396|4(?:22|63)|59[347]|76[15])|5(?:221|446)|642[23]|8(?:622|8(?:[24]2|5[13]))\"],\"(0$1)\"],[\"(\\\\d{5})(\\\\d{4})\",\"$1 $2\",[\"346|4(?:27|9[35])|883\",\"3469|4(?:279|9(?:30|56))|8834\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[3-7]|8[2-8]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]],[\"(\\\\d{4})(\\\\d{1,2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"1\"]]],\"0\"],\"PK\":[\"92\",\"00\",\"122\\\\d{6}|[24-8]\\\\d{10,11}|9(?:[013-9]\\\\d{8,10}|2(?:[01]\\\\d\\\\d|2(?:[06-8]\\\\d|1[01]))\\\\d{7})|(?:[2-8]\\\\d{3}|92(?:[0-7]\\\\d|8[1-9]))\\\\d{6}|[24-9]\\\\d{8}|[89]\\\\d{7}\",[8,9,10,11,12],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{2,7})\",\"$1 $2 $3\",[\"[89]0\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"1\"]],[\"(\\\\d{3})(\\\\d{6,7})\",\"$1 $2\",[\"2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:2[2-8]|3[27-9]|4[2-6]|6[3569]|9[25-8])\",\"9(?:2[3-8]|98)|(?:2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:22|3[27-9]|4[2-6]|6[3569]|9[25-7]))[2-9]\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{7,8})\",\"$1 $2\",[\"(?:2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)[2-9]\"],\"(0$1)\"],[\"(\\\\d{5})(\\\\d{5})\",\"$1 $2\",[\"58\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"3\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"[24-9]\"],\"(0$1)\"]],\"0\"],\"PL\":[\"48\",\"00\",\"(?:6|8\\\\d\\\\d)\\\\d{7}|[1-9]\\\\d{6}(?:\\\\d{2})?|[26]\\\\d{5}\",[6,7,8,9,10],[[\"(\\\\d{5})\",\"$1\",[\"19\"]],[\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"11|20|64\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])1\",\"(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])19\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"64\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"21|39|45|5[0137]|6[0469]|7[02389]|8(?:0[14]|8)\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"1[2-8]|[2-7]|8[1-79]|9[145]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"8\"]]]],\"PM\":[\"508\",\"00\",\"[45]\\\\d{5}|(?:708|8\\\\d\\\\d)\\\\d{6}\",[6,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[45]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"7\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\"],\"PR\":[\"1\",\"011\",\"(?:[589]\\\\d\\\\d|787)\\\\d{7}\",[10],0,\"1\",0,0,0,0,\"787|939\"],\"PS\":[\"970\",\"00\",\"[2489]2\\\\d{6}|(?:1\\\\d|5)\\\\d{8}\",[8,9,10],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2489]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"5\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]]],\"0\"],\"PT\":[\"351\",\"00\",\"1693\\\\d{5}|(?:[26-9]\\\\d|30)\\\\d{7}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2[12]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"16|[236-9]\"]]]],\"PW\":[\"680\",\"01[12]\",\"(?:[24-8]\\\\d\\\\d|345|900)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-9]\"]]]],\"PY\":[\"595\",\"00\",\"[36-8]\\\\d{5,8}|4\\\\d{6,8}|59\\\\d{6}|9\\\\d{5,10}|(?:2\\\\d|5[0-8])\\\\d{6,7}\",[6,7,8,9,10,11],[[\"(\\\\d{3})(\\\\d{3,6})\",\"$1 $2\",[\"[2-9]0\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"3[289]|4[246-8]|61|7[1-3]|8[1-36]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{4,5})\",\"$1 $2\",[\"2[279]|3[13-5]|4[359]|5|6(?:[34]|7[1-46-8])|7[46-8]|85\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2[14-68]|3[26-9]|4[1246-8]|6(?:1|75)|7[1-35]|8[1-36]\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"87\"]],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"9(?:[5-79]|8[1-7])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-8]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"9\"]]],\"0\"],\"QA\":[\"974\",\"00\",\"800\\\\d{4}|(?:2|800)\\\\d{6}|(?:0080|[3-7])\\\\d{7}\",[7,8,9,11],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"2[136]|8\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[3-7]\"]]]],\"RE\":[\"262\",\"00\",\"709\\\\d{6}|(?:26|[689]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[26-9]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"26(?:2\\\\d\\\\d|3(?:0\\\\d|1[0-6]))\\\\d{4}\"],[\"(?:69(?:2\\\\d\\\\d|3(?:[06][0-6]|1[0-3]|2[0-2]|3[0-39]|4\\\\d|5[0-5]|7[0-37]|8[0-8]|9[0-479]))|7092[0-3])\\\\d{4}\"],[\"80\\\\d{7}\"],[\"89[1-37-9]\\\\d{6}\"],0,0,0,0,[\"9(?:399[0-3]|479[0-6]|76(?:2[278]|3[0-37]))\\\\d{4}\"],[\"8(?:1[019]|2[0156]|84|90)\\\\d{6}\"]]],\"RO\":[\"40\",\"00\",\"(?:[236-8]\\\\d|90)\\\\d{7}|[23]\\\\d{5}\",[6,9],[[\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"2[3-6]\",\"2[3-6]\\\\d9\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"219|31\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[23]1\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[236-9]\"],\"0$1\"]],\"0\",0,0,0,0,0,0,0,\" int \"],\"RS\":[\"381\",\"00\",\"38[02-9]\\\\d{6,9}|6\\\\d{7,9}|90\\\\d{4,8}|38\\\\d{5,6}|(?:7\\\\d\\\\d|800)\\\\d{3,9}|(?:[12]\\\\d|3[0-79])\\\\d{5,10}\",[6,7,8,9,10,11,12],[[\"(\\\\d{3})(\\\\d{3,9})\",\"$1 $2\",[\"(?:2[389]|39)0|[7-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{5,10})\",\"$1 $2\",[\"[1-36]\"],\"0$1\"]],\"0\"],\"RU\":[\"7\",\"810\",\"8\\\\d{13}|[347-9]\\\\d{9}\",[10,14],[[\"(\\\\d{4})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"7(?:1[0-8]|2[1-9])\",\"7(?:1(?:[0-356]2|4[29]|7|8[27])|2(?:1[23]|[2-9]2))\",\"7(?:1(?:[0-356]2|4[29]|7|8[27])|2(?:13[03-69]|62[013-9]))|72[1-57-9]2\"],\"8 ($1)\",1],[\"(\\\\d{5})(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"7(?:1[0-68]|2[1-9])\",\"7(?:1(?:[06][3-6]|[18]|2[35]|[3-5][3-5])|2(?:[13][3-5]|[24-689]|7[457]))\",\"7(?:1(?:0(?:[356]|4[023])|[18]|2(?:3[013-9]|5)|3[45]|43[013-79]|5(?:3[1-8]|4[1-7]|5)|6(?:3[0-35-9]|[4-6]))|2(?:1(?:3[178]|[45])|[24-689]|3[35]|7[457]))|7(?:14|23)4[0-8]|71(?:33|45)[1-79]\"],\"8 ($1)\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"8 ($1)\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"[349]|8(?:[02-7]|1[1-8])\"],\"8 ($1)\",1],[\"(\\\\d{4})(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"8\"],\"8 ($1)\"]],\"8\",0,0,0,0,\"[3489]\",0,\"8~10\"],\"RW\":[\"250\",\"00\",\"(?:06|[27]\\\\d\\\\d|[89]00)\\\\d{6}\",[8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"0\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[7-9]\"],\"0$1\"]],\"0\"],\"SA\":[\"966\",\"00\",\"(?:[15]\\\\d|800|92)\\\\d{7}\",[9,10],[[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"9\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"5\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]]],\"0\"],\"SB\":[\"677\",\"0[01]\",\"[6-9]\\\\d{6}|[1-6]\\\\d{4}\",[5,7],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"6[89]|7|8[4-9]|9(?:[1-8]|9[0-8])\"]]]],\"SC\":[\"248\",\"010|0[0-2]\",\"(?:[2489]\\\\d|64)\\\\d{5}\",[7],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[246]|9[57]\"]]],0,0,0,0,0,0,0,\"00\"],\"SD\":[\"249\",\"00\",\"[19]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[19]\"],\"0$1\"]],\"0\"],\"SE\":[\"46\",\"00\",\"(?:[26]\\\\d\\\\d|9)\\\\d{9}|[1-9]\\\\d{8}|[1-689]\\\\d{7}|[1-4689]\\\\d{6}|2\\\\d{5}\",[6,7,8,9,10,12],[[\"(\\\\d{2})(\\\\d{2,3})(\\\\d{2})\",\"$1-$2 $3\",[\"20\"],\"0$1\",0,\"$1 $2 $3\"],[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"9(?:00|39|44|9)\"],\"0$1\",0,\"$1 $2\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})\",\"$1-$2 $3\",[\"[12][136]|3[356]|4[0246]|6[03]|90[1-9]\"],\"0$1\",0,\"$1 $2 $3\"],[\"(\\\\d)(\\\\d{2,3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"8\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{3})(\\\\d{2,3})(\\\\d{2})\",\"$1-$2 $3\",[\"1[2457]|2(?:[247-9]|5[0138])|3[0247-9]|4[1357-9]|5[0-35-9]|6(?:[125689]|4[02-57]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])\"],\"0$1\",0,\"$1 $2 $3\"],[\"(\\\\d{3})(\\\\d{2,3})(\\\\d{3})\",\"$1-$2 $3\",[\"9(?:00|39|44)\"],\"0$1\",0,\"$1 $2 $3\"],[\"(\\\\d{2})(\\\\d{2,3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"1[13689]|2[0136]|3[1356]|4[0246]|54|6[03]|90[1-9]\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"10|7\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"8\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"[13-5]|2(?:[247-9]|5[0138])|6(?:[124-689]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1-$2 $3 $4\",[\"9\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4 $5\",[\"[26]\"],\"0$1\",0,\"$1 $2 $3 $4 $5\"]],\"0\"],\"SG\":[\"65\",\"0[0-3]\\\\d\",\"(?:(?:1\\\\d|8)\\\\d\\\\d|7000)\\\\d{7}|[3689]\\\\d{7}\",[8,10,11],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[369]|8(?:0[1-9]|[1-9])\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]],[\"(\\\\d{4})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"7\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]]]],\"SH\":[\"290\",\"00\",\"(?:[256]\\\\d|8)\\\\d{3}\",[4,5],0,0,0,0,0,0,\"[256]\"],\"SI\":[\"386\",\"00|10(?:22|66|88|99)\",\"[1-7]\\\\d{7}|8\\\\d{4,7}|90\\\\d{4,6}\",[5,6,7,8],[[\"(\\\\d{2})(\\\\d{3,6})\",\"$1 $2\",[\"8[09]|9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"59|8\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[37][01]|4[0139]|51|6\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[1-57]\"],\"(0$1)\"]],\"0\",0,0,0,0,0,0,\"00\"],\"SJ\":[\"47\",\"00\",\"0\\\\d{4}|(?:[489]\\\\d|79)\\\\d{6}\",[5,8],0,0,0,0,0,0,\"79\"],\"SK\":[\"421\",\"00\",\"[2-689]\\\\d{8}|[2-59]\\\\d{6}|[2-5]\\\\d{5}\",[6,7,9],[[\"(\\\\d)(\\\\d{2})(\\\\d{3,4})\",\"$1 $2 $3\",[\"21\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"[3-5][1-8]1\",\"[3-5][1-8]1[67]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1/$2 $3 $4\",[\"2\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[689]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1/$2 $3 $4\",[\"[3-5]\"],\"0$1\"]],\"0\"],\"SL\":[\"232\",\"00\",\"(?:[237-9]\\\\d|66)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[236-9]\"],\"(0$1)\"]],\"0\"],\"SM\":[\"378\",\"00\",\"(?:0549|[5-7]\\\\d)\\\\d{6}\",[8,10],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-7]\"]],[\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"0\"]]],0,0,\"([89]\\\\d{5})$\",\"0549$1\"],\"SN\":[\"221\",\"00\",\"(?:[378]\\\\d|93)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[379]\"]]]],\"SO\":[\"252\",\"00\",\"[346-9]\\\\d{8}|[12679]\\\\d{7}|[1-5]\\\\d{6}|[1348]\\\\d{5}\",[6,7,8,9],[[\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"8[125]\"]],[\"(\\\\d{6})\",\"$1\",[\"[134]\"]],[\"(\\\\d)(\\\\d{6})\",\"$1 $2\",[\"[15]|2[0-79]|3[0-46-8]|4[0-7]\"]],[\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"(?:2|90)4|[67]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[348]|64|79|90\"]],[\"(\\\\d{2})(\\\\d{5,7})\",\"$1 $2\",[\"1|28|6[0-35-9]|7[67]|9[2-9]\"]]],\"0\"],\"SR\":[\"597\",\"00\",\"(?:[2-5]|[6-8]\\\\d|90)\\\\d{5}\",[6,7],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1-$2-$3\",[\"56\"]],[\"(\\\\d{3})(\\\\d{3})\",\"$1-$2\",[\"[2-5]\"]],[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[6-9]\"]]]],\"SS\":[\"211\",\"00\",\"[19]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[19]\"],\"0$1\"]],\"0\"],\"ST\":[\"239\",\"00\",\"(?:22|9\\\\d)\\\\d{5}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[29]\"]]]],\"SV\":[\"503\",\"00\",\"[25-7]\\\\d{7}|(?:80\\\\d|900)\\\\d{4}(?:\\\\d{4})?\",[7,8,11],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[89]\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[25-7]\"]],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"]]]],\"SX\":[\"1\",\"011\",\"7215\\\\d{6}|(?:[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"(5\\\\d{6})$|1\",\"721$1\",0,\"721\"],\"SY\":[\"963\",\"00\",\"[1-359]\\\\d{8}|[1-5]\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[1-4]|5[1-3]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[59]\"],\"0$1\",1]],\"0\"],\"SZ\":[\"268\",\"00\",\"0800\\\\d{4}|(?:[237]\\\\d|900)\\\\d{6}\",[8,9],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[0237]\"]],[\"(\\\\d{5})(\\\\d{4})\",\"$1 $2\",[\"9\"]]]],\"TA\":[\"290\",\"00\",\"8\\\\d{3}\",[4],0,0,0,0,0,0,\"8\"],\"TC\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|649|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-479]\\\\d{6})$|1\",\"649$1\",0,\"649\"],\"TD\":[\"235\",\"00|16\",\"(?:22|30|[689]\\\\d|77)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[236-9]\"]]],0,0,0,0,0,0,0,\"00\"],\"TG\":[\"228\",\"00\",\"[279]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[279]\"]]]],\"TH\":[\"66\",\"00[1-9]\",\"(?:001800|[2-57]|[689]\\\\d)\\\\d{7}|1\\\\d{7,9}\",[8,9,10,13],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[13-9]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]]],\"0\"],\"TJ\":[\"992\",\"810\",\"(?:[0-57-9]\\\\d|66)\\\\d{7}\",[9],[[\"(\\\\d{6})(\\\\d)(\\\\d{2})\",\"$1 $2 $3\",[\"331\",\"3317\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"44[02-479]|[34]7\"]],[\"(\\\\d{4})(\\\\d)(\\\\d{4})\",\"$1 $2 $3\",[\"3(?:[1245]|3[12])\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"\\\\d\"]]],0,0,0,0,0,0,0,\"8~10\"],\"TK\":[\"690\",\"00\",\"[2-47]\\\\d{3,6}\",[4,5,6,7]],\"TL\":[\"670\",\"00\",\"7\\\\d{7}|(?:[2-47]\\\\d|[89]0)\\\\d{5}\",[7,8],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-489]|70\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"7\"]]]],\"TM\":[\"993\",\"810\",\"(?:[1-6]\\\\d|71)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"12\"],\"(8 $1)\"],[\"(\\\\d{3})(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"[1-5]\"],\"(8 $1)\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[67]\"],\"8 $1\"]],\"8\",0,0,0,0,0,0,\"8~10\"],\"TN\":[\"216\",\"00\",\"[2-57-9]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-57-9]\"]]]],\"TO\":[\"676\",\"00\",\"(?:0800|(?:[5-8]\\\\d\\\\d|999)\\\\d)\\\\d{3}|[2-8]\\\\d{4}\",[5,7],[[\"(\\\\d{2})(\\\\d{3})\",\"$1-$2\",[\"[2-4]|50|6[09]|7[0-24-69]|8[05]\"]],[\"(\\\\d{4})(\\\\d{3})\",\"$1 $2\",[\"0\"]],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[5-9]\"]]]],\"TR\":[\"90\",\"00\",\"4\\\\d{6}|8\\\\d{11,12}|(?:[2-58]\\\\d\\\\d|900)\\\\d{7}\",[7,10,12,13],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"512|8[01589]|90\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"5(?:[0-579]|61)\",\"5(?:[0-579]|61[06])\",\"5(?:[0-579]|61[06]1)\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[24][1-8]|3[1-9]\"],\"(0$1)\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{6,7})\",\"$1 $2 $3\",[\"80\"],\"0$1\",1]],\"0\"],\"TT\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-46-8]\\\\d{6})$|1\",\"868$1\",0,\"868\"],\"TV\":[\"688\",\"00\",\"(?:2|7\\\\d\\\\d|90)\\\\d{4}\",[5,6,7],[[\"(\\\\d{2})(\\\\d{3})\",\"$1 $2\",[\"2\"]],[\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"90\"]],[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"7\"]]]],\"TW\":[\"886\",\"0(?:0[25-79]|19)\",\"[2-689]\\\\d{8}|7\\\\d{9,10}|[2-8]\\\\d{7}|2\\\\d{6}\",[7,8,9,10,11],[[\"(\\\\d{2})(\\\\d)(\\\\d{4})\",\"$1 $2 $3\",[\"202\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[258]0\"],\"0$1\"],[\"(\\\\d)(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"[23568]|4(?:0[02-48]|[1-47-9])|7[1-9]\",\"[23568]|4(?:0[2-48]|[1-47-9])|(?:400|7)[1-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[49]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4,5})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],\"0\",0,0,0,0,0,0,0,\"#\"],\"TZ\":[\"255\",\"00[056]\",\"(?:[25-8]\\\\d|41|90)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[24]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"5\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[67]\"],\"0$1\"]],\"0\"],\"UA\":[\"380\",\"00\",\"[89]\\\\d{9}|[3-9]\\\\d{8}\",[9,10],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6[12][29]|(?:3[1-8]|4[136-8]|5[12457]|6[49])2|(?:56|65)[24]\",\"6[12][29]|(?:35|4[1378]|5[12457]|6[49])2|(?:56|65)[24]|(?:3[1-46-8]|46)2[013-9]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"3[1-8]|4(?:[1367]|[45][6-9]|8[4-6])|5(?:[1-5]|6[0135689]|7[4-6])|6(?:[12][3-7]|[459])\",\"3[1-8]|4(?:[1367]|[45][6-9]|8[4-6])|5(?:[1-5]|6(?:[015689]|3[02389])|7[4-6])|6(?:[12][3-7]|[459])\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[3-7]|89|9[1-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"]],\"0\",0,0,0,0,0,0,\"0~0\"],\"UG\":[\"256\",\"00[057]\",\"800\\\\d{6}|(?:[29]0|[347]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"202\",\"2024\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"[27-9]|4(?:6[45]|[7-9])\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"[34]\"],\"0$1\"]],\"0\"],\"US\":[\"1\",\"011\",\"[2-9]\\\\d{9}|3\\\\d{6}\",[10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"310\"],0,1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"($1) $2-$3\",[\"[2-9]\"],0,1,\"$1-$2-$3\"]],\"1\",0,0,0,0,0,[[\"(?:274[27]|(?:472|983)[2-47-9])\\\\d{6}|(?:2(?:0[1-35-9]|1[02-9]|2[03-57-9]|3[1459]|4[08]|5[1-46]|6[0279]|7[0269]|8[13])|3(?:0[1-57-9]|1[02-9]|2[013-79]|3[0-24679]|4[167]|5[0-3]|6[01349]|8[056])|4(?:0[124-9]|1[02-579]|2[3-5]|3[0245]|4[023578]|58|6[349]|7[0589]|8[04])|5(?:0[1-57-9]|1[0235-8]|20|3[0149]|4[01]|5[179]|6[1-47]|7[0-5]|8[0256])|6(?:0[1-35-9]|1[024-9]|2[03689]|3[016]|4[0156]|5[01679]|6[0-279]|78|8[0-269])|7(?:0[1-46-8]|1[2-9]|2[04-8]|3[0-247]|4[0378]|5[47]|6[02359]|7[0-59]|8[156])|8(?:0[1-68]|1[02-8]|2[0168]|3[0-2589]|4[03578]|5[046-9]|6[02-5]|7[028])|9(?:0[1346-9]|1[02-9]|2[0589]|3[0146-8]|4[01357-9]|5[12469]|7[0-3589]|8[04-69]))[2-9]\\\\d{6}\"],[\"\"],[\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\"],[\"900[2-9]\\\\d{6}\"],[\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-9]|3[23]|44|66|77|88)[2-9]\\\\d{6}\"]]],\"UY\":[\"598\",\"0(?:0|1[3-9]\\\\d)\",\"0004\\\\d{2,9}|[1249]\\\\d{7}|2\\\\d{3,4}|(?:[49]\\\\d|80)\\\\d{5}\",[4,5,6,7,8,9,10,11,12,13],[[\"(\\\\d{4,5})\",\"$1\",[\"21\"]],[\"(\\\\d{3})(\\\\d{3,4})\",\"$1 $2\",[\"0\"]],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[49]0|8\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[124]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2,4})\",\"$1 $2 $3\",[\"0\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{2,4})\",\"$1 $2 $3 $4\",[\"0\"]]],\"0\",0,0,0,0,0,0,\"00\",\" int. \"],\"UZ\":[\"998\",\"00\",\"(?:20|33|[5-9]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[235-9]\"]]]],\"VA\":[\"39\",\"00\",\"0\\\\d{5,10}|3[0-8]\\\\d{7,10}|55\\\\d{8}|8\\\\d{5}(?:\\\\d{2,4})?|(?:1\\\\d|39)\\\\d{7,8}\",[6,7,8,9,10,11,12],0,0,0,0,0,0,\"06698\"],\"VC\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|784|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-7]\\\\d{6})$|1\",\"784$1\",0,\"784\"],\"VE\":[\"58\",\"00\",\"[68]00\\\\d{7}|(?:[24]\\\\d|[59]0)\\\\d{8}\",[10],[[\"(\\\\d{3})(\\\\d{7})\",\"$1-$2\",[\"[24-689]\"],\"0$1\"]],\"0\"],\"VG\":[\"1\",\"011\",\"(?:284|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-578]\\\\d{6})$|1\",\"284$1\",0,\"284\"],\"VI\":[\"1\",\"011\",\"[58]\\\\d{9}|(?:34|90)0\\\\d{7}\",[10],0,\"1\",0,\"([2-9]\\\\d{6})$|1\",\"340$1\",0,\"340\"],\"VN\":[\"84\",\"00\",\"[12]\\\\d{9}|[135-9]\\\\d{8}|[16]\\\\d{7}|[16-8]\\\\d{6}\",[7,8,9,10],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"80\"],\"0$1\",1],[\"(\\\\d{4})(\\\\d{4,6})\",\"$1 $2\",[\"1\"],0,1],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"6\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[357-9]\"],\"0$1\",1],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2[48]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"],\"0$1\",1]],\"0\"],\"VU\":[\"678\",\"00\",\"[57-9]\\\\d{6}|(?:[238]\\\\d|48)\\\\d{3}\",[5,7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[57-9]\"]]]],\"WF\":[\"681\",\"00\",\"(?:40|72|8\\\\d{4})\\\\d{4}|[89]\\\\d{5}\",[6,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[47-9]\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"]]]],\"WS\":[\"685\",\"0\",\"(?:[2-6]|8\\\\d{5})\\\\d{4}|[78]\\\\d{6}|[68]\\\\d{5}\",[5,6,7,10],[[\"(\\\\d{5})\",\"$1\",[\"[2-5]|6[1-9]\"]],[\"(\\\\d{3})(\\\\d{3,7})\",\"$1 $2\",[\"[68]\"]],[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"7\"]]]],\"XK\":[\"383\",\"00\",\"2\\\\d{7,8}|3\\\\d{7,11}|(?:4\\\\d\\\\d|[89]00)\\\\d{5}\",[8,9,10,11,12],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-4]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2|39\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7,10})\",\"$1 $2\",[\"3\"],\"0$1\"]],\"0\"],\"YE\":[\"967\",\"00\",\"(?:1|7\\\\d)\\\\d{7}|[1-7]\\\\d{6}\",[7,8,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[1-6]|7(?:[24-6]|8[0-7])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],\"0\"],\"YT\":[\"262\",\"00\",\"7093\\\\d{5}|(?:80|9\\\\d)\\\\d{7}|(?:26|63)9\\\\d{6}\",[9],0,\"0\",0,0,0,0,0,[[\"269(?:0[0-467]|15|5[0-4]|6\\\\d|[78]0)\\\\d{4}\"],[\"(?:639(?:0[0-79]|1[019]|[267]\\\\d|3[09]|40|5[05-9]|9[04-79])|7093[5-7])\\\\d{4}\"],[\"80\\\\d{7}\"],0,0,0,0,0,[\"9(?:(?:39|47)8[01]|769\\\\d)\\\\d{4}\"]]],\"ZA\":[\"27\",\"00\",\"[1-79]\\\\d{8}|8\\\\d{4,9}\",[5,6,7,8,9,10],[[\"(\\\\d{2})(\\\\d{3,4})\",\"$1 $2\",[\"8[1-4]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2,3})\",\"$1 $2 $3\",[\"8[1-4]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"860\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"],\"0$1\"]],\"0\"],\"ZM\":[\"260\",\"00\",\"800\\\\d{6}|(?:21|[579]\\\\d|63)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[28]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"[579]\"],\"0$1\"]],\"0\"],\"ZW\":[\"263\",\"00\",\"2(?:[0-57-9]\\\\d{6,8}|6[0-24-9]\\\\d{6,7})|[38]\\\\d{9}|[35-8]\\\\d{8}|[3-6]\\\\d{7}|[1-689]\\\\d{6}|[1-3569]\\\\d{5}|[1356]\\\\d{4}\",[5,6,7,8,9,10],[[\"(\\\\d{3})(\\\\d{3,5})\",\"$1 $2\",[\"2(?:0[45]|2[278]|[49]8)|3(?:[09]8|17)|6(?:[29]8|37|75)|[23][78]|(?:33|5[15]|6[68])[78]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{2,4})\",\"$1 $2 $3\",[\"[49]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"80\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"24|8[13-59]|(?:2[05-79]|39|5[45]|6[15-8])2\",\"2(?:02[014]|4|[56]20|[79]2)|392|5(?:42|525)|6(?:[16-8]21|52[013])|8[13-59]\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2(?:1[39]|2[0157]|[378]|[56][14])|3(?:12|29)\",\"2(?:1[39]|2[0157]|[378]|[56][14])|3(?:123|29)\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"8\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3,5})\",\"$1 $2\",[\"1|2(?:0[0-36-9]|12|29|[56])|3(?:1[0-689]|[24-6])|5(?:[0236-9]|1[2-4])|6(?:[013-59]|7[0-46-9])|(?:33|55|6[68])[0-69]|(?:29|3[09]|62)[0-79]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"29[013-9]|39|54\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3,5})\",\"$1 $2\",[\"(?:25|54)8\",\"258|5483\"],\"0$1\"]],\"0\"]},\"nonGeographic\":{\"800\":[\"800\",0,\"(?:00|[1-9]\\\\d)\\\\d{6}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"\\\\d\"]]],0,0,0,0,0,0,[0,0,[\"(?:00|[1-9]\\\\d)\\\\d{6}\"]]],\"808\":[\"808\",0,\"[1-9]\\\\d{7}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[1-9]\"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,0,[\"[1-9]\\\\d{7}\"]]],\"870\":[\"870\",0,\"7\\\\d{11}|[235-7]\\\\d{8}\",[9,12],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[235-7]\"]]],0,0,0,0,0,0,[0,[\"(?:[356]|774[45])\\\\d{8}|7[6-8]\\\\d{7}\"],0,0,0,0,0,0,[\"2\\\\d{8}\",[9]]]],\"878\":[\"878\",0,\"10\\\\d{10}\",[12],[[\"(\\\\d{2})(\\\\d{5})(\\\\d{5})\",\"$1 $2 $3\",[\"1\"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,[\"10\\\\d{10}\"]]],\"881\":[\"881\",0,\"6\\\\d{9}|[0-36-9]\\\\d{8}\",[9,10],[[\"(\\\\d)(\\\\d{3})(\\\\d{5})\",\"$1 $2 $3\",[\"[0-37-9]\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{5,6})\",\"$1 $2 $3\",[\"6\"]]],0,0,0,0,0,0,[0,[\"6\\\\d{9}|[0-36-9]\\\\d{8}\"]]],\"882\":[\"882\",0,\"[13]\\\\d{6}(?:\\\\d{2,5})?|[19]\\\\d{7}|(?:[25]\\\\d\\\\d|4)\\\\d{7}(?:\\\\d{2})?\",[7,8,9,10,11,12],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"16|342\"]],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"49\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"1[36]|9\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"3[23]\"]],[\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"16\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"10|23|3(?:[15]|4[57])|4|5[12]\"]],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"34\"]],[\"(\\\\d{2})(\\\\d{4,5})(\\\\d{5})\",\"$1 $2 $3\",[\"[1-35]\"]]],0,0,0,0,0,0,[0,[\"342\\\\d{4}|(?:337|49)\\\\d{6}|(?:3(?:2|47|7\\\\d{3})|5(?:0\\\\d{3}|2[0-2]))\\\\d{7}\",[7,8,9,10,12]],0,0,0,[\"348[57]\\\\d{7}\",[11]],0,0,[\"1(?:3(?:0[0347]|[13][0139]|2[035]|4[013568]|6[0459]|7[06]|8[15-8]|9[0689])\\\\d{4}|6\\\\d{5,10})|(?:345\\\\d|9[89])\\\\d{6}|(?:10|2(?:3|85\\\\d)|3(?:[15]|[69]\\\\d\\\\d)|4[15-8]|51)\\\\d{8}\"]]],\"883\":[\"883\",0,\"(?:[1-4]\\\\d|51)\\\\d{6,10}\",[8,9,10,11,12],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{2,8})\",\"$1 $2 $3\",[\"[14]|2[24-689]|3[02-689]|51[24-9]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"510\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"21\"]],[\"(\\\\d{4})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"51[13]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"[235]\"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,[\"(?:2(?:00\\\\d\\\\d|10)|(?:370[1-9]|51\\\\d0)\\\\d)\\\\d{7}|51(?:00\\\\d{5}|[24-9]0\\\\d{4,7})|(?:1[0-79]|2[24-689]|3[02-689]|4[0-4])0\\\\d{5,9}\"]]],\"888\":[\"888\",0,\"\\\\d{11}\",[11],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{5})\",\"$1 $2 $3\"]],0,0,0,0,0,0,[0,0,0,0,0,0,[\"\\\\d{11}\"]]],\"979\":[\"979\",0,\"[1359]\\\\d{8}\",[9],[[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[1359]\"]]],0,0,0,0,0,0,[0,0,0,[\"[1359]\\\\d{8}\"]]]}}","// Importing from a \".js\" file is a workaround for Node.js \"ES Modules\"\r\n// importing system which is even uncapable of importing \"*.json\" files.\r\nimport metadata from '../../metadata.min.json.js'\r\n\r\nexport default function withMetadataArgument(func, _arguments) {\r\n\tvar args = Array.prototype.slice.call(_arguments)\r\n\targs.push(metadata)\r\n\treturn func.apply(this, args)\r\n}","import withMetadataArgument from './withMetadataArgument.js'\r\nimport { default as _parsePhoneNumber } from '../../core/index.js'\r\n\r\nexport function parsePhoneNumber() {\r\n\treturn withMetadataArgument(_parsePhoneNumber, arguments)\r\n}","import withMetadataArgument from './withMetadataArgument.js'\r\nimport { isValidPhoneNumber as _isValidPhoneNumber } from '../../core/index.js'\r\n\r\nexport function isValidPhoneNumber() {\r\n\treturn withMetadataArgument(_isValidPhoneNumber, arguments)\r\n}","// Importing from a \".js\" file is a workaround for Node.js \"ES Modules\"\r\n// importing system which is even uncapable of importing \"*.json\" files.\r\nimport metadata from '../../metadata.min.json.js'\r\n\r\nimport { AsYouType as _AsYouType } from '../../core/index.js'\r\n\r\nexport function AsYouType(country) {\r\n\treturn _AsYouType.call(this, country, metadata)\r\n}\r\n\r\nAsYouType.prototype = Object.create(_AsYouType.prototype, {})\r\nAsYouType.prototype.constructor = AsYouType","import withMetadataArgument from './withMetadataArgument.js'\r\nimport { isSupportedCountry as _isSupportedCountry } from '../../core/index.js'\r\n\r\nexport function isSupportedCountry() {\r\n\treturn withMetadataArgument(_isSupportedCountry, arguments)\r\n}","import { type Form } from '@wix/ambassador-forms-v4-form/types';\nimport { createContext, useContext } from 'react';\n\nexport const FormContext = createContext<Form | undefined>(undefined);\n\nexport function useForm() {\n  const context = useContext(FormContext);\n  if (context === undefined) {\n    throw new Error('useForm must be used within a FormProvider');\n  }\n  return context;\n}\n\nexport function useNestedFormByTarget(target: string) {\n  const form = useForm();\n\n  if (!form.nestedForms?.length) {\n    return;\n  }\n\n  return form.nestedForms?.find((nestedForm) =>\n    nestedForm.targets?.includes(target),\n  )?.form;\n}\n","import { type PanoramaClientForComponent } from '@wix/fe-essentials/panorama-client';\nimport { createContext, useContext } from 'react';\n\nimport { useForm } from './form-context';\n\nexport interface PanoramaProps {\n  panorama?: PanoramaClientForComponent;\n}\n\nexport const PanoramaContext = createContext<PanoramaProps | undefined>(\n  undefined,\n);\n\nexport function usePanorama() {\n  const context = useContext(PanoramaContext);\n  if (context === undefined) {\n    throw new Error('usePanorama must be used within a PanoramaProvider');\n  }\n\n  const panorama = context.panorama;\n  const { namespace } = useForm();\n\n  return {\n    transaction: (name: string) => ({\n      start: () => panorama?.transaction(name).start({ namespace }),\n      finish: () => panorama?.transaction(name).finish({ namespace }),\n    }),\n  };\n}\n","import { useContext, createContext } from 'react';\n\nexport enum ForcedState {\n  BUTTONS_HOVER = 'BUTTONS_HOVER',\n  NEXT_BUTTON_HOVER = 'NEXT_BUTTON_HOVER',\n  PREVIOUS_BUTTON_HOVER = 'PREVIOUS_BUTTON_HOVER',\n  SUBMIT_BUTTON_HOVER = 'SUBMIT_BUTTON_HOVER',\n  INPUT_FIELDS_HOVER = 'INPUT_FIELDS_HOVER',\n  INPUT_FIELDS_FOCUS = 'INPUT_FIELDS_FOCUS',\n  INPUT_FIELDS_ERROR = 'INPUT_FIELDS_ERROR',\n}\n\nexport const ForcedStateContext = createContext<ForcedState[]>([]);\n\nexport const useForcedState = (): ForcedState[] =>\n  useContext(ForcedStateContext) || [];\n","import React, { createContext, type ReactNode, useContext } from 'react';\n\nimport { type ExternalData } from '../../../types';\n\nconst FALLBACK = {};\n\nconst ExternalDataContext = createContext<ExternalData | undefined>(undefined);\n\nexport interface ExternalDataProviderProps {\n  children: ReactNode;\n  externalData?: ExternalData;\n}\n\nexport const ExternalDataProvider = ({\n  children,\n  externalData,\n}: ExternalDataProviderProps) => {\n  return (\n    <ExternalDataContext.Provider value={externalData ?? FALLBACK}>\n      {children}\n    </ExternalDataContext.Provider>\n  );\n};\n\nexport function useExternalData() {\n  const context = useContext(ExternalDataContext);\n  if (context === undefined) {\n    throw new Error(\n      'useExternalData must be used within a ExternalDataProvider',\n    );\n  }\n  return context;\n}\n","import { createContext, useContext } from 'react';\n\nimport { type FormFields } from '../types';\n\nexport const FormFieldsContext = createContext<FormFields | undefined>(\n  undefined,\n);\n\nexport function useFormFields(): FormFields {\n  const context = useContext(FormFieldsContext);\n  if (context === undefined) {\n    throw new Error('useFormFields must be used within a FormFieldsProvider');\n  }\n  return context;\n}\n","import { createContext, useContext } from 'react';\n\nimport { type FormView } from '../ui/form/types';\n\nexport const FormViewContext = createContext<FormView | undefined>(undefined);\n\nexport function useFieldView(fieldId: string) {\n  const context = useFormView();\n  const fieldView = context.fields.find((field) => field.id === fieldId);\n  return fieldView;\n}\n\nexport function useFormView() {\n  const context = useContext(FormViewContext);\n  if (context === undefined) {\n    throw new Error('useFormView must be used within a FormViewProvider');\n  }\n\n  return context;\n}\n","import { type Validation } from '@wix/ambassador-forms-v4-form/types';\nimport { type RichContent } from '@wix/ricos';\n\nimport {\n  type InputFieldType,\n  type ReadonlyFieldType,\n} from '../../../constants';\nimport { type CustomErrors } from '../../../field-error';\n\nimport { type PossibleValues } from './form-values';\n\nexport interface FormView {\n  parentId?: string;\n  name: string;\n  grid: Grid;\n  fields: Field[];\n}\n\nexport interface Grid {\n  columns: number;\n  rowHeight: number;\n  margin: Margin;\n  padding: Margin;\n}\n\nexport interface Margin {\n  horizontal: number;\n  vertical: number;\n}\n\nexport interface Properties<\n  ValueType extends PossibleValues = PossibleValues,\n  LabelType extends string | RichContent = string,\n> {\n  label?: LabelType;\n  hideLabel?: boolean;\n  disabled: boolean;\n  readOnly: boolean;\n  hidden: boolean;\n  required: boolean;\n  defaultValue: ValueType | undefined;\n  pii: boolean;\n  validation?: Validation;\n  nestedFormId?: string | null;\n  form?: FormView;\n  customErrors?: CustomErrors;\n  description?: RichContent | undefined;\n  widgetHtml?: string;\n  widgetEnabled?: boolean;\n}\n\nexport interface Layout {\n  row: number;\n  column: number;\n  width: number;\n  height: number;\n  static?: boolean;\n  minW?: number;\n}\n\nexport interface LayoutByBreakpoint {\n  large: Layout | undefined;\n  small: Layout | undefined;\n}\n\nexport type Field = ReadOnlyField | InputField | SubmitButtonField;\n\ninterface BaseField {\n  id: string;\n  properties: Properties;\n  layout: Layout;\n  layoutByBreakpoint: LayoutByBreakpoint;\n}\n\nexport interface SubmitButtonField extends BaseField {\n  fieldType: 'SUBMIT_BUTTON';\n}\n\nexport interface ReadOnlyField extends BaseField {\n  fieldType: ReadonlyFieldType;\n}\n\nexport interface InputField extends BaseField {\n  fieldType: InputFieldType;\n  target: string;\n  path: string;\n}\n\nexport interface NestedFormField extends BaseField {\n  fieldType: InputFieldType;\n  target: string;\n  path: string;\n}\n\nexport function isInputField(field: Field): field is InputField {\n  return Boolean((field as InputField).target);\n}\n\nexport function isNestedFormField(field: Field): field is NestedFormField {\n  const nestedFormField = field as NestedFormField;\n  return Boolean(\n    nestedFormField.target && nestedFormField.properties.nestedFormId,\n  );\n}\n","import { type CSSProperties } from 'react';\n\nexport interface Layout {\n  column: number;\n  row: number;\n  height: number;\n  width: number;\n}\n\nexport interface GridStyles {\n  label: CSSProperties;\n  input: CSSProperties;\n  container: CSSProperties;\n}\n\ninterface CalculateGridStylesOptions {\n  layout: Layout;\n}\n\nexport function calculateGridStyles(\n  options: CalculateGridStylesOptions,\n): GridStyles {\n  const { layout } = options;\n  const gridColumn = `${layout.column + 1} / span ${layout.width}`;\n\n  return {\n    label: {\n      gridRow: '1 / span 1',\n      gridColumn,\n      display: 'flex',\n      alignItems: 'flex-end',\n    },\n    input: {\n      gridRow: '2 / span 1',\n      gridColumn,\n    },\n    container: {\n      gridRow: '1 / span 2',\n      gridColumn,\n    },\n  };\n}\n","import React, { type FC } from 'react';\n\nimport { useFieldView } from '../contexts/form-view-context';\nimport { isInputField } from '../ui/form/types';\nimport { calculateGridStyles } from '../utils/grid-styles';\n\nimport { type FieldLayoutProps } from './field-layout';\n\nexport const DefaultFieldLayout: FC<FieldLayoutProps> = ({\n  fieldId,\n  ...rest\n}) => {\n  const fieldView = useFieldView(fieldId);\n  if (!fieldView) {\n    return null;\n  }\n\n  const { layout, fieldType } = fieldView;\n  const dataHook = `form-field-${\n    isInputField(fieldView) ? fieldView.target : fieldView.id\n  }`;\n\n  const dataAttributes = {\n    'data-hook': dataHook,\n    'data-field-type': fieldType,\n  };\n\n  const gridStyles = calculateGridStyles({ layout });\n\n  if ('children' in rest) {\n    return (\n      <div style={gridStyles.container} {...dataAttributes}>\n        {rest.children}\n      </div>\n    );\n  }\n\n  const { renderLabel, renderInput, renderDescription } = rest;\n\n  return (\n    <>\n      <div style={gridStyles.label}>{renderLabel()}</div>\n      <div style={gridStyles.input} {...dataAttributes}>\n        {renderInput()}\n        {renderDescription()}\n      </div>\n    </>\n  );\n};\n","import classNames from 'classnames';\nimport React, { type ReactElement } from 'react';\n\nimport animationStyles from '../../../../animations/grid-animations.module.scss';\nimport { useConfig } from '../../../../contexts/config-context';\nimport { type Grid as GridType, type InputElement } from '../../types';\nimport { Focusable } from '../form/focusable';\n\nimport { getGridStyle } from './grid-options';\nimport styles from './grid.module.scss';\n\nexport const Grid = ({\n  items,\n  layout,\n  isRTL,\n}: {\n  items: InputElement[];\n  layout: GridType;\n  isRTL?: boolean;\n}) => {\n  const { isMobile, enableAnimations } = useConfig();\n  const reactElementsByRow = getReactElementsByRow(items);\n\n  return (\n    <div className={styles.container} dir={isRTL ? 'rtl' : ''}>\n      {reactElementsByRow.map((rowData, index) => {\n        const fieldId = rowData.firstFieldId;\n        const key = (isMobile && fieldId) || index;\n\n        return (\n          <Focusable key={fieldId} fieldId={fieldId}>\n            <div\n              key={key}\n              style={getGridStyle({ layout })}\n              className={classNames(styles.grid, styles.column, {\n                [animationStyles.animations]: enableAnimations,\n              })}\n            >\n              {rowData.elements}\n            </div>\n          </Focusable>\n        );\n      })}\n    </div>\n  );\n};\n\ntype RowData = {\n  elements: ReactElement[];\n  firstFieldId: string;\n};\n\nfunction getReactElementsByRow(items: InputElement[]): RowData[] {\n  const reactElementsByRow = items.reduce<RowData[]>((result, item) => {\n    const row = item.layout.row;\n    const element = React.cloneElement(item.component, { key: item.id });\n\n    if (result[row]) {\n      result[row].elements.push(element);\n    } else {\n      result[row] = {\n        elements: [element],\n        firstFieldId: item.id,\n      };\n    }\n    return result;\n  }, []);\n\n  return reactElementsByRow;\n}\n",".animations {\n  animation: field-appear 0.4s ease;\n}\n\n@keyframes field-appear {\n  0% {\n    opacity: 0;\n    transform: translateY(-10px);\n  }\n  100% {\n    opacity: 1;\n    transform: translateY(0);\n  }\n}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VSb290IjoiL2hvbWUvYnVpbGR1c2VyL3dvcmsvMTI1ODI5YTU5MGEwYjMxYS9wYWNrYWdlcy9mb3JtLWZpZWxkcy9kaXN0L2VzbS9hbmltYXRpb25zIiwic291cmNlcyI6WyJncmlkLWFuaW1hdGlvbnMubW9kdWxlLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDRTs7O0FBR0Y7RUFDRTtJQUNFO0lBQ0E7O0VBRUY7SUFDRTtJQUNBIiwic291cmNlc0NvbnRlbnQiOlsiLmFuaW1hdGlvbnMge1xuICBhbmltYXRpb246IGZpZWxkLWFwcGVhciAwLjRzIGVhc2U7XG59XG5cbkBrZXlmcmFtZXMgZmllbGQtYXBwZWFyIHtcbiAgMCUge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMHB4KTtcbiAgfVxuICAxMDAlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgfVxufVxuIl19 */","import React, { useEffect, useRef, type ReactNode } from 'react';\n\nimport { useFocusedField } from '../../../../contexts/focused-field-provider';\nimport { useScroll } from '../../../../contexts/scroll-provider';\n\ntype FocusableProps = {\n  children: ReactNode;\n  fieldId: string;\n};\n\nexport const Focusable = ({ children, fieldId }: FocusableProps) => {\n  const viewRef = useRef<HTMLDivElement>(null);\n  const { scrollTo } = useScroll();\n  const { focusedFieldId } = useFocusedField();\n\n  useEffect(() => {\n    if (viewRef.current && fieldId === focusedFieldId) {\n      scrollTo(viewRef.current);\n    }\n  }, [scrollTo, fieldId, focusedFieldId]);\n\n  return <div ref={viewRef}>{children}</div>;\n};\n","import { type Grid } from '../../types';\n\nexport const getGridStyle = ({ layout }: { layout: Grid }) => {\n  return {\n    display: 'grid',\n    width: '100%',\n    gridTemplateColumns: `repeat(${layout.columns}, 1fr)`,\n    gridAutoRows: 'minmax(min-content, max-content) 1fr',\n  };\n};\n",".container {\n  display: flex;\n  flex-direction: column;\n  width: 100%;\n  gap: var(--wix-forms-formRowSpacing, 24px);\n}\n\n.column {\n  column-gap: var(--wix-forms-formColumnSpacing, 24px);\n}\n\n.row {\n  row-gap: var(--wix-forms-formRowSpacing, 0);\n}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VSb290IjoiL2hvbWUvYnVpbGR1c2VyL3dvcmsvMTI1ODI5YTU5MGEwYjMxYS9wYWNrYWdlcy9mb3JtLWZpZWxkcy9kaXN0L2VzbS91aS9mb3JtL2NvbXBvbmVudHMvZ3JpZCIsInNvdXJjZXMiOlsiZ3JpZC5tb2R1bGUuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFO0VBQ0E7RUFDQTtFQUNBOzs7QUFHRjtFQUNFOzs7QUFHRjtFQUNFIiwic291cmNlc0NvbnRlbnQiOlsiLmNvbnRhaW5lciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIHdpZHRoOiAxMDAlO1xuICBnYXA6IHZhcigtLXdpeC1mb3Jtcy1mb3JtUm93U3BhY2luZywgMjRweCk7XG59XG5cbi5jb2x1bW4ge1xuICBjb2x1bW4tZ2FwOiB2YXIoLS13aXgtZm9ybXMtZm9ybUNvbHVtblNwYWNpbmcsIDI0cHgpO1xufVxuXG4ucm93IHtcbiAgcm93LWdhcDogdmFyKC0td2l4LWZvcm1zLWZvcm1Sb3dTcGFjaW5nLCAwKVxufVxuIl19 */","import { createContext, useContext } from 'react';\n\nexport type FieldActions = Record<string, Function>;\n\nexport interface FieldActionsContextValue<T extends FieldActions> {\n  actions?: T;\n  formId?: string;\n  inProgress?: boolean;\n}\nexport const FieldActionsContext = createContext<\n  FieldActionsContextValue<FieldActions>\n>({});\n\nexport function useFieldActions() {\n  return useContext(FieldActionsContext);\n}\n","import { createContext, useContext } from 'react';\n\nimport { type PossibleValues } from '../ui/form/types';\n\nexport interface FieldValidationArguments {\n  path: string;\n  value: PossibleValues;\n}\n\nexport type ValidateFields = (\n  fieldsToValidate: FieldValidationArguments[],\n) => void;\n\nexport interface FieldValidationProps {\n  validateFields: ValidateFields;\n}\n\nexport const FieldValidationContext =\n  createContext<FieldValidationProps | null>(null);\n\nexport const useFieldValidation = () =>\n  (useContext(FieldValidationContext) as FieldValidationProps) || {};\n","import { createContext, useContext } from 'react';\n\nimport { type FormValues } from '../ui/form/types';\n\nexport const FormValuesContext = createContext<FormValues | undefined>(\n  undefined,\n);\n\nexport function useFormValues(): FormValues {\n  const context = useContext(FormValuesContext);\n  if (context === undefined) {\n    throw new Error('useFormValues must be used within a FormValuesProvider');\n  }\n\n  return context;\n}\n","import { type Form, type FormField } from '@wix/ambassador-forms-v4-form/types';\n\nimport { FIELD_TYPES } from '../constants';\n\nexport const hasMultilineAddress = (form?: Form) => {\n  return Boolean(\n    [...(form?.fields || []), ...(form?.deletedFields || [])].some(\n      (field) =>\n        field.view?.fieldType === FIELD_TYPES.MULTILINE_ADDRESS ||\n        field.view?.fieldType === FIELD_TYPES.BOOKINGS_ADDRESS,\n    ),\n  );\n};\n\nexport const isMultilineAddressField = (field: FormField) =>\n  field.view?.fieldType === FIELD_TYPES.MULTILINE_ADDRESS ||\n  field.view?.fieldType === FIELD_TYPES.BOOKINGS_ADDRESS;\n","import { LogObject, aiChatUouActionsParams, dummyNameParams, formErrorAppearedDissapearedParams, formFieldEditParams, formFieldFocusParams, formViewParams, submitFormClickParams } from '../types';\n\n/**\n * A function to create a log object for the 'dummyName' event (evid: 1000)\n *\n * Event description: dummy-name.\n *\n * @param {dummyNameParams} params - The parameters for this event\n * @property {GUID} form_guid - form_guid\n * @property {string} namespace - namespace\n * @return {LogObject<dummyNameParams>} LogObject<dummyNameParams>\n */\nexport function dummyName(params: dummyNameParams): LogObject<dummyNameParams> {\n  return { evid: 1000, src: 156, endpoint: 'forms-platform-uou', params };\n}\n\n/**\n * A function to create a log object for the 'formView' event (evid: 1001)\n *\n * Event description: Tracks when a visitor views a form on a site. The event captures details such as the form type, the viewing mode, and whether it was presented in a classic or chat format.\n *\n * @param {formViewParams} params - The parameters for this event\n * @property {string} form_filling_id - form_filling_id\n * @property {string} form_schema_name - form schema name\n * @property {string} form_url - form url\n * @property {string} form_type - form expression (web, standalone, etc.)\n * @property {string} mode - preview/live site\n * @property {GUID} form_guid - form_guid\n * @property {string} namespace - namespace\n * @property {boolean} is_standalone - is standalone form\n * @property {string} filling_method - chat or classic, for standalone\n * @return {LogObject<formViewParams>} LogObject<formViewParams>\n */\nexport function formView(params: formViewParams): LogObject<formViewParams> {\n  return { evid: 1001, src: 156, endpoint: 'forms-platform-uou', params };\n}\n\n/**\n * A function to create a log object for the 'formFieldEdit' event (evid: 1002)\n *\n * Event description: Fires when a visitor starts editing a field in a form within the Forms Platform. This event captures details about the specific form and field being edited, including the form type and the filling method used, such as classic or chat.\n *\n * @param {formFieldEditParams} params - The parameters for this event\n * @property {string} field_label - id\n * @property {string} form_schema_name - form schama name\n * @property {string} field_id - field_id\n * @property {string} form_url - form url\n * @property {string} field_target - id: field_target\n * @property {string} form_type - form expression (web, standalone, etc.)\n * @property {GUID} form_guid - form_guid\n * @property {string} form_fill_session_id - unique id which defines particular form fill session\n * @property {string} namespace - namespace\n * @property {boolean} is_standalone - is standalone form\n * @property {string} filling_method - chat or classic, for standalone\n * @return {LogObject<formFieldEditParams>} LogObject<formFieldEditParams>\n */\nexport function formFieldEdit(params: formFieldEditParams): LogObject<formFieldEditParams> {\n  return { evid: 1002, src: 156, endpoint: 'forms-platform-uou', params };\n}\n\n/**\n * A function to create a log object for the 'submitFormClick' event (evid: 1003)\n *\n * Event description: Fires when a visitor submits a form using the Forms Platform. The event includes the submission status (success or failed), the filling method used, and the source of the submission.\n *\n * @param {submitFormClickParams} params - The parameters for this event\n * @property {string} form_schema_name - form schema name\n * @property {string} submission_status - Success/Failed\n * @property {string} form_url - form url\n * @property {string} error_reason - Error reason if failed\n * @property {GUID} form_guid - form_guid\n * @property {string} error_message - Full error message\n * @property {string} form_fill_session_id - unique id which defines particular form fill session\n * @property {string} namespace - namespace\n * @property {GUID} submission_id - submission id\n * @property {boolean} is_standalone - is standalone form\n * @property {string} filling_method - chat or classic, for standalone\n * @property {string} referral_info - Where submission was made from (website form, ai assistant, etc)\n * @return {LogObject<submitFormClickParams>} LogObject<submitFormClickParams>\n */\nexport function submitFormClick(params: submitFormClickParams): LogObject<submitFormClickParams> {\n  return { evid: 1003, src: 156, endpoint: 'forms-platform-uou', params };\n}\n\n/**\n * A function to create a log object for the 'formFieldFocus' event (evid: 1004)\n *\n * Event description: Fires when a visitor interacts with a form by focusing on one of its fields. This event captures details about the form interaction, including the session ID, whether the form was standalone, and the method used for filling it.\n *\n * @param {formFieldFocusParams} params - The parameters for this event\n * @property {string} field_label - id\n * @property {string} form_schema_name - form schama name\n * @property {string} field_id - field id\n * @property {string} form_url - form url\n * @property {string} field_target - id\n * @property {GUID} form_guid - form schema id\n * @property {string} action_type - blur/focus\n * @property {string} form_fill_session_id - unique id which defines particular form fill session\n * @property {string} namespace - namespace\n * @property {boolean} is_standalone - is standalone form\n * @property {string} filling_method - chat or classic, for standalone\n * @return {LogObject<formFieldFocusParams>} LogObject<formFieldFocusParams>\n */\nexport function formFieldFocus(params: formFieldFocusParams): LogObject<formFieldFocusParams> {\n  return { evid: 1004, src: 156, endpoint: 'forms-platform-uou', params };\n}\n\n/**\n * A function to create a log object for the 'formErrorAppearedDissapeared' event (evid: 1006)\n *\n * Event description: Fires when an error message appears or disappears for a visitor interacting with a form field. The event specifies whether the error appeared or disappeared, and includes details such as the error name and the form filling method.\n *\n * @param {formErrorAppearedDissapearedParams} params - The parameters for this event\n * @property {string} field_label - id\n * @property {string} form_schema_name - Form schema name\n * @property {string} field_id - field id\n * @property {string} form_url - form url\n * @property {string} field_target - id\n * @property {GUID} form_guid - form schema id\n * @property {string} field_name - name of the field in schema\n * @property {string} action_type - appeared/dissapeared\n * @property {string} form_fill_session_id - unique id which defines particular form fill session\n * @property {string} error_name - description of the error appeared\n * @property {string} namespace - namespace\n * @property {boolean} is_standalone - is standalone form\n * @property {string} filling_method - chat or classic, for standalone\n * @return {LogObject<formErrorAppearedDissapearedParams>} LogObject<formErrorAppearedDissapearedParams>\n */\nexport function formErrorAppearedDissapeared(params: formErrorAppearedDissapearedParams): LogObject<formErrorAppearedDissapearedParams> {\n  return { evid: 1006, src: 156, endpoint: 'forms-platform-uou', params };\n}\n\n/**\n * A function to create a log object for the 'aiChatUouActions' event (evid: 3221)\n *\n * Event description: Actions of UoU while filling the form through chat - open, close, send message\n *\n * @param {aiChatUouActionsParams} params - The parameters for this event\n * @property {string} fieldsFilled - Fields filled by AI assistant in a form\n * @property {string} errorMessage - Error message if error\n * @property {string} field_id - field_id\n * @property {GUID} form_guid - form_guid\n * @property {string} fieldsTotal - Total fields in a form\n * @property {string} form_fill_session_id - session for form filling (if possible)\n * @property {string} action - open/close/send/error message\n * @property {string} namespace - namespace\n * @return {LogObject<aiChatUouActionsParams>} LogObject<aiChatUouActionsParams>\n */\nexport function aiChatUouActions(params: aiChatUouActionsParams): LogObject<aiChatUouActionsParams> {\n  return { evid: 3221, src: 156, endpoint: 'forms-platform-uou', params };\n}\n","import { formFieldFocus } from '@wix/bi-logger-forms-platform-uou/v2';\nimport { type ValidationError, groupErrorsByTarget } from '@wix/form-validator';\nimport React, { useCallback, useMemo, useRef } from 'react';\n\nimport { useBi } from '../../../../contexts/bi-context';\nimport { FieldAttributesContext } from '../../../../contexts/field-attributes-context';\nimport { FieldPropsContext } from '../../../../contexts/field-props-context';\nimport { useFieldValidation } from '../../../../contexts/field-validation-context';\nimport { useForm } from '../../../../contexts/form-context';\nimport { useError } from '../../../../field-error';\nimport { type FieldLayoutComponent } from '../../../../field-layout';\nimport { useFieldAttributes } from '../../../../services/field-attributes';\nimport { useExternalData } from '../../contexts/external-data-context';\nimport { useFormFields } from '../../contexts/form-fields-context';\nimport {\n  type OnFieldChange,\n  type OnBlur,\n  type OnFocus,\n  type FormValues,\n  type InputField as InputFieldEntity,\n  type PossibleValues,\n} from '../../types';\n\nexport interface InputFieldProps {\n  field: InputFieldEntity;\n  errors: ValidationError[];\n  values: FormValues;\n  onFieldChange?: OnFieldChange;\n  onBlur?: OnBlur;\n  onFocus?: OnFocus;\n  FieldLayout: FieldLayoutComponent;\n}\n\nexport const InputField = ({\n  field,\n  errors,\n  values,\n  onFieldChange,\n  onBlur,\n  onFocus,\n  FieldLayout,\n}: InputFieldProps) => {\n  const bi = useBi();\n  const componentsById = useFormFields();\n  const externalData = useExternalData();\n  const { validateFields } = useFieldValidation();\n  const form = useForm();\n  const fieldValue = values[field.target];\n  const fieldValueRef = useRef(fieldValue);\n  fieldValueRef.current = fieldValue;\n\n  const errorsByTarget = useMemo(() => groupErrorsByTarget(errors), [errors]);\n  const fieldErrors = errorsByTarget?.[field.target];\n  const fieldError = fieldErrors?.[0];\n  const { requiredIndicator, requiredIndicatorPlacement } =\n    form.requiredIndicatorProperties || {};\n  const _onBlur = useCallback(() => {\n    const currentFieldValue = fieldValueRef.current;\n    bi?.report(\n      formFieldFocus({\n        action_type: 'blur',\n        field_id: field.id,\n        field_label: field.properties.label,\n        field_target: field?.target,\n      }),\n    );\n    validateFields([{ value: currentFieldValue, path: field.path }]);\n    onBlur?.(field.path);\n  }, [\n    bi,\n    field.id,\n    field.properties.label,\n    field.target,\n    field.path,\n    validateFields,\n    onBlur,\n  ]);\n\n  const _onFocus = () => {\n    bi?.report(\n      formFieldFocus({\n        action_type: 'focus',\n        field_id: field.id,\n        field_label: field.properties.label,\n        field_target: field?.target,\n      }),\n    );\n    onFocus?.(field.path);\n  };\n\n  const handleChange = useCallback(\n    (value: PossibleValues) => {\n      if (fieldError) {\n        validateFields([{ value, path: field.path }]);\n      }\n\n      if (\n        (!value && value !== 0 && typeof value !== 'boolean') ||\n        (Array.isArray(value) && value.length === 0)\n      ) {\n        value = null;\n      }\n\n      onFieldChange?.(field.target, value);\n    },\n    [onFieldChange, field, fieldError, validateFields],\n  );\n\n  const { hasError, errorMessage } = useError({\n    error: fieldError,\n    customErrors: field.properties?.customErrors,\n    fieldType: field.fieldType,\n    properties: field.properties,\n    validationError: fieldError,\n  });\n\n  const FieldComponent = componentsById[field.fieldType];\n\n  const fieldProps = {\n    ...field.properties,\n    readOnly: Boolean(field.properties?.readOnly),\n    onChange: handleChange,\n    onBlur: _onBlur,\n    onFocus: _onFocus,\n    onFieldBlur: onBlur,\n    onFieldFocus: onFocus,\n    hasError,\n    errorMessage,\n    error: fieldError,\n    errors: fieldErrors,\n    value: fieldValue,\n    id: field.id,\n    target: field.target,\n    path: field.path,\n    externalData,\n    fieldType: field.fieldType,\n    FieldLayout,\n    requiredIndicatorType: requiredIndicator,\n    requiredIndicatorPlacement,\n  };\n\n  const fieldAttributes = useFieldAttributes(\n    fieldProps.id,\n    fieldProps.error,\n    fieldProps.description,\n  );\n\n  if (!FieldComponent) {\n    return null;\n  }\n\n  return (\n    <FieldAttributesContext.Provider value={fieldAttributes}>\n      <FieldPropsContext.Provider value={{ v2: fieldProps }}>\n        <FieldComponent {...fieldProps} />\n      </FieldPropsContext.Provider>\n    </FieldAttributesContext.Provider>\n  );\n};\n","import { createContext, useContext } from 'react';\n\nimport { type FieldAttributes } from '../services/field-attributes';\n\nexport const FieldAttributesContext = createContext<\n  FieldAttributes | undefined\n>(undefined);\n\nexport function useFieldAttributes() {\n  const context = useContext(FieldAttributesContext);\n  if (typeof context === 'undefined') {\n    throw new Error(\n      'useFieldAttributes must be used inside a <FieldAttributesContext.Provider>',\n    );\n  }\n\n  return context;\n}\n","import { createContext, useContext } from 'react';\n\nimport {\n  type NestedFormFieldProps,\n  type InputFieldProps,\n  type ReadOnlyFieldProps,\n  type SubmitButtonFieldProps,\n} from '../types';\nimport { type FormValues, type PossibleValues } from '../ui/form/types';\n\ntype FieldPropsV2 =\n  | InputFieldProps<PossibleValues>\n  | ReadOnlyFieldProps\n  | NestedFormFieldProps<FormValues>\n  | SubmitButtonFieldProps;\n\nexport type FieldProps = { v2: FieldPropsV2 };\n\nexport const FieldPropsContext = createContext<FieldProps | undefined>(\n  undefined,\n);\n\nexport function useFieldProps<\n  T extends FieldProps | { v2: FieldPropsV2 },\n>(): T {\n  const context = useContext(FieldPropsContext);\n\n  if (typeof context === 'undefined') {\n    throw new Error('useFieldProps must be used within a FieldPropsProvider');\n  }\n\n  return context as T;\n}\n\nexport function useFieldPropsV2<\n  T extends FieldPropsV2 = InputFieldProps<PossibleValues>,\n>(): T {\n  return useFieldProps<{ v2: T }>().v2;\n}\n","import { type Validation } from '@wix/ambassador-forms-v4-form/types';\nimport { type ValidationError, ErrorTypes } from '@wix/form-validator';\n\nimport { SupportedDateParts } from '../../utils/date-format-parts';\nimport { deserializeDate } from '../date-picker/helpers';\nimport { type DateFieldError } from '../date-picker/types';\n\nexport enum DateFieldErrorSuffix {\n  YEAR_MONTH = 'year-month',\n  YEAR_DAY = 'year-day',\n  MONTH_DAY = 'month-day',\n  YEAR = 'year',\n  MONTH = 'month',\n  DAY = 'day',\n}\n\nexport interface DateFieldValidationError\n  extends Omit<ValidationError, 'errorType' | 'params'> {\n  errorType: ErrorTypes.INCOMPLETE_DATE_ERROR;\n  params: {\n    suffix: DateFieldErrorSuffix;\n  };\n}\n\nexport const getDateFieldError = (\n  _validation?: Validation,\n  error?: ValidationError,\n  value?: string,\n) => {\n  const isFormatError = error?.errorType === ErrorTypes.FORMAT_ERROR;\n\n  if (!error || !isFormatError) {\n    return error;\n  }\n\n  const { YEAR: _YEAR, MONTH, DAY } = deserializeDate(value);\n  const YEAR = _YEAR?.length === 4;\n\n  // All missing is the error we got as input\n  if (!YEAR && !MONTH && !DAY) {\n    return error;\n  }\n\n  const withErrorSuffix = (\n    suffix: DateFieldErrorSuffix,\n  ): DateFieldValidationError => ({\n    ...error,\n    errorType: ErrorTypes.INCOMPLETE_DATE_ERROR,\n    params: {\n      suffix,\n    },\n  });\n\n  if (!YEAR && !MONTH) {\n    return withErrorSuffix(DateFieldErrorSuffix.YEAR_MONTH);\n  }\n  if (!YEAR && !DAY) {\n    return withErrorSuffix(DateFieldErrorSuffix.YEAR_DAY);\n  }\n  if (!MONTH && !DAY) {\n    return withErrorSuffix(DateFieldErrorSuffix.MONTH_DAY);\n  }\n  if (!YEAR) {\n    return withErrorSuffix(DateFieldErrorSuffix.YEAR);\n  }\n  if (!MONTH) {\n    return withErrorSuffix(DateFieldErrorSuffix.MONTH);\n  }\n  if (!DAY) {\n    return withErrorSuffix(DateFieldErrorSuffix.DAY);\n  }\n\n  return error;\n};\n\nexport const getDatePartsErrors = (\n  hasError: boolean,\n  value?: string,\n): DateFieldError => {\n  const { YEAR, MONTH, DAY } = deserializeDate(value);\n  const invalidParts = [YEAR?.length !== 4, !MONTH, !DAY];\n  const allValidParts = !invalidParts.some(Boolean);\n\n  return {\n    [SupportedDateParts.YEAR]: hasError && (allValidParts || invalidParts[0]),\n    [SupportedDateParts.MONTH]: hasError && (allValidParts || invalidParts[1]),\n    [SupportedDateParts.DAY]: hasError && (allValidParts || invalidParts[2]),\n  };\n};\n\nconst isDateFieldValidationError = (\n  error?: DateFieldValidationError | ValidationError,\n): error is DateFieldValidationError => {\n  return error?.errorType === ErrorTypes.INCOMPLETE_DATE_ERROR;\n};\n\nexport const getDateValidationErrorSuffix = (\n  error?: DateFieldValidationError | ValidationError,\n) => (isDateFieldValidationError(error) ? error.params.suffix : undefined);\n","import { SupportedDateParts } from '../../utils/date-format-parts';\n\nimport type { DateFieldValue } from './types';\n\nexport const deserializeDate = (value?: string): DateFieldValue => {\n  if (!value) {\n    return {\n      [SupportedDateParts.YEAR]: '',\n      [SupportedDateParts.MONTH]: '',\n      [SupportedDateParts.DAY]: '',\n    };\n  }\n\n  const [year, month, day] = value.split('-');\n\n  return {\n    [SupportedDateParts.YEAR]: year,\n    [SupportedDateParts.MONTH]: month ? String(parseInt(month, 10)) : '',\n    [SupportedDateParts.DAY]: day ? String(parseInt(day, 10)) : '',\n  };\n};\n\nexport function serializeDate(\n  value: string,\n  datePart: SupportedDateParts | 'time',\n  currentDate: DateFieldValue,\n): string {\n  const newYear =\n    datePart === SupportedDateParts.YEAR\n      ? value\n      : currentDate[SupportedDateParts.YEAR];\n  const newMonth =\n    datePart === SupportedDateParts.MONTH\n      ? value\n      : currentDate[SupportedDateParts.MONTH];\n  const newDay =\n    datePart === SupportedDateParts.DAY\n      ? value\n      : currentDate[SupportedDateParts.DAY];\n\n  const yearFormatted = newYear || '';\n  const monthFormatted = newMonth ? newMonth.padStart(2, '0') : '';\n  const dayFormatted = newDay ? newDay.padStart(2, '0') : '';\n\n  return [yearFormatted, monthFormatted, dayFormatted].join('-');\n}\n\nexport function getFocusFieldId(\n  id: string,\n  datePart: SupportedDateParts,\n): string {\n  return `${id}/${datePart}`;\n}\n","import { type ValidationError, ErrorTypes } from '@wix/form-validator';\n\nimport { SupportedDateParts } from '../../utils/date-format-parts';\nimport { type DateFieldErrorSuffix } from '../date-field/date-field-utils';\nimport { deserializeDate } from '../date-picker/helpers';\nimport { type DateTimeFieldError } from '../date-picker/types';\n\nexport const parseDateTimeValue = (value?: string): [string, string] => {\n  if (!value) {\n    return ['', ''];\n  }\n\n  const separator = value.indexOf('T') > -1 ? 'T' : ' ';\n  const [date, time] = value.split(separator);\n\n  return [date, time];\n};\n\nexport const formatDateTimeValue = (\n  date?: string | null,\n  time?: string | null,\n) => `${date ?? ''}T${time ?? ''}`;\n\nexport const isIncompleteTime = (time?: string) => {\n  if (!time) {\n    return true;\n  }\n  const [hours, minutes] = time.split(':');\n  return !hours || !minutes;\n};\n\nexport enum DateTimeFieldErrorSuffix {\n  YEAR_MONTH_TIME = 'year-month-time',\n  YEAR_DAY_TIME = 'year-day-time',\n  MONTH_DAY_TIME = 'month-day-time',\n  YEAR_TIME = 'year-time',\n  MONTH_TIME = 'month-time',\n  DAY_TIME = 'day-time',\n  TIME = 'time',\n}\n\nexport interface DateTimeFieldValidationError\n  extends Omit<ValidationError, 'errorType' | 'params'> {\n  errorType: ErrorTypes.INCOMPLETE_DATE_ERROR;\n  params: {\n    suffix: DateTimeFieldErrorSuffix | DateFieldErrorSuffix;\n  };\n}\n\nexport const getDateTimePartsErrors = (\n  hasError: boolean,\n  value?: string,\n): DateTimeFieldError => {\n  const [date, time] = parseDateTimeValue(value);\n  const { YEAR, MONTH, DAY } = deserializeDate(date);\n  const invalidParts = [\n    YEAR?.length !== 4,\n    !MONTH,\n    !DAY,\n    isIncompleteTime(time),\n  ];\n  const allValidParts = !invalidParts.some(Boolean);\n\n  return {\n    [SupportedDateParts.YEAR]: hasError && (allValidParts || invalidParts[0]),\n    [SupportedDateParts.MONTH]: hasError && (allValidParts || invalidParts[1]),\n    [SupportedDateParts.DAY]: hasError && (allValidParts || invalidParts[2]),\n    TIME: hasError && (allValidParts || invalidParts[3]),\n  };\n};\n\nconst isDateTimeFieldValidationError = (\n  error?: DateTimeFieldValidationError | ValidationError,\n): error is DateTimeFieldValidationError => {\n  return error?.errorType === ErrorTypes.INCOMPLETE_DATE_ERROR;\n};\n\nexport const getDateTimeValidationErrorSuffix = (\n  error?: DateTimeFieldValidationError | ValidationError,\n) => (isDateTimeFieldValidationError(error) ? error.params.suffix : undefined);\n","import { ErrorTypes } from '@wix/form-validator';\n\nimport { TRANSLATIONS_NAMESPACE } from '../constants/locale';\nimport type { TFunction, i18n } from '../contexts/translation-context';\n\nimport { type FieldError } from './error-types';\n\nconst defaultErrorKeys = {\n  [ErrorTypes.UNKNOWN_ERROR]: 'input.error.message.unknown-error',\n  [ErrorTypes.TYPE_ERROR]: 'input.error.message.type-error',\n  [ErrorTypes.REQUIRED_VALUE_ERROR]: 'input.error.message.required-error',\n  [ErrorTypes.UNKNOWN_VALUE_ERROR]: 'input.error.message.unknown-value-error',\n  [ErrorTypes.MAX_LENGTH_ERROR]: 'input.error.message.max-length-error',\n  [ErrorTypes.MIN_LENGTH_ERROR]: 'input.error.message.min-length-error',\n  [ErrorTypes.PATTERN_ERROR]: 'input.error.message.pattern-error',\n  [ErrorTypes.FORMAT_ERROR]: 'input.error.message.format-error',\n  [ErrorTypes.MAX_VALUE_ERROR]: 'input.error.message.max-value-error',\n  [ErrorTypes.MIN_VALUE_ERROR]: 'input.error.message.min-value-error',\n  [ErrorTypes.MULTIPLE_OF_VALUE_ERROR]:\n    'input.error.message.multiple-of-value-error',\n  [ErrorTypes.MIN_ITEMS_ERROR]: 'input.error.message.min-items-error',\n  [ErrorTypes.MAX_ITEMS_ERROR]: 'input.error.message.max-items-error',\n  [ErrorTypes.NOT_ALLOWED_VALUE_ERROR]: 'input.error.message.not-allowed-value',\n  [ErrorTypes.FIELDS_COMPATIBILITY_ERROR]:\n    'input.error.fields-compatibility-error',\n  [ErrorTypes.FIELDS_COUNT_RESTRICTIONS_ERROR]:\n    'input.error.fields-count-restrictions-error',\n  [ErrorTypes.FORMS_COUNT_RESTRICTIONS_ERROR]:\n    'input.error.forms-count-restrictions-error',\n  [ErrorTypes.STEPS_COUNT_RESTRICTIONS_ERROR]:\n    'input.error.steps-count-restrictions-error',\n  [ErrorTypes.RULES_COUNT_RESTRICTIONS_ERROR]:\n    'input.error.rules-count-restrictions-error',\n  [ErrorTypes.FILE_UPLOAD_RESTRICTIONS_ERROR]:\n    'input.error.file-upload-restrictions-error',\n  [ErrorTypes.DISABLED_FORM_ERROR]: 'input.error.disabled-form-error',\n  [ErrorTypes.INVALID_PHONE_COUNTRY_CODE_ERROR]:\n    'input.error.message.invalid-phone-country-code-error',\n  [ErrorTypes.INVALID_STAFF_ID_ERROR]:\n    'input.error.message.invalid-staff-id-error',\n  [ErrorTypes.INVALID_LOCATION_ID_ERROR]:\n    'input.error.message.invalid-location-id-error',\n  [ErrorTypes.MISSING_SERVICE_OPTION_ERROR]: 'TBD',\n  [ErrorTypes.INVALID_SERVICE_OPTIONS_ERROR]: 'TBD',\n  [ErrorTypes.NO_AVAILABLE_SERVICE_OPTIONS_ERROR]: 'TBD',\n  [ErrorTypes.EXACT_CHARACTER_LENGTH_ERROR]:\n    'input.error.message.exact-character-length-error',\n  [ErrorTypes.CHARACTER_LENGTH_RANGE_ERROR]:\n    'input.error.message.character-length-range-error',\n  [ErrorTypes.VALUE_RANGE_ERROR]: 'input.error.message.value-range-error',\n  [ErrorTypes.EXACT_ITEMS_NUMBER_ERROR]:\n    'input.error.message.exact-items-number-error',\n  [ErrorTypes.DECIMAL_POINT_ERROR]: 'input.error.message.decimal_point_error',\n  [ErrorTypes.INCOMPLETE_DATE_ERROR]:\n    'input.error.message.incomplete-date-error',\n  [ErrorTypes.INVALID_VALUE_FOR_PATTERN_ERROR]:\n    'input.error.message.invalid-value-for-pattern',\n  [ErrorTypes.INVALID_DEFAULT_VALUE_ERROR]:\n    'input.error.message.invalid-default-value-error',\n};\n\nexport const getTranslatedError = ({\n  translation,\n  error,\n  fieldType,\n  suffix,\n  currency,\n}: {\n  translation: { t: TFunction; i18n: i18n };\n  error: FieldError;\n  fieldType?: string;\n  suffix?: string;\n  currency?: string;\n}): string => {\n  const { t, i18n } = translation;\n  const formattedFieldType = getFormattedFieldType(fieldType ?? '');\n  const errorKey = defaultErrorKeys[error.errorType];\n  const params = { ...error.params, currency };\n  const fieldErrorKey = `${formattedFieldType}.${errorKey}`;\n\n  if (suffix) {\n    const fieldErrorKeyWithSuffix = `${fieldErrorKey}.${suffix}`;\n    const errorKeyWithSuffix = `${errorKey}.${suffix}`;\n    if (i18n.exists(`${TRANSLATIONS_NAMESPACE}:${fieldErrorKeyWithSuffix}`)) {\n      return t(fieldErrorKeyWithSuffix, params);\n    }\n    if (i18n.exists(`${TRANSLATIONS_NAMESPACE}:${errorKeyWithSuffix}`)) {\n      return t(errorKeyWithSuffix, params);\n    }\n  }\n\n  if (i18n.exists(`${TRANSLATIONS_NAMESPACE}:${fieldErrorKey}`)) {\n    return t(fieldErrorKey, params);\n  }\n\n  return t(defaultErrorKeys[error.errorType], params);\n};\n\nconst getFormattedFieldType = (string: string) =>\n  string.toLowerCase().replace(/_/g, '-');\n","export const TRANSLATIONS_NAMESPACE = 'form-viewer';\n","import { type ValidationError } from '@wix/form-validator';\n\nimport { INPUT_FIELD_TYPES, type InputFieldType } from '../constants';\nimport { useConfig } from '../contexts/config-context';\nimport { ForcedState, useForcedState } from '../contexts/forced-state-context';\nimport { useTranslation } from '../contexts/translation-context';\nimport { getDateValidationErrorSuffix } from '../ui/date-field/date-field-utils';\nimport { getDateTimeValidationErrorSuffix } from '../ui/date-time-field/date-time-field-utils';\nimport { type PossibleValues, type Properties } from '../ui/form/types';\n\nimport { type CustomErrors, type FieldError } from './error-types';\nimport { getTranslatedError } from './get-translated-error';\n\nconst getErrorSuffix = ({\n  fieldType,\n  error,\n  properties,\n}: {\n  fieldType: InputFieldType;\n  error?: ValidationError;\n  properties?: Properties<PossibleValues, string>;\n}) => {\n  switch (fieldType) {\n    case INPUT_FIELD_TYPES.DATE_TIME_INPUT:\n      return getDateTimeValidationErrorSuffix(error);\n    case INPUT_FIELD_TYPES.CONTACTS_BIRTHDATE:\n    case INPUT_FIELD_TYPES.DATE_INPUT:\n      return getDateValidationErrorSuffix(error);\n    case INPUT_FIELD_TYPES.TEXT_INPUT:\n    case INPUT_FIELD_TYPES.CHALLENGES_SHORT_TEXT:\n    case INPUT_FIELD_TYPES.QUIZ_TEXT_INPUT:\n    case INPUT_FIELD_TYPES.DEXT_TEXT_INPUT:\n    case INPUT_FIELD_TYPES.DEXT_EMAIL:\n    case INPUT_FIELD_TYPES.CONTACTS_TAX_ID:\n    case INPUT_FIELD_TYPES.CONTACTS_POSITION:\n    case INPUT_FIELD_TYPES.CONTACTS_LAST_NAME:\n    case INPUT_FIELD_TYPES.CONTACTS_FIRST_NAME:\n    case INPUT_FIELD_TYPES.CONTACTS_EMAIL:\n    case INPUT_FIELD_TYPES.CONTACTS_COMPANY:\n    case INPUT_FIELD_TYPES.CONTACTS_ADDRESS:\n    case INPUT_FIELD_TYPES.BOOKINGS_LAST_NAME:\n    case INPUT_FIELD_TYPES.BOOKINGS_FIRST_NAME:\n    case INPUT_FIELD_TYPES.BOOKINGS_EMAIL:\n    case INPUT_FIELD_TYPES.ECOM_PHONE:\n    case INPUT_FIELD_TYPES.ECOM_EMAIL:\n    case INPUT_FIELD_TYPES.ECOM_COMPANY_NAME:\n    case INPUT_FIELD_TYPES.ECOM_ADDITIONAL_INFO:\n    case INPUT_FIELD_TYPES.FULL_NAME_LAST_NAME:\n    case INPUT_FIELD_TYPES.FULL_NAME_FIRST_NAME:\n    case INPUT_FIELD_TYPES.MLA_STREET_NAME:\n    case INPUT_FIELD_TYPES.MLA_ADDRESS_LINE:\n    case INPUT_FIELD_TYPES.MLA_STREET_NUMBER:\n    case INPUT_FIELD_TYPES.MLA_POSTAL_CODE:\n    case INPUT_FIELD_TYPES.MLA_CITY:\n    case INPUT_FIELD_TYPES.MLA_APARTMENT:\n    case INPUT_FIELD_TYPES.MLA_ADDRESS_LINE_2:\n    case INPUT_FIELD_TYPES.PASSWORD:\n    case INPUT_FIELD_TYPES.RATING_INPUT:\n    case INPUT_FIELD_TYPES.DEXT_RATING_INPUT:\n    case INPUT_FIELD_TYPES.MLA_COUNTRY:\n    case INPUT_FIELD_TYPES.MLA_SUBDIVISION:\n      if (properties && 'countryCode' in properties) {\n        const countryCode = properties.countryCode;\n        return typeof countryCode === 'string'\n          ? countryCode.toLocaleLowerCase()\n          : undefined;\n      }\n\n      return undefined;\n    case INPUT_FIELD_TYPES.VAT_ID:\n      if (properties && 'country' in properties) {\n        const country = properties.country;\n        return typeof country === 'string'\n          ? country.toLocaleLowerCase()\n          : undefined;\n      }\n\n      return undefined;\n    case INPUT_FIELD_TYPES.SIGNATURE:\n      if (properties && 'uploadEnabled' in properties) {\n        return properties.uploadEnabled ? 'with-upload' : undefined;\n      }\n\n      return undefined;\n    default:\n      return undefined;\n  }\n};\n\ninterface UseErrorParams {\n  error: FieldError | undefined;\n  customErrors?: CustomErrors;\n  fieldType?: string;\n  properties?: Properties<PossibleValues, string>;\n  validationError?: ValidationError;\n}\n\nexport const useError = ({\n  error,\n  customErrors,\n  fieldType,\n  properties,\n  validationError,\n}: UseErrorParams) => {\n  const { currency } = useConfig();\n  const { t, i18n } = useTranslation();\n  const forcedState = useForcedState();\n\n  if (forcedState.includes(ForcedState.INPUT_FIELDS_ERROR)) {\n    return {\n      hasError: true,\n      errorMessage: t('input.error.message.required-error-forced'),\n    };\n  }\n\n  if (!error) {\n    return { hasError: false };\n  }\n\n  const customErrorMessage =\n    (error?.useCustomErrorMessage && error?.errorMessage) ||\n    customErrors?.[error.errorType];\n\n  const suffix = fieldType\n    ? getErrorSuffix({\n        fieldType: fieldType as InputFieldType,\n        error: validationError,\n        properties,\n      })\n    : undefined;\n\n  const errorMessage =\n    customErrorMessage ??\n    getTranslatedError({\n      translation: { i18n, t },\n      error,\n      fieldType,\n      suffix,\n      currency: currency?.sign,\n    });\n\n  return { hasError: true, errorMessage };\n};\n","import { type RichContent } from '@wix/ricos';\n\nimport { useUniqueFieldSuffix } from '../contexts/unique-field-suffix-context';\nimport { type FieldError } from '../field-error/error-types';\n\nexport function getInputId(fieldId: string, uniqueId: string) {\n  return `form-field-input-${fieldId}-${uniqueId}` as const;\n}\n\nexport function getLabelId(fieldId: string, uniqueId: string) {\n  return `form-field-label-${fieldId}-${uniqueId}` as const;\n}\n\nexport function getPrefixId(fieldId: string, uniqueId: string) {\n  return `form-field-prefix-${fieldId}-${uniqueId}` as const;\n}\n\nexport function getDescriptionId(fieldId: string, uniqueId: string) {\n  return `form-field-description-${fieldId}-${uniqueId}`;\n}\n\nexport function getErrorId(fieldId: string, uniqueId: string) {\n  return `form-field-error-${fieldId}-${uniqueId}`;\n}\n\nexport function getAriaDescribedBy(\n  errorId: string,\n  descriptionId: string,\n  error: FieldError | undefined,\n  description: RichContent | undefined,\n): string | undefined {\n  return (\n    [error && errorId, description && descriptionId]\n      .filter(Boolean)\n      .join(' ') || undefined\n  );\n}\n\nexport function getErrorDataHook(target: string) {\n  return `field-error-${target}`;\n}\n\nexport type FieldAttributes = {\n  inputId: ReturnType<typeof getInputId>;\n  labelId: ReturnType<typeof getLabelId>;\n  prefixId: ReturnType<typeof getPrefixId>;\n  descriptionId: ReturnType<typeof getDescriptionId>;\n  errorId: ReturnType<typeof getErrorId>;\n  ariaDescribedBy: ReturnType<typeof getAriaDescribedBy>;\n};\n\nexport function useFieldAttributes(\n  fieldId: string,\n  error: FieldError | undefined,\n  description: RichContent | undefined,\n): FieldAttributes {\n  const uniqueId = useUniqueFieldSuffix();\n  const errorId = getErrorId(fieldId, uniqueId);\n  const descriptionId = getDescriptionId(fieldId, uniqueId);\n\n  return {\n    inputId: getInputId(fieldId, uniqueId),\n    labelId: getLabelId(fieldId, uniqueId),\n    prefixId: getPrefixId(fieldId, uniqueId),\n    descriptionId,\n    errorId,\n    ariaDescribedBy: getAriaDescribedBy(\n      errorId,\n      descriptionId,\n      error,\n      description,\n    ),\n  };\n}\n","import { type ValidationError, groupErrorsByTarget } from '@wix/form-validator';\nimport React, { useCallback, useMemo } from 'react';\n\nimport { FieldPropsContext } from '../../../../contexts/field-props-context';\nimport { useForm } from '../../../../contexts/form-context';\nimport { type FieldLayoutComponent } from '../../../../field-layout';\nimport { useExternalData } from '../../contexts/external-data-context';\nimport { useFormFields } from '../../contexts/form-fields-context';\nimport {\n  type OnFieldChange,\n  type FormValues,\n  type InputField as InputFieldEntity,\n  type PossibleValues,\n} from '../../types';\n\nexport interface NestedFormFieldProps {\n  field: InputFieldEntity;\n  errors: ValidationError[];\n  values: FormValues;\n  onFieldChange?: OnFieldChange;\n  FieldLayout: FieldLayoutComponent;\n}\n\nexport const NestedFormField = ({\n  field,\n  errors,\n  values,\n  onFieldChange,\n  FieldLayout,\n}: NestedFormFieldProps) => {\n  const componentsById = useFormFields();\n  const externalData = useExternalData();\n  const form = useForm();\n\n  const fieldValue = values[field.target];\n  const errorsByTarget = useMemo(() => groupErrorsByTarget(errors), [errors]);\n  const fieldErrors = errorsByTarget?.[field.target];\n  const fieldError = fieldErrors?.[0];\n  const { requiredIndicator, requiredIndicatorPlacement } =\n    form.requiredIndicatorProperties || {};\n  const handleChange = useCallback(\n    (value: PossibleValues) => {\n      if (!value) {\n        value = null;\n      }\n\n      onFieldChange?.(field.target, value);\n    },\n    [onFieldChange, field],\n  );\n\n  const FieldComponent = componentsById[field.fieldType];\n\n  if (!FieldComponent) {\n    return null;\n  }\n\n  const fieldProps = {\n    ...field.properties,\n    onChange: handleChange,\n    error: fieldError,\n    errors: fieldErrors,\n    value: fieldValue,\n    id: field.id,\n    target: field.target,\n    path: field.path,\n    externalData,\n    fieldType: field.fieldType,\n    FieldLayout,\n    requiredIndicatorType: requiredIndicator,\n    requiredIndicatorPlacement,\n  };\n\n  return (\n    <FieldPropsContext.Provider value={{ v2: fieldProps }}>\n      <FieldComponent {...fieldProps} />\n    </FieldPropsContext.Provider>\n  );\n};\n","import React from 'react';\n\nimport { FieldPropsContext } from '../../../../contexts/field-props-context';\nimport { useForm } from '../../../../contexts/form-context';\nimport { type FieldLayoutComponent } from '../../../../field-layout';\nimport { useExternalData } from '../../contexts/external-data-context';\nimport { useFormFields } from '../../contexts/form-fields-context';\nimport { type ReadOnlyField as ReadOnlyFieldEntity } from '../../types';\n\nexport interface ReadOnlyFieldProps {\n  field: ReadOnlyFieldEntity;\n  FieldLayout: FieldLayoutComponent;\n}\n\nexport const ReadOnlyField = ({ field, FieldLayout }: ReadOnlyFieldProps) => {\n  const componentsById = useFormFields();\n  const externalData = useExternalData();\n  const form = useForm();\n\n  const { requiredIndicator, requiredIndicatorPlacement } =\n    form.requiredIndicatorProperties || {};\n  const FieldComponent = componentsById[field.fieldType];\n\n  if (!FieldComponent) {\n    return null;\n  }\n\n  const fieldProps = {\n    ...field.properties,\n    id: field.id,\n    externalData,\n    fieldType: field.fieldType,\n    FieldLayout,\n    requiredIndicatorType: requiredIndicator,\n    requiredIndicatorPlacement,\n  };\n\n  return (\n    <FieldPropsContext.Provider value={{ v2: fieldProps }}>\n      <FieldComponent {...fieldProps} />\n    </FieldPropsContext.Provider>\n  );\n};\n","import { type Form } from '@wix/ambassador-forms-v4-form/types';\n\nexport const getCurrentStep = (form: Form, fieldId: string) => {\n  const stepCount = form?.steps ? form.steps.length - 1 : 0;\n  const hasSteps = stepCount > 0;\n  const stepNumber =\n    hasSteps &&\n    form?.steps?.findIndex((step) =>\n      step.layout?.large?.items?.find((item) => item.fieldId === fieldId),\n    );\n  const isLastStep = stepNumber === stepCount;\n\n  return { hasSteps, stepNumber, isLastStep };\n};\n","import { type Form } from '@wix/ambassador-forms-v4-form/types';\nimport { useCallback, useState } from 'react';\n\nimport { useFieldActions } from '../../../contexts/field-actions-context';\nimport {\n  FORM_STATUS,\n  useFormStatus,\n} from '../../../contexts/form-status-provider';\n\nimport { getCurrentStep } from './utils';\n\nexport type UseSubmitButtonProps = {\n  form: Form;\n  id: string;\n};\n\nexport type UseSubmitButtonReturn = {\n  handleSubmitClick: () => Promise<void>;\n  isDisabled: boolean;\n  isInProgress: boolean;\n  showPreviousButton: boolean;\n  showNextButton: boolean;\n  showSubmitButton: boolean;\n  hasSteps: boolean;\n};\n\nexport const useSubmitButton = ({\n  form,\n  id,\n}: UseSubmitButtonProps): UseSubmitButtonReturn => {\n  const { hasSteps, stepNumber, isLastStep } = getCurrentStep(form, id);\n  const { inProgress, actions } = useFieldActions();\n  const [submitInProgress, setSubmitInProgress] = useState(false);\n\n  const { formStatus } = useFormStatus();\n\n  const isDisabled = submitInProgress;\n  const isInProgress = inProgress || formStatus === FORM_STATUS.BUSY;\n\n  const showPreviousButton = hasSteps && stepNumber !== 0;\n  const showNextButton = hasSteps && !isLastStep;\n  const showSubmitButton = !hasSteps || (hasSteps && isLastStep);\n\n  const handleSubmitClick = useCallback(async () => {\n    if (isInProgress) {\n      return;\n    }\n    setSubmitInProgress(true);\n    try {\n      await actions?.submitForm();\n    } catch (error) {\n      console.error(error);\n    }\n    setSubmitInProgress(false);\n  }, [actions, isInProgress]);\n\n  return {\n    handleSubmitClick,\n    isDisabled,\n    isInProgress,\n    showPreviousButton,\n    showNextButton,\n    showSubmitButton,\n    hasSteps,\n  };\n};\n","import React from 'react';\n\nimport { useFieldActions } from '../../../../contexts/field-actions-context';\nimport { FieldPropsContext } from '../../../../contexts/field-props-context';\nimport { useForm } from '../../../../contexts/form-context';\nimport { type FieldLayoutComponent } from '../../../../field-layout';\nimport { useSubmitButton } from '../../../../fields/submit-button/submit-button/use-submit-button';\nimport { useExternalData } from '../../contexts/external-data-context';\nimport { useFormFields } from '../../contexts/form-fields-context';\nimport { type SubmitButtonField as SubmitButtonFieldEntity } from '../../types';\n\nexport interface SubmitButtonFieldProps {\n  field: SubmitButtonFieldEntity;\n  FieldLayout: FieldLayoutComponent;\n}\n\nexport const SubmitButtonField = ({\n  field,\n  FieldLayout,\n}: SubmitButtonFieldProps) => {\n  const { submitText, nextText, previousText, text } = field.properties as any;\n\n  const componentsById = useFormFields();\n  const externalData = useExternalData();\n  const form = useForm();\n  const { actions } = useFieldActions();\n  const {\n    handleSubmitClick,\n    isDisabled,\n    isInProgress,\n    showPreviousButton,\n    showNextButton,\n    showSubmitButton,\n    hasSteps,\n  } = useSubmitButton({\n    form,\n    id: field.id,\n  });\n\n  const submitButtonText: string = submitText || text || '';\n  const previousButtonText: string = previousText || '';\n  const nextButtonText: string = nextText || '';\n  const FieldComponent = componentsById[field.fieldType];\n\n  if (!FieldComponent) {\n    return null;\n  }\n\n  const fieldProps = {\n    ...field.properties,\n    id: field.id,\n    externalData,\n    fieldType: field.fieldType,\n    FieldLayout,\n    hasSteps,\n    isDisabled,\n    isInProgress,\n    showPreviousButton,\n    showNextButton,\n    showSubmitButton,\n    submitText: submitButtonText,\n    previousText: previousButtonText,\n    nextText: nextButtonText,\n    onSubmitClick: handleSubmitClick,\n    onPreviousClick: () => actions?.setPreviousStep(),\n    onNextClick: () => actions?.setNextStep(),\n  };\n\n  return (\n    <FieldPropsContext.Provider value={{ v2: fieldProps }}>\n      <FieldComponent {...fieldProps} />\n    </FieldPropsContext.Provider>\n  );\n};\n","import type { ValidationError } from '@wix/form-validator';\nimport React from 'react';\n\nimport { type FieldLayoutComponent } from '../../../../field-layout';\nimport { isMultilineAddressField } from '../../../../services/multiline-address';\nimport {\n  type FormValues,\n  isInputField,\n  type OnFieldChange,\n  type OnBlur,\n  type OnFocus,\n  isNestedFormField,\n  type Field,\n} from '../../types';\n\nimport { InputField } from './input-field';\nimport { NestedFormField } from './nested-form-field';\nimport { ReadOnlyField } from './read-only-field';\nimport { SubmitButtonField } from './submit-button-field';\n\ninterface FormFieldProps {\n  field: Field;\n  values: FormValues;\n  errors: ValidationError[];\n  onFieldChange?: OnFieldChange;\n  onBlur?: OnBlur;\n  onFocus?: OnFocus;\n  FieldLayout: FieldLayoutComponent;\n}\n\nexport const FormField = ({ field, FieldLayout, ...rest }: FormFieldProps) => {\n  if (!isMultilineAddressField(field) && isNestedFormField(field)) {\n    return (\n      <NestedFormField {...rest} field={field} FieldLayout={FieldLayout} />\n    );\n  }\n\n  if (isInputField(field)) {\n    return <InputField {...rest} field={field} FieldLayout={FieldLayout} />;\n  }\n\n  if (field.fieldType === 'SUBMIT_BUTTON') {\n    return (\n      <SubmitButtonField {...rest} field={field} FieldLayout={FieldLayout} />\n    );\n  }\n\n  return <ReadOnlyField {...rest} field={field} FieldLayout={FieldLayout} />;\n};\n","import { type Form } from '@wix/ambassador-forms-v4-form/types';\nimport type { ValidationError } from '@wix/form-validator';\nimport React from 'react';\n\nimport {\n  type FieldActions,\n  FieldActionsContext,\n  type FieldActionsContextValue,\n} from '../../../../contexts/field-actions-context';\nimport {\n  FieldValidationContext,\n  type ValidateFields,\n} from '../../../../contexts/field-validation-context';\nimport { FormContext } from '../../../../contexts/form-context';\nimport { FormValuesContext } from '../../../../contexts/form-values-context';\nimport { FormViewContext } from '../../../../contexts/form-view-context';\nimport { type FieldLayoutComponent } from '../../../../field-layout';\nimport { FormFieldsContext } from '../../contexts/form-fields-context';\nimport type {\n  FormView,\n  FormValues,\n  InputElement,\n  OnFieldChange,\n  OnBlur,\n  OnFocus,\n  FormFields,\n} from '../../types';\n\nimport { FormField } from './form-field';\n\nexport interface CreateFormFieldsParams {\n  form: FormView;\n  errors: ValidationError[];\n  values: FormValues;\n  onFieldChange: OnFieldChange;\n  onBlur?: OnBlur;\n  onFocus?: OnFocus;\n  FieldLayout: FieldLayoutComponent;\n  formSchema: Form;\n  validateFields: ValidateFields;\n  fields: FormFields;\n  fieldActions: FieldActionsContextValue<FieldActions>;\n}\n\nexport const createFormFields = ({\n  form,\n  errors,\n  values,\n  onFieldChange,\n  onBlur,\n  onFocus,\n  FieldLayout,\n  formSchema,\n  validateFields,\n  fields,\n  fieldActions,\n}: CreateFormFieldsParams): InputElement[] => {\n  return form.fields\n    .map((formField) => {\n      const component = (\n        <FormContext.Provider value={formSchema}>\n          <FormFieldsContext.Provider value={fields}>\n            <FieldActionsContext.Provider value={fieldActions}>\n              <FieldValidationContext.Provider value={{ validateFields }}>\n                <FormViewContext.Provider value={form}>\n                  <FormValuesContext.Provider value={values}>\n                    <FormField\n                      key={formField.id}\n                      field={formField}\n                      values={values}\n                      errors={errors}\n                      onBlur={onBlur}\n                      onFocus={onFocus}\n                      onFieldChange={onFieldChange}\n                      FieldLayout={FieldLayout}\n                    />\n                  </FormValuesContext.Provider>\n                </FormViewContext.Provider>\n              </FieldValidationContext.Provider>\n            </FieldActionsContext.Provider>\n          </FormFieldsContext.Provider>\n        </FormContext.Provider>\n      );\n\n      return {\n        id: formField.id,\n        fieldType: formField.fieldType,\n        component,\n        layout: formField.layout,\n      };\n    })\n    .filter((item) => !!item) as InputElement[];\n};\n","import { type Form as FormSchema } from '@wix/ambassador-forms-v4-form/types';\nimport type { ValidationError } from '@wix/form-validator';\nimport React from 'react';\n\nimport { useConfig } from '../../../../contexts/config-context';\nimport {\n  type FieldActionsContextValue,\n  type FieldActions,\n} from '../../../../contexts/field-actions-context';\nimport { type ValidateFields } from '../../../../contexts/field-validation-context';\nimport { FormViewContext } from '../../../../contexts/form-view-context';\nimport { UniqueFieldSuffixContextProvider } from '../../../../contexts/unique-field-suffix-context';\nimport { DefaultFieldLayout } from '../../../../field-layout';\nimport {\n  type FormView,\n  type FormValues,\n  type OnFieldChange,\n  type OnBlur,\n  type OnFocus,\n  type FormFields,\n} from '../../types';\nimport { Grid } from '../grid/grid';\n\nimport { createFormFields } from './create-form-fields';\n\nexport interface FormProps {\n  formSchema: FormSchema;\n  form: FormView;\n  values: FormValues;\n  onFieldChange: OnFieldChange;\n  onBlur?: OnBlur;\n  onFocus?: OnFocus;\n  errors: ValidationError[];\n  dataHook?: string;\n  validateFields: ValidateFields;\n  fields: FormFields;\n  fieldActions: FieldActionsContextValue<FieldActions>;\n}\n\nconst FormRoot = ({\n  form,\n  values,\n  onFieldChange,\n  onBlur,\n  onFocus,\n  errors,\n  formSchema,\n  validateFields,\n  fields,\n  fieldActions,\n}: FormProps) => {\n  const { isRTL } = useConfig();\n\n  const formFields = createFormFields({\n    form,\n    values,\n    onFieldChange,\n    onBlur,\n    onFocus,\n    errors,\n    FieldLayout: DefaultFieldLayout,\n    formSchema,\n    validateFields,\n    fields,\n    fieldActions,\n  });\n\n  return <Grid isRTL={isRTL} items={formFields} layout={form.grid} />;\n};\n\nexport const Form = (props: FormProps) => {\n  return (\n    <FormViewContext.Provider value={props.form}>\n      <UniqueFieldSuffixContextProvider parentId={props.form.parentId}>\n        <FormRoot {...props} />\n      </UniqueFieldSuffixContextProvider>\n    </FormViewContext.Provider>\n  );\n};\n","export function mapByField<T>(\n  collection: T[],\n  field: keyof T,\n): Record<string, T> {\n  return collection.reduce((acc, item) => {\n    acc[item[field] as string] = item;\n    return acc;\n  }, {} as Record<string, T>);\n}\n\nexport function mapById<T extends { id?: string }>(\n  collection: T[],\n): Record<string, T> {\n  return mapByField(collection, 'id');\n}\n","import {\n  type Form,\n  type ItemLayout,\n  type FormField,\n} from '@wix/ambassador-forms-v4-form/types';\n\nexport const sortFields = (a: ItemLayout, b: ItemLayout) => {\n  if (\n    typeof a.row !== 'number' ||\n    typeof b.row !== 'number' ||\n    typeof a.column !== 'number' ||\n    typeof b.column !== 'number'\n  ) {\n    return 0;\n  }\n\n  if (a.row > b.row) {\n    return 1;\n  }\n  if (a.row < b.row) {\n    return -1;\n  }\n  if (a.column > b.column) {\n    return 1;\n  }\n  if (a.column < b.column) {\n    return -1;\n  }\n\n  return 0;\n};\n\nexport const getSortedFields = (\n  form?: Form,\n  opts: {\n    filter?: (field?: FormField) => boolean;\n    stepId?: string;\n  } = {},\n): FormField[] => {\n  if (!form) {\n    return [];\n  }\n  const { filter = () => true, stepId } = opts;\n  const allSteps = form.steps || [];\n  const steps = stepId\n    ? allSteps.filter((step) => step.id === stepId)\n    : allSteps;\n\n  return steps\n    .map((step) => [...(step.layout?.large?.items || [])].sort(sortFields))\n    .flat()\n    .reduce<FormField[]>((result, item) => {\n      const field = form.fields?.find(({ id }) => id === item.fieldId);\n      if (!field || !filter(field)) {\n        return result;\n      }\n      result.push(field);\n      return result;\n    }, []);\n};\n",null,null,"import {\n  type Validation,\n  type PropertiesType,\n  type ArrayItems,\n  type ObjectType,\n  type ArrayType,\n  ValidationFormat,\n  Format,\n  type StringType,\n} from '@wix/ambassador-forms-v1-form-template/types';\nimport {\n  type InputField,\n  InputType,\n  type PropertiesType as PropertiesTypeV2,\n  type StringType as StringTypeV2,\n  type ArrayItems as ArrayItemsV2,\n  type ObjectType as ObjectTypeV2,\n  type ArrayType as ArrayTypeV2,\n  Format as FormatV2,\n} from '@wix/ambassador-forms-v2-form-template/types';\nimport { type FieldsInputField as PlatformizedInputField } from '@wix/ambassador-forms-v4-form/types';\n\nexport function makeValidationOfInputField(\n  inputOptions: InputField | PlatformizedInputField,\n): Validation {\n  return {\n    required: inputOptions.required,\n    ...makeValidationByType(inputOptions),\n  };\n}\n\nexport function makeValidationByType(\n  inputOptions: InputField | PlatformizedInputField,\n): Validation {\n  switch (inputOptions.inputType) {\n    case InputType.STRING:\n      return {\n        string: transformStringType(inputOptions.stringOptions!.validation),\n      };\n    case InputType.NUMBER:\n      return {\n        number: inputOptions.numberOptions!.validation,\n      };\n    case InputType.BOOLEAN:\n      return {\n        boolean: inputOptions.booleanOptions!.validation,\n      };\n    case InputType.ARRAY:\n      const arrayType: ArrayTypeV2 = inputOptions.arrayOptions!.validation!;\n      return {\n        array: transformArrayType(arrayType),\n      };\n    case InputType.OBJECT:\n      const objectType: ObjectTypeV2 = inputOptions.objectOptions!.validation!;\n      return {\n        object: transformObjectType(objectType),\n      };\n    case InputType.PAYMENT:\n      return {\n        predefined: {\n          format: ValidationFormat.PAYMENT,\n          paymentOptions: inputOptions.paymentOptions!.validation,\n        },\n      };\n    case InputType.WIX_FILE:\n      return {\n        predefined: {\n          format: ValidationFormat.WIX_FILE,\n        },\n      };\n    case InputType.ADDRESS:\n      return {\n        predefined: {\n          format: ValidationFormat.MULTILINE_ADDRESS,\n          multilineAddressOptions: inputOptions.addressOptions!.validation,\n        },\n      };\n    case InputType.MULTILINE_ADDRESS:\n      return {\n        predefined: {\n          format: ValidationFormat.MULTILINE_ADDRESS,\n          multilineAddressOptions:\n            inputOptions.multilineAddressOptions!.validation,\n        },\n      };\n    case InputType.SCHEDULING:\n      return {\n        predefined: {\n          format: ValidationFormat.SCHEDULING,\n        },\n      };\n    case InputType.OBJECT_ARRAY:\n      return {\n        predefined: {\n          format: ValidationFormat.OBJECT_ARRAY,\n          objectArrayOptions: inputOptions.objectArrayOptions!.validation,\n        },\n      };\n    default:\n      throw new Error(`Unknown input type ${inputOptions.inputType}`);\n  }\n}\n\nfunction transformArrayType(arrayType: ArrayTypeV2): ArrayType {\n  return {\n    maxItems: arrayType.maxItems,\n    minItems: arrayType.minItems,\n    items: transformArrayItems(arrayType.items!),\n  };\n}\n\nfunction transformPropertiesType(\n  propertiesV2: PropertiesTypeV2,\n): PropertiesType {\n  return {\n    string: transformStringType(propertiesV2.stringOptions),\n    number: propertiesV2.numberOptions,\n    boolean: propertiesV2.booleanOptions,\n    ...(propertiesV2.arrayOptions && {\n      array: transformArrayType(propertiesV2.arrayOptions),\n    }),\n    required: propertiesV2.required,\n  };\n}\n\nfunction transformArrayItems(items: ArrayItemsV2): ArrayItems {\n  return {\n    string: transformStringType(items.stringOptions),\n    number: items.numberOptions,\n    boolean: items.booleanOptions,\n    object: transformObjectType(items.objectOptions),\n  };\n}\n\nfunction transformObjectType(\n  objectType?: ObjectTypeV2,\n): ObjectType | undefined {\n  if (objectType) {\n    return {\n      properties: Object.entries(objectType.properties!).reduce(\n        (acc, [key, value]) => {\n          acc[key] = transformPropertiesType(value);\n          return acc;\n        },\n        {} as { [key: string]: PropertiesType },\n      ),\n    };\n  }\n  return undefined;\n}\n\nfunction transformStringType(stringTypeV2?: StringTypeV2): StringType {\n  return {\n    ...stringTypeV2,\n    format: transformStringFormat(stringTypeV2?.format),\n  };\n}\n\nfunction transformStringFormat(formatV2?: FormatV2): Format {\n  switch (formatV2) {\n    case FormatV2.UNKNOWN_FORMAT:\n      return Format.UNDEFINED;\n    default:\n      return formatV2 as unknown as Format;\n  }\n}\n","import { type DisplayField } from '@wix/ambassador-forms-v2-form-template/types';\nimport { type FieldsDisplayField as PlatformizedDisplayField } from '@wix/ambassador-forms-v4-form/types';\n\nconst ContentKey = 'content';\nconst MaxShownParagraphsKey = 'maxShownParagraphs';\n\nexport function makeViewOfDisplayProperties(\n  displayField: DisplayField | PlatformizedDisplayField,\n): object {\n  if (displayField.richContentOptions) {\n    return {\n      [ContentKey]: displayField.richContentOptions?.richContent,\n      [MaxShownParagraphsKey]:\n        displayField.richContentOptions?.maxShownParagraphs,\n    };\n  }\n  const pageNavigation = displayField.pageNavigationOptions;\n  if (pageNavigation) {\n    return {\n      ...(pageNavigation.submitText\n        ? { submitText: pageNavigation.submitText }\n        : {}),\n      ...(pageNavigation.nextPageText\n        ? { nextText: pageNavigation.nextPageText }\n        : {}),\n      ...(pageNavigation.previousPageText\n        ? { previousText: pageNavigation.previousPageText }\n        : {}),\n    };\n  }\n  return {};\n}\n","import {\n  AlignmentEnumAlignment,\n  type _Array,\n  type _Boolean,\n  type _Number,\n  type _String,\n  type Address,\n  AddressComponentType,\n  type Appointment,\n  BooleanComponentType,\n  type Checkbox,\n  type CheckboxGroup,\n  ComponentType,\n  type DateInput,\n  type DatePicker,\n  type DateTimeInput,\n  type DonationInput,\n  type Dropdown,\n  type FileType,\n  type FileUpload,\n  ImageFit,\n  ImagePosition,\n  type InPersonOptions,\n  type InputField,\n  type Password,\n  InputType,\n  type MultilineAddress,\n  NumberComponentType,\n  type NumberInput,\n  NumberOfColumns,\n  type Payment,\n  PaymentComponentType,\n  type PaymentInput,\n  type FixedPayment,\n  type PhoneInput,\n  type PhoneOptions,\n  type ProductCheckboxGroup,\n  type RadioGroup,\n  type RadioGroupOption,\n  type RatingInput,\n  type Scheduling,\n  SchedulingComponentType,\n  StaffStrategySelection,\n  type ServicesDropdown,\n  type Signature,\n  StringComponentType,\n  type Tags,\n  type TextInput,\n  type TimeInput,\n  UploadFileFormat,\n  type VideoConferenceOptions,\n  type WixFile,\n  WixFileComponentType,\n  ObjectArrayComponentType,\n  type ObjectArray,\n  type Option,\n  type Repeater,\n  type PaymentType,\n  PriceType,\n} from '@wix/ambassador-forms-v2-form-template/types';\nimport { type FieldsInputField as PlatformizedInputField } from '@wix/ambassador-forms-v4-form/types';\n\nimport { transformFieldToV1 } from './transform-field-to-v1';\n\nconst idKey = 'id';\nconst LabelKey = 'label';\nconst PlaceholderKey = 'placeholder';\nconst DescriptionKey = 'description';\nconst HideLabelKey = 'hideLabel';\nconst ShowDateLabelsKey = 'showDateLabels';\nconst HidePlaceholderKey = 'hidePlaceholder';\nconst Use24HourFormatKey = 'use24HourFormat';\nconst AddOtherKey = 'addOther';\nconst AddOtherLabelKey = 'addOtherLabel';\nconst NumberOfColumnsKey = 'numberOfColumns';\nconst AddOtherPlaceholderKey = 'addOtherPlaceholder';\nconst DefaultValueKey = 'defaultValue';\nconst ValueKey = 'value';\nconst OptionsKey = 'options';\nconst ButtonTextKey = 'buttonText';\nconst ValueSliderLimitKey = 'valueSliderLimit';\nconst UploadFileFormatsKey = 'uploadFileFormats';\nconst ExplanationTextKey = 'explanationText';\nconst MediaKey = 'media';\nconst MediaSettingsKey = 'mediaSettings';\nconst UploadEnabledKey = 'uploadEnabled';\nconst FirstDayOfWeekKey = 'firstDayOfWeek';\nconst DefaultCountryCodeKey = 'defaultCountry';\nconst ImageResizeKey = 'imageResize';\nconst ChoiceImageResizeKey = 'choiceImageResize';\nconst ShowFlagKey = 'showFlag';\nconst NameKey = 'name';\nconst DurationKey = 'duration';\nconst StaffIdsKey = 'staffIds';\nconst ManualApprovalRequiredKey = 'manualApprovalRequired';\nconst FormatKey = 'format';\nconst FormatDescriptionTypeKey = 'formatDescriptionType';\nconst LocationTypeKey = 'locationType';\nconst FormatDescriptionKey = 'formatDescription';\nconst LocationIdsKey = 'locationIds';\nconst MeetingTypeKey = 'meetingType';\nconst StaffStrategySelectionKey = 'staffStrategySelection';\nconst RepeaterFieldsKey = 'fields';\nconst RepeaterLayoutKey = 'layout';\nconst ScoreKey = 'score';\nconst CorrectAnswersKey = 'correctAnswers';\n\nexport function makeViewOfInputField(\n  inputOptions: InputField | PlatformizedInputField,\n): object {\n  switch (inputOptions.inputType) {\n    case InputType.STRING:\n      return resolveStringComponent(inputOptions.stringOptions!);\n    case InputType.NUMBER:\n      return resolveNumberComponent(inputOptions.numberOptions!);\n    case InputType.BOOLEAN:\n      return resolveBooleanComponent(inputOptions.booleanOptions!);\n    case InputType.ARRAY:\n      return resolveArrayComponent(inputOptions.arrayOptions!);\n    case InputType.PAYMENT:\n      return resolvePaymentComponent(inputOptions.paymentOptions!);\n    case InputType.WIX_FILE:\n      return resolveWixFileComponent(inputOptions.wixFileOptions!);\n    case InputType.ADDRESS:\n      return resolveMultilineAddressComponent(inputOptions.addressOptions!);\n    case InputType.MULTILINE_ADDRESS:\n      return resolveMultilineAddressComponent(\n        inputOptions.multilineAddressOptions!,\n      );\n    case InputType.SCHEDULING:\n      return resolveSchedulingComponent(inputOptions.schedulingOptions!);\n    case InputType.OBJECT_ARRAY:\n      return resolveObjectArrayComponent(inputOptions.objectArrayOptions!);\n    default:\n      throw new Error(`Unknown input type ${inputOptions.inputType}`);\n  }\n}\n\nfunction resolveWixFileComponent(wixFileComponent: WixFile): object {\n  switch (wixFileComponent.componentType) {\n    case WixFileComponentType.FILE_UPLOAD:\n      return takeWixFileInputViewProperties(\n        wixFileComponent.fileUploadOptions!,\n        wixFileComponent.validation!,\n      );\n    case WixFileComponentType.SIGNATURE:\n      return takeSignatureInputViewProperties(\n        wixFileComponent.signatureOptions!,\n      );\n    default:\n      throw new Error(\n        `Unknown wix file component type: ${wixFileComponent.componentType}`,\n      );\n  }\n}\n\nfunction takeWixFileInputViewProperties(\n  fileUpload: FileUpload,\n  validation: FileType,\n): object {\n  const fileFormats = (validation.uploadFileFormats ?? []).map(\n    (format: string) => {\n      switch (format) {\n        case UploadFileFormat.VIDEO:\n          return 'Video';\n        case UploadFileFormat.IMAGE:\n          return 'Image';\n        case UploadFileFormat.AUDIO:\n          return 'Audio';\n        case UploadFileFormat.DOCUMENT:\n          return 'Document';\n        case UploadFileFormat.ARCHIVE:\n          return 'Archive';\n        case UploadFileFormat.MODEL_3D:\n          return 'Model3D';\n        default:\n          throw new Error(`Unknown file format: ${format}`);\n      }\n    },\n  );\n\n  return {\n    [HideLabelKey]: !fileUpload.showLabel,\n    [UploadFileFormatsKey]: fileFormats,\n    [ValueSliderLimitKey]: validation.fileLimit,\n    ...(fileUpload.description && { [DescriptionKey]: fileUpload.description }),\n    ...(fileUpload.label && { [LabelKey]: fileUpload.label }),\n    ...(fileUpload.buttonText && { [ButtonTextKey]: fileUpload.buttonText }),\n    ...(fileUpload.explanationText && {\n      [ExplanationTextKey]: fileUpload.explanationText,\n    }),\n  };\n}\n\nfunction takeSignatureInputViewProperties(signature: Signature): object {\n  return {\n    [UploadEnabledKey]: signature.imageUploadEnabled,\n    [HideLabelKey]: !signature.showLabel,\n    ...(signature.label && { [LabelKey]: signature.label }),\n    ...(signature.description && { [DescriptionKey]: signature.description }),\n  };\n}\n\nfunction resolveArrayComponent(arrayComponent: _Array): object {\n  const quizSettings = resolveQuizFieldSettings(\n    arrayComponent.quizFieldSettings,\n  );\n  switch (arrayComponent.componentType) {\n    case ComponentType.CHECKBOX_GROUP:\n    case 'IMAGE_CHOICE' as any:\n      return {\n        ...takeCheckboxGroupViewProperties(\n          arrayComponent.checkboxGroupOptions!,\n        ),\n        ...quizSettings,\n      };\n    case ComponentType.SERVICES_CHECKBOX_GROUP:\n      return {\n        ...takeCheckboxGroupViewProperties(\n          arrayComponent.servicesCheckboxGroupOptions!,\n        ),\n        ...quizSettings,\n      };\n    case ComponentType.TAGS:\n      return {\n        ...takeTagsViewProperties(arrayComponent.tagsOptions!),\n        ...quizSettings,\n      };\n    default:\n      throw new Error(\n        `Unknown array component type: ${arrayComponent.componentType}`,\n      );\n  }\n}\n\nfunction takeCheckboxGroupViewProperties(checkboxGroup: CheckboxGroup): object {\n  return {\n    [HideLabelKey]: !checkboxGroup.showLabel,\n    [AddOtherKey]: !!checkboxGroup.customOption,\n    [OptionsKey]: checkboxGroup.options!.map((option) =>\n      makeMediaOptionView(option),\n    ),\n    [NumberOfColumnsKey]: numericNumberOfColumns(\n      checkboxGroup.numberOfColumns ?? NumberOfColumns.ONE,\n    ),\n    [DefaultValueKey]: checkboxGroup\n      .options!.filter((option) => option.default)\n      .map((option) => option.value),\n    ...(checkboxGroup.description && {\n      [DescriptionKey]: checkboxGroup.description,\n    }),\n    ...(checkboxGroup.label && { [LabelKey]: checkboxGroup.label }),\n    ...(checkboxGroup.customOption && {\n      [AddOtherLabelKey]: checkboxGroup.customOption.label,\n      [AddOtherPlaceholderKey]: checkboxGroup.customOption.placeholder,\n    }),\n    ...(checkboxGroup.mediaSettings?.imageFit && {\n      [ChoiceImageResizeKey]:\n        checkboxGroup.mediaSettings.imageFit === ImageFit.CONTAIN\n          ? 'contain'\n          : 'cover',\n    }),\n  };\n}\n\nfunction takeTagsViewProperties(tags: Tags): object {\n  return {\n    [HideLabelKey]: !tags.showLabel,\n    [AddOtherKey]: !!tags.customOption,\n    [OptionsKey]: tags.options!.map((option) => makeOptionView(option)),\n    [NumberOfColumnsKey]: numericNumberOfColumns(\n      tags.numberOfColumns ?? NumberOfColumns.ONE,\n    ),\n    [DefaultValueKey]: tags\n      .options!.filter((option) => option.default)\n      .map((option) => option.value),\n    ...(tags.description && { [DescriptionKey]: tags.description }),\n    ...(tags.label && { [LabelKey]: tags.label }),\n    ...(tags.customOption && {\n      [AddOtherLabelKey]: tags.customOption.label,\n      [AddOtherPlaceholderKey]: tags.customOption.placeholder,\n    }),\n  };\n}\n\nfunction makePaymentDefaultValue(\n  options: { value?: string; default?: boolean }[],\n  paymentValidation?: PaymentType,\n) {\n  const products = paymentValidation?.products ?? [];\n  const result = options\n    .filter((option) => option.default)\n    .map((option) => {\n      const product = products.find((p) => p.id === option.value);\n      const price =\n        product?.priceType === PriceType.FIXED_PRICE\n          ? product.fixedPriceOptions?.price\n          : '0';\n      return {\n        productId: option.value,\n        price: price ?? '0',\n        quantity: 1,\n      };\n    });\n  return result.length > 0 ? result : undefined;\n}\n\nfunction takeProductCheckboxGroupViewProperties(\n  checkboxGroup: ProductCheckboxGroup,\n  paymentValidation?: PaymentType,\n): object {\n  const defaultValue = makePaymentDefaultValue(\n    checkboxGroup.options!,\n    paymentValidation,\n  );\n  return {\n    [HideLabelKey]: !checkboxGroup.showLabel,\n    [ImageResizeKey]:\n      checkboxGroup.imageFit === ImageFit.CONTAIN ? 'FIT' : 'CROP',\n    [OptionsKey]: checkboxGroup.options!.map((option) =>\n      makeOptionView(option),\n    ),\n    ...(defaultValue && { [DefaultValueKey]: defaultValue }),\n    ...(checkboxGroup.description && {\n      [DescriptionKey]: checkboxGroup.description,\n    }),\n    ...(checkboxGroup.label && { [LabelKey]: checkboxGroup.label }),\n  };\n}\n\nfunction resolveBooleanComponent(booleanComponent: _Boolean): object {\n  switch (booleanComponent.componentType) {\n    case BooleanComponentType.CHECKBOX:\n      return takeCheckBoxInputViewProperties(booleanComponent.checkboxOptions!);\n    default:\n      throw new Error(\n        `Unknown boolean component type: ${booleanComponent.componentType}`,\n      );\n  }\n}\n\nfunction takeCheckBoxInputViewProperties(checkBox: Checkbox): object {\n  return {\n    ...(checkBox.label ? { [LabelKey]: checkBox.label } : {}),\n    defaultValue: checkBox.checked,\n  };\n}\n\nfunction resolveNumberComponent(numberComponent: _Number): object {\n  const quizSettings = resolveQuizFieldSettings(\n    numberComponent.quizFieldSettings,\n  );\n  switch (numberComponent.componentType) {\n    case NumberComponentType.NUMBER_INPUT:\n      return {\n        ...takeNumberInputViewProperties(numberComponent.numberInputOptions!),\n        ...quizSettings,\n      };\n    case NumberComponentType.RATING_INPUT:\n      return {\n        ...takeRatingInputViewProperties(numberComponent.ratingInputOptions!),\n        ...quizSettings,\n      };\n    default:\n      throw new Error(\n        `Unknown number component type: ${numberComponent.componentType}`,\n      );\n  }\n}\n\nfunction takeNumberInputViewProperties(numberInput: NumberInput): object {\n  const media = toViewLabelMedia(numberInput.media);\n  const mediaSettings = toViewLabelMediaSettings(numberInput.mediaSettings);\n\n  return {\n    [HideLabelKey]: !numberInput.showLabel,\n    ...(numberInput.description && {\n      [DescriptionKey]: numberInput.description,\n    }),\n    ...(numberInput.label && { [LabelKey]: numberInput.label }),\n    ...(numberInput.placeholder && {\n      [PlaceholderKey]: numberInput.placeholder,\n    }),\n    ...(typeof numberInput.default === 'number' && {\n      [DefaultValueKey]: numberInput.default,\n    }),\n    ...(media && { [MediaKey]: media }),\n    ...(mediaSettings && { [MediaSettingsKey]: mediaSettings }),\n  };\n}\n\nfunction takeRatingInputViewProperties(ratingInput: RatingInput): object {\n  return {\n    [HideLabelKey]: !ratingInput.showLabel,\n    ...(ratingInput.defaultValue && {\n      [DefaultValueKey]: ratingInput.defaultValue,\n    }),\n    ...(ratingInput.description && {\n      [DescriptionKey]: ratingInput.description,\n    }),\n    ...(ratingInput.label && { [LabelKey]: ratingInput.label }),\n  };\n}\n\nfunction resolveStringComponent(stringComponent: _String): object {\n  const quizSettings = resolveQuizFieldSettings(\n    stringComponent.quizFieldSettings,\n  );\n  switch (stringComponent.componentType) {\n    case StringComponentType.TEXT_INPUT:\n      return {\n        ...takeTextInputViewProperties(stringComponent.textInputOptions!),\n        ...quizSettings,\n      };\n    case StringComponentType.PASSWORD:\n      return {\n        ...takePasswordViewProperties(stringComponent.passwordOptions!),\n        ...quizSettings,\n      };\n    case StringComponentType.RADIO_GROUP:\n      return {\n        ...takeRadioGroupViewProperties(stringComponent.radioGroupOptions!),\n        ...quizSettings,\n      };\n    case StringComponentType.DROPDOWN:\n      return {\n        ...takeDropdownViewProperties(stringComponent.dropdownOptions!),\n        ...quizSettings,\n      };\n    case StringComponentType.DATE_TIME:\n      return {\n        ...takeDateTimeViewProperties(stringComponent.dateTimeOptions!),\n        ...quizSettings,\n      };\n    case StringComponentType.DATE_INPUT:\n      return {\n        ...takeDateInputViewProperties(stringComponent.dateInputOptions!),\n        ...quizSettings,\n      };\n    case StringComponentType.TIME_INPUT:\n      return {\n        ...takeTimeInputViewProperties(stringComponent.timeInputOptions!),\n        ...quizSettings,\n      };\n    case StringComponentType.DATE_PICKER:\n      return {\n        ...takeDatePickerViewProperties(stringComponent.datePickerOptions!),\n        ...quizSettings,\n      };\n    case StringComponentType.PHONE_INPUT:\n      return {\n        ...takePhoneInputViewProperties(stringComponent.phoneInputOptions!),\n        ...quizSettings,\n      };\n    case StringComponentType.SERVICES_DROPDOWN:\n      return {\n        ...takeServiceDropdownViewProperties(\n          stringComponent.servicesDropdownOptions!,\n        ),\n        ...quizSettings,\n      };\n    default:\n      throw new Error(\n        `Unknown string component type: ${stringComponent.componentType}`,\n      );\n  }\n}\n\nfunction takeTextInputViewProperties(textInput: TextInput): object {\n  const media = toViewLabelMedia(textInput.media);\n  const mediaSettings = toViewLabelMediaSettings(textInput.mediaSettings);\n\n  return {\n    [HideLabelKey]: !textInput.showLabel,\n    ...(textInput.description && { [DescriptionKey]: textInput.description }),\n    ...(textInput.label && { [LabelKey]: textInput.label }),\n    ...(textInput.placeholder && { [PlaceholderKey]: textInput.placeholder }),\n    ...(textInput.default && { [DefaultValueKey]: textInput.default }),\n    ...(media && { [MediaKey]: media }),\n    ...(mediaSettings && { [MediaSettingsKey]: mediaSettings }),\n  };\n}\n\nfunction toViewLabelMedia(media?: TextInput['media'] | NumberInput['media']) {\n  return media?.image;\n}\n\nfunction toViewLabelMediaSettings(\n  mediaSettings?: TextInput['mediaSettings'] | NumberInput['mediaSettings'],\n) {\n  if (!mediaSettings) {\n    return undefined;\n  }\n\n  return {\n    ...(mediaSettings.imagePosition && {\n      imagePosition:\n        mediaSettings.imagePosition === ImagePosition.BELOW\n          ? ImagePosition.BELOW\n          : ImagePosition.ABOVE,\n    }),\n    ...(mediaSettings.imageFit && {\n      imageFit:\n        mediaSettings.imageFit === ImageFit.CONTAIN ? 'contain' : 'cover',\n    }),\n    ...(mediaSettings.imageAlignment && {\n      imageAlignment:\n        mediaSettings.imageAlignment === AlignmentEnumAlignment.LEFT\n          ? 'left'\n          : mediaSettings.imageAlignment === AlignmentEnumAlignment.RIGHT\n          ? 'right'\n          : 'center',\n    }),\n  };\n}\n\nfunction takePasswordViewProperties(password: Password): object {\n  return {\n    [HideLabelKey]: !password.showLabel,\n    ...(password.description && { [DescriptionKey]: password.description }),\n    ...(password.label && { [LabelKey]: password.label }),\n    ...(password.placeholder && { [PlaceholderKey]: password.placeholder }),\n    ...(password.default && { [DefaultValueKey]: password.default }),\n  };\n}\n\nfunction takeRadioGroupViewProperties(radioGroup: RadioGroup): object {\n  const options: RadioGroupOption[] = radioGroup.options ?? [];\n  return {\n    [HideLabelKey]: !radioGroup.showLabel,\n    [AddOtherKey]: !!radioGroup.customOption,\n    [NumberOfColumnsKey]: numericNumberOfColumns(\n      radioGroup.numberOfColumns ?? NumberOfColumns.ONE,\n    ),\n    [OptionsKey]: options.map((option) => makeOptionView(option)),\n    ...(radioGroup.description && { [DescriptionKey]: radioGroup.description }),\n    ...(radioGroup.label && { [LabelKey]: radioGroup.label }),\n    ...(radioGroup.customOption && {\n      [AddOtherLabelKey]: radioGroup.customOption.label,\n      [AddOtherPlaceholderKey]: radioGroup.customOption.placeholder,\n    }),\n    ...(options.find((option) => option.default) && {\n      [DefaultValueKey]: options.find((option) => option.default)?.value,\n    }),\n  };\n}\n\nfunction takeDropdownViewProperties(dropdown: Dropdown): object {\n  const options = dropdown.options ?? [];\n  return {\n    [HideLabelKey]: !dropdown.showLabel,\n    [AddOtherKey]: !!dropdown.customOption,\n    [OptionsKey]: options.map((option) => makeOptionView(option)),\n    ...(dropdown.description && { [DescriptionKey]: dropdown.description }),\n    ...(dropdown.label && { [LabelKey]: dropdown.label }),\n    ...(dropdown.placeholder && { [PlaceholderKey]: dropdown.placeholder }),\n    ...(dropdown.customOption && {\n      [AddOtherLabelKey]: dropdown.customOption.label,\n      [AddOtherPlaceholderKey]: dropdown.customOption.placeholder,\n    }),\n    ...(options.find((option) => option.default) && {\n      [DefaultValueKey]: options.find((option) => option.default)?.value,\n    }),\n  };\n}\n\nfunction takeDateTimeViewProperties(dateTimeInput: DateTimeInput): object {\n  return {\n    [HideLabelKey]: !dateTimeInput.showLabel,\n    [ShowDateLabelsKey]: dateTimeInput.showDateLabels,\n    [HidePlaceholderKey]: !dateTimeInput.showPlaceholder,\n    ...(dateTimeInput.description && {\n      [DescriptionKey]: dateTimeInput.description,\n    }),\n    ...(dateTimeInput.label && { [LabelKey]: dateTimeInput.label }),\n    ...(dateTimeInput.default && {\n      [DefaultValueKey]: dateTimeInput.default,\n    }),\n    [Use24HourFormatKey]: dateTimeInput?.use24HourFormat,\n  };\n}\n\nfunction takeDateInputViewProperties(dateInput: DateInput): object {\n  return {\n    [HideLabelKey]: !dateInput.showLabel,\n    [ShowDateLabelsKey]: dateInput.showDateLabels,\n    [HidePlaceholderKey]: !dateInput.showPlaceholder,\n    ...(dateInput.description && {\n      [DescriptionKey]: dateInput.description,\n    }),\n    ...(dateInput.label && { [LabelKey]: dateInput.label }),\n    ...(dateInput.default && {\n      [DefaultValueKey]: dateInput.default,\n    }),\n  };\n}\n\nfunction takeTimeInputViewProperties(timeInput: TimeInput): object {\n  return {\n    [HideLabelKey]: !timeInput.showLabel,\n    [HidePlaceholderKey]: !timeInput.showPlaceholder,\n    ...(timeInput.description && {\n      [DescriptionKey]: timeInput.description,\n    }),\n    ...(timeInput.label && { [LabelKey]: timeInput.label }),\n    ...(timeInput.default && { [DefaultValueKey]: timeInput.default }),\n    [Use24HourFormatKey]: timeInput.use24HourFormat,\n  };\n}\n\nfunction takeDatePickerViewProperties(datePicker: DatePicker): object {\n  return {\n    [HideLabelKey]: !datePicker.showLabel,\n    ...(datePicker.placeholder && { [PlaceholderKey]: datePicker.placeholder }),\n    ...(datePicker.description && {\n      [DescriptionKey]: datePicker.description,\n    }),\n    ...(datePicker.label && { [LabelKey]: datePicker.label }),\n    ...(datePicker.default && { [DefaultValueKey]: datePicker.default }),\n    [FirstDayOfWeekKey]: datePicker?.firstDayOfWeek,\n  };\n}\n\nfunction takePhoneInputViewProperties(phoneInput: PhoneInput): object {\n  return {\n    [HideLabelKey]: !phoneInput.showLabel,\n    ...(phoneInput.label && { [LabelKey]: phoneInput.label }),\n    ...(phoneInput.placeholder && { [PlaceholderKey]: phoneInput.placeholder }),\n    ...(phoneInput.description && { [DescriptionKey]: phoneInput.description }),\n    ...(phoneInput.defaultCountryCode && {\n      [DefaultCountryCodeKey]: phoneInput.defaultCountryCode,\n    }),\n    [ShowFlagKey]: phoneInput.showCountryFlag,\n  };\n}\n\nfunction takeServiceDropdownViewProperties(\n  servicesDropdownOptions: ServicesDropdown,\n): object {\n  const options = servicesDropdownOptions.options ?? [];\n  return {\n    [HideLabelKey]: !servicesDropdownOptions.showLabel,\n    [AddOtherKey]: !!servicesDropdownOptions.customOption,\n    [OptionsKey]: options.map((option) => makeOptionView(option)),\n    ...(servicesDropdownOptions.label && {\n      [LabelKey]: servicesDropdownOptions.label,\n    }),\n    ...(servicesDropdownOptions.placeholder && {\n      [PlaceholderKey]: servicesDropdownOptions.placeholder,\n    }),\n    ...(servicesDropdownOptions.customOption && {\n      [AddOtherLabelKey]: servicesDropdownOptions.customOption.label,\n      [AddOtherPlaceholderKey]:\n        servicesDropdownOptions.customOption.placeholder,\n    }),\n  };\n}\n\nfunction resolvePaymentComponent(paymentComponent: Payment): object {\n  switch (paymentComponent.componentType) {\n    case PaymentComponentType.CHECKBOX_GROUP:\n      return takeProductCheckboxGroupViewProperties(\n        paymentComponent.checkboxGroupOptions!,\n        paymentComponent.validation,\n      );\n    case PaymentComponentType.DONATION_INPUT:\n      return takeDonationsInputViewProperties(\n        paymentComponent.donationInputOptions!,\n        paymentComponent.validation,\n      );\n    case PaymentComponentType.FIXED_PAYMENT:\n      return takeFixedPaymentViewProperties(\n        paymentComponent.fixedPaymentOptions!,\n      );\n    case PaymentComponentType.PAYMENT_INPUT:\n      return takePaymentInputViewProperties(\n        paymentComponent.paymentInputOptions!,\n      );\n    default:\n      throw new Error(\n        `Unknown payment component type: ${paymentComponent.componentType}`,\n      );\n  }\n}\n\nfunction resolveMultilineAddressComponent(multilineAddress: Address): object {\n  switch (multilineAddress.componentType) {\n    case AddressComponentType.MULTILINE_ADDRESS:\n      return takeMultilineAddressViewProperties(\n        multilineAddress.multilineAddressOptions!,\n      );\n    default:\n      throw new Error(\n        `Unknown multiline address component type: ${multilineAddress.componentType}`,\n      );\n  }\n}\n\nfunction resolveSchedulingComponent(schedulingOptions: Scheduling): object {\n  switch (schedulingOptions.componentType) {\n    case SchedulingComponentType.APPOINTMENT:\n      return takeAppointmentViewProperties(\n        schedulingOptions.appointmentOptions!,\n      );\n    default:\n      throw new Error(\n        `Unknown scheduling component type: ${schedulingOptions.componentType}`,\n      );\n  }\n}\n\nfunction takeMultilineAddressViewProperties(\n  multilineAddress: MultilineAddress,\n): object {\n  const { showLabel, ...multilineAddressView } = multilineAddress;\n  return { ...multilineAddressView, hideLabel: !showLabel };\n}\n\nconst staffStrategyV2toV1: Record<string, string> = {\n  [StaffStrategySelection.AUTOMATIC]: 'AUTOMATIC',\n  [StaffStrategySelection.HIGH_TO_LOW_PRIORITY]: 'PRIORITY_HIGH_TO_LOW',\n  [StaffStrategySelection.LOW_TO_HIGH_PRIORITY]: 'PRIORITY_LOW_TO_HIGH',\n};\n\nfunction takeAppointmentViewProperties(\n  appointmentOptions: Appointment,\n): object {\n  const {\n    label,\n    name,\n    durationInMinutes,\n    manualApprovalRequired,\n    staffIds,\n    format,\n    description,\n    showLabel,\n    meetingType,\n    staffStrategySelection,\n    phoneOptions,\n    videoConferenceOptions,\n    inPersonOptions,\n  } = appointmentOptions;\n  return {\n    ...(label && { [LabelKey]: label }),\n    ...(name && { [NameKey]: name }),\n    ...(durationInMinutes && { [DurationKey]: durationInMinutes }),\n    ...(manualApprovalRequired !== undefined && {\n      [ManualApprovalRequiredKey]: manualApprovalRequired,\n    }),\n    ...(description && { [DescriptionKey]: description }),\n    ...(showLabel !== undefined && { [HideLabelKey]: !showLabel }),\n    [FormatKey]: format,\n    [FormatDescriptionTypeKey]: format,\n    [StaffIdsKey]: staffIds,\n    ...(meetingType && { [MeetingTypeKey]: meetingType }),\n    ...(staffStrategySelection && {\n      [StaffStrategySelectionKey]:\n        staffStrategyV2toV1[staffStrategySelection] ?? staffStrategySelection,\n    }),\n    ...transformFormatInfoToView(\n      inPersonOptions,\n      videoConferenceOptions,\n      phoneOptions,\n    ),\n  };\n}\n\nfunction transformFormatInfoToView(\n  inPersonOptions?: InPersonOptions,\n  videoConferenceOptions?: VideoConferenceOptions,\n  phoneOptions?: PhoneOptions,\n): object {\n  if (phoneOptions?.description) {\n    return { [FormatDescriptionKey]: phoneOptions.description };\n  }\n  if (videoConferenceOptions?.description) {\n    return { [FormatDescriptionKey]: videoConferenceOptions.description };\n  }\n  if (inPersonOptions) {\n    const { locations } = inPersonOptions;\n    const customLocation = (locations ?? []).find((loc) => loc.customAddress);\n    if (customLocation) {\n      return {\n        [FormatDescriptionKey]: customLocation.customAddress,\n        [LocationTypeKey]: 'CUSTOM_LOCATION',\n      };\n    }\n    const businessIds = (locations ?? [])\n      .map((loc) => loc.businessLocationId)\n      .filter(Boolean);\n    if (businessIds.length > 0) {\n      return {\n        [LocationIdsKey]: businessIds,\n        [LocationTypeKey]: 'OS_LOCATION',\n      };\n    }\n  }\n  return {};\n}\n\nfunction takeDonationsInputViewProperties(\n  donationInput: DonationInput,\n  paymentValidation?: PaymentType,\n): object {\n  const options = donationInput.options ?? [];\n  const defaultValue = makePaymentDefaultValue(options, paymentValidation);\n  return {\n    [HideLabelKey]: !donationInput.showLabel,\n    [AddOtherKey]: !!donationInput.customOption,\n    [NumberOfColumnsKey]: numericNumberOfColumns(\n      donationInput.numberOfColumns ?? NumberOfColumns.ONE,\n    ),\n    [OptionsKey]: options.map((option) => makeOptionView(option)),\n    ...(donationInput.description && {\n      [DescriptionKey]: donationInput.description,\n    }),\n    ...(donationInput.label && { [LabelKey]: donationInput.label }),\n    ...(donationInput.customOption && {\n      [AddOtherLabelKey]: donationInput.customOption.label,\n      [AddOtherPlaceholderKey]: donationInput.customOption.placeholder,\n    }),\n    ...(defaultValue && { [DefaultValueKey]: defaultValue }),\n  };\n}\n\nfunction takeFixedPaymentViewProperties(fixedPayment: FixedPayment): object {\n  return {\n    [HideLabelKey]: !fixedPayment.showLabel,\n    ...(fixedPayment.label && { [LabelKey]: fixedPayment.label }),\n    ...(fixedPayment.description && {\n      [DescriptionKey]: fixedPayment.description,\n    }),\n  };\n}\n\nfunction takePaymentInputViewProperties(paymentInput: PaymentInput): object {\n  return {\n    [HideLabelKey]: !paymentInput.showLabel,\n    ...(paymentInput.label && { [LabelKey]: paymentInput.label }),\n    ...(paymentInput.description && {\n      [DescriptionKey]: paymentInput.description,\n    }),\n    ...(paymentInput.placeholder && {\n      [PlaceholderKey]: paymentInput.placeholder,\n    }),\n    ...(typeof paymentInput.default === 'number' && {\n      [DefaultValueKey]: paymentInput.default,\n    }),\n  };\n}\n\nfunction makeOptionView(option: Option): Record<string, any> {\n  return {\n    [LabelKey]: option.label,\n    [ValueKey]: option.value,\n    [idKey]: option.id,\n    ...(option.media && { [MediaKey]: option.media }),\n    ...(option.showLabel === false && { isLabelHidden: true }),\n  };\n}\n\nfunction makeMediaOptionView(option: Option): Record<string, any> {\n  let media = option.media;\n\n  if (media?.image && 'altText' in media.image) {\n    const { altText, ...imageWithoutAltText } = media.image;\n    media = {\n      ...media,\n      image: imageWithoutAltText,\n      ...(altText !== undefined && { altText }),\n    };\n  }\n\n  return {\n    [LabelKey]: option.label,\n    [ValueKey]: option.value,\n    [idKey]: option.id,\n    ...(media && { [MediaKey]: media }),\n    ...(option.showLabel === false && { isLabelHidden: true }),\n  };\n}\n\nfunction numericNumberOfColumns(numberOfColumnsEnum: string): number {\n  switch (numberOfColumnsEnum) {\n    case 'ZERO':\n      return 0;\n    case 'TWO':\n      return 2;\n    case 'THREE':\n      return 3;\n    default:\n      return 1;\n  }\n}\n\nfunction resolveObjectArrayComponent(\n  objectArrayComponent: ObjectArray,\n): object {\n  switch (objectArrayComponent.componentType) {\n    case ObjectArrayComponentType.REPEATER:\n      return takeRepeaterViewProperties(objectArrayComponent.repeaterOptions!);\n    default:\n      throw new Error(\n        `Unknown object array component type: ${objectArrayComponent.componentType}`,\n      );\n  }\n}\n\nfunction takeRepeaterViewProperties(repeater: Repeater): object {\n  return {\n    [LabelKey]: repeater.label,\n    [HideLabelKey]: !repeater.showLabel,\n    [RepeaterFieldsKey]: repeater.fields?.map(transformFieldToV1),\n    [RepeaterLayoutKey]: repeater.layout,\n    ...(repeater.description && { [DescriptionKey]: repeater.description }),\n  };\n}\n\nfunction resolveQuizFieldSettings(quizFieldSettings?: {\n  score?: number;\n  correctAnswersList?: { correctAnswers?: any[] };\n}): object {\n  const correctAnswers = quizFieldSettings?.correctAnswersList?.correctAnswers;\n  return {\n    ...(quizFieldSettings?.score !== undefined && {\n      [ScoreKey]: quizFieldSettings.score,\n    }),\n    ...(correctAnswers?.length && { [CorrectAnswersKey]: correctAnswers }),\n  };\n}\n","import { type FormField } from '@wix/ambassador-forms-v1-form-template/types';\nimport { type Field as TemplateField } from '@wix/ambassador-forms-v2-form-template/types';\nimport { type FieldsField as FormSchemaField } from '@wix/ambassador-forms-v4-form/types';\n\nimport { makeValidationOfInputField } from './make-validation-of-input-field';\nimport { makeViewOfDisplayProperties } from './make-view-of-display-properties';\nimport { makeViewOfInputField } from './make-view-of-input-field';\n\nexport function transformFieldToV1(\n  field: FormSchemaField | TemplateField,\n): FormField {\n  return {\n    id: field.id,\n    hidden: field.hidden,\n    ...resolveRootProperties(field),\n  };\n}\n\nfunction resolveRootProperties(\n  field: FormSchemaField | TemplateField,\n): Pick<FormField, 'pii' | 'target' | 'validation' | 'view' | 'readOnly'> {\n  if (field.inputOptions) {\n    return {\n      pii: field.inputOptions.pii,\n      target: field.inputOptions.target,\n      readOnly: field.inputOptions.readOnly,\n      view: {\n        fieldType: field.identifier,\n        ...makeViewOfInputField(field.inputOptions),\n      },\n      validation: makeValidationOfInputField(field.inputOptions),\n    };\n  }\n  if (field.displayOptions) {\n    return {\n      view: {\n        fieldType: field.identifier,\n        ...makeViewOfDisplayProperties(field.displayOptions),\n      },\n    };\n  }\n\n  return {};\n}\n","import { type FormTemplate } from '@wix/ambassador-forms-v1-form-template/types';\nimport {\n  type Form as BackendForm,\n  type FormField as BackendField,\n  type FormLayout as BackendLayout,\n  type ItemLayout as BackendItemLayout,\n} from '@wix/ambassador-forms-v4-form/types';\nimport { transformFieldToV1 } from '@wix/form-transformer';\n\nimport { Breakpoint, DEFAULT_BREAKPOINT, FIELD_TYPES } from '../constants';\nimport {\n  type Field,\n  type FormView,\n  type Grid,\n  type Layout,\n  type Properties,\n} from '../ui/form/types';\n\nconst GRID_DEFAULTS = {\n  columns: 12,\n  rowHeight: 24,\n  margin: {\n    vertical: 24,\n    horizontal: 24,\n  },\n  padding: {\n    vertical: 0,\n    horizontal: 0,\n  },\n};\n\nexport function createFormView({\n  form,\n  path = '',\n  stepId,\n  recursive = true,\n  includeHiddenFields = false,\n  isMobile = false,\n  breakpoint = DEFAULT_BREAKPOINT,\n  useFieldsV2 = false,\n  parentId = '',\n}: {\n  form: BackendForm | FormTemplate;\n  path?: string;\n  stepId?: string;\n  recursive?: boolean;\n  includeHiddenFields?: boolean;\n  isMobile?: boolean;\n  breakpoint?: Breakpoint;\n  useFieldsV2?: boolean;\n  parentId?: string;\n}): FormView {\n  const step = stepId\n    ? form.steps?.find(({ id }) => id === stepId)\n    : form.steps?.[0];\n  const layout = step?.layout ?? {};\n  const fields = form.fields ?? [];\n  const platformizedFields = (form as BackendForm).formFields;\n  let nameView = '';\n\n  if ('properties' in form) {\n    nameView = form.properties?.name ?? '';\n  } else if ('name' in form) {\n    nameView = form.name ?? '';\n  }\n\n  if (\n    (form.fields ?? []).some(\n      (field) => field.view?.fieldType === FIELD_TYPES.APPOINTMENT,\n    )\n  ) {\n    useFieldsV2 = false;\n  }\n\n  const hasSmallLayout = layout.small?.items;\n  const isSmallBreakpoint = isMobile && hasSmallLayout;\n\n  const fieldViews = (\n    useFieldsV2 && platformizedFields ? platformizedFields : fields\n  )\n    .filter((field) => includeHiddenFields || !field.hidden)\n    .filter((field) =>\n      layout?.large?.items?.find((item) => field.id === item.fieldId),\n    )\n    .reduce<Field[]>((result, field) => {\n      const _field =\n        useFieldsV2 && platformizedFields ? transformFieldToV1(field) : field;\n      const fieldView = createFieldView(\n        _field,\n        layout,\n        path,\n        recursive,\n        isMobile,\n        isSmallBreakpoint ? Breakpoint.SMALL : breakpoint,\n      );\n      if (fieldView) {\n        result.push(fieldView);\n      }\n      return result;\n    }, [])\n    .sort(sortFieldViewsByColumn)\n    .sort(sortFieldViewsByRow);\n\n  const gridView = createGridView(layout, isMobile);\n\n  const formView = {\n    parentId,\n    name: nameView,\n    grid: gridView,\n    fields: fieldViews,\n  };\n\n  if (\n    (isMobile && !hasSmallLayout) ||\n    (breakpoint === Breakpoint.SMALL && !hasSmallLayout)\n  ) {\n    return applyMobileLayout(formView);\n  }\n\n  return formView;\n}\n\nfunction applyMobileLayout(form: FormView): FormView {\n  const { fields } = form.fields.reduce<{ row: number; fields: Field[] }>(\n    (state, field) => {\n      const layout = {\n        width: form.grid.columns,\n        height: field.layout.height,\n        column: 0,\n        row: state.row,\n      };\n\n      state.fields.push({ ...field, layout });\n      state.row += field.layout.height;\n      return state;\n    },\n    { row: 0, fields: [] },\n  );\n\n  return { ...form, fields };\n}\n\nfunction createFieldView(\n  field: BackendField,\n  layout: BackendLayout,\n  path: string,\n  recursive: boolean,\n  isMobile?: boolean,\n  breakpoint: Breakpoint = DEFAULT_BREAKPOINT,\n): Field | undefined {\n  if (!(field.id && field.view?.fieldType)) {\n    return;\n  }\n\n  if (!layout) {\n    return;\n  }\n\n  const breakpoints = createLayoutBreakpoints(layout, field.id);\n  const activeLayout = breakpoints[breakpoint] ?? breakpoints.large;\n  if (!activeLayout) {\n    return;\n  }\n\n  const fieldTarget = field.target || '';\n  const fieldPath = path ? `${path}/${fieldTarget}` : fieldTarget;\n  const propertiesView = createPropertiesView(\n    field,\n    fieldPath,\n    recursive,\n    isMobile,\n  );\n\n  return {\n    id: field.id,\n    fieldType: field.view.fieldType,\n    properties: propertiesView,\n    layout: activeLayout,\n    layoutByBreakpoint: breakpoints,\n    target: fieldTarget,\n    path: fieldPath,\n  };\n}\n\nfunction createLayoutBreakpoints(layout: BackendLayout, fieldId: string) {\n  const largeItem = layout.large?.items?.find(\n    (item) => item.fieldId === fieldId,\n  );\n  const largeLayoutView = largeItem && createLayoutView(largeItem);\n\n  const smallItem = layout.small?.items?.find(\n    (item) => item.fieldId === fieldId,\n  );\n  const smallLayoutView = smallItem && createLayoutView(smallItem);\n\n  return {\n    large: largeLayoutView,\n    small: smallLayoutView,\n  };\n}\n\nexport function createPropertiesView(\n  field: BackendField,\n  path?: string,\n  recursive?: boolean,\n  isMobile?: boolean,\n): Properties {\n  const { hidden, pii, nestedFormId, readOnly } = field;\n\n  const { disabled, defaultValue, fieldType, form, ...rest } = field.view ?? {};\n  const { required } = field.validation ?? {};\n  const availability = field.validation?.string?.dateOptions?.availability;\n\n  const formView =\n    form && recursive\n      ? createFormView({\n          form,\n          path,\n          recursive: false,\n          isMobile,\n          parentId: field.id,\n        })\n      : undefined;\n\n  return {\n    disabled: disabled ?? false,\n    hidden: hidden ?? false,\n    readOnly: readOnly ?? false,\n    required: required ?? false,\n    pii: pii ?? false,\n    defaultValue: defaultValue ?? undefined,\n    validation: field.validation ?? {},\n    form: formView,\n    ...(nestedFormId ? { nestedFormId } : {}),\n    ...rest,\n    ...(availability ? { availability } : {}),\n  };\n}\n\nexport interface BackendLayoutWithStatic extends BackendItemLayout {\n  static?: boolean;\n}\n\nfunction createLayoutView(layout: BackendLayoutWithStatic): Layout | undefined {\n  const { row, column, width, height } = layout;\n  if (\n    row === null ||\n    row === undefined ||\n    column === null ||\n    column === undefined ||\n    width === null ||\n    width === undefined ||\n    height === null ||\n    height === undefined\n  ) {\n    return;\n  }\n\n  return { row, column, width, height, static: layout.static };\n}\n\nfunction createGridView(layout: BackendLayout, isMobile?: boolean): Grid {\n  const { columns, rowHeight, padding, margin } = layout?.large ?? {};\n  let { horizontal: marginHorizontal } = margin ?? {};\n  const { vertical: paddingVertical, horizontal: paddingHorizontal } =\n    padding ?? {};\n  const gridRowHeight = rowHeight ?? GRID_DEFAULTS.rowHeight;\n\n  if (isMobile) {\n    marginHorizontal = 0;\n  }\n\n  return {\n    columns: columns ?? GRID_DEFAULTS.columns,\n    rowHeight: gridRowHeight,\n    margin: {\n      vertical: margin?.vertical ?? GRID_DEFAULTS.margin.vertical,\n      horizontal: marginHorizontal ?? GRID_DEFAULTS.margin.horizontal,\n    },\n    padding: {\n      vertical: paddingVertical ?? GRID_DEFAULTS.padding.vertical,\n      horizontal: paddingHorizontal ?? GRID_DEFAULTS.padding.horizontal,\n    },\n  };\n}\n\nfunction sortFieldViewsByRow(fieldA: Field, fieldB: Field): number {\n  return fieldA.layout.row - fieldB.layout.row;\n}\n\nfunction sortFieldViewsByColumn(fieldA: Field, fieldB: Field): number {\n  return fieldA.layout.column - fieldB.layout.column;\n}\n","import type { FormTemplate } from '@wix/ambassador-forms-v1-form-template/types';\nimport { type CountryCode } from '@wix/form-multiline-address';\nimport { createContext, useContext } from 'react';\n\nimport { type AddressTemplate } from '../types';\n\nexport type AddressFormsContextProps = {\n  getCountryAddressForm: (country?: CountryCode) => FormTemplate | undefined;\n  addressTemplates?: AddressTemplate[];\n};\n\nconst initialState: AddressFormsContextProps = {\n  getCountryAddressForm: () => undefined,\n  addressTemplates: undefined,\n};\n\nexport const AddressFormsContext =\n  createContext<AddressFormsContextProps>(initialState);\n\nexport const getAddressForm = (\n  templates?: AddressTemplate[],\n  country?: CountryCode,\n) => {\n  return (\n    templates?.find((template) => template.country === country)?.template ||\n    templates?.find((template) => template.country === 'COMMON')?.template\n  );\n};\n\nexport function useAddressForms() {\n  const context = useContext(AddressFormsContext);\n  if (context === undefined) {\n    throw new Error(\n      'useAddressForms must be used within a AddressFormsContext',\n    );\n  }\n\n  return context;\n}\n","import { createContext, useContext } from 'react';\n\nimport { type FieldType } from '../constants';\n\nimport { useConfig } from './config-context';\n\nexport type FieldInitialData<T = any> = Partial<Record<FieldType, T>>;\n\nexport const FieldInitialDataContext = createContext<\n  FieldInitialData | undefined\n>(undefined);\n\nexport const useFieldInitialData = <T>(fieldType: FieldType): T => {\n  const context = useContext(FieldInitialDataContext);\n  const { isEditor, isComposer } = useConfig();\n\n  if (isEditor || isComposer) {\n    return {} as T;\n  }\n\n  if (context === undefined) {\n    throw new Error(\n      'useFieldInitialData must be used within a FieldInitialDataContext',\n    );\n  }\n\n  return context[fieldType];\n};\n","import type { CommonAddress } from '@wix/ambassador-wix-atlas-service-web/types';\nimport type { CountryCode } from '@wix/form-multiline-address';\n\nexport enum ADDRESS_TARGETS {\n  COUNTRY = 'country',\n  SUBDIVISION = 'subdivision',\n  CITY = 'city',\n  ADDRESS_LINE = 'addressLine',\n  ADDRESS_LINE_2 = 'addressLine2',\n  POSTAL_CODE = 'postalCode',\n  STREET_NAME = 'streetName',\n  STREET_NUMBER = 'streetNumber',\n  APARTMENT = 'apartment',\n}\n\nexport type AddressCamel = {\n  [ADDRESS_TARGETS.COUNTRY]?: CountryCode;\n  [ADDRESS_TARGETS.SUBDIVISION]?: string;\n  [ADDRESS_TARGETS.CITY]?: string;\n  [ADDRESS_TARGETS.ADDRESS_LINE]?: string;\n  [ADDRESS_TARGETS.ADDRESS_LINE_2]?: string;\n  [ADDRESS_TARGETS.POSTAL_CODE]?: string;\n  [ADDRESS_TARGETS.STREET_NAME]?: string;\n  [ADDRESS_TARGETS.STREET_NUMBER]?: string;\n  [ADDRESS_TARGETS.APARTMENT]?: string;\n};\n\nexport type Address = {\n  country?: CountryCode;\n  subdivision?: string;\n  city?: string;\n  address_line?: string;\n  address_line_2?: string;\n  postal_code?: string;\n  street_name?: string;\n  street_number?: string;\n  apartment?: string;\n};\n\nexport function fromAtlasAddress(\n  address: CommonAddress,\n  isMultilineAddressField: boolean,\n): Address {\n  const {\n    country,\n    subdivision,\n    city,\n    addressLine,\n    streetAddress,\n    addressLine2,\n    postalCode,\n  } = address;\n\n  const partial: AddressCamel & Address = {};\n\n  if (isMultilineAddressField) {\n    if (country) {\n      partial.country = country as CountryCode;\n    }\n    if (subdivision) {\n      partial.subdivision = subdivision;\n    }\n    if (city) {\n      partial.city = city;\n    }\n\n    if (addressLine) {\n      partial.addressLine = addressLine;\n    } else if (streetAddress?.formattedAddressLine) {\n      partial.addressLine = streetAddress?.formattedAddressLine;\n    }\n\n    if (addressLine2) {\n      partial.addressLine = addressLine2;\n    }\n    if (postalCode) {\n      partial.postalCode = postalCode;\n    }\n    if (streetAddress?.apt) {\n      partial.apartment = streetAddress?.apt;\n    }\n    if (streetAddress?.name) {\n      partial.streetName = streetAddress?.name;\n    }\n    if (streetAddress?.number) {\n      partial.streetNumber = streetAddress.number;\n    }\n  } else {\n    if (country) {\n      partial.country = country as CountryCode;\n    }\n    if (subdivision) {\n      partial.subdivision = subdivision;\n    }\n    if (city) {\n      partial.city = city;\n    }\n\n    if (addressLine) {\n      partial.address_line = addressLine;\n    } else if (streetAddress?.formattedAddressLine) {\n      partial.address_line = streetAddress?.formattedAddressLine;\n    }\n\n    if (addressLine2) {\n      partial.address_line = addressLine2;\n    }\n    if (postalCode) {\n      partial.postal_code = postalCode;\n    }\n    if (streetAddress?.apt) {\n      partial.apartment = streetAddress?.apt;\n    }\n    if (streetAddress?.name) {\n      partial.street_name = streetAddress?.name;\n    }\n    if (streetAddress?.number) {\n      partial.street_number = streetAddress.number;\n    }\n  }\n\n  return partial;\n}\n","import { ErrorTypes } from '@wix/form-validator';\n\nimport { type ExternalData } from '../../types';\nimport { type PossibleValues } from '../../ui/form/types';\n\nimport {\n  VatIDType,\n  brazilVatIdValidator,\n  getVatIDType,\n} from './brazil-vat-id-validator';\nimport { israelVatIdValidator } from './israel-vat-id-validator';\nimport { type VatIDValue } from './types';\n\nexport const validateVatID = ({\n  value,\n  target,\n  externalData,\n}: {\n  value?: PossibleValues;\n  target: string;\n  externalData?: ExternalData;\n}) => {\n  if (!value) {\n    return undefined;\n  }\n\n  const country = externalData?.country;\n  if (country === 'IL') {\n    const isValid = israelVatIdValidator(value as VatIDValue);\n    if (!isValid) {\n      return {\n        errorPath: target,\n        errorType: ErrorTypes.FORMAT_ERROR,\n        errorMessage: 'must match format \"vat ID\"',\n        params: {\n          format: 'custom IL field validations',\n        },\n      };\n    }\n    return undefined;\n  }\n\n  const isValid = brazilVatIdValidator(value as VatIDValue);\n  if (!isValid) {\n    return {\n      errorPath: target,\n      errorType: ErrorTypes.FORMAT_ERROR,\n      errorMessage: 'must match format \"vat ID\"',\n      params: {\n        format: 'custom BR field validations',\n      },\n    };\n  }\n  return undefined;\n};\n\nexport const getVatIDValue = (id: string, country: string) => {\n  if (country === 'IL') {\n    return { id, type: VatIDType.UNSPECIFIED };\n  }\n\n  const vatType = getVatIDType(id);\n  return { id, type: vatType };\n};\n","import { EMPTY_VALUE } from '../../constants';\n\nimport { type VatIDValue } from './types';\n\n// tax info types\nexport enum VatIDType {\n  UNSPECIFIED = 'UNSPECIFIED',\n  CPF = 'CPF', // CPF - for individual tax payers.\n  CNPJ = 'CNPJ', // CNPJ - for corporations\n}\n\nexport const brazilVatIdValidator = (value: VatIDValue) =>\n  value === EMPTY_VALUE || value.id === ''\n    ? true\n    : isCpfValid(value.id) || isCnpjValid(value.id);\n\nexport function getVatIDType(id: string) {\n  const isCpf = isCpfValid(id);\n  const isCnpj = isCnpjValid(id);\n\n  if (isCpf) {\n    return VatIDType.CPF;\n  } else if (isCnpj) {\n    return VatIDType.CNPJ;\n  }\n\n  return VatIDType.UNSPECIFIED;\n}\n\nconst CPF_BLACKLIST = [\n  '00000000000',\n  '11111111111',\n  '22222222222',\n  '33333333333',\n  '44444444444',\n  '55555555555',\n  '66666666666',\n  '77777777777',\n  '88888888888',\n  '99999999999',\n];\n\nexport function isCpfValid(modelValue: string) {\n  if (!modelValue || CPF_BLACKLIST.includes(modelValue)) {\n    return false;\n  }\n\n  let i,\n    v1 = 0,\n    v2;\n  const chars = modelValue.replace(/\\D/g, '').split('');\n  if (chars.length === 11) {\n    const factors = [10, 9, 8, 7, 6, 5, 4, 3, 2];\n    for (i = 0; i < factors.length; ++i) {\n      v1 += factors[i] * parseInt(chars[i], 10);\n    }\n    v1 = 11 - (v1 % 11);\n    if (v1 >= 10) {\n      v1 = 0;\n    }\n    if (parseInt(chars[9], 10) !== v1) {\n      return false;\n    }\n    v2 = 2 * v1;\n    for (i = 0; i < factors.length; ++i) {\n      v2 += (factors[i] + 1) * parseInt(chars[i], 10);\n    }\n    v2 = 11 - (v2 % 11);\n    if (v2 >= 10) {\n      v2 = 0;\n    }\n    return parseInt(chars[10], 10) === v2;\n  }\n\n  return false;\n}\n\nconst CNPJ_BLACKLIST = [\n  '00000000000000',\n  '11111111111111',\n  '22222222222222',\n  '33333333333333',\n  '44444444444444',\n  '55555555555555',\n  '66666666666666',\n  '77777777777777',\n  '88888888888888',\n  '99999999999999',\n];\n\n// eslint-disable-next-line no-useless-escape\nconst STRICT_STRIP_REGEX = /[-\\/.]/g;\nconst LOOSE_STRIP_REGEX = /[^\\d]/g;\n\nconst verifierDigit = (numbers: string) => {\n  let index = 2;\n  const reverse = numbers.split('').reduce((buffer: number[], number) => {\n    return [parseInt(number, 10)].concat(buffer);\n  }, []);\n\n  const sum = reverse.reduce((buffer, number) => {\n    buffer += number * index;\n    index = index === 9 ? 2 : index + 1;\n    return buffer;\n  }, 0);\n\n  const mod = sum % 11;\n  return mod < 2 ? 0 : 11 - mod;\n};\n\nfunction strip(number: string, strict: boolean) {\n  const regex = strict ? STRICT_STRIP_REGEX : LOOSE_STRIP_REGEX;\n  return (number || '').toString().replace(regex, '');\n}\n\nexport function isCnpjValid(number: string, strict = true) {\n  const stripped = strip(number, strict);\n\n  // CNPJ must be defined\n  if (!stripped) {\n    return false;\n  }\n\n  // CNPJ must have 14 chars\n  if (stripped.length !== 14) {\n    return false;\n  }\n\n  // CNPJ can't be blacklisted\n  if (CNPJ_BLACKLIST.includes(stripped)) {\n    return false;\n  }\n\n  let numbers = stripped.substr(0, 12);\n  numbers += verifierDigit(numbers);\n  numbers += verifierDigit(numbers);\n\n  return numbers.substr(-2) === stripped.substr(-2);\n}\n","// Copied from https://github.com/wix-private/premium-purchase/blob/master/packages/checkout-form/src/components/FormControls/validators/taxValidators/israelVatIdValidator.ts\n\nimport { type VatIDValue } from './types';\n\n/*\n * Luhn algorithm checksum\n * copied and modified from https://gist.github.com/ShirtlessKirk/2134376\n */\nconst luhnChk = function (ccNum: string): Boolean {\n  const arr = [0, 2, 4, 6, 8, 1, 3, 5, 7, 9];\n  let len = ccNum.length,\n    bit = 1,\n    sum = 0,\n    val;\n\n  while (len) {\n    val = parseInt(ccNum.charAt(--len), 10);\n    // eslint-disable-next-line\n    sum += (bit ^= 1) ? arr[val] : val;\n  }\n\n  return !!(sum && sum % 10 === 0);\n};\n\nexport const israelVatIdValidator = (value: VatIDValue): boolean => {\n  // should be only digits, should have length between 5-9\n  if (!/^[0-9]{5,9}$/.test(value?.id)) {\n    return false;\n  }\n\n  // should pass luhn test when padded with zeros\n  const padded = value?.id?.padStart(9, '0');\n  if (!luhnChk(padded)) {\n    return false;\n  }\n\n  return true;\n};\n","import { ErrorTypes } from '@wix/form-validator';\n\nimport type { PossibleValues } from '../../../ui/form/types';\n\nexport const validateBirthdate = ({\n  value,\n  target,\n}: {\n  value?: PossibleValues;\n  target: string;\n}) => {\n  if (!value) {\n    return undefined;\n  }\n\n  const date = new Date(value as string);\n\n  if (date.getFullYear() < 1900) {\n    return {\n      errorPath: target,\n      errorType: ErrorTypes.MIN_VALUE_ERROR,\n      errorMessage: '',\n    };\n  }\n\n  if (date.getTime() > Date.now()) {\n    return {\n      errorPath: target,\n      errorType: ErrorTypes.MAX_VALUE_ERROR,\n      errorMessage: '',\n    };\n  }\n\n  return undefined;\n};\n","import {\n  PriceType,\n  type Product,\n  ProductType,\n} from '@wix/ambassador-forms-v4-form/types';\nimport { generateUUID } from '@wix/form-schema';\n\nimport { getProductPrice } from '../../field-settings/settings-shared/products/product-price';\nimport { type ProductValue } from '../../field-settings/settings-shared/products/types';\n\nexport function toProductValue(\n  product: Product,\n  value: string | undefined,\n): ProductValue {\n  const price = Number(value || '0');\n  return {\n    productId: product.id!,\n    price:\n      product.priceType === PriceType.DYNAMIC_PRICE ? price : String(price),\n    quantity: 1,\n  };\n}\n\nexport function findProductWithDynamicPrice(\n  products: Product[],\n): Product | undefined {\n  return products.find(\n    (product) => product.priceType === PriceType.DYNAMIC_PRICE,\n  );\n}\n\nexport function aDynamicPriceProduct(): Product {\n  return {\n    id: generateUUID(),\n    priceType: PriceType.DYNAMIC_PRICE,\n    productType: ProductType.DIGITAL,\n    quantityLimit: { minimum: 1, maximum: 1 },\n    dynamicPriceOptions: { minPrice: '0' },\n  };\n}\n\nexport function aFixedPriceProduct(\n  price: number,\n  id: string = generateUUID(),\n): Product {\n  return {\n    id,\n    priceType: PriceType.FIXED_PRICE,\n    productType: ProductType.DIGITAL,\n    quantityLimit: { minimum: 1, maximum: 1 },\n    fixedPriceOptions: { price: String(price) },\n  };\n}\n\nexport function excludeProductsWithDynamicPrice(\n  products: Product[],\n): Product[] {\n  return products.filter(\n    (product) => product.priceType !== PriceType.DYNAMIC_PRICE,\n  );\n}\n\nexport function getCustomAmount(\n  productValue: ProductValue | undefined,\n  customAmountProduct: Product | undefined,\n): string {\n  return productValue?.productId === customAmountProduct?.id\n    ? String(productValue?.price ?? '')\n    : '';\n}\n\nexport function getProductValueOnCheckboxChange(\n  productId: string,\n  productValue: ProductValue | undefined,\n  productsById: Record<string, Product>,\n): ProductValue[] {\n  const newValue =\n    productValue?.productId === productId ? undefined : productId;\n  const product = newValue ? productsById[newValue] : undefined;\n  return product ? [toProductValue(product, getProductPrice(product))] : [];\n}\n","import { type Product } from '@wix/ambassador-forms-v4-form/types';\n\nexport const PRODUCT_PRICE_MULTIPLE_OF = 0.01;\n\nexport function getProductPrice(product?: Product): string {\n  return product?.fixedPriceOptions?.price || '0';\n}\n","import {\n  PriceType,\n  type Product,\n  ProductType,\n} from '@wix/ambassador-forms-v4-form/types';\nimport { generateUUID } from '@wix/form-schema';\n\nimport { type ProductValue } from '../../field-settings/settings-shared/products/types';\n\nexport function toProductValue(\n  product: Product,\n  value: number | string,\n): ProductValue {\n  return {\n    productId: product.id!,\n    price: value,\n    quantity: 1,\n  };\n}\n\nexport function aDynamicPricePayment(\n  id: string = generateUUID(),\n  min: string | number = 1,\n  max?: string | number | null,\n): Product {\n  return {\n    id,\n    priceType: PriceType.DYNAMIC_PRICE,\n    productType: ProductType.DIGITAL,\n    quantityLimit: { minimum: 1, maximum: 1 },\n    dynamicPriceOptions: {\n      minPrice: String(min),\n      maxPrice: max ? String(max) : undefined,\n    },\n  };\n}\n","export const dateToDateString = (date: Date) => {\n  const year = date.getFullYear().toString();\n  const month = (date.getMonth() + 1).toString().padStart(2, '0');\n  const day = date.getDate().toString().padStart(2, '0');\n\n  return [year, month, day].join('-');\n};\n\nexport const dateToTimeString = (date: Date) => {\n  const hours = date.getHours().toString().padStart(2, '0');\n  const minutes = date.getMinutes().toString().padStart(2, '0');\n  return [hours, minutes, '00'].join(':');\n};\n\nexport const dateToDateTimeString = (date: Date) => {\n  return [dateToDateString(date), dateToTimeString(date)].join(' ');\n};\n","import { type FormField } from '@wix/ambassador-forms-v4-form/types';\n\nimport { FIELD_TYPES, NOW_VALUE } from '../constants';\nimport { dateToDateString, dateToTimeString } from '../field-rule/inputs/utils';\nimport { type PossibleValues } from '../ui/form/types/form-values';\n\nexport const DEFAULT_VALUE = {\n  [FIELD_TYPES.TEXT_INPUT]: resolveDefaultValue,\n  [FIELD_TYPES.CHECKBOX_GROUP]: resolveDefaultValue,\n  [FIELD_TYPES.RADIO_GROUP]: resolveDefaultValue,\n  [FIELD_TYPES.DROPDOWN]: resolveDefaultValue,\n  [FIELD_TYPES.URL_INPUT]: resolveDefaultValue,\n  [FIELD_TYPES.NUMBER_INPUT]: resolveDefaultValue,\n  [FIELD_TYPES.CHALLENGES_NUMBER]: resolveDefaultValue,\n  [FIELD_TYPES.CHALLENGES_SHORT_TEXT]: resolveDefaultValue,\n  [FIELD_TYPES.CHALLENGES_LONG_TEXT]: resolveDefaultValue,\n  [FIELD_TYPES.CHALLENGES_MULTI_CHOICE]: resolveDefaultValue,\n  [FIELD_TYPES.CHALLENGES_IMAGE_CHOICE]: resolveDefaultValue,\n  [FIELD_TYPES.CHALLENGES_SINGLE_CHOICE]: resolveDefaultValue,\n  [FIELD_TYPES.CHALLENGES_FILE_UPLOAD]: resolveDefaultValue,\n  [FIELD_TYPES.QUIZ_TEXT_INPUT]: resolveDefaultValue,\n  [FIELD_TYPES.QUIZ_NUMBER_INPUT]: resolveDefaultValue,\n  [FIELD_TYPES.QUIZ_RADIO_GROUP]: resolveDefaultValue,\n  [FIELD_TYPES.QUIZ_CHECKBOX_GROUP]: resolveDefaultValue,\n  [FIELD_TYPES.IMAGE_CHOICE]: resolveDefaultValue,\n  [FIELD_TYPES.FILE_UPLOAD]: resolveDefaultValue,\n  [FIELD_TYPES.SIGNATURE]: resolveDefaultValue,\n  [FIELD_TYPES.CONTACTS_EMAIL]: resolveDefaultValue,\n  [FIELD_TYPES.CONTACTS_PHONE]: resolveDefaultValue,\n  [FIELD_TYPES.CHECKBOX]: resolveDefaultValue,\n  [FIELD_TYPES.DATE_TIME_INPUT]: resolveDefaultValue,\n  [FIELD_TYPES.CONTACTS_COMPANY]: resolveDefaultValue,\n  [FIELD_TYPES.CONTACTS_POSITION]: resolveDefaultValue,\n  [FIELD_TYPES.CONTACTS_TAX_ID]: resolveDefaultValue,\n  [FIELD_TYPES.CONTACTS_FIRST_NAME]: resolveDefaultValue,\n  [FIELD_TYPES.CONTACTS_LAST_NAME]: resolveDefaultValue,\n  [FIELD_TYPES.CONTACTS_ADDRESS]: resolveDefaultValue,\n  [FIELD_TYPES.CONTACTS_BIRTHDATE]: resolveDefaultValue,\n  [FIELD_TYPES.TEXT_AREA]: resolveDefaultValue,\n  [FIELD_TYPES.CONTACTS_SUBSCRIBE]: resolveDefaultValue,\n  [FIELD_TYPES.DATE_INPUT]: resolveDefaultValue,\n  [FIELD_TYPES.TIME_INPUT]: resolveDefaultTimeValue,\n  [FIELD_TYPES.DATE_PICKER]: resolveDefaultDateValue,\n  [FIELD_TYPES.NESTED_FORM]: resolveDefaultValue,\n  [FIELD_TYPES.MULTILINE_ADDRESS]: resolveDefaultValue,\n  [FIELD_TYPES.MLA_COUNTRY]: resolveDefaultValue,\n  [FIELD_TYPES.MLA_CITY]: resolveDefaultValue,\n  [FIELD_TYPES.MLA_ADDRESS_LINE]: resolveDefaultValue,\n  [FIELD_TYPES.MLA_ADDRESS_LINE_2]: resolveDefaultValue,\n  [FIELD_TYPES.MLA_POSTAL_CODE]: resolveDefaultValue,\n  [FIELD_TYPES.MLA_SUBDIVISION]: resolveDefaultValue,\n  [FIELD_TYPES.MLA_STREET_NAME]: resolveDefaultValue,\n  [FIELD_TYPES.MLA_STREET_NUMBER]: resolveDefaultValue,\n  [FIELD_TYPES.MLA_APARTMENT]: resolveDefaultValue,\n  [FIELD_TYPES.FULL_NAME]: resolveDefaultValue,\n  [FIELD_TYPES.FULL_NAME_FIRST_NAME]: resolveDefaultValue,\n  [FIELD_TYPES.FULL_NAME_LAST_NAME]: resolveDefaultValue,\n  [FIELD_TYPES.VAT_ID]: resolveDefaultValue,\n  [FIELD_TYPES.DEXT_TEXT_INPUT]: resolveDefaultValue,\n  [FIELD_TYPES.DEXT_NUMBER_INPUT]: resolveDefaultValue,\n  [FIELD_TYPES.DEXT_CHECKBOX]: resolveDefaultValue,\n  [FIELD_TYPES.DEXT_CHECKBOX_GROUP]: resolveDefaultValue,\n  [FIELD_TYPES.DEXT_RATING_INPUT]: resolveDefaultValue,\n  [FIELD_TYPES.DEXT_TAGS]: resolveDefaultValue,\n  [FIELD_TYPES.ECOM_ADDITIONAL_INFO]: resolveDefaultValue,\n  [FIELD_TYPES.ECOM_ADDRESS]: resolveDefaultValue,\n  [FIELD_TYPES.ECOM_PHONE]: resolveDefaultValue,\n  [FIELD_TYPES.ECOM_FULL_NAME]: resolveDefaultValue,\n  [FIELD_TYPES.ECOM_COMPANY_NAME]: resolveDefaultValue,\n  [FIELD_TYPES.ECOM_SUBSCRIPTION]: resolveDefaultValue,\n  [FIELD_TYPES.ECOM_EMAIL]: resolveDefaultValue,\n  [FIELD_TYPES.DEXT_TEXT_AREA]: resolveDefaultValue,\n  [FIELD_TYPES.DEXT_DROPDOWN]: resolveDefaultValue,\n  [FIELD_TYPES.DEXT_RADIO_GROUP]: resolveDefaultValue,\n  [FIELD_TYPES.DEXT_URL_INPUT]: resolveDefaultValue,\n  [FIELD_TYPES.DEXT_EMAIL]: resolveDefaultValue,\n  [FIELD_TYPES.DEXT_PHONE]: resolveDefaultValue,\n  [FIELD_TYPES.DEXT_DATE_PICKER]: resolveDefaultValue,\n  [FIELD_TYPES.DEXT_DATE_TIME_INPUT]: resolveDefaultValue,\n  [FIELD_TYPES.PRODUCT_LIST]: resolveDefaultValue,\n  [FIELD_TYPES.DONATION]: resolveDefaultValue,\n  [FIELD_TYPES.RATING_INPUT]: resolveDefaultValue,\n  [FIELD_TYPES.TAGS]: resolveDefaultValue,\n  [FIELD_TYPES.PAYMENT_INPUT]: resolveDefaultValue,\n  [FIELD_TYPES.FIXED_PAYMENT]: resolveDefaultValue,\n  [FIELD_TYPES.BOOKINGS_FIRST_NAME]: resolveDefaultValue,\n  [FIELD_TYPES.BOOKINGS_LAST_NAME]: resolveDefaultValue,\n  [FIELD_TYPES.BOOKINGS_EMAIL]: resolveDefaultValue,\n  [FIELD_TYPES.BOOKINGS_PHONE]: resolveDefaultValue,\n  [FIELD_TYPES.BOOKINGS_ADDRESS]: resolveDefaultValue,\n  [FIELD_TYPES.APPOINTMENT]: resolveDefaultValue,\n  [FIELD_TYPES.PASSWORD]: resolveDefaultValue,\n  [FIELD_TYPES.SERVICES_DROPDOWN]: resolveDefaultValue,\n  [FIELD_TYPES.SERVICES_MULTI_CHOICE]: resolveDefaultValue,\n  [FIELD_TYPES.EVENTS_RSVP]: resolveDefaultValue,\n  [FIELD_TYPES.EVENTS_REPEATER]: resolveDefaultValue,\n  [FIELD_TYPES.PHONE]: resolveDefaultValue,\n};\n\nfunction resolveDefaultValue(field: FormField): PossibleValues {\n  return field.view?.defaultValue;\n}\n\nfunction resolveDefaultDateValue(field: FormField): PossibleValues {\n  const defaultValue = field.view?.defaultValue;\n\n  if (defaultValue === NOW_VALUE) {\n    return dateToDateString(new Date());\n  }\n\n  return defaultValue;\n}\n\nfunction resolveDefaultTimeValue(field: FormField): PossibleValues {\n  const defaultValue = field.view?.defaultValue;\n\n  if (defaultValue === NOW_VALUE) {\n    return dateToTimeString(new Date());\n  }\n\n  return defaultValue;\n}\n","import type {\n  AnyEqualityComparator,\n  Cache,\n  CircularState,\n  Dictionary,\n  State,\n  TypeEqualityComparator,\n} from './internalTypes.js';\n\nconst { getOwnPropertyNames, getOwnPropertySymbols } = Object;\nconst { hasOwnProperty } = Object.prototype;\n\n/**\n * Combine two comparators into a single comparators.\n */\nexport function combineComparators<Meta>(\n  comparatorA: AnyEqualityComparator<Meta>,\n  comparatorB: AnyEqualityComparator<Meta>,\n) {\n  return function isEqual<A, B>(a: A, b: B, state: State<Meta>) {\n    return comparatorA(a, b, state) && comparatorB(a, b, state);\n  };\n}\n\n/**\n * Wrap the provided `areItemsEqual` method to manage the circular state, allowing\n * for circular references to be safely included in the comparison without creating\n * stack overflows.\n */\nexport function createIsCircular<\n  AreItemsEqual extends TypeEqualityComparator<any, any>,\n>(areItemsEqual: AreItemsEqual): AreItemsEqual {\n  return function isCircular(\n    a: any,\n    b: any,\n    state: CircularState<Cache<any, any>>,\n  ) {\n    if (!a || !b || typeof a !== 'object' || typeof b !== 'object') {\n      return areItemsEqual(a, b, state);\n    }\n\n    const { cache } = state;\n\n    const cachedA = cache.get(a);\n    const cachedB = cache.get(b);\n\n    if (cachedA && cachedB) {\n      return cachedA === b && cachedB === a;\n    }\n\n    cache.set(a, b);\n    cache.set(b, a);\n\n    const result = areItemsEqual(a, b, state);\n\n    cache.delete(a);\n    cache.delete(b);\n\n    return result;\n  } as AreItemsEqual;\n}\n\n/**\n * Get the `@@toStringTag` of the value, if it exists.\n */\nexport function getShortTag(value: any): string | undefined {\n  return value != null ? value[Symbol.toStringTag] : undefined;\n}\n\n/**\n * Get the properties to strictly examine, which include both own properties that are\n * not enumerable and symbol properties.\n */\nexport function getStrictProperties(\n  object: Dictionary,\n): Array<string | symbol> {\n  return (getOwnPropertyNames(object) as Array<string | symbol>).concat(\n    getOwnPropertySymbols(object),\n  );\n}\n\n/**\n * Whether the object contains the property passed as an own property.\n */\nexport const hasOwn =\n  // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n  Object.hasOwn ||\n  ((object: Dictionary, property: number | string | symbol) =>\n    hasOwnProperty.call(object, property));\n\n/**\n * Whether the values passed are strictly equal or both NaN.\n */\nexport function sameValueZeroEqual(a: any, b: any): boolean {\n  return a === b || (!a && !b && a !== a && b !== b);\n}\n","import type {\n  Dictionary,\n  PrimitiveWrapper,\n  State,\n  TypedArray,\n} from './internalTypes.js';\nimport { getStrictProperties, hasOwn, sameValueZeroEqual } from './utils.js';\n\nconst PREACT_VNODE = '__v';\nconst PREACT_OWNER = '__o';\nconst REACT_OWNER = '_owner';\n\nconst { getOwnPropertyDescriptor, keys } = Object;\n\n/**\n * Whether the arrays are equal in value.\n */\nexport function areArraysEqual(a: any[], b: any[], state: State<any>) {\n  let index = a.length;\n\n  if (b.length !== index) {\n    return false;\n  }\n\n  while (index-- > 0) {\n    if (!state.equals(a[index], b[index], index, index, a, b, state)) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\n/**\n * Whether the dates passed are equal in value.\n */\nexport function areDatesEqual(a: Date, b: Date): boolean {\n  return sameValueZeroEqual(a.getTime(), b.getTime());\n}\n\n/**\n * Whether the errors passed are equal in value.\n */\nexport function areErrorsEqual(a: Error, b: Error): boolean {\n  return (\n    a.name === b.name &&\n    a.message === b.message &&\n    a.cause === b.cause &&\n    a.stack === b.stack\n  );\n}\n\n/**\n * Whether the functions passed are equal in value.\n */\nexport function areFunctionsEqual(\n  a: (...args: any[]) => any,\n  b: (...args: any[]) => any,\n): boolean {\n  return a === b;\n}\n\n/**\n * Whether the `Map`s are equal in value.\n */\nexport function areMapsEqual(\n  a: Map<any, any>,\n  b: Map<any, any>,\n  state: State<any>,\n): boolean {\n  const size = a.size;\n\n  if (size !== b.size) {\n    return false;\n  }\n\n  if (!size) {\n    return true;\n  }\n\n  const matchedIndices = new Array<true | undefined>(size);\n  const aIterable = a.entries();\n\n  let aResult: IteratorResult<[any, any]>;\n  let bResult: IteratorResult<[any, any]>;\n  let index = 0;\n\n  // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n  while ((aResult = aIterable.next())) {\n    if (aResult.done) {\n      break;\n    }\n\n    const bIterable = b.entries();\n\n    let hasMatch = false;\n    let matchIndex = 0;\n\n    // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n    while ((bResult = bIterable.next())) {\n      if (bResult.done) {\n        break;\n      }\n\n      if (matchedIndices[matchIndex]) {\n        matchIndex++;\n        continue;\n      }\n\n      const aEntry = aResult.value;\n      const bEntry = bResult.value;\n\n      if (\n        state.equals(aEntry[0], bEntry[0], index, matchIndex, a, b, state) &&\n        state.equals(aEntry[1], bEntry[1], aEntry[0], bEntry[0], a, b, state)\n      ) {\n        hasMatch = matchedIndices[matchIndex] = true;\n        break;\n      }\n\n      matchIndex++;\n    }\n\n    if (!hasMatch) {\n      return false;\n    }\n\n    index++;\n  }\n\n  return true;\n}\n\n/**\n * Whether the numbers are equal in value.\n */\nexport const areNumbersEqual = sameValueZeroEqual;\n\n/**\n * Whether the objects are equal in value.\n */\nexport function areObjectsEqual(\n  a: Dictionary,\n  b: Dictionary,\n  state: State<any>,\n): boolean {\n  const properties = keys(a);\n\n  let index = properties.length;\n\n  if (keys(b).length !== index) {\n    return false;\n  }\n\n  // Decrementing `while` showed faster results than either incrementing or\n  // decrementing `for` loop and than an incrementing `while` loop. Declarative\n  // methods like `some` / `every` were not used to avoid incurring the garbage\n  // cost of anonymous callbacks.\n  while (index-- > 0) {\n    if (!isPropertyEqual(a, b, state, properties[index]!)) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\n/**\n * Whether the objects are equal in value with strict property checking.\n */\nexport function areObjectsEqualStrict(\n  a: Dictionary,\n  b: Dictionary,\n  state: State<any>,\n): boolean {\n  const properties = getStrictProperties(a);\n\n  let index = properties.length;\n\n  if (getStrictProperties(b).length !== index) {\n    return false;\n  }\n\n  let property: string | symbol;\n  let descriptorA: ReturnType<typeof getOwnPropertyDescriptor>;\n  let descriptorB: ReturnType<typeof getOwnPropertyDescriptor>;\n\n  // Decrementing `while` showed faster results than either incrementing or\n  // decrementing `for` loop and than an incrementing `while` loop. Declarative\n  // methods like `some` / `every` were not used to avoid incurring the garbage\n  // cost of anonymous callbacks.\n  while (index-- > 0) {\n    property = properties[index]!;\n\n    if (!isPropertyEqual(a, b, state, property)) {\n      return false;\n    }\n\n    descriptorA = getOwnPropertyDescriptor(a, property);\n    descriptorB = getOwnPropertyDescriptor(b, property);\n\n    if (\n      (descriptorA || descriptorB) &&\n      (!descriptorA ||\n        !descriptorB ||\n        descriptorA.configurable !== descriptorB.configurable ||\n        descriptorA.enumerable !== descriptorB.enumerable ||\n        descriptorA.writable !== descriptorB.writable)\n    ) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\n/**\n * Whether the primitive wrappers passed are equal in value.\n */\nexport function arePrimitiveWrappersEqual(\n  a: PrimitiveWrapper,\n  b: PrimitiveWrapper,\n): boolean {\n  return sameValueZeroEqual(a.valueOf(), b.valueOf());\n}\n\n/**\n * Whether the regexps passed are equal in value.\n */\nexport function areRegExpsEqual(a: RegExp, b: RegExp): boolean {\n  return a.source === b.source && a.flags === b.flags;\n}\n\n/**\n * Whether the `Set`s are equal in value.\n */\nexport function areSetsEqual(\n  a: Set<any>,\n  b: Set<any>,\n  state: State<any>,\n): boolean {\n  const size = a.size;\n\n  if (size !== b.size) {\n    return false;\n  }\n\n  if (!size) {\n    return true;\n  }\n\n  const matchedIndices = new Array<true | undefined>(size);\n  const aIterable = a.values();\n\n  let aResult: IteratorResult<any>;\n  let bResult: IteratorResult<any>;\n\n  // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n  while ((aResult = aIterable.next())) {\n    if (aResult.done) {\n      break;\n    }\n\n    const bIterable = b.values();\n\n    let hasMatch = false;\n    let matchIndex = 0;\n\n    // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n    while ((bResult = bIterable.next())) {\n      if (bResult.done) {\n        break;\n      }\n\n      if (\n        !matchedIndices[matchIndex] &&\n        state.equals(\n          aResult.value,\n          bResult.value,\n          aResult.value,\n          bResult.value,\n          a,\n          b,\n          state,\n        )\n      ) {\n        hasMatch = matchedIndices[matchIndex] = true;\n        break;\n      }\n\n      matchIndex++;\n    }\n\n    if (!hasMatch) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\n/**\n * Whether the TypedArray instances are equal in value.\n */\nexport function areTypedArraysEqual(a: TypedArray, b: TypedArray) {\n  let index = a.length;\n\n  if (b.length !== index) {\n    return false;\n  }\n\n  while (index-- > 0) {\n    if (a[index] !== b[index]) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\n/**\n * Whether the URL instances are equal in value.\n */\nexport function areUrlsEqual(a: URL, b: URL): boolean {\n  return (\n    a.hostname === b.hostname &&\n    a.pathname === b.pathname &&\n    a.protocol === b.protocol &&\n    a.port === b.port &&\n    a.hash === b.hash &&\n    a.username === b.username &&\n    a.password === b.password\n  );\n}\n\nfunction isPropertyEqual(\n  a: Dictionary,\n  b: Dictionary,\n  state: State<any>,\n  property: string | symbol,\n) {\n  if (\n    (property === REACT_OWNER ||\n      property === PREACT_OWNER ||\n      property === PREACT_VNODE) &&\n    (a.$$typeof || b.$$typeof)\n  ) {\n    return true;\n  }\n\n  return (\n    hasOwn(b, property) &&\n    state.equals(a[property], b[property], property, property, a, b, state)\n  );\n}\n","import {\n  areArraysEqual as areArraysEqualDefault,\n  areDatesEqual as areDatesEqualDefault,\n  areErrorsEqual as areErrorsEqualDefault,\n  areFunctionsEqual as areFunctionsEqualDefault,\n  areMapsEqual as areMapsEqualDefault,\n  areNumbersEqual as areNumbersEqualDefault,\n  areObjectsEqual as areObjectsEqualDefault,\n  areObjectsEqualStrict as areObjectsEqualStrictDefault,\n  arePrimitiveWrappersEqual as arePrimitiveWrappersEqualDefault,\n  areRegExpsEqual as areRegExpsEqualDefault,\n  areSetsEqual as areSetsEqualDefault,\n  areTypedArraysEqual as areTypedArraysEqualDefault,\n  areUrlsEqual as areUrlsEqualDefault,\n} from './equals.js';\nimport type {\n  ComparatorConfig,\n  CreateState,\n  CustomEqualCreatorOptions,\n  EqualityComparator,\n  InternalEqualityComparator,\n  State,\n} from './internalTypes.js';\nimport { combineComparators, createIsCircular, getShortTag } from './utils.js';\n\nconst ARGUMENTS_TAG = '[object Arguments]';\nconst BOOLEAN_TAG = '[object Boolean]';\nconst DATE_TAG = '[object Date]';\nconst ERROR_TAG = '[object Error]';\nconst MAP_TAG = '[object Map]';\nconst NUMBER_TAG = '[object Number]';\nconst OBJECT_TAG = '[object Object]';\nconst REG_EXP_TAG = '[object RegExp]';\nconst SET_TAG = '[object Set]';\nconst STRING_TAG = '[object String]';\nconst URL_TAG = '[object URL]';\n\nconst { isArray } = Array;\nconst isTypedArray =\n  typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function'\n    ? ArrayBuffer.isView\n    : null;\nconst { assign } = Object;\nconst getTag = Object.prototype.toString.call.bind(\n  Object.prototype.toString,\n) as (a: object) => string;\n\ninterface CreateIsEqualOptions<Meta> {\n  circular: boolean;\n  comparator: EqualityComparator<Meta>;\n  createState: CreateState<Meta> | undefined;\n  equals: InternalEqualityComparator<Meta>;\n  strict: boolean;\n}\n\n/**\n * Create a comparator method based on the type-specific equality comparators passed.\n */\nexport function createEqualityComparator<Meta>({\n  areArraysEqual,\n  areDatesEqual,\n  areErrorsEqual,\n  areFunctionsEqual,\n  areMapsEqual,\n  areNumbersEqual,\n  areObjectsEqual,\n  arePrimitiveWrappersEqual,\n  areRegExpsEqual,\n  areSetsEqual,\n  areTypedArraysEqual,\n  areUrlsEqual,\n  unknownTagComparators,\n}: ComparatorConfig<Meta>): EqualityComparator<Meta> {\n  /**\n   * compare the value of the two objects and return true if they are equivalent in values\n   */\n  return function comparator(a: any, b: any, state: State<Meta>): boolean {\n    // If the items are strictly equal, no need to do a value comparison.\n    if (a === b) {\n      return true;\n    }\n\n    // If either of the items are nullish and fail the strictly equal check\n    // above, then they must be unequal.\n    if (a == null || b == null) {\n      return false;\n    }\n\n    const type = typeof a;\n\n    if (type !== typeof b) {\n      return false;\n    }\n\n    if (type !== 'object') {\n      if (type === 'number') {\n        return areNumbersEqual(a, b, state);\n      }\n\n      if (type === 'function') {\n        return areFunctionsEqual(a, b, state);\n      }\n\n      // If a primitive value that is not strictly equal, it must be unequal.\n      return false;\n    }\n\n    const constructor = a.constructor;\n\n    // Checks are listed in order of commonality of use-case:\n    //   1. Common complex object types (plain object, array)\n    //   2. Common data values (date, regexp)\n    //   3. Less-common complex object types (map, set)\n    //   4. Less-common data values (promise, primitive wrappers)\n    // Inherently this is both subjective and assumptive, however\n    // when reviewing comparable libraries in the wild this order\n    // appears to be generally consistent.\n\n    // Constructors should match, otherwise there is potential for false positives\n    // between class and subclass or custom object and POJO.\n    if (constructor !== b.constructor) {\n      return false;\n    }\n\n    // `isPlainObject` only checks against the object's own realm. Cross-realm\n    // comparisons are rare, and will be handled in the ultimate fallback, so\n    // we can avoid capturing the string tag.\n    if (constructor === Object) {\n      return areObjectsEqual(a, b, state);\n    }\n\n    // `isArray()` works on subclasses and is cross-realm, so we can avoid capturing\n    // the string tag or doing an `instanceof` check.\n    if (isArray(a)) {\n      return areArraysEqual(a, b, state);\n    }\n\n    // `isTypedArray()` works on all possible TypedArray classes, so we can avoid\n    // capturing the string tag or comparing against all possible constructors.\n    if (isTypedArray != null && isTypedArray(a)) {\n      return areTypedArraysEqual(a, b, state);\n    }\n\n    // Try to fast-path equality checks for other complex object types in the\n    // same realm to avoid capturing the string tag. Strict equality is used\n    // instead of `instanceof` because it is more performant for the common\n    // use-case. If someone is subclassing a native class, it will be handled\n    // with the string tag comparison.\n\n    if (constructor === Date) {\n      return areDatesEqual(a, b, state);\n    }\n\n    if (constructor === RegExp) {\n      return areRegExpsEqual(a, b, state);\n    }\n\n    if (constructor === Map) {\n      return areMapsEqual(a, b, state);\n    }\n\n    if (constructor === Set) {\n      return areSetsEqual(a, b, state);\n    }\n\n    // Since this is a custom object, capture the string tag to determing its type.\n    // This is reasonably performant in modern environments like v8 and SpiderMonkey.\n    const tag = getTag(a as object);\n\n    if (tag === DATE_TAG) {\n      return areDatesEqual(a, b, state);\n    }\n\n    // For RegExp, the properties are not enumerable, and therefore will give false positives if\n    // tested like a standard object.\n    if (tag === REG_EXP_TAG) {\n      return areRegExpsEqual(a, b, state);\n    }\n\n    if (tag === MAP_TAG) {\n      return areMapsEqual(a, b, state);\n    }\n\n    if (tag === SET_TAG) {\n      return areSetsEqual(a, b, state);\n    }\n\n    if (tag === OBJECT_TAG) {\n      // The exception for value comparison is custom `Promise`-like class instances. These should\n      // be treated the same as standard `Promise` objects, which means strict equality, and if\n      // it reaches this point then that strict equality comparison has already failed.\n      return (\n        typeof a.then !== 'function' &&\n        typeof b.then !== 'function' &&\n        areObjectsEqual(a, b, state)\n      );\n    }\n\n    // If a URL tag, it should be tested explicitly. Like RegExp, the properties are not\n    // enumerable, and therefore will give false positives if tested like a standard object.\n    if (tag === URL_TAG) {\n      return areUrlsEqual(a, b, state);\n    }\n\n    // If an error tag, it should be tested explicitly. Like RegExp, the properties are not\n    // enumerable, and therefore will give false positives if tested like a standard object.\n    if (tag === ERROR_TAG) {\n      return areErrorsEqual(a, b, state);\n    }\n\n    // If an arguments tag, it should be treated as a standard object.\n    if (tag === ARGUMENTS_TAG) {\n      return areObjectsEqual(a, b, state);\n    }\n\n    // As the penultimate fallback, check if the values passed are primitive wrappers. This\n    // is very rare in modern JS, which is why it is deprioritized compared to all other object\n    // types.\n    if (tag === BOOLEAN_TAG || tag === NUMBER_TAG || tag === STRING_TAG) {\n      return arePrimitiveWrappersEqual(a, b, state);\n    }\n\n    if (unknownTagComparators) {\n      let unknownTagComparator = unknownTagComparators[tag];\n\n      if (!unknownTagComparator) {\n        const shortTag = getShortTag(a);\n\n        if (shortTag) {\n          unknownTagComparator = unknownTagComparators[shortTag];\n        }\n      }\n\n      // If the custom config has an unknown tag comparator that matches the captured tag or the\n      // @@toStringTag, it is the source of truth for whether the values are equal.\n      if (unknownTagComparator) {\n        return unknownTagComparator(a, b, state);\n      }\n    }\n\n    // If not matching any tags that require a specific type of comparison, then we hard-code false because\n    // the only thing remaining is strict equality, which has already been compared. This is for a few reasons:\n    //   - Certain types that cannot be introspected (e.g., `WeakMap`). For these types, this is the only\n    //     comparison that can be made.\n    //   - For types that can be introspected, but rarely have requirements to be compared\n    //     (`ArrayBuffer`, `DataView`, etc.), the cost is avoided to prioritize the common\n    //     use-cases (may be included in a future release, if requested enough).\n    //   - For types that can be introspected but do not have an objective definition of what\n    //     equality is (`Error`, etc.), the subjective decision is to be conservative and strictly compare.\n    // In all cases, these decisions should be reevaluated based on changes to the language and\n    // common development practices.\n    return false;\n  };\n}\n\n/**\n * Create the configuration object used for building comparators.\n */\nexport function createEqualityComparatorConfig<Meta>({\n  circular,\n  createCustomConfig,\n  strict,\n}: CustomEqualCreatorOptions<Meta>): ComparatorConfig<Meta> {\n  let config = {\n    areArraysEqual: strict\n      ? areObjectsEqualStrictDefault\n      : areArraysEqualDefault,\n    areDatesEqual: areDatesEqualDefault,\n    areErrorsEqual: areErrorsEqualDefault,\n    areFunctionsEqual: areFunctionsEqualDefault,\n    areMapsEqual: strict\n      ? combineComparators(areMapsEqualDefault, areObjectsEqualStrictDefault)\n      : areMapsEqualDefault,\n    areNumbersEqual: areNumbersEqualDefault,\n    areObjectsEqual: strict\n      ? areObjectsEqualStrictDefault\n      : areObjectsEqualDefault,\n    arePrimitiveWrappersEqual: arePrimitiveWrappersEqualDefault,\n    areRegExpsEqual: areRegExpsEqualDefault,\n    areSetsEqual: strict\n      ? combineComparators(areSetsEqualDefault, areObjectsEqualStrictDefault)\n      : areSetsEqualDefault,\n    areTypedArraysEqual: strict\n      ? areObjectsEqualStrictDefault\n      : areTypedArraysEqualDefault,\n    areUrlsEqual: areUrlsEqualDefault,\n    unknownTagComparators: undefined,\n  };\n\n  if (createCustomConfig) {\n    config = assign({}, config, createCustomConfig(config));\n  }\n\n  if (circular) {\n    const areArraysEqual = createIsCircular(config.areArraysEqual);\n    const areMapsEqual = createIsCircular(config.areMapsEqual);\n    const areObjectsEqual = createIsCircular(config.areObjectsEqual);\n    const areSetsEqual = createIsCircular(config.areSetsEqual);\n\n    config = assign({}, config, {\n      areArraysEqual,\n      areMapsEqual,\n      areObjectsEqual,\n      areSetsEqual,\n    });\n  }\n\n  return config;\n}\n\n/**\n * Default equality comparator pass-through, used as the standard `isEqual` creator for\n * use inside the built comparator.\n */\nexport function createInternalEqualityComparator<Meta>(\n  compare: EqualityComparator<Meta>,\n): InternalEqualityComparator<Meta> {\n  return function (\n    a: any,\n    b: any,\n    _indexOrKeyA: any,\n    _indexOrKeyB: any,\n    _parentA: any,\n    _parentB: any,\n    state: State<Meta>,\n  ) {\n    return compare(a, b, state);\n  };\n}\n\n/**\n * Create the `isEqual` function used by the consuming application.\n */\nexport function createIsEqual<Meta>({\n  circular,\n  comparator,\n  createState,\n  equals,\n  strict,\n}: CreateIsEqualOptions<Meta>) {\n  if (createState) {\n    return function isEqual<A, B>(a: A, b: B): boolean {\n      const { cache = circular ? new WeakMap() : undefined, meta } =\n        createState();\n\n      return comparator(a, b, {\n        cache,\n        equals,\n        meta,\n        strict,\n      } as State<Meta>);\n    };\n  }\n\n  if (circular) {\n    return function isEqual<A, B>(a: A, b: B): boolean {\n      return comparator(a, b, {\n        cache: new WeakMap(),\n        equals,\n        meta: undefined as Meta,\n        strict,\n      } as State<Meta>);\n    };\n  }\n\n  const state = {\n    cache: undefined,\n    equals,\n    meta: undefined,\n    strict,\n  } as State<Meta>;\n\n  return function isEqual<A, B>(a: A, b: B): boolean {\n    return comparator(a, b, state);\n  };\n}\n","import {\n  createEqualityComparatorConfig,\n  createEqualityComparator,\n  createInternalEqualityComparator,\n  createIsEqual,\n} from './comparator.js';\nimport type { CustomEqualCreatorOptions } from './internalTypes.js';\nimport { sameValueZeroEqual } from './utils.js';\n\nexport { sameValueZeroEqual };\nexport type {\n  AnyEqualityComparator,\n  Cache,\n  CircularState,\n  ComparatorConfig,\n  CreateCustomComparatorConfig,\n  CreateState,\n  CustomEqualCreatorOptions,\n  DefaultState,\n  Dictionary,\n  EqualityComparator,\n  EqualityComparatorCreator,\n  InternalEqualityComparator,\n  PrimitiveWrapper,\n  State,\n  TypeEqualityComparator,\n  TypedArray,\n} from './internalTypes.js';\n\n/**\n * Whether the items passed are deeply-equal in value.\n */\nexport const deepEqual = createCustomEqual();\n\n/**\n * Whether the items passed are deeply-equal in value based on strict comparison.\n */\nexport const strictDeepEqual = createCustomEqual({ strict: true });\n\n/**\n * Whether the items passed are deeply-equal in value, including circular references.\n */\nexport const circularDeepEqual = createCustomEqual({ circular: true });\n\n/**\n * Whether the items passed are deeply-equal in value, including circular references,\n * based on strict comparison.\n */\nexport const strictCircularDeepEqual = createCustomEqual({\n  circular: true,\n  strict: true,\n});\n\n/**\n * Whether the items passed are shallowly-equal in value.\n */\nexport const shallowEqual = createCustomEqual({\n  createInternalComparator: () => sameValueZeroEqual,\n});\n\n/**\n * Whether the items passed are shallowly-equal in value based on strict comparison\n */\nexport const strictShallowEqual = createCustomEqual({\n  strict: true,\n  createInternalComparator: () => sameValueZeroEqual,\n});\n\n/**\n * Whether the items passed are shallowly-equal in value, including circular references.\n */\nexport const circularShallowEqual = createCustomEqual({\n  circular: true,\n  createInternalComparator: () => sameValueZeroEqual,\n});\n\n/**\n * Whether the items passed are shallowly-equal in value, including circular references,\n * based on strict comparison.\n */\nexport const strictCircularShallowEqual = createCustomEqual({\n  circular: true,\n  createInternalComparator: () => sameValueZeroEqual,\n  strict: true,\n});\n\n/**\n * Create a custom equality comparison method.\n *\n * This can be done to create very targeted comparisons in extreme hot-path scenarios\n * where the standard methods are not performant enough, but can also be used to provide\n * support for legacy environments that do not support expected features like\n * `RegExp.prototype.flags` out of the box.\n */\nexport function createCustomEqual<Meta = undefined>(\n  options: CustomEqualCreatorOptions<Meta> = {},\n) {\n  const {\n    circular = false,\n    createInternalComparator: createCustomInternalComparator,\n    createState,\n    strict = false,\n  } = options;\n\n  const config = createEqualityComparatorConfig<Meta>(options);\n  const comparator = createEqualityComparator(config);\n  const equals = createCustomInternalComparator\n    ? createCustomInternalComparator(comparator)\n    : createInternalEqualityComparator(comparator);\n\n  return createIsEqual({ circular, comparator, createState, equals, strict });\n}\n","import {\n  type Form,\n  type FormField,\n  type FieldsField,\n} from '@wix/ambassador-forms-v4-form/types';\n\nimport { type Submission } from '../submission';\n\nexport function mapByTargets(submission: Submission, form: Form): Submission {\n  return mapBy(submission, form, 'target');\n}\n\nexport function mapByIds(submission: Submission, form: Form): Submission {\n  return mapBy(submission, form, 'id');\n}\n\nfunction mapBy(\n  submission: Submission,\n  form: Form,\n  by: 'id' | 'target',\n): Submission {\n  const from = by === 'id' ? 'target' : 'id';\n  const fields =\n    (form?.fields?.length ?? 0) > 0\n      ? form?.fields ?? []\n      : form?.formFields ?? [];\n  const getIdOrTarget = (\n    field: FormField | FieldsField,\n    _by: 'id' | 'target',\n  ): string | null | undefined => {\n    if (_by === 'id') {\n      return field[_by];\n    } else if ('inputOptions' in field) {\n      return (field as FieldsField).inputOptions?.target;\n    } else {\n      return (field as FormField).target;\n    }\n  };\n  return fields.reduce<Submission>(\n    (acc, field) => {\n      const source = getIdOrTarget(field, from);\n      const destination = getIdOrTarget(field, by);\n      if (\n        source &&\n        destination &&\n        source !== destination &&\n        acc.hasOwnProperty(source)\n      ) {\n        acc[destination] = acc[source];\n        const { [source]: omitted, ...rest } = acc;\n        acc = rest;\n      }\n      return acc;\n    },\n    { ...submission },\n  );\n}\n","import {\n  type Form,\n  type FormField,\n  type FormOverride,\n  type FormRule,\n  OverrideEntityType,\n} from '@wix/ambassador-forms-v4-form/types';\n\nimport {\n  fieldPathMapToPlatfomized,\n  type SupportedPath,\n  supportedPaths,\n} from './transform-path-to-v2';\nimport { asRequired } from './utils';\n\ntype PropertiesOverridesByItem = {\n  [entityId: string]: { path: string[]; value: any }[];\n};\nconst PATH_SEPARATOR = '.';\n\nexport function applyItemPropertiesOverride(\n  formSchema: Form,\n  rule: FormRule,\n): Form {\n  if (rule.overrides) {\n    const overriddenFormSchema = applyFormOverride(\n      formSchema,\n      mapOverridesByItem(rule.overrides, isFormOverride, isSupportedFormPath),\n    );\n    return {\n      ...overriddenFormSchema,\n      fields: applyItemsOverride(\n        overriddenFormSchema.fields ?? [],\n        mapOverridesByItem(\n          rule.overrides,\n          isFieldOverride,\n          isSupportedFieldPath,\n        ),\n      ),\n      ...(overriddenFormSchema.formFields && {\n        formFields: applyItemsOverride(\n          overriddenFormSchema.formFields ?? [],\n          mapOverridesV2ByItem(rule.overrides, isFieldOverride),\n        ),\n      }),\n    };\n  }\n  return formSchema;\n}\n\nfunction applyItemsOverride(\n  items: { id?: string }[],\n  formItemOverrides: PropertiesOverridesByItem,\n): FormField[] | undefined {\n  return items.map((formField) => {\n    const fieldOverrides = formItemOverrides[asRequired(formField.id)] || [];\n    return fieldOverrides.reduce(\n      (acc, override) => setToValue(acc, override.path, override.value),\n      formField,\n    );\n  });\n}\n\nfunction applyFormOverride(\n  formSchema: Form,\n  formItemOverrides: PropertiesOverridesByItem,\n): Form {\n  const formOverrides = Object.values(formItemOverrides).flat();\n  return formOverrides.reduce(\n    (acc, override) => setToValue(acc, override.path, override.value),\n    formSchema,\n  );\n}\n\nfunction mapOverridesByItem(\n  overrideItems: FormOverride[],\n  isOverride: (override: FormOverride) => Boolean,\n  isSupportedPath: (path: string) => Boolean,\n) {\n  return overrideItems\n    .filter(isOverride)\n    .reduce<PropertiesOverridesByItem>((acc, overrideItem) => {\n      const entityId = asRequired(overrideItem.entityId);\n      const overrides = Object.entries(overrideItem.valueChanges ?? {})\n        .filter(([path]) => isSupportedPath(path))\n        .map(([path, value]) => ({\n          path: path.split(PATH_SEPARATOR),\n          value,\n        }));\n\n      acc[entityId] = [...(acc[entityId] || []), ...overrides];\n      return acc;\n    }, {});\n}\n\nfunction mapOverridesV2ByItem(\n  overrideItems: FormOverride[],\n  isOverride: (override: FormOverride) => Boolean,\n) {\n  return overrideItems\n    .filter(isOverride)\n    .reduce<PropertiesOverridesByItem>((acc, overrideItem) => {\n      const entityId = asRequired(overrideItem.entityId);\n      const overrides = Object.entries(overrideItem.valueChanges ?? {})\n        .flatMap(([path, value]) => {\n          const resolvedV2Paths =\n            fieldPathMapToPlatfomized[path as SupportedPath] || [];\n          return resolvedV2Paths.map((pathV2) => [pathV2, value]);\n        })\n        .map(([path, value]) => ({\n          path: path.split(PATH_SEPARATOR),\n          value,\n        }));\n\n      acc[entityId] = [...(acc[entityId] || []), ...overrides];\n      return acc;\n    }, {});\n}\n\nfunction setToValue(obj: any, pathProps: string[], value: unknown): any {\n  if (value !== undefined && obj !== undefined) {\n    const [prop, ...rest] = pathProps;\n    if (rest.length) {\n      const valueToSet = setToValue(obj[prop], rest, value);\n      if (valueToSet !== undefined) {\n        return {\n          ...obj,\n          [prop]: valueToSet,\n        };\n      }\n      return obj;\n    }\n    return {\n      ...obj,\n      [prop]: value,\n    };\n  }\n  return obj;\n}\n\nfunction isFieldOverride(override: FormOverride): Boolean {\n  return override.entityType === OverrideEntityType.FIELD;\n}\n\nfunction isFormOverride(override: FormOverride): Boolean {\n  return override.entityType === OverrideEntityType.FORM;\n}\n\nfunction isSupportedFieldPath(path: string): Boolean {\n  return supportedPaths.includes(path);\n}\n\nfunction isSupportedFormPath(path: string): Boolean {\n  return ['fields', 'steps'].includes(path);\n}\n","export const supportedPaths = [\n  'hidden',\n  'validation.required',\n  'validation.string.enum',\n  'validation.boolean.enum',\n  'validation.predefined.multilineAddressOptions.fields',\n  'view.options',\n  'view.countryCode',\n];\n\nexport type SupportedPath = (typeof supportedPaths)[number];\nexport const fieldPathMapToPlatfomized: {\n  [key in (typeof supportedPaths)[number]]: string[];\n} = {\n  hidden: ['hidden'],\n  'validation.required': ['inputOptions.required'],\n  'validation.string.enum': ['inputOptions.stringOptions.validation.enum'],\n  'validation.boolean.enum': ['inputOptions.booleanOptions.validation.enum'],\n  'view.options': [\n    'inputOptions.stringOptions.radioGroupOptions.options',\n    'inputOptions.stringOptions.dropdownOptions.options',\n    'inputOptions.arrayOptions.checkboxGroupOptions.options',\n  ],\n  'view.countryCode': [],\n};\n","import {\n  type Form,\n  type FormRule,\n  OverrideEntityType,\n} from '@wix/ambassador-forms-v4-form/types';\n\nimport { type ProductSubmission } from './submission';\nimport { type ConditionJson, type RuleJson } from './types';\n\nexport function asRequired<T>(value: T | null | undefined): T {\n  if (typeof asOptional(value) !== 'undefined') {\n    return value as T;\n  }\n  throw new Error('Value is null | undefined');\n}\n\nexport function isCondition(data: any): data is ConditionJson {\n  return !!data?.fact && !!data?.operator;\n}\n\nexport function getRulesOrConditions(\n  data?: RuleJson | null,\n): (RuleJson | ConditionJson)[] {\n  return data?.and || data?.or || [];\n}\n\nexport function asOptional<T>(value: T | null | undefined): T | undefined {\n  return value == null ? undefined : value;\n}\n\nexport function valueIsMissing<T>(value: T | null | undefined) {\n  return (\n    typeof asOptional(value) === 'undefined' ||\n    (typeof value === 'string' && value === '') ||\n    (Array.isArray(value) && !value.length)\n  );\n}\n\nexport function lessThan(\n  given: number,\n  expected: number,\n  orEqual: boolean = false,\n): boolean {\n  return orEqual ? given <= expected : given < expected;\n}\n\nexport function greaterThan(\n  given: number,\n  expected: number,\n  orEqual: boolean = false,\n): boolean {\n  return orEqual ? given >= expected : given > expected;\n}\n\nexport function between(\n  given: number,\n  lowerBound: number,\n  upperBound: number,\n): boolean {\n  return greaterThan(given, lowerBound) && lessThan(given, upperBound);\n}\n\nfunction isTimeOnly(value: string): boolean {\n  const timeOnlyRegex = /^\\d{2}:\\d{2}(:\\d{2})?$/;\n  return timeOnlyRegex.test(value);\n}\n\nexport function asUtcDate(value: string): Date | null {\n  try {\n    const prefixAnyDate = '2000-01-01 ';\n    const date = isTimeOnly(value)\n      ? new Date(prefixAnyDate + value)\n      : new Date(value);\n\n    return isNaN(date.getTime()) ? null : date;\n  } catch (_) {\n    return null;\n  }\n}\n\nexport function getNumberValuesToCompare(...values: any[]): (number | null)[] {\n  return values.map((value) => {\n    if (typeof value === 'string') {\n      return getDateUtcTimestamp(value);\n    }\n    if (typeof value === 'number') {\n      return value;\n    }\n    if (isProductSubmission(value)) {\n      return getProductPrice(value);\n    }\n    return null;\n  });\n}\n\nfunction getDateUtcTimestamp(givenValue: string): number | null {\n  const givenDate = asUtcDate(givenValue);\n  return givenDate ? givenDate.getTime() : null;\n}\n\nexport function getProductPrice(givenValue: ProductSubmission[]) {\n  return givenValue[0].price;\n}\n\nexport function isObject(givenValue: any): givenValue is object {\n  return (\n    typeof givenValue === 'object' &&\n    !Array.isArray(givenValue) &&\n    givenValue !== null\n  );\n}\n\nexport const isArrayOfNumbers = (value: any[]): value is number[] => {\n  return value.every((item) => typeof item === 'number');\n};\n\nexport function isProductSubmission(value: any): value is ProductSubmission[] {\n  return (\n    Array.isArray(value) &&\n    value.every(\n      (element) =>\n        isObject(element) &&\n        'productId' in element &&\n        'price' in element &&\n        'quantity' in element,\n    )\n  );\n}\n\nexport function isValueEmpty(givenValue: any) {\n  return givenValue === undefined || givenValue === null || givenValue === '';\n}\n\nfunction isValidCondition(\n  rule: RuleJson | undefined | null,\n  fields: { id?: string }[] = [],\n): boolean {\n  if (rule === undefined) {\n    return true;\n  }\n  const rulesOrConditions = getRulesOrConditions(rule);\n  if (!rulesOrConditions.length) {\n    return false;\n  }\n  return rulesOrConditions.every((conditionOrRule) => {\n    if (isCondition(conditionOrRule)) {\n      return fields?.some((field) => field.id === conditionOrRule.fact);\n    }\n    return isValidCondition(conditionOrRule, fields);\n  });\n}\n\nexport function isFormRuleValid(\n  formRule: FormRule | undefined | null,\n  formSchema?: Form,\n): boolean {\n  if (!formRule || !formRule?.overrides?.length || !formSchema) {\n    return false;\n  }\n  const { fields, nestedForms, formFields } = formSchema;\n  const fieldsToCheck = (fields ?? []).concat(formFields ?? []);\n  const conditionValid = isValidCondition(formRule.condition, fieldsToCheck);\n\n  const overrideValid = formRule?.overrides.some((override) => {\n    if (override.entityType === OverrideEntityType.FORM) {\n      return (\n        formSchema.id === override.entityId ||\n        nestedForms?.some(\n          (nestedForm) => nestedForm.form?.id === override.entityId,\n        )\n      );\n    }\n\n    const wasFieldFound = (fieldsToCheck?.map((f) => f.id) ?? []).includes(\n      override.entityId!!,\n    );\n    return override.entityId ? wasFieldFound : false;\n  });\n\n  return conditionValid && overrideValid;\n}\n","import { type FormRule } from '@wix/ambassador-forms-v4-form/types';\nimport { defaultEngine, Rule } from 'js-rules-engine';\n\nimport { setUpOperators } from './set-up-operators';\nimport { type Submission } from './submission';\n\nexport function evaluateOverrideConditionFactory(\n  dateFactory: () => Date = () => new Date(),\n) {\n  setUpOperators(defaultEngine, dateFactory);\n\n  return function evaluateOverrideCondition(\n    override: FormRule,\n    submission: Submission = {},\n  ): boolean {\n    if (override.condition) {\n      try {\n        const rule = getRule(override.condition);\n        return rule.evaluate(submission);\n      } catch (e) {\n        console.error(e);\n        return false;\n      }\n    }\n    return true;\n  };\n\n  function getRule(condition: object): Rule {\n    return new Rule(condition);\n  }\n}\n","import { Operator } from 'js-rules-engine';\nimport { type Engine } from 'js-rules-engine/dist/engine';\n\nimport { ConditionOperators } from './condition-operators';\nimport { valueContainsAny } from './operators/any';\nimport { arrayEquals } from './operators/array-equals';\nimport { valueIsBetween } from './operators/between';\nimport { checked } from './operators/checked';\nimport { valueContains } from './operators/contains';\nimport { valueEqual } from './operators/equal';\nimport { valueIsGreaterThan } from './operators/greater-than';\nimport { valueIn } from './operators/in';\nimport { valueIsDateNewerThan } from './operators/is-date-newer-than';\nimport { valueIsDateOlderThan } from './operators/is-date-older-than';\nimport { valueIsLessThan } from './operators/less-than';\nimport { valueIsMissing } from './utils';\n\nexport function setUpOperators(defaultEngine: Engine, dateFactory: () => Date) {\n  const operators = [\n    new Operator(ConditionOperators.empty, (value) => valueIsMissing(value)),\n    new Operator(\n      ConditionOperators.notEmpty,\n      (value) => !valueIsMissing(value),\n    ),\n    new Operator(ConditionOperators.between, (givenValue, expectedValue) =>\n      valueIsBetween(givenValue, expectedValue),\n    ),\n    new Operator(ConditionOperators.greaterThan, (givenValue, expectedValue) =>\n      valueIsGreaterThan(givenValue, expectedValue),\n    ),\n    new Operator(ConditionOperators.after, (givenValue, expectedValue) =>\n      valueIsGreaterThan(givenValue, expectedValue),\n    ),\n    new Operator(\n      ConditionOperators.greaterThanOrEqual,\n      (givenValue, expectedValue) =>\n        valueIsGreaterThan(givenValue, expectedValue, true),\n    ),\n    new Operator(ConditionOperators.afterOrEqual, (givenValue, expectedValue) =>\n      valueIsGreaterThan(givenValue, expectedValue, true),\n    ),\n    new Operator(ConditionOperators.lessThan, (givenValue, expectedValue) =>\n      valueIsLessThan(givenValue, expectedValue),\n    ),\n    new Operator(ConditionOperators.before, (givenValue, expectedValue) =>\n      valueIsLessThan(givenValue, expectedValue),\n    ),\n    new Operator(\n      ConditionOperators.lessThanOrEqual,\n      (givenValue, expectedValue) =>\n        valueIsLessThan(givenValue, expectedValue, true),\n    ),\n    new Operator(\n      ConditionOperators.beforeOrEqual,\n      (givenValue, expectedValue) =>\n        valueIsLessThan(givenValue, expectedValue, true),\n    ),\n    new Operator(ConditionOperators.contains, (givenValue, expectedValue) =>\n      valueContains(givenValue, expectedValue),\n    ),\n    new Operator(ConditionOperators.equal, (givenValue, expectedValue) =>\n      valueEqual(givenValue, expectedValue),\n    ),\n    new Operator(\n      ConditionOperators.notEqual,\n      (givenValue, expectedValue) => !valueEqual(givenValue, expectedValue),\n    ),\n    new Operator(\n      ConditionOperators.notContains,\n      (givenValue, expectedValue) => !valueContains(givenValue, expectedValue),\n    ),\n    new Operator(ConditionOperators.arrayEqual, (givenValue, expectedValue) =>\n      arrayEquals(givenValue, expectedValue),\n    ),\n    new Operator(\n      ConditionOperators.arrayNotEqual,\n      (givenValue, expectedValue) => !arrayEquals(givenValue, expectedValue),\n    ),\n    new Operator(ConditionOperators.checked, checked),\n    new Operator(\n      ConditionOperators.notChecked,\n      (givenValue) => !checked(givenValue),\n    ),\n    new Operator(ConditionOperators.any, (givenValue, expectedValue) =>\n      valueContainsAny(givenValue, expectedValue),\n    ),\n    new Operator(ConditionOperators.in, (givenValue, expectedValue) =>\n      valueIn(givenValue, expectedValue),\n    ),\n    new Operator(\n      ConditionOperators.notIn,\n      (givenValue, expectedValue) => !valueIn(givenValue, expectedValue),\n    ),\n    new Operator(\n      ConditionOperators.isDateNewerThan,\n      (givenValue, expectedValue) =>\n        valueIsDateNewerThan(givenValue, expectedValue, { dateFactory }),\n    ),\n    new Operator(\n      ConditionOperators.isDateOlderThan,\n      (givenValue, expectedValue) =>\n        valueIsDateOlderThan(givenValue, expectedValue, { dateFactory }),\n    ),\n    new Operator(\n      ConditionOperators.isDateNewerThanOrEqual,\n      (givenValue, expectedValue) =>\n        valueIsDateNewerThan(givenValue, expectedValue, {\n          orEqual: true,\n          dateFactory,\n        }),\n    ),\n    new Operator(\n      ConditionOperators.isDateOlderThanOrEqual,\n      (givenValue, expectedValue) =>\n        valueIsDateOlderThan(givenValue, expectedValue, {\n          orEqual: true,\n          dateFactory,\n        }),\n    ),\n  ];\n\n  operators.forEach((operator) => {\n    defaultEngine.removeOperator(operator.name);\n    defaultEngine.addOperator(operator);\n  });\n}\n","export enum ConditionOperators {\n  equal = 'equal',\n  notEqual = 'notEqual',\n  notEmpty = 'notEmpty',\n  empty = 'empty',\n  contains = 'contains',\n  notContains = 'notContains',\n  greaterThanOrEqual = 'greaterThanOrEqual',\n  greaterThan = 'greaterThan',\n  afterOrEqual = 'afterOrEqual',\n  after = 'after',\n  lessThanOrEqual = 'lessThanOrEqual',\n  lessThan = 'lessThan',\n  beforeOrEqual = 'beforeOrEqual',\n  before = 'before',\n  between = 'between',\n  any = 'any',\n  arrayEqual = 'arrayEqual',\n  arrayNotEqual = 'arrayNotEqual',\n  checked = 'checked',\n  notChecked = 'notChecked',\n  in = 'in',\n  notIn = 'notIn',\n  isDateNewerThan = 'isDateNewerThan',\n  isDateOlderThan = 'isDateOlderThan',\n  isDateNewerThanOrEqual = 'isDateNewerThanOrEqual',\n  isDateOlderThanOrEqual = 'isDateOlderThanOrEqual',\n}\n","import { isProductSubmission, isValueEmpty } from '../utils';\n\nexport function valueContainsAny(\n  _givenValue: any,\n  expectedValue: any,\n): boolean {\n  if (isValueEmpty(_givenValue)) {\n    return false;\n  }\n  const givenValue = Array.isArray(_givenValue) ? _givenValue : [_givenValue];\n\n  if (!Array.isArray(givenValue) || !Array.isArray(expectedValue)) {\n    throw new Error(\n      `Any operator: Unsupported values to compare ${JSON.stringify(\n        givenValue,\n      )}, ${JSON.stringify(expectedValue)}`,\n    );\n  }\n\n  if (isProductSubmission(givenValue)) {\n    return any(\n      givenValue.map((product) => product.productId),\n      expectedValue,\n    );\n  }\n  return any(givenValue, expectedValue);\n}\n\nfunction any(givenValue: any[], expectedValue: any[]): boolean {\n  return givenValue.some((v) => expectedValue.includes(v));\n}\n","import { isProductSubmission, isValueEmpty } from '../utils';\n\nexport function arrayEquals(givenValue: any, expectedValue: any): boolean {\n  if (isValueEmpty(givenValue)) {\n    return false;\n  }\n\n  if (!Array.isArray(givenValue) || !Array.isArray(expectedValue)) {\n    throw new Error(\n      `All operator: Unsupported values to compare ${JSON.stringify(\n        givenValue,\n      )}, ${JSON.stringify(expectedValue)}`,\n    );\n  }\n\n  if (givenValue.length !== expectedValue.length) {\n    return false;\n  }\n\n  if (isProductSubmission(givenValue)) {\n    return equals(\n      givenValue.map((product) => product.productId),\n      expectedValue,\n    );\n  }\n  return equals(givenValue, expectedValue);\n}\n\nfunction equals(givenValue: any[], expectedValue: any[]): boolean {\n  return expectedValue.every((v) => givenValue.includes(v));\n}\n","import {\n  between,\n  getNumberValuesToCompare,\n  isArrayOfNumbers,\n  isValueEmpty,\n} from '../utils';\n\nexport function valueIsBetween(givenValue: any, expectedValue: any): boolean {\n  if (isValueEmpty(givenValue)) {\n    return false;\n  }\n\n  if (!Array.isArray(expectedValue) || expectedValue.length !== 2) {\n    throw new Error('Expected value should be array of two elements');\n  }\n  const values = getNumberValuesToCompare(\n    givenValue,\n    expectedValue[0],\n    expectedValue[1],\n  );\n\n  if (isArrayOfNumbers(values)) {\n    const [given, firstBound, secondBound] = values;\n    return between(\n      given!,\n      Math.min(firstBound, secondBound),\n      Math.max(firstBound, secondBound),\n    );\n  }\n\n  throw new Error(\n    `Between operator: Unsupported values to compare ${givenValue}, ${JSON.stringify(\n      expectedValue,\n    )}`,\n  );\n}\n","export function checked(givenValue: any): boolean {\n  return Boolean(givenValue);\n}\n","import { isObject, isValueEmpty } from '../utils';\n\nexport function valueContains(givenValue?: any, expectedValue?: any) {\n  if (isValueEmpty(givenValue)) {\n    return false;\n  }\n\n  if (isObject(givenValue)) {\n    return Object.values(givenValue).includes(expectedValue);\n  }\n  if (Array.isArray(givenValue) || typeof givenValue === 'string') {\n    return givenValue.indexOf(expectedValue) > -1;\n  }\n\n  throw new Error(\n    `Contains operator: Unsupported values to compare ${JSON.stringify(\n      givenValue,\n    )}, ${JSON.stringify(expectedValue)}`,\n  );\n}\n","import { getProductPrice, isProductSubmission } from '../utils';\n\nexport function valueEqual(givenValue?: any, expectedValue?: any) {\n  if (isProductSubmission(givenValue)) {\n    return getProductPrice(givenValue) === expectedValue;\n  }\n\n  return givenValue === expectedValue;\n}\n","import {\n  getNumberValuesToCompare,\n  greaterThan,\n  isArrayOfNumbers,\n  isValueEmpty,\n} from '../utils';\n\nexport function valueIsGreaterThan(\n  givenValue: any,\n  expectedValue: any,\n  orEqual: boolean = false,\n): boolean {\n  if (isValueEmpty(givenValue)) {\n    return false;\n  }\n\n  const values = getNumberValuesToCompare(givenValue, expectedValue);\n\n  if (isArrayOfNumbers(values)) {\n    const [given, expected] = values;\n    return greaterThan(given, expected, orEqual);\n  }\n\n  throw new Error(\n    `GreaterThan operator: Unsupported values to compare ${givenValue}, ${expectedValue}`,\n  );\n}\n","import { isObject } from '../utils';\n\nexport function valueIn(givenValue: any, expectedValue: any): boolean {\n  if (isObject(expectedValue)) {\n    return Object.values(expectedValue).includes(givenValue);\n  }\n\n  if (Array.isArray(expectedValue) || typeof expectedValue === 'string') {\n    return expectedValue.indexOf(givenValue) > -1;\n  }\n\n  throw new Error(\n    `In operator: Unsupported values to compare ${JSON.stringify(\n      givenValue,\n    )}, ${JSON.stringify(expectedValue)}`,\n  );\n}\n","import dayjs from 'dayjs';\nimport IsSameOrAfter from 'dayjs/plugin/isSameOrAfter';\n\nimport {\n  getNumberValuesToCompare,\n  isArrayOfNumbers,\n  isValueEmpty,\n} from '../utils';\n\nexport function valueIsDateNewerThan(\n  givenValue: any,\n  expectedValue: any,\n  {\n    orEqual = false,\n    dateFactory = () => new Date(),\n  }: {\n    orEqual?: boolean;\n    dateFactory?: () => Date;\n  } = {},\n): boolean {\n  dayjs.extend(IsSameOrAfter);\n  if (isValueEmpty(givenValue)) {\n    return false;\n  }\n  if (!Array.isArray(expectedValue) || expectedValue.length !== 2) {\n    throw new Error('Expected value should be array of two elements');\n  }\n  const values = getNumberValuesToCompare(givenValue, expectedValue[0]);\n  const unit = expectedValue[1];\n  switch (unit) {\n    case 'day':\n    case 'month':\n      if (isArrayOfNumbers(values)) {\n        const [given, units] = values;\n        const date = dayjs(given);\n        const nowUnitsAdded = dayjs(dateFactory()).add(units, unit);\n        if (orEqual) {\n          return date.isSameOrAfter(nowUnitsAdded, 'day');\n        }\n        return date.isAfter(nowUnitsAdded, 'day');\n      }\n  }\n  throw new Error(\n    `IsDateNewerThan operator: Unsupported values to compare ${givenValue}, ${expectedValue}`,\n  );\n}\n","import dayjs from 'dayjs';\nimport IsSameOrBefore from 'dayjs/plugin/isSameOrBefore';\n\nimport {\n  getNumberValuesToCompare,\n  isArrayOfNumbers,\n  isValueEmpty,\n} from '../utils';\n\nexport function valueIsDateOlderThan(\n  givenValue: any,\n  expectedValue: any,\n  {\n    orEqual = false,\n    dateFactory = () => new Date(),\n  }: {\n    orEqual?: boolean;\n    dateFactory?: () => Date;\n  } = {},\n): boolean {\n  dayjs.extend(IsSameOrBefore);\n  if (isValueEmpty(givenValue)) {\n    return false;\n  }\n  if (!Array.isArray(expectedValue) || expectedValue.length !== 2) {\n    throw new Error('Expected value should be array of two elements');\n  }\n  const values = getNumberValuesToCompare(givenValue, expectedValue[0]);\n  const unit = expectedValue[1];\n  switch (unit) {\n    case 'day':\n    case 'month':\n      if (isArrayOfNumbers(values)) {\n        const [given, units] = values;\n        const date = dayjs(given);\n        const nowUnitsAdded = dayjs(dateFactory()).add(-units, unit);\n        if (orEqual) {\n          return date.isSameOrBefore(nowUnitsAdded, 'day');\n        }\n        return date.isBefore(nowUnitsAdded, 'day');\n      }\n  }\n  throw new Error(\n    `IsDateOlderThan operator: Unsupported values to compare ${givenValue}, ${expectedValue}`,\n  );\n}\n","import {\n  getNumberValuesToCompare,\n  isArrayOfNumbers,\n  isValueEmpty,\n  lessThan,\n} from '../utils';\n\nexport function valueIsLessThan(\n  givenValue: any,\n  expectedValue: any,\n  orEqual: boolean = false,\n): boolean {\n  if (isValueEmpty(givenValue)) {\n    return false;\n  }\n\n  const values = getNumberValuesToCompare(givenValue, expectedValue);\n\n  if (isArrayOfNumbers(values)) {\n    const [given, expected] = values;\n    return lessThan(given, expected, orEqual);\n  }\n\n  throw new Error(\n    `LessThan operator: Unsupported values to compare ${givenValue}, ${expectedValue}`,\n  );\n}\n","import { type Form } from '@wix/ambassador-forms-v4-form/types';\nimport { mapByIds } from '@wix/form-mapper';\n\nimport { applyItemPropertiesOverride } from './apply-item-properties-override';\nimport { evaluateOverrideConditionFactory } from './evaluate-override-condition';\nimport { type Submission } from './submission';\nimport { asRequired, isFormRuleValid } from './utils';\n\nexport function applyOverrides(\n  formSchema: Form,\n  submission?: Submission,\n): Form {\n  const nestedForms = (formSchema?.nestedForms || []).flatMap(\n    ({ targets, form }) =>\n      (targets || []).map((target) => ({\n        form: applyFormOverrides(\n          asRequired(form),\n          (submission || {})[target] as Submission,\n        ),\n        targets: [target],\n      })),\n  );\n  return { ...applyFormOverrides(formSchema, submission), nestedForms };\n}\n\nfunction applyFormOverrides(formSchema: Form, submission?: Submission): Form {\n  const submissionsById = mapByIds(submission as Submission, formSchema);\n  const { rules } = formSchema;\n  if (rules) {\n    return rules\n      .filter((rule) => isFormRuleValid(rule, formSchema))\n      .filter((rule) =>\n        evaluateOverrideConditionFactory()(rule, submissionsById),\n      )\n      .reduce(\n        (form, rule) => applyItemPropertiesOverride(form, rule),\n        formSchema,\n      );\n  }\n  return formSchema;\n}\n","export function partition<T>(\n  items: T[],\n  condition: (item: T) => boolean,\n): [T[], T[]] {\n  return items.reduce(\n    ([truthy, falsy], element) => {\n      if (condition(element)) {\n        truthy.push(element);\n      } else {\n        falsy.push(element);\n      }\n      return [truthy, falsy];\n    },\n    [[], []] as [T[], T[]],\n  );\n}\n\nexport function mapBy<T>(\n  items: T[],\n  keyFn: (item: T) => string,\n): { [key: string]: T } {\n  return items.reduce((acc, item) => {\n    acc[keyFn(item)] = item;\n    return acc;\n  }, {} as { [key: string]: T });\n}\n","export function isDefined<T>(value: T): boolean {\n  return !(value === null || value === undefined);\n}\n","export function isEmpty(object?: Object): boolean {\n  return Boolean(object) && Boolean(Object.keys(object!).length);\n}\n","import {\n  type Form,\n  type NestedForm,\n  type NestedFormFieldOverrides,\n  type NestedFormOverrides,\n} from '@wix/ambassador-forms-v4-form/types';\n\nimport { mapBy, partition } from './array-utils';\nimport { isDefined } from './lang-utils';\nimport { isEmpty } from './object-utils';\n\nexport function applyNestedFormOverrides(parentForm: Form): Form {\n  const fieldsWithFormOverrides = parentForm.fields!.filter((field) =>\n    isEmpty(field.nestedFormOverrides?.fieldOverrides),\n  );\n  const fieldsWithFormOverridesByTarget = mapBy(\n    fieldsWithFormOverrides,\n    (field) => field.target!,\n  );\n  const nestedForms = (parentForm.nestedForms || []).reduce(\n    (acc, { targets, form } = {}) => {\n      const [targetsWithOverride, targetsWithoutOverride] = partition(\n        targets!,\n        (target: string) => Boolean(fieldsWithFormOverridesByTarget[target]),\n      );\n      const nestedFormsWithOverrides = targetsWithOverride.map((target) => ({\n        targets: [target],\n        form: applyOverrides(\n          form!,\n          fieldsWithFormOverridesByTarget[target]!.nestedFormOverrides!,\n        ),\n      }));\n      const nestedFormsWithoutOverrides = targetsWithoutOverride.length\n        ? [{ targets: targetsWithoutOverride, form }]\n        : [];\n      return [\n        ...acc,\n        ...nestedFormsWithoutOverrides,\n        ...nestedFormsWithOverrides,\n      ];\n    },\n    [] as NestedForm[],\n  );\n\n  return { ...parentForm, nestedForms };\n}\n\nfunction applyOverrides(form: Form, overrides: NestedFormOverrides): Form {\n  const fieldOverrides = overrides.fieldOverrides!;\n  return {\n    ...form,\n    fields: form.fields!.map((field) => {\n      const { hidden: hiddenOverride, required: requiredOverride } =\n        (fieldOverrides[field.id!] || {}) as NestedFormFieldOverrides;\n      return {\n        ...field,\n        ...(isDefined(hiddenOverride) && { hidden: hiddenOverride! }),\n        ...(isDefined(requiredOverride) &&\n          isDefined(field.validation) && {\n            validation: {\n              ...field.validation,\n              required: requiredOverride!,\n            },\n          }),\n      };\n    }),\n  };\n}\n","import { type ValidationMode } from '@wix/ambassador-forms-v1-validation-result/types';\nimport { type Form } from '@wix/ambassador-forms-v4-form/types';\nimport { type AddressTemplate } from '@wix/form-fields';\n\nimport { type FormValues } from '../types';\n\nconst getFormValidator = async (\n  form: Form,\n  addressTemplates?: AddressTemplate[],\n  validationMode?: ValidationMode,\n) => {\n  const [{ FormValidator }, { MultilineAddressToolkit }] = await Promise.all([\n    import(/* webpackChunkName: \"form-validator\" */ '@wix/form-validator'),\n    import(\n      /* webpackChunkName: \"form-multiline-address\" */ '@wix/form-multiline-address'\n    ),\n  ]);\n\n  if (addressTemplates?.length) {\n    const addressForms = addressTemplates.map((template) => template.template);\n    const addressToolkit = new MultilineAddressToolkit(addressForms as Form[]);\n\n    return new FormValidator(\n      [form],\n      validationMode,\n      false,\n      addressToolkit.getFormForValidation,\n      addressToolkit.normalizeEmptyValues,\n      true,\n    );\n  }\n  return new FormValidator(\n    [form],\n    validationMode,\n    undefined,\n    undefined,\n    undefined,\n    true,\n  );\n};\n\nexport const validate = async (\n  form: Form,\n  values: FormValues,\n  addressTemplates?: AddressTemplate[],\n  validationMode?: ValidationMode,\n) => {\n  if (!form.id) {\n    return;\n  }\n\n  const formValidator = await getFormValidator(\n    form,\n    addressTemplates,\n    validationMode,\n  );\n\n  return formValidator.validate(form.id, values);\n};\n\nexport const validateFields = async (\n  form: Form,\n  values: FormValues,\n  addressTemplates?: AddressTemplate[],\n  validationMode?: ValidationMode,\n) => {\n  if (!form.id) {\n    return;\n  }\n\n  const formValidator = await getFormValidator(\n    form,\n    addressTemplates,\n    validationMode,\n  );\n\n  return formValidator.validateFields(form.id, values);\n};\n","import {\n  type Form,\n  type NestedForm,\n} from '@wix/ambassador-forms-v4-form/types';\n\nimport { type FormsById } from '../types';\n\nexport type FormsByTarget = { [target: string]: Form };\n\nexport function applyNestedForms(\n  form: Form,\n  nestedFormsById?: FormsById,\n): Form {\n  if (!form.nestedForms && !nestedFormsById) {\n    return form;\n  }\n\n  const nestedFormsByTarget = getNestedFormsByTarget(form);\n\n  return {\n    ...form,\n    fields: form.fields?.map((field) => {\n      const fieldTarget = field.target;\n      if (!fieldTarget) {\n        return field;\n      }\n\n      const nestedFormId = field.nestedFormId;\n      if (!nestedFormId) {\n        return field;\n      }\n\n      const nestedForm: Form | undefined =\n        nestedFormsByTarget?.[fieldTarget] ?? nestedFormsById?.[nestedFormId];\n\n      if (nestedForm) {\n        return { ...field, view: { ...field.view, form: nestedForm } };\n      }\n\n      return field;\n    }),\n  };\n}\n\nexport function getNestedFormsByTarget(form: Form) {\n  return form.nestedForms?.reduce<FormsByTarget>(\n    (byTarget, { targets, form: nestedForm }) => {\n      if (!nestedForm || !targets) {\n        return byTarget;\n      }\n      for (const target of targets) {\n        byTarget[target] = nestedForm;\n      }\n      return byTarget;\n    },\n    {},\n  );\n}\n\nexport function getNestedFormArray(formsByTarget: FormsByTarget): NestedForm[] {\n  return Object.keys(formsByTarget).map((target) => {\n    return { targets: [target], form: formsByTarget[target] };\n  });\n}\n","import { type Form, type FormField } from '@wix/ambassador-forms-v4-form/types';\nimport {\n  FIELD_TYPES,\n  type FieldType,\n  type FormValues,\n  validateBirthdate,\n  validateVatID,\n  type ExternalData,\n} from '@wix/form-fields';\nimport { type ValidationError } from '@wix/form-validator';\n\nexport const runAdditionalValidation = ({\n  form,\n  values,\n  externalData,\n}: {\n  form: Form;\n  values: FormValues;\n  externalData?: ExternalData;\n}) => {\n  const additionalErrors = form.fields?.reduce(\n    (acc: Record<string, ValidationError>, field: FormField) => {\n      const fieldTarget = field.target;\n      if (!fieldTarget) {\n        return acc;\n      }\n      const fieldType = field?.view?.fieldType;\n      const fieldValue = values[fieldTarget];\n      const validateField =\n        ADDITIONAL_FIELD_VALIDATION[\n          fieldType as keyof typeof ADDITIONAL_FIELD_VALIDATION\n        ];\n      const error = validateField?.({\n        value: fieldValue,\n        target: fieldTarget,\n        externalData,\n      });\n      if (error) {\n        acc[fieldTarget] = error;\n      }\n      return acc;\n    },\n    {},\n  );\n\n  return additionalErrors;\n};\n\nconst ADDITIONAL_FIELD_VALIDATION = {\n  [FIELD_TYPES.TEXT_INPUT]: null,\n  [FIELD_TYPES.CHECKBOX_GROUP]: null,\n  [FIELD_TYPES.RADIO_GROUP]: null,\n  [FIELD_TYPES.QUIZ_RADIO_GROUP]: null,\n  [FIELD_TYPES.DONATION]: null,\n  [FIELD_TYPES.DROPDOWN]: null,\n  [FIELD_TYPES.URL_INPUT]: null,\n  [FIELD_TYPES.NUMBER_INPUT]: null,\n  [FIELD_TYPES.CHALLENGES_NUMBER]: null,\n  [FIELD_TYPES.CHALLENGES_SHORT_TEXT]: null,\n  [FIELD_TYPES.CHALLENGES_LONG_TEXT]: null,\n  [FIELD_TYPES.CHALLENGES_MULTI_CHOICE]: null,\n  [FIELD_TYPES.CHALLENGES_IMAGE_CHOICE]: null,\n  [FIELD_TYPES.CHALLENGES_SINGLE_CHOICE]: null,\n  [FIELD_TYPES.CHALLENGES_FILE_UPLOAD]: null,\n  [FIELD_TYPES.QUIZ_TEXT_INPUT]: null,\n  [FIELD_TYPES.QUIZ_NUMBER_INPUT]: null,\n  [FIELD_TYPES.QUIZ_CHECKBOX_GROUP]: null,\n  [FIELD_TYPES.FILE_UPLOAD]: null,\n  [FIELD_TYPES.SIGNATURE]: null,\n  [FIELD_TYPES.CONTACTS_EMAIL]: null,\n  [FIELD_TYPES.CONTACTS_PHONE]: null,\n  [FIELD_TYPES.CHECKBOX]: null,\n  [FIELD_TYPES.DATE_INPUT]: null,\n  [FIELD_TYPES.DATE_TIME_INPUT]: null,\n  [FIELD_TYPES.TIME_INPUT]: null,\n  [FIELD_TYPES.DATE_PICKER]: null,\n  [FIELD_TYPES.CONTACTS_COMPANY]: null,\n  [FIELD_TYPES.CONTACTS_POSITION]: null,\n  [FIELD_TYPES.CONTACTS_TAX_ID]: null,\n  [FIELD_TYPES.CONTACTS_FIRST_NAME]: null,\n  [FIELD_TYPES.CONTACTS_LAST_NAME]: null,\n  [FIELD_TYPES.CONTACTS_ADDRESS]: null,\n  [FIELD_TYPES.CONTACTS_BIRTHDATE]: validateBirthdate,\n  [FIELD_TYPES.TEXT_AREA]: null,\n  [FIELD_TYPES.CONTACTS_SUBSCRIBE]: null,\n  [FIELD_TYPES.NESTED_FORM]: null,\n  [FIELD_TYPES.MULTILINE_ADDRESS]: null,\n  [FIELD_TYPES.MLA_COUNTRY]: null,\n  [FIELD_TYPES.MLA_CITY]: null,\n  [FIELD_TYPES.MLA_ADDRESS_LINE]: null,\n  [FIELD_TYPES.MLA_ADDRESS_LINE_2]: null,\n  [FIELD_TYPES.MLA_POSTAL_CODE]: null,\n  [FIELD_TYPES.MLA_SUBDIVISION]: null,\n  [FIELD_TYPES.MLA_STREET_NAME]: null,\n  [FIELD_TYPES.MLA_STREET_NUMBER]: null,\n  [FIELD_TYPES.MLA_APARTMENT]: null,\n  [FIELD_TYPES.FULL_NAME_FIRST_NAME]: null,\n  [FIELD_TYPES.FULL_NAME_LAST_NAME]: null,\n  [FIELD_TYPES.FULL_NAME]: null,\n  [FIELD_TYPES.DEXT_TEXT_INPUT]: null,\n  [FIELD_TYPES.DEXT_NUMBER_INPUT]: null,\n  [FIELD_TYPES.DEXT_CHECKBOX]: null,\n  [FIELD_TYPES.DEXT_CHECKBOX_GROUP]: null,\n  [FIELD_TYPES.DEXT_TAGS]: null,\n  [FIELD_TYPES.DEXT_RATING_INPUT]: null,\n  [FIELD_TYPES.ECOM_ADDITIONAL_INFO]: null,\n  [FIELD_TYPES.ECOM_ADDRESS]: null,\n  [FIELD_TYPES.ECOM_PHONE]: null,\n  [FIELD_TYPES.ECOM_FULL_NAME]: null,\n  [FIELD_TYPES.ECOM_COMPANY_NAME]: null,\n  [FIELD_TYPES.ECOM_EMAIL]: null,\n  [FIELD_TYPES.ECOM_SUBSCRIPTION]: null,\n  [FIELD_TYPES.DEXT_TEXT_AREA]: null,\n  [FIELD_TYPES.DEXT_DROPDOWN]: null,\n  [FIELD_TYPES.DEXT_RADIO_GROUP]: null,\n  [FIELD_TYPES.DEXT_URL_INPUT]: null,\n  [FIELD_TYPES.DEXT_EMAIL]: null,\n  [FIELD_TYPES.DEXT_PHONE]: null,\n  [FIELD_TYPES.DEXT_DATE_PICKER]: null,\n  [FIELD_TYPES.DEXT_DATE_TIME_INPUT]: null,\n  [FIELD_TYPES.VAT_ID]: validateVatID,\n  [FIELD_TYPES.PRODUCT_LIST]: null,\n  [FIELD_TYPES.RATING_INPUT]: null,\n  [FIELD_TYPES.TAGS]: null,\n  [FIELD_TYPES.PAYMENT_INPUT]: null,\n  [FIELD_TYPES.FIXED_PAYMENT]: null,\n  [FIELD_TYPES.BOOKINGS_FIRST_NAME]: null,\n  [FIELD_TYPES.BOOKINGS_LAST_NAME]: null,\n  [FIELD_TYPES.BOOKINGS_EMAIL]: null,\n  [FIELD_TYPES.BOOKINGS_PHONE]: null,\n  [FIELD_TYPES.BOOKINGS_ADDRESS]: null,\n  [FIELD_TYPES.APPOINTMENT]: null,\n  [FIELD_TYPES.PASSWORD]: null,\n  [FIELD_TYPES.SERVICES_DROPDOWN]: null,\n  [FIELD_TYPES.SERVICES_MULTI_CHOICE]: null,\n  [FIELD_TYPES.EVENTS_RSVP]: null,\n  [FIELD_TYPES.EVENTS_REPEATER]: null,\n  [FIELD_TYPES.IMAGE_CHOICE]: null,\n  [FIELD_TYPES.PHONE]: null,\n} satisfies Partial<Record<FieldType, unknown>>;\n","import { type Form } from '@wix/ambassador-forms-v4-form/types';\nimport {\n  type ExternalData,\n  type AddressTemplate,\n  type FormValues,\n  type PossibleValues,\n} from '@wix/form-fields';\nimport { type ValidationError, type ValidationMode } from '@wix/form-validator';\n\nimport { runAdditionalValidation } from './additional-field-validation';\nimport { validateFields } from './validation';\n\nexport const getFieldErrors = async (\n  fieldsToValidate: { path: string; value: PossibleValues }[],\n  form: Form,\n  addressTemplates?: AddressTemplate[],\n  externalData?: ExternalData,\n  validationMode?: ValidationMode,\n) => {\n  const formValues: FormValues = fieldsToValidate.reduce(\n    (acc, field) => setValue(acc, field.path, field.value),\n    {},\n  );\n\n  const result = await validateFields(\n    form,\n    formValues,\n    addressTemplates,\n    validationMode,\n  );\n  const _errors = result?.errors || [];\n\n  const additionalErrors = runAdditionalValidation({\n    form,\n    values: formValues,\n    externalData,\n  });\n\n  const allErrors = mergeErrors({ errors: _errors, additionalErrors });\n\n  const fieldErrors = allErrors.filter((error) =>\n    findErrorByNormalizedPath(fieldsToValidate, error.errorPath),\n  );\n\n  return fieldErrors;\n};\n\nexport const findErrorByNormalizedPath = (\n  fieldsToValidate: { path: string; value: PossibleValues }[],\n  errorPath: string,\n) => {\n  return !!fieldsToValidate.find(\n    (field) =>\n      errorPath === field.path || errorPath.startsWith(`${field.path}/`),\n  );\n};\n\nfunction setValue(object: any, path: string, value: any) {\n  const delimiter = '/';\n  const decomposedPath = path.split(delimiter);\n  const base = decomposedPath[0];\n\n  if (base === undefined) {\n    return object;\n  }\n\n  if (!object.hasOwnProperty(base)) {\n    object[base] = {};\n  }\n\n  value =\n    decomposedPath.length <= 1\n      ? value\n      : setValue(object[base], decomposedPath.slice(1).join(delimiter), value);\n\n  return {\n    ...object,\n    [base]: value,\n  };\n}\n\nexport const mergeErrors = ({\n  errors,\n  additionalErrors,\n}: {\n  errors: ValidationError[];\n  additionalErrors?: Record<string, ValidationError>;\n}) => {\n  const errorsToAdd: ValidationError[] = [];\n  if (additionalErrors) {\n    Object.keys(additionalErrors).forEach((fieldTarget) => {\n      const errorExists = errors.find(\n        (error) => error.errorPath === fieldTarget,\n      );\n      if (!errorExists) {\n        errorsToAdd.push(additionalErrors[fieldTarget]);\n      }\n    });\n  }\n\n  return [...errors, ...errorsToAdd];\n};\n","import type {\n  FormField,\n  Form,\n  FieldsOverrides,\n} from '@wix/ambassador-forms-v4-form/types';\n\nimport type { FormOverrides } from '../types';\n\nimport {\n  getNestedFormArray,\n  getNestedFormsByTarget,\n} from './apply-nested-forms';\n\nexport function applyFormOverrides(\n  form: Form,\n  overrides: FormOverrides,\n  recursive = true,\n): Form {\n  const nestedFormsByTarget = getNestedFormsByTarget(form);\n\n  const fields = (form.fields ?? []).map((field) => {\n    const override = getOverride({\n      id: field.id,\n      target: field.target,\n      overrides,\n    });\n\n    if (!override) {\n      return field;\n    }\n\n    if (field.target && field.nestedFormId && recursive) {\n      const nestedForm = nestedFormsByTarget?.[field.target];\n      if (nestedForm) {\n        nestedFormsByTarget[field.target] = applyFormOverrides(\n          nestedForm,\n          override as FormOverrides,\n          false,\n        );\n      }\n      return {\n        ...field,\n        ...pick(override, 'hidden'),\n        ...pick(override, 'readOnly'),\n        view: {\n          ...field.view,\n          ...pick(override, 'label'),\n          ...pick(override, 'disabled'),\n        },\n        validation: {\n          ...field.validation,\n          ...pick(override, 'required'),\n        },\n      };\n    }\n\n    let validation = field.validation;\n    let options = {};\n    if (Array.isArray(override.countries)) {\n      validation = {\n        ...validation,\n        string: {\n          ...validation?.string,\n          enum: override.countries,\n        },\n      };\n      options = override.countries\n        ? {\n            options: override.countries?.map((country) => ({ value: country })),\n          }\n        : {};\n    }\n\n    if (field.view?.fieldType === 'MULTILINE_ADDRESS') {\n      return applyMultilineAddressOverrides({\n        field,\n        override: override as FormOverrides,\n      });\n    }\n\n    return {\n      ...field,\n      ...pick(override, 'hidden'),\n      ...pick(override, 'readOnly'),\n      view: {\n        ...field.view,\n        ...pick(override, 'label'),\n        ...pick(override, 'autocomplete'),\n        ...pick(override, 'disabled'),\n        ...(override.hasOwnProperty('callingCountryCode')\n          ? { defaultCountry: override.callingCountryCode }\n          : {}),\n        ...options,\n      },\n      validation: {\n        ...validation,\n        ...pick(override, 'required'),\n      },\n    };\n  });\n\n  const nestedForms = nestedFormsByTarget\n    ? getNestedFormArray(nestedFormsByTarget)\n    : undefined;\n\n  return {\n    ...form,\n    fields,\n    ...(nestedForms ? { nestedForms } : {}),\n  };\n}\n\nfunction pick<Type extends {}>(override: Type, key: keyof Type) {\n  return override.hasOwnProperty(key) ? { [key]: override[key] } : {};\n}\n\nconst getOverride = ({\n  target,\n  id,\n  overrides,\n}: {\n  target?: string | null;\n  id?: string;\n  overrides: FormOverrides;\n}) => {\n  if (target && target in overrides) {\n    return overrides[target];\n  }\n  if (id && id in overrides) {\n    return overrides[id];\n  }\n  return undefined;\n};\n\nconst applyAddressFieldOverride = (\n  fieldName: string,\n  override: FormOverrides,\n  multilineAddressOptionsFields: FieldsOverrides,\n  multilineAddressFieldSettings: Record<string, any>,\n) => {\n  const fieldOverride = override[fieldName];\n\n  if (!fieldOverride) {\n    return {\n      multilineAddressOptionsFields,\n      multilineAddressFieldSettings,\n    };\n  }\n\n  return {\n    multilineAddressOptionsFields: {\n      ...multilineAddressOptionsFields,\n      ...(fieldOverride.required !== undefined\n        ? {\n            [fieldName]: {\n              ...multilineAddressOptionsFields?.[\n                fieldName as keyof FieldsOverrides\n              ],\n              required: fieldOverride.required,\n            },\n          }\n        : {}),\n    },\n    multilineAddressFieldSettings: {\n      ...multilineAddressFieldSettings,\n      [fieldName]: {\n        ...multilineAddressFieldSettings?.[fieldName],\n        show: !fieldOverride.hidden,\n      },\n    },\n  };\n};\n\nconst ADDRESS_FIELD_NAMES = [\n  'addressLine',\n  'addressLine2',\n  'streetName',\n  'streetNumber',\n  'city',\n  'postalCode',\n  'subdivision',\n  'country',\n  'apartment',\n] as const;\n\nconst applyMultilineAddressOverrides = ({\n  field,\n  override,\n}: {\n  field: FormField;\n  override: FormOverrides;\n}) => {\n  const finalState = ADDRESS_FIELD_NAMES.reduce(\n    (state, fieldName) =>\n      applyAddressFieldOverride(\n        fieldName,\n        override,\n        state.multilineAddressOptionsFields ?? {},\n        state.multilineAddressFieldSettings ?? {},\n      ),\n    {\n      multilineAddressOptionsFields:\n        field.validation?.predefined?.multilineAddressOptions?.fields,\n      multilineAddressFieldSettings: field.view?.fieldSettings,\n    },\n  );\n\n  const autocompleteEnabled =\n    (override.addressLine?.autocomplete || override.streetName?.autocomplete) ??\n    true;\n\n  const allowedCountries =\n    Array.isArray(override.country?.countries) &&\n    override.country?.countries?.length > 0\n      ? { allowedCountries: override.country?.countries }\n      : {};\n\n  const multilineAddressOptions = {\n    ...field.validation?.predefined?.multilineAddressOptions,\n    fields: {\n      ...field.validation?.predefined?.multilineAddressOptions?.fields,\n      ...finalState.multilineAddressOptionsFields,\n    },\n    ...allowedCountries,\n  };\n\n  return {\n    ...field,\n    view: {\n      ...field.view,\n      fieldSettings: {\n        ...field.view?.fieldSettings,\n        ...finalState.multilineAddressFieldSettings,\n      },\n      autocompleteEnabled,\n    },\n    validation: {\n      ...field.validation,\n      predefined: {\n        ...field.validation?.predefined,\n        multilineAddressOptions,\n      },\n    },\n  };\n};\n","import { type Form } from '@wix/ambassador-forms-v4-form/types';\nimport { applyOverrides as applyRuleOverrides } from '@wix/form-conditions';\nimport { applyNestedFormOverrides } from '@wix/nested-form-overrides';\n\nimport { applyNestedForms } from '../../services';\nimport { applyFormOverrides } from '../../services/form-overrides';\nimport type { FormOverrides, FormValues } from '../../types';\n\nexport function applyAllOverrides(\n  form: Form,\n  values: FormValues,\n  overrides: FormOverrides | undefined,\n) {\n  return applyNestedForms(\n    applyFormOverrides(\n      applyNestedFormOverrides(applyRuleOverrides(form, values)),\n      overrides ?? {},\n    ),\n  );\n}\n","import { type Form } from '@wix/ambassador-forms-v4-form/types';\nimport { EMPTY_VALUE } from '@wix/form-fields';\n\nimport type { FormOverrides, FormError, FormValues } from '../../types';\n\nimport { applyAllOverrides } from './all-overrides';\n\nexport function clearFieldsWhenHiddenByRule(\n  form: Form,\n  overrides: FormOverrides | undefined,\n  currentValues: FormValues,\n  newValues: FormValues,\n  errors: FormError[],\n) {\n  const fieldCount = (form.fields ?? []).length;\n  const clearedTargets: string[] = [];\n  let currentForm = applyAllOverrides(form, currentValues, overrides);\n\n  for (let i = 0; i < fieldCount; i++) {\n    const newForm = applyAllOverrides(form, newValues, overrides);\n\n    const newHiddenTargets = findHiddenTargets(newForm);\n    const currentHiddenTargets = findHiddenTargets(currentForm);\n    const targetsToClear = newHiddenTargets.filter(\n      (item) => !currentHiddenTargets.includes(item),\n    );\n\n    if (targetsToClear.length === 0) {\n      break;\n    }\n\n    currentForm = newForm;\n    newValues = clearValues(newValues, targetsToClear);\n    clearedTargets.push(...targetsToClear);\n  }\n\n  const newErrors = clearErrors(errors, clearedTargets);\n\n  return { values: newValues, errors: newErrors };\n}\n\nfunction clearValues(values: FormValues, targetsToClear: string[]): FormValues {\n  return Object.keys(values).reduce<FormValues>((result, target) => {\n    if (targetsToClear.includes(target)) {\n      result[target] = EMPTY_VALUE;\n    } else {\n      result[target] = values[target];\n    }\n    return result;\n  }, {});\n}\n\nfunction clearErrors(errors: FormError[], clearedTargets: string[]) {\n  return errors.filter((error) => !clearedTargets.includes(error.errorPath));\n}\n\nfunction findHiddenTargets(form: Form) {\n  return (form.fields ?? []).reduce<string[]>((result, field) => {\n    if (field.hidden && field.target) {\n      result.push(field.target);\n    }\n    return result;\n  }, []);\n}\n","import { type Step } from '@wix/ambassador-forms-v4-form/types';\n\nexport const getStepIndex = (stepId?: string, steps?: Step[]) => {\n  if (stepId) {\n    const stepIndex = steps?.findIndex((step) => step.id === stepId);\n\n    if (stepIndex !== undefined && stepIndex !== -1) {\n      return stepIndex;\n    }\n  }\n\n  return 0;\n};\n","import { type Form, type FormField } from '@wix/ambassador-forms-v4-form/types';\nimport {\n  type PossibleValues,\n  EMPTY_VALUE,\n  type InputFieldType,\n  DEFAULT_VALUE,\n} from '@wix/form-fields';\n\nimport { type FormValues } from '../types';\n\nexport const fillEmptyValues = (\n  form?: Form,\n  values?: FormValues,\n  recursive = true,\n) => {\n  if (!form?.fields) {\n    return {};\n  }\n\n  return form.fields.reduce((result: FormValues, field: FormField) => {\n    const fieldTarget = field.target;\n    if (!fieldTarget) {\n      return result;\n    }\n\n    const fieldValue = values?.[fieldTarget];\n    const defaultValue = field.view?.defaultValue;\n    const fieldType = field.view?.fieldType;\n    const nestedForm = field.view?.form;\n\n    if (recursive && nestedForm) {\n      result[fieldTarget] = fillEmptyValues(\n        nestedForm,\n        fieldValue as FormValues,\n        false,\n      ) as PossibleValues;\n    } else if (fieldValue !== undefined) {\n      result[fieldTarget] = fieldValue;\n    } else if (defaultValue !== undefined) {\n      result[fieldTarget] = DEFAULT_VALUE[fieldType as InputFieldType]?.(field);\n    } else if (fieldType) {\n      result[fieldTarget] = EMPTY_VALUE;\n    }\n\n    return result;\n  }, {});\n};\n","import {\n  ContactAutofill,\n  type Form,\n} from '@wix/ambassador-forms-v4-form/types';\nimport { FIELD_TYPES, type UserData } from '@wix/form-fields';\n\nimport { type FormConfig, type FormValues } from '../../types';\n\nconst AUTOFILL_FIELDS: { fieldType: string; key: keyof UserData }[] = [\n  { fieldType: FIELD_TYPES.CONTACTS_EMAIL, key: 'email' },\n  { fieldType: FIELD_TYPES.CONTACTS_FIRST_NAME, key: 'firstName' },\n  { fieldType: FIELD_TYPES.CONTACTS_LAST_NAME, key: 'lastName' },\n  { fieldType: FIELD_TYPES.CONTACTS_PHONE, key: 'phone' },\n];\n\nexport function autofillValues(\n  form?: Form,\n  values?: FormValues,\n  config?: FormConfig | null,\n): FormValues {\n  const result = { ...values };\n  const userData = config?.userData;\n  if (!userData || form?.autoFillContact !== ContactAutofill.MEMBER_DATA) {\n    return result;\n  }\n\n  const fields = form?.fields ?? [];\n\n  for (const { fieldType, key } of AUTOFILL_FIELDS) {\n    const value = userData[key]?.trim();\n    if (!value) {\n      continue;\n    }\n    const target = fields.find(\n      (field) => field.view?.fieldType === fieldType,\n    )?.target;\n    if (target && (result[target] == null || result[target] === '')) {\n      result[target] = value;\n    }\n  }\n\n  return result;\n}\n","import {\n  type Form,\n  type FormField,\n  PriceType,\n  type Validation,\n  ValidationFormat,\n} from '@wix/ambassador-forms-v4-form/types';\nimport {\n  EMPTY_VALUE,\n  FIELD_TYPES,\n  type FormValues,\n  getVatIDType,\n  type InputFieldType,\n  type PossibleValues,\n  type VatIDValue,\n  type MultilineAddressValue,\n} from '@wix/form-fields';\nimport { MultilineAddressToolkit } from '@wix/form-multiline-address';\n\nimport { isNumber, isObject, isRating, isString } from '../../services/utils';\nimport { type FormConfig } from '../../types';\n\nexport const normalizeValues = (\n  form?: Form,\n  values?: FormValues,\n  recursive = true,\n  config?: FormConfig | null,\n) => {\n  if (!form?.fields) {\n    return {};\n  }\n\n  const normalizedValues = form.fields.reduce<FormValues>(\n    (result: FormValues, field: FormField) => {\n      const fieldTarget = field.target;\n\n      if (!fieldTarget) {\n        return result;\n      }\n\n      const fieldValue = values?.[fieldTarget];\n      const fieldType = field.view?.fieldType as InputFieldType;\n      const nestedForm = field.view?.form;\n\n      if (recursive && nestedForm) {\n        result[fieldTarget] = normalizeValues(\n          nestedForm,\n          fieldValue as FormValues,\n          false,\n          config,\n        ) as PossibleValues;\n      } else {\n        const normalizer = NORMALIZED_VALUE[fieldType];\n        if (normalizer) {\n          result[fieldTarget] = normalizer({\n            field,\n            fieldValue,\n            config,\n          }) as PossibleValues;\n        } else {\n          result[fieldTarget] = fieldValue as PossibleValues;\n        }\n      }\n\n      return result;\n    },\n    {},\n  );\n\n  return normalizedValues;\n};\n\nexport const NORMALIZED_VALUE = {\n  [FIELD_TYPES.TEXT_INPUT]: acceptStringValue,\n  [FIELD_TYPES.CHECKBOX_GROUP]: removeInvalidOptions,\n  [FIELD_TYPES.RADIO_GROUP]: acceptOnlyValidOptionByLabel,\n  [FIELD_TYPES.QUIZ_RADIO_GROUP]: acceptOnlyValidOptionByLabel,\n  [FIELD_TYPES.DROPDOWN]: acceptOnlyValidOptionByLabel,\n  [FIELD_TYPES.URL_INPUT]: acceptStringValue,\n  [FIELD_TYPES.NUMBER_INPUT]: acceptNumberValue,\n  [FIELD_TYPES.CHALLENGES_NUMBER]: acceptNumberValue,\n  [FIELD_TYPES.CHALLENGES_SHORT_TEXT]: acceptStringValue,\n  [FIELD_TYPES.CHALLENGES_LONG_TEXT]: acceptStringValue,\n  [FIELD_TYPES.CHALLENGES_MULTI_CHOICE]: removeInvalidOptions,\n  [FIELD_TYPES.CHALLENGES_IMAGE_CHOICE]: removeInvalidOptions,\n  [FIELD_TYPES.CHALLENGES_SINGLE_CHOICE]: acceptOnlyValidOptionByLabel,\n  [FIELD_TYPES.CHALLENGES_FILE_UPLOAD]: keepValueUnchanged,\n  [FIELD_TYPES.QUIZ_TEXT_INPUT]: acceptStringValue,\n  [FIELD_TYPES.QUIZ_NUMBER_INPUT]: acceptNumberValue,\n  [FIELD_TYPES.QUIZ_CHECKBOX_GROUP]: removeInvalidOptions,\n  [FIELD_TYPES.FILE_UPLOAD]: keepValueUnchanged,\n  [FIELD_TYPES.SIGNATURE]: keepValueUnchanged,\n  [FIELD_TYPES.CONTACTS_EMAIL]: acceptStringValue,\n  [FIELD_TYPES.CONTACTS_PHONE]: acceptPhoneValue,\n  [FIELD_TYPES.CHECKBOX]: acceptBooleanValue,\n  [FIELD_TYPES.DATE_TIME_INPUT]: acceptStringValue,\n  [FIELD_TYPES.CONTACTS_COMPANY]: acceptStringValue,\n  [FIELD_TYPES.CONTACTS_POSITION]: acceptStringValue,\n  [FIELD_TYPES.CONTACTS_TAX_ID]: acceptStringValue,\n  [FIELD_TYPES.CONTACTS_FIRST_NAME]: acceptStringValue,\n  [FIELD_TYPES.CONTACTS_LAST_NAME]: acceptStringValue,\n  [FIELD_TYPES.CONTACTS_ADDRESS]: acceptStringValue,\n  [FIELD_TYPES.CONTACTS_BIRTHDATE]: acceptStringValue,\n  [FIELD_TYPES.TEXT_AREA]: acceptStringValue,\n  [FIELD_TYPES.CONTACTS_SUBSCRIBE]: acceptBooleanValue,\n  [FIELD_TYPES.DATE_INPUT]: acceptStringValue,\n  [FIELD_TYPES.TIME_INPUT]: acceptStringValue,\n  [FIELD_TYPES.DATE_PICKER]: acceptStringValue,\n  [FIELD_TYPES.NESTED_FORM]: acceptObjectValue,\n  [FIELD_TYPES.MULTILINE_ADDRESS]: normalizeMultilineAddress,\n  [FIELD_TYPES.MLA_COUNTRY]: acceptOnlyValidOptionByValue,\n  [FIELD_TYPES.MLA_CITY]: acceptStringValue,\n  [FIELD_TYPES.MLA_ADDRESS_LINE]: acceptStringValue,\n  [FIELD_TYPES.MLA_ADDRESS_LINE_2]: acceptStringValue,\n  [FIELD_TYPES.MLA_POSTAL_CODE]: acceptStringValue,\n  [FIELD_TYPES.MLA_SUBDIVISION]: acceptOnlyValidOptionByValue,\n  [FIELD_TYPES.MLA_STREET_NAME]: acceptStringValue,\n  [FIELD_TYPES.MLA_STREET_NUMBER]: acceptStringValue,\n  [FIELD_TYPES.MLA_APARTMENT]: acceptStringValue,\n  [FIELD_TYPES.FULL_NAME]: acceptFullNameValue,\n  [FIELD_TYPES.FULL_NAME_FIRST_NAME]: acceptStringValue,\n  [FIELD_TYPES.FULL_NAME_LAST_NAME]: acceptStringValue,\n  [FIELD_TYPES.VAT_ID]: normalizeVatIDValue,\n  [FIELD_TYPES.DEXT_TEXT_INPUT]: acceptStringValue,\n  [FIELD_TYPES.DEXT_NUMBER_INPUT]: acceptNumberValue,\n  [FIELD_TYPES.DEXT_CHECKBOX]: acceptBooleanValue,\n  [FIELD_TYPES.DEXT_CHECKBOX_GROUP]: removeInvalidOptions,\n  [FIELD_TYPES.DEXT_RATING_INPUT]: acceptRatingValue,\n  [FIELD_TYPES.DEXT_TAGS]: removeInvalidOptions,\n  [FIELD_TYPES.ECOM_ADDITIONAL_INFO]: acceptStringValue,\n  [FIELD_TYPES.ECOM_ADDRESS]: acceptObjectValue,\n  [FIELD_TYPES.ECOM_PHONE]: acceptPhoneValue,\n  [FIELD_TYPES.ECOM_FULL_NAME]: acceptObjectValue,\n  [FIELD_TYPES.ECOM_COMPANY_NAME]: acceptStringValue,\n  [FIELD_TYPES.ECOM_SUBSCRIPTION]: acceptBooleanValue,\n  [FIELD_TYPES.ECOM_EMAIL]: acceptStringValue,\n  [FIELD_TYPES.DEXT_TEXT_AREA]: acceptStringValue,\n  [FIELD_TYPES.DEXT_DROPDOWN]: acceptOnlyValidOptionByLabel,\n  [FIELD_TYPES.DEXT_RADIO_GROUP]: acceptOnlyValidOptionByLabel,\n  [FIELD_TYPES.DEXT_URL_INPUT]: acceptStringValue,\n  [FIELD_TYPES.DEXT_EMAIL]: acceptStringValue,\n  [FIELD_TYPES.DEXT_PHONE]: acceptPhoneValue,\n  [FIELD_TYPES.DEXT_DATE_PICKER]: acceptStringValue,\n  [FIELD_TYPES.DEXT_DATE_TIME_INPUT]: acceptStringValue,\n  [FIELD_TYPES.PRODUCT_LIST]: acceptOnlyValidProducts,\n  [FIELD_TYPES.DONATION]: acceptOnlyValidProducts,\n  [FIELD_TYPES.RATING_INPUT]: acceptRatingValue,\n  [FIELD_TYPES.TAGS]: removeInvalidOptions,\n  [FIELD_TYPES.PAYMENT_INPUT]: acceptOnlyValidPayments,\n  [FIELD_TYPES.FIXED_PAYMENT]: acceptOnlyValidPayments,\n  [FIELD_TYPES.BOOKINGS_FIRST_NAME]: acceptStringValue,\n  [FIELD_TYPES.BOOKINGS_LAST_NAME]: acceptStringValue,\n  [FIELD_TYPES.BOOKINGS_EMAIL]: acceptStringValue,\n  [FIELD_TYPES.BOOKINGS_PHONE]: acceptPhoneValue,\n  [FIELD_TYPES.BOOKINGS_ADDRESS]: normalizeMultilineAddress,\n  [FIELD_TYPES.APPOINTMENT]: acceptObjectValue,\n  [FIELD_TYPES.PASSWORD]: acceptStringValue,\n  [FIELD_TYPES.SERVICES_DROPDOWN]: acceptStringValue,\n  [FIELD_TYPES.SERVICES_MULTI_CHOICE]: removeInvalidOptions,\n  [FIELD_TYPES.EVENTS_RSVP]: acceptOnlyValidOptionByValue,\n  [FIELD_TYPES.EVENTS_REPEATER]: normalizeRepeater,\n  [FIELD_TYPES.IMAGE_CHOICE]: removeInvalidOptions,\n  [FIELD_TYPES.PHONE]: acceptPhoneValue,\n};\n\ninterface KeepValueUnchanged {\n  field: FormField;\n  fieldValue?: PossibleValues | Record<string, PossibleValues>;\n  config?: FormConfig | null;\n}\n\nfunction keepValueUnchanged({ fieldValue }: KeepValueUnchanged) {\n  return fieldValue;\n}\n\nfunction acceptPhoneValue({ fieldValue }: KeepValueUnchanged) {\n  const isEmptyValue = fieldValue === EMPTY_VALUE;\n  if (isEmptyValue) {\n    return fieldValue;\n  }\n\n  if (typeof fieldValue === 'string') {\n    const stripped = fieldValue.replace(/[^0-9+]/g, '');\n    return stripped || fieldValue;\n  }\n\n  return EMPTY_VALUE;\n}\n\nfunction removeInvalidOptions({ field, fieldValue }: KeepValueUnchanged) {\n  const hasAddOther = field.view?.addOther;\n  const isEmptyValue = fieldValue === EMPTY_VALUE;\n  if (hasAddOther || isEmptyValue) {\n    return fieldValue;\n  }\n\n  const options = field.view?.options;\n\n  if (!Array.isArray(fieldValue)) {\n    return EMPTY_VALUE;\n  }\n\n  const value = (fieldValue as string[])?.filter((arrayItem: string) =>\n    options.some(\n      (option: { label: string; value?: string }) =>\n        option.value === arrayItem || option.label === arrayItem,\n    ),\n  );\n\n  return value.length ? value : EMPTY_VALUE;\n}\n\nfunction acceptOnlyValidOptionByLabel({\n  field,\n  fieldValue,\n}: KeepValueUnchanged) {\n  const hasAddOther = field.view?.addOther;\n  const isEmptyValue = fieldValue === EMPTY_VALUE;\n  if (hasAddOther || isEmptyValue) {\n    return fieldValue;\n  }\n\n  const options = field.view?.options;\n\n  const optionExists = options.some(\n    (option: { label: string; value?: string }) =>\n      option.value === fieldValue || option.label === fieldValue,\n  );\n  return optionExists ? fieldValue : EMPTY_VALUE;\n}\n\nfunction acceptOnlyValidProducts({ field, fieldValue }: KeepValueUnchanged) {\n  const isEmptyValue = fieldValue === EMPTY_VALUE;\n  if (isEmptyValue) {\n    return fieldValue;\n  }\n\n  if (!Array.isArray(fieldValue)) {\n    return EMPTY_VALUE;\n  }\n\n  const validation: Validation | undefined = field.validation;\n  if (validation?.predefined?.format !== ValidationFormat.PAYMENT) {\n    return EMPTY_VALUE;\n  }\n\n  const validationProducts =\n    validation.predefined.paymentOptions?.products || [];\n  if (validationProducts.length === 0) {\n    return EMPTY_VALUE;\n  }\n\n  const validProducts = (fieldValue as any[]).filter((productValue: any) => {\n    const hasAllProps =\n      isObject(productValue) &&\n      productValue.hasOwnProperty('productId') &&\n      productValue.hasOwnProperty('price') &&\n      productValue.hasOwnProperty('quantity');\n\n    if (!hasAllProps) {\n      return false;\n    }\n\n    const price = productValue.price;\n    const isValidPrice = isString(price)\n      ? Number(price).toString() === price\n      : isNumber(price);\n    if (!isValidPrice) {\n      return false;\n    }\n\n    const isValidQuantity = isNumber(productValue.quantity);\n    if (!isValidQuantity) {\n      return false;\n    }\n\n    const isExisted = validationProducts.some(\n      (product) => product.id === productValue.productId,\n    );\n    return isExisted;\n  });\n\n  return validProducts.length ? validProducts : EMPTY_VALUE;\n}\n\nfunction acceptOnlyValidOptionByValue({\n  field,\n  fieldValue,\n}: KeepValueUnchanged) {\n  const isEmptyValue = fieldValue === EMPTY_VALUE;\n  if (isEmptyValue) {\n    return fieldValue;\n  }\n\n  type Option = { value: string };\n  const options: Option[] | undefined = field.view?.options;\n\n  if (!options) {\n    return EMPTY_VALUE;\n  }\n\n  const optionExists = options.some((option) => option.value === fieldValue);\n  return optionExists ? fieldValue : EMPTY_VALUE;\n}\n\nfunction normalizeVatIDValue({ fieldValue }: KeepValueUnchanged) {\n  const vatID = fieldValue as VatIDValue;\n\n  const isEmptyValue = fieldValue === EMPTY_VALUE;\n\n  if (isEmptyValue) {\n    return fieldValue;\n  }\n\n  if (fieldValue && isObject(fieldValue) && fieldValue.hasOwnProperty('id')) {\n    if (fieldValue.hasOwnProperty('type')) {\n      const type = getVatIDType(vatID.id);\n      return { id: vatID.id, type };\n    }\n\n    return { id: vatID.id };\n  }\n\n  return EMPTY_VALUE;\n}\n\nfunction acceptNumberValue({ fieldValue }: KeepValueUnchanged) {\n  const isEmptyValue = fieldValue === EMPTY_VALUE;\n  if (isEmptyValue) {\n    return fieldValue;\n  }\n\n  return isNumber(fieldValue) ? fieldValue : EMPTY_VALUE;\n}\n\nfunction acceptStringValue({ fieldValue }: KeepValueUnchanged) {\n  const isEmptyValue = fieldValue === EMPTY_VALUE;\n  if (isEmptyValue) {\n    return fieldValue;\n  }\n\n  return isString(fieldValue) ? fieldValue : EMPTY_VALUE;\n}\n\nfunction acceptBooleanValue({ fieldValue, field }: KeepValueUnchanged) {\n  const isEmptyValue = fieldValue === EMPTY_VALUE;\n  if (isEmptyValue) {\n    return fieldValue;\n  }\n\n  if (\n    fieldValue === false &&\n    field.validation?.required &&\n    field.view?.defaultValue === false &&\n    field.hidden\n  ) {\n    return EMPTY_VALUE;\n  }\n\n  const isBoolean = typeof fieldValue === 'boolean';\n\n  return isBoolean ? fieldValue : EMPTY_VALUE;\n}\n\nfunction normalizeMultilineAddress({\n  fieldValue,\n  config,\n  field,\n}: KeepValueUnchanged) {\n  const isEmptyValue = fieldValue === EMPTY_VALUE;\n  if (isEmptyValue) {\n    return EMPTY_VALUE;\n  }\n\n  const addressForms = config?.addressTemplates?.map(\n    (template) => template.template,\n  );\n\n  if (!addressForms) {\n    return EMPTY_VALUE;\n  }\n\n  const addressToolkit = new MultilineAddressToolkit(addressForms as Form[]);\n  const country = (fieldValue as MultilineAddressValue)?.country;\n  const template = addressToolkit.getFormByCountry(country, field);\n  return normalizeValues(template, fieldValue as FormValues, true, config);\n}\n\nfunction acceptObjectValue({ fieldValue }: KeepValueUnchanged) {\n  const isEmptyValue = fieldValue === EMPTY_VALUE;\n  if (isEmptyValue) {\n    return fieldValue;\n  }\n\n  return typeof fieldValue === 'object' ? fieldValue : EMPTY_VALUE;\n}\n\nfunction acceptFullNameValue(args: KeepValueUnchanged) {\n  const result = acceptObjectValue(args);\n  return result === EMPTY_VALUE ? {} : result;\n}\n\nfunction acceptRatingValue({ fieldValue }: KeepValueUnchanged) {\n  const isEmptyValue = fieldValue === 0 || fieldValue === EMPTY_VALUE;\n\n  if (isEmptyValue) {\n    return EMPTY_VALUE;\n  }\n\n  return isRating(fieldValue) ? fieldValue : EMPTY_VALUE;\n}\n\nfunction acceptOnlyValidPayments({ field, fieldValue }: KeepValueUnchanged) {\n  const isEmptyValue = fieldValue === EMPTY_VALUE;\n\n  const { validation } = field;\n  const payment = validation?.predefined?.paymentOptions?.products?.[0];\n\n  if (isEmptyValue && payment?.priceType === PriceType.FIXED_PRICE) {\n    return [\n      {\n        productId: payment.id,\n        price: payment.fixedPriceOptions?.price,\n        quantity: 1,\n      },\n    ];\n  }\n\n  if (isEmptyValue) {\n    return fieldValue;\n  }\n\n  if (!Array.isArray(fieldValue)) {\n    return EMPTY_VALUE;\n  }\n\n  return fieldValue;\n}\n\nfunction normalizeRepeater({ field, fieldValue, config }: KeepValueUnchanged) {\n  const isEmptyValue = fieldValue === EMPTY_VALUE;\n  const nestedFields = field.view?.fields;\n\n  if (isEmptyValue) {\n    return fieldValue;\n  }\n\n  if (!Array.isArray(fieldValue) || !nestedFields) {\n    return EMPTY_VALUE;\n  }\n\n  const nestedForm: Form = {\n    fields: nestedFields,\n  };\n\n  const normalizedValues = (fieldValue as FormValues[]).map((values) => {\n    if (!isObject(values)) {\n      return {};\n    }\n\n    const normalized = normalizeValues(\n      nestedForm,\n      values as FormValues,\n      false,\n      config,\n    );\n\n    return Object.fromEntries(\n      Object.entries(normalized).filter(([_, value]) => value !== EMPTY_VALUE),\n    );\n  });\n\n  return normalizedValues;\n}\n","const RATING_VALUES = [1, 2, 3, 4, 5];\n\nexport function diff(a: Record<string, any>, b: Record<string, any>) {\n  return Object.fromEntries(\n    Object.entries(b).filter(([key, val]) => key in a && a[key] !== val),\n  );\n}\n\nexport function isObject(value: unknown): value is Object {\n  return typeof value === 'object' && !Array.isArray(value) && value !== null;\n}\n\nexport function isString(value: unknown): boolean {\n  return typeof value === 'string';\n}\n\nexport function isNumber(value: unknown): boolean {\n  return typeof value === 'number' && !Number.isNaN(value);\n}\n\nexport function isRating(value: unknown): boolean {\n  return typeof value === 'number' && RATING_VALUES.includes(value);\n}\n","import { type Form } from '@wix/ambassador-forms-v4-form/types';\nimport { deepEqual } from 'fast-equals';\nimport { useEffect, useMemo, useRef } from 'react';\n\nimport { autofillValues } from '../../components/form/autofill';\nimport { type FormConfig, type FormValues, type OnChange } from '../../types';\nimport { fillEmptyValues } from '../form-values';\n\nimport { normalizeValues } from './normalize-values';\n\nexport const useFormValues = (\n  form?: Form,\n  values?: FormValues,\n  onChange?: OnChange,\n  config?: FormConfig | null,\n  enableAutofill?: boolean,\n): FormValues => {\n  const hasAutofilled = useRef(false);\n\n  const normalizedValues = useMemo(() => {\n    let filled = fillEmptyValues(form, values);\n    if (enableAutofill && !hasAutofilled.current && config?.userData) {\n      hasAutofilled.current = true;\n      filled = autofillValues(form, filled, config);\n    }\n    return normalizeValues(form, filled, true, config);\n  }, [form, values, config, enableAutofill]);\n\n  useEffect(() => {\n    const hasAnyValueChanged = !deepEqual(normalizedValues, values);\n    if (hasAnyValueChanged) {\n      onChange?.(normalizedValues);\n    }\n  }, [values, normalizedValues, onChange]);\n\n  return normalizedValues;\n};\n","import { type Form } from '@wix/ambassador-forms-v4-form/types';\nimport {\n  type Breakpoint,\n  EXPERIMENTS,\n  type FormView,\n  createFormView,\n  useExperiments,\n  useConfig,\n} from '@wix/form-fields';\nimport { useMemo } from 'react';\n\nexport const useFormView = (\n  form: Form,\n  stepId?: string,\n  breakpoint?: Breakpoint,\n): FormView[] => {\n  const { isMobile } = useConfig();\n  const experiments = useExperiments();\n  const useFieldsV2 = experiments.isExperimentEnabled(\n    EXPERIMENTS.USE_FIELDS_V2,\n  );\n\n  return useMemo(() => {\n    return (form?.steps || [])\n      .filter((step) => !stepId || stepId === step.id)\n      .map((step) => {\n        return createFormView({\n          form,\n          stepId: step.id!,\n          isMobile,\n          breakpoint,\n          useFieldsV2,\n        });\n      });\n  }, [form, stepId, isMobile, breakpoint, useFieldsV2]);\n};\n","import { type Form } from '@wix/ambassador-forms-v4-form/types';\nimport { formFieldEdit } from '@wix/bi-logger-forms-platform-uou/v2';\nimport { useBi } from '@wix/form-fields';\nimport { useRef } from 'react';\n\nimport { type FormValues } from '../types';\n\nexport const useReportFieldEdit = (form?: Form) => {\n  const lastChangedFields = useRef<string[]>([]);\n  const bi = useBi();\n\n  return (changedValues: FormValues) => {\n    const changedFieldTargets = Object.keys(changedValues);\n    const isEditingDifferentFields =\n      changedFieldTargets.length !== lastChangedFields.current.length ||\n      changedFieldTargets.some(\n        (target, index) => target !== lastChangedFields.current[index],\n      );\n\n    if (isEditingDifferentFields) {\n      lastChangedFields.current = changedFieldTargets;\n\n      changedFieldTargets.forEach((target) => {\n        const changedField = form?.fields?.find(\n          (field) => field.target === target,\n        );\n        bi.report(\n          formFieldEdit({\n            field_id: changedField?.id,\n            field_label: changedField?.view?.label,\n            field_target: changedField?.target || undefined,\n          }),\n        );\n      });\n    }\n  };\n};\n","import { type Form } from '@wix/ambassador-forms-v4-form/types';\nimport { getSortedFields, useFocusedField } from '@wix/form-fields';\nimport { type ValidationError } from '@wix/form-validator';\nimport { useCallback } from 'react';\n\ninterface ScrollToFirstErrorProps {\n  form: Form;\n  handleStepChange: (step: number) => void;\n  currentStepId?: string;\n}\n\nexport const useScrollToFirstError = ({\n  form,\n  handleStepChange,\n  currentStepId,\n}: ScrollToFirstErrorProps): {\n  scrollToFirstError: (errors: ValidationError[]) => void;\n  handleScrollToFirstError: (errors: ValidationError[]) => void;\n} => {\n  const { setFocusedFieldId } = useFocusedField();\n\n  const scrollToFirstError = useCallback(\n    (errors: ValidationError[]) => {\n      const sortedFieldsInStep = getSortedFields(form, {\n        stepId: currentStepId,\n      });\n\n      const fieldWithError = sortedFieldsInStep?.find((_field) => {\n        return errors.some(\n          (error) => _field.target === error.errorPath.split('/')[0],\n        );\n      });\n\n      setFocusedFieldId(fieldWithError?.id);\n    },\n    [currentStepId, form, setFocusedFieldId],\n  );\n\n  const handleScrollToFirstError = useCallback(\n    (errors: ValidationError[]) => {\n      const sortedFields = getSortedFields(form);\n      const field = sortedFields?.find((_field) => {\n        return errors.some(\n          (error) => _field.target === error.errorPath.split('/')[0],\n        );\n      });\n\n      if (Number(form.steps?.length) > 0) {\n        const fieldStep = form.steps?.find((step) => {\n          const fieldInStep = step.layout?.large?.items?.find(\n            (layoutField) => layoutField.fieldId === field?.id,\n          );\n          return Boolean(fieldInStep);\n        });\n        const fieldStepIndex = fieldStep && form.steps?.indexOf(fieldStep);\n\n        if (\n          typeof fieldStepIndex !== 'undefined' &&\n          fieldStep?.id !== currentStepId\n        ) {\n          handleStepChange(fieldStepIndex);\n        }\n      }\n\n      if (errors.length > 0) {\n        setFocusedFieldId(field?.id);\n      }\n    },\n    [form, currentStepId, handleStepChange, setFocusedFieldId],\n  );\n\n  return { scrollToFirstError, handleScrollToFirstError };\n};\n","import {\n  type SubmitSettings,\n  SubmitSuccessAction,\n} from '@wix/ambassador-forms-v4-form/types';\nimport { type FormSubmission } from '@wix/ambassador-forms-v4-submission/types';\nimport { submitFormClick as submitFormBi } from '@wix/bi-logger-forms-data/v2';\nimport {\n  EXPERIMENTS,\n  useBi,\n  useExperiments,\n  usePanorama,\n  useSubmitSuccessTrigger,\n  useTranslation,\n} from '@wix/form-fields';\nimport { type ValidationError } from '@wix/form-validator';\nimport { useCallback } from 'react';\n\nimport { useSubmitStatus } from '../../contexts/submit-status-context';\nimport { INTERACTIONS } from '../../features/monitoring/interactions';\nimport { type OpenPopup } from '../../form-actions/open-popup';\nimport { type FormValues } from '../../types';\nimport { BiFormSubmissionStatus } from '../../types/bi';\n\nimport {\n  getCheckoutMessage,\n  getErrorCode,\n  getErrorList,\n  getFieldCustomErrorMessages,\n  getFormCustomErrorMessage,\n  redirectToExternalUrl,\n} from './utils';\n\ninterface SubmitProps {\n  values: FormValues;\n  submitAction: (values: FormValues) => Promise<FormSubmission | undefined>;\n  onSubmit?: () => void;\n  onSubmitSuccess?: (response: FormSubmission) => void;\n  onSubmitFailure?: (error: unknown) => void;\n  resetFormValues?: () => void;\n  validateAndScrollToError: (values: FormValues) => Promise<ValidationError[]>;\n  submitSettings?: SubmitSettings;\n  navigateToCheckout?: Function;\n  openPopup?: OpenPopup;\n  handleStepChange: (step: number) => void;\n  onValidate: (newErrors: ValidationError[]) => void;\n  handleScrollToFirstError?: (errors: ValidationError[]) => void;\n}\n\nexport type SubmitForm = () => Promise<FormSubmission | undefined>;\n\nexport const useSubmit = ({\n  validateAndScrollToError,\n  submitAction,\n  onSubmit,\n  onSubmitSuccess,\n  onSubmitFailure,\n  resetFormValues,\n  values,\n  submitSettings,\n  handleStepChange,\n  navigateToCheckout,\n  openPopup,\n  onValidate,\n  handleScrollToFirstError,\n}: SubmitProps): {\n  submitForm: SubmitForm;\n} => {\n  const {\n    setSubmitSuccessMessage,\n    setSubmitFailureCode,\n    setSubmitFailureMessage,\n  } = useSubmitStatus();\n\n  const { t } = useTranslation();\n  const { report } = useBi();\n  const fireSubmitSuccess = useSubmitSuccessTrigger();\n  const panorama = usePanorama();\n  const { isExperimentEnabled } = useExperiments();\n  const focusOnSubmitSuccess = !isExperimentEnabled(\n    EXPERIMENTS.SUBMIT_SUCCESS_NO_FOCUS,\n  );\n\n  const reportSubmitFormBi = useCallback(\n    ({ status, id }: { status: BiFormSubmissionStatus; id?: string | null }) =>\n      report(\n        submitFormBi({\n          submission_status: status,\n          submission_id: id ?? undefined,\n        }),\n      ),\n    [report],\n  );\n\n  const handleSubmitSuccess = useCallback(\n    (submission: FormSubmission) => {\n      const action = submitSettings?.submitSuccessAction;\n      const checkoutId = submission?.orderDetails?.checkoutId;\n\n      if (checkoutId && navigateToCheckout) {\n        setSubmitSuccessMessage(\n          getCheckoutMessage(t('submit.checkout.message')),\n        );\n        navigateToCheckout(checkoutId);\n      } else if (action === SubmitSuccessAction.THANK_YOU_MESSAGE) {\n        setSubmitSuccessMessage(\n          submitSettings?.thankYouMessageOptions?.richContent,\n        );\n        if (submitSettings?.thankYouMessageOptions?.durationInSeconds) {\n          setTimeout(() => {\n            setSubmitSuccessMessage(undefined);\n            if (focusOnSubmitSuccess) {\n              handleStepChange(0);\n            }\n          }, submitSettings?.thankYouMessageOptions?.durationInSeconds * 1000);\n        } else if (focusOnSubmitSuccess) {\n          handleStepChange(0);\n        }\n      } else if (action === SubmitSuccessAction.REDIRECT) {\n        redirectToExternalUrl(submitSettings?.redirectOptions);\n      } else if (action === SubmitSuccessAction.POPUP) {\n        setTimeout(() => {\n          openPopup?.(submitSettings?.popupOptions?.popupId ?? '', {});\n        }, 500);\n      }\n\n      setSubmitFailureCode(undefined);\n      setSubmitFailureMessage(undefined);\n    },\n    [\n      t,\n      submitSettings,\n      handleStepChange,\n      focusOnSubmitSuccess,\n      navigateToCheckout,\n      openPopup,\n      setSubmitSuccessMessage,\n      setSubmitFailureCode,\n      setSubmitFailureMessage,\n    ],\n  );\n\n  const handleSubmitFailure = useCallback(\n    (error: unknown) => {\n      const err = getErrorCode(error);\n      setSubmitFailureCode(err);\n      setSubmitSuccessMessage(undefined);\n    },\n    [setSubmitFailureCode, setSubmitSuccessMessage],\n  );\n\n  const handleCustomErrorMessages = useCallback(\n    (error: unknown) => {\n      const errors = getErrorList(error);\n\n      const formCustomErrorMessage = getFormCustomErrorMessage(errors);\n      if (formCustomErrorMessage) {\n        setSubmitFailureMessage(formCustomErrorMessage);\n      }\n\n      const fieldCustomErrorMessages = getFieldCustomErrorMessages(errors);\n      if (fieldCustomErrorMessages?.length) {\n        onValidate(fieldCustomErrorMessages);\n        handleScrollToFirstError?.(fieldCustomErrorMessages);\n      }\n    },\n    [setSubmitFailureMessage, onValidate, handleScrollToFirstError],\n  );\n\n  const submitForm = useCallback(async () => {\n    const errors = await validateAndScrollToError(values);\n\n    onSubmit?.();\n    reportSubmitFormBi({ status: BiFormSubmissionStatus.INIT });\n\n    if (errors?.length) {\n      reportSubmitFormBi({ status: BiFormSubmissionStatus.VALIDATION_FAILURE });\n      return;\n    }\n\n    let response;\n\n    try {\n      panorama?.transaction(INTERACTIONS.SUBMIT_FORM).start();\n      response = await submitAction(values);\n    } catch (error) {\n      onSubmitFailure?.(error);\n      reportSubmitFormBi({ status: BiFormSubmissionStatus.FAILURE });\n      handleCustomErrorMessages(error);\n      handleSubmitFailure(error);\n      throw error;\n    }\n\n    if (response) {\n      onSubmitSuccess?.(response);\n      reportSubmitFormBi({\n        status: BiFormSubmissionStatus.SUCCESS,\n        id: response.id,\n      });\n      panorama?.transaction(INTERACTIONS.SUBMIT_FORM).finish();\n\n      fireSubmitSuccess({ ...values });\n      handleSubmitSuccess(response);\n      resetFormValues?.();\n    }\n\n    return response;\n  }, [\n    validateAndScrollToError,\n    values,\n    onSubmit,\n    reportSubmitFormBi,\n    panorama,\n    submitAction,\n    onSubmitFailure,\n    handleCustomErrorMessages,\n    handleSubmitFailure,\n    onSubmitSuccess,\n    fireSubmitSuccess,\n    handleSubmitSuccess,\n    resetFormValues,\n  ]);\n\n  return { submitForm };\n};\n","import { LogObject, aiBenchmarkTestCompletedSrc156Evid4902Params, aiBenchmarkTestFailedSrc156Evid4903Params, aiBenchmarkTestStartedSrc156Evid4901Params, aiChatUoUActionsParams, aiChatUoUFormFillingStatusParams, aiChatUouActionsParams, aiUoUFormFillingLlmResponsePriceSrc156Evid4904Params, captchaEnforcerEventsParams, clickGenericParams, dummyNameParams, dummyNameSrc156Evid1Params, dummyNameSrc156Evid3000Params, dummyNameSrc156Evid3200Params, formBuilderBackofficeFormSubmissionFailedServerParams, formBuilderBackofficeFormSubmissionReceivedSuccessfullyServerParams, formBuilderBackofficeFormSubmissionSentServerParams, formBuilderFormCrudParams, formBuilderReportSpamParams, formBuilderSubmissionFailedParams, formBuilderSubmissionIgnoredParams, formBuilderSubmissionMarkedAsSpamParams, formBuilderSubmissionSentParams, formChatSettingsChangedSrc156Evid31Params, formComposerOpenedParams, formComposerSidebarActionParams, formComposerTopbarActionParams, formDesingSettingsChangedSrc156Evid30Params, formErrorAppearedDissapearedParams, formFieldCopyActionSrc156Evid32Params, formFieldCrudParams, formFieldEditAiParams, formFieldEditParams, formFieldEditPhoneFieldFlagParams, formFieldFocusParams, formFieldSettingsChangedParams, formListBulkActionSrc156Evid3223Params, formListErrorShownParams, formListFilterActionParams, formListOpenedParams, formListTagsUpdatedSrc156Evid3225Params, formSubmissionParams, formUoUButtonClickGenericSrc156Evid1008Params, formViewParams, formWidgetCrudParams, formsActionsAfterSubmissionsContactCreatedParams, formsActionsAfterSubmissionsSubmissionProcessedParams, formsEmailOpensFormSubmissionEmailsParams, formsPaymentFormUserConnectPaymentToAFormParams, formsSettingsChangedParams, inputElementsAppointmentFieldSettingsChangeValueParams, inputElementsAppointmentFieldSettingsClickOnButtonParams, membersClickOnSaveInTheChangeSiteMemberLoginEmailModalParams, modalActionGenericParams, modalShownGenericParams, oneAppFormManageActionClickParams, oneAppFormTemplateChosenParams, oneAppSubmissionViewOpenedDeprecatedParams, oneAppSubmissionViewOpenedSrc156Evid3218Params, oneAppSubmissionsTableOpenedParams, oneAppSubmissionsTableTabOpenedParams, oneAppSubmissionsTableTabOpenedSrc156Evid3217Params, publishedFormsWidgetsParams, spamFilterManageParams, submissionHoverSrc156Evid3222Params, submissionPassedValidationParams, submitFormClickParams, widgetConnectedToFormSchemaParams, wildFormsTemplatesPageAboveTheFoldImpressionSrc156Evid5252Params, wildFormsTemplatesPageEditTemplateSrc156Evid5215Params, wildFormsTemplatesPageFilterInteractionsSrc156Evid5226Params, wildFormsTemplatesPageGeneralActionSrc156Evid5242Params, wildFormsTemplatesPageHoverTemplateSrc156Evid5212Params, wildFormsTemplatesPageMenuInteractionsSrc156Evid5225Params, wildFormsTemplatesPageNavigationSrc156Evid5254Params, wildFormsTemplatesPagePageViewSrc156Evid5201Params, wildFormsTemplatesPagePageViewSrc181Evid5201Params, wildFormsTemplatesPagePaginationSrc156Evid5255Params, wildFormsTemplatesPageSearchSrc156Evid5224Params, wixelActionBarActionCompletedSrc156Evid6025Params, wixelAddPanelElementAddedSrc156Evid6032Params, wixelAddPanelPanelActionsSrc156Evid6030Params, wixelAddPanelSearchSrc156Evid6031Params, wixelCanvasActionSrc156Evid6023Params, wixelPanelActionsSrc156Evid6027Params, wixelPanelStateChangedSrc156Evid6026Params, wixelSmartBreakdownActionCompletedSrc156Evid6036Params } from '../types';\n\n/**\n * A function to create a log object for the 'dummyNameSrc156Evid1' event (evid: 1)\n *\n * Event description: dummy-name.\n *\n * @param {dummyNameSrc156Evid1Params} params - The parameters for this event\n * @property {GUID} form_guid - form_guid\n * @property {string} namespace - namespace\n * @return {LogObject<dummyNameSrc156Evid1Params>} LogObject<dummyNameSrc156Evid1Params>\n */\nexport function dummyNameSrc156Evid1(params: dummyNameSrc156Evid1Params): LogObject<dummyNameSrc156Evid1Params> {\n  return { evid: 1, src: 156, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'dummyName' event (evid: 1000)\n *\n * Event description: dummy-name.\n *\n * @param {dummyNameParams} params - The parameters for this event\n * @property {GUID} form_guid - form_guid\n * @property {string} namespace - namespace\n * @return {LogObject<dummyNameParams>} LogObject<dummyNameParams>\n */\nexport function dummyName(params: dummyNameParams): LogObject<dummyNameParams> {\n  return { evid: 1000, src: 156, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'formView' event (evid: 1001)\n *\n * Event description: Tracks when a visitor views a form on a site. The event captures details such as the form type, the viewing mode, and whether it was presented in a classic or chat format.\n *\n * @param {formViewParams} params - The parameters for this event\n * @property {string} form_filling_id - form_filling_id\n * @property {string} form_schema_name - form schema name\n * @property {string} form_url - form url\n * @property {string} form_type - form expression (web, standalone, etc.)\n * @property {string} mode - preview/live site\n * @property {GUID} form_guid - form_guid\n * @property {string} namespace - namespace\n * @property {boolean} is_standalone - is standalone form\n * @property {string} filling_method - chat or classic, for standalone\n * @return {LogObject<formViewParams>} LogObject<formViewParams>\n */\nexport function formView(params: formViewParams): LogObject<formViewParams> {\n  return { evid: 1001, src: 156, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'formFieldEdit' event (evid: 1002)\n *\n * Event description: Fires when a visitor starts editing a field in a form within the Forms Platform. This event captures details about the specific form and field being edited, including the form type and the filling method used, such as classic or chat.\n *\n * @param {formFieldEditParams} params - The parameters for this event\n * @property {string} field_label - id\n * @property {string} form_schema_name - form schama name\n * @property {string} field_id - field_id\n * @property {string} form_url - form url\n * @property {string} field_target - id: field_target\n * @property {string} form_type - form expression (web, standalone, etc.)\n * @property {GUID} form_guid - form_guid\n * @property {string} form_fill_session_id - unique id which defines particular form fill session\n * @property {string} namespace - namespace\n * @property {boolean} is_standalone - is standalone form\n * @property {string} filling_method - chat or classic, for standalone\n * @return {LogObject<formFieldEditParams>} LogObject<formFieldEditParams>\n */\nexport function formFieldEdit(params: formFieldEditParams): LogObject<formFieldEditParams> {\n  return { evid: 1002, src: 156, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'submitFormClick' event (evid: 1003)\n *\n * Event description: Fires when a visitor submits a form using the Forms Platform. The event includes the submission status (success or failed), the filling method used, and the source of the submission.\n *\n * @param {submitFormClickParams} params - The parameters for this event\n * @property {string} form_schema_name - form schema name\n * @property {string} submission_status - Success/Failed\n * @property {string} form_url - form url\n * @property {string} error_reason - Error reason if failed\n * @property {GUID} form_guid - form_guid\n * @property {string} error_message - Full error message\n * @property {string} form_fill_session_id - unique id which defines particular form fill session\n * @property {string} namespace - namespace\n * @property {GUID} submission_id - submission id\n * @property {boolean} is_standalone - is standalone form\n * @property {string} filling_method - chat or classic, for standalone\n * @property {string} referral_info - Where submission was made from (website form, ai assistant, etc)\n * @return {LogObject<submitFormClickParams>} LogObject<submitFormClickParams>\n */\nexport function submitFormClick(params: submitFormClickParams): LogObject<submitFormClickParams> {\n  return { evid: 1003, src: 156, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'formFieldFocus' event (evid: 1004)\n *\n * Event description: Fires when a visitor interacts with a form by focusing on one of its fields. This event captures details about the form interaction, including the session ID, whether the form was standalone, and the method used for filling it.\n *\n * @param {formFieldFocusParams} params - The parameters for this event\n * @property {string} field_label - id\n * @property {string} form_schema_name - form schama name\n * @property {string} field_id - field id\n * @property {string} form_url - form url\n * @property {string} field_target - id\n * @property {GUID} form_guid - form schema id\n * @property {string} action_type - blur/focus\n * @property {string} form_fill_session_id - unique id which defines particular form fill session\n * @property {string} namespace - namespace\n * @property {boolean} is_standalone - is standalone form\n * @property {string} filling_method - chat or classic, for standalone\n * @return {LogObject<formFieldFocusParams>} LogObject<formFieldFocusParams>\n */\nexport function formFieldFocus(params: formFieldFocusParams): LogObject<formFieldFocusParams> {\n  return { evid: 1004, src: 156, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'formErrorAppearedDissapeared' event (evid: 1006)\n *\n * Event description: Fires when an error message appears or disappears for a visitor interacting with a form field. The event specifies whether the error appeared or disappeared, and includes details such as the error name and the form filling method.\n *\n * @param {formErrorAppearedDissapearedParams} params - The parameters for this event\n * @property {string} field_label - id\n * @property {string} form_schema_name - Form schema name\n * @property {string} field_id - field id\n * @property {string} form_url - form url\n * @property {string} field_target - id\n * @property {GUID} form_guid - form schema id\n * @property {string} field_name - name of the field in schema\n * @property {string} action_type - appeared/dissapeared\n * @property {string} form_fill_session_id - unique id which defines particular form fill session\n * @property {string} error_name - description of the error appeared\n * @property {string} namespace - namespace\n * @property {boolean} is_standalone - is standalone form\n * @property {string} filling_method - chat or classic, for standalone\n * @return {LogObject<formErrorAppearedDissapearedParams>} LogObject<formErrorAppearedDissapearedParams>\n */\nexport function formErrorAppearedDissapeared(params: formErrorAppearedDissapearedParams): LogObject<formErrorAppearedDissapearedParams> {\n  return { evid: 1006, src: 156, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'formFieldEditPhoneFieldFlag' event (evid: 1007)\n *\n * Event description: UoU changed Phone Field flag\n *\n * @param {formFieldEditPhoneFieldFlagParams} params - The parameters for this event\n * @property {string} field_label - id\n * @property {string} form_schema_name - form schama name\n * @property {string} field_id - field_id\n * @property {string} form_url - form url\n * @property {string} field_target - id: field_target\n * @property {string} form_type - form expression (web, standalone, etc.)\n * @property {GUID} form_guid - form_guid\n * @property {string} form_fill_session_id - unique id which defines particular form fill session\n * @property {string} namespace - namespace\n * @property {string} flag_country_code - flag country code\n * @property {string} flag_set_method - automatic/manual - how the flag was changed\n * @property {string} phone_country_code - phone country code\n * @property {boolean} is_phone_field_filled - is phone field  itself filled\n * @property {boolean} is_standalone - is standalone form\n * @property {string} filling_method - chat or classic, for standalone\n * @return {LogObject<formFieldEditPhoneFieldFlagParams>} LogObject<formFieldEditPhoneFieldFlagParams>\n */\nexport function formFieldEditPhoneFieldFlag(params: formFieldEditPhoneFieldFlagParams): LogObject<formFieldEditPhoneFieldFlagParams> {\n  return { evid: 1007, src: 156, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'formUoUButtonClickGenericSrc156Evid1008' event (evid: 1008)\n *\n * Event description: Fires when a client or user clicks a generic button within a form in the Forms Platform. This event captures details about the interaction, including the button name, the section it belongs to, the form type, and the filling method such as chat or classic.\n *\n * @param {formUoUButtonClickGenericSrc156Evid1008Params} params - The parameters for this event\n * @property {string} form_filling_id - form_filling_id\n * @property {string} form_schema_name - form schema name\n * @property {string} form_url - form url\n * @property {string} form_type - form expression (web, standalone, etc.)\n * @property {string} mode - preview/live site\n * @property {GUID} form_guid - form_guid if relevant\n * @property {string} namespace - namespace\n * @property {boolean} is_standalone - is standalone form\n * @property {string} filling_method - chat or classic, for standalone\n * @property {string} field_id - field_id if relevant\n * @property {string} name - button name (E.g. Chat/Form/Microphone)\n * @property {string} parent_name - Section name,  e.g. Classic-Chat view toggle, Input message bar, etc.\n * @return {LogObject<formUoUButtonClickGenericSrc156Evid1008Params>} LogObject<formUoUButtonClickGenericSrc156Evid1008Params>\n */\nexport function formUoUButtonClickGenericSrc156Evid1008(params: formUoUButtonClickGenericSrc156Evid1008Params): LogObject<formUoUButtonClickGenericSrc156Evid1008Params> {\n  return { evid: 1008, src: 156, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'formComposerTopbarAction' event (evid: 11)\n *\n * Event description: tab selected in form composer on the Top (edit, preview, submissions, click on form name, settings, etc)\n *\n * @param {formComposerTopbarActionParams} params - The parameters for this event\n * @property {string} tab_name - Edit, Settings, Preview, Submissions, click on form name, back, etc\n * @property {GUID} form_guid - form_guid\n * @property {string} namespace - namespace\n * @property {boolean} is_standalone - is standalone form\n * @return {LogObject<formComposerTopbarActionParams>} LogObject<formComposerTopbarActionParams>\n */\nexport function formComposerTopbarAction(params: formComposerTopbarActionParams): LogObject<formComposerTopbarActionParams> {\n  return { evid: 11, src: 156, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'formComposerOpened' event (evid: 14)\n *\n * Event description: Fires when the Form Composer is fully loaded for a user in the Editor. This event captures details such as whether the form is new or existing, if it's a standalone form, and the context from which the composer was opened.\n *\n * @param {formComposerOpenedParams} params - The parameters for this event\n * @property {string} tab_name - Nice to have: Tab name which is opened on ompening composer event\n * @property {boolean} is_new - true if new form\n * @property {string} origin - where form composer was opened from\n * @property {GUID} form_guid - form_guid\n * @property {string} namespace - namespace\n * @property {boolean} is_standalone - is standalone form\n * @return {LogObject<formComposerOpenedParams>} LogObject<formComposerOpenedParams>\n */\nexport function formComposerOpened(params: formComposerOpenedParams): LogObject<formComposerOpenedParams> {\n  return { evid: 14, src: 156, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'formFieldCrud' event (evid: 15)\n *\n * Event description: Form Field Added - add a field to form\n * Form Field Removed - remove a field from form\n * Form Field Deleted - delete a removed field permanently\n *\n * @param {formFieldCrudParams} params - The parameters for this event\n * @property {string} field_type - e.g. Text, Image, etc.\n * @property {string} add_action - click/drag_and_drop/duplicate/restored\n * @property {GUID} field_id - field id, unique per form\n * @property {string} field_target - id\n * @property {GUID} form_guid - form_guid\n * @property {string} error_message - error message if any\n * @property {string} field_json - field value in json\n * @property {string} action - add, move to trash, delete\n * @property {boolean} is_error - True if error\n * @property {string} namespace - namespace\n * @property {string} origin - origin - AI Chat / Add panel / something else\n * @property {string} ai_conversation_id - ai_conversation_id for AI Assistant\n * @property {boolean} is_standalone - is standalone form\n * @property {string} action_detail - detailed action, for example \"paste\" on \"add\" action. Or \"cut\" on \"delete\" action\n * @return {LogObject<formFieldCrudParams>} LogObject<formFieldCrudParams>\n */\nexport function formFieldCrud(params: formFieldCrudParams): LogObject<formFieldCrudParams> {\n  return { evid: 15, src: 156, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'formComposerSidebarAction' event (evid: 16)\n *\n * Event description: Fires when a user selects a tab in the Form Composer sidebar. The event captures the name of the selected tab, such as 'Add' or 'Settings', and indicates if the form is a standalone version.\n *\n * @param {formComposerSidebarActionParams} params - The parameters for this event\n * @property {string} tab_name - Add, Settings, Rules, etc.\n * @property {GUID} form_guid - form_guid\n * @property {string} namespace - namespace\n * @property {boolean} is_standalone - is standalone form\n * @return {LogObject<formComposerSidebarActionParams>} LogObject<formComposerSidebarActionParams>\n */\nexport function formComposerSidebarAction(params: formComposerSidebarActionParams): LogObject<formComposerSidebarActionParams> {\n  return { evid: 16, src: 156, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'clickGeneric' event (evid: 200)\n *\n * Event description: generic event to record click actions: to add 1. edit/settings/help/three dots form click in the editor 2. Clicks after three dots in the editor 3. Create form click from settings widget\n *\n * @param {clickGenericParams} params - The parameters for this event\n * @property {string} area - Submissions table, Forms List, etc\n * @property {string} name - button name of the click\n * @property {string} parent_name - for dropdowns, name of the dropdown\n * @property {string} relevant_ids_json - nice to have: if there are extra relevant ids, e.g. {form_guid: 123}\n * @property {string} field_id - field_id if relevant\n * @property {string} field_target - field_target if relevant\n * @property {GUID} form_guid - form_guid if relevant\n * @property {string} namespace - namespace\n * @property {boolean} is_standalone - is standalone form\n * @return {LogObject<clickGenericParams>} LogObject<clickGenericParams>\n */\nexport function clickGeneric(params: clickGenericParams): LogObject<clickGenericParams> {\n  return { evid: 200, src: 156, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'formBuilderFormCrud' event (evid: 2001)\n *\n * Event description: Tracks form management actions, such as creating, updating, or deleting, performed by users in the Form Builder. It specifies the exact action performed, like create, update, move to trash, restore, or duplicate. The event also indicates the form type, such as a payment or file upload form.\n *\n * @param {formBuilderFormCrudParams} params - The parameters for this event\n * @property {string} form_schema_name - form schema name\n * @property {GUID} meta_site_id - msid\n * @property {string} form_url - url where form is installed\n * @property {string} kinds - automation, migration, regular\n * @property {GUID} form_guid - form_guid\n * @property {string} template - Only for create action (raw template name)\n * @property {GUID} original_form_id - applicable on duplicate\n * @property {string} action - create, update, moveToTrash, restoreFromTrash, deletePermanently, duplicate\n * @property {string} namespace - namespace\n * @property {boolean} is_standalone - is standalone form\n * @property {string} formType - payment form / file upload form\n * @return {LogObject<formBuilderFormCrudParams>} LogObject<formBuilderFormCrudParams>\n */\nexport function formBuilderFormCrud(params: formBuilderFormCrudParams): LogObject<formBuilderFormCrudParams> {\n  return { evid: 2001, src: 156, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'modalShownGeneric' event (evid: 201)\n *\n * Event description: Fires when a generic modal is shown to a user within the Forms feature. This event captures the specific modal and flow name, such as \"Export Forms\" or \"Save View\", providing context for the user's interaction.\n *\n * @param {modalShownGenericParams} params - The parameters for this event\n * @property {string} relevant_ids_json - if there are extra relevant ids, e.g. {view_id: 123}\n * @property {string} field_id - field_id if relevant\n * @property {string} modal_name - e.g. \"Export to CSV file\", \"Which Items you want to export\", \"Save view\", etc\n * @property {string} flow_name - e.g. \"Export Forms\", \"Save View\n * @property {string} origin - origin\n * @property {string} field_target - field_target if relevant\n * @property {GUID} form_guid - form_guid\n * @property {string} namespace - namespace\n * @property {boolean} is_standalone - is standalone form\n * @return {LogObject<modalShownGenericParams>} LogObject<modalShownGenericParams>\n */\nexport function modalShownGeneric(params: modalShownGenericParams): LogObject<modalShownGenericParams> {\n  return { evid: 201, src: 156, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'modalActionGeneric' event (evid: 202)\n *\n * Event description: Tracks generic modal actions performed by users within the Forms feature, such as when exporting form submissions. It captures details like the name of the modal, the specific action taken, and the overall flow it belongs to, such as 'Export Forms' or 'Save View'.\n *\n * @param {modalActionGenericParams} params - The parameters for this event\n * @property {string} choices_json - json of choices, e.g. {view_id: 123, export_items: view} or {view_name: \"My first view\"}\n * @property {string} modal_action - e.g. cancel/close/export/next/etc\n * @property {string} relevant_ids_json - if there are extra relevant ids, e.g. {view_id: 123}\n * @property {string} field_id - field_id if relevant\n * @property {string} modal_name - e.g. \"Export to CSV file\", \"Which Items you want to export\", \"Save view\", etc\n * @property {string} flow_name - e.g. \"Export Forms\", \"Save View\n * @property {string} origin - origin\n * @property {string} field_target - field_target if relevant\n * @property {GUID} form_guid - form_guid\n * @property {string} namespace - namespace\n * @property {boolean} is_standalone - is standalone form\n * @return {LogObject<modalActionGenericParams>} LogObject<modalActionGenericParams>\n */\nexport function modalActionGeneric(params: modalActionGenericParams): LogObject<modalActionGenericParams> {\n  return { evid: 202, src: 156, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'formFieldSettingsChanged' event (evid: 24)\n *\n * Event description: Tracks when a user changes the settings of a form field. It captures details about the specific form and field being modified, and whether it is a standalone form.\n *\n * @param {formFieldSettingsChangedParams} params - The parameters for this event\n * @property {GUID} field_id - field id\n * @property {string} setting_input_json - setting input in json\n * @property {string} field_target - field_target\n * @property {GUID} form_guid - form_guid\n * @property {string} namespace - namespace\n * @property {boolean} is_standalone - is standalone form\n * @return {LogObject<formFieldSettingsChangedParams>} LogObject<formFieldSettingsChangedParams>\n */\nexport function formFieldSettingsChanged(params: formFieldSettingsChangedParams): LogObject<formFieldSettingsChangedParams> {\n  return { evid: 24, src: 156, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'oneAppFormManageActionClick' event (evid: 27)\n *\n * Event description: Fires when a user performs an action by clicking a button in the OneApp Form Manage tab. It captures the name of the button that was clicked.\n *\n * @param {oneAppFormManageActionClickParams} params - The parameters for this event\n * @property {string} button_name - button_name\n * @property {GUID} form_guid - form_guid\n * @property {string} namespace - namespace\n * @return {LogObject<oneAppFormManageActionClickParams>} LogObject<oneAppFormManageActionClickParams>\n */\nexport function oneAppFormManageActionClick(params: oneAppFormManageActionClickParams): LogObject<oneAppFormManageActionClickParams> {\n  return { evid: 27, src: 156, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'oneAppFormTemplateChosen' event (evid: 28)\n *\n * Event description: Chosen Form Template in create new form flow on OneApp\n *\n * @param {oneAppFormTemplateChosenParams} params - The parameters for this event\n * @property {string} template_name - template_name\n * @property {GUID} form_guid - form_guid\n * @property {string} namespace - namespace\n * @property {string} template_id - template_id\n * @return {LogObject<oneAppFormTemplateChosenParams>} LogObject<oneAppFormTemplateChosenParams>\n */\nexport function oneAppFormTemplateChosen(params: oneAppFormTemplateChosenParams): LogObject<oneAppFormTemplateChosenParams> {\n  return { evid: 28, src: 156, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'formsSettingsChanged' event (evid: 29)\n *\n * Event description: Forms settings changed (name, spam filter, required field display, etc.)\n *\n * @param {formsSettingsChangedParams} params - The parameters for this event\n * @property {string} setting_input_json - setting input in json\n * @property {GUID} form_guid - form_guid\n * @property {string} namespace - namespace\n * @property {boolean} is_standalone - is standalone form\n * @return {LogObject<formsSettingsChangedParams>} LogObject<formsSettingsChangedParams>\n */\nexport function formsSettingsChanged(params: formsSettingsChangedParams): LogObject<formsSettingsChangedParams> {\n  return { evid: 29, src: 156, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'formDesingSettingsChangedSrc156Evid30' event (evid: 30)\n *\n * Event description: form Design settings changed in Form Composer\n *\n * @param {formDesingSettingsChangedSrc156Evid30Params} params - The parameters for this event\n * @property {string} setting_input_json - setting input in json\n * @property {GUID} form_guid - form_guid\n * @property {string} namespace - namespace\n * @property {boolean} is_standalone - is standalone form\n * @return {LogObject<formDesingSettingsChangedSrc156Evid30Params>} LogObject<formDesingSettingsChangedSrc156Evid30Params>\n */\nexport function formDesingSettingsChangedSrc156Evid30(params: formDesingSettingsChangedSrc156Evid30Params): LogObject<formDesingSettingsChangedSrc156Evid30Params> {\n  return { evid: 30, src: 156, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'dummyNameSrc156Evid3000' event (evid: 3000)\n *\n * Event description: dummy-name.\n *\n * @param {dummyNameSrc156Evid3000Params} params - The parameters for this event\n * @property {GUID} form_guid - form_guid\n * @property {string} namespace - namespace\n * @return {LogObject<dummyNameSrc156Evid3000Params>} LogObject<dummyNameSrc156Evid3000Params>\n */\nexport function dummyNameSrc156Evid3000(params: dummyNameSrc156Evid3000Params): LogObject<dummyNameSrc156Evid3000Params> {\n  return { evid: 3000, src: 156, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'formSubmission' event (evid: 3001)\n *\n * Event description: Fires when a visitor submits a form or a user manages a submission within Forms. This event captures the full lifecycle of a form submission, including its creation, updates, and deletion. Key details such as the submission status, action type, and failure reason are also recorded.\n *\n * @param {formSubmissionParams} params - The parameters for this event\n * @property {string} form_schema_name - form schema name\n * @property {string} failure_reason - Failure reason\n * @property {string} url - url where form is installed\n * @property {GUID} meta_site_id - msid\n * @property {GUID} submissionId - submission_id\n * @property {boolean} captcha_success - true - success, false - failed, null - doesn't have captcha\n * @property {string} failure_reason_details - Failure reason details\n * @property {string} submission_status - status\n * @property {string} kinds - automation, migration, regular\n * @property {number} num_of_fields - number of fields filled-in in the form submission\n * @property {string} spam_submission_id - spam_submission_id, not null if spam\n * @property {string} form_type - form expression (standalone, web, etc.)\n * @property {GUID} form_guid - form_guid\n * @property {number} num_of_attachments - number of attachments in the form\n * @property {string} contact_id - contact_id when this value is mapped in the submission\n * @property {boolean} is_bulk_action - true if the action was bulk (e.g. bulk move to trash)\n * @property {string} email_hash - email hash\n * @property {string} action_type - created, updated, contact_id_map, deleted, report as spam, and more\n * @property {string} namespace - namespace\n * @property {boolean} is_standalone - is standalone form\n * @return {LogObject<formSubmissionParams>} LogObject<formSubmissionParams>\n */\nexport function formSubmission(params: formSubmissionParams): LogObject<formSubmissionParams> {\n  return { evid: 3001, src: 156, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'formChatSettingsChangedSrc156Evid31' event (evid: 31)\n *\n * Event description: form Chat settings changed in Form Composer\n *\n * @param {formChatSettingsChangedSrc156Evid31Params} params - The parameters for this event\n * @property {string} setting_input_json - setting input in json\n * @property {GUID} form_guid - form_guid\n * @property {string} namespace - namespace\n * @property {boolean} is_standalone - is standalone form\n * @return {LogObject<formChatSettingsChangedSrc156Evid31Params>} LogObject<formChatSettingsChangedSrc156Evid31Params>\n */\nexport function formChatSettingsChangedSrc156Evid31(params: formChatSettingsChangedSrc156Evid31Params): LogObject<formChatSettingsChangedSrc156Evid31Params> {\n  return { evid: 31, src: 156, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'formFieldCopyActionSrc156Evid32' event (evid: 32)\n *\n * Event description: Tracks when a form field is copied within the Forms Platform. It captures the type of field being copied and how the action was initiated, such as from the contextual menu, action bar, or a keyboard shortcut.\n *\n * @param {formFieldCopyActionSrc156Evid32Params} params - The parameters for this event\n * @property {GUID} form_guid - form_guid\n * @property {string} namespace - namespace\n * @property {boolean} is_standalone - is standalone form\n * @property {string} field_id - origin_field_id\n * @property {string} field_type - origin_field_type\n * @property {string} source - \"contextual_menu\", \"action_bar\", \"keyboard_shortcut\"\n * @return {LogObject<formFieldCopyActionSrc156Evid32Params>} LogObject<formFieldCopyActionSrc156Evid32Params>\n */\nexport function formFieldCopyActionSrc156Evid32(params: formFieldCopyActionSrc156Evid32Params): LogObject<formFieldCopyActionSrc156Evid32Params> {\n  return { evid: 32, src: 156, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'dummyNameSrc156Evid3200' event (evid: 3200)\n *\n * Event description: dummy-name.\n *\n * @param {dummyNameSrc156Evid3200Params} params - The parameters for this event\n * @return {LogObject<dummyNameSrc156Evid3200Params>} LogObject<dummyNameSrc156Evid3200Params>\n */\nexport function dummyNameSrc156Evid3200(params: dummyNameSrc156Evid3200Params): LogObject<dummyNameSrc156Evid3200Params> {\n  return { evid: 3200, src: 156, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'formListOpened' event (evid: 3204)\n *\n * Event description: Fires when a user opens the list of available forms. This event indicates that the main view for managing forms has been accessed.\n *\n * @param {formListOpenedParams} params - The parameters for this event\n * @return {LogObject<formListOpenedParams>} LogObject<formListOpenedParams>\n */\nexport function formListOpened(params: formListOpenedParams): LogObject<formListOpenedParams> {\n  return { evid: 3204, src: 156, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'formListFilterAction' event (evid: 3206)\n *\n * Event description: Tracks when a user applies a filter to the form list in Forms. It captures the type of filter applied, such as viewing all, active, or deleted forms.\n *\n * @param {formListFilterActionParams} params - The parameters for this event\n * @property {string} filterBy - all_forms/active_forms/deleted_forms\n * @return {LogObject<formListFilterActionParams>} LogObject<formListFilterActionParams>\n */\nexport function formListFilterAction(params: formListFilterActionParams): LogObject<formListFilterActionParams> {\n  return { evid: 3206, src: 156, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'formListErrorShown' event (evid: 3210)\n *\n * Event description: Tracks when an error is shown to a user within the form list. This event captures details about the error, including its type, message, and any associated error code.\n *\n * @param {formListErrorShownParams} params - The parameters for this event\n * @property {string} error_type - error type\n * @property {string} error_message - error_message\n * @property {number} error_code - http code\n * @return {LogObject<formListErrorShownParams>} LogObject<formListErrorShownParams>\n */\nexport function formListErrorShown(params: formListErrorShownParams): LogObject<formListErrorShownParams> {\n  return { evid: 3210, src: 156, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'widgetConnectedToFormSchema' event (evid: 3211)\n *\n * Event description: User changed which form connected to Widget\n *\n * @param {widgetConnectedToFormSchemaParams} params - The parameters for this event\n * @property {GUID} widget_id - widget_id\n * @property {GUID} form_guid - form_guid to which widget is connected\n * @property {GUID} form_guid_disconnected - (nice to have) form guid from which widget was disconnected\n * @property {string} component_id - unique, to identify specific widget (maybe something else can be used? How do you identify it in FE?)\n * @property {string} namespace - namespace\n * @return {LogObject<widgetConnectedToFormSchemaParams>} LogObject<widgetConnectedToFormSchemaParams>\n */\nexport function widgetConnectedToFormSchema(params: widgetConnectedToFormSchemaParams): LogObject<widgetConnectedToFormSchemaParams> {\n  return { evid: 3211, src: 156, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'formWidgetCrud' event (evid: 3212)\n *\n * Event description: User added or removed widget from editor\n *\n * @param {formWidgetCrudParams} params - The parameters for this event\n * @property {GUID} widget_id - widget_id\n * @property {GUID} biToken - msid\n * @property {string} origin - add panel\n * @property {GUID} form_guid - form_guid to which widget is connected\n * @property {string} template - Template name (blank, contactUs, subscribe, etc)\n * @property {string} component_id - unique, to identify specific widget (maybe something else can be used? How do you identify it in FE?)\n * @property {string} action - added/removed\n * @property {string} namespace - namespace\n * @return {LogObject<formWidgetCrudParams>} LogObject<formWidgetCrudParams>\n */\nexport function formWidgetCrud(params: formWidgetCrudParams): LogObject<formWidgetCrudParams> {\n  return { evid: 3212, src: 156, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'publishedFormsWidgets' event (evid: 3213)\n *\n * Event description: Tells which widgets are published and to which form ids each widget is connected on site publish\n *\n * @param {publishedFormsWidgetsParams} params - The parameters for this event\n * @property {GUID} biToken - msid\n * @property {string} forms_object - array of forms with form_id (guid), wdiget_id, component_id, page_id\n * @property {string} namespace - namespace\n * @return {LogObject<publishedFormsWidgetsParams>} LogObject<publishedFormsWidgetsParams>\n */\nexport function publishedFormsWidgets(params: publishedFormsWidgetsParams): LogObject<publishedFormsWidgetsParams> {\n  return { evid: 3213, src: 156, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'oneAppSubmissionsTableOpened' event (evid: 3214)\n *\n * Event description: Opened sibmissions table of a Form in OneApp\n *\n * @param {oneAppSubmissionsTableOpenedParams} params - The parameters for this event\n * @property {string} formGuid - form_guid\t\n * @property {string} namespace - namespace\n * @property {string} origin - origin\n * @return {LogObject<oneAppSubmissionsTableOpenedParams>} LogObject<oneAppSubmissionsTableOpenedParams>\n */\nexport function oneAppSubmissionsTableOpened(params: oneAppSubmissionsTableOpenedParams): LogObject<oneAppSubmissionsTableOpenedParams> {\n  return { evid: 3214, src: 156, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'oneAppSubmissionsTableTabOpened' event (evid: 3215)\n *\n * Event description: Trash/Spam/Submissions\n *\n * @param {oneAppSubmissionsTableTabOpenedParams} params - The parameters for this event\n * @property {string} formGuid - form_guid\t\n * @property {string} namespace - namespace\n * @property {string} origin - origin\n * @property {string} tabName - Trash/Spam/Submissions\n * @return {LogObject<oneAppSubmissionsTableTabOpenedParams>} LogObject<oneAppSubmissionsTableTabOpenedParams>\n */\nexport function oneAppSubmissionsTableTabOpened(params: oneAppSubmissionsTableTabOpenedParams): LogObject<oneAppSubmissionsTableTabOpenedParams> {\n  return { evid: 3215, src: 156, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'oneAppSubmissionViewOpenedDeprecated' event (evid: 3216)\n *\n * Event description: Opened specific submission\n *\n * @param {oneAppSubmissionViewOpenedDeprecatedParams} params - The parameters for this event\n * @property {string} formGuid - form_guid\t\n * @property {string} namespace - namespace\n * @property {string} origin - origin\n * @property {string} tabName - nice to have: tab name the submission is inside: Trash/Spam/Submissions\n * @property {GUID} submissionid - Submission id\n * @return {LogObject<oneAppSubmissionViewOpenedDeprecatedParams>} LogObject<oneAppSubmissionViewOpenedDeprecatedParams>\n */\nexport function oneAppSubmissionViewOpenedDeprecated(params: oneAppSubmissionViewOpenedDeprecatedParams): LogObject<oneAppSubmissionViewOpenedDeprecatedParams> {\n  return { evid: 3216, src: 156, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'oneAppSubmissionsTableTabOpenedSrc156Evid3217' event (evid: 3217)\n *\n * Event description: Tracks when a user opens a tab within the Submissions table for a form. It captures which tab was viewed, such as 'Trash,' 'Spam,' or 'Submissions,' and identifies whether the form is standalone.\n *\n * @param {oneAppSubmissionsTableTabOpenedSrc156Evid3217Params} params - The parameters for this event\n * @property {string} formGuid - form_guid\n * @property {string} tabName - Trash/Spam/Submissions\n * @property {string} origin - origin\n * @property {string} namespace - namespace\n * @property {boolean} is_standalone - is standalone form\n * @return {LogObject<oneAppSubmissionsTableTabOpenedSrc156Evid3217Params>} LogObject<oneAppSubmissionsTableTabOpenedSrc156Evid3217Params>\n */\nexport function oneAppSubmissionsTableTabOpenedSrc156Evid3217(params: oneAppSubmissionsTableTabOpenedSrc156Evid3217Params): LogObject<oneAppSubmissionsTableTabOpenedSrc156Evid3217Params> {\n  return { evid: 3217, src: 156, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'oneAppSubmissionViewOpenedSrc156Evid3218' event (evid: 3218)\n *\n * Event description: Tracks when a user opens a specific form submission for viewing. The event captures the folder where the submission is located, such as Trash or Spam, and whether it belongs to a standalone form.\n *\n * @param {oneAppSubmissionViewOpenedSrc156Evid3218Params} params - The parameters for this event\n * @property {string} formGuid - form_guid\n * @property {string} tabName - nice to have: tab name the submission is inside: Trash/Spam/Submissions\n * @property {string} origin - origin\n * @property {GUID} submissionid - submission_id\n * @property {string} namespace - namespace\n * @property {boolean} is_standalone - is standalone form\n * @return {LogObject<oneAppSubmissionViewOpenedSrc156Evid3218Params>} LogObject<oneAppSubmissionViewOpenedSrc156Evid3218Params>\n */\nexport function oneAppSubmissionViewOpenedSrc156Evid3218(params: oneAppSubmissionViewOpenedSrc156Evid3218Params): LogObject<oneAppSubmissionViewOpenedSrc156Evid3218Params> {\n  return { evid: 3218, src: 156, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'aiChatUoUActions' event (evid: 3219)\n *\n * Event description: Actions of UoU while filling the form through chat - open, close, send message\n *\n * @param {aiChatUoUActionsParams} params - The parameters for this event\n * @property {GUID} form_guid - form_guid\n * @property {string} action - open/close/send message\n * @property {string} form_fill_session_id - session for form filling (if possible)\n * @property {string} fieldsTotal - Total fields in a form\n * @property {string} fieldsFilled - Fields filled by AI assistant in a form\n * @return {LogObject<aiChatUoUActionsParams>} LogObject<aiChatUoUActionsParams>\n */\nexport function aiChatUoUActions(params: aiChatUoUActionsParams): LogObject<aiChatUoUActionsParams> {\n  return { evid: 3219, src: 156, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'aiChatUoUFormFillingStatus' event (evid: 3220)\n *\n * Event description: Actions of UoU while filling the form through chat - open, close, send message\n *\n * @param {aiChatUoUFormFillingStatusParams} params - The parameters for this event\n * @property {GUID} form_guid - form_guid\n * @property {string} fieldsFilled - how many fields were filled by AI\n * @property {string} form_fill_session_id - session for form filling (if possible)\n * @property {string} fieldsTotal - total amount of fields in a form\n * @return {LogObject<aiChatUoUFormFillingStatusParams>} LogObject<aiChatUoUFormFillingStatusParams>\n */\nexport function aiChatUoUFormFillingStatus(params: aiChatUoUFormFillingStatusParams): LogObject<aiChatUoUFormFillingStatusParams> {\n  return { evid: 3220, src: 156, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'aiChatUouActions' event (evid: 3221)\n *\n * Event description: Actions of UoU while filling the form through chat - open, close, send message\n *\n * @param {aiChatUouActionsParams} params - The parameters for this event\n * @property {string} fieldsFilled - Fields filled by AI assistant in a form\n * @property {string} errorMessage - Error message if error\n * @property {string} field_id - field_id\n * @property {GUID} form_guid - form_guid\n * @property {string} fieldsTotal - Total fields in a form\n * @property {string} form_fill_session_id - session for form filling (if possible)\n * @property {string} action - open/close/send/error message\n * @property {string} namespace - namespace\n * @return {LogObject<aiChatUouActionsParams>} LogObject<aiChatUouActionsParams>\n */\nexport function aiChatUouActions(params: aiChatUouActionsParams): LogObject<aiChatUouActionsParams> {\n  return { evid: 3221, src: 156, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'submissionHoverSrc156Evid3222' event (evid: 3222)\n *\n * Event description: Hover on submission in submissions table\n *\n * @param {submissionHoverSrc156Evid3222Params} params - The parameters for this event\n * @property {string} formGuid - form_guid\n * @property {string} tabName - nice to have: tab name the submission is inside: Trash/Spam/Submissions\n * @property {string} origin - origin\n * @property {GUID} submissionid - submission_id\n * @property {string} namespace - namespace\n * @return {LogObject<submissionHoverSrc156Evid3222Params>} LogObject<submissionHoverSrc156Evid3222Params>\n */\nexport function submissionHoverSrc156Evid3222(params: submissionHoverSrc156Evid3222Params): LogObject<submissionHoverSrc156Evid3222Params> {\n  return { evid: 3222, src: 156, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'formListBulkActionSrc156Evid3223' event (evid: 3223)\n *\n * Event description: Use when a bulk toolbar action is executed (delete/restore, etc.).\n *\n * @param {formListBulkActionSrc156Evid3223Params} params - The parameters for this event\n * @property {string} action - Suggested values: bulk_delete, bulk_restore, bulk_tag_assign, bulk_tag_remove\n *\n * @property {string} action_result - Suggested values: success, fail\n * @property {number} forms_count - formsCount\n * @property {string} selection_scope - Suggested values: selected, all_filtered\n * @property {string} filter_by -  Form List: Filter action (3206): all_forms, active_forms, deleted_forms\n * @property {string} origin - Suggested values: bulk_toolbar\n * @property {string} relevant_ids_json - Example: {\"form_ids\":[\"...\"]} (only if needed)\n *\n * @property {string} namespace - namespace\n * @property {number} error_code - error_code\n * @property {string} error_message - error_message\n * @return {LogObject<formListBulkActionSrc156Evid3223Params>} LogObject<formListBulkActionSrc156Evid3223Params>\n */\nexport function formListBulkActionSrc156Evid3223(params: formListBulkActionSrc156Evid3223Params): LogObject<formListBulkActionSrc156Evid3223Params> {\n  return { evid: 3223, src: 156, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'formFieldEditAi' event (evid: 3224)\n *\n * Event description: UoU edited form field, array of fields (as AI can edit multiple fields)\n *\n * @param {formFieldEditAiParams} params - The parameters for this event\n * @property {string} fieldLabelArray - field_label array\n * @property {string} form_schema_name - form_schema_name\n * @property {string} fieldIdArray - field_id array\n * @property {string} form_url - form_url\n * @property {string} fieldTargetArray - field_target array\n * @property {string} form_type - form_type\n * @property {GUID} form_guid - form_guid\n * @property {string} form_fill_session_id - form_fill_session_id\n * @property {string} namespace - namespace\n * @return {LogObject<formFieldEditAiParams>} LogObject<formFieldEditAiParams>\n */\nexport function formFieldEditAi(params: formFieldEditAiParams): LogObject<formFieldEditAiParams> {\n  return { evid: 3224, src: 156, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'formListTagsUpdatedSrc156Evid3225' event (evid: 3225)\n *\n * Event description: Use when bulk assign/unassign tags is applied.\n *\n *\n * @param {formListTagsUpdatedSrc156Evid3225Params} params - The parameters for this event\n * @property {string} action - assign, remove\n * @property {string} action_result - Suggested values: success, fail\n * @property {number} forms_count - formsCount\n * @property {string} selection_scope - Suggested values: selected, all_filtered\n * @property {string} filter_by -  Form List: Filter action (3206): all_forms, active_forms, deleted_forms\n * @property {string} origin - tags_bulk\n * @property {string} namespace - namespace\n * @property {number} error_code - error_code\n * @property {string} error_message - error_message\n * @property {string} assign_tags_json - JSON array of tag IDs (e.g., [\"tagId1\",\"tagId2\"])\n *\n * @property {string} unassign_tags_json - JSON array of tag IDs (e.g., [\"tagId1\",\"tagId2\"])\n *\n * @property {number} tags_count - tags_count\n * @property {boolean} is_bulk_action - is_bulk_action\n * @return {LogObject<formListTagsUpdatedSrc156Evid3225Params>} LogObject<formListTagsUpdatedSrc156Evid3225Params>\n */\nexport function formListTagsUpdatedSrc156Evid3225(params: formListTagsUpdatedSrc156Evid3225Params): LogObject<formListTagsUpdatedSrc156Evid3225Params> {\n  return { evid: 3225, src: 156, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'aiBenchmarkTestStartedSrc156Evid4901' event (evid: 4901)\n *\n * Event description: For testing AI generation\n *\n * @param {aiBenchmarkTestStartedSrc156Evid4901Params} params - The parameters for this event\n * @property {GUID} testExecutionId - uuid\n * @property {string} testName - name of test\n * @property {boolean} executedInCi - true/false\n * @return {LogObject<aiBenchmarkTestStartedSrc156Evid4901Params>} LogObject<aiBenchmarkTestStartedSrc156Evid4901Params>\n */\nexport function aiBenchmarkTestStartedSrc156Evid4901(params: aiBenchmarkTestStartedSrc156Evid4901Params): LogObject<aiBenchmarkTestStartedSrc156Evid4901Params> {\n  return { evid: 4901, src: 156, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'aiBenchmarkTestCompletedSrc156Evid4902' event (evid: 4902)\n *\n * Event description: For testing AI generation\n *\n * @param {aiBenchmarkTestCompletedSrc156Evid4902Params} params - The parameters for this event\n * @property {GUID} testExecutionId - uuid\n * @property {string} testName - name of test\n * @property {boolean} executedInCi - true/false\n * @property {string} llmResponse - llm response\n * @return {LogObject<aiBenchmarkTestCompletedSrc156Evid4902Params>} LogObject<aiBenchmarkTestCompletedSrc156Evid4902Params>\n */\nexport function aiBenchmarkTestCompletedSrc156Evid4902(params: aiBenchmarkTestCompletedSrc156Evid4902Params): LogObject<aiBenchmarkTestCompletedSrc156Evid4902Params> {\n  return { evid: 4902, src: 156, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'aiBenchmarkTestFailedSrc156Evid4903' event (evid: 4903)\n *\n * Event description: For testing AI generation\n *\n * @param {aiBenchmarkTestFailedSrc156Evid4903Params} params - The parameters for this event\n * @property {GUID} testExecutionId - uuid\n * @property {string} testName - name of test\n * @property {boolean} executedInCi - true/false\n * @property {string} llmResponse - llm response\n * @property {string} error - error\n * @return {LogObject<aiBenchmarkTestFailedSrc156Evid4903Params>} LogObject<aiBenchmarkTestFailedSrc156Evid4903Params>\n */\nexport function aiBenchmarkTestFailedSrc156Evid4903(params: aiBenchmarkTestFailedSrc156Evid4903Params): LogObject<aiBenchmarkTestFailedSrc156Evid4903Params> {\n  return { evid: 4903, src: 156, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'aiUoUFormFillingLlmResponsePriceSrc156Evid4904' event (evid: 4904)\n *\n * Event description: For tracking LLM price for UoU filling a form\n *\n * @param {aiUoUFormFillingLlmResponsePriceSrc156Evid4904Params} params - The parameters for this event\n * @property {string} microcentsSpent - Then conversation price will be (summed microcent_spent by form_completion_id) * 1000 \n * @property {string} formCompletionId - form_completion_id\n * @property {string} formGuid - form_id / form_guid\n * @property {string} method - 'voice' for voice, currently null for text\n * @property {string} usageResponseJson - full llm response of usage, in json format, including tokens used etc (currently just for voice), e.g.:\n * \"usage\": {\n *             \"total_tokens\":275,\n *             \"input_tokens\":127,\n *             \"output_tokens\":148,\n *             \"input_token_details\": {\n *                   }\n *         }......\n * @property {number} totalTokens - total_tokens form llm response (currently just voice)\n * @property {number} inputTokens - input_tokens from llm response (currently just voice)\n * @property {number} outputTokens - output tokens from llm response (currently just voice)\n * @property {string} form_fill_session_id - form_fill_session_id to join other front end events for the same form filling session\n * @property {string} interactiveFormSessionId - interactive_form_session_id (previously form_completion_id)\n * @return {LogObject<aiUoUFormFillingLlmResponsePriceSrc156Evid4904Params>} LogObject<aiUoUFormFillingLlmResponsePriceSrc156Evid4904Params>\n */\nexport function aiUoUFormFillingLlmResponsePriceSrc156Evid4904(params: aiUoUFormFillingLlmResponsePriceSrc156Evid4904Params): LogObject<aiUoUFormFillingLlmResponsePriceSrc156Evid4904Params> {\n  return { evid: 4904, src: 156, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'wildFormsTemplatesPagePageViewSrc156Evid5201' event (evid: 5201)\n *\n * Event description: Page fully loaded on Wild Forms Templates Page\n *\n * @param {wildFormsTemplatesPagePageViewSrc156Evid5201Params} params - The parameters for this event\n * @property {number} loading_time - in ms\n * @property {Url} referral_url - referral url\n * @property {string} platform - on which platform the page is being viewed\n * @property {string} prefilled_info - whether the search bar was prefilled or not, and with which value\n * @property {string} book - book\n * @property {number} page_index - on which page index we viewed the screen\n * @property {string} category - category\n * @property {string} sub_category - sub_category\n * @property {string} micro_category - micro_category\n * @property {string} screen_name - template page / viewer\n * @property {string} session_id - session id for each visit\n * @property {string} page_name - which page the user saw - home / category / no results\n * @return {LogObject<wildFormsTemplatesPagePageViewSrc156Evid5201Params>} LogObject<wildFormsTemplatesPagePageViewSrc156Evid5201Params>\n */\nexport function wildFormsTemplatesPagePageViewSrc156Evid5201(params: wildFormsTemplatesPagePageViewSrc156Evid5201Params): LogObject<wildFormsTemplatesPagePageViewSrc156Evid5201Params> {\n  return { evid: 5201, src: 156, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'wildFormsTemplatesPageHoverTemplateSrc156Evid5212' event (evid: 5212)\n *\n * Event description: hover over a template on templates page\n *\n * @param {wildFormsTemplatesPageHoverTemplateSrc156Evid5212Params} params - The parameters for this event\n * @property {string} platform - on which platform the page is being viewed\n * @property {string} book - book\n * @property {number} page_index - on which page index we viewed the screen\n * @property {string} category - category of the page\n * @property {string} sub_category - sub_category of the page\n * @property {string} micro_category - micro_category of the page\n * @property {string} template_id - id of the template being hovered\n * @property {string} screen_name - template page / viewer\n * @property {boolean} is_pro - is the template pro or not\n * @property {string} page_name - page name\n * @property {string} search_term - last search term the user had\n * @property {string} session_id - session id for each visit\n * @property {number} position_index - position_index\n * @property {number} json_id - json.  id\n * @return {LogObject<wildFormsTemplatesPageHoverTemplateSrc156Evid5212Params>} LogObject<wildFormsTemplatesPageHoverTemplateSrc156Evid5212Params>\n */\nexport function wildFormsTemplatesPageHoverTemplateSrc156Evid5212(params: wildFormsTemplatesPageHoverTemplateSrc156Evid5212Params): LogObject<wildFormsTemplatesPageHoverTemplateSrc156Evid5212Params> {\n  return { evid: 5212, src: 156, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'wildFormsTemplatesPageEditTemplateSrc156Evid5215' event (evid: 5215)\n *\n * Event description: click edit a template on templates page\n *\n * @param {wildFormsTemplatesPageEditTemplateSrc156Evid5215Params} params - The parameters for this event\n * @property {string} platform - on which platform the page is being viewed\n * @property {string} book - book\n * @property {number} page_index - on which page index we viewed the screen\n * @property {string} category - category\n * @property {string} sub_category - sub_category\n * @property {string} micro_category - micro_category\n * @property {string} template_id - template id\n * @property {string} origin - origin\n * @property {string} screen_name - template page / viewer\n * @property {boolean} is_pro - is the template pro or not\n * @property {string} page_name - page name\n * @property {number} json_id - json id\n * @property {number} position_index - position_index\n * @property {string} search_term - last search term the user had\n * @property {string} session_id - session id for each visit\n * @return {LogObject<wildFormsTemplatesPageEditTemplateSrc156Evid5215Params>} LogObject<wildFormsTemplatesPageEditTemplateSrc156Evid5215Params>\n */\nexport function wildFormsTemplatesPageEditTemplateSrc156Evid5215(params: wildFormsTemplatesPageEditTemplateSrc156Evid5215Params): LogObject<wildFormsTemplatesPageEditTemplateSrc156Evid5215Params> {\n  return { evid: 5215, src: 156, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'wildFormsTemplatesPageSearchSrc156Evid5224' event (evid: 5224)\n *\n * Event description: Searches on the templates page\n *\n * @param {wildFormsTemplatesPageSearchSrc156Evid5224Params} params - The parameters for this event\n * @property {string} platform - on which platform the page is being viewed\n * @property {string} book - book\n * @property {number} page_index - on which page index we viewed the screen\n * @property {string} category - category\n * @property {string} sub_category - sub_category\n * @property {string} micro_category - micro_category\n * @property {string} source - where the search was conducted\n * @property {string} criteria - the text input of the search\n * @property {string} search_type - free text / prefilled info\n * @property {string} screen_name - template page / viewer\n * @property {string} page_name - page name\n * @property {string} session_id - session id for each visit\n * @return {LogObject<wildFormsTemplatesPageSearchSrc156Evid5224Params>} LogObject<wildFormsTemplatesPageSearchSrc156Evid5224Params>\n */\nexport function wildFormsTemplatesPageSearchSrc156Evid5224(params: wildFormsTemplatesPageSearchSrc156Evid5224Params): LogObject<wildFormsTemplatesPageSearchSrc156Evid5224Params> {\n  return { evid: 5224, src: 156, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'wildFormsTemplatesPageMenuInteractionsSrc156Evid5225' event (evid: 5225)\n *\n * Event description: Tracks interactions with the categories menu on the templates page within the Forms Platform. The event captures details about the menu navigation, including the selected category, sub-category, and the specific button clicked.\n *\n * @param {wildFormsTemplatesPageMenuInteractionsSrc156Evid5225Params} params - The parameters for this event\n * @property {string} platform - on which platform the page is being viewed\n * @property {string} book - book\n * @property {number} page_index - on which page index we viewed the screen\n * @property {string} category - category\n * @property {string} sub_category - sub_category\n * @property {string} micro_category - micro_category\n * @property {string} button_name - button_name\n * @property {string} screen_name - template page / viewer\n * @property {string} page_name - page name\n * @property {string} session_id - session id for each visit\n * @property {string} button_type - button type\n * @return {LogObject<wildFormsTemplatesPageMenuInteractionsSrc156Evid5225Params>} LogObject<wildFormsTemplatesPageMenuInteractionsSrc156Evid5225Params>\n */\nexport function wildFormsTemplatesPageMenuInteractionsSrc156Evid5225(params: wildFormsTemplatesPageMenuInteractionsSrc156Evid5225Params): LogObject<wildFormsTemplatesPageMenuInteractionsSrc156Evid5225Params> {\n  return { evid: 5225, src: 156, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'wildFormsTemplatesPageFilterInteractionsSrc156Evid5226' event (evid: 5226)\n *\n * Event description: interactions with the filters on Wild Forms Templates Page\n *\n * @param {wildFormsTemplatesPageFilterInteractionsSrc156Evid5226Params} params - The parameters for this event\n * @property {string} platform - on which platform the page is being viewed\n * @property {string} book - book\n * @property {number} page_index - on which page index we viewed the screen\n * @property {string} category - category\n * @property {string} sub_category - sub_category\n * @property {string} micro_category - micro_category\n * @property {string} click_type - click_type\n * @property {string} filter - on which filter user clicked\n * @property {string} value - chosen value / existing value\n * @property {string} screen_name - template page / viewer\n * @property {string} page_name - page name\n * @property {string} session_id - session id for each visit\n * @return {LogObject<wildFormsTemplatesPageFilterInteractionsSrc156Evid5226Params>} LogObject<wildFormsTemplatesPageFilterInteractionsSrc156Evid5226Params>\n */\nexport function wildFormsTemplatesPageFilterInteractionsSrc156Evid5226(params: wildFormsTemplatesPageFilterInteractionsSrc156Evid5226Params): LogObject<wildFormsTemplatesPageFilterInteractionsSrc156Evid5226Params> {\n  return { evid: 5226, src: 156, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'wildFormsTemplatesPageGeneralActionSrc156Evid5242' event (evid: 5242)\n *\n * Event description: Tracks general actions taken on the Templates Page within the Forms Platform. This event captures details like the specific action performed, the template category, and the location on the screen where the interaction occurred.\n *\n * @param {wildFormsTemplatesPageGeneralActionSrc156Evid5242Params} params - The parameters for this event\n * @property {string} platform - on which platform the page is being viewed\n * @property {string} book - book\n * @property {number} page_index - on which page index we viewed the screen\n * @property {string} category - category\n * @property {string} sub_category - sub_category\n * @property {string} micro_category - micro_category\n * @property {string} section - section\n * @property {string} action - action\n * @property {string} location - location\n * @property {string} screen_name - template page / viewer\n * @property {string} session_id - session id for each visit\n * @property {number} position_index - position_index\n * @property {string} template_id - template_id\n * @return {LogObject<wildFormsTemplatesPageGeneralActionSrc156Evid5242Params>} LogObject<wildFormsTemplatesPageGeneralActionSrc156Evid5242Params>\n */\nexport function wildFormsTemplatesPageGeneralActionSrc156Evid5242(params: wildFormsTemplatesPageGeneralActionSrc156Evid5242Params): LogObject<wildFormsTemplatesPageGeneralActionSrc156Evid5242Params> {\n  return { evid: 5242, src: 156, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'wildFormsTemplatesPageAboveTheFoldImpressionSrc156Evid5252' event (evid: 5252)\n *\n * Event description: When user saw a certain template on templates page\n *\n * @param {wildFormsTemplatesPageAboveTheFoldImpressionSrc156Evid5252Params} params - The parameters for this event\n * @property {string} book - book\n * @property {string} category - category\n * @property {number} page_index - page index\n * @property {string} Platform - platform\n * @property {string} template_id - template_id\n * @property {string} search_term - last search term the user had\n * @property {string} session_id - session id for each visit\n * @property {boolean} is_pro - is pro template\n * @property {string} sub_category - subcat\n * @property {string} micro_category - microcat\n * @property {number} position_index - position_index\n * @property {number} json_id - json_id\n * @property {string} fold_name - fold_name\n * @property {string} page_name - page_name\n * @return {LogObject<wildFormsTemplatesPageAboveTheFoldImpressionSrc156Evid5252Params>} LogObject<wildFormsTemplatesPageAboveTheFoldImpressionSrc156Evid5252Params>\n */\nexport function wildFormsTemplatesPageAboveTheFoldImpressionSrc156Evid5252(params: wildFormsTemplatesPageAboveTheFoldImpressionSrc156Evid5252Params): LogObject<wildFormsTemplatesPageAboveTheFoldImpressionSrc156Evid5252Params> {\n  return { evid: 5252, src: 156, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'wildFormsTemplatesPageNavigationSrc156Evid5254' event (evid: 5254)\n *\n * Event description: Tracks navigation on the Wild Forms templates page within the Forms Platform. It captures details such as the template category and the specific page section used for navigation, like popular categories or breadcrumbs.\n *\n * @param {wildFormsTemplatesPageNavigationSrc156Evid5254Params} params - The parameters for this event\n * @property {string} platform - on which platform the page is being viewed\n * @property {string} book - book\n * @property {number} page_index - on which page index we viewed the screen\n * @property {string} category - category\n * @property {string} sub_category - sub_category\n * @property {string} micro_category - micro_category\n * @property {string} value - value\n * @property {string} screen_name - template page / viewer\n * @property {string} session_id - session id for each visit\n * @property {string} section - on which section the navigation was conducted. examples: popular categories, breadcrumbs\n * @return {LogObject<wildFormsTemplatesPageNavigationSrc156Evid5254Params>} LogObject<wildFormsTemplatesPageNavigationSrc156Evid5254Params>\n */\nexport function wildFormsTemplatesPageNavigationSrc156Evid5254(params: wildFormsTemplatesPageNavigationSrc156Evid5254Params): LogObject<wildFormsTemplatesPageNavigationSrc156Evid5254Params> {\n  return { evid: 5254, src: 156, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'wildFormsTemplatesPagePaginationSrc156Evid5255' event (evid: 5255)\n *\n * Event description: Pagination on Templates Page\n *\n * @param {wildFormsTemplatesPagePaginationSrc156Evid5255Params} params - The parameters for this event\n * @property {string} platform - on which platform the page is being viewed\n * @property {string} book - book\n * @property {number} page_index - on which page index we viewed the screen\n * @property {string} category - category\n * @property {string} sub_category - sub_category\n * @property {string} micro_category - micro_category\n * @property {number} page_clicked - target page\n * @property {string} campagins_data - example: button\n * @property {string} screen_name - template page / viewer\n * @property {string} session_id - session id for each visit\n * @return {LogObject<wildFormsTemplatesPagePaginationSrc156Evid5255Params>} LogObject<wildFormsTemplatesPagePaginationSrc156Evid5255Params>\n */\nexport function wildFormsTemplatesPagePaginationSrc156Evid5255(params: wildFormsTemplatesPagePaginationSrc156Evid5255Params): LogObject<wildFormsTemplatesPagePaginationSrc156Evid5255Params> {\n  return { evid: 5255, src: 156, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'wixelCanvasActionSrc156Evid6023' event (evid: 6023)\n *\n * Event description: Tracks canvas actions performed by a user within the Forms Platform. It details the specific interaction, such as a click, drag, or resize, on entities like components or assets. The event also captures the working mode, such as mobile or desktop.\n *\n * @param {wixelCanvasActionSrc156Evid6023Params} params - The parameters for this event\n * @property {string} action - The action in English / name of the button (usually used when action_type = click)\n * @property {string} actionType - drag / resize / rotate / click / toggle / shortcut\n * @property {string} entityType - asset  / component / canvas / sub_asset\n * @property {number} duration - in MS. From the interaction  until the action is completed\n * @property {boolean} isMultiSelect - Boolean. Relevant for components \n * @property {boolean} isGroupElements - Boolean. Relevant for components \n * @property {number} rowIndexBefore - The asset row index (relevant only when moving assets or moving components between assets)\n * @property {number} rowIndexAfter - The asset row index (relevant only when moving assets or moving components between assets)\n * @property {number} slotIndexBefore - The asset slot index (relevant only when moving assets or moving components between assets)\n * @property {number} slotIndexAfter - The asset slot index (relevant only when moving assets or moving components between assets)\n * @property {number} itemSizeBefore - only for assets\n * @property {number} itemSizeAfter - only for assets\n * @property {string} additionalInfo - additional info\n * @property {string} projectId - Unique ID for each project on the platform.\n * @property {string} sessionId - Unique session identifier.\n * @property {string} viewType - View mode. Example values: gallery, focused.\n * @property {string} workingMode - Working environment. Example values: mobile, desktop.\n * @property {string} panelId - Identifier of the panel opened or interacted with.\n * @property {string} actionId - Identifier of the specific action the user performed.\n * @property {string} assetClass - Category of the asset, for example: image / video / logo / events / forms / pdf / docs\n * @property {number} fit - The resolution or fit option used.\n * @property {string} componentId - Unique selected components identifiers.\n * @property {string} componentType -  Type of the selected component, for example button, image.\n * @property {string} assetId - Identifier of the currently selected asset in the platform.\n * @property {string} subAssetId - Identifier of the selected sub-asset associated with the main asset.\n * @property {string} namespace - Forms namespace\n * @return {LogObject<wixelCanvasActionSrc156Evid6023Params>} LogObject<wixelCanvasActionSrc156Evid6023Params>\n */\nexport function wixelCanvasActionSrc156Evid6023(params: wixelCanvasActionSrc156Evid6023Params): LogObject<wixelCanvasActionSrc156Evid6023Params> {\n  return { evid: 6023, src: 156, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'wixelActionBarActionCompletedSrc156Evid6025' event (evid: 6025)\n *\n * Event description: Tracks when a user completes an action from the action bar within the Forms Platform. This event captures details about the action, its duration, the outcome, the entity it was applied to, and whether it originated from the action bar or the AI assistant.\n *\n * @param {wixelActionBarActionCompletedSrc156Evid6025Params} params - The parameters for this event\n * @property {string} action - The call-to-action performed by the user in english \n *\n * @property {string} actionType - click / drag / hover / type / scroll / ..\n * @property {string} actionResult - success / fail\n * @property {string} entityType - project / asset / sub asset / layer / component\n * @property {string} value - Usually will be the button name in english \n *\n * @property {string} valueId - the ID of the value selected, for example the ID of a certain font or image. \n *\n * @property {number} duration - Time (in ms) from the final click until the action is completed.\n *\n * @property {string} additionalInfo - This field allows you to pass any additional information\n *\n * @property {string} origin - ai_assistant / action_bar \n * @property {string} projectId - Unique ID for each project on the platform.\n * @property {string} sessionId - Unique session identifier.\n * @property {string} viewType - View mode. Example values: gallery, focused.\n * @property {string} workingMode - Working environment. Example values: mobile, desktop.\n * @property {string} panelId - Identifier of the panel opened or interacted with.\n * @property {string} actionId - Identifier of the specific action the user performed.\n * @property {string} assetClass - Category of the asset, for example: image / video / logo / events / forms / pdf / docs\n * @property {number} fit - The resolution or fit option used.\n * @property {string} componentId - Unique selected components identifiers.\n * @property {string} componentType -  Type of the selected component, for example button, image.\n * @property {string} assetId - Identifier of the currently selected asset in the platform.\n * @property {string} subAssetId - Identifier of the selected sub-asset associated with the main asset.\n * @property {string} namespace - forms namespace\n * @return {LogObject<wixelActionBarActionCompletedSrc156Evid6025Params>} LogObject<wixelActionBarActionCompletedSrc156Evid6025Params>\n */\nexport function wixelActionBarActionCompletedSrc156Evid6025(params: wixelActionBarActionCompletedSrc156Evid6025Params): LogObject<wixelActionBarActionCompletedSrc156Evid6025Params> {\n  return { evid: 6025, src: 156, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'wixelPanelStateChangedSrc156Evid6026' event (evid: 6026)\n *\n * Event description: Fires when a user opens or closes a panel within the Forms Platform. This event captures the context of the interaction, including the new state, the origin from where the panel was triggered, and the specific action or button used. It also records the duration of the panel's open state or its loading time.\n *\n * @param {wixelPanelStateChangedSrc156Evid6026Params} params - The parameters for this event\n * @property {string} state - open / close\n * @property {string} origin - The source of context from which the panel was opened. Bubbles / Header / Smart Breakdown / Add Panel / New Asset / Action Bar\n * @property {string} subOrigin - if there is more than one EP\n * @property {string} action - Name of the button that triggered the panel. In bubbles for example it will be the name of the bubble \n * @property {number} duration - in MS. Time from click to when the panel is fully loaded / Time from when the panel opened until it closed\n * @property {string} projectId - Unique ID for each project on the platform.\n * @property {string} sessionId - Unique session identifier.\n * @property {string} viewType - View mode. Example values: gallery, focused.\n * @property {string} workingMode - Working environment. Example values: mobile, desktop.\n * @property {string} panelId - Identifier of the panel opened or interacted with.\n * @property {string} actionId - Identifier of the specific action the user performed.\n * @property {string} assetClass - Category of the asset, for example: image / video / logo / events / forms / pdf / docs\n * @property {number} fit - The resolution or fit option used.\n * @property {string} componentId - Unique selected components identifiers.\n * @property {string} componentType -  Type of the selected component, for example button, image.\n * @property {string} assetId - Identifier of the currently selected asset in the platform.\n * @property {string} subAssetId - Identifier of the selected sub-asset associated with the main asset.\n * @property {boolean} isModal - true if the panel type is modal. \n * @property {string} namespace - forms namespace\n * @property {string} additionalInfo - additionalInfo\n * @return {LogObject<wixelPanelStateChangedSrc156Evid6026Params>} LogObject<wixelPanelStateChangedSrc156Evid6026Params>\n */\nexport function wixelPanelStateChangedSrc156Evid6026(params: wixelPanelStateChangedSrc156Evid6026Params): LogObject<wixelPanelStateChangedSrc156Evid6026Params> {\n  return { evid: 6026, src: 156, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'wixelPanelActionsSrc156Evid6027' event (evid: 6027)\n *\n * Event description: Tracks actions taken by users within panels in the Forms Platform. This event captures details about the interaction, including the specific panel, the action performed, its type, and the result. Key information such as the panel's origin, the view type, and whether the action was in preview mode is also recorded.\n *\n * @param {wixelPanelActionsSrc156Evid6027Params} params - The parameters for this event\n * @property {string} actionId - GUID generated for deep actions, used to match with the action-completed event\n * @property {string} panelId - the ID of the panel\n * @property {string} componentId - the ID of the component\n * @property {string} layerId - the ID of the layer\n * @property {string} componentType - type of component (image/ text etc...)\n * @property {string} assetId - the ID of the asset\n * @property {string} subAssetId - the ID of the sub asset\n * @property {string} assetClass - The relevant asset class if applicable (image / video / logo / events / forms / pdf / docs)\n * @property {number} fit - The resolution\n * @property {string} viewType - gallery_mode / focused_mode\n *\n * @property {string} origin - The source context from which the panel was opened, for example: Bubbles, Header, Smart Breakdown, Add Panel, or Action Bar.\n * @property {string} subOrigin - Specific place within the origin where the panel was opened, e.g., Action Bar -> Logo Style button.\n * @property {string} entityType -  project / asset / sub_asset / layer / component\n * @property {string} panelName - name of the panel\n * @property {string} panelSection - Where the action originated within the panel\n *\n * @property {string} action - The call-to-action performed by the user in english \n *\n * @property {string} actionType -  click / drag / hover / type / scroll\n * @property {string} actionResult - Outcome of the action, e.g., Apply or Dismiss\n *\n * @property {string} value - Usually will be the button name in english \n *\n * @property {string} valueId - the ID of the value selected, for example the ID of a certain font or image. \n *\n * @property {string} valueIndex -  the index of the value selected (if exists and relevant)\n *\n * @property {boolean} IsOnPreviewMode - Boolean; true if the action occurred in preview mode\n *\n * @property {string} selectionOrigin - Indicates whether the chosen item was from the panel’s original list or uploaded by the user. Options: original / user_uploaded\n *\n * @property {string} additionalInfo - This field allows you to pass any additional information\n * @property {string} panelType - generative, live_component, or other types\n * @property {string} projectId - Unique ID for each project on the platform.\n * @property {string} sessionId - Unique session identifier.\n * @property {string} workingMode - Working environment. Example values: mobile, desktop.\n * @property {boolean} isModal - true if the panel type is modal. \n * @property {string} namespace - forms namespace\n * @return {LogObject<wixelPanelActionsSrc156Evid6027Params>} LogObject<wixelPanelActionsSrc156Evid6027Params>\n */\nexport function wixelPanelActionsSrc156Evid6027(params: wixelPanelActionsSrc156Evid6027Params): LogObject<wixelPanelActionsSrc156Evid6027Params> {\n  return { evid: 6027, src: 156, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'wixelAddPanelPanelActionsSrc156Evid6030' event (evid: 6030)\n *\n * Event description: Tracks actions performed by users within the Add Panel of the Forms Platform. It captures details about the user's call-to-action, the type of interaction like a click or drag, and the specific component being managed.\n *\n * @param {wixelAddPanelPanelActionsSrc156Evid6030Params} params - The parameters for this event\n * @property {string} action - The call-to-action performed by the user.  (in English)\n * @property {string} value - Usually the name of the button, in English.\n * @property {string} actionType - drag / resize / rotate / click / toggle / shortcut\t\n * @property {string} panelSection - panel section\n * @property {string} category - the category the user in\t\n * @property {string} subCategory - the sub category the user in\t\n * @property {string} additionalInfo - additional info\n * @property {string} valueId - the Id of the Value\t\n * @property {string} projectId - Unique ID for each project on the platform.\n * @property {string} sessionId - Unique session identifier.\n * @property {string} viewType - View mode. Example values: gallery, focused.\n * @property {string} workingMode - Working environment. Example values: mobile, desktop.\n * @property {string} panelId - Identifier of the panel opened or interacted with.\n * @property {string} actionId - Identifier of the specific action the user performed.\n * @property {string} assetClass - Category of the asset, for example: image / video / logo / events / forms / pdf / docs\n * @property {number} fit - The resolution or fit option used.\n * @property {string} componentId - Unique selected components identifiers.\n * @property {string} componentType -  Type of the selected component, for example button, image.\n * @property {string} assetId - Identifier of the currently selected asset in the platform.\n * @property {string} selectionOrigin - Indicates whether the chosen item was from the panel’s original list or uploaded by the user. Options: original / user_uploaded (relevant for action = add_element)\n *\n * @property {string} namespace - forms namespace\n * @return {LogObject<wixelAddPanelPanelActionsSrc156Evid6030Params>} LogObject<wixelAddPanelPanelActionsSrc156Evid6030Params>\n */\nexport function wixelAddPanelPanelActionsSrc156Evid6030(params: wixelAddPanelPanelActionsSrc156Evid6030Params): LogObject<wixelAddPanelPanelActionsSrc156Evid6030Params> {\n  return { evid: 6030, src: 156, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'wixelAddPanelSearchSrc156Evid6031' event (evid: 6031)\n *\n * Event description: Tracks search actions performed by users within the Add Panel in the Forms Platform. The event captures details such as the user's search query, the number of results returned, and the time it took for results to appear. It also includes the category and sub-category being browsed.\n *\n * @param {wixelAddPanelSearchSrc156Evid6031Params} params - The parameters for this event\n * @property {string} searchTerm - User’s search query\n * @property {number} resultsCount - Number of results displayed to the user\n * @property {string} result - JSON of the search result\n * @property {number} duration - Time (in ms) from when the user applied a filter/search until results appear in the panel.\n * @property {string} category - the category the user in \n * @property {string} subCategory - the sub category the user in\n * @property {string} projectId - Unique ID for each project on the platform.\n * @property {string} sessionId - Unique session identifier.\n * @property {string} viewType - View mode. Example values: gallery, focused.\n * @property {string} workingMode - Working environment. Example values: mobile, desktop.\n * @property {string} panelId - Identifier of the panel opened or interacted with.\n * @property {string} actionId - Identifier of the specific action the user performed.\n * @property {string} assetClass - Category of the asset, for example: image / video / logo / events / forms / pdf / docs\n * @property {number} fit - The resolution or fit option used.\n * @property {string} componentId - Unique selected components identifiers.\n * @property {string} componentType -  Type of the selected component, for example button, image.\n * @property {string} assetId - Identifier of the currently selected asset in the platform.\n * @property {string} subAssetId - Identifier of the selected sub-asset associated with the main asset.\n * @property {string} namespace - Forms namespace\n * @property {string} additionalInfo - additionalInfo\n * @return {LogObject<wixelAddPanelSearchSrc156Evid6031Params>} LogObject<wixelAddPanelSearchSrc156Evid6031Params>\n */\nexport function wixelAddPanelSearchSrc156Evid6031(params: wixelAddPanelSearchSrc156Evid6031Params): LogObject<wixelAddPanelSearchSrc156Evid6031Params> {\n  return { evid: 6031, src: 156, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'wixelAddPanelElementAddedSrc156Evid6032' event (evid: 6032)\n *\n * Event description: Tracks when a user adds an element from the 'Add Panel' within the Forms Platform. This event specifies the type of element added, its category, and whether it was an original or user-uploaded item. It also captures the interaction method, such as a click or drag.\n *\n * @param {wixelAddPanelElementAddedSrc156Evid6032Params} params - The parameters for this event\n * @property {string} value - Usually the name of the button, in English.\t\n * @property {string} actionType - drag / resize / rotate / click / toggle / shortcut\t\n * @property {string} panelSection - panel section\t\n * @property {string} category - the category the user in\t\n * @property {string} subCategory - the sub category the user in\t\n * @property {string} additionalInfo - additional info\t\n * @property {string} valueId - the Id of the Value\t\n * @property {number} duration - Time (in ms) from the click until the element was added successfully.\n *\n * @property {string} projectId - Unique ID for each project on the platform.\n * @property {string} sessionId - Unique session identifier.\n * @property {string} viewType - View mode. Example values: gallery, focused.\n * @property {string} workingMode - Working environment. Example values: mobile, desktop.\n * @property {string} panelId - Identifier of the panel opened or interacted with.\n * @property {string} actionId - Identifier of the specific action the user performed.\n * @property {string} assetClass - Category of the asset, for example: image / video / logo / events / forms / pdf / docs\n * @property {number} fit - The resolution or fit option used.\n * @property {string} componentId - Unique selected components identifiers.\n * @property {string} componentType -  Type of the selected component, for example button, image.\n * @property {string} assetId - Identifier of the currently selected asset in the platform.\n * @property {string} subAssetId - Identifier of the selected sub-asset associated with the main asset.\n * @property {string} selectionOrigin - ndicates whether the chosen item was from the panel’s original list or uploaded by the user. Options: original / user_uploaded\n *\n * @property {string} namespace - forms namespace\n * @return {LogObject<wixelAddPanelElementAddedSrc156Evid6032Params>} LogObject<wixelAddPanelElementAddedSrc156Evid6032Params>\n */\nexport function wixelAddPanelElementAddedSrc156Evid6032(params: wixelAddPanelElementAddedSrc156Evid6032Params): LogObject<wixelAddPanelElementAddedSrc156Evid6032Params> {\n  return { evid: 6032, src: 156, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'wixelSmartBreakdownActionCompletedSrc156Evid6036' event (evid: 6036)\n *\n * Event description: Tracks when an action is completed within the Smart Breakdown feature in the Forms Platform. It captures details about the call-to-action performed, whether it was a success or failure, and the time it took to complete.\n *\n * @param {wixelSmartBreakdownActionCompletedSrc156Evid6036Params} params - The parameters for this event\n * @property {string} action - The call-to-action performed by the user in english \n *\n * @property {string} actionResult - success / fail\n * @property {string} value - Usually will be the button name in english \n *\n * @property {string} valueId - the ID of the value selected, for example the ID of a certain font or image. \n *\n * @property {number} duration - Time (in ms) from the final click until the action is completed.\n *\n * @property {string} additionalInfo - This field allows you to pass any additional information\n *\n * @property {string} panelName - panel name\n * @property {string} panelType - panel type\n * @property {string} projectId - Unique ID for each project on the platform.\n * @property {string} sessionId - Unique session identifier.\n * @property {string} viewType - View mode. Example values: gallery, focused.\n * @property {string} workingMode - Working environment. Example values: mobile, desktop.\n * @property {string} panelId - Identifier of the panel opened or interacted with.\n * @property {string} actionId - Identifier of the specific action the user performed.\n * @property {string} assetClass - Category of the asset, for example: image / video / logo / events / forms / pdf / docs\n * @property {number} fit - The resolution or fit option used.\n * @property {string} componentId - Unique selected components identifiers.\n * @property {string} componentType -  Type of the selected component, for example button, image.\n * @property {string} assetId - Identifier of the currently selected asset in the platform.\n * @property {string} subAssetId - Identifier of the selected sub-asset associated with the main asset.\n * @property {string} namespace - forms namespace\n * @return {LogObject<wixelSmartBreakdownActionCompletedSrc156Evid6036Params>} LogObject<wixelSmartBreakdownActionCompletedSrc156Evid6036Params>\n */\nexport function wixelSmartBreakdownActionCompletedSrc156Evid6036(params: wixelSmartBreakdownActionCompletedSrc156Evid6036Params): LogObject<wixelSmartBreakdownActionCompletedSrc156Evid6036Params> {\n  return { evid: 6036, src: 156, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'wildFormsTemplatesPagePageViewSrc181Evid5201' event (evid: 5201)\n *\n * Event description: Page fully loaded on Wixel Templates Page\n *\n * @param {wildFormsTemplatesPagePageViewSrc181Evid5201Params} params - The parameters for this event\n * @property {number} loading_time - in ms\n * @property {Url} referral_url - referral url\n * @property {string} platform - on which platform the page is being viewed\n * @property {string} prefilled_info - whether the search bar was prefilled or not, and with which value\n * @property {string} book - book\n * @property {number} page_index - on which page index we viewed the screen\n * @property {string} category - category\n * @property {string} sub_category - sub_category\n * @property {string} micro_category - micro_category\n * @property {string} screen_name - template page / viewer\n * @property {string} session_id - session id for each visit\n * @property {string} page_name - which page the user saw - home / category / no results\n * @return {LogObject<wildFormsTemplatesPagePageViewSrc181Evid5201Params>} LogObject<wildFormsTemplatesPagePageViewSrc181Evid5201Params>\n */\nexport function wildFormsTemplatesPagePageViewSrc181Evid5201(params: wildFormsTemplatesPagePageViewSrc181Evid5201Params): LogObject<wildFormsTemplatesPagePageViewSrc181Evid5201Params> {\n  return { evid: 5201, src: 181, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'spamFilterManage' event (evid: 124102)\n *\n * Event description: Fires when a user creates, updates, or deletes a rule in the Spam Filter management area. This event captures the specific action taken, such as create or delete, and the type of filter being managed, like IP or free text.\n *\n * @param {spamFilterManageParams} params - The parameters for this event\n * @property {string} visitorId - Visitor ID\n * @property {string} appDefId - AppDefId\n * @property {string} fieldValue - Value of the filter\n * @property {string} filterId - UUID of the filter\n * @property {string} actionName - create/update/delete\n * @property {string} fieldType - Type of the filter such as \"IP\", \"FREE_TEXT\"\n * @property {string} boUser - Back Office user identifier\n * @property {string} msid - Meta site ID\n * @return {LogObject<spamFilterManageParams>} LogObject<spamFilterManageParams>\n */\nexport function spamFilterManage(params: spamFilterManageParams): LogObject<spamFilterManageParams> {\n  return { evid: 124102, src: 19, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'formBuilderSubmissionSent' event (evid: 2300)\n *\n * Event description: Submission sent successfully by UoU via wix form or contact form, include standalone forms\n *\n * @param {formBuilderSubmissionSentParams} params - The parameters for this event\n * @property {string} formName - form name\n * @property {number} numOfAttachments - number of attachments, 0 if none\n * @property {string} appName - app name\n * @property {GUID} visitor_id - visitor id\n * @property {string} emailHash - Hash of the UoU email\n * @property {GUID} submissionId - submission Id\n * @property {string} form_comp_id - wix form id (per msid)\n * @property {string} origin - 'submit-v2' for Standalone form, 'web' or null for website forms\n * @property {boolean} isBot - is bot detected\n * @property {number} numOfFields - num of submitted fields\n * @property {GUID} msid - msid\n * @return {LogObject<formBuilderSubmissionSentParams>} LogObject<formBuilderSubmissionSentParams>\n */\nexport function formBuilderSubmissionSent(params: formBuilderSubmissionSentParams): LogObject<formBuilderSubmissionSentParams> {\n  return { evid: 2300, src: 19, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'formBuilderSubmissionFailed' event (evid: 2301)\n *\n * Event description: Form Submission Failed (wix form or contact form)\n *\n * @param {formBuilderSubmissionFailedParams} params - The parameters for this event\n * @property {number} numOfAttachments - number of attachments, 0 if none\n * @property {string} appName - app name\n * @property {GUID} visitor_id - visitor id\n * @property {string} reason - reason type\n * @property {string} reason_body - reason details\n * @property {string} form_comp_id - wix form id (per msid)\n * @property {string} origin - web/mobile\n * @property {number} numOfFields - num of submitted fields\n * @property {GUID} msid - msid\n * @return {LogObject<formBuilderSubmissionFailedParams>} LogObject<formBuilderSubmissionFailedParams>\n */\nexport function formBuilderSubmissionFailed(params: formBuilderSubmissionFailedParams): LogObject<formBuilderSubmissionFailedParams> {\n  return { evid: 2301, src: 19, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'formsEmailOpensFormSubmissionEmails' event (evid: 2304)\n *\n * Event description: Tracks when a visitor opens a form submission email. This event is triggered by an action taken by a visitor after a form has been submitted on a site.\n *\n * @param {formsEmailOpensFormSubmissionEmailsParams} params - The parameters for this event\n * @property {string} eventType - eventType\n * @property {string} custom_fields - custom_fields\n * @property {DateTime} timestamp - timestamp\n * @property {string} url - url\n * @property {string} user_agent - user_agent\n * @property {string} appDefId - appDefId\n * @property {string} messageType - messageType\n * @property {GUID} contactId - contactId\n * @property {string} messageLng - messageLng\n * @property {GUID} msid - msid\n * @return {LogObject<formsEmailOpensFormSubmissionEmailsParams>} LogObject<formsEmailOpensFormSubmissionEmailsParams>\n */\nexport function formsEmailOpensFormSubmissionEmails(params: formsEmailOpensFormSubmissionEmailsParams): LogObject<formsEmailOpensFormSubmissionEmailsParams> {\n  return { evid: 2304, src: 19, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'formBuilderSubmissionIgnored' event (evid: 2313)\n *\n * Event description: an event that states if a submission was ignored on purpose, to prevent fraud.\n *\n * @param {formBuilderSubmissionIgnoredParams} params - The parameters for this event\n * @property {GUID} submissionId - submission id\n * @property {string} reason - why submission was ignored\n * @property {string} form_comp_id - form component id\n * @property {string} ipAddress - ip address\n * @property {string} reason_metadata - reason additional info\n * @property {GUID} msid - msid\n * @return {LogObject<formBuilderSubmissionIgnoredParams>} LogObject<formBuilderSubmissionIgnoredParams>\n */\nexport function formBuilderSubmissionIgnored(params: formBuilderSubmissionIgnoredParams): LogObject<formBuilderSubmissionIgnoredParams> {\n  return { evid: 2313, src: 19, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'formBuilderSubmissionMarkedAsSpam' event (evid: 2314)\n *\n * Event description: Indicates if the submission was marked as spam\n *\n * @param {formBuilderSubmissionMarkedAsSpamParams} params - The parameters for this event\n * @property {string} email - Hashed email\n * @property {string} formCompId - Form id\n * @property {GUID} submissionId - Submission id\n * @property {string} reason - Reason as as Blocked IP\n * @property {string} ipAddress - IP address, if relevant\n * @property {string} reasonMetadata - More info about the blocker service, such as ID of the relevant spam filter entity\n * @property {GUID} msid - MetaSite id\n * @return {LogObject<formBuilderSubmissionMarkedAsSpamParams>} LogObject<formBuilderSubmissionMarkedAsSpamParams>\n */\nexport function formBuilderSubmissionMarkedAsSpam(params: formBuilderSubmissionMarkedAsSpamParams): LogObject<formBuilderSubmissionMarkedAsSpamParams> {\n  return { evid: 2314, src: 19, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'formBuilderReportSpam' event (evid: 2315)\n *\n * Event description: Action by user to mark submission as spam\n *\n * @param {formBuilderReportSpamParams} params - The parameters for this event\n * @property {string} hashedEmail - Hashed email\n * @property {string} hashedEmailDomain - Hashed email domain\n * @property {number} freeTextLength - Free text length\n * @property {GUID} submissionId - Submission ID\n * @property {string} hashedFreeText - Hashed free text\n * @property {GUID} msid - MSID\n * @return {LogObject<formBuilderReportSpamParams>} LogObject<formBuilderReportSpamParams>\n */\nexport function formBuilderReportSpam(params: formBuilderReportSpamParams): LogObject<formBuilderReportSpamParams> {\n  return { evid: 2315, src: 19, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'captchaEnforcerEvents' event (evid: 2316)\n *\n * Event description: Records when enforced captcha was required, passed or failed to pass\n *\n * @param {captchaEnforcerEventsParams} params - The parameters for this event\n * @property {string} result - required/passed/failed\n * @property {GUID} submissionId - Submission ID\n * @property {GUID} msid - Metasite ID\n * @return {LogObject<captchaEnforcerEventsParams>} LogObject<captchaEnforcerEventsParams>\n */\nexport function captchaEnforcerEvents(params: captchaEnforcerEventsParams): LogObject<captchaEnforcerEventsParams> {\n  return { evid: 2316, src: 19, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'submissionPassedValidation' event (evid: 2317)\n *\n * Event description: Submission passed validation stage\n *\n * @param {submissionPassedValidationParams} params - The parameters for this event\n * @property {GUID} msid - msid\n * @property {GUID} submissionId - submission Id\n * @return {LogObject<submissionPassedValidationParams>} LogObject<submissionPassedValidationParams>\n */\nexport function submissionPassedValidation(params: submissionPassedValidationParams): LogObject<submissionPassedValidationParams> {\n  return { evid: 2317, src: 19, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'formsActionsAfterSubmissionsContactCreated' event (evid: 2320)\n *\n * Event description: contact created after a form submission\n *\n * @param {formsActionsAfterSubmissionsContactCreatedParams} params - The parameters for this event\n * @property {GUID} visitor_id - visitor_id\n * @property {string} formCompId - Form id\n * @property {GUID} submissionId - submissionId\n * @property {string} contactId - contact_id\n * @property {GUID} msid - MetaSite id\n * @return {LogObject<formsActionsAfterSubmissionsContactCreatedParams>} LogObject<formsActionsAfterSubmissionsContactCreatedParams>\n */\nexport function formsActionsAfterSubmissionsContactCreated(params: formsActionsAfterSubmissionsContactCreatedParams): LogObject<formsActionsAfterSubmissionsContactCreatedParams> {\n  return { evid: 2320, src: 19, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'formsActionsAfterSubmissionsSubmissionProcessed' event (evid: 2321)\n *\n * Event description: Fires when an action is processed after a form submission by users. This event tracks the outcome of automated post-submission tasks, such as sending emails or inbox messages. It includes the specific action that was processed.\n *\n * @param {formsActionsAfterSubmissionsSubmissionProcessedParams} params - The parameters for this event\n * @property {GUID} uuid - uuid\n * @property {string} formCompId - Form id\n * @property {GUID} submissionId - submissionId\n * @property {string} contactId - contact_id\n * @property {string} actionName - ex. 'email sent', 'ping sent', 'inbox msg sent'\n * @property {GUID} msid - msid\n * @return {LogObject<formsActionsAfterSubmissionsSubmissionProcessedParams>} LogObject<formsActionsAfterSubmissionsSubmissionProcessedParams>\n */\nexport function formsActionsAfterSubmissionsSubmissionProcessed(params: formsActionsAfterSubmissionsSubmissionProcessedParams): LogObject<formsActionsAfterSubmissionsSubmissionProcessedParams> {\n  return { evid: 2321, src: 19, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'formsPaymentFormUserConnectPaymentToAForm' event (evid: 2322)\n *\n * Event description: (Note: the event is triggered only when a site is publish) user connect/disconnect payment to a form\n *\n * @param {formsPaymentFormUserConnectPaymentToAFormParams} params - The parameters for this event\n * @property {string} formIdArray - form_id of the connected payment form\n * @property {boolean} hasPaymentPlugin - Is the site connected to payment form?\n * @property {GUID} uuid - uuid\n * @property {GUID} msid - msid\n * @return {LogObject<formsPaymentFormUserConnectPaymentToAFormParams>} LogObject<formsPaymentFormUserConnectPaymentToAFormParams>\n */\nexport function formsPaymentFormUserConnectPaymentToAForm(params: formsPaymentFormUserConnectPaymentToAFormParams): LogObject<formsPaymentFormUserConnectPaymentToAFormParams> {\n  return { evid: 2322, src: 19, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'formBuilderBackofficeFormSubmissionSentServer' event (evid: 6601)\n *\n * Event description: Server event - UoU submit a backoffice form\n *\n * @param {formBuilderBackofficeFormSubmissionSentServerParams} params - The parameters for this event\n * @property {string} form_comp_id - form_comp_id\n * @property {GUID} msid - msid\n * @return {LogObject<formBuilderBackofficeFormSubmissionSentServerParams>} LogObject<formBuilderBackofficeFormSubmissionSentServerParams>\n */\nexport function formBuilderBackofficeFormSubmissionSentServer(params: formBuilderBackofficeFormSubmissionSentServerParams): LogObject<formBuilderBackofficeFormSubmissionSentServerParams> {\n  return { evid: 6601, src: 19, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'formBuilderBackofficeFormSubmissionReceivedSuccessfullyServer' event (evid: 6602)\n *\n * Event description: Server event - UoU submit a backoffice form successfully\n *\n * @param {formBuilderBackofficeFormSubmissionReceivedSuccessfullyServerParams} params - The parameters for this event\n * @property {string} form_name - form_name\n * @property {string} form_comp_id - form_comp_id\n * @property {GUID} msid - msid\n * @return {LogObject<formBuilderBackofficeFormSubmissionReceivedSuccessfullyServerParams>} LogObject<formBuilderBackofficeFormSubmissionReceivedSuccessfullyServerParams>\n */\nexport function formBuilderBackofficeFormSubmissionReceivedSuccessfullyServer(params: formBuilderBackofficeFormSubmissionReceivedSuccessfullyServerParams): LogObject<formBuilderBackofficeFormSubmissionReceivedSuccessfullyServerParams> {\n  return { evid: 6602, src: 19, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'formBuilderBackofficeFormSubmissionFailedServer' event (evid: 6603)\n *\n * Event description: Server event - UoU submit a backoffice form and the submission failed\n *\n * @param {formBuilderBackofficeFormSubmissionFailedServerParams} params - The parameters for this event\n * @property {string} form_name - form_name\n * @property {string} form_comp_id - form_comp_id\n * @property {string} error_reason - error_reason\n * @property {GUID} msid - msid\n * @return {LogObject<formBuilderBackofficeFormSubmissionFailedServerParams>} LogObject<formBuilderBackofficeFormSubmissionFailedServerParams>\n */\nexport function formBuilderBackofficeFormSubmissionFailedServer(params: formBuilderBackofficeFormSubmissionFailedServerParams): LogObject<formBuilderBackofficeFormSubmissionFailedServerParams> {\n  return { evid: 6603, src: 19, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'inputElementsAppointmentFieldSettingsClickOnButton' event (evid: 4801)\n *\n * Event description: Input elements - appointment field settings - click on button.\n *\n * @param {inputElementsAppointmentFieldSettingsClickOnButtonParams} params - The parameters for this event\n * @property {string} fieldName - fieldName\n * @property {string} buttonName - buttonName\n * @property {GUID} msid - msid\n * @property {string} inputType - input_type\n * @return {LogObject<inputElementsAppointmentFieldSettingsClickOnButtonParams>} LogObject<inputElementsAppointmentFieldSettingsClickOnButtonParams>\n */\nexport function inputElementsAppointmentFieldSettingsClickOnButton(params: inputElementsAppointmentFieldSettingsClickOnButtonParams): LogObject<inputElementsAppointmentFieldSettingsClickOnButtonParams> {\n  return { evid: 4801, src: 5, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'inputElementsAppointmentFieldSettingsChangeValue' event (evid: 4802)\n *\n * Event description: the user change value in the settings of the appointment (and time zone) field in the editor.\n * include chequebook, radio button, text input etc\n *\n * @param {inputElementsAppointmentFieldSettingsChangeValueParams} params - The parameters for this event\n * @property {string} previousValue - previous Value\n * @property {string} fieldName - fieldName\n * @property {string} fieldType - radio/checkbox/toggle etc\n * @property {GUID} msid - msid\n * @property {string} inputType - appointment or time zone\n * @property {string} value - new value\n * @return {LogObject<inputElementsAppointmentFieldSettingsChangeValueParams>} LogObject<inputElementsAppointmentFieldSettingsChangeValueParams>\n */\nexport function inputElementsAppointmentFieldSettingsChangeValue(params: inputElementsAppointmentFieldSettingsChangeValueParams): LogObject<inputElementsAppointmentFieldSettingsChangeValueParams> {\n  return { evid: 4802, src: 5, endpoint: '', params };\n}\n\n/**\n * A function to create a log object for the 'membersClickOnSaveInTheChangeSiteMemberLoginEmailModal' event (evid: 898)\n *\n * Event description: The user clicks on save in the change site member login email modal\n *\n * @param {membersClickOnSaveInTheChangeSiteMemberLoginEmailModalParams} params - The parameters for this event\n * @property {GUID} instance_id - instance_id\n * @property {GUID} biToken - msid\n * @property {GUID} visitor_id - visitor_id\n * @property {GUID} vsi - vsi\n * @property {GUID} contact_id - contact_id of the site member whose email was changed\n * @property {string} platform - platform\n * @return {LogObject<membersClickOnSaveInTheChangeSiteMemberLoginEmailModalParams>} LogObject<membersClickOnSaveInTheChangeSiteMemberLoginEmailModalParams>\n */\nexport function membersClickOnSaveInTheChangeSiteMemberLoginEmailModal(params: membersClickOnSaveInTheChangeSiteMemberLoginEmailModalParams): LogObject<membersClickOnSaveInTheChangeSiteMemberLoginEmailModalParams> {\n  return { evid: 898, src: 5, endpoint: '', params };\n}\n","import { type RichContent } from '@wix/ricos';\nimport React, {\n  type ReactNode,\n  createContext,\n  useContext,\n  useMemo,\n  useState,\n} from 'react';\n\ntype SubmitStatus = {\n  submitSuccessMessage?: RichContent;\n  submitFailureCode?: string;\n  submitFailureMessage?: string;\n  setSubmitSuccessMessage: (message?: any) => void;\n  setSubmitFailureCode: (code?: string) => void;\n  setSubmitFailureMessage: (message?: string) => void;\n};\n\nconst SubmitStatusContext = createContext<SubmitStatus | undefined>(undefined);\n\nexport type SubmitStatusProviderProps = {\n  children: ReactNode;\n};\n\nexport const SubmitStatusProvider = ({\n  children,\n}: SubmitStatusProviderProps) => {\n  const [submitSuccessMessage, setSubmitSuccessMessage] =\n    useState<RichContent>();\n  const [submitFailureCode, setSubmitFailureCode] = useState<string>();\n  const [submitFailureMessage, setSubmitFailureMessage] = useState<string>();\n\n  const value: SubmitStatus = useMemo(\n    () => ({\n      submitSuccessMessage,\n      submitFailureCode,\n      submitFailureMessage,\n      setSubmitSuccessMessage,\n      setSubmitFailureCode,\n      setSubmitFailureMessage,\n    }),\n    [submitSuccessMessage, submitFailureCode, submitFailureMessage],\n  );\n\n  return (\n    <SubmitStatusContext.Provider value={value}>\n      {children}\n    </SubmitStatusContext.Provider>\n  );\n};\n\nexport const useSubmitStatus = () => {\n  const context = useContext(SubmitStatusContext);\n\n  if (context === undefined) {\n    throw new Error(\n      'useSubmitStatus must be used within a SubmitStatusProvider',\n    );\n  }\n\n  return context;\n};\n","export const INTERACTIONS = {\n  LOAD_VIEWER_CONTROLLER: 'wix.forms.load-viewer-controller',\n  SUBMIT_FORM: 'wix.forms.submit-form',\n};\n","export enum BiFormSubmissionStatus {\n  INIT = 'INITIATE_SUBMISSION',\n  VALIDATION_FAILURE = 'VALIDATION_FAILURE',\n  FAILURE = 'FAILURE',\n  SUCCESS = 'SUCCESS',\n}\n","import {\n  UrlTargetEnumTarget,\n  type SubmitSettings,\n} from '@wix/ambassador-forms-v4-form/types';\nimport { type ValidationError } from '@wix/form-validator';\nimport {\n  type RichContent,\n  type Node_Type,\n  type TextStyle_TextAlignment,\n} from '@wix/ricos';\n\nexport const redirectToExternalUrl = (\n  redirectOptions?: SubmitSettings['redirectOptions'],\n) => {\n  const urlWithoutProtocol = redirectOptions?.redirectUrl?.replace(\n    /^https?:\\/\\//,\n    '',\n  );\n  const updatedExternalUrl = `https://${urlWithoutProtocol}`;\n  window.open(\n    updatedExternalUrl,\n    redirectOptions?.target === UrlTargetEnumTarget.SELF ? '_self' : '_blank',\n  );\n};\n\nexport const isValidUrl = (url: string) => {\n  const urlPattern = new RegExp(\n    /^(http(s):\\/\\/.)[-a-zA-Z0-9@:%._+~#=]{2,256}\\.[a-z]{2,63}\\b([-a-zA-Z0-9@:%_+.~#?&/=]*)$/g,\n  );\n  return urlPattern.test(url);\n};\n\nexport const getErrorCode = (error: any): string => {\n  return (\n    error?.response?.data?.details?.applicationError?.code ||\n    (error?.code && String(error?.code)) ||\n    error?.response?.data?.details?.validationError?.fieldViolations?.[0]?.data\n      ?.errors?.[0]?.errorType ||\n    'UNKNOWN'\n  );\n};\n\nexport const getErrorList = (error: any): ValidationError[] => {\n  return error?.response?.data?.details?.validationError?.fieldViolations?.[0]\n    .data.errors;\n};\n\nexport const getFormCustomErrorMessage = (errors: ValidationError[]) =>\n  errors?.filter(\n    (error) => error.useCustomErrorMessage && !error.errorPath,\n  )?.[0]?.errorMessage;\n\nexport const getFieldCustomErrorMessages = (errors: ValidationError[]) =>\n  errors?.filter((error) => error.useCustomErrorMessage && error.errorPath);\n\nexport const getCheckoutMessage = (text: string): RichContent => {\n  return {\n    nodes: [\n      {\n        id: 'ymnqxbmks',\n        type: 'PARAGRAPH' as Node_Type,\n        paragraphData: {\n          textStyle: {\n            textAlignment: 'CENTER' as TextStyle_TextAlignment,\n          },\n        },\n        nodes: [\n          {\n            nodes: [],\n            id: '',\n            type: 'TEXT' as Node_Type,\n            textData: {\n              text,\n              decorations: [],\n            },\n          },\n        ],\n      },\n    ],\n    metadata: {\n      version: 1,\n      id: 'af4951a2-dd8f-44ec-b2dc-cb4c09f65ee9',\n    },\n  };\n};\n","import { type ValidationMode } from '@wix/ambassador-forms-v1-validation-result/types';\nimport { type Form } from '@wix/ambassador-forms-v4-form/types';\nimport { formErrorAppearedDissapeared } from '@wix/bi-logger-forms-platform-uou/v2';\nimport { type Logger } from '@wix/fe-essentials/bi';\nimport { useAddressForms, useExternalData } from '@wix/form-fields';\nimport { type ValidationError } from '@wix/form-validator';\nimport { type RefObject, useCallback } from 'react';\n\nimport {\n  findErrorByNormalizedPath,\n  getFieldErrors,\n  mergeErrors,\n  validate,\n} from '../services';\nimport { runAdditionalValidation } from '../services/additional-field-validation';\nimport { type FormValues, type PossibleValues } from '../types';\n\ninterface ValidationProps {\n  form: Form;\n  errorsRef: RefObject<ValidationError[]>;\n  setErrors: (errors: ValidationError[]) => void;\n  validationMode?: ValidationMode;\n}\n\nexport const reportErrorChanges = ({\n  bi,\n  existingErrors,\n  newErrors,\n  form,\n}: {\n  bi: Logger;\n  existingErrors: ValidationError[];\n  newErrors: ValidationError[];\n  form: Form;\n}) => {\n  const newlyAddedErrors = newErrors.filter(\n    (newError) =>\n      !existingErrors.find(\n        (error) =>\n          newError.errorPath === error.errorPath &&\n          newError.errorType === error.errorType,\n      ),\n  );\n  const removedErrors = existingErrors.filter(\n    (error) =>\n      !newErrors.find(\n        (newError) =>\n          error.errorPath === newError.errorPath &&\n          error.errorType === newError.errorType,\n      ),\n  );\n\n  newlyAddedErrors.forEach((error) => {\n    const field = form.fields?.find(\n      (_field) => _field.target === error.errorPath,\n    );\n    bi.report(\n      formErrorAppearedDissapeared({\n        action_type: 'appeared',\n        error_name: error.errorMessage,\n        field_id: field?.id,\n        field_target:\n          field?.target && 'target' in field ? field.target : undefined,\n        field_name: field?.view?.label,\n      }),\n    );\n  });\n\n  removedErrors.forEach((error) => {\n    const field = form.fields?.find(\n      (_field) => _field.target === error.errorPath,\n    );\n    bi.report(\n      formErrorAppearedDissapeared({\n        action_type: 'disappeared',\n        error_name: error.errorMessage,\n        field_id: field?.id,\n        field_target:\n          field?.target && 'target' in field ? field.target : undefined,\n        field_name: field?.view?.label,\n      }),\n    );\n  });\n\n  return { newlyAddedErrors, removedErrors };\n};\n\nexport type HandleFieldValidation = (\n  fieldsToValidate: { path: string; value: PossibleValues }[],\n) => Promise<ValidationError[]>;\ntype ValidateFields = (newValues: FormValues) => Promise<ValidationError[]>;\ntype ValidateStep = (stepId: string, newValues: FormValues) => Promise<boolean>;\n\ntype UseValidationReturn = {\n  validateFields: ValidateFields;\n  validateStep: ValidateStep;\n  handleFieldValidation: HandleFieldValidation;\n};\n\nexport const useValidation = ({\n  form,\n  errorsRef,\n  setErrors,\n  validationMode,\n}: ValidationProps): UseValidationReturn => {\n  const { addressTemplates } = useAddressForms();\n  const externalData = useExternalData();\n\n  const validateFields = useCallback(\n    async (newValues: FormValues) => {\n      // TODO: returns undefined when form-id missing\n      const result = await validate(\n        form,\n        newValues,\n        addressTemplates,\n        validationMode,\n      );\n      const _errors = result?.errors || [];\n\n      const additionalErrors = runAdditionalValidation({\n        form,\n        values: newValues,\n        externalData,\n      });\n\n      const allErrors = mergeErrors({ errors: _errors, additionalErrors });\n\n      setErrors(allErrors);\n\n      return allErrors;\n    },\n    [form, setErrors, addressTemplates, externalData, validationMode],\n  );\n\n  const handleFieldValidation: HandleFieldValidation = useCallback(\n    async (fieldsToValidate: { path: string; value: PossibleValues }[]) => {\n      const fieldErrors = await getFieldErrors(\n        fieldsToValidate,\n        form,\n        addressTemplates,\n        externalData,\n        validationMode,\n      );\n\n      const otherErrors = (errorsRef.current ?? []).filter((error) => {\n        return !findErrorByNormalizedPath(fieldsToValidate, error.errorPath);\n      });\n\n      const allErrors = [...otherErrors, ...fieldErrors];\n\n      setErrors(allErrors);\n      return allErrors;\n    },\n    [\n      errorsRef,\n      form,\n      setErrors,\n      addressTemplates,\n      externalData,\n      validationMode,\n    ],\n  );\n  const validateStep = useCallback(\n    async (stepId: string, newValues: FormValues) => {\n      const items =\n        form?.steps?.find((step) => step.id === stepId)?.layout?.large?.items ||\n        [];\n\n      const validationErrors = await Promise.all(\n        items.map(async (item): Promise<ValidationError[]> => {\n          const field = form?.fields?.find(\n            (_field) => _field.id === item.fieldId,\n          );\n\n          const fieldValidationResult = field?.target\n            ? await handleFieldValidation([\n                {\n                  path: field.target,\n                  value: newValues[field.target],\n                },\n              ])\n            : [];\n\n          return fieldValidationResult;\n        }),\n      );\n      const validationErrorsFlatten = validationErrors.flat();\n\n      setErrors(validationErrorsFlatten);\n\n      return !validationErrorsFlatten.length;\n    },\n    [form, setErrors, handleFieldValidation],\n  );\n\n  return { validateFields, validateStep, handleFieldValidation };\n};\n","import { type Form as FormEntity } from '@wix/ambassador-forms-v4-form/types';\nimport { type FormSubmission } from '@wix/ambassador-forms-v4-submission/types';\nimport {\n  type FormView,\n  type Breakpoint,\n  DefaultFieldLayout,\n  createFormFields,\n  getSortedFields,\n  useFocusedField,\n  type FieldActions,\n  type FieldActionsContextValue,\n  type FormFields,\n  type InputElement,\n} from '@wix/form-fields';\nimport { type ValidationError, type ValidationMode } from '@wix/form-validator';\nimport { deepEqual } from 'fast-equals';\nimport {\n  useCallback,\n  useImperativeHandle,\n  useMemo,\n  useRef,\n  type ForwardedRef,\n} from 'react';\n\nimport { applyAllOverrides } from '../components/form/all-overrides';\nimport { clearFieldsWhenHiddenByRule } from '../components/form/clear-fields';\nimport { getStepIndex } from '../components/form/get-step-index';\nimport {\n  type FormActions,\n  type FormConfig,\n  type FormOverrides,\n  type FormHandle,\n  type FormValues,\n  type OnChange,\n  type OnBlur,\n  type OnFocus,\n  type OnStepIdChange,\n  type PossibleValues,\n} from '../types';\n\nimport { fillEmptyValues } from './form-values';\nimport { useFormValues } from './use-form-values';\nimport { useFormView } from './use-form-view';\nimport { useReportFieldEdit } from './use-report-field-edit';\nimport { useScrollToFirstError } from './use-scroll-to-first-error';\nimport { useSubmit } from './use-submit';\nimport { type HandleFieldValidation, useValidation } from './use-validation';\n\ntype UseFormParams = {\n  form: FormEntity;\n  values: FormValues;\n  stepId?: string;\n  onStepIdChange?: OnStepIdChange;\n  onChange: OnChange;\n  onBlur?: OnBlur;\n  onFocus?: OnFocus;\n  errors: ValidationError[];\n  onValidate: (errors: ValidationError[]) => void;\n  onSubmit?: () => void;\n  onSubmitSuccess?: (submission: FormSubmission) => void;\n  onSubmitFailure?: (error: unknown) => void;\n  enableScrollToFirstError?: boolean;\n  forwardedRef?: ForwardedRef<FormHandle>;\n  overrides?: FormOverrides;\n  actions?: FormActions;\n  config?: FormConfig | null;\n  breakpoint?: Breakpoint;\n  validationMode?: ValidationMode;\n  fieldMap: FormFields;\n  inProgress?: boolean;\n  enableAutofill?: boolean;\n};\n\ntype UseFormReturn = {\n  currentView: FormView;\n  formViews: FormView[];\n  normalizedValues: FormValues;\n  onFieldChange: (target: string, newValue: PossibleValues) => void;\n  errors: ValidationError[];\n  formFields: InputElement[];\n  handleFieldValidation: HandleFieldValidation;\n  formWithOverrides: FormEntity;\n  currentStep: number;\n  fieldActions: FieldActionsContextValue<FieldActions>;\n  submitForm: () => Promise<FormSubmission | undefined>;\n};\n\nexport const useForm = ({\n  form: paramForm,\n  values: paramValues,\n  stepId,\n  onStepIdChange,\n  onChange,\n  onBlur,\n  onFocus,\n  errors,\n  onValidate,\n  onSubmit,\n  onSubmitSuccess,\n  onSubmitFailure,\n  enableScrollToFirstError = true,\n  forwardedRef,\n  overrides,\n  actions,\n  config,\n  breakpoint,\n  validationMode,\n  fieldMap,\n  inProgress,\n  enableAutofill,\n}: UseFormParams): UseFormReturn => {\n  // `values` – we are working with the full list for all steps.\n  // `errors` – working only with the errors list for the fields inside current step.\n  const formWithOverrides = useMemo(\n    () => applyAllOverrides(paramForm, paramValues, overrides),\n    [paramForm, paramValues, overrides],\n  );\n  const formId = formWithOverrides.id!;\n  const { setFocusedFieldId } = useFocusedField();\n  const normalizedValues = useFormValues(\n    formWithOverrides,\n    paramValues,\n    onChange,\n    config,\n    enableAutofill,\n  );\n\n  const valuesRef = useRef(normalizedValues);\n  valuesRef.current = normalizedValues;\n\n  const errorsRef = useRef(errors);\n  errorsRef.current = errors;\n\n  const reportFieldEdit = useReportFieldEdit(formWithOverrides);\n  const onFieldChange = (target: string, newValue: PossibleValues) => {\n    const oldValues = valuesRef.current;\n    const oldErrors = errorsRef.current;\n\n    if (!deepEqual(newValue, oldValues[target])) {\n      reportFieldEdit({\n        [target]: newValue,\n      });\n\n      const newValues = {\n        ...oldValues,\n        [target]: newValue,\n      };\n\n      const cleared = clearFieldsWhenHiddenByRule(\n        paramForm,\n        overrides,\n        oldValues,\n        newValues,\n        oldErrors,\n      );\n\n      onChange(cleared.values);\n      onValidate(cleared.errors);\n    }\n  };\n  const _onValidate = (newErrors: ValidationError[]) => {\n    onValidate(newErrors);\n  };\n\n  const formViews = useFormView(formWithOverrides, stepId, breakpoint);\n  const currentView = formViews[0];\n\n  const { validateFields, validateStep, handleFieldValidation } = useValidation(\n    {\n      form: formWithOverrides,\n      errorsRef,\n      setErrors: _onValidate,\n      validationMode,\n    },\n  );\n\n  const handleStepChange = useCallback(\n    (step: number) => {\n      const newStepId = formWithOverrides.steps?.[step]?.id;\n\n      if (newStepId) {\n        const firstFieldInStep = getSortedFields(formWithOverrides, {\n          stepId: newStepId,\n        })[0];\n\n        onStepIdChange?.(newStepId);\n        setFocusedFieldId(firstFieldInStep?.id);\n      }\n    },\n    [formWithOverrides, onStepIdChange, setFocusedFieldId],\n  );\n\n  const { scrollToFirstError, handleScrollToFirstError } =\n    useScrollToFirstError({\n      form: formWithOverrides,\n      handleStepChange,\n      currentStepId: stepId,\n    });\n\n  const resetFormValues = useCallback(() => {\n    onChange(fillEmptyValues(formWithOverrides, {}));\n  }, [formWithOverrides, onChange]);\n\n  const validateAndScrollToError = useCallback(\n    async (values: FormValues) => {\n      const validationErrors = await validateFields(values);\n\n      if (validationErrors && validationErrors.length) {\n        handleScrollToFirstError(validationErrors);\n      }\n\n      return validationErrors;\n    },\n    [validateFields, handleScrollToFirstError],\n  );\n\n  const submitAction = useCallback(\n    async (values: FormValues) => {\n      const response = await actions?.submitForm?.(formId, values);\n      return response?.submission;\n    },\n    [actions, formId],\n  );\n\n  const { submitForm } = useSubmit({\n    submitAction,\n    onSubmit,\n    onSubmitSuccess,\n    onSubmitFailure,\n    resetFormValues,\n    validateAndScrollToError,\n    values: normalizedValues,\n    submitSettings: formWithOverrides.submitSettings,\n    navigateToCheckout: actions?.navigateToCheckout,\n    openPopup: actions?.openPopup,\n    handleStepChange,\n    onValidate: _onValidate,\n    handleScrollToFirstError,\n  });\n\n  useImperativeHandle(\n    forwardedRef,\n    () => ({\n      submit: submitForm,\n      validate: async () => {\n        const validationErrors = await validateFields(normalizedValues);\n\n        if (validationErrors && validationErrors.length > 0) {\n          if (enableScrollToFirstError) {\n            scrollToFirstError(validationErrors);\n          }\n          return false;\n        }\n        return true;\n      },\n      validateStep: (step: string) => validateStep(step, normalizedValues),\n      getValues: () => normalizedValues,\n    }),\n    [\n      submitForm,\n      validateStep,\n      validateFields,\n      normalizedValues,\n      enableScrollToFirstError,\n      scrollToFirstError,\n    ],\n  );\n\n  const currentStep = getStepIndex(stepId, formWithOverrides.steps);\n\n  const setNextStep = useCallback(\n    () => handleStepChange(currentStep + 1),\n    [currentStep, handleStepChange],\n  );\n  const setPreviousStep = useCallback(\n    () => handleStepChange(currentStep - 1),\n    [currentStep, handleStepChange],\n  );\n\n  const fieldActions = useMemo(\n    () =>\n      actions\n        ? {\n            actions: { ...actions, submitForm, setNextStep, setPreviousStep },\n            formId,\n            inProgress,\n          }\n        : { actions: { submitForm, setNextStep, setPreviousStep } },\n    [actions, formId, inProgress, submitForm, setNextStep, setPreviousStep],\n  );\n\n  const formFields = createFormFields({\n    form: currentView,\n    formSchema: formWithOverrides,\n    values: normalizedValues,\n    onFieldChange,\n    onBlur,\n    onFocus,\n    errors,\n    FieldLayout: DefaultFieldLayout,\n    fields: fieldMap,\n    validateFields: handleFieldValidation,\n    fieldActions,\n  });\n\n  return {\n    currentView,\n    formViews,\n    normalizedValues,\n    onFieldChange,\n    errors,\n    formFields,\n    handleFieldValidation,\n    formWithOverrides,\n    currentStep,\n    fieldActions,\n    submitForm,\n  };\n};\n","import * as React from \"react\";\nconst Delete = ({ size, ...props }) => /* @__PURE__ */ React.createElement(\"svg\", { viewBox: \"0 0 24 24\", fill: \"currentColor\", width: size || \"24\", height: size || \"24\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { fillRule: \"evenodd\", d: \"M13.5,3 C14.327,3 15,3.673 15,4.5 L15,4.5 L15,5 L19,5 L19,6 L18,6 L18,17.5 C18,18.879 16.878,20 15.5,20 L15.5,20 L7.5,20 C6.122,20 5,18.879 5,17.5 L5,17.5 L5,6 L4,6 L4,5 L8,5 L8,4.5 C8,3.673 8.673,3 9.5,3 L9.5,3 Z M17,6 L6,6 L6,17.5 C6,18.327 6.673,19 7.5,19 L7.5,19 L15.5,19 C16.327,19 17,18.327 17,17.5 L17,17.5 L17,6 Z M10,9 L10,16 L9,16 L9,9 L10,9 Z M14,9 L14,16 L13,16 L13,9 L14,9 Z M13.5,4 L9.5,4 C9.224,4 9,4.225 9,4.5 L9,4.5 L9,5 L14,5 L14,4.5 C14,4.225 13.776,4 13.5,4 L13.5,4 Z\" }));\nDelete.displayName = \"Delete\";\nvar Delete_default = Delete;\nexport {\n  Delete_default as default\n};\n","import * as React from \"react\";\nconst Download = ({ size, ...props }) => /* @__PURE__ */ React.createElement(\"svg\", { viewBox: \"0 0 24 24\", fill: \"currentColor\", width: size || \"24\", height: size || \"24\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { fillRule: \"evenodd\", d: \"M4.9937,15.9971 L4.9937,18.4971 C4.9937,18.7721 5.2177,18.9971 5.4937,18.9971 L5.4937,18.9971 L17.4937,18.9971 C17.7697,18.9971 17.9937,18.7721 17.9937,18.4971 L17.9937,18.4971 L17.9937,15.9971 L18.9937,15.9971 L18.9937,18.4971 C18.9937,19.3241 18.3207,19.9971 17.4937,19.9971 L17.4937,19.9971 L5.4937,19.9971 C4.6657,19.9971 3.9937,19.3241 3.9937,18.4971 L3.9937,18.4971 L3.9937,15.9971 L4.9937,15.9971 Z M11.9933,4 L11.9933,14.078 L15.0293,11.043 L15.7363,11.75 L11.4933,15.992 L7.2513,11.75 L7.9583,11.043 L10.9933,14.078 L10.9933,4 L11.9933,4 Z\" }));\nDownload.displayName = \"Download\";\nvar Download_default = Download;\nexport {\n  Download_default as default\n};\n","import * as React from \"react\";\nconst Edit = ({ size, ...props }) => /* @__PURE__ */ React.createElement(\"svg\", { viewBox: \"0 0 24 24\", fill: \"currentColor\", width: size || \"24\", height: size || \"24\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { fillRule: \"evenodd\", d: \"M18.8525,7.543 L17.7515,8.644 L15.3565,6.248 L16.4575,5.147 C16.5555,5.05 16.6835,5.001 16.8105,5.001 C16.9385,5.001 17.0665,5.05 17.1645,5.147 L18.8525,6.835 C19.0475,7.03 19.0475,7.348 18.8525,7.543 L18.8525,7.543 Z M8.1895,18.206 C8.1185,18.276 8.0275,18.324 7.9295,18.344 L5.1275,18.873 L5.6575,16.07 C5.6755,15.972 5.7225,15.882 5.7945,15.811 L14.6495,6.955 L17.0445,9.351 L8.1895,18.206 Z M19.5595,6.128 L17.8715,4.44 C17.2865,3.856 16.3355,3.856 15.7505,4.44 L5.0875,15.103 C4.8735,15.317 4.7295,15.588 4.6745,15.886 L4.0085,19.407 C3.9775,19.569 4.0295,19.736 4.1465,19.854 C4.2415,19.948 4.3685,20 4.4995,20 C4.5305,20 4.5615,19.997 4.5925,19.991 L8.1165,19.326 C8.4145,19.269 8.6855,19.125 8.8965,18.912 L19.5595,8.25 C20.1445,7.665 20.1445,6.713 19.5595,6.128 L19.5595,6.128 Z\" }));\nEdit.displayName = \"Edit\";\nvar Edit_default = Edit;\nexport {\n  Edit_default as default\n};\n","import * as React from \"react\";\nconst ErrorSmall = ({ size, ...props }) => /* @__PURE__ */ React.createElement(\"svg\", { viewBox: \"0 0 20 20\", fill: \"currentColor\", width: size || \"20\", height: size || \"20\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { fillRule: \"evenodd\", d: \"M9.5,3 C13.084,3 16,5.916 16,9.5 C16,13.084 13.084,16 9.5,16 C5.916,16 3,13.084 3,9.5 C3,5.916 5.916,3 9.5,3 Z M9.5,4 C6.467,4 4,6.467 4,9.5 C4,12.533 6.467,15 9.5,15 C12.533,15 15,12.533 15,9.5 C15,6.467 12.533,4 9.5,4 Z M10,11 L10,12 L9,12 L9,11 L10,11 Z M10,7 L10,10 L9,10 L9,7 L10,7 Z\" }));\nErrorSmall.displayName = \"ErrorSmall\";\nvar ErrorSmall_default = ErrorSmall;\nexport {\n  ErrorSmall_default as default\n};\n","import * as React from \"react\";\nconst TextStyleSmall = ({ size, ...props }) => /* @__PURE__ */ React.createElement(\"svg\", { viewBox: \"0 0 20 20\", fill: \"currentColor\", width: size || \"20\", height: size || \"20\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { fillRule: \"evenodd\", d: \"M12,4 L12,5 L8,5 L8,16 L7,16 L7,5 L3,5 L3,4 L12,4 Z M18,8 L18,9 L15,9 L15,16 L14,16 L14,9 L11,9 L11,8 L18,8 Z\" }));\nTextStyleSmall.displayName = \"TextStyleSmall\";\nvar TextStyleSmall_default = TextStyleSmall;\nexport {\n  TextStyleSmall_default as default\n};\n","import { type IHostProps } from '@wix/native-components-infra/dist/es/src/types/types';\nimport React from 'react';\n\ntype Host = IHostProps;\n\nexport const HostContext = React.createContext<Host | undefined>(undefined);\n\ntype HostProviderProps = {\n  children: React.ReactNode;\n  host: IHostProps;\n};\n\nexport const HostProvider = React.memo(\n  ({ children, host }: HostProviderProps) => {\n    return <HostContext.Provider value={host}>{children}</HostContext.Provider>;\n  },\n);\n\nexport function useHost() {\n  const context = React.useContext(HostContext);\n  if (context === undefined) {\n    throw new Error('useHost must be used within a HostProvider');\n  }\n  return context;\n}\n","import { type Form as FormEntity } from '@wix/ambassador-forms-v4-form/types';\nimport { type Logger } from '@wix/fe-essentials/bi';\nimport { generateUUID } from '@wix/form-schema';\nimport { useMemo } from 'react';\n\nexport const dummyBi = {\n  log: () => Promise.resolve(),\n  report: () => Promise.resolve(),\n  flush: () => Promise.resolve(),\n  updateDefaults: () => dummyBi,\n};\n\nexport const useFormBi = (\n  form: FormEntity,\n  bi?: Logger,\n  biFormFillSessionId?: string,\n) => {\n  const formEditSessionId = useMemo(generateUUID, []);\n\n  return useMemo(() => {\n    if (!bi) {\n      return dummyBi;\n    }\n    return {\n      ...bi,\n      report: (payload: any) =>\n        bi.report({\n          ...payload,\n          params: {\n            form_fill_session_id: biFormFillSessionId || formEditSessionId,\n            form_guid: form?.id,\n            form_schema_name: form.properties?.name,\n            form_url: location.href,\n            namespace: form.namespace,\n            ...payload?.params,\n          },\n        }),\n    };\n  }, [\n    bi,\n    biFormFillSessionId,\n    form?.id,\n    form.namespace,\n    form.properties?.name,\n    formEditSessionId,\n  ]);\n};\n","import { type Form as FormEntity } from '@wix/ambassador-forms-v4-form/types';\nimport { type Logger } from '@wix/fe-essentials/bi';\nimport type { IHttpClient } from '@wix/fe-essentials/http-client';\nimport type { i18n } from '@wix/fe-essentials/i18n';\nimport { type PanoramaClientForComponent } from '@wix/fe-essentials/panorama-client';\nimport {\n  BiContext,\n  ConfigContextProvider,\n  type Currency,\n  type Experiments,\n  ExperimentsContext,\n  type ExternalData,\n  ExternalDataProvider,\n  type ForcedState,\n  ForcedStateContext,\n  FormContext,\n  HttpClientContext,\n  TranslationContext,\n  WixRicosViewerContext,\n  AddressFormsContext,\n  getAddressForm,\n  type AddressTemplate,\n  EventsProvider,\n  FieldInitialDataContext,\n  type FieldInitialData,\n  PanoramaContext,\n  FocusedFieldProvider,\n  ScrollProvider,\n  type UserData,\n} from '@wix/form-fields';\nimport { type CountryCode } from '@wix/form-multiline-address';\nimport { type IHostProps } from '@wix/native-components-infra/dist/es/src/types/types';\nimport type { WixRicosViewerProps } from '@wix/ricos';\nimport React, { type ReactNode, useMemo, useContext } from 'react';\n\nimport { SubmitStatusProvider } from '../../contexts/submit-status-context';\nimport { HostContext } from '../../tpa/widget/host-context';\nimport { useFormBi } from '../form/use-form-bi';\n\nexport interface FormViewerProviderProps {\n  i18n: i18n;\n  httpClient?: IHttpClient;\n  bi?: Logger;\n  panorama?: PanoramaClientForComponent;\n  biFormFillSessionId?: string;\n  form: FormEntity;\n  translationNamespace?: string;\n  isMobile?: boolean;\n  isEditor?: boolean;\n  isComposer?: boolean;\n  isRTL?: boolean;\n  compId?: string;\n  language: string;\n  regionalFormat: string;\n  externalData?: ExternalData;\n  forcedState?: ForcedState[];\n  children: ReactNode;\n  instance?: string;\n  experiments?: Experiments;\n  currency?: Currency;\n  userData?: UserData;\n  WixRicosViewer: React.ComponentType<WixRicosViewerProps>;\n  addressTemplates?: AddressTemplate[];\n  atlasBaseUrl?: string;\n  fieldInitialData?: FieldInitialData;\n  enableAnimations?: boolean;\n  baseUrl?: string;\n}\n\nexport const FormViewerProvider = ({\n  i18n,\n  bi,\n  biFormFillSessionId,\n  form,\n  isMobile,\n  isEditor,\n  isComposer,\n  isRTL,\n  compId,\n  language,\n  regionalFormat,\n  externalData,\n  forcedState,\n  instance,\n  children,\n  httpClient,\n  panorama,\n  experiments,\n  translationNamespace,\n  currency,\n  userData,\n  WixRicosViewer,\n  addressTemplates,\n  atlasBaseUrl,\n  fieldInitialData,\n  enableAnimations,\n  baseUrl,\n}: FormViewerProviderProps) => {\n  const translations = useMemo(\n    () => ({\n      t: i18n.getFixedT(language, translationNamespace),\n      i18n,\n    }),\n    [language, i18n, translationNamespace],\n  );\n  const formBi = useFormBi(form, bi, biFormFillSessionId);\n  const host = useContext(HostContext) ?? ({} as IHostProps);\n\n  const config = useMemo(\n    () => ({\n      language,\n      regionalFormat,\n      instance,\n      isMobile,\n      currency,\n      atlasBaseUrl,\n      userData,\n      compId,\n      baseUrl,\n      isEditor,\n      isComposer,\n      isRTL,\n      enableAnimations,\n      style: host?.style,\n    }),\n    [\n      language,\n      regionalFormat,\n      instance,\n      isMobile,\n      currency,\n      atlasBaseUrl,\n      userData,\n      compId,\n      baseUrl,\n      isEditor,\n      isComposer,\n      isRTL,\n      enableAnimations,\n      host?.style,\n    ],\n  );\n\n  const forcedViewState = useMemo(() => forcedState ?? [], [forcedState]);\n\n  return (\n    <HttpClientContext.Provider value={{ httpClient }}>\n      <PanoramaContext.Provider value={{ panorama }}>\n        <TranslationContext.Provider value={translations}>\n          <ScrollProvider>\n            <FocusedFieldProvider>\n              <FieldInitialDataContext.Provider value={fieldInitialData}>\n                <BiContext.Provider value={formBi}>\n                  <ExternalDataProvider externalData={externalData}>\n                    <ConfigContextProvider value={config}>\n                      <ForcedStateContext.Provider value={forcedViewState}>\n                        <FormContext.Provider value={form}>\n                          <AddressFormsContext.Provider\n                            value={{\n                              getCountryAddressForm: (country?: CountryCode) =>\n                                getAddressForm(addressTemplates, country),\n                              addressTemplates,\n                            }}\n                          >\n                            <ExperimentsContext.Provider value={experiments}>\n                              <EventsProvider>\n                                <WixRicosViewerContext.Provider\n                                  value={WixRicosViewer}\n                                >\n                                  <SubmitStatusProvider>\n                                    {children}\n                                  </SubmitStatusProvider>\n                                </WixRicosViewerContext.Provider>\n                              </EventsProvider>\n                            </ExperimentsContext.Provider>\n                          </AddressFormsContext.Provider>\n                        </FormContext.Provider>\n                      </ForcedStateContext.Provider>\n                    </ConfigContextProvider>\n                  </ExternalDataProvider>\n                </BiContext.Provider>\n              </FieldInitialDataContext.Provider>\n            </FocusedFieldProvider>\n          </ScrollProvider>\n        </TranslationContext.Provider>\n      </PanoramaContext.Provider>\n    </HttpClientContext.Provider>\n  );\n};\n","import camelCase from 'lodash.camelcase';\nimport mapKeys from 'lodash.mapkeys';\n\n/**\n * Normalizes object schema by removing underscore prefixes and converting keys to camelCase\n * @param obj - The object to normalize\n * @returns The object with all nested keys normalized\n */\nexport function normalizeSchema<T = unknown>(obj: T): T {\n  if (Array.isArray(obj)) {\n    return obj.map(normalizeSchema) as T;\n  }\n\n  if (obj !== null && typeof obj === 'object') {\n    const converted = mapKeys(obj as Record<string, unknown>, (_, key) => {\n      // First remove underscore prefix if present\n      const keyWithoutUnderscore = key.startsWith('_') ? key.substring(1) : key;\n      // Then convert to camelCase\n      return camelCase(keyWithoutUnderscore);\n    });\n\n    return Object.fromEntries(\n      Object.entries(converted).map(([key, value]) => [\n        key,\n        normalizeSchema(value),\n      ]),\n    ) as T;\n  }\n\n  return obj;\n}\n","import { type SchemaFieldType, type FieldType } from '../types/form-fields';\n\nexport const FIELD_TYPE_MAP: Record<SchemaFieldType, FieldType> = {\n  // CONTACTS_FIELD_TYPES\n  CONTACTS_COMPANY: 'TEXT_INPUT',\n  CONTACTS_POSITION: 'TEXT_INPUT',\n  CONTACTS_TAX_ID: 'TEXT_INPUT',\n  CONTACTS_FIRST_NAME: 'TEXT_INPUT',\n  CONTACTS_LAST_NAME: 'TEXT_INPUT',\n  CONTACTS_EMAIL: 'TEXT_INPUT',\n  CONTACTS_BIRTHDATE: 'DATE_INPUT',\n  CONTACTS_PHONE: 'PHONE_INPUT',\n  CONTACTS_ADDRESS: 'TEXT_INPUT',\n  CONTACTS_SUBSCRIBE: 'CHECKBOX',\n\n  // QUIZ_FIELD_TYPES\n  PLATFORM_QUIZ_TEXT_INPUT: 'TEXT_INPUT',\n  PLATFORM_QUIZ_NUMBER_INPUT: 'NUMBER_INPUT',\n  PLATFORM_QUIZ_RADIO_GROUP: 'RADIO_GROUP',\n  PLATFORM_QUIZ_CHECKBOX_GROUP: 'CHECKBOX_GROUP',\n\n  // CHALLENGES_FIELD_TYPES\n  QUIZ_MULTI_CHOICE: 'CHECKBOX_GROUP',\n  QUIZ_SINGLE_CHOICE: 'RADIO_GROUP',\n  QUIZ_SHORT_TEXT: 'TEXT_INPUT',\n  QUIZ_LONG_TEXT: 'TEXT_AREA',\n  QUIZ_NUMBER: 'NUMBER_INPUT',\n  QUIZ_FILE_UPLOAD: 'FILE_UPLOAD',\n  QUIZ_IMAGE_CHOICE: 'IMAGE_CHOICE',\n\n  // DEXT_FIELD_TYPES\n  DEXT_TEXT_INPUT: 'TEXT_INPUT',\n  DEXT_TEXT_AREA: 'TEXT_AREA',\n  DEXT_DROPDOWN: 'DROPDOWN',\n  DEXT_URL_INPUT: 'TEXT_INPUT',\n  DEXT_RADIO_GROUP: 'RADIO_GROUP',\n  DEXT_NUMBER_INPUT: 'NUMBER_INPUT',\n  DEXT_CHECKBOX: 'CHECKBOX',\n  DEXT_CHECKBOX_GROUP: 'CHECKBOX_GROUP',\n  DEXT_EMAIL: 'TEXT_INPUT',\n  DEXT_PHONE: 'PHONE_INPUT',\n  DEXT_RATING_INPUT: 'RATING_INPUT',\n  DEXT_DATE_PICKER: 'DATE_PICKER',\n  DEXT_DATE_TIME_INPUT: 'DATE_TIME_INPUT',\n  DEXT_TAGS: 'TAGS',\n\n  // SCHEDULING_FIELD_TYPES\n  APPOINTMENT: 'APPOINTMENT',\n  SERVICES_DROPDOWN: 'DROPDOWN',\n\n  // ECOM_FIELD_TYPES\n  ECOM_ADDITIONAL_INFO: 'TEXT_AREA',\n  ECOM_ADDRESS: 'TEXT_INPUT',\n  ECOM_FULL_NAME: 'TEXT_INPUT',\n  ECOM_PHONE: 'PHONE_INPUT',\n  ECOM_COMPANY_NAME: 'TEXT_INPUT',\n  ECOM_EMAIL: 'TEXT_INPUT',\n  ECOM_SUBSCRIPTION: 'CHECKBOX',\n  ECOM_CONTACT_DETAILS: 'TEXT',\n  ECOM_SHIPPING_DETAILS: 'TEXT',\n\n  // BOOKINGS_FIELD_TYPES\n  BOOKINGS_FIRST_NAME: 'TEXT_INPUT',\n  BOOKINGS_LAST_NAME: 'TEXT_INPUT',\n  BOOKINGS_EMAIL: 'TEXT_INPUT',\n  BOOKINGS_PHONE: 'PHONE_INPUT',\n  BOOKINGS_ADDRESS: 'MULTILINE_ADDRESS',\n  BOOKINGS_HEADER: 'TEXT',\n  BOOKINGS_RICH_TEXT: 'TEXT',\n\n  // PAYMENTS_FIELD_TYPES\n  PRODUCT_LIST: 'PRODUCT_LIST',\n  DONATION: 'DONATION',\n  PAYMENT_INPUT: 'PAYMENT_INPUT',\n  FIXED_PAYMENT: 'FIXED_PAYMENT',\n\n  // EVENTS_FIELD_TYPES\n  EVENTS_RSVP: 'RADIO_GROUP',\n  EVENTS_REPEATER: 'TEXT',\n\n  // COMMON_FIELD_TYPES + READONLY\n  TEXT_INPUT: 'TEXT_INPUT',\n  NUMBER_INPUT: 'NUMBER_INPUT',\n  URL_INPUT: 'TEXT_INPUT',\n  TEXT_AREA: 'TEXT_AREA',\n  DATE_INPUT: 'DATE_INPUT',\n  DATE_TIME_INPUT: 'DATE_TIME_INPUT',\n  TIME_INPUT: 'TIME_INPUT',\n  RADIO_GROUP: 'RADIO_GROUP',\n  CHECKBOX_GROUP: 'CHECKBOX_GROUP',\n  FILE_UPLOAD: 'FILE_UPLOAD',\n  CHECKBOX: 'CHECKBOX',\n  DROPDOWN: 'DROPDOWN',\n  MULTILINE_ADDRESS: 'MULTILINE_ADDRESS',\n  MLA_COUNTRY: 'DROPDOWN',\n  MLA_CITY: 'TEXT_INPUT',\n  MLA_ADDRESS_LINE: 'TEXT_INPUT',\n  MLA_ADDRESS_LINE_2: 'TEXT_INPUT',\n  MLA_POSTAL_CODE: 'TEXT_INPUT',\n  MLA_SUBDIVISION: 'DROPDOWN',\n  MLA_STREET_NAME: 'TEXT_INPUT',\n  MLA_STREET_NUMBER: 'TEXT_INPUT',\n  MLA_APARTMENT: 'TEXT_INPUT',\n  FULL_NAME_FIRST_NAME: 'TEXT_INPUT',\n  FULL_NAME_LAST_NAME: 'TEXT_INPUT',\n  FULL_NAME: 'TEXT_INPUT',\n  VAT_ID: 'TEXT_INPUT',\n  SIGNATURE: 'SIGNATURE',\n  RATING_INPUT: 'RATING_INPUT',\n  TAGS: 'TAGS',\n  DATE_PICKER: 'DATE_PICKER',\n  HEADER: 'TEXT',\n  RICH_TEXT: 'TEXT',\n  SUBMIT_BUTTON: 'SUBMIT_BUTTON',\n  SERVICES_MULTI_CHOICE: 'CHECKBOX_GROUP',\n  IMAGE_CHOICE: 'IMAGE_CHOICE',\n\n  // fields that have not been implemented\n  NESTED_FORM: 'TEXT_INPUT',\n  PASSWORD: 'TEXT_INPUT',\n  BOOKINGS_LOGIN_BAR: 'LOGIN_BAR',\n  PHONE: 'PHONE_INPUT',\n};\n","import type React from 'react';\nimport {\n  type FieldType,\n  type SchemaFieldType,\n  type FieldMap,\n} from '../types/form-fields';\n\nexport const mapFieldTypes = (\n  fields: FieldMap,\n  typeMap: Record<SchemaFieldType, FieldType>,\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): Record<string, React.ComponentType<any>> => ({\n  ...fields,\n  ...Object.fromEntries(\n    Object.entries(typeMap)\n      .filter(([, targetType]) => fields[targetType])\n      .map(([newName, targetType]) => [newName, fields[targetType]]),\n  ),\n});\n","import React, { type ReactElement, useMemo, useState } from 'react';\nimport { useForm as useFormViewer } from '@wix/form-viewer';\nimport { type Layout, type InputElement } from '@wix/form-fields';\n\nimport { type UseFormProps, type UploadFile } from '../types/types';\nimport { normalizeSchema } from '../utils/normalize-schema';\nimport { FIELD_TYPE_MAP } from '../mappers/field-type-map';\nimport { mapFieldTypes } from '../utils/mappers';\n\ntype UseFormReturn = {\n  columnCount: number;\n  fieldElements: ReactElement[][];\n  fieldsLayout: Record<string, Layout>;\n} | null;\n\ntype Actions = { submitForm?: () => void; uploadFile?: UploadFile };\n\nexport const useForm = ({\n  form: unformattedForm,\n  values,\n  onChange,\n  errors,\n  onValidate,\n  submitForm,\n  uploadFile,\n  forwardedRef,\n  fieldMap: fields,\n  addressTemplates,\n}: UseFormProps): UseFormReturn => {\n  const form = normalizeSchema(unformattedForm);\n  const [stepId, setStepId] = useState<string>();\n\n  const actions: Actions = {\n    submitForm,\n    uploadFile,\n  };\n\n  const mappedFieldTypes = useMemo(\n    () => mapFieldTypes(fields, FIELD_TYPE_MAP),\n    [fields],\n  );\n\n  const { currentView, formFields } = useFormViewer({\n    form,\n    actions,\n    values,\n    stepId,\n    onStepIdChange: setStepId,\n    onChange,\n    forwardedRef,\n    errors,\n    onValidate,\n    fieldMap: mappedFieldTypes,\n    config: {\n      addressTemplates,\n    },\n  });\n\n  const fieldsLayout = currentView.fields.reduce<Record<string, Layout>>(\n    (acc, field) => {\n      acc[field.id] = field.layout;\n      return acc;\n    },\n    {},\n  );\n\n  const fieldElementsByRow = useMemo(() => {\n    const fieldsByRow = new Map<number, ReactElement[]>();\n\n    formFields.forEach(({ component }: InputElement, index: number) => {\n      const field = currentView.fields[index];\n      const row = field?.layout.row ?? 0;\n\n      if (!fieldsByRow.has(row)) {\n        fieldsByRow.set(row, []);\n      }\n\n      fieldsByRow\n        .get(row)!\n        .push(React.cloneElement(component, { key: field.id }));\n    });\n\n    return Array.from(fieldsByRow.entries())\n      .sort(([rowA], [rowB]) => rowA - rowB)\n      .map(([_, elements]) => elements);\n  }, [formFields, currentView.fields]);\n\n  return form\n    ? {\n        columnCount: currentView.grid.columns,\n        fieldElements: fieldElementsByRow,\n        fieldsLayout,\n      }\n    : null;\n};\n","import type { i18n as I18nType } from '@wix/fe-essentials/i18n';\nimport i18next from 'i18next';\nimport { initReactI18next } from 'react-i18next';\n\nconst SUPPORTED_LOCALES = [\n  'ar',\n  'bg',\n  'ca',\n  'cs',\n  'da',\n  'de',\n  'el',\n  'en',\n  'es',\n  'fi',\n  'fr',\n  'he',\n  'hi',\n  'hu',\n  'id',\n  'it',\n  'ja',\n  'ko',\n  'lt',\n  'ms',\n  'nl',\n  'no',\n  'pl',\n  'pt',\n  'ro',\n  'ru',\n  'sv',\n  'th',\n  'tl',\n  'tr',\n  'uk',\n  'vi',\n  'zh',\n];\n\nexport const FORM_VIEWER_NAMESPACE = 'form-viewer';\n\nasync function loadFieldViewerTranslations(locale: string) {\n  try {\n    const supportedLocale = SUPPORTED_LOCALES.includes(locale) ? locale : 'en';\n    const fieldMessages = await import(\n      `@wix/form-fields/dist/esm/assets/locale/viewer/messages_${supportedLocale}.json`\n    );\n    return fieldMessages.default;\n  } catch (error) {\n    console.warn(\n      `Failed to load translations for locale ${locale}, falling back to English`,\n      error,\n    );\n\n    try {\n      const fallbackMessages = await import(\n        `@wix/form-fields/dist/esm/assets/locale/viewer/messages_en.json`\n      );\n      return fallbackMessages.default;\n    } catch {\n      return {};\n    }\n  }\n}\n\nconst getLocaleDatasetTranslationsUrl = (locale = 'en') =>\n  `https://static.parastorage.com/services/locale-dataset-data/1.4213.0/translations/messages_${locale}.json`;\n\nexport const fetchLocaleDatasetTranslations = async (\n  locale: string,\n): Promise<Record<string, string>> => {\n  const url = getLocaleDatasetTranslationsUrl(locale);\n  const fallbackUrl = getLocaleDatasetTranslationsUrl();\n  const response = await fetch(url).catch(() => fetch(fallbackUrl));\n  return response?.json() ?? {};\n};\n\nexport async function createI18n(locale: string): Promise<I18nType> {\n  const i18nInstance = i18next.createInstance();\n\n  await i18nInstance.use(initReactI18next).init({\n    lng: locale,\n    fallbackLng: 'en',\n    interpolation: {\n      escapeValue: false,\n      prefix: '{',\n      suffix: '}',\n    },\n    keySeparator: false,\n    nsSeparator: ':',\n    defaultNS: 'translation',\n    ns: ['translation', FORM_VIEWER_NAMESPACE],\n    resources: {},\n  });\n\n  const [fieldTranslations, localeDataset] = await Promise.all([\n    loadFieldViewerTranslations(locale),\n    fetchLocaleDatasetTranslations(locale),\n  ]);\n\n  i18nInstance.addResources(locale, FORM_VIEWER_NAMESPACE, fieldTranslations);\n  i18nInstance.addResources(locale, FORM_VIEWER_NAMESPACE, localeDataset);\n\n  return i18nInstance as unknown as I18nType;\n}\n","import React, { useEffect, useState } from 'react';\nimport {\n  type AddressTemplate,\n  ExternalDataProvider,\n  FormStatusProvider,\n} from '@wix/form-fields';\nimport { FormViewerProvider } from '@wix/form-viewer';\nimport type { i18n as I18nType } from '@wix/fe-essentials/i18n';\n\nimport type { Currency } from '../types/types';\nimport { createI18n, FORM_VIEWER_NAMESPACE } from './create-i18n';\n\nexport interface FormProviderProps {\n  children: React.ReactNode;\n  currency: Currency;\n  locale: string;\n  regionalFormat?: string;\n  addressTemplates?: AddressTemplate[];\n}\n\nexport const FormProvider = ({\n  children,\n  currency,\n  locale,\n  addressTemplates,\n  regionalFormat = 'en',\n}: FormProviderProps) => {\n  const [i18nInstance, setI18nInstance] = useState<I18nType | null>(null);\n\n  useEffect(() => {\n    const initializeI18n = async () => {\n      try {\n        const newI18n = await createI18n(locale);\n        setI18nInstance(newI18n);\n      } catch (error) {\n        console.error('Failed to initialize i18n:', error);\n      }\n    };\n\n    initializeI18n();\n  }, [locale]);\n\n  if (!i18nInstance) {\n    return null;\n  }\n\n  return (\n    <FormViewerProvider\n      i18n={i18nInstance}\n      form={{}}\n      language={locale}\n      regionalFormat={regionalFormat}\n      currency={currency}\n      translationNamespace={FORM_VIEWER_NAMESPACE}\n      WixRicosViewer={() => null}\n      addressTemplates={addressTemplates}\n    >\n      <ExternalDataProvider externalData={{}}>\n        <FormStatusProvider>{children}</FormStatusProvider>\n      </ExternalDataProvider>\n    </FormViewerProvider>\n  );\n};\n","import {\n  Children,\n  cloneElement,\n  isValidElement,\n  type Attributes,\n  type ComponentProps,\n  type ElementType,\n  type ReactElement,\n  type ReactNode,\n} from 'react';\n\nexport function findChildOfType<T extends ElementType>(\n  children: ReactNode,\n  type: T,\n): ReactElement<ComponentProps<T>> | undefined {\n  return Children.toArray(children).find(\n    (child): child is ReactElement<ComponentProps<T>> =>\n      isValidElement(child) && child.type === type,\n  );\n}\n\nexport function applyInternalProps<InternalPropsType>(\n  element: ReactElement | undefined,\n  props: InternalPropsType & Attributes,\n): typeof element {\n  return element\n    ? cloneElement(\n        element as ReactElement<InternalPropsType>,\n        props as Partial<InternalPropsType>,\n      )\n    : element;\n}\n","import { type RichContent } from '@wix/ricos';\nimport React from 'react';\n\nimport { useConfig } from '../../contexts/config-context';\nimport { useFieldAttributes } from '../../contexts/field-attributes-context';\nimport { useFieldPropsV2 } from '../../contexts/field-props-context';\n\ntype DescriptionProps = {\n  className?: string;\n  children: (props: {\n    content: RichContent;\n    locale: string;\n  }) => React.ReactNode;\n};\n\nexport const Description = ({ className, children }: DescriptionProps) => {\n  const { description } = useFieldPropsV2();\n  const { descriptionId } = useFieldAttributes();\n  const { language } = useConfig();\n\n  if (!description) {\n    return null;\n  }\n\n  return (\n    <div className={className} id={descriptionId}>\n      {children({ content: description, locale: language })}\n    </div>\n  );\n};\n","import { ErrorSmall } from '@wix/wix-ui-icons-common/on-stage';\nimport React from 'react';\n\nimport { useFieldAttributes } from '../../contexts/field-attributes-context';\nimport { useFieldPropsV2 } from '../../contexts/field-props-context';\nimport { getErrorDataHook } from '../../services/field-attributes';\n\nexport type ErrorProps = {\n  className?: string;\n};\n\nexport const Error = ({ className }: ErrorProps) => {\n  const { target, hasError, errorMessage } = useFieldPropsV2();\n  const { errorId } = useFieldAttributes();\n\n  if (!hasError) {\n    return null;\n  }\n\n  return (\n    <div\n      id={errorId}\n      data-hook={getErrorDataHook(target)}\n      className={className}\n    >\n      <ErrorSmall aria-hidden />\n      {errorMessage ?? ''}\n    </div>\n  );\n};\n","import {\n  RequiredIndicatorPlacement as Placement,\n  RequiredIndicator,\n} from '@wix/ambassador-forms-v4-form/types';\nimport {\n  type Node,\n  Node_Type,\n  type RichContent,\n  type WixRicosTheme,\n} from '@wix/ricos';\nimport { type Value } from '@wix/ricos/dist/src/ricos-schema/legacy/wix/rich_content/v1/struct';\nimport cloneDeep from 'lodash/cloneDeep';\nimport React, { useMemo } from 'react';\n\nimport { useConfig } from '../../contexts/config-context';\nimport { useFieldPropsV2 } from '../../contexts/field-props-context';\nimport { useTranslation } from '../../contexts/translation-context';\nimport { type TFunction } from '../../contexts/translation-context';\nimport { type InputFieldProps } from '../../types/field-props';\nimport { type PossibleValues } from '../form/types';\nimport { htmlAttributesPlugin } from '../ricos-viewer/ricos-html-attributes-plugin';\n\ntype RichLabelChildrenProps = {\n  content: RichContent;\n  locale?: string;\n  htmlAttributesPlugin: any;\n};\n\ntype RichLabelProps = {\n  className?: string;\n  requiredClassName?: string;\n  theme?: WixRicosTheme;\n  children: (props: RichLabelChildrenProps) => React.ReactNode;\n};\n\nexport type RichLabelInternalProps = {\n  requiredIndicatorHidden?: boolean;\n};\n\nconst createIndicatorNode = (\n  requiredIndicatorType: RequiredIndicator,\n  t: TFunction,\n  className?: string,\n): Node => {\n  const indicator =\n    requiredIndicatorType === RequiredIndicator.TEXT\n      ? t('settings.required-indicator-text')\n      : '*';\n\n  const str = (v: string) => ({ stringValue: v } as Value);\n  const fields: Record<string, Value> = {\n    'aria-hidden': str('true'),\n  };\n\n  if (className) {\n    fields.className = str(className);\n  }\n\n  return {\n    type: Node_Type.EXTERNAL,\n    id: '',\n    nodes: [],\n    externalData: {\n      fields,\n    },\n    textData: {\n      text: indicator,\n      decorations: [],\n    },\n  };\n};\n\nconst injectRequiredIndicator = (\n  label: RichContent,\n  placement: Placement,\n  indicatorNode: Node,\n): RichContent => {\n  const result = cloneDeep(label);\n\n  switch (placement) {\n    case Placement.BEFORE_FIELD_TITLE:\n      const firstNode = result?.nodes.find(Boolean);\n      if (firstNode) {\n        firstNode.nodes ??= [];\n        firstNode.nodes.unshift(indicatorNode);\n      }\n      break;\n    case Placement.AFTER_FIELD_TITLE:\n      const lastNode = result?.nodes?.findLast(Boolean);\n      if (lastNode) {\n        lastNode.nodes ??= [];\n        lastNode.nodes.push(indicatorNode);\n      }\n      break;\n  }\n\n  return result;\n};\n\nexport const RichTextLabel = ({\n  className,\n  requiredClassName,\n  theme,\n  children,\n  ...internal\n}: RichLabelProps) => {\n  const { requiredIndicatorHidden = false } =\n    internal as RichLabelInternalProps;\n  const fieldProps = useFieldPropsV2();\n  const {\n    label,\n    required = false,\n    requiredIndicatorType = RequiredIndicator.ASTERISK,\n    requiredIndicatorPlacement = Placement.AFTER_FIELD_TITLE,\n  } = fieldProps as InputFieldProps<PossibleValues, RichContent>;\n\n  const { t } = useTranslation();\n  const { language } = useConfig();\n\n  const labelWithIndicator = useMemo(() => {\n    if (!required || requiredIndicatorHidden || !label) {\n      return label;\n    }\n\n    const indicatorNode = createIndicatorNode(\n      requiredIndicatorType,\n      t,\n      requiredClassName,\n    );\n    return injectRequiredIndicator(\n      label,\n      requiredIndicatorPlacement,\n      indicatorNode,\n    );\n  }, [\n    required,\n    requiredIndicatorHidden,\n    label,\n    requiredIndicatorType,\n    requiredIndicatorPlacement,\n    t,\n    requiredClassName,\n  ]);\n\n  return (\n    <div className={className}>\n      {children({\n        content: labelWithIndicator as RichContent,\n        locale: language,\n        htmlAttributesPlugin,\n      })}\n    </div>\n  );\n};\n","import React, { type ReactNode, useCallback, useRef } from 'react';\nimport { Checkbox as CheckboxRAC } from 'react-aria-components';\n\nimport { useFocusFieldEvent } from '../../contexts/events-context';\nimport { useFieldAttributes } from '../../contexts/field-attributes-context';\nimport { useFieldPropsV2 } from '../../contexts/field-props-context';\nimport { findChildOfType } from '../../services/find-child';\nimport { Description } from '../field-description/field-description-headless';\nimport { Error } from '../field-error/field-error-headless';\nimport { RichTextLabel } from '../field-rich-label/field-rich-label-headless';\n\nexport type CheckboxProps = {\n  children: ReactNode;\n};\n\nexport const Checkbox = ({ children }: CheckboxProps) => {\n  const { id, FieldLayout } = useFieldPropsV2();\n\n  const checkboxElement = findChildOfType(children, Checkbox.Checkbox);\n  const descriptionElement = findChildOfType(children, Checkbox.Description);\n  const errorElement = findChildOfType(children, Checkbox.Error);\n\n  return (\n    <FieldLayout\n      fieldId={id}\n      renderLabel={() => null}\n      renderInput={() => checkboxElement}\n      renderDescription={() => (\n        <>\n          {descriptionElement}\n          {errorElement}\n        </>\n      )}\n    />\n  );\n};\n\ntype CheckboxContainerProps = {\n  children: ReactNode;\n  className?: string;\n};\n\nconst CheckboxContainer = ({ children, className }: CheckboxContainerProps) => {\n  const { id, value, onChange, disabled, required, onBlur, onFocus, hasError } =\n    useFieldPropsV2();\n  const { inputId, ariaDescribedBy } = useFieldAttributes();\n\n  const ref = useRef<HTMLLabelElement>(null);\n  useFocusFieldEvent(() => {\n    ref.current?.focus();\n  }, id);\n\n  const labelElement = findChildOfType(\n    children,\n    CheckboxContainer.RichTextLabel,\n  );\n  const inputElement = findChildOfType(children, CheckboxContainer.Input);\n\n  const handleChange = useCallback(\n    (isSelected: boolean) => {\n      onChange(isSelected);\n    },\n    [onChange],\n  );\n\n  return (\n    <CheckboxRAC\n      ref={ref}\n      id={inputId}\n      aria-describedby={ariaDescribedBy}\n      isSelected={Boolean(value)}\n      onChange={handleChange}\n      isDisabled={disabled}\n      isRequired={required}\n      isInvalid={hasError}\n      onBlur={onBlur}\n      onFocus={onFocus}\n      className={className}\n    >\n      {() => (\n        <>\n          {inputElement}\n          {labelElement}\n        </>\n      )}\n    </CheckboxRAC>\n  );\n};\n\ntype InputProps = {\n  className?: string;\n};\n\nconst Input = ({ className }: InputProps) => {\n  return <div aria-hidden=\"true\" className={className} />;\n};\n\nCheckboxContainer.RichTextLabel = RichTextLabel;\nCheckboxContainer.Input = Input;\n\nCheckbox.Checkbox = CheckboxContainer;\nCheckbox.Description = Description;\nCheckbox.Error = Error;\n","export type Options<Result> = {\n  isImmediate?: boolean;\n  maxWait?: number;\n  callback?: (data: Result) => void;\n};\n\nexport interface DebouncedFunction<\n  Args extends any[],\n  F extends (...args: Args) => any\n> {\n  (this: ThisParameterType<F>, ...args: Args): Promise<ReturnType<F>>;\n  cancel: (reason?: any) => void;\n}\n\ninterface DebouncedPromise<FunctionReturn> {\n  resolve: (result: FunctionReturn) => void;\n  reject: (reason?: any) => void;\n}\n\nexport function debounce<Args extends any[], F extends (...args: Args) => any>(\n  func: F,\n  waitMilliseconds = 50,\n  options: Options<ReturnType<F>> = {}\n): {\n  (this: ThisParameterType<F>, ...args: Parameters<F> & Args): Promise<\n    ReturnType<F>\n  >;\n  cancel: (reason?: any) => void;\n} {\n  let timeoutId: ReturnType<typeof setTimeout> | undefined;\n  const isImmediate = options.isImmediate ?? false;\n  const callback = options.callback ?? false;\n  const maxWait = options.maxWait;\n  let lastInvokeTime = Date.now();\n\n  let promises: DebouncedPromise<ReturnType<F>>[] = [];\n\n  function nextInvokeTimeout() {\n    if (maxWait !== undefined) {\n      const timeSinceLastInvocation = Date.now() - lastInvokeTime;\n\n      if (timeSinceLastInvocation + waitMilliseconds >= maxWait) {\n        return maxWait - timeSinceLastInvocation;\n      }\n    }\n\n    return waitMilliseconds;\n  }\n\n  const debouncedFunction = function (\n    this: ThisParameterType<F>,\n    ...args: Parameters<F>\n  ) {\n    const context = this;\n    return new Promise<ReturnType<F>>((resolve, reject) => {\n      const invokeFunction = function () {\n        timeoutId = undefined;\n        lastInvokeTime = Date.now();\n        if (!isImmediate) {\n          const result = func.apply(context, args);\n          callback && callback(result);\n          promises.forEach(({ resolve }) => resolve(result));\n          promises = [];\n        }\n      };\n\n      const shouldCallNow = isImmediate && timeoutId === undefined;\n\n      if (timeoutId !== undefined) {\n        clearTimeout(timeoutId);\n      }\n\n      timeoutId = setTimeout(invokeFunction, nextInvokeTimeout());\n\n      if (shouldCallNow) {\n        const result = func.apply(context, args);\n        callback && callback(result);\n        return resolve(result);\n      }\n      promises.push({ resolve, reject });\n    });\n  };\n\n  debouncedFunction.cancel = function (reason?: any) {\n    if (timeoutId !== undefined) {\n      clearTimeout(timeoutId);\n    }\n    promises.forEach(({ reject }) => reject(reason));\n    promises = [];\n  };\n\n  return debouncedFunction;\n}\n","import {\n  RequiredIndicatorPlacement as Placement,\n  RequiredIndicator,\n} from '@wix/ambassador-forms-v4-form/types';\nimport React, { type ReactNode } from 'react';\n\nimport { useFieldAttributes } from '../../contexts/field-attributes-context';\nimport { useFieldPropsV2 } from '../../contexts/field-props-context';\nimport { useTranslation } from '../../contexts/translation-context';\nimport { findChildOfType } from '../../services/find-child';\n\nconst HIDDEN_LABEL_STYLE = {\n  visibility: 'hidden' as const,\n  display: 'block',\n  height: 0,\n  margin: 0,\n  padding: 0,\n};\n\nconst ZERO_WIDTH_SPACE = '\\u200b';\n\nexport type LabelProps = {\n  children: ReactNode;\n  className?: string;\n};\n\nexport type LabelInternalProps = {\n  as?: 'label' | 'div';\n  requiredIndicatorHidden?: boolean;\n  label?: string;\n};\n\nexport const Label = ({ children, className, ...internal }: LabelProps) => {\n  const {\n    as = 'label',\n    requiredIndicatorHidden = false,\n    label: internalLabel,\n  } = internal as LabelInternalProps;\n  const {\n    label: propsLabel,\n    required = false,\n    hideLabel = false,\n    requiredIndicatorType = RequiredIndicator.ASTERISK,\n    requiredIndicatorPlacement = Placement.AFTER_FIELD_TITLE,\n  } = useFieldPropsV2();\n\n  const { labelId, inputId } = useFieldAttributes();\n\n  const Tag = as;\n\n  const requiredElement =\n    required && !requiredIndicatorHidden\n      ? findChildOfType(children, Label.Required)\n      : null;\n\n  const labelAfterRequiredIndicator =\n    requiredIndicatorType === RequiredIndicator.ASTERISK &&\n    requiredIndicatorPlacement === Placement.BEFORE_FIELD_TITLE;\n\n  const label = internalLabel ?? propsLabel;\n  const labelContent = label || ZERO_WIDTH_SPACE;\n\n  return (\n    <Tag\n      id={labelId}\n      htmlFor={as === 'label' ? inputId : undefined}\n      className={className}\n      style={hideLabel ? HIDDEN_LABEL_STYLE : undefined}\n    >\n      {labelAfterRequiredIndicator ? (\n        <>\n          {requiredElement}\n          {labelContent}\n        </>\n      ) : (\n        <>\n          {labelContent}\n          {requiredElement}\n        </>\n      )}\n    </Tag>\n  );\n};\n\ntype RequiredProps = {\n  className?: string;\n};\n\nconst Required = ({ className }: RequiredProps) => {\n  const { t } = useTranslation();\n  const { requiredIndicatorType } = useFieldPropsV2();\n\n  if (requiredIndicatorType === RequiredIndicator.TEXT) {\n    return (\n      <span className={className} aria-hidden=\"true\">\n        {t('settings.required-indicator-text')}\n      </span>\n    );\n  }\n\n  return (\n    <span className={className} aria-hidden=\"true\">\n      *\n    </span>\n  );\n};\n\nLabel.Required = Required;\n","import { type FocusEventHandler, useCallback, useRef } from 'react';\n\ntype UseFocusProps<T> = {\n  onFocus?: FocusEventHandler<T>;\n  onBlur?: FocusEventHandler<T>;\n};\n\nexport function useFocus<T extends HTMLElement>({\n  onBlur,\n  onFocus,\n}: UseFocusProps<T>) {\n  const containerRef = useRef<T>(null);\n  const isFocused = useRef(false);\n\n  const handleBlur: FocusEventHandler<T> = useCallback(\n    (event) => {\n      const clickedOnNonFocusableElement = !event.relatedTarget;\n      if (clickedOnNonFocusableElement) {\n        isFocused.current = false;\n        onBlur?.(event);\n        return;\n      }\n\n      const element = containerRef.current;\n      if (!element) {\n        isFocused.current = false;\n        onBlur?.(event);\n        return;\n      }\n\n      const clickedOutside = !element.contains(event.relatedTarget);\n      if (clickedOutside) {\n        isFocused.current = false;\n        onBlur?.(event);\n        return;\n      }\n    },\n    [onBlur],\n  );\n\n  const handleFocus: FocusEventHandler<T> = useCallback(\n    (event) => {\n      if (isFocused.current) {\n        return;\n      }\n\n      isFocused.current = true;\n      onFocus?.(event);\n    },\n    [onFocus],\n  );\n\n  return { handleFocus, handleBlur, containerRef };\n}\n","import React, { type ReactNode } from 'react';\n\nimport { useFocus } from '../../hooks/use-focus';\n\nexport type FieldsetHeadlessProps = {\n  id: string;\n  ariaLabelledBy: string;\n  ariaDescribedBy?: string;\n  required?: boolean;\n  className?: string;\n  children: ReactNode;\n  onBlur?: React.FocusEventHandler<HTMLFieldSetElement>;\n  onFocus?: React.FocusEventHandler<HTMLFieldSetElement>;\n};\n\nexport const FieldsetHeadless = ({\n  id,\n  ariaLabelledBy,\n  ariaDescribedBy,\n  required,\n  className,\n  onBlur,\n  onFocus,\n  children,\n}: FieldsetHeadlessProps) => {\n  const { handleFocus, handleBlur, containerRef } =\n    useFocus<HTMLFieldSetElement>({\n      onBlur,\n      onFocus,\n    });\n\n  return (\n    <fieldset\n      ref={containerRef}\n      id={id}\n      aria-labelledby={ariaLabelledBy}\n      aria-describedby={ariaDescribedBy}\n      aria-required={required}\n      className={className}\n      onBlur={handleBlur}\n      onFocus={handleFocus}\n    >\n      {children}\n    </fieldset>\n  );\n};\n","import { type TFunction } from '../../contexts/translation-context';\nimport { type CheckboxGroupFieldOptions } from '../../inputs/checkbox-group-input/checkbox-group-input-props';\n\nexport const OTHER_ID = 'Other';\n\nconst getValueIncludesOther = (value: string[], optionsNames: string[]) =>\n  value.some((_value) => !optionsNames.includes(_value));\n\nexport const getIsOtherOptionSelected = (\n  value: string[],\n  optionsNames: string[],\n) => value.length > 0 && getValueIncludesOther(value, optionsNames);\n\nexport const getOtherLabel = (addOtherLabel?: string, t?: TFunction) => {\n  const otherLabelDefault = t?.('add-other.default-other-option-label');\n  return addOtherLabel || otherLabelDefault || OTHER_ID;\n};\n\nexport const getOtherValue = (value: string[], addOtherLabel?: string) => {\n  const addedSymbolsLength = 2; // we add ': ' to other value\n  const otherLabelLength = addOtherLabel\n    ? addOtherLabel.length + addedSymbolsLength\n    : 0;\n\n  const otherItem =\n    value.find((item) => item.startsWith(`${addOtherLabel}: `)) || '';\n  return otherItem.slice(otherLabelLength);\n};\n\nexport const getOptionsNames = (options: CheckboxGroupFieldOptions[]) =>\n  options.map((option) => option.label);\n\nexport const getOptionsValues = (options: CheckboxGroupFieldOptions[]) =>\n  options.map((option) => option.value ?? option.label);\n","import React, {\n  type ReactNode,\n  useCallback,\n  useMemo,\n  useRef,\n  useState,\n  useEffect,\n} from 'react';\nimport {\n  CheckboxGroup as CheckboxGroupRAC,\n  Checkbox as CheckboxRAC,\n  TextField as TextFieldRAC,\n  Input as InputRAC,\n} from 'react-aria-components';\nimport { debounce } from 'ts-debounce';\n\nimport { useFocusFieldEvent } from '../../contexts/events-context';\nimport { useFieldAttributes } from '../../contexts/field-attributes-context';\nimport { useFieldPropsV2 } from '../../contexts/field-props-context';\nimport { useTranslation } from '../../contexts/translation-context';\nimport { applyInternalProps, findChildOfType } from '../../services/find-child';\nimport { Description } from '../field-description/field-description-headless';\nimport { Error } from '../field-error/field-error-headless';\nimport { Label } from '../field-label/field-label-headless';\nimport { FieldsetHeadless } from '../fieldset/fieldset-headless';\n\nimport { type CheckboxGroupFieldProps } from './checkbox-group-field-props';\nimport {\n  getIsOtherOptionSelected,\n  getOptionsValues,\n  getOtherLabel,\n  getOtherValue,\n  OTHER_ID,\n} from './checkbox-group-field-utils';\n\nexport type CheckboxGroupProps = {\n  children: ReactNode;\n};\n\nexport const CheckboxGroup = ({ children }: CheckboxGroupProps) => {\n  const props = useFieldPropsV2();\n  const {\n    id,\n    value,\n    onChange,\n    disabled,\n    required,\n    onBlur,\n    onFocus,\n    hasError,\n    FieldLayout,\n  } = props as CheckboxGroupFieldProps;\n\n  const { inputId, labelId, ariaDescribedBy } = useFieldAttributes();\n\n  const labelElement = findChildOfType(children, CheckboxGroup.Label);\n  const optionsElement = findChildOfType(children, CheckboxGroup.Options);\n  const descriptionElement = findChildOfType(\n    children,\n    CheckboxGroup.Description,\n  );\n  const errorElement = findChildOfType(children, CheckboxGroup.Error);\n\n  const _value = useMemo(() => value || [], [value]);\n\n  const handleChange = useCallback(\n    (newValue: string[]) => {\n      onChange?.(newValue);\n    },\n    [onChange],\n  );\n\n  return (\n    <FieldLayout\n      fieldId={id}\n      renderLabel={() => labelElement}\n      renderInput={() => (\n        <FieldsetHeadless\n          id={inputId}\n          ariaLabelledBy={labelId}\n          ariaDescribedBy={ariaDescribedBy}\n          required={required}\n          onBlur={onBlur}\n          onFocus={onFocus}\n        >\n          <CheckboxGroupRAC\n            value={_value}\n            onChange={handleChange}\n            isDisabled={disabled}\n            isRequired={required}\n            isInvalid={hasError}\n          >\n            {optionsElement}\n          </CheckboxGroupRAC>\n        </FieldsetHeadless>\n      )}\n      renderDescription={() => (\n        <>\n          {descriptionElement}\n          {errorElement}\n        </>\n      )}\n    />\n  );\n};\n\ntype OptionsProps = {\n  children: ReactNode;\n  className?: string;\n};\n\nconst Options = ({ children, className }: OptionsProps) => {\n  const props = useFieldPropsV2();\n  const { id, options, addOther, addOtherLabel, numberOfColumns } =\n    props as CheckboxGroupFieldProps;\n  const { t } = useTranslation();\n\n  const optionElement = findChildOfType(children, Options.Option);\n\n  const otherLabel = getOtherLabel(addOtherLabel, t);\n\n  return (\n    <div className={className} data-columns={numberOfColumns}>\n      {options?.map((option, index) => {\n        const checkboxValue = option.value ?? option.label;\n        return applyInternalProps<OptionInternalProps>(optionElement, {\n          key: option.id || option.label,\n          value: checkboxValue,\n          label: option.label,\n          isFirst: index === 0,\n          fieldId: id,\n        });\n      })}\n      {addOther &&\n        applyInternalProps<OptionInternalProps>(optionElement, {\n          key: OTHER_ID,\n          value: OTHER_ID,\n          label: otherLabel,\n          isOther: true,\n        })}\n    </div>\n  );\n};\n\nconst OptionInput = ({ className }: { className?: string }) => {\n  return <div aria-hidden=\"true\" className={className} />;\n};\n\ntype OptionLabelInternalProps = {\n  label: string;\n};\n\ntype OptionLabelProps = {\n  className?: string;\n};\n\nconst OptionLabel = ({ className, ...internal }: OptionLabelProps) => {\n  const { label } = internal as OptionLabelInternalProps;\n  return <span className={className}>{label}</span>;\n};\n\ntype CheckboxProps = {\n  children: ReactNode;\n  className?: string;\n};\n\ntype CheckboxInternalProps = {\n  value: string;\n  label: string;\n  isFirst?: boolean;\n  isOther?: boolean;\n  fieldId?: string;\n};\n\nconst Checkbox = ({ children, className, ...internal }: CheckboxProps) => {\n  const {\n    value,\n    label,\n    isFirst = false,\n    isOther = false,\n    fieldId,\n  } = internal as CheckboxInternalProps;\n  const props = useFieldPropsV2();\n  const {\n    value: fieldValue,\n    onChange,\n    disabled,\n    hasError,\n    options,\n    addOtherLabel,\n  } = props as CheckboxGroupFieldProps;\n\n  const checkboxRef = useRef<HTMLLabelElement>(null);\n\n  useFocusFieldEvent(() => {\n    if (isFirst) {\n      checkboxRef.current?.focus({ preventScroll: true });\n    }\n  }, fieldId);\n\n  const labelElement = findChildOfType(children, Checkbox.Label);\n  const inputElement = findChildOfType(children, Checkbox.Input);\n\n  const _value = useMemo(() => fieldValue || [], [fieldValue]);\n\n  const actualValue = useMemo(() => {\n    if (isOther) {\n      return (\n        _value.find(\n          (val) => val === label || val.startsWith(`${addOtherLabel}: `),\n        ) || label\n      );\n    }\n    return value;\n  }, [isOther, _value, label, addOtherLabel, value]);\n\n  const handleOtherCheckboxChange = useCallback(\n    (isSelected: boolean) => {\n      if (!isOther) {\n        return;\n      }\n\n      const optionsValues = getOptionsValues(options || []);\n      const removedOther = _value.filter((val: any) =>\n        optionsValues.includes(val),\n      );\n      const newValue = isSelected ? [...removedOther, label] : removedOther;\n      onChange?.(newValue);\n    },\n    [isOther, label, onChange, options, _value],\n  );\n\n  return (\n    <CheckboxRAC\n      ref={checkboxRef}\n      value={actualValue}\n      onChange={isOther ? handleOtherCheckboxChange : undefined}\n      isDisabled={disabled}\n      isInvalid={hasError}\n      className={className}\n      data-hook={`checkbox-${label}`}\n    >\n      {inputElement}\n      {applyInternalProps<OptionLabelInternalProps>(labelElement, {\n        label,\n      })}\n    </CheckboxRAC>\n  );\n};\n\nCheckbox.Label = OptionLabel;\nCheckbox.Input = OptionInput;\n\ntype OptionProps = {\n  children: ReactNode;\n};\n\ntype OptionInternalProps = {\n  value: string;\n  label: string;\n  isFirst?: boolean;\n  isOther?: boolean;\n  fieldId?: string;\n};\n\nconst Option = ({ children, ...internal }: OptionProps) => {\n  const {\n    value,\n    label,\n    isFirst = false,\n    isOther = false,\n    fieldId,\n  } = internal as OptionInternalProps;\n  const props = useFieldPropsV2();\n  const {\n    value: fieldValue,\n    onChange,\n    options,\n    addOtherLabel,\n    addOtherPlaceholder,\n    otherInputCharacterLimit,\n    disabled,\n    hasError,\n  } = props as CheckboxGroupFieldProps;\n\n  const checkboxElement = findChildOfType(children, Checkbox);\n  const otherInputElement = findChildOfType(children, OtherInput);\n\n  const _value = useMemo(() => fieldValue || [], [fieldValue]);\n\n  const isOtherSelected = useMemo(() => {\n    if (!isOther) {\n      return false;\n    }\n    const optionsValues = getOptionsValues(options || []);\n    return getIsOtherOptionSelected(_value, optionsValues);\n  }, [isOther, _value, options]);\n\n  return (\n    <>\n      {applyInternalProps<CheckboxInternalProps>(checkboxElement, {\n        value,\n        label,\n        isFirst,\n        isOther,\n        fieldId,\n      })}\n      {isOther &&\n        isOtherSelected &&\n        applyInternalProps<OtherInputInternalProps>(otherInputElement, {\n          fieldValue: _value,\n          onChange,\n          label,\n          placeholder: addOtherPlaceholder,\n          maxLength: otherInputCharacterLimit,\n          disabled,\n          hasError,\n          ariaLabel: label,\n          addOtherLabel,\n          options,\n        })}\n    </>\n  );\n};\n\ntype OtherInputProps = {\n  className?: string;\n};\n\ntype OtherInputInternalProps = {\n  fieldValue: string[];\n  onChange: (value: string[]) => void;\n  label: string;\n  placeholder?: string;\n  maxLength?: number;\n  disabled?: boolean;\n  hasError?: boolean;\n  ariaLabel?: string;\n  addOtherLabel?: string;\n  options: CheckboxGroupFieldProps['options'];\n};\n\nconst OtherInput = ({ className, ...internal }: OtherInputProps) => {\n  const {\n    fieldValue,\n    onChange,\n    label,\n    placeholder,\n    maxLength,\n    disabled,\n    hasError,\n    ariaLabel,\n    addOtherLabel,\n    options,\n  } = internal as OtherInputInternalProps;\n\n  const [otherValue, setOtherValue] = useState(() => {\n    const optionsValues = getOptionsValues(options || []);\n    const isSelected = getIsOtherOptionSelected(fieldValue, optionsValues);\n    return isSelected ? getOtherValue(fieldValue, addOtherLabel) : '';\n  });\n\n  useEffect(() => {\n    const optionsValues = getOptionsValues(options || []);\n    const isSelected = getIsOtherOptionSelected(fieldValue, optionsValues);\n    setOtherValue(isSelected ? getOtherValue(fieldValue, addOtherLabel) : '');\n  }, [fieldValue, options, addOtherLabel]);\n\n  const debouncedHandleChange = useMemo(() => {\n    return debounce((input: string) => {\n      const optionsValues = getOptionsValues(options || []);\n      const removedOther = fieldValue.filter((val: any) =>\n        optionsValues.includes(val),\n      );\n      const _otherValue = input ? `${addOtherLabel}: ${input}` : label;\n      const newValue = [...removedOther, _otherValue];\n      onChange(newValue);\n    }, 500);\n  }, [onChange, options, fieldValue, addOtherLabel, label]);\n\n  const handleInputChange = useCallback(\n    (input: string) => {\n      setOtherValue(input);\n      debouncedHandleChange(input);\n    },\n    [debouncedHandleChange],\n  );\n\n  return (\n    <TextFieldRAC\n      value={otherValue}\n      onChange={handleInputChange}\n      isDisabled={disabled}\n      isInvalid={hasError}\n      className={className}\n    >\n      <InputRAC\n        placeholder={placeholder}\n        maxLength={maxLength}\n        aria-label={ariaLabel}\n      />\n    </TextFieldRAC>\n  );\n};\n\nCheckboxGroup.Label = Label;\nCheckboxGroup.Options = Options;\nOptions.Option = Option;\nOption.Checkbox = Checkbox;\nOption.OtherInput = OtherInput;\nCheckboxGroup.Description = Description;\nCheckboxGroup.Error = Error;\n","export function getMonthList(locales?: string | string[]): string[] {\n  const formatter = new Intl.DateTimeFormat(locales, {\n    month: 'long',\n  });\n\n  return Array.from(Array(12).keys()).map(getMonthName);\n\n  function getMonthName(index: number) {\n    return formatter.format(new Date(2023, index));\n  }\n}\n","import React, { type ReactNode, useCallback, useMemo, useRef } from 'react';\nimport {\n  Select as SelectRAC,\n  Button as ButtonRAC,\n  SelectValue as SelectValueRAC,\n  Popover as PopoverRAC,\n  ListBox as ListBoxRAC,\n  ListBoxItem as ListBoxItemRAC,\n  TextField as TextFieldRAC,\n  Input as InputRAC,\n} from 'react-aria-components';\n\nimport { useConfig } from '../../contexts/config-context';\nimport { useFocusFieldEvent } from '../../contexts/events-context';\nimport { useFieldAttributes } from '../../contexts/field-attributes-context';\nimport { useFieldPropsV2 } from '../../contexts/field-props-context';\nimport { useTranslation } from '../../contexts/translation-context';\nimport { type DateInputProps } from '../../fields/date-input/date-input/date-input-props';\nimport { findChildOfType, applyInternalProps } from '../../services/find-child';\nimport {\n  getDateFormatParts,\n  isSupportedDatePart,\n  SupportedDateParts,\n} from '../../utils/date-format-parts';\nimport { getDatePartsErrors } from '../date-field/date-field-utils';\nimport { deserializeDate, serializeDate } from '../date-picker/helpers';\nimport { getMonthList } from '../date-picker/month-select/helpers';\nimport { Description } from '../field-description/field-description-headless';\nimport { Error } from '../field-error/field-error-headless';\nimport {\n  Label,\n  type LabelInternalProps,\n} from '../field-label/field-label-headless';\nimport { FieldsetHeadless } from '../fieldset/fieldset-headless';\n\nexport type DateInputComponentProps = {\n  children: ReactNode;\n};\n\nexport const DateInput = ({ children }: DateInputComponentProps) => {\n  const { id, required, onBlur, onFocus, FieldLayout } =\n    useFieldPropsV2<DateInputProps>();\n\n  const { inputId, labelId, ariaDescribedBy } = useFieldAttributes();\n  const { regionalFormat } = useConfig();\n\n  const dateFormat = useMemo(\n    () =>\n      getDateFormatParts(regionalFormat)\n        .filter(isSupportedDatePart)\n        .map((part) => part.toUpperCase() as SupportedDateParts),\n    [regionalFormat],\n  );\n\n  const labelElement = findChildOfType(children, DateInput.Label);\n  const descriptionElement = findChildOfType(children, DateInput.Description);\n  const errorElement = findChildOfType(children, DateInput.Error);\n\n  const dateElementsByPart = {\n    [SupportedDateParts.MONTH]: findChildOfType(children, DateInput.Month),\n    [SupportedDateParts.DAY]: findChildOfType(children, DateInput.Day),\n    [SupportedDateParts.YEAR]: findChildOfType(children, DateInput.Year),\n  };\n\n  return (\n    <FieldLayout\n      fieldId={id}\n      renderLabel={() =>\n        applyInternalProps<LabelInternalProps>(labelElement, { as: 'div' })\n      }\n      renderInput={() => (\n        <FieldsetHeadless\n          id={inputId}\n          ariaLabelledBy={labelId}\n          ariaDescribedBy={ariaDescribedBy}\n          required={required}\n          onBlur={onBlur}\n          onFocus={onFocus}\n        >\n          {dateElementsByPart[dateFormat[0]]}\n          {dateElementsByPart[dateFormat[1]]}\n          {dateElementsByPart[dateFormat[2]]}\n        </FieldsetHeadless>\n      )}\n      renderDescription={() => (\n        <>\n          {descriptionElement}\n          {errorElement}\n        </>\n      )}\n    />\n  );\n};\n\ntype MonthProps = {\n  children: ReactNode;\n  className?: string;\n};\n\nconst Month = ({ children, className }: MonthProps) => {\n  const { id, disabled, showDateLabels } = useFieldPropsV2<DateInputProps>();\n  const { inputId } = useDateFieldAttributes(SupportedDateParts.MONTH);\n  const { partValue, partError, onPartChange, isFirstPart } = useDatePart(\n    SupportedDateParts.MONTH,\n  );\n  const buttonRef = useRef<HTMLButtonElement>(null);\n\n  const handleMonthChange = useCallback(\n    (selectedValue: React.Key | null) => {\n      onPartChange(typeof selectedValue === 'string' ? selectedValue : '');\n    },\n    [onPartChange],\n  );\n\n  useFocusFieldEvent(() => {\n    if (isFirstPart) {\n      buttonRef.current?.focus();\n    }\n  }, id);\n\n  const labelElement = findChildOfType(children, Month.Label);\n  const optionsElement = findChildOfType(children, Month.Options);\n\n  return (\n    <div className={className} data-date-field={true}>\n      {showDateLabels ? labelElement : null}\n      <SelectRAC\n        value={partValue || null}\n        onChange={handleMonthChange}\n        isDisabled={disabled}\n        isInvalid={partError}\n      >\n        <ButtonRAC\n          ref={buttonRef}\n          id={inputId}\n          data-hook={SupportedDateParts.MONTH}\n          data-invalid={partError}\n        >\n          <SelectValueRAC />\n        </ButtonRAC>\n        {optionsElement}\n      </SelectRAC>\n    </div>\n  );\n};\n\ntype MonthLabelProps = {\n  className?: string;\n};\n\nconst MonthLabel = ({ className }: MonthLabelProps) => {\n  return (\n    <DateLabel datePart={SupportedDateParts.MONTH} className={className} />\n  );\n};\n\ntype MonthOptionsProps = {\n  children: ReactNode;\n  className?: string;\n};\n\nconst MonthOptions = ({ children, className }: MonthOptionsProps) => {\n  const { language } = useConfig();\n\n  const months = useMemo(() => getMonthList(language), [language]);\n\n  const optionElement = findChildOfType(children, MonthOptions.Option) ?? (\n    <MonthOptions.Option />\n  );\n\n  return (\n    <PopoverRAC className={className}>\n      <ListBoxRAC>\n        {months.map((month, index) =>\n          applyInternalProps<MonthOptionInternalProps>(optionElement, {\n            key: String(index + 1),\n            value: String(index + 1),\n            label: month,\n          }),\n        )}\n      </ListBoxRAC>\n    </PopoverRAC>\n  );\n};\n\ntype MonthOptionProps = {\n  className?: string;\n};\n\ntype MonthOptionInternalProps = {\n  value: string;\n  label: string;\n};\n\nconst MonthOption = ({ className, ...internal }: MonthOptionProps) => {\n  const { value, label } = internal as MonthOptionInternalProps;\n  return (\n    <ListBoxItemRAC className={className} id={value} textValue={label}>\n      {label}\n    </ListBoxItemRAC>\n  );\n};\n\nMonth.Label = MonthLabel;\nMonth.Options = MonthOptions;\nMonthOptions.Option = MonthOption;\n\ntype DayProps = {\n  children: ReactNode;\n  className?: string;\n};\n\nconst Day = ({ children, className }: DayProps) => {\n  const { disabled, showDateLabels } = useFieldPropsV2<DateInputProps>();\n  const { partValue, partError, onPartChange } = useDatePart(\n    SupportedDateParts.DAY,\n  );\n\n  const labelElement = findChildOfType(children, Day.Label);\n  const inputElement = findChildOfType(children, Day.Input);\n\n  return (\n    <div className={className} data-date-field={true}>\n      {showDateLabels && labelElement}\n      <TextFieldRAC\n        value={partValue}\n        onChange={onPartChange}\n        isDisabled={disabled}\n        isInvalid={partError}\n      >\n        {inputElement}\n      </TextFieldRAC>\n    </div>\n  );\n};\n\ntype DayLabelProps = {\n  className?: string;\n};\n\nconst DayLabel = ({ className }: DayLabelProps) => {\n  return <DateLabel datePart={SupportedDateParts.DAY} className={className} />;\n};\n\ntype DayInputProps = {\n  className?: string;\n};\n\nconst DayInput = ({ className }: DayInputProps) => {\n  const { id, hidePlaceholder } = useFieldPropsV2<DateInputProps>();\n  const { inputId } = useDateFieldAttributes(SupportedDateParts.DAY);\n  const { isFirstPart } = useDatePart(SupportedDateParts.DAY);\n  const { t } = useTranslation();\n  const inputRef = useRef<HTMLInputElement>(null);\n\n  const placeholder = hidePlaceholder\n    ? undefined\n    : t('field.date.placeholder.day');\n\n  useFocusFieldEvent(() => {\n    if (isFirstPart) {\n      inputRef.current?.focus();\n    }\n  }, id);\n\n  return (\n    <InputRAC\n      ref={inputRef}\n      id={inputId}\n      className={className}\n      placeholder={placeholder}\n      maxLength={2}\n      inputMode=\"numeric\"\n      data-hook={SupportedDateParts.DAY}\n    />\n  );\n};\n\nDay.Label = DayLabel;\nDay.Input = DayInput;\n\ntype YearProps = {\n  children: ReactNode;\n  className?: string;\n};\n\nconst Year = ({ children, className }: YearProps) => {\n  const { disabled, showDateLabels } = useFieldPropsV2<DateInputProps>();\n  const { partValue, partError, onPartChange } = useDatePart(\n    SupportedDateParts.YEAR,\n  );\n\n  const labelElement = findChildOfType(children, Year.Label);\n  const inputElement = findChildOfType(children, Year.Input);\n\n  return (\n    <div className={className} data-date-field={true}>\n      {showDateLabels && labelElement}\n      <TextFieldRAC\n        value={partValue}\n        onChange={onPartChange}\n        isDisabled={disabled}\n        isInvalid={partError}\n      >\n        {inputElement}\n      </TextFieldRAC>\n    </div>\n  );\n};\n\ntype YearLabelProps = {\n  className?: string;\n};\n\nconst YearLabel = ({ className }: YearLabelProps) => {\n  return <DateLabel datePart={SupportedDateParts.YEAR} className={className} />;\n};\n\ntype YearInputProps = {\n  className?: string;\n};\n\nconst YearInput = ({ className }: YearInputProps) => {\n  const { id, hidePlaceholder } = useFieldPropsV2<DateInputProps>();\n  const { inputId } = useDateFieldAttributes(SupportedDateParts.YEAR);\n  const { isFirstPart } = useDatePart(SupportedDateParts.YEAR);\n  const { t } = useTranslation();\n  const inputRef = useRef<HTMLInputElement>(null);\n\n  const placeholder = hidePlaceholder\n    ? undefined\n    : t('field.date.placeholder.year');\n\n  useFocusFieldEvent(() => {\n    if (isFirstPart) {\n      inputRef.current?.focus();\n    }\n  }, id);\n\n  return (\n    <InputRAC\n      ref={inputRef}\n      id={inputId}\n      className={className}\n      placeholder={placeholder}\n      maxLength={4}\n      inputMode=\"numeric\"\n      data-hook={SupportedDateParts.YEAR}\n    />\n  );\n};\n\nYear.Label = YearLabel;\nYear.Input = YearInput;\n\nDateInput.Label = Label;\nDateInput.Month = Month;\nDateInput.Day = Day;\nDateInput.Year = Year;\nDateInput.Description = Description;\nDateInput.Error = Error;\n\nfunction useDateFieldAttributes(datePart: SupportedDateParts) {\n  const { inputId } = useFieldAttributes();\n\n  return useMemo(() => {\n    const partName = datePart.toLowerCase();\n    return {\n      inputId: `${inputId}-${partName}-input`,\n      labelId: `${inputId}-${partName}-label`,\n    };\n  }, [inputId, datePart]);\n}\n\nfunction useDatePart(datePart: SupportedDateParts) {\n  const {\n    value,\n    onChange,\n    hasError = false,\n  } = useFieldPropsV2<DateInputProps>();\n  const { regionalFormat } = useConfig();\n\n  const dateValues = useMemo(() => deserializeDate(value ?? ''), [value]);\n  const errors = useMemo(\n    () => getDatePartsErrors(hasError, value ?? ''),\n    [value, hasError],\n  );\n\n  const partValue = dateValues[datePart] || '';\n\n  const onPartChange = useCallback(\n    (newValue: string) => {\n      const serializedValue = serializeDate(newValue, datePart, dateValues);\n      onChange(serializedValue);\n    },\n    [onChange, dateValues, datePart],\n  );\n\n  const isFirstPart = useMemo(() => {\n    const dateFormat = getDateFormatParts(regionalFormat)\n      .filter(isSupportedDatePart)\n      .map((part) => part.toUpperCase() as SupportedDateParts);\n    const firstPart = dateFormat[0];\n    return firstPart === datePart;\n  }, [regionalFormat, datePart]);\n\n  return {\n    partValue,\n    partError: errors[datePart],\n    onPartChange,\n    isFirstPart,\n  };\n}\n\ntype DateLabelProps = {\n  datePart: SupportedDateParts;\n  className?: string;\n};\n\nfunction DateLabel({ datePart, className }: DateLabelProps) {\n  const { inputId, labelId } = useDateFieldAttributes(datePart);\n  const { t } = useTranslation();\n\n  const translationKey = `field.date.label.${datePart.toLowerCase()}`;\n  const label = t(translationKey);\n\n  return (\n    <label id={labelId} htmlFor={inputId} className={className}>\n      {label}\n    </label>\n  );\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nexport type Mutable<T> = {\n  -readonly[P in keyof T]: T[P]\n};\n\nexport function mod(amount: number, numerator: number): number {\n  return amount - numerator * Math.floor(amount / numerator);\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// Portions of the code in this file are based on code from ICU.\n// Original licensing can be found in the NOTICE file in the root directory of this source tree.\n\nimport {AnyCalendarDate, Calendar, CalendarIdentifier} from '../types';\nimport {CalendarDate} from '../CalendarDate';\nimport {mod, Mutable} from '../utils';\n\nconst EPOCH = 1721426; // 001/01/03 Julian C.E.\nexport function gregorianToJulianDay(era: string, year: number, month: number, day: number): number {\n  year = getExtendedYear(era, year);\n\n  let y1 = year - 1;\n  let monthOffset = -2;\n  if (month <= 2) {\n    monthOffset = 0;\n  } else if (isLeapYear(year)) {\n    monthOffset = -1;\n  }\n\n  return (\n    EPOCH -\n    1 +\n    365 * y1 +\n    Math.floor(y1 / 4) -\n    Math.floor(y1 / 100) +\n    Math.floor(y1 / 400) +\n    Math.floor((367 * month - 362) / 12 + monthOffset + day)\n  );\n}\n\nexport function isLeapYear(year: number): boolean {\n  return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n}\n\nexport function getExtendedYear(era: string, year: number): number {\n  return era === 'BC' ? 1 - year : year;\n}\n\nexport function fromExtendedYear(year: number): [string, number] {\n  let era = 'AD';\n  if (year <= 0) {\n    era = 'BC';\n    year = 1 - year;\n  }\n\n  return [era, year];\n}\n\nconst daysInMonth = {\n  standard: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],\n  leapyear: [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\n};\n\n/**\n * The Gregorian calendar is the most commonly used calendar system in the world. It supports two eras: BC, and AD.\n * Years always contain 12 months, and 365 or 366 days depending on whether it is a leap year.\n */\nexport class GregorianCalendar implements Calendar {\n  identifier: CalendarIdentifier = 'gregory';\n\n  fromJulianDay(jd: number): CalendarDate {\n    let jd0 = jd;\n    let depoch = jd0 - EPOCH;\n    let quadricent = Math.floor(depoch / 146097);\n    let dqc = mod(depoch, 146097);\n    let cent = Math.floor(dqc / 36524);\n    let dcent = mod(dqc, 36524);\n    let quad = Math.floor(dcent / 1461);\n    let dquad = mod(dcent, 1461);\n    let yindex = Math.floor(dquad / 365);\n\n    let extendedYear = quadricent * 400 + cent * 100 + quad * 4 + yindex + (cent !== 4 && yindex !== 4 ? 1 : 0);\n    let [era, year] = fromExtendedYear(extendedYear);\n    let yearDay = jd0 - gregorianToJulianDay(era, year, 1, 1);\n    let leapAdj = 2;\n    if (jd0 < gregorianToJulianDay(era, year, 3, 1)) {\n      leapAdj = 0;\n    } else if (isLeapYear(year)) {\n      leapAdj = 1;\n    }\n    let month = Math.floor(((yearDay + leapAdj) * 12 + 373) / 367);\n    let day = jd0 - gregorianToJulianDay(era, year, month, 1) + 1;\n\n    return new CalendarDate(era, year, month, day);\n  }\n\n  toJulianDay(date: AnyCalendarDate): number {\n    return gregorianToJulianDay(date.era, date.year, date.month, date.day);\n  }\n\n  getDaysInMonth(date: AnyCalendarDate): number {\n    return daysInMonth[isLeapYear(date.year) ? 'leapyear' : 'standard'][date.month - 1];\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  getMonthsInYear(date: AnyCalendarDate): number {\n    return 12;\n  }\n\n  getDaysInYear(date: AnyCalendarDate): number {\n    return isLeapYear(date.year) ? 366 : 365;\n  }\n\n  getMaximumMonthsInYear(): number {\n    return 12;\n  }\n\n  getMaximumDaysInMonth(): number {\n    return 31;\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  getYearsInEra(date: AnyCalendarDate): number {\n    return 9999;\n  }\n\n  getEras(): string[] {\n    return ['BC', 'AD'];\n  }\n\n  isInverseEra(date: AnyCalendarDate): boolean {\n    return date.era === 'BC';\n  }\n\n  balanceDate(date: Mutable<AnyCalendarDate>): void {\n    if (date.year <= 0) {\n      date.era = date.era === 'BC' ? 'AD' : 'BC';\n      date.year = 1 - date.year;\n    }\n  }\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {AnyCalendarDate, AnyTime, Calendar} from './types';\nimport {CalendarDate, CalendarDateTime, ZonedDateTime} from './CalendarDate';\nimport {fromAbsolute, toAbsolute, toCalendar, toCalendarDate} from './conversion';\nimport {weekStartData} from './weekStartData';\n\ntype DateValue = CalendarDate | CalendarDateTime | ZonedDateTime;\n\n/** Returns whether the given dates occur on the same day, regardless of the time or calendar system. */\nexport function isSameDay(a: DateValue, b: DateValue): boolean {\n  b = toCalendar(b, a.calendar);\n  return a.era === b.era && a.year === b.year && a.month === b.month && a.day === b.day;\n}\n\n/** Returns whether the given dates occur in the same month, using the calendar system of the first date. */\nexport function isSameMonth(a: DateValue, b: DateValue): boolean {\n  b = toCalendar(b, a.calendar);\n  // In the Japanese calendar, months can span multiple eras/years, so only compare the first of the month.\n  a = startOfMonth(a);\n  b = startOfMonth(b);\n  return a.era === b.era && a.year === b.year && a.month === b.month;\n}\n\n/** Returns whether the given dates occur in the same year, using the calendar system of the first date. */\nexport function isSameYear(a: DateValue, b: DateValue): boolean {\n  b = toCalendar(b, a.calendar);\n  a = startOfYear(a);\n  b = startOfYear(b);\n  return a.era === b.era && a.year === b.year;\n}\n\n/** Returns whether the given dates occur on the same day, and are of the same calendar system. */\nexport function isEqualDay(a: DateValue, b: DateValue): boolean {\n  return isEqualCalendar(a.calendar, b.calendar) && isSameDay(a, b);\n}\n\n/** Returns whether the given dates occur in the same month, and are of the same calendar system. */\nexport function isEqualMonth(a: DateValue, b: DateValue): boolean {\n  return isEqualCalendar(a.calendar, b.calendar) && isSameMonth(a, b);\n}\n\n/** Returns whether the given dates occur in the same year, and are of the same calendar system. */\nexport function isEqualYear(a: DateValue, b: DateValue): boolean {\n  return isEqualCalendar(a.calendar, b.calendar) && isSameYear(a, b);\n}\n\n/** Returns whether two calendars are the same. */\nexport function isEqualCalendar(a: Calendar, b: Calendar): boolean {\n  return a.isEqual?.(b) ?? b.isEqual?.(a) ?? a.identifier === b.identifier;\n}\n\n/** Returns whether the date is today in the given time zone. */\nexport function isToday(date: DateValue, timeZone: string): boolean {\n  return isSameDay(date, today(timeZone));\n}\n\nconst DAY_MAP = {\n  sun: 0,\n  mon: 1,\n  tue: 2,\n  wed: 3,\n  thu: 4,\n  fri: 5,\n  sat: 6\n};\n\ntype DayOfWeek = 'sun' | 'mon' | 'tue' | 'wed' | 'thu' | 'fri' | 'sat';\n\n/**\n * Returns the day of week for the given date and locale. Days are numbered from zero to six,\n * where zero is the first day of the week in the given locale. For example, in the United States,\n * the first day of the week is Sunday, but in France it is Monday.\n */\nexport function getDayOfWeek(date: DateValue, locale: string, firstDayOfWeek?: DayOfWeek): number {\n  let julian = date.calendar.toJulianDay(date);\n\n  // If julian is negative, then julian % 7 will be negative, so we adjust\n  // accordingly.  Julian day 0 is Monday.\n  let weekStart = firstDayOfWeek ? DAY_MAP[firstDayOfWeek] : getWeekStart(locale);\n  let dayOfWeek = Math.ceil(julian + 1 - weekStart) % 7;\n  if (dayOfWeek < 0) {\n    dayOfWeek += 7;\n  }\n\n  return dayOfWeek;\n}\n\n/** Returns the current time in the given time zone. */\nexport function now(timeZone: string): ZonedDateTime {\n  return fromAbsolute(Date.now(), timeZone);\n}\n\n/** Returns today's date in the given time zone. */\nexport function today(timeZone: string): CalendarDate {\n  return toCalendarDate(now(timeZone));\n}\n\nexport function compareDate(a: AnyCalendarDate, b: AnyCalendarDate): number {\n  return a.calendar.toJulianDay(a) - b.calendar.toJulianDay(b);\n}\n\nexport function compareTime(a: AnyTime, b: AnyTime): number {\n  return timeToMs(a) - timeToMs(b);\n}\n\nfunction timeToMs(a: AnyTime): number {\n  return a.hour * 60 * 60 * 1000 + a.minute * 60 * 1000 + a.second * 1000 + a.millisecond;\n}\n\n/**\n * Returns the number of hours in the given date and time zone.\n * Usually this is 24, but it could be 23 or 25 if the date is on a daylight saving transition.\n */\nexport function getHoursInDay(a: CalendarDate, timeZone: string): number {\n  let ms = toAbsolute(a, timeZone);\n  let tomorrow = a.add({days: 1});\n  let tomorrowMs = toAbsolute(tomorrow, timeZone);\n  return (tomorrowMs - ms) / 3600000;\n}\n\nlet localTimeZone: string | null = null;\n\n/** Returns the time zone identifier for the current user. */\nexport function getLocalTimeZone(): string {\n  if (localTimeZone == null) {\n    localTimeZone = new Intl.DateTimeFormat().resolvedOptions().timeZone;\n  }\n\n  return localTimeZone!;\n}\n\n/** Sets the time zone identifier for the current user. */\nexport function setLocalTimeZone(timeZone: string): void {\n  localTimeZone = timeZone;\n}\n\n/** Resets the time zone identifier for the current user. */\nexport function resetLocalTimeZone(): void {\n  localTimeZone = null;\n}\n\n/** Returns the first date of the month for the given date. */\nexport function startOfMonth(date: ZonedDateTime): ZonedDateTime;\nexport function startOfMonth(date: CalendarDateTime): CalendarDateTime;\nexport function startOfMonth(date: CalendarDate): CalendarDate;\nexport function startOfMonth(date: DateValue): DateValue;\nexport function startOfMonth(date: DateValue): DateValue {\n  // Use `subtract` instead of `set` so we don't get constrained in an era.\n  return date.subtract({days: date.day - 1});\n}\n\n/** Returns the last date of the month for the given date. */\nexport function endOfMonth(date: ZonedDateTime): ZonedDateTime;\nexport function endOfMonth(date: CalendarDateTime): CalendarDateTime;\nexport function endOfMonth(date: CalendarDate): CalendarDate;\nexport function endOfMonth(date: DateValue): DateValue;\nexport function endOfMonth(date: DateValue): DateValue {\n  return date.add({days: date.calendar.getDaysInMonth(date) - date.day});\n}\n\n/** Returns the first day of the year for the given date. */\nexport function startOfYear(date: ZonedDateTime): ZonedDateTime;\nexport function startOfYear(date: CalendarDateTime): CalendarDateTime;\nexport function startOfYear(date: CalendarDate): CalendarDate;\nexport function startOfYear(date: DateValue): DateValue;\nexport function startOfYear(date: DateValue): DateValue {\n  return startOfMonth(date.subtract({months: date.month - 1}));\n}\n\n/** Returns the last day of the year for the given date. */\nexport function endOfYear(date: ZonedDateTime): ZonedDateTime;\nexport function endOfYear(date: CalendarDateTime): CalendarDateTime;\nexport function endOfYear(date: CalendarDate): CalendarDate;\nexport function endOfYear(date: DateValue): DateValue;\nexport function endOfYear(date: DateValue): DateValue {\n  return endOfMonth(date.add({months: date.calendar.getMonthsInYear(date) - date.month}));\n}\n\nexport function getMinimumMonthInYear(date: AnyCalendarDate): number {\n  if (date.calendar.getMinimumMonthInYear) {\n    return date.calendar.getMinimumMonthInYear(date);\n  }\n\n  return 1;\n}\n\nexport function getMinimumDayInMonth(date: AnyCalendarDate): number {\n  if (date.calendar.getMinimumDayInMonth) {\n    return date.calendar.getMinimumDayInMonth(date);\n  }\n\n  return 1;\n}\n\n/** Returns the first date of the week for the given date and locale. */\nexport function startOfWeek(date: ZonedDateTime, locale: string, firstDayOfWeek?: DayOfWeek): ZonedDateTime;\nexport function startOfWeek(date: CalendarDateTime, locale: string, firstDayOfWeek?: DayOfWeek): CalendarDateTime;\nexport function startOfWeek(date: CalendarDate, locale: string, firstDayOfWeek?: DayOfWeek): CalendarDate;\nexport function startOfWeek(date: DateValue, locale: string, firstDayOfWeek?: DayOfWeek): DateValue;\nexport function startOfWeek(date: DateValue, locale: string, firstDayOfWeek?: DayOfWeek): DateValue {\n  let dayOfWeek = getDayOfWeek(date, locale, firstDayOfWeek);\n  return date.subtract({days: dayOfWeek});\n}\n\n/** Returns the last date of the week for the given date and locale. */\nexport function endOfWeek(date: ZonedDateTime, locale: string, firstDayOfWeek?: DayOfWeek): ZonedDateTime;\nexport function endOfWeek(date: CalendarDateTime, locale: string, firstDayOfWeek?: DayOfWeek): CalendarDateTime;\nexport function endOfWeek(date: CalendarDate, locale: string, firstDayOfWeek?: DayOfWeek): CalendarDate;\nexport function endOfWeek(date: DateValue, locale: string, firstDayOfWeek?: DayOfWeek): DateValue;\nexport function endOfWeek(date: DateValue, locale: string, firstDayOfWeek?: DayOfWeek): DateValue {\n  return startOfWeek(date, locale, firstDayOfWeek).add({days: 6});\n}\n\nconst cachedRegions = new Map<string, string>();\nconst cachedWeekInfo = new Map<string, {firstDay: number}>();\n\nfunction getRegion(locale: string): string | undefined {\n  // If the Intl.Locale API is available, use it to get the region for the locale.\n  // @ts-ignore\n  if (Intl.Locale) {\n    // Constructing an Intl.Locale is expensive, so cache the result.\n    let region = cachedRegions.get(locale);\n    if (!region) {\n      // @ts-ignore\n      region = new Intl.Locale(locale).maximize().region;\n      if (region) {\n        cachedRegions.set(locale, region);\n      }\n    }\n    return region;\n  }\n\n  // If not, just try splitting the string.\n  // If the second part of the locale string is 'u',\n  // then this is a unicode extension, so ignore it.\n  // Otherwise, it should be the region.\n  let part = locale.split('-')[1];\n  return part === 'u' ? undefined : part;\n}\n\nfunction getWeekStart(locale: string): number {\n  // TODO: use Intl.Locale for this once browsers support the weekInfo property\n  // https://github.com/tc39/proposal-intl-locale-info\n  let weekInfo = cachedWeekInfo.get(locale);\n  if (!weekInfo) {\n    if (Intl.Locale) {\n      // @ts-ignore\n      let localeInst = new Intl.Locale(locale);\n      if ('getWeekInfo' in localeInst) {\n        // @ts-expect-error\n        weekInfo = localeInst.getWeekInfo();\n        if (weekInfo) {\n          cachedWeekInfo.set(locale, weekInfo);\n          return weekInfo.firstDay;\n        }\n      }\n    }\n    let region = getRegion(locale);\n    if (locale.includes('-fw-')) {\n      // pull the value for the attribute fw from strings such as en-US-u-ca-iso8601-fw-tue or en-US-u-ca-iso8601-fw-mon-nu-thai\n      // where the fw attribute could be followed by another unicode locale extension or not\n      let day = locale.split('-fw-')[1].split('-')[0];\n      if (day === 'mon') {\n        weekInfo = {firstDay: 1};\n      } else if (day === 'tue') {\n        weekInfo = {firstDay: 2};\n      } else if (day === 'wed') {\n        weekInfo = {firstDay: 3};\n      } else if (day === 'thu') {\n        weekInfo = {firstDay: 4};\n      } else if (day === 'fri') {\n        weekInfo = {firstDay: 5};\n      } else if (day === 'sat') {\n        weekInfo = {firstDay: 6};\n      } else {\n        weekInfo = {firstDay: 0};\n      }\n    } else if (locale.includes('-ca-iso8601')) {\n      weekInfo = {firstDay: 1};\n    } else {\n      weekInfo = {firstDay: region ? weekStartData[region] || 0 : 0};\n    }\n    cachedWeekInfo.set(locale, weekInfo);\n  }\n\n  return weekInfo.firstDay;\n}\n\n/** Returns the number of weeks in the given month and locale. */\nexport function getWeeksInMonth(date: DateValue, locale: string, firstDayOfWeek?: DayOfWeek): number {\n  let days = date.calendar.getDaysInMonth(date);\n  return Math.ceil((getDayOfWeek(startOfMonth(date), locale, firstDayOfWeek) + days) / 7);\n}\n\n/** Returns the lesser of the two provider dates. */\nexport function minDate<A extends DateValue, B extends DateValue>(a?: A | null, b?: B | null): A | B | null | undefined {\n  if (a && b) {\n    return a.compare(b) <= 0 ? a : b;\n  }\n\n  return a || b;\n}\n\n/** Returns the greater of the two provider dates. */\nexport function maxDate<A extends DateValue, B extends DateValue>(a?: A | null, b?: B | null): A | B | null | undefined {\n  if (a && b) {\n    return a.compare(b) >= 0 ? a : b;\n  }\n\n  return a || b;\n}\n\nconst WEEKEND_DATA = {\n  AF: [4, 5],\n  AE: [5, 6],\n  BH: [5, 6],\n  DZ: [5, 6],\n  EG: [5, 6],\n  IL: [5, 6],\n  IQ: [5, 6],\n  IR: [5, 5],\n  JO: [5, 6],\n  KW: [5, 6],\n  LY: [5, 6],\n  OM: [5, 6],\n  QA: [5, 6],\n  SA: [5, 6],\n  SD: [5, 6],\n  SY: [5, 6],\n  YE: [5, 6]\n};\n\n/** Returns whether the given date is on a weekend in the given locale. */\nexport function isWeekend(date: DateValue, locale: string): boolean {\n  let julian = date.calendar.toJulianDay(date);\n\n  // If julian is negative, then julian % 7 will be negative, so we adjust\n  // accordingly.  Julian day 0 is Monday.\n  let dayOfWeek = Math.ceil(julian + 1) % 7;\n  if (dayOfWeek < 0) {\n    dayOfWeek += 7;\n  }\n\n  let region = getRegion(locale);\n  // Use Intl.Locale for this once weekInfo is supported.\n  // https://github.com/tc39/proposal-intl-locale-info\n  let [start, end] = WEEKEND_DATA[region!] || [6, 0];\n  return dayOfWeek === start || dayOfWeek === end;\n}\n\n/** Returns whether the given date is on a weekday in the given locale. */\nexport function isWeekday(date: DateValue, locale: string): boolean {\n  return !isWeekend(date, locale);\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// Portions of the code in this file are based on code from the TC39 Temporal proposal.\n// Original licensing can be found in the NOTICE file in the root directory of this source tree.\n\nimport {AnyCalendarDate, AnyDateTime, AnyTime, Calendar, DateFields, Disambiguation, TimeFields} from './types';\nimport {CalendarDate, CalendarDateTime, Time, ZonedDateTime} from './CalendarDate';\nimport {constrain} from './manipulation';\nimport {getExtendedYear, GregorianCalendar} from './calendars/GregorianCalendar';\nimport {getLocalTimeZone, isEqualCalendar} from './queries';\nimport {Mutable} from './utils';\n\nexport function epochFromDate(date: AnyDateTime): number {\n  date = toCalendar(date, new GregorianCalendar());\n  let year = getExtendedYear(date.era, date.year);\n  return epochFromParts(year, date.month, date.day, date.hour, date.minute, date.second, date.millisecond);\n}\n\nfunction epochFromParts(year: number, month: number, day: number, hour: number, minute: number, second: number, millisecond: number): number {\n  // Note: Date.UTC() interprets one and two-digit years as being in the\n  // 20th century, so don't use it\n  let date = new Date();\n  date.setUTCHours(hour, minute, second, millisecond);\n  date.setUTCFullYear(year, month - 1, day);\n  return date.getTime();\n}\n\nexport function getTimeZoneOffset(ms: number, timeZone: string): number {\n  // Fast path for UTC.\n  if (timeZone === 'UTC') {\n    return 0;\n  }\n\n  // Fast path: for local timezone after 1970, use native Date.\n  if (ms > 0 && timeZone === getLocalTimeZone()) {\n    return new Date(ms).getTimezoneOffset() * -60 * 1000;\n  }\n\n  let {year, month, day, hour, minute, second} = getTimeZoneParts(ms, timeZone);\n  let utc = epochFromParts(year, month, day, hour, minute, second, 0);\n  return utc - Math.floor(ms / 1000) * 1000;\n}\n\nconst formattersByTimeZone = new Map<string, Intl.DateTimeFormat>();\n\nfunction getTimeZoneParts(ms: number, timeZone: string) {\n  let formatter = formattersByTimeZone.get(timeZone);\n  if (!formatter) {\n    formatter = new Intl.DateTimeFormat('en-US', {\n      timeZone,\n      hour12: false,\n      era: 'short',\n      year: 'numeric',\n      month: 'numeric',\n      day: 'numeric',\n      hour: 'numeric',\n      minute: 'numeric',\n      second: 'numeric'\n    });\n\n    formattersByTimeZone.set(timeZone, formatter);\n  }\n\n  let parts = formatter.formatToParts(new Date(ms));\n  let namedParts: {[name: string]: string} = {};\n  for (let part of parts) {\n    if (part.type !== 'literal') {\n      namedParts[part.type] = part.value;\n    }\n  }\n\n\n  return {\n    // Firefox returns B instead of BC... https://bugzilla.mozilla.org/show_bug.cgi?id=1752253\n    year: namedParts.era === 'BC' || namedParts.era === 'B' ? -namedParts.year + 1 : +namedParts.year,\n    month: +namedParts.month,\n    day: +namedParts.day,\n    hour: namedParts.hour === '24' ? 0 : +namedParts.hour, // bugs.chromium.org/p/chromium/issues/detail?id=1045791\n    minute: +namedParts.minute,\n    second: +namedParts.second\n  };\n}\n\nconst DAYMILLIS = 86400000;\n\nexport function possibleAbsolutes(date: CalendarDateTime, timeZone: string): number[] {\n  let ms = epochFromDate(date);\n  let earlier = ms - getTimeZoneOffset(ms - DAYMILLIS, timeZone);\n  let later = ms - getTimeZoneOffset(ms + DAYMILLIS, timeZone);\n  return getValidWallTimes(date, timeZone, earlier, later);\n}\n\nfunction getValidWallTimes(date: CalendarDateTime, timeZone: string, earlier: number, later: number): number[] {\n  let found = earlier === later ? [earlier] : [earlier, later];\n  return found.filter(absolute => isValidWallTime(date, timeZone, absolute));\n}\n\nfunction isValidWallTime(date: CalendarDateTime, timeZone: string, absolute: number) {\n  let parts = getTimeZoneParts(absolute, timeZone);\n  return date.year === parts.year\n    && date.month === parts.month\n    && date.day === parts.day\n    && date.hour === parts.hour\n    && date.minute === parts.minute\n    && date.second === parts.second;\n}\n\nexport function toAbsolute(date: CalendarDate | CalendarDateTime, timeZone: string, disambiguation: Disambiguation = 'compatible'): number {\n  let dateTime = toCalendarDateTime(date);\n\n  // Fast path: if the time zone is UTC, use native Date.\n  if (timeZone === 'UTC') {\n    return epochFromDate(dateTime);\n  }\n\n  // Fast path: if the time zone is the local timezone and disambiguation is compatible, use native Date.\n  if (timeZone === getLocalTimeZone() && disambiguation === 'compatible') {\n    dateTime = toCalendar(dateTime, new GregorianCalendar());\n\n    // Don't use Date constructor here because two-digit years are interpreted in the 20th century.\n    let date = new Date();\n    let year = getExtendedYear(dateTime.era, dateTime.year);\n    date.setFullYear(year, dateTime.month - 1, dateTime.day);\n    date.setHours(dateTime.hour, dateTime.minute, dateTime.second, dateTime.millisecond);\n    return date.getTime();\n  }\n\n  let ms = epochFromDate(dateTime);\n  let offsetBefore = getTimeZoneOffset(ms - DAYMILLIS, timeZone);\n  let offsetAfter = getTimeZoneOffset(ms + DAYMILLIS, timeZone);\n  let valid = getValidWallTimes(dateTime, timeZone, ms - offsetBefore, ms - offsetAfter);\n\n  if (valid.length === 1) {\n    return valid[0];\n  }\n\n  if (valid.length > 1) {\n    switch (disambiguation) {\n      // 'compatible' means 'earlier' for \"fall back\" transitions\n      case 'compatible':\n      case 'earlier':\n        return valid[0];\n      case 'later':\n        return valid[valid.length - 1];\n      case 'reject':\n        throw new RangeError('Multiple possible absolute times found');\n    }\n  }\n\n  switch (disambiguation) {\n    case 'earlier':\n      return Math.min(ms - offsetBefore, ms - offsetAfter);\n    // 'compatible' means 'later' for \"spring forward\" transitions\n    case 'compatible':\n    case 'later':\n      return Math.max(ms - offsetBefore, ms - offsetAfter);\n    case 'reject':\n      throw new RangeError('No such absolute time found');\n  }\n}\n\nexport function toDate(dateTime: CalendarDate | CalendarDateTime, timeZone: string, disambiguation: Disambiguation = 'compatible'): Date {\n  return new Date(toAbsolute(dateTime, timeZone, disambiguation));\n}\n\n/**\n * Takes a Unix epoch (milliseconds since 1970) and converts it to the provided time zone.\n */\nexport function fromAbsolute(ms: number, timeZone: string): ZonedDateTime {\n  let offset = getTimeZoneOffset(ms, timeZone);\n  let date = new Date(ms + offset);\n  let year = date.getUTCFullYear();\n  let month = date.getUTCMonth() + 1;\n  let day = date.getUTCDate();\n  let hour = date.getUTCHours();\n  let minute = date.getUTCMinutes();\n  let second = date.getUTCSeconds();\n  let millisecond = date.getUTCMilliseconds();\n\n  return new ZonedDateTime(year < 1 ? 'BC' : 'AD', year < 1 ? -year + 1 : year, month, day, timeZone, offset, hour, minute, second, millisecond);\n}\n\n/**\n * Takes a `Date` object and converts it to the provided time zone.\n */\nexport function fromDate(date: Date, timeZone: string): ZonedDateTime {\n  return fromAbsolute(date.getTime(), timeZone);\n}\n\nexport function fromDateToLocal(date: Date): ZonedDateTime {\n  return fromDate(date, getLocalTimeZone());\n}\n\n/** Converts a value with date components such as a `CalendarDateTime` or `ZonedDateTime` into a `CalendarDate`. */\nexport function toCalendarDate(dateTime: AnyCalendarDate): CalendarDate {\n  return new CalendarDate(dateTime.calendar, dateTime.era, dateTime.year, dateTime.month, dateTime.day);\n}\n\nexport function toDateFields(date: AnyCalendarDate): DateFields {\n  return {\n    era: date.era,\n    year: date.year,\n    month: date.month,\n    day: date.day\n  };\n}\n\nexport function toTimeFields(date: AnyTime): TimeFields {\n  return {\n    hour: date.hour,\n    minute: date.minute,\n    second: date.second,\n    millisecond: date.millisecond\n  };\n}\n\n/**\n * Converts a date value to a `CalendarDateTime`. An optional `Time` value can be passed to set the time\n * of the resulting value, otherwise it will default to midnight.\n */\nexport function toCalendarDateTime(date: CalendarDate | CalendarDateTime | ZonedDateTime, time?: AnyTime): CalendarDateTime {\n  let hour = 0, minute = 0, second = 0, millisecond = 0;\n  if ('timeZone' in date) {\n    ({hour, minute, second, millisecond} = date);\n  } else if ('hour' in date && !time) {\n    return date;\n  }\n\n  if (time) {\n    ({hour, minute, second, millisecond} = time);\n  }\n\n  return new CalendarDateTime(\n    date.calendar,\n    date.era,\n    date.year,\n    date.month,\n    date.day,\n    hour,\n    minute,\n    second,\n    millisecond\n  );\n}\n\n/** Extracts the time components from a value containing a date and time. */\nexport function toTime(dateTime: CalendarDateTime | ZonedDateTime): Time {\n  return new Time(dateTime.hour, dateTime.minute, dateTime.second, dateTime.millisecond);\n}\n\n/** Converts a date from one calendar system to another. */\nexport function toCalendar<T extends AnyCalendarDate>(date: T, calendar: Calendar): T {\n  if (isEqualCalendar(date.calendar, calendar)) {\n    return date;\n  }\n\n  let calendarDate = calendar.fromJulianDay(date.calendar.toJulianDay(date));\n  let copy: Mutable<T> = date.copy();\n  copy.calendar = calendar;\n  copy.era = calendarDate.era;\n  copy.year = calendarDate.year;\n  copy.month = calendarDate.month;\n  copy.day = calendarDate.day;\n  constrain(copy);\n  return copy;\n}\n\n/**\n * Converts a date value to a `ZonedDateTime` in the provided time zone. The `disambiguation` option can be set\n * to control how values that fall on daylight saving time changes are interpreted.\n */\nexport function toZoned(date: CalendarDate | CalendarDateTime | ZonedDateTime, timeZone: string, disambiguation?: Disambiguation): ZonedDateTime {\n  if (date instanceof ZonedDateTime) {\n    if (date.timeZone === timeZone) {\n      return date;\n    }\n\n    return toTimeZone(date, timeZone);\n  }\n\n  let ms = toAbsolute(date, timeZone, disambiguation);\n  return fromAbsolute(ms, timeZone);\n}\n\nexport function zonedToDate(date: ZonedDateTime): Date {\n  let ms = epochFromDate(date) - date.offset;\n  return new Date(ms);\n}\n\n/** Converts a `ZonedDateTime` from one time zone to another. */\nexport function toTimeZone(date: ZonedDateTime, timeZone: string): ZonedDateTime {\n  let ms = epochFromDate(date) - date.offset;\n  return toCalendar(fromAbsolute(ms, timeZone), date.calendar);\n}\n\n/** Converts the given `ZonedDateTime` into the user's local time zone. */\nexport function toLocalTimeZone(date: ZonedDateTime): ZonedDateTime {\n  return toTimeZone(date, getLocalTimeZone());\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {AnyCalendarDate, AnyDateTime, AnyTime, CycleOptions, CycleTimeOptions, DateDuration, DateField, DateFields, DateTimeDuration, Disambiguation, TimeDuration, TimeField, TimeFields} from './types';\nimport {CalendarDate, CalendarDateTime, Time, ZonedDateTime} from './CalendarDate';\nimport {epochFromDate, fromAbsolute, toAbsolute, toCalendar, toCalendarDateTime} from './conversion';\nimport {GregorianCalendar} from './calendars/GregorianCalendar';\nimport {Mutable} from './utils';\n\nconst ONE_HOUR = 3600000;\n\nexport function add(date: CalendarDateTime, duration: DateTimeDuration): CalendarDateTime;\nexport function add(date: CalendarDate, duration: DateDuration): CalendarDate;\nexport function add(date: CalendarDate | CalendarDateTime, duration: DateTimeDuration): CalendarDate | CalendarDateTime;\nexport function add(date: CalendarDate | CalendarDateTime, duration: DateTimeDuration): Mutable<AnyCalendarDate | AnyDateTime> {\n  let mutableDate: Mutable<AnyCalendarDate | AnyDateTime> = date.copy();\n  let days = 'hour' in mutableDate ? addTimeFields(mutableDate, duration) : 0;\n\n  addYears(mutableDate, duration.years || 0);\n  if (mutableDate.calendar.balanceYearMonth) {\n    mutableDate.calendar.balanceYearMonth(mutableDate, date);\n  }\n\n  mutableDate.month += duration.months || 0;\n\n  balanceYearMonth(mutableDate);\n  constrainMonthDay(mutableDate);\n\n  mutableDate.day += (duration.weeks || 0) * 7;\n  mutableDate.day += duration.days || 0;\n  mutableDate.day += days;\n\n  balanceDay(mutableDate);\n\n  if (mutableDate.calendar.balanceDate) {\n    mutableDate.calendar.balanceDate(mutableDate);\n  }\n\n  // Constrain in case adding ended up with a date outside the valid range for the calendar system.\n  // The behavior here is slightly different than when constraining in the `set` function in that\n  // we adjust smaller fields to their minimum/maximum values rather than constraining each field\n  // individually. This matches the general behavior of `add` vs `set` regarding how fields are balanced.\n  if (mutableDate.year < 1) {\n    mutableDate.year = 1;\n    mutableDate.month = 1;\n    mutableDate.day = 1;\n  }\n\n  let maxYear = mutableDate.calendar.getYearsInEra(mutableDate);\n  if (mutableDate.year > maxYear) {\n    let isInverseEra = mutableDate.calendar.isInverseEra?.(mutableDate);\n    mutableDate.year = maxYear;\n    mutableDate.month = isInverseEra ? 1 : mutableDate.calendar.getMonthsInYear(mutableDate);\n    mutableDate.day = isInverseEra ? 1 : mutableDate.calendar.getDaysInMonth(mutableDate);\n  }\n\n  if (mutableDate.month < 1) {\n    mutableDate.month = 1;\n    mutableDate.day = 1;\n  }\n\n  let maxMonth = mutableDate.calendar.getMonthsInYear(mutableDate);\n  if (mutableDate.month > maxMonth) {\n    mutableDate.month = maxMonth;\n    mutableDate.day = mutableDate.calendar.getDaysInMonth(mutableDate);\n  }\n\n  mutableDate.day = Math.max(1, Math.min(mutableDate.calendar.getDaysInMonth(mutableDate), mutableDate.day));\n  return mutableDate;\n}\n\nfunction addYears(date: Mutable<AnyCalendarDate>, years: number) {\n  if (date.calendar.isInverseEra?.(date)) {\n    years = -years;\n  }\n\n  date.year += years;\n}\n\nfunction balanceYearMonth(date: Mutable<AnyCalendarDate>) {\n  while (date.month < 1) {\n    addYears(date, -1);\n    date.month += date.calendar.getMonthsInYear(date);\n  }\n\n  let monthsInYear = 0;\n  while (date.month > (monthsInYear = date.calendar.getMonthsInYear(date))) {\n    date.month -= monthsInYear;\n    addYears(date, 1);\n  }\n}\n\nfunction balanceDay(date: Mutable<AnyCalendarDate>) {\n  while (date.day < 1) {\n    date.month--;\n    balanceYearMonth(date);\n    date.day += date.calendar.getDaysInMonth(date);\n  }\n\n  while (date.day > date.calendar.getDaysInMonth(date)) {\n    date.day -= date.calendar.getDaysInMonth(date);\n    date.month++;\n    balanceYearMonth(date);\n  }\n}\n\nfunction constrainMonthDay(date: Mutable<AnyCalendarDate>) {\n  date.month = Math.max(1, Math.min(date.calendar.getMonthsInYear(date), date.month));\n  date.day = Math.max(1, Math.min(date.calendar.getDaysInMonth(date), date.day));\n}\n\nexport function constrain(date: Mutable<AnyCalendarDate>): void {\n  if (date.calendar.constrainDate) {\n    date.calendar.constrainDate(date);\n  }\n\n  date.year = Math.max(1, Math.min(date.calendar.getYearsInEra(date), date.year));\n  constrainMonthDay(date);\n}\n\nexport function invertDuration(duration: DateTimeDuration): DateTimeDuration {\n  let inverseDuration = {};\n  for (let key in duration) {\n    if (typeof duration[key] === 'number') {\n      inverseDuration[key] = -duration[key];\n    }\n  }\n\n  return inverseDuration;\n}\n\nexport function subtract(date: CalendarDateTime, duration: DateTimeDuration): CalendarDateTime;\nexport function subtract(date: CalendarDate, duration: DateDuration): CalendarDate;\nexport function subtract(date: CalendarDate | CalendarDateTime, duration: DateTimeDuration): CalendarDate | CalendarDateTime {\n  return add(date, invertDuration(duration));\n}\n\nexport function set(date: CalendarDateTime, fields: DateFields): CalendarDateTime;\nexport function set(date: CalendarDate, fields: DateFields): CalendarDate;\nexport function set(date: CalendarDate | CalendarDateTime, fields: DateFields): Mutable<AnyCalendarDate> {\n  let mutableDate: Mutable<AnyCalendarDate> = date.copy();\n\n  if (fields.era != null) {\n    mutableDate.era = fields.era;\n  }\n\n  if (fields.year != null) {\n    mutableDate.year = fields.year;\n  }\n\n  if (fields.month != null) {\n    mutableDate.month = fields.month;\n  }\n\n  if (fields.day != null) {\n    mutableDate.day = fields.day;\n  }\n\n  constrain(mutableDate);\n  return mutableDate;\n}\n\nexport function setTime(value: CalendarDateTime, fields: TimeFields): CalendarDateTime;\nexport function setTime(value: Time, fields: TimeFields): Time;\nexport function setTime(value: Time | CalendarDateTime, fields: TimeFields): Mutable<Time | CalendarDateTime> {\n  let mutableValue: Mutable<Time | CalendarDateTime> = value.copy();\n\n  if (fields.hour != null) {\n    mutableValue.hour = fields.hour;\n  }\n\n  if (fields.minute != null) {\n    mutableValue.minute = fields.minute;\n  }\n\n  if (fields.second != null) {\n    mutableValue.second = fields.second;\n  }\n\n  if (fields.millisecond != null) {\n    mutableValue.millisecond = fields.millisecond;\n  }\n\n  constrainTime(mutableValue);\n  return mutableValue;\n}\n\nfunction balanceTime(time: Mutable<AnyTime>): number {\n  time.second += Math.floor(time.millisecond / 1000);\n  time.millisecond = nonNegativeMod(time.millisecond, 1000);\n\n  time.minute += Math.floor(time.second / 60);\n  time.second = nonNegativeMod(time.second, 60);\n\n  time.hour += Math.floor(time.minute / 60);\n  time.minute = nonNegativeMod(time.minute, 60);\n\n  let days = Math.floor(time.hour / 24);\n  time.hour = nonNegativeMod(time.hour, 24);\n\n  return days;\n}\n\nexport function constrainTime(time: Mutable<AnyTime>): void {\n  time.millisecond = Math.max(0, Math.min(time.millisecond, 1000));\n  time.second = Math.max(0, Math.min(time.second, 59));\n  time.minute = Math.max(0, Math.min(time.minute, 59));\n  time.hour = Math.max(0, Math.min(time.hour, 23));\n}\n\nfunction nonNegativeMod(a: number, b: number) {\n  let result = a % b;\n  if (result < 0) {\n    result += b;\n  }\n  return result;\n}\n\nfunction addTimeFields(time: Mutable<AnyTime>, duration: TimeDuration): number {\n  time.hour += duration.hours || 0;\n  time.minute += duration.minutes || 0;\n  time.second += duration.seconds || 0;\n  time.millisecond += duration.milliseconds || 0;\n  return balanceTime(time);\n}\n\nexport function addTime(time: Time, duration: TimeDuration): Time {\n  let res = time.copy();\n  addTimeFields(res, duration);\n  return res;\n}\n\nexport function subtractTime(time: Time, duration: TimeDuration): Time {\n  return addTime(time, invertDuration(duration));\n}\n\nexport function cycleDate(value: CalendarDateTime, field: DateField, amount: number, options?: CycleOptions): CalendarDateTime;\nexport function cycleDate(value: CalendarDate, field: DateField, amount: number, options?: CycleOptions): CalendarDate;\nexport function cycleDate(value: CalendarDate | CalendarDateTime, field: DateField, amount: number, options?: CycleOptions): Mutable<CalendarDate | CalendarDateTime> {\n  let mutable: Mutable<CalendarDate | CalendarDateTime> = value.copy();\n\n  switch (field) {\n    case 'era': {\n      let eras = value.calendar.getEras();\n      let eraIndex = eras.indexOf(value.era);\n      if (eraIndex < 0) {\n        throw new Error('Invalid era: ' + value.era);\n      }\n      eraIndex = cycleValue(eraIndex, amount, 0, eras.length - 1, options?.round);\n      mutable.era = eras[eraIndex];\n\n      // Constrain the year and other fields within the era, so the era doesn't change when we balance below.\n      constrain(mutable);\n      break;\n    }\n    case 'year': {\n      if (mutable.calendar.isInverseEra?.(mutable)) {\n        amount = -amount;\n      }\n\n      // The year field should not cycle within the era as that can cause weird behavior affecting other fields.\n      // We need to also allow values < 1 so that decrementing goes to the previous era. If we get -Infinity back\n      // we know we wrapped around after reaching 9999 (the maximum), so set the year back to 1.\n      mutable.year = cycleValue(value.year, amount, -Infinity, 9999, options?.round);\n      if (mutable.year === -Infinity) {\n        mutable.year = 1;\n      }\n\n      if (mutable.calendar.balanceYearMonth) {\n        mutable.calendar.balanceYearMonth(mutable, value);\n      }\n      break;\n    }\n    case 'month':\n      mutable.month = cycleValue(value.month, amount, 1, value.calendar.getMonthsInYear(value), options?.round);\n      break;\n    case 'day':\n      mutable.day = cycleValue(value.day, amount, 1, value.calendar.getDaysInMonth(value), options?.round);\n      break;\n    default:\n      throw new Error('Unsupported field ' + field);\n  }\n\n  if (value.calendar.balanceDate) {\n    value.calendar.balanceDate(mutable);\n  }\n\n  constrain(mutable);\n  return mutable;\n}\n\nexport function cycleTime(value: CalendarDateTime, field: TimeField, amount: number, options?: CycleTimeOptions): CalendarDateTime;\nexport function cycleTime(value: Time, field: TimeField, amount: number, options?: CycleTimeOptions): Time;\nexport function cycleTime(value: Time | CalendarDateTime, field: TimeField, amount: number, options?: CycleTimeOptions): Mutable<Time | CalendarDateTime> {\n  let mutable: Mutable<Time | CalendarDateTime> = value.copy();\n\n  switch (field) {\n    case 'hour': {\n      let hours = value.hour;\n      let min = 0;\n      let max = 23;\n      if (options?.hourCycle === 12) {\n        let isPM = hours >= 12;\n        min = isPM ? 12 : 0;\n        max = isPM ? 23 : 11;\n      }\n      mutable.hour = cycleValue(hours, amount, min, max, options?.round);\n      break;\n    }\n    case 'minute':\n      mutable.minute = cycleValue(value.minute, amount, 0, 59, options?.round);\n      break;\n    case 'second':\n      mutable.second = cycleValue(value.second, amount, 0, 59, options?.round);\n      break;\n    case 'millisecond':\n      mutable.millisecond = cycleValue(value.millisecond, amount, 0, 999, options?.round);\n      break;\n    default:\n      throw new Error('Unsupported field ' + field);\n  }\n\n  return mutable;\n}\n\nfunction cycleValue(value: number, amount: number, min: number, max: number, round = false) {\n  if (round) {\n    value += Math.sign(amount);\n\n    if (value < min) {\n      value = max;\n    }\n\n    let div = Math.abs(amount);\n    if (amount > 0) {\n      value = Math.ceil(value / div) * div;\n    } else {\n      value = Math.floor(value / div) * div;\n    }\n\n    if (value > max) {\n      value = min;\n    }\n  } else {\n    value += amount;\n    if (value < min) {\n      value = max - (min - value - 1);\n    } else if (value > max) {\n      value = min + (value - max - 1);\n    }\n  }\n\n  return value;\n}\n\nexport function addZoned(dateTime: ZonedDateTime, duration: DateTimeDuration): ZonedDateTime {\n  let ms: number;\n  if ((duration.years != null && duration.years !== 0) || (duration.months != null && duration.months !== 0) || (duration.weeks != null && duration.weeks !== 0) || (duration.days != null && duration.days !== 0)) {\n    let res = add(toCalendarDateTime(dateTime), {\n      years: duration.years,\n      months: duration.months,\n      weeks: duration.weeks,\n      days: duration.days\n    });\n\n    // Changing the date may change the timezone offset, so we need to recompute\n    // using the 'compatible' disambiguation.\n    ms = toAbsolute(res, dateTime.timeZone);\n  } else {\n    // Otherwise, preserve the offset of the original date.\n    ms = epochFromDate(dateTime) - dateTime.offset;\n  }\n\n  // Perform time manipulation in milliseconds rather than on the original time fields to account for DST.\n  // For example, adding one hour during a DST transition may result in the hour field staying the same or\n  // skipping an hour. This results in the offset field changing value instead of the specified field.\n  ms += duration.milliseconds || 0;\n  ms += (duration.seconds || 0) * 1000;\n  ms += (duration.minutes || 0) * 60 * 1000;\n  ms += (duration.hours || 0) * 60 * 60 * 1000;\n\n  let res = fromAbsolute(ms, dateTime.timeZone);\n  return toCalendar(res, dateTime.calendar);\n}\n\nexport function subtractZoned(dateTime: ZonedDateTime, duration: DateTimeDuration): ZonedDateTime {\n  return addZoned(dateTime, invertDuration(duration));\n}\n\nexport function cycleZoned(dateTime: ZonedDateTime, field: DateField | TimeField, amount: number, options?: CycleTimeOptions): ZonedDateTime {\n  // For date fields, we want the time to remain consistent and the UTC offset to potentially change to account for DST changes.\n  // For time fields, we want the time to change by the amount given. This may result in the hour field staying the same, but the UTC\n  // offset changing in the case of a backward DST transition, or skipping an hour in the case of a forward DST transition.\n  switch (field) {\n    case 'hour': {\n      let min = 0;\n      let max = 23;\n      if (options?.hourCycle === 12) {\n        let isPM = dateTime.hour >= 12;\n        min = isPM ? 12 : 0;\n        max = isPM ? 23 : 11;\n      }\n\n      // The minimum and maximum hour may be affected by daylight saving time.\n      // For example, it might jump forward at midnight, and skip 1am.\n      // Or it might end at midnight and repeat the 11pm hour. To handle this, we get\n      // the possible absolute times for the min and max, and find the maximum range\n      // that is within the current day.\n      let plainDateTime = toCalendarDateTime(dateTime);\n      let minDate = toCalendar(setTime(plainDateTime, {hour: min}), new GregorianCalendar());\n      let minAbsolute = [toAbsolute(minDate, dateTime.timeZone, 'earlier'), toAbsolute(minDate, dateTime.timeZone, 'later')]\n        .filter(ms => fromAbsolute(ms, dateTime.timeZone).day === minDate.day)[0];\n\n      let maxDate = toCalendar(setTime(plainDateTime, {hour: max}), new GregorianCalendar());\n      let maxAbsolute = [toAbsolute(maxDate, dateTime.timeZone, 'earlier'), toAbsolute(maxDate, dateTime.timeZone, 'later')]\n        .filter(ms => fromAbsolute(ms, dateTime.timeZone).day === maxDate.day).pop()!;\n\n      // Since hours may repeat, we need to operate on the absolute time in milliseconds.\n      // This is done in hours from the Unix epoch so that cycleValue works correctly,\n      // and then converted back to milliseconds.\n      let ms = epochFromDate(dateTime) - dateTime.offset;\n      let hours = Math.floor(ms / ONE_HOUR);\n      let remainder = ms % ONE_HOUR;\n      ms = cycleValue(\n        hours,\n        amount,\n        Math.floor(minAbsolute / ONE_HOUR),\n        Math.floor(maxAbsolute / ONE_HOUR),\n        options?.round\n      ) * ONE_HOUR + remainder;\n\n      // Now compute the new timezone offset, and convert the absolute time back to local time.\n      return toCalendar(fromAbsolute(ms, dateTime.timeZone), dateTime.calendar);\n    }\n    case 'minute':\n    case 'second':\n    case 'millisecond':\n      // @ts-ignore\n      return cycleTime(dateTime, field, amount, options);\n    case 'era':\n    case 'year':\n    case 'month':\n    case 'day': {\n      let res = cycleDate(toCalendarDateTime(dateTime), field, amount, options);\n      let ms = toAbsolute(res, dateTime.timeZone);\n      return toCalendar(fromAbsolute(ms, dateTime.timeZone), dateTime.calendar);\n    }\n    default:\n      throw new Error('Unsupported field ' + field);\n  }\n}\n\nexport function setZoned(dateTime: ZonedDateTime, fields: DateFields & TimeFields, disambiguation?: Disambiguation): ZonedDateTime {\n  // Set the date/time fields, and recompute the UTC offset to account for DST changes.\n  // We also need to validate by converting back to a local time in case hours are skipped during forward DST transitions.\n  let plainDateTime = toCalendarDateTime(dateTime);\n  let res = setTime(set(plainDateTime, fields), fields);\n\n  // If the resulting plain date time values are equal, return the original time.\n  // We don't want to change the offset when setting the time to the same value.\n  if (res.compare(plainDateTime) === 0) {\n    return dateTime;\n  }\n\n  let ms = toAbsolute(res, dateTime.timeZone, disambiguation);\n  return toCalendar(fromAbsolute(ms, dateTime.timeZone), dateTime.calendar);\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {AnyDateTime, DateTimeDuration, Disambiguation} from './types';\nimport {CalendarDate, CalendarDateTime, Time, ZonedDateTime} from './CalendarDate';\nimport {epochFromDate, fromAbsolute, possibleAbsolutes, toAbsolute, toCalendar, toCalendarDateTime, toTimeZone} from './conversion';\nimport {getLocalTimeZone} from './queries';\nimport {GregorianCalendar} from './calendars/GregorianCalendar';\nimport {Mutable} from './utils';\n\nconst TIME_RE = /^(\\d{2})(?::(\\d{2}))?(?::(\\d{2}))?(\\.\\d+)?$/;\nconst DATE_RE = /^([+-]\\d{6}|\\d{4})-(\\d{2})-(\\d{2})$/;\nconst DATE_TIME_RE = /^([+-]\\d{6}|\\d{4})-(\\d{2})-(\\d{2})(?:T(\\d{2}))?(?::(\\d{2}))?(?::(\\d{2}))?(\\.\\d+)?$/;\nconst ZONED_DATE_TIME_RE = /^([+-]\\d{6}|\\d{4})-(\\d{2})-(\\d{2})(?:T(\\d{2}))?(?::(\\d{2}))?(?::(\\d{2}))?(\\.\\d+)?(?:([+-]\\d{2})(?::?(\\d{2}))?(?::?(\\d{2}))?)?\\[(.*?)\\]$/;\nconst ABSOLUTE_RE = /^([+-]\\d{6}|\\d{4})-(\\d{2})-(\\d{2})(?:T(\\d{2}))?(?::(\\d{2}))?(?::(\\d{2}))?(\\.\\d+)?(?:(?:([+-]\\d{2})(?::?(\\d{2}))?)|Z)$/;\nconst DATE_TIME_DURATION_RE =\n    /^((?<negative>-)|\\+)?P((?<years>\\d*)Y)?((?<months>\\d*)M)?((?<weeks>\\d*)W)?((?<days>\\d*)D)?((?<time>T)((?<hours>\\d*[.,]?\\d{1,9})H)?((?<minutes>\\d*[.,]?\\d{1,9})M)?((?<seconds>\\d*[.,]?\\d{1,9})S)?)?$/;\nconst requiredDurationTimeGroups = ['hours', 'minutes', 'seconds'];\nconst requiredDurationGroups = ['years', 'months', 'weeks', 'days', ...requiredDurationTimeGroups];\n\n/** Parses an ISO 8601 time string. */\nexport function parseTime(value: string): Time {\n  let m = value.match(TIME_RE);\n  if (!m) {\n    throw new Error('Invalid ISO 8601 time string: ' + value);\n  }\n\n  return new Time(\n    parseNumber(m[1], 0, 23),\n    m[2] ? parseNumber(m[2], 0, 59) : 0,\n    m[3] ? parseNumber(m[3], 0, 59) : 0,\n    m[4] ? parseNumber(m[4], 0, Infinity) * 1000 : 0\n  );\n}\n\n/** Parses an ISO 8601 date string, with no time components. */\nexport function parseDate(value: string): CalendarDate {\n  let m = value.match(DATE_RE);\n  if (!m) {\n    if (ABSOLUTE_RE.test(value)) {\n      throw new Error(`Invalid ISO 8601 date string: ${value}. Use parseAbsolute() instead.`);\n    }\n    throw new Error('Invalid ISO 8601 date string: ' + value);\n  }\n\n  let date: Mutable<CalendarDate> = new CalendarDate(\n    parseNumber(m[1], 0, 9999),\n    parseNumber(m[2], 1, 12),\n    1\n  );\n\n  date.day = parseNumber(m[3], 1, date.calendar.getDaysInMonth(date));\n  return date as CalendarDate;\n}\n\n/** Parses an ISO 8601 date and time string, with no time zone. */\nexport function parseDateTime(value: string): CalendarDateTime {\n  let m = value.match(DATE_TIME_RE);\n  if (!m) {\n    if (ABSOLUTE_RE.test(value)) {\n      throw new Error(`Invalid ISO 8601 date time string: ${value}. Use parseAbsolute() instead.`);\n    }\n    throw new Error('Invalid ISO 8601 date time string: ' + value);\n  }\n\n  let year = parseNumber(m[1], -9999, 9999);\n  let era = year < 1 ? 'BC' : 'AD';\n\n  let date: Mutable<CalendarDateTime> = new CalendarDateTime(\n    era,\n    year < 1 ? -year + 1 : year,\n    parseNumber(m[2], 1, 12),\n    1,\n    m[4] ? parseNumber(m[4], 0, 23) : 0,\n    m[5] ? parseNumber(m[5], 0, 59) : 0,\n    m[6] ? parseNumber(m[6], 0, 59) : 0,\n    m[7] ? parseNumber(m[7], 0, Infinity) * 1000 : 0\n  );\n\n  date.day = parseNumber(m[3], 0, date.calendar.getDaysInMonth(date));\n  return date as CalendarDateTime;\n}\n\n/**\n * Parses an ISO 8601 date and time string with a time zone extension and optional UTC offset\n * (e.g. \"2021-11-07T00:45[America/Los_Angeles]\" or \"2021-11-07T00:45-07:00[America/Los_Angeles]\").\n * Ambiguous times due to daylight saving time transitions are resolved according to the `disambiguation`\n * parameter.\n */\nexport function parseZonedDateTime(value: string, disambiguation?: Disambiguation): ZonedDateTime {\n  let m = value.match(ZONED_DATE_TIME_RE);\n  if (!m) {\n    throw new Error('Invalid ISO 8601 date time string: ' + value);\n  }\n\n  let year = parseNumber(m[1], -9999, 9999);\n  let era = year < 1 ? 'BC' : 'AD';\n\n  let date: Mutable<ZonedDateTime> = new ZonedDateTime(\n    era,\n    year < 1 ? -year + 1 : year,\n    parseNumber(m[2], 1, 12),\n    1,\n    m[11],\n    0,\n    m[4] ? parseNumber(m[4], 0, 23) : 0,\n    m[5] ? parseNumber(m[5], 0, 59) : 0,\n    m[6] ? parseNumber(m[6], 0, 59) : 0,\n    m[7] ? parseNumber(m[7], 0, Infinity) * 1000 : 0\n  );\n\n  date.day = parseNumber(m[3], 0, date.calendar.getDaysInMonth(date));\n\n  let plainDateTime = toCalendarDateTime(date as ZonedDateTime);\n\n  let ms: number;\n  if (m[8]) {\n    let hourOffset = parseNumber(m[8], -23, 23);\n    date.offset = Math.sign(hourOffset) * (Math.abs(hourOffset) * 60 * 60 * 1000 + parseNumber(m[9] ?? '0', 0, 59) * 60 * 1000 + parseNumber(m[10] ?? '0', 0, 59) * 1000);\n    ms = epochFromDate(date as ZonedDateTime) - date.offset;\n\n    // Validate offset against parsed date.\n    let absolutes = possibleAbsolutes(plainDateTime, date.timeZone);\n    if (!absolutes.includes(ms)) {\n      throw new Error(`Offset ${offsetToString(date.offset)} is invalid for ${dateTimeToString(date)} in ${date.timeZone}`);\n    }\n  } else {\n    // Convert to absolute and back to fix invalid times due to DST.\n    ms = toAbsolute(toCalendarDateTime(plainDateTime), date.timeZone, disambiguation);\n  }\n\n  return fromAbsolute(ms, date.timeZone);\n}\n\n/**\n * Parses an ISO 8601 date and time string with a UTC offset (e.g. \"2021-11-07T07:45:00Z\"\n * or \"2021-11-07T07:45:00-07:00\"). The result is converted to the provided time zone.\n */\nexport function parseAbsolute(value: string, timeZone: string): ZonedDateTime {\n  let m = value.match(ABSOLUTE_RE);\n  if (!m) {\n    throw new Error('Invalid ISO 8601 date time string: ' + value);\n  }\n\n  let year = parseNumber(m[1], -9999, 9999);\n  let era = year < 1 ? 'BC' : 'AD';\n\n  let date: Mutable<ZonedDateTime> = new ZonedDateTime(\n    era,\n    year < 1 ? -year + 1 : year,\n    parseNumber(m[2], 1, 12),\n    1,\n    timeZone,\n    0,\n    m[4] ? parseNumber(m[4], 0, 23) : 0,\n    m[5] ? parseNumber(m[5], 0, 59) : 0,\n    m[6] ? parseNumber(m[6], 0, 59) : 0,\n    m[7] ? parseNumber(m[7], 0, Infinity) * 1000 : 0\n  );\n\n  date.day = parseNumber(m[3], 0, date.calendar.getDaysInMonth(date));\n\n  if (m[8]) {\n    date.offset = parseNumber(m[8], -23, 23) * 60 * 60 * 1000 + parseNumber(m[9] ?? '0', 0, 59) * 60 * 1000;\n  }\n\n  return toTimeZone(date as ZonedDateTime, timeZone);\n}\n\n/**\n * Parses an ISO 8601 date and time string with a UTC offset (e.g. \"2021-11-07T07:45:00Z\"\n * or \"2021-11-07T07:45:00-07:00\"). The result is converted to the user's local time zone.\n */\nexport function parseAbsoluteToLocal(value: string): ZonedDateTime {\n  return parseAbsolute(value, getLocalTimeZone());\n}\n\nfunction parseNumber(value: string, min: number, max: number) {\n  let val = Number(value);\n  if (val < min || val > max) {\n    throw new RangeError(`Value out of range: ${min} <= ${val} <= ${max}`);\n  }\n\n  return val;\n}\n\nexport function timeToString(time: Time): string {\n  return `${String(time.hour).padStart(2, '0')}:${String(time.minute).padStart(2, '0')}:${String(time.second).padStart(2, '0')}${time.millisecond ? String(time.millisecond / 1000).slice(1) : ''}`;\n}\n\nexport function dateToString(date: CalendarDate): string {\n  let gregorianDate = toCalendar(date, new GregorianCalendar());\n  let year: string;\n  if (gregorianDate.era === 'BC') {\n    year = gregorianDate.year === 1\n      ? '0000'\n      : '-' + String(Math.abs(1 - gregorianDate.year)).padStart(6, '00');\n  } else {\n    year = String(gregorianDate.year).padStart(4, '0');\n  }\n  return `${year}-${String(gregorianDate.month).padStart(2, '0')}-${String(gregorianDate.day).padStart(2, '0')}`;\n}\n\nexport function dateTimeToString(date: AnyDateTime): string {\n  // @ts-ignore\n  return `${dateToString(date)}T${timeToString(date)}`;\n}\n\nfunction offsetToString(offset: number) {\n  let sign = Math.sign(offset) < 0 ? '-' : '+';\n  offset = Math.abs(offset);\n  let offsetHours = Math.floor(offset / (60 * 60 * 1000));\n  let offsetMinutes = Math.floor((offset % (60 * 60 * 1000)) / (60 * 1000));\n  let offsetSeconds = Math.floor((offset % (60 * 60 * 1000)) % (60 * 1000) / 1000);\n  let stringOffset = `${sign}${String(offsetHours).padStart(2, '0')}:${String(offsetMinutes).padStart(2, '0')}`;\n  if (offsetSeconds !== 0) {\n    stringOffset += `:${String(offsetSeconds).padStart(2, '0')}`;\n  }\n\n  return stringOffset;\n}\n\nexport function zonedDateTimeToString(date: ZonedDateTime): string {\n  return `${dateTimeToString(date)}${offsetToString(date.offset)}[${date.timeZone}]`;\n}\n\n/**\n * Parses an ISO 8601 duration string (e.g. \"P3Y6M6W4DT12H30M5S\").\n * @param value An ISO 8601 duration string.\n * @returns A DateTimeDuration object.\n */\nexport function parseDuration(value: string): Required<DateTimeDuration> {\n  const match = value.match(DATE_TIME_DURATION_RE);\n\n  if (!match) {\n    throw new Error(`Invalid ISO 8601 Duration string: ${value}`);\n  }\n\n  const parseDurationGroup = (\n    group: string | undefined,\n    isNegative: boolean\n  ): number => {\n    if (!group) {\n      return 0;\n    }\n    try {\n      const sign = isNegative ? -1 : 1;\n      return sign * Number(group.replace(',', '.'));\n    } catch {\n      throw new Error(`Invalid ISO 8601 Duration string: ${value}`);\n    }\n  };\n\n  const isNegative = !!match.groups?.negative;\n\n  const hasRequiredGroups = requiredDurationGroups.some(group => match.groups?.[group]);\n\n  if (!hasRequiredGroups) {\n    throw new Error(`Invalid ISO 8601 Duration string: ${value}`);\n  }\n\n  const durationStringIncludesTime = match.groups?.time;\n\n  if (durationStringIncludesTime) {\n    const hasRequiredDurationTimeGroups = requiredDurationTimeGroups.some(group => match.groups?.[group]);\n    if (!hasRequiredDurationTimeGroups) {\n      throw new Error(`Invalid ISO 8601 Duration string: ${value}`);\n    }\n  }\n\n  const duration: Mutable<DateTimeDuration> = {\n    years: parseDurationGroup(match.groups?.years, isNegative),\n    months: parseDurationGroup(match.groups?.months, isNegative),\n    weeks: parseDurationGroup(match.groups?.weeks, isNegative),\n    days: parseDurationGroup(match.groups?.days, isNegative),\n    hours: parseDurationGroup(match.groups?.hours, isNegative),\n    minutes: parseDurationGroup(match.groups?.minutes, isNegative),\n    seconds: parseDurationGroup(match.groups?.seconds, isNegative)\n  };\n\n  if (duration.hours !== undefined && ((duration.hours % 1) !== 0) && (duration.minutes || duration.seconds)) {\n    throw new Error(`Invalid ISO 8601 Duration string: ${value} - only the smallest unit can be fractional`);\n  }\n\n  if (duration.minutes !== undefined && ((duration.minutes % 1) !== 0) && duration.seconds) {\n    throw new Error(`Invalid ISO 8601 Duration string: ${value} - only the smallest unit can be fractional`);\n  }\n\n  return duration as Required<DateTimeDuration>;\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {add, addTime, addZoned, constrain, constrainTime, cycleDate, cycleTime, cycleZoned, set, setTime, setZoned, subtract, subtractTime, subtractZoned} from './manipulation';\nimport {AnyCalendarDate, AnyTime, Calendar, CycleOptions, CycleTimeOptions, DateDuration, DateField, DateFields, DateTimeDuration, Disambiguation, TimeDuration, TimeField, TimeFields} from './types';\nimport {compareDate, compareTime} from './queries';\nimport {dateTimeToString, dateToString, timeToString, zonedDateTimeToString} from './string';\nimport {GregorianCalendar} from './calendars/GregorianCalendar';\nimport {toCalendarDateTime, toDate, toZoned, zonedToDate} from './conversion';\n\nfunction shiftArgs(args: any[]) {\n  let calendar: Calendar = typeof args[0] === 'object'\n    ? args.shift()\n    : new GregorianCalendar();\n\n  let era: string;\n  if (typeof args[0] === 'string') {\n    era = args.shift();\n  } else {\n    let eras = calendar.getEras();\n    era = eras[eras.length - 1];\n  }\n\n  let year = args.shift();\n  let month = args.shift();\n  let day = args.shift();\n\n  return [calendar, era, year, month, day];\n}\n\n/** A CalendarDate represents a date without any time components in a specific calendar system. */\nexport class CalendarDate {\n  // This prevents TypeScript from allowing other types with the same fields to match.\n  // i.e. a ZonedDateTime should not be be passable to a parameter that expects CalendarDate.\n  // If that behavior is desired, use the AnyCalendarDate interface instead.\n  // @ts-ignore\n  #type;\n  /** The calendar system associated with this date, e.g. Gregorian. */\n  public readonly calendar: Calendar;\n  /** The calendar era for this date, e.g. \"BC\" or \"AD\". */\n  public readonly era: string;\n  /** The year of this date within the era. */\n  public readonly year: number;\n  /**\n   * The month number within the year. Note that some calendar systems such as Hebrew\n   * may have a variable number of months per year. Therefore, month numbers may not\n   * always correspond to the same month names in different years.\n   */\n  public readonly month: number;\n  /** The day number within the month. */\n  public readonly day: number;\n\n  constructor(year: number, month: number, day: number);\n  constructor(era: string, year: number, month: number, day: number);\n  constructor(calendar: Calendar, year: number, month: number, day: number);\n  constructor(calendar: Calendar, era: string, year: number, month: number, day: number);\n  constructor(...args: any[]) {\n    let [calendar, era, year, month, day] = shiftArgs(args);\n    this.calendar = calendar;\n    this.era = era;\n    this.year = year;\n    this.month = month;\n    this.day = day;\n\n    constrain(this);\n  }\n\n  /** Returns a copy of this date. */\n  copy(): CalendarDate {\n    if (this.era) {\n      return new CalendarDate(this.calendar, this.era, this.year, this.month, this.day);\n    } else {\n      return new CalendarDate(this.calendar, this.year, this.month, this.day);\n    }\n  }\n\n  /** Returns a new `CalendarDate` with the given duration added to it. */\n  add(duration: DateDuration): CalendarDate {\n    return add(this, duration);\n  }\n\n  /** Returns a new `CalendarDate` with the given duration subtracted from it. */\n  subtract(duration: DateDuration): CalendarDate {\n    return subtract(this, duration);\n  }\n\n  /** Returns a new `CalendarDate` with the given fields set to the provided values. Other fields will be constrained accordingly. */\n  set(fields: DateFields): CalendarDate {\n    return set(this, fields);\n  }\n\n  /**\n   * Returns a new `CalendarDate` with the given field adjusted by a specified amount.\n   * When the resulting value reaches the limits of the field, it wraps around.\n   */\n  cycle(field: DateField, amount: number, options?: CycleOptions): CalendarDate {\n    return cycleDate(this, field, amount, options);\n  }\n\n  /** Converts the date to a native JavaScript Date object, with the time set to midnight in the given time zone. */\n  toDate(timeZone: string): Date {\n    return toDate(this, timeZone);\n  }\n\n  /** Converts the date to an ISO 8601 formatted string. */\n  toString(): string {\n    return dateToString(this);\n  }\n\n  /** Compares this date with another. A negative result indicates that this date is before the given one, and a positive date indicates that it is after. */\n  compare(b: AnyCalendarDate): number {\n    return compareDate(this, b);\n  }\n}\n\n/** A Time represents a clock time without any date components. */\nexport class Time {\n  // This prevents TypeScript from allowing other types with the same fields to match.\n  // @ts-ignore\n  #type;\n  /** The hour, numbered from 0 to 23. */\n  public readonly hour: number;\n  /** The minute in the hour. */\n  public readonly minute: number;\n  /** The second in the minute. */\n  public readonly second: number;\n  /** The millisecond in the second. */\n  public readonly millisecond: number;\n\n  constructor(\n    hour: number = 0,\n    minute: number = 0,\n    second: number = 0,\n    millisecond: number = 0\n  ) {\n    this.hour = hour;\n    this.minute = minute;\n    this.second = second;\n    this.millisecond = millisecond;\n    constrainTime(this);\n  }\n\n  /** Returns a copy of this time. */\n  copy(): Time {\n    return new Time(this.hour, this.minute, this.second, this.millisecond);\n  }\n\n  /** Returns a new `Time` with the given duration added to it. */\n  add(duration: TimeDuration): Time {\n    return addTime(this, duration);\n  }\n\n  /** Returns a new `Time` with the given duration subtracted from it. */\n  subtract(duration: TimeDuration): Time {\n    return subtractTime(this, duration);\n  }\n\n  /** Returns a new `Time` with the given fields set to the provided values. Other fields will be constrained accordingly. */\n  set(fields: TimeFields): Time {\n    return setTime(this, fields);\n  }\n\n  /**\n   * Returns a new `Time` with the given field adjusted by a specified amount.\n   * When the resulting value reaches the limits of the field, it wraps around.\n   */\n  cycle(field: TimeField, amount: number, options?: CycleTimeOptions): Time {\n    return cycleTime(this, field, amount, options);\n  }\n\n  /** Converts the time to an ISO 8601 formatted string. */\n  toString(): string {\n    return timeToString(this);\n  }\n\n  /** Compares this time with another. A negative result indicates that this time is before the given one, and a positive time indicates that it is after. */\n  compare(b: AnyTime): number {\n    return compareTime(this, b);\n  }\n}\n\n/** A CalendarDateTime represents a date and time without a time zone, in a specific calendar system. */\nexport class CalendarDateTime {\n  // This prevents TypeScript from allowing other types with the same fields to match.\n  // @ts-ignore\n  #type;\n  /** The calendar system associated with this date, e.g. Gregorian. */\n  public readonly calendar: Calendar;\n  /** The calendar era for this date, e.g. \"BC\" or \"AD\". */\n  public readonly era: string;\n  /** The year of this date within the era. */\n  public readonly year: number;\n  /**\n   * The month number within the year. Note that some calendar systems such as Hebrew\n   * may have a variable number of months per year. Therefore, month numbers may not\n   * always correspond to the same month names in different years.\n   */\n  public readonly month: number;\n  /** The day number within the month. */\n  public readonly day: number;\n  /** The hour in the day, numbered from 0 to 23. */\n  public readonly hour: number;\n  /** The minute in the hour. */\n  public readonly minute: number;\n  /** The second in the minute. */\n  public readonly second: number;\n  /** The millisecond in the second. */\n  public readonly millisecond: number;\n\n  constructor(year: number, month: number, day: number, hour?: number, minute?: number, second?: number, millisecond?: number);\n  constructor(era: string, year: number, month: number, day: number, hour?: number, minute?: number, second?: number, millisecond?: number);\n  constructor(calendar: Calendar, year: number, month: number, day: number, hour?: number, minute?: number, second?: number, millisecond?: number);\n  constructor(calendar: Calendar, era: string, year: number, month: number, day: number, hour?: number, minute?: number, second?: number, millisecond?: number);\n  constructor(...args: any[]) {\n    let [calendar, era, year, month, day] = shiftArgs(args);\n    this.calendar = calendar;\n    this.era = era;\n    this.year = year;\n    this.month = month;\n    this.day = day;\n    this.hour = args.shift() || 0;\n    this.minute = args.shift() || 0;\n    this.second = args.shift() || 0;\n    this.millisecond = args.shift() || 0;\n\n    constrain(this);\n  }\n\n  /** Returns a copy of this date. */\n  copy(): CalendarDateTime {\n    if (this.era) {\n      return new CalendarDateTime(this.calendar, this.era, this.year, this.month, this.day, this.hour, this.minute, this.second, this.millisecond);\n    } else {\n      return new CalendarDateTime(this.calendar, this.year, this.month, this.day, this.hour, this.minute, this.second, this.millisecond);\n    }\n  }\n\n  /** Returns a new `CalendarDateTime` with the given duration added to it. */\n  add(duration: DateTimeDuration): CalendarDateTime {\n    return add(this, duration);\n  }\n\n  /** Returns a new `CalendarDateTime` with the given duration subtracted from it. */\n  subtract(duration: DateTimeDuration): CalendarDateTime {\n    return subtract(this, duration);\n  }\n\n  /** Returns a new `CalendarDateTime` with the given fields set to the provided values. Other fields will be constrained accordingly. */\n  set(fields: DateFields & TimeFields): CalendarDateTime {\n    return set(setTime(this, fields), fields);\n  }\n\n  /**\n   * Returns a new `CalendarDateTime` with the given field adjusted by a specified amount.\n   * When the resulting value reaches the limits of the field, it wraps around.\n   */\n  cycle(field: DateField | TimeField, amount: number, options?: CycleTimeOptions): CalendarDateTime {\n    switch (field) {\n      case 'era':\n      case 'year':\n      case 'month':\n      case 'day':\n        return cycleDate(this, field, amount, options);\n      default:\n        return cycleTime(this, field, amount, options);\n    }\n  }\n\n  /** Converts the date to a native JavaScript Date object in the given time zone. */\n  toDate(timeZone: string, disambiguation?: Disambiguation): Date {\n    return toDate(this, timeZone, disambiguation);\n  }\n\n  /** Converts the date to an ISO 8601 formatted string. */\n  toString(): string {\n    return dateTimeToString(this);\n  }\n\n  /** Compares this date with another. A negative result indicates that this date is before the given one, and a positive date indicates that it is after. */\n  compare(b: CalendarDate | CalendarDateTime | ZonedDateTime): number {\n    let res = compareDate(this, b);\n    if (res === 0) {\n      return compareTime(this, toCalendarDateTime(b));\n    }\n\n    return res;\n  }\n}\n\n/** A ZonedDateTime represents a date and time in a specific time zone and calendar system. */\nexport class ZonedDateTime {\n  // This prevents TypeScript from allowing other types with the same fields to match.\n  // @ts-ignore\n  #type;\n  /** The calendar system associated with this date, e.g. Gregorian. */\n  public readonly calendar: Calendar;\n  /** The calendar era for this date, e.g. \"BC\" or \"AD\". */\n  public readonly era: string;\n  /** The year of this date within the era. */\n  public readonly year: number;\n  /**\n   * The month number within the year. Note that some calendar systems such as Hebrew\n   * may have a variable number of months per year. Therefore, month numbers may not\n   * always correspond to the same month names in different years.\n   */\n  public readonly month: number;\n  /** The day number within the month. */\n  public readonly day: number;\n  /** The hour in the day, numbered from 0 to 23. */\n  public readonly hour: number;\n  /** The minute in the hour. */\n  public readonly minute: number;\n  /** The second in the minute. */\n  public readonly second: number;\n  /** The millisecond in the second. */\n  public readonly millisecond: number;\n  /** The IANA time zone identifier that this date and time is represented in. */\n  public readonly timeZone: string;\n  /** The UTC offset for this time, in milliseconds. */\n  public readonly offset: number;\n\n  constructor(year: number, month: number, day: number, timeZone: string, offset: number, hour?: number, minute?: number, second?: number, millisecond?: number);\n  constructor(era: string, year: number, month: number, day: number, timeZone: string, offset: number, hour?: number, minute?: number, second?: number, millisecond?: number);\n  constructor(calendar: Calendar, year: number, month: number, day: number, timeZone: string, offset: number, hour?: number, minute?: number, second?: number, millisecond?: number);\n  constructor(calendar: Calendar, era: string, year: number, month: number, day: number, timeZone: string, offset: number, hour?: number, minute?: number, second?: number, millisecond?: number);\n  constructor(...args: any[]) {\n    let [calendar, era, year, month, day] = shiftArgs(args);\n    let timeZone = args.shift();\n    let offset = args.shift();\n    this.calendar = calendar;\n    this.era = era;\n    this.year = year;\n    this.month = month;\n    this.day = day;\n    this.timeZone = timeZone;\n    this.offset = offset;\n    this.hour = args.shift() || 0;\n    this.minute = args.shift() || 0;\n    this.second = args.shift() || 0;\n    this.millisecond = args.shift() || 0;\n\n    constrain(this);\n  }\n\n  /** Returns a copy of this date. */\n  copy(): ZonedDateTime {\n    if (this.era) {\n      return new ZonedDateTime(this.calendar, this.era, this.year, this.month, this.day, this.timeZone, this.offset, this.hour, this.minute, this.second, this.millisecond);\n    } else {\n      return new ZonedDateTime(this.calendar, this.year, this.month, this.day, this.timeZone, this.offset, this.hour, this.minute, this.second, this.millisecond);\n    }\n  }\n\n  /** Returns a new `ZonedDateTime` with the given duration added to it. */\n  add(duration: DateTimeDuration): ZonedDateTime {\n    return addZoned(this, duration);\n  }\n\n  /** Returns a new `ZonedDateTime` with the given duration subtracted from it. */\n  subtract(duration: DateTimeDuration): ZonedDateTime {\n    return subtractZoned(this, duration);\n  }\n\n  /** Returns a new `ZonedDateTime` with the given fields set to the provided values. Other fields will be constrained accordingly. */\n  set(fields: DateFields & TimeFields, disambiguation?: Disambiguation): ZonedDateTime {\n    return setZoned(this, fields, disambiguation);\n  }\n\n  /**\n   * Returns a new `ZonedDateTime` with the given field adjusted by a specified amount.\n   * When the resulting value reaches the limits of the field, it wraps around.\n   */\n  cycle(field: DateField | TimeField, amount: number, options?: CycleTimeOptions): ZonedDateTime {\n    return cycleZoned(this, field, amount, options);\n  }\n\n  /** Converts the date to a native JavaScript Date object. */\n  toDate(): Date {\n    return zonedToDate(this);\n  }\n\n   /** Converts the date to an ISO 8601 formatted string, including the UTC offset and time zone identifier. */\n  toString(): string {\n    return zonedDateTimeToString(this);\n  }\n\n   /** Converts the date to an ISO 8601 formatted string in UTC. */\n  toAbsoluteString(): string {\n    return this.toDate().toISOString();\n  }\n\n  /** Compares this date with another. A negative result indicates that this date is before the given one, and a positive date indicates that it is after. */\n  compare(b: CalendarDate | CalendarDateTime | ZonedDateTime): number {\n    // TODO: Is this a bad idea??\n    return this.toDate().getTime() - toZoned(b, this.timeZone).toDate().getTime();\n  }\n}\n","import {\n  parseDate,\n  type DateValue,\n  type CalendarDate,\n  type DayOfWeek,\n} from '@internationalized/date';\nimport React, { type ReactNode, useCallback, useRef, useMemo } from 'react';\nimport {\n  DatePicker as DatePickerRAC,\n  Group as GroupRAC,\n  DateInput as DateInputRAC,\n  DateSegment as DateSegmentRAC,\n  Button as ButtonRAC,\n  Popover as PopoverRAC,\n  Dialog as DialogRAC,\n  Calendar as CalendarRAC,\n  CalendarGrid as CalendarGridRAC,\n  CalendarCell as CalendarCellRAC,\n  Heading as HeadingRAC,\n} from 'react-aria-components';\n\nimport { useConfig } from '../../contexts/config-context';\nimport { useFocusFieldEvent } from '../../contexts/events-context';\nimport { useFieldAttributes } from '../../contexts/field-attributes-context';\nimport { useFieldPropsV2 } from '../../contexts/field-props-context';\nimport { getFirstDayOfTheWeek } from '../../date-localization/get-first-day-of-the-week';\nimport {\n  DEFAULT_AVAILABILITY,\n  isDateAvailable,\n} from '../../field-settings/settings-shared/availability/availability';\nimport { findChildOfType, applyInternalProps } from '../../services/find-child';\nimport { Description } from '../field-description/field-description-headless';\nimport { Error } from '../field-error/field-error-headless';\nimport { Label } from '../field-label/field-label-headless';\n\nimport { type DatePickerFieldProps } from './date-picker-field-props';\n\nexport type DatePickerProps = {\n  children: ReactNode;\n};\n\nexport const DatePicker = ({ children }: DatePickerProps) => {\n  const {\n    id,\n    value,\n    onChange,\n    disabled,\n    required,\n    onBlur,\n    onFocus,\n    FieldLayout,\n    hasError,\n    readOnly,\n  } = useFieldPropsV2<DatePickerFieldProps>();\n\n  const handleChange = useCallback(\n    (dateValue: DateValue | null) => {\n      const stringValue = dateValueToString(dateValue);\n      onChange(stringValue);\n    },\n    [onChange],\n  );\n\n  const labelElement = findChildOfType(children, DatePicker.Label);\n  const controlElement = findChildOfType(children, DatePicker.Control);\n  const calendarElement = findChildOfType(children, DatePicker.Calendar);\n  const descriptionElement = findChildOfType(children, DatePicker.Description);\n  const errorElement = findChildOfType(children, DatePicker.Error);\n\n  const dateValue = stringToDateValue(value);\n\n  return (\n    <FieldLayout\n      fieldId={id}\n      renderLabel={() => labelElement}\n      renderInput={() => (\n        <DatePickerRAC\n          value={dateValue}\n          onChange={handleChange}\n          isDisabled={disabled}\n          isInvalid={hasError}\n          isReadOnly={readOnly}\n          isRequired={required}\n          onBlur={onBlur}\n          onFocus={onFocus}\n        >\n          {controlElement}\n          {calendarElement}\n        </DatePickerRAC>\n      )}\n      renderDescription={() => (\n        <>\n          {descriptionElement}\n          {errorElement}\n        </>\n      )}\n    />\n  );\n};\n\nexport type ControlProps = {\n  children: ReactNode;\n  className?: string;\n};\n\nconst Control = ({ children, className }: ControlProps) => {\n  const { inputId, ariaDescribedBy } = useFieldAttributes();\n  const { hasError } = useFieldPropsV2<DatePickerFieldProps>();\n\n  return (\n    <GroupRAC\n      id={inputId}\n      aria-describedby={ariaDescribedBy}\n      className={className}\n      data-invalid={hasError}\n    >\n      {children}\n    </GroupRAC>\n  );\n};\n\nexport type InputProps = {\n  className?: string;\n};\n\nconst Input = ({ className }: InputProps) => {\n  const { id } = useFieldPropsV2<DatePickerFieldProps>();\n\n  const firstSegmentRef = useRef<HTMLElement | null>(null);\n  const hasAssignedRef = useRef(false);\n\n  useFocusFieldEvent(() => {\n    firstSegmentRef.current?.focus();\n  }, id);\n\n  return (\n    <DateInputRAC className={className}>\n      {(segment) => (\n        <DateSegmentRAC\n          segment={segment}\n          ref={(node) => {\n            if (!node && hasAssignedRef.current) {\n              firstSegmentRef.current = null;\n              hasAssignedRef.current = false;\n              return;\n            }\n\n            if (node && !hasAssignedRef.current) {\n              firstSegmentRef.current = node;\n              hasAssignedRef.current = true;\n              return;\n            }\n          }}\n        />\n      )}\n    </DateInputRAC>\n  );\n};\n\nexport type TriggerProps = {\n  className?: string;\n};\n\nconst Trigger = ({ className }: TriggerProps) => {\n  return <ButtonRAC className={className} />;\n};\n\nexport type CalendarProps = {\n  children: ReactNode;\n  className?: string;\n};\n\nconst Calendar = ({ children, className }: CalendarProps) => {\n  const { regionalFormat } = useConfig();\n  const { availability } = useFieldPropsV2<DatePickerFieldProps>();\n\n  const firstDayOfWeek = useMemo(\n    () => getFirstDayOfTheWeek(regionalFormat),\n    [regionalFormat],\n  );\n\n  const isDateUnavailable = useMemo(() => {\n    return (date: DateValue) => {\n      const jsDate = date.toDate('UTC');\n      return !isDateAvailable(jsDate, availability || DEFAULT_AVAILABILITY);\n    };\n  }, [availability]);\n\n  const dayElement = findChildOfType(children, Calendar.Day) ?? (\n    <Calendar.Day />\n  );\n\n  return (\n    <PopoverRAC className={className}>\n      <DialogRAC>\n        <CalendarRAC\n          firstDayOfWeek={convertFirstDayOfWeek(firstDayOfWeek)}\n          isDateUnavailable={isDateUnavailable}\n        >\n          <header>\n            <ButtonRAC slot=\"previous\">‹</ButtonRAC>\n            <HeadingRAC />\n            <ButtonRAC slot=\"next\">›</ButtonRAC>\n          </header>\n          <CalendarGridRAC>\n            {(date) =>\n              applyInternalProps<DayInternalProps>(dayElement, {\n                date,\n              })!\n            }\n          </CalendarGridRAC>\n        </CalendarRAC>\n      </DialogRAC>\n    </PopoverRAC>\n  );\n};\n\nexport type DayProps = {\n  className?: string;\n};\n\ntype DayInternalProps = {\n  date: CalendarDate;\n};\n\nconst Day = ({ className, ...internal }: DayProps) => {\n  const { date } = internal as DayInternalProps;\n  return <CalendarCellRAC className={className} date={date} />;\n};\n\nCalendar.Day = Day;\n\nDatePicker.Label = Label;\nDatePicker.Control = Control;\nDatePicker.Input = Input;\nDatePicker.Trigger = Trigger;\nDatePicker.Calendar = Calendar;\nDatePicker.Description = Description;\nDatePicker.Error = Error;\n\nfunction stringToDateValue(value: string | null | undefined) {\n  if (!value) {\n    return null;\n  }\n  try {\n    return parseDate(value);\n  } catch {\n    return null;\n  }\n}\n\nfunction dateValueToString(date: DateValue | null) {\n  if (!date) {\n    return null;\n  }\n  const year = String(date.year).padStart(4, '0');\n  const month = String(date.month).padStart(2, '0');\n  const day = String(date.day).padStart(2, '0');\n\n  return `${year}-${month}-${day}`;\n}\n\nfunction convertFirstDayOfWeek(firstDayOfWeek: number): DayOfWeek {\n  // getFirstDayOfTheWeek returns 0-6, where 0 = Sunday\n  // React Aria expects 'sun' | 'mon' | 'tue' | 'wed' | 'thu' | 'fri' | 'sat'\n  const days: DayOfWeek[] = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'];\n  return days[firstDayOfWeek] || 'mon';\n}\n","import { type Time as TimeValue, parseTime } from '@internationalized/date';\nimport React, { type ReactNode, useCallback, useMemo, useRef } from 'react';\nimport {\n  Select as SelectRAC,\n  Button as ButtonRAC,\n  SelectValue as SelectValueRAC,\n  Popover as PopoverRAC,\n  ListBox as ListBoxRAC,\n  ListBoxItem as ListBoxItemRAC,\n  TextField as TextFieldRAC,\n  Input as InputRAC,\n  TimeField as TimeFieldRAC,\n  DateInput as DateInputRAC,\n  DateSegment as DateSegmentRAC,\n  type DateSegmentProps,\n} from 'react-aria-components';\n\nimport { useConfig } from '../../contexts/config-context';\nimport { useFocusFieldEvent } from '../../contexts/events-context';\nimport { useFieldAttributes } from '../../contexts/field-attributes-context';\nimport { useFieldPropsV2 } from '../../contexts/field-props-context';\nimport { useTranslation } from '../../contexts/translation-context';\nimport { findChildOfType, applyInternalProps } from '../../services/find-child';\nimport {\n  getDateFormatParts,\n  isSupportedDatePart,\n  SupportedDateParts,\n} from '../../utils/date-format-parts';\nimport { deserializeDate, serializeDate } from '../date-picker/helpers';\nimport { getMonthList } from '../date-picker/month-select/helpers';\nimport { Description } from '../field-description/field-description-headless';\nimport { Error } from '../field-error/field-error-headless';\nimport {\n  Label,\n  type LabelInternalProps,\n} from '../field-label/field-label-headless';\nimport { FieldsetHeadless } from '../fieldset/fieldset-headless';\n\nimport { type DateTimeFieldProps } from './date-time-field-props';\nimport {\n  parseDateTimeValue,\n  formatDateTimeValue,\n  getDateTimePartsErrors,\n} from './date-time-field-utils';\n\ntype DateSegment = DateSegmentProps['segment'];\n\nexport type DateTimeInputProps = {\n  children: ReactNode;\n};\n\nexport const DateTimeInput = ({ children }: DateTimeInputProps) => {\n  const { id, required, onBlur, onFocus, FieldLayout } =\n    useFieldPropsV2<DateTimeFieldProps>();\n\n  const { inputId, labelId, ariaDescribedBy } = useFieldAttributes();\n  const { regionalFormat } = useConfig();\n\n  const dateFormat = useMemo(\n    () =>\n      getDateFormatParts(regionalFormat)\n        .filter(isSupportedDatePart)\n        .map((part) => part.toUpperCase() as SupportedDateParts),\n    [regionalFormat],\n  );\n\n  const labelElement = findChildOfType(children, DateTimeInput.Label);\n  const descriptionElement = findChildOfType(\n    children,\n    DateTimeInput.Description,\n  );\n  const errorElement = findChildOfType(children, DateTimeInput.Error);\n\n  const dateElementsByPart = {\n    [SupportedDateParts.MONTH]: findChildOfType(children, DateTimeInput.Month),\n    [SupportedDateParts.DAY]: findChildOfType(children, DateTimeInput.Day),\n    [SupportedDateParts.YEAR]: findChildOfType(children, DateTimeInput.Year),\n  };\n\n  const timeElement = findChildOfType(children, DateTimeInput.Time);\n\n  return (\n    <FieldLayout\n      fieldId={id}\n      renderLabel={() =>\n        applyInternalProps<LabelInternalProps>(labelElement, { as: 'div' })\n      }\n      renderInput={() => (\n        <FieldsetHeadless\n          id={inputId}\n          ariaLabelledBy={labelId}\n          ariaDescribedBy={ariaDescribedBy}\n          required={required}\n          onBlur={onBlur}\n          onFocus={onFocus}\n        >\n          {dateElementsByPart[dateFormat[0]]}\n          {dateElementsByPart[dateFormat[1]]}\n          {dateElementsByPart[dateFormat[2]]}\n          {timeElement}\n        </FieldsetHeadless>\n      )}\n      renderDescription={() => (\n        <>\n          {descriptionElement}\n          {errorElement}\n        </>\n      )}\n    />\n  );\n};\n\ntype MonthProps = {\n  children: ReactNode;\n  className?: string;\n};\n\nconst Month = ({ children, className }: MonthProps) => {\n  const { id, disabled, showDateLabels } =\n    useFieldPropsV2<DateTimeFieldProps>();\n  const { inputId } = useDateTimeFieldAttributes(SupportedDateParts.MONTH);\n  const { partValue, partError, onPartChange, isFirstPart } = useFieldPart(\n    SupportedDateParts.MONTH,\n  );\n  const buttonRef = useRef<HTMLButtonElement>(null);\n\n  const handleMonthChange = useCallback(\n    (selectedValue: React.Key | null) => {\n      onPartChange(typeof selectedValue === 'string' ? selectedValue : '');\n    },\n    [onPartChange],\n  );\n\n  useFocusFieldEvent(() => {\n    if (isFirstPart) {\n      buttonRef.current?.focus();\n    }\n  }, id);\n\n  const labelElement = findChildOfType(children, Month.Label);\n  const optionsElement = findChildOfType(children, Month.Options);\n\n  return (\n    <div className={className} data-date-field={true}>\n      {showDateLabels ? labelElement : null}\n      <SelectRAC\n        value={partValue || null}\n        onChange={handleMonthChange}\n        isDisabled={disabled}\n        isInvalid={partError}\n      >\n        <ButtonRAC\n          ref={buttonRef}\n          id={inputId}\n          data-hook={SupportedDateParts.MONTH}\n          data-invalid={partError}\n        >\n          <SelectValueRAC />\n        </ButtonRAC>\n        {optionsElement}\n      </SelectRAC>\n    </div>\n  );\n};\n\ntype MonthLabelProps = {\n  className?: string;\n};\n\nconst MonthLabel = ({ className }: MonthLabelProps) => {\n  return (\n    <DateTimeLabel datePart={SupportedDateParts.MONTH} className={className} />\n  );\n};\n\ntype MonthOptionsProps = {\n  children: ReactNode;\n  className?: string;\n};\n\nconst MonthOptions = ({ children, className }: MonthOptionsProps) => {\n  const { language } = useConfig();\n\n  const months = useMemo(() => getMonthList(language), [language]);\n\n  const optionElement = findChildOfType(children, MonthOptions.Option) ?? (\n    <MonthOptions.Option />\n  );\n\n  return (\n    <PopoverRAC className={className}>\n      <ListBoxRAC>\n        {months.map((month, index) =>\n          applyInternalProps<MonthOptionInternalProps>(optionElement, {\n            key: String(index + 1),\n            value: String(index + 1),\n            label: month,\n          }),\n        )}\n      </ListBoxRAC>\n    </PopoverRAC>\n  );\n};\n\ntype MonthOptionProps = {\n  className?: string;\n};\n\ntype MonthOptionInternalProps = {\n  value: string;\n  label: string;\n};\n\nconst MonthOption = ({ className, ...internal }: MonthOptionProps) => {\n  const { value, label } = internal as MonthOptionInternalProps;\n  return (\n    <ListBoxItemRAC className={className} id={value} textValue={label}>\n      {label}\n    </ListBoxItemRAC>\n  );\n};\n\nMonth.Label = MonthLabel;\nMonth.Options = MonthOptions;\nMonthOptions.Option = MonthOption;\n\ntype DayProps = {\n  children: ReactNode;\n  className?: string;\n};\n\nconst Day = ({ children, className }: DayProps) => {\n  const { disabled, showDateLabels } = useFieldPropsV2<DateTimeFieldProps>();\n  const { partValue, partError, onPartChange } = useFieldPart(\n    SupportedDateParts.DAY,\n  );\n\n  const labelElement = findChildOfType(children, Day.Label);\n  const inputElement = findChildOfType(children, Day.Input);\n\n  return (\n    <div className={className} data-date-field={true}>\n      {showDateLabels && labelElement}\n      <TextFieldRAC\n        value={partValue}\n        onChange={onPartChange}\n        isDisabled={disabled}\n        isInvalid={partError}\n      >\n        {inputElement}\n      </TextFieldRAC>\n    </div>\n  );\n};\n\ntype DayLabelProps = {\n  className?: string;\n};\n\nconst DayLabel = ({ className }: DayLabelProps) => {\n  return (\n    <DateTimeLabel datePart={SupportedDateParts.DAY} className={className} />\n  );\n};\n\ntype DayInputProps = {\n  className?: string;\n};\n\nconst DayInput = ({ className }: DayInputProps) => {\n  const { id, hidePlaceholder } = useFieldPropsV2<DateTimeFieldProps>();\n  const { inputId } = useDateTimeFieldAttributes(SupportedDateParts.DAY);\n  const { isFirstPart } = useFieldPart(SupportedDateParts.DAY);\n  const { t } = useTranslation();\n  const inputRef = useRef<HTMLInputElement>(null);\n\n  const placeholder = hidePlaceholder\n    ? undefined\n    : t('field.date.placeholder.day');\n\n  useFocusFieldEvent(() => {\n    if (isFirstPart) {\n      inputRef.current?.focus();\n    }\n  }, id);\n\n  return (\n    <InputRAC\n      ref={inputRef}\n      id={inputId}\n      className={className}\n      placeholder={placeholder}\n      maxLength={2}\n      inputMode=\"numeric\"\n      data-hook={SupportedDateParts.DAY}\n    />\n  );\n};\n\nDay.Label = DayLabel;\nDay.Input = DayInput;\n\ntype YearProps = {\n  children: ReactNode;\n  className?: string;\n};\n\nconst Year = ({ children, className }: YearProps) => {\n  const { disabled, showDateLabels } = useFieldPropsV2<DateTimeFieldProps>();\n  const { partValue, partError, onPartChange } = useFieldPart(\n    SupportedDateParts.YEAR,\n  );\n\n  const labelElement = findChildOfType(children, Year.Label);\n  const inputElement = findChildOfType(children, Year.Input);\n\n  return (\n    <div className={className} data-date-field={true}>\n      {showDateLabels && labelElement}\n      <TextFieldRAC\n        value={partValue}\n        onChange={onPartChange}\n        isDisabled={disabled}\n        isInvalid={partError}\n      >\n        {inputElement}\n      </TextFieldRAC>\n    </div>\n  );\n};\n\ntype YearLabelProps = {\n  className?: string;\n};\n\nconst YearLabel = ({ className }: YearLabelProps) => {\n  return (\n    <DateTimeLabel datePart={SupportedDateParts.YEAR} className={className} />\n  );\n};\n\ntype YearInputProps = {\n  className?: string;\n};\n\nconst YearInput = ({ className }: YearInputProps) => {\n  const { id, hidePlaceholder } = useFieldPropsV2<DateTimeFieldProps>();\n  const { inputId } = useDateTimeFieldAttributes(SupportedDateParts.YEAR);\n  const { isFirstPart } = useFieldPart(SupportedDateParts.YEAR);\n  const { t } = useTranslation();\n  const inputRef = useRef<HTMLInputElement>(null);\n\n  const placeholder = hidePlaceholder\n    ? undefined\n    : t('field.date.placeholder.year');\n\n  useFocusFieldEvent(() => {\n    if (isFirstPart) {\n      inputRef.current?.focus();\n    }\n  }, id);\n\n  return (\n    <InputRAC\n      ref={inputRef}\n      id={inputId}\n      className={className}\n      placeholder={placeholder}\n      maxLength={4}\n      inputMode=\"numeric\"\n      data-hook={SupportedDateParts.YEAR}\n    />\n  );\n};\n\nYear.Label = YearLabel;\nYear.Input = YearInput;\n\ntype TimeProps = {\n  children: ReactNode;\n  className?: string;\n};\n\nconst Time = ({ children, className }: TimeProps) => {\n  const { disabled, use24HourFormat, showDateLabels } =\n    useFieldPropsV2<DateTimeFieldProps>();\n  const { partValue, partError, onPartChange } = useFieldPart('time');\n\n  const labelElement = findChildOfType(children, Time.Label);\n  const inputElement = findChildOfType(children, Time.Input);\n\n  return (\n    <div className={className} data-date-field={true}>\n      {showDateLabels && labelElement}\n      <TimeFieldRAC\n        value={partValue}\n        onChange={onPartChange}\n        isDisabled={disabled}\n        isInvalid={partError}\n        hourCycle={use24HourFormat ? 24 : 12}\n      >\n        {inputElement}\n      </TimeFieldRAC>\n    </div>\n  );\n};\n\ntype TimeLabelProps = {\n  className?: string;\n};\n\nconst TimeLabel = ({ className }: TimeLabelProps) => {\n  const { inputId, labelId } = useDateTimeFieldAttributes('time');\n  const { t } = useTranslation();\n\n  const label = t('field.date.label.time');\n\n  return (\n    <label id={labelId} htmlFor={inputId} className={className}>\n      {label}\n    </label>\n  );\n};\n\ntype TimeInputProps = {\n  children: ReactNode;\n  className?: string;\n};\n\nconst TimeInput = ({ children, className }: TimeInputProps) => {\n  const hourElement = findChildOfType(children, Time.Hour);\n  const minuteElement = findChildOfType(children, Time.Minute);\n  const periodElement = findChildOfType(children, Time.Period);\n\n  return (\n    <DateInputRAC className={className}>\n      {(segment) => {\n        switch (segment.type) {\n          case 'hour':\n            return (\n              applyInternalProps<HourInternalProps>(hourElement, {\n                segment,\n              }) || <></>\n            );\n          case 'minute':\n            return (\n              applyInternalProps<MinuteInternalProps>(minuteElement, {\n                segment,\n              }) || <></>\n            );\n          case 'dayPeriod':\n            return (\n              applyInternalProps<PeriodInternalProps>(periodElement, {\n                segment,\n              }) || <></>\n            );\n          case 'literal':\n            return <DateSegmentRAC segment={segment} />;\n          default:\n            return <></>;\n        }\n      }}\n    </DateInputRAC>\n  );\n};\n\ntype HourProps = {\n  className?: string;\n};\n\ntype HourInternalProps = {\n  segment: DateSegment;\n};\n\nconst Hour = ({ className, ...internal }: HourProps) => {\n  const { hidePlaceholder } = useFieldPropsV2<DateTimeFieldProps>();\n  const { segment } = internal as HourInternalProps;\n  const { t } = useTranslation();\n\n  const placeholder = hidePlaceholder\n    ? undefined\n    : t('field.date.placeholder.hour');\n\n  return (\n    <DateSegmentRAC\n      segment={segment}\n      className={className}\n      {...(placeholder && { placeholder })}\n    />\n  );\n};\n\ntype MinuteProps = {\n  className?: string;\n};\n\ntype MinuteInternalProps = {\n  segment: DateSegment;\n};\n\nconst Minute = ({ className, ...internal }: MinuteProps) => {\n  const { hidePlaceholder } = useFieldPropsV2<DateTimeFieldProps>();\n  const { segment } = internal as MinuteInternalProps;\n  const { t } = useTranslation();\n\n  const placeholder = hidePlaceholder\n    ? undefined\n    : t('field.date.placeholder.minute');\n\n  return (\n    <DateSegmentRAC\n      segment={segment}\n      className={className}\n      {...(placeholder && { placeholder })}\n    />\n  );\n};\n\ntype PeriodProps = {\n  className?: string;\n};\n\ntype PeriodInternalProps = {\n  segment: DateSegment;\n};\n\nconst Period = ({ className, ...internal }: PeriodProps) => {\n  const { hidePlaceholder } = useFieldPropsV2<DateTimeFieldProps>();\n  const { segment } = internal as PeriodInternalProps;\n  const { t } = useTranslation();\n\n  const placeholder = hidePlaceholder\n    ? undefined\n    : t('field.date.placeholder.period');\n\n  return (\n    <DateSegmentRAC\n      segment={segment}\n      className={className}\n      {...(placeholder && { placeholder })}\n    />\n  );\n};\n\nTime.Label = TimeLabel;\nTime.Input = TimeInput;\nTime.Hour = Hour;\nTime.Minute = Minute;\nTime.Period = Period;\n\nDateTimeInput.Label = Label;\nDateTimeInput.Month = Month;\nDateTimeInput.Day = Day;\nDateTimeInput.Year = Year;\nDateTimeInput.Time = Time;\nDateTimeInput.Description = Description;\nDateTimeInput.Error = Error;\n\nfunction useDateTimeFieldAttributes(datePart: SupportedDateParts | 'time') {\n  const { inputId } = useFieldAttributes();\n\n  return useMemo(() => {\n    const partName = datePart.toLowerCase();\n    return {\n      inputId: `${inputId}-${partName}-input`,\n      labelId: `${inputId}-${partName}-label`,\n    };\n  }, [inputId, datePart]);\n}\n\nfunction useFieldPart(part: 'time'): {\n  partValue: TimeValue | null;\n  partError: boolean;\n  onPartChange: (newValue: TimeValue | null) => void;\n  isFirstPart: boolean;\n};\nfunction useFieldPart(part: SupportedDateParts): {\n  partValue: string;\n  partError: boolean;\n  onPartChange: (newValue: string) => void;\n  isFirstPart: boolean;\n};\nfunction useFieldPart(part: SupportedDateParts | 'time') {\n  const {\n    value: fieldValue,\n    onChange: fieldOnChange,\n    hasError = false,\n  } = useFieldPropsV2<DateTimeFieldProps>();\n  const { regionalFormat } = useConfig();\n\n  const [dateValue, timeValue] = useMemo(\n    () => parseDateTimeValue(fieldValue ?? ''),\n    [fieldValue],\n  );\n  const errors = useMemo(\n    () => getDateTimePartsErrors(hasError, fieldValue ?? ''),\n    [fieldValue, hasError],\n  );\n\n  const dateValues = useMemo(() => deserializeDate(dateValue), [dateValue]);\n  const parsedTimeValue = useMemo(\n    () => stringToTimeValue(timeValue),\n    [timeValue],\n  );\n\n  const onTimeChange = useCallback(\n    (newValue: TimeValue | null) => {\n      const stringValue = timeValueToString(newValue);\n      const serializedValue = formatDateTimeValue(dateValue, stringValue);\n      fieldOnChange(serializedValue);\n    },\n    [fieldOnChange, dateValue],\n  );\n\n  const onPartChange = useCallback(\n    (newValue: string) => {\n      const [, currentTime] = parseDateTimeValue(fieldValue ?? '');\n      const serializedDate = serializeDate(\n        newValue,\n        part as SupportedDateParts,\n        dateValues,\n      );\n      const serializedValue = formatDateTimeValue(serializedDate, currentTime);\n      fieldOnChange(serializedValue);\n    },\n    [fieldOnChange, fieldValue, dateValues, part],\n  );\n\n  const isFirstPart = useMemo(() => {\n    if (part === 'time') {\n      return false;\n    }\n    const dateFormat = getDateFormatParts(regionalFormat)\n      .filter(isSupportedDatePart)\n      .map((p) => p.toUpperCase() as SupportedDateParts);\n    const firstPart = dateFormat[0];\n    return firstPart === part;\n  }, [regionalFormat, part]);\n\n  if (part === 'time') {\n    return {\n      partValue: parsedTimeValue,\n      partError: errors.TIME,\n      onPartChange: onTimeChange,\n      isFirstPart: false,\n    };\n  }\n\n  const partValue = dateValues[part] || '';\n\n  return {\n    partValue,\n    partError: errors[part],\n    onPartChange,\n    isFirstPart,\n  };\n}\n\ntype DateTimeLabelProps = {\n  datePart: SupportedDateParts;\n  className?: string;\n};\n\nfunction DateTimeLabel({ datePart, className }: DateTimeLabelProps) {\n  const { inputId, labelId } = useDateTimeFieldAttributes(datePart);\n  const { t } = useTranslation();\n\n  const translationKey = `field.date.label.${datePart.toLowerCase()}`;\n  const label = t(translationKey);\n\n  return (\n    <label id={labelId} htmlFor={inputId} className={className}>\n      {label}\n    </label>\n  );\n}\n\nfunction stringToTimeValue(value: string | null | undefined): TimeValue | null {\n  if (!value) {\n    return null;\n  }\n  try {\n    return parseTime(value);\n  } catch {\n    return null;\n  }\n}\n\nfunction timeValueToString(time: TimeValue | null): string | null {\n  if (!time) {\n    return null;\n  }\n  const hour = String(time.hour).padStart(2, '0');\n  const minute = String(time.minute).padStart(2, '0');\n  const second = String(time.second).padStart(2, '0');\n\n  return [hour, minute, second].join(':');\n}\n","import { type TFunction } from '@wix/ricos/dist/src/ricos-types';\n\nimport { type Currency } from '../../types';\n\nimport { localizeNumberInput } from './numeric-input-utils';\n\nexport const formatPrice = (input: string, locale?: string) => {\n  const filteredInput = input.replace(',', '.').match(/[\\d.]+/);\n  if (!filteredInput) {\n    return null;\n  }\n\n  const number = filteredInput[0];\n  const decimalSeparator = number.indexOf('.');\n\n  const decimal =\n    decimalSeparator !== -1 && number.length > decimalSeparator + 2\n      ? number.substring(0, decimalSeparator + 3)\n      : number;\n\n  const localizedNumber = localizeNumberInput(decimal, locale);\n  const normalizedValue = Number(localizedNumber.replace(/,/g, '.'));\n\n  return isNaN(normalizedValue) ? null : localizedNumber;\n};\n\nexport const getCurrencyAriaLabel = (t: TFunction, currency?: Currency) =>\n  currency?.code\n    ? t(`locale-dataset.currencies.${currency?.code}`)\n    : currency?.sign || '';\n","import { type Product } from '@wix/ambassador-forms-v4-form/types';\nimport React, {\n  type ReactNode,\n  useCallback,\n  useMemo,\n  useRef,\n  useState,\n} from 'react';\nimport {\n  RadioGroup as RadioGroupRAC,\n  Radio as RadioRAC,\n  TextField as TextFieldRAC,\n  Input as InputRAC,\n} from 'react-aria-components';\nimport { debounce } from 'ts-debounce';\n\nimport { useConfig } from '../../contexts/config-context';\nimport { useFocusFieldEvent } from '../../contexts/events-context';\nimport { useFieldAttributes } from '../../contexts/field-attributes-context';\nimport { useFieldPropsV2 } from '../../contexts/field-props-context';\nimport {\n  useTranslation,\n  type TFunction,\n} from '../../contexts/translation-context';\nimport { PRODUCT_PRICE_MULTIPLE_OF } from '../../field-settings/settings-shared/products/product-price';\nimport { findChildOfType, applyInternalProps } from '../../services/find-child';\nimport { type Currency } from '../../types';\nimport { formatCurrency } from '../../utils/format-currency';\nimport { mapById } from '../../utils/map-by-field';\nimport { Description } from '../field-description/field-description-headless';\nimport { Error } from '../field-error/field-error-headless';\nimport { Label } from '../field-label/field-label-headless';\nimport { getValidNumberInput } from '../shared/numeric-input-utils';\nimport { getCurrencyAriaLabel } from '../shared/payment-field-utils';\n\nimport { type DonationFieldProps } from './donation-field-props';\nimport {\n  findProductWithDynamicPrice,\n  getCustomAmount,\n  getProductValueOnCheckboxChange,\n  toProductValue,\n} from './donation-field-utils';\n\nexport type DonationProps = {\n  children: ReactNode;\n};\n\nexport const Donation = ({ children }: DonationProps) => {\n  const {\n    id,\n    value,\n    onChange,\n    disabled,\n    required,\n    onBlur,\n    onFocus,\n    validation,\n    addOther,\n    addOtherPlaceholder,\n    FieldLayout,\n    hasError,\n  } = useFieldPropsV2<DonationFieldProps>();\n\n  const { t } = useTranslation();\n  const { currency, regionalFormat } = useConfig();\n\n  const productValue = value?.[0];\n  const products = useMemo(\n    () => validation?.predefined?.paymentOptions?.products || [],\n    [validation],\n  );\n  const productsById = useMemo(() => mapById(products), [products]);\n  const customAmountProduct = useMemo(\n    () => (addOther ? findProductWithDynamicPrice(products) : undefined),\n    [products, addOther],\n  );\n\n  const [customAmount, setCustomAmount] = useState(\n    getCustomAmount(productValue, customAmountProduct),\n  );\n\n  const handleRadioChange = useCallback(\n    (selectedValue: string) => {\n      onChange(\n        getProductValueOnCheckboxChange(\n          selectedValue,\n          productValue,\n          productsById,\n        ),\n      );\n      setCustomAmount('');\n    },\n    [onChange, productsById, productValue],\n  );\n\n  const handleCustomAmountChange = useCallback(\n    (amount: number | undefined) => {\n      if (!customAmountProduct) {\n        return;\n      }\n      if (typeof amount === 'number') {\n        onChange([toProductValue(customAmountProduct, String(amount))]);\n      } else {\n        onChange([]);\n      }\n    },\n    [onChange, customAmountProduct],\n  );\n\n  const debouncedHandleCustomAmountChange = useMemo(() => {\n    return debounce(handleCustomAmountChange, 500);\n  }, [handleCustomAmountChange]);\n\n  const handleCustomAmountInputChange: React.ChangeEventHandler<HTMLInputElement> =\n    useCallback(\n      (event) => {\n        if (productValue?.productId !== customAmountProduct?.id) {\n          onChange(undefined);\n        }\n        const { validInput, validNumber } = getValidNumberInput(\n          event.target.value,\n          PRODUCT_PRICE_MULTIPLE_OF,\n          customAmount,\n          regionalFormat,\n        );\n        setCustomAmount(validInput);\n        debouncedHandleCustomAmountChange(validNumber);\n      },\n      [\n        regionalFormat,\n        onChange,\n        productValue,\n        customAmountProduct,\n        customAmount,\n        debouncedHandleCustomAmountChange,\n      ],\n    );\n\n  const selectedValue = productValue?.productId || null;\n\n  const handleFocusCustomInput = useCallback(() => {\n    if (customAmountProduct?.id && selectedValue !== customAmountProduct.id) {\n      handleRadioChange(customAmountProduct.id);\n    }\n  }, [customAmountProduct?.id, selectedValue, handleRadioChange]);\n\n  const labelElement = findChildOfType(children, Donation.Label);\n  const controlElement = findChildOfType(children, Donation.Control);\n  const descriptionElement = findChildOfType(children, Donation.Description);\n  const errorElement = findChildOfType(children, Donation.Error);\n\n  return (\n    <FieldLayout\n      fieldId={id}\n      renderLabel={() => labelElement}\n      renderInput={() => (\n        <RadioGroupRAC\n          value={selectedValue}\n          onChange={handleRadioChange}\n          isDisabled={disabled}\n          isInvalid={hasError}\n          isRequired={required}\n          onBlur={onBlur}\n          onFocus={onFocus}\n        >\n          {controlElement\n            ? applyInternalProps<ControlInternalProps>(controlElement, {\n                productsById,\n                addOther,\n                customAmount,\n                onCustomAmountInputChange: handleCustomAmountInputChange,\n                currency,\n                t,\n                placeholder:\n                  addOtherPlaceholder === undefined\n                    ? t('donation.other-option.placeholder')\n                    : addOtherPlaceholder,\n                customAmountProductId: customAmountProduct?.id,\n                onFocusCustomInput: handleFocusCustomInput,\n              })\n            : null}\n        </RadioGroupRAC>\n      )}\n      renderDescription={() => (\n        <>\n          {descriptionElement}\n          {errorElement}\n        </>\n      )}\n    />\n  );\n};\n\ntype ControlProps = {\n  children: ReactNode;\n  className?: string;\n};\n\ntype ControlInternalProps = {\n  productsById: Record<string, Product>;\n  addOther?: boolean;\n  customAmount: string;\n  onCustomAmountInputChange: React.ChangeEventHandler<HTMLInputElement>;\n  currency: Currency | undefined;\n  t: TFunction;\n  placeholder: string;\n  customAmountProductId?: string;\n  onFocusCustomInput: () => void;\n};\n\nconst Control = ({ children, className, ...internal }: ControlProps) => {\n  const {\n    productsById,\n    addOther,\n    customAmount,\n    onCustomAmountInputChange,\n    currency,\n    t,\n    placeholder,\n    customAmountProductId,\n    onFocusCustomInput,\n  } = internal as ControlInternalProps;\n  const { hasError } = useFieldPropsV2<DonationFieldProps>();\n\n  const optionsElement = findChildOfType(children, Donation.Options);\n  const otherInputElement = findChildOfType(children, Donation.OtherInput);\n\n  return (\n    <div className={className} data-invalid={hasError}>\n      {optionsElement\n        ? applyInternalProps<OptionsInternalProps>(optionsElement, {\n            productsById,\n            addOther,\n            customAmountProductId,\n            t,\n          })\n        : null}\n      {otherInputElement && addOther\n        ? applyInternalProps<OtherInputInternalProps>(otherInputElement, {\n            customAmount,\n            onCustomAmountInputChange,\n            currency,\n            t,\n            placeholder,\n            customAmountProductId,\n            onFocusCustomInput,\n          })\n        : null}\n    </div>\n  );\n};\n\ntype OptionsProps = {\n  children: ReactNode;\n  className?: string;\n};\n\ntype OptionsInternalProps = {\n  productsById: Record<string, Product>;\n  addOther?: boolean;\n  customAmountProductId?: string;\n  t: TFunction;\n};\n\nconst Options = ({ children, className, ...internal }: OptionsProps) => {\n  const { productsById, addOther, customAmountProductId, t } =\n    internal as OptionsInternalProps;\n  const { options } = useFieldPropsV2<DonationFieldProps>();\n\n  const optionElement = findChildOfType(children, Options.Option);\n\n  return (\n    <div className={className}>\n      {options.map((option) => {\n        const product = productsById[option.value];\n        const price = product?.fixedPriceOptions?.price;\n\n        return applyInternalProps<OptionInternalProps>(optionElement, {\n          key: option.value,\n          value: option.value,\n          price: price || '0',\n        });\n      })}\n      {addOther && customAmountProductId && (\n        <RadioRAC\n          value={customAmountProductId}\n          style={{\n            position: 'absolute',\n            width: '1px',\n            height: '1px',\n            padding: '0',\n            margin: '-1px',\n            overflow: 'hidden',\n            clip: 'rect(0, 0, 0, 0)',\n            whiteSpace: 'nowrap',\n            border: '0',\n          }}\n          aria-label={t('donation.other-option.label', 'Custom amount')}\n        >\n          {t('donation.other-option.label', 'Custom amount')}\n        </RadioRAC>\n      )}\n    </div>\n  );\n};\n\ntype OptionProps = {\n  children: ReactNode;\n  className?: string;\n};\n\ntype OptionInternalProps = {\n  value: string;\n  price: string;\n};\n\nconst Option = ({ children, className, ...internal }: OptionProps) => {\n  const { value, price } = internal as OptionInternalProps;\n  const { id } = useFieldPropsV2<DonationFieldProps>();\n\n  const valueElement = findChildOfType(children, Option.Value);\n  const currencyElement = findChildOfType(children, Option.Currency);\n\n  const ref = useRef<HTMLLabelElement>(null);\n  useFocusFieldEvent(() => {\n    ref.current?.querySelector('input')?.focus();\n  }, id);\n\n  return (\n    <RadioRAC value={value} className={className} ref={ref}>\n      <>\n        {valueElement\n          ? applyInternalProps<OptionValueInternalProps>(valueElement, {\n              price,\n            })\n          : null}\n        {currencyElement}\n      </>\n    </RadioRAC>\n  );\n};\n\ntype OptionValueProps = {\n  className?: string;\n};\n\ntype OptionValueInternalProps = {\n  price: string;\n};\n\nconst OptionValue = ({ className, ...internal }: OptionValueProps) => {\n  const { price } = internal as OptionValueInternalProps;\n  const { regionalFormat } = useConfig();\n\n  const formattedPrice = formatCurrency({\n    amount: price,\n    locale: regionalFormat,\n  });\n\n  return <span className={className}>{formattedPrice}</span>;\n};\n\ntype OptionCurrencyProps = {\n  className?: string;\n};\n\nconst OptionCurrency = ({ className }: OptionCurrencyProps) => {\n  const { currency } = useConfig();\n\n  return (\n    <span className={className}>{currency?.sign || currency?.code || ''}</span>\n  );\n};\n\nOption.Value = OptionValue;\nOption.Currency = OptionCurrency;\n\ntype OtherInputProps = {\n  children: ReactNode;\n  className?: string;\n};\n\ntype OtherInputInternalProps = {\n  customAmount: string;\n  onCustomAmountInputChange: React.ChangeEventHandler<HTMLInputElement>;\n  currency: Currency | undefined;\n  t: TFunction;\n  placeholder: string;\n  customAmountProductId?: string;\n  onFocusCustomInput: () => void;\n};\n\nconst OtherInput = ({ children, className, ...internal }: OtherInputProps) => {\n  const {\n    customAmount,\n    onCustomAmountInputChange,\n    currency,\n    t,\n    placeholder,\n    customAmountProductId,\n    onFocusCustomInput,\n  } = internal as OtherInputInternalProps;\n  const { disabled, hasError } = useFieldPropsV2<DonationFieldProps>();\n\n  const currencyElement = findChildOfType(children, OtherInput.Currency);\n  const valueElement = findChildOfType(children, OtherInput.Value);\n\n  const handleChange = useCallback(\n    (value: string) => {\n      const event = {\n        target: { value },\n      } as React.ChangeEvent<HTMLInputElement>;\n      onCustomAmountInputChange(event);\n    },\n    [onCustomAmountInputChange],\n  );\n\n  const handleFocus = useCallback(() => {\n    onFocusCustomInput();\n  }, [onFocusCustomInput]);\n\n  const hasValue = customAmount && customAmount.trim() !== '';\n\n  return (\n    <TextFieldRAC\n      value={customAmount}\n      onChange={handleChange}\n      onFocus={handleFocus}\n      isDisabled={disabled}\n      isInvalid={hasError}\n      className={className}\n      data-selected={hasValue ? 'true' : undefined}\n    >\n      {customAmount && currency && currencyElement\n        ? applyInternalProps<OtherInputCurrencyInternalProps>(currencyElement, {\n            currency,\n            t,\n          })\n        : null}\n      {valueElement\n        ? applyInternalProps<OtherInputValueInternalProps>(valueElement, {\n            placeholder,\n            customAmountProductId,\n          })\n        : null}\n    </TextFieldRAC>\n  );\n};\n\ntype OtherInputCurrencyProps = {\n  className?: string;\n};\n\ntype OtherInputCurrencyInternalProps = {\n  currency: Currency | undefined;\n  t: TFunction;\n};\n\nconst OtherInputCurrency = ({\n  className,\n  ...internal\n}: OtherInputCurrencyProps) => {\n  const { currency, t } = internal as OtherInputCurrencyInternalProps;\n  const { prefixId } = useFieldAttributes();\n\n  return (\n    <span\n      id={prefixId}\n      aria-hidden={false}\n      aria-label={getCurrencyAriaLabel(t, currency)}\n      className={className}\n    >\n      {currency?.sign || currency?.code || ''}\n    </span>\n  );\n};\n\ntype OtherInputValueProps = {\n  className?: string;\n};\n\ntype OtherInputValueInternalProps = {\n  placeholder: string;\n  customAmountProductId?: string;\n};\n\nconst OtherInputValue = ({ className, ...internal }: OtherInputValueProps) => {\n  const { placeholder, customAmountProductId } =\n    internal as OtherInputValueInternalProps;\n  const { ariaDescribedBy, labelId, prefixId } = useFieldAttributes();\n\n  return (\n    <InputRAC\n      id={customAmountProductId}\n      aria-labelledby={`${labelId} ${prefixId}`}\n      aria-describedby={ariaDescribedBy}\n      placeholder={placeholder}\n      inputMode=\"decimal\"\n      autoComplete=\"off\"\n      className={className}\n    />\n  );\n};\n\nOtherInput.Currency = OtherInputCurrency;\nOtherInput.Value = OtherInputValue;\n\nOptions.Option = Option;\n\nDonation.Label = Label;\nDonation.Control = Control;\nDonation.Options = Options;\nDonation.OtherInput = OtherInput;\nDonation.Description = Description;\nDonation.Error = Error;\n","import React, { type ReactNode, useCallback, useRef } from 'react';\nimport {\n  Select as SelectRAC,\n  Button as ButtonRAC,\n  SelectValue as SelectValueRAC,\n  Popover as PopoverRAC,\n  ListBox as ListBoxRAC,\n  ListBoxItem as ListBoxItemRAC,\n} from 'react-aria-components';\n\nimport { useFocusFieldEvent } from '../../contexts/events-context';\nimport { useFieldAttributes } from '../../contexts/field-attributes-context';\nimport { useFieldPropsV2 } from '../../contexts/field-props-context';\nimport { findChildOfType, applyInternalProps } from '../../services/find-child';\nimport { Description } from '../field-description/field-description-headless';\nimport { Error } from '../field-error/field-error-headless';\nimport { Label } from '../field-label/field-label-headless';\n\nimport { type DropdownFieldProps } from './dropdown-field-props';\n\nexport type DropdownProps = {\n  children: ReactNode;\n};\n\nexport const Dropdown = ({ children }: DropdownProps) => {\n  const {\n    id,\n    value,\n    onChange,\n    placeholder,\n    disabled,\n    required,\n    onBlur,\n    onFocus,\n    FieldLayout,\n    hasError,\n  } = useFieldPropsV2<DropdownFieldProps>();\n\n  const handleChange = useCallback(\n    (selectedValue: React.Key | null) => {\n      onChange(typeof selectedValue === 'string' ? selectedValue : null);\n    },\n    [onChange],\n  );\n\n  const labelElement = findChildOfType(children, Dropdown.Label);\n  const triggerElement = findChildOfType(children, Dropdown.Trigger);\n  const optionsElement = findChildOfType(children, Dropdown.Options);\n  const descriptionElement = findChildOfType(children, Dropdown.Description);\n  const errorElement = findChildOfType(children, Dropdown.Error);\n\n  return (\n    <FieldLayout\n      fieldId={id}\n      renderLabel={() => labelElement}\n      renderInput={() => (\n        <SelectRAC\n          value={value ?? null}\n          onChange={handleChange}\n          isDisabled={disabled}\n          isInvalid={hasError}\n          isRequired={required}\n          placeholder={placeholder}\n          onBlur={onBlur}\n          onFocus={onFocus}\n        >\n          {triggerElement}\n          {optionsElement}\n        </SelectRAC>\n      )}\n      renderDescription={() => (\n        <>\n          {descriptionElement}\n          {errorElement}\n        </>\n      )}\n    />\n  );\n};\n\ntype TriggerProps = {\n  className?: string;\n};\n\nconst Trigger = ({ className }: TriggerProps) => {\n  const { inputId, ariaDescribedBy } = useFieldAttributes();\n  const { id, hasError } = useFieldPropsV2<DropdownFieldProps>();\n\n  const ref = useRef<HTMLButtonElement>(null);\n  useFocusFieldEvent(() => {\n    ref.current?.focus();\n  }, id);\n\n  return (\n    <ButtonRAC\n      ref={ref}\n      id={inputId}\n      aria-describedby={ariaDescribedBy}\n      className={className}\n      data-invalid={hasError}\n    >\n      <SelectValueRAC />\n    </ButtonRAC>\n  );\n};\n\ntype OptionsProps = {\n  children: ReactNode;\n  className?: string;\n};\n\nconst Options = ({ children, className }: OptionsProps) => {\n  const { options } = useFieldPropsV2<DropdownFieldProps>();\n\n  const optionElement = findChildOfType(children, Options.Option);\n\n  return (\n    <PopoverRAC className={className}>\n      <ListBoxRAC>\n        {options.map((option) =>\n          applyInternalProps<OptionInternalProps>(optionElement, {\n            key: option.value,\n            value: option.value,\n            label: option.label,\n          }),\n        )}\n      </ListBoxRAC>\n    </PopoverRAC>\n  );\n};\n\ntype OptionProps = {\n  className?: string;\n};\n\ntype OptionInternalProps = {\n  value: string;\n  label: string;\n};\n\nconst Option = ({ className, ...internal }: OptionProps) => {\n  const { value, label } = internal as OptionInternalProps;\n  return (\n    <ListBoxItemRAC className={className} id={value} textValue={label}>\n      {label}\n    </ListBoxItemRAC>\n  );\n};\n\nOptions.Option = Option;\n\nDropdown.Label = Label;\nDropdown.Trigger = Trigger;\nDropdown.Options = Options;\nDropdown.Description = Description;\nDropdown.Error = Error;\n","import { type FileUploadFile } from '@wix/wix-ui-tpa/cssVars';\n\nimport {\n  type FieldActionsContextValue,\n  useFieldActions,\n} from '../../contexts/field-actions-context';\nimport { type IUploadFileFieldAction } from '../../services/upload-file';\nimport { type WixFile } from '../form/types';\n\nexport const useUploadFile = (uploadTarget: string) => {\n  const { actions, formId } =\n    useFieldActions() as FieldActionsContextValue<IUploadFileFieldAction>;\n\n  return async (\n    filesToUpload: FileUploadFile[],\n    onDone: ({\n      file,\n      uploadedFile,\n    }: {\n      file: File;\n      uploadedFile: WixFile;\n    }) => void,\n    onError: (error: unknown, file: File) => void,\n  ): Promise<WixFile[]> => {\n    if (!actions?.uploadFile || !filesToUpload.length) {\n      if (!actions?.uploadFile) {\n        console.error('No uploadFile action');\n      }\n      if (!filesToUpload.length) {\n        console.error('No files to upload');\n      }\n      return [];\n    }\n    const uploadTasks = filesToUpload.map(({ file }) => {\n      return actions\n        .uploadFile({\n          file,\n          formId,\n          uploadTarget,\n        })\n        .then((fileDescriptor) => {\n          const { id, displayName, url, isPrivate } = fileDescriptor!;\n          const uploadedFile = {\n            fileId: id,\n            displayName: displayName || file.name,\n            url: !isPrivate ? url : undefined,\n            fileType: file.type || 'application/octet-stream',\n          } as WixFile;\n          onDone({ file, uploadedFile });\n          return uploadedFile;\n        })\n        .catch((_e) => {\n          onError(_e, file);\n        });\n    });\n\n    const uploadedValues = await Promise.all(uploadTasks);\n    return uploadedValues.filter((v) => v !== undefined) as WixFile[];\n  };\n};\n","import { useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { useSubmitSuccessEvent } from '../../contexts/events-context';\nimport {\n  ForcedState,\n  useForcedState,\n} from '../../contexts/forced-state-context';\nimport {\n  FORM_STATUS,\n  useFormStatus,\n} from '../../contexts/form-status-provider';\nimport { useTranslation } from '../../contexts/translation-context';\nimport { type WixFile } from '../form/types';\n\nimport { type FileFormat, FileFormatMap } from './file-format';\nimport { type FileUploadProps } from './file-upload-props';\nimport { useUploadFile } from './use-upload-file';\n\nexport type FileUploadFileState = 'idle' | 'uploading' | 'uploaded' | 'error';\nexport interface FileUploadFile {\n  file: File;\n  state: FileUploadFileState;\n  errorMessage?: string;\n}\n\ntype UseFileUploadControllerParams = {\n  valueSliderLimit: number;\n  value: WixFile[] | undefined | null;\n  explanationText: string | undefined;\n  target: string;\n  onChange: (value: WixFile[] | undefined | null) => void;\n  uploadFileFormats: FileFormat[];\n  onBlur: () => void;\n  onFilesCleared: () => void;\n};\n\nexport function useFileUploadController({\n  valueSliderLimit,\n  value,\n  explanationText,\n  target,\n  onChange,\n  uploadFileFormats,\n  onBlur,\n  onFilesCleared,\n}: UseFileUploadControllerParams) {\n  const [files, setFiles] = useState<FileUploadFile[]>(\n    convertValuesToFiles(value),\n  );\n  const [uploadedFiles, setUploadedFiles] = useState<WixFile[]>(value || []);\n  const [_error, setError] = useState<string>();\n  const uploadFiles = useUploadFile(target);\n  const { t } = useTranslation();\n  const forcedState = useForcedState();\n  const hover = forcedState.includes(ForcedState.BUTTONS_HOVER);\n  const { setFormStatus } = useFormStatus();\n  const prevIsUploading = useRef<boolean>(false);\n\n  const currentIsUploading = useMemo(() => {\n    const isUploading = files.some((file) => file.state === 'uploading');\n    return isUploading;\n  }, [files]);\n\n  useEffect(() => {\n    if (prevIsUploading.current !== currentIsUploading) {\n      prevIsUploading.current = currentIsUploading;\n      setFormStatus(\n        target,\n        currentIsUploading ? FORM_STATUS.BUSY : FORM_STATUS.READY,\n      );\n    }\n  }, [currentIsUploading, setFormStatus, target]);\n\n  const getExplanationText = useCallback(() => {\n    if (!files.length) {\n      return explanationText;\n    }\n\n    const uploadingCount = files.filter((f) => f.state === 'uploading').length;\n    if (uploadingCount) {\n      const uploadedCount = files.filter(\n        (f) => f.state === 'uploaded' && f.file.size > 0,\n      ).length;\n\n      const progress = uploadedCount / (uploadedCount + uploadingCount);\n\n      return t(`form.file-upload.uploading`, {\n        count: Math.round(progress * 100),\n      });\n    }\n\n    return (\n      explanationText ||\n      t(`form.file-upload.explanation-text`, {\n        count: files.length,\n      })\n    );\n  }, [files, explanationText, t]);\n\n  const _uploadFiles = useCallback(\n    async (filesToUpload: FileUploadFile[]) => {\n      await uploadFiles(\n        filesToUpload,\n        ({ file, uploadedFile }) => {\n          setFiles((previousFiles) =>\n            previousFiles.map((f) =>\n              f.file === file ? { file, state: 'uploaded' } : f,\n            ),\n          );\n          setUploadedFiles((prevFiles) => {\n            const newFiles = [...prevFiles].concat(uploadedFile);\n            onChange?.(newFiles);\n            return newFiles;\n          });\n        },\n        (_err, file) => {\n          setFiles((previousFiles) =>\n            previousFiles.map((f) =>\n              f.file === file\n                ? {\n                    file,\n                    state: 'error',\n                    errorMessage: t('form.file-upload.error.upload-failed'),\n                  }\n                : f,\n            ),\n          );\n        },\n      );\n    },\n    [uploadFiles, onChange, t],\n  );\n\n  const handleChange = async (_files: FileList | null) => {\n    _error && setError(undefined);\n    if (_files) {\n      const limitExceeded = files.length + _files.length > valueSliderLimit;\n\n      if (limitExceeded) {\n        setError(\n          t('form.file-upload.error.upload-limit', { limit: valueSliderLimit }),\n        );\n        return;\n      }\n\n      const filesArr = Array.from(_files);\n      const filesToAdd = filesArr.reduce<FileUploadFile[]>((result, _file) => {\n        const alreadyAdded = files.some(\n          (file) => file.file.name === _file.name,\n        );\n        if (!alreadyAdded) {\n          result.push({\n            file: _file,\n            state: 'uploading',\n          });\n        }\n        return result;\n      }, []);\n\n      setFiles([...files, ...filesToAdd]);\n      await _uploadFiles(filesToAdd);\n    }\n  };\n\n  const handleDelete = (index: number) => {\n    const fileToDelete = files[index];\n    if (uploadedFiles && onChange && fileToDelete.state !== 'error') {\n      const filteredValues = uploadedFiles.filter(\n        (f) => f.displayName !== fileToDelete.file.name,\n      );\n      onChange(filteredValues);\n      setUploadedFiles(filteredValues);\n      const filteredFiles = files.filter(\n        (f) => f.file.name !== fileToDelete.file.name,\n      );\n      setFiles(filteredFiles);\n      filteredFiles.length === 0 && onFilesCleared();\n    } else {\n      const filteredFiles = files.filter((f) => f !== fileToDelete);\n      setFiles(filteredFiles);\n      filteredFiles.length === 0 && onFilesCleared();\n    }\n  };\n\n  const handleBlur = () => {\n    _error && setError(undefined);\n    onBlur();\n  };\n\n  const accept = uploadFileFormats\n    .map((format) => FileFormatMap[format])\n    .join();\n\n  const onSubmitSuccess = useCallback(() => {\n    setFiles([]);\n    setUploadedFiles([]);\n  }, []);\n  useSubmitSuccessEvent(onSubmitSuccess);\n\n  return {\n    files,\n    _error,\n    hover,\n    getExplanationText,\n    handleChange,\n    handleDelete,\n    accept,\n    handleBlur,\n  };\n}\n\nfunction convertValuesToFiles(\n  _value: FileUploadProps['value'] = [],\n): FileUploadFile[] {\n  const value = _value ? _value : [];\n  try {\n    return value.map((v) => {\n      return {\n        file: new File([new Int8Array(0)], v.displayName, {\n          type: v.fileType,\n        }),\n        state: 'uploaded',\n      };\n    });\n  } catch (e) {\n    console.error(e);\n  }\n  return [];\n}\n","import { AddSmall } from '@wix/wix-ui-icons-common';\nimport React, { useMemo, type ReactNode } from 'react';\nimport {\n  DropZone as DropZoneRAC,\n  FileTrigger as FileTriggerRAC,\n  Button as ButtonRAC,\n  Text as TextRAC,\n} from 'react-aria-components';\n\nimport { useFieldAttributes } from '../../../contexts/field-attributes-context';\nimport { useFieldPropsV2 } from '../../../contexts/field-props-context';\nimport { useTranslation } from '../../../contexts/translation-context';\nimport { findChildOfType } from '../../../services/find-child';\nimport { type FileUploadProps } from '../file-upload-props';\n\nimport { useFileUploadContext } from './file-upload-context';\n\nexport type DropZoneProps = {\n  children: ReactNode;\n  className?: string;\n};\n\nexport const DropZone = ({ children, className }: DropZoneProps) => {\n  const { ariaDescribedBy } = useFieldAttributes();\n  const { disabled, hasError } = useFieldPropsV2<FileUploadProps>();\n  const { handleFileChange, limitReached } = useFileUploadContext();\n\n  const titleElement = findChildOfType(children, DropZone.Title);\n  const subtitleElement = findChildOfType(children, DropZone.Subtitle);\n  const buttonElement = findChildOfType(children, DropZone.Button);\n\n  return (\n    <DropZoneRAC\n      aria-describedby={ariaDescribedBy}\n      className={className}\n      data-invalid={hasError}\n      isDisabled={disabled}\n      onDrop={async (e) => {\n        const droppedFiles: File[] = [];\n        for (const item of e.items) {\n          if (item.kind === 'file') {\n            const file = await item.getFile();\n            if (file) {\n              droppedFiles.push(file);\n            }\n          }\n        }\n        if (droppedFiles.length > 0) {\n          const dataTransfer = new DataTransfer();\n          droppedFiles.forEach((file) => dataTransfer.items.add(file));\n          handleFileChange(dataTransfer.files);\n        }\n      }}\n    >\n      <TextRAC slot=\"label\">\n        {titleElement}\n        {subtitleElement}\n      </TextRAC>\n\n      {!limitReached && buttonElement}\n    </DropZoneRAC>\n  );\n};\n\nexport type DropZoneTitleProps = {\n  className?: string;\n};\n\nexport const DropZoneTitle = ({ className }: DropZoneTitleProps) => {\n  const { t } = useTranslation();\n  const { limitReached } = useFileUploadContext();\n\n  const title = useMemo(\n    () =>\n      limitReached\n        ? t('file-upload.dropzone.limit-reached.title')\n        : t('file-upload.dropzone.title'),\n    [t, limitReached],\n  );\n\n  return <p className={className}>{title}</p>;\n};\n\nexport type DropZoneSubtitleProps = {\n  className?: string;\n};\n\nexport const DropZoneSubtitle = ({ className }: DropZoneSubtitleProps) => {\n  const { t } = useTranslation();\n  const { limitReached } = useFileUploadContext();\n\n  const subtitle = useMemo(\n    () =>\n      limitReached\n        ? t('file-upload.dropzone.limit-reached.subtitle')\n        : t('file-upload.dropzone.subtitle'),\n    [t, limitReached],\n  );\n\n  return <p className={className}>{subtitle}</p>;\n};\n\nexport type DropZoneButtonProps = {\n  className?: string;\n};\n\nexport const DropZoneButton = ({ className }: DropZoneButtonProps) => {\n  const { t } = useTranslation();\n  const { ariaDescribedBy, inputId, labelId, errorId } = useFieldAttributes();\n  const { buttonText, disabled, required, onFocus, hasError, errorMessage } =\n    useFieldPropsV2<FileUploadProps>();\n  const {\n    handleFileChange,\n    accept,\n    multiple,\n    buttonRef,\n    handleBlur,\n    _error,\n    files,\n  } = useFileUploadContext();\n\n  const hasFileErrors = files?.some((file) => file.errorMessage) ?? false;\n  const hasAnyError = Boolean(\n    hasError || errorMessage || _error || hasFileErrors,\n  );\n\n  return (\n    <FileTriggerRAC\n      acceptedFileTypes={accept ? accept.split(',') : undefined}\n      allowsMultiple={multiple}\n      onSelect={(fileList) => {\n        if (fileList) {\n          const _files = Array.from(fileList);\n          const dataTransfer = new DataTransfer();\n          _files.forEach((file) => dataTransfer.items.add(file));\n          handleFileChange(dataTransfer.files);\n        }\n      }}\n    >\n      <ButtonRAC\n        ref={buttonRef}\n        id={inputId}\n        aria-labelledby={labelId}\n        aria-describedby={[ariaDescribedBy, errorId].filter(Boolean).join(' ')}\n        aria-required={required}\n        aria-invalid={hasAnyError}\n        aria-roledescription={t('file-upload.aria-roledescription')}\n        isDisabled={disabled}\n        className={className}\n        onFocus={onFocus}\n        onBlur={handleBlur}\n      >\n        <AddSmall aria-hidden=\"true\" />\n\n        {buttonText}\n      </ButtonRAC>\n    </FileTriggerRAC>\n  );\n};\n\nDropZone.Title = DropZoneTitle;\nDropZone.Subtitle = DropZoneSubtitle;\nDropZone.Button = DropZoneButton;\n","import { createContext, useContext, type RefObject } from 'react';\n\nimport { type FileUploadFile } from '../use-file-upload-controller';\n\nexport type FileUploadContextValue = {\n  handleFileChange: (fileList: FileList | null) => void;\n  handleBlur: () => void;\n  handleDelete: (index: number) => void;\n  files: FileUploadFile[];\n  accept: string;\n  multiple: boolean;\n  limitReached: boolean;\n  getExplanationText: () => string | undefined;\n  hover: boolean;\n  _error?: string;\n  buttonRef?: RefObject<HTMLButtonElement>;\n  fileRemoveButtonRefs: React.MutableRefObject<{\n    [key: string]: RefObject<HTMLButtonElement> | undefined;\n  }>;\n};\n\nexport const FileUploadContext = createContext<\n  FileUploadContextValue | undefined\n>(undefined);\n\nexport function useFileUploadContext(): FileUploadContextValue {\n  const context = useContext(FileUploadContext);\n\n  if (typeof context === 'undefined') {\n    throw new Error('FileUpload components must be used within FileUpload');\n  }\n\n  return context;\n}\n","import { DeleteSmall, StatusAlert } from '@wix/wix-ui-icons-common';\nimport React, { type ReactNode, useRef, useEffect } from 'react';\nimport { Button as ButtonRAC } from 'react-aria-components';\n\nimport { useFieldPropsV2 } from '../../../contexts/field-props-context';\nimport { useTranslation } from '../../../contexts/translation-context';\nimport {\n  applyInternalProps,\n  findChildOfType,\n} from '../../../services/find-child';\nimport { type FileUploadProps } from '../file-upload-props';\nimport { type FileUploadFile } from '../use-file-upload-controller';\n\nimport { useFileUploadContext } from './file-upload-context';\nimport { ProgressCircle } from './progress-circle';\n\nexport type FileProps = {\n  children: ReactNode;\n  className?: string;\n};\n\nexport type FileInternalProps = {\n  file: FileUploadFile;\n  index: number;\n  focusFile: boolean;\n};\n\nexport const File = ({ children, className, ...internal }: FileProps) => {\n  const { file, index, focusFile } = internal as FileInternalProps;\n  const fileName = file.file.name;\n\n  const nameElement = findChildOfType(children, File.Name);\n  const removeElement = findChildOfType(children, File.Remove);\n  const spinnerElement = findChildOfType(children, File.Spinner);\n  const errorElement = findChildOfType(children, File.Error);\n\n  return (\n    <div className={className}>\n      {applyInternalProps<FileNameInternalProps>(nameElement, { fileName })}\n\n      {file.state === 'uploading'\n        ? spinnerElement\n        : applyInternalProps<FileRemoveInternalProps>(removeElement, {\n            index,\n            fileName,\n            focused: focusFile,\n          })}\n\n      {file.errorMessage &&\n        applyInternalProps<FileErrorInternalProps>(errorElement, {\n          errorMessage: file.errorMessage,\n        })}\n    </div>\n  );\n};\n\nexport type FileNameProps = {\n  className?: string;\n};\n\nexport type FileNameInternalProps = {\n  fileName: string;\n};\n\nexport const FileName = ({ className, ...internal }: FileNameProps) => {\n  const { fileName } = internal as FileNameInternalProps;\n\n  return <span className={className}>{fileName}</span>;\n};\n\nexport type FileRemoveProps = {\n  className?: string;\n};\n\nexport type FileRemoveInternalProps = {\n  index: number;\n  fileName: string;\n  focused: boolean;\n};\n\nexport const FileRemove = ({ className, ...internal }: FileRemoveProps) => {\n  const { t } = useTranslation();\n  const { fileName, index, focused } = internal as FileRemoveInternalProps;\n  const { disabled } = useFieldPropsV2<FileUploadProps>();\n  const { handleDelete, fileRemoveButtonRefs } = useFileUploadContext();\n  const buttonRef = useRef<HTMLButtonElement>(null);\n\n  useEffect(() => {\n    const refs = fileRemoveButtonRefs.current;\n    const fileKey = fileName;\n    refs[fileKey] = buttonRef;\n\n    return () => {\n      if (refs[fileKey] === buttonRef) {\n        refs[fileKey] = undefined;\n      }\n    };\n  }, [fileName, fileRemoveButtonRefs]);\n\n  useEffect(() => {\n    if (focused) {\n      buttonRef.current?.focus();\n    }\n  }, [focused]);\n\n  const handleClick = () => {\n    handleDelete(index);\n  };\n\n  return (\n    <ButtonRAC\n      ref={buttonRef}\n      aria-disabled={disabled}\n      aria-label={t('file-upload.delete-file.aria-label')}\n      aria-description={fileName}\n      onClick={handleClick}\n      className={className}\n      isDisabled={disabled}\n    >\n      <DeleteSmall />\n    </ButtonRAC>\n  );\n};\n\nexport type FileErrorProps = {\n  className?: string;\n};\n\nexport type FileErrorInternalProps = {\n  errorMessage?: string;\n};\n\nexport const FileError = ({ className, ...internal }: FileErrorProps) => {\n  const { errorMessage } = internal as FileErrorInternalProps;\n\n  if (!errorMessage) {\n    return null;\n  }\n\n  return (\n    <div className={className} role=\"alert\">\n      <StatusAlert aria-hidden=\"true\" />\n\n      {errorMessage}\n    </div>\n  );\n};\n\nexport type FileSpinnerProps = {\n  className?: string;\n};\n\nexport const FileSpinner = ({ className }: FileSpinnerProps) => {\n  const { t } = useTranslation();\n  return (\n    <ProgressCircle\n      aria-label={t('file-upload.file.uploading-spinner.aria-label')}\n      className={className}\n    />\n  );\n};\n\nFile.Name = FileName;\nFile.Remove = FileRemove;\nFile.Spinner = FileSpinner;\nFile.Error = FileError;\n","import React from 'react';\nimport {\n  ProgressBar as ProgressBarRAC,\n  type ProgressBarProps as ProgressBarRACProps,\n} from 'react-aria-components';\n\nexport function ProgressCircle(props: ProgressBarRACProps) {\n  // SVG strokes are centered, so subtract half the stroke width from the radius to create an inner stroke.\n  const strokeWidth = 4;\n  const radius = `calc(50% - ${strokeWidth / 2}px)`;\n\n  return (\n    <ProgressBarRAC {...props} isIndeterminate>\n      {({ percentage, isIndeterminate }) => (\n        <>\n          <svg fill=\"none\" width=\"100%\" height=\"100%\" viewBox=\"0 0 32 32\">\n            <circle cx=\"50%\" cy=\"50%\" r={radius} />\n            <circle\n              cx=\"50%\"\n              cy=\"50%\"\n              r={radius}\n              // Normalize the path length to 100 so we can easily set stroke-dashoffset to a percentage.\n              pathLength=\"100\"\n              // Add extra gap between dashes so 0% works in Chrome.\n              strokeDasharray=\"100 200\"\n              strokeDashoffset={\n                100 - (isIndeterminate || percentage == null ? 25 : percentage)\n              }\n              strokeLinecap=\"round\"\n              style={{\n                rotate: '-90deg',\n                transformOrigin: 'center center',\n              }}\n            >\n              {isIndeterminate && (\n                <animateTransform\n                  attributeName=\"transform\"\n                  type=\"rotate\"\n                  dur=\"0.75s\"\n                  values=\"0;360\"\n                  repeatCount=\"indefinite\"\n                />\n              )}\n            </circle>\n          </svg>\n        </>\n      )}\n    </ProgressBarRAC>\n  );\n}\n","import React, { type ReactNode } from 'react';\n\nimport {\n  findChildOfType,\n  applyInternalProps,\n} from '../../../services/find-child';\n\nimport { File, type FileInternalProps } from './file';\nimport { useFileUploadContext } from './file-upload-context';\n\nexport type FilesProps = {\n  children: ReactNode;\n  className?: string;\n};\n\nexport const Files = ({ children, className }: FilesProps) => {\n  const { files } = useFileUploadContext();\n  const fileElement = findChildOfType(children, Files.File);\n\n  if (!files || files.length === 0) {\n    return null;\n  }\n\n  return (\n    <div className={className}>\n      {files.map((fileUploadFile, index) =>\n        applyInternalProps<FileInternalProps>(fileElement, {\n          key: fileUploadFile.file.name || index,\n          file: fileUploadFile,\n          index,\n          focusFile: index === 0,\n        }),\n      )}\n    </div>\n  );\n};\n\nFiles.File = File;\n","import React, { type ReactNode, useCallback, useRef, useMemo } from 'react';\n\nimport { useFocusFieldEvent } from '../../../contexts/events-context';\nimport { useFieldPropsV2 } from '../../../contexts/field-props-context';\nimport { findChildOfType } from '../../../services/find-child';\nimport { Description } from '../../field-description/field-description-headless';\nimport { Error as FieldError } from '../../field-error/field-error-headless';\nimport { Label } from '../../field-label/field-label-headless';\nimport { type FileUploadProps as FileUploadInternalProps } from '../file-upload-props';\nimport {\n  useFileUploadController,\n  type FileUploadFile,\n} from '../use-file-upload-controller';\n\nimport { DropZone } from './drop-zone';\nimport {\n  FileUploadContext,\n  useFileUploadContext,\n  type FileUploadContextValue,\n} from './file-upload-context';\nimport { Files } from './files';\n\nconst fileKey = (f: FileUploadFile) => f.file.name;\n\nexport type FileUploadProps = {\n  children: ReactNode;\n};\n\nexport const FileUpload = ({ children }: FileUploadProps) => {\n  const {\n    id,\n    value,\n    onChange,\n    uploadFileFormats,\n    valueSliderLimit,\n    target,\n    explanationText,\n    onBlur,\n    FieldLayout,\n  } = useFieldPropsV2<FileUploadInternalProps>();\n\n  const buttonRef = useRef<HTMLButtonElement>(null);\n  const fileRemoveButtonRefs = useRef<{\n    [key: string]: React.RefObject<HTMLButtonElement>;\n  }>({});\n\n  const handleFilesCleared = useCallback(() => {\n    buttonRef.current?.focus();\n  }, []);\n\n  const {\n    files,\n    _error,\n    hover,\n    getExplanationText,\n    handleBlur,\n    handleChange,\n    handleDelete: _handleDelete,\n    accept,\n  } = useFileUploadController({\n    valueSliderLimit,\n    value,\n    explanationText,\n    target,\n    onChange,\n    uploadFileFormats,\n    onBlur,\n    onFilesCleared: handleFilesCleared,\n  });\n\n  const handleDelete = useCallback(\n    (index: number) => {\n      const fileToDelete = files[index];\n      const currentKey = fileKey(fileToDelete);\n\n      if (files.length > 1) {\n        const firstFocusableElementRef =\n          files\n            .filter((f) => fileKey(f) !== currentKey)\n            .map((f) => fileRemoveButtonRefs.current[fileKey(f)])\n            .find(Boolean) ?? buttonRef;\n\n        firstFocusableElementRef.current?.focus();\n      }\n\n      _handleDelete(index);\n    },\n    [_handleDelete, files],\n  );\n\n  const multiple = valueSliderLimit > 1;\n  const limitReached = files.length >= valueSliderLimit;\n\n  const contextValue: FileUploadContextValue = useMemo(\n    () => ({\n      handleFileChange: handleChange,\n      handleBlur,\n      handleDelete,\n      files,\n      accept,\n      limitReached,\n      multiple,\n      getExplanationText,\n      hover,\n      _error,\n      buttonRef,\n      fileRemoveButtonRefs,\n    }),\n    [\n      handleChange,\n      handleBlur,\n      handleDelete,\n      files,\n      accept,\n      limitReached,\n      multiple,\n      getExplanationText,\n      hover,\n      _error,\n    ],\n  );\n\n  const labelElement = findChildOfType(children, FileUpload.Label);\n  const dropZoneElement = findChildOfType(children, FileUpload.DropZone);\n  const explanationElement = findChildOfType(children, FileUpload.Explanation);\n  const filesElement = findChildOfType(children, FileUpload.Files);\n  const descriptionElement = findChildOfType(children, FileUpload.Description);\n  const errorElement = findChildOfType(children, FileUpload.Error);\n\n  useFocusFieldEvent(() => {\n    buttonRef.current?.focus();\n  }, id);\n\n  return (\n    <FileUploadContext.Provider value={contextValue}>\n      <FieldLayout\n        fieldId={id}\n        renderLabel={() => labelElement}\n        renderInput={() => dropZoneElement}\n        renderDescription={() => (\n          <>\n            {errorElement}\n            {descriptionElement}\n            {explanationElement}\n            {filesElement}\n          </>\n        )}\n      />\n    </FileUploadContext.Provider>\n  );\n};\n\nexport type ExplanationProps = {\n  className?: string;\n};\n\nexport const Explanation = ({ className }: ExplanationProps) => {\n  const { getExplanationText } = useFileUploadContext();\n  const displayText = getExplanationText();\n\n  if (!displayText) {\n    return null;\n  }\n\n  return <p className={className}>{displayText}</p>;\n};\n\nFileUpload.Label = Label;\nFileUpload.DropZone = DropZone;\nFileUpload.Explanation = Explanation;\nFileUpload.Files = Files;\nFileUpload.Description = Description;\nFileUpload.Error = FieldError;\n","import React, { type ReactNode, useMemo } from 'react';\n\nimport { useConfig } from '../../contexts/config-context';\nimport { useFieldAttributes } from '../../contexts/field-attributes-context';\nimport { useFieldPropsV2 } from '../../contexts/field-props-context';\nimport { findChildOfType, applyInternalProps } from '../../services/find-child';\nimport { formatCurrency } from '../../utils/format-currency';\nimport { Description } from '../field-description/field-description-headless';\nimport { Error } from '../field-error/field-error-headless';\nimport { Label } from '../field-label/field-label-headless';\n\nimport { type FixedPaymentFieldProps } from './fixed-payment-field-props';\n\nexport type FixedPaymentProps = {\n  children: ReactNode;\n};\n\nexport const FixedPayment = ({ children }: FixedPaymentProps) => {\n  const { id, validation, FieldLayout } =\n    useFieldPropsV2<FixedPaymentFieldProps>();\n\n  const { currency, regionalFormat } = useConfig();\n\n  const paymentValidation = useMemo(\n    () => validation?.predefined?.paymentOptions?.products?.[0],\n    [validation],\n  );\n\n  const fixedPaymentValue = paymentValidation?.fixedPriceOptions?.price;\n\n  const labelElement = findChildOfType(children, FixedPayment.Label);\n  const amountElement = findChildOfType(children, FixedPayment.Amount);\n  const descriptionElement = findChildOfType(\n    children,\n    FixedPayment.Description,\n  );\n  const errorElement = findChildOfType(children, FixedPayment.Error);\n\n  return (\n    <FieldLayout\n      fieldId={id}\n      renderLabel={() => labelElement}\n      renderInput={() =>\n        applyInternalProps<AmountInternalProps>(amountElement, {\n          price: fixedPaymentValue,\n          currencyCode: currency?.code,\n          locale: regionalFormat,\n        })\n      }\n      renderDescription={() => (\n        <>\n          {descriptionElement}\n          {errorElement}\n        </>\n      )}\n    />\n  );\n};\n\ntype AmountProps = {\n  className?: string;\n};\n\ntype AmountInternalProps = {\n  price?: string;\n  currencyCode?: string;\n  locale?: string;\n};\n\nconst Amount = ({ className, ...internal }: AmountProps) => {\n  const { price, currencyCode, locale } = internal as AmountInternalProps;\n  const { inputId, ariaDescribedBy } = useFieldAttributes();\n\n  const formattedValue = formatCurrency({\n    amount: price,\n    currency: currencyCode,\n    locale,\n  });\n\n  return (\n    <span\n      id={inputId}\n      aria-describedby={ariaDescribedBy}\n      className={className}\n      data-hook=\"fixed-payment-value\"\n    >\n      {formattedValue}\n    </span>\n  );\n};\n\ntype FixedPaymentLabelProps = {\n  className?: string;\n};\n\nconst FixedPaymentLabel = ({ className }: FixedPaymentLabelProps) => {\n  return <Label className={className}>{null}</Label>;\n};\n\nFixedPayment.Label = FixedPaymentLabel;\nFixedPayment.Amount = Amount;\nFixedPayment.Description = Description;\nFixedPayment.Error = Error;\n","import React, { type ReactNode } from 'react';\nimport { Button as ButtonRAC } from 'react-aria-components';\n\nimport { useFieldPropsV2 } from '../../contexts/field-props-context';\nimport { useTranslation } from '../../contexts/translation-context';\nimport { findChildOfType, applyInternalProps } from '../../services/find-child';\n\nimport { type LoginBarProps } from './login-bar';\n\nexport type LoginBarHeadlessProps = {\n  children: ReactNode;\n};\n\nconst LoginBar = ({ children }: LoginBarHeadlessProps) => {\n  const { id, FieldLayout } = useFieldPropsV2<LoginBarProps>();\n\n  return (\n    <FieldLayout\n      fieldId={id}\n      renderLabel={() => null}\n      renderInput={() => <>{children}</>}\n      renderDescription={() => null}\n    />\n  );\n};\n\ntype LoginBarInnerProps = {\n  children: ReactNode;\n  className?: string;\n  email?: string;\n  login?: () => void;\n  logout?: () => void;\n};\n\nconst LoginBarInner = ({\n  children,\n  className,\n  email,\n  login,\n  logout,\n}: LoginBarInnerProps) => {\n  const labelElement = applyInternalProps<ButtonInternalProps>(\n    findChildOfType(children, LoginBar.Text),\n    { email },\n  );\n  const buttonElement = applyInternalProps<ButtonInternalProps>(\n    findChildOfType(children, LoginBar.Button),\n    {\n      email,\n      login,\n      logout,\n    },\n  );\n\n  const labelWithButton = !email\n    ? applyInternalProps<TextInternalProps>(labelElement, {\n        buttonElement,\n        email,\n      })\n    : labelElement;\n\n  return (\n    <div className={className}>\n      {email ? (\n        <>\n          {labelElement}\n          {buttonElement}\n        </>\n      ) : (\n        labelWithButton\n      )}\n    </div>\n  );\n};\n\ntype TextProps = {\n  className?: string;\n};\n\ntype TextInternalProps = {\n  buttonElement?: ReactNode;\n  email?: string;\n};\n\nconst LoginBarText = ({ className, ...internal }: TextProps) => {\n  const { buttonElement, email } = internal as TextInternalProps;\n  const { t } = useTranslation();\n\n  const labelText = email\n    ? t('form.login-bar.title.logged-in-state', {\n        user: email,\n      })\n    : t('form.login-bar.title.logged-out-state');\n\n  return (\n    <div className={className}>\n      {labelText}\n      {!email && buttonElement}\n    </div>\n  );\n};\n\ntype ButtonProps = {\n  className?: string;\n};\n\ntype ButtonInternalProps = {\n  email?: string;\n  login?: () => void;\n  logout?: () => void;\n};\n\nconst LoginBarButton = ({ className, ...internal }: ButtonProps) => {\n  const { t } = useTranslation();\n  const { email, login, logout } = internal as ButtonInternalProps;\n\n  const buttonText = email\n    ? t('form.login-bar.action.logout')\n    : t('form.login-bar.actions.login');\n\n  const handleClick = () => (email ? logout?.() : login?.());\n\n  return (\n    <ButtonRAC className={className} onPress={handleClick}>\n      {buttonText}\n    </ButtonRAC>\n  );\n};\n\nLoginBar.LoginBar = LoginBarInner;\nLoginBar.Text = LoginBarText;\nLoginBar.Button = LoginBarButton;\n\nexport { LoginBar };\n","import { type Form as FormType } from '@wix/ambassador-forms-v4-form/types';\nimport {\n  getCountryField,\n  getCountryFieldLayout,\n  type CountryCode,\n} from '@wix/form-multiline-address';\nimport { addFieldToSchema, generateUUID } from '@wix/form-schema';\nimport { type ValidationError } from '@wix/form-validator';\nimport React, { type ReactNode, useCallback, useMemo } from 'react';\n\nimport { EXPERIMENTS, FIELD_TYPES } from '../../../constants';\nimport { useAddressForms } from '../../../contexts/address-forms-context';\nimport { useFocusGroupFieldEvent } from '../../../contexts/events-context';\nimport { useExperiments } from '../../../contexts/experiments-context';\nimport { useFieldActions } from '../../../contexts/field-actions-context';\nimport { useFieldPropsV2 } from '../../../contexts/field-props-context';\nimport { useFieldValidation } from '../../../contexts/field-validation-context';\nimport { useForm } from '../../../contexts/form-context';\nimport {\n  ADDRESS_TARGETS,\n  type Address,\n  fromAtlasAddress,\n  type AddressCamel,\n} from '../../../fields/multiline-address/multiline-address/address';\nimport {\n  AddressAutofillProvider,\n  type onAddressSelect,\n} from '../../../fields/multiline-address/multiline-address/address-autofill-context';\nimport { CountryCodeProvider } from '../../../fields/multiline-address/multiline-address/country-code-context';\nimport { removeGaps } from '../../../fields/multiline-address/multiline-address/remove-gaps';\nimport { findChildOfType } from '../../../services/find-child';\nimport { createFormView } from '../../../services/form-view';\nimport { type InputFieldProps } from '../../../types';\nimport { applyMultilineAddressSettings } from '../../../utils/apply-multiline-address-settings';\nimport { overrideFieldIds } from '../../../utils/field-id-overrides';\nimport { Form } from '../../form/components/form';\nimport type { PossibleValues } from '../../form/types';\n\nimport {\n  AddressFieldsProvider,\n  useAddressFields,\n} from './address-fields-context';\nimport { AddressLine2 } from './address-line-2-field-headless';\nimport { AddressLine } from './address-line-field-headless';\nimport { City } from './city-field-headless';\nimport { Country } from './country-field-headless';\nimport { PostalCode } from './postal-code-field-headless';\nimport { StreetName } from './street-name-field-headless';\nimport { StreetNumber } from './street-number-field-headless';\nimport { Subdivision } from './subdivision-field-headless';\n\n// MultilineAddress value combines both camelCase and snake_case\nexport type MultilineAddressValue = Address & AddressCamel;\n\nexport type MultilineAddressFieldProps =\n  InputFieldProps<MultilineAddressValue> & {\n    fieldSettings: Record<string, any>;\n    autocompleteEnabled?: boolean;\n    hideLabel?: boolean;\n  };\n\nexport const MlaCountryWrapper = () => useAddressFields('country');\nexport const MlaSubdivisionWrapper = () => useAddressFields('subdivision');\nexport const MlaCityWrapper = () => useAddressFields('city');\nexport const MlaAddressLineWrapper = () => useAddressFields('addressLine');\nexport const MlaAddressLine2Wrapper = () => useAddressFields('addressLine2');\nexport const MlaPostalCodeWrapper = () => useAddressFields('postalCode');\nexport const MlaStreetNameWrapper = () => useAddressFields('streetName');\nexport const MlaStreetNumberWrapper = () => useAddressFields('streetNumber');\n\nconst ADDRESS_FIELDS = {\n  [FIELD_TYPES.MLA_COUNTRY]: MlaCountryWrapper,\n  [FIELD_TYPES.MLA_SUBDIVISION]: MlaSubdivisionWrapper,\n  [FIELD_TYPES.MLA_CITY]: MlaCityWrapper,\n  [FIELD_TYPES.MLA_ADDRESS_LINE]: MlaAddressLineWrapper,\n  [FIELD_TYPES.MLA_ADDRESS_LINE_2]: MlaAddressLine2Wrapper,\n  [FIELD_TYPES.MLA_POSTAL_CODE]: MlaPostalCodeWrapper,\n  [FIELD_TYPES.MLA_STREET_NAME]: MlaStreetNameWrapper,\n  [FIELD_TYPES.MLA_STREET_NUMBER]: MlaStreetNumberWrapper,\n};\n\nconst NO_VALUES = {};\nconst NO_ERRORS: ValidationError[] = [];\nconst FIELD_IDS = {\n  country: generateUUID(),\n  subdivision: generateUUID(),\n  city: generateUUID(),\n  address_line: generateUUID(),\n  address_line_2: generateUUID(),\n  postal_code: generateUUID(),\n  street_name: generateUUID(),\n  street_number: generateUUID(),\n  apartment: generateUUID(),\n};\n\nexport type MultilineAddressProps = {\n  children: ReactNode;\n};\n\nexport const MultilineAddress = ({ children }: MultilineAddressProps) => {\n  const {\n    id,\n    form: _form,\n    value,\n    onChange,\n    errors,\n    FieldLayout,\n    fieldSettings,\n    label,\n    validation,\n    target,\n    autocompleteEnabled,\n    required,\n    fieldType,\n  } = useFieldPropsV2<MultilineAddressFieldProps>();\n\n  const { isExperimentEnabled } = useExperiments();\n  const useFieldsV2 = isExperimentEnabled(EXPERIMENTS.USE_FIELDS_V2);\n  const { getCountryAddressForm } = useAddressForms();\n  const { validateFields: parentValidateFields } = useFieldValidation();\n  const formSchema = useForm();\n  const fieldActions = useFieldActions();\n  const template = getCountryAddressForm(value?.country);\n  const isMultilineAddressField =\n    fieldType === FIELD_TYPES.MULTILINE_ADDRESS ||\n    fieldType === FIELD_TYPES.BOOKINGS_ADDRESS;\n\n  const mlaCountryField = useMemo(\n    () =>\n      getCountryField(\n        required,\n        validation?.predefined?.multilineAddressOptions,\n      ),\n    [validation, required],\n  );\n\n  const mlaCountryLayout = useMemo(() => getCountryFieldLayout(), []);\n\n  const form = useMemo(() => {\n    if (!isMultilineAddressField || !template) {\n      return (\n        _form && {\n          ..._form,\n          fields: overrideFieldIds(_form.fields, FIELD_IDS),\n        }\n      );\n    }\n\n    const baseForm = createFormView({\n      useFieldsV2,\n      path: target,\n      parentId: id,\n      form: applyMultilineAddressSettings(\n        addFieldToSchema(\n          template,\n          mlaCountryField,\n          mlaCountryLayout,\n        ) as FormType,\n        fieldSettings,\n        (validation?.predefined as any)?.multilineAddressOptions.fields,\n      ),\n    });\n\n    return baseForm.fields.some((field) => field.properties.hidden)\n      ? removeGaps(baseForm)\n      : baseForm;\n  }, [\n    template,\n    _form,\n    fieldSettings,\n    validation,\n    target,\n    mlaCountryField,\n    mlaCountryLayout,\n    isMultilineAddressField,\n    useFieldsV2,\n    id,\n  ]);\n\n  const handleAddressSelect: onAddressSelect = useCallback(\n    (atlasAddress) => {\n      if (!value) {\n        return;\n      }\n      const address = fromAtlasAddress(atlasAddress, isMultilineAddressField);\n\n      const newValue = {\n        ...address,\n        [ADDRESS_TARGETS.COUNTRY]:\n          address[ADDRESS_TARGETS.COUNTRY] ?? value[ADDRESS_TARGETS.COUNTRY],\n      };\n      onChange?.(newValue);\n    },\n    [onChange, value, isMultilineAddressField],\n  );\n\n  const handleFieldChange = useCallback(\n    (_target: string, subFieldValue: PossibleValues) => {\n      if (\n        isMultilineAddressField &&\n        _target === ADDRESS_TARGETS.COUNTRY &&\n        value?.[_target] !== subFieldValue\n      ) {\n        onChange?.({ [ADDRESS_TARGETS.COUNTRY]: subFieldValue as CountryCode });\n        return;\n      }\n\n      onChange?.({\n        ...value,\n        [_target]: subFieldValue,\n      });\n    },\n    [onChange, value, isMultilineAddressField],\n  );\n\n  const validateFields = useCallback(\n    async (fieldsToValidate: { path: string; value: PossibleValues }[]) => {\n      if (!isMultilineAddressField) {\n        return parentValidateFields(fieldsToValidate);\n      }\n\n      return parentValidateFields([\n        ...fieldsToValidate,\n        { path: `${target}/${ADDRESS_TARGETS.COUNTRY}`, value: value?.country },\n      ]);\n    },\n    [value, target, parentValidateFields, isMultilineAddressField],\n  );\n\n  useFocusGroupFieldEvent(id, () => {\n    const firstError = errors?.[0];\n    const field = form?.fields?.find(\n      (f) => 'target' in f && f.target === firstError?.errorPath,\n    );\n    return field?.id;\n  });\n\n  // Extract child field components\n  const countryElement = findChildOfType(children, MultilineAddress.Country);\n  const subdivisionElement = findChildOfType(\n    children,\n    MultilineAddress.Subdivision,\n  );\n  const cityElement = findChildOfType(children, MultilineAddress.City);\n  const addressLineElement = findChildOfType(\n    children,\n    MultilineAddress.AddressLine,\n  );\n  const addressLine2Element = findChildOfType(\n    children,\n    MultilineAddress.AddressLine2,\n  );\n  const postalCodeElement = findChildOfType(\n    children,\n    MultilineAddress.PostalCode,\n  );\n  const streetNameElement = findChildOfType(\n    children,\n    MultilineAddress.StreetName,\n  );\n  const streetNumberElement = findChildOfType(\n    children,\n    MultilineAddress.StreetNumber,\n  );\n\n  // Store field components in context for MLA wrapper components to access\n  const addressFields = useMemo(\n    () => ({\n      country: countryElement,\n      subdivision: subdivisionElement,\n      city: cityElement,\n      addressLine: addressLineElement,\n      addressLine2: addressLine2Element,\n      postalCode: postalCodeElement,\n      streetName: streetNameElement,\n      streetNumber: streetNumberElement,\n    }),\n    [\n      countryElement,\n      subdivisionElement,\n      cityElement,\n      addressLineElement,\n      addressLine2Element,\n      postalCodeElement,\n      streetNameElement,\n      streetNumberElement,\n    ],\n  );\n\n  if (!form) {\n    return null;\n  }\n\n  return (\n    <FieldLayout fieldId={id}>\n      <CountryCodeProvider countryCode={value?.country}>\n        <AddressAutofillProvider\n          autocompleteEnabled={autocompleteEnabled}\n          onAddressSelect={handleAddressSelect}\n        >\n          <AddressFieldsProvider fields={addressFields}>\n            <fieldset\n              style={{\n                border: 'none',\n                padding: 0,\n                margin: 0,\n                minWidth: 0,\n              }}\n            >\n              <legend\n                style={{\n                  position: 'absolute',\n                  width: '1px',\n                  height: '1px',\n                  padding: 0,\n                  margin: '-1px',\n                  overflow: 'hidden',\n                  clip: 'rect(0, 0, 0, 0)',\n                  whiteSpace: 'nowrap',\n                  border: 0,\n                }}\n              >\n                {label}\n              </legend>\n              <Form\n                formSchema={formSchema}\n                form={form}\n                values={value ?? NO_VALUES}\n                onFieldChange={handleFieldChange}\n                errors={errors ?? NO_ERRORS}\n                validateFields={validateFields}\n                fields={ADDRESS_FIELDS}\n                fieldActions={fieldActions}\n              />\n            </fieldset>\n          </AddressFieldsProvider>\n        </AddressAutofillProvider>\n      </CountryCodeProvider>\n    </FieldLayout>\n  );\n};\n\nMultilineAddress.Country = Country;\nMultilineAddress.Subdivision = Subdivision;\nMultilineAddress.City = City;\nMultilineAddress.AddressLine = AddressLine;\nMultilineAddress.AddressLine2 = AddressLine2;\nMultilineAddress.PostalCode = PostalCode;\nMultilineAddress.StreetName = StreetName;\nMultilineAddress.StreetNumber = StreetNumber;\n","import type { CommonAddress } from '@wix/ambassador-wix-atlas-service-web/types';\nimport React, {\n  createContext,\n  type ReactNode,\n  useContext,\n  useMemo,\n} from 'react';\n\nexport type onAddressSelect = (address: CommonAddress) => void;\n\ntype AddressAutofill = {\n  onAddressSelect: onAddressSelect;\n  autocompleteEnabled?: boolean;\n};\n\nconst AddressAutofillContext = createContext<AddressAutofill>({\n  onAddressSelect: () => {},\n});\n\nexport interface AddressAutofillProviderProps {\n  children: ReactNode;\n  onAddressSelect: onAddressSelect;\n  autocompleteEnabled?: boolean;\n}\n\nexport const AddressAutofillProvider = ({\n  children,\n  onAddressSelect,\n  autocompleteEnabled,\n}: AddressAutofillProviderProps) => {\n  const value = useMemo(\n    () => ({ onAddressSelect, autocompleteEnabled }),\n    [onAddressSelect, autocompleteEnabled],\n  );\n  return (\n    <AddressAutofillContext.Provider value={value}>\n      {children}\n    </AddressAutofillContext.Provider>\n  );\n};\n\nexport function useAddressAutofill() {\n  return useContext(AddressAutofillContext);\n}\n","import { type CountryCode } from '@wix/form-multiline-address';\nimport React, {\n  createContext,\n  type ReactNode,\n  useContext,\n  useMemo,\n} from 'react';\n\ntype CountryCodeValue = {\n  countryCode?: CountryCode;\n};\n\nconst CountryCodeContext = createContext<CountryCodeValue | undefined>(\n  undefined,\n);\n\nexport interface CountryCodeProviderProps {\n  children: ReactNode;\n  countryCode?: CountryCode;\n}\n\nexport const CountryCodeProvider = ({\n  children,\n  countryCode,\n}: CountryCodeProviderProps) => {\n  const value = useMemo(() => ({ countryCode }), [countryCode]);\n  return (\n    <CountryCodeContext.Provider value={value}>\n      {children}\n    </CountryCodeContext.Provider>\n  );\n};\n\nexport function useCountryCode() {\n  const context = useContext(CountryCodeContext);\n  return context?.countryCode;\n}\n","import type { FormView, Field } from '../../../ui/form/types';\n\nconst ROW_WIDTH = 12;\n\nconst separateFields = (fields: Field[]) => {\n  const visibleFields = fields.filter(\n    (field: Field) => !field.properties.hidden,\n  );\n  const hiddenFields = fields.filter((field: Field) => field.properties.hidden);\n\n  return { visibleFields, hiddenFields };\n};\n\nconst createRowMap = (\n  visibleFields: Field[],\n): { [rowIndex: number]: Field[] } => {\n  const rowMap: { [rowIndex: number]: Field[] } = {};\n  visibleFields.forEach((field: Field) => {\n    const row = field.layout.row;\n    if (!rowMap[row]) {\n      rowMap[row] = [];\n    }\n    rowMap[row].push(field);\n  });\n\n  return rowMap;\n};\n\nconst findRowsWithGaps = (rowMap: {\n  [rowIndex: number]: Field[];\n}): { [rowIndex: number]: Field[] } => {\n  const rowsWithGaps: { [rowIndex: number]: Field[] } = {};\n  Object.keys(rowMap).forEach((rowKey) => {\n    const row = parseInt(rowKey, 10);\n    const fieldsInRow = rowMap[row];\n    const totalWidth = fieldsInRow.reduce(\n      (sum, field) => sum + field.layout.width,\n      0,\n    );\n\n    if (totalWidth !== ROW_WIDTH) {\n      rowsWithGaps[row] = fieldsInRow;\n    }\n  });\n\n  return rowsWithGaps;\n};\n\nconst recalculateFieldLayouts = (\n  fields: Field[],\n  rowsWithGaps: { [rowIndex: number]: Field[] },\n): Field[] => {\n  return fields.map((field: Field) => {\n    const row = field.layout.row;\n\n    if (rowsWithGaps[row] && !field.properties.hidden) {\n      const fieldsInRow = rowsWithGaps[row];\n      const fieldCount = fieldsInRow.length;\n      const newWidth = ROW_WIDTH / fieldCount;\n      const fieldPosition = fieldsInRow.findIndex((f) => f.id === field.id);\n      const newColumn = newWidth * fieldPosition;\n\n      return {\n        ...field,\n        layout: {\n          ...field.layout,\n          width: newWidth,\n          column: newColumn,\n        },\n      };\n    }\n\n    return field;\n  });\n};\n\nconst moveHiddenFieldsToBottom = (\n  fields: Field[],\n  visibleFields: Field[],\n  hiddenFields: Field[],\n): Field[] => {\n  const maxVisibleRow = Math.max(\n    ...visibleFields.map((field) => field.layout.row),\n    -1,\n  );\n\n  return fields.map((field: Field) => {\n    if (field.properties.hidden) {\n      const hiddenFieldIndex = hiddenFields.findIndex((f) => f.id === field.id);\n      return {\n        ...field,\n        layout: {\n          ...field.layout,\n          row: maxVisibleRow + 1 + hiddenFieldIndex,\n        },\n      };\n    }\n\n    return field;\n  });\n};\n\nexport const removeGaps = (baseForm: FormView): FormView => {\n  const { visibleFields, hiddenFields } = separateFields(baseForm.fields);\n\n  const rowMap = createRowMap(visibleFields);\n\n  const rowsWithGaps = findRowsWithGaps(rowMap);\n\n  const fieldsWithRecalculatedLayouts = recalculateFieldLayouts(\n    baseForm.fields,\n    rowsWithGaps,\n  );\n\n  const fieldsWithHiddenMoved = moveHiddenFieldsToBottom(\n    fieldsWithRecalculatedLayouts,\n    visibleFields,\n    hiddenFields,\n  );\n\n  return {\n    ...baseForm,\n    fields: fieldsWithHiddenMoved,\n  };\n};\n","import { type FormTemplate } from '@wix/ambassador-forms-v1-form-template/types';\nimport { type Form, type FormField } from '@wix/ambassador-forms-v4-form/types';\n\nfunction isDefined<T>(value: T): boolean {\n  return !(value === null || value === undefined);\n}\n\nexport function applyMultilineAddressSettings(\n  form: Form | FormTemplate,\n  settings?: Record<string, any>,\n  multilineAddressValidation?: Record<string, any>,\n): Form | FormTemplate {\n  if (!settings || !multilineAddressValidation) {\n    return form;\n  }\n\n  return {\n    ...form,\n    fields: (form.fields ?? []).map((field: FormField) => {\n      const { show, ...rest } = settings[field.target!] || {};\n      const { required } = multilineAddressValidation[field.target!] || {};\n\n      return {\n        ...field,\n        view: {\n          ...field.view,\n          ...rest,\n        },\n        ...(isDefined(show) && { hidden: !show }),\n        ...(isDefined(required) &&\n          isDefined(field.validation) && {\n            validation: {\n              ...field.validation,\n              required,\n              // TODO: Fix type\n            } as any,\n          }),\n      };\n    }),\n  };\n}\n","import { type Field } from '../ui/form/types';\n\nexport const overrideFieldIds = (\n  fields: Field[],\n  newFieldIdsByTarget: Record<string, string>,\n) => {\n  return fields.map((field) => ({\n    ...field,\n    id: 'target' in field ? newFieldIdsByTarget[field.target] : field.id,\n  }));\n};\n","import React, {\n  createContext,\n  type ReactElement,\n  type ReactNode,\n  useContext,\n  useMemo,\n} from 'react';\n\nexport type AddressFieldKey =\n  | 'country'\n  | 'subdivision'\n  | 'city'\n  | 'addressLine'\n  | 'addressLine2'\n  | 'postalCode'\n  | 'streetName'\n  | 'streetNumber';\n\ntype AddressFieldsContextValue = {\n  fields: Record<AddressFieldKey, ReactElement | undefined>;\n};\n\nconst AddressFieldsContext = createContext<\n  AddressFieldsContextValue | undefined\n>(undefined);\n\nexport interface AddressFieldsProviderProps {\n  children: ReactNode;\n  fields: Record<AddressFieldKey, ReactElement | undefined>;\n}\n\nexport const AddressFieldsProvider = ({\n  children,\n  fields,\n}: AddressFieldsProviderProps) => {\n  const value = useMemo(() => ({ fields }), [fields]);\n  return (\n    <AddressFieldsContext.Provider value={value}>\n      {children}\n    </AddressFieldsContext.Provider>\n  );\n};\n\nexport function useAddressFields(\n  key: AddressFieldKey,\n): ReactElement | undefined {\n  const context = useContext(AddressFieldsContext);\n  if (!context) {\n    throw new Error(\n      'useAddressFields must be used within AddressFieldsProvider',\n    );\n  }\n  return context.fields[key];\n}\n","import localeDataset from '@wix/locale-dataset-javascript';\n\nimport { useTranslation } from '../contexts/translation-context';\nimport { useCountryCode } from '../fields/multiline-address/multiline-address/country-code-context';\n\nexport type AddressPart =\n  | 'country'\n  | 'subdivision'\n  | 'addressLine1'\n  | 'addressLine2'\n  | 'city'\n  | 'zipCode'\n  | 'streetName'\n  | 'streetNumber'\n  | 'phone'\n  | 'company';\n\nexport function useAddressLabel(addressPart: AddressPart) {\n  const { t } = useTranslation();\n  const countryCode = useCountryCode();\n  const country =\n    countryCode && localeDataset.getCountryByShortKey(countryCode);\n  const addressKeys = country\n    ? country.addressPartDisplayNames\n    : localeDataset.getDefaultAddressDisplayNames();\n  const labelKey = addressKeys[addressPart];\n  const label = labelKey ? t(labelKey) : '';\n  return label;\n}\n","import React, { type ReactNode, useRef } from 'react';\nimport {\n  TextField as TextFieldRAC,\n  Input as InputRAC,\n} from 'react-aria-components';\n\nimport { useFocusFieldEvent } from '../../../contexts/events-context';\nimport { useFieldAttributes } from '../../../contexts/field-attributes-context';\nimport { useFieldPropsV2 } from '../../../contexts/field-props-context';\nimport { type MlaAddressLine2Props } from '../../../fields/mla-address-line-2/mla-address-line-2/mla-address-line-2-props';\nimport { useAddressLabel } from '../../../hooks/use-address-label';\nimport {\n  findChildOfType,\n  applyInternalProps,\n} from '../../../services/find-child';\nimport { Description } from '../../field-description/field-description-headless';\nimport { Error } from '../../field-error/field-error-headless';\nimport {\n  Label,\n  type LabelInternalProps,\n} from '../../field-label/field-label-headless';\n\nexport type AddressLine2Props = {\n  children: ReactNode;\n};\n\nexport const AddressLine2 = ({ children }: AddressLine2Props) => {\n  const {\n    id,\n    value,\n    onChange,\n    disabled,\n    required,\n    hasError,\n    onBlur,\n    onFocus,\n    FieldLayout,\n  } = useFieldPropsV2<MlaAddressLine2Props>();\n\n  const addressLine2Label = useAddressLabel('addressLine2');\n  const labelElement = findChildOfType(children, AddressLine2.Label);\n  const inputElement = findChildOfType(children, AddressLine2.Input);\n  const descriptionElement = findChildOfType(\n    children,\n    AddressLine2.Description,\n  );\n  const errorElement = findChildOfType(children, AddressLine2.Error);\n\n  return (\n    <FieldLayout\n      fieldId={id}\n      renderLabel={() =>\n        applyInternalProps<LabelInternalProps>(labelElement, {\n          label: addressLine2Label,\n        })\n      }\n      renderInput={() => (\n        <TextFieldRAC\n          value={value ?? ''}\n          onChange={onChange}\n          isDisabled={disabled}\n          isRequired={required}\n          isInvalid={hasError}\n          onBlur={onBlur}\n          onFocus={onFocus}\n        >\n          {inputElement}\n        </TextFieldRAC>\n      )}\n      renderDescription={() => (\n        <>\n          {descriptionElement}\n          {errorElement}\n        </>\n      )}\n    />\n  );\n};\n\ntype InputProps = {\n  className?: string;\n};\n\nconst Input = ({ className }: InputProps) => {\n  const { id } = useFieldPropsV2<MlaAddressLine2Props>();\n  const { inputId, ariaDescribedBy } = useFieldAttributes();\n\n  const inputRef = useRef<HTMLInputElement>(null);\n\n  useFocusFieldEvent(() => {\n    inputRef.current?.focus();\n  }, id);\n\n  return (\n    <InputRAC\n      ref={inputRef}\n      id={inputId}\n      aria-describedby={ariaDescribedBy}\n      className={className}\n    />\n  );\n};\n\nAddressLine2.Label = Label;\nAddressLine2.Input = Input;\nAddressLine2.Description = Description;\nAddressLine2.Error = Error;\n","export function transformSDKFloatToRESTFloat(val) {\n    return isFinite(val) ? val : val.toString();\n}\nexport function transformRESTFloatToSDKFloat(val) {\n    if (val === 'NaN') {\n        return NaN;\n    }\n    if (val === 'Infinity') {\n        return Infinity;\n    }\n    if (val === '-Infinity') {\n        return -Infinity;\n    }\n    return val;\n}\n","import { removeUndefinedKeys } from '../utils.js';\nexport function transformSDKAddressToRESTAddress(payload) {\n    return (payload &&\n        removeUndefinedKeys({\n            city: payload.city,\n            hint: payload.hint,\n            subdivision: payload.subdivision,\n            country: payload.country,\n            postalCode: payload.postalCode,\n            formattedAddress: payload.formatted,\n            geocode: payload.location,\n            addressLine: payload.addressLine1,\n            addressLine2: payload.addressLine2,\n            streetAddress: payload.streetAddress && {\n                name: payload.streetAddress.name,\n                number: payload.streetAddress.number,\n                apt: payload.streetAddress.apt,\n                formattedAddressLine: payload.streetAddress.formattedAddressLine,\n            },\n        }));\n}\nexport function transformRESTAddressToSDKAddress(payload) {\n    return (payload &&\n        removeUndefinedKeys({\n            formatted: payload.formattedAddress,\n            location: payload.geocode,\n            addressLine1: payload.addressLine,\n            addressLine2: payload.addressLine2,\n            streetAddress: payload.streetAddress && {\n                name: payload.streetAddress.name,\n                number: payload.streetAddress.number,\n                apt: payload.streetAddress.apt,\n                formattedAddressLine: payload.streetAddress.formattedAddressLine,\n            },\n            hint: payload.hint,\n            city: payload.city,\n            subdivision: payload.subdivision,\n            country: payload.country,\n            postalCode: payload.postalCode,\n            countryFullname: payload.countryFullname,\n            subdivisionFullname: payload.subdivisionFullname,\n        }));\n}\n","import { toURLSearchParams } from '@wix/sdk-runtime/rest-modules';\nimport { transformRESTFloatToSDKFloat } from '@wix/sdk-runtime/transformations/float';\nimport { transformPaths } from '@wix/sdk-runtime/transformations/transform-paths';\nimport { resolveUrl } from '@wix/sdk-runtime/rest-modules';\nimport { ResolveUrlOpts } from '@wix/sdk-runtime/rest-modules';\nimport { RequestOptionsFactory } from '@wix/sdk-types';\n\nfunction resolveComWixpressViAtlasServiceV2PlacesServiceV2Url(\n  opts: Omit<ResolveUrlOpts, 'domainToMappings'>\n) {\n  const domainToMappings = {\n    'api._api_base_domain_': [\n      {\n        srcPath: '/wix-atlas-service-web',\n        destPath: '',\n      },\n    ],\n    'bo._base_domain_': [\n      {\n        srcPath: '/wix-atlas-service-web',\n        destPath: '',\n      },\n    ],\n    'wixbo.ai': [\n      {\n        srcPath: '/wix-atlas-service-web',\n        destPath: '',\n      },\n    ],\n    'wix-bo.com': [\n      {\n        srcPath: '/wix-atlas-service-web',\n        destPath: '',\n      },\n    ],\n    _: [\n      {\n        srcPath: '/api/wix-atlas-service-web',\n        destPath: '',\n      },\n      {\n        srcPath: '/_api/wix-atlas-service-web',\n        destPath: '',\n      },\n    ],\n    'www._base_domain_': [\n      {\n        srcPath: '/wix-atlas-service-web',\n        destPath: '',\n      },\n      {\n        srcPath: '/_api/wix-atlas-service-web',\n        destPath: '',\n      },\n      {\n        srcPath: '/api/wix-atlas-service-web',\n        destPath: '',\n      },\n    ],\n    'manage._base_domain_': [\n      {\n        srcPath: '/wix-atlas-service-web',\n        destPath: '',\n      },\n    ],\n    'editor._base_domain_': [\n      {\n        srcPath: '/wix-atlas-service-web',\n        destPath: '',\n      },\n      {\n        srcPath: '/api/wix-atlas-service-web',\n        destPath: '',\n      },\n    ],\n    'blocks._base_domain_': [\n      {\n        srcPath: '/wix-atlas-service-web',\n        destPath: '',\n      },\n      {\n        srcPath: '/api/wix-atlas-service-web',\n        destPath: '',\n      },\n    ],\n    'create.editorx': [\n      {\n        srcPath: '/wix-atlas-service-web',\n        destPath: '',\n      },\n      {\n        srcPath: '/api/wix-atlas-service-web',\n        destPath: '',\n      },\n    ],\n    'editor.wixapps.net': [\n      {\n        srcPath: '/api/wix-atlas-service-web',\n        destPath: '',\n      },\n    ],\n    '*.wixforms.com': [\n      {\n        srcPath: '/_api/wix-atlas-service-web',\n        destPath: '',\n      },\n    ],\n    'platform.rise.ai': [\n      {\n        srcPath: '/_api/wix-atlas-service-web',\n        destPath: '',\n      },\n      {\n        srcPath: '/wix-atlas-service-web',\n        destPath: '',\n      },\n    ],\n    'www.wixapis.com': [\n      {\n        srcPath: '/api/wix-atlas-service-web',\n        destPath: '',\n      },\n    ],\n  };\n\n  return resolveUrl(Object.assign(opts, { domainToMappings }));\n}\n\nconst PACKAGE_NAME = '@wix/auto_sdk_atlas_places';\n\n/** Once you have a search_id from a autocomplete Search, you can request more details about a particular establishment or point of interest by initiating a get place request. */\nexport function getPlace(payload: object): RequestOptionsFactory<any> {\n  function __getPlace({ host }: any) {\n    const metadata = {\n      entityFqdn: 'wix.atlas.v2.place',\n      method: 'GET' as any,\n      methodFqn: 'com.wixpress.vi.atlas.service.v2.PlacesServiceV2.GetPlace',\n      packageName: PACKAGE_NAME,\n      migrationOptions: {\n        optInTransformResponse: true,\n      },\n      url: resolveComWixpressViAtlasServiceV2PlacesServiceV2Url({\n        protoPath: '/v2/place',\n        data: payload,\n        host,\n      }),\n      params: toURLSearchParams(payload),\n      transformResponse: (payload: any) =>\n        transformPaths(payload, [\n          {\n            transformFn: transformRESTFloatToSDKFloat,\n            paths: [\n              { path: 'place.address.geocode.latitude' },\n              { path: 'place.address.geocode.longitude' },\n            ],\n          },\n        ]),\n    };\n\n    return metadata;\n  }\n\n  return __getPlace;\n}\n","import { transformError as sdkTransformError } from '@wix/sdk-runtime/transform-error';\nimport {\n  renameKeysFromSDKRequestToRESTRequest,\n  renameKeysFromRESTResponseToSDKResponse,\n} from '@wix/sdk-runtime/rename-all-nested-keys';\nimport { HttpClient, NonNullablePaths } from '@wix/sdk-types';\nimport * as ambassadorWixAtlasV2Place from './atlas-v2-place-places.http.js';\nimport { transformRESTAddressToSDKAddress } from '@wix/sdk-runtime/transformations/address';\nimport { transformPaths } from '@wix/sdk-runtime/transformations/transform-paths';\n\nexport interface Place {\n  /** The given place id */\n  placeId?: string;\n  /** The Address object */\n  address?: Address;\n  /** The Place type. For example: airport, library etc... */\n  types?: string[];\n}\n\n/** Physical address */\nexport interface Address extends AddressStreetOneOf {\n  /** Street name and number. */\n  streetAddress?: StreetAddress;\n  /** Main address line, usually street and number as free text. */\n  addressLine1?: string | null;\n  /**\n   * Country code.\n   * @format COUNTRY\n   */\n  country?: string | null;\n  /** Subdivision. Usually a state, region, prefecture, or province code, according to [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2). */\n  subdivision?: string | null;\n  /** City name. */\n  city?: string | null;\n  /** Zip/postal code. */\n  postalCode?: string | null;\n  /** Free text providing more detailed address info. Usually contains Apt, Suite, and Floor. */\n  addressLine2?: string | null;\n}\n\n/** @oneof */\nexport interface AddressStreetOneOf {\n  /** Street name and number. */\n  streetAddress?: StreetAddress;\n  /** Main address line, usually street and number as free text. */\n  addressLine?: string | null;\n}\n\nexport interface StreetAddress {\n  /** Street number. */\n  number?: string;\n  /** Street name. */\n  name?: string;\n}\n\nexport interface AddressLocation {\n  /** Address latitude. */\n  latitude?: number | null;\n  /** Address longitude. */\n  longitude?: number | null;\n}\n\nexport interface Subdivision {\n  /** Short subdivision code. */\n  code?: string;\n  /** Subdivision full name. */\n  name?: string;\n}\n\nexport enum SubdivisionType {\n  UNKNOWN_SUBDIVISION_TYPE = 'UNKNOWN_SUBDIVISION_TYPE',\n  /** State */\n  ADMINISTRATIVE_AREA_LEVEL_1 = 'ADMINISTRATIVE_AREA_LEVEL_1',\n  /** County */\n  ADMINISTRATIVE_AREA_LEVEL_2 = 'ADMINISTRATIVE_AREA_LEVEL_2',\n  /** City/town */\n  ADMINISTRATIVE_AREA_LEVEL_3 = 'ADMINISTRATIVE_AREA_LEVEL_3',\n  /** Neighborhood/quarter */\n  ADMINISTRATIVE_AREA_LEVEL_4 = 'ADMINISTRATIVE_AREA_LEVEL_4',\n  /** Street/block */\n  ADMINISTRATIVE_AREA_LEVEL_5 = 'ADMINISTRATIVE_AREA_LEVEL_5',\n  /** ADMINISTRATIVE_AREA_LEVEL_0. Indicates the national political entity, and is typically the highest order type returned by the Geocoder. */\n  COUNTRY = 'COUNTRY',\n}\n\n/** @enumType */\nexport type SubdivisionTypeWithLiterals =\n  | SubdivisionType\n  | 'UNKNOWN_SUBDIVISION_TYPE'\n  | 'ADMINISTRATIVE_AREA_LEVEL_1'\n  | 'ADMINISTRATIVE_AREA_LEVEL_2'\n  | 'ADMINISTRATIVE_AREA_LEVEL_3'\n  | 'ADMINISTRATIVE_AREA_LEVEL_4'\n  | 'ADMINISTRATIVE_AREA_LEVEL_5'\n  | 'COUNTRY';\n\nexport interface GetPlaceRequest {\n  searchId: string;\n  /**\n   * A random string which identifies an autocomplete session for billing purposes. The session begins when the user starts typing a query, and concludes when they select a place and a call to Get Place is made. Once a session has concluded, the token is no longer valid. your app must generate a fresh token for each session.\n   * @format GUID\n   */\n  sessionToken?: string | null;\n}\n\nexport interface GetPlaceResponse {\n  place?: Place;\n}\n\n/**\n * Once you have a search_id from a autocomplete Search, you can request more details about a particular establishment or point of interest by initiating a get place request.\n * @public\n * @documentationMaturity preview\n * @requiredField searchId\n * @permissionId WIX_ATLAS.GET_PLACE\n * @applicableIdentity APP\n * @fqn com.wixpress.vi.atlas.service.v2.PlacesServiceV2.GetPlace\n */\nexport async function getPlace(\n  searchId: string,\n  options?: GetPlaceOptions\n): Promise<\n  NonNullablePaths<\n    GetPlaceResponse,\n    | `place.placeId`\n    | `place.address.streetAddress.number`\n    | `place.address.streetAddress.name`\n    | `place.types`,\n    5\n  >\n> {\n  // @ts-ignore\n  const { httpClient, sideEffects } = arguments[2] as {\n    httpClient: HttpClient;\n    sideEffects?: any;\n  };\n\n  const payload = renameKeysFromSDKRequestToRESTRequest({\n    searchId: searchId,\n    sessionToken: options?.sessionToken,\n  });\n\n  const reqOpts = ambassadorWixAtlasV2Place.getPlace(payload);\n\n  sideEffects?.onSiteCall?.();\n  try {\n    const result = await httpClient.request(reqOpts);\n    sideEffects?.onSuccess?.(result);\n\n    return renameKeysFromRESTResponseToSDKResponse(\n      transformPaths(result.data, [\n        {\n          transformFn: transformRESTAddressToSDKAddress,\n          paths: [{ path: 'place.address' }],\n        },\n      ])\n    )!;\n  } catch (err: any) {\n    const transformedError = sdkTransformError(\n      err,\n      {\n        spreadPathsToArguments: {},\n        explicitPathsToArguments: {\n          searchId: '$[0]',\n          sessionToken: '$[1].sessionToken',\n        },\n        singleArgumentUnchanged: false,\n      },\n      ['searchId', 'options']\n    );\n    sideEffects?.onError?.(err);\n\n    throw transformedError;\n  }\n}\n\nexport interface GetPlaceOptions {\n  /**\n   * A random string which identifies an autocomplete session for billing purposes. The session begins when the user starts typing a query, and concludes when they select a place and a call to Get Place is made. Once a session has concluded, the token is no longer valid. your app must generate a fresh token for each session.\n   * @format GUID\n   */\n  sessionToken?: string | null;\n}\n","import { HttpClient, NonNullablePaths } from '@wix/sdk-types';\nimport {\n  GetPlaceOptions,\n  GetPlaceResponse,\n  getPlace as universalGetPlace,\n} from './atlas-v2-place-places.universal.js';\n\nexport const __metadata = { PACKAGE_NAME: '@wix/atlas' };\n\nexport function getPlace(httpClient: HttpClient): GetPlaceSignature {\n  return (searchId: string, options?: GetPlaceOptions) =>\n    universalGetPlace(\n      searchId,\n      options,\n      // @ts-ignore\n      { httpClient }\n    );\n}\n\ninterface GetPlaceSignature {\n  /**\n   * Once you have a search_id from a autocomplete Search, you can request more details about a particular establishment or point of interest by initiating a get place request.\n   */\n  (searchId: string, options?: GetPlaceOptions): Promise<\n    NonNullablePaths<\n      GetPlaceResponse,\n      | `place.placeId`\n      | `place.address.streetAddress.number`\n      | `place.address.streetAddress.name`\n      | `place.types`,\n      5\n    >\n  >;\n}\n\nexport {\n  Address,\n  AddressLocation,\n  AddressStreetOneOf,\n  GetPlaceOptions,\n  GetPlaceRequest,\n  GetPlaceResponse,\n  Place,\n  StreetAddress,\n  Subdivision,\n  SubdivisionType,\n} from './atlas-v2-place-places.universal.js';\n","import { getPlace as publicGetPlace } from './atlas-v2-place-places.public.js';\nimport { createRESTModule } from '@wix/sdk-runtime/rest-modules';\nimport { BuildRESTFunction, MaybeContext } from '@wix/sdk-types';\n\nexport const getPlace: MaybeContext<\n  BuildRESTFunction<typeof publicGetPlace> & typeof publicGetPlace\n> = /*#__PURE__*/ createRESTModule(publicGetPlace);\n\nexport { SubdivisionType } from './atlas-v2-place-places.universal.js';\nexport {\n  Place,\n  Address,\n  AddressStreetOneOf,\n  StreetAddress,\n  AddressLocation,\n  Subdivision,\n  GetPlaceRequest,\n  GetPlaceResponse,\n  GetPlaceOptions,\n} from './atlas-v2-place-places.universal.js';\nexport { SubdivisionTypeWithLiterals } from './atlas-v2-place-places.universal.js';\n","import { transformSDKFloatToRESTFloat } from '@wix/sdk-runtime/transformations/float';\nimport { transformPaths } from '@wix/sdk-runtime/transformations/transform-paths';\nimport { resolveUrl } from '@wix/sdk-runtime/rest-modules';\nimport { ResolveUrlOpts } from '@wix/sdk-runtime/rest-modules';\nimport { RequestOptionsFactory } from '@wix/sdk-types';\n\nfunction resolveComWixpressViAtlasServiceV2AutocompleteServiceV2Url(\n  opts: Omit<ResolveUrlOpts, 'domainToMappings'>\n) {\n  const domainToMappings = {\n    'api._api_base_domain_': [\n      {\n        srcPath: '/wix-atlas-service-web',\n        destPath: '',\n      },\n    ],\n    'bo._base_domain_': [\n      {\n        srcPath: '/wix-atlas-service-web',\n        destPath: '',\n      },\n    ],\n    'wixbo.ai': [\n      {\n        srcPath: '/wix-atlas-service-web',\n        destPath: '',\n      },\n    ],\n    'wix-bo.com': [\n      {\n        srcPath: '/wix-atlas-service-web',\n        destPath: '',\n      },\n    ],\n    _: [\n      {\n        srcPath: '/api/wix-atlas-service-web',\n        destPath: '',\n      },\n      {\n        srcPath: '/_api/wix-atlas-service-web',\n        destPath: '',\n      },\n    ],\n    'www._base_domain_': [\n      {\n        srcPath: '/wix-atlas-service-web',\n        destPath: '',\n      },\n      {\n        srcPath: '/_api/wix-atlas-service-web',\n        destPath: '',\n      },\n      {\n        srcPath: '/api/wix-atlas-service-web',\n        destPath: '',\n      },\n    ],\n    'manage._base_domain_': [\n      {\n        srcPath: '/wix-atlas-service-web',\n        destPath: '',\n      },\n    ],\n    'editor._base_domain_': [\n      {\n        srcPath: '/wix-atlas-service-web',\n        destPath: '',\n      },\n      {\n        srcPath: '/api/wix-atlas-service-web',\n        destPath: '',\n      },\n    ],\n    'blocks._base_domain_': [\n      {\n        srcPath: '/wix-atlas-service-web',\n        destPath: '',\n      },\n      {\n        srcPath: '/api/wix-atlas-service-web',\n        destPath: '',\n      },\n    ],\n    'create.editorx': [\n      {\n        srcPath: '/wix-atlas-service-web',\n        destPath: '',\n      },\n      {\n        srcPath: '/api/wix-atlas-service-web',\n        destPath: '',\n      },\n    ],\n    'editor.wixapps.net': [\n      {\n        srcPath: '/api/wix-atlas-service-web',\n        destPath: '',\n      },\n    ],\n    '*.wixforms.com': [\n      {\n        srcPath: '/_api/wix-atlas-service-web',\n        destPath: '',\n      },\n    ],\n    'platform.rise.ai': [\n      {\n        srcPath: '/_api/wix-atlas-service-web',\n        destPath: '',\n      },\n      {\n        srcPath: '/wix-atlas-service-web',\n        destPath: '',\n      },\n    ],\n    'www.wixapis.com': [\n      {\n        srcPath: '/api/wix-atlas-service-web',\n        destPath: '',\n      },\n    ],\n  };\n\n  return resolveUrl(Object.assign(opts, { domainToMappings }));\n}\n\nconst PACKAGE_NAME = '@wix/auto_sdk_atlas_autocomplete';\n\n/** A Predict end-point take an input and returns an list of Prediction object. */\nexport function predict(payload: object): RequestOptionsFactory<any> {\n  function __predict({ host }: any) {\n    const serializedData = transformPaths(payload, [\n      {\n        transformFn: transformSDKFloatToRESTFloat,\n        paths: [\n          { path: 'origin.latitude' },\n          { path: 'origin.longitude' },\n          { path: 'location.latitude' },\n          { path: 'location.longitude' },\n        ],\n      },\n    ]);\n    const metadata = {\n      entityFqdn: 'wix.atlas.v2.prediction',\n      method: 'POST' as any,\n      methodFqn:\n        'com.wixpress.vi.atlas.service.v2.AutocompleteServiceV2.Predict',\n      packageName: PACKAGE_NAME,\n      migrationOptions: {\n        optInTransformResponse: true,\n      },\n      url: resolveComWixpressViAtlasServiceV2AutocompleteServiceV2Url({\n        protoPath: '/v2/predict',\n        data: serializedData,\n        host,\n      }),\n      data: serializedData,\n    };\n\n    return metadata;\n  }\n\n  return __predict;\n}\n","import { transformError as sdkTransformError } from '@wix/sdk-runtime/transform-error';\nimport {\n  renameKeysFromSDKRequestToRESTRequest,\n  renameKeysFromRESTResponseToSDKResponse,\n} from '@wix/sdk-runtime/rename-all-nested-keys';\nimport { HttpClient, NonNullablePaths } from '@wix/sdk-types';\nimport * as ambassadorWixAtlasV2Prediction from './atlas-v2-prediction-autocomplete.http.js';\n\nexport interface Prediction {\n  /** The human-readable name of the prediction */\n  description?: string;\n  /** The id of the prediction that can be use in place api. Available for short time. */\n  searchId?: string;\n  /** Contains an array with offset value and length. These describe the location of the entered term in the prediction result text, so that the term can be highlighted if desired */\n  matchedSubstrings?: MatchedSubstrings[];\n  /** Provides pre-formatted text that can be shown in your autocomplete results */\n  textStructure?: TextStructure;\n  /** Contains an integer indicating the straight-line distance between the predicted place, and the specified origin point, in meters. */\n  distanceInMeters?: number | null;\n}\n\nexport interface MatchedSubstrings {\n  length?: number;\n  offset?: number;\n}\n\nexport interface TextStructure {\n  /** Contains the main text of a prediction, usually the name of the place */\n  mainText?: string;\n  /** Contains the secondary text of a prediction, usually the location of the place */\n  secondaryText?: string;\n  /** Contains an array with offset value and length. These describe the location of the entered term in the prediction result text, so that the term can be highlighted if desired */\n  mainTextMatchedSubstrings?: MatchedSubstrings[];\n}\n\nexport interface ListPredictionsRequest {\n  /** The text the predictions will be based on. */\n  input?: string;\n  /** The origin point from which to calculate straight-line distance to the destination */\n  origin?: AddressLocation;\n  /** The point around which you wish to retrieve place information */\n  location?: AddressLocation;\n  /** The acceptable distance from that location (in meters) */\n  radius?: string | null;\n  /** Filters the user can add in order to get more accurate results */\n  filterBy?: FilterBy[];\n}\n\nexport interface AddressLocation {\n  /** Address latitude. */\n  latitude?: number | null;\n  /** Address longitude. */\n  longitude?: number | null;\n}\n\nexport interface FilterBy {\n  /** One of the filter types enum */\n  filterType?: FilterTypeWithLiterals;\n  /** Free text like \"us\" */\n  filterValue?: string;\n}\n\nexport enum FilterType {\n  /** Filter by zip code */\n  zip_code = 'zip_code',\n  /** Filter by 2-letters or 3-letters country code */\n  country_code = 'country_code',\n}\n\n/** @enumType */\nexport type FilterTypeWithLiterals = FilterType | 'zip_code' | 'country_code';\n\nexport interface ListPredictionsResponse {\n  predictions?: Prediction[];\n}\n\nexport interface PredictRequest {\n  /**\n   * The text the predictions will be based on.\n   * @minLength 1\n   */\n  input: string;\n  /** The origin point from which to calculate straight-line distance to the destination */\n  origin?: AddressLocation;\n  /** The point around which you wish to retrieve place information */\n  location?: AddressLocation;\n  /** The acceptable distance from that location (in meters) */\n  radius?: string | null;\n  /** alpha-2 or alpha-3 ISO-3166 country codes to filter by */\n  countryCodes?: string[];\n  /**\n   * A random string which identifies an autocomplete session for billing purposes. The session begins when the user starts typing a query, and concludes when they select a place and a call to Get Place is made. Once a session has concluded, the token is no longer valid. your app must generate a fresh token for each session.\n   * @format GUID\n   */\n  sessionToken?: string | null;\n}\n\nexport interface PredictResponse {\n  predictions?: Prediction[];\n}\n\n/**\n * A Predict end-point take an input and returns an list of Prediction object.\n * @param input - The text the predictions will be based on.\n * @public\n * @documentationMaturity preview\n * @requiredField input\n * @permissionId WIX_ATLAS.LIST_PREDICTIONS\n * @applicableIdentity APP\n * @fqn com.wixpress.vi.atlas.service.v2.AutocompleteServiceV2.Predict\n */\nexport async function predict(\n  input: string,\n  options?: PredictOptions\n): Promise<\n  NonNullablePaths<\n    PredictResponse,\n    | `predictions`\n    | `predictions.${number}.description`\n    | `predictions.${number}.searchId`\n    | `predictions.${number}.textStructure.mainText`\n    | `predictions.${number}.textStructure.secondaryText`,\n    5\n  >\n> {\n  // @ts-ignore\n  const { httpClient, sideEffects } = arguments[2] as {\n    httpClient: HttpClient;\n    sideEffects?: any;\n  };\n\n  const payload = renameKeysFromSDKRequestToRESTRequest({\n    input: input,\n    origin: options?.origin,\n    location: options?.location,\n    radius: options?.radius,\n    countryCodes: options?.countryCodes,\n    sessionToken: options?.sessionToken,\n  });\n\n  const reqOpts = ambassadorWixAtlasV2Prediction.predict(payload);\n\n  sideEffects?.onSiteCall?.();\n  try {\n    const result = await httpClient.request(reqOpts);\n    sideEffects?.onSuccess?.(result);\n\n    return renameKeysFromRESTResponseToSDKResponse(result.data)!;\n  } catch (err: any) {\n    const transformedError = sdkTransformError(\n      err,\n      {\n        spreadPathsToArguments: {},\n        explicitPathsToArguments: {\n          input: '$[0]',\n          origin: '$[1].origin',\n          location: '$[1].location',\n          radius: '$[1].radius',\n          countryCodes: '$[1].countryCodes',\n          sessionToken: '$[1].sessionToken',\n        },\n        singleArgumentUnchanged: false,\n      },\n      ['input', 'options']\n    );\n    sideEffects?.onError?.(err);\n\n    throw transformedError;\n  }\n}\n\nexport interface PredictOptions {\n  /** The origin point from which to calculate straight-line distance to the destination */\n  origin?: AddressLocation;\n  /** The point around which you wish to retrieve place information */\n  location?: AddressLocation;\n  /** The acceptable distance from that location (in meters) */\n  radius?: string | null;\n  /** alpha-2 or alpha-3 ISO-3166 country codes to filter by */\n  countryCodes?: string[];\n  /**\n   * A random string which identifies an autocomplete session for billing purposes. The session begins when the user starts typing a query, and concludes when they select a place and a call to Get Place is made. Once a session has concluded, the token is no longer valid. your app must generate a fresh token for each session.\n   * @format GUID\n   */\n  sessionToken?: string | null;\n}\n","import { HttpClient, NonNullablePaths } from '@wix/sdk-types';\nimport {\n  PredictOptions,\n  PredictResponse,\n  predict as universalPredict,\n} from './atlas-v2-prediction-autocomplete.universal.js';\n\nexport const __metadata = { PACKAGE_NAME: '@wix/atlas' };\n\nexport function predict(httpClient: HttpClient): PredictSignature {\n  return (input: string, options?: PredictOptions) =>\n    universalPredict(\n      input,\n      options,\n      // @ts-ignore\n      { httpClient }\n    );\n}\n\ninterface PredictSignature {\n  /**\n   * A Predict end-point take an input and returns an list of Prediction object.\n   * @param - The text the predictions will be based on.\n   */\n  (input: string, options?: PredictOptions): Promise<\n    NonNullablePaths<\n      PredictResponse,\n      | `predictions`\n      | `predictions.${number}.description`\n      | `predictions.${number}.searchId`\n      | `predictions.${number}.textStructure.mainText`\n      | `predictions.${number}.textStructure.secondaryText`,\n      5\n    >\n  >;\n}\n\nexport {\n  AddressLocation,\n  FilterBy,\n  FilterType,\n  ListPredictionsRequest,\n  ListPredictionsResponse,\n  MatchedSubstrings,\n  PredictOptions,\n  PredictRequest,\n  PredictResponse,\n  Prediction,\n  TextStructure,\n} from './atlas-v2-prediction-autocomplete.universal.js';\n","import { predict as publicPredict } from './atlas-v2-prediction-autocomplete.public.js';\nimport { createRESTModule } from '@wix/sdk-runtime/rest-modules';\nimport { BuildRESTFunction, MaybeContext } from '@wix/sdk-types';\n\nexport const predict: MaybeContext<\n  BuildRESTFunction<typeof publicPredict> & typeof publicPredict\n> = /*#__PURE__*/ createRESTModule(publicPredict);\n\nexport { FilterType } from './atlas-v2-prediction-autocomplete.universal.js';\nexport {\n  Prediction,\n  MatchedSubstrings,\n  TextStructure,\n  ListPredictionsRequest,\n  AddressLocation,\n  FilterBy,\n  ListPredictionsResponse,\n  PredictRequest,\n  PredictResponse,\n  PredictOptions,\n} from './atlas-v2-prediction-autocomplete.universal.js';\nexport { FilterTypeWithLiterals } from './atlas-v2-prediction-autocomplete.universal.js';\n","import type { DebouncedFunc } from 'lodash';\nimport debounce from 'lodash/debounce';\nimport { useCallback, useEffect, useRef } from 'react';\n\ntype UseDebouncedCallback = <Callback extends (...args: any[]) => void>(\n  cb: Callback,\n  dependencies: any[],\n  debounceMs?: number,\n) => DebouncedFunc<Callback>;\n\n/** A hook for creating a debounced callback function */\nconst useDebouncedCallback: UseDebouncedCallback = (\n  /** any function you want to debounce */\n  cb,\n  /** dependencies your callback relies on.\n   * Callback will be reevaluated when dependencies change -\n   * (same as React's useCallback hook) */\n  dependencies,\n  /** debounce timeout in milliseconds (default: 200) */\n  debounceMs = 200,\n) => {\n  const callbackRef = useRef(cb);\n  // eslint-disable-next-line react-hooks/exhaustive-deps\n  const debouncedCallback = useCallback(\n    debounce((...args) => {\n      callbackRef.current(...args);\n    }, debounceMs),\n    [debounceMs],\n  );\n  // update callback function when its dependencies change\n  useEffect(() => {\n    callbackRef.current = cb;\n  }, [cb, dependencies]);\n\n  return debouncedCallback;\n};\n\nexport default useDebouncedCallback;\n","import { useRef, useEffect } from 'react';\n\nconst useIsMounted = () => {\n  const mountedRef = useRef(true);\n  useEffect(() => {\n    const cleanup = () => {\n      mountedRef.current = false;\n    };\n    return cleanup;\n  }, []);\n\n  return () => mountedRef.current;\n};\n\nexport default useIsMounted;\n","import type {\n  CommonAddress,\n  Prediction,\n} from '@wix/ambassador-wix-atlas-service-web/types';\nimport { autocomplete, places } from '@wix/atlas';\nimport { useCallback, useRef, useState } from 'react';\n\nimport useDebouncedCallback from '../../address-input/use-debounced-callback';\nimport useIsMounted from '../../address-input/use-is-mounted';\n\ntype UpdatePredictions = ({ input, countryCodes }: any) => void;\ntype ClearPredictions = () => void;\n\ntype AtlasHeadless = {\n  predictions: Prediction[];\n  loading: boolean;\n  updatePredictions: UpdatePredictions;\n  clearPredictions: ClearPredictions;\n  getPlace: (searchId: string) => Promise<CommonAddress | undefined>;\n};\ntype AtlasHeadlessParams = {\n  onError?: (error: unknown) => void;\n  sessionToken: string;\n};\n\nconst initialFetchState = {\n  loading: false,\n  predictions: [] as Prediction[],\n};\n\nconst useAtlasHeadless = ({\n  onError,\n  sessionToken,\n}: AtlasHeadlessParams): AtlasHeadless => {\n  const debounceMs = 200;\n  const [{ loading, predictions }, setFetchState] = useState(initialFetchState);\n\n  const predictionsRequestId = useRef(0); // id of latest request to avoid race conditions\n  const isMounted = useIsMounted(); // checks whether component is still mounted\n\n  const clearPredictions = useCallback(() => {\n    // Increase request id counter\n    predictionsRequestId.current++;\n    setFetchState(initialFetchState);\n  }, []);\n\n  const updatePredictions: UpdatePredictions = useDebouncedCallback(\n    async ({ input, countryCodes }) => {\n      if (!isMounted()) {\n        return;\n      }\n\n      if (!input) {\n        clearPredictions();\n        return;\n      }\n\n      // Increase request id counter\n      const requestId = ++predictionsRequestId.current;\n\n      setFetchState((state) => ({ ...state, loading: true }));\n\n      let newPredictions: Prediction[] | undefined;\n      try {\n        const response = await autocomplete.predict(input, {\n          countryCodes,\n          sessionToken,\n        });\n        newPredictions = response.predictions as unknown as Prediction[];\n      } catch (error) {\n        // failed to fetch predictions\n        if (onError) {\n          onError(error);\n        } else {\n          console.error(error);\n        }\n      } finally {\n        // check if no new fetch request has been initiated\n        const isMostRecentRequest = requestId === predictionsRequestId.current;\n\n        if (isMounted() && isMostRecentRequest) {\n          setFetchState((state) => ({\n            loading: false,\n            // set new predictions if fetched properly, else keep current predictions\n            predictions: newPredictions || state.predictions,\n          }));\n        }\n      }\n    },\n    [autocomplete, onError],\n    debounceMs,\n  );\n\n  const getPlace = useCallback(\n    async (searchId: string) => {\n      const response = await places.getPlace(searchId, { sessionToken });\n      return response.place?.address as CommonAddress;\n    },\n    [sessionToken],\n  );\n\n  return {\n    predictions,\n    loading,\n    updatePredictions,\n    clearPredictions,\n    getPlace,\n  };\n};\n\nexport default useAtlasHeadless;\n","import { generateUUID } from '@wix/form-schema';\nimport React, {\n  type ReactNode,\n  useCallback,\n  useMemo,\n  useRef,\n  useState,\n} from 'react';\nimport {\n  ComboBox as ComboBoxRAC,\n  Input as InputRAC,\n  Popover as PopoverRAC,\n  ListBox as ListBoxRAC,\n  ListBoxItem as ListBoxItemRAC,\n  TextField as TextFieldRAC,\n} from 'react-aria-components';\n\nimport { useFocusFieldEvent } from '../../../contexts/events-context';\nimport { useFieldAttributes } from '../../../contexts/field-attributes-context';\nimport { useFieldPropsV2 } from '../../../contexts/field-props-context';\nimport { type MlaAddressLineProps } from '../../../fields/mla-address-line/mla-address-line/mla-address-line-props';\nimport { useAddressAutofill } from '../../../fields/multiline-address/multiline-address/address-autofill-context';\nimport { useCountryCode } from '../../../fields/multiline-address/multiline-address/country-code-context';\nimport { useAddressLabel } from '../../../hooks/use-address-label';\nimport {\n  applyInternalProps,\n  findChildOfType,\n} from '../../../services/find-child';\nimport { Description } from '../../field-description/field-description-headless';\nimport { Error } from '../../field-error/field-error-headless';\nimport {\n  Label,\n  type LabelInternalProps,\n} from '../../field-label/field-label-headless';\n\nimport useAtlasHeadless from './use-atlas-headless';\n\nexport type AddressLineProps = {\n  children: ReactNode;\n};\n\nexport const AddressLine = ({ children }: AddressLineProps) => {\n  const {\n    id,\n    value,\n    onChange,\n    disabled,\n    required,\n    hasError,\n    onBlur,\n    onFocus,\n    FieldLayout,\n    autocomplete,\n  } = useFieldPropsV2<MlaAddressLineProps>();\n\n  const { autocompleteEnabled } = useAddressAutofill();\n  const isAutocomplete = autocomplete || autocompleteEnabled;\n\n  const addressLineLabel = useAddressLabel('addressLine1');\n  const labelElement = findChildOfType(children, AddressLine.Label);\n  const inputElement = findChildOfType(children, AddressLine.Input);\n  const optionsElement = findChildOfType(children, AddressLine.Options);\n  const descriptionElement = findChildOfType(children, AddressLine.Description);\n  const errorElement = findChildOfType(children, AddressLine.Error);\n\n  if (isAutocomplete) {\n    return (\n      <FieldLayout\n        fieldId={id}\n        renderLabel={() =>\n          applyInternalProps<LabelInternalProps>(labelElement, {\n            label: addressLineLabel,\n          })\n        }\n        renderInput={() => (\n          <AddressLineAutocomplete\n            value={value}\n            onChange={onChange}\n            disabled={disabled}\n            required={required}\n            hasError={hasError}\n            onBlur={onBlur}\n            onFocus={onFocus}\n          >\n            {inputElement}\n            {optionsElement}\n          </AddressLineAutocomplete>\n        )}\n        renderDescription={() => (\n          <>\n            {descriptionElement}\n            {errorElement}\n          </>\n        )}\n      />\n    );\n  }\n\n  return (\n    <FieldLayout\n      fieldId={id}\n      renderLabel={() =>\n        applyInternalProps<LabelInternalProps>(labelElement, {\n          label: addressLineLabel,\n        })\n      }\n      renderInput={() => (\n        <TextFieldRAC\n          value={value ?? ''}\n          onChange={onChange}\n          isDisabled={disabled}\n          isRequired={required}\n          isInvalid={hasError}\n          onBlur={onBlur}\n          onFocus={onFocus}\n        >\n          {inputElement}\n        </TextFieldRAC>\n      )}\n      renderDescription={() => (\n        <>\n          {descriptionElement}\n          {errorElement}\n        </>\n      )}\n    />\n  );\n};\n\ntype AddressLineAutocompleteProps = {\n  children: ReactNode;\n  value?: string | null;\n  onChange: (value: string) => void;\n  disabled?: boolean;\n  required?: boolean;\n  hasError?: boolean;\n  onBlur?: () => void;\n  onFocus?: () => void;\n};\n\nconst AddressLineAutocomplete = ({\n  children,\n  value,\n  onChange,\n  disabled,\n  required,\n  hasError,\n  onBlur,\n  onFocus,\n}: AddressLineAutocompleteProps) => {\n  const { onAddressSelect } = useAddressAutofill();\n  const countryCode = useCountryCode();\n  const [sessionToken, setSessionToken] = useState<string>('');\n\n  const { predictions, updatePredictions, clearPredictions, getPlace } =\n    useAtlasHeadless({ sessionToken });\n\n  const options = useMemo(\n    () =>\n      predictions.map((prediction) => ({\n        id: prediction.searchId || '',\n        label: prediction.description || '',\n      })),\n    [predictions],\n  );\n\n  const handleInputChange = useCallback(\n    (newValue: string) => {\n      const countryCodes = countryCode ? [countryCode] : undefined;\n      updatePredictions({ input: newValue, countryCodes });\n      onChange(newValue);\n    },\n    [onChange, updatePredictions, countryCode],\n  );\n\n  const handleSelectionChange = useCallback(\n    async (key: React.Key | null) => {\n      if (!key) {\n        return;\n      }\n\n      clearPredictions();\n\n      const address = await getPlace(String(key));\n\n      if (address && onAddressSelect) {\n        onAddressSelect(address);\n      }\n    },\n    [onAddressSelect, clearPredictions, getPlace],\n  );\n\n  const handleBlur = useCallback(() => {\n    setSessionToken('');\n    clearPredictions();\n    onBlur?.();\n  }, [onBlur, clearPredictions]);\n\n  const handleFocus = useCallback(() => {\n    setSessionToken(generateUUID());\n    onFocus?.();\n  }, [onFocus]);\n\n  const inputElement = findChildOfType(children, AddressLine.Input);\n  const optionsElement = findChildOfType(children, AddressLine.Options);\n\n  return (\n    <ComboBoxRAC\n      inputValue={value ?? ''}\n      onInputChange={handleInputChange}\n      selectedKey={null}\n      onSelectionChange={handleSelectionChange}\n      isDisabled={disabled}\n      isRequired={required}\n      isInvalid={hasError}\n      onBlur={handleBlur}\n      onFocus={handleFocus}\n      allowsCustomValue\n      menuTrigger=\"input\"\n      items={options}\n    >\n      {applyInternalProps<InputInternalProps>(inputElement, {\n        onFocus: handleFocus,\n      })}\n      {applyInternalProps<OptionsInternalProps>(optionsElement, {\n        options,\n      })}\n    </ComboBoxRAC>\n  );\n};\n\ntype InputProps = {\n  className?: string;\n};\n\ntype InputInternalProps = {\n  onFocus?: () => void;\n};\n\nconst Input = ({ className, ...internal }: InputProps) => {\n  const { id } = useFieldPropsV2<MlaAddressLineProps>();\n  const { inputId, ariaDescribedBy } = useFieldAttributes();\n  const { onFocus } = internal as InputInternalProps;\n\n  const inputRef = useRef<HTMLInputElement>(null);\n\n  useFocusFieldEvent(() => {\n    inputRef.current?.focus();\n  }, id);\n\n  return (\n    <InputRAC\n      ref={inputRef}\n      id={inputId}\n      aria-describedby={ariaDescribedBy}\n      className={className}\n      onFocus={onFocus}\n    />\n  );\n};\n\ntype OptionsProps = {\n  children: ReactNode;\n  className?: string;\n};\n\ntype OptionsInternalProps = {\n  options: { id: string; label: string }[];\n};\n\nconst Options = ({ children, className }: OptionsProps) => {\n  const optionElement = findChildOfType(children, Options.Option);\n\n  return (\n    <PopoverRAC className={className}>\n      <ListBoxRAC renderEmptyState={() => null}>\n        {(item: { id: string; label: string }) =>\n          applyInternalProps<OptionInternalProps>(optionElement, {\n            id: item.id,\n            label: item.label,\n          })\n        }\n      </ListBoxRAC>\n    </PopoverRAC>\n  );\n};\n\ntype OptionProps = {\n  className?: string;\n};\n\ntype OptionInternalProps = {\n  id: string;\n  label: string;\n};\n\nconst Option = ({ className, ...internal }: OptionProps) => {\n  const { id, label } = internal as OptionInternalProps;\n  return (\n    <ListBoxItemRAC className={className} id={id} textValue={label}>\n      {label}\n    </ListBoxItemRAC>\n  );\n};\n\nOptions.Option = Option;\n\nAddressLine.Label = Label;\nAddressLine.Input = Input;\nAddressLine.Options = Options;\nAddressLine.Description = Description;\nAddressLine.Error = Error;\n","import React, { type ReactNode, useRef } from 'react';\nimport {\n  TextField as TextFieldRAC,\n  Input as InputRAC,\n} from 'react-aria-components';\n\nimport { useFocusFieldEvent } from '../../../contexts/events-context';\nimport { useFieldAttributes } from '../../../contexts/field-attributes-context';\nimport { useFieldPropsV2 } from '../../../contexts/field-props-context';\nimport { type MlaCityProps } from '../../../fields/mla-city/mla-city/mla-city-props';\nimport { useAddressLabel } from '../../../hooks/use-address-label';\nimport {\n  findChildOfType,\n  applyInternalProps,\n} from '../../../services/find-child';\nimport { Description } from '../../field-description/field-description-headless';\nimport { Error } from '../../field-error/field-error-headless';\nimport {\n  Label,\n  type LabelInternalProps,\n} from '../../field-label/field-label-headless';\n\nexport type CityProps = {\n  children: ReactNode;\n};\n\nexport const City = ({ children }: CityProps) => {\n  const {\n    id,\n    value,\n    onChange,\n    disabled,\n    required,\n    hasError,\n    onBlur,\n    onFocus,\n    FieldLayout,\n  } = useFieldPropsV2<MlaCityProps>();\n\n  const cityLabel = useAddressLabel('city');\n  const labelElement = findChildOfType(children, City.Label);\n  const inputElement = findChildOfType(children, City.Input);\n  const descriptionElement = findChildOfType(children, City.Description);\n  const errorElement = findChildOfType(children, City.Error);\n\n  return (\n    <FieldLayout\n      fieldId={id}\n      renderLabel={() =>\n        applyInternalProps<LabelInternalProps>(labelElement, {\n          label: cityLabel,\n        })\n      }\n      renderInput={() => (\n        <TextFieldRAC\n          value={value ?? ''}\n          onChange={onChange}\n          isDisabled={disabled}\n          isRequired={required}\n          isInvalid={hasError}\n          onBlur={onBlur}\n          onFocus={onFocus}\n        >\n          {inputElement}\n        </TextFieldRAC>\n      )}\n      renderDescription={() => (\n        <>\n          {descriptionElement}\n          {errorElement}\n        </>\n      )}\n    />\n  );\n};\n\ntype InputProps = {\n  className?: string;\n};\n\nconst Input = ({ className }: InputProps) => {\n  const { id } = useFieldPropsV2<MlaCityProps>();\n  const { inputId, ariaDescribedBy } = useFieldAttributes();\n\n  const inputRef = useRef<HTMLInputElement>(null);\n\n  useFocusFieldEvent(() => {\n    inputRef.current?.focus();\n  }, id);\n\n  return (\n    <InputRAC\n      ref={inputRef}\n      id={inputId}\n      aria-describedby={ariaDescribedBy}\n      className={className}\n    />\n  );\n};\n\nCity.Label = Label;\nCity.Input = Input;\nCity.Description = Description;\nCity.Error = Error;\n","import { COUNTRY_CODES, type CountryCode } from '@wix/form-multiline-address';\nimport React, {\n  type ReactNode,\n  useCallback,\n  useMemo,\n  useRef,\n  useState,\n} from 'react';\nimport {\n  ComboBox as ComboBoxRAC,\n  Input as InputRAC,\n  Button as ButtonRAC,\n  Popover as PopoverRAC,\n  ListBox as ListBoxRAC,\n  ListBoxItem as ListBoxItemRAC,\n} from 'react-aria-components';\n\nimport { useConfig } from '../../../contexts/config-context';\nimport { useFocusFieldEvent } from '../../../contexts/events-context';\nimport { useFieldAttributes } from '../../../contexts/field-attributes-context';\nimport { useFieldPropsV2 } from '../../../contexts/field-props-context';\nimport { useTranslation } from '../../../contexts/translation-context';\nimport { type MlaCountryProps } from '../../../fields/mla-country/mla-country/mla-country-props';\nimport { useAddressLabel } from '../../../hooks/use-address-label';\nimport {\n  applyInternalProps,\n  findChildOfType,\n} from '../../../services/find-child';\nimport { Description } from '../../field-description/field-description-headless';\nimport { Error } from '../../field-error/field-error-headless';\nimport {\n  Label,\n  type LabelInternalProps,\n} from '../../field-label/field-label-headless';\n\nexport type CountryProps = {\n  children: ReactNode;\n};\n\nexport const Country = ({ children }: CountryProps) => {\n  const {\n    id,\n    value,\n    onChange,\n    disabled,\n    required,\n    hasError,\n    onBlur,\n    onFocus,\n    FieldLayout,\n    options,\n  } = useFieldPropsV2<MlaCountryProps>();\n\n  const { t } = useTranslation();\n  const { language } = useConfig();\n\n  const countryOptions = useMemo(\n    () =>\n      (options || [])\n        .reduce<{ value: string; label: string }[]>((result, option) => {\n          if (option.value && COUNTRY_CODES.hasOwnProperty(option.value)) {\n            result.push({\n              value: option.value,\n              label: t(\n                `locale-dataset.countries.${COUNTRY_CODES[\n                  option.value as CountryCode\n                ].toUpperCase()}`,\n              ),\n            });\n          }\n          return result;\n        }, [])\n        .sort((a, b) => a.label.localeCompare(b.label, language)),\n    [options, t, language],\n  );\n\n  const [inputValue, setInputValue] = useState('');\n\n  const selectedLabel = useMemo(() => {\n    if (!value) {\n      return '';\n    }\n    const option = countryOptions.find((opt) => opt.value === value);\n    return option?.label ?? '';\n  }, [value, countryOptions]);\n\n  const handleSelectionChange = useCallback(\n    (key: React.Key | null) => {\n      if (typeof key === 'string' && key !== '' && key !== value) {\n        onChange(key as CountryCode);\n        const option = countryOptions.find((opt) => opt.value === key);\n        setInputValue(option?.label ?? '');\n      }\n    },\n    [onChange, countryOptions, value],\n  );\n\n  const handleInputChange = useCallback(\n    (newValue: string) => {\n      setInputValue(newValue);\n      if (newValue === '') {\n        onChange(null as unknown as CountryCode);\n      }\n    },\n    [onChange],\n  );\n\n  const countryLabel = useAddressLabel('country');\n  const labelElement = findChildOfType(children, Country.Label);\n  const controlElement = findChildOfType(children, Country.Control);\n  const optionsElement = findChildOfType(children, Country.Options);\n  const descriptionElement = findChildOfType(children, Country.Description);\n  const errorElement = findChildOfType(children, Country.Error);\n\n  return (\n    <FieldLayout\n      fieldId={id}\n      renderLabel={() =>\n        applyInternalProps<LabelInternalProps>(labelElement, {\n          label: countryLabel,\n        })\n      }\n      renderInput={() => (\n        <ComboBoxRAC\n          selectedKey={value ?? null}\n          inputValue={inputValue || selectedLabel}\n          onSelectionChange={handleSelectionChange}\n          onInputChange={handleInputChange}\n          isDisabled={disabled}\n          isRequired={required}\n          isInvalid={hasError}\n          onBlur={onBlur}\n          onFocus={onFocus}\n          menuTrigger=\"input\"\n        >\n          {controlElement}\n          {applyInternalProps<OptionsInternalProps>(optionsElement, {\n            options: countryOptions,\n          })}\n        </ComboBoxRAC>\n      )}\n      renderDescription={() => (\n        <>\n          {descriptionElement}\n          {errorElement}\n        </>\n      )}\n    />\n  );\n};\n\ntype ControlProps = {\n  children: ReactNode;\n  className?: string;\n};\n\nconst Control = ({ children, className }: ControlProps) => {\n  const { disabled, hasError } = useFieldPropsV2<MlaCountryProps>();\n  const inputElement = findChildOfType(children, Control.Input);\n  const triggerElement = findChildOfType(children, Control.Trigger);\n\n  return (\n    <div\n      className={className}\n      data-disabled={disabled || undefined}\n      data-invalid={hasError || undefined}\n    >\n      {inputElement}\n      {triggerElement}\n    </div>\n  );\n};\n\ntype InputProps = {\n  className?: string;\n};\n\nconst Input = ({ className }: InputProps) => {\n  const { id } = useFieldPropsV2<MlaCountryProps>();\n  const { inputId, ariaDescribedBy } = useFieldAttributes();\n\n  const inputRef = useRef<HTMLInputElement>(null);\n\n  useFocusFieldEvent(() => {\n    inputRef.current?.focus();\n  }, id);\n\n  return (\n    <InputRAC\n      ref={inputRef}\n      id={inputId}\n      aria-describedby={ariaDescribedBy}\n      className={className}\n    />\n  );\n};\n\ntype TriggerProps = {\n  className?: string;\n};\n\nconst Trigger = ({ className }: TriggerProps) => {\n  return <ButtonRAC className={className} />;\n};\n\nControl.Input = Input;\nControl.Trigger = Trigger;\n\ntype OptionsProps = {\n  children: ReactNode;\n  className?: string;\n};\n\ntype OptionsInternalProps = {\n  options: { value: string; label: string }[];\n};\n\nconst Options = ({ children, className, ...internal }: OptionsProps) => {\n  const { options } = internal as OptionsInternalProps;\n\n  const optionElement = findChildOfType(children, Options.Option);\n\n  return (\n    <PopoverRAC className={className}>\n      <ListBoxRAC>\n        {options.map((option) =>\n          applyInternalProps<OptionInternalProps>(optionElement, {\n            key: option.value,\n            value: option.value,\n            label: option.label,\n          }),\n        )}\n      </ListBoxRAC>\n    </PopoverRAC>\n  );\n};\n\ntype OptionProps = {\n  className?: string;\n};\n\ntype OptionInternalProps = {\n  value: string;\n  label: string;\n};\n\nconst Option = ({ className, ...internal }: OptionProps) => {\n  const { value, label } = internal as OptionInternalProps;\n  return (\n    <ListBoxItemRAC className={className} id={value} textValue={label}>\n      {label}\n    </ListBoxItemRAC>\n  );\n};\n\nOptions.Option = Option;\n\nCountry.Label = Label;\nCountry.Control = Control;\nCountry.Options = Options;\nCountry.Description = Description;\nCountry.Error = Error;\n","import { COUNTRY_CODES } from '@wix/form-multiline-address';\nimport { generateUUID } from '@wix/form-schema';\nimport React, {\n  type ReactNode,\n  useCallback,\n  useMemo,\n  useRef,\n  useState,\n} from 'react';\nimport {\n  ComboBox as ComboBoxRAC,\n  Input as InputRAC,\n  Popover as PopoverRAC,\n  ListBox as ListBoxRAC,\n  ListBoxItem as ListBoxItemRAC,\n  TextField as TextFieldRAC,\n} from 'react-aria-components';\n\nimport { useFocusFieldEvent } from '../../../contexts/events-context';\nimport { useFieldAttributes } from '../../../contexts/field-attributes-context';\nimport { useFieldPropsV2 } from '../../../contexts/field-props-context';\nimport { type MlaPostalCodeProps } from '../../../fields/mla-postal-code/mla-postal-code/mla-postal-code-props';\nimport { useAddressAutofill } from '../../../fields/multiline-address/multiline-address/address-autofill-context';\nimport { useCountryCode } from '../../../fields/multiline-address/multiline-address/country-code-context';\nimport { useAddressLabel } from '../../../hooks/use-address-label';\nimport {\n  applyInternalProps,\n  findChildOfType,\n} from '../../../services/find-child';\nimport type { CommonAddress } from '../../address-input/atlas-service';\nimport { useJapanAutocomplete } from '../../address-input/use-japan-autocomplete';\nimport { Description } from '../../field-description/field-description-headless';\nimport { Error } from '../../field-error/field-error-headless';\nimport {\n  Label,\n  type LabelInternalProps,\n} from '../../field-label/field-label-headless';\n\nexport type PostalCodeProps = {\n  children: ReactNode;\n};\n\nexport const PostalCode = ({ children }: PostalCodeProps) => {\n  const {\n    id,\n    value,\n    onChange,\n    disabled,\n    required,\n    hasError,\n    onBlur,\n    onFocus,\n    FieldLayout,\n    autocomplete,\n  } = useFieldPropsV2<MlaPostalCodeProps>();\n  const countryCode = useCountryCode();\n  const isJapan = Boolean(\n    countryCode && COUNTRY_CODES[countryCode] === COUNTRY_CODES.JP,\n  );\n  const isAutocomplete = autocomplete && isJapan;\n\n  const postalCodeLabel = useAddressLabel('zipCode');\n  const labelElement = findChildOfType(children, PostalCode.Label);\n  const inputElement = findChildOfType(children, PostalCode.Input);\n  const optionsElement = findChildOfType(children, PostalCode.Options);\n  const descriptionElement = findChildOfType(children, PostalCode.Description);\n  const errorElement = findChildOfType(children, PostalCode.Error);\n\n  if (isAutocomplete) {\n    return (\n      <FieldLayout\n        fieldId={id}\n        renderLabel={() =>\n          applyInternalProps<LabelInternalProps>(labelElement, {\n            label: postalCodeLabel,\n          })\n        }\n        renderInput={() => (\n          <PostalCodeAutocomplete\n            value={value}\n            onChange={onChange}\n            disabled={disabled}\n            required={required}\n            hasError={hasError}\n            onBlur={onBlur}\n            onFocus={onFocus}\n          >\n            {inputElement}\n            {optionsElement}\n          </PostalCodeAutocomplete>\n        )}\n        renderDescription={() => (\n          <>\n            {descriptionElement}\n            {errorElement}\n          </>\n        )}\n      />\n    );\n  }\n\n  return (\n    <FieldLayout\n      fieldId={id}\n      renderLabel={() =>\n        applyInternalProps<LabelInternalProps>(labelElement, {\n          label: postalCodeLabel,\n        })\n      }\n      renderInput={() => (\n        <TextFieldRAC\n          value={value ?? ''}\n          onChange={onChange}\n          isDisabled={disabled}\n          isRequired={required}\n          isInvalid={hasError}\n          onBlur={onBlur}\n          onFocus={onFocus}\n        >\n          {inputElement}\n        </TextFieldRAC>\n      )}\n      renderDescription={() => (\n        <>\n          {descriptionElement}\n          {errorElement}\n        </>\n      )}\n    />\n  );\n};\n\ntype PostalCodeAutocompleteProps = {\n  children: ReactNode;\n  value?: string | null;\n  onChange: (value: string) => void;\n  disabled?: boolean;\n  required?: boolean;\n  hasError?: boolean;\n  onBlur?: () => void;\n  onFocus?: () => void;\n};\n\nconst PostalCodeAutocomplete = ({\n  children,\n  value,\n  onChange,\n  disabled,\n  required,\n  hasError,\n  onBlur,\n  onFocus,\n}: PostalCodeAutocompleteProps) => {\n  const { onAddressSelect } = useAddressAutofill();\n  const [isAutocompleteEnabled, setIsAutocompleteEnabled] = useState(false);\n  const { searchByPostalCode } = useJapanAutocomplete({\n    isAutocompleteEnabled,\n  });\n  const [prediction, setPrediction] = useState<CommonAddress>();\n\n  const options = useMemo(\n    () =>\n      prediction\n        ? [\n            {\n              id: generateUUID(),\n              label: prediction.formattedAddress || '',\n            },\n          ]\n        : [],\n    [prediction],\n  );\n\n  const handleInputChange = useCallback(\n    async (newValue: string) => {\n      onChange(newValue);\n      const address = await searchByPostalCode(newValue ?? '');\n      setPrediction(address);\n    },\n    [onChange, searchByPostalCode],\n  );\n\n  const handleSelectionChange = useCallback(\n    async (key: React.Key | null) => {\n      if (!key) {\n        return;\n      }\n\n      setPrediction(undefined);\n\n      if (prediction && onAddressSelect) {\n        onAddressSelect(prediction);\n      }\n    },\n    [onAddressSelect, prediction],\n  );\n\n  const handleBlur = useCallback(() => {\n    setPrediction(undefined);\n    onBlur?.();\n  }, [onBlur]);\n\n  const handleFocus = useCallback(() => {\n    setIsAutocompleteEnabled(true);\n    onFocus?.();\n  }, [onFocus]);\n\n  const inputElement = findChildOfType(children, PostalCode.Input);\n  const optionsElement = findChildOfType(children, PostalCode.Options);\n\n  return (\n    <ComboBoxRAC\n      inputValue={value ?? ''}\n      onInputChange={handleInputChange}\n      selectedKey={null}\n      onSelectionChange={handleSelectionChange}\n      isDisabled={disabled}\n      isRequired={required}\n      isInvalid={hasError}\n      onBlur={handleBlur}\n      onFocus={handleFocus}\n      allowsCustomValue\n      menuTrigger=\"input\"\n      items={options}\n    >\n      {applyInternalProps<InputInternalProps>(inputElement, {\n        onFocus: handleFocus,\n      })}\n      {applyInternalProps<OptionsInternalProps>(optionsElement, {\n        options,\n      })}\n    </ComboBoxRAC>\n  );\n};\n\ntype InputProps = {\n  className?: string;\n};\n\ntype InputInternalProps = {\n  onFocus?: () => void;\n};\n\nconst Input = ({ className, ...internal }: InputProps) => {\n  const { id, placeholder } = useFieldPropsV2<MlaPostalCodeProps>();\n  const { inputId, ariaDescribedBy } = useFieldAttributes();\n  const { onFocus } = internal as InputInternalProps;\n\n  const inputRef = useRef<HTMLInputElement>(null);\n\n  useFocusFieldEvent(() => {\n    inputRef.current?.focus();\n  }, id);\n\n  return (\n    <InputRAC\n      ref={inputRef}\n      id={inputId}\n      aria-describedby={ariaDescribedBy}\n      className={className}\n      placeholder={placeholder}\n      onFocus={onFocus}\n    />\n  );\n};\n\ntype OptionsProps = {\n  children: ReactNode;\n  className?: string;\n};\n\ntype OptionsInternalProps = {\n  options: { id: string; label: string }[];\n};\n\nconst Options = ({ children, className }: OptionsProps) => {\n  const optionElement = findChildOfType(children, Options.Option);\n\n  return (\n    <PopoverRAC className={className}>\n      <ListBoxRAC renderEmptyState={() => null}>\n        {(item: { id: string; label: string }) =>\n          applyInternalProps<OptionInternalProps>(optionElement, {\n            id: item.id,\n            label: item.label,\n          })\n        }\n      </ListBoxRAC>\n    </PopoverRAC>\n  );\n};\n\ntype OptionProps = {\n  className?: string;\n};\n\ntype OptionInternalProps = {\n  id: string;\n  label: string;\n};\n\nconst Option = ({ className, ...internal }: OptionProps) => {\n  const { id, label } = internal as OptionInternalProps;\n  return (\n    <ListBoxItemRAC className={className} id={id} textValue={label}>\n      {label}\n    </ListBoxItemRAC>\n  );\n};\n\nOptions.Option = Option;\n\nPostalCode.Label = Label;\nPostalCode.Input = Input;\nPostalCode.Options = Options;\nPostalCode.Description = Description;\nPostalCode.Error = Error;\n","const JAPAN_POSTAL_CODE_REGEXP = /(\\d{7})|(\\d{3}-\\d{4})/;\n\nexport function extractJapanPostalCode(text: string): string | undefined {\n  return text.match(JAPAN_POSTAL_CODE_REGEXP)?.[0];\n}\n","import { generateUUID } from '@wix/form-schema';\nimport { useState, useEffect } from 'react';\n\nimport type { AtlasService } from './atlas-service';\n\ntype UseAtlasParams = {\n  enabled: boolean;\n  getInstance: () => string;\n  language?: string;\n  locale?: string;\n  atlasBaseUrl?: string;\n};\n\nexport const useAtlas = ({\n  enabled,\n  getInstance,\n  language,\n  locale,\n  atlasBaseUrl,\n}: UseAtlasParams) => {\n  const [atlas, setAtlas] = useState<AtlasService>();\n  const instance = getInstance();\n  const [sessionToken, setSessionToken] = useState(generateUUID());\n  const refreshSessionToken = () => setSessionToken(generateUUID());\n\n  useEffect(() => {\n    if (!enabled) {\n      return;\n    }\n\n    const initAtlas = async () => {\n      try {\n        const { createAtlasService } = await import(\n          /* webpackChunkName: \"atlas-service\" */ './atlas-service'\n        );\n        const atlasService = createAtlasService({\n          getInstance: () => instance,\n          sessionToken,\n          refreshSessionToken,\n          language,\n          locale,\n          atlasBaseUrl,\n        });\n        setAtlas(atlasService);\n      } catch (_error) {}\n    };\n\n    initAtlas();\n  }, [enabled, instance, language, locale, sessionToken, atlasBaseUrl]);\n\n  return atlas;\n};\n","import { useCallback, useRef } from 'react';\n\nimport { useConfig } from '../../contexts/config-context';\n\nimport type { CommonAddress } from './atlas-service';\nimport { extractJapanPostalCode } from './postal-code';\nimport { useAtlas } from './use-atlas';\n\ntype UseJapanAutocompleteParams = {\n  isAutocompleteEnabled: boolean;\n};\n\nexport function useJapanAutocomplete({\n  isAutocompleteEnabled,\n}: UseJapanAutocompleteParams) {\n  const state = useRef<{\n    postalCode?: string;\n    address?: CommonAddress;\n    hasAddress: boolean;\n  }>({ hasAddress: false });\n  const { instance, language, atlasBaseUrl } = useConfig();\n  const atlas = useAtlas({\n    enabled: isAutocompleteEnabled,\n    getInstance: () => instance ?? '',\n    language,\n    atlasBaseUrl,\n  });\n\n  const searchByPostalCode = useCallback(\n    async (text: string) => {\n      const postalCode = extractJapanPostalCode(text);\n      if (!postalCode) {\n        return;\n      }\n\n      if (state.current.postalCode === postalCode && state.current.hasAddress) {\n        return state.current.address;\n      }\n\n      state.current = { postalCode, address: undefined, hasAddress: false };\n\n      try {\n        const address = await atlas?.searchByPostalCode({\n          countryCode: 'JP',\n          postalCode,\n        });\n\n        state.current.hasAddress = true;\n        state.current.address = undefined;\n\n        if (address?.formattedAddress) {\n          state.current.address = address;\n          return address;\n        }\n        return;\n      } catch (e) {\n        console.error(e);\n      }\n\n      return;\n    },\n    [atlas],\n  );\n\n  return { searchByPostalCode };\n}\n","import { generateUUID } from '@wix/form-schema';\nimport React, {\n  type ReactNode,\n  useCallback,\n  useMemo,\n  useRef,\n  useState,\n} from 'react';\nimport {\n  ComboBox as ComboBoxRAC,\n  Input as InputRAC,\n  Popover as PopoverRAC,\n  ListBox as ListBoxRAC,\n  ListBoxItem as ListBoxItemRAC,\n  TextField as TextFieldRAC,\n} from 'react-aria-components';\n\nimport { useFocusFieldEvent } from '../../../contexts/events-context';\nimport { useFieldAttributes } from '../../../contexts/field-attributes-context';\nimport { useFieldPropsV2 } from '../../../contexts/field-props-context';\nimport { type MlaStreetNameProps } from '../../../fields/mla-street-name/mla-street-name/mla-street-name-props';\nimport { useAddressAutofill } from '../../../fields/multiline-address/multiline-address/address-autofill-context';\nimport { useCountryCode } from '../../../fields/multiline-address/multiline-address/country-code-context';\nimport { useAddressLabel } from '../../../hooks/use-address-label';\nimport {\n  applyInternalProps,\n  findChildOfType,\n} from '../../../services/find-child';\nimport { Description } from '../../field-description/field-description-headless';\nimport { Error } from '../../field-error/field-error-headless';\nimport {\n  Label,\n  type LabelInternalProps,\n} from '../../field-label/field-label-headless';\n\nimport useAtlasHeadless from './use-atlas-headless';\n\nexport type StreetNameProps = {\n  children: ReactNode;\n};\n\nexport const StreetName = ({ children }: StreetNameProps) => {\n  const {\n    id,\n    value,\n    onChange,\n    disabled,\n    required,\n    hasError,\n    onBlur,\n    onFocus,\n    FieldLayout,\n    autocomplete,\n  } = useFieldPropsV2<MlaStreetNameProps>();\n\n  const { autocompleteEnabled } = useAddressAutofill();\n  const isAutocomplete = autocomplete || autocompleteEnabled;\n\n  const streetNameLabel = useAddressLabel('streetName');\n  const labelElement = findChildOfType(children, StreetName.Label);\n  const inputElement = findChildOfType(children, StreetName.Input);\n  const optionsElement = findChildOfType(children, StreetName.Options);\n  const descriptionElement = findChildOfType(children, StreetName.Description);\n  const errorElement = findChildOfType(children, StreetName.Error);\n\n  if (isAutocomplete) {\n    return (\n      <FieldLayout\n        fieldId={id}\n        renderLabel={() =>\n          applyInternalProps<LabelInternalProps>(labelElement, {\n            label: streetNameLabel,\n          })\n        }\n        renderInput={() => (\n          <StreetNameAutocomplete\n            value={value}\n            onChange={onChange}\n            disabled={disabled}\n            required={required}\n            hasError={hasError}\n            onBlur={onBlur}\n            onFocus={onFocus}\n          >\n            {inputElement}\n            {optionsElement}\n          </StreetNameAutocomplete>\n        )}\n        renderDescription={() => (\n          <>\n            {descriptionElement}\n            {errorElement}\n          </>\n        )}\n      />\n    );\n  }\n\n  return (\n    <FieldLayout\n      fieldId={id}\n      renderLabel={() =>\n        applyInternalProps<LabelInternalProps>(labelElement, {\n          label: streetNameLabel,\n        })\n      }\n      renderInput={() => (\n        <TextFieldRAC\n          value={value ?? ''}\n          onChange={onChange}\n          isDisabled={disabled}\n          isRequired={required}\n          isInvalid={hasError}\n          onBlur={onBlur}\n          onFocus={onFocus}\n        >\n          {inputElement}\n        </TextFieldRAC>\n      )}\n      renderDescription={() => (\n        <>\n          {descriptionElement}\n          {errorElement}\n        </>\n      )}\n    />\n  );\n};\n\ntype StreetNameAutocompleteProps = {\n  children: ReactNode;\n  value: string | undefined;\n  onChange: (value: string) => void;\n  disabled?: boolean;\n  required?: boolean;\n  hasError?: boolean;\n  onBlur?: () => void;\n  onFocus?: () => void;\n};\n\nconst StreetNameAutocomplete = ({\n  children,\n  value,\n  onChange,\n  disabled,\n  required,\n  hasError,\n  onBlur,\n  onFocus,\n}: StreetNameAutocompleteProps) => {\n  const { onAddressSelect } = useAddressAutofill();\n  const countryCode = useCountryCode();\n  const [sessionToken, setSessionToken] = useState<string>('');\n  const { predictions, updatePredictions, clearPredictions, getPlace } =\n    useAtlasHeadless({\n      sessionToken,\n    });\n\n  const inputElement = findChildOfType(children, StreetName.Input);\n  const optionsElement = findChildOfType(children, StreetName.Options);\n\n  const options = useMemo(\n    () =>\n      predictions.reduce<{ id: string; label: string }[]>(\n        (result, prediction) => {\n          if (prediction.searchId && prediction.description) {\n            result.push({\n              id: prediction.searchId,\n              label: prediction.description,\n            });\n          }\n          return result;\n        },\n        [],\n      ),\n    [predictions],\n  );\n\n  const handleInputChange = useCallback(\n    (newValue: string) => {\n      const countryCodes = countryCode ? [countryCode] : undefined;\n      updatePredictions({ input: newValue, countryCodes });\n      onChange(newValue);\n    },\n    [onChange, updatePredictions, countryCode],\n  );\n\n  const handleSelectionChange = useCallback(\n    async (key: React.Key | null) => {\n      clearPredictions();\n      if (!key) {\n        return;\n      }\n\n      const address = await getPlace(String(key));\n\n      if (address && onAddressSelect) {\n        onAddressSelect(address);\n      }\n    },\n    [onAddressSelect, clearPredictions, getPlace],\n  );\n\n  const handleBlur = useCallback(() => {\n    setSessionToken('');\n    clearPredictions();\n    onBlur?.();\n  }, [onBlur, clearPredictions]);\n\n  const handleFocus = useCallback(() => {\n    setSessionToken(generateUUID());\n    onFocus?.();\n  }, [onFocus]);\n\n  return (\n    <ComboBoxRAC\n      inputValue={value ?? ''}\n      onInputChange={handleInputChange}\n      selectedKey={null}\n      onSelectionChange={handleSelectionChange}\n      isDisabled={disabled}\n      isRequired={required}\n      isInvalid={hasError}\n      onBlur={handleBlur}\n      onFocus={handleFocus}\n      allowsCustomValue\n      menuTrigger=\"input\"\n      items={options}\n    >\n      {applyInternalProps<InputInternalProps>(inputElement, {\n        onFocus: handleFocus,\n      })}\n      {applyInternalProps<OptionsInternalProps>(optionsElement, {\n        options,\n      })}\n    </ComboBoxRAC>\n  );\n};\n\ntype InputProps = {\n  className?: string;\n};\n\ntype InputInternalProps = {\n  onFocus?: () => void;\n};\n\nconst Input = ({ className, ...internal }: InputProps) => {\n  const { id } = useFieldPropsV2<MlaStreetNameProps>();\n  const { inputId, ariaDescribedBy } = useFieldAttributes();\n  const { onFocus } = internal as InputInternalProps;\n\n  const inputRef = useRef<HTMLInputElement>(null);\n\n  useFocusFieldEvent(() => {\n    inputRef.current?.focus();\n  }, id);\n\n  return (\n    <InputRAC\n      ref={inputRef}\n      id={inputId}\n      aria-describedby={ariaDescribedBy}\n      className={className}\n      onFocus={onFocus}\n    />\n  );\n};\n\ntype OptionsProps = {\n  children: ReactNode;\n  className?: string;\n};\n\ntype OptionsInternalProps = {\n  options: { id: string; label: string }[];\n};\n\nconst Options = ({ children, className }: OptionsProps) => {\n  const optionElement = findChildOfType(children, Options.Option);\n\n  return (\n    <PopoverRAC className={className}>\n      <ListBoxRAC renderEmptyState={() => null}>\n        {(item: { id: string; label: string }) =>\n          applyInternalProps<OptionInternalProps>(optionElement, {\n            value: item.id,\n            label: item.label,\n          })\n        }\n      </ListBoxRAC>\n    </PopoverRAC>\n  );\n};\n\ntype OptionProps = {\n  className?: string;\n};\n\ntype OptionInternalProps = {\n  value: string;\n  label: string;\n};\n\nconst Option = ({ className, ...internal }: OptionProps) => {\n  const { value, label } = internal as OptionInternalProps;\n  return (\n    <ListBoxItemRAC className={className} id={value} textValue={label}>\n      {label}\n    </ListBoxItemRAC>\n  );\n};\n\nOptions.Option = Option;\n\nStreetName.Label = Label;\nStreetName.Input = Input;\nStreetName.Options = Options;\nStreetName.Description = Description;\nStreetName.Error = Error;\n","import React, { type ReactNode, useRef } from 'react';\nimport {\n  TextField as TextFieldRAC,\n  Input as InputRAC,\n} from 'react-aria-components';\n\nimport { useFocusFieldEvent } from '../../../contexts/events-context';\nimport { useFieldAttributes } from '../../../contexts/field-attributes-context';\nimport { useFieldPropsV2 } from '../../../contexts/field-props-context';\nimport { type MlaStreetNumberProps } from '../../../fields/mla-street-number/mla-street-number/mla-street-number-props';\nimport { useAddressLabel } from '../../../hooks/use-address-label';\nimport {\n  findChildOfType,\n  applyInternalProps,\n} from '../../../services/find-child';\nimport { Description } from '../../field-description/field-description-headless';\nimport { Error } from '../../field-error/field-error-headless';\nimport {\n  Label,\n  type LabelInternalProps,\n} from '../../field-label/field-label-headless';\n\nexport type StreetNumberProps = {\n  children: ReactNode;\n};\n\nexport const StreetNumber = ({ children }: StreetNumberProps) => {\n  const {\n    id,\n    value,\n    onChange,\n    disabled,\n    required,\n    hasError,\n    onBlur,\n    onFocus,\n    FieldLayout,\n  } = useFieldPropsV2<MlaStreetNumberProps>();\n\n  const streetNumberLabel = useAddressLabel('streetNumber');\n  const labelElement = findChildOfType(children, StreetNumber.Label);\n  const inputElement = findChildOfType(children, StreetNumber.Input);\n  const descriptionElement = findChildOfType(\n    children,\n    StreetNumber.Description,\n  );\n  const errorElement = findChildOfType(children, StreetNumber.Error);\n\n  return (\n    <FieldLayout\n      fieldId={id}\n      renderLabel={() =>\n        applyInternalProps<LabelInternalProps>(labelElement, {\n          label: streetNumberLabel,\n        })\n      }\n      renderInput={() => (\n        <TextFieldRAC\n          value={value ?? ''}\n          onChange={onChange}\n          isDisabled={disabled}\n          isRequired={required}\n          isInvalid={hasError}\n          onBlur={onBlur}\n          onFocus={onFocus}\n        >\n          {inputElement}\n        </TextFieldRAC>\n      )}\n      renderDescription={() => (\n        <>\n          {descriptionElement}\n          {errorElement}\n        </>\n      )}\n    />\n  );\n};\n\ntype InputProps = {\n  className?: string;\n};\n\nconst Input = ({ className }: InputProps) => {\n  const { id } = useFieldPropsV2<MlaStreetNumberProps>();\n  const { inputId, ariaDescribedBy } = useFieldAttributes();\n\n  const inputRef = useRef<HTMLInputElement>(null);\n\n  useFocusFieldEvent(() => {\n    inputRef.current?.focus();\n  }, id);\n\n  return (\n    <InputRAC\n      ref={inputRef}\n      id={inputId}\n      aria-describedby={ariaDescribedBy}\n      className={className}\n    />\n  );\n};\n\nStreetNumber.Label = Label;\nStreetNumber.Input = Input;\nStreetNumber.Description = Description;\nStreetNumber.Error = Error;\n","import {\n  COUNTRY_CODES,\n  mapSubdivisionReplacedBy,\n} from '@wix/form-multiline-address';\nimport { getCountryByShortKey } from '@wix/locale-dataset-javascript';\nimport React, { type ReactNode, useCallback, useMemo, useRef } from 'react';\nimport {\n  Select as SelectRAC,\n  Button as ButtonRAC,\n  SelectValue as SelectValueRAC,\n  Popover as PopoverRAC,\n  ListBox as ListBoxRAC,\n  ListBoxItem as ListBoxItemRAC,\n} from 'react-aria-components';\n\nimport { useFocusFieldEvent } from '../../../contexts/events-context';\nimport { useFieldAttributes } from '../../../contexts/field-attributes-context';\nimport { useFieldPropsV2 } from '../../../contexts/field-props-context';\nimport { useTranslation } from '../../../contexts/translation-context';\nimport { type MlaSubdivisionProps } from '../../../fields/mla-subdivision/mla-subdivision/mla-subdivision-wds';\nimport { useCountryCode } from '../../../fields/multiline-address/multiline-address/country-code-context';\nimport { useAddressLabel } from '../../../hooks/use-address-label';\nimport {\n  applyInternalProps,\n  findChildOfType,\n} from '../../../services/find-child';\nimport { Description } from '../../field-description/field-description-headless';\nimport { Error } from '../../field-error/field-error-headless';\nimport {\n  Label,\n  type LabelInternalProps,\n} from '../../field-label/field-label-headless';\n\nexport type SubdivisionProps = {\n  children: ReactNode;\n};\n\nexport const Subdivision = ({ children }: SubdivisionProps) => {\n  const {\n    id,\n    value,\n    onChange,\n    disabled,\n    required,\n    onBlur,\n    onFocus,\n    FieldLayout,\n  } = useFieldPropsV2<MlaSubdivisionProps>();\n\n  const { t } = useTranslation();\n  const countryCode = useCountryCode();\n  const countryCodeAlpha3 = countryCode\n    ? COUNTRY_CODES[countryCode]\n    : undefined;\n\n  const country = countryCode && getCountryByShortKey(countryCode);\n\n  const subdivisionOptions = useMemo(() => {\n    const subdivisions = mapSubdivisionReplacedBy(\n      country?.subdivisions?.list || [],\n      countryCodeAlpha3!,\n    );\n    return (subdivisions || [])\n      .map((subdivision) => ({\n        value: subdivision.key,\n        label: t(subdivision.displayName),\n      }))\n      .sort((a, b) => a.label.localeCompare(b.label));\n  }, [countryCodeAlpha3, t, country]);\n\n  const handleChange = useCallback(\n    (selectedValue: React.Key | null) => {\n      onChange(typeof selectedValue === 'string' ? selectedValue : '');\n    },\n    [onChange],\n  );\n\n  const subdivisionLabel = useAddressLabel('subdivision');\n  const labelElement = findChildOfType(children, Subdivision.Label);\n  const triggerElement = findChildOfType(children, Subdivision.Trigger);\n  const optionsElement = findChildOfType(children, Subdivision.Options);\n  const descriptionElement = findChildOfType(children, Subdivision.Description);\n  const errorElement = findChildOfType(children, Subdivision.Error);\n\n  return (\n    <FieldLayout\n      fieldId={id}\n      renderLabel={() =>\n        applyInternalProps<LabelInternalProps>(labelElement, {\n          label: subdivisionLabel,\n        })\n      }\n      renderInput={() => (\n        <SelectRAC\n          value={value ?? null}\n          onChange={handleChange}\n          isDisabled={disabled}\n          isRequired={required}\n          onBlur={onBlur}\n          onFocus={onFocus}\n        >\n          {triggerElement}\n          {applyInternalProps<OptionsInternalProps>(optionsElement, {\n            options: subdivisionOptions,\n          })}\n        </SelectRAC>\n      )}\n      renderDescription={() => (\n        <>\n          {descriptionElement}\n          {errorElement}\n        </>\n      )}\n    />\n  );\n};\n\ntype TriggerProps = {\n  className?: string;\n};\n\nconst Trigger = ({ className }: TriggerProps) => {\n  const { inputId, ariaDescribedBy } = useFieldAttributes();\n  const { id } = useFieldPropsV2<MlaSubdivisionProps>();\n\n  const ref = useRef<HTMLButtonElement>(null);\n  useFocusFieldEvent(() => {\n    ref.current?.focus();\n  }, id);\n\n  return (\n    <ButtonRAC\n      ref={ref}\n      id={inputId}\n      aria-describedby={ariaDescribedBy}\n      className={className}\n    >\n      <SelectValueRAC />\n    </ButtonRAC>\n  );\n};\n\ntype OptionsProps = {\n  children: ReactNode;\n  className?: string;\n};\n\ntype OptionsInternalProps = {\n  options: { value: string; label: string }[];\n};\n\nconst Options = ({ children, className, ...internal }: OptionsProps) => {\n  const { options } = internal as OptionsInternalProps;\n\n  const optionElement = findChildOfType(children, Options.Option);\n\n  return (\n    <PopoverRAC className={className}>\n      <ListBoxRAC>\n        {options.map((option) =>\n          applyInternalProps<OptionInternalProps>(optionElement, {\n            key: option.value,\n            value: option.value,\n            label: option.label,\n          }),\n        )}\n      </ListBoxRAC>\n    </PopoverRAC>\n  );\n};\n\ntype OptionProps = {\n  className?: string;\n};\n\ntype OptionInternalProps = {\n  value: string;\n  label: string;\n};\n\nconst Option = ({ className, ...internal }: OptionProps) => {\n  const { value, label } = internal as OptionInternalProps;\n  return (\n    <ListBoxItemRAC className={className} id={value} textValue={label}>\n      {label}\n    </ListBoxItemRAC>\n  );\n};\n\nOptions.Option = Option;\n\nSubdivision.Label = Label;\nSubdivision.Trigger = Trigger;\nSubdivision.Options = Options;\nSubdivision.Description = Description;\nSubdivision.Error = Error;\n","import { useEffect, useRef, useState } from 'react';\n\nexport const useInvokeCallback = (callback?: () => void) => {\n  const [callCount, setCallCount] = useState(0);\n  const shouldInvoke = useRef(false);\n\n  useEffect(() => {\n    if (callCount > 0 && shouldInvoke.current) {\n      shouldInvoke.current = false;\n      callback?.();\n    }\n  }, [callCount, callback]);\n\n  const invokeCallback = () => {\n    setCallCount((count) => count + 1);\n    shouldInvoke.current = true;\n  };\n\n  return invokeCallback;\n};\n","import React, {\n  type ReactNode,\n  useRef,\n  useCallback,\n  useState,\n  useEffect,\n} from 'react';\nimport {\n  NumberField as NumberFieldRAC,\n  Input as InputRAC,\n} from 'react-aria-components';\n\nimport { useFocusFieldEvent } from '../../contexts/events-context';\nimport { useFieldAttributes } from '../../contexts/field-attributes-context';\nimport { useFieldPropsV2 } from '../../contexts/field-props-context';\nimport { useTranslation } from '../../contexts/translation-context';\nimport { findChildOfType } from '../../services/find-child';\nimport { Description } from '../field-description/field-description-headless';\nimport { Error } from '../field-error/field-error-headless';\nimport { Label } from '../field-label/field-label-headless';\nimport { getNumberOfDecimals } from '../shared/numeric-input-utils';\nimport { useInvokeCallback } from '../shared/use-invoke-callback';\n\nimport { type NumberInputFieldProps } from './number-input-field-props';\n\nexport type NumberInputProps = {\n  children: ReactNode;\n};\n\nexport const NumberInput = ({ children }: NumberInputProps) => {\n  const {\n    id,\n    value,\n    onChange,\n    disabled,\n    required,\n    readOnly,\n    onBlur,\n    onFocus,\n    FieldLayout,\n    hasError,\n    validation,\n  } = useFieldPropsV2<NumberInputFieldProps>();\n  const multipleOf = validation?.number?.multipleOf || 1;\n  const maximum = validation?.number?.maximum;\n  const minimum = validation?.number?.minimum;\n  const numberValue = valueToNumber(value);\n  const [internalValue, setInternalValue] = useState<number>(numberValue);\n  const invokeBlur = useInvokeCallback(onBlur);\n\n  const labelElement = findChildOfType(children, NumberInput.Label);\n  const inputElement = findChildOfType(children, NumberInput.Input);\n  const descriptionElement = findChildOfType(children, NumberInput.Description);\n  const errorElement = findChildOfType(children, NumberInput.Error);\n\n  const handleChange = useCallback(\n    (newValue: number) => {\n      if (newValue === undefined || Number.isNaN(newValue)) {\n        onChange('');\n        setInternalValue(NaN);\n        return;\n      }\n\n      const numberOfDecimals = getNumberOfDecimals(multipleOf);\n      const validValue = Number(newValue.toFixed(numberOfDecimals));\n\n      onChange(validValue);\n      setInternalValue(validValue);\n    },\n    [multipleOf, onChange],\n  );\n\n  useEffect(() => {\n    const newValue = valueToNumber(value);\n\n    if (!newValue && !internalValue) {\n      return;\n    }\n\n    if (newValue !== internalValue) {\n      setInternalValue(newValue);\n    }\n  }, [internalValue, value]);\n\n  return (\n    <FieldLayout\n      fieldId={id}\n      renderLabel={() => labelElement}\n      renderInput={() => (\n        <NumberFieldRAC\n          value={internalValue}\n          onChange={handleChange}\n          isDisabled={disabled}\n          isRequired={required}\n          isReadOnly={readOnly}\n          isInvalid={hasError}\n          onBlur={invokeBlur}\n          onFocus={onFocus}\n          minValue={minimum ?? undefined}\n          maxValue={maximum ?? undefined}\n        >\n          {inputElement}\n        </NumberFieldRAC>\n      )}\n      renderDescription={() => (\n        <>\n          {descriptionElement}\n          {errorElement}\n        </>\n      )}\n    />\n  );\n};\n\ntype InputProps = {\n  className?: string;\n};\n\nconst Input = ({ className }: InputProps) => {\n  const { t } = useTranslation();\n  const { inputId, ariaDescribedBy } = useFieldAttributes();\n  const { id, placeholder, validation, label, required } =\n    useFieldPropsV2<NumberInputFieldProps>();\n  const multipleOf = validation?.number?.multipleOf || 1;\n  const ref = useRef<HTMLInputElement>(null);\n\n  useFocusFieldEvent(() => {\n    ref.current?.focus();\n  }, id);\n\n  return (\n    <InputRAC\n      ref={ref}\n      id={inputId}\n      aria-describedby={ariaDescribedBy}\n      aria-label={label}\n      aria-roledescription={t('field.number.aria-role-description')}\n      className={className}\n      inputMode={multipleOf ? 'decimal' : 'numeric'}\n      placeholder={placeholder}\n      required={required}\n    />\n  );\n};\n\nNumberInput.Label = Label;\nNumberInput.Input = Input;\nNumberInput.Description = Description;\nNumberInput.Error = Error;\n\nconst valueToNumber = (value: NumberInputFieldProps['value']): number => {\n  if (value === null || value === undefined || value === '') {\n    return NaN;\n  }\n\n  if (typeof value === 'number') {\n    return value;\n  }\n\n  const parsed = Number(value);\n\n  return Number.isNaN(parsed) ? NaN : parsed;\n};\n","import React, { type ReactNode, useCallback, useRef, useState } from 'react';\nimport {\n  TextField as TextFieldRAC,\n  Input as InputRAC,\n  Group as GroupRAC,\n} from 'react-aria-components';\n\nimport { useConfig } from '../../contexts/config-context';\nimport { useFocusFieldEvent } from '../../contexts/events-context';\nimport { useFieldAttributes } from '../../contexts/field-attributes-context';\nimport { useFieldPropsV2 } from '../../contexts/field-props-context';\nimport { useTranslation } from '../../contexts/translation-context';\nimport { findChildOfType } from '../../services/find-child';\nimport { Description } from '../field-description/field-description-headless';\nimport { Error } from '../field-error/field-error-headless';\nimport { Label } from '../field-label/field-label-headless';\nimport {\n  formatPrice,\n  getCurrencyAriaLabel,\n} from '../shared/payment-field-utils';\n\nimport { type PaymentInputFieldProps } from './payment-input-field-props';\nimport { toProductValue } from './payment-input-field-utils';\n\nexport type PaymentInputProps = {\n  children: ReactNode;\n};\n\nconst PaymentInput = ({ children }: PaymentInputProps) => {\n  const {\n    id,\n    value,\n    onChange,\n    disabled,\n    required,\n    hasError,\n    onBlur,\n    onFocus,\n    FieldLayout,\n    validation,\n  } = useFieldPropsV2<PaymentInputFieldProps>();\n\n  const { regionalFormat } = useConfig();\n  const paymentValidation =\n    validation?.predefined?.paymentOptions?.products?.[0];\n\n  const [paymentValue, setPaymentValue] = useState(\n    String(value?.at(0)?.price ?? ''),\n  );\n\n  const handleOnBlur = useCallback(() => {\n    const price = formatPrice(paymentValue, regionalFormat);\n    setPaymentValue(price ? price : '');\n    onBlur?.();\n  }, [paymentValue, regionalFormat, onBlur]);\n\n  const handleOnChange = useCallback(\n    (newValue: string) => {\n      setPaymentValue(newValue);\n      const filteredInput = formatPrice(newValue, regionalFormat);\n      if (filteredInput) {\n        const normalizedValue = Number(filteredInput.replace(/,/g, '.'));\n        onChange([toProductValue(paymentValidation!, normalizedValue)]);\n      } else {\n        onChange(null);\n      }\n    },\n    [onChange, paymentValidation, regionalFormat],\n  );\n\n  const labelElement = findChildOfType(children, PaymentInput.Label);\n  const inputElement = findChildOfType(children, PaymentInput.Input);\n  const descriptionElement = findChildOfType(\n    children,\n    PaymentInput.Description,\n  );\n  const errorElement = findChildOfType(children, PaymentInput.Error);\n\n  return (\n    <FieldLayout\n      fieldId={id}\n      renderLabel={() => labelElement}\n      renderInput={() => (\n        <TextFieldRAC\n          value={value ? paymentValue : ''}\n          onChange={handleOnChange}\n          isDisabled={disabled}\n          isRequired={required}\n          isInvalid={hasError}\n          onBlur={handleOnBlur}\n          onFocus={onFocus}\n        >\n          {inputElement}\n        </TextFieldRAC>\n      )}\n      renderDescription={() => (\n        <>\n          {descriptionElement}\n          {errorElement}\n        </>\n      )}\n    />\n  );\n};\n\nexport type InputProps = {\n  children: ReactNode;\n  className?: string;\n};\n\nconst Input = ({ children, className }: InputProps) => {\n  const { inputId, ariaDescribedBy } = useFieldAttributes();\n\n  const currencyElement = findChildOfType(children, Input.Currency);\n  const valueElement = findChildOfType(children, Input.Value);\n\n  return (\n    <GroupRAC\n      id={inputId}\n      aria-describedby={ariaDescribedBy}\n      className={className}\n    >\n      {currencyElement}\n      {valueElement}\n    </GroupRAC>\n  );\n};\n\nexport type CurrencyProps = {\n  className?: string;\n};\n\nconst Currency = ({ className }: CurrencyProps) => {\n  const { currency } = useConfig();\n  const { t } = useTranslation();\n  const { prefixId } = useFieldAttributes();\n\n  if (!currency) {\n    return null;\n  }\n\n  return (\n    <span\n      id={prefixId}\n      aria-hidden={false}\n      aria-label={getCurrencyAriaLabel(t, currency)}\n      className={className}\n    >\n      {currency.sign || currency.code}\n    </span>\n  );\n};\n\nexport type ValueProps = {\n  className?: string;\n};\n\nconst Value = ({ className }: ValueProps) => {\n  const { id, placeholder, label } = useFieldPropsV2<PaymentInputFieldProps>();\n  const { labelId, prefixId } = useFieldAttributes();\n\n  const inputRef = useRef<HTMLInputElement>(null);\n\n  useFocusFieldEvent(() => {\n    inputRef.current?.focus();\n  }, id);\n\n  return (\n    <InputRAC\n      ref={inputRef}\n      className={className}\n      placeholder={placeholder}\n      aria-label={label}\n      aria-labelledby={`${labelId} ${prefixId}`}\n      autoComplete=\"off\"\n    />\n  );\n};\n\nInput.Currency = Currency;\nInput.Value = Value;\n\nPaymentInput.Label = Label;\nPaymentInput.Input = Input;\nPaymentInput.Description = Description;\nPaymentInput.Error = Error;\n\nexport { PaymentInput };\n","import {\n  type CallingCountryCode,\n  type CallingCountryCodeAlpha3,\n} from '@wix/form-validator';\nimport { Globe } from '@wix/wix-ui-icons-common';\nimport React, {\n  type ReactNode,\n  useRef,\n  createContext,\n  useContext,\n  useMemo,\n} from 'react';\nimport {\n  Select as SelectRAC,\n  Button as ButtonRAC,\n  Popover as PopoverRAC,\n  ListBox as ListBoxRAC,\n  ListBoxItem as ListBoxItemRAC,\n  Input as InputRAC,\n} from 'react-aria-components';\n\nimport { useFocusFieldEvent } from '../../contexts/events-context';\nimport { useFieldAttributes } from '../../contexts/field-attributes-context';\nimport { useFieldPropsV2 } from '../../contexts/field-props-context';\nimport { useTranslation } from '../../contexts/translation-context';\nimport { findChildOfType, applyInternalProps } from '../../services/find-child';\nimport { Description } from '../field-description/field-description-headless';\nimport { Error as FieldError } from '../field-error/field-error-headless';\nimport { Label } from '../field-label/field-label-headless';\n\nimport { getCallingCode, type Country } from './phone-input/phone-input-utils';\nimport { filterCountries, useCountries } from './phone-input/use-countries';\nimport { usePhoneInputLogic } from './phone-input/use-phone-input-logic';\nimport { type PhoneInputFieldProps } from './phone-input-field-props';\n\ntype PhoneInputContextValue = {\n  currentValue: string;\n  selectedCountryCode: CallingCountryCode | undefined;\n  handlePhoneChange: (value: string) => void;\n  handleCountryCodeChange: (countryCode: CallingCountryCode) => void;\n  countryCodes: CallingCountryCode[];\n  countries: Country[];\n};\n\nconst PhoneInputContext = createContext<PhoneInputContextValue | null>(null);\n\nconst usePhoneInputContext = (): PhoneInputContextValue => {\n  const context = useContext(PhoneInputContext);\n  if (!context) {\n    throw new Error(\n      'Phone input components must be used within PhoneInput component',\n    );\n  }\n  return context;\n};\n\ntype OptionDataContextValue = {\n  countryCode: CallingCountryCode;\n  dialingCode: string;\n  countryName: string;\n  longCountryCode: CallingCountryCodeAlpha3;\n};\n\nconst OptionDataContext = createContext<OptionDataContextValue | null>(null);\n\nconst useOptionDataContext = (): OptionDataContextValue => {\n  const context = useContext(OptionDataContext);\n  if (!context) {\n    throw new Error(\n      'Option sub-components must be used within Option component',\n    );\n  }\n  return context;\n};\n\nconst Flag = ({\n  longCountryCode,\n  className,\n}: {\n  longCountryCode: CallingCountryCodeAlpha3;\n  className?: string;\n}) => {\n  function getFlagUrl(\n    _longCountryCode: CallingCountryCodeAlpha3,\n    size: '1x' | '2x',\n  ) {\n    const baseUrl =\n      'https://static.parastorage.com/services/linguist-flags/1.1005.0/assets/flags/square/';\n\n    const suffix = size === '2x' ? '_2x' : '';\n\n    const file = `${_longCountryCode}${suffix}.png`;\n\n    return `${baseUrl}${file}`;\n  }\n\n  const flag1x = getFlagUrl(longCountryCode, '1x');\n  const flag2x = getFlagUrl(longCountryCode, '2x');\n\n  return (\n    <img\n      src={flag1x}\n      srcSet={`${flag1x} 1x, ${flag2x} 2x`}\n      alt=\"\"\n      aria-hidden=\"true\"\n      loading=\"lazy\"\n      className={className}\n      style={{ width: '22px', height: 'auto' }}\n    />\n  );\n};\n\nexport type PhoneInputProps = {\n  children: ReactNode;\n};\n\nexport const PhoneInput = ({ children }: PhoneInputProps) => {\n  const { id, value, onChange, FieldLayout, defaultCountry, validation } =\n    useFieldPropsV2<PhoneInputFieldProps>();\n\n  const allowedCountryCodes = validation?.string?.phoneOptions\n    ?.allowedCountryCodes as CallingCountryCode[] | undefined;\n\n  const allCountries = useCountries();\n  const countries = useMemo(\n    () => filterCountries(allCountries, allowedCountryCodes),\n    [allCountries, allowedCountryCodes],\n  );\n\n  const countryCodes = useMemo(\n    () => countries.map((country) => country.shortCountryCode),\n    [countries],\n  );\n\n  const {\n    currentValue,\n    selectedCountryCode,\n    handlePhoneChange,\n    handleCountryCodeChange,\n  } = usePhoneInputLogic({\n    value,\n    defaultCountryCode: defaultCountry,\n    allowedCountryCodes: countryCodes,\n    onChange,\n  });\n\n  const labelElement = findChildOfType(children, PhoneInput.Label);\n  const controlElement = findChildOfType(children, PhoneInput.Control);\n  const descriptionElement = findChildOfType(children, PhoneInput.Description);\n  const errorElement = findChildOfType(children, PhoneInput.Error);\n\n  const contextValue: PhoneInputContextValue = {\n    currentValue,\n    selectedCountryCode,\n    handlePhoneChange,\n    handleCountryCodeChange,\n    countryCodes,\n    countries,\n  };\n\n  return (\n    <PhoneInputContext.Provider value={contextValue}>\n      <FieldLayout\n        fieldId={id}\n        renderLabel={() => labelElement}\n        renderInput={() => controlElement}\n        renderDescription={() => (\n          <>\n            {descriptionElement}\n            {errorElement}\n          </>\n        )}\n      />\n    </PhoneInputContext.Provider>\n  );\n};\n\ntype CountryButtonProps = {\n  children?: ReactNode;\n  className?: string;\n};\n\nconst CountryButton = ({ children, className }: CountryButtonProps) => {\n  const { inputId, labelId } = useFieldAttributes();\n  const { id, hasError } = useFieldPropsV2<PhoneInputFieldProps>();\n  const { t } = useTranslation();\n  const { selectedCountryCode, countries } = usePhoneInputContext();\n  const buttonId = `${inputId}-country`;\n\n  const ref = useRef<HTMLButtonElement>(null);\n  useFocusFieldEvent(() => {\n    ref.current?.focus();\n  }, id);\n\n  const selectedCountry = selectedCountryCode\n    ? countries.find((c) => c.shortCountryCode === selectedCountryCode)\n    : undefined;\n  const dialingCode = selectedCountry\n    ? getCallingCode(selectedCountry.longCountryCode) || ''\n    : '';\n  const countryCodeLabel = t('field.phone.country-code.aria-label');\n  const ariaLabel = selectedCountry\n    ? `${countryCodeLabel}, ${selectedCountry.countryName}, ${dialingCode}`\n    : countryCodeLabel;\n\n  return (\n    <ButtonRAC\n      ref={ref}\n      id={buttonId}\n      aria-label={ariaLabel}\n      aria-labelledby={labelId ? `${labelId} ${buttonId}` : undefined}\n      className={className}\n      data-invalid={hasError}\n    >\n      {children}\n    </ButtonRAC>\n  );\n};\n\ntype CountryButtonFlagProps = {\n  className?: string;\n};\n\nconst CountryButtonFlag = ({ className }: CountryButtonFlagProps) => {\n  const { selectedCountryCode, countries } = usePhoneInputContext();\n  const selectedCountry = countries.find(\n    (c) => c.shortCountryCode === selectedCountryCode,\n  );\n\n  if (!selectedCountry) {\n    return null;\n  }\n\n  return (\n    <Flag\n      className={className}\n      longCountryCode={selectedCountry.longCountryCode}\n    />\n  );\n};\n\ntype CountryButtonEmptyStateProps = {\n  className?: string;\n};\n\nconst CountryButtonEmptyState = ({\n  className,\n}: CountryButtonEmptyStateProps) => {\n  const { selectedCountryCode } = usePhoneInputContext();\n\n  if (selectedCountryCode) {\n    return null;\n  }\n\n  return <Globe className={className} width={22} height={22} />;\n};\n\nCountryButton.Flag = CountryButtonFlag;\nCountryButton.EmptyState = CountryButtonEmptyState;\n\ntype CountryOptionsProps = {\n  children: ReactNode;\n  className?: string;\n};\n\nconst CountryOptions = ({ children, className }: CountryOptionsProps) => {\n  const { countries } = usePhoneInputContext();\n  const optionElement = findChildOfType(children, CountryOptions.Option);\n\n  return (\n    <PopoverRAC className={className}>\n      <ListBoxRAC>\n        {countries.map((country) => {\n          const dialingCode = getCallingCode(country.longCountryCode) || '';\n\n          return applyInternalProps<OptionInternalProps>(optionElement, {\n            key: country.shortCountryCode,\n            countryCode: country.shortCountryCode,\n            dialingCode,\n            countryName: country.countryName,\n            longCountryCode: country.longCountryCode,\n          });\n        })}\n      </ListBoxRAC>\n    </PopoverRAC>\n  );\n};\n\ntype OptionProps = {\n  children?: ReactNode;\n  className?: string;\n};\n\ntype OptionInternalProps = {\n  countryCode: CallingCountryCode;\n  dialingCode: string;\n  countryName: string;\n  longCountryCode: CallingCountryCodeAlpha3;\n};\n\nconst Option = ({ children, className, ...internal }: OptionProps) => {\n  const { countryCode, dialingCode, countryName, longCountryCode } =\n    internal as OptionInternalProps;\n\n  const optionData: OptionDataContextValue = {\n    countryCode,\n    dialingCode,\n    countryName,\n    longCountryCode,\n  };\n\n  const content = children || (\n    <>\n      <OptionFlag />\n      <OptionName />\n      <OptionCode />\n    </>\n  );\n\n  return (\n    <ListBoxItemRAC\n      className={className}\n      id={countryCode}\n      textValue={`${countryName} ${dialingCode}`}\n    >\n      <OptionDataContext.Provider value={optionData}>\n        {content}\n      </OptionDataContext.Provider>\n    </ListBoxItemRAC>\n  );\n};\n\ntype OptionFlagProps = {\n  className?: string;\n};\n\nconst OptionFlag = ({ className }: OptionFlagProps) => {\n  const { longCountryCode } = useOptionDataContext();\n  return <Flag className={className} longCountryCode={longCountryCode} />;\n};\n\ntype OptionNameProps = {\n  className?: string;\n};\n\nconst OptionName = ({ className }: OptionNameProps) => {\n  const { countryName } = useOptionDataContext();\n  return <span className={className}>{countryName}</span>;\n};\n\ntype OptionCodeProps = {\n  className?: string;\n};\n\nconst OptionCode = ({ className }: OptionCodeProps) => {\n  const { dialingCode } = useOptionDataContext();\n  return <span className={className}>{dialingCode}</span>;\n};\n\nOption.Flag = OptionFlag;\nOption.Name = OptionName;\nOption.Code = OptionCode;\n\nCountryOptions.Option = Option;\n\ntype PhoneNumberProps = {\n  className?: string;\n};\n\nconst PhoneNumber = ({ className }: PhoneNumberProps) => {\n  const { t } = useTranslation();\n  const { inputId, ariaDescribedBy } = useFieldAttributes();\n  const {\n    id,\n    placeholder,\n    disabled,\n    required,\n    onBlur,\n    onFocus,\n    label,\n    hasError,\n  } = useFieldPropsV2<PhoneInputFieldProps>();\n  const { currentValue, handlePhoneChange } = usePhoneInputContext();\n\n  const ref = useRef<HTMLInputElement>(null);\n  useFocusFieldEvent(() => {\n    ref.current?.focus();\n  }, id);\n\n  return (\n    <InputRAC\n      ref={ref}\n      id={inputId}\n      type=\"tel\"\n      value={currentValue}\n      onChange={(e) => handlePhoneChange(e.target.value)}\n      disabled={disabled}\n      required={required}\n      onBlur={onBlur}\n      onFocus={onFocus}\n      aria-label={`${label}. ${t('field.phone.aria-label')}`}\n      aria-describedby={ariaDescribedBy}\n      aria-invalid={hasError}\n      placeholder={placeholder}\n      className={className}\n    />\n  );\n};\n\ntype ControlProps = {\n  children: ReactNode;\n  className?: string;\n  style?: React.CSSProperties;\n};\n\nconst Control = ({ children, className }: ControlProps) => {\n  const { disabled, required, hasError } =\n    useFieldPropsV2<PhoneInputFieldProps>();\n  const { selectedCountryCode, handleCountryCodeChange } =\n    usePhoneInputContext();\n\n  const countryButtonElement = findChildOfType(\n    children,\n    PhoneInput.CountryButton,\n  );\n  const countryOptionsElement = findChildOfType(\n    children,\n    PhoneInput.CountryOptions,\n  );\n  const phoneNumberElement = findChildOfType(children, PhoneInput.PhoneNumber);\n\n  return (\n    <div className={className}>\n      <SelectRAC\n        value={selectedCountryCode ?? null}\n        onChange={(key) => handleCountryCodeChange(key as CallingCountryCode)}\n        isDisabled={disabled}\n        isInvalid={hasError}\n        isRequired={required}\n        placeholder=\"\"\n      >\n        {countryButtonElement}\n        {countryOptionsElement}\n      </SelectRAC>\n      {phoneNumberElement}\n    </div>\n  );\n};\n\nPhoneInput.Label = Label;\nPhoneInput.Control = Control;\nPhoneInput.CountryButton = CountryButton;\nPhoneInput.CountryOptions = CountryOptions;\nPhoneInput.PhoneNumber = PhoneNumber;\nPhoneInput.Description = Description;\nPhoneInput.Error = FieldError;\n","import {\n  CALLING_COUNTRY_CODES,\n  type CallingCountryCode,\n  type CallingCountryCodeAlpha3,\n} from '@wix/form-validator';\nimport localeDataset from '@wix/locale-dataset-javascript';\nimport parsePhoneNumber, {\n  AsYouType,\n  isValidPhoneNumber,\n} from 'libphonenumber-js';\nimport Metadata from 'libphonenumber-js/metadata.min.json';\n\nexport type Country = {\n  callingCode: string;\n  countryName: string;\n  longCountryCode: CallingCountryCodeAlpha3;\n  shortCountryCode: CallingCountryCode;\n};\n\nexport const PHONE_PREFIX = '+';\n\nexport function parseCountryCodeFromPhoneNumber(\n  phoneNumber: string,\n): CallingCountryCode | undefined {\n  const parsedNumber = phoneNumber ? parsePhoneNumber(phoneNumber) : undefined;\n  const parsedCountryCode = parsedNumber?.country;\n  if (parsedCountryCode) {\n    return parsedCountryCode as CallingCountryCode;\n  }\n\n  const asYouType = new AsYouType();\n  phoneNumber && asYouType.input(phoneNumber);\n  const guessedCountryCode = asYouType.getCountry();\n  return guessedCountryCode as CallingCountryCode;\n}\n\nexport function parseCountryCodeFromCallingCode(\n  callingCode: string,\n): CallingCountryCode | undefined {\n  const countryByCallingCode = getCountryCodeByCallingCode(callingCode);\n\n  return countryByCallingCode as CallingCountryCode;\n}\n\nexport function toLongCountryCode(\n  shortCountryCode: string | undefined,\n): CallingCountryCodeAlpha3 | undefined {\n  return shortCountryCode\n    ? CALLING_COUNTRY_CODES[shortCountryCode as CallingCountryCode]\n    : undefined;\n}\n\nexport function getCallingCode(\n  countryCode: CallingCountryCodeAlpha3 | undefined,\n) {\n  return countryCode && localeDataset.getCountryByKey(countryCode)?.dialCode;\n}\n\nfunction getCountryCodeByCallingCode(phoneNumber: string): string | undefined {\n  phoneNumber = phoneNumber.trim();\n\n  if (!phoneNumber.startsWith(PHONE_PREFIX)) {\n    return undefined;\n  }\n\n  const withoutPrefix = phoneNumber.replace(/^\\+/, '');\n  const oneCharCode = withoutPrefix.substring(0, 1);\n  const twoCharCode = withoutPrefix.substring(0, 2);\n  const threeCharCode = withoutPrefix.substring(0, 3);\n  const fourCharCode = withoutPrefix.substring(0, 4);\n\n  const country =\n    Metadata.country_calling_codes[fourCharCode]?.[0] ||\n    Metadata.country_calling_codes[threeCharCode]?.[0] ||\n    Metadata.country_calling_codes[twoCharCode]?.[0] ||\n    Metadata.country_calling_codes[oneCharCode]?.[0];\n\n  return country;\n}\n\nexport function replaceCallingCode(phoneNumber: string, callingCode: string) {\n  const countryCodeByPhoneNumber = parseCountryCodeFromPhoneNumber(phoneNumber);\n  const countryCodeByCallingCode = parseCountryCodeFromCallingCode(phoneNumber);\n  const countryCode = toLongCountryCode(\n    countryCodeByPhoneNumber || countryCodeByCallingCode,\n  );\n  const currentCallingCode = getCallingCode(countryCode);\n\n  if (currentCallingCode) {\n    return phoneNumber.replace(currentCallingCode, callingCode);\n  } else {\n    const withoutPrefix = phoneNumber.replace(PHONE_PREFIX, '');\n    return `${callingCode}${withoutPrefix}`;\n  }\n}\n\nexport function parseLocalPhone(\n  value: string | null,\n  country?: CallingCountryCode,\n) {\n  if (value && country) {\n    try {\n      const phoneNumber = parsePhoneNumber(value, country);\n      const formattedPhoneNumber = phoneNumber?.formatInternational();\n      if (formattedPhoneNumber && isValidPhoneNumber(formattedPhoneNumber)) {\n        return formattedPhoneNumber.replace(/\\s+/g, '');\n      }\n    } catch (e) {}\n  }\n\n  return value;\n}\n","import {\n  CALLING_COUNTRY_CODES,\n  type CallingCountryCode,\n} from '@wix/form-validator';\nimport { isSupportedCountry } from 'libphonenumber-js';\nimport { useMemo } from 'react';\n\nimport { useConfig } from '../../../contexts/config-context';\nimport { useTranslation } from '../../../contexts/translation-context';\n\nimport { getCallingCode, type Country } from './phone-input-utils';\n\nexport function useCountries() {\n  const { t } = useTranslation();\n  const { language } = useConfig();\n\n  const countries = useMemo(() => {\n    return (Object.keys(CALLING_COUNTRY_CODES) as CallingCountryCode[])\n      .reduce<Country[]>((result, shortCountryCode) => {\n        const longCountryCode = CALLING_COUNTRY_CODES[shortCountryCode];\n        const callingCode = getCallingCode(longCountryCode);\n        const countryName = t(\n          `locale-dataset.countries.${longCountryCode.toUpperCase()}`,\n        );\n\n        if (callingCode && isSupportedCountry(shortCountryCode)) {\n          result.push({\n            countryName,\n            longCountryCode,\n            shortCountryCode,\n            callingCode,\n          });\n        }\n\n        return result;\n      }, [])\n      .sort((a, b) => a.countryName.localeCompare(b.countryName, language));\n  }, [t, language]);\n\n  return countries;\n}\n\nexport function searchCountries(countries: Country[], searchPhrase: string) {\n  return countries.filter((country) =>\n    isCountryMatching(country, searchPhrase),\n  );\n}\n\nexport function filterCountries(\n  countries: Country[],\n  allowedCountryCodes: CallingCountryCode[] | undefined,\n) {\n  return countries.filter((country) =>\n    allowedCountryCodes && allowedCountryCodes.length > 0\n      ? allowedCountryCodes.includes(country.shortCountryCode)\n      : true,\n  );\n}\n\nexport function isCountryMatching(country: Country, searchPhrase: string) {\n  const { countryName, callingCode, shortCountryCode } = country;\n\n  if (isSubstring(countryName, searchPhrase)) {\n    return true;\n  }\n\n  if (isSubstring(callingCode, searchPhrase)) {\n    return true;\n  }\n\n  if (isSubstring(shortCountryCode, searchPhrase)) {\n    return true;\n  }\n\n  return false;\n}\n\nfunction isSubstring(full: string, part: string) {\n  return full.toLowerCase().includes(part.toLowerCase());\n}\n","import { type CallingCountryCode } from '@wix/form-validator';\nimport { useState, useEffect, useMemo, useCallback } from 'react';\n\nimport {\n  parseCountryCodeFromPhoneNumber,\n  parseLocalPhone,\n} from './phone-input-utils';\n\ninterface UsePhoneInputLogicParams {\n  value: string | null | undefined;\n  defaultCountryCode: CallingCountryCode | undefined;\n  allowedCountryCodes: CallingCountryCode[] | undefined;\n  onChange: (value: string | null) => void;\n}\n\ninterface UsePhoneInputLogicReturn {\n  currentValue: string;\n  selectedCountryCode: CallingCountryCode | undefined;\n  handlePhoneChange: (newValue: string) => void;\n  handleCountryCodeChange: (countryCode: CallingCountryCode) => void;\n}\n\n// TODO: use this for WDS and WUT fields\nexport function usePhoneInputLogic({\n  value,\n  defaultCountryCode,\n  allowedCountryCodes,\n  onChange,\n}: UsePhoneInputLogicParams): UsePhoneInputLogicReturn {\n  const [currentValue, setCurrentValue] = useState(value || '');\n  const [selectedCountryCode, setSelectedCountryCode] = useState<\n    CallingCountryCode | undefined\n  >(defaultCountryCode);\n\n  const countryCodeFromPhoneNumber = useMemo(\n    () => parseCountryCodeFromPhoneNumber(currentValue),\n    [currentValue],\n  );\n\n  // Sync with parent value while current value is falsy\n  useEffect(() => {\n    if (value && !currentValue) {\n      setCurrentValue(value);\n    }\n  }, [value, currentValue]);\n\n  // Sync selected country code with default or detected country code\n  useEffect(() => {\n    if (defaultCountryCode && !selectedCountryCode) {\n      setSelectedCountryCode(defaultCountryCode);\n    }\n  }, [defaultCountryCode, selectedCountryCode]);\n\n  // Update country code when detected from phone number\n  useEffect(() => {\n    setSelectedCountryCode(defaultCountryCode ?? countryCodeFromPhoneNumber);\n  }, [countryCodeFromPhoneNumber, defaultCountryCode]);\n\n  const handlePhoneChange = useCallback(\n    (newValue: string) => {\n      setCurrentValue(newValue);\n\n      if (!newValue) {\n        onChange(null);\n        return;\n      }\n\n      const countryCodeByPhoneNumber =\n        parseCountryCodeFromPhoneNumber(newValue);\n\n      setSelectedCountryCode((latestCountryCode) => {\n        const countryToUse =\n          countryCodeByPhoneNumber ||\n          latestCountryCode ||\n          (allowedCountryCodes?.length === 1\n            ? allowedCountryCodes[0]\n            : undefined);\n\n        const parsedValue = parseLocalPhone(newValue, countryToUse);\n        onChange(parsedValue);\n\n        return countryCodeByPhoneNumber || latestCountryCode;\n      });\n    },\n    [allowedCountryCodes, onChange],\n  );\n\n  const handleCountryCodeChange = useCallback(\n    (countryCode: CallingCountryCode) => {\n      setSelectedCountryCode(countryCode);\n\n      setCurrentValue((latestValue) => {\n        const parsedValue = parseLocalPhone(latestValue, countryCode);\n        onChange(parsedValue);\n        return latestValue;\n      });\n    },\n    [onChange],\n  );\n\n  return {\n    currentValue,\n    selectedCountryCode,\n    handlePhoneChange,\n    handleCountryCodeChange,\n  };\n}\n","import type { MutableRefObject } from 'react';\n\nimport { type Option } from '../../../../types';\nimport { type OtherSettingProps } from '../../other-setting/types';\nimport { type V2Path } from '../../use-setting';\n\nexport type OptionComponentProps<OptionType = Option> = {\n  option: OptionType;\n  allOptions: OptionType[];\n  index: number;\n  onChange: (updateOption: OptionType) => any;\n  onBlur: () => void;\n  isCorrect?: boolean;\n};\n\nexport type SetOptions<OptionType = Option> = (\n  options: OptionType[],\n  reorderInfo?: { currentIndex: number; nextIndex: number },\n) => void;\n\nexport interface OptionListProps<OptionType = Option> {\n  options: OptionType[];\n  setOptions: SetOptions<OptionType>;\n  optionCharacterLimit?: number;\n  createNewOption: (options: OptionType[]) => OptionType;\n  v2OptionsPath?: V2Path;\n  v2CustomOptionPath?: V2Path;\n  showCorrectAnswerSetting?: boolean;\n  isSettingCorrectAnswerMode?: boolean;\n  correctAnswerApplyRef?: MutableRefObject<(() => void) | null>;\n}\n\nexport type HandleDefaultValueCallback<OptionType = Option> = ({\n  option,\n}: {\n  option: OptionType;\n}) => void;\n\nexport type OnOptionRemoveCallback<OptionType = Option> = ({\n  option,\n  options,\n}: {\n  option: OptionType;\n  options: OptionType[];\n}) => void;\n\nexport type OnDefaultValueCallback<OptionType = Option> = ({\n  option,\n}: {\n  option: OptionType;\n}) => void;\n\nexport type IsDefaultOptionCheck<OptionType = Option> = (\n  option: OptionType,\n) => boolean;\n\nexport type isLabelVisibleCheck<OptionType = Option> = ({\n  option,\n}: {\n  option: OptionType;\n}) => boolean;\n\nexport type OnLabelVisibilityCallback<OptionType = Option> = ({\n  option,\n}: {\n  option: OptionType;\n}) => void;\n\nexport type hasAltTextCheck<OptionType = Option> = ({\n  option,\n}: {\n  option: OptionType;\n}) => boolean;\n\nexport type isAltTextDisabledCheck<OptionType = Option> = ({\n  option,\n}: {\n  option: OptionType;\n}) => boolean;\n\nexport type OnAltTextCallback<OptionType = Option> = ({\n  option,\n}: {\n  option: OptionType;\n}) => void;\n\nexport type HandleOptionRemoveCallback<OptionType = Option> = ({\n  option,\n  index,\n}: {\n  option: OptionType;\n  index: number;\n}) => void;\n\nexport type RenderOptionFn<OptionType = Option> = (\n  renderParams: OptionComponentProps<OptionType>,\n) => React.ReactNode;\n\nexport type RenderOptionFnWithAltText<OptionType = Option> = (renderParams: {\n  option: OptionType;\n  options: OptionType[];\n}) => React.ReactNode;\n\nexport enum SelectMode {\n  oneByOne = 'one-by-one',\n  onlyOne = 'only-one',\n  many = 'many',\n}\n\nexport interface OtherOptionProps extends OtherSettingProps {\n  show?: boolean;\n  toggleLabel?: string;\n  addOtherInfoContent?: string;\n  disabled?: boolean;\n}\n","import { type PaymentType } from '@wix/ambassador-forms-v4-form/types';\n\nimport { SelectMode } from '../../../../field-settings/settings-shared/options/options-list/types';\n\nexport function getSelectMode({\n  maxItems,\n  products,\n}: PaymentType = {}): SelectMode {\n  if (maxItems === 1) {\n    return SelectMode.onlyOne;\n  }\n  if (\n    products?.length &&\n    products.every(\n      (product) => typeof product.quantityLimit?.maximum === 'undefined',\n    )\n  ) {\n    return SelectMode.many;\n  }\n  return SelectMode.oneByOne;\n}\n","import React, {\n  type ReactNode,\n  useCallback,\n  useMemo,\n  useRef,\n  type KeyboardEventHandler,\n} from 'react';\nimport {\n  Checkbox as CheckboxRAC,\n  NumberField as NumberFieldRAC,\n  Group as GroupRAC,\n  Button as ButtonRAC,\n  Input as InputRAC,\n} from 'react-aria-components';\n\nimport { useConfig } from '../../contexts/config-context';\nimport { useFocusFieldEvent } from '../../contexts/events-context';\nimport { useFieldAttributes } from '../../contexts/field-attributes-context';\nimport { useFieldPropsV2 } from '../../contexts/field-props-context';\nimport { useTranslation } from '../../contexts/translation-context';\nimport { SelectMode } from '../../field-settings/settings-shared/options/options-list/types';\nimport {\n  type ProductListValue,\n  type ProductValue,\n} from '../../field-settings/settings-shared/products/types';\nimport { getSelectMode } from '../../fields/product-list/product-list-settings/select-mode-setting/get-select-mode';\nimport { findChildOfType, applyInternalProps } from '../../services/find-child';\nimport { getImageURL } from '../../services/get-image-url';\nimport { type Option } from '../../types';\nimport { formatCurrency } from '../../utils/format-currency';\nimport { Description } from '../field-description/field-description-headless';\nimport { Error } from '../field-error/field-error-headless';\nimport { Label } from '../field-label/field-label-headless';\nimport { FieldsetHeadless } from '../fieldset/fieldset-headless';\nimport { getCurrencyAriaLabel } from '../shared/payment-field-utils';\n\nimport { type ProductListComponentProps } from './product-list-props';\n\nexport type ProductListProps = {\n  children: ReactNode;\n};\n\nexport const ProductList = ({ children }: ProductListProps) => {\n  const {\n    id,\n    value,\n    onChange,\n    disabled,\n    required,\n    onBlur,\n    onFocus,\n    hasError,\n    validation,\n    FieldLayout,\n  } = useFieldPropsV2<ProductListComponentProps>();\n\n  const { inputId, labelId, ariaDescribedBy } = useFieldAttributes();\n\n  const labelElement = findChildOfType(children, ProductList.Label);\n  const optionsElement = findChildOfType(children, ProductList.Options);\n  const descriptionElement = findChildOfType(children, ProductList.Description);\n  const errorElement = findChildOfType(children, ProductList.Error);\n\n  const _value = useMemo<ProductListValue>(() => value || [], [value]);\n\n  const selectOptionsMode = getSelectMode(\n    validation?.predefined?.paymentOptions,\n  );\n  const allowMany = selectOptionsMode === SelectMode.many;\n\n  const handleChange = useCallback(\n    (productValue: ProductValue, isChecked: boolean) => {\n      const restProductValues = _value.filter(\n        (val) => val.productId !== productValue.productId,\n      );\n\n      const newProductValues = isChecked\n        ? [...restProductValues, productValue]\n        : restProductValues;\n      onChange?.(newProductValues);\n    },\n    [_value, onChange],\n  );\n\n  return (\n    <FieldLayout\n      fieldId={id}\n      renderLabel={() => labelElement}\n      renderInput={() => (\n        <FieldsetHeadless\n          id={inputId}\n          ariaLabelledBy={labelId}\n          ariaDescribedBy={ariaDescribedBy}\n          required={required}\n          onBlur={onBlur}\n          onFocus={onFocus}\n        >\n          {optionsElement\n            ? applyInternalProps<OptionsInternalProps>(optionsElement, {\n                allowMany,\n                productValues: _value,\n                onProductChange: handleChange,\n                disabled,\n                hasError,\n              })\n            : null}\n        </FieldsetHeadless>\n      )}\n      renderDescription={() => (\n        <>\n          {errorElement}\n          {descriptionElement}\n        </>\n      )}\n    />\n  );\n};\n\ntype OptionsProps = {\n  children: ReactNode;\n  className?: string;\n};\n\ntype OptionsInternalProps = {\n  allowMany: boolean;\n  productValues: ProductListValue;\n  onProductChange: (productValue: ProductValue, isChecked: boolean) => void;\n  disabled?: boolean;\n  hasError?: boolean;\n};\n\nconst Options = ({ children, className, ...internal }: OptionsProps) => {\n  const { allowMany, productValues, onProductChange, disabled, hasError } =\n    internal as OptionsInternalProps;\n  const { id, options, validation, imageResize } =\n    useFieldPropsV2<ProductListComponentProps>();\n  const { currency } = useConfig();\n  const { t } = useTranslation();\n\n  const optionElement = findChildOfType(children, ProductList.Option);\n  const firstCheckboxRef = useRef<HTMLLabelElement>(null);\n\n  useFocusFieldEvent(() => {\n    firstCheckboxRef.current?.focus({ preventScroll: true });\n  }, id);\n\n  return (\n    <div className={className}>\n      {options?.map((option, index) => {\n        const price =\n          validation?.predefined?.paymentOptions?.products?.find(\n            (p) => p.id === option.value,\n          )?.fixedPriceOptions?.price || '0';\n        const currencyTranslation = getCurrencyAriaLabel(t, currency);\n        const preselectedProduct = productValues.find(\n          (i: ProductValue) => i.productId === option.value,\n        );\n\n        return applyInternalProps<OptionInternalProps>(optionElement, {\n          key: option.id || option.value || option.label,\n          option,\n          price,\n          quantity: preselectedProduct?.quantity,\n          isSelected: Boolean(preselectedProduct),\n          allowMany,\n          onProductChange,\n          disabled,\n          hasError,\n          currencyAriaLabel: currencyTranslation,\n          imageResize,\n          isFirst: index === 0,\n          checkboxRef: index === 0 ? firstCheckboxRef : undefined,\n        });\n      })}\n    </div>\n  );\n};\n\ntype OptionProps = {\n  children: ReactNode;\n  className?: string;\n};\n\ntype OptionInternalProps = {\n  option: Option;\n  price: string;\n  quantity?: number;\n  isSelected: boolean;\n  allowMany: boolean;\n  onProductChange: (productValue: ProductValue, isChecked: boolean) => void;\n  disabled?: boolean;\n  hasError?: boolean;\n  currencyAriaLabel: string;\n  imageResize: ProductListComponentProps['imageResize'];\n  isFirst?: boolean;\n  checkboxRef?: React.RefObject<HTMLLabelElement>;\n};\n\nconst ProductOption = ({ children, className, ...internal }: OptionProps) => {\n  const {\n    option,\n    price,\n    quantity = 0,\n    isSelected,\n    allowMany,\n    onProductChange,\n    disabled,\n    hasError,\n    currencyAriaLabel,\n    imageResize,\n    checkboxRef,\n  } = internal as OptionInternalProps;\n\n  const imageElement = findChildOfType(children, ProductOption.Image);\n  const labelElement = findChildOfType(children, ProductOption.Label);\n  const priceElement = findChildOfType(children, ProductOption.Price);\n  const inputElement = findChildOfType(children, ProductOption.Input);\n  const quantityElement = findChildOfType(children, ProductOption.Quantity);\n\n  const handleCheckboxChange = useCallback(\n    (isChecked: boolean) => {\n      onProductChange(\n        {\n          productId: option.value!,\n          price,\n          quantity: 1,\n        },\n        isChecked,\n      );\n    },\n    [onProductChange, option.value, price],\n  );\n\n  const handleQuantityChange = useCallback(\n    (newQuantity: number) => {\n      onProductChange(\n        {\n          productId: option.value!,\n          price,\n          quantity: newQuantity,\n        },\n        newQuantity > 0,\n      );\n    },\n    [onProductChange, option.value, price],\n  );\n\n  const ariaLabel = `${option.label} ${currencyAriaLabel} ${price}`;\n\n  if (allowMany) {\n    return (\n      <div className={className} data-hook=\"product\">\n        {imageElement\n          ? applyInternalProps<OptionImageInternalProps>(imageElement, {\n              option,\n              imageResize,\n            })\n          : null}\n        {labelElement\n          ? applyInternalProps<OptionLabelInternalProps>(labelElement, {\n              label: option.label,\n            })\n          : null}\n        {priceElement\n          ? applyInternalProps<OptionPriceInternalProps>(priceElement, {\n              price,\n            })\n          : null}\n        {quantityElement\n          ? applyInternalProps<OptionQuantityInternalProps>(quantityElement, {\n              quantity,\n              onQuantityChange: handleQuantityChange,\n              disabled,\n              hasError,\n              ariaLabel,\n            })\n          : null}\n      </div>\n    );\n  }\n\n  return (\n    <CheckboxRAC\n      ref={checkboxRef}\n      isSelected={isSelected}\n      onChange={handleCheckboxChange}\n      isDisabled={disabled}\n      isInvalid={hasError}\n      aria-label={ariaLabel}\n      className={className}\n      data-hook=\"product\"\n    >\n      {imageElement\n        ? applyInternalProps<OptionImageInternalProps>(imageElement, {\n            option,\n            imageResize,\n          })\n        : null}\n      {labelElement\n        ? applyInternalProps<OptionLabelInternalProps>(labelElement, {\n            label: option.label,\n          })\n        : null}\n      {priceElement\n        ? applyInternalProps<OptionPriceInternalProps>(priceElement, {\n            price,\n          })\n        : null}\n      {inputElement}\n    </CheckboxRAC>\n  );\n};\n\ntype OptionImageProps = {\n  className?: string;\n};\n\ntype OptionImageInternalProps = {\n  option: Option;\n  imageResize: ProductListComponentProps['imageResize'];\n};\n\nconst OptionImage = ({ className, ...internal }: OptionImageProps) => {\n  const { option } = internal as OptionImageInternalProps;\n\n  if (!option.media?.image) {\n    return null;\n  }\n\n  const imageURL = getImageURL(option?.media?.image, 48, 56);\n\n  if (!imageURL) {\n    return null;\n  }\n\n  const imageAlt = option.media.image.altText || option.label || '';\n\n  return (\n    <img\n      className={className}\n      src={imageURL}\n      alt={imageAlt}\n      data-hook=\"product-image\"\n    />\n  );\n};\n\ntype OptionLabelProps = {\n  className?: string;\n};\n\ntype OptionLabelInternalProps = {\n  label: string;\n};\n\nconst OptionLabel = ({ className, ...internal }: OptionLabelProps) => {\n  const { label } = internal as OptionLabelInternalProps;\n\n  return (\n    <span className={className} data-hook=\"product-label\">\n      {label || ''}\n    </span>\n  );\n};\n\ntype OptionPriceProps = {\n  className?: string;\n};\n\ntype OptionPriceInternalProps = {\n  price: string;\n};\n\nconst OptionPrice = ({ className, ...internal }: OptionPriceProps) => {\n  const { price } = internal as OptionPriceInternalProps;\n  const { currency, regionalFormat } = useConfig();\n\n  const formattedPrice = formatCurrency({\n    amount: price,\n    currency: currency?.code,\n    locale: regionalFormat,\n  });\n\n  return (\n    <span className={className} data-hook=\"product-price\">\n      {formattedPrice}\n    </span>\n  );\n};\n\ntype OptionInputProps = {\n  className?: string;\n};\n\nconst OptionInput = ({ className }: OptionInputProps) => {\n  return <div aria-hidden=\"true\" className={className} />;\n};\n\ntype OptionQuantityProps = {\n  className?: string;\n};\n\ntype OptionQuantityInternalProps = {\n  quantity: number;\n  onQuantityChange: (quantity: number) => void;\n  disabled?: boolean;\n  hasError?: boolean;\n  ariaLabel: string;\n};\n\nconst OptionQuantity = ({ className, ...internal }: OptionQuantityProps) => {\n  const { quantity, onQuantityChange, disabled, hasError, ariaLabel } =\n    internal as OptionQuantityInternalProps;\n\n  const handleChange = useCallback(\n    (value: number) => {\n      onQuantityChange(value < 0 ? 0 : value);\n    },\n    [onQuantityChange],\n  );\n\n  const onKeyDown: KeyboardEventHandler<HTMLElement> = useCallback(\n    (event) => {\n      if (event.key === 'Home') {\n        event.preventDefault();\n        handleChange(0);\n      }\n    },\n    [handleChange],\n  );\n\n  return (\n    <NumberFieldRAC\n      value={quantity}\n      onChange={handleChange}\n      minValue={0}\n      step={1}\n      isDisabled={disabled}\n      isInvalid={hasError}\n      aria-label={ariaLabel}\n      className={className}\n      data-hook=\"product-quantity\"\n    >\n      <GroupRAC onKeyDown={onKeyDown}>\n        <ButtonRAC slot=\"decrement\">-</ButtonRAC>\n        <InputRAC />\n        <ButtonRAC slot=\"increment\">+</ButtonRAC>\n      </GroupRAC>\n    </NumberFieldRAC>\n  );\n};\n\nProductOption.Image = OptionImage;\nProductOption.Label = OptionLabel;\nProductOption.Price = OptionPrice;\nProductOption.Input = OptionInput;\nProductOption.Quantity = OptionQuantity;\n\nOptions.Option = ProductOption;\n\nProductList.Label = Label;\nProductList.Options = Options;\nProductList.Option = ProductOption;\nProductList.Description = Description;\nProductList.Error = Error;\n","import type { TFunction } from '../../contexts/translation-context';\n\nimport { type RadioGroupFieldOption } from './radio-group-field-props';\n\nexport const OTHER_ID = 'Other';\n\nconst getIsValueFromOptions = (\n  options: RadioGroupFieldOption[],\n  value?: string | null,\n) => options?.find((option) => option.label === value);\n\nexport const getIsOtherOptionSelected = (\n  options: RadioGroupFieldOption[],\n  value?: string | null,\n) => Boolean(value) && !getIsValueFromOptions(options, value);\n\nexport const getOtherLabel = (addOtherLabel?: string, t?: TFunction) => {\n  const otherLabelDefault = t?.('add-other.default-other-option-label');\n  return addOtherLabel || otherLabelDefault || OTHER_ID;\n};\n\nexport const getOtherValue = (value: string, addOtherLabel?: string) => {\n  const addedSymbolsLength = 2; // we add ': ' to other value\n  const otherLabelLength = addOtherLabel\n    ? addOtherLabel.length + addedSymbolsLength\n    : 0;\n  return value.slice(otherLabelLength);\n};\n","import React, {\n  type ReactNode,\n  useCallback,\n  useEffect,\n  useRef,\n  useState,\n} from 'react';\nimport {\n  RadioGroup as RadioGroupRAC,\n  Radio as RadioRAC,\n  TextField as TextFieldRAC,\n  Input as InputRAC,\n} from 'react-aria-components';\n\nimport { useFocusFieldEvent } from '../../contexts/events-context';\nimport { useFieldAttributes } from '../../contexts/field-attributes-context';\nimport { useFieldPropsV2 } from '../../contexts/field-props-context';\nimport { useTranslation } from '../../contexts/translation-context';\nimport { findChildOfType, applyInternalProps } from '../../services/find-child';\nimport { Description } from '../field-description/field-description-headless';\nimport { Error } from '../field-error/field-error-headless';\nimport {\n  Label,\n  type LabelInternalProps,\n} from '../field-label/field-label-headless';\n\nimport { type RadioGroupFieldProps } from './radio-group-field-props';\nimport {\n  getIsOtherOptionSelected,\n  getOtherValue,\n  OTHER_ID,\n} from './radio-group-field-utils';\n\nexport type RadioGroupProps = {\n  children: ReactNode;\n};\n\nexport const RadioGroup = ({ children }: RadioGroupProps) => {\n  const {\n    id,\n    value,\n    onChange,\n    disabled,\n    required,\n    onBlur,\n    onFocus,\n    hasError,\n    FieldLayout,\n  } = useFieldPropsV2<RadioGroupFieldProps>();\n\n  const { inputId, labelId, ariaDescribedBy } = useFieldAttributes();\n\n  const labelElement = findChildOfType(children, RadioGroup.Label);\n  const optionsElement = findChildOfType(children, RadioGroup.Options);\n  const descriptionElement = findChildOfType(children, RadioGroup.Description);\n  const errorElement = findChildOfType(children, RadioGroup.Error);\n\n  return (\n    <FieldLayout\n      fieldId={id}\n      renderLabel={() =>\n        applyInternalProps<LabelInternalProps>(labelElement, { as: 'div' })\n      }\n      renderInput={() => (\n        <RadioGroupRAC\n          id={inputId}\n          aria-labelledby={labelId}\n          aria-describedby={ariaDescribedBy}\n          value={value}\n          onChange={onChange}\n          isDisabled={disabled}\n          isRequired={required}\n          isInvalid={hasError}\n          onBlur={onBlur}\n          onFocus={onFocus}\n        >\n          {optionsElement}\n        </RadioGroupRAC>\n      )}\n      renderDescription={() => (\n        <>\n          {descriptionElement}\n          {errorElement}\n        </>\n      )}\n    />\n  );\n};\n\ntype OptionsProps = {\n  children: ReactNode;\n  className?: string;\n};\n\nconst Options = ({ children, className }: OptionsProps) => {\n  const { options, addOther, addOtherLabel, id, numberOfColumns, hasError } =\n    useFieldPropsV2<RadioGroupFieldProps>();\n  const { t } = useTranslation();\n\n  const optionElement = findChildOfType(children, RadioGroup.Option);\n  const firstRadioRef = useRef<HTMLLabelElement>(null);\n\n  const otherLabel =\n    addOtherLabel || t('add-other.default-other-option-label') || OTHER_ID;\n\n  useFocusFieldEvent(() => {\n    firstRadioRef.current?.focus();\n  }, id);\n\n  return (\n    <div\n      className={className}\n      data-columns={numberOfColumns}\n      data-invalid={hasError}\n    >\n      {options.map((option, index) =>\n        applyInternalProps<OptionInternalProps>(optionElement, {\n          key: option.value ?? option.label,\n          value: option.value ?? option.label,\n          label: option.label,\n          index,\n          radioRef: index === 0 ? firstRadioRef : undefined,\n        }),\n      )}\n      {addOther &&\n        applyInternalProps<OptionInternalProps>(optionElement, {\n          key: OTHER_ID,\n          value: OTHER_ID,\n          label: otherLabel,\n          isOther: true,\n        })}\n    </div>\n  );\n};\n\ntype OptionProps = {\n  children: ReactNode;\n  className?: string;\n};\n\ntype OptionInternalProps = {\n  value: string;\n  label: string;\n  index?: number;\n  isOther?: boolean;\n  radioRef?: React.RefObject<HTMLLabelElement>;\n};\n\nconst Option = ({ children, className, ...internal }: OptionProps) => {\n  const {\n    value,\n    label,\n    isOther = false,\n    radioRef,\n  } = internal as OptionInternalProps;\n  const { value: selectedValue } = useFieldPropsV2<RadioGroupFieldProps>();\n\n  const labelElement = findChildOfType(children, Option.Label);\n  const inputElement = findChildOfType(children, Option.Input);\n  const otherInputElement = findChildOfType(children, Option.OtherInput);\n\n  const isThisOptionSelected = selectedValue === value;\n\n  const radioClassName = inputElement?.props?.className;\n\n  return (\n    <div className={className}>\n      <RadioRAC value={value} ref={radioRef} className={radioClassName}>\n        {applyInternalProps<OptionLabelInternalProps>(labelElement, { label })}\n      </RadioRAC>\n      {isOther && isThisOptionSelected && otherInputElement}\n    </div>\n  );\n};\n\ntype OptionLabelProps = {\n  className?: string;\n};\n\ntype OptionLabelInternalProps = {\n  label: string;\n};\n\nconst OptionLabel = ({ className, ...internal }: OptionLabelProps) => {\n  const { label } = internal as OptionLabelInternalProps;\n  return <span className={className}>{label}</span>;\n};\n\ntype OptionInputProps = {\n  className?: string;\n};\n\nconst OptionInput = (_props: OptionInputProps) => {\n  // className is extracted and applied to RadioRAC in the Option component\n  return null;\n};\n\ntype OptionOtherInputProps = {\n  className?: string;\n};\n\nconst OptionOtherInput = ({ className }: OptionOtherInputProps) => {\n  const {\n    value: fieldValue,\n    onChange,\n    addOtherLabel,\n    addOtherPlaceholder,\n    otherInputCharacterLimit,\n    disabled,\n    options,\n  } = useFieldPropsV2<RadioGroupFieldProps>();\n  const { t } = useTranslation();\n  const inputRef = useRef<HTMLInputElement>(null);\n\n  const isOtherOptionSelected = getIsOtherOptionSelected(options, fieldValue);\n  const otherLabel =\n    addOtherLabel || t('add-other.default-other-option-label') || OTHER_ID;\n\n  const [otherValue, setOtherValue] = useState(\n    isOtherOptionSelected && fieldValue\n      ? getOtherValue(fieldValue, addOtherLabel)\n      : '',\n  );\n\n  useEffect(() => {\n    if (isOtherOptionSelected && inputRef.current) {\n      inputRef.current?.focus();\n    }\n  }, [isOtherOptionSelected]);\n\n  const handleOtherChange = useCallback(\n    (input: string) => {\n      let _otherValue;\n      if (input) {\n        _otherValue = `${addOtherLabel}: ${input}`;\n      } else {\n        _otherValue = otherLabel;\n      }\n      onChange(_otherValue);\n      setOtherValue(input);\n    },\n    [onChange, addOtherLabel, otherLabel],\n  );\n\n  return (\n    <TextFieldRAC\n      value={otherValue}\n      onChange={handleOtherChange}\n      isDisabled={disabled}\n    >\n      <InputRAC\n        ref={inputRef}\n        className={className}\n        placeholder={addOtherPlaceholder}\n        maxLength={otherInputCharacterLimit}\n        aria-label={otherLabel}\n      />\n    </TextFieldRAC>\n  );\n};\n\nOption.Label = OptionLabel;\nOption.Input = OptionInput;\nOption.OtherInput = OptionOtherInput;\n\nRadioGroup.Label = Label;\nRadioGroup.Options = Options;\nRadioGroup.Option = Option;\nRadioGroup.Description = Description;\nRadioGroup.Error = Error;\n","import React, { type ReactNode, useCallback, useRef, useState } from 'react';\nimport {\n  RadioGroup as RadioGroupRAC,\n  Radio as RadioRAC,\n} from 'react-aria-components';\n\nimport { useFieldAttributes } from '../../contexts/field-attributes-context';\nimport { useFieldPropsV2 } from '../../contexts/field-props-context';\nimport { findChildOfType, applyInternalProps } from '../../services/find-child';\nimport { Description } from '../field-description/field-description-headless';\nimport { Error } from '../field-error/field-error-headless';\nimport { Label } from '../field-label/field-label-headless';\n\nimport { type RatingInputFieldProps } from './rating-input-field-props';\n\nexport type RatingInputProps = {\n  children: ReactNode;\n};\n\nexport const RatingInput = ({ children }: RatingInputProps) => {\n  const {\n    id,\n    value,\n    onChange,\n    disabled,\n    required,\n    hasError,\n    onBlur,\n    onFocus,\n    FieldLayout,\n  } = useFieldPropsV2<RatingInputFieldProps>();\n\n  const handleChange = useCallback(\n    (selectedValue: string) =>\n      onChange(Number(selectedValue) as RatingInputFieldProps['value']),\n    [onChange],\n  );\n\n  const labelElement = findChildOfType(children, RatingInput.Label);\n  const starsElement = findChildOfType(children, RatingInput.Stars);\n  const descriptionElement = findChildOfType(children, RatingInput.Description);\n  const errorElement = findChildOfType(children, RatingInput.Error);\n\n  return (\n    <FieldLayout\n      fieldId={id}\n      renderLabel={() => labelElement}\n      renderInput={() => (\n        <RadioGroupRAC\n          value={value ? String(value) : undefined}\n          onChange={handleChange}\n          isDisabled={disabled}\n          isRequired={required}\n          isInvalid={hasError}\n          onBlur={onBlur}\n          onFocus={onFocus}\n          orientation=\"horizontal\"\n        >\n          {starsElement}\n        </RadioGroupRAC>\n      )}\n      renderDescription={() => (\n        <>\n          {descriptionElement}\n          {errorElement}\n        </>\n      )}\n    />\n  );\n};\n\ntype StarsProps = {\n  children: ReactNode;\n  className?: string;\n  count?: number;\n};\n\nconst Stars = ({ children, className }: StarsProps) => {\n  const { value, hasError } = useFieldPropsV2<RatingInputFieldProps>();\n  const { inputId, ariaDescribedBy } = useFieldAttributes();\n  const [hovered, setHovered] = useState<string>();\n  const containerRef = useRef<HTMLDivElement>(null);\n\n  const starElement = findChildOfType(children, Stars.Star);\n  const starValues = ['1', '2', '3', '4', '5'];\n  const isFilled = (starValue: string) =>\n    hovered ? hovered >= starValue : !!value && value >= Number(starValue);\n\n  return (\n    <div\n      ref={containerRef}\n      id={inputId}\n      aria-describedby={ariaDescribedBy}\n      className={className}\n      data-invalid={hasError}\n    >\n      {starValues.map((starValue) =>\n        applyInternalProps<StarInternalProps>(starElement, {\n          key: starValue,\n          value: starValue,\n          isFilled: isFilled(starValue),\n          onHoverChange: (isHover: boolean) =>\n            setHovered(isHover ? starValue : undefined),\n        }),\n      )}\n    </div>\n  );\n};\n\ntype StarProps = {\n  className?: string;\n};\n\ntype StarInternalProps = {\n  value: string;\n  isFilled: boolean;\n  onHoverChange: (isHover: boolean) => void;\n};\n\nconst Star = ({ className, ...internal }: StarProps) => {\n  const { value, isFilled, onHoverChange } = internal as StarInternalProps;\n\n  return (\n    <RadioRAC\n      value={value}\n      className={className}\n      data-filled={isFilled || undefined}\n      onHoverChange={onHoverChange}\n    />\n  );\n};\n\nStars.Star = Star;\n\nRatingInput.Label = Label;\nRatingInput.Stars = Stars;\nRatingInput.Star = Star;\nRatingInput.Description = Description;\nRatingInput.Error = Error;\n","import { type RichContent } from '@wix/ricos';\nimport React from 'react';\n\nimport { useConfig } from '../../contexts/config-context';\nimport { useFieldPropsV2 } from '../../contexts/field-props-context';\n\ninterface RichTextProps {\n  children: (props: {\n    content: RichContent;\n    locale: string;\n  }) => React.ReactNode;\n}\n\nconst RichText = ({ children }: RichTextProps) => {\n  const { id, FieldLayout, content } = useFieldPropsV2<any>();\n  const { language } = useConfig();\n\n  return (\n    <FieldLayout\n      fieldId={id}\n      renderLabel={() => null}\n      renderInput={() => children({ content, locale: language })}\n      renderDescription={() => null}\n    />\n  );\n};\n\nexport { RichText };\n","// Interface for point data structure used e.g. in SignaturePad#fromData method\nexport interface BasicPoint {\n  x: number;\n  y: number;\n  pressure: number;\n  time: number;\n}\n\nexport class Point implements BasicPoint {\n  public x: number;\n  public y: number;\n  public pressure: number;\n  public time: number;\n\n  constructor(x: number, y: number, pressure?: number, time?: number) {\n    if (isNaN(x) || isNaN(y)) {\n      throw new Error(`Point is invalid: (${x}, ${y})`);\n    }\n    this.x = +x;\n    this.y = +y;\n    this.pressure = pressure || 0;\n    this.time = time || Date.now();\n  }\n\n  public distanceTo(start: BasicPoint): number {\n    return Math.sqrt(\n      Math.pow(this.x - start.x, 2) + Math.pow(this.y - start.y, 2),\n    );\n  }\n\n  public equals(other: BasicPoint): boolean {\n    return (\n      this.x === other.x &&\n      this.y === other.y &&\n      this.pressure === other.pressure &&\n      this.time === other.time\n    );\n  }\n\n  public velocityFrom(start: BasicPoint): number {\n    return this.time !== start.time\n      ? this.distanceTo(start) / (this.time - start.time)\n      : 0;\n  }\n}\n","import { BasicPoint, Point } from './point.js';\n\nexport class Bezier {\n  public static fromPoints(\n    points: Point[],\n    widths: { start: number; end: number },\n  ): Bezier {\n    const c2 = this.calculateControlPoints(points[0], points[1], points[2]).c2;\n    const c3 = this.calculateControlPoints(points[1], points[2], points[3]).c1;\n\n    return new Bezier(points[1], c2, c3, points[2], widths.start, widths.end);\n  }\n\n  private static calculateControlPoints(\n    s1: BasicPoint,\n    s2: BasicPoint,\n    s3: BasicPoint,\n  ): {\n    c1: BasicPoint;\n    c2: BasicPoint;\n  } {\n    const dx1 = s1.x - s2.x;\n    const dy1 = s1.y - s2.y;\n    const dx2 = s2.x - s3.x;\n    const dy2 = s2.y - s3.y;\n\n    const m1 = { x: (s1.x + s2.x) / 2.0, y: (s1.y + s2.y) / 2.0 };\n    const m2 = { x: (s2.x + s3.x) / 2.0, y: (s2.y + s3.y) / 2.0 };\n\n    const l1 = Math.sqrt(dx1 * dx1 + dy1 * dy1);\n    const l2 = Math.sqrt(dx2 * dx2 + dy2 * dy2);\n\n    const dxm = m1.x - m2.x;\n    const dym = m1.y - m2.y;\n\n    const k = l1 + l2 == 0 ? 0 : l2 / (l1 + l2);\n    const cm = { x: m2.x + dxm * k, y: m2.y + dym * k };\n\n    const tx = s2.x - cm.x;\n    const ty = s2.y - cm.y;\n\n    return {\n      c1: new Point(m1.x + tx, m1.y + ty),\n      c2: new Point(m2.x + tx, m2.y + ty),\n    };\n  }\n\n  constructor(\n    public startPoint: Point,\n    public control2: BasicPoint,\n    public control1: BasicPoint,\n    public endPoint: Point,\n    public startWidth: number,\n    public endWidth: number,\n  ) {}\n\n  // Returns approximated length. Code taken from https://www.lemoda.net/maths/bezier-length/index.html.\n  public length(): number {\n    const steps = 10;\n    let length = 0;\n    let px;\n    let py;\n\n    for (let i = 0; i <= steps; i += 1) {\n      const t = i / steps;\n      const cx = this.point(\n        t,\n        this.startPoint.x,\n        this.control1.x,\n        this.control2.x,\n        this.endPoint.x,\n      );\n      const cy = this.point(\n        t,\n        this.startPoint.y,\n        this.control1.y,\n        this.control2.y,\n        this.endPoint.y,\n      );\n\n      if (i > 0) {\n        const xdiff = cx - (px as number);\n        const ydiff = cy - (py as number);\n\n        length += Math.sqrt(xdiff * xdiff + ydiff * ydiff);\n      }\n\n      px = cx;\n      py = cy;\n    }\n\n    return length;\n  }\n\n  // Calculate parametric value of x or y given t and the four point coordinates of a cubic bezier curve.\n  private point(\n    t: number,\n    start: number,\n    c1: number,\n    c2: number,\n    end: number,\n  ): number {\n    // prettier-ignore\n    return (       start * (1.0 - t) * (1.0 - t)  * (1.0 - t))\n         + (3.0 *  c1    * (1.0 - t) * (1.0 - t)  * t)\n         + (3.0 *  c2    * (1.0 - t) * t          * t)\n         + (       end   * t         * t          * t);\n  }\n}\n","export class SignatureEventTarget {\n  /* tslint:disable: variable-name */\n  private _et: EventTarget;\n  /* tslint:enable: variable-name */\n\n  constructor() {\n    try {\n      this._et = new EventTarget();\n    } catch {\n      // Using document as EventTarget to support iOS 13 and older.\n      // Because EventTarget constructor just exists at iOS 14 and later.\n      this._et = document;\n    }\n  }\n\n  addEventListener(\n    type: string,\n    listener: EventListenerOrEventListenerObject | null,\n    options?: boolean | AddEventListenerOptions,\n  ): void {\n    this._et.addEventListener(type, listener, options);\n  }\n\n  dispatchEvent(event: Event): boolean {\n    return this._et.dispatchEvent(event);\n  }\n\n  removeEventListener(\n    type: string,\n    callback: EventListenerOrEventListenerObject | null,\n    options?: boolean | EventListenerOptions,\n  ): void {\n    this._et.removeEventListener(type, callback, options);\n  }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/no-this-alias */\n// Slightly simplified version of http://stackoverflow.com/a/27078401/815507\n\nexport function throttle(\n  fn: (...args: any[]) => any,\n  wait = 250,\n): (this: any, ...args: any[]) => any {\n  let previous = 0;\n  let timeout: number | null = null;\n  let result: any;\n  let storedContext: any;\n  let storedArgs: any[];\n\n  const later = (): void => {\n    previous = Date.now();\n    timeout = null;\n    result = fn.apply(storedContext, storedArgs);\n\n    if (!timeout) {\n      storedContext = null;\n      storedArgs = [];\n    }\n  };\n\n  return function wrapper(this: any, ...args: any[]): any {\n    const now = Date.now();\n    const remaining = wait - (now - previous);\n\n    storedContext = this;\n    storedArgs = args;\n\n    if (remaining <= 0 || remaining > wait) {\n      if (timeout) {\n        clearTimeout(timeout);\n        timeout = null;\n      }\n\n      previous = now;\n      result = fn.apply(storedContext, storedArgs);\n\n      if (!timeout) {\n        storedContext = null;\n        storedArgs = [];\n      }\n    } else if (!timeout) {\n      timeout = window.setTimeout(later, remaining);\n    }\n\n    return result;\n  };\n}\n","/**\n * The main idea and some parts of the code (e.g. drawing variable width Bézier curve) are taken from:\n * http://corner.squareup.com/2012/07/smoother-signatures.html\n *\n * Implementation of interpolation using cubic Bézier curves is taken from:\n * https://web.archive.org/web/20160323213433/http://www.benknowscode.com/2012/09/path-interpolation-using-cubic-bezier_9742.html\n *\n * Algorithm for approximated length of a Bézier curve is taken from:\n * http://www.lemoda.net/maths/bezier-length/index.html\n */\n\nimport { Bezier } from './bezier.js';\nimport { BasicPoint, Point } from './point.js';\nimport { SignatureEventTarget } from './signature_event_target.js';\nimport { throttle } from './throttle.js';\n\nexport { BasicPoint } from './point.js';\n\nexport interface SignatureEvent {\n  event: MouseEvent | TouchEvent | PointerEvent;\n  type: string;\n  x: number;\n  y: number;\n  pressure: number;\n}\n\nexport interface FromDataOptions {\n  clear?: boolean;\n}\n\nexport interface FromDataUrlOptions {\n  ratio?: number;\n  width?: number;\n  height?: number;\n  xOffset?: number;\n  yOffset?: number;\n}\n\nexport interface ToSVGOptions {\n  includeBackgroundColor?: boolean;\n  includeDataUrl?: boolean;\n}\n\nexport interface PointGroupOptions {\n  dotSize: number;\n  minWidth: number;\n  maxWidth: number;\n  penColor: string;\n  velocityFilterWeight: number;\n  /**\n   * This is the globalCompositeOperation for the line.\n   * *default: 'source-over'*\n   * @see https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/globalCompositeOperation\n   */\n  compositeOperation: GlobalCompositeOperation;\n}\n\nexport interface Options extends Partial<PointGroupOptions> {\n  minDistance?: number;\n  backgroundColor?: string;\n  throttle?: number;\n  canvasContextOptions?: CanvasRenderingContext2DSettings;\n}\n\nexport interface PointGroup extends PointGroupOptions {\n  points: BasicPoint[];\n}\n\nexport default class SignaturePad extends SignatureEventTarget {\n  // Public stuff\n  public dotSize: number;\n  public minWidth: number;\n  public maxWidth: number;\n  public penColor: string;\n  public minDistance: number;\n  public velocityFilterWeight: number;\n  public compositeOperation: GlobalCompositeOperation;\n  public backgroundColor: string;\n  public throttle: number;\n  public canvasContextOptions: CanvasRenderingContext2DSettings;\n\n  // Private stuff\n  /* tslint:disable: variable-name */\n  private _ctx: CanvasRenderingContext2D;\n  private _drawingStroke = false;\n  private _isEmpty = true;\n  private _dataUrl: string | undefined;\n  private _dataUrlOptions: FromDataUrlOptions | undefined;\n  private _lastPoints: Point[] = []; // Stores up to 4 most recent points; used to generate a new curve\n  private _data: PointGroup[] = []; // Stores all points in groups (one group per line or dot)\n  private _lastVelocity = 0;\n  private _lastWidth = 0;\n  private _strokeMoveUpdate: (event: SignatureEvent) => void;\n  private _strokePointerId: number | undefined;\n  /* tslint:enable: variable-name */\n\n  constructor(\n    private canvas: HTMLCanvasElement,\n    options: Options = {},\n  ) {\n    super();\n    this.velocityFilterWeight = options.velocityFilterWeight || 0.7;\n    this.minWidth = options.minWidth || 0.5;\n    this.maxWidth = options.maxWidth || 2.5;\n\n    // We need to handle 0 value, so use `??` instead of `||`\n    this.throttle = options.throttle ?? 16; // in milliseconds\n    this.minDistance = options.minDistance ?? 5; // in pixels\n    this.dotSize = options.dotSize || 0;\n    this.penColor = options.penColor || 'black';\n    this.backgroundColor = options.backgroundColor || 'rgba(0,0,0,0)';\n    this.compositeOperation = options.compositeOperation || 'source-over';\n    this.canvasContextOptions = options.canvasContextOptions ?? {};\n\n    this._strokeMoveUpdate = this.throttle\n      ? throttle(SignaturePad.prototype._strokeUpdate, this.throttle)\n      : SignaturePad.prototype._strokeUpdate;\n\n    this._handleMouseDown = this._handleMouseDown.bind(this);\n    this._handleMouseMove = this._handleMouseMove.bind(this);\n    this._handleMouseUp = this._handleMouseUp.bind(this);\n    this._handleTouchStart = this._handleTouchStart.bind(this);\n    this._handleTouchMove = this._handleTouchMove.bind(this);\n    this._handleTouchEnd = this._handleTouchEnd.bind(this);\n    this._handlePointerDown = this._handlePointerDown.bind(this);\n    this._handlePointerMove = this._handlePointerMove.bind(this);\n    this._handlePointerUp = this._handlePointerUp.bind(this);\n    this._handlePointerCancel = this._handlePointerCancel.bind(this);\n    this._handleTouchCancel = this._handleTouchCancel.bind(this);\n\n    this._ctx = canvas.getContext(\n      '2d',\n      this.canvasContextOptions,\n    ) as CanvasRenderingContext2D;\n\n    this.clear();\n\n    // Enable mouse and touch event handlers\n    this.on();\n  }\n\n  public clear(): void {\n    const { _ctx: ctx, canvas } = this;\n\n    // Clear canvas using background color\n    ctx.fillStyle = this.backgroundColor;\n    ctx.clearRect(0, 0, canvas.width, canvas.height);\n    ctx.fillRect(0, 0, canvas.width, canvas.height);\n\n    this._data = [];\n    this._reset(this._getPointGroupOptions());\n    this._isEmpty = true;\n    this._dataUrl = undefined;\n    this._dataUrlOptions = undefined;\n    this._strokePointerId = undefined;\n  }\n\n  public redraw(): void {\n    const data = this._data;\n    const dataUrl = this._dataUrl;\n    const dataUrlOptions = this._dataUrlOptions;\n\n    this.clear();\n    if (dataUrl) {\n      this.fromDataURL(dataUrl, dataUrlOptions);\n    }\n    this.fromData(data, { clear: false });\n  }\n\n  public fromDataURL(\n    dataUrl: string,\n    options: FromDataUrlOptions = {},\n  ): Promise<void> {\n    return new Promise((resolve, reject) => {\n      const image = new Image();\n      const ratio = options.ratio || window.devicePixelRatio || 1;\n      const width = options.width || this.canvas.width / ratio;\n      const height = options.height || this.canvas.height / ratio;\n      const xOffset = options.xOffset || 0;\n      const yOffset = options.yOffset || 0;\n\n      this._reset(this._getPointGroupOptions());\n\n      image.onload = (): void => {\n        this._ctx.drawImage(image, xOffset, yOffset, width, height);\n        resolve();\n      };\n      image.onerror = (error): void => {\n        reject(error);\n      };\n      image.crossOrigin = 'anonymous';\n      image.src = dataUrl;\n\n      this._isEmpty = false;\n      this._dataUrl = dataUrl;\n      this._dataUrlOptions = {...options};\n    });\n  }\n\n  public toDataURL(\n    type: 'image/svg+xml',\n    encoderOptions?: ToSVGOptions,\n  ): string;\n  public toDataURL(type?: string, encoderOptions?: number): string;\n  public toDataURL(\n    type = 'image/png',\n    encoderOptions?: number | ToSVGOptions | undefined,\n  ): string {\n    switch (type) {\n      case 'image/svg+xml':\n        if (typeof encoderOptions !== 'object') {\n          encoderOptions = undefined;\n        }\n        return `data:image/svg+xml;base64,${btoa(\n          this.toSVG(encoderOptions as ToSVGOptions),\n        )}`;\n      default:\n        if (typeof encoderOptions !== 'number') {\n          encoderOptions = undefined;\n        }\n        return this.canvas.toDataURL(type, encoderOptions as number);\n    }\n  }\n\n  public on(): void {\n    // Disable panning/zooming when touching canvas element\n    this.canvas.style.touchAction = 'none';\n    (\n      this.canvas.style as CSSStyleDeclaration & {\n        msTouchAction: string | null;\n      }\n    ).msTouchAction = 'none';\n    this.canvas.style.userSelect = 'none';\n    // Safari does not support userSelect property without a prefix even as of iOS 26\n    // https://caniuse.com/?search=user-select\n    this.canvas.style.webkitUserSelect = 'none';\n\n    const isIOS =\n      /Macintosh/.test(navigator.userAgent) && 'ontouchstart' in document;\n\n    // The \"Scribble\" feature of iOS intercepts point events. So that we can\n    // lose some of them when tapping rapidly. Use touch events for iOS\n    // platforms to prevent it. See\n    // https://developer.apple.com/forums/thread/664108 for more information.\n    if (window.PointerEvent && !isIOS) {\n      this._handlePointerEvents();\n    } else {\n      this._handleMouseEvents();\n\n      if ('ontouchstart' in window) {\n        this._handleTouchEvents();\n      }\n    }\n  }\n\n  public off(): void {\n    // Enable panning/zooming when touching canvas element\n    this.canvas.style.touchAction = 'auto';\n    (\n      this.canvas.style as CSSStyleDeclaration & {\n        msTouchAction: string | null;\n      }\n    ).msTouchAction = 'auto';\n    this.canvas.style.userSelect = 'auto';\n    this.canvas.style.webkitUserSelect = 'auto';\n\n    this.canvas.removeEventListener('pointerdown', this._handlePointerDown);\n    this.canvas.removeEventListener('mousedown', this._handleMouseDown);\n    this.canvas.removeEventListener('touchstart', this._handleTouchStart);\n\n    this._removeMoveUpEventListeners();\n  }\n\n  private _getListenerFunctions() {\n    const canvasWindow =\n      window.document === this.canvas.ownerDocument\n        ? window\n        : (this.canvas.ownerDocument.defaultView ?? this.canvas.ownerDocument);\n\n    return {\n      addEventListener: canvasWindow.addEventListener.bind(\n        canvasWindow,\n      ) as typeof window.addEventListener,\n      removeEventListener: canvasWindow.removeEventListener.bind(\n        canvasWindow,\n      ) as typeof window.removeEventListener,\n    };\n  }\n\n  private _removeMoveUpEventListeners(): void {\n    const { removeEventListener } = this._getListenerFunctions();\n    removeEventListener('pointermove', this._handlePointerMove);\n    removeEventListener('pointerup', this._handlePointerUp);\n    removeEventListener('pointercancel', this._handlePointerCancel);\n\n    removeEventListener('mousemove', this._handleMouseMove);\n    removeEventListener('mouseup', this._handleMouseUp);\n\n    removeEventListener('touchmove', this._handleTouchMove);\n    removeEventListener('touchend', this._handleTouchEnd);\n    removeEventListener('touchcancel', this._handleTouchCancel);\n  }\n\n  public isEmpty(): boolean {\n    return this._isEmpty;\n  }\n\n  public fromData(\n    pointGroups: PointGroup[],\n    { clear = true }: FromDataOptions = {},\n  ): void {\n    if (clear) {\n      this.clear();\n    }\n\n    this._fromData(\n      pointGroups,\n      this._drawCurve.bind(this),\n      this._drawDot.bind(this),\n    );\n\n    this._data = this._data.concat(pointGroups);\n  }\n\n  public toData(): PointGroup[] {\n    return this._data;\n  }\n\n  private _isLeftButtonPressed(event: MouseEvent, only?: boolean): boolean {\n    if (only) {\n      return event.buttons === 1;\n    }\n\n    return (event.buttons & 1) === 1;\n  }\n  private _pointerEventToSignatureEvent(\n    event: MouseEvent | PointerEvent,\n  ): SignatureEvent {\n    return {\n      event: event,\n      type: event.type,\n      x: event.clientX,\n      y: event.clientY,\n      pressure: 'pressure' in event ? event.pressure : 0,\n    };\n  }\n\n  private _touchEventToSignatureEvent(event: TouchEvent): SignatureEvent {\n    const touch = event.changedTouches[0];\n    return {\n      event: event,\n      type: event.type,\n      x: touch.clientX,\n      y: touch.clientY,\n      pressure: touch.force,\n    };\n  }\n\n  // Event handlers\n  private _handleMouseDown(event: MouseEvent): void {\n    if (!this._isLeftButtonPressed(event, true) || this._drawingStroke) {\n      return;\n    }\n    this._strokeBegin(this._pointerEventToSignatureEvent(event));\n  }\n\n  private _handleMouseMove(event: MouseEvent): void {\n    if (!this._isLeftButtonPressed(event, true) || !this._drawingStroke) {\n      // Stop when not pressing primary button or pressing multiple buttons\n      this._strokeEnd(this._pointerEventToSignatureEvent(event), false);\n      return;\n    }\n\n    this._strokeMoveUpdate(this._pointerEventToSignatureEvent(event));\n  }\n\n  private _handleMouseUp(event: MouseEvent): void {\n    if (this._isLeftButtonPressed(event)) {\n      return;\n    }\n\n    this._strokeEnd(this._pointerEventToSignatureEvent(event));\n  }\n\n  private _handleTouchStart(event: TouchEvent): void {\n    if (event.targetTouches.length !== 1 || this._drawingStroke) {\n      return;\n    }\n\n    // Prevent scrolling.\n    if (event.cancelable) {\n      event.preventDefault();\n    }\n\n    this._strokeBegin(this._touchEventToSignatureEvent(event));\n  }\n\n  private _handleTouchMove(event: TouchEvent): void {\n    if (event.targetTouches.length !== 1) {\n      return;\n    }\n\n    // Prevent scrolling.\n    if (event.cancelable) {\n      event.preventDefault();\n    }\n\n    if (!this._drawingStroke) {\n      this._strokeEnd(this._touchEventToSignatureEvent(event), false);\n      return;\n    }\n\n    this._strokeMoveUpdate(this._touchEventToSignatureEvent(event));\n  }\n\n  private _handleTouchEnd(event: TouchEvent): void {\n    if (event.targetTouches.length !== 0) {\n      return;\n    }\n\n    if (event.cancelable) {\n      event.preventDefault();\n    }\n\n    this._strokeEnd(this._touchEventToSignatureEvent(event));\n  }\n\n  private _handlePointerCancel(event: PointerEvent): void {\n    if (!this._allowPointerId(event)) {\n      return;\n    }\n\n    event.preventDefault();\n    this._strokeEnd(this._pointerEventToSignatureEvent(event), false);\n  }\n\n  private _handleTouchCancel(event: TouchEvent): void {\n    if (event.cancelable) {\n      event.preventDefault();\n    }\n\n    this._strokeEnd(this._touchEventToSignatureEvent(event), false);\n  }\n\n  private _getPointerId(event: PointerEvent) {\n    // @ts-expect-error persistentDeviceId is not available yet but we want to use it when it is available\n    return event.persistentDeviceId || event.pointerId;\n  }\n\n  private _allowPointerId(\n    event: PointerEvent,\n    allowUndefined = false,\n  ): boolean {\n    if (typeof this._strokePointerId === 'undefined') {\n      return allowUndefined;\n    }\n\n    return this._getPointerId(event) === this._strokePointerId;\n  }\n\n  private _handlePointerDown(event: PointerEvent): void {\n    if (\n      this._drawingStroke ||\n      !this._isLeftButtonPressed(event) ||\n      !this._allowPointerId(event, true)\n    ) {\n      return;\n    }\n\n    this._strokePointerId = this._getPointerId(event);\n\n    event.preventDefault();\n\n    this._strokeBegin(this._pointerEventToSignatureEvent(event));\n  }\n\n  private _handlePointerMove(event: PointerEvent): void {\n    if (!this._allowPointerId(event)) {\n      return;\n    }\n    if (!this._isLeftButtonPressed(event, true) || !this._drawingStroke) {\n      // Stop when primary button not pressed or multiple buttons pressed\n      this._strokeEnd(this._pointerEventToSignatureEvent(event), false);\n      return;\n    }\n\n    event.preventDefault();\n    this._strokeMoveUpdate(this._pointerEventToSignatureEvent(event));\n  }\n\n  private _handlePointerUp(event: PointerEvent): void {\n    if (this._isLeftButtonPressed(event) || !this._allowPointerId(event)) {\n      return;\n    }\n\n    event.preventDefault();\n    this._strokeEnd(this._pointerEventToSignatureEvent(event));\n  }\n\n  private _getPointGroupOptions(group?: PointGroup): PointGroupOptions {\n    return {\n      penColor: group && 'penColor' in group ? group.penColor : this.penColor,\n      dotSize: group && 'dotSize' in group ? group.dotSize : this.dotSize,\n      minWidth: group && 'minWidth' in group ? group.minWidth : this.minWidth,\n      maxWidth: group && 'maxWidth' in group ? group.maxWidth : this.maxWidth,\n      velocityFilterWeight:\n        group && 'velocityFilterWeight' in group\n          ? group.velocityFilterWeight\n          : this.velocityFilterWeight,\n      compositeOperation:\n        group && 'compositeOperation' in group\n          ? group.compositeOperation\n          : this.compositeOperation,\n    };\n  }\n\n  // Private methods\n  private _strokeBegin(event: SignatureEvent): void {\n    const cancelled = !this.dispatchEvent(\n      new CustomEvent('beginStroke', { detail: event, cancelable: true }),\n    );\n    if (cancelled) {\n      return;\n    }\n\n    const { addEventListener } = this._getListenerFunctions();\n    switch (event.event.type) {\n      case 'mousedown':\n        addEventListener('mousemove', this._handleMouseMove, {\n          passive: false,\n        });\n        addEventListener('mouseup', this._handleMouseUp, { passive: false });\n        break;\n      case 'touchstart':\n        addEventListener('touchmove', this._handleTouchMove, {\n          passive: false,\n        });\n        addEventListener('touchend', this._handleTouchEnd, { passive: false });\n        addEventListener('touchcancel', this._handleTouchCancel, { passive: false });\n        break;\n      case 'pointerdown':\n        addEventListener('pointermove', this._handlePointerMove, {\n          passive: false,\n        });\n        addEventListener('pointerup', this._handlePointerUp, {\n          passive: false,\n        });\n        addEventListener('pointercancel', this._handlePointerCancel, {\n          passive: false,\n        });\n        break;\n      default:\n      // do nothing\n    }\n\n    this._drawingStroke = true;\n\n    const pointGroupOptions = this._getPointGroupOptions();\n\n    const newPointGroup: PointGroup = {\n      ...pointGroupOptions,\n      points: [],\n    };\n\n    this._data.push(newPointGroup);\n    this._reset(pointGroupOptions);\n    this._strokeUpdate(event);\n  }\n\n  private _strokeUpdate(event: SignatureEvent): void {\n    if (!this._drawingStroke) {\n      return;\n    }\n\n    if (this._data.length === 0) {\n      // This can happen if clear() was called while a signature is still in progress,\n      // or if there is a race condition between start/update events.\n      this._strokeBegin(event);\n      return;\n    }\n\n    this.dispatchEvent(\n      new CustomEvent('beforeUpdateStroke', { detail: event }),\n    );\n\n    const point = this._createPoint(event.x, event.y, event.pressure);\n    const lastPointGroup = this._data[this._data.length - 1];\n    const lastPoints = lastPointGroup.points;\n    const lastPoint =\n      lastPoints.length > 0 && lastPoints[lastPoints.length - 1];\n    const isLastPointTooClose = lastPoint\n      ? point.distanceTo(lastPoint) <= this.minDistance\n      : false;\n    const pointGroupOptions = this._getPointGroupOptions(lastPointGroup);\n\n    // Skip this point if it's too close to the previous one\n    if (!lastPoint || !(lastPoint && isLastPointTooClose)) {\n      const curve = this._addPoint(point, pointGroupOptions);\n\n      if (!lastPoint) {\n        this._drawDot(point, pointGroupOptions);\n      } else if (curve) {\n        this._drawCurve(curve, pointGroupOptions);\n      }\n\n      lastPoints.push({\n        time: point.time,\n        x: point.x,\n        y: point.y,\n        pressure: point.pressure,\n      });\n    }\n\n    this.dispatchEvent(new CustomEvent('afterUpdateStroke', { detail: event }));\n  }\n\n  private _strokeEnd(event: SignatureEvent, shouldUpdate = true): void {\n    this._removeMoveUpEventListeners();\n\n    if (!this._drawingStroke) {\n      return;\n    }\n\n    if (shouldUpdate) {\n      this._strokeUpdate(event);\n    }\n\n    this._drawingStroke = false;\n    this._strokePointerId = undefined;\n    this.dispatchEvent(new CustomEvent('endStroke', { detail: event }));\n  }\n\n  private _handlePointerEvents(): void {\n    this._drawingStroke = false;\n\n    this.canvas.addEventListener('pointerdown', this._handlePointerDown, {\n      passive: false,\n    });\n  }\n\n  private _handleMouseEvents(): void {\n    this._drawingStroke = false;\n\n    this.canvas.addEventListener('mousedown', this._handleMouseDown, {\n      passive: false,\n    });\n  }\n\n  private _handleTouchEvents(): void {\n    this.canvas.addEventListener('touchstart', this._handleTouchStart, {\n      passive: false,\n    });\n  }\n\n  // Called when a new line is started\n  private _reset(options: PointGroupOptions): void {\n    this._lastPoints = [];\n    this._lastVelocity = 0;\n    this._lastWidth = (options.minWidth + options.maxWidth) / 2;\n    this._ctx.fillStyle = options.penColor;\n    this._ctx.globalCompositeOperation = options.compositeOperation;\n  }\n\n  private _createPoint(x: number, y: number, pressure: number): Point {\n    const rect = this.canvas.getBoundingClientRect();\n\n    return new Point(\n      x - rect.left,\n      y - rect.top,\n      pressure,\n      new Date().getTime(),\n    );\n  }\n\n  // Add point to _lastPoints array and generate a new curve if there are enough points (i.e. 3)\n  private _addPoint(point: Point, options: PointGroupOptions): Bezier | null {\n    const { _lastPoints } = this;\n\n    _lastPoints.push(point);\n\n    if (_lastPoints.length > 2) {\n      // To reduce the initial lag make it work with 3 points\n      // by copying the first point to the beginning.\n      if (_lastPoints.length === 3) {\n        _lastPoints.unshift(_lastPoints[0]);\n      }\n\n      // _points array will always have 4 points here.\n      const widths = this._calculateCurveWidths(\n        _lastPoints[1],\n        _lastPoints[2],\n        options,\n      );\n      const curve = Bezier.fromPoints(_lastPoints, widths);\n\n      // Remove the first element from the list, so that there are no more than 4 points at any time.\n      _lastPoints.shift();\n\n      return curve;\n    }\n\n    return null;\n  }\n\n  private _calculateCurveWidths(\n    startPoint: Point,\n    endPoint: Point,\n    options: PointGroupOptions,\n  ): { start: number; end: number } {\n    const velocity =\n      options.velocityFilterWeight * endPoint.velocityFrom(startPoint) +\n      (1 - options.velocityFilterWeight) * this._lastVelocity;\n\n    const newWidth = this._strokeWidth(velocity, options);\n\n    const widths = {\n      end: newWidth,\n      start: this._lastWidth,\n    };\n\n    this._lastVelocity = velocity;\n    this._lastWidth = newWidth;\n\n    return widths;\n  }\n\n  private _strokeWidth(velocity: number, options: PointGroupOptions): number {\n    return Math.max(options.maxWidth / (velocity + 1), options.minWidth);\n  }\n\n  private _drawCurveSegment(x: number, y: number, width: number): void {\n    const ctx = this._ctx;\n\n    ctx.moveTo(x, y);\n    ctx.arc(x, y, width, 0, 2 * Math.PI, false);\n    this._isEmpty = false;\n  }\n\n  private _drawCurve(curve: Bezier, options: PointGroupOptions): void {\n    const ctx = this._ctx;\n    const widthDelta = curve.endWidth - curve.startWidth;\n    // '2' is just an arbitrary number here. If only length is used, then\n    // there are gaps between curve segments :/\n    const drawSteps = Math.ceil(curve.length()) * 2;\n\n    ctx.beginPath();\n    ctx.fillStyle = options.penColor;\n\n    for (let i = 0; i < drawSteps; i += 1) {\n      // Calculate the Bezier (x, y) coordinate for this step.\n      const t = i / drawSteps;\n      const tt = t * t;\n      const ttt = tt * t;\n      const u = 1 - t;\n      const uu = u * u;\n      const uuu = uu * u;\n\n      let x = uuu * curve.startPoint.x;\n      x += 3 * uu * t * curve.control1.x;\n      x += 3 * u * tt * curve.control2.x;\n      x += ttt * curve.endPoint.x;\n\n      let y = uuu * curve.startPoint.y;\n      y += 3 * uu * t * curve.control1.y;\n      y += 3 * u * tt * curve.control2.y;\n      y += ttt * curve.endPoint.y;\n\n      const width = Math.min(\n        curve.startWidth + ttt * widthDelta,\n        options.maxWidth,\n      );\n      this._drawCurveSegment(x, y, width);\n    }\n\n    ctx.closePath();\n    ctx.fill();\n  }\n\n  private _drawDot(point: BasicPoint, options: PointGroupOptions): void {\n    const ctx = this._ctx;\n    const width =\n      options.dotSize > 0\n        ? options.dotSize\n        : (options.minWidth + options.maxWidth) / 2;\n\n    ctx.beginPath();\n    this._drawCurveSegment(point.x, point.y, width);\n    ctx.closePath();\n    ctx.fillStyle = options.penColor;\n    ctx.fill();\n  }\n\n  private _fromData(\n    pointGroups: PointGroup[],\n    drawCurve: SignaturePad['_drawCurve'],\n    drawDot: SignaturePad['_drawDot'],\n  ): void {\n    for (const group of pointGroups) {\n      const { points } = group;\n      const pointGroupOptions = this._getPointGroupOptions(group);\n\n      if (points.length > 1) {\n        for (let j = 0; j < points.length; j += 1) {\n          const basicPoint = points[j];\n          const point = new Point(\n            basicPoint.x,\n            basicPoint.y,\n            basicPoint.pressure,\n            basicPoint.time,\n          );\n\n          if (j === 0) {\n            this._reset(pointGroupOptions);\n          }\n\n          const curve = this._addPoint(point, pointGroupOptions);\n\n          if (curve) {\n            drawCurve(curve, pointGroupOptions);\n          }\n        }\n      } else {\n        this._reset(pointGroupOptions);\n\n        drawDot(points[0], pointGroupOptions);\n      }\n    }\n  }\n\n  public toSVG({ includeBackgroundColor = false, includeDataUrl = false }: ToSVGOptions = {}): string {\n    const pointGroups = this._data;\n    const ratio = Math.max(window.devicePixelRatio || 1, 1);\n    const minX = 0;\n    const minY = 0;\n    const maxX = this.canvas.width / ratio;\n    const maxY = this.canvas.height / ratio;\n    const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n\n    svg.setAttribute('xmlns', 'http://www.w3.org/2000/svg');\n    svg.setAttribute('xmlns:xlink', 'http://www.w3.org/1999/xlink');\n    svg.setAttribute('viewBox', `${minX} ${minY} ${maxX} ${maxY}`);\n    svg.setAttribute('width', maxX.toString());\n    svg.setAttribute('height', maxY.toString());\n\n    if (includeBackgroundColor && this.backgroundColor) {\n      const rect = document.createElement('rect');\n      rect.setAttribute('width', '100%');\n      rect.setAttribute('height', '100%');\n      rect.setAttribute('fill', this.backgroundColor);\n\n      svg.appendChild(rect);\n    }\n\n    if (includeDataUrl && this._dataUrl) {\n      const ratio = this._dataUrlOptions?.ratio || window.devicePixelRatio || 1;\n      const width = this._dataUrlOptions?.width || this.canvas.width / ratio;\n      const height = this._dataUrlOptions?.height || this.canvas.height / ratio;\n      const xOffset = this._dataUrlOptions?.xOffset || 0;\n      const yOffset = this._dataUrlOptions?.yOffset || 0;\n\n      const image = document.createElement('image');\n      image.setAttribute('x', xOffset.toString());\n      image.setAttribute('y', yOffset.toString());\n      image.setAttribute('width', width.toString());\n      image.setAttribute('height', height.toString());\n      image.setAttribute('preserveAspectRatio', 'none');\n      image.setAttribute('href', this._dataUrl);\n\n      svg.appendChild(image);\n    }\n\n    this._fromData(\n      pointGroups,\n\n      (curve, { penColor }) => {\n        const path = document.createElement('path');\n\n        // Need to check curve for NaN values, these pop up when drawing\n        // lines on the canvas that are not continuous. E.g. Sharp corners\n        // or stopping mid-stroke and than continuing without lifting mouse.\n        if (\n          !isNaN(curve.control1.x) &&\n          !isNaN(curve.control1.y) &&\n          !isNaN(curve.control2.x) &&\n          !isNaN(curve.control2.y)\n        ) {\n          const attr =\n            `M ${curve.startPoint.x.toFixed(3)},${curve.startPoint.y.toFixed(\n              3,\n            )} ` +\n            `C ${curve.control1.x.toFixed(3)},${curve.control1.y.toFixed(3)} ` +\n            `${curve.control2.x.toFixed(3)},${curve.control2.y.toFixed(3)} ` +\n            `${curve.endPoint.x.toFixed(3)},${curve.endPoint.y.toFixed(3)}`;\n          path.setAttribute('d', attr);\n          path.setAttribute('stroke-width', (curve.endWidth * 2.25).toFixed(3));\n          path.setAttribute('stroke', penColor);\n          path.setAttribute('fill', 'none');\n          path.setAttribute('stroke-linecap', 'round');\n\n          svg.appendChild(path);\n        }\n      },\n\n      (point, { penColor, dotSize, minWidth, maxWidth }) => {\n        const circle = document.createElement('circle');\n        const size = dotSize > 0 ? dotSize : (minWidth + maxWidth) / 2;\n        circle.setAttribute('r', size.toString());\n        circle.setAttribute('cx', point.x.toString());\n        circle.setAttribute('cy', point.y.toString());\n        circle.setAttribute('fill', penColor);\n\n        svg.appendChild(circle);\n      },\n    );\n\n    return svg.outerHTML;\n  }\n}\n","export enum SignatureFormat {\n  TEXT = 'text/plain',\n  POINTS = 'points/json',\n}\n\nexport enum SignatureMode {\n  DRAW = 'draw',\n  TYPE = 'type',\n  UPLOAD = 'upload',\n}\n\nexport enum SignatureView {\n  DRAW = 'draw',\n  TYPE = 'type',\n  IMAGE = 'image',\n  UPLOAD = 'upload',\n}\n","import { useCallback } from 'react';\n\nimport {\n  type FieldActionsContextValue,\n  useFieldActions,\n} from '../../contexts/field-actions-context';\nimport { type IUploadFileFieldAction } from '../../services/upload-file';\nimport { type WixFile } from '../form/types';\n\nexport const useUploadSignature = (uploadTarget: string) => {\n  const { actions, formId } =\n    useFieldActions() as FieldActionsContextValue<IUploadFileFieldAction>;\n\n  const uploadFile = actions?.uploadFile;\n\n  return useCallback(\n    async (file: File): Promise<WixFile> => {\n      if (!uploadFile) {\n        if (!uploadFile) {\n          throw new Error('No uploadFile action');\n        }\n      }\n      const fileDescriptor = await uploadFile({\n        file,\n        formId,\n        uploadTarget,\n      });\n      const { id, displayName, url, isPrivate } = fileDescriptor!;\n      return {\n        fileId: id,\n        displayName: displayName || file.name,\n        url: !isPrivate ? url : undefined,\n        fileType: file.type,\n      } as WixFile;\n    },\n    [uploadFile, formId, uploadTarget],\n  );\n};\n","import type SignaturePad from 'signature_pad';\n\nfunction getColorNumericValue(color: string) {\n  const canvas = createCanvas(1, 1);\n  const ctx = canvas.getContext('2d')!;\n  ctx.fillStyle = color;\n  ctx.fillRect(0, 0, 1, 1);\n  const imageData = ctx.getImageData(0, 0, 1, 1);\n  return (\n    imageData.data[0] * 65536 + imageData.data[1] * 256 + imageData.data[2]\n  );\n}\n\nconst isBackgroundColor = (backgroundColor: string, imageData: ImageData) => {\n  const backgroundNumeric = getColorNumericValue(backgroundColor);\n  return (x: number, y: number): boolean => {\n    const index = (y * imageData.width + x) * 4;\n    const pixelNumericColor =\n      imageData.data[index] * 65536 +\n      imageData.data[index + 1] * 256 +\n      imageData.data[index + 2];\n    return pixelNumericColor === backgroundNumeric;\n  };\n};\n\nconst isTransparentColor =\n  (imageData: ImageData) =>\n  (x: number, y: number): boolean => {\n    const index = (y * imageData.width + x) * 4;\n    const pixelAlphaValue = imageData.data[index + 3];\n    return pixelAlphaValue === 0;\n  };\n\nexport function getCroppedCanvas(\n  canvas: HTMLCanvasElement,\n  backgroundColor?: string,\n): HTMLCanvasElement | null {\n  const originalCtx = canvas.getContext('2d', { willReadFrequently: true })!;\n\n  const originalWidth = canvas.width;\n  const originalHeight = canvas.height;\n  const imageData = originalCtx.getImageData(\n    0,\n    0,\n    originalWidth,\n    originalHeight,\n  );\n  const isBackground = backgroundColor\n    ? isBackgroundColor(backgroundColor, imageData)\n    : isTransparentColor(imageData);\n\n  let minX = originalWidth + 1,\n    maxX = -1,\n    minY = originalHeight + 1,\n    maxY = -1,\n    x = 0,\n    y = 0;\n\n  for (y = 0; y < originalHeight; y++) {\n    for (x = 0; x < originalWidth; x++) {\n      if (!isBackground(x, y)) {\n        if (minX > x) {\n          minX = x;\n        }\n        if (maxX < x) {\n          maxX = x;\n        }\n        if (minY > y) {\n          minY = y;\n        }\n        if (maxY < y) {\n          maxY = y;\n        }\n      }\n    }\n  }\n\n  const croppedWidth = maxX - minX;\n  const croppedHeight = maxY - minY;\n  if (croppedWidth < 0 || croppedHeight < 0) {\n    return null;\n  }\n  const cuttedImageData = originalCtx.getImageData(\n    minX,\n    minY,\n    croppedWidth,\n    croppedHeight,\n  );\n\n  const croppedCanvas = document.createElement('canvas'),\n    croppedCtx = croppedCanvas.getContext('2d')!;\n\n  croppedCanvas.width = croppedWidth;\n  croppedCanvas.height = croppedHeight;\n\n  if (backgroundColor) {\n    croppedCtx.fillStyle = backgroundColor;\n    croppedCtx.fillRect(0, 0, croppedWidth, croppedHeight);\n  } else {\n    croppedCtx.clearRect(0, 0, croppedWidth, croppedHeight);\n  }\n  croppedCtx.putImageData(cuttedImageData, 0, 0);\n\n  return croppedCanvas;\n}\n\nexport function createCanvas(width: number, height: number, dpi?: number) {\n  const canvas = document.createElement('canvas');\n  canvas.width = width;\n  canvas.height = height;\n  if (dpi) {\n    const ctx = canvas.getContext('2d', { willReadFrequently: true });\n    ctx?.scale(dpi, dpi);\n  }\n  return canvas;\n}\n\nexport function createCanvasFromDataUrl(\n  dataUrl: string,\n  backgroundColor?: string,\n): Promise<HTMLCanvasElement> {\n  return new Promise((resolve, reject) => {\n    const img = new Image();\n    img.onload = () => {\n      const canvas = createCanvas(img.width, img.height);\n      const ctx = canvas.getContext('2d', { willReadFrequently: true })!;\n\n      if (backgroundColor) {\n        ctx.fillStyle = backgroundColor;\n        ctx.fillRect(0, 0, img.width, img.height);\n      }\n\n      ctx?.drawImage(img, 0, 0);\n      resolve(canvas);\n    };\n    img.onerror = reject;\n    img.src = dataUrl;\n  });\n}\n\nexport function getScaledCanvas(\n  canvas: HTMLCanvasElement,\n  widthLimit?: number,\n  heightLimit?: number,\n  backgroundColor?: string,\n) {\n  const originalWidth = canvas.width;\n  const originalHeight = canvas.height;\n\n  const widthRatio = widthLimit ? widthLimit / originalWidth : 1;\n  const heightRatio = heightLimit ? heightLimit / originalHeight : 1;\n  const ratio = Math.min(heightRatio, widthRatio);\n  const width = originalWidth * ratio;\n  const height = originalHeight * ratio;\n  const scaledCanvas = createCanvas(width, height);\n  const ctx = scaledCanvas.getContext('2d');\n  if (backgroundColor && ctx) {\n    ctx.fillStyle = backgroundColor;\n    ctx.fillRect(0, 0, width, height);\n  }\n  ctx?.drawImage(\n    canvas,\n    0,\n    0,\n    originalWidth,\n    originalHeight,\n    0,\n    0,\n    width,\n    height,\n  );\n  return scaledCanvas;\n}\n\nexport function resizeCanvas(canvas: HTMLCanvasElement, pad?: SignaturePad) {\n  const ctx = canvas.getContext('2d');\n  const width = canvas.offsetWidth;\n  const height = canvas.offsetHeight;\n  const dpi = Math.max(window.devicePixelRatio || 1, 1);\n  const newWidth = width * dpi;\n  const newHeight = height * dpi;\n\n  if ((canvas.width !== newWidth || canvas.height !== newHeight) && ctx) {\n    canvas.width = newWidth;\n    canvas.height = newHeight;\n    ctx.scale(dpi, dpi);\n    pad?.redraw();\n\n    return true;\n  }\n  return false;\n}\n","export const MAX_HEIGHT = 480;\n","import { type PointGroup } from 'signature_pad';\n\nimport { SignatureFormat } from '../signature-types';\n\nimport { decodeDataUrl, encodeDataUrl } from './data-url';\n\nexport const encodePoints = (points: PointGroup[]) =>\n  encodeDataUrl({\n    data: JSON.stringify(points),\n    mimeType: SignatureFormat.POINTS,\n  });\n\nexport const decodePoints = (dataUrl: string): PointGroup[] | null => {\n  const decodedDataUrl = decodeDataUrl(dataUrl);\n  if (decodedDataUrl?.mimeType === SignatureFormat.POINTS) {\n    try {\n      const points = JSON.parse(decodedDataUrl.data);\n      return points as PointGroup[];\n    } catch (e) {\n      return null;\n    }\n  }\n  return null;\n};\n","const SCALE_FACTOR = 0.8;\nexport const SIGNATURE_FONT = 'Madefor';\n\nexport function calculateTextSize(text: string, ctx: CanvasRenderingContext2D) {\n  const { width, actualBoundingBoxAscent, actualBoundingBoxDescent } =\n    ctx.measureText(text);\n\n  return {\n    width,\n    height: actualBoundingBoxAscent + actualBoundingBoxDescent,\n    offsetY: actualBoundingBoxAscent,\n  };\n}\n\nexport function calculateFontSize(text: string, canvas: HTMLCanvasElement) {\n  const ctx = canvas.getContext('2d')!;\n  const width = canvas.offsetWidth || canvas.width;\n  const height = canvas.offsetHeight || canvas.height;\n  const maximumHeight = height * SCALE_FACTOR;\n  const maximumWidth = width * SCALE_FACTOR;\n\n  ctx.font = `${maximumHeight}px ${SIGNATURE_FONT}`;\n\n  const { width: widthAtFullSize, height: heightAtFullSize } =\n    calculateTextSize(text, ctx);\n  const maximumFontSizeByWidth =\n    maximumHeight / (widthAtFullSize / maximumWidth);\n  const maximumFontSizeByHeight =\n    maximumHeight / (heightAtFullSize / maximumHeight);\n  return Math.min(maximumFontSizeByWidth, maximumFontSizeByHeight);\n}\n\nexport function writeTextOnCanvas(\n  canvas: HTMLCanvasElement,\n  newText: string,\n  color: string = 'black',\n  rtl = false,\n  backgroundColor?: string,\n) {\n  const ctx = canvas.getContext('2d')!;\n  const fontSize = calculateFontSize(newText, canvas);\n\n  ctx.font = `${fontSize}px ${SIGNATURE_FONT}`;\n  ctx.textBaseline = 'top';\n\n  const width = canvas.offsetWidth || canvas.width;\n  const height = canvas.offsetHeight || canvas.height;\n  const {\n    width: textWidth,\n    height: textHeight,\n    offsetY: textOffsetY,\n  } = calculateTextSize(newText, ctx);\n\n  if (backgroundColor) {\n    ctx.fillStyle = backgroundColor;\n    ctx.fillRect(0, 0, width, height);\n  } else {\n    ctx.clearRect(0, 0, width, height);\n  }\n  ctx.fillStyle = color;\n  const left = (width - textWidth) / 2;\n  ctx.fillText(\n    newText,\n    rtl ? width - left : left,\n    (height - textHeight) / 2 + textOffsetY,\n  );\n}\n","import SignaturePad from 'signature_pad';\n\nimport { type WixFile } from '../../form/types';\nimport { SignatureFormat } from '../signature-types';\n\nimport {\n  createCanvas,\n  createCanvasFromDataUrl,\n  getCroppedCanvas,\n  getScaledCanvas,\n} from './canvas';\nimport { MAX_HEIGHT } from './constants';\nimport { decodePoints } from './points';\nimport { writeTextOnCanvas } from './text';\n\nconst DATA_URI_REGEX = /^data:([^;,]+)(?:;([^,]+))?,(.+)$/;\n\nexport function isDataUrl(dataUrl: string): dataUrl is `data:${string}` {\n  return DATA_URI_REGEX.test(dataUrl);\n}\n\nexport interface DataURL {\n  data: string;\n  mimeType: SignatureFormat.POINTS | SignatureFormat.TEXT | string;\n  encoding?: 'text' | 'base64';\n}\n\nexport function decodeDataUrl(dataUrl: string): DataURL | undefined {\n  if (!dataUrl) {\n    return undefined;\n  }\n\n  const match = dataUrl.match(DATA_URI_REGEX);\n  if (!match) {\n    return undefined;\n  }\n\n  const [, mimeType, encoding, data] = match;\n  return {\n    data: encoding === 'base64' ? atob(data) : decodeURI(data),\n    mimeType,\n    encoding: encoding as DataURL['encoding'],\n  };\n}\n\nexport function encodeDataUrl({\n  data,\n  mimeType,\n  encoding = 'text',\n}: DataURL): string {\n  const encodedData = encoding === 'base64' ? btoa(data) : encodeURI(data);\n  const typeAndEncoding =\n    encoding === 'base64' ? `${mimeType};base64` : mimeType;\n  return `data:${typeAndEncoding},${encodedData}`;\n}\n\nexport function dataUrlToFile(\n  dataUrl: string,\n  filename: string,\n): File | undefined {\n  const decoded = decodeDataUrl(dataUrl);\n  if (!decoded) {\n    return undefined;\n  }\n\n  let n = decoded.data.length;\n  const u8arr = new Uint8Array(n);\n  while (n--) {\n    u8arr[n] = decoded.data.charCodeAt(n);\n  }\n\n  const extension = decoded.mimeType.split('/')[1] ?? 'txt';\n  return new File([u8arr], `${filename}.${extension}`, {\n    type: decoded.mimeType,\n  });\n}\n\nexport function dataUrlToWixFile(url: string, displayName = 'temp'): WixFile {\n  const decoded = decodeDataUrl(url);\n  return {\n    fileId: 'temp',\n    displayName,\n    url,\n    fileType: decoded?.mimeType ?? '',\n  };\n}\n\nexport async function dataUrlToPngDataUrl(\n  dataUrl: string,\n  rtl?: boolean,\n): Promise<string | null> {\n  const decodedDataUrl = decodeDataUrl(dataUrl);\n  if (!decodedDataUrl) {\n    return dataUrl;\n  }\n  const dataUrlType = decodedDataUrl.mimeType;\n  if (dataUrlType === SignatureFormat.TEXT) {\n    // Width doesn't matter, it will be cropped later\n    const canvas = createCanvas(MAX_HEIGHT * 20, MAX_HEIGHT, 1);\n    writeTextOnCanvas(canvas, decodedDataUrl.data, 'black', rtl, 'white');\n    const croppedCanvas = getCroppedCanvas(canvas, 'white');\n    // When cropped canvas is null it means we have an empty image ( example a transparent background )\n    return croppedCanvas?.toDataURL('image/jpeg', 0.7) ?? null;\n  }\n  if (dataUrlType === SignatureFormat.POINTS) {\n    const points = decodePoints(dataUrl);\n    if (!points) {\n      return null;\n    }\n    const blackPoints = points.map((pointGroup) => ({\n      ...pointGroup,\n      penColor: 'black',\n    }));\n    // Width doesn't matter, it will be cropped later\n    const canvas = createCanvas(\n      MAX_HEIGHT * 20,\n      MAX_HEIGHT,\n      Math.max(window.devicePixelRatio || 1, 1),\n    );\n    const signaturePad = new SignaturePad(canvas);\n    signaturePad.fromData(blackPoints);\n    const croppedCanvas = getCroppedCanvas(canvas);\n    if (!croppedCanvas) {\n      // Empty image case\n      return null;\n    }\n    const scaledCanvas = getScaledCanvas(\n      croppedCanvas,\n      undefined,\n      MAX_HEIGHT,\n      'white',\n    );\n    return scaledCanvas.toDataURL('image/jpeg', 0.7);\n  }\n  if (dataUrlType?.startsWith('image/')) {\n    const canvas = await createCanvasFromDataUrl(dataUrl);\n    const croppedCanvas = getCroppedCanvas(canvas);\n    if (!croppedCanvas) {\n      // Empty image case\n      return null;\n    }\n    const scaledCanvas = getScaledCanvas(croppedCanvas, undefined, MAX_HEIGHT);\n    return scaledCanvas.toDataURL('image/jpeg', 0.7);\n  }\n  return dataUrl;\n}\n\nexport async function convertToPNGFile(\n  dataUrl: string,\n  rtl?: boolean,\n): Promise<File | undefined> {\n  const pngDataUrl = await dataUrlToPngDataUrl(dataUrl, rtl);\n  if (!pngDataUrl) {\n    return undefined;\n  }\n  return dataUrlToFile(pngDataUrl, 'signature');\n}\n","import { useCallback, useEffect, useRef, useState } from 'react';\n\nimport { EMPTY_VALUE } from '../../constants';\nimport { useConfig } from '../../contexts/config-context';\nimport {\n  FORM_STATUS,\n  useFormStatus,\n} from '../../contexts/form-status-provider';\nimport { type WixFile } from '../form/types';\n\nimport { useUploadSignature } from './use-upload-signature';\nimport { convertToPNGFile, decodeDataUrl, isDataUrl } from './utils/data-url';\n\ninterface UseSignatureArgs {\n  value?: WixFile[] | null;\n  onChange: (value: WixFile[] | undefined | null) => void;\n  target: string;\n}\n\nexport const useSignatureValue = ({\n  value,\n  onChange,\n  target,\n}: UseSignatureArgs) => {\n  const [signatureValue, setSignatureValue] = useState(value);\n  const { isRTL: rtl } = useConfig();\n  const uploadSignatureFile = useUploadSignature(target);\n  const { setFormStatus } = useFormStatus();\n  const uploadTimeoutIdRef = useRef<NodeJS.Timeout | null>();\n\n  useEffect(() => {\n    if (value === EMPTY_VALUE) {\n      setSignatureValue(EMPTY_VALUE);\n    }\n  }, [value]);\n\n  const cancelUpload = useCallback(() => {\n    if (uploadTimeoutIdRef.current) {\n      clearTimeout(uploadTimeoutIdRef.current);\n      uploadTimeoutIdRef.current = null;\n    }\n  }, []);\n\n  const signature = signatureValue?.[0];\n  const decodedValue = signature?.url\n    ? decodeDataUrl(signature.url)\n    : undefined;\n\n  const uploadSignature = useCallback(\n    async (_signature: WixFile | null) => {\n      try {\n        const dataUrl = _signature?.url ?? '';\n        if (isDataUrl(dataUrl)) {\n          const signatureFile = await convertToPNGFile(dataUrl, rtl);\n          if (signatureFile) {\n            const uploadedValue = await uploadSignatureFile(signatureFile);\n            onChange([uploadedValue]);\n          } else {\n            // The signature is empty ( example the user choose a fully transparent image )\n            setSignatureValue(undefined);\n            onChange(undefined);\n          }\n        }\n        uploadTimeoutIdRef.current = null;\n      } finally {\n        setFormStatus(target, FORM_STATUS.READY);\n      }\n    },\n    [setFormStatus, target, rtl, uploadSignatureFile, onChange],\n  );\n\n  const handleChange = useCallback(\n    (newSignature: WixFile | null) => {\n      const deferUploadSignature = (_signature: WixFile | null) => {\n        uploadTimeoutIdRef.current = setTimeout(\n          () => uploadSignature(_signature),\n          1_500,\n        );\n      };\n\n      if (newSignature) {\n        if (uploadTimeoutIdRef.current) {\n          clearTimeout(uploadTimeoutIdRef.current);\n          uploadTimeoutIdRef.current = null;\n        }\n        setSignatureValue([newSignature]);\n        deferUploadSignature(newSignature);\n      } else {\n        onChange?.(null);\n        setSignatureValue(undefined);\n        setFormStatus(target, FORM_STATUS.READY);\n      }\n    },\n    [uploadSignature, onChange, setFormStatus, target],\n  );\n\n  return {\n    handleChange,\n    signature,\n    decodedValue,\n    cancelUpload,\n  };\n};\n","import { useCallback, useState } from 'react';\n\nimport {\n  FORM_STATUS,\n  useFormStatus,\n} from '../../contexts/form-status-provider';\nimport type { WixFile } from '../form/types';\n\nimport { type SignatureProps } from './signature-field-props';\nimport {\n  SignatureFormat,\n  SignatureMode,\n  SignatureView,\n} from './signature-types';\nimport { useSignatureValue } from './use-signature-value';\nimport { type DataURL } from './utils/data-url';\n\nexport const useSignatureField = ({\n  target,\n  value,\n  onChange,\n}: Pick<SignatureProps, 'target' | 'value' | 'onChange'>) => {\n  const { handleChange, cancelUpload, signature, decodedValue } =\n    useSignatureValue({\n      value,\n      onChange,\n      target,\n    });\n\n  const [signatureMode, setSignatureMode] = useState<SignatureMode>(() => {\n    if (signature == null) {\n      return SignatureMode.DRAW;\n    }\n    switch (decodedValue?.mimeType) {\n      case SignatureFormat.POINTS:\n        return SignatureMode.DRAW;\n      case SignatureFormat.TEXT:\n        return SignatureMode.TYPE;\n      default:\n        return SignatureMode.UPLOAD;\n    }\n  });\n\n  const { setFormStatus } = useFormStatus();\n\n  const handleBeforeChange = useCallback(() => {\n    cancelUpload();\n    setFormStatus(target, FORM_STATUS.BUSY);\n  }, [cancelUpload, setFormStatus, target]);\n\n  const handleClear = useCallback(() => {\n    cancelUpload();\n    handleChange(null);\n    setFormStatus(target, FORM_STATUS.READY);\n  }, [cancelUpload, handleChange, setFormStatus, target]);\n\n  const clearable = signature != null;\n\n  const signatureValueForView = undefinedIfUnsupportedByCurrentMode(\n    signatureMode,\n    signature,\n    decodedValue,\n  );\n\n  const signatureView: SignatureView = (() => {\n    switch (signatureMode) {\n      case SignatureMode.DRAW:\n        return SignatureView.DRAW;\n      case SignatureMode.TYPE:\n        return SignatureView.TYPE;\n      case SignatureMode.UPLOAD:\n        return signatureValueForView != null\n          ? SignatureView.IMAGE\n          : SignatureView.UPLOAD;\n      default:\n        return SignatureView.DRAW;\n    }\n  })();\n\n  return {\n    signature,\n    decodedValue,\n    signatureMode,\n    clearable,\n    signatureValueForView,\n    signatureView,\n\n    handleChange,\n    setSignatureMode,\n    handleBeforeChange,\n    handleClear,\n  };\n};\n\nconst ACCEPTED_FORMATS_BY_MODE = {\n  [SignatureMode.DRAW]: (decodedValue?: DataURL) =>\n    decodedValue?.mimeType === SignatureFormat.POINTS,\n  [SignatureMode.TYPE]: (decodedValue?: DataURL) =>\n    decodedValue?.mimeType === SignatureFormat.TEXT,\n  [SignatureMode.UPLOAD]: (decodedValue?: DataURL) =>\n    decodedValue?.mimeType !== SignatureFormat.POINTS &&\n    decodedValue?.mimeType !== SignatureFormat.TEXT,\n};\n\nfunction undefinedIfUnsupportedByCurrentMode(\n  mode: SignatureMode,\n  signature?: WixFile,\n  decodedValue?: DataURL,\n): WixFile | undefined {\n  if (!signature) {\n    return undefined;\n  }\n\n  const isAcceptedFormat = ACCEPTED_FORMATS_BY_MODE[mode](decodedValue);\n  return isAcceptedFormat ? signature : undefined;\n}\n","import { type WixFile } from '../../form/types';\nimport { SignatureFormat } from '../signature-types';\n\nimport { decodeDataUrl } from './data-url';\n\nexport const isExternalImage = (value: WixFile) => {\n  const dataURL = value.url ? decodeDataUrl(value.url) : undefined;\n  if (!dataURL) {\n    return true;\n  }\n  return (\n    dataURL.mimeType !== SignatureFormat.POINTS &&\n    dataURL.mimeType !== SignatureFormat.TEXT\n  );\n};\n\nexport const getColor = (compId?: string, cssVariable?: string) => {\n  if (typeof window === 'undefined' || !cssVariable) {\n    return;\n  }\n  const dataHook = `[id=${compId}] [data-hook=\"form-root\"]`;\n  const element = document.querySelector(dataHook);\n\n  const color = element\n    ? getComputedStyle(element).getPropertyValue(cssVariable)\n    : undefined;\n\n  return color;\n};\n","import {\n  Delete,\n  Download,\n  Edit,\n  TextStyleSmall,\n} from '@wix/wix-ui-icons-common/on-stage';\nimport React, {\n  type ReactNode,\n  useCallback,\n  useMemo,\n  useRef,\n  useEffect,\n  useState,\n} from 'react';\nimport {\n  RadioGroup as RadioGroupRAC,\n  Radio as RadioRAC,\n  Button as ButtonRAC,\n  TextField as TextFieldRAC,\n  Input as InputRAC,\n} from 'react-aria-components';\nimport SignaturePad, {\n  type Options as SignaturePadOptions,\n} from 'signature_pad';\n\nimport { useFocusFieldEvent } from '../../contexts/events-context';\nimport { useFieldAttributes } from '../../contexts/field-attributes-context';\nimport { useFieldPropsV2 } from '../../contexts/field-props-context';\nimport { useTranslation } from '../../contexts/translation-context';\nimport { findChildOfType, applyInternalProps } from '../../services/find-child';\nimport { Description } from '../field-description/field-description-headless';\nimport { Error } from '../field-error/field-error-headless';\nimport { Label } from '../field-label/field-label-headless';\nimport { type WixFile } from '../form/types';\n\nimport { type SignatureProps } from './signature-field-props';\nimport {\n  SignatureMode,\n  SignatureView,\n  SignatureFormat,\n} from './signature-types';\nimport { useSignatureField } from './use-signature-field';\nimport { resizeCanvas } from './utils/canvas';\nimport {\n  decodeDataUrl,\n  dataUrlToWixFile,\n  encodeDataUrl,\n} from './utils/data-url';\nimport { isExternalImage } from './utils/drawer';\nimport { decodePoints, encodePoints } from './utils/points';\n\nexport type SignatureComponentProps = {\n  children: ReactNode;\n};\n\nexport const Signature = ({ children }: SignatureComponentProps) => {\n  const { id, FieldLayout } = useFieldPropsV2<SignatureProps>();\n\n  const labelElement = findChildOfType(children, Signature.Label);\n  const inputElement = findChildOfType(children, Signature.Input);\n  const descriptionElement = findChildOfType(children, Signature.Description);\n  const errorElement = findChildOfType(children, Signature.Error);\n\n  return (\n    <FieldLayout\n      fieldId={id}\n      renderLabel={() => labelElement}\n      renderInput={() => inputElement}\n      renderDescription={() => (\n        <>\n          {errorElement}\n          {descriptionElement}\n        </>\n      )}\n    />\n  );\n};\n\ntype InputProps = {\n  children: ReactNode;\n};\n\ntype InputInternalProps = {\n  signatureMode: SignatureMode;\n  setSignatureMode: (mode: SignatureMode) => void;\n  handleClear: () => void;\n  clearable: boolean;\n  signatureView: SignatureView;\n  signatureValueForView?: WixFile;\n  handleChange: (value: WixFile | null) => void;\n  handleBeforeChange: () => void;\n};\n\nconst Input = ({ children }: InputProps) => {\n  const { value, onChange, target } = useFieldPropsV2<SignatureProps>();\n\n  const {\n    signatureMode,\n    setSignatureMode,\n    handleClear,\n    clearable,\n    signatureView,\n    signatureValueForView,\n    handleChange,\n    handleBeforeChange,\n  } = useSignatureField({ target, value, onChange });\n\n  const headerElement = findChildOfType(children, Input.Header);\n  const valueElement = findChildOfType(children, Input.Value);\n\n  return (\n    <>\n      {applyInternalProps<InputInternalProps>(headerElement, {\n        signatureMode,\n        setSignatureMode,\n        handleClear,\n        clearable,\n        signatureView,\n        signatureValueForView,\n        handleChange,\n        handleBeforeChange,\n      })}\n      {applyInternalProps<InputInternalProps>(valueElement, {\n        signatureMode,\n        setSignatureMode,\n        handleClear,\n        clearable,\n        signatureView,\n        signatureValueForView,\n        handleChange,\n        handleBeforeChange,\n      })}\n    </>\n  );\n};\n\ntype HeaderProps = {\n  children: ReactNode;\n  className?: string;\n};\n\nconst Header = ({ children, className, ...internal }: HeaderProps) => {\n  const { signatureMode, setSignatureMode, clearable, handleClear } =\n    internal as InputInternalProps;\n  const { uploadEnabled } = useFieldPropsV2<SignatureProps>();\n  const { t } = useTranslation();\n\n  const tabsElement = findChildOfType(children, Header.Tabs);\n  const clearElement = findChildOfType(children, Header.Clear);\n\n  const modeDescription = useMemo(() => {\n    switch (signatureMode) {\n      case SignatureMode.DRAW:\n        return t('field.signature.mode.draw.description');\n      case SignatureMode.TYPE:\n        return t('field.signature.mode.type.description');\n      case SignatureMode.UPLOAD:\n        return t('field.signature.mode.upload.description');\n      default:\n        return '';\n    }\n  }, [signatureMode, t]);\n\n  return (\n    <div className={className}>\n      <div\n        role=\"status\"\n        aria-live=\"polite\"\n        style={{\n          position: 'absolute',\n          left: '-10000px',\n          width: '1px',\n          height: '1px',\n          overflow: 'hidden',\n        }}\n      >\n        {modeDescription}\n      </div>\n      {applyInternalProps<HeaderInternalProps>(tabsElement, {\n        signatureMode,\n        setSignatureMode,\n        uploadEnabled,\n      })}\n      {clearable &&\n        applyInternalProps<ClearInternalProps>(clearElement, {\n          handleClear,\n        })}\n    </div>\n  );\n};\n\ntype HeaderInternalProps = {\n  signatureMode: SignatureMode;\n  setSignatureMode: (mode: SignatureMode) => void;\n  uploadEnabled?: boolean;\n};\n\ntype ClearInternalProps = {\n  handleClear: () => void;\n};\n\ntype TabsProps = {\n  children: ReactNode;\n  className?: string;\n};\n\nconst Tabs = ({ children, className, ...internal }: TabsProps) => {\n  const { signatureMode, setSignatureMode, uploadEnabled } =\n    internal as HeaderInternalProps;\n  const { labelId } = useFieldAttributes();\n\n  const handleChange = useCallback(\n    (value: string) => {\n      setSignatureMode(value as SignatureMode);\n    },\n    [setSignatureMode],\n  );\n\n  const modes = useMemo(() => {\n    const allModes = [SignatureMode.DRAW, SignatureMode.TYPE];\n    if (uploadEnabled) {\n      allModes.push(SignatureMode.UPLOAD);\n    }\n    return allModes;\n  }, [uploadEnabled]);\n\n  const tabElement = findChildOfType(children, Tabs.Tab);\n\n  return (\n    <RadioGroupRAC\n      value={signatureMode}\n      onChange={handleChange}\n      aria-labelledby={labelId}\n      className={className}\n    >\n      {modes.map((mode) =>\n        applyInternalProps<TabInternalProps>(tabElement, {\n          key: mode,\n          mode,\n        }),\n      )}\n    </RadioGroupRAC>\n  );\n};\n\ntype TabInternalProps = {\n  mode: SignatureMode;\n};\n\ntype TabProps = {\n  children: ReactNode;\n  className?: string;\n};\n\nconst Tab = ({ children, className, ...internal }: TabProps) => {\n  const { mode } = internal as TabInternalProps;\n  const { t } = useTranslation();\n\n  const iconElement = findChildOfType(children, Tab.Icon);\n\n  const ariaLabel = useMemo(() => {\n    switch (mode) {\n      case SignatureMode.DRAW:\n        return t('field.signature.mode.draw.label');\n      case SignatureMode.TYPE:\n        return t('field.signature.mode.type.label');\n      case SignatureMode.UPLOAD:\n        return t('field.signature.mode.upload.label');\n      default:\n        return '';\n    }\n  }, [mode, t]);\n\n  return (\n    <RadioRAC value={mode} aria-label={ariaLabel} className={className}>\n      {applyInternalProps<TabIconInternalProps>(iconElement, {\n        mode,\n      })}\n    </RadioRAC>\n  );\n};\n\ntype TabIconInternalProps = {\n  mode: SignatureMode;\n};\n\ntype TabIconProps = {\n  className?: string;\n};\n\nconst TabIcon = ({ className, ...internal }: TabIconProps) => {\n  const { mode } = internal as TabIconInternalProps;\n\n  const IconComponent = useMemo(() => {\n    switch (mode) {\n      case SignatureMode.DRAW:\n        return Edit;\n      case SignatureMode.TYPE:\n        return TextStyleSmall;\n      case SignatureMode.UPLOAD:\n        return Download;\n      default:\n        return null;\n    }\n  }, [mode]);\n\n  if (!IconComponent) {\n    return null;\n  }\n\n  return <IconComponent className={className} size=\"24\" aria-hidden=\"true\" />;\n};\n\ntype ClearProps = {\n  className?: string;\n};\n\nconst Clear = ({ className, ...internal }: ClearProps) => {\n  const { handleClear } = internal as ClearInternalProps;\n  const { t } = useTranslation();\n  const { inputId } = useFieldAttributes();\n\n  return (\n    <ButtonRAC\n      onPress={handleClear}\n      aria-label={t('field.signature.clear-button.label')}\n      aria-controls={inputId}\n      className={className}\n    >\n      <Delete size=\"24\" aria-hidden=\"true\" />\n    </ButtonRAC>\n  );\n};\n\ntype ValueProps = {\n  children: ReactNode;\n  className?: string;\n};\n\nconst Value = ({ children, className, ...internal }: ValueProps) => {\n  const {\n    signatureView,\n    signatureValueForView,\n    handleChange,\n    handleBeforeChange,\n  } = internal as InputInternalProps;\n  const { readOnly, onBlur, onFocus, hasError } =\n    useFieldPropsV2<SignatureProps>();\n  const { t } = useTranslation();\n\n  const canvasElement = findChildOfType(children, Value.Canvas);\n  const typeElement = findChildOfType(children, Value.Type);\n  const uploadElement = findChildOfType(children, Value.Upload);\n\n  return (\n    <div\n      className={className}\n      role=\"region\"\n      aria-label={t('field.signature.input-area') || 'Signature input area'}\n      data-invalid={hasError}\n    >\n      {signatureView === SignatureView.DRAW &&\n        applyInternalProps<ValueInternalProps>(canvasElement, {\n          value: signatureValueForView,\n          onChange: handleChange,\n          onBeforeChange: handleBeforeChange,\n          readOnly,\n          onBlur,\n          onFocus,\n        })}\n      {signatureView === SignatureView.TYPE &&\n        applyInternalProps<ValueInternalProps>(typeElement, {\n          value: signatureValueForView,\n          onChange: handleChange,\n          onBeforeChange: handleBeforeChange,\n          readOnly,\n          onBlur,\n          onFocus,\n        })}\n      {(signatureView === SignatureView.UPLOAD ||\n        signatureView === SignatureView.IMAGE) &&\n        applyInternalProps<ValueInternalProps>(uploadElement, {\n          value: signatureValueForView,\n          onChange: handleChange,\n          onBeforeChange: handleBeforeChange,\n          readOnly,\n          onBlur,\n          onFocus,\n        })}\n    </div>\n  );\n};\n\ntype ValueInternalProps = {\n  value?: WixFile | null;\n  onChange: (value: WixFile | null) => void;\n  onBeforeChange?: () => void;\n  readOnly?: boolean;\n  onBlur?: () => void;\n  onFocus?: () => void;\n};\n\ntype CanvasProps = {\n  className?: string;\n};\n\nconst Canvas = ({ className, ...internal }: CanvasProps) => {\n  const { value, onChange, onBeforeChange, readOnly, onBlur, onFocus } =\n    internal as ValueInternalProps;\n  const { id } = useFieldPropsV2<SignatureProps>();\n  const { inputId, ariaDescribedBy } = useFieldAttributes();\n  const { t } = useTranslation();\n\n  const pad = useRef<SignaturePad>();\n  const canvasRef = useRef<HTMLCanvasElement>();\n  const resizeObserver = useRef<ResizeObserver | null>(null);\n  const valueUrl = value?.url;\n\n  const [ariaLabel, setAriaLabel] = useState(\n    t('field.signature.canvas.aria-label.empty'),\n  );\n\n  useFocusFieldEvent(() => {\n    canvasRef.current?.focus();\n  }, id);\n\n  const options = useMemo(\n    (): SignaturePadOptions => ({\n      throttle: 0,\n      dotSize: 2,\n      minWidth: 1,\n      maxWidth: 3,\n      velocityFilterWeight: 0.2,\n    }),\n    [],\n  );\n\n  const getSignature = useCallback((): string => {\n    if (pad.current?.isEmpty()) {\n      return '';\n    }\n    const dataPoints = pad.current?.toData();\n    return dataPoints\n      ? encodePoints(dataPoints)\n      : pad.current?.toDataURL() ?? '';\n  }, []);\n\n  const handleChange = useCallback(() => {\n    const isEmpty = pad.current?.isEmpty();\n    setAriaLabel(\n      isEmpty\n        ? t('field.signature.canvas.aria-label.empty')\n        : t('field.signature.canvas.aria-label.signed'),\n    );\n    onChange(dataUrlToWixFile(getSignature()));\n  }, [getSignature, onChange, t]);\n\n  const handleBeforeChangeInternal = useCallback(() => {\n    onBeforeChange?.();\n  }, [onBeforeChange]);\n\n  const mountCanvas = useCallback(\n    (node: HTMLCanvasElement | null) => {\n      const isMount = node != null;\n      if (isMount) {\n        canvasRef.current = node;\n        pad.current = new SignaturePad(node, options);\n        resizeCanvas(canvasRef.current, pad.current);\n        if (valueUrl) {\n          const points = decodePoints(valueUrl);\n          if (points) {\n            pad.current.fromData(points);\n            setAriaLabel(t('field.signature.canvas.aria-label.signed'));\n          }\n        } else {\n          pad.current.clear();\n          setAriaLabel(t('field.signature.canvas.aria-label.empty'));\n        }\n\n        pad.current.addEventListener('beginStroke', handleBeforeChangeInternal);\n        pad.current.addEventListener('endStroke', handleChange);\n\n        if (typeof ResizeObserver !== 'undefined' && !resizeObserver.current) {\n          resizeObserver.current = new ResizeObserver(() => {\n            if (canvasRef.current) {\n              resizeCanvas(canvasRef.current, pad?.current);\n            }\n          });\n        }\n        resizeObserver.current?.observe(node);\n      } else {\n        resizeObserver.current?.disconnect();\n        pad.current?.removeEventListener('endStroke', handleChange);\n        pad.current?.removeEventListener(\n          'beginStroke',\n          handleBeforeChangeInternal,\n        );\n      }\n    },\n    [options, t, valueUrl, handleBeforeChangeInternal, handleChange],\n  );\n\n  useEffect(() => {\n    if (!pad.current) {\n      return;\n    }\n\n    if (readOnly) {\n      pad.current.off();\n    } else {\n      pad.current.on();\n    }\n  }, [readOnly]);\n\n  return (\n    <div className={className}>\n      <canvas\n        ref={mountCanvas}\n        id={inputId}\n        data-input-id={inputId}\n        data-has-value={!!valueUrl}\n        style={{ width: '100%', height: '100%' }}\n        onFocus={onFocus}\n        onBlur={onBlur}\n        tabIndex={0}\n        role=\"img\"\n        aria-label={ariaLabel}\n        aria-describedby={ariaDescribedBy}\n      />\n    </div>\n  );\n};\n\ntype TypeProps = {\n  children: ReactNode;\n  className?: string;\n};\n\nconst Type = ({ children, className, ...internal }: TypeProps) => {\n  const { value, onChange, onBeforeChange, readOnly } =\n    internal as ValueInternalProps;\n  const { id } = useFieldPropsV2<SignatureProps>();\n  const { inputId, ariaDescribedBy } = useFieldAttributes();\n  const { t } = useTranslation();\n\n  const decodedValue = value?.url ? decodeDataUrl(value.url) : undefined;\n  const { data: signatureText = '' } = decodedValue ?? {\n    mimeType: '',\n    data: '',\n  };\n\n  useFocusFieldEvent(() => {\n    const input = document.getElementById(inputId);\n    input?.focus({ preventScroll: true });\n  }, id);\n\n  useEffect(() => {\n    if (!value) {\n      const input = document.getElementById(inputId) as HTMLInputElement;\n      if (input) {\n        input.value = '';\n      }\n    }\n  }, [value, inputId]);\n\n  const handleChange = useCallback(\n    (text: string) => {\n      onBeforeChange?.();\n      if (text.trim()) {\n        onChange(\n          dataUrlToWixFile(\n            encodeDataUrl({\n              data: text,\n              mimeType: SignatureFormat.TEXT,\n            }),\n          ),\n        );\n      } else {\n        onChange(null);\n      }\n    },\n    [onBeforeChange, onChange],\n  );\n\n  const valueElement = findChildOfType(children, Type.Value);\n\n  return (\n    <TextFieldRAC\n      value={signatureText}\n      onChange={handleChange}\n      isReadOnly={readOnly}\n      className={className}\n    >\n      {applyInternalProps<TypeValueInternalProps>(valueElement, {\n        inputId,\n        ariaDescribedBy,\n        placeholder: t('field.signature.text.placeholder'),\n      })}\n    </TextFieldRAC>\n  );\n};\n\ntype TypeValueInternalProps = {\n  inputId: string;\n  ariaDescribedBy?: string;\n  placeholder?: string;\n};\n\ntype TypeValueProps = {\n  className?: string;\n};\n\nconst TypeValue = ({ className, ...internal }: TypeValueProps) => {\n  const { inputId, ariaDescribedBy, placeholder } =\n    internal as TypeValueInternalProps;\n  const { label } = useFieldPropsV2<SignatureProps>();\n\n  return (\n    <InputRAC\n      id={inputId}\n      aria-describedby={ariaDescribedBy}\n      aria-label={label}\n      placeholder={placeholder}\n      className={className}\n    />\n  );\n};\n\ntype UploadProps = {\n  children: ReactNode;\n  className?: string;\n};\n\nconst Upload = ({ children, className, ...internal }: UploadProps) => {\n  const { value, onChange, readOnly } = internal as ValueInternalProps;\n\n  const buttonElement = findChildOfType(children, Upload.Button);\n\n  const fileInputRef = useRef<HTMLInputElement>(null);\n\n  const handleFileChange = useCallback(\n    (event: React.ChangeEvent<HTMLInputElement>) => {\n      const files = event.target.files;\n      if (!files || files.length === 0) {\n        onChange(null);\n        return;\n      }\n      const file = files[0];\n      const fileReader = new FileReader();\n      fileReader.onload = function () {\n        onChange(dataUrlToWixFile(this.result as string, file.name));\n      };\n      fileReader.readAsDataURL(file);\n    },\n    [onChange],\n  );\n\n  const hasUploadedImage = value && isExternalImage(value);\n\n  const { t } = useTranslation();\n\n  return (\n    <div className={className}>\n      <input\n        ref={fileInputRef}\n        type=\"file\"\n        accept=\"image/*\"\n        onChange={handleFileChange}\n        style={{ display: 'none' }}\n        aria-hidden=\"true\"\n        tabIndex={-1}\n      />\n      {!hasUploadedImage &&\n        applyInternalProps<UploadButtonInternalProps>(buttonElement, {\n          fileInputRef,\n          readOnly,\n        })}\n      {hasUploadedImage && value.url && (\n        <img\n          src={value.url}\n          alt={\n            t('field.signature.uploaded-image.alt') ||\n            'Uploaded signature image'\n          }\n          style={{ maxWidth: '100%', maxHeight: '200px' }}\n        />\n      )}\n    </div>\n  );\n};\n\ntype UploadButtonInternalProps = {\n  fileInputRef: React.RefObject<HTMLInputElement>;\n  readOnly?: boolean;\n};\n\ntype UploadButtonProps = {\n  className?: string;\n};\n\nconst UploadButton = ({ className, ...internal }: UploadButtonProps) => {\n  const { fileInputRef, readOnly } = internal as UploadButtonInternalProps;\n  const { t } = useTranslation();\n  const { inputId, ariaDescribedBy, labelId } = useFieldAttributes();\n\n  const handlePress = useCallback(() => {\n    fileInputRef.current?.click();\n  }, [fileInputRef]);\n\n  return (\n    <ButtonRAC\n      id={inputId}\n      onPress={handlePress}\n      isDisabled={readOnly}\n      aria-labelledby={labelId}\n      aria-describedby={ariaDescribedBy}\n      className={className}\n    >\n      {t('field.signature.settings.upload-button.label')}\n    </ButtonRAC>\n  );\n};\n\nSignature.Label = Label;\nSignature.Input = Input;\nSignature.Description = Description;\nSignature.Error = Error;\n\nInput.Header = Header;\nInput.Value = Value;\n\nHeader.Tabs = Tabs;\nHeader.Clear = Clear;\n\nTabs.Tab = Tab;\nTab.Icon = TabIcon;\n\nValue.Canvas = Canvas;\nValue.Type = Type;\nValue.Upload = Upload;\n\nType.Value = TypeValue;\nUpload.Button = UploadButton;\n","import React from 'react';\nimport {\n  ProgressBar as ProgressBarRAC,\n  type ProgressBarProps as ProgressBarRACProps,\n} from 'react-aria-components';\n\nexport function ProgressCircle(props: ProgressBarRACProps) {\n  // SVG strokes are centered, so subtract half the stroke width from the radius to create an inner stroke.\n  const strokeWidth = 4;\n  const radius = `calc(50% - ${strokeWidth / 2}px)`;\n\n  return (\n    <ProgressBarRAC {...props} isIndeterminate>\n      {({ percentage, isIndeterminate }) => (\n        <>\n          <svg fill=\"none\" width=\"100%\" height=\"100%\" viewBox=\"0 0 32 32\">\n            <circle cx=\"50%\" cy=\"50%\" r={radius} />\n            <circle\n              cx=\"50%\"\n              cy=\"50%\"\n              r={radius}\n              // Normalize the path length to 100 so we can easily set stroke-dashoffset to a percentage.\n              pathLength=\"100\"\n              // Add extra gap between dashes so 0% works in Chrome.\n              strokeDasharray=\"100 200\"\n              strokeDashoffset={\n                100 - (isIndeterminate || percentage == null ? 25 : percentage)\n              }\n              strokeLinecap=\"round\"\n            >\n              {isIndeterminate && (\n                <animateTransform\n                  attributeName=\"transform\"\n                  type=\"rotate\"\n                  dur=\"0.75s\"\n                  values=\"0;360\"\n                  repeatCount=\"indefinite\"\n                />\n              )}\n            </circle>\n          </svg>\n        </>\n      )}\n    </ProgressBarRAC>\n  );\n}\n","import React, { type ReactNode } from 'react';\nimport { Button as ButtonRAC } from 'react-aria-components';\n\nimport { useFieldPropsV2 } from '../../contexts/field-props-context';\nimport { findChildOfType } from '../../services/find-child';\nimport { type SubmitButtonFieldProps } from '../../types/field-props';\n\nimport { ProgressCircle } from './submit-button-loader';\n\nexport type SubmitButtonProps = {\n  children: ReactNode;\n};\n\nexport const SubmitButton = ({ children }: SubmitButtonProps) => {\n  const { id, FieldLayout } = useFieldPropsV2<SubmitButtonFieldProps>();\n\n  const buttonsContainerElement = findChildOfType(\n    children,\n    SubmitButton.SubmitButton,\n  );\n\n  return (\n    <FieldLayout\n      fieldId={id}\n      renderLabel={() => null}\n      renderInput={() => <>{buttonsContainerElement}</>}\n      renderDescription={() => null}\n    />\n  );\n};\n\ntype ButtonsContainerProps = {\n  className?: string;\n  children: ReactNode;\n};\n\nconst ButtonsContainer = ({ className, children }: ButtonsContainerProps) => {\n  const previousButtonElement = findChildOfType(children, PreviousButton);\n  const nextButtonElement = findChildOfType(children, NextButton);\n  const submitButtonElement = findChildOfType(children, SubmitButtonComponent);\n\n  return (\n    <div className={className}>\n      {previousButtonElement}\n      {nextButtonElement}\n      {submitButtonElement}\n    </div>\n  );\n};\n\ntype PreviousButtonProps = {\n  className?: string;\n};\n\nconst PreviousButton = ({ className }: PreviousButtonProps) => {\n  const { showPreviousButton, onPreviousClick, previousText } =\n    useFieldPropsV2<SubmitButtonFieldProps>();\n\n  if (!showPreviousButton) {\n    return null;\n  }\n\n  return (\n    <ButtonRAC className={className} onPress={onPreviousClick}>\n      {previousText}\n    </ButtonRAC>\n  );\n};\n\ntype NextButtonProps = {\n  className?: string;\n};\n\nconst NextButton = ({ className }: NextButtonProps) => {\n  const { showNextButton, onNextClick, nextText } =\n    useFieldPropsV2<SubmitButtonFieldProps>();\n\n  if (!showNextButton) {\n    return null;\n  }\n\n  return (\n    <ButtonRAC className={className} onPress={onNextClick}>\n      {nextText}\n    </ButtonRAC>\n  );\n};\n\ntype SubmitButtonComponentProps = {\n  className?: string;\n  children?: ReactNode;\n};\n\nconst SubmitButtonComponent = ({\n  className,\n  children,\n}: SubmitButtonComponentProps) => {\n  const {\n    showSubmitButton,\n    onSubmitClick,\n    submitText,\n    isDisabled,\n    isInProgress,\n  } = useFieldPropsV2<SubmitButtonFieldProps>();\n\n  if (!showSubmitButton) {\n    return null;\n  }\n\n  const loaderElement = findChildOfType(children, SubmitButtonComponent.Loader);\n\n  return (\n    <ButtonRAC\n      className={className}\n      onPress={onSubmitClick}\n      isDisabled={isDisabled || isInProgress}\n      data-in-progress={isInProgress}\n    >\n      {isInProgress && loaderElement ? loaderElement : submitText}\n    </ButtonRAC>\n  );\n};\n\ntype LoaderProps = {\n  className?: string;\n};\n\nconst Loader = ({ className }: LoaderProps) => {\n  return (\n    <span className={className}>\n      <ProgressCircle />\n    </span>\n  );\n};\n\nSubmitButtonComponent.Loader = Loader;\n\nButtonsContainer.PreviousButton = PreviousButton;\nButtonsContainer.NextButton = NextButton;\nButtonsContainer.SubmitButton = SubmitButtonComponent;\n\nSubmitButton.SubmitButton = ButtonsContainer;\n","export const OTHER_ID = 'Other';\n\nexport const getOtherValue = (value: string[], addOtherLabel?: string) => {\n  const addedSymbolsLength = 2; // we add ': ' to other value\n  const otherLabelLength = addOtherLabel\n    ? addOtherLabel.length + addedSymbolsLength\n    : 0;\n\n  const otherItem =\n    value.find((item) => item.startsWith(`${addOtherLabel}: `)) || '';\n  return otherItem.slice(otherLabelLength);\n};\n","import React, {\n  type ReactNode,\n  useCallback,\n  useMemo,\n  useState,\n  useRef,\n  useLayoutEffect,\n} from 'react';\nimport {\n  TagGroup as TagGroupRAC,\n  TagList as TagListRAC,\n  Tag as TagRAC,\n  TextField as TextFieldRAC,\n  Input as InputRAC,\n  type Selection,\n} from 'react-aria-components';\n\nimport { useFocusFieldEvent } from '../../contexts/events-context';\nimport { useFieldAttributes } from '../../contexts/field-attributes-context';\nimport { useFieldPropsV2 } from '../../contexts/field-props-context';\nimport { useTranslation } from '../../contexts/translation-context';\nimport { findChildOfType, applyInternalProps } from '../../services/find-child';\nimport { Description } from '../field-description/field-description-headless';\nimport { Error } from '../field-error/field-error-headless';\nimport { Label } from '../field-label/field-label-headless';\nimport { FieldsetHeadless } from '../fieldset/fieldset-headless';\n\nimport { type TagsFieldProps, type TagsFieldOptions } from './tags-field-props';\nimport { getOtherValue, OTHER_ID } from './tags-field-utils';\n\nexport type TagsProps = {\n  children: ReactNode;\n};\n\ntype OptionLabelProps = {\n  className?: string;\n};\n\ntype OptionInternalProps = {\n  value: string;\n  label: string;\n  isOther?: boolean;\n  isFirstOption?: boolean;\n};\n\nconst OptionLabel = ({ className, ...internal }: OptionLabelProps) => {\n  const { label } = internal as OptionInternalProps;\n  return <span className={className}>{label}</span>;\n};\n\ntype OtherInputProps = {\n  className?: string;\n};\n\nconst OtherInput = ({ className }: OtherInputProps) => {\n  const {\n    value: fieldValue,\n    onChange,\n    addOtherLabel,\n    addOtherPlaceholder,\n    otherInputCharacterLimit,\n  } = useFieldPropsV2<TagsFieldProps>();\n  const { t } = useTranslation();\n\n  const otherLabel =\n    addOtherLabel || t('add-other.default-other-option-label') || OTHER_ID;\n\n  const otherValue = useMemo(() => {\n    return getOtherValue(fieldValue || [], otherLabel);\n  }, [fieldValue, otherLabel]);\n\n  const [inputValue, setInputValue] = useState(otherValue);\n\n  const onChangeRef = useRef(onChange);\n\n  useLayoutEffect(() => {\n    onChangeRef.current = onChange;\n  });\n\n  const handleInputChange = useCallback(\n    (newValue: string) => {\n      setInputValue(newValue);\n\n      const regularOptions = (fieldValue || []).filter(\n        (val) => !val.startsWith(`${otherLabel}:`) && val !== otherLabel,\n      );\n\n      const formattedOtherValue = newValue\n        ? `${otherLabel}: ${newValue}`\n        : otherLabel;\n\n      onChangeRef.current([...regularOptions, formattedOtherValue]);\n    },\n    [fieldValue, otherLabel],\n  );\n\n  return (\n    <TextFieldRAC\n      value={inputValue}\n      onChange={handleInputChange}\n      aria-label={otherLabel}\n    >\n      <InputRAC\n        placeholder={addOtherPlaceholder}\n        maxLength={otherInputCharacterLimit}\n        className={className}\n      />\n    </TextFieldRAC>\n  );\n};\n\ntype OptionProps = {\n  children: ReactNode;\n  className?: string;\n};\n\nconst Option = ({ children, className, ...internal }: OptionProps) => {\n  const { value, label, isOther, isFirstOption } =\n    internal as OptionInternalProps;\n  const { id } = useFieldPropsV2<TagsFieldProps>();\n\n  const ref = useRef<HTMLDivElement>(null);\n  useFocusFieldEvent(() => {\n    if (isFirstOption) {\n      ref.current?.focus();\n    }\n  }, id);\n\n  const labelElement = findChildOfType(children, OptionLabel);\n\n  return (\n    <TagRAC ref={ref} id={value} textValue={label} className={className}>\n      {applyInternalProps<OptionInternalProps>(labelElement, {\n        value,\n        label,\n        isOther,\n        isFirstOption,\n      })}\n    </TagRAC>\n  );\n};\n\ntype OptionsProps = {\n  children: ReactNode;\n  className?: string;\n};\n\nconst Options = ({ children, className }: OptionsProps) => {\n  const { options, addOther, addOtherLabel } =\n    useFieldPropsV2<TagsFieldProps>();\n  const { ariaDescribedBy } = useFieldAttributes();\n  const { t } = useTranslation();\n\n  const otherLabel =\n    addOtherLabel || t('add-other.default-other-option-label') || OTHER_ID;\n\n  const optionElement = findChildOfType(children, Option);\n\n  const allOptions: (TagsFieldOptions & { isOther?: boolean })[] =\n    useMemo(() => {\n      const regularOptions = options || [];\n      if (addOther) {\n        return [\n          ...regularOptions,\n          {\n            label: otherLabel,\n            value: otherLabel,\n            isOther: true,\n          },\n        ];\n      }\n      return regularOptions;\n    }, [options, addOther, otherLabel]);\n\n  return (\n    <TagListRAC aria-describedby={ariaDescribedBy} className={className}>\n      {allOptions.map((option, index) => {\n        const optionValue = option.value ?? option.label;\n        return applyInternalProps<OptionInternalProps>(optionElement, {\n          key: optionValue,\n          value: optionValue,\n          label: option.label,\n          isOther: option.isOther,\n          isFirstOption: index === 0,\n        });\n      })}\n    </TagListRAC>\n  );\n};\n\ntype ControlProps = {\n  children: ReactNode;\n  className?: string;\n};\n\nconst Control = ({ children, className }: ControlProps) => {\n  const {\n    addOther,\n    addOtherLabel,\n    hasError,\n    value: fieldValue,\n  } = useFieldPropsV2<TagsFieldProps>();\n  const { t } = useTranslation();\n\n  const otherLabel =\n    addOtherLabel || t('add-other.default-other-option-label') || OTHER_ID;\n\n  const optionsElement = findChildOfType(children, Options);\n  const otherInputElement = findChildOfType(children, OtherInput);\n\n  const isOtherSelected = useMemo(() => {\n    if (!addOther || !fieldValue) {\n      return false;\n    }\n    return fieldValue.some(\n      (val) => val === otherLabel || val.startsWith(`${otherLabel}:`),\n    );\n  }, [addOther, fieldValue, otherLabel]);\n\n  return (\n    <div className={className} data-invalid={hasError}>\n      {optionsElement}\n      {isOtherSelected && otherInputElement}\n    </div>\n  );\n};\n\nexport const Tags = ({ children }: TagsProps) => {\n  const {\n    id,\n    value,\n    onChange,\n    addOtherLabel,\n    FieldLayout,\n    required,\n    onBlur,\n    onFocus,\n  } = useFieldPropsV2<TagsFieldProps>();\n  const { inputId, labelId, ariaDescribedBy } = useFieldAttributes();\n  const { t } = useTranslation();\n\n  const otherLabel =\n    addOtherLabel || t('add-other.default-other-option-label') || OTHER_ID;\n\n  const handleSelectionChange = useCallback(\n    (selection: Selection) => {\n      if (selection === 'all') {\n        return;\n      }\n      const selectedArray = Array.from(selection) as string[];\n\n      const hasOther = selectedArray.includes(otherLabel);\n\n      const regularValues = selectedArray.filter((v) => v !== otherLabel);\n\n      if (hasOther) {\n        const existingOtherValue = (value || []).find(\n          (val) => val === otherLabel || val.startsWith(`${otherLabel}:`),\n        );\n        onChange([...regularValues, existingOtherValue || otherLabel]);\n      } else {\n        onChange(regularValues);\n      }\n    },\n    [onChange, value, otherLabel],\n  );\n\n  const selectedKeys = useMemo(() => {\n    const normalizedValues = (value || []).map((val) => {\n      if (val === otherLabel || val.startsWith(`${otherLabel}:`)) {\n        return otherLabel;\n      }\n      return val;\n    });\n    return new Set(normalizedValues);\n  }, [value, otherLabel]);\n\n  const labelElement = findChildOfType(children, Label);\n  const controlElement = findChildOfType(children, Control);\n  const descriptionElement = findChildOfType(children, Description);\n  const errorElement = findChildOfType(children, Error);\n\n  return (\n    <FieldLayout\n      fieldId={id}\n      renderLabel={() => labelElement}\n      renderInput={() => (\n        <FieldsetHeadless\n          id={inputId}\n          ariaLabelledBy={labelId}\n          ariaDescribedBy={ariaDescribedBy}\n          required={required}\n          onBlur={onBlur}\n          onFocus={onFocus}\n        >\n          <TagGroupRAC\n            selectionMode=\"multiple\"\n            selectedKeys={selectedKeys}\n            onSelectionChange={handleSelectionChange}\n          >\n            {controlElement}\n          </TagGroupRAC>\n        </FieldsetHeadless>\n      )}\n      renderDescription={() => (\n        <>\n          {descriptionElement}\n          {errorElement}\n        </>\n      )}\n    />\n  );\n};\n\nOptions.Option = Option;\nOption.Label = OptionLabel;\n\nTags.Label = Label;\nTags.Control = Control;\nTags.Options = Options;\nTags.OtherInput = OtherInput;\nTags.Description = Description;\nTags.Error = Error;\n","import React, { type ReactNode, useCallback, useRef } from 'react';\nimport {\n  TextField as TextFieldRAC,\n  TextArea as TextAreaRAC,\n} from 'react-aria-components';\n\nimport { useFocusFieldEvent } from '../../contexts/events-context';\nimport { useFieldAttributes } from '../../contexts/field-attributes-context';\nimport { useFieldPropsV2 } from '../../contexts/field-props-context';\nimport { findChildOfType } from '../../services/find-child';\nimport { Description } from '../field-description/field-description-headless';\nimport { Error } from '../field-error/field-error-headless';\nimport { Label } from '../field-label/field-label-headless';\n\nimport { type TextAreaFieldProps } from './text-area-field-props';\n\nexport type TextAreaProps = {\n  children: ReactNode;\n};\n\nexport const TextArea = ({ children }: TextAreaProps) => {\n  const {\n    id,\n    value,\n    onChange,\n    disabled,\n    required,\n    onBlur,\n    onFocus,\n    FieldLayout,\n    hasError,\n  } = useFieldPropsV2<TextAreaFieldProps>();\n\n  const handleChange = useCallback(\n    (newValue: string) => {\n      onChange(newValue);\n    },\n    [onChange],\n  );\n\n  const labelElement = findChildOfType(children, TextArea.Label);\n  const inputElement = findChildOfType(children, TextArea.Input);\n  const descriptionElement = findChildOfType(children, TextArea.Description);\n  const errorElement = findChildOfType(children, TextArea.Error);\n\n  return (\n    <FieldLayout\n      fieldId={id}\n      renderLabel={() => labelElement}\n      renderInput={() => (\n        <TextFieldRAC\n          value={value ?? ''}\n          onChange={handleChange}\n          isDisabled={disabled}\n          isRequired={required}\n          isInvalid={hasError}\n          onBlur={onBlur}\n          onFocus={onFocus}\n        >\n          {inputElement}\n        </TextFieldRAC>\n      )}\n      renderDescription={() => (\n        <>\n          {descriptionElement}\n          {errorElement}\n        </>\n      )}\n    />\n  );\n};\n\ntype InputProps = {\n  className?: string;\n};\n\nconst Input = ({ className }: InputProps) => {\n  const { inputId, ariaDescribedBy } = useFieldAttributes();\n  const { id, placeholder } = useFieldPropsV2<TextAreaFieldProps>();\n\n  const ref = useRef<HTMLTextAreaElement>(null);\n  useFocusFieldEvent(() => {\n    ref.current?.focus();\n  }, id);\n\n  return (\n    <TextAreaRAC\n      ref={ref}\n      id={inputId}\n      aria-describedby={ariaDescribedBy}\n      placeholder={placeholder}\n      className={className}\n    />\n  );\n};\n\nTextArea.Label = Label;\nTextArea.Input = Input;\nTextArea.Description = Description;\nTextArea.Error = Error;\n","import React, { type ReactNode, useRef } from 'react';\nimport {\n  TextField as TextFieldRAC,\n  Input as InputRAC,\n} from 'react-aria-components';\n\nimport { useFocusFieldEvent } from '../../contexts/events-context';\nimport { useFieldAttributes } from '../../contexts/field-attributes-context';\nimport { useFieldPropsV2 } from '../../contexts/field-props-context';\nimport { findChildOfType } from '../../services/find-child';\nimport { Description } from '../field-description/field-description-headless';\nimport { Error } from '../field-error/field-error-headless';\nimport { Label } from '../field-label/field-label-headless';\n\nimport { type TextInputFieldProps } from './text-input-field-props';\n\nexport type TextInputProps = {\n  children: ReactNode;\n};\n\nconst TextInput = ({ children }: TextInputProps) => {\n  const {\n    id,\n    value,\n    onChange,\n    disabled,\n    required,\n    hasError,\n    onBlur,\n    onFocus,\n    FieldLayout,\n  } = useFieldPropsV2<TextInputFieldProps>();\n\n  const labelElement = findChildOfType(children, TextInput.Label);\n  const inputElement = findChildOfType(children, TextInput.Input);\n  const descriptionElement = findChildOfType(children, TextInput.Description);\n  const errorElement = findChildOfType(children, TextInput.Error);\n\n  return (\n    <FieldLayout\n      fieldId={id}\n      renderLabel={() => labelElement}\n      renderInput={() => (\n        <TextFieldRAC\n          value={value ?? ''}\n          onChange={onChange}\n          isDisabled={disabled}\n          isRequired={required}\n          isInvalid={hasError}\n          onBlur={onBlur}\n          onFocus={onFocus}\n        >\n          {inputElement}\n        </TextFieldRAC>\n      )}\n      renderDescription={() => (\n        <>\n          {descriptionElement}\n          {errorElement}\n        </>\n      )}\n    />\n  );\n};\n\ntype InputProps = {\n  className?: string;\n};\n\nconst Input = ({ className }: InputProps) => {\n  const { id, placeholder } = useFieldPropsV2<TextInputFieldProps>();\n  const { inputId, ariaDescribedBy } = useFieldAttributes();\n\n  const inputRef = useRef<HTMLInputElement>(null);\n\n  useFocusFieldEvent(() => {\n    inputRef.current?.focus();\n  }, id);\n\n  return (\n    <InputRAC\n      ref={inputRef}\n      id={inputId}\n      aria-describedby={ariaDescribedBy}\n      className={className}\n      placeholder={placeholder}\n    />\n  );\n};\n\nTextInput.Label = Label;\nTextInput.Input = Input;\nTextInput.Description = Description;\nTextInput.Error = Error;\n\nexport { TextInput };\n","import { type Time as TimeValue, parseTime } from '@internationalized/date';\nimport React, { type ReactNode, useCallback, useRef } from 'react';\nimport {\n  TimeField as TimeFieldRAC,\n  DateInput as DateInputRAC,\n  DateSegment as DateSegmentRAC,\n  type DateSegmentProps,\n} from 'react-aria-components';\n\nimport { useFocusFieldEvent } from '../../contexts/events-context';\nimport { useFieldAttributes } from '../../contexts/field-attributes-context';\nimport { useFieldPropsV2 } from '../../contexts/field-props-context';\nimport { useTranslation } from '../../contexts/translation-context';\nimport { findChildOfType, applyInternalProps } from '../../services/find-child';\nimport { Description } from '../field-description/field-description-headless';\nimport { Error } from '../field-error/field-error-headless';\nimport { Label } from '../field-label/field-label-headless';\n\nimport { type TimeInputFieldProps } from './time-input-field-props';\n\ntype DateSegment = DateSegmentProps['segment'];\n\ntype TimeInputProps = {\n  children: ReactNode;\n};\n\nconst TimeInput = ({ children }: TimeInputProps) => {\n  const {\n    id,\n    value,\n    onChange,\n    disabled,\n    required,\n    onBlur,\n    onFocus,\n    use24HourFormat,\n    FieldLayout,\n    hasError,\n  } = useFieldPropsV2<TimeInputFieldProps>();\n  const { inputId, ariaDescribedBy } = useFieldAttributes();\n\n  const handleChange = useCallback(\n    (timeValue: TimeValue | null) => {\n      const stringValue = timeValueToString(timeValue);\n      onChange(stringValue);\n    },\n    [onChange],\n  );\n\n  const labelElement = findChildOfType(children, TimeInput.Label);\n  const timeElement = findChildOfType(children, TimeInput.Time);\n  const descriptionElement = findChildOfType(children, TimeInput.Description);\n  const errorElement = findChildOfType(children, TimeInput.Error);\n\n  const timeValue = stringToTimeValue(value);\n\n  return (\n    <FieldLayout\n      fieldId={id}\n      renderLabel={() => labelElement}\n      renderInput={() => (\n        <TimeFieldRAC\n          id={inputId}\n          aria-describedby={ariaDescribedBy}\n          value={timeValue}\n          onChange={handleChange}\n          isDisabled={disabled}\n          isInvalid={hasError}\n          isRequired={required}\n          onBlur={onBlur}\n          onFocus={onFocus}\n          hourCycle={use24HourFormat ? 24 : 12}\n        >\n          {timeElement}\n        </TimeFieldRAC>\n      )}\n      renderDescription={() => (\n        <>\n          {descriptionElement}\n          {errorElement}\n        </>\n      )}\n    />\n  );\n};\n\ntype TimeProps = {\n  children: ReactNode;\n  className?: string;\n};\n\nconst Time = ({ children, className }: TimeProps) => {\n  const { hasError } = useFieldPropsV2<TimeInputFieldProps>();\n\n  const hourElement = findChildOfType(children, Time.Hour);\n  const minuteElement = findChildOfType(children, Time.Minute);\n  const periodElement = findChildOfType(children, Time.Period);\n\n  return (\n    <DateInputRAC className={className} data-invalid={hasError}>\n      {(segment) => {\n        switch (segment.type) {\n          case 'hour':\n            return (\n              applyInternalProps<HourInternalProps>(hourElement, {\n                segment,\n              }) || <></>\n            );\n          case 'minute':\n            return (\n              applyInternalProps<MinuteInternalProps>(minuteElement, {\n                segment,\n              }) || <></>\n            );\n          case 'dayPeriod':\n            return (\n              applyInternalProps<PeriodInternalProps>(periodElement, {\n                segment,\n              }) || <></>\n            );\n          case 'literal':\n            return <DateSegmentRAC segment={segment} />;\n          default:\n            return <></>;\n        }\n      }}\n    </DateInputRAC>\n  );\n};\n\ntype HourProps = {\n  className?: string;\n};\n\ntype HourInternalProps = {\n  segment: DateSegment;\n};\n\nconst Hour = ({ className, ...internal }: HourProps) => {\n  const { id, hidePlaceholder } = useFieldPropsV2<TimeInputFieldProps>();\n  const { segment } = internal as HourInternalProps;\n  const { t } = useTranslation();\n  const ref = useRef<HTMLDivElement>(null);\n\n  useFocusFieldEvent(() => {\n    ref.current?.focus();\n  }, id);\n\n  const placeholder = hidePlaceholder\n    ? undefined\n    : t('field.date.placeholder.hour');\n\n  return (\n    <DateSegmentRAC\n      ref={ref}\n      segment={segment}\n      className={className}\n      {...(placeholder && { placeholder })}\n    />\n  );\n};\n\ntype MinuteProps = {\n  className?: string;\n};\n\ntype MinuteInternalProps = {\n  segment: DateSegment;\n};\n\nconst Minute = ({ className, ...internal }: MinuteProps) => {\n  const { hidePlaceholder } = useFieldPropsV2<TimeInputFieldProps>();\n  const { segment } = internal as MinuteInternalProps;\n  const { t } = useTranslation();\n\n  const placeholder = hidePlaceholder\n    ? undefined\n    : t('field.date.placeholder.minute');\n\n  return (\n    <DateSegmentRAC\n      segment={segment}\n      className={className}\n      {...(placeholder && { placeholder })}\n    />\n  );\n};\n\ntype PeriodProps = {\n  className?: string;\n};\n\ntype PeriodInternalProps = {\n  segment: DateSegment;\n};\n\nconst Period = ({ className, ...internal }: PeriodProps) => {\n  const { hidePlaceholder } = useFieldPropsV2<TimeInputFieldProps>();\n  const { segment } = internal as PeriodInternalProps;\n  const { t } = useTranslation();\n\n  const placeholder = hidePlaceholder\n    ? undefined\n    : t('field.date.placeholder.period');\n\n  return (\n    <DateSegmentRAC\n      segment={segment}\n      className={className}\n      {...(placeholder && { placeholder })}\n    />\n  );\n};\n\nTime.Hour = Hour;\nTime.Minute = Minute;\nTime.Period = Period;\n\nTimeInput.Label = Label;\nTimeInput.Time = Time;\nTimeInput.Description = Description;\nTimeInput.Error = Error;\n\nexport { TimeInput };\n\nfunction stringToTimeValue(value: string | null | undefined): TimeValue | null {\n  if (!value) {\n    return null;\n  }\n  try {\n    return parseTime(value);\n  } catch {\n    return null;\n  }\n}\n\nfunction timeValueToString(time: TimeValue | null): string | null {\n  if (!time) {\n    return null;\n  }\n  const hour = String(time.hour).padStart(2, '0');\n  const minute = String(time.minute).padStart(2, '0');\n  const second = String(time.second).padStart(2, '0');\n\n  return [hour, minute, second].join(':');\n}\n"]}